From 2ca80640268b3986fa64e4ce8339d4be0417c125 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Mon, 8 Jun 2026 08:47:00 +0200 Subject: [PATCH 1/6] Starting implement credentials manager --- admin/jsonConfig.json | 21 ++++++++++++++++----- io-package.json | 8 +++++++- src-editor/src/types.d.ts | 11 +++++++++++ src/types.d.ts | 6 ++++++ 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/admin/jsonConfig.json b/admin/jsonConfig.json index c2d23f454..9bf2546c6 100644 --- a/admin/jsonConfig.json +++ b/admin/jsonConfig.json @@ -144,6 +144,17 @@ "marginBottom": 16 } }, + "credentialType": { + "newLine": true, + "type": "select", + "options": [ + { "label": "System credentials", "value": "manager" }, + { "label": "Manual", "value": "manual" } + ], + "label": "Credentials type", + "hidden": "!data.useCredentials", + "default": "manual" + }, "gptKey": { "newLine": true, "type": "password", @@ -158,7 +169,7 @@ "label": "Test OpenAI", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDUuNTggMiAxMGMwIDIuMjQgMS4xMiA0LjI3IDIuOTMgNS43Mkw0IDIwbDQuMzUtMi4xOEM5LjUgMTguMjcgMTAuNzIgMTguNSAxMiAxOC41YzUuNTIgMCAxMC0zLjU4IDEwLThTMTcuNTIgMiAxMiAyem0tMSAxMUg4di0yaDNWOGgydjNoM3YyaC0zdjNoLTJ2LTN6Ii8+PC9zdmc+", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.gptKey}\", \"provider\": \"openai\"}", + "jsonData": "{\"apiKey\": \"${data.gptKey}\", \"provider\": \"openai\", \"credentialType\": \"${data.credentialType}\", \"credentialIdGptKey\": \"${data.credentialIdGptKey}\"}", "variant": "outlined", "disabled": "!data.gptKey", "xs": 12, @@ -179,7 +190,7 @@ "label": "Test Anthropic", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMiAyTDMgMjBoNGwxLjUtNGg3bDEuNSA0aDRMMTIgMnptMCA2bDIuNSA3aC01TDEyIDh6Ii8+PC9zdmc+", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.claudeKey}\", \"provider\": \"anthropic\"}", + "jsonData": "{\"apiKey\": \"${data.claudeKey}\", \"provider\": \"anthropic\", \"credentialType\": \"${data.credentialType}\", \"credentialIdClaudeKey\": \"${data.credentialIdClaudeKey}\"}", "variant": "outlined", "disabled": "!data.claudeKey", "xs": 12, @@ -200,7 +211,7 @@ "label": "Test Gemini", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMiAxbDMgN2g3bC01LjUgNC41TDE4LjUgMjAgMTIgMTUuNSA1LjUgMjBsMi03LjVMMiA4aDd6Ii8+PC9zdmc+", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.geminiKey}\", \"provider\": \"gemini\"}", + "jsonData": "{\"apiKey\": \"${data.geminiKey}\", \"provider\": \"gemini\", \"credentialType\": \"${data.credentialType}\", \"credentialIdGeminiKey\": \"${data.credentialIdGeminiKey}\"}", "variant": "outlined", "disabled": "!data.geminiKey", "xs": 12, @@ -221,7 +232,7 @@ "label": "Test DeepSeek", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMCAyYTggOCAwIDAgMSA2LjMyIDEyLjkxbDQuMzkgNC4zOC0xLjQyIDEuNDItNC4zOC00LjM5QTggOCAwIDEgMSAxMCAyem0wIDJhNiA2IDAgMSAwIDAgMTIgNiA2IDAgMCAwIDAtMTJ6Ii8+PC9zdmc+", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.deepseekKey}\", \"provider\": \"deepseek\"}", + "jsonData": "{\"apiKey\": \"${data.deepseekKey}\", \"provider\": \"deepseek\", \"credentialType\": \"${data.credentialType}\", \"credentialIdDeepseekKey\": \"${data.credentialIdDeepseekKey}\"}", "variant": "outlined", "disabled": "!data.deepseekKey", "xs": 12, @@ -250,7 +261,7 @@ "label": "Test Custom API", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik00IDFoMTZ2NUg0VjF6bTEgMXYzaDE0VjJINXptLTEgNmgxNnY1SDRWOHptMSAxdjNoMTRWOUg1em0tMSA2aDE2djVINHYtNXptMSAxdjNoMTR2LTNINXptMi0xMmgydjFIN1Yzem0wIDZoMnYxSDdWOXptMCA2aDJ2MUg3di0xeiIvPjwvc3ZnPg==", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.gptBaseUrlKey}\", \"baseUrl\": \"${data.gptBaseUrl}\", \"provider\": \"openai\"}", + "jsonData": "{\"apiKey\": \"${data.gptBaseUrlKey}\", \"baseUrl\": \"${data.gptBaseUrl}\", \"provider\": \"openai\", \"credentialType\": \"${data.credentialType}\", \"credentialIdGptBaseUrlKey\": \"${data.credentialIdGptBaseUrlKey}\"}", "variant": "outlined", "disabled": "!data.gptBaseUrl", "xs": 12, diff --git a/io-package.json b/io-package.json index 273f7fad7..cdb3744c6 100644 --- a/io-package.json +++ b/io-package.json @@ -548,7 +548,13 @@ "gptBaseUrlKey": "", "claudeKey": "", "geminiKey": "", - "deepseekKey": "" + "deepseekKey": "", + "credentialType": "manual", + "credentialIdGptKey": "", + "credentialIdClaudeKey": "", + "credentialIdGeminiKey": "", + "credentialIdDeepseekKey": "", + "credentialIdGptBaseUrlKey": "" }, "encryptedNative": [ "gptKey", diff --git a/src-editor/src/types.d.ts b/src-editor/src/types.d.ts index cb034ec01..f07f96a32 100644 --- a/src-editor/src/types.d.ts +++ b/src-editor/src/types.d.ts @@ -27,7 +27,18 @@ export interface JavaScriptAdapterConfig { maxSetStatePerMinute: number; maxTriggersPerScript: number; gptKey: string; + claudeKey: string; + geminiKey: string; + deepseekKey: string; + gptBaseUrlKey: string; + gptBaseUrl: string; password?: string; + credentialType?: 'manual' | 'manager'; + credentialIdGptKey?: string; + credentialIdClaudeKey?: string; + credentialIdGeminiKey?: string; + credentialIdDeepseekKey?: string; + credentialIdGptBaseUrlKey?: string; } export type LogMessage = { diff --git a/src/types.d.ts b/src/types.d.ts index c1ff150bb..1d07ca0a4 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -40,6 +40,12 @@ export interface JavaScriptAdapterConfig { geminiKey: string; deepseekKey: string; password?: string; + credentialType?: 'manual' | 'manager'; + credentialIdGptKey?: string; + credentialIdClaudeKey?: string; + credentialIdGeminiKey?: string; + credentialIdDeepseekKey?: string; + credentialIdGptBaseUrlKey?: string; } export type CommonAlias = { From 71cc806d62874815bde9b78c8e55f0916a657a31 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Thu, 11 Jun 2026 10:50:23 +0200 Subject: [PATCH 2/6] Implemented the support for credentials manager in the configuration --- README.md | 1 + ...el-Bmw5Sa1m.js => AiChatPanel-CrAsP3TB.js} | 2 +- ...r-CjeuM3xH.js => ScriptEditor-1ecFtrbs.js} | 2 +- ... => ScriptEditorVanillaMonaco-CxOCXiVn.js} | 4 +- .../{index-D1O5qjDd.js => index-B3VPMSlh.js} | 2 +- .../{index-AOxv_cZq.js => index-Be9Zg6aF.js} | 4 +- .../{index-Dxq5yPh9.js => index-Bs9TcrAn.js} | 2 +- .../{index-BDO4Fqdo.js => index-C4HfD5lY.js} | 6 +- ...9_.js => localSharedImportMap-Cs4ibnCv.js} | 2 +- ...XpQo.js => stateHoverProvider-D8nQSryI.js} | 2 +- ...er_javascript__remoteEntry_js-Dus28I2g.js} | 4 +- .../{index-CS_GBN2m.js => index-COK-bTGj.js} | 294 +- admin/custom/assets/index-DywM1y0D.js | 964 + .../{index-ChQotUCl.js => index-kuWacDNo.js} | 2 +- admin/custom/assets/index-qs6J40Tp.js | 964 - ...Nc.js => localSharedImportMap-B6r0yoWl.js} | 2 +- ...criptSet__customComponents_js-CocegHDZ.js} | 4 +- admin/custom/customComponents.js | 2 +- admin/i18n/de.json | 8 + admin/i18n/en.json | 8 + admin/jsonConfig.json | 72 +- admin/mf-manifest.json | 2 +- admin/remoteEntry.js | 2 +- admin/tab.html | 4 +- build/lib/aiProviderResolver.js | 37 +- build/lib/aiProviderResolver.js.map | 2 +- build/lib/sandbox.js.map | 2 +- build/main.js | 153 +- build/main.js.map | 2 +- build/types.d.ts | 6 + package-lock.json | 20341 ++++++++-------- package.json | 232 +- src-admin/.mf/diagnostics/latest.json | 6 +- src-admin/package-lock.json | 40 +- src-admin/package.json | 4 +- src-editor/package-lock.json | 159 +- src-editor/package.json | 4 +- src/lib/aiProviderResolver.ts | 49 +- src/main.ts | 189 +- test/testAiProviderResolver.js | 83 + 40 files changed, 11942 insertions(+), 11726 deletions(-) rename admin/assets/{AiChatPanel-Bmw5Sa1m.js => AiChatPanel-CrAsP3TB.js} (99%) rename admin/assets/{ScriptEditor-CjeuM3xH.js => ScriptEditor-1ecFtrbs.js} (91%) rename admin/assets/{ScriptEditorVanillaMonaco-D8HeI_JD.js => ScriptEditorVanillaMonaco-CxOCXiVn.js} (97%) rename admin/assets/{index-D1O5qjDd.js => index-B3VPMSlh.js} (99%) rename admin/assets/{index-AOxv_cZq.js => index-Be9Zg6aF.js} (94%) rename admin/assets/{index-Dxq5yPh9.js => index-Bs9TcrAn.js} (99%) rename admin/assets/{index-BDO4Fqdo.js => index-C4HfD5lY.js} (99%) rename admin/assets/{localSharedImportMap-W-vnZT9_.js => localSharedImportMap-Cs4ibnCv.js} (91%) rename admin/assets/{stateHoverProvider-B_NkXpQo.js => stateHoverProvider-D8nQSryI.js} (99%) rename admin/assets/{virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js => virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js} (99%) rename admin/custom/assets/{index-CS_GBN2m.js => index-COK-bTGj.js} (65%) create mode 100644 admin/custom/assets/index-DywM1y0D.js rename admin/custom/assets/{index-ChQotUCl.js => index-kuWacDNo.js} (95%) delete mode 100644 admin/custom/assets/index-qs6J40Tp.js rename admin/custom/assets/{localSharedImportMap-BeObsVNc.js => localSharedImportMap-B6r0yoWl.js} (93%) rename admin/custom/assets/{virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BcRVut8U.js => virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-CocegHDZ.js} (99%) diff --git a/README.md b/README.md index 0de631ae5..eb7ac4d3a 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Executes Javascript, Typescript Scripts. ### **WORK IN PROGRESS** * (arteck) Performance optimizations part 2 * (arteck) fix filter in tab scripts +* (@GermanBluefox) Implemented the support for credentials manager in the configuration ### 9.2.3 (2026-05-27) * (arteck) Performance optimizations done diff --git a/admin/assets/AiChatPanel-Bmw5Sa1m.js b/admin/assets/AiChatPanel-CrAsP3TB.js similarity index 99% rename from admin/assets/AiChatPanel-Bmw5Sa1m.js rename to admin/assets/AiChatPanel-CrAsP3TB.js index c2ab211a6..006be9c85 100644 --- a/admin/assets/AiChatPanel-Bmw5Sa1m.js +++ b/admin/assets/AiChatPanel-CrAsP3TB.js @@ -1,4 +1,4 @@ -import{c as Se,j as i}from"./createSvgIcon-DYs_tNrE.js";import{k as A,j as te,b as ne,c as xe,l as Ue}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{z as $,P as ve,o as we,a0 as ct,a1 as lt,i as We,J as dt,r as ut,s as mt,u as pt,a2 as Fe,c as ft,f as He,g as ze,a3 as Oe,a4 as Ve,a5 as ht}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as u}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{_ as Ze}from"./preload-helper-BDBacUwf.js";import{C as gt,b as yt,I as bt,R as xt}from"./index-45IwpC7_.js";import{i as vt,k as qe,l as wt,n as St}from"./index-BDO4Fqdo.js";import{g as kt,c as jt}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const et=Se(i.jsx("path",{d:"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8"}),"AddCircleOutline"),_t=Se(i.jsx("path",{d:"M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4zM17 11h-4v4h-2v-4H7V9h4V5h2v4h4z"}),"AddComment"),Ct=Se(i.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10h5v-2h-5c-4.34 0-8-3.66-8-8s3.66-8 8-8 8 3.66 8 8v1.43c0 .79-.71 1.57-1.5 1.57s-1.5-.78-1.5-1.57V12c0-2.76-2.24-5-5-5s-5 2.24-5 5 2.24 5 5 5c1.38 0 2.64-.56 3.54-1.47.65.89 1.77 1.47 2.96 1.47 1.97 0 3.5-1.6 3.5-3.57V12c0-5.52-4.48-10-10-10m0 13c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3"}),"AlternateEmail"),It=Se(i.jsx("path",{d:"M9.01 14H2v2h7.01v3L13 15l-3.99-4zm5.98-1v-3H22V8h-7.01V5L11 9z"}),"CompareArrows"),Tt=Se(i.jsx("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"Person"),Ot=Se(i.jsx("path",{d:"M3 10h11v2H3zm0-4h11v2H3zm0 8h7v2H3zm17.59-2.07-4.25 4.24-2.12-2.12-1.41 1.41L16.34 19 22 13.34z"}),"PlaylistAddCheck"),Et=Se(i.jsx("path",{d:"M2.01 21 23 12 2.01 3 2 10l15 2-15 2z"}),"Send"),Rt=Se(i.jsx("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3M7.5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S9.83 13 9 13s-1.5-.67-1.5-1.5M16 17H8v-2h8zm-1-4c-.83 0-1.5-.67-1.5-1.5S14.17 10 15 10s1.5.67 1.5 1.5S15.83 13 15 13"}),"SmartToy"),Nt=Ze(()=>import("./docs-compact-CKNGiYh2.js"),[],import.meta.url),$t={openai:"img/openai.svg",anthropic:"img/anthropic.svg",gemini:"img/gemini.svg",deepseek:"img/deepseek.svg",custom:"img/custom.svg"},Lt={width:16,height:16,flexShrink:0,opacity:.7},Mt={ru:"Russian",en:"English",de:"German",es:"Spanish",fr:"French",it:"Italian",pl:"Polish",nl:"Dutch",pt:"Portuguese",uk:"Ukrainian","zh-cn":"Chinese"};let $e=null,Ae=null,Le=null,Me=null;function Dt(){$e=null,Ae=null,Le=null,Me=null}async function De(r,e){if($e)return $e;const n=Object.keys(e)[0];if(!n)return null;const t=await r.sendTo(n,"getAvailableAiProviders",{}),o=((t==null?void 0:t.providers)||[]).map(d=>d.provider),s=((t==null?void 0:t.providers)||[]).find(d=>d.provider==="custom");return o.length?($e={providers:o,gptBaseUrl:s==null?void 0:s.baseUrl},$e):null}const Bt=["embedding","text-embedding","textembedding","embeddinggemma","embed-","-embed","bge-","mxbai-embed","nomic-embed","arctic-embed","snowflake-arctic-embed","all-minilm","multilingual-e5","jina-embed","voyage-","gecko","paraphrase-multilingual","dall-e","gpt-image","image-edit","-image-preview","-image-latest","flash-image","nano-banana","stable-diffusion","sdxl","midjourney","flux-","imagen","sora","veo-","cogvideo","runway-","lumiere","lyria","whisper","tts-","-tts","speech-","audio-preview","mini-tts","mini-transcribe","-transcribe","native-audio","flash-live","gpt-audio","realtime","bark-","xtts","voicebox","moderation","omni-moderation","llama-guard","shieldgemma","prompt-guard","-guardian","safeguard","rerank","reranker","babbage-","davinci-","curie-","text-ada-","text-davinci","text-curie","text-babbage","instructgpt","code-davinci","code-cushman","-turbo-instruct","-search-preview","-search-api","code-search","text-search","similarity-","computer-use-preview","deep-research","robotics","aqa","reader-lm","-nsql","minicheck"];function zt(r){const e=r.toLowerCase();return!(Bt.some(n=>e.includes(n))||e.startsWith("claude-1")||e.startsWith("claude-instant"))}async function Pt(r,e){const n=await De(r,e);if(!n)return{models:[],providerMap:{},errors:["No API keys configured"]};const t=Object.keys(e)[0];if(!t)return{models:[],providerMap:{},errors:[u.I18n.t("No running javascript instance found")]};const o=[],s={},d=[],m=(a,y)=>{for(const l of a)zt(l)&&(s[l]||(o.push(l),s[l]=y))},c=[],p=(a,y)=>{c.push(r.sendTo(t,"testApiConnection",{provider:a==="custom"?"openai":a}).then(l=>{l.models?m(l.models,a):l.error&&d.push(`${y||a}: ${l.error}`)}).catch(l=>{d.push(`${y||a}: ${String(l)}`)}))},g={openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",deepseek:"DeepSeek",custom:"Custom"};for(const a of n.providers)p(a,g[a]);return await Promise.all(c),o.sort(),{models:o,providerMap:s,errors:d}}async function Re(r,e,n){var o;return await r.sendTo(e,"chatCompletion",{timeout:n.timeout||6e5,model:n.model,provider:n.provider,messages:n.messages,...n.baseUrl?{baseUrl:n.baseUrl}:{},...(o=n.tools)!=null&&o.length?{tools:n.tools}:{}})}async function tt(r){if(Me)return Me;const e=await r.getObjectViewSystem("state","","香"),n=await r.getObjectViewSystem("channel","","香"),t=await r.getObjectViewSystem("device","","香"),o=await r.getObjectViewSystem("folder","","香"),s=await r.getObjectViewSystem("enum","","香");return Me=Object.assign(e,n,t,o,s),Me}async function nt(r){return tt(r)}function Ie(r,e){return r&&typeof r=="object"?r[e]||r.en:r||""}async function Ye(r){var S,b,v,H;if(Ae)return Ae;const e=u.I18n.getLanguage(),n=await tt(r),t=Object.keys(n).sort(),o=new gt,s=[],d=["UNREACH_STICKY"],m=[yt.Types.info],c=[],p=[],g=[],a=[];t.forEach(E=>{var I,x,w;((I=n[E])==null?void 0:I.type)==="enum"?c.push(E):(w=(x=n[E])==null?void 0:x.common)!=null&&w.smartName&&a.push(E)}),c.forEach(E=>{E.startsWith("enum.rooms.")?p.push(E):E.startsWith("enum.functions.")&&g.push(E);const I=n[E].common.members;I!=null&&I.length&&I.forEach(x=>{n[x]&&!a.includes(x)&&a.push(x)})});const y={id:"",objects:n,_keysOptional:t,_usedIdsOptional:s,ignoreIndicators:d,excludedTypes:m},l=[];a.forEach(E=>{y.id=E;const I=o.detect(y);I&&I.forEach(x=>{var de;const w=(de=x.states.find(T=>T.id))==null?void 0:de.id;if(!w||l.find(T=>T.id===w))return;const M=n[w],re={id:w,name:Ie(M.common.name,e),type:M.type,deviceType:x.type,states:x.states.filter(T=>T.id).map(T=>({id:T.id,name:T.name,role:T.defaultRole,type:n[T.id].common.type,unit:n[T.id].common.unit,read:n[T.id].common.read??!0,write:n[T.id].common.write??!0}))},Y=w.split(".");let _,G;(M.type==="channel"||M.type==="state")&&(Y.pop(),_=Y.join("."),n[_]&&(n[_].type==="channel"||n[_].type==="folder")?(Y.pop(),G=Y.join("."),(!n[G]||n[G].type!=="device"&&n[_].type!=="folder")&&(G=void 0)):_=void 0);const le=p.find(T=>{var U,X,Q;return(U=n[T].common.members)!=null&&U.includes(w)||_&&((X=n[T].common.members)!=null&&X.includes(_))?!0:G&&((Q=n[T].common.members)==null?void 0:Q.includes(G))});le&&(re.room=Ie(n[le].common.name,e));const K=g.find(T=>{var U,X,Q;return(U=n[T].common.members)!=null&&U.includes(w)||_&&((X=n[T].common.members)!=null&&X.includes(_))?!0:G&&((Q=n[T].common.members)==null?void 0:Q.includes(G))});K&&(re.function=Ie(n[K].common.name,e)),l.push(re)})});for(let E=0;Eimport("./docs-compact-CKNGiYh2.js"),[],import.meta.url),$t={openai:"img/openai.svg",anthropic:"img/anthropic.svg",gemini:"img/gemini.svg",deepseek:"img/deepseek.svg",custom:"img/custom.svg"},Lt={width:16,height:16,flexShrink:0,opacity:.7},Mt={ru:"Russian",en:"English",de:"German",es:"Spanish",fr:"French",it:"Italian",pl:"Polish",nl:"Dutch",pt:"Portuguese",uk:"Ukrainian","zh-cn":"Chinese"};let $e=null,Ae=null,Le=null,Me=null;function Dt(){$e=null,Ae=null,Le=null,Me=null}async function De(r,e){if($e)return $e;const n=Object.keys(e)[0];if(!n)return null;const t=await r.sendTo(n,"getAvailableAiProviders",{}),o=((t==null?void 0:t.providers)||[]).map(d=>d.provider),s=((t==null?void 0:t.providers)||[]).find(d=>d.provider==="custom");return o.length?($e={providers:o,gptBaseUrl:s==null?void 0:s.baseUrl},$e):null}const Bt=["embedding","text-embedding","textembedding","embeddinggemma","embed-","-embed","bge-","mxbai-embed","nomic-embed","arctic-embed","snowflake-arctic-embed","all-minilm","multilingual-e5","jina-embed","voyage-","gecko","paraphrase-multilingual","dall-e","gpt-image","image-edit","-image-preview","-image-latest","flash-image","nano-banana","stable-diffusion","sdxl","midjourney","flux-","imagen","sora","veo-","cogvideo","runway-","lumiere","lyria","whisper","tts-","-tts","speech-","audio-preview","mini-tts","mini-transcribe","-transcribe","native-audio","flash-live","gpt-audio","realtime","bark-","xtts","voicebox","moderation","omni-moderation","llama-guard","shieldgemma","prompt-guard","-guardian","safeguard","rerank","reranker","babbage-","davinci-","curie-","text-ada-","text-davinci","text-curie","text-babbage","instructgpt","code-davinci","code-cushman","-turbo-instruct","-search-preview","-search-api","code-search","text-search","similarity-","computer-use-preview","deep-research","robotics","aqa","reader-lm","-nsql","minicheck"];function zt(r){const e=r.toLowerCase();return!(Bt.some(n=>e.includes(n))||e.startsWith("claude-1")||e.startsWith("claude-instant"))}async function Pt(r,e){const n=await De(r,e);if(!n)return{models:[],providerMap:{},errors:["No API keys configured"]};const t=Object.keys(e)[0];if(!t)return{models:[],providerMap:{},errors:[u.I18n.t("No running javascript instance found")]};const o=[],s={},d=[],m=(a,y)=>{for(const l of a)zt(l)&&(s[l]||(o.push(l),s[l]=y))},c=[],p=(a,y)=>{c.push(r.sendTo(t,"testApiConnection",{provider:a==="custom"?"openai":a}).then(l=>{l.models?m(l.models,a):l.error&&d.push(`${y||a}: ${l.error}`)}).catch(l=>{d.push(`${y||a}: ${String(l)}`)}))},g={openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",deepseek:"DeepSeek",custom:"Custom"};for(const a of n.providers)p(a,g[a]);return await Promise.all(c),o.sort(),{models:o,providerMap:s,errors:d}}async function Re(r,e,n){var o;return await r.sendTo(e,"chatCompletion",{timeout:n.timeout||6e5,model:n.model,provider:n.provider,messages:n.messages,...n.baseUrl?{baseUrl:n.baseUrl}:{},...(o=n.tools)!=null&&o.length?{tools:n.tools}:{}})}async function tt(r){if(Me)return Me;const e=await r.getObjectViewSystem("state","","香"),n=await r.getObjectViewSystem("channel","","香"),t=await r.getObjectViewSystem("device","","香"),o=await r.getObjectViewSystem("folder","","香"),s=await r.getObjectViewSystem("enum","","香");return Me=Object.assign(e,n,t,o,s),Me}async function nt(r){return tt(r)}function Ie(r,e){return r&&typeof r=="object"?r[e]||r.en:r||""}async function Ye(r){var S,b,v,H;if(Ae)return Ae;const e=u.I18n.getLanguage(),n=await tt(r),t=Object.keys(n).sort(),o=new gt,s=[],d=["UNREACH_STICKY"],m=[yt.Types.info],c=[],p=[],g=[],a=[];t.forEach(E=>{var I,x,w;((I=n[E])==null?void 0:I.type)==="enum"?c.push(E):(w=(x=n[E])==null?void 0:x.common)!=null&&w.smartName&&a.push(E)}),c.forEach(E=>{E.startsWith("enum.rooms.")?p.push(E):E.startsWith("enum.functions.")&&g.push(E);const I=n[E].common.members;I!=null&&I.length&&I.forEach(x=>{n[x]&&!a.includes(x)&&a.push(x)})});const y={id:"",objects:n,_keysOptional:t,_usedIdsOptional:s,ignoreIndicators:d,excludedTypes:m},l=[];a.forEach(E=>{y.id=E;const I=o.detect(y);I&&I.forEach(x=>{var de;const w=(de=x.states.find(T=>T.id))==null?void 0:de.id;if(!w||l.find(T=>T.id===w))return;const M=n[w],re={id:w,name:Ie(M.common.name,e),type:M.type,deviceType:x.type,states:x.states.filter(T=>T.id).map(T=>({id:T.id,name:T.name,role:T.defaultRole,type:n[T.id].common.type,unit:n[T.id].common.unit,read:n[T.id].common.read??!0,write:n[T.id].common.write??!0}))},Y=w.split(".");let _,G;(M.type==="channel"||M.type==="state")&&(Y.pop(),_=Y.join("."),n[_]&&(n[_].type==="channel"||n[_].type==="folder")?(Y.pop(),G=Y.join("."),(!n[G]||n[G].type!=="device"&&n[_].type!=="folder")&&(G=void 0)):_=void 0);const le=p.find(T=>{var U,X,Q;return(U=n[T].common.members)!=null&&U.includes(w)||_&&((X=n[T].common.members)!=null&&X.includes(_))?!0:G&&((Q=n[T].common.members)==null?void 0:Q.includes(G))});le&&(re.room=Ie(n[le].common.name,e));const K=g.find(T=>{var U,X,Q;return(U=n[T].common.members)!=null&&U.includes(w)||_&&((X=n[T].common.members)!=null&&X.includes(_))?!0:G&&((Q=n[T].common.members)==null?void 0:Q.includes(G))});K&&(re.function=Ie(n[K].common.name,e)),l.push(re)})});for(let E=0;E({color:r.palette.mode==="dark"?"white":"black",height:30,width:"100%",fontSize:16}),argsTitle:r=>({color:r.palette.mode==="dark"?"white":"black",fontWeight:"bold"})};class D extends n.Component{constructor(e){super(e),this.state={changed:!1,source:!e.source&&e.isReturn?` +import{j as t}from"./createSvgIcon-DYs_tNrE.js";import{a as n}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as l,a as c,b as h,z as a,h as d,i}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as o}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import p from"./ScriptEditorVanillaMonaco-CxOCXiVn.js";import{S as m}from"./Save-CkuNSiWL.js";import{a as g}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./preload-helper-BDBacUwf.js";import"./index-C4HfD5lY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const s={textArea:{width:"calc(100% - 10px)",resize:"none"},dialog:{height:"95%"},fullHeight:{height:"100%",overflow:"hidden"},args:r=>({color:r.palette.mode==="dark"?"white":"black",height:30,width:"100%",fontSize:16}),argsTitle:r=>({color:r.palette.mode==="dark"?"white":"black",fontWeight:"bold"})};class D extends n.Component{constructor(e){super(e),this.state={changed:!1,source:!e.source&&e.isReturn?` return false`:e.source}}componentDidMount(){setTimeout(()=>{var e;try{(e=window.document.getElementById("source-text-area"))==null||e.focus()}catch{}},100)}handleCancel(){this.props.onClose(!1)}handleOk(){(!this.props.isReturn||this.state.source.includes("return "))&&this.props.onClose(this.state.source)}onChange(e){this.setState({changed:!0,source:e})}render(){return t.jsxs(l,{onClose:()=>!1,maxWidth:"lg",sx:{"& .MuiDialog-paper":s.dialog},fullWidth:!0,open:!0,"aria-labelledby":"source-dialog-title",children:[t.jsx(c,{id:"source-dialog-title",children:o.I18n.t("Function editor")}),t.jsxs(h,{style:s.fullHeight,children:[this.props.args&&t.jsxs(a,{sx:s.args,children:[t.jsx(a,{component:"span",sx:s.argsTitle,children:o.I18n.t("function (")}),this.props.args,t.jsx(a,{component:"span",sx:s.argsTitle,children:")"})]},"arguments"),t.jsx(p,{triggerPrettier:1,adapterName:this.props.adapterName,runningInstances:this.props.runningInstances,style:{...s.textArea,height:this.props.args?"calc(100% - 30px)":"100%"},name:"blockly",socket:this.props.socket,readOnly:!1,checkJs:!1,changed:this.state.changed,code:this.state.source,isDark:this.props.themeType==="dark",onChange:e=>this.onChange(e),language:"javascript"},"scriptEditor")]}),t.jsxs(d,{children:[t.jsx(i,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:t.jsx(m,{}),children:o.I18n.t("Save")}),t.jsx(i,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:t.jsx(g,{}),children:o.I18n.t("Cancel")})]})]})}}export{D as default}; diff --git a/admin/assets/ScriptEditorVanillaMonaco-D8HeI_JD.js b/admin/assets/ScriptEditorVanillaMonaco-CxOCXiVn.js similarity index 97% rename from admin/assets/ScriptEditorVanillaMonaco-D8HeI_JD.js rename to admin/assets/ScriptEditorVanillaMonaco-CxOCXiVn.js index 1ee81dc46..92a703be6 100644 --- a/admin/assets/ScriptEditorVanillaMonaco-D8HeI_JD.js +++ b/admin/assets/ScriptEditorVanillaMonaco-CxOCXiVn.js @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./stateHoverProvider-B_NkXpQo.js","./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js","./index-BDO4Fqdo.js","./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js","./preload-helper-BDBacUwf.js","./createSvgIcon-DYs_tNrE.js","./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js","./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js","./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js","./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js","./index-wHNMOf-c.js","./inheritsLoose-CIXm_zPk.js","./index-BTsjunTt.css","./cronHoverProvider-Bg0Vz-1E.js","./inlineDiffController-DBLpPOe2.js","./applyCodeEdit-BdRnbz2g.js","./inlineChatWidget-Cu6rb4Ar.js"])))=>i.map(i=>d[i]); -import{_ as g}from"./preload-helper-BDBacUwf.js";import{j as m}from"./createSvgIcon-DYs_tNrE.js";import{a as k}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as T,a as N,b as M,h as A,i as S,Q as O,o as x,$ as j}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{n as _,Z as R}from"./index-wHNMOf-c.js";import{_ as p}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{h as V}from"./index-BDO4Fqdo.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";function K(v){return/^script\.js\.global\./.test(v)}let P=0;function W(v){const t=/\x1b\[[0-9;]*m/g;return v.replace(t,"")}class tt extends k.Component{monacoDiv=null;editor=null;monaco=window.monaco;get monacoTS(){var t,e;return(e=(t=this.monaco)==null?void 0:t.languages)==null?void 0:e.typescript}insert="";originalCode;runningInstancesStr;monacoCounter=0;location;breakpoints;lastSearch="";typings={};decorations=[];datapointProviderDisposable=null;inlineProviderDisposable=null;stateHoverDisposable=null;showStateValueDisposable=null;cronHoverDisposable=null;codeLensDisposable=null;inlineChatWidgetInstance=null;inlineDiffInstance=null;inlineDiffCssInjected=!1;triggerPrettier;contentChangeDisposable=null;mouseDownDisposable=null;constructor(t){super(t),this.state={name:"current",isDark:t.isDark||!1,language:t.language||"javascript",readOnly:t.readOnly||!1,alive:!0,check:!1,searchText:this.props.searchText||"",typingsLoaded:!1,showError:null},this.triggerPrettier=t.triggerPrettier,this.runningInstancesStr=JSON.stringify(this.props.runningInstances),this.originalCode=t.code||"",this.monacoDiv=k.createRef()}waitForMonaco(t){var i,o,n,r;let e=!!((o=(i=this.monacoTS)==null?void 0:i.typescriptDefaults)!=null&&o.getCompilerOptions);if(!e||!this.props.runningInstances){if(this.monaco=window.monaco,e=!!((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.getCompilerOptions),this.monacoCounter++,!e&&this.monacoCounter<20){console.log("wait for monaco loaded"),setTimeout(()=>this.waitForMonaco(t),200);return}this.monacoCounter>=20&&console.error("Cannot load monaco!")}else t&&t()}loadTypings(t){if(!this.editor)return;t||=this.props.runningInstances;const e=t&&Object.keys(t).find(i=>t==null?void 0:t[i]);e&&this.props.socket.sendTo(e.replace("system.adapter.",""),"loadTypings",null).then(i=>{this.setState({alive:!0,check:!0,typingsLoaded:!0}),this.setTypeCheck(!0),i.typings?(this.typings=i.typings,this.setEditorTypings(this.state.name)):console.error(`failed to load typings: ${i.error}`)})}componentDidMount(){var i,o,n,r,s,u,c,d;this.undo,this.redo,this.showInlineDiff,this.getEditorSelection,this.getEditorContent,this.getCursorPosition,this.highlightLineRange,this.goToLine,this.replaceSelection,this.getDiagnostics,this.getDocumentSymbols;let t=!!((o=(i=this.monacoTS)==null?void 0:i.typescriptDefaults)!=null&&o.getCompilerOptions);if((!t||!this.props.runningInstances)&&(this.monaco=window.monaco,t=!!((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.getCompilerOptions),!t)){console.log("wait for monaco loaded..."),this.waitForMonaco(()=>this.componentDidMount());return}if(!this.editor&&t&&this.monaco){console.log("Init editor"),(u=(s=this.props).onRegisterSelect)==null||u.call(s,()=>{var a;if(this.editor){const h=this.editor.getSelection();if(h)return(a=this.editor.getModel())==null?void 0:a.getValueInRange(h)}});const l=this.monacoTS.typescriptDefaults.getCompilerOptions();l.allowJs=!0,l.checkJs=this.props.checkJs!==!1,l.noLib=!0,l.lib=[],l.useUnknownInCatchVariables=!1,l.moduleResolution=this.monacoTS.ModuleResolutionKind.NodeJs,l.target=this.monacoTS.ScriptTarget.ESNext,l.module=this.monacoTS.ModuleKind.ESNext,l.allowNonTsExtensions=!0,this.monacoTS.typescriptDefaults.setCompilerOptions(l),this.setTypeCheck(!1),(c=this.monacoDiv)!=null&&c.current&&(this.editor=this.monaco.editor.create((d=this.monacoDiv)==null?void 0:d.current,{lineNumbers:"on",scrollBeyondLastLine:!1,automaticLayout:!0,glyphMargin:!!this.props.breakpoints,colorDecorators:!0,hover:{enabled:!0,delay:200,sticky:!0},fixedOverflowWidgets:!0}),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()),this.monaco&&!this.datapointProviderDisposable&&g(async()=>{const{registerDatapointProvider:a}=await import("./AiDatapointProvider-B0i3I5Fm.js");return{registerDatapointProvider:a}},[],import.meta.url).then(({registerDatapointProvider:a})=>{this.monaco&&(this.datapointProviderDisposable=a(this.monaco,this.props.socket))}).catch(()=>{}),this.monaco&&!this.stateHoverDisposable&&g(async()=>{const{registerStateHoverProvider:a,registerShowStateValueAction:h}=await import("./stateHoverProvider-B_NkXpQo.js");return{registerStateHoverProvider:a,registerShowStateValueAction:h}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url).then(({registerStateHoverProvider:a,registerShowStateValueAction:h})=>{this.monaco&&(this.stateHoverDisposable=a(this.monaco,this.props.socket)),this.monaco&&this.editor&&!this.showStateValueDisposable&&(this.showStateValueDisposable=h(this.editor,this.monaco,p.I18n.t("Show ioBroker state value")))}).catch(()=>{}),this.monaco&&!this.cronHoverDisposable&&g(async()=>{const{registerCronHoverProvider:a}=await import("./cronHoverProvider-Bg0Vz-1E.js");return{registerCronHoverProvider:a}},__vite__mapDeps([15,1]),import.meta.url).then(({registerCronHoverProvider:a})=>{this.monaco&&(this.cronHoverDisposable=a(this.monaco))}).catch(()=>{}),this.props.aiCompletionsEnabled&&this.monaco&&!this.inlineProviderDisposable&&g(async()=>{const{registerAiInlineProvider:a}=await import("./AiInlineProvider-DkgjVSFQ.js");return{registerAiInlineProvider:a}},[],import.meta.url).then(({registerAiInlineProvider:a})=>{this.monaco&&(this.inlineProviderDisposable=a(this.monaco,this.props.socket,this.props.runningInstances))}).catch(()=>{}),this.loadTypings(),this.props.onForceSave&&this.editor.addCommand(this.monaco.KeyMod.CtrlCmd|this.monaco.KeyCode.KeyS,()=>this.props.onForceSave&&this.props.onForceSave()),this.registerAiActions(),this.monaco&&this.editor&&this.props.onAiAction&&!this.codeLensDisposable&&g(async()=>{const{registerAiCodeLensProvider:a}=await import("./index-BDO4Fqdo.js").then(h=>h.p);return{registerAiCodeLensProvider:a}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,1,12,13,14]),import.meta.url).then(({registerAiCodeLensProvider:a})=>{this.monaco&&this.editor&&this.props.onAiAction&&(this.codeLensDisposable=a(this.monaco,this.editor,(h,y,f,b,D)=>{var L,w,I;const C=(L=this.editor)==null?void 0:L.getModel(),E=C?C.getLineMaxColumn(Math.min(D,C.getLineCount())):1;(I=(w=this.props).onAiAction)==null||I.call(w,{action:h,code:y,rangeLabel:f,range:{startLine:b,startColumn:1,endLine:D,endColumn:E},kind:"codelens"})}))}).catch(()=>{}),setTimeout(()=>{this.highlightText(this.state.searchText),this.location=this.props.location||void 0,this.breakpoints=this.props.breakpoints,this.showDecorators()}))}const e={selectOnLineNumbers:!0,scrollBeyondLastLine:!1,automaticLayout:!0,readOnly:this.state.readOnly,language:this.state.language,isDark:this.state.isDark};this.setEditorOptions(e),this.editor&&(this.editor.focus(),this.editor.setValue(this.originalCode),this.props.onToggleBreakpoint&&(this.mouseDownDisposable=this.editor.onMouseDown(l=>{var h;const a=l.target;this.props.onToggleBreakpoint&&((h=a.detail)==null?void 0:h.glyphMarginLeft)!==void 0&&a.position&&this.props.onToggleBreakpoint(a.position.lineNumber-1)})))}setEditorOptions(t){var e;t&&(t.language&&this.setEditorLanguage(t.language),this.editor&&(t.readOnly!==void 0&&this.editor.updateOptions({readOnly:t.readOnly}),t.lineWrap!==void 0&&this.editor.updateOptions({wordWrap:t.lineWrap?"on":"off"})),t.typeCheck!==void 0&&this.setTypeCheck(t.typeCheck),t.isDark!==void 0&&((e=this.monaco)==null||e.editor.setTheme(t.isDark?"vs-dark":"vs")))}componentWillUnmount(){var t,e,i,o,n,r,s,u,c,d,l;(t=this.contentChangeDisposable)==null||t.dispose(),this.contentChangeDisposable=null,(e=this.mouseDownDisposable)==null||e.dispose(),this.mouseDownDisposable=null,(i=this.datapointProviderDisposable)==null||i.dispose(),this.datapointProviderDisposable=null,g(async()=>{const{clearDatapointCache:a}=await import("./AiDatapointProvider-B0i3I5Fm.js");return{clearDatapointCache:a}},[],import.meta.url).then(({clearDatapointCache:a})=>a()).catch(()=>{}),(o=this.inlineProviderDisposable)==null||o.dispose(),this.inlineProviderDisposable=null,(n=this.stateHoverDisposable)==null||n.dispose(),this.stateHoverDisposable=null,(r=this.showStateValueDisposable)==null||r.dispose(),this.showStateValueDisposable=null,g(async()=>{const{clearStateHoverCache:a}=await import("./stateHoverProvider-B_NkXpQo.js");return{clearStateHoverCache:a}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url).then(({clearStateHoverCache:a})=>a()).catch(()=>{}),(s=this.cronHoverDisposable)==null||s.dispose(),this.cronHoverDisposable=null,(u=this.codeLensDisposable)==null||u.dispose(),this.codeLensDisposable=null,(c=this.inlineChatWidgetInstance)==null||c.dispose(),this.inlineChatWidgetInstance=null,this.hideInlineDiff(),this.editor&&((l=(d=this.props).onRegisterSelect)==null||l.call(d,null),this.editor.dispose(),this.editor=null)}async doPrettier(){var i,o,n,r;const t=this.props.runningInstances&&Object.keys(this.props.runningInstances).find(s=>{var u;return(u=this.props.runningInstances)==null?void 0:u[s]});if(!t){window.alert(p.I18n.t("No script adapter instance found to format the code"));return}const e=await this.props.socket.sendTo(t.replace("system.adapter.",""),"prettier",{code:(i=this.editor)==null?void 0:i.getValue(),type:this.state.language});e.error?this.setState({showError:{title:p.I18n.t("Error formatting code"),message:W(e.error)}}):e.code&&((o=this.editor)==null||o.setValue(e.code),(r=(n=this.props).onChange)==null||r.call(n,e.code),this.showDecorators())}setEditorLanguage(t){var i,o;if(!this.editor)return;const e=this.editor.getModel();if(e){const n=e.getValue(),r=e.uri.path,s=typeof r=="string"&&r.includes(".")?r.substring(0,r.lastIndexOf(".")):"index",u=t==="javascript"?"js":t==="typescript"?"ts":t;e.dispose();const c=t==="javascript"||t==="typescript"?"typescript":t,d=(i=this.monaco)==null?void 0:i.editor.createModel(n,c,this.monaco.Uri.from({scheme:window.location.protocol.replace(":",""),path:`${s}${P++}.${u}`}));d&&(this.editor.setModel(d),(o=this.contentChangeDisposable)==null||o.dispose(),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()))}}setTypeCheck(t){var i,o;const e={noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive};(i=this.monacoTS)==null||i.typescriptDefaults.setDiagnosticsOptions(e),(o=this.monacoTS)==null||o.javascriptDefaults.setDiagnosticsOptions({noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive})}setEditorTypings(t=""){var n,r,s,u;const e=K(t),i=`${t}.d.ts`,o=[];for(const c of Object.keys(this.typings))e&&(c==="global.d.ts"||c.startsWith("script.js.global")&&c!==i)||o.push({filePath:c,content:this.typings[c]});if((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.setExtraLibs)this.monacoTS.typescriptDefaults.setExtraLibs(o);else if((u=(s=this.monacoTS)==null?void 0:s.typescriptDefaults)!=null&&u.addExtraLib){const c=this.monacoTS.typescriptDefaults.getExtraLibs();o.forEach(d=>{!c[d.filePath]&&this.monaco&&this.monacoTS.typescriptDefaults.addExtraLib(d.content,d.filePath)})}}undo(){var t;(t=this.editor)==null||t.trigger("toolbar","undo",null)}redo(){var t;(t=this.editor)==null||t.trigger("toolbar","redo",null)}insertTextIntoEditor(t){if(!this.editor||!this.monaco)return;const e=this.editor.getSelection();if(e){const i=new this.monaco.Range(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);this.editor.executeEdits("",[{range:i,text:t,forceMoveMarkers:!0}])}this.editor.focus()}highlightText(t){var o;if(!this.editor||!this.monaco)return 0;const e=t?(o=this.editor.getModel())==null?void 0:o.findMatches(t,!0,!1,!1,null,!0):void 0;if(e!=null&&e.length)return e.forEach(n=>{var r;return(r=this.editor)==null?void 0:r.setSelection(n.range)}),this.editor.revealLine(e[0].range.startLineNumber),e.length;const i=this.editor.getPosition();if(i){const n=i.lineNumber,r=i.column;this.editor.setSelection(new this.monaco.Range(n,r,n,r))}return 0}showInlineDiff(t){if(!this.editor||!this.monaco)return;const e=this.editor,i=this.monaco;this.hideInlineDiff(),g(async()=>{const{InlineDiffController:o,INLINE_DIFF_CSS:n}=await import("./inlineDiffController-DBLpPOe2.js");return{InlineDiffController:o,INLINE_DIFF_CSS:n}},__vite__mapDeps([16,1,17]),import.meta.url).then(({InlineDiffController:o,INLINE_DIFF_CSS:n})=>{if(!this.inlineDiffCssInjected){const s=document.createElement("style");s.textContent=n,s.setAttribute("data-iob-aichat","inline-diff"),document.head.appendChild(s),this.inlineDiffCssInjected=!0}const r=new o(e,i,{range:t.range,originalText:t.originalText,modifiedText:t.modifiedText,onAccepted:()=>{var s;this.inlineDiffInstance=null,(s=t.onAccepted)==null||s.call(t)},onRejected:()=>{var s;this.inlineDiffInstance=null,(s=t.onRejected)==null||s.call(t)}});this.inlineDiffInstance=r,r.show()}).catch(()=>{})}hideInlineDiff(){if(this.inlineDiffInstance){try{this.inlineDiffInstance.dispose()}catch{}this.inlineDiffInstance=null}}showInlineChatWidget(){if(!this.editor||!this.monaco||!this.props.onInlineAsk)return;if(this.inlineChatWidgetInstance){this.inlineChatWidgetInstance.show();return}const t=this.editor,e=this.monaco,i=this.props.onInlineAsk,o=this.props.onAiAction;g(async()=>{const{InlineChatWidget:n}=await import("./inlineChatWidget-Cu6rb4Ar.js");return{InlineChatWidget:n}},__vite__mapDeps([18,1,17]),import.meta.url).then(({InlineChatWidget:n})=>{const r=new n(t,e,{onSubmit:async s=>i({question:s.question,selectedCode:s.selectedCode}),onEscalateToChat:s=>{o&&o({action:"ask",code:s.selectedCode,question:s.question,rangeLabel:s.range?`lines ${s.range.startLineNumber}-${s.range.endLineNumber}`:"whole file"})}});this.inlineChatWidgetInstance=r,r.show()}).catch(()=>{})}registerAiActions(){if(!this.editor||!this.monaco||!this.props.onAiAction)return;const t=this.monaco,e=(o,n={})=>{if(!this.editor||!this.props.onAiAction)return;const r=this.editor.getModel();if(!r)return;const s=this.editor.getSelection(),u=s&&!s.isEmpty();let c,d,l,a="selection";if(u)c=r.getValueInRange(s),d=s.startLineNumber===s.endLineNumber?`line ${s.startLineNumber}`:`lines ${s.startLineNumber}-${s.endLineNumber}`,l={startLine:s.startLineNumber,startColumn:s.startColumn,endLine:s.endLineNumber,endColumn:s.endColumn},a="selection";else{const h=this.editor.getPosition();let y=null;if(h)try{y=V(r.getValue(),h.lineNumber)}catch{}if(y){const f=y.startLine,b=y.endLine,D=r.getLineMaxColumn(b),C=new t.Range(f,1,b,D);c=r.getValueInRange(C),d=f===b?`line ${f}`:`lines ${f}-${b}`,l={startLine:f,startColumn:1,endLine:b,endColumn:D},a="codelens"}else c=r.getValue(),d="whole file",a="none"}this.props.onAiAction({action:o,code:c,rangeLabel:d,range:l,kind:a,...n})},i=[{id:"iobroker.ai.inline",label:`🤖 ${p.I18n.t("AI: Inline chat…")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyI],order:1,run:()=>{if(this.props.onInlineAsk)this.showInlineChatWidget();else{const o=window.prompt(p.I18n.t("Ask the AI about the selected code:"));o&&o.trim()&&e("ask",{question:o.trim()})}}},{id:"iobroker.ai.explain",label:`💡 ${p.I18n.t("AI: Explain")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyE],order:2,run:()=>e("explain")},{id:"iobroker.ai.refactor",label:`🔧 ${p.I18n.t("AI: Refactor")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyR],order:3,run:()=>e("refactor")},{id:"iobroker.ai.comment",label:`💬 ${p.I18n.t("AI: Add comments")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyC],order:4,run:()=>e("comment")},{id:"iobroker.ai.fix",label:`🛠️ ${p.I18n.t("AI: Fix problem")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyF],order:5,run:()=>{var n,r;let o;try{const s=(n=this.editor)==null?void 0:n.getModel(),u=(r=this.editor)==null?void 0:r.getPosition();if(s&&u){const d=t.editor.getModelMarkers({resource:s.uri}).find(l=>u.lineNumber>=l.startLineNumber&&u.lineNumber<=l.endLineNumber);d&&(o=d.message)}}catch{}e("fix",{diagnostic:o})}},{id:"iobroker.ai.tests",label:`✅ ${p.I18n.t("AI: Suggest tests")}`,order:6,run:()=>e("tests")}];for(const o of i)try{this.editor.addAction({id:o.id,label:o.label,contextMenuGroupId:"aichat",contextMenuOrder:o.order,keybindings:o.keybindings,run:()=>o.run()})}catch{}}getEditorSelection(){if(!this.editor)return null;const t=this.editor.getSelection();if(!t||t.isEmpty())return null;const e=this.editor.getModel();return e?{text:e.getValueInRange(t),range:{startLine:t.startLineNumber,startColumn:t.startColumn,endLine:t.endLineNumber,endColumn:t.endColumn}}:null}getEditorContent(){var t,e;return((e=(t=this.editor)==null?void 0:t.getModel())==null?void 0:e.getValue())??""}getCursorPosition(){var e;const t=(e=this.editor)==null?void 0:e.getPosition();return t?{line:t.lineNumber,column:t.column}:null}highlightLineRange(t,e){if(!this.editor||!this.monaco)return!1;const i=this.editor.getModel();if(!i)return!1;const o=i.getLineCount(),n=Math.max(1,Math.min(t,o)),r=Math.max(n,Math.min(e,o)),s=i.getLineMaxColumn(r);return this.editor.setSelection(new this.monaco.Range(n,1,r,s)),this.editor.revealLineInCenter(n),!0}goToLine(t,e=1){if(!this.editor||!this.monaco)return!1;const i=this.editor.getModel();if(!i)return!1;const o=i.getLineCount(),n=Math.max(1,Math.min(t,o));return this.editor.setPosition({lineNumber:n,column:e}),this.editor.revealLineInCenter(n),this.editor.focus(),!0}replaceSelection(t){if(!this.editor||!this.monaco)return!1;const e=this.editor.getSelection();if(!e)return!1;const i=new this.monaco.Range(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);return this.editor.executeEdits("",[{range:i,text:t,forceMoveMarkers:!0}]),this.editor.focus(),!0}getDiagnostics(){if(!this.editor||!this.monaco)return[];const t=this.editor.getModel();if(!t)return[];const e=this.monaco.editor.getModelMarkers({resource:t.uri}),i={8:"error",4:"warning",2:"info",1:"hint"};return e.map(o=>({line:o.startLineNumber,column:o.startColumn,endLine:o.endLineNumber,endColumn:o.endColumn,severity:i[o.severity]||"info",message:o.message,...o.source?{source:o.source}:{}}))}async getDocumentSymbols(){var i;if(!this.editor||!this.monaco)return[];const t=this.editor.getModel();if(!t)return[];const e=[];try{const o=this.monaco.languages,n=(i=o.getDocumentSymbolProviders)==null?void 0:i.call(o,t);if(n!=null&&n.length){const r={0:"file",1:"module",2:"namespace",3:"package",4:"class",5:"method",6:"property",7:"field",8:"constructor",9:"enum",10:"interface",11:"function",12:"variable",13:"constant",14:"string",15:"number",16:"boolean",17:"array",18:"object",19:"key",20:"null",21:"enum-member",22:"struct",23:"event",24:"operator",25:"type-parameter"};for(const s of n){const u={isCancellationRequested:!1},c=await s.provideDocumentSymbols(t,u);if(!c)continue;const d=l=>{var a;for(const h of l)e.push({name:h.name,kind:r[h.kind]||String(h.kind),line:h.range.startLineNumber,endLine:h.range.endLineNumber,...h.detail?{detail:h.detail}:{}}),(a=h.children)!=null&&a.length&&d(h.children)};if(d(c),e.length)break}}}catch{}if(e.length===0){const n=t.getValue().split(` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./stateHoverProvider-D8nQSryI.js","./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js","./index-C4HfD5lY.js","./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js","./preload-helper-BDBacUwf.js","./createSvgIcon-DYs_tNrE.js","./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js","./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js","./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js","./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js","./index-wHNMOf-c.js","./inheritsLoose-CIXm_zPk.js","./index-BTsjunTt.css","./cronHoverProvider-Bg0Vz-1E.js","./inlineDiffController-DBLpPOe2.js","./applyCodeEdit-BdRnbz2g.js","./inlineChatWidget-Cu6rb4Ar.js"])))=>i.map(i=>d[i]); +import{_ as g}from"./preload-helper-BDBacUwf.js";import{j as m}from"./createSvgIcon-DYs_tNrE.js";import{a as k}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as T,a as N,b as M,h as A,i as S,Q as O,o as x,$ as j}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{n as _,Z as R}from"./index-wHNMOf-c.js";import{_ as p}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{h as V}from"./index-C4HfD5lY.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";function K(v){return/^script\.js\.global\./.test(v)}let P=0;function W(v){const t=/\x1b\[[0-9;]*m/g;return v.replace(t,"")}class tt extends k.Component{monacoDiv=null;editor=null;monaco=window.monaco;get monacoTS(){var t,e;return(e=(t=this.monaco)==null?void 0:t.languages)==null?void 0:e.typescript}insert="";originalCode;runningInstancesStr;monacoCounter=0;location;breakpoints;lastSearch="";typings={};decorations=[];datapointProviderDisposable=null;inlineProviderDisposable=null;stateHoverDisposable=null;showStateValueDisposable=null;cronHoverDisposable=null;codeLensDisposable=null;inlineChatWidgetInstance=null;inlineDiffInstance=null;inlineDiffCssInjected=!1;triggerPrettier;contentChangeDisposable=null;mouseDownDisposable=null;constructor(t){super(t),this.state={name:"current",isDark:t.isDark||!1,language:t.language||"javascript",readOnly:t.readOnly||!1,alive:!0,check:!1,searchText:this.props.searchText||"",typingsLoaded:!1,showError:null},this.triggerPrettier=t.triggerPrettier,this.runningInstancesStr=JSON.stringify(this.props.runningInstances),this.originalCode=t.code||"",this.monacoDiv=k.createRef()}waitForMonaco(t){var i,o,n,r;let e=!!((o=(i=this.monacoTS)==null?void 0:i.typescriptDefaults)!=null&&o.getCompilerOptions);if(!e||!this.props.runningInstances){if(this.monaco=window.monaco,e=!!((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.getCompilerOptions),this.monacoCounter++,!e&&this.monacoCounter<20){console.log("wait for monaco loaded"),setTimeout(()=>this.waitForMonaco(t),200);return}this.monacoCounter>=20&&console.error("Cannot load monaco!")}else t&&t()}loadTypings(t){if(!this.editor)return;t||=this.props.runningInstances;const e=t&&Object.keys(t).find(i=>t==null?void 0:t[i]);e&&this.props.socket.sendTo(e.replace("system.adapter.",""),"loadTypings",null).then(i=>{this.setState({alive:!0,check:!0,typingsLoaded:!0}),this.setTypeCheck(!0),i.typings?(this.typings=i.typings,this.setEditorTypings(this.state.name)):console.error(`failed to load typings: ${i.error}`)})}componentDidMount(){var i,o,n,r,s,u,c,d;this.undo,this.redo,this.showInlineDiff,this.getEditorSelection,this.getEditorContent,this.getCursorPosition,this.highlightLineRange,this.goToLine,this.replaceSelection,this.getDiagnostics,this.getDocumentSymbols;let t=!!((o=(i=this.monacoTS)==null?void 0:i.typescriptDefaults)!=null&&o.getCompilerOptions);if((!t||!this.props.runningInstances)&&(this.monaco=window.monaco,t=!!((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.getCompilerOptions),!t)){console.log("wait for monaco loaded..."),this.waitForMonaco(()=>this.componentDidMount());return}if(!this.editor&&t&&this.monaco){console.log("Init editor"),(u=(s=this.props).onRegisterSelect)==null||u.call(s,()=>{var a;if(this.editor){const h=this.editor.getSelection();if(h)return(a=this.editor.getModel())==null?void 0:a.getValueInRange(h)}});const l=this.monacoTS.typescriptDefaults.getCompilerOptions();l.allowJs=!0,l.checkJs=this.props.checkJs!==!1,l.noLib=!0,l.lib=[],l.useUnknownInCatchVariables=!1,l.moduleResolution=this.monacoTS.ModuleResolutionKind.NodeJs,l.target=this.monacoTS.ScriptTarget.ESNext,l.module=this.monacoTS.ModuleKind.ESNext,l.allowNonTsExtensions=!0,this.monacoTS.typescriptDefaults.setCompilerOptions(l),this.setTypeCheck(!1),(c=this.monacoDiv)!=null&&c.current&&(this.editor=this.monaco.editor.create((d=this.monacoDiv)==null?void 0:d.current,{lineNumbers:"on",scrollBeyondLastLine:!1,automaticLayout:!0,glyphMargin:!!this.props.breakpoints,colorDecorators:!0,hover:{enabled:!0,delay:200,sticky:!0},fixedOverflowWidgets:!0}),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()),this.monaco&&!this.datapointProviderDisposable&&g(async()=>{const{registerDatapointProvider:a}=await import("./AiDatapointProvider-B0i3I5Fm.js");return{registerDatapointProvider:a}},[],import.meta.url).then(({registerDatapointProvider:a})=>{this.monaco&&(this.datapointProviderDisposable=a(this.monaco,this.props.socket))}).catch(()=>{}),this.monaco&&!this.stateHoverDisposable&&g(async()=>{const{registerStateHoverProvider:a,registerShowStateValueAction:h}=await import("./stateHoverProvider-D8nQSryI.js");return{registerStateHoverProvider:a,registerShowStateValueAction:h}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url).then(({registerStateHoverProvider:a,registerShowStateValueAction:h})=>{this.monaco&&(this.stateHoverDisposable=a(this.monaco,this.props.socket)),this.monaco&&this.editor&&!this.showStateValueDisposable&&(this.showStateValueDisposable=h(this.editor,this.monaco,p.I18n.t("Show ioBroker state value")))}).catch(()=>{}),this.monaco&&!this.cronHoverDisposable&&g(async()=>{const{registerCronHoverProvider:a}=await import("./cronHoverProvider-Bg0Vz-1E.js");return{registerCronHoverProvider:a}},__vite__mapDeps([15,1]),import.meta.url).then(({registerCronHoverProvider:a})=>{this.monaco&&(this.cronHoverDisposable=a(this.monaco))}).catch(()=>{}),this.props.aiCompletionsEnabled&&this.monaco&&!this.inlineProviderDisposable&&g(async()=>{const{registerAiInlineProvider:a}=await import("./AiInlineProvider-DkgjVSFQ.js");return{registerAiInlineProvider:a}},[],import.meta.url).then(({registerAiInlineProvider:a})=>{this.monaco&&(this.inlineProviderDisposable=a(this.monaco,this.props.socket,this.props.runningInstances))}).catch(()=>{}),this.loadTypings(),this.props.onForceSave&&this.editor.addCommand(this.monaco.KeyMod.CtrlCmd|this.monaco.KeyCode.KeyS,()=>this.props.onForceSave&&this.props.onForceSave()),this.registerAiActions(),this.monaco&&this.editor&&this.props.onAiAction&&!this.codeLensDisposable&&g(async()=>{const{registerAiCodeLensProvider:a}=await import("./index-C4HfD5lY.js").then(h=>h.p);return{registerAiCodeLensProvider:a}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,1,12,13,14]),import.meta.url).then(({registerAiCodeLensProvider:a})=>{this.monaco&&this.editor&&this.props.onAiAction&&(this.codeLensDisposable=a(this.monaco,this.editor,(h,y,f,b,D)=>{var L,w,I;const C=(L=this.editor)==null?void 0:L.getModel(),E=C?C.getLineMaxColumn(Math.min(D,C.getLineCount())):1;(I=(w=this.props).onAiAction)==null||I.call(w,{action:h,code:y,rangeLabel:f,range:{startLine:b,startColumn:1,endLine:D,endColumn:E},kind:"codelens"})}))}).catch(()=>{}),setTimeout(()=>{this.highlightText(this.state.searchText),this.location=this.props.location||void 0,this.breakpoints=this.props.breakpoints,this.showDecorators()}))}const e={selectOnLineNumbers:!0,scrollBeyondLastLine:!1,automaticLayout:!0,readOnly:this.state.readOnly,language:this.state.language,isDark:this.state.isDark};this.setEditorOptions(e),this.editor&&(this.editor.focus(),this.editor.setValue(this.originalCode),this.props.onToggleBreakpoint&&(this.mouseDownDisposable=this.editor.onMouseDown(l=>{var h;const a=l.target;this.props.onToggleBreakpoint&&((h=a.detail)==null?void 0:h.glyphMarginLeft)!==void 0&&a.position&&this.props.onToggleBreakpoint(a.position.lineNumber-1)})))}setEditorOptions(t){var e;t&&(t.language&&this.setEditorLanguage(t.language),this.editor&&(t.readOnly!==void 0&&this.editor.updateOptions({readOnly:t.readOnly}),t.lineWrap!==void 0&&this.editor.updateOptions({wordWrap:t.lineWrap?"on":"off"})),t.typeCheck!==void 0&&this.setTypeCheck(t.typeCheck),t.isDark!==void 0&&((e=this.monaco)==null||e.editor.setTheme(t.isDark?"vs-dark":"vs")))}componentWillUnmount(){var t,e,i,o,n,r,s,u,c,d,l;(t=this.contentChangeDisposable)==null||t.dispose(),this.contentChangeDisposable=null,(e=this.mouseDownDisposable)==null||e.dispose(),this.mouseDownDisposable=null,(i=this.datapointProviderDisposable)==null||i.dispose(),this.datapointProviderDisposable=null,g(async()=>{const{clearDatapointCache:a}=await import("./AiDatapointProvider-B0i3I5Fm.js");return{clearDatapointCache:a}},[],import.meta.url).then(({clearDatapointCache:a})=>a()).catch(()=>{}),(o=this.inlineProviderDisposable)==null||o.dispose(),this.inlineProviderDisposable=null,(n=this.stateHoverDisposable)==null||n.dispose(),this.stateHoverDisposable=null,(r=this.showStateValueDisposable)==null||r.dispose(),this.showStateValueDisposable=null,g(async()=>{const{clearStateHoverCache:a}=await import("./stateHoverProvider-D8nQSryI.js");return{clearStateHoverCache:a}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url).then(({clearStateHoverCache:a})=>a()).catch(()=>{}),(s=this.cronHoverDisposable)==null||s.dispose(),this.cronHoverDisposable=null,(u=this.codeLensDisposable)==null||u.dispose(),this.codeLensDisposable=null,(c=this.inlineChatWidgetInstance)==null||c.dispose(),this.inlineChatWidgetInstance=null,this.hideInlineDiff(),this.editor&&((l=(d=this.props).onRegisterSelect)==null||l.call(d,null),this.editor.dispose(),this.editor=null)}async doPrettier(){var i,o,n,r;const t=this.props.runningInstances&&Object.keys(this.props.runningInstances).find(s=>{var u;return(u=this.props.runningInstances)==null?void 0:u[s]});if(!t){window.alert(p.I18n.t("No script adapter instance found to format the code"));return}const e=await this.props.socket.sendTo(t.replace("system.adapter.",""),"prettier",{code:(i=this.editor)==null?void 0:i.getValue(),type:this.state.language});e.error?this.setState({showError:{title:p.I18n.t("Error formatting code"),message:W(e.error)}}):e.code&&((o=this.editor)==null||o.setValue(e.code),(r=(n=this.props).onChange)==null||r.call(n,e.code),this.showDecorators())}setEditorLanguage(t){var i,o;if(!this.editor)return;const e=this.editor.getModel();if(e){const n=e.getValue(),r=e.uri.path,s=typeof r=="string"&&r.includes(".")?r.substring(0,r.lastIndexOf(".")):"index",u=t==="javascript"?"js":t==="typescript"?"ts":t;e.dispose();const c=t==="javascript"||t==="typescript"?"typescript":t,d=(i=this.monaco)==null?void 0:i.editor.createModel(n,c,this.monaco.Uri.from({scheme:window.location.protocol.replace(":",""),path:`${s}${P++}.${u}`}));d&&(this.editor.setModel(d),(o=this.contentChangeDisposable)==null||o.dispose(),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()))}}setTypeCheck(t){var i,o;const e={noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive};(i=this.monacoTS)==null||i.typescriptDefaults.setDiagnosticsOptions(e),(o=this.monacoTS)==null||o.javascriptDefaults.setDiagnosticsOptions({noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive})}setEditorTypings(t=""){var n,r,s,u;const e=K(t),i=`${t}.d.ts`,o=[];for(const c of Object.keys(this.typings))e&&(c==="global.d.ts"||c.startsWith("script.js.global")&&c!==i)||o.push({filePath:c,content:this.typings[c]});if((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.setExtraLibs)this.monacoTS.typescriptDefaults.setExtraLibs(o);else if((u=(s=this.monacoTS)==null?void 0:s.typescriptDefaults)!=null&&u.addExtraLib){const c=this.monacoTS.typescriptDefaults.getExtraLibs();o.forEach(d=>{!c[d.filePath]&&this.monaco&&this.monacoTS.typescriptDefaults.addExtraLib(d.content,d.filePath)})}}undo(){var t;(t=this.editor)==null||t.trigger("toolbar","undo",null)}redo(){var t;(t=this.editor)==null||t.trigger("toolbar","redo",null)}insertTextIntoEditor(t){if(!this.editor||!this.monaco)return;const e=this.editor.getSelection();if(e){const i=new this.monaco.Range(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);this.editor.executeEdits("",[{range:i,text:t,forceMoveMarkers:!0}])}this.editor.focus()}highlightText(t){var o;if(!this.editor||!this.monaco)return 0;const e=t?(o=this.editor.getModel())==null?void 0:o.findMatches(t,!0,!1,!1,null,!0):void 0;if(e!=null&&e.length)return e.forEach(n=>{var r;return(r=this.editor)==null?void 0:r.setSelection(n.range)}),this.editor.revealLine(e[0].range.startLineNumber),e.length;const i=this.editor.getPosition();if(i){const n=i.lineNumber,r=i.column;this.editor.setSelection(new this.monaco.Range(n,r,n,r))}return 0}showInlineDiff(t){if(!this.editor||!this.monaco)return;const e=this.editor,i=this.monaco;this.hideInlineDiff(),g(async()=>{const{InlineDiffController:o,INLINE_DIFF_CSS:n}=await import("./inlineDiffController-DBLpPOe2.js");return{InlineDiffController:o,INLINE_DIFF_CSS:n}},__vite__mapDeps([16,1,17]),import.meta.url).then(({InlineDiffController:o,INLINE_DIFF_CSS:n})=>{if(!this.inlineDiffCssInjected){const s=document.createElement("style");s.textContent=n,s.setAttribute("data-iob-aichat","inline-diff"),document.head.appendChild(s),this.inlineDiffCssInjected=!0}const r=new o(e,i,{range:t.range,originalText:t.originalText,modifiedText:t.modifiedText,onAccepted:()=>{var s;this.inlineDiffInstance=null,(s=t.onAccepted)==null||s.call(t)},onRejected:()=>{var s;this.inlineDiffInstance=null,(s=t.onRejected)==null||s.call(t)}});this.inlineDiffInstance=r,r.show()}).catch(()=>{})}hideInlineDiff(){if(this.inlineDiffInstance){try{this.inlineDiffInstance.dispose()}catch{}this.inlineDiffInstance=null}}showInlineChatWidget(){if(!this.editor||!this.monaco||!this.props.onInlineAsk)return;if(this.inlineChatWidgetInstance){this.inlineChatWidgetInstance.show();return}const t=this.editor,e=this.monaco,i=this.props.onInlineAsk,o=this.props.onAiAction;g(async()=>{const{InlineChatWidget:n}=await import("./inlineChatWidget-Cu6rb4Ar.js");return{InlineChatWidget:n}},__vite__mapDeps([18,1,17]),import.meta.url).then(({InlineChatWidget:n})=>{const r=new n(t,e,{onSubmit:async s=>i({question:s.question,selectedCode:s.selectedCode}),onEscalateToChat:s=>{o&&o({action:"ask",code:s.selectedCode,question:s.question,rangeLabel:s.range?`lines ${s.range.startLineNumber}-${s.range.endLineNumber}`:"whole file"})}});this.inlineChatWidgetInstance=r,r.show()}).catch(()=>{})}registerAiActions(){if(!this.editor||!this.monaco||!this.props.onAiAction)return;const t=this.monaco,e=(o,n={})=>{if(!this.editor||!this.props.onAiAction)return;const r=this.editor.getModel();if(!r)return;const s=this.editor.getSelection(),u=s&&!s.isEmpty();let c,d,l,a="selection";if(u)c=r.getValueInRange(s),d=s.startLineNumber===s.endLineNumber?`line ${s.startLineNumber}`:`lines ${s.startLineNumber}-${s.endLineNumber}`,l={startLine:s.startLineNumber,startColumn:s.startColumn,endLine:s.endLineNumber,endColumn:s.endColumn},a="selection";else{const h=this.editor.getPosition();let y=null;if(h)try{y=V(r.getValue(),h.lineNumber)}catch{}if(y){const f=y.startLine,b=y.endLine,D=r.getLineMaxColumn(b),C=new t.Range(f,1,b,D);c=r.getValueInRange(C),d=f===b?`line ${f}`:`lines ${f}-${b}`,l={startLine:f,startColumn:1,endLine:b,endColumn:D},a="codelens"}else c=r.getValue(),d="whole file",a="none"}this.props.onAiAction({action:o,code:c,rangeLabel:d,range:l,kind:a,...n})},i=[{id:"iobroker.ai.inline",label:`🤖 ${p.I18n.t("AI: Inline chat…")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyI],order:1,run:()=>{if(this.props.onInlineAsk)this.showInlineChatWidget();else{const o=window.prompt(p.I18n.t("Ask the AI about the selected code:"));o&&o.trim()&&e("ask",{question:o.trim()})}}},{id:"iobroker.ai.explain",label:`💡 ${p.I18n.t("AI: Explain")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyE],order:2,run:()=>e("explain")},{id:"iobroker.ai.refactor",label:`🔧 ${p.I18n.t("AI: Refactor")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyR],order:3,run:()=>e("refactor")},{id:"iobroker.ai.comment",label:`💬 ${p.I18n.t("AI: Add comments")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyC],order:4,run:()=>e("comment")},{id:"iobroker.ai.fix",label:`🛠️ ${p.I18n.t("AI: Fix problem")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyF],order:5,run:()=>{var n,r;let o;try{const s=(n=this.editor)==null?void 0:n.getModel(),u=(r=this.editor)==null?void 0:r.getPosition();if(s&&u){const d=t.editor.getModelMarkers({resource:s.uri}).find(l=>u.lineNumber>=l.startLineNumber&&u.lineNumber<=l.endLineNumber);d&&(o=d.message)}}catch{}e("fix",{diagnostic:o})}},{id:"iobroker.ai.tests",label:`✅ ${p.I18n.t("AI: Suggest tests")}`,order:6,run:()=>e("tests")}];for(const o of i)try{this.editor.addAction({id:o.id,label:o.label,contextMenuGroupId:"aichat",contextMenuOrder:o.order,keybindings:o.keybindings,run:()=>o.run()})}catch{}}getEditorSelection(){if(!this.editor)return null;const t=this.editor.getSelection();if(!t||t.isEmpty())return null;const e=this.editor.getModel();return e?{text:e.getValueInRange(t),range:{startLine:t.startLineNumber,startColumn:t.startColumn,endLine:t.endLineNumber,endColumn:t.endColumn}}:null}getEditorContent(){var t,e;return((e=(t=this.editor)==null?void 0:t.getModel())==null?void 0:e.getValue())??""}getCursorPosition(){var e;const t=(e=this.editor)==null?void 0:e.getPosition();return t?{line:t.lineNumber,column:t.column}:null}highlightLineRange(t,e){if(!this.editor||!this.monaco)return!1;const i=this.editor.getModel();if(!i)return!1;const o=i.getLineCount(),n=Math.max(1,Math.min(t,o)),r=Math.max(n,Math.min(e,o)),s=i.getLineMaxColumn(r);return this.editor.setSelection(new this.monaco.Range(n,1,r,s)),this.editor.revealLineInCenter(n),!0}goToLine(t,e=1){if(!this.editor||!this.monaco)return!1;const i=this.editor.getModel();if(!i)return!1;const o=i.getLineCount(),n=Math.max(1,Math.min(t,o));return this.editor.setPosition({lineNumber:n,column:e}),this.editor.revealLineInCenter(n),this.editor.focus(),!0}replaceSelection(t){if(!this.editor||!this.monaco)return!1;const e=this.editor.getSelection();if(!e)return!1;const i=new this.monaco.Range(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);return this.editor.executeEdits("",[{range:i,text:t,forceMoveMarkers:!0}]),this.editor.focus(),!0}getDiagnostics(){if(!this.editor||!this.monaco)return[];const t=this.editor.getModel();if(!t)return[];const e=this.monaco.editor.getModelMarkers({resource:t.uri}),i={8:"error",4:"warning",2:"info",1:"hint"};return e.map(o=>({line:o.startLineNumber,column:o.startColumn,endLine:o.endLineNumber,endColumn:o.endColumn,severity:i[o.severity]||"info",message:o.message,...o.source?{source:o.source}:{}}))}async getDocumentSymbols(){var i;if(!this.editor||!this.monaco)return[];const t=this.editor.getModel();if(!t)return[];const e=[];try{const o=this.monaco.languages,n=(i=o.getDocumentSymbolProviders)==null?void 0:i.call(o,t);if(n!=null&&n.length){const r={0:"file",1:"module",2:"namespace",3:"package",4:"class",5:"method",6:"property",7:"field",8:"constructor",9:"enum",10:"interface",11:"function",12:"variable",13:"constant",14:"string",15:"number",16:"boolean",17:"array",18:"object",19:"key",20:"null",21:"enum-member",22:"struct",23:"event",24:"operator",25:"type-parameter"};for(const s of n){const u={isCancellationRequested:!1},c=await s.provideDocumentSymbols(t,u);if(!c)continue;const d=l=>{var a;for(const h of l)e.push({name:h.name,kind:r[h.kind]||String(h.kind),line:h.range.startLineNumber,endLine:h.range.endLineNumber,...h.detail?{detail:h.detail}:{}}),(a=h.children)!=null&&a.length&&d(h.children)};if(d(c),e.length)break}}}catch{}if(e.length===0){const n=t.getValue().split(` `),r=[{re:/^(?:export\s+)?(?:async\s+)?function\s+(\w+)/,kind:"function"},{re:/^(?:export\s+)?class\s+(\w+)/,kind:"class"},{re:/^(?:export\s+)?(?:const|let|var)\s+(\w+)/,kind:"variable"}];for(let s=0;s{this.monaco&&t.push({range:new this.monaco.Range(i.location.lineNumber+1,0,i.location.lineNumber+1,100),options:{isWholeLine:!0,glyphMarginClassName:this.props.isDark?"monacoBreakPointDark":"monacoBreakPoint"}})}),this.editor){const i=this.editor.getModel();i&&(this.decorations=i.deltaDecorations(this.decorations,t))}}initNewScript(t,e){var i;this.setState({name:t}),this.originalCode=e||"",(i=this.editor)==null||i.setValue(e||""),this.highlightText(this.lastSearch),this.showDecorators(),this.setEditorTypings(t)}scrollToLineIfNeeded(t){if(this.editor){const e=this.editor.getVisibleRanges();(!e||!e[0]||e[0].startLineNumber>t||t>e[0].endLineNumber)&&this.editor.revealLineInCenter(t)}}UNSAFE_componentWillReceiveProps(t){const e={};this.state.name!==t.name&&this.initNewScript(t.name,t.code),JSON.stringify(t.runningInstances)!==this.runningInstancesStr&&(this.runningInstancesStr=JSON.stringify(t.runningInstances),this.state.typingsLoaded||this.loadTypings(t.runningInstances)),this.editor&&!t.changed&&(t.code!==this.originalCode||t.code!==this.editor.getValue())&&(this.originalCode=t.code||"",this.editor.setValue(this.originalCode),this.showDecorators(),this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)),t.searchText!==this.lastSearch&&(this.lastSearch=t.searchText||"",this.highlightText(this.lastSearch)),JSON.stringify(t.location)!==JSON.stringify(this.location)&&JSON.stringify(t.breakpoints)!==JSON.stringify(this.breakpoints)?(this.location=t.location||void 0,this.breakpoints=t.breakpoints,this.showDecorators(),this.editor&&this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)):JSON.stringify(t.breakpoints)!==JSON.stringify(this.breakpoints)?(this.breakpoints=t.breakpoints,this.showDecorators()):JSON.stringify(t.location)!==JSON.stringify(this.location)&&(this.location=t.location||void 0,this.showDecorators(),this.editor&&this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)),this.state.language!==(t.language||"javascript")?(this.setState({language:t.language||"javascript"}),e.language=t.language||"javascript"):this.state.readOnly!==(t.readOnly||!1)?(this.setState({readOnly:t.readOnly||!1}),e.readOnly=t.readOnly):this.state.isDark!==(t.isDark||!1)&&(this.setState({isDark:t.isDark||!1}),e.isDark=t.isDark),this.setEditorOptions(e),t.aiCompletionsEnabled!==this.props.aiCompletionsEnabled&&(t.aiCompletionsEnabled&&this.monaco&&!this.inlineProviderDisposable?g(async()=>{const{registerAiInlineProvider:i}=await import("./AiInlineProvider-DkgjVSFQ.js");return{registerAiInlineProvider:i}},[],import.meta.url).then(({registerAiInlineProvider:i})=>{this.monaco&&(this.inlineProviderDisposable=i(this.monaco,this.props.socket,this.props.runningInstances))}).catch(()=>{}):!t.aiCompletionsEnabled&&this.inlineProviderDisposable&&(this.inlineProviderDisposable.dispose(),this.inlineProviderDisposable=null)),this.insert!==t.insert&&(this.insert=t.insert||"",this.insert&&(console.log(`Insert text: ${this.insert}`),setTimeout(i=>{this.insertTextIntoEditor(i),setTimeout(()=>this.props.onInserted&&this.props.onInserted(),100)},100,this.insert)))}onChange(){var t,e;!this.props.readOnly&&this.editor&&((e=(t=this.props).onChange)==null||e.call(t,this.editor.getValue()))}renderErrorDialog(){return this.state.showError?this.state.showError.full?m.jsxs(T,{open:!0,maxWidth:"md",onClose:()=>this.setState({showError:null}),children:[m.jsx(N,{children:this.state.showError.title||p.I18n.t("Error")}),m.jsx(M,{children:m.jsx("pre",{children:m.jsx("code",{children:this.state.showError.message})})}),m.jsx(A,{children:m.jsxs(S,{variant:"contained",startIcon:m.jsx(_,{}),onClick:()=>this.setState({showError:null}),children:[p.I18n.t("Close")," "]})})]}):m.jsx(O,{open:!0,autoHideDuration:5e3,onClose:()=>this.setState({showError:null}),message:this.state.showError.title,action:m.jsxs(k.Fragment,{children:[m.jsx(S,{color:"secondary",size:"small",onClick:()=>this.setState({showError:{...this.state.showError,full:!0}}),children:p.I18n.t("More")}),m.jsx(x,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({showError:null}),children:m.jsx(_,{fontSize:"small"})})]})}):null}render(){var t;return!((t=this.monacoTS)!=null&&t.typescriptDefaults)||!this.props.runningInstances?(setTimeout(()=>{this.monaco=window.monaco,this.forceUpdate()},200),null):(this.props.triggerPrettier!==this.triggerPrettier&&(this.triggerPrettier=this.props.triggerPrettier,setTimeout(()=>this.doPrettier().catch(e=>console.error("Error formatting code:",e)),50)),m.jsxs("div",{ref:this.monacoDiv,style:{...this.props.style,width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:[this.renderErrorDialog(),!this.state.check&&m.jsx(j,{size:"small",title:p.I18n.t("Check is not active, because javascript adapter is disabled"),style:{bottom:10,right:10,opacity:.5,position:"absolute",zIndex:1,background:"red",color:"white"},color:"secondary",children:m.jsx(R,{})})]}))}}export{tt as default}; diff --git a/admin/assets/index-D1O5qjDd.js b/admin/assets/index-B3VPMSlh.js similarity index 99% rename from admin/assets/index-D1O5qjDd.js rename to admin/assets/index-B3VPMSlh.js index df62ac8cf..63b659e0f 100644 --- a/admin/assets/index-D1O5qjDd.js +++ b/admin/assets/index-B3VPMSlh.js @@ -1,4 +1,4 @@ -import{j as M}from"./createSvgIcon-DYs_tNrE.js";import{a as ft}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{m as Rt,z as Bt,g as Ut}from"./index-BDO4Fqdo.js";import{z as Xe,o as Te,v as Nt,w as Mt,s as Lt,u as Vt,r as zt,_ as Ht,a as Gt,C as Pt,D as _t,F as Yt,G as wt,H as Qt}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{M as Xt,k as Zt,l as ea,Q as Tt,U as ta,L as aa,n as ra,t as na,v as sa,u as oa,V as ia,W as la,X as ca,Y as ua}from"./index-wHNMOf-c.js";import{_ as we}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import pa from"./ScriptEditorVanillaMonaco-D8HeI_JD.js";import{r as fa}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function da(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js";import"./preload-helper-BDBacUwf.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const ba={editorDiv:{height:"100%",width:"100%",overflow:"hidden",position:"relative"}};class ha extends ft.Component{constructor(v){super(v),this.state={lines:(this.props.script||"").split(/\r\n|\n/)}}render(){return M.jsx("div",{style:ba.editorDiv,children:M.jsx(pa,{triggerPrettier:1,name:this.props.scriptName,adapterName:this.props.adapterName,readOnly:!0,code:this.props.script||"",isDark:this.props.themeType==="dark",socket:this.props.socket,runningInstances:this.props.runningInstances,language:"javascript",breakpoints:this.props.breakpoints,location:this.props.paused?this.props.location:null,onToggleBreakpoint:v=>this.props.onToggleBreakpoint(v)},"scriptEditor2")},"scriptEditorDiv2")}}const Dt=34,Ke={logBox:{width:"100%",height:"100%",position:"relative",overflow:"hidden"},logBoxInner:X=>({display:"inline-block",color:X.palette.mode==="dark"?"white":"black",width:`calc(100% - ${Dt}px)`,height:"100%",overflow:"auto",position:"relative",verticalAlign:"top"}),info:X=>({background:X.palette.mode==="dark"?"darkgrey":"lightgrey",color:(X.palette.mode==="dark","black")}),error:X=>({background:"#FF0000",color:X.palette.mode==="dark"?"black":"white"}),warn:X=>({background:"#FF8000",color:X.palette.mode==="dark"?"black":"white"}),debug:X=>({background:"gray",opacity:.8,color:X.palette.mode==="dark"?"black":"white"}),silly:X=>({background:"gray",opacity:.6,color:X.palette.mode==="dark"?"black":"white"}),table:{fontFamily:"monospace",width:"100%"},toolbox:{width:Dt,height:"100%",boxShadow:"2px 0px 4px -1px rgba(0, 0, 0, 0.2), 4px 0px 5px 0px rgba(0, 0, 0, 0.14), 1px 0px 10px 0px rgba(0, 0, 0, 0.12)",display:"inline-block",verticalAlign:"top",overflow:"hidden"},trTime:{width:90},trSeverity:{width:40,fontWeight:"bold"},iconButtons:{width:32,height:32,padding:4}};function ma(X){let v,g=X.getHours();return g<10&&(g=`0${g.toString()}`),v=`${g}:`,g=X.getMinutes(),g<10&&(g=`0${g.toString()}`),v+=`${g}:`,g=X.getSeconds(),g<10&&(g=`0${g.toString()}`),v+=`${g}.`,g=X.getMilliseconds(),g<10?g=`00${g.toString()}`:g<100&&(g=`0${g.toString()}`),v+=g,v}class Ct extends ft.Component{messagesEnd;constructor(v){super(v),this.state={goBottom:!0},this.messagesEnd=ft.createRef()}static generateLine(v){return M.jsxs(Xe,{component:"tr",sx:Ke[v.severity],children:[M.jsx("td",{style:Ke.trTime,children:ma(new Date(v.ts))}),M.jsx("td",{style:Ke.trSeverity,children:v.severity}),M.jsx("td",{children:v.text})]},`tr_${v.ts}_${v.text.substring(v.text.length-10,v.text.length)}`)}renderLogList(v){return v!=null&&v.length?M.jsxs(Xe,{sx:Ke.logBoxInner,children:[M.jsx("table",{style:Ke.table,children:M.jsx("tbody",{children:v.map(g=>Ct.generateLine(g))})},"logTable"),M.jsx("div",{ref:this.messagesEnd,style:{float:"left",clear:"both"}},"logScrollPoint")]},"logList"):M.jsx(Xe,{sx:Ke.logBoxInner,style:{paddingLeft:10},children:we.I18n.t("Log outputs")},"logList")}onCopy(){we.Utils.copyToClipboard(this.props.console.join(` +import{j as M}from"./createSvgIcon-DYs_tNrE.js";import{a as ft}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{m as Rt,z as Bt,g as Ut}from"./index-C4HfD5lY.js";import{z as Xe,o as Te,v as Nt,w as Mt,s as Lt,u as Vt,r as zt,_ as Ht,a as Gt,C as Pt,D as _t,F as Yt,G as wt,H as Qt}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{M as Xt,k as Zt,l as ea,Q as Tt,U as ta,L as aa,n as ra,t as na,v as sa,u as oa,V as ia,W as la,X as ca,Y as ua}from"./index-wHNMOf-c.js";import{_ as we}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import pa from"./ScriptEditorVanillaMonaco-CxOCXiVn.js";import{r as fa}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function da(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./preload-helper-BDBacUwf.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const ba={editorDiv:{height:"100%",width:"100%",overflow:"hidden",position:"relative"}};class ha extends ft.Component{constructor(v){super(v),this.state={lines:(this.props.script||"").split(/\r\n|\n/)}}render(){return M.jsx("div",{style:ba.editorDiv,children:M.jsx(pa,{triggerPrettier:1,name:this.props.scriptName,adapterName:this.props.adapterName,readOnly:!0,code:this.props.script||"",isDark:this.props.themeType==="dark",socket:this.props.socket,runningInstances:this.props.runningInstances,language:"javascript",breakpoints:this.props.breakpoints,location:this.props.paused?this.props.location:null,onToggleBreakpoint:v=>this.props.onToggleBreakpoint(v)},"scriptEditor2")},"scriptEditorDiv2")}}const Dt=34,Ke={logBox:{width:"100%",height:"100%",position:"relative",overflow:"hidden"},logBoxInner:X=>({display:"inline-block",color:X.palette.mode==="dark"?"white":"black",width:`calc(100% - ${Dt}px)`,height:"100%",overflow:"auto",position:"relative",verticalAlign:"top"}),info:X=>({background:X.palette.mode==="dark"?"darkgrey":"lightgrey",color:(X.palette.mode==="dark","black")}),error:X=>({background:"#FF0000",color:X.palette.mode==="dark"?"black":"white"}),warn:X=>({background:"#FF8000",color:X.palette.mode==="dark"?"black":"white"}),debug:X=>({background:"gray",opacity:.8,color:X.palette.mode==="dark"?"black":"white"}),silly:X=>({background:"gray",opacity:.6,color:X.palette.mode==="dark"?"black":"white"}),table:{fontFamily:"monospace",width:"100%"},toolbox:{width:Dt,height:"100%",boxShadow:"2px 0px 4px -1px rgba(0, 0, 0, 0.2), 4px 0px 5px 0px rgba(0, 0, 0, 0.14), 1px 0px 10px 0px rgba(0, 0, 0, 0.12)",display:"inline-block",verticalAlign:"top",overflow:"hidden"},trTime:{width:90},trSeverity:{width:40,fontWeight:"bold"},iconButtons:{width:32,height:32,padding:4}};function ma(X){let v,g=X.getHours();return g<10&&(g=`0${g.toString()}`),v=`${g}:`,g=X.getMinutes(),g<10&&(g=`0${g.toString()}`),v+=`${g}:`,g=X.getSeconds(),g<10&&(g=`0${g.toString()}`),v+=`${g}.`,g=X.getMilliseconds(),g<10?g=`00${g.toString()}`:g<100&&(g=`0${g.toString()}`),v+=g,v}class Ct extends ft.Component{messagesEnd;constructor(v){super(v),this.state={goBottom:!0},this.messagesEnd=ft.createRef()}static generateLine(v){return M.jsxs(Xe,{component:"tr",sx:Ke[v.severity],children:[M.jsx("td",{style:Ke.trTime,children:ma(new Date(v.ts))}),M.jsx("td",{style:Ke.trSeverity,children:v.severity}),M.jsx("td",{children:v.text})]},`tr_${v.ts}_${v.text.substring(v.text.length-10,v.text.length)}`)}renderLogList(v){return v!=null&&v.length?M.jsxs(Xe,{sx:Ke.logBoxInner,children:[M.jsx("table",{style:Ke.table,children:M.jsx("tbody",{children:v.map(g=>Ct.generateLine(g))})},"logTable"),M.jsx("div",{ref:this.messagesEnd,style:{float:"left",clear:"both"}},"logScrollPoint")]},"logList"):M.jsx(Xe,{sx:Ke.logBoxInner,style:{paddingLeft:10},children:we.I18n.t("Log outputs")},"logList")}onCopy(){we.Utils.copyToClipboard(this.props.console.join(` `))}scrollToBottom(){var v,g;(g=(v=this.messagesEnd)==null?void 0:v.current)==null||g.scrollIntoView({behavior:"smooth"})}componentDidUpdate(){this.state.goBottom&&this.scrollToBottom()}render(){const v=this.props.console;return M.jsxs("div",{style:Ke.logBox,children:[M.jsxs("div",{style:Ke.toolbox,children:[M.jsx(Te,{style:Ke.iconButtons,onClick:()=>this.setState({goBottom:!this.state.goBottom}),color:this.state.goBottom?"secondary":void 0,size:"medium",children:M.jsx(Xt,{})}),v!=null&&v.length?M.jsx(Te,{style:Ke.iconButtons,onClick:()=>this.props.onClearAllLogs(),size:"medium",children:M.jsx(Zt,{})}):null,v!=null&&v.length?M.jsx(Te,{style:Ke.iconButtons,onClick:()=>this.onCopy(),size:"medium",children:M.jsx(ea,{})}):null]},"toolbox"),this.renderLogList(v)]})}}var It={exports:{}},va=It.exports;(function(X,v){(function(g,a){X.exports=a(fa)})(va,(function(g){return(function(a){var t={};function e(s){if(t[s])return t[s].exports;var c=t[s]={i:s,l:!1,exports:{}};return a[s].call(c.exports,c,c.exports,e),c.l=!0,c.exports}return e.m=a,e.c=t,e.d=function(s,c,d){e.o(s,c)||Object.defineProperty(s,c,{enumerable:!0,get:d})},e.r=function(s){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})},e.t=function(s,c){if(1&c&&(s=e(s)),8&c||4&c&&typeof s=="object"&&s&&s.__esModule)return s;var d=Object.create(null);if(e.r(d),Object.defineProperty(d,"default",{enumerable:!0,value:s}),2&c&&typeof s!="string")for(var p in s)e.d(d,p,function(f){return s[f]}.bind(null,p));return d},e.n=function(s){var c=s&&s.__esModule?function(){return s.default}:function(){return s};return e.d(c,"a",c),c},e.o=function(s,c){return Object.prototype.hasOwnProperty.call(s,c)},e.p="",e(e.s=48)})([function(a,t){a.exports=g},function(a,t){var e=a.exports={version:"2.6.12"};typeof __e=="number"&&(__e=e)},function(a,t,e){var s=e(26)("wks"),c=e(17),d=e(3).Symbol,p=typeof d=="function";(a.exports=function(f){return s[f]||(s[f]=p&&d[f]||(p?d:c)("Symbol."+f))}).store=s},function(a,t){var e=a.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=e)},function(a,t,e){a.exports=!e(8)((function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7}))},function(a,t){var e={}.hasOwnProperty;a.exports=function(s,c){return e.call(s,c)}},function(a,t,e){var s=e(7),c=e(16);a.exports=e(4)?function(d,p,f){return s.f(d,p,c(1,f))}:function(d,p,f){return d[p]=f,d}},function(a,t,e){var s=e(10),c=e(35),d=e(23),p=Object.defineProperty;t.f=e(4)?Object.defineProperty:function(f,h,S){if(s(f),h=d(h,!0),s(S),c)try{return p(f,h,S)}catch{}if("get"in S||"set"in S)throw TypeError("Accessors not supported!");return"value"in S&&(f[h]=S.value),f}},function(a,t){a.exports=function(e){try{return!!e()}catch{return!0}}},function(a,t,e){var s=e(40),c=e(22);a.exports=function(d){return s(c(d))}},function(a,t,e){var s=e(11);a.exports=function(c){if(!s(c))throw TypeError(c+" is not an object!");return c}},function(a,t){a.exports=function(e){return typeof e=="object"?e!==null:typeof e=="function"}},function(a,t){a.exports={}},function(a,t,e){var s=e(39),c=e(27);a.exports=Object.keys||function(d){return s(d,c)}},function(a,t){a.exports=!0},function(a,t,e){var s=e(3),c=e(1),d=e(53),p=e(6),f=e(5),h=function(S,b,w){var I,R,H,L=S&h.F,Z=S&h.G,r=S&h.S,D=S&h.P,V=S&h.B,z=S&h.W,q=Z?c:c[b]||(c[b]={}),k=q.prototype,A=Z?s:r?s[b]:(s[b]||{}).prototype;for(I in Z&&(w=b),w)(R=!L&&A&&A[I]!==void 0)&&f(q,I)||(H=R?A[I]:w[I],q[I]=Z&&typeof A[I]!="function"?w[I]:V&&R?d(H,s):z&&A[I]==H?(function(T){var W=function(E,ee,J){if(this instanceof T){switch(arguments.length){case 0:return new T;case 1:return new T(E);case 2:return new T(E,ee)}return new T(E,ee,J)}return T.apply(this,arguments)};return W.prototype=T.prototype,W})(H):D&&typeof H=="function"?d(Function.call,H):H,D&&((q.virtual||(q.virtual={}))[I]=H,S&h.R&&k&&!k[I]&&p(k,I,H)))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,a.exports=h},function(a,t){a.exports=function(e,s){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:s}}},function(a,t){var e=0,s=Math.random();a.exports=function(c){return"Symbol(".concat(c===void 0?"":c,")_",(++e+s).toString(36))}},function(a,t,e){var s=e(22);a.exports=function(c){return Object(s(c))}},function(a,t){t.f={}.propertyIsEnumerable},function(a,t,e){var s=e(52)(!0);e(34)(String,"String",(function(c){this._t=String(c),this._i=0}),(function(){var c,d=this._t,p=this._i;return p>=d.length?{value:void 0,done:!0}:(c=s(d,p),this._i+=c.length,{value:c,done:!1})}))},function(a,t){var e=Math.ceil,s=Math.floor;a.exports=function(c){return isNaN(c=+c)?0:(c>0?s:e)(c)}},function(a,t){a.exports=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e}},function(a,t,e){var s=e(11);a.exports=function(c,d){if(!s(c))return c;var p,f;if(d&&typeof(p=c.toString)=="function"&&!s(f=p.call(c))||typeof(p=c.valueOf)=="function"&&!s(f=p.call(c))||!d&&typeof(p=c.toString)=="function"&&!s(f=p.call(c)))return f;throw TypeError("Can't convert object to primitive value")}},function(a,t){var e={}.toString;a.exports=function(s){return e.call(s).slice(8,-1)}},function(a,t,e){var s=e(26)("keys"),c=e(17);a.exports=function(d){return s[d]||(s[d]=c(d))}},function(a,t,e){var s=e(1),c=e(3),d=c["__core-js_shared__"]||(c["__core-js_shared__"]={});(a.exports=function(p,f){return d[p]||(d[p]=f!==void 0?f:{})})("versions",[]).push({version:s.version,mode:e(14)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(a,t){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(a,t,e){var s=e(7).f,c=e(5),d=e(2)("toStringTag");a.exports=function(p,f,h){p&&!c(p=h?p:p.prototype,d)&&s(p,d,{configurable:!0,value:f})}},function(a,t,e){e(62);for(var s=e(3),c=e(6),d=e(12),p=e(2)("toStringTag"),f="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),h=0;hdocument.F=Object<\/script>"),S.close(),h=S.F;w--;)delete h.prototype[d[w]];return h()};a.exports=Object.create||function(S,b){var w;return S!==null?(f.prototype=s(S),w=new f,f.prototype=null,w[p]=S):w=h(),b===void 0?w:c(w,b)}},function(a,t,e){var s=e(5),c=e(9),d=e(57)(!1),p=e(25)("IE_PROTO");a.exports=function(f,h){var S,b=c(f),w=0,I=[];for(S in b)S!=p&&s(b,S)&&I.push(S);for(;h.length>w;)s(b,S=h[w++])&&(~d(I,S)||I.push(S));return I}},function(a,t,e){var s=e(24);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(c){return s(c)=="String"?c.split(""):Object(c)}},function(a,t,e){var s=e(39),c=e(27).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(d){return s(d,c)}},function(a,t,e){var s=e(24),c=e(2)("toStringTag"),d=s((function(){return arguments})())=="Arguments";a.exports=function(p){var f,h,S;return p===void 0?"Undefined":p===null?"Null":typeof(h=(function(b,w){try{return b[w]}catch{}})(f=Object(p),c))=="string"?h:d?s(f):(S=s(f))=="Object"&&typeof f.callee=="function"?"Arguments":S}},function(a,t){var e;e=(function(){return this})();try{e=e||new Function("return this")()}catch{typeof window=="object"&&(e=window)}a.exports=e},function(a,t){var e=/-?\d+(\.\d+)?%?/g;a.exports=function(s){return s.match(e)}},function(a,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.getBase16Theme=t.createStyling=t.invertTheme=void 0;var s=R(e(49)),c=R(e(76)),d=R(e(81)),p=R(e(89)),f=R(e(93)),h=(function(k){if(k&&k.__esModule)return k;var A={};if(k!=null)for(var T in k)Object.prototype.hasOwnProperty.call(k,T)&&(A[T]=k[T]);return A.default=k,A})(e(94)),S=R(e(132)),b=R(e(133)),w=R(e(138)),I=e(139);function R(k){return k&&k.__esModule?k:{default:k}}var H=h.default,L=(0,p.default)(H),Z=(0,w.default)(b.default,I.rgb2yuv,(function(k){var A,T=(0,d.default)(k,3),W=T[0],E=T[1],ee=T[2];return[(A=W,A<.25?1:A<.5?.9-A:1.1-A),E,ee]}),I.yuv2rgb,S.default),r=function(k){return function(A){return{className:[A.className,k.className].filter(Boolean).join(" "),style:(0,c.default)({},A.style||{},k.style||{})}}},D=function(k,A){var T=(0,p.default)(A);for(var W in k)T.indexOf(W)===-1&&T.push(W);return T.reduce((function(E,ee){return E[ee]=(function(J,C){if(J===void 0)return C;if(C===void 0)return J;var Y=J===void 0?"undefined":(0,s.default)(J),be=C===void 0?"undefined":(0,s.default)(C);switch(Y){case"string":switch(be){case"string":return[C,J].filter(Boolean).join(" ");case"object":return r({className:J,style:C});case"function":return function(ce){for(var U=arguments.length,le=Array(U>1?U-1:0),Q=1;Q1?U-1:0),Q=1;Q1?U-1:0),Q=1;Q1?U-1:0),Q=1;Q1?U-1:0),Q=1;Q2?T-2:0),E=2;E3?A-3:0),W=3;W1&&arguments[1]!==void 0?arguments[1]:{},ee=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},J=E.defaultBase16,C=J===void 0?H:J,Y=E.base16Themes,be=Y===void 0?null:Y,ce=q(ee,be);ce&&(ee=(0,c.default)({},ce,ee));var U=L.reduce((function(ve,Ne){return ve[Ne]=ee[Ne]||C[Ne],ve}),{}),le=(0,p.default)(ee).reduce((function(ve,Ne){return L.indexOf(Ne)===-1&&(ve[Ne]=ee[Ne]),ve}),{}),Q=k(U),he=D(le,Q);return(0,f.default)(V,2).apply(void 0,[he].concat(T))}),3),t.getBase16Theme=function(k,A){if(k&&k.extend&&(k=k.extend),typeof k=="string"){var T=k.split(":"),W=(0,d.default)(T,2),E=W[0],ee=W[1];k=(A||{})[E]||h[E],ee==="inverted"&&(k=z(k))}return k&&k.hasOwnProperty("base00")?k:void 0})},function(a,t,e){var s,c=typeof Reflect=="object"?Reflect:null,d=c&&typeof c.apply=="function"?c.apply:function(r,D,V){return Function.prototype.apply.call(r,D,V)};s=c&&typeof c.ownKeys=="function"?c.ownKeys:Object.getOwnPropertySymbols?function(r){return Object.getOwnPropertyNames(r).concat(Object.getOwnPropertySymbols(r))}:function(r){return Object.getOwnPropertyNames(r)};var p=Number.isNaN||function(r){return r!=r};function f(){f.init.call(this)}a.exports=f,a.exports.once=function(r,D){return new Promise((function(V,z){function q(){k!==void 0&&r.removeListener("error",k),V([].slice.call(arguments))}var k;D!=="error"&&(k=function(A){r.removeListener(D,q),z(A)},r.once("error",k)),r.once(D,q)}))},f.EventEmitter=f,f.prototype._events=void 0,f.prototype._eventsCount=0,f.prototype._maxListeners=void 0;var h=10;function S(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}function b(r){return r._maxListeners===void 0?f.defaultMaxListeners:r._maxListeners}function w(r,D,V,z){var q,k,A,T;if(S(V),(k=r._events)===void 0?(k=r._events=Object.create(null),r._eventsCount=0):(k.newListener!==void 0&&(r.emit("newListener",D,V.listener?V.listener:V),k=r._events),A=k[D]),A===void 0)A=k[D]=V,++r._eventsCount;else if(typeof A=="function"?A=k[D]=z?[V,A]:[A,V]:z?A.unshift(V):A.push(V),(q=b(r))>0&&A.length>q&&!A.warned){A.warned=!0;var W=new Error("Possible EventEmitter memory leak detected. "+A.length+" "+String(D)+" listeners added. Use emitter.setMaxListeners() to increase limit");W.name="MaxListenersExceededWarning",W.emitter=r,W.type=D,W.count=A.length,T=W,console&&console.warn&&console.warn(T)}return r}function I(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function R(r,D,V){var z={fired:!1,wrapFn:void 0,target:r,type:D,listener:V},q=I.bind(z);return q.listener=V,z.wrapFn=q,q}function H(r,D,V){var z=r._events;if(z===void 0)return[];var q=z[D];return q===void 0?[]:typeof q=="function"?V?[q.listener||q]:[q]:V?(function(k){for(var A=new Array(k.length),T=0;T0&&(k=D[0]),k instanceof Error)throw k;var A=new Error("Unhandled error."+(k?" ("+k.message+")":""));throw A.context=k,A}var T=q[r];if(T===void 0)return!1;if(typeof T=="function")d(T,this,D);else{var W=T.length,E=Z(T,W);for(V=0;V=0;k--)if(V[k]===D||V[k].listener===D){A=V[k].listener,q=k;break}if(q<0)return this;q===0?V.shift():(function(T,W){for(;W+1=0;z--)this.removeListener(r,D[z]);return this},f.prototype.listeners=function(r){return H(this,r,!0)},f.prototype.rawListeners=function(r){return H(this,r,!1)},f.listenerCount=function(r,D){return typeof r.listenerCount=="function"?r.listenerCount(D):L.call(r,D)},f.prototype.listenerCount=L,f.prototype.eventNames=function(){return this._eventsCount>0?s(this._events):[]}},function(a,t,e){a.exports.Dispatcher=e(140)},function(a,t,e){a.exports=e(142)},function(a,t,e){t.__esModule=!0;var s=p(e(50)),c=p(e(65)),d=typeof c.default=="function"&&typeof s.default=="symbol"?function(f){return typeof f}:function(f){return f&&typeof c.default=="function"&&f.constructor===c.default&&f!==c.default.prototype?"symbol":typeof f};function p(f){return f&&f.__esModule?f:{default:f}}t.default=typeof c.default=="function"&&d(s.default)==="symbol"?function(f){return f===void 0?"undefined":d(f)}:function(f){return f&&typeof c.default=="function"&&f.constructor===c.default&&f!==c.default.prototype?"symbol":f===void 0?"undefined":d(f)}},function(a,t,e){a.exports={default:e(51),__esModule:!0}},function(a,t,e){e(20),e(29),a.exports=e(30).f("iterator")},function(a,t,e){var s=e(21),c=e(22);a.exports=function(d){return function(p,f){var h,S,b=String(c(p)),w=s(f),I=b.length;return w<0||w>=I?d?"":void 0:(h=b.charCodeAt(w))<55296||h>56319||w+1===I||(S=b.charCodeAt(w+1))<56320||S>57343?d?b.charAt(w):h:d?b.slice(w,w+2):S-56320+(h-55296<<10)+65536}}},function(a,t,e){var s=e(54);a.exports=function(c,d,p){if(s(c),d===void 0)return c;switch(p){case 1:return function(f){return c.call(d,f)};case 2:return function(f,h){return c.call(d,f,h)};case 3:return function(f,h,S){return c.call(d,f,h,S)}}return function(){return c.apply(d,arguments)}}},function(a,t){a.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}},function(a,t,e){var s=e(38),c=e(16),d=e(28),p={};e(6)(p,e(2)("iterator"),(function(){return this})),a.exports=function(f,h,S){f.prototype=s(p,{next:c(1,S)}),d(f,h+" Iterator")}},function(a,t,e){var s=e(7),c=e(10),d=e(13);a.exports=e(4)?Object.defineProperties:function(p,f){c(p);for(var h,S=d(f),b=S.length,w=0;b>w;)s.f(p,h=S[w++],f[h]);return p}},function(a,t,e){var s=e(9),c=e(58),d=e(59);a.exports=function(p){return function(f,h,S){var b,w=s(f),I=c(w.length),R=d(S,I);if(p&&h!=h){for(;I>R;)if((b=w[R++])!=b)return!0}else for(;I>R;R++)if((p||R in w)&&w[R]===h)return p||R||0;return!p&&-1}}},function(a,t,e){var s=e(21),c=Math.min;a.exports=function(d){return d>0?c(s(d),9007199254740991):0}},function(a,t,e){var s=e(21),c=Math.max,d=Math.min;a.exports=function(p,f){return(p=s(p))<0?c(p+f,0):d(p,f)}},function(a,t,e){var s=e(3).document;a.exports=s&&s.documentElement},function(a,t,e){var s=e(5),c=e(18),d=e(25)("IE_PROTO"),p=Object.prototype;a.exports=Object.getPrototypeOf||function(f){return f=c(f),s(f,d)?f[d]:typeof f.constructor=="function"&&f instanceof f.constructor?f.constructor.prototype:f instanceof Object?p:null}},function(a,t,e){var s=e(63),c=e(64),d=e(12),p=e(9);a.exports=e(34)(Array,"Array",(function(f,h){this._t=p(f),this._i=0,this._k=h}),(function(){var f=this._t,h=this._k,S=this._i++;return!f||S>=f.length?(this._t=void 0,c(1)):c(0,h=="keys"?S:h=="values"?f[S]:[S,f[S]])}),"values"),d.Arguments=d.Array,s("keys"),s("values"),s("entries")},function(a,t){a.exports=function(){}},function(a,t){a.exports=function(e,s){return{value:s,done:!!e}}},function(a,t,e){a.exports={default:e(66),__esModule:!0}},function(a,t,e){e(67),e(73),e(74),e(75),a.exports=e(1).Symbol},function(a,t,e){var s=e(3),c=e(5),d=e(4),p=e(15),f=e(37),h=e(68).KEY,S=e(8),b=e(26),w=e(28),I=e(17),R=e(2),H=e(30),L=e(31),Z=e(69),r=e(70),D=e(10),V=e(11),z=e(18),q=e(9),k=e(23),A=e(16),T=e(38),W=e(71),E=e(72),ee=e(32),J=e(7),C=e(13),Y=E.f,be=J.f,ce=W.f,U=s.Symbol,le=s.JSON,Q=le&&le.stringify,he=R("_hidden"),ve=R("toPrimitive"),Ne={}.propertyIsEnumerable,Ee=b("symbol-registry"),Oe=b("symbols"),fe=b("op-symbols"),ge=Object.prototype,De=typeof U=="function"&&!!ee.f,Ue=s.QObject,Ze=!Ue||!Ue.prototype||!Ue.prototype.findChild,et=d&&S((function(){return T(be({},"a",{get:function(){return be(this,"a",{value:7}).a}})).a!=7}))?function(j,N,B){var K=Y(ge,N);K&&delete ge[N],be(j,N,B),K&&j!==ge&&be(ge,N,K)}:be,tt=function(j){var N=Oe[j]=T(U.prototype);return N._k=j,N},at=De&&typeof U.iterator=="symbol"?function(j){return typeof j=="symbol"}:function(j){return j instanceof U},He=function(j,N,B){return j===ge&&He(fe,N,B),D(j),N=k(N,!0),D(B),c(Oe,N)?(B.enumerable?(c(j,he)&&j[he][N]&&(j[he][N]=!1),B=T(B,{enumerable:A(0,!1)})):(c(j,he)||be(j,he,A(1,{})),j[he][N]=!0),et(j,N,B)):be(j,N,B)},st=function(j,N){D(j);for(var B,K=Z(N=q(N)),re=0,te=K.length;te>re;)He(j,B=K[re++],N[B]);return j},ot=function(j){var N=Ne.call(this,j=k(j,!0));return!(this===ge&&c(Oe,j)&&!c(fe,j))&&(!(N||!c(this,j)||!c(Oe,j)||c(this,he)&&this[he][j])||N)},rt=function(j,N){if(j=q(j),N=k(N,!0),j!==ge||!c(Oe,N)||c(fe,N)){var B=Y(j,N);return!B||!c(Oe,N)||c(j,he)&&j[he][N]||(B.enumerable=!0),B}},it=function(j){for(var N,B=ce(q(j)),K=[],re=0;B.length>re;)c(Oe,N=B[re++])||N==he||N==h||K.push(N);return K},Ge=function(j){for(var N,B=j===ge,K=ce(B?fe:q(j)),re=[],te=0;K.length>te;)!c(Oe,N=K[te++])||B&&!c(ge,N)||re.push(Oe[N]);return re};De||(f((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor!");var j=I(arguments.length>0?arguments[0]:void 0),N=function(B){this===ge&&N.call(fe,B),c(this,he)&&c(this[he],j)&&(this[he][j]=!1),et(this,j,A(1,B))};return d&&Ze&&et(ge,j,{configurable:!0,set:N}),tt(j)}).prototype,"toString",(function(){return this._k})),E.f=rt,J.f=He,e(41).f=W.f=it,e(19).f=ot,ee.f=Ge,d&&!e(14)&&f(ge,"propertyIsEnumerable",ot,!0),H.f=function(j){return tt(R(j))}),p(p.G+p.W+p.F*!De,{Symbol:U});for(var Ve="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Ce=0;Ve.length>Ce;)R(Ve[Ce++]);for(var nt=C(R.store),F=0;nt.length>F;)L(nt[F++]);p(p.S+p.F*!De,"Symbol",{for:function(j){return c(Ee,j+="")?Ee[j]:Ee[j]=U(j)},keyFor:function(j){if(!at(j))throw TypeError(j+" is not a symbol!");for(var N in Ee)if(Ee[N]===j)return N},useSetter:function(){Ze=!0},useSimple:function(){Ze=!1}}),p(p.S+p.F*!De,"Object",{create:function(j,N){return N===void 0?T(j):st(T(j),N)},defineProperty:He,defineProperties:st,getOwnPropertyDescriptor:rt,getOwnPropertyNames:it,getOwnPropertySymbols:Ge});var x=S((function(){ee.f(1)}));p(p.S+p.F*x,"Object",{getOwnPropertySymbols:function(j){return ee.f(z(j))}}),le&&p(p.S+p.F*(!De||S((function(){var j=U();return Q([j])!="[null]"||Q({a:j})!="{}"||Q(Object(j))!="{}"}))),"JSON",{stringify:function(j){for(var N,B,K=[j],re=1;arguments.length>re;)K.push(arguments[re++]);if(B=N=K[1],(V(N)||j!==void 0)&&!at(j))return r(N)||(N=function(te,ue){if(typeof B=="function"&&(ue=B.call(this,te,ue)),!at(ue))return ue}),K[1]=N,Q.apply(le,K)}}),U.prototype[ve]||e(6)(U.prototype,ve,U.prototype.valueOf),w(U,"Symbol"),w(Math,"Math",!0),w(s.JSON,"JSON",!0)},function(a,t,e){var s=e(17)("meta"),c=e(11),d=e(5),p=e(7).f,f=0,h=Object.isExtensible||function(){return!0},S=!e(8)((function(){return h(Object.preventExtensions({}))})),b=function(I){p(I,s,{value:{i:"O"+ ++f,w:{}}})},w=a.exports={KEY:s,NEED:!1,fastKey:function(I,R){if(!c(I))return typeof I=="symbol"?I:(typeof I=="string"?"S":"P")+I;if(!d(I,s)){if(!h(I))return"F";if(!R)return"E";b(I)}return I[s].i},getWeak:function(I,R){if(!d(I,s)){if(!h(I))return!0;if(!R)return!1;b(I)}return I[s].w},onFreeze:function(I){return S&&w.NEED&&h(I)&&!d(I,s)&&b(I),I}}},function(a,t,e){var s=e(13),c=e(32),d=e(19);a.exports=function(p){var f=s(p),h=c.f;if(h)for(var S,b=h(p),w=d.f,I=0;b.length>I;)w.call(p,S=b[I++])&&f.push(S);return f}},function(a,t,e){var s=e(24);a.exports=Array.isArray||function(c){return s(c)=="Array"}},function(a,t,e){var s=e(9),c=e(41).f,d={}.toString,p=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];a.exports.f=function(f){return p&&d.call(f)=="[object Window]"?(function(h){try{return c(h)}catch{return p.slice()}})(f):c(s(f))}},function(a,t,e){var s=e(19),c=e(16),d=e(9),p=e(23),f=e(5),h=e(35),S=Object.getOwnPropertyDescriptor;t.f=e(4)?S:function(b,w){if(b=d(b),w=p(w,!0),h)try{return S(b,w)}catch{}if(f(b,w))return c(!s.f.call(b,w),b[w])}},function(a,t){},function(a,t,e){e(31)("asyncIterator")},function(a,t,e){e(31)("observable")},function(a,t,e){t.__esModule=!0;var s,c=e(77),d=(s=c)&&s.__esModule?s:{default:s};t.default=d.default||function(p){for(var f=1;fH;)for(var r,D=h(arguments[H++]),V=L?c(D).concat(L(D)):c(D),z=V.length,q=0;z>q;)r=V[q++],s&&!Z.call(D,r)||(I[r]=D[r]);return I}:S},function(a,t,e){t.__esModule=!0;var s=d(e(82)),c=d(e(85));function d(p){return p&&p.__esModule?p:{default:p}}t.default=function(p,f){if(Array.isArray(p))return p;if((0,s.default)(Object(p)))return(function(h,S){var b=[],w=!0,I=!1,R=void 0;try{for(var H,L=(0,c.default)(h);!(w=(H=L.next()).done)&&(b.push(H.value),!S||b.length!==S);w=!0);}catch(Z){I=!0,R=Z}finally{try{!w&&L.return&&L.return()}finally{if(I)throw R}}return b})(p,f);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(a,t,e){a.exports={default:e(83),__esModule:!0}},function(a,t,e){e(29),e(20),a.exports=e(84)},function(a,t,e){var s=e(42),c=e(2)("iterator"),d=e(12);a.exports=e(1).isIterable=function(p){var f=Object(p);return f[c]!==void 0||"@@iterator"in f||d.hasOwnProperty(s(f))}},function(a,t,e){a.exports={default:e(86),__esModule:!0}},function(a,t,e){e(29),e(20),a.exports=e(87)},function(a,t,e){var s=e(10),c=e(88);a.exports=e(1).getIterator=function(d){var p=c(d);if(typeof p!="function")throw TypeError(d+" is not iterable!");return s(p.call(d))}},function(a,t,e){var s=e(42),c=e(2)("iterator"),d=e(12);a.exports=e(1).getIteratorMethod=function(p){if(p!=null)return p[c]||p["@@iterator"]||d[s(p)]}},function(a,t,e){a.exports={default:e(90),__esModule:!0}},function(a,t,e){e(91),a.exports=e(1).Object.keys},function(a,t,e){var s=e(18),c=e(13);e(92)("keys",(function(){return function(d){return c(s(d))}}))},function(a,t,e){var s=e(15),c=e(1),d=e(8);a.exports=function(p,f){var h=(c.Object||{})[p]||Object[p],S={};S[p]=f(h),s(s.S+s.F*d((function(){h(1)})),"Object",S)}},function(a,t,e){(function(s){var c=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],d=/^\s+|\s+$/g,p=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,f=/\{\n\/\* \[wrapped with (.+)\] \*/,h=/,? & /,S=/^[-+]0x[0-9a-f]+$/i,b=/^0b[01]+$/i,w=/^\[object .+?Constructor\]$/,I=/^0o[0-7]+$/i,R=/^(?:0|[1-9]\d*)$/,H=parseInt,L=typeof s=="object"&&s&&s.Object===Object&&s,Z=typeof self=="object"&&self&&self.Object===Object&&self,r=L||Z||Function("return this")();function D(F,x,j){switch(j.length){case 0:return F.call(x);case 1:return F.call(x,j[0]);case 2:return F.call(x,j[0],j[1]);case 3:return F.call(x,j[0],j[1],j[2])}return F.apply(x,j)}function V(F,x){return!!(F&&F.length)&&(function(j,N,B){if(N!=N)return(function(te,ue,ye,xe){for(var Ie=te.length,me=ye+-1;++me-1}function z(F){return F!=F}function q(F,x){for(var j=F.length,N=0;j--;)F[j]===x&&N++;return N}function k(F,x){for(var j=-1,N=F.length,B=0,K=[];++j2?T:void 0);function Ne(F){return Ve(F)?le(F):{}}function Ee(F){return!(!Ve(F)||(function(x){return!!C&&C in x})(F))&&((function(x){var j=Ve(x)?ce.call(x):"";return j=="[object Function]"||j=="[object GeneratorFunction]"})(F)||(function(x){var j=!1;if(x!=null&&typeof x.toString!="function")try{j=!!(x+"")}catch{}return j})(F)?U:w).test((function(x){if(x!=null){try{return Y.call(x)}catch{}try{return x+""}catch{}}return""})(F))}function Oe(F,x,j,N){for(var B=-1,K=F.length,re=j.length,te=-1,ue=x.length,ye=Q(K-re,0),xe=Array(ue+ye),Ie=!N;++te1&&se.reverse(),xe&&ue1?"& ":"")+x[N],x=x.join(j>2?", ":" "),F.replace(p,`{ /* [wrapped with `+x+`] */ `)}function st(F,x){return!!(x=x??9007199254740991)&&(typeof F=="number"||R.test(F))&&F>-1&&F%1==0&&F1&&d--,f=6*d<1?s+6*(c-s)*d:2*d<1?c:3*d<2?s+(c-s)*(2/3-d)*6:s,p[w]=255*f;return p}},function(a,t,e){(function(s){var c=typeof s=="object"&&s&&s.Object===Object&&s,d=typeof self=="object"&&self&&self.Object===Object&&self,p=c||d||Function("return this")();function f(k,A,T){switch(T.length){case 0:return k.call(A);case 1:return k.call(A,T[0]);case 2:return k.call(A,T[0],T[1]);case 3:return k.call(A,T[0],T[1],T[2])}return k.apply(A,T)}function h(k,A){for(var T=-1,W=A.length,E=k.length;++T-1&&E%1==0&&E<=9007199254740991})(W.length)&&!(function(E){var ee=(function(J){var C=typeof J;return!!J&&(C=="object"||C=="function")})(E)?w.call(E):"";return ee=="[object Function]"||ee=="[object GeneratorFunction]"})(W)})(T)})(A)&&b.call(A,"callee")&&(!R.call(A,"callee")||w.call(A)=="[object Arguments]")})(k)||!!(H&&k&&k[H])}var r=Array.isArray,D,V,z,q=(V=function(k){var A=(k=(function(E,ee,J,C,Y){var be=-1,ce=E.length;for(J||(J=Z),Y||(Y=[]);++be2?d-2:0),f=2;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch{return!1}})();return function(){var n,o=w(l);if(u){var i=w(this).constructor;n=Reflect.construct(o,arguments,i)}else n=o.apply(this,arguments);return H(this,n)}}e.r(t);var Z=e(0),r=e.n(Z);function D(){var l=this.constructor.getDerivedStateFromProps(this.props,this.state);l!=null&&this.setState(l)}function V(l){this.setState(function(u){var n=this.constructor.getDerivedStateFromProps(l,u);return n??null}.bind(this))}function z(l,u){try{var n=this.props,o=this.state;this.props=l,this.state=u,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,o)}finally{this.props=n,this.state=o}}function q(l){var u=l.prototype;if(!u||!u.isReactComponent)throw new Error("Can only polyfill class components");if(typeof l.getDerivedStateFromProps!="function"&&typeof u.getSnapshotBeforeUpdate!="function")return l;var n=null,o=null,i=null;if(typeof u.componentWillMount=="function"?n="componentWillMount":typeof u.UNSAFE_componentWillMount=="function"&&(n="UNSAFE_componentWillMount"),typeof u.componentWillReceiveProps=="function"?o="componentWillReceiveProps":typeof u.UNSAFE_componentWillReceiveProps=="function"&&(o="UNSAFE_componentWillReceiveProps"),typeof u.componentWillUpdate=="function"?i="componentWillUpdate":typeof u.UNSAFE_componentWillUpdate=="function"&&(i="UNSAFE_componentWillUpdate"),n!==null||o!==null||i!==null){var y=l.displayName||l.name,O=typeof l.getDerivedStateFromProps=="function"?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error(`Unsafe legacy lifecycles will not be called for components using new component APIs. diff --git a/admin/assets/index-AOxv_cZq.js b/admin/assets/index-Be9Zg6aF.js similarity index 94% rename from admin/assets/index-AOxv_cZq.js rename to admin/assets/index-Be9Zg6aF.js index b1dbe7a8e..f240cdd3b 100644 --- a/admin/assets/index-AOxv_cZq.js +++ b/admin/assets/index-Be9Zg6aF.js @@ -368,7 +368,7 @@ Url: ${Do(s)}`),!0}return!1}function Id(s,e){return e!=null&&e.length?j4(s).some @keyframes loaderHA-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } -}`;function Uh(s){const e=s.themeType||"dark",t=s.size||270,i=t*1.5,r=t*14/270,o=t*280/270;return a.useEffect(()=>{if(!window.document.getElementById(Wu)){const n=window.document.createElement("style");n.setAttribute("id",Wu),n.innerHTML=bh,window.document.head.appendChild(n)}},[]),a.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{position:"relative",width:i,height:i,display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("div",{style:{position:"absolute",top:-r,left:-r,right:-r,bottom:-r,border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.50)`,borderRadius:"50%",animation:"loaderHA-spin 3.6s linear infinite"}}),a.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.75)`,borderRadius:"50%",animation:"loaderHA-spin 2.2s linear infinite"}}),a.createElement("div",{style:{width:t,height:t,zIndex:1,display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 69.6 148.1",style:{width:"100%",height:"100%"}},a.createElement("path",{fill:"#db0a33",d:"M69.5,100.6c0-.4,0-.8-.2-1.1v-.7c-.2-.4-.3-.8-.5-1.2,0-.2-.2-.5-.3-.7,0,0,0-.2,0-.2,0-.2,0-.3-.2-.5l-.4-.7-.4-.6c-1-1.6-2.4-3-4.2-4.3-.3-.2-.6-.4-.9-.6,0,0-.2,0-.3-.2-.3-.2-.6-.3-.9-.5-.2,0-.3-.2-.5-.3-.3-.2-.6-.3-.9-.5,0,0-.2,0-.3-.2-1-2.7-2.4-4.9-3.8-6.7h0c2.5,0,6.6-.3,7.5-3,3.5-3,2.5-9.7,2.5-10,0-.6-.2-1.1-.4-1.7h0v-.3c.5-3-.4-7.1-.5-7.7h0l-.3-1.1c0-.3-.2-.7-.4-1,0-.4-.3-.7-.4-1,0-.3-.3-.7-.5-1s-.4-.7-.6-1c-.2-.3-.4-.6-.6-.9l-.4-.4-.4-.4-.4-.4c0,0-.3-.3-.5-.4-.3-.2-.6-.4-1-.6-.2,0-.4-.2-.5-.2-.2,0-.4,0-.6-.2-.2,0-.4,0-.6,0h-1.8c-.4,0-.8,0-1.1.2-.4,0-.7.2-1.1.4h0c-1.6-.2-2.6-1-3.1-1.7h0c2-.9,3.5-1.9,4.6-3,2.6-2.2,4-5.1,4.7-7.2,3.4-1.1,5.4-4,5.4-4h0c4.6-5.3,1.2-15.1,1.2-15.1,0,0-.8,4.2-4,5.5,0-.3-.2-.6-.3-1.1s-.3-1.1-.6-1.7c-.2-.7-.5-1.4-.9-2.2-.4-.8-.8-1.6-1.4-2.4-.5-.8-1.2-1.7-1.9-2.5h0C59.2,6.6,49.2.3,49.2.3c0,0,3.3,5.8,1.3,9.9,0,0-3.5-.8-5.7-.8s-2.4.1-3.5.3c-.5.1-1.1.2-1.6.3-.3,0-.5.1-.8.2-.2,0-.5.1-.7.2-.5.1-.9.2-1.3.4-.4.1-.8.3-1.2.4-.4.1-.7.2-1,.3s-.6.2-.9.3h-.2c-2-2.8-3.7-7.5,1.8-11.9,0,0-13,5.3-8.2,17,0,0,0,.2-.1.4h0c-.3.3-.6.7-1,1.3-.3.6-.7,1.3-.9,2.1-.1.4-.2.8-.2,1.3v1.5c-.2-.1-.5-.2-.9-.4-1.7-.8-1.7-2.8-1.7-2.8-1.1,8.3,4.2,13.3,5.2,14.1,0,.4,0,.7-.2,1v.4c-.2,0-.3.3-.4.5-.1.4-.2.7-.3,1.1-.1.7-.1,1.5,0,2.2s.3,1.4.5,2c.3.6.6,1.2.9,1.7,0,0,0,0,.1.2.4.6,1,1.4,2,2h.1c.2,0,.8.5,1.7.7.2.2,1.5,1.7,3.1,2.1-.2,1.1-1,2.8-3.4,3.7,0,0-14.2-.4-13.2,13.5-6.6,8.7-3.8,13.4-3.8,13.4-.9.6-.9,1.9-.5,3,0,0,0,.3.2.5,0,0,0,0,.3.4.3.4.6.7,1,.8,1.1.7,3.1,1.5,6.4,1.1.2.3,1.3,1.8,1.3,2.2.5,2.3,1.2,4.5,1.3,6.8l.2,1.3c-2.2-.2-11-.2-16.6,9.1,0,0-.2.2-.2.4l-.5.9-.6,1.2h0c-.3.7-.7,1.7-1.1,2.8-.5.4-1.2,0-1.7-.3-.4-.4-.7-.7-.9-1.1,0,0,0-.2,0-.3v-.2s0-.2-.2-.2h0c0,0,0,0-.2-.2h-.4s-.2,0-.2,0c-.2,0-.2.2-.3.3,0,0-.1.2-.2.2,0,.2-.2.3-.2.5-.2.6-.4,1.2-.6,1.8-.6,2.4-.6,4.9-.1,7.3.2,1.2.6,2.4,1.1,3.5.5,1.1,1.2,2.1,2,3.1.8.9,1.7,1.8,2.7,2.5s2,1.3,3.1,1.8h0l.6.4-.3-.7c-.2-.4-.3-.9-.5-1.3-.1-.4-.2-.9-.3-1.3-.1-.9-.2-1.8,0-2.7,0-.4.2-.8.4-1.2.2-.4.4-.7.7-1.1.6-.8,1-1.6,1.5-2.5.4-.9.8-1.8,1.1-2.7.1-.5.3-1,.3-1.5v-.9h0c.1-2.3-1.9-3-3-2.9-.9,0-1.7.2-2,.2.7-1.3,1.3-2.4,2-3.4h0c.2-.4.4-.6.6-.9.4-.5.8-1,1.2-1.5.1,0,.2-.3.3-.4h0c.1,0,.2-.2.3-.4.1,0,.2-.3.4-.4,6.5-6.5,12.5-2.9,12.5-2.9,0,0,1.1,3.7,1.6,4.6h0c1,2.3,2.7,4.6,4.1,6.9h0c0,0,0,4.8,2.2,7.2.5.6,1.1,1.3,1.7,2.2.3.5.5,1,.7,1.4.2.3.3.6.4.9.3.4.5.8.8,1.3s.6,1,.8,1.6c.2.5.4,1,.6,1.5,0,0,1,5.1.7,7.4-3.3.9-5.5,2.4-7.4,3.2-1,.3-3.4,2-5.5,1.9h-.5c0,.1-3.6.3-2.7,3.1,0,0,.2,3.6,5.8,2.9,1.8-.1,7.5-.5,9.1-.3,1.6.2,2.8.2,3.7.1,1.3,0,3.8,0,5.3-.4.4,1.8,3.2,2.4,6,1.5,3.6,1.6,13.5,2,15.6-1.6,2.4-4.1-2.4-8.6-4.1-12.6-3.8-9.3-.8-14-1.6-16.8,0-.7-.2-1.8-.4-3.2.8-.4,1.5-.8,2.2-1.3,1-.7,1.7-1.4,2.3-2.1l.2-.2c0,0,.2-.3.3-.4l.6-.9.6-1.2.4-1.1.3-1.2v-.8c0-.3,0-.5,0-.7h0v-2.4h.2ZM52.6,131.9c-.3.4-.7.9-1.2,1.6-1-.6-2.7-2.2-3.3-4.3,0-.2,0-.3-.2-.5-1.1-6.9-2.6-9.7-3.2-10.6-1-3.7-1.7-7.4-1.3-9.6,0,0,3.6,8.2,6.4,10,0,0,3.7,8.5,4.5,9.9.6,1-.9,2.3-1.7,3.5ZM63.6,102.7h0v.2h0v.9c0,0-.3.4-.3.4,0,0,0,.2,0,.3v.2h0v.2h0l-.2.2c-.3.6-.8,1.1-1.3,1.5h0c-.3-2.4-.6-5.1-.8-8.2.2-.5.3-1.1.4-1.7l.2.2c.2.2.4.4.5.6.2.2.3.4.5.7,0,.2.3.4.4.7h0c0,.3.2.5.3.7,0,.2.2.5.2.7h0v.3c0,.2,0,.4,0,.6v.7h0v.7h0Z"}))),a.createElement("div",{style:{position:"absolute",width:o,zIndex:2,top:"57.5%",left:"50%",transform:"translate(-50%, -155%)"}},a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 7152 512",width:"100%",height:"auto"},a.createElement("path",{fill:"#fff",d:"M4566 0h1053v5h25c2 5 2 5 1 8h16q3 3 2 7l3 1 4 1 2 7h2l12 1q3 1 2 6v3h7q3 4 2 10v6h3l4 1 1 8 3-1 5 2 1 7 7 1 1 14v2h3q3 0 5 2l1 9v22l3 1 4 1 1 7v41q0 3-3 5l-5 1v26q1 3-2 5h-8l1 2v8l-1 8h-8v16q-3 3-7 2l-1 3-2 5h-6v6l-1 11h-7l-1 8-10 1h-6l-1 3-1 4-7 2v3l-2 4h-16l1 2-2 6h-15v3l-3 6-10 1h-11l-10 2q1 3-2 5l-8 1h-796l-4-1-2-7h-2q-7 0-14-2v-8h-8l-1-7h-3l-4-1q-2-5-2-10v-62l2-6 7-1v-3l2-4h7v-8l5-1h3v-3l1-5q3-2 8-1h57l140-1h602v-3l2-4h7l1-8 8-1v-31l-7-1q-2-2-2-5v-2l-3-1q-5 0-6-4v-5h-3l-11 1-2-2v-7h-917l-1 8-23 1h-14l-5-1v7l-9 3h-7l-1 3-1 4-9 1h-6l-1 3-2 5h-6v3q0 3-2 5l-6 1v3q0 3-4 5h-5v15l-2 2h-7v16h-8v110h8v24h6l3 3v5l3 1q4 0 6 4l-1 5 9 2v6h3q3 0 5 2l1 6h2l5 1q2 4 0 8h2q12-3 23 1l1 5v3l2-1h1069l9 1 1 8h18l7 2 1 6h3q3 0 5 4l1 5h3q3 0 5 4v12l3 1 5 2v21l1 17v3l-1 8-5 3-3 1v8l-2 7h-8l1 2-1 6h-16v5H4571v-5h-42v-8h-16q-2-3-2-7h-7l-4-1q-3 1-5-2v-7l-2 1h-8q-4 0-7-2l-1-8-3 1h-3q-2-1-2-6v-3h-3q-5 1-6-2l1-6h-3l-6-2-1-6h-3q-3 0-5-4v-6l-3 1h-3q-3-4-3-10v-7l-8-1 1-8h-9l-1-7v-2l1-8h-7q-2-3-2-8v-18l-2 1-6-2-1-9v-23h-2q-3 1-5-2V186l1-3h7v-32q3-4 8-3v-19q0-4 3-6h6l-1-2q-1-8 3-14h7v-7q3-2 7-2v-9c1-6 1-6 3-8h6v-3l1-5 7-1 1-3q1-5 3-5l6-1v-3q-1-3 2-5h6v-3q-1-3 2-5l6-1v-2l2-5 7-2 1-6 6-2 2 1v-3q-1-4 2-6l7-1h7v-3l2-4h16V5h34l-1-4zM1620 0h1065v5h23l3 1v6l15 1 2 6-1 2h7q3 3 3 8h3l5 3v7h3l5 1v7h3l5 1v7h3q4 0 6 2l1 6 3 1 5 2v15l8 2v24h7q3 4 2 10v395h-130V169l-7-2q-2-4-2-9v-6l-3-1-5-2v-15l-11 1-2-1-4-2v-7l-3 1h-17l-5-1v-8h-900v7c-4 4-14 2-19 2h-18l-5-1v3q1 5-2 6l-15 1h-4l-5-1v7q-3 3-7 2l-1 3-2 5h-7l1 3-2 5h-8v8l-4 1h-3v9c-1 6-1 6-3 8h-6v21l-1 3-7 1v83l7 1 1 3v22h3l5 1 1 15h3l4 2v7h7q3 4 2 9l9 2v6h3q3-1 5 2l1 6h11q3 0 5 2l1 6h4l12 2 1 7h714l8 2 1 5-1 2h18l8 2-1 6 9 1 1 9 7-1 1 9v3l1 6v7h3l4 2v33l-6 2-2-1v22l-2 4-7 1v3l-1 4h-8v5h-784v-5h-41c-2-5-2-5-1-8h-16q-2-3-2-7h-7l-4-1q-3 0-5-2v-7l-2 1h-4l-3-6v-3h-10q-3 0-7-2v-7h-3l-5-1-1-7h-3q-3 1-5-2l1-6-8-1q-2-5-2-11v-6h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-6-3-1q-5-1-5-3-2-8 0-14h-7q-2-5-2-10v-7l-2 1-4-1q-4-3-3-7v-18h-2q-3 1-5-2v-41h-7q-2-3-2-8V193q4-2 9-2v-41l5-1h3v-21l1-4 7-1v-10l2-6h7l-1-2q-1-7 2-15l8-1v-3l1-5h7V66q3-4 8-3v-3l3-5 6-1v-3l2-4h7v-7l6-2 2 1v-3q0-5 2-6l10-1h6l-1-2 1-4q4-3 9-2h7v-3q0-3 2-5h15l-1-3 3-5 7-1h25zM4137 0h130v392q1 3-2 5l-6 1v20l-1 4-7 2v2q1 7-2 13l-7 1v4c0 10 0 10-3 13h-6v3q1 3-2 5l-6 1v3l-2 4h-7v3l-2 6h-7v3q1 4-2 6h-6v3q1 3-2 5h-24v3l-1 5h-24l1 2v2q-3 2-6 1H3057v-5h-24l-2-6 1-2h-16l-1-5v-3h-9c-6 0-6 0-8-2l-1-7-3 1-5-3v-7l-2 1-6-2v-7h-7l-2-6 1-2h-3q-4 1-6-2v-6h-3l-4-1q-2-5-2-10v-7h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-7v-16h-3q-5-1-5-3l-1-7v-17l-2 1-6-2v-77c0-6 0-6 2-8h6v-27q-1-4 2-7l7-1v-11q-1-3 2-5l6-1v-7l1-4 1-5h7v-15q3-4 8-3l1-3 1-4 8-1v-3l1-5h7v-3q-1-4 2-6l6 1v-3q0-4 2-6l6-2v-2l3-5h15v-3q-1-3 2-5h15l-1-2 1-4 3-3h21l1-3q1-5 3-5l14-1h638v-2l2-6h148q3 0 5 2l1 6h13c7 0 7 0 11 2l2 7 7 1v8h7q3 5 2 12v66l-1 8-8 1v7q-3 3-7 2l-1 3-1 4-7 1h-211l-230 1h-333v3l-2 4h-24v7l-6 3q-4 3-4 7l-7 1v3q1 3-2 5h-7v3l-1 5h-7l1 49 6 1 1 5v3h8l1 6v3l-1 7h11q4-1 7 3v6l3-1 12 1q3 2 2 6v3l3-1h993l5 1v-3q-1-4 2-6l6-1v-3q0-3 4-5h6l-1-2 2-6h7v-3l2-14h5zM0 0h126l1 8v144l-1 5h932l106-1 7 1h4q3 0 5 2l2 6h52l5 2v7h9l8 1q2 4 1 8h2q7-2 14 1l1 7h11l5 1q2 4 1 8l3-1 5 3v7h8v16h7l4 8h2l5 3v23h3q3 0 5 2v24h7q3 7 2 14v137l-1 32v16q1 6-2 7h-5v7l-1 3-1 6h-16l1 3-1 2h-79v-4h-7l-3-1-6-1-1-8v-7h-6q-2-4-2-10V338h-3q-3 1-5-2l-1-9v-6h-3l-5-2v-16h-16l-2-6 1-2h-16l-1-1v-7H126l1 2v188c0 11 0 11-3 14h-7v15l-4 1h-12v5H22l-1-3 1-2h-3q-5 1-6-2v-5h-3l-5-2v-7H0zM6537 0h606v5l8 1 1 16v82l-3 4-8 1h-6v3l-1 4q-5 2-10 1h-509v3l-1 5q-13 2-24 0v3q1 5-2 6l-6 1h-4l-5-1v3l-1 5-7 2v8q0 6-2 7l-7 1v210c0 7 0 7-2 10h-7v32q-3 3-8 2v15q-2 3-5 2h-3v2q1 8-2 15l-7 1v7l-1 3-1 6h-7v7l-6 2-2-1v3q1 5-2 6l-9 2h-6v5q-4 3-9 2v3q1 3-2 5h-15l1 3-2 5h-33l1 3-1 2h-589v-5h-8v-8h-7l-3-10v-6l-3-1-4-1-1-7v-48l2-5 7-1v-10q-1-3 2-5 2-2 6-2l1-3 2-5h32v-7q6-3 12-2h498l8 1v-3q0-3 2-5l7-2h8l2-7 7-1v-11q0-3 2-5h6V167l1-8q4-4 8-3v-44l1-5h8V84l1-3h7V66l8-4v-2l3-5 6-1v-9l1-6h8v-8q8-3 15-2l1-3 3-5h6v-3q-1-3 2-5h15v-3q-1-3 2-5h24z"})))))}function $h(s){const e=window.vendorPrefix;return e==="PT"?a.createElement(Qh,{themeType:s.themeType}):e==="MV"?a.createElement(Eh,{themeType:s.themeType}):e==="NW"?a.createElement(_h,{themeType:"dark"}):e==="HA"?a.createElement(Uh,{themeType:"dark"}):e&&e!=="@@vendorPrefix@@"?a.createElement(Sh,{themeType:s.themeType}):a.createElement(vh,{themeType:s.themeType})}class nr extends De{onHashChangedBound;constructor(e){super(e),this.onHashChangedBound=this.onHashChanged.bind(this)}componentDidMount(){window.addEventListener("hashchange",this.onHashChangedBound)}componentWillUnmount(){window.removeEventListener("hashchange",this.onHashChangedBound)}onHashChanged(){}static getLocation(){let e=window.location.hash;e=e.replace(/^#/,"");const t=e.split("/").map(i=>{try{return i?decodeURIComponent(i):""}catch{return console.error(`Router: Cannot decode ${i}`),i}});return{tab:t[0]||"",dialog:t[1]||"",id:t[2]||"",arg:t[3]||""}}static doNavigate(e,t,i,r){let o="";const n=nr.getLocation();r!==void 0&&!i&&(i=n.id),i&&!t&&(t=n.dialog),(t&&!e||e===null)&&(e=n.tab),e&&(o=`#${e}`,t&&(o+=`/${t}`,i&&(o+=`/${i}`,r!==void 0&&(o+=`/${r}`)))),window.location.hash!==o&&(window.location.hash=o)}}function Ph(){const s=document.getSelection();if(!(s!=null&&s.rangeCount))return()=>{};let e=document.activeElement;const t=[];for(let i=0;i{s.type==="Caret"&&s.removeAllRanges(),s.rangeCount||t.forEach(i=>s.addRange(i)),e&&e.focus()}}const Ju={"text/plain":"Text","text/html":"Url",default:"Text"},Wh="Copy to clipboard: #{key}, Enter";function Jh(s){const e=`${/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl"}+C`;return s.replace(/#{\s*key\s*}/g,e)}function E4(s,e){let t,i,r,o,n=!1;e=e||{};const M=e.debug||!1;try{if(t=Ph(),i=document.createRange(),r=document.getSelection(),o=document.createElement("span"),o.textContent=s,o.ariaHidden="true",o.style.all="unset",o.style.position="fixed",o.style.top="0px",o.style.clip="rect(0, 0, 0, 0)",o.style.whiteSpace="pre",o.style.userSelect="text",o.addEventListener("copy",l=>{var N,u,L,g;if(l.stopPropagation(),e!=null&&e.format)if(l.preventDefault(),typeof l.clipboardData>"u"){M&&console.warn("unable to use e.clipboardData"),M&&console.warn("trying IE specific stuff"),(N=window.clipboardData)==null||N.clearData();const j=Ju[e.format]||Ju.default;(u=window.clipboardData)==null||u.setData(j,s)}else(L=l.clipboardData)==null||L.clearData(),(g=l.clipboardData)==null||g.setData(e.format,s)}),document.body.appendChild(o),i.selectNodeContents(o),r==null||r.addRange(i),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");n=!0}catch(c){M&&console.error("unable to copy using execCommand: ",c),M&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",s),n=!0}catch(l){M&&console.error("unable to copy using clipboardData: ",l),M&&console.error("falling back to prompt");const N=Jh("message"in e?e.message||"":Wh);window.prompt(N,s)}}finally{r&&(i&&typeof r.removeRange=="function"?r.removeRange(i):r.removeAllRanges()),o&&document.body.removeChild(o),t&&t()}return n}class D{static translations={};static unknownTranslations=[];static lang=window.sysLang||"en";static _disableWarning=!1;static setLanguage(e){e&&(D.lang=e)}static extendTranslations(e,t){if(e.prefix){const i=e;if(typeof i.prefix=="string"){const r=i.prefix;delete i.prefix,Object.keys(i).forEach(o=>{const n=o,M={},c=i[n];Object.keys(c).forEach(l=>{l&&c&&(l.startsWith(r)?M[l]=c[l]:M[`${r}${l}`]=c[l])}),e[n]=M})}else console.warn("Found prefix in translations, but it is not a string")}try{if(!t)e.en&&e.de&&e.ru?Object.keys(e).forEach(i=>{const r=i;D.translations[r]||={},Object.assign(D.translations[r],e[r])}):Object.keys(e).forEach(i=>{const r=e[i];Object.keys(r).forEach(o=>{const n=o,M=D.translations[n];M?M[i]?M[i]!==r[n]&&console.warn(`Translation for word "${i}" in "${n}" was ignored: existing = "${M[i]}", new = ${r[n]}`):M[i]=r[n]:console.warn(`Used unknown language: ${n}`)})});else{D.translations[t]||console.warn(`Used unknown language: ${t}`),D.translations[t]||={};const i=D.translations[t];Object.keys(e).forEach(r=>{i[r]?i[r]!==e[r]&&console.warn(`Translation for word "${r}" in "${t}" was ignored: existing = "${i[r]}", new = ${e[r]}`):i[r]=e[r]})}}catch(i){console.error(`Cannot apply translations: ${i}`)}}static setTranslations(e){e&&(D.translations=e)}static getLanguage(){return D.lang}static t(e,...t){const i=D.translations[D.lang];if(i){const r=i[e];if(r)e=r;else if(D.unknownTranslations.includes(e)||(D.unknownTranslations.push(e),!D._disableWarning&&console.log(`Translate: ${e}`)),D.lang!=="en"&&D.translations.en){const o=D.translations.en[e];o&&(e=o)}}for(const r of t)e=e.replace("%s",r);return e}static i18nShow(e){const t={};e?typeof e=="string"?(D.unknownTranslations.forEach(i=>{i.startsWith(e)&&(t[i]=i.replace(e,""))}),console.log(JSON.stringify(t,null,2))):e&&typeof e=="object"&&(D.unknownTranslations.forEach(i=>{e.test(i)&&(t[i]=i)}),console.log(JSON.stringify(t,null,2))):(D.unknownTranslations.forEach(i=>t[i]=i),console.log(JSON.stringify(t,null,2)))}static disableWarning(e){D._disableWarning=!!e}}window.i18nShow=D.i18nShow;window.i18nDisableWarning=D.disableWarning;const Dt="material",Bh=["Su","Mo","Tu","We","Th","Fr","Sa"],Rh=["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Cn={0:"0x00 - good",1:"0x01 - general problem",2:"0x02 - no connection problem",16:"0x10 - substitute value from controller",32:"0x20 - substitute initial value",64:"0x40 - substitute value from device or instance",128:"0x80 - substitute value from sensor",17:"0x11 - general problem by instance",65:"0x41 - general problem by device",129:"0x81 - general problem by sensor",18:"0x12 - instance not connected",66:"0x42 - device not connected",130:"0x82 - sensor not connected",68:"0x44 - device reports error",132:"0x84 - sensor reports error"},Bu={JVBERi0:"pdf",R0lGODdh:"gif",R0lGODlh:"gif",iVBORw0KGgo:"png","/9j/":"jpg",PHN2Zw:"svg",Qk1:"bmp",AAABAA:"ico"};class m{static namespace=Dt;static INSTANCES="instances";static dateFormat=["DD","MM"];static FORBIDDEN_CHARS=/[^._\-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu;static CapitalWords(e){return(e||"").split(/[\s_]/).filter(t=>t).map(t=>t?t[0].toUpperCase()+t.substring(1).toLowerCase():"").join(" ")}static formatSeconds(e){const t=Math.floor(e/86400);e%=3600*24;const i=Math.floor(e/3600).toString().padStart(2,"0");e%=3600;const r=Math.floor(e/60).toString().padStart(2,"0");e%=60;const o=Math.floor(e).toString().padStart(2,"0");let n="";return t&&(n+=`${t} ${D.t("ra_daysShortText")} `),n+=`${i}:${r}:${o}`,n}static getObjectName(e,t,i,r,o){var c;const n=e[t];let M;if(typeof i=="string"&&!r&&(r={language:i},i=null),r=r||{},r.language||(r.language=e["system.config"]&&e["system.config"].common&&e["system.config"].common.language||window.sysLang||"en"),i!=null&&i.name){const l=i.name;typeof l=="object"?M=r.language&&l[r.language]||l.en:M=l}else if(o&&((c=n==null?void 0:n.common)!=null&&c.desc)){const l=n.common.desc;typeof l=="object"?M=r.language&&l[r.language]||l.en||l.de||l.ru||"":M=l,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else if(!o&&(n!=null&&n.common)){const l=n.common.name||n.common.desc;l&&typeof l=="object"?M=r.language&&l[r.language]||l.en||l.de||l.ru||"":M=l,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else{const l=t.lastIndexOf(".");M=t.substring(l+1).replace(/[_.]/g," "),M=m.CapitalWords(M)}return(M==null?void 0:M.trim())||""}static getObjectNameFromObj(e,t,i,r,o){var c,l;const n=e;let M=(e==null?void 0:e._id)||"";if(typeof t=="string"&&!i&&(i={language:t},t=null),i=i||{},t!=null&&t.name){const N=t.name;typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N}else if(r&&((c=n==null?void 0:n.common)!=null&&c.desc)){const N=n.common.desc;typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else if(!r&&((l=n==null?void 0:n.common)!=null&&l.name)){let N=n.common.name;!N&&n.common.desc&&(N=n.common.desc),typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}return o?M:M.trim()}static getSettingsOrder(e,t,i){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[Dt];const n=i.user||"admin";if(o&&o[n]){if(t){if(o[n].subOrder&&o[n].subOrder[t])return JSON.parse(JSON.stringify(o[n].subOrder[t]))}else if(o[n].order)return JSON.parse(JSON.stringify(o[n].order))}}return null}static getSettingsCustomURLs(e,t,i){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[Dt];const n=i.user||"admin";if(o&&o[n]){if(t){if(o[n].subURLs&&o[n].subURLs[t])return JSON.parse(JSON.stringify(o[n].subURLs[t]))}else if(o[n].URLs)return JSON.parse(JSON.stringify(o[n].URLs))}}return null}static reorder(e,t,i){const r=Array.from(e),[o]=r.splice(t,1);return r.splice(i,0,o),r}static getSettings(e,t,i){let r;const o=(e==null?void 0:e._id)||(t==null?void 0:t.id);let n;if(e&&Object.prototype.hasOwnProperty.call(e,"common")?n=e.common:n=e,n!=null&&n.custom?(r=n.custom,r=r[Dt]&&r[Dt][t.user||"admin"]?JSON.parse(JSON.stringify(r[Dt][t.user||"admin"])):{enabled:!0}):r={enabled:i===void 0?!0:i,useCustom:!1},Object.prototype.hasOwnProperty.call(r,"enabled")||(r.enabled=i===void 0?!0:i),t&&(!r.name&&t.name&&(r.name=t.name),!r.icon&&t.icon&&(r.icon=t.icon),!r.color&&t.color&&(r.color=t.color)),n&&(!r.color&&n.color&&(r.color=n.color),!r.icon&&n.icon&&(r.icon=n.icon),!r.name&&n.name&&(r.name=n.name)),typeof r.name=="object"&&(r.name=t.language&&r.name[t.language]||r.name.en,r.name=(r.name||"").toString().replace(/_/g," "),r.name===r.name.toUpperCase()&&(r.name=r.name[0]+r.name.substring(1).toLowerCase())),!r.name&&o){const M=o.lastIndexOf(".");r.name=o.substring(M+1).replace(/[_.]/g," "),r.name=(r.name||"").toString().replace(/_/g," "),r.name=m.CapitalWords(r.name)}return r}static setSettings(e,t,i){if(e){e.common=e.common||{},e.common.custom=e.common.custom||{},e.common.custom[Dt]=e.common.custom[Dt]||{},e.common.custom[Dt][i.user||"admin"]=t;const r=e.common.custom[Dt][i.user||"admin"];return r.useCommon&&(r.color!==void 0&&(e.common.color=r.color,delete r.color),r.icon!==void 0&&(e.common.icon=r.icon,delete r.icon),r.name!==void 0&&(typeof e.common.name!="object"&&i.language?e.common.name={[i.language]:r.name}:typeof e.common.name=="object"&&i.language&&(e.common.name[i.language]=r.name),delete r.name)),!0}return!1}static getIcon(e,t){return e!=null&&e.icon?e.icon.length<=2?a.createElement("span",{style:t||{}},e.icon):e.icon.startsWith("data:image")?a.createElement("img",{alt:e.name,src:e.icon,style:t||{}}):a.createElement("img",{alt:e.name,src:(e.prefix||"")+e.icon,style:t}):null}static getObjectIcon(e,t){var i;if(typeof e=="object"&&(t=e,e=t==null?void 0:t._id),(i=t==null?void 0:t.common)!=null&&i.icon){let r=t.common.icon;if(typeof r=="string"&&r.length<=2||r.startsWith("data:image"))return r;const o=e.split(".");return o[0]==="system"?r=`adapter/${o[2]}${r.startsWith("/")?"":"/"}${r}`:r=`adapter/${o[0]}${r.startsWith("/")?"":"/"}${r}`,window.location.pathname.match(/adapter\/[^/]+\/[^/]+\.html/)?r=`../../${r}`:window.location.pathname.match(/material\/[.\d]+/)?r=`../../${r}`:window.location.pathname.match(/material\//)&&(r=`../${r}`),r}return null}static splitCamelCase(e){return e?m.CapitalWords(e):""}static isUseBright(e,t){if(!e)return t===void 0?!0:t;e=e.toString(),e.startsWith("#")&&(e=e.slice(1));let i,r,o;const n=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(n&&n.length===4)i=parseInt(n[1],10),r=parseInt(n[2],10),o=parseInt(n[3],10);else{if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===8)e=e.substring(0,6);else if(e.length!==6)return!1;i=parseInt(e.slice(0,2),16),r=parseInt(e.slice(2,4),16),o=parseInt(e.slice(4,6),16)}return i*.299+r*.587+o*.114<=186}static getTimeString(e){if(e=parseFloat(e),Number.isNaN(e))return"--:--";const t=Math.floor(e/3600),i=Math.floor(e%3600/60).toString().padStart(2,"0"),r=(e%60).toString().padStart(2,"0");return t?`${t}:${i}:${r}`:`${i}:${r}`}static getWindDirection(e){return e>=0&&e<11.25?"N":e>=11.25&&e<33.75?"NNE":e>=33.75&&e<56.25?"NE":e>=56.25&&e<78.75?"ENE":e>=78.75&&e<101.25?"E":e>=101.25&&e<123.75?"ESE":e>=123.75&&e<146.25?"SE":e>=146.25&&e<168.75?"SSE":e>=168.75&&e<191.25?"S":e>=191.25&&e<213.75?"SSW":e>=213.75&&e<236.25?"SW":e>=236.25&&e<258.75?"WSW":e>=258.75&&e<281.25?"W":e>=281.25&&e<303.75?"WNW":e>=303.75&&e<326.25?"NW":e>=326.25&&e<348.75?"NNW":"N"}static padding(e){return typeof e=="string"?e.length<2?`0${e}`:e:e<10?`0${e}`:e.toString()}static setDataFormat(e){e&&(m.dateFormat=e.toUpperCase().split(/[.-/]/),m.dateFormat.splice(m.dateFormat.indexOf("YYYY"),1))}static date2string(e){if(typeof e=="string"){if(e=e.trim(),!e)return"";if(e.match(/^[\w\s]+$/))return e;const i=e.match(/(\d{1,4})[-./](\d{1,2})[-./](\d{1,4})/);if(i){const r=[parseInt(i[1],10),parseInt(i[2],10),parseInt(i[3],10)],o=r.find(n=>n>31);if(o!==void 0){r.splice(r.indexOf(o),1);const n=r.find(M=>M>12);n?(r.splice(r.indexOf(n),1),e=new Date(o,r[0]-1,n)):m.dateFormat[0][0]==="M"&&m.dateFormat[1][0]==="D"?(e=new Date(o,r[0]-1,r[1]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[1]-1,r[0]))):m.dateFormat[0][0]==="D"&&m.dateFormat[1][0]==="M"?(e=new Date(o,r[1]-1,r[0]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[0]-1,r[1]))):e=new Date(e)}else e=new Date(e)}else e=new Date(e)}else e=new Date(e);let t=D.t(`ra_dow_${Bh[e.getDay()]}`).replace("ra_dow_","");return t+=`. ${e.getDate()} ${D.t(`ra_month_${Rh[e.getMonth()]}`).replace("ra_month_","")}`,t}static renderTextWithA(e){let t=e.match(/||[^<]+<\/b>|[^<]+<\/i>/);if(t){const i=[];let r=1;do{const o=e.substring(0,t.index);if(e=e.substring((t.index||0)+t[0].length),o&&i.push(a.createElement("span",{key:`a${r++}`},o)),t[0].startsWith(""))i.push(a.createElement("b",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith(""))i.push(a.createElement("i",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith("([^<]*)||[^<]+<\/b>|[^<]+<\/i>/):null,!t&&e&&i.push(a.createElement("span",{key:`a${r++}`},e))}while(t);return i}return e}static getSmartName(e,t,i,r){var n,M;if(!t){if(!r)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const c=e;return(n=c==null?void 0:c.common)!=null&&n.custom&&c.common.custom[i]?c.common.custom[i].smartName:void 0}if(!r)return e[t].common.smartName;const o=e[t];return(M=o==null?void 0:o.common)!=null&&M.custom&&o.common.custom[i]&&o.common.custom[i].smartName||null}static getSmartNameFromObj(e,t,i){var o,n;if(!i)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const r=(n=(o=e==null?void 0:e.common)==null?void 0:o.custom)==null?void 0:n[t];return r?r.smartName:void 0}static enableSmartName(e,t,i){const r=e;i?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName={}):r.common.smartName={}}static removeSmartName(e,t,i){var o,n;const r=e;i?(n=(o=r==null?void 0:r.common)==null?void 0:o.custom)!=null&&n[t]&&(r.common.custom[t]=null):r.common.smartName=null}static updateSmartName(e,t,i,r,o,n){var l,N;const M=D.getLanguage(),c=e;if(typeof c.common.smartName=="string"){const u=c.common.smartName;c.common.smartName={},c.common.smartName[M]=u}if((l=c.native)!=null&&l.byON){delete c.native.byON;let u=c.common.smartName;u&&typeof u!="object"&&(u={en:u,[M]:u}),c.common.smartName=u}if(r!==void 0&&(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},r?c.common.custom[o].smartName.smartType=r:delete c.common.custom[o].smartName.smartType):(c.common.smartName||={},r?c.common.smartName.smartType=r:delete c.common.smartName.smartType)),i!==void 0&&(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},c.common.custom[o].smartName.byON=i):(c.common.smartName||={},c.common.smartName.byON=i)),t!==void 0){let u;if(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},u=c.common.custom[o].smartName):(c.common.smartName||={},u=c.common.smartName),u[M]=t,u&&(!u[M]||u[M]===c.common.name&&!c.common.role)){delete u[M];let L=!0;for(const g in u)if(Object.prototype.hasOwnProperty.call(u,g)){L=!1;break}if(L)if(n&&((N=c.common.custom)!=null&&N[o]))c.common.custom[o].smartName.byON===void 0?delete c.common.custom[o]:(delete c.common.custom[o].en,delete c.common.custom[o].de,delete c.common.custom[o].ru,delete c.common.custom[o].nl,delete c.common.custom[o].pl,delete c.common.custom[o].it,delete c.common.custom[o].fr,delete c.common.custom[o].pt,delete c.common.custom[o].es,delete c.common.custom[o].uk,delete c.common.custom[o]["zh-cn"]);else if(c.common.smartName&&c.common.smartName.byON!==void 0){const g=c.common.smartName;delete g.en,delete g.de,delete g.ru,delete g.nl,delete g.pl,delete g.it,delete g.fr,delete g.pt,delete g.es,delete g.uk,delete g["zh-cn"]}else c.common.smartName=null}}}static updateSmartNameEx(e,t){var o,n,M,c;const i=D.getLanguage(),r=e;if(typeof r.common.smartName=="string"){const l=r.common.smartName;r.common.smartName={},r.common.smartName[i]=l}if((o=r.native)!=null&&o.byON){delete r.native.byON;let l=r.common.smartName;l&&typeof l!="object"&&(l={en:l,[i]:l}),r.common.smartName=l}if(t.smartType!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},t.smartType?r.common.custom[t.instanceId].smartName.smartType=t.smartType:delete r.common.custom[t.instanceId].smartName.smartType):(r.common.smartName||={},t.smartType?r.common.smartName.smartType=t.smartType:delete r.common.smartName.smartType)),t.byON!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.byON=t.byON):(r.common.smartName||={},r.common.smartName.byON=t.byON)),t.noAutoDetect!==void 0&&(t.noCommon?t.noAutoDetect?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.noAutoDetect=t.noAutoDetect):(M=(n=r.common.custom)==null?void 0:n[t.instanceId])!=null&&M.smartName&&delete r.common.custom[t.instanceId].smartName.noAutoDetect:!t.noAutoDetect&&r.common.smartName?delete r.common.smartName.noAutoDetect:(r.common.smartName||={},r.common.smartName.noAutoDetect=t.noAutoDetect)),t.smartName!==void 0){let l;if(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},l=r.common.custom[t.instanceId].smartName):(r.common.smartName||={},l=r.common.smartName),l[i]=t.smartName,l&&(!l[i]||l[i]===r.common.name&&!r.common.role)){delete l[i];let N=!0;for(const u in l)if(Object.prototype.hasOwnProperty.call(l,u)){N=!1;break}if(N)if(t.noCommon&&((c=r.common.custom)!=null&&c[t.instanceId]))r.common.custom[t.instanceId].smartName.byON===void 0?delete r.common.custom[t.instanceId]:(delete r.common.custom[t.instanceId].en,delete r.common.custom[t.instanceId].de,delete r.common.custom[t.instanceId].ru,delete r.common.custom[t.instanceId].nl,delete r.common.custom[t.instanceId].pl,delete r.common.custom[t.instanceId].it,delete r.common.custom[t.instanceId].fr,delete r.common.custom[t.instanceId].pt,delete r.common.custom[t.instanceId].es,delete r.common.custom[t.instanceId].uk,delete r.common.custom[t.instanceId]["zh-cn"]);else if(r.common.smartName&&r.common.smartName.byON!==void 0){const u=r.common.smartName;delete u.en,delete u.de,delete u.ru,delete u.nl,delete u.pl,delete u.it,delete u.fr,delete u.pt,delete u.es,delete u.uk,delete u["zh-cn"]}else r.common.smartName=null}}}static disableSmartName(e,t,i){const r=e;i?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName=!1):r.common.smartName=!1}static copyToClipboard(e,t){return t&&(t.stopPropagation(),t.preventDefault()),E4(e)}static getFileExtension(e){const t=(e||"").lastIndexOf(".");return t!==-1?e.substring(t+1).toLowerCase():null}static formatBytes(e){if(Math.abs(e)<1024)return`${e} B`;const t=["KB","MB","GB"];let i=-1;do e/=1024,++i;while(Math.abs(e)>=1024&&i186?`#000000${i||""}`:`#FFFFFF${i||""}`;const M=(255-r).toString(16),c=(255-o).toString(16),l=(255-n).toString(16);return`#${M.padStart(2,"0")}${c.padStart(2,"0")}${l.padStart(2,"0")}${i||""}`}static color2rgb(e){if(e==null||e===""||typeof e!="string")return!1;if(e.startsWith("rgba")){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),\s*([.\d]+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else if(e.startsWith("rgb")){const t=e.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else e.startsWith("#")&&(e=e.slice(1));return e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length!==6&&e.length!==8?(console.warn(`Cannot invert color: ${e}`),!1):[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}static rgb2lab(e){let t=e[0]/255,i=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=(t*.4124+i*.3576+r*.1805)/.95047,n=t*.2126+i*.7152+r*.0722,M=(t*.0193+i*.1192+r*.9505)/1.08883;return o=o>.008856?o**.33333333:7.787*o+.137931,n=n>.008856?n**.33333333:7.787*n+.137931,M=M>.008856?M**.33333333:7.787*M+.137931,[116*n-16,500*(o-n),200*(n-M)]}static colorDistance(e,t){const i=m.color2rgb(e),r=m.color2rgb(t);if(!i||!r)return 0;const o=m.rgb2lab(i),n=m.rgb2lab(r),M=o[0]-n[0],c=o[1]-n[1],l=o[2]-n[2],N=Math.sqrt(o[1]*o[1]+o[2]*o[2]),u=Math.sqrt(n[1]*n[1]+n[2]*n[2]),L=N-u;let g=c*c+l*l-L*L;g=g<0?0:Math.sqrt(g);const j=1+.045*N,y=1+.015*N,T=M,d=L/j,I=g/y,w=T*T+d*d+I*I;return w<0?0:w}static _toVal(e){let t,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e))for(let r=0;r{if(i=i.trim(),i){const r=i.split("="),o=decodeURIComponent(r[0]).trim();if(r.length>1){const n=decodeURIComponent(r[1]);if(n==="true")t[o]=!0;else if(n==="false")t[o]=!1;else{const M=parseFloat(n);M.toString()===n?t[o]=M:t[o]=n}}else t[o]=!0}}),t}static getParentId(e){const t=(e||"").toString().split(".");return t.length>1?(t.pop(),t.join(".")):null}static formatDate(e,t){if(!e)return"";let i;const r=(e.getMonth()+1).toString().padStart(2,"0"),o=e.getDate().toString().padStart(2,"0");return t==="MM/DD/YYYY"?i=`${r}/${o}/${e.getFullYear()}`:i=`${e.getFullYear()}-${r}-${o}`,i+=` ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`,i}static formatTime(e){if(e){e=Math.round(e);const t=Math.floor(e/(3600*24)),i=Math.floor(e%(3600*24)/3600),r=Math.floor(e%3600/60),o=e%60;return t?`${t}.${i.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:i?`${i}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`0:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}return"0:00:00"}static MDtext2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static MDgetTitle(e){var o;const t=m.MDextractHeader(e),i=t.header;let r=t.body;if(!i.title){r=r.replace(/{[^}]*}/g,""),r=r.trim();const n=r.replace(/\r/g,"").split(` +}`;function Uh(s){const e=s.themeType||"dark",t=s.size||270,i=t*1.5,r=t*14/270,o=t*280/270;return a.useEffect(()=>{if(!window.document.getElementById(Wu)){const n=window.document.createElement("style");n.setAttribute("id",Wu),n.innerHTML=bh,window.document.head.appendChild(n)}},[]),a.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{position:"relative",width:i,height:i,display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("div",{style:{position:"absolute",top:-r,left:-r,right:-r,bottom:-r,border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.50)`,borderRadius:"50%",animation:"loaderHA-spin 3.6s linear infinite"}}),a.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.75)`,borderRadius:"50%",animation:"loaderHA-spin 2.2s linear infinite"}}),a.createElement("div",{style:{width:t,height:t,zIndex:1,display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 69.6 148.1",style:{width:"100%",height:"100%"}},a.createElement("path",{fill:"#db0a33",d:"M69.5,100.6c0-.4,0-.8-.2-1.1v-.7c-.2-.4-.3-.8-.5-1.2,0-.2-.2-.5-.3-.7,0,0,0-.2,0-.2,0-.2,0-.3-.2-.5l-.4-.7-.4-.6c-1-1.6-2.4-3-4.2-4.3-.3-.2-.6-.4-.9-.6,0,0-.2,0-.3-.2-.3-.2-.6-.3-.9-.5-.2,0-.3-.2-.5-.3-.3-.2-.6-.3-.9-.5,0,0-.2,0-.3-.2-1-2.7-2.4-4.9-3.8-6.7h0c2.5,0,6.6-.3,7.5-3,3.5-3,2.5-9.7,2.5-10,0-.6-.2-1.1-.4-1.7h0v-.3c.5-3-.4-7.1-.5-7.7h0l-.3-1.1c0-.3-.2-.7-.4-1,0-.4-.3-.7-.4-1,0-.3-.3-.7-.5-1s-.4-.7-.6-1c-.2-.3-.4-.6-.6-.9l-.4-.4-.4-.4-.4-.4c0,0-.3-.3-.5-.4-.3-.2-.6-.4-1-.6-.2,0-.4-.2-.5-.2-.2,0-.4,0-.6-.2-.2,0-.4,0-.6,0h-1.8c-.4,0-.8,0-1.1.2-.4,0-.7.2-1.1.4h0c-1.6-.2-2.6-1-3.1-1.7h0c2-.9,3.5-1.9,4.6-3,2.6-2.2,4-5.1,4.7-7.2,3.4-1.1,5.4-4,5.4-4h0c4.6-5.3,1.2-15.1,1.2-15.1,0,0-.8,4.2-4,5.5,0-.3-.2-.6-.3-1.1s-.3-1.1-.6-1.7c-.2-.7-.5-1.4-.9-2.2-.4-.8-.8-1.6-1.4-2.4-.5-.8-1.2-1.7-1.9-2.5h0C59.2,6.6,49.2.3,49.2.3c0,0,3.3,5.8,1.3,9.9,0,0-3.5-.8-5.7-.8s-2.4.1-3.5.3c-.5.1-1.1.2-1.6.3-.3,0-.5.1-.8.2-.2,0-.5.1-.7.2-.5.1-.9.2-1.3.4-.4.1-.8.3-1.2.4-.4.1-.7.2-1,.3s-.6.2-.9.3h-.2c-2-2.8-3.7-7.5,1.8-11.9,0,0-13,5.3-8.2,17,0,0,0,.2-.1.4h0c-.3.3-.6.7-1,1.3-.3.6-.7,1.3-.9,2.1-.1.4-.2.8-.2,1.3v1.5c-.2-.1-.5-.2-.9-.4-1.7-.8-1.7-2.8-1.7-2.8-1.1,8.3,4.2,13.3,5.2,14.1,0,.4,0,.7-.2,1v.4c-.2,0-.3.3-.4.5-.1.4-.2.7-.3,1.1-.1.7-.1,1.5,0,2.2s.3,1.4.5,2c.3.6.6,1.2.9,1.7,0,0,0,0,.1.2.4.6,1,1.4,2,2h.1c.2,0,.8.5,1.7.7.2.2,1.5,1.7,3.1,2.1-.2,1.1-1,2.8-3.4,3.7,0,0-14.2-.4-13.2,13.5-6.6,8.7-3.8,13.4-3.8,13.4-.9.6-.9,1.9-.5,3,0,0,0,.3.2.5,0,0,0,0,.3.4.3.4.6.7,1,.8,1.1.7,3.1,1.5,6.4,1.1.2.3,1.3,1.8,1.3,2.2.5,2.3,1.2,4.5,1.3,6.8l.2,1.3c-2.2-.2-11-.2-16.6,9.1,0,0-.2.2-.2.4l-.5.9-.6,1.2h0c-.3.7-.7,1.7-1.1,2.8-.5.4-1.2,0-1.7-.3-.4-.4-.7-.7-.9-1.1,0,0,0-.2,0-.3v-.2s0-.2-.2-.2h0c0,0,0,0-.2-.2h-.4s-.2,0-.2,0c-.2,0-.2.2-.3.3,0,0-.1.2-.2.2,0,.2-.2.3-.2.5-.2.6-.4,1.2-.6,1.8-.6,2.4-.6,4.9-.1,7.3.2,1.2.6,2.4,1.1,3.5.5,1.1,1.2,2.1,2,3.1.8.9,1.7,1.8,2.7,2.5s2,1.3,3.1,1.8h0l.6.4-.3-.7c-.2-.4-.3-.9-.5-1.3-.1-.4-.2-.9-.3-1.3-.1-.9-.2-1.8,0-2.7,0-.4.2-.8.4-1.2.2-.4.4-.7.7-1.1.6-.8,1-1.6,1.5-2.5.4-.9.8-1.8,1.1-2.7.1-.5.3-1,.3-1.5v-.9h0c.1-2.3-1.9-3-3-2.9-.9,0-1.7.2-2,.2.7-1.3,1.3-2.4,2-3.4h0c.2-.4.4-.6.6-.9.4-.5.8-1,1.2-1.5.1,0,.2-.3.3-.4h0c.1,0,.2-.2.3-.4.1,0,.2-.3.4-.4,6.5-6.5,12.5-2.9,12.5-2.9,0,0,1.1,3.7,1.6,4.6h0c1,2.3,2.7,4.6,4.1,6.9h0c0,0,0,4.8,2.2,7.2.5.6,1.1,1.3,1.7,2.2.3.5.5,1,.7,1.4.2.3.3.6.4.9.3.4.5.8.8,1.3s.6,1,.8,1.6c.2.5.4,1,.6,1.5,0,0,1,5.1.7,7.4-3.3.9-5.5,2.4-7.4,3.2-1,.3-3.4,2-5.5,1.9h-.5c0,.1-3.6.3-2.7,3.1,0,0,.2,3.6,5.8,2.9,1.8-.1,7.5-.5,9.1-.3,1.6.2,2.8.2,3.7.1,1.3,0,3.8,0,5.3-.4.4,1.8,3.2,2.4,6,1.5,3.6,1.6,13.5,2,15.6-1.6,2.4-4.1-2.4-8.6-4.1-12.6-3.8-9.3-.8-14-1.6-16.8,0-.7-.2-1.8-.4-3.2.8-.4,1.5-.8,2.2-1.3,1-.7,1.7-1.4,2.3-2.1l.2-.2c0,0,.2-.3.3-.4l.6-.9.6-1.2.4-1.1.3-1.2v-.8c0-.3,0-.5,0-.7h0v-2.4h.2ZM52.6,131.9c-.3.4-.7.9-1.2,1.6-1-.6-2.7-2.2-3.3-4.3,0-.2,0-.3-.2-.5-1.1-6.9-2.6-9.7-3.2-10.6-1-3.7-1.7-7.4-1.3-9.6,0,0,3.6,8.2,6.4,10,0,0,3.7,8.5,4.5,9.9.6,1-.9,2.3-1.7,3.5ZM63.6,102.7h0v.2h0v.9c0,0-.3.4-.3.4,0,0,0,.2,0,.3v.2h0v.2h0l-.2.2c-.3.6-.8,1.1-1.3,1.5h0c-.3-2.4-.6-5.1-.8-8.2.2-.5.3-1.1.4-1.7l.2.2c.2.2.4.4.5.6.2.2.3.4.5.7,0,.2.3.4.4.7h0c0,.3.2.5.3.7,0,.2.2.5.2.7h0v.3c0,.2,0,.4,0,.6v.7h0v.7h0Z"}))),a.createElement("div",{style:{position:"absolute",width:o,zIndex:2,top:"57.5%",left:"50%",transform:"translate(-50%, -155%)"}},a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 7152 512",width:"100%",height:"auto"},a.createElement("path",{fill:"#fff",d:"M4566 0h1053v5h25c2 5 2 5 1 8h16q3 3 2 7l3 1 4 1 2 7h2l12 1q3 1 2 6v3h7q3 4 2 10v6h3l4 1 1 8 3-1 5 2 1 7 7 1 1 14v2h3q3 0 5 2l1 9v22l3 1 4 1 1 7v41q0 3-3 5l-5 1v26q1 3-2 5h-8l1 2v8l-1 8h-8v16q-3 3-7 2l-1 3-2 5h-6v6l-1 11h-7l-1 8-10 1h-6l-1 3-1 4-7 2v3l-2 4h-16l1 2-2 6h-15v3l-3 6-10 1h-11l-10 2q1 3-2 5l-8 1h-796l-4-1-2-7h-2q-7 0-14-2v-8h-8l-1-7h-3l-4-1q-2-5-2-10v-62l2-6 7-1v-3l2-4h7v-8l5-1h3v-3l1-5q3-2 8-1h57l140-1h602v-3l2-4h7l1-8 8-1v-31l-7-1q-2-2-2-5v-2l-3-1q-5 0-6-4v-5h-3l-11 1-2-2v-7h-917l-1 8-23 1h-14l-5-1v7l-9 3h-7l-1 3-1 4-9 1h-6l-1 3-2 5h-6v3q0 3-2 5l-6 1v3q0 3-4 5h-5v15l-2 2h-7v16h-8v110h8v24h6l3 3v5l3 1q4 0 6 4l-1 5 9 2v6h3q3 0 5 2l1 6h2l5 1q2 4 0 8h2q12-3 23 1l1 5v3l2-1h1069l9 1 1 8h18l7 2 1 6h3q3 0 5 4l1 5h3q3 0 5 4v12l3 1 5 2v21l1 17v3l-1 8-5 3-3 1v8l-2 7h-8l1 2-1 6h-16v5H4571v-5h-42v-8h-16q-2-3-2-7h-7l-4-1q-3 1-5-2v-7l-2 1h-8q-4 0-7-2l-1-8-3 1h-3q-2-1-2-6v-3h-3q-5 1-6-2l1-6h-3l-6-2-1-6h-3q-3 0-5-4v-6l-3 1h-3q-3-4-3-10v-7l-8-1 1-8h-9l-1-7v-2l1-8h-7q-2-3-2-8v-18l-2 1-6-2-1-9v-23h-2q-3 1-5-2V186l1-3h7v-32q3-4 8-3v-19q0-4 3-6h6l-1-2q-1-8 3-14h7v-7q3-2 7-2v-9c1-6 1-6 3-8h6v-3l1-5 7-1 1-3q1-5 3-5l6-1v-3q-1-3 2-5h6v-3q-1-3 2-5l6-1v-2l2-5 7-2 1-6 6-2 2 1v-3q-1-4 2-6l7-1h7v-3l2-4h16V5h34l-1-4zM1620 0h1065v5h23l3 1v6l15 1 2 6-1 2h7q3 3 3 8h3l5 3v7h3l5 1v7h3l5 1v7h3q4 0 6 2l1 6 3 1 5 2v15l8 2v24h7q3 4 2 10v395h-130V169l-7-2q-2-4-2-9v-6l-3-1-5-2v-15l-11 1-2-1-4-2v-7l-3 1h-17l-5-1v-8h-900v7c-4 4-14 2-19 2h-18l-5-1v3q1 5-2 6l-15 1h-4l-5-1v7q-3 3-7 2l-1 3-2 5h-7l1 3-2 5h-8v8l-4 1h-3v9c-1 6-1 6-3 8h-6v21l-1 3-7 1v83l7 1 1 3v22h3l5 1 1 15h3l4 2v7h7q3 4 2 9l9 2v6h3q3-1 5 2l1 6h11q3 0 5 2l1 6h4l12 2 1 7h714l8 2 1 5-1 2h18l8 2-1 6 9 1 1 9 7-1 1 9v3l1 6v7h3l4 2v33l-6 2-2-1v22l-2 4-7 1v3l-1 4h-8v5h-784v-5h-41c-2-5-2-5-1-8h-16q-2-3-2-7h-7l-4-1q-3 0-5-2v-7l-2 1h-4l-3-6v-3h-10q-3 0-7-2v-7h-3l-5-1-1-7h-3q-3 1-5-2l1-6-8-1q-2-5-2-11v-6h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-6-3-1q-5-1-5-3-2-8 0-14h-7q-2-5-2-10v-7l-2 1-4-1q-4-3-3-7v-18h-2q-3 1-5-2v-41h-7q-2-3-2-8V193q4-2 9-2v-41l5-1h3v-21l1-4 7-1v-10l2-6h7l-1-2q-1-7 2-15l8-1v-3l1-5h7V66q3-4 8-3v-3l3-5 6-1v-3l2-4h7v-7l6-2 2 1v-3q0-5 2-6l10-1h6l-1-2 1-4q4-3 9-2h7v-3q0-3 2-5h15l-1-3 3-5 7-1h25zM4137 0h130v392q1 3-2 5l-6 1v20l-1 4-7 2v2q1 7-2 13l-7 1v4c0 10 0 10-3 13h-6v3q1 3-2 5l-6 1v3l-2 4h-7v3l-2 6h-7v3q1 4-2 6h-6v3q1 3-2 5h-24v3l-1 5h-24l1 2v2q-3 2-6 1H3057v-5h-24l-2-6 1-2h-16l-1-5v-3h-9c-6 0-6 0-8-2l-1-7-3 1-5-3v-7l-2 1-6-2v-7h-7l-2-6 1-2h-3q-4 1-6-2v-6h-3l-4-1q-2-5-2-10v-7h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-7v-16h-3q-5-1-5-3l-1-7v-17l-2 1-6-2v-77c0-6 0-6 2-8h6v-27q-1-4 2-7l7-1v-11q-1-3 2-5l6-1v-7l1-4 1-5h7v-15q3-4 8-3l1-3 1-4 8-1v-3l1-5h7v-3q-1-4 2-6l6 1v-3q0-4 2-6l6-2v-2l3-5h15v-3q-1-3 2-5h15l-1-2 1-4 3-3h21l1-3q1-5 3-5l14-1h638v-2l2-6h148q3 0 5 2l1 6h13c7 0 7 0 11 2l2 7 7 1v8h7q3 5 2 12v66l-1 8-8 1v7q-3 3-7 2l-1 3-1 4-7 1h-211l-230 1h-333v3l-2 4h-24v7l-6 3q-4 3-4 7l-7 1v3q1 3-2 5h-7v3l-1 5h-7l1 49 6 1 1 5v3h8l1 6v3l-1 7h11q4-1 7 3v6l3-1 12 1q3 2 2 6v3l3-1h993l5 1v-3q-1-4 2-6l6-1v-3q0-3 4-5h6l-1-2 2-6h7v-3l2-14h5zM0 0h126l1 8v144l-1 5h932l106-1 7 1h4q3 0 5 2l2 6h52l5 2v7h9l8 1q2 4 1 8h2q7-2 14 1l1 7h11l5 1q2 4 1 8l3-1 5 3v7h8v16h7l4 8h2l5 3v23h3q3 0 5 2v24h7q3 7 2 14v137l-1 32v16q1 6-2 7h-5v7l-1 3-1 6h-16l1 3-1 2h-79v-4h-7l-3-1-6-1-1-8v-7h-6q-2-4-2-10V338h-3q-3 1-5-2l-1-9v-6h-3l-5-2v-16h-16l-2-6 1-2h-16l-1-1v-7H126l1 2v188c0 11 0 11-3 14h-7v15l-4 1h-12v5H22l-1-3 1-2h-3q-5 1-6-2v-5h-3l-5-2v-7H0zM6537 0h606v5l8 1 1 16v82l-3 4-8 1h-6v3l-1 4q-5 2-10 1h-509v3l-1 5q-13 2-24 0v3q1 5-2 6l-6 1h-4l-5-1v3l-1 5-7 2v8q0 6-2 7l-7 1v210c0 7 0 7-2 10h-7v32q-3 3-8 2v15q-2 3-5 2h-3v2q1 8-2 15l-7 1v7l-1 3-1 6h-7v7l-6 2-2-1v3q1 5-2 6l-9 2h-6v5q-4 3-9 2v3q1 3-2 5h-15l1 3-2 5h-33l1 3-1 2h-589v-5h-8v-8h-7l-3-10v-6l-3-1-4-1-1-7v-48l2-5 7-1v-10q-1-3 2-5 2-2 6-2l1-3 2-5h32v-7q6-3 12-2h498l8 1v-3q0-3 2-5l7-2h8l2-7 7-1v-11q0-3 2-5h6V167l1-8q4-4 8-3v-44l1-5h8V84l1-3h7V66l8-4v-2l3-5 6-1v-9l1-6h8v-8q8-3 15-2l1-3 3-5h6v-3q-1-3 2-5h15v-3q-1-3 2-5h24z"})))))}function $h(s){const e=window.vendorPrefix;return e==="PT"?a.createElement(Qh,{themeType:s.themeType}):e==="MV"?a.createElement(Eh,{themeType:s.themeType}):e==="NW"?a.createElement(_h,{themeType:"dark"}):e==="HA"?a.createElement(Uh,{themeType:"dark"}):e&&e!=="@@vendorPrefix@@"?a.createElement(Sh,{themeType:s.themeType}):a.createElement(vh,{themeType:s.themeType})}class nr extends De{onHashChangedBound;constructor(e){super(e),this.onHashChangedBound=this.onHashChanged.bind(this)}componentDidMount(){window.addEventListener("hashchange",this.onHashChangedBound)}componentWillUnmount(){window.removeEventListener("hashchange",this.onHashChangedBound)}onHashChanged(){}static getLocation(){let e=window.location.hash;e=e.replace(/^#/,"");const t=e.split("/").map(i=>{try{return i?decodeURIComponent(i):""}catch{return console.error(`Router: Cannot decode ${i}`),i}});return{tab:t[0]||"",dialog:t[1]||"",id:t[2]||"",arg:t[3]||""}}static doNavigate(e,t,i,r){let o="";const n=nr.getLocation();r!==void 0&&!i&&(i=n.id),i&&!t&&(t=n.dialog),(t&&!e||e===null)&&(e=n.tab),e&&(o=`#${e}`,t&&(o+=`/${t}`,i&&(o+=`/${i}`,r!==void 0&&(o+=`/${r}`)))),window.location.hash!==o&&(window.location.hash=o)}}function Ph(){const s=document.getSelection();if(!(s!=null&&s.rangeCount))return()=>{};let e=document.activeElement;const t=[];for(let i=0;i{s.type==="Caret"&&s.removeAllRanges(),s.rangeCount||t.forEach(i=>s.addRange(i)),e&&e.focus()}}const Ju={"text/plain":"Text","text/html":"Url",default:"Text"},Wh="Copy to clipboard: #{key}, Enter";function Jh(s){const e=`${/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl"}+C`;return s.replace(/#{\s*key\s*}/g,e)}function E4(s,e){let t,i,r,o,n=!1;e=e||{};const M=e.debug||!1;try{if(t=Ph(),i=document.createRange(),r=document.getSelection(),o=document.createElement("span"),o.textContent=s,o.ariaHidden="true",o.style.all="unset",o.style.position="fixed",o.style.top="0px",o.style.clip="rect(0, 0, 0, 0)",o.style.whiteSpace="pre",o.style.userSelect="text",o.addEventListener("copy",l=>{var N,u,L,g;if(l.stopPropagation(),e!=null&&e.format)if(l.preventDefault(),typeof l.clipboardData>"u"){M&&console.warn("unable to use e.clipboardData"),M&&console.warn("trying IE specific stuff"),(N=window.clipboardData)==null||N.clearData();const j=Ju[e.format]||Ju.default;(u=window.clipboardData)==null||u.setData(j,s)}else(L=l.clipboardData)==null||L.clearData(),(g=l.clipboardData)==null||g.setData(e.format,s)}),document.body.appendChild(o),i.selectNodeContents(o),r==null||r.addRange(i),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");n=!0}catch(c){M&&console.error("unable to copy using execCommand: ",c),M&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",s),n=!0}catch(l){M&&console.error("unable to copy using clipboardData: ",l),M&&console.error("falling back to prompt");const N=Jh("message"in e?e.message||"":Wh);window.prompt(N,s)}}finally{r&&(i&&typeof r.removeRange=="function"?r.removeRange(i):r.removeAllRanges()),o&&document.body.removeChild(o),t&&t()}return n}class D{static translations={};static unknownTranslations=[];static lang=window.sysLang||"en";static _disableWarning=!1;static setLanguage(e){e&&(D.lang=e)}static extendTranslations(e,t){if(e.prefix){const i=e;if(typeof i.prefix=="string"){const r=i.prefix;delete i.prefix,Object.keys(i).forEach(o=>{const n=o,M={},c=i[n];Object.keys(c).forEach(l=>{l&&c&&(l.startsWith(r)?M[l]=c[l]:M[`${r}${l}`]=c[l])}),e[n]=M})}else console.warn("Found prefix in translations, but it is not a string")}try{if(!t)e.en&&e.de&&e.ru?Object.keys(e).forEach(i=>{const r=i;D.translations[r]||={},Object.assign(D.translations[r],e[r])}):Object.keys(e).forEach(i=>{const r=e[i];Object.keys(r).forEach(o=>{const n=o,M=D.translations[n];M?M[i]?M[i]!==r[n]&&console.warn(`Translation for word "${i}" in "${n}" was ignored: existing = "${M[i]}", new = ${r[n]}`):M[i]=r[n]:console.warn(`Used unknown language: ${n}`)})});else{D.translations[t]||console.warn(`Used unknown language: ${t}`),D.translations[t]||={};const i=D.translations[t];Object.keys(e).forEach(r=>{i[r]?i[r]!==e[r]&&console.warn(`Translation for word "${r}" in "${t}" was ignored: existing = "${i[r]}", new = ${e[r]}`):i[r]=e[r]})}}catch(i){console.error(`Cannot apply translations: ${i}`)}}static setTranslations(e){e&&(D.translations=e)}static getLanguage(){return D.lang}static t(e,...t){const i=D.translations[D.lang];if(i){const r=i[e];if(r)e=r;else if(D.unknownTranslations.includes(e)||(D.unknownTranslations.push(e),!D._disableWarning&&console.log(`Translate: ${e}`)),D.lang!=="en"&&D.translations.en){const o=D.translations.en[e];o&&(e=o)}}for(const r of t)e=e.replace("%s",r);return e}static i18nShow(e){const t={};e?typeof e=="string"?(D.unknownTranslations.forEach(i=>{i.startsWith(e)&&(t[i]=i.replace(e,""))}),console.log(JSON.stringify(t,null,2))):e&&typeof e=="object"&&(D.unknownTranslations.forEach(i=>{e.test(i)&&(t[i]=i)}),console.log(JSON.stringify(t,null,2))):(D.unknownTranslations.forEach(i=>t[i]=i),console.log(JSON.stringify(t,null,2)))}static disableWarning(e){D._disableWarning=!!e}}window.i18nShow=D.i18nShow;window.i18nDisableWarning=D.disableWarning;const Dt="material",Bh=["Su","Mo","Tu","We","Th","Fr","Sa"],Rh=["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Cn={0:"0x00 - good",1:"0x01 - general problem",2:"0x02 - no connection problem",16:"0x10 - substitute value from controller",32:"0x20 - substitute initial value",64:"0x40 - substitute value from device or instance",128:"0x80 - substitute value from sensor",17:"0x11 - general problem by instance",65:"0x41 - general problem by device",129:"0x81 - general problem by sensor",18:"0x12 - instance not connected",66:"0x42 - device not connected",130:"0x82 - sensor not connected",68:"0x44 - device reports error",132:"0x84 - sensor reports error"},Bu={JVBERi0:"pdf",R0lGODdh:"gif",R0lGODlh:"gif",iVBORw0KGgo:"png","/9j/":"jpg",PHN2Zw:"svg",Qk1:"bmp",AAABAA:"ico"};class m{static namespace=Dt;static INSTANCES="instances";static dateFormat=["DD","MM"];static FORBIDDEN_CHARS=/[^._\-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu;static CapitalWords(e){return(e||"").split(/[\s_]/).filter(t=>t).map(t=>t?t[0].toUpperCase()+t.substring(1).toLowerCase():"").join(" ")}static formatSeconds(e){const t=Math.floor(e/86400);e%=3600*24;const i=Math.floor(e/3600).toString().padStart(2,"0");e%=3600;const r=Math.floor(e/60).toString().padStart(2,"0");e%=60;const o=Math.floor(e).toString().padStart(2,"0");let n="";return t&&(n+=`${t} ${D.t("ra_daysShortText")} `),n+=`${i}:${r}:${o}`,n}static getObjectName(e,t,i,r,o){var c;const n=e[t];let M;if(typeof i=="string"&&!r&&(r={language:i},i=null),r=r||{},r.language||(r.language=e["system.config"]&&e["system.config"].common&&e["system.config"].common.language||window.sysLang||"en"),i!=null&&i.name){const l=i.name;typeof l=="object"?M=r.language&&l[r.language]||l.en:M=l}else if(o&&((c=n==null?void 0:n.common)!=null&&c.desc)){const l=n.common.desc;typeof l=="object"?M=r.language&&l[r.language]||l.en||l.de||l.ru||"":M=l,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else if(!o&&(n!=null&&n.common)){const l=n.common.name||n.common.desc;l&&typeof l=="object"?M=r.language&&l[r.language]||l.en||l.de||l.ru||"":M=l,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else{const l=t.lastIndexOf(".");M=t.substring(l+1).replace(/[_.]/g," "),M=m.CapitalWords(M)}return(M==null?void 0:M.trim())||""}static getObjectNameFromObj(e,t,i,r,o){var c,l;const n=e;let M=(e==null?void 0:e._id)||"";if(typeof t=="string"&&!i&&(i={language:t},t=null),i=i||{},t!=null&&t.name){const N=t.name;typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N}else if(r&&((c=n==null?void 0:n.common)!=null&&c.desc)){const N=n.common.desc;typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else if(!r&&((l=n==null?void 0:n.common)!=null&&l.name)){let N=n.common.name;!N&&n.common.desc&&(N=n.common.desc),typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}return o?M:M.trim()}static getSettingsOrder(e,t,i){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[Dt];const n=i.user||"admin";if(o&&o[n]){if(t){if(o[n].subOrder&&o[n].subOrder[t])return JSON.parse(JSON.stringify(o[n].subOrder[t]))}else if(o[n].order)return JSON.parse(JSON.stringify(o[n].order))}}return null}static getSettingsCustomURLs(e,t,i){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[Dt];const n=i.user||"admin";if(o&&o[n]){if(t){if(o[n].subURLs&&o[n].subURLs[t])return JSON.parse(JSON.stringify(o[n].subURLs[t]))}else if(o[n].URLs)return JSON.parse(JSON.stringify(o[n].URLs))}}return null}static reorder(e,t,i){const r=Array.from(e),[o]=r.splice(t,1);return r.splice(i,0,o),r}static getSettings(e,t,i){let r;const o=(e==null?void 0:e._id)||(t==null?void 0:t.id);let n;if(e&&Object.prototype.hasOwnProperty.call(e,"common")?n=e.common:n=e,n!=null&&n.custom?(r=n.custom,r=r[Dt]&&r[Dt][t.user||"admin"]?JSON.parse(JSON.stringify(r[Dt][t.user||"admin"])):{enabled:!0}):r={enabled:i===void 0?!0:i,useCustom:!1},Object.prototype.hasOwnProperty.call(r,"enabled")||(r.enabled=i===void 0?!0:i),t&&(!r.name&&t.name&&(r.name=t.name),!r.icon&&t.icon&&(r.icon=t.icon),!r.color&&t.color&&(r.color=t.color)),n&&(!r.color&&n.color&&(r.color=n.color),!r.icon&&n.icon&&(r.icon=n.icon),!r.name&&n.name&&(r.name=n.name)),typeof r.name=="object"&&(r.name=t.language&&r.name[t.language]||r.name.en,r.name=(r.name||"").toString().replace(/_/g," "),r.name===r.name.toUpperCase()&&(r.name=r.name[0]+r.name.substring(1).toLowerCase())),!r.name&&o){const M=o.lastIndexOf(".");r.name=o.substring(M+1).replace(/[_.]/g," "),r.name=(r.name||"").toString().replace(/_/g," "),r.name=m.CapitalWords(r.name)}return r}static setSettings(e,t,i){if(e){e.common=e.common||{},e.common.custom=e.common.custom||{},e.common.custom[Dt]=e.common.custom[Dt]||{},e.common.custom[Dt][i.user||"admin"]=t;const r=e.common.custom[Dt][i.user||"admin"];return r.useCommon&&(r.color!==void 0&&(e.common.color=r.color,delete r.color),r.icon!==void 0&&(e.common.icon=r.icon,delete r.icon),r.name!==void 0&&(typeof e.common.name!="object"&&i.language?e.common.name={[i.language]:r.name}:typeof e.common.name=="object"&&i.language&&(e.common.name[i.language]=r.name),delete r.name)),!0}return!1}static getIcon(e,t){return e!=null&&e.icon?e.icon.length<=2?a.createElement("span",{style:t||{}},e.icon):e.icon.startsWith("data:image")?a.createElement("img",{alt:e.name,src:e.icon,style:t||{}}):a.createElement("img",{alt:e.name,src:(e.prefix||"")+e.icon,style:t}):null}static getObjectIcon(e,t){var i;if(typeof e=="object"&&(t=e,e=t==null?void 0:t._id),(i=t==null?void 0:t.common)!=null&&i.icon){let r=t.common.icon;if(typeof r=="string"&&r.length<=2||r.startsWith("data:image"))return r;const o=e.split(".");return o[0]==="system"?r=`adapter/${o[2]}${r.startsWith("/")?"":"/"}${r}`:r=`adapter/${o[0]}${r.startsWith("/")?"":"/"}${r}`,window.location.pathname.match(/adapter\/[^/]+\/[^/]+\.html/)?r=`../../${r}`:window.location.pathname.match(/material\/[.\d]+/)?r=`../../${r}`:window.location.pathname.match(/material\//)&&(r=`../${r}`),r}return null}static splitCamelCase(e){return e?m.CapitalWords(e):""}static isUseBright(e,t){if(!e)return t===void 0?!0:t;e=e.toString(),e.startsWith("#")&&(e=e.slice(1));let i,r,o;const n=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(n&&n.length===4)i=parseInt(n[1],10),r=parseInt(n[2],10),o=parseInt(n[3],10);else{if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===8)e=e.substring(0,6);else if(e.length!==6)return!1;i=parseInt(e.slice(0,2),16),r=parseInt(e.slice(2,4),16),o=parseInt(e.slice(4,6),16)}return i*.299+r*.587+o*.114<=186}static getTimeString(e){if(e=parseFloat(e),Number.isNaN(e))return"--:--";const t=Math.floor(e/3600),i=Math.floor(e%3600/60).toString().padStart(2,"0"),r=(e%60).toString().padStart(2,"0");return t?`${t}:${i}:${r}`:`${i}:${r}`}static getWindDirection(e){return e>=0&&e<11.25?"N":e>=11.25&&e<33.75?"NNE":e>=33.75&&e<56.25?"NE":e>=56.25&&e<78.75?"ENE":e>=78.75&&e<101.25?"E":e>=101.25&&e<123.75?"ESE":e>=123.75&&e<146.25?"SE":e>=146.25&&e<168.75?"SSE":e>=168.75&&e<191.25?"S":e>=191.25&&e<213.75?"SSW":e>=213.75&&e<236.25?"SW":e>=236.25&&e<258.75?"WSW":e>=258.75&&e<281.25?"W":e>=281.25&&e<303.75?"WNW":e>=303.75&&e<326.25?"NW":e>=326.25&&e<348.75?"NNW":"N"}static padding(e){return typeof e=="string"?e.length<2?`0${e}`:e:e<10?`0${e}`:e.toString()}static setDataFormat(e){e&&(m.dateFormat=e.toUpperCase().split(/[.-/]/),m.dateFormat.splice(m.dateFormat.indexOf("YYYY"),1))}static date2string(e){if(typeof e=="string"){if(e=e.trim(),!e)return"";if(e.match(/^[\w\s]+$/))return e;const i=e.match(/(\d{1,4})[-./](\d{1,2})[-./](\d{1,4})/);if(i){const r=[parseInt(i[1],10),parseInt(i[2],10),parseInt(i[3],10)],o=r.find(n=>n>31);if(o!==void 0){r.splice(r.indexOf(o),1);const n=r.find(M=>M>12);n?(r.splice(r.indexOf(n),1),e=new Date(o,r[0]-1,n)):m.dateFormat[0][0]==="M"&&m.dateFormat[1][0]==="D"?(e=new Date(o,r[0]-1,r[1]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[1]-1,r[0]))):m.dateFormat[0][0]==="D"&&m.dateFormat[1][0]==="M"?(e=new Date(o,r[1]-1,r[0]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[0]-1,r[1]))):e=new Date(e)}else e=new Date(e)}else e=new Date(e)}else e=new Date(e);let t=D.t(`ra_dow_${Bh[e.getDay()]}`).replace("ra_dow_","");return t+=`. ${e.getDate()} ${D.t(`ra_month_${Rh[e.getMonth()]}`).replace("ra_month_","")}`,t}static renderTextWithA(e){let t=e.match(/||[^<]+<\/b>|[^<]+<\/i>/);if(t){const i=[];let r=1;do{const o=e.substring(0,t.index);if(e=e.substring((t.index||0)+t[0].length),o&&i.push(a.createElement("span",{key:`a${r++}`},o)),t[0].startsWith(""))i.push(a.createElement("b",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith(""))i.push(a.createElement("i",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith("([^<]*)||[^<]+<\/b>|[^<]+<\/i>/):null,!t&&e&&i.push(a.createElement("span",{key:`a${r++}`},e))}while(t);return i}return e}static getSmartName(e,t,i,r){var n,M;if(!t){if(!r)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const c=e;return(n=c==null?void 0:c.common)!=null&&n.custom&&c.common.custom[i]?c.common.custom[i].smartName:void 0}if(!r)return e[t].common.smartName;const o=e[t];return(M=o==null?void 0:o.common)!=null&&M.custom&&o.common.custom[i]&&o.common.custom[i].smartName||null}static getSmartNameFromObj(e,t,i){var o,n;if(!i)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const r=(n=(o=e==null?void 0:e.common)==null?void 0:o.custom)==null?void 0:n[t];return r?r.smartName:void 0}static enableSmartName(e,t,i){const r=e;i?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName={}):r.common.smartName={}}static removeSmartName(e,t,i){var o,n;const r=e;i?(n=(o=r==null?void 0:r.common)==null?void 0:o.custom)!=null&&n[t]&&(r.common.custom[t]=null):r.common.smartName=null}static updateSmartName(e,t,i,r,o,n){var l,N;const M=D.getLanguage(),c=e;if(typeof c.common.smartName=="string"){const u=c.common.smartName;c.common.smartName={},c.common.smartName[M]=u}if((l=c.native)!=null&&l.byON){delete c.native.byON;let u=c.common.smartName;u&&typeof u!="object"&&(u={en:u,[M]:u}),c.common.smartName=u}if(r!==void 0&&(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},r?c.common.custom[o].smartName.smartType=r:delete c.common.custom[o].smartName.smartType):(c.common.smartName||={},r?c.common.smartName.smartType=r:delete c.common.smartName.smartType)),i!==void 0&&(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},c.common.custom[o].smartName.byON=i):(c.common.smartName||={},c.common.smartName.byON=i)),t!==void 0){let u;if(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},u=c.common.custom[o].smartName):(c.common.smartName||={},u=c.common.smartName),u[M]=t,u&&(!u[M]||u[M]===c.common.name&&!c.common.role)){delete u[M];let L=!0;for(const g in u)if(Object.prototype.hasOwnProperty.call(u,g)){L=!1;break}if(L)if(n&&((N=c.common.custom)!=null&&N[o]))c.common.custom[o].smartName.byON===void 0?delete c.common.custom[o]:(delete c.common.custom[o].en,delete c.common.custom[o].de,delete c.common.custom[o].ru,delete c.common.custom[o].nl,delete c.common.custom[o].pl,delete c.common.custom[o].it,delete c.common.custom[o].fr,delete c.common.custom[o].pt,delete c.common.custom[o].es,delete c.common.custom[o].uk,delete c.common.custom[o]["zh-cn"]);else if(c.common.smartName&&c.common.smartName.byON!==void 0){const g=c.common.smartName;delete g.en,delete g.de,delete g.ru,delete g.nl,delete g.pl,delete g.it,delete g.fr,delete g.pt,delete g.es,delete g.uk,delete g["zh-cn"]}else c.common.smartName=null}}}static updateSmartNameEx(e,t){var o,n,M,c;const i=D.getLanguage(),r=e;if(typeof r.common.smartName=="string"){const l=r.common.smartName;r.common.smartName={},r.common.smartName[i]=l}if((o=r.native)!=null&&o.byON){delete r.native.byON;let l=r.common.smartName;l&&typeof l!="object"&&(l={en:l,[i]:l}),r.common.smartName=l}if(t.smartType!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},t.smartType?r.common.custom[t.instanceId].smartName.smartType=t.smartType:delete r.common.custom[t.instanceId].smartName.smartType):(r.common.smartName||={},t.smartType?r.common.smartName.smartType=t.smartType:delete r.common.smartName.smartType)),t.byON!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.byON=t.byON):(r.common.smartName||={},r.common.smartName.byON=t.byON)),t.noAutoDetect!==void 0&&(t.noCommon?t.noAutoDetect?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.noAutoDetect=t.noAutoDetect):(M=(n=r.common.custom)==null?void 0:n[t.instanceId])!=null&&M.smartName&&delete r.common.custom[t.instanceId].smartName.noAutoDetect:!t.noAutoDetect&&r.common.smartName?delete r.common.smartName.noAutoDetect:(r.common.smartName||={},r.common.smartName.noAutoDetect=t.noAutoDetect)),t.smartName!==void 0){let l;if(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},l=r.common.custom[t.instanceId].smartName):(r.common.smartName||={},l=r.common.smartName),l[i]=t.smartName,l&&(!l[i]||l[i]===r.common.name&&!r.common.role)){delete l[i];let N=!0;for(const u in l)if(Object.prototype.hasOwnProperty.call(l,u)){N=!1;break}if(N)if(t.noCommon&&((c=r.common.custom)!=null&&c[t.instanceId]))r.common.custom[t.instanceId].smartName.byON===void 0?delete r.common.custom[t.instanceId]:(delete r.common.custom[t.instanceId].en,delete r.common.custom[t.instanceId].de,delete r.common.custom[t.instanceId].ru,delete r.common.custom[t.instanceId].nl,delete r.common.custom[t.instanceId].pl,delete r.common.custom[t.instanceId].it,delete r.common.custom[t.instanceId].fr,delete r.common.custom[t.instanceId].pt,delete r.common.custom[t.instanceId].es,delete r.common.custom[t.instanceId].uk,delete r.common.custom[t.instanceId]["zh-cn"]);else if(r.common.smartName&&r.common.smartName.byON!==void 0){const u=r.common.smartName;delete u.en,delete u.de,delete u.ru,delete u.nl,delete u.pl,delete u.it,delete u.fr,delete u.pt,delete u.es,delete u.uk,delete u["zh-cn"]}else r.common.smartName=null}}}static disableSmartName(e,t,i){const r=e;i?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName=!1):r.common.smartName=!1}static copyToClipboard(e,t){return t&&(t.stopPropagation(),t.preventDefault()),E4(e)}static getFileExtension(e){const t=(e||"").lastIndexOf(".");return t!==-1?e.substring(t+1).toLowerCase():null}static formatBytes(e){if(Math.abs(e)<1024)return`${e} B`;const t=["KB","MB","GB"];let i=-1;do e/=1024,++i;while(Math.abs(e)>=1024&&i186?`#000000${i||""}`:`#FFFFFF${i||""}`;const M=(255-r).toString(16),c=(255-o).toString(16),l=(255-n).toString(16);return`#${M.padStart(2,"0")}${c.padStart(2,"0")}${l.padStart(2,"0")}${i||""}`}static color2rgb(e){if(e==null||e===""||typeof e!="string")return!1;if(e.startsWith("rgba")){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),\s*([.\d]+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else if(e.startsWith("rgb")){const t=e.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else e.startsWith("#")&&(e=e.slice(1));return e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length!==6&&e.length!==8?(console.warn(`Cannot invert color: ${e}`),!1):[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}static rgb2lab(e){let t=e[0]/255,i=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=(t*.4124+i*.3576+r*.1805)/.95047,n=t*.2126+i*.7152+r*.0722,M=(t*.0193+i*.1192+r*.9505)/1.08883;return o=o>.008856?o**.33333333:7.787*o+.137931,n=n>.008856?n**.33333333:7.787*n+.137931,M=M>.008856?M**.33333333:7.787*M+.137931,[116*n-16,500*(o-n),200*(n-M)]}static colorDistance(e,t){const i=m.color2rgb(e),r=m.color2rgb(t);if(!i||!r)return 0;const o=m.rgb2lab(i),n=m.rgb2lab(r),M=o[0]-n[0],c=o[1]-n[1],l=o[2]-n[2],N=Math.sqrt(o[1]*o[1]+o[2]*o[2]),u=Math.sqrt(n[1]*n[1]+n[2]*n[2]),L=N-u;let g=c*c+l*l-L*L;g=g<0?0:Math.sqrt(g);const j=1+.045*N,y=1+.015*N,T=M,d=L/j,I=g/y,w=T*T+d*d+I*I;return w<0?0:w}static _toVal(e){let t,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e))for(let r=0;r{if(i=i.trim(),i){const r=i.split("="),o=decodeURIComponent(r[0]).trim();if(r.length>1){const n=decodeURIComponent(r[1]);if(n==="true")t[o]=!0;else if(n==="false")t[o]=!1;else{const M=parseFloat(n);M.toString()===n?t[o]=M:t[o]=n}}else t[o]=!0}}),t}static getParentId(e){const t=(e||"").toString().split(".");return t.length>1?(t.pop(),t.join(".")):null}static formatDate(e,t){if(!e)return"";let i;const r=(e.getMonth()+1).toString().padStart(2,"0"),o=e.getDate().toString().padStart(2,"0");return t==="MM/DD/YYYY"?i=`${r}/${o}/${e.getFullYear()}`:i=`${e.getFullYear()}-${r}-${o}`,i+=` ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`,i}static formatTime(e){if(e){e=Math.round(e);const t=Math.floor(e/(3600*24)),i=Math.floor(e%(3600*24)/3600),r=Math.floor(e%3600/60),o=e%60;return t?`${t}.${i.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:i?`${i}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`0:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}return"0:00:00"}static MDtext2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static MDgetTitle(e){var o;const t=m.MDextractHeader(e),i=t.header;let r=t.body;if(!i.title){r=r.replace(/{[^}]*}/g,""),r=r.trim();const n=r.replace(/\r/g,"").split(` `);for(let M=0;M{if(!n.trim())return;const M=n.indexOf(":");if(M!==-1){const c=n.substring(0,M).trim();let l=n.substring(M+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[c]=!0:l==="false"?t[c]=!1:parseFloat(l).toString()===t[c]?t[c]=parseFloat(l):t[c]=l}else t[n.trim()]=!0}),e=e.substring(i+7))}return{header:t,body:e}}static MDremoveDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(i=>e=e.replace(i,"")),e}static generateFile(e,t){const i=document.createElement("a");i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),i.setAttribute("download",e),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}static quality2text(e){const t=e&4294901760,i=Cn[e];let r;return i?r=[i]:e&1?r=[Cn[1],`0x${(e&65534).toString(16)}`]:e&2?r=[Cn[2],`0x${(e&65533).toString(16)}`]:r=[`0x${e.toString(16)}`],t&&r.push(`0x${(t>>16).toString(16).toUpperCase()}`),r}static clone(e){return JSON.parse(JSON.stringify(e))}static getStates(e){var r;const t=(r=e==null?void 0:e.common)==null?void 0:r.states;let i;if(t)if(typeof t=="string"&&t[0]==="{")try{i=JSON.parse(t)}catch{console.error(`Cannot parse states: ${t}`),i=null}else if(typeof t=="string"){const o=t.split(";");i={};for(let n=0;ni[n]=o):(e==null?void 0:e.common.type)==="string"?t.forEach(o=>i[o]=o):(e==null?void 0:e.common.type)==="boolean"&&(i.false=t[0],i.true=t[1])):typeof t=="object"&&(i=t);return i||null}static async getSvg(e){const i=await(await fetch(e)).blob();return new Promise(r=>{const o=new FileReader;o.onload=()=>{var n;return r(((n=o.result)==null?void 0:n.toString())||"")},o.readAsDataURL(i)})}static detectMimeType(e){const t=Object.keys(Bu).find(i=>e.startsWith(i));return t?Bu[t]:null}static isStableRepository(e){return!!(typeof e=="string"&&e.toLowerCase().startsWith("stable")||e&&typeof e!="string"&&e.find(t=>t.toLowerCase().startsWith("stable")))}static isStringInteger(e){return typeof e=="number"?Math.round(e)===e:parseInt(e,10).toString()===e}static isValidDate(e){return e instanceof Date&&!isNaN(e)}static getStyle(e,...t){const i={};for(let r=0;r{if(typeof t[r][o]=="function")i[o]=t[r][o](e);else if(typeof t[r][o]=="object"){const n=t[r][o];i[o]={},Object.keys(n).forEach(M=>{typeof n[M]=="function"?i[o][M]=n(e):(n[M]||n[M]===0)&&(i[o][M]=n[M])})}else(t[r][o]||t[r][o]===0)&&(i[o]=t[r][o])});return i}}const pn={buttonIcon:{marginRight:8}};class Fh extends a.Component{isIFrame;constructor(e){super(e);const t=e.newReact===void 0?!0:e.newReact;if(e.isIFrame!==void 0)this.isIFrame=e.isIFrame;else try{this.isIFrame=!t&&window.self!==window.top}catch{this.isIFrame=!t}}render(){const e=this.props.noTextOnButtons,t={borderRadius:this.props.theme.saveToolbar.button.borderRadius||3,height:this.props.theme.saveToolbar.button.height||32},i={bottom:this.isIFrame?38:0,left:this.props.paddingLeft||0,right:0,position:"absolute",background:this.props.theme.saveToolbar.background};return this.props.dense&&(i.minHeight=48),this.props.error&&(t.border="1px solid red"),a.createElement(CN,{style:i},a.createElement(bt,{variant:"extended","aria-label":"Save",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!1),style:t},a.createElement(Xn,{style:e?void 0:pn.buttonIcon}),!e&&D.t("ra_Save")),a.createElement(bt,{variant:"extended","aria-label":"Save and close",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!0),style:{...t,marginLeft:10}},a.createElement(Xn,{style:e?void 0:pn.buttonIcon}),e?"+":D.t("ra_Save and close"),e&&a.createElement(we,null)),a.createElement("div",{style:{flexGrow:1}}),a.createElement(bt,{variant:"extended","aria-label":"Close",onClick:()=>this.props.onClose(),style:t},a.createElement(we,{style:e?void 0:pn.buttonIcon}),!e&&D.t("ra_Close")))}}const Ru={suppress:{fontSize:12},suppressRoot:{marginTop:"16px"}};class _4 extends De{constructor(e){if(super(e),!this.props.dialogName&&this.props.suppressQuestionMinutes)throw new Error("dialogName required if suppressQuestionMinutes used");let t=!1;this.props.suppressQuestionMinutes&&(t=parseInt((window._localStorage||window.localStorage).getItem(this.props.dialogName),10)||0,t?Date.now()>t&&((window._localStorage||window.localStorage).removeItem(this.props.dialogName),t=!1):t=!1),this.state={suppress:t}}handleOk(){this.state.suppress&&(window._localStorage||window.localStorage).setItem(this.props.dialogName,Date.now()+(this.props.suppressQuestionMinutes||2)*6e4),this.props.onClose&&this.props.onClose(!0)}handleCancel(){this.props.onClose&&this.props.onClose(!1)}render(){return typeof this.state.suppress=="number"?(setTimeout(()=>this.props.onClose&&this.props.onClose(!0),100),null):a.createElement(Ae,{open:!0,maxWidth:"md",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:(e,t)=>{t!=="backdropClick"&&t!=="escapeKeyDown"&&this.handleCancel()},"aria-labelledby":"ar_confirmation_dialog_title","aria-describedby":"ar_confirmation_dialog_description"},a.createElement(fe,{id:"ar_confirmation_dialog_title"},this.props.title||D.t("ra_Are you sure?")),a.createElement(_e,null,a.createElement(as,{id:"ar_confirmation_dialog_description"},this.props.icon||null,this.props.text,this.props.suppressQuestionMinutes?a.createElement("br",null):null,this.props.suppressQuestionMinutes?a.createElement(V,{sx:{"& .FormControlLabel-label":Ru.suppress,"&.FormControlLabel-root":Ru.suppressRoot},control:a.createElement(ue,{id:`ar_dialog_confirm_suppress_${this.props.dialogName||""}`,checked:!!this.state.suppress,onChange:()=>this.setState({suppress:!this.state.suppress})}),label:this.props.suppressText||D.t("ra_Suppress question for next %s minutes",(this.props.suppressQuestionMinutes||2).toString())}):null)),a.createElement(xe,null,a.createElement(q,{id:`ar_dialog_confirm_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{id:`ar_dialog_confirm_cancel_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:a.createElement(we,null)},this.props.cancel||D.t("ra_Cancel"))))}}class x4 extends De{handleOk(){this.props.onClose&&this.props.onClose()}render(){return a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},a.createElement(fe,{id:"ar_alert_dialog_title"},this.props.title||D.t("ra_Error")),a.createElement(_e,null,a.createElement(as,{id:"ar_alert_dialog_description"},this.props.text||D.t("ra_Unknown error!"))),a.createElement(xe,null,a.createElement(q,{id:"ar_dialog_error_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},D.t("ra_Ok"))))}}const Gh="Actions",Hh="Append",Vh="Cancel",Zh="Categories",Xh="Checked",Kh="Delete",qh="Close",ez="Commercial",tz="Configure",sz="Connected",iz="Continue",rz="Copied",oz="Create",nz="Crop",az="Delete",Mz="Delete",cz="Discard",uz="Disconnected",lz="Error",Nz="Filter",Lz="Friday",gz="Latitude",jz="Logout",yz="Longitude",Tz="Message",Dz="Monday",dz="Name",hz="Objects",zz="Ok",wz="Product",Iz="Rename/Move/Copy",Cz="Repeat",pz="Replace",Az="Root",mz="Saturday",fz="Save",Oz="Selected",Ez="States",_z="Sunday",xz="Thursday",Sz="Timestamp",kz="Tuesday",vz="Update",Yz="Valid till",Qz="Value",bz="Version",Uz="Wednesday",$z="Width",Pz="Yes",Wz="different",Jz="Everyone can read object",Bz="Everyone can read state",Rz="Everyone can write object",Fz="Everyone can write state",Gz="Group can read object",Hz="Group can read state",Vz="Group can write object",Zz="Group can write state",Xz="Owner can read object",Kz="Owner can read state",qz="Owner can write object",ew="Owner can write state",tw="Buttons",sw="Changed from",iw="close",rw="Create boolean state",ow="Create channel",nw="Create device",aw="Create number state",Mw="Create state",cw="Create string state",uw="days",lw="Fr",Nw="Mo",Lw="Sa",gw="Su",jw="Th",yw="Tu",Tw="We",Dw="Expert mode",dw="FALSE",hw="All files",zw="Audio",ww="Code/JSON",Iw="Images",Cw="Text",pw="Video",Aw="Settings",mw="without",fw="Function",Ow="ID",Ew="Name",_w="Role",xw="Room",Sw="Type",kw="Invalid settings",vw="Last change",Yw="locally",Qw="Apr",bw="Aug",Uw="Dec",$w="Feb",Pw="Jan",Ww="Jul",Jw="Jun",Bw="Mai",Rw="Mar",Fw="Nov",Gw="Oct",Hw="Sep",Vw="Apr",Zw="Aug",Xw="Dec",Kw="Feb",qw="Jan",eI="Jul",tI="Jun",sI="Mai",iI="Mar",rI="Nov",oI="Oct",nI="Sep",aI="none",MI="Object changed by",cI="Object last changed at",uI="Settings from other adapter %s",lI="Quality code",NI="repeat",LI='To select folder, just hold the key "shift" by clicking the folder.',gI="Show all",jI="State changed by",yI="Object changed from",TI="Timestamp",DI="Acknowledged",dI="Comment",hI="Copy the state value",zI="Hold Cltr/⌘ key to open the link",wI="Custom settings",II="Delete object",CI="Edit object",pI="Edit the state value",AI="Expires in",mI="From",fI="Last changed",OI="Quality",EI="Time stamp",_I="User",xI="Value",SI="TRUE",kI="Value",vI="Warning: The CRON job will run every minute during the specified period!",YI="Warning: The CRON job will run every second during the specified period!",QI="CRON",bI="Date",UI="Dates",$I="Day",PI="Day of week",WI="Every",JI="every N days",BI="every Nth day of the week",RI="every N day of week",FI="every N hours",GI="every N minutes",HI="every N months",VI="every N seconds",ZI="every day",XI="every day of the week",KI="every day of the week",qI="every hour",eC="every minute",tC="every month",sC="every second",iC="From",rC="Hours",oC="Interval",nC="Interval between",aC="Invalid CRON",MC="Minutes",cC="months",uC="Once",lC="Period",NC="Seconds",LC="Simple",gC="Specific time",jC="specific dates",yC="specific day(s) of the week",TC="specific day of weeks",DC="specific hours",dC="specific minutes",hC="specific months",zC="specific seconds",wC="Time",IC="To",CC="Wizard",pC="all",AC="Astro day",mC="Astro night",fC="Dawn",OC="Dusk",EC="Golden hour",_C="Golden hour end",xC="Nadir",SC="Nautical dawn",kC="Nautical dusk",vC="Night",YC="Night end",QC="Solar noon",bC="Sunrise",UC="Sunrise end",$C="Sunset",PC="Sunset start",WC="at",JC="at %s",BC="every day",RC="every hour",FC="every minute",GC="every month",HC="every %s day",VC="every %s hours",ZC="every %s minutes",XC="every %s months",KC="every %s weeks",qC="every %s years",e2="every week",t2="every year",s2="from %s to %s",i2="never",r2="on %s of %s",o2="on %s and %s of",n2="on every date of",a2="%s",M2="%s and %s",c2="on %s",u2="on %s and %s",l2="on weekends",N2="on working days",L2="will ne be not executed any more, because start is in the past",g2="on %s",j2="from %s",y2="Execute from to",T2="to %s",D2="every",d2="Specific time",h2="from",z2="From-to",w2="Interval time",I2="invert",C2="none",p2="on",A2="Period",m2="Daily",f2="Dates",O2="Day",E2="Every",_2="Every day",x2="Every month",S2="Every week",k2="Every year",v2="Hours",Y2="Minutes",Q2="month",b2="Monthly",U2="Once",$2="Specific months",P2="Week",W2="Weekdays",J2="Weekend",B2="Weekly",R2="Workdays",F2="Year",G2="Yearly",H2="Specific time",V2="Time",Z2="to",X2="Valid",K2="from",q2="to",ep="Whole day",tp="every month",sp={"ra_%s links from aliases":"%s links from aliases","ra_%s object(s) processed":"%s object(s) processed","ra_%s was imported":"%s was imported","ra_Accept license":"Accept license",ra_Actions:Gh,"ra_Add new child object to selected parent":"Add new child object to selected parent","ra_Add objects tree from JSON file":"Add objects tree from JSON file","ra_Add row":"Add row","ra_Advanced options":"Advanced options","ra_All items are filtered out":"All items are filtered out","ra_All objects":"All objects",ra_Append:Hh,"ra_Append %s entries or replace existing?":"Append %s entries or replace existing?","ra_Append or replace?":"Append or replace?","ra_Are you sure?":"Are you sure?","ra_Auto (no custom columns)":"Auto (no custom columns)","ra_Back to %s":"Back to %s","ra_Background image":"Background image",ra_Cancel:Vh,"ra_Cannot add items with set filter":"Cannot add items with set filter","ra_Cannot decode license":"Cannot decode license","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Cannot determine position: System settings are empty and GPS detection is disabled in browser",'ra_Cannot find "%s"':'Cannot find "%s"','ra_Cannot read "%s"':'Cannot read "%s"',"ra_Cannot read licenses: %s":"Cannot read licenses: %s","ra_Cannot retrieve options, as instance is offline":"Cannot retrieve options, as instance is offline","ra_Cannot update attribute, because not found in the object":"Cannot update attribute, because not found in the object","ra_Cannot upload":"Cannot upload",ra_Categories:Zh,"ra_Chained certificate":"Chained certificate","ra_Change color theme":"Change color theme","ra_Changed from":"Changed from","ra_Channel → State":"Channel → State","ra_Check license":"Check license",ra_Checked:Xh,ra_Clear:Kh,"ra_Clear filter":"Clear filter","ra_Clear icon":"Clear icon","ra_Click to see in full size":"Click to see in full size","ra_Click to show":"Click to show","ra_Clone current row":"Clone current row",ra_Close:qh,"ra_Collapse all nodes":"Collapse all nodes","ra_Collapse one step node":"Collapse one level",ra_Commercial:ez,ra_Configure:tz,"ra_Configure visible columns":"Configure visible columns","ra_Confirm deletion of %s":"Confirm deletion of %s",ra_Connected:sz,ra_Continue:iz,ra_Copied:rz,"ra_Copied %s":'Copied "%s"',"ra_Copy content":"Copy content",ra_Create:oz,"ra_Create alias":"Create alias","ra_Create folder":"Create folder","ra_Create new folder in %s":"Create new folder in %s",ra_Crop:nz,"ra_Define CRON...":"Define CRON...","ra_Define functions":"Define functions","ra_Define rooms":"Define rooms","ra_Define schedule":"Define schedule","ra_Define schedule...":"Define schedule...",ra_Del:az,ra_Delete:Mz,"ra_Delete current row":"Delete current row","ra_Deselect all":"Unselect all","ra_Device → Channel → State":"Device → Channel → State","ra_Disable/Enable translation":"Disable/Enable translation",ra_Discard:cz,ra_Disconnected:uz,"ra_Do not ask for next 2 hours in this session":"Do not ask for next 2 hours in this session","ra_Do not export values of states":"Do not export values of states","ra_Do not use let's encrypt":"Do not use let's encrypt","ra_Docker is not available":"Docker is not available","ra_Docker is not installed or not running":"Docker is not installed or not running","ra_Double click to reset table layout":"Double click to reset table layout","ra_Drag 'n' drop some files here, or click to select files":"Drag 'n' drop some files here, or click to select files","ra_Drop file here":"Drop file here","ra_Drop the files here...":"Drop the file here...","ra_Duplicate name":"Duplicate name","ra_Edit ACL":"Edit ACL","ra_Edit alias":"Edit alias","ra_Edit custom config":"Edit custom config","ra_Edit full path":"Edit full path","ra_Edit function":"Edit function","ra_Edit object field":"Edit object field","ra_Edit role":"Edit role","ra_Edit room":"Edit room","ra_Edit value":"Edit value","ra_Enter the code from that page here":"Enter the code from that page here",ra_Error:lz,"ra_Expand all nodes":"Expand all nodes","ra_Expand one step node":"Expand one level","ra_Expand/Collapse card":"Expand/Collapse card","ra_Export configuration section":"Export configuration section","ra_Export data to %s file":"Export data to %s file","ra_Failed to open JSON File":"Failed to open JSON File","ra_Fallback custom certificates":"Fallback custom certificates","ra_File is too big. Max %sk allowed. Try use SVG.":"File is too big. Max %sk allowed. Try use SVG.",ra_Filter:Nz,"ra_Filter and Data Actions":"Filter and Data Actions","ra_Filter files":"Filter files","ra_Folder name":"Folder name","ra_Folder → Channel → State":"Folder → Channel → State","ra_Folder → Device → Channel → State":"Folder → Device → Channel → State","ra_Folder → State":"Folder → State","ra_Folders always first":"Folders always first",ra_Friday:Lz,"ra_From file":"From file","ra_From text":"From text","ra_Get %s access":"Get %s access","ra_Good luck":"Good luck","ra_Hide empty folders":"Hide empty folders","ra_If no file will be created in the folder, it will disappear after the browser closed":"If no file will be created in the folder, it will disappear after the browser closed","ra_If the button above does not work, you can authorize manually this app by visiting this url":"If the button above does not work, you can authorize manually this app by visiting this url","ra_Import and add configuration section":"Import and add configuration section","ra_Import and replace configuration section":"Import and replace configuration section","ra_Import data from %s file":"Import data from %s file","ra_Import from %s":"Import from %s","ra_Instance %s is alive":"Instance %s is alive","ra_Instance %s is not alive":"Instance %s is not alive","ra_Instance is not alive":"Instance is not alive","ra_Invalid CRON":"Invalid CRON","ra_Invalid JSON":"Invalid JSON","ra_Invalid JSON file.":"Invalid JSON file.","ra_Invalid JSON format. Expected an array.":"Invalid JSON format. Expected an array.","ra_Invalid answer from server":"Invalid answer from server","ra_Invalid parent folder!":"Invalid parent folder!","ra_Invalid structure":"Invalid structure","ra_JSON editor":"JSON editor","ra_Last change":"Last change",ra_Latitude:gz,"ra_License %s":"License %s","ra_License agreement":"License agreement","ra_License does not exist":"License does not exist","ra_License expired on %s":"License expired on %s",'ra_License for other product "%s"':'License for other product "%s"',"ra_License is for version %s, but required version is %s.":"License is for version %s, but required version is %s.","ra_License must be converted":"License must be converted to newer version. You can do it in your iobroker.net profile.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"License not found in the license manager. Do you want to update licenses from iobroker.net?","ra_Listen on all IPs":"Listen on all IPs","ra_Load configuration from file":"Load configuration from file",ra_Logout:jz,ra_Longitude:yz,'ra_May not trigger "updateLicenses"':'May not trigger "updateLicenses"',ra_Message:Tz,ra_Monday:Dz,"ra_Move down":"Move down","ra_Move up":"Move up",ra_Name:dz,"ra_No data found in file":"No data found in file","ra_No one license found in license manager":"No one license found in license manager","ra_No response from admin":"No response from admin","ra_No response from the backend":"No response from the backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Non-experts may create new objects only in "0_userdata.0" or "alias.0".',"ra_Not a number":"Not a number","ra_OAuth Client ID":"OAuth Client ID","ra_OAuth Client secret":"OAuth Client secret",ra_Objects:hz,ra_Ok:zz,"ra_On weekdays":"On weekdays","ra_Only following structures of objects are available:":"Only following structures of objects are available:","ra_Only selected":"Only selected","ra_Owner group":"Owner group","ra_Owner user":"Owner user","ra_Passwords are not equal!":"Passwords are not equal!","ra_Place your files here or click here to open the browse dialog":"Place your files here or click here to open the browse dialog","ra_Please allow popups in your browser for this page!":"Please allow popups in your browser for this page!","ra_Please confirm":"Please confirm","ra_Please create license":"Please create license","ra_Please enter the license":"Please enter the license","ra_Please select file...":"Please select file...","ra_Please select object ID...":"Please select object ID...","ra_Port could be used by %s":"Port could be used by %s","ra_Port is already used by %s":"Port is already used by %s","ra_Press ENTER Key to add new item":"Press ENTER Key to add new item","ra_Private certificate":"Private certificate",ra_Product:wz,"ra_Public certificate":"Public certificate","ra_Quality code":"Quality","ra_Refresh tree":"Refresh tree","ra_Reload files":"Reload files",ra_Rename_Move_Copy:Iz,"ra_Renew %s access":"Renew %s access",ra_Repeat:Cz,ra_Replace:pz,"ra_Request timed out":"Request timed out","ra_Restrict to folder":"Restrict to folder",ra_Root:Az,ra_Saturday:mz,ra_Save:fz,"ra_Save and close":"Save and close","ra_Save configuration to file":"Save configuration to file","ra_Save objects tree as JSON file":"Save objects tree as JSON file","ra_Select all":"Select all","ra_Select color":"Select color","ra_Select predefined icon":"Select predefined icon","ra_Select type of export":"Select type of export",ra_Selected:Oz,"ra_Selected %s object(s)":"Selected %s object(s)","ra_Serial number (UUID)":"Serial number (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serial number (UUID) "%s" in license is for other device.',"ra_Session will expire in %s seconds. Continue?":"Session will expire in %s seconds. Continue?","ra_Show all folders":"Show all folders","ra_Show lines between rows":"Show lines between rows","ra_Show/Hide object descriptions":"Show/Hide object descriptions","ra_Show/hide filter input":"Show/hide filter input","ra_Some data are not stored. Discard?":"Some data are not stored. Discard?",ra_States:Ez,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Successfully authorized. Token valid till %s and will be automatically renewed.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Successfully authorized. Token valid till %s but it can expire as the instance is not running.","ra_Suitable license not found in license manager":"Suitable license not found in license manager",ra_Sunday:_z,"ra_Suppress question for next %s minutes":"Suppress question for next %s minutes","ra_System language":"System language","ra_Take browser position":"Take position from browser","ra_Take position from system settings":"Take position from system settings",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").',"ra_The page you are looking for was not found":"The page you are looking for was not found","ra_The schedule will be executed every minute. Are you sure?":"The schedule will be executed every minute. Are you sure?","ra_The schedule will be executed every second. Are you sure?":"The schedule will be executed every second. Are you sure?",ra_Thursday:xz,ra_Timestamp:Sz,"ra_Toggle expert mode":"Toggle expert mode","ra_Toggle the states view":"Toggle the states view","ra_Toggle view mode":"Toggle view mode","ra_Too big":"Too big","ra_Too small":"Too small","ra_Transparent dialog":"Transparent dialog",ra_Tuesday:kz,"ra_Unknown error":"Unknown error","ra_Unknown error!":"Unknown error!",ra_Update:vz,"ra_Upload file":"Upload file","ra_Use all available let's encrypt certificates":"Use all available let's encrypt certificates","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use iobroker.acme adapter for letsencrypt certificates","ra_Use system settings for position":"Use system settings for position","ra_Used system settings":"Used system settings","ra_User files":"User files",ra_ValidTill:Yz,ra_Value:Qz,ra_Version:bz,"ra_View file":"View file","ra_View: %s":"View: %s",ra_Wednesday:Uz,ra_Width:$z,"ra_YAML editor":"YAML editor",ra_Yes:Pz,"ra_You can export all objects or just the selected branch.":"You can export all objects or just the selected branch.","ra_You can filter entries by entering here some text":"You can filter entries by entering here some text","ra_You can use * as wildcard":"You can use * as wildcard",ra___different__:Wz,ra_aclEveryone_read_object:Jz,ra_aclEveryone_read_state:Bz,ra_aclEveryone_write_object:Rz,ra_aclEveryone_write_state:Fz,ra_aclGroup_read_object:Gz,ra_aclGroup_read_state:Hz,ra_aclGroup_write_object:Vz,ra_aclGroup_write_state:Zz,ra_aclOwner_read_object:Xz,ra_aclOwner_read_state:Kz,ra_aclOwner_write_object:qz,ra_aclOwner_write_state:ew,ra_buttons:tw,ra_changedFrom:sw,ra_close:iw,ra_create_boolean_state:rw,ra_create_channel:ow,ra_create_device:nw,ra_create_number_state:aw,ra_create_state:Mw,ra_create_string_state:cw,ra_daysShortText:uw,ra_dow_Fr:lw,ra_dow_Mo:Nw,ra_dow_Sa:Lw,ra_dow_Su:gw,ra_dow_Th:jw,ra_dow_Tu:yw,ra_dow_We:Tw,ra_expertMode:Dw,ra_false:dw,ra_fileType_all:hw,ra_fileType_audio:zw,ra_fileType_code:ww,ra_fileType_images:Iw,ra_fileType_txt:Cw,ra_fileType_video:pw,"ra_fileType_video,":"Video",ra_filter_customs:Aw,ra_filter_customs_without:mw,ra_filter_func:fw,ra_filter_id:Ow,ra_filter_name:Ew,ra_filter_role:_w,ra_filter_room:xw,ra_filter_type:Sw,"ra_import data from %s file":"Import data from %s file",ra_invalidConfig:kw,ra_lastChange:vw,ra_locally:Yw,ra_month_Apr:Qw,ra_month_Aug:bw,ra_month_Dec:Uw,ra_month_Feb:$w,ra_month_Jan:Pw,ra_month_Jul:Ww,ra_month_Jun:Jw,ra_month_Mai:Bw,ra_month_Mar:Rw,ra_month_Nov:Fw,ra_month_Oct:Gw,ra_month_Sep:Hw,ra_months_Apr:Vw,ra_months_Aug:Zw,ra_months_Dec:Xw,ra_months_Feb:Kw,ra_months_Jan:qw,ra_months_Jul:eI,ra_months_Jun:tI,ra_months_Mai:sI,ra_months_Mar:iI,ra_months_Nov:rI,ra_months_Oct:oI,ra_months_Sep:nI,"ra_no confirm for 5 mins":"no confirm for 5 mins",ra_none:aI,ra_object_changed_by:MI,ra_object_changed_by_user:cI,ra_otherConfig:uI,ra_qualityCode:lI,ra_repeat:NI,ra_select_folder_hint:LI,ra_show_all:gI,ra_state_changed_by:jI,ra_state_changed_from:yI,ra_timestamp:TI,ra_tooltip_ack:DI,ra_tooltip_comment:dI,ra_tooltip_copyState:hI,ra_tooltip_ctrlForLink:zI,ra_tooltip_customConfig:wI,ra_tooltip_deleteObject:II,ra_tooltip_editObject:CI,ra_tooltip_editState:pI,ra_tooltip_expire:AI,ra_tooltip_from:mI,ra_tooltip_lc:fI,ra_tooltip_quality:OI,ra_tooltip_ts:EI,ra_tooltip_user:_I,ra_tooltip_value:xI,ra_true:SI,"ra_use seconds":"use seconds",ra_val:kI,"ra_via internet":"via internet",ra_warning_every_minute:vI,ra_warning_every_second:YI,sc_cron:QI,sc_date:bI,sc_dates:UI,sc_dow:$I,sc_dows:PI,sc_every:WI,sc_everyN_dates:JI,sc_everyN_dow:BI,sc_everyN_dows:RI,sc_everyN_hours:FI,sc_everyN_minutes:GI,sc_everyN_months:HI,sc_everyN_seconds:VI,sc_every_dates:ZI,sc_every_dow:XI,sc_every_dows:KI,sc_every_hours:qI,sc_every_minutes:eC,sc_every_months:tC,sc_every_seconds:sC,sc_from:iC,sc_hours:rC,sc_interval:oC,sc_intervalBetween:nC,sc_invalid_cron:aC,sc_minutes:MC,sc_months:cC,sc_once:uC,sc_period:lC,sc_seconds:NC,sc_simple:LC,sc_specific:gC,sc_specific_dates:jC,sc_specific_dow:yC,sc_specific_dows:TC,sc_specific_hours:DC,sc_specific_minutes:dC,sc_specific_months:hC,sc_specific_seconds:zC,sc_time:wC,sc_to:IC,sc_wizard:CC,sch_all:pC,sch_astroDay:AC,sch_astroNight:mC,sch_astro_dawn:fC,sch_astro_dusk:OC,sch_astro_goldenHour:EC,sch_astro_goldenHourEnd:_C,sch_astro_nadir:xC,sch_astro_nauticalDawn:SC,sch_astro_nauticalDusk:kC,sch_astro_night:vC,sch_astro_nightEnd:YC,sch_astro_solarNoon:QC,sch_astro_sunrise:bC,sch_astro_sunriseEnd:UC,sch_astro_sunset:$C,sch_astro_sunsetStart:PC,sch_at:WC,sch_desc_atTime:JC,sch_desc_everyDay:BC,sch_desc_everyHour:RC,sch_desc_everyMinute:FC,sch_desc_everyMonth:GC,sch_desc_everyNDay:HC,sch_desc_everyNHours:VC,sch_desc_everyNMinutes:ZC,sch_desc_everyNMonths:XC,sch_desc_everyNWeeks:KC,sch_desc_everyNYears:qC,sch_desc_everyWeek:e2,sch_desc_everyYear:t2,sch_desc_intervalFromTo:s2,sch_desc_never:i2,sch_desc_onDate:r2,sch_desc_onDates:o2,sch_desc_onEveryDate:n2,sch_desc_onMonth:a2,sch_desc_onMonths:M2,sch_desc_onWeekday:c2,sch_desc_onWeekdays:u2,sch_desc_onWeekends:l2,sch_desc_onWorkdays:N2,sch_desc_onceInPast:L2,sch_desc_once_on:g2,sch_desc_validFrom:j2,sch_desc_validFromTo:y2,sch_desc_validTo:T2,sch_every:D2,sch_exactTime:d2,sch_from:h2,sch_fromTo:z2,sch_intervalTime:w2,sch_invert:I2,sch_no_one:C2,sch_on:p2,sch_period:A2,sch_periodDaily:m2,sch_periodDates:f2,sch_periodDay:O2,sch_periodEvery:E2,sch_periodEveryDay:_2,sch_periodEveryMonth:x2,sch_periodEveryWeek:S2,sch_periodEveryYear:k2,sch_periodHours:v2,sch_periodMinutes:Y2,sch_periodMonth:Q2,sch_periodMonthly:b2,sch_periodOnce:U2,sch_periodSpecificMonths:$2,sch_periodWeek:P2,sch_periodWeekdays:W2,sch_periodWeekend:J2,sch_periodWeekly:B2,sch_periodWorkdays:R2,sch_periodYear:F2,sch_periodYearly:G2,sch_specificTime:H2,sch_time:V2,sch_to:Z2,sch_valid:X2,sch_validFrom:K2,sch_validTo:q2,sch_wholeDay:ep,sch_yearEveryMonth:tp},ip="Aktionen",rp="Anhängen",op="Abbrechen",np="Kategorien",ap="Geprüft",Mp="Löschen",cp="Schließen",up="Kommerziell",lp="Konfigurieren",Np="Verbunden",Lp="Weitermachen",gp="Kopiert",jp="Erstellen",yp="Ernte",Tp="Entf",Dp="Löschen",dp="Verwerfen",hp="Getrennt",zp="Fehler",wp="Filter",Ip="Freitag",Cp="Breite",pp="Ausloggen",Ap="Längengrad",mp="Meldung",fp="Montag",Op="Name",Ep="Objekte",_p="OK",xp="Produkt",Sp="Umbenennen/Verschieben/Kopieren",kp="Wiederholen",vp="Ersetzen",Yp="Anfang",Qp="Samstag",bp="Speichern",Up="Ausgewählt",$p="Zustände",Pp="Sonntag",Wp="Donnerstag",Jp="Zeitstempel",Bp="Dienstag",Rp="Aktualisieren",Fp="Gültig bis",Gp="Wert",Hp="Ausführung",Vp="Mittwoch",Zp="Breite",Xp="Ja",Kp="unterschiedlich",qp="Jeder kann Objekt lesen",eA="Jeder kann Zustand lesen",tA="Jeder kann ein Objekt schreiben",sA="Jeder kann Zustand schreiben",iA="Gruppe kann Objekt lesen",rA="Gruppe kann Status lesen",oA="Gruppe kann Objekt schreiben",nA="Gruppe kann Status schreiben",aA="Besitzer kann Objekt lesen",MA="Besitzer kann Zustand lesen",cA="Besitzer kann Objekt schreiben",uA="Besitzer kann Zustand schreiben",lA="Tasten",NA="Geändert von",LA="Schließen",gA="Booleschen Zustand erstellen",jA="Kanal erstellen",yA="Gerät erstellen",TA="Nummern-Zustand erstellen",DA="Zustand erstellen",dA="String-Zustand erstellen",hA="T.",zA="Fr",wA="Mo",IA="Sa",CA="So",pA="Do",AA="Di",mA="Mi",fA="Expertenmodus",OA="FALSCH",EA="Alle Dateien",_A="Audio",xA="Code/JSON",SA="Bilder",kA="Text",vA="Video",YA="Einstellungen",QA="ohne",bA="Funktion",UA="ID",$A="Name",PA="Rolle",WA="Raum",JA="Typ",BA="Ungültige Einstellungen",RA="Letzte Änderung",FA="örtlich",GA="Apr",HA="Aug",VA="Dez",ZA="Feb",XA="Jan",KA="Jul",qA="Jun",em="Mai",tm="Mär",sm="Nov",im="Okt",rm="Sep",om="Apr",nm="Aug",am="Dez",Mm="Feb",cm="Jan",um="Jul",lm="Jun",Nm="Mai",Lm="Mär",gm="Nov",jm="Okt",ym="Sep",Tm="kein",Dm="Objekt geändert von",dm="Objekt zuletzt geändert um",hm="Einstellungen von anderen Adaptern %s",zm="Qualitätscode",wm="wiederholen",Im='Um einen Ordner auszuwählen, halten Sie einfach die Taste "Shift" gedrückt, indem Sie auf den Ordner klicken.',Cm="Alle anzeigen",pm="Zustand geändert durch",Am="Objekt geändert von",mm="Zeitstempel",fm="Bestätigt",Om="Kommentar",Em="Statuswert kopieren",_m="Strg/⌘-Taste gedrückt halten, um den Link zu öffnen",xm="Benutzerdefinierte Einstellungen",Sm="Objekt löschen",km="Objekt bearbeiten",vm="Statuswert bearbeiten",Ym="Läuft ab in",Qm="Von",bm="Zuletzt geändert",Um="Qualität",$m="Zeitstempel",Pm="Benutzer",Wm="Wert",Jm="WAHR",Bm="Wert",Rm="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Minute ausgeführt!",Fm="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Sekunde ausgeführt!",Gm="CRON",Hm="Datum",Vm="Tage",Zm="Tag",Xm="Wochentage",Km="Jeden",qm="alle N Tage",e3="jeden x-ten Tag der Woche",t3="alle N Wochentage",s3="alle N Stunden",i3="alle N Minuten",r3="alle N Monate",o3="alle N Sekunden",n3="jeden Tag",a3="jeden Tag der Woche",M3="jeden Tag der Woche",c3="jede Stunde",u3="jede Minute",l3="jeden Monat",N3="jede Sekunde",L3="Von",g3="Stunden",j3="Intervall",y3="Intervall zwischen",T3="Ungültiger CRON",D3="Minuten",d3="Monate",h3="Einmal",z3="Zeitraum",w3="Sekunden",I3="Einfach",C3="Bestimmte Zeit",p3="bestimmte Tage",A3="bestimmte(r) Tag(e) der Woche",m3="bestimmten Wochentag",f3="bestimmte Stunden",O3="bestimmte Minuten",E3="bestimmte Monate",_3="bestimmte Sekunden",x3="Zeit",S3="Bis",k3="Wizard",v3="alle",Y3="Astronomischer Tag",Q3="Astronomische Nacht",b3="Morgendämmerung",U3="Abenddämmerung",$3="Goldene Stunde",P3="Goldene Stundenende",W3="Nadir",J3="Nautische Morgendämmerung",B3="Nautische Abenddämmerung",R3="Nacht",F3="Nachtende",G3="Sonnenmittag",H3="Sonnenaufgang",V3="Sonnenaufgangende",Z3="Sonnenuntergang",X3="Sonnenuntergangstart",K3="am",q3="um %s",ef="jeden Tag",tf="jede Stunde",sf="jede Minute",rf="jeden Monat",of="jeden %s Tag",nf="alle %s Stunden",af="alle %s Minuten",Mf="alle %s Monate",cf="alle %s Wochen",uf="alle %s Jahre",lf="jede Woche",Nf="jedes Jahr",Lf="von %s bis %s",gf="noch nie",jf="am %s von %s",yf="am %s und %s von",Tf="an jedem Datum von",Df="%s",df="%s und %s",hf="auf %s",zf="auf %s und %s",wf="an Wochenenden",If="an Werktagen",Cf="wird nicht mehr ausgeführt, weil der Start in der Vergangenheit ist",pf="auf %s",Af="von %s",mf="Ausführen von bis",ff="bis %s",Of="jeden",Ef="Bestimmte Zeit",_f="von",xf="Von bis",Sf="Zeitintervall",kf="umkehren",vf="keiner",Yf="am",Qf="Zeitraum",bf="Täglich",Uf="Daten",$f="Tag",Pf="Jeden",Wf="Jeden Tag",Jf="Jeden Monat",Bf="Jede Woche",Rf="Jedes Jahr",Ff="Stunden",Gf="Minuten",Hf="Monat",Vf="Monatlich",Zf="Einmal",Xf="Bestimmte Monate",Kf="Woche",qf="Wochentage",eO="Wochenende",tO="Wöchentlich",sO="Arbeitstage",iO="Jahr",rO="Jährlich",oO="Bestimmte Zeit",nO="Zeit",aO="zu",MO="Gültigkeit",cO="von",uO="bis",lO="Ganzer Tag",NO="jeden Monat",LO={"ra_%s links from aliases":"%s Links von Aliasen","ra_%s object(s) processed":"%s Objekt(e) verarbeitet","ra_%s was imported":"%s wurde importiert","ra_Accept license":"Lizenz akzeptieren",ra_Actions:ip,"ra_Add new child object to selected parent":"Dem ausgewählten übergeordneten Objekt ein neues untergeordnetes Objekt hinzufügen","ra_Add objects tree from JSON file":"Objektbaum aus JSON-Datei hinzufügen","ra_Add row":"Zeile hinzufügen","ra_Advanced options":"Erweiterte Optionen","ra_All items are filtered out":"Alle Elemente sind herausgefiltert","ra_All objects":"Alle Objekte",ra_Append:rp,"ra_Append %s entries or replace existing?":"%s Einträge anhängen oder vorhandene ersetzen?","ra_Append or replace?":"Anhängen oder ersetzen?","ra_Are you sure?":"Bist du sicher?","ra_Auto (no custom columns)":"Auto (keine benutzerdefinierten Spalten)","ra_Back to %s":"Zurück zu %s","ra_Background image":"Hintergrundbild",ra_Cancel:op,"ra_Cannot add items with set filter":"Elemente mit festgelegtem Filter können nicht hinzugefügt werden","ra_Cannot decode license":"Lizenz kann nicht entschlüsselt werden","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Position kann nicht bestimmt werden: Die Systemeinstellungen sind leer und die GPS-Erkennung ist im Browser deaktiviert",'ra_Cannot find "%s"':'Kann "%s" nicht finden','ra_Cannot read "%s"':'"%s" kann nicht gelesen werden',"ra_Cannot read licenses: %s":"Lizenzen können nicht gelesen werden: %s","ra_Cannot retrieve options, as instance is offline":"Optionen können nicht abgerufen werden, da die Instanz offline ist","ra_Cannot update attribute, because not found in the object":"Attribut kann nicht aktualisiert werden, da es nicht im Objekt gefunden wurde","ra_Cannot upload":"Kann nicht hochladen",ra_Categories:np,"ra_Chained certificate":"Chained Zertifikat","ra_Change color theme":"Farbthema ändern","ra_Changed from":"Geändert von","ra_Channel → State":"Kanal → Zustand","ra_Check license":"Lizenz prüfen",ra_Checked:ap,ra_Clear:Mp,"ra_Clear filter":"Filter löschen","ra_Clear icon":"Symbol löschen","ra_Click to see in full size":"Klicken Sie hier, um die Vollbildansicht zu öffnen.","ra_Click to show":"Zum Anzeigen klicken","ra_Clone current row":"Aktuelle Zeile klonen",ra_Close:cp,"ra_Collapse all nodes":"Alle Knoten zuklappen","ra_Collapse one step node":"Eine Ebene zuklappen",ra_Commercial:up,ra_Configure:lp,"ra_Configure visible columns":"Spalten Konfigurieren","ra_Confirm deletion of %s":"Das Löschen von %s bestätigen",ra_Connected:Np,ra_Continue:Lp,ra_Copied:gp,"ra_Copied %s":'"%s" kopiert',"ra_Copy content":"Inhalte kopieren",ra_Create:jp,"ra_Create alias":"Alias erstellen","ra_Create folder":"Ordner erstellen","ra_Create new folder in %s":'Neuen Ordner in "%s" erstellen',ra_Crop:yp,"ra_Define CRON...":"Definieren Sie CRON ...","ra_Define functions":"Funktionen definieren","ra_Define rooms":"Räume definieren","ra_Define schedule":"Zeitplan definieren","ra_Define schedule...":"Zeitplan definieren ...",ra_Del:Tp,ra_Delete:Dp,"ra_Delete current row":"Aktuelle Zeile löschen","ra_Deselect all":"Alles abwählen","ra_Device → Channel → State":"Gerät → Kanal → Zustand","ra_Disable/Enable translation":"Übersetzung deaktivieren/aktivieren",ra_Discard:dp,ra_Disconnected:hp,"ra_Do not ask for next 2 hours in this session":"Fragen Sie nicht nach den nächsten 2 Stunden in dieser Sitzung","ra_Do not export values of states":"Keine Zustandswerte exportieren","ra_Do not use let's encrypt":"Let's encrypt nicht verwenden","ra_Docker is not available":"Docker ist nicht verfügbar","ra_Docker is not installed or not running":"Docker ist nicht installiert oder läuft nicht","ra_Double click to reset table layout":"Doppelklicken, um das Tabellenlayout zurückzusetzen","ra_Drag 'n' drop some files here, or click to select files":"Die Datei hierher ziehen und ablegen, oder klicken, um die Datei auszuwählen","ra_Drop file here":"Datei hier ablegen","ra_Drop the files here...":"Datei hier ablegen...","ra_Duplicate name":"Doppelter Name","ra_Edit ACL":"ACL bearbeiten","ra_Edit alias":"Alias bearbeiten","ra_Edit custom config":"Bearbeite Benutzerdefinierte Konfiguration","ra_Edit full path":"Vollständigen Pfad bearbeiten","ra_Edit function":"Funktion bearbeiten","ra_Edit object field":"Objektfeld bearbeiten","ra_Edit role":"Rolle bearbeiten","ra_Edit room":"Raum bearbeiten","ra_Edit value":"Wert bearbeiten","ra_Enter the code from that page here":"Geben Sie den Code von dieser Seite hier ein",ra_Error:zp,"ra_Expand all nodes":"Alle Knoten aufklappen","ra_Expand one step node":"Eine Ebene aufklappen","ra_Expand/Collapse card":"Karte ein-/ausklappen","ra_Export configuration section":"Konfigurationsabschnitt exportieren","ra_Export data to %s file":"Daten in %s-Datei exportieren","ra_Failed to open JSON File":"Fehler beim Öffnen der JSON-Datei","ra_Fallback custom certificates":"Benutzerdefinierte Fallback-Zertifikate","ra_File is too big. Max %sk allowed. Try use SVG.":"Datei ist zu groß. Max %sk erlaubt. Versuchen Sie, SVG zu verwenden.",ra_Filter:wp,"ra_Filter and Data Actions":"Filter- und Datenaktionen","ra_Filter files":"Dateien filtern","ra_Folder name":"Ordnernamen","ra_Folder → Channel → State":"Ordner → Kanal → Zustand","ra_Folder → Device → Channel → State":"Ordner → Gerät → Kanal → Zustand","ra_Folder → State":"Ordner → Zustand","ra_Folders always first":"Ordner immer zuerst",ra_Friday:Ip,"ra_From file":"Aus der Datei","ra_From text":"Aus dem Text","ra_Get %s access":"%s Zugriff erhalten","ra_Good luck":"Viel Glück","ra_Hide empty folders":"Leere Ordner ausblenden","ra_If no file will be created in the folder, it will disappear after the browser closed":"Wenn im Ordner keine Datei erstellt wird, verschwindet dieser nach dem Schließen des Browsers","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Wenn die Schaltfläche oben nicht funktioniert, können Sie diese App manuell autorisieren, indem Sie diese URL besuchen","ra_Import and add configuration section":"Konfigurationsabschnitt importieren und hinzufügen","ra_Import and replace configuration section":"Konfigurationsabschnitt importieren und ersetzen","ra_Import data from %s file":"Daten aus %s-Datei importieren","ra_Import from %s":"Von %s importieren","ra_Instance %s is alive":"Instanz %s ist aktiv","ra_Instance %s is not alive":"Instanz %s ist nicht aktiv","ra_Instance is not alive":"Instanz ist nicht am Leben","ra_Invalid CRON":"Ungültiger CRON","ra_Invalid JSON":"Ungültiges JSON","ra_Invalid JSON file.":"Ungültige JSON-Datei.","ra_Invalid JSON format. Expected an array.":"Ungültiges JSON-Format. Array erwartet.","ra_Invalid answer from server":"Ungültige Antwort vom Server","ra_Invalid parent folder!":"Ungültiger übergeordneter Ordner!","ra_Invalid structure":"Ungültige Struktur","ra_JSON editor":"JSON-Editor","ra_Last change":"Letzte Änderung",ra_Latitude:Cp,"ra_License %s":"Lizenz %s","ra_License agreement":"Lizenzvereinbarung","ra_License does not exist":"Lizenz existiert nicht","ra_License expired on %s":"Lizenz am %s abgelaufen",'ra_License for other product "%s"':"Lizenz für anderes Produkt „%s“","ra_License is for version %s, but required version is %s.":"Lizenz ist für Version %s, aber erforderliche Version ist %s.","ra_License must be converted":"Die Lizenz muss auf eine neuere Version konvertiert werden. Sie können dies in Ihrem iobroker.net-Profil tun.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Lizenz im Lizenzmanager nicht gefunden. Möchten Sie Lizenzen von iobroker.net aktualisieren?","ra_Listen on all IPs":"Zugriff von allen IPs zulassen","ra_Load configuration from file":"Konfiguration aus Datei laden",ra_Logout:pp,ra_Longitude:Ap,'ra_May not trigger "updateLicenses"':"Löst möglicherweise nicht „updateLicenses“ aus",ra_Message:mp,ra_Monday:fp,"ra_Move down":"Nach unten","ra_Move up":"Nach oben",ra_Name:Op,"ra_No data found in file":"Keine Daten in der Datei gefunden","ra_No one license found in license manager":"Im Lizenzmanager wurde keine Lizenz gefunden","ra_No response from admin":"Keine Antwort vom Administrator","ra_No response from the backend":"Keine Antwort vom Backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Nicht-Experten dürfen neue Objekte nur in "0_userdata.0" oder "alias.0" erstellen.',"ra_Not a number":"Keine Nummer","ra_OAuth Client ID":"OAuth-Client-ID","ra_OAuth Client secret":"OAuth-Client-Secret",ra_Objects:Ep,ra_Ok:_p,"ra_On weekdays":"An Wochentagen","ra_Only following structures of objects are available:":"Es stehen nur folgende Objektstrukturen zur Verfügung:","ra_Only selected":"Nur ausgewählt","ra_Owner group":"Besitzergruppe","ra_Owner user":"Besitzer Benutzer","ra_Passwords are not equal!":"Passwörter sind nicht gleich!","ra_Place your files here or click here to open the browse dialog":"Die Dateien hier platzieren oder hier klicken, um den Suchdialog zu öffnen","ra_Please allow popups in your browser for this page!":"Bitte lassen Sie Popups für diese Seite in Ihrem Browser zu!","ra_Please confirm":"Bitte bestätigen","ra_Please create license":"Bitte erstellen Sie eine Lizenz","ra_Please enter the license":"Bitte die Lizenz eingeben","ra_Please select file...":"Bitte Datei auswählen...","ra_Please select object ID...":"Bitte Objekt-ID auswählen...","ra_Port could be used by %s":"Port könnte von %s verwendet werden","ra_Port is already used by %s":"Port wird bereits von %s verwendet","ra_Press ENTER Key to add new item":"Die Eingabetaste drücken, um ein neues Element hinzuzufügen","ra_Private certificate":"Privates Zertifikat",ra_Product:xp,"ra_Public certificate":"Öffentliches Zertifikat","ra_Quality code":"Qualität","ra_Refresh tree":"Baum aktualisieren","ra_Reload files":"Dateien neu laden",ra_Rename_Move_Copy:Sp,"ra_Renew %s access":"%s Zugriff erneuern",ra_Repeat:kp,ra_Replace:vp,"ra_Request timed out":"Zeitüberschreitung der Anforderung","ra_Restrict to folder":"Auf Ordner beschränken",ra_Root:Yp,ra_Saturday:Qp,ra_Save:bp,"ra_Save and close":"Speichern und schließen","ra_Save configuration to file":"Konfiguration in Datei speichern","ra_Save objects tree as JSON file":"Objektbaum als JSON-Datei speichern","ra_Select all":"Alle auswählen","ra_Select color":"Wähle Farbe","ra_Select predefined icon":"Vordefiniertes Symbol auswählen","ra_Select type of export":"Die Art des Exports auswählen ",ra_Selected:Up,"ra_Selected %s object(s)":"Ausgewählt %s Objekt(en)","ra_Serial number (UUID)":"Seriennummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Seriennummer (UUID) „%s“ in der Lizenz gilt für ein anderes Gerät.","ra_Session will expire in %s seconds. Continue?":"Die Sitzung läuft in %s Sekunden ab. Fortfahren?","ra_Show all folders":"Alle Ordner anzeigen","ra_Show lines between rows":"Linien zwischen Zeilen anzeigen","ra_Show/Hide object descriptions":"Objektbeschreibungen ein-/ausblenden","ra_Show/hide filter input":"Filtereingabe ein-/ausblenden","ra_Some data are not stored. Discard?":"Einige Daten werden nicht gespeichert. Verwerfen?",ra_States:$p,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Erfolgreich autorisiert. Token gültig bis %s und wird automatisch erneuert.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Erfolgreich autorisiert. Token gültig bis %s, kann aber ablaufen, da die Instanz nicht ausgeführt wird.","ra_Suitable license not found in license manager":"Passende Lizenz im Lizenzmanager nicht gefunden",ra_Sunday:Pp,"ra_Suppress question for next %s minutes":"Frage für die nächsten %s Minuten unterdrücken","ra_System language":"Systemsprache","ra_Take browser position":"Position vom Browser einnehmen","ra_Take position from system settings":"Position aus den Systemeinstellungen übernehmen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Die Experten können Objekte überall erstellen, außer auf der zweiten Ebene (z. B. "vis.0" oder "javascript.0").',"ra_The page you are looking for was not found":"Die gesuchte Seite wurde nicht gefunden","ra_The schedule will be executed every minute. Are you sure?":"Der Zeitplan wird jede Minute ausgeführt. Sind Sie sicher?","ra_The schedule will be executed every second. Are you sure?":"Der Zeitplan wird jede Sekunde ausgeführt. Sind Sie sicher?",ra_Thursday:Wp,ra_Timestamp:Jp,"ra_Toggle expert mode":"Expertenmodus umschalten","ra_Toggle the states view":"Statusansicht umschalten","ra_Toggle view mode":"Ansichtsmodus umschalten","ra_Too big":"Zu groß","ra_Too small":"Zu klein","ra_Transparent dialog":"Transparenter Dialog",ra_Tuesday:Bp,"ra_Unknown error":"Unbekannter Fehler","ra_Unknown error!":"Unbekannter Fehler!",ra_Update:Rp,"ra_Upload file":"Datei hochladen","ra_Use all available let's encrypt certificates":"Alle verfügbaren Zertifikate von Let's encrypt benutzen","ra_Use iobroker.acme adapter for letsencrypt certificates":"ioBroker.acme-Adapter für letsencrypt-Zertifikate verwenden","ra_Use system settings for position":"Systemeinstellungen für die Position verwenden","ra_Used system settings":"Systemeinstellungen","ra_User files":"Benutzerdaten",ra_ValidTill:Fp,ra_Value:Gp,ra_Version:Hp,"ra_View file":"Datei ansehen","ra_View: %s":"Anschauen: %s",ra_Wednesday:Vp,ra_Width:Zp,"ra_YAML editor":"YAML-Editor",ra_Yes:Xp,"ra_You can export all objects or just the selected branch.":"Sie können alle Objekte oder nur den ausgewählten Zweig exportieren.","ra_You can filter entries by entering here some text":"Sie können Einträge filtern, indem Sie hier Text eingeben","ra_You can use * as wildcard":"Sie können * als Platzhalter verwenden",ra___different__:Kp,ra_aclEveryone_read_object:qp,ra_aclEveryone_read_state:eA,ra_aclEveryone_write_object:tA,ra_aclEveryone_write_state:sA,ra_aclGroup_read_object:iA,ra_aclGroup_read_state:rA,ra_aclGroup_write_object:oA,ra_aclGroup_write_state:nA,ra_aclOwner_read_object:aA,ra_aclOwner_read_state:MA,ra_aclOwner_write_object:cA,ra_aclOwner_write_state:uA,ra_buttons:lA,ra_changedFrom:NA,ra_close:LA,ra_create_boolean_state:gA,ra_create_channel:jA,ra_create_device:yA,ra_create_number_state:TA,ra_create_state:DA,ra_create_string_state:dA,ra_daysShortText:hA,ra_dow_Fr:zA,ra_dow_Mo:wA,ra_dow_Sa:IA,ra_dow_Su:CA,ra_dow_Th:pA,ra_dow_Tu:AA,ra_dow_We:mA,ra_expertMode:fA,ra_false:OA,ra_fileType_all:EA,ra_fileType_audio:_A,ra_fileType_code:xA,ra_fileType_images:SA,ra_fileType_txt:kA,ra_fileType_video:vA,"ra_fileType_video,":"Video",ra_filter_customs:YA,ra_filter_customs_without:QA,ra_filter_func:bA,ra_filter_id:UA,ra_filter_name:$A,ra_filter_role:PA,ra_filter_room:WA,ra_filter_type:JA,"ra_import data from %s file":"Daten aus %s-Datei importieren",ra_invalidConfig:BA,ra_lastChange:RA,ra_locally:FA,ra_month_Apr:GA,ra_month_Aug:HA,ra_month_Dec:VA,ra_month_Feb:ZA,ra_month_Jan:XA,ra_month_Jul:KA,ra_month_Jun:qA,ra_month_Mai:em,ra_month_Mar:tm,ra_month_Nov:sm,ra_month_Oct:im,ra_month_Sep:rm,ra_months_Apr:om,ra_months_Aug:nm,ra_months_Dec:am,ra_months_Feb:Mm,ra_months_Jan:cm,ra_months_Jul:um,ra_months_Jun:lm,ra_months_Mai:Nm,ra_months_Mar:Lm,ra_months_Nov:gm,ra_months_Oct:jm,ra_months_Sep:ym,"ra_no confirm for 5 mins":"5 Minuten lang keine Bestätigung",ra_none:Tm,ra_object_changed_by:Dm,ra_object_changed_by_user:dm,ra_otherConfig:hm,ra_qualityCode:zm,ra_repeat:wm,ra_select_folder_hint:Im,ra_show_all:Cm,ra_state_changed_by:pm,ra_state_changed_from:Am,ra_timestamp:mm,ra_tooltip_ack:fm,ra_tooltip_comment:Om,ra_tooltip_copyState:Em,ra_tooltip_ctrlForLink:_m,ra_tooltip_customConfig:xm,ra_tooltip_deleteObject:Sm,ra_tooltip_editObject:km,ra_tooltip_editState:vm,ra_tooltip_expire:Ym,ra_tooltip_from:Qm,ra_tooltip_lc:bm,ra_tooltip_quality:Um,ra_tooltip_ts:$m,ra_tooltip_user:Pm,ra_tooltip_value:Wm,ra_true:Jm,"ra_use seconds":"Sekunden benutzen",ra_val:Bm,"ra_via internet":"übers Internet",ra_warning_every_minute:Rm,ra_warning_every_second:Fm,sc_cron:Gm,sc_date:Hm,sc_dates:Vm,sc_dow:Zm,sc_dows:Xm,sc_every:Km,sc_everyN_dates:qm,sc_everyN_dow:e3,sc_everyN_dows:t3,sc_everyN_hours:s3,sc_everyN_minutes:i3,sc_everyN_months:r3,sc_everyN_seconds:o3,sc_every_dates:n3,sc_every_dow:a3,sc_every_dows:M3,sc_every_hours:c3,sc_every_minutes:u3,sc_every_months:l3,sc_every_seconds:N3,sc_from:L3,sc_hours:g3,sc_interval:j3,sc_intervalBetween:y3,sc_invalid_cron:T3,sc_minutes:D3,sc_months:d3,sc_once:h3,sc_period:z3,sc_seconds:w3,sc_simple:I3,sc_specific:C3,sc_specific_dates:p3,sc_specific_dow:A3,sc_specific_dows:m3,sc_specific_hours:f3,sc_specific_minutes:O3,sc_specific_months:E3,sc_specific_seconds:_3,sc_time:x3,sc_to:S3,sc_wizard:k3,sch_all:v3,sch_astroDay:Y3,sch_astroNight:Q3,sch_astro_dawn:b3,sch_astro_dusk:U3,sch_astro_goldenHour:$3,sch_astro_goldenHourEnd:P3,sch_astro_nadir:W3,sch_astro_nauticalDawn:J3,sch_astro_nauticalDusk:B3,sch_astro_night:R3,sch_astro_nightEnd:F3,sch_astro_solarNoon:G3,sch_astro_sunrise:H3,sch_astro_sunriseEnd:V3,sch_astro_sunset:Z3,sch_astro_sunsetStart:X3,sch_at:K3,sch_desc_atTime:q3,sch_desc_everyDay:ef,sch_desc_everyHour:tf,sch_desc_everyMinute:sf,sch_desc_everyMonth:rf,sch_desc_everyNDay:of,sch_desc_everyNHours:nf,sch_desc_everyNMinutes:af,sch_desc_everyNMonths:Mf,sch_desc_everyNWeeks:cf,sch_desc_everyNYears:uf,sch_desc_everyWeek:lf,sch_desc_everyYear:Nf,sch_desc_intervalFromTo:Lf,sch_desc_never:gf,sch_desc_onDate:jf,sch_desc_onDates:yf,sch_desc_onEveryDate:Tf,sch_desc_onMonth:Df,sch_desc_onMonths:df,sch_desc_onWeekday:hf,sch_desc_onWeekdays:zf,sch_desc_onWeekends:wf,sch_desc_onWorkdays:If,sch_desc_onceInPast:Cf,sch_desc_once_on:pf,sch_desc_validFrom:Af,sch_desc_validFromTo:mf,sch_desc_validTo:ff,sch_every:Of,sch_exactTime:Ef,sch_from:_f,sch_fromTo:xf,sch_intervalTime:Sf,sch_invert:kf,sch_no_one:vf,sch_on:Yf,sch_period:Qf,sch_periodDaily:bf,sch_periodDates:Uf,sch_periodDay:$f,sch_periodEvery:Pf,sch_periodEveryDay:Wf,sch_periodEveryMonth:Jf,sch_periodEveryWeek:Bf,sch_periodEveryYear:Rf,sch_periodHours:Ff,sch_periodMinutes:Gf,sch_periodMonth:Hf,sch_periodMonthly:Vf,sch_periodOnce:Zf,sch_periodSpecificMonths:Xf,sch_periodWeek:Kf,sch_periodWeekdays:qf,sch_periodWeekend:eO,sch_periodWeekly:tO,sch_periodWorkdays:sO,sch_periodYear:iO,sch_periodYearly:rO,sch_specificTime:oO,sch_time:nO,sch_to:aO,sch_valid:MO,sch_validFrom:cO,sch_validTo:uO,sch_wholeDay:lO,sch_yearEveryMonth:NO},gO="Действия",jO="Добавить",yO="Отмена",TO="Категории",DO="Проверено",dO="Удалить",hO="Закрыть",zO="Коммерческая",wO="Настроить",IO="Соединение установлено",CO="Продолжать",pO="скопировано",AO="Создать",mO="Обрезать",fO="Delete",OO="Удалить",EO="Отказаться",_O="Отключено",xO="Ошибка",SO="Фильтр",kO="Пятница",vO="Широта",YO="Выйти",QO="Долгота",bO="Сообщение",UO="Понедельник",$O="Имя",PO="Объекты",WO="Ok",JO="Продукт",BO="Переименовать/Переместить/Копировать",RO="Повторение",FO="Заменять",GO="Начало",HO="Суббота",VO="Сохранить",ZO="выбранный",XO="Состояния",KO="Воскресенье",qO="Четверг",eE="Времени",tE="Вторник",sE="Обновить",iE="Годен до",rE="Значение",oE="Версия",nE="Среда",aE="Ширина",ME="Да",cE="разное",uE="Каждый может читать объект",lE="Каждый может читать состояние",NE="Каждый может написать объект",LE="Каждый может написать состояние",gE="Группа может читать объект",jE="Группа может читать состояние",yE="Группа может писать объект",TE="Группа может записывать состояние",DE="Владелец может читать объект",dE="Владелец может читать состояние",hE="Владелец может писать объект",zE="Владелец может писать состояние",wE="Кнопки",IE="Изменено с",CE="Закрыть",pE="Создать логическое состояние",AE="Создать канал",mE="Создать устройство",fE="Создать состояние номера",OE="Создать состояние",EE="Создать состояние строки",_E="д.",xE="Пт",SE="Пн",kE="Сб",vE="Вс",YE="Чт",QE="Вт",bE="Ср",UE="Экспертный режим",$E="ЛОЖЬ",PE="Все файлы",WE="Аудио",JE="Код/JSON",BE="Картинки",RE="Текст",FE="видео",GE="настройки",HE="без",VE="функция",ZE="ID",XE="Имя",KE="роль",qE="комната",e_="Тип",t_="Неверные настройки",s_="Последнее изменение",i_="локально",r_="Апр",o_="Авг",n_="Дек",a_="Фев",M_="Янв",c_="Июл",u_="Июн",l_="Май",N_="Мрт",L_="Ноя",g_="Окт",j_="Сен",y_="Апр",T_="Авг",D_="Дек",d_="Фев",h_="Янв",z_="Июнь",w_="Июль",I_="Май",C_="Март",p_="Ноя",A_="Окт",m_="Сен",f_="ничего",O_="Объект изменен",E_="Последний раз объект изменен в",__="Настройки из другого адаптера %s",x_="Код качества",S_="повтор",k_="Чтобы выбрать папку, просто удерживайте клавишу «Shift», щелкнув папку.",v_="Показать все",Y_="Состояние изменено",Q_="Объект изменен с",b_="Отметка времени",U_="Подтверждено",$_="Комментарий",P_="Скопируйте значение состояния",W_="Удерживайте клавишу Cltr/⌘, чтобы открыть ссылку",J_="Пользовательские настройки",B_="Удалить объект",R_="Редактировать объект",F_="Изменить значение состояния",G_="Истекает через",H_="От",V_="Последнее изменение",Z_="Качество",X_="Отметка времени",K_="пользователь",q_="Значение",ex="истинный",tx="Значение",sx="Внимание: задание CRON будет запускаться каждую минуту в течение указанного периода!",ix="Внимание: задание CRON будет выполняться каждую секунду в течение указанного периода!",rx="CRON",ox="Дата",nx="Даты",ax="День",Mx="День недели",cx="каждый(ую/ые)",ux="каждый N день",lx="каждый N-й день недели",Nx="каждый N день недели",Lx="каждые N часов",gx="каждые N минут",jx="каждые N месяцев",yx="каждые N секунд",Tx="каждый день",Dx="Каждый день недели",dx="каждый день недели",hx="каждый час",zx="каждую минуту",wx="каждый месяц",Ix="каждую секунду",Cx="От",px="часы",Ax="Интервал",mx="Интервал между",fx="Неверный CRON",Ox="минуты",Ex="Месяцы",_x="один раз",xx="Период",Sx="секунды",kx="Просто",vx="Конкретное время",Yx="конкретные даты",Qx="конкретный день(а) недели",bx="конкретный день недели",Ux="конкретные часы",$x="конкретные минуты",Px="конкретные месяцы",Wx="конкретные секунды",Jx="Время",Bx="До",Rx="Форма",Fx="все",Gx="днём",Hx="ночью",Vx="Рассвет",Zx="Сумерки",Xx="Золотой час",Kx="Конец золотого часа",qx="Надир",eS="Морской рассвет",tS="Морские сумерки",sS="Ночь",iS="Конец ночи",rS="Солнечный полдень",oS="Восход",nS="Восход солнца",aS="Заход солнца",MS="Начало заката",cS="дата",uS="в %s",lS="каждый день",NS="каждый час",LS="каждую минуту",gS="каждый месяц",jS="каждый %s день",yS="каждый %s часов",TS="каждые %s минут",DS="каждые %s месяцев",dS="каждые %s недель",hS="каждые %s лет",zS="каждую неделю",wS="каждый год",IS="от %s до %s",CS="никогда",pS="%s %s",AS="%s и %s",mS="в каждый день",fS="%s",OS="%s и %s",ES="%s",_S="%s и %s",xS="на выходных",SS="в рабочие дни",kS="не будет больше выполняться, потому что начало в прошлом",vS="%s",YS="%s",QS="Выполнить с",bS="%s",US="каждый",$S="Конкретное время",PS="от",WS="От и до",JS="Интервал времени",BS="инвертировать",RS="никакой",FS="на",GS="период",HS="Ежедневно",VS="Даты",ZS="День",XS="каждый",KS="Каждый день",qS="Каждый месяц",e5="Каждую неделю",t5="Каждый год",s5="часов",i5="минут",r5="месяц",o5="ежемесячно",n5="однажды",a5="Конкретные месяцы",M5="Неделю",c5="Будние дни",u5="выходные",l5="еженедельно",N5="Рабочие дни",L5="Год",g5="каждый год",j5="Конкретное время",y5="Время",T5="в",D5="действительный",d5="от",h5="в",z5="Весь день",w5="каждый месяц",I5={"ra_%s links from aliases":"%s ссылок из псевдонимов","ra_%s object(s) processed":"Объектов обработано: %s","ra_%s was imported":"%s был импортирован","ra_Accept license":"Принять лицензию",ra_Actions:gO,"ra_Add new child object to selected parent":"Добавить новый дочерний объект к выбранному родительскому объекту","ra_Add objects tree from JSON file":"Добавить дерево объектов из файла JSON","ra_Add row":"Добавить ряд","ra_Advanced options":"Расширенные настройки","ra_All items are filtered out":"Все элементы отфильтрованы","ra_All objects":"Все объекты",ra_Append:jO,"ra_Append %s entries or replace existing?":"Добавить записи %s или заменить существующие?","ra_Append or replace?":"Дополнить или заменить?","ra_Are you sure?":"Вы уверены?","ra_Auto (no custom columns)":"Авто (без настраиваемых столбцов)","ra_Back to %s":"Вернуться к %s","ra_Background image":"Фоновая картинка",ra_Cancel:yO,"ra_Cannot add items with set filter":"Невозможно добавить элементы с установленным фильтром","ra_Cannot decode license":"Не могу декодировать лицензию","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Невозможно определить местоположение: системные настройки пусты, а обнаружение GPS отключено в браузере.",'ra_Cannot find "%s"':'Не могу найти "%s"','ra_Cannot read "%s"':'Не могу прочитать "%s"',"ra_Cannot read licenses: %s":"Невозможно прочитать лицензии: %s","ra_Cannot retrieve options, as instance is offline":"Невозможно получить параметры, так как экземпляр находится в автономном режиме.","ra_Cannot update attribute, because not found in the object":"Невозможно обновить атрибут, потому что он не найден в объекте","ra_Cannot upload":"Невозможно загрузить",ra_Categories:TO,"ra_Chained certificate":"Chained сертификат","ra_Change color theme":"Изменить цветовую тему","ra_Changed from":"Изменено","ra_Channel → State":"Канал → Состояние","ra_Check license":"Проверить лицензию",ra_Checked:DO,ra_Clear:dO,"ra_Clear filter":"Очистить фильтр","ra_Clear icon":"Очистить значок","ra_Click to see in full size":"Нажмите, чтобы посмотреть в полном размере","ra_Click to show":"Нажмите, чтобы показать","ra_Clone current row":"Клонировать текущую строку",ra_Close:hO,"ra_Collapse all nodes":"Свернуть все узлы","ra_Collapse one step node":"Свернуть один уровень",ra_Commercial:zO,ra_Configure:wO,"ra_Configure visible columns":"Настроить видимые столбцы","ra_Confirm deletion of %s":"Подтвердите удаление %s",ra_Connected:IO,ra_Continue:CO,ra_Copied:pO,"ra_Copied %s":'Скопировано "%s"',"ra_Copy content":"Копировать содержимое",ra_Create:AO,"ra_Create alias":"Создать псевдоним","ra_Create folder":"Создать папку","ra_Create new folder in %s":"Создать новую папку в %s",ra_Crop:mO,"ra_Define CRON...":"Определите CRON...","ra_Define functions":"Задать функции","ra_Define rooms":"Задать комнаты","ra_Define schedule":"Задать расписание","ra_Define schedule...":"Определить расписание ...",ra_Del:fO,ra_Delete:OO,"ra_Delete current row":"Удалить текущую строку","ra_Deselect all":"Убрать выбор везде","ra_Device → Channel → State":"Устройство → Канал → Состояние","ra_Disable/Enable translation":"Включить/отключить перевод",ra_Discard:EO,ra_Disconnected:_O,"ra_Do not ask for next 2 hours in this session":"Не спрашивайте о следующих 2 часах в этом сеансе","ra_Do not export values of states":"Не экспортировать значения состояний","ra_Do not use let's encrypt":"Не использовать Let’s Encrypt","ra_Docker is not available":"Докер недоступен","ra_Docker is not installed or not running":"Docker не установлен или не запущен","ra_Double click to reset table layout":"Дважды щелкните, чтобы сбросить макет таблицы","ra_Drag 'n' drop some files here, or click to select files":"Перетащите сюда несколько файлов или щелкните, чтобы выбрать файлы","ra_Drop file here":"Перетащите файл сюда","ra_Drop the files here...":"Перетащите файл сюда ...","ra_Duplicate name":"Повторяющееся имя","ra_Edit ACL":"Изменить ACL-список","ra_Edit alias":"Изменить псевдоним","ra_Edit custom config":"Редактировать настраиваемую конфигурацию","ra_Edit full path":"Изменить полный путь","ra_Edit function":"Изменить функцию","ra_Edit object field":"Поле редактирования объекта","ra_Edit role":"Изменить роль","ra_Edit room":"Редактировать комнату","ra_Edit value":"Изменить значение","ra_Enter the code from that page here":"Введите код с этой страницы здесь",ra_Error:xO,"ra_Expand all nodes":"Развернуть все узлы","ra_Expand one step node":"Открыть один уровень","ra_Expand/Collapse card":"Развернуть/Свернуть карточку","ra_Export configuration section":"Раздел конфигурации экспорта","ra_Export data to %s file":"Экспорт данных в файл %s","ra_Failed to open JSON File":"Не удалось открыть файл JSON","ra_Fallback custom certificates":"Резервные пользовательские сертификаты","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл слишком большой. Разрешено максимальное количество %sk. Попробуйте использовать SVG.",ra_Filter:SO,"ra_Filter and Data Actions":"Фильтрация и действия с данными","ra_Filter files":"Фильтровать файлы","ra_Folder name":"Имя папки","ra_Folder → Channel → State":"Папка → Канал → Состояние","ra_Folder → Device → Channel → State":"Папка → Устройство → Канал → Состояние","ra_Folder → State":"Папка → Состояние","ra_Folders always first":"Папки всегда на первом месте",ra_Friday:kO,"ra_From file":"Из файла","ra_From text":"Из текста","ra_Get %s access":"Получить %s доступ","ra_Good luck":"Удачи","ra_Hide empty folders":"Скрыть пустые папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Если в папке не будет создан файл, он исчезнет после закрытия браузера.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Если кнопка выше не работает, вы можете вручную авторизовать это приложение, перейдя по этой ссылке.","ra_Import and add configuration section":"Импорт и добавление раздела конфигурации","ra_Import and replace configuration section":"Импорт и замена раздела конфигурации","ra_Import data from %s file":"Импорт данных из файла %s","ra_Import from %s":"Импорт из %s","ra_Instance %s is alive":"Экземпляр %s работает","ra_Instance %s is not alive":"Экземпляр %s не работает","ra_Instance is not alive":"Экземпляр не живой","ra_Invalid CRON":"Неверный CRON","ra_Invalid JSON":"Неверный JSON","ra_Invalid JSON file.":"Неверный файл JSON.","ra_Invalid JSON format. Expected an array.":"Недопустимый формат JSON. Ожидается массив.","ra_Invalid answer from server":"Неверный ответ от сервера","ra_Invalid parent folder!":"Неверная родительская папка!","ra_Invalid structure":"Неверная структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Последнее изменение",ra_Latitude:vO,"ra_License %s":"Лицензия %s","ra_License agreement":"Лицензионное соглашение","ra_License does not exist":"Лицензия не существует","ra_License expired on %s":"Срок действия лицензии истек %s",'ra_License for other product "%s"':'Лицензия на другой продукт "%s"',"ra_License is for version %s, but required version is %s.":"Лицензия предназначена для версии %s, но необходима версия %s.","ra_License must be converted":"Лицензия должна быть преобразована в более новую версию. Вы можете сделать это в своем профиле на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Лицензия не найдена в диспетчере лицензий. Вы хотите обновить лицензии от iobroker.net?","ra_Listen on all IPs":"Слушать на всех IP","ra_Load configuration from file":"Загрузить конфигурацию из файла",ra_Logout:YO,ra_Longitude:QO,'ra_May not trigger "updateLicenses"':"Не может запускать «updateLicenses»",ra_Message:bO,ra_Monday:UO,"ra_Move down":"Вниз","ra_Move up":"Вверх",ra_Name:$O,"ra_No data found in file":"Данные в файле не найдены","ra_No one license found in license manager":"В менеджере лицензий не найдена ни одна лицензия","ra_No response from admin":"Нет ответа от администратора","ra_No response from the backend":"Нет ответа от бэкэнда",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Не-эксперты могут создавать новые объекты только в «0_userdata.0» или «alias.0».","ra_Not a number":"Не число","ra_OAuth Client ID":"Идентификатор клиента OAuth","ra_OAuth Client secret":"Секрет клиента OAuth",ra_Objects:PO,ra_Ok:WO,"ra_On weekdays":"На выходных","ra_Only following structures of objects are available:":"Доступны только следующие структуры объектов:","ra_Only selected":"Только выбранные","ra_Owner group":"Группа владельцев","ra_Owner user":"Пользователь-владелец","ra_Passwords are not equal!":"Пароли не равны!","ra_Place your files here or click here to open the browse dialog":"Поместите свои файлы сюда или щелкните здесь, чтобы открыть диалоговое окно выбора","ra_Please allow popups in your browser for this page!":"Пожалуйста, разрешите всплывающие окна в вашем браузере для этой страницы!","ra_Please confirm":"Пожалуйста подтвердите","ra_Please create license":"Пожалуйста, создайте лицензию","ra_Please enter the license":"Пожалуйста, введите лицензию","ra_Please select file...":"Пожалуйста, выберите файл...","ra_Please select object ID...":"Пожалуйста, выберите идентификатор объекта ...","ra_Port could be used by %s":"Порт может использоваться %s","ra_Port is already used by %s":"Порт уже используется %s","ra_Press ENTER Key to add new item":"Нажмите клавишу ENTER, чтобы добавить новый элемент.","ra_Private certificate":"Частный сертификат",ra_Product:JO,"ra_Public certificate":"Публичный сертификат","ra_Quality code":"Валидность","ra_Refresh tree":"Обновить дерево","ra_Reload files":"Обновить",ra_Rename_Move_Copy:BO,"ra_Renew %s access":"Продлить доступ %s",ra_Repeat:RO,ra_Replace:FO,"ra_Request timed out":"Истекло время запроса","ra_Restrict to folder":"Ограничить папкой",ra_Root:GO,ra_Saturday:HO,ra_Save:VO,"ra_Save and close":"Сохранить и закрыть","ra_Save configuration to file":"Сохранить конфигурацию в файл","ra_Save objects tree as JSON file":"Сохранить дерево объектов как файл JSON","ra_Select all":"Выбрать все","ra_Select color":"Выберите цвет","ra_Select predefined icon":"Выберите предопределенный значок","ra_Select type of export":"Выберите тип экспорта",ra_Selected:ZO,"ra_Selected %s object(s)":"Объектов: %s","ra_Serial number (UUID)":"Серийный номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Серийный номер (UUID) «%s» в лицензии предназначен для другого устройства.","ra_Session will expire in %s seconds. Continue?":"Сессия истечет через %s секунд. Продолжить?","ra_Show all folders":"Показать все папки","ra_Show lines between rows":"Показать линии между строками","ra_Show/Hide object descriptions":"Показать/скрыть описания объектов","ra_Show/hide filter input":"Показать/скрыть ввод фильтра","ra_Some data are not stored. Discard?":"Некоторые данные не сохранились. Отказаться?",ra_States:XO,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизация выполнена успешно. Токен действителен до %s и будет автоматически продлен.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизация выполнена успешно. Токен действителен до %s, но его срок действия может истечь, так как экземпляр не запущен.","ra_Suitable license not found in license manager":"Подходящая лицензия не найдена в менеджере лицензий",ra_Sunday:KO,"ra_Suppress question for next %s minutes":"Скрыть вопрос на следующие %s минут(ы)","ra_System language":"Язык системы","ra_Take browser position":"Взять позицию из браузера","ra_Take position from system settings":"Занять позицию из системных настроек",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Эксперты могут создавать объекты везде, кроме второго уровня (например, «vis.0» или «javascript.0»).","ra_The page you are looking for was not found":"Страница, которую вы ищете, не найдена","ra_The schedule will be executed every minute. Are you sure?":"Расписание будет выполняться каждую минуту. Вы уверены?","ra_The schedule will be executed every second. Are you sure?":"Расписание будет выполняться каждую секунду. Вы уверены?",ra_Thursday:qO,ra_Timestamp:eE,"ra_Toggle expert mode":"Переключить экспертный режим","ra_Toggle the states view":"Переключить режим просмотра состояний","ra_Toggle view mode":"Переключить режим просмотра","ra_Too big":"Слишком большое","ra_Too small":"Слишком маленькое","ra_Transparent dialog":"Прозрачный диалог",ra_Tuesday:tE,"ra_Unknown error":"Неизвестная ошибка","ra_Unknown error!":"Неизвестная ошибка!",ra_Update:sE,"ra_Upload file":"Загрузить файл","ra_Use all available let's encrypt certificates":"Использовать все доступные сертификаты Let’s encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Используйте адаптер iobroker.acme для сертификатов letsencrypt","ra_Use system settings for position":"Использовать системные настройки для позиции","ra_Used system settings":"Системные настройки","ra_User files":"Файлы пользователя",ra_ValidTill:iE,ra_Value:rE,ra_Version:oE,"ra_View file":"Посмотреть файл","ra_View: %s":"Просмотр: %s",ra_Wednesday:nE,ra_Width:aE,"ra_YAML editor":"Редактор YAML",ra_Yes:ME,"ra_You can export all objects or just the selected branch.":"Вы можете экспортировать все объекты или только выбранную ветвь.","ra_You can filter entries by entering here some text":"Вы можете отфильтровать записи, введя здесь текст","ra_You can use * as wildcard":"Вы можете использовать * в качестве подстановочного знака",ra___different__:cE,ra_aclEveryone_read_object:uE,ra_aclEveryone_read_state:lE,ra_aclEveryone_write_object:NE,ra_aclEveryone_write_state:LE,ra_aclGroup_read_object:gE,ra_aclGroup_read_state:jE,ra_aclGroup_write_object:yE,ra_aclGroup_write_state:TE,ra_aclOwner_read_object:DE,ra_aclOwner_read_state:dE,ra_aclOwner_write_object:hE,ra_aclOwner_write_state:zE,ra_buttons:wE,ra_changedFrom:IE,ra_close:CE,ra_create_boolean_state:pE,ra_create_channel:AE,ra_create_device:mE,ra_create_number_state:fE,ra_create_state:OE,ra_create_string_state:EE,ra_daysShortText:_E,ra_dow_Fr:xE,ra_dow_Mo:SE,ra_dow_Sa:kE,ra_dow_Su:vE,ra_dow_Th:YE,ra_dow_Tu:QE,ra_dow_We:bE,ra_expertMode:UE,ra_false:$E,ra_fileType_all:PE,ra_fileType_audio:WE,ra_fileType_code:JE,ra_fileType_images:BE,ra_fileType_txt:RE,ra_fileType_video:FE,"ra_fileType_video,":"видео",ra_filter_customs:GE,ra_filter_customs_without:HE,ra_filter_func:VE,ra_filter_id:ZE,ra_filter_name:XE,ra_filter_role:KE,ra_filter_room:qE,ra_filter_type:e_,"ra_import data from %s file":"Импортировать данные из файла %s",ra_invalidConfig:t_,ra_lastChange:s_,ra_locally:i_,ra_month_Apr:r_,ra_month_Aug:o_,ra_month_Dec:n_,ra_month_Feb:a_,ra_month_Jan:M_,ra_month_Jul:c_,ra_month_Jun:u_,ra_month_Mai:l_,ra_month_Mar:N_,ra_month_Nov:L_,ra_month_Oct:g_,ra_month_Sep:j_,ra_months_Apr:y_,ra_months_Aug:T_,ra_months_Dec:D_,ra_months_Feb:d_,ra_months_Jan:h_,ra_months_Jul:z_,ra_months_Jun:w_,ra_months_Mai:I_,ra_months_Mar:C_,ra_months_Nov:p_,ra_months_Oct:A_,ra_months_Sep:m_,"ra_no confirm for 5 mins":"не спрашивать подтверждения в течение 5 минут",ra_none:f_,ra_object_changed_by:O_,ra_object_changed_by_user:E_,ra_otherConfig:__,ra_qualityCode:x_,ra_repeat:S_,ra_select_folder_hint:k_,ra_show_all:v_,ra_state_changed_by:Y_,ra_state_changed_from:Q_,ra_timestamp:b_,ra_tooltip_ack:U_,ra_tooltip_comment:$_,ra_tooltip_copyState:P_,ra_tooltip_ctrlForLink:W_,ra_tooltip_customConfig:J_,ra_tooltip_deleteObject:B_,ra_tooltip_editObject:R_,ra_tooltip_editState:F_,ra_tooltip_expire:G_,ra_tooltip_from:H_,ra_tooltip_lc:V_,ra_tooltip_quality:Z_,ra_tooltip_ts:X_,ra_tooltip_user:K_,ra_tooltip_value:q_,ra_true:ex,"ra_use seconds":"секунды",ra_val:tx,"ra_via internet":"через интернет",ra_warning_every_minute:sx,ra_warning_every_second:ix,sc_cron:rx,sc_date:ox,sc_dates:nx,sc_dow:ax,sc_dows:Mx,sc_every:cx,sc_everyN_dates:ux,sc_everyN_dow:lx,sc_everyN_dows:Nx,sc_everyN_hours:Lx,sc_everyN_minutes:gx,sc_everyN_months:jx,sc_everyN_seconds:yx,sc_every_dates:Tx,sc_every_dow:Dx,sc_every_dows:dx,sc_every_hours:hx,sc_every_minutes:zx,sc_every_months:wx,sc_every_seconds:Ix,sc_from:Cx,sc_hours:px,sc_interval:Ax,sc_intervalBetween:mx,sc_invalid_cron:fx,sc_minutes:Ox,sc_months:Ex,sc_once:_x,sc_period:xx,sc_seconds:Sx,sc_simple:kx,sc_specific:vx,sc_specific_dates:Yx,sc_specific_dow:Qx,sc_specific_dows:bx,sc_specific_hours:Ux,sc_specific_minutes:$x,sc_specific_months:Px,sc_specific_seconds:Wx,sc_time:Jx,sc_to:Bx,sc_wizard:Rx,sch_all:Fx,sch_astroDay:Gx,sch_astroNight:Hx,sch_astro_dawn:Vx,sch_astro_dusk:Zx,sch_astro_goldenHour:Xx,sch_astro_goldenHourEnd:Kx,sch_astro_nadir:qx,sch_astro_nauticalDawn:eS,sch_astro_nauticalDusk:tS,sch_astro_night:sS,sch_astro_nightEnd:iS,sch_astro_solarNoon:rS,sch_astro_sunrise:oS,sch_astro_sunriseEnd:nS,sch_astro_sunset:aS,sch_astro_sunsetStart:MS,sch_at:cS,sch_desc_atTime:uS,sch_desc_everyDay:lS,sch_desc_everyHour:NS,sch_desc_everyMinute:LS,sch_desc_everyMonth:gS,sch_desc_everyNDay:jS,sch_desc_everyNHours:yS,sch_desc_everyNMinutes:TS,sch_desc_everyNMonths:DS,sch_desc_everyNWeeks:dS,sch_desc_everyNYears:hS,sch_desc_everyWeek:zS,sch_desc_everyYear:wS,sch_desc_intervalFromTo:IS,sch_desc_never:CS,sch_desc_onDate:pS,sch_desc_onDates:AS,sch_desc_onEveryDate:mS,sch_desc_onMonth:fS,sch_desc_onMonths:OS,sch_desc_onWeekday:ES,sch_desc_onWeekdays:_S,sch_desc_onWeekends:xS,sch_desc_onWorkdays:SS,sch_desc_onceInPast:kS,sch_desc_once_on:vS,sch_desc_validFrom:YS,sch_desc_validFromTo:QS,sch_desc_validTo:bS,sch_every:US,sch_exactTime:$S,sch_from:PS,sch_fromTo:WS,sch_intervalTime:JS,sch_invert:BS,sch_no_one:RS,sch_on:FS,sch_period:GS,sch_periodDaily:HS,sch_periodDates:VS,sch_periodDay:ZS,sch_periodEvery:XS,sch_periodEveryDay:KS,sch_periodEveryMonth:qS,sch_periodEveryWeek:e5,sch_periodEveryYear:t5,sch_periodHours:s5,sch_periodMinutes:i5,sch_periodMonth:r5,sch_periodMonthly:o5,sch_periodOnce:n5,sch_periodSpecificMonths:a5,sch_periodWeek:M5,sch_periodWeekdays:c5,sch_periodWeekend:u5,sch_periodWeekly:l5,sch_periodWorkdays:N5,sch_periodYear:L5,sch_periodYearly:g5,sch_specificTime:j5,sch_time:y5,sch_to:T5,sch_valid:D5,sch_validFrom:d5,sch_validTo:h5,sch_wholeDay:z5,sch_yearEveryMonth:w5},C5="Ações",p5="Acrescentar",A5="Cancelar",m5="Categorias",f5="Verificado",O5="Excluir",E5="Perto",_5="Comercial",x5="Configurar",S5="Conectado",k5="Continuar",v5="Copiado",Y5="Crio",Q5="Colheita",b5="Delete",U5="Excluir",$5="Descartar",P5="Desconectado",W5="Erro",J5="Filtro",B5="Sexta-feira",R5="Latitude",F5="Sair",G5="Longitude",H5="mensagem",V5="Segunda-feira",Z5="Nome",X5="Objetos",K5="Está bem",q5="produtos",ek="Renomear/Mover/Copiar",tk="Repita",sk="Substituir",ik="Raiz",rk="Sábado",ok="Salve ",nk="Selecionado",ak="Estados",Mk="Domingo",ck="Quinta-feira",uk="Timestamp",lk="Terça-feira",Nk="Atualizar",Lk="Válida até",gk="Valor",jk="Versão",yk="Quarta-feira",Tk="Largura",Dk="Sim",dk="diferente",hk="Todos podem ler objetos",zk="Todos podem ler o estado",wk="Todos podem escrever objetos",Ik="Todos podem escrever o estado",Ck="O grupo pode ler o objeto",pk="O grupo pode ler o estado",Ak="O grupo pode escrever o objeto",mk="O grupo pode escrever o estado",fk="O proprietário pode ler o objeto",Ok="O proprietário pode ler o estado",Ek="O proprietário pode escrever o objeto",_k="O proprietário pode escrever o estado",xk="Botões",Sk="Mudou de",kk="fechar",vk="Criar estado booleano",Yk="Criar canal",Qk="Criar dispositivo",bk="Criar estado numérico",Uk="Criar estado",$k="Criar estado de string",Pk="d.",Wk="Fr",Jk="Mo",Bk="Sa",Rk="Su",Fk="º",Gk="Tu",Hk="Nós",Vk="Modo especialista",Zk="FALSO",Xk="Todos os arquivos",Kk="áudio",qk="Código/JSON",ev="Imagens",tv="Texto",sv="Vídeo",iv="Configurações",rv="sem",ov="Função",nv="ID",av="Nome",Mv="Papel (Função)",cv="Quarto",uv="Tipo",lv="Configurações inválidas",Nv="Última mudança",Lv="localmente",gv="abril",jv="agosto",yv="dezembro",Tv="fevereiro",Dv="janeiro",dv="julho",hv="junho",zv="Mai",wv="março",Iv="novembro",Cv="outubro",pv="setembro",Av="abril",mv="agosto",fv="dezembro",Ov="fevereiro",Ev="janeiro",_v="julho",xv="junho",Sv="Mai",kv="março",vv="novembro",Yv="outubro",Qv="setembro",bv="Nenhum",Uv="Objeto alterado por",$v="Objeto alterado pela última vez em",Pv="Configurações de outro adaptador %s",Wv="Código de qualidade",Jv="repetir",Bv='Para selecionar a pasta, basta segurar a tecla "shift" clicando na pasta.',Rv="Mostrar tudo",Fv="Estado alterado por",Gv="Objeto alterado de",Hv="Timestamp",Vv="Confirmado",Zv="Comente",Xv="Copie o valor do estado",Kv="Segure a tecla Ctrl/⌘ para abrir o link",qv="Opções customizadas",eY="Excluir objeto",tY="Editar objeto",sY="Edite o valor do estado",iY="Expira em",rY="De",oY="Última alteração",nY="Qualidade",aY="Timestamp",MY="Usuário",cY="Valor",uY="verdadeiro",lY="Valor",NY="Aviso: O trabalho CRON será executado a cada minuto durante o período especificado!",LY="Aviso: O trabalho CRON será executado a cada segundo durante o período especificado!",gY="CRON",jY="Data",yY="Dias",TY="Dia",DY="Dia da semana",dY="todos",hY="a cada N dias",zY="todo enésimo dia da semana",wY="todos os N dias da semana",IY="a cada N horas",CY="a cada N minutos",pY="a cada N meses",AY="a cada N segundos",mY="todo dia",fY="todos os dias da semana",OY="todos os dias da semana",EY="toda hora",_Y="todo minuto",xY="todo mês",SY="todo segundo",kY="de",vY="horas",YY="intervalo",QY="intervalo entre",bY="CRON inválido",UY="minutos",$Y="meses",PY="uma vez",WY="período",JY="segundos",BY="simples",RY="tempo específico",FY="datas específicas",GY="dia(s) específico(s) da semana",HY="dia específico de semanas",VY="horas específicas",ZY="minutos específicos",XY="meses específicos",KY="segundos específicos",qY="tempo",eQ="para",tQ="assistente",sQ="tudo",iQ="dia astral",rQ="noite astral",oQ="amanhecer",nQ="anoitecer",aQ="hora dourada",MQ="Fim da hora dourada",cQ="nadir",uQ="Amanhecer náutico",lQ="Anoitecer náutico",NQ="noite",LQ="fim da noite",gQ="meio-dia solar",jQ="nascer do sol",yQ="fim do nascer do sol",TQ="pôr do sol",DQ="início do pôr do sol",dQ="às",hQ="em %s",zQ="todo dia",wQ="toda hora",IQ="todo minuto",CQ="todo mês",pQ="a cada %s dias",AQ="a cada %s horas",mQ="a cada %s minutos",fQ="a cada %s meses",OQ="a cada %s semanas",EQ="a cada %s anos",_Q="toda semana",xQ="todo ano",SQ="de %s para %s",kQ="nunca",vQ="em %s de %s",YQ="em %s e %s de",QQ="em toda data de",bQ="%s",UQ="%s e %s",$Q="em %s",PQ="em %s e %s",WQ="nos fins de semana",JQ="em dias úteis",BQ="não será mais executado, porque o começo está no passado",RQ="em %s",FQ="de %s",GQ="Executar de até",HQ="até %s",VQ="cada",ZQ="tempo específico",XQ="de",KQ="de a´t",qQ="tempo de intervalo",eb="invertido",tb="nenhum",sb="em",ib="período",rb="diariamente",ob="datas",nb="dia",ab="todos",Mb="todo dia",cb="todo mês",ub="toda semana",lb="todo ano",Nb="horas",Lb="minutos",gb="mês",jb="por mês",yb="uma vez",Tb="meses específicos",Db="semana",db="dias úteis",hb="final de semana",zb="semanal",wb="dias úteis",Ib="ano",Cb="anual",pb="tempo específico",Ab="tempo",mb="para",fb="válido",Ob="de",Eb="para",_b="dia inteiro",xb="todo mês",Sb={"ra_%s links from aliases":"%s links de aliases","ra_%s object(s) processed":"%s objeto(s) processado(s)","ra_%s was imported":"%s foi importado","ra_Accept license":"Aceitar licença",ra_Actions:C5,"ra_Add new child object to selected parent":"Adicionar novo objeto filho ao pai selecionado","ra_Add objects tree from JSON file":"Adicionar árvore de objetos do arquivo JSON","ra_Add row":"Adicionar linha","ra_Advanced options":"Opções avançadas","ra_All items are filtered out":"Todos os itens são filtrados","ra_All objects":"Todos os objetos",ra_Append:p5,"ra_Append %s entries or replace existing?":"Acrescentar %s entradas ou substituir as existentes?","ra_Append or replace?":"Acrescentar ou substituir?","ra_Are you sure?":"Você tem certeza?","ra_Auto (no custom columns)":"Auto (sem colunas personalizadas)","ra_Back to %s":"Voltar para %s","ra_Background image":"Imagem de fundo",ra_Cancel:A5,"ra_Cannot add items with set filter":"Não é possível adicionar itens com filtro definido","ra_Cannot decode license":"Não é possível decodificar a licença","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Não é possível determinar a posição: as configurações do sistema estão vazias e a detecção de GPS está desativada no navegador",'ra_Cannot find "%s"':'Não foi possível encontrar "%s"','ra_Cannot read "%s"':'Não é possível ler "%s"',"ra_Cannot read licenses: %s":"Não é possível ler licenças: %s","ra_Cannot retrieve options, as instance is offline":"Não é possível recuperar opções, pois a instância está off-line","ra_Cannot update attribute, because not found in the object":"Não é possível atualizar o atributo, porque não foi encontrado no objeto","ra_Cannot upload":"Não é possível fazer upload",ra_Categories:m5,"ra_Chained certificate":"certificado encadeado","ra_Change color theme":"Alterar tema de cores","ra_Changed from":"Mudou de","ra_Channel → State":"Canal → Estado","ra_Check license":"Verifique a licença",ra_Checked:f5,ra_Clear:O5,"ra_Clear filter":"Filtro limpo","ra_Clear icon":"Ícone de limpeza","ra_Click to see in full size":"Clique para ver em tamanho real.","ra_Click to show":"Clique para mostrar","ra_Clone current row":"Clonar linha atual",ra_Close:E5,"ra_Collapse all nodes":"Recolher todos os nós","ra_Collapse one step node":"Recolher um nível",ra_Commercial:_5,ra_Configure:x5,"ra_Configure visible columns":"Configurar colunas visíveis","ra_Confirm deletion of %s":"Confirme a exclusão de %s",ra_Connected:S5,ra_Continue:k5,ra_Copied:v5,"ra_Copied %s":'"%s" copiado',"ra_Copy content":"Copiar conteúdo",ra_Create:Y5,"ra_Create alias":"Criar alias","ra_Create folder":"Criar pasta","ra_Create new folder in %s":"Crie uma nova pasta em %s",ra_Crop:Q5,"ra_Define CRON...":"Defina CRON...","ra_Define functions":"Definir funções","ra_Define rooms":"Definir quartos","ra_Define schedule":"Definir cronograma","ra_Define schedule...":"Definir programação ...",ra_Del:b5,ra_Delete:U5,"ra_Delete current row":"Excluir linha atual","ra_Deselect all":"Desmarque todos","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Desativar/Ativar tradução",ra_Discard:$5,ra_Disconnected:P5,"ra_Do not ask for next 2 hours in this session":"Não peça as próximas 2 horas nesta sessão","ra_Do not export values of states":"Não exporte valores de estados","ra_Do not use let's encrypt":"Não use vamos criptografar","ra_Docker is not available":"O Docker não está disponível","ra_Docker is not installed or not running":"O Docker não está instalado ou não está em execução","ra_Double click to reset table layout":"Clique duas vezes para redefinir o layout da tabela","ra_Drag 'n' drop some files here, or click to select files":"Arraste e solte alguns arquivos aqui ou clique para selecionar arquivos","ra_Drop file here":"Solte o arquivo aqui","ra_Drop the files here...":"Solte o arquivo aqui ...","ra_Duplicate name":"Nome duplicado","ra_Edit ACL":"Editar ACL","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuração personalizada","ra_Edit full path":"Editar caminho completo","ra_Edit function":"Função de edição","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar papel","ra_Edit room":"Sala de edição","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Digite o código dessa página aqui",ra_Error:W5,"ra_Expand all nodes":"Expanda todos os nós","ra_Expand one step node":"Expanda um nível","ra_Expand/Collapse card":"Expandir/Recolher cartão","ra_Export configuration section":"Seção de configuração de exportação","ra_Export data to %s file":"Exportar dados para o arquivo %s","ra_Failed to open JSON File":"Falha ao abrir arquivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"O arquivo é muito grande. Max %sk permitido. Tente usar SVG.",ra_Filter:J5,"ra_Filter and Data Actions":"Ações de filtro e dados","ra_Filter files":"Filtrar arquivos","ra_Folder name":"Nome da pasta","ra_Folder → Channel → State":"Pasta → Canal → Estado","ra_Folder → Device → Channel → State":"Pasta → Dispositivo → Canal → Estado","ra_Folder → State":"Pasta → Estado","ra_Folders always first":"Pastas sempre primeiro",ra_Friday:B5,"ra_From file":"Do arquivo","ra_From text":"Do texto","ra_Get %s access":"Obtenha acesso %s","ra_Good luck":"Boa sorte","ra_Hide empty folders":"Esconder pastas vazias","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nenhum arquivo for criado na pasta, ele desaparecerá depois que o navegador for fechado","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se o botão acima não funcionar, você pode autorizar manualmente este aplicativo visitando esta url","ra_Import and add configuration section":"Seção de importação e adição de configuração","ra_Import and replace configuration section":"Seção de configuração de importação e substituição","ra_Import data from %s file":"Importar dados do arquivo %s","ra_Import from %s":"Importar de %s","ra_Instance %s is alive":"O %s da instância está ativo","ra_Instance %s is not alive":"O %s da instância não está ativo","ra_Instance is not alive":"A instância não está ativa","ra_Invalid CRON":"CRON inválido","ra_Invalid JSON":"JSON inválido","ra_Invalid JSON file.":"Arquivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Esperava-se uma matriz.","ra_Invalid answer from server":"Resposta inválida do servidor","ra_Invalid parent folder!":"Pasta pai inválida!","ra_Invalid structure":"Estrutura inválida","ra_JSON editor":"Editor JSON","ra_Last change":"Última mudança",ra_Latitude:R5,"ra_License %s":"Licença %s","ra_License agreement":"Contrato de licença","ra_License does not exist":"A licença não existe","ra_License expired on %s":"A licença expirou em %s",'ra_License for other product "%s"':'Licença para outro produto "%s"',"ra_License is for version %s, but required version is %s.":"A licença é para a versão %s, mas a versão necessária é %s.","ra_License must be converted":"A licença deve ser convertida para uma versão mais recente. Você pode fazê-lo em seu perfil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licença não encontrada no gerenciador de licenças. Deseja atualizar as licenças do iobroker.net?","ra_Listen on all IPs":"Ouça em todos os IPs","ra_Load configuration from file":"Carregar configuração do arquivo",ra_Logout:F5,ra_Longitude:G5,'ra_May not trigger "updateLicenses"':'Pode não acionar "updateLicenses"',ra_Message:H5,ra_Monday:V5,"ra_Move down":"Mover para baixo","ra_Move up":"Subir",ra_Name:Z5,"ra_No data found in file":"Nenhum dado encontrado no arquivo","ra_No one license found in license manager":"Nenhuma licença encontrada no gerenciador de licenças","ra_No response from admin":"Nenhuma resposta do administrador","ra_No response from the backend":"Nenhuma resposta do backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Os não especialistas podem criar novos objetos apenas em "0_userdata.0" ou "alias.0".',"ra_Not a number":"Não é um número","ra_OAuth Client ID":"ID do cliente OAuth","ra_OAuth Client secret":"Segredo do cliente OAuth",ra_Objects:X5,ra_Ok:K5,"ra_On weekdays":"Nos dias úteis","ra_Only following structures of objects are available:":"Apenas as seguintes estruturas de objetos estão disponíveis:","ra_Only selected":"Apenas selecionado","ra_Owner group":"Grupo proprietário","ra_Owner user":"Usuário proprietário","ra_Passwords are not equal!":"As senhas não são iguais!","ra_Place your files here or click here to open the browse dialog":"Coloque seus arquivos aqui ou clique aqui para abrir a janela de navegação","ra_Please allow popups in your browser for this page!":"Por favor, permita pop-ups no seu navegador para esta página!","ra_Please confirm":"Por favor confirme","ra_Please create license":"Crie uma licença","ra_Please enter the license":"Por favor, insira a licença","ra_Please select file...":"Selecione o arquivo...","ra_Please select object ID...":"Selecione o ID do objeto ...","ra_Port could be used by %s":"A porta pode ser usada por %s","ra_Port is already used by %s":"A porta já está sendo usada por %s","ra_Press ENTER Key to add new item":"Pressione a tecla ENTER para adicionar um novo item","ra_Private certificate":"certificado privado",ra_Product:q5,"ra_Public certificate":"certificado público","ra_Quality code":"Qualidade","ra_Refresh tree":"Atualizar árvore","ra_Reload files":"Recarregar arquivos",ra_Rename_Move_Copy:ek,"ra_Renew %s access":"Renovar acesso %s",ra_Repeat:tk,ra_Replace:sk,"ra_Request timed out":"Solicitação expirou","ra_Restrict to folder":"Restringir à pasta",ra_Root:ik,ra_Saturday:rk,ra_Save:ok,"ra_Save and close":"Salvar e fechar","ra_Save configuration to file":"Salvar configuração em arquivo","ra_Save objects tree as JSON file":"Salvar árvore de objetos como arquivo JSON","ra_Select all":"Selecionar tudo","ra_Select color":"Selecione a cor","ra_Select predefined icon":"Selecione o ícone predefinido","ra_Select type of export":"Selecione o tipo de exportação",ra_Selected:nk,"ra_Selected %s object(s)":"%s objeto(s) selecionado(s)","ra_Serial number (UUID)":"Número de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'O número de série (UUID) "%s" na licença é para outro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"A sessão irá expirar em %s segundos. Continuar?","ra_Show all folders":"Mostrar todas as pastas","ra_Show lines between rows":"Mostrar linhas entre as linhas","ra_Show/Hide object descriptions":"Mostrar/ocultar descrições de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Alguns dados não são armazenados. Descartar?",ra_States:ak,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado com sucesso. Token válido até %s e será renovado automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado com sucesso. Token válido até %s, mas pode expirar, pois a instância não está em execução.","ra_Suitable license not found in license manager":"Licença adequada não encontrada no gerenciador de licenças",ra_Sunday:Mk,"ra_Suppress question for next %s minutes":"Suprimir pergunta nos próximos %s minutos","ra_System language":"Idioma do sistema","ra_Take browser position":"Tomar posição do navegador","ra_Take position from system settings":"Tomar posição a partir das configurações do sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Os especialistas podem criar objetos em qualquer lugar, exceto no segundo nível (por exemplo, "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"A página que você está procurando não foi encontrada","ra_The schedule will be executed every minute. Are you sure?":"O agendamento será executado a cada minuto. Tem certeza?","ra_The schedule will be executed every second. Are you sure?":"O agendamento será executado a cada segundo. Tem certeza?",ra_Thursday:ck,ra_Timestamp:uk,"ra_Toggle expert mode":"Alternar modo especialista","ra_Toggle the states view":"Alternar a visualização dos estados","ra_Toggle view mode":"Alternar modo de visualização","ra_Too big":"Muito grande","ra_Too small":"Muito pequeno","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:lk,"ra_Unknown error":"Erro desconhecido","ra_Unknown error!":"Erro desconhecido!",ra_Update:Nk,"ra_Upload file":"Subir arquivo","ra_Use all available let's encrypt certificates":"Use todos os certificados disponíveis vamos criptografar","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use o adaptador iobroker.acme para certificados letsencrypt","ra_Use system settings for position":"Use as configurações do sistema para a posição","ra_Used system settings":"Configurações do sistema usadas","ra_User files":"Arquivos do usuário",ra_ValidTill:Lk,ra_Value:gk,ra_Version:jk,"ra_View file":"Visualizar arquivo","ra_View: %s":"Visualizar: %s",ra_Wednesday:yk,ra_Width:Tk,"ra_YAML editor":"Editor YAML",ra_Yes:Dk,"ra_You can export all objects or just the selected branch.":"Você pode exportar todos os objetos ou apenas a ramificação selecionada.","ra_You can filter entries by entering here some text":"Você pode filtrar as entradas digitando aqui algum texto","ra_You can use * as wildcard":"Você pode usar * como curinga",ra___different__:dk,ra_aclEveryone_read_object:hk,ra_aclEveryone_read_state:zk,ra_aclEveryone_write_object:wk,ra_aclEveryone_write_state:Ik,ra_aclGroup_read_object:Ck,ra_aclGroup_read_state:pk,ra_aclGroup_write_object:Ak,ra_aclGroup_write_state:mk,ra_aclOwner_read_object:fk,ra_aclOwner_read_state:Ok,ra_aclOwner_write_object:Ek,ra_aclOwner_write_state:_k,ra_buttons:xk,ra_changedFrom:Sk,ra_close:kk,ra_create_boolean_state:vk,ra_create_channel:Yk,ra_create_device:Qk,ra_create_number_state:bk,ra_create_state:Uk,ra_create_string_state:$k,ra_daysShortText:Pk,ra_dow_Fr:Wk,ra_dow_Mo:Jk,ra_dow_Sa:Bk,ra_dow_Su:Rk,ra_dow_Th:Fk,ra_dow_Tu:Gk,ra_dow_We:Hk,ra_expertMode:Vk,ra_false:Zk,ra_fileType_all:Xk,ra_fileType_audio:Kk,ra_fileType_code:qk,ra_fileType_images:ev,ra_fileType_txt:tv,ra_fileType_video:sv,"ra_fileType_video,":"Vídeo",ra_filter_customs:iv,ra_filter_customs_without:rv,ra_filter_func:ov,ra_filter_id:nv,ra_filter_name:av,ra_filter_role:Mv,ra_filter_room:cv,ra_filter_type:uv,"ra_import data from %s file":"Importar dados do arquivo %s",ra_invalidConfig:lv,ra_lastChange:Nv,ra_locally:Lv,ra_month_Apr:gv,ra_month_Aug:jv,ra_month_Dec:yv,ra_month_Feb:Tv,ra_month_Jan:Dv,ra_month_Jul:dv,ra_month_Jun:hv,ra_month_Mai:zv,ra_month_Mar:wv,ra_month_Nov:Iv,ra_month_Oct:Cv,ra_month_Sep:pv,ra_months_Apr:Av,ra_months_Aug:mv,ra_months_Dec:fv,ra_months_Feb:Ov,ra_months_Jan:Ev,ra_months_Jul:_v,ra_months_Jun:xv,ra_months_Mai:Sv,ra_months_Mar:kv,ra_months_Nov:vv,ra_months_Oct:Yv,ra_months_Sep:Qv,"ra_no confirm for 5 mins":"sem confirmação por 5 minutos",ra_none:bv,ra_object_changed_by:Uv,ra_object_changed_by_user:$v,ra_otherConfig:Pv,ra_qualityCode:Wv,ra_repeat:Jv,ra_select_folder_hint:Bv,ra_show_all:Rv,ra_state_changed_by:Fv,ra_state_changed_from:Gv,ra_timestamp:Hv,ra_tooltip_ack:Vv,ra_tooltip_comment:Zv,ra_tooltip_copyState:Xv,ra_tooltip_ctrlForLink:Kv,ra_tooltip_customConfig:qv,ra_tooltip_deleteObject:eY,ra_tooltip_editObject:tY,ra_tooltip_editState:sY,ra_tooltip_expire:iY,ra_tooltip_from:rY,ra_tooltip_lc:oY,ra_tooltip_quality:nY,ra_tooltip_ts:aY,ra_tooltip_user:MY,ra_tooltip_value:cY,ra_true:uY,"ra_use seconds":"use segundos",ra_val:lY,"ra_via internet":"via internet",ra_warning_every_minute:NY,ra_warning_every_second:LY,sc_cron:gY,sc_date:jY,sc_dates:yY,sc_dow:TY,sc_dows:DY,sc_every:dY,sc_everyN_dates:hY,sc_everyN_dow:zY,sc_everyN_dows:wY,sc_everyN_hours:IY,sc_everyN_minutes:CY,sc_everyN_months:pY,sc_everyN_seconds:AY,sc_every_dates:mY,sc_every_dow:fY,sc_every_dows:OY,sc_every_hours:EY,sc_every_minutes:_Y,sc_every_months:xY,sc_every_seconds:SY,sc_from:kY,sc_hours:vY,sc_interval:YY,sc_intervalBetween:QY,sc_invalid_cron:bY,sc_minutes:UY,sc_months:$Y,sc_once:PY,sc_period:WY,sc_seconds:JY,sc_simple:BY,sc_specific:RY,sc_specific_dates:FY,sc_specific_dow:GY,sc_specific_dows:HY,sc_specific_hours:VY,sc_specific_minutes:ZY,sc_specific_months:XY,sc_specific_seconds:KY,sc_time:qY,sc_to:eQ,sc_wizard:tQ,sch_all:sQ,sch_astroDay:iQ,sch_astroNight:rQ,sch_astro_dawn:oQ,sch_astro_dusk:nQ,sch_astro_goldenHour:aQ,sch_astro_goldenHourEnd:MQ,sch_astro_nadir:cQ,sch_astro_nauticalDawn:uQ,sch_astro_nauticalDusk:lQ,sch_astro_night:NQ,sch_astro_nightEnd:LQ,sch_astro_solarNoon:gQ,sch_astro_sunrise:jQ,sch_astro_sunriseEnd:yQ,sch_astro_sunset:TQ,sch_astro_sunsetStart:DQ,sch_at:dQ,sch_desc_atTime:hQ,sch_desc_everyDay:zQ,sch_desc_everyHour:wQ,sch_desc_everyMinute:IQ,sch_desc_everyMonth:CQ,sch_desc_everyNDay:pQ,sch_desc_everyNHours:AQ,sch_desc_everyNMinutes:mQ,sch_desc_everyNMonths:fQ,sch_desc_everyNWeeks:OQ,sch_desc_everyNYears:EQ,sch_desc_everyWeek:_Q,sch_desc_everyYear:xQ,sch_desc_intervalFromTo:SQ,sch_desc_never:kQ,sch_desc_onDate:vQ,sch_desc_onDates:YQ,sch_desc_onEveryDate:QQ,sch_desc_onMonth:bQ,sch_desc_onMonths:UQ,sch_desc_onWeekday:$Q,sch_desc_onWeekdays:PQ,sch_desc_onWeekends:WQ,sch_desc_onWorkdays:JQ,sch_desc_onceInPast:BQ,sch_desc_once_on:RQ,sch_desc_validFrom:FQ,sch_desc_validFromTo:GQ,sch_desc_validTo:HQ,sch_every:VQ,sch_exactTime:ZQ,sch_from:XQ,sch_fromTo:KQ,sch_intervalTime:qQ,sch_invert:eb,sch_no_one:tb,sch_on:sb,sch_period:ib,sch_periodDaily:rb,sch_periodDates:ob,sch_periodDay:nb,sch_periodEvery:ab,sch_periodEveryDay:Mb,sch_periodEveryMonth:cb,sch_periodEveryWeek:ub,sch_periodEveryYear:lb,sch_periodHours:Nb,sch_periodMinutes:Lb,sch_periodMonth:gb,sch_periodMonthly:jb,sch_periodOnce:yb,sch_periodSpecificMonths:Tb,sch_periodWeek:Db,sch_periodWeekdays:db,sch_periodWeekend:hb,sch_periodWeekly:zb,sch_periodWorkdays:wb,sch_periodYear:Ib,sch_periodYearly:Cb,sch_specificTime:pb,sch_time:Ab,sch_to:mb,sch_valid:fb,sch_validFrom:Ob,sch_validTo:Eb,sch_wholeDay:_b,sch_yearEveryMonth:xb},kb="Acties",vb="toevoegen",Yb="Annuleer",Qb="Categorieën",bb="Gecontroleerd",Ub="Verwijderen",$b="Dichtbij",Pb="Reclame",Wb="Configureren",Jb="Verbonden",Bb="Doorgaan",Rb="Gekopieerd",Fb="Creëer",Gb="Bijsnijden",Hb="Delete",Vb="Verwijderen",Zb="Weggooien",Xb="Verbinding verbroken",Kb="Fout",qb="Filter",eU="Vrijdag",tU="Breedtegraad",sU="Uitloggen",iU="Lengtegraad",rU="Bericht",oU="Maandag",nU="Naam",aU="Voorwerpen",MU="OK",cU="Product",uU="Hernoemen/Verplaatsen/Kopiëren",lU="Herhaling",NU="Vervangen",LU="Wortel",gU="Zaterdag",jU="Sparen",yU="Geselecteerd",TU="Staten",DU="Zondag",dU="Donderdag",hU="Tijdstempel",zU="Dinsdag",wU="Bijwerken",IU="Geldig tot",CU="Waarde",pU="Versie",AU="Woensdag",mU="Breedte",fU="Ja",OU="verschillend",EU="Iedereen kan object lezen",_U="Iedereen kan staat lezen",xU="Iedereen kan object schrijven",SU="Iedereen kan staat schrijven",kU="Groep kan object lezen",vU="Groep kan status lezen",YU="Groep kan object schrijven",QU="Groep kan staat schrijven",bU="Eigenaar kan object lezen",UU="Eigenaar kan staat lezen",$U="Eigenaar kan object schrijven",PU="Eigenaar kan staat schrijven",WU="Toetsen",JU="Veranderd van",BU="dichtbij",RU="Creëer een Booleaanse status",FU="Kanaal maken",GU="Apparaat maken",HU="Nummerstatus maken",VU="Staat creëren",ZU="Tekenreeksstatus maken",XU="d.",KU="Fr",qU="Mo",e6="Za",t6="Zo",s6="Th",i6="Tu",r6="Wij",o6="Expert modus",n6="ONWAAR",a6="Alle bestanden",M6="Audio",c6="Code/JSON",u6="Afbeeldingen",l6="Tekst",N6="Video",L6="Instellingen",g6="zonder",j6="Functie",y6="ID",T6="Naam",D6="Rol",d6="Kamer",h6="Type",z6="Ongeldige instellingen",w6="Laatste wijziging",I6="plaatselijk",C6="april",p6="aug",A6="dec",m6="februari",f6="jan",O6="jul",E6="juni",_6="Mei",x6="mrt",S6="nov",k6="Okt",v6="sept",Y6="april",Q6="aug",b6="dec",U6="februari",$6="jan",P6="jul",W6="juni",J6="Mei",B6="mrt",R6="nov",F6="Okt",G6="sept",H6="geen",V6="Object veranderd door",Z6="Object voor het laatst gewijzigd om",X6="Instellingen van andere adapter %s",K6="Kwaliteitscode",q6="herhalen",e8='Om een map te selecteren, houdt u gewoon de toets "shift" ingedrukt door op de map te klikken.',t8="Alles weergeven",s8="Staat veranderd door",i8="Object veranderd van",r8="Tijdstempel",o8="Erkende vlag",n8="Opmerking",a8="Kopieer de statuswaarde",M8="Houd de Cltr/⌘-toets ingedrukt om de link te openen",c8="Aangepaste instellingen",u8="Object verwijderen",l8="Object bewerken",N8="Bewerk de statuswaarde",L8="Verloopt over",g8="Van",j8="Laatst gewijzigd",y8="Kwaliteit",T8="Tijdstempel",D8="Gebruiker",d8="Waarde",h8="WAAR",z8="Waarde",w8="Waarschuwing: De CRON-taak wordt elke minuut uitgevoerd gedurende de opgegeven periode!",I8="Waarschuwing: De CRON-taak wordt elke seconde uitgevoerd gedurende de opgegeven periode!",C8="CRON",p8="Datum",A8="data",m8="Dag",f8="Dag van de week",O8="elk",E8="elke N dagen",_8="elke N-de dag van de week",x8="elke N dag van de week",S8="elke N uur",k8="elke N minuten",v8="elke N maanden",Y8="elke N seconden",Q8="elke dag",b8="elke dag van de week",U8="elke dag van de week",$8="elk uur",P8="elke minuut",W8="elke maand",J8="elke seconde",B8="Van",R8="uren",F8="Interval",G8="Interval tussen",H8="Ongeldige CRON",V8="Notulen",Z8="maanden",X8="Een keer",K8="Periode",q8="seconden",e9="Gemakkelijk",t9="Specifieke tijd",s9="specifieke data",i9="specifieke dag(en) van de week",r9="specifieke dag van weken",o9="specifieke uren",n9="specifieke minuten",a9="specifieke maanden",M9="specifieke seconden",c9="Tijd",u9="Naar",l9="tovenaar",N9="allemaal",L9="Astro-dag",g9="Astro-nacht",j9="Dageraad",y9="Schemer",T9="gouden uur",D9="Gouden uur einde",d9="Nadir",h9="Nautische dageraad",z9="Nautische schemering",w9="Nacht",I9="Nacht einde",C9="Zonne middag",p9="zonsopkomst",A9="Sunrise einde",m9="Zonsondergang",f9="Zonsondergang start",O9="Bij",E9="op %s",_9="elke dag",x9="elk uur",S9="elke minuut",k9="elke maand",v9="elke %s dag",Y9="elke %s uur",Q9="elke %s minuten",b9="elke %s maanden",U9="elke %s weken",$9="elke %s jaar",P9="elke week",W9="elk jaar",J9="van %s tot %s",B9="nooit",R9="op %s van %s",F9="op %s en %s van",G9="op elke datum van",H9="%s",V9="%s en %s",Z9="op %s",X9="op %s en %s",K9="in het weekend",q9="op werkdagen",e7="zal niet meer worden uitgevoerd, omdat start verleden tijd is",t7="op %s",s7="van %s",i7="Uitvoeren van tot",r7="tot %s",o7="elk",n7="Specifieke tijd",a7="van",M7="Van naar",c7="Interval tijd",u7="omkeren",l7="geen",N7="Aan",L7="Periode",g7="Dagelijks",j7="data",y7="Dag",T7="elk",D7="Elke dag",d7="Elke maand",h7="Elke week",z7="Elk jaar",w7="uren",I7="Notulen",C7="maand",p7="Maandelijks",A7="Een keer",m7="Specifieke maanden",f7="Week",O7="Doordeweekse dagen",E7="Weekend",_7="Wekelijks",x7="werkdagen",S7="Jaar",k7="jaar-",v7="Specifieke tijd",Y7="Tijd",Q7="naar",b7="Geldig",U7="van",$7="naar",P7="Hele dag",W7="elke maand",J7={"ra_%s links from aliases":"%s links van aliassen","ra_%s object(s) processed":"%s object(en) verwerkt","ra_%s was imported":"%s is geïmporteerd","ra_Accept license":"Accepteer licentie",ra_Actions:kb,"ra_Add new child object to selected parent":"Voeg een nieuw kindobject toe aan het geselecteerde bovenliggende object","ra_Add objects tree from JSON file":"Objectenboom toevoegen vanuit JSON-bestand","ra_Add row":"Voeg een rij toe","ra_Advanced options":"Geavanceerde mogelijkheden","ra_All items are filtered out":"Alle items zijn uitgefilterd","ra_All objects":"Alle objecten",ra_Append:vb,"ra_Append %s entries or replace existing?":"%s ingangen toevoegen of bestaande vervangen?","ra_Append or replace?":"Toevoegen of vervangen?","ra_Are you sure?":"Weet je het zeker?","ra_Auto (no custom columns)":"Auto (geen aangepaste kolommen)","ra_Back to %s":"Terug naar %s","ra_Background image":"Achtergrond afbeelding",ra_Cancel:Yb,"ra_Cannot add items with set filter":"Kan geen items toevoegen met ingestelde filter","ra_Cannot decode license":"Kan licentie niet decoderen","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Kan positie niet bepalen: systeeminstellingen zijn leeg en GPS-detectie is uitgeschakeld in browser",'ra_Cannot find "%s"':'Kan "%s" niet vinden','ra_Cannot read "%s"':'Kan "%s" niet lezen',"ra_Cannot read licenses: %s":"Kan licenties niet lezen: %s","ra_Cannot retrieve options, as instance is offline":"Kan opties niet ophalen, omdat instantie offline is","ra_Cannot update attribute, because not found in the object":"Kan kenmerk niet bijwerken, omdat het niet in het object is gevonden","ra_Cannot upload":"Kan niet uploaden",ra_Categories:Qb,"ra_Chained certificate":"Geketend certificaat","ra_Change color theme":"Kleurthema wijzigen","ra_Changed from":"Veranderd van","ra_Channel → State":"Kanaal → Staat","ra_Check license":"Licentie controleren",ra_Checked:bb,ra_Clear:Ub,"ra_Clear filter":"Filter wissen","ra_Clear icon":"Pictogram wissen","ra_Click to see in full size":"Klik om de afbeelding op volledige grootte te bekijken.","ra_Click to show":"Klik om te tonen","ra_Clone current row":"Kloon de huidige rij",ra_Close:$b,"ra_Collapse all nodes":"Vouw alle knooppunten samen","ra_Collapse one step node":"Eén niveau samenvouwen",ra_Commercial:Pb,ra_Configure:Wb,"ra_Configure visible columns":"Configureer zichtbare kolommen","ra_Confirm deletion of %s":"Bevestig het verwijderen van %s",ra_Connected:Jb,ra_Continue:Bb,ra_Copied:Rb,"ra_Copied %s":'"%s" gekopieerd',"ra_Copy content":"Inhoud kopiëren",ra_Create:Fb,"ra_Create alias":"Alias maken","ra_Create folder":"Map aanmaken","ra_Create new folder in %s":"Maak een nieuwe map in %s",ra_Crop:Gb,"ra_Define CRON...":"Definieer CRON...","ra_Define functions":"Definieer functies","ra_Define rooms":"Definieer kamers","ra_Define schedule":"Definieer schema","ra_Define schedule...":"Schema definiëren ...",ra_Del:Hb,ra_Delete:Vb,"ra_Delete current row":"Huidige rij verwijderen","ra_Deselect all":"Deselecteer alles","ra_Device → Channel → State":"Apparaat → Kanaal → Staat","ra_Disable/Enable translation":"Vertaling uitschakelen/inschakelen",ra_Discard:Zb,ra_Disconnected:Xb,"ra_Do not ask for next 2 hours in this session":"Vraag niet om de volgende 2 uur in deze sessie","ra_Do not export values of states":"Exporteer geen waarden van staten","ra_Do not use let's encrypt":"Gebruik geen let's encrypt","ra_Docker is not available":"Docker is niet beschikbaar","ra_Docker is not installed or not running":"Docker is niet geïnstalleerd of draait niet","ra_Double click to reset table layout":"Dubbelklik om de tafelindeling te resetten","ra_Drag 'n' drop some files here, or click to select files":"Sleep enkele bestanden hierheen, of klik om bestanden te selecteren","ra_Drop file here":"Zet het bestand hier neer","ra_Drop the files here...":"Zet het bestand hier neer...","ra_Duplicate name":"Dubbele naam","ra_Edit ACL":"ACL bewerken","ra_Edit alias":"Alias bewerken","ra_Edit custom config":"Bewerk aangepaste config","ra_Edit full path":"Volledig pad bewerken","ra_Edit function":"Bewerkingsfunctie","ra_Edit object field":"Bewerk objectveld","ra_Edit role":"Rol bewerken","ra_Edit room":"Kamer bewerken","ra_Edit value":"Waarde bewerken","ra_Enter the code from that page here":"Voer hier de code van die pagina in",ra_Error:Kb,"ra_Expand all nodes":"Vouw alle knooppunten uit","ra_Expand one step node":"Vouw een niveau uit","ra_Expand/Collapse card":"Kaart uit-/inklappen","ra_Export configuration section":"Sectie Exportconfiguratie","ra_Export data to %s file":"Exporteer gegevens naar %s bestand","ra_Failed to open JSON File":"JSON-bestand kan niet worden geopend","ra_Fallback custom certificates":"Fallback aangepaste certificaten","ra_File is too big. Max %sk allowed. Try use SVG.":"Bestand is te groot. Max. %sk toegestaan. Probeer SVG te gebruiken.",ra_Filter:qb,"ra_Filter and Data Actions":"Filter- en gegevensacties","ra_Filter files":"Bestanden filteren","ra_Folder name":"Naam van de map","ra_Folder → Channel → State":"Map → Kanaal → Staat","ra_Folder → Device → Channel → State":"Map → Apparaat → Kanaal → Staat","ra_Folder → State":"Map → Staat","ra_Folders always first":"Mappen altijd eerst",ra_Friday:eU,"ra_From file":"Van bestand","ra_From text":"Van tekst","ra_Get %s access":"Krijg %s toegang","ra_Good luck":"Veel geluk","ra_Hide empty folders":"Verberg lege mappen","ra_If no file will be created in the folder, it will disappear after the browser closed":"Als er geen bestand in de map wordt gemaakt, verdwijnt het nadat de browser is gesloten","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Als de bovenstaande knop niet werkt, kunt u deze app handmatig autoriseren door deze url te bezoeken","ra_Import and add configuration section":"Configuratiesectie importeren en toevoegen","ra_Import and replace configuration section":"Configuratiesectie importeren en vervangen","ra_Import data from %s file":"Importeer gegevens uit %s bestand","ra_Import from %s":"Importeren uit %s","ra_Instance %s is alive":"Instantie %s leeft","ra_Instance %s is not alive":"Instantie %s is niet actief","ra_Instance is not alive":"Instantie leeft niet","ra_Invalid CRON":"Ongeldige CRON","ra_Invalid JSON":"Ongeldige JSON","ra_Invalid JSON file.":"Ongeldig JSON-bestand.","ra_Invalid JSON format. Expected an array.":"Ongeldige JSON-indeling. Er werd een array verwacht.","ra_Invalid answer from server":"Ongeldig antwoord van de server","ra_Invalid parent folder!":"Ongeldige bovenliggende map!","ra_Invalid structure":"Ongeldige structuur","ra_JSON editor":"JSON-editor","ra_Last change":"Laatste wijziging",ra_Latitude:tU,"ra_License %s":"Licentie %s","ra_License agreement":"Licentieovereenkomst","ra_License does not exist":"Licentie bestaat niet","ra_License expired on %s":"Licentie verlopen op %s",'ra_License for other product "%s"':'Licentie voor ander product "%s"',"ra_License is for version %s, but required version is %s.":"Licentie is voor versie %s, maar vereiste versie is %s.","ra_License must be converted":"Licentie moet worden omgezet naar nieuwere versie. U kunt dit doen in uw iobroker.net-profiel.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licentie niet gevonden in licentiebeheer. Wilt u licenties van iobroker.net bijwerken?","ra_Listen on all IPs":"Luister op alle IP's","ra_Load configuration from file":"Laad configuratie uit bestand",ra_Logout:sU,ra_Longitude:iU,'ra_May not trigger "updateLicenses"':'Activeert mogelijk niet "updateLicenses"',ra_Message:rU,ra_Monday:oU,"ra_Move down":"Naar beneden verplaatsen","ra_Move up":"Omhoog gaan",ra_Name:nU,"ra_No data found in file":"Geen gegevens gevonden in bestand","ra_No one license found in license manager":"Geen enkele licentie gevonden in licentiebeheer","ra_No response from admin":"Geen reactie van de beheerder","ra_No response from the backend":"Geen reactie van de backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Niet-experts mogen alleen nieuwe objecten maken in "0_userdata.0" of "alias.0".',"ra_Not a number":"Geen nummer","ra_OAuth Client ID":"OAuth-client-ID","ra_OAuth Client secret":"OAuth-clientgeheim",ra_Objects:aU,ra_Ok:MU,"ra_On weekdays":"Op weekdagen","ra_Only following structures of objects are available:":"Alleen de volgende structuren van objecten zijn beschikbaar:","ra_Only selected":"Alleen geselecteerd","ra_Owner group":"Eigenaarsgroep","ra_Owner user":"Eigenaar gebruiker","ra_Passwords are not equal!":"Wachtwoorden zijn niet gelijk!","ra_Place your files here or click here to open the browse dialog":"Plaats uw bestanden hier of klik hier om het bladervenster te openen","ra_Please allow popups in your browser for this page!":"Sta pop-ups toe in uw browser voor deze pagina!","ra_Please confirm":"Bevestig alstublieft","ra_Please create license":"Maak een licentie aan","ra_Please enter the license":"Voer de licentie in","ra_Please select file...":"Selecteer bestand...","ra_Please select object ID...":"Selecteer object-ID ...","ra_Port could be used by %s":"Poort kan worden gebruikt door %s","ra_Port is already used by %s":"Poort wordt al gebruikt door %s","ra_Press ENTER Key to add new item":"Druk op de ENTER-toets om een nieuw item toe te voegen","ra_Private certificate":"Privé certificaat",ra_Product:cU,"ra_Public certificate":"Openbaar certificaat","ra_Quality code":"Kwaliteit","ra_Refresh tree":"Vernieuw de boom","ra_Reload files":"Laad bestanden opnieuw",ra_Rename_Move_Copy:uU,"ra_Renew %s access":"%s toegang verlengen",ra_Repeat:lU,ra_Replace:NU,"ra_Request timed out":"Verzoek verlopen","ra_Restrict to folder":"Beperken tot map",ra_Root:LU,ra_Saturday:gU,ra_Save:jU,"ra_Save and close":"Opslaan en afsluiten","ra_Save configuration to file":"Sla de configuratie op in een bestand","ra_Save objects tree as JSON file":"Sla de objectenboom op als JSON-bestand","ra_Select all":"Selecteer alles","ra_Select color":"Selecteer kleur","ra_Select predefined icon":"Selecteer voorgedefinieerd pictogram","ra_Select type of export":"Selecteer het type export",ra_Selected:yU,"ra_Selected %s object(s)":"Geselecteerde %s object(en)","ra_Serial number (UUID)":"Serienummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serienummer (UUID) "%s" in licentie is voor ander apparaat.',"ra_Session will expire in %s seconds. Continue?":"Sessie verloopt over %s seconden. Doorgaan?","ra_Show all folders":"Toon alle mappen","ra_Show lines between rows":"Toon lijnen tussen rijen","ra_Show/Hide object descriptions":"Toon/verberg objectbeschrijvingen","ra_Show/hide filter input":"Filterinvoer weergeven/verbergen","ra_Some data are not stored. Discard?":"Sommige gegevens worden niet opgeslagen. Weggooien?",ra_States:TU,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Succesvol geautoriseerd. Token geldig tot %s en wordt automatisch verlengd.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Succesvol geautoriseerd. Token geldig tot %s, maar kan verlopen omdat de instantie niet actief is.","ra_Suitable license not found in license manager":"Geschikte licentie niet gevonden in licentiebeheer",ra_Sunday:DU,"ra_Suppress question for next %s minutes":"Vraag de volgende %s minuten onderdrukken","ra_System language":"Systeemtaal","ra_Take browser position":"Positie innemen vanuit de browser","ra_Take position from system settings":"Neem positie over van systeeminstellingen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'De experts kunnen overal objecten maken, behalve vanaf het tweede niveau (bijv. "Vis.0" of "javascript.0").',"ra_The page you are looking for was not found":"De pagina die u zoekt is niet gevonden","ra_The schedule will be executed every minute. Are you sure?":"Het schema wordt elke minuut uitgevoerd. Weet u het zeker?","ra_The schedule will be executed every second. Are you sure?":"Het schema wordt elke seconde uitgevoerd. Weet je het zeker?",ra_Thursday:dU,ra_Timestamp:hU,"ra_Toggle expert mode":"Schakel tussen expertmodus","ra_Toggle the states view":"Schakel de statusweergave in of uit","ra_Toggle view mode":"Schakelen tussen weergavemodus","ra_Too big":"Te groot","ra_Too small":"Te klein","ra_Transparent dialog":"Transparant dialoogvenster",ra_Tuesday:zU,"ra_Unknown error":"Onbekende fout","ra_Unknown error!":"Onbekende fout!",ra_Update:wU,"ra_Upload file":"Upload bestand","ra_Use all available let's encrypt certificates":"Gebruik alle beschikbare Let's Encrypt-certificaten","ra_Use iobroker.acme adapter for letsencrypt certificates":"Gebruik de iobroker.acme-adapter voor letsencrypt-certificaten","ra_Use system settings for position":"Gebruik systeeminstellingen voor positie","ra_Used system settings":"Gebruikte systeeminstellingen","ra_User files":"Gebruikersbestanden",ra_ValidTill:IU,ra_Value:CU,ra_Version:pU,"ra_View file":"Bestand bekijken","ra_View: %s":"Bekijk: %s",ra_Wednesday:AU,ra_Width:mU,"ra_YAML editor":"YAML-editor",ra_Yes:fU,"ra_You can export all objects or just the selected branch.":"U kunt alle objecten of alleen de geselecteerde tak exporteren.","ra_You can filter entries by entering here some text":"U kunt items filteren door hier wat tekst in te voeren","ra_You can use * as wildcard":"U kunt * als joker gebruiken",ra___different__:OU,ra_aclEveryone_read_object:EU,ra_aclEveryone_read_state:_U,ra_aclEveryone_write_object:xU,ra_aclEveryone_write_state:SU,ra_aclGroup_read_object:kU,ra_aclGroup_read_state:vU,ra_aclGroup_write_object:YU,ra_aclGroup_write_state:QU,ra_aclOwner_read_object:bU,ra_aclOwner_read_state:UU,ra_aclOwner_write_object:$U,ra_aclOwner_write_state:PU,ra_buttons:WU,ra_changedFrom:JU,ra_close:BU,ra_create_boolean_state:RU,ra_create_channel:FU,ra_create_device:GU,ra_create_number_state:HU,ra_create_state:VU,ra_create_string_state:ZU,ra_daysShortText:XU,ra_dow_Fr:KU,ra_dow_Mo:qU,ra_dow_Sa:e6,ra_dow_Su:t6,ra_dow_Th:s6,ra_dow_Tu:i6,ra_dow_We:r6,ra_expertMode:o6,ra_false:n6,ra_fileType_all:a6,ra_fileType_audio:M6,ra_fileType_code:c6,ra_fileType_images:u6,ra_fileType_txt:l6,ra_fileType_video:N6,"ra_fileType_video,":"Video",ra_filter_customs:L6,ra_filter_customs_without:g6,ra_filter_func:j6,ra_filter_id:y6,ra_filter_name:T6,ra_filter_role:D6,ra_filter_room:d6,ra_filter_type:h6,"ra_import data from %s file":"Importeer gegevens uit %s bestand",ra_invalidConfig:z6,ra_lastChange:w6,ra_locally:I6,ra_month_Apr:C6,ra_month_Aug:p6,ra_month_Dec:A6,ra_month_Feb:m6,ra_month_Jan:f6,ra_month_Jul:O6,ra_month_Jun:E6,ra_month_Mai:_6,ra_month_Mar:x6,ra_month_Nov:S6,ra_month_Oct:k6,ra_month_Sep:v6,ra_months_Apr:Y6,ra_months_Aug:Q6,ra_months_Dec:b6,ra_months_Feb:U6,ra_months_Jan:$6,ra_months_Jul:P6,ra_months_Jun:W6,ra_months_Mai:J6,ra_months_Mar:B6,ra_months_Nov:R6,ra_months_Oct:F6,ra_months_Sep:G6,"ra_no confirm for 5 mins":"geen bevestiging gedurende 5 minuten",ra_none:H6,ra_object_changed_by:V6,ra_object_changed_by_user:Z6,ra_otherConfig:X6,ra_qualityCode:K6,ra_repeat:q6,ra_select_folder_hint:e8,ra_show_all:t8,ra_state_changed_by:s8,ra_state_changed_from:i8,ra_timestamp:r8,ra_tooltip_ack:o8,ra_tooltip_comment:n8,ra_tooltip_copyState:a8,ra_tooltip_ctrlForLink:M8,ra_tooltip_customConfig:c8,ra_tooltip_deleteObject:u8,ra_tooltip_editObject:l8,ra_tooltip_editState:N8,ra_tooltip_expire:L8,ra_tooltip_from:g8,ra_tooltip_lc:j8,ra_tooltip_quality:y8,ra_tooltip_ts:T8,ra_tooltip_user:D8,ra_tooltip_value:d8,ra_true:h8,"ra_use seconds":"gebruik seconden",ra_val:z8,"ra_via internet":"via internet",ra_warning_every_minute:w8,ra_warning_every_second:I8,sc_cron:C8,sc_date:p8,sc_dates:A8,sc_dow:m8,sc_dows:f8,sc_every:O8,sc_everyN_dates:E8,sc_everyN_dow:_8,sc_everyN_dows:x8,sc_everyN_hours:S8,sc_everyN_minutes:k8,sc_everyN_months:v8,sc_everyN_seconds:Y8,sc_every_dates:Q8,sc_every_dow:b8,sc_every_dows:U8,sc_every_hours:$8,sc_every_minutes:P8,sc_every_months:W8,sc_every_seconds:J8,sc_from:B8,sc_hours:R8,sc_interval:F8,sc_intervalBetween:G8,sc_invalid_cron:H8,sc_minutes:V8,sc_months:Z8,sc_once:X8,sc_period:K8,sc_seconds:q8,sc_simple:e9,sc_specific:t9,sc_specific_dates:s9,sc_specific_dow:i9,sc_specific_dows:r9,sc_specific_hours:o9,sc_specific_minutes:n9,sc_specific_months:a9,sc_specific_seconds:M9,sc_time:c9,sc_to:u9,sc_wizard:l9,sch_all:N9,sch_astroDay:L9,sch_astroNight:g9,sch_astro_dawn:j9,sch_astro_dusk:y9,sch_astro_goldenHour:T9,sch_astro_goldenHourEnd:D9,sch_astro_nadir:d9,sch_astro_nauticalDawn:h9,sch_astro_nauticalDusk:z9,sch_astro_night:w9,sch_astro_nightEnd:I9,sch_astro_solarNoon:C9,sch_astro_sunrise:p9,sch_astro_sunriseEnd:A9,sch_astro_sunset:m9,sch_astro_sunsetStart:f9,sch_at:O9,sch_desc_atTime:E9,sch_desc_everyDay:_9,sch_desc_everyHour:x9,sch_desc_everyMinute:S9,sch_desc_everyMonth:k9,sch_desc_everyNDay:v9,sch_desc_everyNHours:Y9,sch_desc_everyNMinutes:Q9,sch_desc_everyNMonths:b9,sch_desc_everyNWeeks:U9,sch_desc_everyNYears:$9,sch_desc_everyWeek:P9,sch_desc_everyYear:W9,sch_desc_intervalFromTo:J9,sch_desc_never:B9,sch_desc_onDate:R9,sch_desc_onDates:F9,sch_desc_onEveryDate:G9,sch_desc_onMonth:H9,sch_desc_onMonths:V9,sch_desc_onWeekday:Z9,sch_desc_onWeekdays:X9,sch_desc_onWeekends:K9,sch_desc_onWorkdays:q9,sch_desc_onceInPast:e7,sch_desc_once_on:t7,sch_desc_validFrom:s7,sch_desc_validFromTo:i7,sch_desc_validTo:r7,sch_every:o7,sch_exactTime:n7,sch_from:a7,sch_fromTo:M7,sch_intervalTime:c7,sch_invert:u7,sch_no_one:l7,sch_on:N7,sch_period:L7,sch_periodDaily:g7,sch_periodDates:j7,sch_periodDay:y7,sch_periodEvery:T7,sch_periodEveryDay:D7,sch_periodEveryMonth:d7,sch_periodEveryWeek:h7,sch_periodEveryYear:z7,sch_periodHours:w7,sch_periodMinutes:I7,sch_periodMonth:C7,sch_periodMonthly:p7,sch_periodOnce:A7,sch_periodSpecificMonths:m7,sch_periodWeek:f7,sch_periodWeekdays:O7,sch_periodWeekend:E7,sch_periodWeekly:_7,sch_periodWorkdays:x7,sch_periodYear:S7,sch_periodYearly:k7,sch_specificTime:v7,sch_time:Y7,sch_to:Q7,sch_valid:b7,sch_validFrom:U7,sch_validTo:$7,sch_wholeDay:P7,sch_yearEveryMonth:W7},B7="Actes",R7="Ajouter",F7="Annuler",G7="Catégories",H7="Vérifié",V7="Effacer",Z7="Fermer",X7="Commercial",K7="Configurer",q7="Lié",e$="Continuer",t$="Copié",s$="Créer",i$="Recadrer",r$="Delete",o$="Supprimer",n$="Jeter",a$="Débranché",M$="Erreur",c$="Filtre",u$="Vendredi",l$="Latitude",N$="Déconnexion",L$="Longitude",g$="Message",j$="Lundi",y$="Nom",T$="Objets",D$="D'accord",d$="Produit",h$="Renommer/Déplacer/Copier",z$="Répéter",w$="Remplacer",I$="Racine",C$="Samedi",p$="sauver",A$="Choisi",m$="États",f$="Dimanche",O$="Jeudi",E$="Horodatage",_$="Mardi",x$="Mise à jour",S$="Valable jusqu'au",k$="Valeur",v$="Version",Y$="Mercredi",Q$="Largeur",b$="Oui",U$="différent",$$="Tout le monde peut lire un objet",P$="Tout le monde peut lire l'état",W$="Tout le monde peut écrire un objet",J$="Tout le monde peut écrire l'état",B$="Le groupe peut lire l'objet",R$="Le groupe peut lire l'état",F$="Le groupe peut écrire un objet",G$="Le groupe peut écrire l'état",H$="Le propriétaire peut lire l'objet",V$="Le propriétaire peut lire l'état",Z$="Le propriétaire peut écrire un objet",X$="Le propriétaire peut écrire l'état",K$="Boutons",q$="Changé de",eP="Fermer",tP="Créer un état booléen",sP="Créer une chaîne",iP="Créer un appareil",rP="Créer un état de numéro",oP="Créer un état",nP="Créer un état de chaîne",aP="j.",MP="Fr",cP="Mo",uP="Sa",lP="Su",NP="Th",LP="Tu",gP="Nous",jP="Mode expert",yP="FAUX",TP="Tous les fichiers",DP="l'audio",dP="Code/JSON",hP="Images",zP="Texte",wP="Vidéo",IP="Paramètres",CP="sans",pP="Une fonction",AP="ID",mP="Prénom",fP="Rôle",OP="Pièce",EP="Type",_P="Paramètres invalides",xP="Dernier changement",SP="localement",kP="Avr",vP="Août",YP="Déc",QP="Fév",bP="Jan",UP="Juil",$P="Juin",PP="Mai",WP="Mar",JP="Nov",BP="Oct",RP="Sep",FP="Avr",GP="Août",HP="Déc",VP="Fév",ZP="Jan",XP="Juil",KP="Juin",qP="Mai",eW="Mar",tW="Nov",sW="Oct",iW="Sep",rW="rien",oW="Objet modifié par",nW="Objet modifié pour la dernière fois à",aW="Paramètres d'un autre adaptateur %s",MW="Code de qualité",cW="répéter",uW='Pour sélectionner un dossier, maintenez simplement la touche "shift" enfoncée en cliquant sur le dossier.',lW="Tout afficher",NW="État modifié par",LW="Objet changé de",gW="Horodatage",jW="Drapeau reconnu",yW="Commentaire",TW="Copiez la valeur d'état",DW="Maintenez la touche Cltr/⌘ enfoncée pour ouvrir le lien",dW="Paramètres personnalisés",hW="Supprimer un objet",zW="Modifier l'objet",wW="Modifier la valeur d'état",IW="Expire dans",CW="De",pW="Dernière modification",AW="Qualité",mW="Horodatage",fW="Utilisateur",OW="Valeur",EW="VRAI",_W="Valeur",xW="Attention : la tâche CRON s’exécutera toutes les minutes pendant la période spécifiée !",SW="Attention : la tâche CRON s’exécutera toutes les secondes pendant la période spécifiée !",kW="CRON",vW="Date",YW="Rendez-vous",QW="Jour",bW="Jour de la semaine",UW="Chaque",$W="tous les N jours",PW="chaque Nième jour de la semaine",WW="tous les N jours de la semaine",JW="toutes les N heures",BW="toutes les N minutes",RW="tous les N mois",FW="toutes les N secondes",GW="tous les jours",HW="Chaque jour de la semaine",VW="Chaque jour de la semaine",ZW="Toutes les heures",XW="chaque minute",KW="chaque mois",qW="chaque seconde",eJ="De",tJ="Heures",sJ="Intervalle",iJ="Intervalle entre",rJ="CRON non valide",oJ="Minutes",nJ="mois",aJ="Une fois que",MJ="Période",cJ="Secondes",uJ="Facile",lJ="Temps spécifique",NJ="dates spécifiques",LJ="jour(s) spécifique(s) de la semaine",gJ="jour spécifique de semaines",jJ="heures spécifiques",yJ="minutes spécifiques",TJ="mois spécifiques",DJ="secondes spécifiques",dJ="Temps",hJ="À",zJ="sorcier",wJ="tout",IJ="Journée astronomique",CJ="Nuit astronomique",pJ="Aube",AJ="Crépuscule",mJ="Heure d'or",fJ="Fin de l'heure d'or",OJ="Nadir",EJ="Aube nautique",_J="Crépuscule nautique",xJ="Nuit",SJ="Fin de nuit",kJ="Midi solaire",vJ="lever du soleil",YJ="Fin du lever du soleil",QJ="Le coucher du soleil",bJ="Coucher du soleil",UJ="à",$J="à %s",PJ="tous les jours",WJ="Toutes les heures",JJ="chaque minute",BJ="chaque mois",RJ="chaque %s jour",FJ="chaque %s heures",GJ="toutes les %s minutes",HJ="tous les %s mois",VJ="chaque %s semaines",ZJ="tous les %s ans",XJ="toutes les semaines",KJ="chaque année",qJ="de %s à %s",eB="jamais",tB="sur %s de %s",sB="sur %s et %s de",iB="à chaque date de",rB="%s",oB="%s et %s",nB="sur %s",aB="sur %s et %s",MB="les weekends",cB="les jours ouvrables",uB="ne sera plus exécuté, car start est dans le passé",lB="sur %s",NB="de %s",LB="Exécuter de à",gB="à %s",jB="chaque",yB="Temps spécifique",TB="de",DB="De à",dB="Temps d'interval",hB="inverser",zB="aucun",wB="sur",IB="Période",CB="du quotidien",pB="Rendez-vous",AB="journée",mB="Chaque",fB="Tous les jours",OB="Chaque mois",EB="Toutes les semaines",_B="Chaque année",xB="Heures",SB="Minutes",kB="mois",vB="Mensuel",YB="Une fois que",QB="Mois spécifiques",bB="La semaine",UB="Jours de la semaine",$B="Weekend",PB="Hebdomadaire",WB="Jours ouvrables",JB="Année",BB="Annuel",RB="Temps spécifique",FB="Temps",GB="à",HB="Valide",VB="de",ZB="à",XB="Toute la journée",KB="chaque mois",qB={"ra_%s links from aliases":"%s liens provenant d'alias","ra_%s object(s) processed":"%s objet(s) traité(s)","ra_%s was imported":"%s a été importé","ra_Accept license":"Accepter la licence",ra_Actions:B7,"ra_Add new child object to selected parent":"Ajouter un nouvel objet enfant au parent sélectionné","ra_Add objects tree from JSON file":"Ajouter une arborescence d'objets à partir d'un fichier JSON","ra_Add row":"Ajouter une rangée","ra_Advanced options":"Options avancées","ra_All items are filtered out":"Tous les éléments sont filtrés","ra_All objects":"Tous les objets",ra_Append:R7,"ra_Append %s entries or replace existing?":"Ajouter %s entrées ou remplacer l'existant ?","ra_Append or replace?":"Ajouter ou remplacer ?","ra_Are you sure?":"Êtes-vous sûr?","ra_Auto (no custom columns)":"Auto (pas de colonnes personnalisées)","ra_Back to %s":"Retour à %s","ra_Background image":"Image de fond",ra_Cancel:F7,"ra_Cannot add items with set filter":"Impossible d'ajouter des éléments avec le filtre défini","ra_Cannot decode license":"Impossible de décoder la licence","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossible de déterminer la position : les paramètres système sont vides et la détection GPS est désactivée dans le navigateur",'ra_Cannot find "%s"':'Impossible de trouver "%s"','ra_Cannot read "%s"':'Impossible de lire "%s"',"ra_Cannot read licenses: %s":"Impossible de lire les licences : %s","ra_Cannot retrieve options, as instance is offline":"Impossible de récupérer les options, car l'instance est hors ligne","ra_Cannot update attribute, because not found in the object":"Impossible de mettre à jour l'attribut, car il est introuvable dans l'objet","ra_Cannot upload":"Impossible de télécharger",ra_Categories:G7,"ra_Chained certificate":"Certificat chaîné","ra_Change color theme":"Changer le thème de couleur","ra_Changed from":"Changé de","ra_Channel → State":"Canal → État","ra_Check license":"Vérifier la licence",ra_Checked:H7,ra_Clear:V7,"ra_Clear filter":"Effacer le filtre","ra_Clear icon":"Effacer l'icône","ra_Click to see in full size":"Cliquez pour afficher en taille réelle","ra_Click to show":"Cliquez pour afficher","ra_Clone current row":"Cloner la ligne actuelle",ra_Close:Z7,"ra_Collapse all nodes":"Réduire tous les nœuds","ra_Collapse one step node":"Réduire d'un niveau",ra_Commercial:X7,ra_Configure:K7,"ra_Configure visible columns":"Configurer les colonnes visibles","ra_Confirm deletion of %s":"Confirmer la suppression de %s",ra_Connected:q7,ra_Continue:e$,ra_Copied:t$,"ra_Copied %s":'"%s" copié',"ra_Copy content":"Copier le contenu",ra_Create:s$,"ra_Create alias":"Créer un alias","ra_Create folder":"Créer le dossier","ra_Create new folder in %s":"Créer un nouveau dossier dans %s",ra_Crop:i$,"ra_Define CRON...":"Définir CRON...","ra_Define functions":"Définir des fonctions","ra_Define rooms":"Définir des pièces","ra_Define schedule":"Définir le calendrier","ra_Define schedule...":"Définir le calendrier ...",ra_Del:r$,ra_Delete:o$,"ra_Delete current row":"Supprimer la ligne actuelle","ra_Deselect all":"Tout déselectionner","ra_Device → Channel → State":"Appareil → Canal → État","ra_Disable/Enable translation":"Activer/Désactiver la traduction",ra_Discard:n$,ra_Disconnected:a$,"ra_Do not ask for next 2 hours in this session":"Ne demandez pas les 2 prochaines heures de cette session","ra_Do not export values of states":"Ne pas exporter les valeurs des états","ra_Do not use let's encrypt":"Ne pas utiliser let's encrypt","ra_Docker is not available":"Docker n'est pas disponible","ra_Docker is not installed or not running":"Docker n'est pas installé ou n'est pas en cours d'exécution","ra_Double click to reset table layout":"Double-cliquez pour réinitialiser la disposition du tableau","ra_Drag 'n' drop some files here, or click to select files":"Glissez-déposez des fichiers ici, ou cliquez pour sélectionner des fichiers","ra_Drop file here":"Déposer le fichier ici","ra_Drop the files here...":"Déposez le fichier ici...","ra_Duplicate name":"Nom en double","ra_Edit ACL":"Modifier la LCA","ra_Edit alias":"Modifier l'alias","ra_Edit custom config":"Modifier la configuration personnalisée","ra_Edit full path":"Modifier le chemin complet","ra_Edit function":"Fonction d'édition","ra_Edit object field":"Modifier le champ d'objet","ra_Edit role":"Modifier le rôle","ra_Edit room":"Modifier la salle","ra_Edit value":"Modifier la valeur","ra_Enter the code from that page here":"Entrez le code de cette page ici",ra_Error:M$,"ra_Expand all nodes":"Développer tous les nœuds","ra_Expand one step node":"Développer un niveau","ra_Expand/Collapse card":"Carte Développer/Réduire","ra_Export configuration section":"Exporter la section de configuration","ra_Export data to %s file":"Exporter les données vers le fichier %s","ra_Failed to open JSON File":"Échec de l'ouverture du fichier JSON","ra_Fallback custom certificates":"Certificats personnalisés de secours","ra_File is too big. Max %sk allowed. Try use SVG.":"Le fichier est trop volumineux. Max %sk autorisé. Essayez d'utiliser SVG.",ra_Filter:c$,"ra_Filter and Data Actions":"Actions sur les filtres et les données","ra_Filter files":"Filtrer les fichiers","ra_Folder name":"Nom de dossier","ra_Folder → Channel → State":"Dossier → Chaîne → État","ra_Folder → Device → Channel → State":"Dossier → Appareil → Canal → État","ra_Folder → State":"Dossier → État","ra_Folders always first":"Les dossiers toujours en premier",ra_Friday:u$,"ra_From file":"À partir du fichier","ra_From text":"À partir du texte","ra_Get %s access":"Obtenir l'accès %s","ra_Good luck":"Bonne chance","ra_Hide empty folders":"Masquer les dossiers vides","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si aucun fichier ne sera créé dans le dossier, il disparaîtra après la fermeture du navigateur","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si le bouton ci-dessus ne fonctionne pas, vous pouvez autoriser manuellement cette application en visitant cette URL","ra_Import and add configuration section":"Importer et ajouter la section de configuration","ra_Import and replace configuration section":"Importer et remplacer la section de configuration","ra_Import data from %s file":"Importer des données à partir du fichier %s","ra_Import from %s":"Importer depuis %s","ra_Instance %s is alive":"L'instance %s est active","ra_Instance %s is not alive":"L'instance %s n'est pas active","ra_Instance is not alive":"L'instance n'est pas active","ra_Invalid CRON":"CRON invalide","ra_Invalid JSON":"JSON invalide","ra_Invalid JSON file.":"Fichier JSON invalide.","ra_Invalid JSON format. Expected an array.":"Format JSON invalide. Tableau attendu.","ra_Invalid answer from server":"Réponse invalide du serveur","ra_Invalid parent folder!":"Dossier parent non valide!","ra_Invalid structure":"Structure invalide","ra_JSON editor":"Éditeur JSON","ra_Last change":"Dernier changement",ra_Latitude:l$,"ra_License %s":"Licence %s","ra_License agreement":"Accord de licence","ra_License does not exist":"La licence n'existe pas","ra_License expired on %s":"Licence expirée le %s",'ra_License for other product "%s"':'Licence pour un autre produit "%s"',"ra_License is for version %s, but required version is %s.":"La licence est pour la version %s, mais la version requise est %s.","ra_License must be converted":"La licence doit être convertie en une version plus récente. Vous pouvez le faire dans votre profil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licence introuvable dans le gestionnaire de licences. Voulez-vous mettre à jour les licences depuis iobroker.net ?","ra_Listen on all IPs":"Écoutez sur toutes les adresses IP","ra_Load configuration from file":"Charger la configuration à partir du fichier",ra_Logout:N$,ra_Longitude:L$,'ra_May not trigger "updateLicenses"':'Peut ne pas déclencher "updateLicences"',ra_Message:g$,ra_Monday:j$,"ra_Move down":"Descendre","ra_Move up":"Déplacer vers le haut",ra_Name:y$,"ra_No data found in file":"Aucune donnée trouvée dans le fichier","ra_No one license found in license manager":"Aucune licence trouvée dans le gestionnaire de licences","ra_No response from admin":"Aucune réponse de l'administrateur","ra_No response from the backend":"Aucune réponse du backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Les non-experts ne peuvent créer de nouveaux objets que dans "0_userdata.0" ou "alias.0".',"ra_Not a number":"Pas un numéro","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Secret client OAuth",ra_Objects:T$,ra_Ok:D$,"ra_On weekdays":"En semaine","ra_Only following structures of objects are available:":"Seules les structures d'objets suivantes sont disponibles:","ra_Only selected":"Uniquement sélectionné","ra_Owner group":"Groupe propriétaire","ra_Owner user":"Utilisateur propriétaire","ra_Passwords are not equal!":"Les mots de passe ne sont pas égaux !","ra_Place your files here or click here to open the browse dialog":"Placez vos fichiers ici ou cliquez ici pour ouvrir la boîte de dialogue de navigation","ra_Please allow popups in your browser for this page!":"Veuillez autoriser les popups dans votre navigateur pour cette page !","ra_Please confirm":"Veuillez confirmer","ra_Please create license":"Veuillez créer une licence","ra_Please enter the license":"Veuillez entrer la licence","ra_Please select file...":"Veuillez sélectionner le fichier...","ra_Please select object ID...":"Veuillez sélectionner l'ID d'objet ...","ra_Port could be used by %s":"Le port pourrait être utilisé par %s","ra_Port is already used by %s":"Le port est déjà utilisé par %s","ra_Press ENTER Key to add new item":"Appuyez sur la touche ENTRÉE pour ajouter un nouvel élément","ra_Private certificate":"Certificat privé",ra_Product:d$,"ra_Public certificate":"Certificat public","ra_Quality code":"Qualité","ra_Refresh tree":"Rafraîchir l'arborescence","ra_Reload files":"Recharger les fichiers",ra_Rename_Move_Copy:h$,"ra_Renew %s access":"Renouveler l'accès %s",ra_Repeat:z$,ra_Replace:w$,"ra_Request timed out":"La demande a expiré","ra_Restrict to folder":"Restreindre au dossier",ra_Root:I$,ra_Saturday:C$,ra_Save:p$,"ra_Save and close":"Sauver et fermer","ra_Save configuration to file":"Enregistrer la configuration dans un fichier","ra_Save objects tree as JSON file":"Enregistrer l'arborescence des objets en tant que fichier JSON","ra_Select all":"Tout sélectionner","ra_Select color":"Choisissez la couleur","ra_Select predefined icon":"Sélectionnez l'icône prédéfinie","ra_Select type of export":"Sélectionnez le type d'exportation",ra_Selected:A$,"ra_Selected %s object(s)":"Objet(s) %s sélectionné(s)","ra_Serial number (UUID)":"Numéro de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Le numéro de série (UUID) "%s" dans la licence est pour un autre appareil.',"ra_Session will expire in %s seconds. Continue?":"La session expirera dans %s secondes. Continuer ?","ra_Show all folders":"Afficher tous les dossiers","ra_Show lines between rows":"Afficher les lignes entre les lignes","ra_Show/Hide object descriptions":"Afficher/Masquer les descriptions d'objets","ra_Show/hide filter input":"Afficher/masquer l'entrée de filtre","ra_Some data are not stored. Discard?":"Certaines données ne sont pas stockées. Jeter?",ra_States:m$,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorisation réussie. Jeton valide jusqu'au %s et sera automatiquement renouvelé.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorisation réussie. Jeton valide jusqu'à %s, mais il peut expirer car l'instance n'est pas en cours d'exécution.","ra_Suitable license not found in license manager":"Licence appropriée introuvable dans le gestionnaire de licences",ra_Sunday:f$,"ra_Suppress question for next %s minutes":"Supprimer la question pour les %s prochaines minutes","ra_System language":"Langue du système","ra_Take browser position":"Prendre position depuis le navigateur","ra_Take position from system settings":"Prendre position à partir des paramètres système",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Les experts peuvent créer des objets partout mais à partir du deuxième niveau (par exemple "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"La page que vous recherchez n'a pas été trouvée","ra_The schedule will be executed every minute. Are you sure?":"Le planning sera exécuté toutes les minutes. Êtes-vous sûr ?","ra_The schedule will be executed every second. Are you sure?":"Le planning sera exécuté toutes les secondes. Êtes-vous sûr ?",ra_Thursday:O$,ra_Timestamp:E$,"ra_Toggle expert mode":"Basculer en mode expert","ra_Toggle the states view":"Basculer la vue des états","ra_Toggle view mode":"Basculer le mode d'affichage","ra_Too big":"Trop grand","ra_Too small":"Trop petit","ra_Transparent dialog":"Dialogue transparent",ra_Tuesday:_$,"ra_Unknown error":"Erreur inconnue","ra_Unknown error!":"Erreur inconnue!",ra_Update:x$,"ra_Upload file":"Téléverser un fichier","ra_Use all available let's encrypt certificates":"Utilisez tous les certificats let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utiliser l'adaptateur iobroker.acme pour les certificats Letsencrypt","ra_Use system settings for position":"Utiliser les paramètres système pour la position","ra_Used system settings":"Paramètres système utilisés","ra_User files":"Fichiers utilisateurs",ra_ValidTill:S$,ra_Value:k$,ra_Version:v$,"ra_View file":"Voir la fiche","ra_View: %s":"Affichage : %s",ra_Wednesday:Y$,ra_Width:Q$,"ra_YAML editor":"Éditeur YAML",ra_Yes:b$,"ra_You can export all objects or just the selected branch.":"Vous pouvez exporter tous les objets ou uniquement la branche sélectionnée.","ra_You can filter entries by entering here some text":"Vous pouvez filtrer les entrées en saisissant ici du texte","ra_You can use * as wildcard":"Vous pouvez utiliser * comme caractère générique",ra___different__:U$,ra_aclEveryone_read_object:$$,ra_aclEveryone_read_state:P$,ra_aclEveryone_write_object:W$,ra_aclEveryone_write_state:J$,ra_aclGroup_read_object:B$,ra_aclGroup_read_state:R$,ra_aclGroup_write_object:F$,ra_aclGroup_write_state:G$,ra_aclOwner_read_object:H$,ra_aclOwner_read_state:V$,ra_aclOwner_write_object:Z$,ra_aclOwner_write_state:X$,ra_buttons:K$,ra_changedFrom:q$,ra_close:eP,ra_create_boolean_state:tP,ra_create_channel:sP,ra_create_device:iP,ra_create_number_state:rP,ra_create_state:oP,ra_create_string_state:nP,ra_daysShortText:aP,ra_dow_Fr:MP,ra_dow_Mo:cP,ra_dow_Sa:uP,ra_dow_Su:lP,ra_dow_Th:NP,ra_dow_Tu:LP,ra_dow_We:gP,ra_expertMode:jP,ra_false:yP,ra_fileType_all:TP,ra_fileType_audio:DP,ra_fileType_code:dP,ra_fileType_images:hP,ra_fileType_txt:zP,ra_fileType_video:wP,"ra_fileType_video,":"Vidéo",ra_filter_customs:IP,ra_filter_customs_without:CP,ra_filter_func:pP,ra_filter_id:AP,ra_filter_name:mP,ra_filter_role:fP,ra_filter_room:OP,ra_filter_type:EP,"ra_import data from %s file":"Importer des données à partir du fichier %s",ra_invalidConfig:_P,ra_lastChange:xP,ra_locally:SP,ra_month_Apr:kP,ra_month_Aug:vP,ra_month_Dec:YP,ra_month_Feb:QP,ra_month_Jan:bP,ra_month_Jul:UP,ra_month_Jun:$P,ra_month_Mai:PP,ra_month_Mar:WP,ra_month_Nov:JP,ra_month_Oct:BP,ra_month_Sep:RP,ra_months_Apr:FP,ra_months_Aug:GP,ra_months_Dec:HP,ra_months_Feb:VP,ra_months_Jan:ZP,ra_months_Jul:XP,ra_months_Jun:KP,ra_months_Mai:qP,ra_months_Mar:eW,ra_months_Nov:tW,ra_months_Oct:sW,ra_months_Sep:iW,"ra_no confirm for 5 mins":"pas de confirmation pendant 5 minutes",ra_none:rW,ra_object_changed_by:oW,ra_object_changed_by_user:nW,ra_otherConfig:aW,ra_qualityCode:MW,ra_repeat:cW,ra_select_folder_hint:uW,ra_show_all:lW,ra_state_changed_by:NW,ra_state_changed_from:LW,ra_timestamp:gW,ra_tooltip_ack:jW,ra_tooltip_comment:yW,ra_tooltip_copyState:TW,ra_tooltip_ctrlForLink:DW,ra_tooltip_customConfig:dW,ra_tooltip_deleteObject:hW,ra_tooltip_editObject:zW,ra_tooltip_editState:wW,ra_tooltip_expire:IW,ra_tooltip_from:CW,ra_tooltip_lc:pW,ra_tooltip_quality:AW,ra_tooltip_ts:mW,ra_tooltip_user:fW,ra_tooltip_value:OW,ra_true:EW,"ra_use seconds":"utiliser les secondes",ra_val:_W,"ra_via internet":"par Internet",ra_warning_every_minute:xW,ra_warning_every_second:SW,sc_cron:kW,sc_date:vW,sc_dates:YW,sc_dow:QW,sc_dows:bW,sc_every:UW,sc_everyN_dates:$W,sc_everyN_dow:PW,sc_everyN_dows:WW,sc_everyN_hours:JW,sc_everyN_minutes:BW,sc_everyN_months:RW,sc_everyN_seconds:FW,sc_every_dates:GW,sc_every_dow:HW,sc_every_dows:VW,sc_every_hours:ZW,sc_every_minutes:XW,sc_every_months:KW,sc_every_seconds:qW,sc_from:eJ,sc_hours:tJ,sc_interval:sJ,sc_intervalBetween:iJ,sc_invalid_cron:rJ,sc_minutes:oJ,sc_months:nJ,sc_once:aJ,sc_period:MJ,sc_seconds:cJ,sc_simple:uJ,sc_specific:lJ,sc_specific_dates:NJ,sc_specific_dow:LJ,sc_specific_dows:gJ,sc_specific_hours:jJ,sc_specific_minutes:yJ,sc_specific_months:TJ,sc_specific_seconds:DJ,sc_time:dJ,sc_to:hJ,sc_wizard:zJ,sch_all:wJ,sch_astroDay:IJ,sch_astroNight:CJ,sch_astro_dawn:pJ,sch_astro_dusk:AJ,sch_astro_goldenHour:mJ,sch_astro_goldenHourEnd:fJ,sch_astro_nadir:OJ,sch_astro_nauticalDawn:EJ,sch_astro_nauticalDusk:_J,sch_astro_night:xJ,sch_astro_nightEnd:SJ,sch_astro_solarNoon:kJ,sch_astro_sunrise:vJ,sch_astro_sunriseEnd:YJ,sch_astro_sunset:QJ,sch_astro_sunsetStart:bJ,sch_at:UJ,sch_desc_atTime:$J,sch_desc_everyDay:PJ,sch_desc_everyHour:WJ,sch_desc_everyMinute:JJ,sch_desc_everyMonth:BJ,sch_desc_everyNDay:RJ,sch_desc_everyNHours:FJ,sch_desc_everyNMinutes:GJ,sch_desc_everyNMonths:HJ,sch_desc_everyNWeeks:VJ,sch_desc_everyNYears:ZJ,sch_desc_everyWeek:XJ,sch_desc_everyYear:KJ,sch_desc_intervalFromTo:qJ,sch_desc_never:eB,sch_desc_onDate:tB,sch_desc_onDates:sB,sch_desc_onEveryDate:iB,sch_desc_onMonth:rB,sch_desc_onMonths:oB,sch_desc_onWeekday:nB,sch_desc_onWeekdays:aB,sch_desc_onWeekends:MB,sch_desc_onWorkdays:cB,sch_desc_onceInPast:uB,sch_desc_once_on:lB,sch_desc_validFrom:NB,sch_desc_validFromTo:LB,sch_desc_validTo:gB,sch_every:jB,sch_exactTime:yB,sch_from:TB,sch_fromTo:DB,sch_intervalTime:dB,sch_invert:hB,sch_no_one:zB,sch_on:wB,sch_period:IB,sch_periodDaily:CB,sch_periodDates:pB,sch_periodDay:AB,sch_periodEvery:mB,sch_periodEveryDay:fB,sch_periodEveryMonth:OB,sch_periodEveryWeek:EB,sch_periodEveryYear:_B,sch_periodHours:xB,sch_periodMinutes:SB,sch_periodMonth:kB,sch_periodMonthly:vB,sch_periodOnce:YB,sch_periodSpecificMonths:QB,sch_periodWeek:bB,sch_periodWeekdays:UB,sch_periodWeekend:$B,sch_periodWeekly:PB,sch_periodWorkdays:WB,sch_periodYear:JB,sch_periodYearly:BB,sch_specificTime:RB,sch_time:FB,sch_to:GB,sch_valid:HB,sch_validFrom:VB,sch_validTo:ZB,sch_wholeDay:XB,sch_yearEveryMonth:KB},eR="Azioni",tR="Aggiungere",sR="Annulla",iR="Categorie",rR="Controllato",oR="Elimina",nR="Vicino",aR="Commerciale",MR="Configura",cR="Collegato",uR="Continuare",lR="Copiato",NR="Creare",LR="Raccolto",gR="Delete",jR="Elimina",yR="Scartare",TR="Disconnesso",DR="Errore",dR="Filtro",hR="Venerdì",zR="Latitudine",wR="Esci",IR="Longitudine",CR="Messaggio",pR="Lunedi",AR="Nome",mR="Oggetti",fR="Ok",OR="Prodotto",ER="Rinomina/Sposta/Copia",_R="Ripetere",xR="Sostituire",SR="Radice",kR="Sabato",vR="Salva",YR="Selezionato",QR="stati",bR="Domenica",UR="Giovedì",$R="Timestamp",PR="Martedì",WR="Aggiornare",JR="Valido fino a",BR="Valore",RR="Versione",FR="Mercoledì",GR="Larghezza",HR="SÌ",VR="diverso",ZR="Tutti possono leggere gli oggetti",XR="Tutti possono leggere lo stato",KR="Tutti possono scrivere oggetti",qR="Tutti possono scrivere stato",eF="Il gruppo può leggere l'oggetto",tF="Il gruppo può leggere lo stato",sF="Il gruppo può scrivere l'oggetto",iF="Il gruppo può scrivere lo stato",rF="Il proprietario può leggere l'oggetto",oF="Il proprietario può leggere lo stato",nF="Il proprietario può scrivere l'oggetto",aF="Il proprietario può scrivere lo stato",MF="Bottoni",cF="Cambiato da",uF="vicino",lF="Crea uno stato booleano",NF="Crea canale",LF="Crea dispositivo",gF="Crea lo stato del numero",jF="Crea stato",yF="Crea lo stato della stringa",TF="g.",DF="fr",dF="momento",hF="Sa",zF="su",wF="th",IF="Tu",CF="Noi",pF="Modalità esperto",AF="FALSO",mF="Tutti i files",fF="Audio",OF="Codice/JSON",EF="immagini",_F="Testo",xF="video",SF="impostazioni",kF="senza",vF="Funzione",YF="ID",QF="Nome",bF="Ruolo",UF="Camera",$F="genere",PF="Impostazioni non valide",WF="Ultima modifica",JF="localmente",BF="apr",RF="agosto",FF="Dic",GF="febbraio",HF="gen",VF="lug",ZF="giu",XF="Mai",KF="marzo",qF="nov",eG="ottobre",tG="Sett",sG="apr",iG="agosto",rG="Dic",oG="febbraio",nG="gen",aG="lug",MG="giu",cG="Mai",uG="marzo",lG="nov",NG="ottobre",LG="Sett",gG="nessuna",jG="Oggetto modificato da",yG="L'oggetto è stato modificato l'ultima volta alle",TG="Impostazioni dall'altro adattatore %s",DG="Codice di qualità",dG="ripetere",hG='Per selezionare la cartella, basta tenere premuto il tasto "shift" facendo clic sulla cartella.',zG="Mostra tutto",wG="Stato cambiato da",IG="Oggetto cambiato da",CG="Timestamp",pG="Bandiera riconosciuta",AG="Commento",mG="Copia il valore dello stato",fG="Tieni premuto il tasto Cltr/⌘ per aprire il collegamento",OG="Impostazioni personalizzate",EG="Elimina oggetto",_G="Modifica oggetto",xG="Modifica il valore dello stato",SG="Scade tra",kG="A partire dal",vG="Ultima modifica",YG="Qualità",QG="Data e ora",bG="Utente",UG="Valore",$G="VERO",PG="Valore",WG="Attenzione: il processo CRON verrà eseguito ogni minuto durante il periodo specificato!",JG="Attenzione: il processo CRON verrà eseguito ogni secondo durante il periodo specificato!",BG="CRON",RG="Data",FG="Date",GG="Giorno",HG="Giorno della settimana",VG="Ogni",ZG="ogni N giorni",XG="ogni Nesimo giorno della settimana",KG="ogni N giorno della settimana",qG="ogni N ore",eH="ogni N minuti",tH="ogni N mesi",sH="ogni N secondi",iH="ogni giorno",rH="Tutti i giorni della settimana",oH="Tutti i giorni della settimana",nH="ogni ora",aH="ogni minuto",MH="ogni mese",cH="ogni secondo",uH="A partire dal",lH="Ore",NH="Intervallo",LH="Intervallo tra",gH="CRON non valido",jH="Minuti",yH="mesi",TH="Una volta",DH="Periodo",dH="secondi",hH="Semplice",zH="Orario preciso",wH="date specifiche",IH="giorno/i specifico/i della settimana",CH="giorno specifico delle settimane",pH="orari specifici",AH="minuti specifici",mH="mesi specifici",fH="secondi specifici",OH="Tempo",EH="Per",_H="procedura guidata",xH="tutti",SH="Astro day",kH="Astro night",vH="Alba",YH="Crepuscolo",QH="Ora d'oro",bH="Fine dell'ora d'oro",UH="Nadir",$H="Alba nautica",PH="Crepuscolo nautico",WH="Notte",JH="Fine della notte",BH="Mezzogiorno solare",RH="Alba",FH="Fine dell'alba",GH="Tramonto",HH="Inizio del tramonto",VH="a",ZH="a %s",XH="ogni giorno",KH="ogni ora",qH="ogni minuto",eV="ogni mese",tV="ogni %s giorno",sV="ogni %s ore",iV="ogni %s minuti",rV="ogni %s mesi",oV="ogni %s settimane",nV="ogni %s anni",aV="ogni settimana",MV="ogni anno",cV="da %s a %s",uV="mai",lV="su %s di %s",NV="su %s e %s di",LV="in ogni data di",gV="%s",jV="%s e %s",yV="su %s",TV="su %s e %s",DV="nei finesettimana",dV="nei giorni lavorativi",hV="non verrà più eseguito, perché start è nel passato",zV="su %s",wV="da %s",IV="Eseguire da a",CV="a %s",pV="ogni",AV="Orario preciso",mV="a partire dal",fV="Da A",OV="Intervallo di tempo",EV="invertire",_V="nessuna",xV="sopra",SV="Periodo",kV="Quotidiano",vV="Date",YV="Giorno",QV="Ogni",bV="Ogni giorno",UV="Ogni mese",$V="Ogni settimana",PV="Ogni anno",WV="Ore",JV="Minuti",BV="mese",RV="Mensile",FV="Una volta",GV="Mesi specifici",HV="Settimana",VV="Giorni della settimana",ZV="Fine settimana",XV="settimanalmente",KV="giorni feriali",qV="Anno",eZ="Annuale",tZ="Orario preciso",sZ="Tempo",iZ="per",rZ="Valido",oZ="a partire dal",nZ="per",aZ="Giorno intero",MZ="ogni mese",cZ={"ra_%s links from aliases":"%s link da alias","ra_%s object(s) processed":"%s oggetti elaborati","ra_%s was imported":"%s è stato importato","ra_Accept license":"Accetta licenza",ra_Actions:eR,"ra_Add new child object to selected parent":"Aggiungi un nuovo oggetto figlio al genitore selezionato","ra_Add objects tree from JSON file":"Aggiungi l'albero degli oggetti dal file JSON","ra_Add row":"Aggiungi riga","ra_Advanced options":"Opzioni avanzate","ra_All items are filtered out":"Tutti gli elementi vengono filtrati","ra_All objects":"Tutti gli oggetti",ra_Append:tR,"ra_Append %s entries or replace existing?":"Aggiungi %s voci o sostituisci quelle esistenti?","ra_Append or replace?":"Aggiungere o sostituire?","ra_Are you sure?":"Sei sicuro?","ra_Auto (no custom columns)":"Auto (nessuna colonna personalizzata)","ra_Back to %s":"Torna a %s","ra_Background image":"Immagine di sfondo",ra_Cancel:sR,"ra_Cannot add items with set filter":"Impossibile aggiungere elementi con il filtro impostato","ra_Cannot decode license":"Impossibile decodificare la licenza","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossibile determinare la posizione: le impostazioni di sistema sono vuote e il rilevamento GPS è disabilitato nel browser",'ra_Cannot find "%s"':'Impossibile trovare "%s"','ra_Cannot read "%s"':'Impossibile leggere "%s"',"ra_Cannot read licenses: %s":"Impossibile leggere le licenze: %s","ra_Cannot retrieve options, as instance is offline":"Impossibile recuperare le opzioni, poiché l'istanza è offline","ra_Cannot update attribute, because not found in the object":"Impossibile aggiornare l'attributo, perché non trovato nell'oggetto","ra_Cannot upload":"Impossibile caricare",ra_Categories:iR,"ra_Chained certificate":"Certificato incatenato","ra_Change color theme":"Cambia tema colore","ra_Changed from":"Cambiato da","ra_Channel → State":"Canale → Stato","ra_Check license":"Controlla la licenza",ra_Checked:rR,ra_Clear:oR,"ra_Clear filter":"Filtro pulito","ra_Clear icon":"Cancella icona","ra_Click to see in full size":"Clicca per visualizzare l'immagine a dimensioni intere","ra_Click to show":"Clicca per mostrare","ra_Clone current row":"Clona riga corrente",ra_Close:nR,"ra_Collapse all nodes":"Comprimi tutti i nodi","ra_Collapse one step node":"Comprimi un livello",ra_Commercial:aR,ra_Configure:MR,"ra_Configure visible columns":"Configura colonne visibili","ra_Confirm deletion of %s":"Conferma l'eliminazione di %s",ra_Connected:cR,ra_Continue:uR,ra_Copied:lR,"ra_Copied %s":'"%s" copiato',"ra_Copy content":"Copia contenuto",ra_Create:NR,"ra_Create alias":"Crea alias","ra_Create folder":"Creare una cartella","ra_Create new folder in %s":"Crea nuova cartella in %s",ra_Crop:LR,"ra_Define CRON...":"Definisci CRON...","ra_Define functions":"Definire le funzioni","ra_Define rooms":"Definisci le stanze","ra_Define schedule":"Definisci programma","ra_Define schedule...":"Definisci pianificazione ...",ra_Del:gR,ra_Delete:jR,"ra_Delete current row":"Elimina la riga corrente","ra_Deselect all":"Deseleziona tutto","ra_Device → Channel → State":"Dispositivo → Canale → Stato","ra_Disable/Enable translation":"Disabilita/Abilita la traduzione",ra_Discard:yR,ra_Disconnected:TR,"ra_Do not ask for next 2 hours in this session":"Non chiedere per le prossime 2 ore in questa sessione","ra_Do not export values of states":"Non esportare i valori degli stati","ra_Do not use let's encrypt":"Non utilizzare crittografiamo","ra_Docker is not available":"Docker non è disponibile","ra_Docker is not installed or not running":"Docker non è installato o non è in esecuzione","ra_Double click to reset table layout":"Fare doppio clic per ripristinare il layout della tabella","ra_Drag 'n' drop some files here, or click to select files":"Trascina e rilascia alcuni file qui o fai clic per selezionare i file","ra_Drop file here":"Trascina il file qui","ra_Drop the files here...":"Trascina qui il file...","ra_Duplicate name":"Nome duplicato","ra_Edit ACL":"Modifica ACL","ra_Edit alias":"Modifica alias","ra_Edit custom config":"Modifica configurazione personalizzata","ra_Edit full path":"Modifica percorso completo","ra_Edit function":"Funzione di modifica","ra_Edit object field":"Modifica campo oggetto","ra_Edit role":"Modifica ruolo","ra_Edit room":"Modifica stanza","ra_Edit value":"Modifica valore","ra_Enter the code from that page here":"Inserisci qui il codice da quella pagina",ra_Error:DR,"ra_Expand all nodes":"Espandi tutti i nodi","ra_Expand one step node":"Espandi un livello","ra_Expand/Collapse card":"Espandi/Comprimi scheda","ra_Export configuration section":"Sezione di configurazione dell'esportazione","ra_Export data to %s file":"Esporta i dati nel file %s","ra_Failed to open JSON File":"Impossibile aprire il file JSON","ra_Fallback custom certificates":"Certificati personalizzati di fallback","ra_File is too big. Max %sk allowed. Try use SVG.":"Il file è troppo grande. Max %sk consentito. Prova a usare SVG.",ra_Filter:dR,"ra_Filter and Data Actions":"Azioni sui filtri e sui dati","ra_Filter files":"Filtra i file","ra_Folder name":"Nome della cartella","ra_Folder → Channel → State":"Cartella → Canale → Stato","ra_Folder → Device → Channel → State":"Cartella → Dispositivo → Canale → Stato","ra_Folder → State":"Cartella → Stato","ra_Folders always first":"Le cartelle sono sempre al primo posto",ra_Friday:hR,"ra_From file":"Dal file","ra_From text":"Dal testo","ra_Get %s access":"Ottieni l'accesso %s","ra_Good luck":"Buona fortuna","ra_Hide empty folders":"Nascondi cartelle vuote","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nessun file verrà creato nella cartella, scomparirà dopo la chiusura del browser","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se il pulsante sopra non funziona, puoi autorizzare manualmente questa app visitando questo URL","ra_Import and add configuration section":"Importa e aggiungi la sezione di configurazione","ra_Import and replace configuration section":"Importa e sostituisci la sezione di configurazione","ra_Import data from %s file":"Importa i dati dal file %s","ra_Import from %s":"Importa da %s","ra_Instance %s is alive":"Il %s dell'istanza è vivo","ra_Instance %s is not alive":"Il TESTO dell'istanza non è vivo","ra_Instance is not alive":"L'istanza non è viva","ra_Invalid CRON":"CRON non valido","ra_Invalid JSON":"JSON non valido","ra_Invalid JSON file.":"File JSON non valido.","ra_Invalid JSON format. Expected an array.":"Formato JSON non valido. È previsto un array.","ra_Invalid answer from server":"Risposta non valida dal server","ra_Invalid parent folder!":"Cartella principale non valida!","ra_Invalid structure":"Struttura non valida","ra_JSON editor":"Editor JSON","ra_Last change":"Ultima modifica",ra_Latitude:zR,"ra_License %s":"Licenza %s","ra_License agreement":"Contratto di licenza","ra_License does not exist":"La licenza non esiste","ra_License expired on %s":"Licenza scaduta il %s",'ra_License for other product "%s"':'Licenza per altro prodotto "%s"',"ra_License is for version %s, but required version is %s.":"La licenza è per la versione %s, ma la versione richiesta è %s.","ra_License must be converted":"La licenza deve essere convertita in una versione più recente. Puoi farlo nel tuo profilo iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licenza non trovata nel gestore delle licenze. Vuoi aggiornare le licenze da iobroker.net?","ra_Listen on all IPs":"Ascolta su tutti gli IP","ra_Load configuration from file":"Carica la configurazione dal file",ra_Logout:wR,ra_Longitude:IR,'ra_May not trigger "updateLicenses"':'Potrebbe non attivare "updateLicenses"',ra_Message:CR,ra_Monday:pR,"ra_Move down":"Abbassati","ra_Move up":"Andare avanti",ra_Name:AR,"ra_No data found in file":"Nessun dato trovato nel file","ra_No one license found in license manager":"Nessuna licenza trovata nel gestore delle licenze","ra_No response from admin":"Nessuna risposta dall'amministratore","ra_No response from the backend":"Nessuna risposta dal backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'I non esperti possono creare nuovi oggetti solo in "0_userdata.0" o "alias.0".',"ra_Not a number":"Non un numero","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Segreto del client OAuth",ra_Objects:mR,ra_Ok:fR,"ra_On weekdays":"Nei giorni della settimana","ra_Only following structures of objects are available:":"Sono disponibili solo le seguenti strutture di oggetti:","ra_Only selected":"Solo selezionato","ra_Owner group":"Gruppo di proprietari","ra_Owner user":"Utente proprietario","ra_Passwords are not equal!":"Le password non sono uguali!","ra_Place your files here or click here to open the browse dialog":"Posiziona i file qui o fai clic qui per aprire la finestra di dialogo Sfoglia","ra_Please allow popups in your browser for this page!":"Si prega di abilitare i popup nel browser per questa pagina!","ra_Please confirm":"Si prega di confermare","ra_Please create license":"Si prega di creare la licenza","ra_Please enter the license":"Inserisci la licenza","ra_Please select file...":"Si prega di selezionare il file...","ra_Please select object ID...":"Seleziona l'ID oggetto ...","ra_Port could be used by %s":"La porta potrebbe essere utilizzata da %s","ra_Port is already used by %s":"La porta è già utilizzata da %s","ra_Press ENTER Key to add new item":"Premere il tasto INVIO per aggiungere un nuovo elemento","ra_Private certificate":"Certificato privato",ra_Product:OR,"ra_Public certificate":"Certificato pubblico","ra_Quality code":"Qualità","ra_Refresh tree":"Aggiorna l'albero","ra_Reload files":"Ricarica i file",ra_Rename_Move_Copy:ER,"ra_Renew %s access":"Rinnova l'accesso %s",ra_Repeat:_R,ra_Replace:xR,"ra_Request timed out":"Tempo scaduto per la richiesta","ra_Restrict to folder":"Limita alla cartella",ra_Root:SR,ra_Saturday:kR,ra_Save:vR,"ra_Save and close":"Salva e chiudi","ra_Save configuration to file":"Salva la configurazione su file","ra_Save objects tree as JSON file":"Salva l'albero degli oggetti come file JSON","ra_Select all":"Seleziona tutto","ra_Select color":"Seleziona il colore","ra_Select predefined icon":"Seleziona l'icona predefinita","ra_Select type of export":"Seleziona il tipo di esportazione",ra_Selected:YR,"ra_Selected %s object(s)":"%s oggetto/i selezionato/i","ra_Serial number (UUID)":"Numero di serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Il numero di serie (UUID) "%s" nella licenza è per un altro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sessione scadrà tra %s secondi. Continuare?","ra_Show all folders":"Mostra tutte le cartelle","ra_Show lines between rows":"Mostra linee tra le righe","ra_Show/Hide object descriptions":"Mostra/Nascondi le descrizioni degli oggetti","ra_Show/hide filter input":"Mostra/nascondi input filtro","ra_Some data are not stored. Discard?":"Alcuni dati non vengono memorizzati. Scartare?",ra_States:QR,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizzazione completata. Il token è valido fino al %s e verrà rinnovato automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizzazione completata. Il token è valido fino al %s, ma potrebbe scadere perché l'istanza non è in esecuzione.","ra_Suitable license not found in license manager":"Licenza adatta non trovata nel gestore delle licenze",ra_Sunday:bR,"ra_Suppress question for next %s minutes":"Sopprimi la domanda per i prossimi %s minuti","ra_System language":"Linguaggio di sistema","ra_Take browser position":"Prendi posizione dal browser","ra_Take position from system settings":"Prendi posizione dalle impostazioni di sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Gli esperti possono creare oggetti ovunque ma dal secondo livello (es. "Vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"La pagina che stai cercando non è stata trovata","ra_The schedule will be executed every minute. Are you sure?":"La pianificazione verrà eseguita ogni minuto. Sei sicuro?","ra_The schedule will be executed every second. Are you sure?":"La pianificazione verrà eseguita ogni secondo. Sei sicuro?",ra_Thursday:UR,ra_Timestamp:$R,"ra_Toggle expert mode":"Attiva / disattiva la modalità esperto","ra_Toggle the states view":"Attiva o disattiva la visualizzazione degli stati","ra_Toggle view mode":"Attiva / disattiva la modalità di visualizzazione","ra_Too big":"Troppo grande","ra_Too small":"Troppo piccolo","ra_Transparent dialog":"Finestra di dialogo trasparente",ra_Tuesday:PR,"ra_Unknown error":"Errore sconosciuto","ra_Unknown error!":"Errore sconosciuto!",ra_Update:WR,"ra_Upload file":"Caricare un file","ra_Use all available let's encrypt certificates":"Usa tutti i certificati Let's Encrypt disponibili","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utilizzare l'adattatore iobroker.acme per i certificati letsencrypt","ra_Use system settings for position":"Usa le impostazioni di sistema per la posizione","ra_Used system settings":"Impostazioni di sistema utilizzate","ra_User files":"File utente",ra_ValidTill:JR,ra_Value:BR,ra_Version:RR,"ra_View file":"Vedi il file","ra_View: %s":"Visualizza: %s",ra_Wednesday:FR,ra_Width:GR,"ra_YAML editor":"Editor YAML",ra_Yes:HR,"ra_You can export all objects or just the selected branch.":"Puoi esportare tutti gli oggetti o solo il ramo selezionato.","ra_You can filter entries by entering here some text":"Puoi filtrare le voci inserendo qui del testo","ra_You can use * as wildcard":"Puoi usare * come carattere jolly",ra___different__:VR,ra_aclEveryone_read_object:ZR,ra_aclEveryone_read_state:XR,ra_aclEveryone_write_object:KR,ra_aclEveryone_write_state:qR,ra_aclGroup_read_object:eF,ra_aclGroup_read_state:tF,ra_aclGroup_write_object:sF,ra_aclGroup_write_state:iF,ra_aclOwner_read_object:rF,ra_aclOwner_read_state:oF,ra_aclOwner_write_object:nF,ra_aclOwner_write_state:aF,ra_buttons:MF,ra_changedFrom:cF,ra_close:uF,ra_create_boolean_state:lF,ra_create_channel:NF,ra_create_device:LF,ra_create_number_state:gF,ra_create_state:jF,ra_create_string_state:yF,ra_daysShortText:TF,ra_dow_Fr:DF,ra_dow_Mo:dF,ra_dow_Sa:hF,ra_dow_Su:zF,ra_dow_Th:wF,ra_dow_Tu:IF,ra_dow_We:CF,ra_expertMode:pF,ra_false:AF,ra_fileType_all:mF,ra_fileType_audio:fF,ra_fileType_code:OF,ra_fileType_images:EF,ra_fileType_txt:_F,ra_fileType_video:xF,"ra_fileType_video,":"video",ra_filter_customs:SF,ra_filter_customs_without:kF,ra_filter_func:vF,ra_filter_id:YF,ra_filter_name:QF,ra_filter_role:bF,ra_filter_room:UF,ra_filter_type:$F,"ra_import data from %s file":"Importa dati dal file %s",ra_invalidConfig:PF,ra_lastChange:WF,ra_locally:JF,ra_month_Apr:BF,ra_month_Aug:RF,ra_month_Dec:FF,ra_month_Feb:GF,ra_month_Jan:HF,ra_month_Jul:VF,ra_month_Jun:ZF,ra_month_Mai:XF,ra_month_Mar:KF,ra_month_Nov:qF,ra_month_Oct:eG,ra_month_Sep:tG,ra_months_Apr:sG,ra_months_Aug:iG,ra_months_Dec:rG,ra_months_Feb:oG,ra_months_Jan:nG,ra_months_Jul:aG,ra_months_Jun:MG,ra_months_Mai:cG,ra_months_Mar:uG,ra_months_Nov:lG,ra_months_Oct:NG,ra_months_Sep:LG,"ra_no confirm for 5 mins":"nessuna conferma per 5 minuti",ra_none:gG,ra_object_changed_by:jG,ra_object_changed_by_user:yG,ra_otherConfig:TG,ra_qualityCode:DG,ra_repeat:dG,ra_select_folder_hint:hG,ra_show_all:zG,ra_state_changed_by:wG,ra_state_changed_from:IG,ra_timestamp:CG,ra_tooltip_ack:pG,ra_tooltip_comment:AG,ra_tooltip_copyState:mG,ra_tooltip_ctrlForLink:fG,ra_tooltip_customConfig:OG,ra_tooltip_deleteObject:EG,ra_tooltip_editObject:_G,ra_tooltip_editState:xG,ra_tooltip_expire:SG,ra_tooltip_from:kG,ra_tooltip_lc:vG,ra_tooltip_quality:YG,ra_tooltip_ts:QG,ra_tooltip_user:bG,ra_tooltip_value:UG,ra_true:$G,"ra_use seconds":"usa i secondi",ra_val:PG,"ra_via internet":"attraverso internet",ra_warning_every_minute:WG,ra_warning_every_second:JG,sc_cron:BG,sc_date:RG,sc_dates:FG,sc_dow:GG,sc_dows:HG,sc_every:VG,sc_everyN_dates:ZG,sc_everyN_dow:XG,sc_everyN_dows:KG,sc_everyN_hours:qG,sc_everyN_minutes:eH,sc_everyN_months:tH,sc_everyN_seconds:sH,sc_every_dates:iH,sc_every_dow:rH,sc_every_dows:oH,sc_every_hours:nH,sc_every_minutes:aH,sc_every_months:MH,sc_every_seconds:cH,sc_from:uH,sc_hours:lH,sc_interval:NH,sc_intervalBetween:LH,sc_invalid_cron:gH,sc_minutes:jH,sc_months:yH,sc_once:TH,sc_period:DH,sc_seconds:dH,sc_simple:hH,sc_specific:zH,sc_specific_dates:wH,sc_specific_dow:IH,sc_specific_dows:CH,sc_specific_hours:pH,sc_specific_minutes:AH,sc_specific_months:mH,sc_specific_seconds:fH,sc_time:OH,sc_to:EH,sc_wizard:_H,sch_all:xH,sch_astroDay:SH,sch_astroNight:kH,sch_astro_dawn:vH,sch_astro_dusk:YH,sch_astro_goldenHour:QH,sch_astro_goldenHourEnd:bH,sch_astro_nadir:UH,sch_astro_nauticalDawn:$H,sch_astro_nauticalDusk:PH,sch_astro_night:WH,sch_astro_nightEnd:JH,sch_astro_solarNoon:BH,sch_astro_sunrise:RH,sch_astro_sunriseEnd:FH,sch_astro_sunset:GH,sch_astro_sunsetStart:HH,sch_at:VH,sch_desc_atTime:ZH,sch_desc_everyDay:XH,sch_desc_everyHour:KH,sch_desc_everyMinute:qH,sch_desc_everyMonth:eV,sch_desc_everyNDay:tV,sch_desc_everyNHours:sV,sch_desc_everyNMinutes:iV,sch_desc_everyNMonths:rV,sch_desc_everyNWeeks:oV,sch_desc_everyNYears:nV,sch_desc_everyWeek:aV,sch_desc_everyYear:MV,sch_desc_intervalFromTo:cV,sch_desc_never:uV,sch_desc_onDate:lV,sch_desc_onDates:NV,sch_desc_onEveryDate:LV,sch_desc_onMonth:gV,sch_desc_onMonths:jV,sch_desc_onWeekday:yV,sch_desc_onWeekdays:TV,sch_desc_onWeekends:DV,sch_desc_onWorkdays:dV,sch_desc_onceInPast:hV,sch_desc_once_on:zV,sch_desc_validFrom:wV,sch_desc_validFromTo:IV,sch_desc_validTo:CV,sch_every:pV,sch_exactTime:AV,sch_from:mV,sch_fromTo:fV,sch_intervalTime:OV,sch_invert:EV,sch_no_one:_V,sch_on:xV,sch_period:SV,sch_periodDaily:kV,sch_periodDates:vV,sch_periodDay:YV,sch_periodEvery:QV,sch_periodEveryDay:bV,sch_periodEveryMonth:UV,sch_periodEveryWeek:$V,sch_periodEveryYear:PV,sch_periodHours:WV,sch_periodMinutes:JV,sch_periodMonth:BV,sch_periodMonthly:RV,sch_periodOnce:FV,sch_periodSpecificMonths:GV,sch_periodWeek:HV,sch_periodWeekdays:VV,sch_periodWeekend:ZV,sch_periodWeekly:XV,sch_periodWorkdays:KV,sch_periodYear:qV,sch_periodYearly:eZ,sch_specificTime:tZ,sch_time:sZ,sch_to:iZ,sch_valid:rZ,sch_validFrom:oZ,sch_validTo:nZ,sch_wholeDay:aZ,sch_yearEveryMonth:MZ},uZ="Comportamiento",lZ="Adjuntar",NZ="Cancelar",LZ="Categorías",gZ="Comprobado",jZ="Borrar",yZ="Cerca",TZ="Comercial",DZ="Configurar",dZ="Conectado",hZ="Continuar",zZ="Copiado",wZ="Crear",IZ="Cultivo",CZ="Delete",pZ="Eliminar",AZ="Desechar",mZ="Desconectado",fZ="Error",OZ="Filtrar",EZ="Viernes",_Z="Latitud",xZ="Cerrar sesión",SZ="Longitud",kZ="Mensaje",vZ="Lunes",YZ="Nombre",QZ="Objetos",bZ="Okay",UZ="Producto",$Z="Cambiar nombre/Mover/Copiar",PZ="Repetir",WZ="Reemplazar",JZ="Raíz",BZ="Sábado",RZ="Salvar",FZ="Seleccionado",GZ="Estados",HZ="Domingo",VZ="Jueves",ZZ="Marca de tiempo",XZ="Martes",KZ="Actualizar",qZ="Válida hasta",eX="Valor",tX="Versión",sX="Miércoles",iX="Anchura",rX="Sí",oX="diferente",nX="Todo el mundo puede leer el objeto",aX="Todos pueden leer el estado",MX="Todos pueden escribir objetos",cX="Todos pueden escribir el estado",uX="El grupo puede leer el objeto",lX="El grupo puede leer el estado",NX="El grupo puede escribir un objeto",LX="El grupo puede escribir el estado",gX="El propietario puede leer el objeto",jX="El propietario puede leer el estado",yX="El propietario puede escribir el objeto",TX="El propietario puede escribir el estado",DX="Botones",dX="Cambiaron desde",hX="cerrar",zX="Crear estado booleano",wX="Crear canal",IX="Crear dispositivo",CX="Crear estado numérico",pX="Crear estado",AX="Crear estado de cadena",mX="d.",fX="Fr",OX="Mes",EX="Sa",_X="Su",xX="Th",SX="Tu",kX="Nosotros",vX="Modo experto",YX="FALSO",QX="Todos los archivos",bX="Audio",UX="Código/JSON",$X="Imágenes",PX="Texto",WX="Video",JX="Configuraciones",BX="sin",RX="Función",FX="ID",GX="Nombre",HX="Papel",VX="Habitación",ZX="Tipo",XX="Configuraciones inválidas",KX="Ultimo cambio",qX="en la zona",eK="Abr",tK="Ago",sK="Dic",iK="Feb",rK="Ene",oK="Jul",nK="Jun",aK="Mai",MK="Mar",cK="Nov",uK="Oct",lK="Sep",NK="Abr",LK="Ago",gK="Dic",jK="Feb",yK="Ene",TK="Jul",DK="Jun",dK="Mai",hK="Mar",zK="Nov",wK="Oct",IK="Sep",CK="ninguno",pK="Objeto cambiado por",AK="Objeto cambiado por última vez a las",mK="Configuraciones de otro adaptador %s",fK="Código de calidad",OK="repetir",EK='Para seleccionar la carpeta, simplemente mantenga presionada la tecla "shift" haciendo clic en la carpeta.',_K="Mostrar todo",xK="Estado cambiado por",SK="Objeto cambiado de",kK="Marca de tiempo",vK="Bandera reconocida",YK="Comentario",QK="Copie el valor del estado",bK="Mantenga presionada la tecla Cltr/⌘ para abrir el enlace",UK="Ajustes personalizados",$K="Eliminar objeto",PK="Editar objeto",WK="Edite el valor del estado",JK="Caduca en",BK="Desde",RK="Último cambio",FK="Calidad",GK="Sello de tiempo",HK="Usuario",VK="Valor",ZK="VERDADERO",XK="Valor",KK="Advertencia: ¡El trabajo CRON se ejecutará cada minuto durante el período especificado!",qK="Advertencia: ¡El trabajo CRON se ejecutará cada segundo durante el período especificado!",eq="CRON",tq="Fecha",sq="fechas",iq="Día",rq="Día de la semana",oq="Cada",nq="cada N días",aq="cada enésimo día de la semana",Mq="cada N día de la semana",cq="cada N horas",uq="cada N minutos",lq="cada N meses",Nq="cada N segundos",Lq="cada día",gq="Cada día de la semana",jq="Cada día de la semana",yq="cada hora",Tq="cada minuto",Dq="cada mes",dq="cada segundo",hq="De",zq="Horas",wq="Intervalo",Iq="Intervalo entre",Cq="CRON no válido",pq="Minutos",Aq="meses",mq="Una vez",fq="Período",Oq="Segundos",Eq="Sencillo",_q="Tiempo específico",xq="fechas especificas",Sq="día(s) específico(s) de la semana",kq="día específico de semanas",vq="horas específicas",Yq="minutos específicos",Qq="meses específicos",bq="segundos específicos",Uq="Hora",$q="A",Pq="Mago",Wq="todas",Jq="Día astro",Bq="Noche astro",Rq="Amanecer",Fq="Oscuridad",Gq="hora dorada",Hq="Fin de la hora dorada",Vq="Nadir",Zq="Amanecer náutico",Xq="Anochecer náutico",Kq="Noche",qq="Fin de la noche",eee="Mediodía solar",tee="amanecer",see="Fin del amanecer",iee="Puesta de sol",ree="Puesta de sol",oee="a",nee="en %s",aee="cada día",Mee="cada hora",cee="cada minuto",uee="cada mes",lee="cada %s días",Nee="cada %s horas",Lee="cada %s minutos",gee="cada %s meses",jee="cada %s semanas",yee="cada %s años",Tee="cada semana",Dee="todos los años",dee="de %s a %s",hee="Nunca",zee="en %s de %s",wee="en %s y %s de",Iee="en cada fecha de",Cee="%s",pee="%s y %s",Aee="en %s",mee="en %s y %s",fee="en los fines de semana",Oee="en días laborables",Eee="ya no se ejecutará más, porque el inicio está en el pasado",_ee="en %s",xee="de %s",See="Ejecutar desde hasta",kee="a %s",vee="cada",Yee="Tiempo específico",Qee="de",bee="De-a",Uee="Tiempo de intervalo",$ee="invertir; poner boca abajo o en la posición opuesta, orden o arreglo; Boca abajo",Pee="ninguna",Wee="en",Jee="Período",Bee="Diario",Ree="fechas",Fee="Día",Gee="Cada",Hee="Cada día",Vee="Cada mes",Zee="Cada semana",Xee="Todos los años",Kee="Horas",qee="Minutos",ete="mes",tte="Mensual",ste="Una vez",ite="Meses específicos",rte="Semana",ote="Días laborables",nte="Fin de semana",ate="Semanal",Mte="Días laborables",cte="Año",ute="Anual",lte="Tiempo específico",Nte="Hora",Lte="a",gte="Válido",jte="de",yte="a",Tte="Todo el dia",Dte="cada mes",dte={"ra_%s links from aliases":"%s enlaces de alias","ra_%s object(s) processed":"%s objeto(s) procesados","ra_%s was imported":"%s fue importado","ra_Accept license":"Aceptar licencia",ra_Actions:uZ,"ra_Add new child object to selected parent":"Agregar nuevo objeto hijo al padre seleccionado","ra_Add objects tree from JSON file":"Agregar árbol de objetos desde el archivo JSON","ra_Add row":"Añadir fila","ra_Advanced options":"Opciones avanzadas","ra_All items are filtered out":"Todos los elementos se filtran","ra_All objects":"Todos los objetos",ra_Append:lZ,"ra_Append %s entries or replace existing?":"¿Agregar %s entradas o reemplazar las existentes?","ra_Append or replace?":"¿Agregar o reemplazar?","ra_Are you sure?":"¿Estás seguro?","ra_Auto (no custom columns)":"Automático (sin columnas personalizadas)","ra_Back to %s":"Volver a %s","ra_Background image":"Imagen de fondo",ra_Cancel:NZ,"ra_Cannot add items with set filter":"No se pueden agregar elementos con el filtro establecido","ra_Cannot decode license":"No se puede decodificar la licencia","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"No se puede determinar la posición: la configuración del sistema está vacía y la detección de GPS está deshabilitada en el navegador",'ra_Cannot find "%s"':'No se puede encontrar "%s"','ra_Cannot read "%s"':'No se puede leer "%s"',"ra_Cannot read licenses: %s":"No se pueden leer licencias: %s","ra_Cannot retrieve options, as instance is offline":"No se pueden recuperar las opciones, ya que la instancia está fuera de línea","ra_Cannot update attribute, because not found in the object":"No se puede actualizar el atributo porque no se encuentra en el objeto","ra_Cannot upload":"no se puede cargar",ra_Categories:LZ,"ra_Chained certificate":"certificado encadenado","ra_Change color theme":"Cambiar tema de color","ra_Changed from":"Cambiaron desde","ra_Channel → State":"Canal → Estado","ra_Check license":"Verificar licencia",ra_Checked:gZ,ra_Clear:jZ,"ra_Clear filter":"Filtro claro","ra_Clear icon":"Icono claro","ra_Click to see in full size":"Haz clic para ver en tamaño completo.","ra_Click to show":"Haga clic para mostrar","ra_Clone current row":"Clonar fila actual",ra_Close:yZ,"ra_Collapse all nodes":"Contraer todos los nodos","ra_Collapse one step node":"Contraer un nivel",ra_Commercial:TZ,ra_Configure:DZ,"ra_Configure visible columns":"Configurar columnas visibles","ra_Confirm deletion of %s":"Confirmar la eliminación de %s",ra_Connected:dZ,ra_Continue:hZ,ra_Copied:zZ,"ra_Copied %s":'Copiado "%s"',"ra_Copy content":"Copiar contenido",ra_Create:wZ,"ra_Create alias":"Crear alias","ra_Create folder":"Crear carpeta","ra_Create new folder in %s":"Crear nueva carpeta en %s",ra_Crop:IZ,"ra_Define CRON...":"Definir CRON...","ra_Define functions":"Definir funciones","ra_Define rooms":"Definir habitaciones","ra_Define schedule":"Definir horario","ra_Define schedule...":"Definir horario ...",ra_Del:CZ,ra_Delete:pZ,"ra_Delete current row":"Eliminar fila actual","ra_Deselect all":"Deselecciona todo","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Deshabilitar/Habilitar traducción",ra_Discard:AZ,ra_Disconnected:mZ,"ra_Do not ask for next 2 hours in this session":"No preguntes por las siguientes 2 horas en esta sesión.","ra_Do not export values of states":"No exportar valores de estados.","ra_Do not use let's encrypt":"No use vamos a cifrar","ra_Docker is not available":"Docker no está disponible","ra_Docker is not installed or not running":"Docker no está instalado o no se está ejecutando","ra_Double click to reset table layout":"Haga doble clic para restablecer el diseño de la tabla","ra_Drag 'n' drop some files here, or click to select files":"Arrastre y suelte algunos archivos aquí, o haga clic para seleccionar archivos","ra_Drop file here":"Suelta el archivo aquí","ra_Drop the files here...":"Suelta el archivo aquí ...","ra_Duplicate name":"Nombre duplicado","ra_Edit ACL":"Editar LCA","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuración personalizada","ra_Edit full path":"Editar ruta completa","ra_Edit function":"Función de edición","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar rol","ra_Edit room":"Cuarto de edición","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Introduzca el código de esa página aquí",ra_Error:fZ,"ra_Expand all nodes":"Expandir todos los nodos","ra_Expand one step node":"Expandir un nivel","ra_Expand/Collapse card":"Expandir/Contraer tarjeta","ra_Export configuration section":"Exportar sección de configuración","ra_Export data to %s file":"Exportar datos al archivo %s","ra_Failed to open JSON File":"No se pudo abrir el archivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"El archivo es demasiado grande. Máximo de %sk permitido. Intenta usar SVG.",ra_Filter:OZ,"ra_Filter and Data Actions":"Acciones de filtrado y datos","ra_Filter files":"Filtrar archivos","ra_Folder name":"Nombre de la carpeta","ra_Folder → Channel → State":"Carpeta → Canal → Estado","ra_Folder → Device → Channel → State":"Carpeta → Dispositivo → Canal → Estado","ra_Folder → State":"Carpeta → Estado","ra_Folders always first":"Carpetas siempre primero",ra_Friday:EZ,"ra_From file":"Desde archivo","ra_From text":"Del texto","ra_Get %s access":"Obtener %s acceso","ra_Good luck":"Buena suerte","ra_Hide empty folders":"Ocultar carpetas vacías","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si no se creará ningún archivo en la carpeta, desaparecerá después de que se cierre el navegador.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si el botón de arriba no funciona, puedes autorizar manualmente esta aplicación visitando esta URL","ra_Import and add configuration section":"Importar y agregar sección de configuración","ra_Import and replace configuration section":"Importar y reemplazar sección de configuración","ra_Import data from %s file":"Importar datos del archivo %s","ra_Import from %s":"Importar desde %s","ra_Instance %s is alive":"Instancia %s está vivo","ra_Instance %s is not alive":"Instancia %s no está vivo","ra_Instance is not alive":"La instancia no está viva","ra_Invalid CRON":"CRON no válido","ra_Invalid JSON":"JSON no válido","ra_Invalid JSON file.":"Archivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Se esperaba un array.","ra_Invalid answer from server":"Respuesta inválida del servidor","ra_Invalid parent folder!":"Carpeta principal no válida.","ra_Invalid structure":"Estructura inválida","ra_JSON editor":"editor JSON","ra_Last change":"Ultimo cambio",ra_Latitude:_Z,"ra_License %s":"Licencia %s","ra_License agreement":"Acuerdo de licencia","ra_License does not exist":"La licencia no existe","ra_License expired on %s":"La licencia venció el %s",'ra_License for other product "%s"':'Licencia para otro producto "%s"',"ra_License is for version %s, but required version is %s.":"La licencia es para la versión %s, pero la versión requerida es %s.","ra_License must be converted":"La licencia debe convertirse a una versión más reciente. Puedes hacerlo en tu perfil de iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licencia no encontrada en el administrador de licencias. ¿Quieres actualizar las licencias de iobroker.net?","ra_Listen on all IPs":"Escuche en todas las IP","ra_Load configuration from file":"Cargar configuración desde archivo",ra_Logout:xZ,ra_Longitude:SZ,'ra_May not trigger "updateLicenses"':'No puede activar "updateLicenses"',ra_Message:kZ,ra_Monday:vZ,"ra_Move down":"Mover hacia abajo","ra_Move up":"Ascender",ra_Name:YZ,"ra_No data found in file":"No se encontraron datos en el archivo","ra_No one license found in license manager":"No se encontró ninguna licencia en el administrador de licencias","ra_No response from admin":"No hay respuesta del administrador","ra_No response from the backend":"No hay respuesta del backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Los no expertos pueden crear nuevos objetos solo en "0_userdata.0" o "alias.0".',"ra_Not a number":"No un número","ra_OAuth Client ID":"ID de cliente OAuth","ra_OAuth Client secret":"Secreto de cliente OAuth",ra_Objects:QZ,ra_Ok:bZ,"ra_On weekdays":"De lunes a viernes","ra_Only following structures of objects are available:":"Solo están disponibles las siguientes estructuras de objetos:","ra_Only selected":"Solo seleccionados","ra_Owner group":"Grupo propietario","ra_Owner user":"Usuario propietario","ra_Passwords are not equal!":"¡Las contraseñas no son iguales!","ra_Place your files here or click here to open the browse dialog":"Coloque sus archivos aquí o haga clic aquí para abrir el cuadro de diálogo de exploración","ra_Please allow popups in your browser for this page!":"¡Permita ventanas emergentes en su navegador para esta página!","ra_Please confirm":"Por favor confirmar","ra_Please create license":"Por favor cree una licencia","ra_Please enter the license":"Por favor ingrese la licencia","ra_Please select file...":"Seleccione el archivo...","ra_Please select object ID...":"Por favor seleccione ID de objeto ...","ra_Port could be used by %s":"El puerto podría ser utilizado por %s","ra_Port is already used by %s":"El puerto ya está en uso por %s","ra_Press ENTER Key to add new item":"Presione la tecla ENTER para agregar un nuevo elemento","ra_Private certificate":"certificado privado",ra_Product:UZ,"ra_Public certificate":"Certificado público","ra_Quality code":"Calidad","ra_Refresh tree":"Actualizar árbol","ra_Reload files":"Recargar archivos",ra_Rename_Move_Copy:$Z,"ra_Renew %s access":"Renovar el acceso a %s",ra_Repeat:PZ,ra_Replace:WZ,"ra_Request timed out":"Tiempo de espera agotado","ra_Restrict to folder":"Restringir a carpeta",ra_Root:JZ,ra_Saturday:BZ,ra_Save:RZ,"ra_Save and close":"Guardar y cerrar","ra_Save configuration to file":"Guardar configuración en archivo","ra_Save objects tree as JSON file":"Guardar el árbol de objetos como archivo JSON","ra_Select all":"Seleccionar todo","ra_Select color":"Seleccionar el color","ra_Select predefined icon":"Seleccionar icono predefinido","ra_Select type of export":"Seleccione tipo de exportación",ra_Selected:FZ,"ra_Selected %s object(s)":"%s objetos seleccionados","ra_Serial number (UUID)":"Número de serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'El número de serie (UUID) "%s" en la licencia es para otro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sesión expirará en %s segundos. ¿Continuar?","ra_Show all folders":"Mostrar todas las carpetas","ra_Show lines between rows":"Mostrar líneas entre filas","ra_Show/Hide object descriptions":"Mostrar/ocultar descripciones de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Algunos datos no se almacenan. ¿Desechar?",ra_States:GZ,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado correctamente. El token es válido hasta el %s y se renovará automáticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado correctamente. El token es válido hasta %s, pero puede caducar porque la instancia no está en ejecución.","ra_Suitable license not found in license manager":"Licencia adecuada no encontrada en el administrador de licencias",ra_Sunday:HZ,"ra_Suppress question for next %s minutes":"Suprimir pregunta durante los próximos %s minutos","ra_System language":"Lenguaje del sistema","ra_Take browser position":"Tomar posición desde el navegador","ra_Take position from system settings":"Tomar posición desde la configuración del sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Los expertos pueden crear objetos en todas partes excepto desde el segundo nivel (por ejemplo, "vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"No se encontró la página que busca","ra_The schedule will be executed every minute. Are you sure?":"El cronograma se ejecutará cada minuto. ¿Estás seguro?","ra_The schedule will be executed every second. Are you sure?":"El cronograma se ejecutará cada segundo. ¿Estás seguro?",ra_Thursday:VZ,ra_Timestamp:ZZ,"ra_Toggle expert mode":"Alternar modo experto","ra_Toggle the states view":"Alternar la vista de estados","ra_Toggle view mode":"Alternar modo de vista","ra_Too big":"Demasiado grande","ra_Too small":"Demasiado pequeña","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:XZ,"ra_Unknown error":"Error desconocido","ra_Unknown error!":"¡Error desconocido!",ra_Update:KZ,"ra_Upload file":"Subir archivo","ra_Use all available let's encrypt certificates":"Utilice todos los certificados let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use el adaptador iobroker.acme para los certificados de letsencrypt","ra_Use system settings for position":"Usar la configuración del sistema para la posición","ra_Used system settings":"Configuraciones del sistema usadas","ra_User files":"Archivos de usuario",ra_ValidTill:qZ,ra_Value:eX,ra_Version:tX,"ra_View file":"Ver archivo","ra_View: %s":"Ver: %s",ra_Wednesday:sX,ra_Width:iX,"ra_YAML editor":"Editor YAML",ra_Yes:rX,"ra_You can export all objects or just the selected branch.":"Puede exportar todos los objetos o solo la rama seleccionada.","ra_You can filter entries by entering here some text":"Puede filtrar las entradas ingresando aquí algún texto","ra_You can use * as wildcard":"Puedes utilizar * como comodín",ra___different__:oX,ra_aclEveryone_read_object:nX,ra_aclEveryone_read_state:aX,ra_aclEveryone_write_object:MX,ra_aclEveryone_write_state:cX,ra_aclGroup_read_object:uX,ra_aclGroup_read_state:lX,ra_aclGroup_write_object:NX,ra_aclGroup_write_state:LX,ra_aclOwner_read_object:gX,ra_aclOwner_read_state:jX,ra_aclOwner_write_object:yX,ra_aclOwner_write_state:TX,ra_buttons:DX,ra_changedFrom:dX,ra_close:hX,ra_create_boolean_state:zX,ra_create_channel:wX,ra_create_device:IX,ra_create_number_state:CX,ra_create_state:pX,ra_create_string_state:AX,ra_daysShortText:mX,ra_dow_Fr:fX,ra_dow_Mo:OX,ra_dow_Sa:EX,ra_dow_Su:_X,ra_dow_Th:xX,ra_dow_Tu:SX,ra_dow_We:kX,ra_expertMode:vX,ra_false:YX,ra_fileType_all:QX,ra_fileType_audio:bX,ra_fileType_code:UX,ra_fileType_images:$X,ra_fileType_txt:PX,ra_fileType_video:WX,"ra_fileType_video,":"Video",ra_filter_customs:JX,ra_filter_customs_without:BX,ra_filter_func:RX,ra_filter_id:FX,ra_filter_name:GX,ra_filter_role:HX,ra_filter_room:VX,ra_filter_type:ZX,"ra_import data from %s file":"Importar datos del archivo %s",ra_invalidConfig:XX,ra_lastChange:KX,ra_locally:qX,ra_month_Apr:eK,ra_month_Aug:tK,ra_month_Dec:sK,ra_month_Feb:iK,ra_month_Jan:rK,ra_month_Jul:oK,ra_month_Jun:nK,ra_month_Mai:aK,ra_month_Mar:MK,ra_month_Nov:cK,ra_month_Oct:uK,ra_month_Sep:lK,ra_months_Apr:NK,ra_months_Aug:LK,ra_months_Dec:gK,ra_months_Feb:jK,ra_months_Jan:yK,ra_months_Jul:TK,ra_months_Jun:DK,ra_months_Mai:dK,ra_months_Mar:hK,ra_months_Nov:zK,ra_months_Oct:wK,ra_months_Sep:IK,"ra_no confirm for 5 mins":"Sin confirmación durante 5 minutos",ra_none:CK,ra_object_changed_by:pK,ra_object_changed_by_user:AK,ra_otherConfig:mK,ra_qualityCode:fK,ra_repeat:OK,ra_select_folder_hint:EK,ra_show_all:_K,ra_state_changed_by:xK,ra_state_changed_from:SK,ra_timestamp:kK,ra_tooltip_ack:vK,ra_tooltip_comment:YK,ra_tooltip_copyState:QK,ra_tooltip_ctrlForLink:bK,ra_tooltip_customConfig:UK,ra_tooltip_deleteObject:$K,ra_tooltip_editObject:PK,ra_tooltip_editState:WK,ra_tooltip_expire:JK,ra_tooltip_from:BK,ra_tooltip_lc:RK,ra_tooltip_quality:FK,ra_tooltip_ts:GK,ra_tooltip_user:HK,ra_tooltip_value:VK,ra_true:ZK,"ra_use seconds":"usar segundos",ra_val:XK,"ra_via internet":"vía Internet",ra_warning_every_minute:KK,ra_warning_every_second:qK,sc_cron:eq,sc_date:tq,sc_dates:sq,sc_dow:iq,sc_dows:rq,sc_every:oq,sc_everyN_dates:nq,sc_everyN_dow:aq,sc_everyN_dows:Mq,sc_everyN_hours:cq,sc_everyN_minutes:uq,sc_everyN_months:lq,sc_everyN_seconds:Nq,sc_every_dates:Lq,sc_every_dow:gq,sc_every_dows:jq,sc_every_hours:yq,sc_every_minutes:Tq,sc_every_months:Dq,sc_every_seconds:dq,sc_from:hq,sc_hours:zq,sc_interval:wq,sc_intervalBetween:Iq,sc_invalid_cron:Cq,sc_minutes:pq,sc_months:Aq,sc_once:mq,sc_period:fq,sc_seconds:Oq,sc_simple:Eq,sc_specific:_q,sc_specific_dates:xq,sc_specific_dow:Sq,sc_specific_dows:kq,sc_specific_hours:vq,sc_specific_minutes:Yq,sc_specific_months:Qq,sc_specific_seconds:bq,sc_time:Uq,sc_to:$q,sc_wizard:Pq,sch_all:Wq,sch_astroDay:Jq,sch_astroNight:Bq,sch_astro_dawn:Rq,sch_astro_dusk:Fq,sch_astro_goldenHour:Gq,sch_astro_goldenHourEnd:Hq,sch_astro_nadir:Vq,sch_astro_nauticalDawn:Zq,sch_astro_nauticalDusk:Xq,sch_astro_night:Kq,sch_astro_nightEnd:qq,sch_astro_solarNoon:eee,sch_astro_sunrise:tee,sch_astro_sunriseEnd:see,sch_astro_sunset:iee,sch_astro_sunsetStart:ree,sch_at:oee,sch_desc_atTime:nee,sch_desc_everyDay:aee,sch_desc_everyHour:Mee,sch_desc_everyMinute:cee,sch_desc_everyMonth:uee,sch_desc_everyNDay:lee,sch_desc_everyNHours:Nee,sch_desc_everyNMinutes:Lee,sch_desc_everyNMonths:gee,sch_desc_everyNWeeks:jee,sch_desc_everyNYears:yee,sch_desc_everyWeek:Tee,sch_desc_everyYear:Dee,sch_desc_intervalFromTo:dee,sch_desc_never:hee,sch_desc_onDate:zee,sch_desc_onDates:wee,sch_desc_onEveryDate:Iee,sch_desc_onMonth:Cee,sch_desc_onMonths:pee,sch_desc_onWeekday:Aee,sch_desc_onWeekdays:mee,sch_desc_onWeekends:fee,sch_desc_onWorkdays:Oee,sch_desc_onceInPast:Eee,sch_desc_once_on:_ee,sch_desc_validFrom:xee,sch_desc_validFromTo:See,sch_desc_validTo:kee,sch_every:vee,sch_exactTime:Yee,sch_from:Qee,sch_fromTo:bee,sch_intervalTime:Uee,sch_invert:$ee,sch_no_one:Pee,sch_on:Wee,sch_period:Jee,sch_periodDaily:Bee,sch_periodDates:Ree,sch_periodDay:Fee,sch_periodEvery:Gee,sch_periodEveryDay:Hee,sch_periodEveryMonth:Vee,sch_periodEveryWeek:Zee,sch_periodEveryYear:Xee,sch_periodHours:Kee,sch_periodMinutes:qee,sch_periodMonth:ete,sch_periodMonthly:tte,sch_periodOnce:ste,sch_periodSpecificMonths:ite,sch_periodWeek:rte,sch_periodWeekdays:ote,sch_periodWeekend:nte,sch_periodWeekly:ate,sch_periodWorkdays:Mte,sch_periodYear:cte,sch_periodYearly:ute,sch_specificTime:lte,sch_time:Nte,sch_to:Lte,sch_valid:gte,sch_validFrom:jte,sch_validTo:yte,sch_wholeDay:Tte,sch_yearEveryMonth:Dte},hte="Akcje",zte="Dodać",wte="Anuluj",Ite="Kategorie",Cte="Sprawdzony",pte="Kasować",Ate="Blisko",mte="Handlowy",fte="Konfiguruj",Ote="Połączony",Ete="Kontynuować",_te="Skopiowano",xte="Stwórz",Ste="Przyciąć",kte="Delete",vte="Usunąć",Yte="Wyrzucać",Qte="Niepowiązany",bte="Błąd",Ute="Filtr",$te="Piątek",Pte="Szerokość",Wte="Wyloguj",Jte="Długość geograficzna",Bte="Wiadomość",Rte="Poniedziałek",Fte="Nazwa",Gte="Obiekty",Hte="Dobrze",Vte="Produkt",Zte="Zmień nazwę/Przenieś/Kopiuj",Xte="Powtarzać",Kte="Zastępować",qte="Korzeń",ese="Sobota",tse="Zapisać",sse="Wybrany",ise="Stany",rse="Niedziela",ose="Czwartek",nse="Znak czasu",ase="Wtorek",Mse="Aktualizacja",cse="Obowiązuje do",use="Wartość",lse="Wersja",Nse="Środa",Lse="Szerokość",gse="Tak",jse="różne",yse="Każdy może czytać obiekt",Tse="Każdy może czytać stan",Dse="Każdy może pisać przedmiot",dse="Każdy może pisać stan",hse="Grupa może odczytać obiekt",zse="Grupa może odczytać stan",wse="Grupa może pisać obiekt",Ise="Grupa może pisać stan",Cse="Właściciel może czytać obiekt",pse="Właściciel może odczytać stan",Ase="Właściciel może napisać obiekt",mse="Właściciel może pisać stan",fse="guziki",Ose="Zmieniony z",Ese="blisko",_se="Utwórz stan logiczny",xse="Utwórz kanał",Sse="Utwórz urządzenie",kse="Utwórz stan liczbowy",vse="Utwórz stan",Yse="Utwórz stan ciągu",Qse="d.",bse="Ks",Use="Mo",$se="Sa",Pse="Su",Wse="Th",Jse="Tu",Bse="My",Rse="Tryb ekspercki",Fse="FAŁSZ",Gse="Wszystkie pliki",Hse="Audio",Vse="Kod/JSON",Zse="Obrazy",Xse="Tekst",Kse="Wideo",qse="Ustawienia",eie="bez",tie="Funkcjonować",sie="ID",iie="Imię",rie="Rola",oie="Sala",nie="Rodzaj",aie="Nieprawidłowe ustawienia",Mie="Ostatnia zmiana",cie="lokalnie",uie="kwiecień",lie="sierpień",Nie="grudzień",Lie="luty",gie="styczeń",jie="lipiec",yie="czerwiec",Tie="Mai",Die="Zniszczyć",die="listopad",hie="październik",zie="wrzesień",wie="kwiecień",Iie="sierpień",Cie="grudzień",pie="luty",Aie="styczeń",mie="lipiec",fie="czerwiec",Oie="Mai",Eie="Zniszczyć",_ie="listopad",xie="październik",Sie="wrzesień",kie="Żaden",vie="Obiekt zmieniony przez",Yie="Obiekt ostatnio zmieniony o godz",Qie="Ustawienia z innego adaptera %s",bie="Kod jakości",Uie="powtarzać",$ie="Aby wybrać folder, wystarczy przytrzymać klawisz „shift”, klikając folder.",Pie="Pokaż wszystko",Wie="Stan zmieniony przez",Jie="Obiekt zmieniony z",Bie="Znak czasu",Rie="Potwierdzon",Fie="Komentarz",Gie="Skopiuj wartość stanu",Hie="Przytrzymaj klawisz CTRL/⌘, aby otworzyć link",Vie="Własne ustawienia",Zie="Usuń obiekt",Xie="Edytuj obiekt",Kie="Edytuj wartość stanu",qie="Wygasa za",ere="Z",tre="Ostatnia zmiana",sre="Jakość",ire="Znak czasu",rre="Użytkownik",ore="Wartość",nre="PRAWDA",are="Wartość",Mre="Ostrzeżenie: Zadanie CRON będzie uruchamiane co minutę w określonym przedziale czasowym!",cre="Ostrzeżenie: Zadanie CRON będzie uruchamiane co sekundę w określonym przedziale czasowym!",ure="CRON",lre="Data",Nre="Daktyle",Lre="Dzień",gre="Dzień tygodnia",jre="Każdy",yre="co N dni",Tre="w każdy N-ty dzień tygodnia",Dre="co N dnia tygodnia",dre="co N godzin",hre="co N minut",zre="co N miesięcy",wre="co N sekund",Ire="codziennie",Cre="każdy dzień tygodnia",pre="każdy dzień tygodnia",Are="co godzinę",mre="każda minuta",fre="każdego miesiąca",Ore="każda sekunda",Ere="Od",_re="godziny",xre="Interwał",Sre="Interwał między",kre="Nieprawidłowy CRON",vre="Minuty",Yre="miesięcy",Qre="Pewnego razu",bre="Kropka",Ure="sekundy",$re="Prosty",Pre="Określony czas",Wre="konkretne daty",Jre="określone dni tygodnia",Bre="określony dzień tygodni",Rre="określone godziny",Fre="określone minuty",Gre="określone miesiące",Hre="określone sekundy",Vre="Czas",Zre="Do",Xre="Czarodziej",Kre="wszystko",qre="Dzień Astro",eoe="Noc Astro",toe="Świt",soe="Zmierzch",ioe="Złota godzina",roe="Koniec złotej godziny",ooe="Północ",noe="Morski świt",aoe="Morski zmierzch",Moe="Noc",coe="Koniec nocy",uoe="Południe słoneczne",loe="Wschód słońca",Noe="Koniec wschodu słońca",Loe="Zachód słońca",goe="Początek zachodu słońca",joe="w",yoe="na %s",Toe="codziennie",Doe="co godzinę",doe="każda minuta",hoe="każdego miesiąca",zoe="każdego dnia %s",woe="co %s godzin",Ioe="co %s minut",Coe="co %s miesięcy",poe="co %s tygodni",Aoe="co %s lat",moe="co tydzień",foe="każdego roku",Ooe="od %s do %s",Eoe="nigdy",_oe="na %s z %s",xoe="na %s i %s z",Soe="w każdą datę",koe="%s",voe="%s i %s",Yoe="na %s",Qoe="na %s i %s",boe="w weekendy",Uoe="w dni robocze",$oe="nie będzie już wykonywany, ponieważ start jest w przeszłości",Poe="na %s",Woe="z %s",Joe="Wykonaj od do",Boe="do %s",Roe="każdy",Foe="Określony czas",Goe="od",Hoe="Od-do",Voe="Czas przerwy",Zoe="odwracać",Xoe="Żaden",Koe="na",qoe="Kropka",ene="Codziennie",tne="Daktyle",sne="Dzień",ine="Każdy",rne="Codziennie",one="Każdego miesiąca",nne="Co tydzień",ane="Każdego roku",Mne="godziny",cne="Minuty",une="miesiąc",lne="Miesięczny",Nne="Pewnego razu",Lne="Określone miesiące",gne="Tydzień",jne="Dni powszednie",yne="Weekend",Tne="Co tydzień",Dne="Dni robocze",dne="Rok",hne="Rocznie",zne="Określony czas",wne="Czas",Ine="do",Cne="Ważny",pne="od",Ane="do",mne="Cały dzień",fne="każdego miesiąca",One={"ra_%s links from aliases":"%s linków z aliasów","ra_%s object(s) processed":"Przetworzono %s obiektów","ra_%s was imported":"%s został zaimportowany","ra_Accept license":"Zaakceptuj licencję",ra_Actions:hte,"ra_Add new child object to selected parent":"Dodaj nowy obiekt potomny do wybranego rodzica","ra_Add objects tree from JSON file":"Dodaj drzewo obiektów z pliku JSON","ra_Add row":"Dodaj wiersz","ra_Advanced options":"Zaawansowane opcje","ra_All items are filtered out":"Wszystkie pozycje są odfiltrowane","ra_All objects":"Wszystkie obiekty",ra_Append:zte,"ra_Append %s entries or replace existing?":"Dołączyć wpisy %s czy zastąpić istniejące?","ra_Append or replace?":"Dołączyć czy zastąpić?","ra_Are you sure?":"Jesteś pewny?","ra_Auto (no custom columns)":"Auto (bez kolumn niestandardowych)","ra_Back to %s":"Powrót do %s","ra_Background image":"Zdjęcie w tle",ra_Cancel:wte,"ra_Cannot add items with set filter":"Nie można dodać elementów z ustawionym filtrem","ra_Cannot decode license":"Nie można zdekodować licencji","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Nie można określić pozycji: ustawienia systemu są puste, a wykrywanie GPS jest wyłączone w przeglądarce",'ra_Cannot find "%s"':"Nie można znaleźć „%s”",'ra_Cannot read "%s"':"Nie można odczytać „%s”","ra_Cannot read licenses: %s":"Nie można odczytać licencji: %s","ra_Cannot retrieve options, as instance is offline":"Nie można pobrać opcji, ponieważ instancja jest w trybie offline","ra_Cannot update attribute, because not found in the object":"Nie można zaktualizować atrybutu, ponieważ nie znaleziono go w obiekcie","ra_Cannot upload":"Nie można przesłać",ra_Categories:Ite,"ra_Chained certificate":"Certyfikat łańcuchowy","ra_Change color theme":"Zmień motyw kolorystyczny","ra_Changed from":"Zmieniony z","ra_Channel → State":"Kanał → Stan","ra_Check license":"Sprawdź licencję",ra_Checked:Cte,ra_Clear:pte,"ra_Clear filter":"Czysty filtr","ra_Clear icon":"Wyczyść ikonę","ra_Click to see in full size":"Kliknij, aby zobaczyć w pełnym rozmiarze","ra_Click to show":"Kliknij, aby pokazać","ra_Clone current row":"Sklonuj bieżący wiersz",ra_Close:Ate,"ra_Collapse all nodes":"Zwiń wszystkie węzły","ra_Collapse one step node":"Zwiń o jeden poziom",ra_Commercial:mte,ra_Configure:fte,"ra_Configure visible columns":"Skonfiguruj widoczne kolumny","ra_Confirm deletion of %s":"Potwierdź usunięcie %s",ra_Connected:Ote,ra_Continue:Ete,ra_Copied:_te,"ra_Copied %s":'Skopiowano "%s"',"ra_Copy content":"Kopiuj zawartość",ra_Create:xte,"ra_Create alias":"Utwórz alias","ra_Create folder":"Utwórz folder","ra_Create new folder in %s":"Utwórz nowy folder w %s",ra_Crop:Ste,"ra_Define CRON...":"Zdefiniuj CRON...","ra_Define functions":"Zdefiniuj funkcje","ra_Define rooms":"Zdefiniuj pokoje","ra_Define schedule":"Zdefiniuj harmonogram","ra_Define schedule...":"Zdefiniuj harmonogram ...",ra_Del:kte,ra_Delete:vte,"ra_Delete current row":"Usuń bieżący wiersz","ra_Deselect all":"Odznacz wszystko","ra_Device → Channel → State":"Urządzenie → Kanał → Stan","ra_Disable/Enable translation":"Wyłącz/Włącz tłumaczenie",ra_Discard:Yte,ra_Disconnected:Qte,"ra_Do not ask for next 2 hours in this session":"Nie proś o kolejne 2 godziny w tej sesji","ra_Do not export values of states":"Nie eksportuj wartości stanów","ra_Do not use let's encrypt":"Nie używaj zaszyfrujmy","ra_Docker is not available":"Docker nie jest dostępny","ra_Docker is not installed or not running":"Docker nie jest zainstalowany lub nie działa","ra_Double click to reset table layout":"Kliknij dwukrotnie, aby zresetować układ tabeli","ra_Drag 'n' drop some files here, or click to select files":"Przeciągnij i upuść kilka plików tutaj lub kliknij, aby wybrać pliki","ra_Drop file here":"Upuść plik tutaj","ra_Drop the files here...":"Upuść plik tutaj...","ra_Duplicate name":"Zduplikowana nazwa","ra_Edit ACL":"Edytuj listy ACL","ra_Edit alias":"Edytuj alias","ra_Edit custom config":"Edytuj konfigurację niestandardową","ra_Edit full path":"Edytuj pełną ścieżkę","ra_Edit function":"Funkcja edycji","ra_Edit object field":"Edytuj pole obiektu","ra_Edit role":"Edytuj rolę","ra_Edit room":"Edytuj pokój","ra_Edit value":"Edytuj wartość","ra_Enter the code from that page here":"Wpisz kod z tej strony tutaj",ra_Error:bte,"ra_Expand all nodes":"Rozwiń wszystkie węzły","ra_Expand one step node":"Rozwiń o jeden poziom","ra_Expand/Collapse card":"Rozwiń/Zwiń kartę","ra_Export configuration section":"Sekcja konfiguracji eksportu","ra_Export data to %s file":"Eksportuj dane do pliku %s","ra_Failed to open JSON File":"Nie udało się otworzyć pliku JSON","ra_Fallback custom certificates":"Niestandardowe certyfikaty zastępcze","ra_File is too big. Max %sk allowed. Try use SVG.":"Plik jest za duży. Maksymalna dozwolona liczba %sk. Spróbuj użyć SVG.",ra_Filter:Ute,"ra_Filter and Data Actions":"Akcje filtrów i danych","ra_Filter files":"Filtruj pliki","ra_Folder name":"Nazwa folderu","ra_Folder → Channel → State":"Folder → Kanał → Stan","ra_Folder → Device → Channel → State":"Folder → Urządzenie → Kanał → Stan","ra_Folder → State":"Folder → Stan","ra_Folders always first":"Foldery zawsze na pierwszym miejscu",ra_Friday:$te,"ra_From file":"Z pliku","ra_From text":"Z tekstu","ra_Get %s access":"Uzyskaj dostęp %s","ra_Good luck":"Powodzenia","ra_Hide empty folders":"Ukryj puste foldery","ra_If no file will be created in the folder, it will disappear after the browser closed":"Jeśli w folderze nie zostanie utworzony żaden plik, zniknie on po zamknięciu przeglądarki","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Jeśli przycisk powyżej nie działa, możesz autoryzować tę aplikację ręcznie, odwiedzając ten adres URL","ra_Import and add configuration section":"Importuj i dodaj sekcję konfiguracji","ra_Import and replace configuration section":"Importuj i zastąp sekcję konfiguracji","ra_Import data from %s file":"Importuj dane z pliku %s","ra_Import from %s":"Importuj z %s","ra_Instance %s is alive":"Instancja %s jest aktywna","ra_Instance %s is not alive":"Instancja TEKST nie jest aktywna","ra_Instance is not alive":"Instancja nie jest aktywna","ra_Invalid CRON":"Nieprawidłowy CRON","ra_Invalid JSON":"Nieprawidłowy JSON","ra_Invalid JSON file.":"Nieprawidłowy plik JSON.","ra_Invalid JSON format. Expected an array.":"Nieprawidłowy format JSON. Oczekiwano tablicy.","ra_Invalid answer from server":"Nieprawidłowa odpowiedź z serwera","ra_Invalid parent folder!":"Nieprawidłowy folder nadrzędny!","ra_Invalid structure":"Nieprawidłowa struktura","ra_JSON editor":"Edytor JSON","ra_Last change":"Ostatnia zmiana",ra_Latitude:Pte,"ra_License %s":"Licencja %s","ra_License agreement":"Umowa licencyjna","ra_License does not exist":"Licencja nie istnieje","ra_License expired on %s":"Licencja wygasła w dniu %s",'ra_License for other product "%s"':"Licencja na inny produkt „%s”","ra_License is for version %s, but required version is %s.":"Licencja dotyczy wersji %s, ale wymagana wersja to %s.","ra_License must be converted":"Licencja musi zostać przekonwertowana na nowszą wersję. Możesz to zrobić w swoim profilu iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Nie znaleziono licencji w menedżerze licencji. Chcesz zaktualizować licencje z iobroker.net?","ra_Listen on all IPs":"Słuchaj na wszystkich adresach IP","ra_Load configuration from file":"Załaduj konfigurację z pliku",ra_Logout:Wte,ra_Longitude:Jte,'ra_May not trigger "updateLicenses"':"Może nie uruchamiać „updateLicenses”",ra_Message:Bte,ra_Monday:Rte,"ra_Move down":"Padnij","ra_Move up":"Podnieść",ra_Name:Fte,"ra_No data found in file":"Nie znaleziono danych w pliku","ra_No one license found in license manager":"Nie znaleziono licencji w menedżerze licencji","ra_No response from admin":"Brak odpowiedzi od administratora","ra_No response from the backend":"Brak odpowiedzi z zaplecza",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Osoby nie będące ekspertami mogą tworzyć nowe obiekty tylko w „0_userdata.0” lub „alias.0”.","ra_Not a number":"Nie numer","ra_OAuth Client ID":"Identyfikator klienta OAuth","ra_OAuth Client secret":"Tajny klucz klienta OAuth",ra_Objects:Gte,ra_Ok:Hte,"ra_On weekdays":"W dni powszednie","ra_Only following structures of objects are available:":"Dostępne są tylko następujące struktury obiektów:","ra_Only selected":"Tylko wybrane","ra_Owner group":"Grupa właścicieli","ra_Owner user":"Właściciel użytkownika","ra_Passwords are not equal!":"Hasła nie są równe!","ra_Place your files here or click here to open the browse dialog":"Umieść swoje pliki tutaj lub kliknij tutaj, aby otworzyć okno dialogowe przeglądania","ra_Please allow popups in your browser for this page!":"Proszę zezwolić na wyświetlanie wyskakujących okienek w przeglądarce dla tej strony!","ra_Please confirm":"Proszę potwierdzić","ra_Please create license":"Utwórz licencję","ra_Please enter the license":"Proszę wprowadzić licencję","ra_Please select file...":"Wybierz plik...","ra_Please select object ID...":"Wybierz identyfikator obiektu ...","ra_Port could be used by %s":"Port może być używany przez %s","ra_Port is already used by %s":"Port jest już używany przez %s","ra_Press ENTER Key to add new item":"Naciśnij klawisz ENTER, aby dodać nowy element","ra_Private certificate":"Prywatny certyfikat",ra_Product:Vte,"ra_Public certificate":"Certyfikat publiczny","ra_Quality code":"Jakości","ra_Refresh tree":"Odśwież drzewo","ra_Reload files":"Załaduj ponownie pliki",ra_Rename_Move_Copy:Zte,"ra_Renew %s access":"Odnów dostęp %s",ra_Repeat:Xte,ra_Replace:Kte,"ra_Request timed out":"Upłynął limit czasu żądania","ra_Restrict to folder":"Ogranicz do folderu",ra_Root:qte,ra_Saturday:ese,ra_Save:tse,"ra_Save and close":"Zapisz i zamknij","ra_Save configuration to file":"Zapisz konfigurację do pliku","ra_Save objects tree as JSON file":"Zapisz drzewo obiektów jako plik JSON","ra_Select all":"Zaznacz wszystko","ra_Select color":"Wybierz kolor","ra_Select predefined icon":"Wybierz predefiniowaną ikonę","ra_Select type of export":"Wybierz rodzaj eksportu",ra_Selected:sse,"ra_Selected %s object(s)":"Wybrane obiekty %s","ra_Serial number (UUID)":"Numer seryjny (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Numer seryjny (UUID) „%s” w licencji dotyczy innego urządzenia.","ra_Session will expire in %s seconds. Continue?":"Sesja wygaśnie za %s sekund. Kontynuować?","ra_Show all folders":"Pokaż wszystkie foldery","ra_Show lines between rows":"Pokaż linie między rzędami","ra_Show/Hide object descriptions":"Pokaż/ukryj opisy obiektów","ra_Show/hide filter input":"Pokaż/ukryj wejście filtra","ra_Some data are not stored. Discard?":"Niektóre dane nie są przechowywane. Wyrzucać?",ra_States:ise,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Pomyślnie autoryzowano. Token ważny do %s i zostanie automatycznie odnowiony.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Pomyślnie autoryzowano. Token ważny do %s, ale może wygasnąć, ponieważ instancja nie jest uruchomiona.","ra_Suitable license not found in license manager":"Nie znaleziono odpowiedniej licencji w menedżerze licencji",ra_Sunday:rse,"ra_Suppress question for next %s minutes":"Ukryj pytanie przez następne %s minut","ra_System language":"Język systemu","ra_Take browser position":"Zajmij pozycję z przeglądarki","ra_Take position from system settings":"Zajmij pozycję z ustawień systemowych",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Eksperci mogą tworzyć obiekty wszędzie poza drugim poziomem (np. „Vis.0” lub „javascript.0”).","ra_The page you are looking for was not found":"Strona, której szukasz nie została znaleziona","ra_The schedule will be executed every minute. Are you sure?":"Harmonogram będzie wykonywany co minutę. Czy jesteś pewien?","ra_The schedule will be executed every second. Are you sure?":"Harmonogram będzie wykonywany co sekundę. Czy jesteś pewien?",ra_Thursday:ose,ra_Timestamp:nse,"ra_Toggle expert mode":"Przełącz tryb eksperta","ra_Toggle the states view":"Przełącz widok stanów","ra_Toggle view mode":"Przełącz tryb widoku","ra_Too big":"Za duży","ra_Too small":"Za mały","ra_Transparent dialog":"Przejrzyste okno dialogowe",ra_Tuesday:ase,"ra_Unknown error":"Nieznany błąd","ra_Unknown error!":"Nieznany błąd!",ra_Update:Mse,"ra_Upload file":"Przesyłanie pliku","ra_Use all available let's encrypt certificates":"Użyj wszystkich dostępnych certyfikatów Let's Encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Użyj adaptera iobroker.acme dla certyfikatów letsencrypt","ra_Use system settings for position":"Użyj ustawień systemowych dla pozycji","ra_Used system settings":"Używane ustawienia systemowe","ra_User files":"Pliki użytkownika",ra_ValidTill:cse,ra_Value:use,ra_Version:lse,"ra_View file":"Zobaczyć plik","ra_View: %s":"Widok: %s",ra_Wednesday:Nse,ra_Width:Lse,"ra_YAML editor":"Edytor YAML",ra_Yes:gse,"ra_You can export all objects or just the selected branch.":"Możesz wyeksportować wszystkie obiekty lub tylko wybraną gałąź.","ra_You can filter entries by entering here some text":"Możesz filtrować wpisy, wpisując tutaj jakiś tekst","ra_You can use * as wildcard":"Możesz użyć * jako symbolu wieloznacznego",ra___different__:jse,ra_aclEveryone_read_object:yse,ra_aclEveryone_read_state:Tse,ra_aclEveryone_write_object:Dse,ra_aclEveryone_write_state:dse,ra_aclGroup_read_object:hse,ra_aclGroup_read_state:zse,ra_aclGroup_write_object:wse,ra_aclGroup_write_state:Ise,ra_aclOwner_read_object:Cse,ra_aclOwner_read_state:pse,ra_aclOwner_write_object:Ase,ra_aclOwner_write_state:mse,ra_buttons:fse,ra_changedFrom:Ose,ra_close:Ese,ra_create_boolean_state:_se,ra_create_channel:xse,ra_create_device:Sse,ra_create_number_state:kse,ra_create_state:vse,ra_create_string_state:Yse,ra_daysShortText:Qse,ra_dow_Fr:bse,ra_dow_Mo:Use,ra_dow_Sa:$se,ra_dow_Su:Pse,ra_dow_Th:Wse,ra_dow_Tu:Jse,ra_dow_We:Bse,ra_expertMode:Rse,ra_false:Fse,ra_fileType_all:Gse,ra_fileType_audio:Hse,ra_fileType_code:Vse,ra_fileType_images:Zse,ra_fileType_txt:Xse,ra_fileType_video:Kse,"ra_fileType_video,":"Wideo",ra_filter_customs:qse,ra_filter_customs_without:eie,ra_filter_func:tie,ra_filter_id:sie,ra_filter_name:iie,ra_filter_role:rie,ra_filter_room:oie,ra_filter_type:nie,"ra_import data from %s file":"Importuj dane z pliku %s",ra_invalidConfig:aie,ra_lastChange:Mie,ra_locally:cie,ra_month_Apr:uie,ra_month_Aug:lie,ra_month_Dec:Nie,ra_month_Feb:Lie,ra_month_Jan:gie,ra_month_Jul:jie,ra_month_Jun:yie,ra_month_Mai:Tie,ra_month_Mar:Die,ra_month_Nov:die,ra_month_Oct:hie,ra_month_Sep:zie,ra_months_Apr:wie,ra_months_Aug:Iie,ra_months_Dec:Cie,ra_months_Feb:pie,ra_months_Jan:Aie,ra_months_Jul:mie,ra_months_Jun:fie,ra_months_Mai:Oie,ra_months_Mar:Eie,ra_months_Nov:_ie,ra_months_Oct:xie,ra_months_Sep:Sie,"ra_no confirm for 5 mins":"brak potwierdzenia przez 5 minut",ra_none:kie,ra_object_changed_by:vie,ra_object_changed_by_user:Yie,ra_otherConfig:Qie,ra_qualityCode:bie,ra_repeat:Uie,ra_select_folder_hint:$ie,ra_show_all:Pie,ra_state_changed_by:Wie,ra_state_changed_from:Jie,ra_timestamp:Bie,ra_tooltip_ack:Rie,ra_tooltip_comment:Fie,ra_tooltip_copyState:Gie,ra_tooltip_ctrlForLink:Hie,ra_tooltip_customConfig:Vie,ra_tooltip_deleteObject:Zie,ra_tooltip_editObject:Xie,ra_tooltip_editState:Kie,ra_tooltip_expire:qie,ra_tooltip_from:ere,ra_tooltip_lc:tre,ra_tooltip_quality:sre,ra_tooltip_ts:ire,ra_tooltip_user:rre,ra_tooltip_value:ore,ra_true:nre,"ra_use seconds":"użyj sekund",ra_val:are,"ra_via internet":"przez internet",ra_warning_every_minute:Mre,ra_warning_every_second:cre,sc_cron:ure,sc_date:lre,sc_dates:Nre,sc_dow:Lre,sc_dows:gre,sc_every:jre,sc_everyN_dates:yre,sc_everyN_dow:Tre,sc_everyN_dows:Dre,sc_everyN_hours:dre,sc_everyN_minutes:hre,sc_everyN_months:zre,sc_everyN_seconds:wre,sc_every_dates:Ire,sc_every_dow:Cre,sc_every_dows:pre,sc_every_hours:Are,sc_every_minutes:mre,sc_every_months:fre,sc_every_seconds:Ore,sc_from:Ere,sc_hours:_re,sc_interval:xre,sc_intervalBetween:Sre,sc_invalid_cron:kre,sc_minutes:vre,sc_months:Yre,sc_once:Qre,sc_period:bre,sc_seconds:Ure,sc_simple:$re,sc_specific:Pre,sc_specific_dates:Wre,sc_specific_dow:Jre,sc_specific_dows:Bre,sc_specific_hours:Rre,sc_specific_minutes:Fre,sc_specific_months:Gre,sc_specific_seconds:Hre,sc_time:Vre,sc_to:Zre,sc_wizard:Xre,sch_all:Kre,sch_astroDay:qre,sch_astroNight:eoe,sch_astro_dawn:toe,sch_astro_dusk:soe,sch_astro_goldenHour:ioe,sch_astro_goldenHourEnd:roe,sch_astro_nadir:ooe,sch_astro_nauticalDawn:noe,sch_astro_nauticalDusk:aoe,sch_astro_night:Moe,sch_astro_nightEnd:coe,sch_astro_solarNoon:uoe,sch_astro_sunrise:loe,sch_astro_sunriseEnd:Noe,sch_astro_sunset:Loe,sch_astro_sunsetStart:goe,sch_at:joe,sch_desc_atTime:yoe,sch_desc_everyDay:Toe,sch_desc_everyHour:Doe,sch_desc_everyMinute:doe,sch_desc_everyMonth:hoe,sch_desc_everyNDay:zoe,sch_desc_everyNHours:woe,sch_desc_everyNMinutes:Ioe,sch_desc_everyNMonths:Coe,sch_desc_everyNWeeks:poe,sch_desc_everyNYears:Aoe,sch_desc_everyWeek:moe,sch_desc_everyYear:foe,sch_desc_intervalFromTo:Ooe,sch_desc_never:Eoe,sch_desc_onDate:_oe,sch_desc_onDates:xoe,sch_desc_onEveryDate:Soe,sch_desc_onMonth:koe,sch_desc_onMonths:voe,sch_desc_onWeekday:Yoe,sch_desc_onWeekdays:Qoe,sch_desc_onWeekends:boe,sch_desc_onWorkdays:Uoe,sch_desc_onceInPast:$oe,sch_desc_once_on:Poe,sch_desc_validFrom:Woe,sch_desc_validFromTo:Joe,sch_desc_validTo:Boe,sch_every:Roe,sch_exactTime:Foe,sch_from:Goe,sch_fromTo:Hoe,sch_intervalTime:Voe,sch_invert:Zoe,sch_no_one:Xoe,sch_on:Koe,sch_period:qoe,sch_periodDaily:ene,sch_periodDates:tne,sch_periodDay:sne,sch_periodEvery:ine,sch_periodEveryDay:rne,sch_periodEveryMonth:one,sch_periodEveryWeek:nne,sch_periodEveryYear:ane,sch_periodHours:Mne,sch_periodMinutes:cne,sch_periodMonth:une,sch_periodMonthly:lne,sch_periodOnce:Nne,sch_periodSpecificMonths:Lne,sch_periodWeek:gne,sch_periodWeekdays:jne,sch_periodWeekend:yne,sch_periodWeekly:Tne,sch_periodWorkdays:Dne,sch_periodYear:dne,sch_periodYearly:hne,sch_specificTime:zne,sch_time:wne,sch_to:Ine,sch_valid:Cne,sch_validFrom:pne,sch_validTo:Ane,sch_wholeDay:mne,sch_yearEveryMonth:fne},Ene="Дії",_ne="Додайте",xne="Скасувати",Sne="Категорії",kne="Перевірено",vne="Видалити",Yne="Закрити",Qne="Комерційний",bne="Налаштувати",Une="Підключено",$ne="Продовжити",Pne="Скопійовано",Wne="Створити",Jne="Урожай",Bne="Delete",Rne="Видалити",Fne="Відкинути",Gne="Відключено",Hne="Помилка",Vne="фільтр",Zne="П'ятниця",Xne="Широта",Kne="Вийти",qne="Довгота",eae="повідомлення",tae="понеділок",sae="Ім'я",iae="Об'єкти",rae="В порядку",oae="Продукт",nae="Перейменувати/Перемістити/Копіювати",aae="Повторіть",Mae="Замінити",cae="Корінь",uae="Субота",lae="зберегти",Nae="Вибране",Lae="держави",gae="неділя",jae="четвер",yae="Мітка часу",Tae="вівторок",Dae="оновлення",dae="Дійсний до",hae="Значення",zae="Версія",wae="Середа",Iae="Ширина",Cae="Так",pae="інший",Aae="Кожен може читати об'єкт",mae="Кожен може читати стан",fae="Кожен може написати об'єкт",Oae="Кожен може написати стан",Eae="Група може читати об'єкт",_ae="Група може читати стан",xae="Група може писати об'єкт",Sae="Група може писати стан",kae="Власник може читати об'єкт",vae="Власник може читати стан",Yae="Власник може написати об'єкт",Qae="Власник може написати стан",bae="кнопки",Uae="Змінено з",$ae="закрити",Pae="Створіть логічний стан",Wae="Створити канал",Jae="Створити пристрій",Bae="Створити номерний стан",Rae="Створити состояние",Fae="Створити рядковий стан",Gae="днів",Hae="О",Vae="пн",Zae="Sa",Xae="Нд",Kae="чт",qae="вт",eMe="ми",tMe="Експертний режим",sMe="НЕПРАВДА",iMe="Всі файли",rMe="Аудіо",oMe="Код/JSON",nMe="Зображення",aMe="текст",MMe="відео",cMe="Налаштування",uMe="без",lMe="функція",NMe="ID",LMe="Ім'я",gMe="Роль",jMe="Кімната",yMe="Тип",TMe="Недійсні налаштування",DMe="Остання зміна",dMe="локально",hMe="квіт",zMe="серп",wMe="груд",IMe="лютий",CMe="січня",pMe="лип",AMe="черв",mMe="травень",fMe="березень",OMe="Листопад",EMe="жовт",_Me="вер",xMe="квіт",SMe="серп",kMe="груд",vMe="лютий",YMe="січня",QMe="лип",bMe="черв",UMe="травень",$Me="березень",PMe="Листопад",WMe="жовт",JMe="вер",BMe="немає",RMe="Об'єкт змінено",FMe="Об'єкт востаннє змінено о",GMe="Налаштування з іншого адаптера %s",HMe="Код якості",VMe="повторити",ZMe="Щоб вибрати папку, просто клацніть папку, утримуючи клавішу «Shift».",XMe="Показати все",KMe="Стан змінено на",qMe="Об'єкт змінено з",ece="Мітка часу",tce="Визнано",sce="коментар",ice="Скопіюйте значення стану",rce="Утримуйте клавішу Cltr/⌘, щоб відкрити посилання",oce="Спеціальні налаштування",nce="Видалити об'єкт",ace="Редагувати об'єкт",Mce="Відредагуйте значення стану",cce="Термін дії закінчується через",uce="Від",lce="Востаннє змінено",Nce="якість",Lce="Позначка часу",gce="Користувач",jce="Значення",yce="ПРАВДА",Tce="Значення",Dce="Попередження: завдання CRON виконуватиметься щохвилини протягом зазначеного періоду!",dce="Попередження: завдання CRON виконуватиметься кожну секунду протягом зазначеного періоду!",hce="CRON",zce="Дата",wce="дати",Ice="День",Cce="День тижня",pce="кожен",Ace="кожні N днів",mce="кожен N-й день тижня",fce="кожні N днів тижня",Oce="кожні N годин",Ece="кожні N хвилин",_ce="кожні N місяців",xce="кожні N секунд",Sce="кожен день",kce="кожен день тижня",vce="кожен день тижня",Yce="щогодини",Qce="кожну хвилину",bce="щомісяця",Uce="кожна секунда",$ce="Від",Pce="години",Wce="Інтервал",Jce="Інтервал між",Bce="Недійсний CRON",Rce="хвилин",Fce="місяців",Gce="Один раз",Hce="Крапка",Vce="секунд",Zce="просто",Xce="Конкретний час",Kce="конкретні дати",qce="конкретний день (дні) тижня",eue="конкретний день тижня",tue="конкретні години",sue="конкретні хвилини",iue="конкретні місяці",rue="конкретні секунди",oue="час",nue="до",aue="майстер",Mue="все",cue="Астродень",uue="Астро ніч",lue="Світанок",Nue="Сутінки",Lue="Золота година",gue="Кінець золотої години",jue="Надір",yue="Морський світанок",Tue="Морські сутінки",Due="ніч",due="Кінець ночі",hue="Сонячний полудень",zue="Схід сонця",wue="Кінець сходу сонця",Iue="Захід сонця",Cue="Початок заходу сонця",pue="в",Aue="в %s",mue="кожен день",fue="щогодини",Oue="кожну хвилину",Eue="щомісяця",_ue="кожен %s день",xue="кожні %s годин",Sue="кожні %s хвилин",kue="кожні %s місяців",vue="кожні %s тижнів",Yue="кожні %s років",Que="щотижня",bue="щороку",Uue="від %s до %s",$ue="ніколи",Pue="на %s з %s",Wue="на %s і %s з",Jue="на кожну дату",Bue="%s",Rue="%s і %s",Fue="на %s",Gue="на %s і %s",Hue="на вихідних",Vue="в робочі дні",Zue="більше не виконуватиметься, оскільки запуск у минулому",Xue="на %s",Kue="від %s",que="Виконати від до",ele="до %s",tle="кожен",sle="Конкретний час",ile="від",rle="Від до",ole="Час інтервалу",nle="інвертувати",ale="немає",Mle="на",cle="Крапка",ule="Щодня",lle="дати",Nle="День",Lle="кожен",gle="Кожен день",jle="Щомісяця",yle="Щотижня",Tle="Щороку",Dle="години",dle="хвилин",hle="місяць",zle="Щомісяця",wle="Один раз",Ile="Конкретні місяці",Cle="тиждень",ple="будні",Ale="Вихідні",mle="Щотижня",fle="робочі дні",Ole="рік",Ele="щорічно",_le="Конкретний час",xle="час",Sle="до",kle="Дійсний",vle="від",Yle="до",Qle="Цілий день",ble="щомісяця",Ule={"ra_%s links from aliases":"%s посилань із псевдонімів","ra_%s object(s) processed":"Оброблено %s об’єктів","ra_%s was imported":"%s було імпортовано","ra_Accept license":"Прийняти ліцензію",ra_Actions:Ene,"ra_Add new child object to selected parent":"Додати новий дочірній об’єкт до вибраного батьківського","ra_Add objects tree from JSON file":"Додайте дерево об’єктів із файлу JSON","ra_Add row":"Додати рядок","ra_Advanced options":"Розширені опції","ra_All items are filtered out":"Усі елементи відфільтровано","ra_All objects":"Всі об'єкти",ra_Append:_ne,"ra_Append %s entries or replace existing?":"Додати %s записів чи замінити наявні?","ra_Append or replace?":"Додати чи замінити?","ra_Are you sure?":"Ти впевнений?","ra_Auto (no custom columns)":"Автоматично (без спеціальних стовпців)","ra_Back to %s":"Назад до %s","ra_Background image":"Фонове зображення",ra_Cancel:xne,"ra_Cannot add items with set filter":"Неможливо додати елементи зі встановленим фільтром","ra_Cannot decode license":"Неможливо розшифрувати ліцензію","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Неможливо визначити положення: системні налаштування порожні, а визначення GPS вимкнено в браузері",'ra_Cannot find "%s"':'Не вдається знайти "%s"','ra_Cannot read "%s"':'Неможливо прочитати "%s"',"ra_Cannot read licenses: %s":"Неможливо прочитати ліцензії: %s","ra_Cannot retrieve options, as instance is offline":"Неможливо отримати параметри, оскільки екземпляр офлайн","ra_Cannot update attribute, because not found in the object":"Неможливо оновити атрибут, оскільки його не знайдено в об’єкті","ra_Cannot upload":"Неможливо завантажити",ra_Categories:Sne,"ra_Chained certificate":"Прикутий сертифікат","ra_Change color theme":"Змінити кольорову тему","ra_Changed from":"Змінено з","ra_Channel → State":"Канал → Стан","ra_Check license":"Перевірити ліцензію",ra_Checked:kne,ra_Clear:vne,"ra_Clear filter":"Очистити фільтр","ra_Clear icon":"Очистити значок","ra_Click to see in full size":"Натисніть, щоб побачити в повному розмірі","ra_Click to show":"Натисніть, щоб показати","ra_Clone current row":"Клонувати поточний рядок",ra_Close:Yne,"ra_Collapse all nodes":"Згорнути всі вузли","ra_Collapse one step node":"Згорнути на один рівень",ra_Commercial:Qne,ra_Configure:bne,"ra_Configure visible columns":"Налаштувати видимі стовпці","ra_Confirm deletion of %s":"Підтвердити видалення %s",ra_Connected:Une,ra_Continue:$ne,ra_Copied:Pne,"ra_Copied %s":'Скопійовано "%s"',"ra_Copy content":"Скопіюйте вміст",ra_Create:Wne,"ra_Create alias":"Створити псевдонім","ra_Create folder":"Створити папку","ra_Create new folder in %s":"Створіть нову папку в %s",ra_Crop:Jne,"ra_Define CRON...":"Визначити CRON...","ra_Define functions":"Визначити функції","ra_Define rooms":"Визначте кімнати","ra_Define schedule":"Визначити розклад","ra_Define schedule...":"Визначити розклад...",ra_Del:Bne,ra_Delete:Rne,"ra_Delete current row":"Видалити поточний рядок","ra_Deselect all":"Скасувати вибір усіх","ra_Device → Channel → State":"Пристрій → Канал → Стан","ra_Disable/Enable translation":"Вимкнути/Увімкнути переклад",ra_Discard:Fne,ra_Disconnected:Gne,"ra_Do not ask for next 2 hours in this session":"Не запитуйте про наступні 2 години цього сеансу","ra_Do not export values of states":"Не експортуйте значення станів","ra_Do not use let's encrypt":"Не використовуйте let's encrypt","ra_Docker is not available":"Докер недоступний","ra_Docker is not installed or not running":"Docker не встановлено або не працює","ra_Double click to reset table layout":"Двічі клацніть, щоб скинути макет таблиці","ra_Drag 'n' drop some files here, or click to select files":"Перетягніть деякі файли сюди або натисніть, щоб вибрати файли","ra_Drop file here":"Перетягніть файл сюди","ra_Drop the files here...":"Перетягніть файл сюди...","ra_Duplicate name":"Повторюване ім'я","ra_Edit ACL":"Редагувати ACL","ra_Edit alias":"Редагувати псевдонім","ra_Edit custom config":"Редагувати спеціальну конфігурацію","ra_Edit full path":"Редагувати повний шлях","ra_Edit function":"функція редагування","ra_Edit object field":"Поле редагування об'єкта","ra_Edit role":"Редагувати роль","ra_Edit room":"Редагувати кімнату","ra_Edit value":"Редагувати значення","ra_Enter the code from that page here":"Введіть тут код з цієї сторінки",ra_Error:Hne,"ra_Expand all nodes":"Розгорнути всі вузли","ra_Expand one step node":"Розгорніть один рівень","ra_Expand/Collapse card":"Розгорнути/Згорнути картку","ra_Export configuration section":"Розділ конфігурації експорту","ra_Export data to %s file":"Експортувати дані у файл %s","ra_Failed to open JSON File":"Не вдалося відкрити файл JSON","ra_Fallback custom certificates":"Запасні спеціальні сертифікати","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл завеликий. Максимально дозволено %sk. Спробуйте використовувати SVG.",ra_Filter:Vne,"ra_Filter and Data Actions":"Фільтр і дії з даними","ra_Filter files":"Фільтр файлів","ra_Folder name":"Назва папки","ra_Folder → Channel → State":"Папка → Канал → Стан","ra_Folder → Device → Channel → State":"Папка → Пристрій → Канал → Стан","ra_Folder → State":"Папка → Стан","ra_Folders always first":"Папки завжди першими",ra_Friday:Zne,"ra_From file":"З файлу","ra_From text":"З тексту","ra_Get %s access":"Отримайте доступ %s","ra_Good luck":"Удачі","ra_Hide empty folders":"Приховати порожні папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Якщо в папці не буде створено файл, він зникне після закриття браузера","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Якщо кнопка вище не працює, ви можете авторизувати цю програму вручну, перейшовши за цим посиланням","ra_Import and add configuration section":"Розділ імпорту та додавання конфігурації","ra_Import and replace configuration section":"Розділ імпорту та заміни конфігурації","ra_Import data from %s file":"Імпортувати дані з файлу %s","ra_Import from %s":"Імпортувати з %s","ra_Instance %s is alive":"Примірник %s живий","ra_Instance %s is not alive":"Примірник %s не живий","ra_Instance is not alive":"Примірник не живий","ra_Invalid CRON":"Недійсний CRON","ra_Invalid JSON":"Недійсний JSON","ra_Invalid JSON file.":"Недійсний JSON-файл.","ra_Invalid JSON format. Expected an array.":"Недійсний формат JSON. Очікується масив.","ra_Invalid answer from server":"Недійсна відповідь від сервера","ra_Invalid parent folder!":"Недійсна батьківська папка!","ra_Invalid structure":"Недійсна структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Остання зміна",ra_Latitude:Xne,"ra_License %s":"Ліцензія %s","ra_License agreement":"Ліцензійна угода","ra_License does not exist":"Ліцензії не існує","ra_License expired on %s":"Термін дії ліцензії закінчився %s",'ra_License for other product "%s"':'Ліцензія на інший продукт "%s"',"ra_License is for version %s, but required version is %s.":"Ліцензія для версії %s, але потрібна версія %s.","ra_License must be converted":"Ліцензію необхідно конвертувати до новішої версії. Ви можете зробити це у своєму профілі на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Ліцензія не знайдена в менеджері ліцензій. Хочете оновити ліцензії з iobroker.net?","ra_Listen on all IPs":"Прослуховування на всіх IP","ra_Load configuration from file":"Завантажити конфігурацію з файлу",ra_Logout:Kne,ra_Longitude:qne,'ra_May not trigger "updateLicenses"':'Може не запускати "updateLicenses"',ra_Message:eae,ra_Monday:tae,"ra_Move down":"Рухатися вниз","ra_Move up":"Рухатися вгору",ra_Name:sae,"ra_No data found in file":"Немає даних у файлі","ra_No one license found in license manager":"У менеджері ліцензій не знайдено жодної ліцензії","ra_No response from admin":"Немає відповіді від адміністратора","ra_No response from the backend":"Немає відповіді від сервера",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Неексперти можуть створювати нові об’єкти лише в «0_userdata.0» або «alias.0».","ra_Not a number":"Не номер","ra_OAuth Client ID":"Ідентифікатор клієнта OAuth","ra_OAuth Client secret":"Секрет клієнта OAuth",ra_Objects:iae,ra_Ok:rae,"ra_On weekdays":"В будні дні","ra_Only following structures of objects are available:":"Доступні тільки такі структури об'єктів:","ra_Only selected":"Тільки обрані","ra_Owner group":"Група власників","ra_Owner user":"Користувач-власник","ra_Passwords are not equal!":"Паролі не бувають рівними!","ra_Place your files here or click here to open the browse dialog":"Розмістіть свої файли тут або натисніть тут, щоб відкрити діалогове вікно перегляду","ra_Please allow popups in your browser for this page!":"Будь ласка, дозвольте спливаючі вікна у вашому браузері для цієї сторінки!","ra_Please confirm":"Будь-ласка підтвердіть","ra_Please create license":"Будь ласка, створіть ліцензію","ra_Please enter the license":"Будь ласка, введіть ліцензію","ra_Please select file...":"Виберіть файл...","ra_Please select object ID...":"Виберіть ідентифікатор об'єкта...","ra_Port could be used by %s":"Порт може використовуватися %s","ra_Port is already used by %s":"Порт уже використовується %s","ra_Press ENTER Key to add new item":"Натисніть клавішу ENTER, щоб додати новий елемент","ra_Private certificate":"Приватний сертифікат",ra_Product:oae,"ra_Public certificate":"Публічний сертифікат","ra_Quality code":"якість","ra_Refresh tree":"Оновити дерево","ra_Reload files":"Перезавантажте файли",ra_Rename_Move_Copy:nae,"ra_Renew %s access":"Поновити доступ %s",ra_Repeat:aae,ra_Replace:Mae,"ra_Request timed out":"Час запиту вичерпано","ra_Restrict to folder":"Обмежити папкою",ra_Root:cae,ra_Saturday:uae,ra_Save:lae,"ra_Save and close":"Зберегти та закрити","ra_Save configuration to file":"Зберегти конфігурацію у файл","ra_Save objects tree as JSON file":"Зберегти дерево об’єктів як файл JSON","ra_Select all":"Вибрати все","ra_Select color":"Виберіть колір","ra_Select predefined icon":"Виберіть попередньо визначений значок","ra_Select type of export":"Виберіть тип експорту",ra_Selected:Nae,"ra_Selected %s object(s)":"Вибрані об’єкти %s","ra_Serial number (UUID)":"Серійний номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Серійний номер (UUID) "%s" у ліцензії призначений для іншого пристрою.',"ra_Session will expire in %s seconds. Continue?":"Сеанс закінчиться через %s секунд. Продовжити?","ra_Show all folders":"Показати всі папки","ra_Show lines between rows":"Показувати лінії між рядками","ra_Show/Hide object descriptions":"Показати/Сховати описи об’єктів","ra_Show/hide filter input":"Показати/сховати введення фільтра","ra_Some data are not stored. Discard?":"Деякі дані не зберігаються. Відкинути?",ra_States:Lae,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизацію успішно пройшло. Токен дійсний до %s та буде автоматично поновлено.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизацію успішно виконано. Токен дійсний до %s, але його термін дії може закінчитися, оскільки екземпляр не запущено.","ra_Suitable license not found in license manager":"Відповідна ліцензія не знайдена в менеджері ліцензій",ra_Sunday:gae,"ra_Suppress question for next %s minutes":"Приховати запитання на наступні %s хвилин","ra_System language":"Системна мова","ra_Take browser position":"Займіть позицію з браузера","ra_Take position from system settings":"Займіть позицію в налаштуваннях системи",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Експерти можуть створювати об’єкти всюди, крім другого рівня (наприклад, «vis.0» або «javascript.0»).","ra_The page you are looking for was not found":"Сторінка, яку ви шукаєте, не знайдена","ra_The schedule will be executed every minute. Are you sure?":"Розклад буде виконуватися щохвилини. Ви впевнені?","ra_The schedule will be executed every second. Are you sure?":"Розклад буде виконуватися щосекунди. Ви впевнені?",ra_Thursday:jae,ra_Timestamp:yae,"ra_Toggle expert mode":"Перемкнути експертний режим","ra_Toggle the states view":"Перемкнути перегляд штатів","ra_Toggle view mode":"Перемкнути режим перегляду","ra_Too big":"Занадто великий","ra_Too small":"Занадто малий","ra_Transparent dialog":"Прозорий діалог",ra_Tuesday:Tae,"ra_Unknown error":"Невідома помилка","ra_Unknown error!":"Невідома помилка!",ra_Update:Dae,"ra_Upload file":"Завантажити файл","ra_Use all available let's encrypt certificates":"Використовуйте всі доступні сертифікати let's encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Використовуйте адаптер iobroker.acme для сертифікатів letsencrypt","ra_Use system settings for position":"Використовуйте системні налаштування для позиції","ra_Used system settings":"Використані системні налаштування","ra_User files":"Файли користувача",ra_ValidTill:dae,ra_Value:hae,ra_Version:zae,"ra_View file":"Переглянути файл","ra_View: %s":"Перегляд: %s",ra_Wednesday:wae,ra_Width:Iae,"ra_YAML editor":"Редактор YAML",ra_Yes:Cae,"ra_You can export all objects or just the selected branch.":"Ви можете експортувати всі об’єкти або лише вибрану гілку.","ra_You can filter entries by entering here some text":"Ви можете фільтрувати записи, ввівши тут певний текст","ra_You can use * as wildcard":"Ви можете використовувати * як символ підстановки",ra___different__:pae,ra_aclEveryone_read_object:Aae,ra_aclEveryone_read_state:mae,ra_aclEveryone_write_object:fae,ra_aclEveryone_write_state:Oae,ra_aclGroup_read_object:Eae,ra_aclGroup_read_state:_ae,ra_aclGroup_write_object:xae,ra_aclGroup_write_state:Sae,ra_aclOwner_read_object:kae,ra_aclOwner_read_state:vae,ra_aclOwner_write_object:Yae,ra_aclOwner_write_state:Qae,ra_buttons:bae,ra_changedFrom:Uae,ra_close:$ae,ra_create_boolean_state:Pae,ra_create_channel:Wae,ra_create_device:Jae,ra_create_number_state:Bae,ra_create_state:Rae,ra_create_string_state:Fae,ra_daysShortText:Gae,ra_dow_Fr:Hae,ra_dow_Mo:Vae,ra_dow_Sa:Zae,ra_dow_Su:Xae,ra_dow_Th:Kae,ra_dow_Tu:qae,ra_dow_We:eMe,ra_expertMode:tMe,ra_false:sMe,ra_fileType_all:iMe,ra_fileType_audio:rMe,ra_fileType_code:oMe,ra_fileType_images:nMe,ra_fileType_txt:aMe,ra_fileType_video:MMe,"ra_fileType_video,":"відео",ra_filter_customs:cMe,ra_filter_customs_without:uMe,ra_filter_func:lMe,ra_filter_id:NMe,ra_filter_name:LMe,ra_filter_role:gMe,ra_filter_room:jMe,ra_filter_type:yMe,"ra_import data from %s file":"Імпортувати дані з файлу %s",ra_invalidConfig:TMe,ra_lastChange:DMe,ra_locally:dMe,ra_month_Apr:hMe,ra_month_Aug:zMe,ra_month_Dec:wMe,ra_month_Feb:IMe,ra_month_Jan:CMe,ra_month_Jul:pMe,ra_month_Jun:AMe,ra_month_Mai:mMe,ra_month_Mar:fMe,ra_month_Nov:OMe,ra_month_Oct:EMe,ra_month_Sep:_Me,ra_months_Apr:xMe,ra_months_Aug:SMe,ra_months_Dec:kMe,ra_months_Feb:vMe,ra_months_Jan:YMe,ra_months_Jul:QMe,ra_months_Jun:bMe,ra_months_Mai:UMe,ra_months_Mar:$Me,ra_months_Nov:PMe,ra_months_Oct:WMe,ra_months_Sep:JMe,"ra_no confirm for 5 mins":"без підтвердження протягом 5 хв",ra_none:BMe,ra_object_changed_by:RMe,ra_object_changed_by_user:FMe,ra_otherConfig:GMe,ra_qualityCode:HMe,ra_repeat:VMe,ra_select_folder_hint:ZMe,ra_show_all:XMe,ra_state_changed_by:KMe,ra_state_changed_from:qMe,ra_timestamp:ece,ra_tooltip_ack:tce,ra_tooltip_comment:sce,ra_tooltip_copyState:ice,ra_tooltip_ctrlForLink:rce,ra_tooltip_customConfig:oce,ra_tooltip_deleteObject:nce,ra_tooltip_editObject:ace,ra_tooltip_editState:Mce,ra_tooltip_expire:cce,ra_tooltip_from:uce,ra_tooltip_lc:lce,ra_tooltip_quality:Nce,ra_tooltip_ts:Lce,ra_tooltip_user:gce,ra_tooltip_value:jce,ra_true:yce,"ra_use seconds":"використовуйте секунди",ra_val:Tce,"ra_via internet":"через інтернет",ra_warning_every_minute:Dce,ra_warning_every_second:dce,sc_cron:hce,sc_date:zce,sc_dates:wce,sc_dow:Ice,sc_dows:Cce,sc_every:pce,sc_everyN_dates:Ace,sc_everyN_dow:mce,sc_everyN_dows:fce,sc_everyN_hours:Oce,sc_everyN_minutes:Ece,sc_everyN_months:_ce,sc_everyN_seconds:xce,sc_every_dates:Sce,sc_every_dow:kce,sc_every_dows:vce,sc_every_hours:Yce,sc_every_minutes:Qce,sc_every_months:bce,sc_every_seconds:Uce,sc_from:$ce,sc_hours:Pce,sc_interval:Wce,sc_intervalBetween:Jce,sc_invalid_cron:Bce,sc_minutes:Rce,sc_months:Fce,sc_once:Gce,sc_period:Hce,sc_seconds:Vce,sc_simple:Zce,sc_specific:Xce,sc_specific_dates:Kce,sc_specific_dow:qce,sc_specific_dows:eue,sc_specific_hours:tue,sc_specific_minutes:sue,sc_specific_months:iue,sc_specific_seconds:rue,sc_time:oue,sc_to:nue,sc_wizard:aue,sch_all:Mue,sch_astroDay:cue,sch_astroNight:uue,sch_astro_dawn:lue,sch_astro_dusk:Nue,sch_astro_goldenHour:Lue,sch_astro_goldenHourEnd:gue,sch_astro_nadir:jue,sch_astro_nauticalDawn:yue,sch_astro_nauticalDusk:Tue,sch_astro_night:Due,sch_astro_nightEnd:due,sch_astro_solarNoon:hue,sch_astro_sunrise:zue,sch_astro_sunriseEnd:wue,sch_astro_sunset:Iue,sch_astro_sunsetStart:Cue,sch_at:pue,sch_desc_atTime:Aue,sch_desc_everyDay:mue,sch_desc_everyHour:fue,sch_desc_everyMinute:Oue,sch_desc_everyMonth:Eue,sch_desc_everyNDay:_ue,sch_desc_everyNHours:xue,sch_desc_everyNMinutes:Sue,sch_desc_everyNMonths:kue,sch_desc_everyNWeeks:vue,sch_desc_everyNYears:Yue,sch_desc_everyWeek:Que,sch_desc_everyYear:bue,sch_desc_intervalFromTo:Uue,sch_desc_never:$ue,sch_desc_onDate:Pue,sch_desc_onDates:Wue,sch_desc_onEveryDate:Jue,sch_desc_onMonth:Bue,sch_desc_onMonths:Rue,sch_desc_onWeekday:Fue,sch_desc_onWeekdays:Gue,sch_desc_onWeekends:Hue,sch_desc_onWorkdays:Vue,sch_desc_onceInPast:Zue,sch_desc_once_on:Xue,sch_desc_validFrom:Kue,sch_desc_validFromTo:que,sch_desc_validTo:ele,sch_every:tle,sch_exactTime:sle,sch_from:ile,sch_fromTo:rle,sch_intervalTime:ole,sch_invert:nle,sch_no_one:ale,sch_on:Mle,sch_period:cle,sch_periodDaily:ule,sch_periodDates:lle,sch_periodDay:Nle,sch_periodEvery:Lle,sch_periodEveryDay:gle,sch_periodEveryMonth:jle,sch_periodEveryWeek:yle,sch_periodEveryYear:Tle,sch_periodHours:Dle,sch_periodMinutes:dle,sch_periodMonth:hle,sch_periodMonthly:zle,sch_periodOnce:wle,sch_periodSpecificMonths:Ile,sch_periodWeek:Cle,sch_periodWeekdays:ple,sch_periodWeekend:Ale,sch_periodWeekly:mle,sch_periodWorkdays:fle,sch_periodYear:Ole,sch_periodYearly:Ele,sch_specificTime:_le,sch_time:xle,sch_to:Sle,sch_valid:kle,sch_validFrom:vle,sch_validTo:Yle,sch_wholeDay:Qle,sch_yearEveryMonth:ble},$le="操作",Ple="附加",Wle="取消",Jle="类别",Ble="勾选",Rle="删除",Fle="关",Gle="商业的",Hle="配置",Vle="连接的",Zle="继续",Xle="复制的",Kle="创建",qle="庄稼",e0e="Delete",t0e="删除",s0e="丢弃",i0e="断开连接",r0e="错误",o0e="筛选",n0e="星期五",a0e="纬度",M0e="登出",c0e="经度",u0e="信息",l0e="周一",N0e="姓名",L0e="对象",g0e="好",j0e="产品",y0e="重命名/移动/复制",T0e="重复",D0e="代替",d0e="根",h0e="周六",z0e="保存",w0e="已选",I0e="状态",C0e="星期日",p0e="周四",A0e="时间戳记",m0e="周二",f0e="更新资料",O0e="有效期至",E0e="值",_0e="版本",x0e="周三",S0e="宽度",k0e="是的",v0e="不同的",Y0e="每个人都可以阅读对象",Q0e="每个人都可以阅读状态",b0e="每个人都可以写对象",U0e="每个人都可以写状态",$0e="组可以读取对象",P0e="群组可以读取状态",W0e="组可以写对象",J0e="组可以写状态",B0e="所有者可以读取对象",R0e="所有者可以读取状态",F0e="所有者可以写对象",G0e="所有者可以写状态",H0e="纽扣",V0e="更改为",Z0e="关闭",X0e="创建布尔状态",K0e="创建频道",q0e="创建设备",eNe="创建号码状态",tNe="创建状态",sNe="创建字符串状态",iNe="天",rNe="r",oNe="莫",nNe="萨",aNe="苏",MNe="Th",cNe="Tu",uNe="我们",lNe="专家模式",NNe="错误的",LNe="所有文件",gNe="声音的",jNe="代码/JSON",yNe="图片",TNe="文本",DNe="视频",dNe="设定值",hNe="没有",zNe="功能",wNe="ID",INe="名称",CNe="角色",pNe="房间",ANe="类型",mNe="无效的设定",fNe="最后一次变更",ONe="本地",ENe="4月",_Ne="八月",xNe="十二月",SNe="二月",kNe="简",vNe="七月",YNe="君",QNe="迈",bNe="三月",UNe="十一月",$Ne="十月",PNe="九月",WNe="4月",JNe="八月",BNe="十二月",RNe="二月",FNe="简",GNe="七月",HNe="君",VNe="迈",ZNe="三月",XNe="十一月",KNe="十月",qNe="九月",e4e="没有任何",t4e="物件变更者",s4e="对象上次更改时间为",i4e="来自其他适配器%s的设置",r4e="质量代码",o4e="重复",n4e="要选择文件夹,只需按住“shift”键单击文件夹即可。",a4e="显示全部",M4e="状态由",c4e="对象已从更改",u4e="时间戳记",l4e="致谢国旗",N4e="评论",L4e="复制状态值",g4e="按住 Cltr/⌘ 键打开链接",j4e="自定义设置",y4e="删除物件",T4e="编辑物件",D4e="编辑状态值",d4e="有效期:",h4e="从",z4e="最后改变了",w4e="质量",I4e="时间戳",C4e="用户",p4e="值",A4e="真的",m4e="值",f4e="警告:CRON 作业将在指定期间内每分钟运行一次!",O4e="警告:CRON 作业将在指定期间内每秒运行一次!",E4e="周期任务",_4e="日期",x4e="日",S4e="天",k4e="星期",v4e="每",Y4e="每N天",Q4e="每周的第 N 天",b4e="每周N天",U4e="每N小时一次",$4e="每N分钟",P4e="每N个月",W4e="每N秒",J4e="每天",B4e="一周的每一天",R4e="一周的每一天",F4e="每小时",G4e="每分钟",H4e="每月",V4e="每秒",Z4e="从",X4e="小时",K4e="间隔",q4e="间隔时间",eLe="无效的 CRON",tLe="分钟",sLe="月",iLe="一次",rLe="周期",oLe="秒",nLe="简单模式",aLe="特定的时间",MLe="特定的日子",cLe="一周中的特定日子",uLe="特定的一周",lLe="特定的小时",NLe="特定的分钟",LLe="特定的月份",gLe="特定的描述",jLe="时间",yLe="至",TLe="向导模式",DLe="全选",dLe="天文白天",hLe="天文夜晚",zLe="黎明",wLe="黄昏",ILe="黄金时段",CLe="黄金时段结束",pLe="天底",ALe="航海黎明",mLe="航海黄昏",fLe="夜晚",OLe="夜晚结束",ELe="正午",_Le="日出",xLe="日出结束",SLe="日落",kLe="日落开始",vLe="在",YLe="的%s",QLe="每天",bLe="每小时",ULe="每分钟",$Le="每月",PLe="每%s天",WLe="每%s小时",JLe="每%s分钟",BLe="每%s月",RLe="每%s周",FLe="每%s年",GLe="每周",HLe="每年",VLe="从%s到%s",ZLe="决不",XLe="在%s的%s上",KLe="在%s和%s上",qLe="在每天",ege="%s",tge="%s和%s",sge="在%s上",ige="在%s和%s上",rge="在周末",oge="在工作日",nge="将不再执行,因为起始时间已经是过去的时间了。",age="在%s上",Mge="来自%s",cge="从执行到",uge="到%s",lge="每",Nge="特定的时间",Lge="从",gge="从到",jge="间隔时间",yge="倒置",Tge="取消全选",Dge="的",dge="周期",hge="每天",zge="日期",wge="天",Ige="每",Cge="每天",pge="每月",Age="每周",mge="每年",fge="小时",Oge="分钟",Ege="月",_ge="每月一次",xge="一次",Sge="特定的月份",kge="周",vge="工作日",Yge="周末",Qge="每周",bge="工作日",Uge="年",$ge="每年",Pge="特定的时间",Wge="时间",Jge="至",Bge="生效",Rge="从",Fge="至",Gge="一整天",Hge="每月",Vge={"ra_%s links from aliases":"来自别名的 %s 个链接","ra_%s object(s) processed":"已处理%s个对象","ra_%s was imported":"对象已导入","ra_Accept license":"接受许可",ra_Actions:$le,"ra_Add new child object to selected parent":"将新的子对象添加到选定的父对象","ra_Add objects tree from JSON file":"从JSON文件添加对象树","ra_Add row":"添加行","ra_Advanced options":"高级选项","ra_All items are filtered out":"所有项目都被过滤掉","ra_All objects":"所有对象",ra_Append:Ple,"ra_Append %s entries or replace existing?":"追加 %s 条目还是替换现有条目?","ra_Append or replace?":"追加还是替换?","ra_Are you sure?":"你确定吗?","ra_Auto (no custom columns)":"自动(无自定义列)","ra_Back to %s":"返回“%s”","ra_Background image":"背景图像",ra_Cancel:Wle,"ra_Cannot add items with set filter":"无法使用设置过滤器添加项目","ra_Cannot decode license":"无法解码许可证","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"无法确定位置:系统设置为空且浏览器中禁用了 GPS 检测",'ra_Cannot find "%s"':"找不到“%s”",'ra_Cannot read "%s"':"无法阅读“%s”","ra_Cannot read licenses: %s":"无法读取许可证:%s","ra_Cannot retrieve options, as instance is offline":"无法检索选项,因为实例处于脱机状态","ra_Cannot update attribute, because not found in the object":"无法更新属性,因为在对象中找不到","ra_Cannot upload":"无法上传",ra_Categories:Jle,"ra_Chained certificate":"链式证书","ra_Change color theme":"更改颜色主题","ra_Changed from":"更改为","ra_Channel → State":"频道→状态","ra_Check license":"检查许可证",ra_Checked:Ble,ra_Clear:Rle,"ra_Clear filter":"清除筛选","ra_Clear icon":"清除图标","ra_Click to see in full size":"点击查看完整尺寸","ra_Click to show":"点击显示","ra_Clone current row":"克隆当前行",ra_Close:Fle,"ra_Collapse all nodes":"收合所有节点","ra_Collapse one step node":"折叠一级",ra_Commercial:Gle,ra_Configure:Hle,"ra_Configure visible columns":"配置可见列","ra_Confirm deletion of %s":"确认删除%s",ra_Connected:Vle,ra_Continue:Zle,ra_Copied:Xle,"ra_Copied %s":'复制的"%s"',"ra_Copy content":"复制内容",ra_Create:Kle,"ra_Create alias":"创建别名","ra_Create folder":"创建文件夹","ra_Create new folder in %s":"在%s中创建新文件夹",ra_Crop:qle,"ra_Define CRON...":"定义 CRON...","ra_Define functions":"定义功能","ra_Define rooms":"定义房间","ra_Define schedule":"定义时间表","ra_Define schedule...":"定义时间表...",ra_Del:e0e,ra_Delete:t0e,"ra_Delete current row":"删除当前行","ra_Deselect all":"全部取消选择","ra_Device → Channel → State":"设备→频道→状态","ra_Disable/Enable translation":"禁用/启用翻译",ra_Discard:s0e,ra_Disconnected:i0e,"ra_Do not ask for next 2 hours in this session":"本次会话中不要询问接下来的 2 个小时","ra_Do not export values of states":"不导出状态值","ra_Do not use let's encrypt":"不要使用让我们加密","ra_Docker is not available":"Docker 不可用","ra_Docker is not installed or not running":"Docker 未安装或未运行","ra_Double click to reset table layout":"双击重置表格布局","ra_Drag 'n' drop some files here, or click to select files":"将一些文件拖放到此处,或单击以选择文件","ra_Drop file here":"将档案放在这里","ra_Drop the files here...":"把文件放在这里...","ra_Duplicate name":"名称重复","ra_Edit ACL":"编辑访问控制列表","ra_Edit alias":"编辑别名","ra_Edit custom config":"编辑自定义配置","ra_Edit full path":"编辑完整路径","ra_Edit function":"编辑功能","ra_Edit object field":"编辑对象字段","ra_Edit role":"编辑角色","ra_Edit room":"编辑室","ra_Edit value":"编辑值","ra_Enter the code from that page here":"在此处输入该页面的代码",ra_Error:r0e,"ra_Expand all nodes":"展开所有节点","ra_Expand one step node":"扩大一级","ra_Expand/Collapse card":"展开/折叠卡","ra_Export configuration section":"导出配置部分","ra_Export data to %s file":"将数据导出到 %s 文件","ra_Failed to open JSON File":"无法打开JSON文件","ra_Fallback custom certificates":"后备自定义证书","ra_File is too big. Max %sk allowed. Try use SVG.":"文件太大。允许的最大字节%s数。尝试使用 SVG。",ra_Filter:o0e,"ra_Filter and Data Actions":"过滤和数据操作","ra_Filter files":"过滤文件","ra_Folder name":"文件夹名称","ra_Folder → Channel → State":"文件夹→频道→状态","ra_Folder → Device → Channel → State":"文件夹→设备→频道→状态","ra_Folder → State":"文件夹→状态","ra_Folders always first":"资料夹永远优先",ra_Friday:n0e,"ra_From file":"从文件","ra_From text":"文本","ra_Get %s access":"获取 %s 访问权限","ra_Good luck":"祝你好运","ra_Hide empty folders":"隐藏空文件夹","ra_If no file will be created in the folder, it will disappear after the browser closed":"如果在该文件夹中未创建任何文件,则该文件将在浏览器关闭后消失","ra_If the button above does not work, you can authorize manually this app by visiting this url":"如果上面的按钮不起作用,您可以通过访问此网址手动授权此应用","ra_Import and add configuration section":"导入并添加配置部分","ra_Import and replace configuration section":"导入和替换配置部分","ra_Import data from %s file":"从 %s 文件导入数据","ra_Import from %s":"从 %s 导入","ra_Instance %s is alive":"实例 %s 是活动的","ra_Instance %s is not alive":"实例 %s 不存在","ra_Instance is not alive":"实例不存在","ra_Invalid CRON":"无效的 CRON","ra_Invalid JSON":"JSON 无效","ra_Invalid JSON file.":"无效的JSON文件。","ra_Invalid JSON format. Expected an array.":"JSON格式无效。应为数组。","ra_Invalid answer from server":"来自服务器的无效答案","ra_Invalid parent folder!":"父文件夹无效!","ra_Invalid structure":"结构无效","ra_JSON editor":"JSON 编辑器","ra_Last change":"最后一次变更",ra_Latitude:a0e,"ra_License %s":"许可证 %s","ra_License agreement":"许可协议","ra_License does not exist":"许可证不存在","ra_License expired on %s":"许可证已于 %s 过期",'ra_License for other product "%s"':"其他产品“%s”的许可证","ra_License is for version %s, but required version is %s.":"许可证适用于版本 %s,但所需版本为 %s。","ra_License must be converted":"许可证必须转换为更新版本。您可以在 iobroker.net 个人资料中执行此操作。","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"在许可证管理器中找不到许可证。您要从 iobroker.net 更新许可证吗?","ra_Listen on all IPs":"监听所有IP","ra_Load configuration from file":"从文件加载配置",ra_Logout:M0e,ra_Longitude:c0e,'ra_May not trigger "updateLicenses"':"可能不会触发“updateLicenses”",ra_Message:u0e,ra_Monday:l0e,"ra_Move down":"下移","ra_Move up":"提升",ra_Name:N0e,"ra_No data found in file":"文件中未找到数据","ra_No one license found in license manager":"许可证管理器中未找到任何许可证","ra_No response from admin":"管理员没有回应","ra_No response from the backend":"后端无响应",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"非专家只能在“ 0_userdata.0”或“ alias.0”中创建新对象。","ra_Not a number":"不是数字","ra_OAuth Client ID":"OAuth客户端ID","ra_OAuth Client secret":"OAuth 客户端密钥",ra_Objects:L0e,ra_Ok:g0e,"ra_On weekdays":"在工作日","ra_Only following structures of objects are available:":"仅以下对象结构可用:","ra_Only selected":"只选择","ra_Owner group":"所有者组","ra_Owner user":"所有者用户","ra_Passwords are not equal!":"密码不相等!","ra_Place your files here or click here to open the browse dialog":"将文件放在此处或单击此处打开浏览对话框","ra_Please allow popups in your browser for this page!":"请允许浏览器弹出此页面!","ra_Please confirm":"请确认","ra_Please create license":"请创建许可证","ra_Please enter the license":"请输入许可证","ra_Please select file...":"请选择文件...","ra_Please select object ID...":"请选择对象ID ...","ra_Port could be used by %s":"%s 可以使用端口","ra_Port is already used by %s":"端口已被 %s 使用","ra_Press ENTER Key to add new item":"按 ENTER 键添加新项目","ra_Private certificate":"私有证书",ra_Product:j0e,"ra_Public certificate":"公共证书","ra_Quality code":"质量代码","ra_Refresh tree":"刷新树","ra_Reload files":"重新载入文件",ra_Rename_Move_Copy:y0e,"ra_Renew %s access":"续订 %s 访问权限",ra_Repeat:T0e,ra_Replace:D0e,"ra_Request timed out":"请求超时","ra_Restrict to folder":"限制到文件夹",ra_Root:d0e,ra_Saturday:h0e,ra_Save:z0e,"ra_Save and close":"保存并关闭","ra_Save configuration to file":"将配置保存到文件","ra_Save objects tree as JSON file":"将对象树另存为JSON文件","ra_Select all":"全选","ra_Select color":"选择颜色","ra_Select predefined icon":"选择预定义图标","ra_Select type of export":"选择导出类型",ra_Selected:w0e,"ra_Selected %s object(s)":"选定的 %s 个对象","ra_Serial number (UUID)":"序列号 (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"许可证中的序列号 (UUID)“%s”用于其他设备。","ra_Session will expire in %s seconds. Continue?":"会话将在 %s 秒后过期。是否继续?","ra_Show all folders":"显示所有文件夹","ra_Show lines between rows":"显示行之间的线","ra_Show/Hide object descriptions":"显示/隐藏对象描述","ra_Show/hide filter input":"显示/隐藏过滤器输入","ra_Some data are not stored. Discard?":"部分数据未存储。丢弃?",ra_States:I0e,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"授权成功。令牌有效期至 %s,并将自动续订。","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"授权成功。令牌有效期至 %s,但由于实例未运行,令牌可能会过期。","ra_Suitable license not found in license manager":"在许可证管理器中找不到合适的许可证",ra_Sunday:C0e,"ra_Suppress question for next %s minutes":"在接下来的%s分钟内取消提问","ra_System language":"系统语言","ra_Take browser position":"从浏览器获取位置","ra_Take position from system settings":"从系统设置中获取位置",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"专家可以在任何地方创建对象,但要从第二层开始(例如“ vis.0”或“ javascript.0”)。","ra_The page you are looking for was not found":"未找到您要查找的页面","ra_The schedule will be executed every minute. Are you sure?":"该计划将每分钟执行一次。您确定吗?","ra_The schedule will be executed every second. Are you sure?":"该计划将每秒执行一次。你确定吗?",ra_Thursday:p0e,ra_Timestamp:A0e,"ra_Toggle expert mode":"切换专家模式","ra_Toggle the states view":"切换状态视图","ra_Toggle view mode":"切换检视模式","ra_Too big":"太大","ra_Too small":"太小","ra_Transparent dialog":"透明对话框",ra_Tuesday:m0e,"ra_Unknown error":"未知错误","ra_Unknown error!":"未知错误!",ra_Update:f0e,"ra_Upload file":"上传文件","ra_Use all available let's encrypt certificates":"使用所有可用的让我们加密证书","ra_Use iobroker.acme adapter for letsencrypt certificates":"使用 iobroker.acme 适配器获取 letsencrypt 证书","ra_Use system settings for position":"使用系统设置定位","ra_Used system settings":"使用的系统设置","ra_User files":"用户档案",ra_ValidTill:O0e,ra_Value:E0e,ra_Version:_0e,"ra_View file":"查看文件","ra_View: %s":"查看:%s",ra_Wednesday:x0e,ra_Width:S0e,"ra_YAML editor":"YAML 编辑器",ra_Yes:k0e,"ra_You can export all objects or just the selected branch.":"您可以导出所有对象或仅导出选定的分支。","ra_You can filter entries by entering here some text":"您可以通过在此处输入一些文本来过滤条目","ra_You can use * as wildcard":"您可以使用 * 作为通配符",ra___different__:v0e,ra_aclEveryone_read_object:Y0e,ra_aclEveryone_read_state:Q0e,ra_aclEveryone_write_object:b0e,ra_aclEveryone_write_state:U0e,ra_aclGroup_read_object:$0e,ra_aclGroup_read_state:P0e,ra_aclGroup_write_object:W0e,ra_aclGroup_write_state:J0e,ra_aclOwner_read_object:B0e,ra_aclOwner_read_state:R0e,ra_aclOwner_write_object:F0e,ra_aclOwner_write_state:G0e,ra_buttons:H0e,ra_changedFrom:V0e,ra_close:Z0e,ra_create_boolean_state:X0e,ra_create_channel:K0e,ra_create_device:q0e,ra_create_number_state:eNe,ra_create_state:tNe,ra_create_string_state:sNe,ra_daysShortText:iNe,ra_dow_Fr:rNe,ra_dow_Mo:oNe,ra_dow_Sa:nNe,ra_dow_Su:aNe,ra_dow_Th:MNe,ra_dow_Tu:cNe,ra_dow_We:uNe,ra_expertMode:lNe,ra_false:NNe,ra_fileType_all:LNe,ra_fileType_audio:gNe,ra_fileType_code:jNe,ra_fileType_images:yNe,ra_fileType_txt:TNe,ra_fileType_video:DNe,"ra_fileType_video,":"视频",ra_filter_customs:dNe,ra_filter_customs_without:hNe,ra_filter_func:zNe,ra_filter_id:wNe,ra_filter_name:INe,ra_filter_role:CNe,ra_filter_room:pNe,ra_filter_type:ANe,"ra_import data from %s file":"从 %s 文件导入数据",ra_invalidConfig:mNe,ra_lastChange:fNe,ra_locally:ONe,ra_month_Apr:ENe,ra_month_Aug:_Ne,ra_month_Dec:xNe,ra_month_Feb:SNe,ra_month_Jan:kNe,ra_month_Jul:vNe,ra_month_Jun:YNe,ra_month_Mai:QNe,ra_month_Mar:bNe,ra_month_Nov:UNe,ra_month_Oct:$Ne,ra_month_Sep:PNe,ra_months_Apr:WNe,ra_months_Aug:JNe,ra_months_Dec:BNe,ra_months_Feb:RNe,ra_months_Jan:FNe,ra_months_Jul:GNe,ra_months_Jun:HNe,ra_months_Mai:VNe,ra_months_Mar:ZNe,ra_months_Nov:XNe,ra_months_Oct:KNe,ra_months_Sep:qNe,"ra_no confirm for 5 mins":"5分钟内无需确认",ra_none:e4e,ra_object_changed_by:t4e,ra_object_changed_by_user:s4e,ra_otherConfig:i4e,ra_qualityCode:r4e,ra_repeat:o4e,ra_select_folder_hint:n4e,ra_show_all:a4e,ra_state_changed_by:M4e,ra_state_changed_from:c4e,ra_timestamp:u4e,ra_tooltip_ack:l4e,ra_tooltip_comment:N4e,ra_tooltip_copyState:L4e,ra_tooltip_ctrlForLink:g4e,ra_tooltip_customConfig:j4e,ra_tooltip_deleteObject:y4e,ra_tooltip_editObject:T4e,ra_tooltip_editState:D4e,ra_tooltip_expire:d4e,ra_tooltip_from:h4e,ra_tooltip_lc:z4e,ra_tooltip_quality:w4e,ra_tooltip_ts:I4e,ra_tooltip_user:C4e,ra_tooltip_value:p4e,ra_true:A4e,"ra_use seconds":"用秒",ra_val:m4e,"ra_via internet":"通过互联网",ra_warning_every_minute:f4e,ra_warning_every_second:O4e,sc_cron:E4e,sc_date:_4e,sc_dates:x4e,sc_dow:S4e,sc_dows:k4e,sc_every:v4e,sc_everyN_dates:Y4e,sc_everyN_dow:Q4e,sc_everyN_dows:b4e,sc_everyN_hours:U4e,sc_everyN_minutes:$4e,sc_everyN_months:P4e,sc_everyN_seconds:W4e,sc_every_dates:J4e,sc_every_dow:B4e,sc_every_dows:R4e,sc_every_hours:F4e,sc_every_minutes:G4e,sc_every_months:H4e,sc_every_seconds:V4e,sc_from:Z4e,sc_hours:X4e,sc_interval:K4e,sc_intervalBetween:q4e,sc_invalid_cron:eLe,sc_minutes:tLe,sc_months:sLe,sc_once:iLe,sc_period:rLe,sc_seconds:oLe,sc_simple:nLe,sc_specific:aLe,sc_specific_dates:MLe,sc_specific_dow:cLe,sc_specific_dows:uLe,sc_specific_hours:lLe,sc_specific_minutes:NLe,sc_specific_months:LLe,sc_specific_seconds:gLe,sc_time:jLe,sc_to:yLe,sc_wizard:TLe,sch_all:DLe,sch_astroDay:dLe,sch_astroNight:hLe,sch_astro_dawn:zLe,sch_astro_dusk:wLe,sch_astro_goldenHour:ILe,sch_astro_goldenHourEnd:CLe,sch_astro_nadir:pLe,sch_astro_nauticalDawn:ALe,sch_astro_nauticalDusk:mLe,sch_astro_night:fLe,sch_astro_nightEnd:OLe,sch_astro_solarNoon:ELe,sch_astro_sunrise:_Le,sch_astro_sunriseEnd:xLe,sch_astro_sunset:SLe,sch_astro_sunsetStart:kLe,sch_at:vLe,sch_desc_atTime:YLe,sch_desc_everyDay:QLe,sch_desc_everyHour:bLe,sch_desc_everyMinute:ULe,sch_desc_everyMonth:$Le,sch_desc_everyNDay:PLe,sch_desc_everyNHours:WLe,sch_desc_everyNMinutes:JLe,sch_desc_everyNMonths:BLe,sch_desc_everyNWeeks:RLe,sch_desc_everyNYears:FLe,sch_desc_everyWeek:GLe,sch_desc_everyYear:HLe,sch_desc_intervalFromTo:VLe,sch_desc_never:ZLe,sch_desc_onDate:XLe,sch_desc_onDates:KLe,sch_desc_onEveryDate:qLe,sch_desc_onMonth:ege,sch_desc_onMonths:tge,sch_desc_onWeekday:sge,sch_desc_onWeekdays:ige,sch_desc_onWeekends:rge,sch_desc_onWorkdays:oge,sch_desc_onceInPast:nge,sch_desc_once_on:age,sch_desc_validFrom:Mge,sch_desc_validFromTo:cge,sch_desc_validTo:uge,sch_every:lge,sch_exactTime:Nge,sch_from:Lge,sch_fromTo:gge,sch_intervalTime:jge,sch_invert:yge,sch_no_one:Tge,sch_on:Dge,sch_period:dge,sch_periodDaily:hge,sch_periodDates:zge,sch_periodDay:wge,sch_periodEvery:Ige,sch_periodEveryDay:Cge,sch_periodEveryMonth:pge,sch_periodEveryWeek:Age,sch_periodEveryYear:mge,sch_periodHours:fge,sch_periodMinutes:Oge,sch_periodMonth:Ege,sch_periodMonthly:_ge,sch_periodOnce:xge,sch_periodSpecificMonths:Sge,sch_periodWeek:kge,sch_periodWeekdays:vge,sch_periodWeekend:Yge,sch_periodWeekly:Qge,sch_periodWorkdays:bge,sch_periodYear:Uge,sch_periodYearly:$ge,sch_specificTime:Pge,sch_time:Wge,sch_to:Jge,sch_valid:Bge,sch_validFrom:Rge,sch_validTo:Fge,sch_wholeDay:Gge,sch_yearEveryMonth:Hge},Zge={en:sp,de:LO,ru:I5,pt:Sb,nl:J7,fr:qB,it:cZ,es:dte,pl:One,uk:Ule,"zh-cn":Vge},Xge=` @@ -623,7 +623,7 @@ body { V416z M464,400h-72v-80h72V400z`})))}function bve(s){return a.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M258.5 185.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H258.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}))}function qSe(s){return a.createElement("svg",{viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M228.5 205.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H228.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M232.826 280.905c-.339 3.356-18.813-.782-20.919-1.06l-45.073-5.94-45.074-5.94-14.507-1.912c-1.456-.192-6.201-.055-6.412-2.147-.621-6.157 0-12.699 0-18.878v-43.5-82.076-5.13c0-2.551 5.184-1.015 6.412-.853l35.438 4.67 83.723 11.035c1.457.192 6.201.055 6.412 2.147.169 1.673 0 3.451 0 5.13v144.454c0 6.448 10 6.448 10 0V136.451v-5.13c0-7.619-6.137-10.793-12.673-11.655l-28.531-3.76-88.411-11.652-9.897-1.304c-6.555-.864-12.473 4.9-12.473 11.38v144.832c0 2.023-.071 4.04.132 6.053.717 7.111 6.606 9.563 12.759 10.374l76.827 10.125 39.896 5.259 9.697 1.278c7.063.931 12.011-4.778 12.673-11.346.648-6.415-9.358-6.352-9.999 0z",fill:"currentColor"}))}function KL(s){return a.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9zM265.732 265.178c.584 2.887-1.629 5.228-4.942 5.228H103.457c-3.313 0-6.474-2.341-7.058-5.228L75.24 130.633c-.584-2.887 1.628-5.228 4.942-5.228h157.333c3.313 0 6.474 2.34 7.058 5.228l21.159 134.545z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M247.194 199.667h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5h-6.639c-2.726 0-5 2.274-5 5s2.275 5 5 5z",fill:"currentColor"}))}const e5e={"type-Device type":"Device type","type-airCondition":"Air conditioner","type-blind":"Blinds","type-blindButtons":"Blind controlled by buttons","type-button":"Button","type-buttonSensor":"Button with feedback","type-camera":"Camera","type-chart":"Chart","type-cie":"CIE color light","type-ct":"Color temperature","type-dimmer":"Dimmer","type-door":"Door","type-fireAlarm":"Fire alarm","type-floodAlarm":"Flood alarm","type-gate":"Gate","type-hue":"HUE light","type-humidity":"Humidity","type-illuminance":"Illuminance","type-image":"Image","type-info":"Information","type-instance":"Instance","type-light":"Light","type-location":"Position","type-locationOne":"Position as one state","type-lock":"Lock","type-media":"Media-player","type-motion":"Motion sensor","type-percentage":"Percentage","type-rgb":"RGB light","type-rgbSingle":"R,G,B light - single states","type-rgbwSingle":"R,G,B,W light - single states","type-slider":"Slider","type-socket":"Socket","type-temperature":"Temperature","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Vacuum cleaner","type-valve":"Valve","type-volume":"Volume","type-volumeGroup":"Volume group","type-warning":"Warning","type-weatherCurrent":"Current weather","type-weatherForecast":"Weather forecast","type-window":"Window sensor","type-windowTilt":"Window tilt sensor"},t5e={"type-Device type":"Gerätetyp","type-airCondition":"Klimaanlage","type-blind":"Jalousien","type-blindButtons":"Jalousie über Tasten gesteuert","type-button":"Taste","type-buttonSensor":"Taste mit Rückmeldung","type-camera":"Kamera","type-chart":"Diagramm","type-cie":"CIE Farblicht","type-ct":"Farbtemperatur","type-dimmer":"Dimmer","type-door":"Türsensor","type-fireAlarm":"Feueralarm","type-floodAlarm":"Wasseralarm","type-gate":"Tor-Steuerung","type-hue":"HUE-Licht","type-humidity":"Feuchtigkeit","type-illuminance":"Beleuchtungsstärke","type-image":"Bild","type-info":"Information","type-instance":"Instanz","type-light":"Licht","type-location":"Position","type-locationOne":"Position als ein Zustand","type-lock":"Schloss","type-media":"Mediaplayer","type-motion":"Bewegungssensor","type-percentage":"Prozentsatz","type-rgb":"RGB-Licht","type-rgbSingle":"R,G,B-Licht Einzelwerte","type-rgbwSingle":"R,G,B,W-Licht Einzelwerte","type-slider":"Schieberegler","type-socket":"Steckdose","type-temperature":"Temperatur","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Staubsauger","type-valve":"Ventil","type-volume":"Lautstärke","type-volumeGroup":"Lautstärke-Gruppe","type-warning":"Warnung","type-weatherCurrent":"Aktuelle Wetterlage","type-weatherForecast":"Wettervorhersage","type-window":"Fenstersensor","type-windowTilt":"Fensterkippung-Sensor"},s5e={"type-Device type":"Тип устройства","type-airCondition":"Кондиционер","type-blind":"Рольставни/Жалюзи","type-blindButtons":"Жалюзи управляющиеся кнопками","type-button":"Кнопка","type-buttonSensor":"Кнопка с обратной связью","type-camera":"Камера","type-chart":"Диаграмма","type-cie":"CIE свет","type-ct":"Цветовая температура","type-dimmer":"Диммер","type-door":"Датчик положения двери","type-fireAlarm":"Датчик дыма","type-floodAlarm":"Датчик затопления","type-gate":"Ворота","type-hue":"HUE свет","type-humidity":"Влажность","type-illuminance":"Освещенность","type-image":"Изображение","type-info":"Информация","type-instance":"Инстанция","type-light":"Свет","type-location":"Местоположение","type-locationOne":"Позиция в одном состоянии","type-lock":"Замок","type-media":"Медиа-плейер","type-motion":"Датчик движения","type-percentage":"Проценты","type-rgb":"RGB свет","type-rgbSingle":"R,G,B как отдельные значение","type-rgbwSingle":"R,G,B,W как отдельные значение","type-slider":"Ползунок","type-socket":"Розетка","type-temperature":"Температура","type-thermostat":"Термостат","type-url":"URL","type-vacuumCleaner":"Пылесос","type-valve":"Вентиль","type-volume":"Громкость","type-volumeGroup":"Группа громкости","type-warning":"Предупреждение","type-weatherCurrent":"Актуальная погода","type-weatherForecast":"Прогноз погоды","type-window":"Датчик открытия окна","type-windowTilt":"Датчик наклона окна"},i5e={"type-Device type":"Tipo de dispositivo","type-airCondition":"Ar condicionado","type-blind":"persianas","type-blindButtons":"Persiana controlada por botões","type-button":"botão","type-buttonSensor":"Sensor de botão","type-camera":"câmera","type-chart":"Gráfico","type-cie":"Luz colorida CIE","type-ct":"Temperatura de cor","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"alarme de incêndio","type-floodAlarm":"alarme de inundação","type-gate":"portão","type-hue":"Luz HUE","type-humidity":"umidade","type-illuminance":"Iluminância","type-image":"imagem","type-info":"informação","type-instance":"exemplo","type-light":"luz","type-location":"localização","type-locationOne":"Posição como um estado","type-lock":"trancar","type-media":"mídia","type-motion":"movimento","type-percentage":"Percentagem","type-rgb":"Luz RGB","type-rgbSingle":"Luz RGB única","type-rgbwSingle":"RGBW como valor único","type-slider":"controle deslizante","type-socket":"soquete","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirador de pó","type-valve":"válvula","type-volume":"volume","type-volumeGroup":"grupo de volume","type-warning":"aviso","type-weatherCurrent":"clima atual","type-weatherForecast":"previsão do tempo","type-window":"janela","type-windowTilt":"inclinação da janela"},r5e={"type-Device type":"Typ urządzenia","type-airCondition":"Klimatyzator","type-blind":"żaluzje","type-blindButtons":"Roleta sterowana przyciskami","type-button":"przycisk","type-buttonSensor":"Czujnik przycisku","type-camera":"kamera","type-chart":"Wykres","type-cie":"Światło kolorowe CIE","type-ct":"Temperatura barwowa","type-dimmer":"opornik","type-door":"drzwi","type-fireAlarm":"alarm pożarowy","type-floodAlarm":"alarm przeciwpowodziowy","type-gate":"brama","type-hue":"Światło HUE","type-humidity":"wilgotność","type-illuminance":"Natężenie oświetlenia","type-image":"obraz","type-info":"Informacje","type-instance":"przykład","type-light":"światło","type-location":"lokalizacja","type-locationOne":"Pozycja jako państwa","type-lock":"zamek","type-media":"głoska bezdźwięczna","type-motion":"ruch","type-percentage":"Procent","type-rgb":"Światło RGB","type-rgbSingle":"Pojedyncze światło RGB","type-rgbwSingle":"RGBW jako pojedyncza wartość","type-slider":"suwak","type-socket":"gniazdo","type-temperature":"temperatura","type-thermostat":"termostat","type-url":"Adres URL","type-vacuumCleaner":"Odkurzacz","type-valve":"zawór","type-volume":"tom","type-volumeGroup":"grupa woluminów","type-warning":"ostrzeżenie","type-weatherCurrent":"aktualna pogoda","type-weatherForecast":"prognoza pogody","type-window":"okno","type-windowTilt":"pochylenie okna"},o5e={"type-Device type":"Type d'appareil","type-airCondition":"Climatiseur","type-blind":"stores","type-blindButtons":"Store commandé par boutons","type-button":"bouton","type-buttonSensor":"Capteur de bouton","type-camera":"caméra","type-chart":"Graphique","type-cie":"lumière colorée CIE","type-ct":"Température de couleur","type-dimmer":"variateur","type-door":"porte","type-fireAlarm":"alarme incendie","type-floodAlarm":"alarme d'inondation","type-gate":"grille","type-hue":"Lumière HUE","type-humidity":"humidité","type-illuminance":"Éclairement","type-image":"image","type-info":"informations","type-instance":"exemple","type-light":"lumière","type-location":"emplacement","type-locationOne":"Position en tant qu'État","type-lock":"verrouillage","type-media":"médias","type-motion":"mouvement","type-percentage":"Pourcentage","type-rgb":"lumière RVB","type-rgbSingle":"Lumière RVB simple","type-rgbwSingle":"RGBW comme valeur unique","type-slider":"curseur","type-socket":"douille","type-temperature":"température","type-thermostat":"thermostat","type-url":"URL","type-vacuumCleaner":"Aspirateur","type-valve":"soupape","type-volume":"volume","type-volumeGroup":"groupe de volumes","type-warning":"avertissement","type-weatherCurrent":"météo actuelle","type-weatherForecast":"prévisions météorologiques","type-window":"fenêtre","type-windowTilt":"inclinaison de la fenêtre"},n5e={"type-Device type":"Tipo di dispositivo","type-airCondition":"Condizionatore d'aria","type-blind":"tende","type-blindButtons":"Tenda controllata da pulsanti","type-button":"pulsante","type-buttonSensor":"Sensore del pulsante","type-camera":"telecamera","type-chart":"Grafico","type-cie":"Luce colorata CIE","type-ct":"Temperatura del colore","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"allarme antincendio","type-floodAlarm":"allarme allagamento","type-gate":"cancello","type-hue":"Luce HUE","type-humidity":"umidità","type-illuminance":"Illuminamento","type-image":"immagine","type-info":"informazioni","type-instance":"esempio","type-light":"leggero","type-location":"posizione","type-locationOne":"Posizione come stato","type-lock":"serratura","type-media":"media","type-motion":"movimento","type-percentage":"Percentuale","type-rgb":"luce RGB","type-rgbSingle":"Luce RGB singola","type-rgbwSingle":"RGBW come valore singolo","type-slider":"cursore","type-socket":"PRESA","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirapolvere","type-valve":"valvola","type-volume":"volume","type-volumeGroup":"gruppo di volumi","type-warning":"avvertimento","type-weatherCurrent":"meteo attuale","type-weatherForecast":"previsioni del tempo","type-window":"finestra","type-windowTilt":"inclinazione della finestra"},a5e={"type-Device type":"Apparaattype","type-airCondition":"Airconditioner","type-blind":"jaloezieën","type-blindButtons":"Jaloezie bediend door knoppen","type-button":"knop","type-buttonSensor":"Knopsensor","type-camera":"camera","type-chart":"Grafiek","type-cie":"CIE-kleurenlicht","type-ct":"Kleurtemperatuur","type-dimmer":"dimmer","type-door":"deur","type-fireAlarm":"brandalarm","type-floodAlarm":"overstromingsalarm","type-gate":"hek","type-hue":"HUE-licht","type-humidity":"vochtigheid","type-illuminance":"Verlichtingssterkte","type-image":"afbeelding","type-info":"informatie","type-instance":"aanleg","type-light":"licht","type-location":"locatie","type-locationOne":"Positie als staat","type-lock":"slot","type-media":"media","type-motion":"beweging","type-percentage":"Percentage","type-rgb":"RGB-licht","type-rgbSingle":"RGB-licht enkel","type-rgbwSingle":"RGBW als enkele waarde","type-slider":"schuifregelaar","type-socket":"stopcontact","type-temperature":"temperatuur","type-thermostat":"thermostaat","type-url":"URL","type-vacuumCleaner":"Stofzuiger","type-valve":"ventiel","type-volume":"volume","type-volumeGroup":"volumegroep","type-warning":"waarschuwing","type-weatherCurrent":"huidige weersomstandigheden","type-weatherForecast":"weersvoorspelling","type-window":"raam","type-windowTilt":"raamkanteling"},M5e={"type-Device type":"Тип пристрою","type-airCondition":"Кондиціонер","type-blind":"жалюзі","type-blindButtons":"Штора керується кнопками","type-button":"кнопку","type-buttonSensor":"Датчик кнопки","type-camera":"камера","type-chart":"Діаграма","type-cie":"Кольорове світло CIE","type-ct":"Колірна температура","type-dimmer":"диммер","type-door":"двері","type-fireAlarm":"пожежна сигналізація","type-floodAlarm":"сигналізація про повінь","type-gate":"ворота","type-hue":"світло HUE","type-humidity":"вологість","type-illuminance":"Освітленість","type-image":"зображення","type-info":"інформація","type-instance":"екземпляр","type-light":"світло","type-location":"розташування","type-locationOne":"Позиція як держави","type-lock":"замок","type-media":"ЗМІ","type-motion":"руху","type-percentage":"Відсоток","type-rgb":"RGB світло","type-rgbSingle":"Одиночне світло RGB","type-rgbwSingle":"RGBW як одне значення","type-slider":"повзунок","type-socket":"гніздо","type-temperature":"температура","type-thermostat":"термостат","type-url":"URL","type-vacuumCleaner":"Пилосос","type-valve":"клапан","type-volume":"обсяг","type-volumeGroup":"група обсягів","type-warning":"УВАГА","type-weatherCurrent":"поточна погода","type-weatherForecast":"прогноз погоди","type-window":"вікно","type-windowTilt":"нахил вікна"},c5e={"type-Device type":"设备类型","type-airCondition":"空调","type-blind":"百叶窗","type-blindButtons":"按钮控制百叶窗","type-button":"按钮","type-buttonSensor":"按钮传感器","type-camera":"相机","type-chart":"图表","type-cie":"CIE色光","type-ct":"色温","type-dimmer":"调光器","type-door":"门","type-fireAlarm":"火灾报警","type-floodAlarm":"洪水警报","type-gate":"门","type-hue":"色调灯","type-humidity":"湿度","type-illuminance":"照度","type-image":"图像","type-info":"信息","type-instance":"实例","type-light":"光","type-location":"地点","type-locationOne":"作为一个国家的地位","type-lock":"锁","type-media":"媒体","type-motion":"运动","type-percentage":"百分比","type-rgb":"RGB灯","type-rgbSingle":"RGB灯单","type-rgbwSingle":"RGBW 作为单一值","type-slider":"滑块","type-socket":"插座","type-temperature":"温度","type-thermostat":"恒温器","type-url":"网址","type-vacuumCleaner":"吸尘器","type-valve":"阀门","type-volume":"体积","type-volumeGroup":"卷组","type-warning":"警告","type-weatherCurrent":"当前天气","type-weatherForecast":"天气预报","type-window":"窗户","type-windowTilt":"窗户倾斜"};let P0=!1;function qL(){P0||(P0=!0,D.extendTranslations({en:e5e,de:t5e,ru:s5e,pt:i5e,pl:r5e,fr:o5e,it:n5e,nl:a5e,uk:M5e,"zh-cn":c5e}))}const W0={[G.Types.airCondition]:Dj,[G.Types.blind]:$0,[G.Types.blindButtons]:$0,[G.Types.button]:VSe,[G.Types.buttonSensor]:$Se,[G.Types.camera]:kSe,[G.Types.chart]:ESe,[G.Types.image]:Tj,[G.Types.dimmer]:yj,[G.Types.door]:RSe,[G.Types.fireAlarm]:b0,"sensor.alarm.fire":b0,[G.Types.floodAlarm]:U0,"sensor.alarm.flood":U0,[G.Types.gate]:FSe,[G.Types.humidity]:GSe,[G.Types.illuminance]:WSe,[G.Types.info]:jj,[G.Types.light]:gj,[G.Types.lock]:Lj,[G.Types.location]:Nj,[G.Types.locationOne]:lj,[G.Types.media]:uj,[G.Types.motion]:HSe,[G.Types.ct]:bc,[G.Types.percentage]:Qc,[G.Types.rgb]:Un,[G.Types.rgbSingle]:Un,[G.Types.rgbwSingle]:JSe,[G.Types.hue]:bc,[G.Types.cie]:Un,[G.Types.slider]:Qc,[G.Types.socket]:ZSe,[G.Types.temperature]:XSe,[G.Types.thermostat]:KSe,[G.Types.vacuumCleaner]:BSe,[G.Types.volume]:cj,[G.Types.volumeGroup]:Mj,[G.Types.window]:qSe,[G.Types.windowTilt]:KL,[G.Types.weatherCurrent]:Y0,[G.Types.weatherForecast]:Y0,[G.Types.warning]:Yc,[G.Types.unknown]:aj,[G.Types.instance]:nj,invalid:Yc,hub3:oj,node:rj,hub5:ij,controller:sj},qr={width:32,height:32};function u5e(s){const[e,t]=a.useState(!1);if(Ce(()=>{s.title&&!e&&(qL(),t(!0))},[s.title,e]),!e&&s.title)return a.createElement(J,{style:{...qr,...s.style||void 0},className:s.className,sx:s.sx});const i=s.type||(s.src?Object.keys(W0).find(n=>s.src===n):void 0);if(!i&&s.src)return a.createElement(be,{style:qr,...s,title:s.title===!0?void 0:s.title,src:s.src});const r=i&&W0[i];if(!r)return i?a.createElement("span",{style:{...qr,...s.style||void 0}},i[0].toUpperCase()):null;const o=a.createElement(r,{style:{...qr,...s.style||void 0},onClick:s.onClick,className:s.className,sx:s.sx});return s.title?a.createElement(Le,{slotProps:{popper:{sx:{pointerEvents:"none"}}},title:s.title===!0?D.t(`type-${i}`):s.title},a.createElement("div",{style:{display:"flex"}},o)):o}const Ht={itemChildrenWrapper:{display:"flex",width:"100%",justifyContent:"space-between"},type:{marginTop:10},selectIcon:{paddingRight:8,verticalAlign:"middle",width:20,height:20},selectText:{verticalAlign:"middle"},iconWrapper:{display:"flex",alignItems:"center"},iconStyle:{width:16,height:16,margin:"0 3px"},emptyIcon:{width:16,height:16,margin:"0 3px"}};function Uve(s){const[e,t]=a.useState({}),[i,r]=a.useState([]);return Ce(()=>{const o={};Object.keys(G.Types).filter(M=>{var c,l;return(!s.supportedDevices||((c=s.supportedDevices)==null?void 0:c.includes(M)))&&!((l=s.unsupportedDevices)!=null&&l.includes(M))}).forEach(M=>o[M]=D.t(`type-${G.Types[M]}`));const n=Object.keys(o);n.sort((M,c)=>o[M]===o[c]?0:o[M].localeCompare(o[c],"de")),qL(),r(n),t(o)},[s.supportedDevices,s.unsupportedDevices]),i?a.createElement(Qt,{style:{...Ht.type,...s.style},sx:s.sx,variant:"standard",error:!!s.error},a.createElement(yi,null,s.label||D.t("type-Device type")),a.createElement(nt,{variant:"standard",disabled:!!s.disabled,value:s.value,onChange:o=>s.onChange(o.target.value)},i.map(o=>{var n;return a.createElement(re,{key:G.Types[o],value:G.Types[o]},a.createElement("div",{style:Ht.itemChildrenWrapper},a.createElement("div",null,a.createElement(u5e,{type:G.Types[o],style:{...Ht.selectIcon,color:s.themeType==="dark"?"#FFFFFF":"#000"}}),a.createElement("span",{style:Ht.selectText},e[o])),(n=s.showApplications)!=null&&n.TYPE_OPTIONS[o]?a.createElement("div",{style:Ht.iconWrapper},Object.keys(s.showApplications.TYPE_OPTIONS[o]).map(M=>s.showApplications.TYPE_OPTIONS[o][M]?a.createElement(be,{key:M,style:Ht.iconStyle,src:s.showApplications.ICONS_TYPE[M]}):a.createElement("div",{key:M,style:Ht.emptyIcon}))):null))}))):a.createElement(J,{style:{...Ht.type,...s.style},sx:s.sx})}function l5e(s){return te({attr:{version:"1",viewBox:"0 0 48 48",enableBackground:"new 0 0 48 48"},child:[{tag:"circle",attr:{fill:"#B2EBF2",cx:"32",cy:"24",r:"9"},child:[]},{tag:"path",attr:{fill:"#4DD0E1",d:"M32,12c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C44,17.4,38.6,12,32,12z M32,32 c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S36.4,32,32,32z"},child:[]},{tag:"g",attr:{fill:"#3F51B5"},child:[{tag:"polygon",attr:{points:"25.4,22 19.8,5.1 13.6,27.7 11.4,22 4,22 4,26 8.6,26 14.4,40.3 20.2,18.9 22.6,26 30,26 30,22"},child:[]},{tag:"circle",attr:{cx:"32",cy:"24",r:"4"},child:[]}]}]})(s)}function N5e(s){return te({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M4.428 2.727l3.335 3.335c-.486.07-.903.276-1.32.624L.886 12.383c-1.181 1.18-1.181 3.194 0 4.375a2.41 2.41 0 0 0 1.598.834l17.088 3.681-3.335-3.333c.486-.07.903-.278 1.32-.626l5.557-5.695c1.181-1.181 1.181-3.196 0-4.377a2.411 2.411 0 0 0-1.598-.833zM11.653 6.2c.694 0 1.25.486 1.25 1.18 0 .695-.486 1.251-1.181 1.251-.695 0-1.25-.485-1.25-1.18s.555-1.251 1.18-1.251zm1.51 3.792c.049-.006.088.046.088.098-.139.694-.695 1.181-1.39 1.181-.694 0-1.32-.487-1.46-1.112 0 0 .002-.07.071 0 .487.278.972.348 1.32.278.346 0 .833-.07 1.32-.416a.092.092 0 0 1 .05-.029zm.723 2.511c.058.013.06.106.06.158-.209.903-.973 1.666-1.946 1.666a2.167 2.167 0 0 1-2.084-1.528c-.07-.07 0-.138.138-.138.695.347 1.39.416 1.877.416.486 0 1.18-.14 1.875-.556.035-.017.06-.022.08-.018zm.597 3.018c.049-.013.087.09.087.195-.278 1.181-1.25 2.085-2.5 2.155-1.251 0-2.293-.835-2.57-1.946 0-.139.068-.278.207-.209.834.486 1.737.556 2.362.556s1.529-.208 2.362-.694c.018-.035.036-.053.052-.057z"},child:[]}]})(s)}function L5e(s){return te({attr:{version:"1.2",baseProfile:"tiny",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13 5l.855 3.42 3.389-.971 1.501 2.6-2.535 2.449 2.535 2.451-1.5 2.6-3.39-.971-.855 3.422h-3l-.855-3.422-3.39.971-1.501-2.6 2.535-2.451-2.534-2.449 1.5-2.6 3.39.971.855-3.42h3m0-2h-3c-.918 0-1.718.625-1.939 1.516l-.354 1.412-1.4-.4c-.184-.053-.369-.078-.552-.078-.7 0-1.368.37-1.731 1l-1.5 2.6c-.459.796-.317 1.802.342 2.438l1.047 1.011-1.048 1.015c-.66.637-.802 1.643-.343 2.438l1.502 2.6c.363.631 1.031 1 1.731 1 .183 0 .368-.025.552-.076l1.399-.401.354 1.415c.222.885 1.022 1.51 1.94 1.51h3c.918 0 1.718-.625 1.939-1.516l.354-1.414 1.399.4c.184.053.369.077.552.077.7 0 1.368-.37 1.731-1l1.5-2.6c.459-.796.317-1.8-.342-2.438l-1.047-1.013 1.047-1.013c.66-.637.801-1.644.342-2.438l-1.5-2.6c-.365-.631-1.031-1-1.732-1-.184 0-.368.025-.551.076l-1.4.401-.354-1.413c-.22-.884-1.02-1.509-1.938-1.509zM11.5 10.5c1.104 0 2 .895 2 2 0 1.104-.896 2-2 2s-2-.896-2-2c0-1.105.896-2 2-2m0-1c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3z"},child:[]}]})(s)}function g5e(s){return te({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M7.707 17.707 13.414 12 7.707 6.293 6.293 7.707 10.586 12l-4.293 4.293zM15 6h2v12h-2z"},child:[]}]})(s)}function j5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M327.467 19.992c.748 14.94 2.317 51.268 2.59 98.76 3.474-.286 6.557-.381 9.72 1.08 18.04 8.345 27.243 29.326 27.026 50.506-.217 21.18-11.283 44.136-36.104 54.307a41.62 41.62 0 0 1-2.486.923c-3.408 80.504-12.307 166.37-33.754 225.5-6.876 15.831-17.029 29.217-26.828 40.94l55.27.422c20.676-12.19 32.041-27.395 36.32-46.407l17.558 3.954c-3.67 16.312-11.99 30.662-24.511 42.677l143.052 1.094c-5.13-14.524-16.16-46.501-20.357-70.217C451.89 293.171 450.15 45 450.025 19.992zM18.279 38.984l.881 18.725c17.856 12.047 32.035 23.91 45.969 35.527 12.887-11.156 2.404-29.725-5.82-39.091-13.668-5.346-27.335-10.467-41.03-15.16zM86.723 65.13c4.77 14.56 3.347 29.656-7.477 39.746 24.105 19.479 50.832 38.151 97.1 55.635 13.836-22.588 12.08-43.852-3.338-60.739-29.03-10.9-57.703-22.997-86.285-34.642zm-31.721 42.988V400h17.996V122.723c-6.187-4.856-12.114-9.73-17.996-14.606zm145.264 1.434c3.253 8.283 4.54 16.754 3.982 25.043-.765 11.35-4.673 22.135-10.545 32.095 16.926 5.691 36.192 11.248 58.451 16.655l2.604.633 1.834 1.953c9.223 9.826 22.535 17.206 35.469 21.006 12.933 3.8 25.473 3.655 31.814 1.056 18.024-7.385 24.773-22.363 24.932-37.84.152-14.822-7.069-28.554-15.479-33.306-45.88-1.699-89.948-12.607-133.062-27.295zm-33.264 66.476V400h17.996V182.605a502.784 502.784 0 0 1-17.996-6.578zM32 419.002v17.996h176v-17.996z"},child:[]}]})(s)}function y5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.7 21.04l-194.4.41L21.04 159.3l.41 194.4L159.3 491l194.4-.4L491 352.7l-.4-194.4L352.7 21.04zm-8 19.66l126.2 125.7.4 178.3-123.1 123.6-2.6 2.6-178.3.4L41.08 345.6l-.38-178.3L166.4 41.08l178.3-.38zm-7.5 18.01l-163.3.34L58.71 174.8l.34 163.3L174.8 453.3l163.3-.3 115.2-115.8-.3-163.3L337.2 58.71zM108.4 210.4c5.3 0 10.8.5 16.4 1.3 5.7.8 11.5 2 17.5 3.6v20.5c-5.3-2.4-10.5-4.2-15.6-5.4-5.1-1.2-9.9-1.8-14.4-1.8-6 0-10.4.8-13.25 2.5-2.87 1.6-4.3 4.2-4.3 7.7 0 2.6.96 4.6 2.87 6.1 1.95 1.4 5.48 2.7 10.58 3.7l10.6 2.1c10.8 2.2 18.5 5.5 23.1 9.9 4.5 4.5 6.8 10.8 6.8 18.9 0 10.7-3.2 18.7-9.5 24-6.4 5.2-16.1 7.8-29.2 7.8-6.1 0-12.3-.6-18.51-1.8-6.2-1.1-12.41-2.9-18.61-5.2v-21.1c6.2 3.3 12.19 5.8 17.96 7.5 5.82 1.6 11.46 2.4 16.76 2.4 5.5 0 9.7-.9 12.6-2.7 2.9-1.8 4.4-4.4 4.4-7.8 0-3.1-1-5.4-3-7.1-2-1.6-5.9-3.1-11.8-4.4l-9.7-2.1c-9.73-2.1-16.85-5.4-21.37-10-4.47-4.5-6.7-10.7-6.7-18.4 0-9.7 3.12-17.1 9.37-22.3 6.25-5.3 15.24-7.9 27-7.9zm187.7 0c15.6 0 27.8 4.5 36.7 13.5 8.9 8.9 13.3 21.2 13.3 37 0 15.7-4.4 28-13.3 37-8.9 8.9-21.1 13.4-36.7 13.4-15.6 0-27.8-4.5-36.7-13.4-8.9-9-13.3-21.3-13.3-37 0-15.8 4.4-28.1 13.3-37 8.9-9 21.1-13.5 36.7-13.5zm-141.9 1.8h89.6v18.9h-32.2v78.3h-25.1v-78.3h-32.3v-18.9zm205.8 0h41.6c12.3 0 21.8 2.8 28.4 8.3 6.7 5.4 10 13.2 10 23.4s-3.3 18.1-10 23.6c-6.6 5.4-16.1 8.2-28.4 8.2H385v33.7h-25v-97.2zm-63.9 16.4c-7.7 0-13.6 2.8-17.8 8.5-4.2 5.6-6.3 13.6-6.3 23.8 0 10.2 2.1 18.1 6.3 23.8 4.2 5.6 10.1 8.4 17.8 8.4 7.7 0 13.6-2.8 17.8-8.4 4.2-5.7 6.3-13.6 6.3-23.8 0-10.2-2.1-18.2-6.3-23.8-4.2-5.7-10.1-8.5-17.8-8.5zm88.9 1.8v27.1h13.9c4.9 0 8.6-1.2 11.3-3.5 2.6-2.4 3.9-5.8 3.9-10.1s-1.3-7.7-3.9-10c-2.7-2.4-6.4-3.5-11.3-3.5H385z"},child:[]}]})(s)}function T5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 54.28c-124.603 0-226 101.398-226 226 0 47.864 14.975 92.293 40.465 128.876l29.79-19.86c-17.188-24.545-28.708-53.362-32.696-84.577H96v-18H66.115c-.07-2.14-.115-4.284-.115-6.44 0-45.378 15.816-86.97 42.236-119.598l17.4 17.4 12.727-12.727-18.133-18.132C152.735 114.057 197.335 92.8 247 90.498v29.22h18V90.5c49.665 2.302 94.265 23.56 126.77 56.725l-18.133 18.132 12.726 12.727 17.4-17.4c26.42 32.63 42.237 74.22 42.237 119.6 0 2.154-.044 4.3-.115 6.437H416v18h28.44c-3.987 31.214-15.507 60.03-32.694 84.575l29.79 19.86C467.025 372.574 482 328.146 482 280.282c0-124.602-101.397-226-226-226zm15.83 66.23a144 160 0 0 1 74.608 100.062l49.966-17.568a160 160 0 0 0-4.3-7.012l-5.135 5.153-30.368-30.29-5.76-5.746 7.85-7.874a160 160 0 0 0-86.862-36.726zm156.15 89.844l-175.332 60.6C240.505 272.618 231 283.155 231 295.72c0 13.7 11.3 25 25 25 6.77 0 12.95-2.764 17.473-7.208L427.98 210.354zm-16.513 32.322l-60.713 40.72a144 160 0 0 1-56.6 108.323h76.057a160 160 0 0 0 39.763-68.572H398.48v-52.515h17.022a160 160 0 0 0-4.035-27.957zM128 421.72v36h256v-36H128z"},child:[]}]})(s)}function J0(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M140 29.92c-31.4 0-59.89 3.25-79.89 8.25-9.9 2.5-17.8 5.51-22.4 8.25-3.2 1.87-4.1 3.15-4.5 3.58.4.43 1.3 1.71 4.5 3.58 4.6 2.74 12.5 5.75 22.4 8.25 20 5 48.49 8.25 79.89 8.25h5.7c5.3-2 11.1-3.78 17.6-5.4 20.3-5.08 46.5-8.42 75.8-9.36 1.2-.57 2.3-1.14 3.2-1.7 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zm232 0c-31.4 0-59.9 3.25-79.8 8.25-10 2.5-17.9 5.51-22.5 8.25-3.1 1.87-4.1 3.15-4.5 3.58.4.43 1.4 1.71 4.5 3.58.9.56 2 1.13 3.2 1.7 29.3.94 55.5 4.28 75.8 9.36 6.5 1.62 12.3 3.4 17.6 5.4h5.7c31.4 0 59.9-3.25 79.8-8.25 10-2.5 17.9-5.51 22.5-8.25 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zM33.01 71.44V369.9c0 4.3 1.8 8 6.8 12.3 5 4.3 13.1 8.5 23.3 11.9 15.3 5.1 35 8.5 55.89 9.8V278.3l-16.5 28.6-7.79-4.5c-27.4-15.9-44.3-45.3-44.4-77v-9h52.59c-.6 2.6-.9 5.3-.9 8.1 0 13.1 6.8 24.8 17 31.7v-63.4c-1.9 1.3-3.6 2.7-5.2 4.2l-25.99-45.1 7.8-4.5c7.49-4.2 15.29-7.3 23.39-9.3V87.61c-24.19-1.08-45.99-4.01-63.19-8.32-8.9-2.21-16.5-4.76-22.8-7.85zm445.99 0c-6.3 3.09-14 5.63-22.8 7.84-17.2 4.31-39 7.24-63.2 8.32v50.6c8.1 2 16 5.1 23.4 9.3l7.7 4.5-4.4 7.8-21.5 37.2c-1.6-1.5-3.3-2.9-5.2-4.2v63.4c10.2-6.9 17-18.6 17-31.7 0-2.8-.3-5.5-.9-8.1h50.8v9c0 31.8-17 61.1-44.4 77l-7.8 4.5-14.7-25.5v122.5c20.9-1.3 40.7-4.7 55.9-9.8 10.2-3.4 18.3-7.6 23.3-11.9 5-4.3 6.8-8 6.8-12.3zM256 73c-34.7 0-66.2 3.57-88.3 9.1-11.1 2.77-19.8 6.09-25.1 9.19-4.3 2.58-5.3 4.42-5.5 4.71.2.29 1.2 2.12 5.5 4.7 5.3 3.1 14 6.4 25.1 9.2 22.1 5.5 53.6 9.1 88.3 9.1 34.7 0 66.2-3.6 88.3-9.1 11.1-2.8 19.8-6.1 25.1-9.2 4.3-2.58 5.3-4.41 5.5-4.7-.2-.29-1.2-2.13-5.5-4.71-5.3-3.1-14-6.42-25.1-9.19-22.1-5.53-53.6-9.1-88.3-9.1zm118.9 23c.1.1.1.1.1 0s0-.1-.1 0zm-237.8 0c-.1-.1-.1-.1-.1 0s0 .1.1 0zm-.1 22.1V448c0 5 2.2 9.3 7.9 14.2 5.6 4.8 14.7 9.5 25.9 13.3 22.6 7.5 54 11.5 85.2 11.5 31.2 0 62.6-4 85.2-11.5 11.2-3.8 20.3-8.5 25.9-13.3 5.7-4.9 7.9-9.2 7.9-14.2V118.1c-7.2 3.7-16 6.6-26.3 9.3-24.2 6-56.7 9.6-92.7 9.6s-68.5-3.6-92.7-9.6c-10.3-2.7-19.1-5.6-26.3-9.3zM256 191c16.8 0 33.5 4.4 48.5 13l7.8 4.5-4.5 7.8-24.1 41.6c-7.3-6.7-17-10.9-27.7-10.9s-20.4 4.2-27.7 10.9l-28.6-49.4 7.8-4.5c15-8.7 31.7-13 48.5-13zm0 74c12.8 0 23 10.2 23 23s-10.2 23-23 23-23-10.2-23-23 10.2-23 23-23zm-98 15h57.8c-.5 2.6-.8 5.3-.8 8 0 18.1 12 33.7 28.5 39l-29.2 50.5-7.8-4.5c-30-17.3-48.5-49.4-48.5-84zm138.2 0H352v9c0 34.6-18.5 66.7-48.5 84l-7.8 4.5-28.8-50c17.3-4.8 30.1-20.8 30.1-39.5 0-2.7-.3-5.4-.8-8z"},child:[]}]})(s)}function D5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M288.3 13.4c-12.3-.01-23 6.49-27.3 15.31l-2.9 5.95-6.6-1.01c-5.5-.85-11.3-1.32-17.1-1.32-18.8 0-35.7 4.5-47.3 11.14-11.5 6.64-16.9 14.59-16.9 22 0 7.42 5.4 15.37 16.9 22 11.6 6.64 28.5 11.13 47.3 11.13 7.5-.02 14.9-.74 21.8-2.13l6.3-1.23 3.2 5.46c5.6 9.2 23.7 18.2 44.7 18.2 13.9 0 26.4-3.6 34.8-8.8 8.4-5.2 12.2-11.23 12.2-16.9 0-5.09-3-10.48-10-15.44-6.9-4.97-17.6-8.87-30-9.95l-18.3-1.59 12.5-13.49c4.1-4.41 6.1-9.6 6.1-14.87 0-12.88-12.4-24.46-29.4-24.46zM152.2 65.46C84.8 102.3 39 173.9 39 256c0 32.1 7 62.6 19.54 90 5.95-7.9 10.48-13.4 12.67-16C62.05 307.2 57 282.2 57 256c0-74 40.27-138.5 100.1-172.78-3.1-5.39-4.9-11.34-4.9-17.74v-.02zm210.7 1.75c7.5 6.93 12.5 15.9 12.5 25.99 0 1.14-.1 2.27-.2 3.38C423.7 132.9 455 190.7 455 256c0 23.7-4.2 46.5-11.8 67.6l18.3 2.2c7.4-21.9 11.5-45.4 11.5-69.8 0-80.8-44.4-151.5-110.1-188.79zm58.6 270.49c-11.1.2-23 1.1-35.9 3.1l-.5.1-.5.1c-25.8 7.3-37.1 15.2-46.4 24.7l-2.2 2.2-.3 3.1c-3.4 29.6-5.8 60 0 91.8l1.3 6.8 6.8.6c30.6 2.6 58.7 1.4 86.2 0l1-.1.9-.2c18.5-5.2 34.4-12.8 46.4-24.6l1.7-1.6.6-2.2c10-33.4 3.4-63.8.4-92.7l-.8-7.4-7.3-.7c-16.2-1.5-32.8-3.2-51.4-3zM79.62 348.2c-4.94 6.1-11.43 14.5-18.58 25.6-12.29 18.9-22.53 42.4-20.51 54.9 1.43 8.8 6.97 19.6 14.51 27.6 7.54 7.9 16.69 12.8 24.58 12.8 7.87 0 17.03-4.9 24.58-12.8 7.5-8 13.1-18.8 14.5-27.6 2-12.5-8.2-36-20.5-54.9-7.15-11-13.64-19.5-18.58-25.6zM427 355.7c1.7 0 3.3 0 5 .1 5.4.1 10.7.4 16 .8-5.9 3.4-12.1 6.8-19.5 9.9l-2.4.2c-19.5 1.4-37.7.3-55.4-2 4.7-2 10.5-4 18.3-6.2 13.8-2.2 26.3-2.9 38-2.8zm38 11.6c2.8 22.9 5 44.5-1 66.6-7 6.3-16 11.4-27 15.4 3-22.5 2-44.8-.5-66.6 11.3-5 20.2-10.2 28.5-15.4zm-112.2 13.1c20.7 3.2 42.3 5.4 65.8 4.5 2.5 23 3.5 45.6-.4 67.8-21.5 1-43.1 1.5-65.8-.1-3.5-24-2.2-47.9.4-72.2zm-216.4 34.7c.9 5.5 1 11 .1 16.4-.3 1.6-.6 3.3-1 4.9C170 459.5 211.4 473 256 473c21.6 0 42.5-3.2 62.3-9.1l-2-18.2c-19 6-39.3 9.3-60.3 9.3-44.9 0-86.3-14.8-119.6-39.9z"},child:[]}]})(s)}function d5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M33.125 19.406L135.5 128.22l81-23.157 18.72-5.344-7.564 17.936-46.125 109.78 134.282-70 26.157-13.655L328.436 170 256.5 309.25l91.25-57.125 22.97-14.375-9.22 25.47-34.625 95.624 71-36.375 21.188-10.845L410.906 334l-33.937 93.063 45.124-6.688 4.53-.656 3.313 3.155 64.313 61.47-30.5-80.5 23.313-46.908-72.5 39.532 51.062-141.158-91.188 47.47 72.344-142.813-128.217 82.81L421.875 70.063 239.03 168.69l30.44-99.563-103.845 25.25-132.5-74.97zM18.155 30.78l77.876 108.25-31.124 75.532 94.125-46.78-98.905 166.812 190.25-99.656-101.03 185.406 140.25-79.063-46.94 102.22 106.5-53-45.655 92.28 86.5-14.467 93.47 31.562-63.158-60.344-56.125 8.314-15.53 2.312 5.374-14.75 31.158-85.437-70.907 36.31-21.124 10.814 8.094-22.313 33.47-92.436-97.22 60.875-28.938 18.092L224.22 331l74.06-143.344-131.06 68.313-22.97 12 10.03-23.908 48.626-115.687-67.75 19.375-5.5 1.563-3.875-4.157L18.157 30.78z"},child:[]}]})(s)}function h5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M20.127 52.803v58.986L250.46 245.153c26.367-28.823 70.087-36.533 105.313-16.195 35.29 20.374 50.465 62.207 38.567 99.503l101.648 58.855-64.728-74.65 35.638-37.352-57.27-7.687 84.72-86.92-125.71 33.186 12.995-120.208-66.578 96.363-27.448-80.593-16.353 88.77L20.127 52.803zm0 105.12l-.008.018.007.005v-.02zm0 .022l-.002 87.582 155.344 89.95-89.94 33.287h135.493l-63.658 99.87 116.22-70.083 15.77 85.852 38.543-80.01 63.66 87.018-5.853-87.047 90.54 17.268-102.4-59.198c-26.546 26.964-68.89 33.744-103.183 13.945-34.322-19.816-49.62-59.928-39.49-96.424L20.127 157.945zm316.6 119.442c-.938-.003-1.874.027-2.805.092-12.42.86-24.164 7.707-30.9 19.375-10.78 18.67-4.455 42.27 14.214 53.047 18.67 10.78 42.27 4.455 53.047-14.214 10.78-18.67 4.454-42.27-14.215-53.047-6.125-3.536-12.78-5.23-19.34-5.253z"},child:[]}]})(s)}function z5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 32l-64 96 80 16-16 80 64-96-80-16 16-80zm-96 217c-1.9 0-9.8 3-15.8 6.7-2.8 1.7-5.3 3.5-7.2 4.8v119c1.9 1.3 4.4 3.1 7.2 4.8 6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 5.9-3.7 10.6-7.3 10.6-7.3l2.5-2H201V265h-12.1l-2.5-2s-4.7-3.6-10.6-7.3c-6-3.7-13.9-6.7-15.8-6.7zm192 0c-1.9 0-9.8 3-15.8 6.7-5.9 3.7-10.6 7.3-10.6 7.3l-2.5 2H311v110h12.1l2.5 2s4.7 3.6 10.6 7.3c6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 2.8-1.7 5.3-3.5 7.2-4.8v-119c-1.9-1.3-4.4-3.1-7.2-4.8-6-3.7-13.9-6.7-15.8-6.7zm-133 16v110h14V265h-14zm32 0v110h42V265h-42zM95.5 311c-18.8 0-36.6 9.2-49.94 22.7C32.22 347.1 23 365 23 384v106h18V384c0-13 6.78-27.1 17.32-37.7C68.85 335.8 82.8 329 95.5 329H119v-18H95.5zm297.5 0v18h22.9c13.1 0 27.1 6.8 37.7 17.4C464.2 357 471 371 471 384v106h18V384c0-19-9.2-37-22.7-50.4-13.4-13.4-31.4-22.6-50.4-22.6H393z"},child:[]}]})(s)}function w5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M376 211H256V16L136 301h120v195z"},child:[]}]})(s)}function I5e(s){return te({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M18.36 6.64a9 9 0 1 1-12.73 0"},child:[]},{tag:"line",attr:{x1:"12",y1:"2",x2:"12",y2:"12"},child:[]}]})(s)}function C5e(s){return te({attr:{fill:"none",viewBox:"0 0 24 24",strokeWidth:"2",stroke:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},child:[]}]})(s)}function p5e(s){return te({attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M6 0l-6 8h6l-4 8 14-10h-8l6-6z"},child:[]}]})(s)}const $ve={SET:SSe,WORKING:Uc,UNREACH:Wc,LOWBAT:$c,MAINTAIN:Oj,ERROR:fj,DIRECTION:mj,CONNECTED:Wc,ACTUAL:L5e,SECOND:g5e,PRESS_LONG:Aj,PRESS:pj,MUTE:Cj,ACCURACY:h5e,RADIUS:fSe,ELEVATION:xSe,LATITUDE:_Se,LONGITUDE:mSe,GPS:Ij,ON_ACTUAL:Pc,ON_SET:Pc,OPEN:wj,STOP:y5e,WATER_ALARM:Q0,WASTE_ALARM:J0,PAUSE:ASe,STATE:D5e,BATTERY:$c,WASTE:J0,WATER:Q0,WORK_MODE:Uc,MODE:zj,POWER:OSe,BOOST:N5e,HUMIDITY:QSe,TEMPERATURE:vSe,BRIGHTNESS:USe,MOTION:hj,FIRE:bSe,WINDOW:KL,SMOKE:YSe,SWING:j5e,SPEED:T5e,DIMMER:C5e,ON:I5e,COLOR_TEMP:dj,ELECTRIC_POWER:p5e,CURRENT:w5e,VOLTAGE:z5e,CONSUMPTION:l5e,FREQUENCY:d5e,HUE:PSe};class eg extends a.Component{static generateFile(e,t){const i=window.document.createElement("a");i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),i.setAttribute("download",e),i.style.display="none",window.document.body.appendChild(i),i.click(),window.document.body.removeChild(i)}handleFileSelect=e=>{const t=e.target,i=t==null?void 0:t.files;if(!i||!i.length){console.error("No files found. Please report to developers");return}const r=i[0];if(r){const o=new window.FileReader;o.onload=()=>{var M;const n=((M=o.result)==null?void 0:M.toString())||"";try{const c=JSON.parse(n);c.native&&c.common?c.common.name!==this.props.common.name?this.props.onError&&this.props.onError(D.t("ra_otherConfig",c.common.name)):this.props.onLoad&&this.props.onLoad(c.native):this.props.onError&&this.props.onError(D.t("ra_invalidConfig"))}catch(c){this.props.onError&&this.props.onError(c==null?void 0:c.toString())}},o.readAsText(r)}else alert("Failed to open JSON File")};download(){const e={_id:`system.adapter.${this.props.common.name}.${this.props.instance}`,common:JSON.parse(JSON.stringify(this.props.common)),native:this.props.native};e.common.news&&delete e.common.news,e.common.titleLang&&delete e.common.titleLang,e.common.desc&&delete e.common.desc,eg.generateFile(`${e._id}.json`,e)}upload(){const e=window.document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",this.handleFileSelect,!1),e.click()}render(){return a.createElement("div",{className:this.props.className,style:this.props.style},this.props.common.icon?a.createElement(be,{src:this.props.common.icon,style:{padding:8,width:64},alt:"logo"}):null,this.props.common.readme?a.createElement(bt,{size:"small",color:"primary","aria-label":"Help",style:{marginRight:5,marginTop:5,float:"right"},onClick:()=>{const e=window.open(this.props.common.readme,"_blank");e==null||e.focus()}},a.createElement(Ej,null)):null,a.createElement(bt,{size:"small",color:"primary","aria-label":"Load config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Load configuration from file"),onClick:()=>this.upload()},a.createElement(Dy,null)),a.createElement(bt,{size:"small",color:"primary","aria-label":"Save config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Save configuration to file"),onClick:()=>this.download()},a.createElement(Ty,null)))}}class tg{static text2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static getTitle(e){const t=tg.extractHeader(e);let i=t.body;const r=t.header;if(!r.title){i=i.replace(/{[^}]*}/g,""),i=i.trim();const o=i.replace(/\r/g,"").split(` `);for(let n=0;n{if(!n.trim())return;const M=n.indexOf(":");if(M!==-1){const c=n.substring(0,M).trim();let l=n.substring(M+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[c]=!0:l==="false"?t[c]=!1:parseFloat(l).toString()===l?t[c]=parseFloat(l):t[c]=l}else t[n.trim()]=!0}),e=e.substring(i+7))}return{header:t,body:e}}static removeDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(i=>e=e.replace(i,"")),e}static onCopy(e,t){E4(t),e&&e.stopPropagation(),e&&e.preventDefault()}}function A5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function sg(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"248",cx:"160",fill:"none",strokeWidth:"15"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function Bs(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"}))}function ig(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"140.83068",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"251",cx:"241",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"200.94531",x2:"240.5",y1:"45.94531",x1:"240.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"78.7979",x:"214.5",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"84",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"83.5",y1:"46.94531",x1:"83.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"57.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function m5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",onClick:e=>s.onClick&&s.onClick(e),width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}))}function f5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}),a.createElement("path",{fill:"currentColor",stroke:"null",d:"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z"}))}function O5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function rr(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("rect",{fill:"none",rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor"}),a.createElement("ellipse",{fill:"none",ry:"54",rx:"54",cy:"160",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor"}))}function E5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 24 24",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",stroke:"currentColor",d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"}))}const $n={root:{width:"100%",height:"100%"},overflowHidden:{overflow:"hidden"},container:{height:"100%"}};function _5e(s){var e;return a.createElement(AN,{elevation:Number.isNaN(s.elevation)?1:s.elevation,style:{...$n.root,...((e=s.styles)==null?void 0:e.root)||void 0,...s.overflow!=="visible"?$n.overflowHidden:void 0},onKeyDown:s.onKeyDown,tabIndex:s.tabIndex},a.createElement(ts,{container:!0,direction:"column",wrap:"nowrap",sx:$n.container},s.children))}const B0={root:{height:"100%",overflow:"hidden"},overflowAuto:{overflow:"auto"}},x5e=a.forwardRef(function(e,t){return a.createElement(ts,{sx:{...B0.root,...(e==null?void 0:e.style)||void 0,...e.overflow==="auto"?B0.overflowAuto:void 0},ref:t},e.children)});function S5e(s){return a.createElement(ts,{container:!0,alignItems:"center"},s.children)}const Li=24,$e=32,rg=s=>s==="dark"?"#62ff25":"#37c400",og=s=>s==="dark"?"#ee56ff":"#a204b4",k5e=s=>s==="dark"?"#fff46e":"#b89101",ng=s=>"#ff6d69",ag=s=>"#5773ff",v5e=["0_userdata.0.","alias.0."],ss={headerCellInput:{width:"calc(100% - 5px)",height:$e,pt:0,"& .itemIcon":{verticalAlign:"middle",width:Li,height:Li,display:"inline-block"}},headerCellSelectItem:{"& .itemIcon":{width:Li,height:Li,mr:"5px",display:"inline-block"}},selectNone:{opacity:.5},selectClearButton:{position:"absolute",top:0,right:0,borderRadius:5,backgroundColor:"background.default"},cellIdTooltipLink:{color:"#7ec2fd","&:hover":{color:"#7ec2fd"},"&:visited":{color:"#7ec2fd"}},cellIdTooltip:{fontSize:14}};function Y5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 436 436",style:s==null?void 0:s.style,width:"24",height:"24",className:"admin-button"},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),a.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function R0(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}function Q5e(s,e){const t=[];for(let i=0;i{if(r==null)return;const n=typeof r=="object";if(t&&n&&typeof r.en=="string"&&typeof r.de=="string"){i[o]=r.en;return}i[o]=n?_a(r,e,t):r}):b5e(s,(i,r,o)=>{if(r==null||e.includes(o))return;const n=typeof r=="object";if(t&&n&&typeof r.en=="string"&&typeof r.de=="string"){i[o]=r.en;return}i[o]=n?_a(r,e,t):r})}function F0(s,e,t){const i=document.createElement("a"),r=[];t.excludeSystemRepositories&&r.push("system.repositories");const o=r.length>0||t.excludeTranslations?_a(e,r,t.excludeTranslations):e,n=t.beautify?JSON.stringify(o,null,2):JSON.stringify(o);i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(n)}`),i.setAttribute("download",s),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}class U5e extends De{hasIcons;timer=null;constructor(e){var t;super(e),this.state={value:e.initialValue||[]},this.hasIcons=!!((t=e.values)!=null&&t.find(i=>i.icon))}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){var e;return a.createElement("div",{style:{position:"relative"}},a.createElement(nt,{variant:"standard",key:this.props.name,sx:ss.headerCellInput,className:"no-underline",multiple:!0,renderValue:t=>t!=null&&t.length?t.map(i=>{const r=this.props.values.find(c=>typeof c=="object"?c.value===i:c===i);let o,n,M;return typeof r=="object"?(o=r.value,n=r.name,M=r.icon):(o=r,n=r),a.createElement(J,{component:"span",sx:ss.headerCellSelectItem,key:o},M||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),n)}):this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:t=>{let i=t.target.value;if(this.state.value[0]==="_"&&i.includes("_")&&i.length>1){const r=i.indexOf("_");r!==-1&&i.splice(r,1)}else this.state.value[0]!=="_"&&i.includes("_")&&(i=["_"]);i.includes("")&&(i=[]),this.setState({value:i},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,i)},400)})},onClose:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},inputProps:{name:this.props.name,id:this.props.name},displayEmpty:!0},a.createElement(re,{key:"empty",value:""},a.createElement("span",{style:ss.selectNone},this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`])),(e=this.props.values)==null?void 0:e.map(t=>{let i,r,o;return typeof t=="object"?(i=t.value,r=t.name,o=t.icon):(i=t,r=t),a.createElement(re,{sx:ss.headerCellSelectItem,key:i,value:i},o||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),r)})),this.state.value.length?a.createElement(J,{component:"div",sx:ss.selectClearButton},a.createElement(W,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:[]},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(we,null))):null)}}class $5e extends De{timer=null;constructor(e){super(e),this.state={value:e.initialValue||""}}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){return a.createElement(Qt,{sx:this.props.styles,key:this.props.name,title:this.props.t("ra_You can use * as wildcard"),margin:"dense"},a.createElement(qt,{classes:{underline:"no-underline"},id:this.props.name,placeholder:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:e=>{const t=e.target.value;this.setState({value:t},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,t)},400)})},onBlur:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},autoComplete:"off"}),this.state.value?a.createElement("div",{style:{position:"absolute",right:0}},a.createElement(W,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:""},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(we,null))):null)}}function jr(s,e,t,i){if(t||=0,i===void 0&&(i=s.length-1,!i))return s[0]===e;const r=Math.floor((t+i)/2);return e===s[r]?!0:i-1===t?s[t]===e||s[i]===e:e>s[r]?jr(s,e,r,i):ex.toLowerCase())),(L=e.custom)!=null&&L.length&&(r.custom=e.custom.map(x=>x.toLowerCase())),(g=e.role)!=null&&g.length&&(r.role=e.role.map(x=>x.toLowerCase())),(j=e.room)!=null&&j.length&&(r.room=[],e.room.forEach(x=>{var S,R;r.room=r.room.concat(((R=(S=i[x])==null?void 0:S.common)==null?void 0:R.members)||[])})),(y=e.func)!=null&&y.length&&(r.func=[],e.func.forEach(x=>{var S,R;r.func=r.func.concat(((R=(S=i[x])==null?void 0:S.common)==null?void 0:R.members)||[])}))}const N=s.data;if(N!=null&&N.id){const x=(T=N.obj)==null?void 0:T.common;if(n){if(n.type&&(typeof n.type=="string"?(!N.obj||n.type!==N.obj.type)&&(l=!0):Array.isArray(n.type)&&(!N.obj||!n.type.includes(N.obj.type))&&(l=!0)),!l&&((d=n.common)!=null&&d.type)&&(x!=null&&x.type?typeof n.common.type=="string"?n.common.type!==x.type&&(l=!0):Array.isArray(n.common.type)&&(n.common.type.includes(x.type)||(l=!0)):l=!0),!l&&((I=n.common)!=null&&I.role)&&(x!=null&&x.role?typeof n.common.role=="string"?x.role.startsWith(n.common.role)&&(l=!0):Array.isArray(n.common.role)&&(n.common.role.find(S=>x.role.startsWith(S))||(l=!0)):l=!0),!l&&((w=n.common)==null?void 0:w.custom)==="_"&&(x!=null&&x.custom))l=!0;else if(!l&&((A=n.common)!=null&&A.custom)&&((p=n.common)==null?void 0:p.custom)!=="_"){const S=n.common.custom;if(!(x!=null&&x.custom))l=!0;else if(S==="_dataSources")Object.keys(x.custom).find(R=>R.startsWith("history.")||R.startsWith("sql.")||R.startsWith("influxdb."))||(l=!0);else if(Array.isArray(S)){const R=Object.keys(x.custom);S.find(he=>R.find(Xe=>Xe.startsWith(he)))&&(l=!0)}else S!==!0&&!Object.keys(x.custom).find(R=>R.startsWith(S))&&(l=!0)}}!l&&!e.expertMode&&(l=N.id==="system"||N.id==="enum"||N.id.startsWith("system.")||N.id.startsWith("enum.")||N.id.startsWith("_design/")||N.id.endsWith(".admin")||!!(x!=null&&x.expert)),!l&&r.id&&(N.fID===void 0&&(N.fID=N.id.toLowerCase()),l=!N.fID.includes(r.id)),!l&&r.idRx&&(l=!r.idRx.test(N.id)),!l&&r.name&&(x?(N.fName===void 0&&(N.fName=He(x.name,t)||"",N.fName=N.fName.toLowerCase()),l=!N.fName.includes(r.name)):l=!0),!l&&r.nameRx&&x&&(N.fName===void 0&&(N.fName=He(x.name,t)||"",N.fName=N.fName.toLowerCase()),l=!r.nameRx.test(N.fName)),!l&&((h=e.role)!=null&&h.length)&&x&&(l=!(typeof x.role=="string"&&r.role.find(S=>x.role.startsWith(S)))),!l&&((C=r.room)!=null&&C.length)&&(l=!r.room.find(S=>S===N.id||N.id.startsWith(`${S}.`))),!l&&((E=r.func)!=null&&E.length)&&(l=!r.func.find(S=>S===N.id||N.id.startsWith(`${S}.`))),!l&&((O=r.type)!=null&&O.length)&&(l=!((b=N.obj)!=null&&b.type&&r.type.includes(N.obj.type))),!l&&M&&(l=!((k=N.obj)!=null&&k.type&&M.includes(N.obj.type))),!l&&((K=r.custom)!=null&&K.length)&&(x?r.custom[0]==="_"?l=!!x.custom:x.custom?l=!r.custom.find(S=>x.custom[S]):l=!0:l=r.custom[0]!=="_")}return N.visible=!l,N.hasVisibleChildren=!1,s.children&&c<20&&s.children.forEach(x=>{xa(x,e,t,i,r,o,n,M,c+1)&&(N.hasVisibleChildren=!0)}),N.sumVisibility=N.visible||N.hasVisibleChildren,o&&N.sumVisibility&&o.count++,N.id&&N.sumVisibility&&s.children&&s.children.forEach(x=>x.data.hasVisibleParent=!0),N.visible||N.hasVisibleChildren}function Mg(s,e,t,i){var o;i||=[];const r=s.data;return r.sumVisibility&&(r.id&&t[r.id]&&t[r.id].type===e&&i.push(r.id),(o=s.children)==null||o.forEach(n=>Mg(n,e,t,i))),i}function G0(s,e,t,i,r,o){let n;return e==="alias"||e==="alias.0"?n=a.createElement(SN,{className:"iconOwn",style:{color:og(i)}}):e==="0_userdata"||e==="0_userdata.0"?n=a.createElement(Vj,{className:"iconOwn",style:{color:rg(i)}}):e.startsWith("_design/")||e==="system"?n=a.createElement(jo,{className:"iconOwn",style:{color:ng(i)}}):e==="system.adapter"?n=a.createElement(jo,{className:"iconOwn",style:{color:ag(i)}}):e==="system.group"?n=a.createElement(rM,{className:"iconOwn"}):e==="system.user"?n=a.createElement(sM,{className:"iconOwn"}):e==="system.host"?n=a.createElement(iM,{className:"iconOwn"}):e.endsWith(".connection")||e.endsWith(".connected")?n=a.createElement(li,{className:"iconOwn"}):e.endsWith(".info")?n=a.createElement(tM,{className:"iconOwn"}):s[e]&&s[e].type==="meta"?n=a.createElement(Yo,{className:"iconOwn"}):t<2&&s[`system.adapter.${e}`]&&(n=_o(s,`system.adapter.${e}`,r,o)),n||null}function cg(s,e){var t,i;return(i=(t=s==null?void 0:s.obj)==null?void 0:t.common)!=null&&i.desc&&He(s.obj.common.desc,e)||null}function P5e(s,e){const t=cg(s,e);return t!=null&&t.startsWith("http")?a.createElement(J,{component:"a",sx:ss.cellIdTooltipLink,href:t,target:"_blank",rel:"noreferrer"},t):a.createElement("span",{style:ss.cellIdTooltip},t||s.id||"")}function H0(s,e){var N,u,L,g,j,y,T,d,I,w;const t=e.imagePrefix||".";let i=Object.keys(s);i.sort((A,p)=>A===p?0:(A=A.replace(/\./g,"!!!"),p=p.replace(/\./g,"!!!"),A>p?1:-1)),e.root&&(i=i.filter(A=>A===e.root||A.startsWith(`${e.root}.`)));let r=[],o="",n=0;const M={data:{name:"",id:""},children:[]},c={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:s,customs:["_"],enums:[],hasSomeCustoms:!1,aliasesMap:{}};let l=M;for(let A=0;Ak.role===b)?typeof b!="string"?console.warn(`Invalid role type "${typeof b}" in "${h._id}"`):c.roles.push({role:b,type:O.type}):p.startsWith("enum.rooms.")?(c.roomEnums.push(p),c.enums.push(p)):p.startsWith("enum.functions.")?(c.funcEnums.push(p),c.enums.push(p)):h.type==="enum"?c.enums.push(p):h.type==="instance"&&O&&(O.supportCustoms||(N=O.adminUI)!=null&&N.custom)&&(c.hasSomeCustoms=!0,c.customs.push(p.substring(15))),p.startsWith("alias.")&&((u=h.common.alias)!=null&&u.id))if(typeof h.common.alias.id=="string"){const k=h.common.alias.id;c.aliasesMap[k]?c.aliasesMap[k].includes(p)||c.aliasesMap[k].push(p):c.aliasesMap[k]=[p]}else{const k=h.common.alias.id.read;k&&(c.aliasesMap[k]?c.aliasesMap[k].includes(p)||c.aliasesMap[k].push(p):c.aliasesMap[k]=[p]);const K=h.common.alias.id.write;K&&(c.aliasesMap[K]?c.aliasesMap[K].includes(p)||c.aliasesMap[K].push(p):c.aliasesMap[K]=[p])}}c.ids.push(p);let E;do if(E=!1,!o||p.startsWith(`${o}.`)){if(C.length-n>1){let b=o;for(let k=n;kK.data.name===C[k]));else{const K={data:{name:C[k],parent:l,id:b,obj:s[b],level:k,icon:G0(s,b,k,e.themeType,e.lang,t),generated:!0}};l.children||=[],l.children.push(K),l=K,c.ids.push(b)}}const O={data:{name:C[C.length-1],title:He((L=h==null?void 0:h.common)==null?void 0:L.name,e.lang),obj:h,parent:l,icon:_o(s,p,e.lang,t)||G0(s,p,0,e.themeType,e.lang,t),id:p,hasCustoms:!!((g=h.common)!=null&&g.custom&&Object.keys(h.common.custom).length),level:C.length-1,generated:!1,button:h.type==="state"&&!!((j=h.common)!=null&&j.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("button")&&((y=h.common)==null?void 0:y.write)!==!1,switch:h.type==="state"&&((T=h.common)==null?void 0:T.type)==="boolean"&&((d=h.common)==null?void 0:d.write)!==!1&&((I=h.common)==null?void 0:I.read)!==!1,url:!!((w=h.common)!=null&&w.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("url")}};l.children||=[],l.children.push(O),l=O,n=C.length,r=C,o=p}else{let O=0;for(;r[O]===C[O];)O++;if(O>0){let b=r.length;for(r=r.splice(0,O),n=O,o=r.join(".");b>O;)l.data.parent?l=l.data.parent:console.error(`Parent is null for ${p} ${o} ${r.join(".")}`),b--}else l=M,r=[],o="",n=0;E=!0}while(E)}return c.roomEnums.sort((A,p)=>{var E,O,b,k;const h=He((O=(E=s[A])==null?void 0:E.common)==null?void 0:O.name,e.lang)||A.split(".").pop(),C=He((k=(b=s[p])==null?void 0:b.common)==null?void 0:k.name,e.lang)||p.split(".").pop();return h>C?1:h{var E,O,b,k;const h=He((O=(E=s[A])==null?void 0:E.common)==null?void 0:O.name,e.lang)||A.split(".").pop(),C=He((k=(b=s[p])==null?void 0:b.common)==null?void 0:k.name,e.lang)||p.split(".").pop();return h>C?1:hA.role.localeCompare(p.role)),c.types.sort(),{info:c,root:M}}function ug(s,e,t,i,r){if(s.data.id===e)return s;if(t||(t=e.split("."),r=0,i=t[r]),!s.children&&s.data.id!==e)return null;let o;if(s.children)for(let n=0;ni)break}return o?(r||=0,ug(o,e,t,`${i}.${t[r+1]}`,r+1)):null}function lg(s,e,t,i){var n,M;if(!e)return{rooms:[],per:!1};i||=[];for(const c of s.roomEnums){const l=(n=s.objects[c])==null?void 0:n.common;if(!l)continue;const N=He(l.name,t);(M=l.members)!=null&&M.includes(e)&&!i.includes(N)&&i.push(N)}let r;const o=e.split(".");return o.pop(),e=o.join("."),s.objects[e]&&(r=i.length,lg(s,e,t,i)),{rooms:i,per:!r}}function Rs(s,e,t,i){var r,o;if(!e)return[];i||=[];for(let n=0;n946681200&&l<9466812e5&&(l*=1e3),l=l&&new Date(l).toString();else if(M!=null&&M.role&&typeof M.role=="string"&&M.role.match(/^value\.duration/)){if(typeof l=="number"&&l>=0){const j=Math.floor(l/3600),y=Math.floor(l%3600/60),T=Math.floor(l%60);l=`${j.toString().padStart(2,"0")}:${y.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}`}else if(typeof l=="string"&&m.isStringInteger(l)){const j=parseInt(l,10);if(j>=0){const y=Math.floor(j/3600),T=Math.floor(j%3600/60),d=Math.floor(j%60);l=`${y.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}`}}}else N==="number"?Number.isInteger(l)||(l=Math.round(l*1e8)/1e8,i&&(l=l.toString().replace(".",","))):N==="object"?l=JSON.stringify(l):N!=="string"?l=l.toString():l.startsWith("data:image/")&&(c="image"),typeof l!="string"&&(l=l.toString());const u={v:l};n&&n[l]!==void 0&&l!==n[l]&&(u.s=l,l=n[l],u.v=l),((g=u.v)==null?void 0:g.length)>40&&(u.c=u.v,u.v=`${u.v.substring(0,40)}...`),M!=null&&M.unit&&(u.u=M.unit);let L;if(s.full&&(typeof l=="string"&&l.length>100?L=[{t:r.value,v:`${l.substring(0,100)}...`}]:L=[{t:r.value,v:l}],t)){if(t.ack!==void 0&&t.ack!==null&&L.push({t:r.ack,v:t.ack.toString()}),t.ts&&L.push({t:r.ts,v:t.ts?m.formatDate(new Date(t.ts),e):""}),t.lc&&L.push({t:r.lc,v:t.lc?m.formatDate(new Date(t.lc),e):""}),t.from){let j=t.from.toString();j.startsWith("system.adapter.")&&(j=j.substring(15)),L.push({t:r.from,v:j})}if(t.user){let j=t.user.toString();j.startsWith("system.user.")&&(j=j.substring(12)),L.push({t:r.user,v:j})}t.c&&L.push({t:r.c,v:t.c}),L.push({t:r.quality,v:m.quality2text(t.q||0).join(", "),nbr:!0})}return{valText:u,valFull:L,fileViewer:c}}function W5e(s){const{state:e}=s;return{color:e!=null&&e.ack?e.q?"#ffa500":"":s.nonAckColor||"#ff2222c9"}}function J5e(s,e){let t=e,i=1;const r=[];for(;i=t)r.push(0);else if(i1){const i=e.path;let r;const o=s;if(o[i[0]]&&typeof o[i[0]]=="object")return i.length===2?r=o[i[0]][i[1]]:i.length===3?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"?o[i[0]][i[1]][i[2]]:null:i.length===4?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]?o[i[0]][i[1]][i[2]][i[3]]:null:i.length===5?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&o[i[0]][i[1]][i[2]][i[3]]?o[i[0]][i[1]][i[2]][i[3]][i[4]]:null:i.length===6&&(r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&o[i[0]][i[1]][i[2]][i[3]]&&o[i[0]][i[1]][i[2]][i[3]][i[4]]?o[i[0]][i[1]][i[2]][i[3]][i[4]][i[5]]:null),r??null}return null}function B5e(s,e,t){var i;if((i=s==null?void 0:s._id)!=null&&i.startsWith(`${e.adapter}.`)&&e.path.length>1){const r=e.path,o=s;if(o[r[0]]&&typeof o[r[0]]=="object"){if(r.length===2)return o[r[0]][r[1]]=t,!0;if(r.length===3){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object")return o[r[0]][r[1]][r[2]]=t,!0}else if(r.length===4){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object")return o[r[0]][r[1]][r[2]][r[3]]=t,!0}else if(r.length===5){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]]=t,!0}else if(r.length===6&&o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object"&&o[r[0]][r[1]][r[2]][r[3]][r[4]]&&typeof o[r[0]][r[1]][r[2]][r[3]][r[4]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]][r[5]]=t,!0}}return!1}function Z0(s){return!!v5e.find(e=>s.startsWith(e))}const R5e=16,Ie=20,Lg="#ff413c",gg="#86211f",Sa="#57ff45",ka="#098c04",va="#f3ad11",Ya="#6c5008",z={toolbar:{minHeight:38},toolbarButtons:{padding:4,marginLeft:4},switchColumnAuto:{marginLeft:16},dialogColumns:{transition:"opacity 1s"},dialogColumnsLabel:{fontSize:12,paddingTop:8},columnCustom:{width:"100%",display:"inline-block"},columnCustomEditable:{cursor:"text"},columnCustom_center:{textAlign:"center"},columnCustom_left:{textAlign:"left"},columnCustom_right:{textAlign:"right"},width100:{width:"100%"},transparent_10:{opacity:.1},transparent_20:{opacity:.2},transparent_30:{opacity:.3},transparent_40:{opacity:.4},transparent_50:{opacity:.5},transparent_60:{opacity:.6},transparent_70:{opacity:.7},transparent_80:{opacity:.8},transparent_90:{opacity:.9},transparent_100:{opacity:1},headerRow:{paddingLeft:8,height:38,whiteSpace:"nowrap",userSelect:"none"},buttonClearFilter:{position:"relative",float:"right",padding:0},buttonClearFilterIcon:{zIndex:2,position:"absolute",top:0,left:0,color:"#FF0000",opacity:.7},tableDiv:{paddingTop:0,paddingLeft:0,width:"calc(100% - 8px)",height:"calc(100% - 38px)",overflow:"auto"},tableRow:s=>({pl:1,height:$e,lineHeight:`${$e}px`,verticalAlign:"top",userSelect:"none",position:"relative",width:"100%","&:hover":{background:`${s.palette.mode==="dark"?s.palette.primary.dark:s.palette.primary.light} !important`,color:m.invertColor(s.palette.primary.main,!0)},whiteSpace:"nowrap",flexWrap:"nowrap"}),tableRowLines:s=>({borderBottom:`1px solid ${s.palette.mode==="dark","#8888882e"}`,"& > div":{borderRight:`1px solid ${s.palette.mode==="dark","#8888882e"}`}}),tableRowNoDragging:{cursor:"pointer"},tableRowAlias:{height:$e+10},tableRowAliasReadWrite:{height:$e+22},tableRowFocused:s=>({"&:after":{content:'""',position:"absolute",top:1,left:1,right:1,bottom:1,border:s.palette.mode?"1px dotted #000":"1px dotted #FFF"}}),checkBox:{padding:0},cellId:{position:"relative",fontSize:"1rem",overflow:"hidden",textOverflow:"ellipsis","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"},"& .iconOwn":{display:"block",width:$e-4,height:$e-4,mt:"2px",float:"right"},"&:hover .iconOwn":{display:"none"},"& *":{width:"initial"}},cellIdSpan:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},cellIdIconFolder:s=>({marginRight:8,width:$e-4,height:$e-4,cursor:"pointer",color:s.palette.secondary.main||"#fbff7d",verticalAlign:"top"}),cellIdIconDocument:{verticalAlign:"middle",marginLeft:($e-Ie)/2,marginRight:8,width:Ie,height:Ie},cellIdIconOwn:{},cellCopyButton:{width:Ie,height:Ie,top:($e-Ie)/2,opacity:.8,position:"absolute",right:3},cellCopyButtonInDetails:{width:Ie,height:Ie,top:($e-Ie)/2,opacity:.8},cellEditButton:{width:Ie,height:Ie,color:"white",position:"absolute",top:($e-Ie)/2,right:Ie+3,opacity:.7,"&:hover":{opacity:1}},cellName:{display:"inline-block",verticalAlign:"top",fontSize:14,ml:"5px",overflow:"hidden",textOverflow:"ellipsis",position:"relative","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellNameWithDesc:{lineHeight:"normal"},cellNameDivDiv:{},cellDescription:{fontSize:10,opacity:.5,fontStyle:"italic"},cellIdAlias:s=>({fontStyle:"italic",fontSize:12,opacity:.7,"&:hover":{color:s.palette.mode==="dark"?"#009900":"#007700"}}),cellIdAliasReadWriteDiv:{height:24,marginTop:-5},cellIdAliasAlone:{lineHeight:0},cellIdAliasReadWrite:{lineHeight:"12px"},cellType:{display:"inline-block",verticalAlign:"top","& .itemIcon":{verticalAlign:"middle",width:Li,height:Li,display:"inline-block"},"& .itemIconFolder":{marginLeft:3}},cellRole:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellRoom:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellEnumParent:{opacity:.4},cellFunc:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValue:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValueButton:{marginTop:5},cellValueButtonFalse:{opacity:.3},cellAdapter:{display:"inline-block",verticalAlign:"top"},cellValueTooltip:{fontSize:12},cellValueText:{width:"100%",height:$e,fontSize:16,display:"flex",overflow:"hidden",textOverflow:"ellipsis",position:"relative",verticalAlign:"top","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellValueFile:{color:"#2837b9"},cellValueTooltipTitle:{fontStyle:"italic",width:100,display:"inline-block"},cellValueTooltipValue:{width:120,display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis"},cellValueTooltipImage:{width:100,height:"auto"},cellValueTooltipBoth:{width:220,display:"inline-block",whiteSpace:"nowrap"},cellValueTooltipBox:{width:250,overflow:"hidden",pointerEvents:"none"},tooltip:{pointerEvents:"none"},cellValueTextUnit:{marginLeft:4,opacity:.8,display:"inline-block"},cellValueTextState:{opacity:.7},cellValueTooltipCopy:{position:"absolute",bottom:3,right:3},cellValueTooltipEdit:{position:"absolute",bottom:3,right:15},cellButtons:{display:"inline-block",verticalAlign:"top"},cellButtonsButton:{display:"inline-block",opacity:.5,width:Ie+4,height:Ie+4,"&:hover":{opacity:1},p:0,mt:"-2px"},cellButtonsEmptyButton:{fontSize:12},cellButtonMinWidth:{minWidth:40},cellButtonsButtonAlone:{ml:`${Ie+6}px`,pt:0,mt:"-2px"},cellButtonsButtonWithCustoms:s=>({color:s.palette.mode==="dark"?s.palette.primary.main:s.palette.secondary.main}),cellButtonsButtonWithoutCustoms:{opacity:.2},cellButtonsValueButton:s=>({position:"absolute",top:Ie/2-2,opacity:.7,width:Ie-2,height:Ie-2,color:s.palette.action.active,"&:hover":{opacity:1}}),cellButtonsValueButtonCopy:{right:8,cursor:"pointer"},cellButtonsValueButtonEdit:{right:Ie/2+16},cellDetailsLine:{display:"flex",alignItems:"center",width:"100%",height:32,fontSize:16},cellDetailsName:{fontWeight:"bold",marginRight:8,minWidth:80},filteredOut:{opacity:.5},filteredParentOut:{opacity:.3},filterInput:{mt:0,mb:0},selectIcon:{width:24,height:24,marginRight:4},itemSelected:s=>({background:`${s.palette.primary.main} !important`,color:`${m.invertColor(s.palette.primary.main,!0)} !important`}),header:{width:"100%"},headerCell:{display:"inline-block",verticalAlign:"top"},headerCellValue:{paddingTop:4,fontSize:16},visibleButtons:{color:"#2196f3",opacity:.7},grow:{flexGrow:1},enumIconDiv:{marginRight:8,width:32,height:32,borderRadius:8,background:"#FFFFFF"},enumIcon:{marginTop:4,marginLeft:4,width:24,height:24},enumDialog:{overflow:"hidden"},enumList:{minWidth:250,height:"calc(100% - 50px)",overflow:"auto"},enumCheckbox:{minWidth:0},buttonDiv:{display:"flex",height:"100%",alignItems:"center"},aclText:{fontSize:13,marginTop:6},rightsObject:{color:"#55ff55",paddingLeft:3},rightsState:{color:"#86b6ff",paddingLeft:3},textCenter:{padding:12,textAlign:"center"},tooltipAccessControl:{display:"flex",flexDirection:"column"},fontSizeTitle:{"@media screen and (max-width: 465px)":{"& *":{fontSize:12}}},draggable:{cursor:"copy"},nonDraggable:{cursor:"no-drop"},iconDeviceConnected:s=>({color:s.palette.mode==="dark"?Sa:ka,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceDisconnected:s=>({color:s.palette.mode==="dark"?va:Ya,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceError:s=>({color:s.palette.mode==="dark"?Lg:gg,opacity:.8,position:"absolute",top:4,right:50,width:20}),resizeHandle:{display:"block",position:"absolute",cursor:"col-resize",width:7,top:2,bottom:2,zIndex:1},resizeHandleRight:{right:3,borderRight:"2px dotted #888","&:hover":{borderColor:"#ccc",borderRightStyle:"solid"},"&.active":{borderColor:"#517ea5",borderRightStyle:"solid"}},invertedBackground:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",padding:"0 3px",borderRadius:"2px 0 0 2px"}),invertedBackgroundFlex:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",borderRadius:"0 2px 2px 0"}),contextMenuEdit:s=>({color:s.palette.mode==="dark"?"#ffee48":"#cbb801"}),contextMenuEditValue:s=>({color:s.palette.mode==="dark"?"#5dff45":"#1cd301"}),contextMenuView:s=>({color:s.palette.mode==="dark"?"#FFF":"#000"}),contextMenuCustom:s=>({color:s.palette.mode==="dark"?"#42eaff":"#01bbc2"}),contextMenuACL:s=>({color:s.palette.mode==="dark"?"#e079ff":"#500070"}),contextMenuRoom:s=>({color:s.palette.mode==="dark"?"#ff9a33":"#642a00"}),contextMenuRole:s=>({color:s.palette.mode==="dark"?"#ffdb43":"#562d00"}),contextMenuDelete:s=>({color:s.palette.mode==="dark"?"#ff4f4f":"#cf0000"}),contextMenuKeys:{marginLeft:8,opacity:.7,fontSize:"smaller"},contextMenuWithSubMenu:{display:"flex"},...ss},X0={state:a.createElement(rr,{className:"itemIcon",style:{verticalAlign:"middle"}}),channel:a.createElement(sg,{className:"itemIcon",style:{verticalAlign:"middle"}}),device:a.createElement(ig,{className:"itemIcon",style:{verticalAlign:"middle"}}),adapter:a.createElement(A5e,{className:"itemIcon",style:{verticalAlign:"middle"}}),meta:a.createElement(Yo,{className:"itemIcon",style:{verticalAlign:"middle"}}),instance:a.createElement(O5e,{className:"itemIcon",style:{color:"#7da7ff",verticalAlign:"middle"}}),enum:a.createElement(ay,{className:"itemIcon",style:{verticalAlign:"middle"}}),chart:a.createElement(Ly,{className:"itemIcon",style:{verticalAlign:"middle"}}),config:a.createElement(qn,{className:"itemIcon",style:{verticalAlign:"middle"}}),group:a.createElement(rM,{className:"itemIcon",style:{verticalAlign:"middle"}}),user:a.createElement(sM,{className:"itemIcon",style:{verticalAlign:"middle"}}),host:a.createElement(iM,{className:"itemIcon",style:{verticalAlign:"middle"}}),schedule:a.createElement(Bj,{className:"itemIcon",style:{verticalAlign:"middle"}}),script:a.createElement(qa,{className:"itemIcon",style:{verticalAlign:"middle"}}),folder:a.createElement(Ti,{className:"itemIcon itemIconFolder",style:{verticalAlign:"middle"}})},ze={xs:{idWidth:"100%",fields:[],widths:{}},sm:{idWidth:300,fields:["room","val"],widths:{room:100,val:200}},md:{idWidth:300,fields:["room","func","val","buttons"],widths:{name:200,room:150,func:150,val:120,buttons:120}},lg:{idWidth:300,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:300,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:165,lastChange:165}},xl:{idWidth:550,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:400,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:170,lastChange:170}}};let K0=!1;const Fs={id:"",name:"",room:[],func:[],role:[],type:[],custom:[],expertMode:!1};class xo extends De{info={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:{},customs:[],enums:[],hasSomeCustoms:!1,aliasesMap:{}};localStorage=window._localStorage||window.localStorage;tableRef;pausedSubscribes=!1;selectFirst;root=null;states={};subscribes=[];unsubscribeTimer=null;statesUpdateTimer=null;objectsUpdateTimer=null;visibleCols;texts;possibleCols;imagePrefix;adapterColumns=[];styleTheme="";edit={id:"",val:"",q:0,ack:!1};levelPadding;customWidth=!1;resizeTimeout=null;resizerNextName=null;resizerActiveName=null;resizerCurrentWidths={};resizeLeft=!1;resizerOldWidth=0;resizerMin=0;resizerNextMin=0;resizerOldWidthNext=0;resizerPosition=0;resizerActiveDiv=null;resizerNextDiv=null;storedWidths=null;systemConfig;objects;defaultHistory="";ctrlPressed=!1;columnsVisibility={};changedIds=null;contextMenu=null;recordStates=[];styles={};expertMode=!1;customColumnDialog=null;constructor(e){super(e);const t=this.localStorage.getItem(`${e.dialogName||"App"}.objectSelected`)||"";if(this.selectFirst="",this.expertMode=!!this.props.expertMode,t.startsWith("["))try{const T=JSON.parse(t);this.selectFirst=T[0]||""}catch{}else this.selectFirst=t;let i;const r=this.localStorage.getItem(`${e.dialogName||"App"}.objectExpanded`)||"[]";try{i=JSON.parse(r)}catch{i=[]}let o;const n=e.defaultFilters?"":this.localStorage.getItem(`${e.dialogName||"App"}.objectFilter`)||"";if(n)try{o=JSON.parse(n)}catch{o={...Fs}}else e.defaultFilters&&typeof e.defaultFilters=="object"?o={...e.defaultFilters}:o={...Fs};if(typeof o.room=="string"&&o.room&&(o.room=[o.room].filter(T=>T),o.room.length||delete o.room),typeof o.func=="string"&&o.func&&(o.func=[o.func].filter(T=>T),o.func.length||delete o.func),typeof o.role=="string"&&o.role&&(o.role=[o.role].filter(T=>T),o.role.length||delete o.role),typeof o.type=="string"&&(o.type=[o.type].filter(T=>T),o.type.length||delete o.type),typeof o.custom=="string"&&(o.custom=[o.custom].filter(T=>T),o.custom.length||delete o.custom),o.expertMode=e.expertMode!==void 0?e.expertMode:(window._sessionStorage||window.sessionStorage).getItem("App.expertMode")==="true",this.tableRef=IN(),this.visibleCols=e.columns||ze[e.width||"lg"].fields,e.types&&e.types.length===1){const T=this.visibleCols.indexOf("type");T!==-1&&this.visibleCols.splice(T,1)}this.possibleCols=ze.xl.fields;let M=null;if(e.router){const T=e.router.getLocation();T.id&&T.dialog==="customs"&&(M=[T.id],this.pauseSubscribe(!0))}let c;Array.isArray(e.selected)?c=e.selected:c=[e.selected||""],c=c.map(T=>T.replace(/["']/g,"")).filter(T=>T),this.selectFirst=c.length&&c[0]?c[0]:this.selectFirst;const l=this.localStorage.getItem(`${e.dialogName||"App"}.columns`);let N;try{N=l?JSON.parse(l):null}catch{N=null}let u=null;try{u=u?JSON.parse(u):{}}catch{u={}}this.imagePrefix=e.imagePrefix||".";let L;const g=this.localStorage.getItem(`${e.dialogName||"App"}.foldersFirst`);g==="false"?L=!1:g==="true"?L=!0:L=e.foldersFirst===void 0?!0:e.foldersFirst;let j=!1;try{j=this.props.objectStatesView&&JSON.parse(this.localStorage.getItem(`${e.dialogName||"App"}.objectStatesView`)||"")||!1}catch{}this.state={aliasMenu:"",beautifyJsonExport:!0,columns:N,columnsAuto:this.localStorage.getItem(`${e.dialogName||"App"}.columnsAuto`)!=="false",columnsDialogTransparent:100,columnsEditCustomDialog:null,columnsForAdmin:null,columnsSelectorShow:!1,columnsWidths:u,customColumnDialogValueChanged:!1,customDialog:M,depth:0,editObjectAlias:!1,editObjectDialog:"",enumDialog:null,excludeSystemRepositoriesFromExport:!0,excludeTranslations:!1,expandAllVisible:!1,expanded:i,filter:o,filterKey:0,focused:this.localStorage.getItem(`${e.dialogName||"App"}.focused`)||"",foldersFirst:L,linesEnabled:this.localStorage.getItem(`${e.dialogName||"App"}.lines`)==="true",loaded:!1,noStatesByExportImport:!1,roleDialog:null,scrollBarWidth:16,selected:c,selectedNonObject:this.localStorage.getItem(`${e.dialogName||"App"}.selectedNonObject`)||"",showAliasEditor:"",showAllExportOptions:!1,showContextMenu:null,showDescription:this.localStorage.getItem(`${e.dialogName||"App"}.desc`)!=="false",showExportDialog:!1,showImportDialog:!1,showImportMenu:null,showRenameDialog:null,statesView:j,toast:"",tooltipInfo:null,viewFileDialog:""},this.texts={name:e.t("ra_Name"),categories:e.t("ra_Categories"),value:e.t("ra_tooltip_value"),ack:e.t("ra_tooltip_ack"),ts:e.t("ra_tooltip_ts"),lc:e.t("ra_tooltip_lc"),from:e.t("ra_tooltip_from"),user:e.t("ra_tooltip_user"),c:e.t("ra_tooltip_comment"),quality:e.t("ra_tooltip_quality"),editObject:e.t("ra_tooltip_editObject"),deleteObject:e.t("ra_tooltip_deleteObject"),customConfig:e.t("ra_tooltip_customConfig"),copyState:e.t("ra_tooltip_copyState"),editState:e.t("ra_tooltip_editState"),ctrlForLink:e.t("ra_tooltip_ctrlForLink"),close:e.t("ra_Close"),filter_id:e.t("ra_filter_id"),filter_name:e.t("ra_filter_name"),filter_type:e.t("ra_filter_type"),filter_role:e.t("ra_filter_role"),filter_room:e.t("ra_filter_room"),filter_func:e.t("ra_filter_func"),filter_custom:e.t("ra_filter_customs"),filterCustomsWithout:e.t("ra_filter_customs_without"),objectChangedByUser:e.t("ra_object_changed_by_user"),objectChangedBy:e.t("ra_object_changed_by"),objectChangedFrom:e.t("ra_state_changed_from"),stateChangedBy:e.t("ra_state_changed_by"),stateChangedFrom:e.t("ra_state_changed_from"),ownerGroup:e.t("ra_Owner group"),ownerUser:e.t("ra_Owner user"),showAll:e.t("ra_show_all"),deviceError:e.t("ra_Error"),deviceDisconnected:e.t("ra_Disconnected"),deviceConnected:e.t("ra_Connected"),aclOwner_read_object:e.t("ra_aclOwner_read_object"),aclOwner_read_state:e.t("ra_aclOwner_read_state"),aclOwner_write_object:e.t("ra_aclOwner_write_object"),aclOwner_write_state:e.t("ra_aclOwner_write_state"),aclGroup_read_object:e.t("ra_aclGroup_read_object"),aclGroup_read_state:e.t("ra_aclGroup_read_state"),aclGroup_write_object:e.t("ra_aclGroup_write_object"),aclGroup_write_state:e.t("ra_aclGroup_write_state"),aclEveryone_read_object:e.t("ra_aclEveryone_read_object"),aclEveryone_read_state:e.t("ra_aclEveryone_read_state"),aclEveryone_write_object:e.t("ra_aclEveryone_write_object"),aclEveryone_write_state:e.t("ra_aclEveryone_write_state"),create:e.t("ra_Create"),createBooleanState:e.t("ra_create_boolean_state"),createNumberState:e.t("ra_create_number_state"),createStringState:e.t("ra_create_string_state"),createState:e.t("ra_create_state"),createChannel:e.t("ra_create_channel"),createDevice:e.t("ra_create_device"),createFolder:e.t("ra_Create folder")},this.levelPadding=e.levelPadding||R5e;const y=this.localStorage.getItem(`${this.props.dialogName||"App"}.table`);if(y)try{const T=JSON.parse(y),d=this.props.width||"lg";this.storedWidths=JSON.parse(JSON.stringify(ze[d])),Object.keys(T).forEach(I=>{I==="id"?ze[d].idWidth=T.id:I==="nameHeader"?ze[d].widths.name=T[I]:ze[d].widths[I]!==void 0&&(ze[d].widths[I]=T[I])}),this.customWidth=!0}catch{}this.calculateColumnsVisibility()}async loadAllObjects(e){var i;const t=this.props;try{await new Promise(l=>{this.setState({updating:!0},()=>l())});const r=(t.objectsWorker?await t.objectsWorker.getObjects(e):await t.socket.getObjects(e,!0))||{};if(t.types&&ke.isWeb())for(let l=0;l{try{if(l(r[N]))this.objects[N]=r[N];else{const u=r[N]&&r[N].type;u&&(u==="channel"||u==="device"||u==="folder"||u==="adapter"||u==="instance")&&(this.objects[N]=r[N])}}catch(u){console.log(`Error by filtering of "${N}": ${u}`)}})}else if(t.types){this.objects={};const l=t.types;Object.keys(r).forEach(N=>{var L;const u=(L=r[N])==null?void 0:L.type;u&&(u==="channel"||u==="device"||u==="enum"||u==="folder"||u==="adapter"||u==="instance"||l.includes(u))&&(this.objects[N]=r[N])})}else this.objects=r;t.setObjectsReference&&t.setObjectsReference(this.objects),this.defaultHistory=this.systemConfig.common.defaultHistory,this.defaultHistory&&t.socket.getState(`system.adapter.${this.defaultHistory}.alive`).then(l=>{l!=null&&l.val||(this.defaultHistory="")}).catch(l=>window.alert(`Cannot get state: ${l}`));const o=await this.getAdditionalColumns();this.calculateColumnsVisibility(null,null,o);const{info:n,root:M}=H0(this.objects,{imagePrefix:t.imagePrefix,root:t.root,lang:t.lang,themeType:t.themeType});this.root=M,this.info=n;const c=((i=this.state.selected)==null?void 0:i.length)&&ug(this.root,this.state.selected[0]);c&&!xa(c,this.state.filter,t.lang,this.objects,void 0,void 0,t.customFilter,t.types)?this.setState({filter:{...Fs},columnsForAdmin:o},()=>{this.doFilter(),this.setState({loaded:!0,updating:!1},()=>this.expandAllSelected(()=>this.onAfterSelect()))}):(this.doFilter(),this.setState({loaded:!0,updating:!1,columnsForAdmin:o},()=>this.expandAllSelected(()=>this.onAfterSelect())))}catch(r){this.showError(r)}}expandAllSelected(e){const t=[...this.state.expanded];let i=!1;this.state.selected.forEach(r=>{const o=r.split("."),n=[];for(let M=0;M!this.objects[N]))&&((c=(M=this.props).onSelect)==null||c.call(M,this.state.selected,null,e))}else this.localStorage.removeItem(`${this.props.dialogName||"App"}.objectSelected`),this.state.selected.length?this.setState({selected:[]},()=>{this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}):this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}static getDerivedStateFromProps(e,t){const i={};let r=!1;return e.expertMode!==void 0&&e.expertMode!==t.filter.expertMode&&(r=!0,i.filter={...t.filter},i.filter.expertMode=e.expertMode),r?i:null}async componentDidMount(){await this.loadAllObjects(!K0),this.props.objectsWorker?this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker):await this.props.socket.subscribeObject("*",this.onObjectChange),K0=!0,window.addEventListener("contextmenu",this.onContextMenu,!0),window.addEventListener("keydown",this.onKeyPress,!0),window.addEventListener("keyup",this.onKeyPress,!0),this.props.onAllLoaded&&setTimeout(()=>{var e,t;(t=(e=this.props).onAllLoaded)==null||t.call(e)},100)}onKeyPress=e=>{e.type==="keydown"&&e.ctrlKey&&!this.ctrlPressed?(this.ctrlPressed=!0,this.tableRef.current&&(this.tableRef.current.className="highlight-link")):e.type==="keyup"&&!e.ctrlKey&&this.ctrlPressed&&(this.ctrlPressed=!1,this.tableRef.current&&(this.tableRef.current.className=""))};componentWillUnmount(){window.removeEventListener("contextmenu",this.onContextMenu,!0),window.removeEventListener("keydown",this.onKeyPress,!0),window.removeEventListener("keyup",this.onKeyPress,!0),this.props.objectsWorker?this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker,!0):this.props.socket.unsubscribeObject("*",this.onObjectChange).catch(e=>console.error(`Cannot unsubscribe *: ${e}`)),this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.objects={}}showDeleteDialog(e){var c,l,N,u;const{id:t,obj:i,item:r}=e,o=Object.keys(this.objects);o.sort();let n=0;const M=`${t}.`;for(let L=0;LM)break;(u=(N=this.props).onObjectDelete)==null||u.call(N,t,!!((c=r.children)!=null&&c.length),!((l=i.common)!=null&&l.dontDelete),n+1)}onContextMenu=e=>{this.contextMenu&&Date.now()-this.contextMenu.ts<2e3?(e.preventDefault(),this.setState({showContextMenu:{item:this.contextMenu.item,position:{left:e.clientX+2,top:e.clientY-6}}})):this.state.showContextMenu&&(e.preventDefault(),this.setState({showContextMenu:null})),this.contextMenu=null};refreshComponent(){this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.loadAllObjects(!0).then(()=>console.log("updated!")).catch(e=>this.showError(e))}renderErrorDialog(){return this.state.error?a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:!0,onClose:()=>this.setState({error:""}),"aria-labelledby":"error-dialog-title","aria-describedby":"error-dialog-description"},a.createElement(fe,{id:"alert-dialog-title"},this.props.t("ra_Error")),a.createElement(_e,null,a.createElement(as,{id:"alert-dialog-description"},this.state.error)),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.setState({error:""}),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},this.props.t("ra_Ok")))):null}showError(e){this.setState({error:typeof e=="object"?e&&typeof e.toString=="function"?e.toString():JSON.stringify(e):e})}onSelect(e,t,i){if(this.localStorage.setItem(`${this.props.dialogName||"App"}.focused`,e),!this.props.multiSelect)this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))?(this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`),this.state.selected[0]!==e?this.setState({selected:[e],selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),i&&i()}):t&&this.props.onSelect&&this.onAfterSelect(t)):(this.localStorage.setItem(`${this.props.dialogName||"App"}.selectedNonObject`,e),this.setState({selected:[],selectedNonObject:e,focused:e},()=>{this.onAfterSelect(),i&&i()}));else if(this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))){this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`);const r=[...this.state.selected],o=r.indexOf(e);o===-1?(r.push(e),r.sort()):t||r.splice(o,1),this.setState({selected:r,selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),i&&i()})}}_renderDefinedList(e){const t=[...this.possibleCols];if(t.unshift("id"),this.props.columns&&!this.props.columns.includes("buttons")){const i=t.indexOf("buttons");i!==-1&&t.splice(i,1)}return t.filter(i=>e&&(i==="val"||i==="buttons")||!e&&i!=="val"&&i!=="buttons").map(i=>{var r;return a.createElement(_c,{onClick:()=>{if(!this.state.columnsAuto&&i!=="id"){const o=[...this.state.columns||[]],n=o.indexOf(i);n===-1?(o.push(i),o.sort()):o.splice(n,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.calculateColumnsVisibility(null,o),this.setState({columns:o})}},key:i},a.createElement(ue,{edge:"start",disabled:i==="id"||this.state.columnsAuto,checked:i==="id"||!!(this.state.columnsAuto?this.visibleCols.includes(i):(r=this.state.columns)!=null&&r.includes(i)),disableRipple:!0}),a.createElement(dt,{primary:this.texts[`filter_${i}`]||this.props.t(`ra_${i}`)}))})}renderColumnsSelectorDialog(){return this.state.columnsSelectorShow?a.createElement(Ae,{onClose:()=>this.setState({columnsSelectorShow:!1}),open:!0,sx:{"& .MuiPaper-root":m.getStyle(this.props.theme,z.dialogColumns,z[`transparent_${this.state.columnsDialogTransparent}`])}},a.createElement(fe,{sx:z.fontSizeTitle},this.props.t("ra_Configure")),a.createElement(_e,{sx:z.fontSizeTitle},a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.foldersFirst,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.foldersFirst`,this.state.foldersFirst?"false":"true"),this.setState({foldersFirst:!this.state.foldersFirst})}}),label:this.props.t("ra_Folders always first")}),a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.linesEnabled,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.lines`,this.state.linesEnabled?"false":"true"),this.setState({linesEnabled:!this.state.linesEnabled})}}),label:this.props.t("ra_Show lines between rows")}),a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.columnsAuto,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.columnsAuto`,this.state.columnsAuto?"false":"true"),this.state.columnsAuto?this.state.columns?(this.calculateColumnsVisibility(!1),this.setState({columnsAuto:!1})):(this.calculateColumnsVisibility(!1,[...this.visibleCols]),this.setState({columnsAuto:!1,columns:[...this.visibleCols]})):(this.calculateColumnsVisibility(!0),this.setState({columnsAuto:!0}))}}),label:this.props.t("ra_Auto (no custom columns)")}),a.createElement(xc,null,this._renderDefinedList(!1),this.state.columnsForAdmin&&Object.keys(this.state.columnsForAdmin).sort().map(e=>{var t;return(t=this.state.columnsForAdmin)==null?void 0:t[e].map(i=>{var r;return a.createElement(_c,{onClick:()=>{if(!this.state.columnsAuto){const o=[...this.state.columns||[]],n=`_${e}_${i.path}`,M=o.indexOf(n);M===-1?(o.push(n),o.sort()):o.splice(M,1),this.calculateColumnsVisibility(null,o),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.setState({columns:o})}},key:`${e}_${i.name}`},a.createElement(Xt,null,a.createElement(ue,{disabled:this.state.columnsAuto,edge:"start",checked:!this.state.columnsAuto&&((r=this.state.columns)==null?void 0:r.includes(`_${e}_${i.path}`)),disableRipple:!0})),a.createElement(dt,{primary:`${i.name} (${e})`}))})}),this._renderDefinedList(!0))),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.setState({columnsSelectorShow:!1}),color:"primary",startIcon:a.createElement(we,null)},this.texts.close))):null}async getAdditionalColumns(){try{const e=await this.props.socket.getAdapters();let t=null;return e.forEach(i=>t=this.parseObjectForAdmins(t,i)),t}catch(e){return console.error(`Cannot get adapters: ${e}`),null}}checkUnsubscribes(){for(let e=this.subscribes.length-1;e>=0;e--)this.recordStates.includes(this.subscribes[e])||this.unsubscribe(this.subscribes[e]);this.recordStates=[]}findItem(e,t,i,r){if(t||=e.split("."),i||=this.root,!i||!t.length)return null;if(r=(r?`${r}.`:"")+t.shift(),i.children){const o=i.children.find(n=>n.data.id===r);if(o){if(o.data.id===e)return o;if(t.length)return this.findItem(e,t,o,r)}else return null}return null}onStateChange=(e,t)=>{if(this.states[e]){const i=this.findItem(e);i!=null&&i.data.state&&(i.data.state=void 0)}t?this.states[e]=t:delete this.states[e],this.pausedSubscribes?this.statesUpdateTimer&&(clearTimeout(this.statesUpdateTimer),this.statesUpdateTimer=null):this.statesUpdateTimer||(this.statesUpdateTimer=setTimeout(()=>{this.statesUpdateTimer=null,this.forceUpdate()},300))};parseObjectForAdmins(e,t){var i;if((i=t.common)!=null&&i.adminColumns&&t.common.name){const r=t.common.adminColumns;let o;r&&typeof r!="object"?o=[r]:r&&(o=r);let n;r?n=o.map(M=>{if(typeof M!="object")return{path:M,name:M.split(".").pop()};const c=M;return c.objTypes&&typeof c.objTypes!="object"?c.objTypes=[c.objTypes]:c.objTypes||(c.objTypes=void 0),!c.name&&c.path?{path:c.path,name:c.path.split(".").pop(),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:c.path?{path:c.path,name:He(c.name||"",this.props.lang),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:(console.warn(`Admin columns for ${t._id} ignored, because path not found`),null)}).filter(M=>M):n=null,n!=null&&n.length&&(e||={},e[t.common.name]=n.sort((M,c)=>M.path>c.path?-1:M.path{if(Array.isArray(e)){let t=null;e.forEach(i=>{const{newInnerState:r,filtered:o}=this.processOnObjectChangeElement(i.id,i.obj);o||(r&&t?Object.assign(t,r):t=r)}),t&&this.setState(t),this.afterObjectUpdated()}};onObjectChange=(e,t)=>{const{newInnerState:i,filtered:r}=this.processOnObjectChangeElement(e,t);r||(i&&this.setState(i),this.afterObjectUpdated())};afterObjectUpdated(){!this.objectsUpdateTimer&&this.objects&&(this.objectsUpdateTimer=setTimeout(()=>{this.objectsUpdateTimer=null;const{info:e,root:t}=H0(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=t,this.info=e,this.pausedSubscribes||this.doFilter()},500))}updateAliases(e){var i,r,o;if(!this.objects||!((i=this.info)!=null&&i.aliasesMap)||!(e!=null&&e.startsWith("alias.")))return;const t=Object.keys(this.objects).filter(n=>n.startsWith("alias.0"));this.info.aliasesMap={};for(const n of t){const M=this.objects[n];if((o=(r=M==null?void 0:M.common)==null?void 0:r.alias)!=null&&o.id)if(typeof M.common.alias.id=="string"){const c=M.common.alias.id;this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(n)||this.info.aliasesMap[c].push(n):this.info.aliasesMap[c]=[n]}else{const c=M.common.alias.id.read;c&&(this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(n)||this.info.aliasesMap[c].push(n):this.info.aliasesMap[c]=[n]);const l=M.common.alias.id.write;l&&(this.info.aliasesMap[l]?this.info.aliasesMap[l].includes(n)||this.info.aliasesMap[l].push(n):this.info.aliasesMap[l]=[n])}}}processOnObjectChangeElement(e,t){const i=t==null?void 0:t.type;if(t&&typeof this.props.filterFunc=="function"&&!this.props.filterFunc(t)&&i!=="channel"&&i!=="device"&&i!=="folder"&&i!=="adapter"&&i!=="instance")return{newInnerState:null,filtered:!0};let r=null;if(e.startsWith("system.adapter.")&&(t==null?void 0:t.type)==="adapter"){const o=JSON.parse(JSON.stringify(this.state.columnsForAdmin));this.parseObjectForAdmins(o,t),JSON.stringify(this.state.columnsForAdmin)!==JSON.stringify(o)&&(r={columnsForAdmin:o})}return this.objects||={},t?this.objects[e]=t:this.objects[e]&&delete this.objects[e],this.updateAliases(e),{newInnerState:r,filtered:!1}}subscribe(e){this.subscribes.includes(e)||(this.subscribes.push(e),this.pausedSubscribes||this.props.socket.subscribeState(e,this.onStateChange).catch(t=>console.error(`Cannot subscribe on state ${e}: ${t}`)))}unsubscribe(e){const t=this.subscribes.indexOf(e);t!==-1&&(this.subscribes.splice(t,1),this.states[e]&&delete this.states[e],this.props.socket.unsubscribeState(e,this.onStateChange),this.pausedSubscribes&&console.warn("Unsubscribe during pause?"))}pauseSubscribe(e){!this.pausedSubscribes&&e?(this.pausedSubscribes=!0,this.subscribes.forEach(t=>this.props.socket.unsubscribeState(t,this.onStateChange))):this.pausedSubscribes&&!e&&(this.pausedSubscribes=!1,this.subscribes.forEach(t=>this.props.socket.subscribeState(t,this.onStateChange)))}clearFilter(){JSON.stringify(this.state.filter)!==JSON.stringify(Fs)&&this.setState({filter:{...Fs},filterKey:this.state.filterKey+1},()=>{var e,t;this.doFilter(),(t=(e=this.props).onFilterChanged)==null||t.call(e,{...Fs})})}isFilterEmpty(){var e,t,i,r,o;return!!this.state.filter.id||!!this.state.filter.name||!!((e=this.state.filter.room)!=null&&e.length)||!!((t=this.state.filter.func)!=null&&t.length)||!!((i=this.state.filter.role)!=null&&i.length)||!!((r=this.state.filter.type)!=null&&r.length)||!!((o=this.state.filter.custom)!=null&&o.length)}getFilterInput(e){return a.createElement($5e,{key:`${e}_${this.state.filterKey}`,styles:this.styles.filterInput,name:e,texts:this.texts,t:this.props.t,initialValue:this.state.filter[e],onChange:(t,i)=>{const r={...this.state.filter};i===void 0?delete r[t]:r[t]=i,this.setState({filter:r},()=>{var o,n;this.doFilter(),(n=(o=this.props).onFilterChanged)==null||n.call(o,r)})}})}getFilterSelect(e,t){return a.createElement(U5e,{key:`${e}_${this.state.filterKey}`,name:e,texts:this.texts,initialValue:this.state.filter[e]||[],values:t,onChange:(i,r)=>{const o={...this.state.filter};r===void 0?delete o[i]:o[i]=r,this.setState({filter:o},()=>{var n,M;this.doFilter(),(M=(n=this.props).onFilterChanged)==null||M.call(n,o)})}})}getFilterSelectRole(){return this.getFilterSelect("role",this.info.roles.map(e=>e.role))}getFilterSelectRoom(){const e=this.info.roomEnums.map(t=>{var i,r,o,n;return{name:He((r=(i=this.objects[t])==null?void 0:i.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(be,{src:((n=(o=this.objects[t])==null?void 0:o.common)==null?void 0:n.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("room",e)}getFilterSelectFunction(){const e=this.info.funcEnums.map(t=>{var i,r,o,n;return{name:He((r=(i=this.objects[t])==null?void 0:i.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(be,{src:((n=(o=this.objects[t])==null?void 0:o.common)==null?void 0:n.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("func",e)}getFilterSelectType(){const e=this.info.types.map(t=>({name:t,value:t,icon:X0[t]||null}));return this.getFilterSelect("type",e)}getFilterSelectCustoms(){if(this.info.customs.length>1){const e=this.info.customs.map(t=>({name:t==="_"?this.texts.filterCustomsWithout:t,value:t,icon:t==="_"?null:a.createElement(be,{src:_o(this.objects,t,this.props.lang,this.imagePrefix)||"",style:z.selectIcon})}));return this.getFilterSelect("custom",e)}return null}onExpandAll(e,t){var r;const i=e||this.root;t||=[],(r=i==null?void 0:i.children)==null||r.forEach(o=>{o.data.sumVisibility&&(t.push(o.data.id),this.onExpandAll(o,t))}),i===this.root&&(t.sort(),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t}))}onCollapseAll(){this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify([])),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,"[]"),this.setState({expanded:[],depth:0,selected:[]},()=>this.onAfterSelect())}expandDepth(e,t,i){var r;e||=this.root,t>0&&((r=e.children)==null||r.forEach(o=>{o.data.sumVisibility&&(jr(i,o.data.id)||(i.push(o.data.id),i.sort()),t-1>0&&this.expandDepth(o,t-1,i))}))}static collapseDepth(e,t){return t.filter(i=>i.split(".").length<=e)}onExpandVisible(){if(this.state.depth<9){const e=this.state.depth+1,t=[...this.state.expanded];this.root&&this.expandDepth(this.root,e,t),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}onStatesViewVisible(){const e=!this.state.statesView;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectStatesView`,JSON.stringify(e)),this.setState({statesView:e})}onCollapseVisible(){if(this.state.depth>0){const e=this.state.depth-1,t=xo.collapseDepth(e,this.state.expanded);this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}getEnumsForId=e=>{const t=[];return this.info.enums.forEach(i=>{var r,o,n;if((n=(o=(r=this.objects[i])==null?void 0:r.common)==null?void 0:o.members)!=null&&n.includes(e)){const M={_id:this.objects[i]._id,common:JSON.parse(JSON.stringify(this.objects[i].common)),native:this.objects[i].native,type:"enum"};M.common&&(delete M.common.members,delete M.common.custom,delete M.common.mobile),t.push(M)}}),t.length?t:void 0};_createAllEnums=async(e,t)=>{var i,r;for(let o=0;or)break}return e}return[]}async _exportObjects(e){var o;if(e.isAll){F0("allObjects.json",this.objects,e);return}if(!(this.state.selected.length||this.state.selectedNonObject)){window.alert(this.props.t("ra_Save of objects-tree is not possible"));return}const t={},i=this.state.selected[0]||this.state.selectedNonObject,r=this._getSelectedIdsForExport();for(const n of r){if(t[n]=JSON.parse(JSON.stringify(this.objects[n])),((o=t[n])==null?void 0:o.type)==="state"&&!e.noStatesByExportImport){const M=await this.props.socket.getState(n);M&&(t[n].val=M.val,t[n].ack=M.ack)}if(t[n].common){const M=this.getEnumsForId(n);M&&(t[n].common.enums=M)}}F0(`${i}.json`,t,e)}renderExportDialog(){return this.state.showExportDialog===!1?null:a.createElement(Ae,{open:!0,maxWidth:"lg"},a.createElement(fe,null,this.props.t("ra_Select type of export")),a.createElement(_e,null,a.createElement(as,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(a.Fragment,null,this.props.t("ra_You can export all objects or just the selected branch."),a.createElement("br",null),this.props.t("ra_Selected %s object(s)",this.state.showExportDialog),a.createElement("br",null),a.createElement(V,{control:a.createElement(ue,{checked:this.state.noStatesByExportImport,onChange:e=>this.setState({noStatesByExportImport:e.target.checked})}),label:this.props.t("ra_Do not export values of states")}),a.createElement("br",null),this.props.t("These options can reduce the size of the export file:"),a.createElement(V,{control:a.createElement(ue,{checked:this.state.beautifyJsonExport,onChange:e=>this.setState({beautifyJsonExport:e.target.checked})}),label:this.props.t("Beautify JSON output")}),a.createElement("br",null),a.createElement(V,{control:a.createElement(ue,{checked:this.state.excludeSystemRepositoriesFromExport,onChange:e=>this.setState({excludeSystemRepositoriesFromExport:e.target.checked})}),label:this.props.t("Exclude system repositories from export JSON")}),a.createElement(V,{control:a.createElement(ue,{checked:this.state.excludeTranslations,onChange:e=>this.setState({excludeTranslations:e.target.checked})}),label:this.props.t("Exclude translations (except english) from export JSON")})):null)),a.createElement(xe,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(q,{color:"grey",variant:"outlined",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!0,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_All objects")),"(",Object.keys(this.objects).length,")"):a.createElement(q,{color:"grey",variant:"outlined",startIcon:a.createElement(Oa,null),onClick:()=>this.setState({showAllExportOptions:!0})},this.props.t("ra_Advanced options")),a.createElement(q,{color:"primary",variant:"contained",autoFocus:!0,onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!1,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_Only selected")),"(",this.state.showExportDialog,")"),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1}),startIcon:a.createElement(we,null)},this.props.t("ra_Cancel"))))}renderRenameDialog(){var t;if(!this.state.showRenameDialog)return null;const e=this.props.objectMoveRenameDialog;return a.createElement(e,{expertMode:this.props.expertMode,onClose:()=>this.setState({showRenameDialog:null}),id:this.state.showRenameDialog.id,childrenIds:this.state.showRenameDialog.childrenIds,theme:this.props.theme,socket:this.props.socket,t:this.props.t,objectType:(t=this.objects[this.state.showRenameDialog.id])==null?void 0:t.type})}async parseJsonFile(e){try{const t=JSON.parse(e),i=Object.keys(t).length,r=t._id;if(r===void 0&&i)await this.loadObjects(t),window.alert(this.props.t("ra_%s object(s) processed",i));else{if(!r)return window.alert(this.props.t("ra_Invalid structure"));try{let o,n,M;if(t.common.enums&&(o=t.common.enums,delete t.common.enums),t.val&&(n=t.val,delete t.val),t.ack!==void 0&&(M=t.ack,delete t.ack),await this.props.socket.setObject(t._id,t),t.type==="state")if(n!=null)await this.props.socket.setState(t._id,n,M===void 0?!0:M);else{const c=await this.props.socket.getState(t._id);(!c||c.val===null||c.val===void 0)&&await this.props.socket.setState(t._id,t.common.def===void 0?null:t.common.def,!0)}o&&await this._createAllEnums(o,t._id),window.alert(this.props.t("ra_%s was imported",t._id))}catch(o){window.alert(o)}}}catch(t){window.alert(t)}}handleJsonUpload(e){var r;const t=e.target,i=((r=t.files)==null?void 0:r.length)&&t.files[0];if(i){const o=new FileReader;o.onload=n=>{var M;return this.parseJsonFile((M=n.target)==null?void 0:M.result),null},o.readAsText(i)}else window.alert(this.props.t("ra_Failed to open JSON File"))}toolTipObjectCreating=()=>{var i,r;const{t:e}=this.props;let t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];if(this.state.selected.length||this.state.selectedNonObject){const o=this.state.selected[0]||this.state.selectedNonObject;if(!(o.split(".").length<2||this.objects[o]&&((i=this.objects[o])==null?void 0:i.type)==="state"))if(this.state.filter.expertMode)switch((r=this.objects[o])==null?void 0:r.type){case"device":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"folder":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"channel":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:1},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break}else(o.startsWith("alias.0")||o.startsWith("0_userdata"))&&(t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:7},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:8},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))])}return t.length?t:e("ra_Add new child object to selected parent")};onOpenFile(){const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",t=>this.handleJsonUpload(t),!1),e.click()}renderInputJsonDialog(){const e=this.props.objectBrowserInsertJsonObjects;return this.state.showImportDialog?a.createElement(e,{onClose:t=>{this.setState({showImportDialog:!1}),t&&this.parseJsonFile(t)},themeName:this.props.themeName,themeType:this.props.themeType,t:this.props.t}):null}getToolbar(){let e=!1;if(this.state.selected.length||this.state.selectedNonObject){const t=this.state.selected[0]||this.state.selectedNonObject;t.split(".").length<2||this.objects[t]&&this.objects[t].type==="state"?e=!1:(this.state.filter.expertMode||t.startsWith("alias.0")||t.startsWith("0_userdata"))&&(e=!0)}return a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center",overflowX:"auto"}},a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},a.createElement(Le,{title:this.props.t("ra_Refresh tree"),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(W,{onClick:()=>this.refreshComponent(),disabled:this.state.updating,size:"large"},a.createElement(_N,null)))),this.props.showExpertButton&&!this.props.expertMode&&a.createElement(Le,{title:this.props.t("ra_expertMode"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expertMode",color:this.state.filter.expertMode?"secondary":"default",onClick:()=>{const t={...this.state.filter};t.expertMode=!t.expertMode,this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(t)),this.setState({filter:t})},size:"large"},a.createElement(Oa,null))),!this.props.disableColumnSelector&&this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Configure"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"columnSelector",color:this.state.columnsAuto?"primary":"default",onClick:()=>this.setState({columnsSelectorShow:!0}),size:"large"},a.createElement(hy,null))),this.props.width!=="xs"&&this.state.expandAllVisible&&a.createElement(Le,{title:this.props.t("ra_Expand all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expandAll",onClick:()=>this.onExpandAll(),size:"large"},a.createElement(lo,null))),a.createElement(Le,{title:this.props.t("ra_Collapse all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"collapseAll",onClick:()=>this.onCollapseAll(),size:"large"},a.createElement(Ti,null))),this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Expand one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expandVisible",color:"primary",onClick:()=>this.onExpandVisible(),size:"large"},a.createElement(Sc,{badgeContent:this.state.depth,color:"secondary",sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}})},a.createElement(lo,null)))),this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Collapse one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"collapseVisible",color:"primary",onClick:()=>this.onCollapseVisible(),size:"large"},a.createElement(Sc,{sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}}),badgeContent:this.state.depth,color:"secondary"},a.createElement(Ti,null)))),this.props.objectStatesView&&a.createElement(Le,{title:this.props.t("ra_Toggle the states view"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>this.onStatesViewVisible(),size:"large"},a.createElement(My,{color:this.state.statesView?"primary":"inherit"}))),a.createElement(Le,{title:this.props.t("ra_Show/Hide object descriptions"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.desc`,this.state.showDescription?"false":"true"),this.setState({showDescription:!this.state.showDescription})},size:"large"},a.createElement(gy,{color:this.state.showDescription?"primary":"inherit"}))),this.props.objectAddBoolean?a.createElement(Le,{title:this.toolTipObjectCreating(),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(W,{disabled:!e,onClick:()=>this.setState({modalNewObj:{id:this.state.selected[0]||this.state.selectedNonObject}}),size:"large"},a.createElement(Kn,null)))):null,this.props.objectImportExport&&a.createElement(Le,{title:this.props.t("ra_Add objects tree from JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:t=>{this.props.objectBrowserInsertJsonObjects?this.setState({showImportMenu:t.currentTarget}):this.onOpenFile()},size:"large"},a.createElement(go,null))),this.props.objectBrowserInsertJsonObjects?a.createElement(ws,{anchorEl:this.state.showImportMenu,open:!!this.state.showImportMenu,onClose:()=>this.setState({showImportMenu:null})},a.createElement(re,{onClick:()=>this.setState({showImportMenu:null},()=>this.onOpenFile())},a.createElement(Xt,null,a.createElement(jy,null)),a.createElement(dt,null,this.props.t("ra_From file"))),a.createElement(re,{onClick:()=>this.setState({showImportMenu:null,showImportDialog:!0})},a.createElement(Xt,null,a.createElement(Gj,null)),a.createElement(dt,null,this.props.t("ra_From text")))):null,this.props.objectImportExport&&(!!this.state.selected.length||this.state.selectedNonObject)&&a.createElement(Le,{title:this.props.t("ra_Save objects tree as JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>this.setState({showExportDialog:this._getSelectedIdsForExport().length}),size:"large"},a.createElement(go,{style:{transform:"rotate(180deg)"}})))),!!this.props.objectBrowserEditObject&&this.props.width!=="xs"&&a.createElement("div",{style:{display:"flex",whiteSpace:"nowrap"}},`${this.props.t("ra_Objects")}: ${Object.keys(this.info.objects).length}, ${this.props.t("ra_States")}: ${Object.keys(this.info.objects).filter(t=>this.info.objects[t].type==="state").length}`),this.props.objectEditBoolean&&a.createElement(Le,{title:this.props.t("ra_Edit custom config"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>{var i;const t=this.root?Mg(this.root,"state",this.objects):[];t.length?(this.pauseSubscribe(!0),t.length===1&&(this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,this.state.selected[0]),(i=this.props.router)==null||i.doNavigate(null,"custom",this.state.selected[0])),this.setState({customDialog:t,customDialogAll:!0})):this.setState({toast:this.props.t("ra_please select object")})},size:"large"},a.createElement(Jj,null))))}toggleExpanded(e){const t=JSON.parse(JSON.stringify(this.state.expanded)),i=t.indexOf(e);i===-1?(t.push(e),t.sort()):t.splice(i,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t})}onCopy(e,t){e.stopPropagation(),e.preventDefault(),t&&(m.copyToClipboard(t),t.length<50?this.setState({toast:this.props.t("ra_Copied %s",t)}):this.setState({toast:this.props.t("ra_Copied")}))}renderTooltipAccessControl=e=>{if(!e)return null;const t=[{value:"0x400",valueNum:1024,title:"read",group:"Owner"},{value:"0x200",valueNum:512,title:"write",group:"Owner"},{value:"0x40",valueNum:64,title:"read",group:"Group"},{value:"0x20",valueNum:32,title:"write",group:"Group"},{value:"0x4",valueNum:4,title:"read",group:"Everyone"},{value:"0x2",valueNum:2,title:"write",group:"Everyone"}],i=[],r=o=>{const n=e[o];t.forEach((M,c)=>{n&M.valueNum&&i.push(a.createElement("span",{key:o+c},this.texts[`acl${M.group}_${M.title}_${o}`],",",a.createElement("span",{style:o==="object"?z.rightsObject:z.rightsState},M.value)))})};return i.push(a.createElement("span",{key:"group"},`${this.texts.ownerGroup}: ${(e.ownerGroup||"").replace("system.group.","")}`)),i.push(a.createElement("span",{key:"owner"},`${this.texts.ownerUser}: ${(e.owner||"").replace("system.user.","")}`)),r("object"),e.state&&r("state"),i.length?a.createElement("span",{style:z.tooltipAccessControl},i.map(o=>o)):null};renderColumnButtons(e,t){var n,M,c,l;if(!t.data.obj)return this.props.onObjectDelete||this.props.objectEditOfAccessControl?a.createElement("div",{style:z.buttonDiv},this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonsEmptyButton,...z.cellButtonMinWidth},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:{height:15}},"---")):null,this.props.onObjectDelete&&((n=t.children)!=null&&n.length)?a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonsButtonAlone},size:"small","aria-label":"delete",title:this.texts.deleteObject,onClick:()=>{var g;const N=Object.keys(this.objects);N.sort();let u=0;const L=`${e}.`;for(let j=0;jL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((g=t.children)!=null&&g.length),!1,u+1)}},a.createElement(wt,{style:z.cellButtonsButtonIcon})):null):null;t.data.aclTooltip=t.data.aclTooltip||this.renderTooltipAccessControl(t.data.obj.acl);const i=t.data.obj.acl?t.data.obj.type==="state"?t.data.obj.acl.state:t.data.obj.acl.object:0,r=t.data.obj.acl&&(t.data.obj.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object),o=this.state.filter.expertMode||Z0(t.data.id);return[this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(Le,{key:"acl",title:t.data.aclTooltip,slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonMinWidth,opacity:1},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:z.aclText},Number.isNaN(Number(i))?Number(r).toString(16):Number(i).toString(16)))):a.createElement("div",{key:"aclEmpty",style:z.cellButtonMinWidth}),o?a.createElement(W,{key:"edit",sx:{marginRight:"2px",...z.cellButtonsButton},size:"small","aria-label":"edit",title:this.texts.editObject,onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.setState({editObjectDialog:e,editObjectAlias:!1})}},a.createElement(or,{style:z.cellButtonsButtonIcon})):a.createElement(J,{component:"div",key:"editDisabled",sx:z.cellButtonsButton}),this.props.onObjectDelete&&((M=t.children)!=null&&M.length||!((c=t.data.obj.common)!=null&&c.dontDelete))?a.createElement(W,{key:"delete",sx:z.cellButtonsButton,size:"small","aria-label":"delete",onClick:()=>{var g,j,y;const N=Object.keys(this.objects);N.sort();let u=0;const L=`${e}.`;for(let T=0;TL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((g=t.children)!=null&&g.length),!((y=(j=t.data.obj)==null?void 0:j.common)!=null&&y.dontDelete),u)},title:this.texts.deleteObject},a.createElement(wt,{style:z.cellButtonsButtonIcon})):null,this.props.objectCustomDialog&&this.info.hasSomeCustoms&&t.data.obj.type==="state"&&((l=t.data.obj.common)==null?void 0:l.type)!=="file"?a.createElement(W,{sx:{...z.cellButtonsButton,...t.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms},key:"custom",size:"small","aria-label":"config",title:this.texts.customConfig,onClick:()=>{var N;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.pauseSubscribe(!0),(N=this.props.router)==null||N.doNavigate(null,"customs",e),this.setState({customDialog:[e],customDialogAll:!1})}},a.createElement(qn,{style:z.cellButtonsButtonIcon})):null]}readHistory(e){var t,i;if(window.sparkline&&this.defaultHistory&&((i=(t=this.objects[e])==null?void 0:t.common)!=null&&i.custom)&&this.objects[e].common.custom[this.defaultHistory]){const r=new Date;r.setHours(r.getHours()-24),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0);const o=r.getTime();this.props.socket.getHistory(e,{instance:this.defaultHistory,start:o,end:Date.now(),step:36e5,from:!1,ack:!1,q:!1,addId:!1,aggregate:"minmax"}).then(n=>{const M=window.document.getElementsByClassName("sparkline");for(let c=0;cconsole.warn(`Cannot read history: ${n}`))}}getTooltipInfo(e,t){var l,N,u;const i=this.objects[e],r=this.states[e],{valFull:o,fileViewer:n}=Pn({state:r,obj:i,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,full:!0}),M=[];o==null||o.forEach(L=>{L.t===this.texts.quality&&r.q?(M.push(a.createElement("div",{style:z.cellValueTooltipBoth,key:L.t},L.t,": ",L.v)),L.nbr||M.push(a.createElement("br",{key:`${L.t}_br`}))):(M.push(a.createElement("div",{style:z.cellValueTooltipTitle,key:L.t},L.t,": ")),M.push(a.createElement("div",{style:z.cellValueTooltipValue,key:`${L.t}_v`},L.v)),L.nbr||M.push(a.createElement("br",{key:`${L.t}_br`})))});const c=((l=i==null?void 0:i.common)==null?void 0:l.role)||"";n==="image"?M.push(a.createElement("img",{style:z.cellValueTooltipImage,src:r.val,alt:e})):c==="url"||i.common.role==="url.self"||i.common.role==="url.blank"?M.unshift(a.createElement("div",{key:"ctrl",style:{textDecoration:"underline",fontWeight:"bold"}},this.texts.ctrlForLink)):this.defaultHistory&&((u=(N=i==null?void 0:i.common)==null?void 0:N.custom)!=null&&u[this.defaultHistory])&&M.push(a.createElement("svg",{key:"sparkline",className:"sparkline","data-id":e,style:{fill:"#3d85de"},width:"200",height:"30",strokeWidth:"3"})),this.setState({tooltipInfo:{el:M,id:e}},()=>t&&t())}renderColumnValue(e,t,i){var c,l;const r=t.data.obj;if(!r||!this.states)return null;if(((c=r.common)==null?void 0:c.type)==="file")return a.createElement(J,{component:"div",sx:{...z.cellValueText,...z.cellValueFile}},"[file]");if(!this.states[e])return r.type==="state"&&(this.recordStates.includes(e)||this.recordStates.push(e),this.states[e]={val:null},this.subscribe(e)),null;this.recordStates.includes(e)||this.recordStates.push(e);const o=this.states[e];let n=t.data.state;if(!n){const{valText:N}=Pn({state:o,obj:r,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma}),u=[];if(t.data.state={valTextRx:u},u.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}valText`,style:{whiteSpace:"nowrap",display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}},N.v.toString())),N.u&&u.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,style:z.cellValueTextUnit,key:`${N.v.toString()}unit`},N.u)),N.s!==void 0&&u.push(a.createElement("span",{style:z.cellValueTextState,className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}states`},"(",N.s,")")),!i){const L=N.c!==void 0?N.c:N.v||"";u.push(a.createElement(Bs,{className:"copyButton",style:this.styles.iconCopy,onClick:g=>this.onCopy(g,L),key:"cc"}))}n=t.data.state}n.style=W5e({state:o,isExpertMode:this.state.filter.expertMode,isButton:t.data.button,nonAckColor:this.props.theme.palette.nonAck});let M=n.valTextRx;return this.state.filter.expertMode||(t.data.button?M=[a.createElement(Y5e,{key:"button",style:{color:n.style.color,...z.cellValueButton}})]:t.data.switch&&(M=[a.createElement(br,{key:"switch",sx:{"& .MuiSwitch-thumb":{color:n.style.color},"& .MuiSwitch-track":{backgroundColor:this.states[e].val&&this.state.selected.includes(e)?this.props.themeType==="dark"?"#FFF !important":"#111 !important":void 0}},checked:!!this.states[e].val})])),a.createElement(Le,{key:"value",title:(l=this.state.tooltipInfo)==null?void 0:l.el,slotProps:{popper:{sx:z.cellValueTooltipBox},tooltip:{sx:z.cellValueTooltip}},onOpen:()=>this.getTooltipInfo(e,()=>this.readHistory(e)),onClose:()=>{var N;return((N=this.state.tooltipInfo)==null?void 0:N.id)===e&&this.setState({tooltipInfo:null})}},a.createElement(J,{component:"div",style:n.style,className:t.data.url?"iob-link":void 0,sx:{...z.cellValueText,height:i?void 0:$e,"& .admin-button:active":{transform:"translate(0, 2px)"}}},M))}_syncEnum(e,t,i,r){var M,c,l;if(!(t!=null&&t.length)){r&&r();return}const o=t.pop()||"",n=[];if((M=this.info.objects[o])!=null&&M.common){if((c=this.info.objects[o].common.members)!=null&&c.length){const N=this.info.objects[o].common.members.indexOf(e);if(N!==-1&&!i.includes(o)){const u=JSON.parse(JSON.stringify(this.info.objects[o]));u.common.members.splice(N,1),n.push(this.props.socket.setObject(o,u).then(()=>this.info.objects[o]=u).catch(L=>this.showError(L)))}}if(i.includes(o)&&!((l=this.info.objects[o].common.members)!=null&&l.includes(e))){const N=JSON.parse(JSON.stringify(this.info.objects[o]));N.common.members||=[],N.common.members.push(e),N.common.members.sort(),n.push(this.props.socket.setObject(o,N).then(()=>this.info.objects[o]=N).catch(u=>this.showError(u)))}}Promise.all(n).then(()=>{setTimeout(()=>this._syncEnum(e,t,i,r),0)})}syncEnum(e,t,i){const r=[...this.info[t==="func"?"funcEnums":"roomEnums"]];return new Promise(o=>{this._syncEnum(e,r,i,()=>{o()})})}renderEnumDialog(){if(!this.state.enumDialog)return null;const e=this.state.enumDialog.type,t=this.state.enumDialog.item,i=this.state.enumDialogEnums,r=this.state.enumDialog.enumsOriginal,o=(e==="room"?this.info.roomEnums:this.info.funcEnums).map(n=>{var M,c;return{name:He(((c=(M=this.objects[n])==null?void 0:M.common)==null?void 0:c.name)||n.split(".").pop()||"",this.props.lang),value:n,icon:_o(this.objects,n,this.props.lang,this.imagePrefix)}}).sort((n,M)=>n.name>M.name?1:-1);return o.forEach(n=>{n.icon&&typeof n.icon=="string"&&(n.icon=a.createElement(J,{style:z.enumIconDiv},a.createElement("img",{src:n.icon,style:z.enumIcon,alt:n.name})))}),a.createElement(Ae,{sx:{"& .MuiPaper-root":z.enumDialog},onClose:()=>this.setState({enumDialog:null}),"aria-labelledby":"enum-dialog-title",open:!0},a.createElement(fe,{id:"enum-dialog-title",style:{display:"flex",justifyContent:"space-between",width:"100%",flexWrap:"nowrap",gap:8,paddingRight:12}},e==="func"?this.props.t("ra_Define functions"):this.props.t("ra_Define rooms"),a.createElement(bt,{color:"primary",disabled:r===JSON.stringify(i),size:"small",onClick:()=>this.syncEnum(t.data.id,e,i).then(()=>this.setState({enumDialog:null,enumDialogEnums:null}))},a.createElement(We,null))),a.createElement(xc,{sx:{"&.MuiList-root":z.enumList}},o.map(n=>{let M,c,l;typeof n=="object"?(M=n.value,c=n.name,l=n.icon):(M=n,c=n);const N=`checkbox-list-label-${M}`;return a.createElement(Hg,{sx:z.headerCellSelectItem,key:M,onClick:()=>{const u=i.indexOf(M),L=JSON.parse(JSON.stringify(this.state.enumDialogEnums));u===-1?(L.push(M),L.sort()):L.splice(u,1),this.setState({enumDialogEnums:L})},secondaryAction:l},a.createElement(Xt,{sx:{"&.MuiListItemIcon-root":z.enumCheckbox}},a.createElement(ue,{edge:"start",checked:i.includes(M),tabIndex:-1,disableRipple:!0,slotProps:{input:{"aria-labelledby":N}}})),a.createElement(dt,{id:N},c))})))}renderEditRoleDialog(){var e,t;if(!this.state.roleDialog||!this.props.objectBrowserEditRole)return null;if(this.state.roleDialog&&this.props.objectBrowserEditRole){const i=this.props.objectBrowserEditRole;return a.createElement(i,{key:"objectBrowserEditRole",id:this.state.roleDialog,socket:this.props.socket,t:this.props.t,roleArray:this.info.roles,commonType:(t=(e=this.info.objects[this.state.roleDialog])==null?void 0:e.common)==null?void 0:t.type,onClose:r=>{r&&(this.info.objects[this.state.roleDialog]=r),this.setState({roleDialog:null})}})}return null}onColumnsEditCustomDialogClose(e){var i,r;const t=this.customColumnDialog;if(e){let o=t.value;t.type==="boolean"?o=o==="true"||o===!0:t.type==="number"&&(o=parseFloat(o)),this.customColumnDialog=null,this.props.socket.getObject(((r=(i=this.state.columnsEditCustomDialog)==null?void 0:i.obj)==null?void 0:r._id)||"").then(n=>{var M;if(n&&B5e(n,(M=this.state.columnsEditCustomDialog)==null?void 0:M.it,o))return this.props.socket.setObject(n._id,n);throw new Error(this.props.t("ra_Cannot update attribute, because not found in the object"))}).then(()=>this.setState({columnsEditCustomDialog:null})).catch(n=>this.showError(n))}else this.customColumnDialog=null,this.setState({columnsEditCustomDialog:null})}renderColumnsEditCustomDialog(){if(!this.state.columnsEditCustomDialog)return null;if(!this.customColumnDialog){const e=V0(this.state.columnsEditCustomDialog.obj,this.state.columnsEditCustomDialog.it);this.customColumnDialog={type:this.state.columnsEditCustomDialog.it.type||typeof e,initValue:(e??"").toString(),value:(e??"").toString()}}return a.createElement(Ae,{onClose:()=>this.setState({columnsEditCustomDialog:null}),maxWidth:"md","aria-labelledby":"custom-dialog-title",open:!0},a.createElement(fe,{id:"custom-dialog-title"},`${this.props.t("ra_Edit object field")}: ${this.state.columnsEditCustomDialog.obj._id}`),a.createElement(_e,null,a.createElement(as,{id:"alert-dialog-description"},this.customColumnDialog.type==="boolean"?a.createElement(V,{control:a.createElement(ue,{onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),defaultChecked:this.customColumnDialog.value==="true",onChange:e=>{const t=this.customColumnDialog;t.value=e.target.checked.toString();const i=t.value!==t.initValue;i===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:i})}}),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}):a.createElement(Te,{variant:"standard",defaultValue:this.customColumnDialog.value,fullWidth:!0,onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`,onChange:e=>{const t=this.customColumnDialog;t.value=e.target.value;const i=t.value!==t.initValue;i===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:i})},autoFocus:!0}))),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(!0),disabled:!this.state.customColumnDialogValueChanged,color:"primary",startIcon:a.createElement(We,null)},this.props.t("ra_Update")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(),startIcon:a.createElement(we,null)},this.props.t("ra_Cancel"))))}renderCustomValue(e,t,i){const r=V0(e,t);return r!=null?t.edit&&!this.props.notEditable&&(!t.objTypes||t.objTypes.includes(e.type))?a.createElement(J,{component:"div",style:{...z.columnCustom,...z.columnCustomEditable,...z[`columnCustom_${t.align}`]},onClick:()=>this.setState({columnsEditCustomDialog:{item:i,it:t,obj:e},customColumnDialogValueChanged:!1})},r):a.createElement(J,{component:"div",style:{...z.columnCustom,...z[`columnCustom_${t.align}`]}},r):null}renderAliasLink(e,t,i){const r=t||0,o=this.objects[this.info.aliasesMap[e][r]].common.alias.id;return o?a.createElement(J,{component:"div",onClick:n=>{n.stopPropagation(),n.preventDefault();const M=this.info.aliasesMap[e][r];this.info.aliasesMap[e].length>1&&this.setState({aliasMenu:""}),this.onSelect(M),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(M)),100)},sx:i||this.styles.aliasAlone},a.createElement("span",{className:"admin-browser-arrow"},typeof o=="string"||o.read===e&&o.write===e?"↔":o.read===e?"→":"←"),this.info.aliasesMap[e][r]):null}renderLeaf(e,t,i){var bi,Ui,$i,Yr,Qr,dc,hc,zc,wc,Ic,Cc,pc,Ac,mc;const r=e.data.id;i.count++,t=t===void 0?this.state.expanded.includes(r):t;let o;const n=e.data.obj,M=n==null?void 0:n.type;e.children||M==="folder"||M==="device"||M==="channel"||M==="meta"?o=t?a.createElement(lo,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):a.createElement(Ti,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):n&&n.common&&n.common.write===!1&&n.type==="state"?o=a.createElement(f5e,{style:this.styles.cellIdIconDocument}):o=a.createElement(m5e,{style:this.styles.cellIdIconDocument});let c=null;e.data.icon&&(typeof e.data.icon=="string"?e.data.icon.length<3?c=a.createElement("span",{className:"iconOwn",style:z.cellIdIconOwn},e.data.icon):c=a.createElement(be,{style:z.cellIdIconOwn,className:"iconOwn",src:e.data.icon,alt:""}):c=e.data.icon);const l=n==null?void 0:n.common,N=(n==null?void 0:n.type)&&X0[n.type]||a.createElement("div",{className:"itemIcon"}),u=this.levelPadding*(e.data.level||0);if(e.data.lang!==this.props.lang){const{rooms:v,per:ie}=lg(this.info,r,this.props.lang);e.data.rooms=v.join(", "),e.data.per=ie;const{funcs:Je,pef:Oe}=Ng(this.info,r,this.props.lang);e.data.funcs=Je.join(", "),e.data.pef=Oe,e.data.lang=this.props.lang}const L=this.props.multiSelect&&this.objects[r]&&(!this.props.types||this.props.types.includes(this.objects[r].type))?a.createElement(ue,{style:z.checkBox,checked:this.state.selected.includes(r)}):null;let g=!this.props.notEditable&&M==="state"&&(this.state.filter.expertMode||(l==null?void 0:l.write)!==!1);this.props.objectBrowserViewFile&&(l==null?void 0:l.type)==="file"&&(g=!0);const j=!this.props.notEditable&&this.objects[r]&&(this.state.filter.expertMode||M==="state"||M==="channel"||M==="device"),y=this.state.statesView&&(M==="state"||M==="channel"||M==="device");let T="";const d=[];if(y&&(T=(bi=this.states[r])==null?void 0:bi.from,T===void 0?T=" ":(T=T?T.replace(/^system\.adapter\.|^system\./,""):"",d.push(`${this.texts.stateChangedFrom} ${T}`)),n!=null&&n.user)){const v=n.user.replace("system.user.","");T+=`/${v}`,d.push(`${this.texts.stateChangedBy} ${v}`)}n&&(n.from&&d.push(`${this.texts.objectChangedFrom} ${n.from.replace(/^system\.adapter\.|^system\./,"")}`),n.user&&d.push(`${this.texts.objectChangedBy} ${n.user.replace(/^system\.user\./,"")}`),n.ts&&d.push(`${this.texts.objectChangedByUser} ${m.formatDate(new Date(n.ts),this.props.dateFormat||this.systemConfig.common.dateFormat)}`));let I=!1,w=null;r.startsWith("alias.")&&((Ui=l==null?void 0:l.alias)!=null&&Ui.id)?(I=typeof l.alias.id=="object",I?w=a.createElement("div",{style:z.cellIdAliasReadWriteDiv},l.alias.id.read?a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id.read),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.read)),100)},sx:this.styles.aliasReadWrite},"←",l.alias.id.read):null,l.alias.id.write?a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id.write),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.write)),100)},sx:this.styles.aliasReadWrite},"→",l.alias.id.write):null):w=a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id)),100)},sx:this.styles.aliasAlone},"→",l.alias.id)):this.info.aliasesMap[r]&&(this.info.aliasesMap[r].length>1?w=a.createElement(J,{component:"div",id:`alias_${r}`,onClick:v=>{v.stopPropagation(),v.preventDefault(),this.setState({aliasMenu:r})},sx:this.styles.aliasAlone},this.props.t("ra_%s links from aliases",this.info.aliasesMap[r].length)):w=this.renderAliasLink(r,0));let A=l==null?void 0:l.color,p;if(A&&!this.state.selected.includes(r)){const v=this.props.themeName==="dark"?"#1f1f1f":this.props.themeName==="blue"?"#222a2e":"#FFFFFF";m.colorDistance(A,v)<1e3&&(p=this.props.themeType==="dark"?"#9a9a9a":"#565656")}let h=!1;r==="0_userdata"?(A=rg(this.props.themeType),h=!0):r==="alias"?(A=og(this.props.themeType),h=!0):r==="javascript"?(A=k5e(this.props.themeType),h=!0):r==="system"?(A=ng(this.props.themeType),h=!0):r==="system.adapter"?A=ag(this.props.themeType):(!A||this.state.selected.includes(r))&&(A="inherit");const C=[];if(l!=null&&l.statusStates){const v={};Object.keys(l.statusStates).forEach(Je=>{var Tt;let Oe=l.statusStates[Je];Oe.split(".").length<3&&(Oe=`${r}.${Oe}`),v[Je]=Oe,this.states[Oe]?this.recordStates.includes(Oe)||this.recordStates.push(Oe):((Tt=this.objects[Oe])==null?void 0:Tt.type)==="state"&&(this.recordStates.includes(Oe)||this.recordStates.push(Oe),this.states[Oe]={val:null},this.subscribe(Oe))});let ie=!1;l.statusStates.errorId&&this.states[v.errorId]&&this.states[v.errorId].val&&(A=this.props.themeType==="dark"?Lg:gg,ie=!0,C.push(a.createElement(Xj,{key:"error",style:this.styles.iconDeviceError}))),v.onlineId&&this.states[v.onlineId]?ie?this.states[v.onlineId].val?C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected})):C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected})):this.states[v.onlineId].val?(A=this.props.themeType==="dark"?Sa:ka,C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected}))):(A=this.props.themeType==="dark"?va:Ya,C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected}))):v.offlineId&&this.states[v.offlineId]&&(ie?this.states[v.offlineId].val?C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected})):C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected})):this.states[v.offlineId].val?(A=this.props.themeType==="dark"?va:Ya,C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected}))):(A=this.props.themeType==="dark"?Sa:ka,C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected}))))}const E=y?m.quality2text((($i=this.states[r])==null?void 0:$i.q)||0).join(", "):null;let O=((Yr=e.data)==null?void 0:Yr.title)||"",b=!1;if(this.state.showDescription){const v=cg(e.data,this.props.lang);v&&(O=[a.createElement("div",{key:"name",style:z.cellNameDivDiv},O),a.createElement("div",{key:"desc",style:z.cellDescription},v)],b=!!v)}const k=this.props.width==="xs"&&this.state.focused===r,K=a.createElement(ts,{container:!0,wrap:"nowrap",direction:"row",sx:z.cellId,style:{width:this.columnsVisibility.id,paddingLeft:u}},a.createElement(ts,{container:!0,alignItems:"center"},L,o),a.createElement(ts,{style:{...z.cellIdSpan,...p?this.styles.invertedBackground:void 0,color:A,fontWeight:h?"bold":void 0}},a.createElement(Le,{title:P5e(e.data,this.props.lang),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,e.data.name)),w,C),a.createElement("div",{style:{...z.grow,...p?this.styles.invertedBackgroundFlex:{}}}),a.createElement(ts,{container:!0,alignItems:"center"},c),this.props.width!=="xs"?a.createElement("div",null,a.createElement(Bs,{className:k?"":"copyButton",style:z.cellCopyButton,onClick:v=>this.onCopy(v,r)})):null);let x=k&&O||this.columnsVisibility.name?a.createElement(J,{component:"div",sx:{...z.cellName,...b?z.cellNameWithDesc:void 0,width:this.props.width!=="xs"?this.columnsVisibility.name:void 0,ml:k?0:"5px"}},O,!k&&((Qr=e.data)!=null&&Qr.title)?a.createElement(J,{style:{color:A}},a.createElement(Bs,{className:"copyButton",style:z.cellCopyButton,onClick:v=>{var ie;return this.onCopy(v,(ie=e.data)==null?void 0:ie.title)}})):null):null,S;this.state.statesView?S=[k&&y&&((dc=this.states[r])!=null&&dc.from)||this.columnsVisibility.changedFrom?{el:a.createElement("div",{key:"from",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.changedFrom:void 0},title:d.join(` +`).forEach(n=>{if(!n.trim())return;const M=n.indexOf(":");if(M!==-1){const c=n.substring(0,M).trim();let l=n.substring(M+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[c]=!0:l==="false"?t[c]=!1:parseFloat(l).toString()===l?t[c]=parseFloat(l):t[c]=l}else t[n.trim()]=!0}),e=e.substring(i+7))}return{header:t,body:e}}static removeDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(i=>e=e.replace(i,"")),e}static onCopy(e,t){E4(t),e&&e.stopPropagation(),e&&e.preventDefault()}}function A5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function sg(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"248",cx:"160",fill:"none",strokeWidth:"15"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function Bs(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"}))}function ig(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"140.83068",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"251",cx:"241",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"200.94531",x2:"240.5",y1:"45.94531",x1:"240.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"78.7979",x:"214.5",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"84",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"83.5",y1:"46.94531",x1:"83.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"57.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function m5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",onClick:e=>s.onClick&&s.onClick(e),width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}))}function f5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}),a.createElement("path",{fill:"currentColor",stroke:"null",d:"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z"}))}function O5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function rr(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("rect",{fill:"none",rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor"}),a.createElement("ellipse",{fill:"none",ry:"54",rx:"54",cy:"160",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor"}))}function E5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 24 24",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",stroke:"currentColor",d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"}))}const $n={root:{width:"100%",height:"100%"},overflowHidden:{overflow:"hidden"},container:{height:"100%"}};function _5e(s){var e;return a.createElement(AN,{elevation:Number.isNaN(s.elevation)?1:s.elevation,style:{...$n.root,...((e=s.styles)==null?void 0:e.root)||void 0,...s.overflow!=="visible"?$n.overflowHidden:void 0},onKeyDown:s.onKeyDown,tabIndex:s.tabIndex},a.createElement(ts,{container:!0,direction:"column",wrap:"nowrap",sx:$n.container},s.children))}const B0={root:{height:"100%",overflow:"hidden"},overflowAuto:{overflow:"auto"}},x5e=a.forwardRef(function(e,t){return a.createElement(ts,{sx:{...B0.root,...(e==null?void 0:e.style)||void 0,...e.overflow==="auto"?B0.overflowAuto:void 0},ref:t},e.children)});function S5e(s){return a.createElement(ts,{container:!0,alignItems:"center"},s.children)}const Li=24,$e=32,rg=s=>s==="dark"?"#62ff25":"#37c400",og=s=>s==="dark"?"#ee56ff":"#a204b4",k5e=s=>s==="dark"?"#fff46e":"#b89101",ng=s=>"#ff6d69",ag=s=>"#5773ff",v5e=["0_userdata.0.","alias.0."],ss={headerCellInput:{width:"calc(100% - 5px)",height:$e,pt:0,"& .itemIcon":{verticalAlign:"middle",width:Li,height:Li,display:"inline-block"}},headerCellSelectItem:{"& .itemIcon":{width:Li,height:Li,mr:"5px",display:"inline-block"}},selectNone:{opacity:.5},selectClearButton:{position:"absolute",top:0,right:0,borderRadius:5,backgroundColor:"background.default"},cellIdTooltipLink:{color:"#7ec2fd","&:hover":{color:"#7ec2fd"},"&:visited":{color:"#7ec2fd"}},cellIdTooltip:{fontSize:14}};function Y5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 436 436",style:s==null?void 0:s.style,width:"24",height:"24",className:"admin-button"},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),a.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function R0(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}function Q5e(s,e){const t=[];for(let i=0;i{if(r==null)return;const n=typeof r=="object";if(t&&n&&typeof r.en=="string"&&typeof r.de=="string"){i[o]=r.en;return}i[o]=n?_a(r,e,t):r}):b5e(s,(i,r,o)=>{if(r==null||e.includes(o))return;const n=typeof r=="object";if(t&&n&&typeof r.en=="string"&&typeof r.de=="string"){i[o]=r.en;return}i[o]=n?_a(r,e,t):r})}function F0(s,e,t){const i=document.createElement("a"),r=[];t.excludeSystemRepositories&&r.push("system.repositories");const o=r.length>0||t.excludeTranslations?_a(e,r,t.excludeTranslations):e,n=t.beautify?JSON.stringify(o,null,2):JSON.stringify(o);i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(n)}`),i.setAttribute("download",s),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}class U5e extends De{hasIcons;timer=null;constructor(e){var t;super(e),this.state={value:e.initialValue||[]},this.hasIcons=!!((t=e.values)!=null&&t.find(i=>i.icon))}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){var e;return a.createElement("div",{style:{position:"relative"}},a.createElement(nt,{variant:"standard",key:this.props.name,sx:ss.headerCellInput,className:"no-underline",multiple:!0,renderValue:t=>t!=null&&t.length?t.map(i=>{const r=this.props.values.find(c=>typeof c=="object"?c.value===i:c===i);let o,n,M;return typeof r=="object"?(o=r.value,n=r.name,M=r.icon):(o=r,n=r),a.createElement(J,{component:"span",sx:ss.headerCellSelectItem,key:o},M||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),n)}):this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:t=>{let i=t.target.value;if(this.state.value[0]==="_"&&i.includes("_")&&i.length>1){const r=i.indexOf("_");r!==-1&&i.splice(r,1)}else this.state.value[0]!=="_"&&i.includes("_")&&(i=["_"]);i.includes("")&&(i=[]),this.setState({value:i},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,i)},400)})},onClose:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},inputProps:{name:this.props.name,id:this.props.name},displayEmpty:!0},a.createElement(re,{key:"empty",value:""},a.createElement("span",{style:ss.selectNone},this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`])),(e=this.props.values)==null?void 0:e.map(t=>{let i,r,o;return typeof t=="object"?(i=t.value,r=t.name,o=t.icon):(i=t,r=t),a.createElement(re,{sx:ss.headerCellSelectItem,key:i,value:i},o||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),r)})),this.state.value.length?a.createElement(J,{component:"div",sx:ss.selectClearButton},a.createElement(W,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:[]},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(we,null))):null)}}class $5e extends De{timer=null;constructor(e){super(e),this.state={value:e.initialValue||""}}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){return a.createElement(Qt,{sx:this.props.styles,key:this.props.name,title:this.props.t("ra_You can use * as wildcard"),margin:"dense"},a.createElement(qt,{classes:{underline:"no-underline"},id:this.props.name,placeholder:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:e=>{const t=e.target.value;this.setState({value:t},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,t)},400)})},onBlur:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},autoComplete:"off"}),this.state.value?a.createElement("div",{style:{position:"absolute",right:0}},a.createElement(W,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:""},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(we,null))):null)}}function jr(s,e,t,i){if(t||=0,i===void 0&&(i=s.length-1,!i))return s[0]===e;const r=Math.floor((t+i)/2);return e===s[r]?!0:i-1===t?s[t]===e||s[i]===e:e>s[r]?jr(s,e,r,i):ex.toLowerCase())),(L=e.custom)!=null&&L.length&&(r.custom=e.custom.map(x=>x.toLowerCase())),(g=e.role)!=null&&g.length&&(r.role=e.role.map(x=>x.toLowerCase())),(j=e.room)!=null&&j.length&&(r.room=[],e.room.forEach(x=>{var S,R;r.room=r.room.concat(((R=(S=i[x])==null?void 0:S.common)==null?void 0:R.members)||[])})),(y=e.func)!=null&&y.length&&(r.func=[],e.func.forEach(x=>{var S,R;r.func=r.func.concat(((R=(S=i[x])==null?void 0:S.common)==null?void 0:R.members)||[])}))}const N=s.data;if(N!=null&&N.id){const x=(T=N.obj)==null?void 0:T.common;if(n){if(n.type&&(typeof n.type=="string"?(!N.obj||n.type!==N.obj.type)&&(l=!0):Array.isArray(n.type)&&(!N.obj||!n.type.includes(N.obj.type))&&(l=!0)),!l&&((d=n.common)!=null&&d.type)&&(x!=null&&x.type?typeof n.common.type=="string"?n.common.type!==x.type&&(l=!0):Array.isArray(n.common.type)&&(n.common.type.includes(x.type)||(l=!0)):l=!0),!l&&((I=n.common)!=null&&I.role)&&(x!=null&&x.role?typeof n.common.role=="string"?x.role.startsWith(n.common.role)&&(l=!0):Array.isArray(n.common.role)&&(n.common.role.find(S=>x.role.startsWith(S))||(l=!0)):l=!0),!l&&((w=n.common)==null?void 0:w.custom)==="_"&&(x!=null&&x.custom))l=!0;else if(!l&&((A=n.common)!=null&&A.custom)&&((p=n.common)==null?void 0:p.custom)!=="_"){const S=n.common.custom;if(!(x!=null&&x.custom))l=!0;else if(S==="_dataSources")Object.keys(x.custom).find(R=>R.startsWith("history.")||R.startsWith("sql.")||R.startsWith("influxdb."))||(l=!0);else if(Array.isArray(S)){const R=Object.keys(x.custom);S.find(he=>R.find(Xe=>Xe.startsWith(he)))&&(l=!0)}else S!==!0&&!Object.keys(x.custom).find(R=>R.startsWith(S))&&(l=!0)}}!l&&!e.expertMode&&(l=N.id==="system"||N.id==="enum"||N.id.startsWith("system.")||N.id.startsWith("enum.")||N.id.startsWith("_design/")||N.id.endsWith(".admin")||!!(x!=null&&x.expert)),!l&&r.id&&(N.fID===void 0&&(N.fID=N.id.toLowerCase()),l=!N.fID.includes(r.id)),!l&&r.idRx&&(l=!r.idRx.test(N.id)),!l&&r.name&&(x?(N.fName===void 0&&(N.fName=He(x.name,t)||"",N.fName=N.fName.toLowerCase()),l=!N.fName.includes(r.name)):l=!0),!l&&r.nameRx&&x&&(N.fName===void 0&&(N.fName=He(x.name,t)||"",N.fName=N.fName.toLowerCase()),l=!r.nameRx.test(N.fName)),!l&&((h=e.role)!=null&&h.length)&&x&&(l=!(typeof x.role=="string"&&r.role.find(S=>x.role.startsWith(S)))),!l&&((C=r.room)!=null&&C.length)&&(l=!r.room.find(S=>S===N.id||N.id.startsWith(`${S}.`))),!l&&((E=r.func)!=null&&E.length)&&(l=!r.func.find(S=>S===N.id||N.id.startsWith(`${S}.`))),!l&&((O=r.type)!=null&&O.length)&&(l=!((b=N.obj)!=null&&b.type&&r.type.includes(N.obj.type))),!l&&M&&(l=!((k=N.obj)!=null&&k.type&&M.includes(N.obj.type))),!l&&((K=r.custom)!=null&&K.length)&&(x?r.custom[0]==="_"?l=!!x.custom:x.custom?l=!r.custom.find(S=>x.custom[S]):l=!0:l=r.custom[0]!=="_")}return N.visible=!l,N.hasVisibleChildren=!1,s.children&&c<20&&s.children.forEach(x=>{xa(x,e,t,i,r,o,n,M,c+1)&&(N.hasVisibleChildren=!0)}),N.sumVisibility=N.visible||N.hasVisibleChildren,o&&N.sumVisibility&&o.count++,N.id&&N.sumVisibility&&s.children&&s.children.forEach(x=>x.data.hasVisibleParent=!0),N.visible||N.hasVisibleChildren}function Mg(s,e,t,i){var o;i||=[];const r=s.data;return r.sumVisibility&&(r.id&&t[r.id]&&t[r.id].type===e&&i.push(r.id),(o=s.children)==null||o.forEach(n=>Mg(n,e,t,i))),i}function G0(s,e,t,i,r,o){let n;return e==="alias"||e==="alias.0"?n=a.createElement(SN,{className:"iconOwn",style:{color:og(i)}}):e==="0_userdata"||e==="0_userdata.0"?n=a.createElement(Vj,{className:"iconOwn",style:{color:rg(i)}}):e.startsWith("_design/")||e==="system"?n=a.createElement(jo,{className:"iconOwn",style:{color:ng(i)}}):e==="system.adapter"?n=a.createElement(jo,{className:"iconOwn",style:{color:ag(i)}}):e==="system.group"?n=a.createElement(rM,{className:"iconOwn"}):e==="system.user"?n=a.createElement(sM,{className:"iconOwn"}):e==="system.host"?n=a.createElement(iM,{className:"iconOwn"}):e.endsWith(".connection")||e.endsWith(".connected")?n=a.createElement(li,{className:"iconOwn"}):e.endsWith(".info")?n=a.createElement(tM,{className:"iconOwn"}):s[e]&&s[e].type==="meta"?n=a.createElement(Yo,{className:"iconOwn"}):t<2&&s[`system.adapter.${e}`]&&(n=_o(s,`system.adapter.${e}`,r,o)),n||null}function cg(s,e){var t,i;return(i=(t=s==null?void 0:s.obj)==null?void 0:t.common)!=null&&i.desc&&He(s.obj.common.desc,e)||null}function P5e(s,e){const t=cg(s,e);return t!=null&&t.startsWith("http")?a.createElement(J,{component:"a",sx:ss.cellIdTooltipLink,href:t,target:"_blank",rel:"noreferrer"},t):a.createElement("span",{style:ss.cellIdTooltip},t||s.id||"")}function H0(s,e){var N,u,L,g,j,y,T,d,I,w;const t=e.imagePrefix||".";let i=Object.keys(s);i.sort((A,p)=>A===p?0:(A=A.replace(/\./g,"!!!"),p=p.replace(/\./g,"!!!"),A>p?1:-1)),e.root&&(i=i.filter(A=>A===e.root||A.startsWith(`${e.root}.`)));let r=[],o="",n=0;const M={data:{name:"",id:""},children:[]},c={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:s,customs:["_"],enums:[],hasSomeCustoms:!1,aliasesMap:{}};let l=M;for(let A=0;Ak.role===b)?typeof b!="string"?console.warn(`Invalid role type "${typeof b}" in "${h._id}"`):c.roles.push({role:b,type:O.type}):p.startsWith("enum.rooms.")?(c.roomEnums.push(p),c.enums.push(p)):p.startsWith("enum.functions.")?(c.funcEnums.push(p),c.enums.push(p)):h.type==="enum"?c.enums.push(p):h.type==="instance"&&O&&(O.supportCustoms||(N=O.adminUI)!=null&&N.custom)&&(c.hasSomeCustoms=!0,c.customs.push(p.substring(15))),p.startsWith("alias.")&&((u=h.common.alias)!=null&&u.id))if(typeof h.common.alias.id=="string"){const k=h.common.alias.id;c.aliasesMap[k]?c.aliasesMap[k].includes(p)||c.aliasesMap[k].push(p):c.aliasesMap[k]=[p]}else{const k=h.common.alias.id.read;k&&(c.aliasesMap[k]?c.aliasesMap[k].includes(p)||c.aliasesMap[k].push(p):c.aliasesMap[k]=[p]);const K=h.common.alias.id.write;K&&(c.aliasesMap[K]?c.aliasesMap[K].includes(p)||c.aliasesMap[K].push(p):c.aliasesMap[K]=[p])}}c.ids.push(p);let E;do if(E=!1,!o||p.startsWith(`${o}.`)){if(C.length-n>1){let b=o;for(let k=n;kK.data.name===C[k]));else{const K={data:{name:C[k],parent:l,id:b,obj:s[b],level:k,icon:G0(s,b,k,e.themeType,e.lang,t),generated:!0}};l.children||=[],l.children.push(K),l=K,c.ids.push(b)}}const O={data:{name:C[C.length-1],title:He((L=h==null?void 0:h.common)==null?void 0:L.name,e.lang),obj:h,parent:l,icon:_o(s,p,e.lang,t)||G0(s,p,0,e.themeType,e.lang,t),id:p,hasCustoms:!!((g=h.common)!=null&&g.custom&&Object.keys(h.common.custom).length),level:C.length-1,generated:!1,button:h.type==="state"&&!!((j=h.common)!=null&&j.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("button")&&((y=h.common)==null?void 0:y.write)!==!1,switch:h.type==="state"&&((T=h.common)==null?void 0:T.type)==="boolean"&&((d=h.common)==null?void 0:d.write)!==!1&&((I=h.common)==null?void 0:I.read)!==!1,url:!!((w=h.common)!=null&&w.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("url")}};l.children||=[],l.children.push(O),l=O,n=C.length,r=C,o=p}else{let O=0;for(;r[O]===C[O];)O++;if(O>0){let b=r.length;for(r=r.splice(0,O),n=O,o=r.join(".");b>O;)l.data.parent?l=l.data.parent:console.error(`Parent is null for ${p} ${o} ${r.join(".")}`),b--}else l=M,r=[],o="",n=0;E=!0}while(E)}return c.roomEnums.sort((A,p)=>{var E,O,b,k;const h=He((O=(E=s[A])==null?void 0:E.common)==null?void 0:O.name,e.lang)||A.split(".").pop(),C=He((k=(b=s[p])==null?void 0:b.common)==null?void 0:k.name,e.lang)||p.split(".").pop();return h>C?1:h{var E,O,b,k;const h=He((O=(E=s[A])==null?void 0:E.common)==null?void 0:O.name,e.lang)||A.split(".").pop(),C=He((k=(b=s[p])==null?void 0:b.common)==null?void 0:k.name,e.lang)||p.split(".").pop();return h>C?1:hA.role.localeCompare(p.role)),c.types.sort(),{info:c,root:M}}function ug(s,e,t,i,r){if(s.data.id===e)return s;if(t||(t=e.split("."),r=0,i=t[r]),!s.children&&s.data.id!==e)return null;let o;if(s.children)for(let n=0;ni)break}return o?(r||=0,ug(o,e,t,`${i}.${t[r+1]}`,r+1)):null}function lg(s,e,t,i){var n,M;if(!e)return{rooms:[],per:!1};i||=[];for(const c of s.roomEnums){const l=(n=s.objects[c])==null?void 0:n.common;if(!l)continue;const N=He(l.name,t);(M=l.members)!=null&&M.includes(e)&&!i.includes(N)&&i.push(N)}let r;const o=e.split(".");return o.pop(),e=o.join("."),s.objects[e]&&(r=i.length,lg(s,e,t,i)),{rooms:i,per:!r}}function Rs(s,e,t,i){var r,o;if(!e)return[];i||=[];for(let n=0;n946681200&&l<9466812e5&&(l*=1e3),l=l&&new Date(l).toString();else if(M!=null&&M.role&&typeof M.role=="string"&&M.role.match(/^value\.duration/)){if(typeof l=="number"&&l>=0){const j=Math.floor(l/3600),y=Math.floor(l%3600/60),T=Math.floor(l%60);l=`${j.toString().padStart(2,"0")}:${y.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}`}else if(typeof l=="string"&&m.isStringInteger(l)){const j=parseInt(l,10);if(j>=0){const y=Math.floor(j/3600),T=Math.floor(j%3600/60),d=Math.floor(j%60);l=`${y.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}`}}}else N==="number"?Number.isInteger(l)||(l=Math.round(l*1e8)/1e8,i&&(l=l.toString().replace(".",","))):N==="object"?l=JSON.stringify(l):N!=="string"?l=l.toString():l.startsWith("data:image/")&&(c="image"),typeof l!="string"&&(l=l.toString());const u={v:l};n&&n[l]!==void 0&&l!==n[l]&&(u.s=l,l=n[l],u.v=l),((g=u.v)==null?void 0:g.length)>40&&(u.c=u.v,u.v=`${u.v.substring(0,40)}...`),M!=null&&M.unit&&(u.u=M.unit);let L;if(s.full&&(typeof l=="string"&&l.length>100?L=[{t:r.value,v:`${l.substring(0,100)}...`}]:L=[{t:r.value,v:l}],t)){if(t.ack!==void 0&&t.ack!==null&&L.push({t:r.ack,v:t.ack.toString()}),t.ts&&L.push({t:r.ts,v:t.ts?m.formatDate(new Date(t.ts),e):""}),t.lc&&L.push({t:r.lc,v:t.lc?m.formatDate(new Date(t.lc),e):""}),t.from){let j=t.from.toString();j.startsWith("system.adapter.")&&(j=j.substring(15)),L.push({t:r.from,v:j})}if(t.user){let j=t.user.toString();j.startsWith("system.user.")&&(j=j.substring(12)),L.push({t:r.user,v:j})}t.c&&L.push({t:r.c,v:t.c}),L.push({t:r.quality,v:m.quality2text(t.q||0).join(", "),nbr:!0})}return{valText:u,valFull:L,fileViewer:c}}function W5e(s){const{state:e}=s;return{color:e!=null&&e.ack?e.q?"#ffa500":"":s.nonAckColor||"#ff2222c9"}}function J5e(s,e){let t=e,i=1;const r=[];for(;i=t)r.push(0);else if(i1){const i=e.path;let r;const o=s;if(o[i[0]]&&typeof o[i[0]]=="object")return i.length===2?r=o[i[0]][i[1]]:i.length===3?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"?o[i[0]][i[1]][i[2]]:null:i.length===4?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]?o[i[0]][i[1]][i[2]][i[3]]:null:i.length===5?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&o[i[0]][i[1]][i[2]][i[3]]?o[i[0]][i[1]][i[2]][i[3]][i[4]]:null:i.length===6&&(r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&o[i[0]][i[1]][i[2]][i[3]]&&o[i[0]][i[1]][i[2]][i[3]][i[4]]?o[i[0]][i[1]][i[2]][i[3]][i[4]][i[5]]:null),r??null}return null}function B5e(s,e,t){var i;if((i=s==null?void 0:s._id)!=null&&i.startsWith(`${e.adapter}.`)&&e.path.length>1){const r=e.path,o=s;if(o[r[0]]&&typeof o[r[0]]=="object"){if(r.length===2)return o[r[0]][r[1]]=t,!0;if(r.length===3){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object")return o[r[0]][r[1]][r[2]]=t,!0}else if(r.length===4){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object")return o[r[0]][r[1]][r[2]][r[3]]=t,!0}else if(r.length===5){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]]=t,!0}else if(r.length===6&&o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object"&&o[r[0]][r[1]][r[2]][r[3]][r[4]]&&typeof o[r[0]][r[1]][r[2]][r[3]][r[4]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]][r[5]]=t,!0}}return!1}function Z0(s){return!!v5e.find(e=>s.startsWith(e))}const R5e=16,Ie=20,Lg="#ff413c",gg="#86211f",Sa="#57ff45",ka="#098c04",va="#f3ad11",Ya="#6c5008",z={toolbar:{minHeight:38},toolbarButtons:{padding:4,marginLeft:4},switchColumnAuto:{marginLeft:16},dialogColumns:{transition:"opacity 1s"},dialogColumnsLabel:{fontSize:12,paddingTop:8},columnCustom:{width:"100%",display:"inline-block"},columnCustomEditable:{cursor:"text"},columnCustom_center:{textAlign:"center"},columnCustom_left:{textAlign:"left"},columnCustom_right:{textAlign:"right"},width100:{width:"100%"},transparent_10:{opacity:.1},transparent_20:{opacity:.2},transparent_30:{opacity:.3},transparent_40:{opacity:.4},transparent_50:{opacity:.5},transparent_60:{opacity:.6},transparent_70:{opacity:.7},transparent_80:{opacity:.8},transparent_90:{opacity:.9},transparent_100:{opacity:1},headerRow:{paddingLeft:8,height:38,whiteSpace:"nowrap",userSelect:"none"},buttonClearFilter:{position:"relative",float:"right",padding:0},buttonClearFilterIcon:{zIndex:2,position:"absolute",top:0,left:0,color:"#FF0000",opacity:.7},tableDiv:{paddingTop:0,paddingLeft:0,width:"calc(100% - 8px)",height:"calc(100% - 38px)",overflow:"auto"},tableRow:s=>({pl:1,height:$e,lineHeight:`${$e}px`,verticalAlign:"top",userSelect:"none",position:"relative",width:"100%","&:hover":{background:`${s.palette.mode==="dark"?s.palette.primary.dark:s.palette.primary.light} !important`,color:m.invertColor(s.palette.primary.main,!0)},whiteSpace:"nowrap",flexWrap:"nowrap"}),tableRowLines:s=>({borderBottom:`1px solid ${s.palette.mode==="dark","#8888882e"}`,"& > div":{borderRight:`1px solid ${s.palette.mode==="dark","#8888882e"}`}}),tableRowNoDragging:{cursor:"pointer"},tableRowAlias:{height:$e+10},tableRowAliasReadWrite:{height:$e+22},tableRowFocused:s=>({"&:after":{content:'""',position:"absolute",top:1,left:1,right:1,bottom:1,border:s.palette.mode?"1px dotted #000":"1px dotted #FFF"}}),checkBox:{padding:0},cellId:{position:"relative",fontSize:"1rem",overflow:"hidden",textOverflow:"ellipsis","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"},"& .iconOwn":{display:"block",width:$e-4,height:$e-4,mt:"2px",float:"right"},"&:hover .iconOwn":{display:"none"},"& *":{width:"initial"}},cellIdSpan:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},cellIdIconFolder:s=>({marginRight:8,width:$e-4,height:$e-4,cursor:"pointer",color:s.palette.secondary.main||"#fbff7d",verticalAlign:"top"}),cellIdIconDocument:{verticalAlign:"middle",marginLeft:($e-Ie)/2,marginRight:8,width:Ie,height:Ie},cellIdIconOwn:{},cellCopyButton:{width:Ie,height:Ie,top:($e-Ie)/2,opacity:.8,position:"absolute",right:3},cellCopyButtonInDetails:{width:Ie,height:Ie,top:($e-Ie)/2,opacity:.8},cellEditButton:{width:Ie,height:Ie,color:"white",position:"absolute",top:($e-Ie)/2,right:Ie+3,opacity:.7,"&:hover":{opacity:1}},cellName:{display:"inline-block",verticalAlign:"top",fontSize:14,ml:"5px",overflow:"hidden",textOverflow:"ellipsis",position:"relative","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellNameWithDesc:{lineHeight:"normal"},cellNameDivDiv:{},cellDescription:{fontSize:10,opacity:.5,fontStyle:"italic"},cellIdAlias:s=>({fontStyle:"italic",fontSize:12,opacity:.7,"&:hover":{color:s.palette.mode==="dark"?"#009900":"#007700"}}),cellIdAliasReadWriteDiv:{height:24,marginTop:-5},cellIdAliasAlone:{lineHeight:0},cellIdAliasReadWrite:{lineHeight:"12px"},cellType:{display:"inline-block",verticalAlign:"top","& .itemIcon":{verticalAlign:"middle",width:Li,height:Li,display:"inline-block"},"& .itemIconFolder":{marginLeft:3}},cellRole:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellRoom:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellEnumParent:{opacity:.4},cellFunc:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValue:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValueButton:{marginTop:5},cellValueButtonFalse:{opacity:.3},cellAdapter:{display:"inline-block",verticalAlign:"top"},cellValueTooltip:{fontSize:12},cellValueText:{width:"100%",height:$e,fontSize:16,display:"flex",overflow:"hidden",textOverflow:"ellipsis",position:"relative",verticalAlign:"top","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellValueFile:{color:"#2837b9"},cellValueTooltipTitle:{fontStyle:"italic",width:100,display:"inline-block"},cellValueTooltipValue:{width:120,display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis"},cellValueTooltipImage:{width:100,height:"auto"},cellValueTooltipBoth:{width:220,display:"inline-block",whiteSpace:"nowrap"},cellValueTooltipBox:{width:250,overflow:"hidden",pointerEvents:"none"},tooltip:{pointerEvents:"none"},cellValueTextUnit:{marginLeft:4,opacity:.8,display:"inline-block"},cellValueTextState:{opacity:.7},cellValueTooltipCopy:{position:"absolute",bottom:3,right:3},cellValueTooltipEdit:{position:"absolute",bottom:3,right:15},cellButtons:{display:"inline-block",verticalAlign:"top"},cellButtonsButton:{display:"inline-block",opacity:.5,width:Ie+4,height:Ie+4,"&:hover":{opacity:1},p:0,mt:"-2px"},cellButtonsEmptyButton:{fontSize:12},cellButtonMinWidth:{minWidth:40},cellButtonsButtonAlone:{ml:`${Ie+6}px`,pt:0,mt:"-2px"},cellButtonsButtonWithCustoms:s=>({color:s.palette.mode==="dark"?s.palette.primary.main:s.palette.secondary.main}),cellButtonsButtonWithoutCustoms:{opacity:.2},cellButtonsValueButton:s=>({position:"absolute",top:Ie/2-2,opacity:.7,width:Ie-2,height:Ie-2,color:s.palette.action.active,"&:hover":{opacity:1}}),cellButtonsValueButtonCopy:{right:8,cursor:"pointer"},cellButtonsValueButtonEdit:{right:Ie/2+16},cellDetailsLine:{display:"flex",alignItems:"center",width:"100%",height:32,fontSize:16},cellDetailsName:{fontWeight:"bold",marginRight:8,minWidth:80},filteredOut:{opacity:.5},filteredParentOut:{opacity:.3},filterInput:{mt:0,mb:0},selectIcon:{width:24,height:24,marginRight:4},itemSelected:s=>({background:`${s.palette.primary.main} !important`,color:`${m.invertColor(s.palette.primary.main,!0)} !important`}),header:{width:"100%"},headerCell:{display:"inline-block",verticalAlign:"top"},headerCellValue:{paddingTop:4,fontSize:16},visibleButtons:{color:"#2196f3",opacity:.7},grow:{flexGrow:1},enumIconDiv:{marginRight:8,width:32,height:32,borderRadius:8,background:"#FFFFFF"},enumIcon:{marginTop:4,marginLeft:4,width:24,height:24},enumDialog:{overflow:"hidden"},enumList:{minWidth:250,height:"calc(100% - 50px)",overflow:"auto"},enumCheckbox:{minWidth:0},buttonDiv:{display:"flex",height:"100%",alignItems:"center"},aclText:{fontSize:13,marginTop:6},rightsObject:{color:"#55ff55",paddingLeft:3},rightsState:{color:"#86b6ff",paddingLeft:3},textCenter:{padding:12,textAlign:"center"},tooltipAccessControl:{display:"flex",flexDirection:"column"},fontSizeTitle:{"@media screen and (max-width: 465px)":{"& *":{fontSize:12}}},draggable:{cursor:"copy"},nonDraggable:{cursor:"no-drop"},iconDeviceConnected:s=>({color:s.palette.mode==="dark"?Sa:ka,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceDisconnected:s=>({color:s.palette.mode==="dark"?va:Ya,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceError:s=>({color:s.palette.mode==="dark"?Lg:gg,opacity:.8,position:"absolute",top:4,right:50,width:20}),resizeHandle:{display:"block",position:"absolute",cursor:"col-resize",width:7,top:2,bottom:2,zIndex:1},resizeHandleRight:{right:3,borderRight:"2px dotted #888","&:hover":{borderColor:"#ccc",borderRightStyle:"solid"},"&.active":{borderColor:"#517ea5",borderRightStyle:"solid"}},invertedBackground:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",padding:"0 3px",borderRadius:"2px 0 0 2px"}),invertedBackgroundFlex:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",borderRadius:"0 2px 2px 0"}),contextMenuEdit:s=>({color:s.palette.mode==="dark"?"#ffee48":"#cbb801"}),contextMenuEditValue:s=>({color:s.palette.mode==="dark"?"#5dff45":"#1cd301"}),contextMenuView:s=>({color:s.palette.mode==="dark"?"#FFF":"#000"}),contextMenuCustom:s=>({color:s.palette.mode==="dark"?"#42eaff":"#01bbc2"}),contextMenuACL:s=>({color:s.palette.mode==="dark"?"#e079ff":"#500070"}),contextMenuRoom:s=>({color:s.palette.mode==="dark"?"#ff9a33":"#642a00"}),contextMenuRole:s=>({color:s.palette.mode==="dark"?"#ffdb43":"#562d00"}),contextMenuDelete:s=>({color:s.palette.mode==="dark"?"#ff4f4f":"#cf0000"}),contextMenuKeys:{marginLeft:8,opacity:.7,fontSize:"smaller"},contextMenuWithSubMenu:{display:"flex"},...ss},X0={state:a.createElement(rr,{className:"itemIcon",style:{verticalAlign:"middle"}}),channel:a.createElement(sg,{className:"itemIcon",style:{verticalAlign:"middle"}}),device:a.createElement(ig,{className:"itemIcon",style:{verticalAlign:"middle"}}),adapter:a.createElement(A5e,{className:"itemIcon",style:{verticalAlign:"middle"}}),meta:a.createElement(Yo,{className:"itemIcon",style:{verticalAlign:"middle"}}),instance:a.createElement(O5e,{className:"itemIcon",style:{color:"#7da7ff",verticalAlign:"middle"}}),enum:a.createElement(ay,{className:"itemIcon",style:{verticalAlign:"middle"}}),chart:a.createElement(Ly,{className:"itemIcon",style:{verticalAlign:"middle"}}),config:a.createElement(qn,{className:"itemIcon",style:{verticalAlign:"middle"}}),group:a.createElement(rM,{className:"itemIcon",style:{verticalAlign:"middle"}}),user:a.createElement(sM,{className:"itemIcon",style:{verticalAlign:"middle"}}),host:a.createElement(iM,{className:"itemIcon",style:{verticalAlign:"middle"}}),schedule:a.createElement(Bj,{className:"itemIcon",style:{verticalAlign:"middle"}}),script:a.createElement(qa,{className:"itemIcon",style:{verticalAlign:"middle"}}),folder:a.createElement(Ti,{className:"itemIcon itemIconFolder",style:{verticalAlign:"middle"}})},ze={xs:{idWidth:"100%",fields:[],widths:{}},sm:{idWidth:300,fields:["room","val"],widths:{room:100,val:200}},md:{idWidth:300,fields:["room","func","val","buttons"],widths:{name:200,room:150,func:150,val:120,buttons:120}},lg:{idWidth:300,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:300,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:165,lastChange:165}},xl:{idWidth:550,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:400,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:170,lastChange:170}}};let K0=!1;const Fs={id:"",name:"",room:[],func:[],role:[],type:[],custom:[],expertMode:!1};class xo extends De{info={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:{},customs:[],enums:[],hasSomeCustoms:!1,aliasesMap:{}};localStorage=window._localStorage||window.localStorage;tableRef;pausedSubscribes=!1;selectFirst;root=null;states={};subscribes=[];unsubscribeTimer=null;statesUpdateTimer=null;objectsUpdateTimer=null;visibleCols;texts;possibleCols;imagePrefix;adapterColumns=[];styleTheme="";edit={id:"",val:"",q:0,ack:!1};levelPadding;customWidth=!1;resizeTimeout=null;resizerNextName=null;resizerActiveName=null;resizerCurrentWidths={};resizeLeft=!1;resizerOldWidth=0;resizerMin=0;resizerNextMin=0;resizerOldWidthNext=0;resizerPosition=0;resizerActiveDiv=null;resizerNextDiv=null;storedWidths=null;systemConfig;objects;defaultHistory="";ctrlPressed=!1;columnsVisibility={};changedIds=null;contextMenu=null;recordStates=[];styles={};expertMode=!1;customColumnDialog=null;constructor(e){super(e);const t=this.localStorage.getItem(`${e.dialogName||"App"}.objectSelected`)||"";if(this.selectFirst="",this.expertMode=!!this.props.expertMode,t.startsWith("["))try{const T=JSON.parse(t);this.selectFirst=T[0]||""}catch{}else this.selectFirst=t;let i;const r=this.localStorage.getItem(`${e.dialogName||"App"}.objectExpanded`)||"[]";try{i=JSON.parse(r)}catch{i=[]}let o;const n=e.defaultFilters?"":this.localStorage.getItem(`${e.dialogName||"App"}.objectFilter`)||"";if(n)try{o=JSON.parse(n)}catch{o={...Fs}}else e.defaultFilters&&typeof e.defaultFilters=="object"?o={...e.defaultFilters}:o={...Fs};if(typeof o.room=="string"&&o.room&&(o.room=[o.room].filter(T=>T),o.room.length||delete o.room),typeof o.func=="string"&&o.func&&(o.func=[o.func].filter(T=>T),o.func.length||delete o.func),typeof o.role=="string"&&o.role&&(o.role=[o.role].filter(T=>T),o.role.length||delete o.role),typeof o.type=="string"&&(o.type=[o.type].filter(T=>T),o.type.length||delete o.type),typeof o.custom=="string"&&(o.custom=[o.custom].filter(T=>T),o.custom.length||delete o.custom),o.expertMode=e.expertMode!==void 0?e.expertMode:(window._sessionStorage||window.sessionStorage).getItem("App.expertMode")==="true",this.tableRef=IN(),this.visibleCols=e.columns||ze[e.width||"lg"].fields,e.types&&e.types.length===1){const T=this.visibleCols.indexOf("type");T!==-1&&this.visibleCols.splice(T,1)}this.possibleCols=ze.xl.fields;let M=null;if(e.router){const T=e.router.getLocation();T.id&&T.dialog==="customs"&&(M=[T.id],this.pauseSubscribe(!0))}let c;Array.isArray(e.selected)?c=e.selected:c=[e.selected||""],c=c.map(T=>T.replace(/["']/g,"")).filter(T=>T),this.selectFirst=c.length&&c[0]?c[0]:this.selectFirst;const l=this.localStorage.getItem(`${e.dialogName||"App"}.columns`);let N;try{N=l?JSON.parse(l):null}catch{N=null}let u=null;try{u=u?JSON.parse(u):{}}catch{u={}}this.imagePrefix=e.imagePrefix||".";let L;const g=this.localStorage.getItem(`${e.dialogName||"App"}.foldersFirst`);g==="false"?L=!1:g==="true"?L=!0:L=e.foldersFirst===void 0?!0:e.foldersFirst;let j=!1;try{j=this.props.objectStatesView&&JSON.parse(this.localStorage.getItem(`${e.dialogName||"App"}.objectStatesView`)||"")||!1}catch{}this.state={aliasMenu:"",beautifyJsonExport:!0,columns:N,columnsAuto:this.localStorage.getItem(`${e.dialogName||"App"}.columnsAuto`)!=="false",columnsDialogTransparent:100,columnsEditCustomDialog:null,columnsForAdmin:null,columnsSelectorShow:!1,columnsWidths:u,customColumnDialogValueChanged:!1,customDialog:M,depth:0,editObjectAlias:!1,editObjectDialog:"",enumDialog:null,excludeSystemRepositoriesFromExport:!0,excludeTranslations:!1,expandAllVisible:!1,expanded:i,filter:o,filterKey:0,focused:this.localStorage.getItem(`${e.dialogName||"App"}.focused`)||"",foldersFirst:L,linesEnabled:this.localStorage.getItem(`${e.dialogName||"App"}.lines`)==="true",loaded:!1,noStatesByExportImport:!1,roleDialog:null,scrollBarWidth:16,selected:c,selectedNonObject:this.localStorage.getItem(`${e.dialogName||"App"}.selectedNonObject`)||"",showAliasEditor:"",showAllExportOptions:!1,showContextMenu:null,showDescription:this.localStorage.getItem(`${e.dialogName||"App"}.desc`)!=="false",showExportDialog:!1,showImportDialog:!1,showImportMenu:null,showRenameDialog:null,statesView:j,toast:"",tooltipInfo:null,viewFileDialog:""},this.texts={name:e.t("ra_Name"),categories:e.t("ra_Categories"),value:e.t("ra_tooltip_value"),ack:e.t("ra_tooltip_ack"),ts:e.t("ra_tooltip_ts"),lc:e.t("ra_tooltip_lc"),from:e.t("ra_tooltip_from"),user:e.t("ra_tooltip_user"),c:e.t("ra_tooltip_comment"),quality:e.t("ra_tooltip_quality"),editObject:e.t("ra_tooltip_editObject"),deleteObject:e.t("ra_tooltip_deleteObject"),customConfig:e.t("ra_tooltip_customConfig"),copyState:e.t("ra_tooltip_copyState"),editState:e.t("ra_tooltip_editState"),ctrlForLink:e.t("ra_tooltip_ctrlForLink"),close:e.t("ra_Close"),filter_id:e.t("ra_filter_id"),filter_name:e.t("ra_filter_name"),filter_type:e.t("ra_filter_type"),filter_role:e.t("ra_filter_role"),filter_room:e.t("ra_filter_room"),filter_func:e.t("ra_filter_func"),filter_custom:e.t("ra_filter_customs"),filterCustomsWithout:e.t("ra_filter_customs_without"),objectChangedByUser:e.t("ra_object_changed_by_user"),objectChangedBy:e.t("ra_object_changed_by"),objectChangedFrom:e.t("ra_state_changed_from"),stateChangedBy:e.t("ra_state_changed_by"),stateChangedFrom:e.t("ra_state_changed_from"),ownerGroup:e.t("ra_Owner group"),ownerUser:e.t("ra_Owner user"),showAll:e.t("ra_show_all"),deviceError:e.t("ra_Error"),deviceDisconnected:e.t("ra_Disconnected"),deviceConnected:e.t("ra_Connected"),aclOwner_read_object:e.t("ra_aclOwner_read_object"),aclOwner_read_state:e.t("ra_aclOwner_read_state"),aclOwner_write_object:e.t("ra_aclOwner_write_object"),aclOwner_write_state:e.t("ra_aclOwner_write_state"),aclGroup_read_object:e.t("ra_aclGroup_read_object"),aclGroup_read_state:e.t("ra_aclGroup_read_state"),aclGroup_write_object:e.t("ra_aclGroup_write_object"),aclGroup_write_state:e.t("ra_aclGroup_write_state"),aclEveryone_read_object:e.t("ra_aclEveryone_read_object"),aclEveryone_read_state:e.t("ra_aclEveryone_read_state"),aclEveryone_write_object:e.t("ra_aclEveryone_write_object"),aclEveryone_write_state:e.t("ra_aclEveryone_write_state"),create:e.t("ra_Create"),createBooleanState:e.t("ra_create_boolean_state"),createNumberState:e.t("ra_create_number_state"),createStringState:e.t("ra_create_string_state"),createState:e.t("ra_create_state"),createChannel:e.t("ra_create_channel"),createDevice:e.t("ra_create_device"),createFolder:e.t("ra_Create folder")},this.levelPadding=e.levelPadding||R5e;const y=this.localStorage.getItem(`${this.props.dialogName||"App"}.table`);if(y)try{const T=JSON.parse(y),d=this.props.width||"lg";this.storedWidths=JSON.parse(JSON.stringify(ze[d])),Object.keys(T).forEach(I=>{I==="id"?ze[d].idWidth=T.id:I==="nameHeader"?ze[d].widths.name=T[I]:ze[d].widths[I]!==void 0&&(ze[d].widths[I]=T[I])}),this.customWidth=!0}catch{}this.calculateColumnsVisibility()}async loadAllObjects(e){var i;const t=this.props;try{await new Promise(l=>{this.setState({updating:!0},()=>l())});const r=(t.objectsWorker?await t.objectsWorker.getObjects(e):await t.socket.getObjects(e,!0))||{};if(t.types&&ke.isWeb())for(let l=0;l{try{if(l(r[N]))this.objects[N]=r[N];else{const u=r[N]&&r[N].type;u&&(u==="channel"||u==="device"||u==="folder"||u==="adapter"||u==="instance")&&(this.objects[N]=r[N])}}catch(u){console.log(`Error by filtering of "${N}": ${u}`)}})}else if(t.types){this.objects={};const l=t.types;Object.keys(r).forEach(N=>{var L;const u=(L=r[N])==null?void 0:L.type;u&&(u==="channel"||u==="device"||u==="enum"||u==="folder"||u==="adapter"||u==="instance"||l.includes(u))&&(this.objects[N]=r[N])})}else this.objects=r;t.setObjectsReference&&t.setObjectsReference(this.objects),this.defaultHistory=this.systemConfig.common.defaultHistory,this.defaultHistory&&t.socket.getState(`system.adapter.${this.defaultHistory}.alive`).then(l=>{l!=null&&l.val||(this.defaultHistory="")}).catch(l=>window.alert(`Cannot get state: ${l}`));const o=await this.getAdditionalColumns();this.calculateColumnsVisibility(null,null,o);const{info:n,root:M}=H0(this.objects,{imagePrefix:t.imagePrefix,root:t.root,lang:t.lang,themeType:t.themeType});this.root=M,this.info=n;const c=((i=this.state.selected)==null?void 0:i.length)&&ug(this.root,this.state.selected[0]);c&&!xa(c,this.state.filter,t.lang,this.objects,void 0,void 0,t.customFilter,t.types)?this.setState({filter:{...Fs},columnsForAdmin:o},()=>{this.doFilter(),this.setState({loaded:!0,updating:!1},()=>this.expandAllSelected(()=>this.onAfterSelect()))}):(this.doFilter(),this.setState({loaded:!0,updating:!1,columnsForAdmin:o},()=>this.expandAllSelected(()=>this.onAfterSelect())))}catch(r){this.showError(r)}}expandAllSelected(e){const t=[...this.state.expanded];let i=!1;this.state.selected.forEach(r=>{const o=r.split("."),n=[];for(let M=0;M!this.objects[N]))&&((c=(M=this.props).onSelect)==null||c.call(M,this.state.selected,null,e))}else this.localStorage.removeItem(`${this.props.dialogName||"App"}.objectSelected`),this.state.selected.length?this.setState({selected:[]},()=>{this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}):this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}static getDerivedStateFromProps(e,t){const i={};let r=!1;return e.expertMode!==void 0&&e.expertMode!==t.filter.expertMode&&(r=!0,i.filter={...t.filter},i.filter.expertMode=e.expertMode),r?i:null}async componentDidMount(){await this.loadAllObjects(!K0),this.props.objectsWorker?this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker):await this.props.socket.subscribeObject("*",this.onObjectChange),K0=!0,window.addEventListener("contextmenu",this.onContextMenu,!0),window.addEventListener("keydown",this.onKeyPress,!0),window.addEventListener("keyup",this.onKeyPress,!0),this.props.onAllLoaded&&setTimeout(()=>{var e,t;(t=(e=this.props).onAllLoaded)==null||t.call(e)},100)}onKeyPress=e=>{e.type==="keydown"&&e.ctrlKey&&!this.ctrlPressed?(this.ctrlPressed=!0,this.tableRef.current&&(this.tableRef.current.className="highlight-link")):e.type==="keyup"&&!e.ctrlKey&&this.ctrlPressed&&(this.ctrlPressed=!1,this.tableRef.current&&(this.tableRef.current.className=""))};componentWillUnmount(){window.removeEventListener("contextmenu",this.onContextMenu,!0),window.removeEventListener("keydown",this.onKeyPress,!0),window.removeEventListener("keyup",this.onKeyPress,!0),this.props.objectsWorker?this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker,!0):this.props.socket.unsubscribeObject("*",this.onObjectChange).catch(e=>console.error(`Cannot unsubscribe *: ${e}`)),this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.objects={}}showDeleteDialog(e){var c,l,N,u;const{id:t,obj:i,item:r}=e,o=Object.keys(this.objects);o.sort();let n=0;const M=`${t}.`;for(let L=0;LM)break;(u=(N=this.props).onObjectDelete)==null||u.call(N,t,!!((c=r.children)!=null&&c.length),!((l=i.common)!=null&&l.dontDelete),n+1)}onContextMenu=e=>{this.contextMenu&&Date.now()-this.contextMenu.ts<2e3?(e.preventDefault(),this.setState({showContextMenu:{item:this.contextMenu.item,position:{left:e.clientX+2,top:e.clientY-6}}})):this.state.showContextMenu&&(e.preventDefault(),this.setState({showContextMenu:null})),this.contextMenu=null};refreshComponent(){this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.loadAllObjects(!0).then(()=>console.log("updated!")).catch(e=>this.showError(e))}renderErrorDialog(){return this.state.error?a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:!0,onClose:()=>this.setState({error:""}),"aria-labelledby":"error-dialog-title","aria-describedby":"error-dialog-description"},a.createElement(fe,{id:"alert-dialog-title"},this.props.t("ra_Error")),a.createElement(_e,null,a.createElement(as,{id:"alert-dialog-description"},this.state.error)),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.setState({error:""}),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},this.props.t("ra_Ok")))):null}showError(e){this.setState({error:typeof e=="object"?e&&typeof e.toString=="function"?e.toString():JSON.stringify(e):e})}onSelect(e,t,i){if(this.localStorage.setItem(`${this.props.dialogName||"App"}.focused`,e),!this.props.multiSelect)this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))?(this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`),this.state.selected[0]!==e?this.setState({selected:[e],selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),i&&i()}):t&&this.props.onSelect&&this.onAfterSelect(t)):(this.localStorage.setItem(`${this.props.dialogName||"App"}.selectedNonObject`,e),this.setState({selected:[],selectedNonObject:e,focused:e},()=>{this.onAfterSelect(),i&&i()}));else if(this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))){this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`);const r=[...this.state.selected],o=r.indexOf(e);o===-1?(r.push(e),r.sort()):t||r.splice(o,1),this.setState({selected:r,selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),i&&i()})}}_renderDefinedList(e){const t=[...this.possibleCols];if(t.unshift("id"),this.props.columns&&!this.props.columns.includes("buttons")){const i=t.indexOf("buttons");i!==-1&&t.splice(i,1)}return t.filter(i=>e&&(i==="val"||i==="buttons")||!e&&i!=="val"&&i!=="buttons").map(i=>{var r;return a.createElement(_c,{onClick:()=>{if(!this.state.columnsAuto&&i!=="id"){const o=[...this.state.columns||[]],n=o.indexOf(i);n===-1?(o.push(i),o.sort()):o.splice(n,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.calculateColumnsVisibility(null,o),this.setState({columns:o})}},key:i},a.createElement(ue,{edge:"start",disabled:i==="id"||this.state.columnsAuto,checked:i==="id"||!!(this.state.columnsAuto?this.visibleCols.includes(i):(r=this.state.columns)!=null&&r.includes(i)),disableRipple:!0}),a.createElement(dt,{primary:this.texts[`filter_${i}`]||this.props.t(`ra_${i}`)}))})}renderColumnsSelectorDialog(){return this.state.columnsSelectorShow?a.createElement(Ae,{onClose:()=>this.setState({columnsSelectorShow:!1}),open:!0,sx:{"& .MuiPaper-root":m.getStyle(this.props.theme,z.dialogColumns,z[`transparent_${this.state.columnsDialogTransparent}`])}},a.createElement(fe,{sx:z.fontSizeTitle},this.props.t("ra_Configure")),a.createElement(_e,{sx:z.fontSizeTitle},a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.foldersFirst,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.foldersFirst`,this.state.foldersFirst?"false":"true"),this.setState({foldersFirst:!this.state.foldersFirst})}}),label:this.props.t("ra_Folders always first")}),a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.linesEnabled,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.lines`,this.state.linesEnabled?"false":"true"),this.setState({linesEnabled:!this.state.linesEnabled})}}),label:this.props.t("ra_Show lines between rows")}),a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.columnsAuto,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.columnsAuto`,this.state.columnsAuto?"false":"true"),this.state.columnsAuto?this.state.columns?(this.calculateColumnsVisibility(!1),this.setState({columnsAuto:!1})):(this.calculateColumnsVisibility(!1,[...this.visibleCols]),this.setState({columnsAuto:!1,columns:[...this.visibleCols]})):(this.calculateColumnsVisibility(!0),this.setState({columnsAuto:!0}))}}),label:this.props.t("ra_Auto (no custom columns)")}),a.createElement(xc,null,this._renderDefinedList(!1),this.state.columnsForAdmin&&Object.keys(this.state.columnsForAdmin).sort().map(e=>{var t;return(t=this.state.columnsForAdmin)==null?void 0:t[e].map(i=>{var r;return a.createElement(_c,{onClick:()=>{if(!this.state.columnsAuto){const o=[...this.state.columns||[]],n=`_${e}_${i.path}`,M=o.indexOf(n);M===-1?(o.push(n),o.sort()):o.splice(M,1),this.calculateColumnsVisibility(null,o),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.setState({columns:o})}},key:`${e}_${i.name}`},a.createElement(Xt,null,a.createElement(ue,{disabled:this.state.columnsAuto,edge:"start",checked:!this.state.columnsAuto&&((r=this.state.columns)==null?void 0:r.includes(`_${e}_${i.path}`)),disableRipple:!0})),a.createElement(dt,{primary:`${i.name} (${e})`}))})}),this._renderDefinedList(!0))),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.setState({columnsSelectorShow:!1}),color:"primary",startIcon:a.createElement(we,null)},this.texts.close))):null}async getAdditionalColumns(){try{const e=await this.props.socket.getAdapters();let t=null;return e.forEach(i=>t=this.parseObjectForAdmins(t,i)),t}catch(e){return console.error(`Cannot get adapters: ${e}`),null}}checkUnsubscribes(){for(let e=this.subscribes.length-1;e>=0;e--)this.recordStates.includes(this.subscribes[e])||this.unsubscribe(this.subscribes[e]);this.recordStates=[]}findItem(e,t,i,r){if(t||=e.split("."),i||=this.root,!i||!t.length)return null;if(r=(r?`${r}.`:"")+t.shift(),i.children){const o=i.children.find(n=>n.data.id===r);if(o){if(o.data.id===e)return o;if(t.length)return this.findItem(e,t,o,r)}else return null}return null}onStateChange=(e,t)=>{if(this.states[e]){const i=this.findItem(e);i!=null&&i.data.state&&(i.data.state=void 0)}t?this.states[e]=t:delete this.states[e],this.pausedSubscribes?this.statesUpdateTimer&&(clearTimeout(this.statesUpdateTimer),this.statesUpdateTimer=null):this.statesUpdateTimer||(this.statesUpdateTimer=setTimeout(()=>{this.statesUpdateTimer=null,this.forceUpdate()},300))};parseObjectForAdmins(e,t){var i;if((i=t.common)!=null&&i.adminColumns&&t.common.name){const r=t.common.adminColumns;let o;r&&typeof r!="object"?o=[r]:r&&(o=r);let n;r?n=o.map(M=>{if(typeof M!="object")return{path:M,name:M.split(".").pop()};const c=M;return c.objTypes&&typeof c.objTypes!="object"?c.objTypes=[c.objTypes]:c.objTypes||(c.objTypes=void 0),!c.name&&c.path?{path:c.path,name:c.path.split(".").pop(),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:c.path?{path:c.path,name:He(c.name||"",this.props.lang),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:(console.warn(`Admin columns for ${t._id} ignored, because path not found`),null)}).filter(M=>M):n=null,n!=null&&n.length&&(e||={},e[t.common.name]=n.sort((M,c)=>M.path>c.path?-1:M.path{if(Array.isArray(e)){let t=null;e.forEach(i=>{const{newInnerState:r,filtered:o}=this.processOnObjectChangeElement(i.id,i.obj);o||(r&&t?Object.assign(t,r):t=r)}),t&&this.setState(t),this.afterObjectUpdated()}};onObjectChange=(e,t)=>{const{newInnerState:i,filtered:r}=this.processOnObjectChangeElement(e,t);r||(i&&this.setState(i),this.afterObjectUpdated())};afterObjectUpdated(){!this.objectsUpdateTimer&&this.objects&&(this.objectsUpdateTimer=setTimeout(()=>{this.objectsUpdateTimer=null;const{info:e,root:t}=H0(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=t,this.info=e,this.pausedSubscribes||this.doFilter()},500))}updateAliases(e){var i,r,o;if(!this.objects||!((i=this.info)!=null&&i.aliasesMap)||!(e!=null&&e.startsWith("alias.")))return;const t=Object.keys(this.objects).filter(n=>n.startsWith("alias.0"));this.info.aliasesMap={};for(const n of t){const M=this.objects[n];if((o=(r=M==null?void 0:M.common)==null?void 0:r.alias)!=null&&o.id)if(typeof M.common.alias.id=="string"){const c=M.common.alias.id;this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(n)||this.info.aliasesMap[c].push(n):this.info.aliasesMap[c]=[n]}else{const c=M.common.alias.id.read;c&&(this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(n)||this.info.aliasesMap[c].push(n):this.info.aliasesMap[c]=[n]);const l=M.common.alias.id.write;l&&(this.info.aliasesMap[l]?this.info.aliasesMap[l].includes(n)||this.info.aliasesMap[l].push(n):this.info.aliasesMap[l]=[n])}}}processOnObjectChangeElement(e,t){const i=t==null?void 0:t.type;if(t&&typeof this.props.filterFunc=="function"&&!this.props.filterFunc(t)&&i!=="channel"&&i!=="device"&&i!=="folder"&&i!=="adapter"&&i!=="instance")return{newInnerState:null,filtered:!0};let r=null;if(e.startsWith("system.adapter.")&&(t==null?void 0:t.type)==="adapter"){const o=JSON.parse(JSON.stringify(this.state.columnsForAdmin));this.parseObjectForAdmins(o,t),JSON.stringify(this.state.columnsForAdmin)!==JSON.stringify(o)&&(r={columnsForAdmin:o})}return this.objects||={},t?this.objects[e]=t:this.objects[e]&&delete this.objects[e],this.updateAliases(e),{newInnerState:r,filtered:!1}}subscribe(e){this.subscribes.includes(e)||(this.subscribes.push(e),this.pausedSubscribes||this.props.socket.subscribeState(e,this.onStateChange).catch(t=>console.error(`Cannot subscribe on state ${e}: ${t}`)))}unsubscribe(e){const t=this.subscribes.indexOf(e);t!==-1&&(this.subscribes.splice(t,1),this.states[e]&&delete this.states[e],this.props.socket.unsubscribeState(e,this.onStateChange),this.pausedSubscribes&&console.warn("Unsubscribe during pause?"))}pauseSubscribe(e){!this.pausedSubscribes&&e?(this.pausedSubscribes=!0,this.subscribes.forEach(t=>this.props.socket.unsubscribeState(t,this.onStateChange))):this.pausedSubscribes&&!e&&(this.pausedSubscribes=!1,this.subscribes.forEach(t=>this.props.socket.subscribeState(t,this.onStateChange)))}clearFilter(){JSON.stringify(this.state.filter)!==JSON.stringify(Fs)&&this.setState({filter:{...Fs},filterKey:this.state.filterKey+1},()=>{var e,t;this.doFilter(),(t=(e=this.props).onFilterChanged)==null||t.call(e,{...Fs})})}isFilterEmpty(){var e,t,i,r,o;return!!this.state.filter.id||!!this.state.filter.name||!!((e=this.state.filter.room)!=null&&e.length)||!!((t=this.state.filter.func)!=null&&t.length)||!!((i=this.state.filter.role)!=null&&i.length)||!!((r=this.state.filter.type)!=null&&r.length)||!!((o=this.state.filter.custom)!=null&&o.length)}getFilterInput(e){return a.createElement($5e,{key:`${e}_${this.state.filterKey}`,styles:this.styles.filterInput,name:e,texts:this.texts,t:this.props.t,initialValue:this.state.filter[e],onChange:(t,i)=>{const r={...this.state.filter};i===void 0?delete r[t]:r[t]=i,this.setState({filter:r},()=>{var o,n;this.doFilter(),(n=(o=this.props).onFilterChanged)==null||n.call(o,r)})}})}getFilterSelect(e,t){return a.createElement(U5e,{key:`${e}_${this.state.filterKey}`,name:e,texts:this.texts,initialValue:this.state.filter[e]||[],values:t,onChange:(i,r)=>{const o={...this.state.filter};r===void 0?delete o[i]:o[i]=r,this.setState({filter:o},()=>{var n,M;this.doFilter(),(M=(n=this.props).onFilterChanged)==null||M.call(n,o)})}})}getFilterSelectRole(){return this.getFilterSelect("role",this.info.roles.map(e=>e.role))}getFilterSelectRoom(){const e=this.info.roomEnums.map(t=>{var i,r,o,n;return{name:He((r=(i=this.objects[t])==null?void 0:i.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(be,{src:((n=(o=this.objects[t])==null?void 0:o.common)==null?void 0:n.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("room",e)}getFilterSelectFunction(){const e=this.info.funcEnums.map(t=>{var i,r,o,n;return{name:He((r=(i=this.objects[t])==null?void 0:i.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(be,{src:((n=(o=this.objects[t])==null?void 0:o.common)==null?void 0:n.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("func",e)}getFilterSelectType(){const e=this.info.types.map(t=>({name:t,value:t,icon:X0[t]||null}));return this.getFilterSelect("type",e)}getFilterSelectCustoms(){if(this.info.customs.length>1){const e=this.info.customs.map(t=>({name:t==="_"?this.texts.filterCustomsWithout:t,value:t,icon:t==="_"?null:a.createElement(be,{src:_o(this.objects,t,this.props.lang,this.imagePrefix)||"",style:z.selectIcon})}));return this.getFilterSelect("custom",e)}return null}onExpandAll(e,t){var r;const i=e||this.root;t||=[],(r=i==null?void 0:i.children)==null||r.forEach(o=>{o.data.sumVisibility&&(t.push(o.data.id),this.onExpandAll(o,t))}),i===this.root&&(t.sort(),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t}))}onCollapseAll(){this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify([])),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,"[]"),this.setState({expanded:[],depth:0,selected:[]},()=>this.onAfterSelect())}expandDepth(e,t,i){var r;e||=this.root,t>0&&((r=e.children)==null||r.forEach(o=>{o.data.sumVisibility&&(jr(i,o.data.id)||(i.push(o.data.id),i.sort()),t-1>0&&this.expandDepth(o,t-1,i))}))}static collapseDepth(e,t){return t.filter(i=>i.split(".").length<=e)}onExpandVisible(){if(this.state.depth<9){const e=this.state.depth+1,t=[...this.state.expanded];this.root&&this.expandDepth(this.root,e,t),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}onStatesViewVisible(){const e=!this.state.statesView;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectStatesView`,JSON.stringify(e)),this.setState({statesView:e})}onCollapseVisible(){if(this.state.depth>0){const e=this.state.depth-1,t=xo.collapseDepth(e,this.state.expanded);this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}getEnumsForId=e=>{const t=[];return this.info.enums.forEach(i=>{var r,o,n;if((n=(o=(r=this.objects[i])==null?void 0:r.common)==null?void 0:o.members)!=null&&n.includes(e)){const M={_id:this.objects[i]._id,common:JSON.parse(JSON.stringify(this.objects[i].common)),native:this.objects[i].native,type:"enum"};M.common&&(delete M.common.members,delete M.common.custom,delete M.common.mobile),t.push(M)}}),t.length?t:void 0};_createAllEnums=async(e,t)=>{var i,r;for(let o=0;or)break}return e}return[]}async _exportObjects(e){var o;if(e.isAll){F0("allObjects.json",this.objects,e);return}if(!(this.state.selected.length||this.state.selectedNonObject)){window.alert(this.props.t("ra_Save of objects-tree is not possible"));return}const t={},i=this.state.selected[0]||this.state.selectedNonObject,r=this._getSelectedIdsForExport();for(const n of r){if(t[n]=JSON.parse(JSON.stringify(this.objects[n])),((o=t[n])==null?void 0:o.type)==="state"&&!e.noStatesByExportImport){const M=await this.props.socket.getState(n);M&&(t[n].val=M.val,t[n].ack=M.ack)}if(t[n].common){const M=this.getEnumsForId(n);M&&(t[n].common.enums=M)}}F0(`${i}.json`,t,e)}renderExportDialog(){return this.state.showExportDialog===!1?null:a.createElement(Ae,{open:!0,maxWidth:"lg"},a.createElement(fe,null,this.props.t("ra_Select type of export")),a.createElement(_e,null,a.createElement(as,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(a.Fragment,null,this.props.t("ra_You can export all objects or just the selected branch."),a.createElement("br",null),this.props.t("ra_Selected %s object(s)",this.state.showExportDialog),a.createElement("br",null),a.createElement(V,{control:a.createElement(ue,{checked:this.state.noStatesByExportImport,onChange:e=>this.setState({noStatesByExportImport:e.target.checked})}),label:this.props.t("ra_Do not export values of states")}),a.createElement("br",null),this.props.t("These options can reduce the size of the export file:"),a.createElement(V,{control:a.createElement(ue,{checked:this.state.beautifyJsonExport,onChange:e=>this.setState({beautifyJsonExport:e.target.checked})}),label:this.props.t("Beautify JSON output")}),a.createElement("br",null),a.createElement(V,{control:a.createElement(ue,{checked:this.state.excludeSystemRepositoriesFromExport,onChange:e=>this.setState({excludeSystemRepositoriesFromExport:e.target.checked})}),label:this.props.t("Exclude system repositories from export JSON")}),a.createElement(V,{control:a.createElement(ue,{checked:this.state.excludeTranslations,onChange:e=>this.setState({excludeTranslations:e.target.checked})}),label:this.props.t("Exclude translations (except english) from export JSON")})):null)),a.createElement(xe,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(q,{color:"grey",variant:"outlined",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!0,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_All objects")),"(",Object.keys(this.objects).length,")"):a.createElement(q,{color:"grey",variant:"outlined",startIcon:a.createElement(Oa,null),onClick:()=>this.setState({showAllExportOptions:!0})},this.props.t("ra_Advanced options")),a.createElement(q,{color:"primary",variant:"contained",autoFocus:!0,onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!1,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_Only selected")),"(",this.state.showExportDialog,")"),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1}),startIcon:a.createElement(we,null)},this.props.t("ra_Cancel"))))}renderRenameDialog(){var t;if(!this.state.showRenameDialog)return null;const e=this.props.objectMoveRenameDialog;return a.createElement(e,{expertMode:this.props.expertMode,onClose:()=>this.setState({showRenameDialog:null}),id:this.state.showRenameDialog.id,childrenIds:this.state.showRenameDialog.childrenIds,theme:this.props.theme,socket:this.props.socket,t:this.props.t,objectType:(t=this.objects[this.state.showRenameDialog.id])==null?void 0:t.type})}async parseJsonFile(e){try{const t=JSON.parse(e),i=Object.keys(t).length,r=t._id;if(r===void 0&&i)await this.loadObjects(t),window.alert(this.props.t("ra_%s object(s) processed",i));else{if(!r)return window.alert(this.props.t("ra_Invalid structure"));try{let o,n,M;if(t.common.enums&&(o=t.common.enums,delete t.common.enums),t.val&&(n=t.val,delete t.val),t.ack!==void 0&&(M=t.ack,delete t.ack),await this.props.socket.setObject(t._id,t),t.type==="state")if(n!=null)await this.props.socket.setState(t._id,n,M===void 0?!0:M);else{const c=await this.props.socket.getState(t._id);(!c||c.val===null||c.val===void 0)&&await this.props.socket.setState(t._id,t.common.def===void 0?null:t.common.def,!0)}o&&await this._createAllEnums(o,t._id),window.alert(this.props.t("ra_%s was imported",t._id))}catch(o){window.alert(o)}}}catch(t){window.alert(t)}}handleJsonUpload(e){var r;const t=e.target,i=((r=t.files)==null?void 0:r.length)&&t.files[0];if(i){const o=new FileReader;o.onload=n=>{var M;return this.parseJsonFile((M=n.target)==null?void 0:M.result),null},o.readAsText(i)}else window.alert(this.props.t("ra_Failed to open JSON File"))}toolTipObjectCreating=()=>{var i,r;const{t:e}=this.props;let t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];if(this.state.selected.length||this.state.selectedNonObject){const o=this.state.selected[0]||this.state.selectedNonObject;if(!(o.split(".").length<2||this.objects[o]&&((i=this.objects[o])==null?void 0:i.type)==="state"))if(this.state.filter.expertMode)switch((r=this.objects[o])==null?void 0:r.type){case"device":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"folder":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"channel":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:1},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break}else(o.startsWith("alias.0")||o.startsWith("0_userdata"))&&(t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:7},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:8},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))])}return t.length?t:e("ra_Add new child object to selected parent")};onOpenFile(){const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",t=>this.handleJsonUpload(t),!1),e.click()}renderInputJsonDialog(){const e=this.props.objectBrowserInsertJsonObjects;return this.state.showImportDialog?a.createElement(e,{onClose:t=>{this.setState({showImportDialog:!1}),t&&this.parseJsonFile(t)},themeName:this.props.themeName,themeType:this.props.themeType,t:this.props.t}):null}getToolbar(){let e=!1;if(this.state.selected.length||this.state.selectedNonObject){const t=this.state.selected[0]||this.state.selectedNonObject;t.split(".").length<2||this.objects[t]&&this.objects[t].type==="state"?e=!1:(this.state.filter.expertMode||t.startsWith("alias.0")||t.startsWith("0_userdata"))&&(e=!0)}return a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center",overflowX:"auto"}},a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},a.createElement(Le,{title:this.props.t("ra_Refresh tree"),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(W,{onClick:()=>this.refreshComponent(),disabled:this.state.updating,size:"large"},a.createElement(_N,null)))),this.props.showExpertButton&&!this.props.expertMode&&a.createElement(Le,{title:this.props.t("ra_expertMode"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expertMode",color:this.state.filter.expertMode?"secondary":"default",onClick:()=>{const t={...this.state.filter};t.expertMode=!t.expertMode,this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(t)),this.setState({filter:t})},size:"large"},a.createElement(Oa,null))),!this.props.disableColumnSelector&&this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Configure"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"columnSelector",color:this.state.columnsAuto?"primary":"default",onClick:()=>this.setState({columnsSelectorShow:!0}),size:"large"},a.createElement(hy,null))),this.props.width!=="xs"&&this.state.expandAllVisible&&a.createElement(Le,{title:this.props.t("ra_Expand all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expandAll",onClick:()=>this.onExpandAll(),size:"large"},a.createElement(lo,null))),a.createElement(Le,{title:this.props.t("ra_Collapse all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"collapseAll",onClick:()=>this.onCollapseAll(),size:"large"},a.createElement(Ti,null))),this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Expand one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expandVisible",color:"primary",onClick:()=>this.onExpandVisible(),size:"large"},a.createElement(Sc,{badgeContent:this.state.depth,color:"secondary",sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}})},a.createElement(lo,null)))),this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Collapse one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"collapseVisible",color:"primary",onClick:()=>this.onCollapseVisible(),size:"large"},a.createElement(Sc,{sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}}),badgeContent:this.state.depth,color:"secondary"},a.createElement(Ti,null)))),this.props.objectStatesView&&a.createElement(Le,{title:this.props.t("ra_Toggle the states view"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>this.onStatesViewVisible(),size:"large"},a.createElement(My,{color:this.state.statesView?"primary":"inherit"}))),a.createElement(Le,{title:this.props.t("ra_Show/Hide object descriptions"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.desc`,this.state.showDescription?"false":"true"),this.setState({showDescription:!this.state.showDescription})},size:"large"},a.createElement(gy,{color:this.state.showDescription?"primary":"inherit"}))),this.props.objectAddBoolean?a.createElement(Le,{title:this.toolTipObjectCreating(),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(W,{disabled:!e,onClick:()=>this.setState({modalNewObj:{id:this.state.selected[0]||this.state.selectedNonObject}}),size:"large"},a.createElement(Kn,null)))):null,this.props.objectImportExport&&a.createElement(Le,{title:this.props.t("ra_Add objects tree from JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:t=>{this.props.objectBrowserInsertJsonObjects?this.setState({showImportMenu:t.currentTarget}):this.onOpenFile()},size:"large"},a.createElement(go,null))),this.props.objectBrowserInsertJsonObjects?a.createElement(ws,{anchorEl:this.state.showImportMenu,open:!!this.state.showImportMenu,onClose:()=>this.setState({showImportMenu:null})},a.createElement(re,{onClick:()=>this.setState({showImportMenu:null},()=>this.onOpenFile())},a.createElement(Xt,null,a.createElement(jy,null)),a.createElement(dt,null,this.props.t("ra_From file"))),a.createElement(re,{onClick:()=>this.setState({showImportMenu:null,showImportDialog:!0})},a.createElement(Xt,null,a.createElement(Gj,null)),a.createElement(dt,null,this.props.t("ra_From text")))):null,this.props.objectImportExport&&(!!this.state.selected.length||this.state.selectedNonObject)&&a.createElement(Le,{title:this.props.t("ra_Save objects tree as JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>this.setState({showExportDialog:this._getSelectedIdsForExport().length}),size:"large"},a.createElement(go,{style:{transform:"rotate(180deg)"}})))),!!this.props.objectBrowserEditObject&&this.props.width!=="xs"&&a.createElement("div",{style:{display:"flex",whiteSpace:"nowrap"}},`${this.props.t("ra_Objects")}: ${Object.keys(this.info.objects).length}, ${this.props.t("ra_States")}: ${Object.keys(this.info.objects).filter(t=>this.info.objects[t].type==="state").length}`),this.props.objectEditBoolean&&a.createElement(Le,{title:this.props.t("ra_Edit custom config"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>{var i;const t=this.root?Mg(this.root,"state",this.objects):[];t.length?(this.pauseSubscribe(!0),t.length===1&&(this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,this.state.selected[0]),(i=this.props.router)==null||i.doNavigate(null,"custom",this.state.selected[0])),this.setState({customDialog:t,customDialogAll:!0})):this.setState({toast:this.props.t("ra_please select object")})},size:"large"},a.createElement(Jj,null))))}toggleExpanded(e){const t=JSON.parse(JSON.stringify(this.state.expanded)),i=t.indexOf(e);i===-1?(t.push(e),t.sort()):t.splice(i,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t})}onCopy(e,t){e.stopPropagation(),e.preventDefault(),t&&(m.copyToClipboard(t),t.length<50?this.setState({toast:this.props.t("ra_Copied %s",t)}):this.setState({toast:this.props.t("ra_Copied")}))}renderTooltipAccessControl=e=>{if(!e)return null;const t=[{value:"0x400",valueNum:1024,title:"read",group:"Owner"},{value:"0x200",valueNum:512,title:"write",group:"Owner"},{value:"0x40",valueNum:64,title:"read",group:"Group"},{value:"0x20",valueNum:32,title:"write",group:"Group"},{value:"0x4",valueNum:4,title:"read",group:"Everyone"},{value:"0x2",valueNum:2,title:"write",group:"Everyone"}],i=[],r=o=>{const n=e[o];t.forEach((M,c)=>{n&M.valueNum&&i.push(a.createElement("span",{key:o+c},this.texts[`acl${M.group}_${M.title}_${o}`],",",a.createElement("span",{style:o==="object"?z.rightsObject:z.rightsState},M.value)))})};return i.push(a.createElement("span",{key:"group"},`${this.texts.ownerGroup}: ${(e.ownerGroup||"").replace("system.group.","")}`)),i.push(a.createElement("span",{key:"owner"},`${this.texts.ownerUser}: ${(e.owner||"").replace("system.user.","")}`)),r("object"),e.state&&r("state"),i.length?a.createElement("span",{style:z.tooltipAccessControl},i.map(o=>o)):null};renderColumnButtons(e,t){var n,M,c,l;if(!t.data.obj)return this.props.onObjectDelete||this.props.objectEditOfAccessControl?a.createElement("div",{style:z.buttonDiv},this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonsEmptyButton,...z.cellButtonMinWidth},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:{height:15}},"---")):null,this.props.onObjectDelete&&((n=t.children)!=null&&n.length)?a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonsButtonAlone},size:"small","aria-label":"delete",title:this.texts.deleteObject,onClick:()=>{var g;const N=Object.keys(this.objects);N.sort();let u=0;const L=`${e}.`;for(let j=0;jL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((g=t.children)!=null&&g.length),!1,u+1)}},a.createElement(wt,{style:z.cellButtonsButtonIcon})):null):null;t.data.aclTooltip=t.data.aclTooltip||this.renderTooltipAccessControl(t.data.obj.acl);const i=t.data.obj.acl?t.data.obj.type==="state"?t.data.obj.acl.state:t.data.obj.acl.object:0,r=t.data.obj.acl&&(t.data.obj.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object),o=this.state.filter.expertMode||Z0(t.data.id);return[this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(Le,{key:"acl",title:t.data.aclTooltip,slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonMinWidth,opacity:1},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:z.aclText},Number.isNaN(Number(i))?Number(r).toString(16):Number(i).toString(16)))):a.createElement("div",{key:"aclEmpty",style:z.cellButtonMinWidth}),o?a.createElement(W,{key:"edit",sx:{marginRight:"2px",...z.cellButtonsButton},size:"small","aria-label":"edit",title:this.texts.editObject,onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.setState({editObjectDialog:e,editObjectAlias:!1})}},a.createElement(or,{style:z.cellButtonsButtonIcon})):a.createElement(J,{component:"div",key:"editDisabled",sx:z.cellButtonsButton}),this.props.onObjectDelete&&((M=t.children)!=null&&M.length||!((c=t.data.obj.common)!=null&&c.dontDelete))?a.createElement(W,{key:"delete",sx:z.cellButtonsButton,size:"small","aria-label":"delete",onClick:()=>{var g,j,y;const N=Object.keys(this.objects);N.sort();let u=0;const L=`${e}.`;for(let T=0;TL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((g=t.children)!=null&&g.length),!((y=(j=t.data.obj)==null?void 0:j.common)!=null&&y.dontDelete),u)},title:this.texts.deleteObject},a.createElement(wt,{style:z.cellButtonsButtonIcon})):null,this.props.objectCustomDialog&&this.info.hasSomeCustoms&&t.data.obj.type==="state"&&((l=t.data.obj.common)==null?void 0:l.type)!=="file"?a.createElement(W,{sx:{...z.cellButtonsButton,...t.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms},key:"custom",size:"small","aria-label":"config",title:this.texts.customConfig,onClick:()=>{var N;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.pauseSubscribe(!0),(N=this.props.router)==null||N.doNavigate(null,"customs",e),this.setState({customDialog:[e],customDialogAll:!1})}},a.createElement(qn,{style:z.cellButtonsButtonIcon})):null]}readHistory(e){var t,i;if(window.sparkline&&this.defaultHistory&&((i=(t=this.objects[e])==null?void 0:t.common)!=null&&i.custom)&&this.objects[e].common.custom[this.defaultHistory]){const r=new Date;r.setHours(r.getHours()-24),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0);const o=r.getTime();this.props.socket.getHistory(e,{instance:this.defaultHistory,start:o,end:Date.now(),step:36e5,from:!1,ack:!1,q:!1,addId:!1,aggregate:"minmax"}).then(n=>{const M=window.document.getElementsByClassName("sparkline");for(let c=0;cconsole.warn(`Cannot read history: ${n}`))}}getTooltipInfo(e,t){var l,N,u;const i=this.objects[e],r=this.states[e],{valFull:o,fileViewer:n}=Pn({state:r,obj:i,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,full:!0}),M=[];o==null||o.forEach(L=>{L.t===this.texts.quality&&r.q?(M.push(a.createElement("div",{style:z.cellValueTooltipBoth,key:L.t},L.t,": ",L.v)),L.nbr||M.push(a.createElement("br",{key:`${L.t}_br`}))):(M.push(a.createElement("div",{style:z.cellValueTooltipTitle,key:L.t},L.t,": ")),M.push(a.createElement("div",{style:z.cellValueTooltipValue,key:`${L.t}_v`},L.v)),L.nbr||M.push(a.createElement("br",{key:`${L.t}_br`})))});const c=((l=i==null?void 0:i.common)==null?void 0:l.role)||"";n==="image"?M.push(a.createElement("img",{style:z.cellValueTooltipImage,src:r.val,alt:e})):c==="url"||i.common.role==="url.self"||i.common.role==="url.blank"?M.unshift(a.createElement("div",{key:"ctrl",style:{textDecoration:"underline",fontWeight:"bold"}},this.texts.ctrlForLink)):this.defaultHistory&&((u=(N=i==null?void 0:i.common)==null?void 0:N.custom)!=null&&u[this.defaultHistory])&&M.push(a.createElement("svg",{key:"sparkline",className:"sparkline","data-id":e,style:{fill:"#3d85de"},width:"200",height:"30",strokeWidth:"3"})),this.setState({tooltipInfo:{el:M,id:e}},()=>t&&t())}renderColumnValue(e,t,i){var c,l;const r=t.data.obj;if(!r||!this.states)return null;if(((c=r.common)==null?void 0:c.type)==="file")return a.createElement(J,{component:"div",sx:{...z.cellValueText,...z.cellValueFile}},"[file]");if(!this.states[e])return r.type==="state"&&(this.recordStates.includes(e)||this.recordStates.push(e),this.states[e]={val:null},this.subscribe(e)),null;this.recordStates.includes(e)||this.recordStates.push(e);const o=this.states[e];let n=t.data.state;if(!n){const{valText:N}=Pn({state:o,obj:r,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma}),u=[];if(t.data.state={valTextRx:u},u.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}valText`,style:{whiteSpace:"nowrap",display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}},N.v.toString())),N.u&&u.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,style:z.cellValueTextUnit,key:`${N.v.toString()}unit`},N.u)),N.s!==void 0&&u.push(a.createElement("span",{style:z.cellValueTextState,className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}states`},"(",N.s,")")),!i){const L=N.c!==void 0?N.c:N.v||"";u.push(a.createElement(Bs,{className:"copyButton",style:this.styles.iconCopy,onClick:g=>this.onCopy(g,L),key:"cc"}))}n=t.data.state}n.style=W5e({state:o,isExpertMode:this.state.filter.expertMode,isButton:t.data.button,nonAckColor:this.props.theme.palette.nonAck});let M=n.valTextRx;return this.state.filter.expertMode||(t.data.button?M=[a.createElement(Y5e,{key:"button",style:{color:n.style.color,...z.cellValueButton}})]:t.data.switch&&(M=[a.createElement(br,{key:"switch",sx:{"& .MuiSwitch-thumb":{color:n.style.color},"& .MuiSwitch-track":{backgroundColor:this.states[e].val&&this.state.selected.includes(e)?this.props.themeType==="dark"?"#FFF !important":"#111 !important":void 0}},checked:!!this.states[e].val})])),a.createElement(Le,{key:"value",title:(l=this.state.tooltipInfo)==null?void 0:l.el,slotProps:{popper:{sx:z.cellValueTooltipBox},tooltip:{sx:z.cellValueTooltip}},onOpen:()=>this.getTooltipInfo(e,()=>this.readHistory(e)),onClose:()=>{var N;return((N=this.state.tooltipInfo)==null?void 0:N.id)===e&&this.setState({tooltipInfo:null})}},a.createElement(J,{component:"div",style:n.style,className:t.data.url?"iob-link":void 0,sx:{...z.cellValueText,height:i?void 0:$e,"& .admin-button:active":{transform:"translate(0, 2px)"}}},M))}_syncEnum(e,t,i,r){var M,c,l;if(!(t!=null&&t.length)){r&&r();return}const o=t.pop()||"",n=[];if((M=this.info.objects[o])!=null&&M.common){if((c=this.info.objects[o].common.members)!=null&&c.length){const N=this.info.objects[o].common.members.indexOf(e);if(N!==-1&&!i.includes(o)){const u=JSON.parse(JSON.stringify(this.info.objects[o]));u.common.members.splice(N,1),n.push(this.props.socket.setObject(o,u).then(()=>this.info.objects[o]=u).catch(L=>this.showError(L)))}}if(i.includes(o)&&!((l=this.info.objects[o].common.members)!=null&&l.includes(e))){const N=JSON.parse(JSON.stringify(this.info.objects[o]));N.common.members||=[],N.common.members.push(e),N.common.members.sort(),n.push(this.props.socket.setObject(o,N).then(()=>this.info.objects[o]=N).catch(u=>this.showError(u)))}}Promise.all(n).then(()=>{setTimeout(()=>this._syncEnum(e,t,i,r),0)})}syncEnum(e,t,i){const r=[...this.info[t==="func"?"funcEnums":"roomEnums"]];return new Promise(o=>{this._syncEnum(e,r,i,()=>{o()})})}renderEnumDialog(){if(!this.state.enumDialog)return null;const e=this.state.enumDialog.type,t=this.state.enumDialog.item,i=this.state.enumDialogEnums,r=this.state.enumDialog.enumsOriginal,o=(e==="room"?this.info.roomEnums:this.info.funcEnums).map(n=>{var M,c;return{name:He(((c=(M=this.objects[n])==null?void 0:M.common)==null?void 0:c.name)||n.split(".").pop()||"",this.props.lang),value:n,icon:_o(this.objects,n,this.props.lang,this.imagePrefix)}}).sort((n,M)=>n.name>M.name?1:-1);return o.forEach(n=>{n.icon&&typeof n.icon=="string"&&(n.icon=a.createElement(J,{style:z.enumIconDiv},a.createElement("img",{src:n.icon,style:z.enumIcon,alt:n.name})))}),a.createElement(Ae,{sx:{"& .MuiPaper-root":z.enumDialog},onClose:()=>this.setState({enumDialog:null}),"aria-labelledby":"enum-dialog-title",open:!0},a.createElement(fe,{id:"enum-dialog-title",style:{display:"flex",justifyContent:"space-between",width:"100%",flexWrap:"nowrap",gap:8,paddingRight:12}},e==="func"?this.props.t("ra_Define functions"):this.props.t("ra_Define rooms"),a.createElement(bt,{color:"primary",disabled:r===JSON.stringify(i),size:"small",onClick:()=>this.syncEnum(t.data.id,e,i).then(()=>this.setState({enumDialog:null,enumDialogEnums:null}))},a.createElement(We,null))),a.createElement(xc,{sx:{"&.MuiList-root":z.enumList}},o.map(n=>{let M,c,l;typeof n=="object"?(M=n.value,c=n.name,l=n.icon):(M=n,c=n);const N=`checkbox-list-label-${M}`;return a.createElement(Hg,{sx:z.headerCellSelectItem,key:M,onClick:()=>{const u=i.indexOf(M),L=JSON.parse(JSON.stringify(this.state.enumDialogEnums));u===-1?(L.push(M),L.sort()):L.splice(u,1),this.setState({enumDialogEnums:L})},secondaryAction:l},a.createElement(Xt,{sx:{"&.MuiListItemIcon-root":z.enumCheckbox}},a.createElement(ue,{edge:"start",checked:i.includes(M),tabIndex:-1,disableRipple:!0,slotProps:{input:{"aria-labelledby":N}}})),a.createElement(dt,{id:N},c))})))}renderEditRoleDialog(){var e,t;if(!this.state.roleDialog||!this.props.objectBrowserEditRole)return null;if(this.state.roleDialog&&this.props.objectBrowserEditRole){const i=this.props.objectBrowserEditRole;return a.createElement(i,{key:"objectBrowserEditRole",id:this.state.roleDialog,socket:this.props.socket,t:this.props.t,roleArray:this.info.roles,commonType:(t=(e=this.info.objects[this.state.roleDialog])==null?void 0:e.common)==null?void 0:t.type,onClose:r=>{r&&(this.info.objects[this.state.roleDialog]=r),this.setState({roleDialog:null})}})}return null}onColumnsEditCustomDialogClose(e){var i,r;const t=this.customColumnDialog;if(e){let o=t.value;t.type==="boolean"?o=o==="true"||o===!0:t.type==="number"&&(o=parseFloat(o)),this.customColumnDialog=null,this.props.socket.getObject(((r=(i=this.state.columnsEditCustomDialog)==null?void 0:i.obj)==null?void 0:r._id)||"").then(n=>{var M;if(n&&B5e(n,(M=this.state.columnsEditCustomDialog)==null?void 0:M.it,o))return this.props.socket.setObject(n._id,n);throw new Error(this.props.t("ra_Cannot update attribute, because not found in the object"))}).then(()=>this.setState({columnsEditCustomDialog:null})).catch(n=>this.showError(n))}else this.customColumnDialog=null,this.setState({columnsEditCustomDialog:null})}renderColumnsEditCustomDialog(){if(!this.state.columnsEditCustomDialog)return null;if(!this.customColumnDialog){const e=V0(this.state.columnsEditCustomDialog.obj,this.state.columnsEditCustomDialog.it);this.customColumnDialog={type:this.state.columnsEditCustomDialog.it.type||typeof e,initValue:(e??"").toString(),value:(e??"").toString()}}return a.createElement(Ae,{onClose:()=>this.setState({columnsEditCustomDialog:null}),maxWidth:"md","aria-labelledby":"custom-dialog-title",open:!0},a.createElement(fe,{id:"custom-dialog-title"},`${this.props.t("ra_Edit object field")}: ${this.state.columnsEditCustomDialog.obj._id}`),a.createElement(_e,null,a.createElement(as,{id:"alert-dialog-description"},this.customColumnDialog.type==="boolean"?a.createElement(V,{control:a.createElement(ue,{onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),defaultChecked:this.customColumnDialog.value==="true",onChange:e=>{const t=this.customColumnDialog;t.value=e.target.checked.toString();const i=t.value!==t.initValue;i===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:i})}}),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}):a.createElement(Te,{variant:"standard",defaultValue:this.customColumnDialog.value,fullWidth:!0,onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`,onChange:e=>{const t=this.customColumnDialog;t.value=e.target.value;const i=t.value!==t.initValue;i===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:i})},autoFocus:!0}))),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(!0),disabled:!this.state.customColumnDialogValueChanged,color:"primary",startIcon:a.createElement(We,null)},this.props.t("ra_Update")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(),startIcon:a.createElement(we,null)},this.props.t("ra_Cancel"))))}renderCustomValue(e,t,i){const r=V0(e,t);return r!=null?t.edit&&!this.props.notEditable&&(!t.objTypes||t.objTypes.includes(e.type))?a.createElement(J,{component:"div",style:{...z.columnCustom,...z.columnCustomEditable,...z[`columnCustom_${t.align}`]},onClick:()=>this.setState({columnsEditCustomDialog:{item:i,it:t,obj:e},customColumnDialogValueChanged:!1})},r):a.createElement(J,{component:"div",style:{...z.columnCustom,...z[`columnCustom_${t.align}`]}},r):null}renderAliasLink(e,t,i){const r=t||0,o=this.objects[this.info.aliasesMap[e][r]].common.alias.id;return o?a.createElement(J,{component:"div",onClick:n=>{n.stopPropagation(),n.preventDefault();const M=this.info.aliasesMap[e][r];this.info.aliasesMap[e].length>1&&this.setState({aliasMenu:""}),this.onSelect(M),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(M)),100)},sx:i||this.styles.aliasAlone},a.createElement("span",{className:"admin-browser-arrow"},typeof o=="string"||o.read===e&&o.write===e?"↔":o.read===e?"→":"←"),this.info.aliasesMap[e][r]):null}renderLeaf(e,t,i){var bi,Ui,$i,Yr,Qr,dc,hc,zc,wc,Ic,Cc,pc,Ac,mc;const r=e.data.id;i.count++,t=t===void 0?this.state.expanded.includes(r):t;let o;const n=e.data.obj,M=n==null?void 0:n.type;e.children||M==="folder"||M==="device"||M==="channel"||M==="meta"?o=t?a.createElement(lo,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):a.createElement(Ti,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):n&&n.common&&n.common.write===!1&&n.type==="state"?o=a.createElement(f5e,{style:this.styles.cellIdIconDocument}):o=a.createElement(m5e,{style:this.styles.cellIdIconDocument});let c=null;e.data.icon&&(typeof e.data.icon=="string"?e.data.icon.length<3?c=a.createElement("span",{className:"iconOwn",style:z.cellIdIconOwn},e.data.icon):c=a.createElement(be,{style:z.cellIdIconOwn,className:"iconOwn",src:e.data.icon,alt:""}):c=e.data.icon);const l=n==null?void 0:n.common,N=(n==null?void 0:n.type)&&X0[n.type]||a.createElement("div",{className:"itemIcon"}),u=this.levelPadding*(e.data.level||0);if(e.data.lang!==this.props.lang){const{rooms:v,per:ie}=lg(this.info,r,this.props.lang);e.data.rooms=v.join(", "),e.data.per=ie;const{funcs:Je,pef:Oe}=Ng(this.info,r,this.props.lang);e.data.funcs=Je.join(", "),e.data.pef=Oe,e.data.lang=this.props.lang}const L=this.props.multiSelect&&this.objects[r]&&(!this.props.types||this.props.types.includes(this.objects[r].type))?a.createElement(ue,{style:z.checkBox,checked:this.state.selected.includes(r)}):null;let g=!this.props.notEditable&&M==="state"&&(this.state.filter.expertMode||(l==null?void 0:l.write)!==!1);this.props.objectBrowserViewFile&&(l==null?void 0:l.type)==="file"&&(g=!0);const j=!this.props.notEditable&&this.objects[r]&&(this.state.filter.expertMode||M==="state"||M==="channel"||M==="device"),y=this.state.statesView&&(M==="state"||M==="channel"||M==="device");let T="";const d=[];if(y&&(T=(bi=this.states[r])==null?void 0:bi.from,T===void 0?T=" ":(T=T?T.replace(/^system\.adapter\.|^system\./,""):"",d.push(`${this.texts.stateChangedFrom} ${T}`)),n!=null&&n.user)){const v=n.user.replace("system.user.","");T+=`/${v}`,d.push(`${this.texts.stateChangedBy} ${v}`)}n&&(n.from&&d.push(`${this.texts.objectChangedFrom} ${n.from.replace(/^system\.adapter\.|^system\./,"")}`),n.user&&d.push(`${this.texts.objectChangedBy} ${n.user.replace(/^system\.user\./,"")}`),n.ts&&d.push(`${this.texts.objectChangedByUser} ${m.formatDate(new Date(n.ts),this.props.dateFormat||this.systemConfig.common.dateFormat)}`));let I=!1,w=null;r.startsWith("alias.")&&((Ui=l==null?void 0:l.alias)!=null&&Ui.id)?(I=typeof l.alias.id=="object",I?w=a.createElement("div",{style:z.cellIdAliasReadWriteDiv},l.alias.id.read?a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id.read),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.read)),100)},sx:this.styles.aliasReadWrite},"←",l.alias.id.read):null,l.alias.id.write?a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id.write),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.write)),100)},sx:this.styles.aliasReadWrite},"→",l.alias.id.write):null):w=a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id)),100)},sx:this.styles.aliasAlone},"→",l.alias.id)):this.info.aliasesMap[r]&&(this.info.aliasesMap[r].length>1?w=a.createElement(J,{component:"div",id:`alias_${r}`,onClick:v=>{v.stopPropagation(),v.preventDefault(),this.setState({aliasMenu:r})},sx:this.styles.aliasAlone},this.props.t("ra_%s links from aliases",this.info.aliasesMap[r].length)):w=this.renderAliasLink(r,0));let A=l==null?void 0:l.color,p;if(A&&!this.state.selected.includes(r)){const v=this.props.themeName==="dark"?"#1f1f1f":this.props.themeName==="blue"?"#222a2e":"#FFFFFF";m.colorDistance(A,v)<1e3&&(p=this.props.themeType==="dark"?"#9a9a9a":"#565656")}let h=!1;r==="0_userdata"?(A=rg(this.props.themeType),h=!0):r==="alias"?(A=og(this.props.themeType),h=!0):r==="javascript"?(A=k5e(this.props.themeType),h=!0):r==="system"?(A=ng(this.props.themeType),h=!0):r==="system.adapter"?A=ag(this.props.themeType):(!A||this.state.selected.includes(r))&&(A="inherit");const C=[];if(l!=null&&l.statusStates){const v={};Object.keys(l.statusStates).forEach(Je=>{var Tt;let Oe=l.statusStates[Je];Oe.split(".").length<3&&(Oe=`${r}.${Oe}`),v[Je]=Oe,this.states[Oe]?this.recordStates.includes(Oe)||this.recordStates.push(Oe):((Tt=this.objects[Oe])==null?void 0:Tt.type)==="state"&&(this.recordStates.includes(Oe)||this.recordStates.push(Oe),this.states[Oe]={val:null},this.subscribe(Oe))});let ie=!1;l.statusStates.errorId&&this.states[v.errorId]&&this.states[v.errorId].val&&(A=this.props.themeType==="dark"?Lg:gg,ie=!0,C.push(a.createElement(Xj,{key:"error",style:this.styles.iconDeviceError}))),v.onlineId&&this.states[v.onlineId]?ie?this.states[v.onlineId].val?C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected})):C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected})):this.states[v.onlineId].val?(A=this.props.themeType==="dark"?Sa:ka,C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected}))):(A=this.props.themeType==="dark"?va:Ya,C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected}))):v.offlineId&&this.states[v.offlineId]&&(ie?this.states[v.offlineId].val?C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected})):C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected})):this.states[v.offlineId].val?(A=this.props.themeType==="dark"?va:Ya,C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected}))):(A=this.props.themeType==="dark"?Sa:ka,C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected}))))}const E=y?m.quality2text((($i=this.states[r])==null?void 0:$i.q)||0).join(", "):null;let O=((Yr=e.data)==null?void 0:Yr.title)||"",b=!1;if(this.state.showDescription){const v=cg(e.data,this.props.lang);v&&(O=[a.createElement("div",{key:"name",style:z.cellNameDivDiv},O),a.createElement("div",{key:"desc",style:z.cellDescription},v)],b=!!v)}const k=this.props.width==="xs"&&this.state.focused===r,K=a.createElement(ts,{container:!0,wrap:"nowrap",direction:"row",sx:z.cellId,style:{width:this.columnsVisibility.id,paddingLeft:u}},a.createElement(ts,{container:!0,alignItems:"center"},L,o),a.createElement(ts,{style:{...z.cellIdSpan,...p?this.styles.invertedBackground:void 0,color:A,fontWeight:h?"bold":void 0}},a.createElement(Le,{title:P5e(e.data,this.props.lang),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,e.data.name)),w,C),a.createElement("div",{style:{...z.grow,...p?this.styles.invertedBackgroundFlex:{}}}),a.createElement(ts,{container:!0,alignItems:"center"},c),this.props.width!=="xs"?a.createElement("div",null,a.createElement(Bs,{className:k?"":"copyButton",style:z.cellCopyButton,onClick:v=>this.onCopy(v,r)})):null);let x=k&&O||this.columnsVisibility.name?a.createElement(J,{component:"div",sx:{...z.cellName,...b?z.cellNameWithDesc:void 0,width:this.props.width!=="xs"?this.columnsVisibility.name:void 0,ml:k?0:"5px"}},O,!k&&((Qr=e.data)!=null&&Qr.title)?a.createElement(J,{style:{color:A}},a.createElement(Bs,{className:"copyButton",style:z.cellCopyButton,onClick:v=>{var ie;return this.onCopy(v,(ie=e.data)==null?void 0:ie.title)}})):null):null,S;this.state.statesView?S=[k&&y&&((dc=this.states[r])!=null&&dc.from)||this.columnsVisibility.changedFrom?{el:a.createElement("div",{key:"from",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.changedFrom:void 0},title:d.join(` `)},y&&((hc=this.states[r])!=null&&hc.from)?T:null),type:"from"}:null,k&&E||this.columnsVisibility.qualityCode?{el:a.createElement("div",{key:"q",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.qualityCode:void 0},title:E||""},E),type:"quality"}:null,k&&y&&((zc=this.states[r])!=null&&zc.ts)||this.columnsVisibility.timestamp?{el:a.createElement("div",{key:"ts",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.timestamp:void 0}},y&&((wc=this.states[r])!=null&&wc.ts)?m.formatDate(new Date(this.states[r].ts),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"ts"}:null,k&&y&&((Ic=this.states[r])!=null&&Ic.lc)||this.columnsVisibility.lastChange?{el:a.createElement("div",{key:"lc",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.lastChange:void 0}},y&&((Cc=this.states[r])!=null&&Cc.lc)?m.formatDate(new Date(this.states[r].lc),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"lc"}:null]:S=[k&&(n!=null&&n.type)||this.columnsVisibility.type?{el:a.createElement("div",{key:"type",style:{...z.cellType,width:this.props.width!=="xs"?this.columnsVisibility.type:void 0}},N," ",n==null?void 0:n.type),type:"filter_type"}:null,k&&l||this.columnsVisibility.role?{el:a.createElement("div",{key:"role",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.role:"100%",cursor:this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?"text":"default"},onClick:!k&&this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0},l==null?void 0:l.role),type:"filter_role",onClick:k&&this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0}:null,k&&l||this.columnsVisibility.room?{el:a.createElement("div",{key:"room",style:{...z.cellRoom,...e.data.per?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.room:"100%",cursor:j?"text":"default"},onClick:!k&&j?()=>{const v=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(v)}})}:void 0},e.data.rooms),type:"filter_room",onClick:k&&j?()=>{const v=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(v)}})}:void 0}:null,k&&l||this.columnsVisibility.func?{el:a.createElement("div",{key:"func",style:{...z.cellFunc,...e.data.pef?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.func:"100%",cursor:j?"text":"default"},onClick:!k&&j?()=>{const v=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(v)}})}:void 0},e.data.funcs),type:"filter_func",onClick:k&&j?()=>{const v=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(v)}})}:void 0}:null];let R=((pc=this.adapterColumns)==null?void 0:pc.map(v=>a.createElement("div",{style:{...z.cellAdapter,width:this.props.width!=="xs"?this.columnsVisibility[v.id]:void 0},key:v.id,title:`${v.adapter} => ${v.pathText}`},n?this.renderCustomValue(n,v,e):null)))||null;const he=k||this.columnsVisibility.val?this.renderColumnValue(r,e,k):null;let Xe=k&&he||this.columnsVisibility.val?a.createElement("div",{style:{...z.cellValue,width:this.props.width!=="xs"?this.columnsVisibility.val:"calc(100% - 100px)",cursor:g?(l==null?void 0:l.type)==="file"?"zoom-in":e.data.button?"grab":"text":"default"},onClick:v=>{var ie,Je,Oe;if(g){if(!(!n||!this.states))if((l==null?void 0:l.type)==="file")this.setState({viewFileDialog:r});else if(e.data.url&&v.ctrlKey){if((ie=this.states[r])!=null&&ie.val&&typeof this.states[r].val=="string")if((l==null?void 0:l.role)==="url.self")window.location.href=this.states[r].val;else{const Tt=window.open(this.states[r].val,"_blank");Tt==null||Tt.focus()}}else!this.state.filter.expertMode&&e.data.button?this.props.socket.setState(r,!0).catch(Tt=>window.alert(`Cannot write state "${r}": ${Tt}`)):!this.state.filter.expertMode&&e.data.switch?this.props.socket.setState(r,!this.states[r].val).catch(Tt=>window.alert(`Cannot write state "${r}": ${Tt}`)):(this.edit={val:this.states[r]?this.states[r].val:"",q:this.states[r]&&this.states[r].q||0,ack:!1,id:r},this.setState({updateOpened:!0}))}else(l==null?void 0:l.role)==="url"||(l==null?void 0:l.role)==="url.blank"&&v.ctrlKey?(Je=this.states[r])!=null&&Je.val&&typeof this.states[r].val=="string"&&window.open(this.states[r].val,"_blank"):(l==null?void 0:l.role)==="url.self"&&v.ctrlKey&&(Oe=this.states[r])!=null&&Oe.val&&typeof this.states[r].val=="string"&&(window.location.href=this.states[r].val)}},he):null,ct=k||this.columnsVisibility.buttons?a.createElement("div",{style:{...z.cellButtons,width:this.props.width!=="xs"?this.columnsVisibility.buttons:void 0}},this.renderColumnButtons(r,e)):null,bs=null;if(this.props.width==="xs"&&this.state.focused===r){S=S.filter(ie=>ie);let v;S.length?v=S.map(ie=>ie?a.createElement("div",{key:ie.type,style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts[ie.type],":"),ie.el,a.createElement("div",{style:{flexGrow:1}}),ie.onClick?a.createElement(or,{style:z.cellCopyButtonInDetails,onClick:()=>{ie!=null&&ie.onClick&&ie.onClick()}}):null):null):v=null,R.length||(R=null),bs=a.createElement(AN,{style:{width:"100%",display:"flex",flexDirection:"column",padding:10,backgroundColor:this.props.theme.palette.mode==="dark"?"#333":"#ccc"}},a.createElement("div",{style:z.cellDetailsLine},a.createElement("div",{style:{flexGrow:1}}),a.createElement(Bs,{style:z.cellCopyButtonInDetails,onClick:ie=>this.onCopy(ie,r)})),x&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.name,":"),x,a.createElement("div",{style:{flexGrow:1}}),(Ac=e.data)!=null&&Ac.title?a.createElement(Bs,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:ie=>{var Je;return this.onCopy(ie,(Je=e.data)==null?void 0:Je.title)}}):null),v,R&&a.createElement("div",{style:z.cellDetailsLine},R),((mc=this.objects[r])==null?void 0:mc.type)==="state"&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.value,":"),Xe,a.createElement("div",{style:{flexGrow:1}}),a.createElement(Bs,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:ie=>{const{valText:Je}=Pn({state:this.states[r],obj:this.objects[r],texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma});this.onCopy(ie,Je.c!==void 0?Je.c:Je.v.toString())},key:"cc"})),ct&&a.createElement("div",{style:{...z.cellDetailsLine,justifyContent:"right"}},ct)),x=null,S=null,R=null,Xe=null,ct=null}return{row:a.createElement(ts,{container:!0,direction:"row",wrap:"nowrap",sx:m.getStyle(this.props.theme,z.tableRow,this.state.linesEnabled&&z.tableRowLines,!this.props.dragEnabled&&z.tableRowNoDragging,w&&z.tableRowAlias,I&&z.tableRowAliasReadWrite,this.state.focused===r&&this.props.multiSelect&&z.tableRowFocused,!e.data.visible&&z.filteredOut,e.data.hasVisibleParent&&!e.data.visible&&!e.data.hasVisibleChildren&&z.filteredParentOut,this.state.selected.includes(r)&&z.itemSelected,this.state.selectedNonObject===r&&z.itemSelected),key:r,id:r,onMouseDown:v=>{this.onSelect(r);let ie;"which"in v?ie=v.which===3:"button"in v&&(ie=v.button===2),ie?this.contextMenu={item:e,ts:Date.now()}:this.contextMenu=null},onDoubleClick:()=>{e.children?this.toggleExpanded(r):this.onSelect(r,!0)}},K,x,S==null?void 0:S.map(v=>v==null?void 0:v.el),R,Xe,ct),details:bs}}renderItem(e,t,i){const r=[];i=i||{count:0};const o=this.renderLeaf(e,t,i);let n;const M=this.props.DragWrapper;return this.props.dragEnabled&&M?e.data.sumVisibility?n=a.createElement(M,{key:e.data.id,item:e,style:z.draggable},o.row):n=a.createElement("div",{key:e.data.id,style:z.nonDraggable},o.row):n=o.row,e.data.id&&n&&r.push(n),o.details&&r.push(o.details),t=t===void 0?jr(this.state.expanded,e.data.id):t,(!e.data.id||t)&&(this.state.foldersFirst?e.children&&(r.push(e.children.map(c=>c.children&&(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null)),r.push(e.children.map(c=>!c.children&&(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null))):e.children&&r.push(e.children.map(c=>(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null))),r}calculateColumnsVisibility(e,t,i,r){let o=r||this.state.columnsWidths;const n=i||this.state.columnsForAdmin,M=t||this.state.columns||[],c=typeof e!="boolean"?this.state.columnsAuto:e;o=JSON.parse(JSON.stringify(o)),Object.keys(o).forEach(N=>{o[N]&&(o[N]=parseInt(o[N],10)||0)}),this.adapterColumns=[];const l=ze[this.props.width||"lg"].widths;if(c){if(this.columnsVisibility={id:ze[this.props.width||"lg"].idWidth,name:this.visibleCols.includes("name")&&l.name||0,nameHeader:this.visibleCols.includes("name")&&l.name||0,type:this.visibleCols.includes("type")&&l.type||0,role:this.visibleCols.includes("role")&&l.role||0,room:this.visibleCols.includes("room")&&l.room||0,func:this.visibleCols.includes("func")&&l.func||0,changedFrom:this.visibleCols.includes("changedFrom")&&l.changedFrom||0,qualityCode:this.visibleCols.includes("qualityCode")&&l.qualityCode||0,timestamp:this.visibleCols.includes("timestamp")&&l.timestamp||0,lastChange:this.visibleCols.includes("lastChange")&&l.lastChange||0,val:this.visibleCols.includes("val")&&l.val||0,buttons:this.visibleCols.includes("buttons")&&l.buttons||0},this.columnsVisibility.name&&!this.customWidth){let N=this.columnsVisibility.id||0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.name=`calc(100% - ${N+5}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${N+5+this.state.scrollBarWidth}px)`}else if(!this.customWidth){let N=0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.id=`calc(100% - ${N+5}px)`}}else{const N=this.props.width||"lg";this.columnsVisibility={id:o.id||ze[N].idWidth,name:M.includes("name")&&(o.name||l.name||ze[N].widths.name)||0,type:M.includes("type")&&(o.type||l.type||ze[N].widths.type)||0,role:M.includes("role")&&(o.role||l.role||ze[N].widths.role)||0,room:M.includes("room")&&(o.room||l.room||ze[N].widths.room)||0,func:M.includes("func")&&(o.func||l.func||ze[N].widths.func)||0};let u=this.columnsVisibility.id;if(this.columnsVisibility.name&&(u+=this.columnsVisibility.type||0,u+=this.columnsVisibility.role||0,u+=this.columnsVisibility.room||0,u+=this.columnsVisibility.func||0),n&&M&&Object.keys(n).sort().forEach(L=>n[L].forEach(g=>{const j=`_${L}_${g.path}`;if(M.includes(j)){const y={adapter:L,id:`_${L}_${g.path}`,name:g.name,path:g.path.split("."),pathText:g.path};g.edit&&(y.edit=!0,g.type&&(y.type=g.type),g.objTypes&&(y.objTypes=g.objTypes)),this.adapterColumns.push(y),this.columnsVisibility[j]=o[y.id]||g.width||ze[N].widths.func||ze.xl.widths.func||0,u+=this.columnsVisibility[j]}else this.columnsVisibility[j]=0})),this.adapterColumns.sort((L,g)=>L.id>g.id?-1:L.idj==="id"||typeof this.columnsVisibility[j]=="string"||!this.columnsVisibility[j]?g:g+this.columnsVisibility[j],0);this.columnsVisibility.id=`calc(100% - ${L}px)`}}}resizerMouseMove=e=>{if(this.resizerActiveDiv){let t,i;this.resizeLeft?(t=this.resizerOldWidth-e.clientX+this.resizerPosition,i=this.resizerOldWidthNext+e.clientX-this.resizerPosition):(t=this.resizerOldWidth+e.clientX-this.resizerPosition,i=this.resizerOldWidthNext-e.clientX+this.resizerPosition),this.resizerActiveName&&this.resizerNextName&&(!this.resizerMin||t>this.resizerMin)&&(!this.resizerNextMin||i>this.resizerNextMin)&&(this.resizerCurrentWidths[this.resizerActiveName]=t,this.resizerCurrentWidths[this.resizerNextName]=i,this.resizerActiveDiv.style.width=`${t}px`,this.resizerNextDiv&&(this.resizerNextDiv.style.width=`${i}px`),this.columnsVisibility[this.resizerActiveName]=t,this.columnsVisibility[this.resizerNextName]=i,this.resizerNextName==="nameHeader"?(this.columnsVisibility.name=i-this.state.scrollBarWidth,this.resizerCurrentWidths.name=i-this.state.scrollBarWidth):this.resizerActiveName==="nameHeader"&&(this.columnsVisibility.name=t-this.state.scrollBarWidth,this.resizerCurrentWidths.name=t-this.state.scrollBarWidth),this.customWidth=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=null,this.forceUpdate()},200))}};resizerMouseUp=()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveName=null,this.resizerNextName=null,this.resizerActiveDiv=null,this.resizerNextDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{if(this.storedWidths||=JSON.parse(JSON.stringify(ze[this.props.width||"lg"])),this.resizerCurrentWidths||={},this.resizerActiveDiv=e.target.parentNode,this.resizerActiveName=this.resizerActiveDiv.dataset.name||null,this.resizerActiveName){let t=0;if(e.target.dataset.left==="true"){this.resizeLeft=!0,this.resizerNextDiv=this.resizerActiveDiv.previousElementSibling;let i=this.resizerNextDiv.querySelector(".iob-ob-resize-handler");for(;this.resizerNextDiv&&!i&&t<10;)this.resizerNextDiv=this.resizerNextDiv.previousElementSibling,i=this.resizerNextDiv.querySelector(".iob-ob-resize-handler"),t++;(i==null?void 0:i.dataset.left)!=="true"&&(this.resizerNextDiv=this.resizerNextDiv.nextElementSibling)}else this.resizeLeft=!1,this.resizerNextDiv=this.resizerActiveDiv.nextElementSibling;this.resizerNextName=this.resizerNextDiv.dataset.name||null,this.resizerMin=parseInt(this.resizerActiveDiv.dataset.min,10)||0,this.resizerNextMin=parseInt(this.resizerNextDiv.dataset.min,10)||0,this.resizerPosition=e.clientX,this.resizerCurrentWidths[this.resizerActiveName]=this.resizerActiveDiv.offsetWidth,this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveName],this.resizerNextName&&(this.resizerCurrentWidths[this.resizerNextName]=this.resizerNextDiv.offsetWidth,this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerNextName]),window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};navigateKeyPress(e){var i,r;const t=this.state.selectedNonObject||this.state.selected[0];if(t){if(e.code==="ArrowUp"||e.code==="ArrowDown"){e.preventDefault();const o=[];(i=this.tableRef.current)==null||i.childNodes.forEach(l=>o.push(l.id));const n=o.indexOf(t),M=e.code==="ArrowDown"?n+1:n-1,c=o[M]||t;this.onSelect(c),this.scrollToItem(c)}if((e.code==="ArrowRight"||e.code==="ArrowLeft")&&this.toggleExpanded(t),e.code==="Delete"&&this.root&&t){const o=xo.getItemFromRoot(this.root,t);if(o){const{obj:n}=o.data;n&&!((r=n.common)!=null&&r.dontDelete)&&this.showDeleteDialog({id:t,obj:n,item:o})}}}}static getItemFromRoot(e,t){const i=t.split(".");let r="",o=e;for(let n=0;n{this.customWidth=!1,ze[this.props.width||"lg"]=JSON.parse(JSON.stringify(this.storedWidths)),this.calculateColumnsVisibility(),this.localStorage.removeItem(`${this.props.dialogName||"App"}.table`),this.forceUpdate()};renderHandleRight(){return a.createElement(J,{component:"div",className:"iob-ob-resize-handler",sx:{...z.resizeHandle,...z.resizeHandleRight},onMouseDown:this.resizerMouseDown,onDoubleClick:this.resizerReset,title:this.props.t("ra_Double click to reset table layout")})}renderHeader(){let e=null;return!this.columnsVisibility.buttons&&!this.isFilterEmpty()&&(e=a.createElement(W,{onClick:()=>this.clearFilter(),style:z.buttonClearFilter,title:this.props.t("ra_Clear filter"),size:"large"},a.createElement(E5e,null),a.createElement(we,{style:z.buttonClearFilterIcon}))),this.props.width==="xs"?a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:"100%"}},this.getFilterInput("id"))):a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.id,position:"relative"},"data-min":240,"data-name":"id"},this.getFilterInput("id"),this.renderHandleRight()),this.columnsVisibility.name?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.nameHeader,position:"relative"},"data-min":100,"data-name":"nameHeader"},this.getFilterInput("name"),this.renderHandleRight()):null,!this.state.statesView&&a.createElement(a.Fragment,null,this.columnsVisibility.type?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.type,position:"relative"},"data-min":100,"data-name":"type"},this.getFilterSelectType(),this.renderHandleRight()):null,this.columnsVisibility.role?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.role,position:"relative"},"data-min":100,"data-name":"role"},this.getFilterSelectRole(),this.renderHandleRight()):null,this.columnsVisibility.room?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.room,position:"relative"},"data-min":100,"data-name":"room"},this.getFilterSelectRoom(),this.renderHandleRight()):null,this.columnsVisibility.func?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.func,position:"relative"},"data-min":100,"data-name":"func"},this.getFilterSelectFunction(),this.renderHandleRight()):null),this.state.statesView&&a.createElement(a.Fragment,null,a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.changedFrom,position:"relative"},"data-min":100,"data-name":"changedFrom"},this.props.t("ra_Changed from"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.qualityCode,position:"relative"},"data-min":100,"data-name":"qualityCode"},this.props.t("ra_Quality code"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.timestamp,position:"relative"},"data-min":100,"data-name":"timestamp"},this.props.t("ra_Timestamp"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.lastChange,position:"relative"},"data-min":100,"data-name":"lastChange"},this.props.t("ra_Last change"),this.renderHandleRight())),this.adapterColumns.map(t=>a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility[t.id]},title:t.adapter,key:t.id,"data-min":100,"data-name":t.id},t.name)),this.columnsVisibility.val?a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.val,position:"relative"},"data-min":120,"data-name":"val"},this.props.t("ra_Value"),e):null,this.columnsVisibility.buttons?a.createElement("div",{title:this.texts.filter_custom,style:{...z.headerCell,width:this.columnsVisibility.buttons}}," ",this.getFilterSelectCustoms()):null)}renderToast(){return a.createElement(Zn,{open:!!this.state.toast,autoHideDuration:3e3,onClick:()=>this.setState({toast:""}),onClose:()=>this.setState({toast:""}),message:this.state.toast,action:a.createElement(W,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({toast:""})},a.createElement(we,{fontSize:"small"}))})}componentDidUpdate(){if(this.tableRef.current){const e=this.tableRef.current.offsetWidth-this.tableRef.current.clientWidth;this.state.scrollBarWidth!==e?setTimeout(()=>this.setState({scrollBarWidth:e}),100):this.selectFirst&&this.scrollToItem(this.selectFirst)}}scrollToItem(e){this.selectFirst="";const t=window.document.getElementById(e);t==null||t.scrollIntoView({behavior:"auto",block:"center",inline:"center"})}renderCustomDialog(){if(this.state.customDialog&&this.props.objectCustomDialog){const e=this.props.objectCustomDialog;return a.createElement(e,{reportChangedIds:t=>this.changedIds=[...t],objectIDs:this.state.customDialog,allVisibleObjects:!!this.state.customDialogAll,expertMode:this.state.filter.expertMode,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,t:this.props.t,lang:this.props.lang,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,objects:this.objects,customsInstances:this.info.customs,onClose:()=>{var t;this.pauseSubscribe(!1),this.setState({customDialog:null}),this.changedIds&&(this.changedIds=null,this.forceUpdate()),(t=this.props.router)==null||t.doNavigate("tab-objects")},systemConfig:this.systemConfig})}return null}onUpdate(e){this.props.socket.setState(this.edit.id,{val:e.val,ack:e.ack,q:e.q||0,expire:e.expire||void 0}).catch(t=>this.showError(`Cannot write value: ${t}`))}renderEditObjectDialog(){if(!this.state.editObjectDialog||!this.props.objectBrowserEditObject)return null;const e=this.props.objectBrowserEditObject;return a.createElement(e,{key:this.state.editObjectDialog,obj:this.objects[this.state.editObjectDialog],roleArray:this.info.roles,objects:this.objects,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,dialogName:this.props.dialogName,aliasTab:this.state.editObjectAlias,t:this.props.t,expertMode:!!this.state.filter.expertMode,onNewObject:t=>this.props.socket.setObject(t._id,t).then(()=>this.setState({editObjectDialog:t._id,editObjectAlias:!1},()=>this.onSelect(t._id))).catch(i=>this.showError(`Cannot write object: ${i}`)),onClose:t=>{var i,r;if(t){let o;this.state.editObjectDialog.startsWith("alias.")&&JSON.stringify((i=this.objects[this.state.editObjectDialog].common)==null?void 0:i.alias)!==JSON.stringify((r=t.common)==null?void 0:r.alias)&&(o=this.state.editObjectDialog),this.props.socket.setObject(t._id,t).then(()=>{o&&this.subscribes.includes(o)&&(this.unsubscribe(o),setTimeout(()=>this.subscribe(o),100))}).catch(n=>this.showError(`Cannot write object: ${n}`))}this.setState({editObjectDialog:"",editObjectAlias:!1})},width:this.props.width})}renderViewObjectFileDialog(){if(!this.state.viewFileDialog||!this.props.objectBrowserViewFile)return null;const e=this.props.objectBrowserViewFile;return a.createElement(e,{key:"viewFile",obj:this.objects[this.state.viewFileDialog],socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({viewFileDialog:""})})}renderAliasEditorDialog(){if(!this.props.objectBrowserAliasEditor||!this.state.showAliasEditor)return null;const e=this.props.objectBrowserAliasEditor;return a.createElement(e,{key:"editAlias",obj:this.objects[this.state.showAliasEditor],roleArray:this.info.roles,objects:this.objects,socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({showAliasEditor:""}),onRedirect:(t,i)=>setTimeout(()=>this.onSelect(t,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(t),setTimeout(()=>this.setState({editObjectDialog:t,showAliasEditor:"",editObjectAlias:!0}),300)})),i||0)})}showAddDataPointDialog(e,t,i){this.setState({showContextMenu:null,modalNewObj:{id:e,initialType:t,initialStateType:i}})}renderAliasMenu(){return this.state.aliasMenu?a.createElement(ws,{key:"aliasmenu",open:!0,anchorEl:window.document.getElementById(`alias_${this.state.aliasMenu}`),onClose:()=>this.setState({aliasMenu:""})},this.info.aliasesMap[this.state.aliasMenu].map((e,t)=>a.createElement(re,{key:e,onClick:()=>this.onSelect(e)},a.createElement(dt,null,this.renderAliasLink(this.state.aliasMenu,t,{"& .admin-browser-arrow":{mr:"8px"}}))))):null}renderContextMenu(){var L,g,j,y,T,d,I;if(!this.state.showContextMenu)return null;const e=this.state.showContextMenu.item,t=e.data.id,i=[],r=e.data.obj;let o="";if(this.props.objectEditOfAccessControl&&this.state.filter.expertMode)if(!r)o="---";else{const w=r.acl?r.type==="state"?r.acl.state:r.acl.object:0,A=r.acl&&(r.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object);o=Number.isNaN(Number(w))?Number(A).toString(16):Number(w).toString(16)}const n=!this.props.notEditable&&r&&(this.state.filter.expertMode||r.type==="state"||r.type==="channel"||r.type==="device"),M=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="channel"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",c=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",l=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",N=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",u={EDIT:{key:"0",visibility:!!(this.props.objectBrowserEditObject&&r&&(this.state.filter.expertMode||Z0(t))),icon:a.createElement(or,{fontSize:"small",style:this.styles.contextMenuEdit}),label:this.texts.editObject,onClick:()=>this.setState({editObjectDialog:e.data.id,showContextMenu:null,editObjectAlias:!1})},EDIT_VALUE:{key:"1",visibility:!!(this.states&&!this.props.notEditable&&r&&r.type==="state"&&((L=r.common)==null?void 0:L.type)!=="file"&&(this.state.filter.expertMode||r.common.write!==!1)),icon:a.createElement(iy,{fontSize:"small",style:this.styles.contextMenuEditValue}),label:this.props.t("ra_Edit value"),onClick:()=>{var w;this.edit={val:this.states[t]?this.states[t].val:"",q:((w=this.states[t])==null?void 0:w.q)||0,ack:!1,id:t},this.setState({updateOpened:!0,showContextMenu:null})}},VIEW:{visibility:!!this.props.objectBrowserViewFile&&(r==null?void 0:r.type)==="state"&&((g=r.common)==null?void 0:g.type)==="file",icon:a.createElement(qj,{fontSize:"small",style:this.styles.contextMenuView}),label:this.props.t("ra_View file"),onClick:()=>this.setState({viewFileDialog:(r==null?void 0:r._id)||"",showContextMenu:null})},CUSTOM:{key:"2",visibility:!(this.props.objectCustomDialog&&this.info.hasSomeCustoms&&r&&r.type==="state"&&((j=r.common)==null?void 0:j.type)!=="file"),icon:a.createElement(qn,{fontSize:"small",style:e.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),style:this.styles.contextMenuCustom,label:this.texts.customConfig,onClick:()=>{var w;this.pauseSubscribe(!0),(w=this.props.router)==null||w.doNavigate(null,"customs",t),this.setState({customDialog:[t],showContextMenu:null})}},ACL:{key:"3",visibility:!!o,icon:o,iconStyle:{fontSize:"smaller"},listItemIconStyle:this.styles.contextMenuACL,style:this.styles.contextMenuACL,label:this.props.t("ra_Edit ACL"),onClick:()=>this.setState({showContextMenu:null,modalEditOfAccess:!0,modalEditOfAccessObjData:e.data})},ROLE:{key:"4",visibility:!!(this.state.filter.expertMode&&n&&this.props.objectBrowserEditRole),icon:a.createElement(Uj,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit role"),onClick:()=>this.setState({roleDialog:e.data.id,showContextMenu:null})},FUNCTION:{key:"5",visibility:!!n,icon:a.createElement(Yj,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit function"),onClick:()=>{const w=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ROOM:{key:"6",visibility:!!n,icon:a.createElement(Fj,{fontSize:"small",style:this.styles.contextMenuRoom}),label:this.props.t("ra_Edit room"),onClick:()=>{const w=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ALIAS:{key:"7",visibility:!!(!this.props.notEditable&&this.props.objectBrowserAliasEditor&&this.props.objectBrowserEditObject&&(r==null?void 0:r.type)==="state"&&((y=r.common)==null?void 0:y.type)!=="file"),icon:a.createElement(SN,{style:(T=r==null?void 0:r.common)!=null&&T.alias?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),label:this.info.aliasesMap[e.data.id]||e.data.id.startsWith("alias.0.")?this.props.t("ra_Edit alias"):this.props.t("ra_Create alias"),onClick:()=>{var w;(w=r==null?void 0:r.common)!=null&&w.alias?this.setState({showContextMenu:null,editObjectDialog:e.data.id,editObjectAlias:!0}):this.setState({showContextMenu:null,showAliasEditor:e.data.id})}},CREATE:{key:"+",visibility:(e.data.id.startsWith("0_userdata.0")||e.data.id.startsWith("javascript."))&&(M||c||l||N),icon:a.createElement(Kn,{fontSize:"small",style:this.styles.cellButtonsButtonWithCustoms}),style:z.contextMenuWithSubMenu,label:this.texts.create,subMenu:[{label:this.texts.createBooleanState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","boolean")},{label:this.texts.createNumberState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","number")},{label:this.texts.createStringState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","string")},{label:this.texts.createState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state")},{label:this.texts.createChannel,visibility:c,icon:a.createElement(sg,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"channel")},{label:this.texts.createDevice,visibility:l,icon:a.createElement(ig,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"device")},{label:this.texts.createFolder,icon:a.createElement(fN,{fontSize:"small"}),visibility:N,onClick:()=>this.showAddDataPointDialog(e.data.id,"folder")}]},RENAME:{key:"8",visibility:!!(!this.props.notEditable&&this.props.objectMoveRenameDialog&&!e.data.id.startsWith("system.")&&e.data.id.split(".").length>2&&(this.props.expertMode||e.data.id.startsWith("javascript.0.")||e.data.id.startsWith("0_userdata.0."))),icon:a.createElement(Zj,null),label:this.props.t("ra_Rename_Move_Copy"),onClick:()=>{const w=Object.keys(this.objects),A=`${e.data.id}.`;this.setState({showContextMenu:null,showRenameDialog:{id:e.data.id,childrenIds:w.filter(p=>p.startsWith(A))}})}},DELETE:{key:"Delete",visibility:!!(this.props.onObjectDelete&&((d=e.children)!=null&&d.length||r&&!((I=r.common)!=null&&I.dontDelete))),icon:a.createElement(wt,{fontSize:"small",style:this.styles.contextMenuDelete}),style:this.styles.contextMenuDelete,label:this.texts.deleteObject,onClick:()=>this.setState({showContextMenu:null},()=>this.showDeleteDialog({id:t,obj:r||{},item:e}))}};return Object.keys(u).forEach(w=>{var A,p;u[w].visibility&&(u[w].subMenu?(i.push(a.createElement(re,{key:w,href:"",onClick:h=>this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position,subItem:w,subAnchor:h.target}}),style:u[w].style},a.createElement(Xt,{style:{...u[w].iconStyle,...u[w].listItemIconStyle}},u[w].icon),a.createElement(dt,null,u[w].label,"..."),a.createElement("div",{style:{...z.contextMenuKeys,opacity:1}},a.createElement(kj,null)))),((A=this.state.showContextMenu)==null?void 0:A.subItem)===w&&i.push(a.createElement(ws,{key:"subContextMenu",open:!0,anchorEl:this.state.showContextMenu.subAnchor,onClose:()=>{this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position}}),this.contextMenu=null}},(p=u[w].subMenu)==null?void 0:p.map(h=>h.visibility?a.createElement(re,{key:h.label,onClick:h.onClick,style:h.style},a.createElement(Xt,{style:{...h.iconStyle,...h.listItemIconStyle||void 0}},h.icon),a.createElement(dt,null,h.label)):null)))):i.push(a.createElement(re,{key:w,onClick:u[w].onClick,sx:u[w].style},a.createElement(Xt,{style:{...u[w].iconStyle,...u[w].listItemIconStyle}},u[w].icon),a.createElement(dt,null,u[w].label),u[w].key?a.createElement("div",{style:z.contextMenuKeys},`Alt+${u[w].key==="Delete"?this.props.t("ra_Del"):u[w].key}`):null)))}),i.length?a.createElement(ws,{key:"contextMenu",open:!0,onKeyUp:w=>{w.preventDefault(),w.altKey&&Object.keys(u).forEach(A=>{w.key===u[A].key&&u[A].onClick&&u[A].onClick()})},anchorReference:"anchorPosition",anchorPosition:this.state.showContextMenu.position,onClose:()=>{this.setState({showContextMenu:null}),this.contextMenu=null}},i):(setTimeout(()=>this.setState({showContextMenu:null}),100),null)}renderEditValueDialog(){var r;if(!this.state.updateOpened||!this.props.objectBrowserValue)return null;if(!this.edit.id)return console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`),null;if(!this.objects[this.edit.id])return console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`),null;const e=(r=this.objects[this.edit.id].common)!=null&&r.type?this.objects[this.edit.id].common.type:typeof this.edit.val,t=this.objects[this.edit.id].common.role,i=this.props.objectBrowserValue;return a.createElement(i,{t:this.props.t,lang:this.props.lang,type:e,role:t||"",states:m.getStates(this.objects[this.edit.id]),themeType:this.props.themeType,theme:this.props.theme,expertMode:!!this.state.filter.expertMode,value:this.edit.val,socket:this.props.socket,object:this.objects[this.edit.id],defaultHistory:this.defaultHistory,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,onClose:o=>{this.setState({updateOpened:!1}),o&&this.onUpdate(o)},width:this.props.width})}doFilter(e){if(!this.objects||!this.root)return;e||this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(this.state.filter));const t={count:0};xa(this.root,this.state.filter,this.props.lang,this.objects,void 0,t,this.props.customFilter,this.props.types),t.count<500&&!this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!0})):t.count>=500&&this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!1})):this.forceUpdate()}render(){if(this.recordStates=[],this.unsubscribeTimer&&clearTimeout(this.unsubscribeTimer),this.styleTheme!==this.props.themeType&&(this.styles={cellIdIconFolder:m.getStyle(this.props.theme,z.cellIdIconFolder),cellIdIconDocument:m.getStyle(this.props.theme,z.cellIdIconDocument),iconDeviceError:m.getStyle(this.props.theme,z.iconDeviceError),iconDeviceConnected:m.getStyle(this.props.theme,z.iconDeviceConnected),iconDeviceDisconnected:m.getStyle(this.props.theme,z.iconDeviceDisconnected),cellButtonsButtonWithCustoms:m.getStyle(this.props.theme,z.cellButtonsButtonWithCustoms),invertedBackground:m.getStyle(this.props.theme,z.invertedBackground),invertedBackgroundFlex:m.getStyle(this.props.theme,z.invertedBackgroundFlex),contextMenuEdit:m.getStyle(this.props.theme,z.contextMenuEdit),contextMenuEditValue:m.getStyle(this.props.theme,z.contextMenuEditValue),contextMenuView:m.getStyle(this.props.theme,z.contextMenuView),contextMenuCustom:m.getStyle(this.props.theme,z.contextMenuCustom),contextMenuACL:m.getStyle(this.props.theme,z.contextMenuACL),contextMenuRoom:m.getStyle(this.props.theme,z.contextMenuRoom),contextMenuRole:m.getStyle(this.props.theme,z.contextMenuRole),contextMenuDelete:m.getStyle(this.props.theme,z.contextMenuDelete),filterInput:m.getStyle(this.props.theme,z.headerCellInput,z.filterInput),iconCopy:m.getStyle(this.props.theme,z.cellButtonsValueButton,z.cellButtonsValueButtonCopy),aliasReadWrite:m.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasReadWrite),aliasAlone:m.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasAlone)},this.styleTheme=this.props.themeType),this.unsubscribeTimer=setTimeout(()=>{this.unsubscribeTimer=null,this.checkUnsubscribes()},200),this.expertMode!==!!this.state.filter.expertMode&&(this.expertMode=!!this.state.filter.expertMode,this.doFilter(!0)),!this.state.loaded)return a.createElement(ko,{key:`${this.props.dialogName}_c`});const e=this.root?this.renderItem(this.root,void 0):null;return a.createElement(_5e,{key:this.props.dialogName},a.createElement("style",null,` @keyframes newValueAnimation-light { 0% { diff --git a/admin/assets/index-Dxq5yPh9.js b/admin/assets/index-Bs9TcrAn.js similarity index 99% rename from admin/assets/index-Dxq5yPh9.js rename to admin/assets/index-Bs9TcrAn.js index e5cb012fa..05946fbdd 100644 --- a/admin/assets/index-Dxq5yPh9.js +++ b/admin/assets/index-Bs9TcrAn.js @@ -1 +1 @@ -import{j as n}from"./createSvgIcon-DYs_tNrE.js";import{c as E,h as yt,j as M,m as nt,k as lt,l as Dt,b as ut,o as xt}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as u}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{u as kt,a as St,M as Y,C as et,G as Nt,b as $t,c as bt,I as qt,S as J,d as Bt,e as ft,j as Mt,D as Ht,f as Wt}from"./index-BDO4Fqdo.js";import{_ as wt,b as Ct,h as vt,i as jt,p as Tt,f as Et,g as mt,o as Pt,Y as Ut,Z as Ft,C as Jt,D as st}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{I as Lt}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js";import"./preload-helper-BDBacUwf.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";function zt(e){const s=kt().getMonitor(),[i,a]=St(s,e);return E(()=>s.subscribeToOffsetChange(a)),E(()=>s.subscribeToStateChange(a)),i}let V;function Gt(){return V||(V=new Image,V.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),V}const Kt="_wrapperRules_nnott_1",Qt="_rootWrapper_nnott_9",Yt="_addClass_nnott_14",ot={wrapperRules:Kt,rootWrapper:Qt,addClass:Yt},Zt="_switchesItem_10ls3_1",Xt="_switchesItemActive_10ls3_28",Vt="_iconTheme_10ls3_36",it={switchesItem:Zt,switchesItemActive:Xt,iconTheme:Vt},It=({name:e,id:t,active:s,icon:i,adapter:a,socket:o,onDoubleClick:c,title:l,onTouchMove:d,style:j})=>n.jsxs("div",{onDoubleClick:c,onTouchMove:d,title:l?u.I18n.t(l):void 0,className:u.Utils.clsx(it.switchesItem,s&&it.switchesItemActive,`block-${t}`),children:[n.jsx(Y,{iconName:i,className:it.iconTheme,adapter:a,socket:o,style:j}),n.jsx("span",{children:e?u.I18n.t(e):""})]},t),Rt="_cardStyle_8rq8v_1",tn="_cardStyleActive_8rq8v_17",nn="_controlMenu_8rq8v_22",en="_closeBtn_8rq8v_31",sn="_isDelete_8rq8v_73",on="_drag_mobile_8rq8v_90",G={cardStyle:Rt,cardStyleActive:tn,controlMenu:nn,closeBtn:en,isDelete:sn,drag_mobile:on};function K(e,t,s){let i;switch(e){case"actions":if(s==="else")return i={...t,actions:{...t[e],else:[...t[e].else]}},i;if(s==="then")return i={...t,actions:{...t[e],then:[...t[e].then]}},i;throw console.error(`Unknown additionalParameter: ${s}`),new Error(`Unknown additionalParameter: ${s}`);case"triggers":return i={...t,triggers:[...t.triggers]},i;case"conditions":return i={...t,conditions:[...t.conditions]},i;default:throw new Error(`Unknown name: ${e}`)}}function z(e,t,s,i){var a;switch(e){case"actions":return t.actions[s]=t.actions[s].filter(o=>o._id!==i),t;case"conditions":return t.conditions[s]=(a=t.conditions[s])==null?void 0:a.filter(o=>o._id!==i),t;default:return t.triggers=t.triggers.filter(o=>o._id!==i),t}}function cn(e,t,s){const{_id:i,acceptedBy:a}=e;let o;if(!a||!t[a])return console.warn(`Cannot find ${a}`),t;switch(a){case"actions":if(o=t.actions[s].find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.actions[s].indexOf(o);t.actions[s][c]=e}return t;case"conditions":if(o=t.conditions[s].find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.conditions[s].indexOf(o);t.conditions[s][c]=e}return t;default:if(o=t.triggers.find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.triggers.indexOf(o);t.triggers[c]=e}return t}}const Ot=yt(e=>{var N;const{setUserRules:t,userRules:s,_id:i,id:a,blockValue:o,active:c,acceptedBy:l,isTourOpen:d,setTourStep:j,tourStep:O}=e,[I,_]=M(null),{blocks:r,socket:k,onUpdate:H,setOnUpdate:w,onDebugMessage:f,enableSimulation:x}=nt(et),p=lt(h=>r==null?void 0:r.find(b=>b.getStaticData().id===h),[r]),g=lt(h=>{const b=cn(h,s,o);b&&t(b)},[s]),C=h=>{h.currentTarget!==I&&_(h.currentTarget)},q=()=>_(null),T=Dt(()=>{const h=p(a)||Nt;return n.jsx(h,{...e,notFound:!p(a),isTourOpen:d,setTourStep:j,tourStep:O,onUpdate:H,setOnUpdate:w,enableSimulation:x,onDebugMessage:f,onChange:g,className:void 0,socket:k})},[s,H,f,x]),[S,B]=M(!1);return n.jsxs("div",{onMouseMove:C,onMouseEnter:C,onMouseLeave:q,onMouseDown:h=>{if(h.ctrlKey){let b;const v=K(l,s,o);l==="conditions"?(b=v.conditions[o].find(m=>m._id===i),b&&v.conditions[o].splice(v.conditions[o].indexOf(b),0,{...b,_id:Date.now()})):l==="actions"?(b=v.actions[o].find(m=>m._id===i),b&&v.actions[o].splice(v.actions[o].indexOf(b),0,{...b,_id:Date.now()})):(b=v.triggers.find(m=>m._id===i),b&&v.triggers.splice(v[l].indexOf(b),0,{...b,_id:Date.now()})),t(v)}},id:"height",style:c?{width:(((N=document.getElementById("width"))==null?void 0:N.clientWidth)||0)-70}:void 0,className:`${G.cardStyle} ${c?G.cardStyleActive:null} ${S?G.isDelete:null}`,children:[n.jsx("div",{className:G.drag_mobile}),T,t&&n.jsx("div",{className:G.controlMenu,style:I?{opacity:1}:{opacity:0},children:n.jsx("div",{onClick:()=>{let h=K(l,s,o);h=z(l,h,o,i),B(!0),setTimeout(()=>{l==="triggers"&&w(!0),t(h)},300)},className:G.closeBtn})})]})}),rn={position:"fixed",pointerEvents:"none",zIndex:100,left:0,top:0,width:"100%",height:"100%"},an=(e,t,s)=>{if(!e||!t)return{display:"none"};let{x:i,y:a}=t;const o=`translate(${i}px, ${a}px)`;return{transform:o,WebkitTransform:o}},ln=e=>{const{itemType:t,isDragging:s,item:i,initialOffset:a,currentOffset:o,targetIds:c}=zt(d=>({item:d.getItem(),itemType:d.getItemType(),initialOffset:d.getInitialSourceClientOffset(),currentOffset:d.getSourceClientOffset(),isDragging:d.isDragging(),targetIds:d.getTargetIds()})),l=()=>t==="box"?c.length?n.jsx(Ot,{active:!0,...i,allBlocks:e.allBlocks}):n.jsx(It,{active:!0,...i,socket:e.socket}):null;return s?n.jsx("div",{style:rn,children:n.jsx("div",{style:an(a,o),children:l()})}):null},dn="_border_wrpm3_1",fn="_emptyBlockStyle_wrpm3_6",mn="_emptyBlock_wrpm3_6",gn="_selectOnChange_wrpm3_22",hn="_selectOnChangeHelp_wrpm3_28",_n="_selectOnChangeHelpIcon_wrpm3_34",pn="_emptyBlockNone_wrpm3_49",un="_mainBlockItemRules_wrpm3_55",xn="_nameBlockItems_wrpm3_63",bn="_contentBlockItem_wrpm3_73",wn="_wrapperMargin_wrpm3_81",Cn="_contentHeightOn_wrpm3_87",vn="_contentHeightOff_wrpm3_99",jn="_cardAdd_wrpm3_105",In="_blockCardAdd_wrpm3_125",On="_addClassOverflow_wrpm3_136",An="_addClassHeight_wrpm3_140",D={border:dn,emptyBlockStyle:fn,emptyBlock:mn,selectOnChange:gn,selectOnChangeHelp:hn,selectOnChangeHelpIcon:_n,emptyBlockNone:pn,mainBlockItemRules:un,nameBlockItems:xn,contentBlockItem:bn,wrapperMargin:wn,contentHeightOn:Cn,contentHeightOff:vn,cardAdd:jn,blockCardAdd:In,addClassOverflow:On,addClassHeight:An};function dt(e,t){const[s,i]=M(window.localStorage.getItem(t)?JSON.parse(window.localStorage.getItem(t)||""):e);return[s,o=>{window.localStorage.setItem(t,JSON.stringify(o)),i(o)},!!window.localStorage.getItem(t)]}function yn(e,t){let s=0,i=null,a;return function(...o){const c=Date.now();a=o,c-s>=t?(s=c,e.apply(this,o)):i||(i=setTimeout(()=>{s=Date.now(),i=null,e.apply(this,a)},t-(c-s)))}}function tt(e){if(Array.isArray(e))return e.map(t=>tt(t));if(typeof e=="function")return e.bind(null);if(e&&typeof e=="object"){const t={};return Object.keys(e).forEach(s=>{t[s]=tt(e[s])}),t}return e}const ct=yn((e,t)=>e(t),0);function R(e,t){const s=t.find(i=>i._id===e);return{card:s,index:s?t.indexOf(s):-1}}function rt(e,t,s,i,a,o,c,l,d){const{card:j,index:O}=R(e,s);if(!(Ot&&l>d)&&j&&O!==t){const I=tt(s);I.splice(O,1),I.splice(t,0,j);const _=tt(a);switch(o){case"actions":_.actions[c]=I,ct(i,_);return;case"conditions":_.conditions[c]=I,ct(i,_);return;default:_.triggers=I,ct(i,_);return}}}const Dn="_drag_7xfhc_1",kn="_root_7xfhc_11",gt={drag:Dn,root:kn},At=({typeBlock:e,allProperties:t,id:s,isActive:i,setUserRules:a,userRules:o,children:c,_id:l,blockValue:d})=>{const{setOnUpdate:j}=nt(et),[{opacity:O},I,_]=$t({type:"box",item:()=>({...t,id:s,isActive:i,_id:l}),end:(w,f)=>{const{acceptedBy:x}=w,p=f.getDropResult();let g;if(!p)return typeof l=="number"&&!f.getTargetIds().length&&(g=K(x,o,d),g=z(x,g,d,l),a(g)),null;if(p.blockValue!==d){const C=typeof l=="number"?l:Date.now();g=K(x,o,p.blockValue);const q={id:w.id,acceptedBy:w.acceptedBy};switch(x){case"actions":return d&&(g=z("actions",g,d,C)),g=z("actions",g,p.blockValue,C),g.actions[p.blockValue].push({...q,_id:C}),a(g);case"conditions":return typeof d=="number"&&(g=z("conditions",g,d,C)),g=z("conditions",g,p.blockValue,C),g.conditions[p.blockValue].push({...q,_id:C}),a(g);default:return j(!0),g=z("triggers",g,p.blockValue,C),g.triggers.push({...q,_id:C}),a(g)}}},collect:w=>({opacity:w.isDragging()?.4:1,isDragging:w.isDragging()})}),r=ut(null),[,k]=bt({accept:"box",canDrop:()=>!1,hover({_id:w,acceptedBy:f},x){var T;if(!r.current||e!==f)return;const p=(T=r.current)==null?void 0:T.getBoundingClientRect(),g=(p.bottom-p.top)/2,C=x.getClientOffset(),q=((C==null?void 0:C.y)||0)-p.top;if(l&&w!==l)switch(f){case"actions":if(d==="then"||d==="else"){const{index:S}=R(l,o.actions[d]);S!==w&&rt(w,S,o[f][d],a,o,f,d,q,g)}return;case"conditions":if(typeof d=="number"){const{index:S}=R(l,o[f][d]);S!==w&&rt(w,S,o[f][d],a,o,f,d,q,g)}return;default:{const{index:S}=R(l,o[f]);S!==w&&rt(w,S,o[f],a,o,f,void 0,q,g);return}}}});E(()=>{_(Gt(),{captureDraggingState:!0})},[]),I(k(r));const H=window.innerWidth<600;return n.jsxs("div",{ref:H&&l?null:r,className:gt.root,style:{opacity:O},children:[n.jsx("div",{className:l?gt.drag:null,ref:l&&H?r:null}),c]})},Sn=({onClose:e,open:t})=>n.jsxs(wt,{open:t,onClose:e,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n.jsx(Ct,{children:n.jsxs("div",{style:{fontSize:"1rem",fontFamily:'"Roboto", "Helvetica", "Arial", sans-serif',fontWeight:400,lineHeight:1.5,letterSpacing:"0.00938em"},children:[n.jsx("h3",{children:u.I18n.t("On condition change")}),n.jsx("div",{children:u.I18n.t("help_on_change")}),n.jsx("h3",{children:u.I18n.t("Just check")}),n.jsx("div",{children:u.I18n.t("help_just_check")})]})}),n.jsx(vt,{children:n.jsx(jt,{onClick:e,color:"primary",autoFocus:!0,startIcon:n.jsx(Lt,{}),children:u.I18n.t("OK")})})]}),Nn=({onClose:e,open:t})=>n.jsxs(wt,{open:t,onClose:e,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n.jsx(Ct,{children:n.jsxs(Tt,{id:"alert-dialog-description",children:[n.jsx("h3",{children:u.I18n.t("On condition change")}),n.jsx("div",{children:u.I18n.t("help_on_change")}),n.jsx("h3",{children:u.I18n.t("Just check")}),n.jsx("div",{children:u.I18n.t("help_just_check")})]})}),n.jsx(vt,{children:n.jsx(jt,{onClick:e,color:"primary",autoFocus:!0,children:u.I18n.t("OK")})})]}),ht=({size:e,blockValue:t,boolean:s,typeBlock:i,userRules:a,setUserRules:o,animation:c,setTourStep:l,tourStep:d,isTourOpen:j,theme:O,themeType:I,themeName:_})=>{var W;const[r,k]=M(!1),[H,w]=M(!1),[f,x]=M(!1),[p,g]=M("");s===void 0&&(s=!0);const C=bt({accept:"box",drop:()=>({blockValue:t}),hover:({acceptedBy:A,_id:L},Z)=>{k(A===i),x(!!L),g(Z.getHandlerId()||"")},canDrop:({acceptedBy:A})=>(w(A===i),A===i),collect:A=>{var L;return{isOver:A.isOver(),canDrop:((L=A.getItem())==null?void 0:L.acceptedBy)===i,offset:A.getClientOffset(),targetId:A.getHandlerId()}}}),q=C[0],{canDrop:T,isOver:S,offset:B,targetId:N}=q,h=C[1];E(()=>{g("")},[B]);const b=T&&S;let v="";b?v=r?"#00fb003d":"#fb00002e":T?v=H?"#00fb003d":"#fb00002e":B&&(v=N===p?"#fb00002e":"");let m;return i==="actions"?m=a.actions[t]:i==="conditions"?m=a.conditions[t]:m=a.triggers,n.jsx("div",{ref:h,style:{backgroundColor:v},className:`${u.Utils.clsx(D.contentBlockItem,e&&D.addClassHeight)} ${s?c?D.contentHeightOn:null:D.contentHeightOff}`,children:n.jsxs("div",{className:D.wrapperMargin,children:[m.map(A=>n.jsx(At,{typeBlock:i,...A,blockValue:t,allProperties:A,userRules:a,setUserRules:o,children:n.jsx(Ot,{...A,isTourOpen:j,setTourStep:l,tourStep:d,settings:A,blockValue:t,userRules:a,setUserRules:o,theme:O,themeType:I,themeName:_})},A._id)),n.jsx("div",{style:b&&r&&!f?{height:((W=document.getElementById("height"))==null?void 0:W.clientHeight)||200}:void 0,className:`${D.emptyBlockStyle} ${b&&r&&!f?D.emptyBlock:D.emptyBlockNone}`})]})})},at=({size:e,typeBlock:t,name:s,nameAdditionally:i,additionally:a,border:o,userRules:c,setUserRules:l,iconName:d,adapter:j,socket:O,setTourStep:I,tourStep:_,isTourOpen:r,theme:k,themeType:H,themeName:w})=>{const[f,x,p]=dt(t==="actions"?!1:[],`additionallyClickItems_${t}`),[g,C]=M(!1),[q,T]=M(!1);E(()=>{if(t==="conditions"&&(f==null?void 0:f.length)!==c.conditions.length-1){const N=[];c.conditions.forEach((h,b)=>{b>0&&N.push({_id:Date.now(),open:!0})}),x([...f,...N])}t==="actions"&&!p&&c.actions.else.length&&x(!0)},[]);const[S,B]=M(!1);return n.jsxs("div",{className:`${u.Utils.clsx(D.mainBlockItemRules,e&&D.addClassOverflow)} ${o&&!e?D.border:null}`,children:[n.jsxs("span",{id:"width",className:D.nameBlockItems,children:[n.jsx(Y,{iconName:d,className:D.iconThemCard,adapter:j,socket:O}),s]}),t==="conditions"?n.jsxs("div",{style:{width:"100%"},children:[n.jsxs(Et,{variant:"standard",className:D.selectOnChange,value:c.justCheck||!1,onChange:N=>{const h=K("conditions",c);h.justCheck=N.target.value==="true",l(h)},children:[n.jsx(mt,{value:"false",children:u.I18n.t("on condition change")}),n.jsx(mt,{value:"true",children:u.I18n.t("just check")})]}),n.jsx(Pt,{size:"small",title:u.I18n.t("Explanation"),className:D.selectOnChangeHelp,onClick:()=>C(!0),children:n.jsx(qt,{className:D.selectOnChangeHelpIcon})})]}):null,n.jsx(ht,{setTourStep:I,tourStep:_,isTourOpen:r,blockValue:t==="actions"?"then":t==="conditions"?0:t,typeBlock:t,setUserRules:l,userRules:c,theme:k,themeName:w,themeType:H,size:e}),a&&[...Array(t==="actions"?1:c.conditions.length-1)].map((N,h)=>{const b=(v=h)=>t==="actions"?!!f:!!f.find((m,W)=>W===v&&m.open);return n.jsxs(xt,{children:[n.jsxs("div",{onClick:()=>{if(t==="actions")return x(!f),null;let v=JSON.parse(JSON.stringify(f));if(c.conditions[h+1].length)return v[h].open=!v[h].open,x(v),null;v=v.filter((m,W)=>W!==h),x(v),B(h),setTimeout(()=>{B(!1),l({...c,conditions:[...c.conditions.filter((m,W)=>W!==h+1)]})},250)},className:D.blockCardAdd,children:[b()?"-":"+",n.jsx("div",{className:D.cardAdd,children:i})]},h),n.jsx(ht,{blockValue:t==="actions"?"else":t==="conditions"?h+1:t,typeBlock:t,setUserRules:l,userRules:c,boolean:b(),animation:S===h,size:e,theme:k,themeName:w,themeType:H})]},`${h}_block_${t}`)}),a&&t==="conditions"&&n.jsxs("div",{onClick:()=>{x([...f,{_id:Date.now(),open:!0}]),l({...c,conditions:[...c.conditions,[]]}),B(c.conditions.length-1),setTimeout(()=>B(!1),1e3)},className:D.blockCardAdd,children:["+",n.jsx("div",{className:D.cardAdd,children:i})]}),n.jsx(Sn,{open:g,onClose:()=>C(!1)}),n.jsx(Nn,{open:q,onClose:()=>T(!1)})]})},$n="_menuRules_1qqcb_1",qn="_switchesRenderWrapper_1qqcb_13",Bn="_menuOff_1qqcb_22",Mn="_menuTitle_1qqcb_28",Hn="_marginAuto_1qqcb_42",Wn="_inputWidth_1qqcb_47",Tn="_menuWrapper_1qqcb_52",En="_hamburgerWrapper_1qqcb_57",Pn="_hamburgerOff_1qqcb_74",Un="_nothingFound_1qqcb_82",Fn="_resetSearch_1qqcb_89",Jn="_controlPanel_1qqcb_101",Ln="_controlPanelAppBar_1qqcb_112",zn="_addClassMenu_1qqcb_126",Gn="_addClassBackground_1qqcb_132",Kn="_addClassPosition_1qqcb_136",$={menuRules:$n,switchesRenderWrapper:qn,menuOff:Bn,menuTitle:Mn,marginAuto:Hn,inputWidth:Wn,menuWrapper:Tn,hamburgerWrapper:En,hamburgerOff:Pn,nothingFound:Un,resetSearch:Fn,controlPanel:Jn,controlPanelAppBar:Ln,addClassMenu:zn,addClassBackground:Gn,addClassPosition:Kn},Qn=e=>{const{allProperties:t,allProperties:{acceptedBy:s,id:i},setUserRules:a,userRules:o,setTourStep:c,tourStep:l,isTourOpen:d,onTouchMove:j,isActive:O}=e;return n.jsx(At,{allProperties:t,id:t.id,isActive:O,setUserRules:a,userRules:o,children:n.jsx(It,{onDoubleClick:()=>{d&&l===J.addScheduleByDoubleClick&&i==="TriggerScheduleBlock"&&c(J.openTagsMenu),d&&l===J.addActionPrintText&&i==="ActionPrintText"&&c(J.showJavascript);const I=Date.now();let _;switch(s){case"actions":_="then";break;case"conditions":_=o[s].length-1;break}const r=K(s,o,_),k={id:i,_id:I,acceptedBy:s};_!==void 0?s==="actions"?r.actions[_].push({...k}):s==="conditions"&&r.conditions[_].push({...k}):r.triggers.push({...k}),a(r)},...e,...t,onTouchMove:j})})},Yn="_hamburgerMenu_hqnsm_8",Zn="_animate_hqnsm_21",_t={hamburgerMenu:Yn,animate:Zn};function Xn({bool:e}){return n.jsx("div",{className:`${_t.hamburgerMenu} ${e?_t.animate:""}`})}const Vn=({addClass:e,setAllBlocks:t,allBlocks:s,userRules:i,onChangeBlocks:a,setTourStep:o,tourStep:c,isTourOpen:l})=>{const{blocks:d,socket:j}=nt(et),[O,I]=dt(!1,"hamburgerOnOff"),[_,r]=dt({text:"",type:"triggers",index:0},"filterControlPanel"),k=(f=_.text,x=_.type)=>{if(!d)return;let p=[...d];p=p.filter(g=>{if(!f)return!0;const{name:C}=g.getStaticData();return C&&u.I18n.t(C).toLowerCase().includes(f.toLowerCase())}),p=p.filter(g=>x===g.getStaticData().acceptedBy),t(p)},H=(f,x)=>{l&&x===0&&c===J.selectTriggers&&o(J.addScheduleByDoubleClick),l&&x===2&&c===J.selectActions&&o(J.addActionPrintText),r({..._,index:x,type:["triggers","conditions","actions"][x]}),k(_.text,["triggers","conditions","actions"][x])},w=f=>({id:`scrollable-force-tab-${f}`,"aria-controls":`scrollable-force-tabpanel-${f}`});return E(()=>{k()},[d]),n.jsx(Ut,{mouseEvent:!1,touchEvent:"onTouchStart",onClickAway:()=>I(!0),children:n.jsxs("div",{className:u.Utils.clsx($.menuWrapper,e[1035]&&$.addClassMenu),children:[n.jsx("div",{className:`${$.hamburgerWrapper} ${O?$.hamburgerOff:null}`,onClick:()=>I(!O),children:n.jsx(Xn,{bool:!O})}),n.jsxs("div",{className:`${u.Utils.clsx($.menuRules,e[1035]&&$.addClassBackground,e[835]&&$.addClassPosition)} ${O?$.menuOff:null}`,children:[n.jsx("div",{className:$.controlPanel,children:n.jsx(Ft,{className:$.controlPanelAppBar,position:"static",children:n.jsxs(Jt,{value:_.index,onChange:H,children:[n.jsx(st,{className:"blocks-triggers",title:u.I18n.t("Triggers"),icon:n.jsx(Y,{iconName:"FlashOn"}),...w(0)}),n.jsx(st,{title:u.I18n.t("Conditions"),className:"blocks-conditions",icon:n.jsx(Y,{iconName:"Help"}),...w(1)}),n.jsx(st,{title:u.I18n.t("Actions"),className:"blocks-actions",icon:n.jsx(Y,{iconName:"PlayForWork"}),...w(2)})]})})}),n.jsx("div",{className:$.switchesRenderWrapper,children:n.jsxs("span",{children:[s.map(f=>{const{name:x,id:p,icon:g,adapter:C}=f.getStaticData();return n.jsx(xt,{children:n.jsx(Qn,{adapter:C,allProperties:f.getStaticData(),icon:g,id:p,isActive:!1,isTourOpen:l,name:x,onTouchMove:()=>I(!0),setTourStep:o,setUserRules:a,socket:j,tourStep:c,userRules:i})},p)}),!s.length&&n.jsxs("div",{className:$.nothingFound,children:[u.I18n.t("Nothing found"),"...",n.jsx("div",{className:$.resetSearch,onClick:()=>{r({..._,text:""}),k("")},children:u.I18n.t("reset search")})]})]})}),n.jsx("div",{className:u.Utils.clsx($.menuTitle,$.marginAuto)}),n.jsx(Bt,{className:$.inputWidth,fullWidth:!0,customValue:!0,value:_.text,size:"small",autoComplete:"off",label:u.I18n.t("search"),variant:"outlined",onChange:f=>{r({..._,text:f}),k(f)}})]})]})})};let pt=[];const me=({code:e,onChange:t,themeName:s,themeType:i,theme:a,setTourStep:o,tourStep:c,isTourOpen:l,command:d,scriptId:j,changed:O,running:I})=>{var v;const{blocks:_,socket:r,setOnUpdate:k,setOnDebugMessage:H,setEnableSimulation:w}=nt(et),[f,x]=M([]),[p,g]=M(ft(e)),[C,q]=M(""),[T,S]=M(!1);E(()=>{let m,W;const A=(P,y)=>{P===`${m}.alive`&&W!==(y==null?void 0:y.val)&&(W=!!(y!=null&&y.val),W&&m&&(r==null||r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOn",j)))},L=(P,y)=>{var U,Q;r&&m!==((U=y==null?void 0:y.common)==null?void 0:U.engine)&&(m&&(r.unsubscribeState(`${m}.alive`,A),W&&r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOn",j)),m=(Q=y==null?void 0:y.common)==null?void 0:Q.engine,m&&m&&r.subscribeState(`${m}.alive`,A))},Z=(P,y)=>{if(y)try{const U=JSON.parse(y.val),Q=Date.now();if(U.ruleId===j&&Q-U.ts<1e3){const F=[...pt,{blockId:U.blockId,data:U.data,ts:U.ts}];F.length>200&&F.splice(0,F.length-200);for(let X=F.length-1;X>=0;X--)if(F[X].ts{var y;m=(y=P==null?void 0:P.common)==null?void 0:y.engine,r.subscribeObject(j,L),m&&(r.subscribeState(`${m}.alive`,A),r.subscribeState(`${m.replace(/^system\.adapter\./,"")}.debug.rules`,Z))}),function(){r==null||r.unsubscribeObject(j,L),m&&(r==null||r.unsubscribeState(`${m}.alive`,A),W&&(r==null||r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOff",j)),r==null||r.unsubscribeState(`${m.replace(/^system\.adapter\./,"")}.debug.rules`,Z))}},[]),E(()=>{w(!O&&I)},[O,I,w]),E(()=>{d&&(q(d),T||S(!0))},[d]),E(()=>{const m=ft(e);JSON.stringify(m)!==JSON.stringify(p)&&(g(m),k(!0))},[e]),E(()=>{document.getElementsByTagName("HTML")[0].className=s||"blue"},[s]);const B=lt(m=>{g(m),_&&t(Mt(m,_))},[_,t]),N=ut(null),[h,b]=M({835:!1,1035:!1});return E(()=>{N.current&&(N.current.clientWidth<=1035&&b({835:!1,1035:!0}),N.current.clientWidth<=835&&b({1035:!0,835:!0}),N.current.clientWidth>1035&&b({835:!1,1035:!1}))},[((v=N.current)==null?void 0:v.clientWidth)||0]),!_||!r?null:n.jsxs("div",{className:ot.wrapperRules,ref:N,children:[n.jsx(ln,{allBlocks:f,socket:r}),T?C==="export"?n.jsx(Ht,{scriptId:j,themeType:i,onClose:()=>S(!1),text:JSON.stringify(p,null,2)}):n.jsx(Wt,{themeType:i,onClose:m=>{S(!1),m&&B(JSON.parse(m))}}):null,n.jsxs("div",{className:u.Utils.clsx(ot.rootWrapper,h[835]&&ot.addClass),children:[n.jsx(Vn,{setAllBlocks:x,allBlocks:f,userRules:p,onChangeBlocks:B,setTourStep:o,tourStep:c,addClass:h,isTourOpen:l}),n.jsx(at,{socket:r,setUserRules:B,userRules:p,isTourOpen:l,setTourStep:o,tourStep:c,name:`${u.I18n.t("when")}...`,typeBlock:"triggers",iconName:"FlashOn",size:h[835],themeType:i,themeName:s,theme:a}),n.jsx(at,{socket:r,setUserRules:B,isTourOpen:l,setTourStep:o,tourStep:c,userRules:p,name:`...${u.I18n.t("and")}...`,typeBlock:"conditions",iconName:"Help",nameAdditionally:u.I18n.t("or"),additionally:!0,border:!0,size:h[835],themeType:i,themeName:s,theme:a}),n.jsx(at,{socket:r,setUserRules:B,isTourOpen:l,setTourStep:o,tourStep:c,userRules:p,name:`...${u.I18n.t("then")}`,typeBlock:"actions",iconName:"PlayForWork",nameAdditionally:u.I18n.t("else"),additionally:!0,size:h[835],themeType:i,themeName:s,theme:a})]})]},"rulesEditor")};export{me as default}; +import{j as n}from"./createSvgIcon-DYs_tNrE.js";import{c as E,h as yt,j as M,m as nt,k as lt,l as Dt,b as ut,o as xt}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as u}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{u as kt,a as St,M as Y,C as et,G as Nt,b as $t,c as bt,I as qt,S as J,d as Bt,e as ft,j as Mt,D as Ht,f as Wt}from"./index-C4HfD5lY.js";import{_ as wt,b as Ct,h as vt,i as jt,p as Tt,f as Et,g as mt,o as Pt,Y as Ut,Z as Ft,C as Jt,D as st}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{I as Lt}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./preload-helper-BDBacUwf.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";function zt(e){const s=kt().getMonitor(),[i,a]=St(s,e);return E(()=>s.subscribeToOffsetChange(a)),E(()=>s.subscribeToStateChange(a)),i}let V;function Gt(){return V||(V=new Image,V.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),V}const Kt="_wrapperRules_nnott_1",Qt="_rootWrapper_nnott_9",Yt="_addClass_nnott_14",ot={wrapperRules:Kt,rootWrapper:Qt,addClass:Yt},Zt="_switchesItem_10ls3_1",Xt="_switchesItemActive_10ls3_28",Vt="_iconTheme_10ls3_36",it={switchesItem:Zt,switchesItemActive:Xt,iconTheme:Vt},It=({name:e,id:t,active:s,icon:i,adapter:a,socket:o,onDoubleClick:c,title:l,onTouchMove:d,style:j})=>n.jsxs("div",{onDoubleClick:c,onTouchMove:d,title:l?u.I18n.t(l):void 0,className:u.Utils.clsx(it.switchesItem,s&&it.switchesItemActive,`block-${t}`),children:[n.jsx(Y,{iconName:i,className:it.iconTheme,adapter:a,socket:o,style:j}),n.jsx("span",{children:e?u.I18n.t(e):""})]},t),Rt="_cardStyle_8rq8v_1",tn="_cardStyleActive_8rq8v_17",nn="_controlMenu_8rq8v_22",en="_closeBtn_8rq8v_31",sn="_isDelete_8rq8v_73",on="_drag_mobile_8rq8v_90",G={cardStyle:Rt,cardStyleActive:tn,controlMenu:nn,closeBtn:en,isDelete:sn,drag_mobile:on};function K(e,t,s){let i;switch(e){case"actions":if(s==="else")return i={...t,actions:{...t[e],else:[...t[e].else]}},i;if(s==="then")return i={...t,actions:{...t[e],then:[...t[e].then]}},i;throw console.error(`Unknown additionalParameter: ${s}`),new Error(`Unknown additionalParameter: ${s}`);case"triggers":return i={...t,triggers:[...t.triggers]},i;case"conditions":return i={...t,conditions:[...t.conditions]},i;default:throw new Error(`Unknown name: ${e}`)}}function z(e,t,s,i){var a;switch(e){case"actions":return t.actions[s]=t.actions[s].filter(o=>o._id!==i),t;case"conditions":return t.conditions[s]=(a=t.conditions[s])==null?void 0:a.filter(o=>o._id!==i),t;default:return t.triggers=t.triggers.filter(o=>o._id!==i),t}}function cn(e,t,s){const{_id:i,acceptedBy:a}=e;let o;if(!a||!t[a])return console.warn(`Cannot find ${a}`),t;switch(a){case"actions":if(o=t.actions[s].find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.actions[s].indexOf(o);t.actions[s][c]=e}return t;case"conditions":if(o=t.conditions[s].find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.conditions[s].indexOf(o);t.conditions[s][c]=e}return t;default:if(o=t.triggers.find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.triggers.indexOf(o);t.triggers[c]=e}return t}}const Ot=yt(e=>{var N;const{setUserRules:t,userRules:s,_id:i,id:a,blockValue:o,active:c,acceptedBy:l,isTourOpen:d,setTourStep:j,tourStep:O}=e,[I,_]=M(null),{blocks:r,socket:k,onUpdate:H,setOnUpdate:w,onDebugMessage:f,enableSimulation:x}=nt(et),p=lt(h=>r==null?void 0:r.find(b=>b.getStaticData().id===h),[r]),g=lt(h=>{const b=cn(h,s,o);b&&t(b)},[s]),C=h=>{h.currentTarget!==I&&_(h.currentTarget)},q=()=>_(null),T=Dt(()=>{const h=p(a)||Nt;return n.jsx(h,{...e,notFound:!p(a),isTourOpen:d,setTourStep:j,tourStep:O,onUpdate:H,setOnUpdate:w,enableSimulation:x,onDebugMessage:f,onChange:g,className:void 0,socket:k})},[s,H,f,x]),[S,B]=M(!1);return n.jsxs("div",{onMouseMove:C,onMouseEnter:C,onMouseLeave:q,onMouseDown:h=>{if(h.ctrlKey){let b;const v=K(l,s,o);l==="conditions"?(b=v.conditions[o].find(m=>m._id===i),b&&v.conditions[o].splice(v.conditions[o].indexOf(b),0,{...b,_id:Date.now()})):l==="actions"?(b=v.actions[o].find(m=>m._id===i),b&&v.actions[o].splice(v.actions[o].indexOf(b),0,{...b,_id:Date.now()})):(b=v.triggers.find(m=>m._id===i),b&&v.triggers.splice(v[l].indexOf(b),0,{...b,_id:Date.now()})),t(v)}},id:"height",style:c?{width:(((N=document.getElementById("width"))==null?void 0:N.clientWidth)||0)-70}:void 0,className:`${G.cardStyle} ${c?G.cardStyleActive:null} ${S?G.isDelete:null}`,children:[n.jsx("div",{className:G.drag_mobile}),T,t&&n.jsx("div",{className:G.controlMenu,style:I?{opacity:1}:{opacity:0},children:n.jsx("div",{onClick:()=>{let h=K(l,s,o);h=z(l,h,o,i),B(!0),setTimeout(()=>{l==="triggers"&&w(!0),t(h)},300)},className:G.closeBtn})})]})}),rn={position:"fixed",pointerEvents:"none",zIndex:100,left:0,top:0,width:"100%",height:"100%"},an=(e,t,s)=>{if(!e||!t)return{display:"none"};let{x:i,y:a}=t;const o=`translate(${i}px, ${a}px)`;return{transform:o,WebkitTransform:o}},ln=e=>{const{itemType:t,isDragging:s,item:i,initialOffset:a,currentOffset:o,targetIds:c}=zt(d=>({item:d.getItem(),itemType:d.getItemType(),initialOffset:d.getInitialSourceClientOffset(),currentOffset:d.getSourceClientOffset(),isDragging:d.isDragging(),targetIds:d.getTargetIds()})),l=()=>t==="box"?c.length?n.jsx(Ot,{active:!0,...i,allBlocks:e.allBlocks}):n.jsx(It,{active:!0,...i,socket:e.socket}):null;return s?n.jsx("div",{style:rn,children:n.jsx("div",{style:an(a,o),children:l()})}):null},dn="_border_wrpm3_1",fn="_emptyBlockStyle_wrpm3_6",mn="_emptyBlock_wrpm3_6",gn="_selectOnChange_wrpm3_22",hn="_selectOnChangeHelp_wrpm3_28",_n="_selectOnChangeHelpIcon_wrpm3_34",pn="_emptyBlockNone_wrpm3_49",un="_mainBlockItemRules_wrpm3_55",xn="_nameBlockItems_wrpm3_63",bn="_contentBlockItem_wrpm3_73",wn="_wrapperMargin_wrpm3_81",Cn="_contentHeightOn_wrpm3_87",vn="_contentHeightOff_wrpm3_99",jn="_cardAdd_wrpm3_105",In="_blockCardAdd_wrpm3_125",On="_addClassOverflow_wrpm3_136",An="_addClassHeight_wrpm3_140",D={border:dn,emptyBlockStyle:fn,emptyBlock:mn,selectOnChange:gn,selectOnChangeHelp:hn,selectOnChangeHelpIcon:_n,emptyBlockNone:pn,mainBlockItemRules:un,nameBlockItems:xn,contentBlockItem:bn,wrapperMargin:wn,contentHeightOn:Cn,contentHeightOff:vn,cardAdd:jn,blockCardAdd:In,addClassOverflow:On,addClassHeight:An};function dt(e,t){const[s,i]=M(window.localStorage.getItem(t)?JSON.parse(window.localStorage.getItem(t)||""):e);return[s,o=>{window.localStorage.setItem(t,JSON.stringify(o)),i(o)},!!window.localStorage.getItem(t)]}function yn(e,t){let s=0,i=null,a;return function(...o){const c=Date.now();a=o,c-s>=t?(s=c,e.apply(this,o)):i||(i=setTimeout(()=>{s=Date.now(),i=null,e.apply(this,a)},t-(c-s)))}}function tt(e){if(Array.isArray(e))return e.map(t=>tt(t));if(typeof e=="function")return e.bind(null);if(e&&typeof e=="object"){const t={};return Object.keys(e).forEach(s=>{t[s]=tt(e[s])}),t}return e}const ct=yn((e,t)=>e(t),0);function R(e,t){const s=t.find(i=>i._id===e);return{card:s,index:s?t.indexOf(s):-1}}function rt(e,t,s,i,a,o,c,l,d){const{card:j,index:O}=R(e,s);if(!(Ot&&l>d)&&j&&O!==t){const I=tt(s);I.splice(O,1),I.splice(t,0,j);const _=tt(a);switch(o){case"actions":_.actions[c]=I,ct(i,_);return;case"conditions":_.conditions[c]=I,ct(i,_);return;default:_.triggers=I,ct(i,_);return}}}const Dn="_drag_7xfhc_1",kn="_root_7xfhc_11",gt={drag:Dn,root:kn},At=({typeBlock:e,allProperties:t,id:s,isActive:i,setUserRules:a,userRules:o,children:c,_id:l,blockValue:d})=>{const{setOnUpdate:j}=nt(et),[{opacity:O},I,_]=$t({type:"box",item:()=>({...t,id:s,isActive:i,_id:l}),end:(w,f)=>{const{acceptedBy:x}=w,p=f.getDropResult();let g;if(!p)return typeof l=="number"&&!f.getTargetIds().length&&(g=K(x,o,d),g=z(x,g,d,l),a(g)),null;if(p.blockValue!==d){const C=typeof l=="number"?l:Date.now();g=K(x,o,p.blockValue);const q={id:w.id,acceptedBy:w.acceptedBy};switch(x){case"actions":return d&&(g=z("actions",g,d,C)),g=z("actions",g,p.blockValue,C),g.actions[p.blockValue].push({...q,_id:C}),a(g);case"conditions":return typeof d=="number"&&(g=z("conditions",g,d,C)),g=z("conditions",g,p.blockValue,C),g.conditions[p.blockValue].push({...q,_id:C}),a(g);default:return j(!0),g=z("triggers",g,p.blockValue,C),g.triggers.push({...q,_id:C}),a(g)}}},collect:w=>({opacity:w.isDragging()?.4:1,isDragging:w.isDragging()})}),r=ut(null),[,k]=bt({accept:"box",canDrop:()=>!1,hover({_id:w,acceptedBy:f},x){var T;if(!r.current||e!==f)return;const p=(T=r.current)==null?void 0:T.getBoundingClientRect(),g=(p.bottom-p.top)/2,C=x.getClientOffset(),q=((C==null?void 0:C.y)||0)-p.top;if(l&&w!==l)switch(f){case"actions":if(d==="then"||d==="else"){const{index:S}=R(l,o.actions[d]);S!==w&&rt(w,S,o[f][d],a,o,f,d,q,g)}return;case"conditions":if(typeof d=="number"){const{index:S}=R(l,o[f][d]);S!==w&&rt(w,S,o[f][d],a,o,f,d,q,g)}return;default:{const{index:S}=R(l,o[f]);S!==w&&rt(w,S,o[f],a,o,f,void 0,q,g);return}}}});E(()=>{_(Gt(),{captureDraggingState:!0})},[]),I(k(r));const H=window.innerWidth<600;return n.jsxs("div",{ref:H&&l?null:r,className:gt.root,style:{opacity:O},children:[n.jsx("div",{className:l?gt.drag:null,ref:l&&H?r:null}),c]})},Sn=({onClose:e,open:t})=>n.jsxs(wt,{open:t,onClose:e,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n.jsx(Ct,{children:n.jsxs("div",{style:{fontSize:"1rem",fontFamily:'"Roboto", "Helvetica", "Arial", sans-serif',fontWeight:400,lineHeight:1.5,letterSpacing:"0.00938em"},children:[n.jsx("h3",{children:u.I18n.t("On condition change")}),n.jsx("div",{children:u.I18n.t("help_on_change")}),n.jsx("h3",{children:u.I18n.t("Just check")}),n.jsx("div",{children:u.I18n.t("help_just_check")})]})}),n.jsx(vt,{children:n.jsx(jt,{onClick:e,color:"primary",autoFocus:!0,startIcon:n.jsx(Lt,{}),children:u.I18n.t("OK")})})]}),Nn=({onClose:e,open:t})=>n.jsxs(wt,{open:t,onClose:e,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n.jsx(Ct,{children:n.jsxs(Tt,{id:"alert-dialog-description",children:[n.jsx("h3",{children:u.I18n.t("On condition change")}),n.jsx("div",{children:u.I18n.t("help_on_change")}),n.jsx("h3",{children:u.I18n.t("Just check")}),n.jsx("div",{children:u.I18n.t("help_just_check")})]})}),n.jsx(vt,{children:n.jsx(jt,{onClick:e,color:"primary",autoFocus:!0,children:u.I18n.t("OK")})})]}),ht=({size:e,blockValue:t,boolean:s,typeBlock:i,userRules:a,setUserRules:o,animation:c,setTourStep:l,tourStep:d,isTourOpen:j,theme:O,themeType:I,themeName:_})=>{var W;const[r,k]=M(!1),[H,w]=M(!1),[f,x]=M(!1),[p,g]=M("");s===void 0&&(s=!0);const C=bt({accept:"box",drop:()=>({blockValue:t}),hover:({acceptedBy:A,_id:L},Z)=>{k(A===i),x(!!L),g(Z.getHandlerId()||"")},canDrop:({acceptedBy:A})=>(w(A===i),A===i),collect:A=>{var L;return{isOver:A.isOver(),canDrop:((L=A.getItem())==null?void 0:L.acceptedBy)===i,offset:A.getClientOffset(),targetId:A.getHandlerId()}}}),q=C[0],{canDrop:T,isOver:S,offset:B,targetId:N}=q,h=C[1];E(()=>{g("")},[B]);const b=T&&S;let v="";b?v=r?"#00fb003d":"#fb00002e":T?v=H?"#00fb003d":"#fb00002e":B&&(v=N===p?"#fb00002e":"");let m;return i==="actions"?m=a.actions[t]:i==="conditions"?m=a.conditions[t]:m=a.triggers,n.jsx("div",{ref:h,style:{backgroundColor:v},className:`${u.Utils.clsx(D.contentBlockItem,e&&D.addClassHeight)} ${s?c?D.contentHeightOn:null:D.contentHeightOff}`,children:n.jsxs("div",{className:D.wrapperMargin,children:[m.map(A=>n.jsx(At,{typeBlock:i,...A,blockValue:t,allProperties:A,userRules:a,setUserRules:o,children:n.jsx(Ot,{...A,isTourOpen:j,setTourStep:l,tourStep:d,settings:A,blockValue:t,userRules:a,setUserRules:o,theme:O,themeType:I,themeName:_})},A._id)),n.jsx("div",{style:b&&r&&!f?{height:((W=document.getElementById("height"))==null?void 0:W.clientHeight)||200}:void 0,className:`${D.emptyBlockStyle} ${b&&r&&!f?D.emptyBlock:D.emptyBlockNone}`})]})})},at=({size:e,typeBlock:t,name:s,nameAdditionally:i,additionally:a,border:o,userRules:c,setUserRules:l,iconName:d,adapter:j,socket:O,setTourStep:I,tourStep:_,isTourOpen:r,theme:k,themeType:H,themeName:w})=>{const[f,x,p]=dt(t==="actions"?!1:[],`additionallyClickItems_${t}`),[g,C]=M(!1),[q,T]=M(!1);E(()=>{if(t==="conditions"&&(f==null?void 0:f.length)!==c.conditions.length-1){const N=[];c.conditions.forEach((h,b)=>{b>0&&N.push({_id:Date.now(),open:!0})}),x([...f,...N])}t==="actions"&&!p&&c.actions.else.length&&x(!0)},[]);const[S,B]=M(!1);return n.jsxs("div",{className:`${u.Utils.clsx(D.mainBlockItemRules,e&&D.addClassOverflow)} ${o&&!e?D.border:null}`,children:[n.jsxs("span",{id:"width",className:D.nameBlockItems,children:[n.jsx(Y,{iconName:d,className:D.iconThemCard,adapter:j,socket:O}),s]}),t==="conditions"?n.jsxs("div",{style:{width:"100%"},children:[n.jsxs(Et,{variant:"standard",className:D.selectOnChange,value:c.justCheck||!1,onChange:N=>{const h=K("conditions",c);h.justCheck=N.target.value==="true",l(h)},children:[n.jsx(mt,{value:"false",children:u.I18n.t("on condition change")}),n.jsx(mt,{value:"true",children:u.I18n.t("just check")})]}),n.jsx(Pt,{size:"small",title:u.I18n.t("Explanation"),className:D.selectOnChangeHelp,onClick:()=>C(!0),children:n.jsx(qt,{className:D.selectOnChangeHelpIcon})})]}):null,n.jsx(ht,{setTourStep:I,tourStep:_,isTourOpen:r,blockValue:t==="actions"?"then":t==="conditions"?0:t,typeBlock:t,setUserRules:l,userRules:c,theme:k,themeName:w,themeType:H,size:e}),a&&[...Array(t==="actions"?1:c.conditions.length-1)].map((N,h)=>{const b=(v=h)=>t==="actions"?!!f:!!f.find((m,W)=>W===v&&m.open);return n.jsxs(xt,{children:[n.jsxs("div",{onClick:()=>{if(t==="actions")return x(!f),null;let v=JSON.parse(JSON.stringify(f));if(c.conditions[h+1].length)return v[h].open=!v[h].open,x(v),null;v=v.filter((m,W)=>W!==h),x(v),B(h),setTimeout(()=>{B(!1),l({...c,conditions:[...c.conditions.filter((m,W)=>W!==h+1)]})},250)},className:D.blockCardAdd,children:[b()?"-":"+",n.jsx("div",{className:D.cardAdd,children:i})]},h),n.jsx(ht,{blockValue:t==="actions"?"else":t==="conditions"?h+1:t,typeBlock:t,setUserRules:l,userRules:c,boolean:b(),animation:S===h,size:e,theme:k,themeName:w,themeType:H})]},`${h}_block_${t}`)}),a&&t==="conditions"&&n.jsxs("div",{onClick:()=>{x([...f,{_id:Date.now(),open:!0}]),l({...c,conditions:[...c.conditions,[]]}),B(c.conditions.length-1),setTimeout(()=>B(!1),1e3)},className:D.blockCardAdd,children:["+",n.jsx("div",{className:D.cardAdd,children:i})]}),n.jsx(Sn,{open:g,onClose:()=>C(!1)}),n.jsx(Nn,{open:q,onClose:()=>T(!1)})]})},$n="_menuRules_1qqcb_1",qn="_switchesRenderWrapper_1qqcb_13",Bn="_menuOff_1qqcb_22",Mn="_menuTitle_1qqcb_28",Hn="_marginAuto_1qqcb_42",Wn="_inputWidth_1qqcb_47",Tn="_menuWrapper_1qqcb_52",En="_hamburgerWrapper_1qqcb_57",Pn="_hamburgerOff_1qqcb_74",Un="_nothingFound_1qqcb_82",Fn="_resetSearch_1qqcb_89",Jn="_controlPanel_1qqcb_101",Ln="_controlPanelAppBar_1qqcb_112",zn="_addClassMenu_1qqcb_126",Gn="_addClassBackground_1qqcb_132",Kn="_addClassPosition_1qqcb_136",$={menuRules:$n,switchesRenderWrapper:qn,menuOff:Bn,menuTitle:Mn,marginAuto:Hn,inputWidth:Wn,menuWrapper:Tn,hamburgerWrapper:En,hamburgerOff:Pn,nothingFound:Un,resetSearch:Fn,controlPanel:Jn,controlPanelAppBar:Ln,addClassMenu:zn,addClassBackground:Gn,addClassPosition:Kn},Qn=e=>{const{allProperties:t,allProperties:{acceptedBy:s,id:i},setUserRules:a,userRules:o,setTourStep:c,tourStep:l,isTourOpen:d,onTouchMove:j,isActive:O}=e;return n.jsx(At,{allProperties:t,id:t.id,isActive:O,setUserRules:a,userRules:o,children:n.jsx(It,{onDoubleClick:()=>{d&&l===J.addScheduleByDoubleClick&&i==="TriggerScheduleBlock"&&c(J.openTagsMenu),d&&l===J.addActionPrintText&&i==="ActionPrintText"&&c(J.showJavascript);const I=Date.now();let _;switch(s){case"actions":_="then";break;case"conditions":_=o[s].length-1;break}const r=K(s,o,_),k={id:i,_id:I,acceptedBy:s};_!==void 0?s==="actions"?r.actions[_].push({...k}):s==="conditions"&&r.conditions[_].push({...k}):r.triggers.push({...k}),a(r)},...e,...t,onTouchMove:j})})},Yn="_hamburgerMenu_hqnsm_8",Zn="_animate_hqnsm_21",_t={hamburgerMenu:Yn,animate:Zn};function Xn({bool:e}){return n.jsx("div",{className:`${_t.hamburgerMenu} ${e?_t.animate:""}`})}const Vn=({addClass:e,setAllBlocks:t,allBlocks:s,userRules:i,onChangeBlocks:a,setTourStep:o,tourStep:c,isTourOpen:l})=>{const{blocks:d,socket:j}=nt(et),[O,I]=dt(!1,"hamburgerOnOff"),[_,r]=dt({text:"",type:"triggers",index:0},"filterControlPanel"),k=(f=_.text,x=_.type)=>{if(!d)return;let p=[...d];p=p.filter(g=>{if(!f)return!0;const{name:C}=g.getStaticData();return C&&u.I18n.t(C).toLowerCase().includes(f.toLowerCase())}),p=p.filter(g=>x===g.getStaticData().acceptedBy),t(p)},H=(f,x)=>{l&&x===0&&c===J.selectTriggers&&o(J.addScheduleByDoubleClick),l&&x===2&&c===J.selectActions&&o(J.addActionPrintText),r({..._,index:x,type:["triggers","conditions","actions"][x]}),k(_.text,["triggers","conditions","actions"][x])},w=f=>({id:`scrollable-force-tab-${f}`,"aria-controls":`scrollable-force-tabpanel-${f}`});return E(()=>{k()},[d]),n.jsx(Ut,{mouseEvent:!1,touchEvent:"onTouchStart",onClickAway:()=>I(!0),children:n.jsxs("div",{className:u.Utils.clsx($.menuWrapper,e[1035]&&$.addClassMenu),children:[n.jsx("div",{className:`${$.hamburgerWrapper} ${O?$.hamburgerOff:null}`,onClick:()=>I(!O),children:n.jsx(Xn,{bool:!O})}),n.jsxs("div",{className:`${u.Utils.clsx($.menuRules,e[1035]&&$.addClassBackground,e[835]&&$.addClassPosition)} ${O?$.menuOff:null}`,children:[n.jsx("div",{className:$.controlPanel,children:n.jsx(Ft,{className:$.controlPanelAppBar,position:"static",children:n.jsxs(Jt,{value:_.index,onChange:H,children:[n.jsx(st,{className:"blocks-triggers",title:u.I18n.t("Triggers"),icon:n.jsx(Y,{iconName:"FlashOn"}),...w(0)}),n.jsx(st,{title:u.I18n.t("Conditions"),className:"blocks-conditions",icon:n.jsx(Y,{iconName:"Help"}),...w(1)}),n.jsx(st,{title:u.I18n.t("Actions"),className:"blocks-actions",icon:n.jsx(Y,{iconName:"PlayForWork"}),...w(2)})]})})}),n.jsx("div",{className:$.switchesRenderWrapper,children:n.jsxs("span",{children:[s.map(f=>{const{name:x,id:p,icon:g,adapter:C}=f.getStaticData();return n.jsx(xt,{children:n.jsx(Qn,{adapter:C,allProperties:f.getStaticData(),icon:g,id:p,isActive:!1,isTourOpen:l,name:x,onTouchMove:()=>I(!0),setTourStep:o,setUserRules:a,socket:j,tourStep:c,userRules:i})},p)}),!s.length&&n.jsxs("div",{className:$.nothingFound,children:[u.I18n.t("Nothing found"),"...",n.jsx("div",{className:$.resetSearch,onClick:()=>{r({..._,text:""}),k("")},children:u.I18n.t("reset search")})]})]})}),n.jsx("div",{className:u.Utils.clsx($.menuTitle,$.marginAuto)}),n.jsx(Bt,{className:$.inputWidth,fullWidth:!0,customValue:!0,value:_.text,size:"small",autoComplete:"off",label:u.I18n.t("search"),variant:"outlined",onChange:f=>{r({..._,text:f}),k(f)}})]})]})})};let pt=[];const me=({code:e,onChange:t,themeName:s,themeType:i,theme:a,setTourStep:o,tourStep:c,isTourOpen:l,command:d,scriptId:j,changed:O,running:I})=>{var v;const{blocks:_,socket:r,setOnUpdate:k,setOnDebugMessage:H,setEnableSimulation:w}=nt(et),[f,x]=M([]),[p,g]=M(ft(e)),[C,q]=M(""),[T,S]=M(!1);E(()=>{let m,W;const A=(P,y)=>{P===`${m}.alive`&&W!==(y==null?void 0:y.val)&&(W=!!(y!=null&&y.val),W&&m&&(r==null||r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOn",j)))},L=(P,y)=>{var U,Q;r&&m!==((U=y==null?void 0:y.common)==null?void 0:U.engine)&&(m&&(r.unsubscribeState(`${m}.alive`,A),W&&r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOn",j)),m=(Q=y==null?void 0:y.common)==null?void 0:Q.engine,m&&m&&r.subscribeState(`${m}.alive`,A))},Z=(P,y)=>{if(y)try{const U=JSON.parse(y.val),Q=Date.now();if(U.ruleId===j&&Q-U.ts<1e3){const F=[...pt,{blockId:U.blockId,data:U.data,ts:U.ts}];F.length>200&&F.splice(0,F.length-200);for(let X=F.length-1;X>=0;X--)if(F[X].ts{var y;m=(y=P==null?void 0:P.common)==null?void 0:y.engine,r.subscribeObject(j,L),m&&(r.subscribeState(`${m}.alive`,A),r.subscribeState(`${m.replace(/^system\.adapter\./,"")}.debug.rules`,Z))}),function(){r==null||r.unsubscribeObject(j,L),m&&(r==null||r.unsubscribeState(`${m}.alive`,A),W&&(r==null||r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOff",j)),r==null||r.unsubscribeState(`${m.replace(/^system\.adapter\./,"")}.debug.rules`,Z))}},[]),E(()=>{w(!O&&I)},[O,I,w]),E(()=>{d&&(q(d),T||S(!0))},[d]),E(()=>{const m=ft(e);JSON.stringify(m)!==JSON.stringify(p)&&(g(m),k(!0))},[e]),E(()=>{document.getElementsByTagName("HTML")[0].className=s||"blue"},[s]);const B=lt(m=>{g(m),_&&t(Mt(m,_))},[_,t]),N=ut(null),[h,b]=M({835:!1,1035:!1});return E(()=>{N.current&&(N.current.clientWidth<=1035&&b({835:!1,1035:!0}),N.current.clientWidth<=835&&b({1035:!0,835:!0}),N.current.clientWidth>1035&&b({835:!1,1035:!1}))},[((v=N.current)==null?void 0:v.clientWidth)||0]),!_||!r?null:n.jsxs("div",{className:ot.wrapperRules,ref:N,children:[n.jsx(ln,{allBlocks:f,socket:r}),T?C==="export"?n.jsx(Ht,{scriptId:j,themeType:i,onClose:()=>S(!1),text:JSON.stringify(p,null,2)}):n.jsx(Wt,{themeType:i,onClose:m=>{S(!1),m&&B(JSON.parse(m))}}):null,n.jsxs("div",{className:u.Utils.clsx(ot.rootWrapper,h[835]&&ot.addClass),children:[n.jsx(Vn,{setAllBlocks:x,allBlocks:f,userRules:p,onChangeBlocks:B,setTourStep:o,tourStep:c,addClass:h,isTourOpen:l}),n.jsx(at,{socket:r,setUserRules:B,userRules:p,isTourOpen:l,setTourStep:o,tourStep:c,name:`${u.I18n.t("when")}...`,typeBlock:"triggers",iconName:"FlashOn",size:h[835],themeType:i,themeName:s,theme:a}),n.jsx(at,{socket:r,setUserRules:B,isTourOpen:l,setTourStep:o,tourStep:c,userRules:p,name:`...${u.I18n.t("and")}...`,typeBlock:"conditions",iconName:"Help",nameAdditionally:u.I18n.t("or"),additionally:!0,border:!0,size:h[835],themeType:i,themeName:s,theme:a}),n.jsx(at,{socket:r,setUserRules:B,isTourOpen:l,setTourStep:o,tourStep:c,userRules:p,name:`...${u.I18n.t("then")}`,typeBlock:"actions",iconName:"PlayForWork",nameAdditionally:u.I18n.t("else"),additionally:!0,size:h[835],themeType:i,themeName:s,theme:a})]})]},"rulesEditor")};export{me as default}; diff --git a/admin/assets/index-BDO4Fqdo.js b/admin/assets/index-C4HfD5lY.js similarity index 99% rename from admin/assets/index-BDO4Fqdo.js rename to admin/assets/index-C4HfD5lY.js index 187aaa483..7af747d2c 100644 --- a/admin/assets/index-BDO4Fqdo.js +++ b/admin/assets/index-C4HfD5lY.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-Dxq5yPh9.js","./createSvgIcon-DYs_tNrE.js","./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js","./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js","./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js","./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js","./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js","./index-wHNMOf-c.js","./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js","./preload-helper-BDBacUwf.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js","./inheritsLoose-CIXm_zPk.js","./index-BCK6q-N6.css","./index-D1O5qjDd.js","./ScriptEditorVanillaMonaco-D8HeI_JD.js","./ScriptEditor-CjeuM3xH.js","./Save-CkuNSiWL.js","./AiChatPanel-Bmw5Sa1m.js","./index-45IwpC7_.js","./AiDiffView-RPozjjHf.js"])))=>i.map(i=>d[i]); -import{d as Dw}from"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js";import{j as m,c as vt,g as nk,r as rk,_ as Qg}from"./createSvgIcon-DYs_tNrE.js";import{r as ET}from"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import{a as pe,_ as xT,b as ji,c as Ft,d as DT,e as ak,f as em,g as Fm,h as zm,i as lk,j as St,k as zn,l as gs,m as AT,n as ck,o as tm,p as RT,q as OT,r as uk,s as MT,t as Zo}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as zt,a as ts,b as Yt,c as Oo,d as Ui,e as sm,f as Hi,g as et,h as Ut,i as je,j as bc,k as yc,l as vc,m as wc,n as _c,o as We,p as dk,q as Ni,r as om,s as Aw,t as im,u as nm,v as Jn,w as hk,x as NT,y as Vc,z as bt,A as LT,B as rm,C as PT,D as fg,E as ua,F as BT,G as jT,H as FT,I as zT,J as pk,K as UT,L as HT,M as Rw,N as Mn,O as WT,P as GT,Q as VT,R as KT,S as YT,T as gk,U as JT,V as am,W as mk,X as qT}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as x}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{I as ni,a as ao,b as Nc,C as XT,c as fk,F as ZT,d as QT,e as Kc,f as lm,g as eI,h as tI,i as sI,j as oI,M as iI,k as nI,l as rI,m as aI,_ as lI,n as kc,o as cI,p as uI,q as Cc,r as Ow,s as dI,t as hI,u as pI,v as gI,w as Mw,x as bu,y as mI,z as fI,A as $I,B as bI,D as yI,E as vI,G as wI,H as _I,J as kI,K as $k,L as bk,N as yk,O as CI,P as SI,Q as TI,R as II,S as EI,T as xI}from"./index-wHNMOf-c.js";import{y as DI,_ as AI,a as RI,S as Nw,T as Lw}from"./inheritsLoose-CIXm_zPk.js";import{c as ro}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function ri(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{_ as Ki}from"./preload-helper-BDBacUwf.js";import{P as ve}from"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import{_ as OI}from"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const c of l)if(c.type==="childList")for(const h of c.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&r(h)}).observe(document,{childList:!0,subtree:!0});function i(l){const c={};return l.integrity&&(c.integrity=l.integrity),l.referrerPolicy&&(c.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?c.credentials="include":l.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function r(l){if(l.ep)return;l.ep=!0;const c=i(l);fetch(l.href,c)}})();var vk,Pw=ET;vk=Pw.createRoot,Pw.hydrateRoot;var wk={exports:{}},ht={};var yu=60103,vu=60106,Sa=60107,Ta=60108,Ia=60114,Ea=60109,xa=60110,Da=60112,Aa=60113,Um=60120,Ra=60115,Oa=60116,_k=60121,kk=60122,Ck=60117,Sk=60129,Tk=60131;if(typeof Symbol=="function"&&Symbol.for){var Bt=Symbol.for;yu=Bt("react.element"),vu=Bt("react.portal"),Sa=Bt("react.fragment"),Ta=Bt("react.strict_mode"),Ia=Bt("react.profiler"),Ea=Bt("react.provider"),xa=Bt("react.context"),Da=Bt("react.forward_ref"),Aa=Bt("react.suspense"),Um=Bt("react.suspense_list"),Ra=Bt("react.memo"),Oa=Bt("react.lazy"),_k=Bt("react.block"),kk=Bt("react.server.block"),Ck=Bt("react.fundamental"),Sk=Bt("react.debug_trace_mode"),Tk=Bt("react.legacy_hidden")}function js(a){if(typeof a=="object"&&a!==null){var s=a.$$typeof;switch(s){case yu:switch(a=a.type,a){case Sa:case Ia:case Ta:case Aa:case Um:return a;default:switch(a=a&&a.$$typeof,a){case xa:case Da:case Oa:case Ra:case Ea:return a;default:return s}}case vu:return s}}}var MI=Ea,NI=yu,LI=Da,PI=Sa,BI=Oa,jI=Ra,FI=vu,zI=Ia,UI=Ta,HI=Aa;ht.ContextConsumer=xa;ht.ContextProvider=MI;ht.Element=NI;ht.ForwardRef=LI;ht.Fragment=PI;ht.Lazy=BI;ht.Memo=jI;ht.Portal=FI;ht.Profiler=zI;ht.StrictMode=UI;ht.Suspense=HI;ht.isAsyncMode=function(){return!1};ht.isConcurrentMode=function(){return!1};ht.isContextConsumer=function(a){return js(a)===xa};ht.isContextProvider=function(a){return js(a)===Ea};ht.isElement=function(a){return typeof a=="object"&&a!==null&&a.$$typeof===yu};ht.isForwardRef=function(a){return js(a)===Da};ht.isFragment=function(a){return js(a)===Sa};ht.isLazy=function(a){return js(a)===Oa};ht.isMemo=function(a){return js(a)===Ra};ht.isPortal=function(a){return js(a)===vu};ht.isProfiler=function(a){return js(a)===Ia};ht.isStrictMode=function(a){return js(a)===Ta};ht.isSuspense=function(a){return js(a)===Aa};ht.isValidElementType=function(a){return typeof a=="string"||typeof a=="function"||a===Sa||a===Ia||a===Sk||a===Ta||a===Aa||a===Um||a===Tk||typeof a=="object"&&a!==null&&(a.$$typeof===Oa||a.$$typeof===Ra||a.$$typeof===Ea||a.$$typeof===xa||a.$$typeof===Da||a.$$typeof===Ck||a.$$typeof===_k||a[0]===kk)};ht.typeOf=js;wk.exports=ht;var WI=wk.exports;function Yc(a,s){const i=getComputedStyle(s);if(!i)return;let r=a===mt.Horizontal?s.clientWidth:s.clientHeight;return r!==0?(a===mt.Horizontal?r-=parseFloat(i.paddingLeft)+parseFloat(i.paddingRight):r-=parseFloat(i.paddingTop)+parseFloat(i.paddingBottom),r):void 0}function Sc(a,s,i=[],r={condition:!0}){const{condition:l}=r,c=(function(h,d){var p={};for(var g in h)Object.prototype.hasOwnProperty.call(h,g)&&d.indexOf(g)<0&&(p[g]=h[g]);if(h!=null&&typeof Object.getOwnPropertySymbols=="function"){var $=0;for(g=Object.getOwnPropertySymbols(h);$(l&&window.addEventListener(a,s,c),()=>{l&&window.removeEventListener(a,s)})),[a,s,l,...i])}(function(a,s){s===void 0&&(s={});var i=s.insertAt;if(typeof document<"u"){var r=document.head||document.getElementsByTagName("head")[0],l=document.createElement("style");l.type="text/css",i==="top"&&r.firstChild?r.insertBefore(l,r.firstChild):r.appendChild(l),l.styleSheet?l.styleSheet.cssText=a:l.appendChild(document.createTextNode(a))}})(`/* === Main Container === */ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-Bs9TcrAn.js","./createSvgIcon-DYs_tNrE.js","./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js","./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js","./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js","./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js","./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js","./index-wHNMOf-c.js","./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js","./preload-helper-BDBacUwf.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js","./inheritsLoose-CIXm_zPk.js","./index-BCK6q-N6.css","./index-B3VPMSlh.js","./ScriptEditorVanillaMonaco-CxOCXiVn.js","./ScriptEditor-1ecFtrbs.js","./Save-CkuNSiWL.js","./AiChatPanel-CrAsP3TB.js","./index-45IwpC7_.js","./AiDiffView-RPozjjHf.js"])))=>i.map(i=>d[i]); +import{d as Dw}from"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import{j as m,c as vt,g as nk,r as rk,_ as Qg}from"./createSvgIcon-DYs_tNrE.js";import{r as ET}from"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import{a as pe,_ as xT,b as ji,c as Ft,d as DT,e as ak,f as em,g as Fm,h as zm,i as lk,j as St,k as zn,l as gs,m as AT,n as ck,o as tm,p as RT,q as OT,r as uk,s as MT,t as Zo}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as zt,a as ts,b as Yt,c as Oo,d as Ui,e as sm,f as Hi,g as et,h as Ut,i as je,j as bc,k as yc,l as vc,m as wc,n as _c,o as We,p as dk,q as Ni,r as om,s as Aw,t as im,u as nm,v as Jn,w as hk,x as NT,y as Vc,z as bt,A as LT,B as rm,C as PT,D as fg,E as ua,F as BT,G as jT,H as FT,I as zT,J as pk,K as UT,L as HT,M as Rw,N as Mn,O as WT,P as GT,Q as VT,R as KT,S as YT,T as gk,U as JT,V as am,W as mk,X as qT}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as x}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{I as ni,a as ao,b as Nc,C as XT,c as fk,F as ZT,d as QT,e as Kc,f as lm,g as eI,h as tI,i as sI,j as oI,M as iI,k as nI,l as rI,m as aI,_ as lI,n as kc,o as cI,p as uI,q as Cc,r as Ow,s as dI,t as hI,u as pI,v as gI,w as Mw,x as bu,y as mI,z as fI,A as $I,B as bI,D as yI,E as vI,G as wI,H as _I,J as kI,K as $k,L as bk,N as yk,O as CI,P as SI,Q as TI,R as II,S as EI,T as xI}from"./index-wHNMOf-c.js";import{y as DI,_ as AI,a as RI,S as Nw,T as Lw}from"./inheritsLoose-CIXm_zPk.js";import{c as ro}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function ri(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{_ as Ki}from"./preload-helper-BDBacUwf.js";import{P as ve}from"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import{_ as OI}from"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const c of l)if(c.type==="childList")for(const h of c.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&r(h)}).observe(document,{childList:!0,subtree:!0});function i(l){const c={};return l.integrity&&(c.integrity=l.integrity),l.referrerPolicy&&(c.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?c.credentials="include":l.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function r(l){if(l.ep)return;l.ep=!0;const c=i(l);fetch(l.href,c)}})();var vk,Pw=ET;vk=Pw.createRoot,Pw.hydrateRoot;var wk={exports:{}},ht={};var yu=60103,vu=60106,Sa=60107,Ta=60108,Ia=60114,Ea=60109,xa=60110,Da=60112,Aa=60113,Um=60120,Ra=60115,Oa=60116,_k=60121,kk=60122,Ck=60117,Sk=60129,Tk=60131;if(typeof Symbol=="function"&&Symbol.for){var Bt=Symbol.for;yu=Bt("react.element"),vu=Bt("react.portal"),Sa=Bt("react.fragment"),Ta=Bt("react.strict_mode"),Ia=Bt("react.profiler"),Ea=Bt("react.provider"),xa=Bt("react.context"),Da=Bt("react.forward_ref"),Aa=Bt("react.suspense"),Um=Bt("react.suspense_list"),Ra=Bt("react.memo"),Oa=Bt("react.lazy"),_k=Bt("react.block"),kk=Bt("react.server.block"),Ck=Bt("react.fundamental"),Sk=Bt("react.debug_trace_mode"),Tk=Bt("react.legacy_hidden")}function js(a){if(typeof a=="object"&&a!==null){var s=a.$$typeof;switch(s){case yu:switch(a=a.type,a){case Sa:case Ia:case Ta:case Aa:case Um:return a;default:switch(a=a&&a.$$typeof,a){case xa:case Da:case Oa:case Ra:case Ea:return a;default:return s}}case vu:return s}}}var MI=Ea,NI=yu,LI=Da,PI=Sa,BI=Oa,jI=Ra,FI=vu,zI=Ia,UI=Ta,HI=Aa;ht.ContextConsumer=xa;ht.ContextProvider=MI;ht.Element=NI;ht.ForwardRef=LI;ht.Fragment=PI;ht.Lazy=BI;ht.Memo=jI;ht.Portal=FI;ht.Profiler=zI;ht.StrictMode=UI;ht.Suspense=HI;ht.isAsyncMode=function(){return!1};ht.isConcurrentMode=function(){return!1};ht.isContextConsumer=function(a){return js(a)===xa};ht.isContextProvider=function(a){return js(a)===Ea};ht.isElement=function(a){return typeof a=="object"&&a!==null&&a.$$typeof===yu};ht.isForwardRef=function(a){return js(a)===Da};ht.isFragment=function(a){return js(a)===Sa};ht.isLazy=function(a){return js(a)===Oa};ht.isMemo=function(a){return js(a)===Ra};ht.isPortal=function(a){return js(a)===vu};ht.isProfiler=function(a){return js(a)===Ia};ht.isStrictMode=function(a){return js(a)===Ta};ht.isSuspense=function(a){return js(a)===Aa};ht.isValidElementType=function(a){return typeof a=="string"||typeof a=="function"||a===Sa||a===Ia||a===Sk||a===Ta||a===Aa||a===Um||a===Tk||typeof a=="object"&&a!==null&&(a.$$typeof===Oa||a.$$typeof===Ra||a.$$typeof===Ea||a.$$typeof===xa||a.$$typeof===Da||a.$$typeof===Ck||a.$$typeof===_k||a[0]===kk)};ht.typeOf=js;wk.exports=ht;var WI=wk.exports;function Yc(a,s){const i=getComputedStyle(s);if(!i)return;let r=a===mt.Horizontal?s.clientWidth:s.clientHeight;return r!==0?(a===mt.Horizontal?r-=parseFloat(i.paddingLeft)+parseFloat(i.paddingRight):r-=parseFloat(i.paddingTop)+parseFloat(i.paddingBottom),r):void 0}function Sc(a,s,i=[],r={condition:!0}){const{condition:l}=r,c=(function(h,d){var p={};for(var g in h)Object.prototype.hasOwnProperty.call(h,g)&&d.indexOf(g)<0&&(p[g]=h[g]);if(h!=null&&typeof Object.getOwnPropertySymbols=="function"){var $=0;for(g=Object.getOwnPropertySymbols(h);$(l&&window.addEventListener(a,s,c),()=>{l&&window.removeEventListener(a,s)})),[a,s,l,...i])}(function(a,s){s===void 0&&(s={});var i=s.insertAt;if(typeof document<"u"){var r=document.head||document.getElementsByTagName("head")[0],l=document.createElement("style");l.type="text/css",i==="top"&&r.firstChild?r.insertBefore(l,r.firstChild):r.appendChild(l),l.styleSheet?l.styleSheet.cssText=a:l.appendChild(document.createTextNode(a))}})(`/* === Main Container === */ .__dbk__container { height: 100%; width: 100%; @@ -295,7 +295,7 @@ Note: Some script sources were omitted due to size. The user can ask about speci `);if(r.length<2||l.length<2)return null;const c=new Set;for(const b of r){const T=b.trim();AO(T)&&c.add(T)}if(c.size<2)return null;const h=r.length,d=Math.ceil(h*1.5),p=Math.max(2,Math.floor(h*.5));let g=-1,$=-1,y=0;const w=new Uint8Array(l.length);for(let b=0;by&&(y=C,g=b,$=T)}if(g<0||yg+1&&!w[$-1];)$--;for(;g<$-1&&!w[g];)g++;const _=l[$-1]??"";return{range:{startLine:g+1,startColumn:1,endLine:$,endColumn:_.length+1},confidence:y,method:"similarity"}}function OO(a){const s=a.split(` `).map(i=>i.trim()).filter(i=>i.length>0);return s.length===0?!1:s.every(i=>i.startsWith("//")||i.startsWith("/*")||i.startsWith("*")||i.endsWith("*/"))}function MO(a){const s=[];let i=!1,r=null,l=0;for(let c=0;c0?(s.push({startLine:l,endLine:c}),i=!1,r=null):h.length===0&&(s.push({startLine:l,endLine:c}),i=!1,r=null)):h.startsWith("/*")?(i=!0,r="jsdoc",l=c+1,h.includes("*/")&&(s.push({startLine:l,endLine:c+1}),i=!1,r=null)):h.startsWith("//")&&(i=!0,r="line",l=c+1)}return i&&l>0&&s.push({startLine:l,endLine:a.length}),s}function NO(a,s,i=.2){if(!OO(a)||!s)return null;const r=s.split(` `),l=MO(r);if(!l.length)return null;const c=new Set;for(const g of a.split(` -`)){const y=g.trim().replace(/^\/\*+/,"").replace(/\*+\/$/,"").replace(/^\/\//,"").replace(/^\*+/,"").trim();y.length>=3&&c.add(y.toLowerCase())}if(c.size===0){if(l.length===1){const g=l[0],$=r[g.endLine-1]??"";return{range:{startLine:g.startLine,startColumn:1,endLine:g.endLine,endColumn:$.length+1},confidence:.5,method:"similarity"}}return null}let h=l[0],d=0;for(const g of l){let $=0;for(let w=g.startLine-1;wd&&(d=y,h=g)}if(dKi(()=>Promise.resolve().then(()=>g1),void 0,import.meta.url)),BO=pe.lazy(()=>Ki(()=>import("./index-Dxq5yPh9.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url)),jO=pe.lazy(()=>Ki(()=>import("./index-D1O5qjDd.js"),__vite__mapDeps([14,1,2,3,4,6,7,5,15,9,8,10,11,12]),import.meta.url)),FO=pe.lazy(()=>Ki(()=>import("./ScriptEditorVanillaMonaco-D8HeI_JD.js"),__vite__mapDeps([15,9,1,2,3,4,6,7,5,8,10,11,12]),import.meta.url)),zO=pe.lazy(()=>Ki(()=>import("./ScriptEditor-CjeuM3xH.js"),__vite__mapDeps([16,1,2,3,4,6,5,15,9,7,8,10,11,12,17]),import.meta.url)),U_=pe.lazy(()=>Ki(()=>import("./AiChatPanel-Bmw5Sa1m.js"),__vite__mapDeps([18,1,2,3,4,6,5,9,19,7,8,10,11,12]),import.meta.url)),UO=pe.lazy(()=>Ki(()=>import("./AiDiffView-RPozjjHf.js"),__vite__mapDeps([20,1,2,3,4,6,5,7]),import.meta.url)),H_={Blockly:Jk,"Javascript/js":qc,Rules:Xk,def:qc,"TypeScript/ts":qk},HO=48,W_="#02a102",Hg="#70aae9",WO=nk[400],GO=rk[400],Me={toolbar:a=>({minHeight:38,boxShadow:"0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)",backgroundColor:a.palette.mode==="dark"?"#1e1e1e":"#E2E2E2"}),toolbarButtons:{padding:4,marginLeft:4},toolbarButtonsDisabled:{filter:"grayscale(100%)",opacity:.5},editorDiv:a=>({height:`calc(100% - ${(parseInt(a.toolbar.height,10)||48)+38+10}px)`,width:"100%",overflow:"hidden",position:"relative"}),textButton:{marginRight:10,minHeight:24,padding:"6px 16px",height:32},saveButton:{background:"#ff9900"},tabIcon:{width:24,height:24,verticalAlign:"middle",marginBottom:2,marginRight:2,borderRadius:3},hintIcon:{padding:"0 8px 0 8px"},hintButton:{marginTop:8,marginLeft:20},tabMenuButton:{position:"absolute",top:0,right:0},tabChanged:a=>({color:a.palette.secondary.main}),tabText:{maxWidth:130,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",display:"inline-block",verticalAlign:"middle"},tabChangedIcon:{color:"#FF0000",fontSize:16,marginLeft:5},closeButton:{marginLeft:5},notRunning:{color:"#ffbc00",marginRight:8,marginLeft:8},tabButton:{minHeight:48},tabButtonWrapper:{display:"inline-block"},menuIcon:{width:18,height:18,borderRadius:2,marginRight:5}};class Hn extends pe.Component{getSelect=null;changedMirror={};cron={initValue:null,callback:null};scriptDialog={initValue:null,callback:null,args:null,isReturn:!1};objects;scripts;selectId={initValue:null,callback:null};confirmCallback=null;blocklyEditorRef=pe.createRef();scriptEditorRef=pe.createRef();lastKnownTs={};constructor(s){var c,h;super(s);let i=window.localStorage.getItem("Editor.selected")||"";const r=window.localStorage.getItem("Editor.editing")||"[]";let l;try{l=JSON.parse(r)}catch{l=[]}i&&!l.includes(i)&&l.push(i),i&&!this.props.password&&((h=(c=this.props.objects[i])==null?void 0:c.native)!=null&&h.protected)&&(i=l.find(d=>{var p,g;return!((g=(p=this.props.objects[d])==null?void 0:p.native)!=null&&g.protected)})||""),!i&&l.length&&(this.props.password?i=l[0]:i=l.find(d=>{var p,g;return!((g=(p=this.props.objects[d])==null?void 0:p.native)!=null&&g.protected)})||""),this.state={askAboutDebug:!1,astroEvents:null,blockly:null,changed:{},cmdToBlockly:"",cmdToRules:"",confirm:"",debugEnabled:!1,editing:l,insert:"",instancesLoaded:!1,isTourOpen:window.localStorage.getItem("tour")!=="true",menuDebugAnchorEl:null,menuOidDisplayAnchorEl:null,oidDisplayMode:parseInt(window.localStorage.getItem("Blockly.FieldOID.displayMode")||"0",10)||0,oidShowIcon:window.localStorage.getItem("Blockly.FieldOID.showIcon")==="true",menuOpened:!!this.props.menuOpened,menuTabsOpened:!1,aiChatOpen:window.localStorage.getItem("Editor.aiChatOpen")==="true",aiDiffView:null,aiActionRequest:null,inlineAskHandler:null,aiCompletionsEnabled:window.localStorage.getItem("Editor.aiCompletions")!=="false",triggerPrettier:1,scriptConflict:"",rules:null,runningInstances:this.props.runningInstances||{},searchText:"",selected:i,showAdapterDebug:!1,showAstro:!1,showCompiledCode:!1,showCron:!1,showDebugMenu:!1,showScript:!1,showSelectId:!1,themeType:this.props.themeType,toast:"",tourStep:Ps.selectTriggers,verboseEnabled:!1,visible:s.visible},this.setChangedInAdmin(),window.systemLang=x.I18n.getLanguage(),window.main={objects:{},getObject:(d,p)=>this.props.socket.getObject(d).then(g=>p==null?void 0:p(null,g)).catch(g=>p==null?void 0:p(g)),getState:(d,p)=>this.props.socket.getState(d).then(g=>p==null?void 0:p(null,g)).catch(g=>p==null?void 0:p(g)),instances:[],selectIdDialog:(d,p,g)=>{typeof p=="function"&&(g=p,p=null),this.selectId.callback=g,this.selectId.initValue=d,this.selectId.type=p,this.setState({showSelectId:!0})},cronDialog:(d,p)=>{this.cron.callback=p,this.cron.initValue=d,this.setState({showCron:!0})},showScriptDialog:(d,p,g,$)=>{this.scriptDialog.callback=$,this.scriptDialog.initValue=d,this.scriptDialog.args=p,this.scriptDialog.isReturn=g||!1,this.setState({showScript:!0})}},this.objects=s.objects,this.scripts={},this.getAllAdapterInstances().then(()=>{this.props.onSelectedChange&&this.state.selected&&setTimeout(()=>this.props.onSelectedChange(this.state.selected,this.state.editing),100)})}async getAllAdapterInstances(){const s=await this.props.socket.getAdapterInstances(!0),i={},r=s.map(l=>(i[l._id]=l,l._id));window.main.objects=i,window.main.instances=r,this.setState({instancesLoaded:!0})}static onInstanceChanged(s,i){if(s)if(!i&&window.main.instances.includes(s)){delete window.main.objects[s];const r=window.main.instances.indexOf(s);window.main.instances.splice(r,1)}else(i==null?void 0:i.type)==="instance"&&(window.main.instances.includes(s)||(window.main.instances.push(s),window.main.instances.sort()),window.main.objects[s]=i)}setChangedInAdmin(){const s=Object.keys(this.state.changed).find(i=>this.state.changed[i]);Object.keys(this.state.changed).forEach(i=>{this.changedMirror[i]=this.state.changed[i]}),Object.keys(this.changedMirror).forEach(i=>{this.state.changed[i]===void 0&&delete this.changedMirror[i]}),this.props.onChangedChanged(this.changedMirror),typeof window.parent<"u"&&window.parent&&(window.parent.configNotSaved=!!s)}componentDidMount(){window.addEventListener("beforeunload",this.onBrowserClose,!1),this.props.socket.subscribeObject("system.adapter.*",Hn.onInstanceChanged)}componentWillUnmount(){window.removeEventListener("beforeunload",this.onBrowserClose),this.props.socket.unsubscribeObject("system.adapter.*",Hn.onInstanceChanged)}componentDidUpdate(s){if(s.scriptsHash!==this.props.scriptsHash)for(const i of this.state.editing){const r=this.props.objects[i];if(!r||r.type!=="script")continue;const l=r.ts||0,c=this.lastKnownTs[i];c!==void 0&&l!==c&&(this.state.changed[i]?this.state.scriptConflict||this.setState({scriptConflict:i}):(this.scripts[i]=this.getScriptFromObject(i),this.lastKnownTs[i]=l))}}onBrowserClose=s=>{const i=Object.keys(this.scripts).find(r=>JSON.stringify(this.scripts[r])!==JSON.stringify(this.getScriptFromObject(r)));if(i){console.log(`Script ${JSON.stringify(this.scripts[i])}`);const r=x.I18n.t("Configuration not saved.");return s=s||window.event,s&&(s.returnValue=r),r}};removeNonExistingScripts(s,i){s=s||this.props,i=i||{};let r=!1;if(this.state.editing&&this.state.editing.find(c=>s&&!s.objects[c])){const c=[...this.state.editing];for(let h=c.length-1;h>=0;h--)this.objects[c[h]]||(r=!0,c.splice(h,1));r&&(i.editing=c),this.state.selected&&!this.objects[this.state.selected]&&(r=!0,i.selected=c[0]||"",i.selected&&this.scripts[i.selected]&&(this.state.blockly!==(this.scripts[i.selected].engineType==="Blockly")&&(i.blockly=this.scripts[i.selected].engineType==="Blockly",r=!0),this.state.rules!==(this.scripts[i.selected].engineType==="Rules")&&(i.rules=this.scripts[i.selected].engineType==="Rules",r=!0),this.state.verboseEnabled!==this.scripts[i.selected].verbose&&(i.verboseEnabled=this.scripts[i.selected].verbose,r=!0),this.state.debugEnabled!==this.scripts[i.selected].debug&&(i.debugEnabled=this.scripts[i.selected].debug,r=!0)))}return r}UNSAFE_componentWillReceiveProps(s){var l,c,h;const i={};let r=!1;if(JSON.stringify(s.runningInstances)!==JSON.stringify(this.state.runningInstances)&&(r=!0,i.runningInstances=s.runningInstances),this.state.menuOpened!==s.menuOpened&&(i.menuOpened=s.menuOpened,r=!0),this.state.themeType!==s.themeType&&(i.themeType=s.themeType,r=!0),this.removeNonExistingScripts(s,i)&&(r=!0),this.state.searchText!==s.searchText&&(i.searchText=s.searchText,r=!0),this.objects!==s.objects){this.objects=s.objects,window.main.objects=s.objects,Object.keys(this.scripts).forEach(p=>{const g=this.scripts[p].source;this.scripts[p]=JSON.parse(JSON.stringify(this.objects[p].common)),this.scripts[p].source=g}),this.state.selected&&this.objects[this.state.selected]&&(this.scripts[this.state.selected]||=JSON.parse(JSON.stringify(this.objects[this.state.selected].common)),this.state.blockly!==(this.scripts[this.state.selected].engineType==="Blockly")&&(i.blockly=this.scripts[this.state.selected].engineType==="Blockly",r=!0),this.state.rules!==(this.scripts[this.state.selected].engineType==="Rules")&&(i.rules=this.scripts[this.state.selected].engineType==="Rules",r=!0),this.state.verboseEnabled!==this.scripts[this.state.selected].verbose&&(i.verboseEnabled=this.scripts[this.state.selected].verbose,r=!0),this.state.debugEnabled!==this.scripts[this.state.selected].debug&&(i.debugEnabled=this.scripts[this.state.selected].debug,r=!0));const d=[...this.state.editing];for(let p=d.length-1;p>=0;p--)this.objects[d[p]]||(r=!0,d.splice(p,1),this.state.changed[d[p]]!==void 0&&(i.changed||={...this.state.changed},i.changed&&delete i.changed[d[p]]));this.state.selected&&!this.objects[this.state.selected]&&(i.selected=d[0]||""),r&&(i.editing=d)}else for(const d in this.scripts)if(Object.prototype.hasOwnProperty.call(this.scripts,d)){if((l=this.objects[d])!=null&&l.common){if(this.objects[d].type==="script"){const p=this.scripts[d].source,g=JSON.parse(JSON.stringify(this.scripts[d]));g.source=this.objects[d].common.source,JSON.stringify(g)!==JSON.stringify(this.objects[d].common)&&(this.scripts[d]=JSON.parse(JSON.stringify(this.objects[d].common)),this.scripts[d].source=p),p!==this.objects[d].common.source?this.state.changed[d]?(h=this.objects[d].from)!=null&&h.startsWith("system.adapter.javascript.")&&(this.objects[d].from="system.adapter.admin.0",this.setState({toast:x.I18n.t("Script %s was modified on disk.",d.split(".").pop())})):this.props.password&&((c=this.objects[d].native)!=null&&c.protected)?this.scripts[d].source=bm(this.props.password,this.objects[d].common.source):this.scripts[d].source=this.objects[d].common.source:this.state.changed[d]&&(i.changed||={...this.state.changed},i.changed&&(i.changed[d]=!1),r=!0)}}else if(this.scripts[d]&&(delete this.scripts[d],this.state.selected===d)){if(this.state.editing.indexOf(d)!==-1){const p=[...this.state.editing],g=p.indexOf(d);g!==-1&&(p.splice(g,1),i.editing=p,r=!0)}i.selected=this.state.editing[0]||"",r=!0}}if(s.selected&&this.state.selected!==s.selected){const d=this.getScriptFromObject(s.selected);this.scripts[s.selected]||=d;const p=d&&JSON.stringify(this.scripts[s.selected])!==JSON.stringify(d),g=[...this.state.editing];s.selected&&!g.includes(s.selected)&&(g.push(s.selected),this.props.onSelectedChange(s.selected,g),window.localStorage.setItem("Editor.editing",JSON.stringify(g))),r=!0,i.changed||={...this.state.changed},i.changed[s.selected]=!!p,i.editing=g,i.selected=s.selected,i.blockly=this.scripts[s.selected].engineType==="Blockly",i.rules=this.scripts[s.selected].engineType==="Rules",i.verboseEnabled=this.scripts[s.selected].verbose,i.debugEnabled=this.scripts[s.selected].debug,i.showCompiledCode=!1}this.state.visible!==s.visible&&(r=!0,i.visible=s.visible),r&&this.setState(i,()=>this.setChangedInAdmin())}onRestart(){var s,i;(i=(s=this.props).onRestart)==null||i.call(s,this.state.selected)}onStartStop(){var i,r,l;const s=JSON.parse(JSON.stringify(this.scripts[this.state.selected]));s.enabled=!s.enabled,this.props.password&&((i=this.props.objects[this.state.selected].native)!=null&&i.protected)&&(s.source=jc(this.props.password,s.source)),(l=(r=this.props).onChange)==null||l.call(r,this.state.selected,s)}onSave(){if(this.state.isTourOpen&&this.state.tourStep===Ps.saveTheScript&&(this.setState({isTourOpen:!1}),window.localStorage.setItem("tour","true")),this.state.changed[this.state.selected]){const s={...this.state.changed};s[this.state.selected]=!1,this.setState({changed:s},()=>{var r,l,c;this.setChangedInAdmin();const i=JSON.parse(JSON.stringify(this.scripts[this.state.selected]));this.props.password&&((r=this.props.objects[this.state.selected].native)!=null&&r.protected)&&(i.source=jc(this.props.password,i.source)),(c=(l=this.props).onChange)==null||c.call(l,this.state.selected,i)})}}onSaveAll(){const s={...this.state.changed};Object.keys(s).forEach(i=>{var r,l,c;if(s[i]){s[i]=!1;const h=JSON.parse(JSON.stringify(this.scripts[i]));this.props.password&&((r=this.props.objects[i].native)!=null&&r.protected)&&(h.source=jc(this.props.password,h.source)),(c=(l=this.props).onChange)==null||c.call(l,i,h)}}),this.setState({changed:s},()=>this.setChangedInAdmin())}onCancel(){var i;this.scripts[this.state.selected]=this.getScriptFromObject(this.state.selected),this.lastKnownTs[this.state.selected]=((i=this.props.objects[this.state.selected])==null?void 0:i.ts)||0;const s={...this.state.changed};s[this.state.selected]=!1,this.setState({changed:s},()=>this.setChangedInAdmin())}onRegisterSelect(s){this.getSelect=s}handleAiAction(s){const i={aiActionRequest:s};this.state.aiChatOpen||(window.localStorage.setItem("Editor.aiChatOpen","true"),i.aiChatOpen=!0),this.setState(i)}getEditorApi(){const s=()=>this.scriptEditorRef.current;return{getSelection:()=>{var i,r;return((r=(i=s())==null?void 0:i.getEditorSelection)==null?void 0:r.call(i))??null},getContent:()=>{var i,r;return((r=(i=s())==null?void 0:i.getEditorContent)==null?void 0:r.call(i))??""},getCursorPosition:()=>{var i,r;return((r=(i=s())==null?void 0:i.getCursorPosition)==null?void 0:r.call(i))??null},highlightText:i=>{var r,l;return((l=(r=s())==null?void 0:r.highlightText)==null?void 0:l.call(r,i))??0},highlightLineRange:(i,r)=>{var l,c;return((c=(l=s())==null?void 0:l.highlightLineRange)==null?void 0:c.call(l,i,r))??!1},goToLine:(i,r)=>{var l,c;return((c=(l=s())==null?void 0:l.goToLine)==null?void 0:c.call(l,i,r))??!1},insertTextAtCursor:i=>{const r=s();return r!=null&&r.insertTextIntoEditor?(r.insertTextIntoEditor(i),!0):!1},replaceSelection:i=>{var r,l;return((l=(r=s())==null?void 0:r.replaceSelection)==null?void 0:l.call(r,i))??!1},getDiagnostics:()=>{var i,r;return((r=(i=s())==null?void 0:i.getDiagnostics)==null?void 0:r.call(i))??[]},getSymbols:async()=>{var i,r;return((r=(i=s())==null?void 0:i.getDocumentSymbols)==null?void 0:r.call(i))??[]}}}onConvertBlockly2JS(){this.showConfirmDialog(x.I18n.t("It will not be possible to revert this operation."),s=>{if(s){this.scripts[this.state.selected].engineType="Javascript/js";const r=this.scripts[this.state.selected].source.split(` +`)){const y=g.trim().replace(/^\/\*+/,"").replace(/\*+\/$/,"").replace(/^\/\//,"").replace(/^\*+/,"").trim();y.length>=3&&c.add(y.toLowerCase())}if(c.size===0){if(l.length===1){const g=l[0],$=r[g.endLine-1]??"";return{range:{startLine:g.startLine,startColumn:1,endLine:g.endLine,endColumn:$.length+1},confidence:.5,method:"similarity"}}return null}let h=l[0],d=0;for(const g of l){let $=0;for(let w=g.startLine-1;wd&&(d=y,h=g)}if(dKi(()=>Promise.resolve().then(()=>g1),void 0,import.meta.url)),BO=pe.lazy(()=>Ki(()=>import("./index-Bs9TcrAn.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url)),jO=pe.lazy(()=>Ki(()=>import("./index-B3VPMSlh.js"),__vite__mapDeps([14,1,2,3,4,6,7,5,15,9,8,10,11,12]),import.meta.url)),FO=pe.lazy(()=>Ki(()=>import("./ScriptEditorVanillaMonaco-CxOCXiVn.js"),__vite__mapDeps([15,9,1,2,3,4,6,7,5,8,10,11,12]),import.meta.url)),zO=pe.lazy(()=>Ki(()=>import("./ScriptEditor-1ecFtrbs.js"),__vite__mapDeps([16,1,2,3,4,6,5,15,9,7,8,10,11,12,17]),import.meta.url)),U_=pe.lazy(()=>Ki(()=>import("./AiChatPanel-CrAsP3TB.js"),__vite__mapDeps([18,1,2,3,4,6,5,9,19,7,8,10,11,12]),import.meta.url)),UO=pe.lazy(()=>Ki(()=>import("./AiDiffView-RPozjjHf.js"),__vite__mapDeps([20,1,2,3,4,6,5,7]),import.meta.url)),H_={Blockly:Jk,"Javascript/js":qc,Rules:Xk,def:qc,"TypeScript/ts":qk},HO=48,W_="#02a102",Hg="#70aae9",WO=nk[400],GO=rk[400],Me={toolbar:a=>({minHeight:38,boxShadow:"0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)",backgroundColor:a.palette.mode==="dark"?"#1e1e1e":"#E2E2E2"}),toolbarButtons:{padding:4,marginLeft:4},toolbarButtonsDisabled:{filter:"grayscale(100%)",opacity:.5},editorDiv:a=>({height:`calc(100% - ${(parseInt(a.toolbar.height,10)||48)+38+10}px)`,width:"100%",overflow:"hidden",position:"relative"}),textButton:{marginRight:10,minHeight:24,padding:"6px 16px",height:32},saveButton:{background:"#ff9900"},tabIcon:{width:24,height:24,verticalAlign:"middle",marginBottom:2,marginRight:2,borderRadius:3},hintIcon:{padding:"0 8px 0 8px"},hintButton:{marginTop:8,marginLeft:20},tabMenuButton:{position:"absolute",top:0,right:0},tabChanged:a=>({color:a.palette.secondary.main}),tabText:{maxWidth:130,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",display:"inline-block",verticalAlign:"middle"},tabChangedIcon:{color:"#FF0000",fontSize:16,marginLeft:5},closeButton:{marginLeft:5},notRunning:{color:"#ffbc00",marginRight:8,marginLeft:8},tabButton:{minHeight:48},tabButtonWrapper:{display:"inline-block"},menuIcon:{width:18,height:18,borderRadius:2,marginRight:5}};class Hn extends pe.Component{getSelect=null;changedMirror={};cron={initValue:null,callback:null};scriptDialog={initValue:null,callback:null,args:null,isReturn:!1};objects;scripts;selectId={initValue:null,callback:null};confirmCallback=null;blocklyEditorRef=pe.createRef();scriptEditorRef=pe.createRef();lastKnownTs={};constructor(s){var c,h;super(s);let i=window.localStorage.getItem("Editor.selected")||"";const r=window.localStorage.getItem("Editor.editing")||"[]";let l;try{l=JSON.parse(r)}catch{l=[]}i&&!l.includes(i)&&l.push(i),i&&!this.props.password&&((h=(c=this.props.objects[i])==null?void 0:c.native)!=null&&h.protected)&&(i=l.find(d=>{var p,g;return!((g=(p=this.props.objects[d])==null?void 0:p.native)!=null&&g.protected)})||""),!i&&l.length&&(this.props.password?i=l[0]:i=l.find(d=>{var p,g;return!((g=(p=this.props.objects[d])==null?void 0:p.native)!=null&&g.protected)})||""),this.state={askAboutDebug:!1,astroEvents:null,blockly:null,changed:{},cmdToBlockly:"",cmdToRules:"",confirm:"",debugEnabled:!1,editing:l,insert:"",instancesLoaded:!1,isTourOpen:window.localStorage.getItem("tour")!=="true",menuDebugAnchorEl:null,menuOidDisplayAnchorEl:null,oidDisplayMode:parseInt(window.localStorage.getItem("Blockly.FieldOID.displayMode")||"0",10)||0,oidShowIcon:window.localStorage.getItem("Blockly.FieldOID.showIcon")==="true",menuOpened:!!this.props.menuOpened,menuTabsOpened:!1,aiChatOpen:window.localStorage.getItem("Editor.aiChatOpen")==="true",aiDiffView:null,aiActionRequest:null,inlineAskHandler:null,aiCompletionsEnabled:window.localStorage.getItem("Editor.aiCompletions")!=="false",triggerPrettier:1,scriptConflict:"",rules:null,runningInstances:this.props.runningInstances||{},searchText:"",selected:i,showAdapterDebug:!1,showAstro:!1,showCompiledCode:!1,showCron:!1,showDebugMenu:!1,showScript:!1,showSelectId:!1,themeType:this.props.themeType,toast:"",tourStep:Ps.selectTriggers,verboseEnabled:!1,visible:s.visible},this.setChangedInAdmin(),window.systemLang=x.I18n.getLanguage(),window.main={objects:{},getObject:(d,p)=>this.props.socket.getObject(d).then(g=>p==null?void 0:p(null,g)).catch(g=>p==null?void 0:p(g)),getState:(d,p)=>this.props.socket.getState(d).then(g=>p==null?void 0:p(null,g)).catch(g=>p==null?void 0:p(g)),instances:[],selectIdDialog:(d,p,g)=>{typeof p=="function"&&(g=p,p=null),this.selectId.callback=g,this.selectId.initValue=d,this.selectId.type=p,this.setState({showSelectId:!0})},cronDialog:(d,p)=>{this.cron.callback=p,this.cron.initValue=d,this.setState({showCron:!0})},showScriptDialog:(d,p,g,$)=>{this.scriptDialog.callback=$,this.scriptDialog.initValue=d,this.scriptDialog.args=p,this.scriptDialog.isReturn=g||!1,this.setState({showScript:!0})}},this.objects=s.objects,this.scripts={},this.getAllAdapterInstances().then(()=>{this.props.onSelectedChange&&this.state.selected&&setTimeout(()=>this.props.onSelectedChange(this.state.selected,this.state.editing),100)})}async getAllAdapterInstances(){const s=await this.props.socket.getAdapterInstances(!0),i={},r=s.map(l=>(i[l._id]=l,l._id));window.main.objects=i,window.main.instances=r,this.setState({instancesLoaded:!0})}static onInstanceChanged(s,i){if(s)if(!i&&window.main.instances.includes(s)){delete window.main.objects[s];const r=window.main.instances.indexOf(s);window.main.instances.splice(r,1)}else(i==null?void 0:i.type)==="instance"&&(window.main.instances.includes(s)||(window.main.instances.push(s),window.main.instances.sort()),window.main.objects[s]=i)}setChangedInAdmin(){const s=Object.keys(this.state.changed).find(i=>this.state.changed[i]);Object.keys(this.state.changed).forEach(i=>{this.changedMirror[i]=this.state.changed[i]}),Object.keys(this.changedMirror).forEach(i=>{this.state.changed[i]===void 0&&delete this.changedMirror[i]}),this.props.onChangedChanged(this.changedMirror),typeof window.parent<"u"&&window.parent&&(window.parent.configNotSaved=!!s)}componentDidMount(){window.addEventListener("beforeunload",this.onBrowserClose,!1),this.props.socket.subscribeObject("system.adapter.*",Hn.onInstanceChanged)}componentWillUnmount(){window.removeEventListener("beforeunload",this.onBrowserClose),this.props.socket.unsubscribeObject("system.adapter.*",Hn.onInstanceChanged)}componentDidUpdate(s){if(s.scriptsHash!==this.props.scriptsHash)for(const i of this.state.editing){const r=this.props.objects[i];if(!r||r.type!=="script")continue;const l=r.ts||0,c=this.lastKnownTs[i];c!==void 0&&l!==c&&(this.state.changed[i]?this.state.scriptConflict||this.setState({scriptConflict:i}):(this.scripts[i]=this.getScriptFromObject(i),this.lastKnownTs[i]=l))}}onBrowserClose=s=>{const i=Object.keys(this.scripts).find(r=>JSON.stringify(this.scripts[r])!==JSON.stringify(this.getScriptFromObject(r)));if(i){console.log(`Script ${JSON.stringify(this.scripts[i])}`);const r=x.I18n.t("Configuration not saved.");return s=s||window.event,s&&(s.returnValue=r),r}};removeNonExistingScripts(s,i){s=s||this.props,i=i||{};let r=!1;if(this.state.editing&&this.state.editing.find(c=>s&&!s.objects[c])){const c=[...this.state.editing];for(let h=c.length-1;h>=0;h--)this.objects[c[h]]||(r=!0,c.splice(h,1));r&&(i.editing=c),this.state.selected&&!this.objects[this.state.selected]&&(r=!0,i.selected=c[0]||"",i.selected&&this.scripts[i.selected]&&(this.state.blockly!==(this.scripts[i.selected].engineType==="Blockly")&&(i.blockly=this.scripts[i.selected].engineType==="Blockly",r=!0),this.state.rules!==(this.scripts[i.selected].engineType==="Rules")&&(i.rules=this.scripts[i.selected].engineType==="Rules",r=!0),this.state.verboseEnabled!==this.scripts[i.selected].verbose&&(i.verboseEnabled=this.scripts[i.selected].verbose,r=!0),this.state.debugEnabled!==this.scripts[i.selected].debug&&(i.debugEnabled=this.scripts[i.selected].debug,r=!0)))}return r}UNSAFE_componentWillReceiveProps(s){var l,c,h;const i={};let r=!1;if(JSON.stringify(s.runningInstances)!==JSON.stringify(this.state.runningInstances)&&(r=!0,i.runningInstances=s.runningInstances),this.state.menuOpened!==s.menuOpened&&(i.menuOpened=s.menuOpened,r=!0),this.state.themeType!==s.themeType&&(i.themeType=s.themeType,r=!0),this.removeNonExistingScripts(s,i)&&(r=!0),this.state.searchText!==s.searchText&&(i.searchText=s.searchText,r=!0),this.objects!==s.objects){this.objects=s.objects,window.main.objects=s.objects,Object.keys(this.scripts).forEach(p=>{const g=this.scripts[p].source;this.scripts[p]=JSON.parse(JSON.stringify(this.objects[p].common)),this.scripts[p].source=g}),this.state.selected&&this.objects[this.state.selected]&&(this.scripts[this.state.selected]||=JSON.parse(JSON.stringify(this.objects[this.state.selected].common)),this.state.blockly!==(this.scripts[this.state.selected].engineType==="Blockly")&&(i.blockly=this.scripts[this.state.selected].engineType==="Blockly",r=!0),this.state.rules!==(this.scripts[this.state.selected].engineType==="Rules")&&(i.rules=this.scripts[this.state.selected].engineType==="Rules",r=!0),this.state.verboseEnabled!==this.scripts[this.state.selected].verbose&&(i.verboseEnabled=this.scripts[this.state.selected].verbose,r=!0),this.state.debugEnabled!==this.scripts[this.state.selected].debug&&(i.debugEnabled=this.scripts[this.state.selected].debug,r=!0));const d=[...this.state.editing];for(let p=d.length-1;p>=0;p--)this.objects[d[p]]||(r=!0,d.splice(p,1),this.state.changed[d[p]]!==void 0&&(i.changed||={...this.state.changed},i.changed&&delete i.changed[d[p]]));this.state.selected&&!this.objects[this.state.selected]&&(i.selected=d[0]||""),r&&(i.editing=d)}else for(const d in this.scripts)if(Object.prototype.hasOwnProperty.call(this.scripts,d)){if((l=this.objects[d])!=null&&l.common){if(this.objects[d].type==="script"){const p=this.scripts[d].source,g=JSON.parse(JSON.stringify(this.scripts[d]));g.source=this.objects[d].common.source,JSON.stringify(g)!==JSON.stringify(this.objects[d].common)&&(this.scripts[d]=JSON.parse(JSON.stringify(this.objects[d].common)),this.scripts[d].source=p),p!==this.objects[d].common.source?this.state.changed[d]?(h=this.objects[d].from)!=null&&h.startsWith("system.adapter.javascript.")&&(this.objects[d].from="system.adapter.admin.0",this.setState({toast:x.I18n.t("Script %s was modified on disk.",d.split(".").pop())})):this.props.password&&((c=this.objects[d].native)!=null&&c.protected)?this.scripts[d].source=bm(this.props.password,this.objects[d].common.source):this.scripts[d].source=this.objects[d].common.source:this.state.changed[d]&&(i.changed||={...this.state.changed},i.changed&&(i.changed[d]=!1),r=!0)}}else if(this.scripts[d]&&(delete this.scripts[d],this.state.selected===d)){if(this.state.editing.indexOf(d)!==-1){const p=[...this.state.editing],g=p.indexOf(d);g!==-1&&(p.splice(g,1),i.editing=p,r=!0)}i.selected=this.state.editing[0]||"",r=!0}}if(s.selected&&this.state.selected!==s.selected){const d=this.getScriptFromObject(s.selected);this.scripts[s.selected]||=d;const p=d&&JSON.stringify(this.scripts[s.selected])!==JSON.stringify(d),g=[...this.state.editing];s.selected&&!g.includes(s.selected)&&(g.push(s.selected),this.props.onSelectedChange(s.selected,g),window.localStorage.setItem("Editor.editing",JSON.stringify(g))),r=!0,i.changed||={...this.state.changed},i.changed[s.selected]=!!p,i.editing=g,i.selected=s.selected,i.blockly=this.scripts[s.selected].engineType==="Blockly",i.rules=this.scripts[s.selected].engineType==="Rules",i.verboseEnabled=this.scripts[s.selected].verbose,i.debugEnabled=this.scripts[s.selected].debug,i.showCompiledCode=!1}this.state.visible!==s.visible&&(r=!0,i.visible=s.visible),r&&this.setState(i,()=>this.setChangedInAdmin())}onRestart(){var s,i;(i=(s=this.props).onRestart)==null||i.call(s,this.state.selected)}onStartStop(){var i,r,l;const s=JSON.parse(JSON.stringify(this.scripts[this.state.selected]));s.enabled=!s.enabled,this.props.password&&((i=this.props.objects[this.state.selected].native)!=null&&i.protected)&&(s.source=jc(this.props.password,s.source)),(l=(r=this.props).onChange)==null||l.call(r,this.state.selected,s)}onSave(){if(this.state.isTourOpen&&this.state.tourStep===Ps.saveTheScript&&(this.setState({isTourOpen:!1}),window.localStorage.setItem("tour","true")),this.state.changed[this.state.selected]){const s={...this.state.changed};s[this.state.selected]=!1,this.setState({changed:s},()=>{var r,l,c;this.setChangedInAdmin();const i=JSON.parse(JSON.stringify(this.scripts[this.state.selected]));this.props.password&&((r=this.props.objects[this.state.selected].native)!=null&&r.protected)&&(i.source=jc(this.props.password,i.source)),(c=(l=this.props).onChange)==null||c.call(l,this.state.selected,i)})}}onSaveAll(){const s={...this.state.changed};Object.keys(s).forEach(i=>{var r,l,c;if(s[i]){s[i]=!1;const h=JSON.parse(JSON.stringify(this.scripts[i]));this.props.password&&((r=this.props.objects[i].native)!=null&&r.protected)&&(h.source=jc(this.props.password,h.source)),(c=(l=this.props).onChange)==null||c.call(l,i,h)}}),this.setState({changed:s},()=>this.setChangedInAdmin())}onCancel(){var i;this.scripts[this.state.selected]=this.getScriptFromObject(this.state.selected),this.lastKnownTs[this.state.selected]=((i=this.props.objects[this.state.selected])==null?void 0:i.ts)||0;const s={...this.state.changed};s[this.state.selected]=!1,this.setState({changed:s},()=>this.setChangedInAdmin())}onRegisterSelect(s){this.getSelect=s}handleAiAction(s){const i={aiActionRequest:s};this.state.aiChatOpen||(window.localStorage.setItem("Editor.aiChatOpen","true"),i.aiChatOpen=!0),this.setState(i)}getEditorApi(){const s=()=>this.scriptEditorRef.current;return{getSelection:()=>{var i,r;return((r=(i=s())==null?void 0:i.getEditorSelection)==null?void 0:r.call(i))??null},getContent:()=>{var i,r;return((r=(i=s())==null?void 0:i.getEditorContent)==null?void 0:r.call(i))??""},getCursorPosition:()=>{var i,r;return((r=(i=s())==null?void 0:i.getCursorPosition)==null?void 0:r.call(i))??null},highlightText:i=>{var r,l;return((l=(r=s())==null?void 0:r.highlightText)==null?void 0:l.call(r,i))??0},highlightLineRange:(i,r)=>{var l,c;return((c=(l=s())==null?void 0:l.highlightLineRange)==null?void 0:c.call(l,i,r))??!1},goToLine:(i,r)=>{var l,c;return((c=(l=s())==null?void 0:l.goToLine)==null?void 0:c.call(l,i,r))??!1},insertTextAtCursor:i=>{const r=s();return r!=null&&r.insertTextIntoEditor?(r.insertTextIntoEditor(i),!0):!1},replaceSelection:i=>{var r,l;return((l=(r=s())==null?void 0:r.replaceSelection)==null?void 0:l.call(r,i))??!1},getDiagnostics:()=>{var i,r;return((r=(i=s())==null?void 0:i.getDiagnostics)==null?void 0:r.call(i))??[]},getSymbols:async()=>{var i,r;return((r=(i=s())==null?void 0:i.getDocumentSymbols)==null?void 0:r.call(i))??[]}}}onConvertBlockly2JS(){this.showConfirmDialog(x.I18n.t("It will not be possible to revert this operation."),s=>{if(s){this.scripts[this.state.selected].engineType="Javascript/js";const r=this.scripts[this.state.selected].source.split(` `);r.pop(),this.scripts[this.state.selected].source=r.join(` `);const l=this.state.selected,c={...this.state.changed};c[this.state.selected]=!0,this.setState({changed:c,blockly:!1,selected:""},()=>{this.setChangedInAdmin(),setTimeout(()=>this.setState({selected:l}),100)})}})}onChange(s){if(s.script!==void 0){if(s.script===this.scripts[this.state.selected].source)return;this.scripts[this.state.selected].source=s.script}s.debug!==void 0&&(this.scripts[this.state.selected].debug=s.debug),s.verbose!==void 0&&(this.scripts[this.state.selected].verbose=s.verbose);const i=JSON.stringify(this.scripts[this.state.selected])!==JSON.stringify(this.getScriptFromObject(this.state.selected));if(i!==!!this.state.changed[this.state.selected]){const r={...this.state.changed};r[this.state.selected]=i,this.objects[this.state.selected].from="system.adapter.admin.0",this.setState({changed:r},()=>this.setChangedInAdmin())}}onTabChange(s){var r,l;if(this.props.debugMode)return;window.localStorage.setItem("Editor.selected",s);const i=this.scripts[s]||this.getScriptFromObject(s);this.scripts[s]||(this.scripts[s]=i),this.lastKnownTs[s]===void 0&&this.props.objects[s]&&(this.lastKnownTs[s]=this.props.objects[s].ts||0),this.setState({selected:s,rules:i.engineType==="Rules",blockly:i.engineType==="Blockly",showCompiledCode:!1,verboseEnabled:i.verbose,debugEnabled:i.debug}),(l=(r=this.props).onSelectedChange)==null||l.call(r,s,this.state.editing)}isScriptChanged(s){return!!(this.scripts[s]&&this.props.objects[s]&&JSON.stringify(this.scripts[s])!==JSON.stringify(this.getScriptFromObject(s)))}onTabClose(s,i){i==null||i.stopPropagation();const r=this.state.editing.indexOf(s);if(this.state.editing.includes(s))if(this.isScriptChanged(s))this.showConfirmDialog(x.I18n.t("Discard changes for %s",this.props.objects[s].common.name),l=>{l&&(delete this.scripts[s],delete this.lastKnownTs[s],this.onTabClose(s))});else{const l=[...this.state.editing];l.splice(r,1);const c={editing:l};if(s===this.state.selected?l.length?r===0||l.length===1?c.selected=l[0]:c.selected=l[r-1]:c.selected="":this.state.selected&&!l.length&&(c.selected=""),window.localStorage.setItem("Editor.editing",JSON.stringify(l)),c.selected!==void 0){c.changed||={...this.state.changed},c.changed[c.selected]=this.isScriptChanged(c.selected);const h=c.selected?this.scripts[c.selected]||this.getScriptFromObject(c.selected):void 0;c.blockly=(h==null?void 0:h.engineType)==="Blockly",c.rules=(h==null?void 0:h.engineType)==="Rules",c.verboseEnabled=!!(h!=null&&h.verbose),c.debugEnabled=!!(h!=null&&h.debug),c.showCompiledCode=!1}this.setState(c,()=>{var h,d,p,g;this.setChangedInAdmin(),c.selected!==void 0?((d=(h=this.props).onSelectedChange)==null||d.call(h,c.selected,this.state.editing),window.localStorage.setItem("Editor.selected",c.selected)):(g=(p=this.props).onSelectedChange)==null||g.call(p,this.state.selected,this.state.editing)})}}showConfirmDialog(s,i){this.confirmCallback=i,this.setState({confirm:s})}sendCommandToBlockly(s){this.setState({cmdToBlockly:s},()=>setTimeout(()=>this.setState({cmdToBlockly:""}),200))}sendCommandToRules(s){this.setState({cmdToRules:s},()=>setTimeout(()=>this.setState({cmdToRules:""}),200))}static getText(s){return typeof s=="object"?s[x.I18n.getLanguage()]||s.en:s}getScriptFullName(s){var c;const i=s.split(".");i.shift(),i.shift();const r=[];let l="script.js";for(let h=0;hthis.onTabChange(i),indicatorColor:"primary",style:{position:"relative",marginLeft:10,width:this.state.editing.length>1?"calc(100% - 50px)":"100%",display:"inline-block"},textColor:"primary",variant:"scrollable",scrollButtons:"auto",allowScrollButtonsMobile:!0,children:[this.state.editing.map(s=>{var d,p;if(!this.props.objects[s]){const g=[m.jsx(bt,{sx:this.isScriptChanged(s)?Me.tabChanged:void 0,style:Me.tabText,children:s.split(".").pop()},"text"),m.jsx(We,{onClick:$=>this.onTabClose(s,$),style:Me.closeButton,size:"small",component:"span",children:m.jsx(kc,{})},"icon")];return m.jsx(fg,{wrapped:!0,href:`#${s}`,label:g,value:s,sx:{"& .MuiTab-wrapper":Me.tabButtonWrapper}},s)}if(!this.props.password&&((d=this.props.objects[s].native)!=null&&d.protected))return null;let i=Hn.getText(this.props.objects[s].common.name)||"";const r=this.getScriptFullName(s);i.length>18&&(i=`${i.substring(0,15)}...`);const l=(p=this.getScriptFromObject(s))==null?void 0:p.source,c=this.scripts[s]&&l!==this.scripts[s].source,h=[m.jsx(bt,{sx:this.isScriptChanged(s)?Me.tabChanged:void 0,style:Me.tabText,children:i},"text"),c?m.jsx("span",{style:Me.tabChangedIcon,children:"▣"},"changedSign"):null,!this.props.debugInstance&&(!this.props.debugMode||this.state.selected!==s)&&m.jsx(We,{onClick:g=>this.onTabClose(s,g),style:Me.closeButton,size:"small",component:"span",children:m.jsx(kc,{})},"icon")];return m.jsx(fg,{disabled:!!this.props.debugInstance||this.state.selected!==s&&this.props.debugMode,wrapped:!0,iconPosition:"start",icon:m.jsx("img",{alt:"",src:H_[this.props.objects[s].common.engineType]||H_.def,style:Me.tabIcon},"icon"),href:`#${s}`,label:h,style:Me.tabButton,value:s,title:r,sx:{"& .MuiTab-wrapper":Me.tabButtonWrapper}},s)}),this.props.debugInstance?m.jsx(fg,{disabled:!1,wrapped:!0,href:`#${this.props.debugInstance.adapter}`,label:this.props.debugInstance.adapter,style:Me.tabButton,value:this.props.debugInstance.adapter,title:this.props.debugInstance.adapter,sx:{"& .MuiTab-wrapper":Me.tabButtonWrapper}},this.props.debugInstance.adapter):""]},"tabs1"),this.state.editing.length>1?m.jsx(We,{href:"#","aria-label":"Close all but current",style:Me.tabMenuButton,title:x.I18n.t("Close all but current"),"aria-haspopup":"false",onClick:s=>{const i=[this.state.selected];Object.keys(this.scripts).forEach(r=>r!==this.state.selected&&JSON.stringify(this.scripts[r])!==JSON.stringify(this.getScriptFromObject(r))&&i.push(r)),window.localStorage.setItem("Editor.editing",JSON.stringify(i)),this.setState({menuTabsOpened:!1,editing:i})},size:"medium",children:m.jsx(cI,{})},"menuButton"):null]:m.jsx(bt,{sx:Me.toolbar,children:m.jsxs(je,{color:"grey",disabled:!0,style:Me.hintButton,href:"",children:[m.jsx("span",{children:x.I18n.t("Click on this icon")},"select2"),m.jsx(uI,{style:Me.hintIcon},"select3"),m.jsx("span",{children:x.I18n.t("for edit or create script")},"select4")]},"select1")},"tabs2")}getDebugMenu(){return this.state.showDebugMenu?m.jsxs(Vc,{id:"menu-debug",anchorEl:this.state.menuDebugAnchorEl,open:this.state.showDebugMenu,onClose:()=>this.setState({showDebugMenu:!1,menuDebugAnchorEl:null}),slotProps:{root:{style:{maxHeight:HO*7.5}}},children:[m.jsxs(et,{title:x.I18n.t("debug_help"),onClick:s=>{s.stopPropagation(),s.preventDefault(),this.setState({showDebugMenu:!1,menuDebugAnchorEl:null,debugEnabled:!this.state.debugEnabled},()=>this.onChange({debug:this.state.debugEnabled}))},children:[m.jsx(ua,{checked:this.state.debugEnabled}),m.jsx(Cc,{style:{...Me.menuIcon,color:W_}}),x.I18n.t("debug_label")]},"debugEnabled"),m.jsxs(et,{title:x.I18n.t("verbose_help"),onClick:s=>{s.stopPropagation(),s.preventDefault(),this.setState({showDebugMenu:!1,menuDebugAnchorEl:null,verboseEnabled:!this.state.verboseEnabled},()=>this.onChange({verbose:this.state.verboseEnabled}))},children:[m.jsx(ua,{checked:this.state.verboseEnabled}),m.jsx(Ow,{style:{...Me.menuIcon,color:Hg}}),x.I18n.t("verbose_label")]},"verboseEnabled")]},"menuDebug"):null}getDebugBadge(){return[this.state.debugEnabled&&this.state.verboseEnabled?m.jsx(Cc,{style:{...Me.menuIcon,color:Hg}},"DebugVerbose"):null,this.state.debugEnabled&&!this.state.verboseEnabled?m.jsx(Cc,{style:{...Me.menuIcon,color:W_}},"DebugNoVerbose"):null,!this.state.debugEnabled&&this.state.verboseEnabled?m.jsx(Ow,{style:{...Me.menuIcon,color:Hg}},"noDebugVerbose"):null]}getAskAboutDebug(){return this.state.askAboutDebug?m.jsx(x.DialogConfirm,{onClose:()=>{this.setState({askAboutDebug:!1},()=>this.props.onDebugModeChange(!0))},ok:x.I18n.t("Yes"),cancel:x.I18n.t("Cancel"),text:x.I18n.t("The script will be stopped and must be activated manually after debugging. Continue?")}):null}getToolbar(){var r,l;const s=!!(this.state.selected&&((r=this.scripts[this.state.selected])!=null&&r.engine)&&this.state.runningInstances[this.scripts[this.state.selected].engine]),i=!!(this.state.selected&&((l=this.scripts[this.state.selected])!=null&&l.enabled));if(this.state.selected){const c=Object.keys(this.state.changed).filter(d=>this.state.changed[d]).length,h=this.state.changed[this.state.selected];return m.jsxs(BT,{variant:"dense",sx:Me.toolbar,children:[!this.props.debugInstance&&this.state.menuOpened&&this.props.onLocate&&m.jsx(We,{style:Me.toolbarButtons,title:x.I18n.t("Locate file"),onClick:()=>this.props.onLocate(this.state.selected),size:"medium",children:m.jsx(dI,{})},"locate"),!this.props.debugInstance&&!h&&s?m.jsx(We,{disabled:this.props.debugMode,style:Me.toolbarButtons,onClick:()=>this.onRestart(),title:x.I18n.t("Restart"),size:"medium",children:m.jsx(hI,{})},"restart"):null,!this.props.debugInstance&&!h?m.jsx(We,{disabled:this.props.debugMode,onClick:()=>this.onStartStop(),title:i?x.I18n.t("Pause script"):x.I18n.t("Run script"),size:"medium",style:{...Me.toolbarButtons,color:i?WO:GO},children:i?m.jsx(pI,{}):m.jsx(gI,{})},"start-stop"):null,!this.props.debugInstance&&!h&&!i?m.jsx("span",{style:Me.notRunning,children:x.I18n.t("Script is not running")}):null,!h&&i&&!s?m.jsx("span",{style:Me.notRunning,children:x.I18n.t("Instance is disabled")}):null,h?m.jsx(je,{color:"grey",variant:"contained",style:{...Me.textButton,...Me.saveButton},className:"button-save",onClick:()=>this.onSave(),endIcon:m.jsx(Mw,{}),children:x.I18n.t("Save")},"save"):null,c>1||c===1&&!h?m.jsx(je,{color:"grey",variant:"contained",style:Me.textButton,onClick:()=>this.onSaveAll(),endIcon:m.jsx(Mw,{}),children:x.I18n.t("Save all")},"saveall"):null,h?m.jsx(je,{color:"grey",variant:"contained",style:Me.textButton,onClick:()=>this.onCancel(),endIcon:m.jsx(bu,{}),children:x.I18n.t("Cancel")},"cancel"):null,!this.state.showCompiledCode&&!this.state.rules?m.jsx(We,{title:x.I18n.t("Undo"),style:Me.toolbarButtons,onClick:()=>{var d,p;if(this.state.blockly){const g=(d=this.blocklyEditorRef.current)==null?void 0:d.blocklyWorkspace;g==null||g.undo(!1)}else(p=this.scriptEditorRef.current)==null||p.undo()},size:"medium",children:m.jsx(mI,{})},"undo"):null,!this.state.showCompiledCode&&!this.state.rules?m.jsx(We,{title:x.I18n.t("Redo"),style:Me.toolbarButtons,onClick:()=>{var d,p;if(this.state.blockly){const g=(d=this.blocklyEditorRef.current)==null?void 0:d.blocklyWorkspace;g==null||g.undo(!0)}else(p=this.scriptEditorRef.current)==null||p.redo()},size:"medium",children:m.jsx(fI,{})},"redo"):null,m.jsx("div",{style:{flex:2}}),this.state.blockly&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"OID display mode",title:x.I18n.t("OID display mode"),style:Me.toolbarButtons,onClick:d=>this.setState({menuOidDisplayAnchorEl:d.currentTarget}),size:"medium",children:m.jsx("img",{src:Ug[this.state.oidDisplayMode]||Ug[0],alt:"OID",width:36,height:22})},"oid-display-mode"),m.jsxs(Vc,{anchorEl:this.state.menuOidDisplayAnchorEl,open:!!this.state.menuOidDisplayAnchorEl,onClose:()=>this.setState({menuOidDisplayAnchorEl:null}),children:[Ug.map((d,p)=>m.jsxs(et,{selected:this.state.oidDisplayMode===p,onClick:()=>{var $,y,w;this.setState({oidDisplayMode:p,menuOidDisplayAnchorEl:null});const g=($=window.scripts)==null?void 0:$.blocklyWorkspace;g&&((w=(y=window.Blockly)==null?void 0:y.FieldOID)!=null&&w.setDisplayMode)&&window.Blockly.FieldOID.setDisplayMode(p,g)},children:[m.jsx("img",{src:d,alt:"",width:48,height:28,style:{marginRight:8}}),(()=>{var y,w,v,_,b,T,I,C,D;const g=(v=(w=(y=window.Blockly)==null?void 0:y.FieldOID)==null?void 0:w.DISPLAY_MODE_KEYS)==null?void 0:v[p],$=["Show name","Show name path","Show ID","Show full ID"];return g&&(((T=(b=(_=window.Blockly)==null?void 0:_.Words)==null?void 0:b[g])==null?void 0:T[x.I18n.getLanguage()])||((D=(C=(I=window.Blockly)==null?void 0:I.Words)==null?void 0:C[g])==null?void 0:D.en))||$[p]})()]},`oid-mode-${p}`)),m.jsx(rm,{}),m.jsxs(et,{onClick:()=>{var g,$,y;const d=!this.state.oidShowIcon;this.setState({oidShowIcon:d});const p=(g=window.scripts)==null?void 0:g.blocklyWorkspace;p&&((y=($=window.Blockly)==null?void 0:$.FieldOID)!=null&&y.setShowIcon)&&window.Blockly.FieldOID.setShowIcon(d,p)},children:[m.jsx(ua,{checked:this.state.oidShowIcon,style:{padding:0,marginRight:8}}),(()=>{var p,g,$,y,w,v;const d="oid_show_icon";return(($=(g=(p=window.Blockly)==null?void 0:p.Words)==null?void 0:g[d])==null?void 0:$[x.I18n.getLanguage()])||((v=(w=(y=window.Blockly)==null?void 0:y.Words)==null?void 0:w[d])==null?void 0:v.en)||"Show icon"})()]},"oid-show-icon")]},"menuOidDisplay"),!this.props.debugInstance&&!this.state.showCompiledCode&&m.jsx(We,{style:Me.toolbarButtons,title:x.I18n.t("Prettify the script"),onClick:()=>this.setState({triggerPrettier:this.state.triggerPrettier+1}),size:"medium",children:m.jsx($I,{})},"prettier"),this.state.blockly&&!this.state.showCompiledCode?m.jsx(We,{"aria-label":"Export Blocks",title:x.I18n.t("Export blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToBlockly("export"),size:"medium",children:m.jsx(Kc,{})},"export"):null,this.state.blockly&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"Import Blocks",title:x.I18n.t("Import blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToBlockly("import"),size:"medium",children:m.jsx(lm,{})},"import"),this.state.blockly&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"Check code",title:x.I18n.t("Check blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToBlockly("check"),size:"medium",children:m.jsx(bI,{})},"check"),!this.props.debugMode&&!this.state.blockly&&!this.state.rules&&!this.state.showCompiledCode?m.jsx(We,{"aria-label":"create CRON",title:x.I18n.t("Create or edit CRON or time wizard"),style:Me.toolbarButtons,onClick:()=>this.setState({showCron:!0}),size:"medium",children:m.jsx(yI,{})},"select-cron"):null,this.scripts[this.state.selected]&&this.scripts[this.state.selected].engineType!=="Rules"?m.jsx(m.Fragment,{children:m.jsx(We,{"aria-label":"AI",title:x.I18n.t("AI Chat"),style:{...Me.toolbarButtons,...this.state.aiChatOpen?{color:"#4caf50"}:{}},size:"medium",onClick:()=>{const d=!this.state.aiChatOpen;window.localStorage.setItem("Editor.aiChatOpen",String(d)),this.setState({aiChatOpen:d})},children:m.jsx(vI,{})},"ai")}):null,m.jsx(We,{"aria-label":"Show astronomical events",title:x.I18n.t("Show astronomical events"),style:Me.toolbarButtons,disabled:!s,onClick:()=>{this.setState({showAstro:!0,astroEvents:null}),this.props.socket.sendTo(this.scripts[this.state.selected].engine.replace("system.adapter.",""),"calcAstroAll",{}).then(d=>this.setState({astroEvents:d}))},size:"medium",children:m.jsx(wI,{})},"show-astro"),!this.props.debugMode&&!this.state.blockly&&!this.state.rules&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"select ID",title:x.I18n.t("Insert object ID"),style:Me.toolbarButtons,onClick:()=>this.setState({showSelectId:!0}),size:"medium",children:m.jsx(_I,{})},"select-id"),this.state.blockly&&!this.state.rules&&this.state.showCompiledCode&&m.jsx(je,{color:"grey","aria-label":"convert to javascript",title:x.I18n.t("Convert blockly to javascript for ever."),onClick:()=>this.onConvertBlockly2JS(),children:"Blockly=>JS"},"convert2js"),this.state.rules&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"Export Blocks",title:x.I18n.t("Export blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToRules("export"),size:"medium",children:m.jsx(Kc,{})},"export"),this.state.rules&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"Import Blocks",title:x.I18n.t("Import blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToRules("import"),size:"medium",children:m.jsx(lm,{})},"import"),this.props.expertMode&&!h&&(this.props.debugMode||!this.state.blockly&&!this.state.rules||(this.state.blockly||this.state.rules)&&this.state.showCompiledCode)&&m.jsx(We,{style:Me.toolbarButtons,color:this.props.debugMode?"primary":"default",disabled:!this.props.debugMode&&!s,onClick:()=>{!this.props.debugMode&&i?this.setState({askAboutDebug:!0}):this.props.onDebugModeChange(!this.props.debugMode)},size:"medium",children:m.jsx(Cc,{style:{fontSize:32}})}),(this.state.blockly||this.state.rules)&&m.jsx(je,{"aria-label":"blockly",title:x.I18n.t("Show javascript code"),className:"button-js-code",color:this.state.showCompiledCode?"secondary":"inherit",disabled:this.props.debugMode,style:{...Me.toolbarButtons,...this.props.debugMode?Me.toolbarButtonsDisabled:void 0,padding:"0 5px"},onClick:()=>{this.props.debugMode||(this.setState({showCompiledCode:!this.state.showCompiledCode}),this.state.isTourOpen&&this.state.tourStep===Ps.showJavascript&&this.setState({tourStep:Ps.switchBackToRules}),this.state.isTourOpen&&this.state.tourStep===Ps.switchBackToRules&&this.setState({tourStep:Ps.saveTheScript}))},children:m.jsx("img",{alt:this.state.blockly?"blockly2js":"rules2js",src:this.state.blockly?gO:mO})},"blockly-code"),m.jsx(We,{disabled:this.props.debugMode,"aria-label":"Debug menu",title:x.I18n.t("Debug options"),style:Me.toolbarButtons,onClick:d=>this.setState({showDebugMenu:!0,menuDebugAnchorEl:d.currentTarget}),size:"medium",children:m.jsx(jT,{style:Me.badgeMargin,badgeContent:this.getDebugBadge(),children:m.jsx(kI,{})})},"debug")]},"toolbar1")}return null}cachedScriptInfos=null;lastObjectsHash="";getScriptInfos(){const s=Object.keys(this.props.objects).join(",");return this.cachedScriptInfos&&this.lastObjectsHash===s?this.cachedScriptInfos:(this.lastObjectsHash=s,this.cachedScriptInfos=wO(this.props.objects),this.cachedScriptInfos)}getScriptEditor(){var s,i;if(!this.props.debugMode&&this.state.selected&&this.props.objects[this.state.selected]&&this.state.blockly!==null&&(!this.state.blockly||this.state.showCompiledCode)&&(!this.state.rules||this.state.showCompiledCode)){this.scripts[this.state.selected]||=this.getScriptFromObject(this.state.selected);const r=this.scripts[this.state.selected].engineType==="TypeScript/ts"?"typescript":"javascript",l=m.jsx(Zo,{fallback:m.jsx(Qo,{}),children:m.jsx(FO,{ref:this.scriptEditorRef,name:this.state.selected,adapterName:this.props.adapterName,insert:this.state.insert,onInserted:()=>this.setState({insert:""}),onForceSave:()=>this.onSave(),searchText:this.state.searchText,onRegisterSelect:c=>this.onRegisterSelect(c),readOnly:this.state.showCompiledCode,changed:this.state.changed[this.state.selected],code:this.scripts[this.state.selected].source||"",isDark:this.state.themeType==="dark",socket:this.props.socket,runningInstances:this.state.runningInstances,triggerPrettier:this.state.triggerPrettier,onChange:c=>this.onChange({script:c}),language:r,aiCompletionsEnabled:this.state.aiCompletionsEnabled,onAiAction:c=>this.handleAiAction(c),onInlineAsk:this.state.inlineAskHandler?c=>this.state.inlineAskHandler(c.question,c.selectedCode):void 0},"scriptEditor1")});if(this.state.aiDiffView)return m.jsx(bt,{sx:Me.editorDiv,children:m.jsx(Zo,{fallback:m.jsx(Qo,{}),children:m.jsx(UO,{originalCode:this.state.aiDiffView.original,modifiedCode:this.state.aiDiffView.modified,language:r,themeType:this.state.themeType,onAccept:c=>{this.onChange({script:c}),this.setState({aiDiffView:null})},onReject:()=>this.setState({aiDiffView:null})})})},"scriptEditorDiv");if(this.state.aiChatOpen){const c=window.localStorage.getItem("Editor.aiChatSizes");let h=[70,30];try{c&&(h=JSON.parse(c))}catch{}return m.jsx(bt,{sx:Me.editorDiv,children:m.jsxs(Jc,{direction:mt.Horizontal,initialSizes:h,minWidths:[200,250],gutterClassName:this.state.themeType==="dark"?"Dark visGutter":"Light visGutter",onResizeFinished:(d,p)=>{window.localStorage.setItem("Editor.aiChatSizes",JSON.stringify(p))},children:[l,m.jsx(Zo,{fallback:m.jsx(Qo,{}),children:m.jsx(U_,{socket:this.props.socket,runningInstances:this.state.runningInstances,themeType:this.state.themeType,currentCode:((s=this.scripts[this.state.selected])==null?void 0:s.source)||"",currentLanguage:r,selectedCode:((i=this.getSelect)==null?void 0:i.call(this))||"",allScripts:this.getScriptInfos(),editorApi:this.getEditorApi(),aiActionRequest:this.state.aiActionRequest,onAiActionConsumed:()=>this.setState({aiActionRequest:null}),onRegisterInlineAsk:d=>this.setState({inlineAskHandler:d}),currentScriptId:this.state.selected,onInsertCode:d=>this.setState({insert:d}),onShowDiff:(d,p)=>{var v;const g=this.state.selected,$=((v=this.scripts[g])==null?void 0:v.source)||"",y=this.scriptEditorRef.current,w=(_,b)=>{y==null||y.showInlineDiff({range:_,originalText:b,modifiedText:d,onAccepted:()=>{var I;const T=((I=y==null?void 0:y.getEditorContent)==null?void 0:I.call(y))||$;this.onChange({script:T})}})};if(p&&p.range&&p.scriptId===g){w(p.range,p.originalText);return}try{const _=LO(d,$);if(_){const T=$.split(` `).slice(_.range.startLine-1,_.range.endLine).join(` diff --git a/admin/assets/localSharedImportMap-W-vnZT9_.js b/admin/assets/localSharedImportMap-Cs4ibnCv.js similarity index 91% rename from admin/assets/localSharedImportMap-W-vnZT9_.js rename to admin/assets/localSharedImportMap-Cs4ibnCv.js index 536727d34..2354b709e 100644 --- a/admin/assets/localSharedImportMap-W-vnZT9_.js +++ b/admin/assets/localSharedImportMap-Cs4ibnCv.js @@ -1 +1 @@ -import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js";const a={"@iobroker/adapter-react-v5":async()=>await import("./index-AOxv_cZq.js"),"@mui/material":async()=>await import("./index-dN73sbyQ.js"),"prop-types":async()=>await import("./index-CVZSzCXy.js").then(t=>t.i),react:async()=>await import("./index-Dsh1HfIY.js").then(t=>t.i),"react-dom":async()=>await import("./index-BkyLyaYT.js").then(t=>t.i)},n={"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.2.6",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/material":{name:"@mui/material",version:"6.5.0",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["@mui/material"].loaded=!0;const{"@mui/material":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"prop-types":{name:"prop-types",version:"15.8.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["prop-types"].loaded=!0;const{"prop-types":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n.react.loaded=!0;const{react:e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dom":{name:"react-dom",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["react-dom"].loaded=!0;const{"react-dom":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}}},u=[];export{u as usedRemotes,n as usedShared}; +import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";const a={"@iobroker/adapter-react-v5":async()=>await import("./index-Be9Zg6aF.js"),"@mui/material":async()=>await import("./index-dN73sbyQ.js"),"prop-types":async()=>await import("./index-CVZSzCXy.js").then(t=>t.i),react:async()=>await import("./index-Dsh1HfIY.js").then(t=>t.i),"react-dom":async()=>await import("./index-BkyLyaYT.js").then(t=>t.i)},n={"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.2.7",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/material":{name:"@mui/material",version:"6.5.0",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["@mui/material"].loaded=!0;const{"@mui/material":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"prop-types":{name:"prop-types",version:"15.8.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["prop-types"].loaded=!0;const{"prop-types":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n.react.loaded=!0;const{react:e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dom":{name:"react-dom",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["react-dom"].loaded=!0;const{"react-dom":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}}},u=[];export{u as usedRemotes,n as usedShared}; diff --git a/admin/assets/stateHoverProvider-B_NkXpQo.js b/admin/assets/stateHoverProvider-D8nQSryI.js similarity index 99% rename from admin/assets/stateHoverProvider-B_NkXpQo.js rename to admin/assets/stateHoverProvider-D8nQSryI.js index a4223fec9..4233e2cf4 100644 --- a/admin/assets/stateHoverProvider-B_NkXpQo.js +++ b/admin/assets/stateHoverProvider-D8nQSryI.js @@ -1,4 +1,4 @@ -import{_ as Uu}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{o as me}from"./index-BDO4Fqdo.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js";import"./preload-helper-BDBacUwf.js";import"./createSvgIcon-DYs_tNrE.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import"./index-wHNMOf-c.js";import"./inheritsLoose-CIXm_zPk.js";var $a;function g(){return $a.apply(null,arguments)}function Iu(e){$a=e}function ce(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function st(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function F(e,s){return Object.prototype.hasOwnProperty.call(e,s)}function Dr(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var s;for(s in e)if(F(e,s))return!1;return!0}function ee(e){return e===void 0}function je(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function It(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function Za(e,s){var n=[],a,l=e.length;for(a=0;a>>0,a;for(a=0;a0)for(n=0;n>>0,a;for(a=0;a0)for(n=0;n=0;return(d?n?"+":"":"-")+Math.pow(10,Math.max(0,l)).toString().substr(1)+a}var Or=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ds=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,hr={},yt={};function S(e,s,n,a){var l=a;typeof a=="string"&&(l=function(){return this[a]()}),e&&(yt[e]=l),s&&(yt[s[0]]=function(){return De(l.apply(this,arguments),s[1],s[2])}),n&&(yt[n]=function(){return this.localeData().ordinal(l.apply(this,arguments),e)})}function zu(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Gu(e){var s=e.match(Or),n,a;for(n=0,a=s.length;n=0&&ds.test(e);)e=e.replace(ds,a),ds.lastIndex=0,n-=1;return e}var $u={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function Zu(e){var s=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return s||!n?s:(this._longDateFormat[e]=n.match(Or).map(function(a){return a==="MMMM"||a==="MM"||a==="DD"||a==="dddd"?a.slice(1):a}).join(""),this._longDateFormat[e])}var qu="Invalid date";function Ju(){return this._invalidDate}var Bu="%d",Qu=/\d{1,2}/;function Ku(e){return this._ordinal.replace("%d",e)}var Xu={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function ed(e,s,n,a){var l=this._relativeTime[n];return ve(l)?l(e,s,n,a):l.replace(/%d/i,e)}function td(e,s){var n=this._relativeTime[e>0?"future":"past"];return ve(n)?n(s):n.replace(/%s/i,s)}var ja={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function le(e){return typeof e=="string"?ja[e]||ja[e.toLowerCase()]:void 0}function Tr(e){var s={},n,a;for(a in e)F(e,a)&&(n=le(a),n&&(s[n]=e[a]));return s}var sd={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function rd(e){var s=[],n;for(n in e)F(e,n)&&s.push({unit:n,priority:sd[n]});return s.sort(function(a,l){return a.priority-l.priority}),s}var Qa=/\d/,se=/\d\d/,Ka=/\d{3}/,br=/\d{4}/,Ds=/[+-]?\d{6}/,V=/\d\d?/,Xa=/\d\d\d\d?/,en=/\d\d\d\d\d\d?/,Ys=/\d{1,3}/,xr=/\d{1,4}/,vs=/[+-]?\d{1,6}/,gt=/\d+/,Ss=/[+-]?\d+/,ad=/Z|[+-]\d\d:?\d\d/gi,Os=/Z|[+-]\d\d(?::?\d\d)?/gi,nd=/[+-]?\d+(\.\d{1,3})?/,jt=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,kt=/^[1-9]\d?/,Lr=/^([1-9]\d|\d)/,ys;ys={};function D(e,s,n){ys[e]=ve(s)?s:function(a,l){return a&&n?n:s}}function id(e,s){return F(ys,e)?ys[e](s._strict,s._locale):new RegExp(od(e))}function od(e){return Ie(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(s,n,a,l,d){return n||a||l||d}))}function Ie(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function L(e){var s=+e,n=0;return s!==0&&isFinite(s)&&(n=ie(s)),n}var Mr={};function I(e,s){var n,a=s,l;for(typeof e=="string"&&(e=[e]),je(s)&&(a=function(d,f){f[s]=L(d)}),l=e.length,n=0;n68?1900:2e3)};var tn=pt("FullYear",!0);function hd(){return Ts(this.year())}function pt(e,s){return function(n){return n!=null?(sn(this,e,n),g.updateOffset(this,s),this):Ft(this,e)}}function Ft(e,s){if(!e.isValid())return NaN;var n=e._d,a=e._isUTC;switch(s){case"Milliseconds":return a?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return a?n.getUTCSeconds():n.getSeconds();case"Minutes":return a?n.getUTCMinutes():n.getMinutes();case"Hours":return a?n.getUTCHours():n.getHours();case"Date":return a?n.getUTCDate():n.getDate();case"Day":return a?n.getUTCDay():n.getDay();case"Month":return a?n.getUTCMonth():n.getMonth();case"FullYear":return a?n.getUTCFullYear():n.getFullYear();default:return NaN}}function sn(e,s,n){var a,l,d,f,c;if(!(!e.isValid()||isNaN(n))){switch(a=e._d,l=e._isUTC,s){case"Milliseconds":return void(l?a.setUTCMilliseconds(n):a.setMilliseconds(n));case"Seconds":return void(l?a.setUTCSeconds(n):a.setSeconds(n));case"Minutes":return void(l?a.setUTCMinutes(n):a.setMinutes(n));case"Hours":return void(l?a.setUTCHours(n):a.setHours(n));case"Date":return void(l?a.setUTCDate(n):a.setDate(n));case"FullYear":break;default:return}d=n,f=e.month(),c=e.date(),c=c===29&&f===1&&!Ts(d)?28:c,l?a.setUTCFullYear(d,f,c):a.setFullYear(d,f,c)}}function fd(e){return e=le(e),ve(this[e])?this[e]():this}function cd(e,s){if(typeof e=="object"){e=Tr(e);var n=rd(e),a,l=n.length;for(a=0;a=0?(c=new Date(e+400,s,n,a,l,d,f),isFinite(c.getFullYear())&&c.setFullYear(e)):c=new Date(e,s,n,a,l,d,f),c}function Ht(e){var s,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,s=new Date(Date.UTC.apply(null,n)),isFinite(s.getUTCFullYear())&&s.setUTCFullYear(e)):s=new Date(Date.UTC.apply(null,arguments)),s}function Ms(e,s,n){var a=7+s-n,l=(7+Ht(e,0,a).getUTCDay()-s)%7;return-l+a-1}function un(e,s,n,a,l){var d=(7+n-a)%7,f=Ms(e,a,l),c=1+7*(s-1)+d+f,_,y;return c<=0?(_=e-1,y=Rt(_)+c):c>Rt(e)?(_=e+1,y=c-Rt(e)):(_=e,y=c),{year:_,dayOfYear:y}}function Ct(e,s,n){var a=Ms(e.year(),s,n),l=Math.floor((e.dayOfYear()-a-1)/7)+1,d,f;return l<1?(f=e.year()-1,d=l+Ee(f,s,n)):l>Ee(e.year(),s,n)?(d=l-Ee(e.year(),s,n),f=e.year()+1):(f=e.year(),d=l),{week:d,year:f}}function Ee(e,s,n){var a=Ms(e,s,n),l=Ms(e+1,s,n);return(Rt(e)-a+l)/7}S("w",["ww",2],"wo","week");S("W",["WW",2],"Wo","isoWeek");D("w",V,kt);D("ww",V,se);D("W",V,kt);D("WW",V,se);At(["w","ww","W","WW"],function(e,s,n,a){s[a.substr(0,1)]=L(e)});function Od(e){return Ct(e,this._week.dow,this._week.doy).week}var Td={dow:0,doy:6};function bd(){return this._week.dow}function xd(){return this._week.doy}function Ld(e){var s=this.localeData().week(this);return e==null?s:this.add((e-s)*7,"d")}function Wd(e){var s=Ct(this,1,4).week;return e==null?s:this.add((e-s)*7,"d")}S("d",0,"do","day");S("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});S("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});S("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});S("e",0,0,"weekday");S("E",0,0,"isoWeekday");D("d",V);D("e",V);D("E",V);D("dd",function(e,s){return s.weekdaysMinRegex(e)});D("ddd",function(e,s){return s.weekdaysShortRegex(e)});D("dddd",function(e,s){return s.weekdaysRegex(e)});At(["dd","ddd","dddd"],function(e,s,n,a){var l=n._locale.weekdaysParse(e,a,n._strict);l!=null?s.d=l:b(n).invalidWeekday=e});At(["d","e","E"],function(e,s,n,a){s[a]=L(e)});function Pd(e,s){return typeof e!="string"?e:isNaN(e)?(e=s.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function Nd(e,s){return typeof e=="string"?s.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Pr(e,s){return e.slice(s,7).concat(e.slice(0,s))}var Rd="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),dn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Fd="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Hd=jt,Cd=jt,Ud=jt;function Id(e,s){var n=ce(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(s)?"format":"standalone"];return e===!0?Pr(n,this._week.dow):e?n[e.day()]:n}function Ed(e){return e===!0?Pr(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function jd(e){return e===!0?Pr(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Ad(e,s,n){var a,l,d,f=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)d=Ye([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(d,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(d,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(d,"").toLocaleLowerCase();return n?s==="dddd"?(l=Z.call(this._weekdaysParse,f),l!==-1?l:null):s==="ddd"?(l=Z.call(this._shortWeekdaysParse,f),l!==-1?l:null):(l=Z.call(this._minWeekdaysParse,f),l!==-1?l:null):s==="dddd"?(l=Z.call(this._weekdaysParse,f),l!==-1||(l=Z.call(this._shortWeekdaysParse,f),l!==-1)?l:(l=Z.call(this._minWeekdaysParse,f),l!==-1?l:null)):s==="ddd"?(l=Z.call(this._shortWeekdaysParse,f),l!==-1||(l=Z.call(this._weekdaysParse,f),l!==-1)?l:(l=Z.call(this._minWeekdaysParse,f),l!==-1?l:null)):(l=Z.call(this._minWeekdaysParse,f),l!==-1||(l=Z.call(this._weekdaysParse,f),l!==-1)?l:(l=Z.call(this._shortWeekdaysParse,f),l!==-1?l:null))}function Vd(e,s,n){var a,l,d;if(this._weekdaysParseExact)return Ad.call(this,e,s,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(l=Ye([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(l,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(l,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(l,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[a]||(d="^"+this.weekdays(l,"")+"|^"+this.weekdaysShort(l,"")+"|^"+this.weekdaysMin(l,""),this._weekdaysParse[a]=new RegExp(d.replace(".",""),"i")),n&&s==="dddd"&&this._fullWeekdaysParse[a].test(e))return a;if(n&&s==="ddd"&&this._shortWeekdaysParse[a].test(e))return a;if(n&&s==="dd"&&this._minWeekdaysParse[a].test(e))return a;if(!n&&this._weekdaysParse[a].test(e))return a}}function zd(e){if(!this.isValid())return e!=null?this:NaN;var s=Ft(this,"Day");return e!=null?(e=Pd(e,this.localeData()),this.add(e-s,"d")):s}function Gd(e){if(!this.isValid())return e!=null?this:NaN;var s=(this.day()+7-this.localeData()._week.dow)%7;return e==null?s:this.add(e-s,"d")}function $d(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var s=Nd(e,this.localeData());return this.day(this.day()%7?s:s-7)}else return this.day()||7}function Zd(e){return this._weekdaysParseExact?(F(this,"_weekdaysRegex")||Nr.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(F(this,"_weekdaysRegex")||(this._weekdaysRegex=Hd),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function qd(e){return this._weekdaysParseExact?(F(this,"_weekdaysRegex")||Nr.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(F(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Cd),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Jd(e){return this._weekdaysParseExact?(F(this,"_weekdaysRegex")||Nr.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(F(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ud),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Nr(){function e(Y,C){return C.length-Y.length}var s=[],n=[],a=[],l=[],d,f,c,_,y;for(d=0;d<7;d++)f=Ye([2e3,1]).day(d),c=Ie(this.weekdaysMin(f,"")),_=Ie(this.weekdaysShort(f,"")),y=Ie(this.weekdays(f,"")),s.push(c),n.push(_),a.push(y),l.push(c),l.push(_),l.push(y);s.sort(e),n.sort(e),a.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Rr(){return this.hours()%12||12}function Bd(){return this.hours()||24}S("H",["HH",2],0,"hour");S("h",["hh",2],0,Rr);S("k",["kk",2],0,Bd);S("hmm",0,0,function(){return""+Rr.apply(this)+De(this.minutes(),2)});S("hmmss",0,0,function(){return""+Rr.apply(this)+De(this.minutes(),2)+De(this.seconds(),2)});S("Hmm",0,0,function(){return""+this.hours()+De(this.minutes(),2)});S("Hmmss",0,0,function(){return""+this.hours()+De(this.minutes(),2)+De(this.seconds(),2)});function hn(e,s){S(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),s)})}hn("a",!0);hn("A",!1);function fn(e,s){return s._meridiemParse}D("a",fn);D("A",fn);D("H",V,Lr);D("h",V,kt);D("k",V,kt);D("HH",V,se);D("hh",V,se);D("kk",V,se);D("hmm",Xa);D("hmmss",en);D("Hmm",Xa);D("Hmmss",en);I(["H","HH"],J);I(["k","kk"],function(e,s,n){var a=L(e);s[J]=a===24?0:a});I(["a","A"],function(e,s,n){n._isPm=n._locale.isPM(e),n._meridiem=e});I(["h","hh"],function(e,s,n){s[J]=L(e),b(n).bigHour=!0});I("hmm",function(e,s,n){var a=e.length-2;s[J]=L(e.substr(0,a)),s[fe]=L(e.substr(a)),b(n).bigHour=!0});I("hmmss",function(e,s,n){var a=e.length-4,l=e.length-2;s[J]=L(e.substr(0,a)),s[fe]=L(e.substr(a,2)),s[Ue]=L(e.substr(l)),b(n).bigHour=!0});I("Hmm",function(e,s,n){var a=e.length-2;s[J]=L(e.substr(0,a)),s[fe]=L(e.substr(a))});I("Hmmss",function(e,s,n){var a=e.length-4,l=e.length-2;s[J]=L(e.substr(0,a)),s[fe]=L(e.substr(a,2)),s[Ue]=L(e.substr(l))});function Qd(e){return(e+"").toLowerCase().charAt(0)==="p"}var Kd=/[ap]\.?m?\.?/i,Xd=pt("Hours",!0);function eh(e,s,n){return e>11?n?"pm":"PM":n?"am":"AM"}var cn={calendar:Au,longDateFormat:$u,invalidDate:qu,ordinal:Bu,dayOfMonthOrdinalParse:Qu,relativeTime:Xu,months:md,monthsShort:rn,week:Td,weekdays:Rd,weekdaysMin:Fd,weekdaysShort:dn,meridiemParse:Kd},G={},Pt={},Ut;function th(e,s){var n,a=Math.min(e.length,s.length);for(n=0;n0;){if(l=bs(d.slice(0,n).join("-")),l)return l;if(a&&a.length>=n&&th(d,a)>=n-1)break;n--}s++}return Ut}function rh(e){return!!(e&&e.match("^[^/\\\\]*$"))}function bs(e){var s=null,n;if(G[e]===void 0&&typeof module<"u"&&module&&module.exports&&rh(e))try{s=Ut._abbr,n=require,n("./locale/"+e),Be(s)}catch{G[e]=null}return G[e]}function Be(e,s){var n;return e&&(ee(s)?n=Ae(e):n=Fr(e,s),n?Ut=n:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Ut._abbr}function Fr(e,s){if(s!==null){var n,a=cn;if(s.abbr=e,G[e]!=null)Ja("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),a=G[e]._config;else if(s.parentLocale!=null)if(G[s.parentLocale]!=null)a=G[s.parentLocale]._config;else if(n=bs(s.parentLocale),n!=null)a=n._config;else return Pt[s.parentLocale]||(Pt[s.parentLocale]=[]),Pt[s.parentLocale].push({name:e,config:s}),null;return G[e]=new Sr(mr(a,s)),Pt[e]&&Pt[e].forEach(function(l){Fr(l.name,l.config)}),Be(e),G[e]}else return delete G[e],null}function ah(e,s){if(s!=null){var n,a,l=cn;G[e]!=null&&G[e].parentLocale!=null?G[e].set(mr(G[e]._config,s)):(a=bs(e),a!=null&&(l=a._config),s=mr(l,s),a==null&&(s.abbr=e),n=new Sr(s),n.parentLocale=G[e],G[e]=n),Be(e)}else G[e]!=null&&(G[e].parentLocale!=null?(G[e]=G[e].parentLocale,e===Be()&&Be(e)):G[e]!=null&&delete G[e]);return G[e]}function Ae(e){var s;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Ut;if(!ce(e)){if(s=bs(e),s)return s;e=[e]}return sh(e)}function nh(){return yr(G)}function Hr(e){var s,n=e._a;return n&&b(e).overflow===-2&&(s=n[Ce]<0||n[Ce]>11?Ce:n[pe]<1||n[pe]>Wr(n[K],n[Ce])?pe:n[J]<0||n[J]>24||n[J]===24&&(n[fe]!==0||n[Ue]!==0||n[tt]!==0)?J:n[fe]<0||n[fe]>59?fe:n[Ue]<0||n[Ue]>59?Ue:n[tt]<0||n[tt]>999?tt:-1,b(e)._overflowDayOfYear&&(spe)&&(s=pe),b(e)._overflowWeeks&&s===-1&&(s=ud),b(e)._overflowWeekday&&s===-1&&(s=dd),b(e).overflow=s),e}var ih=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,oh=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,lh=/Z|[+-]\d\d(?::?\d\d)?/,hs=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],fr=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],uh=/^\/?Date\((-?\d+)/i,dh=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,hh={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function _n(e){var s,n,a=e._i,l=ih.exec(a)||oh.exec(a),d,f,c,_,y=hs.length,Y=fr.length;if(l){for(b(e).iso=!0,s=0,n=y;sRt(f)||e._dayOfYear===0)&&(b(e)._overflowDayOfYear=!0),n=Ht(f,0,e._dayOfYear),e._a[Ce]=n.getUTCMonth(),e._a[pe]=n.getUTCDate()),s=0;s<3&&e._a[s]==null;++s)e._a[s]=a[s]=l[s];for(;s<7;s++)e._a[s]=a[s]=e._a[s]==null?s===2?1:0:e._a[s];e._a[J]===24&&e._a[fe]===0&&e._a[Ue]===0&&e._a[tt]===0&&(e._nextDay=!0,e._a[J]=0),e._d=(e._useUTC?Ht:Sd).apply(null,a),d=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[J]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==d&&(b(e).weekdayMismatch=!0)}}function gh(e){var s,n,a,l,d,f,c,_,y;s=e._w,s.GG!=null||s.W!=null||s.E!=null?(d=1,f=4,n=_t(s.GG,e._a[K],Ct(A(),1,4).year),a=_t(s.W,1),l=_t(s.E,1),(l<1||l>7)&&(_=!0)):(d=e._locale._week.dow,f=e._locale._week.doy,y=Ct(A(),d,f),n=_t(s.gg,e._a[K],y.year),a=_t(s.w,y.week),s.d!=null?(l=s.d,(l<0||l>6)&&(_=!0)):s.e!=null?(l=s.e+d,(s.e<0||s.e>6)&&(_=!0)):l=d),a<1||a>Ee(n,d,f)?b(e)._overflowWeeks=!0:_!=null?b(e)._overflowWeekday=!0:(c=un(n,a,l,d,f),e._a[K]=c.year,e._dayOfYear=c.dayOfYear)}g.ISO_8601=function(){};g.RFC_2822=function(){};function Ur(e){if(e._f===g.ISO_8601){_n(e);return}if(e._f===g.RFC_2822){mn(e);return}e._a=[],b(e).empty=!0;var s=""+e._i,n,a,l,d,f,c=s.length,_=0,y,Y;for(l=Ba(e._f,e._locale).match(Or)||[],Y=l.length,n=0;n0&&b(e).unusedInput.push(f),s=s.slice(s.indexOf(a)+a.length),_+=a.length),yt[d]?(a?b(e).empty=!1:b(e).unusedTokens.push(d),ld(d,a,e)):e._strict&&!a&&b(e).unusedTokens.push(d);b(e).charsLeftOver=c-_,s.length>0&&b(e).unusedInput.push(s),e._a[J]<=12&&b(e).bigHour===!0&&e._a[J]>0&&(b(e).bigHour=void 0),b(e).parsedDateParts=e._a.slice(0),b(e).meridiem=e._meridiem,e._a[J]=kh(e._locale,e._a[J],e._meridiem),y=b(e).era,y!==null&&(e._a[K]=e._locale.erasConvertYear(y,e._a[K])),Cr(e),Hr(e)}function kh(e,s,n){var a;return n==null?s:e.meridiemHour!=null?e.meridiemHour(s,n):(e.isPM!=null&&(a=e.isPM(n),a&&s<12&&(s+=12),!a&&s===12&&(s=0)),s)}function ph(e){var s,n,a,l,d,f,c=!1,_=e._f.length;if(_===0){b(e).invalidFormat=!0,e._d=new Date(NaN);return}for(l=0;l<_;l++)d=0,f=!1,s=vr({},e),e._useUTC!=null&&(s._useUTC=e._useUTC),s._f=e._f[l],Ur(s),Yr(s)&&(f=!0),d+=b(s).charsLeftOver,d+=b(s).unusedTokens.length*10,b(s).score=d,c?dthis?this:e:ps()});function wn(e,s){var n,a;if(s.length===1&&ce(s[0])&&(s=s[0]),!s.length)return A();for(n=s[0],a=1;athis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ah(){if(!ee(this._isDSTShifted))return this._isDSTShifted;var e={},s;return vr(e,this),e=yn(e),e._a?(s=e._isUTC?Ye(e._a):A(e._a),this._isDSTShifted=this.isValid()&&Nh(e._a,s.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Vh(){return this.isValid()?!this._isUTC:!1}function zh(){return this.isValid()?this._isUTC:!1}function kn(){return this.isValid()?this._isUTC&&this._offset===0:!1}var Gh=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,$h=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function ye(e,s){var n=e,a=null,l,d,f;return cs(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:je(e)||!isNaN(+e)?(n={},s?n[s]=+e:n.milliseconds=+e):(a=Gh.exec(e))?(l=a[1]==="-"?-1:1,n={y:0,d:L(a[pe])*l,h:L(a[J])*l,m:L(a[fe])*l,s:L(a[Ue])*l,ms:L(wr(a[tt]*1e3))*l}):(a=$h.exec(e))?(l=a[1]==="-"?-1:1,n={y:et(a[2],l),M:et(a[3],l),w:et(a[4],l),d:et(a[5],l),h:et(a[6],l),m:et(a[7],l),s:et(a[8],l)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(f=Zh(A(n.from),A(n.to)),n={},n.ms=f.milliseconds,n.M=f.months),d=new xs(n),cs(e)&&F(e,"_locale")&&(d._locale=e._locale),cs(e)&&F(e,"_isValid")&&(d._isValid=e._isValid),d}ye.fn=xs.prototype;ye.invalid=Ph;function et(e,s){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*s}function Va(e,s){var n={};return n.months=s.month()-e.month()+(s.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(s)&&--n.months,n.milliseconds=+s-+e.clone().add(n.months,"M"),n}function Zh(e,s){var n;return e.isValid()&&s.isValid()?(s=Er(s,e),e.isBefore(s)?n=Va(e,s):(n=Va(s,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function pn(e,s){return function(n,a){var l,d;return a!==null&&!isNaN(+a)&&(Ja(s,"moment()."+s+"(period, number) is deprecated. Please use moment()."+s+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),d=n,n=a,a=d),l=ye(n,a),Dn(this,l,e),this}}function Dn(e,s,n,a){var l=s._milliseconds,d=wr(s._days),f=wr(s._months);e.isValid()&&(a=a??!0,f&&nn(e,Ft(e,"Month")+f*n),d&&sn(e,"Date",Ft(e,"Date")+d*n),l&&e._d.setTime(e._d.valueOf()+l*n),a&&g.updateOffset(e,d||f))}var qh=pn(1,"add"),Jh=pn(-1,"subtract");function Yn(e){return typeof e=="string"||e instanceof String}function Bh(e){return _e(e)||It(e)||Yn(e)||je(e)||Kh(e)||Qh(e)||e===null||e===void 0}function Qh(e){var s=st(e)&&!Dr(e),n=!1,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],l,d,f=a.length;for(l=0;ln.valueOf():n.valueOf()9999?fs(n,s?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):ve(Date.prototype.toISOString)?s?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",fs(n,"Z")):fs(n,s?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function cf(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",s="",n,a,l,d;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",s="Z"),n="["+e+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",l="-MM-DD[T]HH:mm:ss.SSS",d=s+'[")]',this.format(n+a+l+d)}function _f(e){e||(e=this.isUtc()?g.defaultFormatUtc:g.defaultFormat);var s=fs(this,e);return this.localeData().postformat(s)}function mf(e,s){return this.isValid()&&(_e(e)&&e.isValid()||A(e).isValid())?ye({to:this,from:e}).locale(this.locale()).humanize(!s):this.localeData().invalidDate()}function yf(e){return this.from(A(),e)}function Mf(e,s){return this.isValid()&&(_e(e)&&e.isValid()||A(e).isValid())?ye({from:this,to:e}).locale(this.locale()).humanize(!s):this.localeData().invalidDate()}function wf(e){return this.to(A(),e)}function vn(e){var s;return e===void 0?this._locale._abbr:(s=Ae(e),s!=null&&(this._locale=s),this)}var Sn=oe("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function On(){return this._locale}var ws=1e3,Mt=60*ws,gs=60*Mt,Tn=(365*400+97)*24*gs;function wt(e,s){return(e%s+s)%s}function bn(e,s,n){return e<100&&e>=0?new Date(e+400,s,n)-Tn:new Date(e,s,n).valueOf()}function xn(e,s,n){return e<100&&e>=0?Date.UTC(e+400,s,n)-Tn:Date.UTC(e,s,n)}function gf(e){var s,n;if(e=le(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?xn:bn,e){case"year":s=n(this.year(),0,1);break;case"quarter":s=n(this.year(),this.month()-this.month()%3,1);break;case"month":s=n(this.year(),this.month(),1);break;case"week":s=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":s=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":s=n(this.year(),this.month(),this.date());break;case"hour":s=this._d.valueOf(),s-=wt(s+(this._isUTC?0:this.utcOffset()*Mt),gs);break;case"minute":s=this._d.valueOf(),s-=wt(s,Mt);break;case"second":s=this._d.valueOf(),s-=wt(s,ws);break}return this._d.setTime(s),g.updateOffset(this,!0),this}function kf(e){var s,n;if(e=le(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?xn:bn,e){case"year":s=n(this.year()+1,0,1)-1;break;case"quarter":s=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":s=n(this.year(),this.month()+1,1)-1;break;case"week":s=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":s=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":s=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":s=this._d.valueOf(),s+=gs-wt(s+(this._isUTC?0:this.utcOffset()*Mt),gs)-1;break;case"minute":s=this._d.valueOf(),s+=Mt-wt(s,Mt)-1;break;case"second":s=this._d.valueOf(),s+=ws-wt(s,ws)-1;break}return this._d.setTime(s),g.updateOffset(this,!0),this}function pf(){return this._d.valueOf()-(this._offset||0)*6e4}function Df(){return Math.floor(this.valueOf()/1e3)}function Yf(){return new Date(this.valueOf())}function vf(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Sf(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Of(){return this.isValid()?this.toISOString():null}function Tf(){return Yr(this)}function bf(){return qe({},b(this))}function xf(){return b(this).overflow}function Lf(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}S("N",0,0,"eraAbbr");S("NN",0,0,"eraAbbr");S("NNN",0,0,"eraAbbr");S("NNNN",0,0,"eraName");S("NNNNN",0,0,"eraNarrow");S("y",["y",1],"yo","eraYear");S("y",["yy",2],0,"eraYear");S("y",["yyy",3],0,"eraYear");S("y",["yyyy",4],0,"eraYear");D("N",jr);D("NN",jr);D("NNN",jr);D("NNNN",jf);D("NNNNN",Af);I(["N","NN","NNN","NNNN","NNNNN"],function(e,s,n,a){var l=n._locale.erasParse(e,a,n._strict);l?b(n).era=l:b(n).invalidEra=e});D("y",gt);D("yy",gt);D("yyy",gt);D("yyyy",gt);D("yo",Vf);I(["y","yy","yyy","yyyy"],K);I(["yo"],function(e,s,n,a){var l;n._locale._eraYearOrdinalRegex&&(l=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?s[K]=n._locale.eraYearOrdinalParse(e,l):s[K]=parseInt(e,10)});function Wf(e,s){var n,a,l,d=this._eras||Ae("en")._eras;for(n=0,a=d.length;n=0)return d[a]}function Nf(e,s){var n=e.since<=e.until?1:-1;return s===void 0?g(e.since).year():g(e.since).year()+(s-e.offset)*n}function Rf(){var e,s,n,a=this.localeData().eras();for(e=0,s=a.length;ed&&(s=d),Bf.call(this,e,s,n,a,l))}function Bf(e,s,n,a,l){var d=un(e,s,n,a,l),f=Ht(d.year,0,d.dayOfYear);return this.year(f.getUTCFullYear()),this.month(f.getUTCMonth()),this.date(f.getUTCDate()),this}S("Q",0,"Qo","quarter");D("Q",Qa);I("Q",function(e,s){s[Ce]=(L(e)-1)*3});function Qf(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}S("D",["DD",2],"Do","date");D("D",V,kt);D("DD",V,se);D("Do",function(e,s){return e?s._dayOfMonthOrdinalParse||s._ordinalParse:s._dayOfMonthOrdinalParseLenient});I(["D","DD"],pe);I("Do",function(e,s){s[pe]=L(e.match(V)[0])});var Wn=pt("Date",!0);S("DDD",["DDDD",3],"DDDo","dayOfYear");D("DDD",Ys);D("DDDD",Ka);I(["DDD","DDDD"],function(e,s,n){n._dayOfYear=L(e)});function Kf(e){var s=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?s:this.add(e-s,"d")}S("m",["mm",2],0,"minute");D("m",V,Lr);D("mm",V,se);I(["m","mm"],fe);var Xf=pt("Minutes",!1);S("s",["ss",2],0,"second");D("s",V,Lr);D("ss",V,se);I(["s","ss"],Ue);var ec=pt("Seconds",!1);S("S",0,0,function(){return~~(this.millisecond()/100)});S(0,["SS",2],0,function(){return~~(this.millisecond()/10)});S(0,["SSS",3],0,"millisecond");S(0,["SSSS",4],0,function(){return this.millisecond()*10});S(0,["SSSSS",5],0,function(){return this.millisecond()*100});S(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});S(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});S(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});S(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});D("S",Ys,Qa);D("SS",Ys,se);D("SSS",Ys,Ka);var Je,Pn;for(Je="SSSS";Je.length<=9;Je+="S")D(Je,gt);function tc(e,s){s[tt]=L(("0."+e)*1e3)}for(Je="S";Je.length<=9;Je+="S")I(Je,tc);Pn=pt("Milliseconds",!1);S("z",0,0,"zoneAbbr");S("zz",0,0,"zoneName");function sc(){return this._isUTC?"UTC":""}function rc(){return this._isUTC?"Coordinated Universal Time":""}var w=Et.prototype;w.add=qh;w.calendar=tf;w.clone=sf;w.diff=df;w.endOf=kf;w.format=_f;w.from=mf;w.fromNow=yf;w.to=Mf;w.toNow=wf;w.get=fd;w.invalidAt=xf;w.isAfter=rf;w.isBefore=af;w.isBetween=nf;w.isSame=of;w.isSameOrAfter=lf;w.isSameOrBefore=uf;w.isValid=Tf;w.lang=Sn;w.locale=vn;w.localeData=On;w.max=Oh;w.min=Sh;w.parsingFlags=bf;w.set=cd;w.startOf=gf;w.subtract=Jh;w.toArray=vf;w.toObject=Sf;w.toDate=Yf;w.toISOString=ff;w.inspect=cf;typeof Symbol<"u"&&Symbol.for!=null&&(w[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});w.toJSON=Of;w.toString=hf;w.unix=Df;w.valueOf=pf;w.creationData=Lf;w.eraName=Rf;w.eraNarrow=Ff;w.eraAbbr=Hf;w.eraYear=Cf;w.year=tn;w.isLeapYear=hd;w.weekYear=zf;w.isoWeekYear=Gf;w.quarter=w.quarters=Qf;w.month=on;w.daysInMonth=Dd;w.week=w.weeks=Ld;w.isoWeek=w.isoWeeks=Wd;w.weeksInYear=qf;w.weeksInWeekYear=Jf;w.isoWeeksInYear=$f;w.isoWeeksInISOWeekYear=Zf;w.date=Wn;w.day=w.days=zd;w.weekday=Gd;w.isoWeekday=$d;w.dayOfYear=Kf;w.hour=w.hours=Xd;w.minute=w.minutes=Xf;w.second=w.seconds=ec;w.millisecond=w.milliseconds=Pn;w.utcOffset=Fh;w.utc=Ch;w.local=Uh;w.parseZone=Ih;w.hasAlignedHourOffset=Eh;w.isDST=jh;w.isLocal=Vh;w.isUtcOffset=zh;w.isUtc=kn;w.isUTC=kn;w.zoneAbbr=sc;w.zoneName=rc;w.dates=oe("dates accessor is deprecated. Use date instead.",Wn);w.months=oe("months accessor is deprecated. Use month instead",on);w.years=oe("years accessor is deprecated. Use year instead",tn);w.zone=oe("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Hh);w.isDSTShifted=oe("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ah);function ac(e){return A(e*1e3)}function nc(){return A.apply(null,arguments).parseZone()}function Nn(e){return e}var H=Sr.prototype;H.calendar=Vu;H.longDateFormat=Zu;H.invalidDate=Ju;H.ordinal=Ku;H.preparse=Nn;H.postformat=Nn;H.relativeTime=ed;H.pastFuture=td;H.set=ju;H.eras=Wf;H.erasParse=Pf;H.erasConvertYear=Nf;H.erasAbbrRegex=If;H.erasNameRegex=Uf;H.erasNarrowRegex=Ef;H.months=wd;H.monthsShort=gd;H.monthsParse=pd;H.monthsRegex=vd;H.monthsShortRegex=Yd;H.week=Od;H.firstDayOfYear=xd;H.firstDayOfWeek=bd;H.weekdays=Id;H.weekdaysMin=jd;H.weekdaysShort=Ed;H.weekdaysParse=Vd;H.weekdaysRegex=Zd;H.weekdaysShortRegex=qd;H.weekdaysMinRegex=Jd;H.isPM=Qd;H.meridiem=eh;function ks(e,s,n,a){var l=Ae(),d=Ye().set(a,s);return l[n](d,e)}function Rn(e,s,n){if(je(e)&&(s=e,e=void 0),e=e||"",s!=null)return ks(e,s,n,"month");var a,l=[];for(a=0;a<12;a++)l[a]=ks(e,a,n,"month");return l}function Vr(e,s,n,a){typeof e=="boolean"?(je(s)&&(n=s,s=void 0),s=s||""):(s=e,n=s,e=!1,je(s)&&(n=s,s=void 0),s=s||"");var l=Ae(),d=e?l._week.dow:0,f,c=[];if(n!=null)return ks(s,(n+d)%7,a,"day");for(f=0;f<7;f++)c[f]=ks(s,(f+d)%7,a,"day");return c}function ic(e,s){return Rn(e,s,"months")}function oc(e,s){return Rn(e,s,"monthsShort")}function lc(e,s,n){return Vr(e,s,n,"weekdays")}function uc(e,s,n){return Vr(e,s,n,"weekdaysShort")}function dc(e,s,n){return Vr(e,s,n,"weekdaysMin")}Be("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var s=e%10,n=L(e%100/10)===1?"th":s===1?"st":s===2?"nd":s===3?"rd":"th";return e+n}});g.lang=oe("moment.lang is deprecated. Use moment.locale instead.",Be);g.langData=oe("moment.langData is deprecated. Use moment.localeData instead.",Ae);var Fe=Math.abs;function hc(){var e=this._data;return this._milliseconds=Fe(this._milliseconds),this._days=Fe(this._days),this._months=Fe(this._months),e.milliseconds=Fe(e.milliseconds),e.seconds=Fe(e.seconds),e.minutes=Fe(e.minutes),e.hours=Fe(e.hours),e.months=Fe(e.months),e.years=Fe(e.years),this}function Fn(e,s,n,a){var l=ye(s,n);return e._milliseconds+=a*l._milliseconds,e._days+=a*l._days,e._months+=a*l._months,e._bubble()}function fc(e,s){return Fn(this,e,s,1)}function cc(e,s){return Fn(this,e,s,-1)}function za(e){return e<0?Math.floor(e):Math.ceil(e)}function _c(){var e=this._milliseconds,s=this._days,n=this._months,a=this._data,l,d,f,c,_;return e>=0&&s>=0&&n>=0||e<=0&&s<=0&&n<=0||(e+=za(kr(n)+s)*864e5,s=0,n=0),a.milliseconds=e%1e3,l=ie(e/1e3),a.seconds=l%60,d=ie(l/60),a.minutes=d%60,f=ie(d/60),a.hours=f%24,s+=ie(f/24),_=ie(Hn(s)),n+=_,s-=za(kr(_)),c=ie(n/12),n%=12,a.days=s,a.months=n,a.years=c,this}function Hn(e){return e*4800/146097}function kr(e){return e*146097/4800}function mc(e){if(!this.isValid())return NaN;var s,n,a=this._milliseconds;if(e=le(e),e==="month"||e==="quarter"||e==="year")switch(s=this._days+a/864e5,n=this._months+Hn(s),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(s=this._days+Math.round(kr(this._months)),e){case"week":return s/7+a/6048e5;case"day":return s+a/864e5;case"hour":return s*24+a/36e5;case"minute":return s*1440+a/6e4;case"second":return s*86400+a/1e3;case"millisecond":return Math.floor(s*864e5)+a;default:throw new Error("Unknown unit "+e)}}function Ve(e){return function(){return this.as(e)}}var Cn=Ve("ms"),yc=Ve("s"),Mc=Ve("m"),wc=Ve("h"),gc=Ve("d"),kc=Ve("w"),pc=Ve("M"),Dc=Ve("Q"),Yc=Ve("y"),vc=Cn;function Sc(){return ye(this)}function Oc(e){return e=le(e),this.isValid()?this[e+"s"]():NaN}function rt(e){return function(){return this.isValid()?this._data[e]:NaN}}var Tc=rt("milliseconds"),bc=rt("seconds"),xc=rt("minutes"),Lc=rt("hours"),Wc=rt("days"),Pc=rt("months"),Nc=rt("years");function Rc(){return ie(this.days()/7)}var He=Math.round,mt={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Fc(e,s,n,a,l){return l.relativeTime(s||1,!!n,e,a)}function Hc(e,s,n,a){var l=ye(e).abs(),d=He(l.as("s")),f=He(l.as("m")),c=He(l.as("h")),_=He(l.as("d")),y=He(l.as("M")),Y=He(l.as("w")),C=He(l.as("y")),B=d<=n.ss&&["s",d]||d0,B[4]=a,Fc.apply(null,B)}function Cc(e){return e===void 0?He:typeof e=="function"?(He=e,!0):!1}function Uc(e,s){return mt[e]===void 0?!1:s===void 0?mt[e]:(mt[e]=s,e==="s"&&(mt.ss=s-1),!0)}function Ic(e,s){if(!this.isValid())return this.localeData().invalidDate();var n=!1,a=mt,l,d;return typeof e=="object"&&(s=e,e=!1),typeof e=="boolean"&&(n=e),typeof s=="object"&&(a=Object.assign({},mt,s),s.s!=null&&s.ss==null&&(a.ss=s.s-1)),l=this.localeData(),d=Hc(this,!n,a,l),n&&(d=l.pastFuture(+this,d)),l.postformat(d)}var cr=Math.abs;function ct(e){return(e>0)-(e<0)||+e}function Ws(){if(!this.isValid())return this.localeData().invalidDate();var e=cr(this._milliseconds)/1e3,s=cr(this._days),n=cr(this._months),a,l,d,f,c=this.asSeconds(),_,y,Y,C;return c?(a=ie(e/60),l=ie(a/60),e%=60,a%=60,d=ie(n/12),n%=12,f=e?e.toFixed(3).replace(/\.?0+$/,""):"",_=c<0?"-":"",y=ct(this._months)!==ct(c)?"-":"",Y=ct(this._days)!==ct(c)?"-":"",C=ct(this._milliseconds)!==ct(c)?"-":"",_+"P"+(d?y+d+"Y":"")+(n?y+n+"M":"")+(s?Y+s+"D":"")+(l||a||e?"T":"")+(l?C+l+"H":"")+(a?C+a+"M":"")+(e?C+f+"S":"")):"P0D"}var N=xs.prototype;N.isValid=Wh;N.abs=hc;N.add=fc;N.subtract=cc;N.as=mc;N.asMilliseconds=Cn;N.asSeconds=yc;N.asMinutes=Mc;N.asHours=wc;N.asDays=gc;N.asWeeks=kc;N.asMonths=pc;N.asQuarters=Dc;N.asYears=Yc;N.valueOf=vc;N._bubble=_c;N.clone=Sc;N.get=Oc;N.milliseconds=Tc;N.seconds=bc;N.minutes=xc;N.hours=Lc;N.days=Wc;N.weeks=Rc;N.months=Pc;N.years=Nc;N.humanize=Ic;N.toISOString=Ws;N.toString=Ws;N.toJSON=Ws;N.locale=vn;N.localeData=On;N.toIsoString=oe("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ws);N.lang=Sn;S("X",0,0,"unix");S("x",0,0,"valueOf");D("x",Ss);D("X",nd);I("X",function(e,s,n){n._d=new Date(parseFloat(e)*1e3)});I("x",function(e,s,n){n._d=new Date(L(e))});g.version="2.30.1";Iu(A);g.fn=w;g.min=Th;g.max=bh;g.now=xh;g.utc=Ye;g.unix=ac;g.months=ic;g.isDate=It;g.locale=Be;g.invalid=ps;g.duration=ye;g.isMoment=_e;g.weekdays=lc;g.parseZone=nc;g.localeData=Ae;g.isDuration=cs;g.monthsShort=oc;g.weekdaysMin=dc;g.defineLocale=Fr;g.updateLocale=ah;g.locales=nh;g.weekdaysShort=uc;g.normalizeUnits=le;g.relativeTimeRounding=Cc;g.relativeTimeThreshold=Uc;g.calendarFormat=ef;g.prototype=w;g.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};var Ec={exports:{}},ms={exports:{}},jc=ms.exports,Ga;function Se(){return Ga||(Ga=1,(function(e,s){(function(n,a){e.exports=a()})(jc,(function(){var n;function a(){return n.apply(null,arguments)}function l(t){n=t}function d(t){return t instanceof Array||Object.prototype.toString.call(t)==="[object Array]"}function f(t){return t!=null&&Object.prototype.toString.call(t)==="[object Object]"}function c(t,r){return Object.prototype.hasOwnProperty.call(t,r)}function _(t){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(t).length===0;var r;for(r in t)if(c(t,r))return!1;return!0}function y(t){return t===void 0}function Y(t){return typeof t=="number"||Object.prototype.toString.call(t)==="[object Number]"}function C(t){return t instanceof Date||Object.prototype.toString.call(t)==="[object Date]"}function B(t,r){var i=[],o,u=t.length;for(o=0;o>>0,o;for(o=0;o0)for(i=0;ii.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./localSharedImportMap-Cs4ibnCv.js","./preload-helper-BDBacUwf.js"])))=>i.map(i=>d[i]); import{_ as sr}from"./preload-helper-BDBacUwf.js";var ir={},ar={},Tt={},M={},D={},P={};const ln="federation-manifest.json",cn=".json",un="FEDERATION_DEBUG",j={AT:"@",HYPHEN:"-",SLASH:"/"},De={[j.AT]:"scope_",[j.HYPHEN]:"_",[j.SLASH]:"__"},fn={[De[j.AT]]:j.AT,[De[j.HYPHEN]]:j.HYPHEN,[De[j.SLASH]]:j.SLASH},dn=":",hn="mf-manifest.json",mn="mf-stats.json",_n={NPM:"npm",APP:"app"},gn="__MF_DEVTOOLS_MODULE_INFO__",pn="ENCODE_NAME_PREFIX",yn=".federation",En={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};let Sn=(function(e){return e[e.UNKNOWN=1]="UNKNOWN",e[e.CALCULATED=2]="CALCULATED",e[e.NO_USE=0]="NO_USE",e})({});P.BROWSER_LOG_KEY=un;P.ENCODE_NAME_PREFIX=pn;P.EncodedNameTransformMap=fn;P.FederationModuleManifest=ln;P.MANIFEST_EXT=cn;P.MFModuleType=_n;P.MFPrefetchCommon=En;P.MODULE_DEVTOOL_IDENTIFIER=gn;P.ManifestFileName=hn;P.NameTransformMap=De;P.NameTransformSymbol=j;P.SEPARATOR=dn;P.StatsFileName=mn;P.TEMP_DIR=yn;P.TreeShakingStatus=Sn;var lr={},re={},kt=Object.defineProperty,bn=(e,t)=>{let r={};for(var n in e)kt(r,n,{get:e[n],enumerable:!0});return t||kt(r,Symbol.toStringTag,{value:"Module"}),r};re.__exportAll=bn;(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ContainerPlugin_exports",{enumerable:!0,get:function(){return r}})})(lr);var cr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ContainerReferencePlugin_exports",{enumerable:!0,get:function(){return r}})})(cr);var ur={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ModuleFederationPlugin_exports",{enumerable:!0,get:function(){return r}})})(ur);var fr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"SharePlugin_exports",{enumerable:!0,get:function(){return r}})})(fr);var dr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ConsumeSharedPlugin_exports",{enumerable:!0,get:function(){return r}})})(dr);var hr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ProvideSharedPlugin_exports",{enumerable:!0,get:function(){return r}})})(hr);var J={},be={};const Rn=P,mr=!0;function _r(){return mr}function Tn(){return typeof navigator<"u"&&(navigator==null?void 0:navigator.product)==="ReactNative"}function In(){try{if(_r()&&window.localStorage)return!!localStorage.getItem(Rn.BROWSER_LOG_KEY)}catch{return!1}return!1}function $n(){return typeof process<"u"&&be&&be.FEDERATION_DEBUG?!!be.FEDERATION_DEBUG:typeof FEDERATION_DEBUG<"u"&&FEDERATION_DEBUG?!0:In()}const Nn=function(){return typeof process<"u"&&be?be:{}};J.getProcessEnv=Nn;J.isBrowserEnv=_r;J.isBrowserEnvValue=mr;J.isDebugMode=$n;J.isReactNativeEnv=Tn;var H={};const S=P,dt=J,gr="[ Federation Runtime ]",Mn=(e,t,r=S.SEPARATOR)=>{const n=e.split(r),o=dt.getProcessEnv().NODE_ENV==="development"&&t,s="*",i=a=>a.startsWith("http")||a.includes(S.MANIFEST_EXT);if(n.length>=2){let[a,...c]=n;e.startsWith(r)&&(a=n.slice(0,2).join(r),c=[o||n.slice(2).join(r)]);let l=o||c.join(r);return i(l)?{name:a,entry:l}:{name:a,version:l||s}}else if(n.length===1){const[a]=n;return o&&i(o)?{name:a,entry:o}:{name:a,version:o||s}}else throw`Invalid entry value: ${e}`},Pn=function(...e){return e.length?e.reduce((t,r)=>r?t?`${t}${S.SEPARATOR}${r}`:r:t,""):""},It=function(e,t="",r=!1){try{const n=r?".js":"";return`${t}${e.replace(new RegExp(`${S.NameTransformSymbol.AT}`,"g"),S.NameTransformMap[S.NameTransformSymbol.AT]).replace(new RegExp(`${S.NameTransformSymbol.HYPHEN}`,"g"),S.NameTransformMap[S.NameTransformSymbol.HYPHEN]).replace(new RegExp(`${S.NameTransformSymbol.SLASH}`,"g"),S.NameTransformMap[S.NameTransformSymbol.SLASH])}${n}`}catch(n){throw n}},vn=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(new RegExp(t,"g"),"")}return n=n.replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.AT]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.AT]]).replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.SLASH]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.SLASH]]).replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.HYPHEN]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(n){throw n}},An=(e,t)=>{if(!e)return"";let r=e;return r==="."&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),It(r,"__federation_expose_",t)},kn=(e,t)=>e?It(e,"__federation_shared_",t):"",On=(e,t)=>{if("getPublicPath"in e){let r;return e.getPublicPath.startsWith("function")?r=new Function("return "+e.getPublicPath)()():r=new Function(e.getPublicPath)(),`${r}${t}`}else return"publicPath"in e?!dt.isBrowserEnv()&&!dt.isReactNativeEnv()&&"ssrPublicPath"in e&&typeof e.ssrPublicPath=="string"?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},wn=(e,t)=>{e||pr(t)},pr=e=>{throw new Error(`${gr}: ${e}`)},Fn=e=>{console.warn(`${gr}: ${e}`)};function Ln(e){try{return JSON.stringify(e,null,2)}catch{return""}}const Dn=/^([\d^=v<>~]|[*xX]$)/;function Hn(e){return Dn.test(e)}H.assert=wn;H.composeKeyWithSeparator=Pn;H.decodeName=vn;H.encodeName=It;H.error=pr;H.generateExposeFilename=An;H.generateShareFilename=kn;H.getResourceUrl=On;H.isRequiredVersion=Hn;H.parseEntry=Mn;H.safeToString=Ln;H.warn=Fn;var ue={};const ye=P,Q=(e,t)=>{if(!e)return t;const n=(o=>{if(o===".")return"";if(o.startsWith("./"))return o.replace("./","");if(o.startsWith("/")){const s=o.slice(1);return s.endsWith("/")?s.slice(0,-1):s}return o})(e);return n?n.endsWith("/")?`${n}${t}`:`${n}/${t}`:t};function yr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function Cn(e,t={}){var E,I,O;const{remotes:r={},overrides:n={},version:o}=t;let s;const i=()=>"publicPath"in e.metaData?(e.metaData.publicPath==="auto"||e.metaData.publicPath==="")&&o?yr(o):e.metaData.publicPath:e.metaData.getPublicPath,a=Object.keys(n);let c={};Object.keys(r).length||(c=((E=e.remotes)==null?void 0:E.reduce((y,N)=>{let R;const v=N.federationContainerName;return a.includes(v)?R=n[v]:"version"in N?R=N.version:R=N.entry,y[v]={matchedVersion:R},y},{}))||{}),Object.keys(r).forEach(y=>c[y]={matchedVersion:a.includes(y)?n[y]:r[y]});const{remoteEntry:{path:l,name:u,type:d},types:f={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:h},globalName:m,ssrRemoteEntry:_}=e.metaData,{exposes:g}=e;let p={version:o||"",buildVersion:h,globalName:m,remoteEntry:Q(l,u),remoteEntryType:d,remoteTypes:Q(f.path,f.name),remoteTypesZip:f.zip||"",remoteTypesAPI:f.api||"",remotesInfo:c,shared:e==null?void 0:e.shared.map(y=>({assets:y.assets,sharedName:y.name,version:y.version,usedExports:y.referenceExports||[]})),modules:g==null?void 0:g.map(y=>({moduleName:y.name,modulePath:y.path,assets:y.assets}))};if((I=e.metaData)!=null&&I.prefetchInterface){const y=e.metaData.prefetchInterface;p={...p,prefetchInterface:y}}if((O=e.metaData)!=null&&O.prefetchEntry){const{path:y,name:N,type:R}=e.metaData.prefetchEntry;p={...p,prefetchEntry:Q(y,N),prefetchEntryType:R}}if("publicPath"in e.metaData?(s={...p,publicPath:i()},typeof e.metaData.ssrPublicPath=="string"&&(s.ssrPublicPath=e.metaData.ssrPublicPath)):s={...p,getPublicPath:i()},_){const y=Q(_.path,_.name);s.ssrRemoteEntry=y,s.ssrRemoteEntryType=_.type||"commonjs-module"}return s}function qn(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(ye.MANIFEST_EXT))}function Gn(e){if(!e)return{statsFileName:ye.StatsFileName,manifestFileName:ye.ManifestFileName};let t=typeof e=="boolean"?"":e.filePath||"",r=typeof e=="boolean"?"":e.fileName||"";const n=".json",o=a=>a.endsWith(n)?a:`${a}${n}`,s=(a,c)=>a.replace(n,`${c}${n}`),i=r?o(r):ye.ManifestFileName;return{statsFileName:Q(t,r?s(i,"-stats"):ye.StatsFileName),manifestFileName:Q(t,i)}}ue.generateSnapshotFromManifest=Cn;ue.getManifestFileName=Gn;ue.inferAutoPublicPath=yr;ue.isManifestProvider=qn;ue.simpleJoinRemoteEntry=Q;var fe={};const Ot=J,Er="[ Module Federation ]",ge=console,Un=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function Wn(){try{const e=new Error().stack;if(!e)return;const[,...t]=e.split(` `),r=t.filter(n=>!Un.some(o=>n.includes(o)));return r.length?`Stack trace: ${r.slice(0,5).join(` `)}`:void 0}catch{return}}var Sr=class{constructor(e,t=ge){this.prefix=e,this.delegate=t??ge}setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??ge}emit(e,t){const r=this.delegate,n=Ot.isDebugMode()?Wn():void 0,o=n?[...t,n]:t,s=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(const i of s){const a=r[i];if(typeof a=="function"){a.call(r,this.prefix,...o);return}}for(const i of s){const a=ge[i];if(typeof a=="function"){a.call(ge,this.prefix,...o);return}}}log(...e){this.emit("log",e)}warn(...e){this.emit("warn",e)}error(...e){this.emit("error",e)}success(...e){this.emit("info",e)}info(...e){this.emit("info",e)}ready(...e){this.emit("info",e)}debug(...e){Ot.isDebugMode()&&this.emit("debug",e)}};function br(e){return new Sr(e)}function Rr(e){const t=new Sr(e);return Object.defineProperty(t,"__mf_infrastructure_logger__",{value:!0,enumerable:!1,configurable:!1}),t}function Bn(e,t,r){if(e.__mf_infrastructure_logger__&&t!=null&&t.getInfrastructureLogger)try{const n=t.getInfrastructureLogger(r);n&&typeof n=="object"&&(typeof n.log=="function"||typeof n.info=="function"||typeof n.warn=="function"||typeof n.error=="function")&&e.setDelegate(n)}catch{e.setDelegate(void 0)}}const jn=br(Er),Vn=Rr(Er);fe.bindLoggerToCompiler=Bn;fe.createInfrastructureLogger=Rr;fe.createLogger=br;fe.infrastructureLogger=Vn;fe.logger=jn;var de={};const Xn=H;async function $t(e,t){try{return await e()}catch(r){!t&&Xn.warn(r);return}}function Ue(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function Tr(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("script");for(let l=0;l{t&&(d==="async"||d==="defer"?t[d]=l[d]:t.getAttribute(d)||t.setAttribute(d,l[d]))})}let i=null;const a=typeof window<"u"?l=>{if(l.filename&&Ue(l.filename,e.url)){const u=new Error(`ScriptExecutionError: Script "${e.url}" loaded but threw a runtime error during execution: ${l.message} (${l.filename}:${l.lineno}:${l.colno})`);u.name="ScriptExecutionError",i=u}}:null;a&&window.addEventListener("error",a);const c=async(l,u)=>{clearTimeout(o),a&&window.removeEventListener("error",a);const d=()=>{if((u==null?void 0:u.type)==="error"){const f=new Error(`ScriptNetworkError: Failed to load script "${e.url}" - the script URL is unreachable or the server returned an error (network failure, 404, CORS, etc.)`);f.name="ScriptNetworkError",e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(f))}else i?e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(i)):e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,$t(()=>{const{needDeleteScript:f=!0}=e;f&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),l&&typeof l=="function")){const f=l(u);if(f instanceof Promise){const h=await f;return d(),h}return d(),f}d()};return t.onerror=c.bind(null,t.onerror),t.onload=c.bind(null,t.onload),o=setTimeout(()=>{c(null,new Error(`Remote script "${e.url}" time-outed.`))},n),{script:t,needAttach:r}}function xn(e){let t=null,r=!0;const n=document.getElementsByTagName("link");for(let s=0;s{t&&!t.getAttribute(a)&&t.setAttribute(a,i[a])})}const o=(s,i)=>{const a=()=>{(i==null?void 0:i.type)==="error"?e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(i)):e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,$t(()=>{const{needDeleteLink:c=!0}=e;c&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),s)){const c=s(i);return a(),c}a()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function Kn(e,t){const{attrs:r={},createScriptHook:n}=t;return new Promise((o,s)=>{const{script:i,needAttach:a}=Tr({url:e,cb:o,onErrorCallback:s,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}de.createLink=xn;de.createScript=Tr;de.isStaticResourcesEqual=Ue;de.loadScript=Kn;de.safeWrapper=$t;var Nt={};const Yn=(e,t,r,n)=>{t(new Error("createScriptNode is disabled in non-Node.js environment"))},zn=(e,t)=>{throw new Error("loadScriptNode is disabled in non-Node.js environment")};Nt.createScriptNode=Yn;Nt.loadScriptNode=zn;var Ir={};function Jn(e,t,r){return function(n){if(n===!1)return!1;if(typeof n>"u")return e?t:!1;if(n===!0)return t;if(n&&typeof n=="object")return{...t,...n};throw new Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}Ir.normalizeOptions=Jn;var $r={};const Zn=e=>e;$r.createModuleFederationConfig=Zn;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=P,r=lr,n=cr,o=ur,s=fr,i=dr,a=hr,c=J,l=H,u=ue,d=fe,f=de,h=Nt,m=Ir,_=$r;e.BROWSER_LOG_KEY=t.BROWSER_LOG_KEY,e.ENCODE_NAME_PREFIX=t.ENCODE_NAME_PREFIX,e.EncodedNameTransformMap=t.EncodedNameTransformMap,e.FederationModuleManifest=t.FederationModuleManifest,e.MANIFEST_EXT=t.MANIFEST_EXT,e.MFModuleType=t.MFModuleType,e.MFPrefetchCommon=t.MFPrefetchCommon,e.MODULE_DEVTOOL_IDENTIFIER=t.MODULE_DEVTOOL_IDENTIFIER,e.ManifestFileName=t.ManifestFileName,e.NameTransformMap=t.NameTransformMap,e.NameTransformSymbol=t.NameTransformSymbol,e.SEPARATOR=t.SEPARATOR,e.StatsFileName=t.StatsFileName,e.TEMP_DIR=t.TEMP_DIR,e.TreeShakingStatus=t.TreeShakingStatus,e.assert=l.assert,e.bindLoggerToCompiler=d.bindLoggerToCompiler,e.composeKeyWithSeparator=l.composeKeyWithSeparator,Object.defineProperty(e,"consumeSharedPlugin",{enumerable:!0,get:function(){return i.ConsumeSharedPlugin_exports}}),Object.defineProperty(e,"containerPlugin",{enumerable:!0,get:function(){return r.ContainerPlugin_exports}}),Object.defineProperty(e,"containerReferencePlugin",{enumerable:!0,get:function(){return n.ContainerReferencePlugin_exports}}),e.createInfrastructureLogger=d.createInfrastructureLogger,e.createLink=f.createLink,e.createLogger=d.createLogger,e.createModuleFederationConfig=_.createModuleFederationConfig,e.createScript=f.createScript,e.createScriptNode=h.createScriptNode,e.decodeName=l.decodeName,e.encodeName=l.encodeName,e.error=l.error,e.generateExposeFilename=l.generateExposeFilename,e.generateShareFilename=l.generateShareFilename,e.generateSnapshotFromManifest=u.generateSnapshotFromManifest,e.getManifestFileName=u.getManifestFileName,e.getProcessEnv=c.getProcessEnv,e.getResourceUrl=l.getResourceUrl,e.inferAutoPublicPath=u.inferAutoPublicPath,e.infrastructureLogger=d.infrastructureLogger,e.isBrowserEnv=c.isBrowserEnv,e.isBrowserEnvValue=c.isBrowserEnvValue,e.isDebugMode=c.isDebugMode,e.isManifestProvider=u.isManifestProvider,e.isReactNativeEnv=c.isReactNativeEnv,e.isRequiredVersion=l.isRequiredVersion,e.isStaticResourcesEqual=f.isStaticResourcesEqual,e.loadScript=f.loadScript,e.loadScriptNode=h.loadScriptNode,e.logger=d.logger,Object.defineProperty(e,"moduleFederationPlugin",{enumerable:!0,get:function(){return o.ModuleFederationPlugin_exports}}),e.normalizeOptions=m.normalizeOptions,e.parseEntry=l.parseEntry,Object.defineProperty(e,"provideSharedPlugin",{enumerable:!0,get:function(){return a.ProvideSharedPlugin_exports}}),e.safeToString=l.safeToString,e.safeWrapper=f.safeWrapper,Object.defineProperty(e,"sharePlugin",{enumerable:!0,get:function(){return s.SharePlugin_exports}}),e.simpleJoinRemoteEntry=u.simpleJoinRemoteEntry,e.warn=l.warn})(D);var Nr={},Mt={};const Qn=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split("-")[0].toLowerCase()}#${e.toLowerCase()}`,eo=(e,t,r,n)=>{const o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(Qn(e)),n&&o.push(`Original Error Message: ${n}`),o.join(` `)};Mt.getShortErrorMsg=eo;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Mt;function r(n,o,s,i,a,c){return i(t.getShortErrorMsg(n,o,s,a))}e.logAndReport=r})(Nr);let to=D,ro=Nr;const ee="[ Federation Runtime ]",ht=(0,to.createLogger)(ee);function no(e,t,r,n,o){e||(r!==void 0?mt(t,r,n,void 0,o):mt(t))}function mt(e,t,r,n,o){if(t!==void 0)return(0,ro.logAndReport)(e,t,r??{},i=>{throw new Error(`${ee}: ${i}`)},n,o);const s=e;throw s instanceof Error?(s.message.startsWith(ee)||(s.message=`${ee}: ${s.message}`),s):new Error(`${ee}: ${s}`)}function oo(e){e instanceof Error&&(e.message.startsWith(ee)||(e.message=`${ee}: ${e.message}`)),ht.warn(e)}M.assert=no;M.error=mt;M.logger=ht;M.warn=oo;var $={};const so=M;let wt=D;function io(e,t){return e.findIndex(r=>r===t)===-1&&e.push(t),e}function ao(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function lo(e){return typeof e.entry<"u"}function co(e){return!e.entry.includes(".json")}async function uo(e,t){try{return await e()}catch(r){!t&&so.warn(r);return}}function fo(e){return e&&typeof e=="object"}const Mr=Object.prototype.toString;function ho(e){return Mr.call(e)==="[object Object]"}function mo(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function _o(e){return Array.isArray(e)?e:[e]}function go(e){const t={url:"",type:"global",globalName:""};return wt.isBrowserEnvValue||(0,wt.isReactNativeEnv)()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}const po=(e,t)=>{let r;return e.endsWith("/")?r=e.slice(0,-1):r=e,t.startsWith(".")&&(t=t.slice(1)),r=r+t,r};$.addUniqueItem=io;$.arrayOptions=_o;$.getFMId=ao;$.getRemoteEntryInfoFromSnapshot=go;$.isObject=fo;$.isPlainObject=ho;$.isPureRemoteEntry=co;$.isRemoteInfoWithEntry=lo;$.isStaticResourcesEqual=mo;$.objectToString=Mr;$.processModuleAlias=po;$.safeWrapper=uo;var b={};const Pr=M,_t=$;let yo=D;const k=typeof globalThis=="object"?globalThis:window,C=(()=>{try{return document.defaultView}catch{return k}})(),Eo=C;function He(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function Ce(e,t){return Object.hasOwnProperty.call(e,t)}Ce(k,"__GLOBAL_LOADING_REMOTE_ENTRY__")||He(k,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});const gt=k.__GLOBAL_LOADING_REMOTE_ENTRY__;function vr(e){Ce(e,"__VMOK__")&&!Ce(e,"__FEDERATION__")&&He(e,"__FEDERATION__",e.__VMOK__),Ce(e,"__FEDERATION__")||(He(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),He(e,"__VMOK__",e.__FEDERATION__)),e.__FEDERATION__.__GLOBAL_PLUGIN__??=[],e.__FEDERATION__.__INSTANCES__??=[],e.__FEDERATION__.moduleInfo??={},e.__FEDERATION__.__SHARE__??={},e.__FEDERATION__.__MANIFEST_LOADING__??={},e.__FEDERATION__.__PRELOADED_MAP__??=new Map}vr(k);vr(C);function So(){k.__FEDERATION__.__GLOBAL_PLUGIN__=[],k.__FEDERATION__.__INSTANCES__=[],k.__FEDERATION__.moduleInfo={},k.__FEDERATION__.__SHARE__={},k.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(gt).forEach(e=>{delete gt[e]})}function bo(e){k.__FEDERATION__.__INSTANCES__.push(e)}function Ro(){return k.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function To(e,t=(0,yo.isDebugMode)()){t&&(k.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,k.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="2.2.2")}function pt(e,t){if(typeof t=="string"){if(e[t])return{value:e[t],key:t};{const r=Object.keys(e);for(const n of r){const[o,s]=n.split(":"),i=`${o}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}}else Pr.error(`getInfoWithoutType: "key" must be a string, got ${typeof t} (${JSON.stringify(t)}).`)}const Io=()=>C.__FEDERATION__.moduleInfo,Ar=(e,t)=>{const r=pt(t,_t.getFMId(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){const{version:n,...o}=e,s=_t.getFMId(o),i=pt(C.__FEDERATION__.moduleInfo,s).value;if((i==null?void 0:i.version)===n)return i}},$o=e=>Ar(e,C.__FEDERATION__.moduleInfo),No=(e,t)=>{const r=_t.getFMId(e);return C.__FEDERATION__.moduleInfo[r]=t,C.__FEDERATION__.moduleInfo},Mo=e=>(C.__FEDERATION__.moduleInfo={...C.__FEDERATION__.moduleInfo,...e},()=>{const t=Object.keys(e);for(const r of t)delete C.__FEDERATION__.moduleInfo[r]}),Po=(e,t)=>{const r=t||`__FEDERATION_${e}:custom__`;return{remoteEntryKey:r,entryExports:k[r]}},vo=e=>{const{__GLOBAL_PLUGIN__:t}=C.__FEDERATION__;e.forEach(r=>{t.findIndex(n=>n.name===r.name)===-1?t.push(r):Pr.warn(`The plugin ${r.name} has been registered.`)})},Ao=()=>C.__FEDERATION__.__GLOBAL_PLUGIN__,ko=e=>k.__FEDERATION__.__PRELOADED_MAP__.get(e),Oo=e=>k.__FEDERATION__.__PRELOADED_MAP__.set(e,!0);b.CurrentGlobal=k;b.Global=Eo;b.addGlobalSnapshot=Mo;b.getGlobalFederationConstructor=Ro;b.getGlobalHostPlugins=Ao;b.getGlobalSnapshot=Io;b.getGlobalSnapshotInfoByModuleInfo=$o;b.getInfoWithoutType=pt;b.getPreloaded=ko;b.getRemoteEntryExports=Po;b.getTargetSnapshotInfoByModuleInfo=Ar;b.globalLoading=gt;b.nativeGlobal=C;b.registerGlobalPlugins=vo;b.resetFederationGlobalInfo=So;b.setGlobalFederationConstructor=To;b.setGlobalFederationInstance=bo;b.setGlobalSnapshotInfoByModuleInfo=No;b.setPreloaded=Oo;var Pt={},ne={},W={};const Ft="[0-9A-Za-z-]+",vt=`(?:\\+(${Ft}(?:\\.${Ft})*))`,Re="0|[1-9]\\d*",qe="[0-9]+",kr="\\d*[a-zA-Z-][a-zA-Z0-9-]*",Lt=`(?:${qe}|${kr})`,wo=`(?:-?(${Lt}(?:\\.${Lt})*))`,Dt=`(?:${Re}|${kr})`,Or=`(?:-(${Dt}(?:\\.${Dt})*))`,ze=`${Re}|x|X|\\*`,ce=`[v=\\s]*(${ze})(?:\\.(${ze})(?:\\.(${ze})(?:${Or})?${vt}?)?)?`,Fo=`^\\s*(${ce})\\s+-\\s+(${ce})\\s*$`,Lo=`[v=\\s]*${`(${qe})\\.(${qe})\\.(${qe})`}${wo}?${vt}?`,At="((?:<|>)?=?)",Do=`(\\s*)${At}\\s*(${Lo}|${ce})`,wr="(?:~>?)",Ho=`(\\s*)${wr}\\s+`,Fr="(?:\\^)",Co=`(\\s*)${Fr}\\s+`,qo="(<|>)?=?\\s*\\*",Go=`^${Fr}${ce}$`,Uo=`v?${`(${Re})\\.(${Re})\\.(${Re})`}${Or}?${vt}?`,Wo=`^${wr}${ce}$`,Bo=`^${At}\\s*${ce}$`,jo=`^${At}\\s*(${Uo})$|^$`,Vo="^\\s*>=\\s*0.0.0\\s*$";W.caret=Go;W.caretTrim=Co;W.comparator=jo;W.comparatorTrim=Do;W.gte0=Vo;W.hyphenRange=Fo;W.star=qo;W.tilde=Wo;W.tildeTrim=Ho;W.xRange=Bo;const Xo=W;function Lr(e){return new RegExp(e)}function xo(e){return!e||e.toLowerCase()==="x"||e==="*"}function Ko(...e){return t=>e.reduce((r,n)=>n(r),t)}function Yo(e){return e.match(Lr(Xo.comparator))}function zo(e,t,r,n){const o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}ne.combineVersion=zo;ne.extractComparator=Yo;ne.isXVersion=xo;ne.parseRegex=Lr;ne.pipe=Ko;var V={};const x=W,T=ne;function Jo(e){return e.replace(T.parseRegex(x.hyphenRange),(t,r,n,o,s,i,a,c,l,u,d,f)=>(T.isXVersion(n)?r="":T.isXVersion(o)?r=`>=${n}.0.0`:T.isXVersion(s)?r=`>=${n}.${o}.0`:r=`>=${r}`,T.isXVersion(l)?c="":T.isXVersion(u)?c=`<${Number(l)+1}.0.0-0`:T.isXVersion(d)?c=`<${l}.${Number(u)+1}.0-0`:f?c=`<=${l}.${u}.${d}-${f}`:c=`<=${c}`,`${r} ${c}`.trim()))}function Zo(e){return e.replace(T.parseRegex(x.comparatorTrim),"$1$2$3")}function Qo(e){return e.replace(T.parseRegex(x.tildeTrim),"$1~")}function es(e){return e.replace(T.parseRegex(x.caretTrim),"$1^")}function ts(e){return e.trim().split(/\s+/).map(t=>t.replace(T.parseRegex(x.caret),(r,n,o,s,i)=>T.isXVersion(n)?"":T.isXVersion(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:T.isXVersion(s)?n==="0"?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.0 <${Number(n)+1}.0.0-0`:i?n==="0"?o==="0"?`>=${n}.${o}.${s}-${i} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s}-${i} <${Number(n)+1}.0.0-0`:n==="0"?o==="0"?`>=${n}.${o}.${s} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${Number(n)+1}.0.0-0`)).join(" ")}function rs(e){return e.trim().split(/\s+/).map(t=>t.replace(T.parseRegex(x.tilde),(r,n,o,s,i)=>T.isXVersion(n)?"":T.isXVersion(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:T.isXVersion(s)?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:i?`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`)).join(" ")}function ns(e){return e.split(/\s+/).map(t=>t.trim().replace(T.parseRegex(x.xRange),(r,n,o,s,i,a)=>{const c=T.isXVersion(o),l=c||T.isXVersion(s),u=l||T.isXVersion(i);return n==="="&&u&&(n=""),a="",c?n===">"||n==="<"?"<0.0.0-0":"*":n&&u?(l&&(s=0),i=0,n===">"?(n=">=",l?(o=Number(o)+1,s=0,i=0):(s=Number(s)+1,i=0)):n==="<="&&(n="<",l?o=Number(o)+1:s=Number(s)+1),n==="<"&&(a="-0"),`${n+o}.${s}.${i}${a}`):l?`>=${o}.0.0${a} <${Number(o)+1}.0.0-0`:u?`>=${o}.${s}.0${a} <${o}.${Number(s)+1}.0-0`:r})).join(" ")}function os(e){return e.trim().replace(T.parseRegex(x.star),"")}function ss(e){return e.trim().replace(T.parseRegex(x.gte0),"")}V.parseCaretTrim=es;V.parseCarets=ts;V.parseComparatorTrim=Zo;V.parseGTE0=ss;V.parseHyphen=Jo;V.parseStar=os;V.parseTildeTrim=Qo;V.parseTildes=rs;V.parseXRanges=ns;var Dr={};function Ge(e,t){return e=Number(e)||e,t=Number(t)||t,e>t?1:e===t?0:-1}function is(e,t){const{preRelease:r}=e,{preRelease:n}=t;if(r===void 0&&n)return 1;if(r&&n===void 0)return-1;if(r===void 0&&n===void 0)return 0;for(let o=0,s=r.length;o<=s;o++){const i=r[o],a=n[o];if(i!==a)return i===void 0&&a===void 0?0:i?a?Ge(i,a):-1:1}return 0}function Oe(e,t){return Ge(e.major,t.major)||Ge(e.minor,t.minor)||Ge(e.patch,t.patch)||is(e,t)}function Je(e,t){return e.version===t.version}function as(e,t){switch(e.operator){case"":case"=":return Je(e,t);case">":return Oe(e,t)<0;case">=":return Je(e,t)||Oe(e,t)<0;case"<":return Oe(e,t)>0;case"<=":return Je(e,t)||Oe(e,t)>0;case void 0:return!0;default:return!1}}Dr.compare=as;const ae=ne,X=V,ls=Dr;function cs(e){return ae.pipe(X.parseCarets,X.parseTildes,X.parseXRanges,X.parseStar)(e)}function us(e){return ae.pipe(X.parseHyphen,X.parseComparatorTrim,X.parseTildeTrim,X.parseCaretTrim)(e.trim()).split(/\s+/).join(" ")}function fs(e,t){if(!e)return!1;const r=ae.extractComparator(e);if(!r)return!1;const[,n,,o,s,i,a]=r,c={operator:n,version:ae.combineVersion(o,s,i,a),major:o,minor:s,patch:i,preRelease:a==null?void 0:a.split(".")},l=t.split("||");for(const u of l){const d=u.trim();if(!d||d==="*"||d==="x")return!0;try{const f=us(d);if(!f.trim())return!0;const h=f.split(" ").map(g=>cs(g)).join(" ");if(!h.trim())return!0;const m=h.split(/\s+/).map(g=>X.parseGTE0(g)).filter(Boolean);if(m.length===0)continue;let _=!0;for(const g of m){const p=ae.extractComparator(g);if(!p){_=!1;break}const[,E,,I,O,y,N]=p;if(!ls.compare({operator:E,version:ae.combineVersion(I,O,y,N),major:I,minor:O,patch:y,preRelease:N==null?void 0:N.split(".")},c)){_=!1;break}}if(_)return!0}catch(f){console.error(`[semver] Error processing range part "${d}":`,f);continue}}return!1}Pt.satisfy=fs;var q={},oe={};const ds="default",hs="global";oe.DEFAULT_REMOTE_TYPE=hs;oe.DEFAULT_SCOPE=ds;const We=M,Hr=$,Cr=b,ms=oe,Ee=Pt;let yt=D;function _s(e,t,r,n){var s,i;let o;return"get"in e?o=e.get:"lib"in e?o=()=>Promise.resolve(e.lib):o=()=>Promise.resolve(()=>{We.error(`Cannot get shared "${r}" from "${t}": neither "get" nor "lib" is provided in the share config.`)}),(s=e.shareConfig)!=null&&s.eager&&((i=e.treeShaking)!=null&&i.mode)&&We.error(`Invalid shared config for "${r}" from "${t}": cannot use both "eager: true" and "treeShaking.mode" simultaneously. Choose one strategy.`),{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:o,loaded:e!=null&&e.loaded||"lib"in e?!0:void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??yt.TreeShakingStatus.UNKNOWN,useIn:[]}:void 0}}function gs(e,t){const r=t.shared||{},n=t.name,o=Object.keys(r).reduce((i,a)=>{const c=Hr.arrayOptions(r[a]);return i[a]=i[a]||[],c.forEach(l=>{i[a].push(_s(l,n,a,t.shareStrategy))}),i},{}),s={...e.shared};return Object.keys(o).forEach(i=>{s[i]?o[i].forEach(a=>{s[i].find(c=>c.version===a.version)||s[i].push(a)}):s[i]=o[i]}),{allShareInfos:s,newShareInfos:o}}function Te(e,t){if(!e)return!1;const{status:r,mode:n}=e;return r===yt.TreeShakingStatus.NO_USE?!1:r===yt.TreeShakingStatus.CALCULATED?!0:n==="runtime-infer"?t?ys(e,t):!0:!1}function te(e,t){const r=n=>{if(!Number.isNaN(Number(n))){const o=n.split(".");let s=n;for(let i=0;i<3-o.length;i++)s+=".0";return s}return n};return!!Ee.satisfy(r(e),`<=${r(t)}`)}const Ie=(e,t)=>{const r=t||function(n,o){return te(n,o)};return Object.keys(e).reduce((n,o)=>!n||r(n,o)||n==="0"?o:n,0)},Be=e=>!!e.loaded||typeof e.lib=="function",ps=e=>!!e.loading,ys=(e,t)=>{if(!e||!t)return!1;const{usedExports:r}=e;return r?!!t.every(n=>r.includes(n)):!1};function Es(e,t,r,n){const o=e[t][r];let s="",i=Te(n);const a=function(c,l){return i?o[c].treeShaking?o[l].treeShaking?!Be(o[c].treeShaking)&&te(c,l):!1:!0:!Be(o[c])&&te(c,l)};if(i){if(s=Ie(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:Ie(e[t][r],a),useTreesShaking:i}}const se=e=>Be(e)||ps(e);function Ss(e,t,r,n){const o=e[t][r];let s="",i=Te(n);const a=function(c,l){if(i){if(!o[c].treeShaking)return!0;if(!o[l].treeShaking)return!1;if(se(o[l].treeShaking))return se(o[c].treeShaking)?!!te(c,l):!0;if(se(o[c].treeShaking))return!1}return se(o[l])?se(o[c])?!!te(c,l):!0:se(o[c])?!1:te(c,l)};if(i){if(s=Ie(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:Ie(e[t][r],a),useTreesShaking:i}}function bs(e){return e==="loaded-first"?Ss:Es}function Rs(e,t,r,n){if(!e)return;const{shareConfig:o,scope:s=ms.DEFAULT_SCOPE,strategy:i,treeShaking:a}=r,c=Array.isArray(s)?s:[s];for(const l of c)if(o&&e[l]&&e[l][t]){const{requiredVersion:u}=o,{version:d,useTreesShaking:f}=bs(i)(e,l,t,a),h=()=>{const _=e[l][t][d];if(o.singleton){if(typeof u=="string"&&!Ee.satisfy(d,u)){const g=`Version ${d} from ${d&&_.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${u})`;o.strictVersion?We.error(g):We.warn(g)}return{shared:_,useTreesShaking:f}}else{if(u===!1||u==="*")return{shared:_,useTreesShaking:f};if(Ee.satisfy(d,u))return{shared:_,useTreesShaking:f};const g=Te(a);if(g){for(const[p,E]of Object.entries(e[l][t]))if(Te(E.treeShaking,a==null?void 0:a.usedExports)&&Ee.satisfy(p,u))return{shared:E,useTreesShaking:g}}for(const[p,E]of Object.entries(e[l][t]))if(Ee.satisfy(p,u))return{shared:E,useTreesShaking:!1}}},m={shareScopeMap:e,scope:l,pkgName:t,version:d,GlobalFederation:Cr.Global.__FEDERATION__,shareInfo:r,resolver:h};return(n.emit(m)||m).resolver()}}function Ts(){return Cr.Global.__FEDERATION__.__SHARE__}function Is(e){const{pkgName:t,extraOptions:r,shareInfos:n}=e,o=c=>{if(!c)return;const l={};return c.forEach(d=>{l[d.version]=d}),l[Ie(l,function(d,f){return!Be(l[d])&&te(d,f)})]},s=(r==null?void 0:r.resolver)??o,i=c=>c!==null&&typeof c=="object"&&!Array.isArray(c),a=(...c)=>{const l={};for(const u of c)if(u)for(const[d,f]of Object.entries(u)){const h=l[d];i(h)&&i(f)?l[d]=a(h,f):f!==void 0&&(l[d]=f)}return l};return a(s(n[t]),r==null?void 0:r.customShareInfo)}const $s=(e,t)=>{e.useIn||(e.useIn=[]),Hr.addUniqueItem(e.useIn,t)};function Ns(e,t){return t&&e.treeShaking?e.treeShaking:e}q.addUseIn=$s;q.directShare=Ns;q.formatShareConfigs=gs;q.getGlobalShareScope=Ts;q.getRegisteredShare=Rs;q.getTargetSharedOptions=Is;q.shouldUseTreeShaking=Te;var he={};function Ms(e,t){for(const r of e){const n=t.startsWith(r.name);let o=t.replace(r.name,"");if(n){if(o.startsWith("/")){const a=r.name;return o=`.${o}`,{pkgNameOrAlias:a,expose:o,remote:r}}else if(o==="")return{pkgNameOrAlias:r.name,expose:".",remote:r}}const s=r.alias&&t.startsWith(r.alias);let i=r.alias&&t.replace(r.alias,"");if(r.alias&&s){if(i&&i.startsWith("/")){const a=r.alias;return i=`.${i}`,{pkgNameOrAlias:a,expose:i,remote:r}}else if(i==="")return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function Ps(e,t){for(const r of e)if(t===r.name||r.alias&&t===r.alias)return r}he.matchRemote=Ps;he.matchRemoteWithNameAndExpose=Ms;var K={},Y={},F={};const vs="RUNTIME-001",As="RUNTIME-002",ks="RUNTIME-003",Os="RUNTIME-004",ws="RUNTIME-005",Fs="RUNTIME-006",Ls="RUNTIME-007",Ds="RUNTIME-008",Hs="RUNTIME-009",Cs="RUNTIME-010",qs="RUNTIME-011",Gs="TYPE-001",Us="BUILD-001",Ws="BUILD-002";F.BUILD_001=Us;F.BUILD_002=Ws;F.RUNTIME_001=vs;F.RUNTIME_002=As;F.RUNTIME_003=ks;F.RUNTIME_004=Os;F.RUNTIME_005=ws;F.RUNTIME_006=Fs;F.RUNTIME_007=Ls;F.RUNTIME_008=Ds;F.RUNTIME_009=Hs;F.RUNTIME_010=Cs;F.RUNTIME_011=qs;F.TYPE_001=Gs;var Me={};const L=F,qr={[L.RUNTIME_001]:"Failed to get remoteEntry exports.",[L.RUNTIME_002]:'The remote entry interface does not contain "init"',[L.RUNTIME_003]:"Failed to get manifest.",[L.RUNTIME_004]:"Failed to locate remote.",[L.RUNTIME_005]:"Invalid loadShareSync function call from bundler runtime",[L.RUNTIME_006]:"Invalid loadShareSync function call from runtime",[L.RUNTIME_007]:"Failed to get remote snapshot.",[L.RUNTIME_008]:"Failed to load script resources.",[L.RUNTIME_009]:"Please call createInstance first.",[L.RUNTIME_010]:'The name option cannot be changed after initialization. If you want to create a new instance with a different name, please use "createInstance" api.',[L.RUNTIME_011]:"The remoteEntry URL is missing from the remote snapshot."},Gr={[L.TYPE_001]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},Ur={[L.BUILD_001]:"Failed to find expose module.",[L.BUILD_002]:"PublicPath is required in prod mode."},Bs={...qr,...Gr,...Ur};Me.buildDescMap=Ur;Me.errorDescMap=Bs;Me.runtimeDescMap=qr;Me.typeDescMap=Gr;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=F,r=Mt,n=Me;e.BUILD_001=t.BUILD_001,e.BUILD_002=t.BUILD_002,e.RUNTIME_001=t.RUNTIME_001,e.RUNTIME_002=t.RUNTIME_002,e.RUNTIME_003=t.RUNTIME_003,e.RUNTIME_004=t.RUNTIME_004,e.RUNTIME_005=t.RUNTIME_005,e.RUNTIME_006=t.RUNTIME_006,e.RUNTIME_007=t.RUNTIME_007,e.RUNTIME_008=t.RUNTIME_008,e.RUNTIME_009=t.RUNTIME_009,e.RUNTIME_010=t.RUNTIME_010,e.RUNTIME_011=t.RUNTIME_011,e.TYPE_001=t.TYPE_001,e.buildDescMap=n.buildDescMap,e.errorDescMap=n.errorDescMap,e.getShortErrorMsg=r.getShortErrorMsg,e.runtimeDescMap=n.runtimeDescMap,e.typeDescMap=n.typeDescMap})(Y);const Ve=M,le=b,Ht=oe;let Wr=D,$e=Y;const Br=".then(callbacks[0]).catch(callbacks[1])";async function js({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof FEDERATION_ALLOW_NEW_FUNCTION<"u"?new Function("callbacks",`import("${e}")${Br}`)([r,n]):import(e).then(r).catch(n)}catch(o){Ve.error(`Failed to load ESM entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}async function Vs({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof __system_context__>"u"?System.import(e).then(r).catch(n):new Function("callbacks",`System.import("${e}")${Br}`)([r,n])}catch(o){Ve.error(`Failed to load SystemJS entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}function Xs(e,t,r){const{remoteEntryKey:n,entryExports:o}=le.getRemoteEntryExports(e,t);return o||Ve.error($e.RUNTIME_001,$e.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n}),o}async function xs({name:e,globalName:t,entry:r,loaderHook:n,getEntryUrl:o}){const{entryExports:s}=le.getRemoteEntryExports(e,t);if(s)return s;const i=o?o(r):r;return(0,Wr.loadScript)(i,{attrs:{},createScriptHook:(a,c)=>{const l=n.lifecycle.createScript.emit({url:a,attrs:c});if(l&&(l instanceof HTMLScriptElement||"script"in l||"timeout"in l))return l}}).then(()=>Xs(e,t,r),a=>{const c=a instanceof Error?a.message:String(a);Ve.error($e.RUNTIME_008,$e.runtimeDescMap,{remoteName:e,resourceUrl:i},c)})}async function Ks({remoteInfo:e,remoteEntryExports:t,loaderHook:r,getEntryUrl:n}){const{entry:o,entryGlobalName:s,name:i,type:a}=e;switch(a){case"esm":case"module":return js({entry:o,remoteEntryExports:t});case"system":return Vs({entry:o,remoteEntryExports:t});default:return xs({entry:o,globalName:s,name:i,loaderHook:r,getEntryUrl:n})}}function Et(e){const{entry:t,name:r}=e;return(0,Wr.composeKeyWithSeparator)(r,t)}async function jr(e){const{origin:t,remoteEntryExports:r,remoteInfo:n,getEntryUrl:o,_inErrorHandling:s=!1}=e,i=Et(n);if(r)return r;if(!le.globalLoading[i]){const a=t.remoteHandler.hooks.lifecycle.loadEntry,c=t.loaderHook;le.globalLoading[i]=a.emit({loaderHook:c,remoteInfo:n,remoteEntryExports:r}).then(l=>l||Ks({remoteInfo:n,remoteEntryExports:r,loaderHook:c,getEntryUrl:o})).catch(async l=>{const u=Et(n),d=l instanceof Error&&l.message.includes("ScriptExecutionError");if(l instanceof Error&&l.message.includes($e.RUNTIME_008)&&!d&&!s){const f=m=>jr({...m,_inErrorHandling:!0}),h=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:f,origin:t,remoteInfo:n,remoteEntryExports:r,globalLoading:le.globalLoading,uniqueKey:u});if(h)return h}throw l})}return le.globalLoading[i]}function Ys(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||Ht.DEFAULT_REMOTE_TYPE,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||Ht.DEFAULT_SCOPE}}K.getRemoteEntry=jr;K.getRemoteEntryUniqueKey=Et;K.getRemoteInfo=Ys;var Vr={};function zs(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}Vr.getBuilderId=zs;var Xr={};const Js=b;function Zs(e,t){const r=Js.getGlobalHostPlugins(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(o=>{e!=null&&e.find(s=>s.name!==o.name)&&e.push(o)}),e&&e.length>0&&e.forEach(o=>{n.forEach(s=>{s.applyPlugin(o,t)})}),e}Xr.registerPlugins=Zs;var Pe={};function Qs(e){return{name:e.name,alias:e.alias,entry:"entry"in e?e.entry:void 0,version:"version"in e?e.version:void 0,type:e.type,entryGlobalName:e.entryGlobalName,shareScope:e.shareScope}}function ei(e){var r,n,o,s,i,a;const t={};for(const[c,l]of Object.entries(e.shared)){const u=l[0];u&&(t[c]={version:u.version,singleton:(r=u.shareConfig)==null?void 0:r.singleton,requiredVersion:((n=u.shareConfig)==null?void 0:n.requiredVersion)===!1?!1:(o=u.shareConfig)==null?void 0:o.requiredVersion,eager:u.eager,strictVersion:(s=u.shareConfig)==null?void 0:s.strictVersion})}return{project:{name:e.name,mfRole:((i=e.remotes)==null?void 0:i.length)>0?"host":"unknown"},mfConfig:{name:e.name,remotes:((a=e.remotes)==null?void 0:a.map(Qs))??[],shared:t}}}Pe.optionsToMFContext=ei;var xr={},Z={};const ti=M,ri=he,Ct=K;let Se=D;function Kr(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function ni(e,t){return t.map(r=>{const n=ri.matchRemote(e,r.nameOrAlias);return ti.assert(n,`Unable to preload ${r.nameOrAlias} as it is not included in ${!n&&(0,Se.safeToString)({remoteInfo:n,remotes:e})}`),{remote:n,preloadConfig:Kr(r)}})}function oi(e){return e?e.map(t=>t==="."?t:t.startsWith("./")?t.replace("./",""):t):[]}function si(e,t,r,n=!0){const{cssAssets:o,jsAssetsWithoutEntry:s,entryAssets:i}=r;if(t.options.inBrowser){if(i.forEach(a=>{const{moduleInfo:c}=a,l=t.moduleCache.get(e.name);l?Ct.getRemoteEntry({origin:t,remoteInfo:c,remoteEntryExports:l.remoteEntryExports}):Ct.getRemoteEntry({origin:t,remoteInfo:c,remoteEntryExports:void 0})}),n){const a={rel:"preload",as:"style"};o.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h}});u&&document.head.appendChild(l)})}else{const a={rel:"stylesheet",type:"text/css"};o.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h},needDeleteLink:!1});u&&document.head.appendChild(l)})}if(n){const a={rel:"preload",as:"script"};s.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h}});u&&document.head.appendChild(l)})}else{const a={fetchpriority:"high",type:(e==null?void 0:e.type)==="module"?"module":"text/javascript"};s.forEach(c=>{const{script:l,needAttach:u}=(0,Se.createScript)({url:c,cb:()=>{},attrs:a,createScriptHook:(d,f)=>{const h=t.loaderHook.lifecycle.createScript.emit({url:d,attrs:f});if(h instanceof HTMLScriptElement)return h},needDeleteScript:!0});u&&document.head.appendChild(l)})}}}Z.defaultPreloadArgs=Kr;Z.formatPreloadArgs=ni;Z.normalizePreloadExposes=oi;Z.preloadAssets=si;const w=b,qt=q,ii=he,ai=K,li=Z,ci={getRegisteredShare:qt.getRegisteredShare,getGlobalShareScope:qt.getGlobalShareScope},ui={Global:w.Global,nativeGlobal:w.nativeGlobal,resetFederationGlobalInfo:w.resetFederationGlobalInfo,setGlobalFederationInstance:w.setGlobalFederationInstance,getGlobalFederationConstructor:w.getGlobalFederationConstructor,setGlobalFederationConstructor:w.setGlobalFederationConstructor,getInfoWithoutType:w.getInfoWithoutType,getGlobalSnapshot:w.getGlobalSnapshot,getTargetSnapshotInfoByModuleInfo:w.getTargetSnapshotInfoByModuleInfo,getGlobalSnapshotInfoByModuleInfo:w.getGlobalSnapshotInfoByModuleInfo,setGlobalSnapshotInfoByModuleInfo:w.setGlobalSnapshotInfoByModuleInfo,addGlobalSnapshot:w.addGlobalSnapshot,getRemoteEntryExports:w.getRemoteEntryExports,registerGlobalPlugins:w.registerGlobalPlugins,getGlobalHostPlugins:w.getGlobalHostPlugins,getPreloaded:w.getPreloaded,setPreloaded:w.setPreloaded};var fi={global:ui,share:ci,utils:{matchRemoteWithNameAndExpose:ii.matchRemoteWithNameAndExpose,preloadAssets:li.preloadAssets,getRemoteInfo:ai.getRemoteInfo}};xr.default=fi;var Xe={};const Ze=M,Gt=$,di=K,hi=Pe;let mi=D,Ut=Y;function _i(e,t,r){const n=t,o=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];o.length||o.push("default"),o.forEach(i=>{n[i]||(n[i]={})});const s={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?o:e.shareScope||"default"};return Object.defineProperty(s,"shareScopeMap",{value:n,enumerable:!1}),{remoteEntryInitOptions:s,shareScope:n[o[0]],initScope:r??[]}}var gi=class{constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;const e=await di.getRemoteEntry({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return Ze.assert(e,`remoteEntryExports is undefined - ${(0,mi.safeToString)(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t,r){const n=await this.getEntry();if(this.inited)return n;if(this.initPromise)return await this.initPromise,n;this.initing=!0,this.initPromise=(async()=>{const{remoteEntryInitOptions:o,shareScope:s,initScope:i}=_i(this.remoteInfo,this.host.shareScopeMap,r),a=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:s,remoteEntryInitOptions:o,initScope:i,remoteInfo:this.remoteInfo,origin:this.host});typeof(n==null?void 0:n.init)>"u"&&Ze.error(Ut.RUNTIME_002,Ut.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,hi.optionsToMFContext(this.host.options)),await n.init(a.shareScope,a.initScope,a.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...a,id:e,remoteSnapshot:t,remoteEntryExports:n}),this.inited=!0})();try{await this.initPromise}finally{this.initing=!1,this.initPromise=void 0}return n}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n);this.lib=s;let i;i=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo}),i||(i=await s.get(t)),Ze.assert(i,`${Gt.getFMId(this.remoteInfo)} remote don't export ${t}.`);const a=Gt.processModuleAlias(this.remoteInfo.name,t),c=this.wraperFactory(i,a);return o?await c():c}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return e instanceof Promise?async()=>{const n=await e();return r(n,t),n}:()=>{const n=e();return r(n,t),n}}};Xe.Module=gi;var Yr={},me={},pi=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{t=r(...e)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}};me.SyncHook=pi;var ve={};const yi=me;var Ei=class extends yi.SyncHook{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n0){let r=0;const n=s=>(et.warn(s),this.onerror(s),e),o=s=>{if(Ii.checkReturnData(e,s)){if(e=s,r{const s=e[o];s&&this.lifecycle[o].on(s)}))}removePlugin(e){we.assert(e,"A name is required.");const t=this.registerPlugins[e];we.assert(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(r=>{r!=="name"&&this.lifecycle[r].remove(t[r])})}};ke.PluginSystem=Mi;var xe={};const Pi=M,St=$,vi=Z;let Wt=D,Bt=Y;function Zr(e,t){const r=St.getRemoteEntryInfoFromSnapshot(t);r.url||Pi.error(Bt.RUNTIME_011,Bt.runtimeDescMap,{remoteName:e.name});let n=(0,Wt.getResourceUrl)(t,r.url);!Wt.isBrowserEnvValue&&!n.startsWith("http")&&(n=`https:${n}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function Ai(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!St.isRemoteInfoWithEntry(t)||!St.isPureRemoteEntry(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:i});Zr(s,a);const l={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},u=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:l,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});return u&&vi.preloadAssets(s,o,u,!1),{...e,remoteSnapshot:a}}return e}}}xe.assignRemoteInfo=Zr;xe.snapshotPlugin=Ai;var Qr={};const Ne=$,bt=b,ki=q,jt=Z,Oi=xe;let je=D;function wi(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function en(e,t,r,n,o={},s){const{value:i}=bt.getInfoWithoutType(e,Ne.getFMId(t)),a=s||i;if(a&&!(0,je.isManifestProvider)(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const u=wi(l),d=a.remotesInfo[l];en(e,{name:u.name,version:d.matchedVersion},r,!1,o,void 0)}}}const tt=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function Fi(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:u}=e,{preloadConfig:d}=t,{depsRemote:f}=d;if(en(n,r,(m,_,g)=>{var N;let p;if(g)p=d;else if(Array.isArray(f)){const R=f.find(v=>v.nameOrAlias===_.name||v.nameOrAlias===_.alias);if(!R)return;p=jt.defaultPreloadArgs(R)}else if(f===!0)p=d;else return;const E=(0,je.getResourceUrl)(m,Ne.getRemoteEntryInfoFromSnapshot(m).url);E&&a.push({name:_.name,moduleInfo:{name:_.name,entry:E,type:"remoteEntryType"in m?m.remoteEntryType:"global",entryGlobalName:"globalName"in m?m.globalName:_.name,shareScope:"",version:"version"in m?m.version:void 0},url:E});let I="modules"in m?m.modules:[];const O=jt.normalizePreloadExposes(p.exposes);O.length&&"modules"in m&&(I=(N=m==null?void 0:m.modules)==null?void 0:N.reduce((R,v)=>((O==null?void 0:O.indexOf(v.moduleName))!==-1&&R.push(v),R),[]));function y(R){const v=R.map(B=>(0,je.getResourceUrl)(m,B));return p.filter?v.filter(p.filter):v}if(I){const R=I.length;for(let v=0;v0){const m=(_,g)=>{const{shared:p}=ki.getRegisteredShare(e.shareScopeMap,g.sharedName,_,e.sharedHandler.hooks.lifecycle.resolveShare)||{};p&&typeof p.lib=="function"&&(g.assets.js.sync.forEach(E=>{c.add(E)}),g.assets.css.sync.forEach(E=>{l.add(E)}))};o.shared.forEach(_=>{var E;const g=(E=u.shared)==null?void 0:E[_.sharedName];if(!g)return;const p=_.version?g.find(I=>I.version===_.version):g;p&&Ne.arrayOptions(p).forEach(I=>{m(I,_)})})}const h=i.filter(m=>!c.has(m)&&!tt("script",m));return{cssAssets:s.filter(m=>!l.has(m)&&!tt("link",m)),jsAssetsWithoutEntry:h,entryAssets:a.filter(m=>!tt("script",m.url))}}const Li=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return je.isBrowserEnvValue?Ne.isRemoteInfoWithEntry(o)&&Ne.isPureRemoteEntry(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(Oi.assignRemoteInfo(n,i),Fi(t,r,n,s,i)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};Qr.generatePreloadAssetsPlugin=Li;var Ke={};const rt=M,Di=$,U=b,Vt=Pe,Hi=ve,nt=Ae,Ci=ke;let ot=D,Fe=Y;function tn(e,t){const r=U.getGlobalSnapshotInfoByModuleInfo({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&U.getInfoWithoutType(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:"version"in e?e.version:void 0})}}var qi=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new Ci.PluginSystem({beforeLoadRemoteSnapshot:new Hi.AsyncHook("beforeLoadRemoteSnapshot"),loadSnapshot:new nt.AsyncWaterfallHook("loadGlobalSnapshot"),loadRemoteSnapshot:new nt.AsyncWaterfallHook("loadRemoteSnapshot"),afterLoadSnapshot:new nt.AsyncWaterfallHook("afterLoadSnapshot")}),this.manifestLoading=U.Global.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,expose:r}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e});let o=U.getGlobalSnapshotInfoByModuleInfo({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},U.addGlobalSnapshot({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!U.getInfoWithoutType(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let u,d;if(c)if((0,ot.isManifestProvider)(c)){const f=ot.isBrowserEnvValue?c.remoteEntry:c.ssrRemoteEntry||c.remoteEntry||"",h=await this.getManifestJson(f,e,{}),m=U.setGlobalSnapshotInfoByModuleInfo({...e,entry:f},h);u=h,d=m}else{const{remoteSnapshot:f}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});u=f,d=l}else if(Di.isRemoteInfoWithEntry(e)){const f=await this.getManifestJson(e.entry,e,{}),h=U.setGlobalSnapshotInfoByModuleInfo(e,f),{remoteSnapshot:m}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:f,from:"global"});u=m,d=h}else rt.error(Fe.RUNTIME_007,Fe.runtimeDescMap,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,Vt.optionsToMFContext(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:u}),{remoteSnapshot:u,globalSnapshot:d}}getGlobalRemoteInfo(e){return tn(e,this.HostInstance)}async getManifestJson(e,t,r){const n=async()=>{let s=this.manifestCache.get(e);if(s)return s;try{let i=await this.loaderHook.lifecycle.fetch.emit(e,{});(!i||!(i instanceof Response))&&(i=await fetch(e,{})),s=await i.json()}catch(i){s=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}),s||(delete this.manifestLoading[e],rt.error(Fe.RUNTIME_003,Fe.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${i}`,Vt.optionsToMFContext(this.HostInstance.options)))}return rt.assert(s.metaData&&s.exposes&&s.shared,`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${[!s.metaData&&"metaData",!s.exposes&&"exposes",!s.shared&&"shared"].filter(Boolean).join(", ")}.`),this.manifestCache.set(e,s),s},o=async()=>{const s=await n(),i=(0,ot.generateSnapshotFromManifest)(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}};Ke.SnapshotHandler=qi;Ke.getGlobalRemoteInfo=tn;var rn={};const st=M,Gi=oe,A=q,Xt=Pe,Ui=ve,it=_e,xt=Ae,Wi=ke;let pe=Y;var Bi=class{constructor(e){this.hooks=new Wi.PluginSystem({beforeRegisterShare:new it.SyncWaterfallHook("beforeRegisterShare"),afterResolve:new xt.AsyncWaterfallHook("afterResolve"),beforeLoadShare:new xt.AsyncWaterfallHook("beforeLoadShare"),loadShare:new Ui.AsyncHook,resolveShare:new it.SyncWaterfallHook("resolveShare"),initContainerShareScopeMap:new it.SyncWaterfallHook("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=A.formatShareConfigs(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var a;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s}),(a=this.shareScopeMap[i])!=null&&a[o]||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&await Promise.all(n.scope.map(async a=>{await Promise.all(this.initializeSharing(a,{strategy:n.strategy}))}));const{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});st.assert(o,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const{shared:s,useTreesShaking:i}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(s){const a=A.directShare(s,i);if(a.lib)return A.addUseIn(a,r.options.name),a.lib;if(a.loading&&!a.loaded){const c=await a.loading;return a.loaded=!0,a.lib||(a.lib=c),A.addUseIn(a,r.options.name),c}else{const l=(async()=>{const u=await a.get();return A.addUseIn(a,r.options.name),a.loaded=!0,a.lib=u,u})();return this.setShared({pkgName:e,loaded:!1,shared:s,from:r.options.name,lib:null,loading:l,treeShaking:i?a:void 0}),l}}else{if(t!=null&&t.customShareInfo)return!1;const a=A.shouldUseTreeShaking(o.treeShaking),c=A.directShare(o,a),u=(async()=>{const d=await c.get();c.lib=d,c.loaded=!0,A.addUseIn(c,r.options.name);const{shared:f,useTreesShaking:h}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(f){const m=A.directShare(f,h);m.lib=d,m.loaded=!0,f.from=o.from}return d})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:u,treeShaking:a?c:void 0}),u}}initializeSharing(e=Gi.DEFAULT_SCOPE,t){const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy;let s=t==null?void 0:t.initScope;const i=[];if(n!=="build"){const{initTokens:f}=this;s||(s=[]);let h=f[e];if(h||(h=f[e]={from:this.host.name}),s.indexOf(h)>=0)return i;s.push(h)}const a=this.shareScopeMap,c=r.options.name;a[e]||(a[e]={});const l=a[e],u=(f,h)=>{var I;const{version:m,eager:_}=h;l[f]=l[f]||{};const g=l[f],p=g[m]&&A.directShare(g[m]),E=!!(p&&("eager"in p&&p.eager||"shareConfig"in p&&((I=p.shareConfig)!=null&&I.eager)));(!p||p.strategy!=="loaded-first"&&!p.loaded&&(!_!=!E?_:c>g[m].from))&&(g[m]=h)},d=async f=>{const{module:h}=await r.remoteHandler.getRemoteModuleAndOptions({id:f});let m;try{m=await h.getEntry()}catch(_){if(m=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:f,error:_,from:"runtime",lifecycle:"beforeLoadShare",origin:r}),!m)return}finally{m!=null&&m.init&&!h.initing&&(h.remoteEntryExports=m,await h.init(void 0,void 0,s))}};return Object.keys(r.options.shared).forEach(f=>{r.options.shared[f].forEach(h=>{h.scope.includes(e)&&u(f,h)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(f=>{f.shareScope===e&&i.push(d(f.name))}),i}loadShareSync(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&n.scope.forEach(i=>{this.initializeSharing(i,{strategy:n.strategy})});const{shared:o,useTreesShaking:s}=A.getRegisteredShare(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(o){if(typeof o.lib=="function")return A.addUseIn(o,r.options.name),o.loaded||(o.loaded=!0,o.from===r.options.name&&(n.loaded=!0)),o.lib;if(typeof o.get=="function"){const i=o.get();if(!(i instanceof Promise))return A.addUseIn(o,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:o}),i}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){const i=n.get();return i instanceof Promise&&st.error((t==null?void 0:t.from)==="build"?pe.RUNTIME_005:pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options)),n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}st.error(pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options))}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...u}=t,d=Array.isArray(l)?l:[l],f=h=>{const m=(g,p,E)=>{E&&!g[p]&&(g[p]=E)},_=a?h.treeShaking:h;m(_,"loaded",s),m(_,"loading",o),m(_,"get",i)};d.forEach(h=>{this.shareScopeMap[h]||(this.shareScopeMap[h]={}),this.shareScopeMap[h][e]||(this.shareScopeMap[h][e]={}),this.shareScopeMap[h][e][c]||(this.shareScopeMap[h][e][c]={version:c,scope:[h],...u,lib:n});const m=this.shareScopeMap[h][e][c];f(m),r&&m.from!==r&&(m.from=r)})}_setGlobalShareScopeMap(e){const t=A.getGlobalShareScope(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}};rn.SharedHandler=Bi;var nn={};const Le=M,G=b,Kt=oe,ji=q,Vi=he,at=K,Xi=Pe,Yt=Z,xi=Xe,Ki=me,ie=ve,zt=_e,Yi=Ae,zi=ke,Ji=Ke;let lt=D,Jt=Y;var Zi=class{constructor(e){this.hooks=new zi.PluginSystem({beforeRegisterRemote:new zt.SyncWaterfallHook("beforeRegisterRemote"),registerRemote:new zt.SyncWaterfallHook("registerRemote"),beforeRequest:new Yi.AsyncWaterfallHook("beforeRequest"),onLoad:new ie.AsyncHook("onLoad"),handlePreloadModule:new Ki.SyncHook("handlePreloadModule"),errorLoadRemote:new ie.AsyncHook("errorLoadRemote"),beforePreloadRemote:new ie.AsyncHook("beforePreloadRemote"),generatePreloadAssets:new ie.AsyncHook("generatePreloadAssets"),afterPreloadRemote:new ie.AsyncHook,loadEntry:new ie.AsyncHook}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this;try{const{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:s,remoteMatchInfo:i}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:a,remote:c,expose:l,id:u,remoteSnapshot:d}=i,f=await o.get(u,l,t,d),h=await this.hooks.lifecycle.onLoad.emit({id:u,pkgNameOrAlias:a,expose:l,exposeModule:n?f:void 0,exposeModuleFactory:n?void 0:f,remote:c,options:s,moduleInstance:o,origin:r});return this.setIdToRemoteMap(e,i),typeof h=="function"?h:f}catch(n){const{from:o="runtime"}=t||{from:"runtime"},s=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:o,lifecycle:"onLoad",origin:r});if(!s)throw n;return s}}async preloadRemote(e){const{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const r=Yt.formatPreloadArgs(t.options.remotes,e);await Promise.all(r.map(async n=>{const{remote:o}=n,s=at.getRemoteInfo(o),{globalSnapshot:i,remoteSnapshot:a}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:o}),c=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:n,remote:o,remoteInfo:s,globalSnapshot:i,remoteSnapshot:a});c&&Yt.preloadAssets(s,t,c)}))}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(h){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:h,lifecycle:"beforeRequest"}),!n)throw h}const{id:o}=n,s=Vi.matchRemoteWithNameAndExpose(t.options.remotes,o);s||Le.error(Jt.RUNTIME_004,Jt.runtimeDescMap,{hostName:t.options.name,requestId:o},void 0,Xi.optionsToMFContext(t.options));const{remote:i}=s,a=at.getRemoteInfo(i),c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:u}=c;Le.assert(l&&u,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let d=t.moduleCache.get(l.name);const f={host:t,remoteInfo:a};return d||(d=new xi.Module(f),t.moduleCache.set(l.name,d)),{module:d,moduleOptions:f,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});Le.assert(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&<.isBrowserEnvValue&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=Kt.DEFAULT_SCOPE),e.type||(e.type=Kt.DEFAULT_REMOTE_TYPE)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),(0,lt.warn)(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(i=>i.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=r.moduleCache.get(e.name);if(s){const i=s.remoteInfo,a=i.entryGlobalName;G.CurrentGlobal[a]&&((t=Object.getOwnPropertyDescriptor(G.CurrentGlobal,a))!=null&&t.configurable?delete G.CurrentGlobal[a]:G.CurrentGlobal[a]=void 0);const c=at.getRemoteEntryUniqueKey(s.remoteInfo);G.globalLoading[c]&&delete G.globalLoading[c],r.snapshotHandler.manifestCache.delete(i.entry);let l=i.buildVersion?(0,lt.composeKeyWithSeparator)(i.name,i.buildVersion):i.name;const u=G.CurrentGlobal.__FEDERATION__.__INSTANCES__.findIndex(f=>i.buildVersion?f.options.id===l:f.name===l);if(u!==-1){const f=G.CurrentGlobal.__FEDERATION__.__INSTANCES__[u];l=f.options.id||l;const h=ji.getGlobalShareScope();let m=!0;const _=[];Object.keys(h).forEach(g=>{const p=h[g];p&&Object.keys(p).forEach(E=>{const I=p[E];I&&Object.keys(I).forEach(O=>{const y=I[O];y&&Object.keys(y).forEach(N=>{const R=y[N];R&&typeof R=="object"&&R.from===i.name&&(R.loaded||R.loading?(R.useIn=R.useIn.filter(v=>v!==i.name),R.useIn.length?m=!1:_.push([g,E,O,N])):_.push([g,E,O,N]))})})})}),m&&(f.shareScopeMap={},delete h[l]),_.forEach(([g,p,E,I])=>{var O,y,N;(N=(y=(O=h[g])==null?void 0:O[p])==null?void 0:y[E])==null||delete N[I]}),G.CurrentGlobal.__FEDERATION__.__INSTANCES__.splice(u,1)}const{hostGlobalSnapshot:d}=Ji.getGlobalRemoteInfo(e,r);if(d){const f=d&&"remotesInfo"in d&&d.remotesInfo&&G.getInfoWithoutType(d.remotesInfo,e.name).key;f&&(delete d.remotesInfo[f],G.Global.__FEDERATION__.__MANIFEST_LOADING__[f]&&delete G.Global.__FEDERATION__.__MANIFEST_LOADING__[f])}r.moduleCache.delete(e.name)}}catch(r){Le.logger.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};nn.RemoteHandler=Zi;const Qi=M,ea=oe,ta=q,ra=Vr,na=Xr,oa=K,sa=Xe,z=me,ct=ve,ia=_e,Zt=Ae,ut=ke,aa=xe,la=Qr,ca=Ke,ua=rn,fa=nn;let da=D,ft=Y;const ha=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0;var ma=class{constructor(e){this.hooks=new ut.PluginSystem({beforeInit:new ia.SyncWaterfallHook("beforeInit"),init:new z.SyncHook,beforeInitContainer:new Zt.AsyncWaterfallHook("beforeInitContainer"),initContainer:new Zt.AsyncWaterfallHook("initContainer")}),this.version="2.2.2",this.moduleCache=new Map,this.loaderHook=new ut.PluginSystem({getModuleInfo:new z.SyncHook,createScript:new z.SyncHook,createLink:new z.SyncHook,fetch:new ct.AsyncHook,loadEntryError:new ct.AsyncHook,getModuleFactory:new ct.AsyncHook}),this.bridgeHook=new ut.PluginSystem({beforeBridgeRender:new z.SyncHook,afterBridgeRender:new z.SyncHook,beforeBridgeDestroy:new z.SyncHook,afterBridgeDestroy:new z.SyncHook});const t=ha?[aa.snapshotPlugin(),la.generatePreloadAssetsPlugin()]:[],r={id:ra.getBuilderId(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:da.isBrowserEnvValue};this.name=e.name,this.options=r,this.snapshotHandler=new ca.SnapshotHandler(this),this.sharedHandler=new ua.SharedHandler(this),this.remoteHandler=new fa.RemoteHandler(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&Qi.error((0,ft.getShortErrorMsg)(ft.RUNTIME_010,ft.runtimeDescMap)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=ea.DEFAULT_SCOPE,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){const n=oa.getRemoteInfo({name:e,entry:t}),o=new sa.Module({host:this,remoteInfo:n});return o.remoteEntryExports=r,this.moduleCache.set(e,o),o}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const{allShareInfos:r}=ta.formatShareConfigs(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){const t=na.registerPlugins(e,this);this.options.plugins=this.options.plugins.reduce((r,n)=>(n&&r&&!r.find(o=>o.name===n.name)&&r.push(n),r),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};Yr.ModuleFederation=ma;var on={},sn={},Qt=Object.defineProperty,_a=(e,t)=>{let r={};for(var n in e)Qt(r,n,{get:e[n],enumerable:!0});return t||Qt(r,Symbol.toStringTag,{value:"Module"}),r};sn.__exportAll=_a;(function(e){var r=sn.__exportAll({});Object.defineProperty(e,"type_exports",{enumerable:!0,get:function(){return r}})})(on);(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=M,r=$,n=b,o=Pt,s=q,i=he,a=K,c=xr,l=Xe,u=Yr,d=on;let f=D;const h=c.default;e.CurrentGlobal=n.CurrentGlobal,e.Global=n.Global,e.Module=l.Module,e.ModuleFederation=u.ModuleFederation,e.addGlobalSnapshot=n.addGlobalSnapshot,e.assert=t.assert,e.error=t.error,e.getGlobalFederationConstructor=n.getGlobalFederationConstructor,e.getGlobalSnapshot=n.getGlobalSnapshot,e.getInfoWithoutType=n.getInfoWithoutType,e.getRegisteredShare=s.getRegisteredShare,e.getRemoteEntry=a.getRemoteEntry,e.getRemoteInfo=a.getRemoteInfo,e.helpers=h,e.isStaticResourcesEqual=r.isStaticResourcesEqual,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return f.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return f.loadScriptNode}}),e.matchRemoteWithNameAndExpose=i.matchRemoteWithNameAndExpose,e.registerGlobalPlugins=n.registerGlobalPlugins,e.resetFederationGlobalInfo=n.resetFederationGlobalInfo,e.safeWrapper=r.safeWrapper,e.satisfy=o.satisfy,e.setGlobalFederationConstructor=n.setGlobalFederationConstructor,e.setGlobalFederationInstance=n.setGlobalFederationInstance,Object.defineProperty(e,"types",{enumerable:!0,get:function(){return d.type_exports}})})(Tt);let ga=Tt;function pa(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function ya(e,t){const r=pa();return ga.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(n=>!!(r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&t&&n.options.version===t))}ar.getGlobalFederationInstance=ya;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ar;let r=Tt,n=Y;function o(_){const g=new((0,r.getGlobalFederationConstructor)()||r.ModuleFederation)(_);return(0,r.setGlobalFederationInstance)(g),g}let s=null;function i(_){const g=t.getGlobalFederationInstance(_.name,_.version);return g?(g.initOptions(_),s||(s=g),g):(s=o(_),s)}function a(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadRemote.apply(s,_)}function c(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShare.apply(s,_)}function l(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShareSync.apply(s,_)}function u(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.preloadRemote.apply(s,_)}function d(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerRemotes.apply(s,_)}function f(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerPlugins.apply(s,_)}function h(){return s}function m(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerShared.apply(s,_)}(0,r.setGlobalFederationConstructor)(r.ModuleFederation),Object.defineProperty(e,"Module",{enumerable:!0,get:function(){return r.Module}}),e.ModuleFederation=r.ModuleFederation,e.createInstance=o,e.getInstance=h,Object.defineProperty(e,"getRemoteEntry",{enumerable:!0,get:function(){return r.getRemoteEntry}}),Object.defineProperty(e,"getRemoteInfo",{enumerable:!0,get:function(){return r.getRemoteInfo}}),e.init=i,e.loadRemote=a,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return r.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return r.loadScriptNode}}),e.loadShare=c,e.loadShareSync=l,e.preloadRemote=u,Object.defineProperty(e,"registerGlobalPlugins",{enumerable:!0,get:function(){return r.registerGlobalPlugins}}),e.registerPlugins=f,e.registerRemotes=d,e.registerShared=m})(ir);const an="__mf_init____mf__virtual/iobroker_javascript__mf_v__runtimeInit__mf_v__.js__";let Rt=globalThis[an];if(!Rt){let e,t;const r=new Promise((n,o)=>{e=n,t=o});Rt=globalThis[an]={initPromise:r,initResolve:e,initReject:t},typeof window>"u"&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}const Ea=Rt.initResolve,er={},tr="default",rr="iobroker_javascript";let nr,or;async function Sa(){return nr??=sr(()=>import("./localSharedImportMap-W-vnZT9_.js"),__vite__mapDeps([0,1]),import.meta.url),nr}async function ba(){return or??=sr(()=>import("./virtualExposes-BPsCufin.js"),[],import.meta.url).then(e=>e.default??e),or}async function Ta(e={},t=[]){const{usedShared:r,usedRemotes:n}=await Sa(),o=ir.init({name:rr,remotes:n,shared:r,plugins:[],shareStrategy:"version-first"});var s=er[tr];if(s||(s=er[tr]={from:rr}),!(t.indexOf(s)>=0)){t.push(s),o.initShareScopeMap("default",e),Ea(o);try{await Promise.all(await o.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(i){console.error(i)}return o}}async function Ia(e){const t=await ba();if(!(e in t))throw new Error(`Module ${e} does not exist in container.`);return t[e]().then(r=>()=>r)}export{ir as d,Ia as g,Ta as i}; + ${(0,mi.safeToString)(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t,r){const n=await this.getEntry();if(this.inited)return n;if(this.initPromise)return await this.initPromise,n;this.initing=!0,this.initPromise=(async()=>{const{remoteEntryInitOptions:o,shareScope:s,initScope:i}=_i(this.remoteInfo,this.host.shareScopeMap,r),a=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:s,remoteEntryInitOptions:o,initScope:i,remoteInfo:this.remoteInfo,origin:this.host});typeof(n==null?void 0:n.init)>"u"&&Ze.error(Ut.RUNTIME_002,Ut.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,hi.optionsToMFContext(this.host.options)),await n.init(a.shareScope,a.initScope,a.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...a,id:e,remoteSnapshot:t,remoteEntryExports:n}),this.inited=!0})();try{await this.initPromise}finally{this.initing=!1,this.initPromise=void 0}return n}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n);this.lib=s;let i;i=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo}),i||(i=await s.get(t)),Ze.assert(i,`${Gt.getFMId(this.remoteInfo)} remote don't export ${t}.`);const a=Gt.processModuleAlias(this.remoteInfo.name,t),c=this.wraperFactory(i,a);return o?await c():c}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return e instanceof Promise?async()=>{const n=await e();return r(n,t),n}:()=>{const n=e();return r(n,t),n}}};Xe.Module=gi;var Yr={},me={},pi=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{t=r(...e)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}};me.SyncHook=pi;var ve={};const yi=me;var Ei=class extends yi.SyncHook{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n0){let r=0;const n=s=>(et.warn(s),this.onerror(s),e),o=s=>{if(Ii.checkReturnData(e,s)){if(e=s,r{const s=e[o];s&&this.lifecycle[o].on(s)}))}removePlugin(e){we.assert(e,"A name is required.");const t=this.registerPlugins[e];we.assert(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(r=>{r!=="name"&&this.lifecycle[r].remove(t[r])})}};ke.PluginSystem=Mi;var xe={};const Pi=M,St=$,vi=Z;let Wt=D,Bt=Y;function Zr(e,t){const r=St.getRemoteEntryInfoFromSnapshot(t);r.url||Pi.error(Bt.RUNTIME_011,Bt.runtimeDescMap,{remoteName:e.name});let n=(0,Wt.getResourceUrl)(t,r.url);!Wt.isBrowserEnvValue&&!n.startsWith("http")&&(n=`https:${n}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function Ai(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!St.isRemoteInfoWithEntry(t)||!St.isPureRemoteEntry(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:i});Zr(s,a);const l={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},u=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:l,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});return u&&vi.preloadAssets(s,o,u,!1),{...e,remoteSnapshot:a}}return e}}}xe.assignRemoteInfo=Zr;xe.snapshotPlugin=Ai;var Qr={};const Ne=$,bt=b,ki=q,jt=Z,Oi=xe;let je=D;function wi(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function en(e,t,r,n,o={},s){const{value:i}=bt.getInfoWithoutType(e,Ne.getFMId(t)),a=s||i;if(a&&!(0,je.isManifestProvider)(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const u=wi(l),d=a.remotesInfo[l];en(e,{name:u.name,version:d.matchedVersion},r,!1,o,void 0)}}}const tt=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function Fi(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:u}=e,{preloadConfig:d}=t,{depsRemote:f}=d;if(en(n,r,(m,_,g)=>{var N;let p;if(g)p=d;else if(Array.isArray(f)){const R=f.find(v=>v.nameOrAlias===_.name||v.nameOrAlias===_.alias);if(!R)return;p=jt.defaultPreloadArgs(R)}else if(f===!0)p=d;else return;const E=(0,je.getResourceUrl)(m,Ne.getRemoteEntryInfoFromSnapshot(m).url);E&&a.push({name:_.name,moduleInfo:{name:_.name,entry:E,type:"remoteEntryType"in m?m.remoteEntryType:"global",entryGlobalName:"globalName"in m?m.globalName:_.name,shareScope:"",version:"version"in m?m.version:void 0},url:E});let I="modules"in m?m.modules:[];const O=jt.normalizePreloadExposes(p.exposes);O.length&&"modules"in m&&(I=(N=m==null?void 0:m.modules)==null?void 0:N.reduce((R,v)=>((O==null?void 0:O.indexOf(v.moduleName))!==-1&&R.push(v),R),[]));function y(R){const v=R.map(B=>(0,je.getResourceUrl)(m,B));return p.filter?v.filter(p.filter):v}if(I){const R=I.length;for(let v=0;v0){const m=(_,g)=>{const{shared:p}=ki.getRegisteredShare(e.shareScopeMap,g.sharedName,_,e.sharedHandler.hooks.lifecycle.resolveShare)||{};p&&typeof p.lib=="function"&&(g.assets.js.sync.forEach(E=>{c.add(E)}),g.assets.css.sync.forEach(E=>{l.add(E)}))};o.shared.forEach(_=>{var E;const g=(E=u.shared)==null?void 0:E[_.sharedName];if(!g)return;const p=_.version?g.find(I=>I.version===_.version):g;p&&Ne.arrayOptions(p).forEach(I=>{m(I,_)})})}const h=i.filter(m=>!c.has(m)&&!tt("script",m));return{cssAssets:s.filter(m=>!l.has(m)&&!tt("link",m)),jsAssetsWithoutEntry:h,entryAssets:a.filter(m=>!tt("script",m.url))}}const Li=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return je.isBrowserEnvValue?Ne.isRemoteInfoWithEntry(o)&&Ne.isPureRemoteEntry(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(Oi.assignRemoteInfo(n,i),Fi(t,r,n,s,i)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};Qr.generatePreloadAssetsPlugin=Li;var Ke={};const rt=M,Di=$,U=b,Vt=Pe,Hi=ve,nt=Ae,Ci=ke;let ot=D,Fe=Y;function tn(e,t){const r=U.getGlobalSnapshotInfoByModuleInfo({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&U.getInfoWithoutType(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:"version"in e?e.version:void 0})}}var qi=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new Ci.PluginSystem({beforeLoadRemoteSnapshot:new Hi.AsyncHook("beforeLoadRemoteSnapshot"),loadSnapshot:new nt.AsyncWaterfallHook("loadGlobalSnapshot"),loadRemoteSnapshot:new nt.AsyncWaterfallHook("loadRemoteSnapshot"),afterLoadSnapshot:new nt.AsyncWaterfallHook("afterLoadSnapshot")}),this.manifestLoading=U.Global.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,expose:r}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e});let o=U.getGlobalSnapshotInfoByModuleInfo({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},U.addGlobalSnapshot({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!U.getInfoWithoutType(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let u,d;if(c)if((0,ot.isManifestProvider)(c)){const f=ot.isBrowserEnvValue?c.remoteEntry:c.ssrRemoteEntry||c.remoteEntry||"",h=await this.getManifestJson(f,e,{}),m=U.setGlobalSnapshotInfoByModuleInfo({...e,entry:f},h);u=h,d=m}else{const{remoteSnapshot:f}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});u=f,d=l}else if(Di.isRemoteInfoWithEntry(e)){const f=await this.getManifestJson(e.entry,e,{}),h=U.setGlobalSnapshotInfoByModuleInfo(e,f),{remoteSnapshot:m}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:f,from:"global"});u=m,d=h}else rt.error(Fe.RUNTIME_007,Fe.runtimeDescMap,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,Vt.optionsToMFContext(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:u}),{remoteSnapshot:u,globalSnapshot:d}}getGlobalRemoteInfo(e){return tn(e,this.HostInstance)}async getManifestJson(e,t,r){const n=async()=>{let s=this.manifestCache.get(e);if(s)return s;try{let i=await this.loaderHook.lifecycle.fetch.emit(e,{});(!i||!(i instanceof Response))&&(i=await fetch(e,{})),s=await i.json()}catch(i){s=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}),s||(delete this.manifestLoading[e],rt.error(Fe.RUNTIME_003,Fe.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${i}`,Vt.optionsToMFContext(this.HostInstance.options)))}return rt.assert(s.metaData&&s.exposes&&s.shared,`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${[!s.metaData&&"metaData",!s.exposes&&"exposes",!s.shared&&"shared"].filter(Boolean).join(", ")}.`),this.manifestCache.set(e,s),s},o=async()=>{const s=await n(),i=(0,ot.generateSnapshotFromManifest)(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}};Ke.SnapshotHandler=qi;Ke.getGlobalRemoteInfo=tn;var rn={};const st=M,Gi=oe,A=q,Xt=Pe,Ui=ve,it=_e,xt=Ae,Wi=ke;let pe=Y;var Bi=class{constructor(e){this.hooks=new Wi.PluginSystem({beforeRegisterShare:new it.SyncWaterfallHook("beforeRegisterShare"),afterResolve:new xt.AsyncWaterfallHook("afterResolve"),beforeLoadShare:new xt.AsyncWaterfallHook("beforeLoadShare"),loadShare:new Ui.AsyncHook,resolveShare:new it.SyncWaterfallHook("resolveShare"),initContainerShareScopeMap:new it.SyncWaterfallHook("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=A.formatShareConfigs(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var a;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s}),(a=this.shareScopeMap[i])!=null&&a[o]||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&await Promise.all(n.scope.map(async a=>{await Promise.all(this.initializeSharing(a,{strategy:n.strategy}))}));const{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});st.assert(o,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const{shared:s,useTreesShaking:i}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(s){const a=A.directShare(s,i);if(a.lib)return A.addUseIn(a,r.options.name),a.lib;if(a.loading&&!a.loaded){const c=await a.loading;return a.loaded=!0,a.lib||(a.lib=c),A.addUseIn(a,r.options.name),c}else{const l=(async()=>{const u=await a.get();return A.addUseIn(a,r.options.name),a.loaded=!0,a.lib=u,u})();return this.setShared({pkgName:e,loaded:!1,shared:s,from:r.options.name,lib:null,loading:l,treeShaking:i?a:void 0}),l}}else{if(t!=null&&t.customShareInfo)return!1;const a=A.shouldUseTreeShaking(o.treeShaking),c=A.directShare(o,a),u=(async()=>{const d=await c.get();c.lib=d,c.loaded=!0,A.addUseIn(c,r.options.name);const{shared:f,useTreesShaking:h}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(f){const m=A.directShare(f,h);m.lib=d,m.loaded=!0,f.from=o.from}return d})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:u,treeShaking:a?c:void 0}),u}}initializeSharing(e=Gi.DEFAULT_SCOPE,t){const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy;let s=t==null?void 0:t.initScope;const i=[];if(n!=="build"){const{initTokens:f}=this;s||(s=[]);let h=f[e];if(h||(h=f[e]={from:this.host.name}),s.indexOf(h)>=0)return i;s.push(h)}const a=this.shareScopeMap,c=r.options.name;a[e]||(a[e]={});const l=a[e],u=(f,h)=>{var I;const{version:m,eager:_}=h;l[f]=l[f]||{};const g=l[f],p=g[m]&&A.directShare(g[m]),E=!!(p&&("eager"in p&&p.eager||"shareConfig"in p&&((I=p.shareConfig)!=null&&I.eager)));(!p||p.strategy!=="loaded-first"&&!p.loaded&&(!_!=!E?_:c>g[m].from))&&(g[m]=h)},d=async f=>{const{module:h}=await r.remoteHandler.getRemoteModuleAndOptions({id:f});let m;try{m=await h.getEntry()}catch(_){if(m=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:f,error:_,from:"runtime",lifecycle:"beforeLoadShare",origin:r}),!m)return}finally{m!=null&&m.init&&!h.initing&&(h.remoteEntryExports=m,await h.init(void 0,void 0,s))}};return Object.keys(r.options.shared).forEach(f=>{r.options.shared[f].forEach(h=>{h.scope.includes(e)&&u(f,h)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(f=>{f.shareScope===e&&i.push(d(f.name))}),i}loadShareSync(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&n.scope.forEach(i=>{this.initializeSharing(i,{strategy:n.strategy})});const{shared:o,useTreesShaking:s}=A.getRegisteredShare(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(o){if(typeof o.lib=="function")return A.addUseIn(o,r.options.name),o.loaded||(o.loaded=!0,o.from===r.options.name&&(n.loaded=!0)),o.lib;if(typeof o.get=="function"){const i=o.get();if(!(i instanceof Promise))return A.addUseIn(o,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:o}),i}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){const i=n.get();return i instanceof Promise&&st.error((t==null?void 0:t.from)==="build"?pe.RUNTIME_005:pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options)),n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}st.error(pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options))}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...u}=t,d=Array.isArray(l)?l:[l],f=h=>{const m=(g,p,E)=>{E&&!g[p]&&(g[p]=E)},_=a?h.treeShaking:h;m(_,"loaded",s),m(_,"loading",o),m(_,"get",i)};d.forEach(h=>{this.shareScopeMap[h]||(this.shareScopeMap[h]={}),this.shareScopeMap[h][e]||(this.shareScopeMap[h][e]={}),this.shareScopeMap[h][e][c]||(this.shareScopeMap[h][e][c]={version:c,scope:[h],...u,lib:n});const m=this.shareScopeMap[h][e][c];f(m),r&&m.from!==r&&(m.from=r)})}_setGlobalShareScopeMap(e){const t=A.getGlobalShareScope(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}};rn.SharedHandler=Bi;var nn={};const Le=M,G=b,Kt=oe,ji=q,Vi=he,at=K,Xi=Pe,Yt=Z,xi=Xe,Ki=me,ie=ve,zt=_e,Yi=Ae,zi=ke,Ji=Ke;let lt=D,Jt=Y;var Zi=class{constructor(e){this.hooks=new zi.PluginSystem({beforeRegisterRemote:new zt.SyncWaterfallHook("beforeRegisterRemote"),registerRemote:new zt.SyncWaterfallHook("registerRemote"),beforeRequest:new Yi.AsyncWaterfallHook("beforeRequest"),onLoad:new ie.AsyncHook("onLoad"),handlePreloadModule:new Ki.SyncHook("handlePreloadModule"),errorLoadRemote:new ie.AsyncHook("errorLoadRemote"),beforePreloadRemote:new ie.AsyncHook("beforePreloadRemote"),generatePreloadAssets:new ie.AsyncHook("generatePreloadAssets"),afterPreloadRemote:new ie.AsyncHook,loadEntry:new ie.AsyncHook}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this;try{const{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:s,remoteMatchInfo:i}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:a,remote:c,expose:l,id:u,remoteSnapshot:d}=i,f=await o.get(u,l,t,d),h=await this.hooks.lifecycle.onLoad.emit({id:u,pkgNameOrAlias:a,expose:l,exposeModule:n?f:void 0,exposeModuleFactory:n?void 0:f,remote:c,options:s,moduleInstance:o,origin:r});return this.setIdToRemoteMap(e,i),typeof h=="function"?h:f}catch(n){const{from:o="runtime"}=t||{from:"runtime"},s=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:o,lifecycle:"onLoad",origin:r});if(!s)throw n;return s}}async preloadRemote(e){const{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const r=Yt.formatPreloadArgs(t.options.remotes,e);await Promise.all(r.map(async n=>{const{remote:o}=n,s=at.getRemoteInfo(o),{globalSnapshot:i,remoteSnapshot:a}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:o}),c=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:n,remote:o,remoteInfo:s,globalSnapshot:i,remoteSnapshot:a});c&&Yt.preloadAssets(s,t,c)}))}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(h){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:h,lifecycle:"beforeRequest"}),!n)throw h}const{id:o}=n,s=Vi.matchRemoteWithNameAndExpose(t.options.remotes,o);s||Le.error(Jt.RUNTIME_004,Jt.runtimeDescMap,{hostName:t.options.name,requestId:o},void 0,Xi.optionsToMFContext(t.options));const{remote:i}=s,a=at.getRemoteInfo(i),c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:u}=c;Le.assert(l&&u,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let d=t.moduleCache.get(l.name);const f={host:t,remoteInfo:a};return d||(d=new xi.Module(f),t.moduleCache.set(l.name,d)),{module:d,moduleOptions:f,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});Le.assert(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&<.isBrowserEnvValue&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=Kt.DEFAULT_SCOPE),e.type||(e.type=Kt.DEFAULT_REMOTE_TYPE)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),(0,lt.warn)(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(i=>i.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=r.moduleCache.get(e.name);if(s){const i=s.remoteInfo,a=i.entryGlobalName;G.CurrentGlobal[a]&&((t=Object.getOwnPropertyDescriptor(G.CurrentGlobal,a))!=null&&t.configurable?delete G.CurrentGlobal[a]:G.CurrentGlobal[a]=void 0);const c=at.getRemoteEntryUniqueKey(s.remoteInfo);G.globalLoading[c]&&delete G.globalLoading[c],r.snapshotHandler.manifestCache.delete(i.entry);let l=i.buildVersion?(0,lt.composeKeyWithSeparator)(i.name,i.buildVersion):i.name;const u=G.CurrentGlobal.__FEDERATION__.__INSTANCES__.findIndex(f=>i.buildVersion?f.options.id===l:f.name===l);if(u!==-1){const f=G.CurrentGlobal.__FEDERATION__.__INSTANCES__[u];l=f.options.id||l;const h=ji.getGlobalShareScope();let m=!0;const _=[];Object.keys(h).forEach(g=>{const p=h[g];p&&Object.keys(p).forEach(E=>{const I=p[E];I&&Object.keys(I).forEach(O=>{const y=I[O];y&&Object.keys(y).forEach(N=>{const R=y[N];R&&typeof R=="object"&&R.from===i.name&&(R.loaded||R.loading?(R.useIn=R.useIn.filter(v=>v!==i.name),R.useIn.length?m=!1:_.push([g,E,O,N])):_.push([g,E,O,N]))})})})}),m&&(f.shareScopeMap={},delete h[l]),_.forEach(([g,p,E,I])=>{var O,y,N;(N=(y=(O=h[g])==null?void 0:O[p])==null?void 0:y[E])==null||delete N[I]}),G.CurrentGlobal.__FEDERATION__.__INSTANCES__.splice(u,1)}const{hostGlobalSnapshot:d}=Ji.getGlobalRemoteInfo(e,r);if(d){const f=d&&"remotesInfo"in d&&d.remotesInfo&&G.getInfoWithoutType(d.remotesInfo,e.name).key;f&&(delete d.remotesInfo[f],G.Global.__FEDERATION__.__MANIFEST_LOADING__[f]&&delete G.Global.__FEDERATION__.__MANIFEST_LOADING__[f])}r.moduleCache.delete(e.name)}}catch(r){Le.logger.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};nn.RemoteHandler=Zi;const Qi=M,ea=oe,ta=q,ra=Vr,na=Xr,oa=K,sa=Xe,z=me,ct=ve,ia=_e,Zt=Ae,ut=ke,aa=xe,la=Qr,ca=Ke,ua=rn,fa=nn;let da=D,ft=Y;const ha=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0;var ma=class{constructor(e){this.hooks=new ut.PluginSystem({beforeInit:new ia.SyncWaterfallHook("beforeInit"),init:new z.SyncHook,beforeInitContainer:new Zt.AsyncWaterfallHook("beforeInitContainer"),initContainer:new Zt.AsyncWaterfallHook("initContainer")}),this.version="2.2.2",this.moduleCache=new Map,this.loaderHook=new ut.PluginSystem({getModuleInfo:new z.SyncHook,createScript:new z.SyncHook,createLink:new z.SyncHook,fetch:new ct.AsyncHook,loadEntryError:new ct.AsyncHook,getModuleFactory:new ct.AsyncHook}),this.bridgeHook=new ut.PluginSystem({beforeBridgeRender:new z.SyncHook,afterBridgeRender:new z.SyncHook,beforeBridgeDestroy:new z.SyncHook,afterBridgeDestroy:new z.SyncHook});const t=ha?[aa.snapshotPlugin(),la.generatePreloadAssetsPlugin()]:[],r={id:ra.getBuilderId(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:da.isBrowserEnvValue};this.name=e.name,this.options=r,this.snapshotHandler=new ca.SnapshotHandler(this),this.sharedHandler=new ua.SharedHandler(this),this.remoteHandler=new fa.RemoteHandler(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&Qi.error((0,ft.getShortErrorMsg)(ft.RUNTIME_010,ft.runtimeDescMap)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=ea.DEFAULT_SCOPE,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){const n=oa.getRemoteInfo({name:e,entry:t}),o=new sa.Module({host:this,remoteInfo:n});return o.remoteEntryExports=r,this.moduleCache.set(e,o),o}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const{allShareInfos:r}=ta.formatShareConfigs(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){const t=na.registerPlugins(e,this);this.options.plugins=this.options.plugins.reduce((r,n)=>(n&&r&&!r.find(o=>o.name===n.name)&&r.push(n),r),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};Yr.ModuleFederation=ma;var on={},sn={},Qt=Object.defineProperty,_a=(e,t)=>{let r={};for(var n in e)Qt(r,n,{get:e[n],enumerable:!0});return t||Qt(r,Symbol.toStringTag,{value:"Module"}),r};sn.__exportAll=_a;(function(e){var r=sn.__exportAll({});Object.defineProperty(e,"type_exports",{enumerable:!0,get:function(){return r}})})(on);(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=M,r=$,n=b,o=Pt,s=q,i=he,a=K,c=xr,l=Xe,u=Yr,d=on;let f=D;const h=c.default;e.CurrentGlobal=n.CurrentGlobal,e.Global=n.Global,e.Module=l.Module,e.ModuleFederation=u.ModuleFederation,e.addGlobalSnapshot=n.addGlobalSnapshot,e.assert=t.assert,e.error=t.error,e.getGlobalFederationConstructor=n.getGlobalFederationConstructor,e.getGlobalSnapshot=n.getGlobalSnapshot,e.getInfoWithoutType=n.getInfoWithoutType,e.getRegisteredShare=s.getRegisteredShare,e.getRemoteEntry=a.getRemoteEntry,e.getRemoteInfo=a.getRemoteInfo,e.helpers=h,e.isStaticResourcesEqual=r.isStaticResourcesEqual,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return f.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return f.loadScriptNode}}),e.matchRemoteWithNameAndExpose=i.matchRemoteWithNameAndExpose,e.registerGlobalPlugins=n.registerGlobalPlugins,e.resetFederationGlobalInfo=n.resetFederationGlobalInfo,e.safeWrapper=r.safeWrapper,e.satisfy=o.satisfy,e.setGlobalFederationConstructor=n.setGlobalFederationConstructor,e.setGlobalFederationInstance=n.setGlobalFederationInstance,Object.defineProperty(e,"types",{enumerable:!0,get:function(){return d.type_exports}})})(Tt);let ga=Tt;function pa(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function ya(e,t){const r=pa();return ga.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(n=>!!(r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&t&&n.options.version===t))}ar.getGlobalFederationInstance=ya;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ar;let r=Tt,n=Y;function o(_){const g=new((0,r.getGlobalFederationConstructor)()||r.ModuleFederation)(_);return(0,r.setGlobalFederationInstance)(g),g}let s=null;function i(_){const g=t.getGlobalFederationInstance(_.name,_.version);return g?(g.initOptions(_),s||(s=g),g):(s=o(_),s)}function a(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadRemote.apply(s,_)}function c(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShare.apply(s,_)}function l(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShareSync.apply(s,_)}function u(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.preloadRemote.apply(s,_)}function d(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerRemotes.apply(s,_)}function f(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerPlugins.apply(s,_)}function h(){return s}function m(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerShared.apply(s,_)}(0,r.setGlobalFederationConstructor)(r.ModuleFederation),Object.defineProperty(e,"Module",{enumerable:!0,get:function(){return r.Module}}),e.ModuleFederation=r.ModuleFederation,e.createInstance=o,e.getInstance=h,Object.defineProperty(e,"getRemoteEntry",{enumerable:!0,get:function(){return r.getRemoteEntry}}),Object.defineProperty(e,"getRemoteInfo",{enumerable:!0,get:function(){return r.getRemoteInfo}}),e.init=i,e.loadRemote=a,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return r.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return r.loadScriptNode}}),e.loadShare=c,e.loadShareSync=l,e.preloadRemote=u,Object.defineProperty(e,"registerGlobalPlugins",{enumerable:!0,get:function(){return r.registerGlobalPlugins}}),e.registerPlugins=f,e.registerRemotes=d,e.registerShared=m})(ir);const an="__mf_init____mf__virtual/iobroker_javascript__mf_v__runtimeInit__mf_v__.js__";let Rt=globalThis[an];if(!Rt){let e,t;const r=new Promise((n,o)=>{e=n,t=o});Rt=globalThis[an]={initPromise:r,initResolve:e,initReject:t},typeof window>"u"&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}const Ea=Rt.initResolve,er={},tr="default",rr="iobroker_javascript";let nr,or;async function Sa(){return nr??=sr(()=>import("./localSharedImportMap-Cs4ibnCv.js"),__vite__mapDeps([0,1]),import.meta.url),nr}async function ba(){return or??=sr(()=>import("./virtualExposes-BPsCufin.js"),[],import.meta.url).then(e=>e.default??e),or}async function Ta(e={},t=[]){const{usedShared:r,usedRemotes:n}=await Sa(),o=ir.init({name:rr,remotes:n,shared:r,plugins:[],shareStrategy:"version-first"});var s=er[tr];if(s||(s=er[tr]={from:rr}),!(t.indexOf(s)>=0)){t.push(s),o.initShareScopeMap("default",e),Ea(o);try{await Promise.all(await o.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(i){console.error(i)}return o}}async function Ia(e){const t=await ba();if(!(e in t))throw new Error(`Module ${e} does not exist in container.`);return t[e]().then(r=>()=>r)}export{ir as d,Ia as g,Ta as i}; diff --git a/admin/custom/assets/index-CS_GBN2m.js b/admin/custom/assets/index-COK-bTGj.js similarity index 65% rename from admin/custom/assets/index-CS_GBN2m.js rename to admin/custom/assets/index-COK-bTGj.js index b9955cbc2..a26ec74ca 100644 --- a/admin/custom/assets/index-CS_GBN2m.js +++ b/admin/custom/assets/index-COK-bTGj.js @@ -1,19 +1,19 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-B5DqCD_a.js","./index-D_5kZmfw.js","./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs_commonjs-proxy-2W2BYT2K.js","./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-BW9Qbxx5.js"])))=>i.map(i=>d[i]); -import{i as Ao,h as x,f as Kl,a as Gl,p as Jl}from"./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-BW9Qbxx5.js";import{c as Ge,r as Ps}from"./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs_commonjs-proxy-2W2BYT2K.js";function Yl(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var n=e.default;if(typeof n=="function"){var t=function r(){var o=!1;try{o=this instanceof r}catch{}return o?Reflect.construct(n,arguments,this.constructor):n.apply(this,arguments)};t.prototype=n.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),t}function Ql(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{G as He,p as me,F as In,i as Pn,M as yt,z as ge,r as se,W as Ws,X as js,s as Ie,Y as zs,g as ve,Z as Pi,b as pe,$ as vn,h as Tt,c as fe,d as Te,e as Be,f as xe,_ as Xn,a as Zt,a0 as Do,Q as On,T as $o,S as ct,R as Ee,V as Fn,k as Lt,l as yn,m as Kt,n as Xl,o as Gt,a1 as Zl,a2 as ql,D as ec,a3 as Hs,j as Ti,E as Wi,A as xo,B as Vs,x as tc,y as nc,a4 as ic,a5 as sc,N as rc,a6 as _o,a7 as ko,I as oc,U as ac,a8 as as,a9 as lc,aa as cc,t as hc,v as uc,w as pc}from"./ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-KsT5vKjV.js";import{a7 as Hn,W as Jt,k as Li,aj as dc,ak as To,al as fc,am as Lo,an as gc,J as mc,S as Vn,u as Mo,ao as Io,ap as Oo,c as _t,E as Us,R as Un,aq as Fo,M as Ro,_ as vc,ar as yc,as as bc,at as wc,au as Cc,af as Mi,av as Ei,aw as Ai,n as fn,b as Ks,a as ht,ax as Sc,ay as Ec,az as Ac,q as Dc,aA as No,w as Bo,r as Po,aB as Gs,d as $c,aC as xc,aD as _c,a8 as Wo,aE as kc,aF as Tc,aG as Lc,aH as Mc,aI as Ic,aJ as Oc,aK as Fc,aL as Rc,aM as Nc,V as Bc,aN as Pc,j as Wc,X as jc,aO as zc,aP as Hc,aQ as Vc,aR as Uc,G as Rr}from"./ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__.mjs-B551AMx-.js";import{_ as P,A as Kc}from"./ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-B7D2xOvV.js";import{R as Gc}from"./ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs-CL--xmjC.js";import{b as Jc}from"./blue-CagzI6CQ.js";import{C as Yc,D as jo}from"./index-CzRngQHl.js";import{d as xs}from"./virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BcRVut8U.js";import{b as Qc,a as Xc}from"./ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.mjs-DgHZUNxn.js";import{p as Js}from"./index-D_5kZmfw.js";import{_ as zo}from"./preload-helper-BDBacUwf.js";const Zc=Object.freeze(Object.defineProperty({__proto__:null,get ConfigGeneric(){return V},get ConfigPanel(){return tn},get JsonConfig(){return Mf},get JsonConfigComponent(){return ki}},Symbol.toStringTag,{value:"Module"}));var qc=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,eh=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,th=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,ls={Space_Separator:qc,ID_Start:eh,ID_Continue:th},_e={isSpaceSeparator(m){return typeof m=="string"&&ls.Space_Separator.test(m)},isIdStartChar(m){return typeof m=="string"&&(m>="a"&&m<="z"||m>="A"&&m<="Z"||m==="$"||m==="_"||ls.ID_Start.test(m))},isIdContinueChar(m){return typeof m=="string"&&(m>="a"&&m<="z"||m>="A"&&m<="Z"||m>="0"&&m<="9"||m==="$"||m==="_"||m==="‌"||m==="‍"||ls.ID_Continue.test(m))},isDigit(m){return typeof m=="string"&&/[0-9]/.test(m)},isHexDigit(m){return typeof m=="string"&&/[0-9A-Fa-f]/.test(m)}};let _s,je,mt,Ii,Mt,rt,Re,Ys,Wn;var nh=function(e,t){_s=String(e),je="start",mt=[],Ii=0,Mt=1,rt=0,Re=void 0,Ys=void 0,Wn=void 0;do Re=ih(),oh[je]();while(Re.type!=="eof");return typeof t=="function"?ks({"":Wn},"",t):Wn};function ks(m,e,t){const n=m[e];if(n!=null&&typeof n=="object")if(Array.isArray(n))for(let u=0;u="a"&&m<="z"||m>="A"&&m<="Z"||m==="$"||m==="_"||cs.ID_Start.test(m))},isIdContinueChar(m){return typeof m=="string"&&(m>="a"&&m<="z"||m>="A"&&m<="Z"||m>="0"&&m<="9"||m==="$"||m==="_"||m==="‌"||m==="‍"||cs.ID_Continue.test(m))},isDigit(m){return typeof m=="string"&&/[0-9]/.test(m)},isHexDigit(m){return typeof m=="string"&&/[0-9A-Fa-f]/.test(m)}};let ks,je,mt,Oi,Mt,rt,Re,Qs,Wn;var rh=function(e,t){ks=String(e),je="start",mt=[],Oi=0,Mt=1,rt=0,Re=void 0,Qs=void 0,Wn=void 0;do Re=oh(),ch[je]();while(Re.type!=="eof");return typeof t=="function"?Ts({"":Wn},"",t):Wn};function Ts(m,e,t){const n=m[e];if(n!=null&&typeof n=="object")if(Array.isArray(n))for(let h=0;h0;){const t=bt();if(!_e.isHexDigit(t))throw Ce(Q());m+=Q()}return String.fromCodePoint(parseInt(m,16))}const oh={start(){if(Re.type==="eof")throw Wt();cs()},beforePropertyName(){switch(Re.type){case"identifier":case"string":Ys=Re.value,je="afterPropertyName";return;case"punctuator":ui();return;case"eof":throw Wt()}},afterPropertyName(){if(Re.type==="eof")throw Wt();je="beforePropertyValue"},beforePropertyValue(){if(Re.type==="eof")throw Wt();cs()},beforeArrayValue(){if(Re.type==="eof")throw Wt();if(Re.type==="punctuator"&&Re.value==="]"){ui();return}cs()},afterPropertyValue(){if(Re.type==="eof")throw Wt();switch(Re.value){case",":je="beforePropertyName";return;case"}":ui()}},afterArrayValue(){if(Re.type==="eof")throw Wt();switch(Re.value){case",":je="beforeArrayValue";return;case"]":ui()}},end(){}};function cs(){let m;switch(Re.type){case"punctuator":switch(Re.value){case"{":m={};break;case"[":m=[];break}break;case"null":case"boolean":case"numeric":case"string":m=Re.value;break}if(Wn===void 0)Wn=m;else{const e=mt[mt.length-1];Array.isArray(e)?e.push(m):Object.defineProperty(e,Ys,{value:m,writable:!0,enumerable:!0,configurable:!0})}if(m!==null&&typeof m=="object")mt.push(m),Array.isArray(m)?je="beforeArrayValue":je="beforePropertyName";else{const e=mt[mt.length-1];e==null?je="end":Array.isArray(e)?je="afterArrayValue":je="afterPropertyValue"}}function ui(){mt.pop();const m=mt[mt.length-1];m==null?je="end":Array.isArray(m)?je="afterArrayValue":je="afterPropertyValue"}function Ce(m){return Oi(m===void 0?`JSON5: invalid end of input at ${Mt}:${rt}`:`JSON5: invalid character '${Vo(m)}' at ${Mt}:${rt}`)}function Wt(){return Oi(`JSON5: invalid end of input at ${Mt}:${rt}`)}function Nr(){return rt-=5,Oi(`JSON5: invalid identifier character at ${Mt}:${rt}`)}function ah(m){console.warn(`JSON5: '${Vo(m)}' in strings is not valid ECMAScript; consider escaping`)}function Vo(m){const e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(e[m])return e[m];if(m<" "){const t=m.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return m}function Oi(m){const e=new SyntaxError(m);return e.lineNumber=Mt,e.columnNumber=rt,e}var lh=function(e,t,n){const u=[];let i="",s,d,o="",l;if(t!=null&&typeof t=="object"&&!Array.isArray(t)&&(n=t.space,l=t.quote,t=t.replacer),typeof t=="function")d=t;else if(Array.isArray(t)){s=[];for(const f of t){let g;typeof f=="string"?g=f:(typeof f=="number"||f instanceof String||f instanceof Number)&&(g=String(f)),g!==void 0&&s.indexOf(g)<0&&s.push(g)}}return n instanceof Number?n=Number(n):n instanceof String&&(n=String(n)),typeof n=="number"?n>0&&(n=Math.min(10,Math.floor(n)),o=" ".substr(0,n)):typeof n=="string"&&(o=n.substr(0,10)),r("",{"":e});function r(f,g){let v=g[f];switch(v!=null&&(typeof v.toJSON5=="function"?v=v.toJSON5(f):typeof v.toJSON=="function"&&(v=v.toJSON(f))),d&&(v=d.call(g,f,v)),v instanceof Number?v=Number(v):v instanceof String?v=String(v):v instanceof Boolean&&(v=v.valueOf()),v){case null:return"null";case!0:return"true";case!1:return"false"}if(typeof v=="string")return a(v);if(typeof v=="number")return String(v);if(typeof v=="object")return Array.isArray(v)?h(v):c(v)}function a(f){const g={"'":.1,'"':.2},v={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let b="";for(let E=0;Eg[E]=0)throw TypeError("Converting circular structure to JSON5");u.push(f);let g=i;i=i+o;let v=s||Object.keys(f),b=[];for(const E of v){const w=r(E,f);if(w!==void 0){let y=p(E)+":";o!==""&&(y+=" "),y+=w,b.push(y)}}let D;if(b.length===0)D="{}";else{let E;if(o==="")E=b.join(","),D="{"+E+"}";else{let w=`, +`&&Q(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":throw Ce(Q());case void 0:throw Ce(Q())}return Q()}function lh(){let m="",e=bt();if(!ke.isHexDigit(e)||(m+=Q(),e=bt(),!ke.isHexDigit(e)))throw Ce(Q());return m+=Q(),String.fromCodePoint(parseInt(m,16))}function Ls(){let m="",e=4;for(;e-- >0;){const t=bt();if(!ke.isHexDigit(t))throw Ce(Q());m+=Q()}return String.fromCodePoint(parseInt(m,16))}const ch={start(){if(Re.type==="eof")throw Wt();hs()},beforePropertyName(){switch(Re.type){case"identifier":case"string":Qs=Re.value,je="afterPropertyName";return;case"punctuator":ui();return;case"eof":throw Wt()}},afterPropertyName(){if(Re.type==="eof")throw Wt();je="beforePropertyValue"},beforePropertyValue(){if(Re.type==="eof")throw Wt();hs()},beforeArrayValue(){if(Re.type==="eof")throw Wt();if(Re.type==="punctuator"&&Re.value==="]"){ui();return}hs()},afterPropertyValue(){if(Re.type==="eof")throw Wt();switch(Re.value){case",":je="beforePropertyName";return;case"}":ui()}},afterArrayValue(){if(Re.type==="eof")throw Wt();switch(Re.value){case",":je="beforeArrayValue";return;case"]":ui()}},end(){}};function hs(){let m;switch(Re.type){case"punctuator":switch(Re.value){case"{":m={};break;case"[":m=[];break}break;case"null":case"boolean":case"numeric":case"string":m=Re.value;break}if(Wn===void 0)Wn=m;else{const e=mt[mt.length-1];Array.isArray(e)?e.push(m):Object.defineProperty(e,Qs,{value:m,writable:!0,enumerable:!0,configurable:!0})}if(m!==null&&typeof m=="object")mt.push(m),Array.isArray(m)?je="beforeArrayValue":je="beforePropertyName";else{const e=mt[mt.length-1];e==null?je="end":Array.isArray(e)?je="afterArrayValue":je="afterPropertyValue"}}function ui(){mt.pop();const m=mt[mt.length-1];m==null?je="end":Array.isArray(m)?je="afterArrayValue":je="afterPropertyValue"}function Ce(m){return Fi(m===void 0?`JSON5: invalid end of input at ${Mt}:${rt}`:`JSON5: invalid character '${Go(m)}' at ${Mt}:${rt}`)}function Wt(){return Fi(`JSON5: invalid end of input at ${Mt}:${rt}`)}function Pr(){return rt-=5,Fi(`JSON5: invalid identifier character at ${Mt}:${rt}`)}function hh(m){console.warn(`JSON5: '${Go(m)}' in strings is not valid ECMAScript; consider escaping`)}function Go(m){const e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(e[m])return e[m];if(m<" "){const t=m.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return m}function Fi(m){const e=new SyntaxError(m);return e.lineNumber=Mt,e.columnNumber=rt,e}var uh=function(e,t,n){const h=[];let i="",s,d,o="",l;if(t!=null&&typeof t=="object"&&!Array.isArray(t)&&(n=t.space,l=t.quote,t=t.replacer),typeof t=="function")d=t;else if(Array.isArray(t)){s=[];for(const f of t){let g;typeof f=="string"?g=f:(typeof f=="number"||f instanceof String||f instanceof Number)&&(g=String(f)),g!==void 0&&s.indexOf(g)<0&&s.push(g)}}return n instanceof Number?n=Number(n):n instanceof String&&(n=String(n)),typeof n=="number"?n>0&&(n=Math.min(10,Math.floor(n)),o=" ".substr(0,n)):typeof n=="string"&&(o=n.substr(0,10)),r("",{"":e});function r(f,g){let v=g[f];switch(v!=null&&(typeof v.toJSON5=="function"?v=v.toJSON5(f):typeof v.toJSON=="function"&&(v=v.toJSON(f))),d&&(v=d.call(g,f,v)),v instanceof Number?v=Number(v):v instanceof String?v=String(v):v instanceof Boolean&&(v=v.valueOf()),v){case null:return"null";case!0:return"true";case!1:return"false"}if(typeof v=="string")return a(v);if(typeof v=="number")return String(v);if(typeof v=="object")return Array.isArray(v)?u(v):c(v)}function a(f){const g={"'":.1,'"':.2},v={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let b="";for(let E=0;Eg[E]=0)throw TypeError("Converting circular structure to JSON5");h.push(f);let g=i;i=i+o;let v=s||Object.keys(f),b=[];for(const E of v){const w=r(E,f);if(w!==void 0){let y=p(E)+":";o!==""&&(y+=" "),y+=w,b.push(y)}}let D;if(b.length===0)D="{}";else{let E;if(o==="")E=b.join(","),D="{"+E+"}";else{let w=`, `+i;E=b.join(w),D=`{ `+i+E+`, -`+g+"}"}}return u.pop(),i=g,D}function p(f){if(f.length===0)return a(f);const g=String.fromCodePoint(f.codePointAt(0));if(!_e.isIdStartChar(g))return a(f);for(let v=g.length;v=0)throw TypeError("Converting circular structure to JSON5");u.push(f);let g=i;i=i+o;let v=[];for(let D=0;D=0)throw TypeError("Converting circular structure to JSON5");h.push(f);let g=i;i=i+o;let v=[];for(let D=0;D>>2]>>>24-A%4*8&255;D[w+A>>>2]|=T<<24-(w+A)%4*8}else for(var $=0;$>>2]=E[$>>>2];return this.sigBytes+=y,this},clamp:function(){var b=this.words,D=this.sigBytes;b[D>>>2]&=4294967295<<32-D%4*8,b.length=n.ceil(D/4)},clone:function(){var b=r.clone.call(this);return b.words=this.words.slice(0),b},random:function(b){for(var D=[],E=0;E>>2]>>>24-y%4*8&255;w.push((A>>>4).toString(16)),w.push((A&15).toString(16))}return w.join("")},parse:function(b){for(var D=b.length,E=[],w=0;w>>3]|=parseInt(b.substr(w,2),16)<<24-w%8*4;return new a.init(E,D/2)}},h=c.Latin1={stringify:function(b){for(var D=b.words,E=b.sigBytes,w=[],y=0;y>>2]>>>24-y%4*8&255;w.push(String.fromCharCode(A))}return w.join("")},parse:function(b){for(var D=b.length,E=[],w=0;w>>2]|=(b.charCodeAt(w)&255)<<24-w%4*8;return new a.init(E,D)}},f=c.Utf8={stringify:function(b){try{return decodeURIComponent(escape(h.stringify(b)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(b){return h.parse(unescape(encodeURIComponent(b)))}},g=l.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new a.init,this._nDataBytes=0},_append:function(b){typeof b=="string"&&(b=f.parse(b)),this._data.concat(b),this._nDataBytes+=b.sigBytes},_process:function(b){var D,E=this._data,w=E.words,y=E.sigBytes,A=this.blockSize,T=A*4,$=y/T;b?$=n.ceil($):$=n.max(($|0)-this._minBufferSize,0);var M=$*A,O=n.min(M*4,y);if(M){for(var _=0;_>>24)&16711935|(D<<24|D>>>8)&4278255360}var E=this._hash.words,w=f[g+0],y=f[g+1],A=f[g+2],T=f[g+3],$=f[g+4],M=f[g+5],O=f[g+6],_=f[g+7],k=f[g+8],S=f[g+9],C=f[g+10],L=f[g+11],I=f[g+12],F=f[g+13],R=f[g+14],B=f[g+15],N=E[0],H=E[1],W=E[2],j=E[3];N=a(N,H,W,j,w,7,l[0]),j=a(j,N,H,W,y,12,l[1]),W=a(W,j,N,H,A,17,l[2]),H=a(H,W,j,N,T,22,l[3]),N=a(N,H,W,j,$,7,l[4]),j=a(j,N,H,W,M,12,l[5]),W=a(W,j,N,H,O,17,l[6]),H=a(H,W,j,N,_,22,l[7]),N=a(N,H,W,j,k,7,l[8]),j=a(j,N,H,W,S,12,l[9]),W=a(W,j,N,H,C,17,l[10]),H=a(H,W,j,N,L,22,l[11]),N=a(N,H,W,j,I,7,l[12]),j=a(j,N,H,W,F,12,l[13]),W=a(W,j,N,H,R,17,l[14]),H=a(H,W,j,N,B,22,l[15]),N=c(N,H,W,j,y,5,l[16]),j=c(j,N,H,W,O,9,l[17]),W=c(W,j,N,H,L,14,l[18]),H=c(H,W,j,N,w,20,l[19]),N=c(N,H,W,j,M,5,l[20]),j=c(j,N,H,W,C,9,l[21]),W=c(W,j,N,H,B,14,l[22]),H=c(H,W,j,N,$,20,l[23]),N=c(N,H,W,j,S,5,l[24]),j=c(j,N,H,W,R,9,l[25]),W=c(W,j,N,H,T,14,l[26]),H=c(H,W,j,N,k,20,l[27]),N=c(N,H,W,j,F,5,l[28]),j=c(j,N,H,W,A,9,l[29]),W=c(W,j,N,H,_,14,l[30]),H=c(H,W,j,N,I,20,l[31]),N=p(N,H,W,j,M,4,l[32]),j=p(j,N,H,W,k,11,l[33]),W=p(W,j,N,H,L,16,l[34]),H=p(H,W,j,N,R,23,l[35]),N=p(N,H,W,j,y,4,l[36]),j=p(j,N,H,W,$,11,l[37]),W=p(W,j,N,H,_,16,l[38]),H=p(H,W,j,N,C,23,l[39]),N=p(N,H,W,j,F,4,l[40]),j=p(j,N,H,W,w,11,l[41]),W=p(W,j,N,H,T,16,l[42]),H=p(H,W,j,N,O,23,l[43]),N=p(N,H,W,j,S,4,l[44]),j=p(j,N,H,W,I,11,l[45]),W=p(W,j,N,H,B,16,l[46]),H=p(H,W,j,N,A,23,l[47]),N=h(N,H,W,j,w,6,l[48]),j=h(j,N,H,W,_,10,l[49]),W=h(W,j,N,H,R,15,l[50]),H=h(H,W,j,N,M,21,l[51]),N=h(N,H,W,j,I,6,l[52]),j=h(j,N,H,W,T,10,l[53]),W=h(W,j,N,H,C,15,l[54]),H=h(H,W,j,N,y,21,l[55]),N=h(N,H,W,j,k,6,l[56]),j=h(j,N,H,W,B,10,l[57]),W=h(W,j,N,H,O,15,l[58]),H=h(H,W,j,N,F,21,l[59]),N=h(N,H,W,j,$,6,l[60]),j=h(j,N,H,W,L,10,l[61]),W=h(W,j,N,H,A,15,l[62]),H=h(H,W,j,N,S,21,l[63]),E[0]=E[0]+N|0,E[1]=E[1]+H|0,E[2]=E[2]+W|0,E[3]=E[3]+j|0},_doFinalize:function(){var f=this._data,g=f.words,v=this._nDataBytes*8,b=f.sigBytes*8;g[b>>>5]|=128<<24-b%32;var D=n.floor(v/4294967296),E=v;g[(b+64>>>9<<4)+15]=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360,g[(b+64>>>9<<4)+14]=(E<<8|E>>>24)&16711935|(E<<24|E>>>8)&4278255360,f.sigBytes=(g.length+1)*4,this._process();for(var w=this._hash,y=w.words,A=0;A<4;A++){var T=y[A];y[A]=(T<<8|T>>>24)&16711935|(T<<24|T>>>8)&4278255360}return w},clone:function(){var f=d.clone.call(this);return f._hash=this._hash.clone(),f}});function a(f,g,v,b,D,E,w){var y=f+(g&v|~g&b)+D+w;return(y<>>32-E)+g}function c(f,g,v,b,D,E,w){var y=f+(g&b|v&~b)+D+w;return(y<>>32-E)+g}function p(f,g,v,b,D,E,w){var y=f+(g^v^b)+D+w;return(y<>>32-E)+g}function h(f,g,v,b,D,E,w){var y=f+(v^(g|~b))+D+w;return(y<>>32-E)+g}u.MD5=d._createHelper(r),u.HmacMD5=d._createHmacHelper(r)})(Math),t.MD5})})(Qs);var vh=Qs.exports;const Pr=Ql(vh),yh=window.innerWidth<=600?12:void 0;function hs(m){return Object.prototype.toString.call(m)==="[object Object]"}class V extends Ao{static DIFFERENT_VALUE="__different__";static DIFFERENT_LABEL="ra___different__";static NONE_VALUE="";static NONE_LABEL="ra_none";defaultValue;isError;lang;defaultSendToDone;sendToTimeout;noPlaceRequired;reportedHidden=!1;calculateTimeout=null;AsyncFunction;constructor(e){super(e),this.AsyncFunction=Object.getPrototypeOf(async function(){}).constructor,this.state={confirmDialog:!1,confirmNewValue:null,confirmAttr:null,confirmData:null,confirmCallback:null},this.isError={},this.lang=P.I18n.getLanguage(),e.schema&&(e.custom?e.schema.defaultFunc||(this.defaultValue=e.schema.default):e.schema.type!=="state"&&!e.schema.defaultFunc&&(this.defaultValue=e.schema.default))}async getCachedObject(e){return this.props.oContext.getCachedObject?this.props.oContext.getCachedObject(e):await this.props.oContext.socket.getObject(e)||null}async componentDidMount(){var t,n,u;(t=this.props.schema)!=null&&t.defaultFunc&&(this.props.custom?this.defaultValue=await this.executeCustom(this.props.schema.defaultFunc,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):this.props.schema.type!=="state"&&(this.defaultValue=await this.execute(this.props.schema.defaultFunc,this.props.schema.default,this.props.data,this.props.arrayIndex,this.props.globalData))),(u=(n=this.props.oContext).registerOnForceUpdate)==null||u.call(n,this.props.attr,this.onUpdate);const e=["select","autocomplete","autocompleteSendTo"];if(this.defaultValue!==void 0){const i=V.getValue(this.props.data,this.props.attr);(i===void 0||e.includes(this.props.schema.type)&&(i===""||i===null))&&setTimeout(()=>{this.props.custom?this.props.onChange(this.props.attr,this.defaultValue,()=>setTimeout(()=>this.props.oContext.forceUpdate([this.props.attr],this.props.data),100)):(V.setValue(this.props.data,this.props.attr,this.defaultValue),this.props.onChange(this.props.data,void 0,()=>this.props.oContext.forceUpdate([this.props.attr],this.props.data)))},100)}else this.props.schema.defaultSendTo&&this.sendTo().catch(i=>console.error(i))}async sendTo(){if(this.props.alive){this.defaultSendToDone=!0;let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${n}`)}}else e={attr:this.props.attr,value:V.getValue(this.props.data,this.props.attr)};e===void 0&&(e=null);const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.props.oContext.socket.sendTo(t,this.props.schema.defaultSendTo,e).then(n=>{n!=null&&(this.props.custom?this.props.onChange(this.props.attr,n,()=>this.props.oContext.forceUpdate([this.props.attr],this.props.data)):(V.setValue(this.props.data,this.props.attr,n),this.props.onChange(this.props.data,void 0,()=>this.props.oContext.forceUpdate([this.props.attr],this.props.data))))})}else this.defaultSendToDone=!1,this.props.schema.allowSaveWithError||this.onError(this.props.attr,P.I18n.t("ra_Instance %s is not alive",this.props.oContext.instance.toString()))}componentWillUnmount(){this.props.oContext.registerOnForceUpdate&&this.props.oContext.registerOnForceUpdate(this.props.attr),this.sendToTimeout&&(clearTimeout(this.sendToTimeout),this.sendToTimeout=null),this.calculateTimeout&&(clearTimeout(this.calculateTimeout),this.calculateTimeout=null)}onUpdate=e=>{const t=V.getValue(e||this.props.data,this.props.attr)||"";this.state.value!==t?this.setState({value:t}):this.forceUpdate()};static getValue(e,t){if(typeof t=="string")return V.getValue(e,t.split("."));if(t.length===1)return e[t[0]];const n=t.shift();if(typeof n=="string"&&typeof e[n]=="object")return V.getValue(e[n],t)}static setValue(e,t,n){if(typeof t=="string"){V.setValue(e,t.split("."),n);return}if(t.length===1)n===null?delete e[t[0]]:e[t[0]]=n;else{const u=t.shift();if(typeof u!="string")return;(!e[u]||typeof e[u]=="object")&&(e[u]=e[u]||{}),V.setValue(e[u],t,n)}}getText(e,t){if(!e)return"";if(typeof e=="string"){const n=t?e:P.I18n.t(e);return n.includes("${")?this.getPattern(n,null,t):n}return hs(e)?e.func?typeof e.func=="object"?this.getPattern(e.func[this.lang]||e.func.en||"",null,!0):this.getPattern(e.func,null,t):e[this.lang]||e.en||"":e.toString()}renderDialogConfirm(){if(!this.state.confirmDialog)return null;const e=this.state.confirmData||this.props.schema.confirm;let t=null;return e.type==="warning"?t=x.createElement(Hn,null):e.type==="error"?t=x.createElement(Jt,null):e.type==="info"&&(t=x.createElement(Li,null)),x.createElement(P.DialogConfirm,{title:this.getText(e.title)||P.I18n.t("ra_Please confirm"),text:this.getText(e.text),ok:this.getText(e.ok)||P.I18n.t("ra_Ok"),cancel:this.getText(e.cancel)||P.I18n.t("ra_Cancel"),icon:t||void 0,onClose:n=>this.setState({confirmDialog:!1},()=>{if(n){if(this.state.confirmCallback){const i=this.state.confirmCallback;this.setState({confirmCallback:null},()=>i(!0));return}const u=JSON.parse(JSON.stringify(this.props.data));this.state.confirmDepAttr&&V.setValue(u,this.state.confirmDepAttr,this.state.confirmDepNewValue),V.setValue(u,this.state.confirmAttr,this.state.confirmNewValue),this.setState({confirmDialog:!1,confirmDepAttr:null,confirmDepNewValue:null,confirmNewValue:null,confirmAttr:null,confirmData:null},()=>this.props.onChange(u))}else{const u=this.state.confirmCallback;this.setState({confirmDialog:!1,confirmDepAttr:null,confirmDepNewValue:null,confirmNewValue:null,confirmAttr:null,confirmData:null,confirmCallback:null},()=>{u&&u(!1)})}})})}getIcon(e){e=e||this.props.schema.icon;let t=null;return e==="auth"?t=x.createElement(dc,null):e==="send"?t=x.createElement(To,null):e==="web"?t=x.createElement(fc,null):e==="warning"?t=x.createElement(Hn,null):e==="error"?t=x.createElement(Jt,null):e==="info"?t=x.createElement(Li,null):e==="search"?t=x.createElement(Lo,null):e==="book"?t=x.createElement(gc,null):e==="help"?t=x.createElement(mc,null):e==="upload"?t=x.createElement(Vn,null):e==="edit"?t=x.createElement(Mo,null):e==="user"?t=x.createElement(Io,null):e==="group"?t=x.createElement(Oo,null):e==="delete"?t=x.createElement(_t,null):e==="refresh"?t=x.createElement(Us,null):e==="add"?t=x.createElement(Un,null):e==="unpair"?t=x.createElement(Fo,null):e==="pair"?t=x.createElement(Ro,null):e==="save"?t=x.createElement(vc,null):e==="open"?t=x.createElement(yc,null):e&&((e.endsWith(".png")||e.endsWith(".svg")||e.endsWith(".jpg"))&&!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${this.props.oContext.imagePrefix}/adapter/${this.props.oContext.adapterName}/${e}`),t=x.createElement(P.Icon,{src:e,style:{width:22,height:22}})),t}onChangeAsync(e,t){return new Promise(n=>{const u=this.onChange(e,t,n);u instanceof Promise&&u.catch(i=>console.error(`Cannot set value: ${i}`))})}async onChange(e,t,n){const u=JSON.parse(JSON.stringify(this.props.data));if(V.setValue(u,e,t),this.props.schema.confirm&&await this.execute(this.props.schema.confirm.condition,!1,u,this.props.arrayIndex,this.props.globalData))return new Promise(s=>{this.setState({confirmDialog:!0,confirmNewValue:t,confirmAttr:e,confirmData:null},()=>{typeof n=="function"?n():s()})});if(this.props.schema.confirmDependsOn)for(let s=0;s{this.setState({confirmDialog:!0,confirmNewValue:t,confirmAttr:e,confirmDepNewValue:o,confirmDepAttr:d.attr,confirmData:d.confirm},()=>{typeof n=="function"?n():l()})})}}const i=[];if(this.props.schema.onChangeDependsOn)for(let s=0;sn&&n()),i!=null&&i.length&&i.forEach((s,d)=>setTimeout(()=>this.props.onChange(s,V.getValue(u,s)),d*50))):this.props.onChange(u,void 0,()=>{i.length&&this.props.oContext.forceUpdate(i,u),n==null||n()}),Promise.resolve()}static ensureAwaitGetObject(e){return e.replace(/(?{const u=e.slice(Math.max(0,n-10),n);return/await\s+$/.test(u)?t:`await ${t}`})}async execute(e,t,n,u,i){let s;if(hs(e))s=e.func;else if(typeof e=="string")s=e;else return e;if(!s)return t;s.includes("getObject(")&&(s=V.ensureAwaitGetObject(s));try{return await new this.AsyncFunction("data","originalData","_system","_alive","_common","_socket","_instance","arrayIndex","globalData","_changed","_href","getObject",s.includes("return")?s:`return ${s}`)(n||this.props.data,this.props.originalData,this.props.oContext.systemConfig,this.props.alive,this.props.common,this.props.oContext.socket,this.props.oContext.instance,u,i,this.props.changed,window.location.href,this.getObject)}catch(d){return console.error(`Cannot execute ${JSON.stringify(e)}: ${d}`),t}}async executeCustom(e,t,n,u,i,s){let d;if(hs(e))d=e.func;else if(typeof e=="string")d=e;else return e;if(!d)return null;d.includes("getObject(")&&(d=V.ensureAwaitGetObject(d));try{return await new this.AsyncFunction("data","originalData","_system","instanceObj","customObj","_socket","arrayIndex","globalData","_changed","_href","getObject",d.includes("return")?d:`return ${d}`)(t||this.props.data,this.props.originalData,this.props.oContext.systemConfig,u,n,this.props.oContext.socket,i,s,this.props.changed,window.location.href,this.getObject)}catch(o){return console.error(`Cannot execute ${d}: ${o}`),null}}async calculate(e){let t,n,u,i;return this.props.custom?(t=e.validator?!await this.executeCustom(e.validator,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!1,e.disabled===!0?n=!0:n=e.disabled?await this.executeCustom(e.disabled,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!1,e.hidden===!0?u=!0:u=e.hidden?await this.executeCustom(e.hidden,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!1,i=e.defaultFunc?await this.executeCustom(e.defaultFunc,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):e.default):(t=e.validator?!await this.execute(e.validator,!1,this.props.data,this.props.arrayIndex,this.props.globalData):!1,e.disabled===!0?n=!0:n=e.disabled?await this.execute(e.disabled,!1,this.props.data,this.props.arrayIndex,this.props.globalData):!1,e.hidden===!0?u=!0:u=e.hidden?await this.execute(e.hidden,!1,this.props.data,this.props.arrayIndex,this.props.globalData):!1,i=e.defaultFunc?await this.execute(e.defaultFunc,e.default,this.props.data,this.props.arrayIndex,this.props.globalData):e.default),{error:t,disabled:n,hidden:u,defaultValue:i}}onError(e,t){t?this.isError[e]=t:delete this.isError[e],this.props.onError&&this.props.onError(e,t)}renderItem(e,t,n){return this.getText(this.props.schema.label)||this.getText(this.props.schema.text)}renderHelp(e,t,n){return t?x.createElement("a",{href:t,target:"_blank",rel:"noreferrer",style:{color:this.props.oContext.themeType==="dark"?"#a147ff":"#5b238f",textDecoration:"underline"}},this.getText(e,n)):(e=this.getText(e,n)||"",e&&(e.includes("")||e.includes(""))?P.Utils.renderTextWithA(e):e)}static escapeString(e,t){return typeof e!="string"?"":(e=e.replace(/`/g,"\\`"),e=e.replace(/\${([^}]+)}/g,(n,u)=>{if(u&&typeof u=="string"&&u.startsWith("data.")){const i=V.getValue(t,u.replace(/^data\./,""));if(typeof i=="string"&&(i.includes("\\")||i.includes('"')))return`\${${u}.replace(/\\\\/g, '\\\\\\\\').replace(/"/g, '\\\\"')}`}return n}),e)}getObject=async e=>{try{return await this.props.oContext.getCachedObject(e)||null}catch(t){return console.error(t),null}};async getPatternAsync(e,t,n){if(t||=this.props.data,!e)return"";let u;typeof e=="object"?e.func?u=e.func:(console.log(`Object must be stringified: ${JSON.stringify(e)}`),u=JSON.stringify(e)):u=e,u.includes("getObject(")&&(u=V.ensureAwaitGetObject(u));try{if(this.props.custom){const o=await new this.AsyncFunction("data","originalData","arrayIndex","globalData","_system","instanceObj","customObj","_socket","_changed","_href","getObject",`return \`${V.escapeString(u,t)}\``)(t,this.props.originalData,this.props.arrayIndex,this.props.globalData,this.props.oContext.systemConfig,this.props.oContext.instanceObj,this.props.customObj,this.props.oContext.socket,this.props.changed,window.location.href,this.getObject);return n?o:P.I18n.t(o)}const s=await new this.AsyncFunction("data","originalData","arrayIndex","globalData","_system","_alive","_common","_socket","_changed","_href","getObject",`return \`${V.escapeString(u,t)}\``)(t,this.props.originalData,this.props.arrayIndex,this.props.globalData,this.props.oContext.systemConfig,this.props.alive,this.props.common,this.props.oContext.socket,this.props.changed,window.location.href,this.getObject);return n?s:P.I18n.t(s)}catch(i){return console.error(`Cannot execute ${u}: ${i}`),u}}getPattern(e,t,n){if(t||=this.props.data,!e)return"";let u;typeof e=="object"?e.func?u=e.func:(console.log(`Object must be stringified: ${JSON.stringify(e)}`),u=JSON.stringify(e)):u=e,u.includes("getObject(")&&console.log(`It is not possible to use getObject function in text patterns: ${u}`);try{if(this.props.custom){const o=new this.AsyncFunction("data","originalData","arrayIndex","globalData","_system","instanceObj","customObj","_socket","_changed","_href","getObject",`return \`${V.escapeString(u,t)}\``)(t,this.props.originalData,this.props.arrayIndex,this.props.globalData,this.props.oContext.systemConfig,this.props.oContext.instanceObj,this.props.customObj,this.props.oContext.socket,this.props.changed,window.location.href,this.getObject);return n?o:P.I18n.t(o)}const s=new this.AsyncFunction("data","originalData","arrayIndex","globalData","_system","_alive","_common","_socket","_changed","_href","getObject",`return \`${V.escapeString(u,t)}\``)(t,this.props.originalData,this.props.arrayIndex,this.props.globalData,this.props.oContext.systemConfig,this.props.alive,this.props.common,this.props.oContext.socket,this.props.changed,window.location.href,this.getObject);return n?s:P.I18n.t(s)}catch(i){return console.error(`Cannot execute ${u}: ${i}`),u}}updateCalculatedValues(){this.calculateTimeout&&clearTimeout(this.calculateTimeout),this.calculateTimeout=setTimeout(async()=>{this.calculateTimeout=null;const e=this.props.schema;if(!e)return null;const{error:t,disabled:n,hidden:u,defaultValue:i}=await this.calculate(e);(!this.state.calculatedValues||this.state.calculatedValues.error!==t||this.state.calculatedValues.disabled!==n||this.state.calculatedValues.hidden!==u||this.state.calculatedValues.defaultValue!==i)&&this.setState({calculatedValues:{error:t,disabled:n,hidden:u,defaultValue:i}})},50)}render(){const e=this.props.schema;if(!e||this.props.expertMode===!1&&e.expertMode||(this.props.alive&&this.defaultSendToDone===!1&&(this.sendToTimeout=setTimeout(async()=>{this.sendToTimeout=null,await this.sendTo()},200)),this.updateCalculatedValues(),!this.state.calculatedValues))return null;if(this.state.calculatedValues.hidden){if(Object.keys(this.isError).length&&(setTimeout(u=>Object.keys(u).forEach(i=>this.props.onError(i)),100,JSON.parse(JSON.stringify(this.isError))),this.isError={}),e.hideOnlyControl){const u=x.createElement(He,{size:{xs:e.xs||yh,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0},style:{marginBottom:0,textAlign:"left",...e.style,...this.props.oContext.themeType==="dark"?e.darkStyle:{}}});return e.newLine?x.createElement(x.Fragment,null,x.createElement("div",{style:{flexBasis:"100%",height:0}}),u):u}return this.props.onHiddenChanged&&!this.reportedHidden&&(this.reportedHidden=!0,setTimeout(()=>this.props.onHiddenChanged(this.props.attr,!0),10)),null}this.props.onHiddenChanged&&this.reportedHidden&&(this.reportedHidden=!1,setTimeout(()=>this.props.onHiddenChanged(this.props.attr,!1),10)),e.validatorNoSaveOnError&&(this.state.calculatedValues.error&&!Object.keys(this.isError).length?(this.isError={[this.props.attr]:e.validatorErrorText?P.I18n.t(e.validatorErrorText):!0},setTimeout(u=>Object.keys(u).forEach(i=>this.props.onError(i,u[i])),100,JSON.parse(JSON.stringify(this.isError)))):!this.state.calculatedValues.error&&Object.keys(this.isError).length&&(setTimeout(u=>Object.keys(u).forEach(i=>this.props.onError(i)),100,JSON.parse(JSON.stringify(this.isError))),this.isError={}));const t=this.renderItem(this.state.calculatedValues.error,this.state.calculatedValues.disabled||this.props.commandRunning||this.props.disabled,this.state.calculatedValues.defaultValue);if(this.noPlaceRequired)return t;const n=x.createElement(He,{title:this.getText(e.tooltip),size:{xs:e.xs||12,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0},style:{marginBottom:0,textAlign:"left",width:e.type==="divider"||e.type==="header"?e.width||"100%":void 0,...e.style,...this.props.oContext.themeType==="dark"?e.darkStyle:{}}},this.props.schema.defaultSendTo&&this.props.schema.button?x.createElement(He,{container:!0,style:{width:"100%"}},x.createElement(He,{flex:1},t),x.createElement(He,null,x.createElement(me,{disabled:this.state.calculatedValues.disabled,variant:"outlined",onClick:()=>this.sendTo(),title:this.props.schema.buttonTooltip?this.getText(this.props.schema.buttonTooltip,this.props.schema.buttonTooltipNoTranslation):P.I18n.t("ra_Request data by instance")},this.getText(this.props.schema.button)))):t);return e.newLine?x.createElement(x.Fragment,null,x.createElement("div",{style:{flexBasis:"100%",height:0}}),this.renderDialogConfirm(),n):this.state.confirmDialog?x.createElement(x.Fragment,null,this.renderDialogConfirm(),n):n}}const tt={fullWidth:{width:"100%"},accordionSummary:m=>({backgroundColor:m.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.08)"}),accordionTitle:{},toolbar:m=>({backgroundColor:m.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.08)",borderRadius:"3px"}),tooltip:{pointerEvents:"none"}};class bh extends V{typingTimer=null;constructor(e){super(e),this.props.schema.items||=[]}async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr)||[];Array.isArray(e)||(e=[]),this.setState({value:e,activeIndex:-1,iteration:0,accordionErrors:{}})}componentWillUnmount(){this.typingTimer&&(clearTimeout(this.typingTimer),this.typingTimer=null),super.componentWillUnmount()}onAccordionError=e=>(t,n)=>{const u={...this.state.accordionErrors};u[e]||(u[e]={}),n?u[e][t]=n:(delete u[e][t],Object.keys(u[e]).length===0&&delete u[e]),this.setState({accordionErrors:u}),this.props.onError(t,n)};hasAccordionErrors=e=>!!(this.state.accordionErrors[e]&&Object.keys(this.state.accordionErrors[e]).length>0);itemAccordion(e,t){const{value:n}=this.state,{schema:u}=this.props,i={type:"panel",items:u.items.reduce((s,d)=>(s[d.attr]=d,s),{}),style:{marginLeft:"-8px",marginTop:"10px",marginBottom:"10px"}};return x.createElement(tn,{oContext:this.props.oContext,index:t+this.state.iteration,arrayIndex:t,changed:this.props.changed,expertMode:this.props.expertMode,globalData:this.props.data,common:this.props.common,alive:this.props.alive,themeName:this.props.themeName,data:e,custom:!0,schema:i,originalData:this.props.originalData,onChange:(s,d)=>{const o=JSON.parse(JSON.stringify(n));o[t][s]=d,this.setState({value:o},()=>this.onChangeWrapper(o))},onError:this.onAccordionError(t),onHiddenChanged:this.props.onHiddenChanged,table:this.props.table,customComponents:this.props.customComponents})}onDelete=e=>()=>{const t=JSON.parse(JSON.stringify(this.state.value));t.splice(e,1),this.setState({value:t,iteration:this.state.iteration+1e4},()=>this.onChangeWrapper(t))};onClone=e=>()=>{const t=JSON.parse(JSON.stringify(this.state.value)),n=JSON.parse(JSON.stringify(t[e]));if(typeof this.props.schema.clone=="string"&&typeof n[this.props.schema.clone]=="string"){let u=1,i=n[this.props.schema.clone];const s=i.match(/(\d+)$/);for(s?(i=i.replace(s[0],""),u=parseInt(s[0],10)+1):i+="_";t.find(d=>d[this.props.schema.clone]===i+u.toString());)u++;n[this.props.schema.clone]=`${n[this.props.schema.clone]}_${u}`}t.splice(e,0,n),this.setState({value:t,activeIndex:-1,iteration:this.state.iteration+1e4},()=>this.onChangeWrapper(t))};onChangeWrapper=e=>{this.typingTimer&&clearTimeout(this.typingTimer),this.typingTimer=setTimeout(t=>{this.typingTimer=null;const n=this.onChange(this.props.attr,t);n instanceof Promise&&n.catch(u=>this.onError(u))},300,e)};onAdd=async()=>{const{schema:e}=this.props,t=JSON.parse(JSON.stringify(this.state.value)),n={};if(e.items)for(const u of e.items){let i;u.defaultFunc?this.props.custom?i=u.defaultFunc?await this.executeCustom(u.defaultFunc,this.props.data,this.props.customObj,this.props.oContext.instanceObj,t.length,this.props.data):this.props.schema.default:i=u.defaultFunc?await this.execute(u.defaultFunc,this.props.schema.default,this.props.data,t.length,this.props.data):this.props.schema.default:i=u.default??null,n[u.attr]=i}t.push(n),this.setState({value:t,activeIndex:t.length-1},()=>this.onChangeWrapper(t))};onMoveUp(e){const t=JSON.parse(JSON.stringify(this.state.value)),n=t[e];t.splice(e,1),t.splice(e-1,0,n);const u=this.state.activeIndex-1;this.setState({value:t,activeIndex:u,iteration:this.state.iteration+1e4},()=>this.onChangeWrapper(t))}onMoveDown(e){const t=JSON.parse(JSON.stringify(this.state.value)),n=t[e];t.splice(e,1),t.splice(e+1,0,n);const u=this.state.activeIndex+1;this.setState({value:t,activeIndex:u,iteration:this.state.iteration+1e4},()=>this.onChangeWrapper(t))}onExport=()=>{const{value:e}=this.state,t=JSON.stringify(e,null,2),n=`data:application/json;charset=utf-8,${encodeURIComponent(t)}`,u=`config_section_${new Date().toISOString().slice(0,19).replace(/:/g,"-")}.json`,i=document.createElement("a");i.setAttribute("href",n),i.setAttribute("download",u),i.click()};onImport=e=>{const t=document.createElement("input");t.type="file",t.accept=".json",t.onchange=n=>{var s;const u=(s=n.target.files)==null?void 0:s[0];if(!u)return;const i=new FileReader;i.onload=d=>{var o;try{const l=JSON.parse((o=d.target)==null?void 0:o.result);if(!Array.isArray(l)){alert(P.I18n.t("ra_Invalid JSON format. Expected an array."));return}let r;e?r=l:r=[...this.state.value,...l],this.setState({value:r,activeIndex:-1},()=>this.onChangeWrapper(r))}catch{alert(P.I18n.t("ra_Invalid JSON file."))}},i.readAsText(u)},t.click()};renderItem(){const{schema:e}=this.props,{value:t}=this.state;return t?x.createElement(In,null,e.label||!e.noDelete?x.createElement(Pn,{variant:"dense"},e.label?x.createElement(yt,{variant:"h6",id:"tableTitle",component:"div"},this.getText(e.label)):null,e.noDelete?null:x.createElement(x.Fragment,null,x.createElement(ge,{title:P.I18n.t("ra_Export configuration section")},x.createElement(se,{size:"small",color:"primary",onClick:this.onExport},x.createElement(bc,null))),x.createElement(ge,{title:P.I18n.t("ra_Import and replace configuration section")},x.createElement(se,{size:"small",color:"primary",onClick:()=>this.onImport(!0)},x.createElement(wc,null))),x.createElement(ge,{title:P.I18n.t("ra_Import and add configuration section")},x.createElement(se,{size:"small",color:"primary",onClick:()=>this.onImport(!1)},x.createElement(Cc,null))),x.createElement(se,{size:"small",color:"primary",onClick:this.onAdd},x.createElement(Un,null)))):null,t.map((n,u)=>x.createElement(Ws,{key:`${n}_${u}`,expanded:this.state.activeIndex===u,onChange:(i,s)=>this.setState({activeIndex:s?u:-1})},x.createElement(js,{expandIcon:x.createElement(Mi,null),sx:P.Utils.getStyle(this.props.oContext.theme,tt.fullWidth,tt.accordionSummary)},x.createElement(Ie,{sx:{display:"flex",alignItems:"center",gap:1,width:"100%"}},x.createElement(yt,{style:tt.accordionTitle},n[e.titleAttr]),this.hasAccordionErrors(u)&&x.createElement(Jt,{sx:{fontSize:20,color:"error.main"}}))),x.createElement(zs,{style:{...e.style,...this.props.oContext.themeType?e.darkStyle:void 0}},this.itemAccordion(t[u],u),x.createElement(Pn,{sx:tt.toolbar},u?x.createElement(ge,{title:P.I18n.t("ra_Move up"),slotProps:{popper:{sx:tt.tooltip}}},x.createElement(se,{size:"small",onClick:()=>this.onMoveUp(u)},x.createElement(Ei,null))):x.createElement("div",{style:tt.buttonEmpty}),uthis.onMoveDown(u)},x.createElement(Ai,null))):x.createElement("div",{style:tt.buttonEmpty}),e.noDelete?null:x.createElement(ge,{title:P.I18n.t("ra_Delete current row"),slotProps:{popper:{sx:tt.tooltip}}},x.createElement(se,{size:"small",onClick:this.onDelete(u)},x.createElement(_t,null))),e.clone?x.createElement(ge,{title:P.I18n.t("ra_Clone current row"),slotProps:{popper:{sx:tt.tooltip}}},x.createElement(se,{size:"small",onClick:this.onClone(u)},x.createElement(fn,null))):null)))),!e.noDelete&&t.length>0?x.createElement(Pn,{variant:"dense",sx:tt.rootTool},x.createElement(se,{size:"small",color:"primary",onClick:this.onAdd},x.createElement(Un,null))):null,e.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null):null}}const Wr={root:{width:"100%"},notAlive:{color:"#a30000"}};class wh extends V{aliveId=null;checkTimeout=null;async componentDidMount(){await super.componentDidMount();const e=await this.getInstance();this.aliveId=`${e}.alive`;const t=await this.props.oContext.socket.getState(this.aliveId);this.setState({alive:!!(t&&t.val),instance:e},async()=>{await this.props.oContext.socket.subscribeState(this.aliveId,this.onAliveChanged)})}componentWillUnmount(){this.checkTimeout&&(clearTimeout(this.checkTimeout),this.checkTimeout=null),this.props.oContext.socket.unsubscribeState(this.aliveId,this.onAliveChanged)}onAliveChanged=(e,t)=>{e===this.aliveId&&this.state.alive!==!!(t!=null&&t.val)&&this.setState({alive:!!(t!=null&&t.val)})};async getInstance(){let e=this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`;return e.includes("${")&&(e=await this.getPatternAsync(e,null,!0)),e&&!e.startsWith("system.adapter.")&&(e=`system.adapter.${e}`),e}checkIfInstanceChanged(){this.checkTimeout&&clearTimeout(this.checkTimeout),this.checkTimeout=setTimeout(async()=>{this.checkTimeout=null;const e=await this.getInstance();e!==this.state.instance&&(e?this.props.oContext.socket.getState(`${e}.alive`).then(t=>this.setState({alive:!!(t&&t.val),instance:e})):this.setState({alive:null,instance:e}))},200)}renderItem(){if(this.checkIfInstanceChanged(),this.state.alive!==!1&&this.state.alive!==!0)return null;const e=this.state.instance.replace(/^system\.adapter\./,"");return x.createElement("div",{style:{...Wr.root,...this.state.alive?void 0:Wr.notAlive}},this.state.alive?this.props.schema.textAlive!==void 0?this.props.schema.textAlive?P.I18n.t(this.props.schema.textAlive,e):"":P.I18n.t("ra_Instance %s is alive",e):this.props.schema.textNotAlive!==void 0?this.props.schema.textNotAlive?P.I18n.t(this.props.schema.textNotAlive,e):"":P.I18n.t("ra_Instance %s is not alive",e))}}class Ch extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr),t=this.props.schema.options.map(n=>typeof n=="string"?{label:n,value:n}:JSON.parse(JSON.stringify(n)));if(this.props.onFilterLabelUpdate&&this.props.table){const n={};for(const u of t)u.value!==V.DIFFERENT_VALUE&&(n[u.value]=u.label);this.props.onFilterLabelUpdate(this.props.attr,n)}Array.isArray(e)?(t.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),this.setState({value:V.DIFFERENT_VALUE,selectOptions:t})):this.setState({value:e,selectOptions:t})}renderItem(e,t){if(!this.state.selectOptions)return null;let n;const u=JSON.parse(JSON.stringify(this.state.selectOptions));return Array.isArray(this.state.value)||this.state.value===V.DIFFERENT_VALUE?([...this.state.value].filter(s=>!u.find(d=>typeof d=="object"?d.value===s:d===s)).forEach(s=>u.push({label:s.toString(),value:s})),n={label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE},u.unshift(n)):(n=this.state.value!==null&&this.state.value!==void 0&&u.find(s=>typeof s=="object"?s.value==this.state.value:s==this.state.value),this.state.value!==null&&this.state.value!==void 0&&!n&&this.props.schema.freeSolo&&(n={value:this.state.value,label:this.state.value},u.push(n))),x.createElement(Pi,{fullWidth:!0,freeSolo:!!this.props.schema.freeSolo,value:n,options:u,isOptionEqualToValue:(s,d)=>s.value===d.value,filterOptions:(s,d)=>{const o=s.filter(l=>d.inputValue===""?!0:l.label.toLowerCase().includes(d.inputValue.toLowerCase())||l.value.toLowerCase().includes(d.inputValue.toLowerCase()));return this.props.schema.freeSolo&&d.inputValue!==""&&o.push({label:d.inputValue,value:d.inputValue}),o},onInputChange:s=>{if(!s||!this.props.schema.freeSolo)return;const d=s.target.value;d!==this.state.value&&this.setState({value:d},()=>this.onChange(this.props.attr,d))},onChange:(s,d)=>{const o=typeof d=="object"?d?d.value:"":d;o!==this.state.value&&this.setState({value:o},()=>this.onChange(this.props.attr,o))},getOptionLabel:s=>typeof s=="object"?(s==null?void 0:s.label)??"":"",renderInput:s=>x.createElement(pe,{variant:"standard",...s,error:!!e,placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),disabled:t})})}}class Sh extends V{initialized=!1;localContext;async askInstance(){const e=V.getValue(this.props.data,this.props.attr),t=this.props.schema.options?this.props.schema.options.map(n=>typeof n=="string"?{label:n,value:n}:JSON.parse(JSON.stringify(n))):[];if(this.props.alive){let n=this.props.schema.data;if(n===void 0&&this.props.schema.jsonData){const i=await this.getPatternAsync(this.props.schema.jsonData,null,!0);try{typeof i=="string"&&(n=JSON.parse(i))}catch{console.error(`Cannot parse json data: ${JSON.stringify(n)}`)}}n===void 0&&(n=null),this.setState({loading:!0});const u=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(u!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const i=await this.props.oContext.socket.getState(`system.adapter.${u}.alive`);if(!(i!=null&&i.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",u));return}}this.props.oContext.socket.sendTo(u,this.props.schema.command||"send",n).then(i=>{i&&Array.isArray(i)&&i.forEach(s=>t.push(typeof s=="string"?{label:s,value:s}:JSON.parse(JSON.stringify(s)))),this.reportFilterLabels(t),Array.isArray(e)?(t.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),this.setState({value:V.DIFFERENT_VALUE,selectOptions:t,loading:!1})):this.setState({value:e,selectOptions:t,loading:!1})}).catch(i=>{console.error("Error in autocompleteSendTo:",i),this.setState({loading:!1})})}else Array.isArray(e)?(t.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),this.reportFilterLabels(t),this.setState({value:V.DIFFERENT_VALUE,selectOptions:t})):(this.reportFilterLabels(t),this.setState({value:e,selectOptions:t}))}reportFilterLabels(e){if(this.props.onFilterLabelUpdate&&this.props.table){const t={};for(const n of e)n.value!==V.DIFFERENT_VALUE&&(t[n.value]=n.label);this.props.onFilterLabelUpdate(this.props.attr,t)}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(e,t){if(this.props.alive){const s=this.getContext();(s!==this.localContext||!this.initialized)&&(this.localContext=s,setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}let n;const u=this.state.selectOptions?JSON.parse(JSON.stringify(this.state.selectOptions)):[];return Array.isArray(this.state.value)||this.state.value===V.DIFFERENT_LABEL?([...this.state.value].filter(s=>!u.find(d=>d.value===s)).forEach(s=>u.push({label:s.toString(),value:s})),n={label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE},u.unshift(n)):(n=this.state.value!==null&&this.state.value!==void 0&&u.find(s=>s.value==this.state.value),this.state.value!==null&&this.state.value!==void 0&&!n&&this.props.schema.freeSolo&&(n={value:this.state.value,label:this.state.value},u.push(n)),n=n||null),u.length?x.createElement(Pi,{value:n,fullWidth:!0,freeSolo:!!this.props.schema.freeSolo,options:u,disabled:t,isOptionEqualToValue:(s,d)=>s.value===d.value,filterOptions:(s,d)=>{const o=s.filter(l=>d.inputValue===""?!0:l.label.toLowerCase().includes(d.inputValue.toLowerCase())||l.value.toLowerCase().includes(d.inputValue.toLowerCase()));return this.props.schema.freeSolo&&d.inputValue!==""&&o.push({label:d.inputValue,value:d.inputValue}),o},getOptionLabel:s=>(s==null?void 0:s.label)??"",onInputChange:s=>{if(!s||!this.props.schema.freeSolo)return;const d=s.target.value;d!==this.state.value&&this.setState({value:d},()=>this.onChange(this.props.attr,d))},onChange:(s,d)=>{const o=typeof d=="object"?d?d.value:"":d;o!==this.state.value&&this.setState({value:o},()=>this.onChange(this.props.attr,o))},renderInput:s=>x.createElement(pe,{variant:"standard",...s,error:!!e,placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),disabled:t,slotProps:{input:{...s.InputProps,endAdornment:x.createElement(x.Fragment,null,this.state.loading?x.createElement(vn,{position:"end"},x.createElement(Tt,{size:20})):null,t?null:s.InputProps.endAdornment)}}})}):x.createElement(pe,{variant:"standard",fullWidth:!0,value:this.state.value??"",error:!!e,disabled:t,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0},input:{endAdornment:this.state.loading?x.createElement(vn,{position:"end"},x.createElement(Tt,{size:20})):null}},onChange:s=>{const d=s.target.value;this.setState({value:d},()=>this.onChange(this.props.attr,(d||"").trim()))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}const us={fullWidth:{width:"100%"},flex:{display:"flex"},button:{height:48,marginLeft:4,minWidth:48}};class Eh extends V{async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t)||"";this.setState({value:n,showDialog:!1})}renderItem(e,t){const{schema:n,attr:u}=this.props,{value:i,showDialog:s}=this.state;return x.createElement(fe,{style:us.fullWidth,variant:"standard"},n.label?x.createElement(Te,{shrink:!0},this.getText(n.label)):null,x.createElement("div",{style:us.flex},x.createElement(pe,{variant:"standard",fullWidth:!0,value:i??"",error:!!e,disabled:t,placeholder:this.getText(n.placeholder),label:this.getText(n.label),helperText:this.renderHelp(n.help,n.helpLink,n.noTranslation),onChange:d=>{const o=d.target.value;this.setState({value:o},()=>this.onChange(u,o))}}),x.createElement(me,{color:"grey",disabled:t,style:us.button,size:"small",variant:"outlined",onClick:()=>this.setState({showDialog:!0})},"...")),s?x.createElement(P.DialogCron,{title:P.I18n.t("ra_Define schedule"),simple:n.simple,complex:n.complex,cron:i,onClose:()=>this.setState({showDialog:!1}),cancel:P.I18n.t("ra_Cancel"),ok:P.I18n.t("ra_Ok"),theme:this.props.oContext.theme,onOk:d=>this.setState({showDialog:!1,value:d},()=>this.onChange(u,d))}):null)}}class Ah extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr),n=(await this.props.oContext.socket.getCertificates()).filter(u=>{const i=this.props.attr.toLowerCase();return i.includes(u.type)||u.type==="public"&&i.includes("cert")||u.type==="private"&&(i.includes("priv")||i.includes("key"))?!0:!!(u.type==="chained"&&(i.includes("chain")||i.includes("ca")))}).map(u=>({label:u.name,value:u.name}));n.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({value:e,selectOptions:n})}renderItem(e,t){var u,i;if(!this.state.selectOptions)return null;const n=(u=this.state.selectOptions)==null?void 0:u.find(s=>s.value===this.state.value);return x.createElement(fe,{style:{width:"100%"},variant:"standard"},this.props.schema.label?x.createElement(Te,{shrink:!0},this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:this.state.value,renderValue:()=>this.getText(n==null?void 0:n.label,this.props.schema.noTranslation!==!1),onChange:s=>this.setState({value:s.target.value},()=>this.onChange(this.props.attr,this.state.value))},(i=this.state.selectOptions)==null?void 0:i.map(s=>x.createElement(xe,{key:s.value,value:s.value,style:s.value===V.NONE_VALUE?{opacity:.5}:{}},this.getText(s.label,this.props.schema.noTranslation!==!1)))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Ln={fullWidth:{width:"100%"},leWidth:{width:620,marginBottom:10},certWidth:{width:200,marginRight:10}};class Dh extends V{async componentDidMount(){var d;await super.componentDidMount();const e=await this.props.oContext.socket.getCertificates(),t=[],n=[],u=[];let i=[];const s=await this.getCachedObject("system.certificates");(d=s==null?void 0:s.native)!=null&&d.collections?i=Object.keys(s.native.collections):i=null,e.forEach(o=>{o.type==="public"?t.push({label:o.name,value:o.name}):o.type==="private"?n.push({label:o.name,value:o.name}):o.type==="chained"?u.push({label:o.name,value:o.name}):(t.push({label:o.name,value:o.name}),n.push({label:o.name,value:o.name}),u.push({label:o.name,value:o.name}))}),t.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),n.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),u.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({certsPublicOptions:t,certsChainOptions:u,certsPrivateOptions:n,collectionsOptions:i})}renderItem(e,t){var r,a,c,p,h,f,g;if(!this.state.certsPublicOptions||!this.state.certsPrivateOptions||!this.state.certsChainOptions)return null;const n=(V.getValue(this.props.data,this.props.schema.leCollectionName||"leCollection")||"false").toString(),u=V.getValue(this.props.data,this.props.schema.certPublicName||"certPublic"),i=V.getValue(this.props.data,this.props.schema.certPrivateName||"certPrivate"),s=V.getValue(this.props.data,this.props.schema.certChainedName||"certChained"),d=(r=this.state.certsPublicOptions)==null?void 0:r.find(v=>v.value===u),o=(a=this.state.certsPrivateOptions)==null?void 0:a.find(v=>v.value===i),l=(c=this.state.certsChainOptions)==null?void 0:c.find(v=>v.value===s);return x.createElement("div",{style:Ln.fullWidth},this.state.collectionsOptions?x.createElement(fe,{style:Ln.leWidth,variant:"standard"},x.createElement(Te,{shrink:!0},"Let's encrypt"),x.createElement(Be,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:n,onChange:v=>this.onChange(this.props.schema.leCollectionName||"leCollection",v.target.value==="false"?!1:v.target.value==="true"?!0:v.target.value)},x.createElement(xe,{key:"_false",value:"false",style:{fontWeight:"bold"}},P.I18n.t("ra_Do not use let's encrypt")),x.createElement(xe,{key:"_true",value:"true",style:{fontWeight:"bold"}},P.I18n.t("ra_Use all available let's encrypt certificates")),(p=this.state.collectionsOptions)==null?void 0:p.map(v=>x.createElement(xe,{key:v,value:v},v)))):null,this.state.collectionsOptions?x.createElement("br",null):null,this.state.collectionsOptions&&n!=="false"?x.createElement("div",null,P.I18n.t("ra_Fallback custom certificates")):null,x.createElement(fe,{style:Ln.certWidth,variant:"standard"},x.createElement(Te,{shrink:!0},P.I18n.t("ra_Public certificate")),x.createElement(Be,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:u||"",renderValue:()=>this.getText(d==null?void 0:d.label,!0),onChange:v=>this.onChange(this.props.schema.certPublicName||"certPublic",v.target.value)},(h=this.state.certsPublicOptions)==null?void 0:h.map((v,b)=>x.createElement(xe,{key:`${v.value}_${b}`,value:v.value,style:v.value===V.NONE_VALUE?{opacity:.5}:{}},this.getText(v.label,!0))))),x.createElement(fe,{style:Ln.certWidth,variant:"standard"},x.createElement(Te,{shrink:!0},P.I18n.t("ra_Private certificate")),x.createElement(Be,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:i||"",renderValue:()=>this.getText(o==null?void 0:o.label,!0),onChange:v=>this.onChange(this.props.schema.certPrivateName||"certPrivate",v.target.value)},(f=this.state.certsPrivateOptions)==null?void 0:f.map((v,b)=>x.createElement(xe,{key:`${v.value}_${b}`,value:v.value,style:v.value===V.NONE_VALUE?{opacity:.5}:{}},this.getText(v.label,!0))))),x.createElement(fe,{style:Ln.certWidth,variant:"standard"},x.createElement(Te,{shrink:!0},P.I18n.t("ra_Chained certificate")),x.createElement(Be,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:s||"",renderValue:()=>this.getText(l==null?void 0:l.label,!0),onChange:v=>this.onChange(this.props.schema.certChainedName||"certChained",v.target.value)},(g=this.state.certsChainOptions)==null?void 0:g.map((v,b)=>x.createElement(xe,{key:`${v.value}_${b}`,value:v.value,style:v.value===V.NONE_VALUE?{opacity:.5}:{}},this.getText(v.label,!0))))))}}class $h extends V{async componentDidMount(){var n;await super.componentDidMount();let e;const t=await this.getCachedObject("system.certificates");(n=t==null?void 0:t.native)!=null&&n.collections?e=Object.keys(t.native.collections):e=[],this.setState({collectionsOptions:e})}renderItem(e,t){var u;if(!this.state.collectionsOptions)return null;const n=(V.getValue(this.props.data,this.props.schema.leCollectionName||"leCollection")||"false").toString();return x.createElement(fe,{style:{width:"100%"},variant:"standard"},this.props.schema.label?x.createElement(Te,{shrink:!0},this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:n,onChange:i=>this.onChange(this.props.schema.leCollectionName||"leCollection",i.target.value==="false"?!1:i.target.value==="true"?!0:i.target.value)},x.createElement(xe,{key:"_false",value:"false",style:{fontWeight:"bold"}},P.I18n.t("ra_Do not use let's encrypt")),x.createElement(xe,{key:"_true",value:"true",style:{fontWeight:"bold"}},P.I18n.t("ra_Use all available let's encrypt certificates")),(u=this.state.collectionsOptions)==null?void 0:u.map(i=>x.createElement(xe,{key:i,value:i},i))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class xh extends V{async componentDidMount(){await super.componentDidMount();const e=await this.props.oContext.socket.getCurrentInstance();this.setState({requesting:!0},async()=>{const t=await this.props.oContext.socket.sendTo(e,"checkDocker",null);this.setState({requesting:!1,version:(t==null?void 0:t.version)||"",errorDocker:t?t.daemonRunning?"":P.I18n.t("ra_Docker is not installed or not running"):P.I18n.t("ra_No response from admin")})})}renderItem(e,t){const n=V.getValue(this.props.data,this.props.attr);return this.state.requesting?x.createElement(Tt,null):this.state.errorDocker&&!n?x.createElement(ve,{style:{color:"orange"}},P.I18n.t("ra_Docker is not available"),": ",P.I18n.t(`ra_${this.state.errorDocker}`).replace(/^ra_/,"")):x.createElement(fe,{style:{width:"100%"},variant:"standard"},x.createElement(Xn,{onClick:u=>{if(u.preventDefault(),u.stopPropagation(),!t){const i=this.onChange(this.props.attr,!n);i instanceof Promise&&i.catch(s=>console.error(`Cannot set value: ${s}`))}},control:x.createElement(Zt,{checked:!!n,onChange:u=>{this.onChange(this.props.attr,u.target.checked)},disabled:t||!!this.state.errorDocker&&!n}),label:this.getText(this.props.schema.label)}),this.props.schema.hideVersion?null:x.createElement(ve,null,this.state.errorDocker?this.state.errorDocker:this.state.version),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Ke={fullWidth:{width:"100%"},licLabel:{fontWeight:"bold",minWidth:100,marginRight:10,textTransform:"capitalize",display:"inline-block"},errorTitle:m=>({color:m.palette.mode==="dark"?"#e39191":"#b62020"}),okTitle:m=>({color:m.palette.mode==="dark"?"#6fd56f":"#007c00"}),errorText:m=>({color:m.palette.mode==="dark"?"#e39191":"#b62020",mb:"30px"})};class $t extends V{async componentDidMount(){await super.componentDidMount(),this.setState({_error:"",running:!1,showLicenseData:null,foundSuitableLicense:!1,licenseOfflineCheck:!1,result:null,allLicenses:null,askForUpdate:!1,showLinkToProfile:!1})}renderErrorDialog(){if(this.state._error&&!this.state.showLicenseData){let e=this.state._error;return this.state.allLicenses&&(e=[x.createElement("div",{key:"error"},e)],e.push(x.createElement(me,{key:"button",variant:"contained",onClick:()=>window.open("https://iobroker.net/www/account/licenses","_blank")},P.I18n.t("iobroker.net"))),this.state.allLicenses.length?e.push(x.createElement(Do,{key:"table"},x.createElement(On,{size:"small"},x.createElement($o,null,x.createElement(ct,null,x.createElement(Ee,null,P.I18n.t("ra_Product")),x.createElement(Ee,null,P.I18n.t("ra_Version")),x.createElement(Ee,null,"UUID"),x.createElement(Ee,null,P.I18n.t("ra_ValidTill")),x.createElement(Ee,null,P.I18n.t("ra_Commercial")),x.createElement(Ee,null,"ID"))),x.createElement(Fn,null,this.state.allLicenses.map(t=>x.createElement(ct,{key:t.id},x.createElement(Ee,{sx:t.validName?null:Ke.errorText},t.license.product),x.createElement(Ee,{sx:t.validVersion?null:Ke.errorText},t.license.version),x.createElement(Ee,{sx:t.validUuid?null:Ke.errorText},t.license.uuid||"--"),x.createElement(Ee,{sx:t.validTill?null:Ke.errorText},t.license.validTill&&t.license.validTill!=="0000-00-00 00:00:00"?new Date(t.license.validTill).toLocaleDateString():"--"),x.createElement(Ee,null,t.license.invoice!=="free"?t.license.invoice==="MANUALLY_CREATED"?"✓":t.license.invoice:"-"),x.createElement(Ee,null,t.id))))))):(e.push(x.createElement("div",{key:"text1"},P.I18n.t("ra_No one license found in license manager"))),e.push(x.createElement("div",{key:"text2"},P.I18n.t("ra_Please create license"))))),x.createElement(Lt,{open:!0,maxWidth:"xl",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClick:()=>this.setState({_error:"",allLicenses:null})},x.createElement(yn,null,P.I18n.t("ra_Error")),x.createElement(Kt,null,x.createElement(Xl,null,e)),x.createElement(Gt,null,x.createElement(me,{variant:"contained",onClick:()=>this.setState({_error:"",allLicenses:null}),color:"primary",autoFocus:!0,startIcon:x.createElement(Ks,null)},P.I18n.t("ra_Ok"))))}return null}renderMessageDialog(){if(this.state.showLicenseData){const e=[],t=this.state.showLicenseData;return Object.keys(t).forEach(n=>{if(!(t[n]===null||t[n]===void 0))if(typeof t[n]=="object"){const u=t[n];Object.keys(u).forEach(i=>{u[i]!==null&&u[i]!==void 0&&(typeof u[i]=="object"?e.push(x.createElement("div",{key:i},x.createElement("div",{style:Ke.licLabel},i,":"),JSON.stringify(u[i],null,2))):e.push(x.createElement("div",{key:i},x.createElement("div",{style:Ke.licLabel},n," -",i,":"),u[i].toString())))})}else e.push(x.createElement("div",{key:n},x.createElement("div",{style:Ke.licLabel},n.replace(/_/g," "),":"),t[n].toString()))}),e.push(x.createElement("div",{key:"checked"},x.createElement("div",{style:Ke.licLabel},P.I18n.t("ra_Checked"),":"),this.state.licenseOfflineCheck?P.I18n.t("ra_locally"):P.I18n.t("ra_via internet"))),x.createElement(Lt,{open:!0,onClose:()=>this.setState({showLicenseData:null})},x.createElement(yn,null,x.createElement(Ie,{component:"span",sx:this.state.result?Ke.okTitle:Ke.errorTitle},P.I18n.t("ra_License %s",this.state.result?"OK":"INVALID"))),x.createElement(Kt,null,this.state.showLinkToProfile?x.createElement(me,{variant:"contained",onClick:()=>window.open("https://iobroker.net/www/account/licenses","_blank")},"https://iobroker.net"):null,this.state._error?x.createElement(Ie,{component:"div",sx:Ke.errorText},this.state._error):null,e),x.createElement(Gt,null,x.createElement(me,{onClick:()=>this.setState({showLicenseData:null,_error:""}),color:"primary",variant:"contained"},P.I18n.t("ra_Close"))))}return null}static parseJwt(e){const n=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),u=decodeURIComponent(atob(n).split("").map(i=>`%${`00${i.charCodeAt(0).toString(16)}`.slice(-2)}`).join(""));try{return JSON.parse(u)}catch{return null}}static isVersionValid(e,t,n,u){if(!t||!e)return!0;let i=!0;const[s]=e.split(".");return t.startsWith(">=")?i=parseInt(s,10)>=parseInt(t.substring(2,10)):t.startsWith("<=")?i=parseInt(s,10)<=parseInt(t.substring(2,10)):t.startsWith(">")?i=parseInt(s,10)>parseInt(t.substring(1,10)):t.startsWith("<")?i=parseInt(s,10){const p=!c.validTill||c.validTill==="0000-00-00 00:00:00"||new Date(c.validTill).getTime()>l,h=(c.product||"").split("."),f=h[1]===e||e==="vis-2"&&h[1]==="vis",g=!r||!c.uuid||c.uuid===r,v=$t.isVersionValid(a,c.version,c.invoice,e);(!o||c.invoice!=="free")&&p&&f&&g&&v&&(o=c),n.push({id:c.id,validName:f,validUuid:g,validVersion:v,validTill:p,license:c})}),o&&(n.find(c=>c.id===o.id).used=!0)}return n}async checkLicense(e,t){var d,o,l;let n;if(this.props.schema.uuid){const r=await this.getCachedObject("system.meta.uuid");n=(d=r==null?void 0:r.native)==null?void 0:d.uuid}let u;if(this.props.schema.version){const r=await this.getCachedObject(`system.adapter.${t}`);u=(o=r==null?void 0:r.common)==null?void 0:o.version}const i=new AbortController;let s=setTimeout(()=>{s=null,i.abort()},5e3);try{const r=await window.fetch("https://iobroker.net/api/v1/public/cert/",{method:"POST",body:JSON.stringify({json:e,uuid:n}),headers:{"Content-Type":"text/plain"},signal:i.signal});s&&clearTimeout(s);const a=await r.text();let c;try{c=JSON.parse(a)}catch{}if(c!=null&&c.error)try{const p=$t.parseJwt(e),h=P.I18n.t(`ra_${p.error||c.error||"Unknown error"}`).replace(/^ra_/,"");return this.setState({_error:h,licenseOfflineCheck:!1,showLicenseData:p,result:!1,running:!1})}catch{return console.log("Cannot parse license"),this.setState({_error:c.error,result:!1,running:!1})}else{let p=null;try{p=$t.parseJwt(e)}catch{}if(c){const h=c.validTill||c.valid_till;if(h&&h!=="0000-00-00 00:00:00"&&new Date(h).getTime(){if(e){this.setState({askForUpdate:!1});try{await this.props.oContext.socket.updateLicenses(null,null)}catch(t){window.alert(P.I18n.t("ra_Cannot read licenses: %s",t));return}await this._onClick(!0)}else this.setState({askForUpdate:!1,running:!1})}}):null}async _onClick(e){const t=this.props.oContext.adapterName==="vis-2"?"vis":this.props.oContext.adapterName;this.setState({running:!0});let n,u;if(this.props.data.useLicenseManager){if(u=await this.findInLicenseManager(t),n=u.find(i=>i.used),n&&(n=n.license.json),!n&&!e){this.setState({askForUpdate:!0});return}}else n=this.props.data.license;n?await this.checkLicense(n,t):this.props.data.useLicenseManager?this.setState({_error:P.I18n.t("ra_Suitable license not found in license manager"),result:!1,running:!1,allLicenses:u}):this.setState({_error:P.I18n.t("ra_Please enter the license"),result:!1,running:!1})}renderItem(){return x.createElement("div",{style:Ke.fullWidth},x.createElement(me,{variant:this.props.schema.variant||"outlined",color:this.props.schema.color||"primary",style:Ke.fullWidth,disabled:!this.props.data.license&&!this.props.data.useLicenseManager||this.state.running,startIcon:x.createElement(To,null),onClick:()=>this._onClick()},this.state.running?x.createElement(Tt,{size:20,style:{marginRight:8}}):null,this.getText(this.props.schema.label||"ra_Check license",this.props.schema.noTranslation)),this.renderMessageDialog(),this.renderErrorDialog(),this.renderAskForUpdate())}}class _h extends V{renderItem(e,t){const n=V.getValue(this.props.data,this.props.attr),u=Array.isArray(n);return x.createElement(fe,{style:{width:"100%"},variant:"standard"},x.createElement(Xn,{onClick:i=>{if(i.preventDefault(),i.stopPropagation(),!t){const s=this.onChange(this.props.attr,!n);s instanceof Promise&&s.catch(d=>console.error(`Cannot set value: ${d}`))}},control:x.createElement(Zt,{indeterminate:u,checked:!!n,onChange:i=>{let s;u?s=this.onChange(this.props.attr,!0):s=this.onChange(this.props.attr,i.target.checked),s instanceof Promise&&s.catch(d=>console.error(`Cannot set value: ${d}`))},disabled:t||this.props.schema.readOnly}),label:this.getText(this.props.schema.label)}),x.createElement(ve,{style:{color:"red"}},e?this.props.schema.validatorErrorText?P.I18n.t(this.props.schema.validatorErrorText):P.I18n.t("ra_Error"):null),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const kh={standard:ec,filled:ql,outlined:Zl},Th=m=>{const e=m.palette.mode==="light",t=e?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return{root:{},inputRoot:{display:"inline-flex",flexWrap:"wrap",flex:1,marginTop:0,minWidth:70,"&.mui-variant-outlined,&.mui-variant-filled":{boxSizing:"border-box"},"&.mui-variant-outlined":{paddingTop:"14px"},"&.mui-variant-filled":{paddingTop:"28px"}},input:{display:"inline-block",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",appearance:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",float:"left",flex:1},chipContainer:{display:"flex",flexFlow:"row wrap",alignItems:"center",cursor:"text",marginBottom:"-2px",minHeight:40},outlined:{"& input":{height:16,paddingTop:"4px",paddingBottom:"12px",marginTop:"4px",marginBottom:"4px"}},standard:{marginTop:"18px"},filled:{"& input":{height:22,marginBottom:"4px",marginTop:"4px",paddingTop:0},"$marginDense & input":{height:26}},labeled:{},label:{top:4,"&$outlined&:not($labelShrink)":{top:2,"$marginDense &":{top:5}},"&$filled&:not($labelShrink)":{top:15,"$marginDense &":{top:20}}},labelShrink:{top:0},helperText:{marginBottom:-20},focused:{},disabled:{},underline:{"&:after":{borderBottom:`2px solid ${m.palette.primary[e?"dark":"light"]}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:m.transitions.create("transform",{duration:m.transitions.duration.shorter,easing:m.transitions.easing.easeOut}),pointerEvents:"none"},"&$focused:after":{transform:"scaleX(1)"},"&$error:after":{borderBottomColor:m.palette.error.main,transform:"scaleX(1)"},"&:before":{borderBottom:`1px solid ${t}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:m.transitions.create("border-bottom-color",{duration:m.transitions.duration.shorter}),pointerEvents:"none"},"&:hover:not($disabled):not($focused):not($error):before":{borderBottom:`2px solid ${m.palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${t}`}},"&$disabled:before":{borderBottomStyle:"dotted"}},error:{"&:after":{backgroundColor:m.palette.error.main,transform:"scaleX(1)"}},chip:{margin:"0 8px 8px 0",float:"left"},marginDense:{}}},pi={BACKSPACE:8,DELETE:46,LEFT_ARROW:37,RIGHT_ARROW:39},Lh=({value:m,isFocused:e,isDisabled:t,isReadOnly:n,handleClick:u,handleDelete:i,style:s},d)=>x.createElement(Hs,{key:d,style:{...s,pointerEvents:t||n?"none":void 0,backgroundColor:e?Jc[300]:void 0},onClick:u,onDelete:i,label:m});class Mh extends x.Component{labelRef;labelNode=null;input;newChipKeyCodes;newChipKeys;actualInput=null;inputBlurTimeout=null;_keyPressed;_preventChipCreation;styles={};styleTheme=null;constructor(e){super(e),this.state={chips:e.defaultValue||[],focusedChip:null,inputValue:"",isFocused:!1,chipsUpdated:!1,prevPropsValue:[],variant:this.props.variant||"standard"},this.newChipKeyCodes=e.newChipKeyCodes||[13],this.newChipKeys=e.newChipKeys||["Enter"],this.labelRef=x.createRef(),this.input=x.createRef()}componentDidMount(){this.state.variant==="outlined"&&(this.labelNode=Gc.findDOMNode(this.labelRef.current),this.forceUpdate())}componentWillUnmount(){this.inputBlurTimeout&&clearTimeout(this.inputBlurTimeout)}static getDerivedStateFromProps(e,t){let n=null;return e.value&&e.value.length!==t.prevPropsValue.length&&(n={prevPropsValue:e.value},e.clearInputValueOnChange&&(n.inputValue="")),e.clearInputValueOnChange&&e.value&&e.value.length!==t.prevPropsValue.length&&(n={prevPropsValue:e.value,inputValue:""}),e.disabled&&(n={...n,focusedChip:null}),!t.chipsUpdated&&e.defaultValue&&(n={...n,chips:e.defaultValue}),n}focus=()=>{var e;(e=this.actualInput)==null||e.focus(),this.state.focusedChip&&this.setState({focusedChip:null})};handleInputBlur=e=>{this.props.onBlur&&this.props.onBlur(e),this.setState({isFocused:!1}),this.state.focusedChip&&this.setState({focusedChip:null});const t=e.target.value;let n;switch(this.props.blurBehavior||"clear"){case"add-or-clear":n={clearInputOnFail:!0};case"add":if(this.props.delayBeforeAdd){const u=(this.props.value||this.state.chips).length;this.inputBlurTimeout=setTimeout(()=>{const i=(this.props.value||this.state.chips).length;u===i?this.handleAddChip(t,n):this.clearInput()},150)}else this.handleAddChip(t,n);break;case"clear":this.clearInput();break}};handleInputFocus=e=>{var t,n;this.setState({isFocused:!0}),(n=(t=this.props).onFocus)==null||n.call(t,e)};handleKeyDown=e=>{const{focusedChip:t}=this.state;if(this._keyPressed=!1,this._preventChipCreation=!1,this.props.onKeyDown&&(this.props.onKeyDown(e),e.isDefaultPrevented()))return;const n=this.props.value||this.state.chips;if(this.newChipKeyCodes.includes(e.keyCode)||this.newChipKeys.includes(e.key)){this.handleAddChip(e.target.value)!==!1&&e.preventDefault();return}switch(e.keyCode){case pi.BACKSPACE:e.target.value===""&&(t?(this.handleDeleteChip(n[t],t),t&&this.setState({focusedChip:t-1})):this.setState({focusedChip:n.length-1}));break;case pi.DELETE:e.target.value===""&&t&&(this.handleDeleteChip(n[t],t),t<=n.length-1&&this.setState({focusedChip:t}));break;case pi.LEFT_ARROW:t===null&&e.target.value===""&&n.length?this.setState({focusedChip:n.length-1}):t!==null&&t>0&&this.setState({focusedChip:t-1});break;case pi.RIGHT_ARROW:t!==null&&t{!this._preventChipCreation&&(this.newChipKeyCodes.includes(e.keyCode)||this.newChipKeys.includes(e.key))&&this._keyPressed?this.clearInput():this.updateInput(e.target.value),this.props.onKeyUp&&this.props.onKeyUp(e)};handleUpdateInput=e=>{(this.props.inputValue===null||this.props.inputValue===void 0)&&this.updateInput(e.target.value),this.props.onUpdateInput&&this.props.onUpdateInput(e)};handleAddChip(e,t){if(this.props.onBeforeAdd&&!this.props.onBeforeAdd(e))return this._preventChipCreation=!0,t&&t.clearInputOnFail&&this.clearInput(),!1;this.clearInput();const n=this.props.value||this.state.chips;return e.trim().length?((this.props.allowDuplicates||!n.includes(e))&&(this.props.value&&this.props.onAdd?this.props.onAdd(e):this.updateChips([...this.state.chips,e])),!0):!1}handleDeleteChip(e,t){if(this.props.value)this.props.onDelete&&this.props.onDelete(e,t);else{const n=this.state.chips.slice();if(n.splice(t,1)){let i=this.state.focusedChip;this.state.focusedChip===t?i=null:this.state.focusedChip!==null&&this.state.focusedChip>t&&(i=this.state.focusedChip-1),this.updateChips(n,{focusedChip:i})}}}updateChips(e,t={}){this.setState({chips:e,chipsUpdated:!0,...t}),this.props.onChange&&this.props.onChange(e)}clearInput(){this.updateInput("")}updateInput(e){this.setState({inputValue:e})}setActualInputRef=e=>{this.actualInput=e,this.props.inputRef&&this.props.inputRef(e)};render(){const{alwaysShowPlaceholder:e,chipRenderer:t=Lh,className:n,disabled:u,disableUnderline:i,error:s,FormHelperTextProps:d,fullWidth:o,fullWidthInput:l,helperText:r,id:a,InputProps:c={},InputLabelProps:p={},inputValue:h,label:f,placeholder:g,readOnly:v,required:b,rootRef:D,value:E,margin:w}=this.props,y=this.state.variant;this.styleTheme!==this.props.theme.palette.mode&&(this.styleTheme=this.props.theme.palette.mode,this.styles=P.Utils.getStyle(this.props.theme,Th));let A=E||this.state.chips||[];Array.isArray(A)||(A=(A||"").toString().split(/[,\s]+/).map(S=>S.trim()));const T=h??this.state.inputValue,$=(this.props.value||T).length||T.length,M=typeof p.shrink=="boolean"?p.shrink:f!==null&&($||this.state.isFocused||A.length),O=A.map((S,C)=>t({value:S,isDisabled:!!u,isReadOnly:!!v,isFocused:this.state.focusedChip===C,handleClick:()=>this.setState({focusedChip:C}),handleDelete:()=>this.handleDeleteChip(S,C),style:this.styles.chip},C.toString())),_={};y==="outlined"&&(_.notched=!!M,_.labelWidth=M&&this.labelNode&&this.labelNode.offsetWidth||0),y!=="standard"?_.startAdornment=O:c.disableUnderline=!0;const k=kh[y];return x.createElement(fe,{ref:D,fullWidth:o,className:n,sx:{...this.styles.root,...w==="dense"?this.styles.marginDense:{}},error:s,required:A.length>0?void 0:b,onClick:this.focus,disabled:u,variant:y,component:"div",margin:w},f&&x.createElement(Te,{htmlFor:a,sx:{"&.MuiInputLabel-root":this.styles.label,"&.MuiInputLabel-shrink":this.styles.labelShrink},shrink:!!M,focused:this.state.isFocused,variant:y,ref:this.labelRef,required:b,component:"label",...p},f),x.createElement(Ie,{component:"div",id:"input-chip-container",sx:{...this.styles[y],...this.styles.chipContainer,...this.state.isFocused?this.styles.focused:void 0,...!i&&y==="standard"?this.styles.underline:void 0,...u?this.styles.disabled:void 0,...f?this.styles.labeled:void 0,...s?this.styles.error:void 0}},y==="standard"&&O,x.createElement(k,{ref:this.input,className:`mui-variant-${this.styles[y]} ${f?"mui-chip-with-label":"mui-chip-no-label"}`,sx:{"&.MuiInputBase-input":{...this.styles.input,...this.styles[y]},"&.MuiInputBase-root":{...this.styles.inputRoot}},id:a,value:T,onChange:this.handleUpdateInput,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,inputRef:this.setActualInputRef,disabled:u,fullWidth:l,placeholder:!$&&(M||f===null||f===void 0)||e?g:void 0,readOnly:v,...c,..._})),r&&x.createElement(ve,{...d,className:d==null?void 0:d.className,style:this.styles.helperText},r))}}class jr extends V{async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t);if(this.props.schema.delimiter&&typeof n=="string"){const u=n.split(this.props.schema.delimiter).map(i=>i.trim()).filter(i=>i);this.setState({value:u})}else this.setState({value:n||[]})}renderItem(e,t){const{attr:n,schema:u}=this.props,{value:i}=this.state;return x.createElement(fe,{fullWidth:!0,variant:"standard"},x.createElement(Mh,{value:i,disabled:!!t,label:this.getText(u.label),error:!!e,onAdd:s=>{const d=JSON.parse(JSON.stringify(i));d.push(s),this.setState({value:d},()=>{let o;this.props.schema.delimiter?o=this.onChange(n,d.join(`${this.props.schema.delimiter} `)):o=this.onChange(n,d),o instanceof Promise&&o.catch(l=>console.error(l))})},theme:this.props.oContext.theme,onDelete:(s,d)=>{const o=JSON.parse(JSON.stringify(i));o.splice(d,1),this.setState({value:o},()=>{let l;this.props.schema.delimiter?l=this.onChange(n,o.join(`${this.props.schema.delimiter} `)):l=this.onChange(n,o),l instanceof Promise&&l.catch(r=>console.error(r))})}}),x.createElement(ve,null,P.I18n.t("ra_Press ENTER Key to add new item")),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Ih extends V{renderColorDialog(){return!!this.state.showColorDialog&&x.createElement(Lt,{onClose:()=>this.setState({showColorDialog:!1}),open:this.state.showColorDialog},x.createElement(Yc,{color:this.state.colorDialogValue,onChange:e=>this.setState({colorDialogValue:e.hex},()=>this.onChange(this.props.attr,this.state.colorDialogValue))}))}renderItem(e,t){const n=V.getValue(this.props.data,this.props.attr);let u=P.Utils.isUseBright(n,null);return u===null&&(u=void 0),x.createElement(x.Fragment,null,this.renderColorDialog(),x.createElement(pe,{variant:"standard",disabled:!!t,style:{minWidth:100,width:"calc(100% - 8px)"},label:this.getText(this.props.schema.label),value:n||"",onClick:()=>!this.props.schema.readOnly&&this.setState({showColorDialog:!0,colorDialogValue:n||""}),onChange:i=>{const s=i.target.value,d=this.onChange(this.props.attr,s);d instanceof Promise&&d.catch(o=>console.error(`Cannot set value: ${o}`))},slotProps:{htmlInput:{style:{backgroundColor:n,color:u?"#FFF":"#000"},readOnly:this.props.schema.readOnly||!1},input:{endAdornment:!this.props.schema.readOnly&&n&&!this.props.schema.noClearButton?x.createElement(se,{tabIndex:-1,size:"small",onClick:i=>{i.stopPropagation();const s=this.onChange(this.props.attr,"");s instanceof Promise&&s.catch(d=>console.error(`Cannot set value: ${d}`))}},x.createElement(ht,null)):void 0},inputLabel:{shrink:!0}}}))}}const ps={width:{width:"calc(100% - 85px)"},width50:{width:120,marginRight:5}};class Oh extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e});const t={};this.props.schema.useSystemName&&(t.useSystem=!!V.getValue(this.props.data,this.props.schema.useSystemName)),this.props.schema.longitudeName&&this.props.schema.latitudeName?(t.longitude=V.getValue(this.props.data,this.props.schema.longitudeName),t.latitude=V.getValue(this.props.data,this.props.schema.latitudeName),!t.longitude&&!t.latitude&&this.props.schema.autoInit&&setTimeout(()=>this.getCoordinates(),300)):!V.getValue(this.props.data,this.props.attr)&&this.props.schema.autoInit&&setTimeout(()=>this.getCoordinates(),300),Object.keys(t).length&&setTimeout(()=>this.setState(t),50)}async getSystemCoordinates(){let e;try{this.props.oContext.socket.getCompactSystemConfig?e=await this.props.oContext.socket.getCompactSystemConfig():e=await this.getCachedObject("system.config")}catch(t){console.error(`Cannot get system configuration: ${t}`)}if(e!=null&&e.common&&(e.common.longitude||e.common.latitude))if(window.alert(P.I18n.t("ra_Used system settings")),this.props.schema.longitudeName&&this.props.schema.latitudeName)this.setState({longitude:e.common.longitude,latitude:e.common.latitude},async()=>{await this.onChange(this.props.schema.longitudeName,e.common.longitude),await this.onChange(this.props.schema.latitudeName,e.common.latitude)});else{const t=e.common.latitude+(this.props.schema.divider||",")+e.common.longitude;this.setState({value:t},()=>{const n=this.onChange(this.props.attr,t);n instanceof Promise&&n.catch(u=>console.error(`Cannot set value: ${u}`))})}else window.alert(P.I18n.t("ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser"))}getCoordinates(){navigator.geolocation?navigator.geolocation.getCurrentPosition(async e=>{if(e!=null&&e.coords)if(this.props.schema.longitudeName&&this.props.schema.latitudeName)this.setState({longitude:e.coords.longitude,latitude:e.coords.latitude},async()=>{await this.onChange(this.props.schema.longitudeName,e.coords.longitude||""),await this.onChange(this.props.schema.latitudeName,e.coords.latitude||"")});else{const t=e.coords.latitude+(this.props.schema.divider||",")+e.coords.longitude;this.setState({value:t},()=>{const n=this.onChange(this.props.attr,t);n instanceof Promise&&n.catch(u=>console.error(`Cannot set value: ${u}`))})}else await this.getSystemCoordinates()},async e=>{console.error(`Cannot determine coordinates from browser: ${e.message}`),await this.getSystemCoordinates()}):this.getSystemCoordinates().catch(e=>{console.error(`Cannot determine coordinates: ${e}`)})}renderItem(e,t){return x.createElement(x.Fragment,null,this.props.schema.useSystemName?x.createElement(Xn,{control:x.createElement(Zt,{checked:!!this.state.useSystem,onChange:n=>{const u=n.target.checked;u&&this.getSystemCoordinates().catch(i=>console.error(`Cannot determine coordinates: ${i}`)),this.setState({useSystem:u},()=>this.onChange(this.props.schema.useSystemName,u))}}),label:P.I18n.t("ra_Use system settings for position")}):null,this.props.schema.longitudeName&&this.props.schema.latitudeName?x.createElement(pe,{variant:"standard",style:ps.width50,value:this.state.longitude??"",error:!!e,disabled:this.state.useSystem||!!t,onChange:n=>{const u=n.target.value;this.setState({longitude:u},()=>{const i=this.onChange(this.props.schema.longitudeName,(u||"").trim());i instanceof Promise&&i.catch(s=>console.error(`Cannot set value: ${s}`))})},label:P.I18n.t("ra_Longitude")}):null,this.props.schema.longitudeName&&this.props.schema.latitudeName?x.createElement(pe,{variant:"standard",style:ps.width50,value:this.state.latitude??"",error:!!e,disabled:this.state.useSystem||!!t,onChange:n=>{const u=n.target.value;this.setState({latitude:u},()=>this.onChange(this.props.schema.latitudeName,(u||"").trim()))},label:P.I18n.t("ra_Latitude")}):null,!this.props.schema.longitudeName||!this.props.schema.latitudeName?x.createElement(pe,{variant:"standard",style:ps.width,value:this.state.value??"",error:!!e,disabled:!!t,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:this.state.useSystem}},onChange:n=>{const u=n.target.value;this.setState({value:u},()=>this.onChange(this.props.attr,(u||"").trim()))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}):null,this.state.useSystem?null:x.createElement(Ti,{size:"small",onClick:()=>this.getCoordinates(),title:P.I18n.t("ra_Take browser position"),style:{marginRight:4}},x.createElement(Sc,null)),this.state.useSystem?null:x.createElement(Ti,{size:"small",onClick:()=>this.getSystemCoordinates(),title:P.I18n.t("ra_Take position from system settings")},x.createElement(Ec,null)))}}xs.init({name:"iobroker_admin",shared:{"@iobroker/adapter-react-v5":{lib:()=>Kc,version:"*"},"@mui/icons-material":{lib:()=>Ac,version:"*"},"@iobroker/json-config":{lib:()=>Zc,version:"*"}},remotes:[]});class Kn extends V{static runningLoads={};constructor(e){super(e),Object.assign(this.state,{Component:null,error:""})}async componentDidMount(){if(!this.props.schema.url){console.error("URL is empty. Cannot load custom component!"),this.setState({error:"URL is empty. Cannot load custom component!"});return}let e;this.props.schema.url.startsWith("http:")||this.props.schema.url.startsWith("https:")?e=this.props.schema.url:this.props.schema.url.startsWith("./")?e=`${window.location.protocol}//${window.location.host}${this.props.schema.url.replace(/^\./,"")}`:e=`${window.location.protocol}//${window.location.host}/adapter/${this.props.oContext.adapterName}/${this.props.schema.url}`;const[t,n,...u]=this.props.schema.name.split("/"),i=u.join("/");if(!e){console.error('Cannot find URL for custom component! Please define "url" as "custom/customComponents.js" in the schema');return}if(!t||!n||!i){console.error('Invalid format of "name"! Please define "name" as "ConfigCustomBackItUpSet/Components/AdapterExist" in the schema');return}let s=Kn.runningLoads[`${e}!${n}`];if(!(s instanceof Promise)){let d;if(this.props.schema.i18n===!0){const o=e.lastIndexOf("/");let l;o!==-1?l=e.substring(0,o):l=e;const r=P.I18n.getLanguage(),a=`${l}/i18n/${r}.json`;d=fetch(a).then(c=>c.json()).then(c=>P.I18n.extendTranslations(c,r)).catch(c=>{if(r!=="en"){fetch(`${l}/i18n/en.json`).then(p=>p.json()).then(p=>P.I18n.extendTranslations(p,r)).catch(p=>console.log(`Cannot load i18n "${a}": ${p}`));return}console.log(`Cannot load i18n "${a}": ${c}`)})}else if(this.props.schema.i18n&&typeof this.props.schema.i18n=="object")try{P.I18n.extendTranslations(this.props.schema.i18n)}catch(o){console.error(`Cannot import i18n: ${o}`)}try{console.log(e,t,n,i),xs.registerRemotes([{name:t,entry:e,type:this.props.schema.bundlerType||void 0}]),s=xs.loadRemote(`${t}/${n}`),d instanceof Promise&&(s=Promise.all([s,d]).then(o=>o[0])),Kn.runningLoads[`${e}!${n}`]=s}catch(o){console.error(o),this.setState({error:`Cannot import from ${this.props.schema.url}: ${o}`})}}try{const d=(await s).default;if(d!=null&&d[i])this.setState({Component:d[i]});else{const o=Object.keys(d||{});console.error("URL is empty. Cannot load custom component!"),this.setState({error:`Component ${this.props.schema.name} not found in ${this.props.schema.url}. Found: ${o.join(", ")}`})}}catch(d){console.error(d),this.setState({error:`Cannot import from ${this.props.schema.url}: ${d}`})}}render(){const e=this.state.Component,t=this.props.schema||{},n=e?x.createElement(e,{...this.props,socket:this.props.oContext.socket,theme:this.props.oContext.theme,themeType:this.props.oContext.themeType,instance:this.props.oContext.instance,adapterName:this.props.oContext.adapterName,systemConfig:this.props.oContext.systemConfig,forceUpdate:this.props.oContext.forceUpdate}):this.state.error?x.createElement("div",null,this.state.error):x.createElement(Wi,null);return t.newLine?x.createElement(x.Fragment,null,x.createElement("div",{style:{flexBasis:"100%",height:0}}),n):n}}class Fh extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);if(e)try{const t=new Date(e);this.setState({value:t})}catch{}}renderItem(e,t){return x.createElement(Qc,{sx:n=>({width:"100%",borderBottom:`1px solid ${e?"#F00":n.palette.text.primary}`,"& fieldset":{display:"none"},"& input":{padding:`${n.spacing(1.5)} 0 4px 0`},"& .MuiInputAdornment-root":{marginLeft:0,marginTop:1},"& label":{transform:"translate(0px, -9px) scale(0.75)"}}),format:this.props.oContext.systemConfig.dateFormat.toLowerCase().replace("mm","MM"),disabled:!!t,value:this.state.value||null,onChange:n=>this.setState({value:n},()=>{try{const u=this.state.value.toISOString();this.onChange(this.props.attr,u).catch(i=>console.warn(`Error saving value for ${this.props.attr}:`,i))}catch{}}),label:this.getText(this.props.schema.label)})}}class Rh extends V{renderItem(){if(!this.props.schema)return null;if(this.props.oContext.DeviceManager){const t=this.props.oContext.DeviceManager;return x.createElement(t,{uploadImagesToInstance:`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,title:this.getText(this.props.schema.label),socket:this.props.oContext.socket,selectedInstance:`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,themeName:this.props.themeName,theme:this.props.oContext.theme,themeType:this.props.oContext.themeType,isFloatComma:this.props.oContext.isFloatComma,dateFormat:this.props.oContext.dateFormat,smallCards:this.props.schema.smallCards})}return x.createElement("div",null,"DeviceManager not found")}}const nt={fullWidth:{width:"100%"},uploadDiv:{position:"relative",width:"100%"},uploadDivDragging:{opacity:1,background:"rgba(128,255,128,0.1)"},uploadCenterDiv:{margin:5,border:"3px dashed grey",borderRadius:5,width:"100%",height:"100%",position:"absolute",display:"flex"},uploadCenterIcon:{paddingTop:10,width:48,height:48},uploadCenterText:{fontSize:16},uploadCenterTextAndIcon:{textAlign:"center",position:"absolute",top:0,bottom:0,left:0,right:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},disabledOpacity:{opacity:.3,cursor:"default"},error:{border:"2px solid red"},deleteButton:{},selectedImage:{height:40,width:40,display:"inline-block",marginRight:8}},Nh=["jpg","jpeg","svg","png","webp","gif","apng","avif","webp"],Bh=["mp3","ogg","wav","aac"],Ph=["avi","mp4","mov"],Wh=["txt","log","html","htm"],jh=["json","js","ts"];class ji extends V{dropzoneRef;imagePrefix;objectID;path;constructor(e){super(e),this.dropzoneRef=x.createRef(),this.imagePrefix=this.props.oContext.imagePrefix??"./files"}async componentDidMount(){await super.componentDidMount(),this.objectID=(this.props.schema.objectID||"0_userdata.0").replace("%INSTANCE%",(this.props.oContext.instance||0).toString()),this.path=this.props.schema.upload,this.path&&(this.path==="/"?this.path="":this.path.endsWith("/")||(this.path=`${this.path}/`)),this.updateFiles().then(()=>{const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e}),this.props.oContext.socket.subscribeFiles(this.objectID,`${this.path}/*`,this.onFolderChanged).catch(t=>console.error(`Cannot subscribe: ${t}`))})}onFolderChanged=(e,t)=>{this.path&&t.startsWith(this.path)&&this.updateFiles().catch(n=>console.error(`Cannot update files: ${n}`))};componentWillUnmount(){this.props.oContext.socket.subscribeFiles(this.objectID,`${this.path}/*`,this.onFolderChanged).catch(e=>console.error(`Cannot subscribe: ${e}`)),super.componentWillUnmount()}async updateFiles(){const e=await this.readFiles(this.props.schema.pattern);await new Promise(t=>this.setState({files:e},t))}async readFolder(e,t,n){try{const u=await this.props.oContext.socket.readDir(this.objectID,e.replace(/^\//,"")||null);for(let i=0;iconsole.log("file reading was aborted"),n.onerror=()=>console.log("file reading has failed"),n.onload=()=>{if(t.size>u){window.alert(P.I18n.t("File is too big. Max %sk allowed. Try use SVG.",Math.round(u/1024)));return}this.props.oContext.socket.writeFile64(this.objectID,this.path+t.name,n.result).then(()=>this.updateFiles()).then(()=>this.setState({value:this.path+t.name},()=>this.onChange(this.props.attr,this.path+t.name))).catch(i=>window.alert(`Cannot upload file: ${i}`))},n.readAsArrayBuffer(t)}renderDeleteDialog(){return this.state.deleteFile?x.createElement(P.DialogConfirm,{title:P.I18n.t("ra_Are you sure?"),text:P.I18n.t("ra_File will be deleted"),ok:P.I18n.t("ra_Delete"),cancel:P.I18n.t("ra_Cancel"),onClose:e=>{const t=this.state.deleteFile;this.setState({deleteFile:""},()=>{e&&this.props.oContext.socket.deleteFile(this.objectID,t).then(()=>this.updateFiles()).catch(n=>window.alert(`Cannot delete file: ${n}`))})}}):null}static base64ToArrayBuffer(e){const t=window.atob(e),n=t.length,u=new Uint8Array(n);for(let i=0;i{if(typeof AudioContext<"u"){const t=new AudioContext,n=ji.base64ToArrayBuffer(e.file);t.decodeAudioData(n,u=>{const i=t.createBufferSource();i.buffer=u,i.connect(t.destination),i.start(0)},u=>window.alert(`Cannot play: ${u.message}`))}})}getFileIcon(e){return e!=null&&e.extension?Nh.includes(e.extension)?x.createElement("div",{style:{...nt.selectedImage,backgroundImage:`url(${this.imagePrefix}/${this.objectID}/${e.value})`,backgroundSize:"contain",backgroundRepeat:"no-repeat"}}):Bh.includes(e.extension)?x.createElement(Dc,null):Wh.includes(e.extension)?x.createElement(No,null):Ph.includes(e.extension)?x.createElement(Bo,null):jh.includes(e.extension)?x.createElement(Po,null):null:null}renderItem(e,t){if(!this.state.files)return null;const n=[];this.props.schema.withFolder||this.state.files.forEach(r=>{const a=r.name.lastIndexOf("/");if(a===-1)n.includes("/")||n.push("/");else{const c=r.name.substring(0,a+1);n.includes(c)||n.push(c)}});const u=this.state.files.map(r=>({value:r.name,label:!this.props.schema.withFolder&&n.length===1?`${r.name.substring(n[0].length)}`:`${r.name}${this.props.schema.noSize?"":`(${r.size})`}`,extension:r.name.toLowerCase().split(".").pop()}));this.props.schema.noNone||u.unshift({label:P.I18n.t("ra_none"),value:""});const i=u.find(r=>r.value===this.state.value);let s=0;this.props.schema.upload&&s++,this.props.schema.refresh&&s++;const d=this.state.value&&(this.state.value.endsWith(".mp3")||this.state.value.endsWith(".ogg")||this.state.value.endsWith(".wav"));d&&s++;const o=x.createElement("div",{style:nt.fullWidth},x.createElement(fe,{variant:"standard",style:{width:`calc(100% - ${s*42}px)`}},this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,disabled:!!t,value:this.state.value||"_",renderValue:()=>x.createElement(x.Fragment,null,this.getFileIcon(i),x.createElement("span",null,(i==null?void 0:i.label)||"")),onChange:r=>{this.setState({value:r.target.value==="_"?"":r.target.value},()=>this.onChange(this.props.attr,this.state.value))}},u.map(r=>x.createElement(xe,{key:r.value,value:r.value},x.createElement(xo,null,this.getFileIcon(r)),x.createElement(Vs,null,r.label),this.props.schema.delete&&i.value?x.createElement(se,{style:nt.deleteButton,size:"small",onClick:()=>this.setState({deleteFile:i.value})},x.createElement(_t,null)):null))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null),this.props.schema.refresh&&x.createElement(se,{onClick:()=>this.updateFiles()},x.createElement(Us,null)),this.props.schema.upload&&x.createElement(se,{onClick:()=>{var r;return(r=this.dropzoneRef.current)==null?void 0:r.open()}},x.createElement(Vn,null)),d&&x.createElement(se,{style:{color:"#00FF00"},onClick:()=>this.play()},x.createElement(Gs,null)));if(!this.props.schema.upload)return x.createElement(x.Fragment,null,o,this.renderDeleteDialog());let l={"*/*":[]};if(this.props.schema.fileTypes==="image"?l={"image/*":[".png",".jpg",".svg",".gif",".apng",".avif",".webp"]}:this.props.schema.fileTypes==="audio"?l={"audio/*":[".mp3",".ogg",".wav",".mp4"]}:this.props.schema.fileTypes==="text"&&(l={"text/plain":[".txt"]}),this.props.schema.pattern){const r=this.props.schema.pattern.split("/").pop().toLowerCase().replace(/.*\./,"");r==="png"||r==="jpg"||r==="svg"||r==="gif"||r==="apng"||r==="avif"||r==="webp"?l={"image/*":[".png",".jpg",".svg",".gif",".apng",".avif",".webp"]}:r==="mp3"||r==="ogg"||r==="wav"?l={"audio/*":[".mp3",".ogg",".wav",".mp4"]}:r==="ics"?l={"text/calendar":[".ics"]}:r==="txt"?l={"text/plain":[".txt"]}:r==="pem"?l={"text/plain":[".pem"]}:l={"*/*":[`.${r}`]}}return x.createElement(jo,{ref:this.dropzoneRef,multiple:!1,accept:l,noKeyboard:!0,noClick:!0,maxSize:this.props.schema.maxSize||2*1024*1024,onDragEnter:()=>{this.setState({uploadFile:"dragging"})},onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:(r,a)=>{var c,p,h;this.setState({uploadFile:!1}),r.length?this.onDrop(r):window.alert(((h=(p=(c=a==null?void 0:a[0])==null?void 0:c.errors)==null?void 0:p[0])==null?void 0:h.message)||P.I18n.t("Cannot upload"))}},({getRootProps:r,getInputProps:a})=>x.createElement("div",{style:{...nt.uploadDiv,...this.state.uploadFile==="dragging"?nt.uploadDivDragging:void 0,...t?nt.disabledOpacity:void 0},...r()},x.createElement("input",{...a()}),this.state.uploadFile==="dragging"?x.createElement("div",{style:{...nt.uploadCenterDiv,...this.state.uploadError?nt.error:void 0}},x.createElement("div",{style:nt.uploadCenterTextAndIcon},x.createElement(Vn,{style:nt.uploadCenterIcon}),x.createElement("div",{style:nt.uploadCenterText},this.state.uploadFile==="dragging"?P.I18n.t("ra_Drop file here"):P.I18n.t("ra_Place your files here or click here to open the browse dialog")))):null,o,this.renderDeleteDialog()))}}const di={fullWidth:{width:"100%"},fullWidthOneButton:{width:"calc(100% - 69px)",marginRight:4},fullWidthIcon:{width:"calc(100% - 119px)",marginRight:4},selectedImage:{height:40,width:40,display:"inline-block",marginRight:8}},zh=["jpg","jpeg","svg","png","webp","gif","apng","avif","webp"],Hh=["mp3","ogg","wav","aac"],Vh=["avi","mp4","mov"],Uh=["txt","log","html","htm"],Kh=["json","js","ts"];class Gh extends V{imagePrefix="../..";async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.imagePrefix=this.props.oContext.imagePrefix??"./files",this.setState({value:e??""})}static getDerivedStateFromProps(e,t){const n=V.getValue(e.data,e.attr);return n==null||n.toString().trim()!==(t.value||"").toString().trim()?{value:n??""}:null}loadFile(){const e=this.state.value.indexOf("/");if(e!==-1){const t=this.state.value.substring(0,e),n=this.state.value.substring(e+1);return this.props.oContext.socket.readFile(t,n,!0)}return Promise.resolve(null)}play(){this.loadFile().then(e=>{if(typeof AudioContext<"u"&&(e!=null&&e.file)){const t=new AudioContext,n=ji.base64ToArrayBuffer(e.file);t.decodeAudioData(n,u=>{const i=t.createBufferSource();i.buffer=u,i.connect(t.destination),i.start(0)},u=>window.alert(`Cannot play: ${u.message}`))}})}getIcon(){const e=this.state.value.split(".").pop().toLowerCase();return zh.includes(e)?x.createElement("div",{style:{...di.selectedImage,backgroundImage:`url(${this.imagePrefix}/${this.state.value})`,backgroundSize:"contain",backgroundRepeat:"no-repeat"}}):Hh.includes(e)?x.createElement(se,{style:{color:"#00FF00"},onClick:()=>this.play()},x.createElement(Gs,null)):Uh.includes(e)?x.createElement(No,null):Vh.includes(e)?x.createElement(Bo,null):Kh.includes(e)?x.createElement(Po,null):null}renderFileBrowser(){return this.state.showFileBrowser?x.createElement(P.DialogSelectFile,{imagePrefix:this.props.oContext.imagePrefix,socket:this.props.oContext.socket,selected:this.state.value,onClose:()=>this.setState({showFileBrowser:!1}),onOk:e=>{const t=Array.isArray(e)?e[0]:e;this.setState({value:t},()=>this.onChange(this.props.attr,this.props.schema.trim===!1?t:(t||"").trim()))},selectOnlyFolders:this.props.schema.selectOnlyFolders,allowUpload:this.props.schema.allowUpload,allowDownload:this.props.schema.allowDownload,allowCreateFolder:this.props.schema.allowCreateFolder,allowView:this.props.schema.allowView,showToolbar:this.props.schema.showToolbar,limitPath:this.props.schema.limitPath,theme:this.props.oContext.theme}):null}renderItem(e,t){const n=this.getIcon();return x.createElement("div",{style:di.fullWidth},n,x.createElement(pe,{variant:"standard",style:n?di.fullWidthIcon:di.fullWidthOneButton,value:this.state.value??"",error:!!e,disabled:!!t,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:!!this.props.schema.disableEdit}},onChange:u=>{const i=u.target.value;this.setState({value:i},()=>this.onChange(this.props.attr,this.props.schema.trim===!1?i:(i||"").trim()))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}),x.createElement(me,{disabled:t,variant:"outlined",onClick:()=>this.setState({showFileBrowser:!0})},"..."),this.renderFileBrowser())}}class Jh extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.props.oContext.socket.getEnums("functions").then(t=>{const n=Object.keys(t).map(u=>({value:this.props.schema.short?u.replace("enum.functions.",""):u,label:this.getText(t[u].common.name),obj:t[u]}));this.props.schema.allowDeactivate!==!1&&n.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({value:e,selectOptions:n})})}renderItem(e,t){if(!this.state.selectOptions)return null;const n=this.state.selectOptions.find(u=>u.value===this.state.value);return x.createElement(fe,{variant:"standard",fullWidth:!0},this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,disabled:!!t,value:this.state.value||"_",renderValue:()=>n?n.obj?x.createElement(P.TextWithIcon,{value:n.obj,themeType:this.props.oContext.themeType,lang:P.I18n.getLanguage()}):n.label:"",onChange:u=>{this.setState({value:u.target.value==="_"?"":u.target.value},()=>this.onChange(this.props.attr,this.state.value))}},this.state.selectOptions.map(u=>x.createElement(xe,{key:u.value,value:u.value,style:u.value===V.DIFFERENT_VALUE?{opacity:.5}:{}},u.obj?x.createElement(P.TextWithIcon,{value:u.obj,themeType:this.props.oContext.themeType,lang:P.I18n.getLanguage()}):u.label))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Yh extends V{iframeRef=x.createRef();observer=null;async componentDidMount(){await super.componentDidMount(),this.props.schema.reloadOnShow&&(this.observer=new IntersectionObserver(([e])=>{if(e.isIntersecting&&this.state.isVisible===!1&&this.iframeRef.current){const t=this.iframeRef.current.src;this.iframeRef.current.src="",setTimeout(()=>{this.iframeRef.current&&(this.iframeRef.current.src=t)},0)}this.setState({isVisible:e.isIntersecting})}),this.iframeRef.current&&this.observer.observe(this.iframeRef.current))}componentWillUnmount(){var e,t;(e=super.componentWillUnmount)==null||e.call(this),(t=this.observer)==null||t.disconnect()}renderItem(e,t){const n=this.props.schema.url||V.getValue(this.props.data,this.props.attr);return x.createElement("div",{style:{position:"relative",width:"100%",height:"100%"}},x.createElement("iframe",{style:{width:"100%",height:"100%",borderWidth:this.props.schema.frameBorder??0,...this.props.schema.innerStyle,border:e?"1px solid red":void 0},ref:this.iframeRef,src:n,allowFullScreen:this.props.schema.allowFullscreen??!1,sandbox:this.props.schema.sandbox,loading:this.props.schema.lazyLoad??"lazy"}),t&&x.createElement("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",backgroundColor:"rgba(255, 255, 255, 0.3)",cursor:"not-allowed",zIndex:1}}))}}class Qh extends V{initialized=!1;localContext;iframeRef=x.createRef();observer=null;async componentDidMount(){await super.componentDidMount(),this.askInstance().catch(e=>console.error(e)),this.props.schema.reloadOnShow&&(this.observer=new IntersectionObserver(([e])=>{if(e.isIntersecting&&this.state.isVisible===!1&&this.iframeRef.current){const t=this.iframeRef.current.src;this.iframeRef.current.src="",setTimeout(()=>{this.iframeRef.current&&(this.iframeRef.current.src=t)},0)}this.setState({isVisible:e.isIntersecting})}),this.iframeRef.current&&this.observer.observe(this.iframeRef.current))}async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);if(n)try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${JSON.stringify(e)}`)}}e===void 0&&(e=null);const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e).then(n=>this.setState({url:n||""}))}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(e,t){if(this.props.alive){const n=this.getContext();(n!==this.localContext||!this.initialized)&&(this.localContext=n,setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}return this.state.url===void 0?null:x.createElement("div",{style:{position:"relative",width:"100%",height:"100%"}},x.createElement("iframe",{style:{width:"100%",height:"100%",borderWidth:this.props.schema.frameBorder??0,...this.props.schema.innerStyle,border:e?"1px solid red":void 0},ref:this.iframeRef,src:this.state.url,allowFullScreen:this.props.schema.allowFullscreen??!1,sandbox:this.props.schema.sandbox,loading:this.props.schema.lazyLoad??"lazy"}),t&&x.createElement("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",backgroundColor:"rgba(255, 255, 255, 0.3)",cursor:"not-allowed",zIndex:1}}))}}class Xh extends V{async componentDidMount(){await super.componentDidMount(),this.props.oContext.socket.getHostByIp(this.props.common.host).then(e=>{this.props.schema.listenOnAllPorts||(e=e.filter(t=>t.address!=="0.0.0.0"&&t.address!=="::")),this.props.schema.onlyIp4?e=e.filter(t=>t.family==="ipv4"):this.props.schema.onlyIp6&&(e=e.filter(t=>t.family==="ipv6")),this.props.schema.noInternal&&(e=e.filter(t=>!t.internal)),e.forEach(t=>{t.address==="0.0.0.0"?t.name=`[IPv4] 0.0.0.0 - ${P.I18n.t("ra_Listen on all IPs")}`:t.address==="::"&&(t.name=`[IPv6] :: - ${P.I18n.t("ra_Listen on all IPs")}`)}),this.setState({ips:e})}).catch(e=>console.error(e))}renderItem(e,t){var i,s;const n=V.getValue(this.props.data,this.props.attr),u=(i=this.state.ips)==null?void 0:i.find(d=>d.address===n);return x.createElement(fe,{fullWidth:!0,variant:"standard"},this.state.ips&&this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,this.state.ips?x.createElement(Be,{variant:"standard",error:!!e,disabled:!!t,value:n,renderValue:d=>(u==null?void 0:u.name)||d,onChange:d=>this.onChange(this.props.attr,d.target.value)},(s=this.state.ips)==null?void 0:s.map((d,o)=>x.createElement(xe,{key:o,value:d.address},d.name))):x.createElement(pe,{fullWidth:!0,variant:"standard",error:!!e,disabled:!!t,value:n,onChange:d=>this.onChange(this.props.attr,d.target.value),label:this.getText(this.props.schema.label)}),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Zh extends V{initialized=!1;localContext;async componentDidMount(){await super.componentDidMount(),this.props.schema.sendFirstByClick||this.askInstance().catch(e=>console.error(e))}async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);if(n)try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${JSON.stringify(e)}`)}}e===void 0&&(e=null);const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.setState({loading:!0},()=>this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e).then(n=>this.setState({image:n||""})))}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(){if(this.props.alive){const e=this.getContext();(e!==this.localContext||!this.initialized)&&(this.localContext=e,(!this.props.schema.sendFirstByClick||this.state.image!==void 0)&&setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}return!this.state.image&&this.props.schema.sendFirstByClick?x.createElement("div",{style:{width:this.props.schema.width||"100%",height:this.props.schema.height,display:"flex",alignItems:"center",justifyContent:"center",cursor:this.state.loading?"default":"pointer"},onClick:()=>!this.state.loading&&this.askInstance()},this.state.loading?x.createElement(Tt,null):typeof this.props.schema.sendFirstByClick=="boolean"?P.I18n.t("ra_Click to show"):this.getText(this.props.schema.sendFirstByClick,this.props.schema.noTranslation)):this.state.image===void 0?null:x.createElement(P.Icon,{title:this.getText(this.props.schema.tooltip),src:this.state.image,style:{width:this.props.schema.width||"100%",height:this.props.schema.height}})}}class qh extends V{index;constructor(e){super(e),this.index=Date.now()}async componentDidMount(){if(await super.componentDidMount(),this.props.schema.base64){const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e})}else this.props.oContext.socket.fileExists(`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,this.props.attr).then(e=>e&&this.loadImage())}_getUrl(e){e&&(this.index=Date.now());let t=`files/${this.props.oContext.adapterName}.${this.props.oContext.instance}/${this.props.attr}?t=${this.index}`;return window.location.port==="3000"&&(t=`${window.location.protocol}//${window.location.hostname}:8081/${t}`),t}loadImage(){fetch(this._getUrl()).then(e=>e.blob()).then(e=>{const t=new FileReader;t.onload=()=>{this.setState({value:t.result})},t.readAsDataURL(e)}).catch(e=>console.error(e))}renderItem(e,t){return x.createElement(fe,{fullWidth:!0,variant:"standard"},this.props.schema.label?x.createElement(Te,{shrink:!0},this.getText(this.props.schema.label)):null,x.createElement(P.UploadImage,{error:!!e,disabled:t,accept:this.props.schema.accept,crop:this.props.schema.crop,maxSize:this.props.schema.maxSize||256*1024,icon:this.state.value||void 0,removeIconFunc:()=>this.setState({value:null},()=>{if(this.props.schema.base64){const n=this.onChange(this.props.attr,this.state.value);n instanceof Promise&&n.catch(u=>console.error(`Cannot set value: ${u}`))}else this.props.oContext.socket.deleteFile(`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,this.props.attr).catch(n=>console.error(n))}),onChange:n=>this.setState({value:n},()=>{if(this.props.schema.base64){const u=this.onChange(this.props.attr,this.state.value);u instanceof Promise&&u.catch(i=>console.error(`Cannot set value: ${i}`))}else n.startsWith("data")&&(n=n.split(",")[1]);this.props.oContext.socket.writeFile64(`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,this.props.attr,n).catch(u=>console.error(u))})}),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class eu extends V{renderItem(){return x.createElement(P.InfoBox,{type:this.props.schema.boxType||"info",closeable:this.props.schema.closeable!==void 0?this.props.schema.closeable:!0,storeId:this.props.schema.closed!==void 0?void 0:`${!!this.props.oContext.adapterName} ${this.props.attr}`,closed:this.props.schema.closed,style:{width:"100%",...this.props.schema.style}},this.props.schema.title?x.createElement(Ie,{component:"div",sx:{fontWeight:"bold",fontSize:"larger"}},this.getText(this.props.schema.title)):null,this.getText(this.props.schema.text))}}const zr={icon:{width:20,height:20,marginRight:4}};class tu extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);let t=this.props.schema.adapter;t==="_dataSources"&&(t=void 0),this.props.oContext.socket.getAdapterInstances(t,!0).then(async n=>{this.props.schema.adapter==="_dataSources"?n=n.filter(i=>{var s;return(s=i==null?void 0:i.common)==null?void 0:s.getHistory}):this.props.schema.adapter?n=n.filter(i=>i==null?void 0:i._id.startsWith(`system.adapter.${this.props.schema.adapter}.`)):this.props.schema.adapters&&Array.isArray(this.props.schema.adapters)&&(n=n.filter(i=>{var s;return this.props.schema.adapters.includes((s=i==null?void 0:i.common)==null?void 0:s.name)})),this.props.schema.onlyEnabled&&(n=n.filter(i=>{var s;return(s=i==null?void 0:i.common)==null?void 0:s.enabled}));const u=n.map(i=>({value:this.props.schema.long?i._id:this.props.schema.short?i._id.split(".").pop():i._id.replace(/^system\.adapter\./,""),label:`${i.common.name} [${i._id.replace(/^system\.adapter\./,"")}]`,icon:`${this.props.oContext.imagePrefix}/adapter/${i.common.name}/${i.common.icon}`}));u.sort((i,s)=>i.value>s.value?1:i.valueconsole.error(`Cannot get instances: ${n}`))}componentWillUnmount(){this.props.oContext.socket.unsubscribeObject("system.adapter.*",this.onInstancesUpdate).then(()=>{}),super.componentWillUnmount()}onInstancesUpdate=(e,t)=>{if(!e.match(/^system\.adapter\.[-_a-z\d]+\.\d+$/))return;const n=this.props.schema.long?e:this.props.schema.short?e.split(".").pop():e.replace(/^system\.adapter\./,""),u=this.state.selectOptions.findIndex(i=>i.value===n);if(t){if(this.props.schema.adapter==="_dataSources"&&(!t.common||!t.common.getHistory))return;if(u===-1){const i=JSON.parse(JSON.stringify(this.state.selectOptions)),s=typeof t.common.name=="object"?t.common.name[P.I18n.getLanguage()]||t.common.name.en:t.common.name;i.push({value:this.props.schema.long?t._id:this.props.schema.short?t._id.split(".").pop():t._id.replace(/^system\.adapter\./,""),label:`${s} [${t._id.replace(/^system\.adapter\./,"")}]`,icon:`${this.props.oContext.imagePrefix}/adapter/${s}/${t.common.icon}`}),i.sort((d,o)=>d.label>o.label?1:d.labeli.value===this.state.value);return x.createElement(fe,{fullWidth:!0,key:this.props.attr,variant:"standard"},this.props.schema.label?x.createElement(Te,{shrink:!0},this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:this.state.value,renderValue:()=>x.createElement("span",{style:{display:"flex"}},n!=null&&n.icon?x.createElement(P.Icon,{src:`./${n.icon}`,style:zr.icon}):null,this.getText(n==null?void 0:n.label,!0)),onChange:i=>this.setState({value:i.target.value},()=>this.onChange(this.props.attr,this.state.value))},this.state.selectOptions.map(i=>x.createElement(xe,{key:i.value,value:i.value,style:i.value===V.NONE_VALUE?{opacity:.5}:{}},i.icon?x.createElement(P.Icon,{src:`./${i.icon}`,style:zr.icon}):null,this.getText(i.label,!0)))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Hr={address:{fontSize:"smaller",opacity:.5,marginLeft:8}};class nu extends V{async componentDidMount(){await super.componentDidMount(),this.props.oContext.getCachedObject(`system.host.${this.props.common.host}`).then(e=>{var n,u;const t=[];if((u=(n=e==null?void 0:e.native)==null?void 0:n.hardware)!=null&&u.networkInterfaces){const i=e.native.hardware.networkInterfaces;Object.keys(i).forEach(s=>{if(this.props.schema.ignoreInternal&&!i[s].find(o=>!o.internal)||this.props.schema.ignoreLoopback&&i[s].find(o=>o.address==="127.0.0.1"||o.address==="::1"))return;let d=i[s].find(o=>o.family==="IPv4");d||=i[s].find(o=>o.family==="IPv6"),t.push({value:s,address:d.address})})}this.setState({interfaces:t})}).catch(e=>window.alert(`Cannot read interfaces: ${e}`))}renderItem(e,t){var i,s,d;const n=V.getValue(this.props.data,this.props.attr),u=(i=this.state.interfaces)==null?void 0:i.find(o=>o.value===n);return x.createElement(fe,{fullWidth:!0,variant:"standard"},(s=this.state.interfaces)!=null&&s.length&&this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,(d=this.state.interfaces)!=null&&d.length?x.createElement(Be,{variant:"standard",error:!!e,disabled:!!t,value:n,renderValue:o=>u?x.createElement("span",null,u.value,x.createElement("span",{style:Hr.address},u.address)):o,onChange:o=>this.onChange(this.props.attr,o.target.value)},this.state.interfaces.map((o,l)=>x.createElement(xe,{key:l,value:o.value},x.createElement("span",null,o.value,x.createElement("span",{style:Hr.address},o.address))))):x.createElement(pe,{fullWidth:!0,variant:"standard",error:!!e,disabled:!!t,value:n,onChange:o=>this.onChange(this.props.attr,o.target.value),label:this.getText(this.props.schema.label)}),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const rn={modalDialog:{minWidth:400,maxWidth:800},overflowHidden:{display:"flex",overflow:"hidden"},titleIcon:{marginRight:5},content:{fontSize:16},languageButton:{position:"absolute",right:8,top:8},languageButtonActive:{color:"primary.main"}},Xs=({toggleTranslation:m,noTranslation:e,title:t,fullWidth:n,help:u,maxWidth:i,progress:s,icon:d,applyDisabled:o,applyButton:l,onClose:r,children:a,titleButtonApply:c,titleButtonClose:p,onApply:h,textInput:f,defaultValue:g,overflowHidden:v})=>{const[b,D]=Kl(g);Gl(()=>{D(g)},[g]);const E=tc(),w=nc(E.breakpoints.down("md"));let y=null;return d&&(y=d),x.createElement(Lt,{open:!0,maxWidth:w?!1:i||"md",fullWidth:!!n,fullScreen:w,disableEscapeKeyDown:!1,onClose:r,sx:{"& .MuiPaper-root":w?{}:rn.modalDialog}},t&&x.createElement(yn,null,d?x.createElement(y,{style:rn.titleIcon}):null,t,P.I18n.getLanguage()!=="en"&&m?x.createElement(se,{size:"large",style:{...rn.languageButton,...e?rn.languageButtonActive:{}},onClick:()=>m(),title:P.I18n.t("ra_Disable/Enable translation")},x.createElement($c,null)):null),x.createElement(Kt,{sx:{...v?rn.overflowHidden:{},...rn.content},style:{paddingTop:8}},f&&x.createElement(pe,{autoComplete:"off",fullWidth:!0,autoFocus:!0,variant:"outlined",size:"medium",multiline:!0,value:b,onChange:A=>D(A.target.value)}),a,u?x.createElement("div",null,u):null),x.createElement(Gt,null,l!==!1&&x.createElement(me,{startIcon:x.createElement(Ks,null),disabled:s||o&&g===b,onClick:()=>h&&h(f?b:""),variant:"contained",color:"primary"},P.I18n.t(c||"ra_Ok")),x.createElement(me,{color:"grey",onClick:()=>r&&r(),disabled:s,variant:"contained",startIcon:x.createElement(ht,null)},P.I18n.t(p||"ra_Cancel"))))};var bn={},Yt={},Ko={exports:{}};(function(m,e){(function(){var t="ace",n=(function(){return this})();!n&&typeof window<"u"&&(n=window);var u=function(r,a,c){if(typeof r!="string"){u.original?u.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(c=a),u.modules[r]||(u.payloads[r]=c,u.modules[r]=null)};u.modules={},u.payloads={};var i=function(r,a,c){if(typeof a=="string"){var p=o(r,a);if(p!=null)return c&&c(),p}else if(Object.prototype.toString.call(a)==="[object Array]"){for(var h=[],f=0,g=a.length;fo.length)&&(d=o.length),d-=s.length;var l=o.indexOf(s,d);return l!==-1&&l===d}),String.prototype.repeat||i(String.prototype,"repeat",function(s){for(var d="",o=this;s>0;)s&1&&(d+=o),(s>>=1)&&(o+=o);return d}),String.prototype.includes||i(String.prototype,"includes",function(s,d){return this.indexOf(s,d)!=-1}),Object.assign||(Object.assign=function(s){if(s==null)throw new TypeError("Cannot convert undefined or null to object");for(var d=Object(s),o=1;o>>0,l=arguments[1],r=l>>0,a=r<0?Math.max(o+r,0):Math.min(r,o),c=arguments[2],p=c===void 0?o:c>>0,h=p<0?Math.max(o+p,0):Math.min(p,o);a0;)o&1&&(l+=d),(o>>=1)&&(d+=d);return l};var i=/^\s\s*/,s=/\s\s*$/;n.stringTrimLeft=function(d){return d.replace(i,"")},n.stringTrimRight=function(d){return d.replace(s,"")},n.copyObject=function(d){var o={};for(var l in d)o[l]=d[l];return o},n.copyArray=function(d){for(var o=[],l=0,r=d.length;l65535?2:1}}),ace.define("ace/lib/useragent",["require","exports","module"],function(t,n,u){n.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},n.getOS=function(){return n.isMac?n.OS.MAC:n.isLinux?n.OS.LINUX:n.OS.WINDOWS};var i=typeof navigator=="object"?navigator:{},s=(/mac|win|linux/i.exec(i.platform)||["other"])[0].toLowerCase(),d=i.userAgent||"",o=i.appName||"";n.isWin=s=="win",n.isMac=s=="mac",n.isLinux=s=="linux",n.isIE=o=="Microsoft Internet Explorer"||o.indexOf("MSAppHost")>=0?parseFloat((d.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((d.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),n.isOldIE=n.isIE&&n.isIE<9,n.isGecko=n.isMozilla=d.match(/ Gecko\/\d+/),n.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",n.isWebKit=parseFloat(d.split("WebKit/")[1])||void 0,n.isChrome=parseFloat(d.split(" Chrome/")[1])||void 0,n.isSafari=parseFloat(d.split(" Safari/")[1])&&!n.isChrome||void 0,n.isEdge=parseFloat(d.split(" Edge/")[1])||void 0,n.isAIR=d.indexOf("AdobeAIR")>=0,n.isAndroid=d.indexOf("Android")>=0,n.isChromeOS=d.indexOf(" CrOS ")>=0,n.isIOS=/iPad|iPhone|iPod/.test(d)&&!window.MSStream,n.isIOS&&(n.isMac=!0),n.isMobile=n.isIOS||n.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(t,n,u){var i=t("./useragent"),s="http://www.w3.org/1999/xhtml";n.buildDom=function c(p,h,f){if(typeof p=="string"&&p){var g=document.createTextNode(p);return h&&h.appendChild(g),g}if(!Array.isArray(p))return p&&p.appendChild&&h&&h.appendChild(p),p;if(typeof p[0]!="string"||!p[0]){for(var v=[],b=0;b"u")){if(o){if(h)l();else if(h===!1)return o.push([c,p])}if(!d){var f=h;!h||!h.getRootNode?f=document:(f=h.getRootNode(),(!f||f==h)&&(f=document));var g=f.ownerDocument||f;if(p&&n.hasCssString(p,f))return null;p&&(c+=` -/*# sourceURL=ace/css/`+p+" */");var v=n.createElement("style");v.appendChild(g.createTextNode(c)),p&&(v.id=p),f==g&&(f=n.getDocumentHead(g)),f.insertBefore(v,f.firstChild)}}}if(n.importCssString=r,n.importCssStylsheet=function(c,p){n.buildDom(["link",{rel:"stylesheet",href:c}],n.getDocumentHead(p))},n.$fixPositionBug=function(c){var p=c.getBoundingClientRect();if(c.style.left){var h=parseFloat(c.style.left),f=+p.left;Math.abs(h-f)>1&&(c.style.left=2*h-f+"px")}if(c.style.right){var h=parseFloat(c.style.right),f=window.innerWidth-p.right;Math.abs(h-f)>1&&(c.style.right=2*h-f+"px")}if(c.style.top){var h=parseFloat(c.style.top),f=+p.top;Math.abs(h-f)>1&&(c.style.top=2*h-f+"px")}if(c.style.bottom){var h=parseFloat(c.style.bottom),f=window.innerHeight-p.bottom;Math.abs(h-f)>1&&(c.style.bottom=2*h-f+"px")}},n.scrollbarWidth=function(c){var p=n.createElement("ace_inner");p.style.width="100%",p.style.minWidth="0px",p.style.height="200px",p.style.display="block";var h=n.createElement("ace_outer"),f=h.style;f.position="absolute",f.left="-10000px",f.overflow="hidden",f.width="200px",f.minWidth="0px",f.height="150px",f.display="block",h.appendChild(p);var g=c&&c.documentElement||document&&document.documentElement;if(!g)return 0;g.appendChild(h);var v=p.offsetWidth;f.overflow="scroll";var b=p.offsetWidth;return v===b&&(b=h.clientWidth),g.removeChild(h),v-b},n.computedStyle=function(c,p){return window.getComputedStyle(c,"")||{}},n.setStyle=function(c,p,h){c[p]!==h&&(c[p]=h)},n.HAS_CSS_ANIMATION=!1,n.HAS_CSS_TRANSFORMS=!1,n.HI_DPI=i.isWin?typeof window<"u"&&window.devicePixelRatio>=1.5:!0,i.isChromeOS&&(n.HI_DPI=!1),typeof document<"u"){var a=document.createElement("div");n.HI_DPI&&a.style.transform!==void 0&&(n.HAS_CSS_TRANSFORMS=!0),!i.isEdge&&typeof a.style.animationName<"u"&&(n.HAS_CSS_ANIMATION=!0),a=null}n.HAS_CSS_TRANSFORMS?n.translate=function(c,p,h){c.style.transform="translate("+Math.round(p)+"px, "+Math.round(h)+"px)"}:n.translate=function(c,p,h){c.style.top=Math.round(h)+"px",c.style.left=Math.round(p)+"px"}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(t,n,u){var i=t("./dom");n.get=function(s,d){var o=new XMLHttpRequest;o.open("GET",s,!0),o.onreadystatechange=function(){o.readyState===4&&d(o.responseText)},o.send(null)},n.loadScript=function(s,d){var o=i.getDocumentHead(),l=document.createElement("script");l.src=s,o.appendChild(l),l.onload=l.onreadystatechange=function(r,a){(a||!l.readyState||l.readyState=="loaded"||l.readyState=="complete")&&(l=l.onload=l.onreadystatechange=null,a||d())}},n.qualifyURL=function(s){var d=document.createElement("a");return d.href=s,d.href}}),ace.define("ace/lib/oop",["require","exports","module"],function(t,n,u){n.inherits=function(i,s){i.super_=s,i.prototype=Object.create(s.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}})},n.mixin=function(i,s){for(var d in s)i[d]=s[d];return i},n.implement=function(i,s){n.mixin(i,s)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(t,n,u){var i={},s=function(){this.propagationStopped=!0},d=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(o,l){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var r=this._eventRegistry[o]||[],a=this._defaultHandlers[o];if(!(!r.length&&!a)){(typeof l!="object"||!l)&&(l={}),l.type||(l.type=o),l.stopPropagation||(l.stopPropagation=s),l.preventDefault||(l.preventDefault=d),r=r.slice();for(var c=0;c>>2]>>>24-A%4*8&255;D[w+A>>>2]|=T<<24-(w+A)%4*8}else for(var x=0;x>>2]=E[x>>>2];return this.sigBytes+=y,this},clamp:function(){var b=this.words,D=this.sigBytes;b[D>>>2]&=4294967295<<32-D%4*8,b.length=n.ceil(D/4)},clone:function(){var b=r.clone.call(this);return b.words=this.words.slice(0),b},random:function(b){for(var D=[],E=0;E>>2]>>>24-y%4*8&255;w.push((A>>>4).toString(16)),w.push((A&15).toString(16))}return w.join("")},parse:function(b){for(var D=b.length,E=[],w=0;w>>3]|=parseInt(b.substr(w,2),16)<<24-w%8*4;return new a.init(E,D/2)}},u=c.Latin1={stringify:function(b){for(var D=b.words,E=b.sigBytes,w=[],y=0;y>>2]>>>24-y%4*8&255;w.push(String.fromCharCode(A))}return w.join("")},parse:function(b){for(var D=b.length,E=[],w=0;w>>2]|=(b.charCodeAt(w)&255)<<24-w%4*8;return new a.init(E,D)}},f=c.Utf8={stringify:function(b){try{return decodeURIComponent(escape(u.stringify(b)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(b){return u.parse(unescape(encodeURIComponent(b)))}},g=l.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new a.init,this._nDataBytes=0},_append:function(b){typeof b=="string"&&(b=f.parse(b)),this._data.concat(b),this._nDataBytes+=b.sigBytes},_process:function(b){var D,E=this._data,w=E.words,y=E.sigBytes,A=this.blockSize,T=A*4,x=y/T;b?x=n.ceil(x):x=n.max((x|0)-this._minBufferSize,0);var M=x*A,O=n.min(M*4,y);if(M){for(var _=0;_>>24)&16711935|(D<<24|D>>>8)&4278255360}var E=this._hash.words,w=f[g+0],y=f[g+1],A=f[g+2],T=f[g+3],x=f[g+4],M=f[g+5],O=f[g+6],_=f[g+7],k=f[g+8],S=f[g+9],C=f[g+10],L=f[g+11],I=f[g+12],F=f[g+13],R=f[g+14],B=f[g+15],N=E[0],z=E[1],W=E[2],j=E[3];N=a(N,z,W,j,w,7,l[0]),j=a(j,N,z,W,y,12,l[1]),W=a(W,j,N,z,A,17,l[2]),z=a(z,W,j,N,T,22,l[3]),N=a(N,z,W,j,x,7,l[4]),j=a(j,N,z,W,M,12,l[5]),W=a(W,j,N,z,O,17,l[6]),z=a(z,W,j,N,_,22,l[7]),N=a(N,z,W,j,k,7,l[8]),j=a(j,N,z,W,S,12,l[9]),W=a(W,j,N,z,C,17,l[10]),z=a(z,W,j,N,L,22,l[11]),N=a(N,z,W,j,I,7,l[12]),j=a(j,N,z,W,F,12,l[13]),W=a(W,j,N,z,R,17,l[14]),z=a(z,W,j,N,B,22,l[15]),N=c(N,z,W,j,y,5,l[16]),j=c(j,N,z,W,O,9,l[17]),W=c(W,j,N,z,L,14,l[18]),z=c(z,W,j,N,w,20,l[19]),N=c(N,z,W,j,M,5,l[20]),j=c(j,N,z,W,C,9,l[21]),W=c(W,j,N,z,B,14,l[22]),z=c(z,W,j,N,x,20,l[23]),N=c(N,z,W,j,S,5,l[24]),j=c(j,N,z,W,R,9,l[25]),W=c(W,j,N,z,T,14,l[26]),z=c(z,W,j,N,k,20,l[27]),N=c(N,z,W,j,F,5,l[28]),j=c(j,N,z,W,A,9,l[29]),W=c(W,j,N,z,_,14,l[30]),z=c(z,W,j,N,I,20,l[31]),N=p(N,z,W,j,M,4,l[32]),j=p(j,N,z,W,k,11,l[33]),W=p(W,j,N,z,L,16,l[34]),z=p(z,W,j,N,R,23,l[35]),N=p(N,z,W,j,y,4,l[36]),j=p(j,N,z,W,x,11,l[37]),W=p(W,j,N,z,_,16,l[38]),z=p(z,W,j,N,C,23,l[39]),N=p(N,z,W,j,F,4,l[40]),j=p(j,N,z,W,w,11,l[41]),W=p(W,j,N,z,T,16,l[42]),z=p(z,W,j,N,O,23,l[43]),N=p(N,z,W,j,S,4,l[44]),j=p(j,N,z,W,I,11,l[45]),W=p(W,j,N,z,B,16,l[46]),z=p(z,W,j,N,A,23,l[47]),N=u(N,z,W,j,w,6,l[48]),j=u(j,N,z,W,_,10,l[49]),W=u(W,j,N,z,R,15,l[50]),z=u(z,W,j,N,M,21,l[51]),N=u(N,z,W,j,I,6,l[52]),j=u(j,N,z,W,T,10,l[53]),W=u(W,j,N,z,C,15,l[54]),z=u(z,W,j,N,y,21,l[55]),N=u(N,z,W,j,k,6,l[56]),j=u(j,N,z,W,B,10,l[57]),W=u(W,j,N,z,O,15,l[58]),z=u(z,W,j,N,F,21,l[59]),N=u(N,z,W,j,x,6,l[60]),j=u(j,N,z,W,L,10,l[61]),W=u(W,j,N,z,A,15,l[62]),z=u(z,W,j,N,S,21,l[63]),E[0]=E[0]+N|0,E[1]=E[1]+z|0,E[2]=E[2]+W|0,E[3]=E[3]+j|0},_doFinalize:function(){var f=this._data,g=f.words,v=this._nDataBytes*8,b=f.sigBytes*8;g[b>>>5]|=128<<24-b%32;var D=n.floor(v/4294967296),E=v;g[(b+64>>>9<<4)+15]=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360,g[(b+64>>>9<<4)+14]=(E<<8|E>>>24)&16711935|(E<<24|E>>>8)&4278255360,f.sigBytes=(g.length+1)*4,this._process();for(var w=this._hash,y=w.words,A=0;A<4;A++){var T=y[A];y[A]=(T<<8|T>>>24)&16711935|(T<<24|T>>>8)&4278255360}return w},clone:function(){var f=d.clone.call(this);return f._hash=this._hash.clone(),f}});function a(f,g,v,b,D,E,w){var y=f+(g&v|~g&b)+D+w;return(y<>>32-E)+g}function c(f,g,v,b,D,E,w){var y=f+(g&b|v&~b)+D+w;return(y<>>32-E)+g}function p(f,g,v,b,D,E,w){var y=f+(g^v^b)+D+w;return(y<>>32-E)+g}function u(f,g,v,b,D,E,w){var y=f+(v^(g|~b))+D+w;return(y<>>32-E)+g}h.MD5=d._createHelper(r),h.HmacMD5=d._createHmacHelper(r)})(Math),t.MD5})})(Xs);var wh=Xs.exports;const jr=ql(wh),Ch=window.innerWidth<=600?12:void 0;function pi(m){return Object.prototype.toString.call(m)==="[object Object]"}class V extends xo{static DIFFERENT_VALUE="__different__";static DIFFERENT_LABEL="ra___different__";static NONE_VALUE="";static NONE_LABEL="ra_none";defaultValue;isError;lang;defaultSendToDone;sendToTimeout;noPlaceRequired;reportedHidden=!1;calculateTimeout=null;AsyncFunction;constructor(e){super(e),this.AsyncFunction=Object.getPrototypeOf(async function(){}).constructor,this.state={confirmDialog:!1,confirmNewValue:null,confirmAttr:null,confirmData:null,confirmCallback:null},this.isError={},this.lang=P.I18n.getLanguage(),e.schema&&(e.custom?e.schema.defaultFunc||(this.defaultValue=e.schema.default):e.schema.type!=="state"&&!e.schema.defaultFunc&&(this.defaultValue=e.schema.default))}async getCachedObject(e){return this.props.oContext.getCachedObject?this.props.oContext.getCachedObject(e):await this.props.oContext.socket.getObject(e)||null}async componentDidMount(){var t,n,h;(t=this.props.schema)!=null&&t.defaultFunc&&(this.props.custom?this.defaultValue=await this.executeCustom(this.props.schema.defaultFunc,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):this.props.schema.type!=="state"&&(this.defaultValue=await this.execute(this.props.schema.defaultFunc,this.props.schema.default,this.props.data,this.props.arrayIndex,this.props.globalData))),(h=(n=this.props.oContext).registerOnForceUpdate)==null||h.call(n,this.props.attr,this.onUpdate);const e=["select","autocomplete","autocompleteSendTo"];if(this.defaultValue!==void 0){const i=V.getValue(this.props.data,this.props.attr);(i===void 0||e.includes(this.props.schema.type)&&(i===""||i===null))&&setTimeout(()=>{this.props.custom?this.props.onChange(this.props.attr,this.defaultValue,()=>setTimeout(()=>this.props.oContext.forceUpdate([this.props.attr],this.props.data),100)):(V.setValue(this.props.data,this.props.attr,this.defaultValue),this.props.onChange(this.props.data,void 0,()=>this.props.oContext.forceUpdate([this.props.attr],this.props.data)))},100)}else this.props.schema.defaultSendTo&&this.sendTo().catch(i=>console.error(i))}async sendTo(){if(this.props.alive){this.defaultSendToDone=!0;let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${n}`)}}else e={attr:this.props.attr,value:V.getValue(this.props.data,this.props.attr)};e===void 0&&(e=null);const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.props.oContext.socket.sendTo(t,this.props.schema.defaultSendTo,e).then(n=>{n!=null&&(this.props.custom?this.props.onChange(this.props.attr,n,()=>this.props.oContext.forceUpdate([this.props.attr],this.props.data)):(V.setValue(this.props.data,this.props.attr,n),this.props.onChange(this.props.data,void 0,()=>this.props.oContext.forceUpdate([this.props.attr],this.props.data))))})}else this.defaultSendToDone=!1,this.props.schema.allowSaveWithError||this.onError(this.props.attr,P.I18n.t("ra_Instance %s is not alive",this.props.oContext.instance.toString()))}componentWillUnmount(){this.props.oContext.registerOnForceUpdate&&this.props.oContext.registerOnForceUpdate(this.props.attr),this.sendToTimeout&&(clearTimeout(this.sendToTimeout),this.sendToTimeout=null),this.calculateTimeout&&(clearTimeout(this.calculateTimeout),this.calculateTimeout=null)}onUpdate=e=>{const t=V.getValue(e||this.props.data,this.props.attr)||"";this.state.value!==t?this.setState({value:t}):this.forceUpdate()};static getValue(e,t){if(typeof t=="string")return V.getValue(e,t.split("."));if(t.length===1)return e[t[0]];const n=t.shift();if(typeof n=="string"&&typeof e[n]=="object")return V.getValue(e[n],t)}static setValue(e,t,n){if(typeof t=="string"){V.setValue(e,t.split("."),n);return}if(t.length===1)n===null?delete e[t[0]]:e[t[0]]=n;else{const h=t.shift();if(typeof h!="string")return;(!e[h]||typeof e[h]=="object")&&(e[h]=e[h]||{}),V.setValue(e[h],t,n)}}getText(e,t){if(!e)return"";if(typeof e=="string"){const n=t?e:P.I18n.t(e);return n.includes("${")?this.getPattern(n,null,t):n}return pi(e)?e.func?typeof e.func=="object"?this.getPattern(e.func[this.lang]||e.func.en||"",null,!0):this.getPattern(e.func,null,t):e[this.lang]||e.en||"":e.toString()}async getTextAsync(e,t){if(!e)return"";if(typeof e=="string"){const n=t?e:P.I18n.t(e);return n.includes("${")?this.getPatternAsync(n,null,t):n}return pi(e)?e.func?typeof e.func=="object"?this.getPatternAsync(e.func[this.lang]||e.func.en||"",null,!0):this.getPatternAsync(e.func,null,t):e[this.lang]||e.en||"":e.toString()}renderDialogConfirm(){if(!this.state.confirmDialog)return null;const e=this.state.confirmData||this.props.schema.confirm;let t=null;return e.type==="warning"?t=$.createElement(zn,null):e.type==="error"?t=$.createElement(Jt,null):e.type==="info"&&(t=$.createElement(Mi,null)),$.createElement(P.DialogConfirm,{title:this.getText(e.title)||P.I18n.t("ra_Please confirm"),text:this.getText(e.text),ok:this.getText(e.ok)||P.I18n.t("ra_Ok"),cancel:this.getText(e.cancel)||P.I18n.t("ra_Cancel"),icon:t||void 0,onClose:n=>this.setState({confirmDialog:!1},()=>{if(n){if(this.state.confirmCallback){const i=this.state.confirmCallback;this.setState({confirmCallback:null},()=>i(!0));return}const h=JSON.parse(JSON.stringify(this.props.data));this.state.confirmDepAttr&&V.setValue(h,this.state.confirmDepAttr,this.state.confirmDepNewValue),V.setValue(h,this.state.confirmAttr,this.state.confirmNewValue),this.setState({confirmDialog:!1,confirmDepAttr:null,confirmDepNewValue:null,confirmNewValue:null,confirmAttr:null,confirmData:null},()=>this.props.onChange(h))}else{const h=this.state.confirmCallback;this.setState({confirmDialog:!1,confirmDepAttr:null,confirmDepNewValue:null,confirmNewValue:null,confirmAttr:null,confirmData:null,confirmCallback:null},()=>{h&&h(!1)})}})})}getIcon(e){e=e||this.props.schema.icon;let t=null;return e==="auth"?t=$.createElement(mc,null):e==="send"?t=$.createElement(Io,null):e==="web"?t=$.createElement(vc,null):e==="warning"?t=$.createElement(zn,null):e==="error"?t=$.createElement(Jt,null):e==="info"?t=$.createElement(Mi,null):e==="search"?t=$.createElement(Oo,null):e==="book"?t=$.createElement(yc,null):e==="help"?t=$.createElement(bc,null):e==="upload"?t=$.createElement(Vn,null):e==="edit"?t=$.createElement(Fo,null):e==="user"?t=$.createElement(Ro,null):e==="group"?t=$.createElement(No,null):e==="delete"?t=$.createElement(_t,null):e==="refresh"?t=$.createElement(Ks,null):e==="add"?t=$.createElement(Un,null):e==="unpair"?t=$.createElement(Bo,null):e==="pair"?t=$.createElement(Po,null):e==="save"?t=$.createElement(wc,null):e==="open"?t=$.createElement(Cc,null):e&&((e.endsWith(".png")||e.endsWith(".svg")||e.endsWith(".jpg"))&&!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${this.props.oContext.imagePrefix}/adapter/${this.props.oContext.adapterName}/${e}`),t=$.createElement(P.Icon,{src:e,style:{width:22,height:22}})),t}onChangeAsync(e,t){return new Promise(n=>{const h=this.onChange(e,t,n);h instanceof Promise&&h.catch(i=>console.error(`Cannot set value: ${i}`))})}async onChange(e,t,n){const h=JSON.parse(JSON.stringify(this.props.data));if(V.setValue(h,e,t),this.props.schema.confirm&&await this.execute(this.props.schema.confirm.condition,!1,h,this.props.arrayIndex,this.props.globalData))return new Promise(s=>{this.setState({confirmDialog:!0,confirmNewValue:t,confirmAttr:e,confirmData:null},()=>{typeof n=="function"?n():s()})});if(this.props.schema.confirmDependsOn)for(let s=0;s{this.setState({confirmDialog:!0,confirmNewValue:t,confirmAttr:e,confirmDepNewValue:o,confirmDepAttr:d.attr,confirmData:d.confirm},()=>{typeof n=="function"?n():l()})})}}const i=[];if(this.props.schema.onChangeDependsOn)for(let s=0;sn&&n()),i!=null&&i.length&&i.forEach((s,d)=>setTimeout(()=>this.props.onChange(s,V.getValue(h,s)),d*50))):this.props.onChange(h,void 0,()=>{i.length&&this.props.oContext.forceUpdate(i,h),n==null||n()}),Promise.resolve()}static ensureAwaitGetObject(e){return e.replace(/(?{const h=e.slice(Math.max(0,n-10),n);return/await\s+$/.test(h)?t:`await ${t}`})}async execute(e,t,n,h,i){let s;if(pi(e))s=e.func;else if(typeof e=="string")s=e;else return e;if(!s)return t;s.includes("getObject(")&&(s=V.ensureAwaitGetObject(s));try{return await new this.AsyncFunction("data","originalData","_system","_alive","_common","_socket","_instance","arrayIndex","globalData","_changed","_href","getObject",s.includes("return")?s:`return ${s}`)(n||this.props.data,this.props.originalData,this.props.oContext.systemConfig,this.props.alive,this.props.common,this.props.oContext.socket,this.props.oContext.instance,h,i,this.props.changed,window.location.href,this.getObject)}catch(d){return console.error(`Cannot execute ${JSON.stringify(e)}: ${d}`),t}}async executeCustom(e,t,n,h,i,s){let d;if(pi(e))d=e.func;else if(typeof e=="string")d=e;else return e;if(!d)return null;d.includes("getObject(")&&(d=V.ensureAwaitGetObject(d));try{return await new this.AsyncFunction("data","originalData","_system","instanceObj","customObj","_socket","arrayIndex","globalData","_changed","_href","getObject",d.includes("return")?d:`return ${d}`)(t||this.props.data,this.props.originalData,this.props.oContext.systemConfig,h,n,this.props.oContext.socket,i,s,this.props.changed,window.location.href,this.getObject)}catch(o){return console.error(`Cannot execute ${d}: ${o}`),null}}async calculate(e){let t,n,h,i;return this.props.custom?(t=e.validator?!await this.executeCustom(e.validator,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!1,e.disabled===!0?n=!0:n=e.disabled?await this.executeCustom(e.disabled,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!1,e.hidden===!0?h=!0:h=e.hidden?await this.executeCustom(e.hidden,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!1,i=e.defaultFunc?await this.executeCustom(e.defaultFunc,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):e.default):(t=e.validator?!await this.execute(e.validator,!1,this.props.data,this.props.arrayIndex,this.props.globalData):!1,e.disabled===!0?n=!0:n=e.disabled?await this.execute(e.disabled,!1,this.props.data,this.props.arrayIndex,this.props.globalData):!1,e.hidden===!0?h=!0:h=e.hidden?await this.execute(e.hidden,!1,this.props.data,this.props.arrayIndex,this.props.globalData):!1,i=e.defaultFunc?await this.execute(e.defaultFunc,e.default,this.props.data,this.props.arrayIndex,this.props.globalData):e.default),{error:t,disabled:n,hidden:h,defaultValue:i}}onError(e,t){t?this.isError[e]=t:delete this.isError[e],this.props.onError&&this.props.onError(e,t)}renderItem(e,t,n){return this.getText(this.props.schema.label)||this.getText(this.props.schema.text)}renderHelp(e,t,n){return t?$.createElement("a",{href:t,target:"_blank",rel:"noreferrer",style:{color:this.props.oContext.themeType==="dark"?"#a147ff":"#5b238f",textDecoration:"underline"}},this.getText(e,n)):(e=this.getText(e,n)||"",e&&(e.includes("")||e.includes(""))?P.Utils.renderTextWithA(e):e)}async renderHelpAsync(e,t,n){return t?$.createElement("a",{href:t,target:"_blank",rel:"noreferrer",style:{color:this.props.oContext.themeType==="dark"?"#a147ff":"#5b238f",textDecoration:"underline"}},await this.getTextAsync(e,n)):(e=await this.getTextAsync(e,n)||"",e&&(e.includes("")||e.includes(""))?P.Utils.renderTextWithA(e):e)}static escapeString(e,t){return typeof e!="string"?"":(e=e.replace(/`/g,"\\`"),e=e.replace(/\${([^}]+)}/g,(n,h)=>{if(h&&typeof h=="string"&&h.startsWith("data.")){const i=V.getValue(t,h.replace(/^data\./,""));if(typeof i=="string"&&(i.includes("\\")||i.includes('"')))return`\${${h}.replace(/\\\\/g, '\\\\\\\\').replace(/"/g, '\\\\"')}`}return n}),e)}getObject=async e=>{try{return await this.props.oContext.getCachedObject(e)||null}catch(t){return console.error(t),null}};async getPatternAsync(e,t,n){if(t||=this.props.data,!e)return"";let h;typeof e=="object"?e.func?h=e.func:(console.log(`Object must be stringified: ${JSON.stringify(e)}`),h=JSON.stringify(e)):h=e,h.includes("getObject(")&&(h=V.ensureAwaitGetObject(h));try{if(this.props.custom){const o=await new this.AsyncFunction("data","originalData","arrayIndex","globalData","_system","instanceObj","customObj","_socket","_changed","_href","getObject",`return \`${V.escapeString(h,t)}\``)(t,this.props.originalData,this.props.arrayIndex,this.props.globalData,this.props.oContext.systemConfig,this.props.oContext.instanceObj,this.props.customObj,this.props.oContext.socket,this.props.changed,window.location.href,this.getObject);return n?o:P.I18n.t(o)}const s=await new this.AsyncFunction("data","originalData","arrayIndex","globalData","_system","_alive","_common","_socket","_changed","_href","getObject",`return \`${V.escapeString(h,t)}\``)(t,this.props.originalData,this.props.arrayIndex,this.props.globalData,this.props.oContext.systemConfig,this.props.alive,this.props.common,this.props.oContext.socket,this.props.changed,window.location.href,this.getObject);return n?s:P.I18n.t(s)}catch(i){return console.error(`Cannot execute ${h}: ${i}`),h}}getPattern(e,t,n){if(t||=this.props.data,!e)return"";let h;typeof e=="object"?e.func?h=e.func:(console.log(`Object must be stringified: ${JSON.stringify(e)}`),h=JSON.stringify(e)):h=e,h.includes("getObject(")&&console.warn(`It is not possible to use getObject function in text patterns: ${h}`);try{if(this.props.custom){const o=new Function("data","originalData","arrayIndex","globalData","_system","instanceObj","customObj","_socket","_changed","_href",`return \`${V.escapeString(h,t)}\``)(t,this.props.originalData,this.props.arrayIndex,this.props.globalData,this.props.oContext.systemConfig,this.props.oContext.instanceObj,this.props.customObj,this.props.oContext.socket,this.props.changed,window.location.href,this.getObject);return n?o:P.I18n.t(o)}const s=new Function("data","originalData","arrayIndex","globalData","_system","_alive","_common","_socket","_changed","_href",`return \`${V.escapeString(h,t)}\``)(t,this.props.originalData,this.props.arrayIndex,this.props.globalData,this.props.oContext.systemConfig,this.props.alive,this.props.common,this.props.oContext.socket,this.props.changed,window.location.href);return n?s:P.I18n.t(s)}catch(i){return console.error(`Cannot execute ${h}: ${i}`),h}}updateCalculatedValues(){this.calculateTimeout&&clearTimeout(this.calculateTimeout),this.calculateTimeout=setTimeout(async()=>{this.calculateTimeout=null;const e=this.props.schema;if(!e)return null;const{error:t,disabled:n,hidden:h,defaultValue:i}=await this.calculate(e);(!this.state.calculatedValues||this.state.calculatedValues.error!==t||this.state.calculatedValues.disabled!==n||this.state.calculatedValues.hidden!==h||this.state.calculatedValues.defaultValue!==i)&&this.setState({calculatedValues:{error:t,disabled:n,hidden:h,defaultValue:i}})},50)}render(){const e=this.props.schema;if(!e||this.props.expertMode===!1&&e.expertMode||(this.props.alive&&this.defaultSendToDone===!1&&(this.sendToTimeout=setTimeout(async()=>{this.sendToTimeout=null,await this.sendTo()},200)),this.updateCalculatedValues(),!this.state.calculatedValues))return null;if(this.state.calculatedValues.hidden){if(Object.keys(this.isError).length&&(setTimeout(h=>Object.keys(h).forEach(i=>this.props.onError(i)),100,JSON.parse(JSON.stringify(this.isError))),this.isError={}),e.hideOnlyControl){const h=$.createElement(ze,{size:{xs:e.xs||Ch,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0},style:{marginBottom:0,textAlign:"left",...e.style,...this.props.oContext.themeType==="dark"?e.darkStyle:{}}});return e.newLine?$.createElement($.Fragment,null,$.createElement("div",{style:{flexBasis:"100%",height:0}}),h):h}return this.props.onHiddenChanged&&!this.reportedHidden&&(this.reportedHidden=!0,setTimeout(()=>this.props.onHiddenChanged(this.props.attr,!0),10)),null}this.props.onHiddenChanged&&this.reportedHidden&&(this.reportedHidden=!1,setTimeout(()=>this.props.onHiddenChanged(this.props.attr,!1),10)),e.validatorNoSaveOnError&&(this.state.calculatedValues.error&&!Object.keys(this.isError).length?(this.isError={[this.props.attr]:e.validatorErrorText?P.I18n.t(e.validatorErrorText):!0},setTimeout(h=>Object.keys(h).forEach(i=>this.props.onError(i,h[i])),100,JSON.parse(JSON.stringify(this.isError)))):!this.state.calculatedValues.error&&Object.keys(this.isError).length&&(setTimeout(h=>Object.keys(h).forEach(i=>this.props.onError(i)),100,JSON.parse(JSON.stringify(this.isError))),this.isError={}));const t=this.renderItem(this.state.calculatedValues.error,this.state.calculatedValues.disabled||this.props.commandRunning||this.props.disabled,this.state.calculatedValues.defaultValue);if(this.noPlaceRequired)return t;const n=$.createElement(ze,{title:this.getText(e.tooltip),size:{xs:e.xs||12,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0},style:{marginBottom:0,textAlign:"left",width:e.type==="divider"||e.type==="header"?e.width||"100%":void 0,...e.style,...this.props.oContext.themeType==="dark"?e.darkStyle:{}}},this.props.schema.defaultSendTo&&this.props.schema.button?$.createElement(ze,{container:!0,style:{width:"100%"}},$.createElement(ze,{flex:1},t),$.createElement(ze,null,$.createElement(ve,{disabled:this.state.calculatedValues.disabled,variant:"outlined",onClick:()=>this.sendTo(),title:this.props.schema.buttonTooltip?this.getText(this.props.schema.buttonTooltip,this.props.schema.buttonTooltipNoTranslation):P.I18n.t("ra_Request data by instance")},this.getText(this.props.schema.button)))):t);return e.newLine?$.createElement($.Fragment,null,$.createElement("div",{style:{flexBasis:"100%",height:0}}),this.renderDialogConfirm(),n):this.state.confirmDialog?$.createElement($.Fragment,null,this.renderDialogConfirm(),n):n}}const tt={fullWidth:{width:"100%"},accordionSummary:m=>({backgroundColor:m.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.08)"}),accordionTitle:{},toolbar:m=>({backgroundColor:m.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.08)",borderRadius:"3px"}),tooltip:{pointerEvents:"none"}};class Sh extends V{typingTimer=null;constructor(e){super(e),this.props.schema.items||=[]}async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr)||[];Array.isArray(e)||(e=[]),this.setState({value:e,activeIndex:-1,iteration:0,accordionErrors:{}})}componentWillUnmount(){this.typingTimer&&(clearTimeout(this.typingTimer),this.typingTimer=null),super.componentWillUnmount()}onAccordionError=e=>(t,n)=>{const h={...this.state.accordionErrors};h[e]||(h[e]={}),n?h[e][t]=n:(delete h[e][t],Object.keys(h[e]).length===0&&delete h[e]),this.setState({accordionErrors:h}),this.props.onError(t,n)};hasAccordionErrors=e=>!!(this.state.accordionErrors[e]&&Object.keys(this.state.accordionErrors[e]).length>0);itemAccordion(e,t){const{value:n}=this.state,{schema:h}=this.props,i={type:"panel",items:h.items.reduce((s,d)=>(s[d.attr]=d,s),{}),style:{marginLeft:"-8px",marginTop:"10px",marginBottom:"10px"}};return $.createElement(tn,{oContext:this.props.oContext,index:t+this.state.iteration,arrayIndex:t,changed:this.props.changed,expertMode:this.props.expertMode,globalData:this.props.data,common:this.props.common,alive:this.props.alive,themeName:this.props.themeName,data:e,custom:!0,schema:i,originalData:this.props.originalData,onChange:(s,d)=>{const o=JSON.parse(JSON.stringify(n));o[t][s]=d,this.setState({value:o},()=>this.onChangeWrapper(o))},onError:this.onAccordionError(t),onHiddenChanged:this.props.onHiddenChanged,table:this.props.table,customComponents:this.props.customComponents})}onDelete=e=>()=>{const t=JSON.parse(JSON.stringify(this.state.value));t.splice(e,1),this.setState({value:t,iteration:this.state.iteration+1e4},()=>this.onChangeWrapper(t))};onClone=e=>()=>{const t=JSON.parse(JSON.stringify(this.state.value)),n=JSON.parse(JSON.stringify(t[e]));if(typeof this.props.schema.clone=="string"&&typeof n[this.props.schema.clone]=="string"){let h=1,i=n[this.props.schema.clone];const s=i.match(/(\d+)$/);for(s?(i=i.replace(s[0],""),h=parseInt(s[0],10)+1):i+="_";t.find(d=>d[this.props.schema.clone]===i+h.toString());)h++;n[this.props.schema.clone]=`${n[this.props.schema.clone]}_${h}`}t.splice(e,0,n),this.setState({value:t,activeIndex:-1,iteration:this.state.iteration+1e4},()=>this.onChangeWrapper(t))};onChangeWrapper=e=>{this.typingTimer&&clearTimeout(this.typingTimer),this.typingTimer=setTimeout(t=>{this.typingTimer=null;const n=this.onChange(this.props.attr,t);n instanceof Promise&&n.catch(h=>this.onError(h))},300,e)};onAdd=async()=>{const{schema:e}=this.props,t=JSON.parse(JSON.stringify(this.state.value)),n={};if(e.items)for(const h of e.items){let i;h.defaultFunc?this.props.custom?i=h.defaultFunc?await this.executeCustom(h.defaultFunc,this.props.data,this.props.customObj,this.props.oContext.instanceObj,t.length,this.props.data):this.props.schema.default:i=h.defaultFunc?await this.execute(h.defaultFunc,this.props.schema.default,this.props.data,t.length,this.props.data):this.props.schema.default:i=h.default??null,n[h.attr]=i}t.push(n),this.setState({value:t,activeIndex:t.length-1},()=>this.onChangeWrapper(t))};onMoveUp(e){const t=JSON.parse(JSON.stringify(this.state.value)),n=t[e];t.splice(e,1),t.splice(e-1,0,n);const h=this.state.activeIndex-1;this.setState({value:t,activeIndex:h,iteration:this.state.iteration+1e4},()=>this.onChangeWrapper(t))}onMoveDown(e){const t=JSON.parse(JSON.stringify(this.state.value)),n=t[e];t.splice(e,1),t.splice(e+1,0,n);const h=this.state.activeIndex+1;this.setState({value:t,activeIndex:h,iteration:this.state.iteration+1e4},()=>this.onChangeWrapper(t))}onExport=()=>{const{value:e}=this.state,t=JSON.stringify(e,null,2),n=`data:application/json;charset=utf-8,${encodeURIComponent(t)}`,h=`config_section_${new Date().toISOString().slice(0,19).replace(/:/g,"-")}.json`,i=document.createElement("a");i.setAttribute("href",n),i.setAttribute("download",h),i.click()};onImport=e=>{const t=document.createElement("input");t.type="file",t.accept=".json",t.onchange=n=>{var s;const h=(s=n.target.files)==null?void 0:s[0];if(!h)return;const i=new FileReader;i.onload=d=>{var o;try{const l=JSON.parse((o=d.target)==null?void 0:o.result);if(!Array.isArray(l)){alert(P.I18n.t("ra_Invalid JSON format. Expected an array."));return}let r;e?r=l:r=[...this.state.value,...l],this.setState({value:r,activeIndex:-1},()=>this.onChangeWrapper(r))}catch{alert(P.I18n.t("ra_Invalid JSON file."))}},i.readAsText(h)},t.click()};renderItem(){const{schema:e}=this.props,{value:t}=this.state;return t?$.createElement(In,null,e.label||!e.noDelete?$.createElement(Pn,{variant:"dense"},e.label?$.createElement(yt,{variant:"h6",id:"tableTitle",component:"div"},this.getText(e.label)):null,e.noDelete?null:$.createElement($.Fragment,null,$.createElement(me,{title:P.I18n.t("ra_Export configuration section")},$.createElement(se,{size:"small",color:"primary",onClick:this.onExport},$.createElement(Sc,null))),$.createElement(me,{title:P.I18n.t("ra_Import and replace configuration section")},$.createElement(se,{size:"small",color:"primary",onClick:()=>this.onImport(!0)},$.createElement(Ec,null))),$.createElement(me,{title:P.I18n.t("ra_Import and add configuration section")},$.createElement(se,{size:"small",color:"primary",onClick:()=>this.onImport(!1)},$.createElement(Ac,null))),$.createElement(se,{size:"small",color:"primary",onClick:this.onAdd},$.createElement(Un,null)))):null,t.map((n,h)=>$.createElement(js,{key:`${n}_${h}`,expanded:this.state.activeIndex===h,onChange:(i,s)=>this.setState({activeIndex:s?h:-1})},$.createElement(Hs,{expandIcon:$.createElement(Ii,null),sx:P.Utils.getStyle(this.props.oContext.theme,tt.fullWidth,tt.accordionSummary)},$.createElement(Ie,{sx:{display:"flex",alignItems:"center",gap:1,width:"100%"}},$.createElement(yt,{style:tt.accordionTitle},n[e.titleAttr]),this.hasAccordionErrors(h)&&$.createElement(Jt,{sx:{fontSize:20,color:"error.main"}}))),$.createElement(zs,{style:{...e.style,...this.props.oContext.themeType?e.darkStyle:void 0}},this.itemAccordion(t[h],h),$.createElement(Pn,{sx:tt.toolbar},h?$.createElement(me,{title:P.I18n.t("ra_Move up"),slotProps:{popper:{sx:tt.tooltip}}},$.createElement(se,{size:"small",onClick:()=>this.onMoveUp(h)},$.createElement(Ai,null))):$.createElement("div",{style:tt.buttonEmpty}),hthis.onMoveDown(h)},$.createElement(Di,null))):$.createElement("div",{style:tt.buttonEmpty}),e.noDelete?null:$.createElement(me,{title:P.I18n.t("ra_Delete current row"),slotProps:{popper:{sx:tt.tooltip}}},$.createElement(se,{size:"small",onClick:this.onDelete(h)},$.createElement(_t,null))),e.clone?$.createElement(me,{title:P.I18n.t("ra_Clone current row"),slotProps:{popper:{sx:tt.tooltip}}},$.createElement(se,{size:"small",onClick:this.onClone(h)},$.createElement(fn,null))):null)))),!e.noDelete&&t.length>0?$.createElement(Pn,{variant:"dense",sx:tt.rootTool},$.createElement(se,{size:"small",color:"primary",onClick:this.onAdd},$.createElement(Un,null))):null,e.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null):null}}const Hr={root:{width:"100%"},notAlive:{color:"#a30000"}};class Eh extends V{aliveId=null;checkTimeout=null;async componentDidMount(){await super.componentDidMount();const e=await this.getInstance();this.aliveId=`${e}.alive`;const t=await this.props.oContext.socket.getState(this.aliveId);this.setState({alive:!!(t&&t.val),instance:e},async()=>{await this.props.oContext.socket.subscribeState(this.aliveId,this.onAliveChanged)})}componentWillUnmount(){this.checkTimeout&&(clearTimeout(this.checkTimeout),this.checkTimeout=null),this.props.oContext.socket.unsubscribeState(this.aliveId,this.onAliveChanged)}onAliveChanged=(e,t)=>{e===this.aliveId&&this.state.alive!==!!(t!=null&&t.val)&&this.setState({alive:!!(t!=null&&t.val)})};async getInstance(){let e=this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`;return e.includes("${")&&(e=await this.getPatternAsync(e,null,!0)),e&&!e.startsWith("system.adapter.")&&(e=`system.adapter.${e}`),e}checkIfInstanceChanged(){this.checkTimeout&&clearTimeout(this.checkTimeout),this.checkTimeout=setTimeout(async()=>{this.checkTimeout=null;const e=await this.getInstance();e!==this.state.instance&&(e?this.props.oContext.socket.getState(`${e}.alive`).then(t=>this.setState({alive:!!(t&&t.val),instance:e})):this.setState({alive:null,instance:e}))},200)}renderItem(){if(this.checkIfInstanceChanged(),this.state.alive!==!1&&this.state.alive!==!0)return null;const e=this.state.instance.replace(/^system\.adapter\./,"");return $.createElement("div",{style:{...Hr.root,...this.state.alive?void 0:Hr.notAlive}},this.state.alive?this.props.schema.textAlive!==void 0?this.props.schema.textAlive?P.I18n.t(this.props.schema.textAlive,e):"":P.I18n.t("ra_Instance %s is alive",e):this.props.schema.textNotAlive!==void 0?this.props.schema.textNotAlive?P.I18n.t(this.props.schema.textNotAlive,e):"":P.I18n.t("ra_Instance %s is not alive",e))}}class Ah extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr),t=this.props.schema.options.map(n=>typeof n=="string"?{label:n,value:n}:JSON.parse(JSON.stringify(n)));if(this.props.onFilterLabelUpdate&&this.props.table){const n={};for(const h of t)h.value!==V.DIFFERENT_VALUE&&(n[h.value]=h.label);this.props.onFilterLabelUpdate(this.props.attr,n)}Array.isArray(e)?(t.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),this.setState({value:V.DIFFERENT_VALUE,selectOptions:t})):this.setState({value:e,selectOptions:t})}renderItem(e,t){if(!this.state.selectOptions)return null;let n;const h=JSON.parse(JSON.stringify(this.state.selectOptions));return Array.isArray(this.state.value)||this.state.value===V.DIFFERENT_VALUE?([...this.state.value].filter(s=>!h.find(d=>typeof d=="object"?d.value===s:d===s)).forEach(s=>h.push({label:s.toString(),value:s})),n={label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE},h.unshift(n)):(n=this.state.value!==null&&this.state.value!==void 0&&h.find(s=>typeof s=="object"?s.value==this.state.value:s==this.state.value),this.state.value!==null&&this.state.value!==void 0&&!n&&this.props.schema.freeSolo&&(n={value:this.state.value,label:this.state.value},h.push(n))),$.createElement(Wi,{fullWidth:!0,freeSolo:!!this.props.schema.freeSolo,value:n,options:h,isOptionEqualToValue:(s,d)=>s.value===d.value,filterOptions:(s,d)=>{const o=s.filter(l=>d.inputValue===""?!0:l.label.toLowerCase().includes(d.inputValue.toLowerCase())||l.value.toLowerCase().includes(d.inputValue.toLowerCase()));return this.props.schema.freeSolo&&d.inputValue!==""&&o.push({label:d.inputValue,value:d.inputValue}),o},onInputChange:s=>{if(!s||!this.props.schema.freeSolo)return;const d=s.target.value;d!==this.state.value&&this.setState({value:d},()=>this.onChange(this.props.attr,d))},onChange:(s,d)=>{const o=typeof d=="object"?d?d.value:"":d;o!==this.state.value&&this.setState({value:o},()=>this.onChange(this.props.attr,o))},getOptionLabel:s=>typeof s=="object"?(s==null?void 0:s.label)??"":"",renderInput:s=>$.createElement(pe,{variant:"standard",...s,error:!!e,placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),disabled:t})})}}class Dh extends V{initialized=!1;localContext;async askInstance(){const e=V.getValue(this.props.data,this.props.attr),t=this.props.schema.options?this.props.schema.options.map(n=>typeof n=="string"?{label:n,value:n}:JSON.parse(JSON.stringify(n))):[];if(this.props.alive){let n=this.props.schema.data;if(n===void 0&&this.props.schema.jsonData){const i=await this.getPatternAsync(this.props.schema.jsonData,null,!0);try{typeof i=="string"&&(n=JSON.parse(i))}catch{console.error(`Cannot parse json data: ${JSON.stringify(n)}`)}}n===void 0&&(n=null),this.setState({loading:!0});const h=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(h!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const i=await this.props.oContext.socket.getState(`system.adapter.${h}.alive`);if(!(i!=null&&i.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",h));return}}this.props.oContext.socket.sendTo(h,this.props.schema.command||"send",n).then(i=>{i&&Array.isArray(i)&&i.forEach(s=>t.push(typeof s=="string"?{label:s,value:s}:JSON.parse(JSON.stringify(s)))),this.reportFilterLabels(t),Array.isArray(e)?(t.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),this.setState({value:V.DIFFERENT_VALUE,selectOptions:t,loading:!1})):this.setState({value:e,selectOptions:t,loading:!1})}).catch(i=>{console.error("Error in autocompleteSendTo:",i),this.setState({loading:!1})})}else Array.isArray(e)?(t.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),this.reportFilterLabels(t),this.setState({value:V.DIFFERENT_VALUE,selectOptions:t})):(this.reportFilterLabels(t),this.setState({value:e,selectOptions:t}))}reportFilterLabels(e){if(this.props.onFilterLabelUpdate&&this.props.table){const t={};for(const n of e)n.value!==V.DIFFERENT_VALUE&&(t[n.value]=n.label);this.props.onFilterLabelUpdate(this.props.attr,t)}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(e,t){if(this.props.alive){const s=this.getContext();(s!==this.localContext||!this.initialized)&&(this.localContext=s,setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}let n;const h=this.state.selectOptions?JSON.parse(JSON.stringify(this.state.selectOptions)):[];return Array.isArray(this.state.value)||this.state.value===V.DIFFERENT_LABEL?([...this.state.value].filter(s=>!h.find(d=>d.value===s)).forEach(s=>h.push({label:s.toString(),value:s})),n={label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE},h.unshift(n)):(n=this.state.value!==null&&this.state.value!==void 0&&h.find(s=>s.value==this.state.value),this.state.value!==null&&this.state.value!==void 0&&!n&&this.props.schema.freeSolo&&(n={value:this.state.value,label:this.state.value},h.push(n)),n=n||null),h.length?$.createElement(Wi,{value:n,fullWidth:!0,freeSolo:!!this.props.schema.freeSolo,options:h,disabled:t,isOptionEqualToValue:(s,d)=>s.value===d.value,filterOptions:(s,d)=>{const o=s.filter(l=>d.inputValue===""?!0:l.label.toLowerCase().includes(d.inputValue.toLowerCase())||l.value.toLowerCase().includes(d.inputValue.toLowerCase()));return this.props.schema.freeSolo&&d.inputValue!==""&&o.push({label:d.inputValue,value:d.inputValue}),o},getOptionLabel:s=>(s==null?void 0:s.label)??"",onInputChange:s=>{if(!s||!this.props.schema.freeSolo)return;const d=s.target.value;d!==this.state.value&&this.setState({value:d},()=>this.onChange(this.props.attr,d))},onChange:(s,d)=>{const o=typeof d=="object"?d?d.value:"":d;o!==this.state.value&&this.setState({value:o},()=>this.onChange(this.props.attr,o))},renderInput:s=>$.createElement(pe,{variant:"standard",...s,error:!!e,placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),disabled:t,slotProps:{input:{...s.InputProps,endAdornment:$.createElement($.Fragment,null,this.state.loading?$.createElement(vn,{position:"end"},$.createElement(Tt,{size:20})):null,t?null:s.InputProps.endAdornment)}}})}):$.createElement(pe,{variant:"standard",fullWidth:!0,value:this.state.value??"",error:!!e,disabled:t,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0},input:{endAdornment:this.state.loading?$.createElement(vn,{position:"end"},$.createElement(Tt,{size:20})):null}},onChange:s=>{const d=s.target.value;this.setState({value:d},()=>this.onChange(this.props.attr,(d||"").trim()))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}const us={fullWidth:{width:"100%"},flex:{display:"flex"},button:{height:48,marginLeft:4,minWidth:48}};class $h extends V{async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t)||"";this.setState({value:n,showDialog:!1})}renderItem(e,t){const{schema:n,attr:h}=this.props,{value:i,showDialog:s}=this.state;return $.createElement(fe,{style:us.fullWidth,variant:"standard"},n.label?$.createElement(_e,{shrink:!0},this.getText(n.label)):null,$.createElement("div",{style:us.flex},$.createElement(pe,{variant:"standard",fullWidth:!0,value:i??"",error:!!e,disabled:t,placeholder:this.getText(n.placeholder),label:this.getText(n.label),helperText:this.renderHelp(n.help,n.helpLink,n.noTranslation),onChange:d=>{const o=d.target.value;this.setState({value:o},()=>this.onChange(h,o))}}),$.createElement(ve,{color:"grey",disabled:t,style:us.button,size:"small",variant:"outlined",onClick:()=>this.setState({showDialog:!0})},"...")),s?$.createElement(P.DialogCron,{title:P.I18n.t("ra_Define schedule"),simple:n.simple,complex:n.complex,cron:i,onClose:()=>this.setState({showDialog:!1}),cancel:P.I18n.t("ra_Cancel"),ok:P.I18n.t("ra_Ok"),theme:this.props.oContext.theme,onOk:d=>this.setState({showDialog:!1,value:d},()=>this.onChange(h,d))}):null)}}class xh extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr),n=(await this.props.oContext.socket.getCertificates()).filter(h=>{const i=this.props.attr.toLowerCase();return i.includes(h.type)||h.type==="public"&&i.includes("cert")||h.type==="private"&&(i.includes("priv")||i.includes("key"))?!0:!!(h.type==="chained"&&(i.includes("chain")||i.includes("ca")))}).map(h=>({label:h.name,value:h.name}));n.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({value:e,selectOptions:n})}renderItem(e,t){var h,i;if(!this.state.selectOptions)return null;const n=(h=this.state.selectOptions)==null?void 0:h.find(s=>s.value===this.state.value);return $.createElement(fe,{style:{width:"100%"},variant:"standard"},this.props.schema.label?$.createElement(_e,{shrink:!0},this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:this.state.value,renderValue:()=>this.getText(n==null?void 0:n.label,this.props.schema.noTranslation!==!1),onChange:s=>this.setState({value:s.target.value},()=>this.onChange(this.props.attr,this.state.value))},(i=this.state.selectOptions)==null?void 0:i.map(s=>$.createElement($e,{key:s.value,value:s.value,style:s.value===V.NONE_VALUE?{opacity:.5}:{}},this.getText(s.label,this.props.schema.noTranslation!==!1)))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Ln={fullWidth:{width:"100%"},leWidth:{width:620,marginBottom:10},certWidth:{width:200,marginRight:10}};class _h extends V{async componentDidMount(){var d;await super.componentDidMount();const e=await this.props.oContext.socket.getCertificates(),t=[],n=[],h=[];let i=[];const s=await this.getCachedObject("system.certificates");(d=s==null?void 0:s.native)!=null&&d.collections?i=Object.keys(s.native.collections):i=null,e.forEach(o=>{o.type==="public"?t.push({label:o.name,value:o.name}):o.type==="private"?n.push({label:o.name,value:o.name}):o.type==="chained"?h.push({label:o.name,value:o.name}):(t.push({label:o.name,value:o.name}),n.push({label:o.name,value:o.name}),h.push({label:o.name,value:o.name}))}),t.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),n.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),h.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({certsPublicOptions:t,certsChainOptions:h,certsPrivateOptions:n,collectionsOptions:i})}renderItem(e,t){var r,a,c,p,u,f,g;if(!this.state.certsPublicOptions||!this.state.certsPrivateOptions||!this.state.certsChainOptions)return null;const n=(V.getValue(this.props.data,this.props.schema.leCollectionName||"leCollection")||"false").toString(),h=V.getValue(this.props.data,this.props.schema.certPublicName||"certPublic"),i=V.getValue(this.props.data,this.props.schema.certPrivateName||"certPrivate"),s=V.getValue(this.props.data,this.props.schema.certChainedName||"certChained"),d=(r=this.state.certsPublicOptions)==null?void 0:r.find(v=>v.value===h),o=(a=this.state.certsPrivateOptions)==null?void 0:a.find(v=>v.value===i),l=(c=this.state.certsChainOptions)==null?void 0:c.find(v=>v.value===s);return $.createElement("div",{style:Ln.fullWidth},this.state.collectionsOptions?$.createElement(fe,{style:Ln.leWidth,variant:"standard"},$.createElement(_e,{shrink:!0},"Let's encrypt"),$.createElement(Ne,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:n,onChange:v=>this.onChange(this.props.schema.leCollectionName||"leCollection",v.target.value==="false"?!1:v.target.value==="true"?!0:v.target.value)},$.createElement($e,{key:"_false",value:"false",style:{fontWeight:"bold"}},P.I18n.t("ra_Do not use let's encrypt")),$.createElement($e,{key:"_true",value:"true",style:{fontWeight:"bold"}},P.I18n.t("ra_Use all available let's encrypt certificates")),(p=this.state.collectionsOptions)==null?void 0:p.map(v=>$.createElement($e,{key:v,value:v},v)))):null,this.state.collectionsOptions?$.createElement("br",null):null,this.state.collectionsOptions&&n!=="false"?$.createElement("div",null,P.I18n.t("ra_Fallback custom certificates")):null,$.createElement(fe,{style:Ln.certWidth,variant:"standard"},$.createElement(_e,{shrink:!0},P.I18n.t("ra_Public certificate")),$.createElement(Ne,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:h||"",renderValue:()=>this.getText(d==null?void 0:d.label,!0),onChange:v=>this.onChange(this.props.schema.certPublicName||"certPublic",v.target.value)},(u=this.state.certsPublicOptions)==null?void 0:u.map((v,b)=>$.createElement($e,{key:`${v.value}_${b}`,value:v.value,style:v.value===V.NONE_VALUE?{opacity:.5}:{}},this.getText(v.label,!0))))),$.createElement(fe,{style:Ln.certWidth,variant:"standard"},$.createElement(_e,{shrink:!0},P.I18n.t("ra_Private certificate")),$.createElement(Ne,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:i||"",renderValue:()=>this.getText(o==null?void 0:o.label,!0),onChange:v=>this.onChange(this.props.schema.certPrivateName||"certPrivate",v.target.value)},(f=this.state.certsPrivateOptions)==null?void 0:f.map((v,b)=>$.createElement($e,{key:`${v.value}_${b}`,value:v.value,style:v.value===V.NONE_VALUE?{opacity:.5}:{}},this.getText(v.label,!0))))),$.createElement(fe,{style:Ln.certWidth,variant:"standard"},$.createElement(_e,{shrink:!0},P.I18n.t("ra_Chained certificate")),$.createElement(Ne,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:s||"",renderValue:()=>this.getText(l==null?void 0:l.label,!0),onChange:v=>this.onChange(this.props.schema.certChainedName||"certChained",v.target.value)},(g=this.state.certsChainOptions)==null?void 0:g.map((v,b)=>$.createElement($e,{key:`${v.value}_${b}`,value:v.value,style:v.value===V.NONE_VALUE?{opacity:.5}:{}},this.getText(v.label,!0))))))}}class kh extends V{async componentDidMount(){var n;await super.componentDidMount();let e;const t=await this.getCachedObject("system.certificates");(n=t==null?void 0:t.native)!=null&&n.collections?e=Object.keys(t.native.collections):e=[],this.setState({collectionsOptions:e})}renderItem(e,t){var h;if(!this.state.collectionsOptions)return null;const n=(V.getValue(this.props.data,this.props.schema.leCollectionName||"leCollection")||"false").toString();return $.createElement(fe,{style:{width:"100%"},variant:"standard"},this.props.schema.label?$.createElement(_e,{shrink:!0},this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:n,onChange:i=>this.onChange(this.props.schema.leCollectionName||"leCollection",i.target.value==="false"?!1:i.target.value==="true"?!0:i.target.value)},$.createElement($e,{key:"_false",value:"false",style:{fontWeight:"bold"}},P.I18n.t("ra_Do not use let's encrypt")),$.createElement($e,{key:"_true",value:"true",style:{fontWeight:"bold"}},P.I18n.t("ra_Use all available let's encrypt certificates")),(h=this.state.collectionsOptions)==null?void 0:h.map(i=>$.createElement($e,{key:i,value:i},i))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Th extends V{async componentDidMount(){await super.componentDidMount();const e=await this.props.oContext.socket.getCurrentInstance();this.setState({requesting:!0},async()=>{const t=await this.props.oContext.socket.sendTo(e,"checkDocker",null);this.setState({requesting:!1,version:(t==null?void 0:t.version)||"",errorDocker:t?t.daemonRunning?"":P.I18n.t("ra_Docker is not installed or not running"):P.I18n.t("ra_No response from admin")})})}renderItem(e,t){const n=V.getValue(this.props.data,this.props.attr);return this.state.requesting?$.createElement(Tt,null):this.state.errorDocker&&!n?$.createElement(ge,{style:{color:"orange"}},P.I18n.t("ra_Docker is not available"),": ",P.I18n.t(`ra_${this.state.errorDocker}`).replace(/^ra_/,"")):$.createElement(fe,{style:{width:"100%"},variant:"standard"},$.createElement(Xn,{onClick:h=>{if(h.preventDefault(),h.stopPropagation(),!t){const i=this.onChange(this.props.attr,!n);i instanceof Promise&&i.catch(s=>console.error(`Cannot set value: ${s}`))}},control:$.createElement(Zt,{checked:!!n,onChange:h=>{this.onChange(this.props.attr,h.target.checked)},disabled:t||!!this.state.errorDocker&&!n}),label:this.getText(this.props.schema.label)}),this.props.schema.hideVersion?null:$.createElement(ge,null,this.state.errorDocker?this.state.errorDocker:this.state.version),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const ps="system.credentials.";function zr(m,e,t){return $.createElement("span",{style:{display:"flex",alignItems:"center",gap:8}},m!=null&&m.icon?$.createElement(P.Icon,{src:m.icon,style:{width:20,height:20}}):t?$.createElement("span",{style:{width:20,height:20,flexShrink:0}}):null,e)}class Zs extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);let t=[];try{const n=await this.props.oContext.socket.getObjectViewSystem("config",ps,`${ps}香`);t=Object.values(n).filter(h=>{var i;return!!h&&(!this.props.schema.credentialType||((i=h.native)==null?void 0:i.type)===this.props.schema.credentialType)}).map(h=>{var i;return{label:Zs.getCredentialName(h),value:h._id,icon:typeof((i=h.common)==null?void 0:i.icon)=="string"?h.common.icon:void 0}}).sort((h,i)=>h.label.localeCompare(i.label))}catch(n){console.error(`Cannot read credentials: ${n}`)}t.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({value:e,selectOptions:t})}static getCredentialName(e){var h;const t=(h=e.common)==null?void 0:h.name;let n;return t&&typeof t=="object"?n=t[P.I18n.getLanguage()]||t.en||Object.values(t)[0]||"":n=t||"",n||e._id.substring(ps.length)}renderItem(e,t){var s,d;if(!this.state.selectOptions)return null;const n=(s=this.state.selectOptions)==null?void 0:s.find(o=>o.value===this.state.value),h=this.state.value&&this.state.value!==V.NONE_VALUE&&!n?this.state.value:null,i=this.state.selectOptions.some(o=>!!o.icon);return $.createElement(fe,{style:{width:"100%"},variant:"standard"},this.props.schema.label?$.createElement(_e,{shrink:!0},this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e||!!h,displayEmpty:!0,disabled:!!t,value:this.state.value||V.NONE_VALUE,renderValue:()=>h||zr(n,this.getText(n==null?void 0:n.label,this.props.schema.noTranslation!==!1),i),onChange:o=>this.setState({value:o.target.value===V.NONE_VALUE?"":o.target.value},()=>this.onChange(this.props.attr,this.state.value))},(d=this.state.selectOptions)==null?void 0:d.map(o=>$.createElement($e,{key:o.value,value:o.value,style:o.value===V.NONE_VALUE?{opacity:.5}:{}},zr(o,this.getText(o.label,this.props.schema.noTranslation!==!1),i)))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Ke={fullWidth:{width:"100%"},licLabel:{fontWeight:"bold",minWidth:100,marginRight:10,textTransform:"capitalize",display:"inline-block"},errorTitle:m=>({color:m.palette.mode==="dark"?"#e39191":"#b62020"}),okTitle:m=>({color:m.palette.mode==="dark"?"#6fd56f":"#007c00"}),errorText:m=>({color:m.palette.mode==="dark"?"#e39191":"#b62020",mb:"30px"})};class $t extends V{async componentDidMount(){await super.componentDidMount(),this.setState({_error:"",running:!1,showLicenseData:null,foundSuitableLicense:!1,licenseOfflineCheck:!1,result:null,allLicenses:null,askForUpdate:!1,showLinkToProfile:!1})}renderErrorDialog(){if(this.state._error&&!this.state.showLicenseData){let e=this.state._error;return this.state.allLicenses&&(e=[$.createElement("div",{key:"error"},e)],e.push($.createElement(ve,{key:"button",variant:"contained",onClick:()=>window.open("https://iobroker.net/www/account/licenses","_blank")},P.I18n.t("iobroker.net"))),this.state.allLicenses.length?e.push($.createElement(_o,{key:"table"},$.createElement(On,{size:"small"},$.createElement(ko,null,$.createElement(ct,null,$.createElement(Ee,null,P.I18n.t("ra_Product")),$.createElement(Ee,null,P.I18n.t("ra_Version")),$.createElement(Ee,null,"UUID"),$.createElement(Ee,null,P.I18n.t("ra_ValidTill")),$.createElement(Ee,null,P.I18n.t("ra_Commercial")),$.createElement(Ee,null,"ID"))),$.createElement(Fn,null,this.state.allLicenses.map(t=>$.createElement(ct,{key:t.id},$.createElement(Ee,{sx:t.validName?null:Ke.errorText},t.license.product),$.createElement(Ee,{sx:t.validVersion?null:Ke.errorText},t.license.version),$.createElement(Ee,{sx:t.validUuid?null:Ke.errorText},t.license.uuid||"--"),$.createElement(Ee,{sx:t.validTill?null:Ke.errorText},t.license.validTill&&t.license.validTill!=="0000-00-00 00:00:00"?new Date(t.license.validTill).toLocaleDateString():"--"),$.createElement(Ee,null,t.license.invoice!=="free"?t.license.invoice==="MANUALLY_CREATED"?"✓":t.license.invoice:"-"),$.createElement(Ee,null,t.id))))))):(e.push($.createElement("div",{key:"text1"},P.I18n.t("ra_No one license found in license manager"))),e.push($.createElement("div",{key:"text2"},P.I18n.t("ra_Please create license"))))),$.createElement(Lt,{open:!0,maxWidth:"xl",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClick:()=>this.setState({_error:"",allLicenses:null})},$.createElement(yn,null,P.I18n.t("ra_Error")),$.createElement(Kt,null,$.createElement(ec,null,e)),$.createElement(Gt,null,$.createElement(ve,{variant:"contained",onClick:()=>this.setState({_error:"",allLicenses:null}),color:"primary",autoFocus:!0,startIcon:$.createElement(Gs,null)},P.I18n.t("ra_Ok"))))}return null}renderMessageDialog(){if(this.state.showLicenseData){const e=[],t=this.state.showLicenseData;return Object.keys(t).forEach(n=>{if(!(t[n]===null||t[n]===void 0))if(typeof t[n]=="object"){const h=t[n];Object.keys(h).forEach(i=>{h[i]!==null&&h[i]!==void 0&&(typeof h[i]=="object"?e.push($.createElement("div",{key:i},$.createElement("div",{style:Ke.licLabel},i,":"),JSON.stringify(h[i],null,2))):e.push($.createElement("div",{key:i},$.createElement("div",{style:Ke.licLabel},n," -",i,":"),h[i].toString())))})}else e.push($.createElement("div",{key:n},$.createElement("div",{style:Ke.licLabel},n.replace(/_/g," "),":"),t[n].toString()))}),e.push($.createElement("div",{key:"checked"},$.createElement("div",{style:Ke.licLabel},P.I18n.t("ra_Checked"),":"),this.state.licenseOfflineCheck?P.I18n.t("ra_locally"):P.I18n.t("ra_via internet"))),$.createElement(Lt,{open:!0,onClose:()=>this.setState({showLicenseData:null})},$.createElement(yn,null,$.createElement(Ie,{component:"span",sx:this.state.result?Ke.okTitle:Ke.errorTitle},P.I18n.t("ra_License %s",this.state.result?"OK":"INVALID"))),$.createElement(Kt,null,this.state.showLinkToProfile?$.createElement(ve,{variant:"contained",onClick:()=>window.open("https://iobroker.net/www/account/licenses","_blank")},"https://iobroker.net"):null,this.state._error?$.createElement(Ie,{component:"div",sx:Ke.errorText},this.state._error):null,e),$.createElement(Gt,null,$.createElement(ve,{onClick:()=>this.setState({showLicenseData:null,_error:""}),color:"primary",variant:"contained"},P.I18n.t("ra_Close"))))}return null}static parseJwt(e){const n=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),h=decodeURIComponent(atob(n).split("").map(i=>`%${`00${i.charCodeAt(0).toString(16)}`.slice(-2)}`).join(""));try{return JSON.parse(h)}catch{return null}}static isVersionValid(e,t,n,h){if(!t||!e)return!0;let i=!0;const[s]=e.split(".");return t.startsWith(">=")?i=parseInt(s,10)>=parseInt(t.substring(2,10)):t.startsWith("<=")?i=parseInt(s,10)<=parseInt(t.substring(2,10)):t.startsWith(">")?i=parseInt(s,10)>parseInt(t.substring(1,10)):t.startsWith("<")?i=parseInt(s,10){const p=!c.validTill||c.validTill==="0000-00-00 00:00:00"||new Date(c.validTill).getTime()>l,u=(c.product||"").split("."),f=u[1]===e||e==="vis-2"&&u[1]==="vis",g=!r||!c.uuid||c.uuid===r,v=$t.isVersionValid(a,c.version,c.invoice,e);(!o||c.invoice!=="free")&&p&&f&&g&&v&&(o=c),n.push({id:c.id,validName:f,validUuid:g,validVersion:v,validTill:p,license:c})}),o&&(n.find(c=>c.id===o.id).used=!0)}return n}async checkLicense(e,t){var d,o,l;let n;if(this.props.schema.uuid){const r=await this.getCachedObject("system.meta.uuid");n=(d=r==null?void 0:r.native)==null?void 0:d.uuid}let h;if(this.props.schema.version){const r=await this.getCachedObject(`system.adapter.${t}`);h=(o=r==null?void 0:r.common)==null?void 0:o.version}const i=new AbortController;let s=setTimeout(()=>{s=null,i.abort()},5e3);try{const r=await window.fetch("https://iobroker.net/api/v1/public/cert/",{method:"POST",body:JSON.stringify({json:e,uuid:n}),headers:{"Content-Type":"text/plain"},signal:i.signal});s&&clearTimeout(s);const a=await r.text();let c;try{c=JSON.parse(a)}catch{}if(c!=null&&c.error)try{const p=$t.parseJwt(e),u=P.I18n.t(`ra_${p.error||c.error||"Unknown error"}`).replace(/^ra_/,"");return this.setState({_error:u,licenseOfflineCheck:!1,showLicenseData:p,result:!1,running:!1})}catch{return console.log("Cannot parse license"),this.setState({_error:c.error,result:!1,running:!1})}else{let p=null;try{p=$t.parseJwt(e)}catch{}if(c){const u=c.validTill||c.valid_till;if(u&&u!=="0000-00-00 00:00:00"&&new Date(u).getTime(){if(e){this.setState({askForUpdate:!1});try{await this.props.oContext.socket.updateLicenses(null,null)}catch(t){window.alert(P.I18n.t("ra_Cannot read licenses: %s",t));return}await this._onClick(!0)}else this.setState({askForUpdate:!1,running:!1})}}):null}async _onClick(e){const t=this.props.oContext.adapterName==="vis-2"?"vis":this.props.oContext.adapterName;this.setState({running:!0});let n,h;if(this.props.data.useLicenseManager){if(h=await this.findInLicenseManager(t),n=h.find(i=>i.used),n&&(n=n.license.json),!n&&!e){this.setState({askForUpdate:!0});return}}else n=this.props.data.license;n?await this.checkLicense(n,t):this.props.data.useLicenseManager?this.setState({_error:P.I18n.t("ra_Suitable license not found in license manager"),result:!1,running:!1,allLicenses:h}):this.setState({_error:P.I18n.t("ra_Please enter the license"),result:!1,running:!1})}renderItem(){return $.createElement("div",{style:Ke.fullWidth},$.createElement(ve,{variant:this.props.schema.variant||"outlined",color:this.props.schema.color||"primary",style:Ke.fullWidth,disabled:!this.props.data.license&&!this.props.data.useLicenseManager||this.state.running,startIcon:$.createElement(Io,null),onClick:()=>this._onClick()},this.state.running?$.createElement(Tt,{size:20,style:{marginRight:8}}):null,this.getText(this.props.schema.label||"ra_Check license",this.props.schema.noTranslation)),this.renderMessageDialog(),this.renderErrorDialog(),this.renderAskForUpdate())}}class Lh extends V{renderItem(e,t){const n=V.getValue(this.props.data,this.props.attr),h=Array.isArray(n);return $.createElement(fe,{style:{width:"100%"},variant:"standard"},$.createElement(Xn,{onClick:i=>{if(i.preventDefault(),i.stopPropagation(),!t){const s=this.onChange(this.props.attr,!n);s instanceof Promise&&s.catch(d=>console.error(`Cannot set value: ${d}`))}},control:$.createElement(Zt,{indeterminate:h,checked:!!n,onChange:i=>{let s;h?s=this.onChange(this.props.attr,!0):s=this.onChange(this.props.attr,i.target.checked),s instanceof Promise&&s.catch(d=>console.error(`Cannot set value: ${d}`))},disabled:t||this.props.schema.readOnly}),label:this.getText(this.props.schema.label)}),$.createElement(ge,{style:{color:"red"}},e?this.props.schema.validatorErrorText?P.I18n.t(this.props.schema.validatorErrorText):P.I18n.t("ra_Error"):null),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Mh={standard:ic,filled:nc,outlined:tc},Ih=m=>{const e=m.palette.mode==="light",t=e?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return{root:{},inputRoot:{display:"inline-flex",flexWrap:"wrap",flex:1,marginTop:0,minWidth:70,"&.mui-variant-outlined,&.mui-variant-filled":{boxSizing:"border-box"},"&.mui-variant-outlined":{paddingTop:"14px"},"&.mui-variant-filled":{paddingTop:"28px"}},input:{display:"inline-block",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",appearance:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",float:"left",flex:1},chipContainer:{display:"flex",flexFlow:"row wrap",alignItems:"center",cursor:"text",marginBottom:"-2px",minHeight:40},outlined:{"& input":{height:16,paddingTop:"4px",paddingBottom:"12px",marginTop:"4px",marginBottom:"4px"}},standard:{marginTop:"18px"},filled:{"& input":{height:22,marginBottom:"4px",marginTop:"4px",paddingTop:0},"$marginDense & input":{height:26}},labeled:{},label:{top:4,"&$outlined&:not($labelShrink)":{top:2,"$marginDense &":{top:5}},"&$filled&:not($labelShrink)":{top:15,"$marginDense &":{top:20}}},labelShrink:{top:0},helperText:{marginBottom:-20},focused:{},disabled:{},underline:{"&:after":{borderBottom:`2px solid ${m.palette.primary[e?"dark":"light"]}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:m.transitions.create("transform",{duration:m.transitions.duration.shorter,easing:m.transitions.easing.easeOut}),pointerEvents:"none"},"&$focused:after":{transform:"scaleX(1)"},"&$error:after":{borderBottomColor:m.palette.error.main,transform:"scaleX(1)"},"&:before":{borderBottom:`1px solid ${t}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:m.transitions.create("border-bottom-color",{duration:m.transitions.duration.shorter}),pointerEvents:"none"},"&:hover:not($disabled):not($focused):not($error):before":{borderBottom:`2px solid ${m.palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${t}`}},"&$disabled:before":{borderBottomStyle:"dotted"}},error:{"&:after":{backgroundColor:m.palette.error.main,transform:"scaleX(1)"}},chip:{margin:"0 8px 8px 0",float:"left"},marginDense:{}}},di={BACKSPACE:8,DELETE:46,LEFT_ARROW:37,RIGHT_ARROW:39},Oh=({value:m,isFocused:e,isDisabled:t,isReadOnly:n,handleClick:h,handleDelete:i,style:s},d)=>$.createElement(Vs,{key:d,style:{...s,pointerEvents:t||n?"none":void 0,backgroundColor:e?Xc[300]:void 0},onClick:h,onDelete:i,label:m});class Fh extends $.Component{labelRef;labelNode=null;input;newChipKeyCodes;newChipKeys;actualInput=null;inputBlurTimeout=null;_keyPressed;_preventChipCreation;styles={};styleTheme=null;constructor(e){super(e),this.state={chips:e.defaultValue||[],focusedChip:null,inputValue:"",isFocused:!1,chipsUpdated:!1,prevPropsValue:[],variant:this.props.variant||"standard"},this.newChipKeyCodes=e.newChipKeyCodes||[13],this.newChipKeys=e.newChipKeys||["Enter"],this.labelRef=$.createRef(),this.input=$.createRef()}componentDidMount(){this.state.variant==="outlined"&&(this.labelNode=Qc.findDOMNode(this.labelRef.current),this.forceUpdate())}componentWillUnmount(){this.inputBlurTimeout&&clearTimeout(this.inputBlurTimeout)}static getDerivedStateFromProps(e,t){let n=null;return e.value&&e.value.length!==t.prevPropsValue.length&&(n={prevPropsValue:e.value},e.clearInputValueOnChange&&(n.inputValue="")),e.clearInputValueOnChange&&e.value&&e.value.length!==t.prevPropsValue.length&&(n={prevPropsValue:e.value,inputValue:""}),e.disabled&&(n={...n,focusedChip:null}),!t.chipsUpdated&&e.defaultValue&&(n={...n,chips:e.defaultValue}),n}focus=()=>{var e;(e=this.actualInput)==null||e.focus(),this.state.focusedChip&&this.setState({focusedChip:null})};handleInputBlur=e=>{this.props.onBlur&&this.props.onBlur(e),this.setState({isFocused:!1}),this.state.focusedChip&&this.setState({focusedChip:null});const t=e.target.value;let n;switch(this.props.blurBehavior||"clear"){case"add-or-clear":n={clearInputOnFail:!0};case"add":if(this.props.delayBeforeAdd){const h=(this.props.value||this.state.chips).length;this.inputBlurTimeout=setTimeout(()=>{const i=(this.props.value||this.state.chips).length;h===i?this.handleAddChip(t,n):this.clearInput()},150)}else this.handleAddChip(t,n);break;case"clear":this.clearInput();break}};handleInputFocus=e=>{var t,n;this.setState({isFocused:!0}),(n=(t=this.props).onFocus)==null||n.call(t,e)};handleKeyDown=e=>{const{focusedChip:t}=this.state;if(this._keyPressed=!1,this._preventChipCreation=!1,this.props.onKeyDown&&(this.props.onKeyDown(e),e.isDefaultPrevented()))return;const n=this.props.value||this.state.chips;if(this.newChipKeyCodes.includes(e.keyCode)||this.newChipKeys.includes(e.key)){this.handleAddChip(e.target.value)!==!1&&e.preventDefault();return}switch(e.keyCode){case di.BACKSPACE:e.target.value===""&&(t?(this.handleDeleteChip(n[t],t),t&&this.setState({focusedChip:t-1})):this.setState({focusedChip:n.length-1}));break;case di.DELETE:e.target.value===""&&t&&(this.handleDeleteChip(n[t],t),t<=n.length-1&&this.setState({focusedChip:t}));break;case di.LEFT_ARROW:t===null&&e.target.value===""&&n.length?this.setState({focusedChip:n.length-1}):t!==null&&t>0&&this.setState({focusedChip:t-1});break;case di.RIGHT_ARROW:t!==null&&t{!this._preventChipCreation&&(this.newChipKeyCodes.includes(e.keyCode)||this.newChipKeys.includes(e.key))&&this._keyPressed?this.clearInput():this.updateInput(e.target.value),this.props.onKeyUp&&this.props.onKeyUp(e)};handleUpdateInput=e=>{(this.props.inputValue===null||this.props.inputValue===void 0)&&this.updateInput(e.target.value),this.props.onUpdateInput&&this.props.onUpdateInput(e)};handleAddChip(e,t){if(this.props.onBeforeAdd&&!this.props.onBeforeAdd(e))return this._preventChipCreation=!0,t&&t.clearInputOnFail&&this.clearInput(),!1;this.clearInput();const n=this.props.value||this.state.chips;return e.trim().length?((this.props.allowDuplicates||!n.includes(e))&&(this.props.value&&this.props.onAdd?this.props.onAdd(e):this.updateChips([...this.state.chips,e])),!0):!1}handleDeleteChip(e,t){if(this.props.value)this.props.onDelete&&this.props.onDelete(e,t);else{const n=this.state.chips.slice();if(n.splice(t,1)){let i=this.state.focusedChip;this.state.focusedChip===t?i=null:this.state.focusedChip!==null&&this.state.focusedChip>t&&(i=this.state.focusedChip-1),this.updateChips(n,{focusedChip:i})}}}updateChips(e,t={}){this.setState({chips:e,chipsUpdated:!0,...t}),this.props.onChange&&this.props.onChange(e)}clearInput(){this.updateInput("")}updateInput(e){this.setState({inputValue:e})}setActualInputRef=e=>{this.actualInput=e,this.props.inputRef&&this.props.inputRef(e)};render(){const{alwaysShowPlaceholder:e,chipRenderer:t=Oh,className:n,disabled:h,disableUnderline:i,error:s,FormHelperTextProps:d,fullWidth:o,fullWidthInput:l,helperText:r,id:a,InputProps:c={},InputLabelProps:p={},inputValue:u,label:f,placeholder:g,readOnly:v,required:b,rootRef:D,value:E,margin:w}=this.props,y=this.state.variant;this.styleTheme!==this.props.theme.palette.mode&&(this.styleTheme=this.props.theme.palette.mode,this.styles=P.Utils.getStyle(this.props.theme,Ih));let A=E||this.state.chips||[];Array.isArray(A)||(A=(A||"").toString().split(/[,\s]+/).map(S=>S.trim()));const T=u??this.state.inputValue,x=(this.props.value||T).length||T.length,M=typeof p.shrink=="boolean"?p.shrink:f!==null&&(x||this.state.isFocused||A.length),O=A.map((S,C)=>t({value:S,isDisabled:!!h,isReadOnly:!!v,isFocused:this.state.focusedChip===C,handleClick:()=>this.setState({focusedChip:C}),handleDelete:()=>this.handleDeleteChip(S,C),style:this.styles.chip},C.toString())),_={};y==="outlined"&&(_.notched=!!M,_.labelWidth=M&&this.labelNode&&this.labelNode.offsetWidth||0),y!=="standard"?_.startAdornment=O:c.disableUnderline=!0;const k=Mh[y];return $.createElement(fe,{ref:D,fullWidth:o,className:n,sx:{...this.styles.root,...w==="dense"?this.styles.marginDense:{}},error:s,required:A.length>0?void 0:b,onClick:this.focus,disabled:h,variant:y,component:"div",margin:w},f&&$.createElement(_e,{htmlFor:a,sx:{"&.MuiInputLabel-root":this.styles.label,"&.MuiInputLabel-shrink":this.styles.labelShrink},shrink:!!M,focused:this.state.isFocused,variant:y,ref:this.labelRef,required:b,component:"label",...p},f),$.createElement(Ie,{component:"div",id:"input-chip-container",sx:{...this.styles[y],...this.styles.chipContainer,...this.state.isFocused?this.styles.focused:void 0,...!i&&y==="standard"?this.styles.underline:void 0,...h?this.styles.disabled:void 0,...f?this.styles.labeled:void 0,...s?this.styles.error:void 0}},y==="standard"&&O,$.createElement(k,{ref:this.input,className:`mui-variant-${this.styles[y]} ${f?"mui-chip-with-label":"mui-chip-no-label"}`,sx:{"&.MuiInputBase-input":{...this.styles.input,...this.styles[y]},"&.MuiInputBase-root":{...this.styles.inputRoot}},id:a,value:T,onChange:this.handleUpdateInput,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,inputRef:this.setActualInputRef,disabled:h,fullWidth:l,placeholder:!x&&(M||f===null||f===void 0)||e?g:void 0,readOnly:v,...c,..._})),r&&$.createElement(ge,{...d,className:d==null?void 0:d.className,style:this.styles.helperText},r))}}class Vr extends V{async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t);if(this.props.schema.delimiter&&typeof n=="string"){const h=n.split(this.props.schema.delimiter).map(i=>i.trim()).filter(i=>i);this.setState({value:h})}else this.setState({value:n||[]})}renderItem(e,t){const{attr:n,schema:h}=this.props,{value:i}=this.state;return $.createElement(fe,{fullWidth:!0,variant:"standard"},$.createElement(Fh,{value:i,disabled:!!t,label:this.getText(h.label),error:!!e,onAdd:s=>{const d=JSON.parse(JSON.stringify(i));d.push(s),this.setState({value:d},()=>{let o;this.props.schema.delimiter?o=this.onChange(n,d.join(`${this.props.schema.delimiter} `)):o=this.onChange(n,d),o instanceof Promise&&o.catch(l=>console.error(l))})},theme:this.props.oContext.theme,onDelete:(s,d)=>{const o=JSON.parse(JSON.stringify(i));o.splice(d,1),this.setState({value:o},()=>{let l;this.props.schema.delimiter?l=this.onChange(n,o.join(`${this.props.schema.delimiter} `)):l=this.onChange(n,o),l instanceof Promise&&l.catch(r=>console.error(r))})}}),$.createElement(ge,null,P.I18n.t("ra_Press ENTER Key to add new item")),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Rh extends V{renderColorDialog(){return!!this.state.showColorDialog&&$.createElement(Lt,{onClose:()=>this.setState({showColorDialog:!1}),open:this.state.showColorDialog},$.createElement(Zc,{color:this.state.colorDialogValue,onChange:e=>this.setState({colorDialogValue:e.hex},()=>this.onChange(this.props.attr,this.state.colorDialogValue))}))}renderItem(e,t){const n=V.getValue(this.props.data,this.props.attr);let h=P.Utils.isUseBright(n,null);return h===null&&(h=void 0),$.createElement($.Fragment,null,this.renderColorDialog(),$.createElement(pe,{variant:"standard",disabled:!!t,style:{minWidth:100,width:"calc(100% - 8px)"},label:this.getText(this.props.schema.label),value:n||"",onClick:()=>!this.props.schema.readOnly&&this.setState({showColorDialog:!0,colorDialogValue:n||""}),onChange:i=>{const s=i.target.value,d=this.onChange(this.props.attr,s);d instanceof Promise&&d.catch(o=>console.error(`Cannot set value: ${o}`))},slotProps:{htmlInput:{style:{backgroundColor:n,color:h?"#FFF":"#000"},readOnly:this.props.schema.readOnly||!1},input:{endAdornment:!this.props.schema.readOnly&&n&&!this.props.schema.noClearButton?$.createElement(se,{tabIndex:-1,size:"small",onClick:i=>{i.stopPropagation();const s=this.onChange(this.props.attr,"");s instanceof Promise&&s.catch(d=>console.error(`Cannot set value: ${d}`))}},$.createElement(ht,null)):void 0},inputLabel:{shrink:!0}}}))}}const ds={width:{width:"calc(100% - 85px)"},width50:{width:120,marginRight:5}};class Nh extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e});const t={};this.props.schema.useSystemName&&(t.useSystem=!!V.getValue(this.props.data,this.props.schema.useSystemName)),this.props.schema.longitudeName&&this.props.schema.latitudeName?(t.longitude=V.getValue(this.props.data,this.props.schema.longitudeName),t.latitude=V.getValue(this.props.data,this.props.schema.latitudeName),!t.longitude&&!t.latitude&&this.props.schema.autoInit&&setTimeout(()=>this.getCoordinates(),300)):!V.getValue(this.props.data,this.props.attr)&&this.props.schema.autoInit&&setTimeout(()=>this.getCoordinates(),300),Object.keys(t).length&&setTimeout(()=>this.setState(t),50)}async getSystemCoordinates(){let e;try{this.props.oContext.socket.getCompactSystemConfig?e=await this.props.oContext.socket.getCompactSystemConfig():e=await this.getCachedObject("system.config")}catch(t){console.error(`Cannot get system configuration: ${t}`)}if(e!=null&&e.common&&(e.common.longitude||e.common.latitude))if(window.alert(P.I18n.t("ra_Used system settings")),this.props.schema.longitudeName&&this.props.schema.latitudeName)this.setState({longitude:e.common.longitude,latitude:e.common.latitude},async()=>{await this.onChange(this.props.schema.longitudeName,e.common.longitude),await this.onChange(this.props.schema.latitudeName,e.common.latitude)});else{const t=e.common.latitude+(this.props.schema.divider||",")+e.common.longitude;this.setState({value:t},()=>{const n=this.onChange(this.props.attr,t);n instanceof Promise&&n.catch(h=>console.error(`Cannot set value: ${h}`))})}else window.alert(P.I18n.t("ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser"))}getCoordinates(){navigator.geolocation?navigator.geolocation.getCurrentPosition(async e=>{if(e!=null&&e.coords)if(this.props.schema.longitudeName&&this.props.schema.latitudeName)this.setState({longitude:e.coords.longitude,latitude:e.coords.latitude},async()=>{await this.onChange(this.props.schema.longitudeName,e.coords.longitude||""),await this.onChange(this.props.schema.latitudeName,e.coords.latitude||"")});else{const t=e.coords.latitude+(this.props.schema.divider||",")+e.coords.longitude;this.setState({value:t},()=>{const n=this.onChange(this.props.attr,t);n instanceof Promise&&n.catch(h=>console.error(`Cannot set value: ${h}`))})}else await this.getSystemCoordinates()},async e=>{console.error(`Cannot determine coordinates from browser: ${e.message}`),await this.getSystemCoordinates()}):this.getSystemCoordinates().catch(e=>{console.error(`Cannot determine coordinates: ${e}`)})}renderItem(e,t){return $.createElement($.Fragment,null,this.props.schema.useSystemName?$.createElement(Xn,{control:$.createElement(Zt,{checked:!!this.state.useSystem,onChange:n=>{const h=n.target.checked;h&&this.getSystemCoordinates().catch(i=>console.error(`Cannot determine coordinates: ${i}`)),this.setState({useSystem:h},()=>this.onChange(this.props.schema.useSystemName,h))}}),label:P.I18n.t("ra_Use system settings for position")}):null,this.props.schema.longitudeName&&this.props.schema.latitudeName?$.createElement(pe,{variant:"standard",style:ds.width50,value:this.state.longitude??"",error:!!e,disabled:this.state.useSystem||!!t,onChange:n=>{const h=n.target.value;this.setState({longitude:h},()=>{const i=this.onChange(this.props.schema.longitudeName,(h||"").trim());i instanceof Promise&&i.catch(s=>console.error(`Cannot set value: ${s}`))})},label:P.I18n.t("ra_Longitude")}):null,this.props.schema.longitudeName&&this.props.schema.latitudeName?$.createElement(pe,{variant:"standard",style:ds.width50,value:this.state.latitude??"",error:!!e,disabled:this.state.useSystem||!!t,onChange:n=>{const h=n.target.value;this.setState({latitude:h},()=>this.onChange(this.props.schema.latitudeName,(h||"").trim()))},label:P.I18n.t("ra_Latitude")}):null,!this.props.schema.longitudeName||!this.props.schema.latitudeName?$.createElement(pe,{variant:"standard",style:ds.width,value:this.state.value??"",error:!!e,disabled:!!t,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:this.state.useSystem}},onChange:n=>{const h=n.target.value;this.setState({value:h},()=>this.onChange(this.props.attr,(h||"").trim()))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}):null,this.state.useSystem?null:$.createElement(Li,{size:"small",onClick:()=>this.getCoordinates(),title:P.I18n.t("ra_Take browser position"),style:{marginRight:4}},$.createElement(Dc,null)),this.state.useSystem?null:$.createElement(Li,{size:"small",onClick:()=>this.getSystemCoordinates(),title:P.I18n.t("ra_Take position from system settings")},$.createElement($c,null)))}}_s.init({name:"iobroker_admin",shared:{"@iobroker/adapter-react-v5":{lib:()=>Yc,version:"*"},"@mui/icons-material":{lib:()=>xc,version:"*"},"@iobroker/json-config":{lib:()=>th,version:"*"}},remotes:[]});class Kn extends V{static runningLoads={};constructor(e){super(e),Object.assign(this.state,{Component:null,error:""})}async componentDidMount(){if(!this.props.schema.url){console.error("URL is empty. Cannot load custom component!"),this.setState({error:"URL is empty. Cannot load custom component!"});return}let e;this.props.schema.url.startsWith("http:")||this.props.schema.url.startsWith("https:")?e=this.props.schema.url:this.props.schema.url.startsWith("./")?e=`${window.location.protocol}//${window.location.host}${this.props.schema.url.replace(/^\./,"")}`:e=`${window.location.protocol}//${window.location.host}/adapter/${this.props.oContext.adapterName}/${this.props.schema.url}`;const[t,n,...h]=this.props.schema.name.split("/"),i=h.join("/");if(!e){console.error('Cannot find URL for custom component! Please define "url" as "custom/customComponents.js" in the schema');return}if(!t||!n||!i){console.error('Invalid format of "name"! Please define "name" as "ConfigCustomBackItUpSet/Components/AdapterExist" in the schema');return}let s=Kn.runningLoads[`${e}!${n}`];if(!(s instanceof Promise)){let d;if(this.props.schema.i18n===!0){const o=e.lastIndexOf("/");let l;o!==-1?l=e.substring(0,o):l=e;const r=P.I18n.getLanguage(),a=`${l}/i18n/${r}.json`;d=fetch(a).then(c=>c.json()).then(c=>P.I18n.extendTranslations(c,r)).catch(c=>{if(r!=="en"){fetch(`${l}/i18n/en.json`).then(p=>p.json()).then(p=>P.I18n.extendTranslations(p,r)).catch(p=>console.log(`Cannot load i18n "${a}": ${p}`));return}console.log(`Cannot load i18n "${a}": ${c}`)})}else if(this.props.schema.i18n&&typeof this.props.schema.i18n=="object")try{P.I18n.extendTranslations(this.props.schema.i18n)}catch(o){console.error(`Cannot import i18n: ${o}`)}try{console.log(e,t,n,i),_s.registerRemotes([{name:t,entry:e,type:this.props.schema.bundlerType||void 0}]),s=_s.loadRemote(`${t}/${n}`),d instanceof Promise&&(s=Promise.all([s,d]).then(o=>o[0])),Kn.runningLoads[`${e}!${n}`]=s}catch(o){console.error(o),this.setState({error:`Cannot import from ${this.props.schema.url}: ${o}`})}}try{const d=(await s).default;if(d!=null&&d[i])this.setState({Component:d[i]});else{const o=Object.keys(d||{});console.error("URL is empty. Cannot load custom component!"),this.setState({error:`Component ${this.props.schema.name} not found in ${this.props.schema.url}. Found: ${o.join(", ")}`})}}catch(d){console.error(d),this.setState({error:`Cannot import from ${this.props.schema.url}: ${d}`})}}render(){const e=this.state.Component,t=this.props.schema||{},n=e?$.createElement(e,{...this.props,socket:this.props.oContext.socket,theme:this.props.oContext.theme,themeType:this.props.oContext.themeType,instance:this.props.oContext.instance,adapterName:this.props.oContext.adapterName,systemConfig:this.props.oContext.systemConfig,forceUpdate:this.props.oContext.forceUpdate}):this.state.error?$.createElement("div",null,this.state.error):$.createElement(ji,null);return t.newLine?$.createElement($.Fragment,null,$.createElement("div",{style:{flexBasis:"100%",height:0}}),n):n}}class Bh extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);if(e)try{const t=new Date(e);this.setState({value:t})}catch{}}renderItem(e,t){return $.createElement(qc,{sx:n=>({width:"100%",borderBottom:`1px solid ${e?"#F00":n.palette.text.primary}`,"& fieldset":{display:"none"},"& input":{padding:`${n.spacing(1.5)} 0 4px 0`},"& .MuiInputAdornment-root":{marginLeft:0,marginTop:1},"& label":{transform:"translate(0px, -9px) scale(0.75)"}}),format:this.props.oContext.systemConfig.dateFormat.toLowerCase().replace("mm","MM"),disabled:!!t,value:this.state.value||null,onChange:n=>this.setState({value:n},()=>{try{const h=this.state.value.toISOString();this.onChange(this.props.attr,h).catch(i=>console.warn(`Error saving value for ${this.props.attr}:`,i))}catch{}}),label:this.getText(this.props.schema.label)})}}class Ph extends V{renderItem(){if(!this.props.schema)return null;if(this.props.oContext.DeviceManager){const t=this.props.oContext.DeviceManager;return $.createElement(t,{uploadImagesToInstance:`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,title:this.getText(this.props.schema.label),socket:this.props.oContext.socket,selectedInstance:`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,themeName:this.props.themeName,theme:this.props.oContext.theme,themeType:this.props.oContext.themeType,isFloatComma:this.props.oContext.isFloatComma,dateFormat:this.props.oContext.dateFormat,smallCards:this.props.schema.smallCards})}return $.createElement("div",null,"DeviceManager not found")}}const nt={fullWidth:{width:"100%"},uploadDiv:{position:"relative",width:"100%"},uploadDivDragging:{opacity:1,background:"rgba(128,255,128,0.1)"},uploadCenterDiv:{margin:5,border:"3px dashed grey",borderRadius:5,width:"100%",height:"100%",position:"absolute",display:"flex"},uploadCenterIcon:{paddingTop:10,width:48,height:48},uploadCenterText:{fontSize:16},uploadCenterTextAndIcon:{textAlign:"center",position:"absolute",top:0,bottom:0,left:0,right:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},disabledOpacity:{opacity:.3,cursor:"default"},error:{border:"2px solid red"},deleteButton:{},selectedImage:{height:40,width:40,display:"inline-block",marginRight:8}},Wh=["jpg","jpeg","svg","png","webp","gif","apng","avif","webp"],jh=["mp3","ogg","wav","aac"],Hh=["avi","mp4","mov"],zh=["txt","log","html","htm"],Vh=["json","js","ts"];class Hi extends V{dropzoneRef;imagePrefix;objectID;path;constructor(e){super(e),this.dropzoneRef=$.createRef(),this.imagePrefix=this.props.oContext.imagePrefix??"./files"}async componentDidMount(){await super.componentDidMount(),this.objectID=(this.props.schema.objectID||"0_userdata.0").replace("%INSTANCE%",(this.props.oContext.instance||0).toString()),this.path=this.props.schema.upload,this.path&&(this.path==="/"?this.path="":this.path.endsWith("/")||(this.path=`${this.path}/`)),this.updateFiles().then(()=>{const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e}),this.props.oContext.socket.subscribeFiles(this.objectID,`${this.path}/*`,this.onFolderChanged).catch(t=>console.error(`Cannot subscribe: ${t}`))})}onFolderChanged=(e,t)=>{this.path&&t.startsWith(this.path)&&this.updateFiles().catch(n=>console.error(`Cannot update files: ${n}`))};componentWillUnmount(){this.props.oContext.socket.subscribeFiles(this.objectID,`${this.path}/*`,this.onFolderChanged).catch(e=>console.error(`Cannot subscribe: ${e}`)),super.componentWillUnmount()}async updateFiles(){const e=await this.readFiles(this.props.schema.pattern);await new Promise(t=>this.setState({files:e},t))}async readFolder(e,t,n){try{const h=await this.props.oContext.socket.readDir(this.objectID,e.replace(/^\//,"")||null);for(let i=0;iconsole.log("file reading was aborted"),n.onerror=()=>console.log("file reading has failed"),n.onload=()=>{if(t.size>h){window.alert(P.I18n.t("File is too big. Max %sk allowed. Try use SVG.",Math.round(h/1024)));return}this.props.oContext.socket.writeFile64(this.objectID,this.path+t.name,n.result).then(()=>this.updateFiles()).then(()=>this.setState({value:this.path+t.name},()=>this.onChange(this.props.attr,this.path+t.name))).catch(i=>window.alert(`Cannot upload file: ${i}`))},n.readAsArrayBuffer(t)}renderDeleteDialog(){return this.state.deleteFile?$.createElement(P.DialogConfirm,{title:P.I18n.t("ra_Are you sure?"),text:P.I18n.t("ra_File will be deleted"),ok:P.I18n.t("ra_Delete"),cancel:P.I18n.t("ra_Cancel"),onClose:e=>{const t=this.state.deleteFile;this.setState({deleteFile:""},()=>{e&&this.props.oContext.socket.deleteFile(this.objectID,t).then(()=>this.updateFiles()).catch(n=>window.alert(`Cannot delete file: ${n}`))})}}):null}static base64ToArrayBuffer(e){const t=window.atob(e),n=t.length,h=new Uint8Array(n);for(let i=0;i{if(typeof AudioContext<"u"){const t=new AudioContext,n=Hi.base64ToArrayBuffer(e.file);t.decodeAudioData(n,h=>{const i=t.createBufferSource();i.buffer=h,i.connect(t.destination),i.start(0)},h=>window.alert(`Cannot play: ${h.message}`))}})}getFileIcon(e){return e!=null&&e.extension?Wh.includes(e.extension)?$.createElement("div",{style:{...nt.selectedImage,backgroundImage:`url(${this.imagePrefix}/${this.objectID}/${e.value})`,backgroundSize:"contain",backgroundRepeat:"no-repeat"}}):jh.includes(e.extension)?$.createElement(_c,null):zh.includes(e.extension)?$.createElement(Wo,null):Hh.includes(e.extension)?$.createElement(jo,null):Vh.includes(e.extension)?$.createElement(Ho,null):null:null}renderItem(e,t){if(!this.state.files)return null;const n=[];this.props.schema.withFolder||this.state.files.forEach(r=>{const a=r.name.lastIndexOf("/");if(a===-1)n.includes("/")||n.push("/");else{const c=r.name.substring(0,a+1);n.includes(c)||n.push(c)}});const h=this.state.files.map(r=>({value:r.name,label:!this.props.schema.withFolder&&n.length===1?`${r.name.substring(n[0].length)}`:`${r.name}${this.props.schema.noSize?"":`(${r.size})`}`,extension:r.name.toLowerCase().split(".").pop()}));this.props.schema.noNone||h.unshift({label:P.I18n.t("ra_none"),value:""});const i=h.find(r=>r.value===this.state.value);let s=0;this.props.schema.upload&&s++,this.props.schema.refresh&&s++;const d=this.state.value&&(this.state.value.endsWith(".mp3")||this.state.value.endsWith(".ogg")||this.state.value.endsWith(".wav"));d&&s++;const o=$.createElement("div",{style:nt.fullWidth},$.createElement(fe,{variant:"standard",style:{width:`calc(100% - ${s*42}px)`}},this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,disabled:!!t,value:this.state.value||"_",renderValue:()=>$.createElement($.Fragment,null,this.getFileIcon(i),$.createElement("span",null,(i==null?void 0:i.label)||"")),onChange:r=>{this.setState({value:r.target.value==="_"?"":r.target.value},()=>this.onChange(this.props.attr,this.state.value))}},h.map(r=>$.createElement($e,{key:r.value,value:r.value},$.createElement(To,null,this.getFileIcon(r)),$.createElement(Us,null,r.label),this.props.schema.delete&&i.value?$.createElement(se,{style:nt.deleteButton,size:"small",onClick:()=>this.setState({deleteFile:i.value})},$.createElement(_t,null)):null))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null),this.props.schema.refresh&&$.createElement(se,{onClick:()=>this.updateFiles()},$.createElement(Ks,null)),this.props.schema.upload&&$.createElement(se,{onClick:()=>{var r;return(r=this.dropzoneRef.current)==null?void 0:r.open()}},$.createElement(Vn,null)),d&&$.createElement(se,{style:{color:"#00FF00"},onClick:()=>this.play()},$.createElement(Js,null)));if(!this.props.schema.upload)return $.createElement($.Fragment,null,o,this.renderDeleteDialog());let l={"*/*":[]};if(this.props.schema.fileTypes==="image"?l={"image/*":[".png",".jpg",".svg",".gif",".apng",".avif",".webp"]}:this.props.schema.fileTypes==="audio"?l={"audio/*":[".mp3",".ogg",".wav",".mp4"]}:this.props.schema.fileTypes==="text"&&(l={"text/plain":[".txt"]}),this.props.schema.pattern){const r=this.props.schema.pattern.split("/").pop().toLowerCase().replace(/.*\./,"");r==="png"||r==="jpg"||r==="svg"||r==="gif"||r==="apng"||r==="avif"||r==="webp"?l={"image/*":[".png",".jpg",".svg",".gif",".apng",".avif",".webp"]}:r==="mp3"||r==="ogg"||r==="wav"?l={"audio/*":[".mp3",".ogg",".wav",".mp4"]}:r==="ics"?l={"text/calendar":[".ics"]}:r==="txt"?l={"text/plain":[".txt"]}:r==="pem"?l={"text/plain":[".pem"]}:l={"*/*":[`.${r}`]}}return $.createElement(Vo,{ref:this.dropzoneRef,multiple:!1,accept:l,noKeyboard:!0,noClick:!0,maxSize:this.props.schema.maxSize||2*1024*1024,onDragEnter:()=>{this.setState({uploadFile:"dragging"})},onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:(r,a)=>{var c,p,u;this.setState({uploadFile:!1}),r.length?this.onDrop(r):window.alert(((u=(p=(c=a==null?void 0:a[0])==null?void 0:c.errors)==null?void 0:p[0])==null?void 0:u.message)||P.I18n.t("Cannot upload"))}},({getRootProps:r,getInputProps:a})=>$.createElement("div",{style:{...nt.uploadDiv,...this.state.uploadFile==="dragging"?nt.uploadDivDragging:void 0,...t?nt.disabledOpacity:void 0},...r()},$.createElement("input",{...a()}),this.state.uploadFile==="dragging"?$.createElement("div",{style:{...nt.uploadCenterDiv,...this.state.uploadError?nt.error:void 0}},$.createElement("div",{style:nt.uploadCenterTextAndIcon},$.createElement(Vn,{style:nt.uploadCenterIcon}),$.createElement("div",{style:nt.uploadCenterText},this.state.uploadFile==="dragging"?P.I18n.t("ra_Drop file here"):P.I18n.t("ra_Place your files here or click here to open the browse dialog")))):null,o,this.renderDeleteDialog()))}}const fi={fullWidth:{width:"100%"},fullWidthOneButton:{width:"calc(100% - 69px)",marginRight:4},fullWidthIcon:{width:"calc(100% - 119px)",marginRight:4},selectedImage:{height:40,width:40,display:"inline-block",marginRight:8}},Uh=["jpg","jpeg","svg","png","webp","gif","apng","avif","webp"],Kh=["mp3","ogg","wav","aac"],Gh=["avi","mp4","mov"],Jh=["txt","log","html","htm"],Yh=["json","js","ts"];class Qh extends V{imagePrefix="../..";async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.imagePrefix=this.props.oContext.imagePrefix??"./files",this.setState({value:e??""})}static getDerivedStateFromProps(e,t){const n=V.getValue(e.data,e.attr);return n==null||n.toString().trim()!==(t.value||"").toString().trim()?{value:n??""}:null}loadFile(){const e=this.state.value.indexOf("/");if(e!==-1){const t=this.state.value.substring(0,e),n=this.state.value.substring(e+1);return this.props.oContext.socket.readFile(t,n,!0)}return Promise.resolve(null)}play(){this.loadFile().then(e=>{if(typeof AudioContext<"u"&&(e!=null&&e.file)){const t=new AudioContext,n=Hi.base64ToArrayBuffer(e.file);t.decodeAudioData(n,h=>{const i=t.createBufferSource();i.buffer=h,i.connect(t.destination),i.start(0)},h=>window.alert(`Cannot play: ${h.message}`))}})}getIcon(){const e=this.state.value.split(".").pop().toLowerCase();return Uh.includes(e)?$.createElement("div",{style:{...fi.selectedImage,backgroundImage:`url(${this.imagePrefix}/${this.state.value})`,backgroundSize:"contain",backgroundRepeat:"no-repeat"}}):Kh.includes(e)?$.createElement(se,{style:{color:"#00FF00"},onClick:()=>this.play()},$.createElement(Js,null)):Jh.includes(e)?$.createElement(Wo,null):Gh.includes(e)?$.createElement(jo,null):Yh.includes(e)?$.createElement(Ho,null):null}renderFileBrowser(){return this.state.showFileBrowser?$.createElement(P.DialogSelectFile,{imagePrefix:this.props.oContext.imagePrefix,socket:this.props.oContext.socket,selected:this.state.value,onClose:()=>this.setState({showFileBrowser:!1}),onOk:e=>{const t=Array.isArray(e)?e[0]:e;this.setState({value:t},()=>this.onChange(this.props.attr,this.props.schema.trim===!1?t:(t||"").trim()))},selectOnlyFolders:this.props.schema.selectOnlyFolders,allowUpload:this.props.schema.allowUpload,allowDownload:this.props.schema.allowDownload,allowCreateFolder:this.props.schema.allowCreateFolder,allowView:this.props.schema.allowView,showToolbar:this.props.schema.showToolbar,limitPath:this.props.schema.limitPath,theme:this.props.oContext.theme}):null}renderItem(e,t){const n=this.getIcon();return $.createElement("div",{style:fi.fullWidth},n,$.createElement(pe,{variant:"standard",style:n?fi.fullWidthIcon:fi.fullWidthOneButton,value:this.state.value??"",error:!!e,disabled:!!t,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:!!this.props.schema.disableEdit}},onChange:h=>{const i=h.target.value;this.setState({value:i},()=>this.onChange(this.props.attr,this.props.schema.trim===!1?i:(i||"").trim()))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}),$.createElement(ve,{disabled:t,variant:"outlined",onClick:()=>this.setState({showFileBrowser:!0})},"..."),this.renderFileBrowser())}}class Xh extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.props.oContext.socket.getEnums("functions").then(t=>{const n=Object.keys(t).map(h=>({value:this.props.schema.short?h.replace("enum.functions.",""):h,label:this.getText(t[h].common.name),obj:t[h]}));this.props.schema.allowDeactivate!==!1&&n.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({value:e,selectOptions:n})})}renderItem(e,t){if(!this.state.selectOptions)return null;const n=this.state.selectOptions.find(h=>h.value===this.state.value);return $.createElement(fe,{variant:"standard",fullWidth:!0},this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,disabled:!!t,value:this.state.value||"_",renderValue:()=>n?n.obj?$.createElement(P.TextWithIcon,{value:n.obj,themeType:this.props.oContext.themeType,lang:P.I18n.getLanguage()}):n.label:"",onChange:h=>{this.setState({value:h.target.value==="_"?"":h.target.value},()=>this.onChange(this.props.attr,this.state.value))}},this.state.selectOptions.map(h=>$.createElement($e,{key:h.value,value:h.value,style:h.value===V.DIFFERENT_VALUE?{opacity:.5}:{}},h.obj?$.createElement(P.TextWithIcon,{value:h.obj,themeType:this.props.oContext.themeType,lang:P.I18n.getLanguage()}):h.label))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Zh extends V{iframeRef=$.createRef();observer=null;async componentDidMount(){await super.componentDidMount(),this.props.schema.reloadOnShow&&(this.observer=new IntersectionObserver(([e])=>{if(e.isIntersecting&&this.state.isVisible===!1&&this.iframeRef.current){const t=this.iframeRef.current.src;this.iframeRef.current.src="",setTimeout(()=>{this.iframeRef.current&&(this.iframeRef.current.src=t)},0)}this.setState({isVisible:e.isIntersecting})}),this.iframeRef.current&&this.observer.observe(this.iframeRef.current))}componentWillUnmount(){var e,t;(e=super.componentWillUnmount)==null||e.call(this),(t=this.observer)==null||t.disconnect()}renderItem(e,t){const n=this.props.schema.url||V.getValue(this.props.data,this.props.attr);return $.createElement("div",{style:{position:"relative",width:"100%",height:"100%"}},$.createElement("iframe",{style:{width:"100%",height:"100%",borderWidth:this.props.schema.frameBorder??0,...this.props.schema.innerStyle,border:e?"1px solid red":void 0},ref:this.iframeRef,src:n,allowFullScreen:this.props.schema.allowFullscreen??!1,sandbox:this.props.schema.sandbox,loading:this.props.schema.lazyLoad??"lazy"}),t&&$.createElement("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",backgroundColor:"rgba(255, 255, 255, 0.3)",cursor:"not-allowed",zIndex:1}}))}}class qh extends V{initialized=!1;localContext;iframeRef=$.createRef();observer=null;async componentDidMount(){await super.componentDidMount(),this.askInstance().catch(e=>console.error(e)),this.props.schema.reloadOnShow&&(this.observer=new IntersectionObserver(([e])=>{if(e.isIntersecting&&this.state.isVisible===!1&&this.iframeRef.current){const t=this.iframeRef.current.src;this.iframeRef.current.src="",setTimeout(()=>{this.iframeRef.current&&(this.iframeRef.current.src=t)},0)}this.setState({isVisible:e.isIntersecting})}),this.iframeRef.current&&this.observer.observe(this.iframeRef.current))}async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);if(n)try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${JSON.stringify(e)}`)}}e===void 0&&(e=null);const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e).then(n=>this.setState({url:n||""}))}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(e,t){if(this.props.alive){const n=this.getContext();(n!==this.localContext||!this.initialized)&&(this.localContext=n,setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}return this.state.url===void 0?null:$.createElement("div",{style:{position:"relative",width:"100%",height:"100%"}},$.createElement("iframe",{style:{width:"100%",height:"100%",borderWidth:this.props.schema.frameBorder??0,...this.props.schema.innerStyle,border:e?"1px solid red":void 0},ref:this.iframeRef,src:this.state.url,allowFullScreen:this.props.schema.allowFullscreen??!1,sandbox:this.props.schema.sandbox,loading:this.props.schema.lazyLoad??"lazy"}),t&&$.createElement("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",backgroundColor:"rgba(255, 255, 255, 0.3)",cursor:"not-allowed",zIndex:1}}))}}class eu extends V{async componentDidMount(){await super.componentDidMount(),this.props.oContext.socket.getHostByIp(this.props.common.host).then(e=>{this.props.schema.listenOnAllPorts||(e=e.filter(t=>t.address!=="0.0.0.0"&&t.address!=="::")),this.props.schema.onlyIp4?e=e.filter(t=>t.family==="ipv4"):this.props.schema.onlyIp6&&(e=e.filter(t=>t.family==="ipv6")),this.props.schema.noInternal&&(e=e.filter(t=>!t.internal)),e.forEach(t=>{t.address==="0.0.0.0"?t.name=`[IPv4] 0.0.0.0 - ${P.I18n.t("ra_Listen on all IPs")}`:t.address==="::"&&(t.name=`[IPv6] :: - ${P.I18n.t("ra_Listen on all IPs")}`)}),this.setState({ips:e})}).catch(e=>console.error(e))}renderItem(e,t){var i,s;const n=V.getValue(this.props.data,this.props.attr),h=(i=this.state.ips)==null?void 0:i.find(d=>d.address===n);return $.createElement(fe,{fullWidth:!0,variant:"standard"},this.state.ips&&this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,this.state.ips?$.createElement(Ne,{variant:"standard",error:!!e,disabled:!!t,value:n,renderValue:d=>(h==null?void 0:h.name)||d,onChange:d=>this.onChange(this.props.attr,d.target.value)},(s=this.state.ips)==null?void 0:s.map((d,o)=>$.createElement($e,{key:o,value:d.address},d.name))):$.createElement(pe,{fullWidth:!0,variant:"standard",error:!!e,disabled:!!t,value:n,onChange:d=>this.onChange(this.props.attr,d.target.value),label:this.getText(this.props.schema.label)}),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class tu extends V{initialized=!1;localContext;async componentDidMount(){await super.componentDidMount(),this.props.schema.sendFirstByClick||this.askInstance().catch(e=>console.error(e))}async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);if(n)try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${JSON.stringify(e)}`)}}e===void 0&&(e=null);const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.setState({loading:!0},()=>this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e).then(n=>this.setState({image:n||""})))}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(){if(this.props.alive){const e=this.getContext();(e!==this.localContext||!this.initialized)&&(this.localContext=e,(!this.props.schema.sendFirstByClick||this.state.image!==void 0)&&setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}return!this.state.image&&this.props.schema.sendFirstByClick?$.createElement("div",{style:{width:this.props.schema.width||"100%",height:this.props.schema.height,display:"flex",alignItems:"center",justifyContent:"center",cursor:this.state.loading?"default":"pointer"},onClick:()=>!this.state.loading&&this.askInstance()},this.state.loading?$.createElement(Tt,null):typeof this.props.schema.sendFirstByClick=="boolean"?P.I18n.t("ra_Click to show"):this.getText(this.props.schema.sendFirstByClick,this.props.schema.noTranslation)):this.state.image===void 0?null:$.createElement(P.Icon,{title:this.getText(this.props.schema.tooltip),src:this.state.image,style:{width:this.props.schema.width||"100%",height:this.props.schema.height}})}}class nu extends V{index;constructor(e){super(e),this.index=Date.now()}async componentDidMount(){if(await super.componentDidMount(),this.props.schema.base64){const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e})}else this.props.oContext.socket.fileExists(`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,this.props.attr).then(e=>e&&this.loadImage())}_getUrl(e){e&&(this.index=Date.now());let t=`files/${this.props.oContext.adapterName}.${this.props.oContext.instance}/${this.props.attr}?t=${this.index}`;return window.location.port==="3000"&&(t=`${window.location.protocol}//${window.location.hostname}:8081/${t}`),t}loadImage(){fetch(this._getUrl()).then(e=>e.blob()).then(e=>{const t=new FileReader;t.onload=()=>{this.setState({value:t.result})},t.readAsDataURL(e)}).catch(e=>console.error(e))}renderItem(e,t){return $.createElement(fe,{fullWidth:!0,variant:"standard"},this.props.schema.label?$.createElement(_e,{shrink:!0},this.getText(this.props.schema.label)):null,$.createElement(P.UploadImage,{error:!!e,disabled:t,accept:this.props.schema.accept,crop:this.props.schema.crop,maxSize:this.props.schema.maxSize||256*1024,icon:this.state.value||void 0,removeIconFunc:()=>this.setState({value:null},()=>{if(this.props.schema.base64){const n=this.onChange(this.props.attr,this.state.value);n instanceof Promise&&n.catch(h=>console.error(`Cannot set value: ${h}`))}else this.props.oContext.socket.deleteFile(`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,this.props.attr).catch(n=>console.error(n))}),onChange:n=>this.setState({value:n},()=>{if(this.props.schema.base64){const h=this.onChange(this.props.attr,this.state.value);h instanceof Promise&&h.catch(i=>console.error(`Cannot set value: ${i}`))}else n.startsWith("data")&&(n=n.split(",")[1]);this.props.oContext.socket.writeFile64(`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,this.props.attr,n).catch(h=>console.error(h))})}),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class iu extends V{renderItem(){return $.createElement(P.InfoBox,{type:this.props.schema.boxType||"info",closeable:this.props.schema.closeable!==void 0?this.props.schema.closeable:!0,storeId:this.props.schema.closed!==void 0?void 0:`${!!this.props.oContext.adapterName} ${this.props.attr}`,closed:this.props.schema.closed,style:{width:"100%",...this.props.schema.style}},this.props.schema.title?$.createElement(Ie,{component:"div",sx:{fontWeight:"bold",fontSize:"larger"}},this.getText(this.props.schema.title)):null,this.getText(this.props.schema.text))}}const Ur={icon:{width:20,height:20,marginRight:4}};class su extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);let t=this.props.schema.adapter;t==="_dataSources"&&(t=void 0),this.props.oContext.socket.getAdapterInstances(t,!0).then(async n=>{this.props.schema.adapter==="_dataSources"?n=n.filter(i=>{var s;return(s=i==null?void 0:i.common)==null?void 0:s.getHistory}):this.props.schema.adapter?n=n.filter(i=>i==null?void 0:i._id.startsWith(`system.adapter.${this.props.schema.adapter}.`)):this.props.schema.adapters&&Array.isArray(this.props.schema.adapters)&&(n=n.filter(i=>{var s;return this.props.schema.adapters.includes((s=i==null?void 0:i.common)==null?void 0:s.name)})),this.props.schema.onlyEnabled&&(n=n.filter(i=>{var s;return(s=i==null?void 0:i.common)==null?void 0:s.enabled}));const h=n.map(i=>({value:this.props.schema.long?i._id:this.props.schema.short?i._id.split(".").pop():i._id.replace(/^system\.adapter\./,""),label:`${i.common.name} [${i._id.replace(/^system\.adapter\./,"")}]`,icon:`${this.props.oContext.imagePrefix}/adapter/${i.common.name}/${i.common.icon}`}));h.sort((i,s)=>i.value>s.value?1:i.valueconsole.error(`Cannot get instances: ${n}`))}componentWillUnmount(){this.props.oContext.socket.unsubscribeObject("system.adapter.*",this.onInstancesUpdate).then(()=>{}),super.componentWillUnmount()}onInstancesUpdate=(e,t)=>{if(!e.match(/^system\.adapter\.[-_a-z\d]+\.\d+$/))return;const n=this.props.schema.long?e:this.props.schema.short?e.split(".").pop():e.replace(/^system\.adapter\./,""),h=this.state.selectOptions.findIndex(i=>i.value===n);if(t){if(this.props.schema.adapter==="_dataSources"&&(!t.common||!t.common.getHistory))return;if(h===-1){const i=JSON.parse(JSON.stringify(this.state.selectOptions)),s=typeof t.common.name=="object"?t.common.name[P.I18n.getLanguage()]||t.common.name.en:t.common.name;i.push({value:this.props.schema.long?t._id:this.props.schema.short?t._id.split(".").pop():t._id.replace(/^system\.adapter\./,""),label:`${s} [${t._id.replace(/^system\.adapter\./,"")}]`,icon:`${this.props.oContext.imagePrefix}/adapter/${s}/${t.common.icon}`}),i.sort((d,o)=>d.label>o.label?1:d.labeli.value===this.state.value);return $.createElement(fe,{fullWidth:!0,key:this.props.attr,variant:"standard"},this.props.schema.label?$.createElement(_e,{shrink:!0},this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,displayEmpty:!0,disabled:!!t,value:this.state.value,renderValue:()=>$.createElement("span",{style:{display:"flex"}},n!=null&&n.icon?$.createElement(P.Icon,{src:`./${n.icon}`,style:Ur.icon}):null,this.getText(n==null?void 0:n.label,!0)),onChange:i=>this.setState({value:i.target.value},()=>this.onChange(this.props.attr,this.state.value))},this.state.selectOptions.map(i=>$.createElement($e,{key:i.value,value:i.value,style:i.value===V.NONE_VALUE?{opacity:.5}:{}},i.icon?$.createElement(P.Icon,{src:`./${i.icon}`,style:Ur.icon}):null,this.getText(i.label,!0)))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Kr={address:{fontSize:"smaller",opacity:.5,marginLeft:8}};class ru extends V{async componentDidMount(){await super.componentDidMount(),this.props.oContext.getCachedObject(`system.host.${this.props.common.host}`).then(e=>{var n,h;const t=[];if((h=(n=e==null?void 0:e.native)==null?void 0:n.hardware)!=null&&h.networkInterfaces){const i=e.native.hardware.networkInterfaces;Object.keys(i).forEach(s=>{if(this.props.schema.ignoreInternal&&!i[s].find(o=>!o.internal)||this.props.schema.ignoreLoopback&&i[s].find(o=>o.address==="127.0.0.1"||o.address==="::1"))return;let d=i[s].find(o=>o.family==="IPv4");d||=i[s].find(o=>o.family==="IPv6"),t.push({value:s,address:d.address})})}this.setState({interfaces:t})}).catch(e=>window.alert(`Cannot read interfaces: ${e}`))}renderItem(e,t){var i,s,d;const n=V.getValue(this.props.data,this.props.attr),h=(i=this.state.interfaces)==null?void 0:i.find(o=>o.value===n);return $.createElement(fe,{fullWidth:!0,variant:"standard"},(s=this.state.interfaces)!=null&&s.length&&this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,(d=this.state.interfaces)!=null&&d.length?$.createElement(Ne,{variant:"standard",error:!!e,disabled:!!t,value:n,renderValue:o=>h?$.createElement("span",null,h.value,$.createElement("span",{style:Kr.address},h.address)):o,onChange:o=>this.onChange(this.props.attr,o.target.value)},this.state.interfaces.map((o,l)=>$.createElement($e,{key:l,value:o.value},$.createElement("span",null,o.value,$.createElement("span",{style:Kr.address},o.address))))):$.createElement(pe,{fullWidth:!0,variant:"standard",error:!!e,disabled:!!t,value:n,onChange:o=>this.onChange(this.props.attr,o.target.value),label:this.getText(this.props.schema.label)}),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const rn={modalDialog:{minWidth:400,maxWidth:800},overflowHidden:{display:"flex",overflow:"hidden"},titleIcon:{marginRight:5},content:{fontSize:16},languageButton:{position:"absolute",right:8,top:8},languageButtonActive:{color:"primary.main"}},qs=({toggleTranslation:m,noTranslation:e,title:t,fullWidth:n,help:h,maxWidth:i,progress:s,icon:d,applyDisabled:o,applyButton:l,onClose:r,children:a,titleButtonApply:c,titleButtonClose:p,onApply:u,textInput:f,defaultValue:g,overflowHidden:v})=>{const[b,D]=Yl(g);Ql(()=>{D(g)},[g]);const E=sc(),w=rc(E.breakpoints.down("md"));let y=null;return d&&(y=d),$.createElement(Lt,{open:!0,maxWidth:w?!1:i||"md",fullWidth:!!n,fullScreen:w,disableEscapeKeyDown:!1,onClose:r,sx:{"& .MuiPaper-root":w?{}:rn.modalDialog}},t&&$.createElement(yn,null,d?$.createElement(y,{style:rn.titleIcon}):null,t,P.I18n.getLanguage()!=="en"&&m?$.createElement(se,{size:"large",style:{...rn.languageButton,...e?rn.languageButtonActive:{}},onClick:()=>m(),title:P.I18n.t("ra_Disable/Enable translation")},$.createElement(kc,null)):null),$.createElement(Kt,{sx:{...v?rn.overflowHidden:{},...rn.content},style:{paddingTop:8}},f&&$.createElement(pe,{autoComplete:"off",fullWidth:!0,autoFocus:!0,variant:"outlined",size:"medium",multiline:!0,value:b,onChange:A=>D(A.target.value)}),a,h?$.createElement("div",null,h):null),$.createElement(Gt,null,l!==!1&&$.createElement(ve,{startIcon:$.createElement(Gs,null),disabled:s||o&&g===b,onClick:()=>u&&u(f?b:""),variant:"contained",color:"primary"},P.I18n.t(c||"ra_Ok")),$.createElement(ve,{color:"grey",onClick:()=>r&&r(),disabled:s,variant:"contained",startIcon:$.createElement(ht,null)},P.I18n.t(p||"ra_Cancel"))))};var bn={},Yt={},Yo={exports:{}};(function(m,e){(function(){var t="ace",n=(function(){return this})();!n&&typeof window<"u"&&(n=window);var h=function(r,a,c){if(typeof r!="string"){h.original?h.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(c=a),h.modules[r]||(h.payloads[r]=c,h.modules[r]=null)};h.modules={},h.payloads={};var i=function(r,a,c){if(typeof a=="string"){var p=o(r,a);if(p!=null)return c&&c(),p}else if(Object.prototype.toString.call(a)==="[object Array]"){for(var u=[],f=0,g=a.length;fo.length)&&(d=o.length),d-=s.length;var l=o.indexOf(s,d);return l!==-1&&l===d}),String.prototype.repeat||i(String.prototype,"repeat",function(s){for(var d="",o=this;s>0;)s&1&&(d+=o),(s>>=1)&&(o+=o);return d}),String.prototype.includes||i(String.prototype,"includes",function(s,d){return this.indexOf(s,d)!=-1}),Object.assign||(Object.assign=function(s){if(s==null)throw new TypeError("Cannot convert undefined or null to object");for(var d=Object(s),o=1;o>>0,l=arguments[1],r=l>>0,a=r<0?Math.max(o+r,0):Math.min(r,o),c=arguments[2],p=c===void 0?o:c>>0,u=p<0?Math.max(o+p,0):Math.min(p,o);a0;)o&1&&(l+=d),(o>>=1)&&(d+=d);return l};var i=/^\s\s*/,s=/\s\s*$/;n.stringTrimLeft=function(d){return d.replace(i,"")},n.stringTrimRight=function(d){return d.replace(s,"")},n.copyObject=function(d){var o={};for(var l in d)o[l]=d[l];return o},n.copyArray=function(d){for(var o=[],l=0,r=d.length;l65535?2:1}}),ace.define("ace/lib/useragent",["require","exports","module"],function(t,n,h){n.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},n.getOS=function(){return n.isMac?n.OS.MAC:n.isLinux?n.OS.LINUX:n.OS.WINDOWS};var i=typeof navigator=="object"?navigator:{},s=(/mac|win|linux/i.exec(i.platform)||["other"])[0].toLowerCase(),d=i.userAgent||"",o=i.appName||"";n.isWin=s=="win",n.isMac=s=="mac",n.isLinux=s=="linux",n.isIE=o=="Microsoft Internet Explorer"||o.indexOf("MSAppHost")>=0?parseFloat((d.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((d.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),n.isOldIE=n.isIE&&n.isIE<9,n.isGecko=n.isMozilla=d.match(/ Gecko\/\d+/),n.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",n.isWebKit=parseFloat(d.split("WebKit/")[1])||void 0,n.isChrome=parseFloat(d.split(" Chrome/")[1])||void 0,n.isSafari=parseFloat(d.split(" Safari/")[1])&&!n.isChrome||void 0,n.isEdge=parseFloat(d.split(" Edge/")[1])||void 0,n.isAIR=d.indexOf("AdobeAIR")>=0,n.isAndroid=d.indexOf("Android")>=0,n.isChromeOS=d.indexOf(" CrOS ")>=0,n.isIOS=/iPad|iPhone|iPod/.test(d)&&!window.MSStream,n.isIOS&&(n.isMac=!0),n.isMobile=n.isIOS||n.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(t,n,h){var i=t("./useragent"),s="http://www.w3.org/1999/xhtml";n.buildDom=function c(p,u,f){if(typeof p=="string"&&p){var g=document.createTextNode(p);return u&&u.appendChild(g),g}if(!Array.isArray(p))return p&&p.appendChild&&u&&u.appendChild(p),p;if(typeof p[0]!="string"||!p[0]){for(var v=[],b=0;b"u")){if(o){if(u)l();else if(u===!1)return o.push([c,p])}if(!d){var f=u;!u||!u.getRootNode?f=document:(f=u.getRootNode(),(!f||f==u)&&(f=document));var g=f.ownerDocument||f;if(p&&n.hasCssString(p,f))return null;p&&(c+=` +/*# sourceURL=ace/css/`+p+" */");var v=n.createElement("style");v.appendChild(g.createTextNode(c)),p&&(v.id=p),f==g&&(f=n.getDocumentHead(g)),f.insertBefore(v,f.firstChild)}}}if(n.importCssString=r,n.importCssStylsheet=function(c,p){n.buildDom(["link",{rel:"stylesheet",href:c}],n.getDocumentHead(p))},n.$fixPositionBug=function(c){var p=c.getBoundingClientRect();if(c.style.left){var u=parseFloat(c.style.left),f=+p.left;Math.abs(u-f)>1&&(c.style.left=2*u-f+"px")}if(c.style.right){var u=parseFloat(c.style.right),f=window.innerWidth-p.right;Math.abs(u-f)>1&&(c.style.right=2*u-f+"px")}if(c.style.top){var u=parseFloat(c.style.top),f=+p.top;Math.abs(u-f)>1&&(c.style.top=2*u-f+"px")}if(c.style.bottom){var u=parseFloat(c.style.bottom),f=window.innerHeight-p.bottom;Math.abs(u-f)>1&&(c.style.bottom=2*u-f+"px")}},n.scrollbarWidth=function(c){var p=n.createElement("ace_inner");p.style.width="100%",p.style.minWidth="0px",p.style.height="200px",p.style.display="block";var u=n.createElement("ace_outer"),f=u.style;f.position="absolute",f.left="-10000px",f.overflow="hidden",f.width="200px",f.minWidth="0px",f.height="150px",f.display="block",u.appendChild(p);var g=c&&c.documentElement||document&&document.documentElement;if(!g)return 0;g.appendChild(u);var v=p.offsetWidth;f.overflow="scroll";var b=p.offsetWidth;return v===b&&(b=u.clientWidth),g.removeChild(u),v-b},n.computedStyle=function(c,p){return window.getComputedStyle(c,"")||{}},n.setStyle=function(c,p,u){c[p]!==u&&(c[p]=u)},n.HAS_CSS_ANIMATION=!1,n.HAS_CSS_TRANSFORMS=!1,n.HI_DPI=i.isWin?typeof window<"u"&&window.devicePixelRatio>=1.5:!0,i.isChromeOS&&(n.HI_DPI=!1),typeof document<"u"){var a=document.createElement("div");n.HI_DPI&&a.style.transform!==void 0&&(n.HAS_CSS_TRANSFORMS=!0),!i.isEdge&&typeof a.style.animationName<"u"&&(n.HAS_CSS_ANIMATION=!0),a=null}n.HAS_CSS_TRANSFORMS?n.translate=function(c,p,u){c.style.transform="translate("+Math.round(p)+"px, "+Math.round(u)+"px)"}:n.translate=function(c,p,u){c.style.top=Math.round(u)+"px",c.style.left=Math.round(p)+"px"}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(t,n,h){var i=t("./dom");n.get=function(s,d){var o=new XMLHttpRequest;o.open("GET",s,!0),o.onreadystatechange=function(){o.readyState===4&&d(o.responseText)},o.send(null)},n.loadScript=function(s,d){var o=i.getDocumentHead(),l=document.createElement("script");l.src=s,o.appendChild(l),l.onload=l.onreadystatechange=function(r,a){(a||!l.readyState||l.readyState=="loaded"||l.readyState=="complete")&&(l=l.onload=l.onreadystatechange=null,a||d())}},n.qualifyURL=function(s){var d=document.createElement("a");return d.href=s,d.href}}),ace.define("ace/lib/oop",["require","exports","module"],function(t,n,h){n.inherits=function(i,s){i.super_=s,i.prototype=Object.create(s.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}})},n.mixin=function(i,s){for(var d in s)i[d]=s[d];return i},n.implement=function(i,s){n.mixin(i,s)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(t,n,h){var i={},s=function(){this.propagationStopped=!0},d=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(o,l){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var r=this._eventRegistry[o]||[],a=this._defaultHandlers[o];if(!(!r.length&&!a)){(typeof l!="object"||!l)&&(l={}),l.type||(l.type=o),l.stopPropagation||(l.stopPropagation=s),l.preventDefault||(l.preventDefault=d),r=r.slice();for(var c=0;c1&&(v=f[f.length-2]);var D=l[h+"Path"];return D==null?D=l.basePath:g=="/"&&(h=g=""),D&&D.slice(-1)!="/"&&(D+="/"),D+h+g+v+this.get("suffix")},n.setModuleUrl=function(p,h){return l.$moduleUrls[p]=h};var r=function(p,h){if(p==="ace/theme/textmate"||p==="./theme/textmate")return h(null,t("./theme/textmate"));if(a)return a(p,h);console.error("loader is not configured")},a;n.setLoader=function(p){a=p},n.dynamicModules=Object.create(null),n.$loading={},n.$loaded={},n.loadModule=function(p,h){var f;if(Array.isArray(p))var g=p[0],v=p[1];else if(typeof p=="string")var v=p;var b=function(D){if(D&&!n.$loading[v])return h&&h(D);if(n.$loading[v]||(n.$loading[v]=[]),n.$loading[v].push(h),!(n.$loading[v].length>1)){var E=function(){r(v,function(w,y){y&&(n.$loaded[v]=y),n._emit("load.module",{name:v,module:y});var A=n.$loading[v];n.$loading[v]=null,A.forEach(function(T){T&&T(y)})})};if(!n.get("packaged"))return E();s.loadScript(n.moduleUrl(v,g),E),c()}};if(n.dynamicModules[v])n.dynamicModules[v]().then(function(D){D.default?b(D.default):b(D)});else{try{f=this.$require(v)}catch{}b(f||n.$loaded[v])}},n.$require=function(p){if(typeof u.require=="function"){var h="require";return u[h](p)}},n.setModuleLoader=function(p,h){n.dynamicModules[p]=h};var c=function(){!l.basePath&&!l.workerPath&&!l.modePath&&!l.themePath&&!Object.keys(l.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),c=function(){})};n.version="1.43.4"}),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],function(t,n,u){t("./lib/fixoldbrowsers");var i=t("./config");i.setLoader(function(l,r){t([l],function(a){r(null,a)})});var s=(function(){return this||typeof window<"u"&&window})();u.exports=function(l){i.init=d,i.$require=t,l.require=t},d(!0);function d(l){if(!(!s||!s.document)){i.set("packaged",l||t.packaged||u.packaged||s.define&&(void 0).packaged);var r={},a="",c=document.currentScript||document._currentScript,p=c&&c.ownerDocument||document;c&&c.src&&(a=c.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var h=p.getElementsByTagName("script"),f=0;f ["+this.end.row+"/"+this.end.column+"]"},s.prototype.contains=function(d,o){return this.compare(d,o)==0},s.prototype.compareRange=function(d){var o,l=d.end,r=d.start;return o=this.compare(l.row,l.column),o==1?(o=this.compare(r.row,r.column),o==1?2:o==0?1:0):o==-1?-2:(o=this.compare(r.row,r.column),o==-1?-1:o==1?42:0)},s.prototype.comparePoint=function(d){return this.compare(d.row,d.column)},s.prototype.containsRange=function(d){return this.comparePoint(d.start)==0&&this.comparePoint(d.end)==0},s.prototype.intersects=function(d){var o=this.compareRange(d);return o==-1||o==0||o==1},s.prototype.isEnd=function(d,o){return this.end.row==d&&this.end.column==o},s.prototype.isStart=function(d,o){return this.start.row==d&&this.start.column==o},s.prototype.setStart=function(d,o){typeof d=="object"?(this.start.column=d.column,this.start.row=d.row):(this.start.row=d,this.start.column=o)},s.prototype.setEnd=function(d,o){typeof d=="object"?(this.end.column=d.column,this.end.row=d.row):(this.end.row=d,this.end.column=o)},s.prototype.inside=function(d,o){return this.compare(d,o)==0?!(this.isEnd(d,o)||this.isStart(d,o)):!1},s.prototype.insideStart=function(d,o){return this.compare(d,o)==0?!this.isEnd(d,o):!1},s.prototype.insideEnd=function(d,o){return this.compare(d,o)==0?!this.isStart(d,o):!1},s.prototype.compare=function(d,o){return!this.isMultiLine()&&d===this.start.row?othis.end.column?1:0:dthis.end.row?1:this.start.row===d?o>=this.start.column?0:-1:this.end.row===d?o<=this.end.column?0:1:0},s.prototype.compareStart=function(d,o){return this.start.row==d&&this.start.column==o?-1:this.compare(d,o)},s.prototype.compareEnd=function(d,o){return this.end.row==d&&this.end.column==o?1:this.compare(d,o)},s.prototype.compareInside=function(d,o){return this.end.row==d&&this.end.column==o?1:this.start.row==d&&this.start.column==o?-1:this.compare(d,o)},s.prototype.clipRows=function(d,o){if(this.end.row>o)var l={row:o+1,column:0};else if(this.end.rowo)var r={row:o+1,column:0};else if(this.start.row1?(T++,T>4&&(T=1)):T=1,s.isIE){var C=Math.abs(S.clientX-$)>5||Math.abs(S.clientY-M)>5;(!O||C)&&(T=1),O&&clearTimeout(O),O=setTimeout(function(){O=null},E[T-1]||600),T==1&&($=S.clientX,M=S.clientY)}if(S._clicks=T,w[y]("mousedown",S),T>4)T=0;else if(T>1)return w[y](_[T],S)}Array.isArray(D)||(D=[D]),D.forEach(function(S){p(S,"mousedown",k,A)})};function f(D){return 0|(D.ctrlKey?1:0)|(D.altKey?2:0)|(D.shiftKey?4:0)|(D.metaKey?8:0)}n.getModifierString=function(D){return i.KEY_MODS[f(D)]};function g(D,E,w){var y=f(E);if(!w&&E.code&&(w=i.$codeToKeyCode[E.code]||w),!s.isMac&&d){if(E.getModifierState&&(E.getModifierState("OS")||E.getModifierState("Win"))&&(y|=8),d.altGr)if((3&y)!=3)d.altGr=0;else return;if(w===18||w===17){var A=E.location;if(w===17&&A===1)d[w]==1&&(o=E.timeStamp);else if(w===18&&y===3&&A===2){var T=E.timeStamp-o;T<50&&(d.altGr=!0)}}}if(w in i.MODIFIER_KEYS&&(w=-1),!(!y&&w===13&&E.location===3&&(D(E,y,-w),E.defaultPrevented))){if(s.isChromeOS&&y&8){if(D(E,y,w),E.defaultPrevented)return;y&=-9}return!y&&!(w in i.FUNCTION_KEYS)&&!(w in i.PRINTABLE_KEYS)?!1:D(E,y,w)}}n.addCommandKeyListener=function(D,E,w){var y=null;p(D,"keydown",function(A){d[A.keyCode]=(d[A.keyCode]||0)+1;var T=g(E,A,A.keyCode);return y=A.defaultPrevented,T},w),p(D,"keypress",function(A){y&&(A.ctrlKey||A.altKey||A.shiftKey||A.metaKey)&&(n.stopEvent(A),y=null)},w),p(D,"keyup",function(A){d[A.keyCode]=null},w),d||(v(),p(window,"focus",v))};function v(){d=Object.create(null)}if(typeof window=="object"&&window.postMessage&&!s.isOldIE){var b=1;n.nextTick=function(D,E){E=E||window;var w="zero-timeout-message-"+b++,y=function(A){A.data==w&&(n.stopPropagation(A),h(E,"message",y),D())};p(E,"message",y),E.postMessage(w,"*")}}n.$idleBlocked=!1,n.onIdle=function(D,E){return setTimeout(function w(){n.$idleBlocked?setTimeout(w,100):D()},E)},n.$idleBlockId=null,n.blockIdle=function(D){n.$idleBlockId&&clearTimeout(n.$idleBlockId),n.$idleBlocked=!0,n.$idleBlockId=setTimeout(function(){n.$idleBlocked=!1},D||100)},n.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),n.nextFrame?n.nextFrame=n.nextFrame.bind(window):n.nextFrame=function(D){setTimeout(D,17)}}),ace.define("ace/clipboard",["require","exports","module"],function(t,n,u){var i;u.exports={lineMode:!1,pasteCancelled:function(){return i&&i>Date.now()-50?!0:i=!1},cancel:function(){i=Date.now()}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(t,n,u){var i=t("../lib/event"),s=t("../config").nls,d=t("../lib/useragent"),o=t("../lib/dom"),l=t("../lib/lang"),r=t("../clipboard"),a=d.isChrome<18,c=d.isIE,p=d.isChrome>63,h=400,f=t("../lib/keys"),g=f.KEY_MODS,v=d.isIOS,b=v?/\s/:/\n/,D=d.isMobile,E=(function(){function w(y,A){var T=this;this.host=A,this.text=o.createElement("textarea"),this.text.className="ace_text-input",this.text.setAttribute("wrap","off"),this.text.setAttribute("autocomplete","off"),this.text.setAttribute("autocorrect","off"),this.text.setAttribute("autocapitalize","off"),this.text.setAttribute("spellcheck","false"),this.text.style.opacity="0",y.insertBefore(this.text,y.firstChild),this.copied=!1,this.pasted=!1,this.inComposition=!1,this.sendingText=!1,this.tempStyle="",D||(this.text.style.fontSize="1px"),this.commandMode=!1,this.ignoreFocusEvents=!1,this.lastValue="",this.lastSelectionStart=0,this.lastSelectionEnd=0,this.lastRestoreEnd=0,this.rowStart=Number.MAX_SAFE_INTEGER,this.rowEnd=Number.MIN_SAFE_INTEGER,this.numberOfExtraLines=0;try{this.$isFocused=document.activeElement===this.text}catch{}this.cancelComposition=this.cancelComposition.bind(this),this.setAriaOptions({role:"textbox"}),i.addListener(this.text,"blur",function($){T.ignoreFocusEvents||(A.onBlur($),T.$isFocused=!1)},A),i.addListener(this.text,"focus",function($){if(!T.ignoreFocusEvents){if(T.$isFocused=!0,d.isEdge)try{if(!document.hasFocus())return}catch{}A.onFocus($),d.isEdge?setTimeout(T.resetSelection.bind(T)):T.resetSelection()}},A),this.$focusScroll=!1,A.on("beforeEndOperation",function(){var $=A.curOp,M=$&&$.command&&$.command.name;if(M!="insertstring"){var O=M&&($.docChanged||$.selectionChanged);T.inComposition&&O&&(T.lastValue=T.text.value="",T.onCompositionEnd()),T.resetSelection()}}),A.on("changeSelection",this.setAriaLabel.bind(this)),this.resetSelection=v?this.$resetSelectionIOS:this.$resetSelection,this.$isFocused&&A.onFocus(),this.inputHandler=null,this.afterContextMenu=!1,i.addCommandKeyListener(this.text,function($,M,O){if(!T.inComposition)return A.onCommandKey($,M,O)},A),i.addListener(this.text,"select",this.onSelect.bind(this),A),i.addListener(this.text,"input",this.onInput.bind(this),A),i.addListener(this.text,"cut",this.onCut.bind(this),A),i.addListener(this.text,"copy",this.onCopy.bind(this),A),i.addListener(this.text,"paste",this.onPaste.bind(this),A),(!("oncut"in this.text)||!("oncopy"in this.text)||!("onpaste"in this.text))&&i.addListener(y,"keydown",function($){if(!(d.isMac&&!$.metaKey||!$.ctrlKey))switch($.keyCode){case 67:T.onCopy($);break;case 86:T.onPaste($);break;case 88:T.onCut($);break}},A),this.syncComposition=l.delayedCall(this.onCompositionUpdate.bind(this),50).schedule.bind(null,null),i.addListener(this.text,"compositionstart",this.onCompositionStart.bind(this),A),i.addListener(this.text,"compositionupdate",this.onCompositionUpdate.bind(this),A),i.addListener(this.text,"keyup",this.onKeyup.bind(this),A),i.addListener(this.text,"keydown",this.syncComposition.bind(this),A),i.addListener(this.text,"compositionend",this.onCompositionEnd.bind(this),A),this.closeTimeout,i.addListener(this.text,"mouseup",this.$onContextMenu.bind(this),A),i.addListener(this.text,"mousedown",function($){$.preventDefault(),T.onContextMenuClose()},A),i.addListener(A.renderer.scroller,"contextmenu",this.$onContextMenu.bind(this),A),i.addListener(this.text,"contextmenu",this.$onContextMenu.bind(this),A),v&&this.addIosSelectionHandler(y,A,this.text)}return w.prototype.addIosSelectionHandler=function(y,A,T){var $=this,M=null,O=!1;T.addEventListener("keydown",function(k){M&&clearTimeout(M),O=!0},!0),T.addEventListener("keyup",function(k){M=setTimeout(function(){O=!1},100)},!0);var _=function(k){if(document.activeElement===T&&!(O||$.inComposition||A.$mouseHandler.isMousePressed)&&!$.copied){var S=T.selectionStart,C=T.selectionEnd,L=null,I=0;if(S==0?L=f.up:S==1?L=f.home:C>$.lastSelectionEnd&&$.lastValue[C]==` -`?L=f.end:S<$.lastSelectionStart&&$.lastValue[S-1]==" "?(L=f.left,I=g.option):S<$.lastSelectionStart||S==$.lastSelectionStart&&$.lastSelectionEnd!=$.lastSelectionStart&&S==C?L=f.left:C>$.lastSelectionEnd&&$.lastValue.slice(0,C).split(` -`).length>2?L=f.down:C>$.lastSelectionEnd&&$.lastValue[C-1]==" "?(L=f.right,I=g.option):(C>$.lastSelectionEnd||C==$.lastSelectionEnd&&$.lastSelectionEnd!=$.lastSelectionStart&&S==C)&&(L=f.right),S!==C&&(I|=g.shift),L){var F=A.onCommandKey({},I,L);if(!F&&A.commands){L=f.keyCodeToString(L);var R=A.commands.findKeyCommand(I,L);R&&A.execCommand(R)}$.lastSelectionStart=S,$.lastSelectionEnd=C,$.resetSelection("")}}};document.addEventListener("selectionchange",_),A.on("destroy",function(){document.removeEventListener("selectionchange",_)})},w.prototype.onContextMenuClose=function(){var y=this;clearTimeout(this.closeTimeout),this.closeTimeout=setTimeout(function(){y.tempStyle&&(y.text.style.cssText=y.tempStyle,y.tempStyle=""),y.host.renderer.$isMousePressed=!1,y.host.renderer.$keepTextAreaAtCursor&&y.host.renderer.$moveTextAreaToCursor()},0)},w.prototype.$onContextMenu=function(y){this.host.textInput.onContextMenu(y),this.onContextMenuClose()},w.prototype.onKeyup=function(y){y.keyCode==27&&this.text.value.lengthh+100||b.test(T)||D&&this.lastSelectionStart<1&&this.lastSelectionStart==this.lastSelectionEnd)&&this.resetSelection()},w.prototype.sendText=function(y,A){if(this.afterContextMenu&&(this.afterContextMenu=!1),this.pasted)return this.resetSelection(),y&&this.host.onPaste(y),this.pasted=!1,"";for(var T=this.text.selectionStart,$=this.text.selectionEnd,M=this.lastSelectionStart,O=this.lastValue.length-this.lastSelectionEnd,_=y,k=y.length-T,S=y.length-$,C=0;M>0&&this.lastValue[C]==y[C];)C++,M--;for(_=_.slice(C),C=1;O>0&&this.lastValue.length-C>this.lastSelectionStart-1&&this.lastValue[this.lastValue.length-C]==y[y.length-C];)C++,O--;k-=C-1,S-=C-1;var L=_.length-C+1;if(L<0&&(M=-L,L=0),_=_.slice(0,L),!A&&!_&&!k&&!M&&!O&&!S)return"";this.sendingText=!0;var I=!1;return d.isAndroid&&_==". "&&(_=" ",I=!0),_&&!M&&!O&&!k&&!S||this.commandMode?this.host.onTextInput(_):this.host.onTextInput(_,{extendLeft:M,extendRight:O,restoreStart:k,restoreEnd:S}),this.sendingText=!1,this.lastValue=y,this.lastSelectionStart=T,this.lastSelectionEnd=$,this.lastRestoreEnd=S,I?` -`:_},w.prototype.onSelect=function(y){var A=this;if(!this.inComposition){var T=function($){return $.selectionStart===0&&$.selectionEnd>=A.lastValue.length&&$.value===A.lastValue&&A.lastValue&&$.selectionEnd!==A.lastSelectionEnd};this.copied?this.copied=!1:T(this.text)?(this.host.selectAll(),this.resetSelection()):D&&this.text.selectionStart!=this.lastSelectionStart&&this.resetSelection()}},w.prototype.$resetSelectionIOS=function(y){if(!(!this.$isFocused||this.copied&&!y||this.sendingText)){y||(y="");var A=` +`}),ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"],function(t,n,h){n.isDark=!1,n.cssClass="ace-tm",n.cssText=t("./textmate-css"),n.$id="ace/theme/textmate";var i=t("../lib/dom");i.importCssString(n.cssText,n.cssClass,!1)}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"],function(t,n,h){"no use strict";var i=t("./lib/lang"),s=t("./lib/net"),d=t("./lib/dom"),o=t("./lib/app_config").AppConfig;h.exports=n=new o;var l={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{},loadWorkerFromBlob:!0,sharedPopups:!1,useStrictCSP:null};n.get=function(p){if(!l.hasOwnProperty(p))throw new Error("Unknown config key: "+p);return l[p]},n.set=function(p,u){if(l.hasOwnProperty(p))l[p]=u;else if(this.setDefaultValue("",p,u)==!1)throw new Error("Unknown config key: "+p);p=="useStrictCSP"&&d.useStrictCSP(u)},n.all=function(){return i.copyObject(l)},n.$modes={},n.moduleUrl=function(p,u){if(l.$moduleUrls[p])return l.$moduleUrls[p];var f=p.split("/");u=u||f[f.length-2]||"";var g=u=="snippets"?"/":"-",v=f[f.length-1];if(u=="worker"&&g=="-"){var b=new RegExp("^"+u+"[\\-_]|[\\-_]"+u+"$","g");v=v.replace(b,"")}(!v||v==u)&&f.length>1&&(v=f[f.length-2]);var D=l[u+"Path"];return D==null?D=l.basePath:g=="/"&&(u=g=""),D&&D.slice(-1)!="/"&&(D+="/"),D+u+g+v+this.get("suffix")},n.setModuleUrl=function(p,u){return l.$moduleUrls[p]=u};var r=function(p,u){if(p==="ace/theme/textmate"||p==="./theme/textmate")return u(null,t("./theme/textmate"));if(a)return a(p,u);console.error("loader is not configured")},a;n.setLoader=function(p){a=p},n.dynamicModules=Object.create(null),n.$loading={},n.$loaded={},n.loadModule=function(p,u){var f;if(Array.isArray(p))var g=p[0],v=p[1];else if(typeof p=="string")var v=p;var b=function(D){if(D&&!n.$loading[v])return u&&u(D);if(n.$loading[v]||(n.$loading[v]=[]),n.$loading[v].push(u),!(n.$loading[v].length>1)){var E=function(){r(v,function(w,y){y&&(n.$loaded[v]=y),n._emit("load.module",{name:v,module:y});var A=n.$loading[v];n.$loading[v]=null,A.forEach(function(T){T&&T(y)})})};if(!n.get("packaged"))return E();s.loadScript(n.moduleUrl(v,g),E),c()}};if(n.dynamicModules[v])n.dynamicModules[v]().then(function(D){D.default?b(D.default):b(D)});else{try{f=this.$require(v)}catch{}b(f||n.$loaded[v])}},n.$require=function(p){if(typeof h.require=="function"){var u="require";return h[u](p)}},n.setModuleLoader=function(p,u){n.dynamicModules[p]=u};var c=function(){!l.basePath&&!l.workerPath&&!l.modePath&&!l.themePath&&!Object.keys(l.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),c=function(){})};n.version="1.43.4"}),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],function(t,n,h){t("./lib/fixoldbrowsers");var i=t("./config");i.setLoader(function(l,r){t([l],function(a){r(null,a)})});var s=(function(){return this||typeof window<"u"&&window})();h.exports=function(l){i.init=d,i.$require=t,l.require=t},d(!0);function d(l){if(!(!s||!s.document)){i.set("packaged",l||t.packaged||h.packaged||s.define&&(void 0).packaged);var r={},a="",c=document.currentScript||document._currentScript,p=c&&c.ownerDocument||document;c&&c.src&&(a=c.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var u=p.getElementsByTagName("script"),f=0;f ["+this.end.row+"/"+this.end.column+"]"},s.prototype.contains=function(d,o){return this.compare(d,o)==0},s.prototype.compareRange=function(d){var o,l=d.end,r=d.start;return o=this.compare(l.row,l.column),o==1?(o=this.compare(r.row,r.column),o==1?2:o==0?1:0):o==-1?-2:(o=this.compare(r.row,r.column),o==-1?-1:o==1?42:0)},s.prototype.comparePoint=function(d){return this.compare(d.row,d.column)},s.prototype.containsRange=function(d){return this.comparePoint(d.start)==0&&this.comparePoint(d.end)==0},s.prototype.intersects=function(d){var o=this.compareRange(d);return o==-1||o==0||o==1},s.prototype.isEnd=function(d,o){return this.end.row==d&&this.end.column==o},s.prototype.isStart=function(d,o){return this.start.row==d&&this.start.column==o},s.prototype.setStart=function(d,o){typeof d=="object"?(this.start.column=d.column,this.start.row=d.row):(this.start.row=d,this.start.column=o)},s.prototype.setEnd=function(d,o){typeof d=="object"?(this.end.column=d.column,this.end.row=d.row):(this.end.row=d,this.end.column=o)},s.prototype.inside=function(d,o){return this.compare(d,o)==0?!(this.isEnd(d,o)||this.isStart(d,o)):!1},s.prototype.insideStart=function(d,o){return this.compare(d,o)==0?!this.isEnd(d,o):!1},s.prototype.insideEnd=function(d,o){return this.compare(d,o)==0?!this.isStart(d,o):!1},s.prototype.compare=function(d,o){return!this.isMultiLine()&&d===this.start.row?othis.end.column?1:0:dthis.end.row?1:this.start.row===d?o>=this.start.column?0:-1:this.end.row===d?o<=this.end.column?0:1:0},s.prototype.compareStart=function(d,o){return this.start.row==d&&this.start.column==o?-1:this.compare(d,o)},s.prototype.compareEnd=function(d,o){return this.end.row==d&&this.end.column==o?1:this.compare(d,o)},s.prototype.compareInside=function(d,o){return this.end.row==d&&this.end.column==o?1:this.start.row==d&&this.start.column==o?-1:this.compare(d,o)},s.prototype.clipRows=function(d,o){if(this.end.row>o)var l={row:o+1,column:0};else if(this.end.rowo)var r={row:o+1,column:0};else if(this.start.row1?(T++,T>4&&(T=1)):T=1,s.isIE){var C=Math.abs(S.clientX-x)>5||Math.abs(S.clientY-M)>5;(!O||C)&&(T=1),O&&clearTimeout(O),O=setTimeout(function(){O=null},E[T-1]||600),T==1&&(x=S.clientX,M=S.clientY)}if(S._clicks=T,w[y]("mousedown",S),T>4)T=0;else if(T>1)return w[y](_[T],S)}Array.isArray(D)||(D=[D]),D.forEach(function(S){p(S,"mousedown",k,A)})};function f(D){return 0|(D.ctrlKey?1:0)|(D.altKey?2:0)|(D.shiftKey?4:0)|(D.metaKey?8:0)}n.getModifierString=function(D){return i.KEY_MODS[f(D)]};function g(D,E,w){var y=f(E);if(!w&&E.code&&(w=i.$codeToKeyCode[E.code]||w),!s.isMac&&d){if(E.getModifierState&&(E.getModifierState("OS")||E.getModifierState("Win"))&&(y|=8),d.altGr)if((3&y)!=3)d.altGr=0;else return;if(w===18||w===17){var A=E.location;if(w===17&&A===1)d[w]==1&&(o=E.timeStamp);else if(w===18&&y===3&&A===2){var T=E.timeStamp-o;T<50&&(d.altGr=!0)}}}if(w in i.MODIFIER_KEYS&&(w=-1),!(!y&&w===13&&E.location===3&&(D(E,y,-w),E.defaultPrevented))){if(s.isChromeOS&&y&8){if(D(E,y,w),E.defaultPrevented)return;y&=-9}return!y&&!(w in i.FUNCTION_KEYS)&&!(w in i.PRINTABLE_KEYS)?!1:D(E,y,w)}}n.addCommandKeyListener=function(D,E,w){var y=null;p(D,"keydown",function(A){d[A.keyCode]=(d[A.keyCode]||0)+1;var T=g(E,A,A.keyCode);return y=A.defaultPrevented,T},w),p(D,"keypress",function(A){y&&(A.ctrlKey||A.altKey||A.shiftKey||A.metaKey)&&(n.stopEvent(A),y=null)},w),p(D,"keyup",function(A){d[A.keyCode]=null},w),d||(v(),p(window,"focus",v))};function v(){d=Object.create(null)}if(typeof window=="object"&&window.postMessage&&!s.isOldIE){var b=1;n.nextTick=function(D,E){E=E||window;var w="zero-timeout-message-"+b++,y=function(A){A.data==w&&(n.stopPropagation(A),u(E,"message",y),D())};p(E,"message",y),E.postMessage(w,"*")}}n.$idleBlocked=!1,n.onIdle=function(D,E){return setTimeout(function w(){n.$idleBlocked?setTimeout(w,100):D()},E)},n.$idleBlockId=null,n.blockIdle=function(D){n.$idleBlockId&&clearTimeout(n.$idleBlockId),n.$idleBlocked=!0,n.$idleBlockId=setTimeout(function(){n.$idleBlocked=!1},D||100)},n.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),n.nextFrame?n.nextFrame=n.nextFrame.bind(window):n.nextFrame=function(D){setTimeout(D,17)}}),ace.define("ace/clipboard",["require","exports","module"],function(t,n,h){var i;h.exports={lineMode:!1,pasteCancelled:function(){return i&&i>Date.now()-50?!0:i=!1},cancel:function(){i=Date.now()}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(t,n,h){var i=t("../lib/event"),s=t("../config").nls,d=t("../lib/useragent"),o=t("../lib/dom"),l=t("../lib/lang"),r=t("../clipboard"),a=d.isChrome<18,c=d.isIE,p=d.isChrome>63,u=400,f=t("../lib/keys"),g=f.KEY_MODS,v=d.isIOS,b=v?/\s/:/\n/,D=d.isMobile,E=(function(){function w(y,A){var T=this;this.host=A,this.text=o.createElement("textarea"),this.text.className="ace_text-input",this.text.setAttribute("wrap","off"),this.text.setAttribute("autocomplete","off"),this.text.setAttribute("autocorrect","off"),this.text.setAttribute("autocapitalize","off"),this.text.setAttribute("spellcheck","false"),this.text.style.opacity="0",y.insertBefore(this.text,y.firstChild),this.copied=!1,this.pasted=!1,this.inComposition=!1,this.sendingText=!1,this.tempStyle="",D||(this.text.style.fontSize="1px"),this.commandMode=!1,this.ignoreFocusEvents=!1,this.lastValue="",this.lastSelectionStart=0,this.lastSelectionEnd=0,this.lastRestoreEnd=0,this.rowStart=Number.MAX_SAFE_INTEGER,this.rowEnd=Number.MIN_SAFE_INTEGER,this.numberOfExtraLines=0;try{this.$isFocused=document.activeElement===this.text}catch{}this.cancelComposition=this.cancelComposition.bind(this),this.setAriaOptions({role:"textbox"}),i.addListener(this.text,"blur",function(x){T.ignoreFocusEvents||(A.onBlur(x),T.$isFocused=!1)},A),i.addListener(this.text,"focus",function(x){if(!T.ignoreFocusEvents){if(T.$isFocused=!0,d.isEdge)try{if(!document.hasFocus())return}catch{}A.onFocus(x),d.isEdge?setTimeout(T.resetSelection.bind(T)):T.resetSelection()}},A),this.$focusScroll=!1,A.on("beforeEndOperation",function(){var x=A.curOp,M=x&&x.command&&x.command.name;if(M!="insertstring"){var O=M&&(x.docChanged||x.selectionChanged);T.inComposition&&O&&(T.lastValue=T.text.value="",T.onCompositionEnd()),T.resetSelection()}}),A.on("changeSelection",this.setAriaLabel.bind(this)),this.resetSelection=v?this.$resetSelectionIOS:this.$resetSelection,this.$isFocused&&A.onFocus(),this.inputHandler=null,this.afterContextMenu=!1,i.addCommandKeyListener(this.text,function(x,M,O){if(!T.inComposition)return A.onCommandKey(x,M,O)},A),i.addListener(this.text,"select",this.onSelect.bind(this),A),i.addListener(this.text,"input",this.onInput.bind(this),A),i.addListener(this.text,"cut",this.onCut.bind(this),A),i.addListener(this.text,"copy",this.onCopy.bind(this),A),i.addListener(this.text,"paste",this.onPaste.bind(this),A),(!("oncut"in this.text)||!("oncopy"in this.text)||!("onpaste"in this.text))&&i.addListener(y,"keydown",function(x){if(!(d.isMac&&!x.metaKey||!x.ctrlKey))switch(x.keyCode){case 67:T.onCopy(x);break;case 86:T.onPaste(x);break;case 88:T.onCut(x);break}},A),this.syncComposition=l.delayedCall(this.onCompositionUpdate.bind(this),50).schedule.bind(null,null),i.addListener(this.text,"compositionstart",this.onCompositionStart.bind(this),A),i.addListener(this.text,"compositionupdate",this.onCompositionUpdate.bind(this),A),i.addListener(this.text,"keyup",this.onKeyup.bind(this),A),i.addListener(this.text,"keydown",this.syncComposition.bind(this),A),i.addListener(this.text,"compositionend",this.onCompositionEnd.bind(this),A),this.closeTimeout,i.addListener(this.text,"mouseup",this.$onContextMenu.bind(this),A),i.addListener(this.text,"mousedown",function(x){x.preventDefault(),T.onContextMenuClose()},A),i.addListener(A.renderer.scroller,"contextmenu",this.$onContextMenu.bind(this),A),i.addListener(this.text,"contextmenu",this.$onContextMenu.bind(this),A),v&&this.addIosSelectionHandler(y,A,this.text)}return w.prototype.addIosSelectionHandler=function(y,A,T){var x=this,M=null,O=!1;T.addEventListener("keydown",function(k){M&&clearTimeout(M),O=!0},!0),T.addEventListener("keyup",function(k){M=setTimeout(function(){O=!1},100)},!0);var _=function(k){if(document.activeElement===T&&!(O||x.inComposition||A.$mouseHandler.isMousePressed)&&!x.copied){var S=T.selectionStart,C=T.selectionEnd,L=null,I=0;if(S==0?L=f.up:S==1?L=f.home:C>x.lastSelectionEnd&&x.lastValue[C]==` +`?L=f.end:Sx.lastSelectionEnd&&x.lastValue.slice(0,C).split(` +`).length>2?L=f.down:C>x.lastSelectionEnd&&x.lastValue[C-1]==" "?(L=f.right,I=g.option):(C>x.lastSelectionEnd||C==x.lastSelectionEnd&&x.lastSelectionEnd!=x.lastSelectionStart&&S==C)&&(L=f.right),S!==C&&(I|=g.shift),L){var F=A.onCommandKey({},I,L);if(!F&&A.commands){L=f.keyCodeToString(L);var R=A.commands.findKeyCommand(I,L);R&&A.execCommand(R)}x.lastSelectionStart=S,x.lastSelectionEnd=C,x.resetSelection("")}}};document.addEventListener("selectionchange",_),A.on("destroy",function(){document.removeEventListener("selectionchange",_)})},w.prototype.onContextMenuClose=function(){var y=this;clearTimeout(this.closeTimeout),this.closeTimeout=setTimeout(function(){y.tempStyle&&(y.text.style.cssText=y.tempStyle,y.tempStyle=""),y.host.renderer.$isMousePressed=!1,y.host.renderer.$keepTextAreaAtCursor&&y.host.renderer.$moveTextAreaToCursor()},0)},w.prototype.$onContextMenu=function(y){this.host.textInput.onContextMenu(y),this.onContextMenuClose()},w.prototype.onKeyup=function(y){y.keyCode==27&&this.text.value.lengthu+100||b.test(T)||D&&this.lastSelectionStart<1&&this.lastSelectionStart==this.lastSelectionEnd)&&this.resetSelection()},w.prototype.sendText=function(y,A){if(this.afterContextMenu&&(this.afterContextMenu=!1),this.pasted)return this.resetSelection(),y&&this.host.onPaste(y),this.pasted=!1,"";for(var T=this.text.selectionStart,x=this.text.selectionEnd,M=this.lastSelectionStart,O=this.lastValue.length-this.lastSelectionEnd,_=y,k=y.length-T,S=y.length-x,C=0;M>0&&this.lastValue[C]==y[C];)C++,M--;for(_=_.slice(C),C=1;O>0&&this.lastValue.length-C>this.lastSelectionStart-1&&this.lastValue[this.lastValue.length-C]==y[y.length-C];)C++,O--;k-=C-1,S-=C-1;var L=_.length-C+1;if(L<0&&(M=-L,L=0),_=_.slice(0,L),!A&&!_&&!k&&!M&&!O&&!S)return"";this.sendingText=!0;var I=!1;return d.isAndroid&&_==". "&&(_=" ",I=!0),_&&!M&&!O&&!k&&!S||this.commandMode?this.host.onTextInput(_):this.host.onTextInput(_,{extendLeft:M,extendRight:O,restoreStart:k,restoreEnd:S}),this.sendingText=!1,this.lastValue=y,this.lastSelectionStart=T,this.lastSelectionEnd=x,this.lastRestoreEnd=S,I?` +`:_},w.prototype.onSelect=function(y){var A=this;if(!this.inComposition){var T=function(x){return x.selectionStart===0&&x.selectionEnd>=A.lastValue.length&&x.value===A.lastValue&&A.lastValue&&x.selectionEnd!==A.lastSelectionEnd};this.copied?this.copied=!1:T(this.text)?(this.host.selectAll(),this.resetSelection()):D&&this.text.selectionStart!=this.lastSelectionStart&&this.resetSelection()}},w.prototype.$resetSelectionIOS=function(y){if(!(!this.$isFocused||this.copied&&!y||this.sendingText)){y||(y="");var A=` ab`+y+`cde fg -`;A!=this.text.value&&(this.text.value=this.lastValue=A);var T=4,$=4+(y.length||(this.host.selection.isEmpty()?0:1));(this.lastSelectionStart!=T||this.lastSelectionEnd!=$)&&this.text.setSelectionRange(T,$),this.lastSelectionStart=T,this.lastSelectionEnd=$}},w.prototype.$resetSelection=function(){var y=this;if(!(this.inComposition||this.sendingText)&&!(!this.$isFocused&&!this.afterContextMenu)){this.inComposition=!0;var A=0,T=0,$="",M=function(R,B){for(var N=B,H=1;H<=R-y.rowStart&&H<2*y.numberOfExtraLines+1;H++)N+=y.host.session.getLine(R-H).length+1;return N};if(this.host.session){var O=this.host.selection,_=O.getRange(),k=O.cursor.row;k===this.rowEnd+1?(this.rowStart=this.rowEnd+1,this.rowEnd=this.rowStart+2*this.numberOfExtraLines):k===this.rowStart-1?(this.rowEnd=this.rowStart-1,this.rowStart=this.rowEnd-2*this.numberOfExtraLines):(kthis.rowEnd+1)&&(this.rowStart=k>this.numberOfExtraLines?k-this.numberOfExtraLines:0,this.rowEnd=k>this.numberOfExtraLines?k+this.numberOfExtraLines:2*this.numberOfExtraLines);for(var S=[],C=this.rowStart;C<=this.rowEnd;C++)S.push(this.host.session.getLine(C));if($=S.join(` -`),A=M(_.start.row,_.start.column),T=M(_.end.row,_.end.column),_.start.rowthis.rowEnd){var I=this.host.session.getLine(this.rowEnd+1);T=_.end.row>this.rowEnd+1?I.length:_.end.column,T+=$.length+1,$=$+` -`+I}else D&&k>0&&($=` -`+$,T+=1,A+=1);$.length>h&&(A1),c.preventDefault()},a.prototype.startSelect=function(c,p){c=c||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var h=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?h.selection.selectToPosition(c):p||h.selection.moveToPosition(c),p||this.select(),h.setStyle("ace_selecting"),this.setState("select"))},a.prototype.select=function(){var c,p=this.editor,h=p.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var f=this.$clickSelection.comparePoint(h);if(f==-1)c=this.$clickSelection.end;else if(f==1)c=this.$clickSelection.start;else{var g=r(this.$clickSelection,h,p.session);h=g.cursor,c=g.anchor}p.selection.setSelectionAnchor(c.row,c.column)}p.selection.selectToPosition(h),p.renderer.scrollCursorIntoView()},a.prototype.extendSelectionBy=function(c){var p,h=this.editor,f=h.renderer.screenToTextCoordinates(this.x,this.y),g=h.selection[c](f.row,f.column);if(this.$clickSelection){var v=this.$clickSelection.comparePoint(g.start),b=this.$clickSelection.comparePoint(g.end);if(v==-1&&b<=0)p=this.$clickSelection.end,(g.end.row!=f.row||g.end.column!=f.column)&&(f=g.start);else if(b==1&&v>=0)p=this.$clickSelection.start,(g.start.row!=f.row||g.start.column!=f.column)&&(f=g.end);else if(v==-1&&b==1)f=g.end,p=g.start;else{var D=r(this.$clickSelection,f,h.session);f=D.cursor,p=D.anchor}h.selection.setSelectionAnchor(p.row,p.column)}h.selection.selectToPosition(f),h.renderer.scrollCursorIntoView()},a.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},a.prototype.focusWait=function(){var c=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),p=Date.now();(c>s||p-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},a.prototype.onDoubleClick=function(c){var p=c.getDocumentPosition(),h=this.editor,f=h.session,g=f.getBracketRange(p);g?(g.isEmpty()&&(g.start.column--,g.end.column++),this.setState("select")):(g=h.selection.getWordRange(p.row,p.column),this.setState("selectByWords")),this.$clickSelection=g,this.select()},a.prototype.onTripleClick=function(c){var p=c.getDocumentPosition(),h=this.editor;this.setState("selectByLines");var f=h.getSelectionRange();f.isMultiLine()&&f.contains(p.row,p.column)?(this.$clickSelection=h.selection.getLineRange(f.start.row),this.$clickSelection.end=h.selection.getLineRange(f.end.row).end):this.$clickSelection=h.selection.getLineRange(p.row),this.select()},a.prototype.onQuadClick=function(c){var p=this.editor;p.selectAll(),this.$clickSelection=p.getSelectionRange(),this.setState("selectAll")},a.prototype.onMouseWheel=function(c){if(!c.getAccelKey()){c.getShiftKey()&&c.wheelY&&!c.wheelX&&(c.wheelX=c.wheelY,c.wheelY=0);var p=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var h=this.$lastScroll,f=c.domEvent.timeStamp,g=f-h.t,v=g?c.wheelX/g:h.vx,b=g?c.wheelY/g:h.vy;g=1&&p.renderer.isScrollableBy(c.wheelX*c.speed,0)&&(E=!0),D<=1&&p.renderer.isScrollableBy(0,c.wheelY*c.speed)&&(E=!0),E)h.allowed=f;else if(f-h.allowedd.clientHeight;o||s.preventDefault()}}),ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range","ace/lib/scroll"],function(t,n,u){var i=this&&this.__extends||(function(){var f=function(g,v){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,D){b.__proto__=D}||function(b,D){for(var E in D)Object.prototype.hasOwnProperty.call(D,E)&&(b[E]=D[E])},f(g,v)};return function(g,v){if(typeof v!="function"&&v!==null)throw new TypeError("Class extends value "+String(v)+" is not a constructor or null");f(g,v);function b(){this.constructor=g}g.prototype=v===null?Object.create(v):(b.prototype=v.prototype,new b)}})(),s=this&&this.__values||function(f){var g=typeof Symbol=="function"&&Symbol.iterator,v=g&&f[g],b=0;if(v)return v.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&b>=f.length&&(f=void 0),{value:f&&f[b++],done:!f}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")},d=t("./lib/dom");t("./lib/event");var o=t("./range").Range,l=t("./lib/scroll").preventParentScroll,r="ace_tooltip",a=(function(){function f(g){this.isOpen=!1,this.$element=null,this.$parentNode=g}return f.prototype.$init=function(){return this.$element=d.createElement("div"),this.$element.className=r,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},f.prototype.getElement=function(){return this.$element||this.$init()},f.prototype.setText=function(g){this.getElement().textContent=g},f.prototype.setHtml=function(g){this.getElement().innerHTML=g},f.prototype.setPosition=function(g,v){this.getElement().style.left=g+"px",this.getElement().style.top=v+"px"},f.prototype.setClassName=function(g){d.addCssClass(this.getElement(),g)},f.prototype.setTheme=function(g){this.theme&&(this.theme.isDark&&d.removeCssClass(this.getElement(),"ace_dark"),this.theme.cssClass&&d.removeCssClass(this.getElement(),this.theme.cssClass)),g.isDark&&d.addCssClass(this.getElement(),"ace_dark"),g.cssClass&&d.addCssClass(this.getElement(),g.cssClass),this.theme={isDark:g.isDark,cssClass:g.cssClass}},f.prototype.show=function(g,v,b){g!=null&&this.setText(g),v!=null&&b!=null&&this.setPosition(v,b),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},f.prototype.hide=function(g){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=r,this.isOpen=!1)},f.prototype.getHeight=function(){return this.getElement().offsetHeight},f.prototype.getWidth=function(){return this.getElement().offsetWidth},f.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},f})(),c=(function(){function f(){this.popups=[]}return f.prototype.addPopup=function(g){this.popups.push(g),this.updatePopups()},f.prototype.removePopup=function(g){var v=this.popups.indexOf(g);v!==-1&&(this.popups.splice(v,1),this.updatePopups())},f.prototype.updatePopups=function(){var g,v,b,D;this.popups.sort(function(_,k){return k.priority-_.priority});var E=[];try{for(var w=s(this.popups),y=w.next();!y.done;y=w.next()){var A=y.value,T=!0;try{for(var $=(b=void 0,s(E)),M=$.next();!M.done;M=$.next()){var O=M.value;if(this.doPopupsOverlap(O,A)){T=!1;break}}}catch(_){b={error:_}}finally{try{M&&!M.done&&(D=$.return)&&D.call($)}finally{if(b)throw b.error}}T?E.push(A):A.hide()}}catch(_){g={error:_}}finally{try{y&&!y.done&&(v=w.return)&&v.call(w)}finally{if(g)throw g.error}}},f.prototype.doPopupsOverlap=function(g,v){var b=g.getElement().getBoundingClientRect(),D=v.getElement().getBoundingClientRect();return b.leftD.left&&b.topD.top},f})(),p=new c;n.popupManager=p,n.Tooltip=a;var h=(function(f){i(g,f);function g(v){v===void 0&&(v=document.body);var b=f.call(this,v)||this;b.timeout=void 0,b.lastT=0,b.idleTime=350,b.lastEvent=void 0,b.onMouseOut=b.onMouseOut.bind(b),b.onMouseMove=b.onMouseMove.bind(b),b.waitForHover=b.waitForHover.bind(b),b.hide=b.hide.bind(b);var D=b.getElement();return D.style.whiteSpace="pre-wrap",D.style.pointerEvents="auto",D.addEventListener("mouseout",b.onMouseOut),D.tabIndex=-1,D.addEventListener("blur",function(){D.contains(document.activeElement)||this.hide()}.bind(b)),D.addEventListener("wheel",l),b}return g.prototype.addToEditor=function(v){v.on("mousemove",this.onMouseMove),v.on("mousedown",this.hide);var b=v.renderer.getMouseEventTarget();b&&typeof b.removeEventListener=="function"&&b.addEventListener("mouseout",this.onMouseOut,!0)},g.prototype.removeFromEditor=function(v){v.off("mousemove",this.onMouseMove),v.off("mousedown",this.hide);var b=v.renderer.getMouseEventTarget();b&&typeof b.removeEventListener=="function"&&b.removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},g.prototype.onMouseMove=function(v,b){this.lastEvent=v,this.lastT=Date.now();var D=b.$mouseHandler.isMousePressed;if(this.isOpen){var E=this.lastEvent&&this.lastEvent.getDocumentPosition();(!this.range||!this.range.contains(E.row,E.column)||D||this.isOutsideOfText(this.lastEvent))&&this.hide()}this.timeout||D||(this.lastEvent=v,this.timeout=setTimeout(this.waitForHover,this.idleTime))},g.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var v=Date.now()-this.lastT;if(this.idleTime-v>10){this.timeout=setTimeout(this.waitForHover,this.idleTime-v);return}this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor)},g.prototype.isOutsideOfText=function(v){var b=v.editor,D=v.getDocumentPosition(),E=b.session.getLine(D.row);if(D.column==E.length){var w=b.renderer.pixelToScreenCoordinates(v.clientX,v.clientY),y=b.session.documentToScreenPosition(D.row,D.column);if(y.column!=w.column||y.row!=w.row)return!0}return!1},g.prototype.setDataProvider=function(v){this.$gatherData=v},g.prototype.showForRange=function(v,b,D,E){if(!(E&&E!=this.lastEvent)&&!(this.isOpen&&document.activeElement==this.getElement())){var w=v.renderer;this.isOpen||(p.addPopup(this),this.$registerCloseEvents(),this.setTheme(w.theme)),this.isOpen=!0,this.range=o.fromPoints(b.start,b.end);var y=w.textToScreenCoordinates(b.start.row,b.start.column),A=w.scroller.getBoundingClientRect();y.pageX=h.length&&(h=void 0),{value:h&&h[v++],done:!h}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")},d=t("../lib/dom"),o=t("./mouse_event").MouseEvent,l=t("../tooltip").HoverTooltip,r=t("../config").nls,a=t("../range").Range;function c(h){var f=h.editor,g=f.renderer.$gutterLayer;h.$tooltip=new p(f),h.$tooltip.addToEditor(f),h.$tooltip.setDataProvider(function(v,b){var D=v.getDocumentPosition().row;h.$tooltip.showTooltip(D)}),h.editor.setDefaultHandler("guttermousedown",function(v){if(!(!f.isFocused()||v.getButton()!=0)){var b=g.getRegion(v);if(b!="foldWidgets"){var D=v.getDocumentPosition().row,E=f.session.selection;if(v.getShiftKey())E.selectTo(D,0);else{if(v.domEvent.detail==2)return f.selectAll(),v.preventDefault();h.$clickSelection=f.selection.getLineRange(D)}return h.setState("selectByLines"),h.captureMouse(v),v.preventDefault()}}})}n.GutterHandler=c;var p=(function(h){i(f,h);function f(g){var v=h.call(this,g.container)||this;v.id="gt"+ ++f.$uid,v.editor=g,v.visibleTooltipRow;var b=v.getElement();return b.setAttribute("role","tooltip"),b.setAttribute("id",v.id),b.style.pointerEvents="auto",v.idleTime=50,v.onDomMouseMove=v.onDomMouseMove.bind(v),v.onDomMouseOut=v.onDomMouseOut.bind(v),v.setClassName("ace_gutter-tooltip"),v}return f.prototype.onDomMouseMove=function(g){var v=new o(g,this.editor);this.onMouseMove(v,this.editor)},f.prototype.onDomMouseOut=function(g){var v=new o(g,this.editor);this.onMouseOut(v)},f.prototype.addToEditor=function(g){var v=g.renderer.$gutter;v.addEventListener("mousemove",this.onDomMouseMove),v.addEventListener("mouseout",this.onDomMouseOut),h.prototype.addToEditor.call(this,g)},f.prototype.removeFromEditor=function(g){var v=g.renderer.$gutter;v.removeEventListener("mousemove",this.onDomMouseMove),v.removeEventListener("mouseout",this.onDomMouseOut),h.prototype.removeFromEditor.call(this,g)},f.prototype.destroy=function(){this.editor&&this.removeFromEditor(this.editor),h.prototype.destroy.call(this)},Object.defineProperty(f,"annotationLabels",{get:function(){return{error:{singular:r("gutter-tooltip.aria-label.error.singular","error"),plural:r("gutter-tooltip.aria-label.error.plural","errors")},security:{singular:r("gutter-tooltip.aria-label.security.singular","security finding"),plural:r("gutter-tooltip.aria-label.security.plural","security findings")},warning:{singular:r("gutter-tooltip.aria-label.warning.singular","warning"),plural:r("gutter-tooltip.aria-label.warning.plural","warnings")},info:{singular:r("gutter-tooltip.aria-label.info.singular","information message"),plural:r("gutter-tooltip.aria-label.info.plural","information messages")},hint:{singular:r("gutter-tooltip.aria-label.hint.singular","suggestion"),plural:r("gutter-tooltip.aria-label.hint.plural","suggestions")}}},enumerable:!1,configurable:!0}),f.prototype.showTooltip=function(g){var v,b=this.editor.renderer.$gutterLayer,D=b.$annotations[g],E;D?E={displayText:Array.from(D.displayText),type:Array.from(D.type)}:E={displayText:[],type:[]};var w=b.session.getFoldLine(g);if(w&&b.$showFoldedAnnotations){for(var y={error:[],security:[],warning:[],info:[],hint:[]},A={error:1,security:2,warning:3,info:4,hint:5},T,$=g+1;$<=w.end.row;$++)if(b.$annotations[$])for(var M=0;M2)return b.childNodes[2]}},f.prototype.$findCellByRow=function(g){return this.editor.renderer.$gutterLayer.$lines.cells.find(function(v){return v.row===g})},f.prototype.hide=function(g){if(this.isOpen){if(this.$element.removeAttribute("aria-live"),this.visibleTooltipRow!=null){var v=this.$findLinkedAnnotationNode(this.visibleTooltipRow);v&&v.removeAttribute("aria-describedby")}this.visibleTooltipRow=void 0,this.editor._signal("hideGutterTooltip",this),h.prototype.hide.call(this,g)}},f.annotationsToSummaryString=function(g){var v,b,D=[],E=["error","security","warning","info","hint"];try{for(var w=s(E),y=w.next();!y.done;y=w.next()){var A=y.value;if(g[A].length){var T=g[A].length===1?f.annotationLabels[A].singular:f.annotationLabels[A].plural;D.push("".concat(g[A].length," ").concat(T))}}}catch($){v={error:$}}finally{try{y&&!y.done&&(b=w.return)&&b.call(w)}finally{if(v)throw v.error}}return D.join(", ")},f.prototype.isOutsideOfText=function(g){var v=g.editor,b=v.renderer.$gutter.getBoundingClientRect();return!(g.clientX>=b.left&&g.clientX<=b.right&&g.clientY>=b.top&&g.clientY<=b.bottom)},f})(l);p.$uid=0,n.GutterTooltip=p}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(t,n,u){var i=t("../lib/dom"),s=t("../lib/event"),d=t("../lib/useragent"),o=200,l=200,r=5;function a(p){var h=p.editor,f=i.createElement("div");f.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",f.textContent=" ";var g=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];g.forEach(function(W){p[W]=this[W]},this),h.on("mousedown",this.onMouseDown.bind(p));var v=h.container,b,D,E,w,y,A,T=0,$,M,O,_,k;this.onDragStart=function(W){if(this.cancelDrag||!v.draggable){var j=this;return setTimeout(function(){j.startSelect(),j.captureMouse(W)},0),W.preventDefault()}y=h.getSelectionRange();var U=W.dataTransfer;U.effectAllowed=h.getReadOnly()?"copy":"copyMove",h.container.appendChild(f),U.setDragImage&&U.setDragImage(f,0,0),setTimeout(function(){h.container.removeChild(f)}),U.clearData(),U.setData("Text",h.session.getTextRange()),M=!0,this.setState("drag")},this.onDragEnd=function(W){if(v.draggable=!1,M=!1,this.setState(null),!h.getReadOnly()){var j=W.dataTransfer.dropEffect;!$&&j=="move"&&h.session.remove(h.getSelectionRange()),h.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(W){if(!(h.getReadOnly()||!N(W.dataTransfer)))return D=W.clientX,E=W.clientY,b||I(),T++,W.dataTransfer.dropEffect=$=H(W),s.preventDefault(W)},this.onDragOver=function(W){if(!(h.getReadOnly()||!N(W.dataTransfer)))return D=W.clientX,E=W.clientY,b||(I(),T++),R!==null&&(R=null),W.dataTransfer.dropEffect=$=H(W),s.preventDefault(W)},this.onDragLeave=function(W){if(T--,T<=0&&b)return F(),$=null,s.preventDefault(W)},this.onDrop=function(W){if(A){var j=W.dataTransfer;if(M)switch($){case"move":y.contains(A.row,A.column)?y={start:A,end:A}:y=h.moveText(y,A);break;case"copy":y=h.moveText(y,A,!0);break}else{var U=j.getData("Text");y={start:A,end:h.session.insert(A,U)},h.focus(),$=null}return F(),s.preventDefault(W)}},s.addListener(v,"dragstart",this.onDragStart.bind(p),h),s.addListener(v,"dragend",this.onDragEnd.bind(p),h),s.addListener(v,"dragenter",this.onDragEnter.bind(p),h),s.addListener(v,"dragover",this.onDragOver.bind(p),h),s.addListener(v,"dragleave",this.onDragLeave.bind(p),h),s.addListener(v,"drop",this.onDrop.bind(p),h);function S(W,j){var U=Date.now(),K=!j||W.row!=j.row,J=!j||W.column!=j.column;if(!_||K||J)h.moveCursorToPosition(W),_=U,k={x:D,y:E};else{var Y=c(k.x,k.y,D,E);Y>r?_=null:U-_>=l&&(h.renderer.scrollCursorIntoView(),_=null)}}function C(W,j){var U=Date.now(),K=h.renderer.layerConfig.lineHeight,J=h.renderer.layerConfig.characterWidth,Y=h.renderer.scroller.getBoundingClientRect(),X={x:{left:D-Y.left,right:Y.right-D},y:{top:E-Y.top,bottom:Y.bottom-E}},q=Math.min(X.x.left,X.x.right),ne=Math.min(X.y.top,X.y.bottom),ue={row:W.row,column:W.column};q/J<=2&&(ue.column+=X.x.left=o&&h.renderer.scrollCursorIntoView(ue):O=U:O=null}function L(){var W=A;A=h.renderer.screenToTextCoordinates(D,E),S(A,W),C(A,W)}function I(){y=h.selection.toOrientedRange(),b=h.session.addMarker(y,"ace_selection",h.getSelectionStyle()),h.clearSelection(),h.isFocused()&&h.renderer.$cursorLayer.setBlinking(!1),clearInterval(w),L(),w=setInterval(L,20),T=0,s.addListener(document,"mousemove",B)}function F(){clearInterval(w),h.session.removeMarker(b),b=null,h.selection.fromOrientedRange(y),h.isFocused()&&!M&&h.$resetCursorStyle(),y=null,A=null,T=0,O=null,_=null,s.removeListener(document,"mousemove",B)}var R=null;function B(){R==null&&(R=setTimeout(function(){R!=null&&b&&F()},20))}function N(W){var j=W.types;return!j||Array.prototype.some.call(j,function(U){return U=="text/plain"||U=="Text"})}function H(W){var j=["copy","copymove","all","uninitialized"],U=["move","copymove","linkmove","all","uninitialized"],K=d.isMac?W.altKey:W.ctrlKey,J="uninitialized";try{J=W.dataTransfer.effectAllowed.toLowerCase()}catch{}var Y="none";return K&&j.indexOf(J)>=0?Y="copy":U.indexOf(J)>=0?Y="move":j.indexOf(J)>=0&&(Y="copy"),Y}}(function(){this.dragWait=function(){var p=Date.now()-this.mousedownEvent.time;p>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var p=this.editor.container;p.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(p){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var p=this.editor,h=p.container;h.draggable=!0,p.renderer.$cursorLayer.setBlinking(!1),p.setStyle("ace_dragging");var f=d.isWin?"default":"move";p.renderer.setCursorStyle(f),this.setState("dragReady")},this.onMouseDrag=function(p){var h=this.editor.container;if(d.isIE&&this.state=="dragReady"){var f=c(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);f>3&&h.dragDrop()}if(this.state==="dragWait"){var f=c(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);f>0&&(h.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(p){if(this.$dragEnabled){this.mousedownEvent=p;var h=this.editor,f=p.inSelection(),g=p.getButton(),v=p.domEvent.detail||1;if(v===1&&g===0&&f){if(p.editor.inMultiSelectMode&&(p.getAccelKey()||p.getShiftKey()))return;this.mousedownEvent.time=Date.now();var b=p.domEvent.target||p.domEvent.srcElement;if("unselectable"in b&&(b.unselectable="on"),h.getDragDelay()){if(d.isWebKit){this.cancelDrag=!0;var D=h.container;D.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(p,this.onMouseDrag.bind(this)),p.defaultPrevented=!0}}}}).call(a.prototype);function c(p,h,f,g){return Math.sqrt(Math.pow(f-p,2)+Math.pow(g-h,2))}n.DragdropHandler=a}),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(t,n,u){var i=t("./mouse_event").MouseEvent,s=t("../lib/event"),d=t("../lib/dom");n.addTouchListeners=function(o,l){var r="scroll",a,c,p,h,f,g,v=0,b,D=0,E=0,w=0,y,A;function T(){var S=window.navigator&&window.navigator.clipboard,C=!1,L=function(){var R=l.getCopyText(),B=l.session.getUndoManager().hasUndo();A.replaceChild(d.buildDom(C?["span",!R&&I("selectall")&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],R&&I("copy")&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],R&&I("cut")&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],S&&I("paste")&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],B&&I("undo")&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],I("find")&&["span",{class:"ace_mobile-button",action:"find"},"Find"],I("openCommandPalette")&&["span",{class:"ace_mobile-button",action:"openCommandPalette"},"Palette"]]:["span"]),A.firstChild)},I=function(R){return l.commands.canExecute(R,l)},F=function(R){var B=R.target.getAttribute("action");if(B=="more"||!C)return C=!C,L();B=="paste"?S.readText().then(function(N){l.execCommand(B,N)}):B&&((B=="cut"||B=="copy")&&(S?S.writeText(l.getCopyText()):document.execCommand("copy")),l.execCommand(B)),A.firstChild.style.display="none",C=!1,B!="openCommandPalette"&&l.focus()};A=d.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(R){r="menu",R.stopPropagation(),R.preventDefault(),l.textInput.focus()},ontouchend:function(R){R.stopPropagation(),R.preventDefault(),F(R)},onclick:F},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],l.container)}function $(){if(!l.getOption("enableMobileMenu")){A&&M();return}A||T();var S=l.selection.cursor,C=l.renderer.textToScreenCoordinates(S.row,S.column),L=l.renderer.textToScreenCoordinates(0,0).pageX,I=l.renderer.scrollLeft,F=l.container.getBoundingClientRect();A.style.top=C.pageY-F.top-3+"px",C.pageX-F.left=2?l.selection.getLineRange(b.row):l.session.getBracketRange(b);S&&!S.isEmpty()?l.selection.setRange(S):l.selection.selectWord(),r="wait"}s.addListener(o,"contextmenu",function(S){if(y){var C=l.textInput.getElement();C.focus()}},l),s.addListener(o,"touchstart",function(S){var C=S.touches;if(f||C.length>1){clearTimeout(f),f=null,p=-1,r="zoom";return}y=l.$mouseHandler.isMousePressed=!0;var L=l.renderer.layerConfig.lineHeight,I=l.renderer.layerConfig.lineHeight,F=S.timeStamp;h=F;var R=C[0],B=R.clientX,N=R.clientY;Math.abs(a-B)+Math.abs(c-N)>L&&(p=-1),a=S.clientX=B,c=S.clientY=N,E=w=0;var H=new i(S,l);if(b=H.getDocumentPosition(),F-p<500&&C.length==1&&!v)D++,S.preventDefault(),S.button=0,_();else{D=0;var W=l.selection.cursor,j=l.selection.isEmpty()?W:l.selection.anchor,U=l.renderer.$cursorLayer.getPixelPosition(W,!0),K=l.renderer.$cursorLayer.getPixelPosition(j,!0),J=l.renderer.scroller.getBoundingClientRect(),Y=l.renderer.layerConfig.offset,X=l.renderer.scrollLeft,q=function(Se,Oe){return Se=Se/I,Oe=Oe/L-.75,Se*Se+Oe*Oe};if(S.clientXue?"cursor":"anchor"),ue<3.5?r="anchor":ne<3.5?r="cursor":r="scroll",f=setTimeout(O,450)}p=F},l),s.addListener(o,"touchend",function(S){y=l.$mouseHandler.isMousePressed=!1,g&&clearInterval(g),r=="zoom"?(r="",v=0):f?(l.selection.moveToPosition(b),v=0,$()):r=="scroll"?(k(),M()):$(),clearTimeout(f),f=null},l),s.addListener(o,"touchmove",function(S){f&&(clearTimeout(f),f=null);var C=S.touches;if(!(C.length>1||r=="zoom")){var L=C[0],I=a-L.clientX,F=c-L.clientY;if(r=="wait")if(I*I+F*F>4)r="cursor";else return S.preventDefault();a=L.clientX,c=L.clientY,S.clientX=L.clientX,S.clientY=L.clientY;var R=S.timeStamp,B=R-h;if(h=R,r=="scroll"){var N=new i(S,l);N.speed=1,N.wheelX=I,N.wheelY=F,10*Math.abs(I)0)if(ue==16){for(Ae=Oe;Ae-1){for(Ae=Oe;Ae=0&&K[nn]==y;nn--)j[nn]=i}}}function B(W,j,U){if(!(s=W){for(Y=J+1;Y=W;)Y++;for(X=J,q=Y-1;X=j.length||(Y=U[K-1])!=g&&Y!=v||(X=j[K+1])!=g&&X!=v?b:(d&&(X=v),X==Y?X:b);case T:return Y=K>0?U[K-1]:D,Y==g&&K+10&&U[K-1]==g)return g;if(d)return b;for(ne=K+1,q=j.length;ne=1425&&ue<=2303||ue==64286;if(Y=j[ne],Se&&(Y==f||Y==w))return f}return K<1||(Y=j[K-1])==D?b:U[K-1];case D:return d=!1,o=!0,i;case E:return l=!0,b;case O:case _:case S:case C:case k:d=!1;case L:return b}}function H(W){var j=W.charCodeAt(0),U=j>>8;return U==0?j>191?h:I[j]:U==5?/[\u0591-\u05f4]/.test(W)?f:h:U==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(W)?M:/[\u0660-\u0669\u066b-\u066c]/.test(W)?v:j==1642?$:/[\u06f0-\u06f9]/.test(W)?g:w:U==32&&j<=8287?F[j&255]:U==254&&j>=65136?w:b}n.L=h,n.R=f,n.EN=g,n.ON_R=3,n.AN=4,n.R_H=5,n.B=6,n.RLE=7,n.DOT="·",n.doBidiReorder=function(W,j,U){if(W.length<2)return{};var K=W.split(""),J=new Array(K.length),Y=new Array(K.length),X=[];i=U?p:c,R(K,X,K.length,j);for(var q=0;qw&&j[q]0&&K[q-1]==="ل"&&/\u0622|\u0623|\u0625|\u0627/.test(K[q])&&(X[q-1]=X[q]=n.R_H,q++);K[K.length-1]===n.DOT&&(X[K.length-1]=n.B),K[0]==="‫"&&(X[0]=n.RLE);for(var q=0;q=0&&(r=this.session.$docRowCache[c])}return r},l.prototype.getSplitIndex=function(){var r=0,a=this.session.$screenRowCache;if(a.length)for(var c,p=this.session.$getRowCacheIndex(a,this.currentRow);this.currentRow-r>0&&(c=this.session.$getRowCacheIndex(a,this.currentRow-r-1),c===p);)p=c,r++;else r=this.currentRow;return r},l.prototype.updateRowLine=function(r,a){r===void 0&&(r=this.getDocumentRow());var c=r===this.session.getLength()-1,p=c?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(r),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var h=this.session.$wrapData[r];h&&(a===void 0&&(a=this.getSplitIndex()),a>0&&h.length?(this.wrapIndent=h.indent,this.wrapOffset=this.wrapIndent*this.charWidths[i.L],this.line=aa?this.session.getOverwrite()?r:r-1:a,p=i.getVisualFromLogicalIdx(c,this.bidiMap),h=this.bidiMap.bidiLevels,f=0;!this.session.getOverwrite()&&r<=a&&h[p]%2!==0&&p++;for(var g=0;ga&&h[p]%2===0&&(f+=this.charWidths[h[p]]),this.wrapIndent&&(f+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(f+=this.rtlLineOffset),f},l.prototype.getSelections=function(r,a){var c=this.bidiMap,p=c.bidiLevels,h,f=[],g=0,v=Math.min(r,a)-this.wrapIndent,b=Math.max(r,a)-this.wrapIndent,D=!1,E=!1,w=0;this.wrapIndent&&(g+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var y,A=0;A=v&&yp+g/2;){if(p+=g,h===f.length-1){g=0;break}g=this.charWidths[f[++h]]}return h>0&&f[h-1]%2!==0&&f[h]%2===0?(c0&&f[h-1]%2===0&&f[h]%2!==0?a=1+(c>p?this.bidiMap.logicalFromVisual[h]:this.bidiMap.logicalFromVisual[h-1]):this.isRtlDir&&h===f.length-1&&g===0&&f[h-1]%2===0||!this.isRtlDir&&h===0&&f[h]%2!==0?a=1+this.bidiMap.logicalFromVisual[h]:(h>0&&f[h-1]%2!==0&&g!==0&&h--,a=this.bidiMap.logicalFromVisual[h]),a===0&&this.isRtlDir&&a++,a+this.wrapIndent},l})();n.BidiHandler=o}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(t,n,u){var i=t("./lib/oop"),s=t("./lib/lang"),d=t("./lib/event_emitter").EventEmitter,o=t("./range").Range,l=(function(){function r(a){this.session=a,this.doc=a.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var c=this;this.cursor.on("change",function(p){c.$cursorChanged=!0,c.$silent||c._emit("changeCursor"),!c.$isEmpty&&!c.$silent&&c._emit("changeSelection"),!c.$keepDesiredColumnOnChange&&p.old.column!=p.value.column&&(c.$desiredColumn=null)}),this.anchor.on("change",function(){c.$anchorChanged=!0,!c.$isEmpty&&!c.$silent&&c._emit("changeSelection")})}return r.prototype.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},r.prototype.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},r.prototype.getCursor=function(){return this.lead.getPosition()},r.prototype.setAnchor=function(a,c){this.$isEmpty=!1,this.anchor.setPosition(a,c)},r.prototype.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},r.prototype.getSelectionLead=function(){return this.lead.getPosition()},r.prototype.isBackwards=function(){var a=this.anchor,c=this.lead;return a.row>c.row||a.row==c.row&&a.column>c.column},r.prototype.getRange=function(){var a=this.anchor,c=this.lead;return this.$isEmpty?o.fromPoints(c,c):this.isBackwards()?o.fromPoints(c,a):o.fromPoints(a,c)},r.prototype.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},r.prototype.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},r.prototype.setRange=function(a,c){var p=c?a.end:a.start,h=c?a.start:a.end;this.$setSelection(p.row,p.column,h.row,h.column)},r.prototype.$setSelection=function(a,c,p,h){if(!this.$silent){var f=this.$isEmpty,g=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(a,c),this.cursor.setPosition(p,h),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||f!=this.$isEmpty||g)&&this._emit("changeSelection")}},r.prototype.$moveSelection=function(a){var c=this.lead;this.$isEmpty&&this.setSelectionAnchor(c.row,c.column),a.call(this)},r.prototype.selectTo=function(a,c){this.$moveSelection(function(){this.moveCursorTo(a,c)})},r.prototype.selectToPosition=function(a){this.$moveSelection(function(){this.moveCursorToPosition(a)})},r.prototype.moveTo=function(a,c){this.clearSelection(),this.moveCursorTo(a,c)},r.prototype.moveToPosition=function(a){this.clearSelection(),this.moveCursorToPosition(a)},r.prototype.selectUp=function(){this.$moveSelection(this.moveCursorUp)},r.prototype.selectDown=function(){this.$moveSelection(this.moveCursorDown)},r.prototype.selectRight=function(){this.$moveSelection(this.moveCursorRight)},r.prototype.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},r.prototype.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},r.prototype.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},r.prototype.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},r.prototype.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},r.prototype.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},r.prototype.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},r.prototype.getWordRange=function(a,c){if(typeof c>"u"){var p=a||this.lead;a=p.row,c=p.column}return this.session.getWordRange(a,c)},r.prototype.selectWord=function(){this.setSelectionRange(this.getWordRange())},r.prototype.selectAWord=function(){var a=this.getCursor(),c=this.session.getAWordRange(a.row,a.column);this.setSelectionRange(c)},r.prototype.getLineRange=function(a,c){var p=typeof a=="number"?a:this.lead.row,h,f=this.session.getFoldLine(p);return f?(p=f.start.row,h=f.end.row):h=p,c===!0?new o(p,0,h,this.session.getLine(h).length):new o(p,0,h+1,0)},r.prototype.selectLine=function(){this.setSelectionRange(this.getLineRange())},r.prototype.moveCursorUp=function(){this.moveCursorBy(-1,0)},r.prototype.moveCursorDown=function(){this.moveCursorBy(1,0)},r.prototype.wouldMoveIntoSoftTab=function(a,c,p){var h=a.column,f=a.column+c;return p<0&&(h=a.column-c,f=a.column),this.session.isTabStop(a)&&this.doc.getLine(a.row).slice(h,f).split(" ").length-1==c},r.prototype.moveCursorLeft=function(){var a=this.lead.getPosition(),c;if(c=this.session.getFoldAt(a.row,a.column,-1))this.moveCursorTo(c.start.row,c.start.column);else if(a.column===0)a.row>0&&this.moveCursorTo(a.row-1,this.doc.getLine(a.row-1).length);else{var p=this.session.getTabSize();this.wouldMoveIntoSoftTab(a,p,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-p):this.moveCursorBy(0,-1)}},r.prototype.moveCursorRight=function(){var a=this.lead.getPosition(),c;if(c=this.session.getFoldAt(a.row,a.column,1))this.moveCursorTo(c.end.row,c.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(c.column=h)}}this.moveCursorTo(c.row,c.column)},r.prototype.moveCursorFileEnd=function(){var a=this.doc.getLength()-1,c=this.doc.getLine(a).length;this.moveCursorTo(a,c)},r.prototype.moveCursorFileStart=function(){this.moveCursorTo(0,0)},r.prototype.moveCursorLongWordRight=function(){var a=this.lead.row,c=this.lead.column,p=this.doc.getLine(a),h=p.substring(c);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var f=this.session.getFoldAt(a,c,1);if(f){this.moveCursorTo(f.end.row,f.end.column);return}if(this.session.nonTokenRe.exec(h)&&(c+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,h=p.substring(c)),c>=p.length){this.moveCursorTo(a,p.length),this.moveCursorRight(),a0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(f)&&(c-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(a,c)},r.prototype.$shortWordEndIndex=function(a){var c=0,p,h=/\s/,f=this.session.tokenRe;if(f.lastIndex=0,this.session.tokenRe.exec(a))c=this.session.tokenRe.lastIndex;else{for(;(p=a[c])&&h.test(p);)c++;if(c<1){for(f.lastIndex=0;(p=a[c])&&!f.test(p);)if(f.lastIndex=0,c++,h.test(p))if(c>2){c--;break}else{for(;(p=a[c])&&h.test(p);)c++;if(c>2)break}}}return f.lastIndex=0,c},r.prototype.moveCursorShortWordRight=function(){var a=this.lead.row,c=this.lead.column,p=this.doc.getLine(a),h=p.substring(c),f=this.session.getFoldAt(a,c,1);if(f)return this.moveCursorTo(f.end.row,f.end.column);if(c==p.length){var g=this.doc.getLength();do a++,h=this.doc.getLine(a);while(a0&&/^\s*$/.test(h));c=h.length,/\s+$/.test(h)||(h="")}var f=s.stringReverse(h),g=this.$shortWordEndIndex(f);return this.moveCursorTo(a,c-g)},r.prototype.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},r.prototype.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},r.prototype.moveCursorBy=function(a,c){var p=this.session.documentToScreenPosition(this.lead.row,this.lead.column),h;if(c===0&&(a!==0&&(this.session.$bidiHandler.isBidiRow(p.row,this.lead.row)?(h=this.session.$bidiHandler.getPosLeft(p.column),p.column=Math.round(h/this.session.$bidiHandler.charWidths[0])):h=p.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?p.column=this.$desiredColumn:this.$desiredColumn=p.column),a!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var f=this.session.lineWidgets[this.lead.row];a<0?a-=f.rowsAbove||0:a>0&&(a+=f.rowCount-(f.rowsAbove||0))}var g=this.session.screenToDocumentPosition(p.row+a,p.column,h);a!==0&&c===0&&g.row===this.lead.row&&(g.column,this.lead.column),this.moveCursorTo(g.row,g.column+c,c===0)},r.prototype.moveCursorToPosition=function(a){this.moveCursorTo(a.row,a.column)},r.prototype.moveCursorTo=function(a,c,p){var h=this.session.getFoldAt(a,c,1);h&&(a=h.start.row,c=h.start.column),this.$keepDesiredColumnOnChange=!0;var f=this.session.getLine(a);/[\uDC00-\uDFFF]/.test(f.charAt(c))&&f.charAt(c-1)&&(this.lead.row==a&&this.lead.column==c+1?c=c-1:c=c+1),this.lead.setPosition(a,c),this.$keepDesiredColumnOnChange=!1,p||(this.$desiredColumn=null)},r.prototype.moveCursorToScreen=function(a,c,p){var h=this.session.screenToDocumentPosition(a,c);this.moveCursorTo(h.row,h.column,p)},r.prototype.detach=function(){this.lead.detach(),this.anchor.detach()},r.prototype.fromOrientedRange=function(a){this.setSelectionRange(a,a.cursor==a.start),this.$desiredColumn=a.desiredColumn||this.$desiredColumn},r.prototype.toOrientedRange=function(a){var c=this.getRange();return a?(a.start.column=c.start.column,a.start.row=c.start.row,a.end.column=c.end.column,a.end.row=c.end.row):a=c,a.cursor=this.isBackwards()?a.start:a.end,a.desiredColumn=this.$desiredColumn,a},r.prototype.getRangeOfMovements=function(a){var c=this.getCursor();try{a(this);var p=this.getCursor();return o.fromPoints(c,p)}catch{return o.fromPoints(c,c)}finally{this.moveCursorToPosition(c)}},r.prototype.toJSON=function(){if(this.rangeCount)var a=this.ranges.map(function(c){var p=c.clone();return p.isBackwards=c.cursor==c.start,p});else{var a=this.getRange();a.isBackwards=this.isBackwards()}return a},r.prototype.fromJSON=function(a){if(a.start==null)if(this.rangeList&&a.length>1){this.toSingleRange(a[0]);for(var c=a.length;c--;){var p=o.fromPoints(a[c].start,a[c].end);a[c].isBackwards&&(p.cursor=p.start),this.addRange(p,!0)}return}else a=a[0];this.rangeList&&this.toSingleRange(a),this.setSelectionRange(a,a.isBackwards)},r.prototype.isEqual=function(a){if((a.length||this.rangeCount)&&a.length!=this.rangeCount)return!1;if(!a.length||!this.ranges)return this.getRange().isEqual(a);for(var c=this.ranges.length;c--;)if(!this.ranges[c].isEqual(a[c]))return!1;return!0},r})();l.prototype.setSelectionAnchor=l.prototype.setAnchor,l.prototype.getSelectionAnchor=l.prototype.getAnchor,l.prototype.setSelectionRange=l.prototype.setRange,i.implement(l.prototype,d),n.Selection=l}),ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"],function(t,n,u){var i=t("./lib/report_error").reportError,s=2e3,d=(function(){function o(l){this.splitRegex,this.states=l,this.regExps={},this.matchMappings={};for(var r in this.states){for(var a=this.states[r],c=[],p=0,h=this.matchMappings[r]={defaultToken:"text"},f="g",g=[],v=0;v1?b.onMatch=this.$applyToken:b.onMatch=b.token),E>1&&(/\\\d/.test(b.regex)?D=b.regex.replace(/\\([0-9]+)/g,function(w,y){return"\\"+(parseInt(y,10)+p+1)}):(E=1,D=this.removeCapturingGroups(b.regex)),!b.splitRegex&&typeof b.token!="string"&&g.push(b)),h[p]=v,p+=E,c.push(D),b.onMatch||(b.onMatch=null)}}c.length||(h[0]=0,c.push("$")),g.forEach(function(w){w.splitRegex=this.createSplitterRegexp(w.regex,f)},this),this.regExps[r]=new RegExp("("+c.join(")|(")+")|($)",f)}}return o.prototype.$setMaxTokenCount=function(l){s=l|0},o.prototype.$applyToken=function(l){var r=this.splitRegex.exec(l).slice(1),a=this.token.apply(this,r);if(typeof a=="string")return[{type:a,value:l}];for(var c=[],p=0,h=a.length;pb){var $=l.substring(b,T-A.length);E.type==w?E.value+=$:(E.type&&v.push(E),E={type:w,value:$})}for(var M=0;Ms){for(D>2*l.length&&this.reportError("infinite loop with in ace tokenizer",{startState:r,line:l});b1&&a[0]!==c&&a.unshift("#tmp",c),{tokens:v,state:a.length?a:c}},o})();d.prototype.reportError=i,n.Tokenizer=d}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"],function(t,n,u){var i=t("../lib/deep_copy").deepCopy,s;s=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}},(function(){this.addRules=function(l,r){if(!r){for(var a in l)this.$rules[a]=l[a];return}for(var a in l){for(var c=l[a],p=0;p=this.$rowTokens.length;){if(this.$row+=1,o||(o=this.$session.getLength()),this.$row>=o)return this.$row=o-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},d.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},d.prototype.getCurrentTokenRow=function(){return this.$row},d.prototype.getCurrentTokenColumn=function(){var o=this.$rowTokens,l=this.$tokenIndex,r=o[l].start;if(r!==void 0)return r;for(r=0;l>0;)l-=1,r+=o[l].value.length;return r},d.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},d.prototype.getCurrentTokenRange=function(){var o=this.$rowTokens[this.$tokenIndex],l=this.getCurrentTokenColumn();return new i(this.$row,l,this.$row,l+o.value.length)},d})();n.TokenIterator=s}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(t,n,u){var i=t("../../lib/oop"),s=t("../behaviour").Behaviour,d=t("../../token_iterator").TokenIterator,o=t("../../lib/lang"),l=["text","paren.rparen","rparen","paren","punctuation.operator"],r=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],a,c={},p={'"':'"',"'":"'"},h=function(v){var b=-1;if(v.multiSelect&&(b=v.selection.index,c.rangeCount!=v.multiSelect.rangeCount&&(c={rangeCount:v.multiSelect.rangeCount})),c[b])return a=c[b];a=c[b]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},f=function(v,b,D,E){var w=v.end.row-v.start.row;return{text:D+b+E,selection:[0,v.start.column+1,w,v.end.column+(w?0:1)]}},g;g=function(v){v=v||{},this.add("braces","insertion",function(b,D,E,w,y){var A=E.getCursorPosition(),T=w.doc.getLine(A.row);if(y=="{"){h(E);var $=E.getSelectionRange(),M=w.doc.getTextRange($),O=w.getTokenAt(A.row,A.column);if(M!==""&&M!=="{"&&E.getWrapBehavioursEnabled())return f($,M,"{","}");if(O&&/(?:string)\.quasi|\.xml/.test(O.type)){var _=[/tag\-(?:open|name)/,/attribute\-name/];return _.some(function(R){return R.test(O.type)})||/(string)\.quasi/.test(O.type)&&O.value[A.column-O.start-1]!=="$"?void 0:(g.recordAutoInsert(E,w,"}"),{text:"{}",selection:[1,1]})}else if(g.isSaneInsertion(E,w))return/[\]\}\)]/.test(T[A.column])||E.inMultiSelectMode||v.braces?(g.recordAutoInsert(E,w,"}"),{text:"{}",selection:[1,1]}):(g.recordMaybeInsert(E,w,"{"),{text:"{",selection:[1,1]})}else if(y=="}"){h(E);var k=T.substring(A.column,A.column+1);if(k=="}"){var S=w.$findOpeningBracket("}",{column:A.column+1,row:A.row});if(S!==null&&g.isAutoInsertedClosing(A,T,y))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else if(y==` +`;A!=this.text.value&&(this.text.value=this.lastValue=A);var T=4,x=4+(y.length||(this.host.selection.isEmpty()?0:1));(this.lastSelectionStart!=T||this.lastSelectionEnd!=x)&&this.text.setSelectionRange(T,x),this.lastSelectionStart=T,this.lastSelectionEnd=x}},w.prototype.$resetSelection=function(){var y=this;if(!(this.inComposition||this.sendingText)&&!(!this.$isFocused&&!this.afterContextMenu)){this.inComposition=!0;var A=0,T=0,x="",M=function(R,B){for(var N=B,z=1;z<=R-y.rowStart&&z<2*y.numberOfExtraLines+1;z++)N+=y.host.session.getLine(R-z).length+1;return N};if(this.host.session){var O=this.host.selection,_=O.getRange(),k=O.cursor.row;k===this.rowEnd+1?(this.rowStart=this.rowEnd+1,this.rowEnd=this.rowStart+2*this.numberOfExtraLines):k===this.rowStart-1?(this.rowEnd=this.rowStart-1,this.rowStart=this.rowEnd-2*this.numberOfExtraLines):(kthis.rowEnd+1)&&(this.rowStart=k>this.numberOfExtraLines?k-this.numberOfExtraLines:0,this.rowEnd=k>this.numberOfExtraLines?k+this.numberOfExtraLines:2*this.numberOfExtraLines);for(var S=[],C=this.rowStart;C<=this.rowEnd;C++)S.push(this.host.session.getLine(C));if(x=S.join(` +`),A=M(_.start.row,_.start.column),T=M(_.end.row,_.end.column),_.start.rowthis.rowEnd){var I=this.host.session.getLine(this.rowEnd+1);T=_.end.row>this.rowEnd+1?I.length:_.end.column,T+=x.length+1,x=x+` +`+I}else D&&k>0&&(x=` +`+x,T+=1,A+=1);x.length>u&&(A1),c.preventDefault()},a.prototype.startSelect=function(c,p){c=c||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var u=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?u.selection.selectToPosition(c):p||u.selection.moveToPosition(c),p||this.select(),u.setStyle("ace_selecting"),this.setState("select"))},a.prototype.select=function(){var c,p=this.editor,u=p.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var f=this.$clickSelection.comparePoint(u);if(f==-1)c=this.$clickSelection.end;else if(f==1)c=this.$clickSelection.start;else{var g=r(this.$clickSelection,u,p.session);u=g.cursor,c=g.anchor}p.selection.setSelectionAnchor(c.row,c.column)}p.selection.selectToPosition(u),p.renderer.scrollCursorIntoView()},a.prototype.extendSelectionBy=function(c){var p,u=this.editor,f=u.renderer.screenToTextCoordinates(this.x,this.y),g=u.selection[c](f.row,f.column);if(this.$clickSelection){var v=this.$clickSelection.comparePoint(g.start),b=this.$clickSelection.comparePoint(g.end);if(v==-1&&b<=0)p=this.$clickSelection.end,(g.end.row!=f.row||g.end.column!=f.column)&&(f=g.start);else if(b==1&&v>=0)p=this.$clickSelection.start,(g.start.row!=f.row||g.start.column!=f.column)&&(f=g.end);else if(v==-1&&b==1)f=g.end,p=g.start;else{var D=r(this.$clickSelection,f,u.session);f=D.cursor,p=D.anchor}u.selection.setSelectionAnchor(p.row,p.column)}u.selection.selectToPosition(f),u.renderer.scrollCursorIntoView()},a.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},a.prototype.focusWait=function(){var c=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),p=Date.now();(c>s||p-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},a.prototype.onDoubleClick=function(c){var p=c.getDocumentPosition(),u=this.editor,f=u.session,g=f.getBracketRange(p);g?(g.isEmpty()&&(g.start.column--,g.end.column++),this.setState("select")):(g=u.selection.getWordRange(p.row,p.column),this.setState("selectByWords")),this.$clickSelection=g,this.select()},a.prototype.onTripleClick=function(c){var p=c.getDocumentPosition(),u=this.editor;this.setState("selectByLines");var f=u.getSelectionRange();f.isMultiLine()&&f.contains(p.row,p.column)?(this.$clickSelection=u.selection.getLineRange(f.start.row),this.$clickSelection.end=u.selection.getLineRange(f.end.row).end):this.$clickSelection=u.selection.getLineRange(p.row),this.select()},a.prototype.onQuadClick=function(c){var p=this.editor;p.selectAll(),this.$clickSelection=p.getSelectionRange(),this.setState("selectAll")},a.prototype.onMouseWheel=function(c){if(!c.getAccelKey()){c.getShiftKey()&&c.wheelY&&!c.wheelX&&(c.wheelX=c.wheelY,c.wheelY=0);var p=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var u=this.$lastScroll,f=c.domEvent.timeStamp,g=f-u.t,v=g?c.wheelX/g:u.vx,b=g?c.wheelY/g:u.vy;g=1&&p.renderer.isScrollableBy(c.wheelX*c.speed,0)&&(E=!0),D<=1&&p.renderer.isScrollableBy(0,c.wheelY*c.speed)&&(E=!0),E)u.allowed=f;else if(f-u.allowedd.clientHeight;o||s.preventDefault()}}),ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range","ace/lib/scroll"],function(t,n,h){var i=this&&this.__extends||(function(){var f=function(g,v){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,D){b.__proto__=D}||function(b,D){for(var E in D)Object.prototype.hasOwnProperty.call(D,E)&&(b[E]=D[E])},f(g,v)};return function(g,v){if(typeof v!="function"&&v!==null)throw new TypeError("Class extends value "+String(v)+" is not a constructor or null");f(g,v);function b(){this.constructor=g}g.prototype=v===null?Object.create(v):(b.prototype=v.prototype,new b)}})(),s=this&&this.__values||function(f){var g=typeof Symbol=="function"&&Symbol.iterator,v=g&&f[g],b=0;if(v)return v.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&b>=f.length&&(f=void 0),{value:f&&f[b++],done:!f}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")},d=t("./lib/dom");t("./lib/event");var o=t("./range").Range,l=t("./lib/scroll").preventParentScroll,r="ace_tooltip",a=(function(){function f(g){this.isOpen=!1,this.$element=null,this.$parentNode=g}return f.prototype.$init=function(){return this.$element=d.createElement("div"),this.$element.className=r,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},f.prototype.getElement=function(){return this.$element||this.$init()},f.prototype.setText=function(g){this.getElement().textContent=g},f.prototype.setHtml=function(g){this.getElement().innerHTML=g},f.prototype.setPosition=function(g,v){this.getElement().style.left=g+"px",this.getElement().style.top=v+"px"},f.prototype.setClassName=function(g){d.addCssClass(this.getElement(),g)},f.prototype.setTheme=function(g){this.theme&&(this.theme.isDark&&d.removeCssClass(this.getElement(),"ace_dark"),this.theme.cssClass&&d.removeCssClass(this.getElement(),this.theme.cssClass)),g.isDark&&d.addCssClass(this.getElement(),"ace_dark"),g.cssClass&&d.addCssClass(this.getElement(),g.cssClass),this.theme={isDark:g.isDark,cssClass:g.cssClass}},f.prototype.show=function(g,v,b){g!=null&&this.setText(g),v!=null&&b!=null&&this.setPosition(v,b),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},f.prototype.hide=function(g){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=r,this.isOpen=!1)},f.prototype.getHeight=function(){return this.getElement().offsetHeight},f.prototype.getWidth=function(){return this.getElement().offsetWidth},f.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},f})(),c=(function(){function f(){this.popups=[]}return f.prototype.addPopup=function(g){this.popups.push(g),this.updatePopups()},f.prototype.removePopup=function(g){var v=this.popups.indexOf(g);v!==-1&&(this.popups.splice(v,1),this.updatePopups())},f.prototype.updatePopups=function(){var g,v,b,D;this.popups.sort(function(_,k){return k.priority-_.priority});var E=[];try{for(var w=s(this.popups),y=w.next();!y.done;y=w.next()){var A=y.value,T=!0;try{for(var x=(b=void 0,s(E)),M=x.next();!M.done;M=x.next()){var O=M.value;if(this.doPopupsOverlap(O,A)){T=!1;break}}}catch(_){b={error:_}}finally{try{M&&!M.done&&(D=x.return)&&D.call(x)}finally{if(b)throw b.error}}T?E.push(A):A.hide()}}catch(_){g={error:_}}finally{try{y&&!y.done&&(v=w.return)&&v.call(w)}finally{if(g)throw g.error}}},f.prototype.doPopupsOverlap=function(g,v){var b=g.getElement().getBoundingClientRect(),D=v.getElement().getBoundingClientRect();return b.leftD.left&&b.topD.top},f})(),p=new c;n.popupManager=p,n.Tooltip=a;var u=(function(f){i(g,f);function g(v){v===void 0&&(v=document.body);var b=f.call(this,v)||this;b.timeout=void 0,b.lastT=0,b.idleTime=350,b.lastEvent=void 0,b.onMouseOut=b.onMouseOut.bind(b),b.onMouseMove=b.onMouseMove.bind(b),b.waitForHover=b.waitForHover.bind(b),b.hide=b.hide.bind(b);var D=b.getElement();return D.style.whiteSpace="pre-wrap",D.style.pointerEvents="auto",D.addEventListener("mouseout",b.onMouseOut),D.tabIndex=-1,D.addEventListener("blur",function(){D.contains(document.activeElement)||this.hide()}.bind(b)),D.addEventListener("wheel",l),b}return g.prototype.addToEditor=function(v){v.on("mousemove",this.onMouseMove),v.on("mousedown",this.hide);var b=v.renderer.getMouseEventTarget();b&&typeof b.removeEventListener=="function"&&b.addEventListener("mouseout",this.onMouseOut,!0)},g.prototype.removeFromEditor=function(v){v.off("mousemove",this.onMouseMove),v.off("mousedown",this.hide);var b=v.renderer.getMouseEventTarget();b&&typeof b.removeEventListener=="function"&&b.removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},g.prototype.onMouseMove=function(v,b){this.lastEvent=v,this.lastT=Date.now();var D=b.$mouseHandler.isMousePressed;if(this.isOpen){var E=this.lastEvent&&this.lastEvent.getDocumentPosition();(!this.range||!this.range.contains(E.row,E.column)||D||this.isOutsideOfText(this.lastEvent))&&this.hide()}this.timeout||D||(this.lastEvent=v,this.timeout=setTimeout(this.waitForHover,this.idleTime))},g.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var v=Date.now()-this.lastT;if(this.idleTime-v>10){this.timeout=setTimeout(this.waitForHover,this.idleTime-v);return}this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor)},g.prototype.isOutsideOfText=function(v){var b=v.editor,D=v.getDocumentPosition(),E=b.session.getLine(D.row);if(D.column==E.length){var w=b.renderer.pixelToScreenCoordinates(v.clientX,v.clientY),y=b.session.documentToScreenPosition(D.row,D.column);if(y.column!=w.column||y.row!=w.row)return!0}return!1},g.prototype.setDataProvider=function(v){this.$gatherData=v},g.prototype.showForRange=function(v,b,D,E){if(!(E&&E!=this.lastEvent)&&!(this.isOpen&&document.activeElement==this.getElement())){var w=v.renderer;this.isOpen||(p.addPopup(this),this.$registerCloseEvents(),this.setTheme(w.theme)),this.isOpen=!0,this.range=o.fromPoints(b.start,b.end);var y=w.textToScreenCoordinates(b.start.row,b.start.column),A=w.scroller.getBoundingClientRect();y.pageX=u.length&&(u=void 0),{value:u&&u[v++],done:!u}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")},d=t("../lib/dom"),o=t("./mouse_event").MouseEvent,l=t("../tooltip").HoverTooltip,r=t("../config").nls,a=t("../range").Range;function c(u){var f=u.editor,g=f.renderer.$gutterLayer;u.$tooltip=new p(f),u.$tooltip.addToEditor(f),u.$tooltip.setDataProvider(function(v,b){var D=v.getDocumentPosition().row;u.$tooltip.showTooltip(D)}),u.editor.setDefaultHandler("guttermousedown",function(v){if(!(!f.isFocused()||v.getButton()!=0)){var b=g.getRegion(v);if(b!="foldWidgets"){var D=v.getDocumentPosition().row,E=f.session.selection;if(v.getShiftKey())E.selectTo(D,0);else{if(v.domEvent.detail==2)return f.selectAll(),v.preventDefault();u.$clickSelection=f.selection.getLineRange(D)}return u.setState("selectByLines"),u.captureMouse(v),v.preventDefault()}}})}n.GutterHandler=c;var p=(function(u){i(f,u);function f(g){var v=u.call(this,g.container)||this;v.id="gt"+ ++f.$uid,v.editor=g,v.visibleTooltipRow;var b=v.getElement();return b.setAttribute("role","tooltip"),b.setAttribute("id",v.id),b.style.pointerEvents="auto",v.idleTime=50,v.onDomMouseMove=v.onDomMouseMove.bind(v),v.onDomMouseOut=v.onDomMouseOut.bind(v),v.setClassName("ace_gutter-tooltip"),v}return f.prototype.onDomMouseMove=function(g){var v=new o(g,this.editor);this.onMouseMove(v,this.editor)},f.prototype.onDomMouseOut=function(g){var v=new o(g,this.editor);this.onMouseOut(v)},f.prototype.addToEditor=function(g){var v=g.renderer.$gutter;v.addEventListener("mousemove",this.onDomMouseMove),v.addEventListener("mouseout",this.onDomMouseOut),u.prototype.addToEditor.call(this,g)},f.prototype.removeFromEditor=function(g){var v=g.renderer.$gutter;v.removeEventListener("mousemove",this.onDomMouseMove),v.removeEventListener("mouseout",this.onDomMouseOut),u.prototype.removeFromEditor.call(this,g)},f.prototype.destroy=function(){this.editor&&this.removeFromEditor(this.editor),u.prototype.destroy.call(this)},Object.defineProperty(f,"annotationLabels",{get:function(){return{error:{singular:r("gutter-tooltip.aria-label.error.singular","error"),plural:r("gutter-tooltip.aria-label.error.plural","errors")},security:{singular:r("gutter-tooltip.aria-label.security.singular","security finding"),plural:r("gutter-tooltip.aria-label.security.plural","security findings")},warning:{singular:r("gutter-tooltip.aria-label.warning.singular","warning"),plural:r("gutter-tooltip.aria-label.warning.plural","warnings")},info:{singular:r("gutter-tooltip.aria-label.info.singular","information message"),plural:r("gutter-tooltip.aria-label.info.plural","information messages")},hint:{singular:r("gutter-tooltip.aria-label.hint.singular","suggestion"),plural:r("gutter-tooltip.aria-label.hint.plural","suggestions")}}},enumerable:!1,configurable:!0}),f.prototype.showTooltip=function(g){var v,b=this.editor.renderer.$gutterLayer,D=b.$annotations[g],E;D?E={displayText:Array.from(D.displayText),type:Array.from(D.type)}:E={displayText:[],type:[]};var w=b.session.getFoldLine(g);if(w&&b.$showFoldedAnnotations){for(var y={error:[],security:[],warning:[],info:[],hint:[]},A={error:1,security:2,warning:3,info:4,hint:5},T,x=g+1;x<=w.end.row;x++)if(b.$annotations[x])for(var M=0;M2)return b.childNodes[2]}},f.prototype.$findCellByRow=function(g){return this.editor.renderer.$gutterLayer.$lines.cells.find(function(v){return v.row===g})},f.prototype.hide=function(g){if(this.isOpen){if(this.$element.removeAttribute("aria-live"),this.visibleTooltipRow!=null){var v=this.$findLinkedAnnotationNode(this.visibleTooltipRow);v&&v.removeAttribute("aria-describedby")}this.visibleTooltipRow=void 0,this.editor._signal("hideGutterTooltip",this),u.prototype.hide.call(this,g)}},f.annotationsToSummaryString=function(g){var v,b,D=[],E=["error","security","warning","info","hint"];try{for(var w=s(E),y=w.next();!y.done;y=w.next()){var A=y.value;if(g[A].length){var T=g[A].length===1?f.annotationLabels[A].singular:f.annotationLabels[A].plural;D.push("".concat(g[A].length," ").concat(T))}}}catch(x){v={error:x}}finally{try{y&&!y.done&&(b=w.return)&&b.call(w)}finally{if(v)throw v.error}}return D.join(", ")},f.prototype.isOutsideOfText=function(g){var v=g.editor,b=v.renderer.$gutter.getBoundingClientRect();return!(g.clientX>=b.left&&g.clientX<=b.right&&g.clientY>=b.top&&g.clientY<=b.bottom)},f})(l);p.$uid=0,n.GutterTooltip=p}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(t,n,h){var i=t("../lib/dom"),s=t("../lib/event"),d=t("../lib/useragent"),o=200,l=200,r=5;function a(p){var u=p.editor,f=i.createElement("div");f.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",f.textContent=" ";var g=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];g.forEach(function(W){p[W]=this[W]},this),u.on("mousedown",this.onMouseDown.bind(p));var v=u.container,b,D,E,w,y,A,T=0,x,M,O,_,k;this.onDragStart=function(W){if(this.cancelDrag||!v.draggable){var j=this;return setTimeout(function(){j.startSelect(),j.captureMouse(W)},0),W.preventDefault()}y=u.getSelectionRange();var U=W.dataTransfer;U.effectAllowed=u.getReadOnly()?"copy":"copyMove",u.container.appendChild(f),U.setDragImage&&U.setDragImage(f,0,0),setTimeout(function(){u.container.removeChild(f)}),U.clearData(),U.setData("Text",u.session.getTextRange()),M=!0,this.setState("drag")},this.onDragEnd=function(W){if(v.draggable=!1,M=!1,this.setState(null),!u.getReadOnly()){var j=W.dataTransfer.dropEffect;!x&&j=="move"&&u.session.remove(u.getSelectionRange()),u.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(W){if(!(u.getReadOnly()||!N(W.dataTransfer)))return D=W.clientX,E=W.clientY,b||I(),T++,W.dataTransfer.dropEffect=x=z(W),s.preventDefault(W)},this.onDragOver=function(W){if(!(u.getReadOnly()||!N(W.dataTransfer)))return D=W.clientX,E=W.clientY,b||(I(),T++),R!==null&&(R=null),W.dataTransfer.dropEffect=x=z(W),s.preventDefault(W)},this.onDragLeave=function(W){if(T--,T<=0&&b)return F(),x=null,s.preventDefault(W)},this.onDrop=function(W){if(A){var j=W.dataTransfer;if(M)switch(x){case"move":y.contains(A.row,A.column)?y={start:A,end:A}:y=u.moveText(y,A);break;case"copy":y=u.moveText(y,A,!0);break}else{var U=j.getData("Text");y={start:A,end:u.session.insert(A,U)},u.focus(),x=null}return F(),s.preventDefault(W)}},s.addListener(v,"dragstart",this.onDragStart.bind(p),u),s.addListener(v,"dragend",this.onDragEnd.bind(p),u),s.addListener(v,"dragenter",this.onDragEnter.bind(p),u),s.addListener(v,"dragover",this.onDragOver.bind(p),u),s.addListener(v,"dragleave",this.onDragLeave.bind(p),u),s.addListener(v,"drop",this.onDrop.bind(p),u);function S(W,j){var U=Date.now(),K=!j||W.row!=j.row,J=!j||W.column!=j.column;if(!_||K||J)u.moveCursorToPosition(W),_=U,k={x:D,y:E};else{var Y=c(k.x,k.y,D,E);Y>r?_=null:U-_>=l&&(u.renderer.scrollCursorIntoView(),_=null)}}function C(W,j){var U=Date.now(),K=u.renderer.layerConfig.lineHeight,J=u.renderer.layerConfig.characterWidth,Y=u.renderer.scroller.getBoundingClientRect(),X={x:{left:D-Y.left,right:Y.right-D},y:{top:E-Y.top,bottom:Y.bottom-E}},q=Math.min(X.x.left,X.x.right),ne=Math.min(X.y.top,X.y.bottom),ue={row:W.row,column:W.column};q/J<=2&&(ue.column+=X.x.left=o&&u.renderer.scrollCursorIntoView(ue):O=U:O=null}function L(){var W=A;A=u.renderer.screenToTextCoordinates(D,E),S(A,W),C(A,W)}function I(){y=u.selection.toOrientedRange(),b=u.session.addMarker(y,"ace_selection",u.getSelectionStyle()),u.clearSelection(),u.isFocused()&&u.renderer.$cursorLayer.setBlinking(!1),clearInterval(w),L(),w=setInterval(L,20),T=0,s.addListener(document,"mousemove",B)}function F(){clearInterval(w),u.session.removeMarker(b),b=null,u.selection.fromOrientedRange(y),u.isFocused()&&!M&&u.$resetCursorStyle(),y=null,A=null,T=0,O=null,_=null,s.removeListener(document,"mousemove",B)}var R=null;function B(){R==null&&(R=setTimeout(function(){R!=null&&b&&F()},20))}function N(W){var j=W.types;return!j||Array.prototype.some.call(j,function(U){return U=="text/plain"||U=="Text"})}function z(W){var j=["copy","copymove","all","uninitialized"],U=["move","copymove","linkmove","all","uninitialized"],K=d.isMac?W.altKey:W.ctrlKey,J="uninitialized";try{J=W.dataTransfer.effectAllowed.toLowerCase()}catch{}var Y="none";return K&&j.indexOf(J)>=0?Y="copy":U.indexOf(J)>=0?Y="move":j.indexOf(J)>=0&&(Y="copy"),Y}}(function(){this.dragWait=function(){var p=Date.now()-this.mousedownEvent.time;p>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var p=this.editor.container;p.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(p){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var p=this.editor,u=p.container;u.draggable=!0,p.renderer.$cursorLayer.setBlinking(!1),p.setStyle("ace_dragging");var f=d.isWin?"default":"move";p.renderer.setCursorStyle(f),this.setState("dragReady")},this.onMouseDrag=function(p){var u=this.editor.container;if(d.isIE&&this.state=="dragReady"){var f=c(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);f>3&&u.dragDrop()}if(this.state==="dragWait"){var f=c(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);f>0&&(u.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(p){if(this.$dragEnabled){this.mousedownEvent=p;var u=this.editor,f=p.inSelection(),g=p.getButton(),v=p.domEvent.detail||1;if(v===1&&g===0&&f){if(p.editor.inMultiSelectMode&&(p.getAccelKey()||p.getShiftKey()))return;this.mousedownEvent.time=Date.now();var b=p.domEvent.target||p.domEvent.srcElement;if("unselectable"in b&&(b.unselectable="on"),u.getDragDelay()){if(d.isWebKit){this.cancelDrag=!0;var D=u.container;D.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(p,this.onMouseDrag.bind(this)),p.defaultPrevented=!0}}}}).call(a.prototype);function c(p,u,f,g){return Math.sqrt(Math.pow(f-p,2)+Math.pow(g-u,2))}n.DragdropHandler=a}),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(t,n,h){var i=t("./mouse_event").MouseEvent,s=t("../lib/event"),d=t("../lib/dom");n.addTouchListeners=function(o,l){var r="scroll",a,c,p,u,f,g,v=0,b,D=0,E=0,w=0,y,A;function T(){var S=window.navigator&&window.navigator.clipboard,C=!1,L=function(){var R=l.getCopyText(),B=l.session.getUndoManager().hasUndo();A.replaceChild(d.buildDom(C?["span",!R&&I("selectall")&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],R&&I("copy")&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],R&&I("cut")&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],S&&I("paste")&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],B&&I("undo")&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],I("find")&&["span",{class:"ace_mobile-button",action:"find"},"Find"],I("openCommandPalette")&&["span",{class:"ace_mobile-button",action:"openCommandPalette"},"Palette"]]:["span"]),A.firstChild)},I=function(R){return l.commands.canExecute(R,l)},F=function(R){var B=R.target.getAttribute("action");if(B=="more"||!C)return C=!C,L();B=="paste"?S.readText().then(function(N){l.execCommand(B,N)}):B&&((B=="cut"||B=="copy")&&(S?S.writeText(l.getCopyText()):document.execCommand("copy")),l.execCommand(B)),A.firstChild.style.display="none",C=!1,B!="openCommandPalette"&&l.focus()};A=d.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(R){r="menu",R.stopPropagation(),R.preventDefault(),l.textInput.focus()},ontouchend:function(R){R.stopPropagation(),R.preventDefault(),F(R)},onclick:F},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],l.container)}function x(){if(!l.getOption("enableMobileMenu")){A&&M();return}A||T();var S=l.selection.cursor,C=l.renderer.textToScreenCoordinates(S.row,S.column),L=l.renderer.textToScreenCoordinates(0,0).pageX,I=l.renderer.scrollLeft,F=l.container.getBoundingClientRect();A.style.top=C.pageY-F.top-3+"px",C.pageX-F.left=2?l.selection.getLineRange(b.row):l.session.getBracketRange(b);S&&!S.isEmpty()?l.selection.setRange(S):l.selection.selectWord(),r="wait"}s.addListener(o,"contextmenu",function(S){if(y){var C=l.textInput.getElement();C.focus()}},l),s.addListener(o,"touchstart",function(S){var C=S.touches;if(f||C.length>1){clearTimeout(f),f=null,p=-1,r="zoom";return}y=l.$mouseHandler.isMousePressed=!0;var L=l.renderer.layerConfig.lineHeight,I=l.renderer.layerConfig.lineHeight,F=S.timeStamp;u=F;var R=C[0],B=R.clientX,N=R.clientY;Math.abs(a-B)+Math.abs(c-N)>L&&(p=-1),a=S.clientX=B,c=S.clientY=N,E=w=0;var z=new i(S,l);if(b=z.getDocumentPosition(),F-p<500&&C.length==1&&!v)D++,S.preventDefault(),S.button=0,_();else{D=0;var W=l.selection.cursor,j=l.selection.isEmpty()?W:l.selection.anchor,U=l.renderer.$cursorLayer.getPixelPosition(W,!0),K=l.renderer.$cursorLayer.getPixelPosition(j,!0),J=l.renderer.scroller.getBoundingClientRect(),Y=l.renderer.layerConfig.offset,X=l.renderer.scrollLeft,q=function(Se,Oe){return Se=Se/I,Oe=Oe/L-.75,Se*Se+Oe*Oe};if(S.clientXue?"cursor":"anchor"),ue<3.5?r="anchor":ne<3.5?r="cursor":r="scroll",f=setTimeout(O,450)}p=F},l),s.addListener(o,"touchend",function(S){y=l.$mouseHandler.isMousePressed=!1,g&&clearInterval(g),r=="zoom"?(r="",v=0):f?(l.selection.moveToPosition(b),v=0,x()):r=="scroll"?(k(),M()):x(),clearTimeout(f),f=null},l),s.addListener(o,"touchmove",function(S){f&&(clearTimeout(f),f=null);var C=S.touches;if(!(C.length>1||r=="zoom")){var L=C[0],I=a-L.clientX,F=c-L.clientY;if(r=="wait")if(I*I+F*F>4)r="cursor";else return S.preventDefault();a=L.clientX,c=L.clientY,S.clientX=L.clientX,S.clientY=L.clientY;var R=S.timeStamp,B=R-u;if(u=R,r=="scroll"){var N=new i(S,l);N.speed=1,N.wheelX=I,N.wheelY=F,10*Math.abs(I)0)if(ue==16){for(Ae=Oe;Ae-1){for(Ae=Oe;Ae=0&&K[nn]==y;nn--)j[nn]=i}}}function B(W,j,U){if(!(s=W){for(Y=J+1;Y=W;)Y++;for(X=J,q=Y-1;X=j.length||(Y=U[K-1])!=g&&Y!=v||(X=j[K+1])!=g&&X!=v?b:(d&&(X=v),X==Y?X:b);case T:return Y=K>0?U[K-1]:D,Y==g&&K+10&&U[K-1]==g)return g;if(d)return b;for(ne=K+1,q=j.length;ne=1425&&ue<=2303||ue==64286;if(Y=j[ne],Se&&(Y==f||Y==w))return f}return K<1||(Y=j[K-1])==D?b:U[K-1];case D:return d=!1,o=!0,i;case E:return l=!0,b;case O:case _:case S:case C:case k:d=!1;case L:return b}}function z(W){var j=W.charCodeAt(0),U=j>>8;return U==0?j>191?u:I[j]:U==5?/[\u0591-\u05f4]/.test(W)?f:u:U==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(W)?M:/[\u0660-\u0669\u066b-\u066c]/.test(W)?v:j==1642?x:/[\u06f0-\u06f9]/.test(W)?g:w:U==32&&j<=8287?F[j&255]:U==254&&j>=65136?w:b}n.L=u,n.R=f,n.EN=g,n.ON_R=3,n.AN=4,n.R_H=5,n.B=6,n.RLE=7,n.DOT="·",n.doBidiReorder=function(W,j,U){if(W.length<2)return{};var K=W.split(""),J=new Array(K.length),Y=new Array(K.length),X=[];i=U?p:c,R(K,X,K.length,j);for(var q=0;qw&&j[q]0&&K[q-1]==="ل"&&/\u0622|\u0623|\u0625|\u0627/.test(K[q])&&(X[q-1]=X[q]=n.R_H,q++);K[K.length-1]===n.DOT&&(X[K.length-1]=n.B),K[0]==="‫"&&(X[0]=n.RLE);for(var q=0;q=0&&(r=this.session.$docRowCache[c])}return r},l.prototype.getSplitIndex=function(){var r=0,a=this.session.$screenRowCache;if(a.length)for(var c,p=this.session.$getRowCacheIndex(a,this.currentRow);this.currentRow-r>0&&(c=this.session.$getRowCacheIndex(a,this.currentRow-r-1),c===p);)p=c,r++;else r=this.currentRow;return r},l.prototype.updateRowLine=function(r,a){r===void 0&&(r=this.getDocumentRow());var c=r===this.session.getLength()-1,p=c?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(r),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var u=this.session.$wrapData[r];u&&(a===void 0&&(a=this.getSplitIndex()),a>0&&u.length?(this.wrapIndent=u.indent,this.wrapOffset=this.wrapIndent*this.charWidths[i.L],this.line=aa?this.session.getOverwrite()?r:r-1:a,p=i.getVisualFromLogicalIdx(c,this.bidiMap),u=this.bidiMap.bidiLevels,f=0;!this.session.getOverwrite()&&r<=a&&u[p]%2!==0&&p++;for(var g=0;ga&&u[p]%2===0&&(f+=this.charWidths[u[p]]),this.wrapIndent&&(f+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(f+=this.rtlLineOffset),f},l.prototype.getSelections=function(r,a){var c=this.bidiMap,p=c.bidiLevels,u,f=[],g=0,v=Math.min(r,a)-this.wrapIndent,b=Math.max(r,a)-this.wrapIndent,D=!1,E=!1,w=0;this.wrapIndent&&(g+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var y,A=0;A=v&&yp+g/2;){if(p+=g,u===f.length-1){g=0;break}g=this.charWidths[f[++u]]}return u>0&&f[u-1]%2!==0&&f[u]%2===0?(c0&&f[u-1]%2===0&&f[u]%2!==0?a=1+(c>p?this.bidiMap.logicalFromVisual[u]:this.bidiMap.logicalFromVisual[u-1]):this.isRtlDir&&u===f.length-1&&g===0&&f[u-1]%2===0||!this.isRtlDir&&u===0&&f[u]%2!==0?a=1+this.bidiMap.logicalFromVisual[u]:(u>0&&f[u-1]%2!==0&&g!==0&&u--,a=this.bidiMap.logicalFromVisual[u]),a===0&&this.isRtlDir&&a++,a+this.wrapIndent},l})();n.BidiHandler=o}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(t,n,h){var i=t("./lib/oop"),s=t("./lib/lang"),d=t("./lib/event_emitter").EventEmitter,o=t("./range").Range,l=(function(){function r(a){this.session=a,this.doc=a.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var c=this;this.cursor.on("change",function(p){c.$cursorChanged=!0,c.$silent||c._emit("changeCursor"),!c.$isEmpty&&!c.$silent&&c._emit("changeSelection"),!c.$keepDesiredColumnOnChange&&p.old.column!=p.value.column&&(c.$desiredColumn=null)}),this.anchor.on("change",function(){c.$anchorChanged=!0,!c.$isEmpty&&!c.$silent&&c._emit("changeSelection")})}return r.prototype.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},r.prototype.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},r.prototype.getCursor=function(){return this.lead.getPosition()},r.prototype.setAnchor=function(a,c){this.$isEmpty=!1,this.anchor.setPosition(a,c)},r.prototype.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},r.prototype.getSelectionLead=function(){return this.lead.getPosition()},r.prototype.isBackwards=function(){var a=this.anchor,c=this.lead;return a.row>c.row||a.row==c.row&&a.column>c.column},r.prototype.getRange=function(){var a=this.anchor,c=this.lead;return this.$isEmpty?o.fromPoints(c,c):this.isBackwards()?o.fromPoints(c,a):o.fromPoints(a,c)},r.prototype.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},r.prototype.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},r.prototype.setRange=function(a,c){var p=c?a.end:a.start,u=c?a.start:a.end;this.$setSelection(p.row,p.column,u.row,u.column)},r.prototype.$setSelection=function(a,c,p,u){if(!this.$silent){var f=this.$isEmpty,g=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(a,c),this.cursor.setPosition(p,u),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||f!=this.$isEmpty||g)&&this._emit("changeSelection")}},r.prototype.$moveSelection=function(a){var c=this.lead;this.$isEmpty&&this.setSelectionAnchor(c.row,c.column),a.call(this)},r.prototype.selectTo=function(a,c){this.$moveSelection(function(){this.moveCursorTo(a,c)})},r.prototype.selectToPosition=function(a){this.$moveSelection(function(){this.moveCursorToPosition(a)})},r.prototype.moveTo=function(a,c){this.clearSelection(),this.moveCursorTo(a,c)},r.prototype.moveToPosition=function(a){this.clearSelection(),this.moveCursorToPosition(a)},r.prototype.selectUp=function(){this.$moveSelection(this.moveCursorUp)},r.prototype.selectDown=function(){this.$moveSelection(this.moveCursorDown)},r.prototype.selectRight=function(){this.$moveSelection(this.moveCursorRight)},r.prototype.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},r.prototype.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},r.prototype.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},r.prototype.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},r.prototype.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},r.prototype.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},r.prototype.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},r.prototype.getWordRange=function(a,c){if(typeof c>"u"){var p=a||this.lead;a=p.row,c=p.column}return this.session.getWordRange(a,c)},r.prototype.selectWord=function(){this.setSelectionRange(this.getWordRange())},r.prototype.selectAWord=function(){var a=this.getCursor(),c=this.session.getAWordRange(a.row,a.column);this.setSelectionRange(c)},r.prototype.getLineRange=function(a,c){var p=typeof a=="number"?a:this.lead.row,u,f=this.session.getFoldLine(p);return f?(p=f.start.row,u=f.end.row):u=p,c===!0?new o(p,0,u,this.session.getLine(u).length):new o(p,0,u+1,0)},r.prototype.selectLine=function(){this.setSelectionRange(this.getLineRange())},r.prototype.moveCursorUp=function(){this.moveCursorBy(-1,0)},r.prototype.moveCursorDown=function(){this.moveCursorBy(1,0)},r.prototype.wouldMoveIntoSoftTab=function(a,c,p){var u=a.column,f=a.column+c;return p<0&&(u=a.column-c,f=a.column),this.session.isTabStop(a)&&this.doc.getLine(a.row).slice(u,f).split(" ").length-1==c},r.prototype.moveCursorLeft=function(){var a=this.lead.getPosition(),c;if(c=this.session.getFoldAt(a.row,a.column,-1))this.moveCursorTo(c.start.row,c.start.column);else if(a.column===0)a.row>0&&this.moveCursorTo(a.row-1,this.doc.getLine(a.row-1).length);else{var p=this.session.getTabSize();this.wouldMoveIntoSoftTab(a,p,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-p):this.moveCursorBy(0,-1)}},r.prototype.moveCursorRight=function(){var a=this.lead.getPosition(),c;if(c=this.session.getFoldAt(a.row,a.column,1))this.moveCursorTo(c.end.row,c.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(c.column=u)}}this.moveCursorTo(c.row,c.column)},r.prototype.moveCursorFileEnd=function(){var a=this.doc.getLength()-1,c=this.doc.getLine(a).length;this.moveCursorTo(a,c)},r.prototype.moveCursorFileStart=function(){this.moveCursorTo(0,0)},r.prototype.moveCursorLongWordRight=function(){var a=this.lead.row,c=this.lead.column,p=this.doc.getLine(a),u=p.substring(c);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var f=this.session.getFoldAt(a,c,1);if(f){this.moveCursorTo(f.end.row,f.end.column);return}if(this.session.nonTokenRe.exec(u)&&(c+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,u=p.substring(c)),c>=p.length){this.moveCursorTo(a,p.length),this.moveCursorRight(),a0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(f)&&(c-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(a,c)},r.prototype.$shortWordEndIndex=function(a){var c=0,p,u=/\s/,f=this.session.tokenRe;if(f.lastIndex=0,this.session.tokenRe.exec(a))c=this.session.tokenRe.lastIndex;else{for(;(p=a[c])&&u.test(p);)c++;if(c<1){for(f.lastIndex=0;(p=a[c])&&!f.test(p);)if(f.lastIndex=0,c++,u.test(p))if(c>2){c--;break}else{for(;(p=a[c])&&u.test(p);)c++;if(c>2)break}}}return f.lastIndex=0,c},r.prototype.moveCursorShortWordRight=function(){var a=this.lead.row,c=this.lead.column,p=this.doc.getLine(a),u=p.substring(c),f=this.session.getFoldAt(a,c,1);if(f)return this.moveCursorTo(f.end.row,f.end.column);if(c==p.length){var g=this.doc.getLength();do a++,u=this.doc.getLine(a);while(a0&&/^\s*$/.test(u));c=u.length,/\s+$/.test(u)||(u="")}var f=s.stringReverse(u),g=this.$shortWordEndIndex(f);return this.moveCursorTo(a,c-g)},r.prototype.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},r.prototype.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},r.prototype.moveCursorBy=function(a,c){var p=this.session.documentToScreenPosition(this.lead.row,this.lead.column),u;if(c===0&&(a!==0&&(this.session.$bidiHandler.isBidiRow(p.row,this.lead.row)?(u=this.session.$bidiHandler.getPosLeft(p.column),p.column=Math.round(u/this.session.$bidiHandler.charWidths[0])):u=p.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?p.column=this.$desiredColumn:this.$desiredColumn=p.column),a!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var f=this.session.lineWidgets[this.lead.row];a<0?a-=f.rowsAbove||0:a>0&&(a+=f.rowCount-(f.rowsAbove||0))}var g=this.session.screenToDocumentPosition(p.row+a,p.column,u);a!==0&&c===0&&g.row===this.lead.row&&(g.column,this.lead.column),this.moveCursorTo(g.row,g.column+c,c===0)},r.prototype.moveCursorToPosition=function(a){this.moveCursorTo(a.row,a.column)},r.prototype.moveCursorTo=function(a,c,p){var u=this.session.getFoldAt(a,c,1);u&&(a=u.start.row,c=u.start.column),this.$keepDesiredColumnOnChange=!0;var f=this.session.getLine(a);/[\uDC00-\uDFFF]/.test(f.charAt(c))&&f.charAt(c-1)&&(this.lead.row==a&&this.lead.column==c+1?c=c-1:c=c+1),this.lead.setPosition(a,c),this.$keepDesiredColumnOnChange=!1,p||(this.$desiredColumn=null)},r.prototype.moveCursorToScreen=function(a,c,p){var u=this.session.screenToDocumentPosition(a,c);this.moveCursorTo(u.row,u.column,p)},r.prototype.detach=function(){this.lead.detach(),this.anchor.detach()},r.prototype.fromOrientedRange=function(a){this.setSelectionRange(a,a.cursor==a.start),this.$desiredColumn=a.desiredColumn||this.$desiredColumn},r.prototype.toOrientedRange=function(a){var c=this.getRange();return a?(a.start.column=c.start.column,a.start.row=c.start.row,a.end.column=c.end.column,a.end.row=c.end.row):a=c,a.cursor=this.isBackwards()?a.start:a.end,a.desiredColumn=this.$desiredColumn,a},r.prototype.getRangeOfMovements=function(a){var c=this.getCursor();try{a(this);var p=this.getCursor();return o.fromPoints(c,p)}catch{return o.fromPoints(c,c)}finally{this.moveCursorToPosition(c)}},r.prototype.toJSON=function(){if(this.rangeCount)var a=this.ranges.map(function(c){var p=c.clone();return p.isBackwards=c.cursor==c.start,p});else{var a=this.getRange();a.isBackwards=this.isBackwards()}return a},r.prototype.fromJSON=function(a){if(a.start==null)if(this.rangeList&&a.length>1){this.toSingleRange(a[0]);for(var c=a.length;c--;){var p=o.fromPoints(a[c].start,a[c].end);a[c].isBackwards&&(p.cursor=p.start),this.addRange(p,!0)}return}else a=a[0];this.rangeList&&this.toSingleRange(a),this.setSelectionRange(a,a.isBackwards)},r.prototype.isEqual=function(a){if((a.length||this.rangeCount)&&a.length!=this.rangeCount)return!1;if(!a.length||!this.ranges)return this.getRange().isEqual(a);for(var c=this.ranges.length;c--;)if(!this.ranges[c].isEqual(a[c]))return!1;return!0},r})();l.prototype.setSelectionAnchor=l.prototype.setAnchor,l.prototype.getSelectionAnchor=l.prototype.getAnchor,l.prototype.setSelectionRange=l.prototype.setRange,i.implement(l.prototype,d),n.Selection=l}),ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"],function(t,n,h){var i=t("./lib/report_error").reportError,s=2e3,d=(function(){function o(l){this.splitRegex,this.states=l,this.regExps={},this.matchMappings={};for(var r in this.states){for(var a=this.states[r],c=[],p=0,u=this.matchMappings[r]={defaultToken:"text"},f="g",g=[],v=0;v1?b.onMatch=this.$applyToken:b.onMatch=b.token),E>1&&(/\\\d/.test(b.regex)?D=b.regex.replace(/\\([0-9]+)/g,function(w,y){return"\\"+(parseInt(y,10)+p+1)}):(E=1,D=this.removeCapturingGroups(b.regex)),!b.splitRegex&&typeof b.token!="string"&&g.push(b)),u[p]=v,p+=E,c.push(D),b.onMatch||(b.onMatch=null)}}c.length||(u[0]=0,c.push("$")),g.forEach(function(w){w.splitRegex=this.createSplitterRegexp(w.regex,f)},this),this.regExps[r]=new RegExp("("+c.join(")|(")+")|($)",f)}}return o.prototype.$setMaxTokenCount=function(l){s=l|0},o.prototype.$applyToken=function(l){var r=this.splitRegex.exec(l).slice(1),a=this.token.apply(this,r);if(typeof a=="string")return[{type:a,value:l}];for(var c=[],p=0,u=a.length;pb){var x=l.substring(b,T-A.length);E.type==w?E.value+=x:(E.type&&v.push(E),E={type:w,value:x})}for(var M=0;Ms){for(D>2*l.length&&this.reportError("infinite loop with in ace tokenizer",{startState:r,line:l});b1&&a[0]!==c&&a.unshift("#tmp",c),{tokens:v,state:a.length?a:c}},o})();d.prototype.reportError=i,n.Tokenizer=d}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"],function(t,n,h){var i=t("../lib/deep_copy").deepCopy,s;s=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}},(function(){this.addRules=function(l,r){if(!r){for(var a in l)this.$rules[a]=l[a];return}for(var a in l){for(var c=l[a],p=0;p=this.$rowTokens.length;){if(this.$row+=1,o||(o=this.$session.getLength()),this.$row>=o)return this.$row=o-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},d.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},d.prototype.getCurrentTokenRow=function(){return this.$row},d.prototype.getCurrentTokenColumn=function(){var o=this.$rowTokens,l=this.$tokenIndex,r=o[l].start;if(r!==void 0)return r;for(r=0;l>0;)l-=1,r+=o[l].value.length;return r},d.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},d.prototype.getCurrentTokenRange=function(){var o=this.$rowTokens[this.$tokenIndex],l=this.getCurrentTokenColumn();return new i(this.$row,l,this.$row,l+o.value.length)},d})();n.TokenIterator=s}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(t,n,h){var i=t("../../lib/oop"),s=t("../behaviour").Behaviour,d=t("../../token_iterator").TokenIterator,o=t("../../lib/lang"),l=["text","paren.rparen","rparen","paren","punctuation.operator"],r=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],a,c={},p={'"':'"',"'":"'"},u=function(v){var b=-1;if(v.multiSelect&&(b=v.selection.index,c.rangeCount!=v.multiSelect.rangeCount&&(c={rangeCount:v.multiSelect.rangeCount})),c[b])return a=c[b];a=c[b]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},f=function(v,b,D,E){var w=v.end.row-v.start.row;return{text:D+b+E,selection:[0,v.start.column+1,w,v.end.column+(w?0:1)]}},g;g=function(v){v=v||{},this.add("braces","insertion",function(b,D,E,w,y){var A=E.getCursorPosition(),T=w.doc.getLine(A.row);if(y=="{"){u(E);var x=E.getSelectionRange(),M=w.doc.getTextRange(x),O=w.getTokenAt(A.row,A.column);if(M!==""&&M!=="{"&&E.getWrapBehavioursEnabled())return f(x,M,"{","}");if(O&&/(?:string)\.quasi|\.xml/.test(O.type)){var _=[/tag\-(?:open|name)/,/attribute\-name/];return _.some(function(R){return R.test(O.type)})||/(string)\.quasi/.test(O.type)&&O.value[A.column-O.start-1]!=="$"?void 0:(g.recordAutoInsert(E,w,"}"),{text:"{}",selection:[1,1]})}else if(g.isSaneInsertion(E,w))return/[\]\}\)]/.test(T[A.column])||E.inMultiSelectMode||v.braces?(g.recordAutoInsert(E,w,"}"),{text:"{}",selection:[1,1]}):(g.recordMaybeInsert(E,w,"{"),{text:"{",selection:[1,1]})}else if(y=="}"){u(E);var k=T.substring(A.column,A.column+1);if(k=="}"){var S=w.$findOpeningBracket("}",{column:A.column+1,row:A.row});if(S!==null&&g.isAutoInsertedClosing(A,T,y))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else if(y==` `||y==`\r -`){h(E);var C="";g.isMaybeInsertedClosing(A,T)&&(C=o.stringRepeat("}",a.maybeInsertedBrackets),g.clearMaybeInsertedClosing());var k=T.substring(A.column,A.column+1);if(k==="}"){var L=w.findMatchingBracket({row:A.row,column:A.column+1},"}");if(!L)return null;var I=this.$getIndent(w.getLine(L.row))}else if(C)var I=this.$getIndent(T);else{g.clearMaybeInsertedClosing();return}var F=I+w.getTabString();return{text:` +`){u(E);var C="";g.isMaybeInsertedClosing(A,T)&&(C=o.stringRepeat("}",a.maybeInsertedBrackets),g.clearMaybeInsertedClosing());var k=T.substring(A.column,A.column+1);if(k==="}"){var L=w.findMatchingBracket({row:A.row,column:A.column+1},"}");if(!L)return null;var I=this.$getIndent(w.getLine(L.row))}else if(C)var I=this.$getIndent(T);else{g.clearMaybeInsertedClosing();return}var F=I+w.getTabString();return{text:` `+F+` -`+I+C,selection:[1,F.length,1,F.length]}}else g.clearMaybeInsertedClosing()}),this.add("braces","deletion",function(b,D,E,w,y){var A=w.doc.getTextRange(y);if(!y.isMultiLine()&&A=="{"){h(E);var T=w.doc.getLine(y.start.row),$=T.substring(y.end.column,y.end.column+1);if($=="}")return y.end.column++,y;a.maybeInsertedBrackets--}}),this.add("parens","insertion",function(b,D,E,w,y){if(y=="("){h(E);var A=E.getSelectionRange(),T=w.doc.getTextRange(A);if(T!==""&&E.getWrapBehavioursEnabled())return f(A,T,"(",")");if(g.isSaneInsertion(E,w))return g.recordAutoInsert(E,w,")"),{text:"()",selection:[1,1]}}else if(y==")"){h(E);var $=E.getCursorPosition(),M=w.doc.getLine($.row),O=M.substring($.column,$.column+1);if(O==")"){var _=w.$findOpeningBracket(")",{column:$.column+1,row:$.row});if(_!==null&&g.isAutoInsertedClosing($,M,y))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(b,D,E,w,y){var A=w.doc.getTextRange(y);if(!y.isMultiLine()&&A=="("){h(E);var T=w.doc.getLine(y.start.row),$=T.substring(y.start.column+1,y.start.column+2);if($==")")return y.end.column++,y}}),this.add("brackets","insertion",function(b,D,E,w,y){if(y=="["){h(E);var A=E.getSelectionRange(),T=w.doc.getTextRange(A);if(T!==""&&E.getWrapBehavioursEnabled())return f(A,T,"[","]");if(g.isSaneInsertion(E,w))return g.recordAutoInsert(E,w,"]"),{text:"[]",selection:[1,1]}}else if(y=="]"){h(E);var $=E.getCursorPosition(),M=w.doc.getLine($.row),O=M.substring($.column,$.column+1);if(O=="]"){var _=w.$findOpeningBracket("]",{column:$.column+1,row:$.row});if(_!==null&&g.isAutoInsertedClosing($,M,y))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(b,D,E,w,y){var A=w.doc.getTextRange(y);if(!y.isMultiLine()&&A=="["){h(E);var T=w.doc.getLine(y.start.row),$=T.substring(y.start.column+1,y.start.column+2);if($=="]")return y.end.column++,y}}),this.add("string_dquotes","insertion",function(b,D,E,w,y){var A=w.$mode.$quotes||p;if(y.length==1&&A[y]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(y)!=-1)return;h(E);var T=y,$=E.getSelectionRange(),M=w.doc.getTextRange($);if(M!==""&&(M.length!=1||!A[M])&&E.getWrapBehavioursEnabled())return f($,M,T,T);if(!M){var O=E.getCursorPosition(),_=w.doc.getLine(O.row),k=_.substring(O.column-1,O.column),S=_.substring(O.column,O.column+1),C=w.getTokenAt(O.row,O.column),L=w.getTokenAt(O.row,O.column+1);if(k=="\\"&&C&&/escape/.test(C.type))return null;var I=C&&/string|escape/.test(C.type),F=!L||/string|escape/.test(L.type),R;if(S==T)R=I!==F,R&&/string\.end/.test(L.type)&&(R=!1);else{if(I&&!F||I&&F)return null;var B=w.$mode.tokenRe;B.lastIndex=0;var N=B.test(k);B.lastIndex=0;var H=B.test(S),W=w.$mode.$pairQuotesAfter,j=W&&W[T]&&W[T].test(k);if(!j&&N||H||S&&!/[\s;,.})\]\\]/.test(S))return null;var U=_[O.column-2];if(k==T&&(U==T||B.test(U)))return null;R=!0}return{text:R?T+T:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(b,D,E,w,y){var A=w.$mode.$quotes||p,T=w.doc.getTextRange(y);if(!y.isMultiLine()&&A.hasOwnProperty(T)){h(E);var $=w.doc.getLine(y.start.row),M=$.substring(y.start.column+1,y.start.column+2);if(M==T)return y.end.column++,y}}),v.closeDocComment!==!1&&this.add("doc comment end","insertion",function(b,D,E,w,y){if(b==="doc-start"&&(y===` +`+I+C,selection:[1,F.length,1,F.length]}}else g.clearMaybeInsertedClosing()}),this.add("braces","deletion",function(b,D,E,w,y){var A=w.doc.getTextRange(y);if(!y.isMultiLine()&&A=="{"){u(E);var T=w.doc.getLine(y.start.row),x=T.substring(y.end.column,y.end.column+1);if(x=="}")return y.end.column++,y;a.maybeInsertedBrackets--}}),this.add("parens","insertion",function(b,D,E,w,y){if(y=="("){u(E);var A=E.getSelectionRange(),T=w.doc.getTextRange(A);if(T!==""&&E.getWrapBehavioursEnabled())return f(A,T,"(",")");if(g.isSaneInsertion(E,w))return g.recordAutoInsert(E,w,")"),{text:"()",selection:[1,1]}}else if(y==")"){u(E);var x=E.getCursorPosition(),M=w.doc.getLine(x.row),O=M.substring(x.column,x.column+1);if(O==")"){var _=w.$findOpeningBracket(")",{column:x.column+1,row:x.row});if(_!==null&&g.isAutoInsertedClosing(x,M,y))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(b,D,E,w,y){var A=w.doc.getTextRange(y);if(!y.isMultiLine()&&A=="("){u(E);var T=w.doc.getLine(y.start.row),x=T.substring(y.start.column+1,y.start.column+2);if(x==")")return y.end.column++,y}}),this.add("brackets","insertion",function(b,D,E,w,y){if(y=="["){u(E);var A=E.getSelectionRange(),T=w.doc.getTextRange(A);if(T!==""&&E.getWrapBehavioursEnabled())return f(A,T,"[","]");if(g.isSaneInsertion(E,w))return g.recordAutoInsert(E,w,"]"),{text:"[]",selection:[1,1]}}else if(y=="]"){u(E);var x=E.getCursorPosition(),M=w.doc.getLine(x.row),O=M.substring(x.column,x.column+1);if(O=="]"){var _=w.$findOpeningBracket("]",{column:x.column+1,row:x.row});if(_!==null&&g.isAutoInsertedClosing(x,M,y))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(b,D,E,w,y){var A=w.doc.getTextRange(y);if(!y.isMultiLine()&&A=="["){u(E);var T=w.doc.getLine(y.start.row),x=T.substring(y.start.column+1,y.start.column+2);if(x=="]")return y.end.column++,y}}),this.add("string_dquotes","insertion",function(b,D,E,w,y){var A=w.$mode.$quotes||p;if(y.length==1&&A[y]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(y)!=-1)return;u(E);var T=y,x=E.getSelectionRange(),M=w.doc.getTextRange(x);if(M!==""&&(M.length!=1||!A[M])&&E.getWrapBehavioursEnabled())return f(x,M,T,T);if(!M){var O=E.getCursorPosition(),_=w.doc.getLine(O.row),k=_.substring(O.column-1,O.column),S=_.substring(O.column,O.column+1),C=w.getTokenAt(O.row,O.column),L=w.getTokenAt(O.row,O.column+1);if(k=="\\"&&C&&/escape/.test(C.type))return null;var I=C&&/string|escape/.test(C.type),F=!L||/string|escape/.test(L.type),R;if(S==T)R=I!==F,R&&/string\.end/.test(L.type)&&(R=!1);else{if(I&&!F||I&&F)return null;var B=w.$mode.tokenRe;B.lastIndex=0;var N=B.test(k);B.lastIndex=0;var z=B.test(S),W=w.$mode.$pairQuotesAfter,j=W&&W[T]&&W[T].test(k);if(!j&&N||z||S&&!/[\s;,.})\]\\]/.test(S))return null;var U=_[O.column-2];if(k==T&&(U==T||B.test(U)))return null;R=!0}return{text:R?T+T:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(b,D,E,w,y){var A=w.$mode.$quotes||p,T=w.doc.getTextRange(y);if(!y.isMultiLine()&&A.hasOwnProperty(T)){u(E);var x=w.doc.getLine(y.start.row),M=x.substring(y.start.column+1,y.start.column+2);if(M==T)return y.end.column++,y}}),v.closeDocComment!==!1&&this.add("doc comment end","insertion",function(b,D,E,w,y){if(b==="doc-start"&&(y===` `||y===`\r -`)&&E.selection.isEmpty()){var A=E.getCursorPosition();if(A.column===0)return;for(var T=w.doc.getLine(A.row),$=w.doc.getLine(A.row+1),M=w.getTokens(A.row),O=0,_=0;_=A.column){if(O===A.column){if(!/\.doc/.test(k.type))return;if(/\*\//.test(k.value)){var S=M[_+1];if(!S||!/\.doc/.test(S.type))return}}var C=A.column-(O-k.value.length),L=k.value.indexOf("*/"),I=k.value.indexOf("/**",L>-1?L+2:0);if(I!==-1&&C>I&&C=L&&C<=I||!/\.doc/.test(k.type))return;break}}var F=this.$getIndent(T);if(/\s*\*/.test($))return/^\s*\*/.test(T)?{text:y+F+"* ",selection:[1,2+F.length,1,2+F.length]}:{text:y+F+" * ",selection:[1,3+F.length,1,3+F.length]};if(/\/\*\*/.test(T.substring(0,A.column)))return{text:y+F+" * "+y+" "+F+"*/",selection:[1,4+F.length,1,4+F.length]}}})},g.isSaneInsertion=function(v,b){var D=v.getCursorPosition(),E=new d(b,D.row,D.column);if(!this.$matchTokenType(E.getCurrentToken()||"text",l)){if(/[)}\]]/.test(v.session.getLine(D.row)[D.column]))return!0;var w=new d(b,D.row,D.column+1);if(!this.$matchTokenType(w.getCurrentToken()||"text",l))return!1}return E.stepForward(),E.getCurrentTokenRow()!==D.row||this.$matchTokenType(E.getCurrentToken()||"text",r)},g.$matchTokenType=function(v,b){return b.indexOf(v.type||v)>-1},g.recordAutoInsert=function(v,b,D){var E=v.getCursorPosition(),w=b.doc.getLine(E.row);this.isAutoInsertedClosing(E,w,a.autoInsertedLineEnd[0])||(a.autoInsertedBrackets=0),a.autoInsertedRow=E.row,a.autoInsertedLineEnd=D+w.substr(E.column),a.autoInsertedBrackets++},g.recordMaybeInsert=function(v,b,D){var E=v.getCursorPosition(),w=b.doc.getLine(E.row);this.isMaybeInsertedClosing(E,w)||(a.maybeInsertedBrackets=0),a.maybeInsertedRow=E.row,a.maybeInsertedLineStart=w.substr(0,E.column)+D,a.maybeInsertedLineEnd=w.substr(E.column),a.maybeInsertedBrackets++},g.isAutoInsertedClosing=function(v,b,D){return a.autoInsertedBrackets>0&&v.row===a.autoInsertedRow&&D===a.autoInsertedLineEnd[0]&&b.substr(v.column)===a.autoInsertedLineEnd},g.isMaybeInsertedClosing=function(v,b){return a.maybeInsertedBrackets>0&&v.row===a.maybeInsertedRow&&b.substr(v.column)===a.maybeInsertedLineEnd&&b.substr(0,v.column)==a.maybeInsertedLineStart},g.popAutoInsertedClosing=function(){a.autoInsertedLineEnd=a.autoInsertedLineEnd.substr(1),a.autoInsertedBrackets--},g.clearMaybeInsertedClosing=function(){a&&(a.maybeInsertedBrackets=0,a.maybeInsertedRow=-1)},i.inherits(g,s),n.CstyleBehaviour=g}),ace.define("ace/unicode",["require","exports","module"],function(t,n,u){for(var i=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],s=0,d=[],o=0;o2?U%y!=y-1:U%y==0}}else{if(!this.blockComment)return!1;var T=this.blockComment.start,$=this.blockComment.end,M=new RegExp("^(\\s*)(?:"+r.escapeRegExp(T)+")"),O=new RegExp("(?:"+r.escapeRegExp($)+")\\s*$"),_=function(R,B){S(R,B)||(!D||/\S/.test(R))&&(b.insertInLine({row:B,column:R.length},$),b.insertInLine({row:B,column:w},T))},k=function(R,B){var N;(N=R.match(O))&&b.removeInLine(B,R.length-N[0].length,R.length),(N=R.match(M))&&b.removeInLine(B,N[1].length,N[0].length)},S=function(R,B){if(M.test(R))return!0;for(var N=f.getTokens(B),H=0;HR.length&&(F=R.length)}),w==1/0&&(w=F,D=!1,E=!1),A&&w%y!=0&&(w=Math.floor(w/y)*y),I(E?k:_)},this.toggleBlockComment=function(h,f,g,v){var b=this.blockComment;if(b){!b.start&&b[0]&&(b=b[0]);var D=new a(f,v.row,v.column),E=D.getCurrentToken();f.selection;var w=f.selection.toOrientedRange(),y,A;if(E&&/comment/.test(E.type)){for(var T,$;E&&/comment/.test(E.type);){var M=E.value.indexOf(b.start);if(M!=-1){var O=D.getCurrentTokenRow(),_=D.getCurrentTokenColumn()+M;T=new c(O,_,O,_+b.start.length);break}E=D.stepBackward()}for(var D=new a(f,v.row,v.column),E=D.getCurrentToken();E&&/comment/.test(E.type);){var M=E.value.indexOf(b.end);if(M!=-1){var O=D.getCurrentTokenRow(),_=D.getCurrentTokenColumn()+M;$=new c(O,_,O,_+b.end.length);break}E=D.stepForward()}$&&f.remove($),T&&(f.remove(T),y=T.start.row,A=-b.start.length)}else A=b.start.length,y=g.start.row,f.insert(g.end,b.end),f.insert(g.start,b.start);w.start.row==y&&(w.start.column+=A),w.end.row==y&&(w.end.column+=A),f.selection.fromOrientedRange(w)}},this.getNextLineIndent=function(h,f,g){return this.$getIndent(f)},this.checkOutdent=function(h,f,g){return!1},this.autoOutdent=function(h,f,g){},this.$getIndent=function(h){return h.match(/^\s*/)[0]},this.createWorker=function(h){return null},this.createModeDelegates=function(h){this.$embeds=[],this.$modes={};for(var f in h)if(h[f]){var g=h[f],v=g.prototype.$id,b=i.$modes[v];b||(i.$modes[v]=b=new g),i.$modes[f]||(i.$modes[f]=b),this.$embeds.push(f),this.$modes[f]=b}for(var D=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],E=function(y){(function(A){var T=D[y],$=A[T];A[D[y]]=function(){return this.$delegator(T,arguments,$)}})(w)},w=this,f=0;fl[r].column&&r++,p.unshift(r,0),l.splice.apply(l,p),this.$updateRows()}}},d.prototype.$updateRows=function(){var o=this.session.lineWidgets;if(o){var l=!0;o.forEach(function(r,a){if(r)for(l=!1,r.row=a;r.$oldWidget;)r.$oldWidget.row=a,r=r.$oldWidget}),l&&(this.session.lineWidgets=null)}},d.prototype.$registerLineWidget=function(o){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var l=this.session.lineWidgets[o.row];return l&&(o.$oldWidget=l,l.el&&l.el.parentNode&&(l.el.parentNode.removeChild(l.el),l._inDocument=!1)),this.session.lineWidgets[o.row]=o,o},d.prototype.addLineWidget=function(o){if(this.$registerLineWidget(o),o.session=this.session,!this.editor)return o;var l=this.editor.renderer;o.html&&!o.el&&(o.el=i.createElement("div"),o.el.innerHTML=o.html),o.text&&!o.el&&(o.el=i.createElement("div"),o.el.textContent=o.text),o.el&&(i.addCssClass(o.el,"ace_lineWidgetContainer"),o.className&&i.addCssClass(o.el,o.className),o.el.style.position="absolute",o.el.style.zIndex="5",l.container.appendChild(o.el),o._inDocument=!0,o.coverGutter||(o.el.style.zIndex="3"),o.pixelHeight==null&&(o.pixelHeight=o.el.offsetHeight)),o.rowCount==null&&(o.rowCount=o.pixelHeight/l.layerConfig.lineHeight);var r=this.session.getFoldAt(o.row,0);if(o.$fold=r,r){var a=this.session.lineWidgets;o.row==r.end.row&&!a[r.start.row]?a[r.start.row]=o:o.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:o.row}}}),this.$updateRows(),this.renderWidgets(null,l),this.onWidgetChanged(o),o},d.prototype.removeLineWidget=function(o){if(o._inDocument=!1,o.session=null,o.el&&o.el.parentNode&&o.el.parentNode.removeChild(o.el),o.editor&&o.editor.destroy)try{o.editor.destroy()}catch{}if(this.session.lineWidgets){var l=this.session.lineWidgets[o.row];if(l==o)this.session.lineWidgets[o.row]=o.$oldWidget,o.$oldWidget&&this.onWidgetChanged(o.$oldWidget);else for(;l;){if(l.$oldWidget==o){l.$oldWidget=o.$oldWidget;break}l=l.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:o.row}}}),this.$updateRows()},d.prototype.getWidgetsAtRow=function(o){for(var l=this.session.lineWidgets,r=l&&l[o],a=[];r;)a.push(r),r=r.$oldWidget;return a},d.prototype.onWidgetChanged=function(o){this.session._changedWidgets.push(o),this.editor&&this.editor.renderer.updateFull()},d.prototype.measureWidgets=function(o,l){var r=this.session._changedWidgets,a=l.layerConfig;if(!(!r||!r.length)){for(var c=1/0,p=0;p0&&!a[c];)c--;this.firstRow=r.firstRow,this.lastRow=r.lastRow,l.$cursorLayer.config=r;for(var h=c;h<=p;h++){var f=a[h];if(!(!f||!f.el)){if(f.hidden){f.el.style.top=-100-(f.pixelHeight||0)+"px";continue}f._inDocument||(f._inDocument=!0,l.container.appendChild(f.el));var g=l.$cursorLayer.getPixelPosition({row:h,column:0},!0).top;f.coverLine||(g+=r.lineHeight*this.session.getRowLineCount(f.row)),f.el.style.top=g-r.offset+"px";var v=f.coverGutter?0:l.gutterWidth;f.fixedWidth||(v-=l.scrollLeft),f.el.style.left=v+"px",f.fullWidth&&f.screenWidth&&(f.el.style.minWidth=r.width+2*r.padding+"px"),f.fixedWidth?f.el.style.right=l.scrollBar.getWidth()+"px":f.el.style.right=""}}}},d})();n.LineWidgets=s}),ace.define("ace/apply_delta",["require","exports","module"],function(t,n,u){n.applyDelta=function(i,s,d){var o=s.start.row,l=s.start.column,r=i[o]||"";switch(s.action){case"insert":var a=s.lines;if(a.length===1)i[o]=r.substring(0,l)+s.lines[0]+r.substring(l);else{var c=[o,1].concat(s.lines);i.splice.apply(i,c),i[o]=r.substring(0,l)+i[o],i[o+s.lines.length-1]+=r.substring(l)}break;case"remove":var p=s.end.column,h=s.end.row;o===h?i[o]=r.substring(0,l)+r.substring(p):i.splice(o,h-o+1,r.substring(0,l)+i[h].substring(p));break}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(t,n,u){var i=t("./lib/oop"),s=t("./lib/event_emitter").EventEmitter,d=(function(){function r(a,c,p){this.$onChange=this.onChange.bind(this),this.attach(a),typeof c!="number"?this.setPosition(c.row,c.column):this.setPosition(c,p)}return r.prototype.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},r.prototype.getDocument=function(){return this.document},r.prototype.onChange=function(a){if(!(a.start.row==a.end.row&&a.start.row!=this.row)&&!(a.start.row>this.row)){var c=l(a,{row:this.row,column:this.column},this.$insertRight);this.setPosition(c.row,c.column,!0)}},r.prototype.setPosition=function(a,c,p){var h;if(p?h={row:a,column:c}:h=this.$clipPositionToDocument(a,c),!(this.row==h.row&&this.column==h.column)){var f={row:this.row,column:this.column};this.row=h.row,this.column=h.column,this._signal("change",{old:f,value:h})}},r.prototype.detach=function(){this.document.off("change",this.$onChange)},r.prototype.attach=function(a){this.document=a||this.document,this.document.on("change",this.$onChange)},r.prototype.$clipPositionToDocument=function(a,c){var p={};return a>=this.document.getLength()?(p.row=Math.max(0,this.document.getLength()-1),p.column=this.document.getLine(p.row).length):a<0?(p.row=0,p.column=0):(p.row=a,p.column=Math.min(this.document.getLine(p.row).length,Math.max(0,c))),c<0&&(p.column=0),p},r})();d.prototype.$insertRight=!1,i.implement(d.prototype,s);function o(r,a,c){var p=c?r.column<=a.column:r.column=A.column){if(O===A.column){if(!/\.doc/.test(k.type))return;if(/\*\//.test(k.value)){var S=M[_+1];if(!S||!/\.doc/.test(S.type))return}}var C=A.column-(O-k.value.length),L=k.value.indexOf("*/"),I=k.value.indexOf("/**",L>-1?L+2:0);if(I!==-1&&C>I&&C=L&&C<=I||!/\.doc/.test(k.type))return;break}}var F=this.$getIndent(T);if(/\s*\*/.test(x))return/^\s*\*/.test(T)?{text:y+F+"* ",selection:[1,2+F.length,1,2+F.length]}:{text:y+F+" * ",selection:[1,3+F.length,1,3+F.length]};if(/\/\*\*/.test(T.substring(0,A.column)))return{text:y+F+" * "+y+" "+F+"*/",selection:[1,4+F.length,1,4+F.length]}}})},g.isSaneInsertion=function(v,b){var D=v.getCursorPosition(),E=new d(b,D.row,D.column);if(!this.$matchTokenType(E.getCurrentToken()||"text",l)){if(/[)}\]]/.test(v.session.getLine(D.row)[D.column]))return!0;var w=new d(b,D.row,D.column+1);if(!this.$matchTokenType(w.getCurrentToken()||"text",l))return!1}return E.stepForward(),E.getCurrentTokenRow()!==D.row||this.$matchTokenType(E.getCurrentToken()||"text",r)},g.$matchTokenType=function(v,b){return b.indexOf(v.type||v)>-1},g.recordAutoInsert=function(v,b,D){var E=v.getCursorPosition(),w=b.doc.getLine(E.row);this.isAutoInsertedClosing(E,w,a.autoInsertedLineEnd[0])||(a.autoInsertedBrackets=0),a.autoInsertedRow=E.row,a.autoInsertedLineEnd=D+w.substr(E.column),a.autoInsertedBrackets++},g.recordMaybeInsert=function(v,b,D){var E=v.getCursorPosition(),w=b.doc.getLine(E.row);this.isMaybeInsertedClosing(E,w)||(a.maybeInsertedBrackets=0),a.maybeInsertedRow=E.row,a.maybeInsertedLineStart=w.substr(0,E.column)+D,a.maybeInsertedLineEnd=w.substr(E.column),a.maybeInsertedBrackets++},g.isAutoInsertedClosing=function(v,b,D){return a.autoInsertedBrackets>0&&v.row===a.autoInsertedRow&&D===a.autoInsertedLineEnd[0]&&b.substr(v.column)===a.autoInsertedLineEnd},g.isMaybeInsertedClosing=function(v,b){return a.maybeInsertedBrackets>0&&v.row===a.maybeInsertedRow&&b.substr(v.column)===a.maybeInsertedLineEnd&&b.substr(0,v.column)==a.maybeInsertedLineStart},g.popAutoInsertedClosing=function(){a.autoInsertedLineEnd=a.autoInsertedLineEnd.substr(1),a.autoInsertedBrackets--},g.clearMaybeInsertedClosing=function(){a&&(a.maybeInsertedBrackets=0,a.maybeInsertedRow=-1)},i.inherits(g,s),n.CstyleBehaviour=g}),ace.define("ace/unicode",["require","exports","module"],function(t,n,h){for(var i=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],s=0,d=[],o=0;o2?U%y!=y-1:U%y==0}}else{if(!this.blockComment)return!1;var T=this.blockComment.start,x=this.blockComment.end,M=new RegExp("^(\\s*)(?:"+r.escapeRegExp(T)+")"),O=new RegExp("(?:"+r.escapeRegExp(x)+")\\s*$"),_=function(R,B){S(R,B)||(!D||/\S/.test(R))&&(b.insertInLine({row:B,column:R.length},x),b.insertInLine({row:B,column:w},T))},k=function(R,B){var N;(N=R.match(O))&&b.removeInLine(B,R.length-N[0].length,R.length),(N=R.match(M))&&b.removeInLine(B,N[1].length,N[0].length)},S=function(R,B){if(M.test(R))return!0;for(var N=f.getTokens(B),z=0;zR.length&&(F=R.length)}),w==1/0&&(w=F,D=!1,E=!1),A&&w%y!=0&&(w=Math.floor(w/y)*y),I(E?k:_)},this.toggleBlockComment=function(u,f,g,v){var b=this.blockComment;if(b){!b.start&&b[0]&&(b=b[0]);var D=new a(f,v.row,v.column),E=D.getCurrentToken();f.selection;var w=f.selection.toOrientedRange(),y,A;if(E&&/comment/.test(E.type)){for(var T,x;E&&/comment/.test(E.type);){var M=E.value.indexOf(b.start);if(M!=-1){var O=D.getCurrentTokenRow(),_=D.getCurrentTokenColumn()+M;T=new c(O,_,O,_+b.start.length);break}E=D.stepBackward()}for(var D=new a(f,v.row,v.column),E=D.getCurrentToken();E&&/comment/.test(E.type);){var M=E.value.indexOf(b.end);if(M!=-1){var O=D.getCurrentTokenRow(),_=D.getCurrentTokenColumn()+M;x=new c(O,_,O,_+b.end.length);break}E=D.stepForward()}x&&f.remove(x),T&&(f.remove(T),y=T.start.row,A=-b.start.length)}else A=b.start.length,y=g.start.row,f.insert(g.end,b.end),f.insert(g.start,b.start);w.start.row==y&&(w.start.column+=A),w.end.row==y&&(w.end.column+=A),f.selection.fromOrientedRange(w)}},this.getNextLineIndent=function(u,f,g){return this.$getIndent(f)},this.checkOutdent=function(u,f,g){return!1},this.autoOutdent=function(u,f,g){},this.$getIndent=function(u){return u.match(/^\s*/)[0]},this.createWorker=function(u){return null},this.createModeDelegates=function(u){this.$embeds=[],this.$modes={};for(var f in u)if(u[f]){var g=u[f],v=g.prototype.$id,b=i.$modes[v];b||(i.$modes[v]=b=new g),i.$modes[f]||(i.$modes[f]=b),this.$embeds.push(f),this.$modes[f]=b}for(var D=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],E=function(y){(function(A){var T=D[y],x=A[T];A[D[y]]=function(){return this.$delegator(T,arguments,x)}})(w)},w=this,f=0;fl[r].column&&r++,p.unshift(r,0),l.splice.apply(l,p),this.$updateRows()}}},d.prototype.$updateRows=function(){var o=this.session.lineWidgets;if(o){var l=!0;o.forEach(function(r,a){if(r)for(l=!1,r.row=a;r.$oldWidget;)r.$oldWidget.row=a,r=r.$oldWidget}),l&&(this.session.lineWidgets=null)}},d.prototype.$registerLineWidget=function(o){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var l=this.session.lineWidgets[o.row];return l&&(o.$oldWidget=l,l.el&&l.el.parentNode&&(l.el.parentNode.removeChild(l.el),l._inDocument=!1)),this.session.lineWidgets[o.row]=o,o},d.prototype.addLineWidget=function(o){if(this.$registerLineWidget(o),o.session=this.session,!this.editor)return o;var l=this.editor.renderer;o.html&&!o.el&&(o.el=i.createElement("div"),o.el.innerHTML=o.html),o.text&&!o.el&&(o.el=i.createElement("div"),o.el.textContent=o.text),o.el&&(i.addCssClass(o.el,"ace_lineWidgetContainer"),o.className&&i.addCssClass(o.el,o.className),o.el.style.position="absolute",o.el.style.zIndex="5",l.container.appendChild(o.el),o._inDocument=!0,o.coverGutter||(o.el.style.zIndex="3"),o.pixelHeight==null&&(o.pixelHeight=o.el.offsetHeight)),o.rowCount==null&&(o.rowCount=o.pixelHeight/l.layerConfig.lineHeight);var r=this.session.getFoldAt(o.row,0);if(o.$fold=r,r){var a=this.session.lineWidgets;o.row==r.end.row&&!a[r.start.row]?a[r.start.row]=o:o.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:o.row}}}),this.$updateRows(),this.renderWidgets(null,l),this.onWidgetChanged(o),o},d.prototype.removeLineWidget=function(o){if(o._inDocument=!1,o.session=null,o.el&&o.el.parentNode&&o.el.parentNode.removeChild(o.el),o.editor&&o.editor.destroy)try{o.editor.destroy()}catch{}if(this.session.lineWidgets){var l=this.session.lineWidgets[o.row];if(l==o)this.session.lineWidgets[o.row]=o.$oldWidget,o.$oldWidget&&this.onWidgetChanged(o.$oldWidget);else for(;l;){if(l.$oldWidget==o){l.$oldWidget=o.$oldWidget;break}l=l.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:o.row}}}),this.$updateRows()},d.prototype.getWidgetsAtRow=function(o){for(var l=this.session.lineWidgets,r=l&&l[o],a=[];r;)a.push(r),r=r.$oldWidget;return a},d.prototype.onWidgetChanged=function(o){this.session._changedWidgets.push(o),this.editor&&this.editor.renderer.updateFull()},d.prototype.measureWidgets=function(o,l){var r=this.session._changedWidgets,a=l.layerConfig;if(!(!r||!r.length)){for(var c=1/0,p=0;p0&&!a[c];)c--;this.firstRow=r.firstRow,this.lastRow=r.lastRow,l.$cursorLayer.config=r;for(var u=c;u<=p;u++){var f=a[u];if(!(!f||!f.el)){if(f.hidden){f.el.style.top=-100-(f.pixelHeight||0)+"px";continue}f._inDocument||(f._inDocument=!0,l.container.appendChild(f.el));var g=l.$cursorLayer.getPixelPosition({row:u,column:0},!0).top;f.coverLine||(g+=r.lineHeight*this.session.getRowLineCount(f.row)),f.el.style.top=g-r.offset+"px";var v=f.coverGutter?0:l.gutterWidth;f.fixedWidth||(v-=l.scrollLeft),f.el.style.left=v+"px",f.fullWidth&&f.screenWidth&&(f.el.style.minWidth=r.width+2*r.padding+"px"),f.fixedWidth?f.el.style.right=l.scrollBar.getWidth()+"px":f.el.style.right=""}}}},d})();n.LineWidgets=s}),ace.define("ace/apply_delta",["require","exports","module"],function(t,n,h){n.applyDelta=function(i,s,d){var o=s.start.row,l=s.start.column,r=i[o]||"";switch(s.action){case"insert":var a=s.lines;if(a.length===1)i[o]=r.substring(0,l)+s.lines[0]+r.substring(l);else{var c=[o,1].concat(s.lines);i.splice.apply(i,c),i[o]=r.substring(0,l)+i[o],i[o+s.lines.length-1]+=r.substring(l)}break;case"remove":var p=s.end.column,u=s.end.row;o===u?i[o]=r.substring(0,l)+r.substring(p):i.splice(o,u-o+1,r.substring(0,l)+i[u].substring(p));break}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(t,n,h){var i=t("./lib/oop"),s=t("./lib/event_emitter").EventEmitter,d=(function(){function r(a,c,p){this.$onChange=this.onChange.bind(this),this.attach(a),typeof c!="number"?this.setPosition(c.row,c.column):this.setPosition(c,p)}return r.prototype.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},r.prototype.getDocument=function(){return this.document},r.prototype.onChange=function(a){if(!(a.start.row==a.end.row&&a.start.row!=this.row)&&!(a.start.row>this.row)){var c=l(a,{row:this.row,column:this.column},this.$insertRight);this.setPosition(c.row,c.column,!0)}},r.prototype.setPosition=function(a,c,p){var u;if(p?u={row:a,column:c}:u=this.$clipPositionToDocument(a,c),!(this.row==u.row&&this.column==u.column)){var f={row:this.row,column:this.column};this.row=u.row,this.column=u.column,this._signal("change",{old:f,value:u})}},r.prototype.detach=function(){this.document.off("change",this.$onChange)},r.prototype.attach=function(a){this.document=a||this.document,this.document.on("change",this.$onChange)},r.prototype.$clipPositionToDocument=function(a,c){var p={};return a>=this.document.getLength()?(p.row=Math.max(0,this.document.getLength()-1),p.column=this.document.getLine(p.row).length):a<0?(p.row=0,p.column=0):(p.row=a,p.column=Math.min(this.document.getLine(p.row).length,Math.max(0,c))),c<0&&(p.column=0),p},r})();d.prototype.$insertRight=!1,i.implement(d.prototype,s);function o(r,a,c){var p=c?r.column<=a.column:r.column=h&&(c=h-1,p=void 0);var f=this.getLine(c);return p==null&&(p=f.length),p=Math.min(Math.max(p,0),f.length),{row:c,column:p}},a.prototype.clonePos=function(c){return{row:c.row,column:c.column}},a.prototype.pos=function(c,p){return{row:c,column:p}},a.prototype.$clipPosition=function(c){var p=this.getLength();return c.row>=p?(c.row=Math.max(0,p-1),c.column=this.getLine(p-1).length):(c.row=Math.max(0,c.row),c.column=Math.min(Math.max(c.column,0),this.getLine(c.row).length)),c},a.prototype.insertFullLines=function(c,p){c=Math.min(Math.max(c,0),this.getLength());var h=0;c0,f=p=0&&this.applyDelta({start:this.pos(c,this.getLine(c).length),end:this.pos(c+1,0),action:"remove",lines:["",""]})},a.prototype.replace=function(c,p){if(c instanceof o||(c=o.fromPoints(c.start,c.end)),p.length===0&&c.isEmpty())return c.start;if(p==this.getTextRange(c))return c.end;this.remove(c);var h;return p?h=this.insert(c.start,p):h=c.start,h},a.prototype.applyDeltas=function(c){for(var p=0;p=0;p--)this.revertDelta(c[p])},a.prototype.applyDelta=function(c,p){var h=c.action=="insert";(h?c.lines.length<=1&&!c.lines[0]:!o.comparePoints(c.start,c.end))||(h&&c.lines.length>2e4?this.$splitAndapplyLargeDelta(c,2e4):(s(this.$lines,c,p),this._signal("change",c)))},a.prototype.$safeApplyDelta=function(c){var p=this.$lines.length;(c.action=="remove"&&c.start.row20){a.running=setTimeout(a.$worker,20);break}}a.currentLine=p,h==-1&&(h=p),g<=h&&a.fireUpdateEvent(g,h)}}}return o.prototype.setTokenizer=function(l){this.tokenizer=l,this.lines=[],this.states=[],this.start(0)},o.prototype.setDocument=function(l){this.doc=l,this.lines=[],this.states=[],this.stop()},o.prototype.fireUpdateEvent=function(l,r){var a={first:l,last:r};this._signal("update",{data:a})},o.prototype.start=function(l){this.currentLine=Math.min(l||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},o.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},o.prototype.$updateOnChange=function(l){var r=l.start.row,a=l.end.row-r;if(a===0)this.lines[r]=null;else if(l.action=="remove")this.lines.splice(r,a+1,null),this.states.splice(r,a+1,null);else{var c=Array(a+1);c.unshift(r,1),this.lines.splice.apply(this.lines,c),this.states.splice.apply(this.states,c)}this.currentLine=Math.min(r,this.currentLine,this.doc.getLength()),this.stop()},o.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},o.prototype.getTokens=function(l){return this.lines[l]||this.$tokenizeRow(l)},o.prototype.getState=function(l){return this.currentLine==l&&this.$tokenizeRow(l),this.states[l]||"start"},o.prototype.$tokenizeRow=function(l){var r=this.doc.getLine(l),a=this.states[l-1],c=this.tokenizer.getLineTokens(r,a,l);return this.states[l]+""!=c.state+""?(this.states[l]=c.state,this.lines[l+1]=null,this.currentLine>l+1&&(this.currentLine=l+1)):this.currentLine==l&&(this.currentLine=l+1),this.lines[l]=c.tokens},o.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},o})();i.implement(d.prototype,s),n.BackgroundTokenizer=d}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],function(t,n,u){var i=t("./lib/lang"),s=t("./range").Range,d=(function(){function o(l,r,a){a===void 0&&(a="text"),this.setRegexp(l),this.clazz=r,this.type=a,this.docLen=0}return o.prototype.setRegexp=function(l){this.regExp+""!=l+""&&(this.regExp=l,this.cache=[])},o.prototype.update=function(l,r,a,c){if(this.regExp){for(var p=c.firstRow,h=c.lastRow,f={},g=a.$editor&&a.$editor.$search,v=g&&g.$isMultilineSearch(a.$editor.getLastSearchOptions()),b=p;b<=h;b++){var D=this.cache[b];if(D==null||a.getValue().length!=this.docLen){if(v){D=[];var E=g.$multiLineForward(a,this.regExp,b,h);if(E){var w=E.endRow<=h?E.endRow-1:h;w>b&&(b=w),D.push(new s(E.startRow,E.startCol,E.endRow,E.endCol))}D.length>this.MAX_RANGES&&(D=D.slice(0,this.MAX_RANGES))}else D=i.getMatchOffsets(a.getLine(b),this.regExp),D.length>this.MAX_RANGES&&(D=D.slice(0,this.MAX_RANGES)),D=D.map(function($){return new s(b,$.offset,b,$.offset+$.length)});this.cache[b]=D.length?D:""}if(D.length!==0)for(var y=D.length;y--;){var A=D[y].toScreenRange(a),T=A.toString();f[T]||(f[T]=!0,r.drawSingleLineMarker(l,A,this.clazz,c))}}this.docLen=a.getValue().length}},o})();d.prototype.MAX_RANGES=500,n.SearchHighlight=d}),ace.define("ace/undomanager",["require","exports","module","ace/range"],function(t,n,u){var i=(function(){function w(){this.$keepRedoStack,this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()}return w.prototype.addSession=function(y){this.$session=y},w.prototype.add=function(y,A,T){if(!this.$fromUndo&&y!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),A===!1||!this.lastDeltas){this.lastDeltas=[];var $=this.$undoStack.length;$>this.$undoDepth-1&&this.$undoStack.splice(0,$-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),y.id=this.$rev=++this.$maxRev}(y.action=="remove"||y.action=="insert")&&(this.$lastDelta=y),this.lastDeltas.push(y)}},w.prototype.addSelection=function(y,A){this.selections.push({value:y,rev:A||this.$rev})},w.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},w.prototype.markIgnored=function(y,A){A==null&&(A=this.$rev+1);for(var T=this.$undoStack,$=T.length;$--;){var M=T[$][0];if(M.id<=y)break;M.id0},w.prototype.canRedo=function(){return this.$redoStack.length>0},w.prototype.bookmark=function(y){y==null&&(y=this.$rev),this.mark=y},w.prototype.isAtBookmark=function(){return this.$rev===this.mark},w.prototype.toJSON=function(){return{$redoStack:this.$redoStack,$undoStack:this.$undoStack}},w.prototype.fromJSON=function(y){this.reset(),this.$undoStack=y.$undoStack,this.$redoStack=y.$redoStack},w.prototype.$prettyPrint=function(y){return y?a(y):a(this.$undoStack)+` +`},a.prototype.getLine=function(c){return this.$lines[c]||""},a.prototype.getLines=function(c,p){return this.$lines.slice(c,p+1)},a.prototype.getAllLines=function(){return this.getLines(0,this.getLength())},a.prototype.getLength=function(){return this.$lines.length},a.prototype.getTextRange=function(c){return this.getLinesForRange(c).join(this.getNewLineCharacter())},a.prototype.getLinesForRange=function(c){var p;if(c.start.row===c.end.row)p=[this.getLine(c.start.row).substring(c.start.column,c.end.column)];else{p=this.getLines(c.start.row,c.end.row),p[0]=(p[0]||"").substring(c.start.column);var u=p.length-1;c.end.row-c.start.row==u&&(p[u]=p[u].substring(0,c.end.column))}return p},a.prototype.insertLines=function(c,p){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(c,p)},a.prototype.removeLines=function(c,p){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(c,p)},a.prototype.insertNewLine=function(c){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(c,["",""])},a.prototype.insert=function(c,p){return this.getLength()<=1&&this.$detectNewLine(p),this.insertMergedLines(c,this.$split(p))},a.prototype.insertInLine=function(c,p){var u=this.clippedPos(c.row,c.column),f=this.pos(c.row,c.column+p.length);return this.applyDelta({start:u,end:f,action:"insert",lines:[p]},!0),this.clonePos(f)},a.prototype.clippedPos=function(c,p){var u=this.getLength();c===void 0?c=u:c<0?c=0:c>=u&&(c=u-1,p=void 0);var f=this.getLine(c);return p==null&&(p=f.length),p=Math.min(Math.max(p,0),f.length),{row:c,column:p}},a.prototype.clonePos=function(c){return{row:c.row,column:c.column}},a.prototype.pos=function(c,p){return{row:c,column:p}},a.prototype.$clipPosition=function(c){var p=this.getLength();return c.row>=p?(c.row=Math.max(0,p-1),c.column=this.getLine(p-1).length):(c.row=Math.max(0,c.row),c.column=Math.min(Math.max(c.column,0),this.getLine(c.row).length)),c},a.prototype.insertFullLines=function(c,p){c=Math.min(Math.max(c,0),this.getLength());var u=0;c0,f=p=0&&this.applyDelta({start:this.pos(c,this.getLine(c).length),end:this.pos(c+1,0),action:"remove",lines:["",""]})},a.prototype.replace=function(c,p){if(c instanceof o||(c=o.fromPoints(c.start,c.end)),p.length===0&&c.isEmpty())return c.start;if(p==this.getTextRange(c))return c.end;this.remove(c);var u;return p?u=this.insert(c.start,p):u=c.start,u},a.prototype.applyDeltas=function(c){for(var p=0;p=0;p--)this.revertDelta(c[p])},a.prototype.applyDelta=function(c,p){var u=c.action=="insert";(u?c.lines.length<=1&&!c.lines[0]:!o.comparePoints(c.start,c.end))||(u&&c.lines.length>2e4?this.$splitAndapplyLargeDelta(c,2e4):(s(this.$lines,c,p),this._signal("change",c)))},a.prototype.$safeApplyDelta=function(c){var p=this.$lines.length;(c.action=="remove"&&c.start.row20){a.running=setTimeout(a.$worker,20);break}}a.currentLine=p,u==-1&&(u=p),g<=u&&a.fireUpdateEvent(g,u)}}}return o.prototype.setTokenizer=function(l){this.tokenizer=l,this.lines=[],this.states=[],this.start(0)},o.prototype.setDocument=function(l){this.doc=l,this.lines=[],this.states=[],this.stop()},o.prototype.fireUpdateEvent=function(l,r){var a={first:l,last:r};this._signal("update",{data:a})},o.prototype.start=function(l){this.currentLine=Math.min(l||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},o.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},o.prototype.$updateOnChange=function(l){var r=l.start.row,a=l.end.row-r;if(a===0)this.lines[r]=null;else if(l.action=="remove")this.lines.splice(r,a+1,null),this.states.splice(r,a+1,null);else{var c=Array(a+1);c.unshift(r,1),this.lines.splice.apply(this.lines,c),this.states.splice.apply(this.states,c)}this.currentLine=Math.min(r,this.currentLine,this.doc.getLength()),this.stop()},o.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},o.prototype.getTokens=function(l){return this.lines[l]||this.$tokenizeRow(l)},o.prototype.getState=function(l){return this.currentLine==l&&this.$tokenizeRow(l),this.states[l]||"start"},o.prototype.$tokenizeRow=function(l){var r=this.doc.getLine(l),a=this.states[l-1],c=this.tokenizer.getLineTokens(r,a,l);return this.states[l]+""!=c.state+""?(this.states[l]=c.state,this.lines[l+1]=null,this.currentLine>l+1&&(this.currentLine=l+1)):this.currentLine==l&&(this.currentLine=l+1),this.lines[l]=c.tokens},o.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},o})();i.implement(d.prototype,s),n.BackgroundTokenizer=d}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],function(t,n,h){var i=t("./lib/lang"),s=t("./range").Range,d=(function(){function o(l,r,a){a===void 0&&(a="text"),this.setRegexp(l),this.clazz=r,this.type=a,this.docLen=0}return o.prototype.setRegexp=function(l){this.regExp+""!=l+""&&(this.regExp=l,this.cache=[])},o.prototype.update=function(l,r,a,c){if(this.regExp){for(var p=c.firstRow,u=c.lastRow,f={},g=a.$editor&&a.$editor.$search,v=g&&g.$isMultilineSearch(a.$editor.getLastSearchOptions()),b=p;b<=u;b++){var D=this.cache[b];if(D==null||a.getValue().length!=this.docLen){if(v){D=[];var E=g.$multiLineForward(a,this.regExp,b,u);if(E){var w=E.endRow<=u?E.endRow-1:u;w>b&&(b=w),D.push(new s(E.startRow,E.startCol,E.endRow,E.endCol))}D.length>this.MAX_RANGES&&(D=D.slice(0,this.MAX_RANGES))}else D=i.getMatchOffsets(a.getLine(b),this.regExp),D.length>this.MAX_RANGES&&(D=D.slice(0,this.MAX_RANGES)),D=D.map(function(x){return new s(b,x.offset,b,x.offset+x.length)});this.cache[b]=D.length?D:""}if(D.length!==0)for(var y=D.length;y--;){var A=D[y].toScreenRange(a),T=A.toString();f[T]||(f[T]=!0,r.drawSingleLineMarker(l,A,this.clazz,c))}}this.docLen=a.getValue().length}},o})();d.prototype.MAX_RANGES=500,n.SearchHighlight=d}),ace.define("ace/undomanager",["require","exports","module","ace/range"],function(t,n,h){var i=(function(){function w(){this.$keepRedoStack,this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()}return w.prototype.addSession=function(y){this.$session=y},w.prototype.add=function(y,A,T){if(!this.$fromUndo&&y!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),A===!1||!this.lastDeltas){this.lastDeltas=[];var x=this.$undoStack.length;x>this.$undoDepth-1&&this.$undoStack.splice(0,x-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),y.id=this.$rev=++this.$maxRev}(y.action=="remove"||y.action=="insert")&&(this.$lastDelta=y),this.lastDeltas.push(y)}},w.prototype.addSelection=function(y,A){this.selections.push({value:y,rev:A||this.$rev})},w.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},w.prototype.markIgnored=function(y,A){A==null&&(A=this.$rev+1);for(var T=this.$undoStack,x=T.length;x--;){var M=T[x][0];if(M.id<=y)break;M.id0},w.prototype.canRedo=function(){return this.$redoStack.length>0},w.prototype.bookmark=function(y){y==null&&(y=this.$rev),this.mark=y},w.prototype.isAtBookmark=function(){return this.$rev===this.mark},w.prototype.toJSON=function(){return{$redoStack:this.$redoStack,$undoStack:this.$undoStack}},w.prototype.fromJSON=function(y){this.reset(),this.$undoStack=y.$undoStack,this.$redoStack=y.$redoStack},w.prototype.$prettyPrint=function(y){return y?a(y):a(this.$undoStack)+` --- -`+a(this.$redoStack)},w})();i.prototype.hasUndo=i.prototype.canUndo,i.prototype.hasRedo=i.prototype.canRedo,i.prototype.isClean=i.prototype.isAtBookmark,i.prototype.markClean=i.prototype.bookmark;function s(w,y){for(var A=y;A--;){var T=w[A];if(T&&!T[0].ignore){for(;A"+w.end.row+":"+w.end.column}function p(w,y){var A=w.action=="insert",T=y.action=="insert";if(A&&T)if(o(y.start,w.end)>=0)g(y,w,-1);else if(o(y.start,w.start)<=0)g(w,y,1);else return null;else if(A&&!T)if(o(y.start,w.end)>=0)g(y,w,-1);else if(o(y.end,w.start)<=0)g(w,y,-1);else return null;else if(!A&&T)if(o(y.start,w.start)>=0)g(y,w,1);else if(o(y.start,w.start)<=0)g(w,y,1);else return null;else if(!A&&!T)if(o(y.start,w.start)>=0)g(y,w,1);else if(o(y.end,w.start)<=0)g(w,y,-1);else return null;return[y,w]}function h(w,y){for(var A=w.length;A--;)for(var T=0;T=0?g(w,y,-1):(o(w.start,y.start)<=0||g(w,d.fromPoints(y.start,w.start),-1),g(y,w,1));else if(!A&&T)o(y.start,w.end)>=0?g(y,w,-1):(o(y.start,w.start)<=0||g(y,d.fromPoints(w.start,y.start),-1),g(w,y,1));else if(!A&&!T)if(o(y.start,w.end)>=0)g(y,w,-1);else if(o(y.end,w.start)<=0)g(w,y,-1);else{var $,M;return o(w.start,y.start)<0&&($=w,w=b(w,y.start)),o(w.end,y.end)>0&&(M=b(w,y.end)),v(y.end,w.start,w.end,-1),M&&!$&&(w.lines=M.lines,w.start=M.start,w.end=M.end,M=w),[y,$,M].filter(Boolean)}return[y,w]}function g(w,y,A){v(w.start,y.start,y.end,A),v(w.end,y.start,y.end,A)}function v(w,y,A,T){w.row==(T==1?y:A).row&&(w.column+=T*(A.column-y.column)),w.row+=T*(A.row-y.row)}function b(w,y){var A=w.lines,T=w.end;w.end=l(y);var $=w.end.row-w.start.row,M=A.splice($,A.length),O=$?y.column:y.column-w.start.column;A.push(M[0].substring(0,O)),M[0]=M[0].substr(O);var _={start:l(y),end:T,lines:M,action:w.action};return _}function D(w,y){y=r(y);for(var A=w.length;A--;){for(var T=w[A],$=0;$this.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(o),this.folds.sort(function(l,r){return-l.range.compareEnd(r.start.row,r.start.column)}),this.range.compareEnd(o.start.row,o.start.column)>0?(this.end.row=o.end.row,this.end.column=o.end.column):this.range.compareStart(o.end.row,o.end.column)<0&&(this.start.row=o.start.row,this.start.column=o.start.column)}else if(o.start.row==this.end.row)this.folds.push(o),this.end.row=o.end.row,this.end.column=o.end.column;else if(o.end.row==this.start.row)this.folds.unshift(o),this.start.row=o.start.row,this.start.column=o.start.column;else throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");o.foldLine=this},d.prototype.containsRow=function(o){return o>=this.start.row&&o<=this.end.row},d.prototype.walk=function(o,l,r){var a=0,c=this.folds,p,h,f,g=!0;l==null&&(l=this.end.row,r=this.end.column);for(var v=0;v0)){var g=s(l,h.start);return f===0?r&&g!==0?-p-2:p:g>0||g===0&&!r?p:-p-1}}return-p-1},o.prototype.add=function(l){var r=!l.isEmpty(),a=this.pointIndex(l.start,r);a<0&&(a=-a-1);var c=this.pointIndex(l.end,r,a);return c<0?c=-c-1:c++,this.ranges.splice(a,c-a,l)},o.prototype.addList=function(l){for(var r=[],a=l.length;a--;)r.push.apply(r,this.add(l[a]));return r},o.prototype.substractPoint=function(l){var r=this.pointIndex(l);if(r>=0)return this.ranges.splice(r,1)},o.prototype.merge=function(){var l=[],r=this.ranges;r=r.sort(function(f,g){return s(f.start,g.start)});for(var a=r[0],c,p=1;p=0},o.prototype.containsPoint=function(l){return this.pointIndex(l)>=0},o.prototype.rangeAtPoint=function(l){var r=this.pointIndex(l);if(r>=0)return this.ranges[r]},o.prototype.clipRows=function(l,r){var a=this.ranges;if(a[0].start.row>r||a[a.length-1].start.row=c)break}if(l.action=="insert")for(var b=p-c,D=-r.column+a.column;fc)break;if(v.start.row==c&&v.start.column>=r.column&&(v.start.column==r.column&&this.$bias<=0||(v.start.column+=D,v.start.row+=b)),v.end.row==c&&v.end.column>=r.column){if(v.end.column==r.column&&this.$bias<0)continue;v.end.column==r.column&&D>0&&fv.start.column&&v.end.column==h[f+1].start.column&&(v.end.column-=D),v.end.column+=D,v.end.row+=b}}else for(var b=c-p,D=r.column-a.column;fp)break;v.end.rowr.column)&&(v.end.column=r.column,v.end.row=r.row):(v.end.column+=D,v.end.row+=b):v.end.row>p&&(v.end.row+=b),v.start.rowr.column)&&(v.start.column=r.column,v.start.row=r.row):(v.start.column+=D,v.start.row+=b):v.start.row>p&&(v.start.row+=b)}if(b!=0&&f=a)return f;if(f.end.row>a)return null}return null},this.getNextFoldLine=function(a,c){var p=this.$foldData,h=0;for(c&&(h=p.indexOf(c)),h==-1&&(h=0),h;h=a)return f}return null},this.getFoldedRowCount=function(a,c){for(var p=this.$foldData,h=c-a+1,f=0;f=c){b=a?h-=c-b:h=0);break}else v>=a&&(b>=a?h-=v-b:h-=v-a+1)}return h},this.$addFoldLine=function(a){return this.$foldData.push(a),this.$foldData.sort(function(c,p){return c.start.row-p.start.row}),a},this.addFold=function(a,c){var p=this.$foldData,h=!1,f;a instanceof d?f=a:(f=new d(c,a),f.collapseChildren=c.collapseChildren),this.$clipRangeToDocument(f.range);var g=f.start.row,v=f.start.column,b=f.end.row,D=f.end.column,E=this.getFoldAt(g,v,1),w=this.getFoldAt(b,D,-1);if(E&&w==E)return E.addSubFold(f);E&&!E.range.isStart(g,v)&&this.removeFold(E),w&&!w.range.isEnd(b,D)&&this.removeFold(w);var y=this.getFoldsInRange(f.range);y.length>0&&(this.removeFolds(y),f.collapseChildren||y.forEach(function(M){f.addSubFold(M)}));for(var A=0;A0&&this.foldAll(a.start.row+1,a.end.row,a.collapseChildren-1),a.subFolds=[]},this.expandFolds=function(a){a.forEach(function(c){this.expandFold(c)},this)},this.unfold=function(a,c){var p,h;if(a==null)p=new i(0,0,this.getLength(),0),c==null&&(c=!0);else if(typeof a=="number")p=new i(a,0,a,this.getLine(a).length);else if("row"in a)p=i.fromPoints(a,a);else{if(Array.isArray(a))return h=[],a.forEach(function(g){h=h.concat(this.unfold(g))},this),h;p=a}h=this.getFoldsInRangeList(p);for(var f=h;h.length==1&&i.comparePoints(h[0].start,p.start)<0&&i.comparePoints(h[0].end,p.end)>0;)this.expandFolds(h),h=this.getFoldsInRangeList(p);if(c!=!1?this.removeFolds(h):this.expandFolds(h),f.length)return f},this.isRowFolded=function(a,c){return!!this.getFoldLine(a,c)},this.getRowFoldEnd=function(a,c){var p=this.getFoldLine(a,c);return p?p.end.row:a},this.getRowFoldStart=function(a,c){var p=this.getFoldLine(a,c);return p?p.start.row:a},this.getFoldDisplayLine=function(a,c,p,h,f){h==null&&(h=a.start.row),f==null&&(f=0),c==null&&(c=a.end.row),p==null&&(p=this.getLine(c).length);var g=this.doc,v="";return a.walk(function(b,D,E,w){if(!(DE)break;while(f&&v.test(f.type));f=h.stepBackward()}else f=h.getCurrentToken();return b.end.row=h.getCurrentTokenRow(),b.end.column=h.getCurrentTokenColumn(),b.start.row==b.end.row&&b.start.column>b.end.column?void 0:b}},this.foldAll=function(a,c,p,h){p==null&&(p=1e5);var f=this.foldWidgets;if(f){c=c||this.getLength(),a=a||0;for(var g=a;g=a&&(g=v.end.row,v.collapseChildren=p,this.addFold("...",v))}}},this.foldToLevel=function(a){for(this.foldAll();a-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var a=this;this.foldAll(null,null,null,function(c){for(var p=a.getTokens(c),h=0;h=0;){var g=p[h];if(g==null&&(g=p[h]=this.getFoldWidget(h)),g=="start"){var v=this.getFoldWidgetRange(h);if(f||(f=v),v&&v.end.row>=a)break}h--}return{range:h!==-1&&v,firstRange:f}},this.onFoldWidgetClick=function(a,c){c instanceof l&&(c=c.domEvent);var p={children:c.shiftKey,all:c.ctrlKey||c.metaKey,siblings:c.altKey},h=this.$toggleFoldWidget(a,p);if(!h){var f=c.target||c.srcElement;f&&/ace_fold-widget/.test(f.className)&&(f.className+=" ace_invalid")}},this.$toggleFoldWidget=function(a,c){if(this.getFoldWidget){var p=this.getFoldWidget(a),h=this.getLine(a),f=p==="end"?-1:1,g=this.getFoldAt(a,f===-1?0:h.length,f);if(g)return c.children||c.all?this.removeFold(g):this.expandFold(g),g;var v=this.getFoldWidgetRange(a,!0);if(v&&!v.isMultiLine()&&(g=this.getFoldAt(v.start.row,v.start.column,1),g&&v.isEqual(g.range)))return this.removeFold(g),g;if(c.siblings){var b=this.getParentFoldRangeData(a);if(b.range)var D=b.range.start.row+1,E=b.range.end.row;this.foldAll(D,E,c.all?1e4:0)}else c.children?(E=v?v.end.row:this.getLength(),this.foldAll(a+1,E,c.all?1e4:0)):v&&(c.all&&(v.collapseChildren=1e4),this.addFold("...",v));return v}},this.toggleFoldWidget=function(a){var c=this.selection.getCursor().row;c=this.getRowFoldStart(c);var p=this.$toggleFoldWidget(c,{});if(!p){var h=this.getParentFoldRangeData(c,!0);if(p=h.range||h.firstRange,p){c=p.start.row;var f=this.getFoldAt(c,this.getLine(c).length,1);f?this.removeFold(f):this.addFold("...",p)}}},this.updateFoldWidgets=function(a){var c=a.start.row,p=a.end.row-c;if(p===0)this.foldWidgets[c]=null;else if(a.action=="remove")this.foldWidgets.splice(c,p+1,null);else{var h=Array(p+1);h.unshift(c,1),this.foldWidgets.splice.apply(this.foldWidgets,h)}},this.tokenizerUpdateFoldWidgets=function(a){var c=a.data;c.first!=c.last&&this.foldWidgets.length>c.first&&this.foldWidgets.splice(c.first,this.foldWidgets.length)}}n.Folding=r}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(t,n,u){var i=t("../token_iterator").TokenIterator,s=t("../range").Range;function d(){this.findMatchingBracket=function(o,l){if(o.column==0)return null;var r=l||this.getLine(o.row).charAt(o.column-1);if(r=="")return null;var a=r.match(/([\(\[\{])|([\)\]\}])/);return a?a[1]?this.$findClosingBracket(a[1],o):this.$findOpeningBracket(a[2],o):null},this.getBracketRange=function(o){var l=this.getLine(o.row),r=!0,a,c=l.charAt(o.column-1),p=c&&c.match(/([\(\[\{])|([\)\]\}])/);if(p||(c=l.charAt(o.column),o={row:o.row,column:o.column+1},p=c&&c.match(/([\(\[\{])|([\)\]\}])/),r=!1),!p)return null;if(p[1]){var h=this.$findClosingBracket(p[1],o);if(!h)return null;a=s.fromPoints(o,h),r||(a.end.column++,a.start.column--),a.cursor=a.end}else{var h=this.$findOpeningBracket(p[2],o);if(!h)return null;a=s.fromPoints(h,o),r||(a.start.column++,a.end.column--),a.cursor=a.start}return a},this.getMatchingBracketRanges=function(o,l){var r=this.getLine(o.row),a=/([\(\[\{])|([\)\]\}])/,c=!l&&r.charAt(o.column-1),p=c&&c.match(a);if(p||(c=(l===void 0||l)&&r.charAt(o.column),o={row:o.row,column:o.column+1},p=c&&c.match(a)),!p)return null;var h=new s(o.row,o.column-1,o.row,o.column),f=p[1]?this.$findClosingBracket(p[1],o):this.$findOpeningBracket(p[2],o);if(!f)return[h];var g=new s(f.row,f.column,f.row,f.column+1);return[h,g]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(o,l,r){var a=this.$brackets[o],c=1,p=new i(this,l.row,l.column),h=p.getCurrentToken();if(h||(h=p.stepForward()),!!h){r||(r=new RegExp("(\\.?"+h.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));for(var f=l.column-p.getCurrentTokenColumn()-2,g=h.value;;){for(;f>=0;){var v=g.charAt(f);if(v==a){if(c-=1,c==0)return{row:p.getCurrentTokenRow(),column:f+p.getCurrentTokenColumn()}}else v==o&&(c+=1);f-=1}do h=p.stepBackward();while(h&&!r.test(h.type));if(h==null)break;g=h.value,f=g.length-1}return null}},this.$findClosingBracket=function(o,l,r){var a=this.$brackets[o],c=1,p=new i(this,l.row,l.column),h=p.getCurrentToken();if(h||(h=p.stepForward()),!!h){r||(r=new RegExp("(\\.?"+h.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));for(var f=l.column-p.getCurrentTokenColumn();;){for(var g=h.value,v=g.length;f"?a=!0:l.type.indexOf("tag-name")!==-1&&(r=!0));while(l&&!r);return l},this.$findClosingTag=function(o,l){var r,a=l.value,c=l.value,p=0,h=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);l=o.stepForward();var f=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+l.value.length),g=!1;do{if(r=l,r.type.indexOf("tag-close")!==-1&&!g){var v=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);g=!0}if(l=o.stepForward(),l){if(l.value===">"&&!g){var v=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);g=!0}if(l.type.indexOf("tag-name")!==-1){if(a=l.value,c===a){if(r.value==="<")p++;else if(r.value==="")var E=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);else return}}}else if(c===a&&l.value==="/>"&&(p--,p<0))var b=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+2),D=b,E=D,v=new s(f.end.row,f.end.column,f.end.row,f.end.column+1)}}while(l&&p>=0);if(h&&v&&b&&E&&f&&D)return{openTag:new s(h.start.row,h.start.column,v.end.row,v.end.column),closeTag:new s(b.start.row,b.start.column,E.end.row,E.end.column),openTagName:f,closeTagName:D}},this.$findOpeningTag=function(o,l){var r=o.getCurrentToken(),a=l.value,c=0,p=o.getCurrentTokenRow(),h=o.getCurrentTokenColumn(),f=h+2,g=new s(p,h,p,f);o.stepForward();var v=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+l.value.length);if(l.type.indexOf("tag-close")===-1&&(l=o.stepForward()),!(!l||l.value!==">")){var b=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);o.stepBackward(),o.stepBackward();do if(l=r,p=o.getCurrentTokenRow(),h=o.getCurrentTokenColumn(),f=h+l.value.length,r=o.stepBackward(),l){if(l.type.indexOf("tag-name")!==-1){if(a===l.value)if(r.value==="<"){if(c++,c>0){var D=new s(p,h,p,f),E=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);do l=o.stepForward();while(l&&l.value!==">");var w=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1)}}else r.value===""){for(var y=0,A=r;A;){if(A.type.indexOf("tag-name")!==-1&&A.value===a){c--;break}else if(A.value==="<")break;A=o.stepBackward(),y++}for(var T=0;TC&&(this.$docRowCache.splice(C,S),this.$screenRowCache.splice(C,S))},_.prototype.$getRowCacheIndex=function(k,S){for(var C=0,L=k.length-1;C<=L;){var I=C+L>>1,F=k[I];if(S>F)C=I+1;else if(S=S));F++);return L=C[F],L?(L.index=F,L.start=I-L.value.length,L):null},_.prototype.setUndoManager=function(k){if(this.$undoManager=k,this.$informUndoManager&&this.$informUndoManager.cancel(),k){var S=this;k.addSession(this),this.$syncInformUndoManager=function(){S.$informUndoManager.cancel(),S.mergeUndoDeltas=!1},this.$informUndoManager=s.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},_.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},_.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},_.prototype.getTabString=function(){return this.getUseSoftTabs()?s.stringRepeat(" ",this.getTabSize()):" "},_.prototype.setUseSoftTabs=function(k){this.setOption("useSoftTabs",k)},_.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},_.prototype.setTabSize=function(k){this.setOption("tabSize",k)},_.prototype.getTabSize=function(){return this.$tabSize},_.prototype.isTabStop=function(k){return this.$useSoftTabs&&k.column%this.$tabSize===0},_.prototype.setNavigateWithinSoftTabs=function(k){this.setOption("navigateWithinSoftTabs",k)},_.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},_.prototype.setOverwrite=function(k){this.setOption("overwrite",k)},_.prototype.getOverwrite=function(){return this.$overwrite},_.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},_.prototype.addGutterDecoration=function(k,S){this.$decorations[k]||(this.$decorations[k]=""),this.$decorations[k]+=" "+S,this._signal("changeBreakpoint",{})},_.prototype.removeGutterCustomWidget=function(k){this.$editor&&this.$editor.renderer.$gutterLayer.$removeCustomWidget(k)},_.prototype.addGutterCustomWidget=function(k,S){this.$editor&&this.$editor.renderer.$gutterLayer.$addCustomWidget(k,S)},_.prototype.removeGutterDecoration=function(k,S){this.$decorations[k]=(this.$decorations[k]||"").replace(" "+S,""),this._signal("changeBreakpoint",{})},_.prototype.getBreakpoints=function(){return this.$breakpoints},_.prototype.setBreakpoints=function(k){this.$breakpoints=[];for(var S=0;S0&&(L=!!C.charAt(S-1).match(this.tokenRe)),L||(L=!!C.charAt(S).match(this.tokenRe)),L)var I=this.tokenRe;else if(/^\s+$/.test(C.slice(S-1,S+1)))var I=/\s/;else var I=this.nonTokenRe;var F=S;if(F>0){do F--;while(F>=0&&C.charAt(F).match(I));F++}for(var R=S;Rk&&(k=S.screenWidth)}),this.lineWidgetWidth=k},_.prototype.$computeWidth=function(k){if(this.$modified||k){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var S=this.doc.getAllLines(),C=this.$rowLengthCache,L=0,I=0,F=this.$foldData[I],R=F?F.start.row:1/0,B=S.length,N=0;NR){if(N=F.end.row+1,N>=B)break;F=this.$foldData[I++],R=F?F.start.row:1/0}C[N]==null&&(C[N]=this.$getStringScreenWidth(S[N])[0]),C[N]>L&&(L=C[N])}this.screenWidth=L}},_.prototype.getLine=function(k){return this.doc.getLine(k)},_.prototype.getLines=function(k,S){return this.doc.getLines(k,S)},_.prototype.getLength=function(){return this.doc.getLength()},_.prototype.getTextRange=function(k){return this.doc.getTextRange(k||this.selection.getRange())},_.prototype.insert=function(k,S){return this.doc.insert(k,S)},_.prototype.remove=function(k){return this.doc.remove(k)},_.prototype.removeFullLines=function(k,S){return this.doc.removeFullLines(k,S)},_.prototype.undoChanges=function(k,S){if(k.length){this.$fromUndo=!0;for(var C=k.length-1;C!=-1;C--){var L=k[C];L.action=="insert"||L.action=="remove"?this.doc.revertDelta(L):L.folds&&this.addFolds(L.folds)}!S&&this.$undoSelect&&(k.selectionBefore?this.selection.fromJSON(k.selectionBefore):this.selection.setRange(this.$getUndoSelection(k,!0))),this.$fromUndo=!1}},_.prototype.redoChanges=function(k,S){if(k.length){this.$fromUndo=!0;for(var C=0;Ck.end.column&&(F.start.column+=B),F.end.row==k.end.row&&F.end.column>k.end.column&&(F.end.column+=B)),R&&F.start.row>=k.end.row&&(F.start.row+=R,F.end.row+=R)}if(F.end=this.insert(F.start,L),I.length){var N=k.start,H=F.start,R=H.row-N.row,B=H.column-N.column;this.addFolds(I.map(function(U){return U=U.clone(),U.start.row==N.row&&(U.start.column+=B),U.end.row==N.row&&(U.end.column+=B),U.start.row+=R,U.end.row+=R,U}))}return F},_.prototype.indentRows=function(k,S,C){C=C.replace(/\t/g,this.getTabString());for(var L=k;L<=S;L++)this.doc.insertInLine({row:L,column:0},C)},_.prototype.outdentRows=function(k){for(var S=k.collapseRows(),C=new c(0,0,0,0),L=this.getTabSize(),I=S.start.row;I<=S.end.row;++I){var F=this.getLine(I);C.start.row=I,C.end.row=I;for(var R=0;R0){var L=this.getRowFoldEnd(S+C);if(L>this.doc.getLength()-1)return 0;var I=L-S}else{k=this.$clipRowToDocument(k),S=this.$clipRowToDocument(S);var I=S-k+1}var F=new c(k,0,S,Number.MAX_VALUE),R=this.getFoldsInRange(F).map(function(N){return N=N.clone(),N.start.row+=I,N.end.row+=I,N}),B=C==0?this.doc.getLines(k,S):this.doc.removeFullLines(k,S);return this.doc.insertFullLines(k+I,B),R.length&&this.addFolds(R),I},_.prototype.moveLinesUp=function(k,S){return this.$moveLines(k,S,-1)},_.prototype.moveLinesDown=function(k,S){return this.$moveLines(k,S,1)},_.prototype.duplicateLines=function(k,S){return this.$moveLines(k,S,0)},_.prototype.$clipRowToDocument=function(k){return Math.max(0,Math.min(k,this.doc.getLength()-1))},_.prototype.$clipColumnToRow=function(k,S){return S<0?0:Math.min(this.doc.getLine(k).length,S)},_.prototype.$clipPositionToDocument=function(k,S){if(S=Math.max(0,S),k<0)k=0,S=0;else{var C=this.doc.getLength();k>=C?(k=C-1,S=this.doc.getLine(C-1).length):S=Math.min(this.doc.getLine(k).length,S)}return{row:k,column:S}},_.prototype.$clipRangeToDocument=function(k){k.start.row<0?(k.start.row=0,k.start.column=0):k.start.column=this.$clipColumnToRow(k.start.row,k.start.column);var S=this.doc.getLength()-1;return k.end.row>S?(k.end.row=S,k.end.column=this.doc.getLine(S).length):k.end.column=this.$clipColumnToRow(k.end.row,k.end.column),k},_.prototype.setUseWrapMode=function(k){if(k!=this.$useWrapMode){if(this.$useWrapMode=k,this.$modified=!0,this.$resetRowCache(0),k){var S=this.getLength();this.$wrapData=Array(S),this.$updateWrapData(0,S-1)}this._signal("changeWrapMode")}},_.prototype.getUseWrapMode=function(){return this.$useWrapMode},_.prototype.setWrapLimitRange=function(k,S){(this.$wrapLimitRange.min!==k||this.$wrapLimitRange.max!==S)&&(this.$wrapLimitRange={min:k,max:S},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},_.prototype.adjustWrapLimit=function(k,S){var C=this.$wrapLimitRange;C.max<0&&(C={min:S,max:S});var L=this.$constrainWrapLimit(k,C.min,C.max);return L!=this.$wrapLimit&&L>1?(this.$wrapLimit=L,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},_.prototype.$constrainWrapLimit=function(k,S,C){return S&&(k=Math.max(S,k)),C&&(k=Math.min(C,k)),k},_.prototype.getWrapLimit=function(){return this.$wrapLimit},_.prototype.setWrapLimit=function(k){this.setWrapLimitRange(k,k)},_.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},_.prototype.$updateInternalDataOnChange=function(k){var S=this.$useWrapMode,C=k.action,L=k.start,I=k.end,F=L.row,R=I.row,B=R-F,N=null;if(this.$updating=!0,B!=0)if(C==="remove"){this[S?"$wrapData":"$rowLengthCache"].splice(F,B);var H=this.$foldData;N=this.getFoldsInRange(k),this.removeFolds(N);var W=this.getFoldLine(I.row),j=0;if(W){W.addRemoveChars(I.row,I.column,L.column-I.column),W.shiftRow(-B);var U=this.getFoldLine(F);U&&U!==W&&(U.merge(W),W=U),j=H.indexOf(W)+1}for(j;j=I.row&&W.shiftRow(-B)}R=F}else{var K=Array(B);K.unshift(F,0);var J=S?this.$wrapData:this.$rowLengthCache;J.splice.apply(J,K);var H=this.$foldData,W=this.getFoldLine(F),j=0;if(W){var Y=W.range.compareInside(L.row,L.column);Y==0?(W=W.split(L.row,L.column),W&&(W.shiftRow(B),W.addRemoveChars(R,0,I.column-L.column))):Y==-1&&(W.addRemoveChars(F,0,I.column-L.column),W.shiftRow(B)),j=H.indexOf(W)+1}for(j;j=F&&W.shiftRow(B)}}else{B=Math.abs(k.start.column-k.end.column),C==="remove"&&(N=this.getFoldsInRange(k),this.removeFolds(N),B=-B);var W=this.getFoldLine(F);W&&W.addRemoveChars(F,L.column,B)}return S&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,S?this.$updateWrapData(F,R):this.$updateRowLengthCache(F,R),N},_.prototype.$updateRowLengthCache=function(k,S){this.$rowLengthCache[k]=null,this.$rowLengthCache[S]=null},_.prototype.$updateWrapData=function(k,S){var C=this.doc.getAllLines(),L=this.getTabSize(),I=this.$wrapData,F=this.$wrapLimit,R,B,N=k;for(S=Math.min(S,C.length-1);N<=S;)B=this.getFoldLine(N,B),B?(R=[],B.walk(function(H,W,j,U){var K;if(H!=null){K=this.$getDisplayTokens(H,R.length),K[0]=w;for(var J=1;JS-U;){var K=F+S-U;if(k[K-1]>=T&&k[K]>=T){j(K);continue}if(k[K]==w||k[K]==y){for(K;K!=F-1&&k[K]!=w;K--);if(K>F){j(K);continue}for(K=F+S,K;K>2)),F-1);K>J&&k[K]J&&k[K]J&&k[K]==A;)K--}else for(;K>J&&k[K]J){j(++K);continue}K=F+S,k[K]==E&&K--,j(K-U)}return L},_.prototype.$getDisplayTokens=function(k,S){var C=[],L;S=S||0;for(var I=0;I39&&F<48||F>57&&F<64?C.push(A):F>=4352&&O(F)?C.push(D,E):C.push(D)}return C},_.prototype.$getStringScreenWidth=function(k,S,C){if(S==0)return[0,0];S==null&&(S=1/0),C=C||0;var L,I;for(I=0;I=4352&&O(L)?C+=2:C+=1,!(C>S));I++);return[C,I]},_.prototype.getRowLength=function(k){var S=1;return this.lineWidgets&&(S+=this.lineWidgets[k]&&this.lineWidgets[k].rowCount||0),!this.$useWrapMode||!this.$wrapData[k]?S:this.$wrapData[k].length+S},_.prototype.getRowLineCount=function(k){return!this.$useWrapMode||!this.$wrapData[k]?1:this.$wrapData[k].length+1},_.prototype.getRowWrapIndent=function(k){if(this.$useWrapMode){var S=this.screenToDocumentPosition(k,Number.MAX_VALUE),C=this.$wrapData[S.row];return C.length&&C[0]=0)var B=H[W],I=this.$docRowCache[W],U=k>H[j-1];else var U=!j;for(var K=this.getLength()-1,J=this.getNextFoldLine(I),Y=J?J.start.row:1/0;B<=k&&(N=this.getRowLength(I),!(B+N>k||I>=K));)B+=N,I++,I>Y&&(I=J.end.row+1,J=this.getNextFoldLine(I,J),Y=J?J.start.row:1/0),U&&(this.$docRowCache.push(I),this.$screenRowCache.push(B));if(J&&J.start.row<=I)L=this.getFoldDisplayLine(J),I=J.start.row;else{if(B+N<=k||I>K)return{row:K,column:this.getLine(K).length};L=this.getLine(I),J=null}var X=0,q=Math.floor(k-B);if(this.$useWrapMode){var ne=this.$wrapData[I];ne&&(R=ne[q],q>0&&ne.length&&(X=ne.indent,F=ne[q-1]||ne[ne.length-1],L=L.substring(F)))}return C!==void 0&&this.$bidiHandler.isBidiRow(B+q,I,q)&&(S=this.$bidiHandler.offsetToCol(C)),F+=this.$getStringScreenWidth(L,S-X)[1],this.$useWrapMode&&F>=R&&(F=R-1),J?J.idxToPosition(F):{row:I,column:F}},_.prototype.documentToScreenPosition=function(k,S){if(typeof S>"u")var C=this.$clipPositionToDocument(k.row,k.column);else C=this.$clipPositionToDocument(k,S);k=C.row,S=C.column;var L=0,I=null,F=null;F=this.getFoldAt(k,S,1),F&&(k=F.start.row,S=F.start.column);var R,B=0,N=this.$docRowCache,H=this.$getRowCacheIndex(N,k),W=N.length;if(W&&H>=0)var B=N[H],L=this.$screenRowCache[H],j=k>N[W-1];else var j=!W;for(var U=this.getNextFoldLine(B),K=U?U.start.row:1/0;B=K){if(R=U.end.row+1,R>k)break;U=this.getNextFoldLine(R,U),K=U?U.start.row:1/0}else R=B+1;L+=this.getRowLength(B),B=R,j&&(this.$docRowCache.push(B),this.$screenRowCache.push(L))}var J="";U&&B>=K?(J=this.getFoldDisplayLine(U,k,S),I=U.start.row):(J=this.getLine(k).substring(0,S),I=k);var Y=0;if(this.$useWrapMode){var X=this.$wrapData[I];if(X){for(var q=0;J.length>=X[q];)L++,q++;J=J.substring(X[q-1]||0,J.length),Y=q>0?X.indent:0}}return this.lineWidgets&&this.lineWidgets[B]&&this.lineWidgets[B].rowsAbove&&(L+=this.lineWidgets[B].rowsAbove),{row:L,column:Y+this.$getStringScreenWidth(J)[0]}},_.prototype.documentToScreenColumn=function(k,S){return this.documentToScreenPosition(k,S).column},_.prototype.documentToScreenRow=function(k,S){return this.documentToScreenPosition(k,S).row},_.prototype.getScreenLength=function(){var k=0,S=null;if(this.$useWrapMode)for(var I=this.$wrapData.length,F=0,L=0,S=this.$foldData[L++],R=S?S.start.row:1/0;FR&&(F=S.end.row+1,S=this.$foldData[L++],R=S?S.start.row:1/0)}else{k=this.getLength();for(var C=this.$foldData,L=0;LC));F++);return[L,F]})},_.prototype.getPrecedingCharacter=function(){var k=this.selection.getCursor();if(k.column===0)return k.row===0?"":this.doc.getNewLineCharacter();var S=this.getLine(k.row);return S[k.column-1]},_.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.endOperation(),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection&&(this.selection.off("changeCursor",this.$onSelectionChange),this.selection.off("changeSelection",this.$onSelectionChange)),this.selection.detach()},_})();b.$uid=0,b.prototype.$modes=o.$modes,b.prototype.getValue=b.prototype.toString,b.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},b.prototype.$overwrite=!1,b.prototype.$mode=null,b.prototype.$modeId=null,b.prototype.$scrollTop=0,b.prototype.$scrollLeft=0,b.prototype.$wrapLimit=80,b.prototype.$useWrapMode=!1,b.prototype.$wrapLimitRange={min:null,max:null},b.prototype.lineWidgets=null,b.prototype.isFullWidth=O,i.implement(b.prototype,l);var D=1,E=2,w=3,y=4,A=9,T=10,$=11,M=12;function O(_){return _<4352?!1:_>=4352&&_<=4447||_>=4515&&_<=4519||_>=4602&&_<=4607||_>=9001&&_<=9002||_>=11904&&_<=11929||_>=11931&&_<=12019||_>=12032&&_<=12245||_>=12272&&_<=12283||_>=12288&&_<=12350||_>=12353&&_<=12438||_>=12441&&_<=12543||_>=12549&&_<=12589||_>=12593&&_<=12686||_>=12688&&_<=12730||_>=12736&&_<=12771||_>=12784&&_<=12830||_>=12832&&_<=12871||_>=12880&&_<=13054||_>=13056&&_<=19903||_>=19968&&_<=42124||_>=42128&&_<=42182||_>=43360&&_<=43388||_>=44032&&_<=55203||_>=55216&&_<=55238||_>=55243&&_<=55291||_>=63744&&_<=64255||_>=65040&&_<=65049||_>=65072&&_<=65106||_>=65108&&_<=65126||_>=65128&&_<=65131||_>=65281&&_<=65376||_>=65504&&_<=65510}t("./edit_session/folding").Folding.call(b.prototype),t("./edit_session/bracket_match").BracketMatch.call(b.prototype),o.defineOptions(b.prototype,"session",{wrap:{set:function(_){if(!_||_=="off"?_=!1:_=="free"?_=!0:_=="printMargin"?_=-1:typeof _=="string"&&(_=parseInt(_,10)||!1),this.$wrap!=_)if(this.$wrap=_,!_)this.setUseWrapMode(!1);else{var k=typeof _=="number"?_:null;this.setWrapLimitRange(k,k),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(_){_=_=="auto"?this.$mode.type!="text":_!="text",_!=this.$wrapAsCode&&(this.$wrapAsCode=_,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(_){this.$useWorker=_,this.$stopWorker(),_&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(_){_=parseInt(_),_>0&&this.$tabSize!==_&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=_,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(_){this.setFoldStyle(_)},handlesSet:!0},overwrite:{set:function(_){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(_){this.doc.setNewLineMode(_)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(_){this.setMode(_)},get:function(){return this.$modeId},handlesSet:!0}}),n.EditSession=b}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(t,n,u){var i=t("./lib/lang"),s=t("./lib/oop"),d=t("./range").Range,o=(function(){function c(){this.$options={}}return c.prototype.set=function(p){return s.mixin(this.$options,p),this},c.prototype.getOptions=function(){return i.copyObject(this.$options)},c.prototype.setOptions=function(p){this.$options=p},c.prototype.find=function(p){var h=this.$options,f=this.$matchIterator(p,h);if(!f)return!1;var g=null;return f.forEach(function(v,b,D,E){return g=new d(v,b,D,E),b==E&&h.start&&h.start.start&&h.skipCurrent!=!1&&g.isEqual(h.start)?(g=null,!1):!0}),g},c.prototype.findAll=function(p){var h=this.$options;if(!h.needle)return[];this.$assembleRegExp(h);var f=h.range,g=f?p.getLines(f.start.row,f.end.row):p.doc.getAllLines(),v=[],b=h.re;if(h.$isMultiLine){var D=b.length,E=g.length-D,w;e:for(var y=b.offset||0;y<=E;y++){for(var A=0;AM||(v.push(w=new d(y,M,y+D-1,O)),D>2&&(y=y+D-2))}}else for(var _,k=0;kk&&(k=C),v.push(new d(_.startRow,_.startCol,_.endRow,_.endCol))}}else{_=i.getMatchOffsets(g[k],b);for(var A=0;A<_.length;A++){var L=_[A];v.push(new d(k,L.offset,k,L.offset+L.length))}}if(f){for(var I=f.start.column,F=f.end.column,k=0,A=v.length-1;kF&&v[A].end.row==R;)A--;for(v=v.slice(k,A+1),k=0,A=v.length;k=v){f+="\\";break}var D=p.charCodeAt(g);switch(D){case h.Backslash:f+="\\";break;case h.n:f+=` -`;break;case h.t:f+=" ";break}continue}if(b===h.DollarSign){if(g++,g>=v){f+="$";break}var E=p.charCodeAt(g);if(E===h.DollarSign){f+="$$";continue}if(E===h.Digit0||E===h.Ampersand){f+="$&";continue}if(h.Digit1<=E&&E<=h.Digit9){f+="$"+p[g];continue}}f+=p[g]}return f||p},c.prototype.replace=function(p,h){var f=this.$options,g=this.$assembleRegExp(f);if(f.$isMultiLine)return h;if(g){var v=this.$isMultilineSearch(f);v&&(p=p.replace(/\r\n|\r|\n/g,` -`));var b=g.exec(p);if(!b||!v&&b[0].length!=p.length)return null;if(h=f.regExp?this.parseReplaceString(h):h.replace(/\$/g,"$$$$"),h=p.replace(g,h),f.preserveCase){h=h.split("");for(var D=Math.min(p.length,p.length);D--;){var E=p[D];E&&E.toLowerCase()!=E?h[D]=h[D].toUpperCase():h[D]=h[D].toLowerCase()}h=h.join("")}return h}},c.prototype.$assembleRegExp=function(p,h){if(p.needle instanceof RegExp)return p.re=p.needle;var f=p.needle;if(!p.needle)return p.re=!1;p.regExp||(f=i.escapeRegExp(f));var g=p.caseSensitive?"gm":"gmi";try{new RegExp(f,"u"),p.$supportsUnicodeFlag=!0,g+="u"}catch{p.$supportsUnicodeFlag=!1}if(p.wholeWord&&(f=l(f,p)),p.$isMultiLine=!h&&/[\n\r]/.test(f),p.$isMultiLine)return p.re=this.$assembleMultilineRegExp(f,g);try{var v=new RegExp(f,g)}catch{v=!1}return p.re=v},c.prototype.$assembleMultilineRegExp=function(p,h){for(var f=p.replace(/\r\n|\r|\n/g,`$ +`):y=c(w.value)),w.start&&(y+=c(w)),(w.id||w.rev)&&(y+=" ("+(w.id||w.rev)+")"),y}function c(w){return w.start.row+":"+w.start.column+"=>"+w.end.row+":"+w.end.column}function p(w,y){var A=w.action=="insert",T=y.action=="insert";if(A&&T)if(o(y.start,w.end)>=0)g(y,w,-1);else if(o(y.start,w.start)<=0)g(w,y,1);else return null;else if(A&&!T)if(o(y.start,w.end)>=0)g(y,w,-1);else if(o(y.end,w.start)<=0)g(w,y,-1);else return null;else if(!A&&T)if(o(y.start,w.start)>=0)g(y,w,1);else if(o(y.start,w.start)<=0)g(w,y,1);else return null;else if(!A&&!T)if(o(y.start,w.start)>=0)g(y,w,1);else if(o(y.end,w.start)<=0)g(w,y,-1);else return null;return[y,w]}function u(w,y){for(var A=w.length;A--;)for(var T=0;T=0?g(w,y,-1):(o(w.start,y.start)<=0||g(w,d.fromPoints(y.start,w.start),-1),g(y,w,1));else if(!A&&T)o(y.start,w.end)>=0?g(y,w,-1):(o(y.start,w.start)<=0||g(y,d.fromPoints(w.start,y.start),-1),g(w,y,1));else if(!A&&!T)if(o(y.start,w.end)>=0)g(y,w,-1);else if(o(y.end,w.start)<=0)g(w,y,-1);else{var x,M;return o(w.start,y.start)<0&&(x=w,w=b(w,y.start)),o(w.end,y.end)>0&&(M=b(w,y.end)),v(y.end,w.start,w.end,-1),M&&!x&&(w.lines=M.lines,w.start=M.start,w.end=M.end,M=w),[y,x,M].filter(Boolean)}return[y,w]}function g(w,y,A){v(w.start,y.start,y.end,A),v(w.end,y.start,y.end,A)}function v(w,y,A,T){w.row==(T==1?y:A).row&&(w.column+=T*(A.column-y.column)),w.row+=T*(A.row-y.row)}function b(w,y){var A=w.lines,T=w.end;w.end=l(y);var x=w.end.row-w.start.row,M=A.splice(x,A.length),O=x?y.column:y.column-w.start.column;A.push(M[0].substring(0,O)),M[0]=M[0].substr(O);var _={start:l(y),end:T,lines:M,action:w.action};return _}function D(w,y){y=r(y);for(var A=w.length;A--;){for(var T=w[A],x=0;xthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(o),this.folds.sort(function(l,r){return-l.range.compareEnd(r.start.row,r.start.column)}),this.range.compareEnd(o.start.row,o.start.column)>0?(this.end.row=o.end.row,this.end.column=o.end.column):this.range.compareStart(o.end.row,o.end.column)<0&&(this.start.row=o.start.row,this.start.column=o.start.column)}else if(o.start.row==this.end.row)this.folds.push(o),this.end.row=o.end.row,this.end.column=o.end.column;else if(o.end.row==this.start.row)this.folds.unshift(o),this.start.row=o.start.row,this.start.column=o.start.column;else throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");o.foldLine=this},d.prototype.containsRow=function(o){return o>=this.start.row&&o<=this.end.row},d.prototype.walk=function(o,l,r){var a=0,c=this.folds,p,u,f,g=!0;l==null&&(l=this.end.row,r=this.end.column);for(var v=0;v0)){var g=s(l,u.start);return f===0?r&&g!==0?-p-2:p:g>0||g===0&&!r?p:-p-1}}return-p-1},o.prototype.add=function(l){var r=!l.isEmpty(),a=this.pointIndex(l.start,r);a<0&&(a=-a-1);var c=this.pointIndex(l.end,r,a);return c<0?c=-c-1:c++,this.ranges.splice(a,c-a,l)},o.prototype.addList=function(l){for(var r=[],a=l.length;a--;)r.push.apply(r,this.add(l[a]));return r},o.prototype.substractPoint=function(l){var r=this.pointIndex(l);if(r>=0)return this.ranges.splice(r,1)},o.prototype.merge=function(){var l=[],r=this.ranges;r=r.sort(function(f,g){return s(f.start,g.start)});for(var a=r[0],c,p=1;p=0},o.prototype.containsPoint=function(l){return this.pointIndex(l)>=0},o.prototype.rangeAtPoint=function(l){var r=this.pointIndex(l);if(r>=0)return this.ranges[r]},o.prototype.clipRows=function(l,r){var a=this.ranges;if(a[0].start.row>r||a[a.length-1].start.row=c)break}if(l.action=="insert")for(var b=p-c,D=-r.column+a.column;fc)break;if(v.start.row==c&&v.start.column>=r.column&&(v.start.column==r.column&&this.$bias<=0||(v.start.column+=D,v.start.row+=b)),v.end.row==c&&v.end.column>=r.column){if(v.end.column==r.column&&this.$bias<0)continue;v.end.column==r.column&&D>0&&fv.start.column&&v.end.column==u[f+1].start.column&&(v.end.column-=D),v.end.column+=D,v.end.row+=b}}else for(var b=c-p,D=r.column-a.column;fp)break;v.end.rowr.column)&&(v.end.column=r.column,v.end.row=r.row):(v.end.column+=D,v.end.row+=b):v.end.row>p&&(v.end.row+=b),v.start.rowr.column)&&(v.start.column=r.column,v.start.row=r.row):(v.start.column+=D,v.start.row+=b):v.start.row>p&&(v.start.row+=b)}if(b!=0&&f=a)return f;if(f.end.row>a)return null}return null},this.getNextFoldLine=function(a,c){var p=this.$foldData,u=0;for(c&&(u=p.indexOf(c)),u==-1&&(u=0),u;u=a)return f}return null},this.getFoldedRowCount=function(a,c){for(var p=this.$foldData,u=c-a+1,f=0;f=c){b=a?u-=c-b:u=0);break}else v>=a&&(b>=a?u-=v-b:u-=v-a+1)}return u},this.$addFoldLine=function(a){return this.$foldData.push(a),this.$foldData.sort(function(c,p){return c.start.row-p.start.row}),a},this.addFold=function(a,c){var p=this.$foldData,u=!1,f;a instanceof d?f=a:(f=new d(c,a),f.collapseChildren=c.collapseChildren),this.$clipRangeToDocument(f.range);var g=f.start.row,v=f.start.column,b=f.end.row,D=f.end.column,E=this.getFoldAt(g,v,1),w=this.getFoldAt(b,D,-1);if(E&&w==E)return E.addSubFold(f);E&&!E.range.isStart(g,v)&&this.removeFold(E),w&&!w.range.isEnd(b,D)&&this.removeFold(w);var y=this.getFoldsInRange(f.range);y.length>0&&(this.removeFolds(y),f.collapseChildren||y.forEach(function(M){f.addSubFold(M)}));for(var A=0;A0&&this.foldAll(a.start.row+1,a.end.row,a.collapseChildren-1),a.subFolds=[]},this.expandFolds=function(a){a.forEach(function(c){this.expandFold(c)},this)},this.unfold=function(a,c){var p,u;if(a==null)p=new i(0,0,this.getLength(),0),c==null&&(c=!0);else if(typeof a=="number")p=new i(a,0,a,this.getLine(a).length);else if("row"in a)p=i.fromPoints(a,a);else{if(Array.isArray(a))return u=[],a.forEach(function(g){u=u.concat(this.unfold(g))},this),u;p=a}u=this.getFoldsInRangeList(p);for(var f=u;u.length==1&&i.comparePoints(u[0].start,p.start)<0&&i.comparePoints(u[0].end,p.end)>0;)this.expandFolds(u),u=this.getFoldsInRangeList(p);if(c!=!1?this.removeFolds(u):this.expandFolds(u),f.length)return f},this.isRowFolded=function(a,c){return!!this.getFoldLine(a,c)},this.getRowFoldEnd=function(a,c){var p=this.getFoldLine(a,c);return p?p.end.row:a},this.getRowFoldStart=function(a,c){var p=this.getFoldLine(a,c);return p?p.start.row:a},this.getFoldDisplayLine=function(a,c,p,u,f){u==null&&(u=a.start.row),f==null&&(f=0),c==null&&(c=a.end.row),p==null&&(p=this.getLine(c).length);var g=this.doc,v="";return a.walk(function(b,D,E,w){if(!(DE)break;while(f&&v.test(f.type));f=u.stepBackward()}else f=u.getCurrentToken();return b.end.row=u.getCurrentTokenRow(),b.end.column=u.getCurrentTokenColumn(),b.start.row==b.end.row&&b.start.column>b.end.column?void 0:b}},this.foldAll=function(a,c,p,u){p==null&&(p=1e5);var f=this.foldWidgets;if(f){c=c||this.getLength(),a=a||0;for(var g=a;g=a&&(g=v.end.row,v.collapseChildren=p,this.addFold("...",v))}}},this.foldToLevel=function(a){for(this.foldAll();a-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var a=this;this.foldAll(null,null,null,function(c){for(var p=a.getTokens(c),u=0;u=0;){var g=p[u];if(g==null&&(g=p[u]=this.getFoldWidget(u)),g=="start"){var v=this.getFoldWidgetRange(u);if(f||(f=v),v&&v.end.row>=a)break}u--}return{range:u!==-1&&v,firstRange:f}},this.onFoldWidgetClick=function(a,c){c instanceof l&&(c=c.domEvent);var p={children:c.shiftKey,all:c.ctrlKey||c.metaKey,siblings:c.altKey},u=this.$toggleFoldWidget(a,p);if(!u){var f=c.target||c.srcElement;f&&/ace_fold-widget/.test(f.className)&&(f.className+=" ace_invalid")}},this.$toggleFoldWidget=function(a,c){if(this.getFoldWidget){var p=this.getFoldWidget(a),u=this.getLine(a),f=p==="end"?-1:1,g=this.getFoldAt(a,f===-1?0:u.length,f);if(g)return c.children||c.all?this.removeFold(g):this.expandFold(g),g;var v=this.getFoldWidgetRange(a,!0);if(v&&!v.isMultiLine()&&(g=this.getFoldAt(v.start.row,v.start.column,1),g&&v.isEqual(g.range)))return this.removeFold(g),g;if(c.siblings){var b=this.getParentFoldRangeData(a);if(b.range)var D=b.range.start.row+1,E=b.range.end.row;this.foldAll(D,E,c.all?1e4:0)}else c.children?(E=v?v.end.row:this.getLength(),this.foldAll(a+1,E,c.all?1e4:0)):v&&(c.all&&(v.collapseChildren=1e4),this.addFold("...",v));return v}},this.toggleFoldWidget=function(a){var c=this.selection.getCursor().row;c=this.getRowFoldStart(c);var p=this.$toggleFoldWidget(c,{});if(!p){var u=this.getParentFoldRangeData(c,!0);if(p=u.range||u.firstRange,p){c=p.start.row;var f=this.getFoldAt(c,this.getLine(c).length,1);f?this.removeFold(f):this.addFold("...",p)}}},this.updateFoldWidgets=function(a){var c=a.start.row,p=a.end.row-c;if(p===0)this.foldWidgets[c]=null;else if(a.action=="remove")this.foldWidgets.splice(c,p+1,null);else{var u=Array(p+1);u.unshift(c,1),this.foldWidgets.splice.apply(this.foldWidgets,u)}},this.tokenizerUpdateFoldWidgets=function(a){var c=a.data;c.first!=c.last&&this.foldWidgets.length>c.first&&this.foldWidgets.splice(c.first,this.foldWidgets.length)}}n.Folding=r}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(t,n,h){var i=t("../token_iterator").TokenIterator,s=t("../range").Range;function d(){this.findMatchingBracket=function(o,l){if(o.column==0)return null;var r=l||this.getLine(o.row).charAt(o.column-1);if(r=="")return null;var a=r.match(/([\(\[\{])|([\)\]\}])/);return a?a[1]?this.$findClosingBracket(a[1],o):this.$findOpeningBracket(a[2],o):null},this.getBracketRange=function(o){var l=this.getLine(o.row),r=!0,a,c=l.charAt(o.column-1),p=c&&c.match(/([\(\[\{])|([\)\]\}])/);if(p||(c=l.charAt(o.column),o={row:o.row,column:o.column+1},p=c&&c.match(/([\(\[\{])|([\)\]\}])/),r=!1),!p)return null;if(p[1]){var u=this.$findClosingBracket(p[1],o);if(!u)return null;a=s.fromPoints(o,u),r||(a.end.column++,a.start.column--),a.cursor=a.end}else{var u=this.$findOpeningBracket(p[2],o);if(!u)return null;a=s.fromPoints(u,o),r||(a.start.column++,a.end.column--),a.cursor=a.start}return a},this.getMatchingBracketRanges=function(o,l){var r=this.getLine(o.row),a=/([\(\[\{])|([\)\]\}])/,c=!l&&r.charAt(o.column-1),p=c&&c.match(a);if(p||(c=(l===void 0||l)&&r.charAt(o.column),o={row:o.row,column:o.column+1},p=c&&c.match(a)),!p)return null;var u=new s(o.row,o.column-1,o.row,o.column),f=p[1]?this.$findClosingBracket(p[1],o):this.$findOpeningBracket(p[2],o);if(!f)return[u];var g=new s(f.row,f.column,f.row,f.column+1);return[u,g]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(o,l,r){var a=this.$brackets[o],c=1,p=new i(this,l.row,l.column),u=p.getCurrentToken();if(u||(u=p.stepForward()),!!u){r||(r=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));for(var f=l.column-p.getCurrentTokenColumn()-2,g=u.value;;){for(;f>=0;){var v=g.charAt(f);if(v==a){if(c-=1,c==0)return{row:p.getCurrentTokenRow(),column:f+p.getCurrentTokenColumn()}}else v==o&&(c+=1);f-=1}do u=p.stepBackward();while(u&&!r.test(u.type));if(u==null)break;g=u.value,f=g.length-1}return null}},this.$findClosingBracket=function(o,l,r){var a=this.$brackets[o],c=1,p=new i(this,l.row,l.column),u=p.getCurrentToken();if(u||(u=p.stepForward()),!!u){r||(r=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));for(var f=l.column-p.getCurrentTokenColumn();;){for(var g=u.value,v=g.length;f"?a=!0:l.type.indexOf("tag-name")!==-1&&(r=!0));while(l&&!r);return l},this.$findClosingTag=function(o,l){var r,a=l.value,c=l.value,p=0,u=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);l=o.stepForward();var f=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+l.value.length),g=!1;do{if(r=l,r.type.indexOf("tag-close")!==-1&&!g){var v=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);g=!0}if(l=o.stepForward(),l){if(l.value===">"&&!g){var v=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);g=!0}if(l.type.indexOf("tag-name")!==-1){if(a=l.value,c===a){if(r.value==="<")p++;else if(r.value==="")var E=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);else return}}}else if(c===a&&l.value==="/>"&&(p--,p<0))var b=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+2),D=b,E=D,v=new s(f.end.row,f.end.column,f.end.row,f.end.column+1)}}while(l&&p>=0);if(u&&v&&b&&E&&f&&D)return{openTag:new s(u.start.row,u.start.column,v.end.row,v.end.column),closeTag:new s(b.start.row,b.start.column,E.end.row,E.end.column),openTagName:f,closeTagName:D}},this.$findOpeningTag=function(o,l){var r=o.getCurrentToken(),a=l.value,c=0,p=o.getCurrentTokenRow(),u=o.getCurrentTokenColumn(),f=u+2,g=new s(p,u,p,f);o.stepForward();var v=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+l.value.length);if(l.type.indexOf("tag-close")===-1&&(l=o.stepForward()),!(!l||l.value!==">")){var b=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);o.stepBackward(),o.stepBackward();do if(l=r,p=o.getCurrentTokenRow(),u=o.getCurrentTokenColumn(),f=u+l.value.length,r=o.stepBackward(),l){if(l.type.indexOf("tag-name")!==-1){if(a===l.value)if(r.value==="<"){if(c++,c>0){var D=new s(p,u,p,f),E=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1);do l=o.stepForward();while(l&&l.value!==">");var w=new s(o.getCurrentTokenRow(),o.getCurrentTokenColumn(),o.getCurrentTokenRow(),o.getCurrentTokenColumn()+1)}}else r.value===""){for(var y=0,A=r;A;){if(A.type.indexOf("tag-name")!==-1&&A.value===a){c--;break}else if(A.value==="<")break;A=o.stepBackward(),y++}for(var T=0;TC&&(this.$docRowCache.splice(C,S),this.$screenRowCache.splice(C,S))},_.prototype.$getRowCacheIndex=function(k,S){for(var C=0,L=k.length-1;C<=L;){var I=C+L>>1,F=k[I];if(S>F)C=I+1;else if(S=S));F++);return L=C[F],L?(L.index=F,L.start=I-L.value.length,L):null},_.prototype.setUndoManager=function(k){if(this.$undoManager=k,this.$informUndoManager&&this.$informUndoManager.cancel(),k){var S=this;k.addSession(this),this.$syncInformUndoManager=function(){S.$informUndoManager.cancel(),S.mergeUndoDeltas=!1},this.$informUndoManager=s.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},_.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},_.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},_.prototype.getTabString=function(){return this.getUseSoftTabs()?s.stringRepeat(" ",this.getTabSize()):" "},_.prototype.setUseSoftTabs=function(k){this.setOption("useSoftTabs",k)},_.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},_.prototype.setTabSize=function(k){this.setOption("tabSize",k)},_.prototype.getTabSize=function(){return this.$tabSize},_.prototype.isTabStop=function(k){return this.$useSoftTabs&&k.column%this.$tabSize===0},_.prototype.setNavigateWithinSoftTabs=function(k){this.setOption("navigateWithinSoftTabs",k)},_.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},_.prototype.setOverwrite=function(k){this.setOption("overwrite",k)},_.prototype.getOverwrite=function(){return this.$overwrite},_.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},_.prototype.addGutterDecoration=function(k,S){this.$decorations[k]||(this.$decorations[k]=""),this.$decorations[k]+=" "+S,this._signal("changeBreakpoint",{})},_.prototype.removeGutterCustomWidget=function(k){this.$editor&&this.$editor.renderer.$gutterLayer.$removeCustomWidget(k)},_.prototype.addGutterCustomWidget=function(k,S){this.$editor&&this.$editor.renderer.$gutterLayer.$addCustomWidget(k,S)},_.prototype.removeGutterDecoration=function(k,S){this.$decorations[k]=(this.$decorations[k]||"").replace(" "+S,""),this._signal("changeBreakpoint",{})},_.prototype.getBreakpoints=function(){return this.$breakpoints},_.prototype.setBreakpoints=function(k){this.$breakpoints=[];for(var S=0;S0&&(L=!!C.charAt(S-1).match(this.tokenRe)),L||(L=!!C.charAt(S).match(this.tokenRe)),L)var I=this.tokenRe;else if(/^\s+$/.test(C.slice(S-1,S+1)))var I=/\s/;else var I=this.nonTokenRe;var F=S;if(F>0){do F--;while(F>=0&&C.charAt(F).match(I));F++}for(var R=S;Rk&&(k=S.screenWidth)}),this.lineWidgetWidth=k},_.prototype.$computeWidth=function(k){if(this.$modified||k){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var S=this.doc.getAllLines(),C=this.$rowLengthCache,L=0,I=0,F=this.$foldData[I],R=F?F.start.row:1/0,B=S.length,N=0;NR){if(N=F.end.row+1,N>=B)break;F=this.$foldData[I++],R=F?F.start.row:1/0}C[N]==null&&(C[N]=this.$getStringScreenWidth(S[N])[0]),C[N]>L&&(L=C[N])}this.screenWidth=L}},_.prototype.getLine=function(k){return this.doc.getLine(k)},_.prototype.getLines=function(k,S){return this.doc.getLines(k,S)},_.prototype.getLength=function(){return this.doc.getLength()},_.prototype.getTextRange=function(k){return this.doc.getTextRange(k||this.selection.getRange())},_.prototype.insert=function(k,S){return this.doc.insert(k,S)},_.prototype.remove=function(k){return this.doc.remove(k)},_.prototype.removeFullLines=function(k,S){return this.doc.removeFullLines(k,S)},_.prototype.undoChanges=function(k,S){if(k.length){this.$fromUndo=!0;for(var C=k.length-1;C!=-1;C--){var L=k[C];L.action=="insert"||L.action=="remove"?this.doc.revertDelta(L):L.folds&&this.addFolds(L.folds)}!S&&this.$undoSelect&&(k.selectionBefore?this.selection.fromJSON(k.selectionBefore):this.selection.setRange(this.$getUndoSelection(k,!0))),this.$fromUndo=!1}},_.prototype.redoChanges=function(k,S){if(k.length){this.$fromUndo=!0;for(var C=0;Ck.end.column&&(F.start.column+=B),F.end.row==k.end.row&&F.end.column>k.end.column&&(F.end.column+=B)),R&&F.start.row>=k.end.row&&(F.start.row+=R,F.end.row+=R)}if(F.end=this.insert(F.start,L),I.length){var N=k.start,z=F.start,R=z.row-N.row,B=z.column-N.column;this.addFolds(I.map(function(U){return U=U.clone(),U.start.row==N.row&&(U.start.column+=B),U.end.row==N.row&&(U.end.column+=B),U.start.row+=R,U.end.row+=R,U}))}return F},_.prototype.indentRows=function(k,S,C){C=C.replace(/\t/g,this.getTabString());for(var L=k;L<=S;L++)this.doc.insertInLine({row:L,column:0},C)},_.prototype.outdentRows=function(k){for(var S=k.collapseRows(),C=new c(0,0,0,0),L=this.getTabSize(),I=S.start.row;I<=S.end.row;++I){var F=this.getLine(I);C.start.row=I,C.end.row=I;for(var R=0;R0){var L=this.getRowFoldEnd(S+C);if(L>this.doc.getLength()-1)return 0;var I=L-S}else{k=this.$clipRowToDocument(k),S=this.$clipRowToDocument(S);var I=S-k+1}var F=new c(k,0,S,Number.MAX_VALUE),R=this.getFoldsInRange(F).map(function(N){return N=N.clone(),N.start.row+=I,N.end.row+=I,N}),B=C==0?this.doc.getLines(k,S):this.doc.removeFullLines(k,S);return this.doc.insertFullLines(k+I,B),R.length&&this.addFolds(R),I},_.prototype.moveLinesUp=function(k,S){return this.$moveLines(k,S,-1)},_.prototype.moveLinesDown=function(k,S){return this.$moveLines(k,S,1)},_.prototype.duplicateLines=function(k,S){return this.$moveLines(k,S,0)},_.prototype.$clipRowToDocument=function(k){return Math.max(0,Math.min(k,this.doc.getLength()-1))},_.prototype.$clipColumnToRow=function(k,S){return S<0?0:Math.min(this.doc.getLine(k).length,S)},_.prototype.$clipPositionToDocument=function(k,S){if(S=Math.max(0,S),k<0)k=0,S=0;else{var C=this.doc.getLength();k>=C?(k=C-1,S=this.doc.getLine(C-1).length):S=Math.min(this.doc.getLine(k).length,S)}return{row:k,column:S}},_.prototype.$clipRangeToDocument=function(k){k.start.row<0?(k.start.row=0,k.start.column=0):k.start.column=this.$clipColumnToRow(k.start.row,k.start.column);var S=this.doc.getLength()-1;return k.end.row>S?(k.end.row=S,k.end.column=this.doc.getLine(S).length):k.end.column=this.$clipColumnToRow(k.end.row,k.end.column),k},_.prototype.setUseWrapMode=function(k){if(k!=this.$useWrapMode){if(this.$useWrapMode=k,this.$modified=!0,this.$resetRowCache(0),k){var S=this.getLength();this.$wrapData=Array(S),this.$updateWrapData(0,S-1)}this._signal("changeWrapMode")}},_.prototype.getUseWrapMode=function(){return this.$useWrapMode},_.prototype.setWrapLimitRange=function(k,S){(this.$wrapLimitRange.min!==k||this.$wrapLimitRange.max!==S)&&(this.$wrapLimitRange={min:k,max:S},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},_.prototype.adjustWrapLimit=function(k,S){var C=this.$wrapLimitRange;C.max<0&&(C={min:S,max:S});var L=this.$constrainWrapLimit(k,C.min,C.max);return L!=this.$wrapLimit&&L>1?(this.$wrapLimit=L,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},_.prototype.$constrainWrapLimit=function(k,S,C){return S&&(k=Math.max(S,k)),C&&(k=Math.min(C,k)),k},_.prototype.getWrapLimit=function(){return this.$wrapLimit},_.prototype.setWrapLimit=function(k){this.setWrapLimitRange(k,k)},_.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},_.prototype.$updateInternalDataOnChange=function(k){var S=this.$useWrapMode,C=k.action,L=k.start,I=k.end,F=L.row,R=I.row,B=R-F,N=null;if(this.$updating=!0,B!=0)if(C==="remove"){this[S?"$wrapData":"$rowLengthCache"].splice(F,B);var z=this.$foldData;N=this.getFoldsInRange(k),this.removeFolds(N);var W=this.getFoldLine(I.row),j=0;if(W){W.addRemoveChars(I.row,I.column,L.column-I.column),W.shiftRow(-B);var U=this.getFoldLine(F);U&&U!==W&&(U.merge(W),W=U),j=z.indexOf(W)+1}for(j;j=I.row&&W.shiftRow(-B)}R=F}else{var K=Array(B);K.unshift(F,0);var J=S?this.$wrapData:this.$rowLengthCache;J.splice.apply(J,K);var z=this.$foldData,W=this.getFoldLine(F),j=0;if(W){var Y=W.range.compareInside(L.row,L.column);Y==0?(W=W.split(L.row,L.column),W&&(W.shiftRow(B),W.addRemoveChars(R,0,I.column-L.column))):Y==-1&&(W.addRemoveChars(F,0,I.column-L.column),W.shiftRow(B)),j=z.indexOf(W)+1}for(j;j=F&&W.shiftRow(B)}}else{B=Math.abs(k.start.column-k.end.column),C==="remove"&&(N=this.getFoldsInRange(k),this.removeFolds(N),B=-B);var W=this.getFoldLine(F);W&&W.addRemoveChars(F,L.column,B)}return S&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,S?this.$updateWrapData(F,R):this.$updateRowLengthCache(F,R),N},_.prototype.$updateRowLengthCache=function(k,S){this.$rowLengthCache[k]=null,this.$rowLengthCache[S]=null},_.prototype.$updateWrapData=function(k,S){var C=this.doc.getAllLines(),L=this.getTabSize(),I=this.$wrapData,F=this.$wrapLimit,R,B,N=k;for(S=Math.min(S,C.length-1);N<=S;)B=this.getFoldLine(N,B),B?(R=[],B.walk(function(z,W,j,U){var K;if(z!=null){K=this.$getDisplayTokens(z,R.length),K[0]=w;for(var J=1;JS-U;){var K=F+S-U;if(k[K-1]>=T&&k[K]>=T){j(K);continue}if(k[K]==w||k[K]==y){for(K;K!=F-1&&k[K]!=w;K--);if(K>F){j(K);continue}for(K=F+S,K;K>2)),F-1);K>J&&k[K]J&&k[K]J&&k[K]==A;)K--}else for(;K>J&&k[K]J){j(++K);continue}K=F+S,k[K]==E&&K--,j(K-U)}return L},_.prototype.$getDisplayTokens=function(k,S){var C=[],L;S=S||0;for(var I=0;I39&&F<48||F>57&&F<64?C.push(A):F>=4352&&O(F)?C.push(D,E):C.push(D)}return C},_.prototype.$getStringScreenWidth=function(k,S,C){if(S==0)return[0,0];S==null&&(S=1/0),C=C||0;var L,I;for(I=0;I=4352&&O(L)?C+=2:C+=1,!(C>S));I++);return[C,I]},_.prototype.getRowLength=function(k){var S=1;return this.lineWidgets&&(S+=this.lineWidgets[k]&&this.lineWidgets[k].rowCount||0),!this.$useWrapMode||!this.$wrapData[k]?S:this.$wrapData[k].length+S},_.prototype.getRowLineCount=function(k){return!this.$useWrapMode||!this.$wrapData[k]?1:this.$wrapData[k].length+1},_.prototype.getRowWrapIndent=function(k){if(this.$useWrapMode){var S=this.screenToDocumentPosition(k,Number.MAX_VALUE),C=this.$wrapData[S.row];return C.length&&C[0]=0)var B=z[W],I=this.$docRowCache[W],U=k>z[j-1];else var U=!j;for(var K=this.getLength()-1,J=this.getNextFoldLine(I),Y=J?J.start.row:1/0;B<=k&&(N=this.getRowLength(I),!(B+N>k||I>=K));)B+=N,I++,I>Y&&(I=J.end.row+1,J=this.getNextFoldLine(I,J),Y=J?J.start.row:1/0),U&&(this.$docRowCache.push(I),this.$screenRowCache.push(B));if(J&&J.start.row<=I)L=this.getFoldDisplayLine(J),I=J.start.row;else{if(B+N<=k||I>K)return{row:K,column:this.getLine(K).length};L=this.getLine(I),J=null}var X=0,q=Math.floor(k-B);if(this.$useWrapMode){var ne=this.$wrapData[I];ne&&(R=ne[q],q>0&&ne.length&&(X=ne.indent,F=ne[q-1]||ne[ne.length-1],L=L.substring(F)))}return C!==void 0&&this.$bidiHandler.isBidiRow(B+q,I,q)&&(S=this.$bidiHandler.offsetToCol(C)),F+=this.$getStringScreenWidth(L,S-X)[1],this.$useWrapMode&&F>=R&&(F=R-1),J?J.idxToPosition(F):{row:I,column:F}},_.prototype.documentToScreenPosition=function(k,S){if(typeof S>"u")var C=this.$clipPositionToDocument(k.row,k.column);else C=this.$clipPositionToDocument(k,S);k=C.row,S=C.column;var L=0,I=null,F=null;F=this.getFoldAt(k,S,1),F&&(k=F.start.row,S=F.start.column);var R,B=0,N=this.$docRowCache,z=this.$getRowCacheIndex(N,k),W=N.length;if(W&&z>=0)var B=N[z],L=this.$screenRowCache[z],j=k>N[W-1];else var j=!W;for(var U=this.getNextFoldLine(B),K=U?U.start.row:1/0;B=K){if(R=U.end.row+1,R>k)break;U=this.getNextFoldLine(R,U),K=U?U.start.row:1/0}else R=B+1;L+=this.getRowLength(B),B=R,j&&(this.$docRowCache.push(B),this.$screenRowCache.push(L))}var J="";U&&B>=K?(J=this.getFoldDisplayLine(U,k,S),I=U.start.row):(J=this.getLine(k).substring(0,S),I=k);var Y=0;if(this.$useWrapMode){var X=this.$wrapData[I];if(X){for(var q=0;J.length>=X[q];)L++,q++;J=J.substring(X[q-1]||0,J.length),Y=q>0?X.indent:0}}return this.lineWidgets&&this.lineWidgets[B]&&this.lineWidgets[B].rowsAbove&&(L+=this.lineWidgets[B].rowsAbove),{row:L,column:Y+this.$getStringScreenWidth(J)[0]}},_.prototype.documentToScreenColumn=function(k,S){return this.documentToScreenPosition(k,S).column},_.prototype.documentToScreenRow=function(k,S){return this.documentToScreenPosition(k,S).row},_.prototype.getScreenLength=function(){var k=0,S=null;if(this.$useWrapMode)for(var I=this.$wrapData.length,F=0,L=0,S=this.$foldData[L++],R=S?S.start.row:1/0;FR&&(F=S.end.row+1,S=this.$foldData[L++],R=S?S.start.row:1/0)}else{k=this.getLength();for(var C=this.$foldData,L=0;LC));F++);return[L,F]})},_.prototype.getPrecedingCharacter=function(){var k=this.selection.getCursor();if(k.column===0)return k.row===0?"":this.doc.getNewLineCharacter();var S=this.getLine(k.row);return S[k.column-1]},_.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.endOperation(),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection&&(this.selection.off("changeCursor",this.$onSelectionChange),this.selection.off("changeSelection",this.$onSelectionChange)),this.selection.detach()},_})();b.$uid=0,b.prototype.$modes=o.$modes,b.prototype.getValue=b.prototype.toString,b.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},b.prototype.$overwrite=!1,b.prototype.$mode=null,b.prototype.$modeId=null,b.prototype.$scrollTop=0,b.prototype.$scrollLeft=0,b.prototype.$wrapLimit=80,b.prototype.$useWrapMode=!1,b.prototype.$wrapLimitRange={min:null,max:null},b.prototype.lineWidgets=null,b.prototype.isFullWidth=O,i.implement(b.prototype,l);var D=1,E=2,w=3,y=4,A=9,T=10,x=11,M=12;function O(_){return _<4352?!1:_>=4352&&_<=4447||_>=4515&&_<=4519||_>=4602&&_<=4607||_>=9001&&_<=9002||_>=11904&&_<=11929||_>=11931&&_<=12019||_>=12032&&_<=12245||_>=12272&&_<=12283||_>=12288&&_<=12350||_>=12353&&_<=12438||_>=12441&&_<=12543||_>=12549&&_<=12589||_>=12593&&_<=12686||_>=12688&&_<=12730||_>=12736&&_<=12771||_>=12784&&_<=12830||_>=12832&&_<=12871||_>=12880&&_<=13054||_>=13056&&_<=19903||_>=19968&&_<=42124||_>=42128&&_<=42182||_>=43360&&_<=43388||_>=44032&&_<=55203||_>=55216&&_<=55238||_>=55243&&_<=55291||_>=63744&&_<=64255||_>=65040&&_<=65049||_>=65072&&_<=65106||_>=65108&&_<=65126||_>=65128&&_<=65131||_>=65281&&_<=65376||_>=65504&&_<=65510}t("./edit_session/folding").Folding.call(b.prototype),t("./edit_session/bracket_match").BracketMatch.call(b.prototype),o.defineOptions(b.prototype,"session",{wrap:{set:function(_){if(!_||_=="off"?_=!1:_=="free"?_=!0:_=="printMargin"?_=-1:typeof _=="string"&&(_=parseInt(_,10)||!1),this.$wrap!=_)if(this.$wrap=_,!_)this.setUseWrapMode(!1);else{var k=typeof _=="number"?_:null;this.setWrapLimitRange(k,k),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(_){_=_=="auto"?this.$mode.type!="text":_!="text",_!=this.$wrapAsCode&&(this.$wrapAsCode=_,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(_){this.$useWorker=_,this.$stopWorker(),_&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(_){_=parseInt(_),_>0&&this.$tabSize!==_&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=_,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(_){this.setFoldStyle(_)},handlesSet:!0},overwrite:{set:function(_){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(_){this.doc.setNewLineMode(_)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(_){this.setMode(_)},get:function(){return this.$modeId},handlesSet:!0}}),n.EditSession=b}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(t,n,h){var i=t("./lib/lang"),s=t("./lib/oop"),d=t("./range").Range,o=(function(){function c(){this.$options={}}return c.prototype.set=function(p){return s.mixin(this.$options,p),this},c.prototype.getOptions=function(){return i.copyObject(this.$options)},c.prototype.setOptions=function(p){this.$options=p},c.prototype.find=function(p){var u=this.$options,f=this.$matchIterator(p,u);if(!f)return!1;var g=null;return f.forEach(function(v,b,D,E){return g=new d(v,b,D,E),b==E&&u.start&&u.start.start&&u.skipCurrent!=!1&&g.isEqual(u.start)?(g=null,!1):!0}),g},c.prototype.findAll=function(p){var u=this.$options;if(!u.needle)return[];this.$assembleRegExp(u);var f=u.range,g=f?p.getLines(f.start.row,f.end.row):p.doc.getAllLines(),v=[],b=u.re;if(u.$isMultiLine){var D=b.length,E=g.length-D,w;e:for(var y=b.offset||0;y<=E;y++){for(var A=0;AM||(v.push(w=new d(y,M,y+D-1,O)),D>2&&(y=y+D-2))}}else for(var _,k=0;kk&&(k=C),v.push(new d(_.startRow,_.startCol,_.endRow,_.endCol))}}else{_=i.getMatchOffsets(g[k],b);for(var A=0;A<_.length;A++){var L=_[A];v.push(new d(k,L.offset,k,L.offset+L.length))}}if(f){for(var I=f.start.column,F=f.end.column,k=0,A=v.length-1;kF&&v[A].end.row==R;)A--;for(v=v.slice(k,A+1),k=0,A=v.length;k=v){f+="\\";break}var D=p.charCodeAt(g);switch(D){case u.Backslash:f+="\\";break;case u.n:f+=` +`;break;case u.t:f+=" ";break}continue}if(b===u.DollarSign){if(g++,g>=v){f+="$";break}var E=p.charCodeAt(g);if(E===u.DollarSign){f+="$$";continue}if(E===u.Digit0||E===u.Ampersand){f+="$&";continue}if(u.Digit1<=E&&E<=u.Digit9){f+="$"+p[g];continue}}f+=p[g]}return f||p},c.prototype.replace=function(p,u){var f=this.$options,g=this.$assembleRegExp(f);if(f.$isMultiLine)return u;if(g){var v=this.$isMultilineSearch(f);v&&(p=p.replace(/\r\n|\r|\n/g,` +`));var b=g.exec(p);if(!b||!v&&b[0].length!=p.length)return null;if(u=f.regExp?this.parseReplaceString(u):u.replace(/\$/g,"$$$$"),u=p.replace(g,u),f.preserveCase){u=u.split("");for(var D=Math.min(p.length,p.length);D--;){var E=p[D];E&&E.toLowerCase()!=E?u[D]=u[D].toUpperCase():u[D]=u[D].toLowerCase()}u=u.join("")}return u}},c.prototype.$assembleRegExp=function(p,u){if(p.needle instanceof RegExp)return p.re=p.needle;var f=p.needle;if(!p.needle)return p.re=!1;p.regExp||(f=i.escapeRegExp(f));var g=p.caseSensitive?"gm":"gmi";try{new RegExp(f,"u"),p.$supportsUnicodeFlag=!0,g+="u"}catch{p.$supportsUnicodeFlag=!1}if(p.wholeWord&&(f=l(f,p)),p.$isMultiLine=!u&&/[\n\r]/.test(f),p.$isMultiLine)return p.re=this.$assembleMultilineRegExp(f,g);try{var v=new RegExp(f,g)}catch{v=!1}return p.re=v},c.prototype.$assembleMultilineRegExp=function(p,u){for(var f=p.replace(/\r\n|\r|\n/g,`$ ^`).split(` -`),g=[],v=0;vg);E++){var w=p.getLine(D++);v=v==null?w:v+` -`+w}var y=h.exec(v);if(h.lastIndex=0,y){var A=v.slice(0,y.index).split(` +`),g=[],v=0;vg);E++){var w=p.getLine(D++);v=v==null?w:v+` +`+w}var y=u.exec(v);if(u.lastIndex=0,y){var A=v.slice(0,y.index).split(` `),T=y[0].split(` -`),$=f+A.length-1,M=A[A.length-1].length,O=$+T.length-1,_=T.length==1?M+T[0].length:T[T.length-1].length;return{startRow:$,startCol:M,endRow:O,endCol:_}}}return null},c.prototype.$multiLineBackward=function(p,h,f,g,v){for(var b,D=a(p,g),E=p.getLine(g).length-f,w=g;w>=v;){for(var y=0;y=v;y++){var A=p.getLine(w--);b=b==null?A:A+` -`+b}var T=r(b,h,E);if(T){var $=b.slice(0,T.index).split(` +`),x=f+A.length-1,M=A[A.length-1].length,O=x+T.length-1,_=T.length==1?M+T[0].length:T[T.length-1].length;return{startRow:x,startCol:M,endRow:O,endCol:_}}}return null},c.prototype.$multiLineBackward=function(p,u,f,g,v){for(var b,D=a(p,g),E=p.getLine(g).length-f,w=g;w>=v;){for(var y=0;y=v;y++){var A=p.getLine(w--);b=b==null?A:A+` +`+b}var T=r(b,u,E);if(T){var x=b.slice(0,T.index).split(` `),M=T[0].split(` -`),O=w+$.length,_=$[$.length-1].length,k=O+M.length-1,S=M.length==1?_+M[0].length:M[M.length-1].length;return{startRow:O,startCol:_,endRow:k,endCol:S}}}return null},c.prototype.$matchIterator=function(p,h){var f=this.$assembleRegExp(h);if(!f)return!1;var g=this.$isMultilineSearch(h),v=this.$multiLineForward,b=this.$multiLineBackward,D=h.backwards==!0,E=h.skipCurrent!=!1,w=f.unicode,y=h.range,A=h.start;A||(A=y?y[D?"end":"start"]:p.selection.getRange()),A.start&&(A=A[E!=D?"end":"start"]);var T=y?y.start.row:0,$=y?y.end.row:p.getLength()-1;if(D)var M=function(k){var S=A.row;if(!_(S,A.column,k)){for(S--;S>=T;S--)if(_(S,Number.MAX_VALUE,k))return;if(h.wrap!=!1){for(S=$,T=A.row;S>=T;S--)if(_(S,Number.MAX_VALUE,k))return}}};else var M=function(S){var C=A.row;if(!_(C,A.column,S)){for(C=C+1;C<=$;C++)if(_(C,0,S))return;if(h.wrap!=!1){for(C=T,$=A.row;C<=$;C++)if(_(C,0,S))return}}};if(h.$isMultiLine)var O=f.length,_=function(k,S,C){var L=D?k-O+1:k;if(!(L<0||L+O>p.getLength())){var I=p.getLine(L),F=I.search(f[0]);if(!(!D&&FS)&&C(L,F,L+O-1,B))return!0}}};else if(D)var _=function(S,C,L){if(g){var I=b(p,f,C,S,T);if(!I)return!1;if(L(I.startRow,I.startCol,I.endRow,I.endCol))return!0}else{var F=p.getLine(S),R=[],B,N=0;for(f.lastIndex=0;B=f.exec(F);){var H=B[0].length;if(N=B.index,!H){if(N>=F.length)break;f.lastIndex=N+=i.skipEmptyMatch(F,N,w)}if(B.index+H>C)break;R.push(B.index,H)}for(var W=R.length-1;W>=0;W-=2){var j=R[W-1],H=R[W];if(L(S,j,S,j+H))return!0}}};else var _=function(S,C,L){if(f.lastIndex=C,g){var I=v(p,f,S,$);if(I){var F=I.endRow<=$?I.endRow-1:$;F>S&&(S=F)}if(!I)return!1;if(L(I.startRow,I.startCol,I.endRow,I.endCol))return!0}else for(var R=p.getLine(S),B,N;N=f.exec(R);){var H=N[0].length;if(B=N.index,L(S,B,S,B+H))return!0;if(!H&&(f.lastIndex=B+=i.skipEmptyMatch(R,B,w),B>=R.length))return!1}};return{forEach:M}},c})();function l(c,p){var h=i.supportsLookbehind();function f(D,E){E===void 0&&(E=!0);var w=h&&p.$supportsUnicodeFlag?new RegExp("[\\p{L}\\p{N}_]","u"):new RegExp("\\w");return w.test(D)||p.regExp?h&&p.$supportsUnicodeFlag?E?"(?<=^|[^\\p{L}\\p{N}_])":"(?=[^\\p{L}\\p{N}_]|$)":"\\b":""}var g=Array.from(c),v=g[0],b=g[g.length-1];return f(v)+c+f(b,!1)}function r(c,p,h){for(var f=null,g=0;g<=c.length;){p.lastIndex=g;var v=p.exec(c);if(!v)break;var b=v.index+v[0].length;if(b>c.length-h)break;(!f||b>f.index+f[0].length)&&(f=v),g=v.index+1}return f}function a(c,p){var h=5e3,f={row:p,column:0},g=c.doc.positionToIndex(f),v=g+h,b=c.doc.indexToPosition(v),D=b.row;return D+1}n.Search=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(t,n,u){var i=this&&this.__extends||(function(){var c=function(p,h){return c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(f,g){f.__proto__=g}||function(f,g){for(var v in g)Object.prototype.hasOwnProperty.call(g,v)&&(f[v]=g[v])},c(p,h)};return function(p,h){if(typeof h!="function"&&h!==null)throw new TypeError("Class extends value "+String(h)+" is not a constructor or null");c(p,h);function f(){this.constructor=p}p.prototype=h===null?Object.create(h):(f.prototype=h.prototype,new f)}})(),s=t("../lib/keys"),d=t("../lib/useragent"),o=s.KEY_MODS,l=(function(){function c(p,h){this.$init(p,h,!1)}return c.prototype.$init=function(p,h,f){this.platform=h||(d.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(p),this.$singleCommand=f},c.prototype.addCommand=function(p){this.commands[p.name]&&this.removeCommand(p),this.commands[p.name]=p,p.bindKey&&this._buildKeyHash(p)},c.prototype.removeCommand=function(p,h){var f=p&&(typeof p=="string"?p:p.name);p=this.commands[f],h||delete this.commands[f];var g=this.commandKeyBinding;for(var v in g){var b=g[v];if(b==p)delete g[v];else if(Array.isArray(b)){var D=b.indexOf(p);D!=-1&&(b.splice(D,1),b.length==1&&(g[v]=b[0]))}}},c.prototype.bindKey=function(p,h,f){if(typeof p=="object"&&p&&(f==null&&(f=p.position),p=p[this.platform]),!!p){if(typeof h=="function")return this.addCommand({exec:h,bindKey:p,name:h.name||p});p.split("|").forEach(function(g){var v="";if(g.indexOf(" ")!=-1){var b=g.split(/\s+/);g=b.pop(),b.forEach(function(w){var y=this.parseKeys(w),A=o[y.hashId]+y.key;v+=(v?" ":"")+A,this._addCommandToBinding(v,"chainKeys")},this),v+=" "}var D=this.parseKeys(g),E=o[D.hashId]+D.key;this._addCommandToBinding(v+E,h,f)},this)}},c.prototype._addCommandToBinding=function(p,h,f){var g=this.commandKeyBinding,v;if(!h)delete g[p];else if(!g[p]||this.$singleCommand)g[p]=h;else{Array.isArray(g[p])?(v=g[p].indexOf(h))!=-1&&g[p].splice(v,1):g[p]=[g[p]],typeof f!="number"&&(f=r(h));var b=g[p];for(v=0;vf)break}b.splice(v,0,h)}},c.prototype.addCommands=function(p){p&&Object.keys(p).forEach(function(h){var f=p[h];if(f){if(typeof f=="string")return this.bindKey(f,h);typeof f=="function"&&(f={exec:f}),typeof f=="object"&&(f.name||(f.name=h),this.addCommand(f))}},this)},c.prototype.removeCommands=function(p){Object.keys(p).forEach(function(h){this.removeCommand(p[h])},this)},c.prototype.bindKeys=function(p){Object.keys(p).forEach(function(h){this.bindKey(h,p[h])},this)},c.prototype._buildKeyHash=function(p){this.bindKey(p.bindKey,p)},c.prototype.parseKeys=function(p){var h=p.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(E){return E}),f=h.pop(),g=s[f];if(s.FUNCTION_KEYS[g])f=s.FUNCTION_KEYS[g].toLowerCase();else if(h.length){if(h.length==1&&h[0]=="shift")return{key:f.toUpperCase(),hashId:-1}}else return{key:f,hashId:-1};for(var v=0,b=h.length;b--;){var D=s.KEY_MODS[h[b]];if(D==null)return typeof console<"u"&&console.error("invalid modifier "+h[b]+" in "+p),!1;v|=D}return{key:f,hashId:v}},c.prototype.findKeyCommand=function(p,h){var f=o[p]+h;return this.commandKeyBinding[f]},c.prototype.handleKeyboard=function(p,h,f,g){if(!(g<0)){var v=o[h]+f,b=this.commandKeyBinding[v];return p.$keyChain&&(p.$keyChain+=" "+v,b=this.commandKeyBinding[p.$keyChain]||b),b&&(b=="chainKeys"||b[b.length-1]=="chainKeys")?(p.$keyChain=p.$keyChain||v,{command:"null"}):(p.$keyChain&&((!h||h==4)&&f.length==1?p.$keyChain=p.$keyChain.slice(0,-v.length-1):(h==-1||g>0)&&(p.$keyChain="")),{command:b})}},c.prototype.getStatusText=function(p,h){return h.$keyChain||""},c})();function r(c){return typeof c=="object"&&c.bindKey&&c.bindKey.position||(c.isDefault?-100:0)}var a=(function(c){i(p,c);function p(h,f){var g=c.call(this,h,f)||this;return g.$singleCommand=!0,g}return p})(l);a.call=function(c,p,h){l.prototype.$init.call(c,p,h,!0)},l.call=function(c,p,h){l.prototype.$init.call(c,p,h,!1)},n.HashHandler=a,n.MultiHashHandler=l}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(t,n,u){var i=this&&this.__extends||(function(){var r=function(a,c){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(p,h){p.__proto__=h}||function(p,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(p[f]=h[f])},r(a,c)};return function(a,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");r(a,c);function p(){this.constructor=a}a.prototype=c===null?Object.create(c):(p.prototype=c.prototype,new p)}})(),s=t("../lib/oop"),d=t("../keyboard/hash_handler").MultiHashHandler,o=t("../lib/event_emitter").EventEmitter,l=(function(r){i(a,r);function a(c,p){var h=r.call(this,p,c)||this;return h.byName=h.commands,h.setDefaultHandler("exec",function(f){return f.args?f.command.exec(f.editor,f.args,f.event,!1):f.command.exec(f.editor,{},f.event,!0)}),h}return a.prototype.exec=function(c,p,h){if(Array.isArray(c)){for(var f=c.length;f--;)if(this.exec(c[f],p,h))return!0;return!1}typeof c=="string"&&(c=this.commands[c]);var g={editor:p,command:c,args:h};return this.canExecute(c,p)?(g.returnValue=this._emit("exec",g),this._signal("afterExec",g),g.returnValue!==!1):(this._signal("commandUnavailable",g),!1)},a.prototype.canExecute=function(c,p){return typeof c=="string"&&(c=this.commands[c]),!(!c||p&&p.$readOnly&&!c.readOnly||this.$checkCommandState!=!1&&c.isAvailable&&!c.isAvailable(p))},a.prototype.toggleRecording=function(c){if(!this.$inReplay)return c&&c._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(p){this.macro.push([p.command,p.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},a.prototype.replay=function(c){if(!(this.$inReplay||!this.macro)){if(this.recording)return this.toggleRecording(c);try{this.$inReplay=!0,this.macro.forEach(function(p){typeof p=="string"?this.exec(p,c):this.exec(p[0],c,p[1])},this)}finally{this.$inReplay=!1}}},a.prototype.trimMacro=function(c){return c.map(function(p){return typeof p[0]!="string"&&(p[0]=p[0].name),p[1]||(p=p[0]),p})},a})(d);s.implement(l.prototype,o),n.CommandManager=l}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(t,n,u){var i=t("../lib/lang"),s=t("../config"),d=t("../range").Range;function o(r,a){return{win:r,mac:a}}n.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:o("Ctrl-,","Command-,"),exec:function(r){s.loadModule("ace/ext/settings_menu",function(a){a.init(r),r.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:o("Alt-E","F4"),exec:function(r){s.loadModule("ace/ext/error_marker",function(a){a.showErrorMarker(r,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(r){s.loadModule("ace/ext/error_marker",function(a){a.showErrorMarker(r,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:o("Ctrl-A","Command-A"),exec:function(r){r.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:o(null,"Ctrl-L"),exec:function(r){r.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:o("Ctrl-L","Command-L"),exec:function(r,a){typeof a=="number"&&!isNaN(a)&&r.gotoLine(a),r.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(r){r.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(r){r.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:o("F2","F2"),exec:function(r){r.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:o("Alt-F2","Alt-F2"),exec:function(r){r.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(r){r.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(r){r.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:o("Alt-0","Command-Option-0"),exec:function(r){r.session.foldAll(),r.session.unfold(r.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(r){r.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:o("Ctrl-K","Command-G"),exec:function(r){r.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(r){r.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:o("Alt-K","Ctrl-G"),exec:function(r){r.selection.isEmpty()?r.selection.selectWord():r.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(r){r.selection.isEmpty()?r.selection.selectWord():r.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:o("Ctrl-F","Command-F"),exec:function(r){s.loadModule("ace/ext/searchbox",function(a){a.Search(r)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(r){r.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(r){r.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(r){r.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(r){r.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:o("Up","Up|Ctrl-P"),exec:function(r,a){r.navigateUp(a.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(r){r.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(r){r.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(r){r.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:o("Down","Down|Ctrl-N"),exec:function(r,a){r.navigateDown(a.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(r){r.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:o("Ctrl-Left","Option-Left"),exec:function(r){r.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(r){r.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(r){r.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(r){r.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:o("Left","Left|Ctrl-B"),exec:function(r,a){r.navigateLeft(a.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(r){r.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:o("Ctrl-Right","Option-Right"),exec:function(r){r.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(r){r.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(r){r.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:o("Shift-Right","Shift-Right"),exec:function(r){r.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:o("Right","Right|Ctrl-F"),exec:function(r,a){r.navigateRight(a.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(r){r.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:o(null,"Option-PageDown"),exec:function(r){r.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(r){r.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(r){r.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:o(null,"Option-PageUp"),exec:function(r){r.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(r){r.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:o("Ctrl-Up",null),exec:function(r){r.renderer.scrollBy(0,-2*r.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:o("Ctrl-Down",null),exec:function(r){r.renderer.scrollBy(0,2*r.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(r){r.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(r){r.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(r){r.commands.toggleRecording(r)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(r){r.commands.replay(r)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:o("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(r){r.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:o("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(r){r.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(r){r.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(r){},readOnly:!0},{name:"cut",description:"Cut",exec:function(r){var a=r.$copyWithEmptySelection&&r.selection.isEmpty(),c=a?r.selection.getLineRange():r.selection.getRange();r._emit("cut",c),c.isEmpty()||r.session.remove(c),r.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(r,a){r.$handlePaste(a)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:o("Ctrl-D","Command-D"),exec:function(r){r.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(r){r.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(r){r.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:o("Ctrl-/","Command-/"),exec:function(r){r.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(r){r.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(r){r.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(r){r.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(r){s.loadModule("ace/ext/searchbox",function(a){a.Search(r,!0)})}},{name:"undo",description:"Undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(r){r.undo()}},{name:"redo",description:"Redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(r){r.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(r){r.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:o("Alt-Up","Option-Up"),exec:function(r){r.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(r){r.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:o("Alt-Down","Option-Down"),exec:function(r){r.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(r){r.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(r){r.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:o("Shift-Delete",null),exec:function(r){if(r.selection.isEmpty())r.remove("left");else return!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(r){r.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(r){r.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(r){var a=r.selection.getRange();a.start.column=0,r.session.remove(a)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(r){var a=r.selection.getRange();a.end.column=Number.MAX_VALUE,r.session.remove(a)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(r){r.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(r){r.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(r){r.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:o("Tab","Tab"),exec:function(r){r.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(r){r.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(r){r.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(r,a){r.insert(a)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(r,a){r.insert(i.stringRepeat(a.text||"",a.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:o(null,"Ctrl-O"),exec:function(r){r.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(r){r.transposeLetters()},multiSelectAction:function(r){r.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(r){r.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(r){r.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:o(null,null),exec:function(r){r.autoIndent()},scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(r){var a=r.selection.getRange();a.start.column=a.end.column=0,a.end.row++,r.selection.setRange(a,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:o("Ctrl+F3","F3"),exec:function(r){r.openLink()}},{name:"joinlines",description:"Join lines",bindKey:o(null,null),exec:function(r){for(var a=r.selection.isBackwards(),c=a?r.selection.getSelectionLead():r.selection.getSelectionAnchor(),p=a?r.selection.getSelectionAnchor():r.selection.getSelectionLead(),h=r.session.doc.getLine(c.row).length,f=r.session.doc.getTextRange(r.selection.getRange()),g=f.replace(/\n\s*/," ").length,v=r.session.doc.getLine(c.row),b=c.row+1;b<=p.row+1;b++){var D=i.stringTrimLeft(i.stringTrimRight(r.session.doc.getLine(b)));D.length!==0&&(D=" "+D),v+=D}p.row+10?(r.selection.moveCursorTo(c.row,c.column),r.selection.selectTo(c.row,c.column+g)):(h=r.session.doc.getLine(c.row).length>h?h+1:h,r.selection.moveCursorTo(c.row,h))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:o(null,null),exec:function(r){var a=r.session.doc.getLength()-1,c=r.session.doc.getLine(a).length,p=r.selection.rangeList.ranges,h=[];p.length<1&&(p=[r.selection.getRange()]);for(var f=0;f=T;S--)if(_(S,Number.MAX_VALUE,k))return;if(u.wrap!=!1){for(S=x,T=A.row;S>=T;S--)if(_(S,Number.MAX_VALUE,k))return}}};else var M=function(S){var C=A.row;if(!_(C,A.column,S)){for(C=C+1;C<=x;C++)if(_(C,0,S))return;if(u.wrap!=!1){for(C=T,x=A.row;C<=x;C++)if(_(C,0,S))return}}};if(u.$isMultiLine)var O=f.length,_=function(k,S,C){var L=D?k-O+1:k;if(!(L<0||L+O>p.getLength())){var I=p.getLine(L),F=I.search(f[0]);if(!(!D&&FS)&&C(L,F,L+O-1,B))return!0}}};else if(D)var _=function(S,C,L){if(g){var I=b(p,f,C,S,T);if(!I)return!1;if(L(I.startRow,I.startCol,I.endRow,I.endCol))return!0}else{var F=p.getLine(S),R=[],B,N=0;for(f.lastIndex=0;B=f.exec(F);){var z=B[0].length;if(N=B.index,!z){if(N>=F.length)break;f.lastIndex=N+=i.skipEmptyMatch(F,N,w)}if(B.index+z>C)break;R.push(B.index,z)}for(var W=R.length-1;W>=0;W-=2){var j=R[W-1],z=R[W];if(L(S,j,S,j+z))return!0}}};else var _=function(S,C,L){if(f.lastIndex=C,g){var I=v(p,f,S,x);if(I){var F=I.endRow<=x?I.endRow-1:x;F>S&&(S=F)}if(!I)return!1;if(L(I.startRow,I.startCol,I.endRow,I.endCol))return!0}else for(var R=p.getLine(S),B,N;N=f.exec(R);){var z=N[0].length;if(B=N.index,L(S,B,S,B+z))return!0;if(!z&&(f.lastIndex=B+=i.skipEmptyMatch(R,B,w),B>=R.length))return!1}};return{forEach:M}},c})();function l(c,p){var u=i.supportsLookbehind();function f(D,E){E===void 0&&(E=!0);var w=u&&p.$supportsUnicodeFlag?new RegExp("[\\p{L}\\p{N}_]","u"):new RegExp("\\w");return w.test(D)||p.regExp?u&&p.$supportsUnicodeFlag?E?"(?<=^|[^\\p{L}\\p{N}_])":"(?=[^\\p{L}\\p{N}_]|$)":"\\b":""}var g=Array.from(c),v=g[0],b=g[g.length-1];return f(v)+c+f(b,!1)}function r(c,p,u){for(var f=null,g=0;g<=c.length;){p.lastIndex=g;var v=p.exec(c);if(!v)break;var b=v.index+v[0].length;if(b>c.length-u)break;(!f||b>f.index+f[0].length)&&(f=v),g=v.index+1}return f}function a(c,p){var u=5e3,f={row:p,column:0},g=c.doc.positionToIndex(f),v=g+u,b=c.doc.indexToPosition(v),D=b.row;return D+1}n.Search=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(t,n,h){var i=this&&this.__extends||(function(){var c=function(p,u){return c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(f,g){f.__proto__=g}||function(f,g){for(var v in g)Object.prototype.hasOwnProperty.call(g,v)&&(f[v]=g[v])},c(p,u)};return function(p,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");c(p,u);function f(){this.constructor=p}p.prototype=u===null?Object.create(u):(f.prototype=u.prototype,new f)}})(),s=t("../lib/keys"),d=t("../lib/useragent"),o=s.KEY_MODS,l=(function(){function c(p,u){this.$init(p,u,!1)}return c.prototype.$init=function(p,u,f){this.platform=u||(d.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(p),this.$singleCommand=f},c.prototype.addCommand=function(p){this.commands[p.name]&&this.removeCommand(p),this.commands[p.name]=p,p.bindKey&&this._buildKeyHash(p)},c.prototype.removeCommand=function(p,u){var f=p&&(typeof p=="string"?p:p.name);p=this.commands[f],u||delete this.commands[f];var g=this.commandKeyBinding;for(var v in g){var b=g[v];if(b==p)delete g[v];else if(Array.isArray(b)){var D=b.indexOf(p);D!=-1&&(b.splice(D,1),b.length==1&&(g[v]=b[0]))}}},c.prototype.bindKey=function(p,u,f){if(typeof p=="object"&&p&&(f==null&&(f=p.position),p=p[this.platform]),!!p){if(typeof u=="function")return this.addCommand({exec:u,bindKey:p,name:u.name||p});p.split("|").forEach(function(g){var v="";if(g.indexOf(" ")!=-1){var b=g.split(/\s+/);g=b.pop(),b.forEach(function(w){var y=this.parseKeys(w),A=o[y.hashId]+y.key;v+=(v?" ":"")+A,this._addCommandToBinding(v,"chainKeys")},this),v+=" "}var D=this.parseKeys(g),E=o[D.hashId]+D.key;this._addCommandToBinding(v+E,u,f)},this)}},c.prototype._addCommandToBinding=function(p,u,f){var g=this.commandKeyBinding,v;if(!u)delete g[p];else if(!g[p]||this.$singleCommand)g[p]=u;else{Array.isArray(g[p])?(v=g[p].indexOf(u))!=-1&&g[p].splice(v,1):g[p]=[g[p]],typeof f!="number"&&(f=r(u));var b=g[p];for(v=0;vf)break}b.splice(v,0,u)}},c.prototype.addCommands=function(p){p&&Object.keys(p).forEach(function(u){var f=p[u];if(f){if(typeof f=="string")return this.bindKey(f,u);typeof f=="function"&&(f={exec:f}),typeof f=="object"&&(f.name||(f.name=u),this.addCommand(f))}},this)},c.prototype.removeCommands=function(p){Object.keys(p).forEach(function(u){this.removeCommand(p[u])},this)},c.prototype.bindKeys=function(p){Object.keys(p).forEach(function(u){this.bindKey(u,p[u])},this)},c.prototype._buildKeyHash=function(p){this.bindKey(p.bindKey,p)},c.prototype.parseKeys=function(p){var u=p.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(E){return E}),f=u.pop(),g=s[f];if(s.FUNCTION_KEYS[g])f=s.FUNCTION_KEYS[g].toLowerCase();else if(u.length){if(u.length==1&&u[0]=="shift")return{key:f.toUpperCase(),hashId:-1}}else return{key:f,hashId:-1};for(var v=0,b=u.length;b--;){var D=s.KEY_MODS[u[b]];if(D==null)return typeof console<"u"&&console.error("invalid modifier "+u[b]+" in "+p),!1;v|=D}return{key:f,hashId:v}},c.prototype.findKeyCommand=function(p,u){var f=o[p]+u;return this.commandKeyBinding[f]},c.prototype.handleKeyboard=function(p,u,f,g){if(!(g<0)){var v=o[u]+f,b=this.commandKeyBinding[v];return p.$keyChain&&(p.$keyChain+=" "+v,b=this.commandKeyBinding[p.$keyChain]||b),b&&(b=="chainKeys"||b[b.length-1]=="chainKeys")?(p.$keyChain=p.$keyChain||v,{command:"null"}):(p.$keyChain&&((!u||u==4)&&f.length==1?p.$keyChain=p.$keyChain.slice(0,-v.length-1):(u==-1||g>0)&&(p.$keyChain="")),{command:b})}},c.prototype.getStatusText=function(p,u){return u.$keyChain||""},c})();function r(c){return typeof c=="object"&&c.bindKey&&c.bindKey.position||(c.isDefault?-100:0)}var a=(function(c){i(p,c);function p(u,f){var g=c.call(this,u,f)||this;return g.$singleCommand=!0,g}return p})(l);a.call=function(c,p,u){l.prototype.$init.call(c,p,u,!0)},l.call=function(c,p,u){l.prototype.$init.call(c,p,u,!1)},n.HashHandler=a,n.MultiHashHandler=l}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(t,n,h){var i=this&&this.__extends||(function(){var r=function(a,c){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(p,u){p.__proto__=u}||function(p,u){for(var f in u)Object.prototype.hasOwnProperty.call(u,f)&&(p[f]=u[f])},r(a,c)};return function(a,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");r(a,c);function p(){this.constructor=a}a.prototype=c===null?Object.create(c):(p.prototype=c.prototype,new p)}})(),s=t("../lib/oop"),d=t("../keyboard/hash_handler").MultiHashHandler,o=t("../lib/event_emitter").EventEmitter,l=(function(r){i(a,r);function a(c,p){var u=r.call(this,p,c)||this;return u.byName=u.commands,u.setDefaultHandler("exec",function(f){return f.args?f.command.exec(f.editor,f.args,f.event,!1):f.command.exec(f.editor,{},f.event,!0)}),u}return a.prototype.exec=function(c,p,u){if(Array.isArray(c)){for(var f=c.length;f--;)if(this.exec(c[f],p,u))return!0;return!1}typeof c=="string"&&(c=this.commands[c]);var g={editor:p,command:c,args:u};return this.canExecute(c,p)?(g.returnValue=this._emit("exec",g),this._signal("afterExec",g),g.returnValue!==!1):(this._signal("commandUnavailable",g),!1)},a.prototype.canExecute=function(c,p){return typeof c=="string"&&(c=this.commands[c]),!(!c||p&&p.$readOnly&&!c.readOnly||this.$checkCommandState!=!1&&c.isAvailable&&!c.isAvailable(p))},a.prototype.toggleRecording=function(c){if(!this.$inReplay)return c&&c._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(p){this.macro.push([p.command,p.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},a.prototype.replay=function(c){if(!(this.$inReplay||!this.macro)){if(this.recording)return this.toggleRecording(c);try{this.$inReplay=!0,this.macro.forEach(function(p){typeof p=="string"?this.exec(p,c):this.exec(p[0],c,p[1])},this)}finally{this.$inReplay=!1}}},a.prototype.trimMacro=function(c){return c.map(function(p){return typeof p[0]!="string"&&(p[0]=p[0].name),p[1]||(p=p[0]),p})},a})(d);s.implement(l.prototype,o),n.CommandManager=l}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(t,n,h){var i=t("../lib/lang"),s=t("../config"),d=t("../range").Range;function o(r,a){return{win:r,mac:a}}n.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:o("Ctrl-,","Command-,"),exec:function(r){s.loadModule("ace/ext/settings_menu",function(a){a.init(r),r.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:o("Alt-E","F4"),exec:function(r){s.loadModule("ace/ext/error_marker",function(a){a.showErrorMarker(r,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(r){s.loadModule("ace/ext/error_marker",function(a){a.showErrorMarker(r,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:o("Ctrl-A","Command-A"),exec:function(r){r.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:o(null,"Ctrl-L"),exec:function(r){r.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:o("Ctrl-L","Command-L"),exec:function(r,a){typeof a=="number"&&!isNaN(a)&&r.gotoLine(a),r.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(r){r.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(r){r.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:o("F2","F2"),exec:function(r){r.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:o("Alt-F2","Alt-F2"),exec:function(r){r.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(r){r.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(r){r.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:o("Alt-0","Command-Option-0"),exec:function(r){r.session.foldAll(),r.session.unfold(r.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(r){r.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:o("Ctrl-K","Command-G"),exec:function(r){r.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(r){r.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:o("Alt-K","Ctrl-G"),exec:function(r){r.selection.isEmpty()?r.selection.selectWord():r.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(r){r.selection.isEmpty()?r.selection.selectWord():r.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:o("Ctrl-F","Command-F"),exec:function(r){s.loadModule("ace/ext/searchbox",function(a){a.Search(r)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(r){r.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(r){r.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(r){r.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(r){r.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:o("Up","Up|Ctrl-P"),exec:function(r,a){r.navigateUp(a.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(r){r.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(r){r.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(r){r.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:o("Down","Down|Ctrl-N"),exec:function(r,a){r.navigateDown(a.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(r){r.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:o("Ctrl-Left","Option-Left"),exec:function(r){r.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(r){r.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(r){r.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(r){r.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:o("Left","Left|Ctrl-B"),exec:function(r,a){r.navigateLeft(a.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(r){r.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:o("Ctrl-Right","Option-Right"),exec:function(r){r.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(r){r.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(r){r.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:o("Shift-Right","Shift-Right"),exec:function(r){r.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:o("Right","Right|Ctrl-F"),exec:function(r,a){r.navigateRight(a.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(r){r.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:o(null,"Option-PageDown"),exec:function(r){r.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(r){r.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(r){r.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:o(null,"Option-PageUp"),exec:function(r){r.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(r){r.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:o("Ctrl-Up",null),exec:function(r){r.renderer.scrollBy(0,-2*r.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:o("Ctrl-Down",null),exec:function(r){r.renderer.scrollBy(0,2*r.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(r){r.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(r){r.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(r){r.commands.toggleRecording(r)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(r){r.commands.replay(r)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:o("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(r){r.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:o("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(r){r.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(r){r.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(r){},readOnly:!0},{name:"cut",description:"Cut",exec:function(r){var a=r.$copyWithEmptySelection&&r.selection.isEmpty(),c=a?r.selection.getLineRange():r.selection.getRange();r._emit("cut",c),c.isEmpty()||r.session.remove(c),r.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(r,a){r.$handlePaste(a)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:o("Ctrl-D","Command-D"),exec:function(r){r.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(r){r.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(r){r.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:o("Ctrl-/","Command-/"),exec:function(r){r.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(r){r.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(r){r.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(r){r.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(r){s.loadModule("ace/ext/searchbox",function(a){a.Search(r,!0)})}},{name:"undo",description:"Undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(r){r.undo()}},{name:"redo",description:"Redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(r){r.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(r){r.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:o("Alt-Up","Option-Up"),exec:function(r){r.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(r){r.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:o("Alt-Down","Option-Down"),exec:function(r){r.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(r){r.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(r){r.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:o("Shift-Delete",null),exec:function(r){if(r.selection.isEmpty())r.remove("left");else return!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(r){r.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(r){r.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(r){var a=r.selection.getRange();a.start.column=0,r.session.remove(a)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(r){var a=r.selection.getRange();a.end.column=Number.MAX_VALUE,r.session.remove(a)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(r){r.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(r){r.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(r){r.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:o("Tab","Tab"),exec:function(r){r.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(r){r.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(r){r.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(r,a){r.insert(a)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(r,a){r.insert(i.stringRepeat(a.text||"",a.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:o(null,"Ctrl-O"),exec:function(r){r.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(r){r.transposeLetters()},multiSelectAction:function(r){r.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(r){r.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(r){r.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:o(null,null),exec:function(r){r.autoIndent()},scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(r){var a=r.selection.getRange();a.start.column=a.end.column=0,a.end.row++,r.selection.setRange(a,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:o("Ctrl+F3","F3"),exec:function(r){r.openLink()}},{name:"joinlines",description:"Join lines",bindKey:o(null,null),exec:function(r){for(var a=r.selection.isBackwards(),c=a?r.selection.getSelectionLead():r.selection.getSelectionAnchor(),p=a?r.selection.getSelectionAnchor():r.selection.getSelectionLead(),u=r.session.doc.getLine(c.row).length,f=r.session.doc.getTextRange(r.selection.getRange()),g=f.replace(/\n\s*/," ").length,v=r.session.doc.getLine(c.row),b=c.row+1;b<=p.row+1;b++){var D=i.stringTrimLeft(i.stringTrimRight(r.session.doc.getLine(b)));D.length!==0&&(D=" "+D),v+=D}p.row+10?(r.selection.moveCursorTo(c.row,c.column),r.selection.selectTo(c.row,c.column+g)):(u=r.session.doc.getLine(c.row).length>u?u+1:u,r.selection.moveCursorTo(c.row,u))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:o(null,null),exec:function(r){var a=r.session.doc.getLength()-1,c=r.session.doc.getLine(a).length,p=r.selection.rangeList.ranges,u=[];p.length<1&&(p=[r.selection.getRange()]);for(var f=0;f0||l+r=0&&this.$isCustomWidgetVisible(l-r))return l-r;if(l+r<=this.lines.getLength()-1&&this.$isCustomWidgetVisible(l+r))return l+r;if(l-r>=0&&this.$isFoldWidgetVisible(l-r))return l-r;if(l+r<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(l+r))return l+r}return null},o.prototype.$findNearestAnnotation=function(l){if(this.$isAnnotationVisible(l))return l;for(var r=0;l-r>0||l+r=0&&this.$isAnnotationVisible(l-r))return l-r;if(l+r<=this.lines.getLength()-1&&this.$isAnnotationVisible(l+r))return l+r}return null},o.prototype.$focusFoldWidget=function(l){if(l!=null){var r=this.$getFoldWidget(l);r.classList.add(this.editor.renderer.keyboardFocusClassName),r.focus()}},o.prototype.$focusCustomWidget=function(l){if(l!=null){var r=this.$getCustomWidget(l);r&&(r.classList.add(this.editor.renderer.keyboardFocusClassName),r.focus())}},o.prototype.$focusAnnotation=function(l){if(l!=null){var r=this.$getAnnotation(l);r.classList.add(this.editor.renderer.keyboardFocusClassName),r.focus()}},o.prototype.$blurFoldWidget=function(l){var r=this.$getFoldWidget(l);r.classList.remove(this.editor.renderer.keyboardFocusClassName),r.blur()},o.prototype.$blurCustomWidget=function(l){var r=this.$getCustomWidget(l);r&&(r.classList.remove(this.editor.renderer.keyboardFocusClassName),r.blur())},o.prototype.$blurAnnotation=function(l){var r=this.$getAnnotation(l);r.classList.remove(this.editor.renderer.keyboardFocusClassName),r.blur()},o.prototype.$moveFoldWidgetUp=function(){for(var l=this.activeRowIndex;l>0;)if(l--,this.$isFoldWidgetVisible(l)||this.$isCustomWidgetVisible(l)){this.$blurFoldWidget(this.activeRowIndex),this.$blurCustomWidget(this.activeRowIndex),this.activeRowIndex=l,this.$isFoldWidgetVisible(l)?this.$focusFoldWidget(this.activeRowIndex):this.$focusCustomWidget(this.activeRowIndex);return}},o.prototype.$moveFoldWidgetDown=function(){for(var l=this.activeRowIndex;l0;)if(l--,this.$isAnnotationVisible(l)){this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=l,this.$focusAnnotation(this.activeRowIndex);return}},o.prototype.$moveAnnotationDown=function(){for(var l=this.activeRowIndex;l=S.length&&(S=void 0),{value:S&&S[I++],done:!S}}};throw new TypeError(C?"Object is not iterable.":"Symbol.iterator is not defined.")},s=t("./lib/oop"),d=t("./lib/dom"),o=t("./lib/lang"),l=t("./lib/useragent"),r=t("./keyboard/textinput").TextInput,a=t("./mouse/mouse_handler").MouseHandler,c=t("./mouse/fold_handler").FoldHandler,p=t("./keyboard/keybinding").KeyBinding,h=t("./edit_session").EditSession,f=t("./search").Search,g=t("./range").Range,v=t("./lib/event_emitter").EventEmitter,b=t("./commands/command_manager").CommandManager,D=t("./commands/default_commands").commands,E=t("./config"),w=t("./token_iterator").TokenIterator,y=t("./keyboard/gutter_handler").GutterKeyboardHandler,A=t("./config").nls,T=t("./clipboard"),$=t("./lib/keys"),M=t("./lib/event"),O=t("./tooltip").HoverTooltip,_=(function(){function S(C,L,I){this.id="editor"+ ++S.$uid,this.session,this.$toDestroy=[];var F=C.getContainerElement();this.container=F,this.renderer=C,this.commands=new b(l.isMac?"mac":"win",D),typeof document=="object"&&(this.textInput=new r(C.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new a(this),new c(this)),this.keyBinding=new p(this),this.$search=new f().set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=o.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(R,B){B._$emitInputEvent.schedule(31)}),this.setSession(L||I&&I.session||new h("")),E.resetOptions(this),I&&this.setOptions(I),E._signal("editor",this)}return S.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0)},S.prototype.startOperation=function(C){this.session.startOperation(C)},S.prototype.endOperation=function(C){this.session.endOperation(C)},S.prototype.onStartOperation=function(C){this.curOp=this.session.curOp,this.curOp.scrollTop=this.renderer.scrollTop,this.prevOp=this.session.prevOp,C||(this.previousCommand=null)},S.prototype.onEndOperation=function(C){if(this.curOp&&this.session){if(C&&C.returnValue===!1){this.curOp=null;return}if(this._signal("beforeEndOperation"),!this.curOp)return;var L=this.curOp.command,I=L&&L.scrollIntoView;if(I){switch(I){case"center-animate":I="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var F=this.selection.getRange(),R=this.renderer.layerConfig;(F.start.row>=R.lastRow||F.end.row<=R.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break}I=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.$lastSel=this.session.selection.toJSON(),this.prevOp=this.curOp,this.curOp=null}},S.prototype.$historyTracker=function(C){if(this.$mergeUndoDeltas){var L=this.prevOp,I=this.$mergeableCommands,F=L.command&&C.command.name==L.command.name;if(C.command.name=="insertstring"){var R=C.args;this.mergeNextCommand===void 0&&(this.mergeNextCommand=!0),F=F&&this.mergeNextCommand&&(!/\s/.test(R)||/\s/.test(L.args)),this.mergeNextCommand=!0}else F=F&&I.indexOf(C.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(F=!1),F?this.session.mergeUndoDeltas=!0:I.indexOf(C.command.name)!==-1&&(this.sequenceStartTime=Date.now())}},S.prototype.setKeyboardHandler=function(C,L){if(C&&typeof C=="string"&&C!="ace"){this.$keybindingId=C;var I=this;E.loadModule(["keybinding",C],function(F){I.$keybindingId==C&&I.keyBinding.setKeyboardHandler(F&&F.handler),L&&L()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(C),L&&L()},S.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},S.prototype.setSession=function(C){if(this.session!=C){this.curOp&&this.endOperation(),this.curOp={};var L=this.session;if(L){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange),this.session.off("startOperation",this.$onStartOperation),this.session.off("endOperation",this.$onEndOperation);var I=this.session.getSelection();I.off("changeCursor",this.$onCursorChange),I.off("changeSelection",this.$onSelectionChange)}this.session=C,C?(this.$onDocumentChange=this.onDocumentChange.bind(this),C.on("change",this.$onDocumentChange),this.renderer.setSession(C),this.$onChangeMode=this.onChangeMode.bind(this),C.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),C.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),C.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),C.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),C.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),C.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=C.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.$onStartOperation=this.onStartOperation.bind(this),this.session.on("startOperation",this.$onStartOperation),this.$onEndOperation=this.onEndOperation.bind(this),this.session.on("endOperation",this.$onEndOperation),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(C)),this._signal("changeSession",{session:C,oldSession:L}),this.curOp=null,L&&L._signal("changeEditor",{oldEditor:this}),L&&(L.$editor=null),C&&C._signal("changeEditor",{editor:this}),C&&(C.$editor=this),C&&!C.destroyed&&C.bgTokenizer.scheduleStart()}},S.prototype.getSession=function(){return this.session},S.prototype.setValue=function(C,L){return this.session.doc.setValue(C),L?L==1?this.navigateFileEnd():L==-1&&this.navigateFileStart():this.selectAll(),C},S.prototype.getValue=function(){return this.session.getValue()},S.prototype.getSelection=function(){return this.selection},S.prototype.resize=function(C){this.renderer.onResize(C)},S.prototype.setTheme=function(C,L){this.renderer.setTheme(C,L)},S.prototype.getTheme=function(){return this.renderer.getTheme()},S.prototype.setStyle=function(C,L){this.renderer.setStyle(C,L)},S.prototype.unsetStyle=function(C){this.renderer.unsetStyle(C)},S.prototype.getFontSize=function(){return this.getOption("fontSize")||d.computedStyle(this.container).fontSize},S.prototype.setFontSize=function(C){this.setOption("fontSize",C)},S.prototype.$highlightBrackets=function(){if(!this.$highlightPending){var C=this;this.$highlightPending=!0,setTimeout(function(){C.$highlightPending=!1;var L=C.session;if(!(!L||L.destroyed)){L.$bracketHighlight&&(L.$bracketHighlight.markerIds.forEach(function(U){L.removeMarker(U)}),L.$bracketHighlight=null);var I=C.getCursorPosition(),F=C.getKeyboardHandler(),R=F&&F.$getDirectionForHighlight&&F.$getDirectionForHighlight(C),B=L.getMatchingBracketRanges(I,R);if(!B){var N=new w(L,I.row,I.column),H=N.getCurrentToken();if(H&&/\b(?:tag-open|tag-name)/.test(H.type)){var W=L.getMatchingTags(I);W&&(B=[W.openTagName.isEmpty()?W.openTag:W.openTagName,W.closeTagName.isEmpty()?W.closeTag:W.closeTagName])}}if(!B&&L.$mode.getMatching&&(B=L.$mode.getMatching(C.session)),!B){C.getHighlightIndentGuides()&&C.renderer.$textLayer.$highlightIndentGuide();return}var j="ace_bracket";Array.isArray(B)?B.length==1&&(j="ace_error_bracket"):B=[B],B.length==2&&(g.comparePoints(B[0].end,B[1].start)==0?B=[g.fromPoints(B[0].start,B[1].end)]:g.comparePoints(B[0].start,B[1].end)==0&&(B=[g.fromPoints(B[1].start,B[0].end)])),L.$bracketHighlight={ranges:B,markerIds:B.map(function(U){return L.addMarker(U,j,"text")})},C.getHighlightIndentGuides()&&C.renderer.$textLayer.$highlightIndentGuide()}},50)}},S.prototype.focus=function(){this.textInput.focus()},S.prototype.isFocused=function(){return this.textInput.isFocused()},S.prototype.blur=function(){this.textInput.blur()},S.prototype.onFocus=function(C){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",C))},S.prototype.onBlur=function(C){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",C))},S.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},S.prototype.onDocumentChange=function(C){var L=this.session.$useWrapMode,I=C.start.row==C.end.row?C.end.row:1/0;this.renderer.updateLines(C.start.row,I,L),this._signal("change",C),this.$cursorChange()},S.prototype.onTokenizerUpdate=function(C){var L=C.data;this.renderer.updateLines(L.first,L.last)},S.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},S.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},S.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},S.prototype.$updateHighlightActiveLine=function(){var C=this.getSession(),L;if(this.$highlightActiveLine&&((this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(L=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(L=!1),this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(L=!1)),C.$highlightLineMarker&&!L)C.removeMarker(C.$highlightLineMarker.id),C.$highlightLineMarker=null;else if(!C.$highlightLineMarker&&L){var I=new g(L.row,L.column,L.row,1/0);I.id=C.addMarker(I,"ace_active-line","screenLine"),C.$highlightLineMarker=I}else L&&(C.$highlightLineMarker.start.row=L.row,C.$highlightLineMarker.end.row=L.row,C.$highlightLineMarker.start.column=L.column,C._signal("changeBackMarker"))},S.prototype.onSelectionChange=function(C){var L=this.session;if(L.$selectionMarker&&L.removeMarker(L.$selectionMarker),L.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var I=this.selection.getRange(),F=this.getSelectionStyle();L.$selectionMarker=L.addMarker(I,"ace_selection",F)}var R=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(R),this._signal("changeSelection")},S.prototype.$getSelectionHighLightRegexp=function(){var C=this.session,L=this.getSelectionRange();if(!(L.isEmpty()||L.isMultiLine())){var I=L.start.column,F=L.end.column,R=C.getLine(L.start.row),B=R.substring(I,F);if(!(B.length>5e3||!/[\w\d]/.test(B))){var N=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:B}),H=R.substring(I-1,F+1);if(N.test(H))return N}}},S.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},S.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},S.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},S.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},S.prototype.onChangeMode=function(C){this.renderer.updateText(),this._emit("changeMode",C)},S.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},S.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},S.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},S.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},S.prototype.getCopyText=function(){var C=this.getSelectedText(),L=this.session.doc.getNewLineCharacter(),I=!1;if(!C&&this.$copyWithEmptySelection){I=!0;for(var F=this.selection.getAllRanges(),R=0;R0||l+r=0&&this.$isCustomWidgetVisible(l-r))return l-r;if(l+r<=this.lines.getLength()-1&&this.$isCustomWidgetVisible(l+r))return l+r;if(l-r>=0&&this.$isFoldWidgetVisible(l-r))return l-r;if(l+r<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(l+r))return l+r}return null},o.prototype.$findNearestAnnotation=function(l){if(this.$isAnnotationVisible(l))return l;for(var r=0;l-r>0||l+r=0&&this.$isAnnotationVisible(l-r))return l-r;if(l+r<=this.lines.getLength()-1&&this.$isAnnotationVisible(l+r))return l+r}return null},o.prototype.$focusFoldWidget=function(l){if(l!=null){var r=this.$getFoldWidget(l);r.classList.add(this.editor.renderer.keyboardFocusClassName),r.focus()}},o.prototype.$focusCustomWidget=function(l){if(l!=null){var r=this.$getCustomWidget(l);r&&(r.classList.add(this.editor.renderer.keyboardFocusClassName),r.focus())}},o.prototype.$focusAnnotation=function(l){if(l!=null){var r=this.$getAnnotation(l);r.classList.add(this.editor.renderer.keyboardFocusClassName),r.focus()}},o.prototype.$blurFoldWidget=function(l){var r=this.$getFoldWidget(l);r.classList.remove(this.editor.renderer.keyboardFocusClassName),r.blur()},o.prototype.$blurCustomWidget=function(l){var r=this.$getCustomWidget(l);r&&(r.classList.remove(this.editor.renderer.keyboardFocusClassName),r.blur())},o.prototype.$blurAnnotation=function(l){var r=this.$getAnnotation(l);r.classList.remove(this.editor.renderer.keyboardFocusClassName),r.blur()},o.prototype.$moveFoldWidgetUp=function(){for(var l=this.activeRowIndex;l>0;)if(l--,this.$isFoldWidgetVisible(l)||this.$isCustomWidgetVisible(l)){this.$blurFoldWidget(this.activeRowIndex),this.$blurCustomWidget(this.activeRowIndex),this.activeRowIndex=l,this.$isFoldWidgetVisible(l)?this.$focusFoldWidget(this.activeRowIndex):this.$focusCustomWidget(this.activeRowIndex);return}},o.prototype.$moveFoldWidgetDown=function(){for(var l=this.activeRowIndex;l0;)if(l--,this.$isAnnotationVisible(l)){this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=l,this.$focusAnnotation(this.activeRowIndex);return}},o.prototype.$moveAnnotationDown=function(){for(var l=this.activeRowIndex;l=S.length&&(S=void 0),{value:S&&S[I++],done:!S}}};throw new TypeError(C?"Object is not iterable.":"Symbol.iterator is not defined.")},s=t("./lib/oop"),d=t("./lib/dom"),o=t("./lib/lang"),l=t("./lib/useragent"),r=t("./keyboard/textinput").TextInput,a=t("./mouse/mouse_handler").MouseHandler,c=t("./mouse/fold_handler").FoldHandler,p=t("./keyboard/keybinding").KeyBinding,u=t("./edit_session").EditSession,f=t("./search").Search,g=t("./range").Range,v=t("./lib/event_emitter").EventEmitter,b=t("./commands/command_manager").CommandManager,D=t("./commands/default_commands").commands,E=t("./config"),w=t("./token_iterator").TokenIterator,y=t("./keyboard/gutter_handler").GutterKeyboardHandler,A=t("./config").nls,T=t("./clipboard"),x=t("./lib/keys"),M=t("./lib/event"),O=t("./tooltip").HoverTooltip,_=(function(){function S(C,L,I){this.id="editor"+ ++S.$uid,this.session,this.$toDestroy=[];var F=C.getContainerElement();this.container=F,this.renderer=C,this.commands=new b(l.isMac?"mac":"win",D),typeof document=="object"&&(this.textInput=new r(C.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new a(this),new c(this)),this.keyBinding=new p(this),this.$search=new f().set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=o.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(R,B){B._$emitInputEvent.schedule(31)}),this.setSession(L||I&&I.session||new u("")),E.resetOptions(this),I&&this.setOptions(I),E._signal("editor",this)}return S.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0)},S.prototype.startOperation=function(C){this.session.startOperation(C)},S.prototype.endOperation=function(C){this.session.endOperation(C)},S.prototype.onStartOperation=function(C){this.curOp=this.session.curOp,this.curOp.scrollTop=this.renderer.scrollTop,this.prevOp=this.session.prevOp,C||(this.previousCommand=null)},S.prototype.onEndOperation=function(C){if(this.curOp&&this.session){if(C&&C.returnValue===!1){this.curOp=null;return}if(this._signal("beforeEndOperation"),!this.curOp)return;var L=this.curOp.command,I=L&&L.scrollIntoView;if(I){switch(I){case"center-animate":I="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var F=this.selection.getRange(),R=this.renderer.layerConfig;(F.start.row>=R.lastRow||F.end.row<=R.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break}I=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.$lastSel=this.session.selection.toJSON(),this.prevOp=this.curOp,this.curOp=null}},S.prototype.$historyTracker=function(C){if(this.$mergeUndoDeltas){var L=this.prevOp,I=this.$mergeableCommands,F=L.command&&C.command.name==L.command.name;if(C.command.name=="insertstring"){var R=C.args;this.mergeNextCommand===void 0&&(this.mergeNextCommand=!0),F=F&&this.mergeNextCommand&&(!/\s/.test(R)||/\s/.test(L.args)),this.mergeNextCommand=!0}else F=F&&I.indexOf(C.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(F=!1),F?this.session.mergeUndoDeltas=!0:I.indexOf(C.command.name)!==-1&&(this.sequenceStartTime=Date.now())}},S.prototype.setKeyboardHandler=function(C,L){if(C&&typeof C=="string"&&C!="ace"){this.$keybindingId=C;var I=this;E.loadModule(["keybinding",C],function(F){I.$keybindingId==C&&I.keyBinding.setKeyboardHandler(F&&F.handler),L&&L()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(C),L&&L()},S.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},S.prototype.setSession=function(C){if(this.session!=C){this.curOp&&this.endOperation(),this.curOp={};var L=this.session;if(L){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange),this.session.off("startOperation",this.$onStartOperation),this.session.off("endOperation",this.$onEndOperation);var I=this.session.getSelection();I.off("changeCursor",this.$onCursorChange),I.off("changeSelection",this.$onSelectionChange)}this.session=C,C?(this.$onDocumentChange=this.onDocumentChange.bind(this),C.on("change",this.$onDocumentChange),this.renderer.setSession(C),this.$onChangeMode=this.onChangeMode.bind(this),C.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),C.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),C.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),C.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),C.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),C.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=C.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.$onStartOperation=this.onStartOperation.bind(this),this.session.on("startOperation",this.$onStartOperation),this.$onEndOperation=this.onEndOperation.bind(this),this.session.on("endOperation",this.$onEndOperation),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(C)),this._signal("changeSession",{session:C,oldSession:L}),this.curOp=null,L&&L._signal("changeEditor",{oldEditor:this}),L&&(L.$editor=null),C&&C._signal("changeEditor",{editor:this}),C&&(C.$editor=this),C&&!C.destroyed&&C.bgTokenizer.scheduleStart()}},S.prototype.getSession=function(){return this.session},S.prototype.setValue=function(C,L){return this.session.doc.setValue(C),L?L==1?this.navigateFileEnd():L==-1&&this.navigateFileStart():this.selectAll(),C},S.prototype.getValue=function(){return this.session.getValue()},S.prototype.getSelection=function(){return this.selection},S.prototype.resize=function(C){this.renderer.onResize(C)},S.prototype.setTheme=function(C,L){this.renderer.setTheme(C,L)},S.prototype.getTheme=function(){return this.renderer.getTheme()},S.prototype.setStyle=function(C,L){this.renderer.setStyle(C,L)},S.prototype.unsetStyle=function(C){this.renderer.unsetStyle(C)},S.prototype.getFontSize=function(){return this.getOption("fontSize")||d.computedStyle(this.container).fontSize},S.prototype.setFontSize=function(C){this.setOption("fontSize",C)},S.prototype.$highlightBrackets=function(){if(!this.$highlightPending){var C=this;this.$highlightPending=!0,setTimeout(function(){C.$highlightPending=!1;var L=C.session;if(!(!L||L.destroyed)){L.$bracketHighlight&&(L.$bracketHighlight.markerIds.forEach(function(U){L.removeMarker(U)}),L.$bracketHighlight=null);var I=C.getCursorPosition(),F=C.getKeyboardHandler(),R=F&&F.$getDirectionForHighlight&&F.$getDirectionForHighlight(C),B=L.getMatchingBracketRanges(I,R);if(!B){var N=new w(L,I.row,I.column),z=N.getCurrentToken();if(z&&/\b(?:tag-open|tag-name)/.test(z.type)){var W=L.getMatchingTags(I);W&&(B=[W.openTagName.isEmpty()?W.openTag:W.openTagName,W.closeTagName.isEmpty()?W.closeTag:W.closeTagName])}}if(!B&&L.$mode.getMatching&&(B=L.$mode.getMatching(C.session)),!B){C.getHighlightIndentGuides()&&C.renderer.$textLayer.$highlightIndentGuide();return}var j="ace_bracket";Array.isArray(B)?B.length==1&&(j="ace_error_bracket"):B=[B],B.length==2&&(g.comparePoints(B[0].end,B[1].start)==0?B=[g.fromPoints(B[0].start,B[1].end)]:g.comparePoints(B[0].start,B[1].end)==0&&(B=[g.fromPoints(B[1].start,B[0].end)])),L.$bracketHighlight={ranges:B,markerIds:B.map(function(U){return L.addMarker(U,j,"text")})},C.getHighlightIndentGuides()&&C.renderer.$textLayer.$highlightIndentGuide()}},50)}},S.prototype.focus=function(){this.textInput.focus()},S.prototype.isFocused=function(){return this.textInput.isFocused()},S.prototype.blur=function(){this.textInput.blur()},S.prototype.onFocus=function(C){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",C))},S.prototype.onBlur=function(C){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",C))},S.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},S.prototype.onDocumentChange=function(C){var L=this.session.$useWrapMode,I=C.start.row==C.end.row?C.end.row:1/0;this.renderer.updateLines(C.start.row,I,L),this._signal("change",C),this.$cursorChange()},S.prototype.onTokenizerUpdate=function(C){var L=C.data;this.renderer.updateLines(L.first,L.last)},S.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},S.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},S.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},S.prototype.$updateHighlightActiveLine=function(){var C=this.getSession(),L;if(this.$highlightActiveLine&&((this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(L=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(L=!1),this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(L=!1)),C.$highlightLineMarker&&!L)C.removeMarker(C.$highlightLineMarker.id),C.$highlightLineMarker=null;else if(!C.$highlightLineMarker&&L){var I=new g(L.row,L.column,L.row,1/0);I.id=C.addMarker(I,"ace_active-line","screenLine"),C.$highlightLineMarker=I}else L&&(C.$highlightLineMarker.start.row=L.row,C.$highlightLineMarker.end.row=L.row,C.$highlightLineMarker.start.column=L.column,C._signal("changeBackMarker"))},S.prototype.onSelectionChange=function(C){var L=this.session;if(L.$selectionMarker&&L.removeMarker(L.$selectionMarker),L.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var I=this.selection.getRange(),F=this.getSelectionStyle();L.$selectionMarker=L.addMarker(I,"ace_selection",F)}var R=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(R),this._signal("changeSelection")},S.prototype.$getSelectionHighLightRegexp=function(){var C=this.session,L=this.getSelectionRange();if(!(L.isEmpty()||L.isMultiLine())){var I=L.start.column,F=L.end.column,R=C.getLine(L.start.row),B=R.substring(I,F);if(!(B.length>5e3||!/[\w\d]/.test(B))){var N=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:B}),z=R.substring(I-1,F+1);if(N.test(z))return N}}},S.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},S.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},S.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},S.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},S.prototype.onChangeMode=function(C){this.renderer.updateText(),this._emit("changeMode",C)},S.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},S.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},S.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},S.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},S.prototype.getCopyText=function(){var C=this.getSelectedText(),L=this.session.doc.getNewLineCharacter(),I=!1;if(!C&&this.$copyWithEmptySelection){I=!0;for(var F=this.selection.getAllRanges(),R=0;RU.search(/\S|$/)){var H=U.substr(R.column).search(/\S|$/);I.doc.removeInLine(R.row,R.column,R.column+H)}}this.clearSelection();var W=R.column,j=I.getState(R.row),U=I.getLine(R.row),K=F.checkOutdent(j,U,C);if(I.insert(R,C),B&&B.selection&&(B.selection.length==2?this.selection.setSelectionRange(new g(R.row,W+B.selection[0],R.row,W+B.selection[1])):this.selection.setSelectionRange(new g(R.row+B.selection[0],B.selection[1],R.row+B.selection[2],B.selection[3]))),this.$enableAutoIndent){if(I.getDocument().isNewLine(C)){var J=F.getNextLineIndent(j,U.slice(0,R.column),I.getTabString());I.insert({row:R.row+1,column:0},J)}K&&F.autoOutdent(j,I,R.row)}},S.prototype.autoIndent=function(){for(var C=this.session,L=C.getMode(),I=this.selection.isEmpty()?[new g(0,0,C.doc.getLength()-1,0)]:this.selection.getAllRanges(),F="",R="",B="",N=C.getTabString(),H=0;H0&&(F=C.getState(U-1),R=C.getLine(U-1),B=L.getNextLineIndent(F,R,N));var K=C.getLine(U),J=L.$getIndent(K);if(B!==J){if(J.length>0){var Y=new g(U,0,U,J.length);C.remove(Y)}B.length>0&&C.insert({row:U,column:0},B)}L.autoOutdent(F,C,U)}},S.prototype.onTextInput=function(C,L){if(!L)return this.keyBinding.onTextInput(C);this.startOperation({command:{name:"insertstring"}});var I=this.applyComposition.bind(this,C,L);this.selection.rangeCount?this.forEachSelection(I):I(),this.endOperation()},S.prototype.applyComposition=function(C,L){if(L.extendLeft||L.extendRight){var I=this.selection.getRange();I.start.column-=L.extendLeft,I.end.column+=L.extendRight,I.start.column<0&&(I.start.row--,I.start.column+=this.session.getLine(I.start.row).length+1),this.selection.setRange(I),!C&&!I.isEmpty()&&this.remove()}if((C||!this.selection.isEmpty())&&this.insert(C,!0),L.restoreStart||L.restoreEnd){var I=this.selection.getRange();I.start.column-=L.restoreStart,I.end.column-=L.restoreEnd,this.selection.setRange(I)}},S.prototype.onCommandKey=function(C,L,I){return this.keyBinding.onCommandKey(C,L,I)},S.prototype.setOverwrite=function(C){this.session.setOverwrite(C)},S.prototype.getOverwrite=function(){return this.session.getOverwrite()},S.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},S.prototype.setScrollSpeed=function(C){this.setOption("scrollSpeed",C)},S.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},S.prototype.setDragDelay=function(C){this.setOption("dragDelay",C)},S.prototype.getDragDelay=function(){return this.getOption("dragDelay")},S.prototype.setSelectionStyle=function(C){this.setOption("selectionStyle",C)},S.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},S.prototype.setHighlightActiveLine=function(C){this.setOption("highlightActiveLine",C)},S.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},S.prototype.setHighlightGutterLine=function(C){this.setOption("highlightGutterLine",C)},S.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},S.prototype.setHighlightSelectedWord=function(C){this.setOption("highlightSelectedWord",C)},S.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},S.prototype.setAnimatedScroll=function(C){this.renderer.setAnimatedScroll(C)},S.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},S.prototype.setShowInvisibles=function(C){this.renderer.setShowInvisibles(C)},S.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},S.prototype.setDisplayIndentGuides=function(C){this.renderer.setDisplayIndentGuides(C)},S.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},S.prototype.setHighlightIndentGuides=function(C){this.renderer.setHighlightIndentGuides(C)},S.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},S.prototype.setShowPrintMargin=function(C){this.renderer.setShowPrintMargin(C)},S.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},S.prototype.setPrintMarginColumn=function(C){this.renderer.setPrintMarginColumn(C)},S.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},S.prototype.setReadOnly=function(C){this.setOption("readOnly",C)},S.prototype.getReadOnly=function(){return this.getOption("readOnly")},S.prototype.setBehavioursEnabled=function(C){this.setOption("behavioursEnabled",C)},S.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},S.prototype.setWrapBehavioursEnabled=function(C){this.setOption("wrapBehavioursEnabled",C)},S.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},S.prototype.setShowFoldWidgets=function(C){this.setOption("showFoldWidgets",C)},S.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},S.prototype.setFadeFoldWidgets=function(C){this.setOption("fadeFoldWidgets",C)},S.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},S.prototype.remove=function(C){this.selection.isEmpty()&&(C=="left"?this.selection.selectLeft():this.selection.selectRight());var L=this.getSelectionRange();if(this.getBehavioursEnabled()){var I=this.session,F=I.getState(L.start.row),R=I.getMode().transformAction(F,"deletion",this,I,L);if(L.end.column===0){var B=I.getTextRange(L);if(B[B.length-1]==` +`){var U=I.getLine(R.row);if(R.column>U.search(/\S|$/)){var z=U.substr(R.column).search(/\S|$/);I.doc.removeInLine(R.row,R.column,R.column+z)}}this.clearSelection();var W=R.column,j=I.getState(R.row),U=I.getLine(R.row),K=F.checkOutdent(j,U,C);if(I.insert(R,C),B&&B.selection&&(B.selection.length==2?this.selection.setSelectionRange(new g(R.row,W+B.selection[0],R.row,W+B.selection[1])):this.selection.setSelectionRange(new g(R.row+B.selection[0],B.selection[1],R.row+B.selection[2],B.selection[3]))),this.$enableAutoIndent){if(I.getDocument().isNewLine(C)){var J=F.getNextLineIndent(j,U.slice(0,R.column),I.getTabString());I.insert({row:R.row+1,column:0},J)}K&&F.autoOutdent(j,I,R.row)}},S.prototype.autoIndent=function(){for(var C=this.session,L=C.getMode(),I=this.selection.isEmpty()?[new g(0,0,C.doc.getLength()-1,0)]:this.selection.getAllRanges(),F="",R="",B="",N=C.getTabString(),z=0;z0&&(F=C.getState(U-1),R=C.getLine(U-1),B=L.getNextLineIndent(F,R,N));var K=C.getLine(U),J=L.$getIndent(K);if(B!==J){if(J.length>0){var Y=new g(U,0,U,J.length);C.remove(Y)}B.length>0&&C.insert({row:U,column:0},B)}L.autoOutdent(F,C,U)}},S.prototype.onTextInput=function(C,L){if(!L)return this.keyBinding.onTextInput(C);this.startOperation({command:{name:"insertstring"}});var I=this.applyComposition.bind(this,C,L);this.selection.rangeCount?this.forEachSelection(I):I(),this.endOperation()},S.prototype.applyComposition=function(C,L){if(L.extendLeft||L.extendRight){var I=this.selection.getRange();I.start.column-=L.extendLeft,I.end.column+=L.extendRight,I.start.column<0&&(I.start.row--,I.start.column+=this.session.getLine(I.start.row).length+1),this.selection.setRange(I),!C&&!I.isEmpty()&&this.remove()}if((C||!this.selection.isEmpty())&&this.insert(C,!0),L.restoreStart||L.restoreEnd){var I=this.selection.getRange();I.start.column-=L.restoreStart,I.end.column-=L.restoreEnd,this.selection.setRange(I)}},S.prototype.onCommandKey=function(C,L,I){return this.keyBinding.onCommandKey(C,L,I)},S.prototype.setOverwrite=function(C){this.session.setOverwrite(C)},S.prototype.getOverwrite=function(){return this.session.getOverwrite()},S.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},S.prototype.setScrollSpeed=function(C){this.setOption("scrollSpeed",C)},S.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},S.prototype.setDragDelay=function(C){this.setOption("dragDelay",C)},S.prototype.getDragDelay=function(){return this.getOption("dragDelay")},S.prototype.setSelectionStyle=function(C){this.setOption("selectionStyle",C)},S.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},S.prototype.setHighlightActiveLine=function(C){this.setOption("highlightActiveLine",C)},S.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},S.prototype.setHighlightGutterLine=function(C){this.setOption("highlightGutterLine",C)},S.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},S.prototype.setHighlightSelectedWord=function(C){this.setOption("highlightSelectedWord",C)},S.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},S.prototype.setAnimatedScroll=function(C){this.renderer.setAnimatedScroll(C)},S.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},S.prototype.setShowInvisibles=function(C){this.renderer.setShowInvisibles(C)},S.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},S.prototype.setDisplayIndentGuides=function(C){this.renderer.setDisplayIndentGuides(C)},S.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},S.prototype.setHighlightIndentGuides=function(C){this.renderer.setHighlightIndentGuides(C)},S.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},S.prototype.setShowPrintMargin=function(C){this.renderer.setShowPrintMargin(C)},S.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},S.prototype.setPrintMarginColumn=function(C){this.renderer.setPrintMarginColumn(C)},S.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},S.prototype.setReadOnly=function(C){this.setOption("readOnly",C)},S.prototype.getReadOnly=function(){return this.getOption("readOnly")},S.prototype.setBehavioursEnabled=function(C){this.setOption("behavioursEnabled",C)},S.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},S.prototype.setWrapBehavioursEnabled=function(C){this.setOption("wrapBehavioursEnabled",C)},S.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},S.prototype.setShowFoldWidgets=function(C){this.setOption("showFoldWidgets",C)},S.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},S.prototype.setFadeFoldWidgets=function(C){this.setOption("fadeFoldWidgets",C)},S.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},S.prototype.remove=function(C){this.selection.isEmpty()&&(C=="left"?this.selection.selectLeft():this.selection.selectRight());var L=this.getSelectionRange();if(this.getBehavioursEnabled()){var I=this.session,F=I.getState(L.start.row),R=I.getMode().transformAction(F,"deletion",this,I,L);if(L.end.column===0){var B=I.getTextRange(L);if(B[B.length-1]==` `){var N=I.getLine(L.end.row);/^\s+$/.test(N)&&(L.end.column=N.length)}}R&&(L=R)}this.session.remove(L),this.clearSelection()},S.prototype.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},S.prototype.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},S.prototype.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},S.prototype.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var C=this.getSelectionRange();C.start.column==C.end.column&&C.start.row==C.end.row&&(C.end.column=0,C.end.row++),this.session.remove(C),this.clearSelection()},S.prototype.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var C=this.getCursorPosition();this.insert(` -`),this.moveCursorToPosition(C)},S.prototype.setGhostText=function(C,L){this.renderer.setGhostText(C,L)},S.prototype.removeGhostText=function(){this.renderer.removeGhostText()},S.prototype.transposeLetters=function(){if(this.selection.isEmpty()){var C=this.getCursorPosition(),L=C.column;if(L!==0){var I=this.session.getLine(C.row),F,R;LH.toLowerCase()?1:0});for(var R=new g(0,0,0,0),F=C.first;F<=C.last;F++){var B=L.getLine(F);R.start.row=F,R.end.row=F,R.end.column=B.length,L.replace(R,I[F-C.first])}},S.prototype.toggleCommentLines=function(){var C=this.session.getState(this.getCursorPosition().row),L=this.$getSelectedRows();this.session.getMode().toggleCommentLines(C,this.session,L.first,L.last)},S.prototype.toggleBlockComment=function(){var C=this.getCursorPosition(),L=this.session.getState(C.row),I=this.getSelectionRange();this.session.getMode().toggleBlockComment(L,this.session,I,C)},S.prototype.getNumberAt=function(C,L){var I=/[\-]?[0-9]+(?:\.[0-9]+)?/g;I.lastIndex=0;for(var F=this.session.getLine(C);I.lastIndex=L){var B={value:R[0],start:R.index,end:R.index+R[0].length};return B}}return null},S.prototype.modifyNumber=function(C){var L=this.selection.getCursor().row,I=this.selection.getCursor().column,F=new g(L,I-1,L,I),R=this.session.getTextRange(F);if(!isNaN(parseFloat(R))&&isFinite(R)){var B=this.getNumberAt(L,I);if(B){var N=B.value.indexOf(".")>=0?B.start+B.value.indexOf(".")+1:B.end,H=B.start+B.value.length-N,W=parseFloat(B.value);W*=Math.pow(10,H),N!==B.end&&I=N&&B<=H&&(I=ue,W.selection.clearSelection(),W.moveCursorTo(C,N+F),W.selection.selectTo(C,H+F)),N=H});for(var j=this.$toggleWordPairs,U,K=0;K=H&&N<=W&&J.match(/((?:https?|ftp):\/\/[\S]+)/)){j=J.replace(/[\s:.,'";}\]]+$/,"");break}H=W}}catch(Y){I={error:Y}}finally{try{K&&!K.done&&(F=U.return)&&F.call(U)}finally{if(I)throw I.error}}return j},S.prototype.openLink=function(){var C=this.selection.getCursor(),L=this.findLinkAt(C.row,C.column);return L&&window.open(L,"_blank"),L!=null},S.prototype.removeLines=function(){var C=this.$getSelectedRows();this.session.removeFullLines(C.first,C.last),this.clearSelection()},S.prototype.duplicateSelection=function(){var C=this.selection,L=this.session,I=C.getRange(),F=C.isBackwards();if(I.isEmpty()){var R=I.start.row;L.duplicateLines(R,R)}else{var B=F?I.start:I.end,N=L.insert(B,L.getTextRange(I));I.start=B,I.end=N,C.setSelectionRange(I,F)}},S.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},S.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},S.prototype.moveText=function(C,L,I){return this.session.moveText(C,L,I)},S.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},S.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},S.prototype.$moveLines=function(C,L){var I,F,R=this.selection;if(!R.inMultiSelectMode||this.inVirtualSelectionMode){var B=R.toOrientedRange();I=this.$getSelectedRows(B),F=this.session.$moveLines(I.first,I.last,L?0:C),L&&C==-1&&(F=0),B.moveBy(F,0),R.fromOrientedRange(B)}else{var N=R.rangeList.ranges;R.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var H=0,W=0,j=N.length,U=0;UY+1)break;Y=X.last}for(U--,H=this.session.$moveLines(J,Y,L?0:C),L&&C==-1&&(K=U+1);K<=U;)N[K].moveBy(H,0),K++;L||(H=0),W+=H}R.fromOrientedRange(R.ranges[0]),R.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},S.prototype.$getSelectedRows=function(C){return C=(C||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(C.start.row),last:this.session.getRowFoldEnd(C.end.row)}},S.prototype.onCompositionStart=function(C){this.renderer.showComposition(C)},S.prototype.onCompositionUpdate=function(C){this.renderer.setCompositionText(C)},S.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},S.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},S.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},S.prototype.isRowVisible=function(C){return C>=this.getFirstVisibleRow()&&C<=this.getLastVisibleRow()},S.prototype.isRowFullyVisible=function(C){return C>=this.renderer.getFirstFullyVisibleRow()&&C<=this.renderer.getLastFullyVisibleRow()},S.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},S.prototype.$moveByPage=function(C,L){var I=this.renderer,F=this.renderer.layerConfig,R=C*Math.floor(F.height/F.lineHeight);L===!0?this.selection.$moveSelection(function(){this.moveCursorBy(R,0)}):L===!1&&(this.selection.moveCursorBy(R,0),this.selection.clearSelection());var B=I.scrollTop;I.scrollBy(0,R*F.lineHeight),L!=null&&I.scrollCursorIntoView(null,.5),I.animateScrolling(B)},S.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},S.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},S.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},S.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},S.prototype.scrollPageDown=function(){this.$moveByPage(1)},S.prototype.scrollPageUp=function(){this.$moveByPage(-1)},S.prototype.scrollToRow=function(C){this.renderer.scrollToRow(C)},S.prototype.scrollToLine=function(C,L,I,F){this.renderer.scrollToLine(C,L,I,F)},S.prototype.centerSelection=function(){var C=this.getSelectionRange(),L={row:Math.floor(C.start.row+(C.end.row-C.start.row)/2),column:Math.floor(C.start.column+(C.end.column-C.start.column)/2)};this.renderer.alignCursor(L,.5)},S.prototype.getCursorPosition=function(){return this.selection.getCursor()},S.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},S.prototype.getSelectionRange=function(){return this.selection.getRange()},S.prototype.selectAll=function(){this.selection.selectAll()},S.prototype.clearSelection=function(){this.selection.clearSelection()},S.prototype.moveCursorTo=function(C,L){this.selection.moveCursorTo(C,L)},S.prototype.moveCursorToPosition=function(C){this.selection.moveCursorToPosition(C)},S.prototype.jumpToMatching=function(C,L){var I=this.getCursorPosition(),F=new w(this.session,I.row,I.column),R=F.getCurrentToken(),B=0;R&&R.type.indexOf("tag-name")!==-1&&(R=F.stepBackward());var N=R||F.stepForward();if(N){var H,W=!1,j={},U=I.column-N.start,K,J={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(N.value.match(/[{}()\[\]]/g)){for(;U1?j[N.value]++:R.value==="=0;--B)this.$tryReplace(I[B],C)&&F++;return this.selection.setSelectionRange(R),F},S.prototype.$tryReplace=function(C,L){var I=this.session.getTextRange(C);return L=this.$search.replace(I,L),L!==null?(C.end=this.session.replace(C,L),C):null},S.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},S.prototype.find=function(C,L,I){L||(L={}),typeof C=="string"||C instanceof RegExp?L.needle=C:typeof C=="object"&&s.mixin(L,C);var F=this.selection.getRange();L.needle==null&&(C=this.session.getTextRange(F)||this.$search.$options.needle,C||(F=this.session.getWordRange(F.start.row,F.start.column),C=this.session.getTextRange(F)),this.$search.set({needle:C})),this.$search.set(L),L.start||this.$search.set({start:F});var R=this.$search.find(this.session);if(L.preventScroll)return R;if(R)return this.revealRange(R,I),R;L.backwards?F.start=F.end:F.end=F.start,this.selection.setRange(F)},S.prototype.findNext=function(C,L){this.find({skipCurrent:!0,backwards:!1},C,L)},S.prototype.findPrevious=function(C,L){this.find(C,{skipCurrent:!0,backwards:!0},L)},S.prototype.revealRange=function(C,L){this.session.unfold(C),this.selection.setSelectionRange(C);var I=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(C.start,C.end,.5),L!==!1&&this.renderer.animateScrolling(I)},S.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},S.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},S.prototype.destroy=function(){this.destroyed=!0,this.$toDestroy&&(this.$toDestroy.forEach(function(C){C.destroy()}),this.$toDestroy=[]),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},S.prototype.setAutoScrollEditorIntoView=function(C){if(C){var L,I=this,F=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var R=this.$scrollAnchor;R.style.cssText="position:absolute",this.container.insertBefore(R,this.container.firstChild);var B=this.on("changeSelection",function(){F=!0}),N=this.renderer.on("beforeRender",function(){F&&(L=I.renderer.container.getBoundingClientRect())}),H=this.renderer.on("afterRender",function(){if(F&&L&&(I.isFocused()||I.searchBox&&I.searchBox.isFocused())){var W=I.renderer,j=W.$cursorLayer.$pixelPos,U=W.layerConfig,K=j.top-U.offset;j.top>=0&&K+L.top<0?F=!0:j.topwindow.innerHeight?F=!1:F=null,F!=null&&(R.style.top=K+"px",R.style.left=j.left+"px",R.style.height=U.lineHeight+"px",R.scrollIntoView(F)),F=L=null}});this.setAutoScrollEditorIntoView=function(W){W||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",B),this.renderer.off("afterRender",H),this.renderer.off("beforeRender",N))}}},S.prototype.$resetCursorStyle=function(){var C=this.$cursorStyle||"ace",L=this.renderer.$cursorLayer;L&&(L.setSmoothBlinking(/smooth/.test(C)),L.isBlinking=!this.$readOnly&&C!="wide",d.setCssClass(L.element,"ace_slim-cursors",/slim/.test(C)))},S.prototype.prompt=function(C,L,I){var F=this;E.loadModule("ace/ext/prompt",function(R){R.prompt(F,C,L,I)})},S})();_.$uid=0,_.prototype.curOp=null,_.prototype.prevOp={},_.prototype.$mergeableCommands=["backspace","del","insertstring"],_.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],s.implement(_.prototype,v),E.defineOptions(_.prototype,"editor",{selectionStyle:{set:function(S){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:S})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(S){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(S){var C=this;if(this.textInput.setReadOnly(S),!this.destroyed){this.$resetCursorStyle(),this.$readOnlyCallback||(this.$readOnlyCallback=function(I){var F=!1;if(I&&I.type=="keydown"){if(I&&I.key&&!I.ctrlKey&&!I.metaKey&&(I.key==" "&&I.preventDefault(),F=I.key.length==1),!F)return}else I&&I.type!=="exec"&&(F=!0);if(F){C.hoverTooltip||(C.hoverTooltip=new O);var R=d.createElement("div");R.textContent=A("editor.tooltip.disable-editing","Editing is disabled"),C.hoverTooltip.isOpen||C.hoverTooltip.showForRange(C,C.getSelectionRange(),R)}else C.hoverTooltip&&C.hoverTooltip.isOpen&&C.hoverTooltip.hide()});var L=this.textInput.getElement();S?(M.addListener(L,"keydown",this.$readOnlyCallback,this),this.commands.on("exec",this.$readOnlyCallback),this.commands.on("commandUnavailable",this.$readOnlyCallback)):(M.removeListener(L,"keydown",this.$readOnlyCallback),this.commands.off("exec",this.$readOnlyCallback),this.commands.off("commandUnavailable",this.$readOnlyCallback),this.hoverTooltip&&(this.hoverTooltip.destroy(),this.hoverTooltip=null))}},initialValue:!1},copyWithEmptySelection:{set:function(S){this.textInput.setCopyWithEmptySelection(S)},initialValue:!1},cursorStyle:{set:function(S){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(S){this.setAutoScrollEditorIntoView(S)}},keyboardHandler:{set:function(S){this.setKeyboardHandler(S)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(S){this.session.setValue(S)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(S){this.setSession(S)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(S){this.renderer.$gutterLayer.setShowLineNumbers(S),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),S&&this.$relativeLineNumbers?k.attach(this):k.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(S){this.$showLineNumbers&&S?k.attach(this):k.detach(this)}},placeholder:{set:function(S){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var C=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(C&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),d.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!C&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),d.addCssClass(this.container,"ace_hasPlaceholder");var L=d.createElement("div");L.className="ace_placeholder",L.textContent=this.$placeholder||"",this.renderer.placeholderNode=L,this.renderer.content.appendChild(this.renderer.placeholderNode)}else!C&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"")}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(S){var C={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(F){F.blur(),F.renderer.scroller.focus()},readOnly:!0},L=function(F){if(F.target==this.renderer.scroller&&F.keyCode===$.enter){F.preventDefault();var R=this.getCursorPosition().row;this.isRowVisible(R)||this.scrollToLine(R,!0,!0),this.focus()}},I;S?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.textInput.setNumberOfExtraLines(l.isWin?3:0),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",A("editor.scroller.aria-roledescription","editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",A("editor.scroller.aria-label","Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",L.bind(this)),this.commands.addCommand(C),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",A("editor.gutter.aria-roledescription","editor gutter")),this.renderer.$gutter.setAttribute("aria-label",A("editor.gutter.aria-label","Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),I||(I=new y(this)),I.addListener(),this.textInput.setAriaOptions({setLabel:!0})):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.textInput.setNumberOfExtraLines(0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",L.bind(this)),this.commands.removeCommand(C),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),I&&I.removeListener())},initialValue:!1},textInputAriaLabel:{set:function(S){this.$textInputAriaLabel=S},initialValue:""},enableMobileMenu:{set:function(S){this.$enableMobileMenu=S},initialValue:!0},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var k={getText:function(S,C){return(Math.abs(S.selection.lead.row-C)||C+1+(C<9?"·":""))+""},getWidth:function(S,C,L){return Math.max(C.toString().length,(L.lastRow+1).toString().length,2)*L.characterWidth},update:function(S,C){C.renderer.$loop.schedule(C.renderer.CHANGE_GUTTER)},attach:function(S){S.renderer.$gutterLayer.$renderer=this,S.on("changeSelection",this.update),this.update(null,S)},detach:function(S){S.renderer.$gutterLayer.$renderer==this&&(S.renderer.$gutterLayer.$renderer=null),S.off("changeSelection",this.update),this.update(null,S)}};n.Editor=_}),ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(t,n,u){var i=t("../lib/dom"),s=(function(){function d(o,l){this.element=o,this.canvasHeight=l||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0}return d.prototype.moveContainer=function(o){i.translate(this.element,0,-(o.firstRowScreen*o.lineHeight%this.canvasHeight)-o.offset*this.$offsetCoefficient)},d.prototype.pageChanged=function(o,l){return Math.floor(o.firstRowScreen*o.lineHeight/this.canvasHeight)!==Math.floor(l.firstRowScreen*l.lineHeight/this.canvasHeight)},d.prototype.computeLineTop=function(o,l,r){var a=l.firstRowScreen*l.lineHeight,c=Math.floor(a/this.canvasHeight),p=r.documentToScreenRow(o,0)*l.lineHeight;return p-c*this.canvasHeight},d.prototype.computeLineHeight=function(o,l,r){return l.lineHeight*r.getRowLineCount(o)},d.prototype.getLength=function(){return this.cells.length},d.prototype.get=function(o){return this.cells[o]},d.prototype.shift=function(){this.$cacheCell(this.cells.shift())},d.prototype.pop=function(){this.$cacheCell(this.cells.pop())},d.prototype.push=function(o){if(Array.isArray(o)){this.cells.push.apply(this.cells,o);for(var l=i.createFragment(this.element),r=0;rD&&(y=b.end.row+1,b=f.getNextFoldLine(y,b),D=b?b.start.row:1/0),y>v){for(;this.$lines.getLength()>w+1;)this.$lines.pop();break}E=this.$lines.get(++w),E?E.row=y:(E=this.$lines.createCell(y,h,this.session,c),this.$lines.push(E)),this.$renderCell(E,h,b,y),y++}this._signal("afterRender"),this.$updateGutterWidth(h),this.$showCursorMarker&&this.$highlightGutterLine&&this.$updateCursorMarker()},p.prototype.$updateGutterWidth=function(h){var f=this.session,g=f.gutterRenderer||this.$renderer,v=f.$firstLineNumber,b=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||f.$useWrapMode)&&(b=f.getLength()+v-1);var D=g?g.getWidth(f,b,h):b.toString().length*h.characterWidth,E=this.$padding||this.$computePadding();D+=E.left+E.right,D!==this.gutterWidth&&!isNaN(D)&&(this.gutterWidth=D,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",D))},p.prototype.$updateCursorRow=function(){if(this.$highlightGutterLine){var h=this.session.selection.getCursor();this.$cursorRow!==h.row&&(this.$cursorRow=h.row)}},p.prototype.updateLineHighlight=function(){if(this.$showCursorMarker&&this.$updateCursorMarker(),!!this.$highlightGutterLine){var h=this.session.selection.cursor.row;if(this.$cursorRow=h,!(this.$cursorCell&&this.$cursorCell.row==h)){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var f=this.$lines.cells;this.$cursorCell=null;for(var g=0;g=this.$cursorRow){if(v.row>this.$cursorRow){var b=this.session.getFoldLine(this.$cursorRow);if(g>0&&b&&b.start.row==f[g-1].row)v=f[g-1];else break}v.element.className="ace_gutter-active-line "+v.element.className,this.$cursorCell=v;break}}}}},p.prototype.$updateCursorMarker=function(){if(this.session){var h=this.session;this.$highlightElement||(this.$highlightElement=i.createElement("div"),this.$highlightElement.className="ace_gutter-cursor",this.$highlightElement.style.pointerEvents="none",this.element.appendChild(this.$highlightElement));var f=h.selection.cursor,g=this.config,v=this.$lines,b=g.firstRowScreen*g.lineHeight,D=Math.floor(b/v.canvasHeight),E=h.documentToScreenRow(f)*g.lineHeight,w=E-D*v.canvasHeight;i.setStyle(this.$highlightElement.style,"height",g.lineHeight+"px"),i.setStyle(this.$highlightElement.style,"top",w+"px")}},p.prototype.scrollLines=function(h){var f=this.config;if(this.config=h,this.$updateCursorRow(),this.$lines.pageChanged(f,h))return this.update(h);this.$lines.moveContainer(h);var g=Math.min(h.lastRow+h.gutterOffset,this.session.getLength()-1),v=this.oldLastRow;if(this.oldLastRow=g,!f||v0;b--)this.$lines.shift();if(v>g)for(var b=this.session.getFoldedRowCount(g+1,v);b>0;b--)this.$lines.pop();h.firstRowv&&this.$lines.push(this.$renderLines(h,v+1,g)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(h)},p.prototype.$renderLines=function(h,f,g){for(var v=[],b=f,D=this.session.getNextFoldLine(b),E=D?D.start.row:1/0;b>E&&(b=D.end.row+1,D=this.session.getNextFoldLine(b,D),E=D?D.start.row:1/0),!(b>g);){var w=this.$lines.createCell(b,h,this.session,c);this.$renderCell(w,h,D,b),v.push(w),b++}return v},p.prototype.$renderCell=function(h,f,g,v){var b=h.element,D=this.session,E=b.childNodes[0],w=b.childNodes[1],y=b.childNodes[2],A=b.childNodes[3],T=y.firstChild,$=D.$firstLineNumber,M=D.$breakpoints,O=D.$decorations,_=D.gutterRenderer||this.$renderer,k=this.$showFoldWidgets&&D.foldWidgets,S=g?g.start.row:Number.MAX_VALUE,C=f.lineHeight+"px",L=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",I=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",F=(_?_.getText(D,v):v+$).toString();if(this.$highlightGutterLine&&(v==this.$cursorRow||g&&v=S&&this.$cursorRow<=g.end.row)&&(L+="ace_gutter-active-line ",this.$cursorCell!=h&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=h)),M[v]&&(L+=M[v]),O[v]&&(L+=O[v]),this.$annotations[v]&&v!==S&&(L+=this.$annotations[v].className),k){var R=k[v];R==null&&(R=k[v]=D.getFoldWidget(v))}if(R){var B="ace_fold-widget ace_"+R,N=R=="start"&&v==S&&vf[v].row)){for(;g<=v;){var b=Math.floor((g+v)/2),D=f[b];if(D.row>h)v=b-1;else if(D.rowg.right-f.right)return"foldWidgets"},p})();a.prototype.$fixedWidth=!1,a.prototype.$highlightGutterLine=!0,a.prototype.$renderer=void 0,a.prototype.$showLineNumbers=!0,a.prototype.$showFoldWidgets=!0,s.implement(a.prototype,o);function c(p){var h=document.createTextNode("");p.appendChild(h);var f=i.createElement("span");p.appendChild(f);var g=i.createElement("span");p.appendChild(g);var v=i.createElement("span");return g.appendChild(v),p}n.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(t,n,u){var i=t("../range").Range,s=t("../lib/dom"),d=(function(){function l(r){this.element=s.createElement("div"),this.element.className="ace_layer ace_marker-layer",r.appendChild(this.element)}return l.prototype.setPadding=function(r){this.$padding=r},l.prototype.setSession=function(r){this.session=r},l.prototype.setMarkers=function(r){this.markers=r},l.prototype.elt=function(r,a){var c=this.i!=-1&&this.element.childNodes[this.i];c?this.i++:(c=document.createElement("div"),this.element.appendChild(c),this.i=-1),c.style.cssText=a,c.className=r},l.prototype.update=function(r){if(r){this.config=r,this.i=0;var a;for(var c in this.markers){var p=this.markers[c];if(!p.range){p.update(a,this,this.session,r);continue}var h=p.range.clipRows(r.firstRow,r.lastRow);if(!h.isEmpty())if(h=h.toScreenRange(this.session),p.renderer){var f=this.$getTop(h.start.row,r),g=this.$padding+h.start.column*r.characterWidth;p.renderer(a,h,g,f,r)}else p.type=="fullLine"?this.drawFullLineMarker(a,h,p.clazz,r):p.type=="screenLine"?this.drawScreenLineMarker(a,h,p.clazz,r):h.isMultiLine()?p.type=="text"?this.drawTextMarker(a,h,p.clazz,r):this.drawMultiLineMarker(a,h,p.clazz,r):this.drawSingleLineMarker(a,h,p.clazz+" ace_start ace_br15",r)}if(this.i!=-1)for(;this.iw,b==v),p,b==v?0:1,h)},l.prototype.drawMultiLineMarker=function(r,a,c,p,h){var f=this.$padding,g=p.lineHeight,v=this.$getTop(a.start.row,p),b=f+a.start.column*p.characterWidth;if(h=h||"",this.session.$bidiHandler.isBidiRow(a.start.row)){var D=a.clone();D.end.row=D.start.row,D.end.column=this.session.getLine(D.start.row).length,this.drawBidiSingleLineMarker(r,D,c+" ace_br1 ace_start",p,null,h)}else this.elt(c+" ace_br1 ace_start","height:"+g+"px;right:"+f+"px;top:"+v+"px;left:"+b+"px;"+(h||""));if(this.session.$bidiHandler.isBidiRow(a.end.row)){var D=a.clone();D.start.row=D.end.row,D.start.column=0,this.drawBidiSingleLineMarker(r,D,c+" ace_br12",p,null,h)}else{v=this.$getTop(a.end.row,p);var E=a.end.column*p.characterWidth;this.elt(c+" ace_br12","height:"+g+"px;width:"+E+"px;top:"+v+"px;left:"+f+"px;"+(h||""))}if(g=(a.end.row-a.start.row-1)*p.lineHeight,!(g<=0)){v=this.$getTop(a.start.row+1,p);var w=(a.start.column?1:0)|(a.end.column?0:8);this.elt(c+(w?" ace_br"+w:""),"height:"+g+"px;right:"+f+"px;top:"+v+"px;left:"+f+"px;"+(h||""))}},l.prototype.drawSingleLineMarker=function(r,a,c,p,h,f){if(this.session.$bidiHandler.isBidiRow(a.start.row))return this.drawBidiSingleLineMarker(r,a,c,p,h,f);var g=p.lineHeight,v=(a.end.column+(h||0)-a.start.column)*p.characterWidth,b=this.$getTop(a.start.row,p),D=this.$padding+a.start.column*p.characterWidth;this.elt(c,"height:"+g+"px;width:"+v+"px;top:"+b+"px;left:"+D+"px;"+(f||""))},l.prototype.drawBidiSingleLineMarker=function(r,a,c,p,h,f){var g=p.lineHeight,v=this.$getTop(a.start.row,p),b=this.$padding,D=this.session.$bidiHandler.getSelections(a.start.column,a.end.column);D.forEach(function(E){this.elt(c,"height:"+g+"px;width:"+(E.width+(h||0))+"px;top:"+v+"px;left:"+(b+E.left)+"px;"+(f||""))},this)},l.prototype.drawFullLineMarker=function(r,a,c,p,h){var f=this.$getTop(a.start.row,p),g=p.lineHeight;a.start.row!=a.end.row&&(g+=this.$getTop(a.end.row,p)-f),this.elt(c,"height:"+g+"px;top:"+f+"px;left:0;right:0;"+(h||""))},l.prototype.drawScreenLineMarker=function(r,a,c,p,h){var f=this.$getTop(a.start.row,p),g=p.lineHeight;this.elt(c,"height:"+g+"px;top:"+f+"px;left:0;right:0;"+(h||""))},l})();d.prototype.$padding=0;function o(l,r,a,c){return(l?1:0)|(r?2:0)|(a?4:0)|(c?8:0)}n.Marker=d}),ace.define("ace/layer/text_util",["require","exports","module"],function(t,n,u){var i=new Set(["text","rparen","lparen"]);n.isTextToken=function(s){return i.has(s)}}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],function(t,n,u){var i=t("../lib/oop"),s=t("../lib/dom"),d=t("../lib/lang"),o=t("./lines").Lines,l=t("../lib/event_emitter").EventEmitter,r=t("../config").nls,a=t("./text_util").isTextToken,c=(function(){function p(h){this.dom=s,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",h.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)}return p.prototype.$updateEolChar=function(){var h=this.session.doc,f=h.getNewLineCharacter()==` -`&&h.getNewLineMode()!="windows",g=f?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=g)return this.EOL_CHAR=g,!0},p.prototype.setPadding=function(h){this.$padding=h,this.element.style.margin="0 "+h+"px"},p.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},p.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},p.prototype.$setFontMetrics=function(h){this.$fontMetrics=h,this.$fontMetrics.on("changeCharacterSize",function(f){this._signal("changeCharacterSize",f)}.bind(this)),this.$pollSizeChanges()},p.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},p.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},p.prototype.setSession=function(h){this.session=h,h&&this.$computeTabString()},p.prototype.setShowInvisibles=function(h){return this.showInvisibles==h?!1:(this.showInvisibles=h,typeof h=="string"?(this.showSpaces=/tab/i.test(h),this.showTabs=/space/i.test(h),this.showEOL=/eol/i.test(h)):this.showSpaces=this.showTabs=this.showEOL=h,this.$computeTabString(),!0)},p.prototype.setDisplayIndentGuides=function(h){return this.displayIndentGuides==h?!1:(this.displayIndentGuides=h,this.$computeTabString(),!0)},p.prototype.setHighlightIndentGuides=function(h){return this.$highlightIndentGuides===h?!1:(this.$highlightIndentGuides=h,h)},p.prototype.$computeTabString=function(){var h=this.session.getTabSize();this.tabSize=h;for(var f=this.$tabStrings=[0],g=1;gT&&(y=A.end.row+1,A=this.session.getNextFoldLine(y,A),T=A?A.start.row:1/0),!(y>b);){var $=D[E++];if($){this.dom.removeChildren($),this.$renderLine($,y,y==T?A:!1),w&&($.style.top=this.$lines.computeLineTop(y,h,this.session)+"px");var M=h.lineHeight*this.session.getRowLength(y)+"px";$.style.height!=M&&(w=!0,$.style.height=M)}y++}if(w)for(;E0;b--)this.$lines.shift();if(f.lastRow>h.lastRow)for(var b=this.session.getFoldedRowCount(h.lastRow+1,f.lastRow);b>0;b--)this.$lines.pop();h.firstRowf.lastRow&&this.$lines.push(this.$renderLinesFragment(h,f.lastRow+1,h.lastRow)),this.$highlightIndentGuide()},p.prototype.$renderLinesFragment=function(h,f,g){for(var v=[],b=f,D=this.session.getNextFoldLine(b),E=D?D.start.row:1/0;b>E&&(b=D.end.row+1,D=this.session.getNextFoldLine(b,D),E=D?D.start.row:1/0),!(b>g);){var w=this.$lines.createCell(b,h,this.session),y=w.element;this.dom.removeChildren(y),s.setStyle(y.style,"height",this.$lines.computeLineHeight(b,h,this.session)+"px"),s.setStyle(y.style,"top",this.$lines.computeLineTop(b,h,this.session)+"px"),this.$renderLine(y,b,b==E?D:!1),this.$useLineGroups()?y.className="ace_line_group":y.className="ace_line",v.push(w),b++}return v},p.prototype.update=function(h){this.$lines.moveContainer(h),this.config=h;for(var f=h.firstRow,g=h.lastRow,v=this.$lines;v.getLength();)v.pop();v.push(this.$renderLinesFragment(h,f,g))},p.prototype.$renderToken=function(h,f,g,v){for(var b=this,D=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069\u2060\u2061\u2062\u2063\u2064\u206A\u206B\u206B\u206C\u206D\u206E\u206F]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,E=this.dom.createFragment(this.element),w,y=0;w=D.exec(v);){var A=w[1],T=w[2],$=w[3],M=w[4],O=w[5];if(!(!b.showSpaces&&T)){var _=y!=w.index?v.slice(y,w.index):"";if(y=w.index+w[0].length,_&&E.appendChild(this.dom.createTextNode(_,this.element)),A){var k=b.session.getScreenTabSize(f+w.index),S=b.$tabStrings[k].cloneNode(!0);S.charCount=1,E.appendChild(S),f+=k-1}else if(T)if(b.showSpaces){var C=this.dom.createElement("span");C.className="ace_invisible ace_invisible_space",C.textContent=d.stringRepeat(b.SPACE_CHAR,T.length),E.appendChild(C)}else E.appendChild(this.dom.createTextNode(T,this.element));else if($){var C=this.dom.createElement("span");C.className="ace_invisible ace_invisible_space ace_invalid",C.textContent=d.stringRepeat(b.SPACE_CHAR,$.length),E.appendChild(C)}else if(M){f+=1;var C=this.dom.createElement("span");C.style.width=b.config.characterWidth*2+"px",C.className=b.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",C.textContent=b.showSpaces?b.SPACE_CHAR:M,E.appendChild(C)}else if(O){f+=1;var C=this.dom.createElement("span");C.style.width=b.config.characterWidth*2+"px",C.className="ace_cjk",C.textContent=O,E.appendChild(C)}}}if(E.appendChild(this.dom.createTextNode(y?v.slice(y):v,this.element)),a(g.type))h.appendChild(E);else{var L="ace_"+g.type.replace(/\./g," ace_"),C=this.dom.createElement("span");g.type=="fold"&&(C.style.width=g.value.length*this.config.characterWidth+"px",C.setAttribute("title",r("inline-fold.closed.title","Unfold code"))),C.className=L,C.appendChild(E),h.appendChild(C)}return f+v.length},p.prototype.renderIndentGuide=function(h,f,g){var v=f.search(this.$indentGuideRe);if(v<=0||v>=g)return f;if(f[0]==" "){v-=v%this.tabSize;for(var b=v/this.tabSize,D=0;DD[E].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}}if(!this.$highlightIndentGuideMarker.end&&h[f.row]!==""&&f.column===h[f.row].length){this.$highlightIndentGuideMarker.dir=1;for(var E=f.row+1;E0)v=h.element.childNodes[0];else return;var b=v.childNodes;if(b){var D=b[f-1];D&&D.classList&&D.classList.contains("ace_indent-guide")&&D.classList.add("ace_indent-guide-active")}}},p.prototype.$renderHighlightIndentGuide=function(){if(this.$lines){var h=this.$lines.cells;this.$clearActiveIndentGuide();var f=this.$highlightIndentGuideMarker.indentLevel;if(f!==0)if(this.$highlightIndentGuideMarker.dir===1)for(var g=0;g=this.$highlightIndentGuideMarker.start+1){if(v.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(v,f)}}else for(var g=h.length-1;g>=0;g--){var v=h[g];if(this.$highlightIndentGuideMarker.end&&v.row=D;){E=this.$renderToken(w,E,A,T.substring(0,D-v)),T=T.substring(D-v),v=D,w=this.$createLineElement(),h.appendChild(w);var $=this.dom.createTextNode(d.stringRepeat(" ",g.indent),this.element);$.charCount=0,w.appendChild($),b++,E=0,D=g[b]||Number.MAX_VALUE}T.length!=0&&(v+=T.length,E=this.$renderToken(w,E,A,T))}}g[g.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(w,E,null,"",!0)},p.prototype.$renderSimpleLine=function(h,f){for(var g=0,v=0;vthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(h,g,b,D);g=this.$renderToken(h,g,b,D)}}},p.prototype.$renderOverflowMessage=function(h,f,g,v,b){g&&this.$renderToken(h,f,g,v.slice(0,this.MAX_LINE_LENGTH-f));var D=this.dom.createElement("span");D.className="ace_inline_button ace_keyword ace_toggle_wrap",D.textContent=b?"":"",h.appendChild(D)},p.prototype.$renderLine=function(h,f,g){if(!g&&g!=!1&&(g=this.session.getFoldLine(f)),g)var v=this.$getFoldLineTokens(f,g);else var v=this.session.getTokens(f);var b=h;if(v.length){var D=this.session.getRowSplitData(f);if(D&&D.length){this.$renderWrappedLine(h,v,D);var b=h.lastChild}else{var b=h;this.$useLineGroups()&&(b=this.$createLineElement(),h.appendChild(b)),this.$renderSimpleLine(b,v)}}else this.$useLineGroups()&&(b=this.$createLineElement(),h.appendChild(b));if(this.showEOL&&b){g&&(f=g.end.row);var E=this.dom.createElement("span");E.className="ace_invisible ace_invisible_eol",E.textContent=f==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,b.appendChild(E)}},p.prototype.$getFoldLineTokens=function(h,f){var g=this.session,v=[];function b(E,w,y){for(var A=0,T=0;T+E[A].value.lengthy-w&&($=$.substring(0,y-w)),v.push({type:E[A].type,value:$}),T=w+$.length,A+=1}for(;Ty?v.push({type:E[A].type,value:$.substring(0,y-T)}):v.push(E[A]),T+=$.length,A+=1}}var D=g.getTokens(h);return f.walk(function(E,w,y,A,T){E!=null?v.push({type:"fold",value:E}):(T&&(D=g.getTokens(w)),D.length&&b(D,A,y))},f.end.row,this.session.getLine(f.end.row).length),v},p.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},p})();c.prototype.EOF_CHAR="¶",c.prototype.EOL_CHAR_LF="¬",c.prototype.EOL_CHAR_CRLF="¤",c.prototype.EOL_CHAR=c.prototype.EOL_CHAR_LF,c.prototype.TAB_CHAR="—",c.prototype.SPACE_CHAR="·",c.prototype.$padding=0,c.prototype.MAX_LINE_LENGTH=1e4,c.prototype.showInvisibles=!1,c.prototype.showSpaces=!1,c.prototype.showTabs=!1,c.prototype.showEOL=!1,c.prototype.displayIndentGuides=!0,c.prototype.$highlightIndentGuides=!0,c.prototype.$tabStrings=[],c.prototype.destroy={},c.prototype.onChangeTabSize=c.prototype.$computeTabString,i.implement(c.prototype,l),n.Text=c}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(t,n,u){var i=t("../lib/dom"),s=(function(){function d(o){this.element=i.createElement("div"),this.element.className="ace_layer ace_cursor-layer",o.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),i.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return d.prototype.$updateOpacity=function(o){for(var l=this.cursors,r=l.length;r--;)i.setStyle(l[r].style,"opacity",o?"":"0")},d.prototype.$startCssAnimation=function(){for(var o=this.cursors,l=o.length;l--;)o[l].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&i.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},d.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,i.removeCssClass(this.element,"ace_animate-blinking")},d.prototype.setPadding=function(o){this.$padding=o},d.prototype.setSession=function(o){this.session=o},d.prototype.setBlinking=function(o){o!=this.isBlinking&&(this.isBlinking=o,this.restartTimer())},d.prototype.setBlinkInterval=function(o){o!=this.blinkInterval&&(this.blinkInterval=o,this.restartTimer())},d.prototype.setSmoothBlinking=function(o){o!=this.smoothBlinking&&(this.smoothBlinking=o,i.setCssClass(this.element,"ace_smooth-blinking",o),this.$updateCursors(!0),this.restartTimer())},d.prototype.addCursor=function(){var o=i.createElement("div");return o.className="ace_cursor",this.element.appendChild(o),this.cursors.push(o),o},d.prototype.removeCursor=function(){if(this.cursors.length>1){var o=this.cursors.pop();return o.parentNode.removeChild(o),o}},d.prototype.hideCursor=function(){this.isVisible=!1,i.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},d.prototype.showCursor=function(){this.isVisible=!0,i.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},d.prototype.restartTimer=function(){var o=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,i.removeCssClass(this.element,"ace_smooth-blinking")),o(!0),!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&i.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),i.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var l=function(){this.timeoutId=setTimeout(function(){o(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){o(!0),l()},this.blinkInterval),l()}},d.prototype.getPixelPosition=function(o,l){if(!this.config||!this.session)return{left:0,top:0};o||(o=this.session.selection.getCursor());var r=this.session.documentToScreenPosition(o),a=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,o.row)?this.session.$bidiHandler.getPosLeft(r.column):r.column*this.config.characterWidth),c=(r.row-(l?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:a,top:c}},d.prototype.isCursorInView=function(o,l){return o.top>=0&&o.topo.height+o.offset||p.top<0)&&r>1)){var h=this.cursors[a++]||this.addCursor(),f=h.style;this.drawCursor?this.drawCursor(h,p,o,l[r],this.session):this.isCursorInView(p,o)?(i.setStyle(f,"display","block"),i.translate(h,p.left,p.top),i.setStyle(f,"width",Math.round(o.characterWidth)+"px"),i.setStyle(f,"height",o.lineHeight+"px")):i.setStyle(f,"display","none")}}for(;this.cursors.length>a;)this.removeCursor();var g=this.session.getOverwrite();this.$setOverwrite(g),this.$pixelPos=p,this.restartTimer()},d.prototype.$setOverwrite=function(o){o!=this.overwrite&&(this.overwrite=o,o?i.addCssClass(this.element,"ace_overwrite-cursors"):i.removeCssClass(this.element,"ace_overwrite-cursors"))},d.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},d})();s.prototype.$padding=0,s.prototype.drawCursor=null,n.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(t,n,u){var i=this&&this.__extends||(function(){var h=function(f,g){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,b){v.__proto__=b}||function(v,b){for(var D in b)Object.prototype.hasOwnProperty.call(b,D)&&(v[D]=b[D])},h(f,g)};return function(f,g){if(typeof g!="function"&&g!==null)throw new TypeError("Class extends value "+String(g)+" is not a constructor or null");h(f,g);function v(){this.constructor=f}f.prototype=g===null?Object.create(g):(v.prototype=g.prototype,new v)}})(),s=t("./lib/oop"),d=t("./lib/dom"),o=t("./lib/event"),l=t("./lib/event_emitter").EventEmitter,r=32768,a=(function(){function h(f,g){this.element=d.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+g,this.inner=d.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent=" ",this.element.appendChild(this.inner),f.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)}return h.prototype.setVisible=function(f){this.element.style.display=f?"":"none",this.isVisible=f,this.coeff=1},h})();s.implement(a.prototype,l);var c=(function(h){i(f,h);function f(g,v){var b=h.call(this,g,"-v")||this;return b.scrollTop=0,b.scrollHeight=0,v.$scrollbarWidth=b.width=d.scrollbarWidth(g.ownerDocument),b.inner.style.width=b.element.style.width=(b.width||15)+5+"px",b.$minWidth=0,b}return f.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,this.coeff!=1){var g=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-g)/(this.coeff-g)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},f.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},f.prototype.setHeight=function(g){this.element.style.height=g+"px"},f.prototype.setScrollHeight=function(g){this.scrollHeight=g,g>r?(this.coeff=r/g,g=r):this.coeff!=1&&(this.coeff=1),this.inner.style.height=g+"px"},f.prototype.setScrollTop=function(g){this.scrollTop!=g&&(this.skipEvent=!0,this.scrollTop=g,this.element.scrollTop=g*this.coeff)},f})(a);c.prototype.setInnerHeight=c.prototype.setScrollHeight;var p=(function(h){i(f,h);function f(g,v){var b=h.call(this,g,"-h")||this;return b.scrollLeft=0,b.height=v.$scrollbarWidth,b.inner.style.height=b.element.style.height=(b.height||15)+5+"px",b}return f.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},f.prototype.getHeight=function(){return this.isVisible?this.height:0},f.prototype.setWidth=function(g){this.element.style.width=g+"px"},f.prototype.setInnerWidth=function(g){this.inner.style.width=g+"px"},f.prototype.setScrollWidth=function(g){this.inner.style.width=g+"px"},f.prototype.setScrollLeft=function(g){this.scrollLeft!=g&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=g)},f})(a);n.ScrollBar=c,n.ScrollBarV=c,n.ScrollBarH=p,n.VScrollBar=c,n.HScrollBar=p}),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(t,n,u){var i=this&&this.__extends||(function(){var p=function(h,f){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,v){g.__proto__=v}||function(g,v){for(var b in v)Object.prototype.hasOwnProperty.call(v,b)&&(g[b]=v[b])},p(h,f)};return function(h,f){if(typeof f!="function"&&f!==null)throw new TypeError("Class extends value "+String(f)+" is not a constructor or null");p(h,f);function g(){this.constructor=h}h.prototype=f===null?Object.create(f):(g.prototype=f.prototype,new g)}})(),s=t("./lib/oop"),d=t("./lib/dom"),o=t("./lib/event"),l=t("./lib/event_emitter").EventEmitter;d.importCssString(`.ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{ +`),this.moveCursorToPosition(C)},S.prototype.setGhostText=function(C,L){this.renderer.setGhostText(C,L)},S.prototype.removeGhostText=function(){this.renderer.removeGhostText()},S.prototype.transposeLetters=function(){if(this.selection.isEmpty()){var C=this.getCursorPosition(),L=C.column;if(L!==0){var I=this.session.getLine(C.row),F,R;Lz.toLowerCase()?1:0});for(var R=new g(0,0,0,0),F=C.first;F<=C.last;F++){var B=L.getLine(F);R.start.row=F,R.end.row=F,R.end.column=B.length,L.replace(R,I[F-C.first])}},S.prototype.toggleCommentLines=function(){var C=this.session.getState(this.getCursorPosition().row),L=this.$getSelectedRows();this.session.getMode().toggleCommentLines(C,this.session,L.first,L.last)},S.prototype.toggleBlockComment=function(){var C=this.getCursorPosition(),L=this.session.getState(C.row),I=this.getSelectionRange();this.session.getMode().toggleBlockComment(L,this.session,I,C)},S.prototype.getNumberAt=function(C,L){var I=/[\-]?[0-9]+(?:\.[0-9]+)?/g;I.lastIndex=0;for(var F=this.session.getLine(C);I.lastIndex=L){var B={value:R[0],start:R.index,end:R.index+R[0].length};return B}}return null},S.prototype.modifyNumber=function(C){var L=this.selection.getCursor().row,I=this.selection.getCursor().column,F=new g(L,I-1,L,I),R=this.session.getTextRange(F);if(!isNaN(parseFloat(R))&&isFinite(R)){var B=this.getNumberAt(L,I);if(B){var N=B.value.indexOf(".")>=0?B.start+B.value.indexOf(".")+1:B.end,z=B.start+B.value.length-N,W=parseFloat(B.value);W*=Math.pow(10,z),N!==B.end&&I=N&&B<=z&&(I=ue,W.selection.clearSelection(),W.moveCursorTo(C,N+F),W.selection.selectTo(C,z+F)),N=z});for(var j=this.$toggleWordPairs,U,K=0;K=z&&N<=W&&J.match(/((?:https?|ftp):\/\/[\S]+)/)){j=J.replace(/[\s:.,'";}\]]+$/,"");break}z=W}}catch(Y){I={error:Y}}finally{try{K&&!K.done&&(F=U.return)&&F.call(U)}finally{if(I)throw I.error}}return j},S.prototype.openLink=function(){var C=this.selection.getCursor(),L=this.findLinkAt(C.row,C.column);return L&&window.open(L,"_blank"),L!=null},S.prototype.removeLines=function(){var C=this.$getSelectedRows();this.session.removeFullLines(C.first,C.last),this.clearSelection()},S.prototype.duplicateSelection=function(){var C=this.selection,L=this.session,I=C.getRange(),F=C.isBackwards();if(I.isEmpty()){var R=I.start.row;L.duplicateLines(R,R)}else{var B=F?I.start:I.end,N=L.insert(B,L.getTextRange(I));I.start=B,I.end=N,C.setSelectionRange(I,F)}},S.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},S.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},S.prototype.moveText=function(C,L,I){return this.session.moveText(C,L,I)},S.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},S.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},S.prototype.$moveLines=function(C,L){var I,F,R=this.selection;if(!R.inMultiSelectMode||this.inVirtualSelectionMode){var B=R.toOrientedRange();I=this.$getSelectedRows(B),F=this.session.$moveLines(I.first,I.last,L?0:C),L&&C==-1&&(F=0),B.moveBy(F,0),R.fromOrientedRange(B)}else{var N=R.rangeList.ranges;R.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var z=0,W=0,j=N.length,U=0;UY+1)break;Y=X.last}for(U--,z=this.session.$moveLines(J,Y,L?0:C),L&&C==-1&&(K=U+1);K<=U;)N[K].moveBy(z,0),K++;L||(z=0),W+=z}R.fromOrientedRange(R.ranges[0]),R.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},S.prototype.$getSelectedRows=function(C){return C=(C||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(C.start.row),last:this.session.getRowFoldEnd(C.end.row)}},S.prototype.onCompositionStart=function(C){this.renderer.showComposition(C)},S.prototype.onCompositionUpdate=function(C){this.renderer.setCompositionText(C)},S.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},S.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},S.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},S.prototype.isRowVisible=function(C){return C>=this.getFirstVisibleRow()&&C<=this.getLastVisibleRow()},S.prototype.isRowFullyVisible=function(C){return C>=this.renderer.getFirstFullyVisibleRow()&&C<=this.renderer.getLastFullyVisibleRow()},S.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},S.prototype.$moveByPage=function(C,L){var I=this.renderer,F=this.renderer.layerConfig,R=C*Math.floor(F.height/F.lineHeight);L===!0?this.selection.$moveSelection(function(){this.moveCursorBy(R,0)}):L===!1&&(this.selection.moveCursorBy(R,0),this.selection.clearSelection());var B=I.scrollTop;I.scrollBy(0,R*F.lineHeight),L!=null&&I.scrollCursorIntoView(null,.5),I.animateScrolling(B)},S.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},S.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},S.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},S.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},S.prototype.scrollPageDown=function(){this.$moveByPage(1)},S.prototype.scrollPageUp=function(){this.$moveByPage(-1)},S.prototype.scrollToRow=function(C){this.renderer.scrollToRow(C)},S.prototype.scrollToLine=function(C,L,I,F){this.renderer.scrollToLine(C,L,I,F)},S.prototype.centerSelection=function(){var C=this.getSelectionRange(),L={row:Math.floor(C.start.row+(C.end.row-C.start.row)/2),column:Math.floor(C.start.column+(C.end.column-C.start.column)/2)};this.renderer.alignCursor(L,.5)},S.prototype.getCursorPosition=function(){return this.selection.getCursor()},S.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},S.prototype.getSelectionRange=function(){return this.selection.getRange()},S.prototype.selectAll=function(){this.selection.selectAll()},S.prototype.clearSelection=function(){this.selection.clearSelection()},S.prototype.moveCursorTo=function(C,L){this.selection.moveCursorTo(C,L)},S.prototype.moveCursorToPosition=function(C){this.selection.moveCursorToPosition(C)},S.prototype.jumpToMatching=function(C,L){var I=this.getCursorPosition(),F=new w(this.session,I.row,I.column),R=F.getCurrentToken(),B=0;R&&R.type.indexOf("tag-name")!==-1&&(R=F.stepBackward());var N=R||F.stepForward();if(N){var z,W=!1,j={},U=I.column-N.start,K,J={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(N.value.match(/[{}()\[\]]/g)){for(;U1?j[N.value]++:R.value==="=0;--B)this.$tryReplace(I[B],C)&&F++;return this.selection.setSelectionRange(R),F},S.prototype.$tryReplace=function(C,L){var I=this.session.getTextRange(C);return L=this.$search.replace(I,L),L!==null?(C.end=this.session.replace(C,L),C):null},S.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},S.prototype.find=function(C,L,I){L||(L={}),typeof C=="string"||C instanceof RegExp?L.needle=C:typeof C=="object"&&s.mixin(L,C);var F=this.selection.getRange();L.needle==null&&(C=this.session.getTextRange(F)||this.$search.$options.needle,C||(F=this.session.getWordRange(F.start.row,F.start.column),C=this.session.getTextRange(F)),this.$search.set({needle:C})),this.$search.set(L),L.start||this.$search.set({start:F});var R=this.$search.find(this.session);if(L.preventScroll)return R;if(R)return this.revealRange(R,I),R;L.backwards?F.start=F.end:F.end=F.start,this.selection.setRange(F)},S.prototype.findNext=function(C,L){this.find({skipCurrent:!0,backwards:!1},C,L)},S.prototype.findPrevious=function(C,L){this.find(C,{skipCurrent:!0,backwards:!0},L)},S.prototype.revealRange=function(C,L){this.session.unfold(C),this.selection.setSelectionRange(C);var I=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(C.start,C.end,.5),L!==!1&&this.renderer.animateScrolling(I)},S.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},S.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},S.prototype.destroy=function(){this.destroyed=!0,this.$toDestroy&&(this.$toDestroy.forEach(function(C){C.destroy()}),this.$toDestroy=[]),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},S.prototype.setAutoScrollEditorIntoView=function(C){if(C){var L,I=this,F=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var R=this.$scrollAnchor;R.style.cssText="position:absolute",this.container.insertBefore(R,this.container.firstChild);var B=this.on("changeSelection",function(){F=!0}),N=this.renderer.on("beforeRender",function(){F&&(L=I.renderer.container.getBoundingClientRect())}),z=this.renderer.on("afterRender",function(){if(F&&L&&(I.isFocused()||I.searchBox&&I.searchBox.isFocused())){var W=I.renderer,j=W.$cursorLayer.$pixelPos,U=W.layerConfig,K=j.top-U.offset;j.top>=0&&K+L.top<0?F=!0:j.topwindow.innerHeight?F=!1:F=null,F!=null&&(R.style.top=K+"px",R.style.left=j.left+"px",R.style.height=U.lineHeight+"px",R.scrollIntoView(F)),F=L=null}});this.setAutoScrollEditorIntoView=function(W){W||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",B),this.renderer.off("afterRender",z),this.renderer.off("beforeRender",N))}}},S.prototype.$resetCursorStyle=function(){var C=this.$cursorStyle||"ace",L=this.renderer.$cursorLayer;L&&(L.setSmoothBlinking(/smooth/.test(C)),L.isBlinking=!this.$readOnly&&C!="wide",d.setCssClass(L.element,"ace_slim-cursors",/slim/.test(C)))},S.prototype.prompt=function(C,L,I){var F=this;E.loadModule("ace/ext/prompt",function(R){R.prompt(F,C,L,I)})},S})();_.$uid=0,_.prototype.curOp=null,_.prototype.prevOp={},_.prototype.$mergeableCommands=["backspace","del","insertstring"],_.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],s.implement(_.prototype,v),E.defineOptions(_.prototype,"editor",{selectionStyle:{set:function(S){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:S})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(S){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(S){var C=this;if(this.textInput.setReadOnly(S),!this.destroyed){this.$resetCursorStyle(),this.$readOnlyCallback||(this.$readOnlyCallback=function(I){var F=!1;if(I&&I.type=="keydown"){if(I&&I.key&&!I.ctrlKey&&!I.metaKey&&(I.key==" "&&I.preventDefault(),F=I.key.length==1),!F)return}else I&&I.type!=="exec"&&(F=!0);if(F){C.hoverTooltip||(C.hoverTooltip=new O);var R=d.createElement("div");R.textContent=A("editor.tooltip.disable-editing","Editing is disabled"),C.hoverTooltip.isOpen||C.hoverTooltip.showForRange(C,C.getSelectionRange(),R)}else C.hoverTooltip&&C.hoverTooltip.isOpen&&C.hoverTooltip.hide()});var L=this.textInput.getElement();S?(M.addListener(L,"keydown",this.$readOnlyCallback,this),this.commands.on("exec",this.$readOnlyCallback),this.commands.on("commandUnavailable",this.$readOnlyCallback)):(M.removeListener(L,"keydown",this.$readOnlyCallback),this.commands.off("exec",this.$readOnlyCallback),this.commands.off("commandUnavailable",this.$readOnlyCallback),this.hoverTooltip&&(this.hoverTooltip.destroy(),this.hoverTooltip=null))}},initialValue:!1},copyWithEmptySelection:{set:function(S){this.textInput.setCopyWithEmptySelection(S)},initialValue:!1},cursorStyle:{set:function(S){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(S){this.setAutoScrollEditorIntoView(S)}},keyboardHandler:{set:function(S){this.setKeyboardHandler(S)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(S){this.session.setValue(S)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(S){this.setSession(S)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(S){this.renderer.$gutterLayer.setShowLineNumbers(S),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),S&&this.$relativeLineNumbers?k.attach(this):k.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(S){this.$showLineNumbers&&S?k.attach(this):k.detach(this)}},placeholder:{set:function(S){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var C=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(C&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),d.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!C&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),d.addCssClass(this.container,"ace_hasPlaceholder");var L=d.createElement("div");L.className="ace_placeholder",L.textContent=this.$placeholder||"",this.renderer.placeholderNode=L,this.renderer.content.appendChild(this.renderer.placeholderNode)}else!C&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"")}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(S){var C={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(F){F.blur(),F.renderer.scroller.focus()},readOnly:!0},L=function(F){if(F.target==this.renderer.scroller&&F.keyCode===x.enter){F.preventDefault();var R=this.getCursorPosition().row;this.isRowVisible(R)||this.scrollToLine(R,!0,!0),this.focus()}},I;S?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.textInput.setNumberOfExtraLines(l.isWin?3:0),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",A("editor.scroller.aria-roledescription","editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",A("editor.scroller.aria-label","Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",L.bind(this)),this.commands.addCommand(C),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",A("editor.gutter.aria-roledescription","editor gutter")),this.renderer.$gutter.setAttribute("aria-label",A("editor.gutter.aria-label","Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),I||(I=new y(this)),I.addListener(),this.textInput.setAriaOptions({setLabel:!0})):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.textInput.setNumberOfExtraLines(0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",L.bind(this)),this.commands.removeCommand(C),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),I&&I.removeListener())},initialValue:!1},textInputAriaLabel:{set:function(S){this.$textInputAriaLabel=S},initialValue:""},enableMobileMenu:{set:function(S){this.$enableMobileMenu=S},initialValue:!0},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var k={getText:function(S,C){return(Math.abs(S.selection.lead.row-C)||C+1+(C<9?"·":""))+""},getWidth:function(S,C,L){return Math.max(C.toString().length,(L.lastRow+1).toString().length,2)*L.characterWidth},update:function(S,C){C.renderer.$loop.schedule(C.renderer.CHANGE_GUTTER)},attach:function(S){S.renderer.$gutterLayer.$renderer=this,S.on("changeSelection",this.update),this.update(null,S)},detach:function(S){S.renderer.$gutterLayer.$renderer==this&&(S.renderer.$gutterLayer.$renderer=null),S.off("changeSelection",this.update),this.update(null,S)}};n.Editor=_}),ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(t,n,h){var i=t("../lib/dom"),s=(function(){function d(o,l){this.element=o,this.canvasHeight=l||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0}return d.prototype.moveContainer=function(o){i.translate(this.element,0,-(o.firstRowScreen*o.lineHeight%this.canvasHeight)-o.offset*this.$offsetCoefficient)},d.prototype.pageChanged=function(o,l){return Math.floor(o.firstRowScreen*o.lineHeight/this.canvasHeight)!==Math.floor(l.firstRowScreen*l.lineHeight/this.canvasHeight)},d.prototype.computeLineTop=function(o,l,r){var a=l.firstRowScreen*l.lineHeight,c=Math.floor(a/this.canvasHeight),p=r.documentToScreenRow(o,0)*l.lineHeight;return p-c*this.canvasHeight},d.prototype.computeLineHeight=function(o,l,r){return l.lineHeight*r.getRowLineCount(o)},d.prototype.getLength=function(){return this.cells.length},d.prototype.get=function(o){return this.cells[o]},d.prototype.shift=function(){this.$cacheCell(this.cells.shift())},d.prototype.pop=function(){this.$cacheCell(this.cells.pop())},d.prototype.push=function(o){if(Array.isArray(o)){this.cells.push.apply(this.cells,o);for(var l=i.createFragment(this.element),r=0;rD&&(y=b.end.row+1,b=f.getNextFoldLine(y,b),D=b?b.start.row:1/0),y>v){for(;this.$lines.getLength()>w+1;)this.$lines.pop();break}E=this.$lines.get(++w),E?E.row=y:(E=this.$lines.createCell(y,u,this.session,c),this.$lines.push(E)),this.$renderCell(E,u,b,y),y++}this._signal("afterRender"),this.$updateGutterWidth(u),this.$showCursorMarker&&this.$highlightGutterLine&&this.$updateCursorMarker()},p.prototype.$updateGutterWidth=function(u){var f=this.session,g=f.gutterRenderer||this.$renderer,v=f.$firstLineNumber,b=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||f.$useWrapMode)&&(b=f.getLength()+v-1);var D=g?g.getWidth(f,b,u):b.toString().length*u.characterWidth,E=this.$padding||this.$computePadding();D+=E.left+E.right,D!==this.gutterWidth&&!isNaN(D)&&(this.gutterWidth=D,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",D))},p.prototype.$updateCursorRow=function(){if(this.$highlightGutterLine){var u=this.session.selection.getCursor();this.$cursorRow!==u.row&&(this.$cursorRow=u.row)}},p.prototype.updateLineHighlight=function(){if(this.$showCursorMarker&&this.$updateCursorMarker(),!!this.$highlightGutterLine){var u=this.session.selection.cursor.row;if(this.$cursorRow=u,!(this.$cursorCell&&this.$cursorCell.row==u)){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var f=this.$lines.cells;this.$cursorCell=null;for(var g=0;g=this.$cursorRow){if(v.row>this.$cursorRow){var b=this.session.getFoldLine(this.$cursorRow);if(g>0&&b&&b.start.row==f[g-1].row)v=f[g-1];else break}v.element.className="ace_gutter-active-line "+v.element.className,this.$cursorCell=v;break}}}}},p.prototype.$updateCursorMarker=function(){if(this.session){var u=this.session;this.$highlightElement||(this.$highlightElement=i.createElement("div"),this.$highlightElement.className="ace_gutter-cursor",this.$highlightElement.style.pointerEvents="none",this.element.appendChild(this.$highlightElement));var f=u.selection.cursor,g=this.config,v=this.$lines,b=g.firstRowScreen*g.lineHeight,D=Math.floor(b/v.canvasHeight),E=u.documentToScreenRow(f)*g.lineHeight,w=E-D*v.canvasHeight;i.setStyle(this.$highlightElement.style,"height",g.lineHeight+"px"),i.setStyle(this.$highlightElement.style,"top",w+"px")}},p.prototype.scrollLines=function(u){var f=this.config;if(this.config=u,this.$updateCursorRow(),this.$lines.pageChanged(f,u))return this.update(u);this.$lines.moveContainer(u);var g=Math.min(u.lastRow+u.gutterOffset,this.session.getLength()-1),v=this.oldLastRow;if(this.oldLastRow=g,!f||v0;b--)this.$lines.shift();if(v>g)for(var b=this.session.getFoldedRowCount(g+1,v);b>0;b--)this.$lines.pop();u.firstRowv&&this.$lines.push(this.$renderLines(u,v+1,g)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(u)},p.prototype.$renderLines=function(u,f,g){for(var v=[],b=f,D=this.session.getNextFoldLine(b),E=D?D.start.row:1/0;b>E&&(b=D.end.row+1,D=this.session.getNextFoldLine(b,D),E=D?D.start.row:1/0),!(b>g);){var w=this.$lines.createCell(b,u,this.session,c);this.$renderCell(w,u,D,b),v.push(w),b++}return v},p.prototype.$renderCell=function(u,f,g,v){var b=u.element,D=this.session,E=b.childNodes[0],w=b.childNodes[1],y=b.childNodes[2],A=b.childNodes[3],T=y.firstChild,x=D.$firstLineNumber,M=D.$breakpoints,O=D.$decorations,_=D.gutterRenderer||this.$renderer,k=this.$showFoldWidgets&&D.foldWidgets,S=g?g.start.row:Number.MAX_VALUE,C=f.lineHeight+"px",L=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",I=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",F=(_?_.getText(D,v):v+x).toString();if(this.$highlightGutterLine&&(v==this.$cursorRow||g&&v=S&&this.$cursorRow<=g.end.row)&&(L+="ace_gutter-active-line ",this.$cursorCell!=u&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=u)),M[v]&&(L+=M[v]),O[v]&&(L+=O[v]),this.$annotations[v]&&v!==S&&(L+=this.$annotations[v].className),k){var R=k[v];R==null&&(R=k[v]=D.getFoldWidget(v))}if(R){var B="ace_fold-widget ace_"+R,N=R=="start"&&v==S&&vf[v].row)){for(;g<=v;){var b=Math.floor((g+v)/2),D=f[b];if(D.row>u)v=b-1;else if(D.rowg.right-f.right)return"foldWidgets"},p})();a.prototype.$fixedWidth=!1,a.prototype.$highlightGutterLine=!0,a.prototype.$renderer=void 0,a.prototype.$showLineNumbers=!0,a.prototype.$showFoldWidgets=!0,s.implement(a.prototype,o);function c(p){var u=document.createTextNode("");p.appendChild(u);var f=i.createElement("span");p.appendChild(f);var g=i.createElement("span");p.appendChild(g);var v=i.createElement("span");return g.appendChild(v),p}n.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(t,n,h){var i=t("../range").Range,s=t("../lib/dom"),d=(function(){function l(r){this.element=s.createElement("div"),this.element.className="ace_layer ace_marker-layer",r.appendChild(this.element)}return l.prototype.setPadding=function(r){this.$padding=r},l.prototype.setSession=function(r){this.session=r},l.prototype.setMarkers=function(r){this.markers=r},l.prototype.elt=function(r,a){var c=this.i!=-1&&this.element.childNodes[this.i];c?this.i++:(c=document.createElement("div"),this.element.appendChild(c),this.i=-1),c.style.cssText=a,c.className=r},l.prototype.update=function(r){if(r){this.config=r,this.i=0;var a;for(var c in this.markers){var p=this.markers[c];if(!p.range){p.update(a,this,this.session,r);continue}var u=p.range.clipRows(r.firstRow,r.lastRow);if(!u.isEmpty())if(u=u.toScreenRange(this.session),p.renderer){var f=this.$getTop(u.start.row,r),g=this.$padding+u.start.column*r.characterWidth;p.renderer(a,u,g,f,r)}else p.type=="fullLine"?this.drawFullLineMarker(a,u,p.clazz,r):p.type=="screenLine"?this.drawScreenLineMarker(a,u,p.clazz,r):u.isMultiLine()?p.type=="text"?this.drawTextMarker(a,u,p.clazz,r):this.drawMultiLineMarker(a,u,p.clazz,r):this.drawSingleLineMarker(a,u,p.clazz+" ace_start ace_br15",r)}if(this.i!=-1)for(;this.iw,b==v),p,b==v?0:1,u)},l.prototype.drawMultiLineMarker=function(r,a,c,p,u){var f=this.$padding,g=p.lineHeight,v=this.$getTop(a.start.row,p),b=f+a.start.column*p.characterWidth;if(u=u||"",this.session.$bidiHandler.isBidiRow(a.start.row)){var D=a.clone();D.end.row=D.start.row,D.end.column=this.session.getLine(D.start.row).length,this.drawBidiSingleLineMarker(r,D,c+" ace_br1 ace_start",p,null,u)}else this.elt(c+" ace_br1 ace_start","height:"+g+"px;right:"+f+"px;top:"+v+"px;left:"+b+"px;"+(u||""));if(this.session.$bidiHandler.isBidiRow(a.end.row)){var D=a.clone();D.start.row=D.end.row,D.start.column=0,this.drawBidiSingleLineMarker(r,D,c+" ace_br12",p,null,u)}else{v=this.$getTop(a.end.row,p);var E=a.end.column*p.characterWidth;this.elt(c+" ace_br12","height:"+g+"px;width:"+E+"px;top:"+v+"px;left:"+f+"px;"+(u||""))}if(g=(a.end.row-a.start.row-1)*p.lineHeight,!(g<=0)){v=this.$getTop(a.start.row+1,p);var w=(a.start.column?1:0)|(a.end.column?0:8);this.elt(c+(w?" ace_br"+w:""),"height:"+g+"px;right:"+f+"px;top:"+v+"px;left:"+f+"px;"+(u||""))}},l.prototype.drawSingleLineMarker=function(r,a,c,p,u,f){if(this.session.$bidiHandler.isBidiRow(a.start.row))return this.drawBidiSingleLineMarker(r,a,c,p,u,f);var g=p.lineHeight,v=(a.end.column+(u||0)-a.start.column)*p.characterWidth,b=this.$getTop(a.start.row,p),D=this.$padding+a.start.column*p.characterWidth;this.elt(c,"height:"+g+"px;width:"+v+"px;top:"+b+"px;left:"+D+"px;"+(f||""))},l.prototype.drawBidiSingleLineMarker=function(r,a,c,p,u,f){var g=p.lineHeight,v=this.$getTop(a.start.row,p),b=this.$padding,D=this.session.$bidiHandler.getSelections(a.start.column,a.end.column);D.forEach(function(E){this.elt(c,"height:"+g+"px;width:"+(E.width+(u||0))+"px;top:"+v+"px;left:"+(b+E.left)+"px;"+(f||""))},this)},l.prototype.drawFullLineMarker=function(r,a,c,p,u){var f=this.$getTop(a.start.row,p),g=p.lineHeight;a.start.row!=a.end.row&&(g+=this.$getTop(a.end.row,p)-f),this.elt(c,"height:"+g+"px;top:"+f+"px;left:0;right:0;"+(u||""))},l.prototype.drawScreenLineMarker=function(r,a,c,p,u){var f=this.$getTop(a.start.row,p),g=p.lineHeight;this.elt(c,"height:"+g+"px;top:"+f+"px;left:0;right:0;"+(u||""))},l})();d.prototype.$padding=0;function o(l,r,a,c){return(l?1:0)|(r?2:0)|(a?4:0)|(c?8:0)}n.Marker=d}),ace.define("ace/layer/text_util",["require","exports","module"],function(t,n,h){var i=new Set(["text","rparen","lparen"]);n.isTextToken=function(s){return i.has(s)}}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],function(t,n,h){var i=t("../lib/oop"),s=t("../lib/dom"),d=t("../lib/lang"),o=t("./lines").Lines,l=t("../lib/event_emitter").EventEmitter,r=t("../config").nls,a=t("./text_util").isTextToken,c=(function(){function p(u){this.dom=s,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",u.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)}return p.prototype.$updateEolChar=function(){var u=this.session.doc,f=u.getNewLineCharacter()==` +`&&u.getNewLineMode()!="windows",g=f?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=g)return this.EOL_CHAR=g,!0},p.prototype.setPadding=function(u){this.$padding=u,this.element.style.margin="0 "+u+"px"},p.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},p.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},p.prototype.$setFontMetrics=function(u){this.$fontMetrics=u,this.$fontMetrics.on("changeCharacterSize",function(f){this._signal("changeCharacterSize",f)}.bind(this)),this.$pollSizeChanges()},p.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},p.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},p.prototype.setSession=function(u){this.session=u,u&&this.$computeTabString()},p.prototype.setShowInvisibles=function(u){return this.showInvisibles==u?!1:(this.showInvisibles=u,typeof u=="string"?(this.showSpaces=/tab/i.test(u),this.showTabs=/space/i.test(u),this.showEOL=/eol/i.test(u)):this.showSpaces=this.showTabs=this.showEOL=u,this.$computeTabString(),!0)},p.prototype.setDisplayIndentGuides=function(u){return this.displayIndentGuides==u?!1:(this.displayIndentGuides=u,this.$computeTabString(),!0)},p.prototype.setHighlightIndentGuides=function(u){return this.$highlightIndentGuides===u?!1:(this.$highlightIndentGuides=u,u)},p.prototype.$computeTabString=function(){var u=this.session.getTabSize();this.tabSize=u;for(var f=this.$tabStrings=[0],g=1;gT&&(y=A.end.row+1,A=this.session.getNextFoldLine(y,A),T=A?A.start.row:1/0),!(y>b);){var x=D[E++];if(x){this.dom.removeChildren(x),this.$renderLine(x,y,y==T?A:!1),w&&(x.style.top=this.$lines.computeLineTop(y,u,this.session)+"px");var M=u.lineHeight*this.session.getRowLength(y)+"px";x.style.height!=M&&(w=!0,x.style.height=M)}y++}if(w)for(;E0;b--)this.$lines.shift();if(f.lastRow>u.lastRow)for(var b=this.session.getFoldedRowCount(u.lastRow+1,f.lastRow);b>0;b--)this.$lines.pop();u.firstRowf.lastRow&&this.$lines.push(this.$renderLinesFragment(u,f.lastRow+1,u.lastRow)),this.$highlightIndentGuide()},p.prototype.$renderLinesFragment=function(u,f,g){for(var v=[],b=f,D=this.session.getNextFoldLine(b),E=D?D.start.row:1/0;b>E&&(b=D.end.row+1,D=this.session.getNextFoldLine(b,D),E=D?D.start.row:1/0),!(b>g);){var w=this.$lines.createCell(b,u,this.session),y=w.element;this.dom.removeChildren(y),s.setStyle(y.style,"height",this.$lines.computeLineHeight(b,u,this.session)+"px"),s.setStyle(y.style,"top",this.$lines.computeLineTop(b,u,this.session)+"px"),this.$renderLine(y,b,b==E?D:!1),this.$useLineGroups()?y.className="ace_line_group":y.className="ace_line",v.push(w),b++}return v},p.prototype.update=function(u){this.$lines.moveContainer(u),this.config=u;for(var f=u.firstRow,g=u.lastRow,v=this.$lines;v.getLength();)v.pop();v.push(this.$renderLinesFragment(u,f,g))},p.prototype.$renderToken=function(u,f,g,v){for(var b=this,D=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069\u2060\u2061\u2062\u2063\u2064\u206A\u206B\u206B\u206C\u206D\u206E\u206F]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,E=this.dom.createFragment(this.element),w,y=0;w=D.exec(v);){var A=w[1],T=w[2],x=w[3],M=w[4],O=w[5];if(!(!b.showSpaces&&T)){var _=y!=w.index?v.slice(y,w.index):"";if(y=w.index+w[0].length,_&&E.appendChild(this.dom.createTextNode(_,this.element)),A){var k=b.session.getScreenTabSize(f+w.index),S=b.$tabStrings[k].cloneNode(!0);S.charCount=1,E.appendChild(S),f+=k-1}else if(T)if(b.showSpaces){var C=this.dom.createElement("span");C.className="ace_invisible ace_invisible_space",C.textContent=d.stringRepeat(b.SPACE_CHAR,T.length),E.appendChild(C)}else E.appendChild(this.dom.createTextNode(T,this.element));else if(x){var C=this.dom.createElement("span");C.className="ace_invisible ace_invisible_space ace_invalid",C.textContent=d.stringRepeat(b.SPACE_CHAR,x.length),E.appendChild(C)}else if(M){f+=1;var C=this.dom.createElement("span");C.style.width=b.config.characterWidth*2+"px",C.className=b.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",C.textContent=b.showSpaces?b.SPACE_CHAR:M,E.appendChild(C)}else if(O){f+=1;var C=this.dom.createElement("span");C.style.width=b.config.characterWidth*2+"px",C.className="ace_cjk",C.textContent=O,E.appendChild(C)}}}if(E.appendChild(this.dom.createTextNode(y?v.slice(y):v,this.element)),a(g.type))u.appendChild(E);else{var L="ace_"+g.type.replace(/\./g," ace_"),C=this.dom.createElement("span");g.type=="fold"&&(C.style.width=g.value.length*this.config.characterWidth+"px",C.setAttribute("title",r("inline-fold.closed.title","Unfold code"))),C.className=L,C.appendChild(E),u.appendChild(C)}return f+v.length},p.prototype.renderIndentGuide=function(u,f,g){var v=f.search(this.$indentGuideRe);if(v<=0||v>=g)return f;if(f[0]==" "){v-=v%this.tabSize;for(var b=v/this.tabSize,D=0;DD[E].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}}if(!this.$highlightIndentGuideMarker.end&&u[f.row]!==""&&f.column===u[f.row].length){this.$highlightIndentGuideMarker.dir=1;for(var E=f.row+1;E0)v=u.element.childNodes[0];else return;var b=v.childNodes;if(b){var D=b[f-1];D&&D.classList&&D.classList.contains("ace_indent-guide")&&D.classList.add("ace_indent-guide-active")}}},p.prototype.$renderHighlightIndentGuide=function(){if(this.$lines){var u=this.$lines.cells;this.$clearActiveIndentGuide();var f=this.$highlightIndentGuideMarker.indentLevel;if(f!==0)if(this.$highlightIndentGuideMarker.dir===1)for(var g=0;g=this.$highlightIndentGuideMarker.start+1){if(v.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(v,f)}}else for(var g=u.length-1;g>=0;g--){var v=u[g];if(this.$highlightIndentGuideMarker.end&&v.row=D;){E=this.$renderToken(w,E,A,T.substring(0,D-v)),T=T.substring(D-v),v=D,w=this.$createLineElement(),u.appendChild(w);var x=this.dom.createTextNode(d.stringRepeat(" ",g.indent),this.element);x.charCount=0,w.appendChild(x),b++,E=0,D=g[b]||Number.MAX_VALUE}T.length!=0&&(v+=T.length,E=this.$renderToken(w,E,A,T))}}g[g.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(w,E,null,"",!0)},p.prototype.$renderSimpleLine=function(u,f){for(var g=0,v=0;vthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(u,g,b,D);g=this.$renderToken(u,g,b,D)}}},p.prototype.$renderOverflowMessage=function(u,f,g,v,b){g&&this.$renderToken(u,f,g,v.slice(0,this.MAX_LINE_LENGTH-f));var D=this.dom.createElement("span");D.className="ace_inline_button ace_keyword ace_toggle_wrap",D.textContent=b?"":"",u.appendChild(D)},p.prototype.$renderLine=function(u,f,g){if(!g&&g!=!1&&(g=this.session.getFoldLine(f)),g)var v=this.$getFoldLineTokens(f,g);else var v=this.session.getTokens(f);var b=u;if(v.length){var D=this.session.getRowSplitData(f);if(D&&D.length){this.$renderWrappedLine(u,v,D);var b=u.lastChild}else{var b=u;this.$useLineGroups()&&(b=this.$createLineElement(),u.appendChild(b)),this.$renderSimpleLine(b,v)}}else this.$useLineGroups()&&(b=this.$createLineElement(),u.appendChild(b));if(this.showEOL&&b){g&&(f=g.end.row);var E=this.dom.createElement("span");E.className="ace_invisible ace_invisible_eol",E.textContent=f==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,b.appendChild(E)}},p.prototype.$getFoldLineTokens=function(u,f){var g=this.session,v=[];function b(E,w,y){for(var A=0,T=0;T+E[A].value.lengthy-w&&(x=x.substring(0,y-w)),v.push({type:E[A].type,value:x}),T=w+x.length,A+=1}for(;Ty?v.push({type:E[A].type,value:x.substring(0,y-T)}):v.push(E[A]),T+=x.length,A+=1}}var D=g.getTokens(u);return f.walk(function(E,w,y,A,T){E!=null?v.push({type:"fold",value:E}):(T&&(D=g.getTokens(w)),D.length&&b(D,A,y))},f.end.row,this.session.getLine(f.end.row).length),v},p.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},p})();c.prototype.EOF_CHAR="¶",c.prototype.EOL_CHAR_LF="¬",c.prototype.EOL_CHAR_CRLF="¤",c.prototype.EOL_CHAR=c.prototype.EOL_CHAR_LF,c.prototype.TAB_CHAR="—",c.prototype.SPACE_CHAR="·",c.prototype.$padding=0,c.prototype.MAX_LINE_LENGTH=1e4,c.prototype.showInvisibles=!1,c.prototype.showSpaces=!1,c.prototype.showTabs=!1,c.prototype.showEOL=!1,c.prototype.displayIndentGuides=!0,c.prototype.$highlightIndentGuides=!0,c.prototype.$tabStrings=[],c.prototype.destroy={},c.prototype.onChangeTabSize=c.prototype.$computeTabString,i.implement(c.prototype,l),n.Text=c}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(t,n,h){var i=t("../lib/dom"),s=(function(){function d(o){this.element=i.createElement("div"),this.element.className="ace_layer ace_cursor-layer",o.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),i.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return d.prototype.$updateOpacity=function(o){for(var l=this.cursors,r=l.length;r--;)i.setStyle(l[r].style,"opacity",o?"":"0")},d.prototype.$startCssAnimation=function(){for(var o=this.cursors,l=o.length;l--;)o[l].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&i.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},d.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,i.removeCssClass(this.element,"ace_animate-blinking")},d.prototype.setPadding=function(o){this.$padding=o},d.prototype.setSession=function(o){this.session=o},d.prototype.setBlinking=function(o){o!=this.isBlinking&&(this.isBlinking=o,this.restartTimer())},d.prototype.setBlinkInterval=function(o){o!=this.blinkInterval&&(this.blinkInterval=o,this.restartTimer())},d.prototype.setSmoothBlinking=function(o){o!=this.smoothBlinking&&(this.smoothBlinking=o,i.setCssClass(this.element,"ace_smooth-blinking",o),this.$updateCursors(!0),this.restartTimer())},d.prototype.addCursor=function(){var o=i.createElement("div");return o.className="ace_cursor",this.element.appendChild(o),this.cursors.push(o),o},d.prototype.removeCursor=function(){if(this.cursors.length>1){var o=this.cursors.pop();return o.parentNode.removeChild(o),o}},d.prototype.hideCursor=function(){this.isVisible=!1,i.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},d.prototype.showCursor=function(){this.isVisible=!0,i.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},d.prototype.restartTimer=function(){var o=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,i.removeCssClass(this.element,"ace_smooth-blinking")),o(!0),!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&i.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),i.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var l=function(){this.timeoutId=setTimeout(function(){o(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){o(!0),l()},this.blinkInterval),l()}},d.prototype.getPixelPosition=function(o,l){if(!this.config||!this.session)return{left:0,top:0};o||(o=this.session.selection.getCursor());var r=this.session.documentToScreenPosition(o),a=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,o.row)?this.session.$bidiHandler.getPosLeft(r.column):r.column*this.config.characterWidth),c=(r.row-(l?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:a,top:c}},d.prototype.isCursorInView=function(o,l){return o.top>=0&&o.topo.height+o.offset||p.top<0)&&r>1)){var u=this.cursors[a++]||this.addCursor(),f=u.style;this.drawCursor?this.drawCursor(u,p,o,l[r],this.session):this.isCursorInView(p,o)?(i.setStyle(f,"display","block"),i.translate(u,p.left,p.top),i.setStyle(f,"width",Math.round(o.characterWidth)+"px"),i.setStyle(f,"height",o.lineHeight+"px")):i.setStyle(f,"display","none")}}for(;this.cursors.length>a;)this.removeCursor();var g=this.session.getOverwrite();this.$setOverwrite(g),this.$pixelPos=p,this.restartTimer()},d.prototype.$setOverwrite=function(o){o!=this.overwrite&&(this.overwrite=o,o?i.addCssClass(this.element,"ace_overwrite-cursors"):i.removeCssClass(this.element,"ace_overwrite-cursors"))},d.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},d})();s.prototype.$padding=0,s.prototype.drawCursor=null,n.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(t,n,h){var i=this&&this.__extends||(function(){var u=function(f,g){return u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,b){v.__proto__=b}||function(v,b){for(var D in b)Object.prototype.hasOwnProperty.call(b,D)&&(v[D]=b[D])},u(f,g)};return function(f,g){if(typeof g!="function"&&g!==null)throw new TypeError("Class extends value "+String(g)+" is not a constructor or null");u(f,g);function v(){this.constructor=f}f.prototype=g===null?Object.create(g):(v.prototype=g.prototype,new v)}})(),s=t("./lib/oop"),d=t("./lib/dom"),o=t("./lib/event"),l=t("./lib/event_emitter").EventEmitter,r=32768,a=(function(){function u(f,g){this.element=d.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+g,this.inner=d.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent=" ",this.element.appendChild(this.inner),f.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)}return u.prototype.setVisible=function(f){this.element.style.display=f?"":"none",this.isVisible=f,this.coeff=1},u})();s.implement(a.prototype,l);var c=(function(u){i(f,u);function f(g,v){var b=u.call(this,g,"-v")||this;return b.scrollTop=0,b.scrollHeight=0,v.$scrollbarWidth=b.width=d.scrollbarWidth(g.ownerDocument),b.inner.style.width=b.element.style.width=(b.width||15)+5+"px",b.$minWidth=0,b}return f.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,this.coeff!=1){var g=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-g)/(this.coeff-g)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},f.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},f.prototype.setHeight=function(g){this.element.style.height=g+"px"},f.prototype.setScrollHeight=function(g){this.scrollHeight=g,g>r?(this.coeff=r/g,g=r):this.coeff!=1&&(this.coeff=1),this.inner.style.height=g+"px"},f.prototype.setScrollTop=function(g){this.scrollTop!=g&&(this.skipEvent=!0,this.scrollTop=g,this.element.scrollTop=g*this.coeff)},f})(a);c.prototype.setInnerHeight=c.prototype.setScrollHeight;var p=(function(u){i(f,u);function f(g,v){var b=u.call(this,g,"-h")||this;return b.scrollLeft=0,b.height=v.$scrollbarWidth,b.inner.style.height=b.element.style.height=(b.height||15)+5+"px",b}return f.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},f.prototype.getHeight=function(){return this.isVisible?this.height:0},f.prototype.setWidth=function(g){this.element.style.width=g+"px"},f.prototype.setInnerWidth=function(g){this.inner.style.width=g+"px"},f.prototype.setScrollWidth=function(g){this.inner.style.width=g+"px"},f.prototype.setScrollLeft=function(g){this.scrollLeft!=g&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=g)},f})(a);n.ScrollBar=c,n.ScrollBarV=c,n.ScrollBarH=p,n.VScrollBar=c,n.HScrollBar=p}),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(t,n,h){var i=this&&this.__extends||(function(){var p=function(u,f){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,v){g.__proto__=v}||function(g,v){for(var b in v)Object.prototype.hasOwnProperty.call(v,b)&&(g[b]=v[b])},p(u,f)};return function(u,f){if(typeof f!="function"&&f!==null)throw new TypeError("Class extends value "+String(f)+" is not a constructor or null");p(u,f);function g(){this.constructor=u}u.prototype=f===null?Object.create(f):(g.prototype=f.prototype,new g)}})(),s=t("./lib/oop"),d=t("./lib/dom"),o=t("./lib/event"),l=t("./lib/event_emitter").EventEmitter;d.importCssString(`.ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{ position: absolute; background: rgba(128, 128, 128, 0.6); -moz-box-sizing: border-box; @@ -259,7 +259,7 @@ import{i as Ao,h as x,f as Kl,a as Gl,p as Jl}from"./ConfigCustomJavascriptSet__ .ace_editor>.ace_sb_grabbed { z-index: 8; background: #000; -}`,"ace_scrollbar.css",!1);var r=(function(){function p(h,f){this.element=d.createElement("div"),this.element.className="ace_sb"+f,this.inner=d.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,h.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return p.prototype.setVisible=function(h){this.element.style.display=h?"":"none",this.isVisible=h,this.coeff=1},p})();s.implement(r.prototype,l);var a=(function(p){i(h,p);function h(f,g){var v=p.call(this,f,"-v")||this;return v.scrollTop=0,v.scrollHeight=0,v.parent=f,v.width=v.VScrollWidth,v.renderer=g,v.inner.style.width=v.element.style.width=(v.width||15)+"px",v.$minWidth=0,v}return h.prototype.onMouseDown=function(f,g){if(f==="mousedown"&&!(o.getButton(g)!==0||g.detail===2)){if(g.target===this.inner){var v=this,b=g.clientY,D=function(M){b=M.clientY},E=function(){clearInterval(T)},w=g.clientY,y=this.thumbTop,A=function(){if(b!==void 0){var M=v.scrollTopFromThumbTop(y+b-w);M!==v.scrollTop&&v._emit("scroll",{data:M})}};o.capture(this.inner,D,E);var T=setInterval(A,20);return o.preventDefault(g)}var $=g.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop($)}),o.preventDefault(g)}},h.prototype.getHeight=function(){return this.height},h.prototype.scrollTopFromThumbTop=function(f){var g=f*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return g=g>>0,g<0?g=0:g>this.pageHeight-this.viewHeight&&(g=this.pageHeight-this.viewHeight),g},h.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},h.prototype.setHeight=function(f){this.height=Math.max(0,f),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},h.prototype.setScrollHeight=function(f,g){this.pageHeight===f&&!g||(this.pageHeight=f,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},h.prototype.setScrollTop=function(f){this.scrollTop=f,f<0&&(f=0),this.thumbTop=f*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},h})(r);a.prototype.setInnerHeight=a.prototype.setScrollHeight;var c=(function(p){i(h,p);function h(f,g){var v=p.call(this,f,"-h")||this;return v.scrollLeft=0,v.scrollWidth=0,v.height=v.HScrollHeight,v.inner.style.height=v.element.style.height=(v.height||12)+"px",v.renderer=g,v}return h.prototype.onMouseDown=function(f,g){if(f==="mousedown"&&!(o.getButton(g)!==0||g.detail===2)){if(g.target===this.inner){var v=this,b=g.clientX,D=function(M){b=M.clientX},E=function(){clearInterval(T)},w=g.clientX,y=this.thumbLeft,A=function(){if(b!==void 0){var M=v.scrollLeftFromThumbLeft(y+b-w);M!==v.scrollLeft&&v._emit("scroll",{data:M})}};o.capture(this.inner,D,E);var T=setInterval(A,20);return o.preventDefault(g)}var $=g.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft($)}),o.preventDefault(g)}},h.prototype.getHeight=function(){return this.isVisible?this.height:0},h.prototype.scrollLeftFromThumbLeft=function(f){var g=f*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return g=g>>0,g<0?g=0:g>this.pageWidth-this.viewWidth&&(g=this.pageWidth-this.viewWidth),g},h.prototype.setWidth=function(f){this.width=Math.max(0,f),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},h.prototype.setScrollWidth=function(f,g){this.pageWidth===f&&!g||(this.pageWidth=f,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},h.prototype.setScrollLeft=function(f){this.scrollLeft=f,f<0&&(f=0),this.thumbLeft=f*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},h})(r);c.prototype.setInnerWidth=c.prototype.setScrollWidth,n.ScrollBar=a,n.ScrollBarV=a,n.ScrollBarH=c,n.VScrollBar=a,n.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(t,n,u){var i=t("./lib/event"),s=(function(){function d(o,l){this.onRender=o,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=l||window;var r=this;this._flush=function(a){r.pending=!1;var c=r.changes;if(c&&(i.blockIdle(100),r.changes=0,r.onRender(c)),r.changes){if(r.$recursionLimit--<0)return;r.schedule()}else r.$recursionLimit=2}}return d.prototype.schedule=function(o){this.changes=this.changes|o,this.changes&&!this.pending&&(i.nextFrame(this._flush),this.pending=!0)},d.prototype.clear=function(o){var l=this.changes;return this.changes=0,l},d})();n.RenderLoop=s}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(t,n,u){var i=t("../lib/oop"),s=t("../lib/dom"),d=t("../lib/lang"),o=t("../lib/event"),l=t("../lib/useragent"),r=t("../lib/event_emitter").EventEmitter,a=512,c=typeof ResizeObserver=="function",p=200,h=(function(){function f(g){this.el=s.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=s.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=s.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),g.appendChild(this.el),this.$measureNode.textContent=d.stringRepeat("X",a),this.$characterSize={width:0,height:0},c?this.$addObserver():this.checkForSizeChanges()}return f.prototype.$setMeasureNodeStyles=function(g,v){g.width=g.height="auto",g.left=g.top="0px",g.visibility="hidden",g.position="absolute",g.whiteSpace="pre",l.isIE<8?g["font-family"]="inherit":g.font="inherit",g.overflow=v?"hidden":"visible"},f.prototype.checkForSizeChanges=function(g){if(g===void 0&&(g=this.$measureSizes()),g&&(this.$characterSize.width!==g.width||this.$characterSize.height!==g.height)){this.$measureNode.style.fontWeight="bold";var v=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=g,this.charSizes=Object.create(null),this.allowBoldFonts=v&&v.width===g.width&&v.height===g.height,this._emit("changeCharacterSize",{data:g})}},f.prototype.$addObserver=function(){var g=this;this.$observer=new window.ResizeObserver(function(v){g.checkForSizeChanges()}),this.$observer.observe(this.$measureNode)},f.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var g=this;return this.$pollSizeChangesTimer=o.onIdle(function v(){g.checkForSizeChanges(),o.onIdle(v,500)},500)},f.prototype.setPolling=function(g){g?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},f.prototype.$measureSizes=function(g){var v={height:(g||this.$measureNode).clientHeight,width:(g||this.$measureNode).clientWidth/a};return v.width===0||v.height===0?null:v},f.prototype.$measureCharWidth=function(g){this.$main.textContent=d.stringRepeat(g,a);var v=this.$main.getBoundingClientRect();return v.width/a},f.prototype.getCharacterWidth=function(g){var v=this.charSizes[g];return v===void 0&&(v=this.charSizes[g]=this.$measureCharWidth(g)/this.$characterSize.width),v},f.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},f.prototype.$getZoom=function(g){return!g||!g.parentElement?1:(Number(window.getComputedStyle(g).zoom)||1)*this.$getZoom(g.parentElement)},f.prototype.$initTransformMeasureNodes=function(){var g=function(v,b){return["div",{style:"position: absolute;top:"+v+"px;left:"+b+"px;"}]};this.els=s.buildDom([g(0,0),g(p,0),g(0,p),g(p,p)],this.el)},f.prototype.transformCoordinates=function(g,v){if(g){var b=this.$getZoom(this.el);g=y(1/b,g)}function D(B,N,H){var W=B[1]*N[0]-B[0]*N[1];return[(-N[1]*H[0]+N[0]*H[1])/W,(+B[1]*H[0]-B[0]*H[1])/W]}function E(B,N){return[B[0]-N[0],B[1]-N[1]]}function w(B,N){return[B[0]+N[0],B[1]+N[1]]}function y(B,N){return[B*N[0],B*N[1]]}this.els||this.$initTransformMeasureNodes();function A(B){var N=B.getBoundingClientRect();return[N.left,N.top]}var T=A(this.els[0]),$=A(this.els[1]),M=A(this.els[2]),O=A(this.els[3]),_=D(E(O,$),E(O,M),E(w($,M),w(O,T))),k=y(1+_[0],E($,T)),S=y(1+_[1],E(M,T));if(v){var C=v,L=_[0]*C[0]/p+_[1]*C[1]/p+1,I=w(y(C[0],k),y(C[1],S));return w(y(1/L/p,I),T)}var F=E(g,T),R=D(E(k,y(_[0],F)),E(S,y(_[1],F)),F);return y(p,R)},f})();h.prototype.$characterSize={width:0,height:0},i.implement(h.prototype,r),n.FontMetrics=h}),ace.define("ace/css/editor-css",["require","exports","module"],function(t,n,u){u.exports=` +}`,"ace_scrollbar.css",!1);var r=(function(){function p(u,f){this.element=d.createElement("div"),this.element.className="ace_sb"+f,this.inner=d.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,u.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return p.prototype.setVisible=function(u){this.element.style.display=u?"":"none",this.isVisible=u,this.coeff=1},p})();s.implement(r.prototype,l);var a=(function(p){i(u,p);function u(f,g){var v=p.call(this,f,"-v")||this;return v.scrollTop=0,v.scrollHeight=0,v.parent=f,v.width=v.VScrollWidth,v.renderer=g,v.inner.style.width=v.element.style.width=(v.width||15)+"px",v.$minWidth=0,v}return u.prototype.onMouseDown=function(f,g){if(f==="mousedown"&&!(o.getButton(g)!==0||g.detail===2)){if(g.target===this.inner){var v=this,b=g.clientY,D=function(M){b=M.clientY},E=function(){clearInterval(T)},w=g.clientY,y=this.thumbTop,A=function(){if(b!==void 0){var M=v.scrollTopFromThumbTop(y+b-w);M!==v.scrollTop&&v._emit("scroll",{data:M})}};o.capture(this.inner,D,E);var T=setInterval(A,20);return o.preventDefault(g)}var x=g.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(x)}),o.preventDefault(g)}},u.prototype.getHeight=function(){return this.height},u.prototype.scrollTopFromThumbTop=function(f){var g=f*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return g=g>>0,g<0?g=0:g>this.pageHeight-this.viewHeight&&(g=this.pageHeight-this.viewHeight),g},u.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},u.prototype.setHeight=function(f){this.height=Math.max(0,f),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},u.prototype.setScrollHeight=function(f,g){this.pageHeight===f&&!g||(this.pageHeight=f,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},u.prototype.setScrollTop=function(f){this.scrollTop=f,f<0&&(f=0),this.thumbTop=f*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},u})(r);a.prototype.setInnerHeight=a.prototype.setScrollHeight;var c=(function(p){i(u,p);function u(f,g){var v=p.call(this,f,"-h")||this;return v.scrollLeft=0,v.scrollWidth=0,v.height=v.HScrollHeight,v.inner.style.height=v.element.style.height=(v.height||12)+"px",v.renderer=g,v}return u.prototype.onMouseDown=function(f,g){if(f==="mousedown"&&!(o.getButton(g)!==0||g.detail===2)){if(g.target===this.inner){var v=this,b=g.clientX,D=function(M){b=M.clientX},E=function(){clearInterval(T)},w=g.clientX,y=this.thumbLeft,A=function(){if(b!==void 0){var M=v.scrollLeftFromThumbLeft(y+b-w);M!==v.scrollLeft&&v._emit("scroll",{data:M})}};o.capture(this.inner,D,E);var T=setInterval(A,20);return o.preventDefault(g)}var x=g.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(x)}),o.preventDefault(g)}},u.prototype.getHeight=function(){return this.isVisible?this.height:0},u.prototype.scrollLeftFromThumbLeft=function(f){var g=f*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return g=g>>0,g<0?g=0:g>this.pageWidth-this.viewWidth&&(g=this.pageWidth-this.viewWidth),g},u.prototype.setWidth=function(f){this.width=Math.max(0,f),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},u.prototype.setScrollWidth=function(f,g){this.pageWidth===f&&!g||(this.pageWidth=f,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},u.prototype.setScrollLeft=function(f){this.scrollLeft=f,f<0&&(f=0),this.thumbLeft=f*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},u})(r);c.prototype.setInnerWidth=c.prototype.setScrollWidth,n.ScrollBar=a,n.ScrollBarV=a,n.ScrollBarH=c,n.VScrollBar=a,n.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(t,n,h){var i=t("./lib/event"),s=(function(){function d(o,l){this.onRender=o,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=l||window;var r=this;this._flush=function(a){r.pending=!1;var c=r.changes;if(c&&(i.blockIdle(100),r.changes=0,r.onRender(c)),r.changes){if(r.$recursionLimit--<0)return;r.schedule()}else r.$recursionLimit=2}}return d.prototype.schedule=function(o){this.changes=this.changes|o,this.changes&&!this.pending&&(i.nextFrame(this._flush),this.pending=!0)},d.prototype.clear=function(o){var l=this.changes;return this.changes=0,l},d})();n.RenderLoop=s}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(t,n,h){var i=t("../lib/oop"),s=t("../lib/dom"),d=t("../lib/lang"),o=t("../lib/event"),l=t("../lib/useragent"),r=t("../lib/event_emitter").EventEmitter,a=512,c=typeof ResizeObserver=="function",p=200,u=(function(){function f(g){this.el=s.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=s.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=s.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),g.appendChild(this.el),this.$measureNode.textContent=d.stringRepeat("X",a),this.$characterSize={width:0,height:0},c?this.$addObserver():this.checkForSizeChanges()}return f.prototype.$setMeasureNodeStyles=function(g,v){g.width=g.height="auto",g.left=g.top="0px",g.visibility="hidden",g.position="absolute",g.whiteSpace="pre",l.isIE<8?g["font-family"]="inherit":g.font="inherit",g.overflow=v?"hidden":"visible"},f.prototype.checkForSizeChanges=function(g){if(g===void 0&&(g=this.$measureSizes()),g&&(this.$characterSize.width!==g.width||this.$characterSize.height!==g.height)){this.$measureNode.style.fontWeight="bold";var v=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=g,this.charSizes=Object.create(null),this.allowBoldFonts=v&&v.width===g.width&&v.height===g.height,this._emit("changeCharacterSize",{data:g})}},f.prototype.$addObserver=function(){var g=this;this.$observer=new window.ResizeObserver(function(v){g.checkForSizeChanges()}),this.$observer.observe(this.$measureNode)},f.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var g=this;return this.$pollSizeChangesTimer=o.onIdle(function v(){g.checkForSizeChanges(),o.onIdle(v,500)},500)},f.prototype.setPolling=function(g){g?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},f.prototype.$measureSizes=function(g){var v={height:(g||this.$measureNode).clientHeight,width:(g||this.$measureNode).clientWidth/a};return v.width===0||v.height===0?null:v},f.prototype.$measureCharWidth=function(g){this.$main.textContent=d.stringRepeat(g,a);var v=this.$main.getBoundingClientRect();return v.width/a},f.prototype.getCharacterWidth=function(g){var v=this.charSizes[g];return v===void 0&&(v=this.charSizes[g]=this.$measureCharWidth(g)/this.$characterSize.width),v},f.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},f.prototype.$getZoom=function(g){return!g||!g.parentElement?1:(Number(window.getComputedStyle(g).zoom)||1)*this.$getZoom(g.parentElement)},f.prototype.$initTransformMeasureNodes=function(){var g=function(v,b){return["div",{style:"position: absolute;top:"+v+"px;left:"+b+"px;"}]};this.els=s.buildDom([g(0,0),g(p,0),g(0,p),g(p,p)],this.el)},f.prototype.transformCoordinates=function(g,v){if(g){var b=this.$getZoom(this.el);g=y(1/b,g)}function D(B,N,z){var W=B[1]*N[0]-B[0]*N[1];return[(-N[1]*z[0]+N[0]*z[1])/W,(+B[1]*z[0]-B[0]*z[1])/W]}function E(B,N){return[B[0]-N[0],B[1]-N[1]]}function w(B,N){return[B[0]+N[0],B[1]+N[1]]}function y(B,N){return[B*N[0],B*N[1]]}this.els||this.$initTransformMeasureNodes();function A(B){var N=B.getBoundingClientRect();return[N.left,N.top]}var T=A(this.els[0]),x=A(this.els[1]),M=A(this.els[2]),O=A(this.els[3]),_=D(E(O,x),E(O,M),E(w(x,M),w(O,T))),k=y(1+_[0],E(x,T)),S=y(1+_[1],E(M,T));if(v){var C=v,L=_[0]*C[0]/p+_[1]*C[1]/p+1,I=w(y(C[0],k),y(C[1],S));return w(y(1/L/p,I),T)}var F=E(g,T),R=D(E(k,y(_[0],F)),E(S,y(_[1],F)),F);return y(p,R)},f})();u.prototype.$characterSize={width:0,height:0},i.implement(u.prototype,r),n.FontMetrics=u}),ace.define("ace/css/editor-css",["require","exports","module"],function(t,n,h){h.exports=` .ace_br1 {border-top-left-radius : 3px;} .ace_br2 {border-top-right-radius : 3px;} .ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} @@ -955,9 +955,9 @@ import{i as Ao,h as x,f as Kl,a as Gl,p as Jl}from"./ConfigCustomJavascriptSet__ .ace_hidden_token { display: none; -}`}),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],function(t,n,u){var i=t("../lib/dom"),s=t("../lib/oop"),d=t("../lib/event_emitter").EventEmitter,o=(function(){function l(r,a){this.renderer=a,this.pixelRatio=1,this.maxHeight=a.layerConfig.maxHeight,this.lineHeight=a.layerConfig.lineHeight,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},this.setScrollBarV(r)}return l.prototype.$createCanvas=function(){this.canvas=i.createElement("canvas"),this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7",this.canvas.style.position="absolute"},l.prototype.setScrollBarV=function(r){this.$createCanvas(),this.scrollbarV=r,r.element.appendChild(this.canvas),this.setDimensions()},l.prototype.$updateDecorators=function(r){if(typeof this.canvas.getContext!="function")return;var a=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light;this.setDimensions(r);var c=this.canvas.getContext("2d");function p(k,S){return k.priorityS.priority?1:0}var h=this.renderer.session.$annotations;if(c.clearRect(0,0,this.canvas.width,this.canvas.height),h){var f={info:1,warning:2,error:3};h.forEach(function(k){k.priority=f[k.type]||null}),h=h.sort(p);for(var g=0;gthis.canvasHeight&&(y=this.canvasHeight-A);var T=y-A,$=y+A,M=$-T;c.fillStyle=a[h[g].type]||null,c.fillRect(0,T,Math.round(this.oneZoneWidth-1),M)}}var O=this.renderer.session.selection.getCursor();if(O){var _=Math.round(this.getVerticalOffsetForRow(O.row)*this.heightRatio);c.fillStyle="rgba(0, 0, 0, 0.5)",c.fillRect(0,_,this.canvasWidth,2)}},l.prototype.getVerticalOffsetForRow=function(r){r=r|0;var a=this.renderer.session.documentToScreenRow(r,0)*this.lineHeight;return a},l.prototype.setDimensions=function(r){r=r||this.renderer.layerConfig,this.maxHeight=r.maxHeight,this.lineHeight=r.lineHeight,this.canvasHeight=r.height,this.canvasWidth=this.scrollbarV.width||this.canvasWidth,this.setZoneWidth(),this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.maxHeightM&&(this.$changedLines.firstRow=M),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},$.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},$.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},$.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},$.prototype.updateFull=function(M){M?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},$.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},$.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},$.prototype.onResize=function(M,O,_,k){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=M?1:0;var S=this.container;k||(k=S.clientHeight||S.scrollHeight),!k&&this.$maxLines&&this.lineHeight>1&&(!S.style.height||S.style.height=="0px")&&(S.style.height="1px",k=S.clientHeight||S.scrollHeight),_||(_=S.clientWidth||S.scrollWidth);var C=this.$updateCachedSize(M,O,_,k);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!_&&!k)return this.resizing=0;M&&(this.$gutterLayer.$padding=null),M?this.$renderChanges(C|this.$changes,!0):this.$loop.schedule(C|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},$.prototype.$updateCachedSize=function(M,O,_,k){k-=this.$extraHeight||0;var S=0,C=this.$size,L={width:C.width,height:C.height,scrollerHeight:C.scrollerHeight,scrollerWidth:C.scrollerWidth};if(k&&(M||C.height!=k)&&(C.height=k,S|=this.CHANGE_SIZE,C.scrollerHeight=C.height,this.$horizScroll&&(C.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(C.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",S=S|this.CHANGE_SCROLL),_&&(M||C.width!=_)){S|=this.CHANGE_SIZE,C.width=_,O==null&&(O=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=O,s.setStyle(this.scrollBarH.element.style,"left",O+"px"),s.setStyle(this.scroller.style,"left",O+this.margin.left+"px"),C.scrollerWidth=Math.max(0,_-O-this.scrollBarV.getWidth()-this.margin.h),s.setStyle(this.$gutter.style,"left",this.margin.left+"px");var I=this.scrollBarV.getWidth()+"px";s.setStyle(this.scrollBarH.element.style,"right",I),s.setStyle(this.scroller.style,"right",I),s.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(C.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||M)&&(S|=this.CHANGE_FULL)}return C.$dirty=!_||!k,S&&this._signal("resize",L),S},$.prototype.onGutterResize=function(M){var O=this.$showGutter?M:0;O!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,O,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},$.prototype.adjustWrapLimit=function(){var M=this.$size.scrollerWidth-this.$padding*2,O=Math.floor(M/this.characterWidth);return this.session.adjustWrapLimit(O,this.$showPrintMargin&&this.$printMarginColumn)},$.prototype.setAnimatedScroll=function(M){this.setOption("animatedScroll",M)},$.prototype.getAnimatedScroll=function(){return this.$animatedScroll},$.prototype.setShowInvisibles=function(M){this.setOption("showInvisibles",M),this.session.$bidiHandler.setShowInvisibles(M)},$.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},$.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},$.prototype.setDisplayIndentGuides=function(M){this.setOption("displayIndentGuides",M)},$.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},$.prototype.setHighlightIndentGuides=function(M){this.setOption("highlightIndentGuides",M)},$.prototype.setShowPrintMargin=function(M){this.setOption("showPrintMargin",M)},$.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},$.prototype.setPrintMarginColumn=function(M){this.setOption("printMarginColumn",M)},$.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},$.prototype.getShowGutter=function(){return this.getOption("showGutter")},$.prototype.setShowGutter=function(M){return this.setOption("showGutter",M)},$.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},$.prototype.setFadeFoldWidgets=function(M){this.setOption("fadeFoldWidgets",M)},$.prototype.setHighlightGutterLine=function(M){this.setOption("highlightGutterLine",M)},$.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},$.prototype.$updatePrintMargin=function(){if(!(!this.$showPrintMargin&&!this.$printMarginEl)){if(!this.$printMarginEl){var M=s.createElement("div");M.className="ace_layer ace_print-margin-layer",this.$printMarginEl=s.createElement("div"),this.$printMarginEl.className="ace_print-margin",M.appendChild(this.$printMarginEl),this.content.insertBefore(M,this.content.firstChild)}var O=this.$printMarginEl.style;O.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",O.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},$.prototype.getContainerElement=function(){return this.container},$.prototype.getMouseEventTarget=function(){return this.scroller},$.prototype.getTextAreaContainer=function(){return this.container},$.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var M=this.textarea.style,O=this.$composition;if(!this.$keepTextAreaAtCursor&&!O){s.translate(this.textarea,-100,0);return}var _=this.$cursorLayer.$pixelPos;if(_){O&&O.markerRange&&(_=this.$cursorLayer.getPixelPosition(O.markerRange.start,!0));var k=this.layerConfig,S=_.top,C=_.left;S-=k.offset;var L=O&&O.useTextareaForIME||y.isMobile?this.lineHeight:1;if(S<0||S>k.height-L){s.translate(this.textarea,0,0);return}var I=1,F=this.$size.height-L;if(!O)S+=this.lineHeight;else if(O.useTextareaForIME){var R=this.textarea.value;I=this.characterWidth*this.session.$getStringScreenWidth(R)[0]}else S+=this.lineHeight+2;C-=this.scrollLeft,C>this.$size.scrollerWidth-I&&(C=this.$size.scrollerWidth-I),C+=this.gutterWidth+this.margin.left,s.setStyle(M,"height",L+"px"),s.setStyle(M,"width",I+"px"),s.translate(this.textarea,Math.min(C,this.$size.scrollerWidth-I),Math.min(S,F))}}},$.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},$.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},$.prototype.getLastFullyVisibleRow=function(){var M=this.layerConfig,O=M.lastRow,_=this.session.documentToScreenRow(O,0)*M.lineHeight;return _-this.session.getScrollTop()>M.height-M.lineHeight?O-1:O},$.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},$.prototype.setPadding=function(M){this.$padding=M,this.$textLayer.setPadding(M),this.$cursorLayer.setPadding(M),this.$markerFront.setPadding(M),this.$markerBack.setPadding(M),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},$.prototype.setScrollMargin=function(M,O,_,k){var S=this.scrollMargin;S.top=M|0,S.bottom=O|0,S.right=k|0,S.left=_|0,S.v=S.top+S.bottom,S.h=S.left+S.right,S.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-S.top),this.updateFull()},$.prototype.setMargin=function(M,O,_,k){var S=this.margin;S.top=M|0,S.bottom=O|0,S.right=k|0,S.left=_|0,S.v=S.top+S.bottom,S.h=S.left+S.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},$.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},$.prototype.setHScrollBarAlwaysVisible=function(M){this.setOption("hScrollBarAlwaysVisible",M)},$.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},$.prototype.setVScrollBarAlwaysVisible=function(M){this.setOption("vScrollBarAlwaysVisible",M)},$.prototype.$updateScrollBarV=function(){var M=this.layerConfig.maxHeight,O=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(M-=(O-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>M-O&&(M=this.scrollTop+O,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(M+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},$.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},$.prototype.freeze=function(){this.$frozen=!0},$.prototype.unfreeze=function(){this.$frozen=!1},$.prototype.$renderChanges=function(M,O){if(this.$changes&&(M|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!M&&!O){this.$changes|=M;return}if(this.$size.$dirty)return this.$changes|=M,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",M),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var _=this.layerConfig;if(M&this.CHANGE_FULL||M&this.CHANGE_SIZE||M&this.CHANGE_TEXT||M&this.CHANGE_LINES||M&this.CHANGE_SCROLL||M&this.CHANGE_H_SCROLL){if(M|=this.$computeLayerConfig()|this.$loop.clear(),_.firstRow!=this.layerConfig.firstRow&&_.firstRowScreen==this.layerConfig.firstRowScreen){var k=this.scrollTop+(_.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;k>0&&(this.scrollTop=k,M=M|this.CHANGE_SCROLL,M|=this.$computeLayerConfig()|this.$loop.clear())}_=this.layerConfig,this.$updateScrollBarV(),M&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),s.translate(this.content,-this.scrollLeft,-_.offset);var S=_.width+2*this.$padding+"px",C=_.minHeight+"px";s.setStyle(this.content.style,"width",S),s.setStyle(this.content.style,"height",C)}if(M&this.CHANGE_H_SCROLL&&(s.translate(this.content,-this.scrollLeft,-_.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),M&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(_),this.$showGutter&&this.$gutterLayer.update(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_),this.$markerBack.update(_),this.$markerFront.update(_),this.$cursorLayer.update(_),this.$moveTextAreaToCursor(),this._signal("afterRender",M);return}if(M&this.CHANGE_SCROLL){this.$changedLines=null,M&this.CHANGE_TEXT||M&this.CHANGE_LINES?this.$textLayer.update(_):this.$textLayer.scrollLines(_),this.$showGutter&&(M&this.CHANGE_GUTTER||M&this.CHANGE_LINES?this.$gutterLayer.update(_):this.$gutterLayer.scrollLines(_)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_),this.$markerBack.update(_),this.$markerFront.update(_),this.$cursorLayer.update(_),this.$moveTextAreaToCursor(),this._signal("afterRender",M);return}M&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(_),this.$showGutter&&this.$gutterLayer.update(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_)):M&this.CHANGE_LINES?((this.$updateLines()||M&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_)):M&this.CHANGE_TEXT||M&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_)):M&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_)),M&this.CHANGE_CURSOR&&(this.$cursorLayer.update(_),this.$moveTextAreaToCursor()),M&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(_),M&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(_),this._signal("afterRender",M)},$.prototype.$autosize=function(){var M=this.session.getScreenLength()*this.lineHeight,O=this.$maxLines*this.lineHeight,_=Math.min(O,Math.max((this.$minLines||1)*this.lineHeight,M))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(_+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&_>this.$maxPixelHeight&&(_=this.$maxPixelHeight);var k=_<=2*this.lineHeight,S=!k&&M>O;if(_!=this.desiredHeight||this.$size.height!=this.desiredHeight||S!=this.$vScroll){S!=this.$vScroll&&(this.$vScroll=S,this.scrollBarV.setVisible(S));var C=this.container.clientWidth;this.container.style.height=_+"px",this.$updateCachedSize(!0,this.$gutterWidth,C,_),this.desiredHeight=_,this._signal("autosize")}},$.prototype.$computeLayerConfig=function(){var M=this.session,O=this.$size,_=O.height<=2*this.lineHeight,k=this.session.getScreenLength(),S=k*this.lineHeight,C=this.$getLongestLine(),L=!_&&(this.$hScrollBarAlwaysVisible||O.scrollerWidth-C-2*this.$padding<0),I=this.$horizScroll!==L;I&&(this.$horizScroll=L,this.scrollBarH.setVisible(L));var F=this.$vScroll;this.$maxLines&&this.lineHeight>1&&(this.$autosize(),_=O.height<=2*this.lineHeight);var R=O.scrollerHeight+this.lineHeight,B=!this.$maxLines&&this.$scrollPastEnd?(O.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;S+=B;var N=this.scrollMargin;this.session.setScrollTop(Math.max(-N.top,Math.min(this.scrollTop,S-O.scrollerHeight+N.bottom))),this.session.setScrollLeft(Math.max(-N.left,Math.min(this.scrollLeft,C+2*this.$padding-O.scrollerWidth+N.right)));var H=!_&&(this.$vScrollBarAlwaysVisible||O.scrollerHeight-S+B<0||this.scrollTop>N.top),W=F!==H;W&&(this.$vScroll=H,this.scrollBarV.setVisible(H));var j=this.scrollTop%this.lineHeight,U=Math.ceil(R/this.lineHeight)-1,K=Math.max(0,Math.round((this.scrollTop-j)/this.lineHeight)),J=K+U,Y,X,q=this.lineHeight;K=M.screenToDocumentRow(K,0);var ne=M.getFoldLine(K);ne&&(K=ne.start.row),Y=M.documentToScreenRow(K,0),X=M.getRowLength(K)*q,J=Math.min(M.screenToDocumentRow(J,0),M.getLength()-1),R=O.scrollerHeight+M.getRowLength(J)*q+X,j=this.scrollTop-Y*q,j<0&&Y>0&&(Y=Math.max(0,Y+Math.floor(j/q)),j=this.scrollTop-Y*q);var ue=0;return(this.layerConfig.width!=C||I)&&(ue=this.CHANGE_H_SCROLL),(I||W)&&(ue|=this.$updateCachedSize(!0,this.gutterWidth,O.width,O.height),this._signal("scrollbarVisibilityChanged"),W&&(C=this.$getLongestLine())),this.layerConfig={width:C,padding:this.$padding,firstRow:K,firstRowScreen:Y,lastRow:J,lineHeight:q,characterWidth:this.characterWidth,minHeight:R,maxHeight:S,offset:j,gutterOffset:q?Math.max(0,Math.ceil((j+O.height-O.scrollerHeight)/q)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(C-this.$padding),ue},$.prototype.$updateLines=function(){if(this.$changedLines){var M=this.$changedLines.firstRow,O=this.$changedLines.lastRow;this.$changedLines=null;var _=this.layerConfig;if(!(M>_.lastRow+1)&&!(O<_.firstRow)){if(O===1/0){this.$showGutter&&this.$gutterLayer.update(_),this.$textLayer.update(_);return}return this.$textLayer.updateLines(_,M,O),!0}}},$.prototype.$getLongestLine=function(){var M=this.session.getScreenWidth();return this.showInvisibles&&!this.session.$useWrapMode&&(M+=1),this.$textLayer&&M>this.$textLayer.MAX_LINE_LENGTH&&(M=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(M*this.characterWidth))},$.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},$.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},$.prototype.addGutterDecoration=function(M,O){this.$gutterLayer.addGutterDecoration(M,O)},$.prototype.removeGutterDecoration=function(M,O){this.$gutterLayer.removeGutterDecoration(M,O)},$.prototype.updateBreakpoints=function(M){this._rows=M,this.$loop.schedule(this.CHANGE_GUTTER)},$.prototype.setAnnotations=function(M){this.$gutterLayer.setAnnotations(M),this.$loop.schedule(this.CHANGE_GUTTER)},$.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},$.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},$.prototype.showCursor=function(){this.$cursorLayer.showCursor()},$.prototype.scrollSelectionIntoView=function(M,O,_){this.scrollCursorIntoView(M,_),this.scrollCursorIntoView(O,_)},$.prototype.scrollCursorIntoView=function(M,O,_){if(this.$size.scrollerHeight!==0){var k=this.$cursorLayer.getPixelPosition(M),S=k.left,C=k.top,L=_&&_.top||0,I=_&&_.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var F=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;F+L>C?(O&&F+L>C+this.lineHeight&&(C-=O*this.$size.scrollerHeight),C===0&&(C=-this.scrollMargin.top),this.session.setScrollTop(C)):F+this.$size.scrollerHeight-I=1-this.scrollMargin.top||O>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||M<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||M>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},$.prototype.pixelToScreenCoordinates=function(M,O){var _;if(this.$hasCssTransforms){_={top:0,left:0};var k=this.$fontMetrics.transformCoordinates([M,O]);M=k[1]-this.gutterWidth-this.margin.left,O=k[0]}else _=this.scroller.getBoundingClientRect();var S=M+this.scrollLeft-_.left-this.$padding,C=S/this.characterWidth,L=Math.floor((O+this.scrollTop-_.top)/this.lineHeight),I=this.$blockCursor?Math.floor(C):Math.round(C);return{row:L,column:I,side:C-I>0?1:-1,offsetX:S}},$.prototype.screenToTextCoordinates=function(M,O){var _;if(this.$hasCssTransforms){_={top:0,left:0};var k=this.$fontMetrics.transformCoordinates([M,O]);M=k[1]-this.gutterWidth-this.margin.left,O=k[0]}else _=this.scroller.getBoundingClientRect();var S=M+this.scrollLeft-_.left-this.$padding,C=S/this.characterWidth,L=this.$blockCursor?Math.floor(C):Math.round(C),I=Math.floor((O+this.scrollTop-_.top)/this.lineHeight);return this.session.screenToDocumentPosition(I,Math.max(L,0),S)},$.prototype.textToScreenCoordinates=function(M,O){var _=this.scroller.getBoundingClientRect(),k=this.session.documentToScreenPosition(M,O),S=this.$padding+(this.session.$bidiHandler.isBidiRow(k.row,M)?this.session.$bidiHandler.getPosLeft(k.column):Math.round(k.column*this.characterWidth)),C=k.row*this.lineHeight;return{pageX:_.left+S-this.scrollLeft,pageY:_.top+C-this.scrollTop}},$.prototype.visualizeFocus=function(){s.addCssClass(this.container,"ace_focus")},$.prototype.visualizeBlur=function(){s.removeCssClass(this.container,"ace_focus")},$.prototype.showComposition=function(M){this.$composition=M,M.cssText||(M.cssText=this.textarea.style.cssText),M.useTextareaForIME==null&&(M.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(s.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):M.markerId=this.session.addMarker(M.markerRange,"ace_composition_marker","text")},$.prototype.setCompositionText=function(M){var O=this.session.selection.cursor;this.addToken(M,"composition_placeholder",O.row,O.column),this.$moveTextAreaToCursor()},$.prototype.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),s.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var M=this.session.selection.cursor;this.removeExtraToken(M.row,M.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},$.prototype.setGhostText=function(M,O){var _=this.session.selection.cursor,k=O||{row:_.row,column:_.column};this.removeGhostText();var S=this.$calculateWrappedTextChunks(M,k);this.addToken(S[0].text,"ghost_text",k.row,k.column),this.$ghostText={text:M,position:{row:k.row,column:k.column}};var C=s.createElement("div");if(S.length>1){var L=this.hideTokensAfterPosition(k.row,k.column),I;S.slice(1).forEach(function(W){var j=s.createElement("div"),U=s.createElement("span");U.className="ace_ghost_text",W.wrapped&&(j.className="ghost_text_line_wrapped"),W.text.length===0&&(W.text=" "),U.appendChild(s.createTextNode(W.text)),j.appendChild(U),C.appendChild(j),I=j}),L.forEach(function(W){var j=s.createElement("span");A(W.type)||(j.className="ace_"+W.type.replace(/\./g," ace_")),j.appendChild(s.createTextNode(W.value)),I.appendChild(j)}),this.$ghostTextWidget={el:C,row:k.row,column:k.column,className:"ace_ghost_text_container"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget);var F=this.$cursorLayer.getPixelPosition(k,!0),R=this.container,B=R.getBoundingClientRect().height,N=S.length*this.lineHeight,H=N0){var R=0;F.push(S[L].length);for(var B=0;B1||Math.abs(M.$size.height-k)>1?M.$resizeTimer.delay():M.$resizeTimer.cancel()}),this.$resizeObserver.observe(this.container)}},$})();T.prototype.CHANGE_CURSOR=1,T.prototype.CHANGE_MARKER=2,T.prototype.CHANGE_GUTTER=4,T.prototype.CHANGE_SCROLL=8,T.prototype.CHANGE_LINES=16,T.prototype.CHANGE_TEXT=32,T.prototype.CHANGE_SIZE=64,T.prototype.CHANGE_MARKER_BACK=128,T.prototype.CHANGE_MARKER_FRONT=256,T.prototype.CHANGE_FULL=512,T.prototype.CHANGE_H_SCROLL=1024,T.prototype.$changes=0,T.prototype.$padding=null,T.prototype.$frozen=!1,T.prototype.STEPS=8,i.implement(T.prototype,D),o.defineOptions(T.prototype,"renderer",{useResizeObserver:{set:function($){!$&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):$&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function($){this.$textLayer.setShowInvisibles($)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function($){typeof $=="number"&&(this.$printMarginColumn=$),this.$showPrintMargin=!!$,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function($){this.$gutter.style.display=$?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function($){this.$gutterLayer.$useSvgGutterIcons=$},initialValue:!1},showFoldedAnnotations:{set:function($){this.$gutterLayer.$showFoldedAnnotations=$},initialValue:!1},fadeFoldWidgets:{set:function($){s.setCssClass(this.$gutter,"ace_fade-fold-widgets",$)},initialValue:!1},showFoldWidgets:{set:function($){this.$gutterLayer.setShowFoldWidgets($),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function($){this.$textLayer.setDisplayIndentGuides($)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function($){this.$textLayer.setHighlightIndentGuides($)==!0?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function($){this.$gutterLayer.setHighlightGutterLine($),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function($){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function($){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function($){typeof $=="number"&&($=$+"px"),this.container.style.fontSize=$,this.updateFontSize()},initialValue:12},fontFamily:{set:function($){this.container.style.fontFamily=$,this.updateFontSize()}},maxLines:{set:function($){this.updateFull()}},minLines:{set:function($){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function($){this.updateFull()},initialValue:0},scrollPastEnd:{set:function($){$=+$||0,this.$scrollPastEnd!=$&&(this.$scrollPastEnd=$,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function($){this.$gutterLayer.$fixedWidth=!!$,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function($){this.$updateCustomScrollbar($)},initialValue:!1},theme:{set:function($){this.setTheme($)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!y.isMobile&&!y.isIE}}),n.VirtualRenderer=T}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(t,n,u){var i=t("../lib/oop"),s=t("../lib/net"),d=t("../lib/event_emitter").EventEmitter,o=t("../config");function l(p){var h="importScripts('"+s.qualifyURL(p)+"');";try{return new Blob([h],{type:"application/javascript"})}catch{var f=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,g=new f;return g.append(h),g.getBlob("application/javascript")}}function r(p){if(typeof Worker>"u")return{postMessage:function(){},terminate:function(){}};if(o.get("loadWorkerFromBlob")){var h=l(p),f=window.URL||window.webkitURL,g=f.createObjectURL(h);return new Worker(g)}return new Worker(p)}var a=function(p){p.postMessage||(p=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=p,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){i.implement(this,d),this.$createWorkerFromOldConfig=function(p,h,f,g,v){if(t.nameToUrl&&!t.toUrl&&(t.toUrl=t.nameToUrl),o.get("packaged")||!t.toUrl)g=g||o.moduleUrl(h,"worker");else{var b=this.$normalizePath;g=g||b(t.toUrl("ace/worker/worker.js",null,"_"));var D={};p.forEach(function(E){D[E]=b(t.toUrl(E,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}return this.$worker=r(g),v&&this.send("importScripts",v),this.$worker.postMessage({init:!0,tlns:D,module:h,classname:f}),this.$worker},this.onMessage=function(p){var h=p.data;switch(h.type){case"event":this._signal(h.name,{data:h.data});break;case"call":var f=this.callbacks[h.id];f&&(f(h.data),delete this.callbacks[h.id]);break;case"error":this.reportError(h.data);break;case"log":window.console&&console.log&&console.log.apply(console,h.data);break}},this.reportError=function(p){window.console&&console.error&&console.error(p)},this.$normalizePath=function(p){return s.qualifyURL(p)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(p){p.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(p,h){this.$worker.postMessage({command:p,args:h})},this.call=function(p,h,f){if(f){var g=this.callbackId++;this.callbacks[g]=f,h.push(g)}this.send(p,h)},this.emit=function(p,h){try{h.data&&h.data.err&&(h.data.err={message:h.data.err.message,stack:h.data.err.stack,code:h.data.err.code}),this.$worker&&this.$worker.postMessage({event:p,data:{data:h.data}})}catch(f){console.error(f.stack)}},this.attachToDocument=function(p){this.$doc&&this.terminate(),this.$doc=p,this.call("setValue",[p.getValue()]),p.on("change",this.changeListener,!0)},this.changeListener=function(p){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),p.action=="insert"?this.deltaQueue.push(p.start,p.lines):this.deltaQueue.push(p.start,p.end)},this.$sendDeltaQueue=function(){var p=this.deltaQueue;p&&(this.deltaQueue=null,p.length>50&&p.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:p}))}}).call(a.prototype);var c=function(p,h,f){var g=null,v=!1,b=Object.create(d),D=[],E=new a({messageBuffer:D,terminate:function(){},postMessage:function(y){D.push(y),g&&(v?setTimeout(w):w())}});E.setEmitSync=function(y){v=y};var w=function(){var y=D.shift();y.command?g[y.command].apply(g,y.args):y.event&&b._signal(y.event,y.data)};return b.postMessage=function(y){E.onMessage({data:y})},b.callback=function(y,A){this.postMessage({type:"call",id:A,data:y})},b.emit=function(y,A){this.postMessage({type:"event",name:y,data:A})},o.loadModule(["worker",h],function(y){for(g=new y[f](b);D.length;)w()}),E};n.UIWorkerClient=c,n.WorkerClient=a,n.createWorker=r}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(t,n,u){var i=t("./range").Range,s=t("./lib/event_emitter").EventEmitter,d=t("./lib/oop"),o=(function(){function l(r,a,c,p,h,f){var g=this;this.length=a,this.session=r,this.doc=r.getDocument(),this.mainClass=h,this.othersClass=f,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=p,this.$onCursorChange=function(){setTimeout(function(){g.onCursorChange()})},this.$pos=c;var v=r.getUndoManager().$undoStack||r.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=v.length,this.setup(),r.selection.on("changeCursor",this.$onCursorChange)}return l.prototype.setup=function(){var r=this,a=this.doc,c=this.session;this.selectionBefore=c.selection.toJSON(),c.selection.inMultiSelectMode&&c.selection.toSingleRange(),this.pos=a.createAnchor(this.$pos.row,this.$pos.column);var p=this.pos;p.$insertRight=!0,p.detach(),p.markerId=c.addMarker(new i(p.row,p.column,p.row,p.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(h){var f=a.createAnchor(h.row,h.column);f.$insertRight=!0,f.detach(),r.others.push(f)}),c.setUndoSelect(!1)},l.prototype.showOtherMarkers=function(){if(!this.othersActive){var r=this.session,a=this;this.othersActive=!0,this.others.forEach(function(c){c.markerId=r.addMarker(new i(c.row,c.column,c.row,c.column+a.length),a.othersClass,null,!1)})}},l.prototype.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var r=0;r=this.pos.column&&a.start.column<=this.pos.column+this.length+1,h=a.start.column-this.pos.column;if(this.updateAnchors(r),p&&(this.length+=c),p&&!this.session.$fromUndo){if(r.action==="insert")for(var f=this.others.length-1;f>=0;f--){var g=this.others[f],v={row:g.row,column:g.column+h};this.doc.insertMergedLines(v,r.lines)}else if(r.action==="remove")for(var f=this.others.length-1;f>=0;f--){var g=this.others[f],v={row:g.row,column:g.column+h};this.doc.remove(new i(v.row,v.column,v.row,v.column-c))}}this.$updating=!1,this.updateMarkers()}},l.prototype.updateAnchors=function(r){this.pos.onChange(r);for(var a=this.others.length;a--;)this.others[a].onChange(r);this.updateMarkers()},l.prototype.updateMarkers=function(){if(!this.$updating){var r=this,a=this.session,c=function(h,f){a.removeMarker(h.markerId),h.markerId=a.addMarker(new i(h.row,h.column,h.row,h.column+r.length),f,null,!1)};c(this.pos,this.mainClass);for(var p=this.others.length;p--;)c(this.others[p],this.othersClass)}},l.prototype.onCursorChange=function(r){if(!(this.$updating||!this.session)){var a=this.session.selection.getCursor();a.row===this.pos.row&&a.column>=this.pos.column&&a.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",r)):(this.hideOtherMarkers(),this._emit("cursorLeave",r))}},l.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},l.prototype.cancel=function(){if(this.$undoStackDepth!==-1){for(var r=this.session.getUndoManager(),a=(r.$undoStack||r.$undostack).length-this.$undoStackDepth,c=0;c1?s.multiSelect.joinSelections():s.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(s){s.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(s){s.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(s){s.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],n.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(s){s.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(s){return s&&s.inMultiSelectMode}}];var i=t("../keyboard/hash_handler").HashHandler;n.keyboardHandler=new i(n.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(t,n,u){var i=t("./range_list").RangeList,s=t("./range").Range,d=t("./selection").Selection,o=t("./mouse/multi_select_handler").onMouseDown,l=t("./lib/event"),r=t("./lib/lang"),a=t("./commands/multi_select_commands");n.commands=a.defaultCommands.concat(a.multiSelectCommands);var c=t("./search").Search,p=new c;function h(E,w,y){return p.$options.wrap=!0,p.$options.needle=w,p.$options.backwards=y==-1,p.find(E)}var f=t("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(f.prototype),(function(){this.ranges=null,this.rangeList=null,this.addRange=function(E,w){if(E){if(!this.inMultiSelectMode&&this.rangeCount===0){var y=this.toOrientedRange();if(this.rangeList.add(y),this.rangeList.add(E),this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),w||this.fromOrientedRange(E);this.rangeList.removeAll(),this.rangeList.add(y),this.$onAddRange(y)}E.cursor||(E.cursor=E.end);var A=this.rangeList.add(E);return this.$onAddRange(E),A.length&&this.$onRemoveRange(A),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),w||this.fromOrientedRange(E)}},this.toSingleRange=function(E){E=E||this.ranges[0];var w=this.rangeList.removeAll();w.length&&this.$onRemoveRange(w),E&&this.fromOrientedRange(E)},this.substractPoint=function(E){var w=this.rangeList.substractPoint(E);if(w)return this.$onRemoveRange(w),w[0]},this.mergeOverlappingRanges=function(){var E=this.rangeList.merge();E.length&&this.$onRemoveRange(E)},this.$onAddRange=function(E){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(E),this._signal("addRange",{range:E})},this.$onRemoveRange=function(E){if(this.rangeCount=this.rangeList.ranges.length,this.rangeCount==1&&this.inMultiSelectMode){var w=this.rangeList.ranges.pop();E.push(w),this.rangeCount=0}for(var y=E.length;y--;){var A=this.ranges.indexOf(E[y]);this.ranges.splice(A,1)}this._signal("removeRange",{ranges:E}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),w=w||this.ranges[0],w&&!w.isEqual(this.getRange())&&this.fromOrientedRange(w)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var E=this.ranges.length?this.ranges:[this.getRange()],w=[],y=0;y1){var E=this.rangeList.ranges,w=E[E.length-1],y=s.fromPoints(E[0].start,w.end);this.toSingleRange(),this.setSelectionRange(y,w.cursor==w.start)}else{var A=this.session.documentToScreenPosition(this.cursor),T=this.session.documentToScreenPosition(this.anchor),$=this.rectangularRangeBlock(A,T);$.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(E,w,y){var A=[],T=E.column0;)R--;if(R>0)for(var B=0;A[B].isEmpty();)B++;for(var N=R;N>=B;N--)A[N].isEmpty()&&A.splice(N,1)}return A}}).call(d.prototype);var g=t("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(E){E.cursor||(E.cursor=E.end);var w=this.getSelectionStyle();return E.marker=this.session.addMarker(E,"ace_selection",w),this.session.$selectionMarkers.push(E),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,E},this.removeSelectionMarker=function(E){if(E.marker){this.session.removeMarker(E.marker);var w=this.session.$selectionMarkers.indexOf(E);w!=-1&&this.session.$selectionMarkers.splice(w,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(E){for(var w=this.session.$selectionMarkers,y=E.length;y--;){var A=E[y];if(A.marker){this.session.removeMarker(A.marker);var T=w.indexOf(A);T!=-1&&w.splice(T,1)}}this.session.selectionMarkerCount=w.length},this.$onAddRange=function(E){this.addSelectionMarker(E.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(E){this.removeSelectionMarkers(E.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(E){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(a.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(E){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(a.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(E){var w=E.command,y=E.editor;if(y.multiSelect){if(w.multiSelectAction)w.multiSelectAction=="forEach"?A=y.forEachSelection(w,E.args):w.multiSelectAction=="forEachLine"?A=y.forEachSelection(w,E.args,!0):w.multiSelectAction=="single"?(y.exitMultiSelectMode(),A=w.exec(y,E.args||{})):A=w.multiSelectAction(y,E.args||{});else{var A=w.exec(y,E.args||{});y.multiSelect.addRange(y.multiSelect.toOrientedRange()),y.multiSelect.mergeOverlappingRanges()}return A}},this.forEachSelection=function(E,w,y){if(!this.inVirtualSelectionMode){var A=y&&y.keepOrder,T=y==!0||y&&y.$byLines,$=this.session,M=this.selection,O=M.rangeList,_=(A?M:O).ranges,k;if(!_.length)return E.exec?E.exec(this,w||{}):E(this,w||{});var S=M._eventRegistry;M._eventRegistry={};var C=new d($);this.inVirtualSelectionMode=!0;for(var L=_.length;L--;){if(T)for(;L>0&&_[L].start.row==_[L-1].end.row;)L--;C.fromOrientedRange(_[L]),C.index=L,this.selection=$.selection=C;var I=E.exec?E.exec(this,w||{}):E(this,w||{});!k&&I!==void 0&&(k=I),C.toOrientedRange(_[L])}C.detach(),this.selection=$.selection=M,this.inVirtualSelectionMode=!1,M._eventRegistry=S,M.mergeOverlappingRanges(),M.ranges[0]&&M.fromOrientedRange(M.ranges[0]);var F=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),F&&F.from==F.to&&this.renderer.animateScrolling(F.from),k}},this.exitMultiSelectMode=function(){!this.inMultiSelectMode||this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getSelectedText=function(){var E="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var w=this.multiSelect.rangeList.ranges,y=[],A=0;A0);M<0&&(M=0),O>=k&&(O=k-1)}var C=this.session.removeFullLines(M,O);C=this.$reAlignText(C,_),this.session.insert({row:M,column:0},C.join(` +}`}),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],function(t,n,h){var i=t("../lib/dom"),s=t("../lib/oop"),d=t("../lib/event_emitter").EventEmitter,o=(function(){function l(r,a){this.renderer=a,this.pixelRatio=1,this.maxHeight=a.layerConfig.maxHeight,this.lineHeight=a.layerConfig.lineHeight,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},this.setScrollBarV(r)}return l.prototype.$createCanvas=function(){this.canvas=i.createElement("canvas"),this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7",this.canvas.style.position="absolute"},l.prototype.setScrollBarV=function(r){this.$createCanvas(),this.scrollbarV=r,r.element.appendChild(this.canvas),this.setDimensions()},l.prototype.$updateDecorators=function(r){if(typeof this.canvas.getContext!="function")return;var a=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light;this.setDimensions(r);var c=this.canvas.getContext("2d");function p(k,S){return k.priorityS.priority?1:0}var u=this.renderer.session.$annotations;if(c.clearRect(0,0,this.canvas.width,this.canvas.height),u){var f={info:1,warning:2,error:3};u.forEach(function(k){k.priority=f[k.type]||null}),u=u.sort(p);for(var g=0;gthis.canvasHeight&&(y=this.canvasHeight-A);var T=y-A,x=y+A,M=x-T;c.fillStyle=a[u[g].type]||null,c.fillRect(0,T,Math.round(this.oneZoneWidth-1),M)}}var O=this.renderer.session.selection.getCursor();if(O){var _=Math.round(this.getVerticalOffsetForRow(O.row)*this.heightRatio);c.fillStyle="rgba(0, 0, 0, 0.5)",c.fillRect(0,_,this.canvasWidth,2)}},l.prototype.getVerticalOffsetForRow=function(r){r=r|0;var a=this.renderer.session.documentToScreenRow(r,0)*this.lineHeight;return a},l.prototype.setDimensions=function(r){r=r||this.renderer.layerConfig,this.maxHeight=r.maxHeight,this.lineHeight=r.lineHeight,this.canvasHeight=r.height,this.canvasWidth=this.scrollbarV.width||this.canvasWidth,this.setZoneWidth(),this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.maxHeightM&&(this.$changedLines.firstRow=M),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},x.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},x.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},x.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},x.prototype.updateFull=function(M){M?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},x.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},x.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},x.prototype.onResize=function(M,O,_,k){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=M?1:0;var S=this.container;k||(k=S.clientHeight||S.scrollHeight),!k&&this.$maxLines&&this.lineHeight>1&&(!S.style.height||S.style.height=="0px")&&(S.style.height="1px",k=S.clientHeight||S.scrollHeight),_||(_=S.clientWidth||S.scrollWidth);var C=this.$updateCachedSize(M,O,_,k);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!_&&!k)return this.resizing=0;M&&(this.$gutterLayer.$padding=null),M?this.$renderChanges(C|this.$changes,!0):this.$loop.schedule(C|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},x.prototype.$updateCachedSize=function(M,O,_,k){k-=this.$extraHeight||0;var S=0,C=this.$size,L={width:C.width,height:C.height,scrollerHeight:C.scrollerHeight,scrollerWidth:C.scrollerWidth};if(k&&(M||C.height!=k)&&(C.height=k,S|=this.CHANGE_SIZE,C.scrollerHeight=C.height,this.$horizScroll&&(C.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(C.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",S=S|this.CHANGE_SCROLL),_&&(M||C.width!=_)){S|=this.CHANGE_SIZE,C.width=_,O==null&&(O=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=O,s.setStyle(this.scrollBarH.element.style,"left",O+"px"),s.setStyle(this.scroller.style,"left",O+this.margin.left+"px"),C.scrollerWidth=Math.max(0,_-O-this.scrollBarV.getWidth()-this.margin.h),s.setStyle(this.$gutter.style,"left",this.margin.left+"px");var I=this.scrollBarV.getWidth()+"px";s.setStyle(this.scrollBarH.element.style,"right",I),s.setStyle(this.scroller.style,"right",I),s.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(C.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||M)&&(S|=this.CHANGE_FULL)}return C.$dirty=!_||!k,S&&this._signal("resize",L),S},x.prototype.onGutterResize=function(M){var O=this.$showGutter?M:0;O!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,O,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},x.prototype.adjustWrapLimit=function(){var M=this.$size.scrollerWidth-this.$padding*2,O=Math.floor(M/this.characterWidth);return this.session.adjustWrapLimit(O,this.$showPrintMargin&&this.$printMarginColumn)},x.prototype.setAnimatedScroll=function(M){this.setOption("animatedScroll",M)},x.prototype.getAnimatedScroll=function(){return this.$animatedScroll},x.prototype.setShowInvisibles=function(M){this.setOption("showInvisibles",M),this.session.$bidiHandler.setShowInvisibles(M)},x.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},x.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},x.prototype.setDisplayIndentGuides=function(M){this.setOption("displayIndentGuides",M)},x.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},x.prototype.setHighlightIndentGuides=function(M){this.setOption("highlightIndentGuides",M)},x.prototype.setShowPrintMargin=function(M){this.setOption("showPrintMargin",M)},x.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},x.prototype.setPrintMarginColumn=function(M){this.setOption("printMarginColumn",M)},x.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},x.prototype.getShowGutter=function(){return this.getOption("showGutter")},x.prototype.setShowGutter=function(M){return this.setOption("showGutter",M)},x.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},x.prototype.setFadeFoldWidgets=function(M){this.setOption("fadeFoldWidgets",M)},x.prototype.setHighlightGutterLine=function(M){this.setOption("highlightGutterLine",M)},x.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},x.prototype.$updatePrintMargin=function(){if(!(!this.$showPrintMargin&&!this.$printMarginEl)){if(!this.$printMarginEl){var M=s.createElement("div");M.className="ace_layer ace_print-margin-layer",this.$printMarginEl=s.createElement("div"),this.$printMarginEl.className="ace_print-margin",M.appendChild(this.$printMarginEl),this.content.insertBefore(M,this.content.firstChild)}var O=this.$printMarginEl.style;O.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",O.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},x.prototype.getContainerElement=function(){return this.container},x.prototype.getMouseEventTarget=function(){return this.scroller},x.prototype.getTextAreaContainer=function(){return this.container},x.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var M=this.textarea.style,O=this.$composition;if(!this.$keepTextAreaAtCursor&&!O){s.translate(this.textarea,-100,0);return}var _=this.$cursorLayer.$pixelPos;if(_){O&&O.markerRange&&(_=this.$cursorLayer.getPixelPosition(O.markerRange.start,!0));var k=this.layerConfig,S=_.top,C=_.left;S-=k.offset;var L=O&&O.useTextareaForIME||y.isMobile?this.lineHeight:1;if(S<0||S>k.height-L){s.translate(this.textarea,0,0);return}var I=1,F=this.$size.height-L;if(!O)S+=this.lineHeight;else if(O.useTextareaForIME){var R=this.textarea.value;I=this.characterWidth*this.session.$getStringScreenWidth(R)[0]}else S+=this.lineHeight+2;C-=this.scrollLeft,C>this.$size.scrollerWidth-I&&(C=this.$size.scrollerWidth-I),C+=this.gutterWidth+this.margin.left,s.setStyle(M,"height",L+"px"),s.setStyle(M,"width",I+"px"),s.translate(this.textarea,Math.min(C,this.$size.scrollerWidth-I),Math.min(S,F))}}},x.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},x.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},x.prototype.getLastFullyVisibleRow=function(){var M=this.layerConfig,O=M.lastRow,_=this.session.documentToScreenRow(O,0)*M.lineHeight;return _-this.session.getScrollTop()>M.height-M.lineHeight?O-1:O},x.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},x.prototype.setPadding=function(M){this.$padding=M,this.$textLayer.setPadding(M),this.$cursorLayer.setPadding(M),this.$markerFront.setPadding(M),this.$markerBack.setPadding(M),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},x.prototype.setScrollMargin=function(M,O,_,k){var S=this.scrollMargin;S.top=M|0,S.bottom=O|0,S.right=k|0,S.left=_|0,S.v=S.top+S.bottom,S.h=S.left+S.right,S.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-S.top),this.updateFull()},x.prototype.setMargin=function(M,O,_,k){var S=this.margin;S.top=M|0,S.bottom=O|0,S.right=k|0,S.left=_|0,S.v=S.top+S.bottom,S.h=S.left+S.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},x.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},x.prototype.setHScrollBarAlwaysVisible=function(M){this.setOption("hScrollBarAlwaysVisible",M)},x.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},x.prototype.setVScrollBarAlwaysVisible=function(M){this.setOption("vScrollBarAlwaysVisible",M)},x.prototype.$updateScrollBarV=function(){var M=this.layerConfig.maxHeight,O=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(M-=(O-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>M-O&&(M=this.scrollTop+O,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(M+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},x.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},x.prototype.freeze=function(){this.$frozen=!0},x.prototype.unfreeze=function(){this.$frozen=!1},x.prototype.$renderChanges=function(M,O){if(this.$changes&&(M|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!M&&!O){this.$changes|=M;return}if(this.$size.$dirty)return this.$changes|=M,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",M),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var _=this.layerConfig;if(M&this.CHANGE_FULL||M&this.CHANGE_SIZE||M&this.CHANGE_TEXT||M&this.CHANGE_LINES||M&this.CHANGE_SCROLL||M&this.CHANGE_H_SCROLL){if(M|=this.$computeLayerConfig()|this.$loop.clear(),_.firstRow!=this.layerConfig.firstRow&&_.firstRowScreen==this.layerConfig.firstRowScreen){var k=this.scrollTop+(_.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;k>0&&(this.scrollTop=k,M=M|this.CHANGE_SCROLL,M|=this.$computeLayerConfig()|this.$loop.clear())}_=this.layerConfig,this.$updateScrollBarV(),M&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),s.translate(this.content,-this.scrollLeft,-_.offset);var S=_.width+2*this.$padding+"px",C=_.minHeight+"px";s.setStyle(this.content.style,"width",S),s.setStyle(this.content.style,"height",C)}if(M&this.CHANGE_H_SCROLL&&(s.translate(this.content,-this.scrollLeft,-_.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),M&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(_),this.$showGutter&&this.$gutterLayer.update(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_),this.$markerBack.update(_),this.$markerFront.update(_),this.$cursorLayer.update(_),this.$moveTextAreaToCursor(),this._signal("afterRender",M);return}if(M&this.CHANGE_SCROLL){this.$changedLines=null,M&this.CHANGE_TEXT||M&this.CHANGE_LINES?this.$textLayer.update(_):this.$textLayer.scrollLines(_),this.$showGutter&&(M&this.CHANGE_GUTTER||M&this.CHANGE_LINES?this.$gutterLayer.update(_):this.$gutterLayer.scrollLines(_)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_),this.$markerBack.update(_),this.$markerFront.update(_),this.$cursorLayer.update(_),this.$moveTextAreaToCursor(),this._signal("afterRender",M);return}M&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(_),this.$showGutter&&this.$gutterLayer.update(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_)):M&this.CHANGE_LINES?((this.$updateLines()||M&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_)):M&this.CHANGE_TEXT||M&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_)):M&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(_),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(_)),M&this.CHANGE_CURSOR&&(this.$cursorLayer.update(_),this.$moveTextAreaToCursor()),M&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(_),M&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(_),this._signal("afterRender",M)},x.prototype.$autosize=function(){var M=this.session.getScreenLength()*this.lineHeight,O=this.$maxLines*this.lineHeight,_=Math.min(O,Math.max((this.$minLines||1)*this.lineHeight,M))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(_+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&_>this.$maxPixelHeight&&(_=this.$maxPixelHeight);var k=_<=2*this.lineHeight,S=!k&&M>O;if(_!=this.desiredHeight||this.$size.height!=this.desiredHeight||S!=this.$vScroll){S!=this.$vScroll&&(this.$vScroll=S,this.scrollBarV.setVisible(S));var C=this.container.clientWidth;this.container.style.height=_+"px",this.$updateCachedSize(!0,this.$gutterWidth,C,_),this.desiredHeight=_,this._signal("autosize")}},x.prototype.$computeLayerConfig=function(){var M=this.session,O=this.$size,_=O.height<=2*this.lineHeight,k=this.session.getScreenLength(),S=k*this.lineHeight,C=this.$getLongestLine(),L=!_&&(this.$hScrollBarAlwaysVisible||O.scrollerWidth-C-2*this.$padding<0),I=this.$horizScroll!==L;I&&(this.$horizScroll=L,this.scrollBarH.setVisible(L));var F=this.$vScroll;this.$maxLines&&this.lineHeight>1&&(this.$autosize(),_=O.height<=2*this.lineHeight);var R=O.scrollerHeight+this.lineHeight,B=!this.$maxLines&&this.$scrollPastEnd?(O.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;S+=B;var N=this.scrollMargin;this.session.setScrollTop(Math.max(-N.top,Math.min(this.scrollTop,S-O.scrollerHeight+N.bottom))),this.session.setScrollLeft(Math.max(-N.left,Math.min(this.scrollLeft,C+2*this.$padding-O.scrollerWidth+N.right)));var z=!_&&(this.$vScrollBarAlwaysVisible||O.scrollerHeight-S+B<0||this.scrollTop>N.top),W=F!==z;W&&(this.$vScroll=z,this.scrollBarV.setVisible(z));var j=this.scrollTop%this.lineHeight,U=Math.ceil(R/this.lineHeight)-1,K=Math.max(0,Math.round((this.scrollTop-j)/this.lineHeight)),J=K+U,Y,X,q=this.lineHeight;K=M.screenToDocumentRow(K,0);var ne=M.getFoldLine(K);ne&&(K=ne.start.row),Y=M.documentToScreenRow(K,0),X=M.getRowLength(K)*q,J=Math.min(M.screenToDocumentRow(J,0),M.getLength()-1),R=O.scrollerHeight+M.getRowLength(J)*q+X,j=this.scrollTop-Y*q,j<0&&Y>0&&(Y=Math.max(0,Y+Math.floor(j/q)),j=this.scrollTop-Y*q);var ue=0;return(this.layerConfig.width!=C||I)&&(ue=this.CHANGE_H_SCROLL),(I||W)&&(ue|=this.$updateCachedSize(!0,this.gutterWidth,O.width,O.height),this._signal("scrollbarVisibilityChanged"),W&&(C=this.$getLongestLine())),this.layerConfig={width:C,padding:this.$padding,firstRow:K,firstRowScreen:Y,lastRow:J,lineHeight:q,characterWidth:this.characterWidth,minHeight:R,maxHeight:S,offset:j,gutterOffset:q?Math.max(0,Math.ceil((j+O.height-O.scrollerHeight)/q)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(C-this.$padding),ue},x.prototype.$updateLines=function(){if(this.$changedLines){var M=this.$changedLines.firstRow,O=this.$changedLines.lastRow;this.$changedLines=null;var _=this.layerConfig;if(!(M>_.lastRow+1)&&!(O<_.firstRow)){if(O===1/0){this.$showGutter&&this.$gutterLayer.update(_),this.$textLayer.update(_);return}return this.$textLayer.updateLines(_,M,O),!0}}},x.prototype.$getLongestLine=function(){var M=this.session.getScreenWidth();return this.showInvisibles&&!this.session.$useWrapMode&&(M+=1),this.$textLayer&&M>this.$textLayer.MAX_LINE_LENGTH&&(M=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(M*this.characterWidth))},x.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},x.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},x.prototype.addGutterDecoration=function(M,O){this.$gutterLayer.addGutterDecoration(M,O)},x.prototype.removeGutterDecoration=function(M,O){this.$gutterLayer.removeGutterDecoration(M,O)},x.prototype.updateBreakpoints=function(M){this._rows=M,this.$loop.schedule(this.CHANGE_GUTTER)},x.prototype.setAnnotations=function(M){this.$gutterLayer.setAnnotations(M),this.$loop.schedule(this.CHANGE_GUTTER)},x.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},x.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},x.prototype.showCursor=function(){this.$cursorLayer.showCursor()},x.prototype.scrollSelectionIntoView=function(M,O,_){this.scrollCursorIntoView(M,_),this.scrollCursorIntoView(O,_)},x.prototype.scrollCursorIntoView=function(M,O,_){if(this.$size.scrollerHeight!==0){var k=this.$cursorLayer.getPixelPosition(M),S=k.left,C=k.top,L=_&&_.top||0,I=_&&_.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var F=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;F+L>C?(O&&F+L>C+this.lineHeight&&(C-=O*this.$size.scrollerHeight),C===0&&(C=-this.scrollMargin.top),this.session.setScrollTop(C)):F+this.$size.scrollerHeight-I=1-this.scrollMargin.top||O>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||M<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||M>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},x.prototype.pixelToScreenCoordinates=function(M,O){var _;if(this.$hasCssTransforms){_={top:0,left:0};var k=this.$fontMetrics.transformCoordinates([M,O]);M=k[1]-this.gutterWidth-this.margin.left,O=k[0]}else _=this.scroller.getBoundingClientRect();var S=M+this.scrollLeft-_.left-this.$padding,C=S/this.characterWidth,L=Math.floor((O+this.scrollTop-_.top)/this.lineHeight),I=this.$blockCursor?Math.floor(C):Math.round(C);return{row:L,column:I,side:C-I>0?1:-1,offsetX:S}},x.prototype.screenToTextCoordinates=function(M,O){var _;if(this.$hasCssTransforms){_={top:0,left:0};var k=this.$fontMetrics.transformCoordinates([M,O]);M=k[1]-this.gutterWidth-this.margin.left,O=k[0]}else _=this.scroller.getBoundingClientRect();var S=M+this.scrollLeft-_.left-this.$padding,C=S/this.characterWidth,L=this.$blockCursor?Math.floor(C):Math.round(C),I=Math.floor((O+this.scrollTop-_.top)/this.lineHeight);return this.session.screenToDocumentPosition(I,Math.max(L,0),S)},x.prototype.textToScreenCoordinates=function(M,O){var _=this.scroller.getBoundingClientRect(),k=this.session.documentToScreenPosition(M,O),S=this.$padding+(this.session.$bidiHandler.isBidiRow(k.row,M)?this.session.$bidiHandler.getPosLeft(k.column):Math.round(k.column*this.characterWidth)),C=k.row*this.lineHeight;return{pageX:_.left+S-this.scrollLeft,pageY:_.top+C-this.scrollTop}},x.prototype.visualizeFocus=function(){s.addCssClass(this.container,"ace_focus")},x.prototype.visualizeBlur=function(){s.removeCssClass(this.container,"ace_focus")},x.prototype.showComposition=function(M){this.$composition=M,M.cssText||(M.cssText=this.textarea.style.cssText),M.useTextareaForIME==null&&(M.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(s.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):M.markerId=this.session.addMarker(M.markerRange,"ace_composition_marker","text")},x.prototype.setCompositionText=function(M){var O=this.session.selection.cursor;this.addToken(M,"composition_placeholder",O.row,O.column),this.$moveTextAreaToCursor()},x.prototype.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),s.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var M=this.session.selection.cursor;this.removeExtraToken(M.row,M.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},x.prototype.setGhostText=function(M,O){var _=this.session.selection.cursor,k=O||{row:_.row,column:_.column};this.removeGhostText();var S=this.$calculateWrappedTextChunks(M,k);this.addToken(S[0].text,"ghost_text",k.row,k.column),this.$ghostText={text:M,position:{row:k.row,column:k.column}};var C=s.createElement("div");if(S.length>1){var L=this.hideTokensAfterPosition(k.row,k.column),I;S.slice(1).forEach(function(W){var j=s.createElement("div"),U=s.createElement("span");U.className="ace_ghost_text",W.wrapped&&(j.className="ghost_text_line_wrapped"),W.text.length===0&&(W.text=" "),U.appendChild(s.createTextNode(W.text)),j.appendChild(U),C.appendChild(j),I=j}),L.forEach(function(W){var j=s.createElement("span");A(W.type)||(j.className="ace_"+W.type.replace(/\./g," ace_")),j.appendChild(s.createTextNode(W.value)),I.appendChild(j)}),this.$ghostTextWidget={el:C,row:k.row,column:k.column,className:"ace_ghost_text_container"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget);var F=this.$cursorLayer.getPixelPosition(k,!0),R=this.container,B=R.getBoundingClientRect().height,N=S.length*this.lineHeight,z=N0){var R=0;F.push(S[L].length);for(var B=0;B1||Math.abs(M.$size.height-k)>1?M.$resizeTimer.delay():M.$resizeTimer.cancel()}),this.$resizeObserver.observe(this.container)}},x})();T.prototype.CHANGE_CURSOR=1,T.prototype.CHANGE_MARKER=2,T.prototype.CHANGE_GUTTER=4,T.prototype.CHANGE_SCROLL=8,T.prototype.CHANGE_LINES=16,T.prototype.CHANGE_TEXT=32,T.prototype.CHANGE_SIZE=64,T.prototype.CHANGE_MARKER_BACK=128,T.prototype.CHANGE_MARKER_FRONT=256,T.prototype.CHANGE_FULL=512,T.prototype.CHANGE_H_SCROLL=1024,T.prototype.$changes=0,T.prototype.$padding=null,T.prototype.$frozen=!1,T.prototype.STEPS=8,i.implement(T.prototype,D),o.defineOptions(T.prototype,"renderer",{useResizeObserver:{set:function(x){!x&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):x&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(x){this.$textLayer.setShowInvisibles(x)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(x){typeof x=="number"&&(this.$printMarginColumn=x),this.$showPrintMargin=!!x,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(x){this.$gutter.style.display=x?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(x){this.$gutterLayer.$useSvgGutterIcons=x},initialValue:!1},showFoldedAnnotations:{set:function(x){this.$gutterLayer.$showFoldedAnnotations=x},initialValue:!1},fadeFoldWidgets:{set:function(x){s.setCssClass(this.$gutter,"ace_fade-fold-widgets",x)},initialValue:!1},showFoldWidgets:{set:function(x){this.$gutterLayer.setShowFoldWidgets(x),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(x){this.$textLayer.setDisplayIndentGuides(x)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(x){this.$textLayer.setHighlightIndentGuides(x)==!0?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(x){this.$gutterLayer.setHighlightGutterLine(x),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(x){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(x){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(x){typeof x=="number"&&(x=x+"px"),this.container.style.fontSize=x,this.updateFontSize()},initialValue:12},fontFamily:{set:function(x){this.container.style.fontFamily=x,this.updateFontSize()}},maxLines:{set:function(x){this.updateFull()}},minLines:{set:function(x){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(x){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(x){x=+x||0,this.$scrollPastEnd!=x&&(this.$scrollPastEnd=x,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(x){this.$gutterLayer.$fixedWidth=!!x,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(x){this.$updateCustomScrollbar(x)},initialValue:!1},theme:{set:function(x){this.setTheme(x)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!y.isMobile&&!y.isIE}}),n.VirtualRenderer=T}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(t,n,h){var i=t("../lib/oop"),s=t("../lib/net"),d=t("../lib/event_emitter").EventEmitter,o=t("../config");function l(p){var u="importScripts('"+s.qualifyURL(p)+"');";try{return new Blob([u],{type:"application/javascript"})}catch{var f=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,g=new f;return g.append(u),g.getBlob("application/javascript")}}function r(p){if(typeof Worker>"u")return{postMessage:function(){},terminate:function(){}};if(o.get("loadWorkerFromBlob")){var u=l(p),f=window.URL||window.webkitURL,g=f.createObjectURL(u);return new Worker(g)}return new Worker(p)}var a=function(p){p.postMessage||(p=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=p,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){i.implement(this,d),this.$createWorkerFromOldConfig=function(p,u,f,g,v){if(t.nameToUrl&&!t.toUrl&&(t.toUrl=t.nameToUrl),o.get("packaged")||!t.toUrl)g=g||o.moduleUrl(u,"worker");else{var b=this.$normalizePath;g=g||b(t.toUrl("ace/worker/worker.js",null,"_"));var D={};p.forEach(function(E){D[E]=b(t.toUrl(E,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}return this.$worker=r(g),v&&this.send("importScripts",v),this.$worker.postMessage({init:!0,tlns:D,module:u,classname:f}),this.$worker},this.onMessage=function(p){var u=p.data;switch(u.type){case"event":this._signal(u.name,{data:u.data});break;case"call":var f=this.callbacks[u.id];f&&(f(u.data),delete this.callbacks[u.id]);break;case"error":this.reportError(u.data);break;case"log":window.console&&console.log&&console.log.apply(console,u.data);break}},this.reportError=function(p){window.console&&console.error&&console.error(p)},this.$normalizePath=function(p){return s.qualifyURL(p)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(p){p.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(p,u){this.$worker.postMessage({command:p,args:u})},this.call=function(p,u,f){if(f){var g=this.callbackId++;this.callbacks[g]=f,u.push(g)}this.send(p,u)},this.emit=function(p,u){try{u.data&&u.data.err&&(u.data.err={message:u.data.err.message,stack:u.data.err.stack,code:u.data.err.code}),this.$worker&&this.$worker.postMessage({event:p,data:{data:u.data}})}catch(f){console.error(f.stack)}},this.attachToDocument=function(p){this.$doc&&this.terminate(),this.$doc=p,this.call("setValue",[p.getValue()]),p.on("change",this.changeListener,!0)},this.changeListener=function(p){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),p.action=="insert"?this.deltaQueue.push(p.start,p.lines):this.deltaQueue.push(p.start,p.end)},this.$sendDeltaQueue=function(){var p=this.deltaQueue;p&&(this.deltaQueue=null,p.length>50&&p.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:p}))}}).call(a.prototype);var c=function(p,u,f){var g=null,v=!1,b=Object.create(d),D=[],E=new a({messageBuffer:D,terminate:function(){},postMessage:function(y){D.push(y),g&&(v?setTimeout(w):w())}});E.setEmitSync=function(y){v=y};var w=function(){var y=D.shift();y.command?g[y.command].apply(g,y.args):y.event&&b._signal(y.event,y.data)};return b.postMessage=function(y){E.onMessage({data:y})},b.callback=function(y,A){this.postMessage({type:"call",id:A,data:y})},b.emit=function(y,A){this.postMessage({type:"event",name:y,data:A})},o.loadModule(["worker",u],function(y){for(g=new y[f](b);D.length;)w()}),E};n.UIWorkerClient=c,n.WorkerClient=a,n.createWorker=r}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(t,n,h){var i=t("./range").Range,s=t("./lib/event_emitter").EventEmitter,d=t("./lib/oop"),o=(function(){function l(r,a,c,p,u,f){var g=this;this.length=a,this.session=r,this.doc=r.getDocument(),this.mainClass=u,this.othersClass=f,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=p,this.$onCursorChange=function(){setTimeout(function(){g.onCursorChange()})},this.$pos=c;var v=r.getUndoManager().$undoStack||r.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=v.length,this.setup(),r.selection.on("changeCursor",this.$onCursorChange)}return l.prototype.setup=function(){var r=this,a=this.doc,c=this.session;this.selectionBefore=c.selection.toJSON(),c.selection.inMultiSelectMode&&c.selection.toSingleRange(),this.pos=a.createAnchor(this.$pos.row,this.$pos.column);var p=this.pos;p.$insertRight=!0,p.detach(),p.markerId=c.addMarker(new i(p.row,p.column,p.row,p.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(u){var f=a.createAnchor(u.row,u.column);f.$insertRight=!0,f.detach(),r.others.push(f)}),c.setUndoSelect(!1)},l.prototype.showOtherMarkers=function(){if(!this.othersActive){var r=this.session,a=this;this.othersActive=!0,this.others.forEach(function(c){c.markerId=r.addMarker(new i(c.row,c.column,c.row,c.column+a.length),a.othersClass,null,!1)})}},l.prototype.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var r=0;r=this.pos.column&&a.start.column<=this.pos.column+this.length+1,u=a.start.column-this.pos.column;if(this.updateAnchors(r),p&&(this.length+=c),p&&!this.session.$fromUndo){if(r.action==="insert")for(var f=this.others.length-1;f>=0;f--){var g=this.others[f],v={row:g.row,column:g.column+u};this.doc.insertMergedLines(v,r.lines)}else if(r.action==="remove")for(var f=this.others.length-1;f>=0;f--){var g=this.others[f],v={row:g.row,column:g.column+u};this.doc.remove(new i(v.row,v.column,v.row,v.column-c))}}this.$updating=!1,this.updateMarkers()}},l.prototype.updateAnchors=function(r){this.pos.onChange(r);for(var a=this.others.length;a--;)this.others[a].onChange(r);this.updateMarkers()},l.prototype.updateMarkers=function(){if(!this.$updating){var r=this,a=this.session,c=function(u,f){a.removeMarker(u.markerId),u.markerId=a.addMarker(new i(u.row,u.column,u.row,u.column+r.length),f,null,!1)};c(this.pos,this.mainClass);for(var p=this.others.length;p--;)c(this.others[p],this.othersClass)}},l.prototype.onCursorChange=function(r){if(!(this.$updating||!this.session)){var a=this.session.selection.getCursor();a.row===this.pos.row&&a.column>=this.pos.column&&a.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",r)):(this.hideOtherMarkers(),this._emit("cursorLeave",r))}},l.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},l.prototype.cancel=function(){if(this.$undoStackDepth!==-1){for(var r=this.session.getUndoManager(),a=(r.$undoStack||r.$undostack).length-this.$undoStackDepth,c=0;c1?s.multiSelect.joinSelections():s.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(s){s.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(s){s.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(s){s.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],n.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(s){s.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(s){return s&&s.inMultiSelectMode}}];var i=t("../keyboard/hash_handler").HashHandler;n.keyboardHandler=new i(n.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(t,n,h){var i=t("./range_list").RangeList,s=t("./range").Range,d=t("./selection").Selection,o=t("./mouse/multi_select_handler").onMouseDown,l=t("./lib/event"),r=t("./lib/lang"),a=t("./commands/multi_select_commands");n.commands=a.defaultCommands.concat(a.multiSelectCommands);var c=t("./search").Search,p=new c;function u(E,w,y){return p.$options.wrap=!0,p.$options.needle=w,p.$options.backwards=y==-1,p.find(E)}var f=t("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(f.prototype),(function(){this.ranges=null,this.rangeList=null,this.addRange=function(E,w){if(E){if(!this.inMultiSelectMode&&this.rangeCount===0){var y=this.toOrientedRange();if(this.rangeList.add(y),this.rangeList.add(E),this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),w||this.fromOrientedRange(E);this.rangeList.removeAll(),this.rangeList.add(y),this.$onAddRange(y)}E.cursor||(E.cursor=E.end);var A=this.rangeList.add(E);return this.$onAddRange(E),A.length&&this.$onRemoveRange(A),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),w||this.fromOrientedRange(E)}},this.toSingleRange=function(E){E=E||this.ranges[0];var w=this.rangeList.removeAll();w.length&&this.$onRemoveRange(w),E&&this.fromOrientedRange(E)},this.substractPoint=function(E){var w=this.rangeList.substractPoint(E);if(w)return this.$onRemoveRange(w),w[0]},this.mergeOverlappingRanges=function(){var E=this.rangeList.merge();E.length&&this.$onRemoveRange(E)},this.$onAddRange=function(E){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(E),this._signal("addRange",{range:E})},this.$onRemoveRange=function(E){if(this.rangeCount=this.rangeList.ranges.length,this.rangeCount==1&&this.inMultiSelectMode){var w=this.rangeList.ranges.pop();E.push(w),this.rangeCount=0}for(var y=E.length;y--;){var A=this.ranges.indexOf(E[y]);this.ranges.splice(A,1)}this._signal("removeRange",{ranges:E}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),w=w||this.ranges[0],w&&!w.isEqual(this.getRange())&&this.fromOrientedRange(w)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var E=this.ranges.length?this.ranges:[this.getRange()],w=[],y=0;y1){var E=this.rangeList.ranges,w=E[E.length-1],y=s.fromPoints(E[0].start,w.end);this.toSingleRange(),this.setSelectionRange(y,w.cursor==w.start)}else{var A=this.session.documentToScreenPosition(this.cursor),T=this.session.documentToScreenPosition(this.anchor),x=this.rectangularRangeBlock(A,T);x.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(E,w,y){var A=[],T=E.column0;)R--;if(R>0)for(var B=0;A[B].isEmpty();)B++;for(var N=R;N>=B;N--)A[N].isEmpty()&&A.splice(N,1)}return A}}).call(d.prototype);var g=t("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(E){E.cursor||(E.cursor=E.end);var w=this.getSelectionStyle();return E.marker=this.session.addMarker(E,"ace_selection",w),this.session.$selectionMarkers.push(E),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,E},this.removeSelectionMarker=function(E){if(E.marker){this.session.removeMarker(E.marker);var w=this.session.$selectionMarkers.indexOf(E);w!=-1&&this.session.$selectionMarkers.splice(w,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(E){for(var w=this.session.$selectionMarkers,y=E.length;y--;){var A=E[y];if(A.marker){this.session.removeMarker(A.marker);var T=w.indexOf(A);T!=-1&&w.splice(T,1)}}this.session.selectionMarkerCount=w.length},this.$onAddRange=function(E){this.addSelectionMarker(E.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(E){this.removeSelectionMarkers(E.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(E){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(a.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(E){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(a.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(E){var w=E.command,y=E.editor;if(y.multiSelect){if(w.multiSelectAction)w.multiSelectAction=="forEach"?A=y.forEachSelection(w,E.args):w.multiSelectAction=="forEachLine"?A=y.forEachSelection(w,E.args,!0):w.multiSelectAction=="single"?(y.exitMultiSelectMode(),A=w.exec(y,E.args||{})):A=w.multiSelectAction(y,E.args||{});else{var A=w.exec(y,E.args||{});y.multiSelect.addRange(y.multiSelect.toOrientedRange()),y.multiSelect.mergeOverlappingRanges()}return A}},this.forEachSelection=function(E,w,y){if(!this.inVirtualSelectionMode){var A=y&&y.keepOrder,T=y==!0||y&&y.$byLines,x=this.session,M=this.selection,O=M.rangeList,_=(A?M:O).ranges,k;if(!_.length)return E.exec?E.exec(this,w||{}):E(this,w||{});var S=M._eventRegistry;M._eventRegistry={};var C=new d(x);this.inVirtualSelectionMode=!0;for(var L=_.length;L--;){if(T)for(;L>0&&_[L].start.row==_[L-1].end.row;)L--;C.fromOrientedRange(_[L]),C.index=L,this.selection=x.selection=C;var I=E.exec?E.exec(this,w||{}):E(this,w||{});!k&&I!==void 0&&(k=I),C.toOrientedRange(_[L])}C.detach(),this.selection=x.selection=M,this.inVirtualSelectionMode=!1,M._eventRegistry=S,M.mergeOverlappingRanges(),M.ranges[0]&&M.fromOrientedRange(M.ranges[0]);var F=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),F&&F.from==F.to&&this.renderer.animateScrolling(F.from),k}},this.exitMultiSelectMode=function(){!this.inMultiSelectMode||this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getSelectedText=function(){var E="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var w=this.multiSelect.rangeList.ranges,y=[],A=0;A0);M<0&&(M=0),O>=k&&(O=k-1)}var C=this.session.removeFullLines(M,O);C=this.$reAlignText(C,_),this.session.insert({row:M,column:0},C.join(` `)+` -`),_||($.start.column=0,$.end.column=C[C.length-1].length),this.selection.setRange($)}else{T.forEach(function(R){w.substractPoint(R.cursor)});var L=0,I=1/0,F=y.map(function(R){var B=R.cursor,N=E.getLine(B.row),H=N.substr(B.column).search(/\S/g);return H==-1&&(H=0),B.column>L&&(L=B.column),HW?E.insert(N,r.stringRepeat(" ",H-W)):E.remove(new s(N.row,N.column,N.row,N.column-H+W)),R.start.column=R.end.column=L,R.start.row=R.end.row=N.row,R.cursor=R.end}),w.fromOrientedRange(y[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(E,w){var y=!0,A=!0,T,$,M;return E.map(function(C){var L=C.match(/(\s*)(.*?)(\s*)([=:].*)/);return L?T==null?(T=L[1].length,$=L[2].length,M=L[3].length,L):(T+$+M!=L[1].length+L[2].length+L[3].length&&(A=!1),T!=L[1].length&&(y=!1),T>L[1].length&&(T=L[1].length),$L[3].length&&(M=L[3].length),L):[C]}).map(w?_:y?A?k:_:S);function O(C){return r.stringRepeat(" ",C)}function _(C){return C[2]?O(T)+C[2]+O($-C[2].length+M)+C[4].replace(/^([=:])\s+/,"$1 "):C[0]}function k(C){return C[2]?O(T+$-C[2].length)+C[2]+O(M)+C[4].replace(/^([=:])\s+/,"$1 "):C[0]}function S(C){return C[2]?O(T)+C[2]+O(M)+C[4].replace(/^([=:])\s+/,"$1 "):C[0]}}}).call(g.prototype);function v(E,w){return E.row==w.row&&E.column==w.column}n.onSessionChange=function(E){var w=E.session;w&&!w.multiSelect&&(w.$selectionMarkers=[],w.selection.$initRangeList(),w.multiSelect=w.selection),this.multiSelect=w&&w.multiSelect;var y=E.oldSession;y&&(y.multiSelect.off("addRange",this.$onAddRange),y.multiSelect.off("removeRange",this.$onRemoveRange),y.multiSelect.off("multiSelect",this.$onMultiSelect),y.multiSelect.off("singleSelect",this.$onSingleSelect),y.multiSelect.lead.off("change",this.$checkMultiselectChange),y.multiSelect.anchor.off("change",this.$checkMultiselectChange)),w&&(w.multiSelect.on("addRange",this.$onAddRange),w.multiSelect.on("removeRange",this.$onRemoveRange),w.multiSelect.on("multiSelect",this.$onMultiSelect),w.multiSelect.on("singleSelect",this.$onSingleSelect),w.multiSelect.lead.on("change",this.$checkMultiselectChange),w.multiSelect.anchor.on("change",this.$checkMultiselectChange)),w&&this.inMultiSelectMode!=w.selection.inMultiSelectMode&&(w.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())};function b(E){E.$multiselectOnSessionChange||(E.$onAddRange=E.$onAddRange.bind(E),E.$onRemoveRange=E.$onRemoveRange.bind(E),E.$onMultiSelect=E.$onMultiSelect.bind(E),E.$onSingleSelect=E.$onSingleSelect.bind(E),E.$multiselectOnSessionChange=n.onSessionChange.bind(E),E.$checkMultiselectChange=E.$checkMultiselectChange.bind(E),E.$multiselectOnSessionChange(E),E.on("changeSession",E.$multiselectOnSessionChange),E.on("mousedown",o),E.commands.addCommands(a.defaultCommands),D(E))}function D(E){if(!E.textInput)return;var w=E.textInput.getElement(),y=!1;l.addListener(w,"keydown",function(T){var $=T.keyCode==18&&!(T.ctrlKey||T.shiftKey||T.metaKey);E.$blockSelectEnabled&&$?y||(E.renderer.setMouseCursor("crosshair"),y=!0):y&&A()},E),l.addListener(w,"keyup",A,E),l.addListener(w,"blur",A,E);function A(T){y&&(E.renderer.setMouseCursor(""),y=!1)}}n.MultiSelect=b,t("./config").defineOptions(g.prototype,"editor",{enableMultiselect:{set:function(E){b(this),E?this.on("mousedown",o):this.off("mousedown",o)},value:!0},enableBlockSelect:{set:function(E){this.$blockSelectEnabled=E},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(t,n,u){var i=t("../../range").Range,s=n.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(d,o,l){var r=d.getLine(l);return this.foldingStartMarker.test(r)?"start":o=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(d,o,l){return null},this.indentationBlock=function(d,o,l){var r=/\S/,a=d.getLine(o),c=a.search(r);if(c!=-1){for(var p=l||a.length,h=d.getLength(),f=o,g=o;++of){var D=d.getLine(g).length;return new i(f,p,g,D)}}},this.openingBracketBlock=function(d,o,l,r,a){var c={row:l,column:r+1},p=d.$findClosingBracket(o,c,a);if(p){var h=d.foldWidgets[p.row];return h==null&&(h=d.getFoldWidget(p.row)),h=="start"&&p.row>c.row&&(p.row--,p.column=d.getLine(p.row).length),i.fromPoints(c,p)}},this.closingBracketBlock=function(d,o,l,r,a){var c={row:l,column:r},p=d.$findOpeningBracket(o,c);if(p)return p.column++,c.column--,i.fromPoints(p,c)}}).call(s.prototype)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/lib/dom","ace/range","ace/config"],function(t,n,u){var i=t("../lib/dom"),s=t("../range").Range,d=t("../config").nls;function o(r,a,c){for(var p=0,h=r.length-1;p<=h;){var f=p+h>>1,g=c(a,r[f]);if(g>0)p=f+1;else if(g<0)h=f-1;else return f}return-(p+1)}function l(r,a,c){var p=r.getAnnotations().sort(s.comparePoints);if(p.length){var h=o(p,{row:a,column:-1},s.comparePoints);h<0&&(h=-h-1),h>=p.length?h=c>0?0:p.length-1:h===0&&c<0&&(h=p.length-1);var f=p[h];if(!(!f||!c)){if(f.row===a){do f=p[h+=c];while(f&&f.row===a);if(!f)return p.slice()}var g=[];a=f.row;do g[c<0?"unshift":"push"](f),f=p[h+=c];while(f&&f.row==a);return g.length&&g}}}n.showErrorMarker=function(r,a){var c=r.session,p=r.getCursorPosition(),h=p.row,f=c.widgetManager.getWidgetsAtRow(h).filter(function(T){return T.type=="errorMarker"})[0];f?f.destroy():h-=a;var g=l(c,h,a),v;if(g){var b=g[0];p.column=(b.pos&&typeof b.column!="number"?b.pos.sc:b.column)||0,p.row=b.row,v=r.renderer.$gutterLayer.$annotations[p.row]}else{if(f)return;v={displayText:[d("error-marker.good-state","Looks good!")],className:"ace_ok"}}r.session.unfold(p.row),r.selection.moveToPosition(p);var D={row:p.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},E=D.el.appendChild(i.createElement("div")),w=D.el.appendChild(i.createElement("div"));w.className="error_widget_arrow "+v.className;var y=r.renderer.$cursorLayer.getPixelPosition(p).left;w.style.left=y+r.renderer.gutterWidth-5+"px",D.el.className="error_widget_wrapper",E.className="error_widget "+v.className,v.displayText.forEach(function(T,$){E.appendChild(i.createTextNode(T)),$L&&(L=B.column),zW?E.insert(N,r.stringRepeat(" ",z-W)):E.remove(new s(N.row,N.column,N.row,N.column-z+W)),R.start.column=R.end.column=L,R.start.row=R.end.row=N.row,R.cursor=R.end}),w.fromOrientedRange(y[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(E,w){var y=!0,A=!0,T,x,M;return E.map(function(C){var L=C.match(/(\s*)(.*?)(\s*)([=:].*)/);return L?T==null?(T=L[1].length,x=L[2].length,M=L[3].length,L):(T+x+M!=L[1].length+L[2].length+L[3].length&&(A=!1),T!=L[1].length&&(y=!1),T>L[1].length&&(T=L[1].length),xL[3].length&&(M=L[3].length),L):[C]}).map(w?_:y?A?k:_:S);function O(C){return r.stringRepeat(" ",C)}function _(C){return C[2]?O(T)+C[2]+O(x-C[2].length+M)+C[4].replace(/^([=:])\s+/,"$1 "):C[0]}function k(C){return C[2]?O(T+x-C[2].length)+C[2]+O(M)+C[4].replace(/^([=:])\s+/,"$1 "):C[0]}function S(C){return C[2]?O(T)+C[2]+O(M)+C[4].replace(/^([=:])\s+/,"$1 "):C[0]}}}).call(g.prototype);function v(E,w){return E.row==w.row&&E.column==w.column}n.onSessionChange=function(E){var w=E.session;w&&!w.multiSelect&&(w.$selectionMarkers=[],w.selection.$initRangeList(),w.multiSelect=w.selection),this.multiSelect=w&&w.multiSelect;var y=E.oldSession;y&&(y.multiSelect.off("addRange",this.$onAddRange),y.multiSelect.off("removeRange",this.$onRemoveRange),y.multiSelect.off("multiSelect",this.$onMultiSelect),y.multiSelect.off("singleSelect",this.$onSingleSelect),y.multiSelect.lead.off("change",this.$checkMultiselectChange),y.multiSelect.anchor.off("change",this.$checkMultiselectChange)),w&&(w.multiSelect.on("addRange",this.$onAddRange),w.multiSelect.on("removeRange",this.$onRemoveRange),w.multiSelect.on("multiSelect",this.$onMultiSelect),w.multiSelect.on("singleSelect",this.$onSingleSelect),w.multiSelect.lead.on("change",this.$checkMultiselectChange),w.multiSelect.anchor.on("change",this.$checkMultiselectChange)),w&&this.inMultiSelectMode!=w.selection.inMultiSelectMode&&(w.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())};function b(E){E.$multiselectOnSessionChange||(E.$onAddRange=E.$onAddRange.bind(E),E.$onRemoveRange=E.$onRemoveRange.bind(E),E.$onMultiSelect=E.$onMultiSelect.bind(E),E.$onSingleSelect=E.$onSingleSelect.bind(E),E.$multiselectOnSessionChange=n.onSessionChange.bind(E),E.$checkMultiselectChange=E.$checkMultiselectChange.bind(E),E.$multiselectOnSessionChange(E),E.on("changeSession",E.$multiselectOnSessionChange),E.on("mousedown",o),E.commands.addCommands(a.defaultCommands),D(E))}function D(E){if(!E.textInput)return;var w=E.textInput.getElement(),y=!1;l.addListener(w,"keydown",function(T){var x=T.keyCode==18&&!(T.ctrlKey||T.shiftKey||T.metaKey);E.$blockSelectEnabled&&x?y||(E.renderer.setMouseCursor("crosshair"),y=!0):y&&A()},E),l.addListener(w,"keyup",A,E),l.addListener(w,"blur",A,E);function A(T){y&&(E.renderer.setMouseCursor(""),y=!1)}}n.MultiSelect=b,t("./config").defineOptions(g.prototype,"editor",{enableMultiselect:{set:function(E){b(this),E?this.on("mousedown",o):this.off("mousedown",o)},value:!0},enableBlockSelect:{set:function(E){this.$blockSelectEnabled=E},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(t,n,h){var i=t("../../range").Range,s=n.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(d,o,l){var r=d.getLine(l);return this.foldingStartMarker.test(r)?"start":o=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(d,o,l){return null},this.indentationBlock=function(d,o,l){var r=/\S/,a=d.getLine(o),c=a.search(r);if(c!=-1){for(var p=l||a.length,u=d.getLength(),f=o,g=o;++of){var D=d.getLine(g).length;return new i(f,p,g,D)}}},this.openingBracketBlock=function(d,o,l,r,a){var c={row:l,column:r+1},p=d.$findClosingBracket(o,c,a);if(p){var u=d.foldWidgets[p.row];return u==null&&(u=d.getFoldWidget(p.row)),u=="start"&&p.row>c.row&&(p.row--,p.column=d.getLine(p.row).length),i.fromPoints(c,p)}},this.closingBracketBlock=function(d,o,l,r,a){var c={row:l,column:r},p=d.$findOpeningBracket(o,c);if(p)return p.column++,c.column--,i.fromPoints(p,c)}}).call(s.prototype)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/lib/dom","ace/range","ace/config"],function(t,n,h){var i=t("../lib/dom"),s=t("../range").Range,d=t("../config").nls;function o(r,a,c){for(var p=0,u=r.length-1;p<=u;){var f=p+u>>1,g=c(a,r[f]);if(g>0)p=f+1;else if(g<0)u=f-1;else return f}return-(p+1)}function l(r,a,c){var p=r.getAnnotations().sort(s.comparePoints);if(p.length){var u=o(p,{row:a,column:-1},s.comparePoints);u<0&&(u=-u-1),u>=p.length?u=c>0?0:p.length-1:u===0&&c<0&&(u=p.length-1);var f=p[u];if(!(!f||!c)){if(f.row===a){do f=p[u+=c];while(f&&f.row===a);if(!f)return p.slice()}var g=[];a=f.row;do g[c<0?"unshift":"push"](f),f=p[u+=c];while(f&&f.row==a);return g.length&&g}}}n.showErrorMarker=function(r,a){var c=r.session,p=r.getCursorPosition(),u=p.row,f=c.widgetManager.getWidgetsAtRow(u).filter(function(T){return T.type=="errorMarker"})[0];f?f.destroy():u-=a;var g=l(c,u,a),v;if(g){var b=g[0];p.column=(b.pos&&typeof b.column!="number"?b.pos.sc:b.column)||0,p.row=b.row,v=r.renderer.$gutterLayer.$annotations[p.row]}else{if(f)return;v={displayText:[d("error-marker.good-state","Looks good!")],className:"ace_ok"}}r.session.unfold(p.row),r.selection.moveToPosition(p);var D={row:p.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},E=D.el.appendChild(i.createElement("div")),w=D.el.appendChild(i.createElement("div"));w.className="error_widget_arrow "+v.className;var y=r.renderer.$cursorLayer.getPixelPosition(p).left;w.style.left=y+r.renderer.gutterWidth-5+"px",D.el.className="error_widget_wrapper",E.className="error_widget "+v.className,v.displayText.forEach(function(T,x){E.appendChild(i.createTextNode(T)),x-1}function pl(z,G){var Z=this.__data__,ee=oi(Z,z);return ee<0?(++this.size,Z.push([z,G])):Z[ee][1]=G,this}pt.prototype.clear=ll,pt.prototype.delete=cl,pt.prototype.get=hl,pt.prototype.has=ul,pt.prototype.set=pl;function Rt(z){var G=-1,Z=z==null?0:z.length;for(this.clear();++GFe))return!1;var De=le.get(z);if(De&&le.get(G))return De==G;var Ue=-1,et=!0,Pe=Z&i?new ri:void 0;for(le.set(z,G),le.set(G,z);++Ue-1&&z%1==0&&z-1&&z%1==0&&z<=s}function Ir(z){var G=typeof z;return z!=null&&(G=="object"||G=="function")}function Tn(z){return z!=null&&typeof z=="object"}var Or=Oe?Wa(Oe):kl;function Hl(z){return jl(z)?Dl(z):Tl(z)}function Vl(){return[]}function Ul(){return!1}m.exports=zl})(Ri,Ri.exports);var Go=Ri.exports,st={};Object.defineProperty(st,"__esModule",{value:!0});st.getAceInstance=st.debounce=st.editorEvents=st.editorOptions=void 0;var iu=["minLines","maxLines","readOnly","highlightActiveLine","tabSize","enableBasicAutocompletion","enableLiveAutocompletion","enableSnippets"];st.editorOptions=iu;var su=["onChange","onFocus","onInput","onBlur","onCopy","onPaste","onSelectionChange","onCursorChange","onScroll","handleOptions","updateRef"];st.editorEvents=su;var ru=function(){var m;return typeof window>"u"?(Ge.window={},m=Fi,delete Ge.window):window.ace?(m=window.ace,m.acequire=window.ace.require||window.ace.acequire):m=Fi,m};st.getAceInstance=ru;var ou=function(m,e){var t=null;return function(){var n=this,u=arguments;clearTimeout(t),t=setTimeout(function(){m.apply(n,u)},e)}};st.debounce=ou;var au=Yt&&Yt.__extends||(function(){var m=function(e,t){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,u){n.__proto__=u}||function(n,u){for(var i in u)Object.prototype.hasOwnProperty.call(u,i)&&(n[i]=u[i])},m(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");m(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),Ls=Yt&&Yt.__assign||function(){return Ls=Object.assign||function(m){for(var e,t=1,n=arguments.length;t0&&this.handleMarkers(A);var O=this.editor.$options;hn.editorOptions.forEach(function(_){O.hasOwnProperty(_)?t.editor.setOption(_,t.props[_]):t.props[_]&&console.warn("ReactAce: editor option ".concat(_," was activated but not found. Did you need to import a related tool or did you possibly mispell the option?"))}),this.handleOptions(this.props),Array.isArray(w)&&w.forEach(function(_){typeof _.exec=="string"?t.editor.commands.bindKey(_.bindKey,_.exec):t.editor.commands.addCommand(_)}),D&&this.editor.setKeyboardHandler("ace/keyboard/"+D),u&&(this.refEditor.className+=" "+u),E&&E(this.editor),this.editor.resize(),o&&this.editor.focus()},e.prototype.componentDidUpdate=function(t){for(var n=t,u=this.props,i=0;i 0!";if(a!=this.$splits){if(a>this.$splits){for(;this.$splitsa;)c=this.$editors[this.$splits-1],this.$container.removeChild(c.container),this.$splits--;this.resize()}},this.getSplits=function(){return this.$splits},this.getEditor=function(a){return this.$editors[a]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(a){this.$editors.forEach(function(c){c.setTheme(a)})},this.setKeyboardHandler=function(a){this.$editors.forEach(function(c){c.setKeyboardHandler(a)})},this.forEach=function(a,c){this.$editors.forEach(a,c)},this.$fontSize="",this.setFontSize=function(a){this.$fontSize=a,this.forEach(function(c){c.setFontSize(a)})},this.$cloneSession=function(a){var c=new l(a.getDocument(),a.getMode()),p=a.getUndoManager();return c.setUndoManager(p),c.setTabSize(a.getTabSize()),c.setUseSoftTabs(a.getUseSoftTabs()),c.setOverwrite(a.getOverwrite()),c.setBreakpoints(a.getBreakpoints()),c.setUseWrapMode(a.getUseWrapMode()),c.setUseWorker(a.getUseWorker()),c.setWrapLimitRange(a.$wrapLimitRange.min,a.$wrapLimitRange.max),c.$foldData=a.$cloneFoldData(),c},this.setSession=function(a,c){var p;c==null?p=this.$cEditor:p=this.$editors[c];var h=this.$editors.some(function(f){return f.session===a});return h&&(a=this.$cloneSession(a)),p.setSession(a),a},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(a){this.$orientation!=a&&(this.$orientation=a,this.resize())},this.resize=function(){var a=this.$container.clientWidth,c=this.$container.clientHeight,p;if(this.$orientation==this.BESIDE)for(var h=a/this.$splits,f=0;f-1}function Wu(m,e){var t=this.__data__,n=zi(t,m);return n<0?t.push([m,e]):t[n][1]=e,this}Sn.prototype.clear=Ru;Sn.prototype.delete=Nu;Sn.prototype.get=Bu;Sn.prototype.has=Pu;Sn.prototype.set=Wu;function qt(m){var e=-1,t=m?m.length:0;for(this.clear();++e0&&t.handleMarkers(F,_);for(var S=0;S"u"&&(this.Diff_Timeout<=0?o=Number.MAX_VALUE:o=new Date().getTime()+this.Diff_Timeout*1e3);var l=o;if(i==null||s==null)throw new Error("Null input. (diff_main)");if(i==s)return i?[new e.Diff(u,i)]:[];typeof d>"u"&&(d=!0);var r=d,a=this.diff_commonPrefix(i,s),c=i.substring(0,a);i=i.substring(a),s=s.substring(a),a=this.diff_commonSuffix(i,s);var p=i.substring(i.length-a);i=i.substring(0,i.length-a),s=s.substring(0,s.length-a);var h=this.diff_compute_(i,s,r,l);return c&&h.unshift(new e.Diff(u,c)),p&&h.push(new e.Diff(u,p)),this.diff_cleanupMerge(h),h},e.prototype.diff_compute_=function(i,s,d,o){var l;if(!i)return[new e.Diff(n,s)];if(!s)return[new e.Diff(t,i)];var r=i.length>s.length?i:s,a=i.length>s.length?s:i,c=r.indexOf(a);if(c!=-1)return l=[new e.Diff(n,r.substring(0,c)),new e.Diff(u,a),new e.Diff(n,r.substring(c+a.length))],i.length>s.length&&(l[0][0]=l[2][0]=t),l;if(a.length==1)return[new e.Diff(t,i),new e.Diff(n,s)];var p=this.diff_halfMatch_(i,s);if(p){var h=p[0],f=p[1],g=p[2],v=p[3],b=p[4],D=this.diff_main(h,g,d,o),E=this.diff_main(f,v,d,o);return D.concat([new e.Diff(u,b)],E)}return d&&i.length>100&&s.length>100?this.diff_lineMode_(i,s,o):this.diff_bisect_(i,s,o)},e.prototype.diff_lineMode_=function(i,s,d){var o=this.diff_linesToChars_(i,s);i=o.chars1,s=o.chars2;var l=o.lineArray,r=this.diff_main(i,s,!1,d);this.diff_charsToLines_(r,l),this.diff_cleanupSemantic(r),r.push(new e.Diff(u,""));for(var a=0,c=0,p=0,h="",f="";a=1&&p>=1){r.splice(a-c-p,c+p),a=a-c-p;for(var g=this.diff_main(h,f,!1,d),v=g.length-1;v>=0;v--)r.splice(a,0,g[v]);a=a+g.length}p=0,c=0,h="",f="";break}a++}return r.pop(),r},e.prototype.diff_bisect_=function(i,s,d){for(var o=i.length,l=s.length,r=Math.ceil((o+l)/2),a=r,c=2*r,p=new Array(c),h=new Array(c),f=0;fd);y++){for(var A=-y+b;A<=y-D;A+=2){var T=a+A,$;A==-y||A!=y&&p[T-1]o)D+=2;else if(M>l)b+=2;else if(v){var O=a+g-A;if(O>=0&&O=_)return this.diff_bisectSplit_(i,s,$,M,d)}}}for(var k=-y+E;k<=y-w;k+=2){var O=a+k,_;k==-y||k!=y&&h[O-1]o)w+=2;else if(S>l)E+=2;else if(!v){var T=a+g-k;if(T>=0&&T=_)return this.diff_bisectSplit_(i,s,$,M,d)}}}}return[new e.Diff(t,i),new e.Diff(n,s)]},e.prototype.diff_bisectSplit_=function(i,s,d,o,l){var r=i.substring(0,d),a=s.substring(0,o),c=i.substring(d),p=s.substring(o),h=this.diff_main(r,a,!1,l),f=this.diff_main(c,p,!1,l);return h.concat(f)},e.prototype.diff_linesToChars_=function(i,s){var d=[],o={};d[0]="";function l(p){for(var h="",f=0,g=-1,v=d.length;go?i=i.substring(d-o):ds.length?i:s,o=i.length>s.length?s:i;if(d.length<4||o.length*2=D.length?[$,M,O,_,T]:null}var a=r(d,o,Math.ceil(d.length/4)),c=r(d,o,Math.ceil(d.length/2)),p;if(!a&&!c)return null;c?a?p=a[4].length>c[4].length?a:c:p=c:p=a;var h,f,g,v;i.length>s.length?(h=p[0],f=p[1],g=p[2],v=p[3]):(g=p[0],v=p[1],h=p[2],f=p[3]);var b=p[4];return[h,f,g,v,b]},e.prototype.diff_cleanupSemantic=function(i){for(var s=!1,d=[],o=0,l=null,r=0,a=0,c=0,p=0,h=0;r0?d[o-1]:-1,a=0,c=0,p=0,h=0,l=null,s=!0)),r++;for(s&&this.diff_cleanupMerge(i),this.diff_cleanupSemanticLossless(i),r=1;r=b?(v>=f.length/2||v>=g.length/2)&&(i.splice(r,0,new e.Diff(u,g.substring(0,v))),i[r-1][1]=f.substring(0,f.length-v),i[r+1][1]=g.substring(v),r++):(b>=f.length/2||b>=g.length/2)&&(i.splice(r,0,new e.Diff(u,f.substring(0,b))),i[r-1][0]=n,i[r-1][1]=g.substring(0,g.length-b),i[r+1][0]=t,i[r+1][1]=f.substring(b),r++),r++}r++}},e.prototype.diff_cleanupSemanticLossless=function(i){function s(b,D){if(!b||!D)return 6;var E=b.charAt(b.length-1),w=D.charAt(0),y=E.match(e.nonAlphaNumericRegex_),A=w.match(e.nonAlphaNumericRegex_),T=y&&E.match(e.whitespaceRegex_),$=A&&w.match(e.whitespaceRegex_),M=T&&E.match(e.linebreakRegex_),O=$&&w.match(e.linebreakRegex_),_=M&&b.match(e.blanklineEndRegex_),k=O&&D.match(e.blanklineStartRegex_);return _||k?5:M||O?4:y&&!T&&$?3:T||$?2:y||A?1:0}for(var d=1;d=g&&(g=v,p=o,h=l,f=r)}i[d-1][1]!=p&&(p?i[d-1][1]=p:(i.splice(d-1,1),d--),i[d][1]=h,f?i[d+1][1]=f:(i.splice(d+1,1),d--))}d++}},e.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/,e.whitespaceRegex_=/\s/,e.linebreakRegex_=/[\r\n]/,e.blanklineEndRegex_=/\n\r?\n$/,e.blanklineStartRegex_=/^\r?\n\r?\n/,e.prototype.diff_cleanupEfficiency=function(i){for(var s=!1,d=[],o=0,l=null,r=0,a=!1,c=!1,p=!1,h=!1;r0?d[o-1]:-1,p=h=!1),s=!0)),r++;s&&this.diff_cleanupMerge(i)},e.prototype.diff_cleanupMerge=function(i){i.push(new e.Diff(u,""));for(var s=0,d=0,o=0,l="",r="",a;s1?(d!==0&&o!==0&&(a=this.diff_commonPrefix(r,l),a!==0&&(s-d-o>0&&i[s-d-o-1][0]==u?i[s-d-o-1][1]+=r.substring(0,a):(i.splice(0,0,new e.Diff(u,r.substring(0,a))),s++),r=r.substring(a),l=l.substring(a)),a=this.diff_commonSuffix(r,l),a!==0&&(i[s][1]=r.substring(r.length-a)+i[s][1],r=r.substring(0,r.length-a),l=l.substring(0,l.length-a))),s-=d+o,i.splice(s,d+o),l.length&&(i.splice(s,0,new e.Diff(t,l)),s++),r.length&&(i.splice(s,0,new e.Diff(n,r)),s++),s++):s!==0&&i[s-1][0]==u?(i[s-1][1]+=i[s][1],i.splice(s,1)):s++,o=0,d=0,l="",r="";break}i[i.length-1][1]===""&&i.pop();var c=!1;for(s=1;ss));a++)l=d,r=o;return i.length!=a&&i[a][0]===t?r:r+(s-l)},e.prototype.diff_prettyHtml=function(i){for(var s=[],d=/&/g,o=//g,r=/\n/g,a=0;a");switch(c){case n:s[a]=''+h+"";break;case t:s[a]=''+h+"";break;case u:s[a]=""+h+"";break}}return s.join("")},e.prototype.diff_text1=function(i){for(var s=[],d=0;dthis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var o=this.match_alphabet_(s),l=this;function r($,M){var O=$/s.length,_=Math.abs(d-M);return l.Match_Distance?O+_/l.Match_Distance:_?1:O}var a=this.Match_Threshold,c=i.indexOf(s,d);c!=-1&&(a=Math.min(r(0,c),a),c=i.lastIndexOf(s,d+s.length),c!=-1&&(a=Math.min(r(0,c),a)));var p=1<=D;y--){var A=o[i.charAt(y-1)];if(b===0?w[y]=(w[y+1]<<1|1)&A:w[y]=(w[y+1]<<1|1)&A|((v[y+1]|v[y])<<1|1)|v[y+1],w[y]&p){var T=r(b,y-1);if(T<=a)if(a=T,c=y-1,c>d)D=Math.max(1,2*d-c);else break}}if(r(b+1,d)>a)break;v=w}return c},e.prototype.match_alphabet_=function(i){for(var s={},d=0;d"u")o=i,l=this.diff_main(o,s,!0),l.length>2&&(this.diff_cleanupSemantic(l),this.diff_cleanupEfficiency(l));else if(i&&typeof i=="object"&&typeof s>"u"&&typeof d>"u")l=i,o=this.diff_text1(l);else if(typeof i=="string"&&s&&typeof s=="object"&&typeof d>"u")o=i,l=s;else if(typeof i=="string"&&typeof s=="string"&&d&&typeof d=="object")o=i,l=d;else throw new Error("Unknown call format to patch_make.");if(l.length===0)return[];for(var r=[],a=new e.patch_obj,c=0,p=0,h=0,f=o,g=o,v=0;v=2*this.Patch_Margin&&c&&(this.patch_addContext_(a,f),r.push(a),a=new e.patch_obj,c=0,f=g,p=h);break}b!==n&&(p+=D.length),b!==t&&(h+=D.length)}return c&&(this.patch_addContext_(a,f),r.push(a)),r},e.prototype.patch_deepCopy=function(i){for(var s=[],d=0;dthis.Match_MaxBits?(p=this.match_main(s,c.substring(0,this.Match_MaxBits),a),p!=-1&&(h=this.match_main(s,c.substring(c.length-this.Match_MaxBits),a+c.length-this.Match_MaxBits),(h==-1||p>=h)&&(p=-1))):p=this.match_main(s,c,a),p==-1)l[r]=!1,o-=i[r].length2-i[r].length1;else{l[r]=!0,o=p-a;var f;if(h==-1?f=s.substring(p,p+c.length):f=s.substring(p,h+this.Match_MaxBits),c==f)s=s.substring(0,p)+this.diff_text2(i[r].diffs)+s.substring(p+c.length);else{var g=this.diff_main(c,f,!1);if(c.length>this.Match_MaxBits&&this.diff_levenshtein(g)/c.length>this.Patch_DeleteThreshold)l[r]=!1;else{this.diff_cleanupSemanticLossless(g);for(var v=0,b,D=0;Dr[0][1].length){var a=s-r[0][1].length;r[0][1]=d.substring(r[0][1].length)+r[0][1],l.start1-=a,l.start2-=a,l.length1+=a,l.length2+=a}if(l=i[i.length-1],r=l.diffs,r.length==0||r[r.length-1][0]!=u)r.push(new e.Diff(u,d)),l.length1+=s,l.length2+=s;else if(s>r[r.length-1][1].length){var a=s-r[r.length-1][1].length;r[r.length-1][1]+=d.substring(0,a),l.length1+=a,l.length2+=a}return d},e.prototype.patch_splitMax=function(i){for(var s=this.Match_MaxBits,d=0;d2*s?(c.length1+=f.length,l+=f.length,p=!1,c.diffs.push(new e.Diff(h,f)),o.diffs.shift()):(f=f.substring(0,s-c.length1-this.Patch_Margin),c.length1+=f.length,l+=f.length,h===u?(c.length2+=f.length,r+=f.length):p=!1,c.diffs.push(new e.Diff(h,f)),f==o.diffs[0][1]?o.diffs.shift():o.diffs[0][1]=o.diffs[0][1].substring(f.length))}a=this.diff_text2(c.diffs),a=a.substring(a.length-this.Patch_Margin);var g=this.diff_text1(o.diffs).substring(0,this.Patch_Margin);g!==""&&(c.length1+=g.length,c.length2+=g.length,c.diffs.length!==0&&c.diffs[c.diffs.length-1][0]===u?c.diffs[c.diffs.length-1][1]+=g:c.diffs.push(new e.Diff(u,g))),p||i.splice(++d,0,c)}}},e.prototype.patch_toText=function(i){for(var s=[],d=0;d-1}function gl(H,G){var Z=this.__data__,ee=oi(Z,H);return ee<0?(++this.size,Z.push([H,G])):Z[ee][1]=G,this}pt.prototype.clear=ul,pt.prototype.delete=pl,pt.prototype.get=dl,pt.prototype.has=fl,pt.prototype.set=gl;function Rt(H){var G=-1,Z=H==null?0:H.length;for(this.clear();++GFe))return!1;var De=le.get(H);if(De&&le.get(G))return De==G;var Ue=-1,et=!0,Pe=Z&i?new ri:void 0;for(le.set(H,G),le.set(G,H);++Ue-1&&H%1==0&&H-1&&H%1==0&&H<=s}function Fr(H){var G=typeof H;return H!=null&&(G=="object"||G=="function")}function Tn(H){return H!=null&&typeof H=="object"}var Rr=Oe?za(Oe):Ml;function Kl(H){return Vl(H)?_l(H):Il(H)}function Gl(){return[]}function Jl(){return!1}m.exports=Ul})(Ni,Ni.exports);var Qo=Ni.exports,st={};Object.defineProperty(st,"__esModule",{value:!0});st.getAceInstance=st.debounce=st.editorEvents=st.editorOptions=void 0;var ou=["minLines","maxLines","readOnly","highlightActiveLine","tabSize","enableBasicAutocompletion","enableLiveAutocompletion","enableSnippets"];st.editorOptions=ou;var au=["onChange","onFocus","onInput","onBlur","onCopy","onPaste","onSelectionChange","onCursorChange","onScroll","handleOptions","updateRef"];st.editorEvents=au;var lu=function(){var m;return typeof window>"u"?(Ge.window={},m=Ri,delete Ge.window):window.ace?(m=window.ace,m.acequire=window.ace.require||window.ace.acequire):m=Ri,m};st.getAceInstance=lu;var cu=function(m,e){var t=null;return function(){var n=this,h=arguments;clearTimeout(t),t=setTimeout(function(){m.apply(n,h)},e)}};st.debounce=cu;var hu=Yt&&Yt.__extends||(function(){var m=function(e,t){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,h){n.__proto__=h}||function(n,h){for(var i in h)Object.prototype.hasOwnProperty.call(h,i)&&(n[i]=h[i])},m(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");m(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}})(),Ms=Yt&&Yt.__assign||function(){return Ms=Object.assign||function(m){for(var e,t=1,n=arguments.length;t0&&this.handleMarkers(A);var O=this.editor.$options;hn.editorOptions.forEach(function(_){O.hasOwnProperty(_)?t.editor.setOption(_,t.props[_]):t.props[_]&&console.warn("ReactAce: editor option ".concat(_," was activated but not found. Did you need to import a related tool or did you possibly mispell the option?"))}),this.handleOptions(this.props),Array.isArray(w)&&w.forEach(function(_){typeof _.exec=="string"?t.editor.commands.bindKey(_.bindKey,_.exec):t.editor.commands.addCommand(_)}),D&&this.editor.setKeyboardHandler("ace/keyboard/"+D),h&&(this.refEditor.className+=" "+h),E&&E(this.editor),this.editor.resize(),o&&this.editor.focus()},e.prototype.componentDidUpdate=function(t){for(var n=t,h=this.props,i=0;i 0!";if(a!=this.$splits){if(a>this.$splits){for(;this.$splitsa;)c=this.$editors[this.$splits-1],this.$container.removeChild(c.container),this.$splits--;this.resize()}},this.getSplits=function(){return this.$splits},this.getEditor=function(a){return this.$editors[a]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(a){this.$editors.forEach(function(c){c.setTheme(a)})},this.setKeyboardHandler=function(a){this.$editors.forEach(function(c){c.setKeyboardHandler(a)})},this.forEach=function(a,c){this.$editors.forEach(a,c)},this.$fontSize="",this.setFontSize=function(a){this.$fontSize=a,this.forEach(function(c){c.setFontSize(a)})},this.$cloneSession=function(a){var c=new l(a.getDocument(),a.getMode()),p=a.getUndoManager();return c.setUndoManager(p),c.setTabSize(a.getTabSize()),c.setUseSoftTabs(a.getUseSoftTabs()),c.setOverwrite(a.getOverwrite()),c.setBreakpoints(a.getBreakpoints()),c.setUseWrapMode(a.getUseWrapMode()),c.setUseWorker(a.getUseWorker()),c.setWrapLimitRange(a.$wrapLimitRange.min,a.$wrapLimitRange.max),c.$foldData=a.$cloneFoldData(),c},this.setSession=function(a,c){var p;c==null?p=this.$cEditor:p=this.$editors[c];var u=this.$editors.some(function(f){return f.session===a});return u&&(a=this.$cloneSession(a)),p.setSession(a),a},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(a){this.$orientation!=a&&(this.$orientation=a,this.resize())},this.resize=function(){var a=this.$container.clientWidth,c=this.$container.clientHeight,p;if(this.$orientation==this.BESIDE)for(var u=a/this.$splits,f=0;f-1}function zu(m,e){var t=this.__data__,n=zi(t,m);return n<0?t.push([m,e]):t[n][1]=e,this}Sn.prototype.clear=Pu;Sn.prototype.delete=Wu;Sn.prototype.get=ju;Sn.prototype.has=Hu;Sn.prototype.set=zu;function qt(m){var e=-1,t=m?m.length:0;for(this.clear();++e0&&t.handleMarkers(F,_);for(var S=0;S"u"&&(this.Diff_Timeout<=0?o=Number.MAX_VALUE:o=new Date().getTime()+this.Diff_Timeout*1e3);var l=o;if(i==null||s==null)throw new Error("Null input. (diff_main)");if(i==s)return i?[new e.Diff(h,i)]:[];typeof d>"u"&&(d=!0);var r=d,a=this.diff_commonPrefix(i,s),c=i.substring(0,a);i=i.substring(a),s=s.substring(a),a=this.diff_commonSuffix(i,s);var p=i.substring(i.length-a);i=i.substring(0,i.length-a),s=s.substring(0,s.length-a);var u=this.diff_compute_(i,s,r,l);return c&&u.unshift(new e.Diff(h,c)),p&&u.push(new e.Diff(h,p)),this.diff_cleanupMerge(u),u},e.prototype.diff_compute_=function(i,s,d,o){var l;if(!i)return[new e.Diff(n,s)];if(!s)return[new e.Diff(t,i)];var r=i.length>s.length?i:s,a=i.length>s.length?s:i,c=r.indexOf(a);if(c!=-1)return l=[new e.Diff(n,r.substring(0,c)),new e.Diff(h,a),new e.Diff(n,r.substring(c+a.length))],i.length>s.length&&(l[0][0]=l[2][0]=t),l;if(a.length==1)return[new e.Diff(t,i),new e.Diff(n,s)];var p=this.diff_halfMatch_(i,s);if(p){var u=p[0],f=p[1],g=p[2],v=p[3],b=p[4],D=this.diff_main(u,g,d,o),E=this.diff_main(f,v,d,o);return D.concat([new e.Diff(h,b)],E)}return d&&i.length>100&&s.length>100?this.diff_lineMode_(i,s,o):this.diff_bisect_(i,s,o)},e.prototype.diff_lineMode_=function(i,s,d){var o=this.diff_linesToChars_(i,s);i=o.chars1,s=o.chars2;var l=o.lineArray,r=this.diff_main(i,s,!1,d);this.diff_charsToLines_(r,l),this.diff_cleanupSemantic(r),r.push(new e.Diff(h,""));for(var a=0,c=0,p=0,u="",f="";a=1&&p>=1){r.splice(a-c-p,c+p),a=a-c-p;for(var g=this.diff_main(u,f,!1,d),v=g.length-1;v>=0;v--)r.splice(a,0,g[v]);a=a+g.length}p=0,c=0,u="",f="";break}a++}return r.pop(),r},e.prototype.diff_bisect_=function(i,s,d){for(var o=i.length,l=s.length,r=Math.ceil((o+l)/2),a=r,c=2*r,p=new Array(c),u=new Array(c),f=0;fd);y++){for(var A=-y+b;A<=y-D;A+=2){var T=a+A,x;A==-y||A!=y&&p[T-1]o)D+=2;else if(M>l)b+=2;else if(v){var O=a+g-A;if(O>=0&&O=_)return this.diff_bisectSplit_(i,s,x,M,d)}}}for(var k=-y+E;k<=y-w;k+=2){var O=a+k,_;k==-y||k!=y&&u[O-1]o)w+=2;else if(S>l)E+=2;else if(!v){var T=a+g-k;if(T>=0&&T=_)return this.diff_bisectSplit_(i,s,x,M,d)}}}}return[new e.Diff(t,i),new e.Diff(n,s)]},e.prototype.diff_bisectSplit_=function(i,s,d,o,l){var r=i.substring(0,d),a=s.substring(0,o),c=i.substring(d),p=s.substring(o),u=this.diff_main(r,a,!1,l),f=this.diff_main(c,p,!1,l);return u.concat(f)},e.prototype.diff_linesToChars_=function(i,s){var d=[],o={};d[0]="";function l(p){for(var u="",f=0,g=-1,v=d.length;go?i=i.substring(d-o):ds.length?i:s,o=i.length>s.length?s:i;if(d.length<4||o.length*2=D.length?[x,M,O,_,T]:null}var a=r(d,o,Math.ceil(d.length/4)),c=r(d,o,Math.ceil(d.length/2)),p;if(!a&&!c)return null;c?a?p=a[4].length>c[4].length?a:c:p=c:p=a;var u,f,g,v;i.length>s.length?(u=p[0],f=p[1],g=p[2],v=p[3]):(g=p[0],v=p[1],u=p[2],f=p[3]);var b=p[4];return[u,f,g,v,b]},e.prototype.diff_cleanupSemantic=function(i){for(var s=!1,d=[],o=0,l=null,r=0,a=0,c=0,p=0,u=0;r0?d[o-1]:-1,a=0,c=0,p=0,u=0,l=null,s=!0)),r++;for(s&&this.diff_cleanupMerge(i),this.diff_cleanupSemanticLossless(i),r=1;r=b?(v>=f.length/2||v>=g.length/2)&&(i.splice(r,0,new e.Diff(h,g.substring(0,v))),i[r-1][1]=f.substring(0,f.length-v),i[r+1][1]=g.substring(v),r++):(b>=f.length/2||b>=g.length/2)&&(i.splice(r,0,new e.Diff(h,f.substring(0,b))),i[r-1][0]=n,i[r-1][1]=g.substring(0,g.length-b),i[r+1][0]=t,i[r+1][1]=f.substring(b),r++),r++}r++}},e.prototype.diff_cleanupSemanticLossless=function(i){function s(b,D){if(!b||!D)return 6;var E=b.charAt(b.length-1),w=D.charAt(0),y=E.match(e.nonAlphaNumericRegex_),A=w.match(e.nonAlphaNumericRegex_),T=y&&E.match(e.whitespaceRegex_),x=A&&w.match(e.whitespaceRegex_),M=T&&E.match(e.linebreakRegex_),O=x&&w.match(e.linebreakRegex_),_=M&&b.match(e.blanklineEndRegex_),k=O&&D.match(e.blanklineStartRegex_);return _||k?5:M||O?4:y&&!T&&x?3:T||x?2:y||A?1:0}for(var d=1;d=g&&(g=v,p=o,u=l,f=r)}i[d-1][1]!=p&&(p?i[d-1][1]=p:(i.splice(d-1,1),d--),i[d][1]=u,f?i[d+1][1]=f:(i.splice(d+1,1),d--))}d++}},e.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/,e.whitespaceRegex_=/\s/,e.linebreakRegex_=/[\r\n]/,e.blanklineEndRegex_=/\n\r?\n$/,e.blanklineStartRegex_=/^\r?\n\r?\n/,e.prototype.diff_cleanupEfficiency=function(i){for(var s=!1,d=[],o=0,l=null,r=0,a=!1,c=!1,p=!1,u=!1;r0?d[o-1]:-1,p=u=!1),s=!0)),r++;s&&this.diff_cleanupMerge(i)},e.prototype.diff_cleanupMerge=function(i){i.push(new e.Diff(h,""));for(var s=0,d=0,o=0,l="",r="",a;s1?(d!==0&&o!==0&&(a=this.diff_commonPrefix(r,l),a!==0&&(s-d-o>0&&i[s-d-o-1][0]==h?i[s-d-o-1][1]+=r.substring(0,a):(i.splice(0,0,new e.Diff(h,r.substring(0,a))),s++),r=r.substring(a),l=l.substring(a)),a=this.diff_commonSuffix(r,l),a!==0&&(i[s][1]=r.substring(r.length-a)+i[s][1],r=r.substring(0,r.length-a),l=l.substring(0,l.length-a))),s-=d+o,i.splice(s,d+o),l.length&&(i.splice(s,0,new e.Diff(t,l)),s++),r.length&&(i.splice(s,0,new e.Diff(n,r)),s++),s++):s!==0&&i[s-1][0]==h?(i[s-1][1]+=i[s][1],i.splice(s,1)):s++,o=0,d=0,l="",r="";break}i[i.length-1][1]===""&&i.pop();var c=!1;for(s=1;ss));a++)l=d,r=o;return i.length!=a&&i[a][0]===t?r:r+(s-l)},e.prototype.diff_prettyHtml=function(i){for(var s=[],d=/&/g,o=//g,r=/\n/g,a=0;a");switch(c){case n:s[a]=''+u+"";break;case t:s[a]=''+u+"";break;case h:s[a]=""+u+"";break}}return s.join("")},e.prototype.diff_text1=function(i){for(var s=[],d=0;dthis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var o=this.match_alphabet_(s),l=this;function r(x,M){var O=x/s.length,_=Math.abs(d-M);return l.Match_Distance?O+_/l.Match_Distance:_?1:O}var a=this.Match_Threshold,c=i.indexOf(s,d);c!=-1&&(a=Math.min(r(0,c),a),c=i.lastIndexOf(s,d+s.length),c!=-1&&(a=Math.min(r(0,c),a)));var p=1<=D;y--){var A=o[i.charAt(y-1)];if(b===0?w[y]=(w[y+1]<<1|1)&A:w[y]=(w[y+1]<<1|1)&A|((v[y+1]|v[y])<<1|1)|v[y+1],w[y]&p){var T=r(b,y-1);if(T<=a)if(a=T,c=y-1,c>d)D=Math.max(1,2*d-c);else break}}if(r(b+1,d)>a)break;v=w}return c},e.prototype.match_alphabet_=function(i){for(var s={},d=0;d"u")o=i,l=this.diff_main(o,s,!0),l.length>2&&(this.diff_cleanupSemantic(l),this.diff_cleanupEfficiency(l));else if(i&&typeof i=="object"&&typeof s>"u"&&typeof d>"u")l=i,o=this.diff_text1(l);else if(typeof i=="string"&&s&&typeof s=="object"&&typeof d>"u")o=i,l=s;else if(typeof i=="string"&&typeof s=="string"&&d&&typeof d=="object")o=i,l=d;else throw new Error("Unknown call format to patch_make.");if(l.length===0)return[];for(var r=[],a=new e.patch_obj,c=0,p=0,u=0,f=o,g=o,v=0;v=2*this.Patch_Margin&&c&&(this.patch_addContext_(a,f),r.push(a),a=new e.patch_obj,c=0,f=g,p=u);break}b!==n&&(p+=D.length),b!==t&&(u+=D.length)}return c&&(this.patch_addContext_(a,f),r.push(a)),r},e.prototype.patch_deepCopy=function(i){for(var s=[],d=0;dthis.Match_MaxBits?(p=this.match_main(s,c.substring(0,this.Match_MaxBits),a),p!=-1&&(u=this.match_main(s,c.substring(c.length-this.Match_MaxBits),a+c.length-this.Match_MaxBits),(u==-1||p>=u)&&(p=-1))):p=this.match_main(s,c,a),p==-1)l[r]=!1,o-=i[r].length2-i[r].length1;else{l[r]=!0,o=p-a;var f;if(u==-1?f=s.substring(p,p+c.length):f=s.substring(p,u+this.Match_MaxBits),c==f)s=s.substring(0,p)+this.diff_text2(i[r].diffs)+s.substring(p+c.length);else{var g=this.diff_main(c,f,!1);if(c.length>this.Match_MaxBits&&this.diff_levenshtein(g)/c.length>this.Patch_DeleteThreshold)l[r]=!1;else{this.diff_cleanupSemanticLossless(g);for(var v=0,b,D=0;Dr[0][1].length){var a=s-r[0][1].length;r[0][1]=d.substring(r[0][1].length)+r[0][1],l.start1-=a,l.start2-=a,l.length1+=a,l.length2+=a}if(l=i[i.length-1],r=l.diffs,r.length==0||r[r.length-1][0]!=h)r.push(new e.Diff(h,d)),l.length1+=s,l.length2+=s;else if(s>r[r.length-1][1].length){var a=s-r[r.length-1][1].length;r[r.length-1][1]+=d.substring(0,a),l.length1+=a,l.length2+=a}return d},e.prototype.patch_splitMax=function(i){for(var s=this.Match_MaxBits,d=0;d2*s?(c.length1+=f.length,l+=f.length,p=!1,c.diffs.push(new e.Diff(u,f)),o.diffs.shift()):(f=f.substring(0,s-c.length1-this.Patch_Margin),c.length1+=f.length,l+=f.length,u===h?(c.length2+=f.length,r+=f.length):p=!1,c.diffs.push(new e.Diff(u,f)),f==o.diffs[0][1]?o.diffs.shift():o.diffs[0][1]=o.diffs[0][1].substring(f.length))}a=this.diff_text2(c.diffs),a=a.substring(a.length-this.Patch_Margin);var g=this.diff_text1(o.diffs).substring(0,this.Patch_Margin);g!==""&&(c.length1+=g.length,c.length2+=g.length,c.diffs.length!==0&&c.diffs[c.diffs.length-1][0]===h?c.diffs[c.diffs.length-1][1]+=g:c.diffs.push(new e.Diff(h,g))),p||i.splice(++d,0,c)}}},e.prototype.patch_toText=function(i){for(var s=[],d=0;dv)break;var b=this.getFoldWidgetRange(l,"all",r);if(b){if(b.start.row<=p)break;if(b.isMultiLine())r=b.end.row;else if(c==v)break}f=r}}return new s(p,h,f,l.getLine(f).length)},this.getCommentRegionBlock=function(l,r,a){for(var c=r.search(/\s*$/),p=l.getLength(),h=a,f=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,g=1;++ah)return new s(h,c,b,r.length)}}.call(o.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(t,n,u){var i=t("../lib/oop"),s=t("./text").Mode,d=t("./json_highlight_rules").JsonHighlightRules,o=t("./matching_brace_outdent").MatchingBraceOutdent,l=t("./folding/cstyle").FoldMode,r=t("../worker/worker_client").WorkerClient,a=function(){this.HighlightRules=d,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new l};i.inherits(a,s),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(c,p,h){var f=this.$getIndent(p);if(c=="start"){var g=p.match(/^.*[\{\(\[]\s*$/);g&&(f+=h)}return f},this.checkOutdent=function(c,p,h){return this.$outdent.checkOutdent(p,h)},this.autoOutdent=function(c,p,h){this.$outdent.autoOutdent(p,h)},this.createWorker=function(c){var p=new r(["ace"],"ace/mode/json_worker","JsonWorker");return p.attachToDocument(c.getDocument()),p.on("annotate",function(h){c.setAnnotations(h.data)}),p.on("terminate",function(){c.clearAnnotations()}),p},this.$id="ace/mode/json"}.call(a.prototype),n.Mode=a}),(function(){ace.require(["ace/mode/json"],function(t){m&&(m.exports=t)})})()})(Cp);var Sp={exports:{}};(function(m,e){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(t,n,u){var i=t("../lib/oop"),s=t("./text_highlight_rules").TextHighlightRules,d=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};i.inherits(d,s),n.JsonHighlightRules=d}),ace.define("ace/mode/json5_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/json_highlight_rules"],function(t,n,u){var i=t("../lib/oop"),s=t("./json_highlight_rules").JsonHighlightRules,d=function(){s.call(this);var o=[{token:"variable",regex:/[a-zA-Z$_\u00a1-\uffff][\w$\u00a1-\uffff]*\s*(?=:)/},{token:"variable",regex:/['](?:(?:\\.)|(?:[^'\\]))*?[']\s*(?=:)/},{token:"constant.language.boolean",regex:/(?:null)\b/},{token:"string",regex:/'/,next:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/,consumeLineEnd:!0},{token:"string",regex:/'|$/,next:"start"},{defaultToken:"string"}]},{token:"string",regex:/"(?![^"]*":)/,next:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/,consumeLineEnd:!0},{token:"string",regex:/"|$/,next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:/[+-]?(?:Infinity|NaN)\b/}];for(var l in this.$rules)this.$rules[l].unshift.apply(this.$rules[l],o);this.normalizeRules()};i.inherits(d,s),n.Json5HighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(t,n,u){var i=t("../range").Range,s=function(){};(function(){this.checkOutdent=function(d,o){return/^\s+$/.test(d)?/^\s*\}/.test(o):!1},this.autoOutdent=function(d,o){var l=d.getLine(o),r=l.match(/^(\s*\})/);if(!r)return 0;var a=r[1].length,c=d.findMatchingBracket({row:o,column:a});if(!c||c.row==o)return 0;var p=this.$getIndent(d.getLine(c.row));d.replace(new i(o,0,o,a-1),p)},this.$getIndent=function(d){return d.match(/^\s*/)[0]}}).call(s.prototype),n.MatchingBraceOutdent=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(t,n,u){var i=t("../../lib/oop"),s=t("../../range").Range,d=t("./fold_mode").FoldMode,o=n.FoldMode=function(l){l&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+l.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+l.end)))};i.inherits(o,d),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(l,r,a){var c=l.getLine(a);if(this.singleLineBlockCommentRe.test(c)&&!this.startRegionRe.test(c)&&!this.tripleStarBlockCommentRe.test(c))return"";var p=this._getFoldWidgetBase(l,r,a);return!p&&this.startRegionRe.test(c)?"start":p},this.getFoldWidgetRange=function(l,r,a,c){var p=l.getLine(a);if(this.startRegionRe.test(p))return this.getCommentRegionBlock(l,p,a);var g=p.match(this.foldingStartMarker);if(g){var h=g.index;if(g[1])return this.openingBracketBlock(l,g[1],a,h);var f=l.getCommentFoldRange(a,h+g[0].length,1);return f&&!f.isMultiLine()&&(c?f=this.getSectionRange(l,a):r!="all"&&(f=null)),f}if(r!=="markbegin"){var g=p.match(this.foldingStopMarker);if(g){var h=g.index+g[0].length;return g[1]?this.closingBracketBlock(l,g[1],a,h):l.getCommentFoldRange(a,h,-1)}}},this.getSectionRange=function(l,r){var a=l.getLine(r),c=a.search(/\S/),p=r,h=a.length;r+=1;for(var f=r,g=l.getLength();++rv)break;var b=this.getFoldWidgetRange(l,"all",r);if(b){if(b.start.row<=p)break;if(b.isMultiLine())r=b.end.row;else if(c==v)break}f=r}}return new s(p,h,f,l.getLine(f).length)},this.getCommentRegionBlock=function(l,r,a){for(var c=r.search(/\s*$/),p=l.getLength(),h=a,f=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,g=1;++ah)return new s(h,c,b,r.length)}}.call(o.prototype)}),ace.define("ace/mode/json5",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json5_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(t,n,u){var i=t("../lib/oop"),s=t("./text").Mode,d=t("./json5_highlight_rules").Json5HighlightRules,o=t("./matching_brace_outdent").MatchingBraceOutdent,l=t("./folding/cstyle").FoldMode,r=function(){this.HighlightRules=d,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new l};i.inherits(r,s),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.checkOutdent=function(a,c,p){return this.$outdent.checkOutdent(c,p)},this.autoOutdent=function(a,c,p){this.$outdent.autoOutdent(c,p)},this.$id="ace/mode/json5"}.call(r.prototype),n.Mode=r}),(function(){ace.require(["ace/mode/json5"],function(t){m&&(m.exports=t)})})()})(Sp);var Ep={exports:{}};(function(m,e){ace.define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(t,n,u){var i=t("../lib/oop"),s=t("./text_highlight_rules").TextHighlightRules,d=function(){this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"list.markup",regex:/^(?:-{3}|\.{3})\s*(?=#|$)/},{token:"list.markup",regex:/^\s*[\-?](?:$|\s)/},{token:"constant",regex:"!![\\w//]+"},{token:"constant.language",regex:"[&\\*][a-zA-Z0-9-_]+"},{token:["meta.tag","keyword"],regex:/^(\s*\w[^\s:]*?)(:(?=\s|$))/},{token:["meta.tag","keyword"],regex:/(\w[^\s:]*?)(\s*:(?=\s|$))/},{token:"keyword.operator",regex:"<<\\w*:\\w*"},{token:"keyword.operator",regex:"-\\s*(?=[{])"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:/[|>][-+\d]*(?:$|\s+(?:$|#))/,onMatch:function(o,l,r,a){a=a.replace(/ #.*/,"");var c=/^ *((:\s*)?-(\s*[^|>])?)?/.exec(a)[0].replace(/\S\s*$/,"").length,p=parseInt(/\d+[\s+-]*$/.exec(a));return p?(c+=p-1,this.next="mlString"):this.next="mlStringPre",r.length?(r[0]=this.next,r[1]=c):(r.push(this.next),r.push(c)),this.token},next:"mlString"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)$/},{token:"constant.numeric",regex:/[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/},{token:"constant.language.boolean",regex:"\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:/[^\s,:\[\]\{\}]+/}],mlStringPre:[{token:"indent",regex:/^ *$/},{token:"indent",regex:/^ */,onMatch:function(o,l,r){var a=r[1];return a>=o.length?(this.next="start",r.shift(),r.shift()):(r[1]=o.length-1,this.next=r[0]="mlString"),this.token},next:"mlString"},{defaultToken:"string"}],mlString:[{token:"indent",regex:/^ *$/},{token:"indent",regex:/^ */,onMatch:function(o,l,r){var a=r[1];return a>=o.length?(this.next="start",r.splice(0)):this.next="mlString",this.token},next:"mlString"},{token:"string",regex:".+"}]},this.normalizeRules()};i.inherits(d,s),n.YamlHighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(t,n,u){var i=t("../range").Range,s=function(){};(function(){this.checkOutdent=function(d,o){return/^\s+$/.test(d)?/^\s*\}/.test(o):!1},this.autoOutdent=function(d,o){var l=d.getLine(o),r=l.match(/^(\s*\})/);if(!r)return 0;var a=r[1].length,c=d.findMatchingBracket({row:o,column:a});if(!c||c.row==o)return 0;var p=this.$getIndent(d.getLine(c.row));d.replace(new i(o,0,o,a-1),p)},this.$getIndent=function(d){return d.match(/^\s*/)[0]}}).call(s.prototype),n.MatchingBraceOutdent=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(t,n,u){var i=t("../../lib/oop"),s=t("./fold_mode").FoldMode,d=t("../../range").Range,o=n.FoldMode=function(){};i.inherits(o,s),function(){this.commentBlock=function(l,r){var a=/\S/,c=l.getLine(r),p=c.search(a);if(!(p==-1||c[p]!="#")){for(var h=c.length,f=l.getLength(),g=r,v=r;++rg){var D=l.getLine(v).length;return new d(g,h,v,D)}}},this.getFoldWidgetRange=function(l,r,a){var c=this.indentationBlock(l,a);if(c||(c=this.commentBlock(l,a),c))return c},this.getFoldWidget=function(l,r,a){var c=l.getLine(a),p=c.search(/\S/),h=l.getLine(a+1),f=l.getLine(a-1),g=f.search(/\S/),v=h.search(/\S/);if(p==-1)return l.foldWidgets[a-1]=g!=-1&&gD){var T=l.getLine(E).length;return new d(D,v,E,T)}}},this.getFoldWidget=function(l,r,a){var c=l.getLine(a),p=c.search(/\S/),h=l.getLine(a+1),f=l.getLine(a-1),g=f.search(/\S/),v=h.search(/\S/),b=c[p]==="-";if(p==-1)return l.foldWidgets[a-1]=g!=-1&&g ["+this.end.row+"/"+this.end.column+"]"},u.prototype.contains=function(i,s){return this.compare(i,s)==0},u.prototype.compareRange=function(i){var s,d=i.end,o=i.start;return s=this.compare(d.row,d.column),s==1?(s=this.compare(o.row,o.column),s==1?2:s==0?1:0):s==-1?-2:(s=this.compare(o.row,o.column),s==-1?-1:s==1?42:0)},u.prototype.comparePoint=function(i){return this.compare(i.row,i.column)},u.prototype.containsRange=function(i){return this.comparePoint(i.start)==0&&this.comparePoint(i.end)==0},u.prototype.intersects=function(i){var s=this.compareRange(i);return s==-1||s==0||s==1},u.prototype.isEnd=function(i,s){return this.end.row==i&&this.end.column==s},u.prototype.isStart=function(i,s){return this.start.row==i&&this.start.column==s},u.prototype.setStart=function(i,s){typeof i=="object"?(this.start.column=i.column,this.start.row=i.row):(this.start.row=i,this.start.column=s)},u.prototype.setEnd=function(i,s){typeof i=="object"?(this.end.column=i.column,this.end.row=i.row):(this.end.row=i,this.end.column=s)},u.prototype.inside=function(i,s){return this.compare(i,s)==0?!(this.isEnd(i,s)||this.isStart(i,s)):!1},u.prototype.insideStart=function(i,s){return this.compare(i,s)==0?!this.isEnd(i,s):!1},u.prototype.insideEnd=function(i,s){return this.compare(i,s)==0?!this.isStart(i,s):!1},u.prototype.compare=function(i,s){return!this.isMultiLine()&&i===this.start.row?sthis.end.column?1:0:ithis.end.row?1:this.start.row===i?s>=this.start.column?0:-1:this.end.row===i?s<=this.end.column?0:1:0},u.prototype.compareStart=function(i,s){return this.start.row==i&&this.start.column==s?-1:this.compare(i,s)},u.prototype.compareEnd=function(i,s){return this.end.row==i&&this.end.column==s?1:this.compare(i,s)},u.prototype.compareInside=function(i,s){return this.end.row==i&&this.end.column==s?1:this.start.row==i&&this.start.column==s?-1:this.compare(i,s)},u.prototype.clipRows=function(i,s){if(this.end.row>s)var d={row:s+1,column:0};else if(this.end.rows)var o={row:s+1,column:0};else if(this.start.rowthis.row)){var r=u(l,{row:this.row,column:this.column},this.$insertRight);this.setPosition(r.row,r.column,!0)}},o.prototype.setPosition=function(l,r,a){var c;if(a?c={row:l,column:r}:c=this.$clipPositionToDocument(l,r),!(this.row==c.row&&this.column==c.column)){var p={row:this.row,column:this.column};this.row=c.row,this.column=c.column,this._signal("change",{old:p,value:c})}},o.prototype.detach=function(){this.document.off("change",this.$onChange)},o.prototype.attach=function(l){this.document=l||this.document,this.document.on("change",this.$onChange)},o.prototype.$clipPositionToDocument=function(l,r){var a={};return l>=this.document.getLength()?(a.row=Math.max(0,this.document.getLength()-1),a.column=this.document.getLine(a.row).length):l<0?(a.row=0,a.column=0):(a.row=l,a.column=Math.min(this.document.getLine(a.row).length,Math.max(0,r))),r<0&&(a.column=0),a},o})();d.prototype.$insertRight=!1,i.implement(d.prototype,s),e.Anchor=d}),ace.define("ace/document",[],function(m,e,t){var n=m("./lib/oop"),u=m("./apply_delta").applyDelta,i=m("./lib/event_emitter").EventEmitter,s=m("./range").Range,d=m("./anchor").Anchor,o=(function(){function l(r){this.$lines=[""],r.length===0?this.$lines=[""]:Array.isArray(r)?this.insertMergedLines({row:0,column:0},r):this.insert({row:0,column:0},r)}return l.prototype.setValue=function(r){var a=this.getLength()-1;this.remove(new s(0,0,a,this.getLine(a).length)),this.insert({row:0,column:0},r||"")},l.prototype.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},l.prototype.createAnchor=function(r,a){return new d(this,r,a)},l.prototype.$detectNewLine=function(r){var a=r.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=a?a[1]:` +`&&(i.left++,l--),c=l,c===0&&h.right.push({startLine:i.right,endLine:i.right}),a===` +`&&(c-=1),h.left.push({startLine:i.left,endLine:i.left+c}),i.left+=l;break;case n.DIFF_INSERT:r===` +`&&(i.right++,l--),c=l,c===0&&h.left.push({startLine:i.left,endLine:i.left}),a===` +`&&(c-=1),h.right.push({startLine:i.right,endLine:i.right+c}),i.right+=l;break;default:throw new Error("Diff type was not defined.")}}}),h},e.prototype.setCodeMarkers=function(t){t===void 0&&(t={left:[],right:[]});for(var n=[],h={left:[],right:[]},i=0;iv)break;var b=this.getFoldWidgetRange(l,"all",r);if(b){if(b.start.row<=p)break;if(b.isMultiLine())r=b.end.row;else if(c==v)break}f=r}}return new s(p,u,f,l.getLine(f).length)},this.getCommentRegionBlock=function(l,r,a){for(var c=r.search(/\s*$/),p=l.getLength(),u=a,f=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,g=1;++au)return new s(u,c,b,r.length)}}.call(o.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(t,n,h){var i=t("../lib/oop"),s=t("./text").Mode,d=t("./json_highlight_rules").JsonHighlightRules,o=t("./matching_brace_outdent").MatchingBraceOutdent,l=t("./folding/cstyle").FoldMode,r=t("../worker/worker_client").WorkerClient,a=function(){this.HighlightRules=d,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new l};i.inherits(a,s),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(c,p,u){var f=this.$getIndent(p);if(c=="start"){var g=p.match(/^.*[\{\(\[]\s*$/);g&&(f+=u)}return f},this.checkOutdent=function(c,p,u){return this.$outdent.checkOutdent(p,u)},this.autoOutdent=function(c,p,u){this.$outdent.autoOutdent(p,u)},this.createWorker=function(c){var p=new r(["ace"],"ace/mode/json_worker","JsonWorker");return p.attachToDocument(c.getDocument()),p.on("annotate",function(u){c.setAnnotations(u.data)}),p.on("terminate",function(){c.clearAnnotations()}),p},this.$id="ace/mode/json"}.call(a.prototype),n.Mode=a}),(function(){ace.require(["ace/mode/json"],function(t){m&&(m.exports=t)})})()})(Ap);var Dp={exports:{}};(function(m,e){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(t,n,h){var i=t("../lib/oop"),s=t("./text_highlight_rules").TextHighlightRules,d=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};i.inherits(d,s),n.JsonHighlightRules=d}),ace.define("ace/mode/json5_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/json_highlight_rules"],function(t,n,h){var i=t("../lib/oop"),s=t("./json_highlight_rules").JsonHighlightRules,d=function(){s.call(this);var o=[{token:"variable",regex:/[a-zA-Z$_\u00a1-\uffff][\w$\u00a1-\uffff]*\s*(?=:)/},{token:"variable",regex:/['](?:(?:\\.)|(?:[^'\\]))*?[']\s*(?=:)/},{token:"constant.language.boolean",regex:/(?:null)\b/},{token:"string",regex:/'/,next:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/,consumeLineEnd:!0},{token:"string",regex:/'|$/,next:"start"},{defaultToken:"string"}]},{token:"string",regex:/"(?![^"]*":)/,next:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/,consumeLineEnd:!0},{token:"string",regex:/"|$/,next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:/[+-]?(?:Infinity|NaN)\b/}];for(var l in this.$rules)this.$rules[l].unshift.apply(this.$rules[l],o);this.normalizeRules()};i.inherits(d,s),n.Json5HighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(t,n,h){var i=t("../range").Range,s=function(){};(function(){this.checkOutdent=function(d,o){return/^\s+$/.test(d)?/^\s*\}/.test(o):!1},this.autoOutdent=function(d,o){var l=d.getLine(o),r=l.match(/^(\s*\})/);if(!r)return 0;var a=r[1].length,c=d.findMatchingBracket({row:o,column:a});if(!c||c.row==o)return 0;var p=this.$getIndent(d.getLine(c.row));d.replace(new i(o,0,o,a-1),p)},this.$getIndent=function(d){return d.match(/^\s*/)[0]}}).call(s.prototype),n.MatchingBraceOutdent=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(t,n,h){var i=t("../../lib/oop"),s=t("../../range").Range,d=t("./fold_mode").FoldMode,o=n.FoldMode=function(l){l&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+l.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+l.end)))};i.inherits(o,d),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(l,r,a){var c=l.getLine(a);if(this.singleLineBlockCommentRe.test(c)&&!this.startRegionRe.test(c)&&!this.tripleStarBlockCommentRe.test(c))return"";var p=this._getFoldWidgetBase(l,r,a);return!p&&this.startRegionRe.test(c)?"start":p},this.getFoldWidgetRange=function(l,r,a,c){var p=l.getLine(a);if(this.startRegionRe.test(p))return this.getCommentRegionBlock(l,p,a);var g=p.match(this.foldingStartMarker);if(g){var u=g.index;if(g[1])return this.openingBracketBlock(l,g[1],a,u);var f=l.getCommentFoldRange(a,u+g[0].length,1);return f&&!f.isMultiLine()&&(c?f=this.getSectionRange(l,a):r!="all"&&(f=null)),f}if(r!=="markbegin"){var g=p.match(this.foldingStopMarker);if(g){var u=g.index+g[0].length;return g[1]?this.closingBracketBlock(l,g[1],a,u):l.getCommentFoldRange(a,u,-1)}}},this.getSectionRange=function(l,r){var a=l.getLine(r),c=a.search(/\S/),p=r,u=a.length;r+=1;for(var f=r,g=l.getLength();++rv)break;var b=this.getFoldWidgetRange(l,"all",r);if(b){if(b.start.row<=p)break;if(b.isMultiLine())r=b.end.row;else if(c==v)break}f=r}}return new s(p,u,f,l.getLine(f).length)},this.getCommentRegionBlock=function(l,r,a){for(var c=r.search(/\s*$/),p=l.getLength(),u=a,f=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,g=1;++au)return new s(u,c,b,r.length)}}.call(o.prototype)}),ace.define("ace/mode/json5",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json5_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(t,n,h){var i=t("../lib/oop"),s=t("./text").Mode,d=t("./json5_highlight_rules").Json5HighlightRules,o=t("./matching_brace_outdent").MatchingBraceOutdent,l=t("./folding/cstyle").FoldMode,r=function(){this.HighlightRules=d,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new l};i.inherits(r,s),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.checkOutdent=function(a,c,p){return this.$outdent.checkOutdent(c,p)},this.autoOutdent=function(a,c,p){this.$outdent.autoOutdent(c,p)},this.$id="ace/mode/json5"}.call(r.prototype),n.Mode=r}),(function(){ace.require(["ace/mode/json5"],function(t){m&&(m.exports=t)})})()})(Dp);var $p={exports:{}};(function(m,e){ace.define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(t,n,h){var i=t("../lib/oop"),s=t("./text_highlight_rules").TextHighlightRules,d=function(){this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"list.markup",regex:/^(?:-{3}|\.{3})\s*(?=#|$)/},{token:"list.markup",regex:/^\s*[\-?](?:$|\s)/},{token:"constant",regex:"!![\\w//]+"},{token:"constant.language",regex:"[&\\*][a-zA-Z0-9-_]+"},{token:["meta.tag","keyword"],regex:/^(\s*\w[^\s:]*?)(:(?=\s|$))/},{token:["meta.tag","keyword"],regex:/(\w[^\s:]*?)(\s*:(?=\s|$))/},{token:"keyword.operator",regex:"<<\\w*:\\w*"},{token:"keyword.operator",regex:"-\\s*(?=[{])"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:/[|>][-+\d]*(?:$|\s+(?:$|#))/,onMatch:function(o,l,r,a){a=a.replace(/ #.*/,"");var c=/^ *((:\s*)?-(\s*[^|>])?)?/.exec(a)[0].replace(/\S\s*$/,"").length,p=parseInt(/\d+[\s+-]*$/.exec(a));return p?(c+=p-1,this.next="mlString"):this.next="mlStringPre",r.length?(r[0]=this.next,r[1]=c):(r.push(this.next),r.push(c)),this.token},next:"mlString"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)$/},{token:"constant.numeric",regex:/[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/},{token:"constant.language.boolean",regex:"\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:/[^\s,:\[\]\{\}]+/}],mlStringPre:[{token:"indent",regex:/^ *$/},{token:"indent",regex:/^ */,onMatch:function(o,l,r){var a=r[1];return a>=o.length?(this.next="start",r.shift(),r.shift()):(r[1]=o.length-1,this.next=r[0]="mlString"),this.token},next:"mlString"},{defaultToken:"string"}],mlString:[{token:"indent",regex:/^ *$/},{token:"indent",regex:/^ */,onMatch:function(o,l,r){var a=r[1];return a>=o.length?(this.next="start",r.splice(0)):this.next="mlString",this.token},next:"mlString"},{token:"string",regex:".+"}]},this.normalizeRules()};i.inherits(d,s),n.YamlHighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(t,n,h){var i=t("../range").Range,s=function(){};(function(){this.checkOutdent=function(d,o){return/^\s+$/.test(d)?/^\s*\}/.test(o):!1},this.autoOutdent=function(d,o){var l=d.getLine(o),r=l.match(/^(\s*\})/);if(!r)return 0;var a=r[1].length,c=d.findMatchingBracket({row:o,column:a});if(!c||c.row==o)return 0;var p=this.$getIndent(d.getLine(c.row));d.replace(new i(o,0,o,a-1),p)},this.$getIndent=function(d){return d.match(/^\s*/)[0]}}).call(s.prototype),n.MatchingBraceOutdent=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(t,n,h){var i=t("../../lib/oop"),s=t("./fold_mode").FoldMode,d=t("../../range").Range,o=n.FoldMode=function(){};i.inherits(o,s),function(){this.commentBlock=function(l,r){var a=/\S/,c=l.getLine(r),p=c.search(a);if(!(p==-1||c[p]!="#")){for(var u=c.length,f=l.getLength(),g=r,v=r;++rg){var D=l.getLine(v).length;return new d(g,u,v,D)}}},this.getFoldWidgetRange=function(l,r,a){var c=this.indentationBlock(l,a);if(c||(c=this.commentBlock(l,a),c))return c},this.getFoldWidget=function(l,r,a){var c=l.getLine(a),p=c.search(/\S/),u=l.getLine(a+1),f=l.getLine(a-1),g=f.search(/\S/),v=u.search(/\S/);if(p==-1)return l.foldWidgets[a-1]=g!=-1&&gD){var T=l.getLine(E).length;return new d(D,v,E,T)}}},this.getFoldWidget=function(l,r,a){var c=l.getLine(a),p=c.search(/\S/),u=l.getLine(a+1),f=l.getLine(a-1),g=f.search(/\S/),v=u.search(/\S/),b=c[p]==="-";if(p==-1)return l.foldWidgets[a-1]=g!=-1&&g ["+this.end.row+"/"+this.end.column+"]"},h.prototype.contains=function(i,s){return this.compare(i,s)==0},h.prototype.compareRange=function(i){var s,d=i.end,o=i.start;return s=this.compare(d.row,d.column),s==1?(s=this.compare(o.row,o.column),s==1?2:s==0?1:0):s==-1?-2:(s=this.compare(o.row,o.column),s==-1?-1:s==1?42:0)},h.prototype.comparePoint=function(i){return this.compare(i.row,i.column)},h.prototype.containsRange=function(i){return this.comparePoint(i.start)==0&&this.comparePoint(i.end)==0},h.prototype.intersects=function(i){var s=this.compareRange(i);return s==-1||s==0||s==1},h.prototype.isEnd=function(i,s){return this.end.row==i&&this.end.column==s},h.prototype.isStart=function(i,s){return this.start.row==i&&this.start.column==s},h.prototype.setStart=function(i,s){typeof i=="object"?(this.start.column=i.column,this.start.row=i.row):(this.start.row=i,this.start.column=s)},h.prototype.setEnd=function(i,s){typeof i=="object"?(this.end.column=i.column,this.end.row=i.row):(this.end.row=i,this.end.column=s)},h.prototype.inside=function(i,s){return this.compare(i,s)==0?!(this.isEnd(i,s)||this.isStart(i,s)):!1},h.prototype.insideStart=function(i,s){return this.compare(i,s)==0?!this.isEnd(i,s):!1},h.prototype.insideEnd=function(i,s){return this.compare(i,s)==0?!this.isStart(i,s):!1},h.prototype.compare=function(i,s){return!this.isMultiLine()&&i===this.start.row?sthis.end.column?1:0:ithis.end.row?1:this.start.row===i?s>=this.start.column?0:-1:this.end.row===i?s<=this.end.column?0:1:0},h.prototype.compareStart=function(i,s){return this.start.row==i&&this.start.column==s?-1:this.compare(i,s)},h.prototype.compareEnd=function(i,s){return this.end.row==i&&this.end.column==s?1:this.compare(i,s)},h.prototype.compareInside=function(i,s){return this.end.row==i&&this.end.column==s?1:this.start.row==i&&this.start.column==s?-1:this.compare(i,s)},h.prototype.clipRows=function(i,s){if(this.end.row>s)var d={row:s+1,column:0};else if(this.end.rows)var o={row:s+1,column:0};else if(this.start.rowthis.row)){var r=h(l,{row:this.row,column:this.column},this.$insertRight);this.setPosition(r.row,r.column,!0)}},o.prototype.setPosition=function(l,r,a){var c;if(a?c={row:l,column:r}:c=this.$clipPositionToDocument(l,r),!(this.row==c.row&&this.column==c.column)){var p={row:this.row,column:this.column};this.row=c.row,this.column=c.column,this._signal("change",{old:p,value:c})}},o.prototype.detach=function(){this.document.off("change",this.$onChange)},o.prototype.attach=function(l){this.document=l||this.document,this.document.on("change",this.$onChange)},o.prototype.$clipPositionToDocument=function(l,r){var a={};return l>=this.document.getLength()?(a.row=Math.max(0,this.document.getLength()-1),a.column=this.document.getLine(a.row).length):l<0?(a.row=0,a.column=0):(a.row=l,a.column=Math.min(this.document.getLine(a.row).length,Math.max(0,r))),r<0&&(a.column=0),a},o})();d.prototype.$insertRight=!1,i.implement(d.prototype,s),e.Anchor=d}),ace.define("ace/document",[],function(m,e,t){var n=m("./lib/oop"),h=m("./apply_delta").applyDelta,i=m("./lib/event_emitter").EventEmitter,s=m("./range").Range,d=m("./anchor").Anchor,o=(function(){function l(r){this.$lines=[""],r.length===0?this.$lines=[""]:Array.isArray(r)?this.insertMergedLines({row:0,column:0},r):this.insert({row:0,column:0},r)}return l.prototype.setValue=function(r){var a=this.getLength()-1;this.remove(new s(0,0,a,this.getLine(a).length)),this.insert({row:0,column:0},r||"")},l.prototype.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},l.prototype.createAnchor=function(r,a){return new d(this,r,a)},l.prototype.$detectNewLine=function(r){var a=r.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=a?a[1]:` `,this._signal("changeNewLineMode")},l.prototype.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return`\r `;case"unix":return` `;default:return this.$autoNewLine||` `}},l.prototype.setNewLineMode=function(r){this.$newLineMode!==r&&(this.$newLineMode=r,this._signal("changeNewLineMode"))},l.prototype.getNewLineMode=function(){return this.$newLineMode},l.prototype.isNewLine=function(r){return r==`\r `||r=="\r"||r==` -`},l.prototype.getLine=function(r){return this.$lines[r]||""},l.prototype.getLines=function(r,a){return this.$lines.slice(r,a+1)},l.prototype.getAllLines=function(){return this.getLines(0,this.getLength())},l.prototype.getLength=function(){return this.$lines.length},l.prototype.getTextRange=function(r){return this.getLinesForRange(r).join(this.getNewLineCharacter())},l.prototype.getLinesForRange=function(r){var a;if(r.start.row===r.end.row)a=[this.getLine(r.start.row).substring(r.start.column,r.end.column)];else{a=this.getLines(r.start.row,r.end.row),a[0]=(a[0]||"").substring(r.start.column);var c=a.length-1;r.end.row-r.start.row==c&&(a[c]=a[c].substring(0,r.end.column))}return a},l.prototype.insertLines=function(r,a){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(r,a)},l.prototype.removeLines=function(r,a){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(r,a)},l.prototype.insertNewLine=function(r){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(r,["",""])},l.prototype.insert=function(r,a){return this.getLength()<=1&&this.$detectNewLine(a),this.insertMergedLines(r,this.$split(a))},l.prototype.insertInLine=function(r,a){var c=this.clippedPos(r.row,r.column),p=this.pos(r.row,r.column+a.length);return this.applyDelta({start:c,end:p,action:"insert",lines:[a]},!0),this.clonePos(p)},l.prototype.clippedPos=function(r,a){var c=this.getLength();r===void 0?r=c:r<0?r=0:r>=c&&(r=c-1,a=void 0);var p=this.getLine(r);return a==null&&(a=p.length),a=Math.min(Math.max(a,0),p.length),{row:r,column:a}},l.prototype.clonePos=function(r){return{row:r.row,column:r.column}},l.prototype.pos=function(r,a){return{row:r,column:a}},l.prototype.$clipPosition=function(r){var a=this.getLength();return r.row>=a?(r.row=Math.max(0,a-1),r.column=this.getLine(a-1).length):(r.row=Math.max(0,r.row),r.column=Math.min(Math.max(r.column,0),this.getLine(r.row).length)),r},l.prototype.insertFullLines=function(r,a){r=Math.min(Math.max(r,0),this.getLength());var c=0;r0,p=a=0&&this.applyDelta({start:this.pos(r,this.getLine(r).length),end:this.pos(r+1,0),action:"remove",lines:["",""]})},l.prototype.replace=function(r,a){if(r instanceof s||(r=s.fromPoints(r.start,r.end)),a.length===0&&r.isEmpty())return r.start;if(a==this.getTextRange(r))return r.end;this.remove(r);var c;return a?c=this.insert(r.start,a):c=r.start,c},l.prototype.applyDeltas=function(r){for(var a=0;a=0;a--)this.revertDelta(r[a])},l.prototype.applyDelta=function(r,a){var c=r.action=="insert";(c?r.lines.length<=1&&!r.lines[0]:!s.comparePoints(r.start,r.end))||(c&&r.lines.length>2e4?this.$splitAndapplyLargeDelta(r,2e4):(u(this.$lines,r,a),this._signal("change",r)))},l.prototype.$safeApplyDelta=function(r){var a=this.$lines.length;(r.action=="remove"&&r.start.row0;)s&1&&(d+=i),(s>>=1)&&(i+=i);return d};var n=/^\s\s*/,u=/\s\s*$/;e.stringTrimLeft=function(i){return i.replace(n,"")},e.stringTrimRight=function(i){return i.replace(u,"")},e.copyObject=function(i){var s={};for(var d in i)s[d]=i[d];return s},e.copyArray=function(i){for(var s=[],d=0,o=i.length;d65535?2:1}}),ace.define("ace/worker/mirror",[],function(m,e,t){var n=m("../document").Document,u=m("../lib/lang"),i=e.Mirror=function(s){this.sender=s;var d=this.doc=new n(""),o=this.deferredUpdate=u.delayedCall(this.onUpdate.bind(this)),l=this;s.on("change",function(r){var a=r.data;if(a[0].start)d.applyDeltas(a);else for(var c=0;c=d.$lines.length)throw h=new Error("Invalid delta"),h.data={path:l.$path,linesLength:d.$lines.length,start:p.start,end:p.end},h;d.applyDelta(p,!0)}if(l.$timeout)return o.schedule(l.$timeout);l.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(s){this.$timeout=s},this.setValue=function(s){this.doc.setValue(s),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(s){this.sender.callback(this.doc.getValue(),s)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(i.prototype)}),ace.define("ace/mode/json/json_parse",[],function(m,e,t){var n,u,i={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:` -`,r:"\r",t:" "},s,d=function(g){throw{name:"SyntaxError",message:g,at:n,text:s}},o=function(g){return g&&g!==u&&d("Expected '"+g+"' instead of '"+u+"'"),u=s.charAt(n),n+=1,u},l=function(){var g,v="";for(u==="-"&&(v="-",o("-"));u>="0"&&u<="9";)v+=u,o();if(u===".")for(v+=".";o()&&u>="0"&&u<="9";)v+=u;if(u==="e"||u==="E")for(v+=u,o(),(u==="-"||u==="+")&&(v+=u,o());u>="0"&&u<="9";)v+=u,o();if(g=+v,!isNaN(g))return g;d("Bad number")},r=function(){var g,v,b="",D;if(u==='"')for(;o();){if(u==='"')return o(),b;if(u==="\\")if(o(),u==="u"){for(D=0,v=0;v<4&&(g=parseInt(o(),16),!!isFinite(g));v+=1)D=D*16+g;b+=String.fromCharCode(D)}else{if(typeof i[u]!="string")break;b+=i[u]}else{if(u==` -`||u=="\r")break;b+=u}}d("Bad string")},a=function(){for(;u&&u<=" ";)o()},c=function(){switch(u){case"t":return o("t"),o("r"),o("u"),o("e"),!0;case"f":return o("f"),o("a"),o("l"),o("s"),o("e"),!1;case"n":return o("n"),o("u"),o("l"),o("l"),null}d("Unexpected '"+u+"'")},p,h=function(){var g=[];if(u==="["){if(o("["),a(),u==="]")return o("]"),g;for(;u;){if(g.push(p()),a(),u==="]")return o("]"),g;o(","),a()}}d("Bad array")},f=function(){var g,v={};if(u==="{"){if(o("{"),a(),u==="}")return o("}"),v;for(;u;){if(g=r(),a(),o(":"),Object.hasOwnProperty.call(v,g)&&d('Duplicate key "'+g+'"'),v[g]=p(),a(),u==="}")return o("}"),v;o(","),a()}}d("Bad object")};return p=function(){switch(a(),u){case"{":return f();case"[":return h();case'"':return r();case"-":return l();default:return u>="0"&&u<="9"?l():c()}},function(g,v){var b;return s=g,n=0,u=" ",b=p(),a(),u&&d("Syntax error"),typeof v=="function"?(function D(E,w){var y,A,T=E[w];if(T&&typeof T=="object")for(y in T)Object.hasOwnProperty.call(T,y)&&(A=D(T,y),A!==void 0?T[y]=A:delete T[y]);return v.call(E,w,T)})({"":b},""):b}}),ace.define("ace/mode/json_worker",[],function(m,e,t){var n=m("../lib/oop"),u=m("../worker/mirror").Mirror,i=m("./json/json_parse"),s=e.JsonWorker=function(d){u.call(this,d),this.setTimeout(200)};n.inherits(s,u),function(){this.onUpdate=function(){var d=this.doc.getValue(),o=[];try{d&&i(d)}catch(r){var l=this.doc.indexToPosition(r.at-1);o.push({row:l.row,column:l.column,text:r.message,type:"error"})}this.sender.emit("annotate",o)}}.call(s.prototype)});var Dp={exports:{}};(function(m,e){ace.define("ace/theme/clouds_midnight-css",["require","exports","module"],function(t,n,u){u.exports=`.ace-clouds-midnight .ace_gutter { +`},l.prototype.getLine=function(r){return this.$lines[r]||""},l.prototype.getLines=function(r,a){return this.$lines.slice(r,a+1)},l.prototype.getAllLines=function(){return this.getLines(0,this.getLength())},l.prototype.getLength=function(){return this.$lines.length},l.prototype.getTextRange=function(r){return this.getLinesForRange(r).join(this.getNewLineCharacter())},l.prototype.getLinesForRange=function(r){var a;if(r.start.row===r.end.row)a=[this.getLine(r.start.row).substring(r.start.column,r.end.column)];else{a=this.getLines(r.start.row,r.end.row),a[0]=(a[0]||"").substring(r.start.column);var c=a.length-1;r.end.row-r.start.row==c&&(a[c]=a[c].substring(0,r.end.column))}return a},l.prototype.insertLines=function(r,a){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(r,a)},l.prototype.removeLines=function(r,a){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(r,a)},l.prototype.insertNewLine=function(r){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(r,["",""])},l.prototype.insert=function(r,a){return this.getLength()<=1&&this.$detectNewLine(a),this.insertMergedLines(r,this.$split(a))},l.prototype.insertInLine=function(r,a){var c=this.clippedPos(r.row,r.column),p=this.pos(r.row,r.column+a.length);return this.applyDelta({start:c,end:p,action:"insert",lines:[a]},!0),this.clonePos(p)},l.prototype.clippedPos=function(r,a){var c=this.getLength();r===void 0?r=c:r<0?r=0:r>=c&&(r=c-1,a=void 0);var p=this.getLine(r);return a==null&&(a=p.length),a=Math.min(Math.max(a,0),p.length),{row:r,column:a}},l.prototype.clonePos=function(r){return{row:r.row,column:r.column}},l.prototype.pos=function(r,a){return{row:r,column:a}},l.prototype.$clipPosition=function(r){var a=this.getLength();return r.row>=a?(r.row=Math.max(0,a-1),r.column=this.getLine(a-1).length):(r.row=Math.max(0,r.row),r.column=Math.min(Math.max(r.column,0),this.getLine(r.row).length)),r},l.prototype.insertFullLines=function(r,a){r=Math.min(Math.max(r,0),this.getLength());var c=0;r0,p=a=0&&this.applyDelta({start:this.pos(r,this.getLine(r).length),end:this.pos(r+1,0),action:"remove",lines:["",""]})},l.prototype.replace=function(r,a){if(r instanceof s||(r=s.fromPoints(r.start,r.end)),a.length===0&&r.isEmpty())return r.start;if(a==this.getTextRange(r))return r.end;this.remove(r);var c;return a?c=this.insert(r.start,a):c=r.start,c},l.prototype.applyDeltas=function(r){for(var a=0;a=0;a--)this.revertDelta(r[a])},l.prototype.applyDelta=function(r,a){var c=r.action=="insert";(c?r.lines.length<=1&&!r.lines[0]:!s.comparePoints(r.start,r.end))||(c&&r.lines.length>2e4?this.$splitAndapplyLargeDelta(r,2e4):(h(this.$lines,r,a),this._signal("change",r)))},l.prototype.$safeApplyDelta=function(r){var a=this.$lines.length;(r.action=="remove"&&r.start.row0;)s&1&&(d+=i),(s>>=1)&&(i+=i);return d};var n=/^\s\s*/,h=/\s\s*$/;e.stringTrimLeft=function(i){return i.replace(n,"")},e.stringTrimRight=function(i){return i.replace(h,"")},e.copyObject=function(i){var s={};for(var d in i)s[d]=i[d];return s},e.copyArray=function(i){for(var s=[],d=0,o=i.length;d65535?2:1}}),ace.define("ace/worker/mirror",[],function(m,e,t){var n=m("../document").Document,h=m("../lib/lang"),i=e.Mirror=function(s){this.sender=s;var d=this.doc=new n(""),o=this.deferredUpdate=h.delayedCall(this.onUpdate.bind(this)),l=this;s.on("change",function(r){var a=r.data;if(a[0].start)d.applyDeltas(a);else for(var c=0;c=d.$lines.length)throw u=new Error("Invalid delta"),u.data={path:l.$path,linesLength:d.$lines.length,start:p.start,end:p.end},u;d.applyDelta(p,!0)}if(l.$timeout)return o.schedule(l.$timeout);l.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(s){this.$timeout=s},this.setValue=function(s){this.doc.setValue(s),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(s){this.sender.callback(this.doc.getValue(),s)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(i.prototype)}),ace.define("ace/mode/json/json_parse",[],function(m,e,t){var n,h,i={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:` +`,r:"\r",t:" "},s,d=function(g){throw{name:"SyntaxError",message:g,at:n,text:s}},o=function(g){return g&&g!==h&&d("Expected '"+g+"' instead of '"+h+"'"),h=s.charAt(n),n+=1,h},l=function(){var g,v="";for(h==="-"&&(v="-",o("-"));h>="0"&&h<="9";)v+=h,o();if(h===".")for(v+=".";o()&&h>="0"&&h<="9";)v+=h;if(h==="e"||h==="E")for(v+=h,o(),(h==="-"||h==="+")&&(v+=h,o());h>="0"&&h<="9";)v+=h,o();if(g=+v,!isNaN(g))return g;d("Bad number")},r=function(){var g,v,b="",D;if(h==='"')for(;o();){if(h==='"')return o(),b;if(h==="\\")if(o(),h==="u"){for(D=0,v=0;v<4&&(g=parseInt(o(),16),!!isFinite(g));v+=1)D=D*16+g;b+=String.fromCharCode(D)}else{if(typeof i[h]!="string")break;b+=i[h]}else{if(h==` +`||h=="\r")break;b+=h}}d("Bad string")},a=function(){for(;h&&h<=" ";)o()},c=function(){switch(h){case"t":return o("t"),o("r"),o("u"),o("e"),!0;case"f":return o("f"),o("a"),o("l"),o("s"),o("e"),!1;case"n":return o("n"),o("u"),o("l"),o("l"),null}d("Unexpected '"+h+"'")},p,u=function(){var g=[];if(h==="["){if(o("["),a(),h==="]")return o("]"),g;for(;h;){if(g.push(p()),a(),h==="]")return o("]"),g;o(","),a()}}d("Bad array")},f=function(){var g,v={};if(h==="{"){if(o("{"),a(),h==="}")return o("}"),v;for(;h;){if(g=r(),a(),o(":"),Object.hasOwnProperty.call(v,g)&&d('Duplicate key "'+g+'"'),v[g]=p(),a(),h==="}")return o("}"),v;o(","),a()}}d("Bad object")};return p=function(){switch(a(),h){case"{":return f();case"[":return u();case'"':return r();case"-":return l();default:return h>="0"&&h<="9"?l():c()}},function(g,v){var b;return s=g,n=0,h=" ",b=p(),a(),h&&d("Syntax error"),typeof v=="function"?(function D(E,w){var y,A,T=E[w];if(T&&typeof T=="object")for(y in T)Object.hasOwnProperty.call(T,y)&&(A=D(T,y),A!==void 0?T[y]=A:delete T[y]);return v.call(E,w,T)})({"":b},""):b}}),ace.define("ace/mode/json_worker",[],function(m,e,t){var n=m("../lib/oop"),h=m("../worker/mirror").Mirror,i=m("./json/json_parse"),s=e.JsonWorker=function(d){h.call(this,d),this.setTimeout(200)};n.inherits(s,h),function(){this.onUpdate=function(){var d=this.doc.getValue(),o=[];try{d&&i(d)}catch(r){var l=this.doc.indexToPosition(r.at-1);o.push({row:l.row,column:l.column,text:r.message,type:"error"})}this.sender.emit("annotate",o)}}.call(s.prototype)});var _p={exports:{}};(function(m,e){ace.define("ace/theme/clouds_midnight-css",["require","exports","module"],function(t,n,h){h.exports=`.ace-clouds-midnight .ace_gutter { background: #232323; color: #929292 } @@ -1123,7 +1123,7 @@ import{i as Ao,h as x,f as Kl,a as Gl,p as Jl}from"./ConfigCustomJavascriptSet__ .ace-clouds-midnight .ace_indent-guide-active { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y; } -`}),ace.define("ace/theme/clouds_midnight",["require","exports","module","ace/theme/clouds_midnight-css","ace/lib/dom"],function(t,n,u){n.isDark=!0,n.cssClass="ace-clouds-midnight",n.cssText=t("./clouds_midnight-css");var i=t("../lib/dom");i.importCssString(n.cssText,n.cssClass,!1)}),(function(){ace.require(["ace/theme/clouds_midnight"],function(t){m&&(m.exports=t)})})()})(Dp);var $p={exports:{}};(function(m,e){ace.define("ace/theme/chrome-css",["require","exports","module"],function(t,n,u){u.exports=`.ace-chrome .ace_gutter { +`}),ace.define("ace/theme/clouds_midnight",["require","exports","module","ace/theme/clouds_midnight-css","ace/lib/dom"],function(t,n,h){n.isDark=!0,n.cssClass="ace-clouds-midnight",n.cssText=t("./clouds_midnight-css");var i=t("../lib/dom");i.importCssString(n.cssText,n.cssClass,!1)}),(function(){ace.require(["ace/theme/clouds_midnight"],function(t){m&&(m.exports=t)})})()})(_p);var kp={exports:{}};(function(m,e){ace.define("ace/theme/chrome-css",["require","exports","module"],function(t,n,h){h.exports=`.ace-chrome .ace_gutter { background: #ebebeb; color: #333; overflow : hidden; @@ -1281,21 +1281,21 @@ import{i as Ao,h as x,f as Kl,a as Gl,p as Jl}from"./ConfigCustomJavascriptSet__ .ace-chrome .ace_indent-guide-active { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y; } -`}),ace.define("ace/theme/chrome",["require","exports","module","ace/theme/chrome-css","ace/lib/dom"],function(t,n,u){n.isDark=!1,n.cssClass="ace-chrome",n.cssText=t("./chrome-css");var i=t("../lib/dom");i.importCssString(n.cssText,n.cssClass,!1)}),(function(){ace.require(["ace/theme/chrome"],function(t){m&&(m.exports=t)})})()})($p);var xp={exports:{}};(function(m,e){ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"],function(t,n,u){function i(y){var A=new Date().toLocaleString("en-us",y);return A.length==1?"0"+A:A}var s=t("./lib/dom"),d=t("./lib/oop"),o=t("./lib/event_emitter").EventEmitter,l=t("./lib/lang"),r=t("./range").Range,a=t("./range_list").RangeList,c=t("./keyboard/hash_handler").HashHandler,p=t("./tokenizer").Tokenizer,h=t("./clipboard"),f={CURRENT_WORD:function(y){return y.session.getTextRange(y.session.getWordRange())},SELECTION:function(y,A,T){var $=y.session.getTextRange();return T?$.replace(/\n\r?([ \t]*\S)/g,` -`+T+"$1"):$},CURRENT_LINE:function(y){return y.session.getLine(y.getCursorPosition().row)},PREV_LINE:function(y){return y.session.getLine(y.getCursorPosition().row-1)},LINE_INDEX:function(y){return y.getCursorPosition().row},LINE_NUMBER:function(y){return y.getCursorPosition().row+1},SOFT_TABS:function(y){return y.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(y){return y.session.getTabSize()},CLIPBOARD:function(y){return h.getText&&h.getText()},FILENAME:function(y){return/[^/\\]*$/.exec(this.FILEPATH(y))[0]},FILENAME_BASE:function(y){return/[^/\\]*$/.exec(this.FILEPATH(y))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(y){return this.FILEPATH(y).replace(/[^/\\]*$/,"")},FILEPATH:function(y){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(y){var A=y.session.$mode||{};return A.blockComment&&A.blockComment.start||""},BLOCK_COMMENT_END:function(y){var A=y.session.$mode||{};return A.blockComment&&A.blockComment.end||""},LINE_COMMENT:function(y){var A=y.session.$mode||{};return A.lineCommentStart||""},CURRENT_YEAR:i.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:i.bind(null,{year:"2-digit"}),CURRENT_MONTH:i.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:i.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:i.bind(null,{month:"short"}),CURRENT_DATE:i.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:i.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:i.bind(null,{weekday:"short"}),CURRENT_HOUR:i.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:i.bind(null,{minute:"2-digit"}),CURRENT_SECOND:i.bind(null,{second:"2-digit"})};f.SELECTED_TEXT=f.SELECTION;var g=(function(){function y(){this.snippetMap={},this.snippetNameMap={},this.variables=f}return y.prototype.getTokenizer=function(){return y.$tokenizer||this.createTokenizer()},y.prototype.createTokenizer=function(){function A(M){return M=M.substr(1),/^\d+$/.test(M)?[{tabstopId:parseInt(M,10)}]:[{text:M}]}function T(M){return"(?:[^\\\\"+M+"]|\\\\.)"}var $={regex:"/("+T("/")+"+)/",onMatch:function(M,O,_){var k=_[0];return k.fmtString=!0,k.guard=M.slice(1,-1),k.flag="",""},next:"formatString"};return y.$tokenizer=new p({start:[{regex:/\\./,onMatch:function(M,O,_){var k=M[1];return(k=="}"&&_.length||"`$\\".indexOf(k)!=-1)&&(M=k),[M]}},{regex:/}/,onMatch:function(M,O,_){return[_.length?_.shift():M]}},{regex:/\$(?:\d+|\w+)/,onMatch:A},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(M,O,_){var k=A(M.substr(1));return _.unshift(k[0]),k},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+T("\\|")+"*\\|",onMatch:function(M,O,_){var k=M.slice(1,-1).replace(/\\[,|\\]|,/g,function(S){return S.length==2?S[1]:"\0"}).split("\0").map(function(S){return{value:S}});return _[0].choices=k,[k[0]]},next:"start"},$,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(M,O,_){return _.length&&_[0].expectElse?(_[0].expectElse=!1,_[0].ifEnd={elseEnd:_[0]},[_[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(M,O,_){var k=M[1];return k=="}"&&_.length||"`$\\".indexOf(k)!=-1?M=k:k=="n"?M=` -`:k=="t"?M=" ":"ulULE".indexOf(k)!=-1&&(M={changeCase:k,local:k>"a"}),[M]}},{regex:"/\\w*}",onMatch:function(M,O,_){var k=_.shift();return k&&(k.flag=M.slice(1,-1)),this.next=k&&k.tabstopId?"start":"",[k||M]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(M,O,_){return[{text:M.slice(1)}]}},{regex:/\${\w+/,onMatch:function(M,O,_){var k={text:M.slice(2)};return _.unshift(k),[k]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(M,O,_){var k=_.shift();return this.next=k&&k.tabstopId?"start":"",[k||M]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(M,O,_){var k=_[0];return k.formatFunction=M.slice(2,-1),[_.shift()]},next:"formatString"},$,{regex:/:[\?\-+]?/,onMatch:function(M,O,_){M[1]=="+"&&(_[0].ifEnd=_[0]),M[1]=="?"&&(_[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]}),y.$tokenizer},y.prototype.tokenizeTmSnippet=function(A,T){return this.getTokenizer().getLineTokens(A,T).tokens.map(function($){return $.value||$})},y.prototype.getVariableValue=function(A,T,$){if(/^\d+$/.test(T))return(this.variables.__||{})[T]||"";if(/^[A-Z]\d+$/.test(T))return(this.variables[T[0]+"__"]||{})[T.substr(1)]||"";if(T=T.replace(/^TM_/,""),!this.variables.hasOwnProperty(T))return"";var M=this.variables[T];return typeof M=="function"&&(M=this.variables[T](A,T,$)),M??""},y.prototype.tmStrFormat=function(A,T,$){if(!T.fmt)return A;var M=T.flag||"",O=T.guard;O=new RegExp(O,M.replace(/[^gim]/g,""));var _=typeof T.fmt=="string"?this.tokenizeTmSnippet(T.fmt,"formatString"):T.fmt,k=this,S=A.replace(O,function(){var C=k.variables.__;k.variables.__=[].slice.call(arguments);for(var L=k.resolveVariables(_,$),I="E",F=0;F=0&&S.splice(C,1)}}var M=this.snippetMap,O=this.snippetNameMap;A.content?$(A):Array.isArray(A)&&A.forEach($)},y.prototype.parseSnippetFile=function(A){A=A.replace(/\r/g,"");for(var T=[],$={},M=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,O;O=M.exec(A);){if(O[1])try{$=JSON.parse(O[1]),T.push($)}catch{}if(O[4])$.content=O[4].replace(/^\t/gm,""),T.push($),$={};else{var _=O[2],k=O[3];if(_=="regex"){var S=/\/((?:[^\/\\]|\\.)*)|$/g;$.guard=S.exec(k)[1],$.trigger=S.exec(k)[1],$.endTrigger=S.exec(k)[1],$.endGuard=S.exec(k)[1]}else _=="snippet"?($.tabTrigger=k.match(/^\S*/)[0],$.name||($.name=k)):_&&($[_]=k)}}return T},y.prototype.getSnippetByName=function(A,T){var $=this.snippetNameMap,M;return this.getActiveScopes(T).some(function(O){var _=$[O];return _&&(M=_[A]),!!M},this),M},y})();d.implement(g.prototype,o);var v=function(y,A,T){function $(K){for(var J=[],Y=0;Y1?(j=J[J.length-1].length,W+=J.length-1):j+=K.length,U+=K}else K&&(K.start?K.end={row:W,column:j}:K.start={row:W,column:j})}),{text:U,tabstops:C,tokens:S}},b=(function(){function y(A){if(this.index=0,this.ranges=[],this.tabstops=[],A.tabstopManager)return A.tabstopManager;A.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=l.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(A)}return y.prototype.attach=function(A){this.$openTabstops=null,this.selectedTabstop=null,this.editor=A,this.session=A.session,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},y.prototype.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges.length=0,this.tabstops.length=0,this.selectedTabstop=null,this.editor.off("change",this.$onChange),this.editor.off("changeSelection",this.$onChangeSelection),this.editor.off("changeSession",this.$onChangeSession),this.editor.commands.off("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.session=null,this.editor=null},y.prototype.onChange=function(A){for(var T=A.action[0]=="r",$=this.selectedTabstop||{},M=$.parents||{},O=this.tabstops.slice(),_=0;_2&&(this.tabstops.length&&k.push(k.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,k))},y.prototype.addTabstopMarkers=function(A){var T=this.session;A.forEach(function($){$.markerId||($.markerId=T.addMarker($,"ace_snippet-marker","text"))})},y.prototype.removeTabstopMarkers=function(A){var T=this.session;A.forEach(function($){T.removeMarker($.markerId),$.markerId=null})},y.prototype.updateTabstopMarkers=function(){if(this.selectedTabstop){var A=this.selectedTabstop.snippetId;this.selectedTabstop.index===0&&A--,this.tabstops.forEach(function(T){T.snippetId===A?this.addTabstopMarkers(T):this.removeTabstopMarkers(T)},this)}},y.prototype.removeRange=function(A){var T=A.tabstop.indexOf(A);T!=-1&&A.tabstop.splice(T,1),T=this.ranges.indexOf(A),T!=-1&&this.ranges.splice(T,1),T=A.tabstop.rangeList.ranges.indexOf(A),T!=-1&&A.tabstop.splice(T,1),this.session.removeMarker(A.markerId),A.tabstop.length||(T=this.tabstops.indexOf(A.tabstop),T!=-1&&this.tabstops.splice(T,1),this.tabstops.length||this.detach())},y})();b.prototype.keyboardHandler=new c,b.prototype.keyboardHandler.bindKeys({Tab:function(y){n.snippetManager&&n.snippetManager.expandWithTab(y)||(y.tabstopManager.tabNext(1),y.renderer.scrollCursorIntoView())},"Shift-Tab":function(y){y.tabstopManager.tabNext(-1),y.renderer.scrollCursorIntoView()},Esc:function(y){y.tabstopManager.detach()}});var D=function(y,A){y.row==0&&(y.column+=A.column),y.row+=A.row},E=function(y,A){y.row==A.row&&(y.column-=A.column),y.row-=A.row};s.importCssString(` +`}),ace.define("ace/theme/chrome",["require","exports","module","ace/theme/chrome-css","ace/lib/dom"],function(t,n,h){n.isDark=!1,n.cssClass="ace-chrome",n.cssText=t("./chrome-css");var i=t("../lib/dom");i.importCssString(n.cssText,n.cssClass,!1)}),(function(){ace.require(["ace/theme/chrome"],function(t){m&&(m.exports=t)})})()})(kp);var Tp={exports:{}};(function(m,e){ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"],function(t,n,h){function i(y){var A=new Date().toLocaleString("en-us",y);return A.length==1?"0"+A:A}var s=t("./lib/dom"),d=t("./lib/oop"),o=t("./lib/event_emitter").EventEmitter,l=t("./lib/lang"),r=t("./range").Range,a=t("./range_list").RangeList,c=t("./keyboard/hash_handler").HashHandler,p=t("./tokenizer").Tokenizer,u=t("./clipboard"),f={CURRENT_WORD:function(y){return y.session.getTextRange(y.session.getWordRange())},SELECTION:function(y,A,T){var x=y.session.getTextRange();return T?x.replace(/\n\r?([ \t]*\S)/g,` +`+T+"$1"):x},CURRENT_LINE:function(y){return y.session.getLine(y.getCursorPosition().row)},PREV_LINE:function(y){return y.session.getLine(y.getCursorPosition().row-1)},LINE_INDEX:function(y){return y.getCursorPosition().row},LINE_NUMBER:function(y){return y.getCursorPosition().row+1},SOFT_TABS:function(y){return y.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(y){return y.session.getTabSize()},CLIPBOARD:function(y){return u.getText&&u.getText()},FILENAME:function(y){return/[^/\\]*$/.exec(this.FILEPATH(y))[0]},FILENAME_BASE:function(y){return/[^/\\]*$/.exec(this.FILEPATH(y))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(y){return this.FILEPATH(y).replace(/[^/\\]*$/,"")},FILEPATH:function(y){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(y){var A=y.session.$mode||{};return A.blockComment&&A.blockComment.start||""},BLOCK_COMMENT_END:function(y){var A=y.session.$mode||{};return A.blockComment&&A.blockComment.end||""},LINE_COMMENT:function(y){var A=y.session.$mode||{};return A.lineCommentStart||""},CURRENT_YEAR:i.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:i.bind(null,{year:"2-digit"}),CURRENT_MONTH:i.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:i.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:i.bind(null,{month:"short"}),CURRENT_DATE:i.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:i.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:i.bind(null,{weekday:"short"}),CURRENT_HOUR:i.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:i.bind(null,{minute:"2-digit"}),CURRENT_SECOND:i.bind(null,{second:"2-digit"})};f.SELECTED_TEXT=f.SELECTION;var g=(function(){function y(){this.snippetMap={},this.snippetNameMap={},this.variables=f}return y.prototype.getTokenizer=function(){return y.$tokenizer||this.createTokenizer()},y.prototype.createTokenizer=function(){function A(M){return M=M.substr(1),/^\d+$/.test(M)?[{tabstopId:parseInt(M,10)}]:[{text:M}]}function T(M){return"(?:[^\\\\"+M+"]|\\\\.)"}var x={regex:"/("+T("/")+"+)/",onMatch:function(M,O,_){var k=_[0];return k.fmtString=!0,k.guard=M.slice(1,-1),k.flag="",""},next:"formatString"};return y.$tokenizer=new p({start:[{regex:/\\./,onMatch:function(M,O,_){var k=M[1];return(k=="}"&&_.length||"`$\\".indexOf(k)!=-1)&&(M=k),[M]}},{regex:/}/,onMatch:function(M,O,_){return[_.length?_.shift():M]}},{regex:/\$(?:\d+|\w+)/,onMatch:A},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(M,O,_){var k=A(M.substr(1));return _.unshift(k[0]),k},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+T("\\|")+"*\\|",onMatch:function(M,O,_){var k=M.slice(1,-1).replace(/\\[,|\\]|,/g,function(S){return S.length==2?S[1]:"\0"}).split("\0").map(function(S){return{value:S}});return _[0].choices=k,[k[0]]},next:"start"},x,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(M,O,_){return _.length&&_[0].expectElse?(_[0].expectElse=!1,_[0].ifEnd={elseEnd:_[0]},[_[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(M,O,_){var k=M[1];return k=="}"&&_.length||"`$\\".indexOf(k)!=-1?M=k:k=="n"?M=` +`:k=="t"?M=" ":"ulULE".indexOf(k)!=-1&&(M={changeCase:k,local:k>"a"}),[M]}},{regex:"/\\w*}",onMatch:function(M,O,_){var k=_.shift();return k&&(k.flag=M.slice(1,-1)),this.next=k&&k.tabstopId?"start":"",[k||M]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(M,O,_){return[{text:M.slice(1)}]}},{regex:/\${\w+/,onMatch:function(M,O,_){var k={text:M.slice(2)};return _.unshift(k),[k]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(M,O,_){var k=_.shift();return this.next=k&&k.tabstopId?"start":"",[k||M]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(M,O,_){var k=_[0];return k.formatFunction=M.slice(2,-1),[_.shift()]},next:"formatString"},x,{regex:/:[\?\-+]?/,onMatch:function(M,O,_){M[1]=="+"&&(_[0].ifEnd=_[0]),M[1]=="?"&&(_[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]}),y.$tokenizer},y.prototype.tokenizeTmSnippet=function(A,T){return this.getTokenizer().getLineTokens(A,T).tokens.map(function(x){return x.value||x})},y.prototype.getVariableValue=function(A,T,x){if(/^\d+$/.test(T))return(this.variables.__||{})[T]||"";if(/^[A-Z]\d+$/.test(T))return(this.variables[T[0]+"__"]||{})[T.substr(1)]||"";if(T=T.replace(/^TM_/,""),!this.variables.hasOwnProperty(T))return"";var M=this.variables[T];return typeof M=="function"&&(M=this.variables[T](A,T,x)),M??""},y.prototype.tmStrFormat=function(A,T,x){if(!T.fmt)return A;var M=T.flag||"",O=T.guard;O=new RegExp(O,M.replace(/[^gim]/g,""));var _=typeof T.fmt=="string"?this.tokenizeTmSnippet(T.fmt,"formatString"):T.fmt,k=this,S=A.replace(O,function(){var C=k.variables.__;k.variables.__=[].slice.call(arguments);for(var L=k.resolveVariables(_,x),I="E",F=0;F=0&&S.splice(C,1)}}var M=this.snippetMap,O=this.snippetNameMap;A.content?x(A):Array.isArray(A)&&A.forEach(x)},y.prototype.parseSnippetFile=function(A){A=A.replace(/\r/g,"");for(var T=[],x={},M=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,O;O=M.exec(A);){if(O[1])try{x=JSON.parse(O[1]),T.push(x)}catch{}if(O[4])x.content=O[4].replace(/^\t/gm,""),T.push(x),x={};else{var _=O[2],k=O[3];if(_=="regex"){var S=/\/((?:[^\/\\]|\\.)*)|$/g;x.guard=S.exec(k)[1],x.trigger=S.exec(k)[1],x.endTrigger=S.exec(k)[1],x.endGuard=S.exec(k)[1]}else _=="snippet"?(x.tabTrigger=k.match(/^\S*/)[0],x.name||(x.name=k)):_&&(x[_]=k)}}return T},y.prototype.getSnippetByName=function(A,T){var x=this.snippetNameMap,M;return this.getActiveScopes(T).some(function(O){var _=x[O];return _&&(M=_[A]),!!M},this),M},y})();d.implement(g.prototype,o);var v=function(y,A,T){function x(K){for(var J=[],Y=0;Y1?(j=J[J.length-1].length,W+=J.length-1):j+=K.length,U+=K}else K&&(K.start?K.end={row:W,column:j}:K.start={row:W,column:j})}),{text:U,tabstops:C,tokens:S}},b=(function(){function y(A){if(this.index=0,this.ranges=[],this.tabstops=[],A.tabstopManager)return A.tabstopManager;A.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=l.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(A)}return y.prototype.attach=function(A){this.$openTabstops=null,this.selectedTabstop=null,this.editor=A,this.session=A.session,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},y.prototype.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges.length=0,this.tabstops.length=0,this.selectedTabstop=null,this.editor.off("change",this.$onChange),this.editor.off("changeSelection",this.$onChangeSelection),this.editor.off("changeSession",this.$onChangeSession),this.editor.commands.off("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.session=null,this.editor=null},y.prototype.onChange=function(A){for(var T=A.action[0]=="r",x=this.selectedTabstop||{},M=x.parents||{},O=this.tabstops.slice(),_=0;_2&&(this.tabstops.length&&k.push(k.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,k))},y.prototype.addTabstopMarkers=function(A){var T=this.session;A.forEach(function(x){x.markerId||(x.markerId=T.addMarker(x,"ace_snippet-marker","text"))})},y.prototype.removeTabstopMarkers=function(A){var T=this.session;A.forEach(function(x){T.removeMarker(x.markerId),x.markerId=null})},y.prototype.updateTabstopMarkers=function(){if(this.selectedTabstop){var A=this.selectedTabstop.snippetId;this.selectedTabstop.index===0&&A--,this.tabstops.forEach(function(T){T.snippetId===A?this.addTabstopMarkers(T):this.removeTabstopMarkers(T)},this)}},y.prototype.removeRange=function(A){var T=A.tabstop.indexOf(A);T!=-1&&A.tabstop.splice(T,1),T=this.ranges.indexOf(A),T!=-1&&this.ranges.splice(T,1),T=A.tabstop.rangeList.ranges.indexOf(A),T!=-1&&A.tabstop.splice(T,1),this.session.removeMarker(A.markerId),A.tabstop.length||(T=this.tabstops.indexOf(A.tabstop),T!=-1&&this.tabstops.splice(T,1),this.tabstops.length||this.detach())},y})();b.prototype.keyboardHandler=new c,b.prototype.keyboardHandler.bindKeys({Tab:function(y){n.snippetManager&&n.snippetManager.expandWithTab(y)||(y.tabstopManager.tabNext(1),y.renderer.scrollCursorIntoView())},"Shift-Tab":function(y){y.tabstopManager.tabNext(-1),y.renderer.scrollCursorIntoView()},Esc:function(y){y.tabstopManager.detach()}});var D=function(y,A){y.row==0&&(y.column+=A.column),y.row+=A.row},E=function(y,A){y.row==A.row&&(y.column-=A.column),y.row-=A.row};s.importCssString(` .ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute; -}`,"snippets.css",!1),n.snippetManager=new g;var w=t("./editor").Editor;(function(){this.insertSnippet=function(y,A){return n.snippetManager.insertSnippet(this,y,A)},this.expandSnippet=function(y){return n.snippetManager.expandWithTab(this,y)}}).call(w.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"],function(t,n,u){var i=t("../virtual_renderer").VirtualRenderer,s=t("../editor").Editor,d=t("../range").Range,o=t("../lib/event"),l=t("../lib/lang"),r=t("../lib/dom"),a=t("../config").nls,c=t("./../lib/useragent"),p=function(D){return"suggest-aria-id:".concat(D)},h=c.isSafari?"menu":"listbox",f=c.isSafari?"menuitem":"option",g=c.isSafari?"aria-current":"aria-selected",v=function(D){var E=new i(D);E.$maxLines=4;var w=new s(E);return w.setHighlightActiveLine(!1),w.setShowPrintMargin(!1),w.renderer.setShowGutter(!1),w.renderer.setHighlightGutterLine(!1),w.$mouseHandler.$focusTimeout=0,w.$highlightTagPending=!0,w},b=(function(){function D(E){var w=r.createElement("div"),y=v(w);E&&E.appendChild(w),w.style.display="none",y.renderer.content.style.cursor="default",y.renderer.setStyle("ace_autocomplete"),y.renderer.$textLayer.element.setAttribute("role",h),y.renderer.$textLayer.element.setAttribute("aria-roledescription",a("autocomplete.popup.aria-roledescription","Autocomplete suggestions")),y.renderer.$textLayer.element.setAttribute("aria-label",a("autocomplete.popup.aria-label","Autocomplete suggestions")),y.renderer.textarea.setAttribute("aria-hidden","true"),y.setOption("displayIndentGuides",!1),y.setOption("dragDelay",150);var A=function(){};y.focus=A,y.$isFocused=!0,y.renderer.$cursorLayer.restartTimer=A,y.renderer.$cursorLayer.element.style.opacity="0",y.renderer.$maxLines=8,y.renderer.$keepTextAreaAtCursor=!1,y.setHighlightActiveLine(!1),y.session.highlight(""),y.session.$searchHighlight.clazz="ace_highlight-marker",y.on("mousedown",function(S){var C=S.getDocumentPosition();y.selection.moveToPosition(C),M.start.row=M.end.row=C.row,S.stop()});var T,$=new d(-1,0,-1,1/0),M=new d(-1,0,-1,1/0);M.id=y.session.addMarker(M,"ace_active-line","fullLine"),y.setSelectOnHover=function(S){S?$.id&&(y.session.removeMarker($.id),$.id=null):$.id=y.session.addMarker($,"ace_line-hover","fullLine")},y.setSelectOnHover(!1),y.on("mousemove",function(S){if(!T){T=S;return}if(!(T.x==S.x&&T.y==S.y)){T=S,T.scrollTop=y.renderer.scrollTop,y.isMouseOver=!0;var C=T.getDocumentPosition().row;$.start.row!=C&&($.id||y.setRow(C),_(C))}}),y.renderer.on("beforeRender",function(){if(T&&$.start.row!=-1){T.$pos=null;var S=T.getDocumentPosition().row;$.id||y.setRow(S),_(S,!0)}}),y.renderer.on("afterRender",function(){for(var S=y.renderer.$textLayer,C=S.config.firstRow,L=S.config.lastRow;C<=L;C++){var I=S.element.childNodes[C-S.config.firstRow];I.setAttribute("role",f),I.setAttribute("aria-roledescription",a("autocomplete.popup.item.aria-roledescription","item")),I.setAttribute("aria-setsize",y.data.length),I.setAttribute("aria-describedby","doc-tooltip"),I.setAttribute("aria-posinset",C+1);var F=y.getData(C);if(F){var R="".concat(F.caption||F.value).concat(F.meta?", ".concat(F.meta):"");I.setAttribute("aria-label",R)}var B=I.querySelectorAll(".ace_completion-highlight");B.forEach(function(N){N.setAttribute("role","mark")})}}),y.renderer.on("afterRender",function(){var S=y.getRow(),C=y.renderer.$textLayer,L=C.element.childNodes[S-C.config.firstRow],I=document.activeElement;if(L!==y.selectedNode&&y.selectedNode&&(r.removeCssClass(y.selectedNode,"ace_selected"),y.selectedNode.removeAttribute(g),y.selectedNode.removeAttribute("id")),I.removeAttribute("aria-activedescendant"),y.selectedNode=L,L){var F=p(S);r.addCssClass(L,"ace_selected"),L.id=F,C.element.setAttribute("aria-activedescendant",F),I.setAttribute("aria-activedescendant",F),L.setAttribute(g,"true")}});var O=function(){_(-1)},_=function(S,C){S!==$.start.row&&($.start.row=$.end.row=S,C||y.session._emit("changeBackMarker"),y._emit("changeHoverMarker"))};y.getHoveredRow=function(){return $.start.row},o.addListener(y.container,"mouseout",function(){y.isMouseOver=!1,O()}),y.on("hide",O),y.on("changeSelection",O),y.session.doc.getLength=function(){return y.data.length},y.session.doc.getLine=function(S){var C=y.data[S];return typeof C=="string"?C:C&&C.value||""};var k=y.session.bgTokenizer;return k.$tokenizeRow=function(S){function C(K,J){K&&I.push({type:(L.className||"")+(J||""),value:K})}var L=y.data[S],I=[];if(!L)return I;typeof L=="string"&&(L={value:L});for(var F=L.caption||L.value||L.name,R=F.toLowerCase(),B=(y.filterText||"").toLowerCase(),N=0,H=0,W=0;W<=B.length;W++)if(W!=H&&(L.matchMask&1<=W?L="bottom":L="top"),L==="top"?(j.bottom=S.top-this.$borderSize,j.top=j.bottom-W):L==="bottom"&&(j.top=S.top+C+this.$borderSize,j.bottom=j.top+W);var J=j.top>=0&&j.bottom<=B;if(!I&&!J)return!1;J?H.$maxPixelHeight=null:L==="top"?H.$maxPixelHeight=K:H.$maxPixelHeight=U,L==="top"?(F.style.top="",F.style.bottom=B+R-j.bottom+"px",y.isTopdown=!1):(F.style.top=j.top+"px",F.style.bottom="",y.isTopdown=!0),F.style.display="";var Y=S.left;return Y+F.offsetWidth>N&&(Y=N-F.offsetWidth),F.style.left=Y+"px",F.style.right="",y.isOpen||(y.isOpen=!0,this._signal("show"),T=null),y.anchorPos=S,y.anchor=L,r.$fixPositionBug(F),!0},y.show=function(S,C,L){this.tryShow(S,C,L?"bottom":void 0,!0)},y.goTo=function(S){var C=this.getRow(),L=this.session.getLength()-1;switch(S){case"up":C=C<=0?L:C-1;break;case"down":C=C>=L?-1:C+1;break;case"start":C=0;break;case"end":C=L}this.setRow(C)},y.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},y.$imageSize=0,y.$borderSize=1,y}return D})();r.importCssString(` +}`,"snippets.css",!1),n.snippetManager=new g;var w=t("./editor").Editor;(function(){this.insertSnippet=function(y,A){return n.snippetManager.insertSnippet(this,y,A)},this.expandSnippet=function(y){return n.snippetManager.expandWithTab(this,y)}}).call(w.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"],function(t,n,h){var i=t("../virtual_renderer").VirtualRenderer,s=t("../editor").Editor,d=t("../range").Range,o=t("../lib/event"),l=t("../lib/lang"),r=t("../lib/dom"),a=t("../config").nls,c=t("./../lib/useragent"),p=function(D){return"suggest-aria-id:".concat(D)},u=c.isSafari?"menu":"listbox",f=c.isSafari?"menuitem":"option",g=c.isSafari?"aria-current":"aria-selected",v=function(D){var E=new i(D);E.$maxLines=4;var w=new s(E);return w.setHighlightActiveLine(!1),w.setShowPrintMargin(!1),w.renderer.setShowGutter(!1),w.renderer.setHighlightGutterLine(!1),w.$mouseHandler.$focusTimeout=0,w.$highlightTagPending=!0,w},b=(function(){function D(E){var w=r.createElement("div"),y=v(w);E&&E.appendChild(w),w.style.display="none",y.renderer.content.style.cursor="default",y.renderer.setStyle("ace_autocomplete"),y.renderer.$textLayer.element.setAttribute("role",u),y.renderer.$textLayer.element.setAttribute("aria-roledescription",a("autocomplete.popup.aria-roledescription","Autocomplete suggestions")),y.renderer.$textLayer.element.setAttribute("aria-label",a("autocomplete.popup.aria-label","Autocomplete suggestions")),y.renderer.textarea.setAttribute("aria-hidden","true"),y.setOption("displayIndentGuides",!1),y.setOption("dragDelay",150);var A=function(){};y.focus=A,y.$isFocused=!0,y.renderer.$cursorLayer.restartTimer=A,y.renderer.$cursorLayer.element.style.opacity="0",y.renderer.$maxLines=8,y.renderer.$keepTextAreaAtCursor=!1,y.setHighlightActiveLine(!1),y.session.highlight(""),y.session.$searchHighlight.clazz="ace_highlight-marker",y.on("mousedown",function(S){var C=S.getDocumentPosition();y.selection.moveToPosition(C),M.start.row=M.end.row=C.row,S.stop()});var T,x=new d(-1,0,-1,1/0),M=new d(-1,0,-1,1/0);M.id=y.session.addMarker(M,"ace_active-line","fullLine"),y.setSelectOnHover=function(S){S?x.id&&(y.session.removeMarker(x.id),x.id=null):x.id=y.session.addMarker(x,"ace_line-hover","fullLine")},y.setSelectOnHover(!1),y.on("mousemove",function(S){if(!T){T=S;return}if(!(T.x==S.x&&T.y==S.y)){T=S,T.scrollTop=y.renderer.scrollTop,y.isMouseOver=!0;var C=T.getDocumentPosition().row;x.start.row!=C&&(x.id||y.setRow(C),_(C))}}),y.renderer.on("beforeRender",function(){if(T&&x.start.row!=-1){T.$pos=null;var S=T.getDocumentPosition().row;x.id||y.setRow(S),_(S,!0)}}),y.renderer.on("afterRender",function(){for(var S=y.renderer.$textLayer,C=S.config.firstRow,L=S.config.lastRow;C<=L;C++){var I=S.element.childNodes[C-S.config.firstRow];I.setAttribute("role",f),I.setAttribute("aria-roledescription",a("autocomplete.popup.item.aria-roledescription","item")),I.setAttribute("aria-setsize",y.data.length),I.setAttribute("aria-describedby","doc-tooltip"),I.setAttribute("aria-posinset",C+1);var F=y.getData(C);if(F){var R="".concat(F.caption||F.value).concat(F.meta?", ".concat(F.meta):"");I.setAttribute("aria-label",R)}var B=I.querySelectorAll(".ace_completion-highlight");B.forEach(function(N){N.setAttribute("role","mark")})}}),y.renderer.on("afterRender",function(){var S=y.getRow(),C=y.renderer.$textLayer,L=C.element.childNodes[S-C.config.firstRow],I=document.activeElement;if(L!==y.selectedNode&&y.selectedNode&&(r.removeCssClass(y.selectedNode,"ace_selected"),y.selectedNode.removeAttribute(g),y.selectedNode.removeAttribute("id")),I.removeAttribute("aria-activedescendant"),y.selectedNode=L,L){var F=p(S);r.addCssClass(L,"ace_selected"),L.id=F,C.element.setAttribute("aria-activedescendant",F),I.setAttribute("aria-activedescendant",F),L.setAttribute(g,"true")}});var O=function(){_(-1)},_=function(S,C){S!==x.start.row&&(x.start.row=x.end.row=S,C||y.session._emit("changeBackMarker"),y._emit("changeHoverMarker"))};y.getHoveredRow=function(){return x.start.row},o.addListener(y.container,"mouseout",function(){y.isMouseOver=!1,O()}),y.on("hide",O),y.on("changeSelection",O),y.session.doc.getLength=function(){return y.data.length},y.session.doc.getLine=function(S){var C=y.data[S];return typeof C=="string"?C:C&&C.value||""};var k=y.session.bgTokenizer;return k.$tokenizeRow=function(S){function C(K,J){K&&I.push({type:(L.className||"")+(J||""),value:K})}var L=y.data[S],I=[];if(!L)return I;typeof L=="string"&&(L={value:L});for(var F=L.caption||L.value||L.name,R=F.toLowerCase(),B=(y.filterText||"").toLowerCase(),N=0,z=0,W=0;W<=B.length;W++)if(W!=z&&(L.matchMask&1<=W?L="bottom":L="top"),L==="top"?(j.bottom=S.top-this.$borderSize,j.top=j.bottom-W):L==="bottom"&&(j.top=S.top+C+this.$borderSize,j.bottom=j.top+W);var J=j.top>=0&&j.bottom<=B;if(!I&&!J)return!1;J?z.$maxPixelHeight=null:L==="top"?z.$maxPixelHeight=K:z.$maxPixelHeight=U,L==="top"?(F.style.top="",F.style.bottom=B+R-j.bottom+"px",y.isTopdown=!1):(F.style.top=j.top+"px",F.style.bottom="",y.isTopdown=!0),F.style.display="";var Y=S.left;return Y+F.offsetWidth>N&&(Y=N-F.offsetWidth),F.style.left=Y+"px",F.style.right="",y.isOpen||(y.isOpen=!0,this._signal("show"),T=null),y.anchorPos=S,y.anchor=L,r.$fixPositionBug(F),!0},y.show=function(S,C,L){this.tryShow(S,C,L?"bottom":void 0,!0)},y.goTo=function(S){var C=this.getRow(),L=this.session.getLength()-1;switch(S){case"up":C=C<=0?L:C-1;break;case"down":C=C>=L?-1:C+1;break;case"start":C=0;break;case"end":C=L}this.setRow(C)},y.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},y.$imageSize=0,y.$borderSize=1,y}return D})();r.importCssString(` .ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1; @@ -1387,80 +1387,80 @@ import{i as Ao,h as x,f as Kl,a as Gl,p as Jl}from"./ConfigCustomJavascriptSet__ animation: none; } } -`,"autocompletion.css",!1),n.AcePopup=b,n.$singleLineEditor=v,n.getAriaId=p}),ace.define("ace/autocomplete/inline_screenreader",["require","exports","module"],function(t,n,u){var i=(function(){function s(d){this.editor=d,this.screenReaderDiv=document.createElement("div"),this.screenReaderDiv.classList.add("ace_screenreader-only"),this.editor.container.appendChild(this.screenReaderDiv)}return s.prototype.setScreenReaderContent=function(d){for(!this.popup&&this.editor.completer&&this.editor.completer.popup&&(this.popup=this.editor.completer.popup,this.popup.renderer.on("afterRender",function(){var l=this.popup.getRow(),r=this.popup.renderer.$textLayer,a=r.element.childNodes[l-r.config.firstRow];if(a){for(var c="doc-tooltip ",p=0;p=0&&o.test(s[r]);r--)l.push(s[r]);return l.reverse().join("")},n.retrieveFollowingIdentifier=function(s,d,o){o=o||i;for(var l=[],r=d;r0)for(var y=this.popup.getFirstVisibleRow();y<=this.popup.getLastVisibleRow();y++){var A=this.popup.getData(y);A&&(!w||A.hideInlinePreview)&&this.$seen(A)}},E.prototype.$onPopupShow=function(w){this.$onPopupChange(w),this.stickySelection=!1,this.stickySelectionDelay>=0&&this.stickySelectionTimer.schedule(this.stickySelectionDelay)},E.prototype.observeLayoutChanges=function(){if(!(this.$elements||!this.editor)){window.addEventListener("resize",this.onLayoutChange,{passive:!0}),window.addEventListener("wheel",this.mousewheelListener);for(var w=this.editor.container.parentNode,y=[];w;)y.push(w),w.addEventListener("scroll",this.onLayoutChange,{passive:!0}),w=w.parentNode;this.$elements=y}},E.prototype.unObserveLayoutChanges=function(){var w=this;window.removeEventListener("resize",this.onLayoutChange,{passive:!0}),window.removeEventListener("wheel",this.mousewheelListener),this.$elements&&this.$elements.forEach(function(y){y.removeEventListener("scroll",w.onLayoutChange,{passive:!0})}),this.$elements=null},E.prototype.onLayoutChange=function(){if(!this.popup.isOpen)return this.unObserveLayoutChanges();this.$updatePopupPosition(),this.updateDocTooltip()},E.prototype.$updatePopupPosition=function(){var w=this.editor,y=w.renderer,A=y.layerConfig.lineHeight,T=y.$cursorLayer.getPixelPosition(this.base,!0);T.left-=this.popup.getTextLeftOffset();var $=w.container.getBoundingClientRect();T.top+=$.top-y.layerConfig.offset,T.left+=$.left-w.renderer.scrollLeft,T.left+=y.gutterWidth;var M={top:T.top,left:T.left};y.$ghostText&&y.$ghostTextWidget&&this.base.row===y.$ghostText.position.row&&(M.top+=y.$ghostTextWidget.el.offsetHeight);var O=w.container.getBoundingClientRect().bottom-A,_=Othis.filterText&&w.lastIndexOf(this.filterText,0)===0)var y=this.filtered;else var y=this.all;this.filterText=w,y=this.filterCompletions(y,this.filterText),y=y.sort(function(T,$){return $.exactMatch-T.exactMatch||$.$score-T.$score||(T.caption||T.value).localeCompare($.caption||$.value)});var A=null;y=y.filter(function(T){var $=T.snippet||T.caption||T.value;return $===A?!1:(A=$,!0)}),this.filtered=y},E.prototype.filterCompletions=function(w,y){var A=[],T=y.toUpperCase(),$=y.toLowerCase();e:for(var M=0,O;O=w[M];M++){if(O.skipFilter){O.$score=O.score,A.push(O);continue}var _=!this.ignoreCaption&&O.caption||O.value||O.snippet;if(_){var k=-1,S=0,C=0,L,I;if(this.exactMatch){if(y!==_.substr(0,y.length))continue e}else{var F=_.toLowerCase().indexOf($);if(F>-1)C=F;else for(var R=0;R=0&&(N<0||B0&&(k===-1&&(C+=10),C+=I,S|=1<c)&&(v.range.start.row===f?h++:(f=v.range.start.row,h=0),!(h>200))){var b=v.range.clipRows(a,c);if(!(b.start.row===b.end.row&&b.start.column===b.end.column)){var D=b.toScreenRange(l);if(D.isEmpty()){p=l.getNextFoldLine(b.end.row,p),p&&p.end.row>b.end.row&&(a=p.end.row);continue}this.markerType==="fullLine"?o.drawFullLineMarker(d,D,v.className,r):D.isMultiLine()?this.markerType==="line"?o.drawMultiLineMarker(d,D,v.className,r):o.drawTextMarker(d,D,v.className,r):o.drawSingleLineMarker(d,D,v.className+" ace_br15",r)}}}},s})();i.prototype.MAX_MARKERS=1e4,n.MarkerGroup=i}),ace.define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(t,n,u){function i(l,r){var a=l.getTextRange(d.fromPoints({row:0,column:0},r));return a.split(o).length-1}function s(l,r){var a=i(l,r),c=l.getValue().split(o),p=Object.create(null),h=c[a];return c.forEach(function(f,g){if(!(!f||f===h)){var v=Math.abs(a-g),b=c.length-v;p[f]?p[f]=Math.max(b,p[f]):p[f]=b}}),p}var d=t("../range").Range,o=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;n.getCompletions=function(l,r,a,c,p){var h=s(r,a),f=Object.keys(h);p(null,f.map(function(g){return{caption:g,value:g,score:h[g],meta:"local"}}))}}),ace.define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/marker_group","ace/autocomplete/text_completer","ace/editor","ace/config"],function(t,n,u){var i=t("../snippets").snippetManager,s=t("../autocomplete").Autocomplete,d=t("../config"),o=t("../lib/lang"),l=t("../autocomplete/util"),r=t("../marker_group").MarkerGroup,a=t("../autocomplete/text_completer"),c={getCompletions:function($,M,O,_,k){if(M.$mode.completer)return M.$mode.completer.getCompletions($,M,O,_,k);var S=$.session.getState(O.row),C=M.$mode.getCompletions(S,M,O,_);C=C.map(function(L){return L.completerId=c.id,L}),k(null,C)},id:"keywordCompleter"},p=function($){var M={};return $.replace(/\${(\d+)(:(.*?))?}/g,function(O,_,k,S){return M[_]=S||""}).replace(/\$(\d+?)/g,function(O,_){return M[_]})},h={getCompletions:function($,M,O,_,k){var S=[],C=M.getTokenAt(O.row,O.column);C&&C.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)?S.push("html-tag"):S=i.getActiveScopes($);var L=i.snippetMap,I=[];S.forEach(function(F){for(var R=L[F]||[],B=R.length;B--;){var N=R[B],H=N.name||N.tabTrigger;H&&I.push({caption:H,snippet:N.content,meta:N.tabTrigger&&!N.name?N.tabTrigger+"⇥ ":"snippet",completerId:h.id})}},this),k(null,I)},getDocTooltip:function($){$.snippet&&!$.docHTML&&($.docHTML=["",o.escapeHTML($.caption),"","
",o.escapeHTML(p($.snippet))].join(""))},id:"snippetCompleter"},f=[h,a,c];n.setCompleters=function($){f.length=0,$&&f.push.apply(f,$)},n.addCompleter=function($){f.push($)},n.textCompleter=a,n.keyWordCompleter=c,n.snippetCompleter=h;var g={name:"expandSnippet",exec:function($){return i.expandWithTab($)},bindKey:"Tab"},v=function($,M){b(M.session.$mode)},b=function($){typeof $=="string"&&($=d.$modes[$]),$&&(i.files||(i.files={}),D($.$id,$.snippetFileId),$.modes&&$.modes.forEach(b))},D=function($,M){!M||!$||i.files[$]||(i.files[$]={},d.loadModule(M,function(O){O&&(i.files[$]=O,!O.snippets&&O.snippetText&&(O.snippets=i.parseSnippetFile(O.snippetText)),i.register(O.snippets||[],O.scope),O.includeScopes&&(i.snippetMap[O.scope].includeScopes=O.includeScopes,O.includeScopes.forEach(function(_){b("ace/mode/"+_)})))}))},E=function($){var M=$.editor,O=M.completer&&M.completer.activated;if($.command.name==="backspace")O&&!l.getCompletionPrefix(M)&&M.completer.detach();else if($.command.name==="insertstring"&&!O){w=$;var _=$.editor.$liveAutocompletionDelay;_?y.delay(_):A($)}},w,y=o.delayedCall(function(){A(w)},0),A=function($){var M=$.editor,O=l.getCompletionPrefix(M),_=$.args,k=l.triggerAutocomplete(M,_);if(O&&O.length>=M.$liveAutocompletionThreshold||k){var S=s.for(M);S.autoShown=!0,S.showPopup(M)}},T=t("../editor").Editor;t("../config").defineOptions(T.prototype,"editor",{enableBasicAutocompletion:{set:function($){$?(s.for(this),this.completers||(this.completers=Array.isArray($)?$:f),this.commands.addCommand(s.startCommand)):this.commands.removeCommand(s.startCommand)},value:!1},enableLiveAutocompletion:{set:function($){$?(this.completers||(this.completers=Array.isArray($)?$:f),this.commands.on("afterExec",E)):this.commands.off("afterExec",E)},value:!1},liveAutocompletionDelay:{initialValue:0},liveAutocompletionThreshold:{initialValue:0},enableSnippets:{set:function($){$?(this.commands.addCommand(g),this.on("changeMode",v),v(null,this)):(this.commands.removeCommand(g),this.off("changeMode",v))},value:!1}}),n.MarkerGroup=r}),(function(){ace.require(["ace/ext/language_tools"],function(t){m&&(m.exports=t)})})()})(xp);const Zr={jsonError:{border:"1px solid red",minHeight:200},jsonNoError:{border:"1px solid #00000000",minHeight:200}};function nr(m){return x.createElement(wp,{style:m.error===!0?Zr.jsonError:m.error===!1?Zr.jsonNoError:void 0,mode:m.mode||"json",width:"100%",height:"100%",showPrintMargin:m.editValueMode,showGutter:m.editValueMode,highlightActiveLine:m.editValueMode,defaultValue:m.defaultValue,theme:m.themeType==="dark"?"clouds_midnight":"chrome",value:m.value,readOnly:!m.onChange,onChange:e=>{var t;return(t=m.onChange)==null?void 0:t.call(m,e)},name:m.name||"UNIQUE_ID_OF_DIV1",fontSize:m.fontSize||14,setOptions:{enableBasicAutocompletion:!0,enableLiveAutocompletion:!0,enableSnippets:!0,showLineNumbers:m.editValueMode,tabSize:m.editValueMode?2:void 0},editorProps:{$blockScrolling:!0}})}const ms={flex:{display:"flex"},button:{height:48,minWidth:48},wrapper:{width:"calc(100vw - 40px)",height:"calc(100vh - 188px)"}};class _p extends V{async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t)||"{}";this.setState({value:n,initialized:!0,jsonError:this.validateJson(n)})}validateJson(e){let t=!1;if(this.props.schema.validateJson!==!1&&(e||!this.props.schema.allowEmpty))try{this.props.schema.json5?Uo.parse(e):JSON.parse(e)}catch(n){console.log("Error in JSON",n),t=!0}return t}renderItem(e,t){if(!this.state.initialized)return null;const{schema:n,data:u,attr:i}=this.props,{value:s,showSelectId:d}=this.state,o=n.readOnly===!0||t;return x.createElement(fe,{fullWidth:!0,variant:"standard"},x.createElement("div",{style:ms.flex},x.createElement(me,{color:"grey",style:ms.button,size:"small",variant:"outlined",onClick:()=>this.setState({showSelectId:!0})},P.I18n.t("ra_JSON editor"))),d?x.createElement(Xs,{title:this.getText(n.label),overflowHidden:!0,applyDisabled:this.state.jsonError&&this.props.schema.doNotApplyWithError||o,onClose:()=>{o?this.setState({showSelectId:!1}):this.setState({showSelectId:!1,value:V.getValue(u,i)||{}})},onApply:o?void 0:()=>this.setState({showSelectId:!1},()=>this.onChange(i,s))},x.createElement("div",{style:{...ms.wrapper,border:this.state.jsonError?"2px solid red":"2px solid transparent"}},x.createElement(nr,{mode:this.props.schema.json5?"json5":"json",value:typeof s=="object"?JSON.stringify(s):s,onChange:o?void 0:l=>this.setState({value:l,jsonError:this.validateJson(l)}),name:"ConfigJsonEditor",themeType:this.props.oContext.themeType}))):null,n.help||this.state.jsonError?x.createElement(ve,null,this.state.jsonError?P.I18n.t("ra_Invalid JSON"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const kp=[{value:"en",label:"English"},{value:"de",label:"Deutsch"},{value:"ru",label:"русский"},{value:"pt",label:"Portugues"},{value:"nl",label:"Nederlands"},{value:"fr",label:"français"},{value:"it",label:"Italiano"},{value:"es",label:"Espanol"},{value:"pl",label:"Polski"},{value:"uk",label:"Український"},{value:"zh-cn",label:"简体中文"}];class Tp extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr),t=[...kp];this.props.schema.system?t.unshift({value:"",label:P.I18n.t("ra_System language")}):t.unshift({value:"",label:P.I18n.t("ra_none")}),this.setState({value:this.props.schema.system?e||"":e||P.I18n.getLanguage(),selectOptions:t})}renderItem(e,t){var u,i;if(!this.state.selectOptions)return null;const n=(u=this.state.selectOptions)==null?void 0:u.find(s=>s.value===this.state.value||!s.value&&!this.state.value);return x.createElement(fe,{fullWidth:!0,variant:"standard"},this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,disabled:t,value:this.state.value||"_",renderValue:()=>this.getText(n==null?void 0:n.label,this.props.schema.noTranslation),onChange:s=>{let{value:d}=s.target;d==="_"&&(d=""),this.setState({value:d},()=>{const o=this.onChange(this.props.attr,d);if(o instanceof Promise&&o.catch(l=>console.error(l)),this.props.schema.changeGuiLanguage)if(d){if(d===P.I18n.getLanguage())return;P.I18n.setLanguage(d),this.props.oContext.changeLanguage&&this.props.oContext.changeLanguage()}else this.props.oContext.socket.getSystemConfig().then(l=>{l.common.language!==P.I18n.getLanguage()&&l.common.language&&(P.I18n.setLanguage(l.common.language),this.props.oContext.changeLanguage&&this.props.oContext.changeLanguage())}).catch(l=>console.error(`Cannot read system config: ${l}`))})}},(i=this.state.selectOptions)==null?void 0:i.map(s=>x.createElement(xe,{key:s.value,value:s.value},s.label))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Lp extends V{scrollRef;constructor(e){super(e),this.scrollRef=x.createRef()}scrolledDown(){return this.scrollRef.current?this.scrollRef.current.offsetHeight+this.scrollRef.current.scrollTop>=this.scrollRef.current.scrollHeight:!1}async componentDidMount(){await super.componentDidMount(),V.getValue(this.props.data,this.props.attr)||(this.props.schema.licenseUrl?(this.setState({showLicenseDialog:!0,loading:!0,scrolledDown:!1}),fetch(this.props.schema.licenseUrl).then(e=>e.text()).then(e=>this.setState({license:e,loading:!1})).catch(e=>this.setState({license:e.toString(),loading:!1,error:!0,scrolledDown:!1}))):this.setState({showLicenseDialog:!0,scrolledDown:!1}),setTimeout(()=>{this.scrollRef.current&&(this.scrolledDown()?this.setState({scrolledDown:!0}):this.scrollRef.current.addEventListener("scroll",()=>{!this.state.scrolledDown&&this.scrolledDown()&&this.setState({scrolledDown:!0})}))},1e3))}renderItem(e,t){return this.state.showLicenseDialog?x.createElement(Lt,{maxWidth:"lg",open:!0,onClose:(n,u)=>{u!=="escapeKeyDown"&&u!=="backdropClick"&&this.setState({showLicenseDialog:!1})}},x.createElement(yn,null,this.props.schema.title?P.I18n.t(this.props.schema.title):P.I18n.t("ra_License agreement")),x.createElement(Kt,null,this.props.schema.licenseUrl?x.createElement(x.Fragment,null,this.state.loading?x.createElement(Wi,null):null,x.createElement("pre",{ref:this.scrollRef,style:{width:"100%",height:"100%",overflowY:"auto",fontSize:14}},this.state.license)):null,!this.props.schema.licenseUrl&&this.props.schema.texts?x.createElement("div",{ref:this.scrollRef,style:{width:"100%",height:"100%",overflowY:"auto",fontSize:14}},this.props.schema.texts.map((n,u)=>this.props.schema.noTranslation?x.createElement("p",{key:u},n):x.createElement("p",{key:u},P.I18n.t(n)))):null),x.createElement(Gt,null,this.props.schema.checkBox?x.createElement(Xn,{control:x.createElement(Zt,{disabled:t,checked:!!this.state.licenseChecked,onClick:()=>this.setState({licenseChecked:!this.state.licenseChecked})}),label:P.I18n.t(this.props.schema.checkBox)}):null,x.createElement(me,{disabled:t||this.state.loading||this.state.error||this.props.schema.checkBox&&!this.state.licenseChecked||!this.state.scrolledDown,onClick:()=>{this.setState({showLicenseDialog:!1});const n=this.onChange(this.props.attr,!0);n instanceof Promise&&n.catch(u=>console.error(`Cannot set value: ${u}`))},color:"primary",variant:"contained",startIcon:x.createElement(Ks,null)},this.props.schema.agreeText?P.I18n.t(this.props.schema.agreeText):P.I18n.t("ra_Accept license")),x.createElement(me,{onClick:()=>{this.setState({showLicenseDialog:!1}),setTimeout(()=>this.setState({showLicenseDialog:!0}),2e3)},color:"grey",variant:"contained",startIcon:x.createElement(ht,null)},P.I18n.t("ra_Close")))):null}}const qr={indeterminate:{opacity:.5},control:{flexDirection:"row",width:"100%"}};class Mp extends V{updateTimeout;async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr);if(e==null&&(e=""),Array.isArray(e)&&this.props.oContext.multiEdit){e=V.DIFFERENT_VALUE,this.setState({_value:e,oldValue:e});return}this.setState({_value:e.toString(),oldValue:e.toString()})}static getDerivedStateFromProps(e,t){if(e.schema.min!==void 0&&e.schema.min<0||e.schema.max!==void 0&&e.schema.max<0)return null;const n=V.getValue(e.data,e.attr);return e.oContext.multiEdit&&t._value===V.DIFFERENT_VALUE?{_value:V.DIFFERENT_VALUE}:n==null||t.oldValue===null||t.oldValue===void 0||n.toString()!==parseFloat(t._value).toString()&&n.toString()!==t.oldValue.toString()?{_value:n}:null}checkValue(e){if(e==null||(e=e.toString().trim().replace(",","."),e==="-"))return null;const t=e===""?0:parseFloat(e);return e!==""&&Number.isNaN(t)?"ra_Not a number":e!==""&&window.isFinite(t)?this.props.schema.min!==void 0&&tthis.props.schema.max?"ra_Too big":e===""||e==="-"||Number.isNaN(t)?"ra_Not a number":null:"ra_Not a number"}renderItem(e,t){var i;const n=Array.isArray(this.state._value)||this.state._value===V.DIFFERENT_VALUE;if(this.state.oldValue!==null&&this.state.oldValue!==void 0?(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=void 0,this.setState({oldValue:null})},30)):this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=void 0),n){const s=V.getValue(this.props.data,this.props.attr),d=(s==null?void 0:s.filter(o=>o||o===0).map(o=>({label:o.toString(),value:o})))||[];return d.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),x.createElement(Pi,{style:qr.indeterminate,fullWidth:!0,freeSolo:!0,value:d[0],getOptionSelected:(o,l)=>o.label===l.label,onChange:(o,l)=>{const r=this.onChange(this.props.attr,l==null?void 0:l.value,()=>{this.setState({_value:l==null?void 0:l.value,oldValue:this.state._value})});r instanceof Promise&&r.catch(a=>console.error(a))},options:d,getOptionLabel:o=>o.label,renderInput:o=>x.createElement(pe,{...o,label:this.getText(this.props.schema.label),variant:"standard",slotProps:{htmlInput:{...o.inputProps,readOnly:this.props.schema.readOnly||!1},input:{endAdornment:this.props.schema.unit?this.getText(this.props.schema.unit,this.props.schema.noTranslation):void 0}},error:!!e,placeholder:this.getText(this.props.schema.placeholder),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),disabled:!!t})})}!e&&this.state._value!==null&&this.state._value!==void 0&&this.state._value&&(e=this.checkValue(this.state._value),e&&(e=P.I18n.t(e)));const u=parseFloat(((i=this.state._value)==null?void 0:i.toString().replace(",","."))||"");return x.createElement(fe,{variant:"standard",style:qr.control},x.createElement(pe,{sx:{"& .up-down":{display:"none"},"&:hover .up-down":{display:"block"}},variant:"standard",type:Number.isNaN(u)?"text":this.props.schema.min!==void 0&&this.props.schema.min>=0?"number":"text",fullWidth:!0,slotProps:{htmlInput:{min:this.props.schema.min,max:this.props.schema.max,step:this.props.schema.step,readOnly:this.props.schema.readOnly||!1},input:{endAdornment:this.props.schema.unit?this.getText(this.props.schema.unit,this.props.schema.noTranslation):null}},value:this.state._value??"",error:!!e,disabled:!!t,onChange:s=>{const d=s.target.value,o=this.checkValue(d);o?this.onError(this.props.attr,P.I18n.t(o)):this.onError(this.props.attr),this.setState({_value:d,oldValue:this.state._value},()=>{const l=parseFloat(d.toString().replace(",","."));Number.isNaN(l)?this.onChange(this.props.attr,d.toString().replace(",",".")):this.onChange(this.props.attr,l)})},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:e&&typeof e=="string"?e:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}))}}class Ip extends V{authWindow;oid;url;constructor(e){super(e),this.state={...this.state,accessTokens:"",success:!1,blocked:!1,running:!1,pressed:!1,clientId:"",clientSecret:"",accessTokenError:""},this.url=`https://oauth2.iobroker.in/${e.schema.identifier}?redirect=true`,e.schema.scope&&(this.url+=`&scope=${encodeURIComponent(e.schema.scope)}`),this.oid=`${this.props.oContext.adapterName}.${this.props.oContext.instance}.${this.props.schema.saveTokenIn||"oauth2Tokens"}`}async componentDidMount(){await super.componentDidMount(),window.addEventListener?window.addEventListener("message",this.onMessage,!1):window.attachEvent("onmessage",this.onMessage,!1),await this.props.oContext.socket.subscribeState(this.oid,this.onTokensUpdated);let e;this.props.schema.ownClientId&&(e={clientId:V.getValue(this.props.data,this.props.schema.ownClientId)}),this.props.schema.ownClientId&&(e||={},e.clientSecret=V.getValue(this.props.data,this.props.schema.ownClientSecret));const t=await this.props.oContext.socket.getState(this.oid);if(t){const n=JSON.parse(t.val);new Date(n.access_token_expires_on).getTime()>Date.now()&&(e||={},e.accessTokens=t.val)}e&&this.setState(e)}onTokensUpdated=(e,t)=>{if(t!=null&&t.val){const n=JSON.parse(t.val);if(new Date(n.access_token_expires_on).getTime()>Date.now()){this.state.accessTokens!==t.val&&this.setState({accessTokens:t.val});return}}this.setState({accessTokens:""})};componentWillUnmount(){super.componentWillUnmount(),window.removeEventListener?window.removeEventListener("message",this.onMessage,!1):window.detachEvent("onmessage",this.onMessage,!1),this.props.oContext.socket.unsubscribeState(this.oid,this.onTokensUpdated)}saveToken(e){try{e&&!e.startsWith("{")&&(e=atob(e));const t=JSON.parse(e);t.access_token&&t.refresh_token&&t.expires_in&&(t.access_token_expires_on||=new Date(Date.now()+t.expires_in*1e3).toISOString(),this.props.schema.ownClientId&&(t.client_id=V.getValue(this.props.data,this.props.schema.ownClientId)),this.props.oContext.socket.setState(this.oid,JSON.stringify(t),!0).catch(n=>console.log(`Error occurred: ${n.toString()}`)))}catch(t){console.warn(t)}}onMessage=e=>{var t,n,u;if(e.origin==="https://oauth2.iobroker.in"&&(typeof e.data=="string"&&e.data.startsWith(`${this.props.schema.identifier}-authentication:`)||typeof e.message=="string"&&e.message.startsWith(`${this.props.schema.identifier}-authentication:`))){const i=(e.data||e.message).split(":");i[1]==="success"?(this.setState({accessTokens:i[2],success:!0,pressed:!1},()=>this.saveToken(this.state.accessTokens)),(t=this.authWindow)==null||t.postMessage("close",e.origin),this.authWindow=null):(u=(n=this.props).onError)==null||u.call(n,i[2])}};onOpenUrl(){this.authWindow=window.open(this.url+(this.props.schema.ownClientId?`&client_id=${encodeURIComponent(this.state.clientId)}&client_secret=${encodeURIComponent(this.state.clientSecret)}`:""),this.props.schema.identifier),!this.authWindow||this.authWindow.closed||typeof this.authWindow.closed>"u"?this.setState({blocked:!0}):this.setState({pressed:!0})}renderItem(e,t){let n="";if(this.state.accessTokens)try{const s=JSON.parse(this.state.accessTokens);n=new Date(s.access_token_expires_on).toLocaleString()}catch{}let u;this.state.accessTokens?u=this.props.schema.refreshLabel?this.getText(this.props.schema.refreshLabel):P.I18n.t("ra_Renew %s access",this.props.schema.identifier[0].toUpperCase()+this.props.schema.identifier.slice(1)):u=this.props.schema.label?this.getText(this.props.schema.label):P.I18n.t("ra_Get %s access",this.props.schema.identifier[0].toUpperCase()+this.props.schema.identifier.slice(1));const i=this.getIcon();return x.createElement("div",{style:{width:"100%",margin:"0 0 1rem 0"}},this.props.schema.ownClientId?x.createElement(pe,{value:this.state.clientId,onChange:s=>{const d=s.target.value;this.setState({clientId:d},()=>this.onChange(this.props.schema.ownClientId,d))},style:{marginBottom:8},variant:"standard",fullWidth:!0,error:!this.state.clientId,disabled:!!t,label:P.I18n.t("ra_OAuth Client ID"),slotProps:{input:{endAdornment:this.state.clientId?x.createElement(se,{size:"small",tabIndex:-1,onClick:()=>this.setState({clientId:""},()=>this.onChange(this.props.schema.ownClientId,""))},x.createElement(ht,null)):null}}}):null,this.props.schema.ownClientSecret?x.createElement(pe,{value:this.state.clientSecret,onChange:s=>{const d=s.target.value;this.setState({clientSecret:d},()=>this.onChange(this.props.schema.ownClientSecret,d))},style:{marginBottom:8},variant:"standard",fullWidth:!0,error:!this.state.clientSecret,disabled:!!t,label:P.I18n.t("ra_OAuth Client secret"),slotProps:{input:{endAdornment:this.state.clientSecret?x.createElement(se,{size:"small",tabIndex:-1,onClick:()=>this.setState({clientSecret:""},()=>this.onChange(this.props.schema.ownClientSecret,""))},x.createElement(ht,null)):null}}}):null,x.createElement(me,{disabled:this.state.running||this.props.schema.ownClientSecret&&!this.state.clientSecret||this.props.schema.ownClientId&&!this.state.clientId,endIcon:i||x.createElement(xc,null),variant:"contained",onClick:()=>this.onOpenUrl()},u),this.state.blocked?x.createElement("div",{style:{color:"red",fontSize:16,marginTop:20}},P.I18n.t("ra_Please allow popups in your browser for this page!")):null,this.state.accessTokens?x.createElement("div",{style:{color:"green",fontSize:16,marginTop:20}},this.props.alive?P.I18n.t("ra_Successfully authorized. Token valid till %s and will be automatically renewed.",n):P.I18n.t("ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.",n)):null,this.state.pressed?x.createElement(x.Fragment,null,x.createElement("div",{style:{width:"100%",margin:"1rem 0 1rem 0"}},x.createElement("span",{style:{marginRight:4}},`${P.I18n.t("ra_If the button above does not work, you can authorize manually this app by visiting this url")}`,":"),x.createElement("br",null),x.createElement("a",{target:this.props.schema.identifier,href:this.url,rel:"noreferrer"},this.url)),x.createElement(pe,{value:this.state.accessTokens,label:P.I18n.t("ra_Enter the code from that page here"),variant:"standard",error:!!this.state.accessTokenError,helperText:this.state.accessTokenError||"",onChange:s=>{let d=s.target.value;try{d!=null&&d.trim()&&!d.trim().startsWith("{")&&(d=atob(d.trim()))}catch{this.setState({accessTokenError:"Invalid access token. Cannot decode from base64"})}if(d!=null&&d.startsWith("{"))try{const o=JSON.parse(d);o.access_token&&(o.access_token_expires_on=new Date(Date.now()+(o.expires_in-10)*1e3).toISOString(),this.setState({accessTokens:JSON.stringify(o),accessTokenError:""},()=>this.saveToken(this.state.accessTokens)))}catch{this.setState({accessTokens:d,accessTokenError:"Invalid access token. Cannot parse JSON"})}else d&&this.setState({accessTokens:d,accessTokenError:"Invalid access token. Not JSON"})},fullWidth:!0})):null)}}const eo={flex:{display:"flex"},button:{maxHeight:48,marginLeft:4,minWidth:48}};class Op extends V{fillOnSelect=[];async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t)||"";if(this.props.schema.fillOnSelect){const u=this.props.schema.fillOnSelect.split(",").map(i=>i.trim());for(const i of u){const s=i.split("=>");if(s.length===2){const d={pathInObject:s[0],attr:s[1]};(d.attr.includes("(X)")||d.attr.includes("(x)"))&&(d.overwrite=!0,d.attr=d.attr.replace(/\(X\)|\(x\)/g,"")),this.fillOnSelect.push(d)}else console.error(`Invalid format for fillOnSelect: ${this.props.schema.fillOnSelect}`)}}this.setState({value:n,initialized:!0})}onObjectChanged=async(e,t)=>{if(await this.onChange(e,t),this.fillOnSelect.length)try{const n=await this.getCachedObject(t);for(const u of this.fillOnSelect)if(u.overwrite||!V.getValue(this.props.data,u.attr)){let i=V.getValue(n,u.pathInObject);typeof i=="object"&&(i=this.getText(i,!0)),await this.onChange(u.attr,i)}}catch(n){console.error(n.toString())}};renderItem(e,t){if(!this.state.initialized)return null;const n=this.props.oContext.socket,{schema:u,attr:i}=this.props,{value:s,showSelectId:d}=this.state;return x.createElement(fe,{fullWidth:!0,variant:"standard"},u.label?x.createElement(Te,{shrink:!0},this.getText(u.label)):null,x.createElement("div",{style:eo.flex},x.createElement(pe,{variant:"standard",fullWidth:!0,value:s,error:!!e,disabled:t,placeholder:this.getText(u.placeholder),label:this.getText(u.label),helperText:this.renderHelp(u.help,u.helpLink,u.noTranslation),onChange:o=>{const l=Array.isArray(o.target.value)?o.target.value[0]:o.target.value;this.setState({value:l},()=>{this.onObjectChanged(i,l)})}}),x.createElement(me,{color:"grey",disabled:t,style:eo.button,size:"small",variant:"outlined",onClick:()=>this.setState({showSelectId:!0})},"...")),d?x.createElement(P.DialogSelectID,{imagePrefix:this.props.oContext.imagePrefix??"../..",dialogName:`admin.${this.props.oContext.adapterName}`,filterFunc:u.filterFunc,themeType:this.props.oContext.themeType,theme:this.props.oContext.theme,types:u.types?Array.isArray(u.types)?u.types:[u.types]:void 0,customFilter:u.customFilter,filters:u.filters,socket:n,selected:s,root:u.root,onClose:()=>this.setState({showSelectId:!1}),onOk:o=>{const l=Array.isArray(o)?o[0]:o;this.setState({showSelectId:!1,value:l},()=>{this.onObjectChanged(i,l)})}}):null)}}const vs={fullWidth:{width:"100%",display:"inline-block"},halfWidth1:{width:"calc(50% - 5px)",display:"inline-block",marginRight:8},halfWidth2:{width:"calc(50% - 5px)",display:"inline-block"}},gi="____ppp____";class Fp extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.setState({_repeat:e?gi:"",_visible:!1,value:e?gi:"",_notEqual:!1})}onChangePassword(e,t){e===void 0&&(e=this.state.value),t===void 0&&(t=this.state._repeat);const n=!!this.props.schema.repeat&&t!==e;this.setState({value:e,_repeat:t,_notEqual:n},()=>{if(n)this.onError(this.props.attr,P.I18n.t("ra_Passwords are not equal!"));else{this.onError(this.props.attr);const u=this.onChange(this.props.attr,e);u instanceof Promise&&u.catch(i=>this.onError(this.props.attr,i))}})}renderItem(e,t){if(this.state._notEqual===void 0)return null;const n=x.createElement(pe,{variant:"standard",fullWidth:!0,type:this.state._visible&&this.state.value!==gi?"text":"password",value:this.state.value,error:!!e||this.state._notEqual,disabled:!!t,onChange:u=>this.onChangePassword(u.target.value),label:this.getText(this.props.schema.label),slotProps:{input:{autoComplete:"new-password",endAdornment:this.state.value&&this.state.value!==gi&&this.props.schema.visible&&!t&&!this.props.schema.readOnly?x.createElement(vn,{position:"end"},x.createElement(se,{size:"large",tabIndex:-1,onClick:u=>{u.preventDefault(),u.stopPropagation(),this.setState({_visible:!this.state._visible})},edge:"end"},this.state._visible?x.createElement(_c,null):x.createElement(Wo,null))):void 0},htmlInput:{autoComplete:"new-password",form:{autoComplete:"off"},maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:this.props.schema.readOnly||!1}},helperText:this.state._notEqual?P.I18n.t("ra_Passwords are not equal!"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)});if(this.props.schema.repeat&&!this.props.schema.readOnly){const u=this.state._visible?null:x.createElement(pe,{variant:"standard",fullWidth:!0,type:"password",value:this.state._repeat,error:!!e||this.state._notEqual,disabled:!!t,onChange:i=>this.onChangePassword(void 0,i.target.value),label:`${this.getText(this.props.schema.label)} (${P.I18n.t("ra_repeat")})`,slotProps:{input:{autoComplete:"new-password"},htmlInput:{autoComplete:"new-password",form:{autoComplete:"off"},maxLength:this.props.schema.maxLength||this.props.schema.max||void 0}},helperText:this.state._notEqual?P.I18n.t("ra_Passwords are not equal!"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)});return x.createElement("div",{style:vs.fullWidth},x.createElement("div",{style:vs.halfWidth1},n),x.createElement("div",{style:vs.halfWidth2},u))}return n}}class Rp extends V{checkTimeout=null;async componentDidMount(){await super.componentDidMount();const e=await this.getPatternAsync(this.props.schema.pattern,null,!0)??"";this.setState({pattern:e})}componentWillUnmount(){this.checkTimeout&&(clearTimeout(this.checkTimeout),this.checkTimeout=null),super.componentWillUnmount()}checkIfInstanceChanged(){this.checkTimeout&&clearTimeout(this.checkTimeout),this.checkTimeout=setTimeout(async()=>{this.checkTimeout=null;const e=await this.getPatternAsync(this.props.schema.pattern,null,!0)??"";e!==this.state.pattern&&this.setState({pattern:e})},200)}renderItem(e,t){return this.checkIfInstanceChanged(),x.createElement(pe,{variant:"standard",fullWidth:!0,disabled:!!t,slotProps:{input:{endAdornment:this.props.schema.copyToClipboard?x.createElement(se,{tabIndex:-1,size:"small",onClick:async()=>{P.Utils.copyToClipboard(await this.getPatternAsync(this.props.schema.pattern,null,this.props.schema.noTranslation)),window.alert(P.I18n.t("ra_Copied"))}},x.createElement(P.IconCopy,null)):void 0}},value:this.state.pattern||"",label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}const Np={warning:{"& .Mui-error":{color:"orange"}}};class Bp extends V{updateTimeout;async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr);e==null&&(e=""),this.setState({_value:e.toString(),oldValue:e.toString()});const t=await this.props.oContext.socket.getAdapterInstances(),n=`system.adapter.${this.props.oContext.adapterName}.${this.props.oContext.instance}`,u=await this.getCachedObject(n),i=u==null?void 0:u.common.host,s=[];t.forEach(d=>{var l,r,a,c;if(!d||d._id===n||d.common.host!==i||!((l=d.native)!=null&&l.bind))return;if(d!=null&&d.native&&d.native.secure&&d.native.leEnabled&&d.native.leUpdate){const p=parseInt(d.native.leCheckPort||d.native.lePort,10);p&&s.push({name:`${d._id.replace("system.adapter.","")} (LE)`,port:p,v6bind:d.native.bind.includes(":")?d.native.bind:d.native.v6bind,bind:d.native.bind,enabled:!!((r=d.common)!=null&&r.enabled)})}const o=parseInt((a=d==null?void 0:d.native)==null?void 0:a.port,10);o&&s.push({name:d._id.replace("system.adapter.",""),bind:d.native.bind,v6bind:d.native.bind.includes(":")?d.native.bind:d.native.v6bind,port:o,enabled:!!((c=d.common)!=null&&c.enabled)})}),this.setState({ports:s})}static getDerivedStateFromProps(e,t){const n=V.getValue(e.data,e.attr);return n==null||t.oldValue===null||t.oldValue===void 0||n.toString()!==parseInt(t._value,10).toString()&&n.toString()!==t.oldValue.toString()?{_value:n}:null}checkValue(e){if(e==null)return null;const t=this.props.schema.min??20,n=this.props.schema.max||65535;e=e.toString().trim();const u=e===""?0:parseInt(e,10);return e!==""&&Number.isNaN(u)?"ra_Not a number":e!==""&&window.isFinite(Number(e))?un?"ra_Too big":e===""||e==="-"||Number.isNaN(u)?"ra_Not a number":null:"ra_Not a number"}renderItem(e,t){this.state.oldValue!==null&&this.state.oldValue!==void 0?(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=void 0,this.setState({oldValue:null})},30)):this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=void 0);const n=this.props.schema.min??20,u=this.props.schema.max||65535;let i;if(this.state.ports){const s=parseInt(this.state._value,10);if(s){const d=this.props.data.bind,o=this.state.ports.filter(r=>{if(r.port!==s)return!1;const a=r.bind,c=r.v6bind;return!d||!a||d==="0.0.0.0"||a==="0.0.0.0"||d==="::"||c==="::"||d===a||d===c});let l=o.findIndex(r=>r.port===s&&r.enabled);if(l!==-1){const r=this.state.ports.find(a=>a.port===s&&a.enabled&&o.some(c=>c.name===a.name&&c.bind===a.bind));e=P.I18n.t("ra_Port is already used by %s",(r==null?void 0:r.name)||o[l].name)}else if(l=o.findIndex(r=>r.port===s&&!r.enabled),l!==-1){i=!0;const r=this.state.ports.find(a=>a.port===s&&!a.enabled&&o.some(c=>c.name===a.name&&c.bind===a.bind));e=P.I18n.t("ra_Port could be used by %s",(r==null?void 0:r.name)||o[l].name)}}}return!e&&this.state._value!==null&&this.state._value!==void 0&&(e=this.checkValue(this.state._value),typeof e=="string"&&(e=P.I18n.t(e))),x.createElement(pe,{variant:"standard",type:"number",fullWidth:!0,slotProps:{htmlInput:{min:n,max:u,readOnly:this.props.schema.readOnly||!1}},value:this.state._value??"",error:!!e,disabled:!!t,sx:i?Np.warning:void 0,onChange:s=>{const d=Number(s.target.value.toString().replace(/[^0-9]/g,"")).toString(),o=this.checkValue(d);o?this.onError(this.props.attr,P.I18n.t(o)):this.onError(this.props.attr),this.setState({_value:d,oldValue:this.state._value},()=>{if(d.trim()===parseInt(d,10).toString()){const l=this.onChange(this.props.attr,parseInt(d,10)||0);l instanceof Promise&&l.catch(r=>{console.error(`Cannot set value for ${this.props.attr}: ${r}`)})}})},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:e&&typeof e=="string"?e:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}class Pp extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.props.oContext.socket.getEnums("rooms").then(t=>{const n=Object.keys(t).map(u=>({value:this.props.schema.short?u.replace("enum.rooms.",""):u,label:this.getText(t[u].common.name),obj:t[u]}));this.props.schema.allowDeactivate!==!1&&n.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({value:e,selectOptions:n})}).catch(t=>console.error(`Cannot get enums: ${t}`))}renderItem(e,t){if(!this.state.selectOptions)return null;const n=this.state.selectOptions.find(u=>u.value===this.state.value);return x.createElement(fe,{variant:"standard",fullWidth:!0},this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,disabled:!!t,value:this.state.value||"_",renderValue:()=>n?n.obj?x.createElement(P.TextWithIcon,{value:n.obj,themeType:this.props.oContext.themeType,lang:P.I18n.getLanguage()}):n.label:"",onChange:u=>{this.setState({value:u.target.value==="_"?"":u.target.value},()=>this.onChange(this.props.attr,this.state.value))}},this.state.selectOptions.map(u=>x.createElement(xe,{key:u.value,value:u.value,style:u.value===V.DIFFERENT_VALUE?{opacity:.5}:{}},u.obj?x.createElement(P.TextWithIcon,{value:u.obj,themeType:this.props.oContext.themeType,lang:P.I18n.getLanguage()}):u.label))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const on={noMargin:{"&>div":{marginTop:0}},icon:{width:20,height:20,marginRight:4}};class Wp extends V{initialValue="";async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr);this.props.schema.multiple&&(typeof e=="string"?e=[e]:e==null&&(e=[]));const t=[];for(const n of this.props.schema.options||[]){const u=n;if(Array.isArray(u.items)){const i={label:this.getText(n.label,this.props.schema.noTranslation),value:n.value,group:!0,color:n.color,description:this.getText(n.description)};i.hiddenValue=await this.isHidden(i),t.push(i);for(const s of u.items){const d={label:this.getText(s.label,this.props.schema.noTranslation),value:s.value,hidden:s.hidden,color:n.color,description:this.getText(n.description),icon:s.icon};d.hiddenValue=await this.isHidden(d),t.push(d)}}else{const i={label:this.getText(n.label,this.props.schema.noTranslation),value:n.value,hidden:n.hidden,color:n.color,description:this.getText(n.description),icon:n.icon};i.hiddenValue=await this.isHidden(i),t.push(i)}}if(this.props.onFilterLabelUpdate&&this.props.table){const n={};for(const u of t)!u.group&&u.value!==V.DIFFERENT_VALUE&&(n[u.value.toString()]=u.label);this.props.onFilterLabelUpdate(this.props.attr,n)}Array.isArray(e)&&!this.props.schema.multiple?(this.initialValue=[...e],t.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),this.setState({value:V.DIFFERENT_VALUE,selectOptions:t})):this.setState({value:e,selectOptions:t})}_getValue(){let e=this.state.value===null||this.state.value===void 0?V.getValue(this.props.data,this.props.attr):this.state.value;return this.props.schema.multiple&&(typeof e=="string"?e=[e]:e==null&&(e=[])),e}async isHidden(e){return e.hidden?this.props.custom?!!await this.executeCustom(e.hidden,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!!await this.execute(e.hidden,this.props.schema.default,this.props.data,this.props.arrayIndex,this.props.globalData):!1}renderRadio(e,t){const n=this.state.selectOptions.filter(i=>!i.hiddenValue&&!i.group),u=this._getValue();return x.createElement(fe,{fullWidth:!0,error:!!e,disabled:!!t,id:`jsonSelect_${this.props.attr}_${this.props.index||this.props.index===0?this.props.index:""}`},this.props.schema.label?x.createElement(ic,null,this.getText(this.props.schema.label)):null,x.createElement(sc,{row:!!this.props.schema.horizontal,value:u==null?"":u.toString(),onChange:i=>{const s=n.find(o=>o.value.toString()===i.target.value),d=s?s.value:i.target.value;this.setState({value:d},()=>{const o=this.onChange(this.props.attr,d);o instanceof Promise&&o.catch(l=>console.error(l))})}},n.map((i,s)=>x.createElement(Xn,{key:s,value:i.value.toString(),control:x.createElement(rc,null),title:i.description||"",label:x.createElement("span",{style:{display:"flex",alignItems:"center"}},i.icon?x.createElement(P.Icon,{src:i.icon,style:on.icon}):null,x.createElement(yt,{component:"span",style:{color:i.color}},i.label)),style:i.value===V.DIFFERENT_VALUE?{opacity:.5}:{}}))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}renderItem(e,t){if(!this.state.selectOptions)return null;if(this.props.schema.format==="radio")return this.renderRadio(e,t);const n=this.state.selectOptions.filter(s=>!s.hiddenValue),u=this._getValue(),i=this.props.schema.multiple?null:n.find(s=>s.value==u);return x.createElement(fe,{variant:"standard",fullWidth:!0,sx:this.props.table!==void 0?on.noMargin:void 0,id:`jsonSelect_${this.props.attr}_${this.props.index||this.props.index===0?this.props.index:""}`},this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,multiple:this.props.schema.multiple,disabled:!!t,value:u||"_",renderValue:s=>this.props.schema.multiple?x.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:.5}},s.map(d=>{const o=n.find(l=>l.value===d);if(o||this.props.schema.showAllValues!==!1){const l=(o==null?void 0:o.label)||d;return x.createElement(Hs,{key:d,label:l})}return null})):i!=null&&i.color?x.createElement("span",{style:{display:"flex",alignItems:"center"}},i.icon?x.createElement(P.Icon,{src:i.icon,style:on.icon}):null,x.createElement("span",null,x.createElement("div",{style:{color:i.color}},i.label??s),i.description?x.createElement("div",{style:{opacity:.7,fontStyle:"italic",fontSize:"smaller"}},i.description):null)):(i==null?void 0:i.label)===void 0?i!=null&&i.icon?x.createElement("span",{style:{display:"flex",alignItems:"center"}},x.createElement(P.Icon,{src:i.icon,style:on.icon}),s):s:x.createElement("span",{style:{display:"flex",alignItems:"center"}},i.icon?x.createElement(P.Icon,{src:i.icon,style:on.icon}):null,x.createElement("span",null,x.createElement("div",null,i.label),i.description?x.createElement("div",{style:{opacity:.7,fontStyle:"italic",fontSize:"smaller"}},i.description):null)),onChange:s=>{this.setState({value:s.target.value==="_"?"":s.target.value},()=>{let d;this.state.value===V.DIFFERENT_VALUE?d=this.onChange(this.props.attr,this.initialValue):d=this.onChange(this.props.attr,this.state.value),d instanceof Promise&&d.catch(o=>console.error(o))})}},n.map((s,d)=>s.group?x.createElement(_o,{key:d,style:{color:s.color}},x.createElement("div",null,s.label),i.description?x.createElement("div",{style:{opacity:.7,fontStyle:"italic",fontSize:"smaller"}},i.description):null):x.createElement(xe,{key:d,value:s.value,style:s.value===V.DIFFERENT_VALUE?{opacity:.5}:{}},this.props.schema.multiple?x.createElement(Zt,{checked:u.includes(s.value),onClick:()=>{const o=JSON.parse(JSON.stringify(this._getValue())),l=u.indexOf(s.value);l!==-1?o.splice(l,1):(o.push(s.value),o.sort()),this.setState({value:o},()=>this.onChange(this.props.attr,o))}}):null,s.icon?x.createElement(P.Icon,{src:s.icon,style:on.icon}):null,x.createElement(Vs,{primary:s.label,secondary:s.description,slotProps:{secondary:{style:{fontSize:"smaller",fontStyle:"italic",opacity:.7}}},style:{color:s.color}})))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const jp={menuPaper:{maxHeight:800}};class zp extends V{initialized=!1;localContext;async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const t=await this.getPatternAsync(this.props.schema.jsonData,null,!0);try{e=JSON.parse(t)}catch{console.error(`Cannot parse json data: ${t}`)}}e===void 0&&(e=null),this.setState({running:!0},async()=>{const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}try{const n=await this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e);this.reportFilterLabels(n);for(const u of n)u.hiddenValue=await this.isHidden(u);this.setState({list:n,running:!1})}catch(n){console.error(`Cannot send command: ${n}`)}})}else{const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e,running:!1})}}reportFilterLabels(e){if(this.props.onFilterLabelUpdate&&this.props.table&&Array.isArray(e)){const t={};for(const n of e)n.value!==V.DIFFERENT_VALUE&&(t[n.value]=n.label);this.props.onFilterLabelUpdate(this.props.attr,t)}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}_getValue(){let e=this.state.value===null||this.state.value===void 0?V.getValue(this.props.data,this.props.attr):this.state.value;return this.props.schema.multiple&&(typeof e=="string"?e=[e]:e==null&&(e=[])),e}async isHidden(e){return e.hidden?this.props.custom?!!await this.executeCustom(e.hidden,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!!await this.execute(e.hidden,this.props.schema.default,this.props.data,this.props.arrayIndex,this.props.globalData):!1}renderItem(e,t){if(this.props.alive){const s=this.getContext();(s!==this.localContext||!this.initialized)&&(this.localContext=s,setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}const n=this._getValue();if(!this.props.alive||!this.state.running&&!Array.isArray(this.state.list))return this.props.schema.multiple||this.props.schema.manual===!1?P.I18n.t("ra_Cannot retrieve options, as instance is offline"):x.createElement(pe,{variant:"standard",fullWidth:!0,value:n,error:!!e,disabled:!!t,onChange:s=>{const d=s.target.value;this.setState({value:d},()=>this.onChange(this.props.attr,(d||"").trim()))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),slotProps:{input:{endAdornment:this.state.value&&!this.props.schema.noClearButton?x.createElement(vn,{position:"end"},x.createElement(se,{tabIndex:-1,size:"small",onClick:()=>this.setState({value:""},()=>this.onChange(this.props.attr,""))},x.createElement(ht,null))):null}}});if(this.state.running)return x.createElement(Tt,{size:"24"});const u=this.state.list.filter(s=>!s.hiddenValue),i=u.find(s=>s.value===n);return x.createElement(fe,{variant:"standard",fullWidth:!0},this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,x.createElement(Be,{variant:"standard",error:!!e,multiple:this.props.schema.multiple,disabled:!!t,sx:{"&.MuiSelect-paper":this.props.schema.multiple?jp.menuPaper:void 0},value:n,renderValue:s=>this.props.schema.multiple?x.createElement(Ie,{sx:{display:"flex",flexWrap:"wrap",gap:.5}},s.map(d=>{const o=u.find(l=>l.value===d);if(o||this.props.schema.showAllValues!==!1){const l=(o==null?void 0:o.label)||d;return x.createElement(Hs,{key:d,label:l})}return null})):this.getText((i==null?void 0:i.label)||s,this.props.schema.noTranslation),onChange:s=>{const d=this.onChange(this.props.attr,s.target.value);d instanceof Promise&&d.catch(o=>console.error(`Cannot set value: ${o}`))}},u.map((s,d)=>s.group?x.createElement(_o,{key:d},x.createElement("div",null,this.getText(s.label,this.props.schema.noTranslation)),s.description?x.createElement("div",{style:{opacity:.7,fontStyle:"italic",fontSize:"smaller"}},this.getText(s.description)):null):x.createElement(xe,{key:d,value:s.value},this.props.schema.multiple?x.createElement(Zt,{checked:n.includes(s.value.toString()),onClick:()=>{const o=JSON.parse(JSON.stringify(this._getValue())),l=n.indexOf(s.value.toString());l!==-1?o.splice(l,1):(o.push(s.value),o.sort()),this.setState({value:o},()=>this.onChange(this.props.attr,o))}}):null,x.createElement(Vs,{primary:this.getText(s.label),secondary:this.getText(s.description),slotProps:{secondary:{style:{fontSize:"smaller",fontStyle:"italic",opacity:.7}}}})))),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const to={fullWidth:{width:"100%"}};function At(m){return m.split(".").reduce((e,t)=>(e<<8)+parseInt(t,10),0)>>>0}function Hp(m,e){var u,i;const t=(i=(u=m==null?void 0:m.native)==null?void 0:u.hardware)==null?void 0:i.networkInterfaces;if(!t)return null;let n;return Object.keys(t).forEach(s=>t[s].forEach(d=>{d.internal||e.includes(":")&&d.family!=="IPv6"||e.includes(".")&&!e.match(/[^.\d]/)&&d.family!=="IPv4"||(d.family==="IPv4"&&!d.address.startsWith("172")&&(e==="127.0.0.0"||e==="localhost"||e.match(/[^.\d]/))?n=d.address:n||(d.family==="IPv4"&&e.includes(".")&&(At(e)&At(d.netmask),At(d.address)&At(d.netmask)),n=d.address))})),n||Object.keys(t).forEach(s=>t[s].forEach(d=>{d.internal||e.includes(":")&&d.family!=="IPv6"||e.includes(".")&&!e.match(/[^.\d]/)&&d.family!=="IPv4"||(d.family==="IPv6"&&(e==="127.0.0.0"||e==="localhost"||e.match(/[^.\d]/))?n=d.address:n||(d.family==="IPv4"&&e.includes(".")&&(At(e)&At(d.netmask),At(d.address)&At(d.netmask)),n=d.address))})),n||Object.keys(t).forEach(s=>{t[s].forEach(d=>{d.internal||e.includes(":")&&d.family!=="IPv6"||e.includes(".")&&!e.match(/[^.\d]/)&&d.family!=="IPv4"||(e==="127.0.0.0"||e==="localhost"||e.match(/[^.\d]/),n=d.address)})}),n||Object.keys(t).forEach(s=>{t[s].forEach(d=>{d.internal||(n=d.address)})}),n}class no extends V{async componentDidMount(){var t;await super.componentDidMount();let e=window.location.hostname;if(this.props.schema.openUrl){const n=await this.props.oContext.socket.getCurrentInstance(),u=await this.getCachedObject(`system.adapter.${n}`);if(u){const i=await this.getCachedObject(`system.host.${(t=u==null?void 0:u.common)==null?void 0:t.host}`);if(i){const s=Hp(i,window.location.hostname);if(s)e=`${s}:${window.location.port}`;else{console.warn(`Cannot find suitable IP in host ${u.common.host} for ${u._id}`);return}}}}await new Promise(n=>{this.setState({_error:"",_message:"",hostname:e},n)}),this.props.schema.onLoaded&&this._onClick().catch(n=>console.error(n))}renderErrorDialog(){return this.state._error?x.createElement(P.DialogError,{text:this.state._error,onClose:()=>this.setState({_error:""})}):null}renderMessageDialog(){return this.state._message?x.createElement(P.DialogMessage,{text:this.state._message,onClose:()=>this.setState({_message:""})}):null}renderCopyDialog(){return this.state._copyDialog?x.createElement(Xs,{title:this.getText(this.state._copyDialog.title||P.I18n.t("ra_Result")),overflowHidden:!0,onClose:()=>{this.setState({_copyDialog:null})},onApply:()=>{P.copy(this.state._copyDialog.text),window.alert(P.I18n.t("ra_Copied")),this.setState({_copyDialog:null})},titleButtonApply:P.I18n.t("ra_Copy content")},x.createElement("div",{style:{width:"calc(100vw - 40px)",height:"calc(100vh - 188px)"}},x.createElement(nr,{mode:this.state._copyDialog.type,value:this.state._copyDialog.text,name:"CopyDialog",themeType:this.props.oContext.themeType}))):null}async _onClick(){this.props.oContext.onCommandRunning(!0),this.setState({running:!0});const e=`${window.location.protocol}//${window.location.host}${window.location.pathname.replace(/\/index\.html$/,"")}`,t=`${window.location.protocol}//${this.state.hostname.split(":").length>3?`[${this.state.hostname}]`:this.state.hostname}${window.location.pathname.replace(/\/index\.html$/,"")}`;let n=this.props.schema.data;if(n===void 0&&this.props.schema.jsonData){const s=await this.getPatternAsync(this.props.schema.jsonData,{_origin:e,_originIp:t,...this.props.data},!0);try{n=JSON.parse(s)}catch{console.error(`Cannot parse json data: ${s}`)}}n===void 0&&(n=null),this.props.schema.openUrl&&!n&&(n={_origin:e,_originIp:t});let u;this.props.schema.timeout&&(u=setTimeout(()=>{this.props.oContext.onCommandRunning(!1),this.setState({_error:P.I18n.t("ra_Request timed out"),running:!1})},parseInt(this.props.schema.timeout,10)||1e4));const i=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(i!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const s=await this.props.oContext.socket.getState(`system.adapter.${i}.alive`);if(!(s!=null&&s.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",i));return}}this.props.oContext.socket.sendTo(i,this.props.schema.command||"send",n).then(async s=>{var d,o,l,r,a,c;if(u&&(clearTimeout(u),u=void 0),s!=null&&s.error)if((d=this.props.schema.error)!=null&&d[s.error]){let p=this.getText(this.props.schema.error[s.error]);(o=s.args)==null||o.forEach(h=>p=p.replace("%s",h)),this.setState({_error:p})}else this.setState({_error:s.error?typeof s.error=="string"?P.I18n.t(s.error):JSON.stringify(s.error):P.I18n.t("ra_Error")});else{if(s!=null&&s.command){(r=(l=this.props.oContext).onBackEndCommand)==null||r.call(l,s.command);return}if(s!=null&&s.reloadBrowser&&this.props.schema.reloadBrowser)window.location.reload();else if(s!=null&&s.openUrl&&this.props.schema.openUrl)window.open(s.openUrl,s.window||this.props.schema.window||"_blank");else if(s!=null&&s.result&&((a=this.props.schema.result)!=null&&a[s.result])){let p=this.getText(this.props.schema.result[s.result]);(c=s.args)==null||c.forEach(h=>p=p.replace("%s",h)),window.alert(p)}if(s!=null&&s.native&&this.props.schema.useNative){for(const[p,h]of Object.entries(s.native))await this.onChangeAsync(p,h);setTimeout(()=>this.props.oContext.forceUpdate(Object.keys(s.native),this.props.data),300)}else s!=null&&s.result?window.alert(typeof s.result=="object"?JSON.stringify(s.result):s.result):s!=null&&s.copyDialog?this.setState({_copyDialog:s.copyDialog}):window.alert(P.I18n.t("ra_Ok"));s!=null&&s.saveConfig&&this.props.onChange(null,null,null,!0)}}).catch(s=>{this.props.schema.error&&this.props.schema.error[s.toString()]?this.setState({_error:this.getText(this.props.schema.error[s.toString()])}):this.setState({_error:P.I18n.t(s.toString())||P.I18n.t("ra_Error")})}).then(()=>{this.props.oContext.onCommandRunning(!1),this.setState({running:!1})})}renderDialogConfirm(){if(!this.state.confirmDialog)return null;const e=this.state.confirmData||this.props.schema.confirm;let t=null;return e.type==="warning"?t=x.createElement(Hn,null):e.type==="error"?t=x.createElement(Jt,null):e.type==="info"&&(t=x.createElement(Li,null)),x.createElement(P.DialogConfirm,{title:this.getText(e.title)||P.I18n.t("ra_Please confirm"),text:this.getText(e.text),ok:this.getText(e.ok)||P.I18n.t("ra_Ok"),cancel:this.getText(e.cancel)||P.I18n.t("ra_Cancel"),icon:t||void 0,onClose:n=>this.setState({confirmDialog:!1},()=>n&&this._onClick())})}renderItem(e,t){const n=this.getIcon();return x.createElement("div",{style:to.fullWidth},x.createElement(me,{variant:this.props.schema.variant||void 0,color:this.props.schema.color||"grey",style:{...to.fullWidth,...this.props.schema.controlStyle||void 0},disabled:t||!this.props.alive,startIcon:n,title:this.props.alive?this.getText(this.props.schema.title)||"":P.I18n.t("ra_Instance %s is not alive",this.props.oContext.instance.toString()),onClick:()=>{this.props.schema.confirm?this.setState({confirmDialog:!0}):this._onClick().catch(u=>console.error(u))}},this.props.schema.showProcess&&this.state.running?x.createElement(Tt,{size:20,style:{marginRight:8}}):null,this.getText(this.props.schema.label,this.props.schema.noTranslation)),this.renderErrorDialog(),this.renderMessageDialog(),this.renderCopyDialog())}}const Vp={fullWidth:{width:"100%"}};class Up extends V{async _onClick(){var n,u;let e=this.props.schema.val;if(typeof e=="string"&&e.includes("${")){e=await this.getPatternAsync(e,null,!0);const i=await this.getCachedObject(this.props.schema.id);((n=i==null?void 0:i.common)==null?void 0:n.type)==="number"?e=parseFloat(e):((u=i==null?void 0:i.common)==null?void 0:u.type)==="boolean"&&(e=e==="true"||e===!0||e==="1"||e===1)}const t=(this.props.schema.id||"").replace(/%INSTANCE%/g,(this.props.oContext.instance||0).toString());try{await this.props.oContext.socket.setState(t,{val:e,ack:!!this.props.schema.ack}),this.props.schema.okText&&window.alert(this.getText(this.props.schema.okText))}catch(i){this.props.schema.error&&this.props.schema.error[i.toString()]?window.alert(this.getText(this.props.schema.error[i.toString()])):window.alert(P.I18n.t(i.toString())||P.I18n.t("ra_Error"))}}renderDialogConfirm(){if(!this.state.confirmDialog)return null;const e=this.state.confirmData||this.props.schema.confirm;let t=null;return e.type==="warning"?t=x.createElement(Hn,null):e.type==="error"?t=x.createElement(Jt,null):e.type==="info"&&(t=x.createElement(Li,null)),x.createElement(P.DialogConfirm,{title:this.getText(e.title)||P.I18n.t("ra_Please confirm"),text:this.getText(e.text),ok:this.getText(e.ok)||P.I18n.t("ra_Ok"),cancel:this.getText(e.cancel)||P.I18n.t("ra_Cancel"),icon:t,onClose:n=>this.setState({confirmDialog:!1},()=>n&&this._onClick())})}renderItem(e,t){const n=this.getIcon();return x.createElement(me,{variant:this.props.schema.variant||void 0,color:this.props.schema.color||"grey",style:Vp.fullWidth,disabled:t,onClick:async()=>{this.props.schema.confirm?this.setState({confirmDialog:!0}):await this._onClick()},startIcon:n||void 0},this.getText(this.props.schema.label,this.props.schema.noTranslation))}}const io={fullWidth:{width:"100%"},slider:{marginLeft:10,marginRight:10,width:"calc(100% - 20px)"}};class Kp extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.setState({_value:e})}static getDerivedStateFromProps(e,t){if(e.schema.min!==void 0&&e.schema.min<0||e.schema.max!==void 0&&e.schema.max<0)return null;const n=V.getValue(e.data,e.attr);return n==null||n.toString()!==parseFloat(t._value).toString()?{_value:n}:null}renderItem(e,t){const n=this.props.schema.min||0,u=this.props.schema.max||100,i=this.props.schema.unit?this.getText(this.props.schema.unit,this.props.schema.noTranslation):"",s=[{value:n,label:n+i},{value:u,label:u+i}];return x.createElement(Ie,{style:io.fullWidth},this.props.schema.label?x.createElement(yt,{gutterBottom:!0},this.getText(this.props.schema.label)):null,x.createElement(ko,{style:io.slider,value:this.state._value,getAriaValueText:d=>d+i,step:this.props.schema.step||(u-n)/100,valueLabelDisplay:"auto",marks:s,min:n,max:u,disabled:!!t,onChange:d=>{const o=d.target.value;this.setState({_value:o},()=>this.onChange(this.props.attr,o))}}),this.props.schema.help?x.createElement(yt,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}function Dt(m,e){return m==="edit"||m==="rename"?x.createElement(Mo,{style:e}):m==="delete"?x.createElement(_t,{style:e}):m==="refresh"?x.createElement(Us,{style:e}):m==="newDevice"||m==="new"||m==="add"?x.createElement(Un,{style:e}):m==="discover"||m==="search"?x.createElement(Lo,{style:e}):m==="unpairDevice"||m==="unpair"?x.createElement(Fo,{style:e}):m==="pairDevice"||m==="pair"?x.createElement(Ro,{style:e}):m==="identify"?x.createElement(kc,{style:e}):m==="play"?x.createElement(Gs,{style:e}):m==="stop"?x.createElement(Tc,{style:e}):m==="pause"?x.createElement(Lc,{style:e}):m==="forward"||m==="next"?x.createElement(Mc,{style:e}):m==="rewind"||m==="previous"?x.createElement(Ic,{style:e}):m==="lamp"||m==="light"?x.createElement(Oc,{style:e}):m==="backlight"?x.createElement(Fc,{style:e}):m==="dimmer"?x.createElement(Rc,{style:e}):m==="socket"?x.createElement(Nc,{style:e}):m==="settings"?x.createElement(Bc,{style:e}):m==="users"||m==="group"?x.createElement(Oo,{style:e}):m==="user"?x.createElement(Io,{style:e}):m==="qrcode"?x.createElement(Pc,{style:e}):m==="connection"?x.createElement(Wc,{style:e}):m==="no-connection"?x.createElement(jc,{style:e}):m==="visible"?x.createElement(Wo,{style:e}):null}function Gp(m,e){return typeof e=="string"?{"@keyframes newStateAnimationOnceColor":{"0%":{color:e},"100%":{color:m.palette.mode==="dark"?"#fff":"#000"}},animation:"newStateAnimationOnceColor 2s ease-in-out"}:{"@keyframes newStateAnimationOnce":{"0%":{color:"#00f900"},"80%":{color:m.palette.mode==="dark"?"#518851":"#008000"},"100%":{color:m.palette.mode==="dark"?"#fff":"#000"}},animation:"newStateAnimationOnce 2s ease-in-out"}}class Jp extends V{controlTimeout=null;delayedUpdate={timer:null,value:null};async getObjectID(){let e=(this.props.schema.oid||"").toString();return e.includes("${")&&(e=await this.getPatternAsync(e,null,!0)),this.props.schema.foreign?e:`${this.props.schema.system?"system.adapter.":""}${this.props.oContext.adapterName}.${this.props.oContext.instance||0}.${e}`}async componentDidMount(){var u,i;await super.componentDidMount();const e=await this.getObjectID(),t=await this.getCachedObject(e);if((u=t==null?void 0:t.common)!=null&&u.states&&!this.props.schema.options){if(Array.isArray((i=t==null?void 0:t.common)==null?void 0:i.states)){const s={};t.common.states.forEach((d,o)=>{s[o.toString()]=d}),t.common.states=s}Object.keys(t.common.states).length||(t.common.states=void 0)}const n=this.props.schema.control||this.detectType(t);try{const s=await this.props.oContext.socket.getState(e);this.setState({stateValue:s?s.val:null,controlType:n,obj:t,objId:e},async()=>{const d=await this.getObjectID();await this.props.oContext.socket.subscribeState(d,this.onStateChanged)})}catch(s){console.error(`Cannot get state ${e}: ${s}`),this.setState({controlType:n,obj:t,objId:e})}}componentWillUnmount(){super.componentWillUnmount(),this.state.objId&&this.props.oContext.socket.unsubscribeState(this.state.objId,this.onStateChanged),this.delayedUpdate.timer&&(clearTimeout(this.delayedUpdate.timer),this.delayedUpdate.timer=null),this.controlTimeout&&(clearTimeout(this.controlTimeout),this.controlTimeout=null,this.state.objId&&this.props.oContext.socket.setState(this.state.objId,this.state.stateValue,!1).catch(e=>console.error(`Cannot control value: ${e.toString()}`)))}onStateChanged=(e,t)=>{let n=t?t.val:null;this.state.controlType==="button"||this.state.controlType==="switch"?(n=!!n,this.state.stateValue!==n&&this.setState({stateValue:n})):n!==null&&(this.state.controlType==="slider"||this.state.controlType==="number")?(n=parseFloat(n),console.log(`${Date.now()} Received new value: ${n}`),n!==this.state.stateValue?(this.delayedUpdate.timer&&(clearTimeout(this.delayedUpdate.timer),this.delayedUpdate.timer=null),this.delayedUpdate.value=n,this.delayedUpdate.timer=setTimeout(()=>{this.setState({stateValue:this.delayedUpdate.value})},500)):this.delayedUpdate.timer&&(clearTimeout(this.delayedUpdate.timer),this.delayedUpdate.timer=null)):this.state.stateValue.toString()!==n.toString()&&this.setState({stateValue:n})};detectType(e){if(e||={},e.common||={},e.common.type==="boolean"){if(this.props.schema.controlled!==!1){if(e.common.read===!1||this.props.schema.controlled===!0)return"button";if(e.common.write||this.props.schema.controlled===!0)return"switch"}return"text"}return e.common.type==="number"&&this.props.schema.controlled!==!1?e.common.write||this.props.schema.controlled===!0?e.common.states||this.props.schema.options?"select":e.common.max!==void 0?"slider":"input":"text":e.common.write&&this.props.schema.controlled!==!1?e.common.states||this.props.schema.options?"select":"input":"text"}getNormalizedStates(){let e;return this.props.schema.options?e=this.props.schema.options.map(t=>typeof t=="string"?{value:t,label:this.getText(t,this.props.schema.noTranslation)}:{value:t.value,label:this.getText(t.label,this.props.schema.noTranslation),color:t.color}):this.state.obj.common.states?(e=[],Object.keys(this.state.obj.common.states).forEach(t=>{e.push({value:t,label:this.getText(this.state.obj.common.states[t],this.props.schema.noTranslation)})})):e=[],e}renderItem(e,t){var u,i,s,d,o;if(!this.state.obj)return null;let n;if(this.state.controlType==="select"||!this.state.controlType&&(this.state.obj.common.type==="number"||this.state.obj.common.type==="string")&&this.state.obj.common.write!==!1&&(this.props.schema.options||this.state.obj.common.states)){const l=this.getNormalizedStates(),r=l.find(a=>a.value===this.state.stateValue);n=x.createElement(fe,{fullWidth:!0},x.createElement(Te,null,this.getText(this.props.schema.label)),x.createElement(Be,{value:this.state.stateValue,disabled:!!this.props.schema.readOnly||t,onChange:a=>{this.setState({stateValue:a.target.value},()=>{let c=this.state.stateValue;this.state.obj.common.type==="number"&&(c=parseFloat(c.toString().replace(",","."))),this.props.oContext.socket.setState(this.state.objId,c,!1)})},renderValue:a=>r!=null&&r.color?x.createElement("div",{style:{color:r.color}},r.label):a},l.map(a=>x.createElement(xe,{key:(a.value??"").toString(),value:a.value,style:{color:a.color}},"$",a.label))))}else if(this.state.controlType==="button"||!this.state.controlType&&this.state.obj.common.type==="boolean"&&(this.state.obj.common.write&&this.state.obj.common.read===!1||(u=this.state.obj.common.role)!=null&&u.includes("button"))){let l=null;this.props.schema.falseImage&&(l=Dt(this.props.schema.falseImage));const r=this.getText(this.props.schema.falseText||this.props.schema.label,this.props.schema.noTranslation);!r&&l?n=x.createElement(se,{style:this.props.schema.falseTextStyle,disabled:!!this.props.schema.readOnly,onClick:async()=>{this.props.schema.confirm?this.setState({confirmDialog:!0,confirmCallback:async a=>{a&&await this.props.oContext.socket.setState(this.state.objId,this.props.schema.buttonValue!==void 0?this.props.schema.buttonValue:!0,!1)}}):await this.props.oContext.socket.setState(this.state.objId,this.props.schema.buttonValue!==void 0?this.props.schema.buttonValue:!0,!1)}},l):n=x.createElement(me,{variant:this.props.schema.variant||"contained",startIcon:l,style:this.props.schema.falseTextStyle,disabled:t||!!this.props.schema.readOnly,onClick:async()=>{this.props.schema.confirm?this.setState({confirmDialog:!0,confirmCallback:async a=>{a&&await this.props.oContext.socket.setState(this.state.objId,this.props.schema.buttonValue!==void 0?this.props.schema.buttonValue:!0,!1)}}):await this.props.oContext.socket.setState(this.state.objId,this.props.schema.buttonValue!==void 0?this.props.schema.buttonValue:!0,!1)}},r||(this.state.objId||"").split(".").pop())}else if(this.state.controlType==="input"||!this.state.controlType&&this.state.obj.common.write&&this.state.obj.common.type==="string")n=x.createElement("div",{style:{width:"100%",display:"flex",flexDirection:"row",gap:8,alignItems:"baseline"}},x.createElement(pe,{style:{flex:1},value:this.state.stateValue,variant:"standard",disabled:!!this.props.schema.readOnly||t,slotProps:{input:{endAdornment:this.getText(this.props.schema.unit,this.props.schema.noTranslation)||this.state.obj.common.unit||void 0},htmlInput:{readOnly:!!this.props.schema.readOnly}},onKeyUp:l=>{this.props.schema.setOnEnterKey&&l.key==="Enter"&&this.props.oContext.socket.setState(this.state.objId,this.state.stateValue,!1)},onChange:l=>{this.setState({stateValue:l.target.value},()=>{this.props.schema.setOnEnterKey||this.props.schema.showEnterButton||(this.controlTimeout&&clearTimeout(this.controlTimeout),this.controlTimeout=setTimeout(async()=>{this.controlTimeout=null;let r=this.state.stateValue;this.state.obj.common.type==="number"&&(r=parseFloat(r.toString().replace(",","."))),await this.props.oContext.socket.setState(this.state.objId,r,!1)},this.props.schema.controlDelay||0))})},label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}),this.props.schema.showEnterButton&&!this.props.schema.readOnly&&x.createElement(me,{variant:"outlined",disabled:t,onClick:()=>{this.props.oContext.socket.setState(this.state.objId,this.state.stateValue,!1)}},this.getText(typeof this.props.schema.showEnterButton=="string"?this.props.schema.showEnterButton:"Set")));else{let l;this.props.schema.size==="normal"?l=16:this.props.schema.size==="large"?l=20:typeof this.props.schema.size=="number"&&(l=this.props.schema.size);let r=this.getText(this.props.schema.label,this.props.schema.noTranslation);const a={display:"flex",alignItems:"center",fontSize:l||"1rem",gap:8};this.props.schema.narrow||(a.width="100%",a.justifyContent="space-between"),r.trim()&&!r.trim().endsWith(":")&&this.props.schema.addColon&&(r=`${r.trim()}:`);let c;this.props.schema.blinkOnUpdate&&(c=Gp(this.props.oContext.theme,this.props.schema.blinkOnUpdate));let p;this.props.schema.labelIcon&&(p=x.createElement(P.Icon,{src:this.props.schema.labelIcon,style:{marginRight:4}}));let h;if(r&&p?h=x.createElement("div",{style:{whiteSpace:"nowrap"}},p,r):r?h=x.createElement("div",{style:{whiteSpace:"nowrap"}},r):p&&(h=p),this.state.controlType==="switch"||!this.state.controlType&&this.state.obj.common.type==="boolean"&&(this.state.obj.common.write&&this.state.obj.common.read!==!1||(i=this.state.obj.common.role)!=null&&i.includes("switch"))){let f=null;const g=this.getText(this.props.schema.falseText,this.props.schema.noTranslation);this.props.schema.falseImage&&(f=Dt(this.props.schema.falseImage,g?{marginLeft:8}:void 0));let v=null;const b=this.getText(this.props.schema.trueText,this.props.schema.noTranslation);this.props.schema.trueImage&&(v=Dt(this.props.schema.trueImage,b?{marginRight:8}:void 0)),n=x.createElement(oc,{checked:!!this.state.stateValue,disabled:!!this.props.schema.readOnly||t,onChange:async()=>{this.props.schema.confirm?this.setState({confirmDialog:!0,confirmCallback:async D=>{D&&await this.props.oContext.socket.setState(this.state.objId,!this.state.stateValue,!1)}}):await this.props.oContext.socket.setState(this.state.objId,!this.state.stateValue,!1)}}),(g||f||b||v)&&(n=x.createElement("div",{style:{display:"flex",alignItems:"center",fontSize:14}},x.createElement("span",{style:this.props.schema.falseTextStyle},g,f),n,x.createElement("span",{style:this.props.schema.trueTextStyle},v,b))),h&&(n=x.createElement("div",{style:a},h,n))}else if(this.state.controlType==="slider"||!this.state.controlType&&this.state.obj.common.type==="number"&&(this.state.obj.common.write&&(this.state.obj.common.max!==void 0||this.state.obj.common.unit==="%")||(s=this.state.obj.common.role)!=null&&s.includes("slider")||(d=this.state.obj.common.role)!=null&&d.includes("dimmer")||(o=this.state.obj.common.role)!=null&&o.includes("blind"))){let f=null;const g=this.getText(this.props.schema.falseText,this.props.schema.noTranslation);this.props.schema.falseImage&&(f=Dt(this.props.schema.falseImage,g?{marginLeft:8}:void 0));let v=null;const b=this.getText(this.props.schema.trueText,this.props.schema.noTranslation);this.props.schema.trueImage&&(v=Dt(this.props.schema.trueImage,b?{marginRight:8}:void 0));const D=this.props.schema.min??(this.state.obj.common.min||0),E=this.props.schema.max??this.state.obj.common.max??100,w=this.props.schema.step??(this.state.obj.common.step||1);n=x.createElement(ko,{style:{width:"100%",flexGrow:1},min:D,max:E,disabled:!!this.props.schema.readOnly||t,step:w,value:this.state.stateValue,valueLabelDisplay:"auto",valueLabelFormat:y=>{let A=this.props.schema.digits!==void 0?y.toFixed(this.props.schema.digits):y.toString();return this.props.oContext.isFloatComma&&(A=A.replace(".",",")),`${A}${this.getText(this.props.schema.unit,this.props.schema.noTranslation)||this.state.obj.common.unit||""}`},onChange:(y,A)=>{this.setState({stateValue:A},()=>{this.controlTimeout&&clearTimeout(this.controlTimeout),this.controlTimeout=setTimeout(async()=>{console.log(`${Date.now()} Send new value: ${this.state.stateValue}`),this.controlTimeout=null,await this.props.oContext.socket.setState(this.state.objId,this.state.stateValue,!1)},this.props.schema.controlDelay||0)})}}),(g||f||b||v)&&(n=x.createElement("div",{style:{display:"flex",width:"100%",flexGrow:1,alignItems:"center"}},x.createElement("span",{style:{marginRight:16,...this.props.schema.falseTextStyle}},g,f),n,x.createElement("span",{style:{marginLeft:16,...this.props.schema.trueTextStyle}},v,b))),h&&(n=x.createElement("div",{style:a},h,n))}else if(this.state.obj.common.type==="number"&&this.state.obj.common.write&&!this.state.controlType){const f=this.props.schema.min??this.state.obj.common.min??void 0,g=this.props.schema.max??this.state.obj.common.max??void 0,v=this.props.schema.step??this.state.obj.common.step??void 0;n=x.createElement(pe,{variant:"standard",style:{width:"100%"},value:this.state.stateValue,type:"number",disabled:!!this.props.schema.readOnly||t,slotProps:{htmlInput:{min:f,max:g,step:v,readOnly:!!this.props.schema.readOnly},input:{endAdornment:this.getText(this.props.schema.unit,this.props.schema.noTranslation)||this.state.obj.common.unit||void 0}},onChange:b=>{this.setState({stateValue:b.target.value},()=>{this.controlTimeout&&clearTimeout(this.controlTimeout),this.controlTimeout=setTimeout(async()=>{this.controlTimeout=null;const D=parseFloat(this.state.stateValue);await this.props.oContext.socket.setState(this.state.objId,D,!1)},this.props.schema.controlDelay||0)})},label:this.getText(this.props.schema.label,this.props.schema.noTranslation),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}else if(this.state.obj.common.type==="boolean"){let f=null,g,v;this.state.stateValue?(g=this.getText(this.props.schema.trueText,this.props.schema.noTranslation),this.props.schema.trueImage&&(f=Dt(this.props.schema.falseImage,g?{marginRight:8}:void 0)),v=this.props.schema.trueTextStyle):(g=this.getText(this.props.schema.falseText,this.props.schema.noTranslation),this.props.schema.falseImage&&(f=Dt(this.props.schema.falseImage,g?{marginLeft:8}:void 0)),v=this.props.schema.falseTextStyle),v=Object.assign(a,v),n=x.createElement("div",{style:v},h,x.createElement(Ie,{style:{display:"flex",alignItems:"center",gap:8},sx:c,key:this.props.schema.blinkOnUpdate?g:void 0},f,g||(this.state.stateValue?P.I18n.t("ra_true"):P.I18n.t("ra_false"))))}else{const f=this.getText(this.props.schema.unit,this.props.schema.noTranslation)||this.state.obj.common.unit;let g=this.state.stateValue;if(g!=null&&(this.props.schema.options||this.state.obj.common.states)){const E=this.getNormalizedStates().find(w=>w.value.toString()===g.toString());E&&(g=E.label)}let v,b;this.state.controlType==="html"?(b=(g||"").toString(),v=x.createElement("span",{dangerouslySetInnerHTML:{__html:g}})):this.state.stateValue===null?(v="null",b=v):this.state.stateValue===void 0?(v="undefined",b=v):(this.props.schema.digits!==void 0&&typeof g=="number"?(v=g.toFixed(this.props.schema.digits),this.props.oContext.isFloatComma&&(v=v.replace(".",","))):v=g.toString(),b=v),n=x.createElement("div",{style:a},h,x.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:4}},x.createElement(Ie,{sx:c,key:this.props.schema.blinkOnUpdate?b:void 0},v),f?x.createElement("span",{style:{opacity:.7,fontSize:"smaller"}},f):null))}}return n}}const ys={fullWidth:m=>({width:"100%",backgroundColor:m.palette.mode==="dark"?"#FFF":"#000",borderStyle:"hidden"}),primary:m=>({backgroundColor:m.palette.primary.main}),secondary:m=>({backgroundColor:m.palette.secondary.main})};class Yp extends V{renderItem(){return x.createElement(Ie,{component:"hr",sx:P.Utils.getStyle(this.props.oContext.theme,ys.fullWidth,this.props.schema.color==="primary"?ys.primary:this.props.schema.color==="secondary"?ys.secondary:{backgroundColor:this.props.schema.color||(this.props.oContext.themeType==="dark"?"#333":"#ddd")},{height:this.props.schema.color?this.props.schema.height||2:this.props.schema.height||1})})}}const Qp={header:m=>({width:"100%",background:m.palette.primary.main,color:m.palette.primary.contrastText,padding:"4px !important",borderRadius:"3px",marginBlockEnd:0,marginBlockStart:0})};class Xp extends V{renderItem(){let e="h5";switch((this.props.schema.size||5).toString()){case"1":e="h1";break;case"2":e="h2";break;case"3":e="h3";break;case"4":e="h4";break;default:e="h5";break}return x.createElement(Ie,{component:e,sx:Qp.header},this.getText(this.props.schema.label||this.props.schema.text,this.props.schema.noTranslation))}}class Zp extends V{getSrc(){let e=this.props.schema.src;return e&&!e.startsWith(".")&&!e.startsWith("http")&&!e.startsWith(`adapter/${this.props.oContext.adapterName}/`)&&!e.startsWith(`./adapter/${this.props.oContext.adapterName}/`)&&(e=`${this.props.oContext.imagePrefix}/adapter/${this.props.oContext.adapterName}/${e}`),e}renderItem(){const{schema:e}=this.props,t=this.getSrc();if(e.showInDialog){const n=e.showInDialogSmallSize||100,u=e.showInDialogButtonLabel?this.getText(e.showInDialogButtonLabel):"";return x.createElement(x.Fragment,null,x.createElement(ge,{title:P.I18n.t("ra_Click to see in full size")},x.createElement("img",{src:t,style:{cursor:"pointer",width:"auto",height:n,objectFit:"contain"},alt:"",onClick:()=>this.setState({showDialog:!0})}))," ",u?x.createElement(me,{variant:"outlined",color:"grey",onClick:()=>this.setState({showDialog:!0})},u):null,this.state.showDialog?x.createElement(Lt,{open:!0,onClose:()=>this.setState({showDialog:!1}),maxWidth:"lg"},x.createElement(Kt,null,x.createElement(P.Icon,{src:t,style:{width:"100%",height:"100%",objectFit:"contain"}})),x.createElement(Gt,null,x.createElement(me,{variant:"contained",onClick:()=>this.setState({showDialog:!1}),color:"primary"},P.I18n.t("ra_Close")))):null)}return x.createElement("img",{src:t,style:{cursor:e.href?"pointer":void 0,width:"100%",height:"100%"},onClick:e.href?()=>e.href&&window.open(e.href,"_blank"):null,alt:""})}}function so(m,e,t){return typeof t=="string"?{"@keyframes newValueAnimationOnceColor":{"0%":{color:e?`${t} !important`:t},"100%":{color:m.palette.mode==="dark"?e?"#fff !important":"#fff":e?"#000 !important":"#000"}},animation:"newValueAnimationOnceColor 2s ease-in-out"}:{"@keyframes newValueAnimationOnce":{"0%":{color:e?"#00f900 !important":"#00f900"},"80%":{color:m.palette.mode==="dark"?e?"#518851 !important":"#518851":e?"#008000 !important":"#008000"},"100%":{color:m.palette.mode==="dark"?e?"#fff !important":"#fff":e?"#000 !important":"#000"}},animation:"newValueAnimationOnce 2s ease-in-out"}}function ro(m,e){return typeof e=="string"?{"@keyframes blinkAnimationColor":{"0%":{color:e},"100%":{color:m.palette.mode==="dark"?"#fff":"#000"}},animation:"blinkAnimationColor 2s ease-in-out infinite"}:{"@keyframes blinkAnimation":{"0%":{color:"#00f900"},"80%":{color:m.palette.mode==="dark"?"#518851":"#008000"},"100%":{color:m.palette.mode==="dark"?"#fff":"#000"}},animation:"blinkAnimation 2s ease-in-out infinite"}}const an={label:{fontWeight:"bold",whiteSpace:"nowrap"},valueImage:{maxHeight:"100%"},valueAndUnit:{display:"flex",gap:4,alignItems:"baseline"},value:{},unit:{fontSize:"smaller",opacity:.7}};class qp extends V{renderItem(e){let t=this.getText(this.props.schema.text||this.props.schema.label,this.props.schema.noTranslation);this.props.schema.addColon&&typeof t=="string"&&!t.trim().endsWith(":")&&(t=`${t.trim()}:`),t&&(t.includes("
")||t.includes(""))&&(t=P.Utils.renderTextWithA(t));let n;this.props.schema.size==="normal"?n=16:this.props.schema.size==="large"?n=20:typeof this.props.schema.size=="number"&&(n=this.props.schema.size);const u={width:"100%",height:"100%",display:"flex",alignItems:"center",position:"relative",fontSize:n};this.props.schema.narrow?u.gap=8:u.justifyContent="space-between";let i,s;this.props.schema.data&&typeof this.props.schema.data=="object"&&this.props.schema.data.en?s=this.getText(this.props.schema.data):typeof this.props.schema.data=="object"||this.props.schema.data===void 0||this.props.schema.data===null?s=JSON.stringify(this.props.schema.data):typeof this.props.schema.data=="number"?(s=this.props.schema.data.toString(),this.props.oContext.isFloatComma&&(s=s.replace(".",","))):(!this.props.schema.booleanAsCheckbox||typeof this.props.schema.data!="boolean")&&(s=this.props.schema.data.toString());let d=!1;if(this.props.schema.booleanAsCheckbox&&typeof this.props.schema.data=="boolean")i=x.createElement(Zt,{checked:!!i,disabled:!0,size:this.props.schema.size==="small"?"small":this.props.schema.size==="large"?"large":void 0});else if(s.startsWith("data:image/"))i=x.createElement("div",{style:{...an.value,...an.valueImage,...this.props.schema.styleValue||void 0}},x.createElement(P.Icon,{src:s}));else{const a={...an.value,...this.props.schema.styleValue||void 0};this.props.schema.html?i=x.createElement("div",{style:a,dangerouslySetInnerHTML:{__html:s}}):Array.isArray(this.props.schema.data)?(d=!0,i=x.createElement("div",{style:a},this.props.schema.data.map((c,p)=>x.createElement("div",{key:p},typeof c=="object"||c===null||c===void 0?JSON.stringify(c):c)))):s.includes(` -`)?(d=!0,i=x.createElement("div",{style:a},P.Utils.renderTextWithA(s))):i=x.createElement("div",{style:a},s)}if(this.props.schema.blinkOnUpdate&&this.props.schema.blink){const a=so(this.props.oContext.theme,!0,this.props.schema.blinkOnUpdate),c=ro(this.props.oContext.theme,this.props.schema.blink);i=x.createElement(Ie,{key:s,sx:{...a,...c}},i)}else if(this.props.schema.blinkOnUpdate){const a=so(this.props.oContext.theme,!1,this.props.schema.blinkOnUpdate);i=x.createElement(Ie,{key:s,sx:a},i)}else if(this.props.schema.blink){const a=ro(this.props.oContext.theme,this.props.schema.blink);i=x.createElement(Ie,{sx:a},i)}this.props.schema.unit&&(i=x.createElement("div",{style:an.valueAndUnit},i,x.createElement("div",{style:{...an.unit,...this.props.schema.styleUnit||void 0}},this.getText(this.props.schema.unit,this.props.schema.noTranslation))));let o;this.props.schema.labelIcon&&(o=x.createElement(P.Icon,{src:this.props.schema.labelIcon,style:{marginRight:4}}));let l;this.props.schema.copyToClipboard&&(l=x.createElement(fn,{className:"staticCopyButton",style:{position:"absolute",top:"calc(50% - 12px)",right:0,cursor:"pointer"},onClick:()=>{P.Utils.copyToClipboard(s),window.alert(P.I18n.t("ra_Copied"))}}));const r={"& .staticCopyButton":{display:"none"},"& .staticCopyButton:action":{transform:"scale(0.9)"},"&:hover .staticCopyButton":{display:"block"}};return this.props.schema.highlight&&(r["&:hover"]={backgroundColor:this.props.oContext.themeType==="dark"?"#51515180":"#b8b8b880"}),d&&(u.alignItems="top"),x.createElement(Ie,{component:"div",style:u,sx:r},x.createElement("div",{style:{...an.label,...this.props.schema.styleLabel||void 0}},o,t),i,l)}}const oo={fullWidth:{height:"100%",width:"100%"},link:m=>({textDecoration:"underline",color:m.palette.mode==="dark"?"#4dabf5":"#254e72",cursor:"pointer"})};function ao(m,e,t){let n,u="";m?m.toString().startsWith("#")||m.toString().startsWith("/")?(n=e||"_self",u=m):m.startsWith("http://")||m.startsWith("https://")?(n=e||"_blank",u=m):(u=`#tab-instances/config/${t}/${m}`,n=e||"_self"):(u=`#tab-instances/config/${t}`,n=e||"_self"),n==="_self"?setTimeout(i=>{i.startsWith("#")?window.location.hash=i:i.startsWith("/")?u=`${window.location.protocol}:${window.location.host}${u}`:(i.startsWith("http://")||i.startsWith("https://"))&&(window.location.href=i)},100,u):(u.startsWith("#")?u=`${window.location.protocol}:${window.location.host}${window.location.pathname}${u}`:u.startsWith("/")&&(u=`${window.location.protocol}:${window.location.host}${u}`),window.open(u,n))}class lo extends V{renderItem(e,t){if(this.props.schema.button){const u=this.getIcon();return x.createElement(me,{variant:this.props.schema.variant||void 0,color:this.props.schema.color||"grey",style:{...oo.fullWidth,...this.props.schema.controlStyle||void 0},disabled:t,startIcon:u,onClick:this.props.schema.href?()=>{const i=this.props.schema.href?this.getText(this.props.schema.href,!0):null;i&&(this.props.oContext.onBackEndCommand?this.props.oContext.onBackEndCommand({command:"link",url:i,target:this.props.schema.target,close:this.props.schema.close}):ao(i,this.props.schema.target,`${this.props.oContext.adapterName}.${this.props.oContext.instance}`))}:null},this.getText(this.props.schema.text||this.props.schema.label,this.props.schema.noTranslation))}let n=this.getText(this.props.schema.text||this.props.schema.label,this.props.schema.noTranslation);if(this.props.schema.format==="html")n=x.createElement("div",{dangerouslySetInnerHTML:{__html:n}});else if(this.props.schema.format==="json")try{const u=typeof n=="string"?JSON.parse(n):n;n=x.createElement("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0}},JSON.stringify(u,null,2))}catch{}else n&&(n.includes("")||n.includes(""))&&(n=P.Utils.renderTextWithA(n));return x.createElement(Ie,{component:"span",style:{...this.props.schema.controlStyle||void 0},sx:this.props.schema.href?oo.link:void 0,onClick:this.props.schema.href?()=>{const u=this.props.schema.href?this.getText(this.props.schema.href,!0):null;u&&(this.props.oContext.onBackEndCommand?this.props.oContext.onBackEndCommand({command:"link",url:u,target:this.props.schema.target||"_blank",close:this.props.schema.close}):ao(u,this.props.schema.target||"_blank",`${this.props.oContext.adapterName}.${this.props.oContext.instance}`))}:null},n)}}const bs=1024*1024,re={paper:{width:"100%",marginBottom:16,backgroundColor:"rgba(255, 255, 255, 0.1)"},headerText:{width:"100%"},table:{minWidth:750},label:{display:"flex",justifyContent:"space-between"},title:{flex:"1 1 100%"},rootTool:{paddingLeft:16,paddingRight:8},silver:{opacity:.2},flex:{display:"flex",alignItems:"baseline"},filteredOut:{padding:10,display:"flex",textAlign:"center"},buttonEmpty:{width:34,display:"inline-block"},buttonCell:{whiteSpace:"nowrap"},dropZone:{width:"100%",height:100,position:"relative"},dropZoneEmpty:{},uploadDiv:{position:"relative",width:"100%",minHeight:300,opacity:.9,marginTop:30,cursor:"pointer",outline:"none"},uploadDivDragging:{opacity:1,background:"rgba(128,255,128,0.1)"},uploadCenterDiv:{margin:5,border:"3px dashed grey",borderRadius:5,width:"calc(100% - 10px)",height:"calc(100% - 10px)",minHeight:300,position:"relative",display:"flex"},uploadCenterIcon:{paddingTop:10,width:48,height:48},uploadCenterText:{fontSize:16},uploadCenterTextAndIcon:{textAlign:"center",position:"absolute",top:0,bottom:0,left:0,right:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},tooltip:{pointerEvents:"none"},cardHeader:m=>({color:m.palette.mode==="light"?m.palette.secondary.main:m.palette.text.primary,height:"100%",fontWeight:"bold",fontSize:20,fontStyle:"italic",padding:"4px 16px",backgroundColor:m.palette.primary.main,display:"flex",justifyContent:"space-between"})};function ed(m,e,t){e=e||"key";const n=[];return Object.keys(m).forEach(u=>{const i={};i[e]=u,t?(i[t]=m[u],n.push(i)):n.push(Object.assign(i,m[u]))}),n}function co(m,e,t){e=e||"key";const n={};return m.forEach(u=>{const i=u[e]??"";delete u[e],t?n[i]=u[t]:n[i]=u}),n}function td(m,e){let t="";for(let n=0;n{t.filter&&(this.filterRefs[t.attr]=Jl())}),this.refDiv=x.createRef()}async componentDidMount(){var i;await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr)||[];let t;if(this.props.schema.objKeyName?t=ed(e,this.props.schema.objKeyName,this.props.schema.objValueName):t=e,Array.isArray(t)||(t=[]),this.props.schema.encryptedAttributes){let s;try{this.props.oContext.socket.getCompactSystemConfig?s=await this.props.oContext.socket.getCompactSystemConfig():s=await this.getCachedObject("system.config")}catch(d){console.error(`Cannot get system configuration: ${d}`)}this.secret=((i=s==null?void 0:s.native)==null?void 0:i.secret)||this.secret,e.forEach(d=>{this.props.schema.encryptedAttributes.forEach(o=>{d[o]&&(d[o]=nd(this.secret,d[o]))})})}const n=window.localStorage.getItem(`table.collapsed.${this.props.oContext.instance}.${this.props.attr}`);let u=[];if(n)try{u=JSON.parse(n)}catch{}this.setState({value:t,visibleValue:null,orderBy:"",order:"asc",iteration:0,filterOn:[],width:0,tableErrors:{},collapsed:u,filterLabelMap:{}},()=>this.validateUniqueProps())}componentWillUnmount(){this.typingTimer&&(clearTimeout(this.typingTimer),this.typingTimer=null),this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null),this.refreshBecauseOfHiddenElements&&(clearTimeout(this.refreshBecauseOfHiddenElements),this.refreshBecauseOfHiddenElements=null),super.componentWillUnmount()}itemTable(e,t,n,u){var o;const{schema:i}=this.props,s=(o=i.items)==null?void 0:o.find(l=>l.attr===e);if(!s)return null;const d={items:{[e]:s}};return x.createElement(tn,{oContext:this.props.oContext,alive:this.props.alive,arrayIndex:n,changed:this.props.changed,common:this.props.common,expertMode:this.props.expertMode,custom:!0,data:t,globalData:this.props.data,index:n+this.state.iteration,onChange:(l,r)=>{const a=JSON.parse(JSON.stringify(this.state.value));a[n][l]=r,this.setState({value:a},()=>{this.validateUniqueProps(),this.onChangeWrapper(a,!0)})},onError:this.onTableRowError(n),originalData:this.props.originalData,schema:d,table:!0,themeName:this.props.themeName,onFilterLabelUpdate:(l,r)=>{const a=this.state.filterLabelMap[l],c={...a,...r};JSON.stringify(a)!==JSON.stringify(c)&&this.setState(p=>({filterLabelMap:{...p.filterLabelMap,[l]:c}}))},customComponents:this.props.customComponents,onHiddenChanged:u?(l,r)=>{if(r)this.listOfHiddenElements[n]||=[],this.listOfHiddenElements[n].includes(l)||(this.listOfHiddenElements[n].push(l),this.refreshBecauseOfHiddenElements&&clearTimeout(this.refreshBecauseOfHiddenElements),this.refreshBecauseOfHiddenElements=setTimeout(()=>{this.forceUpdate()},100));else if(this.listOfHiddenElements[n]){const a=this.listOfHiddenElements[n].indexOf(l);a!==-1&&(this.listOfHiddenElements[n].splice(a,1),this.refreshBecauseOfHiddenElements&&clearTimeout(this.refreshBecauseOfHiddenElements),this.refreshBecauseOfHiddenElements=setTimeout(()=>{this.forceUpdate()},100))}}:void 0})}validateUniqueProps(){if(!this.props.schema.uniqueColumns)return;let e=null,t=null;for(const n of this.props.schema.uniqueColumns){const u=[];this.state.value.find(s=>{const d=s[n];return u.includes(d)?(e||(e=n,t=d),this.onError(n,"is not unique"),!0):(u.push(d),!1)})||this.onError(n,null)}e?this.setState({errorMessage:P.I18n.t('Non-allowed duplicate entry "%s" in column "%s"',t,e)}):this.setState({errorMessage:""})}onTableRowError=e=>(t,n)=>{const u={...this.state.tableErrors};u[e]||(u[e]={}),n?u[e][t]=n:(delete u[e][t],Object.keys(u[e]).length===0&&delete u[e]),this.setState({tableErrors:u}),this.props.onError(t,n)};static descendingComparator(e,t,n){return t[n]e[n]?1:0}static getComparator(e,t){return e==="desc"?(n,u)=>Qe.descendingComparator(n,u,t):(n,u)=>-Qe.descendingComparator(n,u,t)}static getFilterValue(e){var t,n,u;return(u=(n=(t=e==null?void 0:e.current)==null?void 0:t.children[0])==null?void 0:n.children[0])==null?void 0:u.value}static setFilterValue(e,t){return e.current.children[0].children[0].value=t}handleRequestSort=(e,t=!1)=>{const{order:n,orderBy:u}=this.state,s=t?n:u===e&&n==="asc"?"desc":"asc",d=this.stableSort(s,e);JSON.stringify(d)!==JSON.stringify(this.state.value)&&this.setState({value:d,order:s,orderBy:e,iteration:this.state.iteration+1e4},()=>this.applyFilter(!1,d))};stableSort=(e,t)=>{const{value:n}=this.state,u=Qe.getComparator(e,t),i=n.map((s,d)=>({el:s,index:d}));return i.sort((s,d)=>{const o=u(s.el,d.el);return o!==0?o:s.index-d.index}),i.map(s=>s.el)};renderShowHideFilter(e){return e.filter?x.createElement(se,{title:P.I18n.t("ra_Show/hide filter input"),size:"small",onClick:()=>{const t=[...this.state.filterOn],n=this.state.filterOn.indexOf(e.attr);n===-1?t.push(e.attr):t.splice(n,1),this.setState({filterOn:t},()=>{n&&Qe.getFilterValue(this.filterRefs[e.attr])&&(Qe.setFilterValue(this.filterRefs[e.attr],""),this.applyFilter())})}},this.state.filterOn.includes(e.attr)?x.createElement(zc,null):x.createElement(Hc,null)):null}renderImportExportButtons(e){return x.createElement(x.Fragment,null,!e.noDelete&&e.import?x.createElement(ge,{title:P.I18n.t("ra_Import data from %s file","CSV"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:()=>this.setState({showImportDialog:!0})},x.createElement(Vn,null))):null,e.export?x.createElement(ge,{title:P.I18n.t("ra_Export data to %s file","CSV"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:()=>this.onExport()},x.createElement(Vc,null))):null,e.noDelete?null:x.createElement(se,{disabled:!0,size:"small"},x.createElement(_t,null)))}renderAddButton(e){return x.createElement(ge,{title:e?P.I18n.t("ra_Cannot add items with set filter"):P.I18n.t("ra_Add row"),slotProps:{popper:{sx:re.tooltip}}},x.createElement("span",null,x.createElement(se,{size:"small",color:"primary",disabled:!!e&&!this.props.schema.allowAddByFilter,onClick:this.onAdd},x.createElement(Un,null))))}enhancedTableHead(e,t){var s;const{schema:n}=this.props,{order:u,orderBy:i}=this.state;return x.createElement($o,null,x.createElement(ct,null,(s=n.items)==null?void 0:s.map((d,o)=>this.renderOneFilter({schema:n,style:{width:d.width},showAddButton:!o&&!n.noDelete,headCell:d,order:u,orderBy:i,index:o,doAnyFilterSet:t})),!n.noDelete&&x.createElement(Ee,{style:{paddingLeft:20,paddingRight:20,width:e,textAlign:"right"},padding:"checkbox"},this.renderImportExportButtons(n))))}onDelete=e=>()=>{const t=JSON.parse(JSON.stringify(this.state.value));t.splice(e,1);const n={...this.state.tableErrors};n[e]&&(Object.keys(n[e]).forEach(i=>{this.props.onError(i,void 0)}),delete n[e]);const u={};Object.keys(n).forEach(i=>{const s=parseInt(i,10);s>e?u[s-1]=n[s]:u[s]=n[s]}),this.setState({value:t,iteration:this.state.iteration+1e4,tableErrors:u},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))};onExport(){const{schema:e}=this.props,{value:t}=this.state,u=[e.items.map(d=>d.attr).join(";")];t.forEach(d=>{const o=[];e.items.forEach(l=>{d[l.attr]&&typeof d[l.attr]=="string"&&d[l.attr].includes(";")?o.push(`"${d[l.attr]}"`):o.push(d[l.attr]??"")}),u.push(o.join(";"))});const i=document.createElement("a");i.setAttribute("href",`data:text/csv;charset=utf-8,${encodeURIComponent(u.join(` +`,"autocompletion.css",!1),n.AcePopup=b,n.$singleLineEditor=v,n.getAriaId=p}),ace.define("ace/autocomplete/inline_screenreader",["require","exports","module"],function(t,n,h){var i=(function(){function s(d){this.editor=d,this.screenReaderDiv=document.createElement("div"),this.screenReaderDiv.classList.add("ace_screenreader-only"),this.editor.container.appendChild(this.screenReaderDiv)}return s.prototype.setScreenReaderContent=function(d){for(!this.popup&&this.editor.completer&&this.editor.completer.popup&&(this.popup=this.editor.completer.popup,this.popup.renderer.on("afterRender",function(){var l=this.popup.getRow(),r=this.popup.renderer.$textLayer,a=r.element.childNodes[l-r.config.firstRow];if(a){for(var c="doc-tooltip ",p=0;p=0&&o.test(s[r]);r--)l.push(s[r]);return l.reverse().join("")},n.retrieveFollowingIdentifier=function(s,d,o){o=o||i;for(var l=[],r=d;r0)for(var y=this.popup.getFirstVisibleRow();y<=this.popup.getLastVisibleRow();y++){var A=this.popup.getData(y);A&&(!w||A.hideInlinePreview)&&this.$seen(A)}},E.prototype.$onPopupShow=function(w){this.$onPopupChange(w),this.stickySelection=!1,this.stickySelectionDelay>=0&&this.stickySelectionTimer.schedule(this.stickySelectionDelay)},E.prototype.observeLayoutChanges=function(){if(!(this.$elements||!this.editor)){window.addEventListener("resize",this.onLayoutChange,{passive:!0}),window.addEventListener("wheel",this.mousewheelListener);for(var w=this.editor.container.parentNode,y=[];w;)y.push(w),w.addEventListener("scroll",this.onLayoutChange,{passive:!0}),w=w.parentNode;this.$elements=y}},E.prototype.unObserveLayoutChanges=function(){var w=this;window.removeEventListener("resize",this.onLayoutChange,{passive:!0}),window.removeEventListener("wheel",this.mousewheelListener),this.$elements&&this.$elements.forEach(function(y){y.removeEventListener("scroll",w.onLayoutChange,{passive:!0})}),this.$elements=null},E.prototype.onLayoutChange=function(){if(!this.popup.isOpen)return this.unObserveLayoutChanges();this.$updatePopupPosition(),this.updateDocTooltip()},E.prototype.$updatePopupPosition=function(){var w=this.editor,y=w.renderer,A=y.layerConfig.lineHeight,T=y.$cursorLayer.getPixelPosition(this.base,!0);T.left-=this.popup.getTextLeftOffset();var x=w.container.getBoundingClientRect();T.top+=x.top-y.layerConfig.offset,T.left+=x.left-w.renderer.scrollLeft,T.left+=y.gutterWidth;var M={top:T.top,left:T.left};y.$ghostText&&y.$ghostTextWidget&&this.base.row===y.$ghostText.position.row&&(M.top+=y.$ghostTextWidget.el.offsetHeight);var O=w.container.getBoundingClientRect().bottom-A,_=Othis.filterText&&w.lastIndexOf(this.filterText,0)===0)var y=this.filtered;else var y=this.all;this.filterText=w,y=this.filterCompletions(y,this.filterText),y=y.sort(function(T,x){return x.exactMatch-T.exactMatch||x.$score-T.$score||(T.caption||T.value).localeCompare(x.caption||x.value)});var A=null;y=y.filter(function(T){var x=T.snippet||T.caption||T.value;return x===A?!1:(A=x,!0)}),this.filtered=y},E.prototype.filterCompletions=function(w,y){var A=[],T=y.toUpperCase(),x=y.toLowerCase();e:for(var M=0,O;O=w[M];M++){if(O.skipFilter){O.$score=O.score,A.push(O);continue}var _=!this.ignoreCaption&&O.caption||O.value||O.snippet;if(_){var k=-1,S=0,C=0,L,I;if(this.exactMatch){if(y!==_.substr(0,y.length))continue e}else{var F=_.toLowerCase().indexOf(x);if(F>-1)C=F;else for(var R=0;R=0&&(N<0||B0&&(k===-1&&(C+=10),C+=I,S|=1<c)&&(v.range.start.row===f?u++:(f=v.range.start.row,u=0),!(u>200))){var b=v.range.clipRows(a,c);if(!(b.start.row===b.end.row&&b.start.column===b.end.column)){var D=b.toScreenRange(l);if(D.isEmpty()){p=l.getNextFoldLine(b.end.row,p),p&&p.end.row>b.end.row&&(a=p.end.row);continue}this.markerType==="fullLine"?o.drawFullLineMarker(d,D,v.className,r):D.isMultiLine()?this.markerType==="line"?o.drawMultiLineMarker(d,D,v.className,r):o.drawTextMarker(d,D,v.className,r):o.drawSingleLineMarker(d,D,v.className+" ace_br15",r)}}}},s})();i.prototype.MAX_MARKERS=1e4,n.MarkerGroup=i}),ace.define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(t,n,h){function i(l,r){var a=l.getTextRange(d.fromPoints({row:0,column:0},r));return a.split(o).length-1}function s(l,r){var a=i(l,r),c=l.getValue().split(o),p=Object.create(null),u=c[a];return c.forEach(function(f,g){if(!(!f||f===u)){var v=Math.abs(a-g),b=c.length-v;p[f]?p[f]=Math.max(b,p[f]):p[f]=b}}),p}var d=t("../range").Range,o=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;n.getCompletions=function(l,r,a,c,p){var u=s(r,a),f=Object.keys(u);p(null,f.map(function(g){return{caption:g,value:g,score:u[g],meta:"local"}}))}}),ace.define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/marker_group","ace/autocomplete/text_completer","ace/editor","ace/config"],function(t,n,h){var i=t("../snippets").snippetManager,s=t("../autocomplete").Autocomplete,d=t("../config"),o=t("../lib/lang"),l=t("../autocomplete/util"),r=t("../marker_group").MarkerGroup,a=t("../autocomplete/text_completer"),c={getCompletions:function(x,M,O,_,k){if(M.$mode.completer)return M.$mode.completer.getCompletions(x,M,O,_,k);var S=x.session.getState(O.row),C=M.$mode.getCompletions(S,M,O,_);C=C.map(function(L){return L.completerId=c.id,L}),k(null,C)},id:"keywordCompleter"},p=function(x){var M={};return x.replace(/\${(\d+)(:(.*?))?}/g,function(O,_,k,S){return M[_]=S||""}).replace(/\$(\d+?)/g,function(O,_){return M[_]})},u={getCompletions:function(x,M,O,_,k){var S=[],C=M.getTokenAt(O.row,O.column);C&&C.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)?S.push("html-tag"):S=i.getActiveScopes(x);var L=i.snippetMap,I=[];S.forEach(function(F){for(var R=L[F]||[],B=R.length;B--;){var N=R[B],z=N.name||N.tabTrigger;z&&I.push({caption:z,snippet:N.content,meta:N.tabTrigger&&!N.name?N.tabTrigger+"⇥ ":"snippet",completerId:u.id})}},this),k(null,I)},getDocTooltip:function(x){x.snippet&&!x.docHTML&&(x.docHTML=["",o.escapeHTML(x.caption),"","
",o.escapeHTML(p(x.snippet))].join(""))},id:"snippetCompleter"},f=[u,a,c];n.setCompleters=function(x){f.length=0,x&&f.push.apply(f,x)},n.addCompleter=function(x){f.push(x)},n.textCompleter=a,n.keyWordCompleter=c,n.snippetCompleter=u;var g={name:"expandSnippet",exec:function(x){return i.expandWithTab(x)},bindKey:"Tab"},v=function(x,M){b(M.session.$mode)},b=function(x){typeof x=="string"&&(x=d.$modes[x]),x&&(i.files||(i.files={}),D(x.$id,x.snippetFileId),x.modes&&x.modes.forEach(b))},D=function(x,M){!M||!x||i.files[x]||(i.files[x]={},d.loadModule(M,function(O){O&&(i.files[x]=O,!O.snippets&&O.snippetText&&(O.snippets=i.parseSnippetFile(O.snippetText)),i.register(O.snippets||[],O.scope),O.includeScopes&&(i.snippetMap[O.scope].includeScopes=O.includeScopes,O.includeScopes.forEach(function(_){b("ace/mode/"+_)})))}))},E=function(x){var M=x.editor,O=M.completer&&M.completer.activated;if(x.command.name==="backspace")O&&!l.getCompletionPrefix(M)&&M.completer.detach();else if(x.command.name==="insertstring"&&!O){w=x;var _=x.editor.$liveAutocompletionDelay;_?y.delay(_):A(x)}},w,y=o.delayedCall(function(){A(w)},0),A=function(x){var M=x.editor,O=l.getCompletionPrefix(M),_=x.args,k=l.triggerAutocomplete(M,_);if(O&&O.length>=M.$liveAutocompletionThreshold||k){var S=s.for(M);S.autoShown=!0,S.showPopup(M)}},T=t("../editor").Editor;t("../config").defineOptions(T.prototype,"editor",{enableBasicAutocompletion:{set:function(x){x?(s.for(this),this.completers||(this.completers=Array.isArray(x)?x:f),this.commands.addCommand(s.startCommand)):this.commands.removeCommand(s.startCommand)},value:!1},enableLiveAutocompletion:{set:function(x){x?(this.completers||(this.completers=Array.isArray(x)?x:f),this.commands.on("afterExec",E)):this.commands.off("afterExec",E)},value:!1},liveAutocompletionDelay:{initialValue:0},liveAutocompletionThreshold:{initialValue:0},enableSnippets:{set:function(x){x?(this.commands.addCommand(g),this.on("changeMode",v),v(null,this)):(this.commands.removeCommand(g),this.off("changeMode",v))},value:!1}}),n.MarkerGroup=r}),(function(){ace.require(["ace/ext/language_tools"],function(t){m&&(m.exports=t)})})()})(Tp);const to={jsonError:{border:"1px solid red",minHeight:200},jsonNoError:{border:"1px solid #00000000",minHeight:200}};function sr(m){return $.createElement(Ep,{style:m.error===!0?to.jsonError:m.error===!1?to.jsonNoError:void 0,mode:m.mode||"json",width:"100%",height:"100%",showPrintMargin:m.editValueMode,showGutter:m.editValueMode,highlightActiveLine:m.editValueMode,defaultValue:m.defaultValue,theme:m.themeType==="dark"?"clouds_midnight":"chrome",value:m.value,readOnly:!m.onChange,onChange:e=>{var t;return(t=m.onChange)==null?void 0:t.call(m,e)},name:m.name||"UNIQUE_ID_OF_DIV1",fontSize:m.fontSize||14,setOptions:{enableBasicAutocompletion:!0,enableLiveAutocompletion:!0,enableSnippets:!0,showLineNumbers:m.editValueMode,tabSize:m.editValueMode?2:void 0},editorProps:{$blockScrolling:!0}})}const vs={flex:{display:"flex"},button:{height:48,minWidth:48},wrapper:{width:"calc(100vw - 40px)",height:"calc(100vh - 188px)"}};class Lp extends V{async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t)||"{}";this.setState({value:n,initialized:!0,jsonError:this.validateJson(n)})}validateJson(e){let t=!1;if(this.props.schema.validateJson!==!1&&(e||!this.props.schema.allowEmpty))try{this.props.schema.json5?Jo.parse(e):JSON.parse(e)}catch(n){console.log("Error in JSON",n),t=!0}return t}renderItem(e,t){if(!this.state.initialized)return null;const{schema:n,data:h,attr:i}=this.props,{value:s,showSelectId:d}=this.state,o=n.readOnly===!0||t;return $.createElement(fe,{fullWidth:!0,variant:"standard"},$.createElement("div",{style:vs.flex},$.createElement(ve,{color:"grey",style:vs.button,size:"small",variant:"outlined",onClick:()=>this.setState({showSelectId:!0})},P.I18n.t("ra_JSON editor"))),d?$.createElement(qs,{title:this.getText(n.label),overflowHidden:!0,applyDisabled:this.state.jsonError&&this.props.schema.doNotApplyWithError||o,onClose:()=>{o?this.setState({showSelectId:!1}):this.setState({showSelectId:!1,value:V.getValue(h,i)||{}})},onApply:o?void 0:()=>this.setState({showSelectId:!1},()=>this.onChange(i,s))},$.createElement("div",{style:{...vs.wrapper,border:this.state.jsonError?"2px solid red":"2px solid transparent"}},$.createElement(sr,{mode:this.props.schema.json5?"json5":"json",value:typeof s=="object"?JSON.stringify(s):s,onChange:o?void 0:l=>this.setState({value:l,jsonError:this.validateJson(l)}),name:"ConfigJsonEditor",themeType:this.props.oContext.themeType}))):null,n.help||this.state.jsonError?$.createElement(ge,null,this.state.jsonError?P.I18n.t("ra_Invalid JSON"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Mp=[{value:"en",label:"English"},{value:"de",label:"Deutsch"},{value:"ru",label:"русский"},{value:"pt",label:"Portugues"},{value:"nl",label:"Nederlands"},{value:"fr",label:"français"},{value:"it",label:"Italiano"},{value:"es",label:"Espanol"},{value:"pl",label:"Polski"},{value:"uk",label:"Український"},{value:"zh-cn",label:"简体中文"}];class Ip extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr),t=[...Mp];this.props.schema.system?t.unshift({value:"",label:P.I18n.t("ra_System language")}):t.unshift({value:"",label:P.I18n.t("ra_none")}),this.setState({value:this.props.schema.system?e||"":e||P.I18n.getLanguage(),selectOptions:t})}renderItem(e,t){var h,i;if(!this.state.selectOptions)return null;const n=(h=this.state.selectOptions)==null?void 0:h.find(s=>s.value===this.state.value||!s.value&&!this.state.value);return $.createElement(fe,{fullWidth:!0,variant:"standard"},this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,disabled:t,value:this.state.value||"_",renderValue:()=>this.getText(n==null?void 0:n.label,this.props.schema.noTranslation),onChange:s=>{let{value:d}=s.target;d==="_"&&(d=""),this.setState({value:d},()=>{const o=this.onChange(this.props.attr,d);if(o instanceof Promise&&o.catch(l=>console.error(l)),this.props.schema.changeGuiLanguage)if(d){if(d===P.I18n.getLanguage())return;P.I18n.setLanguage(d),this.props.oContext.changeLanguage&&this.props.oContext.changeLanguage()}else this.props.oContext.socket.getSystemConfig().then(l=>{l.common.language!==P.I18n.getLanguage()&&l.common.language&&(P.I18n.setLanguage(l.common.language),this.props.oContext.changeLanguage&&this.props.oContext.changeLanguage())}).catch(l=>console.error(`Cannot read system config: ${l}`))})}},(i=this.state.selectOptions)==null?void 0:i.map(s=>$.createElement($e,{key:s.value,value:s.value},s.label))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Op extends V{scrollRef;constructor(e){super(e),this.scrollRef=$.createRef()}scrolledDown(){return this.scrollRef.current?this.scrollRef.current.offsetHeight+this.scrollRef.current.scrollTop>=this.scrollRef.current.scrollHeight:!1}async componentDidMount(){await super.componentDidMount(),V.getValue(this.props.data,this.props.attr)||(this.props.schema.licenseUrl?(this.setState({showLicenseDialog:!0,loading:!0,scrolledDown:!1}),fetch(this.props.schema.licenseUrl).then(e=>e.text()).then(e=>this.setState({license:e,loading:!1})).catch(e=>this.setState({license:e.toString(),loading:!1,error:!0,scrolledDown:!1}))):this.setState({showLicenseDialog:!0,scrolledDown:!1}),setTimeout(()=>{this.scrollRef.current&&(this.scrolledDown()?this.setState({scrolledDown:!0}):this.scrollRef.current.addEventListener("scroll",()=>{!this.state.scrolledDown&&this.scrolledDown()&&this.setState({scrolledDown:!0})}))},1e3))}renderItem(e,t){return this.state.showLicenseDialog?$.createElement(Lt,{maxWidth:"lg",open:!0,onClose:(n,h)=>{h!=="escapeKeyDown"&&h!=="backdropClick"&&this.setState({showLicenseDialog:!1})}},$.createElement(yn,null,this.props.schema.title?P.I18n.t(this.props.schema.title):P.I18n.t("ra_License agreement")),$.createElement(Kt,null,this.props.schema.licenseUrl?$.createElement($.Fragment,null,this.state.loading?$.createElement(ji,null):null,$.createElement("pre",{ref:this.scrollRef,style:{width:"100%",height:"100%",overflowY:"auto",fontSize:14}},this.state.license)):null,!this.props.schema.licenseUrl&&this.props.schema.texts?$.createElement("div",{ref:this.scrollRef,style:{width:"100%",height:"100%",overflowY:"auto",fontSize:14}},this.props.schema.texts.map((n,h)=>this.props.schema.noTranslation?$.createElement("p",{key:h},n):$.createElement("p",{key:h},P.I18n.t(n)))):null),$.createElement(Gt,null,this.props.schema.checkBox?$.createElement(Xn,{control:$.createElement(Zt,{disabled:t,checked:!!this.state.licenseChecked,onClick:()=>this.setState({licenseChecked:!this.state.licenseChecked})}),label:P.I18n.t(this.props.schema.checkBox)}):null,$.createElement(ve,{disabled:t||this.state.loading||this.state.error||this.props.schema.checkBox&&!this.state.licenseChecked||!this.state.scrolledDown,onClick:()=>{this.setState({showLicenseDialog:!1});const n=this.onChange(this.props.attr,!0);n instanceof Promise&&n.catch(h=>console.error(`Cannot set value: ${h}`))},color:"primary",variant:"contained",startIcon:$.createElement(Gs,null)},this.props.schema.agreeText?P.I18n.t(this.props.schema.agreeText):P.I18n.t("ra_Accept license")),$.createElement(ve,{onClick:()=>{this.setState({showLicenseDialog:!1}),setTimeout(()=>this.setState({showLicenseDialog:!0}),2e3)},color:"grey",variant:"contained",startIcon:$.createElement(ht,null)},P.I18n.t("ra_Close")))):null}}const no={indeterminate:{opacity:.5},control:{flexDirection:"row",width:"100%"}};class Fp extends V{updateTimeout;async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr);if(e==null&&(e=""),Array.isArray(e)&&this.props.oContext.multiEdit){e=V.DIFFERENT_VALUE,this.setState({_value:e,oldValue:e});return}this.setState({_value:e.toString(),oldValue:e.toString()})}static getDerivedStateFromProps(e,t){if(e.schema.min!==void 0&&e.schema.min<0||e.schema.max!==void 0&&e.schema.max<0)return null;const n=V.getValue(e.data,e.attr);return e.oContext.multiEdit&&t._value===V.DIFFERENT_VALUE?{_value:V.DIFFERENT_VALUE}:n==null||t.oldValue===null||t.oldValue===void 0||n.toString()!==parseFloat(t._value).toString()&&n.toString()!==t.oldValue.toString()?{_value:n}:null}checkValue(e){if(e==null||(e=e.toString().trim().replace(",","."),e==="-"))return null;const t=e===""?0:parseFloat(e);return e!==""&&Number.isNaN(t)?"ra_Not a number":e!==""&&window.isFinite(t)?this.props.schema.min!==void 0&&tthis.props.schema.max?"ra_Too big":e===""||e==="-"||Number.isNaN(t)?"ra_Not a number":null:"ra_Not a number"}renderItem(e,t){var i;const n=Array.isArray(this.state._value)||this.state._value===V.DIFFERENT_VALUE;if(this.state.oldValue!==null&&this.state.oldValue!==void 0?(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=void 0,this.setState({oldValue:null})},30)):this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=void 0),n){const s=V.getValue(this.props.data,this.props.attr),d=(s==null?void 0:s.filter(o=>o||o===0).map(o=>({label:o.toString(),value:o})))||[];return d.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),$.createElement(Wi,{style:no.indeterminate,fullWidth:!0,freeSolo:!0,value:d[0],getOptionSelected:(o,l)=>o.label===l.label,onChange:(o,l)=>{const r=this.onChange(this.props.attr,l==null?void 0:l.value,()=>{this.setState({_value:l==null?void 0:l.value,oldValue:this.state._value})});r instanceof Promise&&r.catch(a=>console.error(a))},options:d,getOptionLabel:o=>o.label,renderInput:o=>$.createElement(pe,{...o,label:this.getText(this.props.schema.label),variant:"standard",slotProps:{htmlInput:{...o.inputProps,readOnly:this.props.schema.readOnly||!1},input:{endAdornment:this.props.schema.unit?this.getText(this.props.schema.unit,this.props.schema.noTranslation):void 0}},error:!!e,placeholder:this.getText(this.props.schema.placeholder),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),disabled:!!t})})}!e&&this.state._value!==null&&this.state._value!==void 0&&this.state._value&&(e=this.checkValue(this.state._value),e&&(e=P.I18n.t(e)));const h=parseFloat(((i=this.state._value)==null?void 0:i.toString().replace(",","."))||"");return $.createElement(fe,{variant:"standard",style:no.control},$.createElement(pe,{sx:{"& .up-down":{display:"none"},"&:hover .up-down":{display:"block"}},variant:"standard",type:Number.isNaN(h)?"text":this.props.schema.min!==void 0&&this.props.schema.min>=0?"number":"text",fullWidth:!0,slotProps:{htmlInput:{min:this.props.schema.min,max:this.props.schema.max,step:this.props.schema.step,readOnly:this.props.schema.readOnly||!1},input:{endAdornment:this.props.schema.unit?this.getText(this.props.schema.unit,this.props.schema.noTranslation):null}},value:this.state._value??"",error:!!e,disabled:!!t,onChange:s=>{const d=s.target.value,o=this.checkValue(d);o?this.onError(this.props.attr,P.I18n.t(o)):this.onError(this.props.attr),this.setState({_value:d,oldValue:this.state._value},()=>{const l=parseFloat(d.toString().replace(",","."));Number.isNaN(l)?this.onChange(this.props.attr,d.toString().replace(",",".")):this.onChange(this.props.attr,l)})},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:e&&typeof e=="string"?e:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}))}}class Rp extends V{authWindow;oid;url;constructor(e){super(e),this.state={...this.state,accessTokens:"",success:!1,blocked:!1,running:!1,pressed:!1,clientId:"",clientSecret:"",accessTokenError:""},this.url=`https://oauth2.iobroker.in/${e.schema.identifier}?redirect=true`,e.schema.scope&&(this.url+=`&scope=${encodeURIComponent(e.schema.scope)}`),this.oid=`${this.props.oContext.adapterName}.${this.props.oContext.instance}.${this.props.schema.saveTokenIn||"oauth2Tokens"}`}async componentDidMount(){await super.componentDidMount(),window.addEventListener?window.addEventListener("message",this.onMessage,!1):window.attachEvent("onmessage",this.onMessage,!1),await this.props.oContext.socket.subscribeState(this.oid,this.onTokensUpdated);let e;this.props.schema.ownClientId&&(e={clientId:V.getValue(this.props.data,this.props.schema.ownClientId)}),this.props.schema.ownClientId&&(e||={},e.clientSecret=V.getValue(this.props.data,this.props.schema.ownClientSecret));const t=await this.props.oContext.socket.getState(this.oid);if(t){const n=JSON.parse(t.val);new Date(n.access_token_expires_on).getTime()>Date.now()&&(e||={},e.accessTokens=t.val)}e&&this.setState(e)}onTokensUpdated=(e,t)=>{if(t!=null&&t.val){const n=JSON.parse(t.val);if(new Date(n.access_token_expires_on).getTime()>Date.now()){this.state.accessTokens!==t.val&&this.setState({accessTokens:t.val});return}}this.setState({accessTokens:""})};componentWillUnmount(){super.componentWillUnmount(),window.removeEventListener?window.removeEventListener("message",this.onMessage,!1):window.detachEvent("onmessage",this.onMessage,!1),this.props.oContext.socket.unsubscribeState(this.oid,this.onTokensUpdated)}saveToken(e){try{e&&!e.startsWith("{")&&(e=atob(e));const t=JSON.parse(e);t.access_token&&t.refresh_token&&t.expires_in&&(t.access_token_expires_on||=new Date(Date.now()+t.expires_in*1e3).toISOString(),this.props.schema.ownClientId&&(t.client_id=V.getValue(this.props.data,this.props.schema.ownClientId)),this.props.oContext.socket.setState(this.oid,JSON.stringify(t),!0).catch(n=>console.log(`Error occurred: ${n.toString()}`)))}catch(t){console.warn(t)}}onMessage=e=>{var t,n,h;if(e.origin==="https://oauth2.iobroker.in"&&(typeof e.data=="string"&&e.data.startsWith(`${this.props.schema.identifier}-authentication:`)||typeof e.message=="string"&&e.message.startsWith(`${this.props.schema.identifier}-authentication:`))){const i=(e.data||e.message).split(":");i[1]==="success"?(this.setState({accessTokens:i[2],success:!0,pressed:!1},()=>this.saveToken(this.state.accessTokens)),(t=this.authWindow)==null||t.postMessage("close",e.origin),this.authWindow=null):(h=(n=this.props).onError)==null||h.call(n,i[2])}};onOpenUrl(){this.authWindow=window.open(this.url+(this.props.schema.ownClientId?`&client_id=${encodeURIComponent(this.state.clientId)}&client_secret=${encodeURIComponent(this.state.clientSecret)}`:""),this.props.schema.identifier),!this.authWindow||this.authWindow.closed||typeof this.authWindow.closed>"u"?this.setState({blocked:!0}):this.setState({pressed:!0})}renderItem(e,t){let n="";if(this.state.accessTokens)try{const s=JSON.parse(this.state.accessTokens);n=new Date(s.access_token_expires_on).toLocaleString()}catch{}let h;this.state.accessTokens?h=this.props.schema.refreshLabel?this.getText(this.props.schema.refreshLabel):P.I18n.t("ra_Renew %s access",this.props.schema.identifier[0].toUpperCase()+this.props.schema.identifier.slice(1)):h=this.props.schema.label?this.getText(this.props.schema.label):P.I18n.t("ra_Get %s access",this.props.schema.identifier[0].toUpperCase()+this.props.schema.identifier.slice(1));const i=this.getIcon();return $.createElement("div",{style:{width:"100%",margin:"0 0 1rem 0"}},this.props.schema.ownClientId?$.createElement(pe,{value:this.state.clientId,onChange:s=>{const d=s.target.value;this.setState({clientId:d},()=>this.onChange(this.props.schema.ownClientId,d))},style:{marginBottom:8},variant:"standard",fullWidth:!0,error:!this.state.clientId,disabled:!!t,label:P.I18n.t("ra_OAuth Client ID"),slotProps:{input:{endAdornment:this.state.clientId?$.createElement(se,{size:"small",tabIndex:-1,onClick:()=>this.setState({clientId:""},()=>this.onChange(this.props.schema.ownClientId,""))},$.createElement(ht,null)):null}}}):null,this.props.schema.ownClientSecret?$.createElement(pe,{value:this.state.clientSecret,onChange:s=>{const d=s.target.value;this.setState({clientSecret:d},()=>this.onChange(this.props.schema.ownClientSecret,d))},style:{marginBottom:8},variant:"standard",fullWidth:!0,error:!this.state.clientSecret,disabled:!!t,label:P.I18n.t("ra_OAuth Client secret"),slotProps:{input:{endAdornment:this.state.clientSecret?$.createElement(se,{size:"small",tabIndex:-1,onClick:()=>this.setState({clientSecret:""},()=>this.onChange(this.props.schema.ownClientSecret,""))},$.createElement(ht,null)):null}}}):null,$.createElement(ve,{disabled:this.state.running||this.props.schema.ownClientSecret&&!this.state.clientSecret||this.props.schema.ownClientId&&!this.state.clientId,endIcon:i||$.createElement(Tc,null),variant:"contained",onClick:()=>this.onOpenUrl()},h),this.state.blocked?$.createElement("div",{style:{color:"red",fontSize:16,marginTop:20}},P.I18n.t("ra_Please allow popups in your browser for this page!")):null,this.state.accessTokens?$.createElement("div",{style:{color:"green",fontSize:16,marginTop:20}},this.props.alive?P.I18n.t("ra_Successfully authorized. Token valid till %s and will be automatically renewed.",n):P.I18n.t("ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.",n)):null,this.state.pressed?$.createElement($.Fragment,null,$.createElement("div",{style:{width:"100%",margin:"1rem 0 1rem 0"}},$.createElement("span",{style:{marginRight:4}},`${P.I18n.t("ra_If the button above does not work, you can authorize manually this app by visiting this url")}`,":"),$.createElement("br",null),$.createElement("a",{target:this.props.schema.identifier,href:this.url,rel:"noreferrer"},this.url)),$.createElement(pe,{value:this.state.accessTokens,label:P.I18n.t("ra_Enter the code from that page here"),variant:"standard",error:!!this.state.accessTokenError,helperText:this.state.accessTokenError||"",onChange:s=>{let d=s.target.value;try{d!=null&&d.trim()&&!d.trim().startsWith("{")&&(d=atob(d.trim()))}catch{this.setState({accessTokenError:"Invalid access token. Cannot decode from base64"})}if(d!=null&&d.startsWith("{"))try{const o=JSON.parse(d);o.access_token&&(o.access_token_expires_on=new Date(Date.now()+(o.expires_in-10)*1e3).toISOString(),this.setState({accessTokens:JSON.stringify(o),accessTokenError:""},()=>this.saveToken(this.state.accessTokens)))}catch{this.setState({accessTokens:d,accessTokenError:"Invalid access token. Cannot parse JSON"})}else d&&this.setState({accessTokens:d,accessTokenError:"Invalid access token. Not JSON"})},fullWidth:!0})):null)}}const io={flex:{display:"flex"},button:{maxHeight:48,marginLeft:4,minWidth:48}};class Np extends V{fillOnSelect=[];async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t)||"";if(this.props.schema.fillOnSelect){const h=this.props.schema.fillOnSelect.split(",").map(i=>i.trim());for(const i of h){const s=i.split("=>");if(s.length===2){const d={pathInObject:s[0],attr:s[1]};(d.attr.includes("(X)")||d.attr.includes("(x)"))&&(d.overwrite=!0,d.attr=d.attr.replace(/\(X\)|\(x\)/g,"")),this.fillOnSelect.push(d)}else console.error(`Invalid format for fillOnSelect: ${this.props.schema.fillOnSelect}`)}}this.setState({value:n,initialized:!0})}onObjectChanged=async(e,t)=>{if(await this.onChange(e,t),this.fillOnSelect.length)try{const n=await this.getCachedObject(t);for(const h of this.fillOnSelect)if(h.overwrite||!V.getValue(this.props.data,h.attr)){let i=V.getValue(n,h.pathInObject);typeof i=="object"&&(i=this.getText(i,!0)),await this.onChange(h.attr,i)}}catch(n){console.error(n.toString())}};renderItem(e,t){if(!this.state.initialized)return null;const n=this.props.oContext.socket,{schema:h,attr:i}=this.props,{value:s,showSelectId:d}=this.state;return $.createElement(fe,{fullWidth:!0,variant:"standard"},h.label?$.createElement(_e,{shrink:!0},this.getText(h.label)):null,$.createElement("div",{style:io.flex},$.createElement(pe,{variant:"standard",fullWidth:!0,value:s,error:!!e,disabled:t,placeholder:this.getText(h.placeholder),label:this.getText(h.label),helperText:this.renderHelp(h.help,h.helpLink,h.noTranslation),onChange:o=>{const l=Array.isArray(o.target.value)?o.target.value[0]:o.target.value;this.setState({value:l},()=>{this.onObjectChanged(i,l)})}}),$.createElement(ve,{color:"grey",disabled:t,style:io.button,size:"small",variant:"outlined",onClick:()=>this.setState({showSelectId:!0})},"...")),d?$.createElement(P.DialogSelectID,{imagePrefix:this.props.oContext.imagePrefix??"../..",dialogName:`admin.${this.props.oContext.adapterName}`,filterFunc:h.filterFunc,themeType:this.props.oContext.themeType,theme:this.props.oContext.theme,types:h.types?Array.isArray(h.types)?h.types:[h.types]:void 0,customFilter:h.customFilter,filters:h.filters,socket:n,selected:s,root:h.root,onClose:()=>this.setState({showSelectId:!1}),onOk:o=>{const l=Array.isArray(o)?o[0]:o;this.setState({showSelectId:!1,value:l},()=>{this.onObjectChanged(i,l)})}}):null)}}const ys={fullWidth:{width:"100%",display:"inline-block"},halfWidth1:{width:"calc(50% - 5px)",display:"inline-block",marginRight:8},halfWidth2:{width:"calc(50% - 5px)",display:"inline-block"}},mi="____ppp____";class Bp extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.setState({_repeat:e?mi:"",_visible:!1,value:e?mi:"",_notEqual:!1})}onChangePassword(e,t){e===void 0&&(e=this.state.value),t===void 0&&(t=this.state._repeat);const n=!!this.props.schema.repeat&&t!==e;this.setState({value:e,_repeat:t,_notEqual:n},()=>{if(n)this.onError(this.props.attr,P.I18n.t("ra_Passwords are not equal!"));else{this.onError(this.props.attr);const h=this.onChange(this.props.attr,e);h instanceof Promise&&h.catch(i=>this.onError(this.props.attr,i))}})}renderItem(e,t){if(this.state._notEqual===void 0)return null;const n=$.createElement(pe,{variant:"standard",fullWidth:!0,type:this.state._visible&&this.state.value!==mi?"text":"password",value:this.state.value,error:!!e||this.state._notEqual,disabled:!!t,onChange:h=>this.onChangePassword(h.target.value),label:this.getText(this.props.schema.label),slotProps:{input:{autoComplete:"new-password",endAdornment:this.state.value&&this.state.value!==mi&&this.props.schema.visible&&!t&&!this.props.schema.readOnly?$.createElement(vn,{position:"end"},$.createElement(se,{size:"large",tabIndex:-1,onClick:h=>{h.preventDefault(),h.stopPropagation(),this.setState({_visible:!this.state._visible})},edge:"end"},this.state._visible?$.createElement(Lc,null):$.createElement(zo,null))):void 0},htmlInput:{autoComplete:"new-password",form:{autoComplete:"off"},maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:this.props.schema.readOnly||!1}},helperText:this.state._notEqual?P.I18n.t("ra_Passwords are not equal!"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)});if(this.props.schema.repeat&&!this.props.schema.readOnly){const h=this.state._visible?null:$.createElement(pe,{variant:"standard",fullWidth:!0,type:"password",value:this.state._repeat,error:!!e||this.state._notEqual,disabled:!!t,onChange:i=>this.onChangePassword(void 0,i.target.value),label:`${this.getText(this.props.schema.label)} (${P.I18n.t("ra_repeat")})`,slotProps:{input:{autoComplete:"new-password"},htmlInput:{autoComplete:"new-password",form:{autoComplete:"off"},maxLength:this.props.schema.maxLength||this.props.schema.max||void 0}},helperText:this.state._notEqual?P.I18n.t("ra_Passwords are not equal!"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)});return $.createElement("div",{style:ys.fullWidth},$.createElement("div",{style:ys.halfWidth1},n),$.createElement("div",{style:ys.halfWidth2},h))}return n}}class Pp extends V{checkTimeout=null;async componentDidMount(){await super.componentDidMount();const e=await this.getPatternAsync(this.props.schema.pattern,null,!0)??"";this.setState({pattern:e})}componentWillUnmount(){this.checkTimeout&&(clearTimeout(this.checkTimeout),this.checkTimeout=null),super.componentWillUnmount()}checkIfInstanceChanged(){this.checkTimeout&&clearTimeout(this.checkTimeout),this.checkTimeout=setTimeout(async()=>{this.checkTimeout=null;const e=await this.getPatternAsync(this.props.schema.pattern,null,!0)??"";e!==this.state.pattern&&this.setState({pattern:e})},200)}renderItem(e,t){return this.checkIfInstanceChanged(),$.createElement(pe,{variant:"standard",fullWidth:!0,disabled:!!t,slotProps:{input:{endAdornment:this.props.schema.copyToClipboard?$.createElement(se,{tabIndex:-1,size:"small",onClick:async()=>{P.Utils.copyToClipboard(await this.getPatternAsync(this.props.schema.pattern,null,this.props.schema.noTranslation)),window.alert(P.I18n.t("ra_Copied"))}},$.createElement(P.IconCopy,null)):void 0}},value:this.state.pattern||"",label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}const Wp={warning:{"& .Mui-error":{color:"orange"}}};class jp extends V{updateTimeout;async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr);e==null&&(e=""),this.setState({_value:e.toString(),oldValue:e.toString()});const t=await this.props.oContext.socket.getAdapterInstances(),n=`system.adapter.${this.props.oContext.adapterName}.${this.props.oContext.instance}`,h=await this.getCachedObject(n),i=h==null?void 0:h.common.host,s=[];t.forEach(d=>{var l,r,a,c;if(!d||d._id===n||d.common.host!==i||!((l=d.native)!=null&&l.bind))return;if(d!=null&&d.native&&d.native.secure&&d.native.leEnabled&&d.native.leUpdate){const p=parseInt(d.native.leCheckPort||d.native.lePort,10);p&&s.push({name:`${d._id.replace("system.adapter.","")} (LE)`,port:p,v6bind:d.native.bind.includes(":")?d.native.bind:d.native.v6bind,bind:d.native.bind,enabled:!!((r=d.common)!=null&&r.enabled)})}const o=parseInt((a=d==null?void 0:d.native)==null?void 0:a.port,10);o&&s.push({name:d._id.replace("system.adapter.",""),bind:d.native.bind,v6bind:d.native.bind.includes(":")?d.native.bind:d.native.v6bind,port:o,enabled:!!((c=d.common)!=null&&c.enabled)})}),this.setState({ports:s})}static getDerivedStateFromProps(e,t){const n=V.getValue(e.data,e.attr);return n==null||t.oldValue===null||t.oldValue===void 0||n.toString()!==parseInt(t._value,10).toString()&&n.toString()!==t.oldValue.toString()?{_value:n}:null}checkValue(e){if(e==null)return null;const t=this.props.schema.min??20,n=this.props.schema.max||65535;e=e.toString().trim();const h=e===""?0:parseInt(e,10);return e!==""&&Number.isNaN(h)?"ra_Not a number":e!==""&&window.isFinite(Number(e))?hn?"ra_Too big":e===""||e==="-"||Number.isNaN(h)?"ra_Not a number":null:"ra_Not a number"}renderItem(e,t){this.state.oldValue!==null&&this.state.oldValue!==void 0?(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=void 0,this.setState({oldValue:null})},30)):this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=void 0);const n=this.props.schema.min??20,h=this.props.schema.max||65535;let i;if(this.state.ports){const s=parseInt(this.state._value,10);if(s){const d=this.props.data.bind,o=this.state.ports.filter(r=>{if(r.port!==s)return!1;const a=r.bind,c=r.v6bind;return!d||!a||d==="0.0.0.0"||a==="0.0.0.0"||d==="::"||c==="::"||d===a||d===c});let l=o.findIndex(r=>r.port===s&&r.enabled);if(l!==-1){const r=this.state.ports.find(a=>a.port===s&&a.enabled&&o.some(c=>c.name===a.name&&c.bind===a.bind));e=P.I18n.t("ra_Port is already used by %s",(r==null?void 0:r.name)||o[l].name)}else if(l=o.findIndex(r=>r.port===s&&!r.enabled),l!==-1){i=!0;const r=this.state.ports.find(a=>a.port===s&&!a.enabled&&o.some(c=>c.name===a.name&&c.bind===a.bind));e=P.I18n.t("ra_Port could be used by %s",(r==null?void 0:r.name)||o[l].name)}}}return!e&&this.state._value!==null&&this.state._value!==void 0&&(e=this.checkValue(this.state._value),typeof e=="string"&&(e=P.I18n.t(e))),$.createElement(pe,{variant:"standard",type:"number",fullWidth:!0,slotProps:{htmlInput:{min:n,max:h,readOnly:this.props.schema.readOnly||!1}},value:this.state._value??"",error:!!e,disabled:!!t,sx:i?Wp.warning:void 0,onChange:s=>{const d=Number(s.target.value.toString().replace(/[^0-9]/g,"")).toString(),o=this.checkValue(d);o?this.onError(this.props.attr,P.I18n.t(o)):this.onError(this.props.attr),this.setState({_value:d,oldValue:this.state._value},()=>{if(d.trim()===parseInt(d,10).toString()){const l=this.onChange(this.props.attr,parseInt(d,10)||0);l instanceof Promise&&l.catch(r=>{console.error(`Cannot set value for ${this.props.attr}: ${r}`)})}})},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:e&&typeof e=="string"?e:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}class Hp extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.props.oContext.socket.getEnums("rooms").then(t=>{const n=Object.keys(t).map(h=>({value:this.props.schema.short?h.replace("enum.rooms.",""):h,label:this.getText(t[h].common.name),obj:t[h]}));this.props.schema.allowDeactivate!==!1&&n.unshift({label:P.I18n.t(V.NONE_LABEL),value:V.NONE_VALUE}),this.setState({value:e,selectOptions:n})}).catch(t=>console.error(`Cannot get enums: ${t}`))}renderItem(e,t){if(!this.state.selectOptions)return null;const n=this.state.selectOptions.find(h=>h.value===this.state.value);return $.createElement(fe,{variant:"standard",fullWidth:!0},this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,disabled:!!t,value:this.state.value||"_",renderValue:()=>n?n.obj?$.createElement(P.TextWithIcon,{value:n.obj,themeType:this.props.oContext.themeType,lang:P.I18n.getLanguage()}):n.label:"",onChange:h=>{this.setState({value:h.target.value==="_"?"":h.target.value},()=>this.onChange(this.props.attr,this.state.value))}},this.state.selectOptions.map(h=>$.createElement($e,{key:h.value,value:h.value,style:h.value===V.DIFFERENT_VALUE?{opacity:.5}:{}},h.obj?$.createElement(P.TextWithIcon,{value:h.obj,themeType:this.props.oContext.themeType,lang:P.I18n.getLanguage()}):h.label))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const on={noMargin:{"&>div":{marginTop:0}},icon:{width:20,height:20,marginRight:4}};class zp extends V{initialValue="";async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr);this.props.schema.multiple&&(typeof e=="string"?e=[e]:e==null&&(e=[]));const t=[];for(const n of this.props.schema.options||[]){const h=n;if(Array.isArray(h.items)){const i={label:this.getText(n.label,this.props.schema.noTranslation),value:n.value,group:!0,color:n.color,description:this.getText(n.description)};i.hiddenValue=await this.isHidden(i),t.push(i);for(const s of h.items){const d={label:this.getText(s.label,this.props.schema.noTranslation),value:s.value,hidden:s.hidden,color:s.color,description:this.getText(s.description),icon:s.icon};d.hiddenValue=await this.isHidden(d),t.push(d)}}else{const i={label:this.getText(n.label,this.props.schema.noTranslation),value:n.value,hidden:n.hidden,color:n.color,description:this.getText(n.description),icon:n.icon};i.hiddenValue=await this.isHidden(i),t.push(i)}}if(this.props.onFilterLabelUpdate&&this.props.table){const n={};for(const h of t)!h.group&&h.value!==V.DIFFERENT_VALUE&&(n[h.value.toString()]=h.label);this.props.onFilterLabelUpdate(this.props.attr,n)}Array.isArray(e)&&!this.props.schema.multiple?(this.initialValue=[...e],t.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),this.setState({value:V.DIFFERENT_VALUE,selectOptions:t})):this.setState({value:e,selectOptions:t})}_getValue(){let e=this.state.value===null||this.state.value===void 0?V.getValue(this.props.data,this.props.attr):this.state.value;return this.props.schema.multiple&&(typeof e=="string"?e=[e]:e==null&&(e=[])),e}async isHidden(e){return e.hidden?this.props.custom?!!await this.executeCustom(e.hidden,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!!await this.execute(e.hidden,this.props.schema.default,this.props.data,this.props.arrayIndex,this.props.globalData):!1}renderRadio(e,t){const n=this.state.selectOptions.filter(i=>!i.hiddenValue&&!i.group),h=this._getValue();return $.createElement(fe,{fullWidth:!0,error:!!e,disabled:!!t,id:`jsonSelect_${this.props.attr}_${this.props.index||this.props.index===0?this.props.index:""}`},this.props.schema.label?$.createElement(oc,null,this.getText(this.props.schema.label)):null,$.createElement(ac,{row:!!this.props.schema.horizontal,value:h==null?"":h.toString(),onChange:i=>{const s=n.find(o=>o.value.toString()===i.target.value),d=s?s.value:i.target.value;this.setState({value:d},()=>{const o=this.onChange(this.props.attr,d);o instanceof Promise&&o.catch(l=>console.error(l))})}},n.map((i,s)=>$.createElement(Xn,{key:s,value:i.value.toString(),control:$.createElement(lc,null),title:i.description||"",label:$.createElement("span",{style:{display:"flex",alignItems:"center"}},i.icon?$.createElement(P.Icon,{src:i.icon,style:on.icon}):null,$.createElement(yt,{component:"span",style:{color:i.color}},i.label)),style:i.value===V.DIFFERENT_VALUE?{opacity:.5}:{}}))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}renderItem(e,t){if(!this.state.selectOptions)return null;if(this.props.schema.format==="radio")return this.renderRadio(e,t);const n=this.state.selectOptions.filter(s=>!s.hiddenValue),h=this._getValue(),i=this.props.schema.multiple?null:n.find(s=>s.value==h);return $.createElement(fe,{variant:"standard",fullWidth:!0,sx:this.props.table!==void 0?on.noMargin:void 0,id:`jsonSelect_${this.props.attr}_${this.props.index||this.props.index===0?this.props.index:""}`},this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,multiple:this.props.schema.multiple,disabled:!!t,value:h||"_",renderValue:s=>this.props.schema.multiple?$.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:.5}},s.map(d=>{const o=n.find(l=>l.value===d);if(o||this.props.schema.showAllValues!==!1){const l=(o==null?void 0:o.label)||d;return $.createElement(Vs,{key:d,label:l})}return null})):i!=null&&i.color?$.createElement("span",{style:{display:"flex",alignItems:"center"}},i.icon?$.createElement(P.Icon,{src:i.icon,style:on.icon}):null,$.createElement("span",null,$.createElement("div",{style:{color:i.color}},i.label??s),i.description?$.createElement("div",{style:{opacity:.7,fontStyle:"italic",fontSize:"smaller"}},i.description):null)):(i==null?void 0:i.label)===void 0?i!=null&&i.icon?$.createElement("span",{style:{display:"flex",alignItems:"center"}},$.createElement(P.Icon,{src:i.icon,style:on.icon}),s):s:$.createElement("span",{style:{display:"flex",alignItems:"center"}},i.icon?$.createElement(P.Icon,{src:i.icon,style:on.icon}):null,$.createElement("span",null,$.createElement("div",null,i.label),i.description?$.createElement("div",{style:{opacity:.7,fontStyle:"italic",fontSize:"smaller"}},i.description):null)),onChange:s=>{this.setState({value:s.target.value==="_"?"":s.target.value},()=>{let d;this.state.value===V.DIFFERENT_VALUE?d=this.onChange(this.props.attr,this.initialValue):d=this.onChange(this.props.attr,this.state.value),d instanceof Promise&&d.catch(o=>console.error(o))})}},n.map((s,d)=>s.group?$.createElement(Lo,{key:d,style:{color:s.color}},$.createElement("div",null,s.label),s.description?$.createElement("div",{style:{opacity:.7,fontStyle:"italic",fontSize:"smaller"}},s.description):null):$.createElement($e,{key:d,value:s.value,style:s.value===V.DIFFERENT_VALUE?{opacity:.5}:{}},this.props.schema.multiple?$.createElement(Zt,{checked:h.includes(s.value),onClick:()=>{const o=JSON.parse(JSON.stringify(this._getValue())),l=h.indexOf(s.value);l!==-1?o.splice(l,1):(o.push(s.value),o.sort()),this.setState({value:o},()=>this.onChange(this.props.attr,o))}}):null,s.icon?$.createElement(P.Icon,{src:s.icon,style:on.icon}):null,$.createElement(Us,{primary:s.label,secondary:s.description,slotProps:{secondary:{style:{fontSize:"smaller",fontStyle:"italic",opacity:.7}}},style:{color:s.color}})))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const Vp={menuPaper:{maxHeight:800}};class Up extends V{initialized=!1;localContext;async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const t=await this.getPatternAsync(this.props.schema.jsonData,null,!0);try{e=JSON.parse(t)}catch{console.error(`Cannot parse json data: ${t}`)}}e===void 0&&(e=null),this.setState({running:!0},async()=>{const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}try{const n=await this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e);this.reportFilterLabels(n);for(const h of n)h.hiddenValue=await this.isHidden(h);this.setState({list:n,running:!1})}catch(n){console.error(`Cannot send command: ${n}`)}})}else{const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e,running:!1})}}reportFilterLabels(e){if(this.props.onFilterLabelUpdate&&this.props.table&&Array.isArray(e)){const t={};for(const n of e)n.value!==V.DIFFERENT_VALUE&&(t[n.value]=n.label);this.props.onFilterLabelUpdate(this.props.attr,t)}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}_getValue(){let e=this.state.value===null||this.state.value===void 0?V.getValue(this.props.data,this.props.attr):this.state.value;return this.props.schema.multiple&&(typeof e=="string"?e=[e]:e==null&&(e=[])),e}async isHidden(e){return e.hidden?this.props.custom?!!await this.executeCustom(e.hidden,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.arrayIndex,this.props.globalData):!!await this.execute(e.hidden,this.props.schema.default,this.props.data,this.props.arrayIndex,this.props.globalData):!1}renderItem(e,t){if(this.props.alive){const s=this.getContext();(s!==this.localContext||!this.initialized)&&(this.localContext=s,setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}const n=this._getValue();if(!this.props.alive||!this.state.running&&!Array.isArray(this.state.list))return this.props.schema.multiple||this.props.schema.manual===!1?P.I18n.t("ra_Cannot retrieve options, as instance is offline"):$.createElement(pe,{variant:"standard",fullWidth:!0,value:n,error:!!e,disabled:!!t,onChange:s=>{const d=s.target.value;this.setState({value:d},()=>this.onChange(this.props.attr,(d||"").trim()))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),slotProps:{input:{endAdornment:this.state.value&&!this.props.schema.noClearButton?$.createElement(vn,{position:"end"},$.createElement(se,{tabIndex:-1,size:"small",onClick:()=>this.setState({value:""},()=>this.onChange(this.props.attr,""))},$.createElement(ht,null))):null}}});if(this.state.running)return $.createElement(Tt,{size:"24"});const h=this.state.list.filter(s=>!s.hiddenValue),i=h.find(s=>s.value===n);return $.createElement(fe,{variant:"standard",fullWidth:!0},this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,$.createElement(Ne,{variant:"standard",error:!!e,multiple:this.props.schema.multiple,disabled:!!t,sx:{"&.MuiSelect-paper":this.props.schema.multiple?Vp.menuPaper:void 0},value:n,renderValue:s=>this.props.schema.multiple?$.createElement(Ie,{sx:{display:"flex",flexWrap:"wrap",gap:.5}},s.map(d=>{const o=h.find(l=>l.value===d);if(o||this.props.schema.showAllValues!==!1){const l=(o==null?void 0:o.label)||d;return $.createElement(Vs,{key:d,label:l})}return null})):this.getText((i==null?void 0:i.label)||s,this.props.schema.noTranslation),onChange:s=>{const d=this.onChange(this.props.attr,s.target.value);d instanceof Promise&&d.catch(o=>console.error(`Cannot set value: ${o}`))}},h.map((s,d)=>s.group?$.createElement(Lo,{key:d},$.createElement("div",null,this.getText(s.label,this.props.schema.noTranslation)),s.description?$.createElement("div",{style:{opacity:.7,fontStyle:"italic",fontSize:"smaller"}},this.getText(s.description)):null):$.createElement($e,{key:d,value:s.value},this.props.schema.multiple?$.createElement(Zt,{checked:n.includes(s.value.toString()),onClick:()=>{const o=JSON.parse(JSON.stringify(this._getValue())),l=n.indexOf(s.value.toString());l!==-1?o.splice(l,1):(o.push(s.value),o.sort()),this.setState({value:o},()=>this.onChange(this.props.attr,o))}}):null,$.createElement(Us,{primary:this.getText(s.label),secondary:this.getText(s.description),slotProps:{secondary:{style:{fontSize:"smaller",fontStyle:"italic",opacity:.7}}}})))),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const so={fullWidth:{width:"100%"}};function At(m){return m.split(".").reduce((e,t)=>(e<<8)+parseInt(t,10),0)>>>0}function Kp(m,e){var h,i;const t=(i=(h=m==null?void 0:m.native)==null?void 0:h.hardware)==null?void 0:i.networkInterfaces;if(!t)return null;let n;return Object.keys(t).forEach(s=>t[s].forEach(d=>{d.internal||e.includes(":")&&d.family!=="IPv6"||e.includes(".")&&!e.match(/[^.\d]/)&&d.family!=="IPv4"||(d.family==="IPv4"&&!d.address.startsWith("172")&&(e==="127.0.0.0"||e==="localhost"||e.match(/[^.\d]/))?n=d.address:n||(d.family==="IPv4"&&e.includes(".")&&(At(e)&At(d.netmask),At(d.address)&At(d.netmask)),n=d.address))})),n||Object.keys(t).forEach(s=>t[s].forEach(d=>{d.internal||e.includes(":")&&d.family!=="IPv6"||e.includes(".")&&!e.match(/[^.\d]/)&&d.family!=="IPv4"||(d.family==="IPv6"&&(e==="127.0.0.0"||e==="localhost"||e.match(/[^.\d]/))?n=d.address:n||(d.family==="IPv4"&&e.includes(".")&&(At(e)&At(d.netmask),At(d.address)&At(d.netmask)),n=d.address))})),n||Object.keys(t).forEach(s=>{t[s].forEach(d=>{d.internal||e.includes(":")&&d.family!=="IPv6"||e.includes(".")&&!e.match(/[^.\d]/)&&d.family!=="IPv4"||(e==="127.0.0.0"||e==="localhost"||e.match(/[^.\d]/),n=d.address)})}),n||Object.keys(t).forEach(s=>{t[s].forEach(d=>{d.internal||(n=d.address)})}),n}class ro extends V{async componentDidMount(){var t;await super.componentDidMount();let e=window.location.hostname;if(this.props.schema.openUrl){const n=await this.props.oContext.socket.getCurrentInstance(),h=await this.getCachedObject(`system.adapter.${n}`);if(h){const i=await this.getCachedObject(`system.host.${(t=h==null?void 0:h.common)==null?void 0:t.host}`);if(i){const s=Kp(i,window.location.hostname);if(s)e=`${s}:${window.location.port}`;else{console.warn(`Cannot find suitable IP in host ${h.common.host} for ${h._id}`);return}}}}await new Promise(n=>{this.setState({_error:"",_message:"",hostname:e},n)}),this.props.schema.onLoaded&&this._onClick().catch(n=>console.error(n))}renderErrorDialog(){return this.state._error?$.createElement(P.DialogError,{text:this.state._error,onClose:()=>this.setState({_error:""})}):null}renderMessageDialog(){return this.state._message?$.createElement(P.DialogMessage,{text:this.state._message,onClose:()=>this.setState({_message:""})}):null}renderCopyDialog(){return this.state._copyDialog?$.createElement(qs,{title:this.getText(this.state._copyDialog.title||P.I18n.t("ra_Result")),overflowHidden:!0,onClose:()=>{this.setState({_copyDialog:null})},onApply:()=>{P.copy(this.state._copyDialog.text),window.alert(P.I18n.t("ra_Copied")),this.setState({_copyDialog:null})},titleButtonApply:P.I18n.t("ra_Copy content")},$.createElement("div",{style:{width:"calc(100vw - 40px)",height:"calc(100vh - 188px)"}},$.createElement(sr,{mode:this.state._copyDialog.type,value:this.state._copyDialog.text,name:"CopyDialog",themeType:this.props.oContext.themeType}))):null}async _onClick(){this.props.oContext.onCommandRunning(!0),this.setState({running:!0});const e=`${window.location.protocol}//${window.location.host}${window.location.pathname.replace(/\/index\.html$/,"")}`,t=`${window.location.protocol}//${this.state.hostname.split(":").length>3?`[${this.state.hostname}]`:this.state.hostname}${window.location.pathname.replace(/\/index\.html$/,"")}`;let n=this.props.schema.data;if(n===void 0&&this.props.schema.jsonData){const s=await this.getPatternAsync(this.props.schema.jsonData,{_origin:e,_originIp:t,...this.props.data},!0);try{n=JSON.parse(s)}catch{console.error(`Cannot parse json data: ${s}`)}}n===void 0&&(n=null),this.props.schema.openUrl&&!n&&(n={_origin:e,_originIp:t});let h;this.props.schema.timeout&&(h=setTimeout(()=>{this.props.oContext.onCommandRunning(!1),this.setState({_error:P.I18n.t("ra_Request timed out"),running:!1})},parseInt(this.props.schema.timeout,10)||1e4));const i=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(i!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const s=await this.props.oContext.socket.getState(`system.adapter.${i}.alive`);if(!(s!=null&&s.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",i));return}}this.props.oContext.socket.sendTo(i,this.props.schema.command||"send",n).then(async s=>{var d,o,l,r,a,c;if(h&&(clearTimeout(h),h=void 0),s!=null&&s.error)if((d=this.props.schema.error)!=null&&d[s.error]){let p=this.getText(this.props.schema.error[s.error]);(o=s.args)==null||o.forEach(u=>p=p.replace("%s",u)),this.setState({_error:p})}else this.setState({_error:s.error?typeof s.error=="string"?P.I18n.t(s.error):JSON.stringify(s.error):P.I18n.t("ra_Error")});else{if(s!=null&&s.command){(r=(l=this.props.oContext).onBackEndCommand)==null||r.call(l,s.command);return}if(s!=null&&s.reloadBrowser&&this.props.schema.reloadBrowser)window.location.reload();else if(s!=null&&s.openUrl&&this.props.schema.openUrl)window.open(s.openUrl,s.window||this.props.schema.window||"_blank");else if(s!=null&&s.result&&((a=this.props.schema.result)!=null&&a[s.result])){let p=this.getText(this.props.schema.result[s.result]);(c=s.args)==null||c.forEach(u=>p=p.replace("%s",u)),window.alert(p)}if(s!=null&&s.native&&this.props.schema.useNative){for(const[p,u]of Object.entries(s.native))await this.onChangeAsync(p,u);setTimeout(()=>this.props.oContext.forceUpdate(Object.keys(s.native),this.props.data),300)}else s!=null&&s.result?window.alert(typeof s.result=="object"?JSON.stringify(s.result):s.result):s!=null&&s.copyDialog?this.setState({_copyDialog:s.copyDialog}):window.alert(P.I18n.t("ra_Ok"));s!=null&&s.saveConfig&&this.props.onChange(null,null,null,!0)}}).catch(s=>{this.props.schema.error&&this.props.schema.error[s.toString()]?this.setState({_error:this.getText(this.props.schema.error[s.toString()])}):this.setState({_error:P.I18n.t(s.toString())||P.I18n.t("ra_Error")})}).then(()=>{this.props.oContext.onCommandRunning(!1),this.setState({running:!1})})}renderDialogConfirm(){if(!this.state.confirmDialog)return null;const e=this.state.confirmData||this.props.schema.confirm;let t=null;return e.type==="warning"?t=$.createElement(zn,null):e.type==="error"?t=$.createElement(Jt,null):e.type==="info"&&(t=$.createElement(Mi,null)),$.createElement(P.DialogConfirm,{title:this.getText(e.title)||P.I18n.t("ra_Please confirm"),text:this.getText(e.text),ok:this.getText(e.ok)||P.I18n.t("ra_Ok"),cancel:this.getText(e.cancel)||P.I18n.t("ra_Cancel"),icon:t||void 0,onClose:n=>this.setState({confirmDialog:!1},()=>n&&this._onClick())})}renderItem(e,t){const n=this.getIcon();return $.createElement("div",{style:so.fullWidth},$.createElement(ve,{variant:this.props.schema.variant||void 0,color:this.props.schema.color||"grey",style:{...so.fullWidth,...this.props.schema.controlStyle||void 0},disabled:t||!this.props.alive,startIcon:n,title:this.props.alive?this.getText(this.props.schema.title)||"":P.I18n.t("ra_Instance %s is not alive",this.props.oContext.instance.toString()),onClick:()=>{this.props.schema.confirm?this.setState({confirmDialog:!0}):this._onClick().catch(h=>console.error(h))}},this.props.schema.showProcess&&this.state.running?$.createElement(Tt,{size:20,style:{marginRight:8}}):null,this.getText(this.props.schema.label,this.props.schema.noTranslation)),this.renderErrorDialog(),this.renderMessageDialog(),this.renderCopyDialog())}}const Gp={fullWidth:{width:"100%"}};class Jp extends V{async _onClick(){var n,h;let e=this.props.schema.val;if(typeof e=="string"&&e.includes("${")){e=await this.getPatternAsync(e,null,!0);const i=await this.getCachedObject(this.props.schema.id);((n=i==null?void 0:i.common)==null?void 0:n.type)==="number"?e=parseFloat(e):((h=i==null?void 0:i.common)==null?void 0:h.type)==="boolean"&&(e=e==="true"||e===!0||e==="1"||e===1)}const t=(this.props.schema.id||"").replace(/%INSTANCE%/g,(this.props.oContext.instance||0).toString());try{await this.props.oContext.socket.setState(t,{val:e,ack:!!this.props.schema.ack}),this.props.schema.okText&&window.alert(this.getText(this.props.schema.okText))}catch(i){this.props.schema.error&&this.props.schema.error[i.toString()]?window.alert(this.getText(this.props.schema.error[i.toString()])):window.alert(P.I18n.t(i.toString())||P.I18n.t("ra_Error"))}}renderDialogConfirm(){if(!this.state.confirmDialog)return null;const e=this.state.confirmData||this.props.schema.confirm;let t=null;return e.type==="warning"?t=$.createElement(zn,null):e.type==="error"?t=$.createElement(Jt,null):e.type==="info"&&(t=$.createElement(Mi,null)),$.createElement(P.DialogConfirm,{title:this.getText(e.title)||P.I18n.t("ra_Please confirm"),text:this.getText(e.text),ok:this.getText(e.ok)||P.I18n.t("ra_Ok"),cancel:this.getText(e.cancel)||P.I18n.t("ra_Cancel"),icon:t,onClose:n=>this.setState({confirmDialog:!1},()=>n&&this._onClick())})}renderItem(e,t){const n=this.getIcon();return $.createElement(ve,{variant:this.props.schema.variant||void 0,color:this.props.schema.color||"grey",style:Gp.fullWidth,disabled:t,onClick:async()=>{this.props.schema.confirm?this.setState({confirmDialog:!0}):await this._onClick()},startIcon:n||void 0},this.getText(this.props.schema.label,this.props.schema.noTranslation))}}const oo={fullWidth:{width:"100%"},slider:{marginLeft:10,marginRight:10,width:"calc(100% - 20px)"}};class Yp extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.setState({_value:e})}static getDerivedStateFromProps(e,t){if(e.schema.min!==void 0&&e.schema.min<0||e.schema.max!==void 0&&e.schema.max<0)return null;const n=V.getValue(e.data,e.attr);return n==null||n.toString()!==parseFloat(t._value).toString()?{_value:n}:null}renderItem(e,t){const n=this.props.schema.min||0,h=this.props.schema.max||100,i=this.props.schema.unit?this.getText(this.props.schema.unit,this.props.schema.noTranslation):"",s=[{value:n,label:n+i},{value:h,label:h+i}];return $.createElement(Ie,{style:oo.fullWidth},this.props.schema.label?$.createElement(yt,{gutterBottom:!0},this.getText(this.props.schema.label)):null,$.createElement(Mo,{style:oo.slider,value:this.state._value,getAriaValueText:d=>d+i,step:this.props.schema.step||(h-n)/100,valueLabelDisplay:"auto",marks:s,min:n,max:h,disabled:!!t,onChange:d=>{const o=d.target.value;this.setState({_value:o},()=>this.onChange(this.props.attr,o))}}),this.props.schema.help?$.createElement(yt,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}function Dt(m,e){return m==="edit"||m==="rename"?$.createElement(Fo,{style:e}):m==="delete"?$.createElement(_t,{style:e}):m==="refresh"?$.createElement(Ks,{style:e}):m==="newDevice"||m==="new"||m==="add"?$.createElement(Un,{style:e}):m==="discover"||m==="search"?$.createElement(Oo,{style:e}):m==="unpairDevice"||m==="unpair"?$.createElement(Bo,{style:e}):m==="pairDevice"||m==="pair"?$.createElement(Po,{style:e}):m==="identify"?$.createElement(Mc,{style:e}):m==="play"?$.createElement(Js,{style:e}):m==="stop"?$.createElement(Ic,{style:e}):m==="pause"?$.createElement(Oc,{style:e}):m==="forward"||m==="next"?$.createElement(Fc,{style:e}):m==="rewind"||m==="previous"?$.createElement(Rc,{style:e}):m==="lamp"||m==="light"?$.createElement(Nc,{style:e}):m==="backlight"?$.createElement(Bc,{style:e}):m==="dimmer"?$.createElement(Pc,{style:e}):m==="socket"?$.createElement(Wc,{style:e}):m==="settings"?$.createElement(jc,{style:e}):m==="users"||m==="group"?$.createElement(No,{style:e}):m==="user"?$.createElement(Ro,{style:e}):m==="qrcode"?$.createElement(Hc,{style:e}):m==="connection"?$.createElement(zc,{style:e}):m==="no-connection"?$.createElement(Vc,{style:e}):m==="visible"?$.createElement(zo,{style:e}):null}function Qp(m,e){return typeof e=="string"?{"@keyframes newStateAnimationOnceColor":{"0%":{color:e},"100%":{color:m.palette.mode==="dark"?"#fff":"#000"}},animation:"newStateAnimationOnceColor 2s ease-in-out"}:{"@keyframes newStateAnimationOnce":{"0%":{color:"#00f900"},"80%":{color:m.palette.mode==="dark"?"#518851":"#008000"},"100%":{color:m.palette.mode==="dark"?"#fff":"#000"}},animation:"newStateAnimationOnce 2s ease-in-out"}}class Xp extends V{controlTimeout=null;delayedUpdate={timer:null,value:null};async getObjectID(){let e=(this.props.schema.oid||"").toString();return e.includes("${")&&(e=await this.getPatternAsync(e,null,!0)),this.props.schema.foreign?e:`${this.props.schema.system?"system.adapter.":""}${this.props.oContext.adapterName}.${this.props.oContext.instance||0}.${e}`}async componentDidMount(){var h,i;await super.componentDidMount();const e=await this.getObjectID(),t=await this.getCachedObject(e);if((h=t==null?void 0:t.common)!=null&&h.states&&!this.props.schema.options){if(Array.isArray((i=t==null?void 0:t.common)==null?void 0:i.states)){const s={};t.common.states.forEach((d,o)=>{s[o.toString()]=d}),t.common.states=s}Object.keys(t.common.states).length||(t.common.states=void 0)}const n=this.props.schema.control||this.detectType(t);try{const s=await this.props.oContext.socket.getState(e);this.setState({stateValue:s?s.val:null,controlType:n,obj:t,objId:e},async()=>{const d=await this.getObjectID();await this.props.oContext.socket.subscribeState(d,this.onStateChanged)})}catch(s){console.error(`Cannot get state ${e}: ${s}`),this.setState({controlType:n,obj:t,objId:e})}}componentWillUnmount(){super.componentWillUnmount(),this.state.objId&&this.props.oContext.socket.unsubscribeState(this.state.objId,this.onStateChanged),this.delayedUpdate.timer&&(clearTimeout(this.delayedUpdate.timer),this.delayedUpdate.timer=null),this.controlTimeout&&(clearTimeout(this.controlTimeout),this.controlTimeout=null,this.state.objId&&this.props.oContext.socket.setState(this.state.objId,this.state.stateValue,!1).catch(e=>console.error(`Cannot control value: ${e.toString()}`)))}onStateChanged=(e,t)=>{let n=t?t.val:null;this.state.controlType==="button"||this.state.controlType==="switch"?(n=!!n,this.state.stateValue!==n&&this.setState({stateValue:n})):n!==null&&(this.state.controlType==="slider"||this.state.controlType==="number")?(n=parseFloat(n),console.log(`${Date.now()} Received new value: ${n}`),n!==this.state.stateValue?(this.delayedUpdate.timer&&(clearTimeout(this.delayedUpdate.timer),this.delayedUpdate.timer=null),this.delayedUpdate.value=n,this.delayedUpdate.timer=setTimeout(()=>{this.setState({stateValue:this.delayedUpdate.value})},500)):this.delayedUpdate.timer&&(clearTimeout(this.delayedUpdate.timer),this.delayedUpdate.timer=null)):this.state.stateValue.toString()!==n.toString()&&this.setState({stateValue:n})};detectType(e){if(e||={},e.common||={},e.common.type==="boolean"){if(this.props.schema.controlled!==!1){if(e.common.read===!1||this.props.schema.controlled===!0)return"button";if(e.common.write||this.props.schema.controlled===!0)return"switch"}return"text"}return e.common.type==="number"&&this.props.schema.controlled!==!1?e.common.write||this.props.schema.controlled===!0?e.common.states||this.props.schema.options?"select":e.common.max!==void 0?"slider":"input":"text":e.common.write&&this.props.schema.controlled!==!1?e.common.states||this.props.schema.options?"select":"input":"text"}getNormalizedStates(){let e;return this.props.schema.options?e=this.props.schema.options.map(t=>typeof t=="string"?{value:t,label:this.getText(t,this.props.schema.noTranslation)}:{value:t.value,label:this.getText(t.label,this.props.schema.noTranslation),color:t.color}):this.state.obj.common.states?(e=[],Object.keys(this.state.obj.common.states).forEach(t=>{e.push({value:t,label:this.getText(this.state.obj.common.states[t],this.props.schema.noTranslation)})})):e=[],e}renderItem(e,t){var h,i,s,d,o;if(!this.state.obj)return null;let n;if(this.state.controlType==="select"||!this.state.controlType&&(this.state.obj.common.type==="number"||this.state.obj.common.type==="string")&&this.state.obj.common.write!==!1&&(this.props.schema.options||this.state.obj.common.states)){const l=this.getNormalizedStates(),r=l.find(a=>a.value===this.state.stateValue);n=$.createElement(fe,{fullWidth:!0},$.createElement(_e,null,this.getText(this.props.schema.label)),$.createElement(Ne,{value:this.state.stateValue,disabled:!!this.props.schema.readOnly||t,onChange:a=>{this.setState({stateValue:a.target.value},()=>{let c=this.state.stateValue;this.state.obj.common.type==="number"&&(c=parseFloat(c.toString().replace(",","."))),this.props.oContext.socket.setState(this.state.objId,c,!1)})},renderValue:a=>r!=null&&r.color?$.createElement("div",{style:{color:r.color}},r.label):a},l.map(a=>$.createElement($e,{key:(a.value??"").toString(),value:a.value,style:{color:a.color}},"$",a.label))))}else if(this.state.controlType==="button"||!this.state.controlType&&this.state.obj.common.type==="boolean"&&(this.state.obj.common.write&&this.state.obj.common.read===!1||(h=this.state.obj.common.role)!=null&&h.includes("button"))){let l=null;this.props.schema.falseImage&&(l=Dt(this.props.schema.falseImage));const r=this.getText(this.props.schema.falseText||this.props.schema.label,this.props.schema.noTranslation);!r&&l?n=$.createElement(se,{style:this.props.schema.falseTextStyle,disabled:!!this.props.schema.readOnly,onClick:async()=>{this.props.schema.confirm?this.setState({confirmDialog:!0,confirmCallback:async a=>{a&&await this.props.oContext.socket.setState(this.state.objId,this.props.schema.buttonValue!==void 0?this.props.schema.buttonValue:!0,!1)}}):await this.props.oContext.socket.setState(this.state.objId,this.props.schema.buttonValue!==void 0?this.props.schema.buttonValue:!0,!1)}},l):n=$.createElement(ve,{variant:this.props.schema.variant||"contained",startIcon:l,style:this.props.schema.falseTextStyle,disabled:t||!!this.props.schema.readOnly,onClick:async()=>{this.props.schema.confirm?this.setState({confirmDialog:!0,confirmCallback:async a=>{a&&await this.props.oContext.socket.setState(this.state.objId,this.props.schema.buttonValue!==void 0?this.props.schema.buttonValue:!0,!1)}}):await this.props.oContext.socket.setState(this.state.objId,this.props.schema.buttonValue!==void 0?this.props.schema.buttonValue:!0,!1)}},r||(this.state.objId||"").split(".").pop())}else if(this.state.controlType==="input"||!this.state.controlType&&this.state.obj.common.write&&this.state.obj.common.type==="string")n=$.createElement("div",{style:{width:"100%",display:"flex",flexDirection:"row",gap:8,alignItems:"baseline"}},$.createElement(pe,{style:{flex:1},value:this.state.stateValue,variant:"standard",disabled:!!this.props.schema.readOnly||t,slotProps:{input:{endAdornment:this.getText(this.props.schema.unit,this.props.schema.noTranslation)||this.state.obj.common.unit||void 0},htmlInput:{readOnly:!!this.props.schema.readOnly}},onKeyUp:l=>{this.props.schema.setOnEnterKey&&l.key==="Enter"&&this.props.oContext.socket.setState(this.state.objId,this.state.stateValue,!1)},onChange:l=>{this.setState({stateValue:l.target.value},()=>{this.props.schema.setOnEnterKey||this.props.schema.showEnterButton||(this.controlTimeout&&clearTimeout(this.controlTimeout),this.controlTimeout=setTimeout(async()=>{this.controlTimeout=null;let r=this.state.stateValue;this.state.obj.common.type==="number"&&(r=parseFloat(r.toString().replace(",","."))),await this.props.oContext.socket.setState(this.state.objId,r,!1)},this.props.schema.controlDelay||0))})},label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}),this.props.schema.showEnterButton&&!this.props.schema.readOnly&&$.createElement(ve,{variant:"outlined",disabled:t,onClick:()=>{this.props.oContext.socket.setState(this.state.objId,this.state.stateValue,!1)}},this.getText(typeof this.props.schema.showEnterButton=="string"?this.props.schema.showEnterButton:"Set")));else{let l;this.props.schema.size==="normal"?l=16:this.props.schema.size==="large"?l=20:typeof this.props.schema.size=="number"&&(l=this.props.schema.size);let r=this.getText(this.props.schema.label,this.props.schema.noTranslation);const a={display:"flex",alignItems:"center",fontSize:l||"1rem",gap:8};this.props.schema.narrow||(a.width="100%",a.justifyContent="space-between"),r.trim()&&!r.trim().endsWith(":")&&this.props.schema.addColon&&(r=`${r.trim()}:`);let c;this.props.schema.blinkOnUpdate&&(c=Qp(this.props.oContext.theme,this.props.schema.blinkOnUpdate));let p;this.props.schema.labelIcon&&(p=$.createElement(P.Icon,{src:this.props.schema.labelIcon,style:{marginRight:4}}));let u;if(r&&p?u=$.createElement("div",{style:{whiteSpace:"nowrap"}},p,r):r?u=$.createElement("div",{style:{whiteSpace:"nowrap"}},r):p&&(u=p),this.state.controlType==="switch"||!this.state.controlType&&this.state.obj.common.type==="boolean"&&(this.state.obj.common.write&&this.state.obj.common.read!==!1||(i=this.state.obj.common.role)!=null&&i.includes("switch"))){let f=null;const g=this.getText(this.props.schema.falseText,this.props.schema.noTranslation);this.props.schema.falseImage&&(f=Dt(this.props.schema.falseImage,g?{marginLeft:8}:void 0));let v=null;const b=this.getText(this.props.schema.trueText,this.props.schema.noTranslation);this.props.schema.trueImage&&(v=Dt(this.props.schema.trueImage,b?{marginRight:8}:void 0)),n=$.createElement(cc,{checked:!!this.state.stateValue,disabled:!!this.props.schema.readOnly||t,onChange:async()=>{this.props.schema.confirm?this.setState({confirmDialog:!0,confirmCallback:async D=>{D&&await this.props.oContext.socket.setState(this.state.objId,!this.state.stateValue,!1)}}):await this.props.oContext.socket.setState(this.state.objId,!this.state.stateValue,!1)}}),(g||f||b||v)&&(n=$.createElement("div",{style:{display:"flex",alignItems:"center",fontSize:14}},$.createElement("span",{style:this.props.schema.falseTextStyle},g,f),n,$.createElement("span",{style:this.props.schema.trueTextStyle},v,b))),u&&(n=$.createElement("div",{style:a},u,n))}else if(this.state.controlType==="slider"||!this.state.controlType&&this.state.obj.common.type==="number"&&(this.state.obj.common.write&&(this.state.obj.common.max!==void 0||this.state.obj.common.unit==="%")||(s=this.state.obj.common.role)!=null&&s.includes("slider")||(d=this.state.obj.common.role)!=null&&d.includes("dimmer")||(o=this.state.obj.common.role)!=null&&o.includes("blind"))){let f=null;const g=this.getText(this.props.schema.falseText,this.props.schema.noTranslation);this.props.schema.falseImage&&(f=Dt(this.props.schema.falseImage,g?{marginLeft:8}:void 0));let v=null;const b=this.getText(this.props.schema.trueText,this.props.schema.noTranslation);this.props.schema.trueImage&&(v=Dt(this.props.schema.trueImage,b?{marginRight:8}:void 0));const D=this.props.schema.min??(this.state.obj.common.min||0),E=this.props.schema.max??this.state.obj.common.max??100,w=this.props.schema.step??(this.state.obj.common.step||1);n=$.createElement(Mo,{style:{width:"100%",flexGrow:1},min:D,max:E,disabled:!!this.props.schema.readOnly||t,step:w,value:this.state.stateValue,valueLabelDisplay:"auto",valueLabelFormat:y=>{let A=this.props.schema.digits!==void 0?y.toFixed(this.props.schema.digits):y.toString();return this.props.oContext.isFloatComma&&(A=A.replace(".",",")),`${A}${this.getText(this.props.schema.unit,this.props.schema.noTranslation)||this.state.obj.common.unit||""}`},onChange:(y,A)=>{this.setState({stateValue:A},()=>{this.controlTimeout&&clearTimeout(this.controlTimeout),this.controlTimeout=setTimeout(async()=>{console.log(`${Date.now()} Send new value: ${this.state.stateValue}`),this.controlTimeout=null,await this.props.oContext.socket.setState(this.state.objId,this.state.stateValue,!1)},this.props.schema.controlDelay||0)})}}),(g||f||b||v)&&(n=$.createElement("div",{style:{display:"flex",width:"100%",flexGrow:1,alignItems:"center"}},$.createElement("span",{style:{marginRight:16,...this.props.schema.falseTextStyle}},g,f),n,$.createElement("span",{style:{marginLeft:16,...this.props.schema.trueTextStyle}},v,b))),u&&(n=$.createElement("div",{style:a},u,n))}else if(this.state.obj.common.type==="number"&&this.state.obj.common.write&&!this.state.controlType){const f=this.props.schema.min??this.state.obj.common.min??void 0,g=this.props.schema.max??this.state.obj.common.max??void 0,v=this.props.schema.step??this.state.obj.common.step??void 0;n=$.createElement(pe,{variant:"standard",style:{width:"100%"},value:this.state.stateValue,type:"number",disabled:!!this.props.schema.readOnly||t,slotProps:{htmlInput:{min:f,max:g,step:v,readOnly:!!this.props.schema.readOnly},input:{endAdornment:this.getText(this.props.schema.unit,this.props.schema.noTranslation)||this.state.obj.common.unit||void 0}},onChange:b=>{this.setState({stateValue:b.target.value},()=>{this.controlTimeout&&clearTimeout(this.controlTimeout),this.controlTimeout=setTimeout(async()=>{this.controlTimeout=null;const D=parseFloat(this.state.stateValue);await this.props.oContext.socket.setState(this.state.objId,D,!1)},this.props.schema.controlDelay||0)})},label:this.getText(this.props.schema.label,this.props.schema.noTranslation),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}else if(this.state.obj.common.type==="boolean"){let f=null,g,v;this.state.stateValue?(g=this.getText(this.props.schema.trueText,this.props.schema.noTranslation),this.props.schema.trueImage&&(f=Dt(this.props.schema.falseImage,g?{marginRight:8}:void 0)),v=this.props.schema.trueTextStyle):(g=this.getText(this.props.schema.falseText,this.props.schema.noTranslation),this.props.schema.falseImage&&(f=Dt(this.props.schema.falseImage,g?{marginLeft:8}:void 0)),v=this.props.schema.falseTextStyle),v=Object.assign(a,v),n=$.createElement("div",{style:v},u,$.createElement(Ie,{style:{display:"flex",alignItems:"center",gap:8},sx:c,key:this.props.schema.blinkOnUpdate?g:void 0},f,g||(this.state.stateValue?P.I18n.t("ra_true"):P.I18n.t("ra_false"))))}else{const f=this.getText(this.props.schema.unit,this.props.schema.noTranslation)||this.state.obj.common.unit;let g=this.state.stateValue;if(g!=null&&(this.props.schema.options||this.state.obj.common.states)){const E=this.getNormalizedStates().find(w=>w.value.toString()===g.toString());E&&(g=E.label)}let v,b;this.state.controlType==="html"?(b=(g||"").toString(),v=$.createElement("span",{dangerouslySetInnerHTML:{__html:g}})):this.state.stateValue===null?(v="null",b=v):this.state.stateValue===void 0?(v="undefined",b=v):(this.props.schema.digits!==void 0&&typeof g=="number"?(v=g.toFixed(this.props.schema.digits),this.props.oContext.isFloatComma&&(v=v.replace(".",","))):v=g.toString(),b=v),n=$.createElement("div",{style:a},u,$.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:4}},$.createElement(Ie,{sx:c,key:this.props.schema.blinkOnUpdate?b:void 0},v),f?$.createElement("span",{style:{opacity:.7,fontSize:"smaller"}},f):null))}}return n}}const bs={fullWidth:m=>({width:"100%",backgroundColor:m.palette.mode==="dark"?"#FFF":"#000",borderStyle:"hidden"}),primary:m=>({backgroundColor:m.palette.primary.main}),secondary:m=>({backgroundColor:m.palette.secondary.main})};class Zp extends V{renderItem(){return $.createElement(Ie,{component:"hr",sx:P.Utils.getStyle(this.props.oContext.theme,bs.fullWidth,this.props.schema.color==="primary"?bs.primary:this.props.schema.color==="secondary"?bs.secondary:{backgroundColor:this.props.schema.color||(this.props.oContext.themeType==="dark"?"#333":"#ddd")},{height:this.props.schema.color?this.props.schema.height||2:this.props.schema.height||1})})}}const qp={header:m=>({width:"100%",background:m.palette.primary.main,color:m.palette.primary.contrastText,padding:"4px !important",borderRadius:"3px",marginBlockEnd:0,marginBlockStart:0})};class ed extends V{renderItem(){let e="h5";switch((this.props.schema.size||5).toString()){case"1":e="h1";break;case"2":e="h2";break;case"3":e="h3";break;case"4":e="h4";break;default:e="h5";break}return $.createElement(Ie,{component:e,sx:qp.header},this.getText(this.props.schema.label||this.props.schema.text,this.props.schema.noTranslation))}}class td extends V{getSrc(){let e=this.props.schema.src;return e&&!e.startsWith(".")&&!e.startsWith("http")&&!e.startsWith(`adapter/${this.props.oContext.adapterName}/`)&&!e.startsWith(`./adapter/${this.props.oContext.adapterName}/`)&&(e=`${this.props.oContext.imagePrefix}/adapter/${this.props.oContext.adapterName}/${e}`),e}renderItem(){const{schema:e}=this.props,t=this.getSrc();if(e.showInDialog){const n=e.showInDialogSmallSize||100,h=e.showInDialogButtonLabel?this.getText(e.showInDialogButtonLabel):"";return $.createElement($.Fragment,null,$.createElement(me,{title:P.I18n.t("ra_Click to see in full size")},$.createElement("img",{src:t,style:{cursor:"pointer",width:"auto",height:n,objectFit:"contain"},alt:"",onClick:()=>this.setState({showDialog:!0})}))," ",h?$.createElement(ve,{variant:"outlined",color:"grey",onClick:()=>this.setState({showDialog:!0})},h):null,this.state.showDialog?$.createElement(Lt,{open:!0,onClose:()=>this.setState({showDialog:!1}),maxWidth:"lg"},$.createElement(Kt,null,$.createElement(P.Icon,{src:t,style:{width:"100%",height:"100%",objectFit:"contain"}})),$.createElement(Gt,null,$.createElement(ve,{variant:"contained",onClick:()=>this.setState({showDialog:!1}),color:"primary"},P.I18n.t("ra_Close")))):null)}return $.createElement("img",{src:t,style:{cursor:e.href?"pointer":void 0,width:"100%",height:"100%"},onClick:e.href?()=>e.href&&window.open(e.href,"_blank"):null,alt:""})}}function ao(m,e,t){return typeof t=="string"?{"@keyframes newValueAnimationOnceColor":{"0%":{color:e?`${t} !important`:t},"100%":{color:m.palette.mode==="dark"?e?"#fff !important":"#fff":e?"#000 !important":"#000"}},animation:"newValueAnimationOnceColor 2s ease-in-out"}:{"@keyframes newValueAnimationOnce":{"0%":{color:e?"#00f900 !important":"#00f900"},"80%":{color:m.palette.mode==="dark"?e?"#518851 !important":"#518851":e?"#008000 !important":"#008000"},"100%":{color:m.palette.mode==="dark"?e?"#fff !important":"#fff":e?"#000 !important":"#000"}},animation:"newValueAnimationOnce 2s ease-in-out"}}function lo(m,e){return typeof e=="string"?{"@keyframes blinkAnimationColor":{"0%":{color:e},"100%":{color:m.palette.mode==="dark"?"#fff":"#000"}},animation:"blinkAnimationColor 2s ease-in-out infinite"}:{"@keyframes blinkAnimation":{"0%":{color:"#00f900"},"80%":{color:m.palette.mode==="dark"?"#518851":"#008000"},"100%":{color:m.palette.mode==="dark"?"#fff":"#000"}},animation:"blinkAnimation 2s ease-in-out infinite"}}const an={label:{fontWeight:"bold",whiteSpace:"nowrap"},valueImage:{maxHeight:"100%"},valueAndUnit:{display:"flex",gap:4,alignItems:"baseline"},value:{},unit:{fontSize:"smaller",opacity:.7}};class nd extends V{renderItem(e){let t=this.getText(this.props.schema.text||this.props.schema.label,this.props.schema.noTranslation);this.props.schema.addColon&&typeof t=="string"&&!t.trim().endsWith(":")&&(t=`${t.trim()}:`),t&&(t.includes("
")||t.includes(""))&&(t=P.Utils.renderTextWithA(t));let n;this.props.schema.size==="normal"?n=16:this.props.schema.size==="large"?n=20:typeof this.props.schema.size=="number"&&(n=this.props.schema.size);const h={width:"100%",height:"100%",display:"flex",alignItems:"center",position:"relative",fontSize:n};this.props.schema.narrow?h.gap=8:h.justifyContent="space-between";let i,s;this.props.schema.data&&typeof this.props.schema.data=="object"&&this.props.schema.data.en?s=this.getText(this.props.schema.data):typeof this.props.schema.data=="object"||this.props.schema.data===void 0||this.props.schema.data===null?s=JSON.stringify(this.props.schema.data):typeof this.props.schema.data=="number"?(s=this.props.schema.data.toString(),this.props.oContext.isFloatComma&&(s=s.replace(".",","))):(!this.props.schema.booleanAsCheckbox||typeof this.props.schema.data!="boolean")&&(s=this.props.schema.data.toString());let d=!1;if(this.props.schema.booleanAsCheckbox&&typeof this.props.schema.data=="boolean")i=$.createElement(Zt,{checked:!!i,disabled:!0,size:this.props.schema.size==="small"?"small":this.props.schema.size==="large"?"large":void 0});else if(s.startsWith("data:image/"))i=$.createElement("div",{style:{...an.value,...an.valueImage,...this.props.schema.styleValue||void 0}},$.createElement(P.Icon,{src:s}));else{const a={...an.value,...this.props.schema.styleValue||void 0};this.props.schema.html?i=$.createElement("div",{style:a,dangerouslySetInnerHTML:{__html:s}}):Array.isArray(this.props.schema.data)?(d=!0,i=$.createElement("div",{style:a},this.props.schema.data.map((c,p)=>$.createElement("div",{key:p},typeof c=="object"||c===null||c===void 0?JSON.stringify(c):c)))):s.includes(` +`)?(d=!0,i=$.createElement("div",{style:a},P.Utils.renderTextWithA(s))):i=$.createElement("div",{style:a},s)}if(this.props.schema.blinkOnUpdate&&this.props.schema.blink){const a=ao(this.props.oContext.theme,!0,this.props.schema.blinkOnUpdate),c=lo(this.props.oContext.theme,this.props.schema.blink);i=$.createElement(Ie,{key:s,sx:{...a,...c}},i)}else if(this.props.schema.blinkOnUpdate){const a=ao(this.props.oContext.theme,!1,this.props.schema.blinkOnUpdate);i=$.createElement(Ie,{key:s,sx:a},i)}else if(this.props.schema.blink){const a=lo(this.props.oContext.theme,this.props.schema.blink);i=$.createElement(Ie,{sx:a},i)}this.props.schema.unit&&(i=$.createElement("div",{style:an.valueAndUnit},i,$.createElement("div",{style:{...an.unit,...this.props.schema.styleUnit||void 0}},this.getText(this.props.schema.unit,this.props.schema.noTranslation))));let o;this.props.schema.labelIcon&&(o=$.createElement(P.Icon,{src:this.props.schema.labelIcon,style:{marginRight:4}}));let l;this.props.schema.copyToClipboard&&(l=$.createElement(fn,{className:"staticCopyButton",style:{position:"absolute",top:"calc(50% - 12px)",right:0,cursor:"pointer"},onClick:()=>{P.Utils.copyToClipboard(s),window.alert(P.I18n.t("ra_Copied"))}}));const r={"& .staticCopyButton":{display:"none"},"& .staticCopyButton:action":{transform:"scale(0.9)"},"&:hover .staticCopyButton":{display:"block"}};return this.props.schema.highlight&&(r["&:hover"]={backgroundColor:this.props.oContext.themeType==="dark"?"#51515180":"#b8b8b880"}),d&&(h.alignItems="top"),$.createElement(Ie,{component:"div",style:h,sx:r},$.createElement("div",{style:{...an.label,...this.props.schema.styleLabel||void 0}},o,t),i,l)}}const co={fullWidth:{height:"100%",width:"100%"},link:m=>({textDecoration:"underline",color:m.palette.mode==="dark"?"#4dabf5":"#254e72",cursor:"pointer"})};function ho(m,e,t){let n,h="";m?m.toString().startsWith("#")||m.toString().startsWith("/")?(n=e||"_self",h=m):m.startsWith("http://")||m.startsWith("https://")?(n=e||"_blank",h=m):(h=`#tab-instances/config/${t}/${m}`,n=e||"_self"):(h=`#tab-instances/config/${t}`,n=e||"_self"),n==="_self"?setTimeout(i=>{i.startsWith("#")?window.location.hash=i:i.startsWith("/")?h=`${window.location.protocol}:${window.location.host}${h}`:(i.startsWith("http://")||i.startsWith("https://"))&&(window.location.href=i)},100,h):(h.startsWith("#")?h=`${window.location.protocol}:${window.location.host}${window.location.pathname}${h}`:h.startsWith("/")&&(h=`${window.location.protocol}:${window.location.host}${h}`),window.open(h,n))}class uo extends V{renderItem(e,t){if(this.props.schema.button){const h=this.getIcon();return $.createElement(ve,{variant:this.props.schema.variant||void 0,color:this.props.schema.color||"grey",style:{...co.fullWidth,...this.props.schema.controlStyle||void 0},disabled:t,startIcon:h,onClick:this.props.schema.href?()=>{const i=this.props.schema.href?this.getText(this.props.schema.href,!0):null;i&&(this.props.oContext.onBackEndCommand?this.props.oContext.onBackEndCommand({command:"link",url:i,target:this.props.schema.target,close:this.props.schema.close}):ho(i,this.props.schema.target,`${this.props.oContext.adapterName}.${this.props.oContext.instance}`))}:null},this.getText(this.props.schema.text||this.props.schema.label,this.props.schema.noTranslation))}let n=this.getText(this.props.schema.text||this.props.schema.label,this.props.schema.noTranslation);if(this.props.schema.format==="html")n=$.createElement("div",{dangerouslySetInnerHTML:{__html:n}});else if(this.props.schema.format==="json")try{const h=typeof n=="string"?JSON.parse(n):n;n=$.createElement("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0}},JSON.stringify(h,null,2))}catch{}else n&&(n.includes("")||n.includes(""))&&(n=P.Utils.renderTextWithA(n));return $.createElement(Ie,{component:"span",style:{...this.props.schema.controlStyle||void 0},sx:this.props.schema.href?co.link:void 0,onClick:this.props.schema.href?()=>{const h=this.props.schema.href?this.getText(this.props.schema.href,!0):null;h&&(this.props.oContext.onBackEndCommand?this.props.oContext.onBackEndCommand({command:"link",url:h,target:this.props.schema.target||"_blank",close:this.props.schema.close}):ho(h,this.props.schema.target||"_blank",`${this.props.oContext.adapterName}.${this.props.oContext.instance}`))}:null},n)}}const ws=1024*1024,re={paper:{width:"100%",marginBottom:16,backgroundColor:"rgba(255, 255, 255, 0.1)"},headerText:{width:"100%"},table:{minWidth:750},label:{display:"flex",justifyContent:"space-between"},title:{flex:"1 1 100%"},rootTool:{paddingLeft:16,paddingRight:8},silver:{opacity:.2},flex:{display:"flex",alignItems:"baseline"},filteredOut:{padding:10,display:"flex",textAlign:"center"},buttonEmpty:{width:34,display:"inline-block"},buttonCell:{whiteSpace:"nowrap"},dropZone:{width:"100%",height:100,position:"relative"},dropZoneEmpty:{},uploadDiv:{position:"relative",width:"100%",minHeight:300,opacity:.9,marginTop:30,cursor:"pointer",outline:"none"},uploadDivDragging:{opacity:1,background:"rgba(128,255,128,0.1)"},uploadCenterDiv:{margin:5,border:"3px dashed grey",borderRadius:5,width:"calc(100% - 10px)",height:"calc(100% - 10px)",minHeight:300,position:"relative",display:"flex"},uploadCenterIcon:{paddingTop:10,width:48,height:48},uploadCenterText:{fontSize:16},uploadCenterTextAndIcon:{textAlign:"center",position:"absolute",top:0,bottom:0,left:0,right:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},tooltip:{pointerEvents:"none"},cardHeader:m=>({color:m.palette.mode==="light"?m.palette.secondary.main:m.palette.text.primary,height:"100%",fontWeight:"bold",fontSize:20,fontStyle:"italic",padding:"4px 16px",backgroundColor:m.palette.primary.main,display:"flex",justifyContent:"space-between"})};function id(m,e,t){e=e||"key";const n=[];return Object.keys(m).forEach(h=>{const i={};i[e]=h,t?(i[t]=m[h],n.push(i)):n.push(Object.assign(i,m[h]))}),n}function po(m,e,t){e=e||"key";const n={};return m.forEach(h=>{const i=h[e]??"";delete h[e],t?n[i]=h[t]:n[i]=h}),n}function sd(m,e){let t="";for(let n=0;n{t.filter&&(this.filterRefs[t.attr]=Xl())}),this.refDiv=$.createRef()}async componentDidMount(){var i;await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr)||[];let t;if(this.props.schema.objKeyName?t=id(e,this.props.schema.objKeyName,this.props.schema.objValueName):t=e,Array.isArray(t)||(t=[]),this.props.schema.encryptedAttributes){let s;try{this.props.oContext.socket.getCompactSystemConfig?s=await this.props.oContext.socket.getCompactSystemConfig():s=await this.getCachedObject("system.config")}catch(d){console.error(`Cannot get system configuration: ${d}`)}this.secret=((i=s==null?void 0:s.native)==null?void 0:i.secret)||this.secret,e.forEach(d=>{this.props.schema.encryptedAttributes.forEach(o=>{d[o]&&(d[o]=rd(this.secret,d[o]))})})}const n=window.localStorage.getItem(`table.collapsed.${this.props.oContext.instance}.${this.props.attr}`);let h=[];if(n)try{h=JSON.parse(n)}catch{}this.setState({value:t,visibleValue:null,orderBy:"",order:"asc",iteration:0,filterOn:[],width:0,tableErrors:{},collapsed:h,filterLabelMap:{}},()=>this.validateUniqueProps())}componentWillUnmount(){this.typingTimer&&(clearTimeout(this.typingTimer),this.typingTimer=null),this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null),this.refreshBecauseOfHiddenElements&&(clearTimeout(this.refreshBecauseOfHiddenElements),this.refreshBecauseOfHiddenElements=null),super.componentWillUnmount()}itemTable(e,t,n,h){var o;const{schema:i}=this.props,s=(o=i.items)==null?void 0:o.find(l=>l.attr===e);if(!s)return null;const d={items:{[e]:s}};return $.createElement(tn,{oContext:this.props.oContext,alive:this.props.alive,arrayIndex:n,changed:this.props.changed,common:this.props.common,expertMode:this.props.expertMode,custom:!0,data:t,globalData:this.props.data,index:n+this.state.iteration,onChange:(l,r)=>{const a=JSON.parse(JSON.stringify(this.state.value));a[n][l]=r,this.setState({value:a},()=>{this.validateUniqueProps(),this.onChangeWrapper(a,!0)})},onError:this.onTableRowError(n),originalData:this.props.originalData,schema:d,table:!0,themeName:this.props.themeName,onFilterLabelUpdate:(l,r)=>{const a=this.state.filterLabelMap[l],c={...a,...r};JSON.stringify(a)!==JSON.stringify(c)&&this.setState(p=>({filterLabelMap:{...p.filterLabelMap,[l]:c}}))},customComponents:this.props.customComponents,onHiddenChanged:h?(l,r)=>{if(r)this.listOfHiddenElements[n]||=[],this.listOfHiddenElements[n].includes(l)||(this.listOfHiddenElements[n].push(l),this.refreshBecauseOfHiddenElements&&clearTimeout(this.refreshBecauseOfHiddenElements),this.refreshBecauseOfHiddenElements=setTimeout(()=>{this.forceUpdate()},100));else if(this.listOfHiddenElements[n]){const a=this.listOfHiddenElements[n].indexOf(l);a!==-1&&(this.listOfHiddenElements[n].splice(a,1),this.refreshBecauseOfHiddenElements&&clearTimeout(this.refreshBecauseOfHiddenElements),this.refreshBecauseOfHiddenElements=setTimeout(()=>{this.forceUpdate()},100))}}:void 0})}validateUniqueProps(){if(!this.props.schema.uniqueColumns)return;let e=null,t=null;for(const n of this.props.schema.uniqueColumns){const h=[];this.state.value.find(s=>{const d=s[n];return h.includes(d)?(e||(e=n,t=d),this.onError(n,"is not unique"),!0):(h.push(d),!1)})||this.onError(n,null)}e?this.setState({errorMessage:P.I18n.t('Non-allowed duplicate entry "%s" in column "%s"',t,e)}):this.setState({errorMessage:""})}onTableRowError=e=>(t,n)=>{const h={...this.state.tableErrors};h[e]||(h[e]={}),n?h[e][t]=n:(delete h[e][t],Object.keys(h[e]).length===0&&delete h[e]),this.setState({tableErrors:h}),this.props.onError(t,n)};static descendingComparator(e,t,n){return t[n]e[n]?1:0}static getComparator(e,t){return e==="desc"?(n,h)=>Qe.descendingComparator(n,h,t):(n,h)=>-Qe.descendingComparator(n,h,t)}static getFilterValue(e){var t,n,h;return(h=(n=(t=e==null?void 0:e.current)==null?void 0:t.children[0])==null?void 0:n.children[0])==null?void 0:h.value}static setFilterValue(e,t){return e.current.children[0].children[0].value=t}handleRequestSort=(e,t=!1)=>{const{order:n,orderBy:h}=this.state,s=t?n:h===e&&n==="asc"?"desc":"asc",d=this.stableSort(s,e);JSON.stringify(d)!==JSON.stringify(this.state.value)&&this.setState({value:d,order:s,orderBy:e,iteration:this.state.iteration+1e4},()=>this.applyFilter(!1,d))};stableSort=(e,t)=>{const{value:n}=this.state,h=Qe.getComparator(e,t),i=n.map((s,d)=>({el:s,index:d}));return i.sort((s,d)=>{const o=h(s.el,d.el);return o!==0?o:s.index-d.index}),i.map(s=>s.el)};renderShowHideFilter(e){return e.filter?$.createElement(se,{title:P.I18n.t("ra_Show/hide filter input"),size:"small",onClick:()=>{const t=[...this.state.filterOn],n=this.state.filterOn.indexOf(e.attr);n===-1?t.push(e.attr):t.splice(n,1),this.setState({filterOn:t},()=>{n&&Qe.getFilterValue(this.filterRefs[e.attr])&&(Qe.setFilterValue(this.filterRefs[e.attr],""),this.applyFilter())})}},this.state.filterOn.includes(e.attr)?$.createElement(Uc,null):$.createElement(Kc,null)):null}renderImportExportButtons(e){return $.createElement($.Fragment,null,!e.noDelete&&e.import?$.createElement(me,{title:P.I18n.t("ra_Import data from %s file","CSV"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:()=>this.setState({showImportDialog:!0})},$.createElement(Vn,null))):null,e.export?$.createElement(me,{title:P.I18n.t("ra_Export data to %s file","CSV"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:()=>this.onExport()},$.createElement(Gc,null))):null,e.noDelete?null:$.createElement(se,{disabled:!0,size:"small"},$.createElement(_t,null)))}renderAddButton(e){return $.createElement(me,{title:e?P.I18n.t("ra_Cannot add items with set filter"):P.I18n.t("ra_Add row"),slotProps:{popper:{sx:re.tooltip}}},$.createElement("span",null,$.createElement(se,{size:"small",color:"primary",disabled:!!e&&!this.props.schema.allowAddByFilter,onClick:this.onAdd},$.createElement(Un,null))))}enhancedTableHead(e,t){var s;const{schema:n}=this.props,{order:h,orderBy:i}=this.state;return $.createElement(ko,null,$.createElement(ct,null,(s=n.items)==null?void 0:s.map((d,o)=>this.renderOneFilter({schema:n,style:{width:d.width},showAddButton:!o&&!n.noDelete,headCell:d,order:h,orderBy:i,index:o,doAnyFilterSet:t})),!n.noDelete&&$.createElement(Ee,{style:{paddingLeft:20,paddingRight:20,width:e,textAlign:"right"},padding:"checkbox"},this.renderImportExportButtons(n))))}onDelete=e=>()=>{const t=JSON.parse(JSON.stringify(this.state.value));t.splice(e,1);const n={...this.state.tableErrors};n[e]&&(Object.keys(n[e]).forEach(i=>{this.props.onError(i,void 0)}),delete n[e]);const h={};Object.keys(n).forEach(i=>{const s=parseInt(i,10);s>e?h[s-1]=n[s]:h[s]=n[s]}),this.setState({value:t,iteration:this.state.iteration+1e4,tableErrors:h},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))};onExport(){const{schema:e}=this.props,{value:t}=this.state,h=[e.items.map(d=>d.attr).join(";")];t.forEach(d=>{const o=[];e.items.forEach(l=>{d[l.attr]&&typeof d[l.attr]=="string"&&d[l.attr].includes(";")?o.push(`"${d[l.attr]}"`):o.push(d[l.attr]??"")}),h.push(o.join(";"))});const i=document.createElement("a");i.setAttribute("href",`data:text/csv;charset=utf-8,${encodeURIComponent(h.join(` `))}`);const s=new Date;i.setAttribute("download",`${s.getFullYear()}_${(s.getMonth()+1).toString().padStart(2,"0")}_${s.getDate().toString().padStart(2,"0")}_${this.props.oContext.adapterName}.${this.props.oContext.instance}_${this.props.attr}.csv`),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}onImport(e){var s;const t=e.split(` -`).map(d=>d.replace("\r","").trim()),{schema:n}=this.props,u=t.shift().split(";").filter(d=>d&&n.items.find(o=>o.attr===d)),i=[];t.forEach(d=>{const o=d.split(";"),l={};for(let r=0;rh.attr===u[r]);p&&p.type==="number"?c=parseFloat(a):c=a}else c=a;l[u[r]]=c}i.push(l)}),i.length?(s=this.state.value)!=null&&s.length?this.setState({showTypeOfImportDialog:i,showImportDialog:!1}):this.setState({value:i,showImportDialog:!1}):window.alert("ra_No data found in file")}onClone=e=>()=>{const t=JSON.parse(JSON.stringify(this.state.value)),n=JSON.parse(JSON.stringify(t[e]));if(typeof this.props.schema.clone=="string"&&typeof n[this.props.schema.clone]=="string"){let u=1,i=n[this.props.schema.clone];const s=i.match(/(\d+)$/);for(s?(i=i.replace(s[0],""),u=parseInt(s[0],10)+1):i+="_";t.find(d=>d[this.props.schema.clone]===i+u.toString());)u++;n[this.props.schema.clone]=`${n[this.props.schema.clone]}_${u}`}t.splice(e,0,n),this.setState({value:t,iteration:this.state.iteration+1e4},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))};onChangeWrapper=(e,t)=>{this.typingTimer&&clearTimeout(this.typingTimer),this.typingTimer=setTimeout((n,u)=>{this.typingTimer=null;let i;if(this.props.schema.encryptedAttributes){const s=JSON.parse(JSON.stringify(n));if(s.forEach(d=>{this.props.schema.encryptedAttributes.forEach(o=>{d[o]&&(d[o]=td(this.secret,d[o]))})}),this.props.schema.objKeyName){const d=co(s,this.props.schema.objKeyName,this.props.schema.objValueName);i=this.onChange(this.props.attr,d)}else i=this.onChange(this.props.attr,s)}else if(this.props.schema.objKeyName){const s=co(JSON.parse(JSON.stringify(n)),this.props.schema.objKeyName,this.props.schema.objValueName);i=this.onChange(this.props.attr,s)}else i=this.onChange(this.props.attr,n);i instanceof Promise&&i.catch(s=>console.error(`Cannot save: ${s}`)),u&&(this.applyFilter(!1,n),this.handleRequestSort(this.state.orderBy,!0))},300,e,t)};onAdd=async()=>{const{schema:e}=this.props,t=JSON.parse(JSON.stringify(this.state.value)),n={};if(e.items)for(const u of e.items){let i;u.defaultFunc?this.props.custom?i=u.defaultFunc?await this.executeCustom(u.defaultFunc,this.props.data,this.props.customObj,this.props.oContext.instanceObj,t.length,this.props.data):this.props.schema.default:i=u.defaultFunc?await this.execute(u.defaultFunc,this.props.schema.default,this.props.data,t.length,this.props.data):this.props.schema.default:i=u.default??null,n[u.attr]=i}t.push(n),this.setState({value:t},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))};isAnyFilterSet(){return!!Object.keys(this.filterRefs).find(e=>Qe.getFilterValue(this.filterRefs[e]))}applyFilter=(e,t,n)=>{t=t||this.state.value;let u=t.map((i,s)=>s);if(Object.keys(this.filterRefs).forEach(i=>{var d;let s=Qe.getFilterValue(this.filterRefs[i]);if(!e&&s){s=s.toLowerCase();const o=(d=this.state.filterLabelMap)==null?void 0:d[i];u=u.filter(l=>{if(!t[l]||t[l][i]==null)return!1;if(t[l][i].toString().toLowerCase().includes(s))return!0;if(o){const a=o[t[l][i]];if(a&&a.toLowerCase().includes(s))return!0}return!1})}else this.filterRefs[i].current&&Qe.setFilterValue(this.filterRefs[i],"")}),u.length===t.length&&(u=null),u===null&&this.state.visibleValue===null){n&&n();return}JSON.stringify(u)!==JSON.stringify(this.state.visibleValue)?this.setState({visibleValue:u},()=>n&&n()):n&&n()};onMoveUp(e){const t=JSON.parse(JSON.stringify(this.state.value)),n=t[e];t.splice(e,1),t.splice(e-1,0,n),this.setState({value:t,iteration:this.state.iteration+1e4},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))}onMoveDown(e){const t=JSON.parse(JSON.stringify(this.state.value)),n=t[e];t.splice(e,1),t.splice(e+1,0,n),this.setState({value:t,iteration:this.state.iteration+1e4},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))}onDrop(e){const t=e[0],n=new FileReader;n.onabort=()=>console.log("file reading was aborted"),n.onerror=()=>console.log("file reading has failed"),n.onload=()=>{if(t.size>bs){window.alert(P.I18n.t("ra_File is too big. Max %sk allowed. Try use SVG.",Math.round(bs/1024)));return}const u=new Uint8Array(n.result).reduce((i,s)=>i+String.fromCharCode(s),"");this.onImport(u)},n.readAsArrayBuffer(t)}showTypeOfImportDialog(){return this.state.showTypeOfImportDialog?x.createElement(Lt,{open:!0,onClose:()=>this.setState({showTypeOfImportDialog:!1}),maxWidth:"md"},x.createElement(yn,null,P.I18n.t("ra_Append or replace?")),x.createElement(Kt,null,P.I18n.t("ra_Append %s entries or replace existing?",this.state.showTypeOfImportDialog.length)),x.createElement(Gt,null,x.createElement(me,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.value));this.state.showTypeOfImportDialog.forEach(t=>e.push(t)),this.setState({value:e,iteration:this.state.iteration+1e4,showTypeOfImportDialog:!1},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(e)))}},P.I18n.t("ra_Append")),x.createElement(me,{variant:"contained",color:"secondary",autoFocus:!0,onClick:()=>{const e=this.state.showTypeOfImportDialog;this.setState({value:e,iteration:this.state.iteration+1e4,showTypeOfImportDialog:!1},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(e)))}},P.I18n.t("ra_Replace")))):null}showImportDialog(){return this.state.showImportDialog?x.createElement(Lt,{open:!0,onClose:()=>this.setState({showImportDialog:!1}),sx:{"& .MuiDialog-paper":{minHeight:500}},maxWidth:"md",fullWidth:!0},x.createElement(yn,null,P.I18n.t("ra_Import from %s","CSV")),x.createElement(Kt,null,x.createElement(jo,{multiple:!1,accept:{"text/csv":[".csv"]},maxSize:bs,onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:(e,t)=>{this.setState({uploadFile:!1}),e.length?this.onDrop(e):window.alert(t&&t[0]&&t[0].errors&&t[0].errors[0]&&t[0].errors[0].message||P.I18n.t("ra_Cannot upload"))}},({getRootProps:e,getInputProps:t})=>x.createElement("div",{style:{...re.uploadDiv,...this.state.uploadFile==="dragging"?re.uploadDivDragging:void 0,...re.dropZone,...this.state.icon?void 0:re.dropZoneEmpty},...e()},x.createElement("input",{...t()}),x.createElement("div",{style:re.uploadCenterDiv},x.createElement("div",{style:re.uploadCenterTextAndIcon},x.createElement(Vn,{style:re.uploadCenterIcon}),x.createElement("div",{style:re.uploadCenterText},this.state.uploadFile==="dragging"?P.I18n.t("ra_Drop file here"):P.I18n.t("ra_Place your files here or click here to open the browse dialog"))))))),x.createElement(Gt,null,x.createElement(me,{variant:"contained",onClick:()=>this.setState({showImportDialog:!1}),color:"primary",startIcon:x.createElement(ht,null)},P.I18n.t("Cancel")))):null}renderOneFilter(e){return x.createElement(Ee,{key:`${e.headCell.attr}_${e.index}`,style:e.style,align:"left",sortDirection:e.orderBy===e.headCell.attr?e.order:!1},x.createElement("div",{style:{...re.flex,...e.schema.showFirstAddOnTop?{flexDirection:"column"}:void 0}},e.showAddButton?this.renderAddButton(e.doAnyFilterSet):null,e.headCell.sort&&x.createElement(ac,{active:!0,style:e.orderBy!==e.headCell.attr?re.silver:void 0,direction:e.orderBy===e.headCell.attr?e.order:"asc",onClick:()=>this.handleRequestSort(e.headCell.attr)}),e.headCell.filter&&this.state.filterOn.includes(e.headCell.attr)?x.createElement(pe,{variant:"standard",ref:this.filterRefs[e.headCell.attr],onChange:()=>this.applyFilter(),title:P.I18n.t("ra_You can filter entries by entering here some text"),slotProps:{input:{endAdornment:Qe.getFilterValue(this.filterRefs[e.headCell.attr])&&x.createElement(vn,{position:"end"},x.createElement(se,{size:"small",tabIndex:-1,onClick:()=>{Qe.setFilterValue(this.filterRefs[e.headCell.attr],""),this.applyFilter()}},x.createElement(ht,null)))}},fullWidth:!0,placeholder:this.getText(e.headCell.title)}):x.createElement("span",{style:re.headerText},this.getText(e.headCell.title)),this.renderShowHideFilter(e.headCell)))}enhancedFilterCard(){var s;const{schema:e}=this.props,{order:t,orderBy:n}=this.state;let u;this.props.schema.compact&&(u={paddingTop:1,paddingBottom:1});const i=!e.noDelete&&e.import||e.export;return i||e.items.find(d=>d.sort||d.filter)?x.createElement(He,{size:{xs:e.xs||12,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0}},x.createElement(as,null,x.createElement(In,{style:re.paper},x.createElement(Ws,{style:re.paper},x.createElement(js,{expandIcon:x.createElement(Mi,null)},x.createElement(yt,null,P.I18n.t("ra_Filter and Data Actions"))),x.createElement(zs,null,x.createElement(On,null,x.createElement(Fn,null,((s=e.items)==null?void 0:s.find(d=>d.sort||d.filter))&&e.items.map((d,o)=>x.createElement(ct,{key:`${d.attr}_${o}`},this.renderOneFilter({schema:e,style:u,showAddButton:!1,headCell:d,order:t,orderBy:n,index:o,doAnyFilterSet:!1}))),i?x.createElement(ct,null,x.createElement(Ee,{align:"left",style:u},x.createElement("span",{style:re.headerText},P.I18n.t("ra_Actions"))),x.createElement(Ee,{style:u},this.renderImportExportButtons(e))):null))))))):null}enhancedBottomCard(){const{schema:e}=this.props;let t;this.props.schema.compact&&(t={paddingTop:1,paddingBottom:1});const n=this.isAnyFilterSet();return x.createElement(He,{size:{xs:e.xs||12,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0}},x.createElement(as,null,x.createElement(In,{style:re.paper},x.createElement(On,null,x.createElement(Fn,null,x.createElement(ct,null,x.createElement(Ee,{colSpan:e.items.length+1,style:t},this.renderAddButton(n))))))))}renderCards(){const{schema:e}=this.props;let{visibleValue:t}=this.state,n;this.props.schema.compact&&(n={paddingTop:1,paddingBottom:1});const u={padding:0,borderBottom:"none"};t||=this.state.value.map((s,d)=>d);const i=this.isAnyFilterSet();return x.createElement(He,{container:!0},this.showImportDialog(),this.showTypeOfImportDialog(),this.enhancedFilterCard(),t.map((s,d)=>{var o,l,r;return x.createElement(He,{key:`${s}_${d}`,size:{xs:e.xs||12,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0}},x.createElement(as,{sx:this.state.tableErrors[s]?{outline:"1px solid red"}:void 0},x.createElement(In,{style:re.paper},this.props.schema.titleAttribute?x.createElement(Ie,{sx:re.cardHeader},x.createElement("div",null,this.state.value[s][this.props.schema.titleAttribute]),x.createElement("div",null,!i&&!this.state.orderBy?x.createElement(ge,{title:P.I18n.t("ra_Move up"),slotProps:{popper:{sx:re.tooltip}}},x.createElement("span",null,x.createElement(se,{size:"small",onClick:()=>this.onMoveUp(s),disabled:d===0},x.createElement(Ei,null)))):null,!i&&!this.state.orderBy?x.createElement(ge,{title:P.I18n.t("ra_Move down"),slotProps:{popper:{sx:re.tooltip}}},x.createElement("span",null,x.createElement(se,{size:"small",onClick:()=>this.onMoveDown(s),disabled:d===t.length-1},x.createElement(Ai,null)))):null,x.createElement(ge,{title:P.I18n.t("ra_Delete current row"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:this.onDelete(s)},x.createElement(_t,null))),this.props.schema.clone?x.createElement(ge,{title:P.I18n.t("ra_Clone current row"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:this.onClone(s)},x.createElement(fn,null))):null,x.createElement(ge,{title:P.I18n.t("ra_Expand/Collapse card"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:()=>{const a=[...this.state.collapsed],c=a.indexOf(s);c===-1?a.push(s):a.splice(c,1),window.localStorage.setItem(`table.collapsed.${this.props.oContext.instance}.${this.props.attr}`,JSON.stringify(a)),this.setState({collapsed:a})}},x.createElement(Mi,{style:{rotate:(o=this.state.collapsed)!=null&&o.includes(s)?"0deg":"180deg",transition:"0.3s",transitionProperty:"rotate"}}))))):null,x.createElement(lc,{in:!((l=this.state.collapsed)!=null&&l.includes(s)),timeout:"auto",unmountOnExit:!0},x.createElement(On,null,x.createElement(Fn,null,(r=e.items)==null?void 0:r.map(a=>{var p,h;const c=(h=(p=this.listOfHiddenElements)==null?void 0:p[s])==null?void 0:h.includes(a.attr);return x.createElement(ct,{key:`${a.attr}_${s}`},x.createElement(Ee,{align:"left",style:c?u:n},c?null:x.createElement("span",{style:re.headerText},this.getText(a.title))),x.createElement(Ee,{align:"left",style:c?u:n},this.itemTable(a.attr,this.state.value[s],s,!0)))}),!this.props.schema.titleAttribute&&!e.noDelete&&x.createElement(ct,null,x.createElement(Ee,{align:"left",style:n},x.createElement("span",{style:re.headerText},this.getText("Actions"))),x.createElement(Ee,{align:"left",style:n},!i&&!this.state.orderBy?x.createElement(ge,{title:P.I18n.t("ra_Move up"),slotProps:{popper:{sx:re.tooltip}}},x.createElement("span",null,x.createElement(se,{size:"small",onClick:()=>this.onMoveUp(s),disabled:d===0},x.createElement(Ei,null)))):null,!i&&!this.state.orderBy?x.createElement(ge,{title:P.I18n.t("ra_Move down"),slotProps:{popper:{sx:re.tooltip}}},x.createElement("span",null,x.createElement(se,{size:"small",onClick:()=>this.onMoveDown(s),disabled:d===t.length-1},x.createElement(Ai,null)))):null,x.createElement(ge,{title:P.I18n.t("ra_Delete current row"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:this.onDelete(s)},x.createElement(_t,null))),this.props.schema.clone?x.createElement(ge,{title:P.I18n.t("ra_Clone current row"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:this.onClone(s)},x.createElement(fn,null))):null))))))))}),this.enhancedBottomCard())}renderTable(){const{schema:e}=this.props;let{visibleValue:t}=this.state;t=t||this.state.value.map((i,s)=>s);const n=this.isAnyFilterSet();let u;return this.props.schema.compact&&(u={paddingTop:1,paddingBottom:1}),x.createElement(In,{style:re.paper},this.showImportDialog(),this.showTypeOfImportDialog(),e.label?x.createElement("div",{style:re.label},x.createElement(Pn,{variant:"dense",style:re.rootTool},x.createElement(yt,{style:re.title,variant:"h6",id:"tableTitle",component:"div"},this.getText(e.label)))):null,x.createElement(Do,null,x.createElement(On,{style:re.table,size:"small"},this.enhancedTableHead(!n&&!this.state.orderBy?120:64,n),x.createElement(Fn,null,t.map((i,s)=>{var d;return x.createElement(ct,{hover:!0,key:`${i}_${s}`,sx:this.state.tableErrors[i]?{outline:"1px solid red"}:void 0},(d=e.items)==null?void 0:d.map(o=>x.createElement(Ee,{key:`${o.attr}_${i}`,align:"left",style:u},this.itemTable(o.attr,this.state.value[i],i,!1))),!e.noDelete&&x.createElement(Ee,{align:"left",style:{...u,...re.buttonCell}},!n&&!this.state.orderBy?s?x.createElement(ge,{title:P.I18n.t("ra_Move up"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:()=>this.onMoveUp(i)},x.createElement(Ei,null))):x.createElement("div",{style:re.buttonEmpty}):null,!n&&!this.state.orderBy?sthis.onMoveDown(i)},x.createElement(Ai,null))):x.createElement("div",{style:re.buttonEmpty}):null,x.createElement(ge,{title:P.I18n.t("ra_Delete current row"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:this.onDelete(i)},x.createElement(_t,null))),this.props.schema.clone?x.createElement(ge,{title:P.I18n.t("ra_Clone current row"),slotProps:{popper:{sx:re.tooltip}}},x.createElement(se,{size:"small",onClick:this.onClone(i)},x.createElement(fn,null))):null))}),!e.noDelete&&t.length>=(e.showSecondAddAt||5)?x.createElement(ct,null,x.createElement(Ee,{colSpan:e.items.length+1,style:{...u}},this.renderAddButton(n))):null)),!t.length&&this.state.value.length?x.createElement("div",{style:re.filteredOut},x.createElement(yt,{style:re.title,variant:"h6",id:"tableTitle",component:"div"},P.I18n.t("ra_All items are filtered out"),x.createElement(se,{size:"small",onClick:()=>this.applyFilter(!0)},x.createElement(ht,null)))):null),e.help?x.createElement(ve,{style:{paddingLeft:16}},this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null,this.state.errorMessage?x.createElement("div",{style:{display:"flex",padding:"5px"}},x.createElement(Hn,{color:"error"}),x.createElement("span",{style:{color:"red",alignSelf:"center"}},this.state.errorMessage)):null)}componentDidUpdate(){var e;(e=this.refDiv.current)!=null&&e.clientWidth&&this.refDiv.current.clientWidth!==this.state.width&&(this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{var t;this.resizeTimeout=null,this.setState({width:(t=this.refDiv.current)==null?void 0:t.clientWidth})},50))}getCurrentBreakpoint(){return this.state.width?this.state.width<600?"xs":this.state.width<900?"sm":this.state.width<1200?"md":this.state.width<1536?"lg":"xl":"md"}renderItem(){const{schema:e}=this.props;if(!this.state.value||!Array.isArray(this.state.value))return null;const t=this.getCurrentBreakpoint();let n;return t&&(e.useCardFor||["xs"]).includes(t)?n=this.renderCards():n=this.renderTable(),x.createElement("div",{ref:this.refDiv,style:{width:"100%"}},n)}}const mi={indeterminate:{opacity:.5},label:{width:"100%",fontSize:14,marginBottom:2},helper:{width:"100%",fontSize:12},error:{width:"100%",fontSize:12,color:"#FF0000"}};class id extends V{updateTimeout=null;async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr);if(Array.isArray(e)&&this.props.oContext.multiEdit){e=V.DIFFERENT_VALUE,this.setState({value:e,oldValue:e,jsonError:!1});return}this.setState({value:e,oldValue:e,jsonError:this.validateJson(e)})}validateJson(e){let t=!1;if(this.props.schema.validateJson&&(e||!this.props.schema.allowEmpty))try{JSON.parse(e)}catch(n){console.log("Error in JSON",n),t=!0}return t}static getDerivedStateFromProps(e,t){if(e.oContext.multiEdit&&t.value===V.DIFFERENT_VALUE)return{value:V.DIFFERENT_VALUE};let n=V.getValue(e.data,e.attr);return n!=null&&(n=n.toString()),n==null||n!==t.value&&n!==t.oldValue?{value:n}:null}renderItem(e,t){const n=Array.isArray(this.state.value)||this.state.value===V.DIFFERENT_VALUE;if(this.props.schema.time){let s="";return typeof this.state.value=="number"?this.state.value&&this.state.value<9466596e5?s=new Date(this.state.value*1e3).toLocaleString():s=new Date(this.state.value).toLocaleString():typeof this.state.value=="string"&&(s=new Date(this.state.value).toLocaleString()),x.createElement(pe,{variant:"standard",fullWidth:!0,value:s,error:!!e||!!this.state.jsonError,disabled:!!t,slotProps:{htmlInput:{readOnly:!0}},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}if(this.state.oldValue!==null&&this.state.oldValue!==void 0?(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null,this.setState({oldValue:null})},30)):this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null),n){const s=V.getValue(this.props.data,this.props.attr),d=(s==null?void 0:s.filter(o=>o||o===0).map(o=>({label:o.toString()||"",value:o})))||[];return d.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),x.createElement(Pi,{style:mi.indeterminate,fullWidth:!0,value:d[0],onChange:(o,l)=>{const r=l?l.value:"",a=this.onChange(this.props.attr,r,()=>{this.setState({value:r,oldValue:r,jsonError:this.validateJson(l)})});a instanceof Promise&&a.catch(c=>console.error(`Cannot set value: ${c}`))},options:d,getOptionLabel:o=>o.label,renderInput:o=>x.createElement(pe,{variant:"standard",...o,error:!!e,placeholder:this.getText(this.props.schema.placeholder),slotProps:{htmlInput:{...o.inputProps,maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:this.props.schema.readOnly||!1}},label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),disabled:!!t})})}let u,i;if((this.props.schema.readOnly||t)&&this.props.schema.copyToClipboard?(this.props.schema.minRows>1&&(i={position:"absolute",right:3,top:20,zIndex:1e3}),u=x.createElement(se,{tabIndex:-1,style:i,size:"small",onClick:()=>{P.Utils.copyToClipboard(this.state.value),window.alert(P.I18n.t("ra_Copied"))}},x.createElement(P.IconCopy,null))):!this.props.schema.readOnly&&!t&&this.state.value&&!this.props.schema.noClearButton&&(this.props.schema.minRows>1&&(i={position:"absolute",right:3,top:20,zIndex:1e3}),u=x.createElement(se,{style:i,size:"small",tabIndex:-1,onClick:()=>this.setState({value:"",oldValue:this.state.value},()=>this.onChange(this.props.attr,""))},x.createElement(ht,null)),this.props.schema.minRows<=1&&(u=x.createElement(vn,{position:"end"},u))),this.props.schema.minRows>1){const s=this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation);return x.createElement("div",{style:{width:"100%",position:"relative"}},this.props.schema.label?x.createElement("div",{style:mi.label},this.getText(this.props.schema.label)):null,x.createElement(cc,{style:{width:"100%",resize:"vertical",backgroundColor:this.props.oContext.themeType==="dark"?"#363636":"#cccccc",color:this.props.oContext.themeType==="dark"?"#fff":"#111"},minRows:this.props.schema.minRows,maxRows:this.props.schema.maxRows,value:this.state.value??"",disabled:!!t,readOnly:this.props.schema.readOnly||!1,onChange:d=>{const o=d.target.value;this.setState({value:o,oldValue:this.state.value,jsonError:this.validateJson(o)},()=>this.onChange(this.props.attr,o||""))},placeholder:this.getText(this.props.schema.placeholder)}),s||e||this.state.jsonError?x.createElement("div",{style:e?mi.error:mi.helper},e||(this.state.jsonError?P.I18n.t("ra_Invalid JSON"):s)):null)}return x.createElement(pe,{variant:"standard",fullWidth:!0,value:this.state.value??"",error:!!e||!!this.state.jsonError,disabled:!!t,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:this.props.schema.readOnly||!1},input:{endAdornment:u}},onChange:s=>{const d=s.target.value;this.setState({value:d,oldValue:this.state.value,jsonError:this.validateJson(d)},()=>this.onChange(this.props.attr,d))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.state.jsonError?P.I18n.t("ra_Invalid JSON"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}const sd={fullWidth:{width:"100%"}};class rd extends V{initialized=!1;localContext;async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${n}`)}}e??=null;const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e).then(n=>{if(typeof n=="object"){const u=n;this.setState({text:u.text||"",style:u.style,icon:u.icon,iconStyle:u.iconStyle})}else typeof n=="string"&&this.setState({text:n||""})}).catch(n=>console.error(`Cannot send command: ${n}`))}}getLocalContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(){if(this.props.alive){const t=this.getLocalContext();(t!==this.localContext||!this.initialized)&&(this.localContext=t,setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}if(this.state.text===void 0)return null;let e=null;return this.state.icon&&(e=Dt(this.state.icon,{marginRight:this.state.text?8:void 0,...this.state.iconStyle||void 0}),e||(e=x.createElement(P.Icon,{src:this.state.icon,style:{marginRight:this.state.text?8:void 0,...this.state.iconStyle||void 0}}))),this.props.schema.container==="text"?x.createElement(pe,{variant:"standard",fullWidth:!0,slotProps:{input:{endAdornment:this.props.schema.copyToClipboard?x.createElement(se,{tabIndex:-1,size:"small",onClick:()=>{P.Utils.copyToClipboard(this.state.text),window.alert(P.I18n.t("ra_Copied"))}},x.createElement(P.IconCopy,null)):void 0}},value:this.state.text,label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}):x.createElement("div",{style:{...sd.fullWidth,...this.state.style||void 0}},e,this.props.schema.container==="html"?x.createElement("span",{dangerouslySetInnerHTML:{__html:this.state.text||""}}):this.state.text)}}class od extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e})}renderItem(e,t){const n=this.props.schema.returnFormat!=="HH:mm:ss",u=new Date(Date.parse(`Thu, 01 Jan 1970 ${this.state.value||"00:00:00"}`));return x.createElement(Xc,{sx:i=>({width:"100%",borderBottom:`1px solid ${i.palette.text.primary}`,"& fieldset":{display:"none"},"& input":{padding:`${i.spacing(1.5)} 0 4px 0`},"& .MuiInputAdornment-root":{marginLeft:0,marginTop:1},"& label":{transform:"translate(0px, -9px) scale(0.75)"}}),ampm:this.props.oContext.systemConfig.dateFormat.includes("/"),timeSteps:this.props.schema.timeSteps||this.props.schema.timesteps||{hours:1,minutes:5,seconds:5},format:this.props.schema.format||"HH:mm:ss",disabled:!!t,value:u,onChange:i=>{let s;s=i instanceof Date?i.toTimeString().split(" ")[0]:i.toTimeString(),n&&(s=s.split(":").slice(0,2).join(":")),this.setState({value:s},()=>this.onChange(this.props.attr,this.state.value))},views:this.props.schema.views||["hours","minutes","seconds"],label:this.getText(this.props.schema.label)})}}function ad(m,e){let t;return e&&m.substring(0,e.length)===e?t=m.substring(e.length+1):t=m,t=t.replace(/\./g,"/").replace(/_/g," "),t}class ld extends V{async componentDidMount(){var t;await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);if(!e&&((t=this.props.customObj)!=null&&t._id)){const n=ad(this.props.customObj._id,`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);this.setState({value:n})}else this.setState({value:e||""})}renderItem(e,t){return x.createElement(pe,{variant:"standard",fullWidth:!0,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0}},value:this.state.value,error:!!e,disabled:t,placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),onChange:n=>{const u=n.target.value;this.setState({value:u},()=>this.onChange(this.props.attr,u))}})}}class cd extends V{async componentDidMount(){var t;await super.componentDidMount();const e=await this.getCachedObject("system.meta.uuid");this.setState({uuid:((t=e==null?void 0:e.native)==null?void 0:t.uuid)||"unknown"})}renderItem(e,t){return x.createElement(pe,{variant:"standard",fullWidth:!0,error:!!e,disabled:!!t,slotProps:{htmlInput:{readOnly:!0},input:{endAdornment:x.createElement(se,{tabIndex:-1,onClick:()=>{P.Utils.copyToClipboard(this.state.uuid),window.alert(P.I18n.t("ra_Copied %s",this.state.uuid))}},x.createElement(fn,null))}},value:this.state.uuid||"",label:this.getText(this.props.schema.label)||P.I18n.t("ra_Serial number (UUID)"),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}const ho={icon:{width:16,height:16,marginRight:8}};class hd extends V{async componentDidMount(){await super.componentDidMount(),this.props.oContext.socket.getUsers().then(e=>{const t={},n=P.I18n.getLanguage();this.props.schema.short?e.forEach(u=>{var i,s;return t[u._id]={color:(i=u.common)==null?void 0:i.color,icon:(s=u.common)==null?void 0:s.icon,name:P.Utils.getObjectNameFromObj(u,n)}}):e.forEach(u=>{var i,s;return t[u._id.replace(/^system\.user\./,"")]={color:(i=u.common)==null?void 0:i.color,icon:(s=u.common)==null?void 0:s.icon,name:P.Utils.getObjectNameFromObj(u,n)}}),this.setState({users:t})}).catch(e=>console.error(`Cannot get users: ${e}`))}renderItem(e,t){var u,i;const n=V.getValue(this.props.data,this.props.attr);return x.createElement(fe,{variant:"standard",fullWidth:!0},this.state.users&&this.props.schema.label?x.createElement(Te,null,this.getText(this.props.schema.label)):null,this.state.users?x.createElement(Be,{variant:"standard",error:!!e,disabled:!!t,value:n,renderValue:s=>{var d,o,l;return x.createElement("span",null,this.state.users&&((d=this.state.users[s])!=null&&d.icon)?x.createElement(P.Icon,{src:this.state.users&&((o=this.state.users[s])==null?void 0:o.icon),style:ho.icon}):null,this.state.users&&((l=this.state.users[s])==null?void 0:l.name)||s||"")},style:{color:this.state.users&&((u=this.state.users[n])==null?void 0:u.color)||void 0,backgroundColor:P.Utils.getInvertedColor(this.state.users&&((i=this.state.users[n])==null?void 0:i.color),this.props.oContext.themeType)},onChange:s=>this.onChange(this.props.attr,s.target.value)},this.state.users&&Object.keys(this.state.users).map(s=>x.createElement(xe,{style:{color:this.state.users[s].color||void 0,backgroundColor:P.Utils.getInvertedColor(this.state.users[s].color,this.props.oContext.themeType)},key:s,value:s},this.state.users[s].icon?x.createElement(P.Icon,{src:this.state.users[s].icon,style:ho.icon}):null,this.state.users[s].name))):x.createElement(pe,{variant:"standard",error:!!e,disabled:!!t,value:n,onChange:s=>this.onChange(this.props.attr,s.target.value),label:this.getText(this.props.schema.label)}),this.props.schema.help?x.createElement(ve,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const ir=Symbol.for("yaml.alias"),Is=Symbol.for("yaml.document"),kt=Symbol.for("yaml.map"),ia=Symbol.for("yaml.pair"),ut=Symbol.for("yaml.scalar"),En=Symbol.for("yaml.seq"),qe=Symbol.for("yaml.node.type"),en=m=>!!m&&typeof m=="object"&&m[qe]===ir,Vi=m=>!!m&&typeof m=="object"&&m[qe]===Is,Zn=m=>!!m&&typeof m=="object"&&m[qe]===kt,Me=m=>!!m&&typeof m=="object"&&m[qe]===ia,ye=m=>!!m&&typeof m=="object"&&m[qe]===ut,qn=m=>!!m&&typeof m=="object"&&m[qe]===En;function ke(m){if(m&&typeof m=="object")switch(m[qe]){case kt:case En:return!0}return!1}function Le(m){if(m&&typeof m=="object")switch(m[qe]){case ir:case kt:case ut:case En:return!0}return!1}const sa=m=>(ye(m)||ke(m))&&!!m.anchor,Ht=Symbol("break visit"),ud=Symbol("skip children"),jn=Symbol("remove node");function An(m,e){const t=pd(e);Vi(m)?un(null,m.contents,t,Object.freeze([m]))===jn&&(m.contents=null):un(null,m,t,Object.freeze([]))}An.BREAK=Ht;An.SKIP=ud;An.REMOVE=jn;function un(m,e,t,n){const u=dd(m,e,t,n);if(Le(u)||Me(u))return fd(m,n,u),un(m,u,t,n);if(typeof u!="symbol"){if(ke(e)){n=Object.freeze(n.concat(e));for(let i=0;im.replace(/[!,[\]{}]/g,e=>gd[e]);class We{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},We.defaultYaml,e),this.tags=Object.assign({},We.defaultTags,t)}clone(){const e=new We(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){const e=new We(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:We.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},We.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:We.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},We.defaultTags),this.atNextDocument=!1);const n=e.trim().split(/[ \t]+/),u=n.shift();switch(u){case"%TAG":{if(n.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),n.length<2))return!1;const[i,s]=n;return this.tags[i]=s,!0}case"%YAML":{if(this.yaml.explicit=!0,n.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;const[i]=n;if(i==="1.1"||i==="1.2")return this.yaml.version=i,!0;{const s=/^\d+\.\d+$/.test(i);return t(6,`Unsupported YAML version ${i}`,s),!1}}default:return t(0,`Unknown directive ${u}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){const s=e.slice(2,-1);return s==="!"||s==="!!"?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),s)}const[,n,u]=e.match(/^(.*!)([^!]*)$/s);u||t(`The ${e} tag has no suffix`);const i=this.tags[n];if(i)try{return i+decodeURIComponent(u)}catch(s){return t(String(s)),null}return n==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(const[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+md(e.substring(n.length));return e[0]==="!"?e:`!<${e}>`}toString(e){const t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],n=Object.entries(this.tags);let u;if(e&&n.length>0&&Le(e.contents)){const i={};An(e.contents,(s,d)=>{Le(d)&&d.tag&&(i[d.tag]=!0)}),u=Object.keys(i)}else u=[];for(const[i,s]of n)i==="!!"&&s==="tag:yaml.org,2002:"||(!e||u.some(d=>d.startsWith(s)))&&t.push(`%TAG ${i} ${s}`);return t.join(` -`)}}We.defaultYaml={explicit:!1,version:"1.2"};We.defaultTags={"!!":"tag:yaml.org,2002:"};function ra(m){if(/[\x00-\x19\s,[\]{}]/.test(m)){const t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(m)}`;throw new Error(t)}return!0}function oa(m){const e=new Set;return An(m,{Value(t,n){n.anchor&&e.add(n.anchor)}}),e}function aa(m,e){for(let t=1;;++t){const n=`${m}${t}`;if(!e.has(n))return n}}function vd(m,e){const t=[],n=new Map;let u=null;return{onAnchor:i=>{t.push(i),u??(u=oa(m));const s=aa(e,u);return u.add(s),s},setAnchors:()=>{for(const i of t){const s=n.get(i);if(typeof s=="object"&&s.anchor&&(ye(s.node)||ke(s.node)))s.node.anchor=s.anchor;else{const d=new Error("Failed to resolve repeated object (this should not happen)");throw d.source=i,d}}},sourceObjects:n}}function pn(m,e,t,n){if(n&&typeof n=="object")if(Array.isArray(n))for(let u=0,i=n.length;uZe(n,String(u),t));if(m&&typeof m.toJSON=="function"){if(!t||!sa(m))return m.toJSON(e,t);const n={aliasCount:0,count:1,res:void 0};t.anchors.set(m,n),t.onCreate=i=>{n.res=i,delete t.onCreate};const u=m.toJSON(e,t);return t.onCreate&&t.onCreate(u),u}return typeof m=="bigint"&&!(t!=null&&t.keep)?Number(m):m}class sr{constructor(e){Object.defineProperty(this,qe,{value:e})}clone(){const e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:u,reviver:i}={}){if(!Vi(e))throw new TypeError("A document argument is required");const s={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100},d=Ze(this,"",s);if(typeof u=="function")for(const{count:o,res:l}of s.anchors.values())u(l,o);return typeof i=="function"?pn(i,{"":d},"",d):d}}class rr extends sr{constructor(e){super(ir),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,t){let n;t!=null&&t.aliasResolveCache?n=t.aliasResolveCache:(n=[],An(e,{Node:(i,s)=>{(en(s)||sa(s))&&n.push(s)}}),t&&(t.aliasResolveCache=n));let u;for(const i of n){if(i===this)break;i.anchor===this.source&&(u=i)}return u}toJSON(e,t){if(!t)return{source:this.source};const{anchors:n,doc:u,maxAliasCount:i}=t,s=this.resolve(u,t);if(!s){const o=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(o)}let d=n.get(s);if(d||(Ze(s,null,t),d=n.get(s)),(d==null?void 0:d.res)===void 0){const o="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(o)}if(i>=0&&(d.count+=1,d.aliasCount===0&&(d.aliasCount=$i(u,s,n)),d.count*d.aliasCount>i)){const o="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(o)}return d.res}toString(e,t,n){const u=`*${this.source}`;if(e){if(ra(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){const i=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(i)}if(e.implicitKey)return`${u} `}return u}}function $i(m,e,t){if(en(e)){const n=e.resolve(m),u=t&&n&&t.get(n);return u?u.count*u.aliasCount:0}else if(ke(e)){let n=0;for(const u of e.items){const i=$i(m,u,t);i>n&&(n=i)}return n}else if(Me(e)){const n=$i(m,e.key,t),u=$i(m,e.value,t);return Math.max(n,u)}return 1}const la=m=>!m||typeof m!="function"&&typeof m!="object";class ae extends sr{constructor(e){super(ut),this.value=e}toJSON(e,t){return t!=null&&t.keep?this.value:Ze(this.value,e,t)}toString(){return String(this.value)}}ae.BLOCK_FOLDED="BLOCK_FOLDED";ae.BLOCK_LITERAL="BLOCK_LITERAL";ae.PLAIN="PLAIN";ae.QUOTE_DOUBLE="QUOTE_DOUBLE";ae.QUOTE_SINGLE="QUOTE_SINGLE";const yd="tag:yaml.org,2002:";function bd(m,e,t){if(e){const n=t.filter(i=>i.tag===e),u=n.find(i=>!i.format)??n[0];if(!u)throw new Error(`Tag ${e} not found`);return u}return t.find(n=>{var u;return((u=n.identify)==null?void 0:u.call(n,m))&&!n.format})}function Yn(m,e,t){var a,c,p;if(Vi(m)&&(m=m.contents),Le(m))return m;if(Me(m)){const h=(c=(a=t.schema[kt]).createNode)==null?void 0:c.call(a,t.schema,null,t);return h.items.push(m),h}(m instanceof String||m instanceof Number||m instanceof Boolean||typeof BigInt<"u"&&m instanceof BigInt)&&(m=m.valueOf());const{aliasDuplicateObjects:n,onAnchor:u,onTagObj:i,schema:s,sourceObjects:d}=t;let o;if(n&&m&&typeof m=="object"){if(o=d.get(m),o)return o.anchor??(o.anchor=u(m)),new rr(o.anchor);o={anchor:null,node:null},d.set(m,o)}e!=null&&e.startsWith("!!")&&(e=yd+e.slice(2));let l=bd(m,e,s.tags);if(!l){if(m&&typeof m.toJSON=="function"&&(m=m.toJSON()),!m||typeof m!="object"){const h=new ae(m);return o&&(o.node=h),h}l=m instanceof Map?s[kt]:Symbol.iterator in Object(m)?s[En]:s[kt]}i&&(i(l),delete t.onTagObj);const r=l!=null&&l.createNode?l.createNode(t.schema,m,t):typeof((p=l==null?void 0:l.nodeClass)==null?void 0:p.from)=="function"?l.nodeClass.from(t.schema,m,t):new ae(m);return e?r.tag=e:l.default||(r.tag=l.tag),o&&(o.node=r),r}function Ni(m,e,t){let n=t;for(let u=e.length-1;u>=0;--u){const i=e[u];if(typeof i=="number"&&Number.isInteger(i)&&i>=0){const s=[];s[i]=n,n=s}else n=new Map([[i,n]])}return Yn(n,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:m,sourceObjects:new Map})}const Nn=m=>m==null||typeof m=="object"&&!!m[Symbol.iterator]().next().done;class ca extends sr{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){const t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(n=>Le(n)||Me(n)?n.clone(e):n),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Nn(e))this.add(t);else{const[n,...u]=e,i=this.get(n,!0);if(ke(i))i.addIn(u,t);else if(i===void 0&&this.schema)this.set(n,Ni(this.schema,u,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${u}`)}}deleteIn(e){const[t,...n]=e;if(n.length===0)return this.delete(t);const u=this.get(t,!0);if(ke(u))return u.deleteIn(n);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){const[n,...u]=e,i=this.get(n,!0);return u.length===0?!t&&ye(i)?i.value:i:ke(i)?i.getIn(u,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!Me(t))return!1;const n=t.value;return n==null||e&&ye(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){const[t,...n]=e;if(n.length===0)return this.has(t);const u=this.get(t,!0);return ke(u)?u.hasIn(n):!1}setIn(e,t){const[n,...u]=e;if(u.length===0)this.set(n,t);else{const i=this.get(n,!0);if(ke(i))i.setIn(u,t);else if(i===void 0&&this.schema)this.set(n,Ni(this.schema,u,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${u}`)}}}const wd=m=>m.replace(/^(?!$)(?: $)?/gm,"#");function vt(m,e){return/^\n+$/.test(m)?m.substring(1):e?m.replace(/^(?! *$)/gm,e):m}const Vt=(m,e,t)=>m.endsWith(` +`).map(d=>d.replace("\r","").trim()),{schema:n}=this.props,h=t.shift().split(";").filter(d=>d&&n.items.find(o=>o.attr===d)),i=[];t.forEach(d=>{const o=d.split(";"),l={};for(let r=0;ru.attr===h[r]);p&&p.type==="number"?c=parseFloat(a):c=a}else c=a;l[h[r]]=c}i.push(l)}),i.length?(s=this.state.value)!=null&&s.length?this.setState({showTypeOfImportDialog:i,showImportDialog:!1}):this.setState({value:i,showImportDialog:!1}):window.alert("ra_No data found in file")}onClone=e=>()=>{const t=JSON.parse(JSON.stringify(this.state.value)),n=JSON.parse(JSON.stringify(t[e]));if(typeof this.props.schema.clone=="string"&&typeof n[this.props.schema.clone]=="string"){let h=1,i=n[this.props.schema.clone];const s=i.match(/(\d+)$/);for(s?(i=i.replace(s[0],""),h=parseInt(s[0],10)+1):i+="_";t.find(d=>d[this.props.schema.clone]===i+h.toString());)h++;n[this.props.schema.clone]=`${n[this.props.schema.clone]}_${h}`}t.splice(e,0,n),this.setState({value:t,iteration:this.state.iteration+1e4},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))};onChangeWrapper=(e,t)=>{this.typingTimer&&clearTimeout(this.typingTimer),this.typingTimer=setTimeout((n,h)=>{this.typingTimer=null;let i;if(this.props.schema.encryptedAttributes){const s=JSON.parse(JSON.stringify(n));if(s.forEach(d=>{this.props.schema.encryptedAttributes.forEach(o=>{d[o]&&(d[o]=sd(this.secret,d[o]))})}),this.props.schema.objKeyName){const d=po(s,this.props.schema.objKeyName,this.props.schema.objValueName);i=this.onChange(this.props.attr,d)}else i=this.onChange(this.props.attr,s)}else if(this.props.schema.objKeyName){const s=po(JSON.parse(JSON.stringify(n)),this.props.schema.objKeyName,this.props.schema.objValueName);i=this.onChange(this.props.attr,s)}else i=this.onChange(this.props.attr,n);i instanceof Promise&&i.catch(s=>console.error(`Cannot save: ${s}`)),h&&(this.applyFilter(!1,n),this.handleRequestSort(this.state.orderBy,!0))},300,e,t)};onAdd=async()=>{const{schema:e}=this.props,t=JSON.parse(JSON.stringify(this.state.value)),n={};if(e.items)for(const h of e.items){let i;h.defaultFunc?this.props.custom?i=h.defaultFunc?await this.executeCustom(h.defaultFunc,this.props.data,this.props.customObj,this.props.oContext.instanceObj,t.length,this.props.data):this.props.schema.default:i=h.defaultFunc?await this.execute(h.defaultFunc,this.props.schema.default,this.props.data,t.length,this.props.data):this.props.schema.default:i=h.default??null,n[h.attr]=i}t.push(n),this.setState({value:t},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))};isAnyFilterSet(){return!!Object.keys(this.filterRefs).find(e=>Qe.getFilterValue(this.filterRefs[e]))}applyFilter=(e,t,n)=>{t=t||this.state.value;let h=t.map((i,s)=>s);if(Object.keys(this.filterRefs).forEach(i=>{var d;let s=Qe.getFilterValue(this.filterRefs[i]);if(!e&&s){s=s.toLowerCase();const o=(d=this.state.filterLabelMap)==null?void 0:d[i];h=h.filter(l=>{if(!t[l]||t[l][i]==null)return!1;if(t[l][i].toString().toLowerCase().includes(s))return!0;if(o){const a=o[t[l][i]];if(a&&a.toLowerCase().includes(s))return!0}return!1})}else this.filterRefs[i].current&&Qe.setFilterValue(this.filterRefs[i],"")}),h.length===t.length&&(h=null),h===null&&this.state.visibleValue===null){n&&n();return}JSON.stringify(h)!==JSON.stringify(this.state.visibleValue)?this.setState({visibleValue:h},()=>n&&n()):n&&n()};onMoveUp(e){const t=JSON.parse(JSON.stringify(this.state.value)),n=t[e];t.splice(e,1),t.splice(e-1,0,n),this.setState({value:t,iteration:this.state.iteration+1e4},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))}onMoveDown(e){const t=JSON.parse(JSON.stringify(this.state.value)),n=t[e];t.splice(e,1),t.splice(e+1,0,n),this.setState({value:t,iteration:this.state.iteration+1e4},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(t)))}onDrop(e){const t=e[0],n=new FileReader;n.onabort=()=>console.log("file reading was aborted"),n.onerror=()=>console.log("file reading has failed"),n.onload=()=>{if(t.size>ws){window.alert(P.I18n.t("ra_File is too big. Max %sk allowed. Try use SVG.",Math.round(ws/1024)));return}const h=new Uint8Array(n.result).reduce((i,s)=>i+String.fromCharCode(s),"");this.onImport(h)},n.readAsArrayBuffer(t)}showTypeOfImportDialog(){return this.state.showTypeOfImportDialog?$.createElement(Lt,{open:!0,onClose:()=>this.setState({showTypeOfImportDialog:!1}),maxWidth:"md"},$.createElement(yn,null,P.I18n.t("ra_Append or replace?")),$.createElement(Kt,null,P.I18n.t("ra_Append %s entries or replace existing?",this.state.showTypeOfImportDialog.length)),$.createElement(Gt,null,$.createElement(ve,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.value));this.state.showTypeOfImportDialog.forEach(t=>e.push(t)),this.setState({value:e,iteration:this.state.iteration+1e4,showTypeOfImportDialog:!1},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(e)))}},P.I18n.t("ra_Append")),$.createElement(ve,{variant:"contained",color:"secondary",autoFocus:!0,onClick:()=>{const e=this.state.showTypeOfImportDialog;this.setState({value:e,iteration:this.state.iteration+1e4,showTypeOfImportDialog:!1},()=>this.applyFilter(!1,null,()=>this.onChangeWrapper(e)))}},P.I18n.t("ra_Replace")))):null}showImportDialog(){return this.state.showImportDialog?$.createElement(Lt,{open:!0,onClose:()=>this.setState({showImportDialog:!1}),sx:{"& .MuiDialog-paper":{minHeight:500}},maxWidth:"md",fullWidth:!0},$.createElement(yn,null,P.I18n.t("ra_Import from %s","CSV")),$.createElement(Kt,null,$.createElement(Vo,{multiple:!1,accept:{"text/csv":[".csv"]},maxSize:ws,onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:(e,t)=>{this.setState({uploadFile:!1}),e.length?this.onDrop(e):window.alert(t&&t[0]&&t[0].errors&&t[0].errors[0]&&t[0].errors[0].message||P.I18n.t("ra_Cannot upload"))}},({getRootProps:e,getInputProps:t})=>$.createElement("div",{style:{...re.uploadDiv,...this.state.uploadFile==="dragging"?re.uploadDivDragging:void 0,...re.dropZone,...this.state.icon?void 0:re.dropZoneEmpty},...e()},$.createElement("input",{...t()}),$.createElement("div",{style:re.uploadCenterDiv},$.createElement("div",{style:re.uploadCenterTextAndIcon},$.createElement(Vn,{style:re.uploadCenterIcon}),$.createElement("div",{style:re.uploadCenterText},this.state.uploadFile==="dragging"?P.I18n.t("ra_Drop file here"):P.I18n.t("ra_Place your files here or click here to open the browse dialog"))))))),$.createElement(Gt,null,$.createElement(ve,{variant:"contained",onClick:()=>this.setState({showImportDialog:!1}),color:"primary",startIcon:$.createElement(ht,null)},P.I18n.t("Cancel")))):null}renderOneFilter(e){return $.createElement(Ee,{key:`${e.headCell.attr}_${e.index}`,style:e.style,align:"left",sortDirection:e.orderBy===e.headCell.attr?e.order:!1},$.createElement("div",{style:{...re.flex,...e.schema.showFirstAddOnTop?{flexDirection:"column"}:void 0}},e.showAddButton?this.renderAddButton(e.doAnyFilterSet):null,e.headCell.sort&&$.createElement(hc,{active:!0,style:e.orderBy!==e.headCell.attr?re.silver:void 0,direction:e.orderBy===e.headCell.attr?e.order:"asc",onClick:()=>this.handleRequestSort(e.headCell.attr)}),e.headCell.filter&&this.state.filterOn.includes(e.headCell.attr)?$.createElement(pe,{variant:"standard",ref:this.filterRefs[e.headCell.attr],onChange:()=>this.applyFilter(),title:P.I18n.t("ra_You can filter entries by entering here some text"),slotProps:{input:{endAdornment:Qe.getFilterValue(this.filterRefs[e.headCell.attr])&&$.createElement(vn,{position:"end"},$.createElement(se,{size:"small",tabIndex:-1,onClick:()=>{Qe.setFilterValue(this.filterRefs[e.headCell.attr],""),this.applyFilter()}},$.createElement(ht,null)))}},fullWidth:!0,placeholder:this.getText(e.headCell.title)}):$.createElement("span",{style:re.headerText},this.getText(e.headCell.title)),this.renderShowHideFilter(e.headCell)))}enhancedFilterCard(){var s;const{schema:e}=this.props,{order:t,orderBy:n}=this.state;let h;this.props.schema.compact&&(h={paddingTop:1,paddingBottom:1});const i=!e.noDelete&&e.import||e.export;return i||e.items.find(d=>d.sort||d.filter)?$.createElement(ze,{size:{xs:e.xs||12,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0}},$.createElement(ls,null,$.createElement(In,{style:re.paper},$.createElement(js,{style:re.paper},$.createElement(Hs,{expandIcon:$.createElement(Ii,null)},$.createElement(yt,null,P.I18n.t("ra_Filter and Data Actions"))),$.createElement(zs,null,$.createElement(On,null,$.createElement(Fn,null,((s=e.items)==null?void 0:s.find(d=>d.sort||d.filter))&&e.items.map((d,o)=>$.createElement(ct,{key:`${d.attr}_${o}`},this.renderOneFilter({schema:e,style:h,showAddButton:!1,headCell:d,order:t,orderBy:n,index:o,doAnyFilterSet:!1}))),i?$.createElement(ct,null,$.createElement(Ee,{align:"left",style:h},$.createElement("span",{style:re.headerText},P.I18n.t("ra_Actions"))),$.createElement(Ee,{style:h},this.renderImportExportButtons(e))):null))))))):null}enhancedBottomCard(){const{schema:e}=this.props;let t;this.props.schema.compact&&(t={paddingTop:1,paddingBottom:1});const n=this.isAnyFilterSet();return $.createElement(ze,{size:{xs:e.xs||12,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0}},$.createElement(ls,null,$.createElement(In,{style:re.paper},$.createElement(On,null,$.createElement(Fn,null,$.createElement(ct,null,$.createElement(Ee,{colSpan:e.items.length+1,style:t},this.renderAddButton(n))))))))}renderCards(){const{schema:e}=this.props;let{visibleValue:t}=this.state,n;this.props.schema.compact&&(n={paddingTop:1,paddingBottom:1});const h={padding:0,borderBottom:"none"};t||=this.state.value.map((s,d)=>d);const i=this.isAnyFilterSet();return $.createElement(ze,{container:!0},this.showImportDialog(),this.showTypeOfImportDialog(),this.enhancedFilterCard(),t.map((s,d)=>{var o,l,r;return $.createElement(ze,{key:`${s}_${d}`,size:{xs:e.xs||12,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0}},$.createElement(ls,{sx:this.state.tableErrors[s]?{outline:"1px solid red"}:void 0},$.createElement(In,{style:re.paper},this.props.schema.titleAttribute?$.createElement(Ie,{sx:re.cardHeader},$.createElement("div",null,this.state.value[s][this.props.schema.titleAttribute]),$.createElement("div",null,!i&&!this.state.orderBy?$.createElement(me,{title:P.I18n.t("ra_Move up"),slotProps:{popper:{sx:re.tooltip}}},$.createElement("span",null,$.createElement(se,{size:"small",onClick:()=>this.onMoveUp(s),disabled:d===0},$.createElement(Ai,null)))):null,!i&&!this.state.orderBy?$.createElement(me,{title:P.I18n.t("ra_Move down"),slotProps:{popper:{sx:re.tooltip}}},$.createElement("span",null,$.createElement(se,{size:"small",onClick:()=>this.onMoveDown(s),disabled:d===t.length-1},$.createElement(Di,null)))):null,$.createElement(me,{title:P.I18n.t("ra_Delete current row"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:this.onDelete(s)},$.createElement(_t,null))),this.props.schema.clone?$.createElement(me,{title:P.I18n.t("ra_Clone current row"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:this.onClone(s)},$.createElement(fn,null))):null,$.createElement(me,{title:P.I18n.t("ra_Expand/Collapse card"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:()=>{const a=[...this.state.collapsed],c=a.indexOf(s);c===-1?a.push(s):a.splice(c,1),window.localStorage.setItem(`table.collapsed.${this.props.oContext.instance}.${this.props.attr}`,JSON.stringify(a)),this.setState({collapsed:a})}},$.createElement(Ii,{style:{rotate:(o=this.state.collapsed)!=null&&o.includes(s)?"0deg":"180deg",transition:"0.3s",transitionProperty:"rotate"}}))))):null,$.createElement(uc,{in:!((l=this.state.collapsed)!=null&&l.includes(s)),timeout:"auto",unmountOnExit:!0},$.createElement(On,null,$.createElement(Fn,null,(r=e.items)==null?void 0:r.map(a=>{var p,u;const c=(u=(p=this.listOfHiddenElements)==null?void 0:p[s])==null?void 0:u.includes(a.attr);return $.createElement(ct,{key:`${a.attr}_${s}`},$.createElement(Ee,{align:"left",style:c?h:n},c?null:$.createElement("span",{style:re.headerText},this.getText(a.title))),$.createElement(Ee,{align:"left",style:c?h:n},this.itemTable(a.attr,this.state.value[s],s,!0)))}),!this.props.schema.titleAttribute&&!e.noDelete&&$.createElement(ct,null,$.createElement(Ee,{align:"left",style:n},$.createElement("span",{style:re.headerText},this.getText("Actions"))),$.createElement(Ee,{align:"left",style:n},!i&&!this.state.orderBy?$.createElement(me,{title:P.I18n.t("ra_Move up"),slotProps:{popper:{sx:re.tooltip}}},$.createElement("span",null,$.createElement(se,{size:"small",onClick:()=>this.onMoveUp(s),disabled:d===0},$.createElement(Ai,null)))):null,!i&&!this.state.orderBy?$.createElement(me,{title:P.I18n.t("ra_Move down"),slotProps:{popper:{sx:re.tooltip}}},$.createElement("span",null,$.createElement(se,{size:"small",onClick:()=>this.onMoveDown(s),disabled:d===t.length-1},$.createElement(Di,null)))):null,$.createElement(me,{title:P.I18n.t("ra_Delete current row"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:this.onDelete(s)},$.createElement(_t,null))),this.props.schema.clone?$.createElement(me,{title:P.I18n.t("ra_Clone current row"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:this.onClone(s)},$.createElement(fn,null))):null))))))))}),this.enhancedBottomCard())}renderTable(){const{schema:e}=this.props;let{visibleValue:t}=this.state;t=t||this.state.value.map((i,s)=>s);const n=this.isAnyFilterSet();let h;return this.props.schema.compact&&(h={paddingTop:1,paddingBottom:1}),$.createElement(In,{style:re.paper},this.showImportDialog(),this.showTypeOfImportDialog(),e.label?$.createElement("div",{style:re.label},$.createElement(Pn,{variant:"dense",style:re.rootTool},$.createElement(yt,{style:re.title,variant:"h6",id:"tableTitle",component:"div"},this.getText(e.label)))):null,$.createElement(_o,null,$.createElement(On,{style:re.table,size:"small"},this.enhancedTableHead(!n&&!this.state.orderBy?120:64,n),$.createElement(Fn,null,t.map((i,s)=>{var d;return $.createElement(ct,{hover:!0,key:`${i}_${s}`,sx:this.state.tableErrors[i]?{outline:"1px solid red"}:void 0},(d=e.items)==null?void 0:d.map(o=>$.createElement(Ee,{key:`${o.attr}_${i}`,align:"left",style:h},this.itemTable(o.attr,this.state.value[i],i,!1))),!e.noDelete&&$.createElement(Ee,{align:"left",style:{...h,...re.buttonCell}},!n&&!this.state.orderBy?s?$.createElement(me,{title:P.I18n.t("ra_Move up"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:()=>this.onMoveUp(i)},$.createElement(Ai,null))):$.createElement("div",{style:re.buttonEmpty}):null,!n&&!this.state.orderBy?sthis.onMoveDown(i)},$.createElement(Di,null))):$.createElement("div",{style:re.buttonEmpty}):null,$.createElement(me,{title:P.I18n.t("ra_Delete current row"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:this.onDelete(i)},$.createElement(_t,null))),this.props.schema.clone?$.createElement(me,{title:P.I18n.t("ra_Clone current row"),slotProps:{popper:{sx:re.tooltip}}},$.createElement(se,{size:"small",onClick:this.onClone(i)},$.createElement(fn,null))):null))}),!e.noDelete&&t.length>=(e.showSecondAddAt||5)?$.createElement(ct,null,$.createElement(Ee,{colSpan:e.items.length+1,style:{...h}},this.renderAddButton(n))):null)),!t.length&&this.state.value.length?$.createElement("div",{style:re.filteredOut},$.createElement(yt,{style:re.title,variant:"h6",id:"tableTitle",component:"div"},P.I18n.t("ra_All items are filtered out"),$.createElement(se,{size:"small",onClick:()=>this.applyFilter(!0)},$.createElement(ht,null)))):null),e.help?$.createElement(ge,{style:{paddingLeft:16}},this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null,this.state.errorMessage?$.createElement("div",{style:{display:"flex",padding:"5px"}},$.createElement(zn,{color:"error"}),$.createElement("span",{style:{color:"red",alignSelf:"center"}},this.state.errorMessage)):null)}componentDidUpdate(){var e;(e=this.refDiv.current)!=null&&e.clientWidth&&this.refDiv.current.clientWidth!==this.state.width&&(this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{var t;this.resizeTimeout=null,this.setState({width:(t=this.refDiv.current)==null?void 0:t.clientWidth})},50))}getCurrentBreakpoint(){return this.state.width?this.state.width<600?"xs":this.state.width<900?"sm":this.state.width<1200?"md":this.state.width<1536?"lg":"xl":"md"}renderItem(){const{schema:e}=this.props;if(!this.state.value||!Array.isArray(this.state.value))return null;const t=this.getCurrentBreakpoint();let n;return t&&(e.useCardFor||["xs"]).includes(t)?n=this.renderCards():n=this.renderTable(),$.createElement("div",{ref:this.refDiv,style:{width:"100%"}},n)}}const vi={indeterminate:{opacity:.5},label:{width:"100%",fontSize:14,marginBottom:2},helper:{width:"100%",fontSize:12},error:{width:"100%",fontSize:12,color:"#FF0000"}};class od extends V{updateTimeout=null;async componentDidMount(){await super.componentDidMount();let e=V.getValue(this.props.data,this.props.attr);if(Array.isArray(e)&&this.props.oContext.multiEdit){e=V.DIFFERENT_VALUE,this.setState({value:e,oldValue:e,jsonError:!1});return}this.setState({value:e,oldValue:e,jsonError:this.validateJson(e)})}validateJson(e){let t=!1;if(this.props.schema.validateJson&&(e||!this.props.schema.allowEmpty))try{JSON.parse(e)}catch(n){console.log("Error in JSON",n),t=!0}return t}static getDerivedStateFromProps(e,t){if(e.oContext.multiEdit&&t.value===V.DIFFERENT_VALUE)return{value:V.DIFFERENT_VALUE};let n=V.getValue(e.data,e.attr);return n!=null&&(n=n.toString()),n==null||n!==t.value&&n!==t.oldValue?{value:n}:null}renderItem(e,t){const n=Array.isArray(this.state.value)||this.state.value===V.DIFFERENT_VALUE;if(this.props.schema.time){let s="";return typeof this.state.value=="number"?this.state.value&&this.state.value<9466596e5?s=new Date(this.state.value*1e3).toLocaleString():s=new Date(this.state.value).toLocaleString():typeof this.state.value=="string"&&(s=new Date(this.state.value).toLocaleString()),$.createElement(pe,{variant:"standard",fullWidth:!0,value:s,error:!!e||!!this.state.jsonError,disabled:!!t,slotProps:{htmlInput:{readOnly:!0}},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}if(this.state.oldValue!==null&&this.state.oldValue!==void 0?(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null,this.setState({oldValue:null})},30)):this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null),n){const s=V.getValue(this.props.data,this.props.attr),d=(s==null?void 0:s.filter(o=>o||o===0).map(o=>({label:o.toString()||"",value:o})))||[];return d.unshift({label:P.I18n.t(V.DIFFERENT_LABEL),value:V.DIFFERENT_VALUE}),$.createElement(Wi,{style:vi.indeterminate,fullWidth:!0,value:d[0],onChange:(o,l)=>{const r=l?l.value:"",a=this.onChange(this.props.attr,r,()=>{this.setState({value:r,oldValue:r,jsonError:this.validateJson(l)})});a instanceof Promise&&a.catch(c=>console.error(`Cannot set value: ${c}`))},options:d,getOptionLabel:o=>o.label,renderInput:o=>$.createElement(pe,{variant:"standard",...o,error:!!e,placeholder:this.getText(this.props.schema.placeholder),slotProps:{htmlInput:{...o.inputProps,maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:this.props.schema.readOnly||!1}},label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),disabled:!!t})})}let h,i;if((this.props.schema.readOnly||t)&&this.props.schema.copyToClipboard?(this.props.schema.minRows>1&&(i={position:"absolute",right:3,top:20,zIndex:1e3}),h=$.createElement(se,{tabIndex:-1,style:i,size:"small",onClick:()=>{P.Utils.copyToClipboard(this.state.value),window.alert(P.I18n.t("ra_Copied"))}},$.createElement(P.IconCopy,null))):!this.props.schema.readOnly&&!t&&this.state.value&&!this.props.schema.noClearButton&&(this.props.schema.minRows>1&&(i={position:"absolute",right:3,top:20,zIndex:1e3}),h=$.createElement(se,{style:i,size:"small",tabIndex:-1,onClick:()=>this.setState({value:"",oldValue:this.state.value},()=>this.onChange(this.props.attr,""))},$.createElement(ht,null)),this.props.schema.minRows<=1&&(h=$.createElement(vn,{position:"end"},h))),this.props.schema.minRows>1){const s=this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation);return $.createElement("div",{style:{width:"100%",position:"relative"}},this.props.schema.label?$.createElement("div",{style:vi.label},this.getText(this.props.schema.label)):null,$.createElement(pc,{style:{width:"100%",resize:"vertical",backgroundColor:this.props.oContext.themeType==="dark"?"#363636":"#cccccc",color:this.props.oContext.themeType==="dark"?"#fff":"#111"},minRows:this.props.schema.minRows,maxRows:this.props.schema.maxRows,value:this.state.value??"",disabled:!!t,readOnly:this.props.schema.readOnly||!1,onChange:d=>{const o=d.target.value;this.setState({value:o,oldValue:this.state.value,jsonError:this.validateJson(o)},()=>this.onChange(this.props.attr,o||""))},placeholder:this.getText(this.props.schema.placeholder)}),s||e||this.state.jsonError?$.createElement("div",{style:e?vi.error:vi.helper},e||(this.state.jsonError?P.I18n.t("ra_Invalid JSON"):s)):null)}return $.createElement(pe,{variant:"standard",fullWidth:!0,value:this.state.value??"",error:!!e||!!this.state.jsonError,disabled:!!t,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0,readOnly:this.props.schema.readOnly||!1},input:{endAdornment:h}},onChange:s=>{const d=s.target.value;this.setState({value:d,oldValue:this.state.value,jsonError:this.validateJson(d)},()=>this.onChange(this.props.attr,d))},placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.state.jsonError?P.I18n.t("ra_Invalid JSON"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}const ad={fullWidth:{width:"100%"}};class ld extends V{initialized=!1;localContext;async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${n}`)}}e??=null;const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e).then(n=>{if(typeof n=="object"){const h=n;this.setState({text:h.text||"",style:h.style,icon:h.icon,iconStyle:h.iconStyle})}else typeof n=="string"&&this.setState({text:n||""})}).catch(n=>console.error(`Cannot send command: ${n}`))}}getLocalContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(){if(this.props.alive){const t=this.getLocalContext();(t!==this.localContext||!this.initialized)&&(this.localContext=t,setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}if(this.state.text===void 0)return null;let e=null;return this.state.icon&&(e=Dt(this.state.icon,{marginRight:this.state.text?8:void 0,...this.state.iconStyle||void 0}),e||(e=$.createElement(P.Icon,{src:this.state.icon,style:{marginRight:this.state.text?8:void 0,...this.state.iconStyle||void 0}}))),this.props.schema.container==="text"?$.createElement(pe,{variant:"standard",fullWidth:!0,slotProps:{input:{endAdornment:this.props.schema.copyToClipboard?$.createElement(se,{tabIndex:-1,size:"small",onClick:()=>{P.Utils.copyToClipboard(this.state.text),window.alert(P.I18n.t("ra_Copied"))}},$.createElement(P.IconCopy,null)):void 0}},value:this.state.text,label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)}):$.createElement("div",{style:{...ad.fullWidth,...this.state.style||void 0}},e,this.props.schema.container==="html"?$.createElement("span",{dangerouslySetInnerHTML:{__html:this.state.text||""}}):this.state.text)}}class cd extends V{async componentDidMount(){await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);this.setState({value:e})}renderItem(e,t){const n=this.props.schema.returnFormat!=="HH:mm:ss",h=new Date(Date.parse(`Thu, 01 Jan 1970 ${this.state.value||"00:00:00"}`));return $.createElement(eh,{sx:i=>({width:"100%",borderBottom:`1px solid ${i.palette.text.primary}`,"& fieldset":{display:"none"},"& input":{padding:`${i.spacing(1.5)} 0 4px 0`},"& .MuiInputAdornment-root":{marginLeft:0,marginTop:1},"& label":{transform:"translate(0px, -9px) scale(0.75)"}}),ampm:this.props.oContext.systemConfig.dateFormat.includes("/"),timeSteps:this.props.schema.timeSteps||this.props.schema.timesteps||{hours:1,minutes:5,seconds:5},format:this.props.schema.format||"HH:mm:ss",disabled:!!t,value:h,onChange:i=>{let s;s=i instanceof Date?i.toTimeString().split(" ")[0]:i.toTimeString(),n&&(s=s.split(":").slice(0,2).join(":")),this.setState({value:s},()=>this.onChange(this.props.attr,this.state.value))},views:this.props.schema.views||["hours","minutes","seconds"],label:this.getText(this.props.schema.label)})}}function hd(m,e){let t;return e&&m.substring(0,e.length)===e?t=m.substring(e.length+1):t=m,t=t.replace(/\./g,"/").replace(/_/g," "),t}class ud extends V{async componentDidMount(){var t;await super.componentDidMount();const e=V.getValue(this.props.data,this.props.attr);if(!e&&((t=this.props.customObj)!=null&&t._id)){const n=hd(this.props.customObj._id,`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);this.setState({value:n})}else this.setState({value:e||""})}renderItem(e,t){return $.createElement(pe,{variant:"standard",fullWidth:!0,slotProps:{htmlInput:{maxLength:this.props.schema.maxLength||this.props.schema.max||void 0}},value:this.state.value,error:!!e,disabled:t,placeholder:this.getText(this.props.schema.placeholder),label:this.getText(this.props.schema.label),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation),onChange:n=>{const h=n.target.value;this.setState({value:h},()=>this.onChange(this.props.attr,h))}})}}class pd extends V{async componentDidMount(){var t;await super.componentDidMount();const e=await this.getCachedObject("system.meta.uuid");this.setState({uuid:((t=e==null?void 0:e.native)==null?void 0:t.uuid)||"unknown"})}renderItem(e,t){return $.createElement(pe,{variant:"standard",fullWidth:!0,error:!!e,disabled:!!t,slotProps:{htmlInput:{readOnly:!0},input:{endAdornment:$.createElement(se,{tabIndex:-1,onClick:()=>{P.Utils.copyToClipboard(this.state.uuid),window.alert(P.I18n.t("ra_Copied %s",this.state.uuid))}},$.createElement(fn,null))}},value:this.state.uuid||"",label:this.getText(this.props.schema.label)||P.I18n.t("ra_Serial number (UUID)"),helperText:this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)})}}const fo={icon:{width:16,height:16,marginRight:8}};class dd extends V{async componentDidMount(){await super.componentDidMount(),this.props.oContext.socket.getUsers().then(e=>{const t={},n=P.I18n.getLanguage();this.props.schema.short?e.forEach(h=>{var i,s;return t[h._id]={color:(i=h.common)==null?void 0:i.color,icon:(s=h.common)==null?void 0:s.icon,name:P.Utils.getObjectNameFromObj(h,n)}}):e.forEach(h=>{var i,s;return t[h._id.replace(/^system\.user\./,"")]={color:(i=h.common)==null?void 0:i.color,icon:(s=h.common)==null?void 0:s.icon,name:P.Utils.getObjectNameFromObj(h,n)}}),this.setState({users:t})}).catch(e=>console.error(`Cannot get users: ${e}`))}renderItem(e,t){var h,i;const n=V.getValue(this.props.data,this.props.attr);return $.createElement(fe,{variant:"standard",fullWidth:!0},this.state.users&&this.props.schema.label?$.createElement(_e,null,this.getText(this.props.schema.label)):null,this.state.users?$.createElement(Ne,{variant:"standard",error:!!e,disabled:!!t,value:n,renderValue:s=>{var d,o,l;return $.createElement("span",null,this.state.users&&((d=this.state.users[s])!=null&&d.icon)?$.createElement(P.Icon,{src:this.state.users&&((o=this.state.users[s])==null?void 0:o.icon),style:fo.icon}):null,this.state.users&&((l=this.state.users[s])==null?void 0:l.name)||s||"")},style:{color:this.state.users&&((h=this.state.users[n])==null?void 0:h.color)||void 0,backgroundColor:P.Utils.getInvertedColor(this.state.users&&((i=this.state.users[n])==null?void 0:i.color),this.props.oContext.themeType)},onChange:s=>this.onChange(this.props.attr,s.target.value)},this.state.users&&Object.keys(this.state.users).map(s=>$.createElement($e,{style:{color:this.state.users[s].color||void 0,backgroundColor:P.Utils.getInvertedColor(this.state.users[s].color,this.props.oContext.themeType)},key:s,value:s},this.state.users[s].icon?$.createElement(P.Icon,{src:this.state.users[s].icon,style:fo.icon}):null,this.state.users[s].name))):$.createElement(pe,{variant:"standard",error:!!e,disabled:!!t,value:n,onChange:s=>this.onChange(this.props.attr,s.target.value),label:this.getText(this.props.schema.label)}),this.props.schema.help?$.createElement(ge,null,this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}const rr=Symbol.for("yaml.alias"),Os=Symbol.for("yaml.document"),kt=Symbol.for("yaml.map"),oa=Symbol.for("yaml.pair"),ut=Symbol.for("yaml.scalar"),En=Symbol.for("yaml.seq"),qe=Symbol.for("yaml.node.type"),en=m=>!!m&&typeof m=="object"&&m[qe]===rr,Ui=m=>!!m&&typeof m=="object"&&m[qe]===Os,Zn=m=>!!m&&typeof m=="object"&&m[qe]===kt,Me=m=>!!m&&typeof m=="object"&&m[qe]===oa,ye=m=>!!m&&typeof m=="object"&&m[qe]===ut,qn=m=>!!m&&typeof m=="object"&&m[qe]===En;function Te(m){if(m&&typeof m=="object")switch(m[qe]){case kt:case En:return!0}return!1}function Le(m){if(m&&typeof m=="object")switch(m[qe]){case rr:case kt:case ut:case En:return!0}return!1}const aa=m=>(ye(m)||Te(m))&&!!m.anchor,zt=Symbol("break visit"),fd=Symbol("skip children"),jn=Symbol("remove node");function An(m,e){const t=gd(e);Ui(m)?un(null,m.contents,t,Object.freeze([m]))===jn&&(m.contents=null):un(null,m,t,Object.freeze([]))}An.BREAK=zt;An.SKIP=fd;An.REMOVE=jn;function un(m,e,t,n){const h=md(m,e,t,n);if(Le(h)||Me(h))return vd(m,n,h),un(m,h,t,n);if(typeof h!="symbol"){if(Te(e)){n=Object.freeze(n.concat(e));for(let i=0;im.replace(/[!,[\]{}]/g,e=>yd[e]);class We{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},We.defaultYaml,e),this.tags=Object.assign({},We.defaultTags,t)}clone(){const e=new We(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){const e=new We(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:We.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},We.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:We.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},We.defaultTags),this.atNextDocument=!1);const n=e.trim().split(/[ \t]+/),h=n.shift();switch(h){case"%TAG":{if(n.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),n.length<2))return!1;const[i,s]=n;return this.tags[i]=s,!0}case"%YAML":{if(this.yaml.explicit=!0,n.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;const[i]=n;if(i==="1.1"||i==="1.2")return this.yaml.version=i,!0;{const s=/^\d+\.\d+$/.test(i);return t(6,`Unsupported YAML version ${i}`,s),!1}}default:return t(0,`Unknown directive ${h}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){const s=e.slice(2,-1);return s==="!"||s==="!!"?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),s)}const[,n,h]=e.match(/^(.*!)([^!]*)$/s);h||t(`The ${e} tag has no suffix`);const i=this.tags[n];if(i)try{return i+decodeURIComponent(h)}catch(s){return t(String(s)),null}return n==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(const[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+bd(e.substring(n.length));return e[0]==="!"?e:`!<${e}>`}toString(e){const t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],n=Object.entries(this.tags);let h;if(e&&n.length>0&&Le(e.contents)){const i={};An(e.contents,(s,d)=>{Le(d)&&d.tag&&(i[d.tag]=!0)}),h=Object.keys(i)}else h=[];for(const[i,s]of n)i==="!!"&&s==="tag:yaml.org,2002:"||(!e||h.some(d=>d.startsWith(s)))&&t.push(`%TAG ${i} ${s}`);return t.join(` +`)}}We.defaultYaml={explicit:!1,version:"1.2"};We.defaultTags={"!!":"tag:yaml.org,2002:"};function la(m){if(/[\x00-\x19\s,[\]{}]/.test(m)){const t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(m)}`;throw new Error(t)}return!0}function ca(m){const e=new Set;return An(m,{Value(t,n){n.anchor&&e.add(n.anchor)}}),e}function ha(m,e){for(let t=1;;++t){const n=`${m}${t}`;if(!e.has(n))return n}}function wd(m,e){const t=[],n=new Map;let h=null;return{onAnchor:i=>{t.push(i),h??(h=ca(m));const s=ha(e,h);return h.add(s),s},setAnchors:()=>{for(const i of t){const s=n.get(i);if(typeof s=="object"&&s.anchor&&(ye(s.node)||Te(s.node)))s.node.anchor=s.anchor;else{const d=new Error("Failed to resolve repeated object (this should not happen)");throw d.source=i,d}}},sourceObjects:n}}function pn(m,e,t,n){if(n&&typeof n=="object")if(Array.isArray(n))for(let h=0,i=n.length;hZe(n,String(h),t));if(m&&typeof m.toJSON=="function"){if(!t||!aa(m))return m.toJSON(e,t);const n={aliasCount:0,count:1,res:void 0};t.anchors.set(m,n),t.onCreate=i=>{n.res=i,delete t.onCreate};const h=m.toJSON(e,t);return t.onCreate&&t.onCreate(h),h}return typeof m=="bigint"&&!(t!=null&&t.keep)?Number(m):m}class or{constructor(e){Object.defineProperty(this,qe,{value:e})}clone(){const e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:h,reviver:i}={}){if(!Ui(e))throw new TypeError("A document argument is required");const s={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100},d=Ze(this,"",s);if(typeof h=="function")for(const{count:o,res:l}of s.anchors.values())h(l,o);return typeof i=="function"?pn(i,{"":d},"",d):d}}class ar extends or{constructor(e){super(rr),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,t){let n;t!=null&&t.aliasResolveCache?n=t.aliasResolveCache:(n=[],An(e,{Node:(i,s)=>{(en(s)||aa(s))&&n.push(s)}}),t&&(t.aliasResolveCache=n));let h;for(const i of n){if(i===this)break;i.anchor===this.source&&(h=i)}return h}toJSON(e,t){if(!t)return{source:this.source};const{anchors:n,doc:h,maxAliasCount:i}=t,s=this.resolve(h,t);if(!s){const o=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(o)}let d=n.get(s);if(d||(Ze(s,null,t),d=n.get(s)),(d==null?void 0:d.res)===void 0){const o="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(o)}if(i>=0&&(d.count+=1,d.aliasCount===0&&(d.aliasCount=xi(h,s,n)),d.count*d.aliasCount>i)){const o="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(o)}return d.res}toString(e,t,n){const h=`*${this.source}`;if(e){if(la(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){const i=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(i)}if(e.implicitKey)return`${h} `}return h}}function xi(m,e,t){if(en(e)){const n=e.resolve(m),h=t&&n&&t.get(n);return h?h.count*h.aliasCount:0}else if(Te(e)){let n=0;for(const h of e.items){const i=xi(m,h,t);i>n&&(n=i)}return n}else if(Me(e)){const n=xi(m,e.key,t),h=xi(m,e.value,t);return Math.max(n,h)}return 1}const ua=m=>!m||typeof m!="function"&&typeof m!="object";class ae extends or{constructor(e){super(ut),this.value=e}toJSON(e,t){return t!=null&&t.keep?this.value:Ze(this.value,e,t)}toString(){return String(this.value)}}ae.BLOCK_FOLDED="BLOCK_FOLDED";ae.BLOCK_LITERAL="BLOCK_LITERAL";ae.PLAIN="PLAIN";ae.QUOTE_DOUBLE="QUOTE_DOUBLE";ae.QUOTE_SINGLE="QUOTE_SINGLE";const Cd="tag:yaml.org,2002:";function Sd(m,e,t){if(e){const n=t.filter(i=>i.tag===e),h=n.find(i=>!i.format)??n[0];if(!h)throw new Error(`Tag ${e} not found`);return h}return t.find(n=>{var h;return((h=n.identify)==null?void 0:h.call(n,m))&&!n.format})}function Yn(m,e,t){var a,c,p;if(Ui(m)&&(m=m.contents),Le(m))return m;if(Me(m)){const u=(c=(a=t.schema[kt]).createNode)==null?void 0:c.call(a,t.schema,null,t);return u.items.push(m),u}(m instanceof String||m instanceof Number||m instanceof Boolean||typeof BigInt<"u"&&m instanceof BigInt)&&(m=m.valueOf());const{aliasDuplicateObjects:n,onAnchor:h,onTagObj:i,schema:s,sourceObjects:d}=t;let o;if(n&&m&&typeof m=="object"){if(o=d.get(m),o)return o.anchor??(o.anchor=h(m)),new ar(o.anchor);o={anchor:null,node:null},d.set(m,o)}e!=null&&e.startsWith("!!")&&(e=Cd+e.slice(2));let l=Sd(m,e,s.tags);if(!l){if(m&&typeof m.toJSON=="function"&&(m=m.toJSON()),!m||typeof m!="object"){const u=new ae(m);return o&&(o.node=u),u}l=m instanceof Map?s[kt]:Symbol.iterator in Object(m)?s[En]:s[kt]}i&&(i(l),delete t.onTagObj);const r=l!=null&&l.createNode?l.createNode(t.schema,m,t):typeof((p=l==null?void 0:l.nodeClass)==null?void 0:p.from)=="function"?l.nodeClass.from(t.schema,m,t):new ae(m);return e?r.tag=e:l.default||(r.tag=l.tag),o&&(o.node=r),r}function Bi(m,e,t){let n=t;for(let h=e.length-1;h>=0;--h){const i=e[h];if(typeof i=="number"&&Number.isInteger(i)&&i>=0){const s=[];s[i]=n,n=s}else n=new Map([[i,n]])}return Yn(n,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:m,sourceObjects:new Map})}const Nn=m=>m==null||typeof m=="object"&&!!m[Symbol.iterator]().next().done;class pa extends or{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){const t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(n=>Le(n)||Me(n)?n.clone(e):n),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Nn(e))this.add(t);else{const[n,...h]=e,i=this.get(n,!0);if(Te(i))i.addIn(h,t);else if(i===void 0&&this.schema)this.set(n,Bi(this.schema,h,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${h}`)}}deleteIn(e){const[t,...n]=e;if(n.length===0)return this.delete(t);const h=this.get(t,!0);if(Te(h))return h.deleteIn(n);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){const[n,...h]=e,i=this.get(n,!0);return h.length===0?!t&&ye(i)?i.value:i:Te(i)?i.getIn(h,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!Me(t))return!1;const n=t.value;return n==null||e&&ye(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){const[t,...n]=e;if(n.length===0)return this.has(t);const h=this.get(t,!0);return Te(h)?h.hasIn(n):!1}setIn(e,t){const[n,...h]=e;if(h.length===0)this.set(n,t);else{const i=this.get(n,!0);if(Te(i))i.setIn(h,t);else if(i===void 0&&this.schema)this.set(n,Bi(this.schema,h,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${h}`)}}}const Ed=m=>m.replace(/^(?!$)(?: $)?/gm,"#");function vt(m,e){return/^\n+$/.test(m)?m.substring(1):e?m.replace(/^(?! *$)/gm,e):m}const Vt=(m,e,t)=>m.endsWith(` `)?vt(t,e):t.includes(` `)?` -`+vt(t,e):(m.endsWith(" ")?"":" ")+t,ha="flow",Os="block",xi="quoted";function Ui(m,e,t="flow",{indentAtStart:n,lineWidth:u=80,minContentWidth:i=20,onFold:s,onOverflow:d}={}){if(!u||u<0)return m;uu-Math.max(2,i)?l.push(0):a=u-n);let c,p,h=!1,f=-1,g=-1,v=-1;t===Os&&(f=uo(m,f,e.length),f!==-1&&(a=f+o));for(let D;D=m[f+=1];){if(t===xi&&D==="\\"){switch(g=f,m[f+1]){case"x":f+=3;break;case"u":f+=5;break;case"U":f+=9;break;default:f+=1}v=f}if(D===` -`)t===Os&&(f=uo(m,f,e.length)),a=f+e.length+o,c=void 0;else{if(D===" "&&p&&p!==" "&&p!==` +`+vt(t,e):(m.endsWith(" ")?"":" ")+t,da="flow",Fs="block",_i="quoted";function Ki(m,e,t="flow",{indentAtStart:n,lineWidth:h=80,minContentWidth:i=20,onFold:s,onOverflow:d}={}){if(!h||h<0)return m;hh-Math.max(2,i)?l.push(0):a=h-n);let c,p,u=!1,f=-1,g=-1,v=-1;t===Fs&&(f=go(m,f,e.length),f!==-1&&(a=f+o));for(let D;D=m[f+=1];){if(t===_i&&D==="\\"){switch(g=f,m[f+1]){case"x":f+=3;break;case"u":f+=5;break;case"U":f+=9;break;default:f+=1}v=f}if(D===` +`)t===Fs&&(f=go(m,f,e.length)),a=f+e.length+o,c=void 0;else{if(D===" "&&p&&p!==" "&&p!==` `&&p!==" "){const E=m[f+1];E&&E!==" "&&E!==` -`&&E!==" "&&(c=f)}if(f>=a)if(c)l.push(c),a=c+o,c=void 0;else if(t===xi){for(;p===" "||p===" ";)p=D,D=m[f+=1],h=!0;const E=f>v+1?f-2:g-1;if(r[E])return m;l.push(E),r[E]=!0,a=E+o,c=void 0}else h=!0}p=D}if(h&&d&&d(),l.length===0)return m;s&&s();let b=m.slice(0,l[0]);for(let D=0;D({indentAtStart:e?m.indent.length:m.indentAtStart,lineWidth:m.options.lineWidth,minContentWidth:m.options.minContentWidth}),Gi=m=>/^(%|---|\.\.\.)/m.test(m);function Cd(m,e,t){if(!e||e<0)return!1;const n=e-t,u=m.length;if(u<=n)return!1;for(let i=0,s=0;in)return!0;if(s=i+1,u-s<=n)return!1}return!0}function zn(m,e){const t=JSON.stringify(m);if(e.options.doubleQuotedAsJSON)return t;const{implicitKey:n}=e,u=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(Gi(m)?" ":"");let s="",d=0;for(let o=0,l=t[o];l;l=t[++o])if(l===" "&&t[o+1]==="\\"&&t[o+2]==="n"&&(s+=t.slice(d,o)+"\\ ",o+=1,d=o,l="\\"),l==="\\")switch(t[o+1]){case"u":{s+=t.slice(d,o);const r=t.substr(o+2,4);switch(r){case"0000":s+="\\0";break;case"0007":s+="\\a";break;case"000b":s+="\\v";break;case"001b":s+="\\e";break;case"0085":s+="\\N";break;case"00a0":s+="\\_";break;case"2028":s+="\\L";break;case"2029":s+="\\P";break;default:r.substr(0,2)==="00"?s+="\\x"+r.substr(2):s+=t.substr(o,6)}o+=5,d=o+1}break;case"n":if(n||t[o+2]==='"'||t.length=a)if(c)l.push(c),a=c+o,c=void 0;else if(t===_i){for(;p===" "||p===" ";)p=D,D=m[f+=1],u=!0;const E=f>v+1?f-2:g-1;if(r[E])return m;l.push(E),r[E]=!0,a=E+o,c=void 0}else u=!0}p=D}if(u&&d&&d(),l.length===0)return m;s&&s();let b=m.slice(0,l[0]);for(let D=0;D({indentAtStart:e?m.indent.length:m.indentAtStart,lineWidth:m.options.lineWidth,minContentWidth:m.options.minContentWidth}),Ji=m=>/^(%|---|\.\.\.)/m.test(m);function Ad(m,e,t){if(!e||e<0)return!1;const n=e-t,h=m.length;if(h<=n)return!1;for(let i=0,s=0;in)return!0;if(s=i+1,h-s<=n)return!1}return!0}function Hn(m,e){const t=JSON.stringify(m);if(e.options.doubleQuotedAsJSON)return t;const{implicitKey:n}=e,h=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(Ji(m)?" ":"");let s="",d=0;for(let o=0,l=t[o];l;l=t[++o])if(l===" "&&t[o+1]==="\\"&&t[o+2]==="n"&&(s+=t.slice(d,o)+"\\ ",o+=1,d=o,l="\\"),l==="\\")switch(t[o+1]){case"u":{s+=t.slice(d,o);const r=t.substr(o+2,4);switch(r){case"0000":s+="\\0";break;case"0007":s+="\\a";break;case"000b":s+="\\v";break;case"001b":s+="\\e";break;case"0085":s+="\\N";break;case"00a0":s+="\\_";break;case"2028":s+="\\L";break;case"2029":s+="\\P";break;default:r.substr(0,2)==="00"?s+="\\x"+r.substr(2):s+=t.substr(o,6)}o+=5,d=o+1}break;case"n":if(n||t[o+2]==='"'||t.length `;let a,c;for(c=t.length;c>0;--c){const w=t[c-1];if(w!==` -`&&w!==" "&&w!==" ")break}let p=t.substring(c);const h=p.indexOf(` -`);h===-1?a="-":t===p||h!==p.length-1?(a="+",i&&i()):a="",p&&(t=t.slice(0,-p.length),p[p.length-1]===` -`&&(p=p.slice(0,-1)),p=p.replace(Rs,`$&${l}`));let f=!1,g,v=-1;for(g=0;g{y=!0});const T=Ui(`${b}${w}${p}`,l,Os,A);if(!y)return`>${E} +`&&w!==" "&&w!==" ")break}let p=t.substring(c);const u=p.indexOf(` +`);u===-1?a="-":t===p||u!==p.length-1?(a="+",i&&i()):a="",p&&(t=t.slice(0,-p.length),p[p.length-1]===` +`&&(p=p.slice(0,-1)),p=p.replace(Ns,`$&${l}`));let f=!1,g,v=-1;for(g=0;g{y=!0});const T=Ki(`${b}${w}${p}`,l,Fs,A);if(!y)return`>${E} ${l}${T}`}return t=t.replace(/\n+/g,`$&${l}`),`|${E} -${l}${b}${t}${p}`}function Sd(m,e,t,n){const{type:u,value:i}=m,{actualString:s,implicitKey:d,indent:o,indentStep:l,inFlow:r}=e;if(d&&i.includes(` +${l}${b}${t}${p}`}function Dd(m,e,t,n){const{type:h,value:i}=m,{actualString:s,implicitKey:d,indent:o,indentStep:l,inFlow:r}=e;if(d&&i.includes(` `)||r&&/[[\]{},]/.test(i))return dn(i,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return d||r||!i.includes(` -`)?dn(i,e):_i(m,e,t,n);if(!d&&!r&&u!==ae.PLAIN&&i.includes(` -`))return _i(m,e,t,n);if(Gi(i)){if(o==="")return e.forceBlockIndent=!0,_i(m,e,t,n);if(d&&o===l)return dn(i,e)}const a=i.replace(/\n+/g,`$& -${o}`);if(s){const c=f=>{var g;return f.default&&f.tag!=="tag:yaml.org,2002:str"&&((g=f.test)==null?void 0:g.test(a))},{compat:p,tags:h}=e.doc.schema;if(h.some(c)||p!=null&&p.some(c))return dn(i,e)}return d?a:Ui(a,o,ha,Ki(e,!1))}function or(m,e,t,n){const{implicitKey:u,inFlow:i}=e,s=typeof m.value=="string"?m:Object.assign({},m,{value:String(m.value)});let{type:d}=m;d!==ae.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(s.value)&&(d=ae.QUOTE_DOUBLE);const o=r=>{switch(r){case ae.BLOCK_FOLDED:case ae.BLOCK_LITERAL:return u||i?dn(s.value,e):_i(s,e,t,n);case ae.QUOTE_DOUBLE:return zn(s.value,e);case ae.QUOTE_SINGLE:return Fs(s.value,e);case ae.PLAIN:return Sd(s,e,t,n);default:return null}};let l=o(d);if(l===null){const{defaultKeyType:r,defaultStringType:a}=e.options,c=u&&r||a;if(l=o(c),l===null)throw new Error(`Unsupported default string type ${c}`)}return l}function ua(m,e){const t=Object.assign({blockQuote:!0,commentString:wd,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},m.schema.toStringOptions,e);let n;switch(t.collectionStyle){case"block":n=!1;break;case"flow":n=!0;break;default:n=null}return{anchors:new Set,doc:m,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:n,options:t}}function Ed(m,e){var u;if(e.tag){const i=m.filter(s=>s.tag===e.tag);if(i.length>0)return i.find(s=>s.format===e.format)??i[0]}let t,n;if(ye(e)){n=e.value;let i=m.filter(s=>{var d;return(d=s.identify)==null?void 0:d.call(s,n)});if(i.length>1){const s=i.filter(d=>d.test);s.length>0&&(i=s)}t=i.find(s=>s.format===e.format)??i.find(s=>!s.format)}else n=e,t=m.find(i=>i.nodeClass&&n instanceof i.nodeClass);if(!t){const i=((u=n==null?void 0:n.constructor)==null?void 0:u.name)??(n===null?"null":typeof n);throw new Error(`Tag not resolved for ${i} value`)}return t}function Ad(m,e,{anchors:t,doc:n}){if(!n.directives)return"";const u=[],i=(ye(m)||ke(m))&&m.anchor;i&&ra(i)&&(t.add(i),u.push(`&${i}`));const s=m.tag??(e.default?null:e.tag);return s&&u.push(n.directives.tagString(s)),u.join(" ")}function wn(m,e,t,n){var o;if(Me(m))return m.toString(e,t,n);if(en(m)){if(e.doc.directives)return m.toString(e);if((o=e.resolvedAliases)!=null&&o.has(m))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(m):e.resolvedAliases=new Set([m]),m=m.resolve(e.doc)}let u;const i=Le(m)?m:e.doc.createNode(m,{onTagObj:l=>u=l});u??(u=Ed(e.doc.schema.tags,i));const s=Ad(i,u,e);s.length>0&&(e.indentAtStart=(e.indentAtStart??0)+s.length+1);const d=typeof u.stringify=="function"?u.stringify(i,e,t,n):ye(i)?or(i,e,t,n):i.toString(e,t,n);return s?ye(i)||d[0]==="{"||d[0]==="["?`${s} ${d}`:`${s} -${e.indent}${d}`:d}function Dd({key:m,value:e},t,n,u){const{allNullValues:i,doc:s,indent:d,indentStep:o,options:{commentString:l,indentSeq:r,simpleKeys:a}}=t;let c=Le(m)&&m.comment||null;if(a){if(c)throw new Error("With simple keys, key nodes cannot have comments");if(ke(m)||!Le(m)&&typeof m=="object"){const A="With simple keys, collection cannot be used as a key value";throw new Error(A)}}let p=!a&&(!m||c&&e==null&&!t.inFlow||ke(m)||(ye(m)?m.type===ae.BLOCK_FOLDED||m.type===ae.BLOCK_LITERAL:typeof m=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!p&&(a||!i),indent:d+o});let h=!1,f=!1,g=wn(m,t,()=>h=!0,()=>f=!0);if(!p&&!t.inFlow&&g.length>1024){if(a)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");p=!0}if(t.inFlow){if(i||e==null)return h&&n&&n(),g===""?"?":p?`? ${g}`:g}else if(i&&!a||e==null&&p)return g=`? ${g}`,c&&!h?g+=Vt(g,t.indent,l(c)):f&&u&&u(),g;h&&(c=null),p?(c&&(g+=Vt(g,t.indent,l(c))),g=`? ${g} +`)?dn(i,e):ki(m,e,t,n);if(!d&&!r&&h!==ae.PLAIN&&i.includes(` +`))return ki(m,e,t,n);if(Ji(i)){if(o==="")return e.forceBlockIndent=!0,ki(m,e,t,n);if(d&&o===l)return dn(i,e)}const a=i.replace(/\n+/g,`$& +${o}`);if(s){const c=f=>{var g;return f.default&&f.tag!=="tag:yaml.org,2002:str"&&((g=f.test)==null?void 0:g.test(a))},{compat:p,tags:u}=e.doc.schema;if(u.some(c)||p!=null&&p.some(c))return dn(i,e)}return d?a:Ki(a,o,da,Gi(e,!1))}function lr(m,e,t,n){const{implicitKey:h,inFlow:i}=e,s=typeof m.value=="string"?m:Object.assign({},m,{value:String(m.value)});let{type:d}=m;d!==ae.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(s.value)&&(d=ae.QUOTE_DOUBLE);const o=r=>{switch(r){case ae.BLOCK_FOLDED:case ae.BLOCK_LITERAL:return h||i?dn(s.value,e):ki(s,e,t,n);case ae.QUOTE_DOUBLE:return Hn(s.value,e);case ae.QUOTE_SINGLE:return Rs(s.value,e);case ae.PLAIN:return Dd(s,e,t,n);default:return null}};let l=o(d);if(l===null){const{defaultKeyType:r,defaultStringType:a}=e.options,c=h&&r||a;if(l=o(c),l===null)throw new Error(`Unsupported default string type ${c}`)}return l}function fa(m,e){const t=Object.assign({blockQuote:!0,commentString:Ed,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},m.schema.toStringOptions,e);let n;switch(t.collectionStyle){case"block":n=!1;break;case"flow":n=!0;break;default:n=null}return{anchors:new Set,doc:m,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:n,options:t}}function $d(m,e){var h;if(e.tag){const i=m.filter(s=>s.tag===e.tag);if(i.length>0)return i.find(s=>s.format===e.format)??i[0]}let t,n;if(ye(e)){n=e.value;let i=m.filter(s=>{var d;return(d=s.identify)==null?void 0:d.call(s,n)});if(i.length>1){const s=i.filter(d=>d.test);s.length>0&&(i=s)}t=i.find(s=>s.format===e.format)??i.find(s=>!s.format)}else n=e,t=m.find(i=>i.nodeClass&&n instanceof i.nodeClass);if(!t){const i=((h=n==null?void 0:n.constructor)==null?void 0:h.name)??(n===null?"null":typeof n);throw new Error(`Tag not resolved for ${i} value`)}return t}function xd(m,e,{anchors:t,doc:n}){if(!n.directives)return"";const h=[],i=(ye(m)||Te(m))&&m.anchor;i&&la(i)&&(t.add(i),h.push(`&${i}`));const s=m.tag??(e.default?null:e.tag);return s&&h.push(n.directives.tagString(s)),h.join(" ")}function wn(m,e,t,n){var o;if(Me(m))return m.toString(e,t,n);if(en(m)){if(e.doc.directives)return m.toString(e);if((o=e.resolvedAliases)!=null&&o.has(m))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(m):e.resolvedAliases=new Set([m]),m=m.resolve(e.doc)}let h;const i=Le(m)?m:e.doc.createNode(m,{onTagObj:l=>h=l});h??(h=$d(e.doc.schema.tags,i));const s=xd(i,h,e);s.length>0&&(e.indentAtStart=(e.indentAtStart??0)+s.length+1);const d=typeof h.stringify=="function"?h.stringify(i,e,t,n):ye(i)?lr(i,e,t,n):i.toString(e,t,n);return s?ye(i)||d[0]==="{"||d[0]==="["?`${s} ${d}`:`${s} +${e.indent}${d}`:d}function _d({key:m,value:e},t,n,h){const{allNullValues:i,doc:s,indent:d,indentStep:o,options:{commentString:l,indentSeq:r,simpleKeys:a}}=t;let c=Le(m)&&m.comment||null;if(a){if(c)throw new Error("With simple keys, key nodes cannot have comments");if(Te(m)||!Le(m)&&typeof m=="object"){const A="With simple keys, collection cannot be used as a key value";throw new Error(A)}}let p=!a&&(!m||c&&e==null&&!t.inFlow||Te(m)||(ye(m)?m.type===ae.BLOCK_FOLDED||m.type===ae.BLOCK_LITERAL:typeof m=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!p&&(a||!i),indent:d+o});let u=!1,f=!1,g=wn(m,t,()=>u=!0,()=>f=!0);if(!p&&!t.inFlow&&g.length>1024){if(a)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");p=!0}if(t.inFlow){if(i||e==null)return u&&n&&n(),g===""?"?":p?`? ${g}`:g}else if(i&&!a||e==null&&p)return g=`? ${g}`,c&&!u?g+=Vt(g,t.indent,l(c)):f&&h&&h(),g;u&&(c=null),p?(c&&(g+=Vt(g,t.indent,l(c))),g=`? ${g} ${d}:`):(g=`${g}:`,c&&(g+=Vt(g,t.indent,l(c))));let v,b,D;Le(e)?(v=!!e.spaceBefore,b=e.commentBefore,D=e.comment):(v=!1,b=null,D=null,e&&typeof e=="object"&&(e=s.createNode(e))),t.implicitKey=!1,!p&&!c&&ye(e)&&(t.indentAtStart=g.length+1),f=!1,!r&&o.length>=2&&!t.inFlow&&!p&&qn(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let E=!1;const w=wn(e,t,()=>E=!0,()=>f=!0);let y=" ";if(c||v||b){if(y=v?` `:"",b){const A=l(b);y+=` ${vt(A,t.indent)}`}w===""&&!t.inFlow?y===` `&&D&&(y=` `):y+=` -${t.indent}`}else if(!p&&ke(e)){const A=w[0],T=w.indexOf(` -`),$=T!==-1,M=t.inFlow??e.flow??e.items.length===0;if($||!M){let O=!1;if($&&(A==="&"||A==="!")){let _=w.indexOf(" ");A==="&"&&_!==-1&&_m===vi||typeof m=="symbol"&&m.description===vi,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new ae(Symbol(vi)),{addToJSMap:da}),stringify:()=>vi},$d=(m,e)=>(wt.identify(e)||ye(e)&&(!e.type||e.type===ae.PLAIN)&&wt.identify(e.value))&&(m==null?void 0:m.doc.schema.tags.some(t=>t.tag===wt.tag&&t.default));function da(m,e,t){if(t=m&&en(t)?t.resolve(m.doc):t,qn(t))for(const n of t.items)ws(m,e,n);else if(Array.isArray(t))for(const n of t)ws(m,e,n);else ws(m,e,t)}function ws(m,e,t){const n=m&&en(t)?t.resolve(m.doc):t;if(!Zn(n))throw new Error("Merge sources must be maps or map aliases");const u=n.toJSON(null,m,Map);for(const[i,s]of u)e instanceof Map?e.has(i)||e.set(i,s):e instanceof Set?e.add(i):Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{value:s,writable:!0,enumerable:!0,configurable:!0});return e}function fa(m,e,{key:t,value:n}){if(Le(t)&&t.addToJSMap)t.addToJSMap(m,e,n);else if($d(m,t))da(m,e,n);else{const u=Ze(t,"",m);if(e instanceof Map)e.set(u,Ze(n,u,m));else if(e instanceof Set)e.add(u);else{const i=xd(t,u,m),s=Ze(n,i,m);i in e?Object.defineProperty(e,i,{value:s,writable:!0,enumerable:!0,configurable:!0}):e[i]=s}}return e}function xd(m,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(Le(m)&&(t!=null&&t.doc)){const n=ua(t.doc,{});n.anchors=new Set;for(const i of t.anchors.keys())n.anchors.add(i.anchor);n.inFlow=!0,n.inStringifyKey=!0;const u=m.toString(n);if(!t.mapKeyWarned){let i=JSON.stringify(u);i.length>40&&(i=i.substring(0,36)+'..."'),pa(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${i}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return u}return JSON.stringify(e)}function ar(m,e,t){const n=Yn(m,void 0,t),u=Yn(e,void 0,t);return new ze(n,u)}class ze{constructor(e,t=null){Object.defineProperty(this,qe,{value:ia}),this.key=e,this.value=t}clone(e){let{key:t,value:n}=this;return Le(t)&&(t=t.clone(e)),Le(n)&&(n=n.clone(e)),new ze(t,n)}toJSON(e,t){const n=t!=null&&t.mapAsMap?new Map:{};return fa(t,n,this)}toString(e,t,n){return e!=null&&e.doc?Dd(this,e,t,n):JSON.stringify(this)}}function ga(m,e,t){return(e.inFlow??m.flow?kd:_d)(m,e,t)}function _d({comment:m,items:e},t,{blockItemPrefix:n,flowChars:u,itemIndent:i,onChompKeep:s,onComment:d}){const{indent:o,options:{commentString:l}}=t,r=Object.assign({},t,{indent:i,type:null});let a=!1;const c=[];for(let h=0;hg=null,()=>a=!0);g&&(v+=Vt(v,i,l(g))),a&&g&&(a=!1),c.push(n+v)}let p;if(c.length===0)p=u.start+u.end;else{p=c[0];for(let h=1;hm===yi||typeof m=="symbol"&&m.description===yi,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new ae(Symbol(yi)),{addToJSMap:ma}),stringify:()=>yi},kd=(m,e)=>(wt.identify(e)||ye(e)&&(!e.type||e.type===ae.PLAIN)&&wt.identify(e.value))&&(m==null?void 0:m.doc.schema.tags.some(t=>t.tag===wt.tag&&t.default));function ma(m,e,t){if(t=m&&en(t)?t.resolve(m.doc):t,qn(t))for(const n of t.items)Cs(m,e,n);else if(Array.isArray(t))for(const n of t)Cs(m,e,n);else Cs(m,e,t)}function Cs(m,e,t){const n=m&&en(t)?t.resolve(m.doc):t;if(!Zn(n))throw new Error("Merge sources must be maps or map aliases");const h=n.toJSON(null,m,Map);for(const[i,s]of h)e instanceof Map?e.has(i)||e.set(i,s):e instanceof Set?e.add(i):Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{value:s,writable:!0,enumerable:!0,configurable:!0});return e}function va(m,e,{key:t,value:n}){if(Le(t)&&t.addToJSMap)t.addToJSMap(m,e,n);else if(kd(m,t))ma(m,e,n);else{const h=Ze(t,"",m);if(e instanceof Map)e.set(h,Ze(n,h,m));else if(e instanceof Set)e.add(h);else{const i=Td(t,h,m),s=Ze(n,i,m);i in e?Object.defineProperty(e,i,{value:s,writable:!0,enumerable:!0,configurable:!0}):e[i]=s}}return e}function Td(m,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(Le(m)&&(t!=null&&t.doc)){const n=fa(t.doc,{});n.anchors=new Set;for(const i of t.anchors.keys())n.anchors.add(i.anchor);n.inFlow=!0,n.inStringifyKey=!0;const h=m.toString(n);if(!t.mapKeyWarned){let i=JSON.stringify(h);i.length>40&&(i=i.substring(0,36)+'..."'),ga(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${i}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return h}return JSON.stringify(e)}function cr(m,e,t){const n=Yn(m,void 0,t),h=Yn(e,void 0,t);return new He(n,h)}class He{constructor(e,t=null){Object.defineProperty(this,qe,{value:oa}),this.key=e,this.value=t}clone(e){let{key:t,value:n}=this;return Le(t)&&(t=t.clone(e)),Le(n)&&(n=n.clone(e)),new He(t,n)}toJSON(e,t){const n=t!=null&&t.mapAsMap?new Map:{};return va(t,n,this)}toString(e,t,n){return e!=null&&e.doc?_d(this,e,t,n):JSON.stringify(this)}}function ya(m,e,t){return(e.inFlow??m.flow?Md:Ld)(m,e,t)}function Ld({comment:m,items:e},t,{blockItemPrefix:n,flowChars:h,itemIndent:i,onChompKeep:s,onComment:d}){const{indent:o,options:{commentString:l}}=t,r=Object.assign({},t,{indent:i,type:null});let a=!1;const c=[];for(let u=0;ug=null,()=>a=!0);g&&(v+=Vt(v,i,l(g))),a&&g&&(a=!1),c.push(n+v)}let p;if(c.length===0)p=h.start+h.end;else{p=c[0];for(let u=1;ug=null);l||(l=a.length>r||v.includes(` -`)),h0&&(l||(l=a.reduce((b,D)=>b+D.length+2,2)+(v.length+2)>e.options.lineWidth)),l&&(v+=",")),g&&(v+=Vt(v,n,d(g))),a.push(v),r=a.length}const{start:c,end:p}=t;if(a.length===0)return c+p;if(!l){const h=a.reduce((f,g)=>f+g.length+2,2);l=e.options.lineWidth>0&&h>e.options.lineWidth}if(l){let h=c;for(const f of a)h+=f?` -${i}${u}${f}`:` -`;return`${h} -${u}${p}`}else return`${c}${s}${a.join(" ")}${s}${p}`}function Bi({indent:m,options:{commentString:e}},t,n,u){if(n&&u&&(n=n.replace(/^\n+/,"")),n){const i=vt(e(n),m);t.push(i.trimStart())}}function Ut(m,e){const t=ye(e)?e.value:e;for(const n of m)if(Me(n)&&(n.key===e||n.key===t||ye(n.key)&&n.key.value===t))return n}class Xe extends ca{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(kt,e),this.items=[]}static from(e,t,n){const{keepUndefined:u,replacer:i}=n,s=new this(e),d=(o,l)=>{if(typeof i=="function")l=i.call(t,o,l);else if(Array.isArray(i)&&!i.includes(o))return;(l!==void 0||u)&&s.items.push(ar(o,l,n))};if(t instanceof Map)for(const[o,l]of t)d(o,l);else if(t&&typeof t=="object")for(const o of Object.keys(t))d(o,t[o]);return typeof e.sortMapEntries=="function"&&s.items.sort(e.sortMapEntries),s}add(e,t){var s;let n;Me(e)?n=e:!e||typeof e!="object"||!("key"in e)?n=new ze(e,e==null?void 0:e.value):n=new ze(e.key,e.value);const u=Ut(this.items,n.key),i=(s=this.schema)==null?void 0:s.sortMapEntries;if(u){if(!t)throw new Error(`Key ${n.key} already set`);ye(u.value)&&la(n.value)?u.value.value=n.value:u.value=n.value}else if(i){const d=this.items.findIndex(o=>i(n,o)<0);d===-1?this.items.push(n):this.items.splice(d,0,n)}else this.items.push(n)}delete(e){const t=Ut(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){const n=Ut(this.items,e),u=n==null?void 0:n.value;return(!t&&ye(u)?u.value:u)??void 0}has(e){return!!Ut(this.items,e)}set(e,t){this.add(new ze(e,t),!0)}toJSON(e,t,n){const u=n?new n:t!=null&&t.mapAsMap?new Map:{};t!=null&&t.onCreate&&t.onCreate(u);for(const i of this.items)fa(t,u,i);return u}toString(e,t,n){if(!e)return JSON.stringify(this);for(const u of this.items)if(!Me(u))throw new Error(`Map items must all be pairs; found ${JSON.stringify(u)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),ga(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:n,onComment:t})}}const Dn={collection:"map",default:!0,nodeClass:Xe,tag:"tag:yaml.org,2002:map",resolve(m,e){return Zn(m)||e("Expected a mapping for this tag"),m},createNode:(m,e,t)=>Xe.from(m,e,t)};class Xt extends ca{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(En,e),this.items=[]}add(e){this.items.push(e)}delete(e){const t=yi(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){const n=yi(e);if(typeof n!="number")return;const u=this.items[n];return!t&&ye(u)?u.value:u}has(e){const t=yi(e);return typeof t=="number"&&t=0?e:null}const $n={collection:"seq",default:!0,nodeClass:Xt,tag:"tag:yaml.org,2002:seq",resolve(m,e){return qn(m)||e("Expected a sequence for this tag"),m},createNode:(m,e,t)=>Xt.from(m,e,t)},Ji={identify:m=>typeof m=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:m=>m,stringify(m,e,t,n){return e=Object.assign({actualString:!0},e),or(m,e,t,n)}},Yi={identify:m=>m==null,createNode:()=>new ae(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new ae(null),stringify:({source:m},e)=>typeof m=="string"&&Yi.test.test(m)?m:e.options.nullStr},lr={identify:m=>typeof m=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:m=>new ae(m[0]==="t"||m[0]==="T"),stringify({source:m,value:e},t){if(m&&lr.test.test(m)){const n=m[0]==="t"||m[0]==="T";if(e===n)return m}return e?t.options.trueStr:t.options.falseStr}};function ot({format:m,minFractionDigits:e,tag:t,value:n}){if(typeof n=="bigint")return String(n);const u=typeof n=="number"?n:Number(n);if(!isFinite(u))return isNaN(u)?".nan":u<0?"-.inf":".inf";let i=Object.is(n,-0)?"-0":JSON.stringify(n);if(!m&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\d/.test(i)){let s=i.indexOf(".");s<0&&(s=i.length,i+=".");let d=e-(i.length-s-1);for(;d-- >0;)i+="0"}return i}const ma={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:m=>m.slice(-3).toLowerCase()==="nan"?NaN:m[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ot},va={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:m=>parseFloat(m),stringify(m){const e=Number(m.value);return isFinite(e)?e.toExponential():ot(m)}},ya={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(m){const e=new ae(parseFloat(m)),t=m.indexOf(".");return t!==-1&&m[m.length-1]==="0"&&(e.minFractionDigits=m.length-t-1),e},stringify:ot},Qi=m=>typeof m=="bigint"||Number.isInteger(m),cr=(m,e,t,{intAsBigInt:n})=>n?BigInt(m):parseInt(m.substring(e),t);function ba(m,e,t){const{value:n}=m;return Qi(n)&&n>=0?t+n.toString(e):ot(m)}const wa={identify:m=>Qi(m)&&m>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(m,e,t)=>cr(m,2,8,t),stringify:m=>ba(m,8,"0o")},Ca={identify:Qi,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(m,e,t)=>cr(m,0,10,t),stringify:ot},Sa={identify:m=>Qi(m)&&m>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(m,e,t)=>cr(m,2,16,t),stringify:m=>ba(m,16,"0x")},Td=[Dn,$n,Ji,Yi,lr,wa,Ca,Sa,ma,va,ya];function po(m){return typeof m=="bigint"||Number.isInteger(m)}const bi=({value:m})=>JSON.stringify(m),Ld=[{identify:m=>typeof m=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:m=>m,stringify:bi},{identify:m=>m==null,createNode:()=>new ae(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:bi},{identify:m=>typeof m=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:m=>m==="true",stringify:bi},{identify:po,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(m,e,{intAsBigInt:t})=>t?BigInt(m):parseInt(m,10),stringify:({value:m})=>po(m)?m.toString():JSON.stringify(m)},{identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:m=>parseFloat(m),stringify:bi}],Md={default:!0,tag:"",test:/^/,resolve(m,e){return e(`Unresolved plain scalar ${JSON.stringify(m)}`),m}},Id=[Dn,$n].concat(Ld,Md),hr={identify:m=>m instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(m,e){if(typeof atob=="function"){const t=atob(m.replace(/[\n\r]/g,"")),n=new Uint8Array(t.length);for(let u=0;u1&&e("Each pair must have its own sequence indicator");const u=n.items[0]||new ze(new ae(null));if(n.commentBefore&&(u.key.commentBefore=u.key.commentBefore?`${n.commentBefore} -${u.key.commentBefore}`:n.commentBefore),n.comment){const i=u.value??u.key;i.comment=i.comment?`${n.comment} -${i.comment}`:n.comment}n=u}m.items[t]=Me(n)?n:new ze(n)}}else e("Expected a sequence for this tag");return m}function Aa(m,e,t){const{replacer:n}=t,u=new Xt(m);u.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let s of e){typeof n=="function"&&(s=n.call(e,String(i++),s));let d,o;if(Array.isArray(s))if(s.length===2)d=s[0],o=s[1];else throw new TypeError(`Expected [key, value] tuple: ${s}`);else if(s&&s instanceof Object){const l=Object.keys(s);if(l.length===1)d=l[0],o=s[d];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else d=s;u.items.push(ar(d,o,t))}return u}const ur={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Ea,createNode:Aa};class gn extends Xt{constructor(){super(),this.add=Xe.prototype.add.bind(this),this.delete=Xe.prototype.delete.bind(this),this.get=Xe.prototype.get.bind(this),this.has=Xe.prototype.has.bind(this),this.set=Xe.prototype.set.bind(this),this.tag=gn.tag}toJSON(e,t){if(!t)return super.toJSON(e);const n=new Map;t!=null&&t.onCreate&&t.onCreate(n);for(const u of this.items){let i,s;if(Me(u)?(i=Ze(u.key,"",t),s=Ze(u.value,i,t)):i=Ze(u,"",t),n.has(i))throw new Error("Ordered maps must not include duplicate keys");n.set(i,s)}return n}static from(e,t,n){const u=Aa(e,t,n),i=new this;return i.items=u.items,i}}gn.tag="tag:yaml.org,2002:omap";const pr={collection:"seq",identify:m=>m instanceof Map,nodeClass:gn,default:!1,tag:"tag:yaml.org,2002:omap",resolve(m,e){const t=Ea(m,e),n=[];for(const{key:u}of t.items)ye(u)&&(n.includes(u.value)?e(`Ordered maps must not include duplicate keys: ${u.value}`):n.push(u.value));return Object.assign(new gn,t)},createNode:(m,e,t)=>gn.from(m,e,t)};function Da({value:m,source:e},t){return e&&(m?$a:xa).test.test(e)?e:m?t.options.trueStr:t.options.falseStr}const $a={identify:m=>m===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new ae(!0),stringify:Da},xa={identify:m=>m===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new ae(!1),stringify:Da},Od={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:m=>m.slice(-3).toLowerCase()==="nan"?NaN:m[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ot},Fd={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:m=>parseFloat(m.replace(/_/g,"")),stringify(m){const e=Number(m.value);return isFinite(e)?e.toExponential():ot(m)}},Rd={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(m){const e=new ae(parseFloat(m.replace(/_/g,""))),t=m.indexOf(".");if(t!==-1){const n=m.substring(t+1).replace(/_/g,"");n[n.length-1]==="0"&&(e.minFractionDigits=n.length)}return e},stringify:ot},ei=m=>typeof m=="bigint"||Number.isInteger(m);function Xi(m,e,t,{intAsBigInt:n}){const u=m[0];if((u==="-"||u==="+")&&(e+=1),m=m.substring(e).replace(/_/g,""),n){switch(t){case 2:m=`0b${m}`;break;case 8:m=`0o${m}`;break;case 16:m=`0x${m}`;break}const s=BigInt(m);return u==="-"?BigInt(-1)*s:s}const i=parseInt(m,t);return u==="-"?-1*i:i}function dr(m,e,t){const{value:n}=m;if(ei(n)){const u=n.toString(e);return n<0?"-"+t+u.substr(1):t+u}return ot(m)}const Nd={identify:ei,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(m,e,t)=>Xi(m,2,2,t),stringify:m=>dr(m,2,"0b")},Bd={identify:ei,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(m,e,t)=>Xi(m,1,8,t),stringify:m=>dr(m,8,"0")},Pd={identify:ei,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(m,e,t)=>Xi(m,0,10,t),stringify:ot},Wd={identify:ei,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(m,e,t)=>Xi(m,2,16,t),stringify:m=>dr(m,16,"0x")};class mn extends Xe{constructor(e){super(e),this.tag=mn.tag}add(e){let t;Me(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new ze(e.key,null):t=new ze(e,null),Ut(this.items,t.key)||this.items.push(t)}get(e,t){const n=Ut(this.items,e);return!t&&Me(n)?ye(n.key)?n.key.value:n.key:n}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);const n=Ut(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new ze(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw new Error("Set items must all have null values")}static from(e,t,n){const{replacer:u}=n,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let s of t)typeof u=="function"&&(s=u.call(t,s,s)),i.items.push(ar(s,null,n));return i}}mn.tag="tag:yaml.org,2002:set";const fr={collection:"map",identify:m=>m instanceof Set,nodeClass:mn,default:!1,tag:"tag:yaml.org,2002:set",createNode:(m,e,t)=>mn.from(m,e,t),resolve(m,e){if(Zn(m)){if(m.hasAllNullValues(!0))return Object.assign(new mn,m);e("Set items must all have null values")}else e("Expected a mapping for this tag");return m}};function gr(m,e){const t=m[0],n=t==="-"||t==="+"?m.substring(1):m,u=s=>e?BigInt(s):Number(s),i=n.replace(/_/g,"").split(":").reduce((s,d)=>s*u(60)+u(d),u(0));return t==="-"?u(-1)*i:i}function _a(m){let{value:e}=m,t=s=>s;if(typeof e=="bigint")t=s=>BigInt(s);else if(isNaN(e)||!isFinite(e))return ot(m);let n="";e<0&&(n="-",e*=t(-1));const u=t(60),i=[e%u];return e<60?i.unshift(0):(e=(e-i[0])/u,i.unshift(e%u),e>=60&&(e=(e-i[0])/u,i.unshift(e))),n+i.map(s=>String(s).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}const ka={identify:m=>typeof m=="bigint"||Number.isInteger(m),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(m,e,{intAsBigInt:t})=>gr(m,t),stringify:_a},Ta={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:m=>gr(m,!1),stringify:_a},Zi={identify:m=>m instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(m){const e=m.match(Zi.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");const[,t,n,u,i,s,d]=e.map(Number),o=e[7]?Number((e[7]+"00").substr(1,3)):0;let l=Date.UTC(t,n-1,u,i||0,s||0,d||0,o);const r=e[8];if(r&&r!=="Z"){let a=gr(r,!1);Math.abs(a)<30&&(a*=60),l-=6e4*a}return new Date(l)},stringify:({value:m})=>(m==null?void 0:m.toISOString().replace(/(T00:00:00)?\.000Z$/,""))??""},fo=[Dn,$n,Ji,Yi,$a,xa,Nd,Bd,Pd,Wd,Od,Fd,Rd,hr,wt,pr,ur,fr,ka,Ta,Zi],go=new Map([["core",Td],["failsafe",[Dn,$n,Ji]],["json",Id],["yaml11",fo],["yaml-1.1",fo]]),mo={binary:hr,bool:lr,float:ya,floatExp:va,floatNaN:ma,floatTime:Ta,int:Ca,intHex:Sa,intOct:wa,intTime:ka,map:Dn,merge:wt,null:Yi,omap:pr,pairs:ur,seq:$n,set:fr,timestamp:Zi},jd={"tag:yaml.org,2002:binary":hr,"tag:yaml.org,2002:merge":wt,"tag:yaml.org,2002:omap":pr,"tag:yaml.org,2002:pairs":ur,"tag:yaml.org,2002:set":fr,"tag:yaml.org,2002:timestamp":Zi};function Cs(m,e,t){const n=go.get(e);if(n&&!m)return t&&!n.includes(wt)?n.concat(wt):n.slice();let u=n;if(!u)if(Array.isArray(m))u=[];else{const i=Array.from(go.keys()).filter(s=>s!=="yaml11").map(s=>JSON.stringify(s)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${i} or define customTags array`)}if(Array.isArray(m))for(const i of m)u=u.concat(i);else typeof m=="function"&&(u=m(u.slice()));return t&&(u=u.concat(wt)),u.reduce((i,s)=>{const d=typeof s=="string"?mo[s]:s;if(!d){const o=JSON.stringify(s),l=Object.keys(mo).map(r=>JSON.stringify(r)).join(", ");throw new Error(`Unknown custom tag ${o}; use one of ${l}`)}return i.includes(d)||i.push(d),i},[])}const zd=(m,e)=>m.keye.key?1:0;class mr{constructor({compat:e,customTags:t,merge:n,resolveKnownTags:u,schema:i,sortMapEntries:s,toStringDefaults:d}){this.compat=Array.isArray(e)?Cs(e,"compat"):e?Cs(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=u?jd:{},this.tags=Cs(t,this.name,n),this.toStringOptions=d??null,Object.defineProperty(this,kt,{value:Dn}),Object.defineProperty(this,ut,{value:Ji}),Object.defineProperty(this,En,{value:$n}),this.sortMapEntries=typeof s=="function"?s:s===!0?zd:null}clone(){const e=Object.create(mr.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}}function Hd(m,e){var o;const t=[];let n=e.directives===!0;if(e.directives!==!1&&m.directives){const l=m.directives.toString(m);l?(t.push(l),n=!0):m.directives.docStart&&(n=!0)}n&&t.push("---");const u=ua(m,e),{commentString:i}=u.options;if(m.commentBefore){t.length!==1&&t.unshift("");const l=i(m.commentBefore);t.unshift(vt(l,""))}let s=!1,d=null;if(m.contents){if(Le(m.contents)){if(m.contents.spaceBefore&&n&&t.push(""),m.contents.commentBefore){const a=i(m.contents.commentBefore);t.push(vt(a,""))}u.forceBlockIndent=!!m.comment,d=m.contents.comment}const l=d?void 0:()=>s=!0;let r=wn(m.contents,u,()=>d=null,l);d&&(r+=Vt(r,"",i(d))),(r[0]==="|"||r[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${r}`:t.push(r)}else t.push(wn(m.contents,u));if((o=m.directives)!=null&&o.docEnd)if(m.comment){const l=i(m.comment);l.includes(` +`+vt(l(m),o),d&&d()):a&&s&&s(),p}function Md({items:m},e,{flowChars:t,itemIndent:n}){const{indent:h,indentStep:i,flowCollectionPadding:s,options:{commentString:d}}=e;n+=i;const o=Object.assign({},e,{indent:n,inFlow:!0,type:null});let l=!1,r=0;const a=[];for(let u=0;ug=null);l||(l=a.length>r||v.includes(` +`)),u0&&(l||(l=a.reduce((b,D)=>b+D.length+2,2)+(v.length+2)>e.options.lineWidth)),l&&(v+=",")),g&&(v+=Vt(v,n,d(g))),a.push(v),r=a.length}const{start:c,end:p}=t;if(a.length===0)return c+p;if(!l){const u=a.reduce((f,g)=>f+g.length+2,2);l=e.options.lineWidth>0&&u>e.options.lineWidth}if(l){let u=c;for(const f of a)u+=f?` +${i}${h}${f}`:` +`;return`${u} +${h}${p}`}else return`${c}${s}${a.join(" ")}${s}${p}`}function Pi({indent:m,options:{commentString:e}},t,n,h){if(n&&h&&(n=n.replace(/^\n+/,"")),n){const i=vt(e(n),m);t.push(i.trimStart())}}function Ut(m,e){const t=ye(e)?e.value:e;for(const n of m)if(Me(n)&&(n.key===e||n.key===t||ye(n.key)&&n.key.value===t))return n}class Xe extends pa{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(kt,e),this.items=[]}static from(e,t,n){const{keepUndefined:h,replacer:i}=n,s=new this(e),d=(o,l)=>{if(typeof i=="function")l=i.call(t,o,l);else if(Array.isArray(i)&&!i.includes(o))return;(l!==void 0||h)&&s.items.push(cr(o,l,n))};if(t instanceof Map)for(const[o,l]of t)d(o,l);else if(t&&typeof t=="object")for(const o of Object.keys(t))d(o,t[o]);return typeof e.sortMapEntries=="function"&&s.items.sort(e.sortMapEntries),s}add(e,t){var s;let n;Me(e)?n=e:!e||typeof e!="object"||!("key"in e)?n=new He(e,e==null?void 0:e.value):n=new He(e.key,e.value);const h=Ut(this.items,n.key),i=(s=this.schema)==null?void 0:s.sortMapEntries;if(h){if(!t)throw new Error(`Key ${n.key} already set`);ye(h.value)&&ua(n.value)?h.value.value=n.value:h.value=n.value}else if(i){const d=this.items.findIndex(o=>i(n,o)<0);d===-1?this.items.push(n):this.items.splice(d,0,n)}else this.items.push(n)}delete(e){const t=Ut(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){const n=Ut(this.items,e),h=n==null?void 0:n.value;return(!t&&ye(h)?h.value:h)??void 0}has(e){return!!Ut(this.items,e)}set(e,t){this.add(new He(e,t),!0)}toJSON(e,t,n){const h=n?new n:t!=null&&t.mapAsMap?new Map:{};t!=null&&t.onCreate&&t.onCreate(h);for(const i of this.items)va(t,h,i);return h}toString(e,t,n){if(!e)return JSON.stringify(this);for(const h of this.items)if(!Me(h))throw new Error(`Map items must all be pairs; found ${JSON.stringify(h)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),ya(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:n,onComment:t})}}const Dn={collection:"map",default:!0,nodeClass:Xe,tag:"tag:yaml.org,2002:map",resolve(m,e){return Zn(m)||e("Expected a mapping for this tag"),m},createNode:(m,e,t)=>Xe.from(m,e,t)};class Xt extends pa{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(En,e),this.items=[]}add(e){this.items.push(e)}delete(e){const t=bi(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){const n=bi(e);if(typeof n!="number")return;const h=this.items[n];return!t&&ye(h)?h.value:h}has(e){const t=bi(e);return typeof t=="number"&&t=0?e:null}const $n={collection:"seq",default:!0,nodeClass:Xt,tag:"tag:yaml.org,2002:seq",resolve(m,e){return qn(m)||e("Expected a sequence for this tag"),m},createNode:(m,e,t)=>Xt.from(m,e,t)},Yi={identify:m=>typeof m=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:m=>m,stringify(m,e,t,n){return e=Object.assign({actualString:!0},e),lr(m,e,t,n)}},Qi={identify:m=>m==null,createNode:()=>new ae(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new ae(null),stringify:({source:m},e)=>typeof m=="string"&&Qi.test.test(m)?m:e.options.nullStr},hr={identify:m=>typeof m=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:m=>new ae(m[0]==="t"||m[0]==="T"),stringify({source:m,value:e},t){if(m&&hr.test.test(m)){const n=m[0]==="t"||m[0]==="T";if(e===n)return m}return e?t.options.trueStr:t.options.falseStr}};function ot({format:m,minFractionDigits:e,tag:t,value:n}){if(typeof n=="bigint")return String(n);const h=typeof n=="number"?n:Number(n);if(!isFinite(h))return isNaN(h)?".nan":h<0?"-.inf":".inf";let i=Object.is(n,-0)?"-0":JSON.stringify(n);if(!m&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\d/.test(i)){let s=i.indexOf(".");s<0&&(s=i.length,i+=".");let d=e-(i.length-s-1);for(;d-- >0;)i+="0"}return i}const ba={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:m=>m.slice(-3).toLowerCase()==="nan"?NaN:m[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ot},wa={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:m=>parseFloat(m),stringify(m){const e=Number(m.value);return isFinite(e)?e.toExponential():ot(m)}},Ca={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(m){const e=new ae(parseFloat(m)),t=m.indexOf(".");return t!==-1&&m[m.length-1]==="0"&&(e.minFractionDigits=m.length-t-1),e},stringify:ot},Xi=m=>typeof m=="bigint"||Number.isInteger(m),ur=(m,e,t,{intAsBigInt:n})=>n?BigInt(m):parseInt(m.substring(e),t);function Sa(m,e,t){const{value:n}=m;return Xi(n)&&n>=0?t+n.toString(e):ot(m)}const Ea={identify:m=>Xi(m)&&m>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(m,e,t)=>ur(m,2,8,t),stringify:m=>Sa(m,8,"0o")},Aa={identify:Xi,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(m,e,t)=>ur(m,0,10,t),stringify:ot},Da={identify:m=>Xi(m)&&m>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(m,e,t)=>ur(m,2,16,t),stringify:m=>Sa(m,16,"0x")},Id=[Dn,$n,Yi,Qi,hr,Ea,Aa,Da,ba,wa,Ca];function mo(m){return typeof m=="bigint"||Number.isInteger(m)}const wi=({value:m})=>JSON.stringify(m),Od=[{identify:m=>typeof m=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:m=>m,stringify:wi},{identify:m=>m==null,createNode:()=>new ae(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:wi},{identify:m=>typeof m=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:m=>m==="true",stringify:wi},{identify:mo,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(m,e,{intAsBigInt:t})=>t?BigInt(m):parseInt(m,10),stringify:({value:m})=>mo(m)?m.toString():JSON.stringify(m)},{identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:m=>parseFloat(m),stringify:wi}],Fd={default:!0,tag:"",test:/^/,resolve(m,e){return e(`Unresolved plain scalar ${JSON.stringify(m)}`),m}},Rd=[Dn,$n].concat(Od,Fd),pr={identify:m=>m instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(m,e){if(typeof atob=="function"){const t=atob(m.replace(/[\n\r]/g,"")),n=new Uint8Array(t.length);for(let h=0;h1&&e("Each pair must have its own sequence indicator");const h=n.items[0]||new He(new ae(null));if(n.commentBefore&&(h.key.commentBefore=h.key.commentBefore?`${n.commentBefore} +${h.key.commentBefore}`:n.commentBefore),n.comment){const i=h.value??h.key;i.comment=i.comment?`${n.comment} +${i.comment}`:n.comment}n=h}m.items[t]=Me(n)?n:new He(n)}}else e("Expected a sequence for this tag");return m}function xa(m,e,t){const{replacer:n}=t,h=new Xt(m);h.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let s of e){typeof n=="function"&&(s=n.call(e,String(i++),s));let d,o;if(Array.isArray(s))if(s.length===2)d=s[0],o=s[1];else throw new TypeError(`Expected [key, value] tuple: ${s}`);else if(s&&s instanceof Object){const l=Object.keys(s);if(l.length===1)d=l[0],o=s[d];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else d=s;h.items.push(cr(d,o,t))}return h}const dr={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:$a,createNode:xa};class gn extends Xt{constructor(){super(),this.add=Xe.prototype.add.bind(this),this.delete=Xe.prototype.delete.bind(this),this.get=Xe.prototype.get.bind(this),this.has=Xe.prototype.has.bind(this),this.set=Xe.prototype.set.bind(this),this.tag=gn.tag}toJSON(e,t){if(!t)return super.toJSON(e);const n=new Map;t!=null&&t.onCreate&&t.onCreate(n);for(const h of this.items){let i,s;if(Me(h)?(i=Ze(h.key,"",t),s=Ze(h.value,i,t)):i=Ze(h,"",t),n.has(i))throw new Error("Ordered maps must not include duplicate keys");n.set(i,s)}return n}static from(e,t,n){const h=xa(e,t,n),i=new this;return i.items=h.items,i}}gn.tag="tag:yaml.org,2002:omap";const fr={collection:"seq",identify:m=>m instanceof Map,nodeClass:gn,default:!1,tag:"tag:yaml.org,2002:omap",resolve(m,e){const t=$a(m,e),n=[];for(const{key:h}of t.items)ye(h)&&(n.includes(h.value)?e(`Ordered maps must not include duplicate keys: ${h.value}`):n.push(h.value));return Object.assign(new gn,t)},createNode:(m,e,t)=>gn.from(m,e,t)};function _a({value:m,source:e},t){return e&&(m?ka:Ta).test.test(e)?e:m?t.options.trueStr:t.options.falseStr}const ka={identify:m=>m===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new ae(!0),stringify:_a},Ta={identify:m=>m===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new ae(!1),stringify:_a},Nd={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:m=>m.slice(-3).toLowerCase()==="nan"?NaN:m[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ot},Bd={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:m=>parseFloat(m.replace(/_/g,"")),stringify(m){const e=Number(m.value);return isFinite(e)?e.toExponential():ot(m)}},Pd={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(m){const e=new ae(parseFloat(m.replace(/_/g,""))),t=m.indexOf(".");if(t!==-1){const n=m.substring(t+1).replace(/_/g,"");n[n.length-1]==="0"&&(e.minFractionDigits=n.length)}return e},stringify:ot},ei=m=>typeof m=="bigint"||Number.isInteger(m);function Zi(m,e,t,{intAsBigInt:n}){const h=m[0];if((h==="-"||h==="+")&&(e+=1),m=m.substring(e).replace(/_/g,""),n){switch(t){case 2:m=`0b${m}`;break;case 8:m=`0o${m}`;break;case 16:m=`0x${m}`;break}const s=BigInt(m);return h==="-"?BigInt(-1)*s:s}const i=parseInt(m,t);return h==="-"?-1*i:i}function gr(m,e,t){const{value:n}=m;if(ei(n)){const h=n.toString(e);return n<0?"-"+t+h.substr(1):t+h}return ot(m)}const Wd={identify:ei,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(m,e,t)=>Zi(m,2,2,t),stringify:m=>gr(m,2,"0b")},jd={identify:ei,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(m,e,t)=>Zi(m,1,8,t),stringify:m=>gr(m,8,"0")},Hd={identify:ei,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(m,e,t)=>Zi(m,0,10,t),stringify:ot},zd={identify:ei,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(m,e,t)=>Zi(m,2,16,t),stringify:m=>gr(m,16,"0x")};class mn extends Xe{constructor(e){super(e),this.tag=mn.tag}add(e){let t;Me(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new He(e.key,null):t=new He(e,null),Ut(this.items,t.key)||this.items.push(t)}get(e,t){const n=Ut(this.items,e);return!t&&Me(n)?ye(n.key)?n.key.value:n.key:n}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);const n=Ut(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new He(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw new Error("Set items must all have null values")}static from(e,t,n){const{replacer:h}=n,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let s of t)typeof h=="function"&&(s=h.call(t,s,s)),i.items.push(cr(s,null,n));return i}}mn.tag="tag:yaml.org,2002:set";const mr={collection:"map",identify:m=>m instanceof Set,nodeClass:mn,default:!1,tag:"tag:yaml.org,2002:set",createNode:(m,e,t)=>mn.from(m,e,t),resolve(m,e){if(Zn(m)){if(m.hasAllNullValues(!0))return Object.assign(new mn,m);e("Set items must all have null values")}else e("Expected a mapping for this tag");return m}};function vr(m,e){const t=m[0],n=t==="-"||t==="+"?m.substring(1):m,h=s=>e?BigInt(s):Number(s),i=n.replace(/_/g,"").split(":").reduce((s,d)=>s*h(60)+h(d),h(0));return t==="-"?h(-1)*i:i}function La(m){let{value:e}=m,t=s=>s;if(typeof e=="bigint")t=s=>BigInt(s);else if(isNaN(e)||!isFinite(e))return ot(m);let n="";e<0&&(n="-",e*=t(-1));const h=t(60),i=[e%h];return e<60?i.unshift(0):(e=(e-i[0])/h,i.unshift(e%h),e>=60&&(e=(e-i[0])/h,i.unshift(e))),n+i.map(s=>String(s).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}const Ma={identify:m=>typeof m=="bigint"||Number.isInteger(m),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(m,e,{intAsBigInt:t})=>vr(m,t),stringify:La},Ia={identify:m=>typeof m=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:m=>vr(m,!1),stringify:La},qi={identify:m=>m instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(m){const e=m.match(qi.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");const[,t,n,h,i,s,d]=e.map(Number),o=e[7]?Number((e[7]+"00").substr(1,3)):0;let l=Date.UTC(t,n-1,h,i||0,s||0,d||0,o);const r=e[8];if(r&&r!=="Z"){let a=vr(r,!1);Math.abs(a)<30&&(a*=60),l-=6e4*a}return new Date(l)},stringify:({value:m})=>(m==null?void 0:m.toISOString().replace(/(T00:00:00)?\.000Z$/,""))??""},vo=[Dn,$n,Yi,Qi,ka,Ta,Wd,jd,Hd,zd,Nd,Bd,Pd,pr,wt,fr,dr,mr,Ma,Ia,qi],yo=new Map([["core",Id],["failsafe",[Dn,$n,Yi]],["json",Rd],["yaml11",vo],["yaml-1.1",vo]]),bo={binary:pr,bool:hr,float:Ca,floatExp:wa,floatNaN:ba,floatTime:Ia,int:Aa,intHex:Da,intOct:Ea,intTime:Ma,map:Dn,merge:wt,null:Qi,omap:fr,pairs:dr,seq:$n,set:mr,timestamp:qi},Vd={"tag:yaml.org,2002:binary":pr,"tag:yaml.org,2002:merge":wt,"tag:yaml.org,2002:omap":fr,"tag:yaml.org,2002:pairs":dr,"tag:yaml.org,2002:set":mr,"tag:yaml.org,2002:timestamp":qi};function Ss(m,e,t){const n=yo.get(e);if(n&&!m)return t&&!n.includes(wt)?n.concat(wt):n.slice();let h=n;if(!h)if(Array.isArray(m))h=[];else{const i=Array.from(yo.keys()).filter(s=>s!=="yaml11").map(s=>JSON.stringify(s)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${i} or define customTags array`)}if(Array.isArray(m))for(const i of m)h=h.concat(i);else typeof m=="function"&&(h=m(h.slice()));return t&&(h=h.concat(wt)),h.reduce((i,s)=>{const d=typeof s=="string"?bo[s]:s;if(!d){const o=JSON.stringify(s),l=Object.keys(bo).map(r=>JSON.stringify(r)).join(", ");throw new Error(`Unknown custom tag ${o}; use one of ${l}`)}return i.includes(d)||i.push(d),i},[])}const Ud=(m,e)=>m.keye.key?1:0;class yr{constructor({compat:e,customTags:t,merge:n,resolveKnownTags:h,schema:i,sortMapEntries:s,toStringDefaults:d}){this.compat=Array.isArray(e)?Ss(e,"compat"):e?Ss(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=h?Vd:{},this.tags=Ss(t,this.name,n),this.toStringOptions=d??null,Object.defineProperty(this,kt,{value:Dn}),Object.defineProperty(this,ut,{value:Yi}),Object.defineProperty(this,En,{value:$n}),this.sortMapEntries=typeof s=="function"?s:s===!0?Ud:null}clone(){const e=Object.create(yr.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}}function Kd(m,e){var o;const t=[];let n=e.directives===!0;if(e.directives!==!1&&m.directives){const l=m.directives.toString(m);l?(t.push(l),n=!0):m.directives.docStart&&(n=!0)}n&&t.push("---");const h=fa(m,e),{commentString:i}=h.options;if(m.commentBefore){t.length!==1&&t.unshift("");const l=i(m.commentBefore);t.unshift(vt(l,""))}let s=!1,d=null;if(m.contents){if(Le(m.contents)){if(m.contents.spaceBefore&&n&&t.push(""),m.contents.commentBefore){const a=i(m.contents.commentBefore);t.push(vt(a,""))}h.forceBlockIndent=!!m.comment,d=m.contents.comment}const l=d?void 0:()=>s=!0;let r=wn(m.contents,h,()=>d=null,l);d&&(r+=Vt(r,"",i(d))),(r[0]==="|"||r[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${r}`:t.push(r)}else t.push(wn(m.contents,h));if((o=m.directives)!=null&&o.docEnd)if(m.comment){const l=i(m.comment);l.includes(` `)?(t.push("..."),t.push(vt(l,""))):t.push(`... ${l}`)}else t.push("...");else{let l=m.comment;l&&s&&(l=l.replace(/^\n+/,"")),l&&((!s||d)&&t[t.length-1]!==""&&t.push(""),t.push(vt(i(l),"")))}return t.join(` `)+` -`}class qi{constructor(e,t,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,qe,{value:Is});let u=null;typeof t=="function"||Array.isArray(t)?u=t:n===void 0&&t&&(n=t,t=void 0);const i=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},n);this.options=i;let{version:s}=i;n!=null&&n._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(s=this.directives.yaml.version)):this.directives=new We({version:s}),this.setSchema(s,n),this.contents=e===void 0?null:this.createNode(e,u,n)}clone(){const e=Object.create(qi.prototype,{[qe]:{value:Is}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=Le(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){ln(this.contents)&&this.contents.add(e)}addIn(e,t){ln(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){const n=oa(this);e.anchor=!t||n.has(t)?aa(t||"a",n):t}return new rr(e.anchor)}createNode(e,t,n){let u;if(typeof t=="function")e=t.call({"":e},"",e),u=t;else if(Array.isArray(t)){const g=b=>typeof b=="number"||b instanceof String||b instanceof Number,v=t.filter(g).map(String);v.length>0&&(t=t.concat(v)),u=t}else n===void 0&&t&&(n=t,t=void 0);const{aliasDuplicateObjects:i,anchorPrefix:s,flow:d,keepUndefined:o,onTagObj:l,tag:r}=n??{},{onAnchor:a,setAnchors:c,sourceObjects:p}=vd(this,s||"a"),h={aliasDuplicateObjects:i??!0,keepUndefined:o??!1,onAnchor:a,onTagObj:l,replacer:u,schema:this.schema,sourceObjects:p},f=Yn(e,r,h);return d&&ke(f)&&(f.flow=!0),c(),f}createPair(e,t,n={}){const u=this.createNode(e,null,n),i=this.createNode(t,null,n);return new ze(u,i)}delete(e){return ln(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Nn(e)?this.contents==null?!1:(this.contents=null,!0):ln(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return ke(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return Nn(e)?!t&&ye(this.contents)?this.contents.value:this.contents:ke(this.contents)?this.contents.getIn(e,t):void 0}has(e){return ke(this.contents)?this.contents.has(e):!1}hasIn(e){return Nn(e)?this.contents!==void 0:ke(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=Ni(this.schema,[e],t):ln(this.contents)&&this.contents.set(e,t)}setIn(e,t){Nn(e)?this.contents=t:this.contents==null?this.contents=Ni(this.schema,Array.from(e),t):ln(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let n;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new We({version:"1.1"}),n={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new We({version:e}),n={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,n=null;break;default:{const u=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${u}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(n)this.schema=new mr(Object.assign(n,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:n,maxAliasCount:u,onAnchor:i,reviver:s}={}){const d={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof u=="number"?u:100},o=Ze(this.contents,t??"",d);if(typeof i=="function")for(const{count:l,res:r}of d.anchors.values())i(r,l);return typeof s=="function"?pn(s,{"":o},"",o):o}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){const t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return Hd(this,e)}}function ln(m){if(ke(m))return!0;throw new Error("Expected a YAML collection as document contents")}class La extends Error{constructor(e,t,n,u){super(),this.name=e,this.code=n,this.message=u,this.pos=t}}class Bn extends La{constructor(e,t,n){super("YAMLParseError",e,t,n)}}class Vd extends La{constructor(e,t,n){super("YAMLWarning",e,t,n)}}const vo=(m,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(d=>e.linePos(d));const{line:n,col:u}=t.linePos[0];t.message+=` at line ${n}, column ${u}`;let i=u-1,s=m.substring(e.lineStarts[n-1],e.lineStarts[n]).replace(/[\n\r]+$/,"");if(i>=60&&s.length>80){const d=Math.min(i-39,s.length-79);s="…"+s.substring(d),i-=d-1}if(s.length>80&&(s=s.substring(0,79)+"…"),n>1&&/^ *$/.test(s.substring(0,i))){let d=m.substring(e.lineStarts[n-2],e.lineStarts[n-1]);d.length>80&&(d=d.substring(0,79)+`… -`),s=d+s}if(/[^ ]/.test(s)){let d=1;const o=t.linePos[1];(o==null?void 0:o.line)===n&&o.col>u&&(d=Math.max(1,Math.min(o.col-u,80-i)));const l=" ".repeat(i)+"^".repeat(d);t.message+=`: +`}class es{constructor(e,t,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,qe,{value:Os});let h=null;typeof t=="function"||Array.isArray(t)?h=t:n===void 0&&t&&(n=t,t=void 0);const i=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},n);this.options=i;let{version:s}=i;n!=null&&n._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(s=this.directives.yaml.version)):this.directives=new We({version:s}),this.setSchema(s,n),this.contents=e===void 0?null:this.createNode(e,h,n)}clone(){const e=Object.create(es.prototype,{[qe]:{value:Os}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=Le(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){ln(this.contents)&&this.contents.add(e)}addIn(e,t){ln(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){const n=ca(this);e.anchor=!t||n.has(t)?ha(t||"a",n):t}return new ar(e.anchor)}createNode(e,t,n){let h;if(typeof t=="function")e=t.call({"":e},"",e),h=t;else if(Array.isArray(t)){const g=b=>typeof b=="number"||b instanceof String||b instanceof Number,v=t.filter(g).map(String);v.length>0&&(t=t.concat(v)),h=t}else n===void 0&&t&&(n=t,t=void 0);const{aliasDuplicateObjects:i,anchorPrefix:s,flow:d,keepUndefined:o,onTagObj:l,tag:r}=n??{},{onAnchor:a,setAnchors:c,sourceObjects:p}=wd(this,s||"a"),u={aliasDuplicateObjects:i??!0,keepUndefined:o??!1,onAnchor:a,onTagObj:l,replacer:h,schema:this.schema,sourceObjects:p},f=Yn(e,r,u);return d&&Te(f)&&(f.flow=!0),c(),f}createPair(e,t,n={}){const h=this.createNode(e,null,n),i=this.createNode(t,null,n);return new He(h,i)}delete(e){return ln(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Nn(e)?this.contents==null?!1:(this.contents=null,!0):ln(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return Te(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return Nn(e)?!t&&ye(this.contents)?this.contents.value:this.contents:Te(this.contents)?this.contents.getIn(e,t):void 0}has(e){return Te(this.contents)?this.contents.has(e):!1}hasIn(e){return Nn(e)?this.contents!==void 0:Te(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=Bi(this.schema,[e],t):ln(this.contents)&&this.contents.set(e,t)}setIn(e,t){Nn(e)?this.contents=t:this.contents==null?this.contents=Bi(this.schema,Array.from(e),t):ln(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let n;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new We({version:"1.1"}),n={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new We({version:e}),n={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,n=null;break;default:{const h=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${h}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(n)this.schema=new yr(Object.assign(n,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:n,maxAliasCount:h,onAnchor:i,reviver:s}={}){const d={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof h=="number"?h:100},o=Ze(this.contents,t??"",d);if(typeof i=="function")for(const{count:l,res:r}of d.anchors.values())i(r,l);return typeof s=="function"?pn(s,{"":o},"",o):o}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){const t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return Kd(this,e)}}function ln(m){if(Te(m))return!0;throw new Error("Expected a YAML collection as document contents")}class Oa extends Error{constructor(e,t,n,h){super(),this.name=e,this.code=n,this.message=h,this.pos=t}}class Bn extends Oa{constructor(e,t,n){super("YAMLParseError",e,t,n)}}class Gd extends Oa{constructor(e,t,n){super("YAMLWarning",e,t,n)}}const wo=(m,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(d=>e.linePos(d));const{line:n,col:h}=t.linePos[0];t.message+=` at line ${n}, column ${h}`;let i=h-1,s=m.substring(e.lineStarts[n-1],e.lineStarts[n]).replace(/[\n\r]+$/,"");if(i>=60&&s.length>80){const d=Math.min(i-39,s.length-79);s="…"+s.substring(d),i-=d-1}if(s.length>80&&(s=s.substring(0,79)+"…"),n>1&&/^ *$/.test(s.substring(0,i))){let d=m.substring(e.lineStarts[n-2],e.lineStarts[n-1]);d.length>80&&(d=d.substring(0,79)+`… +`),s=d+s}if(/[^ ]/.test(s)){let d=1;const o=t.linePos[1];(o==null?void 0:o.line)===n&&o.col>h&&(d=Math.max(1,Math.min(o.col-h,80-i)));const l=" ".repeat(i)+"^".repeat(d);t.message+=`: ${s} ${l} -`}};function Cn(m,{flow:e,indicator:t,next:n,offset:u,onError:i,parentIndent:s,startOnNewline:d}){let o=!1,l=d,r=d,a="",c="",p=!1,h=!1,f=null,g=null,v=null,b=null,D=null,E=null,w=null;for(const T of m)switch(h&&(T.type!=="space"&&T.type!=="newline"&&T.type!=="comma"&&i(T.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),h=!1),f&&(l&&T.type!=="comment"&&T.type!=="newline"&&i(f,"TAB_AS_INDENT","Tabs are not allowed as indentation"),f=null),T.type){case"space":!e&&(t!=="doc-start"||(n==null?void 0:n.type)!=="flow-collection")&&T.source.includes(" ")&&(f=T),r=!0;break;case"comment":{r||i(T,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");const $=T.source.substring(1)||" ";a?a+=c+$:a=$,c="",l=!1;break}case"newline":l?a?a+=T.source:(!E||t!=="seq-item-ind")&&(o=!0):c+=T.source,l=!0,p=!0,(g||v)&&(b=T),r=!0;break;case"anchor":g&&i(T,"MULTIPLE_ANCHORS","A node can have at most one anchor"),T.source.endsWith(":")&&i(T.offset+T.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),g=T,w??(w=T.offset),l=!1,r=!1,h=!0;break;case"tag":{v&&i(T,"MULTIPLE_TAGS","A node can have at most one tag"),v=T,w??(w=T.offset),l=!1,r=!1,h=!0;break}case t:(g||v)&&i(T,"BAD_PROP_ORDER",`Anchors and tags must be after the ${T.source} indicator`),E&&i(T,"UNEXPECTED_TOKEN",`Unexpected ${T.source} in ${e??"collection"}`),E=T,l=t==="seq-item-ind"||t==="explicit-key-ind",r=!1;break;case"comma":if(e){D&&i(T,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),D=T,l=!1,r=!1;break}default:i(T,"UNEXPECTED_TOKEN",`Unexpected ${T.type} token`),l=!1,r=!1}const y=m[m.length-1],A=y?y.offset+y.source.length:u;return h&&n&&n.type!=="space"&&n.type!=="newline"&&n.type!=="comma"&&(n.type!=="scalar"||n.source!=="")&&i(n.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),f&&(l&&f.indent<=s||(n==null?void 0:n.type)==="block-map"||(n==null?void 0:n.type)==="block-seq")&&i(f,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:D,found:E,spaceBefore:o,comment:a,hasNewline:p,anchor:g,tag:v,newlineAfterProp:b,end:A,start:w??A}}function Qn(m){if(!m)return null;switch(m.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(m.source.includes(` -`))return!0;if(m.end){for(const e of m.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(const e of m.items){for(const t of e.start)if(t.type==="newline")return!0;if(e.sep){for(const t of e.sep)if(t.type==="newline")return!0}if(Qn(e.key)||Qn(e.value))return!0}return!1;default:return!0}}function Ns(m,e,t){if((e==null?void 0:e.type)==="flow-collection"){const n=e.end[0];n.indent===m&&(n.source==="]"||n.source==="}")&&Qn(e)&&t(n,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function Ma(m,e,t){const{uniqueKeys:n}=m.options;if(n===!1)return!1;const u=typeof n=="function"?n:(i,s)=>i===s||ye(i)&&ye(s)&&i.value===s.value;return e.some(i=>u(i.key,t))}const yo="All mapping items must start at the same column";function Ud({composeNode:m,composeEmptyNode:e},t,n,u,i){var r;const s=(i==null?void 0:i.nodeClass)??Xe,d=new s(t.schema);t.atRoot&&(t.atRoot=!1);let o=n.offset,l=null;for(const a of n.items){const{start:c,key:p,sep:h,value:f}=a,g=Cn(c,{indicator:"explicit-key-ind",next:p??(h==null?void 0:h[0]),offset:o,onError:u,parentIndent:n.indent,startOnNewline:!0}),v=!g.found;if(v){if(p&&(p.type==="block-seq"?u(o,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in p&&p.indent!==n.indent&&u(o,"BAD_INDENT",yo)),!g.anchor&&!g.tag&&!h){l=g.end,g.comment&&(d.comment?d.comment+=` -`+g.comment:d.comment=g.comment);continue}(g.newlineAfterProp||Qn(p))&&u(p??c[c.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else((r=g.found)==null?void 0:r.indent)!==n.indent&&u(o,"BAD_INDENT",yo);t.atKey=!0;const b=g.end,D=p?m(t,p,g,u):e(t,b,c,null,g,u);t.schema.compat&&Ns(n.indent,p,u),t.atKey=!1,Ma(t,d.items,D)&&u(b,"DUPLICATE_KEY","Map keys must be unique");const E=Cn(h??[],{indicator:"map-value-ind",next:f,offset:D.range[2],onError:u,parentIndent:n.indent,startOnNewline:!p||p.type==="block-scalar"});if(o=E.end,E.found){v&&((f==null?void 0:f.type)==="block-map"&&!E.hasNewline&&u(o,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&g.startm&&(m.type==="block-map"||m.type==="block-seq");function Gd({composeNode:m,composeEmptyNode:e},t,n,u,i){var g;const s=n.start.source==="{",d=s?"flow map":"flow sequence",o=(i==null?void 0:i.nodeClass)??(s?Xe:Xt),l=new o(t.schema);l.flow=!0;const r=t.atRoot;r&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let a=n.offset+n.start.source.length;for(let v=0;v0){const v=ti(h,f,t.options.strict,u);v.comment&&(l.comment?l.comment+=` -`+v.comment:l.comment=v.comment),l.range=[n.offset,f,v.offset]}else l.range=[n.offset,f,f];return l}function As(m,e,t,n,u,i){const s=t.type==="block-map"?Ud(m,e,t,n,i):t.type==="block-seq"?Kd(m,e,t,n,i):Gd(m,e,t,n,i),d=s.constructor;return u==="!"||u===d.tagName?(s.tag=d.tagName,s):(u&&(s.tag=u),s)}function Jd(m,e,t,n,u){var c;const i=n.tag,s=i?e.directives.tagName(i.source,p=>u(i,"TAG_RESOLVE_FAILED",p)):null;if(t.type==="block-seq"){const{anchor:p,newlineAfterProp:h}=n,f=p&&i?p.offset>i.offset?p:i:p??i;f&&(!h||h.offsetp.tag===s&&p.collection===d);if(!o){const p=e.schema.knownTags[s];if((p==null?void 0:p.collection)===d)e.schema.tags.push(Object.assign({},p,{default:!1})),o=p;else return p?u(i,"BAD_COLLECTION_TYPE",`${p.tag} used for ${d} collection, but expects ${p.collection??"scalar"}`,!0):u(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${s}`,!0),As(m,e,t,u,s)}const l=As(m,e,t,u,s,o),r=((c=o.resolve)==null?void 0:c.call(o,l,p=>u(i,"TAG_RESOLVE_FAILED",p),e.options))??l,a=Le(r)?r:new ae(r);return a.range=l.range,a.tag=s,o!=null&&o.format&&(a.format=o.format),a}function Yd(m,e,t){const n=e.offset,u=Qd(e,m.options.strict,t);if(!u)return{value:"",type:null,comment:"",range:[n,n,n]};const i=u.mode===">"?ae.BLOCK_FOLDED:ae.BLOCK_LITERAL,s=e.source?Xd(e.source):[];let d=s.length;for(let f=s.length-1;f>=0;--f){const g=s[f][1];if(g===""||g==="\r")d=f;else break}if(d===0){const f=u.chomp==="+"&&s.length>0?` -`.repeat(Math.max(1,s.length-1)):"";let g=n+u.length;return e.source&&(g+=e.source.length),{value:f,type:i,comment:u.comment,range:[n,g,g]}}let o=e.indent+u.indent,l=e.offset+u.length,r=0;for(let f=0;fo&&(o=g.length);else{g.length=d;--f)s[f][0].length>o&&(d=f+1);let a="",c="",p=!1;for(let f=0;fi===s||ye(i)&&ye(s)&&i.value===s.value;return e.some(i=>h(i.key,t))}const Co="All mapping items must start at the same column";function Jd({composeNode:m,composeEmptyNode:e},t,n,h,i){var r;const s=(i==null?void 0:i.nodeClass)??Xe,d=new s(t.schema);t.atRoot&&(t.atRoot=!1);let o=n.offset,l=null;for(const a of n.items){const{start:c,key:p,sep:u,value:f}=a,g=Cn(c,{indicator:"explicit-key-ind",next:p??(u==null?void 0:u[0]),offset:o,onError:h,parentIndent:n.indent,startOnNewline:!0}),v=!g.found;if(v){if(p&&(p.type==="block-seq"?h(o,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in p&&p.indent!==n.indent&&h(o,"BAD_INDENT",Co)),!g.anchor&&!g.tag&&!u){l=g.end,g.comment&&(d.comment?d.comment+=` +`+g.comment:d.comment=g.comment);continue}(g.newlineAfterProp||Qn(p))&&h(p??c[c.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else((r=g.found)==null?void 0:r.indent)!==n.indent&&h(o,"BAD_INDENT",Co);t.atKey=!0;const b=g.end,D=p?m(t,p,g,h):e(t,b,c,null,g,h);t.schema.compat&&Bs(n.indent,p,h),t.atKey=!1,Fa(t,d.items,D)&&h(b,"DUPLICATE_KEY","Map keys must be unique");const E=Cn(u??[],{indicator:"map-value-ind",next:f,offset:D.range[2],onError:h,parentIndent:n.indent,startOnNewline:!p||p.type==="block-scalar"});if(o=E.end,E.found){v&&((f==null?void 0:f.type)==="block-map"&&!E.hasNewline&&h(o,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&g.startm&&(m.type==="block-map"||m.type==="block-seq");function Qd({composeNode:m,composeEmptyNode:e},t,n,h,i){var g;const s=n.start.source==="{",d=s?"flow map":"flow sequence",o=(i==null?void 0:i.nodeClass)??(s?Xe:Xt),l=new o(t.schema);l.flow=!0;const r=t.atRoot;r&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let a=n.offset+n.start.source.length;for(let v=0;v0){const v=ti(u,f,t.options.strict,h);v.comment&&(l.comment?l.comment+=` +`+v.comment:l.comment=v.comment),l.range=[n.offset,f,v.offset]}else l.range=[n.offset,f,f];return l}function Ds(m,e,t,n,h,i){const s=t.type==="block-map"?Jd(m,e,t,n,i):t.type==="block-seq"?Yd(m,e,t,n,i):Qd(m,e,t,n,i),d=s.constructor;return h==="!"||h===d.tagName?(s.tag=d.tagName,s):(h&&(s.tag=h),s)}function Xd(m,e,t,n,h){var c;const i=n.tag,s=i?e.directives.tagName(i.source,p=>h(i,"TAG_RESOLVE_FAILED",p)):null;if(t.type==="block-seq"){const{anchor:p,newlineAfterProp:u}=n,f=p&&i?p.offset>i.offset?p:i:p??i;f&&(!u||u.offsetp.tag===s&&p.collection===d);if(!o){const p=e.schema.knownTags[s];if((p==null?void 0:p.collection)===d)e.schema.tags.push(Object.assign({},p,{default:!1})),o=p;else return p?h(i,"BAD_COLLECTION_TYPE",`${p.tag} used for ${d} collection, but expects ${p.collection??"scalar"}`,!0):h(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${s}`,!0),Ds(m,e,t,h,s)}const l=Ds(m,e,t,h,s,o),r=((c=o.resolve)==null?void 0:c.call(o,l,p=>h(i,"TAG_RESOLVE_FAILED",p),e.options))??l,a=Le(r)?r:new ae(r);return a.range=l.range,a.tag=s,o!=null&&o.format&&(a.format=o.format),a}function Zd(m,e,t){const n=e.offset,h=qd(e,m.options.strict,t);if(!h)return{value:"",type:null,comment:"",range:[n,n,n]};const i=h.mode===">"?ae.BLOCK_FOLDED:ae.BLOCK_LITERAL,s=e.source?ef(e.source):[];let d=s.length;for(let f=s.length-1;f>=0;--f){const g=s[f][1];if(g===""||g==="\r")d=f;else break}if(d===0){const f=h.chomp==="+"&&s.length>0?` +`.repeat(Math.max(1,s.length-1)):"";let g=n+h.length;return e.source&&(g+=e.source.length),{value:f,type:i,comment:h.comment,range:[n,g,g]}}let o=e.indent+h.indent,l=e.offset+h.length,r=0;for(let f=0;fo&&(o=g.length);else{g.length=d;--f)s[f][0].length>o&&(d=f+1);let a="",c="",p=!1;for(let f=0;fo||v[0]===" "?(c===" "?c=` `:!p&&c===` `&&(c=` @@ -1469,55 +1469,55 @@ ${l} `,p=!0):v===""?c===` `?a+=` `:c=` -`:(a+=c+v,c=" ",p=!1)}switch(u.chomp){case"-":break;case"+":for(let f=d;ft(n+c,p,h);switch(u){case"scalar":d=ae.PLAIN,o=qd(i,l);break;case"single-quoted-scalar":d=ae.QUOTE_SINGLE,o=ef(i,l);break;case"double-quoted-scalar":d=ae.QUOTE_DOUBLE,o=tf(i,l);break;default:return t(m,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${u}`),{value:"",type:null,comment:"",range:[n,n+i.length,n+i.length]}}const r=n+i.length,a=ti(s,r,e,t);return{value:o,type:d,comment:a.comment,range:[n,r,a.offset]}}function qd(m,e){let t="";switch(m[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${m[0]}`;break}case"@":case"`":{t=`reserved character ${m[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),Ia(m)}function ef(m,e){return(m[m.length-1]!=="'"||m.length===1)&&e(m.length,"MISSING_CHAR","Missing closing 'quote"),Ia(m.slice(1,-1)).replace(/''/g,"'")}function Ia(m){let e,t;try{e=new RegExp(`(.*?)(?t(n+c,p,u);switch(h){case"scalar":d=ae.PLAIN,o=nf(i,l);break;case"single-quoted-scalar":d=ae.QUOTE_SINGLE,o=sf(i,l);break;case"double-quoted-scalar":d=ae.QUOTE_DOUBLE,o=rf(i,l);break;default:return t(m,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${h}`),{value:"",type:null,comment:"",range:[n,n+i.length,n+i.length]}}const r=n+i.length,a=ti(s,r,e,t);return{value:o,type:d,comment:a.comment,range:[n,r,a.offset]}}function nf(m,e){let t="";switch(m[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${m[0]}`;break}case"@":case"`":{t=`reserved character ${m[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),Ra(m)}function sf(m,e){return(m[m.length-1]!=="'"||m.length===1)&&e(m.length,"MISSING_CHAR","Missing closing 'quote"),Ra(m.slice(1,-1)).replace(/''/g,"'")}function Ra(m){let e,t;try{e=new RegExp(`(.*?)(?i?m.slice(i,n+1):u)}else t+=u}return(m[m.length-1]!=='"'||m.length===1)&&e(m.length,"MISSING_CHAR",'Missing closing "quote'),t}function nf(m,e){let t="",n=m[e+1];for(;(n===" "||n===" "||n===` +`)&&(t+=n>i?m.slice(i,n+1):h)}else t+=h}return(m[m.length-1]!=='"'||m.length===1)&&e(m.length,"MISSING_CHAR",'Missing closing "quote'),t}function of(m,e){let t="",n=m[e+1];for(;(n===" "||n===" "||n===` `||n==="\r")&&!(n==="\r"&&m[e+2]!==` `);)n===` `&&(t+=` -`),e+=1,n=m[e+1];return t||(t=" "),{fold:t,offset:e}}const sf={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:` -`,r:"\r",t:" ",v:"\v",N:"…",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function rf(m,e,t,n){const u=m.substr(e,t),s=u.length===t&&/^[0-9a-fA-F]+$/.test(u)?parseInt(u,16):NaN;if(isNaN(s)){const d=m.substr(e-2,t+2);return n(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${d}`),d}return String.fromCodePoint(s)}function Oa(m,e,t,n){const{value:u,type:i,comment:s,range:d}=e.type==="block-scalar"?Yd(m,e,n):Zd(e,m.options.strict,n),o=t?m.directives.tagName(t.source,a=>n(t,"TAG_RESOLVE_FAILED",a)):null;let l;m.options.stringKeys&&m.atKey?l=m.schema[ut]:o?l=of(m.schema,u,o,t,n):e.type==="scalar"?l=af(m,u,e,n):l=m.schema[ut];let r;try{const a=l.resolve(u,c=>n(t??e,"TAG_RESOLVE_FAILED",c),m.options);r=ye(a)?a:new ae(a)}catch(a){const c=a instanceof Error?a.message:String(a);n(t??e,"TAG_RESOLVE_FAILED",c),r=new ae(u)}return r.range=d,r.source=u,i&&(r.type=i),o&&(r.tag=o),l.format&&(r.format=l.format),s&&(r.comment=s),r}function of(m,e,t,n,u){var d;if(t==="!")return m[ut];const i=[];for(const o of m.tags)if(!o.collection&&o.tag===t)if(o.default&&o.test)i.push(o);else return o;for(const o of i)if((d=o.test)!=null&&d.test(e))return o;const s=m.knownTags[t];return s&&!s.collection?(m.tags.push(Object.assign({},s,{default:!1,test:void 0})),s):(u(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),m[ut])}function af({atKey:m,directives:e,schema:t},n,u,i){const s=t.tags.find(d=>{var o;return(d.default===!0||m&&d.default==="key")&&((o=d.test)==null?void 0:o.test(n))})||t[ut];if(t.compat){const d=t.compat.find(o=>{var l;return o.default&&((l=o.test)==null?void 0:l.test(n))})??t[ut];if(s.tag!==d.tag){const o=e.tagString(s.tag),l=e.tagString(d.tag),r=`Value may be parsed as either ${o} or ${l}`;i(u,"TAG_RESOLVE_FAILED",r,!0)}}return s}function lf(m,e,t){if(e){t??(t=e.length);for(let n=t-1;n>=0;--n){let u=e[n];switch(u.type){case"space":case"comment":case"newline":m-=u.source.length;continue}for(u=e[++n];(u==null?void 0:u.type)==="space";)m+=u.source.length,u=e[++n];break}}return m}const cf={composeNode:Fa,composeEmptyNode:vr};function Fa(m,e,t,n){const u=m.atKey,{spaceBefore:i,comment:s,anchor:d,tag:o}=t;let l,r=!0;switch(e.type){case"alias":l=hf(m,e,n),(d||o)&&n(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=Oa(m,e,o,n),d&&(l.anchor=d.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{l=Jd(cf,m,e,t,n),d&&(l.anchor=d.source.substring(1))}catch(a){const c=a instanceof Error?a.message:String(a);n(e,"RESOURCE_EXHAUSTION",c)}break;default:{const a=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;n(e,"UNEXPECTED_TOKEN",a),r=!1}}return l??(l=vr(m,e.offset,void 0,null,t,n)),d&&l.anchor===""&&n(d,"BAD_ALIAS","Anchor cannot be an empty string"),u&&m.options.stringKeys&&(!ye(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&n(o??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),i&&(l.spaceBefore=!0),s&&(e.type==="scalar"&&e.source===""?l.comment=s:l.commentBefore=s),m.options.keepSourceTokens&&r&&(l.srcToken=e),l}function vr(m,e,t,n,{spaceBefore:u,comment:i,anchor:s,tag:d,end:o},l){const r={type:"scalar",offset:lf(e,t,n),indent:-1,source:""},a=Oa(m,r,d,l);return s&&(a.anchor=s.source.substring(1),a.anchor===""&&l(s,"BAD_ALIAS","Anchor cannot be an empty string")),u&&(a.spaceBefore=!0),i&&(a.comment=i,a.range[2]=o),a}function hf({options:m},{offset:e,source:t,end:n},u){const i=new rr(t.substring(1));i.source===""&&u(e,"BAD_ALIAS","Alias cannot be an empty string"),i.source.endsWith(":")&&u(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);const s=e+t.length,d=ti(n,s,m.strict,u);return i.range=[e,s,d.offset],d.comment&&(i.comment=d.comment),i}function uf(m,e,{offset:t,start:n,value:u,end:i},s){const d=Object.assign({_directives:e},m),o=new qi(void 0,d),l={atKey:!1,atRoot:!0,directives:o.directives,options:o.options,schema:o.schema},r=Cn(n,{indicator:"doc-start",next:u??(i==null?void 0:i[0]),offset:t,onError:s,parentIndent:0,startOnNewline:!0});r.found&&(o.directives.docStart=!0,u&&(u.type==="block-map"||u.type==="block-seq")&&!r.hasNewline&&s(r.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),o.contents=u?Fa(l,u,r,s):vr(l,r.end,n,null,r,s);const a=o.contents.range[2],c=ti(i,a,!1,s);return c.comment&&(o.comment=c.comment),o.range=[t,a,c.offset],o}function Mn(m){if(typeof m=="number")return[m,m+1];if(Array.isArray(m))return m.length===2?m:[m[0],m[1]];const{offset:e,source:t}=m;return[e,e+(typeof t=="string"?t.length:1)]}function bo(m){var u;let e="",t=!1,n=!1;for(let i=0;in(t,"TAG_RESOLVE_FAILED",a)):null;let l;m.options.stringKeys&&m.atKey?l=m.schema[ut]:o?l=cf(m.schema,h,o,t,n):e.type==="scalar"?l=hf(m,h,e,n):l=m.schema[ut];let r;try{const a=l.resolve(h,c=>n(t??e,"TAG_RESOLVE_FAILED",c),m.options);r=ye(a)?a:new ae(a)}catch(a){const c=a instanceof Error?a.message:String(a);n(t??e,"TAG_RESOLVE_FAILED",c),r=new ae(h)}return r.range=d,r.source=h,i&&(r.type=i),o&&(r.tag=o),l.format&&(r.format=l.format),s&&(r.comment=s),r}function cf(m,e,t,n,h){var d;if(t==="!")return m[ut];const i=[];for(const o of m.tags)if(!o.collection&&o.tag===t)if(o.default&&o.test)i.push(o);else return o;for(const o of i)if((d=o.test)!=null&&d.test(e))return o;const s=m.knownTags[t];return s&&!s.collection?(m.tags.push(Object.assign({},s,{default:!1,test:void 0})),s):(h(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),m[ut])}function hf({atKey:m,directives:e,schema:t},n,h,i){const s=t.tags.find(d=>{var o;return(d.default===!0||m&&d.default==="key")&&((o=d.test)==null?void 0:o.test(n))})||t[ut];if(t.compat){const d=t.compat.find(o=>{var l;return o.default&&((l=o.test)==null?void 0:l.test(n))})??t[ut];if(s.tag!==d.tag){const o=e.tagString(s.tag),l=e.tagString(d.tag),r=`Value may be parsed as either ${o} or ${l}`;i(h,"TAG_RESOLVE_FAILED",r,!0)}}return s}function uf(m,e,t){if(e){t??(t=e.length);for(let n=t-1;n>=0;--n){let h=e[n];switch(h.type){case"space":case"comment":case"newline":m-=h.source.length;continue}for(h=e[++n];(h==null?void 0:h.type)==="space";)m+=h.source.length,h=e[++n];break}}return m}const pf={composeNode:Ba,composeEmptyNode:br};function Ba(m,e,t,n){const h=m.atKey,{spaceBefore:i,comment:s,anchor:d,tag:o}=t;let l,r=!0;switch(e.type){case"alias":l=df(m,e,n),(d||o)&&n(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=Na(m,e,o,n),d&&(l.anchor=d.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{l=Xd(pf,m,e,t,n),d&&(l.anchor=d.source.substring(1))}catch(a){const c=a instanceof Error?a.message:String(a);n(e,"RESOURCE_EXHAUSTION",c)}break;default:{const a=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;n(e,"UNEXPECTED_TOKEN",a),r=!1}}return l??(l=br(m,e.offset,void 0,null,t,n)),d&&l.anchor===""&&n(d,"BAD_ALIAS","Anchor cannot be an empty string"),h&&m.options.stringKeys&&(!ye(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&n(o??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),i&&(l.spaceBefore=!0),s&&(e.type==="scalar"&&e.source===""?l.comment=s:l.commentBefore=s),m.options.keepSourceTokens&&r&&(l.srcToken=e),l}function br(m,e,t,n,{spaceBefore:h,comment:i,anchor:s,tag:d,end:o},l){const r={type:"scalar",offset:uf(e,t,n),indent:-1,source:""},a=Na(m,r,d,l);return s&&(a.anchor=s.source.substring(1),a.anchor===""&&l(s,"BAD_ALIAS","Anchor cannot be an empty string")),h&&(a.spaceBefore=!0),i&&(a.comment=i,a.range[2]=o),a}function df({options:m},{offset:e,source:t,end:n},h){const i=new ar(t.substring(1));i.source===""&&h(e,"BAD_ALIAS","Alias cannot be an empty string"),i.source.endsWith(":")&&h(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);const s=e+t.length,d=ti(n,s,m.strict,h);return i.range=[e,s,d.offset],d.comment&&(i.comment=d.comment),i}function ff(m,e,{offset:t,start:n,value:h,end:i},s){const d=Object.assign({_directives:e},m),o=new es(void 0,d),l={atKey:!1,atRoot:!0,directives:o.directives,options:o.options,schema:o.schema},r=Cn(n,{indicator:"doc-start",next:h??(i==null?void 0:i[0]),offset:t,onError:s,parentIndent:0,startOnNewline:!0});r.found&&(o.directives.docStart=!0,h&&(h.type==="block-map"||h.type==="block-seq")&&!r.hasNewline&&s(r.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),o.contents=h?Ba(l,h,r,s):br(l,r.end,n,null,r,s);const a=o.contents.range[2],c=ti(i,a,!1,s);return c.comment&&(o.comment=c.comment),o.range=[t,a,c.offset],o}function Mn(m){if(typeof m=="number")return[m,m+1];if(Array.isArray(m))return m.length===2?m:[m[0],m[1]];const{offset:e,source:t}=m;return[e,e+(typeof t=="string"?t.length:1)]}function So(m){var h;let e="",t=!1,n=!1;for(let i=0;i{const s=Mn(t);i?this.warnings.push(new Vd(s,n,u)):this.errors.push(new Bn(s,n,u))},this.directives=new We({version:e.version||"1.2"}),this.options=e}decorate(e,t){const{comment:n,afterEmptyLine:u}=bo(this.prelude);if(n){const i=e.contents;if(t)e.comment=e.comment?`${e.comment} -${n}`:n;else if(u||e.directives.docStart||!i)e.commentBefore=n;else if(ke(i)&&!i.flow&&i.items.length>0){let s=i.items[0];Me(s)&&(s=s.key);const d=s.commentBefore;s.commentBefore=d?`${n} +`)+(s.substring(1)||" "),t=!0,n=!1;break;case"%":((h=m[i+1])==null?void 0:h[0])!=="#"&&(i+=1),t=!1;break;default:t||(n=!0),t=!1}}return{comment:e,afterEmptyLine:n}}class gf{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(t,n,h,i)=>{const s=Mn(t);i?this.warnings.push(new Gd(s,n,h)):this.errors.push(new Bn(s,n,h))},this.directives=new We({version:e.version||"1.2"}),this.options=e}decorate(e,t){const{comment:n,afterEmptyLine:h}=So(this.prelude);if(n){const i=e.contents;if(t)e.comment=e.comment?`${e.comment} +${n}`:n;else if(h||e.directives.docStart||!i)e.commentBefore=n;else if(Te(i)&&!i.flow&&i.items.length>0){let s=i.items[0];Me(s)&&(s=s.key);const d=s.commentBefore;s.commentBefore=d?`${n} ${d}`:n}else{const s=i.commentBefore;i.commentBefore=s?`${n} -${s}`:n}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:bo(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,n=-1){for(const u of e)yield*this.next(u);yield*this.end(t,n)}*next(e){switch(e.type){case"directive":this.directives.add(e.source,(t,n,u)=>{const i=Mn(e);i[0]+=t,this.onError(i,"BAD_DIRECTIVE",n,u)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{const t=uf(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{const t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new Bn(Mn(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case"doc-end":{if(!this.doc){const n="Unexpected doc-end without preceding document";this.errors.push(new Bn(Mn(e),"UNEXPECTED_TOKEN",n));break}this.doc.directives.docEnd=!0;const t=ti(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){const n=this.doc.comment;this.doc.comment=n?`${n} -${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Bn(Mn(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){const n=Object.assign({_directives:this.directives},this.options),u=new qi(void 0,n);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),u.range=[0,t,t],this.decorate(u,!1),yield u}}}const Ra="\uFEFF",Na="",Ba="",Bs="";function df(m){switch(m){case Ra:return"byte-order-mark";case Na:return"doc-mode";case Ba:return"flow-error-end";case Bs:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case` +${s}`:n}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:So(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,n=-1){for(const h of e)yield*this.next(h);yield*this.end(t,n)}*next(e){switch(e.type){case"directive":this.directives.add(e.source,(t,n,h)=>{const i=Mn(e);i[0]+=t,this.onError(i,"BAD_DIRECTIVE",n,h)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{const t=ff(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{const t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new Bn(Mn(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case"doc-end":{if(!this.doc){const n="Unexpected doc-end without preceding document";this.errors.push(new Bn(Mn(e),"UNEXPECTED_TOKEN",n));break}this.doc.directives.docEnd=!0;const t=ti(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){const n=this.doc.comment;this.doc.comment=n?`${n} +${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Bn(Mn(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){const n=Object.assign({_directives:this.directives},this.options),h=new es(void 0,n);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),h.range=[0,t,t],this.decorate(h,!1),yield h}}}const Pa="\uFEFF",Wa="",ja="",Ps="";function mf(m){switch(m){case Pa:return"byte-order-mark";case Wa:return"doc-mode";case ja:return"flow-error-end";case Ps:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case` `:case`\r `:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(m[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}function it(m){switch(m){case void 0:case" ":case` -`:case"\r":case" ":return!0;default:return!1}}const wo=new Set("0123456789ABCDEFabcdef"),ff=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),wi=new Set(",[]{}"),gf=new Set(` ,[]{} -\r `),Ds=m=>!m||gf.has(m);class mf{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let n=this.next??"stream";for(;n&&(t||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===` +`:case"\r":case" ":return!0;default:return!1}}const Eo=new Set("0123456789ABCDEFabcdef"),vf=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),Ci=new Set(",[]{}"),yf=new Set(` ,[]{} +\r `),$s=m=>!m||yf.has(m);class bf{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let n=this.next??"stream";for(;n&&(t||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===` `?!0:t==="\r"?this.buffer[e+1]===` -`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let n=0;for(;t===" ";)t=this.buffer[++n+e];if(t==="\r"){const u=this.buffer[n+e+1];if(u===` -`||!u&&!this.atEnd)return e+n+1}return t===` +`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let n=0;for(;t===" ";)t=this.buffer[++n+e];if(t==="\r"){const h=this.buffer[n+e+1];if(h===` +`||!h&&!this.atEnd)return e+n+1}return t===` `||n>=this.indentNext||!t&&!this.atEnd?e+n:-1}if(t==="-"||t==="."){const n=this.buffer.substr(e,3);if((n==="---"||n==="...")&&it(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&ethis.indentValue&&!it(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){const[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&it(t)){const n=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=n,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);const e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(Ds),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,t,n=-1;do e=yield*this.pushNewline(),e>0?(t=yield*this.pushSpaces(!1),this.indentValue=n=t):t=0,t+=yield*this.pushSpaces(!0);while(e+t>0);const u=this.getLine();if(u===null)return this.setNext("flow");if((n!==-1&&n"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*this.pushUntil(t=>it(t)||t==="#")}*parseBlockScalar(){let e=this.pos-1,t=0,n;e:for(let i=this.pos;n=this.buffer[i];++i)switch(n){case" ":t+=1;break;case` +`,this.pos),this.lineEndPos=e),e===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[e-1]==="\r"&&(e-=1),this.buffer.substring(this.pos,e))}hasChars(e){return this.pos+e<=this.buffer.length}setNext(e){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=e,null}peek(e){return this.buffer.substr(this.pos,e)}*parseNext(e){switch(e){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let e=this.getLine();if(e===null)return this.setNext("stream");if(e[0]===Pa&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let t=e.length,n=e.indexOf("#");for(;n!==-1;){const i=e[n-1];if(i===" "||i===" "){t=n-1;break}else n=e.indexOf("#",n+1)}for(;;){const i=e[t-1];if(i===" "||i===" ")t-=1;else break}const h=(yield*this.pushCount(t))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-h),this.pushNewline(),"stream"}if(this.atLineEnd()){const t=yield*this.pushSpaces(!0);return yield*this.pushCount(e.length-t),yield*this.pushNewline(),"stream"}return yield Wa,yield*this.parseLineStart()}*parseLineStart(){const e=this.charAt(0);if(!e&&!this.atEnd)return this.setNext("line-start");if(e==="-"||e==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");const t=this.peek(3);if((t==="---"||t==="...")&&it(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,t==="---"?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!it(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){const[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&it(t)){const n=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=n,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);const e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil($s),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,t,n=-1;do e=yield*this.pushNewline(),e>0?(t=yield*this.pushSpaces(!1),this.indentValue=n=t):t=0,t+=yield*this.pushSpaces(!0);while(e+t>0);const h=this.getLine();if(h===null)return this.setNext("flow");if((n!==-1&&n"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*this.pushUntil(t=>it(t)||t==="#")}*parseBlockScalar(){let e=this.pos-1,t=0,n;e:for(let i=this.pos;n=this.buffer[i];++i)switch(n){case" ":t+=1;break;case` `:e=i,t=0;break;case"\r":{const s=this.buffer[i+1];if(!s&&!this.atEnd)return this.setNext("block-scalar");if(s===` `)break}default:break e}if(!n&&!this.atEnd)return this.setNext("block-scalar");if(t>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=t:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{const i=this.continueScalar(e+1);if(i===-1)break;e=this.buffer.indexOf(` -`,i)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let u=e+1;for(n=this.buffer[u];n===" ";)n=this.buffer[++u];if(n===" "){for(;n===" "||n===" "||n==="\r"||n===` -`;)n=this.buffer[++u];e=u-1}else if(!this.blockScalarKeep)do{let i=e-1,s=this.buffer[i];s==="\r"&&(s=this.buffer[--i]);const d=i;for(;s===" ";)s=this.buffer[--i];if(s===` -`&&i>=this.pos&&i+1+t>d)e=i;else break}while(!0);return yield Bs,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){const e=this.flowLevel>0;let t=this.pos-1,n=this.pos-1,u;for(;u=this.buffer[++n];)if(u===":"){const i=this.buffer[n+1];if(it(i)||e&&wi.has(i))break;t=n}else if(it(u)){let i=this.buffer[n+1];if(u==="\r"&&(i===` -`?(n+=1,u=` -`,i=this.buffer[n+1]):t=n),i==="#"||e&&wi.has(i))break;if(u===` -`){const s=this.continueScalar(n+1);if(s===-1)break;n=Math.max(n,s-2)}}else{if(e&&wi.has(u))break;t=n}return!u&&!this.atEnd?this.setNext("plain-scalar"):(yield Bs,yield*this.pushToIndex(t+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){const n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(Ds))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{const e=this.flowLevel>0,t=this.charAt(1);if(it(t)||e&&wi.has(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!it(t)&&t!==">";)t=this.buffer[++e];return yield*this.pushToIndex(t===">"?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(ff.has(t))t=this.buffer[++e];else if(t==="%"&&wo.has(this.buffer[e+1])&&wo.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){const e=this.buffer[this.pos];return e===` +`,i)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let h=e+1;for(n=this.buffer[h];n===" ";)n=this.buffer[++h];if(n===" "){for(;n===" "||n===" "||n==="\r"||n===` +`;)n=this.buffer[++h];e=h-1}else if(!this.blockScalarKeep)do{let i=e-1,s=this.buffer[i];s==="\r"&&(s=this.buffer[--i]);const d=i;for(;s===" ";)s=this.buffer[--i];if(s===` +`&&i>=this.pos&&i+1+t>d)e=i;else break}while(!0);return yield Ps,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){const e=this.flowLevel>0;let t=this.pos-1,n=this.pos-1,h;for(;h=this.buffer[++n];)if(h===":"){const i=this.buffer[n+1];if(it(i)||e&&Ci.has(i))break;t=n}else if(it(h)){let i=this.buffer[n+1];if(h==="\r"&&(i===` +`?(n+=1,h=` +`,i=this.buffer[n+1]):t=n),i==="#"||e&&Ci.has(i))break;if(h===` +`){const s=this.continueScalar(n+1);if(s===-1)break;n=Math.max(n,s-2)}}else{if(e&&Ci.has(h))break;t=n}return!h&&!this.atEnd?this.setNext("plain-scalar"):(yield Ps,yield*this.pushToIndex(t+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){const n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil($s))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{const e=this.flowLevel>0,t=this.charAt(1);if(it(t)||e&&Ci.has(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!it(t)&&t!==">";)t=this.buffer[++e];return yield*this.pushToIndex(t===">"?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(vf.has(t))t=this.buffer[++e];else if(t==="%"&&Eo.has(this.buffer[e+1])&&Eo.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){const e=this.buffer[this.pos];return e===` `?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===` -`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,n;do n=this.buffer[++t];while(n===" "||e&&n===" ");const u=t-this.pos;return u>0&&(yield this.buffer.substr(this.pos,u),this.pos=t),u}*pushUntil(e){let t=this.pos,n=this.buffer[t];for(;!e(n);)n=this.buffer[++t];return yield*this.pushToIndex(t,!1)}}class vf{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,n=this.lineStarts.length;for(;t>1;this.lineStarts[i]=0;)switch(m[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;((t=m[++e])==null?void 0:t.type)==="space";);return m.splice(e,m.length)}function So(m){if(m.start.type==="flow-seq-start")for(const e of m.items)e.sep&&!e.value&&!xt(e.start,"explicit-key-ind")&&!xt(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,Pa(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}class yf{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new mf,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(const n of this.lexer.lex(e,t))yield*this.next(n);t||(yield*this.end())}*next(e){if(this.source=e,this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}const t=df(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*this.step(),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{const n=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:n,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){const e=this.peek(1);if(this.type==="doc-end"&&(e==null?void 0:e.type)!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){const t=e??this.stack.pop();if(!t)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield t;else{const n=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in n?n.indent:0:t.type==="flow-collection"&&n.type==="document"&&(t.indent=0),t.type==="flow-collection"&&So(t),n.type){case"document":n.value=t;break;case"block-scalar":n.props.push(t);break;case"block-map":{const u=n.items[n.items.length-1];if(u.value){n.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(u.sep)u.value=t;else{Object.assign(u,{key:t,sep:[]}),this.onKeyLine=!u.explicitKey;return}break}case"block-seq":{const u=n.items[n.items.length-1];u.value?n.items.push({start:[],value:t}):u.value=t;break}case"flow-collection":{const u=n.items[n.items.length-1];!u||u.value?n.items.push({start:[],key:t,sep:[]}):u.sep?u.value=t:Object.assign(u,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((n.type==="document"||n.type==="block-map"||n.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){const u=t.items[t.items.length-1];u&&!u.sep&&!u.value&&u.start.length>0&&Co(u.start)===-1&&(t.indent===0||u.start.every(i=>i.type!=="comment"||i.indent0&&(yield this.buffer.substr(this.pos,h),this.pos=t),h}*pushUntil(e){let t=this.pos,n=this.buffer[t];for(;!e(n);)n=this.buffer[++t];return yield*this.pushToIndex(t,!1)}}class wf{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,n=this.lineStarts.length;for(;t>1;this.lineStarts[i]=0;)switch(m[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;((t=m[++e])==null?void 0:t.type)==="space";);return m.splice(e,m.length)}function Do(m){if(m.start.type==="flow-seq-start")for(const e of m.items)e.sep&&!e.value&&!xt(e.start,"explicit-key-ind")&&!xt(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,Ha(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}class Cf{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new bf,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(const n of this.lexer.lex(e,t))yield*this.next(n);t||(yield*this.end())}*next(e){if(this.source=e,this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}const t=mf(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*this.step(),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{const n=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:n,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){const e=this.peek(1);if(this.type==="doc-end"&&(e==null?void 0:e.type)!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){const t=e??this.stack.pop();if(!t)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield t;else{const n=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in n?n.indent:0:t.type==="flow-collection"&&n.type==="document"&&(t.indent=0),t.type==="flow-collection"&&Do(t),n.type){case"document":n.value=t;break;case"block-scalar":n.props.push(t);break;case"block-map":{const h=n.items[n.items.length-1];if(h.value){n.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(h.sep)h.value=t;else{Object.assign(h,{key:t,sep:[]}),this.onKeyLine=!h.explicitKey;return}break}case"block-seq":{const h=n.items[n.items.length-1];h.value?n.items.push({start:[],value:t}):h.value=t;break}case"flow-collection":{const h=n.items[n.items.length-1];!h||h.value?n.items.push({start:[],key:t,sep:[]}):h.sep?h.value=t:Object.assign(h,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((n.type==="document"||n.type==="block-map"||n.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){const h=t.items[t.items.length-1];h&&!h.sep&&!h.value&&h.start.length>0&&Ao(h.start)===-1&&(t.indent===0||h.start.every(i=>i.type!=="comment"||i.indent=e.indent){const u=!this.onKeyLine&&this.indent===e.indent,i=u&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind";let s=[];if(i&&t.sep&&!t.value){const d=[];for(let o=0;oe.indent&&(d.length=0);break;default:d.length=0}}d.length>=2&&(s=t.sep.splice(d[1]))}switch(this.type){case"anchor":case"tag":i||t.value?(s.push(this.sourceToken),e.items.push({start:s}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):i||t.value?(s.push(this.sourceToken),e.items.push({start:s,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(xt(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(Pa(t.key)&&!xt(t.sep,"newline")){const d=cn(t.start),o=t.key,l=t.sep;l.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:d,key:o,sep:l}]})}else s.length>0?t.sep=t.sep.concat(s,this.sourceToken):t.sep.push(this.sourceToken);else if(xt(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{const d=cn(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:d,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||i?e.items.push({start:s,key:null,sep:[this.sourceToken]}):xt(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{const d=this.flowScalar(this.type);i||t.value?(e.items.push({start:s,key:d,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(d):(Object.assign(t,{key:d,sep:[]}),this.onKeyLine=!0);return}default:{const d=this.startBlockValue(e);if(d){if(d.type==="block-seq"){if(!t.explicitKey&&t.sep&&!xt(t.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else u&&e.items.push({start:s});this.stack.push(d);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){var n;const t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){const u="end"in t.value?t.value.end:void 0,i=Array.isArray(u)?u[u.length-1]:void 0;(i==null?void 0:i.type)==="comment"?u==null||u.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){const u=e.items[e.items.length-2],i=(n=u==null?void 0:u.value)==null?void 0:n.end;if(Array.isArray(i)){Array.prototype.push.apply(i,t.start),i.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||xt(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){const u=this.startBlockValue(e);if(u){this.stack.push(u);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){const t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let n;do yield*this.pop(),n=this.peek(1);while((n==null?void 0:n.type)==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{const u=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:u,sep:[]}):t.sep?this.stack.push(u):Object.assign(t,{key:u,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}const n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{const n=this.peek(2);if(n.type==="block-map"&&(this.type==="map-value-ind"&&n.indent===e.indent||this.type==="newline"&&!n.items[n.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&n.type!=="flow-collection"){const u=Ci(n),i=cn(u);So(e);const s=e.end.splice(1,e.end.length);s.push(this.sourceToken);const d={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:i,key:e,sep:s}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=d}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(` +`,t)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){var n;const t=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,t.value){const h="end"in t.value?t.value.end:void 0,i=Array.isArray(h)?h[h.length-1]:void 0;(i==null?void 0:i.type)==="comment"?h==null||h.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else if(t.sep)t.sep.push(this.sourceToken);else{if(this.atIndentedComment(t.start,e.indent)){const h=e.items[e.items.length-2],i=(n=h==null?void 0:h.value)==null?void 0:n.end;if(Array.isArray(i)){Array.prototype.push.apply(i,t.start),i.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){const h=!this.onKeyLine&&this.indent===e.indent,i=h&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind";let s=[];if(i&&t.sep&&!t.value){const d=[];for(let o=0;oe.indent&&(d.length=0);break;default:d.length=0}}d.length>=2&&(s=t.sep.splice(d[1]))}switch(this.type){case"anchor":case"tag":i||t.value?(s.push(this.sourceToken),e.items.push({start:s}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):i||t.value?(s.push(this.sourceToken),e.items.push({start:s,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(xt(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(Ha(t.key)&&!xt(t.sep,"newline")){const d=cn(t.start),o=t.key,l=t.sep;l.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:d,key:o,sep:l}]})}else s.length>0?t.sep=t.sep.concat(s,this.sourceToken):t.sep.push(this.sourceToken);else if(xt(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{const d=cn(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:d,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||i?e.items.push({start:s,key:null,sep:[this.sourceToken]}):xt(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{const d=this.flowScalar(this.type);i||t.value?(e.items.push({start:s,key:d,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(d):(Object.assign(t,{key:d,sep:[]}),this.onKeyLine=!0);return}default:{const d=this.startBlockValue(e);if(d){if(d.type==="block-seq"){if(!t.explicitKey&&t.sep&&!xt(t.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else h&&e.items.push({start:s});this.stack.push(d);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){var n;const t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){const h="end"in t.value?t.value.end:void 0,i=Array.isArray(h)?h[h.length-1]:void 0;(i==null?void 0:i.type)==="comment"?h==null||h.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){const h=e.items[e.items.length-2],i=(n=h==null?void 0:h.value)==null?void 0:n.end;if(Array.isArray(i)){Array.prototype.push.apply(i,t.start),i.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||xt(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){const h=this.startBlockValue(e);if(h){this.stack.push(h);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){const t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let n;do yield*this.pop(),n=this.peek(1);while((n==null?void 0:n.type)==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{const h=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:h,sep:[]}):t.sep?this.stack.push(h):Object.assign(t,{key:h,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}const n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{const n=this.peek(2);if(n.type==="block-map"&&(this.type==="map-value-ind"&&n.indent===e.indent||this.type==="newline"&&!n.items[n.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&n.type!=="flow-collection"){const h=Si(n),i=cn(h);Do(e);const s=e.end.splice(1,e.end.length);s.push(this.sourceToken);const d={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:i,key:e,sep:s}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=d}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(` `)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(` -`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;const t=Ci(e),n=cn(t);return n.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;const t=Ci(e),n=cn(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(n=>n.type==="newline"||n.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}}function bf(m){const e=m.prettyErrors!==!1;return{lineCounter:m.lineCounter||e&&new vf||null,prettyErrors:e}}function wf(m,e={}){const{lineCounter:t,prettyErrors:n}=bf(e),u=new yf(t==null?void 0:t.addNewLine),i=new pf(e);let s=null;for(const d of i.compose(u.parse(m),!0,m.length))if(!s)s=d;else if(s.options.logLevel!=="silent"){s.errors.push(new Bn(d.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&t&&(s.errors.forEach(vo(m,t)),s.warnings.forEach(vo(m,t))),s}function Cf(m,e,t){let n;const u=wf(m,t);if(!u)return null;if(u.warnings.forEach(i=>pa(u.options.logLevel,i)),u.errors.length>0){if(u.options.logLevel!=="silent")throw u.errors[0];u.errors=[]}return u.toJS(Object.assign({reviver:n},t))}const $s={flex:{display:"flex"},button:{height:48,minWidth:48},wrapper:{width:"calc(100vw - 40px)",height:"calc(100vh - 188px)"}};class Sf extends V{async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t)||"";this.setState({value:n,initialized:!0,yamlError:this.validateYaml(n)})}validateYaml(e){let t=!1;if(this.props.schema.validateYaml!==!1&&(e||!this.props.schema.allowEmpty))try{Cf(e)}catch(n){console.log("Error in YAML",n),t=!0}return t}renderItem(e,t){if(!this.state.initialized)return null;const{schema:n,data:u,attr:i}=this.props,{value:s,showSelectId:d}=this.state,o=n.readOnly===!0||t;return x.createElement(fe,{fullWidth:!0,variant:"standard"},x.createElement("div",{style:$s.flex},x.createElement(me,{color:"grey",style:$s.button,size:"small",variant:"outlined",onClick:()=>this.setState({showSelectId:!0})},P.I18n.t("ra_YAML editor"))),d?x.createElement(Xs,{title:this.getText(n.label),overflowHidden:!0,applyDisabled:this.state.yamlError&&this.props.schema.doNotApplyWithError||o,onClose:()=>{o?this.setState({showSelectId:!1}):this.setState({showSelectId:!1,value:V.getValue(u,i)||""})},onApply:o?void 0:()=>this.setState({showSelectId:!1},()=>this.onChange(i,s))},x.createElement("div",{style:{...$s.wrapper,border:this.state.yamlError?"2px solid red":"2px solid transparent"}},x.createElement(nr,{mode:"yaml",value:typeof s=="object"?JSON.stringify(s):s,onChange:o?void 0:l=>this.setState({value:l,yamlError:this.validateYaml(l)}),name:"ConfigYamlEditor",themeType:this.props.oContext.themeType}))):null,n.help||this.state.yamlError?x.createElement(ve,null,this.state.yamlError?P.I18n.t("ra_Invalid YAML"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class Ef extends V{async componentDidMount(){await super.componentDidMount();const e=await zo(()=>import("./index-B5DqCD_a.js").then(t=>t.i),__vite__mapDeps([0,1,2,3]),import.meta.url);this.setState({QRCode:e.default})}renderItem(){const e=this.state.QRCode;if(!e)return null;const t=Math.max(32,Math.round((this.props.schema.size||256)*.15));return x.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:this.props.schema.bgColor||"white",padding:t,width:"100%",height:"100%"}},x.createElement(e,{title:this.getText(this.props.schema.tooltip),value:this.props.schema.data,size:this.props.schema.size,fgColor:this.props.schema.fgColor,bgColor:this.props.schema.bgColor,level:this.props.schema.level}))}}class Af extends V{initialized=!1;localContext;async componentDidMount(){await super.componentDidMount();const e=await zo(()=>import("./index-B5DqCD_a.js").then(t=>t.i),__vite__mapDeps([0,1,2,3]),import.meta.url);this.setState({QRCode:e.default}),this.props.schema.sendFirstByClick||await this.askInstance()}async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);if(n)try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${JSON.stringify(e)}`)}}e===void 0&&(e=null);const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.setState({loading:!0},()=>this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e).then(n=>this.setState({qrData:n||"",loading:!1})))}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(){if(this.props.alive){const n=this.getContext();(n!==this.localContext||!this.initialized)&&(this.localContext=n,(!this.props.schema.sendFirstByClick||this.state.qrData!==void 0)&&setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}if(!this.state.qrData&&this.props.schema.sendFirstByClick)return this.props.alive?x.createElement("div",{style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"center",cursor:this.state.loading?"default":"pointer"},onClick:()=>!this.state.loading&&this.askInstance()},this.state.loading?x.createElement(Tt,null):typeof this.props.schema.sendFirstByClick=="boolean"?P.I18n.t("ra_Click to show"):this.getText(this.props.schema.sendFirstByClick,this.props.schema.noTranslation)):x.createElement("div",{style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"center",cursor:this.state.loading?"default":"pointer"},onClick:()=>!this.state.loading&&this.askInstance()},P.I18n.t("ra_Instance %s is not alive",this.props.oContext.instance.toString()));const e=this.state.QRCode;if(!e||this.state.qrData===void 0)return null;const t=Math.max(32,Math.round((this.props.schema.size||256)*.15));return x.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:this.props.schema.bgColor||"white",padding:t,width:"100%",height:"100%"}},x.createElement(e,{title:this.getText(this.props.schema.tooltip),value:this.state.qrData,size:this.props.schema.size,fgColor:this.props.schema.fgColor,bgColor:this.props.schema.bgColor,level:this.props.schema.level}))}}const Df={accordion:bh,alive:wh,autocomplete:Ch,autocompleteSendTo:Sh,certCollection:$h,certificate:Ah,certificates:Dh,checkbox:_h,checkDocker:xh,checkLicense:$t,chip:jr,chips:jr,color:Ih,coordinates:Oh,cron:Eh,custom:Kn,datePicker:Fh,deviceManager:Rh,divider:Yp,file:Gh,fileSelector:ji,func:Jh,header:Xp,iframe:Yh,iframeSendTo:Qh,image:qh,imageSendTo:Zh,infoBox:eu,instance:tu,interface:nu,ip:Xh,jsonEditor:_p,language:Tp,license:Lp,number:Mp,oauth2:Ip,objectId:Op,password:Fp,pattern:Rp,port:Bp,qrCode:Ef,qrCodeSendTo:Af,room:Pp,select:Wp,selectSendTo:zp,sendto:no,sendTo:no,setState:Up,slider:Kp,state:Jp,staticImage:Zp,staticInfo:qp,staticLink:lo,staticText:lo,table:Qe,text:id,textSendTo:rd,timePicker:od,topic:ld,uuid:cd,user:hd,yamlEditor:Sf},lt={fullWidth:{width:"100%"},paper:{margin:1,width:"auto !important",overflowY:"auto",paddingBottom:1},paperWithIcons:{height:"calc(100vh - 259px) !important"},paperWithoutIcons:{height:"calc(100vh - 235px) !important"},padding:{padding:"10px"},heading:{},primary:m=>({backgroundColor:m.palette.primary.main,color:m.palette.mode==="dark"?"inherit":"#FFF"}),secondary:m=>({backgroundColor:m.palette.secondary.main})};class tn extends V{async componentDidMount(){var e;await super.componentDidMount(),(e=this.props.schema)!=null&&e.collapsable&&this.setState({expanded:(window._localStorage||window.localStorage).getItem(`${this.props.oContext.adapterName}.${this.props.attr}`)==="true"})}renderItems(e,t){return e?Object.keys(e).map(n=>{if(this.props.oContext.multiEdit&&e[n].noMultiEdit)return null;const u=e[n].type||"panel";let i,s="Use this.props.oContext.socket!";if(u==="custom")e[n].url?i=Kn:this.props.oContext.customs&&this.props.oContext.customs[e[n].component]?i=this.props.oContext.customs[e[n].component]:(console.error(`Cannot find custom component: ${e[n].component}`),i=V),s=this.props.oContext.socket;else if(u==="component")if(this.props.customComponents[e[n].subType])i=this.props.customComponents[e[n].subType];else return x.createElement("div",{key:`${n}_${this.props.index??""}`},`Component ${e[n].subType} not provided`);else u==="panel"?i=tn:i=Df[u]||V;return x.createElement(i,{socket:s,globalData:this.props.globalData,oContext:this.props.oContext,key:`${n}_${this.props.index??""}`,index:this.props.index,changed:this.props.changed,arrayIndex:this.props.arrayIndex,expertMode:this.props.expertMode,commandRunning:this.props.commandRunning,style:lt.panel,common:this.props.common,alive:this.props.alive,themeName:this.props.themeName,data:this.props.data,originalData:this.props.originalData,onError:this.props.onError,onHiddenChanged:this.props.onHiddenChanged,onFilterLabelUpdate:this.props.onFilterLabelUpdate,onChange:this.props.onChange,disabled:t,customObj:this.props.customObj,custom:this.props.custom,schema:e[n],attr:n,table:this.props.table,customComponents:this.props.customComponents})}):null}render(){const e=this.props.schema;if(!e||(this.updateCalculatedValues(),!this.state.calculatedValues))return null;const t=this.props.schema.items,n=this.props.schema.style||{};if(this.state.calculatedValues.hidden){if(e.hideOnlyControl){const i=x.createElement(He,{size:{xs:e.xs||void 0,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0},sx:P.Utils.getStyle(this.props.oContext.theme,{marginBottom:0,textAlign:"left"},n,this.props.oContext.themeType==="dark"&&e.darkStyle)});return e.newLine?x.createElement(x.Fragment,null,x.createElement("div",{style:{flexBasis:"100%",height:0}}),i):i}return null}if(this.props.table)return this.renderItems(t,this.state.calculatedValues.disabled);if(this.props.custom)return x.createElement(He,{key:`${this.props.attr}_${this.props.index}`,container:!0,style:lt.fullWidth,columnSpacing:2,rowSpacing:1,sx:n},this.renderItems(t,this.state.calculatedValues.disabled));let u;if(e.collapsable)u=x.createElement(Ws,{key:`${this.props.attr}_${this.props.index}`,style:lt.fullWidth,expanded:!!this.state.expanded,onChange:()=>{(window._localStorage||window.localStorage).setItem(`${this.props.oContext.adapterName}.${this.props.attr}`,this.state.expanded?"false":"true"),this.setState({expanded:!this.state.expanded})}},x.createElement(js,{expandIcon:x.createElement(Mi,null),sx:P.Utils.getStyle(this.props.oContext.theme,n,this.props.oContext.themeType&&e.darkStyle,e.color==="primary"?lt.primary:e.color==="secondary"&<.secondary,{width:"100%"})},x.createElement(yt,{style:lt.heading},this.getText(e.label))),x.createElement(zs,null,x.createElement(He,{container:!0,columnSpacing:2,rowSpacing:1,sx:{...n,width:"100%",padding:"10px"}},this.renderItems(t,this.state.calculatedValues.disabled))));else{const i=P.Utils.getStyle(this.props.oContext.theme,this.props.style,n,{width:"100%"},this.props.isParentTab&<.paper,this.props.isParentTab&&(this.props.withoutSaveButtons?this.props.withIcons?{height:"calc(100% - 88px) !important"}:{height:"calc(100% - 64px) !important"}:this.props.withIcons?lt.paperWithIcons:lt.paperWithoutIcons));u=x.createElement(Ie,{component:"div",key:`${this.props.attr}_${this.props.index}`,className:this.props.className,sx:i},x.createElement(He,{container:!0,columnSpacing:2,rowSpacing:1,sx:P.Utils.getStyle(this.props.oContext.theme,{width:"100%"},this.props.isParentTab&<.padding,this.props.schema.innerStyle)},this.renderItems(t,this.state.calculatedValues.disabled)))}if(!this.props.isParentTab){const i=x.createElement(He,{title:this.getText(e.tooltip),size:{xs:e.xs||void 0,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0},sx:{marginBottom:0,textAlign:"left",...n}},u);return e.newLine?x.createElement(x.Fragment,null,x.createElement("div",{style:{flexBasis:"100%",height:0}}),i):i}return u}}const Si={tabs:{height:"100%",width:"100%"},panel:{width:"100%",display:"block"},panelWithIcons:{height:"calc(100% - 72px)"},panelWithoutIcons:{height:"calc(100% - 48px)"}};class $f extends V{resizeTimeout=null;calculateTimeoutTable=null;refDiv;constructor(e){super(e);let t;if(this.props.root){const n=(window.location.hash||"").replace(/^#/,"").split("/");if(n.length>=3&&n[1]==="config"){const u=n[3],i=parseInt(u,10);u&&i.toString()===u?i>=0&&i{const n=this.state.tab;if(!n){this.props.onError(e,t);return}const u={...this.state.tabErrors};u[n]||(u[n]={}),t?u[n][e]=t:(delete u[n][e],Object.keys(u[n]).length===0&&delete u[n]),this.setState({tabErrors:u}),this.props.onError(e,t)};hasTabErrors=e=>!!(this.state.tabErrors[e]&&Object.keys(this.state.tabErrors[e]).length>0);componentWillUnmount(){this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null),this.calculateTimeoutTable&&(clearTimeout(this.calculateTimeoutTable),this.calculateTimeoutTable=null),window.removeEventListener("hashchange",this.onHashTabsChanged,!1),super.componentWillUnmount()}onHashTabsChanged=()=>{const e=(window.location.hash||"").replace(/^#/,"").split("/");if(e.length>3&&e[1]==="config"){const t=e[3],n=parseInt(t,10);let u;n.toString()===t?n>=0&&n{this.setState({initialBreakpoint:e})},50),e}return this.state.initialBreakpoint}componentDidUpdate(){var e;!this.state.initialBreakpoint&&((e=this.refDiv.current)!=null&&e.clientWidth)&&this.refDiv.current.clientWidth!==this.state.width&&(this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{var t;this.resizeTimeout=null,this.setState({width:(t=this.refDiv.current)==null?void 0:t.clientWidth})},50))}onMenuChange(e){(window._localStorage||window.localStorage).setItem(`${this.props.dialogName||"App"}.${this.props.oContext.adapterName}`,e),this.setState({tab:e},()=>{if(this.props.root){const t=(window.location.hash||"").split("/");t.length>=3&&t[1]==="config"&&(t[3]=this.state.tab,window.location.hash=t.join("/"))}})}updateCalculatedValuesForTable(){this.calculateTimeoutTable&&clearTimeout(this.calculateTimeoutTable),this.calculateTimeoutTable=setTimeout(async()=>{this.calculateTimeoutTable=null;const e=this.props.schema.items,t={};for(const n in e){let u;if(e[n].expertMode&&!this.props.expertMode){t[n]={hidden:!0,disabled:!1};continue}if(this.props.custom){const i=!!await this.executeCustom(e[n].hidden,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.index,this.props.globalData);if(i){t[n]={hidden:!0,disabled:!1};continue}u=!!await this.executeCustom(e[n].disabled,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.index,this.props.globalData),t[n]={hidden:i,disabled:u}}else{if(!!await this.execute(e[n].hidden,!1,this.props.data,this.props.index,this.props.globalData)){t[n]={hidden:!0,disabled:!1};continue}u=!!await this.execute(e[n].disabled,!1,this.props.data,this.props.index,this.props.globalData),t[n]={hidden:!1,disabled:u}}}JSON.stringify(t)!==JSON.stringify(this.state.calculatedValuesTable)&&this.setState({calculatedValuesTable:t})},50)}render(){const e=this.props.schema.items;let t=!1;if(this.updateCalculatedValuesForTable(),!this.state.calculatedValuesTable)return null;const n=[];Object.keys(e).filter(s=>{var d;return!((d=this.state.calculatedValuesTable[s])!=null&&d.hidden)}).map(s=>{var o;const d=this.getIcon(e[s].icon);t||=!!d,n.push({icon:d,disabled:(o=this.state.calculatedValuesTable[s])==null?void 0:o.disabled,label:this.getText(e[s].label),name:s})}),n.find(s=>s.name===this.state.tab)||setTimeout(()=>this.setState({tab:n[0].name}),50);const u=this.getCurrentBreakpoint();let i;return u==="xs"&&n.length>2?i=x.createElement(Pn,{style:{top:2,backgroundColor:this.props.oContext.themeType==="dark"?"#222":"#DDD"},variant:"dense"},x.createElement(se,{onClick:s=>this.setState({openMenu:s.currentTarget})},x.createElement(Uc,null)),this.state.openMenu?x.createElement(hc,{open:!0,anchorEl:this.state.openMenu,onClose:()=>this.setState({openMenu:null})},n.map(s=>{const d=this.hasTabErrors(s.name);return x.createElement(xe,{disabled:s.disabled,key:s.name,onClick:()=>{this.setState({openMenu:null},()=>this.onMenuChange(s.name))},selected:s.name===this.state.tab,sx:d?{color:"error.main"}:void 0},t?x.createElement(xo,null,s.icon):null,x.createElement(Ie,{sx:{display:"flex",alignItems:"center",gap:.5,width:"100%"}},s.label,d&&x.createElement(Jt,{sx:{fontSize:16,color:"error.main"}})))})):null):i=x.createElement(uc,{variant:"scrollable",scrollButtons:"auto",style:this.props.schema.tabsStyle,value:this.state.tab,onChange:(s,d)=>this.onMenuChange(d)},n.map(s=>{const d=this.hasTabErrors(s.name),o=d?x.createElement(Ie,{sx:{display:"flex",alignItems:"center",gap:.5}},s.label,x.createElement(Jt,{sx:{fontSize:16,color:"error.main"}})):s.label;return x.createElement(pc,{id:s.name,wrapped:!0,disabled:s.disabled,key:s.name,value:s.name,iconPosition:this.props.schema.iconPosition||"start",icon:s.icon,label:o,sx:d?{"& .MuiTab-wrapper":{color:"error.main"}}:void 0})})),x.createElement("div",{style:Si.tabs,ref:this.refDiv},i,x.createElement(tn,{oContext:this.props.oContext,withoutSaveButtons:this.props.withoutSaveButtons,isParentTab:!0,changed:this.props.changed,key:this.state.tab,expertMode:this.props.expertMode,index:1001,arrayIndex:this.props.arrayIndex,globalData:this.props.globalData,commandRunning:this.props.commandRunning,style:{...Si.panel,...t?Si.panelWithIcons:Si.panelWithoutIcons},common:this.props.common,alive:this.props.alive,themeName:this.props.themeName,data:this.props.data,originalData:this.props.originalData,onChange:this.props.onChange,onError:this.onTabError,customObj:this.props.customObj,custom:this.props.custom,schema:e[this.state.tab],table:this.props.table,withIcons:t,customComponents:this.props.customComponents}))}}const xf={root:{width:"100%",height:"100%"}};class ki extends Ao{forceUpdateHandlers;errorTimeout=null;errorCached=null;oContext;cachedObjects={};constructor(e){super(e),this.state={originalData:JSON.stringify(this.props.data),changed:!1,errors:{},updateData:this.props.updateData||0,systemConfig:null,alive:!1,commandRunning:!1,schema:JSON.parse(JSON.stringify(this.props.schema))},this.forceUpdateHandlers={},this.buildDependencies(this.state.schema),this.readData().catch(t=>console.error(`Cannot read data: ${t}`))}static getDerivedStateFromProps(e,t){return e.updateData!==t.updateData?{updateData:e.updateData,originalData:JSON.stringify(e.data),schema:JSON.parse(JSON.stringify(e.schema))}:null}static async loadI18n(e,t,n){if(t===!0||t&&typeof t=="string"){const u=P.I18n.getLanguage(),i=typeof t=="string"?t:"i18n";let s=await e.fileExists(`${n}.admin`,`${i}/${u}.json`),d;if(s?d=`${i}/${u}.json`:(s=await e.fileExists(`${n}.admin`,`${i}/${u}/translations.json`),s?d=`${i}/${u}/translations.json`:u!=="en"&&(s=await e.fileExists(`${n}.admin`,`${i}/en.json`),s?d=`${i}/en.json`:(s=await e.fileExists(`${n}.admin`,`${i}/en/translations.json`),s&&(d=`${i}/en/translations.json`)))),d){const o=await e.readFile(`${n}.admin`,d);let l;o.file!==void 0?l=o.file:l=o;try{const r=JSON.parse(l);P.I18n.extendTranslations(r,u)}catch(r){return console.error(`Cannot parse language file "${n}.admin/${d}: ${r}`),""}return d}return console.warn(`Cannot find i18n for ${n} / ${d}`),""}return t&&typeof t=="object"&&P.I18n.extendTranslations(t),""}onCommandRunning=e=>this.setState({commandRunning:e});async readData(){let e;try{this.props.socket.getCompactSystemConfig?e=await this.props.socket.getCompactSystemConfig():e=await this.getCachedObject("system.config")||void 0;const t=await this.props.socket.getState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`);this.setState({systemConfig:e.common,alive:!!(t&&t.val)},()=>{this.updateContext(!0),this.props.custom||this.props.socket.subscribeState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`,this.onAlive)})}catch(t){console.error(`Cannot read system config: ${t}`)}}onAlive=(e,t)=>{!!(t!=null&&t.val)!==this.state.alive&&this.setState({alive:!!(t!=null&&t.val)})};onChange=(e,t,n,u)=>{if(this.props.onValueChange)this.props.onValueChange(e,t,u),n&&n();else if(e&&this.props.onChange){const i={changed:JSON.stringify(e)!==this.state.originalData};this.setState(i,()=>{this.props.onChange(e,i.changed,u),n&&n()})}else u&&this.props.onChange(null,null,u)};onError=(e,t)=>{this.errorCached=this.errorCached||JSON.parse(JSON.stringify(this.state.errors));const n=this.errorCached;t?n[e]=t:delete n[e],this.errorTimeout&&clearTimeout(this.errorTimeout),JSON.stringify(n)!==JSON.stringify(this.state.errors)?this.errorTimeout=setTimeout(()=>this.setState({errors:this.errorCached},()=>{this.errorTimeout=null,this.errorCached=null,this.props.onError(!!Object.keys(this.state.errors).length)}),50):this.errorCached=null};flatten(e,t){return t=t||{},e.items&&Object.keys(e.items).forEach(n=>{t[n]=e.items[n],this.flatten(e.items[n],t)}),t}buildDependencies(e){const t=this.flatten(e);Object.keys(t).forEach(n=>{var u,i,s,d,o,l,r,a,c,p;(u=t[n].confirm)!=null&&u.alsoDependsOn&&((i=t[n].confirm)==null||i.alsoDependsOn.forEach(h=>{if(!t[h])console.error(`[JsonConfigComponent] Attribute ${h} does not exist!`),h.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${h.replace(/^data\./,"")}" instead of "${h}"`);else{t[h].confirmDependsOn=t[h].confirmDependsOn||[];const f={...t[n],attr:n};f.confirm&&(f.confirm.cancel="Undo"),t[h].confirmDependsOn.push(f)}})),(s=t[n].onChange)!=null&&s.alsoDependsOn&&((d=t[n].onChange)==null||d.alsoDependsOn.forEach(h=>{if(!t[h])console.error(`[JsonConfigComponent] Attribute ${h} does not exist!`),h.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${h.replace(/^data\./,"")}" instead of "${h}"`);else{t[h].onChangeDependsOn=t[h].onChangeDependsOn||[];const f={...t[n],attr:n};t[h].onChangeDependsOn.push(f)}})),(o=t[n].hidden)!=null&&o.alsoDependsOn&&((l=t[n].hidden)==null||l.alsoDependsOn.forEach(h=>{if(!t[h])console.error(`[JsonConfigComponent] Attribute ${h} does not exist!`),h.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${h.replace(/^data\./,"")}" instead of "${h}"`);else{t[h].hiddenDependsOn=t[h].hiddenDependsOn||[];const f={...t[n],attr:n};t[h].hiddenDependsOn.push(f)}})),(r=t[n].label)!=null&&r.alsoDependsOn&&((a=t[n].label)==null||a.alsoDependsOn.forEach(h=>{if(!t[h])console.error(`[JsonConfigComponent] Attribute ${h} does not exist!`),h.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${h.replace(/^data\./,"")}" instead of "${h}"`);else{t[h].labelDependsOn=t[h].labelDependsOn||[];const f={...t[n],attr:n};t[h].labelDependsOn.push(f)}})),(c=t[n].help)!=null&&c.alsoDependsOn&&((p=t[n].help)==null||p.alsoDependsOn.forEach(h=>{if(!t[h])console.error(`[JsonConfigComponent] Attribute ${h} does not exist!`),h.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${h.replace(/^data\./,"")}" instead of "${h}"`);else{t[h].helpDependsOn=t[h].helpDependsOn||[];const f={...t[n],attr:n};t[h].helpDependsOn.push(f)}}))})}getCachedObject=async e=>{if(this.cachedObjects[e]!==void 0)return this.cachedObjects[e];try{this.cachedObjects[e]=await this.props.socket.getObject(e)??null}catch(t){console.error(t),this.cachedObjects[e]=null}return this.cachedObjects[e]};updateContext(e){this.oContext={DeviceManager:this.props.DeviceManager,adapterName:this.props.adapterName,changeLanguage:this.changeLanguage,common:this.props.common,customs:this.props.customs,dateFormat:this.props.dateFormat,embedded:this.props.embedded,forceUpdate:this.forceAttrUpdate,imagePrefix:this.props.imagePrefix,instance:this.props.instance,instanceObj:this.props.instanceObj,isFloatComma:this.props.isFloatComma,multiEdit:this.props.multiEdit,onBackEndCommand:this.props.onBackEndCommand,onCommandRunning:this.onCommandRunning,onValueChange:this.props.onValueChange,registerOnForceUpdate:this.registerOnForceUpdate,socket:this.props.socket,systemConfig:this.state.systemConfig,theme:this.props.theme,themeType:this.props.themeType,_themeName:this.props.themeName,updateData:this.state.updateData,getCachedObject:this.getCachedObject},e&&this.forceUpdate()}renderItem(e){return e.type==="tabs"?x.createElement($f,{withoutSaveButtons:this.props.withoutSaveButtons,oContext:this.oContext,alive:this.state.alive,changed:this.state.changed,commandRunning:this.state.commandRunning,common:this.props.common,custom:this.props.custom,customObj:this.props.customObj,data:this.props.data,onChange:this.onChange,onError:(t,n)=>this.onError(t,n),originalData:JSON.parse(this.state.originalData),root:!0,schema:e,expertMode:this.props.expertMode,themeName:this.props.themeName,customComponents:this.props.customComponents}):e.type==="panel"||!e.type?x.createElement(tn,{withoutSaveButtons:this.props.withoutSaveButtons,oContext:this.oContext,alive:this.state.alive,changed:this.state.changed,commandRunning:this.state.commandRunning,common:this.props.common,custom:this.props.custom,customObj:this.props.customObj,data:this.props.data,expertMode:this.props.expertMode,index:1e3,isParentTab:!this.props.embedded&&!this.props.withoutSaveButtons,onChange:this.onChange,onError:(t,n)=>this.onError(t,n),originalData:JSON.parse(this.state.originalData),root:!0,schema:e,themeName:this.props.themeName,customComponents:this.props.customComponents}):(console.error(`Unknown item type in root: ${JSON.stringify(e)}`),null)}changeLanguage=()=>{this.forceUpdate()};forceAttrUpdate=(e,t)=>{Array.isArray(e)?e.forEach(n=>this.forceUpdateHandlers[n]&&this.forceUpdateHandlers[n](t)):this.forceUpdateHandlers[e]&&this.forceUpdateHandlers[e](t)};registerOnForceUpdate=(e,t)=>{t?this.forceUpdateHandlers[e]=t:this.forceUpdateHandlers[e]&&delete this.forceUpdateHandlers[e]};render(){return!this.state.systemConfig||!this.oContext?x.createElement(Wi,null):(this.oContext._themeName!==this.props.themeName&&(this.oContext._themeName=this.props.themeName,setTimeout(()=>this.updateContext(!0),0)),x.createElement("div",{style:{...!this.props.embedded||this.props.withoutSaveButtons?xf.root:void 0,...this.props.style,...this.state.schema.style}},this.renderItem(this.state.schema)))}}const jt={root:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},scroll:{height:"calc(100% - 48px)",overflowY:"auto"},exportImportButtons:{position:"absolute",top:5,right:0,zIndex:3},button:{marginRight:"5px"},tooltip:{pointerEvents:"none"}};function _f(m,e){let t="";for(let n=0;n{const u=document.createElement("script");u.setAttribute("id",e),u.onload=n,u.src=m,document.getElementsByTagName("head")[0].appendChild(u)})}let Mf=class extends P.Router{fileSubscribed=[];fileLangSubscribed="";secret;constructor(e){super(e),this.state={updateData:0,changed:!1,confirmDialog:!1,theme:P.Theme(e.themeName),saveConfigDialog:!1,hash:"_"},this.secret=e.secret||"",this.getInstanceObject().then(t=>this.getConfigFile().then(n=>ki.loadI18n(this.props.socket,n==null?void 0:n.i18n,this.props.adapterName).then(u=>{u&&(this.fileLangSubscribed||(this.fileLangSubscribed=u,this.props.socket.subscribeFiles(`${this.props.adapterName}.admin`,this.fileLangSubscribed,this.onFileChange))),t?this.setState({schema:n,data:t.native,common:t.common,hash:Pr(JSON.stringify(n)).toString()}):window.alert(`Instance system.adapter.${this.props.adapterName}.${this.props.instance} not found!`)})))}componentWillUnmount(){super.componentWillUnmount(),this.fileSubscribed.length&&(this.props.socket.unsubscribeFiles(`${this.props.adapterName}.admin`,this.fileSubscribed,this.onFileChange),this.fileSubscribed=[]),this.fileLangSubscribed&&(this.props.socket.unsubscribeFiles(`${this.props.adapterName}.admin`,this.fileLangSubscribed,this.onFileChange),this.fileLangSubscribed="")}handleFileSelect=e=>{const t=e.target.files[0];if(t){const n=new FileReader;n.onload=u=>{if(!u.target)return;const i=u.target.result;try{const s=JSON.parse(i);this.setState({data:s,changed:JSON.stringify(s)!==JSON.stringify(this.state.originalData)})}catch{window.alert(P.I18n.t("[JsonConfig] Failed to parse JSON file"))}},n.readAsText(t)}else window.alert(P.I18n.t("[JsonConfig] Failed to open JSON File"))};getExportImportButtons(){return x.createElement("div",{style:jt.exportImportButtons},x.createElement(ge,{title:this.props.t("Import settings from JSON file"),slotProps:{popper:{sx:jt.tooltip}}},x.createElement(Ti,{size:"small",sx:{"&.MuiFab-root":jt.button},onClick:()=>{const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity",0),e.addEventListener("change",t=>this.handleFileSelect(t),!1),e.click()}},x.createElement(Rr,null))),x.createElement(ge,{title:this.props.t("Export setting to JSON file"),slotProps:{popper:{sx:jt.tooltip}}},x.createElement(Ti,{size:"small",sx:{"&.MuiFab-root":jt.button},onClick:()=>{this.state.data&&P.Utils.generateFile(`${this.props.adapterName}.${this.props.instance}.json`,this.state.data)}},x.createElement(Rr,{style:{transform:"rotate(180deg)"}}))))}onFileChange=async(e,t,n)=>{var u;if(e===`${this.props.adapterName}.admin`&&n){if(t===this.fileLangSubscribed)try{await ki.loadI18n(this.props.socket,(u=this.state.schema)==null?void 0:u.i18n,this.props.adapterName),this.setState({hash:`${this.state.hash}1`})}catch{}else if(this.fileSubscribed.includes(t))try{const i=await this.getConfigFile(this.fileSubscribed[0]);this.setState({schema:i,hash:Pr(JSON.stringify(i)).toString()})}catch{}}};async getInstanceObject(){var e;try{const t=await this.props.socket.getObject(`system.adapter.${this.props.adapterName}.${this.props.instance}`);if(Array.isArray(t.encryptedNative)){if(!this.secret){const n=await this.props.socket.getSystemConfig();await Eo("../../lib/js/crypto-js/crypto-js.js","crypto-js"),this.secret=n.native.secret}return(e=t.encryptedNative)==null||e.forEach(n=>{t.native[n]&&(t.native[n]=Tf(this.secret,t.native[n]))}),t}return t}catch(t){window.alert(`[JsonConfig] Cannot read instance object: ${t}`)}return null}renderDialogConfirm(){return this.state.confirmDialog?x.createElement(P.DialogConfirm,{title:P.I18n.t("ra_Please confirm"),text:P.I18n.t("ra_Some data are not stored. Discard?"),ok:P.I18n.t("ra_Discard"),cancel:P.I18n.t("ra_Cancel"),onClose:e=>this.setState({confirmDialog:!1},()=>e&&P.Router.doNavigate(null))}):null}async scanForInclude(e,t){if(typeof e["#include"]=="string"){const u=await this._getConfigFile(e["#include"],[...t]);return delete e["#include"],u&&(e={...e,...u}),e}const n=Object.keys(e);for(let u=0;u ${t.join(" => ")}`),null;t.push(e);try{await this.props.socket.fileExists(`${this.props.adapterName}.admin`,e)||(e="jsonConfig.json");const u=await this.props.socket.readFile(`${this.props.adapterName}.admin`,e);let i="",s="";if(u.file!==void 0&&(s=u.file),typeof s=="string")i=s;else if(s.type==="Buffer"){let d="";const o=new Uint8Array(s.data),l=o.byteLength;for(let r=0;rthis.setState({saveConfigDialog:!1},()=>e&&this.onSave(!0))}):null}findAttr(e,t){if(t=t||this.state.schema,t!=null&&t.items){if(e in t.items)return t.items[e];for(const n of Object.values(t.items)){const u=this.findAttr(e,n);if(u)return u}}return null}postProcessing(e,t,n){if(n=n||this.state.schema,!e){console.error(`Data is empty in postProcessing: ${t}, ${JSON.stringify(n)}`);return}const u=e[t];if(n.items)if(n.type==="table"){const i=u;if(!Array.isArray(i))return;for(const s of i)for(const d of n.items)this.postProcessing(s,d.attr,d)}else for(const[i,s]of Object.entries(n.items)){if(s.type==="panel"||s.type==="tabs"||s.type==="accordion")return;this.postProcessing(e,i,s)}else if(t&&typeof u=="string")if(n.type==="text")n.trim!==!1&&(e[t]=u.trim());else if(n.type==="ip")e[t]=u.trim();else if(n.type==="number"){const i=parseFloat(u.toString().replace(",","."));n.min!==void 0&&in.max?e[t]=n.max:e[t]=i}else if(n.type==="port"){const i=parseInt(u.toString(),10);n.min!==void 0&&in.max&&(e[t]=n.max),e[t]!==0&&i<20?e[t]=20:i>65535?e[t]=65535:e[t]=i}else n.type==="checkbox"&&(e[t]=e[t]===!0||e[t]==="true"||e[t]==="on"||e[t]===1||e[t]==="1")}async onSave(e,t){if(e){const n=await this.getInstanceObject();if(!n){console.error("Something went wrong: may be no connection?"),window.alert("Something went wrong: may be no connection?");return}if(!this.state.data||!this.state.schema)return;const u={};for(const s of Object.keys(this.state.data)){const d=this.findAttr(s);(!d||!d.doNotSave||d.type==="state")&&!s.startsWith("_")?V.setValue(n.native,s,this.state.data[s]):(V.setValue(n.native,s,null),u[s]=this.state.data[s])}try{const s=JSON.parse(JSON.stringify(n));if(Array.isArray(s.encryptedNative)){await Eo("../../lib/js/crypto-js/crypto-js.js","crypto-js");for(const d of s.encryptedNative)s.native[d]&&(s.native[d]=Lf(this.secret,s.native[d]))}await this.props.socket.setObject(s._id,s)}catch(s){window.alert(`[JsonConfig] Cannot set object: ${s}`)}const i={...n.native,...u};console.log(i),this.setState({changed:!1,data:i,updateData:this.state.updateData+1,originalData:i},()=>t&&P.Router.doNavigate(null))}else this.state.changed?this.setState({confirmDialog:!0}):P.Router.doNavigate(null)}componentDidUpdate(e,t){t.changed!==this.state.changed&&this.props.configStored(!this.state.changed)}async componentDidMount(){const e=`${window.location.protocol}//${window.location.host}${window.location.pathname}validate_config/${this.props.adapterName}`;console.log(`fetch ${e}`),await fetch(e)}render(){return!this.state.data||!this.state.schema?x.createElement(Wi,null):x.createElement("div",{style:jt.root},this.renderDialogConfirm(),this.getExportImportButtons(),this.renderSaveConfigDialog(),x.createElement(ki,{key:this.state.hash,style:jt.scroll,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,adapterName:this.props.adapterName,instance:this.props.instance,isFloatComma:this.props.isFloatComma,dateFormat:this.props.dateFormat,schema:this.state.schema,common:this.state.common,expertMode:this.props.expertMode,data:this.state.data,updateData:this.state.updateData,onError:e=>this.setState({error:e}),onChange:(e,t,n)=>{n&&this.state.error&&(window.alert(P.I18n.t("Cannot save configuration because of error in configuration")),n=!1),n&&!this.state.changed&&!t&&(n=!1),e?this.setState({data:e,changed:t,saveConfigDialog:n}):n!==void 0&&this.setState({saveConfigDialog:n})},DeviceManager:this.props.DeviceManager,theme:this.state.theme,customComponents:this.props.customComponents,imagePrefix:"."}),x.createElement(P.SaveCloseButtons,{isIFrame:!1,dense:!0,paddingLeft:0,newReact:!0,theme:this.state.theme,noTextOnButtons:this.props.width==="xs"||this.props.width==="sm"||this.props.width==="md",changed:!!(this.state.error||this.state.changed),error:!!this.state.error,onSave:e=>this.onSave(!0,e),onClose:()=>this.onSave(!1)}))}};export{V as ConfigGeneric,tn as ConfigPanel,Mf as JsonConfig,ki as JsonConfigComponent}; +`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;const t=Si(e),n=cn(t);return n.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;const t=Si(e),n=cn(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(n=>n.type==="newline"||n.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}}function Sf(m){const e=m.prettyErrors!==!1;return{lineCounter:m.lineCounter||e&&new wf||null,prettyErrors:e}}function Ef(m,e={}){const{lineCounter:t,prettyErrors:n}=Sf(e),h=new Cf(t==null?void 0:t.addNewLine),i=new gf(e);let s=null;for(const d of i.compose(h.parse(m),!0,m.length))if(!s)s=d;else if(s.options.logLevel!=="silent"){s.errors.push(new Bn(d.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&t&&(s.errors.forEach(wo(m,t)),s.warnings.forEach(wo(m,t))),s}function Af(m,e,t){let n;const h=Ef(m,t);if(!h)return null;if(h.warnings.forEach(i=>ga(h.options.logLevel,i)),h.errors.length>0){if(h.options.logLevel!=="silent")throw h.errors[0];h.errors=[]}return h.toJS(Object.assign({reviver:n},t))}const xs={flex:{display:"flex"},button:{height:48,minWidth:48},wrapper:{width:"calc(100vw - 40px)",height:"calc(100vh - 188px)"}};class Df extends V{async componentDidMount(){await super.componentDidMount();const{data:e,attr:t}=this.props,n=V.getValue(e,t)||"";this.setState({value:n,initialized:!0,yamlError:this.validateYaml(n)})}validateYaml(e){let t=!1;if(this.props.schema.validateYaml!==!1&&(e||!this.props.schema.allowEmpty))try{Af(e)}catch(n){console.log("Error in YAML",n),t=!0}return t}renderItem(e,t){if(!this.state.initialized)return null;const{schema:n,data:h,attr:i}=this.props,{value:s,showSelectId:d}=this.state,o=n.readOnly===!0||t;return $.createElement(fe,{fullWidth:!0,variant:"standard"},$.createElement("div",{style:xs.flex},$.createElement(ve,{color:"grey",style:xs.button,size:"small",variant:"outlined",onClick:()=>this.setState({showSelectId:!0})},P.I18n.t("ra_YAML editor"))),d?$.createElement(qs,{title:this.getText(n.label),overflowHidden:!0,applyDisabled:this.state.yamlError&&this.props.schema.doNotApplyWithError||o,onClose:()=>{o?this.setState({showSelectId:!1}):this.setState({showSelectId:!1,value:V.getValue(h,i)||""})},onApply:o?void 0:()=>this.setState({showSelectId:!1},()=>this.onChange(i,s))},$.createElement("div",{style:{...xs.wrapper,border:this.state.yamlError?"2px solid red":"2px solid transparent"}},$.createElement(sr,{mode:"yaml",value:typeof s=="object"?JSON.stringify(s):s,onChange:o?void 0:l=>this.setState({value:l,yamlError:this.validateYaml(l)}),name:"ConfigYamlEditor",themeType:this.props.oContext.themeType}))):null,n.help||this.state.yamlError?$.createElement(ge,null,this.state.yamlError?P.I18n.t("ra_Invalid YAML"):this.renderHelp(this.props.schema.help,this.props.schema.helpLink,this.props.schema.noTranslation)):null)}}class $f extends V{async componentDidMount(){await super.componentDidMount();const e=await Uo(()=>import("./index-B5DqCD_a.js").then(t=>t.i),__vite__mapDeps([0,1,2,3]),import.meta.url);this.setState({QRCode:e.default})}renderItem(){const e=this.state.QRCode;if(!e)return null;const t=Math.max(32,Math.round((this.props.schema.size||256)*.15));return $.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:this.props.schema.bgColor||"white",padding:t,width:"100%",height:"100%"}},$.createElement(e,{title:this.getText(this.props.schema.tooltip),value:this.props.schema.data,size:this.props.schema.size,fgColor:this.props.schema.fgColor,bgColor:this.props.schema.bgColor,level:this.props.schema.level}))}}class xf extends V{initialized=!1;localContext;async componentDidMount(){await super.componentDidMount();const e=await Uo(()=>import("./index-B5DqCD_a.js").then(t=>t.i),__vite__mapDeps([0,1,2,3]),import.meta.url);this.setState({QRCode:e.default}),this.props.schema.sendFirstByClick||await this.askInstance()}async askInstance(){if(this.props.alive){let e=this.props.schema.data;if(e===void 0&&this.props.schema.jsonData){const n=await this.getPatternAsync(this.props.schema.jsonData,null,!0);if(n)try{e=JSON.parse(n)}catch{console.error(`Cannot parse json data: ${JSON.stringify(e)}`)}}e===void 0&&(e=null);const t=await this.getPatternAsync(this.props.schema.instance||`${this.props.oContext.adapterName}.${this.props.oContext.instance}`);if(t!==`${this.props.oContext.adapterName}.${this.props.oContext.instance}`){const n=await this.props.oContext.socket.getState(`system.adapter.${t}.alive`);if(!(n!=null&&n.val)){window.alert(P.I18n.t("ra_Instance %s is not alive",t));return}}this.setState({loading:!0},()=>this.props.oContext.socket.sendTo(t,this.props.schema.command||"send",e).then(n=>this.setState({qrData:n||"",loading:!1})))}}getContext(){const e={};return Array.isArray(this.props.schema.alsoDependsOn)&&this.props.schema.alsoDependsOn.forEach(t=>e[t]=V.getValue(this.props.data,t)),JSON.stringify(e)}renderItem(){if(this.props.alive){const n=this.getContext();(n!==this.localContext||!this.initialized)&&(this.localContext=n,(!this.props.schema.sendFirstByClick||this.state.qrData!==void 0)&&setTimeout(()=>this.askInstance(),this.initialized?300:50),this.initialized=!0)}if(!this.state.qrData&&this.props.schema.sendFirstByClick)return this.props.alive?$.createElement("div",{style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"center",cursor:this.state.loading?"default":"pointer"},onClick:()=>!this.state.loading&&this.askInstance()},this.state.loading?$.createElement(Tt,null):typeof this.props.schema.sendFirstByClick=="boolean"?P.I18n.t("ra_Click to show"):this.getText(this.props.schema.sendFirstByClick,this.props.schema.noTranslation)):$.createElement("div",{style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"center",cursor:this.state.loading?"default":"pointer"},onClick:()=>!this.state.loading&&this.askInstance()},P.I18n.t("ra_Instance %s is not alive",this.props.oContext.instance.toString()));const e=this.state.QRCode;if(!e||this.state.qrData===void 0)return null;const t=Math.max(32,Math.round((this.props.schema.size||256)*.15));return $.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:this.props.schema.bgColor||"white",padding:t,width:"100%",height:"100%"}},$.createElement(e,{title:this.getText(this.props.schema.tooltip),value:this.state.qrData,size:this.props.schema.size,fgColor:this.props.schema.fgColor,bgColor:this.props.schema.bgColor,level:this.props.schema.level}))}}const _f={accordion:Sh,alive:Eh,autocomplete:Ah,autocompleteSendTo:Dh,certCollection:kh,certificate:xh,certificates:_h,checkbox:Lh,checkDocker:Th,checkLicense:$t,chip:Vr,chips:Vr,color:Rh,coordinates:Nh,credential:Zs,cron:$h,custom:Kn,datePicker:Bh,deviceManager:Ph,divider:Zp,file:Qh,fileSelector:Hi,func:Xh,header:ed,iframe:Zh,iframeSendTo:qh,image:nu,imageSendTo:tu,infoBox:iu,instance:su,interface:ru,ip:eu,jsonEditor:Lp,language:Ip,license:Op,number:Fp,oauth2:Rp,objectId:Np,password:Bp,pattern:Pp,port:jp,qrCode:$f,qrCodeSendTo:xf,room:Hp,select:zp,selectSendTo:Up,sendto:ro,sendTo:ro,setState:Jp,slider:Yp,state:Xp,staticImage:td,staticInfo:nd,staticLink:uo,staticText:uo,table:Qe,text:od,textSendTo:ld,timePicker:cd,topic:ud,uuid:pd,user:dd,yamlEditor:Df},lt={fullWidth:{width:"100%"},paper:{margin:1,width:"auto !important",overflowY:"auto",paddingBottom:1},paperWithIcons:{height:"calc(100vh - 259px) !important"},paperWithoutIcons:{height:"calc(100vh - 235px) !important"},padding:{padding:"10px"},heading:{},primary:m=>({backgroundColor:m.palette.primary.main,color:m.palette.mode==="dark"?"inherit":"#FFF"}),secondary:m=>({backgroundColor:m.palette.secondary.main})};class tn extends V{async componentDidMount(){var e;await super.componentDidMount(),(e=this.props.schema)!=null&&e.collapsable&&this.setState({expanded:(window._localStorage||window.localStorage).getItem(`${this.props.oContext.adapterName}.${this.props.attr}`)==="true"})}renderItems(e,t){return e?Object.keys(e).map(n=>{if(this.props.oContext.multiEdit&&e[n].noMultiEdit)return null;const h=e[n].type||"panel";let i,s="Use this.props.oContext.socket!";if(h==="custom")e[n].url?i=Kn:this.props.oContext.customs&&this.props.oContext.customs[e[n].component]?i=this.props.oContext.customs[e[n].component]:(console.error(`Cannot find custom component: ${e[n].component}`),i=V),s=this.props.oContext.socket;else if(h==="component")if(this.props.customComponents[e[n].subType])i=this.props.customComponents[e[n].subType];else return $.createElement("div",{key:`${n}_${this.props.index??""}`},`Component ${e[n].subType} not provided`);else h==="panel"?i=tn:i=_f[h]||V;return $.createElement(i,{socket:s,globalData:this.props.globalData,oContext:this.props.oContext,key:`${n}_${this.props.index??""}`,index:this.props.index,changed:this.props.changed,arrayIndex:this.props.arrayIndex,expertMode:this.props.expertMode,commandRunning:this.props.commandRunning,style:lt.panel,common:this.props.common,alive:this.props.alive,themeName:this.props.themeName,data:this.props.data,originalData:this.props.originalData,onError:this.props.onError,onHiddenChanged:this.props.onHiddenChanged,onFilterLabelUpdate:this.props.onFilterLabelUpdate,onChange:this.props.onChange,disabled:t,customObj:this.props.customObj,custom:this.props.custom,schema:e[n],attr:n,table:this.props.table,customComponents:this.props.customComponents})}):null}render(){const e=this.props.schema;if(!e||(this.updateCalculatedValues(),!this.state.calculatedValues))return null;const t=this.props.schema.items,n=this.props.schema.style||{};if(this.state.calculatedValues.hidden){if(e.hideOnlyControl){const i=$.createElement(ze,{size:{xs:e.xs||void 0,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0},sx:P.Utils.getStyle(this.props.oContext.theme,{marginBottom:0,textAlign:"left"},n,this.props.oContext.themeType==="dark"&&e.darkStyle)});return e.newLine?$.createElement($.Fragment,null,$.createElement("div",{style:{flexBasis:"100%",height:0}}),i):i}return null}if(this.props.table)return this.renderItems(t,this.state.calculatedValues.disabled);if(this.props.custom)return $.createElement(ze,{key:`${this.props.attr}_${this.props.index}`,container:!0,style:lt.fullWidth,columnSpacing:2,rowSpacing:1,sx:n},this.renderItems(t,this.state.calculatedValues.disabled));let h;if(e.collapsable)h=$.createElement(js,{key:`${this.props.attr}_${this.props.index}`,style:lt.fullWidth,expanded:!!this.state.expanded,onChange:()=>{(window._localStorage||window.localStorage).setItem(`${this.props.oContext.adapterName}.${this.props.attr}`,this.state.expanded?"false":"true"),this.setState({expanded:!this.state.expanded})}},$.createElement(Hs,{expandIcon:$.createElement(Ii,null),sx:P.Utils.getStyle(this.props.oContext.theme,n,this.props.oContext.themeType&&e.darkStyle,e.color==="primary"?lt.primary:e.color==="secondary"&<.secondary,{width:"100%"})},$.createElement(yt,{style:lt.heading},this.getText(e.label))),$.createElement(zs,null,$.createElement(ze,{container:!0,columnSpacing:2,rowSpacing:1,sx:{...n,width:"100%",padding:"10px"}},this.renderItems(t,this.state.calculatedValues.disabled))));else{const i=P.Utils.getStyle(this.props.oContext.theme,this.props.style,n,{width:"100%"},this.props.isParentTab&<.paper,this.props.isParentTab&&(this.props.withoutSaveButtons?this.props.withIcons?{height:"calc(100% - 88px) !important"}:{height:"calc(100% - 64px) !important"}:this.props.withIcons?lt.paperWithIcons:lt.paperWithoutIcons));h=$.createElement(Ie,{component:"div",key:`${this.props.attr}_${this.props.index}`,className:this.props.className,sx:i},$.createElement(ze,{container:!0,columnSpacing:2,rowSpacing:1,sx:P.Utils.getStyle(this.props.oContext.theme,{width:"100%"},this.props.isParentTab&<.padding,this.props.schema.innerStyle)},this.renderItems(t,this.state.calculatedValues.disabled)))}if(!this.props.isParentTab){const i=$.createElement(ze,{title:this.getText(e.tooltip),size:{xs:e.xs||void 0,sm:e.sm||void 0,md:e.md||void 0,lg:e.lg||void 0,xl:e.xl||void 0},sx:{marginBottom:0,textAlign:"left",...n}},h);return e.newLine?$.createElement($.Fragment,null,$.createElement("div",{style:{flexBasis:"100%",height:0}}),i):i}return h}}const Ei={tabs:{height:"100%",width:"100%"},panel:{width:"100%",display:"block"},panelWithIcons:{height:"calc(100% - 72px)"},panelWithoutIcons:{height:"calc(100% - 48px)"}};class kf extends V{resizeTimeout=null;calculateTimeoutTable=null;refDiv;constructor(e){super(e);let t;if(this.props.root){const n=(window.location.hash||"").replace(/^#/,"").split("/");if(n.length>=3&&n[1]==="config"){const h=n[3],i=parseInt(h,10);h&&i.toString()===h?i>=0&&i{const n=this.state.tab;if(!n){this.props.onError(e,t);return}const h={...this.state.tabErrors};h[n]||(h[n]={}),t?h[n][e]=t:(delete h[n][e],Object.keys(h[n]).length===0&&delete h[n]),this.setState({tabErrors:h}),this.props.onError(e,t)};hasTabErrors=e=>!!(this.state.tabErrors[e]&&Object.keys(this.state.tabErrors[e]).length>0);componentWillUnmount(){this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null),this.calculateTimeoutTable&&(clearTimeout(this.calculateTimeoutTable),this.calculateTimeoutTable=null),window.removeEventListener("hashchange",this.onHashTabsChanged,!1),super.componentWillUnmount()}onHashTabsChanged=()=>{const e=(window.location.hash||"").replace(/^#/,"").split("/");if(e.length>3&&e[1]==="config"){const t=e[3],n=parseInt(t,10);let h;n.toString()===t?n>=0&&n{this.setState({initialBreakpoint:e})},50),e}return this.state.initialBreakpoint}componentDidUpdate(){var e;!this.state.initialBreakpoint&&((e=this.refDiv.current)!=null&&e.clientWidth)&&this.refDiv.current.clientWidth!==this.state.width&&(this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{var t;this.resizeTimeout=null,this.setState({width:(t=this.refDiv.current)==null?void 0:t.clientWidth})},50))}onMenuChange(e){(window._localStorage||window.localStorage).setItem(`${this.props.dialogName||"App"}.${this.props.oContext.adapterName}`,e),this.setState({tab:e},()=>{if(this.props.root){const t=(window.location.hash||"").split("/");t.length>=3&&t[1]==="config"&&(t[3]=this.state.tab,window.location.hash=t.join("/"))}})}updateCalculatedValuesForTable(){this.calculateTimeoutTable&&clearTimeout(this.calculateTimeoutTable),this.calculateTimeoutTable=setTimeout(async()=>{this.calculateTimeoutTable=null;const e=this.props.schema.items,t={};for(const n in e){let h;if(e[n].expertMode&&!this.props.expertMode){t[n]={hidden:!0,disabled:!1};continue}if(this.props.custom){const i=!!await this.executeCustom(e[n].hidden,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.index,this.props.globalData);if(i){t[n]={hidden:!0,disabled:!1};continue}h=!!await this.executeCustom(e[n].disabled,this.props.data,this.props.customObj,this.props.oContext.instanceObj,this.props.index,this.props.globalData),t[n]={hidden:i,disabled:h}}else{if(!!await this.execute(e[n].hidden,!1,this.props.data,this.props.index,this.props.globalData)){t[n]={hidden:!0,disabled:!1};continue}h=!!await this.execute(e[n].disabled,!1,this.props.data,this.props.index,this.props.globalData),t[n]={hidden:!1,disabled:h}}}JSON.stringify(t)!==JSON.stringify(this.state.calculatedValuesTable)&&this.setState({calculatedValuesTable:t})},50)}render(){const e=this.props.schema.items;let t=!1;if(this.updateCalculatedValuesForTable(),!this.state.calculatedValuesTable)return null;const n=[];Object.keys(e).filter(s=>{var d;return!((d=this.state.calculatedValuesTable[s])!=null&&d.hidden)}).map(s=>{var o;const d=this.getIcon(e[s].icon);t||=!!d,n.push({icon:d,disabled:(o=this.state.calculatedValuesTable[s])==null?void 0:o.disabled,label:this.getText(e[s].label),name:s})}),n.find(s=>s.name===this.state.tab)||setTimeout(()=>this.setState({tab:n[0].name}),50);const h=this.getCurrentBreakpoint();let i;return h==="xs"&&n.length>2?i=$.createElement(Pn,{style:{top:2,backgroundColor:this.props.oContext.themeType==="dark"?"#222":"#DDD"},variant:"dense"},$.createElement(se,{onClick:s=>this.setState({openMenu:s.currentTarget})},$.createElement(Jc,null)),this.state.openMenu?$.createElement(dc,{open:!0,anchorEl:this.state.openMenu,onClose:()=>this.setState({openMenu:null})},n.map(s=>{const d=this.hasTabErrors(s.name);return $.createElement($e,{disabled:s.disabled,key:s.name,onClick:()=>{this.setState({openMenu:null},()=>this.onMenuChange(s.name))},selected:s.name===this.state.tab,sx:d?{color:"error.main"}:void 0},t?$.createElement(To,null,s.icon):null,$.createElement(Ie,{sx:{display:"flex",alignItems:"center",gap:.5,width:"100%"}},s.label,d&&$.createElement(Jt,{sx:{fontSize:16,color:"error.main"}})))})):null):i=$.createElement(fc,{variant:"scrollable",scrollButtons:"auto",style:this.props.schema.tabsStyle,value:this.state.tab,onChange:(s,d)=>this.onMenuChange(d)},n.map(s=>{const d=this.hasTabErrors(s.name),o=d?$.createElement(Ie,{sx:{display:"flex",alignItems:"center",gap:.5}},s.label,$.createElement(Jt,{sx:{fontSize:16,color:"error.main"}})):s.label;return $.createElement(gc,{id:s.name,wrapped:!0,disabled:s.disabled,key:s.name,value:s.name,iconPosition:this.props.schema.iconPosition||"start",icon:s.icon,label:o,sx:d?{"& .MuiTab-wrapper":{color:"error.main"}}:void 0})})),$.createElement("div",{style:Ei.tabs,ref:this.refDiv},i,$.createElement(tn,{oContext:this.props.oContext,withoutSaveButtons:this.props.withoutSaveButtons,isParentTab:!0,changed:this.props.changed,key:this.state.tab,expertMode:this.props.expertMode,index:1001,arrayIndex:this.props.arrayIndex,globalData:this.props.globalData,commandRunning:this.props.commandRunning,style:{...Ei.panel,...t?Ei.panelWithIcons:Ei.panelWithoutIcons},common:this.props.common,alive:this.props.alive,themeName:this.props.themeName,data:this.props.data,originalData:this.props.originalData,onChange:this.props.onChange,onError:this.onTabError,customObj:this.props.customObj,custom:this.props.custom,schema:e[this.state.tab],table:this.props.table,withIcons:t,customComponents:this.props.customComponents}))}}const Tf={root:{width:"100%",height:"100%"}};class Ti extends xo{forceUpdateHandlers;errorTimeout=null;errorCached=null;oContext;cachedObjects={};constructor(e){super(e),this.state={originalData:JSON.stringify(this.props.data),changed:!1,errors:{},updateData:this.props.updateData||0,systemConfig:null,alive:!1,commandRunning:!1,schema:JSON.parse(JSON.stringify(this.props.schema))},this.forceUpdateHandlers={},this.buildDependencies(this.state.schema),this.readData().catch(t=>console.error(`Cannot read data: ${t}`))}static getDerivedStateFromProps(e,t){return e.updateData!==t.updateData?{updateData:e.updateData,originalData:JSON.stringify(e.data),schema:JSON.parse(JSON.stringify(e.schema))}:null}static async loadI18n(e,t,n){if(t===!0||t&&typeof t=="string"){const h=P.I18n.getLanguage(),i=typeof t=="string"?t:"i18n";let s=await e.fileExists(`${n}.admin`,`${i}/${h}.json`),d;if(s?d=`${i}/${h}.json`:(s=await e.fileExists(`${n}.admin`,`${i}/${h}/translations.json`),s?d=`${i}/${h}/translations.json`:h!=="en"&&(s=await e.fileExists(`${n}.admin`,`${i}/en.json`),s?d=`${i}/en.json`:(s=await e.fileExists(`${n}.admin`,`${i}/en/translations.json`),s&&(d=`${i}/en/translations.json`)))),d){const o=await e.readFile(`${n}.admin`,d);let l;o.file!==void 0?l=o.file:l=o;try{const r=JSON.parse(l);P.I18n.extendTranslations(r,h)}catch(r){return console.error(`Cannot parse language file "${n}.admin/${d}: ${r}`),""}return d}return console.warn(`Cannot find i18n for ${n} / ${d}`),""}return t&&typeof t=="object"&&P.I18n.extendTranslations(t),""}onCommandRunning=e=>this.setState({commandRunning:e});async readData(){let e;try{this.props.socket.getCompactSystemConfig?e=await this.props.socket.getCompactSystemConfig():e=await this.getCachedObject("system.config")||void 0;const t=await this.props.socket.getState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`);this.setState({systemConfig:e.common,alive:!!(t&&t.val)},()=>{this.updateContext(!0),this.props.custom||this.props.socket.subscribeState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`,this.onAlive)})}catch(t){console.error(`Cannot read system config: ${t}`)}}onAlive=(e,t)=>{!!(t!=null&&t.val)!==this.state.alive&&this.setState({alive:!!(t!=null&&t.val)})};onChange=(e,t,n,h)=>{if(this.props.onValueChange)this.props.onValueChange(e,t,h),n&&n();else if(e&&this.props.onChange){const i={changed:JSON.stringify(e)!==this.state.originalData};this.setState(i,()=>{this.props.onChange(e,i.changed,h),n&&n()})}else h&&this.props.onChange(null,null,h)};onError=(e,t)=>{this.errorCached=this.errorCached||JSON.parse(JSON.stringify(this.state.errors));const n=this.errorCached;t?n[e]=t:delete n[e],this.errorTimeout&&clearTimeout(this.errorTimeout),JSON.stringify(n)!==JSON.stringify(this.state.errors)?this.errorTimeout=setTimeout(()=>this.setState({errors:this.errorCached},()=>{this.errorTimeout=null,this.errorCached=null,this.props.onError(!!Object.keys(this.state.errors).length)}),50):this.errorCached=null};flatten(e,t){return t=t||{},e.items&&Object.keys(e.items).forEach(n=>{t[n]=e.items[n],this.flatten(e.items[n],t)}),t}buildDependencies(e){const t=this.flatten(e);Object.keys(t).forEach(n=>{var h,i,s,d,o,l,r,a,c,p;(h=t[n].confirm)!=null&&h.alsoDependsOn&&((i=t[n].confirm)==null||i.alsoDependsOn.forEach(u=>{if(!t[u])console.error(`[JsonConfigComponent] Attribute ${u} does not exist!`),u.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${u.replace(/^data\./,"")}" instead of "${u}"`);else{t[u].confirmDependsOn=t[u].confirmDependsOn||[];const f={...t[n],attr:n};f.confirm&&(f.confirm.cancel="Undo"),t[u].confirmDependsOn.push(f)}})),(s=t[n].onChange)!=null&&s.alsoDependsOn&&((d=t[n].onChange)==null||d.alsoDependsOn.forEach(u=>{if(!t[u])console.error(`[JsonConfigComponent] Attribute ${u} does not exist!`),u.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${u.replace(/^data\./,"")}" instead of "${u}"`);else{t[u].onChangeDependsOn=t[u].onChangeDependsOn||[];const f={...t[n],attr:n};t[u].onChangeDependsOn.push(f)}})),(o=t[n].hidden)!=null&&o.alsoDependsOn&&((l=t[n].hidden)==null||l.alsoDependsOn.forEach(u=>{if(!t[u])console.error(`[JsonConfigComponent] Attribute ${u} does not exist!`),u.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${u.replace(/^data\./,"")}" instead of "${u}"`);else{t[u].hiddenDependsOn=t[u].hiddenDependsOn||[];const f={...t[n],attr:n};t[u].hiddenDependsOn.push(f)}})),(r=t[n].label)!=null&&r.alsoDependsOn&&((a=t[n].label)==null||a.alsoDependsOn.forEach(u=>{if(!t[u])console.error(`[JsonConfigComponent] Attribute ${u} does not exist!`),u.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${u.replace(/^data\./,"")}" instead of "${u}"`);else{t[u].labelDependsOn=t[u].labelDependsOn||[];const f={...t[n],attr:n};t[u].labelDependsOn.push(f)}})),(c=t[n].help)!=null&&c.alsoDependsOn&&((p=t[n].help)==null||p.alsoDependsOn.forEach(u=>{if(!t[u])console.error(`[JsonConfigComponent] Attribute ${u} does not exist!`),u.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${u.replace(/^data\./,"")}" instead of "${u}"`);else{t[u].helpDependsOn=t[u].helpDependsOn||[];const f={...t[n],attr:n};t[u].helpDependsOn.push(f)}}))})}getCachedObject=async e=>{if(this.cachedObjects[e]!==void 0)return this.cachedObjects[e];try{this.cachedObjects[e]=await this.props.socket.getObject(e)??null}catch(t){console.error(t),this.cachedObjects[e]=null}return this.cachedObjects[e]};updateContext(e){this.oContext={DeviceManager:this.props.DeviceManager,adapterName:this.props.adapterName,changeLanguage:this.changeLanguage,common:this.props.common,customs:this.props.customs,dateFormat:this.props.dateFormat,embedded:this.props.embedded,forceUpdate:this.forceAttrUpdate,imagePrefix:this.props.imagePrefix,instance:this.props.instance,instanceObj:this.props.instanceObj,isFloatComma:this.props.isFloatComma,multiEdit:this.props.multiEdit,onBackEndCommand:this.props.onBackEndCommand,onCommandRunning:this.onCommandRunning,onValueChange:this.props.onValueChange,registerOnForceUpdate:this.registerOnForceUpdate,socket:this.props.socket,systemConfig:this.state.systemConfig,theme:this.props.theme,themeType:this.props.themeType,_themeName:this.props.themeName,updateData:this.state.updateData,getCachedObject:this.getCachedObject},e&&this.forceUpdate()}renderItem(e){return e.type==="tabs"?$.createElement(kf,{withoutSaveButtons:this.props.withoutSaveButtons,oContext:this.oContext,alive:this.state.alive,changed:this.state.changed,commandRunning:this.state.commandRunning,common:this.props.common,custom:this.props.custom,customObj:this.props.customObj,data:this.props.data,onChange:this.onChange,onError:(t,n)=>this.onError(t,n),originalData:JSON.parse(this.state.originalData),root:!0,schema:e,expertMode:this.props.expertMode,themeName:this.props.themeName,customComponents:this.props.customComponents}):e.type==="panel"||!e.type?$.createElement(tn,{withoutSaveButtons:this.props.withoutSaveButtons,oContext:this.oContext,alive:this.state.alive,changed:this.state.changed,commandRunning:this.state.commandRunning,common:this.props.common,custom:this.props.custom,customObj:this.props.customObj,data:this.props.data,expertMode:this.props.expertMode,index:1e3,isParentTab:!this.props.embedded&&!this.props.withoutSaveButtons,onChange:this.onChange,onError:(t,n)=>this.onError(t,n),originalData:JSON.parse(this.state.originalData),root:!0,schema:e,themeName:this.props.themeName,customComponents:this.props.customComponents}):(console.error(`Unknown item type in root: ${JSON.stringify(e)}`),null)}changeLanguage=()=>{this.forceUpdate()};forceAttrUpdate=(e,t)=>{Array.isArray(e)?e.forEach(n=>this.forceUpdateHandlers[n]&&this.forceUpdateHandlers[n](t)):this.forceUpdateHandlers[e]&&this.forceUpdateHandlers[e](t)};registerOnForceUpdate=(e,t)=>{t?this.forceUpdateHandlers[e]=t:this.forceUpdateHandlers[e]&&delete this.forceUpdateHandlers[e]};render(){return!this.state.systemConfig||!this.oContext?$.createElement(ji,null):(this.oContext._themeName!==this.props.themeName&&(this.oContext._themeName=this.props.themeName,setTimeout(()=>this.updateContext(!0),0)),$.createElement("div",{style:{...!this.props.embedded||this.props.withoutSaveButtons?Tf.root:void 0,...this.props.style,...this.state.schema.style}},this.renderItem(this.state.schema)))}}const jt={root:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},scroll:{height:"calc(100% - 48px)",overflowY:"auto"},exportImportButtons:{position:"absolute",top:5,right:0,zIndex:3},button:{marginRight:"5px"},tooltip:{pointerEvents:"none"}};function Lf(m,e){let t="";for(let n=0;n{const h=document.createElement("script");h.setAttribute("id",e),h.onload=n,h.src=m,document.getElementsByTagName("head")[0].appendChild(h)})}let Ff=class extends P.Router{fileSubscribed=[];fileLangSubscribed="";secret;constructor(e){super(e),this.state={updateData:0,changed:!1,confirmDialog:!1,theme:P.Theme(e.themeName),saveConfigDialog:!1,hash:"_"},this.secret=e.secret||"",this.getInstanceObject().then(t=>this.getConfigFile().then(n=>Ti.loadI18n(this.props.socket,n==null?void 0:n.i18n,this.props.adapterName).then(h=>{h&&(this.fileLangSubscribed||(this.fileLangSubscribed=h,this.props.socket.subscribeFiles(`${this.props.adapterName}.admin`,this.fileLangSubscribed,this.onFileChange))),t?this.setState({schema:n,data:t.native,common:t.common,hash:jr(JSON.stringify(n)).toString()}):window.alert(`Instance system.adapter.${this.props.adapterName}.${this.props.instance} not found!`)})))}componentWillUnmount(){super.componentWillUnmount(),this.fileSubscribed.length&&(this.props.socket.unsubscribeFiles(`${this.props.adapterName}.admin`,this.fileSubscribed,this.onFileChange),this.fileSubscribed=[]),this.fileLangSubscribed&&(this.props.socket.unsubscribeFiles(`${this.props.adapterName}.admin`,this.fileLangSubscribed,this.onFileChange),this.fileLangSubscribed="")}handleFileSelect=e=>{const t=e.target.files[0];if(t){const n=new FileReader;n.onload=h=>{if(!h.target)return;const i=h.target.result;try{const s=JSON.parse(i);this.setState({data:s,changed:JSON.stringify(s)!==JSON.stringify(this.state.originalData)})}catch{window.alert(P.I18n.t("[JsonConfig] Failed to parse JSON file"))}},n.readAsText(t)}else window.alert(P.I18n.t("[JsonConfig] Failed to open JSON File"))};getExportImportButtons(){return $.createElement("div",{style:jt.exportImportButtons},$.createElement(me,{title:this.props.t("Import settings from JSON file"),slotProps:{popper:{sx:jt.tooltip}}},$.createElement(Li,{size:"small",sx:{"&.MuiFab-root":jt.button},onClick:()=>{const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity",0),e.addEventListener("change",t=>this.handleFileSelect(t),!1),e.click()}},$.createElement(Br,null))),$.createElement(me,{title:this.props.t("Export setting to JSON file"),slotProps:{popper:{sx:jt.tooltip}}},$.createElement(Li,{size:"small",sx:{"&.MuiFab-root":jt.button},onClick:()=>{this.state.data&&P.Utils.generateFile(`${this.props.adapterName}.${this.props.instance}.json`,this.state.data)}},$.createElement(Br,{style:{transform:"rotate(180deg)"}}))))}onFileChange=async(e,t,n)=>{var h;if(e===`${this.props.adapterName}.admin`&&n){if(t===this.fileLangSubscribed)try{await Ti.loadI18n(this.props.socket,(h=this.state.schema)==null?void 0:h.i18n,this.props.adapterName),this.setState({hash:`${this.state.hash}1`})}catch{}else if(this.fileSubscribed.includes(t))try{const i=await this.getConfigFile(this.fileSubscribed[0]);this.setState({schema:i,hash:jr(JSON.stringify(i)).toString()})}catch{}}};async getInstanceObject(){var e;try{const t=await this.props.socket.getObject(`system.adapter.${this.props.adapterName}.${this.props.instance}`);if(Array.isArray(t.encryptedNative)){if(!this.secret){const n=await this.props.socket.getSystemConfig();await $o("../../lib/js/crypto-js/crypto-js.js","crypto-js"),this.secret=n.native.secret}return(e=t.encryptedNative)==null||e.forEach(n=>{t.native[n]&&(t.native[n]=If(this.secret,t.native[n]))}),t}return t}catch(t){window.alert(`[JsonConfig] Cannot read instance object: ${t}`)}return null}renderDialogConfirm(){return this.state.confirmDialog?$.createElement(P.DialogConfirm,{title:P.I18n.t("ra_Please confirm"),text:P.I18n.t("ra_Some data are not stored. Discard?"),ok:P.I18n.t("ra_Discard"),cancel:P.I18n.t("ra_Cancel"),onClose:e=>this.setState({confirmDialog:!1},()=>e&&P.Router.doNavigate(null))}):null}async scanForInclude(e,t){if(typeof e["#include"]=="string"){const h=await this._getConfigFile(e["#include"],[...t]);return delete e["#include"],h&&(e={...e,...h}),e}const n=Object.keys(e);for(let h=0;h ${t.join(" => ")}`),null;t.push(e);try{await this.props.socket.fileExists(`${this.props.adapterName}.admin`,e)||(e="jsonConfig.json");const h=await this.props.socket.readFile(`${this.props.adapterName}.admin`,e);let i="",s="";if(h.file!==void 0&&(s=h.file),typeof s=="string")i=s;else if(s.type==="Buffer"){let d="";const o=new Uint8Array(s.data),l=o.byteLength;for(let r=0;rthis.setState({saveConfigDialog:!1},()=>e&&this.onSave(!0))}):null}findAttr(e,t){if(t=t||this.state.schema,t!=null&&t.items){if(e in t.items)return t.items[e];for(const n of Object.values(t.items)){const h=this.findAttr(e,n);if(h)return h}}return null}postProcessing(e,t,n){if(n=n||this.state.schema,!e){console.error(`Data is empty in postProcessing: ${t}, ${JSON.stringify(n)}`);return}const h=e[t];if(n.items)if(n.type==="table"){const i=h;if(!Array.isArray(i))return;for(const s of i)for(const d of n.items)this.postProcessing(s,d.attr,d)}else for(const[i,s]of Object.entries(n.items)){if(s.type==="panel"||s.type==="tabs"||s.type==="accordion")return;this.postProcessing(e,i,s)}else if(t&&typeof h=="string")if(n.type==="text")n.trim!==!1&&(e[t]=h.trim());else if(n.type==="ip")e[t]=h.trim();else if(n.type==="number"){const i=parseFloat(h.toString().replace(",","."));n.min!==void 0&&in.max?e[t]=n.max:e[t]=i}else if(n.type==="port"){const i=parseInt(h.toString(),10);n.min!==void 0&&in.max&&(e[t]=n.max),e[t]!==0&&i<20?e[t]=20:i>65535?e[t]=65535:e[t]=i}else n.type==="checkbox"&&(e[t]=e[t]===!0||e[t]==="true"||e[t]==="on"||e[t]===1||e[t]==="1")}async onSave(e,t){if(e){const n=await this.getInstanceObject();if(!n){console.error("Something went wrong: may be no connection?"),window.alert("Something went wrong: may be no connection?");return}if(!this.state.data||!this.state.schema)return;const h={};for(const s of Object.keys(this.state.data)){const d=this.findAttr(s);(!d||!d.doNotSave||d.type==="state")&&!s.startsWith("_")?V.setValue(n.native,s,this.state.data[s]):(V.setValue(n.native,s,null),h[s]=this.state.data[s])}try{const s=JSON.parse(JSON.stringify(n));if(Array.isArray(s.encryptedNative)){await $o("../../lib/js/crypto-js/crypto-js.js","crypto-js");for(const d of s.encryptedNative)s.native[d]&&(s.native[d]=Of(this.secret,s.native[d]))}await this.props.socket.setObject(s._id,s)}catch(s){window.alert(`[JsonConfig] Cannot set object: ${s}`)}const i={...n.native,...h};console.log(i),this.setState({changed:!1,data:i,updateData:this.state.updateData+1,originalData:i},()=>t&&P.Router.doNavigate(null))}else this.state.changed?this.setState({confirmDialog:!0}):P.Router.doNavigate(null)}componentDidUpdate(e,t){t.changed!==this.state.changed&&this.props.configStored(!this.state.changed)}async componentDidMount(){const e=`${window.location.protocol}//${window.location.host}${window.location.pathname}validate_config/${this.props.adapterName}`;console.log(`fetch ${e}`),await fetch(e)}render(){return!this.state.data||!this.state.schema?$.createElement(ji,null):$.createElement("div",{style:jt.root},this.renderDialogConfirm(),this.getExportImportButtons(),this.renderSaveConfigDialog(),$.createElement(Ti,{key:this.state.hash,style:jt.scroll,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,adapterName:this.props.adapterName,instance:this.props.instance,isFloatComma:this.props.isFloatComma,dateFormat:this.props.dateFormat,schema:this.state.schema,common:this.state.common,expertMode:this.props.expertMode,data:this.state.data,updateData:this.state.updateData,onError:e=>this.setState({error:e}),onChange:(e,t,n)=>{n&&this.state.error&&(window.alert(P.I18n.t("Cannot save configuration because of error in configuration")),n=!1),n&&!this.state.changed&&!t&&(n=!1),e?this.setState({data:e,changed:t,saveConfigDialog:n}):n!==void 0&&this.setState({saveConfigDialog:n})},DeviceManager:this.props.DeviceManager,theme:this.state.theme,customComponents:this.props.customComponents,imagePrefix:"."}),$.createElement(P.SaveCloseButtons,{isIFrame:!1,dense:!0,paddingLeft:0,newReact:!0,theme:this.state.theme,noTextOnButtons:this.props.width==="xs"||this.props.width==="sm"||this.props.width==="md",changed:!!(this.state.error||this.state.changed),error:!!this.state.error,onSave:e=>this.onSave(!0,e),onClose:()=>this.onSave(!1)}))}};export{V as ConfigGeneric,tn as ConfigPanel,Ff as JsonConfig,Ti as JsonConfigComponent}; diff --git a/admin/custom/assets/index-DywM1y0D.js b/admin/custom/assets/index-DywM1y0D.js new file mode 100644 index 000000000..c25adbd46 --- /dev/null +++ b/admin/custom/assets/index-DywM1y0D.js @@ -0,0 +1,964 @@ +import{o as He,g as dM,c as zM,a as hM}from"./createTheme-MsdB8zt7.js";import{h as n,a as ye,i as ze,f as Yo,j as Ku,m as qu,_ as Fe,g as Qt,n as el,o as tl,p as ba,l as sl,q as il}from"./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-BW9Qbxx5.js";import{h as er,i as $a,j as Ct,k as de,l as Ie,m as Ae,n as Jt,_ as H,a as ne,o as me,p as X,q as Jr,r as P,s as W,b as le,t as ss,e as Xe,f as te,u as rl,v as ol,w as ls,x as Ml,y as Pa,z as ae,A as Yt,B as nt,C as nl,D as vt,E as al,c as wt,d as As,F as Wa,G as Ut,H as IM,I as Di,J as wM,K as CM,L as cl,M as ul,N as Me,O as Dr,P as ll,Q as Ra,R as Ve,S as AM,T as Nl,U as mM,V as Ll}from"./ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-KsT5vKjV.js";import{_ as Br,a as ge,b as ve,c as ut,d as jl,e as Wi,f as gl,g as Qo,h as vo,i as Uo,j as zs,k as bo,l as tr,m as $o,n as Tl,o as yl,p as Ja,q as Dl,r as Po,s as dl,t as zl,u as Ks,v as hl,w as Il,x as wl,y as Cl,z as Al,A as ml,B as pl,C as Ol,D as El,E as Ba,F as Ga,G as Ri,H as _l,I as Fa,J as fl,K as Sl,L as xl,M as Ha,N as kl,O as Yl,P as Ql,Q as vl,R as Gr,S as Ul,T as bl,U as $l,V as Fr,W as Pl,X as di,Y as Wl,Z as Rl,$ as Jl,a0 as Bl,a1 as Gl,a2 as Fl,a3 as Hl,a4 as Vl,a5 as Zl,a6 as Xl,a7 as Kl,a8 as ql,a9 as eN,aa as tN,ab as sN,ac as ui,ad as iN,ae as rN,af as oN,ag as MN,ah as nN,ai as aN}from"./ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__.mjs-B551AMx-.js";import{C as cN,D as Va,u as uN}from"./index-CzRngQHl.js";function lN(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{u as NN}from"./useTheme-ldICnlmf.js";import"./blue-CagzI6CQ.js";import"./index-D_5kZmfw.js";import"./defaultTheme-CmVP-QNF.js";import"./useTheme-BV4xOYIL.js";import"./ConfigCustomJavascriptSet__loadShare___mf_0_emotion_mf_1_react__loadShare__.mjs-sg07E3QA.js";const dr=11/23/100;function pM(i){const e={r:0,g:0,b:0};if(i.length===7)e.r=parseInt(i.substring(1,3),16),e.g=parseInt(i.substring(3,5),16),e.b=parseInt(i.substring(5,7),16);else if(i.length===4){const t=i[1],s=i[2],r=i[3];e.r=parseInt(t+t,16),e.g=parseInt(s+s,16),e.b=parseInt(r+r,16)}return e}function LN(i){return`#${Math.round(i.r).toString(16).padStart(2,"0")}${Math.round(i.g).toString(16).padStart(2,"0")}${Math.round(i.b).toString(16).padStart(2,"0")}`}function jN(i,e,t){const s=pM(i),r=pM(e);return s.r+=r.r*(.05+dr*(t-1)),s.g+=r.g*(.05+dr*(t-1)),s.b+=r.b*(.05+dr*(t-1)),LN(s)}function zi(i,e){const t={};for(let s=1;s<=24;s++)t[`elevation${s}`]={backgroundColor:jN(i,e,s)};return t}function gN(i,e){var M,a,u,l,N,c,L,j,g,y,d;let t,s;i==="dark"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[200],"&:hover":{color:He[100]}}},MuiPaper:zi("#121212","#fff")},t={name:i,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):i==="blue"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#3399CC"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[400],"&:hover":{color:He[300]}}}},t={name:i,palette:{mode:"dark",background:{paper:"#151d21",default:"#151d21"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):i==="colored"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#2a3135"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[200],"&:hover":{color:He[100]}}},MuiPaper:zi("#151d21","#fff")},t={name:i,palette:{mode:"light",primary:{main:"#3399CC"},secondary:{main:"#164477"},expert:"#96fc96"}}):i==="PT"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#0F99DE"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[400],"&:hover":{color:He[300]}}}},t={name:i,palette:{mode:"light",primary:{main:"#0F99DE"},secondary:{main:"#88A536"},expert:"#BD1B24"}}):i==="NW"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[400],"&:hover":{color:He[300]}}},MuiPaper:zi("#121212","#fff")},t={name:i,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#00af78"},secondary:{main:"#005a40"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):i==="HA"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:"#db0a33","&:hover":{color:"#FF0a33"}}},MuiPaper:zi("#121212","#fff")},t={name:i,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#970720"},secondary:{main:"#db0a33"},expert:"#db0a33",nonAck:"#ffe96a",text:{primary:"#ffffff",secondary:"#ffffff"}}}):(s={MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[400],"&:hover":{color:He[300]}}}},t={name:i,palette:{mode:"light",primary:{main:"#3399CC",dark:"#256c97",light:"#76d0fd"},secondary:{main:"#164477"},expert:"#14bb00"}}),t.toolbar={height:48},t.saveToolbar={background:(a=(M=t.palette)==null?void 0:M.primary)==null?void 0:a.main,button:{borderRadius:3,height:32}},t.palette&&(t.palette.grey={main:dM[300],dark:dM[400]});const r=zM(t),o=r.palette;return zM(r,{...e||void 0,components:{...s,MuiButton:{variants:[{props:{variant:"contained",color:"grey"},style:{backgroundColor:(u=o.grey)==null?void 0:u[300],color:o.getContrastText&&((l=o.grey)!=null&&l[300])?o.getContrastText(o.grey[300]):void 0}},{props:{variant:"outlined",color:"grey"},style:{color:(N=o.text)==null?void 0:N.primary,borderColor:o.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)","&.Mui-disabled":{border:`1px solid ${(c=o.action)==null?void 0:c.disabledBackground}`},"&:hover":{borderColor:o.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)",backgroundColor:hM(((L=o.text)==null?void 0:L.primary)||"",((j=o.action)==null?void 0:j.hoverOpacity)||.04)}}},{props:{variant:"text",color:"grey"},style:{color:(g=o.text)==null?void 0:g.primary,"&:hover":{backgroundColor:hM(((y=o.text)==null?void 0:y.primary)||"",((d=o.action)==null?void 0:d.hoverOpacity)||.04)}}}]},...(e==null?void 0:e.components)||void 0}})}function TN(){let i,e;const t=new Promise((s,r)=>{i=s,e=r});return t.resolve=i,t.reject=e,t}function Hr(i){return(i==null?void 0:i.rows.map(e=>e.value).filter(e=>!!e))??[]}function ht(i){return i!=null&&i.startsWith("system.host.")||(i=`system.host.${i}`),i}function Ps(i){return i!=null&&i.startsWith("system.host.")&&(i=i.substring(12)),i}function OM(i){return new Promise(e=>{setTimeout(e,i)})}function hi(i){i=(i||"").toString();const e=i[0]==="*",t=i[i.length-1]==="*";return i=i.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+i+(t?"":"$")}typeof globalThis.process<"u"&&(globalThis.location||={href:"http://localhost:8081/",protocol:"http:",host:"localhost:8081",pathname:"/",hostname:"localhost",reload:()=>{}},globalThis.localStorage||={_keys:{},setItem:(i,e)=>{globalThis.localStorage._keys[i]=e},getItem:i=>i in globalThis.localStorage._keys?globalThis.localStorage._keys[i]:null,removeItem:i=>{i in globalThis.localStorage._keys&&delete globalThis.localStorage._keys[i]}},globalThis.sessionStorage||=globalThis.localStorage,globalThis.navigator||={language:"en"});var at;(function(i){i[i.CONNECTING=0]="CONNECTING",i[i.CONNECTED=1]="CONNECTED",i[i.OBJECTS_LOADED=2]="OBJECTS_LOADED",i[i.READY=3]="READY"})(at||(at={}));var Se;(function(i){i.PERMISSION_ERROR="permissionError",i.NOT_CONNECTED="notConnectedError",i.TIMEOUT="timeout",i.NOT_ADMIN="Allowed only in admin",i.NOT_SUPPORTED="Not supported"})(Se||(Se={}));const Zje=Se.PERMISSION_ERROR;Se.NOT_CONNECTED;const yN=["material","echarts","vis"];class Ee{props;connId;lastAccessToken=null;ignoreState="";connected=!1;subscribed=!1;firstConnect=!0;waitForRestart=!1;loaded=!1;simStates={};objectViewCached;constructor(e){this.props=this.applyDefaultProps(e),this.connId=`${this.props.name?`${this.props.name}-`:""}${Math.round(Math.random()*1e6).toString().padStart(6,"0")}`,this.waitForSocketLib().then(()=>this.startSocket()).catch(t=>{alert(`Socket connection could not be initialized: ${t}`)})}applyDefaultProps(e){return{...e,protocol:e.protocol||globalThis.location.protocol,host:e.host||globalThis.location.hostname,port:e.port||(globalThis.location.port==="3000"?8081:globalThis.location.port),ioTimeout:Math.max(e.ioTimeout||2e4,2e4),cmdTimeout:Math.max(e.cmdTimeout||5e3,5e3),admin5only:e.admin5only||!1,autoSubscribes:e.autoSubscribes??[],autoSubscribeLog:e.autoSubscribeLog??!1,doNotLoadACL:e.doNotLoadACL??!0,doNotLoadAllObjects:e.doNotLoadAllObjects??!0}}statesSubscribes={};filesSubscribes={};objectsSubscribes={};objects={};states={};acl=null;isSecure=!1;onReadyDone=!1;onConnectionHandlers=[];onLogHandlers=[];onCmdStdoutHandler;onCmdStderrHandler;onCmdExitHandler;onError(e){(this.props.onError??console.error)(e)}_socket;_waitForSocketPromise;_waitForFirstConnectionPromise=TN();_instanceSubscriptions={};_promises={};_authTimer=null;_refreshTimer=null;_systemConfig;get systemConfig(){return this._systemConfig}systemLang="en";static isWeb(){return globalThis.socketUrl!==void 0}waitForSocketLib(){return this._waitForSocketPromise?this._waitForSocketPromise:(this._waitForSocketPromise=new Promise(async(e,t)=>{if(this.props.connect){e();return}if(typeof globalThis.io>"u"&&typeof globalThis.iob>"u")if(typeof globalThis.registerSocketOnLoad=="function")globalThis.registerSocketOnLoad(()=>e());else{for(let s=1;s<=30;s++){if(globalThis.io||globalThis.iob)return e();await OM(100)}t(new Error("Socket library could not be loaded!"))}else e()}),this._waitForSocketPromise)}async startSocket(){if(this._socket)return;let e=this.props.host,t=this.props.port,s=(this.props.protocol||globalThis.location.protocol).replace(":",""),r=globalThis.location.pathname;if(globalThis.location.hostname==="iobroker.net"||globalThis.location.hostname==="iobroker.pro")r="";else{if(globalThis.socketUrl){const u=new globalThis.URL(globalThis.socketUrl);e=u.hostname,t=u.port,s=u.protocol.replace(":","")}const a=r.lastIndexOf("/");if(a!==-1&&(r=r.substring(0,a+1)),Ee.isWeb()){const u=r.split("/");u.length>2&&(u.pop(),u.pop(),yN.includes(u[u.length-1])&&u.pop(),r=u.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?`${s}://${e}:${t}`:`${s}://${e}`,M=this.props.connect||(globalThis.io||globalThis.iob).connect;return this._socket=M(o,{path:r.endsWith("/")?`${r}socket.io`:`${r}/socket.io`,query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid,token:this.props.token}),this._socket.on("connect",a=>{var l;(l=globalThis.addEventListener)==null||l.call(globalThis,"storage",this.onAccessTokenUpdated);const u=Ee.readTokens();if(u&&!u.owner){const N=Date.now();this.saveTokens({access_token:u.access_token,refresh_token:u.refresh_token,expires_in:Math.round((u.expires_in.getTime()-N)/1e3),refresh_token_expires_in:Math.round((u.refresh_token_expires_in.getTime()-N)/1e3),token_type:"Bearer"},u.stayLoggedIn)}this.onReadyDone=!1,a!==!0?(this.connected=!0,setTimeout(()=>this.getVersion().then(N=>{const[c,L,j]=N.version.split(".");parseInt(c,10)*1e4+parseInt(L,10)*100+parseInt(j,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",(y,d)=>this.onPreConnect(y,d))}).catch(N=>this.onError({message:N.toString(),operation:"getVersion"})),500)):this._socket.emit("authenticate",(N,c)=>{this.onPreConnect(N,c)})}),this._socket.on("reconnect",()=>{var a,u;this.onReadyDone=!1,(u=(a=this.props).onProgress)==null||u.call(a,at.READY),this.connected=!0,this.waitForRestart?globalThis.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach(l=>l(!0)))}),this._socket.on("disconnect",()=>{var a,u;this.onReadyDone=!1,this.connected=!1,this.subscribed=!1,(u=(a=this.props).onProgress)==null||u.call(a,at.CONNECTING),this.onConnectionHandlers.forEach(l=>l(!1))}),this._socket.on("reauthenticate",()=>this.authenticate()),this._socket.on("log",a=>{var u,l;(l=(u=this.props).onLog)==null||l.call(u,a),this.onLogHandlers.forEach(N=>N(a))}),this._socket.on("error",a=>{let u;a==null?u="":typeof a.toString=="function"?u=a.toString():(u=JSON.stringify(a),console.error(`Received strange error: ${u}`)),u.includes("User not authorized")?this.authenticate():u.includes("websocket error")?(console.error(`Socket Error => reload: ${a}`),globalThis.location.reload()):console.error(`Socket Error: ${a}`)}),this._socket.on("connect_error",a=>console.error(`Connect error: ${a}`)),this._socket.on("permissionError",a=>this.onError({message:"no permission",operation:a.operation,type:a.type,id:a.id||""})),this._socket.on("objectChange",(a,u)=>{setTimeout(()=>this.objectChange(a,u),0)}),this._socket.on("stateChange",(a,u)=>{setTimeout(()=>this.stateChange(a,u),0)}),this._socket.on("im",(a,u,l)=>{setTimeout(()=>this.instanceMessage(a,u,l),0)}),this._socket.on("fileChange",(a,u,l)=>{setTimeout(()=>this.fileChange(a,u,l),0)}),this._socket.on("cmdStdout",(a,u)=>{var l;(l=this.onCmdStdoutHandler)==null||l.call(this,a,u)}),this._socket.on("cmdStderr",(a,u)=>{var l;(l=this.onCmdStderrHandler)==null||l.call(this,a,u)}),this._socket.on("cmdExit",(a,u)=>{var l;(l=this.onCmdExitHandler)==null||l.call(this,a,u)}),Promise.resolve()}onPreConnect(e,t){var s,r;this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?globalThis.location.reload():(this.firstConnect?this.loadData().catch(o=>{console.error(`Cannot load data: ${o}`)}):(r=(s=this.props).onProgress)==null||r.call(s,at.READY),this._subscribe(!0),this.onConnectionHandlers.forEach(o=>o(!0)),this.checkAccessTokenExpire()),this._waitForFirstConnectionPromise.resolve()}static readTokens(){let e=globalThis.sessionStorage.getItem("iob_tokens");const t=!e;if(e||(e=globalThis.localStorage.getItem("iob_tokens")),!e)return null;const[s,r,o,M,a]=e.split(";"),u=new Date(r);return u.getTime(){if(e.key==="iob_tokens"){const t=Ee.readTokens();t&&(console.log(`Tab ${this.connId} received updated token: ${t.access_token}`),this.updateTokenExpiration(t.access_token))}};updateTokenExpiration(e){this.lastAccessToken!==e&&(this.lastAccessToken=e,this._socket.emit("updateTokenExpiration",e,(t,s)=>{t?(console.error(`[UPDATE/${new Date().toISOString()}] cannot say to server about new token: ${t}`),globalThis.location.reload()):s?console.log(`[UPDATE/${new Date().toISOString()}] server accepted new token: ${e}`):(console.error(`[UPDATE/${new Date().toISOString()}] cannot say to server about new token`),globalThis.location.reload())})),this.checkAccessTokenExpire()}refreshTokens(e,t){if(!e){console.log(`[REFRESH/${new Date().toISOString()}] No token structure found => reloading the page`),setTimeout(()=>globalThis.location.reload(),500);return}t||!e.owner||e.owner===this.connId?(console.log(`[REFRESH/${new Date().toISOString()}] claim ownership of the token`),this.acquireTokenLock()?(console.log(`[REFRESH/${new Date().toISOString()}] refreshing token`),fetch("./oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`grant_type=refresh_token&refresh_token=${e.refresh_token}&client_id=ioBroker&stayloggedin=${e.stayLoggedIn}`}).then(s=>{if(s.ok)return s.json();throw new Error("Cannot refresh access token")}).then(s=>{if(s.access_token)console.log(`[REFRESH/${new Date().toISOString()}] received new token: ${s.access_token}`),this.saveTokens(s,e.stayLoggedIn),this.releaseTokenLock(),this.updateTokenExpiration(s.access_token);else throw new Error("Cannot get access token")}).catch(s=>{console.warn(`[REFRESH/${new Date().toISOString()}] cannot refresh token: ${s}`),this.releaseTokenLock(),this.deleteTokens(e.stayLoggedIn),console.error(s),globalThis.location.reload()})):(console.log(`[REFRESH/${new Date().toISOString()}] Someone else is updating the token, so wait for the next check`),this.checkAccessTokenExpire())):this.lastAccessToken!==e.access_token&&this.updateTokenExpiration(e.access_token)}acquireTokenLock(){const e=Date.now(),t=globalThis.localStorage.getItem("iob_token_semaphore");if(t)try{const r=JSON.parse(t);if(e{r?(console.log(`[TOKEN/${new Date().toISOString()}] Token will be prolonged`),this.refreshTokens(e,s)):(console.log(`[TOKEN/${new Date().toISOString()}] Token will not be prolonged. Reloading the page`),setTimeout(()=>globalThis.location.reload(),Date.now()>t?500:t-Date.now()))})):(console.log(`[TOKEN/${new Date().toISOString()}] No tokenTimeoutHandler defined. Prolonging the token`),this.refreshTokens(e,s))):this.lastAccessToken!==e.access_token?(console.log(`[TOKEN/${new Date().toISOString()}] We are not the owner of the token, but we will inform the server about new token`),this.refreshTokens(e)):(console.log(`[TOKEN/${new Date().toISOString()}] We are not the owner of the token and the token did not change. Check in 3 seconds if the owner updated the token`),this._refreshTimer=setTimeout(()=>{this._refreshTimer=null,this.checkAccessTokenExpire()},3e3)):(console.log(`[TOKEN/${new Date().toISOString()}] We do not have a refresh token, so we need to reauthenticate`),setTimeout(()=>globalThis.location.reload(),Date.now()>t?500:t-Date.now()))}else this._refreshTimer=setTimeout(()=>{this._refreshTimer=null,this.checkAccessTokenExpire()},t-Date.now()-3e4>12e4?12e4:t-Date.now()-3e4)}}}static isCloud(){return globalThis.location.hostname.includes("amazonaws.com")||globalThis.location.hostname.includes("iobroker.in")?!0:typeof globalThis.socketUrl>"u"?!1:globalThis.socketUrl.includes("iobroker.in")||globalThis.socketUrl.includes("amazonaws")}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnectionPromise}async getUserPermissions(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getUserPermissions",(s,r)=>{s?t(s):e(r||null)})}})}async loadData(){if(this.loaded)return;const e=10;for(let t=1;t<=e;t++){if(this.doLoadData().catch(s=>console.error(`Cannot load data: ${s}`)),this.loaded)return;await OM(Ee.isCloud()?5e3:1e3)}}async doLoadData(){var e,t,s,r,o,M,a,u,l;if(!this.loaded){if(!this.props.doNotLoadACL)try{this.acl=await this.getUserPermissions()}catch(N){this.onError(`Cannot read user permissions: ${N}`);return}try{this.props.admin5only&&!Ee.isWeb()&&(!globalThis.vendorPrefix||globalThis.vendorPrefix==="@@vendorPrefix@@")?this._systemConfig=await this.getCompactSystemConfig():this._systemConfig=await this.getSystemConfig()}catch(N){this.onError(`Cannot read system config: ${N}`);return}this._systemConfig&&(this.systemLang=(e=this._systemConfig.common)==null?void 0:e.language,this.systemLang||(this.systemLang=globalThis.navigator.userLanguage||globalThis.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substring(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en"),this._systemConfig.common.language=this.systemLang)),(s=(t=this.props).onLanguage)==null||s.call(t,this.systemLang),this.loaded=!0,(o=(r=this.props).onProgress)==null||o.call(r,at.CONNECTED),this.firstConnect=!1,this.props.doNotLoadAllObjects?this.props.admin5only?this.objects={}:this.objects={"system.config":this._systemConfig}:this.objects=await this.getObjects(),(a=(M=this.props).onProgress)==null||a.call(M,at.READY),this.onReadyDone||(this.onReadyDone=!0,(l=(u=this.props).onReady)==null||l.call(u,this.objects))}}authenticate(){globalThis.location.search.includes("&href=")?globalThis.location.href=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname}${globalThis.location.search}`:globalThis.location.href=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname}?login&href=${encodeURIComponent(globalThis.location.search+globalThis.location.hash)}`}async subscribeState(...e){let t,s,r;e.length===3?[t,s,r]=e:([t,r]=e,s=!1);let o;if(Array.isArray(t)?o=t:o=[t],typeof r!="function")throw new Error("The state change handler must be a function!");const M=[];for(let a=0;aa.includes("*"))){let a;for(let u=0;uconsole.error(`Cannot call state change handler: ${L}`))}}}else try{const a=await(Ee.isWeb()?this.getStates(o):this.getForeignStates(o));if(a)for(const[u,l]of Object.entries(a)){const N=r(u,l);N instanceof Promise&&N.catch(c=>console.error(`Cannot call state change handler: ${c}`))}}catch(a){console.error(`Cannot getState "${o.join(", ")}": ${a.message}`);return}}async subscribeStateAsync(e,t){return this.subscribeState(e,t)}unsubscribeState(e,t){var o;let s;Array.isArray(e)?s=e:s=[e];const r=[];for(let M=0;M{try{const N=l(e,t,s);N instanceof Promise&&N.catch(c=>console.error(`Cannot call object change handler: ${c}`))}catch(N){console.error(`Error by callback of objectChange: ${N}`)}});if(r){const a=(M=(o=this.props).onObjectChange)==null?void 0:M.call(o,e,t);a instanceof Promise&&a.catch(u=>console.error(`Cannot call object change handler: ${u}`))}}stateChange(e,t){for(const s of Object.values(this.statesSubscribes))if(s.reg.test(e))for(const r of s.cbs)try{const o=r(e,t??null);o instanceof Promise&&o.catch(M=>console.error(`Cannot call state change handler: ${M}`))}catch(o){console.error(`Error by callback of stateChanged: ${o}`)}}instanceMessage(e,t,s){var r;(r=this._instanceSubscriptions[t])==null||r.forEach(o=>{if(o.messageType===e){const M=o.callback(s,t,e);M instanceof Promise&&M.catch(a=>console.error(`Cannot call instance message handler: ${a}`))}})}fileChange(e,t,s){for(const r of Object.values(this.filesSubscribes))if(r.regId.test(e)&&r.regFilePattern.test(t))for(const o of r.cbs)try{o(e,t,s)}catch(M){console.error(`Error by callback of fileChange: ${M}`)}}async subscribeFiles(e,t,s){if(typeof s!="function")throw new Error("The state change handler must be a function!");let r;Array.isArray(t)?r=t:r=[t];const o=[];for(let M=0;M{const c={elapsed:!1,clearTimeout:()=>{}};let L;s!==!1&&(L=setTimeout(()=>{c.elapsed=!0,r==null||r(),e&&this._promises[e]instanceof Promise&&delete this._promises[e],N(new Error(Se.TIMEOUT))},s??this.props.cmdTimeout),c.clearTimeout=()=>{clearTimeout(L)});try{await a(l,N,c)}catch(j){e&&this._promises[e]instanceof Promise&&delete this._promises[e],N(new Error(j.toString()))}});return e&&(this._promises[e]=u),u}resetCache(e,t){t?Object.keys(this._promises).filter(s=>s.startsWith(e)).forEach(s=>{delete this._promises[s]}):delete this._promises[e]}getStates(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getStates",e,(r,o)=>{this.states=o??{},r?s(r):t(this.states)})}})}getState(e){return this.request({commandTimeout:!1,executor:(t,s)=>{if(e&&e===this.ignoreState){t(this.simStates[e]||{val:null,ack:!0});return}this._socket.emit("getState",e,(r,o)=>{r?s(r):t(o)})}})}getBinaryState(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getBinaryState",e,(r,o)=>{r?s(r):t(o)})}})}setBinaryState(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("setBinaryState",e,t,o=>{o?r(o):s()})}})}setState(e,t,s){return typeof s=="boolean"&&(t={val:t,ack:s}),this.request({commandTimeout:!1,executor:(r,o)=>{if(e&&e===this.ignoreState){let M;if(typeof s=="boolean"||typeof t=="object"&&t.val!==void 0?M=t:M={val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=M,this.statesSubscribes[e])for(const a of this.statesSubscribes[e].cbs)try{const u=a(e,M);u instanceof Promise&&u.catch(l=>console.error(`Cannot call state change handler: ${l}`))}catch(u){console.error(`Error by callback of stateChanged: ${u}`)}r();return}this._socket.emit("setState",e,t,M=>{M?o(M):r()})}})}getObjects(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{if(!e&&this.objects){s(this.objects);return}this._socket.emit(Ee.isWeb()?"getObjects":"getAllObjects",(o,M)=>{var a,u;t||(u=(a=this.props).onProgress)==null||u.call(a,at.OBJECTS_LOADED),o?r(o):(this.objects=M??{},s(this.objects))})}})}getObjectsById(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getObjects",e,(r,o)=>{r?s(r):t(o)})}})}_subscribe(e){var t,s;if(e&&!this.subscribed){this.subscribed=!0,(t=this.props.autoSubscribes)!=null&&t.length&&this._socket.emit("subscribeObjects",this.props.autoSubscribes);const r=Object.keys(this.objectsSubscribes);r.length&&this._socket.emit("subscribeObjects",r),Object.keys(this.objectsSubscribes).forEach(o=>this._socket.emit("subscribeObjects",o)),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!0),Object.keys(this.statesSubscribes).forEach(o=>this._socket.emit("subscribe",o)),Object.keys(this.filesSubscribes).forEach(o=>{const[M,a]=o.split("$%$");this._socket.emit("subscribeFiles",M,a)})}else if(!e&&this.subscribed){this.subscribed=!1,(s=this.props.autoSubscribes)!=null&&s.length&&this._socket.emit("unsubscribeObjects",this.props.autoSubscribes);const r=Object.keys(this.objectsSubscribes);r.length&&this._socket.emit("unsubscribeObjects",r),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach(o=>this._socket.emit("unsubscribe",o)),Object.keys(this.filesSubscribes).forEach(o=>{const[M,a]=o.split("$%$");this._socket.emit("unsubscribeFiles",M,a)})}}requireLog(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("requireLog",e,r=>{r?s(r):t()})}})}delObject(e,t=!1){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("delObject",e,{maintenance:t},o=>{o?r(o):s()})}})}delObjects(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("delObjects",e,{maintenance:t},o=>{o?r(o):s()})}})}setObject(e,t){return t?(t=JSON.parse(JSON.stringify(t)),delete t.from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("setObject",e,t,o=>{o?r(o):s()})}})):Promise.reject(new Error("Null object is not allowed"))}getObject(e){return this.request({commandTimeout:!1,executor:(t,s)=>{if(e&&e===this.ignoreState){t({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed"}});return}this._socket.emit("getObject",e,(r,o)=>{r?s(r):t(o)})}})}sendTo(e,t,s){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendTo",e,t,s,o=>{r(o)})}})}extendObject(e,t){return t?(t=JSON.parse(JSON.stringify(t)),delete t.from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("extendObject",e,t,o=>{o?r(o):s()})}})):Promise.reject(new Error("Null object is not allowed"))}registerLogHandler(e){this.onLogHandlers.includes(e)||this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);t!==-1&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){this.onConnectionHandlers.includes(e)||this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);t!==-1&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return this.request({cacheKey:`enums_${e||"all"}`,forceUpdate:t,commandTimeout:!1,executor:(s,r)=>{this._socket.emit("getObjectView","system","enum",{startkey:`enum.${e||""}`,endkey:e?`enum.${e}.香`:"enum.香"},(o,M)=>{if(o)r(o);else{const a={};if(M)for(let u=0;u{s||="",r||="香",this._socket.emit("getObjectView",e,t,{startkey:s,endkey:r},(a,u)=>{if(a)M(a);else{const l={};if(u&&u.rows)for(let N=0;N{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"香"},(s,r)=>{var o;s?t(s):e((o=r.rows)==null?void 0:o.map(M=>M.value).filter(M=>!!M))})}})}readDir(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("readDir",e,t,(o,M)=>{o?r(o):s(M)})}})}readFile(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit(s?"readFile64":"readFile",e,t,(M,a,u)=>{M?o(M):r({file:a,mimeType:u})})}})}writeFile64(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{if(typeof s=="string")this._socket.emit("writeFile",e,t,s,M=>{M?o(M):r()});else{const M=btoa(new Uint8Array(s).reduce((a,u)=>a+String.fromCharCode(u),""));this._socket.emit("writeFile64",e,t,M,a=>{a?o(a):r()})}}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("deleteFile",e,t,o=>{o?r(o):s()})}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("deleteFolder",e,t,o=>{o?r(o):s()})}})}rename(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,s,M=>{M?o(M):r()})}})}renameFile(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,s,M=>{M?o(M):r()})}})}cmdExec(e,t,s,r){return this.request({commandTimeout:r,executor:(o,M,a)=>{e=ht(e),this._socket.emit("cmdExec",e,s,t,u=>{a.elapsed||(a.clearTimeout(),u?M(u):o())})}})}getSystemConfig(e){return this.request({cacheKey:"systemConfig",forceUpdate:e,commandTimeout:!1,executor:async t=>{let s=await this.getObject("system.config");s??={},s.common??={},s.native??={},t(s)}})}getCompactSystemConfig(e){return this.request({cacheKey:"systemConfigCommon",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getCompactSystemConfig",(r,o)=>{r?s(r):(o??={},o.common??={},o.native??={},t(o))})}})}getForeignStates(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getForeignStates",e||"*",(r,o)=>{r?s(r):t(o??{})})}})}getForeignObjects(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("getForeignObjects",e||"*",t,(o,M)=>{o?r(o):s(M)})}})}setSystemConfig(e){return this.setObject("system.config",e)}getRawSocket(){return this._socket}getHistory(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("getHistory",e,t,(o,M)=>{o?r(o):s(M)})}})}getHistoryEx(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("getHistory",e,t,(o,M,a,u)=>{o?r(o):s({values:M,sessionId:u,step:a})})}})}getIpAddresses(e,t){return e=ht(e),this.request({cacheKey:`IPs_${e}`,forceUpdate:t,commandTimeout:!1,executor:async s=>{const r=await this.getObject(e);s((r==null?void 0:r.common.address)??[])}})}getVersion(e){return this.request({cacheKey:"version",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getVersion",(r,o,M)=>{r&&!o&&typeof r=="string"&&r.match(/\d+\.\d+\.\d+/)?t({version:r,serverName:"socketio"}):r?s(r):t({version:o,serverName:M})})}})}getWebServerName(){return this.request({cacheKey:"webName",commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getAdapterName",(s,r)=>{s?t(s):e(r)})}})}fileExists(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("fileExists",e,t,(o,M)=>{o?r(o):s(!!M)})}})}getCurrentUser(){return this.request({commandTimeout:!1,executor:e=>{this._socket.emit("authEnabled",(t,s)=>{e(s)})}})}getUuid(){return this.request({cacheKey:"uuid",commandTimeout:!1,executor:async e=>{var s;const t=await this.getObject("system.meta.uuid");e((s=t==null?void 0:t.native)==null?void 0:s.uuid)}})}checkFeatureSupported(e,t){return this.request({cacheKey:`supportedFeatures_${e}`,forceUpdate:t,commandTimeout:!1,executor:(s,r)=>{this._socket.emit("checkFeatureSupported",e,(o,M)=>{o?r(o):s(M)})}})}getAdapterInstances(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",this.request({cacheKey:`instances_${e}`,forceUpdate:t,commandTimeout:!1,executor:async s=>{const r=e?`system.adapter.${e}.`:"system.adapter.",o=`${r}香`,M=await this.getObjectViewSystem("instance",r,o),a=Object.values(M);s(e?a.filter(u=>u.common.name===e):a)}})}getAdapters(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",this.request({cacheKey:`adapter_${e}`,forceUpdate:t,commandTimeout:!1,executor:async s=>{const r=await this.getObjectViewSystem("adapter",`system.adapter.${e||""}`,`system.adapter.${e||"香"}`),o=Object.values(r);s(e?o.filter(M=>M.common.name===e):o)}})}getGroups(e){return this.request({cacheKey:"groups",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.香"},(r,o)=>{r?s(r):t(Hr(o))})}})}logout(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("logout",s=>{s?t(s):e(null)})}})}subscribeOnInstance(e,t,s,r){return this.request({commandTimeout:!1,executor:(o,M)=>{this._socket.emit("clientSubscribe",e,t,s,(a,u)=>{a?M(a):u&&(u.error?M(u.error):(e.startsWith("system.adapter.")||(e=`system.adapter.${e}`),this._instanceSubscriptions[e]=this._instanceSubscriptions[e]||[],this._instanceSubscriptions[e].find(l=>l.messageType===t&&l.callback===r)||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(u)))})}})}unsubscribeFromInstance(e,t,s){var M;e.startsWith("system.adapter.")||(e=`system.adapter.${e}`);let r;const o=[];do{r=!1;const a=(M=this._instanceSubscriptions[e])==null?void 0:M.findIndex(u=>(!t||u.messageType===t)&&(!s||u.callback===s));if(a!=null&&a!==-1){r=!0;const u=this._instanceSubscriptions[e][a].messageType;this._instanceSubscriptions[e].splice(a,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e],this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find(N=>N.messageType===u)||o.push(this.request({commandTimeout:!1,executor:(N,c)=>{this._socket.emit("clientUnsubscribe",e,t,(L,j)=>L?c(L):N(j))}}))}}while(r&&(!s||!t));return o.length?Promise.all(o).then(a=>!!a.find(u=>u)):Promise.resolve(!1)}log(e,t){return e?this.request({commandTimeout:!1,executor:s=>(this._socket.emit("log",e,t),s(null))}):Promise.resolve(null)}setStateToIgnore(e){this.ignoreState=e}destroy(){var e;if(this._socket){const t=this._socket;try{typeof t.destroy=="function"?t.destroy():typeof t.close=="function"&&t.close(!0)}catch{}}(e=globalThis.removeEventListener)==null||e.call(globalThis,"storage",this.onAccessTokenUpdated),this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this._refreshTimer&&(clearTimeout(this._refreshTimer),this._refreshTimer=null),this.onConnectionHandlers.length=0,this.onLogHandlers.length=0;for(const t of Object.keys(this.statesSubscribes))delete this.statesSubscribes[t];for(const t of Object.keys(this.objectsSubscribes))delete this.objectsSubscribes[t];for(const t of Object.keys(this.filesSubscribes))delete this.filesSubscribes[t];this._instanceSubscriptions={},this.connected=!1,this.onReadyDone=!1}}function DN(i,e){if(!e)return;let t;if(e.length<700&&(e.indexOf("/")!==-1||e.indexOf("\\")!==-1))if(i.toLowerCase().includes("private"))t="private";else if(e.toLowerCase().includes("private"))t="private";else if(i.toLowerCase().includes("public"))t="public";else if(e.toLowerCase().includes("public"))t="public";else if(i.toLowerCase().includes("chain"))t="chained";else if(e.toLowerCase().includes("chain"))t="chained";else return;else t=e.substring(0,26)==="-----BEGIN RSA PRIVATE KEY"||e.substring(0,22)==="-----BEGIN PRIVATE KEY"?"private":"public",t==="public"&&e.split("-----END CERTIFICATE-----").filter(r=>r.replace(/\r\n|\r|\n/,"").trim()).length>1&&(t="chained");return{name:i,type:t}}function dN(i){var s,r,o,M;const e=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],t=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if((r=(s=i.native)==null?void 0:s.hardware)!=null&&r.networkInterfaces){const a=(M=(o=i.native)==null?void 0:o.hardware)==null?void 0:M.networkInterfaces;Object.keys(a).forEach(u=>{var l;(l=a[u])==null||l.forEach(N=>{N.family!=="IPv6"?e.push({name:`[${N.family}] ${N.address} - ${u}`,address:N.address,family:"ipv4"}):t.push({name:`[${N.family}] ${N.address} - ${u}`,address:N.address,family:"ipv6"})})})}return{IPs4:e,IPs6:t}}class Xje extends Ee{constructor(e){super(e)}request(e){return super.request({requireAdmin:!0,...e})}getCertificates(e){return this.request({cacheKey:"cert",forceUpdate:e,commandTimeout:!1,executor:async t=>{var r;const s=await this.getObject("system.certificates");(r=s==null?void 0:s.native)!=null&&r.certificates?t(Object.entries(s.native.certificates).map(([o,M])=>DN(o,M)).filter(o=>!!o)):t([])}})}getLogs(e,t=200){return this.request({commandTimeout:!1,executor:s=>{this._socket.emit("sendToHost",e,"getLogs",t||200,r=>{s(r)})}})}upgradeAdapterWithWebserver(e,t){return this.request({commandTimeout:!1,executor:s=>{this._socket.emit("sendToHost",e,"upgradeAdapterWithWebserver",t,r=>{s(r)})}})}upgradeController(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("sendToHost",e,"upgradeController",{version:t,adminInstance:s},M=>{const a=M;a.error?o(a.error):r(a.result)})}})}updateLicenses(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("updateLicenses",e,t,(o,M)=>{o?r(o):s(M)})}})}upgradeOsPackages(e,t,s){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendToHost",e,"upgradeOsPackages",{packages:t,restart:!!s},o=>{r(o)})}})}getLogsFiles(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("readLogs",e,(r,o)=>{r&&s(r),t(o)})}})}delLogs(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("sendToHost",e,"delLogs",null,r=>{r&&s(r),t()})}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("deleteFile",e,t,o=>{o&&r(o),s()})}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("deleteFolder",e,t,o=>{o&&r(o),s()})}})}rename(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,s,M=>{M&&o(M),r()})}})}renameFile(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,s,M=>{M&&o(M),r()})}})}getHosts(e){return this.request({cacheKey:"hosts",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.香"},(r,o)=>{r?s(r):t(Hr(o))})}})}getUsers(e){return this.request({cacheKey:"users",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.香"},(r,o)=>{r?s(r):t(Hr(o))})}})}renameGroup(e,t,s){return this.request({commandTimeout:!1,executor:async r=>{const o=await this.getGroups(!0),M=o.filter(u=>u._id.startsWith(`${e}.`));for(const u of M){const l=u._id,N=t+u._id.substring(e.length);u._id=N,await this.setObject(N,u),await this.delObject(l)}const a=o.find(u=>u._id===e);if(a){const u=a._id;a._id=t,s!==void 0&&(a.common??={},a.common.name=s),await this.setObject(t,a),await this.delObject(u)}r()}})}getHostInfo(e,t,s){return e=ht(e),this.request({cacheKey:`hostInfo_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("sendToHost",e,"getHostInfo",null,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getHostInfo"'):a?r(a):o('Cannot read "getHostInfo"'))})}})}getHostInfoShort(e,t,s){return e=ht(e),this.request({cacheKey:`hostInfoShort_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("sendToHost",e,"getHostInfoShort",null,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getHostInfoShort"'):a?r(a):o('Cannot read "getHostInfoShort"'))})}})}getRepository(e,t,s,r){return this.request({cacheKey:`repository_${e}`,forceUpdate:s,commandTimeout:r,executor:(o,M,a)=>{this._socket.emit("sendToHost",e,"getRepository",t,u=>{a.elapsed||(a.clearTimeout(),u===Se.PERMISSION_ERROR?M('May not read "getRepository"'):u?o(u):M('Cannot read "getRepository"'))})}})}getInstalled(e,t,s){return e=ht(e),this.request({cacheKey:`installed_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("sendToHost",e,"getInstalled",null,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getInstalled"'):a?r(a):o('Cannot read "getInstalled"'))})}})}cmdExec(e,t,s,r){return this.request({commandTimeout:r,executor:(o,M,a)=>{e=ht(e),this._socket.emit("cmdExec",e,s,t,u=>{a.elapsed||(a.clearTimeout(),u&&M(u),o())})}})}readBaseSettings(e){return e=Ps(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(t,s,r)=>{this._socket.emit("sendToHost",e,"readBaseSettings",null,o=>{r.elapsed||(r.clearTimeout(),o===Se.PERMISSION_ERROR?s('May not read "BaseSettings"'):o?o.error?s(new Error(o.error)):t(o):s('Cannot read "BaseSettings"'))})}})}writeBaseSettings(e,t){return e=Ps(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(s,r,o)=>{this._socket.emit("sendToHost",e,"writeBaseSettings",t,M=>{o.elapsed||(o.clearTimeout(),M===Se.PERMISSION_ERROR?r('May not write "BaseSettings"'):M?s(M):r('Cannot write "BaseSettings"'))})}})}restartController(e){return e=Ps(e),this.request({executor:(t,s,r)=>{this._socket.emit("sendToHost",e,"restartController",null,()=>{r.elapsed||(r.clearTimeout(),t(!0))})}})}getDiagData(e,t){return e=Ps(e),this.request({executor:(s,r,o)=>{this._socket.emit("sendToHost",e,"getDiagData",t,M=>{o.elapsed||(o.clearTimeout(),s(M||null))})}})}changePassword(e,t){return this.request({executor:(s,r,o)=>{this._socket.emit("changePassword",e,t,M=>{o.elapsed||(o.clearTimeout(),M&&r(M),s())})}})}getIpAddresses(e,t){return e=ht(e),this.request({cacheKey:`IPs_${e}`,forceUpdate:t,commandTimeout:!1,executor:async s=>{const r=await this.getObject(e);s((r==null?void 0:r.common.address)??[])}})}getHostByIp(e,t){return e=Ps(e),this.request({cacheKey:`rIPs_${e}`,forceUpdate:t,executor:(s,r,o)=>{this._socket.emit("getHostByIp",e,(M,a)=>{if(o.elapsed)return;o.clearTimeout();const{IPs4:u,IPs6:l}=dN(a);s([...u,...l])})}})}encrypt(e){return this.request({executor:(t,s,r)=>{this._socket.emit("encrypt",e,(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}decrypt(e){return this.request({executor:(t,s,r)=>{this._socket.emit("decrypt",e,(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}chmodFile(e,t,s){return this.request({executor:(r,o,M)=>{this._socket.emit("chmodFile",e,t,s,(a,u)=>{M.elapsed||(M.clearTimeout(),a&&o(a),r(u))})}})}chownFile(e,t,s){return this.request({executor:(r,o,M)=>{this._socket.emit("chownFile",e,t,s,(a,u)=>{M.elapsed||(M.clearTimeout(),a&&o(a),r(u))})}})}getNotifications(e,t){return this.request({executor:(s,r,o)=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},M=>{o.elapsed||(o.clearTimeout(),s(M))})}})}clearNotifications(e,t){return this.request({executor:(s,r,o)=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},M=>{o.elapsed||(o.clearTimeout(),s(M))})}})}getIsEasyModeStrict(){return this.request({executor:(e,t,s)=>{this._socket.emit("getIsEasyModeStrict",(r,o)=>{s.elapsed||(s.clearTimeout(),r&&t(r),e(!!o))})}})}getEasyMode(){return this.request({executor:(e,t,s)=>{this._socket.emit("getEasyMode",(r,o)=>{s.elapsed||(s.clearTimeout(),r?t(new Error(r)):e(o))})}})}getRatings(e){return this.request({executor:(t,s,r)=>{this._socket.emit("getRatings",!!e,(o,M)=>{r.elapsed||(r.clearTimeout(),o?s(new Error(o)):t(M))})}})}getCurrentSession(e){const t=new AbortController;return this.request({commandTimeout:e||5e3,onTimeout:()=>{t.abort()},executor:async(s,r,o)=>{try{const M=await fetch("./session",{signal:t.signal});if(o.elapsed)return;o.clearTimeout();const a=await M.json();s(a)}catch(M){r(`getCurrentSession: ${M}`)}}})}getCurrentInstance(){return this.request({cacheKey:"currentInstance",executor:(e,t,s)=>{this._socket.emit("getCurrentInstance",(r,o)=>{s.elapsed||(s.clearTimeout(),r?t(r):e(o))})}})}getAdapterInstances(e,t){let s;return typeof e=="boolean"?(t=e,s=""):s=e||"",this.request({cacheKey:`instances_${s}`,forceUpdate:t,executor:(r,o,M)=>{this._socket.emit("getAdapterInstances",s,(a,u)=>{M.elapsed||(M.clearTimeout(),a&&o(a),r(u))})}})}getAdapters(e,t){let s;return typeof e=="boolean"?(t=e,s=""):s=e||"",this.request({cacheKey:`adapter_${s}`,forceUpdate:t,executor:(r,o,M)=>{this._socket.emit("getAdapters",s,(a,u)=>{M.elapsed||(M.clearTimeout(),a&&o(a),r(u))})}})}getCompactAdapters(e){return this.request({cacheKey:"compactAdapters",forceUpdate:e,executor:(t,s,r)=>{this._socket.emit("getCompactAdapters",(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}getAdaptersResetCache(e){e=e??"",this.resetCache(`adapter_${e}`),this.resetCache("compactAdapters")}getCompactInstances(e){return this.request({cacheKey:"compactInstances",forceUpdate:e,executor:(t,s,r)=>{this._socket.emit("getCompactInstances",(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}getAdapterInstancesResetCache(e){e=e??"",this.resetCache(`instances_${e}`),this.resetCache("compactInstances")}getCompactInstalled(e,t,s){return e=ht(e),this.request({cacheKey:`installedCompact_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("getCompactInstalled",e,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getCompactInstalled"'):a?r(a):o('Cannot read "getCompactInstalled"'))})}})}getInstalledResetCache(e){e?(this.resetCache(`installedCompact_${e}`),this.resetCache(`installed_${e}`)):(this.resetCache("installedCompact_",!0),this.resetCache("installed_",!0))}getCompactRepository(e,t,s){return e=ht(e),this.request({cacheKey:`repositoryCompact_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("getCompactRepository",e,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getCompactRepository"'):a?r(a):o('Cannot read "getCompactRepository"'))})}})}getRepositoryResetCache(e){e?(this.resetCache(`repositoryCompact_${e}`),this.resetCache(`repository_${e}`)):(this.resetCache("repositoryCompact_",!0),this.resetCache("repository_",!0))}getCompactHosts(e){return this.request({cacheKey:"hostsCompact",forceUpdate:e,executor:(t,s,r)=>{this._socket.emit("getCompactHosts",(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}getCompactSystemRepositories(e){return this.request({cacheKey:"repositoriesCompact",forceUpdate:e,executor:(t,s,r)=>{this._socket.emit("getCompactSystemRepositories",(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}}const V=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,oe=globalThis,is="10.49.0";function sr(){return ir(oe),oe}function ir(i){const e=i.__SENTRY__=i.__SENTRY__||{};return e.version=e.version||is,e[is]=e[is]||{}}function xs(i,e,t=oe){const s=t.__SENTRY__=t.__SENTRY__||{},r=s[is]=s[is]||{};return r[i]||(r[i]=e())}const zN=["debug","info","warn","error","log","assert","trace"],hN="Sentry Logger ",Ji={};function ks(i){if(!("console"in oe))return i();const e=oe.console,t={},s=Object.keys(Ji);s.forEach(r=>{const o=Ji[r];t[r]=e[r],e[r]=o});try{return i()}finally{s.forEach(r=>{e[r]=t[r]})}}function IN(){Ro().enabled=!0}function wN(){Ro().enabled=!1}function Za(){return Ro().enabled}function CN(...i){Wo("log",...i)}function AN(...i){Wo("warn",...i)}function mN(...i){Wo("error",...i)}function Wo(i,...e){V&&Za()&&ks(()=>{oe.console[i](`${hN}[${i}]:`,...e)})}function Ro(){return V?xs("loggerSettings",()=>({enabled:!1})):{enabled:!1}}const G={enable:IN,disable:wN,isEnabled:Za,log:CN,warn:AN,error:mN},Xa=50,rs="?",EM=/\(error: (.*)\)/,_M=/captureMessage|captureException/;function Ka(...i){const e=i.sort((t,s)=>t[0]-s[0]).map(t=>t[1]);return(t,s=0,r=0)=>{const o=[],M=t.split(` +`);for(let a=s;a1024&&(u=u.slice(0,1024));const l=EM.test(u)?u.replace(EM,"$1"):u;if(!l.includes("Error: ")){for(const N of e){const c=N(l);if(c){o.push(c);break}}if(o.length>=Xa+r)break}}return ON(o.slice(r))}}function pN(i){return Array.isArray(i)?Ka(...i):i}function ON(i){if(!i.length)return[];const e=Array.from(i);return/sentryWrapped/.test(Ii(e).function||"")&&e.pop(),e.reverse(),_M.test(Ii(e).function||"")&&(e.pop(),_M.test(Ii(e).function||"")&&e.pop()),e.slice(0,Xa).map(t=>({...t,filename:t.filename||Ii(e).filename,function:t.function||rs}))}function Ii(i){return i[i.length-1]||{}}const zr="";function Bt(i){try{return!i||typeof i!="function"?zr:i.name||zr}catch{return zr}}function fM(i){const e=i.exception;if(e){const t=[];try{return e.values.forEach(s=>{s.stacktrace.frames&&t.push(...s.stacktrace.frames)}),t}catch{return}}}function qa(i){return"__v_isVNode"in i&&i.__v_isVNode?"[VueVNode]":"[VueViewModel]"}const ki={},SM={};function ns(i,e){ki[i]=ki[i]||[],ki[i].push(e)}function as(i,e){if(!SM[i]){SM[i]=!0;try{e()}catch(t){V&&G.error(`Error while instrumenting ${i}`,t)}}}function st(i,e){const t=i&&ki[i];if(t)for(const s of t)try{s(e)}catch(r){V&&G.error(`Error while triggering instrumentation handler. +Type: ${i} +Name: ${Bt(s)} +Error:`,r)}}let hr=null;function EN(i){const e="error";ns(e,i),as(e,_N)}function _N(){hr=oe.onerror,oe.onerror=function(i,e,t,s,r){return st("error",{column:s,error:r,line:t,msg:i,url:e}),hr?hr.apply(this,arguments):!1},oe.onerror.__SENTRY_INSTRUMENTED__=!0}let Ir=null;function fN(i){const e="unhandledrejection";ns(e,i),as(e,SN)}function SN(){Ir=oe.onunhandledrejection,oe.onunhandledrejection=function(i){return st("unhandledrejection",i),Ir?Ir.apply(this,arguments):!0},oe.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}const ec=Object.prototype.toString;function rr(i){switch(ec.call(i)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return Gt(i,Error)}}function Ys(i,e){return ec.call(i)===`[object ${e}]`}function tc(i){return Ys(i,"ErrorEvent")}function xM(i){return Ys(i,"DOMError")}function xN(i){return Ys(i,"DOMException")}function At(i){return Ys(i,"String")}function Jo(i){return typeof i=="object"&&i!==null&&"__sentry_template_string__"in i&&"__sentry_template_values__"in i}function or(i){return i===null||Jo(i)||typeof i!="object"&&typeof i!="function"}function si(i){return Ys(i,"Object")}function Mr(i){return typeof Event<"u"&&Gt(i,Event)}function kN(i){return typeof Element<"u"&&Gt(i,Element)}function YN(i){return Ys(i,"RegExp")}function li(i){return!!(i!=null&&i.then&&typeof i.then=="function")}function QN(i){return si(i)&&"nativeEvent"in i&&"preventDefault"in i&&"stopPropagation"in i}function Gt(i,e){try{return i instanceof e}catch{return!1}}function sc(i){return!!(typeof i=="object"&&i!==null&&(i.__isVue||i._isVue||i.__v_isVNode))}function ic(i){return typeof Request<"u"&&Gt(i,Request)}const Bo=oe,vN=80;function rc(i,e={}){if(!i)return"";try{let t=i;const s=5,r=[];let o=0,M=0;const a=" > ",u=a.length;let l;const N=Array.isArray(e)?e:e.keyAttrs,c=!Array.isArray(e)&&e.maxStringLength||vN;for(;t&&o++1&&M+r.length*u+l.length>=c));)r.push(l),M+=l.length,t=t.parentNode;return r.reverse().join(a)}catch{return""}}function UN(i,e){const t=i,s=[];if(!(t!=null&&t.tagName))return"";if(Bo.HTMLElement&&t instanceof HTMLElement&&t.dataset){if(t.dataset.sentryComponent)return t.dataset.sentryComponent;if(t.dataset.sentryElement)return t.dataset.sentryElement}s.push(t.tagName.toLowerCase());const r=e!=null&&e.length?e.filter(o=>t.getAttribute(o)).map(o=>[o,t.getAttribute(o)]):null;if(r!=null&&r.length)r.forEach(o=>{s.push(`[${o[0]}="${o[1]}"]`)});else{t.id&&s.push(`#${t.id}`);const o=t.className;if(o&&At(o)){const M=o.split(/\s+/);for(const a of M)s.push(`.${a}`)}}for(const o of["aria-label","type","name","title","alt"]){const M=t.getAttribute(o);M&&s.push(`[${o}="${M}"]`)}return s.join("")}function Go(){try{return Bo.document.location.href}catch{return""}}function bN(i,e=5){if(!Bo.HTMLElement)return null;let t=i;for(let s=0;s"}}function YM(i){return typeof i=="object"&&i!==null?Object.fromEntries(Object.entries(i)):{}}function $N(i){const e=Object.keys(Mc(i));return e.sort(),e[0]?e.join(", "):"[object has no keys]"}let Ns;function nr(i){if(Ns!==void 0)return Ns?Ns(i):i();const e=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),t=oe;return e in t&&typeof t[e]=="function"?(Ns=t[e],Ns(i)):(Ns=null,i())}function Bi(){return nr(()=>Math.random())}function ar(){return nr(()=>Date.now())}function Vr(i,e=0){return typeof i!="string"||e===0||i.length<=e?i:`${i.slice(0,e)}...`}function QM(i,e){if(!Array.isArray(i))return"";const t=[];for(let s=0;sYi(i,s,t))}function PN(){const i=oe;return i.crypto||i.msCrypto}let wr;function WN(){return Bi()*16}function Ke(i=PN()){try{if(i!=null&&i.randomUUID)return nr(()=>i.randomUUID()).replace(/-/g,"")}catch{}return wr||(wr="10000000100040008000"+1e11),wr.replace(/[018]/g,e=>(e^(WN()&15)>>e/4).toString(16))}function nc(i){var e,t;return(t=(e=i.exception)==null?void 0:e.values)==null?void 0:t[0]}function es(i){const{message:e,event_id:t}=i;if(e)return e;const s=nc(i);return s?s.type&&s.value?`${s.type}: ${s.value}`:s.type||s.value||t||"":t||""}function Zr(i,e,t){const s=i.exception=i.exception||{},r=s.values=s.values||[],o=r[0]=r[0]||{};o.value||(o.value=e||""),o.type||(o.type="Error")}function Es(i,e){const t=nc(i);if(!t)return;const s={type:"generic",handled:!0},r=t.mechanism;if(t.mechanism={...s,...r,...e},e&&"data"in e){const o={...r==null?void 0:r.data,...e.data};t.mechanism.data=o}}function vM(i){if(RN(i))return!0;try{Ft(i,"__sentry_captured__",!0)}catch{}return!1}function RN(i){try{return i.__sentry_captured__}catch{}}const ac=1e3;function Ni(){return ar()/ac}function JN(){const{performance:i}=oe;if(!(i!=null&&i.now)||!i.timeOrigin)return Ni;const e=i.timeOrigin;return()=>(e+nr(()=>i.now()))/ac}let UM;function mt(){return(UM??(UM=JN()))()}function BN(i){const e=mt(),t={sid:Ke(),init:!0,timestamp:e,started:e,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>FN(t)};return i&&_s(t,i),t}function _s(i,e={}){if(e.user&&(!i.ipAddress&&e.user.ip_address&&(i.ipAddress=e.user.ip_address),!i.did&&!e.did&&(i.did=e.user.id||e.user.email||e.user.username)),i.timestamp=e.timestamp||mt(),e.abnormal_mechanism&&(i.abnormal_mechanism=e.abnormal_mechanism),e.ignoreDuration&&(i.ignoreDuration=e.ignoreDuration),e.sid&&(i.sid=e.sid.length===32?e.sid:Ke()),e.init!==void 0&&(i.init=e.init),!i.did&&e.did&&(i.did=`${e.did}`),typeof e.started=="number"&&(i.started=e.started),i.ignoreDuration)i.duration=void 0;else if(typeof e.duration=="number")i.duration=e.duration;else{const t=i.timestamp-i.started;i.duration=t>=0?t:0}e.release&&(i.release=e.release),e.environment&&(i.environment=e.environment),!i.ipAddress&&e.ipAddress&&(i.ipAddress=e.ipAddress),!i.userAgent&&e.userAgent&&(i.userAgent=e.userAgent),typeof e.errors=="number"&&(i.errors=e.errors),e.status&&(i.status=e.status)}function GN(i,e){let t={};i.status==="ok"&&(t={status:"exited"}),_s(i,t)}function FN(i){return{sid:`${i.sid}`,init:i.init,started:new Date(i.started*1e3).toISOString(),timestamp:new Date(i.timestamp*1e3).toISOString(),status:i.status,errors:i.errors,did:typeof i.did=="number"||typeof i.did=="string"?`${i.did}`:void 0,duration:i.duration,abnormal_mechanism:i.abnormal_mechanism,attrs:{release:i.release,environment:i.environment,ip_address:i.ipAddress,user_agent:i.userAgent}}}function Li(i,e,t=2){if(!e||typeof e!="object"||t<=0)return e;if(i&&Object.keys(e).length===0)return i;const s={...i};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(s[r]=Li(s[r],e[r],t-1));return s}function bM(){return Ke()}function cc(){return Ke().substring(16)}const Xr="_sentrySpan";function $M(i,e){e?Ft(i,Xr,e):delete i[Xr]}function PM(i){return i[Xr]}const HN=100;class pt{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:bM(),sampleRand:Bi()}}clone(){const e=new pt;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._attributes={...this._attributes},e._extra={...this._extra},e._contexts={...this._contexts},this._contexts.flags&&(e._contexts.flags={values:[...this._contexts.flags.values]}),e._user=this._user,e._level=this._level,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e._lastEventId=this._lastEventId,e._conversationId=this._conversationId,$M(e,PM(this)),e}setClient(e){this._client=e}setLastEventId(e){this._lastEventId=e}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&_s(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}setConversationId(e){return this._conversationId=e||void 0,this._notifyScopeListeners(),this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this.setTags({[e]:t})}setAttributes(e){return this._attributes={...this._attributes,...e},this._notifyScopeListeners(),this}setAttribute(e,t){return this.setAttributes({[e]:t})}removeAttribute(e){return e in this._attributes&&(delete this._attributes[e],this._notifyScopeListeners()),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return t===null?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;const t=typeof e=="function"?e(this):e,s=t instanceof pt?t.getScopeData():si(t)?e:void 0,{tags:r,attributes:o,extra:M,user:a,contexts:u,level:l,fingerprint:N=[],propagationContext:c,conversationId:L}=s||{};return this._tags={...this._tags,...r},this._attributes={...this._attributes,...o},this._extra={...this._extra,...M},this._contexts={...this._contexts,...u},a&&Object.keys(a).length&&(this._user=a),l&&(this._level=l),N.length&&(this._fingerprint=N),c&&(this._propagationContext=c),L&&(this._conversationId=L),this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,this._conversationId=void 0,$M(this,void 0),this._attachments=[],this.setPropagationContext({traceId:bM(),sampleRand:Bi()}),this._notifyScopeListeners(),this}addBreadcrumb(e,t){var o;const s=typeof t=="number"?t:HN;if(s<=0)return this;const r={timestamp:Ni(),...e,message:e.message?Vr(e.message,2048):e.message};return this._breadcrumbs.push(r),this._breadcrumbs.length>s&&(this._breadcrumbs=this._breadcrumbs.slice(-s),(o=this._client)==null||o.recordDroppedEvent("buffer_overflow","log_item")),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:PM(this),conversationId:this._conversationId}}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata=Li(this._sdkProcessingMetadata,e,2),this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){const s=(t==null?void 0:t.event_id)||Ke();if(!this._client)return V&&G.warn("No client configured on scope - will not capture exception!"),s;const r=new Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:r,...t,event_id:s},this),s}captureMessage(e,t,s){const r=(s==null?void 0:s.event_id)||Ke();if(!this._client)return V&&G.warn("No client configured on scope - will not capture message!"),r;const o=(s==null?void 0:s.syntheticException)??new Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:o,...s,event_id:r},this),r}captureEvent(e,t){const s=e.event_id||(t==null?void 0:t.event_id)||Ke();return this._client?(this._client.captureEvent(e,{...t,event_id:s},this),s):(V&&G.warn("No client configured on scope - will not capture event!"),s)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}}function VN(){return xs("defaultCurrentScope",()=>new pt)}function ZN(){return xs("defaultIsolationScope",()=>new pt)}const WM=i=>i instanceof Promise&&!i[uc],uc=Symbol("chained PromiseLike"),XN=(i,e,t)=>{const s=i.then(r=>(e(r),r),r=>{throw t(r),r});return WM(s)&&WM(i)?s:KN(i,s)},KN=(i,e)=>{let t=!1;for(const s in i){if(s in e)continue;t=!0;const r=i[s];typeof r=="function"?Object.defineProperty(e,s,{value:(...o)=>r.apply(i,o),enumerable:!0,configurable:!0,writable:!0}):e[s]=r}return t&&Object.assign(e,{[uc]:!0}),e};class qN{constructor(e,t){let s;e?s=e:s=new pt;let r;t?r=t:r=new pt,this._stack=[{scope:s}],this._isolationScope=r}withScope(e){const t=this._pushScope();let s;try{s=e(t)}catch(r){throw this._popScope(),r}return li(s)?XN(s,()=>this._popScope(),()=>this._popScope()):(this._popScope(),s)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const e=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:e}),e}_popScope(){return this._stack.length<=1?!1:!!this._stack.pop()}}function fs(){const i=sr(),e=ir(i);return e.stack=e.stack||new qN(VN(),ZN())}function e0(i){return fs().withScope(i)}function t0(i,e){const t=fs();return t.withScope(()=>(t.getStackTop().scope=i,e(i)))}function RM(i){return fs().withScope(()=>i(fs().getIsolationScope()))}function s0(){return{withIsolationScope:RM,withScope:e0,withSetScope:t0,withSetIsolationScope:(i,e)=>RM(e),getCurrentScope:()=>fs().getScope(),getIsolationScope:()=>fs().getIsolationScope()}}function Ho(i){const e=ir(i);return e.acs?e.acs:s0()}function Lt(){const i=sr();return Ho(i).getCurrentScope()}function cs(){const i=sr();return Ho(i).getIsolationScope()}function i0(){return xs("globalScope",()=>new pt)}function r0(...i){const e=sr(),t=Ho(e);if(i.length===2){const[s,r]=i;return s?t.withSetScope(s,r):t.withScope(r)}return t.withScope(i[0])}function ke(){return Lt().getClient()}function o0(i){const e=i.getPropagationContext(),{traceId:t,parentSpanId:s,propagationSpanId:r}=e,o={trace_id:t,span_id:r||cc()};return s&&(o.parent_span_id=s),o}const M0="sentry.source",n0="sentry.sample_rate",a0="sentry.previous_trace_sample_rate",c0="sentry.op",u0="sentry.origin",lc="sentry.profile_id",Nc="sentry.exclusive_time",l0="gen_ai.conversation.id",N0=0,L0=1;function j0(i){if(i){if(typeof i=="object"&&"deref"in i&&typeof i.deref=="function")try{return i.deref()}catch{return}return i}}const g0="_sentryScope",T0="_sentryIsolationScope";function Lc(i){const e=i;return{scope:e[g0],isolationScope:j0(e[T0])}}const JM="sentry-";function y0(i){const e=D0(i);if(!e)return;const t=Object.entries(e).reduce((s,[r,o])=>{if(r.startsWith(JM)){const M=r.slice(JM.length);s[M]=o}return s},{});if(Object.keys(t).length>0)return t}function D0(i){if(!(!i||!At(i)&&!Array.isArray(i)))return Array.isArray(i)?i.reduce((e,t)=>{const s=BM(t);return Object.entries(s).forEach(([r,o])=>{e[r]=o}),e},{}):BM(i)}function BM(i){return i.split(",").map(e=>{const t=e.indexOf("=");if(t===-1)return[];const s=e.slice(0,t),r=e.slice(t+1);return[s,r].map(o=>{try{return decodeURIComponent(o.trim())}catch{return}})}).reduce((e,[t,s])=>(t&&s&&(e[t]=s),e),{})}const d0=/^o(\d+)\./,z0=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function h0(i){return i==="http"||i==="https"}function ji(i,e=!1){const{host:t,path:s,pass:r,port:o,projectId:M,protocol:a,publicKey:u}=i;return`${a}://${u}${e&&r?`:${r}`:""}@${t}${o?`:${o}`:""}/${s&&`${s}/`}${M}`}function I0(i){const e=z0.exec(i);if(!e){ks(()=>{console.error(`Invalid Sentry Dsn: ${i}`)});return}const[t,s,r="",o="",M="",a=""]=e.slice(1);let u="",l=a;const N=l.split("/");if(N.length>1&&(u=N.slice(0,-1).join("/"),l=N.pop()),l){const c=l.match(/^\d+/);c&&(l=c[0])}return jc({host:o,pass:r,path:u,projectId:l,port:M,protocol:t,publicKey:s})}function jc(i){return{protocol:i.protocol,publicKey:i.publicKey||"",pass:i.pass||"",host:i.host,port:i.port||"",path:i.path||"",projectId:i.projectId}}function w0(i){if(!V)return!0;const{port:e,projectId:t,protocol:s}=i;return["protocol","publicKey","host","projectId"].find(M=>i[M]?!1:(G.error(`Invalid Sentry Dsn: ${M} missing`),!0))?!1:t.match(/^\d+$/)?h0(s)?e&&isNaN(parseInt(e,10))?(G.error(`Invalid Sentry Dsn: Invalid port ${e}`),!1):!0:(G.error(`Invalid Sentry Dsn: Invalid protocol ${s}`),!1):(G.error(`Invalid Sentry Dsn: Invalid projectId ${t}`),!1)}function C0(i){const e=i.match(d0);return e==null?void 0:e[1]}function A0(i){const e=i.getOptions(),{host:t}=i.getDsn()||{};let s;return e.orgId?s=String(e.orgId):t&&(s=C0(t)),s}function m0(i){const e=typeof i=="string"?I0(i):jc(i);if(!(!e||!w0(e)))return e}function p0(i){if(typeof i=="boolean")return Number(i);const e=typeof i=="string"?parseFloat(i):i;if(!(typeof e!="number"||isNaN(e)||e<0||e>1))return e}const gc=1;let GM=!1;function O0(i){const{spanId:e,traceId:t,isRemote:s}=i.spanContext(),r=s?e:ur(i).parent_span_id,o=Lc(i).scope,M=s?(o==null?void 0:o.getPropagationContext().propagationSpanId)||cc():e;return{parent_span_id:r,span_id:M,trace_id:t}}function E0(i){if(i&&i.length>0)return i.map(({context:{spanId:e,traceId:t,traceFlags:s,...r},attributes:o})=>({span_id:e,trace_id:t,sampled:s===gc,attributes:o,...r}))}function FM(i){return typeof i=="number"?HM(i):Array.isArray(i)?i[0]+i[1]/1e9:i instanceof Date?HM(i.getTime()):mt()}function HM(i){return i>9999999999?i/1e3:i}function ur(i){if(S0(i))return i.getSpanJSON();const{spanId:e,traceId:t}=i.spanContext();if(f0(i)){const{attributes:s,startTime:r,name:o,endTime:M,status:a,links:u}=i;return{span_id:e,trace_id:t,data:s,description:o,parent_span_id:_0(i),start_timestamp:FM(r),timestamp:FM(M)||void 0,status:k0(a),op:s[c0],origin:s[u0],links:E0(u)}}return{span_id:e,trace_id:t,start_timestamp:0,data:{}}}function _0(i){var e;return"parentSpanId"in i?i.parentSpanId:"parentSpanContext"in i?(e=i.parentSpanContext)==null?void 0:e.spanId:void 0}function f0(i){const e=i;return!!e.attributes&&!!e.startTime&&!!e.name&&!!e.endTime&&!!e.status}function S0(i){return typeof i.getSpanJSON=="function"}function x0(i){const{traceFlags:e}=i.spanContext();return e===gc}function k0(i){if(!(!i||i.code===N0))return i.code===L0?"ok":i.message||"internal_error"}const Y0="_sentryRootSpan",Tc=Q0;function Q0(i){return i[Y0]||i}function VM(){GM||(ks(()=>{console.warn("[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.")}),GM=!0)}function v0(i){var t;if(typeof __SENTRY_TRACING__=="boolean"&&!__SENTRY_TRACING__)return!1;const e=(t=ke())==null?void 0:t.getOptions();return!!e&&(e.tracesSampleRate!=null||!!e.tracesSampler)}function ZM(i){G.log(`Ignoring span ${i.op} - ${i.description} because it matches \`ignoreSpans\`.`)}function XM(i,e){if(!(e!=null&&e.length)||!i.description)return!1;for(const t of e){if(b0(t)){if(Yi(i.description,t))return V&&ZM(i),!0;continue}if(!t.name&&!t.op)continue;const s=t.name?Yi(i.description,t.name):!0,r=t.op?i.op&&Yi(i.op,t.op):!0;if(s&&r)return V&&ZM(i),!0}return!1}function U0(i,e){const t=e.parent_span_id,s=e.span_id;if(t)for(const r of i)r.parent_span_id===s&&(r.parent_span_id=t)}function b0(i){return typeof i=="string"||i instanceof RegExp}const Vo="production",$0="_frozenDsc";function yc(i,e){const t=e.getOptions(),{publicKey:s}=e.getDsn()||{},r={environment:t.environment||Vo,release:t.release,public_key:s,trace_id:i,org_id:A0(e)};return e.emit("createDsc",r),r}function P0(i,e){const t=e.getPropagationContext();return t.dsc||yc(t.traceId,i)}function W0(i){var g;const e=ke();if(!e)return{};const t=Tc(i),s=ur(t),r=s.data,o=t.spanContext().traceState,M=(o==null?void 0:o.get("sentry.sample_rate"))??r[n0]??r[a0];function a(y){return(typeof M=="number"||typeof M=="string")&&(y.sample_rate=`${M}`),y}const u=t[$0];if(u)return a(u);const l=o==null?void 0:o.get("sentry.dsc"),N=l&&y0(l);if(N)return a(N);const c=yc(i.spanContext().traceId,e),L=r[M0]??r["sentry.span.source"],j=s.description;return L!=="url"&&j&&(c.transaction=j),v0()&&(c.sampled=String(x0(t)),c.sample_rand=(o==null?void 0:o.get("sentry.sample_rand"))??((g=Lc(t).scope)==null?void 0:g.getPropagationContext().sampleRand.toString())),a(c),e.emit("createDsc",c,t),c}function R0(i){return!!i&&typeof i=="function"&&"_streamed"in i&&!!i._streamed}function It(i,e=100,t=1/0){try{return Kr("",i,e,t)}catch(s){return{ERROR:`**non-serializable** (${s})`}}}function Dc(i,e=3,t=100*1024){const s=It(i,e);return F0(s)>t?Dc(i,e-1,t):s}function Kr(i,e,t=1/0,s=1/0,r=H0()){const[o,M]=r;if(e==null||["boolean","string"].includes(typeof e)||typeof e=="number"&&Number.isFinite(e))return e;const a=J0(i,e);if(!a.startsWith("[object "))return a;if(e.__sentry_skip_normalization__)return e;const u=typeof e.__sentry_override_normalization_depth__=="number"?e.__sentry_override_normalization_depth__:t;if(u===0)return a.replace("object ","");if(o(e))return"[Circular ~]";const l=e;if(l&&typeof l.toJSON=="function")try{const j=l.toJSON();return Kr("",j,u-1,s,r)}catch{}const N=Array.isArray(e)?[]:{};let c=0;const L=Mc(e);for(const j in L){if(!Object.prototype.hasOwnProperty.call(L,j))continue;if(c>=s){N[j]="[MaxProperties ~]";break}const g=L[j];N[j]=Kr(j,g,u-1,s,r),c++}return M(e),N}function J0(i,e){try{if(i==="domain"&&e&&typeof e=="object"&&e._events)return"[Domain]";if(i==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&e===global)return"[Global]";if(typeof window<"u"&&e===window)return"[Window]";if(typeof document<"u"&&e===document)return"[Document]";if(sc(e))return qa(e);if(QN(e))return"[SyntheticEvent]";if(typeof e=="number"&&!Number.isFinite(e))return`[${e}]`;if(typeof e=="function")return`[Function: ${Bt(e)}]`;if(typeof e=="symbol")return`[${String(e)}]`;if(typeof e=="bigint")return`[BigInt: ${String(e)}]`;const t=B0(e);return/^HTML(\w*)Element$/.test(t)?`[HTMLElement: ${t}]`:`[object ${t}]`}catch(t){return`**non-serializable** (${t})`}}function B0(i){const e=Object.getPrototypeOf(i);return e!=null&&e.constructor?e.constructor.name:"null prototype"}function G0(i){return~-encodeURI(i).split(/%..|./).length}function F0(i){return G0(JSON.stringify(i))}function H0(){const i=new WeakSet;function e(s){return i.has(s)?!0:(i.add(s),!1)}function t(s){i.delete(s)}return[e,t]}function Qs(i,e=[]){return[i,e]}function V0(i,e){const[t,s]=i;return[t,[...s,e]]}function qr(i,e){const t=i[1];for(const s of t){const r=s[0].type;if(e(s,r))return!0}return!1}function Z0(i,e){return qr(i,(t,s)=>e.includes(s))}function eo(i){const e=ir(oe);return e.encodePolyfill?e.encodePolyfill(i):new TextEncoder().encode(i)}function X0(i){const[e,t]=i;let s=JSON.stringify(e);function r(o){typeof s=="string"?s=typeof o=="string"?s+o:[eo(s),o]:s.push(typeof o=="string"?eo(o):o)}for(const o of t){const[M,a]=o;if(r(` +${JSON.stringify(M)} +`),typeof a=="string"||a instanceof Uint8Array)r(a);else{let u;try{u=JSON.stringify(a)}catch{u=JSON.stringify(It(a))}r(u)}}return typeof s=="string"?s:K0(s)}function K0(i){const e=i.reduce((r,o)=>r+o.length,0),t=new Uint8Array(e);let s=0;for(const r of i)t.set(r,s),s+=r.length;return t}function q0(i){const e=typeof i.data=="string"?eo(i.data):i.data;return[{type:"attachment",length:e.length,filename:i.filename,content_type:i.contentType,attachment_type:i.attachmentType},e]}const dc={sessions:"session",event:"error",client_report:"internal",user_report:"default",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",raw_security:"security",log:"log_item",trace_metric:"metric"};function e4(i){return i in dc}function KM(i){return e4(i)?dc[i]:i}function zc(i){if(!(i!=null&&i.sdk))return;const{name:e,version:t}=i.sdk;return{name:e,version:t}}function t4(i,e,t,s){var o;const r=(o=i.sdkProcessingMetadata)==null?void 0:o.dynamicSamplingContext;return{event_id:i.event_id,sent_at:new Date().toISOString(),...e&&{sdk:e},...!!t&&s&&{dsn:ji(s)},...r&&{trace:r}}}function s4(i,e){var s,r,o,M;if(!e)return i;const t=i.sdk||{};return i.sdk={...t,name:t.name||e.name,version:t.version||e.version,integrations:[...((s=i.sdk)==null?void 0:s.integrations)||[],...e.integrations||[]],packages:[...((r=i.sdk)==null?void 0:r.packages)||[],...e.packages||[]],settings:(o=i.sdk)!=null&&o.settings||e.settings?{...(M=i.sdk)==null?void 0:M.settings,...e.settings}:void 0},i}function i4(i,e,t,s){const r=zc(t),o={sent_at:new Date().toISOString(),...r&&{sdk:r},...!!s&&e&&{dsn:ji(e)}},M="aggregates"in i?[{type:"sessions"},i]:[{type:"session"},i.toJSON()];return Qs(o,[M])}function r4(i,e,t,s){const r=zc(t),o=i.type&&i.type!=="replay_event"?i.type:"event";s4(i,t==null?void 0:t.sdk);const M=t4(i,r,s,e);return delete i.sdkProcessingMetadata,Qs(M,[[{type:o},i]])}function o4(i,e){const{fingerprint:t,span:s,breadcrumbs:r,sdkProcessingMetadata:o}=e;M4(i,e),s&&c4(i,s),u4(i,t),n4(i,r),a4(i,o)}function qM(i,e){const{extra:t,tags:s,attributes:r,user:o,contexts:M,level:a,sdkProcessingMetadata:u,breadcrumbs:l,fingerprint:N,eventProcessors:c,attachments:L,propagationContext:j,transactionName:g,span:y}=e;Ws(i,"extra",t),Ws(i,"tags",s),Ws(i,"attributes",r),Ws(i,"user",o),Ws(i,"contexts",M),i.sdkProcessingMetadata=Li(i.sdkProcessingMetadata,u,2),a&&(i.level=a),g&&(i.transactionName=g),y&&(i.span=y),l.length&&(i.breadcrumbs=[...i.breadcrumbs,...l]),N.length&&(i.fingerprint=[...i.fingerprint,...N]),c.length&&(i.eventProcessors=[...i.eventProcessors,...c]),L.length&&(i.attachments=[...i.attachments,...L]),i.propagationContext={...i.propagationContext,...j}}function Ws(i,e,t){i[e]=Li(i[e],t,1)}function hc(i,e){const t=i0().getScopeData();return i&&qM(t,i.getScopeData()),e&&qM(t,e.getScopeData()),t}function M4(i,e){const{extra:t,tags:s,user:r,contexts:o,level:M,transactionName:a}=e;Object.keys(t).length&&(i.extra={...t,...i.extra}),Object.keys(s).length&&(i.tags={...s,...i.tags}),Object.keys(r).length&&(i.user={...r,...i.user}),Object.keys(o).length&&(i.contexts={...o,...i.contexts}),M&&(i.level=M),a&&i.type!=="transaction"&&(i.transaction=a)}function n4(i,e){const t=[...i.breadcrumbs||[],...e];i.breadcrumbs=t.length?t:void 0}function a4(i,e){i.sdkProcessingMetadata={...i.sdkProcessingMetadata,...e}}function c4(i,e){i.contexts={trace:O0(e),...i.contexts},i.sdkProcessingMetadata={dynamicSamplingContext:W0(e),...i.sdkProcessingMetadata};const t=Tc(e),s=ur(t).description;s&&!i.transaction&&i.type==="transaction"&&(i.transaction=s)}function u4(i,e){i.fingerprint=i.fingerprint?Array.isArray(i.fingerprint)?i.fingerprint:[i.fingerprint]:[],e&&(i.fingerprint=i.fingerprint.concat(e)),i.fingerprint.length||delete i.fingerprint}const Cr=0,en=1,tn=2;function gi(i){return new ii(e=>{e(i)})}function Zo(i){return new ii((e,t)=>{t(i)})}class ii{constructor(e){this._state=Cr,this._handlers=[],this._runExecutor(e)}then(e,t){return new ii((s,r)=>{this._handlers.push([!1,o=>{if(!e)s(o);else try{s(e(o))}catch(M){r(M)}},o=>{if(!t)r(o);else try{s(t(o))}catch(M){r(M)}}]),this._executeHandlers()})}catch(e){return this.then(t=>t,e)}finally(e){return new ii((t,s)=>{let r,o;return this.then(M=>{o=!1,r=M,e&&e()},M=>{o=!0,r=M,e&&e()}).then(()=>{if(o){s(r);return}t(r)})})}_executeHandlers(){if(this._state===Cr)return;const e=this._handlers.slice();this._handlers=[],e.forEach(t=>{t[0]||(this._state===en&&t[1](this._value),this._state===tn&&t[2](this._value),t[0]=!0)})}_runExecutor(e){const t=(o,M)=>{if(this._state===Cr){if(li(M)){M.then(s,r);return}this._state=o,this._value=M,this._executeHandlers()}},s=o=>{t(en,o)},r=o=>{t(tn,o)};try{e(s,r)}catch(o){r(o)}}}function l4(i,e,t,s=0){try{const r=to(e,t,i,s);return li(r)?r:gi(r)}catch(r){return Zo(r)}}function to(i,e,t,s){const r=t[s];if(!i||!r)return i;const o=r({...i},e);return V&&o===null&&G.log(`Event processor "${r.id||"?"}" dropped event`),li(o)?o.then(M=>to(M,e,t,s+1)):to(o,e,t,s+1)}let gt,sn,rn,Ot;function N4(i){const e=oe._sentryDebugIds,t=oe._debugIds;if(!e&&!t)return{};const s=e?Object.keys(e):[],r=t?Object.keys(t):[];if(Ot&&s.length===sn&&r.length===rn)return Ot;sn=s.length,rn=r.length,Ot={},gt||(gt={});const o=(M,a)=>{for(const u of M){const l=a[u],N=gt==null?void 0:gt[u];if(N&&Ot&&l)Ot[N[0]]=l,gt&&(gt[u]=[N[0],l]);else if(l){const c=i(u);for(let L=c.length-1;L>=0;L--){const j=c[L],g=j==null?void 0:j.filename;if(g&&Ot&>){Ot[g]=l,gt[u]=[g,l];break}}}}};return e&&o(s,e),t&&o(r,t),Ot}function L4(i,e,t,s,r,o){const{normalizeDepth:M=3,normalizeMaxBreadth:a=1e3}=i,u={...e,event_id:e.event_id||t.event_id||Ke(),timestamp:e.timestamp||Ni()},l=t.integrations||i.integrations.map(I=>I.name);j4(u,i),y4(u,l),r&&r.emit("applyFrameMetadata",e),e.type===void 0&&g4(u,i.stackParser);const N=d4(s,t.captureContext);t.mechanism&&Es(u,t.mechanism);const c=r?r.getEventProcessors():[],L=hc(o,N),j=[...t.attachments||[],...L.attachments];j.length&&(t.attachments=j),o4(u,L);const g=[...c,...L.eventProcessors];return(t.data&&t.data.__sentry__===!0?gi(u):l4(g,u,t)).then(I=>(I&&T4(I),typeof M=="number"&&M>0?D4(I,M,a):I))}function j4(i,e){var a,u;const{environment:t,release:s,dist:r,maxValueLength:o}=e;i.environment=i.environment||t||Vo,!i.release&&s&&(i.release=s),!i.dist&&r&&(i.dist=r);const M=i.request;M!=null&&M.url&&o&&(M.url=Vr(M.url,o)),o&&((u=(a=i.exception)==null?void 0:a.values)==null||u.forEach(l=>{l.value&&(l.value=Vr(l.value,o))}))}function g4(i,e){var s,r;const t=N4(e);(r=(s=i.exception)==null?void 0:s.values)==null||r.forEach(o=>{var M,a;(a=(M=o.stacktrace)==null?void 0:M.frames)==null||a.forEach(u=>{u.filename&&(u.debug_id=t[u.filename])})})}function T4(i){var s,r;const e={};if((r=(s=i.exception)==null?void 0:s.values)==null||r.forEach(o=>{var M,a;(a=(M=o.stacktrace)==null?void 0:M.frames)==null||a.forEach(u=>{u.debug_id&&(u.abs_path?e[u.abs_path]=u.debug_id:u.filename&&(e[u.filename]=u.debug_id),delete u.debug_id)})}),Object.keys(e).length===0)return;i.debug_meta=i.debug_meta||{},i.debug_meta.images=i.debug_meta.images||[];const t=i.debug_meta.images;Object.entries(e).forEach(([o,M])=>{t.push({type:"sourcemap",code_file:o,debug_id:M})})}function y4(i,e){e.length>0&&(i.sdk=i.sdk||{},i.sdk.integrations=[...i.sdk.integrations||[],...e])}function D4(i,e,t){var r,o;if(!i)return null;const s={...i,...i.breadcrumbs&&{breadcrumbs:i.breadcrumbs.map(M=>({...M,...M.data&&{data:It(M.data,e,t)}}))},...i.user&&{user:It(i.user,e,t)},...i.contexts&&{contexts:It(i.contexts,e,t)},...i.extra&&{extra:It(i.extra,e,t)}};return(r=i.contexts)!=null&&r.trace&&s.contexts&&(s.contexts.trace=i.contexts.trace,i.contexts.trace.data&&(s.contexts.trace.data=It(i.contexts.trace.data,e,t))),i.spans&&(s.spans=i.spans.map(M=>({...M,...M.data&&{data:It(M.data,e,t)}}))),(o=i.contexts)!=null&&o.flags&&s.contexts&&(s.contexts.flags=It(i.contexts.flags,3,t)),s}function d4(i,e){if(!e)return i;const t=i?i.clone():new pt;return t.update(e),t}function z4(i,e){return Lt().captureException(i,void 0)}function Ic(i,e){return Lt().captureEvent(i,e)}function on(i){const e=cs(),{user:t}=hc(e,Lt()),{userAgent:s}=oe.navigator||{},r=BN({user:t,...s&&{userAgent:s},...i}),o=e.getSession();return(o==null?void 0:o.status)==="ok"&&_s(o,{status:"exited"}),wc(),e.setSession(r),r}function wc(){const i=cs(),t=Lt().getSession()||i.getSession();t&&GN(t),Cc(),i.setSession()}function Cc(){const i=cs(),e=ke(),t=i.getSession();t&&e&&e.captureSession(t)}function Ar(i=!1){if(i){wc();return}Cc()}const h4="7";function I4(i){const e=i.protocol?`${i.protocol}:`:"",t=i.port?`:${i.port}`:"";return`${e}//${i.host}${t}${i.path?`/${i.path}`:""}/api/`}function w4(i){return`${I4(i)}${i.projectId}/envelope/`}function C4(i,e){const t={sentry_version:h4};return i.publicKey&&(t.sentry_key=i.publicKey),e&&(t.sentry_client=`${e.name}/${e.version}`),new URLSearchParams(t).toString()}function A4(i,e,t){return e||`${w4(i)}?${C4(i,t)}`}const Mn=[];function m4(i){const e={};return i.forEach(t=>{const{name:s}=t,r=e[s];r&&!r.isDefaultInstance&&t.isDefaultInstance||(e[s]=t)}),Object.values(e)}function p4(i){const e=i.defaultIntegrations||[],t=i.integrations;e.forEach(r=>{r.isDefaultInstance=!0});let s;if(Array.isArray(t))s=[...e,...t];else if(typeof t=="function"){const r=t(e);s=Array.isArray(r)?r:[r]}else s=e;return m4(s)}function O4(i,e){const t={};return e.forEach(s=>{s!=null&&s.beforeSetup&&s.beforeSetup(i)}),e.forEach(s=>{s&&Ac(i,s,t)}),t}function nn(i,e){for(const t of e)t!=null&&t.afterAllSetup&&t.afterAllSetup(i)}function Ac(i,e,t){if(t[e.name]){V&&G.log(`Integration skipped because it was already installed: ${e.name}`);return}if(t[e.name]=e,!Mn.includes(e.name)&&typeof e.setupOnce=="function"&&(e.setupOnce(),Mn.push(e.name)),e.setup&&typeof e.setup=="function"&&e.setup(i),typeof e.preprocessEvent=="function"){const s=e.preprocessEvent.bind(e);i.on("preprocessEvent",(r,o)=>s(r,o,i))}if(typeof e.processEvent=="function"){const s=e.processEvent.bind(e),r=Object.assign((o,M)=>s(o,M,i),{id:e.name});i.addEventProcessor(r)}V&&G.log(`Integration installed: ${e.name}`)}function E4(i){return[{type:"log",item_count:i.length,content_type:"application/vnd.sentry.items.log+json"},{items:i}]}function _4(i,e,t,s){const r={};return e!=null&&e.sdk&&(r.sdk={name:e.sdk.name,version:e.sdk.version}),t&&s&&(r.dsn=ji(s)),Qs(r,[E4(i)])}function so(i,e){const t=e??f4(i)??[];if(t.length===0)return;const s=i.getOptions(),r=_4(t,s._metadata,s.tunnel,i.getDsn());mc().set(i,[]),i.emit("flushLogs"),i.sendEnvelope(r)}function f4(i){return mc().get(i)}function mc(){return xs("clientToLogBufferMap",()=>new WeakMap)}function S4(i){return[{type:"trace_metric",item_count:i.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:i}]}function x4(i,e,t,s){const r={};return e!=null&&e.sdk&&(r.sdk={name:e.sdk.name,version:e.sdk.version}),t&&s&&(r.dsn=ji(s)),Qs(r,[S4(i)])}function pc(i,e){const t=e??k4(i)??[];if(t.length===0)return;const s=i.getOptions(),r=x4(t,s._metadata,s.tunnel,i.getDsn());Oc().set(i,[]),i.emit("flushMetrics"),i.sendEnvelope(r)}function k4(i){return Oc().get(i)}function Oc(){return xs("clientToMetricBufferMap",()=>new WeakMap)}function Ec(i){return typeof i=="object"&&typeof i.unref=="function"&&i.unref(),i}const Xo=Symbol.for("SentryBufferFullError");function Ko(i=100){const e=new Set;function t(){return e.sizes(a),()=>s(a)),a}function o(M){if(!e.size)return gi(!0);const a=Promise.allSettled(Array.from(e)).then(()=>!0);if(!M)return a;const u=[a,new Promise(l=>Ec(setTimeout(()=>l(!1),M)))];return Promise.race(u)}return{get $(){return Array.from(e)},add:r,drain:o}}const Y4=60*1e3;function Q4(i,e=ar()){const t=parseInt(`${i}`,10);if(!isNaN(t))return t*1e3;const s=Date.parse(`${i}`);return isNaN(s)?Y4:s-e}function v4(i,e){return i[e]||i.all||0}function U4(i,e,t=ar()){return v4(i,e)>t}function b4(i,{statusCode:e,headers:t},s=ar()){const r={...i},o=t==null?void 0:t["x-sentry-rate-limits"],M=t==null?void 0:t["retry-after"];if(o)for(const a of o.trim().split(",")){const[u,l,,,N]=a.split(":",5),c=parseInt(u,10),L=(isNaN(c)?60:c)*1e3;if(!l)r.all=s+L;else for(const j of l.split(";"))j==="metric_bucket"?(!N||N.split(";").includes("custom"))&&(r[j]=s+L):r[j]=s+L}else M?r.all=s+Q4(M,s):e===429&&(r.all=s+60*1e3);return r}const _c=64;function $4(i,e,t=Ko(i.bufferSize||_c)){let s={};const r=M=>t.drain(M);function o(M){const a=[];if(qr(M,(c,L)=>{const j=KM(L);U4(s,j)?i.recordDroppedEvent("ratelimit_backoff",j):a.push(c)}),a.length===0)return Promise.resolve({});const u=Qs(M[0],a),l=c=>{if(Z0(u,["client_report"])){V&&G.warn(`Dropping client report. Will not send outcomes (reason: ${c}).`);return}qr(u,(L,j)=>{i.recordDroppedEvent(c,KM(j))})},N=()=>e({body:X0(u)}).then(c=>c.statusCode===413?(V&&G.error("Sentry responded with status code 413. Envelope was discarded due to exceeding size limits."),l("send_error"),c):(V&&c.statusCode!==void 0&&(c.statusCode<200||c.statusCode>=300)&&G.warn(`Sentry responded with status code ${c.statusCode} to sent event.`),s=b4(s,c),c),c=>{throw l("network_error"),V&&G.error("Encountered error running transport request:",c),c});return t.add(N).then(c=>c,c=>{if(c===Xo)return V&&G.error("Skipped sending event because buffer is full."),l("queue_overflow"),Promise.resolve({});throw c})}return{send:o,flush:r}}function P4(i,e,t){const s=[{type:"client_report"},{timestamp:Ni(),discarded_events:i}];return Qs(e?{dsn:e}:{},[s])}function fc(i){const e=[];i.message&&e.push(i.message);try{const t=i.exception.values[i.exception.values.length-1];t!=null&&t.value&&(e.push(t.value),t.type&&e.push(`${t.type}: ${t.value}`))}catch{}return e}function W4(i){var u;const{trace_id:e,parent_span_id:t,span_id:s,status:r,origin:o,data:M,op:a}=((u=i.contexts)==null?void 0:u.trace)??{};return{data:M??{},description:i.transaction,op:a,parent_span_id:t,span_id:s??"",start_timestamp:i.start_timestamp??0,status:r,timestamp:i.timestamp,trace_id:e??"",origin:o,profile_id:M==null?void 0:M[lc],exclusive_time:M==null?void 0:M[Nc],measurements:i.measurements,is_segment:!0}}function R4(i){return{type:"transaction",timestamp:i.timestamp,start_timestamp:i.start_timestamp,transaction:i.description,contexts:{trace:{trace_id:i.trace_id,span_id:i.span_id,parent_span_id:i.parent_span_id,op:i.op,status:i.status,origin:i.origin,data:{...i.data,...i.profile_id&&{[lc]:i.profile_id},...i.exclusive_time&&{[Nc]:i.exclusive_time}}}},measurements:i.measurements}}const an="Not capturing exception because it's already been captured.",cn="Discarded session because of missing or non-string release",Sc=Symbol.for("SentryInternalError"),xc=Symbol.for("SentryDoNotSendEventError"),J4=5e3;function Qi(i){return{message:i,[Sc]:!0}}function mr(i){return{message:i,[xc]:!0}}function un(i){return!!i&&typeof i=="object"&&Sc in i}function ln(i){return!!i&&typeof i=="object"&&xc in i}function Nn(i,e,t,s,r){let o=0,M,a=!1;i.on(t,()=>{o=0,clearTimeout(M),a=!1}),i.on(e,u=>{o+=s(u),o>=8e5?r(i):a||(a=!0,M=Ec(setTimeout(()=>{r(i)},J4)))}),i.on("flush",()=>{r(i)})}class B4{constructor(e){var s,r,o;if(this._options=e,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=Ko(((s=e.transportOptions)==null?void 0:s.bufferSize)??_c),e.dsn?this._dsn=m0(e.dsn):V&&G.warn("No DSN provided, client will not send events."),this._dsn){const M=A4(this._dsn,e.tunnel,e._metadata?e._metadata.sdk:void 0);this._transport=e.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:M})}this._options.enableLogs=this._options.enableLogs??((r=this._options._experiments)==null?void 0:r.enableLogs),this._options.enableLogs&&Nn(this,"afterCaptureLog","flushLogs",V4,so),(this._options.enableMetrics??((o=this._options._experiments)==null?void 0:o.enableMetrics)??!0)&&Nn(this,"afterCaptureMetric","flushMetrics",H4,pc)}captureException(e,t,s){const r=Ke();if(vM(e))return V&&G.log(an),r;const o={event_id:r,...t};return this._process(()=>this.eventFromException(e,o).then(M=>this._captureEvent(M,o,s)).then(M=>M),"error"),o.event_id}captureMessage(e,t,s,r){const o={event_id:Ke(),...s},M=Jo(e)?e:String(e),a=or(e),u=a?this.eventFromMessage(M,t,o):this.eventFromException(e,o);return this._process(()=>u.then(l=>this._captureEvent(l,o,r)),a?"unknown":"error"),o.event_id}captureEvent(e,t,s){const r=Ke();if(t!=null&&t.originalException&&vM(t.originalException))return V&&G.log(an),r;const o={event_id:r,...t},M=e.sdkProcessingMetadata||{},a=M.capturedSpanScope,u=M.capturedSpanIsolationScope,l=Ln(e.type);return this._process(()=>this._captureEvent(e,o,a||s,u),l),o.event_id}captureSession(e){this.sendSession(e),_s(e,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(e){const t=this._transport;if(!t)return!0;this.emit("flush");const s=await this._isClientDoneProcessing(e),r=await t.flush(e);return s&&r}async close(e){so(this);const t=await this.flush(e);return this.getOptions().enabled=!1,this.emit("close"),t}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}init(){(this._isEnabled()||this._options.integrations.some(({name:e})=>e.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(e){return this._integrations[e]}addIntegration(e){const t=this._integrations[e.name];!t&&e.beforeSetup&&e.beforeSetup(this),Ac(this,e,this._integrations),t||nn(this,[e])}sendEvent(e,t={}){this.emit("beforeSendEvent",e,t);let s=r4(e,this._dsn,this._options._metadata,this._options.tunnel);for(const r of t.attachments||[])s=V0(s,q0(r));this.sendEnvelope(s).then(r=>this.emit("afterSendEvent",e,r))}sendSession(e){const{release:t,environment:s=Vo}=this._options;if("aggregates"in e){const o=e.attrs||{};if(!o.release&&!t){V&&G.warn(cn);return}o.release=o.release||t,o.environment=o.environment||s,e.attrs=o}else{if(!e.release&&!t){V&&G.warn(cn);return}e.release=e.release||t,e.environment=e.environment||s}this.emit("beforeSendSession",e);const r=i4(e,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(r)}recordDroppedEvent(e,t,s=1){if(this._options.sendClientReports){const r=`${e}:${t}`;V&&G.log(`Recording outcome: "${r}"${s>1?` (${s} times)`:""}`),this._outcomes[r]=(this._outcomes[r]||0)+s}}on(e,t){const s=this._hooks[e]=this._hooks[e]||new Set,r=(...o)=>t(...o);return s.add(r),()=>{s.delete(r)}}emit(e,...t){const s=this._hooks[e];s&&s.forEach(r=>r(...t))}async sendEnvelope(e){if(this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport)try{return await this._transport.send(e)}catch(t){return V&&G.error("Error while sending envelope:",t),{}}return V&&G.error("Transport disabled"),{}}dispose(){}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=O4(this,e),nn(this,e)}_updateSessionFromEvent(e,t){var u,l;let s=t.level==="fatal",r=!1;const o=(u=t.exception)==null?void 0:u.values;if(o){r=!0,s=!1;for(const N of o)if(((l=N.mechanism)==null?void 0:l.handled)===!1){s=!0;break}}const M=e.status==="ok";(M&&e.errors===0||M&&s)&&(_s(e,{...s&&{status:"crashed"},errors:e.errors||Number(r||s)}),this.captureSession(e))}async _isClientDoneProcessing(e){let t=0;for(;!e||tsetTimeout(s,1)),!this._numProcessing)return!0;t++}return!1}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(e,t,s,r){const o=this.getOptions(),M=Object.keys(this._integrations);return!t.integrations&&(M!=null&&M.length)&&(t.integrations=M),this.emit("preprocessEvent",e,t),e.type||r.setLastEventId(e.event_id||t.event_id),L4(o,e,t,s,this,r).then(a=>{var l;if(a===null)return a;this.emit("postprocessEvent",a,t),a.contexts={trace:{...(l=a.contexts)==null?void 0:l.trace,...o0(s)},...a.contexts};const u=P0(this,s);return a.sdkProcessingMetadata={dynamicSamplingContext:u,...a.sdkProcessingMetadata},a})}_captureEvent(e,t={},s=Lt(),r=cs()){return V&&io(e)&&G.log(`Captured error event \`${fc(e)[0]||""}\``),this._processEvent(e,t,s,r).then(o=>o.event_id,o=>{V&&(ln(o)?G.log(o.message):un(o)?G.warn(o.message):G.warn(o))})}_processEvent(e,t,s,r){const o=this.getOptions(),{sampleRate:M}=o,a=kc(e),u=io(e),N=`before send for type \`${e.type||"error"}\``,c=typeof M>"u"?void 0:p0(M);if(u&&typeof c=="number"&&Bi()>c)return this.recordDroppedEvent("sample_rate","error"),Zo(mr(`Discarding event because it's not included in the random sample (sampling rate = ${M})`));const L=Ln(e.type);return this._prepareEvent(e,t,s,r).then(j=>{var d;if(j===null)throw this.recordDroppedEvent("event_processor",L),mr("An event processor returned `null`, will not send event.");if(((d=t.data)==null?void 0:d.__sentry__)===!0)return j;const y=F4(this,o,j,t);return G4(y,N)}).then(j=>{var d;if(j===null){if(this.recordDroppedEvent("before_send",L),a){const m=1+(e.spans||[]).length;this.recordDroppedEvent("before_send","span",m)}throw mr(`${N} returned \`null\`, will not send event.`)}const g=s.getSession()||r.getSession();if(u&&g&&this._updateSessionFromEvent(g,j),a){const I=((d=j.sdkProcessingMetadata)==null?void 0:d.spanCountBeforeProcessing)||0,m=j.spans?j.spans.length:0,w=I-m;w>0&&this.recordDroppedEvent("before_send","span",w)}const y=j.transaction_info;if(a&&y&&j.transaction!==e.transaction){const I="custom";j.transaction_info={...y,source:I}}return this.sendEvent(j,t),j}).then(null,j=>{throw ln(j)||un(j)?j:(this.captureException(j,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:j}),Qi(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. +Reason: ${j}`))})}_process(e,t){this._numProcessing++,this._promiseBuffer.add(e).then(s=>(this._numProcessing--,s),s=>(this._numProcessing--,s===Xo&&this.recordDroppedEvent("queue_overflow",t),s))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([t,s])=>{const[r,o]=t.split(":");return{reason:r,category:o,quantity:s}})}_flushOutcomes(){V&&G.log("Flushing outcomes...");const e=this._clearOutcomes();if(e.length===0){V&&G.log("No outcomes to send");return}if(!this._dsn){V&&G.log("No dsn provided, will not send outcomes");return}V&&G.log("Sending outcomes:",e);const t=P4(e,this._options.tunnel&&ji(this._dsn));this.sendEnvelope(t)}}function Ln(i){return i==="replay_event"?"replay":i||"error"}function G4(i,e){const t=`${e} must return \`null\` or a valid event.`;if(li(i))return i.then(s=>{if(!si(s)&&s!==null)throw Qi(t);return s},s=>{throw Qi(`${e} rejected with ${s}`)});if(!si(i)&&i!==null)throw Qi(t);return i}function F4(i,e,t,s){const{beforeSend:r,beforeSendTransaction:o,ignoreSpans:M}=e,a=!R0(e.beforeSendSpan)&&e.beforeSendSpan;let u=t;if(io(u)&&r)return r(u,s);if(kc(u)){if(a||M){const l=W4(u);if(M!=null&&M.length&&XM(l,M))return null;if(a){const N=a(l);N?u=Li(t,R4(N)):VM()}if(u.spans){const N=[],c=u.spans;for(const j of c){if(M!=null&&M.length&&XM(j,M)){U0(c,j);continue}if(a){const g=a(j);g?N.push(g):(VM(),N.push(j))}else N.push(j)}const L=u.spans.length-N.length;L&&i.recordDroppedEvent("before_send","span",L),u.spans=N}}if(o){if(u.spans){const l=u.spans.length;u.sdkProcessingMetadata={...t.sdkProcessingMetadata,spanCountBeforeProcessing:l}}return o(u,s)}}return u}function io(i){return i.type===void 0}function kc(i){return i.type==="transaction"}function H4(i){let e=0;return i.name&&(e+=i.name.length*2),e+=8,e+Yc(i.attributes)}function V4(i){let e=0;return i.message&&(e+=i.message.length*2),e+Yc(i.attributes)}function Yc(i){if(!i)return 0;let e=0;return Object.values(i).forEach(t=>{Array.isArray(t)?e+=t.length*jn(t[0]):or(t)?e+=jn(t):e+=100}),e}function jn(i){return typeof i=="string"?i.length*2:typeof i=="number"?8:typeof i=="boolean"?4:0}function Z4(i){return rr(i)&&"__sentry_fetch_url_host__"in i&&typeof i.__sentry_fetch_url_host__=="string"}function gn(i){return Z4(i)?`${i.message} (${i.__sentry_fetch_url_host__})`:i.message}function X4(i,e){e.debug===!0&&(V?G.enable():ks(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),Lt().update(e.initialScope);const s=new i(e);return K4(s),s.init(),s}function K4(i){Lt().setClient(i)}function pr(i){if(!i)return{};const e=i.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!e)return{};const t=e[6]||"",s=e[8]||"";return{host:e[4],path:e[5],protocol:e[2],search:t,hash:s,relative:e[5]+t+s}}function q4(i,e=!0){if(i.startsWith("data:")){const t=i.match(/^data:([^;,]+)/),s=t?t[1]:"text/plain",r=i.includes(";base64,"),o=i.indexOf(",");let M="";if(e&&o!==-1){const a=i.slice(o+1);M=a.length>10?`${a.slice(0,10)}... [truncated]`:a}return`data:${s}${r?",base64":""}${M?`,${M}`:""}`}return i}function eL(i){var e;"aggregates"in i?((e=i.attrs)==null?void 0:e.ip_address)===void 0&&(i.attrs={...i.attrs,ip_address:"{{auto}}"}):i.ipAddress===void 0&&(i.ipAddress="{{auto}}")}function tL(i,e,t=[e],s="npm"){const r=(i._metadata=i._metadata||{}).sdk=i._metadata.sdk||{};r.name||(r.name=`sentry.javascript.${e}`,r.packages=t.map(o=>({name:`${s}:@sentry/${o}`,version:is})),r.version=is)}const sL=100;function os(i,e){const t=ke(),s=cs();if(!t)return;const{beforeBreadcrumb:r=null,maxBreadcrumbs:o=sL}=t.getOptions();if(o<=0)return;const a={timestamp:Ni(),...i},u=r?ks(()=>r(a,e)):a;u!==null&&(t.emit&&t.emit("beforeAddBreadcrumb",u,e),s.addBreadcrumb(u,o))}let Tn;const iL="FunctionToString",yn=new WeakMap,rL=(()=>({name:iL,setupOnce(){Tn=Function.prototype.toString;try{Function.prototype.toString=function(...i){const e=Fo(this),t=yn.has(ke())&&e!==void 0?e:this;return Tn.apply(t,i)}}catch{}},setup(i){yn.set(i,!0)}})),oL=rL,ML=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,/can't redefine non-configurable property "solana"/,/vv\(\)\.getRestrictions is not a function/,/Can't find variable: _AutofillCallbackHandler/,/Object Not Found Matching Id:\d+, MethodName:simulateEvent/,/^Java exception was raised during method invocation$/],nL="EventFilters",aL=(i={})=>{let e;return{name:nL,setup(t){const s=t.getOptions();e=Dn(i,s)},processEvent(t,s,r){if(!e){const o=r.getOptions();e=Dn(i,o)}return uL(t,e)?null:t}}},cL=((i={})=>({...aL(i),name:"InboundFilters"}));function Dn(i={},e={}){return{allowUrls:[...i.allowUrls||[],...e.allowUrls||[]],denyUrls:[...i.denyUrls||[],...e.denyUrls||[]],ignoreErrors:[...i.ignoreErrors||[],...e.ignoreErrors||[],...i.disableErrorDefaults?[]:ML],ignoreTransactions:[...i.ignoreTransactions||[],...e.ignoreTransactions||[]]}}function uL(i,e){if(i.type){if(i.type==="transaction"&&NL(i,e.ignoreTransactions))return V&&G.warn(`Event dropped due to being matched by \`ignoreTransactions\` option. +Event: ${es(i)}`),!0}else{if(lL(i,e.ignoreErrors))return V&&G.warn(`Event dropped due to being matched by \`ignoreErrors\` option. +Event: ${es(i)}`),!0;if(TL(i))return V&&G.warn(`Event dropped due to not having an error message, error type or stacktrace. +Event: ${es(i)}`),!0;if(LL(i,e.denyUrls))return V&&G.warn(`Event dropped due to being matched by \`denyUrls\` option. +Event: ${es(i)}. +Url: ${Gi(i)}`),!0;if(!jL(i,e.allowUrls))return V&&G.warn(`Event dropped due to not being matched by \`allowUrls\` option. +Event: ${es(i)}. +Url: ${Gi(i)}`),!0}return!1}function lL(i,e){return e!=null&&e.length?fc(i).some(t=>cr(t,e)):!1}function NL(i,e){if(!(e!=null&&e.length))return!1;const t=i.transaction;return t?cr(t,e):!1}function LL(i,e){if(!(e!=null&&e.length))return!1;const t=Gi(i);return t?cr(t,e):!1}function jL(i,e){if(!(e!=null&&e.length))return!0;const t=Gi(i);return t?cr(t,e):!0}function gL(i=[]){for(let e=i.length-1;e>=0;e--){const t=i[e];if(t&&t.filename!==""&&t.filename!=="[native code]")return t.filename||null}return null}function Gi(i){var e,t;try{const s=[...((e=i.exception)==null?void 0:e.values)??[]].reverse().find(o=>{var M,a,u;return((M=o.mechanism)==null?void 0:M.parent_id)===void 0&&((u=(a=o.stacktrace)==null?void 0:a.frames)==null?void 0:u.length)}),r=(t=s==null?void 0:s.stacktrace)==null?void 0:t.frames;return r?gL(r):null}catch{return V&&G.error(`Cannot extract url for event ${es(i)}`),null}}function TL(i){var e,t;return(t=(e=i.exception)==null?void 0:e.values)!=null&&t.length?!i.message&&!i.exception.values.some(s=>s.stacktrace||s.type&&s.type!=="Error"||s.value):!1}function yL(i,e,t,s,r,o){var a;if(!((a=r.exception)!=null&&a.values)||!o||!Gt(o.originalException,Error))return;const M=r.exception.values.length>0?r.exception.values[r.exception.values.length-1]:void 0;M&&(r.exception.values=ro(i,e,s,o.originalException,t,r.exception.values,M,0))}function ro(i,e,t,s,r,o,M,a){if(o.length>=t+1)return o;let u=[...o];if(Gt(s[r],Error)){dn(M,a,s);const l=i(e,s[r]),N=u.length;zn(l,r,N,a),u=ro(i,e,t,s[r],r,[l,...u],l,N)}return Qc(s)&&s.errors.forEach((l,N)=>{if(Gt(l,Error)){dn(M,a,s);const c=i(e,l),L=u.length;zn(c,`errors[${N}]`,L,a),u=ro(i,e,t,l,r,[c,...u],c,L)}}),u}function Qc(i){return Array.isArray(i.errors)}function dn(i,e,t){i.mechanism={handled:!0,type:"auto.core.linked_errors",...Qc(t)&&{is_exception_group:!0},...i.mechanism,exception_id:e}}function zn(i,e,t,s){i.mechanism={handled:!0,...i.mechanism,type:"chained",source:e,exception_id:t,parent_id:s}}function DL(i){const e="console";ns(e,i),as(e,dL)}function dL(){"console"in oe&&zN.forEach(function(i){i in oe.console&&Ge(oe.console,i,function(e){return Ji[i]=e,function(...t){st("console",{args:t,level:i});const r=Ji[i];r==null||r.apply(oe.console,t)}})})}function zL(i){return i==="warn"?"warning":["fatal","error","warning","log","info","debug"].includes(i)?i:"log"}const hL="Dedupe",IL=(()=>{let i;return{name:hL,processEvent(e){if(e.type)return e;try{if(wL(e,i))return V&&G.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return i=e}}}),vc=IL;function wL(i,e){return e?!!(CL(i,e)||AL(i,e)):!1}function CL(i,e){const t=i.message,s=e.message;return!(!t&&!s||t&&!s||!t&&s||t!==s||!bc(i,e)||!Uc(i,e))}function AL(i,e){const t=hn(e),s=hn(i);return!(!t||!s||t.type!==s.type||t.value!==s.value||!bc(i,e)||!Uc(i,e))}function Uc(i,e){let t=fM(i),s=fM(e);if(!t&&!s)return!0;if(t&&!s||!t&&s||(t=t,s=s,s.length!==t.length))return!1;for(let r=0;r({name:mL,setup(i){i.on("spanStart",e=>{const t=Lt().getScopeData(),s=cs().getScopeData(),r=t.conversationId||s.conversationId;if(r){const{op:o,data:M,description:a}=ur(e);if(!(o!=null&&o.startsWith("gen_ai."))&&!M["ai.operationId"]&&!(a!=null&&a.startsWith("ai.")))return;e.setAttribute(l0,r)}})}})),OL=pL;function $c(i){if(i!==void 0)return i>=400&&i<500?"warning":i>=500?"error":void 0}const ri=oe;function EL(){return"history"in ri&&!!ri.history}function _L(){if(!("fetch"in ri))return!1;try{return new Headers,new Request("data:,"),new Response,!0}catch{return!1}}function oo(i){return i&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(i.toString())}function fL(){var t;if(typeof EdgeRuntime=="string")return!0;if(!_L())return!1;if(oo(ri.fetch))return!0;let i=!1;const e=ri.document;if(e&&typeof e.createElement=="function")try{const s=e.createElement("iframe");s.hidden=!0,e.head.appendChild(s),(t=s.contentWindow)!=null&&t.fetch&&(i=oo(s.contentWindow.fetch)),e.head.removeChild(s)}catch(s){V&&G.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",s)}return i}function SL(i,e){const t="fetch";ns(t,i),as(t,()=>xL(void 0,e))}function xL(i,e=!1){e&&!fL()||Ge(oe,"fetch",function(t){return function(...s){const r=new Error,{method:o,url:M}=kL(s),a={args:s,fetchData:{method:o,url:M},startTimestamp:mt()*1e3,virtualError:r,headers:YL(s)};return st("fetch",{...a}),t.apply(oe,s).then(async u=>(st("fetch",{...a,endTimestamp:mt()*1e3,response:u}),u),u=>{st("fetch",{...a,endTimestamp:mt()*1e3,error:u}),rr(u)&&u.stack===void 0&&(u.stack=r.stack,Ft(u,"framesToPop",1));const l=ke(),N=(l==null?void 0:l.getOptions().enhanceFetchErrorMessages)??"always";if(N!==!1&&u instanceof TypeError&&(u.message==="Failed to fetch"||u.message==="Load failed"||u.message==="NetworkError when attempting to fetch resource."))try{const j=new URL(a.fetchData.url).host;N==="always"?u.message=`${u.message} (${j})`:Ft(u,"__sentry_fetch_url_host__",j)}catch{}throw u})}})}function vi(i,e){return!!i&&typeof i=="object"&&!!i[e]}function In(i){return typeof i=="string"?i:i?vi(i,"url")?i.url:i.toString?i.toString():"":""}function kL(i){if(i.length===0)return{method:"GET",url:""};if(i.length===2){const[t,s]=i;return{url:In(t),method:vi(s,"method")?String(s.method).toUpperCase():ic(t)&&vi(t,"method")?String(t.method).toUpperCase():"GET"}}const e=i[0];return{url:In(e),method:vi(e,"method")?String(e.method).toUpperCase():"GET"}}function YL(i){const[e,t]=i;try{if(typeof t=="object"&&t!==null&&"headers"in t&&t.headers)return new Headers(t.headers);if(ic(e))return new Headers(e.headers)}catch{}}function QL(){return"npm"}const Ne=oe;let Mo=0;function Pc(){return Mo>0}function vL(){Mo++,setTimeout(()=>{Mo--})}function Ss(i,e={}){function t(r){return typeof r=="function"}if(!t(i))return i;try{const r=i.__sentry_wrapped__;if(r)return typeof r=="function"?r:i;if(Fo(i))return i}catch{return i}const s=function(...r){try{const o=r.map(M=>Ss(M,e));return i.apply(this,o)}catch(o){throw vL(),r0(M=>{M.addEventProcessor(a=>(e.mechanism&&(Zr(a,void 0),Es(a,e.mechanism)),a.extra={...a.extra,arguments:r},a)),z4(o)}),o}};try{for(const r in i)Object.prototype.hasOwnProperty.call(i,r)&&(s[r]=i[r])}catch{}oc(s,i),Ft(i,"__sentry_wrapped__",s);try{Object.getOwnPropertyDescriptor(s,"name").configurable&&Object.defineProperty(s,"name",{get(){return i.name}})}catch{}return s}function UL(){const i=Go(),{referrer:e}=Ne.document||{},{userAgent:t}=Ne.navigator||{},s={...e&&{Referer:e},...t&&{"User-Agent":t}};return{url:i,headers:s}}function qo(i,e){const t=eM(i,e),s={type:RL(e),value:JL(e)};return t.length&&(s.stacktrace={frames:t}),s.type===void 0&&s.value===""&&(s.value="Unrecoverable error caught"),s}function bL(i,e,t,s){const r=ke(),o=r==null?void 0:r.getOptions().normalizeDepth,M=VL(e),a={__serialized__:Dc(e,o)};if(M)return{exception:{values:[qo(i,M)]},extra:a};const u={exception:{values:[{type:Mr(e)?e.constructor.name:s?"UnhandledRejection":"Error",value:FL(e,{isUnhandledRejection:s})}]},extra:a};if(t){const l=eM(i,t);l.length&&(u.exception.values[0].stacktrace={frames:l})}return u}function Or(i,e){return{exception:{values:[qo(i,e)]}}}function eM(i,e){const t=e.stacktrace||e.stack||"",s=PL(e),r=WL(e);try{return i(t,s,r)}catch{}return[]}const $L=/Minified React error #\d+;/i;function PL(i){return i&&$L.test(i.message)?1:0}function WL(i){return typeof i.framesToPop=="number"?i.framesToPop:0}function Wc(i){return typeof WebAssembly<"u"&&typeof WebAssembly.Exception<"u"?i instanceof WebAssembly.Exception:!1}function RL(i){const e=i==null?void 0:i.name;return!e&&Wc(i)?i.message&&Array.isArray(i.message)&&i.message.length==2?i.message[0]:"WebAssembly.Exception":e}function JL(i){const e=i==null?void 0:i.message;return Wc(i)?Array.isArray(i.message)&&i.message.length==2?i.message[1]:"wasm exception":e?e.error&&typeof e.error.message=="string"?gn(e.error):gn(i):"No error message"}function BL(i,e,t,s){const r=(t==null?void 0:t.syntheticException)||void 0,o=tM(i,e,r,s);return Es(o),o.level="error",t!=null&&t.event_id&&(o.event_id=t.event_id),gi(o)}function GL(i,e,t="info",s,r){const o=(s==null?void 0:s.syntheticException)||void 0,M=no(i,e,o,r);return M.level=t,s!=null&&s.event_id&&(M.event_id=s.event_id),gi(M)}function tM(i,e,t,s,r){let o;if(tc(e)&&e.error)return Or(i,e.error);if(xM(e)||xN(e)){const M=e;if("stack"in e)o=Or(i,e);else{const a=M.name||(xM(M)?"DOMError":"DOMException"),u=M.message?`${a}: ${M.message}`:a;o=no(i,u,t,s),Zr(o,u)}return"code"in M&&(o.tags={...o.tags,"DOMException.code":`${M.code}`}),o}return rr(e)?Or(i,e):si(e)||Mr(e)?(o=bL(i,e,t,r),Es(o,{synthetic:!0}),o):(o=no(i,e,t,s),Zr(o,`${e}`),Es(o,{synthetic:!0}),o)}function no(i,e,t,s){const r={};if(s&&t){const o=eM(i,t);o.length&&(r.exception={values:[{value:e,stacktrace:{frames:o}}]}),Es(r,{synthetic:!0})}if(Jo(e)){const{__sentry_template_string__:o,__sentry_template_values__:M}=e;return r.logentry={message:o,params:M},r}return r.message=e,r}function FL(i,{isUnhandledRejection:e}){const t=$N(i),s=e?"promise rejection":"exception";return tc(i)?`Event \`ErrorEvent\` captured as ${s} with message \`${i.message}\``:Mr(i)?`Event \`${HL(i)}\` (type=${i.type}) captured as ${s}`:`Object captured as ${s} with keys: ${t}`}function HL(i){try{const e=Object.getPrototypeOf(i);return e?e.constructor.name:void 0}catch{}}function VL(i){return Object.values(i).find(e=>e instanceof Error)}class ZL extends B4{constructor(e){var N;const t=XL(e),s=Ne.SENTRY_SDK_SOURCE||QL();tL(t,"browser",["browser"],s),(N=t._metadata)!=null&&N.sdk&&(t._metadata.sdk.settings={infer_ip:t.sendDefaultPii?"auto":"never",...t._metadata.sdk.settings}),super(t);const{sendDefaultPii:r,sendClientReports:o,enableLogs:M,_experiments:a,enableMetrics:u}=this._options,l=u??(a==null?void 0:a.enableMetrics)??!0;Ne.document&&(o||M||l)&&Ne.document.addEventListener("visibilitychange",()=>{Ne.document.visibilityState==="hidden"&&(o&&this._flushOutcomes(),M&&so(this),l&&pc(this))}),r&&this.on("beforeSendSession",eL)}eventFromException(e,t){return BL(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e,t="info",s){return GL(this._options.stackParser,e,t,s,this._options.attachStacktrace)}_prepareEvent(e,t,s,r){return e.platform=e.platform||"javascript",super._prepareEvent(e,t,s,r)}}function XL(i){var e;return{release:typeof __SENTRY_RELEASE__=="string"?__SENTRY_RELEASE__:(e=Ne.SENTRY_RELEASE)==null?void 0:e.id,sendClientReports:!0,parentSpanIsAlwaysRootSpan:!0,...i}}const KL=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,Qe=oe,qL=1e3;let wn,ao,co;function ej(i){ns("dom",i),as("dom",tj)}function tj(){if(!Qe.document)return;const i=st.bind(null,"dom"),e=Cn(i,!0);Qe.document.addEventListener("click",e,!1),Qe.document.addEventListener("keypress",e,!1),["EventTarget","Node"].forEach(t=>{var o,M;const r=(o=Qe[t])==null?void 0:o.prototype;(M=r==null?void 0:r.hasOwnProperty)!=null&&M.call(r,"addEventListener")&&(Ge(r,"addEventListener",function(a){return function(u,l,N){if(u==="click"||u=="keypress")try{const c=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},L=c[u]=c[u]||{refCount:0};if(!L.handler){const j=Cn(i);L.handler=j,a.call(this,u,j,N)}L.refCount++}catch{}return a.call(this,u,l,N)}}),Ge(r,"removeEventListener",function(a){return function(u,l,N){if(u==="click"||u=="keypress")try{const c=this.__sentry_instrumentation_handlers__||{},L=c[u];L&&(L.refCount--,L.refCount<=0&&(a.call(this,u,L.handler,N),L.handler=void 0,delete c[u]),Object.keys(c).length===0&&delete this.__sentry_instrumentation_handlers__)}catch{}return a.call(this,u,l,N)}}))})}function sj(i){if(i.type!==ao)return!1;try{if(!i.target||i.target._sentryId!==co)return!1}catch{}return!0}function ij(i,e){return i!=="keypress"?!1:e!=null&&e.tagName?!(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable):!0}function Cn(i,e=!1){return t=>{if(!t||t._sentryCaptured)return;const s=rj(t);if(ij(t.type,s))return;Ft(t,"_sentryCaptured",!0),s&&!s._sentryId&&Ft(s,"_sentryId",Ke());const r=t.type==="keypress"?"input":t.type;sj(t)||(i({event:t,name:r,global:e}),ao=t.type,co=s?s._sentryId:void 0),clearTimeout(wn),wn=Qe.setTimeout(()=>{co=void 0,ao=void 0},qL)}}function rj(i){try{return i.target}catch{return null}}let wi;function Rc(i){const e="history";ns(e,i),as(e,oj)}function oj(){if(Qe.addEventListener("popstate",()=>{const e=Qe.location.href,t=wi;if(wi=e,t===e)return;st("history",{from:t,to:e})}),!EL())return;function i(e){return function(...t){const s=t.length>2?t[2]:void 0;if(s){const r=wi,o=Mj(String(s));if(wi=o,r===o)return e.apply(this,t);st("history",{from:r,to:o})}return e.apply(this,t)}}Ge(Qe.history,"pushState",i),Ge(Qe.history,"replaceState",i)}function Mj(i){try{return new URL(i,Qe.location.origin).toString()}catch{return i}}const Ui={};function nj(i){const e=Ui[i];if(e)return e;let t=Qe[i];if(oo(t))return Ui[i]=t.bind(Qe);const s=Qe.document;if(s&&typeof s.createElement=="function")try{const r=s.createElement("iframe");r.hidden=!0,s.head.appendChild(r);const o=r.contentWindow;o!=null&&o[i]&&(t=o[i]),s.head.removeChild(r)}catch(r){KL&&G.warn(`Could not create sandbox iframe for ${i} check, bailing to window.${i}: `,r)}return t&&(Ui[i]=t.bind(Qe))}function aj(i){Ui[i]=void 0}const Hs="__sentry_xhr_v3__";function cj(i){ns("xhr",i),as("xhr",uj)}function uj(){if(!Qe.XMLHttpRequest)return;const i=XMLHttpRequest.prototype;i.open=new Proxy(i.open,{apply(e,t,s){const r=new Error,o=mt()*1e3,M=At(s[0])?s[0].toUpperCase():void 0,a=lj(s[1]);if(!M||!a)return e.apply(t,s);t[Hs]={method:M,url:a,request_headers:{}},M==="POST"&&a.match(/sentry_key/)&&(t.__sentry_own_request__=!0);const u=()=>{const l=t[Hs];if(l&&t.readyState===4){try{l.status_code=t.status}catch{}const N={endTimestamp:mt()*1e3,startTimestamp:o,xhr:t,virtualError:r};st("xhr",N)}};return"onreadystatechange"in t&&typeof t.onreadystatechange=="function"?t.onreadystatechange=new Proxy(t.onreadystatechange,{apply(l,N,c){return u(),l.apply(N,c)}}):t.addEventListener("readystatechange",u),t.setRequestHeader=new Proxy(t.setRequestHeader,{apply(l,N,c){const[L,j]=c,g=N[Hs];return g&&At(L)&&At(j)&&(g.request_headers[L.toLowerCase()]=j),l.apply(N,c)}}),e.apply(t,s)}}),i.send=new Proxy(i.send,{apply(e,t,s){const r=t[Hs];if(!r)return e.apply(t,s);s[0]!==void 0&&(r.body=s[0]);const o={startTimestamp:mt()*1e3,xhr:t};return st("xhr",o),e.apply(t,s)}})}function lj(i){if(At(i))return i;try{return i.toString()}catch{}}const Nj=40;function Lj(i,e=nj("fetch")){let t=0,s=0;async function r(o){const M=o.body.length;t+=M,s++;const a={body:o.body,method:"POST",referrerPolicy:"strict-origin",headers:i.headers,keepalive:t<=6e4&&s<15,...i.fetchOptions};try{const u=await e(i.url,a);return{statusCode:u.status,headers:{"x-sentry-rate-limits":u.headers.get("X-Sentry-Rate-Limits"),"retry-after":u.headers.get("Retry-After")}}}catch(u){throw aj("fetch"),u}finally{t-=M,s--}}return $4(i,r,Ko(i.bufferSize||Nj))}const lr=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,jj=30,gj=50;function uo(i,e,t,s){const r={filename:i,function:e===""?rs:e,in_app:!0};return t!==void 0&&(r.lineno=t),s!==void 0&&(r.colno=s),r}const Tj=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,yj=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Dj=/\((\S*)(?::(\d+))(?::(\d+))\)/,dj=/at (.+?) ?\(data:(.+?),/,zj=i=>{var r;const e=i.match(dj);if(e)return{filename:``,function:e[1]};const t=Tj.exec(i);if(t){const[,o,M,a]=t;return uo(o,rs,+M,+a)}const s=yj.exec(i);if(s){if(((r=s[2])==null?void 0:r.indexOf("eval"))===0){const u=Dj.exec(s[2]);u&&(s[2]=u[1],s[3]=u[2],s[4]=u[3])}const[M,a]=Jc(s[1]||rs,s[2]);return uo(a,M,s[3]?+s[3]:void 0,s[4]?+s[4]:void 0)}},hj=[jj,zj],Ij=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,wj=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Cj=i=>{const e=Ij.exec(i);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const o=wj.exec(e[3]);o&&(e[1]=e[1]||"eval",e[3]=o[1],e[4]=o[2],e[5]="")}let s=e[3],r=e[1]||rs;return[r,s]=Jc(r,s),uo(s,r,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}},Aj=[gj,Cj],mj=[hj,Aj],pj=Ka(...mj),Jc=(i,e)=>{const t=i.indexOf("safari-extension")!==-1,s=i.indexOf("safari-web-extension")!==-1;return t||s?[i.indexOf("@")!==-1?i.split("@")[0]:rs,t?`safari-extension:${e}`:`safari-web-extension:${e}`]:[i,e]},Ci=1024,Oj="Breadcrumbs",Ej=((i={})=>{const e={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...i};return{name:Oj,setup(t){e.console&&DL(xj(t)),e.dom&&ej(Sj(t,e.dom)),e.xhr&&cj(kj(t)),e.fetch&&SL(Yj(t)),e.history&&Rc(Qj(t)),e.sentry&&t.on("beforeSendEvent",fj(t))}}}),_j=Ej;function fj(i){return function(t){ke()===i&&os({category:`sentry.${t.type==="transaction"?"transaction":"event"}`,event_id:t.event_id,level:t.level,message:es(t)},{event:t})}}function Sj(i,e){return function(s){if(ke()!==i)return;let r,o,M=typeof e=="object"?e.serializeAttribute:void 0,a=typeof e=="object"&&typeof e.maxStringLength=="number"?e.maxStringLength:void 0;a&&a>Ci&&(lr&&G.warn(`\`dom.maxStringLength\` cannot exceed ${Ci}, but a value of ${a} was configured. Sentry will use ${Ci} instead.`),a=Ci),typeof M=="string"&&(M=[M]);try{const l=s.event,N=vj(l)?l.target:l;r=rc(N,{keyAttrs:M,maxStringLength:a}),o=bN(N)}catch{r=""}if(r.length===0)return;const u={category:`ui.${s.name}`,message:r};o&&(u.data={"ui.component_name":o}),os(u,{event:s.event,name:s.name,global:s.global})}}function xj(i){return function(t){if(ke()!==i)return;const s={category:"console",data:{arguments:t.args,logger:"console"},level:zL(t.level),message:QM(t.args," ")};if(t.level==="assert")if(t.args[0]===!1)s.message=`Assertion failed: ${QM(t.args.slice(1)," ")||"console.assert"}`,s.data.arguments=t.args.slice(1);else return;os(s,{input:t.args,level:t.level})}}function kj(i){return function(t){if(ke()!==i)return;const{startTimestamp:s,endTimestamp:r}=t,o=t.xhr[Hs];if(!s||!r||!o)return;const{method:M,url:a,status_code:u,body:l}=o,N={method:M,url:a,status_code:u},c={xhr:t.xhr,input:l,startTimestamp:s,endTimestamp:r},L={category:"xhr",data:N,type:"http",level:$c(u)};i.emit("beforeOutgoingRequestBreadcrumb",L,c),os(L,c)}}function Yj(i){return function(t){if(ke()!==i)return;const{startTimestamp:s,endTimestamp:r}=t;if(r&&!(t.fetchData.url.match(/sentry_key/)&&t.fetchData.method==="POST"))if(t.error){const o={data:t.error,input:t.args,startTimestamp:s,endTimestamp:r},M={category:"fetch",data:t.fetchData,level:"error",type:"http"};i.emit("beforeOutgoingRequestBreadcrumb",M,o),os(M,o)}else{const o=t.response,M={...t.fetchData,status_code:o==null?void 0:o.status},a={input:t.args,response:o,startTimestamp:s,endTimestamp:r},u={category:"fetch",data:M,type:"http",level:$c(M.status_code)};i.emit("beforeOutgoingRequestBreadcrumb",u,a),os(u,a)}}}function Qj(i){return function(t){if(ke()!==i)return;let s=t.from,r=t.to;const o=pr(Ne.location.href);let M=s?pr(s):void 0;const a=pr(r);M!=null&&M.path||(M=o),o.protocol===a.protocol&&o.host===a.host&&(r=a.relative),o.protocol===M.protocol&&o.host===M.host&&(s=M.relative),os({category:"navigation",data:{from:s,to:r}})}}function vj(i){return!!i&&!!i.target}const Uj="EventTarget,Window,Node,ApplicationCache,AudioTrackList,BroadcastChannel,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(","),bj="BrowserApiErrors",$j=((i={})=>{const e={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...i};return{name:bj,setupOnce(){e.setTimeout&&Ge(Ne,"setTimeout",An),e.setInterval&&Ge(Ne,"setInterval",An),e.requestAnimationFrame&&Ge(Ne,"requestAnimationFrame",Wj),e.XMLHttpRequest&&"XMLHttpRequest"in Ne&&Ge(XMLHttpRequest.prototype,"send",Rj);const t=e.eventTarget;t&&(Array.isArray(t)?t:Uj).forEach(r=>Jj(r,e))}}}),Pj=$j;function An(i){return function(...e){const t=e[0];return e[0]=Ss(t,{mechanism:{handled:!1,type:`auto.browser.browserapierrors.${Bt(i)}`}}),i.apply(this,e)}}function Wj(i){return function(e){return i.apply(this,[Ss(e,{mechanism:{data:{handler:Bt(i)},handled:!1,type:"auto.browser.browserapierrors.requestAnimationFrame"}})])}}function Rj(i){return function(...e){const t=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(r=>{r in t&&typeof t[r]=="function"&&Ge(t,r,function(o){const M={mechanism:{data:{handler:Bt(o)},handled:!1,type:`auto.browser.browserapierrors.xhr.${r}`}},a=Fo(o);return a&&(M.mechanism.data.handler=Bt(a)),Ss(o,M)})}),i.apply(this,e)}}function Jj(i,e){var r,o;const s=(r=Ne[i])==null?void 0:r.prototype;(o=s==null?void 0:s.hasOwnProperty)!=null&&o.call(s,"addEventListener")&&(Ge(s,"addEventListener",function(M){return function(a,u,l){try{Bj(u)&&(u.handleEvent=Ss(u.handleEvent,{mechanism:{data:{handler:Bt(u),target:i},handled:!1,type:"auto.browser.browserapierrors.handleEvent"}}))}catch{}return e.unregisterOriginalCallbacks&&Gj(this,a,u),M.apply(this,[a,Ss(u,{mechanism:{data:{handler:Bt(u),target:i},handled:!1,type:"auto.browser.browserapierrors.addEventListener"}}),l])}}),Ge(s,"removeEventListener",function(M){return function(a,u,l){try{const N=u.__sentry_wrapped__;N&&M.call(this,a,N,l)}catch{}return M.call(this,a,u,l)}}))}function Bj(i){return typeof i.handleEvent=="function"}function Gj(i,e,t){i&&typeof i=="object"&&"removeEventListener"in i&&typeof i.removeEventListener=="function"&&i.removeEventListener(e,t)}const Fj=(i={})=>{const e=i.lifecycle??"route";return{name:"BrowserSession",setupOnce(){if(typeof Ne.document>"u"){lr&&G.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.");return}on({ignoreDuration:!0}),Ar();const t=cs();let s=t.getUser();t.addScopeListener(r=>{const o=r.getUser();((s==null?void 0:s.id)!==(o==null?void 0:o.id)||(s==null?void 0:s.ip_address)!==(o==null?void 0:o.ip_address))&&(Ar(),s=o)}),e==="route"&&Rc(({from:r,to:o})=>{r!==o&&(on({ignoreDuration:!0}),Ar())})}}},Hj="CultureContext",Vj=(()=>({name:Hj,preprocessEvent(i){var t;const e=Xj();e&&(i.contexts={...i.contexts,culture:{...e,...(t=i.contexts)==null?void 0:t.culture}})}})),Zj=Vj;function Xj(){try{const i=Ne.Intl;if(!i)return;const e=i.DateTimeFormat().resolvedOptions();return{locale:e.locale,timezone:e.timeZone,calendar:e.calendar}}catch{return}}const Kj="GlobalHandlers",qj=((i={})=>{const e={onerror:!0,onunhandledrejection:!0,...i};return{name:Kj,setupOnce(){Error.stackTraceLimit=50},setup(t){e.onerror&&(tg(t),mn("onerror")),e.onunhandledrejection&&(sg(t),mn("onunhandledrejection"))}}}),eg=qj;function tg(i){EN(e=>{const{stackParser:t,attachStacktrace:s}=Bc();if(ke()!==i||Pc())return;const{msg:r,url:o,line:M,column:a,error:u}=e,l=og(tM(t,u||r,void 0,s,!1),o,M,a);l.level="error",Ic(l,{originalException:u,mechanism:{handled:!1,type:"auto.browser.global_handlers.onerror"}})})}function sg(i){fN(e=>{const{stackParser:t,attachStacktrace:s}=Bc();if(ke()!==i||Pc())return;const r=ig(e),o=or(r)?rg(r):tM(t,r,void 0,s,!0);o.level="error",Ic(o,{originalException:r,mechanism:{handled:!1,type:"auto.browser.global_handlers.onunhandledrejection"}})})}function ig(i){if(or(i))return i;try{if("reason"in i)return i.reason;if("detail"in i&&"reason"in i.detail)return i.detail.reason}catch{}return i}function rg(i){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(i)}`}]}}}function og(i,e,t,s){const r=i.exception=i.exception||{},o=r.values=r.values||[],M=o[0]=o[0]||{},a=M.stacktrace=M.stacktrace||{},u=a.frames=a.frames||[];return u.length===0&&u.push({colno:s,lineno:t,filename:Mg(e)??Go(),function:rs,in_app:!0}),i}function mn(i){lr&&G.log(`Global Handler attached: ${i}`)}function Bc(){const i=ke();return(i==null?void 0:i.getOptions())||{stackParser:()=>[],attachStacktrace:!1}}function Mg(i){if(!(!At(i)||i.length===0))return i.startsWith("data:")?`<${q4(i,!1)}>`:i}const ng=()=>({name:"HttpContext",preprocessEvent(i){var s;if(!Ne.navigator&&!Ne.location&&!Ne.document)return;const e=UL(),t={...e.headers,...(s=i.request)==null?void 0:s.headers};i.request={...e,...i.request,headers:t}}}),ag="cause",cg=5,ug="LinkedErrors",lg=((i={})=>{const e=i.limit||cg,t=i.key||ag;return{name:ug,preprocessEvent(s,r,o){const M=o.getOptions();yL(qo,M.stackParser,t,e,s,r)}}}),Ng=lg;function Lg(){return jg()?(lr&&ks(()=>{console.error("[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/")}),!0):!1}function jg(){var r;if(typeof Ne.window>"u")return!1;const i=Ne;if(i.nw)return!1;const e=i.chrome||i.browser;if(!((r=e==null?void 0:e.runtime)!=null&&r.id))return!1;const t=Go();return!(Ne===Ne.top&&/^(?:chrome-extension|moz-extension|ms-browser-extension|safari-web-extension):\/\//.test(t))}function gg(i){return[cL(),oL(),OL(),Pj(),_j(),eg(),Ng(),vc(),ng(),Zj(),Fj()]}function Tg(i={}){const e=!i.skipBrowserExtensionCheck&&Lg();let t=i.defaultIntegrations==null?gg():i.defaultIntegrations;const s={...i,enabled:e?!1:i.enabled,stackParser:pN(i.stackParser||pj),integrations:p4({integrations:i.integrations,defaultIntegrations:t}),transport:i.transport||Lj};return X4(ZL,s)}function yg(){console.log(` +██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗ +██║██╔═══██╗██╔══██╗██╔══██╗██╔═══██╗██║ ██╔╝██╔════╝██╔══██╗ +██║██║ ██║██████╔╝██████╔╝██║ ██║█████╔╝ █████╗ ██████╔╝ +██║██║ ██║██╔══██╗██╔══██╗██║ ██║██╔═██╗ ██╔══╝ ██╔══██╗ +██║╚██████╔╝██████╔╝██║ ██║╚██████╔╝██║ ██╗███████╗██║ ██║ +╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ +`),console.log("Nice to see you here! :) Join our dev community here https://github.com/ioBroker/ioBroker or here https://github.com/iobroker-community-adapters"),console.log("Help us to create open source project with reactJS!"),console.log("See you :)")}function Dg(i){const e=i.themeType||"light",t=i.size||300;return n.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{style:{width:t,height:t,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:2}},n.createElement("svg",{viewBox:"0 0 500 500",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%"},n.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"200"}),n.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"133"}),n.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"83"}),n.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"66"}),n.createElement("circle",{strokeWidth:"15",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"15"}),n.createElement("g",null,n.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),n.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),n.createElement("g",{transform:"rotate(60, 250, 250)"},n.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),n.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),n.createElement("g",{transform:"rotate(120, 250, 250)"},n.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),n.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),[0,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345].map(s=>n.createElement("line",{key:s,transform:`rotate(${s}, 250, 250)`,y2:"250",x2:"115",y1:"240",x1:"135",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),n.createElement("animateTransform",{attributeType:"xml",attributeName:"transform",type:"rotate",from:"0 250 250",to:"360 250 250",dur:"10s",additive:"sum",repeatCount:"indefinite"})),n.createElement("path",{d:"M 56.089 160.250 C 55.077 162.588, 46.037 182.950, 36 205.500 C 25.963 228.050, 16.923 248.412, 15.911 250.750 L 14.071 255 28.286 254.976 L 42.500 254.952 47.931 242.226 C 50.918 235.227, 54.366 227.250, 55.592 224.500 L 57.822 219.500 66.383 237.250 L 74.945 255 88.973 255 C 96.688 255, 103 254.841, 103 254.646 C 103 254.452, 100.043 248.071, 96.430 240.466 L 89.859 226.638 91.603 222.771 C 92.563 220.644, 93.660 218.710, 94.043 218.473 C 94.426 218.237, 108.609 246.609, 125.562 281.522 L 156.384 345 166.071 345 C 175.705 345, 175.763 344.985, 176.856 342.250 C 179.911 334.602, 208 260.765, 208 260.383 C 208 260.138, 202.546 260.065, 195.879 260.219 L 183.759 260.500 174.629 285.244 C 169.608 298.853, 165.254 309.990, 164.952 309.994 C 164.651 309.997, 148.901 277.389, 129.952 237.532 C 111.004 197.674, 95.275 165.057, 95 165.049 C 94.725 165.041, 90.685 172.415, 86.022 181.435 C 81.358 190.455, 77.308 197.689, 77.022 197.510 C 76.735 197.331, 72.675 187.920, 68 176.598 C 63.325 165.275, 59.147 156.008, 58.714 156.005 C 58.282 156.002, 57.101 157.912, 56.089 160.250 M 55.294 168.694 C 52.241 175.842, 52.166 176.323, 53.718 178.692 L 55.349 181.182 56.706 178.591 C 57.453 177.166, 58.406 176, 58.825 176 C 59.244 176, 60.777 178.363, 62.232 181.250 C 64.829 186.403, 64.879 186.440, 64.939 183.250 C 64.973 181.463, 65.422 180, 65.937 180 C 66.724 180, 60.176 162.824, 58.920 161.596 C 58.689 161.370, 57.057 164.564, 55.294 168.694 M 91.698 175.542 C 89.205 180.626, 89.099 181.308, 90.410 183.792 L 91.840 186.500 92.926 183.669 C 94.349 179.961, 96.024 180.653, 98.588 186.009 L 100.676 190.370 101.324 187.132 C 101.832 184.592, 101.217 182.395, 98.473 176.947 C 96.549 173.126, 94.849 170, 94.696 170 C 94.542 170, 93.193 172.494, 91.698 175.542 M 157.005 192.607 C 143.168 197.636, 134.999 209.202, 135.001 223.761 C 135.002 232.756, 138.710 240.755, 145.856 247.180 C 152.159 252.848, 158.121 255, 167.518 255 C 173.509 255, 175.684 254.499, 180.811 251.936 C 200.823 241.936, 205.088 216.155, 189.337 200.403 C 181.479 192.546, 166.868 189.022, 157.005 192.607 M 206 223 L 206 255 215.472 255 L 224.944 255 225.222 241.419 L 225.500 227.837 230.500 234.660 C 233.250 238.412, 238.002 244.636, 241.060 248.491 L 246.620 255.500 253.810 255.168 L 261 254.836 261 222.918 L 261 191 251.528 191 L 242.056 191 241.778 204.552 L 241.500 218.104 231.111 204.552 L 220.722 191 213.361 191 L 206 191 206 223 M 285.821 192.331 C 276.229 195.045, 270.010 202.130, 270.004 210.349 C 269.995 221.957, 275.913 226.925, 295.801 232.006 C 300.753 233.271, 302.228 235.609, 299.412 237.730 C 296.739 239.746, 288.369 238.774, 281.563 235.657 L 276.132 233.171 272.469 239.320 C 268.119 246.621, 268.341 247.287, 276.524 251.500 C 281.399 254.010, 283.761 254.556, 290.977 254.842 C 302.365 255.294, 307.420 253.846, 312.603 248.649 C 317.383 243.855, 319.463 236.989, 318.043 230.693 C 316.210 222.562, 311.258 218.610, 297.878 214.599 C 288.025 211.645, 285.443 209.631, 288.538 207.315 C 291.104 205.394, 302.270 205.946, 306.769 208.217 L 310.039 209.866 313.104 203.794 C 316.516 197.035, 316.622 197.304, 309.167 193.844 C 303.663 191.289, 292.140 190.542, 285.821 192.331 M 322 199 L 322 207 330 207 L 338 207 338 231 L 338 255 347.500 255 L 357 255 357 231.044 L 357 207.088 364.250 206.794 L 371.500 206.500 371.792 198.750 L 372.084 191 347.042 191 L 322 191 322 199 M 379 223 L 379 255 401 255 L 423 255 423 247.500 L 423 240 409.500 240 L 396 240 396 235 L 396 230 407.500 230 L 419 230 419 222 L 419 214 407.500 214 L 396 214 396 210.529 L 396 207.058 409.250 206.779 L 422.500 206.500 422.792 198.750 L 423.084 191 401.042 191 L 379 191 379 223 M 433 223 L 433 255 442 255 L 451 255 451 247 L 451 239 454.800 239 C 458.555 239, 458.645 239.092, 462.469 246.937 L 466.339 254.874 476.172 255.187 C 481.580 255.359, 486.003 255.111, 486.002 254.636 C 486.001 254.160, 483.277 249.264, 479.949 243.754 C 473.914 233.765, 473.903 233.732, 475.836 231.619 C 480.222 226.824, 482.359 220.791, 482.431 213 C 482.512 204.192, 480.272 198.822, 475.031 195.260 C 469.795 191.703, 465.527 191.012, 448.750 191.006 L 433 191 433 223 M 448.210 213.250 L 448.500 221.500 455.338 221.500 C 461.319 221.500, 462.417 221.204, 464.088 219.139 C 465.995 216.785, 466.556 212.613, 465.379 209.545 C 464.356 206.879, 459.449 205, 453.509 205 L 447.919 205 448.210 213.250 M 163.169 209.017 C 156.337 210.583, 151.176 218.533, 152.339 225.701 C 154.672 240.077, 175.040 242.355, 180.446 228.844 C 184.978 217.516, 175.176 206.267, 163.169 209.017 M 216.676 271.715 C 216.037 272.750, 188 344.021, 188 344.612 C 188 344.863, 192.811 344.940, 198.691 344.784 L 209.381 344.500 211.894 336.750 L 214.406 329 226.550 329 L 238.694 329 242.097 336.992 L 245.500 344.983 255.250 344.992 C 262.399 344.998, 264.994 344.667, 264.979 343.750 C 264.968 343.063, 258.477 326.525, 250.555 307 L 236.150 271.500 226.656 271.215 C 221.434 271.058, 216.943 271.283, 216.676 271.715 M 273 307 C 273 326.800, 272.887 343.337, 272.750 343.750 C 272.613 344.163, 277.102 344.628, 282.727 344.785 L 292.954 345.069 293.227 327.379 L 293.500 309.689 307 327.336 L 320.500 344.982 328.262 344.991 L 336.025 345 335.762 308.250 L 335.500 271.500 326.750 271.211 L 318 270.922 317.882 286.711 C 317.816 295.395, 317.816 302.837, 317.882 303.250 C 317.947 303.663, 317.808 304, 317.574 304 C 317.340 304, 310.809 296.575, 303.060 287.500 L 288.971 271 280.985 271 L 273 271 273 307 M 223.254 303.048 L 220.078 312 226.539 312 C 230.093 312, 233 311.861, 233 311.691 C 233 311.257, 226.886 294.553, 226.636 294.302 C 226.522 294.189, 225.001 298.125, 223.254 303.048",stroke:"none",fill:i.themeType==="dark"?"#EEE":"#111",fillRule:"evenodd"}))))}function dg(i){const e=i.themeType||"dark",t=i.size||300;return n.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{style:{width:t,height:t,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:2}},n.createElement("svg",{viewBox:"0 0 2000 1728",style:{fillRule:"evenodd",clipRule:"evenodd",fill:"#00af78"}},n.createElement("style",null,` + @keyframes jump { + 0% { fill: #00af78; } + 25% { fill: #00af78; } + 25.01% { fill: #00785A; } + 100% { fill: #00785A; } + } + .bar { animation: jump 2s linear infinite; } + .bar.bar1 { animation-delay: 0s; } + .bar.bar2 { animation-delay: 0.5s; } + .bar.bar3 { animation-delay: 1s; } + .bar.bar4 { animation-delay: 1.5s; } + `),n.createElement("path",{d:"M944.5 76.5a852 852 0 0 1 129 6.5 598 598 0 0 1 51 9c19.36 5.344 38.69 10.677 58 16a834 834 0 0 1 117 52 698 698 0 0 1 95 69c2.67 2 5.33 2 8 0a410 410 0 0 1 37-28 18.4 18.4 0 0 1 6-.5q.495 10.51 4.5 20a3200 3200 0 0 0 18 73 3553 3553 0 0 0 19 66 48.8 48.8 0 0 0 2.5 11 4.94 4.94 0 0 1-1 2.5c-2.33.667-4.67.667-7 0a19 19 0 0 0-5-3 209 209 0 0 0-24-7 292 292 0 0 0-20-8c-8.68-2.341-17.34-4.674-26-7a221 221 0 0 0-21-8 337 337 0 0 1-34-11 1272 1272 0 0 1-43-13q-2.91-3.23-1.5-7.5a671 671 0 0 0 42.5-35l-1.5-3a289 289 0 0 0-21.5-18.5c-9.31-6.637-18.65-13.304-28-20a731 731 0 0 1-44-26 175 175 0 0 1-30-15 568 568 0 0 0-50-20 1038 1038 0 0 1-53-16 1070 1070 0 0 0-48-10 1087 1087 0 0 1-55-6 1379 1379 0 0 0-99 1 203.5 203.5 0 0 1-35 5Q629.152 192.558 494 414.5a132 132 0 0 1-10 17 1277 1277 0 0 0-21 43l-11 27a637 637 0 0 1-14 41 8191 8191 0 0 1-16 67 50.7 50.7 0 0 0-1 15 11.3 11.3 0 0 0 1.5 3.5 327 327 0 0 1 40 8q62.273 18.89 115 56 70.252 53.736 113.5 130.5 59.461 114.478 41 243c-.667 1.33-1.333 2.67-2 4a335 335 0 0 1-3 18 507 507 0 0 1-20 53 309 309 0 0 1-10 17c-1.699.91-3.533 1.24-5.5 1 .377-40.1-3.456-79.77-11.5-119l-3-6a154.4 154.4 0 0 0-7-27Q629.1 886.514 525.5 812a44.5 44.5 0 0 1-9.5-5.5l-1.5.5q69.98 79.772 110.5 177.5a684 684 0 0 1 21 74c.389 8.51 1.722 16.84 4 25q1.302 30.765 2.5 61.5-2.217 6.885.5 13.5l17.5 13.5a1597 1597 0 0 0 61 36 3333 3333 0 0 1 61 26q25.04 7.53 50 15a771 771 0 0 0 51 10 526.7 526.7 0 0 0 120 5c15.24-2.5 30.57-4.17 46-5 154.49-25.8 278.99-100.96 373.5-225.5 36-49.308 63.67-102.974 83-161 .29-5.821 1.96-11.154 5-16q7.2-33.086 15-66a343 343 0 0 1 4-30c-5.29 5.217-9.62 11.217-13 18-26.71 37.032-60.54 65.866-101.5 86.5a471 471 0 0 1-27 11 50.1 50.1 0 0 0-17 5q-13.77 1.158-27 5-33 2.977-66 0a153 153 0 0 0-29-5c-52.38-14.072-96.21-41.572-131.5-82.5q-58.935-72.777-58.5-167.5.345-16.269 1.5-32.5 10.89-72.278 57-128c66.33-75.505 149.5-104.339 249.5-86.5a700 700 0 0 1 48 16c4.24 2.853 8.57 5.52 13 8l6 2c20.5 12.068 38.84 26.735 55 44q2.37 1.06 4.5 2.5a442 442 0 0 0 25.5-24.5c2.59-1.601 5.26-1.767 8-.5a1168 1168 0 0 0 25.5 55 1221 1221 0 0 0 16 45c.41 6.057 2.08 11.724 5 17 .58 6.637 2.24 12.97 5 19a778 778 0 0 1 10 55c18.69 162.392-18.64 309.725-112 442-15.67 19-31.33 38-47 57-34.61 35.92-72.44 68.42-113.5 97.5q-16.53 10.545-33 21a516 516 0 0 1-35 18l-3 3c-14.49 6.96-29.16 13.63-44 20-26.02 9.5-52.35 18.17-79 26q-132.478 31.62-267 9a1979 1979 0 0 0-61-14 421 421 0 0 1-25-9c-3.333-.67-6.667-1.33-10-2-20.636-8.65-41.303-17.32-62-26-124.377-64.5-220.21-158.33-287.5-281.5a1010 1010 0 0 1-17-39l-3-4a395 395 0 0 0-15-41 374 374 0 0 1-11-36l-9-39a366 366 0 0 0-6-36 1642 1642 0 0 1-5.5-92.5q5.24-279.871 211-466 61.788-53.755 135-91a1492 1492 0 0 1 47-21l28-10 37-11a1956 1956 0 0 1 46-10 1145 1145 0 0 1 87-10.5m367 359c12.69-.014 25.35.486 38 1.5a399 399 0 0 1 39 10c56.18 22.509 95.34 62.009 117.5 118.5 21.9 63.822 14.57 123.822-22 180-20.98 28.71-47.15 51.21-78.5 67.5-37.69 16.585-77.02 21.585-118 15-69.62-14.983-118.78-54.816-147.5-119.5a284 284 0 0 1-11-39q-15.24-126.17 85.5-201.5c29.7-18.676 62.04-29.509 97-32.5"}),n.createElement("path",{d:"M899.5 258.5a2829 2829 0 0 0 135 0c5.33.53 10.66 1.03 16 1.5l1.5 1.5q.255 125.792 1.5 251.5c-.56 6.766-2.73 12.932-6.5 18.5a587 587 0 0 0-9.5 25.5 71.8 71.8 0 0 1-5.5 20.5 575 575 0 0 0-5.5 52.5 587 587 0 0 0 5.5 55.5 515 515 0 0 0 18.5 58.5c-.24.873-.57 1.707-1 2.5a4183 4183 0 0 1-152 .5 11.3 11.3 0 0 1-1.5-3.5 58052 58052 0 0 1 0-482 30 30 0 0 1 3.5-3"}),n.createElement("path",{d:"M717.5 423.5q71.002-.25 142 .5l1.5 1.5q.713 154.588.5 309 .27 6.043-2 11.5a2513 2513 0 0 1-141 1 6.98 6.98 0 0 1-3.5-2.5 37080 37080 0 0 1-1.5-314.5q-.099-4.63 4-6.5"}),n.createElement("path",{d:"M1360.5 487.5c2.13-.353 3.47.48 4 2.5-.74 4.181-1.57 8.348-2.5 12.5a13569 13569 0 0 1-34 102 27.2 27.2 0 0 0-1 8c1.33 1.838 3.16 2.838 5.5 3a937 937 0 0 1 86 0 4.95 4.95 0 0 1-.5 3 820 820 0 0 0-27 29q-50.445 59.205-100.5 119-5.535 6.54-12 12a3.6 3.6 0 0 1-1.5-1q-1.005-3 0-6a1048 1048 0 0 0 16-61c2.94-5.581 4.6-11.581 5-18l3-6a156.5 156.5 0 0 1 5-24 11.3 11.3 0 0 0-3.5-1.5l-90-1a3.6 3.6 0 0 1-1-1.5c49.72-57.045 99.38-114.045 149-171"},n.createElement("animate",{attributeName:"fill",values:`#00af78;${e==="dark"?"#ffffff":"#00785A"};#00af78`,dur:"2s",repeatCount:"indefinite"})),n.createElement("path",{className:"bar bar1",d:"M544.5 537.5q68.283-.426 136.5 1a2379 2379 0 0 1 1.5 96.5l-.5 92.5q-.918 3.798-4.5 2.5-50.249-64.14-122-103-8.75-1.76-14.5-8.5-1-39 0-78a30 30 0 0 1 3.5-3M721.5 777.5q60.628-.732 121 1.5 37.233 79.24 74.5 158.5 1 2 0 4a3116 3116 0 0 1-136.5.5 417 417 0 0 1-8.5-38.5 962 962 0 0 1-15-47 713 713 0 0 0-21-46 732 732 0 0 1-16-27q-1.122-3.51 1.5-6"}),n.createElement("path",{className:"bar bar2",d:"M879.5 777.5q93-.25 186 .5c18.83 33.513 43.5 62.179 74 86a144.6 144.6 0 0 1 23 16q13.5 5.88 25.5 14.5a574 574 0 0 1 22.5 45c-.33 1-.67 2-1 3-84.63-.161-169.3.006-254 .5q-3.752-3.208-6.5-7.5a2804 2804 0 0 1-8-20 252 252 0 0 1-13-24 3463 3463 0 0 0-23-53 1506 1506 0 0 1-27-55q-1.122-3.51 1.5-6"}),n.createElement("path",{className:"bar bar3",d:"M786.5 971.5q68.56.08 137 0a29.2 29.2 0 0 1 7 2.5 9467 9467 0 0 0 68.5 141.5c4 11.67 9.34 22.67 16 33 1.47 4.53-.2 6.87-5 7-86.772-.2-173.606-.37-260.5-.5-1.754-4.38-.921-8.22 2.5-11.5a411 411 0 0 1 10-25 578 578 0 0 0 10-32 99.6 99.6 0 0 1 5-22q2.12-21.06 5-42l1-48q1.478-1.971 3.5-3"}),n.createElement("path",{className:"bar bar4",d:"M970.5 971.5c83.58.74 167.25.74 251 0 2.73.182 5.39.682 8 1.5 18.09 35.51 36.26 71.01 54.5 106.5 7.67 13.67 15.33 27.33 23 41 2.16 3.76 2.82 7.76 2 12-10.9 7.75-22.4 14.59-34.5 20.5-2.92.99-5.92 1.65-9 2-68.48.48-136.82.65-205 .5-4.11-.08-7.28-1.74-9.5-5a3780 3780 0 0 0-67-140 71388 71388 0 0 1-12-28q-5.977-4.855-1.5-11"}),n.createElement("path",{d:"M83.5 1377.5a332.5 332.5 0 0 0 50.5 0c3.056.58 6.056 1.24 9 2a31209 31209 0 0 1 126.5 194 3.6 3.6 0 0 0 1.5-1c.652-63.71.652-127.37 0-191 .51-2.76 2.177-4.09 5-4a279.4 279.4 0 0 0 47 0c2.145-.1 3.979.56 5.5 2 .529 54.71.862 109.54 1 164.5l-.5 116.5c-.575 3.3-2.575 4.96-6 5a490 490 0 0 0-52 0q-5.74-1.74-10-6a14653 14653 0 0 0-125.5-193q-2.01 1.785-2 4.5a6168 6168 0 0 1 .5 191.5q-2.794 3.675-7.5 3a219.4 219.4 0 0 0-41 0q-5.057-.81-5.5-6c-.667-93.33-.667-186.67 0-280a19.2 19.2 0 0 0 3.5-2"}),n.createElement("path",{d:"M986.5 1377.5c17.32 1.09 34.66 1.25 52 .5 3.23 1.94 5.4 4.78 6.5 8.5 9.36 38.7 18.7 77.37 28 116 3.05 6.64 4.72 13.64 5 21 2.95 5.96 4.62 12.29 5 19 4.15 16.12 8.49 32.12 13 48 2.04-1.08 3.38-2.75 4-5 4.23-19.04 8.56-38.04 13-57 4.55-15.3 8.88-30.64 13-46 .76-4.32 1.43-8.65 2-13 4.33-15.33 8.66-30.66 13-46 2.08-12.15 4.75-24.15 8-36 .85-3.2 2.35-6.03 4.5-8.5 19.85-.22 39.68-.72 59.5-1.5 2.3-.01 4.47.49 6.5 1.5 6.53 21.92 12.37 44.09 17.5 66.5 2.94 6.32 4.61 12.99 5 20 3.56 15.24 7.89 30.24 13 45 2.47 11.74 5.14 23.41 8 35a7.4 7.4 0 0 0 2 3c2.38 11.75 5.04 23.41 8 35 1.33 3.33 3.16 6.33 5.5 9a2872 2872 0 0 1 27.5-111c.39-7.01 2.06-13.68 5-20 .39-7.01 2.06-13.68 5-20 .57-4.35 1.24-8.68 2-13 4.34-16 8.67-32 13-48l1.5-1.5c16.17-.29 32.34-.79 48.5-1.5q5.385-.045 10.5 1.5c.58.89.91 1.89 1 3-2.02 4.57-3.18 9.4-3.5 14.5-2.84 6-4.5 12.34-5 19a351 351 0 0 0-8 25c-2.97 11.6-5.63 23.27-8 35-2.56 8.31-5.23 16.65-8 25-.39 6.38-2.06 12.38-5 18a8809 8809 0 0 1-38 144q-4.725 2.91-10.5 3a410 410 0 0 0-56.5 0c-3.08-.44-5.91-1.44-8.5-3-8.05-31.19-16.88-62.19-26.5-93-.67-4-1.33-8-2-12-9.67-32.85-18.5-65.85-26.5-99-3.92 8.2-6.42 16.87-7.5 26-.72 2.45-1.72 4.78-3 7a2343 2343 0 0 1-28 109c-.72 2.45-1.72 4.78-3 7-4.17 18.07-8.51 36.07-13 54-4.52 3.47-9.69 4.8-15.5 4a685 685 0 0 0-55.5 0c-1.63-.38-3.13-1.04-4.5-2q-6-17.88-10.5-36c-10.91-43.39-21.91-86.73-33-130-2.88-5.97-4.54-12.31-5-19a32 32 0 0 1-3-7 4792 4792 0 0 0-18-75c-3.031-5.25-4.031-10.92-3-17 .995-.57 1.828-1.23 2.5-2"}),n.createElement("path",{d:"M1648.5 1406.5c16.35.64 32.68 1.3 49 2 1.4 1.35 2.06 3.02 2 5a255 255 0 0 0-.5 38c.5 1.17 1.33 2 2.5 2.5 16.33.33 32.67.67 49 1 .92.37 1.75.87 2.5 1.5.82 13.58.66 27.08-.5 40.5-17 .33-34 .67-51 1-1.17.5-2 1.33-2.5 2.5-.67 31.33-.67 62.67 0 94 2.29 23.73 15.12 33.23 38.5 28.5 4.85-3.25 10.02-4.08 15.5-2.5.64 13.67.98 27.34 1 41a11.4 11.4 0 0 1-4.5 3.5c-22.63 5.41-45.29 5.75-68 1-13.91-4.18-24.08-12.68-30.5-25.5-4.8-11.14-7.13-22.81-7-35-.65-34.59-.65-69.25 0-104-.32-1.56-1.15-2.73-2.5-3.5-9-.33-18-.67-27-1-.92-.37-1.75-.87-2.5-1.5-.21-11.69-.71-23.36-1.5-35 .19-3.23 1.85-5.06 5-5.5 9-.33 18-.67 27-1l1.5-1.5c.33-14.33.67-28.67 1-43 .98-1.31 2.15-2.31 3.5-3M1807.5 1406.5c9.18.78 18.35.78 27.5 0 7.6.35 15.1 1.18 22.5 2.5a980 980 0 0 1 1.5 43.5l1.5 1.5c15 .33 30 .67 45 1 1.17.5 2 1.33 2.5 2.5-.77 11.49-.61 22.99.5 34.5a23 23 0 0 1-2 5c-15 .33-30 .67-45 1-.92.37-1.75.87-2.5 1.5-.67 32.67-.67 65.33 0 98 1.84 19.84 12.68 28.67 32.5 26.5 4.83-.18 9.33-1.35 13.5-3.5 1.44.06 2.77.39 4 1a673 673 0 0 0 3.5 36c.38 2.82-.62 4.99-3 6.5-23.81 6.5-47.81 7.17-72 2-12.46-5.13-21.63-13.63-27.5-25.5-1.1-4.87-2.77-9.54-5-14-.33-3.33-.67-6.67-1-10-.33-39-.67-78-1-117l-1.5-1.5c-10.43-.05-20.77-.71-31-2-.66-6.59-.99-13.26-1-20 .01-6.74.34-13.41 1-20 10.26-1.26 20.59-1.93 31-2l1.5-1.5c.33-14 .67-28 1-42 .69-1.85 1.86-3.18 3.5-4"}),n.createElement("path",{d:"M878.5 1446.5c27.433-1.66 52.433 5.01 75 20 21.826 18.58 34.326 42.24 37.5 71 3.595 25.23 1.262 49.9-7 74-16.274 34.06-43.107 53.89-80.5 59.5q-48.019 5.13-88-21-30.077-28.71-35.5-70.5a400 400 0 0 1 0-40q13.828-84.585 98.5-93m1 47c25.457-.37 42.623 11.3 51.5 35q9.63 36.765-4 72-17.011 26.355-48.5 22.5a61.5 61.5 0 0 0-14-5c-7.087-4.96-12.92-11.13-17.5-18.5a28.9 28.9 0 0 0-5-11c-3.333-19.33-3.333-38.67 0-58 4.098-14.4 12.598-25.23 25.5-32.5q6.626-1.05 12-4.5"}),n.createElement("path",{d:"M447.5 1447.5c21.766-2.21 42.766.62 63 8.5 21.067 11.41 35.234 28.57 42.5 51.5q1.39 10.62 4 21a229.3 229.3 0 0 1 1 40c-1.171 1.39-2.671 2.23-4.5 2.5q-65.505.255-131 1.5c-2.062 4.18-2.229 8.51-.5 13 2.366 8.1 5.7 15.77 10 23 15.264 15.93 33.764 20.77 55.5 14.5 3.87-2.52 7.87-4.85 12-7 3.262-2.59 5.762-5.76 7.5-9.5a39.7 39.7 0 0 1 8-7 965 965 0 0 0 21.5 8.5q10.12 1.62 18.5 7.5c.667 1.67.667 3.33 0 5q-9.276 20.79-27.5 34.5c-23.698 14.22-49.365 19.55-77 16-51.283-10.29-80.116-41.45-86.5-93.5-.894-14.71-.56-29.37 1-44a86 86 0 0 0 4-18 125.3 125.3 0 0 1 10.5-23c7.797-11.96 17.464-22.13 29-30.5 12.242-7.13 25.242-11.96 39-14.5m14 42c25.166 1.33 39.166 14.5 42 39.5q-1.824 2.61-5 3a719 719 0 0 1-75-1q2.218-22.395 21-36a123 123 0 0 1 17-5.5"}),n.createElement("path",{d:"M1482.5 1447.5c14.73-.22 29.39.61 44 2.5 37.88 7.55 57.72 30.72 59.5 69.5.33 38 .67 76 1 114 1.99 9.92 2.66 19.92 2 30-.75.63-1.58 1.13-2.5 1.5-15.66-.53-31.33-.53-47 0-2.44-2.29-3.94-5.13-4.5-8.5-1.06-4.6-1.73-9.27-2-14a7.2 7.2 0 0 0-2.5-2c-4.34 5.21-9.01 10.04-14 14.5-26.31 16.05-54.31 19.72-84 11q-44.205-19.29-37.5-67.5a124 124 0 0 0 5-17c8.22-13.88 19.38-24.72 33.5-32.5 9.71-4.13 19.71-7.46 30-10 21.1-4.3 42.44-6.63 64-7 1.8-.64 3.14-1.8 4-3.5-1.04-7.84-2.88-15.5-5.5-23a34.4 34.4 0 0 1-6.5-7.5 31.4 31.4 0 0 1-8-5c-6.73-.84-13.4-2.01-20-3.5-5.98 1.27-11.98 2.44-18 3.5q-3.72 4.11-9 6c-1.8 3.1-3.97 5.94-6.5 8.5-1.37 5.77-3.7 11.1-7 16-.8 1.3-1.97 1.97-3.5 2a426 426 0 0 0-34-13.5c-3.12-1.97-6.28-3.81-9.5-5.5-.65-3.09-.32-6.09 1-9 9.52-23.19 26.36-38.35 50.5-45.5a221 221 0 0 1 27-4.5m28 122c6.92-.31 13.76.02 20.5 1 2.47 19.95-4.37 35.78-20.5 47.5-4.04.9-7.7 2.57-11 5q-16.545 4.515-33 0c-16.58-9.72-18.91-22.05-7-37 2.29-1.29 4.29-2.96 6-5 14.59-5.91 29.59-9.74 45-11.5"}),n.createElement("path",{d:"M578.5 1454.5q29.139-.72 58 1.5c1.167 1.17 2.333 2.33 3.5 3.5a800 800 0 0 0 34 54c1.667-1.33 3.333-2.67 5-4a337 337 0 0 1 18-30 182 182 0 0 0 16.5-23.5 222 222 0 0 1 29-1.5c8.667.17 17.333.33 26 .5q3.726 3.42.5 7.5a2217 2217 0 0 0-63.5 93.5 103.5 103.5 0 0 0 8.5 15.5 5919 5919 0 0 1 59 85c2.155 3.04 1.988 5.87-.5 8.5a457 457 0 0 0-51 .5q-3.55-.51-7-1.5a728 728 0 0 1-40-60.5c-2.341-1.21-4.507-.88-6.5 1a926 926 0 0 1-28 45 120 120 0 0 1-11.5 14.5l-7.5 1.5c-16.734-.89-33.4-1.23-50-1q-.411-4.725 2-9a2463 2463 0 0 0 67.5-97.5 9.6 9.6 0 0 0-1.5-4.5 1263 1263 0 0 1-46-69l-18-24q-1.615-5.115 3.5-6"}))))}const zg=` +.logo-background-light, .logo-background-colored { + background: white; +} +.logo-background-dark, .logo-background-blue { + background: black; +} +`;function hg(i){ye(()=>{if(!window.document.getElementById("vendor-iobroker-component")){const t=window.document.createElement("style");t.setAttribute("id","vendor-iobroker-component"),t.innerHTML=zg,window.document.head.appendChild(t)}},[]);const e=i.themeType||i.themeName||"light";return n.createElement("div",{className:`vendor-logo-back logo-background-${e}`,style:{display:"flex",flexDirection:"column",height:"100%",width:"10%",margin:"auto",backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:i.themeType==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{style:{flexGrow:1}}),n.createElement(er,{color:"secondary",size:i.size||200,thickness:5}),n.createElement("div",{style:{flexGrow:1}}))}const Ig=` +/** + * Copyright 2018-2024 Denis Haev (bluefox) + * + * MIT License + * + **/ + +.logo-background-light, .logo-background-colored { + background: white; +} +.logo-background-dark, .logo-background-blue { + background: black; +} +.logo-div { + position: absolute; + top: 50%; + left: 50%; + -ms-transform: translateX(-50%) translateY(-50%); + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + overflow: hidden; + border-radius: 50%; + z-index: 2; +} +.logo-border { + /*border-color: #164477;*/ + border-top-color: #3399CC; + border-left-color: #164477; + border-bottom-color: #164477; + border-right-color: #164477; + border-radius: 50%; + border-style: solid; + box-sizing: border-box; + width: 100%; + height: 100%; + position: absolute; +} +.logo-top { + position: absolute; + width: 4.5%; + height: 16%; + top: 0; + z-index: 2; +} +.logo-i { + position: absolute; + width: 14.5%; + height: 60%; + top: 20%; + left: 42%; + background: #3399CC; +} +.logo-i-top { + position: absolute; + width: 14.5%; + height: 4%; + left: 42%; + background: #3399CC; + border-radius: 100%; +} +.logo-back { + width: 100%; + height: 100%; + z-index: 0; + overflow: hidden; +} +@keyframes logo-grow { + 0% { + width: 230px; + height: 230px; + transform: translate(-50%,-50%) scale(1); + opacity: 1 + } + 99% { + width: 230px; + height: 230px; + transform: translate(-50%,-50%) scale(10); + opacity: 0; + } + 100% { + width: 0; + height: 0; + opacity: 0; + } +} +@keyframes logo-spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } +@keyframes logo-color-inside-light { + 0% { + background: #FEFEFE; + } + 100% { + background: #3399CC; + } +} +@keyframes logo-color-inside-dark { + 0% { + background: #030303; + } + 100% { + background: #3399CC; + } +} +@keyframes logo-color-inside-colored { + 0% { + background: #FEFEFE; + } + 100% { + background: #3399CC; + } +} +@keyframes logo-color-inside-blue { + 0% { + background: #030303; + } + 100% { + background: #3399CC; + } +} + +@keyframes logo-color-outside-light { + 0% { + border-color: #FEFEFE; + } + 100% { + border-top-color: #3399CC; + border-left-color: #164477; + border-bottom-color: #164477; + border-right-color: #164477; + } +} +@keyframes logo-color-outside-dark { + 0% { + border-color: #040404; + } + 100% { + border-top-color: #3399CC; + border-left-color: #164477; + border-bottom-color: #164477; + border-right-color: #164477; + } +} +@keyframes logo-color-outside-colored { + 0% { + border-color: #FEFEFE; + } + 100% { + border-top-color: #3399CC; + border-left-color: #164477; + border-bottom-color: #164477; + border-right-color: #164477; + } +} +@keyframes logo-color-outside-blue { + 0% { + border-color: #040404; + } + 100% { + border-top-color: #3399CC; + border-left-color: #164477; + border-bottom-color: #164477; + border-right-color: #164477; + } +} + +.logo-animate-wait { + animation: logo-color-outside 1.5s, logo-spin 1.5s linear infinite; +} + +.logo-animate-grow-light { + background: #DDD; +} +.logo-animate-grow-dark { + background: #1d1d1d; +} +.logo-animate-grow-colored { + background: #DDD; +} +.logo-animate-grow-blue { + background: #1d1d1d; +} + +.logo-animate-grow { + display: inline-block; + text-align: center; + z-index: 1; + top: 50%; + left: 50%; + -ms-transform: translateX(-50%) translateY(-50%); + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + width: 245px; + height: 245px; + border-radius: 50%; + position: absolute; + animation: logo-grow 1s 1 ease forwards; +} + +.logo-animate-color-inside-light { + animation: logo-color-inside-light 2.5s; +} +.logo-animate-color-inside-dark { + animation: logo-color-inside-dark 2.5s; +} +.logo-animate-color-inside-colored { + animation: logo-color-inside-colored 2.5s; +} +.logo-animate-color-inside-blue { + animation: logo-color-inside-blue 2.5s; +} + +.logo-animate-color-outside-light { + animation: logo-color-outside-light 1.5s; +} +.logo-animate-color-outside-dark { + animation: logo-color-outside-dark 1.5s; +} +.logo-animate-color-outside-colored { + animation: logo-color-outside-colored 1.5s; +} +.logo-animate-color-outside-blue { + animation: logo-color-outside-blue 1.5s; +} +`;function wg(i){ye(()=>{if(!window.document.getElementById("loader-iobroker-component")){const s=window.document.createElement("style");s.setAttribute("id","loader-iobroker-component"),s.innerHTML=Ig,window.document.head.appendChild(s)}},[]);const e=i.size||234,t=i.themeName||i.theme||i.themeType||"light";return n.createElement("div",{className:`logo-back logo-background-${t}`,style:{backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:void 0,backgroundSize:"cover"}},window.loadingHideLogo==="true"?null:n.createElement(n.Fragment,null,n.createElement("div",{className:"logo-div",style:{width:e,height:e}},n.createElement("div",{className:`logo-top logo-background-${t}`,style:{left:"37%"}}),n.createElement("div",{className:`logo-top logo-background-${t}`,style:{left:"57%"}}),n.createElement("div",{className:`logo-border logo-background-${t} logo-animate-wait`,style:{borderWidth:e*.132}}),n.createElement("div",{className:`logo-i logo-animate-color-inside-${t}`}),n.createElement("div",{className:`logo-i-top logo-animate-color-inside-${t}`,style:{top:"18%"}}),n.createElement("div",{className:`logo-i-top logo-animate-color-inside-${t}`,style:{bottom:"18%"}})),n.createElement("div",{className:`logo-animate-grow logo-animate-grow-${t}`,style:{width:e+11,height:e+11}})))}const Cg=` +.logo-background-light, .logo-background-colored { + background: white; +} +.logo-background-dark, .logo-background-blue { + background: black; +} +.pt-logo-div { + position: absolute; + top: 50%; + left: 50%; + -ms-transform: translateX(-50%) translateY(-50%); + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + z-index: 2; +} +.pt-logo-border { + border-style: solid; + box-sizing: border-box; + width: 100%; + height: 100%; + position: absolute; +} +.pt-loader-block { + height: 65px; + width: 74px; + border-radius: 15px; + position: absolute; + box-sizing: content-box; +} +.pt-loader-blue { + border: 9px solid #0F99DE; + transform: rotate(5grad); + left: 93px; + top: 0; + animation: spin-blue 5s ease-in-out infinite; +} +.pt-loader-green { + border: 9px solid #88A536; + transform: rotate(-6grad); + left: 70px; + top: 58px; + animation: spin-green 5s ease-in-out infinite; +} +.pt-loader-red { + border: 9px solid #BD1B24; + transform: rotate(-15grad); + left: 24px; + top: 100px; + animation: spin-red 5s ease-in-out infinite; +} + +@keyframes spin-blue { + 0% { + transform: rotate(5deg); + } + 25% { + transform: rotate(185deg); + } + 50% { + transform: rotate(185deg); + } + 75% { + transform: rotate(185deg); + } + 100% { + transform: rotate(185deg); + } +} +@keyframes spin-green { + 0% { + transform: rotate(-6deg); + } + 25% { + transform: rotate(-6deg); + } + 50% { + transform: rotate(174deg); + } + 75% { + transform: rotate(174deg); + } + 100% { + transform: rotate(-6deg); + } +} +@keyframes spin-red { + 0% { + transform: rotate(-15deg); + } + 25% { + transform: rotate(-15deg); + } + 50% { + transform: rotate(-15deg); + } + 75% { + transform: rotate(165deg); + } + 100% { + transform: rotate(165deg); + } +} +`;function Ag(i){const e=i.size||200;ye(()=>{if(!window.document.getElementById("pt-iobroker-component")){const s=window.document.createElement("style");s.setAttribute("id","pt-iobroker-component"),s.innerHTML=Cg,window.document.head.appendChild(s)}},[]);const t=i.themeType||i.themeName||"light";return n.createElement("div",{className:`pt-logo-back logo-background-${t}`,style:{backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:i.themeType==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{className:"pt-logo-div",style:{width:e,height:e}},n.createElement("div",{style:{width:200,height:200}},n.createElement("div",{className:"pt-loader-blue pt-loader-block"}),n.createElement("div",{className:"pt-loader-green pt-loader-block"}),n.createElement("div",{className:"pt-loader-red pt-loader-block"}))))}const pn="loader-ha-spin-keyframes",mg=` +@keyframes loaderHA-spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +}`;function pg(i){const e=i.themeType||"dark",t=i.size||270,s=t*1.5,r=t*14/270,o=t*280/270;return n.useEffect(()=>{if(!window.document.getElementById(pn)){const M=window.document.createElement("style");M.setAttribute("id",pn),M.innerHTML=mg,window.document.head.appendChild(M)}},[]),n.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{style:{position:"relative",width:s,height:s,display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement("div",{style:{position:"absolute",top:-r,left:-r,right:-r,bottom:-r,border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.50)`,borderRadius:"50%",animation:"loaderHA-spin 3.6s linear infinite"}}),n.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.75)`,borderRadius:"50%",animation:"loaderHA-spin 2.2s linear infinite"}}),n.createElement("div",{style:{width:t,height:t,zIndex:1,display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 69.6 148.1",style:{width:"100%",height:"100%"}},n.createElement("path",{fill:"#db0a33",d:"M69.5,100.6c0-.4,0-.8-.2-1.1v-.7c-.2-.4-.3-.8-.5-1.2,0-.2-.2-.5-.3-.7,0,0,0-.2,0-.2,0-.2,0-.3-.2-.5l-.4-.7-.4-.6c-1-1.6-2.4-3-4.2-4.3-.3-.2-.6-.4-.9-.6,0,0-.2,0-.3-.2-.3-.2-.6-.3-.9-.5-.2,0-.3-.2-.5-.3-.3-.2-.6-.3-.9-.5,0,0-.2,0-.3-.2-1-2.7-2.4-4.9-3.8-6.7h0c2.5,0,6.6-.3,7.5-3,3.5-3,2.5-9.7,2.5-10,0-.6-.2-1.1-.4-1.7h0v-.3c.5-3-.4-7.1-.5-7.7h0l-.3-1.1c0-.3-.2-.7-.4-1,0-.4-.3-.7-.4-1,0-.3-.3-.7-.5-1s-.4-.7-.6-1c-.2-.3-.4-.6-.6-.9l-.4-.4-.4-.4-.4-.4c0,0-.3-.3-.5-.4-.3-.2-.6-.4-1-.6-.2,0-.4-.2-.5-.2-.2,0-.4,0-.6-.2-.2,0-.4,0-.6,0h-1.8c-.4,0-.8,0-1.1.2-.4,0-.7.2-1.1.4h0c-1.6-.2-2.6-1-3.1-1.7h0c2-.9,3.5-1.9,4.6-3,2.6-2.2,4-5.1,4.7-7.2,3.4-1.1,5.4-4,5.4-4h0c4.6-5.3,1.2-15.1,1.2-15.1,0,0-.8,4.2-4,5.5,0-.3-.2-.6-.3-1.1s-.3-1.1-.6-1.7c-.2-.7-.5-1.4-.9-2.2-.4-.8-.8-1.6-1.4-2.4-.5-.8-1.2-1.7-1.9-2.5h0C59.2,6.6,49.2.3,49.2.3c0,0,3.3,5.8,1.3,9.9,0,0-3.5-.8-5.7-.8s-2.4.1-3.5.3c-.5.1-1.1.2-1.6.3-.3,0-.5.1-.8.2-.2,0-.5.1-.7.2-.5.1-.9.2-1.3.4-.4.1-.8.3-1.2.4-.4.1-.7.2-1,.3s-.6.2-.9.3h-.2c-2-2.8-3.7-7.5,1.8-11.9,0,0-13,5.3-8.2,17,0,0,0,.2-.1.4h0c-.3.3-.6.7-1,1.3-.3.6-.7,1.3-.9,2.1-.1.4-.2.8-.2,1.3v1.5c-.2-.1-.5-.2-.9-.4-1.7-.8-1.7-2.8-1.7-2.8-1.1,8.3,4.2,13.3,5.2,14.1,0,.4,0,.7-.2,1v.4c-.2,0-.3.3-.4.5-.1.4-.2.7-.3,1.1-.1.7-.1,1.5,0,2.2s.3,1.4.5,2c.3.6.6,1.2.9,1.7,0,0,0,0,.1.2.4.6,1,1.4,2,2h.1c.2,0,.8.5,1.7.7.2.2,1.5,1.7,3.1,2.1-.2,1.1-1,2.8-3.4,3.7,0,0-14.2-.4-13.2,13.5-6.6,8.7-3.8,13.4-3.8,13.4-.9.6-.9,1.9-.5,3,0,0,0,.3.2.5,0,0,0,0,.3.4.3.4.6.7,1,.8,1.1.7,3.1,1.5,6.4,1.1.2.3,1.3,1.8,1.3,2.2.5,2.3,1.2,4.5,1.3,6.8l.2,1.3c-2.2-.2-11-.2-16.6,9.1,0,0-.2.2-.2.4l-.5.9-.6,1.2h0c-.3.7-.7,1.7-1.1,2.8-.5.4-1.2,0-1.7-.3-.4-.4-.7-.7-.9-1.1,0,0,0-.2,0-.3v-.2s0-.2-.2-.2h0c0,0,0,0-.2-.2h-.4s-.2,0-.2,0c-.2,0-.2.2-.3.3,0,0-.1.2-.2.2,0,.2-.2.3-.2.5-.2.6-.4,1.2-.6,1.8-.6,2.4-.6,4.9-.1,7.3.2,1.2.6,2.4,1.1,3.5.5,1.1,1.2,2.1,2,3.1.8.9,1.7,1.8,2.7,2.5s2,1.3,3.1,1.8h0l.6.4-.3-.7c-.2-.4-.3-.9-.5-1.3-.1-.4-.2-.9-.3-1.3-.1-.9-.2-1.8,0-2.7,0-.4.2-.8.4-1.2.2-.4.4-.7.7-1.1.6-.8,1-1.6,1.5-2.5.4-.9.8-1.8,1.1-2.7.1-.5.3-1,.3-1.5v-.9h0c.1-2.3-1.9-3-3-2.9-.9,0-1.7.2-2,.2.7-1.3,1.3-2.4,2-3.4h0c.2-.4.4-.6.6-.9.4-.5.8-1,1.2-1.5.1,0,.2-.3.3-.4h0c.1,0,.2-.2.3-.4.1,0,.2-.3.4-.4,6.5-6.5,12.5-2.9,12.5-2.9,0,0,1.1,3.7,1.6,4.6h0c1,2.3,2.7,4.6,4.1,6.9h0c0,0,0,4.8,2.2,7.2.5.6,1.1,1.3,1.7,2.2.3.5.5,1,.7,1.4.2.3.3.6.4.9.3.4.5.8.8,1.3s.6,1,.8,1.6c.2.5.4,1,.6,1.5,0,0,1,5.1.7,7.4-3.3.9-5.5,2.4-7.4,3.2-1,.3-3.4,2-5.5,1.9h-.5c0,.1-3.6.3-2.7,3.1,0,0,.2,3.6,5.8,2.9,1.8-.1,7.5-.5,9.1-.3,1.6.2,2.8.2,3.7.1,1.3,0,3.8,0,5.3-.4.4,1.8,3.2,2.4,6,1.5,3.6,1.6,13.5,2,15.6-1.6,2.4-4.1-2.4-8.6-4.1-12.6-3.8-9.3-.8-14-1.6-16.8,0-.7-.2-1.8-.4-3.2.8-.4,1.5-.8,2.2-1.3,1-.7,1.7-1.4,2.3-2.1l.2-.2c0,0,.2-.3.3-.4l.6-.9.6-1.2.4-1.1.3-1.2v-.8c0-.3,0-.5,0-.7h0v-2.4h.2ZM52.6,131.9c-.3.4-.7.9-1.2,1.6-1-.6-2.7-2.2-3.3-4.3,0-.2,0-.3-.2-.5-1.1-6.9-2.6-9.7-3.2-10.6-1-3.7-1.7-7.4-1.3-9.6,0,0,3.6,8.2,6.4,10,0,0,3.7,8.5,4.5,9.9.6,1-.9,2.3-1.7,3.5ZM63.6,102.7h0v.2h0v.9c0,0-.3.4-.3.4,0,0,0,.2,0,.3v.2h0v.2h0l-.2.2c-.3.6-.8,1.1-1.3,1.5h0c-.3-2.4-.6-5.1-.8-8.2.2-.5.3-1.1.4-1.7l.2.2c.2.2.4.4.5.6.2.2.3.4.5.7,0,.2.3.4.4.7h0c0,.3.2.5.3.7,0,.2.2.5.2.7h0v.3c0,.2,0,.4,0,.6v.7h0v.7h0Z"}))),n.createElement("div",{style:{position:"absolute",width:o,zIndex:2,top:"57.5%",left:"50%",transform:"translate(-50%, -155%)"}},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 7152 512",width:"100%",height:"auto"},n.createElement("path",{fill:"#fff",d:"M4566 0h1053v5h25c2 5 2 5 1 8h16q3 3 2 7l3 1 4 1 2 7h2l12 1q3 1 2 6v3h7q3 4 2 10v6h3l4 1 1 8 3-1 5 2 1 7 7 1 1 14v2h3q3 0 5 2l1 9v22l3 1 4 1 1 7v41q0 3-3 5l-5 1v26q1 3-2 5h-8l1 2v8l-1 8h-8v16q-3 3-7 2l-1 3-2 5h-6v6l-1 11h-7l-1 8-10 1h-6l-1 3-1 4-7 2v3l-2 4h-16l1 2-2 6h-15v3l-3 6-10 1h-11l-10 2q1 3-2 5l-8 1h-796l-4-1-2-7h-2q-7 0-14-2v-8h-8l-1-7h-3l-4-1q-2-5-2-10v-62l2-6 7-1v-3l2-4h7v-8l5-1h3v-3l1-5q3-2 8-1h57l140-1h602v-3l2-4h7l1-8 8-1v-31l-7-1q-2-2-2-5v-2l-3-1q-5 0-6-4v-5h-3l-11 1-2-2v-7h-917l-1 8-23 1h-14l-5-1v7l-9 3h-7l-1 3-1 4-9 1h-6l-1 3-2 5h-6v3q0 3-2 5l-6 1v3q0 3-4 5h-5v15l-2 2h-7v16h-8v110h8v24h6l3 3v5l3 1q4 0 6 4l-1 5 9 2v6h3q3 0 5 2l1 6h2l5 1q2 4 0 8h2q12-3 23 1l1 5v3l2-1h1069l9 1 1 8h18l7 2 1 6h3q3 0 5 4l1 5h3q3 0 5 4v12l3 1 5 2v21l1 17v3l-1 8-5 3-3 1v8l-2 7h-8l1 2-1 6h-16v5H4571v-5h-42v-8h-16q-2-3-2-7h-7l-4-1q-3 1-5-2v-7l-2 1h-8q-4 0-7-2l-1-8-3 1h-3q-2-1-2-6v-3h-3q-5 1-6-2l1-6h-3l-6-2-1-6h-3q-3 0-5-4v-6l-3 1h-3q-3-4-3-10v-7l-8-1 1-8h-9l-1-7v-2l1-8h-7q-2-3-2-8v-18l-2 1-6-2-1-9v-23h-2q-3 1-5-2V186l1-3h7v-32q3-4 8-3v-19q0-4 3-6h6l-1-2q-1-8 3-14h7v-7q3-2 7-2v-9c1-6 1-6 3-8h6v-3l1-5 7-1 1-3q1-5 3-5l6-1v-3q-1-3 2-5h6v-3q-1-3 2-5l6-1v-2l2-5 7-2 1-6 6-2 2 1v-3q-1-4 2-6l7-1h7v-3l2-4h16V5h34l-1-4zM1620 0h1065v5h23l3 1v6l15 1 2 6-1 2h7q3 3 3 8h3l5 3v7h3l5 1v7h3l5 1v7h3q4 0 6 2l1 6 3 1 5 2v15l8 2v24h7q3 4 2 10v395h-130V169l-7-2q-2-4-2-9v-6l-3-1-5-2v-15l-11 1-2-1-4-2v-7l-3 1h-17l-5-1v-8h-900v7c-4 4-14 2-19 2h-18l-5-1v3q1 5-2 6l-15 1h-4l-5-1v7q-3 3-7 2l-1 3-2 5h-7l1 3-2 5h-8v8l-4 1h-3v9c-1 6-1 6-3 8h-6v21l-1 3-7 1v83l7 1 1 3v22h3l5 1 1 15h3l4 2v7h7q3 4 2 9l9 2v6h3q3-1 5 2l1 6h11q3 0 5 2l1 6h4l12 2 1 7h714l8 2 1 5-1 2h18l8 2-1 6 9 1 1 9 7-1 1 9v3l1 6v7h3l4 2v33l-6 2-2-1v22l-2 4-7 1v3l-1 4h-8v5h-784v-5h-41c-2-5-2-5-1-8h-16q-2-3-2-7h-7l-4-1q-3 0-5-2v-7l-2 1h-4l-3-6v-3h-10q-3 0-7-2v-7h-3l-5-1-1-7h-3q-3 1-5-2l1-6-8-1q-2-5-2-11v-6h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-6-3-1q-5-1-5-3-2-8 0-14h-7q-2-5-2-10v-7l-2 1-4-1q-4-3-3-7v-18h-2q-3 1-5-2v-41h-7q-2-3-2-8V193q4-2 9-2v-41l5-1h3v-21l1-4 7-1v-10l2-6h7l-1-2q-1-7 2-15l8-1v-3l1-5h7V66q3-4 8-3v-3l3-5 6-1v-3l2-4h7v-7l6-2 2 1v-3q0-5 2-6l10-1h6l-1-2 1-4q4-3 9-2h7v-3q0-3 2-5h15l-1-3 3-5 7-1h25zM4137 0h130v392q1 3-2 5l-6 1v20l-1 4-7 2v2q1 7-2 13l-7 1v4c0 10 0 10-3 13h-6v3q1 3-2 5l-6 1v3l-2 4h-7v3l-2 6h-7v3q1 4-2 6h-6v3q1 3-2 5h-24v3l-1 5h-24l1 2v2q-3 2-6 1H3057v-5h-24l-2-6 1-2h-16l-1-5v-3h-9c-6 0-6 0-8-2l-1-7-3 1-5-3v-7l-2 1-6-2v-7h-7l-2-6 1-2h-3q-4 1-6-2v-6h-3l-4-1q-2-5-2-10v-7h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-7v-16h-3q-5-1-5-3l-1-7v-17l-2 1-6-2v-77c0-6 0-6 2-8h6v-27q-1-4 2-7l7-1v-11q-1-3 2-5l6-1v-7l1-4 1-5h7v-15q3-4 8-3l1-3 1-4 8-1v-3l1-5h7v-3q-1-4 2-6l6 1v-3q0-4 2-6l6-2v-2l3-5h15v-3q-1-3 2-5h15l-1-2 1-4 3-3h21l1-3q1-5 3-5l14-1h638v-2l2-6h148q3 0 5 2l1 6h13c7 0 7 0 11 2l2 7 7 1v8h7q3 5 2 12v66l-1 8-8 1v7q-3 3-7 2l-1 3-1 4-7 1h-211l-230 1h-333v3l-2 4h-24v7l-6 3q-4 3-4 7l-7 1v3q1 3-2 5h-7v3l-1 5h-7l1 49 6 1 1 5v3h8l1 6v3l-1 7h11q4-1 7 3v6l3-1 12 1q3 2 2 6v3l3-1h993l5 1v-3q-1-4 2-6l6-1v-3q0-3 4-5h6l-1-2 2-6h7v-3l2-14h5zM0 0h126l1 8v144l-1 5h932l106-1 7 1h4q3 0 5 2l2 6h52l5 2v7h9l8 1q2 4 1 8h2q7-2 14 1l1 7h11l5 1q2 4 1 8l3-1 5 3v7h8v16h7l4 8h2l5 3v23h3q3 0 5 2v24h7q3 7 2 14v137l-1 32v16q1 6-2 7h-5v7l-1 3-1 6h-16l1 3-1 2h-79v-4h-7l-3-1-6-1-1-8v-7h-6q-2-4-2-10V338h-3q-3 1-5-2l-1-9v-6h-3l-5-2v-16h-16l-2-6 1-2h-16l-1-1v-7H126l1 2v188c0 11 0 11-3 14h-7v15l-4 1h-12v5H22l-1-3 1-2h-3q-5 1-6-2v-5h-3l-5-2v-7H0zM6537 0h606v5l8 1 1 16v82l-3 4-8 1h-6v3l-1 4q-5 2-10 1h-509v3l-1 5q-13 2-24 0v3q1 5-2 6l-6 1h-4l-5-1v3l-1 5-7 2v8q0 6-2 7l-7 1v210c0 7 0 7-2 10h-7v32q-3 3-8 2v15q-2 3-5 2h-3v2q1 8-2 15l-7 1v7l-1 3-1 6h-7v7l-6 2-2-1v3q1 5-2 6l-9 2h-6v5q-4 3-9 2v3q1 3-2 5h-15l1 3-2 5h-33l1 3-1 2h-589v-5h-8v-8h-7l-3-10v-6l-3-1-4-1-1-7v-48l2-5 7-1v-10q-1-3 2-5 2-2 6-2l1-3 2-5h32v-7q6-3 12-2h498l8 1v-3q0-3 2-5l7-2h8l2-7 7-1v-11q0-3 2-5h6V167l1-8q4-4 8-3v-44l1-5h8V84l1-3h7V66l8-4v-2l3-5 6-1v-9l1-6h8v-8q8-3 15-2l1-3 3-5h6v-3q-1-3 2-5h15v-3q-1-3 2-5h24z"})))))}function Og(i){const e=window.vendorPrefix;return e==="PT"?n.createElement(Ag,{themeType:i.themeType}):e==="MV"?n.createElement(Dg,{themeType:i.themeType}):e==="NW"?n.createElement(dg,{themeType:"dark"}):e==="HA"?n.createElement(pg,{themeType:"dark"}):e&&e!=="@@vendorPrefix@@"?n.createElement(hg,{themeType:i.themeType}):n.createElement(wg,{themeType:i.themeType})}class qs extends ze{onHashChangedBound;constructor(e){super(e),this.onHashChangedBound=this.onHashChanged.bind(this)}componentDidMount(){window.addEventListener("hashchange",this.onHashChangedBound)}componentWillUnmount(){window.removeEventListener("hashchange",this.onHashChangedBound)}onHashChanged(){}static getLocation(){let e=window.location.hash;e=e.replace(/^#/,"");const t=e.split("/").map(s=>{try{return s?decodeURIComponent(s):""}catch{return console.error(`Router: Cannot decode ${s}`),s}});return{tab:t[0]||"",dialog:t[1]||"",id:t[2]||"",arg:t[3]||""}}static doNavigate(e,t,s,r){let o="";const M=qs.getLocation();r!==void 0&&!s&&(s=M.id),s&&!t&&(t=M.dialog),(t&&!e||e===null)&&(e=M.tab),e&&(o=`#${e}`,t&&(o+=`/${t}`,s&&(o+=`/${s}`,r!==void 0&&(o+=`/${r}`)))),window.location.hash!==o&&(window.location.hash=o)}}function Eg(){const i=document.getSelection();if(!(i!=null&&i.rangeCount))return()=>{};let e=document.activeElement;const t=[];for(let s=0;s{i.type==="Caret"&&i.removeAllRanges(),i.rangeCount||t.forEach(s=>i.addRange(s)),e&&e.focus()}}const On={"text/plain":"Text","text/html":"Url",default:"Text"},_g="Copy to clipboard: #{key}, Enter";function fg(i){const e=`${/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl"}+C`;return i.replace(/#{\s*key\s*}/g,e)}function Gc(i,e){let t,s,r,o,M=!1;e=e||{};const a=e.debug||!1;try{if(t=Eg(),s=document.createRange(),r=document.getSelection(),o=document.createElement("span"),o.textContent=i,o.ariaHidden="true",o.style.all="unset",o.style.position="fixed",o.style.top="0px",o.style.clip="rect(0, 0, 0, 0)",o.style.whiteSpace="pre",o.style.userSelect="text",o.addEventListener("copy",l=>{var N,c,L,j;if(l.stopPropagation(),e!=null&&e.format)if(l.preventDefault(),typeof l.clipboardData>"u"){a&&console.warn("unable to use e.clipboardData"),a&&console.warn("trying IE specific stuff"),(N=window.clipboardData)==null||N.clearData();const g=On[e.format]||On.default;(c=window.clipboardData)==null||c.setData(g,i)}else(L=l.clipboardData)==null||L.clearData(),(j=l.clipboardData)==null||j.setData(e.format,i)}),document.body.appendChild(o),s.selectNodeContents(o),r==null||r.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");M=!0}catch(u){a&&console.error("unable to copy using execCommand: ",u),a&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",i),M=!0}catch(l){a&&console.error("unable to copy using clipboardData: ",l),a&&console.error("falling back to prompt");const N=fg("message"in e?e.message||"":_g);window.prompt(N,i)}}finally{r&&(s&&typeof r.removeRange=="function"?r.removeRange(s):r.removeAllRanges()),o&&document.body.removeChild(o),t&&t()}return M}class D{static translations={};static unknownTranslations=[];static lang=window.sysLang||"en";static _disableWarning=!1;static setLanguage(e){e&&(D.lang=e)}static extendTranslations(e,t){if(e.prefix){const s=e;if(typeof s.prefix=="string"){const r=s.prefix;delete s.prefix,Object.keys(s).forEach(o=>{const M=o,a={},u=s[M];Object.keys(u).forEach(l=>{l&&u&&(l.startsWith(r)?a[l]=u[l]:a[`${r}${l}`]=u[l])}),e[M]=a})}else console.warn("Found prefix in translations, but it is not a string")}try{if(!t)e.en&&e.de&&e.ru?Object.keys(e).forEach(s=>{const r=s;D.translations[r]||={},Object.assign(D.translations[r],e[r])}):Object.keys(e).forEach(s=>{const r=e[s];Object.keys(r).forEach(o=>{const M=o,a=D.translations[M];a?a[s]?a[s]!==r[M]&&console.warn(`Translation for word "${s}" in "${M}" was ignored: existing = "${a[s]}", new = ${r[M]}`):a[s]=r[M]:console.warn(`Used unknown language: ${M}`)})});else{D.translations[t]||console.warn(`Used unknown language: ${t}`),D.translations[t]||={};const s=D.translations[t];Object.keys(e).forEach(r=>{s[r]?s[r]!==e[r]&&console.warn(`Translation for word "${r}" in "${t}" was ignored: existing = "${s[r]}", new = ${e[r]}`):s[r]=e[r]})}}catch(s){console.error(`Cannot apply translations: ${s}`)}}static setTranslations(e){e&&(D.translations=e)}static getLanguage(){return D.lang}static t(e,...t){const s=D.translations[D.lang];if(s){const r=s[e];if(r)e=r;else if(D.unknownTranslations.includes(e)||(D.unknownTranslations.push(e),!D._disableWarning&&console.log(`Translate: ${e}`)),D.lang!=="en"&&D.translations.en){const o=D.translations.en[e];o&&(e=o)}}for(const r of t)e=e.replace("%s",r);return e}static i18nShow(e){const t={};e?typeof e=="string"?(D.unknownTranslations.forEach(s=>{s.startsWith(e)&&(t[s]=s.replace(e,""))}),console.log(JSON.stringify(t,null,2))):e&&typeof e=="object"&&(D.unknownTranslations.forEach(s=>{e.test(s)&&(t[s]=s)}),console.log(JSON.stringify(t,null,2))):(D.unknownTranslations.forEach(s=>t[s]=s),console.log(JSON.stringify(t,null,2)))}static disableWarning(e){D._disableWarning=!!e}}window.i18nShow=D.i18nShow;window.i18nDisableWarning=D.disableWarning;const rt="material",Sg=["Su","Mo","Tu","We","Th","Fr","Sa"],xg=["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Er={0:"0x00 - good",1:"0x01 - general problem",2:"0x02 - no connection problem",16:"0x10 - substitute value from controller",32:"0x20 - substitute initial value",64:"0x40 - substitute value from device or instance",128:"0x80 - substitute value from sensor",17:"0x11 - general problem by instance",65:"0x41 - general problem by device",129:"0x81 - general problem by sensor",18:"0x12 - instance not connected",66:"0x42 - device not connected",130:"0x82 - sensor not connected",68:"0x44 - device reports error",132:"0x84 - sensor reports error"},En={JVBERi0:"pdf",R0lGODdh:"gif",R0lGODlh:"gif",iVBORw0KGgo:"png","/9j/":"jpg",PHN2Zw:"svg",Qk1:"bmp",AAABAA:"ico"};class E{static namespace=rt;static INSTANCES="instances";static dateFormat=["DD","MM"];static FORBIDDEN_CHARS=/[^._\-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu;static CapitalWords(e){return(e||"").split(/[\s_]/).filter(t=>t).map(t=>t?t[0].toUpperCase()+t.substring(1).toLowerCase():"").join(" ")}static formatSeconds(e){const t=Math.floor(e/86400);e%=3600*24;const s=Math.floor(e/3600).toString().padStart(2,"0");e%=3600;const r=Math.floor(e/60).toString().padStart(2,"0");e%=60;const o=Math.floor(e).toString().padStart(2,"0");let M="";return t&&(M+=`${t} ${D.t("ra_daysShortText")} `),M+=`${s}:${r}:${o}`,M}static getObjectName(e,t,s,r,o){var u;const M=e[t];let a;if(typeof s=="string"&&!r&&(r={language:s},s=null),r=r||{},r.language||(r.language=e["system.config"]&&e["system.config"].common&&e["system.config"].common.language||window.sysLang||"en"),s!=null&&s.name){const l=s.name;typeof l=="object"?a=r.language&&l[r.language]||l.en:a=l}else if(o&&((u=M==null?void 0:M.common)!=null&&u.desc)){const l=M.common.desc;typeof l=="object"?a=r.language&&l[r.language]||l.en||l.de||l.ru||"":a=l,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}else if(!o&&(M!=null&&M.common)){const l=M.common.name||M.common.desc;l&&typeof l=="object"?a=r.language&&l[r.language]||l.en||l.de||l.ru||"":a=l,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}else{const l=t.lastIndexOf(".");a=t.substring(l+1).replace(/[_.]/g," "),a=E.CapitalWords(a)}return(a==null?void 0:a.trim())||""}static getObjectNameFromObj(e,t,s,r,o){var u,l;const M=e;let a=(e==null?void 0:e._id)||"";if(typeof t=="string"&&!s&&(s={language:t},t=null),s=s||{},t!=null&&t.name){const N=t.name;typeof N=="object"?a=s.language&&N[s.language]||N.en:a=N}else if(r&&((u=M==null?void 0:M.common)!=null&&u.desc)){const N=M.common.desc;typeof N=="object"?a=s.language&&N[s.language]||N.en:a=N,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}else if(!r&&((l=M==null?void 0:M.common)!=null&&l.name)){let N=M.common.name;!N&&M.common.desc&&(N=M.common.desc),typeof N=="object"?a=s.language&&N[s.language]||N.en:a=N,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}return o?a:a.trim()}static getSettingsOrder(e,t,s){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[rt];const M=s.user||"admin";if(o&&o[M]){if(t){if(o[M].subOrder&&o[M].subOrder[t])return JSON.parse(JSON.stringify(o[M].subOrder[t]))}else if(o[M].order)return JSON.parse(JSON.stringify(o[M].order))}}return null}static getSettingsCustomURLs(e,t,s){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[rt];const M=s.user||"admin";if(o&&o[M]){if(t){if(o[M].subURLs&&o[M].subURLs[t])return JSON.parse(JSON.stringify(o[M].subURLs[t]))}else if(o[M].URLs)return JSON.parse(JSON.stringify(o[M].URLs))}}return null}static reorder(e,t,s){const r=Array.from(e),[o]=r.splice(t,1);return r.splice(s,0,o),r}static getSettings(e,t,s){let r;const o=(e==null?void 0:e._id)||(t==null?void 0:t.id);let M;if(e&&Object.prototype.hasOwnProperty.call(e,"common")?M=e.common:M=e,M!=null&&M.custom?(r=M.custom,r=r[rt]&&r[rt][t.user||"admin"]?JSON.parse(JSON.stringify(r[rt][t.user||"admin"])):{enabled:!0}):r={enabled:s===void 0?!0:s,useCustom:!1},Object.prototype.hasOwnProperty.call(r,"enabled")||(r.enabled=s===void 0?!0:s),t&&(!r.name&&t.name&&(r.name=t.name),!r.icon&&t.icon&&(r.icon=t.icon),!r.color&&t.color&&(r.color=t.color)),M&&(!r.color&&M.color&&(r.color=M.color),!r.icon&&M.icon&&(r.icon=M.icon),!r.name&&M.name&&(r.name=M.name)),typeof r.name=="object"&&(r.name=t.language&&r.name[t.language]||r.name.en,r.name=(r.name||"").toString().replace(/_/g," "),r.name===r.name.toUpperCase()&&(r.name=r.name[0]+r.name.substring(1).toLowerCase())),!r.name&&o){const a=o.lastIndexOf(".");r.name=o.substring(a+1).replace(/[_.]/g," "),r.name=(r.name||"").toString().replace(/_/g," "),r.name=E.CapitalWords(r.name)}return r}static setSettings(e,t,s){if(e){e.common=e.common||{},e.common.custom=e.common.custom||{},e.common.custom[rt]=e.common.custom[rt]||{},e.common.custom[rt][s.user||"admin"]=t;const r=e.common.custom[rt][s.user||"admin"];return r.useCommon&&(r.color!==void 0&&(e.common.color=r.color,delete r.color),r.icon!==void 0&&(e.common.icon=r.icon,delete r.icon),r.name!==void 0&&(typeof e.common.name!="object"&&s.language?e.common.name={[s.language]:r.name}:typeof e.common.name=="object"&&s.language&&(e.common.name[s.language]=r.name),delete r.name)),!0}return!1}static getIcon(e,t){return e!=null&&e.icon?e.icon.length<=2?n.createElement("span",{style:t||{}},e.icon):e.icon.startsWith("data:image")?n.createElement("img",{alt:e.name,src:e.icon,style:t||{}}):n.createElement("img",{alt:e.name,src:(e.prefix||"")+e.icon,style:t}):null}static getObjectIcon(e,t){var s;if(typeof e=="object"&&(t=e,e=t==null?void 0:t._id),(s=t==null?void 0:t.common)!=null&&s.icon){let r=t.common.icon;if(typeof r=="string"&&r.length<=2||r.startsWith("data:image"))return r;const o=e.split(".");return o[0]==="system"?r=`adapter/${o[2]}${r.startsWith("/")?"":"/"}${r}`:r=`adapter/${o[0]}${r.startsWith("/")?"":"/"}${r}`,window.location.pathname.match(/adapter\/[^/]+\/[^/]+\.html/)?r=`../../${r}`:window.location.pathname.match(/material\/[.\d]+/)?r=`../../${r}`:window.location.pathname.match(/material\//)&&(r=`../${r}`),r}return null}static splitCamelCase(e){return e?E.CapitalWords(e):""}static isUseBright(e,t){if(!e)return t===void 0?!0:t;e=e.toString(),e.startsWith("#")&&(e=e.slice(1));let s,r,o;const M=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(M&&M.length===4)s=parseInt(M[1],10),r=parseInt(M[2],10),o=parseInt(M[3],10);else{if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===8)e=e.substring(0,6);else if(e.length!==6)return!1;s=parseInt(e.slice(0,2),16),r=parseInt(e.slice(2,4),16),o=parseInt(e.slice(4,6),16)}return s*.299+r*.587+o*.114<=186}static getTimeString(e){if(e=parseFloat(e),Number.isNaN(e))return"--:--";const t=Math.floor(e/3600),s=Math.floor(e%3600/60).toString().padStart(2,"0"),r=(e%60).toString().padStart(2,"0");return t?`${t}:${s}:${r}`:`${s}:${r}`}static getWindDirection(e){return e>=0&&e<11.25?"N":e>=11.25&&e<33.75?"NNE":e>=33.75&&e<56.25?"NE":e>=56.25&&e<78.75?"ENE":e>=78.75&&e<101.25?"E":e>=101.25&&e<123.75?"ESE":e>=123.75&&e<146.25?"SE":e>=146.25&&e<168.75?"SSE":e>=168.75&&e<191.25?"S":e>=191.25&&e<213.75?"SSW":e>=213.75&&e<236.25?"SW":e>=236.25&&e<258.75?"WSW":e>=258.75&&e<281.25?"W":e>=281.25&&e<303.75?"WNW":e>=303.75&&e<326.25?"NW":e>=326.25&&e<348.75?"NNW":"N"}static padding(e){return typeof e=="string"?e.length<2?`0${e}`:e:e<10?`0${e}`:e.toString()}static setDataFormat(e){e&&(E.dateFormat=e.toUpperCase().split(/[.-/]/),E.dateFormat.splice(E.dateFormat.indexOf("YYYY"),1))}static date2string(e){if(typeof e=="string"){if(e=e.trim(),!e)return"";if(e.match(/^[\w\s]+$/))return e;const s=e.match(/(\d{1,4})[-./](\d{1,2})[-./](\d{1,4})/);if(s){const r=[parseInt(s[1],10),parseInt(s[2],10),parseInt(s[3],10)],o=r.find(M=>M>31);if(o!==void 0){r.splice(r.indexOf(o),1);const M=r.find(a=>a>12);M?(r.splice(r.indexOf(M),1),e=new Date(o,r[0]-1,M)):E.dateFormat[0][0]==="M"&&E.dateFormat[1][0]==="D"?(e=new Date(o,r[0]-1,r[1]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[1]-1,r[0]))):E.dateFormat[0][0]==="D"&&E.dateFormat[1][0]==="M"?(e=new Date(o,r[1]-1,r[0]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[0]-1,r[1]))):e=new Date(e)}else e=new Date(e)}else e=new Date(e)}else e=new Date(e);let t=D.t(`ra_dow_${Sg[e.getDay()]}`).replace("ra_dow_","");return t+=`. ${e.getDate()} ${D.t(`ra_month_${xg[e.getMonth()]}`).replace("ra_month_","")}`,t}static renderTextWithA(e){let t=e.match(/||[^<]+<\/b>|[^<]+<\/i>/);if(t){const s=[];let r=1;do{const o=e.substring(0,t.index);if(e=e.substring((t.index||0)+t[0].length),o&&s.push(n.createElement("span",{key:`a${r++}`},o)),t[0].startsWith(""))s.push(n.createElement("b",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith(""))s.push(n.createElement("i",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith("([^<]*)||[^<]+<\/b>|[^<]+<\/i>/):null,!t&&e&&s.push(n.createElement("span",{key:`a${r++}`},e))}while(t);return s}return e}static getSmartName(e,t,s,r){var M,a;if(!t){if(!r)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const u=e;return(M=u==null?void 0:u.common)!=null&&M.custom&&u.common.custom[s]?u.common.custom[s].smartName:void 0}if(!r)return e[t].common.smartName;const o=e[t];return(a=o==null?void 0:o.common)!=null&&a.custom&&o.common.custom[s]&&o.common.custom[s].smartName||null}static getSmartNameFromObj(e,t,s){var o,M;if(!s)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const r=(M=(o=e==null?void 0:e.common)==null?void 0:o.custom)==null?void 0:M[t];return r?r.smartName:void 0}static enableSmartName(e,t,s){const r=e;s?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName={}):r.common.smartName={}}static removeSmartName(e,t,s){var o,M;const r=e;s?(M=(o=r==null?void 0:r.common)==null?void 0:o.custom)!=null&&M[t]&&(r.common.custom[t]=null):r.common.smartName=null}static updateSmartName(e,t,s,r,o,M){var l,N;const a=D.getLanguage(),u=e;if(typeof u.common.smartName=="string"){const c=u.common.smartName;u.common.smartName={},u.common.smartName[a]=c}if((l=u.native)!=null&&l.byON){delete u.native.byON;let c=u.common.smartName;c&&typeof c!="object"&&(c={en:c,[a]:c}),u.common.smartName=c}if(r!==void 0&&(M?(u.common.custom||={},u.common.custom[o]||={},u.common.custom[o].smartName||={},r?u.common.custom[o].smartName.smartType=r:delete u.common.custom[o].smartName.smartType):(u.common.smartName||={},r?u.common.smartName.smartType=r:delete u.common.smartName.smartType)),s!==void 0&&(M?(u.common.custom||={},u.common.custom[o]||={},u.common.custom[o].smartName||={},u.common.custom[o].smartName.byON=s):(u.common.smartName||={},u.common.smartName.byON=s)),t!==void 0){let c;if(M?(u.common.custom||={},u.common.custom[o]||={},u.common.custom[o].smartName||={},c=u.common.custom[o].smartName):(u.common.smartName||={},c=u.common.smartName),c[a]=t,c&&(!c[a]||c[a]===u.common.name&&!u.common.role)){delete c[a];let L=!0;for(const j in c)if(Object.prototype.hasOwnProperty.call(c,j)){L=!1;break}if(L)if(M&&((N=u.common.custom)!=null&&N[o]))u.common.custom[o].smartName.byON===void 0?delete u.common.custom[o]:(delete u.common.custom[o].en,delete u.common.custom[o].de,delete u.common.custom[o].ru,delete u.common.custom[o].nl,delete u.common.custom[o].pl,delete u.common.custom[o].it,delete u.common.custom[o].fr,delete u.common.custom[o].pt,delete u.common.custom[o].es,delete u.common.custom[o].uk,delete u.common.custom[o]["zh-cn"]);else if(u.common.smartName&&u.common.smartName.byON!==void 0){const j=u.common.smartName;delete j.en,delete j.de,delete j.ru,delete j.nl,delete j.pl,delete j.it,delete j.fr,delete j.pt,delete j.es,delete j.uk,delete j["zh-cn"]}else u.common.smartName=null}}}static updateSmartNameEx(e,t){var o,M,a,u;const s=D.getLanguage(),r=e;if(typeof r.common.smartName=="string"){const l=r.common.smartName;r.common.smartName={},r.common.smartName[s]=l}if((o=r.native)!=null&&o.byON){delete r.native.byON;let l=r.common.smartName;l&&typeof l!="object"&&(l={en:l,[s]:l}),r.common.smartName=l}if(t.smartType!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},t.smartType?r.common.custom[t.instanceId].smartName.smartType=t.smartType:delete r.common.custom[t.instanceId].smartName.smartType):(r.common.smartName||={},t.smartType?r.common.smartName.smartType=t.smartType:delete r.common.smartName.smartType)),t.byON!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.byON=t.byON):(r.common.smartName||={},r.common.smartName.byON=t.byON)),t.noAutoDetect!==void 0&&(t.noCommon?t.noAutoDetect?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.noAutoDetect=t.noAutoDetect):(a=(M=r.common.custom)==null?void 0:M[t.instanceId])!=null&&a.smartName&&delete r.common.custom[t.instanceId].smartName.noAutoDetect:!t.noAutoDetect&&r.common.smartName?delete r.common.smartName.noAutoDetect:(r.common.smartName||={},r.common.smartName.noAutoDetect=t.noAutoDetect)),t.smartName!==void 0){let l;if(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},l=r.common.custom[t.instanceId].smartName):(r.common.smartName||={},l=r.common.smartName),l[s]=t.smartName,l&&(!l[s]||l[s]===r.common.name&&!r.common.role)){delete l[s];let N=!0;for(const c in l)if(Object.prototype.hasOwnProperty.call(l,c)){N=!1;break}if(N)if(t.noCommon&&((u=r.common.custom)!=null&&u[t.instanceId]))r.common.custom[t.instanceId].smartName.byON===void 0?delete r.common.custom[t.instanceId]:(delete r.common.custom[t.instanceId].en,delete r.common.custom[t.instanceId].de,delete r.common.custom[t.instanceId].ru,delete r.common.custom[t.instanceId].nl,delete r.common.custom[t.instanceId].pl,delete r.common.custom[t.instanceId].it,delete r.common.custom[t.instanceId].fr,delete r.common.custom[t.instanceId].pt,delete r.common.custom[t.instanceId].es,delete r.common.custom[t.instanceId].uk,delete r.common.custom[t.instanceId]["zh-cn"]);else if(r.common.smartName&&r.common.smartName.byON!==void 0){const c=r.common.smartName;delete c.en,delete c.de,delete c.ru,delete c.nl,delete c.pl,delete c.it,delete c.fr,delete c.pt,delete c.es,delete c.uk,delete c["zh-cn"]}else r.common.smartName=null}}}static disableSmartName(e,t,s){const r=e;s?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName=!1):r.common.smartName=!1}static copyToClipboard(e,t){return t&&(t.stopPropagation(),t.preventDefault()),Gc(e)}static getFileExtension(e){const t=(e||"").lastIndexOf(".");return t!==-1?e.substring(t+1).toLowerCase():null}static formatBytes(e){if(Math.abs(e)<1024)return`${e} B`;const t=["KB","MB","GB"];let s=-1;do e/=1024,++s;while(Math.abs(e)>=1024&&s186?`#000000${s||""}`:`#FFFFFF${s||""}`;const a=(255-r).toString(16),u=(255-o).toString(16),l=(255-M).toString(16);return`#${a.padStart(2,"0")}${u.padStart(2,"0")}${l.padStart(2,"0")}${s||""}`}static color2rgb(e){if(e==null||e===""||typeof e!="string")return!1;if(e.startsWith("rgba")){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),\s*([.\d]+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else if(e.startsWith("rgb")){const t=e.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else e.startsWith("#")&&(e=e.slice(1));return e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length!==6&&e.length!==8?(console.warn(`Cannot invert color: ${e}`),!1):[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}static rgb2lab(e){let t=e[0]/255,s=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=(t*.4124+s*.3576+r*.1805)/.95047,M=t*.2126+s*.7152+r*.0722,a=(t*.0193+s*.1192+r*.9505)/1.08883;return o=o>.008856?o**.33333333:7.787*o+.137931,M=M>.008856?M**.33333333:7.787*M+.137931,a=a>.008856?a**.33333333:7.787*a+.137931,[116*M-16,500*(o-M),200*(M-a)]}static colorDistance(e,t){const s=E.color2rgb(e),r=E.color2rgb(t);if(!s||!r)return 0;const o=E.rgb2lab(s),M=E.rgb2lab(r),a=o[0]-M[0],u=o[1]-M[1],l=o[2]-M[2],N=Math.sqrt(o[1]*o[1]+o[2]*o[2]),c=Math.sqrt(M[1]*M[1]+M[2]*M[2]),L=N-c;let j=u*u+l*l-L*L;j=j<0?0:Math.sqrt(j);const g=1+.045*N,y=1+.015*N,d=a,I=L/g,m=j/y,w=d*d+I*I+m*m;return w<0?0:w}static _toVal(e){let t,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e))for(let r=0;r{if(s=s.trim(),s){const r=s.split("="),o=decodeURIComponent(r[0]).trim();if(r.length>1){const M=decodeURIComponent(r[1]);if(M==="true")t[o]=!0;else if(M==="false")t[o]=!1;else{const a=parseFloat(M);a.toString()===M?t[o]=a:t[o]=M}}else t[o]=!0}}),t}static getParentId(e){const t=(e||"").toString().split(".");return t.length>1?(t.pop(),t.join(".")):null}static formatDate(e,t){if(!e)return"";let s;const r=(e.getMonth()+1).toString().padStart(2,"0"),o=e.getDate().toString().padStart(2,"0");return t==="MM/DD/YYYY"?s=`${r}/${o}/${e.getFullYear()}`:s=`${e.getFullYear()}-${r}-${o}`,s+=` ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`,s}static formatTime(e){if(e){e=Math.round(e);const t=Math.floor(e/(3600*24)),s=Math.floor(e%(3600*24)/3600),r=Math.floor(e%3600/60),o=e%60;return t?`${t}.${s.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:s?`${s}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`0:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}return"0:00:00"}static MDtext2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static MDgetTitle(e){var o;const t=E.MDextractHeader(e),s=t.header;let r=t.body;if(!s.title){r=r.replace(/{[^}]*}/g,""),r=r.trim();const M=r.replace(/\r/g,"").split(` +`);for(let a=0;a{if(!M.trim())return;const a=M.indexOf(":");if(a!==-1){const u=M.substring(0,a).trim();let l=M.substring(a+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[u]=!0:l==="false"?t[u]=!1:parseFloat(l).toString()===t[u]?t[u]=parseFloat(l):t[u]=l}else t[M.trim()]=!0}),e=e.substring(s+7))}return{header:t,body:e}}static MDremoveDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(s=>e=e.replace(s,"")),e}static generateFile(e,t){const s=document.createElement("a");s.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}static quality2text(e){const t=e&4294901760,s=Er[e];let r;return s?r=[s]:e&1?r=[Er[1],`0x${(e&65534).toString(16)}`]:e&2?r=[Er[2],`0x${(e&65533).toString(16)}`]:r=[`0x${e.toString(16)}`],t&&r.push(`0x${(t>>16).toString(16).toUpperCase()}`),r}static clone(e){return JSON.parse(JSON.stringify(e))}static getStates(e){var r;const t=(r=e==null?void 0:e.common)==null?void 0:r.states;let s;if(t)if(typeof t=="string"&&t[0]==="{")try{s=JSON.parse(t)}catch{console.error(`Cannot parse states: ${t}`),s=null}else if(typeof t=="string"){const o=t.split(";");s={};for(let M=0;Ms[M]=o):(e==null?void 0:e.common.type)==="string"?t.forEach(o=>s[o]=o):(e==null?void 0:e.common.type)==="boolean"&&(s.false=t[0],s.true=t[1])):typeof t=="object"&&(s=t);return s||null}static async getSvg(e){const s=await(await fetch(e)).blob();return new Promise(r=>{const o=new FileReader;o.onload=()=>{var M;return r(((M=o.result)==null?void 0:M.toString())||"")},o.readAsDataURL(s)})}static detectMimeType(e){const t=Object.keys(En).find(s=>e.startsWith(s));return t?En[t]:null}static isStableRepository(e){return!!(typeof e=="string"&&e.toLowerCase().startsWith("stable")||e&&typeof e!="string"&&e.find(t=>t.toLowerCase().startsWith("stable")))}static isStringInteger(e){return typeof e=="number"?Math.round(e)===e:parseInt(e,10).toString()===e}static isValidDate(e){return e instanceof Date&&!isNaN(e)}static getStyle(e,...t){const s={};for(let r=0;r{if(typeof t[r][o]=="function")s[o]=t[r][o](e);else if(typeof t[r][o]=="object"){const M=t[r][o];s[o]={},Object.keys(M).forEach(a=>{typeof M[a]=="function"?s[o][a]=M(e):(M[a]||M[a]===0)&&(s[o][a]=M[a])})}else(t[r][o]||t[r][o]===0)&&(s[o]=t[r][o])});return s}}const _r={buttonIcon:{marginRight:8}};class kg extends n.Component{isIFrame;constructor(e){super(e);const t=e.newReact===void 0?!0:e.newReact;if(e.isIFrame!==void 0)this.isIFrame=e.isIFrame;else try{this.isIFrame=!t&&window.self!==window.top}catch{this.isIFrame=!t}}render(){const e=this.props.noTextOnButtons,t={borderRadius:this.props.theme.saveToolbar.button.borderRadius||3,height:this.props.theme.saveToolbar.button.height||32},s={bottom:this.isIFrame?38:0,left:this.props.paddingLeft||0,right:0,position:"absolute",background:this.props.theme.saveToolbar.background};return this.props.dense&&(s.minHeight=48),this.props.error&&(t.border="1px solid red"),n.createElement($a,{style:s},n.createElement(Ct,{variant:"extended","aria-label":"Save",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!1),style:t},n.createElement(Br,{style:e?void 0:_r.buttonIcon}),!e&&D.t("ra_Save")),n.createElement(Ct,{variant:"extended","aria-label":"Save and close",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!0),style:{...t,marginLeft:10}},n.createElement(Br,{style:e?void 0:_r.buttonIcon}),e?"+":D.t("ra_Save and close"),e&&n.createElement(ge,null)),n.createElement("div",{style:{flexGrow:1}}),n.createElement(Ct,{variant:"extended","aria-label":"Close",onClick:()=>this.props.onClose(),style:t},n.createElement(ge,{style:e?void 0:_r.buttonIcon}),!e&&D.t("ra_Close")))}}const _n={suppress:{fontSize:12},suppressRoot:{marginTop:"16px"}};class Fc extends ze{constructor(e){if(super(e),!this.props.dialogName&&this.props.suppressQuestionMinutes)throw new Error("dialogName required if suppressQuestionMinutes used");let t=!1;this.props.suppressQuestionMinutes&&(t=parseInt((window._localStorage||window.localStorage).getItem(this.props.dialogName),10)||0,t?Date.now()>t&&((window._localStorage||window.localStorage).removeItem(this.props.dialogName),t=!1):t=!1),this.state={suppress:t}}handleOk(){this.state.suppress&&(window._localStorage||window.localStorage).setItem(this.props.dialogName,Date.now()+(this.props.suppressQuestionMinutes||2)*6e4),this.props.onClose&&this.props.onClose(!0)}handleCancel(){this.props.onClose&&this.props.onClose(!1)}render(){return typeof this.state.suppress=="number"?(setTimeout(()=>this.props.onClose&&this.props.onClose(!0),100),null):n.createElement(de,{open:!0,maxWidth:"md",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:(e,t)=>{t!=="backdropClick"&&t!=="escapeKeyDown"&&this.handleCancel()},"aria-labelledby":"ar_confirmation_dialog_title","aria-describedby":"ar_confirmation_dialog_description"},n.createElement(Ie,{id:"ar_confirmation_dialog_title"},this.props.title||D.t("ra_Are you sure?")),n.createElement(Ae,null,n.createElement(Jt,{id:"ar_confirmation_dialog_description"},this.props.icon||null,this.props.text,this.props.suppressQuestionMinutes?n.createElement("br",null):null,this.props.suppressQuestionMinutes?n.createElement(H,{sx:{"& .FormControlLabel-label":_n.suppress,"&.FormControlLabel-root":_n.suppressRoot},control:n.createElement(ne,{id:`ar_dialog_confirm_suppress_${this.props.dialogName||""}`,checked:!!this.state.suppress,onChange:()=>this.setState({suppress:!this.state.suppress})}),label:this.props.suppressText||D.t("ra_Suppress question for next %s minutes",(this.props.suppressQuestionMinutes||2).toString())}):null)),n.createElement(me,null,n.createElement(X,{id:`ar_dialog_confirm_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:n.createElement(ve,null)},this.props.ok||D.t("ra_Ok")),n.createElement(X,{id:`ar_dialog_confirm_cancel_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:n.createElement(ge,null)},this.props.cancel||D.t("ra_Cancel"))))}}class Hc extends ze{handleOk(){this.props.onClose&&this.props.onClose()}render(){return n.createElement(de,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},n.createElement(Ie,{id:"ar_alert_dialog_title"},this.props.title||D.t("ra_Error")),n.createElement(Ae,null,n.createElement(Jt,{id:"ar_alert_dialog_description"},this.props.text||D.t("ra_Unknown error!"))),n.createElement(me,null,n.createElement(X,{id:"ar_dialog_error_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:n.createElement(ve,null)},D.t("ra_Ok"))))}}const Yg="Actions",Qg="Append",vg="Cancel",Ug="Categories",bg="Checked",$g="Delete",Pg="Close",Wg="Commercial",Rg="Configure",Jg="Connected",Bg="Continue",Gg="Copied",Fg="Create",Hg="Crop",Vg="Delete",Zg="Delete",Xg="Discard",Kg="Disconnected",qg="Error",eT="Filter",tT="Friday",sT="Latitude",iT="Logout",rT="Longitude",oT="Message",MT="Monday",nT="Name",aT="Objects",cT="Ok",uT="Product",lT="Rename/Move/Copy",NT="Repeat",LT="Replace",jT="Root",gT="Saturday",TT="Save",yT="Selected",DT="States",dT="Sunday",zT="Thursday",hT="Timestamp",IT="Tuesday",wT="Update",CT="Valid till",AT="Value",mT="Version",pT="Wednesday",OT="Width",ET="Yes",_T="different",fT="Everyone can read object",ST="Everyone can read state",xT="Everyone can write object",kT="Everyone can write state",YT="Group can read object",QT="Group can read state",vT="Group can write object",UT="Group can write state",bT="Owner can read object",$T="Owner can read state",PT="Owner can write object",WT="Owner can write state",RT="Buttons",JT="Changed from",BT="close",GT="Create boolean state",FT="Create channel",HT="Create device",VT="Create number state",ZT="Create state",XT="Create string state",KT="days",qT="Fr",ey="Mo",ty="Sa",sy="Su",iy="Th",ry="Tu",oy="We",My="Expert mode",ny="FALSE",ay="All files",cy="Audio",uy="Code/JSON",ly="Images",Ny="Text",Ly="Video",jy="Settings",gy="without",Ty="Function",yy="ID",Dy="Name",dy="Role",zy="Room",hy="Type",Iy="Invalid settings",wy="Last change",Cy="locally",Ay="Apr",my="Aug",py="Dec",Oy="Feb",Ey="Jan",_y="Jul",fy="Jun",Sy="Mai",xy="Mar",ky="Nov",Yy="Oct",Qy="Sep",vy="Apr",Uy="Aug",by="Dec",$y="Feb",Py="Jan",Wy="Jul",Ry="Jun",Jy="Mai",By="Mar",Gy="Nov",Fy="Oct",Hy="Sep",Vy="none",Zy="Object changed by",Xy="Object last changed at",Ky="Settings from other adapter %s",qy="Quality code",eD="repeat",tD='To select folder, just hold the key "shift" by clicking the folder.',sD="Show all",iD="State changed by",rD="Object changed from",oD="Timestamp",MD="Acknowledged",nD="Comment",aD="Copy the state value",cD="Hold Cltr/⌘ key to open the link",uD="Custom settings",lD="Delete object",ND="Edit object",LD="Edit the state value",jD="Expires in",gD="From",TD="Last changed",yD="Quality",DD="Time stamp",dD="User",zD="Value",hD="TRUE",ID="Value",wD="Warning: The CRON job will run every minute during the specified period!",CD="Warning: The CRON job will run every second during the specified period!",AD="CRON",mD="Date",pD="Dates",OD="Day",ED="Day of week",_D="Every",fD="every N days",SD="every Nth day of the week",xD="every N day of week",kD="every N hours",YD="every N minutes",QD="every N months",vD="every N seconds",UD="every day",bD="every day of the week",$D="every day of the week",PD="every hour",WD="every minute",RD="every month",JD="every second",BD="From",GD="Hours",FD="Interval",HD="Interval between",VD="Invalid CRON",ZD="Minutes",XD="months",KD="Once",qD="Period",ed="Seconds",td="Simple",sd="Specific time",id="specific dates",rd="specific day(s) of the week",od="specific day of weeks",Md="specific hours",nd="specific minutes",ad="specific months",cd="specific seconds",ud="Time",ld="To",Nd="Wizard",Ld="all",jd="Astro day",gd="Astro night",Td="Dawn",yd="Dusk",Dd="Golden hour",dd="Golden hour end",zd="Nadir",hd="Nautical dawn",Id="Nautical dusk",wd="Night",Cd="Night end",Ad="Solar noon",md="Sunrise",pd="Sunrise end",Od="Sunset",Ed="Sunset start",_d="at",fd="at %s",Sd="every day",xd="every hour",kd="every minute",Yd="every month",Qd="every %s day",vd="every %s hours",Ud="every %s minutes",bd="every %s months",$d="every %s weeks",Pd="every %s years",Wd="every week",Rd="every year",Jd="from %s to %s",Bd="never",Gd="on %s of %s",Fd="on %s and %s of",Hd="on every date of",Vd="%s",Zd="%s and %s",Xd="on %s",Kd="on %s and %s",qd="on weekends",e1="on working days",t1="will ne be not executed any more, because start is in the past",s1="on %s",i1="from %s",r1="Execute from to",o1="to %s",M1="every",n1="Specific time",a1="from",c1="From-to",u1="Interval time",l1="invert",N1="none",L1="on",j1="Period",g1="Daily",T1="Dates",y1="Day",D1="Every",d1="Every day",z1="Every month",h1="Every week",I1="Every year",w1="Hours",C1="Minutes",A1="month",m1="Monthly",p1="Once",O1="Specific months",E1="Week",_1="Weekdays",f1="Weekend",S1="Weekly",x1="Workdays",k1="Year",Y1="Yearly",Q1="Specific time",v1="Time",U1="to",b1="Valid",$1="from",P1="to",W1="Whole day",R1="every month",J1={"ra_%s links from aliases":"%s links from aliases","ra_%s object(s) processed":"%s object(s) processed","ra_%s was imported":"%s was imported","ra_Accept license":"Accept license",ra_Actions:Yg,"ra_Add new child object to selected parent":"Add new child object to selected parent","ra_Add objects tree from JSON file":"Add objects tree from JSON file","ra_Add row":"Add row","ra_Advanced options":"Advanced options","ra_All items are filtered out":"All items are filtered out","ra_All objects":"All objects",ra_Append:Qg,"ra_Append %s entries or replace existing?":"Append %s entries or replace existing?","ra_Append or replace?":"Append or replace?","ra_Are you sure?":"Are you sure?","ra_Auto (no custom columns)":"Auto (no custom columns)","ra_Back to %s":"Back to %s","ra_Background image":"Background image",ra_Cancel:vg,"ra_Cannot add items with set filter":"Cannot add items with set filter","ra_Cannot decode license":"Cannot decode license","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Cannot determine position: System settings are empty and GPS detection is disabled in browser",'ra_Cannot find "%s"':'Cannot find "%s"','ra_Cannot read "%s"':'Cannot read "%s"',"ra_Cannot read licenses: %s":"Cannot read licenses: %s","ra_Cannot retrieve options, as instance is offline":"Cannot retrieve options, as instance is offline","ra_Cannot update attribute, because not found in the object":"Cannot update attribute, because not found in the object","ra_Cannot upload":"Cannot upload",ra_Categories:Ug,"ra_Chained certificate":"Chained certificate","ra_Change color theme":"Change color theme","ra_Changed from":"Changed from","ra_Channel → State":"Channel → State","ra_Check license":"Check license",ra_Checked:bg,ra_Clear:$g,"ra_Clear filter":"Clear filter","ra_Clear icon":"Clear icon","ra_Click to see in full size":"Click to see in full size","ra_Click to show":"Click to show","ra_Clone current row":"Clone current row",ra_Close:Pg,"ra_Collapse all nodes":"Collapse all nodes","ra_Collapse one step node":"Collapse one level",ra_Commercial:Wg,ra_Configure:Rg,"ra_Configure visible columns":"Configure visible columns","ra_Confirm deletion of %s":"Confirm deletion of %s",ra_Connected:Jg,ra_Continue:Bg,ra_Copied:Gg,"ra_Copied %s":'Copied "%s"',"ra_Copy content":"Copy content",ra_Create:Fg,"ra_Create alias":"Create alias","ra_Create folder":"Create folder","ra_Create new folder in %s":"Create new folder in %s",ra_Crop:Hg,"ra_Define CRON...":"Define CRON...","ra_Define functions":"Define functions","ra_Define rooms":"Define rooms","ra_Define schedule":"Define schedule","ra_Define schedule...":"Define schedule...",ra_Del:Vg,ra_Delete:Zg,"ra_Delete current row":"Delete current row","ra_Deselect all":"Unselect all","ra_Device → Channel → State":"Device → Channel → State","ra_Disable/Enable translation":"Disable/Enable translation",ra_Discard:Xg,ra_Disconnected:Kg,"ra_Do not ask for next 2 hours in this session":"Do not ask for next 2 hours in this session","ra_Do not export values of states":"Do not export values of states","ra_Do not use let's encrypt":"Do not use let's encrypt","ra_Docker is not available":"Docker is not available","ra_Docker is not installed or not running":"Docker is not installed or not running","ra_Double click to reset table layout":"Double click to reset table layout","ra_Drag 'n' drop some files here, or click to select files":"Drag 'n' drop some files here, or click to select files","ra_Drop file here":"Drop file here","ra_Drop the files here...":"Drop the file here...","ra_Duplicate name":"Duplicate name","ra_Edit ACL":"Edit ACL","ra_Edit alias":"Edit alias","ra_Edit custom config":"Edit custom config","ra_Edit full path":"Edit full path","ra_Edit function":"Edit function","ra_Edit object field":"Edit object field","ra_Edit role":"Edit role","ra_Edit room":"Edit room","ra_Edit value":"Edit value","ra_Enter the code from that page here":"Enter the code from that page here",ra_Error:qg,"ra_Expand all nodes":"Expand all nodes","ra_Expand one step node":"Expand one level","ra_Expand/Collapse card":"Expand/Collapse card","ra_Export configuration section":"Export configuration section","ra_Export data to %s file":"Export data to %s file","ra_Failed to open JSON File":"Failed to open JSON File","ra_Fallback custom certificates":"Fallback custom certificates","ra_File is too big. Max %sk allowed. Try use SVG.":"File is too big. Max %sk allowed. Try use SVG.",ra_Filter:eT,"ra_Filter and Data Actions":"Filter and Data Actions","ra_Filter files":"Filter files","ra_Folder name":"Folder name","ra_Folder → Channel → State":"Folder → Channel → State","ra_Folder → Device → Channel → State":"Folder → Device → Channel → State","ra_Folder → State":"Folder → State","ra_Folders always first":"Folders always first",ra_Friday:tT,"ra_From file":"From file","ra_From text":"From text","ra_Get %s access":"Get %s access","ra_Good luck":"Good luck","ra_Hide empty folders":"Hide empty folders","ra_If no file will be created in the folder, it will disappear after the browser closed":"If no file will be created in the folder, it will disappear after the browser closed","ra_If the button above does not work, you can authorize manually this app by visiting this url":"If the button above does not work, you can authorize manually this app by visiting this url","ra_Import and add configuration section":"Import and add configuration section","ra_Import and replace configuration section":"Import and replace configuration section","ra_Import data from %s file":"Import data from %s file","ra_Import from %s":"Import from %s","ra_Instance %s is alive":"Instance %s is alive","ra_Instance %s is not alive":"Instance %s is not alive","ra_Instance is not alive":"Instance is not alive","ra_Invalid CRON":"Invalid CRON","ra_Invalid JSON":"Invalid JSON","ra_Invalid JSON file.":"Invalid JSON file.","ra_Invalid JSON format. Expected an array.":"Invalid JSON format. Expected an array.","ra_Invalid answer from server":"Invalid answer from server","ra_Invalid parent folder!":"Invalid parent folder!","ra_Invalid structure":"Invalid structure","ra_JSON editor":"JSON editor","ra_Last change":"Last change",ra_Latitude:sT,"ra_License %s":"License %s","ra_License agreement":"License agreement","ra_License does not exist":"License does not exist","ra_License expired on %s":"License expired on %s",'ra_License for other product "%s"':'License for other product "%s"',"ra_License is for version %s, but required version is %s.":"License is for version %s, but required version is %s.","ra_License must be converted":"License must be converted to newer version. You can do it in your iobroker.net profile.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"License not found in the license manager. Do you want to update licenses from iobroker.net?","ra_Listen on all IPs":"Listen on all IPs","ra_Load configuration from file":"Load configuration from file",ra_Logout:iT,ra_Longitude:rT,'ra_May not trigger "updateLicenses"':'May not trigger "updateLicenses"',ra_Message:oT,ra_Monday:MT,"ra_Move down":"Move down","ra_Move up":"Move up",ra_Name:nT,"ra_No data found in file":"No data found in file","ra_No one license found in license manager":"No one license found in license manager","ra_No response from admin":"No response from admin","ra_No response from the backend":"No response from the backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Non-experts may create new objects only in "0_userdata.0" or "alias.0".',"ra_Not a number":"Not a number","ra_OAuth Client ID":"OAuth Client ID","ra_OAuth Client secret":"OAuth Client secret",ra_Objects:aT,ra_Ok:cT,"ra_On weekdays":"On weekdays","ra_Only following structures of objects are available:":"Only following structures of objects are available:","ra_Only selected":"Only selected","ra_Owner group":"Owner group","ra_Owner user":"Owner user","ra_Passwords are not equal!":"Passwords are not equal!","ra_Place your files here or click here to open the browse dialog":"Place your files here or click here to open the browse dialog","ra_Please allow popups in your browser for this page!":"Please allow popups in your browser for this page!","ra_Please confirm":"Please confirm","ra_Please create license":"Please create license","ra_Please enter the license":"Please enter the license","ra_Please select file...":"Please select file...","ra_Please select object ID...":"Please select object ID...","ra_Port could be used by %s":"Port could be used by %s","ra_Port is already used by %s":"Port is already used by %s","ra_Press ENTER Key to add new item":"Press ENTER Key to add new item","ra_Private certificate":"Private certificate",ra_Product:uT,"ra_Public certificate":"Public certificate","ra_Quality code":"Quality","ra_Refresh tree":"Refresh tree","ra_Reload files":"Reload files",ra_Rename_Move_Copy:lT,"ra_Renew %s access":"Renew %s access",ra_Repeat:NT,ra_Replace:LT,"ra_Request timed out":"Request timed out","ra_Restrict to folder":"Restrict to folder",ra_Root:jT,ra_Saturday:gT,ra_Save:TT,"ra_Save and close":"Save and close","ra_Save configuration to file":"Save configuration to file","ra_Save objects tree as JSON file":"Save objects tree as JSON file","ra_Select all":"Select all","ra_Select color":"Select color","ra_Select predefined icon":"Select predefined icon","ra_Select type of export":"Select type of export",ra_Selected:yT,"ra_Selected %s object(s)":"Selected %s object(s)","ra_Serial number (UUID)":"Serial number (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serial number (UUID) "%s" in license is for other device.',"ra_Session will expire in %s seconds. Continue?":"Session will expire in %s seconds. Continue?","ra_Show all folders":"Show all folders","ra_Show lines between rows":"Show lines between rows","ra_Show/Hide object descriptions":"Show/Hide object descriptions","ra_Show/hide filter input":"Show/hide filter input","ra_Some data are not stored. Discard?":"Some data are not stored. Discard?",ra_States:DT,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Successfully authorized. Token valid till %s and will be automatically renewed.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Successfully authorized. Token valid till %s but it can expire as the instance is not running.","ra_Suitable license not found in license manager":"Suitable license not found in license manager",ra_Sunday:dT,"ra_Suppress question for next %s minutes":"Suppress question for next %s minutes","ra_System language":"System language","ra_Take browser position":"Take position from browser","ra_Take position from system settings":"Take position from system settings",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").',"ra_The page you are looking for was not found":"The page you are looking for was not found","ra_The schedule will be executed every minute. Are you sure?":"The schedule will be executed every minute. Are you sure?","ra_The schedule will be executed every second. Are you sure?":"The schedule will be executed every second. Are you sure?",ra_Thursday:zT,ra_Timestamp:hT,"ra_Toggle expert mode":"Toggle expert mode","ra_Toggle the states view":"Toggle the states view","ra_Toggle view mode":"Toggle view mode","ra_Too big":"Too big","ra_Too small":"Too small","ra_Transparent dialog":"Transparent dialog",ra_Tuesday:IT,"ra_Unknown error":"Unknown error","ra_Unknown error!":"Unknown error!",ra_Update:wT,"ra_Upload file":"Upload file","ra_Use all available let's encrypt certificates":"Use all available let's encrypt certificates","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use iobroker.acme adapter for letsencrypt certificates","ra_Use system settings for position":"Use system settings for position","ra_Used system settings":"Used system settings","ra_User files":"User files",ra_ValidTill:CT,ra_Value:AT,ra_Version:mT,"ra_View file":"View file","ra_View: %s":"View: %s",ra_Wednesday:pT,ra_Width:OT,"ra_YAML editor":"YAML editor",ra_Yes:ET,"ra_You can export all objects or just the selected branch.":"You can export all objects or just the selected branch.","ra_You can filter entries by entering here some text":"You can filter entries by entering here some text","ra_You can use * as wildcard":"You can use * as wildcard",ra___different__:_T,ra_aclEveryone_read_object:fT,ra_aclEveryone_read_state:ST,ra_aclEveryone_write_object:xT,ra_aclEveryone_write_state:kT,ra_aclGroup_read_object:YT,ra_aclGroup_read_state:QT,ra_aclGroup_write_object:vT,ra_aclGroup_write_state:UT,ra_aclOwner_read_object:bT,ra_aclOwner_read_state:$T,ra_aclOwner_write_object:PT,ra_aclOwner_write_state:WT,ra_buttons:RT,ra_changedFrom:JT,ra_close:BT,ra_create_boolean_state:GT,ra_create_channel:FT,ra_create_device:HT,ra_create_number_state:VT,ra_create_state:ZT,ra_create_string_state:XT,ra_daysShortText:KT,ra_dow_Fr:qT,ra_dow_Mo:ey,ra_dow_Sa:ty,ra_dow_Su:sy,ra_dow_Th:iy,ra_dow_Tu:ry,ra_dow_We:oy,ra_expertMode:My,ra_false:ny,ra_fileType_all:ay,ra_fileType_audio:cy,ra_fileType_code:uy,ra_fileType_images:ly,ra_fileType_txt:Ny,ra_fileType_video:Ly,"ra_fileType_video,":"Video",ra_filter_customs:jy,ra_filter_customs_without:gy,ra_filter_func:Ty,ra_filter_id:yy,ra_filter_name:Dy,ra_filter_role:dy,ra_filter_room:zy,ra_filter_type:hy,"ra_import data from %s file":"Import data from %s file",ra_invalidConfig:Iy,ra_lastChange:wy,ra_locally:Cy,ra_month_Apr:Ay,ra_month_Aug:my,ra_month_Dec:py,ra_month_Feb:Oy,ra_month_Jan:Ey,ra_month_Jul:_y,ra_month_Jun:fy,ra_month_Mai:Sy,ra_month_Mar:xy,ra_month_Nov:ky,ra_month_Oct:Yy,ra_month_Sep:Qy,ra_months_Apr:vy,ra_months_Aug:Uy,ra_months_Dec:by,ra_months_Feb:$y,ra_months_Jan:Py,ra_months_Jul:Wy,ra_months_Jun:Ry,ra_months_Mai:Jy,ra_months_Mar:By,ra_months_Nov:Gy,ra_months_Oct:Fy,ra_months_Sep:Hy,"ra_no confirm for 5 mins":"no confirm for 5 mins",ra_none:Vy,ra_object_changed_by:Zy,ra_object_changed_by_user:Xy,ra_otherConfig:Ky,ra_qualityCode:qy,ra_repeat:eD,ra_select_folder_hint:tD,ra_show_all:sD,ra_state_changed_by:iD,ra_state_changed_from:rD,ra_timestamp:oD,ra_tooltip_ack:MD,ra_tooltip_comment:nD,ra_tooltip_copyState:aD,ra_tooltip_ctrlForLink:cD,ra_tooltip_customConfig:uD,ra_tooltip_deleteObject:lD,ra_tooltip_editObject:ND,ra_tooltip_editState:LD,ra_tooltip_expire:jD,ra_tooltip_from:gD,ra_tooltip_lc:TD,ra_tooltip_quality:yD,ra_tooltip_ts:DD,ra_tooltip_user:dD,ra_tooltip_value:zD,ra_true:hD,"ra_use seconds":"use seconds",ra_val:ID,"ra_via internet":"via internet",ra_warning_every_minute:wD,ra_warning_every_second:CD,sc_cron:AD,sc_date:mD,sc_dates:pD,sc_dow:OD,sc_dows:ED,sc_every:_D,sc_everyN_dates:fD,sc_everyN_dow:SD,sc_everyN_dows:xD,sc_everyN_hours:kD,sc_everyN_minutes:YD,sc_everyN_months:QD,sc_everyN_seconds:vD,sc_every_dates:UD,sc_every_dow:bD,sc_every_dows:$D,sc_every_hours:PD,sc_every_minutes:WD,sc_every_months:RD,sc_every_seconds:JD,sc_from:BD,sc_hours:GD,sc_interval:FD,sc_intervalBetween:HD,sc_invalid_cron:VD,sc_minutes:ZD,sc_months:XD,sc_once:KD,sc_period:qD,sc_seconds:ed,sc_simple:td,sc_specific:sd,sc_specific_dates:id,sc_specific_dow:rd,sc_specific_dows:od,sc_specific_hours:Md,sc_specific_minutes:nd,sc_specific_months:ad,sc_specific_seconds:cd,sc_time:ud,sc_to:ld,sc_wizard:Nd,sch_all:Ld,sch_astroDay:jd,sch_astroNight:gd,sch_astro_dawn:Td,sch_astro_dusk:yd,sch_astro_goldenHour:Dd,sch_astro_goldenHourEnd:dd,sch_astro_nadir:zd,sch_astro_nauticalDawn:hd,sch_astro_nauticalDusk:Id,sch_astro_night:wd,sch_astro_nightEnd:Cd,sch_astro_solarNoon:Ad,sch_astro_sunrise:md,sch_astro_sunriseEnd:pd,sch_astro_sunset:Od,sch_astro_sunsetStart:Ed,sch_at:_d,sch_desc_atTime:fd,sch_desc_everyDay:Sd,sch_desc_everyHour:xd,sch_desc_everyMinute:kd,sch_desc_everyMonth:Yd,sch_desc_everyNDay:Qd,sch_desc_everyNHours:vd,sch_desc_everyNMinutes:Ud,sch_desc_everyNMonths:bd,sch_desc_everyNWeeks:$d,sch_desc_everyNYears:Pd,sch_desc_everyWeek:Wd,sch_desc_everyYear:Rd,sch_desc_intervalFromTo:Jd,sch_desc_never:Bd,sch_desc_onDate:Gd,sch_desc_onDates:Fd,sch_desc_onEveryDate:Hd,sch_desc_onMonth:Vd,sch_desc_onMonths:Zd,sch_desc_onWeekday:Xd,sch_desc_onWeekdays:Kd,sch_desc_onWeekends:qd,sch_desc_onWorkdays:e1,sch_desc_onceInPast:t1,sch_desc_once_on:s1,sch_desc_validFrom:i1,sch_desc_validFromTo:r1,sch_desc_validTo:o1,sch_every:M1,sch_exactTime:n1,sch_from:a1,sch_fromTo:c1,sch_intervalTime:u1,sch_invert:l1,sch_no_one:N1,sch_on:L1,sch_period:j1,sch_periodDaily:g1,sch_periodDates:T1,sch_periodDay:y1,sch_periodEvery:D1,sch_periodEveryDay:d1,sch_periodEveryMonth:z1,sch_periodEveryWeek:h1,sch_periodEveryYear:I1,sch_periodHours:w1,sch_periodMinutes:C1,sch_periodMonth:A1,sch_periodMonthly:m1,sch_periodOnce:p1,sch_periodSpecificMonths:O1,sch_periodWeek:E1,sch_periodWeekdays:_1,sch_periodWeekend:f1,sch_periodWeekly:S1,sch_periodWorkdays:x1,sch_periodYear:k1,sch_periodYearly:Y1,sch_specificTime:Q1,sch_time:v1,sch_to:U1,sch_valid:b1,sch_validFrom:$1,sch_validTo:P1,sch_wholeDay:W1,sch_yearEveryMonth:R1},B1="Aktionen",G1="Anhängen",F1="Abbrechen",H1="Kategorien",V1="Geprüft",Z1="Löschen",X1="Schließen",K1="Kommerziell",q1="Konfigurieren",ez="Verbunden",tz="Weitermachen",sz="Kopiert",iz="Erstellen",rz="Ernte",oz="Entf",Mz="Löschen",nz="Verwerfen",az="Getrennt",cz="Fehler",uz="Filter",lz="Freitag",Nz="Breite",Lz="Ausloggen",jz="Längengrad",gz="Meldung",Tz="Montag",yz="Name",Dz="Objekte",dz="OK",zz="Produkt",hz="Umbenennen/Verschieben/Kopieren",Iz="Wiederholen",wz="Ersetzen",Cz="Anfang",Az="Samstag",mz="Speichern",pz="Ausgewählt",Oz="Zustände",Ez="Sonntag",_z="Donnerstag",fz="Zeitstempel",Sz="Dienstag",xz="Aktualisieren",kz="Gültig bis",Yz="Wert",Qz="Ausführung",vz="Mittwoch",Uz="Breite",bz="Ja",$z="unterschiedlich",Pz="Jeder kann Objekt lesen",Wz="Jeder kann Zustand lesen",Rz="Jeder kann ein Objekt schreiben",Jz="Jeder kann Zustand schreiben",Bz="Gruppe kann Objekt lesen",Gz="Gruppe kann Status lesen",Fz="Gruppe kann Objekt schreiben",Hz="Gruppe kann Status schreiben",Vz="Besitzer kann Objekt lesen",Zz="Besitzer kann Zustand lesen",Xz="Besitzer kann Objekt schreiben",Kz="Besitzer kann Zustand schreiben",qz="Tasten",eh="Geändert von",th="Schließen",sh="Booleschen Zustand erstellen",ih="Kanal erstellen",rh="Gerät erstellen",oh="Nummern-Zustand erstellen",Mh="Zustand erstellen",nh="String-Zustand erstellen",ah="T.",ch="Fr",uh="Mo",lh="Sa",Nh="So",Lh="Do",jh="Di",gh="Mi",Th="Expertenmodus",yh="FALSCH",Dh="Alle Dateien",dh="Audio",zh="Code/JSON",hh="Bilder",Ih="Text",wh="Video",Ch="Einstellungen",Ah="ohne",mh="Funktion",ph="ID",Oh="Name",Eh="Rolle",_h="Raum",fh="Typ",Sh="Ungültige Einstellungen",xh="Letzte Änderung",kh="örtlich",Yh="Apr",Qh="Aug",vh="Dez",Uh="Feb",bh="Jan",$h="Jul",Ph="Jun",Wh="Mai",Rh="Mär",Jh="Nov",Bh="Okt",Gh="Sep",Fh="Apr",Hh="Aug",Vh="Dez",Zh="Feb",Xh="Jan",Kh="Jul",qh="Jun",eI="Mai",tI="Mär",sI="Nov",iI="Okt",rI="Sep",oI="kein",MI="Objekt geändert von",nI="Objekt zuletzt geändert um",aI="Einstellungen von anderen Adaptern %s",cI="Qualitätscode",uI="wiederholen",lI='Um einen Ordner auszuwählen, halten Sie einfach die Taste "Shift" gedrückt, indem Sie auf den Ordner klicken.',NI="Alle anzeigen",LI="Zustand geändert durch",jI="Objekt geändert von",gI="Zeitstempel",TI="Bestätigt",yI="Kommentar",DI="Statuswert kopieren",dI="Strg/⌘-Taste gedrückt halten, um den Link zu öffnen",zI="Benutzerdefinierte Einstellungen",hI="Objekt löschen",II="Objekt bearbeiten",wI="Statuswert bearbeiten",CI="Läuft ab in",AI="Von",mI="Zuletzt geändert",pI="Qualität",OI="Zeitstempel",EI="Benutzer",_I="Wert",fI="WAHR",SI="Wert",xI="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Minute ausgeführt!",kI="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Sekunde ausgeführt!",YI="CRON",QI="Datum",vI="Tage",UI="Tag",bI="Wochentage",$I="Jeden",PI="alle N Tage",WI="jeden x-ten Tag der Woche",RI="alle N Wochentage",JI="alle N Stunden",BI="alle N Minuten",GI="alle N Monate",FI="alle N Sekunden",HI="jeden Tag",VI="jeden Tag der Woche",ZI="jeden Tag der Woche",XI="jede Stunde",KI="jede Minute",qI="jeden Monat",ew="jede Sekunde",tw="Von",sw="Stunden",iw="Intervall",rw="Intervall zwischen",ow="Ungültiger CRON",Mw="Minuten",nw="Monate",aw="Einmal",cw="Zeitraum",uw="Sekunden",lw="Einfach",Nw="Bestimmte Zeit",Lw="bestimmte Tage",jw="bestimmte(r) Tag(e) der Woche",gw="bestimmten Wochentag",Tw="bestimmte Stunden",yw="bestimmte Minuten",Dw="bestimmte Monate",dw="bestimmte Sekunden",zw="Zeit",hw="Bis",Iw="Wizard",ww="alle",Cw="Astronomischer Tag",Aw="Astronomische Nacht",mw="Morgendämmerung",pw="Abenddämmerung",Ow="Goldene Stunde",Ew="Goldene Stundenende",_w="Nadir",fw="Nautische Morgendämmerung",Sw="Nautische Abenddämmerung",xw="Nacht",kw="Nachtende",Yw="Sonnenmittag",Qw="Sonnenaufgang",vw="Sonnenaufgangende",Uw="Sonnenuntergang",bw="Sonnenuntergangstart",$w="am",Pw="um %s",Ww="jeden Tag",Rw="jede Stunde",Jw="jede Minute",Bw="jeden Monat",Gw="jeden %s Tag",Fw="alle %s Stunden",Hw="alle %s Minuten",Vw="alle %s Monate",Zw="alle %s Wochen",Xw="alle %s Jahre",Kw="jede Woche",qw="jedes Jahr",e2="von %s bis %s",t2="noch nie",s2="am %s von %s",i2="am %s und %s von",r2="an jedem Datum von",o2="%s",M2="%s und %s",n2="auf %s",a2="auf %s und %s",c2="an Wochenenden",u2="an Werktagen",l2="wird nicht mehr ausgeführt, weil der Start in der Vergangenheit ist",N2="auf %s",L2="von %s",j2="Ausführen von bis",g2="bis %s",T2="jeden",y2="Bestimmte Zeit",D2="von",d2="Von bis",z2="Zeitintervall",h2="umkehren",I2="keiner",w2="am",C2="Zeitraum",A2="Täglich",m2="Daten",p2="Tag",O2="Jeden",E2="Jeden Tag",_2="Jeden Monat",f2="Jede Woche",S2="Jedes Jahr",x2="Stunden",k2="Minuten",Y2="Monat",Q2="Monatlich",v2="Einmal",U2="Bestimmte Monate",b2="Woche",$2="Wochentage",P2="Wochenende",W2="Wöchentlich",R2="Arbeitstage",J2="Jahr",B2="Jährlich",G2="Bestimmte Zeit",F2="Zeit",H2="zu",V2="Gültigkeit",Z2="von",X2="bis",K2="Ganzer Tag",q2="jeden Monat",eC={"ra_%s links from aliases":"%s Links von Aliasen","ra_%s object(s) processed":"%s Objekt(e) verarbeitet","ra_%s was imported":"%s wurde importiert","ra_Accept license":"Lizenz akzeptieren",ra_Actions:B1,"ra_Add new child object to selected parent":"Dem ausgewählten übergeordneten Objekt ein neues untergeordnetes Objekt hinzufügen","ra_Add objects tree from JSON file":"Objektbaum aus JSON-Datei hinzufügen","ra_Add row":"Zeile hinzufügen","ra_Advanced options":"Erweiterte Optionen","ra_All items are filtered out":"Alle Elemente sind herausgefiltert","ra_All objects":"Alle Objekte",ra_Append:G1,"ra_Append %s entries or replace existing?":"%s Einträge anhängen oder vorhandene ersetzen?","ra_Append or replace?":"Anhängen oder ersetzen?","ra_Are you sure?":"Bist du sicher?","ra_Auto (no custom columns)":"Auto (keine benutzerdefinierten Spalten)","ra_Back to %s":"Zurück zu %s","ra_Background image":"Hintergrundbild",ra_Cancel:F1,"ra_Cannot add items with set filter":"Elemente mit festgelegtem Filter können nicht hinzugefügt werden","ra_Cannot decode license":"Lizenz kann nicht entschlüsselt werden","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Position kann nicht bestimmt werden: Die Systemeinstellungen sind leer und die GPS-Erkennung ist im Browser deaktiviert",'ra_Cannot find "%s"':'Kann "%s" nicht finden','ra_Cannot read "%s"':'"%s" kann nicht gelesen werden',"ra_Cannot read licenses: %s":"Lizenzen können nicht gelesen werden: %s","ra_Cannot retrieve options, as instance is offline":"Optionen können nicht abgerufen werden, da die Instanz offline ist","ra_Cannot update attribute, because not found in the object":"Attribut kann nicht aktualisiert werden, da es nicht im Objekt gefunden wurde","ra_Cannot upload":"Kann nicht hochladen",ra_Categories:H1,"ra_Chained certificate":"Chained Zertifikat","ra_Change color theme":"Farbthema ändern","ra_Changed from":"Geändert von","ra_Channel → State":"Kanal → Zustand","ra_Check license":"Lizenz prüfen",ra_Checked:V1,ra_Clear:Z1,"ra_Clear filter":"Filter löschen","ra_Clear icon":"Symbol löschen","ra_Click to see in full size":"Klicken Sie hier, um die Vollbildansicht zu öffnen.","ra_Click to show":"Zum Anzeigen klicken","ra_Clone current row":"Aktuelle Zeile klonen",ra_Close:X1,"ra_Collapse all nodes":"Alle Knoten zuklappen","ra_Collapse one step node":"Eine Ebene zuklappen",ra_Commercial:K1,ra_Configure:q1,"ra_Configure visible columns":"Spalten Konfigurieren","ra_Confirm deletion of %s":"Das Löschen von %s bestätigen",ra_Connected:ez,ra_Continue:tz,ra_Copied:sz,"ra_Copied %s":'"%s" kopiert',"ra_Copy content":"Inhalte kopieren",ra_Create:iz,"ra_Create alias":"Alias erstellen","ra_Create folder":"Ordner erstellen","ra_Create new folder in %s":'Neuen Ordner in "%s" erstellen',ra_Crop:rz,"ra_Define CRON...":"Definieren Sie CRON ...","ra_Define functions":"Funktionen definieren","ra_Define rooms":"Räume definieren","ra_Define schedule":"Zeitplan definieren","ra_Define schedule...":"Zeitplan definieren ...",ra_Del:oz,ra_Delete:Mz,"ra_Delete current row":"Aktuelle Zeile löschen","ra_Deselect all":"Alles abwählen","ra_Device → Channel → State":"Gerät → Kanal → Zustand","ra_Disable/Enable translation":"Übersetzung deaktivieren/aktivieren",ra_Discard:nz,ra_Disconnected:az,"ra_Do not ask for next 2 hours in this session":"Fragen Sie nicht nach den nächsten 2 Stunden in dieser Sitzung","ra_Do not export values of states":"Keine Zustandswerte exportieren","ra_Do not use let's encrypt":"Let's encrypt nicht verwenden","ra_Docker is not available":"Docker ist nicht verfügbar","ra_Docker is not installed or not running":"Docker ist nicht installiert oder läuft nicht","ra_Double click to reset table layout":"Doppelklicken, um das Tabellenlayout zurückzusetzen","ra_Drag 'n' drop some files here, or click to select files":"Die Datei hierher ziehen und ablegen, oder klicken, um die Datei auszuwählen","ra_Drop file here":"Datei hier ablegen","ra_Drop the files here...":"Datei hier ablegen...","ra_Duplicate name":"Doppelter Name","ra_Edit ACL":"ACL bearbeiten","ra_Edit alias":"Alias bearbeiten","ra_Edit custom config":"Bearbeite Benutzerdefinierte Konfiguration","ra_Edit full path":"Vollständigen Pfad bearbeiten","ra_Edit function":"Funktion bearbeiten","ra_Edit object field":"Objektfeld bearbeiten","ra_Edit role":"Rolle bearbeiten","ra_Edit room":"Raum bearbeiten","ra_Edit value":"Wert bearbeiten","ra_Enter the code from that page here":"Geben Sie den Code von dieser Seite hier ein",ra_Error:cz,"ra_Expand all nodes":"Alle Knoten aufklappen","ra_Expand one step node":"Eine Ebene aufklappen","ra_Expand/Collapse card":"Karte ein-/ausklappen","ra_Export configuration section":"Konfigurationsabschnitt exportieren","ra_Export data to %s file":"Daten in %s-Datei exportieren","ra_Failed to open JSON File":"Fehler beim Öffnen der JSON-Datei","ra_Fallback custom certificates":"Benutzerdefinierte Fallback-Zertifikate","ra_File is too big. Max %sk allowed. Try use SVG.":"Datei ist zu groß. Max %sk erlaubt. Versuchen Sie, SVG zu verwenden.",ra_Filter:uz,"ra_Filter and Data Actions":"Filter- und Datenaktionen","ra_Filter files":"Dateien filtern","ra_Folder name":"Ordnernamen","ra_Folder → Channel → State":"Ordner → Kanal → Zustand","ra_Folder → Device → Channel → State":"Ordner → Gerät → Kanal → Zustand","ra_Folder → State":"Ordner → Zustand","ra_Folders always first":"Ordner immer zuerst",ra_Friday:lz,"ra_From file":"Aus der Datei","ra_From text":"Aus dem Text","ra_Get %s access":"%s Zugriff erhalten","ra_Good luck":"Viel Glück","ra_Hide empty folders":"Leere Ordner ausblenden","ra_If no file will be created in the folder, it will disappear after the browser closed":"Wenn im Ordner keine Datei erstellt wird, verschwindet dieser nach dem Schließen des Browsers","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Wenn die Schaltfläche oben nicht funktioniert, können Sie diese App manuell autorisieren, indem Sie diese URL besuchen","ra_Import and add configuration section":"Konfigurationsabschnitt importieren und hinzufügen","ra_Import and replace configuration section":"Konfigurationsabschnitt importieren und ersetzen","ra_Import data from %s file":"Daten aus %s-Datei importieren","ra_Import from %s":"Von %s importieren","ra_Instance %s is alive":"Instanz %s ist aktiv","ra_Instance %s is not alive":"Instanz %s ist nicht aktiv","ra_Instance is not alive":"Instanz ist nicht am Leben","ra_Invalid CRON":"Ungültiger CRON","ra_Invalid JSON":"Ungültiges JSON","ra_Invalid JSON file.":"Ungültige JSON-Datei.","ra_Invalid JSON format. Expected an array.":"Ungültiges JSON-Format. Array erwartet.","ra_Invalid answer from server":"Ungültige Antwort vom Server","ra_Invalid parent folder!":"Ungültiger übergeordneter Ordner!","ra_Invalid structure":"Ungültige Struktur","ra_JSON editor":"JSON-Editor","ra_Last change":"Letzte Änderung",ra_Latitude:Nz,"ra_License %s":"Lizenz %s","ra_License agreement":"Lizenzvereinbarung","ra_License does not exist":"Lizenz existiert nicht","ra_License expired on %s":"Lizenz am %s abgelaufen",'ra_License for other product "%s"':"Lizenz für anderes Produkt „%s“","ra_License is for version %s, but required version is %s.":"Lizenz ist für Version %s, aber erforderliche Version ist %s.","ra_License must be converted":"Die Lizenz muss auf eine neuere Version konvertiert werden. Sie können dies in Ihrem iobroker.net-Profil tun.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Lizenz im Lizenzmanager nicht gefunden. Möchten Sie Lizenzen von iobroker.net aktualisieren?","ra_Listen on all IPs":"Zugriff von allen IPs zulassen","ra_Load configuration from file":"Konfiguration aus Datei laden",ra_Logout:Lz,ra_Longitude:jz,'ra_May not trigger "updateLicenses"':"Löst möglicherweise nicht „updateLicenses“ aus",ra_Message:gz,ra_Monday:Tz,"ra_Move down":"Nach unten","ra_Move up":"Nach oben",ra_Name:yz,"ra_No data found in file":"Keine Daten in der Datei gefunden","ra_No one license found in license manager":"Im Lizenzmanager wurde keine Lizenz gefunden","ra_No response from admin":"Keine Antwort vom Administrator","ra_No response from the backend":"Keine Antwort vom Backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Nicht-Experten dürfen neue Objekte nur in "0_userdata.0" oder "alias.0" erstellen.',"ra_Not a number":"Keine Nummer","ra_OAuth Client ID":"OAuth-Client-ID","ra_OAuth Client secret":"OAuth-Client-Secret",ra_Objects:Dz,ra_Ok:dz,"ra_On weekdays":"An Wochentagen","ra_Only following structures of objects are available:":"Es stehen nur folgende Objektstrukturen zur Verfügung:","ra_Only selected":"Nur ausgewählt","ra_Owner group":"Besitzergruppe","ra_Owner user":"Besitzer Benutzer","ra_Passwords are not equal!":"Passwörter sind nicht gleich!","ra_Place your files here or click here to open the browse dialog":"Die Dateien hier platzieren oder hier klicken, um den Suchdialog zu öffnen","ra_Please allow popups in your browser for this page!":"Bitte lassen Sie Popups für diese Seite in Ihrem Browser zu!","ra_Please confirm":"Bitte bestätigen","ra_Please create license":"Bitte erstellen Sie eine Lizenz","ra_Please enter the license":"Bitte die Lizenz eingeben","ra_Please select file...":"Bitte Datei auswählen...","ra_Please select object ID...":"Bitte Objekt-ID auswählen...","ra_Port could be used by %s":"Port könnte von %s verwendet werden","ra_Port is already used by %s":"Port wird bereits von %s verwendet","ra_Press ENTER Key to add new item":"Die Eingabetaste drücken, um ein neues Element hinzuzufügen","ra_Private certificate":"Privates Zertifikat",ra_Product:zz,"ra_Public certificate":"Öffentliches Zertifikat","ra_Quality code":"Qualität","ra_Refresh tree":"Baum aktualisieren","ra_Reload files":"Dateien neu laden",ra_Rename_Move_Copy:hz,"ra_Renew %s access":"%s Zugriff erneuern",ra_Repeat:Iz,ra_Replace:wz,"ra_Request timed out":"Zeitüberschreitung der Anforderung","ra_Restrict to folder":"Auf Ordner beschränken",ra_Root:Cz,ra_Saturday:Az,ra_Save:mz,"ra_Save and close":"Speichern und schließen","ra_Save configuration to file":"Konfiguration in Datei speichern","ra_Save objects tree as JSON file":"Objektbaum als JSON-Datei speichern","ra_Select all":"Alle auswählen","ra_Select color":"Wähle Farbe","ra_Select predefined icon":"Vordefiniertes Symbol auswählen","ra_Select type of export":"Die Art des Exports auswählen ",ra_Selected:pz,"ra_Selected %s object(s)":"Ausgewählt %s Objekt(en)","ra_Serial number (UUID)":"Seriennummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Seriennummer (UUID) „%s“ in der Lizenz gilt für ein anderes Gerät.","ra_Session will expire in %s seconds. Continue?":"Die Sitzung läuft in %s Sekunden ab. Fortfahren?","ra_Show all folders":"Alle Ordner anzeigen","ra_Show lines between rows":"Linien zwischen Zeilen anzeigen","ra_Show/Hide object descriptions":"Objektbeschreibungen ein-/ausblenden","ra_Show/hide filter input":"Filtereingabe ein-/ausblenden","ra_Some data are not stored. Discard?":"Einige Daten werden nicht gespeichert. Verwerfen?",ra_States:Oz,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Erfolgreich autorisiert. Token gültig bis %s und wird automatisch erneuert.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Erfolgreich autorisiert. Token gültig bis %s, kann aber ablaufen, da die Instanz nicht ausgeführt wird.","ra_Suitable license not found in license manager":"Passende Lizenz im Lizenzmanager nicht gefunden",ra_Sunday:Ez,"ra_Suppress question for next %s minutes":"Frage für die nächsten %s Minuten unterdrücken","ra_System language":"Systemsprache","ra_Take browser position":"Position vom Browser einnehmen","ra_Take position from system settings":"Position aus den Systemeinstellungen übernehmen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Die Experten können Objekte überall erstellen, außer auf der zweiten Ebene (z. B. "vis.0" oder "javascript.0").',"ra_The page you are looking for was not found":"Die gesuchte Seite wurde nicht gefunden","ra_The schedule will be executed every minute. Are you sure?":"Der Zeitplan wird jede Minute ausgeführt. Sind Sie sicher?","ra_The schedule will be executed every second. Are you sure?":"Der Zeitplan wird jede Sekunde ausgeführt. Sind Sie sicher?",ra_Thursday:_z,ra_Timestamp:fz,"ra_Toggle expert mode":"Expertenmodus umschalten","ra_Toggle the states view":"Statusansicht umschalten","ra_Toggle view mode":"Ansichtsmodus umschalten","ra_Too big":"Zu groß","ra_Too small":"Zu klein","ra_Transparent dialog":"Transparenter Dialog",ra_Tuesday:Sz,"ra_Unknown error":"Unbekannter Fehler","ra_Unknown error!":"Unbekannter Fehler!",ra_Update:xz,"ra_Upload file":"Datei hochladen","ra_Use all available let's encrypt certificates":"Alle verfügbaren Zertifikate von Let's encrypt benutzen","ra_Use iobroker.acme adapter for letsencrypt certificates":"ioBroker.acme-Adapter für letsencrypt-Zertifikate verwenden","ra_Use system settings for position":"Systemeinstellungen für die Position verwenden","ra_Used system settings":"Systemeinstellungen","ra_User files":"Benutzerdaten",ra_ValidTill:kz,ra_Value:Yz,ra_Version:Qz,"ra_View file":"Datei ansehen","ra_View: %s":"Anschauen: %s",ra_Wednesday:vz,ra_Width:Uz,"ra_YAML editor":"YAML-Editor",ra_Yes:bz,"ra_You can export all objects or just the selected branch.":"Sie können alle Objekte oder nur den ausgewählten Zweig exportieren.","ra_You can filter entries by entering here some text":"Sie können Einträge filtern, indem Sie hier Text eingeben","ra_You can use * as wildcard":"Sie können * als Platzhalter verwenden",ra___different__:$z,ra_aclEveryone_read_object:Pz,ra_aclEveryone_read_state:Wz,ra_aclEveryone_write_object:Rz,ra_aclEveryone_write_state:Jz,ra_aclGroup_read_object:Bz,ra_aclGroup_read_state:Gz,ra_aclGroup_write_object:Fz,ra_aclGroup_write_state:Hz,ra_aclOwner_read_object:Vz,ra_aclOwner_read_state:Zz,ra_aclOwner_write_object:Xz,ra_aclOwner_write_state:Kz,ra_buttons:qz,ra_changedFrom:eh,ra_close:th,ra_create_boolean_state:sh,ra_create_channel:ih,ra_create_device:rh,ra_create_number_state:oh,ra_create_state:Mh,ra_create_string_state:nh,ra_daysShortText:ah,ra_dow_Fr:ch,ra_dow_Mo:uh,ra_dow_Sa:lh,ra_dow_Su:Nh,ra_dow_Th:Lh,ra_dow_Tu:jh,ra_dow_We:gh,ra_expertMode:Th,ra_false:yh,ra_fileType_all:Dh,ra_fileType_audio:dh,ra_fileType_code:zh,ra_fileType_images:hh,ra_fileType_txt:Ih,ra_fileType_video:wh,"ra_fileType_video,":"Video",ra_filter_customs:Ch,ra_filter_customs_without:Ah,ra_filter_func:mh,ra_filter_id:ph,ra_filter_name:Oh,ra_filter_role:Eh,ra_filter_room:_h,ra_filter_type:fh,"ra_import data from %s file":"Daten aus %s-Datei importieren",ra_invalidConfig:Sh,ra_lastChange:xh,ra_locally:kh,ra_month_Apr:Yh,ra_month_Aug:Qh,ra_month_Dec:vh,ra_month_Feb:Uh,ra_month_Jan:bh,ra_month_Jul:$h,ra_month_Jun:Ph,ra_month_Mai:Wh,ra_month_Mar:Rh,ra_month_Nov:Jh,ra_month_Oct:Bh,ra_month_Sep:Gh,ra_months_Apr:Fh,ra_months_Aug:Hh,ra_months_Dec:Vh,ra_months_Feb:Zh,ra_months_Jan:Xh,ra_months_Jul:Kh,ra_months_Jun:qh,ra_months_Mai:eI,ra_months_Mar:tI,ra_months_Nov:sI,ra_months_Oct:iI,ra_months_Sep:rI,"ra_no confirm for 5 mins":"5 Minuten lang keine Bestätigung",ra_none:oI,ra_object_changed_by:MI,ra_object_changed_by_user:nI,ra_otherConfig:aI,ra_qualityCode:cI,ra_repeat:uI,ra_select_folder_hint:lI,ra_show_all:NI,ra_state_changed_by:LI,ra_state_changed_from:jI,ra_timestamp:gI,ra_tooltip_ack:TI,ra_tooltip_comment:yI,ra_tooltip_copyState:DI,ra_tooltip_ctrlForLink:dI,ra_tooltip_customConfig:zI,ra_tooltip_deleteObject:hI,ra_tooltip_editObject:II,ra_tooltip_editState:wI,ra_tooltip_expire:CI,ra_tooltip_from:AI,ra_tooltip_lc:mI,ra_tooltip_quality:pI,ra_tooltip_ts:OI,ra_tooltip_user:EI,ra_tooltip_value:_I,ra_true:fI,"ra_use seconds":"Sekunden benutzen",ra_val:SI,"ra_via internet":"übers Internet",ra_warning_every_minute:xI,ra_warning_every_second:kI,sc_cron:YI,sc_date:QI,sc_dates:vI,sc_dow:UI,sc_dows:bI,sc_every:$I,sc_everyN_dates:PI,sc_everyN_dow:WI,sc_everyN_dows:RI,sc_everyN_hours:JI,sc_everyN_minutes:BI,sc_everyN_months:GI,sc_everyN_seconds:FI,sc_every_dates:HI,sc_every_dow:VI,sc_every_dows:ZI,sc_every_hours:XI,sc_every_minutes:KI,sc_every_months:qI,sc_every_seconds:ew,sc_from:tw,sc_hours:sw,sc_interval:iw,sc_intervalBetween:rw,sc_invalid_cron:ow,sc_minutes:Mw,sc_months:nw,sc_once:aw,sc_period:cw,sc_seconds:uw,sc_simple:lw,sc_specific:Nw,sc_specific_dates:Lw,sc_specific_dow:jw,sc_specific_dows:gw,sc_specific_hours:Tw,sc_specific_minutes:yw,sc_specific_months:Dw,sc_specific_seconds:dw,sc_time:zw,sc_to:hw,sc_wizard:Iw,sch_all:ww,sch_astroDay:Cw,sch_astroNight:Aw,sch_astro_dawn:mw,sch_astro_dusk:pw,sch_astro_goldenHour:Ow,sch_astro_goldenHourEnd:Ew,sch_astro_nadir:_w,sch_astro_nauticalDawn:fw,sch_astro_nauticalDusk:Sw,sch_astro_night:xw,sch_astro_nightEnd:kw,sch_astro_solarNoon:Yw,sch_astro_sunrise:Qw,sch_astro_sunriseEnd:vw,sch_astro_sunset:Uw,sch_astro_sunsetStart:bw,sch_at:$w,sch_desc_atTime:Pw,sch_desc_everyDay:Ww,sch_desc_everyHour:Rw,sch_desc_everyMinute:Jw,sch_desc_everyMonth:Bw,sch_desc_everyNDay:Gw,sch_desc_everyNHours:Fw,sch_desc_everyNMinutes:Hw,sch_desc_everyNMonths:Vw,sch_desc_everyNWeeks:Zw,sch_desc_everyNYears:Xw,sch_desc_everyWeek:Kw,sch_desc_everyYear:qw,sch_desc_intervalFromTo:e2,sch_desc_never:t2,sch_desc_onDate:s2,sch_desc_onDates:i2,sch_desc_onEveryDate:r2,sch_desc_onMonth:o2,sch_desc_onMonths:M2,sch_desc_onWeekday:n2,sch_desc_onWeekdays:a2,sch_desc_onWeekends:c2,sch_desc_onWorkdays:u2,sch_desc_onceInPast:l2,sch_desc_once_on:N2,sch_desc_validFrom:L2,sch_desc_validFromTo:j2,sch_desc_validTo:g2,sch_every:T2,sch_exactTime:y2,sch_from:D2,sch_fromTo:d2,sch_intervalTime:z2,sch_invert:h2,sch_no_one:I2,sch_on:w2,sch_period:C2,sch_periodDaily:A2,sch_periodDates:m2,sch_periodDay:p2,sch_periodEvery:O2,sch_periodEveryDay:E2,sch_periodEveryMonth:_2,sch_periodEveryWeek:f2,sch_periodEveryYear:S2,sch_periodHours:x2,sch_periodMinutes:k2,sch_periodMonth:Y2,sch_periodMonthly:Q2,sch_periodOnce:v2,sch_periodSpecificMonths:U2,sch_periodWeek:b2,sch_periodWeekdays:$2,sch_periodWeekend:P2,sch_periodWeekly:W2,sch_periodWorkdays:R2,sch_periodYear:J2,sch_periodYearly:B2,sch_specificTime:G2,sch_time:F2,sch_to:H2,sch_valid:V2,sch_validFrom:Z2,sch_validTo:X2,sch_wholeDay:K2,sch_yearEveryMonth:q2},tC="Действия",sC="Добавить",iC="Отмена",rC="Категории",oC="Проверено",MC="Удалить",nC="Закрыть",aC="Коммерческая",cC="Настроить",uC="Соединение установлено",lC="Продолжать",NC="скопировано",LC="Создать",jC="Обрезать",gC="Delete",TC="Удалить",yC="Отказаться",DC="Отключено",dC="Ошибка",zC="Фильтр",hC="Пятница",IC="Широта",wC="Выйти",CC="Долгота",AC="Сообщение",mC="Понедельник",pC="Имя",OC="Объекты",EC="Ok",_C="Продукт",fC="Переименовать/Переместить/Копировать",SC="Повторение",xC="Заменять",kC="Начало",YC="Суббота",QC="Сохранить",vC="выбранный",UC="Состояния",bC="Воскресенье",$C="Четверг",PC="Времени",WC="Вторник",RC="Обновить",JC="Годен до",BC="Значение",GC="Версия",FC="Среда",HC="Ширина",VC="Да",ZC="разное",XC="Каждый может читать объект",KC="Каждый может читать состояние",qC="Каждый может написать объект",eA="Каждый может написать состояние",tA="Группа может читать объект",sA="Группа может читать состояние",iA="Группа может писать объект",rA="Группа может записывать состояние",oA="Владелец может читать объект",MA="Владелец может читать состояние",nA="Владелец может писать объект",aA="Владелец может писать состояние",cA="Кнопки",uA="Изменено с",lA="Закрыть",NA="Создать логическое состояние",LA="Создать канал",jA="Создать устройство",gA="Создать состояние номера",TA="Создать состояние",yA="Создать состояние строки",DA="д.",dA="Пт",zA="Пн",hA="Сб",IA="Вс",wA="Чт",CA="Вт",AA="Ср",mA="Экспертный режим",pA="ЛОЖЬ",OA="Все файлы",EA="Аудио",_A="Код/JSON",fA="Картинки",SA="Текст",xA="видео",kA="настройки",YA="без",QA="функция",vA="ID",UA="Имя",bA="роль",$A="комната",PA="Тип",WA="Неверные настройки",RA="Последнее изменение",JA="локально",BA="Апр",GA="Авг",FA="Дек",HA="Фев",VA="Янв",ZA="Июл",XA="Июн",KA="Май",qA="Мрт",em="Ноя",tm="Окт",sm="Сен",im="Апр",rm="Авг",om="Дек",Mm="Фев",nm="Янв",am="Июнь",cm="Июль",um="Май",lm="Март",Nm="Ноя",Lm="Окт",jm="Сен",gm="ничего",Tm="Объект изменен",ym="Последний раз объект изменен в",Dm="Настройки из другого адаптера %s",dm="Код качества",zm="повтор",hm="Чтобы выбрать папку, просто удерживайте клавишу «Shift», щелкнув папку.",Im="Показать все",wm="Состояние изменено",Cm="Объект изменен с",Am="Отметка времени",mm="Подтверждено",pm="Комментарий",Om="Скопируйте значение состояния",Em="Удерживайте клавишу Cltr/⌘, чтобы открыть ссылку",_m="Пользовательские настройки",fm="Удалить объект",Sm="Редактировать объект",xm="Изменить значение состояния",km="Истекает через",Ym="От",Qm="Последнее изменение",vm="Качество",Um="Отметка времени",bm="пользователь",$m="Значение",Pm="истинный",Wm="Значение",Rm="Внимание: задание CRON будет запускаться каждую минуту в течение указанного периода!",Jm="Внимание: задание CRON будет выполняться каждую секунду в течение указанного периода!",Bm="CRON",Gm="Дата",Fm="Даты",Hm="День",Vm="День недели",Zm="каждый(ую/ые)",Xm="каждый N день",Km="каждый N-й день недели",qm="каждый N день недели",ep="каждые N часов",tp="каждые N минут",sp="каждые N месяцев",ip="каждые N секунд",rp="каждый день",op="Каждый день недели",Mp="каждый день недели",np="каждый час",ap="каждую минуту",cp="каждый месяц",up="каждую секунду",lp="От",Np="часы",Lp="Интервал",jp="Интервал между",gp="Неверный CRON",Tp="минуты",yp="Месяцы",Dp="один раз",dp="Период",zp="секунды",hp="Просто",Ip="Конкретное время",wp="конкретные даты",Cp="конкретный день(а) недели",Ap="конкретный день недели",mp="конкретные часы",pp="конкретные минуты",Op="конкретные месяцы",Ep="конкретные секунды",_p="Время",fp="До",Sp="Форма",xp="все",kp="днём",Yp="ночью",Qp="Рассвет",vp="Сумерки",Up="Золотой час",bp="Конец золотого часа",$p="Надир",Pp="Морской рассвет",Wp="Морские сумерки",Rp="Ночь",Jp="Конец ночи",Bp="Солнечный полдень",Gp="Восход",Fp="Восход солнца",Hp="Заход солнца",Vp="Начало заката",Zp="дата",Xp="в %s",Kp="каждый день",qp="каждый час",e3="каждую минуту",t3="каждый месяц",s3="каждый %s день",i3="каждый %s часов",r3="каждые %s минут",o3="каждые %s месяцев",M3="каждые %s недель",n3="каждые %s лет",a3="каждую неделю",c3="каждый год",u3="от %s до %s",l3="никогда",N3="%s %s",L3="%s и %s",j3="в каждый день",g3="%s",T3="%s и %s",y3="%s",D3="%s и %s",d3="на выходных",z3="в рабочие дни",h3="не будет больше выполняться, потому что начало в прошлом",I3="%s",w3="%s",C3="Выполнить с",A3="%s",m3="каждый",p3="Конкретное время",O3="от",E3="От и до",_3="Интервал времени",f3="инвертировать",S3="никакой",x3="на",k3="период",Y3="Ежедневно",Q3="Даты",v3="День",U3="каждый",b3="Каждый день",$3="Каждый месяц",P3="Каждую неделю",W3="Каждый год",R3="часов",J3="минут",B3="месяц",G3="ежемесячно",F3="однажды",H3="Конкретные месяцы",V3="Неделю",Z3="Будние дни",X3="выходные",K3="еженедельно",q3="Рабочие дни",eO="Год",tO="каждый год",sO="Конкретное время",iO="Время",rO="в",oO="действительный",MO="от",nO="в",aO="Весь день",cO="каждый месяц",uO={"ra_%s links from aliases":"%s ссылок из псевдонимов","ra_%s object(s) processed":"Объектов обработано: %s","ra_%s was imported":"%s был импортирован","ra_Accept license":"Принять лицензию",ra_Actions:tC,"ra_Add new child object to selected parent":"Добавить новый дочерний объект к выбранному родительскому объекту","ra_Add objects tree from JSON file":"Добавить дерево объектов из файла JSON","ra_Add row":"Добавить ряд","ra_Advanced options":"Расширенные настройки","ra_All items are filtered out":"Все элементы отфильтрованы","ra_All objects":"Все объекты",ra_Append:sC,"ra_Append %s entries or replace existing?":"Добавить записи %s или заменить существующие?","ra_Append or replace?":"Дополнить или заменить?","ra_Are you sure?":"Вы уверены?","ra_Auto (no custom columns)":"Авто (без настраиваемых столбцов)","ra_Back to %s":"Вернуться к %s","ra_Background image":"Фоновая картинка",ra_Cancel:iC,"ra_Cannot add items with set filter":"Невозможно добавить элементы с установленным фильтром","ra_Cannot decode license":"Не могу декодировать лицензию","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Невозможно определить местоположение: системные настройки пусты, а обнаружение GPS отключено в браузере.",'ra_Cannot find "%s"':'Не могу найти "%s"','ra_Cannot read "%s"':'Не могу прочитать "%s"',"ra_Cannot read licenses: %s":"Невозможно прочитать лицензии: %s","ra_Cannot retrieve options, as instance is offline":"Невозможно получить параметры, так как экземпляр находится в автономном режиме.","ra_Cannot update attribute, because not found in the object":"Невозможно обновить атрибут, потому что он не найден в объекте","ra_Cannot upload":"Невозможно загрузить",ra_Categories:rC,"ra_Chained certificate":"Chained сертификат","ra_Change color theme":"Изменить цветовую тему","ra_Changed from":"Изменено","ra_Channel → State":"Канал → Состояние","ra_Check license":"Проверить лицензию",ra_Checked:oC,ra_Clear:MC,"ra_Clear filter":"Очистить фильтр","ra_Clear icon":"Очистить значок","ra_Click to see in full size":"Нажмите, чтобы посмотреть в полном размере","ra_Click to show":"Нажмите, чтобы показать","ra_Clone current row":"Клонировать текущую строку",ra_Close:nC,"ra_Collapse all nodes":"Свернуть все узлы","ra_Collapse one step node":"Свернуть один уровень",ra_Commercial:aC,ra_Configure:cC,"ra_Configure visible columns":"Настроить видимые столбцы","ra_Confirm deletion of %s":"Подтвердите удаление %s",ra_Connected:uC,ra_Continue:lC,ra_Copied:NC,"ra_Copied %s":'Скопировано "%s"',"ra_Copy content":"Копировать содержимое",ra_Create:LC,"ra_Create alias":"Создать псевдоним","ra_Create folder":"Создать папку","ra_Create new folder in %s":"Создать новую папку в %s",ra_Crop:jC,"ra_Define CRON...":"Определите CRON...","ra_Define functions":"Задать функции","ra_Define rooms":"Задать комнаты","ra_Define schedule":"Задать расписание","ra_Define schedule...":"Определить расписание ...",ra_Del:gC,ra_Delete:TC,"ra_Delete current row":"Удалить текущую строку","ra_Deselect all":"Убрать выбор везде","ra_Device → Channel → State":"Устройство → Канал → Состояние","ra_Disable/Enable translation":"Включить/отключить перевод",ra_Discard:yC,ra_Disconnected:DC,"ra_Do not ask for next 2 hours in this session":"Не спрашивайте о следующих 2 часах в этом сеансе","ra_Do not export values of states":"Не экспортировать значения состояний","ra_Do not use let's encrypt":"Не использовать Let’s Encrypt","ra_Docker is not available":"Докер недоступен","ra_Docker is not installed or not running":"Docker не установлен или не запущен","ra_Double click to reset table layout":"Дважды щелкните, чтобы сбросить макет таблицы","ra_Drag 'n' drop some files here, or click to select files":"Перетащите сюда несколько файлов или щелкните, чтобы выбрать файлы","ra_Drop file here":"Перетащите файл сюда","ra_Drop the files here...":"Перетащите файл сюда ...","ra_Duplicate name":"Повторяющееся имя","ra_Edit ACL":"Изменить ACL-список","ra_Edit alias":"Изменить псевдоним","ra_Edit custom config":"Редактировать настраиваемую конфигурацию","ra_Edit full path":"Изменить полный путь","ra_Edit function":"Изменить функцию","ra_Edit object field":"Поле редактирования объекта","ra_Edit role":"Изменить роль","ra_Edit room":"Редактировать комнату","ra_Edit value":"Изменить значение","ra_Enter the code from that page here":"Введите код с этой страницы здесь",ra_Error:dC,"ra_Expand all nodes":"Развернуть все узлы","ra_Expand one step node":"Открыть один уровень","ra_Expand/Collapse card":"Развернуть/Свернуть карточку","ra_Export configuration section":"Раздел конфигурации экспорта","ra_Export data to %s file":"Экспорт данных в файл %s","ra_Failed to open JSON File":"Не удалось открыть файл JSON","ra_Fallback custom certificates":"Резервные пользовательские сертификаты","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл слишком большой. Разрешено максимальное количество %sk. Попробуйте использовать SVG.",ra_Filter:zC,"ra_Filter and Data Actions":"Фильтрация и действия с данными","ra_Filter files":"Фильтровать файлы","ra_Folder name":"Имя папки","ra_Folder → Channel → State":"Папка → Канал → Состояние","ra_Folder → Device → Channel → State":"Папка → Устройство → Канал → Состояние","ra_Folder → State":"Папка → Состояние","ra_Folders always first":"Папки всегда на первом месте",ra_Friday:hC,"ra_From file":"Из файла","ra_From text":"Из текста","ra_Get %s access":"Получить %s доступ","ra_Good luck":"Удачи","ra_Hide empty folders":"Скрыть пустые папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Если в папке не будет создан файл, он исчезнет после закрытия браузера.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Если кнопка выше не работает, вы можете вручную авторизовать это приложение, перейдя по этой ссылке.","ra_Import and add configuration section":"Импорт и добавление раздела конфигурации","ra_Import and replace configuration section":"Импорт и замена раздела конфигурации","ra_Import data from %s file":"Импорт данных из файла %s","ra_Import from %s":"Импорт из %s","ra_Instance %s is alive":"Экземпляр %s работает","ra_Instance %s is not alive":"Экземпляр %s не работает","ra_Instance is not alive":"Экземпляр не живой","ra_Invalid CRON":"Неверный CRON","ra_Invalid JSON":"Неверный JSON","ra_Invalid JSON file.":"Неверный файл JSON.","ra_Invalid JSON format. Expected an array.":"Недопустимый формат JSON. Ожидается массив.","ra_Invalid answer from server":"Неверный ответ от сервера","ra_Invalid parent folder!":"Неверная родительская папка!","ra_Invalid structure":"Неверная структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Последнее изменение",ra_Latitude:IC,"ra_License %s":"Лицензия %s","ra_License agreement":"Лицензионное соглашение","ra_License does not exist":"Лицензия не существует","ra_License expired on %s":"Срок действия лицензии истек %s",'ra_License for other product "%s"':'Лицензия на другой продукт "%s"',"ra_License is for version %s, but required version is %s.":"Лицензия предназначена для версии %s, но необходима версия %s.","ra_License must be converted":"Лицензия должна быть преобразована в более новую версию. Вы можете сделать это в своем профиле на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Лицензия не найдена в диспетчере лицензий. Вы хотите обновить лицензии от iobroker.net?","ra_Listen on all IPs":"Слушать на всех IP","ra_Load configuration from file":"Загрузить конфигурацию из файла",ra_Logout:wC,ra_Longitude:CC,'ra_May not trigger "updateLicenses"':"Не может запускать «updateLicenses»",ra_Message:AC,ra_Monday:mC,"ra_Move down":"Вниз","ra_Move up":"Вверх",ra_Name:pC,"ra_No data found in file":"Данные в файле не найдены","ra_No one license found in license manager":"В менеджере лицензий не найдена ни одна лицензия","ra_No response from admin":"Нет ответа от администратора","ra_No response from the backend":"Нет ответа от бэкэнда",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Не-эксперты могут создавать новые объекты только в «0_userdata.0» или «alias.0».","ra_Not a number":"Не число","ra_OAuth Client ID":"Идентификатор клиента OAuth","ra_OAuth Client secret":"Секрет клиента OAuth",ra_Objects:OC,ra_Ok:EC,"ra_On weekdays":"На выходных","ra_Only following structures of objects are available:":"Доступны только следующие структуры объектов:","ra_Only selected":"Только выбранные","ra_Owner group":"Группа владельцев","ra_Owner user":"Пользователь-владелец","ra_Passwords are not equal!":"Пароли не равны!","ra_Place your files here or click here to open the browse dialog":"Поместите свои файлы сюда или щелкните здесь, чтобы открыть диалоговое окно выбора","ra_Please allow popups in your browser for this page!":"Пожалуйста, разрешите всплывающие окна в вашем браузере для этой страницы!","ra_Please confirm":"Пожалуйста подтвердите","ra_Please create license":"Пожалуйста, создайте лицензию","ra_Please enter the license":"Пожалуйста, введите лицензию","ra_Please select file...":"Пожалуйста, выберите файл...","ra_Please select object ID...":"Пожалуйста, выберите идентификатор объекта ...","ra_Port could be used by %s":"Порт может использоваться %s","ra_Port is already used by %s":"Порт уже используется %s","ra_Press ENTER Key to add new item":"Нажмите клавишу ENTER, чтобы добавить новый элемент.","ra_Private certificate":"Частный сертификат",ra_Product:_C,"ra_Public certificate":"Публичный сертификат","ra_Quality code":"Валидность","ra_Refresh tree":"Обновить дерево","ra_Reload files":"Обновить",ra_Rename_Move_Copy:fC,"ra_Renew %s access":"Продлить доступ %s",ra_Repeat:SC,ra_Replace:xC,"ra_Request timed out":"Истекло время запроса","ra_Restrict to folder":"Ограничить папкой",ra_Root:kC,ra_Saturday:YC,ra_Save:QC,"ra_Save and close":"Сохранить и закрыть","ra_Save configuration to file":"Сохранить конфигурацию в файл","ra_Save objects tree as JSON file":"Сохранить дерево объектов как файл JSON","ra_Select all":"Выбрать все","ra_Select color":"Выберите цвет","ra_Select predefined icon":"Выберите предопределенный значок","ra_Select type of export":"Выберите тип экспорта",ra_Selected:vC,"ra_Selected %s object(s)":"Объектов: %s","ra_Serial number (UUID)":"Серийный номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Серийный номер (UUID) «%s» в лицензии предназначен для другого устройства.","ra_Session will expire in %s seconds. Continue?":"Сессия истечет через %s секунд. Продолжить?","ra_Show all folders":"Показать все папки","ra_Show lines between rows":"Показать линии между строками","ra_Show/Hide object descriptions":"Показать/скрыть описания объектов","ra_Show/hide filter input":"Показать/скрыть ввод фильтра","ra_Some data are not stored. Discard?":"Некоторые данные не сохранились. Отказаться?",ra_States:UC,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизация выполнена успешно. Токен действителен до %s и будет автоматически продлен.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизация выполнена успешно. Токен действителен до %s, но его срок действия может истечь, так как экземпляр не запущен.","ra_Suitable license not found in license manager":"Подходящая лицензия не найдена в менеджере лицензий",ra_Sunday:bC,"ra_Suppress question for next %s minutes":"Скрыть вопрос на следующие %s минут(ы)","ra_System language":"Язык системы","ra_Take browser position":"Взять позицию из браузера","ra_Take position from system settings":"Занять позицию из системных настроек",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Эксперты могут создавать объекты везде, кроме второго уровня (например, «vis.0» или «javascript.0»).","ra_The page you are looking for was not found":"Страница, которую вы ищете, не найдена","ra_The schedule will be executed every minute. Are you sure?":"Расписание будет выполняться каждую минуту. Вы уверены?","ra_The schedule will be executed every second. Are you sure?":"Расписание будет выполняться каждую секунду. Вы уверены?",ra_Thursday:$C,ra_Timestamp:PC,"ra_Toggle expert mode":"Переключить экспертный режим","ra_Toggle the states view":"Переключить режим просмотра состояний","ra_Toggle view mode":"Переключить режим просмотра","ra_Too big":"Слишком большое","ra_Too small":"Слишком маленькое","ra_Transparent dialog":"Прозрачный диалог",ra_Tuesday:WC,"ra_Unknown error":"Неизвестная ошибка","ra_Unknown error!":"Неизвестная ошибка!",ra_Update:RC,"ra_Upload file":"Загрузить файл","ra_Use all available let's encrypt certificates":"Использовать все доступные сертификаты Let’s encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Используйте адаптер iobroker.acme для сертификатов letsencrypt","ra_Use system settings for position":"Использовать системные настройки для позиции","ra_Used system settings":"Системные настройки","ra_User files":"Файлы пользователя",ra_ValidTill:JC,ra_Value:BC,ra_Version:GC,"ra_View file":"Посмотреть файл","ra_View: %s":"Просмотр: %s",ra_Wednesday:FC,ra_Width:HC,"ra_YAML editor":"Редактор YAML",ra_Yes:VC,"ra_You can export all objects or just the selected branch.":"Вы можете экспортировать все объекты или только выбранную ветвь.","ra_You can filter entries by entering here some text":"Вы можете отфильтровать записи, введя здесь текст","ra_You can use * as wildcard":"Вы можете использовать * в качестве подстановочного знака",ra___different__:ZC,ra_aclEveryone_read_object:XC,ra_aclEveryone_read_state:KC,ra_aclEveryone_write_object:qC,ra_aclEveryone_write_state:eA,ra_aclGroup_read_object:tA,ra_aclGroup_read_state:sA,ra_aclGroup_write_object:iA,ra_aclGroup_write_state:rA,ra_aclOwner_read_object:oA,ra_aclOwner_read_state:MA,ra_aclOwner_write_object:nA,ra_aclOwner_write_state:aA,ra_buttons:cA,ra_changedFrom:uA,ra_close:lA,ra_create_boolean_state:NA,ra_create_channel:LA,ra_create_device:jA,ra_create_number_state:gA,ra_create_state:TA,ra_create_string_state:yA,ra_daysShortText:DA,ra_dow_Fr:dA,ra_dow_Mo:zA,ra_dow_Sa:hA,ra_dow_Su:IA,ra_dow_Th:wA,ra_dow_Tu:CA,ra_dow_We:AA,ra_expertMode:mA,ra_false:pA,ra_fileType_all:OA,ra_fileType_audio:EA,ra_fileType_code:_A,ra_fileType_images:fA,ra_fileType_txt:SA,ra_fileType_video:xA,"ra_fileType_video,":"видео",ra_filter_customs:kA,ra_filter_customs_without:YA,ra_filter_func:QA,ra_filter_id:vA,ra_filter_name:UA,ra_filter_role:bA,ra_filter_room:$A,ra_filter_type:PA,"ra_import data from %s file":"Импортировать данные из файла %s",ra_invalidConfig:WA,ra_lastChange:RA,ra_locally:JA,ra_month_Apr:BA,ra_month_Aug:GA,ra_month_Dec:FA,ra_month_Feb:HA,ra_month_Jan:VA,ra_month_Jul:ZA,ra_month_Jun:XA,ra_month_Mai:KA,ra_month_Mar:qA,ra_month_Nov:em,ra_month_Oct:tm,ra_month_Sep:sm,ra_months_Apr:im,ra_months_Aug:rm,ra_months_Dec:om,ra_months_Feb:Mm,ra_months_Jan:nm,ra_months_Jul:am,ra_months_Jun:cm,ra_months_Mai:um,ra_months_Mar:lm,ra_months_Nov:Nm,ra_months_Oct:Lm,ra_months_Sep:jm,"ra_no confirm for 5 mins":"не спрашивать подтверждения в течение 5 минут",ra_none:gm,ra_object_changed_by:Tm,ra_object_changed_by_user:ym,ra_otherConfig:Dm,ra_qualityCode:dm,ra_repeat:zm,ra_select_folder_hint:hm,ra_show_all:Im,ra_state_changed_by:wm,ra_state_changed_from:Cm,ra_timestamp:Am,ra_tooltip_ack:mm,ra_tooltip_comment:pm,ra_tooltip_copyState:Om,ra_tooltip_ctrlForLink:Em,ra_tooltip_customConfig:_m,ra_tooltip_deleteObject:fm,ra_tooltip_editObject:Sm,ra_tooltip_editState:xm,ra_tooltip_expire:km,ra_tooltip_from:Ym,ra_tooltip_lc:Qm,ra_tooltip_quality:vm,ra_tooltip_ts:Um,ra_tooltip_user:bm,ra_tooltip_value:$m,ra_true:Pm,"ra_use seconds":"секунды",ra_val:Wm,"ra_via internet":"через интернет",ra_warning_every_minute:Rm,ra_warning_every_second:Jm,sc_cron:Bm,sc_date:Gm,sc_dates:Fm,sc_dow:Hm,sc_dows:Vm,sc_every:Zm,sc_everyN_dates:Xm,sc_everyN_dow:Km,sc_everyN_dows:qm,sc_everyN_hours:ep,sc_everyN_minutes:tp,sc_everyN_months:sp,sc_everyN_seconds:ip,sc_every_dates:rp,sc_every_dow:op,sc_every_dows:Mp,sc_every_hours:np,sc_every_minutes:ap,sc_every_months:cp,sc_every_seconds:up,sc_from:lp,sc_hours:Np,sc_interval:Lp,sc_intervalBetween:jp,sc_invalid_cron:gp,sc_minutes:Tp,sc_months:yp,sc_once:Dp,sc_period:dp,sc_seconds:zp,sc_simple:hp,sc_specific:Ip,sc_specific_dates:wp,sc_specific_dow:Cp,sc_specific_dows:Ap,sc_specific_hours:mp,sc_specific_minutes:pp,sc_specific_months:Op,sc_specific_seconds:Ep,sc_time:_p,sc_to:fp,sc_wizard:Sp,sch_all:xp,sch_astroDay:kp,sch_astroNight:Yp,sch_astro_dawn:Qp,sch_astro_dusk:vp,sch_astro_goldenHour:Up,sch_astro_goldenHourEnd:bp,sch_astro_nadir:$p,sch_astro_nauticalDawn:Pp,sch_astro_nauticalDusk:Wp,sch_astro_night:Rp,sch_astro_nightEnd:Jp,sch_astro_solarNoon:Bp,sch_astro_sunrise:Gp,sch_astro_sunriseEnd:Fp,sch_astro_sunset:Hp,sch_astro_sunsetStart:Vp,sch_at:Zp,sch_desc_atTime:Xp,sch_desc_everyDay:Kp,sch_desc_everyHour:qp,sch_desc_everyMinute:e3,sch_desc_everyMonth:t3,sch_desc_everyNDay:s3,sch_desc_everyNHours:i3,sch_desc_everyNMinutes:r3,sch_desc_everyNMonths:o3,sch_desc_everyNWeeks:M3,sch_desc_everyNYears:n3,sch_desc_everyWeek:a3,sch_desc_everyYear:c3,sch_desc_intervalFromTo:u3,sch_desc_never:l3,sch_desc_onDate:N3,sch_desc_onDates:L3,sch_desc_onEveryDate:j3,sch_desc_onMonth:g3,sch_desc_onMonths:T3,sch_desc_onWeekday:y3,sch_desc_onWeekdays:D3,sch_desc_onWeekends:d3,sch_desc_onWorkdays:z3,sch_desc_onceInPast:h3,sch_desc_once_on:I3,sch_desc_validFrom:w3,sch_desc_validFromTo:C3,sch_desc_validTo:A3,sch_every:m3,sch_exactTime:p3,sch_from:O3,sch_fromTo:E3,sch_intervalTime:_3,sch_invert:f3,sch_no_one:S3,sch_on:x3,sch_period:k3,sch_periodDaily:Y3,sch_periodDates:Q3,sch_periodDay:v3,sch_periodEvery:U3,sch_periodEveryDay:b3,sch_periodEveryMonth:$3,sch_periodEveryWeek:P3,sch_periodEveryYear:W3,sch_periodHours:R3,sch_periodMinutes:J3,sch_periodMonth:B3,sch_periodMonthly:G3,sch_periodOnce:F3,sch_periodSpecificMonths:H3,sch_periodWeek:V3,sch_periodWeekdays:Z3,sch_periodWeekend:X3,sch_periodWeekly:K3,sch_periodWorkdays:q3,sch_periodYear:eO,sch_periodYearly:tO,sch_specificTime:sO,sch_time:iO,sch_to:rO,sch_valid:oO,sch_validFrom:MO,sch_validTo:nO,sch_wholeDay:aO,sch_yearEveryMonth:cO},lO="Ações",NO="Acrescentar",LO="Cancelar",jO="Categorias",gO="Verificado",TO="Excluir",yO="Perto",DO="Comercial",dO="Configurar",zO="Conectado",hO="Continuar",IO="Copiado",wO="Crio",CO="Colheita",AO="Delete",mO="Excluir",pO="Descartar",OO="Desconectado",EO="Erro",_O="Filtro",fO="Sexta-feira",SO="Latitude",xO="Sair",kO="Longitude",YO="mensagem",QO="Segunda-feira",vO="Nome",UO="Objetos",bO="Está bem",$O="produtos",PO="Renomear/Mover/Copiar",WO="Repita",RO="Substituir",JO="Raiz",BO="Sábado",GO="Salve ",FO="Selecionado",HO="Estados",VO="Domingo",ZO="Quinta-feira",XO="Timestamp",KO="Terça-feira",qO="Atualizar",eE="Válida até",tE="Valor",sE="Versão",iE="Quarta-feira",rE="Largura",oE="Sim",ME="diferente",nE="Todos podem ler objetos",aE="Todos podem ler o estado",cE="Todos podem escrever objetos",uE="Todos podem escrever o estado",lE="O grupo pode ler o objeto",NE="O grupo pode ler o estado",LE="O grupo pode escrever o objeto",jE="O grupo pode escrever o estado",gE="O proprietário pode ler o objeto",TE="O proprietário pode ler o estado",yE="O proprietário pode escrever o objeto",DE="O proprietário pode escrever o estado",dE="Botões",zE="Mudou de",hE="fechar",IE="Criar estado booleano",wE="Criar canal",CE="Criar dispositivo",AE="Criar estado numérico",mE="Criar estado",pE="Criar estado de string",OE="d.",EE="Fr",_E="Mo",fE="Sa",SE="Su",xE="º",kE="Tu",YE="Nós",QE="Modo especialista",vE="FALSO",UE="Todos os arquivos",bE="áudio",$E="Código/JSON",PE="Imagens",WE="Texto",RE="Vídeo",JE="Configurações",BE="sem",GE="Função",FE="ID",HE="Nome",VE="Papel (Função)",ZE="Quarto",XE="Tipo",KE="Configurações inválidas",qE="Última mudança",e_="localmente",t_="abril",s_="agosto",i_="dezembro",r_="fevereiro",o_="janeiro",M_="julho",n_="junho",a_="Mai",c_="março",u_="novembro",l_="outubro",N_="setembro",L_="abril",j_="agosto",g_="dezembro",T_="fevereiro",y_="janeiro",D_="julho",d_="junho",z_="Mai",h_="março",I_="novembro",w_="outubro",C_="setembro",A_="Nenhum",m_="Objeto alterado por",p_="Objeto alterado pela última vez em",O_="Configurações de outro adaptador %s",E_="Código de qualidade",__="repetir",f_='Para selecionar a pasta, basta segurar a tecla "shift" clicando na pasta.',S_="Mostrar tudo",x_="Estado alterado por",k_="Objeto alterado de",Y_="Timestamp",Q_="Confirmado",v_="Comente",U_="Copie o valor do estado",b_="Segure a tecla Ctrl/⌘ para abrir o link",$_="Opções customizadas",P_="Excluir objeto",W_="Editar objeto",R_="Edite o valor do estado",J_="Expira em",B_="De",G_="Última alteração",F_="Qualidade",H_="Timestamp",V_="Usuário",Z_="Valor",X_="verdadeiro",K_="Valor",q_="Aviso: O trabalho CRON será executado a cada minuto durante o período especificado!",ef="Aviso: O trabalho CRON será executado a cada segundo durante o período especificado!",tf="CRON",sf="Data",rf="Dias",of="Dia",Mf="Dia da semana",nf="todos",af="a cada N dias",cf="todo enésimo dia da semana",uf="todos os N dias da semana",lf="a cada N horas",Nf="a cada N minutos",Lf="a cada N meses",jf="a cada N segundos",gf="todo dia",Tf="todos os dias da semana",yf="todos os dias da semana",Df="toda hora",df="todo minuto",zf="todo mês",hf="todo segundo",If="de",wf="horas",Cf="intervalo",Af="intervalo entre",mf="CRON inválido",pf="minutos",Of="meses",Ef="uma vez",_f="período",ff="segundos",Sf="simples",xf="tempo específico",kf="datas específicas",Yf="dia(s) específico(s) da semana",Qf="dia específico de semanas",vf="horas específicas",Uf="minutos específicos",bf="meses específicos",$f="segundos específicos",Pf="tempo",Wf="para",Rf="assistente",Jf="tudo",Bf="dia astral",Gf="noite astral",Ff="amanhecer",Hf="anoitecer",Vf="hora dourada",Zf="Fim da hora dourada",Xf="nadir",Kf="Amanhecer náutico",qf="Anoitecer náutico",eS="noite",tS="fim da noite",sS="meio-dia solar",iS="nascer do sol",rS="fim do nascer do sol",oS="pôr do sol",MS="início do pôr do sol",nS="às",aS="em %s",cS="todo dia",uS="toda hora",lS="todo minuto",NS="todo mês",LS="a cada %s dias",jS="a cada %s horas",gS="a cada %s minutos",TS="a cada %s meses",yS="a cada %s semanas",DS="a cada %s anos",dS="toda semana",zS="todo ano",hS="de %s para %s",IS="nunca",wS="em %s de %s",CS="em %s e %s de",AS="em toda data de",mS="%s",pS="%s e %s",OS="em %s",ES="em %s e %s",_S="nos fins de semana",fS="em dias úteis",SS="não será mais executado, porque o começo está no passado",xS="em %s",kS="de %s",YS="Executar de até",QS="até %s",vS="cada",US="tempo específico",bS="de",$S="de a´t",PS="tempo de intervalo",WS="invertido",RS="nenhum",JS="em",BS="período",GS="diariamente",FS="datas",HS="dia",VS="todos",ZS="todo dia",XS="todo mês",KS="toda semana",qS="todo ano",ex="horas",tx="minutos",sx="mês",ix="por mês",rx="uma vez",ox="meses específicos",Mx="semana",nx="dias úteis",ax="final de semana",cx="semanal",ux="dias úteis",lx="ano",Nx="anual",Lx="tempo específico",jx="tempo",gx="para",Tx="válido",yx="de",Dx="para",dx="dia inteiro",zx="todo mês",hx={"ra_%s links from aliases":"%s links de aliases","ra_%s object(s) processed":"%s objeto(s) processado(s)","ra_%s was imported":"%s foi importado","ra_Accept license":"Aceitar licença",ra_Actions:lO,"ra_Add new child object to selected parent":"Adicionar novo objeto filho ao pai selecionado","ra_Add objects tree from JSON file":"Adicionar árvore de objetos do arquivo JSON","ra_Add row":"Adicionar linha","ra_Advanced options":"Opções avançadas","ra_All items are filtered out":"Todos os itens são filtrados","ra_All objects":"Todos os objetos",ra_Append:NO,"ra_Append %s entries or replace existing?":"Acrescentar %s entradas ou substituir as existentes?","ra_Append or replace?":"Acrescentar ou substituir?","ra_Are you sure?":"Você tem certeza?","ra_Auto (no custom columns)":"Auto (sem colunas personalizadas)","ra_Back to %s":"Voltar para %s","ra_Background image":"Imagem de fundo",ra_Cancel:LO,"ra_Cannot add items with set filter":"Não é possível adicionar itens com filtro definido","ra_Cannot decode license":"Não é possível decodificar a licença","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Não é possível determinar a posição: as configurações do sistema estão vazias e a detecção de GPS está desativada no navegador",'ra_Cannot find "%s"':'Não foi possível encontrar "%s"','ra_Cannot read "%s"':'Não é possível ler "%s"',"ra_Cannot read licenses: %s":"Não é possível ler licenças: %s","ra_Cannot retrieve options, as instance is offline":"Não é possível recuperar opções, pois a instância está off-line","ra_Cannot update attribute, because not found in the object":"Não é possível atualizar o atributo, porque não foi encontrado no objeto","ra_Cannot upload":"Não é possível fazer upload",ra_Categories:jO,"ra_Chained certificate":"certificado encadeado","ra_Change color theme":"Alterar tema de cores","ra_Changed from":"Mudou de","ra_Channel → State":"Canal → Estado","ra_Check license":"Verifique a licença",ra_Checked:gO,ra_Clear:TO,"ra_Clear filter":"Filtro limpo","ra_Clear icon":"Ícone de limpeza","ra_Click to see in full size":"Clique para ver em tamanho real.","ra_Click to show":"Clique para mostrar","ra_Clone current row":"Clonar linha atual",ra_Close:yO,"ra_Collapse all nodes":"Recolher todos os nós","ra_Collapse one step node":"Recolher um nível",ra_Commercial:DO,ra_Configure:dO,"ra_Configure visible columns":"Configurar colunas visíveis","ra_Confirm deletion of %s":"Confirme a exclusão de %s",ra_Connected:zO,ra_Continue:hO,ra_Copied:IO,"ra_Copied %s":'"%s" copiado',"ra_Copy content":"Copiar conteúdo",ra_Create:wO,"ra_Create alias":"Criar alias","ra_Create folder":"Criar pasta","ra_Create new folder in %s":"Crie uma nova pasta em %s",ra_Crop:CO,"ra_Define CRON...":"Defina CRON...","ra_Define functions":"Definir funções","ra_Define rooms":"Definir quartos","ra_Define schedule":"Definir cronograma","ra_Define schedule...":"Definir programação ...",ra_Del:AO,ra_Delete:mO,"ra_Delete current row":"Excluir linha atual","ra_Deselect all":"Desmarque todos","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Desativar/Ativar tradução",ra_Discard:pO,ra_Disconnected:OO,"ra_Do not ask for next 2 hours in this session":"Não peça as próximas 2 horas nesta sessão","ra_Do not export values of states":"Não exporte valores de estados","ra_Do not use let's encrypt":"Não use vamos criptografar","ra_Docker is not available":"O Docker não está disponível","ra_Docker is not installed or not running":"O Docker não está instalado ou não está em execução","ra_Double click to reset table layout":"Clique duas vezes para redefinir o layout da tabela","ra_Drag 'n' drop some files here, or click to select files":"Arraste e solte alguns arquivos aqui ou clique para selecionar arquivos","ra_Drop file here":"Solte o arquivo aqui","ra_Drop the files here...":"Solte o arquivo aqui ...","ra_Duplicate name":"Nome duplicado","ra_Edit ACL":"Editar ACL","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuração personalizada","ra_Edit full path":"Editar caminho completo","ra_Edit function":"Função de edição","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar papel","ra_Edit room":"Sala de edição","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Digite o código dessa página aqui",ra_Error:EO,"ra_Expand all nodes":"Expanda todos os nós","ra_Expand one step node":"Expanda um nível","ra_Expand/Collapse card":"Expandir/Recolher cartão","ra_Export configuration section":"Seção de configuração de exportação","ra_Export data to %s file":"Exportar dados para o arquivo %s","ra_Failed to open JSON File":"Falha ao abrir arquivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"O arquivo é muito grande. Max %sk permitido. Tente usar SVG.",ra_Filter:_O,"ra_Filter and Data Actions":"Ações de filtro e dados","ra_Filter files":"Filtrar arquivos","ra_Folder name":"Nome da pasta","ra_Folder → Channel → State":"Pasta → Canal → Estado","ra_Folder → Device → Channel → State":"Pasta → Dispositivo → Canal → Estado","ra_Folder → State":"Pasta → Estado","ra_Folders always first":"Pastas sempre primeiro",ra_Friday:fO,"ra_From file":"Do arquivo","ra_From text":"Do texto","ra_Get %s access":"Obtenha acesso %s","ra_Good luck":"Boa sorte","ra_Hide empty folders":"Esconder pastas vazias","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nenhum arquivo for criado na pasta, ele desaparecerá depois que o navegador for fechado","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se o botão acima não funcionar, você pode autorizar manualmente este aplicativo visitando esta url","ra_Import and add configuration section":"Seção de importação e adição de configuração","ra_Import and replace configuration section":"Seção de configuração de importação e substituição","ra_Import data from %s file":"Importar dados do arquivo %s","ra_Import from %s":"Importar de %s","ra_Instance %s is alive":"O %s da instância está ativo","ra_Instance %s is not alive":"O %s da instância não está ativo","ra_Instance is not alive":"A instância não está ativa","ra_Invalid CRON":"CRON inválido","ra_Invalid JSON":"JSON inválido","ra_Invalid JSON file.":"Arquivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Esperava-se uma matriz.","ra_Invalid answer from server":"Resposta inválida do servidor","ra_Invalid parent folder!":"Pasta pai inválida!","ra_Invalid structure":"Estrutura inválida","ra_JSON editor":"Editor JSON","ra_Last change":"Última mudança",ra_Latitude:SO,"ra_License %s":"Licença %s","ra_License agreement":"Contrato de licença","ra_License does not exist":"A licença não existe","ra_License expired on %s":"A licença expirou em %s",'ra_License for other product "%s"':'Licença para outro produto "%s"',"ra_License is for version %s, but required version is %s.":"A licença é para a versão %s, mas a versão necessária é %s.","ra_License must be converted":"A licença deve ser convertida para uma versão mais recente. Você pode fazê-lo em seu perfil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licença não encontrada no gerenciador de licenças. Deseja atualizar as licenças do iobroker.net?","ra_Listen on all IPs":"Ouça em todos os IPs","ra_Load configuration from file":"Carregar configuração do arquivo",ra_Logout:xO,ra_Longitude:kO,'ra_May not trigger "updateLicenses"':'Pode não acionar "updateLicenses"',ra_Message:YO,ra_Monday:QO,"ra_Move down":"Mover para baixo","ra_Move up":"Subir",ra_Name:vO,"ra_No data found in file":"Nenhum dado encontrado no arquivo","ra_No one license found in license manager":"Nenhuma licença encontrada no gerenciador de licenças","ra_No response from admin":"Nenhuma resposta do administrador","ra_No response from the backend":"Nenhuma resposta do backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Os não especialistas podem criar novos objetos apenas em "0_userdata.0" ou "alias.0".',"ra_Not a number":"Não é um número","ra_OAuth Client ID":"ID do cliente OAuth","ra_OAuth Client secret":"Segredo do cliente OAuth",ra_Objects:UO,ra_Ok:bO,"ra_On weekdays":"Nos dias úteis","ra_Only following structures of objects are available:":"Apenas as seguintes estruturas de objetos estão disponíveis:","ra_Only selected":"Apenas selecionado","ra_Owner group":"Grupo proprietário","ra_Owner user":"Usuário proprietário","ra_Passwords are not equal!":"As senhas não são iguais!","ra_Place your files here or click here to open the browse dialog":"Coloque seus arquivos aqui ou clique aqui para abrir a janela de navegação","ra_Please allow popups in your browser for this page!":"Por favor, permita pop-ups no seu navegador para esta página!","ra_Please confirm":"Por favor confirme","ra_Please create license":"Crie uma licença","ra_Please enter the license":"Por favor, insira a licença","ra_Please select file...":"Selecione o arquivo...","ra_Please select object ID...":"Selecione o ID do objeto ...","ra_Port could be used by %s":"A porta pode ser usada por %s","ra_Port is already used by %s":"A porta já está sendo usada por %s","ra_Press ENTER Key to add new item":"Pressione a tecla ENTER para adicionar um novo item","ra_Private certificate":"certificado privado",ra_Product:$O,"ra_Public certificate":"certificado público","ra_Quality code":"Qualidade","ra_Refresh tree":"Atualizar árvore","ra_Reload files":"Recarregar arquivos",ra_Rename_Move_Copy:PO,"ra_Renew %s access":"Renovar acesso %s",ra_Repeat:WO,ra_Replace:RO,"ra_Request timed out":"Solicitação expirou","ra_Restrict to folder":"Restringir à pasta",ra_Root:JO,ra_Saturday:BO,ra_Save:GO,"ra_Save and close":"Salvar e fechar","ra_Save configuration to file":"Salvar configuração em arquivo","ra_Save objects tree as JSON file":"Salvar árvore de objetos como arquivo JSON","ra_Select all":"Selecionar tudo","ra_Select color":"Selecione a cor","ra_Select predefined icon":"Selecione o ícone predefinido","ra_Select type of export":"Selecione o tipo de exportação",ra_Selected:FO,"ra_Selected %s object(s)":"%s objeto(s) selecionado(s)","ra_Serial number (UUID)":"Número de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'O número de série (UUID) "%s" na licença é para outro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"A sessão irá expirar em %s segundos. Continuar?","ra_Show all folders":"Mostrar todas as pastas","ra_Show lines between rows":"Mostrar linhas entre as linhas","ra_Show/Hide object descriptions":"Mostrar/ocultar descrições de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Alguns dados não são armazenados. Descartar?",ra_States:HO,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado com sucesso. Token válido até %s e será renovado automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado com sucesso. Token válido até %s, mas pode expirar, pois a instância não está em execução.","ra_Suitable license not found in license manager":"Licença adequada não encontrada no gerenciador de licenças",ra_Sunday:VO,"ra_Suppress question for next %s minutes":"Suprimir pergunta nos próximos %s minutos","ra_System language":"Idioma do sistema","ra_Take browser position":"Tomar posição do navegador","ra_Take position from system settings":"Tomar posição a partir das configurações do sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Os especialistas podem criar objetos em qualquer lugar, exceto no segundo nível (por exemplo, "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"A página que você está procurando não foi encontrada","ra_The schedule will be executed every minute. Are you sure?":"O agendamento será executado a cada minuto. Tem certeza?","ra_The schedule will be executed every second. Are you sure?":"O agendamento será executado a cada segundo. Tem certeza?",ra_Thursday:ZO,ra_Timestamp:XO,"ra_Toggle expert mode":"Alternar modo especialista","ra_Toggle the states view":"Alternar a visualização dos estados","ra_Toggle view mode":"Alternar modo de visualização","ra_Too big":"Muito grande","ra_Too small":"Muito pequeno","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:KO,"ra_Unknown error":"Erro desconhecido","ra_Unknown error!":"Erro desconhecido!",ra_Update:qO,"ra_Upload file":"Subir arquivo","ra_Use all available let's encrypt certificates":"Use todos os certificados disponíveis vamos criptografar","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use o adaptador iobroker.acme para certificados letsencrypt","ra_Use system settings for position":"Use as configurações do sistema para a posição","ra_Used system settings":"Configurações do sistema usadas","ra_User files":"Arquivos do usuário",ra_ValidTill:eE,ra_Value:tE,ra_Version:sE,"ra_View file":"Visualizar arquivo","ra_View: %s":"Visualizar: %s",ra_Wednesday:iE,ra_Width:rE,"ra_YAML editor":"Editor YAML",ra_Yes:oE,"ra_You can export all objects or just the selected branch.":"Você pode exportar todos os objetos ou apenas a ramificação selecionada.","ra_You can filter entries by entering here some text":"Você pode filtrar as entradas digitando aqui algum texto","ra_You can use * as wildcard":"Você pode usar * como curinga",ra___different__:ME,ra_aclEveryone_read_object:nE,ra_aclEveryone_read_state:aE,ra_aclEveryone_write_object:cE,ra_aclEveryone_write_state:uE,ra_aclGroup_read_object:lE,ra_aclGroup_read_state:NE,ra_aclGroup_write_object:LE,ra_aclGroup_write_state:jE,ra_aclOwner_read_object:gE,ra_aclOwner_read_state:TE,ra_aclOwner_write_object:yE,ra_aclOwner_write_state:DE,ra_buttons:dE,ra_changedFrom:zE,ra_close:hE,ra_create_boolean_state:IE,ra_create_channel:wE,ra_create_device:CE,ra_create_number_state:AE,ra_create_state:mE,ra_create_string_state:pE,ra_daysShortText:OE,ra_dow_Fr:EE,ra_dow_Mo:_E,ra_dow_Sa:fE,ra_dow_Su:SE,ra_dow_Th:xE,ra_dow_Tu:kE,ra_dow_We:YE,ra_expertMode:QE,ra_false:vE,ra_fileType_all:UE,ra_fileType_audio:bE,ra_fileType_code:$E,ra_fileType_images:PE,ra_fileType_txt:WE,ra_fileType_video:RE,"ra_fileType_video,":"Vídeo",ra_filter_customs:JE,ra_filter_customs_without:BE,ra_filter_func:GE,ra_filter_id:FE,ra_filter_name:HE,ra_filter_role:VE,ra_filter_room:ZE,ra_filter_type:XE,"ra_import data from %s file":"Importar dados do arquivo %s",ra_invalidConfig:KE,ra_lastChange:qE,ra_locally:e_,ra_month_Apr:t_,ra_month_Aug:s_,ra_month_Dec:i_,ra_month_Feb:r_,ra_month_Jan:o_,ra_month_Jul:M_,ra_month_Jun:n_,ra_month_Mai:a_,ra_month_Mar:c_,ra_month_Nov:u_,ra_month_Oct:l_,ra_month_Sep:N_,ra_months_Apr:L_,ra_months_Aug:j_,ra_months_Dec:g_,ra_months_Feb:T_,ra_months_Jan:y_,ra_months_Jul:D_,ra_months_Jun:d_,ra_months_Mai:z_,ra_months_Mar:h_,ra_months_Nov:I_,ra_months_Oct:w_,ra_months_Sep:C_,"ra_no confirm for 5 mins":"sem confirmação por 5 minutos",ra_none:A_,ra_object_changed_by:m_,ra_object_changed_by_user:p_,ra_otherConfig:O_,ra_qualityCode:E_,ra_repeat:__,ra_select_folder_hint:f_,ra_show_all:S_,ra_state_changed_by:x_,ra_state_changed_from:k_,ra_timestamp:Y_,ra_tooltip_ack:Q_,ra_tooltip_comment:v_,ra_tooltip_copyState:U_,ra_tooltip_ctrlForLink:b_,ra_tooltip_customConfig:$_,ra_tooltip_deleteObject:P_,ra_tooltip_editObject:W_,ra_tooltip_editState:R_,ra_tooltip_expire:J_,ra_tooltip_from:B_,ra_tooltip_lc:G_,ra_tooltip_quality:F_,ra_tooltip_ts:H_,ra_tooltip_user:V_,ra_tooltip_value:Z_,ra_true:X_,"ra_use seconds":"use segundos",ra_val:K_,"ra_via internet":"via internet",ra_warning_every_minute:q_,ra_warning_every_second:ef,sc_cron:tf,sc_date:sf,sc_dates:rf,sc_dow:of,sc_dows:Mf,sc_every:nf,sc_everyN_dates:af,sc_everyN_dow:cf,sc_everyN_dows:uf,sc_everyN_hours:lf,sc_everyN_minutes:Nf,sc_everyN_months:Lf,sc_everyN_seconds:jf,sc_every_dates:gf,sc_every_dow:Tf,sc_every_dows:yf,sc_every_hours:Df,sc_every_minutes:df,sc_every_months:zf,sc_every_seconds:hf,sc_from:If,sc_hours:wf,sc_interval:Cf,sc_intervalBetween:Af,sc_invalid_cron:mf,sc_minutes:pf,sc_months:Of,sc_once:Ef,sc_period:_f,sc_seconds:ff,sc_simple:Sf,sc_specific:xf,sc_specific_dates:kf,sc_specific_dow:Yf,sc_specific_dows:Qf,sc_specific_hours:vf,sc_specific_minutes:Uf,sc_specific_months:bf,sc_specific_seconds:$f,sc_time:Pf,sc_to:Wf,sc_wizard:Rf,sch_all:Jf,sch_astroDay:Bf,sch_astroNight:Gf,sch_astro_dawn:Ff,sch_astro_dusk:Hf,sch_astro_goldenHour:Vf,sch_astro_goldenHourEnd:Zf,sch_astro_nadir:Xf,sch_astro_nauticalDawn:Kf,sch_astro_nauticalDusk:qf,sch_astro_night:eS,sch_astro_nightEnd:tS,sch_astro_solarNoon:sS,sch_astro_sunrise:iS,sch_astro_sunriseEnd:rS,sch_astro_sunset:oS,sch_astro_sunsetStart:MS,sch_at:nS,sch_desc_atTime:aS,sch_desc_everyDay:cS,sch_desc_everyHour:uS,sch_desc_everyMinute:lS,sch_desc_everyMonth:NS,sch_desc_everyNDay:LS,sch_desc_everyNHours:jS,sch_desc_everyNMinutes:gS,sch_desc_everyNMonths:TS,sch_desc_everyNWeeks:yS,sch_desc_everyNYears:DS,sch_desc_everyWeek:dS,sch_desc_everyYear:zS,sch_desc_intervalFromTo:hS,sch_desc_never:IS,sch_desc_onDate:wS,sch_desc_onDates:CS,sch_desc_onEveryDate:AS,sch_desc_onMonth:mS,sch_desc_onMonths:pS,sch_desc_onWeekday:OS,sch_desc_onWeekdays:ES,sch_desc_onWeekends:_S,sch_desc_onWorkdays:fS,sch_desc_onceInPast:SS,sch_desc_once_on:xS,sch_desc_validFrom:kS,sch_desc_validFromTo:YS,sch_desc_validTo:QS,sch_every:vS,sch_exactTime:US,sch_from:bS,sch_fromTo:$S,sch_intervalTime:PS,sch_invert:WS,sch_no_one:RS,sch_on:JS,sch_period:BS,sch_periodDaily:GS,sch_periodDates:FS,sch_periodDay:HS,sch_periodEvery:VS,sch_periodEveryDay:ZS,sch_periodEveryMonth:XS,sch_periodEveryWeek:KS,sch_periodEveryYear:qS,sch_periodHours:ex,sch_periodMinutes:tx,sch_periodMonth:sx,sch_periodMonthly:ix,sch_periodOnce:rx,sch_periodSpecificMonths:ox,sch_periodWeek:Mx,sch_periodWeekdays:nx,sch_periodWeekend:ax,sch_periodWeekly:cx,sch_periodWorkdays:ux,sch_periodYear:lx,sch_periodYearly:Nx,sch_specificTime:Lx,sch_time:jx,sch_to:gx,sch_valid:Tx,sch_validFrom:yx,sch_validTo:Dx,sch_wholeDay:dx,sch_yearEveryMonth:zx},Ix="Acties",wx="toevoegen",Cx="Annuleer",Ax="Categorieën",mx="Gecontroleerd",px="Verwijderen",Ox="Dichtbij",Ex="Reclame",_x="Configureren",fx="Verbonden",Sx="Doorgaan",xx="Gekopieerd",kx="Creëer",Yx="Bijsnijden",Qx="Delete",vx="Verwijderen",Ux="Weggooien",bx="Verbinding verbroken",$x="Fout",Px="Filter",Wx="Vrijdag",Rx="Breedtegraad",Jx="Uitloggen",Bx="Lengtegraad",Gx="Bericht",Fx="Maandag",Hx="Naam",Vx="Voorwerpen",Zx="OK",Xx="Product",Kx="Hernoemen/Verplaatsen/Kopiëren",qx="Herhaling",e5="Vervangen",t5="Wortel",s5="Zaterdag",i5="Sparen",r5="Geselecteerd",o5="Staten",M5="Zondag",n5="Donderdag",a5="Tijdstempel",c5="Dinsdag",u5="Bijwerken",l5="Geldig tot",N5="Waarde",L5="Versie",j5="Woensdag",g5="Breedte",T5="Ja",y5="verschillend",D5="Iedereen kan object lezen",d5="Iedereen kan staat lezen",z5="Iedereen kan object schrijven",h5="Iedereen kan staat schrijven",I5="Groep kan object lezen",w5="Groep kan status lezen",C5="Groep kan object schrijven",A5="Groep kan staat schrijven",m5="Eigenaar kan object lezen",p5="Eigenaar kan staat lezen",O5="Eigenaar kan object schrijven",E5="Eigenaar kan staat schrijven",_5="Toetsen",f5="Veranderd van",S5="dichtbij",x5="Creëer een Booleaanse status",k5="Kanaal maken",Y5="Apparaat maken",Q5="Nummerstatus maken",v5="Staat creëren",U5="Tekenreeksstatus maken",b5="d.",$5="Fr",P5="Mo",W5="Za",R5="Zo",J5="Th",B5="Tu",G5="Wij",F5="Expert modus",H5="ONWAAR",V5="Alle bestanden",Z5="Audio",X5="Code/JSON",K5="Afbeeldingen",q5="Tekst",ek="Video",tk="Instellingen",sk="zonder",ik="Functie",rk="ID",ok="Naam",Mk="Rol",nk="Kamer",ak="Type",ck="Ongeldige instellingen",uk="Laatste wijziging",lk="plaatselijk",Nk="april",Lk="aug",jk="dec",gk="februari",Tk="jan",yk="jul",Dk="juni",dk="Mei",zk="mrt",hk="nov",Ik="Okt",wk="sept",Ck="april",Ak="aug",mk="dec",pk="februari",Ok="jan",Ek="jul",_k="juni",fk="Mei",Sk="mrt",xk="nov",kk="Okt",Yk="sept",Qk="geen",vk="Object veranderd door",Uk="Object voor het laatst gewijzigd om",bk="Instellingen van andere adapter %s",$k="Kwaliteitscode",Pk="herhalen",Wk='Om een map te selecteren, houdt u gewoon de toets "shift" ingedrukt door op de map te klikken.',Rk="Alles weergeven",Jk="Staat veranderd door",Bk="Object veranderd van",Gk="Tijdstempel",Fk="Erkende vlag",Hk="Opmerking",Vk="Kopieer de statuswaarde",Zk="Houd de Cltr/⌘-toets ingedrukt om de link te openen",Xk="Aangepaste instellingen",Kk="Object verwijderen",qk="Object bewerken",eY="Bewerk de statuswaarde",tY="Verloopt over",sY="Van",iY="Laatst gewijzigd",rY="Kwaliteit",oY="Tijdstempel",MY="Gebruiker",nY="Waarde",aY="WAAR",cY="Waarde",uY="Waarschuwing: De CRON-taak wordt elke minuut uitgevoerd gedurende de opgegeven periode!",lY="Waarschuwing: De CRON-taak wordt elke seconde uitgevoerd gedurende de opgegeven periode!",NY="CRON",LY="Datum",jY="data",gY="Dag",TY="Dag van de week",yY="elk",DY="elke N dagen",dY="elke N-de dag van de week",zY="elke N dag van de week",hY="elke N uur",IY="elke N minuten",wY="elke N maanden",CY="elke N seconden",AY="elke dag",mY="elke dag van de week",pY="elke dag van de week",OY="elk uur",EY="elke minuut",_Y="elke maand",fY="elke seconde",SY="Van",xY="uren",kY="Interval",YY="Interval tussen",QY="Ongeldige CRON",vY="Notulen",UY="maanden",bY="Een keer",$Y="Periode",PY="seconden",WY="Gemakkelijk",RY="Specifieke tijd",JY="specifieke data",BY="specifieke dag(en) van de week",GY="specifieke dag van weken",FY="specifieke uren",HY="specifieke minuten",VY="specifieke maanden",ZY="specifieke seconden",XY="Tijd",KY="Naar",qY="tovenaar",eQ="allemaal",tQ="Astro-dag",sQ="Astro-nacht",iQ="Dageraad",rQ="Schemer",oQ="gouden uur",MQ="Gouden uur einde",nQ="Nadir",aQ="Nautische dageraad",cQ="Nautische schemering",uQ="Nacht",lQ="Nacht einde",NQ="Zonne middag",LQ="zonsopkomst",jQ="Sunrise einde",gQ="Zonsondergang",TQ="Zonsondergang start",yQ="Bij",DQ="op %s",dQ="elke dag",zQ="elk uur",hQ="elke minuut",IQ="elke maand",wQ="elke %s dag",CQ="elke %s uur",AQ="elke %s minuten",mQ="elke %s maanden",pQ="elke %s weken",OQ="elke %s jaar",EQ="elke week",_Q="elk jaar",fQ="van %s tot %s",SQ="nooit",xQ="op %s van %s",kQ="op %s en %s van",YQ="op elke datum van",QQ="%s",vQ="%s en %s",UQ="op %s",bQ="op %s en %s",$Q="in het weekend",PQ="op werkdagen",WQ="zal niet meer worden uitgevoerd, omdat start verleden tijd is",RQ="op %s",JQ="van %s",BQ="Uitvoeren van tot",GQ="tot %s",FQ="elk",HQ="Specifieke tijd",VQ="van",ZQ="Van naar",XQ="Interval tijd",KQ="omkeren",qQ="geen",ev="Aan",tv="Periode",sv="Dagelijks",iv="data",rv="Dag",ov="elk",Mv="Elke dag",nv="Elke maand",av="Elke week",cv="Elk jaar",uv="uren",lv="Notulen",Nv="maand",Lv="Maandelijks",jv="Een keer",gv="Specifieke maanden",Tv="Week",yv="Doordeweekse dagen",Dv="Weekend",dv="Wekelijks",zv="werkdagen",hv="Jaar",Iv="jaar-",wv="Specifieke tijd",Cv="Tijd",Av="naar",mv="Geldig",pv="van",Ov="naar",Ev="Hele dag",_v="elke maand",fv={"ra_%s links from aliases":"%s links van aliassen","ra_%s object(s) processed":"%s object(en) verwerkt","ra_%s was imported":"%s is geïmporteerd","ra_Accept license":"Accepteer licentie",ra_Actions:Ix,"ra_Add new child object to selected parent":"Voeg een nieuw kindobject toe aan het geselecteerde bovenliggende object","ra_Add objects tree from JSON file":"Objectenboom toevoegen vanuit JSON-bestand","ra_Add row":"Voeg een rij toe","ra_Advanced options":"Geavanceerde mogelijkheden","ra_All items are filtered out":"Alle items zijn uitgefilterd","ra_All objects":"Alle objecten",ra_Append:wx,"ra_Append %s entries or replace existing?":"%s ingangen toevoegen of bestaande vervangen?","ra_Append or replace?":"Toevoegen of vervangen?","ra_Are you sure?":"Weet je het zeker?","ra_Auto (no custom columns)":"Auto (geen aangepaste kolommen)","ra_Back to %s":"Terug naar %s","ra_Background image":"Achtergrond afbeelding",ra_Cancel:Cx,"ra_Cannot add items with set filter":"Kan geen items toevoegen met ingestelde filter","ra_Cannot decode license":"Kan licentie niet decoderen","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Kan positie niet bepalen: systeeminstellingen zijn leeg en GPS-detectie is uitgeschakeld in browser",'ra_Cannot find "%s"':'Kan "%s" niet vinden','ra_Cannot read "%s"':'Kan "%s" niet lezen',"ra_Cannot read licenses: %s":"Kan licenties niet lezen: %s","ra_Cannot retrieve options, as instance is offline":"Kan opties niet ophalen, omdat instantie offline is","ra_Cannot update attribute, because not found in the object":"Kan kenmerk niet bijwerken, omdat het niet in het object is gevonden","ra_Cannot upload":"Kan niet uploaden",ra_Categories:Ax,"ra_Chained certificate":"Geketend certificaat","ra_Change color theme":"Kleurthema wijzigen","ra_Changed from":"Veranderd van","ra_Channel → State":"Kanaal → Staat","ra_Check license":"Licentie controleren",ra_Checked:mx,ra_Clear:px,"ra_Clear filter":"Filter wissen","ra_Clear icon":"Pictogram wissen","ra_Click to see in full size":"Klik om de afbeelding op volledige grootte te bekijken.","ra_Click to show":"Klik om te tonen","ra_Clone current row":"Kloon de huidige rij",ra_Close:Ox,"ra_Collapse all nodes":"Vouw alle knooppunten samen","ra_Collapse one step node":"Eén niveau samenvouwen",ra_Commercial:Ex,ra_Configure:_x,"ra_Configure visible columns":"Configureer zichtbare kolommen","ra_Confirm deletion of %s":"Bevestig het verwijderen van %s",ra_Connected:fx,ra_Continue:Sx,ra_Copied:xx,"ra_Copied %s":'"%s" gekopieerd',"ra_Copy content":"Inhoud kopiëren",ra_Create:kx,"ra_Create alias":"Alias maken","ra_Create folder":"Map aanmaken","ra_Create new folder in %s":"Maak een nieuwe map in %s",ra_Crop:Yx,"ra_Define CRON...":"Definieer CRON...","ra_Define functions":"Definieer functies","ra_Define rooms":"Definieer kamers","ra_Define schedule":"Definieer schema","ra_Define schedule...":"Schema definiëren ...",ra_Del:Qx,ra_Delete:vx,"ra_Delete current row":"Huidige rij verwijderen","ra_Deselect all":"Deselecteer alles","ra_Device → Channel → State":"Apparaat → Kanaal → Staat","ra_Disable/Enable translation":"Vertaling uitschakelen/inschakelen",ra_Discard:Ux,ra_Disconnected:bx,"ra_Do not ask for next 2 hours in this session":"Vraag niet om de volgende 2 uur in deze sessie","ra_Do not export values of states":"Exporteer geen waarden van staten","ra_Do not use let's encrypt":"Gebruik geen let's encrypt","ra_Docker is not available":"Docker is niet beschikbaar","ra_Docker is not installed or not running":"Docker is niet geïnstalleerd of draait niet","ra_Double click to reset table layout":"Dubbelklik om de tafelindeling te resetten","ra_Drag 'n' drop some files here, or click to select files":"Sleep enkele bestanden hierheen, of klik om bestanden te selecteren","ra_Drop file here":"Zet het bestand hier neer","ra_Drop the files here...":"Zet het bestand hier neer...","ra_Duplicate name":"Dubbele naam","ra_Edit ACL":"ACL bewerken","ra_Edit alias":"Alias bewerken","ra_Edit custom config":"Bewerk aangepaste config","ra_Edit full path":"Volledig pad bewerken","ra_Edit function":"Bewerkingsfunctie","ra_Edit object field":"Bewerk objectveld","ra_Edit role":"Rol bewerken","ra_Edit room":"Kamer bewerken","ra_Edit value":"Waarde bewerken","ra_Enter the code from that page here":"Voer hier de code van die pagina in",ra_Error:$x,"ra_Expand all nodes":"Vouw alle knooppunten uit","ra_Expand one step node":"Vouw een niveau uit","ra_Expand/Collapse card":"Kaart uit-/inklappen","ra_Export configuration section":"Sectie Exportconfiguratie","ra_Export data to %s file":"Exporteer gegevens naar %s bestand","ra_Failed to open JSON File":"JSON-bestand kan niet worden geopend","ra_Fallback custom certificates":"Fallback aangepaste certificaten","ra_File is too big. Max %sk allowed. Try use SVG.":"Bestand is te groot. Max. %sk toegestaan. Probeer SVG te gebruiken.",ra_Filter:Px,"ra_Filter and Data Actions":"Filter- en gegevensacties","ra_Filter files":"Bestanden filteren","ra_Folder name":"Naam van de map","ra_Folder → Channel → State":"Map → Kanaal → Staat","ra_Folder → Device → Channel → State":"Map → Apparaat → Kanaal → Staat","ra_Folder → State":"Map → Staat","ra_Folders always first":"Mappen altijd eerst",ra_Friday:Wx,"ra_From file":"Van bestand","ra_From text":"Van tekst","ra_Get %s access":"Krijg %s toegang","ra_Good luck":"Veel geluk","ra_Hide empty folders":"Verberg lege mappen","ra_If no file will be created in the folder, it will disappear after the browser closed":"Als er geen bestand in de map wordt gemaakt, verdwijnt het nadat de browser is gesloten","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Als de bovenstaande knop niet werkt, kunt u deze app handmatig autoriseren door deze url te bezoeken","ra_Import and add configuration section":"Configuratiesectie importeren en toevoegen","ra_Import and replace configuration section":"Configuratiesectie importeren en vervangen","ra_Import data from %s file":"Importeer gegevens uit %s bestand","ra_Import from %s":"Importeren uit %s","ra_Instance %s is alive":"Instantie %s leeft","ra_Instance %s is not alive":"Instantie %s is niet actief","ra_Instance is not alive":"Instantie leeft niet","ra_Invalid CRON":"Ongeldige CRON","ra_Invalid JSON":"Ongeldige JSON","ra_Invalid JSON file.":"Ongeldig JSON-bestand.","ra_Invalid JSON format. Expected an array.":"Ongeldige JSON-indeling. Er werd een array verwacht.","ra_Invalid answer from server":"Ongeldig antwoord van de server","ra_Invalid parent folder!":"Ongeldige bovenliggende map!","ra_Invalid structure":"Ongeldige structuur","ra_JSON editor":"JSON-editor","ra_Last change":"Laatste wijziging",ra_Latitude:Rx,"ra_License %s":"Licentie %s","ra_License agreement":"Licentieovereenkomst","ra_License does not exist":"Licentie bestaat niet","ra_License expired on %s":"Licentie verlopen op %s",'ra_License for other product "%s"':'Licentie voor ander product "%s"',"ra_License is for version %s, but required version is %s.":"Licentie is voor versie %s, maar vereiste versie is %s.","ra_License must be converted":"Licentie moet worden omgezet naar nieuwere versie. U kunt dit doen in uw iobroker.net-profiel.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licentie niet gevonden in licentiebeheer. Wilt u licenties van iobroker.net bijwerken?","ra_Listen on all IPs":"Luister op alle IP's","ra_Load configuration from file":"Laad configuratie uit bestand",ra_Logout:Jx,ra_Longitude:Bx,'ra_May not trigger "updateLicenses"':'Activeert mogelijk niet "updateLicenses"',ra_Message:Gx,ra_Monday:Fx,"ra_Move down":"Naar beneden verplaatsen","ra_Move up":"Omhoog gaan",ra_Name:Hx,"ra_No data found in file":"Geen gegevens gevonden in bestand","ra_No one license found in license manager":"Geen enkele licentie gevonden in licentiebeheer","ra_No response from admin":"Geen reactie van de beheerder","ra_No response from the backend":"Geen reactie van de backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Niet-experts mogen alleen nieuwe objecten maken in "0_userdata.0" of "alias.0".',"ra_Not a number":"Geen nummer","ra_OAuth Client ID":"OAuth-client-ID","ra_OAuth Client secret":"OAuth-clientgeheim",ra_Objects:Vx,ra_Ok:Zx,"ra_On weekdays":"Op weekdagen","ra_Only following structures of objects are available:":"Alleen de volgende structuren van objecten zijn beschikbaar:","ra_Only selected":"Alleen geselecteerd","ra_Owner group":"Eigenaarsgroep","ra_Owner user":"Eigenaar gebruiker","ra_Passwords are not equal!":"Wachtwoorden zijn niet gelijk!","ra_Place your files here or click here to open the browse dialog":"Plaats uw bestanden hier of klik hier om het bladervenster te openen","ra_Please allow popups in your browser for this page!":"Sta pop-ups toe in uw browser voor deze pagina!","ra_Please confirm":"Bevestig alstublieft","ra_Please create license":"Maak een licentie aan","ra_Please enter the license":"Voer de licentie in","ra_Please select file...":"Selecteer bestand...","ra_Please select object ID...":"Selecteer object-ID ...","ra_Port could be used by %s":"Poort kan worden gebruikt door %s","ra_Port is already used by %s":"Poort wordt al gebruikt door %s","ra_Press ENTER Key to add new item":"Druk op de ENTER-toets om een nieuw item toe te voegen","ra_Private certificate":"Privé certificaat",ra_Product:Xx,"ra_Public certificate":"Openbaar certificaat","ra_Quality code":"Kwaliteit","ra_Refresh tree":"Vernieuw de boom","ra_Reload files":"Laad bestanden opnieuw",ra_Rename_Move_Copy:Kx,"ra_Renew %s access":"%s toegang verlengen",ra_Repeat:qx,ra_Replace:e5,"ra_Request timed out":"Verzoek verlopen","ra_Restrict to folder":"Beperken tot map",ra_Root:t5,ra_Saturday:s5,ra_Save:i5,"ra_Save and close":"Opslaan en afsluiten","ra_Save configuration to file":"Sla de configuratie op in een bestand","ra_Save objects tree as JSON file":"Sla de objectenboom op als JSON-bestand","ra_Select all":"Selecteer alles","ra_Select color":"Selecteer kleur","ra_Select predefined icon":"Selecteer voorgedefinieerd pictogram","ra_Select type of export":"Selecteer het type export",ra_Selected:r5,"ra_Selected %s object(s)":"Geselecteerde %s object(en)","ra_Serial number (UUID)":"Serienummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serienummer (UUID) "%s" in licentie is voor ander apparaat.',"ra_Session will expire in %s seconds. Continue?":"Sessie verloopt over %s seconden. Doorgaan?","ra_Show all folders":"Toon alle mappen","ra_Show lines between rows":"Toon lijnen tussen rijen","ra_Show/Hide object descriptions":"Toon/verberg objectbeschrijvingen","ra_Show/hide filter input":"Filterinvoer weergeven/verbergen","ra_Some data are not stored. Discard?":"Sommige gegevens worden niet opgeslagen. Weggooien?",ra_States:o5,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Succesvol geautoriseerd. Token geldig tot %s en wordt automatisch verlengd.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Succesvol geautoriseerd. Token geldig tot %s, maar kan verlopen omdat de instantie niet actief is.","ra_Suitable license not found in license manager":"Geschikte licentie niet gevonden in licentiebeheer",ra_Sunday:M5,"ra_Suppress question for next %s minutes":"Vraag de volgende %s minuten onderdrukken","ra_System language":"Systeemtaal","ra_Take browser position":"Positie innemen vanuit de browser","ra_Take position from system settings":"Neem positie over van systeeminstellingen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'De experts kunnen overal objecten maken, behalve vanaf het tweede niveau (bijv. "Vis.0" of "javascript.0").',"ra_The page you are looking for was not found":"De pagina die u zoekt is niet gevonden","ra_The schedule will be executed every minute. Are you sure?":"Het schema wordt elke minuut uitgevoerd. Weet u het zeker?","ra_The schedule will be executed every second. Are you sure?":"Het schema wordt elke seconde uitgevoerd. Weet je het zeker?",ra_Thursday:n5,ra_Timestamp:a5,"ra_Toggle expert mode":"Schakel tussen expertmodus","ra_Toggle the states view":"Schakel de statusweergave in of uit","ra_Toggle view mode":"Schakelen tussen weergavemodus","ra_Too big":"Te groot","ra_Too small":"Te klein","ra_Transparent dialog":"Transparant dialoogvenster",ra_Tuesday:c5,"ra_Unknown error":"Onbekende fout","ra_Unknown error!":"Onbekende fout!",ra_Update:u5,"ra_Upload file":"Upload bestand","ra_Use all available let's encrypt certificates":"Gebruik alle beschikbare Let's Encrypt-certificaten","ra_Use iobroker.acme adapter for letsencrypt certificates":"Gebruik de iobroker.acme-adapter voor letsencrypt-certificaten","ra_Use system settings for position":"Gebruik systeeminstellingen voor positie","ra_Used system settings":"Gebruikte systeeminstellingen","ra_User files":"Gebruikersbestanden",ra_ValidTill:l5,ra_Value:N5,ra_Version:L5,"ra_View file":"Bestand bekijken","ra_View: %s":"Bekijk: %s",ra_Wednesday:j5,ra_Width:g5,"ra_YAML editor":"YAML-editor",ra_Yes:T5,"ra_You can export all objects or just the selected branch.":"U kunt alle objecten of alleen de geselecteerde tak exporteren.","ra_You can filter entries by entering here some text":"U kunt items filteren door hier wat tekst in te voeren","ra_You can use * as wildcard":"U kunt * als joker gebruiken",ra___different__:y5,ra_aclEveryone_read_object:D5,ra_aclEveryone_read_state:d5,ra_aclEveryone_write_object:z5,ra_aclEveryone_write_state:h5,ra_aclGroup_read_object:I5,ra_aclGroup_read_state:w5,ra_aclGroup_write_object:C5,ra_aclGroup_write_state:A5,ra_aclOwner_read_object:m5,ra_aclOwner_read_state:p5,ra_aclOwner_write_object:O5,ra_aclOwner_write_state:E5,ra_buttons:_5,ra_changedFrom:f5,ra_close:S5,ra_create_boolean_state:x5,ra_create_channel:k5,ra_create_device:Y5,ra_create_number_state:Q5,ra_create_state:v5,ra_create_string_state:U5,ra_daysShortText:b5,ra_dow_Fr:$5,ra_dow_Mo:P5,ra_dow_Sa:W5,ra_dow_Su:R5,ra_dow_Th:J5,ra_dow_Tu:B5,ra_dow_We:G5,ra_expertMode:F5,ra_false:H5,ra_fileType_all:V5,ra_fileType_audio:Z5,ra_fileType_code:X5,ra_fileType_images:K5,ra_fileType_txt:q5,ra_fileType_video:ek,"ra_fileType_video,":"Video",ra_filter_customs:tk,ra_filter_customs_without:sk,ra_filter_func:ik,ra_filter_id:rk,ra_filter_name:ok,ra_filter_role:Mk,ra_filter_room:nk,ra_filter_type:ak,"ra_import data from %s file":"Importeer gegevens uit %s bestand",ra_invalidConfig:ck,ra_lastChange:uk,ra_locally:lk,ra_month_Apr:Nk,ra_month_Aug:Lk,ra_month_Dec:jk,ra_month_Feb:gk,ra_month_Jan:Tk,ra_month_Jul:yk,ra_month_Jun:Dk,ra_month_Mai:dk,ra_month_Mar:zk,ra_month_Nov:hk,ra_month_Oct:Ik,ra_month_Sep:wk,ra_months_Apr:Ck,ra_months_Aug:Ak,ra_months_Dec:mk,ra_months_Feb:pk,ra_months_Jan:Ok,ra_months_Jul:Ek,ra_months_Jun:_k,ra_months_Mai:fk,ra_months_Mar:Sk,ra_months_Nov:xk,ra_months_Oct:kk,ra_months_Sep:Yk,"ra_no confirm for 5 mins":"geen bevestiging gedurende 5 minuten",ra_none:Qk,ra_object_changed_by:vk,ra_object_changed_by_user:Uk,ra_otherConfig:bk,ra_qualityCode:$k,ra_repeat:Pk,ra_select_folder_hint:Wk,ra_show_all:Rk,ra_state_changed_by:Jk,ra_state_changed_from:Bk,ra_timestamp:Gk,ra_tooltip_ack:Fk,ra_tooltip_comment:Hk,ra_tooltip_copyState:Vk,ra_tooltip_ctrlForLink:Zk,ra_tooltip_customConfig:Xk,ra_tooltip_deleteObject:Kk,ra_tooltip_editObject:qk,ra_tooltip_editState:eY,ra_tooltip_expire:tY,ra_tooltip_from:sY,ra_tooltip_lc:iY,ra_tooltip_quality:rY,ra_tooltip_ts:oY,ra_tooltip_user:MY,ra_tooltip_value:nY,ra_true:aY,"ra_use seconds":"gebruik seconden",ra_val:cY,"ra_via internet":"via internet",ra_warning_every_minute:uY,ra_warning_every_second:lY,sc_cron:NY,sc_date:LY,sc_dates:jY,sc_dow:gY,sc_dows:TY,sc_every:yY,sc_everyN_dates:DY,sc_everyN_dow:dY,sc_everyN_dows:zY,sc_everyN_hours:hY,sc_everyN_minutes:IY,sc_everyN_months:wY,sc_everyN_seconds:CY,sc_every_dates:AY,sc_every_dow:mY,sc_every_dows:pY,sc_every_hours:OY,sc_every_minutes:EY,sc_every_months:_Y,sc_every_seconds:fY,sc_from:SY,sc_hours:xY,sc_interval:kY,sc_intervalBetween:YY,sc_invalid_cron:QY,sc_minutes:vY,sc_months:UY,sc_once:bY,sc_period:$Y,sc_seconds:PY,sc_simple:WY,sc_specific:RY,sc_specific_dates:JY,sc_specific_dow:BY,sc_specific_dows:GY,sc_specific_hours:FY,sc_specific_minutes:HY,sc_specific_months:VY,sc_specific_seconds:ZY,sc_time:XY,sc_to:KY,sc_wizard:qY,sch_all:eQ,sch_astroDay:tQ,sch_astroNight:sQ,sch_astro_dawn:iQ,sch_astro_dusk:rQ,sch_astro_goldenHour:oQ,sch_astro_goldenHourEnd:MQ,sch_astro_nadir:nQ,sch_astro_nauticalDawn:aQ,sch_astro_nauticalDusk:cQ,sch_astro_night:uQ,sch_astro_nightEnd:lQ,sch_astro_solarNoon:NQ,sch_astro_sunrise:LQ,sch_astro_sunriseEnd:jQ,sch_astro_sunset:gQ,sch_astro_sunsetStart:TQ,sch_at:yQ,sch_desc_atTime:DQ,sch_desc_everyDay:dQ,sch_desc_everyHour:zQ,sch_desc_everyMinute:hQ,sch_desc_everyMonth:IQ,sch_desc_everyNDay:wQ,sch_desc_everyNHours:CQ,sch_desc_everyNMinutes:AQ,sch_desc_everyNMonths:mQ,sch_desc_everyNWeeks:pQ,sch_desc_everyNYears:OQ,sch_desc_everyWeek:EQ,sch_desc_everyYear:_Q,sch_desc_intervalFromTo:fQ,sch_desc_never:SQ,sch_desc_onDate:xQ,sch_desc_onDates:kQ,sch_desc_onEveryDate:YQ,sch_desc_onMonth:QQ,sch_desc_onMonths:vQ,sch_desc_onWeekday:UQ,sch_desc_onWeekdays:bQ,sch_desc_onWeekends:$Q,sch_desc_onWorkdays:PQ,sch_desc_onceInPast:WQ,sch_desc_once_on:RQ,sch_desc_validFrom:JQ,sch_desc_validFromTo:BQ,sch_desc_validTo:GQ,sch_every:FQ,sch_exactTime:HQ,sch_from:VQ,sch_fromTo:ZQ,sch_intervalTime:XQ,sch_invert:KQ,sch_no_one:qQ,sch_on:ev,sch_period:tv,sch_periodDaily:sv,sch_periodDates:iv,sch_periodDay:rv,sch_periodEvery:ov,sch_periodEveryDay:Mv,sch_periodEveryMonth:nv,sch_periodEveryWeek:av,sch_periodEveryYear:cv,sch_periodHours:uv,sch_periodMinutes:lv,sch_periodMonth:Nv,sch_periodMonthly:Lv,sch_periodOnce:jv,sch_periodSpecificMonths:gv,sch_periodWeek:Tv,sch_periodWeekdays:yv,sch_periodWeekend:Dv,sch_periodWeekly:dv,sch_periodWorkdays:zv,sch_periodYear:hv,sch_periodYearly:Iv,sch_specificTime:wv,sch_time:Cv,sch_to:Av,sch_valid:mv,sch_validFrom:pv,sch_validTo:Ov,sch_wholeDay:Ev,sch_yearEveryMonth:_v},Sv="Actes",xv="Ajouter",kv="Annuler",Yv="Catégories",Qv="Vérifié",vv="Effacer",Uv="Fermer",bv="Commercial",$v="Configurer",Pv="Lié",Wv="Continuer",Rv="Copié",Jv="Créer",Bv="Recadrer",Gv="Delete",Fv="Supprimer",Hv="Jeter",Vv="Débranché",Zv="Erreur",Xv="Filtre",Kv="Vendredi",qv="Latitude",eU="Déconnexion",tU="Longitude",sU="Message",iU="Lundi",rU="Nom",oU="Objets",MU="D'accord",nU="Produit",aU="Renommer/Déplacer/Copier",cU="Répéter",uU="Remplacer",lU="Racine",NU="Samedi",LU="sauver",jU="Choisi",gU="États",TU="Dimanche",yU="Jeudi",DU="Horodatage",dU="Mardi",zU="Mise à jour",hU="Valable jusqu'au",IU="Valeur",wU="Version",CU="Mercredi",AU="Largeur",mU="Oui",pU="différent",OU="Tout le monde peut lire un objet",EU="Tout le monde peut lire l'état",_U="Tout le monde peut écrire un objet",fU="Tout le monde peut écrire l'état",SU="Le groupe peut lire l'objet",xU="Le groupe peut lire l'état",kU="Le groupe peut écrire un objet",YU="Le groupe peut écrire l'état",QU="Le propriétaire peut lire l'objet",vU="Le propriétaire peut lire l'état",UU="Le propriétaire peut écrire un objet",bU="Le propriétaire peut écrire l'état",$U="Boutons",PU="Changé de",WU="Fermer",RU="Créer un état booléen",JU="Créer une chaîne",BU="Créer un appareil",GU="Créer un état de numéro",FU="Créer un état",HU="Créer un état de chaîne",VU="j.",ZU="Fr",XU="Mo",KU="Sa",qU="Su",e6="Th",t6="Tu",s6="Nous",i6="Mode expert",r6="FAUX",o6="Tous les fichiers",M6="l'audio",n6="Code/JSON",a6="Images",c6="Texte",u6="Vidéo",l6="Paramètres",N6="sans",L6="Une fonction",j6="ID",g6="Prénom",T6="Rôle",y6="Pièce",D6="Type",d6="Paramètres invalides",z6="Dernier changement",h6="localement",I6="Avr",w6="Août",C6="Déc",A6="Fév",m6="Jan",p6="Juil",O6="Juin",E6="Mai",_6="Mar",f6="Nov",S6="Oct",x6="Sep",k6="Avr",Y6="Août",Q6="Déc",v6="Fév",U6="Jan",b6="Juil",$6="Juin",P6="Mai",W6="Mar",R6="Nov",J6="Oct",B6="Sep",G6="rien",F6="Objet modifié par",H6="Objet modifié pour la dernière fois à",V6="Paramètres d'un autre adaptateur %s",Z6="Code de qualité",X6="répéter",K6='Pour sélectionner un dossier, maintenez simplement la touche "shift" enfoncée en cliquant sur le dossier.',q6="Tout afficher",e8="État modifié par",t8="Objet changé de",s8="Horodatage",i8="Drapeau reconnu",r8="Commentaire",o8="Copiez la valeur d'état",M8="Maintenez la touche Cltr/⌘ enfoncée pour ouvrir le lien",n8="Paramètres personnalisés",a8="Supprimer un objet",c8="Modifier l'objet",u8="Modifier la valeur d'état",l8="Expire dans",N8="De",L8="Dernière modification",j8="Qualité",g8="Horodatage",T8="Utilisateur",y8="Valeur",D8="VRAI",d8="Valeur",z8="Attention : la tâche CRON s’exécutera toutes les minutes pendant la période spécifiée !",h8="Attention : la tâche CRON s’exécutera toutes les secondes pendant la période spécifiée !",I8="CRON",w8="Date",C8="Rendez-vous",A8="Jour",m8="Jour de la semaine",p8="Chaque",O8="tous les N jours",E8="chaque Nième jour de la semaine",_8="tous les N jours de la semaine",f8="toutes les N heures",S8="toutes les N minutes",x8="tous les N mois",k8="toutes les N secondes",Y8="tous les jours",Q8="Chaque jour de la semaine",v8="Chaque jour de la semaine",U8="Toutes les heures",b8="chaque minute",$8="chaque mois",P8="chaque seconde",W8="De",R8="Heures",J8="Intervalle",B8="Intervalle entre",G8="CRON non valide",F8="Minutes",H8="mois",V8="Une fois que",Z8="Période",X8="Secondes",K8="Facile",q8="Temps spécifique",eb="dates spécifiques",tb="jour(s) spécifique(s) de la semaine",sb="jour spécifique de semaines",ib="heures spécifiques",rb="minutes spécifiques",ob="mois spécifiques",Mb="secondes spécifiques",nb="Temps",ab="À",cb="sorcier",ub="tout",lb="Journée astronomique",Nb="Nuit astronomique",Lb="Aube",jb="Crépuscule",gb="Heure d'or",Tb="Fin de l'heure d'or",yb="Nadir",Db="Aube nautique",db="Crépuscule nautique",zb="Nuit",hb="Fin de nuit",Ib="Midi solaire",wb="lever du soleil",Cb="Fin du lever du soleil",Ab="Le coucher du soleil",mb="Coucher du soleil",pb="à",Ob="à %s",Eb="tous les jours",_b="Toutes les heures",fb="chaque minute",Sb="chaque mois",xb="chaque %s jour",kb="chaque %s heures",Yb="toutes les %s minutes",Qb="tous les %s mois",vb="chaque %s semaines",Ub="tous les %s ans",bb="toutes les semaines",$b="chaque année",Pb="de %s à %s",Wb="jamais",Rb="sur %s de %s",Jb="sur %s et %s de",Bb="à chaque date de",Gb="%s",Fb="%s et %s",Hb="sur %s",Vb="sur %s et %s",Zb="les weekends",Xb="les jours ouvrables",Kb="ne sera plus exécuté, car start est dans le passé",qb="sur %s",e9="de %s",t9="Exécuter de à",s9="à %s",i9="chaque",r9="Temps spécifique",o9="de",M9="De à",n9="Temps d'interval",a9="inverser",c9="aucun",u9="sur",l9="Période",N9="du quotidien",L9="Rendez-vous",j9="journée",g9="Chaque",T9="Tous les jours",y9="Chaque mois",D9="Toutes les semaines",d9="Chaque année",z9="Heures",h9="Minutes",I9="mois",w9="Mensuel",C9="Une fois que",A9="Mois spécifiques",m9="La semaine",p9="Jours de la semaine",O9="Weekend",E9="Hebdomadaire",_9="Jours ouvrables",f9="Année",S9="Annuel",x9="Temps spécifique",k9="Temps",Y9="à",Q9="Valide",v9="de",U9="à",b9="Toute la journée",$9="chaque mois",P9={"ra_%s links from aliases":"%s liens provenant d'alias","ra_%s object(s) processed":"%s objet(s) traité(s)","ra_%s was imported":"%s a été importé","ra_Accept license":"Accepter la licence",ra_Actions:Sv,"ra_Add new child object to selected parent":"Ajouter un nouvel objet enfant au parent sélectionné","ra_Add objects tree from JSON file":"Ajouter une arborescence d'objets à partir d'un fichier JSON","ra_Add row":"Ajouter une rangée","ra_Advanced options":"Options avancées","ra_All items are filtered out":"Tous les éléments sont filtrés","ra_All objects":"Tous les objets",ra_Append:xv,"ra_Append %s entries or replace existing?":"Ajouter %s entrées ou remplacer l'existant ?","ra_Append or replace?":"Ajouter ou remplacer ?","ra_Are you sure?":"Êtes-vous sûr?","ra_Auto (no custom columns)":"Auto (pas de colonnes personnalisées)","ra_Back to %s":"Retour à %s","ra_Background image":"Image de fond",ra_Cancel:kv,"ra_Cannot add items with set filter":"Impossible d'ajouter des éléments avec le filtre défini","ra_Cannot decode license":"Impossible de décoder la licence","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossible de déterminer la position : les paramètres système sont vides et la détection GPS est désactivée dans le navigateur",'ra_Cannot find "%s"':'Impossible de trouver "%s"','ra_Cannot read "%s"':'Impossible de lire "%s"',"ra_Cannot read licenses: %s":"Impossible de lire les licences : %s","ra_Cannot retrieve options, as instance is offline":"Impossible de récupérer les options, car l'instance est hors ligne","ra_Cannot update attribute, because not found in the object":"Impossible de mettre à jour l'attribut, car il est introuvable dans l'objet","ra_Cannot upload":"Impossible de télécharger",ra_Categories:Yv,"ra_Chained certificate":"Certificat chaîné","ra_Change color theme":"Changer le thème de couleur","ra_Changed from":"Changé de","ra_Channel → State":"Canal → État","ra_Check license":"Vérifier la licence",ra_Checked:Qv,ra_Clear:vv,"ra_Clear filter":"Effacer le filtre","ra_Clear icon":"Effacer l'icône","ra_Click to see in full size":"Cliquez pour afficher en taille réelle","ra_Click to show":"Cliquez pour afficher","ra_Clone current row":"Cloner la ligne actuelle",ra_Close:Uv,"ra_Collapse all nodes":"Réduire tous les nœuds","ra_Collapse one step node":"Réduire d'un niveau",ra_Commercial:bv,ra_Configure:$v,"ra_Configure visible columns":"Configurer les colonnes visibles","ra_Confirm deletion of %s":"Confirmer la suppression de %s",ra_Connected:Pv,ra_Continue:Wv,ra_Copied:Rv,"ra_Copied %s":'"%s" copié',"ra_Copy content":"Copier le contenu",ra_Create:Jv,"ra_Create alias":"Créer un alias","ra_Create folder":"Créer le dossier","ra_Create new folder in %s":"Créer un nouveau dossier dans %s",ra_Crop:Bv,"ra_Define CRON...":"Définir CRON...","ra_Define functions":"Définir des fonctions","ra_Define rooms":"Définir des pièces","ra_Define schedule":"Définir le calendrier","ra_Define schedule...":"Définir le calendrier ...",ra_Del:Gv,ra_Delete:Fv,"ra_Delete current row":"Supprimer la ligne actuelle","ra_Deselect all":"Tout déselectionner","ra_Device → Channel → State":"Appareil → Canal → État","ra_Disable/Enable translation":"Activer/Désactiver la traduction",ra_Discard:Hv,ra_Disconnected:Vv,"ra_Do not ask for next 2 hours in this session":"Ne demandez pas les 2 prochaines heures de cette session","ra_Do not export values of states":"Ne pas exporter les valeurs des états","ra_Do not use let's encrypt":"Ne pas utiliser let's encrypt","ra_Docker is not available":"Docker n'est pas disponible","ra_Docker is not installed or not running":"Docker n'est pas installé ou n'est pas en cours d'exécution","ra_Double click to reset table layout":"Double-cliquez pour réinitialiser la disposition du tableau","ra_Drag 'n' drop some files here, or click to select files":"Glissez-déposez des fichiers ici, ou cliquez pour sélectionner des fichiers","ra_Drop file here":"Déposer le fichier ici","ra_Drop the files here...":"Déposez le fichier ici...","ra_Duplicate name":"Nom en double","ra_Edit ACL":"Modifier la LCA","ra_Edit alias":"Modifier l'alias","ra_Edit custom config":"Modifier la configuration personnalisée","ra_Edit full path":"Modifier le chemin complet","ra_Edit function":"Fonction d'édition","ra_Edit object field":"Modifier le champ d'objet","ra_Edit role":"Modifier le rôle","ra_Edit room":"Modifier la salle","ra_Edit value":"Modifier la valeur","ra_Enter the code from that page here":"Entrez le code de cette page ici",ra_Error:Zv,"ra_Expand all nodes":"Développer tous les nœuds","ra_Expand one step node":"Développer un niveau","ra_Expand/Collapse card":"Carte Développer/Réduire","ra_Export configuration section":"Exporter la section de configuration","ra_Export data to %s file":"Exporter les données vers le fichier %s","ra_Failed to open JSON File":"Échec de l'ouverture du fichier JSON","ra_Fallback custom certificates":"Certificats personnalisés de secours","ra_File is too big. Max %sk allowed. Try use SVG.":"Le fichier est trop volumineux. Max %sk autorisé. Essayez d'utiliser SVG.",ra_Filter:Xv,"ra_Filter and Data Actions":"Actions sur les filtres et les données","ra_Filter files":"Filtrer les fichiers","ra_Folder name":"Nom de dossier","ra_Folder → Channel → State":"Dossier → Chaîne → État","ra_Folder → Device → Channel → State":"Dossier → Appareil → Canal → État","ra_Folder → State":"Dossier → État","ra_Folders always first":"Les dossiers toujours en premier",ra_Friday:Kv,"ra_From file":"À partir du fichier","ra_From text":"À partir du texte","ra_Get %s access":"Obtenir l'accès %s","ra_Good luck":"Bonne chance","ra_Hide empty folders":"Masquer les dossiers vides","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si aucun fichier ne sera créé dans le dossier, il disparaîtra après la fermeture du navigateur","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si le bouton ci-dessus ne fonctionne pas, vous pouvez autoriser manuellement cette application en visitant cette URL","ra_Import and add configuration section":"Importer et ajouter la section de configuration","ra_Import and replace configuration section":"Importer et remplacer la section de configuration","ra_Import data from %s file":"Importer des données à partir du fichier %s","ra_Import from %s":"Importer depuis %s","ra_Instance %s is alive":"L'instance %s est active","ra_Instance %s is not alive":"L'instance %s n'est pas active","ra_Instance is not alive":"L'instance n'est pas active","ra_Invalid CRON":"CRON invalide","ra_Invalid JSON":"JSON invalide","ra_Invalid JSON file.":"Fichier JSON invalide.","ra_Invalid JSON format. Expected an array.":"Format JSON invalide. Tableau attendu.","ra_Invalid answer from server":"Réponse invalide du serveur","ra_Invalid parent folder!":"Dossier parent non valide!","ra_Invalid structure":"Structure invalide","ra_JSON editor":"Éditeur JSON","ra_Last change":"Dernier changement",ra_Latitude:qv,"ra_License %s":"Licence %s","ra_License agreement":"Accord de licence","ra_License does not exist":"La licence n'existe pas","ra_License expired on %s":"Licence expirée le %s",'ra_License for other product "%s"':'Licence pour un autre produit "%s"',"ra_License is for version %s, but required version is %s.":"La licence est pour la version %s, mais la version requise est %s.","ra_License must be converted":"La licence doit être convertie en une version plus récente. Vous pouvez le faire dans votre profil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licence introuvable dans le gestionnaire de licences. Voulez-vous mettre à jour les licences depuis iobroker.net ?","ra_Listen on all IPs":"Écoutez sur toutes les adresses IP","ra_Load configuration from file":"Charger la configuration à partir du fichier",ra_Logout:eU,ra_Longitude:tU,'ra_May not trigger "updateLicenses"':'Peut ne pas déclencher "updateLicences"',ra_Message:sU,ra_Monday:iU,"ra_Move down":"Descendre","ra_Move up":"Déplacer vers le haut",ra_Name:rU,"ra_No data found in file":"Aucune donnée trouvée dans le fichier","ra_No one license found in license manager":"Aucune licence trouvée dans le gestionnaire de licences","ra_No response from admin":"Aucune réponse de l'administrateur","ra_No response from the backend":"Aucune réponse du backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Les non-experts ne peuvent créer de nouveaux objets que dans "0_userdata.0" ou "alias.0".',"ra_Not a number":"Pas un numéro","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Secret client OAuth",ra_Objects:oU,ra_Ok:MU,"ra_On weekdays":"En semaine","ra_Only following structures of objects are available:":"Seules les structures d'objets suivantes sont disponibles:","ra_Only selected":"Uniquement sélectionné","ra_Owner group":"Groupe propriétaire","ra_Owner user":"Utilisateur propriétaire","ra_Passwords are not equal!":"Les mots de passe ne sont pas égaux !","ra_Place your files here or click here to open the browse dialog":"Placez vos fichiers ici ou cliquez ici pour ouvrir la boîte de dialogue de navigation","ra_Please allow popups in your browser for this page!":"Veuillez autoriser les popups dans votre navigateur pour cette page !","ra_Please confirm":"Veuillez confirmer","ra_Please create license":"Veuillez créer une licence","ra_Please enter the license":"Veuillez entrer la licence","ra_Please select file...":"Veuillez sélectionner le fichier...","ra_Please select object ID...":"Veuillez sélectionner l'ID d'objet ...","ra_Port could be used by %s":"Le port pourrait être utilisé par %s","ra_Port is already used by %s":"Le port est déjà utilisé par %s","ra_Press ENTER Key to add new item":"Appuyez sur la touche ENTRÉE pour ajouter un nouvel élément","ra_Private certificate":"Certificat privé",ra_Product:nU,"ra_Public certificate":"Certificat public","ra_Quality code":"Qualité","ra_Refresh tree":"Rafraîchir l'arborescence","ra_Reload files":"Recharger les fichiers",ra_Rename_Move_Copy:aU,"ra_Renew %s access":"Renouveler l'accès %s",ra_Repeat:cU,ra_Replace:uU,"ra_Request timed out":"La demande a expiré","ra_Restrict to folder":"Restreindre au dossier",ra_Root:lU,ra_Saturday:NU,ra_Save:LU,"ra_Save and close":"Sauver et fermer","ra_Save configuration to file":"Enregistrer la configuration dans un fichier","ra_Save objects tree as JSON file":"Enregistrer l'arborescence des objets en tant que fichier JSON","ra_Select all":"Tout sélectionner","ra_Select color":"Choisissez la couleur","ra_Select predefined icon":"Sélectionnez l'icône prédéfinie","ra_Select type of export":"Sélectionnez le type d'exportation",ra_Selected:jU,"ra_Selected %s object(s)":"Objet(s) %s sélectionné(s)","ra_Serial number (UUID)":"Numéro de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Le numéro de série (UUID) "%s" dans la licence est pour un autre appareil.',"ra_Session will expire in %s seconds. Continue?":"La session expirera dans %s secondes. Continuer ?","ra_Show all folders":"Afficher tous les dossiers","ra_Show lines between rows":"Afficher les lignes entre les lignes","ra_Show/Hide object descriptions":"Afficher/Masquer les descriptions d'objets","ra_Show/hide filter input":"Afficher/masquer l'entrée de filtre","ra_Some data are not stored. Discard?":"Certaines données ne sont pas stockées. Jeter?",ra_States:gU,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorisation réussie. Jeton valide jusqu'au %s et sera automatiquement renouvelé.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorisation réussie. Jeton valide jusqu'à %s, mais il peut expirer car l'instance n'est pas en cours d'exécution.","ra_Suitable license not found in license manager":"Licence appropriée introuvable dans le gestionnaire de licences",ra_Sunday:TU,"ra_Suppress question for next %s minutes":"Supprimer la question pour les %s prochaines minutes","ra_System language":"Langue du système","ra_Take browser position":"Prendre position depuis le navigateur","ra_Take position from system settings":"Prendre position à partir des paramètres système",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Les experts peuvent créer des objets partout mais à partir du deuxième niveau (par exemple "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"La page que vous recherchez n'a pas été trouvée","ra_The schedule will be executed every minute. Are you sure?":"Le planning sera exécuté toutes les minutes. Êtes-vous sûr ?","ra_The schedule will be executed every second. Are you sure?":"Le planning sera exécuté toutes les secondes. Êtes-vous sûr ?",ra_Thursday:yU,ra_Timestamp:DU,"ra_Toggle expert mode":"Basculer en mode expert","ra_Toggle the states view":"Basculer la vue des états","ra_Toggle view mode":"Basculer le mode d'affichage","ra_Too big":"Trop grand","ra_Too small":"Trop petit","ra_Transparent dialog":"Dialogue transparent",ra_Tuesday:dU,"ra_Unknown error":"Erreur inconnue","ra_Unknown error!":"Erreur inconnue!",ra_Update:zU,"ra_Upload file":"Téléverser un fichier","ra_Use all available let's encrypt certificates":"Utilisez tous les certificats let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utiliser l'adaptateur iobroker.acme pour les certificats Letsencrypt","ra_Use system settings for position":"Utiliser les paramètres système pour la position","ra_Used system settings":"Paramètres système utilisés","ra_User files":"Fichiers utilisateurs",ra_ValidTill:hU,ra_Value:IU,ra_Version:wU,"ra_View file":"Voir la fiche","ra_View: %s":"Affichage : %s",ra_Wednesday:CU,ra_Width:AU,"ra_YAML editor":"Éditeur YAML",ra_Yes:mU,"ra_You can export all objects or just the selected branch.":"Vous pouvez exporter tous les objets ou uniquement la branche sélectionnée.","ra_You can filter entries by entering here some text":"Vous pouvez filtrer les entrées en saisissant ici du texte","ra_You can use * as wildcard":"Vous pouvez utiliser * comme caractère générique",ra___different__:pU,ra_aclEveryone_read_object:OU,ra_aclEveryone_read_state:EU,ra_aclEveryone_write_object:_U,ra_aclEveryone_write_state:fU,ra_aclGroup_read_object:SU,ra_aclGroup_read_state:xU,ra_aclGroup_write_object:kU,ra_aclGroup_write_state:YU,ra_aclOwner_read_object:QU,ra_aclOwner_read_state:vU,ra_aclOwner_write_object:UU,ra_aclOwner_write_state:bU,ra_buttons:$U,ra_changedFrom:PU,ra_close:WU,ra_create_boolean_state:RU,ra_create_channel:JU,ra_create_device:BU,ra_create_number_state:GU,ra_create_state:FU,ra_create_string_state:HU,ra_daysShortText:VU,ra_dow_Fr:ZU,ra_dow_Mo:XU,ra_dow_Sa:KU,ra_dow_Su:qU,ra_dow_Th:e6,ra_dow_Tu:t6,ra_dow_We:s6,ra_expertMode:i6,ra_false:r6,ra_fileType_all:o6,ra_fileType_audio:M6,ra_fileType_code:n6,ra_fileType_images:a6,ra_fileType_txt:c6,ra_fileType_video:u6,"ra_fileType_video,":"Vidéo",ra_filter_customs:l6,ra_filter_customs_without:N6,ra_filter_func:L6,ra_filter_id:j6,ra_filter_name:g6,ra_filter_role:T6,ra_filter_room:y6,ra_filter_type:D6,"ra_import data from %s file":"Importer des données à partir du fichier %s",ra_invalidConfig:d6,ra_lastChange:z6,ra_locally:h6,ra_month_Apr:I6,ra_month_Aug:w6,ra_month_Dec:C6,ra_month_Feb:A6,ra_month_Jan:m6,ra_month_Jul:p6,ra_month_Jun:O6,ra_month_Mai:E6,ra_month_Mar:_6,ra_month_Nov:f6,ra_month_Oct:S6,ra_month_Sep:x6,ra_months_Apr:k6,ra_months_Aug:Y6,ra_months_Dec:Q6,ra_months_Feb:v6,ra_months_Jan:U6,ra_months_Jul:b6,ra_months_Jun:$6,ra_months_Mai:P6,ra_months_Mar:W6,ra_months_Nov:R6,ra_months_Oct:J6,ra_months_Sep:B6,"ra_no confirm for 5 mins":"pas de confirmation pendant 5 minutes",ra_none:G6,ra_object_changed_by:F6,ra_object_changed_by_user:H6,ra_otherConfig:V6,ra_qualityCode:Z6,ra_repeat:X6,ra_select_folder_hint:K6,ra_show_all:q6,ra_state_changed_by:e8,ra_state_changed_from:t8,ra_timestamp:s8,ra_tooltip_ack:i8,ra_tooltip_comment:r8,ra_tooltip_copyState:o8,ra_tooltip_ctrlForLink:M8,ra_tooltip_customConfig:n8,ra_tooltip_deleteObject:a8,ra_tooltip_editObject:c8,ra_tooltip_editState:u8,ra_tooltip_expire:l8,ra_tooltip_from:N8,ra_tooltip_lc:L8,ra_tooltip_quality:j8,ra_tooltip_ts:g8,ra_tooltip_user:T8,ra_tooltip_value:y8,ra_true:D8,"ra_use seconds":"utiliser les secondes",ra_val:d8,"ra_via internet":"par Internet",ra_warning_every_minute:z8,ra_warning_every_second:h8,sc_cron:I8,sc_date:w8,sc_dates:C8,sc_dow:A8,sc_dows:m8,sc_every:p8,sc_everyN_dates:O8,sc_everyN_dow:E8,sc_everyN_dows:_8,sc_everyN_hours:f8,sc_everyN_minutes:S8,sc_everyN_months:x8,sc_everyN_seconds:k8,sc_every_dates:Y8,sc_every_dow:Q8,sc_every_dows:v8,sc_every_hours:U8,sc_every_minutes:b8,sc_every_months:$8,sc_every_seconds:P8,sc_from:W8,sc_hours:R8,sc_interval:J8,sc_intervalBetween:B8,sc_invalid_cron:G8,sc_minutes:F8,sc_months:H8,sc_once:V8,sc_period:Z8,sc_seconds:X8,sc_simple:K8,sc_specific:q8,sc_specific_dates:eb,sc_specific_dow:tb,sc_specific_dows:sb,sc_specific_hours:ib,sc_specific_minutes:rb,sc_specific_months:ob,sc_specific_seconds:Mb,sc_time:nb,sc_to:ab,sc_wizard:cb,sch_all:ub,sch_astroDay:lb,sch_astroNight:Nb,sch_astro_dawn:Lb,sch_astro_dusk:jb,sch_astro_goldenHour:gb,sch_astro_goldenHourEnd:Tb,sch_astro_nadir:yb,sch_astro_nauticalDawn:Db,sch_astro_nauticalDusk:db,sch_astro_night:zb,sch_astro_nightEnd:hb,sch_astro_solarNoon:Ib,sch_astro_sunrise:wb,sch_astro_sunriseEnd:Cb,sch_astro_sunset:Ab,sch_astro_sunsetStart:mb,sch_at:pb,sch_desc_atTime:Ob,sch_desc_everyDay:Eb,sch_desc_everyHour:_b,sch_desc_everyMinute:fb,sch_desc_everyMonth:Sb,sch_desc_everyNDay:xb,sch_desc_everyNHours:kb,sch_desc_everyNMinutes:Yb,sch_desc_everyNMonths:Qb,sch_desc_everyNWeeks:vb,sch_desc_everyNYears:Ub,sch_desc_everyWeek:bb,sch_desc_everyYear:$b,sch_desc_intervalFromTo:Pb,sch_desc_never:Wb,sch_desc_onDate:Rb,sch_desc_onDates:Jb,sch_desc_onEveryDate:Bb,sch_desc_onMonth:Gb,sch_desc_onMonths:Fb,sch_desc_onWeekday:Hb,sch_desc_onWeekdays:Vb,sch_desc_onWeekends:Zb,sch_desc_onWorkdays:Xb,sch_desc_onceInPast:Kb,sch_desc_once_on:qb,sch_desc_validFrom:e9,sch_desc_validFromTo:t9,sch_desc_validTo:s9,sch_every:i9,sch_exactTime:r9,sch_from:o9,sch_fromTo:M9,sch_intervalTime:n9,sch_invert:a9,sch_no_one:c9,sch_on:u9,sch_period:l9,sch_periodDaily:N9,sch_periodDates:L9,sch_periodDay:j9,sch_periodEvery:g9,sch_periodEveryDay:T9,sch_periodEveryMonth:y9,sch_periodEveryWeek:D9,sch_periodEveryYear:d9,sch_periodHours:z9,sch_periodMinutes:h9,sch_periodMonth:I9,sch_periodMonthly:w9,sch_periodOnce:C9,sch_periodSpecificMonths:A9,sch_periodWeek:m9,sch_periodWeekdays:p9,sch_periodWeekend:O9,sch_periodWeekly:E9,sch_periodWorkdays:_9,sch_periodYear:f9,sch_periodYearly:S9,sch_specificTime:x9,sch_time:k9,sch_to:Y9,sch_valid:Q9,sch_validFrom:v9,sch_validTo:U9,sch_wholeDay:b9,sch_yearEveryMonth:$9},W9="Azioni",R9="Aggiungere",J9="Annulla",B9="Categorie",G9="Controllato",F9="Elimina",H9="Vicino",V9="Commerciale",Z9="Configura",X9="Collegato",K9="Continuare",q9="Copiato",e7="Creare",t7="Raccolto",s7="Delete",i7="Elimina",r7="Scartare",o7="Disconnesso",M7="Errore",n7="Filtro",a7="Venerdì",c7="Latitudine",u7="Esci",l7="Longitudine",N7="Messaggio",L7="Lunedi",j7="Nome",g7="Oggetti",T7="Ok",y7="Prodotto",D7="Rinomina/Sposta/Copia",d7="Ripetere",z7="Sostituire",h7="Radice",I7="Sabato",w7="Salva",C7="Selezionato",A7="stati",m7="Domenica",p7="Giovedì",O7="Timestamp",E7="Martedì",_7="Aggiornare",f7="Valido fino a",S7="Valore",x7="Versione",k7="Mercoledì",Y7="Larghezza",Q7="SÌ",v7="diverso",U7="Tutti possono leggere gli oggetti",b7="Tutti possono leggere lo stato",$7="Tutti possono scrivere oggetti",P7="Tutti possono scrivere stato",W7="Il gruppo può leggere l'oggetto",R7="Il gruppo può leggere lo stato",J7="Il gruppo può scrivere l'oggetto",B7="Il gruppo può scrivere lo stato",G7="Il proprietario può leggere l'oggetto",F7="Il proprietario può leggere lo stato",H7="Il proprietario può scrivere l'oggetto",V7="Il proprietario può scrivere lo stato",Z7="Bottoni",X7="Cambiato da",K7="vicino",q7="Crea uno stato booleano",e$="Crea canale",t$="Crea dispositivo",s$="Crea lo stato del numero",i$="Crea stato",r$="Crea lo stato della stringa",o$="g.",M$="fr",n$="momento",a$="Sa",c$="su",u$="th",l$="Tu",N$="Noi",L$="Modalità esperto",j$="FALSO",g$="Tutti i files",T$="Audio",y$="Codice/JSON",D$="immagini",d$="Testo",z$="video",h$="impostazioni",I$="senza",w$="Funzione",C$="ID",A$="Nome",m$="Ruolo",p$="Camera",O$="genere",E$="Impostazioni non valide",_$="Ultima modifica",f$="localmente",S$="apr",x$="agosto",k$="Dic",Y$="febbraio",Q$="gen",v$="lug",U$="giu",b$="Mai",$$="marzo",P$="nov",W$="ottobre",R$="Sett",J$="apr",B$="agosto",G$="Dic",F$="febbraio",H$="gen",V$="lug",Z$="giu",X$="Mai",K$="marzo",q$="nov",eP="ottobre",tP="Sett",sP="nessuna",iP="Oggetto modificato da",rP="L'oggetto è stato modificato l'ultima volta alle",oP="Impostazioni dall'altro adattatore %s",MP="Codice di qualità",nP="ripetere",aP='Per selezionare la cartella, basta tenere premuto il tasto "shift" facendo clic sulla cartella.',cP="Mostra tutto",uP="Stato cambiato da",lP="Oggetto cambiato da",NP="Timestamp",LP="Bandiera riconosciuta",jP="Commento",gP="Copia il valore dello stato",TP="Tieni premuto il tasto Cltr/⌘ per aprire il collegamento",yP="Impostazioni personalizzate",DP="Elimina oggetto",dP="Modifica oggetto",zP="Modifica il valore dello stato",hP="Scade tra",IP="A partire dal",wP="Ultima modifica",CP="Qualità",AP="Data e ora",mP="Utente",pP="Valore",OP="VERO",EP="Valore",_P="Attenzione: il processo CRON verrà eseguito ogni minuto durante il periodo specificato!",fP="Attenzione: il processo CRON verrà eseguito ogni secondo durante il periodo specificato!",SP="CRON",xP="Data",kP="Date",YP="Giorno",QP="Giorno della settimana",vP="Ogni",UP="ogni N giorni",bP="ogni Nesimo giorno della settimana",$P="ogni N giorno della settimana",PP="ogni N ore",WP="ogni N minuti",RP="ogni N mesi",JP="ogni N secondi",BP="ogni giorno",GP="Tutti i giorni della settimana",FP="Tutti i giorni della settimana",HP="ogni ora",VP="ogni minuto",ZP="ogni mese",XP="ogni secondo",KP="A partire dal",qP="Ore",eW="Intervallo",tW="Intervallo tra",sW="CRON non valido",iW="Minuti",rW="mesi",oW="Una volta",MW="Periodo",nW="secondi",aW="Semplice",cW="Orario preciso",uW="date specifiche",lW="giorno/i specifico/i della settimana",NW="giorno specifico delle settimane",LW="orari specifici",jW="minuti specifici",gW="mesi specifici",TW="secondi specifici",yW="Tempo",DW="Per",dW="procedura guidata",zW="tutti",hW="Astro day",IW="Astro night",wW="Alba",CW="Crepuscolo",AW="Ora d'oro",mW="Fine dell'ora d'oro",pW="Nadir",OW="Alba nautica",EW="Crepuscolo nautico",_W="Notte",fW="Fine della notte",SW="Mezzogiorno solare",xW="Alba",kW="Fine dell'alba",YW="Tramonto",QW="Inizio del tramonto",vW="a",UW="a %s",bW="ogni giorno",$W="ogni ora",PW="ogni minuto",WW="ogni mese",RW="ogni %s giorno",JW="ogni %s ore",BW="ogni %s minuti",GW="ogni %s mesi",FW="ogni %s settimane",HW="ogni %s anni",VW="ogni settimana",ZW="ogni anno",XW="da %s a %s",KW="mai",qW="su %s di %s",eR="su %s e %s di",tR="in ogni data di",sR="%s",iR="%s e %s",rR="su %s",oR="su %s e %s",MR="nei finesettimana",nR="nei giorni lavorativi",aR="non verrà più eseguito, perché start è nel passato",cR="su %s",uR="da %s",lR="Eseguire da a",NR="a %s",LR="ogni",jR="Orario preciso",gR="a partire dal",TR="Da A",yR="Intervallo di tempo",DR="invertire",dR="nessuna",zR="sopra",hR="Periodo",IR="Quotidiano",wR="Date",CR="Giorno",AR="Ogni",mR="Ogni giorno",pR="Ogni mese",OR="Ogni settimana",ER="Ogni anno",_R="Ore",fR="Minuti",SR="mese",xR="Mensile",kR="Una volta",YR="Mesi specifici",QR="Settimana",vR="Giorni della settimana",UR="Fine settimana",bR="settimanalmente",$R="giorni feriali",PR="Anno",WR="Annuale",RR="Orario preciso",JR="Tempo",BR="per",GR="Valido",FR="a partire dal",HR="per",VR="Giorno intero",ZR="ogni mese",XR={"ra_%s links from aliases":"%s link da alias","ra_%s object(s) processed":"%s oggetti elaborati","ra_%s was imported":"%s è stato importato","ra_Accept license":"Accetta licenza",ra_Actions:W9,"ra_Add new child object to selected parent":"Aggiungi un nuovo oggetto figlio al genitore selezionato","ra_Add objects tree from JSON file":"Aggiungi l'albero degli oggetti dal file JSON","ra_Add row":"Aggiungi riga","ra_Advanced options":"Opzioni avanzate","ra_All items are filtered out":"Tutti gli elementi vengono filtrati","ra_All objects":"Tutti gli oggetti",ra_Append:R9,"ra_Append %s entries or replace existing?":"Aggiungi %s voci o sostituisci quelle esistenti?","ra_Append or replace?":"Aggiungere o sostituire?","ra_Are you sure?":"Sei sicuro?","ra_Auto (no custom columns)":"Auto (nessuna colonna personalizzata)","ra_Back to %s":"Torna a %s","ra_Background image":"Immagine di sfondo",ra_Cancel:J9,"ra_Cannot add items with set filter":"Impossibile aggiungere elementi con il filtro impostato","ra_Cannot decode license":"Impossibile decodificare la licenza","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossibile determinare la posizione: le impostazioni di sistema sono vuote e il rilevamento GPS è disabilitato nel browser",'ra_Cannot find "%s"':'Impossibile trovare "%s"','ra_Cannot read "%s"':'Impossibile leggere "%s"',"ra_Cannot read licenses: %s":"Impossibile leggere le licenze: %s","ra_Cannot retrieve options, as instance is offline":"Impossibile recuperare le opzioni, poiché l'istanza è offline","ra_Cannot update attribute, because not found in the object":"Impossibile aggiornare l'attributo, perché non trovato nell'oggetto","ra_Cannot upload":"Impossibile caricare",ra_Categories:B9,"ra_Chained certificate":"Certificato incatenato","ra_Change color theme":"Cambia tema colore","ra_Changed from":"Cambiato da","ra_Channel → State":"Canale → Stato","ra_Check license":"Controlla la licenza",ra_Checked:G9,ra_Clear:F9,"ra_Clear filter":"Filtro pulito","ra_Clear icon":"Cancella icona","ra_Click to see in full size":"Clicca per visualizzare l'immagine a dimensioni intere","ra_Click to show":"Clicca per mostrare","ra_Clone current row":"Clona riga corrente",ra_Close:H9,"ra_Collapse all nodes":"Comprimi tutti i nodi","ra_Collapse one step node":"Comprimi un livello",ra_Commercial:V9,ra_Configure:Z9,"ra_Configure visible columns":"Configura colonne visibili","ra_Confirm deletion of %s":"Conferma l'eliminazione di %s",ra_Connected:X9,ra_Continue:K9,ra_Copied:q9,"ra_Copied %s":'"%s" copiato',"ra_Copy content":"Copia contenuto",ra_Create:e7,"ra_Create alias":"Crea alias","ra_Create folder":"Creare una cartella","ra_Create new folder in %s":"Crea nuova cartella in %s",ra_Crop:t7,"ra_Define CRON...":"Definisci CRON...","ra_Define functions":"Definire le funzioni","ra_Define rooms":"Definisci le stanze","ra_Define schedule":"Definisci programma","ra_Define schedule...":"Definisci pianificazione ...",ra_Del:s7,ra_Delete:i7,"ra_Delete current row":"Elimina la riga corrente","ra_Deselect all":"Deseleziona tutto","ra_Device → Channel → State":"Dispositivo → Canale → Stato","ra_Disable/Enable translation":"Disabilita/Abilita la traduzione",ra_Discard:r7,ra_Disconnected:o7,"ra_Do not ask for next 2 hours in this session":"Non chiedere per le prossime 2 ore in questa sessione","ra_Do not export values of states":"Non esportare i valori degli stati","ra_Do not use let's encrypt":"Non utilizzare crittografiamo","ra_Docker is not available":"Docker non è disponibile","ra_Docker is not installed or not running":"Docker non è installato o non è in esecuzione","ra_Double click to reset table layout":"Fare doppio clic per ripristinare il layout della tabella","ra_Drag 'n' drop some files here, or click to select files":"Trascina e rilascia alcuni file qui o fai clic per selezionare i file","ra_Drop file here":"Trascina il file qui","ra_Drop the files here...":"Trascina qui il file...","ra_Duplicate name":"Nome duplicato","ra_Edit ACL":"Modifica ACL","ra_Edit alias":"Modifica alias","ra_Edit custom config":"Modifica configurazione personalizzata","ra_Edit full path":"Modifica percorso completo","ra_Edit function":"Funzione di modifica","ra_Edit object field":"Modifica campo oggetto","ra_Edit role":"Modifica ruolo","ra_Edit room":"Modifica stanza","ra_Edit value":"Modifica valore","ra_Enter the code from that page here":"Inserisci qui il codice da quella pagina",ra_Error:M7,"ra_Expand all nodes":"Espandi tutti i nodi","ra_Expand one step node":"Espandi un livello","ra_Expand/Collapse card":"Espandi/Comprimi scheda","ra_Export configuration section":"Sezione di configurazione dell'esportazione","ra_Export data to %s file":"Esporta i dati nel file %s","ra_Failed to open JSON File":"Impossibile aprire il file JSON","ra_Fallback custom certificates":"Certificati personalizzati di fallback","ra_File is too big. Max %sk allowed. Try use SVG.":"Il file è troppo grande. Max %sk consentito. Prova a usare SVG.",ra_Filter:n7,"ra_Filter and Data Actions":"Azioni sui filtri e sui dati","ra_Filter files":"Filtra i file","ra_Folder name":"Nome della cartella","ra_Folder → Channel → State":"Cartella → Canale → Stato","ra_Folder → Device → Channel → State":"Cartella → Dispositivo → Canale → Stato","ra_Folder → State":"Cartella → Stato","ra_Folders always first":"Le cartelle sono sempre al primo posto",ra_Friday:a7,"ra_From file":"Dal file","ra_From text":"Dal testo","ra_Get %s access":"Ottieni l'accesso %s","ra_Good luck":"Buona fortuna","ra_Hide empty folders":"Nascondi cartelle vuote","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nessun file verrà creato nella cartella, scomparirà dopo la chiusura del browser","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se il pulsante sopra non funziona, puoi autorizzare manualmente questa app visitando questo URL","ra_Import and add configuration section":"Importa e aggiungi la sezione di configurazione","ra_Import and replace configuration section":"Importa e sostituisci la sezione di configurazione","ra_Import data from %s file":"Importa i dati dal file %s","ra_Import from %s":"Importa da %s","ra_Instance %s is alive":"Il %s dell'istanza è vivo","ra_Instance %s is not alive":"Il TESTO dell'istanza non è vivo","ra_Instance is not alive":"L'istanza non è viva","ra_Invalid CRON":"CRON non valido","ra_Invalid JSON":"JSON non valido","ra_Invalid JSON file.":"File JSON non valido.","ra_Invalid JSON format. Expected an array.":"Formato JSON non valido. È previsto un array.","ra_Invalid answer from server":"Risposta non valida dal server","ra_Invalid parent folder!":"Cartella principale non valida!","ra_Invalid structure":"Struttura non valida","ra_JSON editor":"Editor JSON","ra_Last change":"Ultima modifica",ra_Latitude:c7,"ra_License %s":"Licenza %s","ra_License agreement":"Contratto di licenza","ra_License does not exist":"La licenza non esiste","ra_License expired on %s":"Licenza scaduta il %s",'ra_License for other product "%s"':'Licenza per altro prodotto "%s"',"ra_License is for version %s, but required version is %s.":"La licenza è per la versione %s, ma la versione richiesta è %s.","ra_License must be converted":"La licenza deve essere convertita in una versione più recente. Puoi farlo nel tuo profilo iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licenza non trovata nel gestore delle licenze. Vuoi aggiornare le licenze da iobroker.net?","ra_Listen on all IPs":"Ascolta su tutti gli IP","ra_Load configuration from file":"Carica la configurazione dal file",ra_Logout:u7,ra_Longitude:l7,'ra_May not trigger "updateLicenses"':'Potrebbe non attivare "updateLicenses"',ra_Message:N7,ra_Monday:L7,"ra_Move down":"Abbassati","ra_Move up":"Andare avanti",ra_Name:j7,"ra_No data found in file":"Nessun dato trovato nel file","ra_No one license found in license manager":"Nessuna licenza trovata nel gestore delle licenze","ra_No response from admin":"Nessuna risposta dall'amministratore","ra_No response from the backend":"Nessuna risposta dal backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'I non esperti possono creare nuovi oggetti solo in "0_userdata.0" o "alias.0".',"ra_Not a number":"Non un numero","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Segreto del client OAuth",ra_Objects:g7,ra_Ok:T7,"ra_On weekdays":"Nei giorni della settimana","ra_Only following structures of objects are available:":"Sono disponibili solo le seguenti strutture di oggetti:","ra_Only selected":"Solo selezionato","ra_Owner group":"Gruppo di proprietari","ra_Owner user":"Utente proprietario","ra_Passwords are not equal!":"Le password non sono uguali!","ra_Place your files here or click here to open the browse dialog":"Posiziona i file qui o fai clic qui per aprire la finestra di dialogo Sfoglia","ra_Please allow popups in your browser for this page!":"Si prega di abilitare i popup nel browser per questa pagina!","ra_Please confirm":"Si prega di confermare","ra_Please create license":"Si prega di creare la licenza","ra_Please enter the license":"Inserisci la licenza","ra_Please select file...":"Si prega di selezionare il file...","ra_Please select object ID...":"Seleziona l'ID oggetto ...","ra_Port could be used by %s":"La porta potrebbe essere utilizzata da %s","ra_Port is already used by %s":"La porta è già utilizzata da %s","ra_Press ENTER Key to add new item":"Premere il tasto INVIO per aggiungere un nuovo elemento","ra_Private certificate":"Certificato privato",ra_Product:y7,"ra_Public certificate":"Certificato pubblico","ra_Quality code":"Qualità","ra_Refresh tree":"Aggiorna l'albero","ra_Reload files":"Ricarica i file",ra_Rename_Move_Copy:D7,"ra_Renew %s access":"Rinnova l'accesso %s",ra_Repeat:d7,ra_Replace:z7,"ra_Request timed out":"Tempo scaduto per la richiesta","ra_Restrict to folder":"Limita alla cartella",ra_Root:h7,ra_Saturday:I7,ra_Save:w7,"ra_Save and close":"Salva e chiudi","ra_Save configuration to file":"Salva la configurazione su file","ra_Save objects tree as JSON file":"Salva l'albero degli oggetti come file JSON","ra_Select all":"Seleziona tutto","ra_Select color":"Seleziona il colore","ra_Select predefined icon":"Seleziona l'icona predefinita","ra_Select type of export":"Seleziona il tipo di esportazione",ra_Selected:C7,"ra_Selected %s object(s)":"%s oggetto/i selezionato/i","ra_Serial number (UUID)":"Numero di serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Il numero di serie (UUID) "%s" nella licenza è per un altro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sessione scadrà tra %s secondi. Continuare?","ra_Show all folders":"Mostra tutte le cartelle","ra_Show lines between rows":"Mostra linee tra le righe","ra_Show/Hide object descriptions":"Mostra/Nascondi le descrizioni degli oggetti","ra_Show/hide filter input":"Mostra/nascondi input filtro","ra_Some data are not stored. Discard?":"Alcuni dati non vengono memorizzati. Scartare?",ra_States:A7,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizzazione completata. Il token è valido fino al %s e verrà rinnovato automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizzazione completata. Il token è valido fino al %s, ma potrebbe scadere perché l'istanza non è in esecuzione.","ra_Suitable license not found in license manager":"Licenza adatta non trovata nel gestore delle licenze",ra_Sunday:m7,"ra_Suppress question for next %s minutes":"Sopprimi la domanda per i prossimi %s minuti","ra_System language":"Linguaggio di sistema","ra_Take browser position":"Prendi posizione dal browser","ra_Take position from system settings":"Prendi posizione dalle impostazioni di sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Gli esperti possono creare oggetti ovunque ma dal secondo livello (es. "Vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"La pagina che stai cercando non è stata trovata","ra_The schedule will be executed every minute. Are you sure?":"La pianificazione verrà eseguita ogni minuto. Sei sicuro?","ra_The schedule will be executed every second. Are you sure?":"La pianificazione verrà eseguita ogni secondo. Sei sicuro?",ra_Thursday:p7,ra_Timestamp:O7,"ra_Toggle expert mode":"Attiva / disattiva la modalità esperto","ra_Toggle the states view":"Attiva o disattiva la visualizzazione degli stati","ra_Toggle view mode":"Attiva / disattiva la modalità di visualizzazione","ra_Too big":"Troppo grande","ra_Too small":"Troppo piccolo","ra_Transparent dialog":"Finestra di dialogo trasparente",ra_Tuesday:E7,"ra_Unknown error":"Errore sconosciuto","ra_Unknown error!":"Errore sconosciuto!",ra_Update:_7,"ra_Upload file":"Caricare un file","ra_Use all available let's encrypt certificates":"Usa tutti i certificati Let's Encrypt disponibili","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utilizzare l'adattatore iobroker.acme per i certificati letsencrypt","ra_Use system settings for position":"Usa le impostazioni di sistema per la posizione","ra_Used system settings":"Impostazioni di sistema utilizzate","ra_User files":"File utente",ra_ValidTill:f7,ra_Value:S7,ra_Version:x7,"ra_View file":"Vedi il file","ra_View: %s":"Visualizza: %s",ra_Wednesday:k7,ra_Width:Y7,"ra_YAML editor":"Editor YAML",ra_Yes:Q7,"ra_You can export all objects or just the selected branch.":"Puoi esportare tutti gli oggetti o solo il ramo selezionato.","ra_You can filter entries by entering here some text":"Puoi filtrare le voci inserendo qui del testo","ra_You can use * as wildcard":"Puoi usare * come carattere jolly",ra___different__:v7,ra_aclEveryone_read_object:U7,ra_aclEveryone_read_state:b7,ra_aclEveryone_write_object:$7,ra_aclEveryone_write_state:P7,ra_aclGroup_read_object:W7,ra_aclGroup_read_state:R7,ra_aclGroup_write_object:J7,ra_aclGroup_write_state:B7,ra_aclOwner_read_object:G7,ra_aclOwner_read_state:F7,ra_aclOwner_write_object:H7,ra_aclOwner_write_state:V7,ra_buttons:Z7,ra_changedFrom:X7,ra_close:K7,ra_create_boolean_state:q7,ra_create_channel:e$,ra_create_device:t$,ra_create_number_state:s$,ra_create_state:i$,ra_create_string_state:r$,ra_daysShortText:o$,ra_dow_Fr:M$,ra_dow_Mo:n$,ra_dow_Sa:a$,ra_dow_Su:c$,ra_dow_Th:u$,ra_dow_Tu:l$,ra_dow_We:N$,ra_expertMode:L$,ra_false:j$,ra_fileType_all:g$,ra_fileType_audio:T$,ra_fileType_code:y$,ra_fileType_images:D$,ra_fileType_txt:d$,ra_fileType_video:z$,"ra_fileType_video,":"video",ra_filter_customs:h$,ra_filter_customs_without:I$,ra_filter_func:w$,ra_filter_id:C$,ra_filter_name:A$,ra_filter_role:m$,ra_filter_room:p$,ra_filter_type:O$,"ra_import data from %s file":"Importa dati dal file %s",ra_invalidConfig:E$,ra_lastChange:_$,ra_locally:f$,ra_month_Apr:S$,ra_month_Aug:x$,ra_month_Dec:k$,ra_month_Feb:Y$,ra_month_Jan:Q$,ra_month_Jul:v$,ra_month_Jun:U$,ra_month_Mai:b$,ra_month_Mar:$$,ra_month_Nov:P$,ra_month_Oct:W$,ra_month_Sep:R$,ra_months_Apr:J$,ra_months_Aug:B$,ra_months_Dec:G$,ra_months_Feb:F$,ra_months_Jan:H$,ra_months_Jul:V$,ra_months_Jun:Z$,ra_months_Mai:X$,ra_months_Mar:K$,ra_months_Nov:q$,ra_months_Oct:eP,ra_months_Sep:tP,"ra_no confirm for 5 mins":"nessuna conferma per 5 minuti",ra_none:sP,ra_object_changed_by:iP,ra_object_changed_by_user:rP,ra_otherConfig:oP,ra_qualityCode:MP,ra_repeat:nP,ra_select_folder_hint:aP,ra_show_all:cP,ra_state_changed_by:uP,ra_state_changed_from:lP,ra_timestamp:NP,ra_tooltip_ack:LP,ra_tooltip_comment:jP,ra_tooltip_copyState:gP,ra_tooltip_ctrlForLink:TP,ra_tooltip_customConfig:yP,ra_tooltip_deleteObject:DP,ra_tooltip_editObject:dP,ra_tooltip_editState:zP,ra_tooltip_expire:hP,ra_tooltip_from:IP,ra_tooltip_lc:wP,ra_tooltip_quality:CP,ra_tooltip_ts:AP,ra_tooltip_user:mP,ra_tooltip_value:pP,ra_true:OP,"ra_use seconds":"usa i secondi",ra_val:EP,"ra_via internet":"attraverso internet",ra_warning_every_minute:_P,ra_warning_every_second:fP,sc_cron:SP,sc_date:xP,sc_dates:kP,sc_dow:YP,sc_dows:QP,sc_every:vP,sc_everyN_dates:UP,sc_everyN_dow:bP,sc_everyN_dows:$P,sc_everyN_hours:PP,sc_everyN_minutes:WP,sc_everyN_months:RP,sc_everyN_seconds:JP,sc_every_dates:BP,sc_every_dow:GP,sc_every_dows:FP,sc_every_hours:HP,sc_every_minutes:VP,sc_every_months:ZP,sc_every_seconds:XP,sc_from:KP,sc_hours:qP,sc_interval:eW,sc_intervalBetween:tW,sc_invalid_cron:sW,sc_minutes:iW,sc_months:rW,sc_once:oW,sc_period:MW,sc_seconds:nW,sc_simple:aW,sc_specific:cW,sc_specific_dates:uW,sc_specific_dow:lW,sc_specific_dows:NW,sc_specific_hours:LW,sc_specific_minutes:jW,sc_specific_months:gW,sc_specific_seconds:TW,sc_time:yW,sc_to:DW,sc_wizard:dW,sch_all:zW,sch_astroDay:hW,sch_astroNight:IW,sch_astro_dawn:wW,sch_astro_dusk:CW,sch_astro_goldenHour:AW,sch_astro_goldenHourEnd:mW,sch_astro_nadir:pW,sch_astro_nauticalDawn:OW,sch_astro_nauticalDusk:EW,sch_astro_night:_W,sch_astro_nightEnd:fW,sch_astro_solarNoon:SW,sch_astro_sunrise:xW,sch_astro_sunriseEnd:kW,sch_astro_sunset:YW,sch_astro_sunsetStart:QW,sch_at:vW,sch_desc_atTime:UW,sch_desc_everyDay:bW,sch_desc_everyHour:$W,sch_desc_everyMinute:PW,sch_desc_everyMonth:WW,sch_desc_everyNDay:RW,sch_desc_everyNHours:JW,sch_desc_everyNMinutes:BW,sch_desc_everyNMonths:GW,sch_desc_everyNWeeks:FW,sch_desc_everyNYears:HW,sch_desc_everyWeek:VW,sch_desc_everyYear:ZW,sch_desc_intervalFromTo:XW,sch_desc_never:KW,sch_desc_onDate:qW,sch_desc_onDates:eR,sch_desc_onEveryDate:tR,sch_desc_onMonth:sR,sch_desc_onMonths:iR,sch_desc_onWeekday:rR,sch_desc_onWeekdays:oR,sch_desc_onWeekends:MR,sch_desc_onWorkdays:nR,sch_desc_onceInPast:aR,sch_desc_once_on:cR,sch_desc_validFrom:uR,sch_desc_validFromTo:lR,sch_desc_validTo:NR,sch_every:LR,sch_exactTime:jR,sch_from:gR,sch_fromTo:TR,sch_intervalTime:yR,sch_invert:DR,sch_no_one:dR,sch_on:zR,sch_period:hR,sch_periodDaily:IR,sch_periodDates:wR,sch_periodDay:CR,sch_periodEvery:AR,sch_periodEveryDay:mR,sch_periodEveryMonth:pR,sch_periodEveryWeek:OR,sch_periodEveryYear:ER,sch_periodHours:_R,sch_periodMinutes:fR,sch_periodMonth:SR,sch_periodMonthly:xR,sch_periodOnce:kR,sch_periodSpecificMonths:YR,sch_periodWeek:QR,sch_periodWeekdays:vR,sch_periodWeekend:UR,sch_periodWeekly:bR,sch_periodWorkdays:$R,sch_periodYear:PR,sch_periodYearly:WR,sch_specificTime:RR,sch_time:JR,sch_to:BR,sch_valid:GR,sch_validFrom:FR,sch_validTo:HR,sch_wholeDay:VR,sch_yearEveryMonth:ZR},KR="Comportamiento",qR="Adjuntar",eJ="Cancelar",tJ="Categorías",sJ="Comprobado",iJ="Borrar",rJ="Cerca",oJ="Comercial",MJ="Configurar",nJ="Conectado",aJ="Continuar",cJ="Copiado",uJ="Crear",lJ="Cultivo",NJ="Delete",LJ="Eliminar",jJ="Desechar",gJ="Desconectado",TJ="Error",yJ="Filtrar",DJ="Viernes",dJ="Latitud",zJ="Cerrar sesión",hJ="Longitud",IJ="Mensaje",wJ="Lunes",CJ="Nombre",AJ="Objetos",mJ="Okay",pJ="Producto",OJ="Cambiar nombre/Mover/Copiar",EJ="Repetir",_J="Reemplazar",fJ="Raíz",SJ="Sábado",xJ="Salvar",kJ="Seleccionado",YJ="Estados",QJ="Domingo",vJ="Jueves",UJ="Marca de tiempo",bJ="Martes",$J="Actualizar",PJ="Válida hasta",WJ="Valor",RJ="Versión",JJ="Miércoles",BJ="Anchura",GJ="Sí",FJ="diferente",HJ="Todo el mundo puede leer el objeto",VJ="Todos pueden leer el estado",ZJ="Todos pueden escribir objetos",XJ="Todos pueden escribir el estado",KJ="El grupo puede leer el objeto",qJ="El grupo puede leer el estado",eB="El grupo puede escribir un objeto",tB="El grupo puede escribir el estado",sB="El propietario puede leer el objeto",iB="El propietario puede leer el estado",rB="El propietario puede escribir el objeto",oB="El propietario puede escribir el estado",MB="Botones",nB="Cambiaron desde",aB="cerrar",cB="Crear estado booleano",uB="Crear canal",lB="Crear dispositivo",NB="Crear estado numérico",LB="Crear estado",jB="Crear estado de cadena",gB="d.",TB="Fr",yB="Mes",DB="Sa",dB="Su",zB="Th",hB="Tu",IB="Nosotros",wB="Modo experto",CB="FALSO",AB="Todos los archivos",mB="Audio",pB="Código/JSON",OB="Imágenes",EB="Texto",_B="Video",fB="Configuraciones",SB="sin",xB="Función",kB="ID",YB="Nombre",QB="Papel",vB="Habitación",UB="Tipo",bB="Configuraciones inválidas",$B="Ultimo cambio",PB="en la zona",WB="Abr",RB="Ago",JB="Dic",BB="Feb",GB="Ene",FB="Jul",HB="Jun",VB="Mai",ZB="Mar",XB="Nov",KB="Oct",qB="Sep",eG="Abr",tG="Ago",sG="Dic",iG="Feb",rG="Ene",oG="Jul",MG="Jun",nG="Mai",aG="Mar",cG="Nov",uG="Oct",lG="Sep",NG="ninguno",LG="Objeto cambiado por",jG="Objeto cambiado por última vez a las",gG="Configuraciones de otro adaptador %s",TG="Código de calidad",yG="repetir",DG='Para seleccionar la carpeta, simplemente mantenga presionada la tecla "shift" haciendo clic en la carpeta.',dG="Mostrar todo",zG="Estado cambiado por",hG="Objeto cambiado de",IG="Marca de tiempo",wG="Bandera reconocida",CG="Comentario",AG="Copie el valor del estado",mG="Mantenga presionada la tecla Cltr/⌘ para abrir el enlace",pG="Ajustes personalizados",OG="Eliminar objeto",EG="Editar objeto",_G="Edite el valor del estado",fG="Caduca en",SG="Desde",xG="Último cambio",kG="Calidad",YG="Sello de tiempo",QG="Usuario",vG="Valor",UG="VERDADERO",bG="Valor",$G="Advertencia: ¡El trabajo CRON se ejecutará cada minuto durante el período especificado!",PG="Advertencia: ¡El trabajo CRON se ejecutará cada segundo durante el período especificado!",WG="CRON",RG="Fecha",JG="fechas",BG="Día",GG="Día de la semana",FG="Cada",HG="cada N días",VG="cada enésimo día de la semana",ZG="cada N día de la semana",XG="cada N horas",KG="cada N minutos",qG="cada N meses",eF="cada N segundos",tF="cada día",sF="Cada día de la semana",iF="Cada día de la semana",rF="cada hora",oF="cada minuto",MF="cada mes",nF="cada segundo",aF="De",cF="Horas",uF="Intervalo",lF="Intervalo entre",NF="CRON no válido",LF="Minutos",jF="meses",gF="Una vez",TF="Período",yF="Segundos",DF="Sencillo",dF="Tiempo específico",zF="fechas especificas",hF="día(s) específico(s) de la semana",IF="día específico de semanas",wF="horas específicas",CF="minutos específicos",AF="meses específicos",mF="segundos específicos",pF="Hora",OF="A",EF="Mago",_F="todas",fF="Día astro",SF="Noche astro",xF="Amanecer",kF="Oscuridad",YF="hora dorada",QF="Fin de la hora dorada",vF="Nadir",UF="Amanecer náutico",bF="Anochecer náutico",$F="Noche",PF="Fin de la noche",WF="Mediodía solar",RF="amanecer",JF="Fin del amanecer",BF="Puesta de sol",GF="Puesta de sol",FF="a",HF="en %s",VF="cada día",ZF="cada hora",XF="cada minuto",KF="cada mes",qF="cada %s días",eH="cada %s horas",tH="cada %s minutos",sH="cada %s meses",iH="cada %s semanas",rH="cada %s años",oH="cada semana",MH="todos los años",nH="de %s a %s",aH="Nunca",cH="en %s de %s",uH="en %s y %s de",lH="en cada fecha de",NH="%s",LH="%s y %s",jH="en %s",gH="en %s y %s",TH="en los fines de semana",yH="en días laborables",DH="ya no se ejecutará más, porque el inicio está en el pasado",dH="en %s",zH="de %s",hH="Ejecutar desde hasta",IH="a %s",wH="cada",CH="Tiempo específico",AH="de",mH="De-a",pH="Tiempo de intervalo",OH="invertir; poner boca abajo o en la posición opuesta, orden o arreglo; Boca abajo",EH="ninguna",_H="en",fH="Período",SH="Diario",xH="fechas",kH="Día",YH="Cada",QH="Cada día",vH="Cada mes",UH="Cada semana",bH="Todos los años",$H="Horas",PH="Minutos",WH="mes",RH="Mensual",JH="Una vez",BH="Meses específicos",GH="Semana",FH="Días laborables",HH="Fin de semana",VH="Semanal",ZH="Días laborables",XH="Año",KH="Anual",qH="Tiempo específico",eV="Hora",tV="a",sV="Válido",iV="de",rV="a",oV="Todo el dia",MV="cada mes",nV={"ra_%s links from aliases":"%s enlaces de alias","ra_%s object(s) processed":"%s objeto(s) procesados","ra_%s was imported":"%s fue importado","ra_Accept license":"Aceptar licencia",ra_Actions:KR,"ra_Add new child object to selected parent":"Agregar nuevo objeto hijo al padre seleccionado","ra_Add objects tree from JSON file":"Agregar árbol de objetos desde el archivo JSON","ra_Add row":"Añadir fila","ra_Advanced options":"Opciones avanzadas","ra_All items are filtered out":"Todos los elementos se filtran","ra_All objects":"Todos los objetos",ra_Append:qR,"ra_Append %s entries or replace existing?":"¿Agregar %s entradas o reemplazar las existentes?","ra_Append or replace?":"¿Agregar o reemplazar?","ra_Are you sure?":"¿Estás seguro?","ra_Auto (no custom columns)":"Automático (sin columnas personalizadas)","ra_Back to %s":"Volver a %s","ra_Background image":"Imagen de fondo",ra_Cancel:eJ,"ra_Cannot add items with set filter":"No se pueden agregar elementos con el filtro establecido","ra_Cannot decode license":"No se puede decodificar la licencia","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"No se puede determinar la posición: la configuración del sistema está vacía y la detección de GPS está deshabilitada en el navegador",'ra_Cannot find "%s"':'No se puede encontrar "%s"','ra_Cannot read "%s"':'No se puede leer "%s"',"ra_Cannot read licenses: %s":"No se pueden leer licencias: %s","ra_Cannot retrieve options, as instance is offline":"No se pueden recuperar las opciones, ya que la instancia está fuera de línea","ra_Cannot update attribute, because not found in the object":"No se puede actualizar el atributo porque no se encuentra en el objeto","ra_Cannot upload":"no se puede cargar",ra_Categories:tJ,"ra_Chained certificate":"certificado encadenado","ra_Change color theme":"Cambiar tema de color","ra_Changed from":"Cambiaron desde","ra_Channel → State":"Canal → Estado","ra_Check license":"Verificar licencia",ra_Checked:sJ,ra_Clear:iJ,"ra_Clear filter":"Filtro claro","ra_Clear icon":"Icono claro","ra_Click to see in full size":"Haz clic para ver en tamaño completo.","ra_Click to show":"Haga clic para mostrar","ra_Clone current row":"Clonar fila actual",ra_Close:rJ,"ra_Collapse all nodes":"Contraer todos los nodos","ra_Collapse one step node":"Contraer un nivel",ra_Commercial:oJ,ra_Configure:MJ,"ra_Configure visible columns":"Configurar columnas visibles","ra_Confirm deletion of %s":"Confirmar la eliminación de %s",ra_Connected:nJ,ra_Continue:aJ,ra_Copied:cJ,"ra_Copied %s":'Copiado "%s"',"ra_Copy content":"Copiar contenido",ra_Create:uJ,"ra_Create alias":"Crear alias","ra_Create folder":"Crear carpeta","ra_Create new folder in %s":"Crear nueva carpeta en %s",ra_Crop:lJ,"ra_Define CRON...":"Definir CRON...","ra_Define functions":"Definir funciones","ra_Define rooms":"Definir habitaciones","ra_Define schedule":"Definir horario","ra_Define schedule...":"Definir horario ...",ra_Del:NJ,ra_Delete:LJ,"ra_Delete current row":"Eliminar fila actual","ra_Deselect all":"Deselecciona todo","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Deshabilitar/Habilitar traducción",ra_Discard:jJ,ra_Disconnected:gJ,"ra_Do not ask for next 2 hours in this session":"No preguntes por las siguientes 2 horas en esta sesión.","ra_Do not export values of states":"No exportar valores de estados.","ra_Do not use let's encrypt":"No use vamos a cifrar","ra_Docker is not available":"Docker no está disponible","ra_Docker is not installed or not running":"Docker no está instalado o no se está ejecutando","ra_Double click to reset table layout":"Haga doble clic para restablecer el diseño de la tabla","ra_Drag 'n' drop some files here, or click to select files":"Arrastre y suelte algunos archivos aquí, o haga clic para seleccionar archivos","ra_Drop file here":"Suelta el archivo aquí","ra_Drop the files here...":"Suelta el archivo aquí ...","ra_Duplicate name":"Nombre duplicado","ra_Edit ACL":"Editar LCA","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuración personalizada","ra_Edit full path":"Editar ruta completa","ra_Edit function":"Función de edición","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar rol","ra_Edit room":"Cuarto de edición","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Introduzca el código de esa página aquí",ra_Error:TJ,"ra_Expand all nodes":"Expandir todos los nodos","ra_Expand one step node":"Expandir un nivel","ra_Expand/Collapse card":"Expandir/Contraer tarjeta","ra_Export configuration section":"Exportar sección de configuración","ra_Export data to %s file":"Exportar datos al archivo %s","ra_Failed to open JSON File":"No se pudo abrir el archivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"El archivo es demasiado grande. Máximo de %sk permitido. Intenta usar SVG.",ra_Filter:yJ,"ra_Filter and Data Actions":"Acciones de filtrado y datos","ra_Filter files":"Filtrar archivos","ra_Folder name":"Nombre de la carpeta","ra_Folder → Channel → State":"Carpeta → Canal → Estado","ra_Folder → Device → Channel → State":"Carpeta → Dispositivo → Canal → Estado","ra_Folder → State":"Carpeta → Estado","ra_Folders always first":"Carpetas siempre primero",ra_Friday:DJ,"ra_From file":"Desde archivo","ra_From text":"Del texto","ra_Get %s access":"Obtener %s acceso","ra_Good luck":"Buena suerte","ra_Hide empty folders":"Ocultar carpetas vacías","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si no se creará ningún archivo en la carpeta, desaparecerá después de que se cierre el navegador.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si el botón de arriba no funciona, puedes autorizar manualmente esta aplicación visitando esta URL","ra_Import and add configuration section":"Importar y agregar sección de configuración","ra_Import and replace configuration section":"Importar y reemplazar sección de configuración","ra_Import data from %s file":"Importar datos del archivo %s","ra_Import from %s":"Importar desde %s","ra_Instance %s is alive":"Instancia %s está vivo","ra_Instance %s is not alive":"Instancia %s no está vivo","ra_Instance is not alive":"La instancia no está viva","ra_Invalid CRON":"CRON no válido","ra_Invalid JSON":"JSON no válido","ra_Invalid JSON file.":"Archivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Se esperaba un array.","ra_Invalid answer from server":"Respuesta inválida del servidor","ra_Invalid parent folder!":"Carpeta principal no válida.","ra_Invalid structure":"Estructura inválida","ra_JSON editor":"editor JSON","ra_Last change":"Ultimo cambio",ra_Latitude:dJ,"ra_License %s":"Licencia %s","ra_License agreement":"Acuerdo de licencia","ra_License does not exist":"La licencia no existe","ra_License expired on %s":"La licencia venció el %s",'ra_License for other product "%s"':'Licencia para otro producto "%s"',"ra_License is for version %s, but required version is %s.":"La licencia es para la versión %s, pero la versión requerida es %s.","ra_License must be converted":"La licencia debe convertirse a una versión más reciente. Puedes hacerlo en tu perfil de iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licencia no encontrada en el administrador de licencias. ¿Quieres actualizar las licencias de iobroker.net?","ra_Listen on all IPs":"Escuche en todas las IP","ra_Load configuration from file":"Cargar configuración desde archivo",ra_Logout:zJ,ra_Longitude:hJ,'ra_May not trigger "updateLicenses"':'No puede activar "updateLicenses"',ra_Message:IJ,ra_Monday:wJ,"ra_Move down":"Mover hacia abajo","ra_Move up":"Ascender",ra_Name:CJ,"ra_No data found in file":"No se encontraron datos en el archivo","ra_No one license found in license manager":"No se encontró ninguna licencia en el administrador de licencias","ra_No response from admin":"No hay respuesta del administrador","ra_No response from the backend":"No hay respuesta del backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Los no expertos pueden crear nuevos objetos solo en "0_userdata.0" o "alias.0".',"ra_Not a number":"No un número","ra_OAuth Client ID":"ID de cliente OAuth","ra_OAuth Client secret":"Secreto de cliente OAuth",ra_Objects:AJ,ra_Ok:mJ,"ra_On weekdays":"De lunes a viernes","ra_Only following structures of objects are available:":"Solo están disponibles las siguientes estructuras de objetos:","ra_Only selected":"Solo seleccionados","ra_Owner group":"Grupo propietario","ra_Owner user":"Usuario propietario","ra_Passwords are not equal!":"¡Las contraseñas no son iguales!","ra_Place your files here or click here to open the browse dialog":"Coloque sus archivos aquí o haga clic aquí para abrir el cuadro de diálogo de exploración","ra_Please allow popups in your browser for this page!":"¡Permita ventanas emergentes en su navegador para esta página!","ra_Please confirm":"Por favor confirmar","ra_Please create license":"Por favor cree una licencia","ra_Please enter the license":"Por favor ingrese la licencia","ra_Please select file...":"Seleccione el archivo...","ra_Please select object ID...":"Por favor seleccione ID de objeto ...","ra_Port could be used by %s":"El puerto podría ser utilizado por %s","ra_Port is already used by %s":"El puerto ya está en uso por %s","ra_Press ENTER Key to add new item":"Presione la tecla ENTER para agregar un nuevo elemento","ra_Private certificate":"certificado privado",ra_Product:pJ,"ra_Public certificate":"Certificado público","ra_Quality code":"Calidad","ra_Refresh tree":"Actualizar árbol","ra_Reload files":"Recargar archivos",ra_Rename_Move_Copy:OJ,"ra_Renew %s access":"Renovar el acceso a %s",ra_Repeat:EJ,ra_Replace:_J,"ra_Request timed out":"Tiempo de espera agotado","ra_Restrict to folder":"Restringir a carpeta",ra_Root:fJ,ra_Saturday:SJ,ra_Save:xJ,"ra_Save and close":"Guardar y cerrar","ra_Save configuration to file":"Guardar configuración en archivo","ra_Save objects tree as JSON file":"Guardar el árbol de objetos como archivo JSON","ra_Select all":"Seleccionar todo","ra_Select color":"Seleccionar el color","ra_Select predefined icon":"Seleccionar icono predefinido","ra_Select type of export":"Seleccione tipo de exportación",ra_Selected:kJ,"ra_Selected %s object(s)":"%s objetos seleccionados","ra_Serial number (UUID)":"Número de serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'El número de serie (UUID) "%s" en la licencia es para otro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sesión expirará en %s segundos. ¿Continuar?","ra_Show all folders":"Mostrar todas las carpetas","ra_Show lines between rows":"Mostrar líneas entre filas","ra_Show/Hide object descriptions":"Mostrar/ocultar descripciones de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Algunos datos no se almacenan. ¿Desechar?",ra_States:YJ,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado correctamente. El token es válido hasta el %s y se renovará automáticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado correctamente. El token es válido hasta %s, pero puede caducar porque la instancia no está en ejecución.","ra_Suitable license not found in license manager":"Licencia adecuada no encontrada en el administrador de licencias",ra_Sunday:QJ,"ra_Suppress question for next %s minutes":"Suprimir pregunta durante los próximos %s minutos","ra_System language":"Lenguaje del sistema","ra_Take browser position":"Tomar posición desde el navegador","ra_Take position from system settings":"Tomar posición desde la configuración del sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Los expertos pueden crear objetos en todas partes excepto desde el segundo nivel (por ejemplo, "vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"No se encontró la página que busca","ra_The schedule will be executed every minute. Are you sure?":"El cronograma se ejecutará cada minuto. ¿Estás seguro?","ra_The schedule will be executed every second. Are you sure?":"El cronograma se ejecutará cada segundo. ¿Estás seguro?",ra_Thursday:vJ,ra_Timestamp:UJ,"ra_Toggle expert mode":"Alternar modo experto","ra_Toggle the states view":"Alternar la vista de estados","ra_Toggle view mode":"Alternar modo de vista","ra_Too big":"Demasiado grande","ra_Too small":"Demasiado pequeña","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:bJ,"ra_Unknown error":"Error desconocido","ra_Unknown error!":"¡Error desconocido!",ra_Update:$J,"ra_Upload file":"Subir archivo","ra_Use all available let's encrypt certificates":"Utilice todos los certificados let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use el adaptador iobroker.acme para los certificados de letsencrypt","ra_Use system settings for position":"Usar la configuración del sistema para la posición","ra_Used system settings":"Configuraciones del sistema usadas","ra_User files":"Archivos de usuario",ra_ValidTill:PJ,ra_Value:WJ,ra_Version:RJ,"ra_View file":"Ver archivo","ra_View: %s":"Ver: %s",ra_Wednesday:JJ,ra_Width:BJ,"ra_YAML editor":"Editor YAML",ra_Yes:GJ,"ra_You can export all objects or just the selected branch.":"Puede exportar todos los objetos o solo la rama seleccionada.","ra_You can filter entries by entering here some text":"Puede filtrar las entradas ingresando aquí algún texto","ra_You can use * as wildcard":"Puedes utilizar * como comodín",ra___different__:FJ,ra_aclEveryone_read_object:HJ,ra_aclEveryone_read_state:VJ,ra_aclEveryone_write_object:ZJ,ra_aclEveryone_write_state:XJ,ra_aclGroup_read_object:KJ,ra_aclGroup_read_state:qJ,ra_aclGroup_write_object:eB,ra_aclGroup_write_state:tB,ra_aclOwner_read_object:sB,ra_aclOwner_read_state:iB,ra_aclOwner_write_object:rB,ra_aclOwner_write_state:oB,ra_buttons:MB,ra_changedFrom:nB,ra_close:aB,ra_create_boolean_state:cB,ra_create_channel:uB,ra_create_device:lB,ra_create_number_state:NB,ra_create_state:LB,ra_create_string_state:jB,ra_daysShortText:gB,ra_dow_Fr:TB,ra_dow_Mo:yB,ra_dow_Sa:DB,ra_dow_Su:dB,ra_dow_Th:zB,ra_dow_Tu:hB,ra_dow_We:IB,ra_expertMode:wB,ra_false:CB,ra_fileType_all:AB,ra_fileType_audio:mB,ra_fileType_code:pB,ra_fileType_images:OB,ra_fileType_txt:EB,ra_fileType_video:_B,"ra_fileType_video,":"Video",ra_filter_customs:fB,ra_filter_customs_without:SB,ra_filter_func:xB,ra_filter_id:kB,ra_filter_name:YB,ra_filter_role:QB,ra_filter_room:vB,ra_filter_type:UB,"ra_import data from %s file":"Importar datos del archivo %s",ra_invalidConfig:bB,ra_lastChange:$B,ra_locally:PB,ra_month_Apr:WB,ra_month_Aug:RB,ra_month_Dec:JB,ra_month_Feb:BB,ra_month_Jan:GB,ra_month_Jul:FB,ra_month_Jun:HB,ra_month_Mai:VB,ra_month_Mar:ZB,ra_month_Nov:XB,ra_month_Oct:KB,ra_month_Sep:qB,ra_months_Apr:eG,ra_months_Aug:tG,ra_months_Dec:sG,ra_months_Feb:iG,ra_months_Jan:rG,ra_months_Jul:oG,ra_months_Jun:MG,ra_months_Mai:nG,ra_months_Mar:aG,ra_months_Nov:cG,ra_months_Oct:uG,ra_months_Sep:lG,"ra_no confirm for 5 mins":"Sin confirmación durante 5 minutos",ra_none:NG,ra_object_changed_by:LG,ra_object_changed_by_user:jG,ra_otherConfig:gG,ra_qualityCode:TG,ra_repeat:yG,ra_select_folder_hint:DG,ra_show_all:dG,ra_state_changed_by:zG,ra_state_changed_from:hG,ra_timestamp:IG,ra_tooltip_ack:wG,ra_tooltip_comment:CG,ra_tooltip_copyState:AG,ra_tooltip_ctrlForLink:mG,ra_tooltip_customConfig:pG,ra_tooltip_deleteObject:OG,ra_tooltip_editObject:EG,ra_tooltip_editState:_G,ra_tooltip_expire:fG,ra_tooltip_from:SG,ra_tooltip_lc:xG,ra_tooltip_quality:kG,ra_tooltip_ts:YG,ra_tooltip_user:QG,ra_tooltip_value:vG,ra_true:UG,"ra_use seconds":"usar segundos",ra_val:bG,"ra_via internet":"vía Internet",ra_warning_every_minute:$G,ra_warning_every_second:PG,sc_cron:WG,sc_date:RG,sc_dates:JG,sc_dow:BG,sc_dows:GG,sc_every:FG,sc_everyN_dates:HG,sc_everyN_dow:VG,sc_everyN_dows:ZG,sc_everyN_hours:XG,sc_everyN_minutes:KG,sc_everyN_months:qG,sc_everyN_seconds:eF,sc_every_dates:tF,sc_every_dow:sF,sc_every_dows:iF,sc_every_hours:rF,sc_every_minutes:oF,sc_every_months:MF,sc_every_seconds:nF,sc_from:aF,sc_hours:cF,sc_interval:uF,sc_intervalBetween:lF,sc_invalid_cron:NF,sc_minutes:LF,sc_months:jF,sc_once:gF,sc_period:TF,sc_seconds:yF,sc_simple:DF,sc_specific:dF,sc_specific_dates:zF,sc_specific_dow:hF,sc_specific_dows:IF,sc_specific_hours:wF,sc_specific_minutes:CF,sc_specific_months:AF,sc_specific_seconds:mF,sc_time:pF,sc_to:OF,sc_wizard:EF,sch_all:_F,sch_astroDay:fF,sch_astroNight:SF,sch_astro_dawn:xF,sch_astro_dusk:kF,sch_astro_goldenHour:YF,sch_astro_goldenHourEnd:QF,sch_astro_nadir:vF,sch_astro_nauticalDawn:UF,sch_astro_nauticalDusk:bF,sch_astro_night:$F,sch_astro_nightEnd:PF,sch_astro_solarNoon:WF,sch_astro_sunrise:RF,sch_astro_sunriseEnd:JF,sch_astro_sunset:BF,sch_astro_sunsetStart:GF,sch_at:FF,sch_desc_atTime:HF,sch_desc_everyDay:VF,sch_desc_everyHour:ZF,sch_desc_everyMinute:XF,sch_desc_everyMonth:KF,sch_desc_everyNDay:qF,sch_desc_everyNHours:eH,sch_desc_everyNMinutes:tH,sch_desc_everyNMonths:sH,sch_desc_everyNWeeks:iH,sch_desc_everyNYears:rH,sch_desc_everyWeek:oH,sch_desc_everyYear:MH,sch_desc_intervalFromTo:nH,sch_desc_never:aH,sch_desc_onDate:cH,sch_desc_onDates:uH,sch_desc_onEveryDate:lH,sch_desc_onMonth:NH,sch_desc_onMonths:LH,sch_desc_onWeekday:jH,sch_desc_onWeekdays:gH,sch_desc_onWeekends:TH,sch_desc_onWorkdays:yH,sch_desc_onceInPast:DH,sch_desc_once_on:dH,sch_desc_validFrom:zH,sch_desc_validFromTo:hH,sch_desc_validTo:IH,sch_every:wH,sch_exactTime:CH,sch_from:AH,sch_fromTo:mH,sch_intervalTime:pH,sch_invert:OH,sch_no_one:EH,sch_on:_H,sch_period:fH,sch_periodDaily:SH,sch_periodDates:xH,sch_periodDay:kH,sch_periodEvery:YH,sch_periodEveryDay:QH,sch_periodEveryMonth:vH,sch_periodEveryWeek:UH,sch_periodEveryYear:bH,sch_periodHours:$H,sch_periodMinutes:PH,sch_periodMonth:WH,sch_periodMonthly:RH,sch_periodOnce:JH,sch_periodSpecificMonths:BH,sch_periodWeek:GH,sch_periodWeekdays:FH,sch_periodWeekend:HH,sch_periodWeekly:VH,sch_periodWorkdays:ZH,sch_periodYear:XH,sch_periodYearly:KH,sch_specificTime:qH,sch_time:eV,sch_to:tV,sch_valid:sV,sch_validFrom:iV,sch_validTo:rV,sch_wholeDay:oV,sch_yearEveryMonth:MV},aV="Akcje",cV="Dodać",uV="Anuluj",lV="Kategorie",NV="Sprawdzony",LV="Kasować",jV="Blisko",gV="Handlowy",TV="Konfiguruj",yV="Połączony",DV="Kontynuować",dV="Skopiowano",zV="Stwórz",hV="Przyciąć",IV="Delete",wV="Usunąć",CV="Wyrzucać",AV="Niepowiązany",mV="Błąd",pV="Filtr",OV="Piątek",EV="Szerokość",_V="Wyloguj",fV="Długość geograficzna",SV="Wiadomość",xV="Poniedziałek",kV="Nazwa",YV="Obiekty",QV="Dobrze",vV="Produkt",UV="Zmień nazwę/Przenieś/Kopiuj",bV="Powtarzać",$V="Zastępować",PV="Korzeń",WV="Sobota",RV="Zapisać",JV="Wybrany",BV="Stany",GV="Niedziela",FV="Czwartek",HV="Znak czasu",VV="Wtorek",ZV="Aktualizacja",XV="Obowiązuje do",KV="Wartość",qV="Wersja",eZ="Środa",tZ="Szerokość",sZ="Tak",iZ="różne",rZ="Każdy może czytać obiekt",oZ="Każdy może czytać stan",MZ="Każdy może pisać przedmiot",nZ="Każdy może pisać stan",aZ="Grupa może odczytać obiekt",cZ="Grupa może odczytać stan",uZ="Grupa może pisać obiekt",lZ="Grupa może pisać stan",NZ="Właściciel może czytać obiekt",LZ="Właściciel może odczytać stan",jZ="Właściciel może napisać obiekt",gZ="Właściciel może pisać stan",TZ="guziki",yZ="Zmieniony z",DZ="blisko",dZ="Utwórz stan logiczny",zZ="Utwórz kanał",hZ="Utwórz urządzenie",IZ="Utwórz stan liczbowy",wZ="Utwórz stan",CZ="Utwórz stan ciągu",AZ="d.",mZ="Ks",pZ="Mo",OZ="Sa",EZ="Su",_Z="Th",fZ="Tu",SZ="My",xZ="Tryb ekspercki",kZ="FAŁSZ",YZ="Wszystkie pliki",QZ="Audio",vZ="Kod/JSON",UZ="Obrazy",bZ="Tekst",$Z="Wideo",PZ="Ustawienia",WZ="bez",RZ="Funkcjonować",JZ="ID",BZ="Imię",GZ="Rola",FZ="Sala",HZ="Rodzaj",VZ="Nieprawidłowe ustawienia",ZZ="Ostatnia zmiana",XZ="lokalnie",KZ="kwiecień",qZ="sierpień",eX="grudzień",tX="luty",sX="styczeń",iX="lipiec",rX="czerwiec",oX="Mai",MX="Zniszczyć",nX="listopad",aX="październik",cX="wrzesień",uX="kwiecień",lX="sierpień",NX="grudzień",LX="luty",jX="styczeń",gX="lipiec",TX="czerwiec",yX="Mai",DX="Zniszczyć",dX="listopad",zX="październik",hX="wrzesień",IX="Żaden",wX="Obiekt zmieniony przez",CX="Obiekt ostatnio zmieniony o godz",AX="Ustawienia z innego adaptera %s",mX="Kod jakości",pX="powtarzać",OX="Aby wybrać folder, wystarczy przytrzymać klawisz „shift”, klikając folder.",EX="Pokaż wszystko",_X="Stan zmieniony przez",fX="Obiekt zmieniony z",SX="Znak czasu",xX="Potwierdzon",kX="Komentarz",YX="Skopiuj wartość stanu",QX="Przytrzymaj klawisz CTRL/⌘, aby otworzyć link",vX="Własne ustawienia",UX="Usuń obiekt",bX="Edytuj obiekt",$X="Edytuj wartość stanu",PX="Wygasa za",WX="Z",RX="Ostatnia zmiana",JX="Jakość",BX="Znak czasu",GX="Użytkownik",FX="Wartość",HX="PRAWDA",VX="Wartość",ZX="Ostrzeżenie: Zadanie CRON będzie uruchamiane co minutę w określonym przedziale czasowym!",XX="Ostrzeżenie: Zadanie CRON będzie uruchamiane co sekundę w określonym przedziale czasowym!",KX="CRON",qX="Data",eK="Daktyle",tK="Dzień",sK="Dzień tygodnia",iK="Każdy",rK="co N dni",oK="w każdy N-ty dzień tygodnia",MK="co N dnia tygodnia",nK="co N godzin",aK="co N minut",cK="co N miesięcy",uK="co N sekund",lK="codziennie",NK="każdy dzień tygodnia",LK="każdy dzień tygodnia",jK="co godzinę",gK="każda minuta",TK="każdego miesiąca",yK="każda sekunda",DK="Od",dK="godziny",zK="Interwał",hK="Interwał między",IK="Nieprawidłowy CRON",wK="Minuty",CK="miesięcy",AK="Pewnego razu",mK="Kropka",pK="sekundy",OK="Prosty",EK="Określony czas",_K="konkretne daty",fK="określone dni tygodnia",SK="określony dzień tygodni",xK="określone godziny",kK="określone minuty",YK="określone miesiące",QK="określone sekundy",vK="Czas",UK="Do",bK="Czarodziej",$K="wszystko",PK="Dzień Astro",WK="Noc Astro",RK="Świt",JK="Zmierzch",BK="Złota godzina",GK="Koniec złotej godziny",FK="Północ",HK="Morski świt",VK="Morski zmierzch",ZK="Noc",XK="Koniec nocy",KK="Południe słoneczne",qK="Wschód słońca",eq="Koniec wschodu słońca",tq="Zachód słońca",sq="Początek zachodu słońca",iq="w",rq="na %s",oq="codziennie",Mq="co godzinę",nq="każda minuta",aq="każdego miesiąca",cq="każdego dnia %s",uq="co %s godzin",lq="co %s minut",Nq="co %s miesięcy",Lq="co %s tygodni",jq="co %s lat",gq="co tydzień",Tq="każdego roku",yq="od %s do %s",Dq="nigdy",dq="na %s z %s",zq="na %s i %s z",hq="w każdą datę",Iq="%s",wq="%s i %s",Cq="na %s",Aq="na %s i %s",mq="w weekendy",pq="w dni robocze",Oq="nie będzie już wykonywany, ponieważ start jest w przeszłości",Eq="na %s",_q="z %s",fq="Wykonaj od do",Sq="do %s",xq="każdy",kq="Określony czas",Yq="od",Qq="Od-do",vq="Czas przerwy",Uq="odwracać",bq="Żaden",$q="na",Pq="Kropka",Wq="Codziennie",Rq="Daktyle",Jq="Dzień",Bq="Każdy",Gq="Codziennie",Fq="Każdego miesiąca",Hq="Co tydzień",Vq="Każdego roku",Zq="godziny",Xq="Minuty",Kq="miesiąc",qq="Miesięczny",eee="Pewnego razu",tee="Określone miesiące",see="Tydzień",iee="Dni powszednie",ree="Weekend",oee="Co tydzień",Mee="Dni robocze",nee="Rok",aee="Rocznie",cee="Określony czas",uee="Czas",lee="do",Nee="Ważny",Lee="od",jee="do",gee="Cały dzień",Tee="każdego miesiąca",yee={"ra_%s links from aliases":"%s linków z aliasów","ra_%s object(s) processed":"Przetworzono %s obiektów","ra_%s was imported":"%s został zaimportowany","ra_Accept license":"Zaakceptuj licencję",ra_Actions:aV,"ra_Add new child object to selected parent":"Dodaj nowy obiekt potomny do wybranego rodzica","ra_Add objects tree from JSON file":"Dodaj drzewo obiektów z pliku JSON","ra_Add row":"Dodaj wiersz","ra_Advanced options":"Zaawansowane opcje","ra_All items are filtered out":"Wszystkie pozycje są odfiltrowane","ra_All objects":"Wszystkie obiekty",ra_Append:cV,"ra_Append %s entries or replace existing?":"Dołączyć wpisy %s czy zastąpić istniejące?","ra_Append or replace?":"Dołączyć czy zastąpić?","ra_Are you sure?":"Jesteś pewny?","ra_Auto (no custom columns)":"Auto (bez kolumn niestandardowych)","ra_Back to %s":"Powrót do %s","ra_Background image":"Zdjęcie w tle",ra_Cancel:uV,"ra_Cannot add items with set filter":"Nie można dodać elementów z ustawionym filtrem","ra_Cannot decode license":"Nie można zdekodować licencji","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Nie można określić pozycji: ustawienia systemu są puste, a wykrywanie GPS jest wyłączone w przeglądarce",'ra_Cannot find "%s"':"Nie można znaleźć „%s”",'ra_Cannot read "%s"':"Nie można odczytać „%s”","ra_Cannot read licenses: %s":"Nie można odczytać licencji: %s","ra_Cannot retrieve options, as instance is offline":"Nie można pobrać opcji, ponieważ instancja jest w trybie offline","ra_Cannot update attribute, because not found in the object":"Nie można zaktualizować atrybutu, ponieważ nie znaleziono go w obiekcie","ra_Cannot upload":"Nie można przesłać",ra_Categories:lV,"ra_Chained certificate":"Certyfikat łańcuchowy","ra_Change color theme":"Zmień motyw kolorystyczny","ra_Changed from":"Zmieniony z","ra_Channel → State":"Kanał → Stan","ra_Check license":"Sprawdź licencję",ra_Checked:NV,ra_Clear:LV,"ra_Clear filter":"Czysty filtr","ra_Clear icon":"Wyczyść ikonę","ra_Click to see in full size":"Kliknij, aby zobaczyć w pełnym rozmiarze","ra_Click to show":"Kliknij, aby pokazać","ra_Clone current row":"Sklonuj bieżący wiersz",ra_Close:jV,"ra_Collapse all nodes":"Zwiń wszystkie węzły","ra_Collapse one step node":"Zwiń o jeden poziom",ra_Commercial:gV,ra_Configure:TV,"ra_Configure visible columns":"Skonfiguruj widoczne kolumny","ra_Confirm deletion of %s":"Potwierdź usunięcie %s",ra_Connected:yV,ra_Continue:DV,ra_Copied:dV,"ra_Copied %s":'Skopiowano "%s"',"ra_Copy content":"Kopiuj zawartość",ra_Create:zV,"ra_Create alias":"Utwórz alias","ra_Create folder":"Utwórz folder","ra_Create new folder in %s":"Utwórz nowy folder w %s",ra_Crop:hV,"ra_Define CRON...":"Zdefiniuj CRON...","ra_Define functions":"Zdefiniuj funkcje","ra_Define rooms":"Zdefiniuj pokoje","ra_Define schedule":"Zdefiniuj harmonogram","ra_Define schedule...":"Zdefiniuj harmonogram ...",ra_Del:IV,ra_Delete:wV,"ra_Delete current row":"Usuń bieżący wiersz","ra_Deselect all":"Odznacz wszystko","ra_Device → Channel → State":"Urządzenie → Kanał → Stan","ra_Disable/Enable translation":"Wyłącz/Włącz tłumaczenie",ra_Discard:CV,ra_Disconnected:AV,"ra_Do not ask for next 2 hours in this session":"Nie proś o kolejne 2 godziny w tej sesji","ra_Do not export values of states":"Nie eksportuj wartości stanów","ra_Do not use let's encrypt":"Nie używaj zaszyfrujmy","ra_Docker is not available":"Docker nie jest dostępny","ra_Docker is not installed or not running":"Docker nie jest zainstalowany lub nie działa","ra_Double click to reset table layout":"Kliknij dwukrotnie, aby zresetować układ tabeli","ra_Drag 'n' drop some files here, or click to select files":"Przeciągnij i upuść kilka plików tutaj lub kliknij, aby wybrać pliki","ra_Drop file here":"Upuść plik tutaj","ra_Drop the files here...":"Upuść plik tutaj...","ra_Duplicate name":"Zduplikowana nazwa","ra_Edit ACL":"Edytuj listy ACL","ra_Edit alias":"Edytuj alias","ra_Edit custom config":"Edytuj konfigurację niestandardową","ra_Edit full path":"Edytuj pełną ścieżkę","ra_Edit function":"Funkcja edycji","ra_Edit object field":"Edytuj pole obiektu","ra_Edit role":"Edytuj rolę","ra_Edit room":"Edytuj pokój","ra_Edit value":"Edytuj wartość","ra_Enter the code from that page here":"Wpisz kod z tej strony tutaj",ra_Error:mV,"ra_Expand all nodes":"Rozwiń wszystkie węzły","ra_Expand one step node":"Rozwiń o jeden poziom","ra_Expand/Collapse card":"Rozwiń/Zwiń kartę","ra_Export configuration section":"Sekcja konfiguracji eksportu","ra_Export data to %s file":"Eksportuj dane do pliku %s","ra_Failed to open JSON File":"Nie udało się otworzyć pliku JSON","ra_Fallback custom certificates":"Niestandardowe certyfikaty zastępcze","ra_File is too big. Max %sk allowed. Try use SVG.":"Plik jest za duży. Maksymalna dozwolona liczba %sk. Spróbuj użyć SVG.",ra_Filter:pV,"ra_Filter and Data Actions":"Akcje filtrów i danych","ra_Filter files":"Filtruj pliki","ra_Folder name":"Nazwa folderu","ra_Folder → Channel → State":"Folder → Kanał → Stan","ra_Folder → Device → Channel → State":"Folder → Urządzenie → Kanał → Stan","ra_Folder → State":"Folder → Stan","ra_Folders always first":"Foldery zawsze na pierwszym miejscu",ra_Friday:OV,"ra_From file":"Z pliku","ra_From text":"Z tekstu","ra_Get %s access":"Uzyskaj dostęp %s","ra_Good luck":"Powodzenia","ra_Hide empty folders":"Ukryj puste foldery","ra_If no file will be created in the folder, it will disappear after the browser closed":"Jeśli w folderze nie zostanie utworzony żaden plik, zniknie on po zamknięciu przeglądarki","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Jeśli przycisk powyżej nie działa, możesz autoryzować tę aplikację ręcznie, odwiedzając ten adres URL","ra_Import and add configuration section":"Importuj i dodaj sekcję konfiguracji","ra_Import and replace configuration section":"Importuj i zastąp sekcję konfiguracji","ra_Import data from %s file":"Importuj dane z pliku %s","ra_Import from %s":"Importuj z %s","ra_Instance %s is alive":"Instancja %s jest aktywna","ra_Instance %s is not alive":"Instancja TEKST nie jest aktywna","ra_Instance is not alive":"Instancja nie jest aktywna","ra_Invalid CRON":"Nieprawidłowy CRON","ra_Invalid JSON":"Nieprawidłowy JSON","ra_Invalid JSON file.":"Nieprawidłowy plik JSON.","ra_Invalid JSON format. Expected an array.":"Nieprawidłowy format JSON. Oczekiwano tablicy.","ra_Invalid answer from server":"Nieprawidłowa odpowiedź z serwera","ra_Invalid parent folder!":"Nieprawidłowy folder nadrzędny!","ra_Invalid structure":"Nieprawidłowa struktura","ra_JSON editor":"Edytor JSON","ra_Last change":"Ostatnia zmiana",ra_Latitude:EV,"ra_License %s":"Licencja %s","ra_License agreement":"Umowa licencyjna","ra_License does not exist":"Licencja nie istnieje","ra_License expired on %s":"Licencja wygasła w dniu %s",'ra_License for other product "%s"':"Licencja na inny produkt „%s”","ra_License is for version %s, but required version is %s.":"Licencja dotyczy wersji %s, ale wymagana wersja to %s.","ra_License must be converted":"Licencja musi zostać przekonwertowana na nowszą wersję. Możesz to zrobić w swoim profilu iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Nie znaleziono licencji w menedżerze licencji. Chcesz zaktualizować licencje z iobroker.net?","ra_Listen on all IPs":"Słuchaj na wszystkich adresach IP","ra_Load configuration from file":"Załaduj konfigurację z pliku",ra_Logout:_V,ra_Longitude:fV,'ra_May not trigger "updateLicenses"':"Może nie uruchamiać „updateLicenses”",ra_Message:SV,ra_Monday:xV,"ra_Move down":"Padnij","ra_Move up":"Podnieść",ra_Name:kV,"ra_No data found in file":"Nie znaleziono danych w pliku","ra_No one license found in license manager":"Nie znaleziono licencji w menedżerze licencji","ra_No response from admin":"Brak odpowiedzi od administratora","ra_No response from the backend":"Brak odpowiedzi z zaplecza",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Osoby nie będące ekspertami mogą tworzyć nowe obiekty tylko w „0_userdata.0” lub „alias.0”.","ra_Not a number":"Nie numer","ra_OAuth Client ID":"Identyfikator klienta OAuth","ra_OAuth Client secret":"Tajny klucz klienta OAuth",ra_Objects:YV,ra_Ok:QV,"ra_On weekdays":"W dni powszednie","ra_Only following structures of objects are available:":"Dostępne są tylko następujące struktury obiektów:","ra_Only selected":"Tylko wybrane","ra_Owner group":"Grupa właścicieli","ra_Owner user":"Właściciel użytkownika","ra_Passwords are not equal!":"Hasła nie są równe!","ra_Place your files here or click here to open the browse dialog":"Umieść swoje pliki tutaj lub kliknij tutaj, aby otworzyć okno dialogowe przeglądania","ra_Please allow popups in your browser for this page!":"Proszę zezwolić na wyświetlanie wyskakujących okienek w przeglądarce dla tej strony!","ra_Please confirm":"Proszę potwierdzić","ra_Please create license":"Utwórz licencję","ra_Please enter the license":"Proszę wprowadzić licencję","ra_Please select file...":"Wybierz plik...","ra_Please select object ID...":"Wybierz identyfikator obiektu ...","ra_Port could be used by %s":"Port może być używany przez %s","ra_Port is already used by %s":"Port jest już używany przez %s","ra_Press ENTER Key to add new item":"Naciśnij klawisz ENTER, aby dodać nowy element","ra_Private certificate":"Prywatny certyfikat",ra_Product:vV,"ra_Public certificate":"Certyfikat publiczny","ra_Quality code":"Jakości","ra_Refresh tree":"Odśwież drzewo","ra_Reload files":"Załaduj ponownie pliki",ra_Rename_Move_Copy:UV,"ra_Renew %s access":"Odnów dostęp %s",ra_Repeat:bV,ra_Replace:$V,"ra_Request timed out":"Upłynął limit czasu żądania","ra_Restrict to folder":"Ogranicz do folderu",ra_Root:PV,ra_Saturday:WV,ra_Save:RV,"ra_Save and close":"Zapisz i zamknij","ra_Save configuration to file":"Zapisz konfigurację do pliku","ra_Save objects tree as JSON file":"Zapisz drzewo obiektów jako plik JSON","ra_Select all":"Zaznacz wszystko","ra_Select color":"Wybierz kolor","ra_Select predefined icon":"Wybierz predefiniowaną ikonę","ra_Select type of export":"Wybierz rodzaj eksportu",ra_Selected:JV,"ra_Selected %s object(s)":"Wybrane obiekty %s","ra_Serial number (UUID)":"Numer seryjny (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Numer seryjny (UUID) „%s” w licencji dotyczy innego urządzenia.","ra_Session will expire in %s seconds. Continue?":"Sesja wygaśnie za %s sekund. Kontynuować?","ra_Show all folders":"Pokaż wszystkie foldery","ra_Show lines between rows":"Pokaż linie między rzędami","ra_Show/Hide object descriptions":"Pokaż/ukryj opisy obiektów","ra_Show/hide filter input":"Pokaż/ukryj wejście filtra","ra_Some data are not stored. Discard?":"Niektóre dane nie są przechowywane. Wyrzucać?",ra_States:BV,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Pomyślnie autoryzowano. Token ważny do %s i zostanie automatycznie odnowiony.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Pomyślnie autoryzowano. Token ważny do %s, ale może wygasnąć, ponieważ instancja nie jest uruchomiona.","ra_Suitable license not found in license manager":"Nie znaleziono odpowiedniej licencji w menedżerze licencji",ra_Sunday:GV,"ra_Suppress question for next %s minutes":"Ukryj pytanie przez następne %s minut","ra_System language":"Język systemu","ra_Take browser position":"Zajmij pozycję z przeglądarki","ra_Take position from system settings":"Zajmij pozycję z ustawień systemowych",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Eksperci mogą tworzyć obiekty wszędzie poza drugim poziomem (np. „Vis.0” lub „javascript.0”).","ra_The page you are looking for was not found":"Strona, której szukasz nie została znaleziona","ra_The schedule will be executed every minute. Are you sure?":"Harmonogram będzie wykonywany co minutę. Czy jesteś pewien?","ra_The schedule will be executed every second. Are you sure?":"Harmonogram będzie wykonywany co sekundę. Czy jesteś pewien?",ra_Thursday:FV,ra_Timestamp:HV,"ra_Toggle expert mode":"Przełącz tryb eksperta","ra_Toggle the states view":"Przełącz widok stanów","ra_Toggle view mode":"Przełącz tryb widoku","ra_Too big":"Za duży","ra_Too small":"Za mały","ra_Transparent dialog":"Przejrzyste okno dialogowe",ra_Tuesday:VV,"ra_Unknown error":"Nieznany błąd","ra_Unknown error!":"Nieznany błąd!",ra_Update:ZV,"ra_Upload file":"Przesyłanie pliku","ra_Use all available let's encrypt certificates":"Użyj wszystkich dostępnych certyfikatów Let's Encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Użyj adaptera iobroker.acme dla certyfikatów letsencrypt","ra_Use system settings for position":"Użyj ustawień systemowych dla pozycji","ra_Used system settings":"Używane ustawienia systemowe","ra_User files":"Pliki użytkownika",ra_ValidTill:XV,ra_Value:KV,ra_Version:qV,"ra_View file":"Zobaczyć plik","ra_View: %s":"Widok: %s",ra_Wednesday:eZ,ra_Width:tZ,"ra_YAML editor":"Edytor YAML",ra_Yes:sZ,"ra_You can export all objects or just the selected branch.":"Możesz wyeksportować wszystkie obiekty lub tylko wybraną gałąź.","ra_You can filter entries by entering here some text":"Możesz filtrować wpisy, wpisując tutaj jakiś tekst","ra_You can use * as wildcard":"Możesz użyć * jako symbolu wieloznacznego",ra___different__:iZ,ra_aclEveryone_read_object:rZ,ra_aclEveryone_read_state:oZ,ra_aclEveryone_write_object:MZ,ra_aclEveryone_write_state:nZ,ra_aclGroup_read_object:aZ,ra_aclGroup_read_state:cZ,ra_aclGroup_write_object:uZ,ra_aclGroup_write_state:lZ,ra_aclOwner_read_object:NZ,ra_aclOwner_read_state:LZ,ra_aclOwner_write_object:jZ,ra_aclOwner_write_state:gZ,ra_buttons:TZ,ra_changedFrom:yZ,ra_close:DZ,ra_create_boolean_state:dZ,ra_create_channel:zZ,ra_create_device:hZ,ra_create_number_state:IZ,ra_create_state:wZ,ra_create_string_state:CZ,ra_daysShortText:AZ,ra_dow_Fr:mZ,ra_dow_Mo:pZ,ra_dow_Sa:OZ,ra_dow_Su:EZ,ra_dow_Th:_Z,ra_dow_Tu:fZ,ra_dow_We:SZ,ra_expertMode:xZ,ra_false:kZ,ra_fileType_all:YZ,ra_fileType_audio:QZ,ra_fileType_code:vZ,ra_fileType_images:UZ,ra_fileType_txt:bZ,ra_fileType_video:$Z,"ra_fileType_video,":"Wideo",ra_filter_customs:PZ,ra_filter_customs_without:WZ,ra_filter_func:RZ,ra_filter_id:JZ,ra_filter_name:BZ,ra_filter_role:GZ,ra_filter_room:FZ,ra_filter_type:HZ,"ra_import data from %s file":"Importuj dane z pliku %s",ra_invalidConfig:VZ,ra_lastChange:ZZ,ra_locally:XZ,ra_month_Apr:KZ,ra_month_Aug:qZ,ra_month_Dec:eX,ra_month_Feb:tX,ra_month_Jan:sX,ra_month_Jul:iX,ra_month_Jun:rX,ra_month_Mai:oX,ra_month_Mar:MX,ra_month_Nov:nX,ra_month_Oct:aX,ra_month_Sep:cX,ra_months_Apr:uX,ra_months_Aug:lX,ra_months_Dec:NX,ra_months_Feb:LX,ra_months_Jan:jX,ra_months_Jul:gX,ra_months_Jun:TX,ra_months_Mai:yX,ra_months_Mar:DX,ra_months_Nov:dX,ra_months_Oct:zX,ra_months_Sep:hX,"ra_no confirm for 5 mins":"brak potwierdzenia przez 5 minut",ra_none:IX,ra_object_changed_by:wX,ra_object_changed_by_user:CX,ra_otherConfig:AX,ra_qualityCode:mX,ra_repeat:pX,ra_select_folder_hint:OX,ra_show_all:EX,ra_state_changed_by:_X,ra_state_changed_from:fX,ra_timestamp:SX,ra_tooltip_ack:xX,ra_tooltip_comment:kX,ra_tooltip_copyState:YX,ra_tooltip_ctrlForLink:QX,ra_tooltip_customConfig:vX,ra_tooltip_deleteObject:UX,ra_tooltip_editObject:bX,ra_tooltip_editState:$X,ra_tooltip_expire:PX,ra_tooltip_from:WX,ra_tooltip_lc:RX,ra_tooltip_quality:JX,ra_tooltip_ts:BX,ra_tooltip_user:GX,ra_tooltip_value:FX,ra_true:HX,"ra_use seconds":"użyj sekund",ra_val:VX,"ra_via internet":"przez internet",ra_warning_every_minute:ZX,ra_warning_every_second:XX,sc_cron:KX,sc_date:qX,sc_dates:eK,sc_dow:tK,sc_dows:sK,sc_every:iK,sc_everyN_dates:rK,sc_everyN_dow:oK,sc_everyN_dows:MK,sc_everyN_hours:nK,sc_everyN_minutes:aK,sc_everyN_months:cK,sc_everyN_seconds:uK,sc_every_dates:lK,sc_every_dow:NK,sc_every_dows:LK,sc_every_hours:jK,sc_every_minutes:gK,sc_every_months:TK,sc_every_seconds:yK,sc_from:DK,sc_hours:dK,sc_interval:zK,sc_intervalBetween:hK,sc_invalid_cron:IK,sc_minutes:wK,sc_months:CK,sc_once:AK,sc_period:mK,sc_seconds:pK,sc_simple:OK,sc_specific:EK,sc_specific_dates:_K,sc_specific_dow:fK,sc_specific_dows:SK,sc_specific_hours:xK,sc_specific_minutes:kK,sc_specific_months:YK,sc_specific_seconds:QK,sc_time:vK,sc_to:UK,sc_wizard:bK,sch_all:$K,sch_astroDay:PK,sch_astroNight:WK,sch_astro_dawn:RK,sch_astro_dusk:JK,sch_astro_goldenHour:BK,sch_astro_goldenHourEnd:GK,sch_astro_nadir:FK,sch_astro_nauticalDawn:HK,sch_astro_nauticalDusk:VK,sch_astro_night:ZK,sch_astro_nightEnd:XK,sch_astro_solarNoon:KK,sch_astro_sunrise:qK,sch_astro_sunriseEnd:eq,sch_astro_sunset:tq,sch_astro_sunsetStart:sq,sch_at:iq,sch_desc_atTime:rq,sch_desc_everyDay:oq,sch_desc_everyHour:Mq,sch_desc_everyMinute:nq,sch_desc_everyMonth:aq,sch_desc_everyNDay:cq,sch_desc_everyNHours:uq,sch_desc_everyNMinutes:lq,sch_desc_everyNMonths:Nq,sch_desc_everyNWeeks:Lq,sch_desc_everyNYears:jq,sch_desc_everyWeek:gq,sch_desc_everyYear:Tq,sch_desc_intervalFromTo:yq,sch_desc_never:Dq,sch_desc_onDate:dq,sch_desc_onDates:zq,sch_desc_onEveryDate:hq,sch_desc_onMonth:Iq,sch_desc_onMonths:wq,sch_desc_onWeekday:Cq,sch_desc_onWeekdays:Aq,sch_desc_onWeekends:mq,sch_desc_onWorkdays:pq,sch_desc_onceInPast:Oq,sch_desc_once_on:Eq,sch_desc_validFrom:_q,sch_desc_validFromTo:fq,sch_desc_validTo:Sq,sch_every:xq,sch_exactTime:kq,sch_from:Yq,sch_fromTo:Qq,sch_intervalTime:vq,sch_invert:Uq,sch_no_one:bq,sch_on:$q,sch_period:Pq,sch_periodDaily:Wq,sch_periodDates:Rq,sch_periodDay:Jq,sch_periodEvery:Bq,sch_periodEveryDay:Gq,sch_periodEveryMonth:Fq,sch_periodEveryWeek:Hq,sch_periodEveryYear:Vq,sch_periodHours:Zq,sch_periodMinutes:Xq,sch_periodMonth:Kq,sch_periodMonthly:qq,sch_periodOnce:eee,sch_periodSpecificMonths:tee,sch_periodWeek:see,sch_periodWeekdays:iee,sch_periodWeekend:ree,sch_periodWeekly:oee,sch_periodWorkdays:Mee,sch_periodYear:nee,sch_periodYearly:aee,sch_specificTime:cee,sch_time:uee,sch_to:lee,sch_valid:Nee,sch_validFrom:Lee,sch_validTo:jee,sch_wholeDay:gee,sch_yearEveryMonth:Tee},Dee="Дії",dee="Додайте",zee="Скасувати",hee="Категорії",Iee="Перевірено",wee="Видалити",Cee="Закрити",Aee="Комерційний",mee="Налаштувати",pee="Підключено",Oee="Продовжити",Eee="Скопійовано",_ee="Створити",fee="Урожай",See="Delete",xee="Видалити",kee="Відкинути",Yee="Відключено",Qee="Помилка",vee="фільтр",Uee="П'ятниця",bee="Широта",$ee="Вийти",Pee="Довгота",Wee="повідомлення",Ree="понеділок",Jee="Ім'я",Bee="Об'єкти",Gee="В порядку",Fee="Продукт",Hee="Перейменувати/Перемістити/Копіювати",Vee="Повторіть",Zee="Замінити",Xee="Корінь",Kee="Субота",qee="зберегти",ete="Вибране",tte="держави",ste="неділя",ite="четвер",rte="Мітка часу",ote="вівторок",Mte="оновлення",nte="Дійсний до",ate="Значення",cte="Версія",ute="Середа",lte="Ширина",Nte="Так",Lte="інший",jte="Кожен може читати об'єкт",gte="Кожен може читати стан",Tte="Кожен може написати об'єкт",yte="Кожен може написати стан",Dte="Група може читати об'єкт",dte="Група може читати стан",zte="Група може писати об'єкт",hte="Група може писати стан",Ite="Власник може читати об'єкт",wte="Власник може читати стан",Cte="Власник може написати об'єкт",Ate="Власник може написати стан",mte="кнопки",pte="Змінено з",Ote="закрити",Ete="Створіть логічний стан",_te="Створити канал",fte="Створити пристрій",Ste="Створити номерний стан",xte="Створити состояние",kte="Створити рядковий стан",Yte="днів",Qte="О",vte="пн",Ute="Sa",bte="Нд",$te="чт",Pte="вт",Wte="ми",Rte="Експертний режим",Jte="НЕПРАВДА",Bte="Всі файли",Gte="Аудіо",Fte="Код/JSON",Hte="Зображення",Vte="текст",Zte="відео",Xte="Налаштування",Kte="без",qte="функція",ese="ID",tse="Ім'я",sse="Роль",ise="Кімната",rse="Тип",ose="Недійсні налаштування",Mse="Остання зміна",nse="локально",ase="квіт",cse="серп",use="груд",lse="лютий",Nse="січня",Lse="лип",jse="черв",gse="травень",Tse="березень",yse="Листопад",Dse="жовт",dse="вер",zse="квіт",hse="серп",Ise="груд",wse="лютий",Cse="січня",Ase="лип",mse="черв",pse="травень",Ose="березень",Ese="Листопад",_se="жовт",fse="вер",Sse="немає",xse="Об'єкт змінено",kse="Об'єкт востаннє змінено о",Yse="Налаштування з іншого адаптера %s",Qse="Код якості",vse="повторити",Use="Щоб вибрати папку, просто клацніть папку, утримуючи клавішу «Shift».",bse="Показати все",$se="Стан змінено на",Pse="Об'єкт змінено з",Wse="Мітка часу",Rse="Визнано",Jse="коментар",Bse="Скопіюйте значення стану",Gse="Утримуйте клавішу Cltr/⌘, щоб відкрити посилання",Fse="Спеціальні налаштування",Hse="Видалити об'єкт",Vse="Редагувати об'єкт",Zse="Відредагуйте значення стану",Xse="Термін дії закінчується через",Kse="Від",qse="Востаннє змінено",eie="якість",tie="Позначка часу",sie="Користувач",iie="Значення",rie="ПРАВДА",oie="Значення",Mie="Попередження: завдання CRON виконуватиметься щохвилини протягом зазначеного періоду!",nie="Попередження: завдання CRON виконуватиметься кожну секунду протягом зазначеного періоду!",aie="CRON",cie="Дата",uie="дати",lie="День",Nie="День тижня",Lie="кожен",jie="кожні N днів",gie="кожен N-й день тижня",Tie="кожні N днів тижня",yie="кожні N годин",Die="кожні N хвилин",die="кожні N місяців",zie="кожні N секунд",hie="кожен день",Iie="кожен день тижня",wie="кожен день тижня",Cie="щогодини",Aie="кожну хвилину",mie="щомісяця",pie="кожна секунда",Oie="Від",Eie="години",_ie="Інтервал",fie="Інтервал між",Sie="Недійсний CRON",xie="хвилин",kie="місяців",Yie="Один раз",Qie="Крапка",vie="секунд",Uie="просто",bie="Конкретний час",$ie="конкретні дати",Pie="конкретний день (дні) тижня",Wie="конкретний день тижня",Rie="конкретні години",Jie="конкретні хвилини",Bie="конкретні місяці",Gie="конкретні секунди",Fie="час",Hie="до",Vie="майстер",Zie="все",Xie="Астродень",Kie="Астро ніч",qie="Світанок",ere="Сутінки",tre="Золота година",sre="Кінець золотої години",ire="Надір",rre="Морський світанок",ore="Морські сутінки",Mre="ніч",nre="Кінець ночі",are="Сонячний полудень",cre="Схід сонця",ure="Кінець сходу сонця",lre="Захід сонця",Nre="Початок заходу сонця",Lre="в",jre="в %s",gre="кожен день",Tre="щогодини",yre="кожну хвилину",Dre="щомісяця",dre="кожен %s день",zre="кожні %s годин",hre="кожні %s хвилин",Ire="кожні %s місяців",wre="кожні %s тижнів",Cre="кожні %s років",Are="щотижня",mre="щороку",pre="від %s до %s",Ore="ніколи",Ere="на %s з %s",_re="на %s і %s з",fre="на кожну дату",Sre="%s",xre="%s і %s",kre="на %s",Yre="на %s і %s",Qre="на вихідних",vre="в робочі дні",Ure="більше не виконуватиметься, оскільки запуск у минулому",bre="на %s",$re="від %s",Pre="Виконати від до",Wre="до %s",Rre="кожен",Jre="Конкретний час",Bre="від",Gre="Від до",Fre="Час інтервалу",Hre="інвертувати",Vre="немає",Zre="на",Xre="Крапка",Kre="Щодня",qre="дати",eoe="День",toe="кожен",soe="Кожен день",ioe="Щомісяця",roe="Щотижня",ooe="Щороку",Moe="години",noe="хвилин",aoe="місяць",coe="Щомісяця",uoe="Один раз",loe="Конкретні місяці",Noe="тиждень",Loe="будні",joe="Вихідні",goe="Щотижня",Toe="робочі дні",yoe="рік",Doe="щорічно",doe="Конкретний час",zoe="час",hoe="до",Ioe="Дійсний",woe="від",Coe="до",Aoe="Цілий день",moe="щомісяця",poe={"ra_%s links from aliases":"%s посилань із псевдонімів","ra_%s object(s) processed":"Оброблено %s об’єктів","ra_%s was imported":"%s було імпортовано","ra_Accept license":"Прийняти ліцензію",ra_Actions:Dee,"ra_Add new child object to selected parent":"Додати новий дочірній об’єкт до вибраного батьківського","ra_Add objects tree from JSON file":"Додайте дерево об’єктів із файлу JSON","ra_Add row":"Додати рядок","ra_Advanced options":"Розширені опції","ra_All items are filtered out":"Усі елементи відфільтровано","ra_All objects":"Всі об'єкти",ra_Append:dee,"ra_Append %s entries or replace existing?":"Додати %s записів чи замінити наявні?","ra_Append or replace?":"Додати чи замінити?","ra_Are you sure?":"Ти впевнений?","ra_Auto (no custom columns)":"Автоматично (без спеціальних стовпців)","ra_Back to %s":"Назад до %s","ra_Background image":"Фонове зображення",ra_Cancel:zee,"ra_Cannot add items with set filter":"Неможливо додати елементи зі встановленим фільтром","ra_Cannot decode license":"Неможливо розшифрувати ліцензію","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Неможливо визначити положення: системні налаштування порожні, а визначення GPS вимкнено в браузері",'ra_Cannot find "%s"':'Не вдається знайти "%s"','ra_Cannot read "%s"':'Неможливо прочитати "%s"',"ra_Cannot read licenses: %s":"Неможливо прочитати ліцензії: %s","ra_Cannot retrieve options, as instance is offline":"Неможливо отримати параметри, оскільки екземпляр офлайн","ra_Cannot update attribute, because not found in the object":"Неможливо оновити атрибут, оскільки його не знайдено в об’єкті","ra_Cannot upload":"Неможливо завантажити",ra_Categories:hee,"ra_Chained certificate":"Прикутий сертифікат","ra_Change color theme":"Змінити кольорову тему","ra_Changed from":"Змінено з","ra_Channel → State":"Канал → Стан","ra_Check license":"Перевірити ліцензію",ra_Checked:Iee,ra_Clear:wee,"ra_Clear filter":"Очистити фільтр","ra_Clear icon":"Очистити значок","ra_Click to see in full size":"Натисніть, щоб побачити в повному розмірі","ra_Click to show":"Натисніть, щоб показати","ra_Clone current row":"Клонувати поточний рядок",ra_Close:Cee,"ra_Collapse all nodes":"Згорнути всі вузли","ra_Collapse one step node":"Згорнути на один рівень",ra_Commercial:Aee,ra_Configure:mee,"ra_Configure visible columns":"Налаштувати видимі стовпці","ra_Confirm deletion of %s":"Підтвердити видалення %s",ra_Connected:pee,ra_Continue:Oee,ra_Copied:Eee,"ra_Copied %s":'Скопійовано "%s"',"ra_Copy content":"Скопіюйте вміст",ra_Create:_ee,"ra_Create alias":"Створити псевдонім","ra_Create folder":"Створити папку","ra_Create new folder in %s":"Створіть нову папку в %s",ra_Crop:fee,"ra_Define CRON...":"Визначити CRON...","ra_Define functions":"Визначити функції","ra_Define rooms":"Визначте кімнати","ra_Define schedule":"Визначити розклад","ra_Define schedule...":"Визначити розклад...",ra_Del:See,ra_Delete:xee,"ra_Delete current row":"Видалити поточний рядок","ra_Deselect all":"Скасувати вибір усіх","ra_Device → Channel → State":"Пристрій → Канал → Стан","ra_Disable/Enable translation":"Вимкнути/Увімкнути переклад",ra_Discard:kee,ra_Disconnected:Yee,"ra_Do not ask for next 2 hours in this session":"Не запитуйте про наступні 2 години цього сеансу","ra_Do not export values of states":"Не експортуйте значення станів","ra_Do not use let's encrypt":"Не використовуйте let's encrypt","ra_Docker is not available":"Докер недоступний","ra_Docker is not installed or not running":"Docker не встановлено або не працює","ra_Double click to reset table layout":"Двічі клацніть, щоб скинути макет таблиці","ra_Drag 'n' drop some files here, or click to select files":"Перетягніть деякі файли сюди або натисніть, щоб вибрати файли","ra_Drop file here":"Перетягніть файл сюди","ra_Drop the files here...":"Перетягніть файл сюди...","ra_Duplicate name":"Повторюване ім'я","ra_Edit ACL":"Редагувати ACL","ra_Edit alias":"Редагувати псевдонім","ra_Edit custom config":"Редагувати спеціальну конфігурацію","ra_Edit full path":"Редагувати повний шлях","ra_Edit function":"функція редагування","ra_Edit object field":"Поле редагування об'єкта","ra_Edit role":"Редагувати роль","ra_Edit room":"Редагувати кімнату","ra_Edit value":"Редагувати значення","ra_Enter the code from that page here":"Введіть тут код з цієї сторінки",ra_Error:Qee,"ra_Expand all nodes":"Розгорнути всі вузли","ra_Expand one step node":"Розгорніть один рівень","ra_Expand/Collapse card":"Розгорнути/Згорнути картку","ra_Export configuration section":"Розділ конфігурації експорту","ra_Export data to %s file":"Експортувати дані у файл %s","ra_Failed to open JSON File":"Не вдалося відкрити файл JSON","ra_Fallback custom certificates":"Запасні спеціальні сертифікати","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл завеликий. Максимально дозволено %sk. Спробуйте використовувати SVG.",ra_Filter:vee,"ra_Filter and Data Actions":"Фільтр і дії з даними","ra_Filter files":"Фільтр файлів","ra_Folder name":"Назва папки","ra_Folder → Channel → State":"Папка → Канал → Стан","ra_Folder → Device → Channel → State":"Папка → Пристрій → Канал → Стан","ra_Folder → State":"Папка → Стан","ra_Folders always first":"Папки завжди першими",ra_Friday:Uee,"ra_From file":"З файлу","ra_From text":"З тексту","ra_Get %s access":"Отримайте доступ %s","ra_Good luck":"Удачі","ra_Hide empty folders":"Приховати порожні папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Якщо в папці не буде створено файл, він зникне після закриття браузера","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Якщо кнопка вище не працює, ви можете авторизувати цю програму вручну, перейшовши за цим посиланням","ra_Import and add configuration section":"Розділ імпорту та додавання конфігурації","ra_Import and replace configuration section":"Розділ імпорту та заміни конфігурації","ra_Import data from %s file":"Імпортувати дані з файлу %s","ra_Import from %s":"Імпортувати з %s","ra_Instance %s is alive":"Примірник %s живий","ra_Instance %s is not alive":"Примірник %s не живий","ra_Instance is not alive":"Примірник не живий","ra_Invalid CRON":"Недійсний CRON","ra_Invalid JSON":"Недійсний JSON","ra_Invalid JSON file.":"Недійсний JSON-файл.","ra_Invalid JSON format. Expected an array.":"Недійсний формат JSON. Очікується масив.","ra_Invalid answer from server":"Недійсна відповідь від сервера","ra_Invalid parent folder!":"Недійсна батьківська папка!","ra_Invalid structure":"Недійсна структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Остання зміна",ra_Latitude:bee,"ra_License %s":"Ліцензія %s","ra_License agreement":"Ліцензійна угода","ra_License does not exist":"Ліцензії не існує","ra_License expired on %s":"Термін дії ліцензії закінчився %s",'ra_License for other product "%s"':'Ліцензія на інший продукт "%s"',"ra_License is for version %s, but required version is %s.":"Ліцензія для версії %s, але потрібна версія %s.","ra_License must be converted":"Ліцензію необхідно конвертувати до новішої версії. Ви можете зробити це у своєму профілі на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Ліцензія не знайдена в менеджері ліцензій. Хочете оновити ліцензії з iobroker.net?","ra_Listen on all IPs":"Прослуховування на всіх IP","ra_Load configuration from file":"Завантажити конфігурацію з файлу",ra_Logout:$ee,ra_Longitude:Pee,'ra_May not trigger "updateLicenses"':'Може не запускати "updateLicenses"',ra_Message:Wee,ra_Monday:Ree,"ra_Move down":"Рухатися вниз","ra_Move up":"Рухатися вгору",ra_Name:Jee,"ra_No data found in file":"Немає даних у файлі","ra_No one license found in license manager":"У менеджері ліцензій не знайдено жодної ліцензії","ra_No response from admin":"Немає відповіді від адміністратора","ra_No response from the backend":"Немає відповіді від сервера",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Неексперти можуть створювати нові об’єкти лише в «0_userdata.0» або «alias.0».","ra_Not a number":"Не номер","ra_OAuth Client ID":"Ідентифікатор клієнта OAuth","ra_OAuth Client secret":"Секрет клієнта OAuth",ra_Objects:Bee,ra_Ok:Gee,"ra_On weekdays":"В будні дні","ra_Only following structures of objects are available:":"Доступні тільки такі структури об'єктів:","ra_Only selected":"Тільки обрані","ra_Owner group":"Група власників","ra_Owner user":"Користувач-власник","ra_Passwords are not equal!":"Паролі не бувають рівними!","ra_Place your files here or click here to open the browse dialog":"Розмістіть свої файли тут або натисніть тут, щоб відкрити діалогове вікно перегляду","ra_Please allow popups in your browser for this page!":"Будь ласка, дозвольте спливаючі вікна у вашому браузері для цієї сторінки!","ra_Please confirm":"Будь-ласка підтвердіть","ra_Please create license":"Будь ласка, створіть ліцензію","ra_Please enter the license":"Будь ласка, введіть ліцензію","ra_Please select file...":"Виберіть файл...","ra_Please select object ID...":"Виберіть ідентифікатор об'єкта...","ra_Port could be used by %s":"Порт може використовуватися %s","ra_Port is already used by %s":"Порт уже використовується %s","ra_Press ENTER Key to add new item":"Натисніть клавішу ENTER, щоб додати новий елемент","ra_Private certificate":"Приватний сертифікат",ra_Product:Fee,"ra_Public certificate":"Публічний сертифікат","ra_Quality code":"якість","ra_Refresh tree":"Оновити дерево","ra_Reload files":"Перезавантажте файли",ra_Rename_Move_Copy:Hee,"ra_Renew %s access":"Поновити доступ %s",ra_Repeat:Vee,ra_Replace:Zee,"ra_Request timed out":"Час запиту вичерпано","ra_Restrict to folder":"Обмежити папкою",ra_Root:Xee,ra_Saturday:Kee,ra_Save:qee,"ra_Save and close":"Зберегти та закрити","ra_Save configuration to file":"Зберегти конфігурацію у файл","ra_Save objects tree as JSON file":"Зберегти дерево об’єктів як файл JSON","ra_Select all":"Вибрати все","ra_Select color":"Виберіть колір","ra_Select predefined icon":"Виберіть попередньо визначений значок","ra_Select type of export":"Виберіть тип експорту",ra_Selected:ete,"ra_Selected %s object(s)":"Вибрані об’єкти %s","ra_Serial number (UUID)":"Серійний номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Серійний номер (UUID) "%s" у ліцензії призначений для іншого пристрою.',"ra_Session will expire in %s seconds. Continue?":"Сеанс закінчиться через %s секунд. Продовжити?","ra_Show all folders":"Показати всі папки","ra_Show lines between rows":"Показувати лінії між рядками","ra_Show/Hide object descriptions":"Показати/Сховати описи об’єктів","ra_Show/hide filter input":"Показати/сховати введення фільтра","ra_Some data are not stored. Discard?":"Деякі дані не зберігаються. Відкинути?",ra_States:tte,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизацію успішно пройшло. Токен дійсний до %s та буде автоматично поновлено.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизацію успішно виконано. Токен дійсний до %s, але його термін дії може закінчитися, оскільки екземпляр не запущено.","ra_Suitable license not found in license manager":"Відповідна ліцензія не знайдена в менеджері ліцензій",ra_Sunday:ste,"ra_Suppress question for next %s minutes":"Приховати запитання на наступні %s хвилин","ra_System language":"Системна мова","ra_Take browser position":"Займіть позицію з браузера","ra_Take position from system settings":"Займіть позицію в налаштуваннях системи",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Експерти можуть створювати об’єкти всюди, крім другого рівня (наприклад, «vis.0» або «javascript.0»).","ra_The page you are looking for was not found":"Сторінка, яку ви шукаєте, не знайдена","ra_The schedule will be executed every minute. Are you sure?":"Розклад буде виконуватися щохвилини. Ви впевнені?","ra_The schedule will be executed every second. Are you sure?":"Розклад буде виконуватися щосекунди. Ви впевнені?",ra_Thursday:ite,ra_Timestamp:rte,"ra_Toggle expert mode":"Перемкнути експертний режим","ra_Toggle the states view":"Перемкнути перегляд штатів","ra_Toggle view mode":"Перемкнути режим перегляду","ra_Too big":"Занадто великий","ra_Too small":"Занадто малий","ra_Transparent dialog":"Прозорий діалог",ra_Tuesday:ote,"ra_Unknown error":"Невідома помилка","ra_Unknown error!":"Невідома помилка!",ra_Update:Mte,"ra_Upload file":"Завантажити файл","ra_Use all available let's encrypt certificates":"Використовуйте всі доступні сертифікати let's encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Використовуйте адаптер iobroker.acme для сертифікатів letsencrypt","ra_Use system settings for position":"Використовуйте системні налаштування для позиції","ra_Used system settings":"Використані системні налаштування","ra_User files":"Файли користувача",ra_ValidTill:nte,ra_Value:ate,ra_Version:cte,"ra_View file":"Переглянути файл","ra_View: %s":"Перегляд: %s",ra_Wednesday:ute,ra_Width:lte,"ra_YAML editor":"Редактор YAML",ra_Yes:Nte,"ra_You can export all objects or just the selected branch.":"Ви можете експортувати всі об’єкти або лише вибрану гілку.","ra_You can filter entries by entering here some text":"Ви можете фільтрувати записи, ввівши тут певний текст","ra_You can use * as wildcard":"Ви можете використовувати * як символ підстановки",ra___different__:Lte,ra_aclEveryone_read_object:jte,ra_aclEveryone_read_state:gte,ra_aclEveryone_write_object:Tte,ra_aclEveryone_write_state:yte,ra_aclGroup_read_object:Dte,ra_aclGroup_read_state:dte,ra_aclGroup_write_object:zte,ra_aclGroup_write_state:hte,ra_aclOwner_read_object:Ite,ra_aclOwner_read_state:wte,ra_aclOwner_write_object:Cte,ra_aclOwner_write_state:Ate,ra_buttons:mte,ra_changedFrom:pte,ra_close:Ote,ra_create_boolean_state:Ete,ra_create_channel:_te,ra_create_device:fte,ra_create_number_state:Ste,ra_create_state:xte,ra_create_string_state:kte,ra_daysShortText:Yte,ra_dow_Fr:Qte,ra_dow_Mo:vte,ra_dow_Sa:Ute,ra_dow_Su:bte,ra_dow_Th:$te,ra_dow_Tu:Pte,ra_dow_We:Wte,ra_expertMode:Rte,ra_false:Jte,ra_fileType_all:Bte,ra_fileType_audio:Gte,ra_fileType_code:Fte,ra_fileType_images:Hte,ra_fileType_txt:Vte,ra_fileType_video:Zte,"ra_fileType_video,":"відео",ra_filter_customs:Xte,ra_filter_customs_without:Kte,ra_filter_func:qte,ra_filter_id:ese,ra_filter_name:tse,ra_filter_role:sse,ra_filter_room:ise,ra_filter_type:rse,"ra_import data from %s file":"Імпортувати дані з файлу %s",ra_invalidConfig:ose,ra_lastChange:Mse,ra_locally:nse,ra_month_Apr:ase,ra_month_Aug:cse,ra_month_Dec:use,ra_month_Feb:lse,ra_month_Jan:Nse,ra_month_Jul:Lse,ra_month_Jun:jse,ra_month_Mai:gse,ra_month_Mar:Tse,ra_month_Nov:yse,ra_month_Oct:Dse,ra_month_Sep:dse,ra_months_Apr:zse,ra_months_Aug:hse,ra_months_Dec:Ise,ra_months_Feb:wse,ra_months_Jan:Cse,ra_months_Jul:Ase,ra_months_Jun:mse,ra_months_Mai:pse,ra_months_Mar:Ose,ra_months_Nov:Ese,ra_months_Oct:_se,ra_months_Sep:fse,"ra_no confirm for 5 mins":"без підтвердження протягом 5 хв",ra_none:Sse,ra_object_changed_by:xse,ra_object_changed_by_user:kse,ra_otherConfig:Yse,ra_qualityCode:Qse,ra_repeat:vse,ra_select_folder_hint:Use,ra_show_all:bse,ra_state_changed_by:$se,ra_state_changed_from:Pse,ra_timestamp:Wse,ra_tooltip_ack:Rse,ra_tooltip_comment:Jse,ra_tooltip_copyState:Bse,ra_tooltip_ctrlForLink:Gse,ra_tooltip_customConfig:Fse,ra_tooltip_deleteObject:Hse,ra_tooltip_editObject:Vse,ra_tooltip_editState:Zse,ra_tooltip_expire:Xse,ra_tooltip_from:Kse,ra_tooltip_lc:qse,ra_tooltip_quality:eie,ra_tooltip_ts:tie,ra_tooltip_user:sie,ra_tooltip_value:iie,ra_true:rie,"ra_use seconds":"використовуйте секунди",ra_val:oie,"ra_via internet":"через інтернет",ra_warning_every_minute:Mie,ra_warning_every_second:nie,sc_cron:aie,sc_date:cie,sc_dates:uie,sc_dow:lie,sc_dows:Nie,sc_every:Lie,sc_everyN_dates:jie,sc_everyN_dow:gie,sc_everyN_dows:Tie,sc_everyN_hours:yie,sc_everyN_minutes:Die,sc_everyN_months:die,sc_everyN_seconds:zie,sc_every_dates:hie,sc_every_dow:Iie,sc_every_dows:wie,sc_every_hours:Cie,sc_every_minutes:Aie,sc_every_months:mie,sc_every_seconds:pie,sc_from:Oie,sc_hours:Eie,sc_interval:_ie,sc_intervalBetween:fie,sc_invalid_cron:Sie,sc_minutes:xie,sc_months:kie,sc_once:Yie,sc_period:Qie,sc_seconds:vie,sc_simple:Uie,sc_specific:bie,sc_specific_dates:$ie,sc_specific_dow:Pie,sc_specific_dows:Wie,sc_specific_hours:Rie,sc_specific_minutes:Jie,sc_specific_months:Bie,sc_specific_seconds:Gie,sc_time:Fie,sc_to:Hie,sc_wizard:Vie,sch_all:Zie,sch_astroDay:Xie,sch_astroNight:Kie,sch_astro_dawn:qie,sch_astro_dusk:ere,sch_astro_goldenHour:tre,sch_astro_goldenHourEnd:sre,sch_astro_nadir:ire,sch_astro_nauticalDawn:rre,sch_astro_nauticalDusk:ore,sch_astro_night:Mre,sch_astro_nightEnd:nre,sch_astro_solarNoon:are,sch_astro_sunrise:cre,sch_astro_sunriseEnd:ure,sch_astro_sunset:lre,sch_astro_sunsetStart:Nre,sch_at:Lre,sch_desc_atTime:jre,sch_desc_everyDay:gre,sch_desc_everyHour:Tre,sch_desc_everyMinute:yre,sch_desc_everyMonth:Dre,sch_desc_everyNDay:dre,sch_desc_everyNHours:zre,sch_desc_everyNMinutes:hre,sch_desc_everyNMonths:Ire,sch_desc_everyNWeeks:wre,sch_desc_everyNYears:Cre,sch_desc_everyWeek:Are,sch_desc_everyYear:mre,sch_desc_intervalFromTo:pre,sch_desc_never:Ore,sch_desc_onDate:Ere,sch_desc_onDates:_re,sch_desc_onEveryDate:fre,sch_desc_onMonth:Sre,sch_desc_onMonths:xre,sch_desc_onWeekday:kre,sch_desc_onWeekdays:Yre,sch_desc_onWeekends:Qre,sch_desc_onWorkdays:vre,sch_desc_onceInPast:Ure,sch_desc_once_on:bre,sch_desc_validFrom:$re,sch_desc_validFromTo:Pre,sch_desc_validTo:Wre,sch_every:Rre,sch_exactTime:Jre,sch_from:Bre,sch_fromTo:Gre,sch_intervalTime:Fre,sch_invert:Hre,sch_no_one:Vre,sch_on:Zre,sch_period:Xre,sch_periodDaily:Kre,sch_periodDates:qre,sch_periodDay:eoe,sch_periodEvery:toe,sch_periodEveryDay:soe,sch_periodEveryMonth:ioe,sch_periodEveryWeek:roe,sch_periodEveryYear:ooe,sch_periodHours:Moe,sch_periodMinutes:noe,sch_periodMonth:aoe,sch_periodMonthly:coe,sch_periodOnce:uoe,sch_periodSpecificMonths:loe,sch_periodWeek:Noe,sch_periodWeekdays:Loe,sch_periodWeekend:joe,sch_periodWeekly:goe,sch_periodWorkdays:Toe,sch_periodYear:yoe,sch_periodYearly:Doe,sch_specificTime:doe,sch_time:zoe,sch_to:hoe,sch_valid:Ioe,sch_validFrom:woe,sch_validTo:Coe,sch_wholeDay:Aoe,sch_yearEveryMonth:moe},Ooe="操作",Eoe="附加",_oe="取消",foe="类别",Soe="勾选",xoe="删除",koe="关",Yoe="商业的",Qoe="配置",voe="连接的",Uoe="继续",boe="复制的",$oe="创建",Poe="庄稼",Woe="Delete",Roe="删除",Joe="丢弃",Boe="断开连接",Goe="错误",Foe="筛选",Hoe="星期五",Voe="纬度",Zoe="登出",Xoe="经度",Koe="信息",qoe="周一",eMe="姓名",tMe="对象",sMe="好",iMe="产品",rMe="重命名/移动/复制",oMe="重复",MMe="代替",nMe="根",aMe="周六",cMe="保存",uMe="已选",lMe="状态",NMe="星期日",LMe="周四",jMe="时间戳记",gMe="周二",TMe="更新资料",yMe="有效期至",DMe="值",dMe="版本",zMe="周三",hMe="宽度",IMe="是的",wMe="不同的",CMe="每个人都可以阅读对象",AMe="每个人都可以阅读状态",mMe="每个人都可以写对象",pMe="每个人都可以写状态",OMe="组可以读取对象",EMe="群组可以读取状态",_Me="组可以写对象",fMe="组可以写状态",SMe="所有者可以读取对象",xMe="所有者可以读取状态",kMe="所有者可以写对象",YMe="所有者可以写状态",QMe="纽扣",vMe="更改为",UMe="关闭",bMe="创建布尔状态",$Me="创建频道",PMe="创建设备",WMe="创建号码状态",RMe="创建状态",JMe="创建字符串状态",BMe="天",GMe="r",FMe="莫",HMe="萨",VMe="苏",ZMe="Th",XMe="Tu",KMe="我们",qMe="专家模式",ene="错误的",tne="所有文件",sne="声音的",ine="代码/JSON",rne="图片",one="文本",Mne="视频",nne="设定值",ane="没有",cne="功能",une="ID",lne="名称",Nne="角色",Lne="房间",jne="类型",gne="无效的设定",Tne="最后一次变更",yne="本地",Dne="4月",dne="八月",zne="十二月",hne="二月",Ine="简",wne="七月",Cne="君",Ane="迈",mne="三月",pne="十一月",One="十月",Ene="九月",_ne="4月",fne="八月",Sne="十二月",xne="二月",kne="简",Yne="七月",Qne="君",vne="迈",Une="三月",bne="十一月",$ne="十月",Pne="九月",Wne="没有任何",Rne="物件变更者",Jne="对象上次更改时间为",Bne="来自其他适配器%s的设置",Gne="质量代码",Fne="重复",Hne="要选择文件夹,只需按住“shift”键单击文件夹即可。",Vne="显示全部",Zne="状态由",Xne="对象已从更改",Kne="时间戳记",qne="致谢国旗",eae="评论",tae="复制状态值",sae="按住 Cltr/⌘ 键打开链接",iae="自定义设置",rae="删除物件",oae="编辑物件",Mae="编辑状态值",nae="有效期:",aae="从",cae="最后改变了",uae="质量",lae="时间戳",Nae="用户",Lae="值",jae="真的",gae="值",Tae="警告:CRON 作业将在指定期间内每分钟运行一次!",yae="警告:CRON 作业将在指定期间内每秒运行一次!",Dae="周期任务",dae="日期",zae="日",hae="天",Iae="星期",wae="每",Cae="每N天",Aae="每周的第 N 天",mae="每周N天",pae="每N小时一次",Oae="每N分钟",Eae="每N个月",_ae="每N秒",fae="每天",Sae="一周的每一天",xae="一周的每一天",kae="每小时",Yae="每分钟",Qae="每月",vae="每秒",Uae="从",bae="小时",$ae="间隔",Pae="间隔时间",Wae="无效的 CRON",Rae="分钟",Jae="月",Bae="一次",Gae="周期",Fae="秒",Hae="简单模式",Vae="特定的时间",Zae="特定的日子",Xae="一周中的特定日子",Kae="特定的一周",qae="特定的小时",ece="特定的分钟",tce="特定的月份",sce="特定的描述",ice="时间",rce="至",oce="向导模式",Mce="全选",nce="天文白天",ace="天文夜晚",cce="黎明",uce="黄昏",lce="黄金时段",Nce="黄金时段结束",Lce="天底",jce="航海黎明",gce="航海黄昏",Tce="夜晚",yce="夜晚结束",Dce="正午",dce="日出",zce="日出结束",hce="日落",Ice="日落开始",wce="在",Cce="的%s",Ace="每天",mce="每小时",pce="每分钟",Oce="每月",Ece="每%s天",_ce="每%s小时",fce="每%s分钟",Sce="每%s月",xce="每%s周",kce="每%s年",Yce="每周",Qce="每年",vce="从%s到%s",Uce="决不",bce="在%s的%s上",$ce="在%s和%s上",Pce="在每天",Wce="%s",Rce="%s和%s",Jce="在%s上",Bce="在%s和%s上",Gce="在周末",Fce="在工作日",Hce="将不再执行,因为起始时间已经是过去的时间了。",Vce="在%s上",Zce="来自%s",Xce="从执行到",Kce="到%s",qce="每",eue="特定的时间",tue="从",sue="从到",iue="间隔时间",rue="倒置",oue="取消全选",Mue="的",nue="周期",aue="每天",cue="日期",uue="天",lue="每",Nue="每天",Lue="每月",jue="每周",gue="每年",Tue="小时",yue="分钟",Due="月",due="每月一次",zue="一次",hue="特定的月份",Iue="周",wue="工作日",Cue="周末",Aue="每周",mue="工作日",pue="年",Oue="每年",Eue="特定的时间",_ue="时间",fue="至",Sue="生效",xue="从",kue="至",Yue="一整天",Que="每月",vue={"ra_%s links from aliases":"来自别名的 %s 个链接","ra_%s object(s) processed":"已处理%s个对象","ra_%s was imported":"对象已导入","ra_Accept license":"接受许可",ra_Actions:Ooe,"ra_Add new child object to selected parent":"将新的子对象添加到选定的父对象","ra_Add objects tree from JSON file":"从JSON文件添加对象树","ra_Add row":"添加行","ra_Advanced options":"高级选项","ra_All items are filtered out":"所有项目都被过滤掉","ra_All objects":"所有对象",ra_Append:Eoe,"ra_Append %s entries or replace existing?":"追加 %s 条目还是替换现有条目?","ra_Append or replace?":"追加还是替换?","ra_Are you sure?":"你确定吗?","ra_Auto (no custom columns)":"自动(无自定义列)","ra_Back to %s":"返回“%s”","ra_Background image":"背景图像",ra_Cancel:_oe,"ra_Cannot add items with set filter":"无法使用设置过滤器添加项目","ra_Cannot decode license":"无法解码许可证","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"无法确定位置:系统设置为空且浏览器中禁用了 GPS 检测",'ra_Cannot find "%s"':"找不到“%s”",'ra_Cannot read "%s"':"无法阅读“%s”","ra_Cannot read licenses: %s":"无法读取许可证:%s","ra_Cannot retrieve options, as instance is offline":"无法检索选项,因为实例处于脱机状态","ra_Cannot update attribute, because not found in the object":"无法更新属性,因为在对象中找不到","ra_Cannot upload":"无法上传",ra_Categories:foe,"ra_Chained certificate":"链式证书","ra_Change color theme":"更改颜色主题","ra_Changed from":"更改为","ra_Channel → State":"频道→状态","ra_Check license":"检查许可证",ra_Checked:Soe,ra_Clear:xoe,"ra_Clear filter":"清除筛选","ra_Clear icon":"清除图标","ra_Click to see in full size":"点击查看完整尺寸","ra_Click to show":"点击显示","ra_Clone current row":"克隆当前行",ra_Close:koe,"ra_Collapse all nodes":"收合所有节点","ra_Collapse one step node":"折叠一级",ra_Commercial:Yoe,ra_Configure:Qoe,"ra_Configure visible columns":"配置可见列","ra_Confirm deletion of %s":"确认删除%s",ra_Connected:voe,ra_Continue:Uoe,ra_Copied:boe,"ra_Copied %s":'复制的"%s"',"ra_Copy content":"复制内容",ra_Create:$oe,"ra_Create alias":"创建别名","ra_Create folder":"创建文件夹","ra_Create new folder in %s":"在%s中创建新文件夹",ra_Crop:Poe,"ra_Define CRON...":"定义 CRON...","ra_Define functions":"定义功能","ra_Define rooms":"定义房间","ra_Define schedule":"定义时间表","ra_Define schedule...":"定义时间表...",ra_Del:Woe,ra_Delete:Roe,"ra_Delete current row":"删除当前行","ra_Deselect all":"全部取消选择","ra_Device → Channel → State":"设备→频道→状态","ra_Disable/Enable translation":"禁用/启用翻译",ra_Discard:Joe,ra_Disconnected:Boe,"ra_Do not ask for next 2 hours in this session":"本次会话中不要询问接下来的 2 个小时","ra_Do not export values of states":"不导出状态值","ra_Do not use let's encrypt":"不要使用让我们加密","ra_Docker is not available":"Docker 不可用","ra_Docker is not installed or not running":"Docker 未安装或未运行","ra_Double click to reset table layout":"双击重置表格布局","ra_Drag 'n' drop some files here, or click to select files":"将一些文件拖放到此处,或单击以选择文件","ra_Drop file here":"将档案放在这里","ra_Drop the files here...":"把文件放在这里...","ra_Duplicate name":"名称重复","ra_Edit ACL":"编辑访问控制列表","ra_Edit alias":"编辑别名","ra_Edit custom config":"编辑自定义配置","ra_Edit full path":"编辑完整路径","ra_Edit function":"编辑功能","ra_Edit object field":"编辑对象字段","ra_Edit role":"编辑角色","ra_Edit room":"编辑室","ra_Edit value":"编辑值","ra_Enter the code from that page here":"在此处输入该页面的代码",ra_Error:Goe,"ra_Expand all nodes":"展开所有节点","ra_Expand one step node":"扩大一级","ra_Expand/Collapse card":"展开/折叠卡","ra_Export configuration section":"导出配置部分","ra_Export data to %s file":"将数据导出到 %s 文件","ra_Failed to open JSON File":"无法打开JSON文件","ra_Fallback custom certificates":"后备自定义证书","ra_File is too big. Max %sk allowed. Try use SVG.":"文件太大。允许的最大字节%s数。尝试使用 SVG。",ra_Filter:Foe,"ra_Filter and Data Actions":"过滤和数据操作","ra_Filter files":"过滤文件","ra_Folder name":"文件夹名称","ra_Folder → Channel → State":"文件夹→频道→状态","ra_Folder → Device → Channel → State":"文件夹→设备→频道→状态","ra_Folder → State":"文件夹→状态","ra_Folders always first":"资料夹永远优先",ra_Friday:Hoe,"ra_From file":"从文件","ra_From text":"文本","ra_Get %s access":"获取 %s 访问权限","ra_Good luck":"祝你好运","ra_Hide empty folders":"隐藏空文件夹","ra_If no file will be created in the folder, it will disappear after the browser closed":"如果在该文件夹中未创建任何文件,则该文件将在浏览器关闭后消失","ra_If the button above does not work, you can authorize manually this app by visiting this url":"如果上面的按钮不起作用,您可以通过访问此网址手动授权此应用","ra_Import and add configuration section":"导入并添加配置部分","ra_Import and replace configuration section":"导入和替换配置部分","ra_Import data from %s file":"从 %s 文件导入数据","ra_Import from %s":"从 %s 导入","ra_Instance %s is alive":"实例 %s 是活动的","ra_Instance %s is not alive":"实例 %s 不存在","ra_Instance is not alive":"实例不存在","ra_Invalid CRON":"无效的 CRON","ra_Invalid JSON":"JSON 无效","ra_Invalid JSON file.":"无效的JSON文件。","ra_Invalid JSON format. Expected an array.":"JSON格式无效。应为数组。","ra_Invalid answer from server":"来自服务器的无效答案","ra_Invalid parent folder!":"父文件夹无效!","ra_Invalid structure":"结构无效","ra_JSON editor":"JSON 编辑器","ra_Last change":"最后一次变更",ra_Latitude:Voe,"ra_License %s":"许可证 %s","ra_License agreement":"许可协议","ra_License does not exist":"许可证不存在","ra_License expired on %s":"许可证已于 %s 过期",'ra_License for other product "%s"':"其他产品“%s”的许可证","ra_License is for version %s, but required version is %s.":"许可证适用于版本 %s,但所需版本为 %s。","ra_License must be converted":"许可证必须转换为更新版本。您可以在 iobroker.net 个人资料中执行此操作。","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"在许可证管理器中找不到许可证。您要从 iobroker.net 更新许可证吗?","ra_Listen on all IPs":"监听所有IP","ra_Load configuration from file":"从文件加载配置",ra_Logout:Zoe,ra_Longitude:Xoe,'ra_May not trigger "updateLicenses"':"可能不会触发“updateLicenses”",ra_Message:Koe,ra_Monday:qoe,"ra_Move down":"下移","ra_Move up":"提升",ra_Name:eMe,"ra_No data found in file":"文件中未找到数据","ra_No one license found in license manager":"许可证管理器中未找到任何许可证","ra_No response from admin":"管理员没有回应","ra_No response from the backend":"后端无响应",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"非专家只能在“ 0_userdata.0”或“ alias.0”中创建新对象。","ra_Not a number":"不是数字","ra_OAuth Client ID":"OAuth客户端ID","ra_OAuth Client secret":"OAuth 客户端密钥",ra_Objects:tMe,ra_Ok:sMe,"ra_On weekdays":"在工作日","ra_Only following structures of objects are available:":"仅以下对象结构可用:","ra_Only selected":"只选择","ra_Owner group":"所有者组","ra_Owner user":"所有者用户","ra_Passwords are not equal!":"密码不相等!","ra_Place your files here or click here to open the browse dialog":"将文件放在此处或单击此处打开浏览对话框","ra_Please allow popups in your browser for this page!":"请允许浏览器弹出此页面!","ra_Please confirm":"请确认","ra_Please create license":"请创建许可证","ra_Please enter the license":"请输入许可证","ra_Please select file...":"请选择文件...","ra_Please select object ID...":"请选择对象ID ...","ra_Port could be used by %s":"%s 可以使用端口","ra_Port is already used by %s":"端口已被 %s 使用","ra_Press ENTER Key to add new item":"按 ENTER 键添加新项目","ra_Private certificate":"私有证书",ra_Product:iMe,"ra_Public certificate":"公共证书","ra_Quality code":"质量代码","ra_Refresh tree":"刷新树","ra_Reload files":"重新载入文件",ra_Rename_Move_Copy:rMe,"ra_Renew %s access":"续订 %s 访问权限",ra_Repeat:oMe,ra_Replace:MMe,"ra_Request timed out":"请求超时","ra_Restrict to folder":"限制到文件夹",ra_Root:nMe,ra_Saturday:aMe,ra_Save:cMe,"ra_Save and close":"保存并关闭","ra_Save configuration to file":"将配置保存到文件","ra_Save objects tree as JSON file":"将对象树另存为JSON文件","ra_Select all":"全选","ra_Select color":"选择颜色","ra_Select predefined icon":"选择预定义图标","ra_Select type of export":"选择导出类型",ra_Selected:uMe,"ra_Selected %s object(s)":"选定的 %s 个对象","ra_Serial number (UUID)":"序列号 (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"许可证中的序列号 (UUID)“%s”用于其他设备。","ra_Session will expire in %s seconds. Continue?":"会话将在 %s 秒后过期。是否继续?","ra_Show all folders":"显示所有文件夹","ra_Show lines between rows":"显示行之间的线","ra_Show/Hide object descriptions":"显示/隐藏对象描述","ra_Show/hide filter input":"显示/隐藏过滤器输入","ra_Some data are not stored. Discard?":"部分数据未存储。丢弃?",ra_States:lMe,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"授权成功。令牌有效期至 %s,并将自动续订。","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"授权成功。令牌有效期至 %s,但由于实例未运行,令牌可能会过期。","ra_Suitable license not found in license manager":"在许可证管理器中找不到合适的许可证",ra_Sunday:NMe,"ra_Suppress question for next %s minutes":"在接下来的%s分钟内取消提问","ra_System language":"系统语言","ra_Take browser position":"从浏览器获取位置","ra_Take position from system settings":"从系统设置中获取位置",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"专家可以在任何地方创建对象,但要从第二层开始(例如“ vis.0”或“ javascript.0”)。","ra_The page you are looking for was not found":"未找到您要查找的页面","ra_The schedule will be executed every minute. Are you sure?":"该计划将每分钟执行一次。您确定吗?","ra_The schedule will be executed every second. Are you sure?":"该计划将每秒执行一次。你确定吗?",ra_Thursday:LMe,ra_Timestamp:jMe,"ra_Toggle expert mode":"切换专家模式","ra_Toggle the states view":"切换状态视图","ra_Toggle view mode":"切换检视模式","ra_Too big":"太大","ra_Too small":"太小","ra_Transparent dialog":"透明对话框",ra_Tuesday:gMe,"ra_Unknown error":"未知错误","ra_Unknown error!":"未知错误!",ra_Update:TMe,"ra_Upload file":"上传文件","ra_Use all available let's encrypt certificates":"使用所有可用的让我们加密证书","ra_Use iobroker.acme adapter for letsencrypt certificates":"使用 iobroker.acme 适配器获取 letsencrypt 证书","ra_Use system settings for position":"使用系统设置定位","ra_Used system settings":"使用的系统设置","ra_User files":"用户档案",ra_ValidTill:yMe,ra_Value:DMe,ra_Version:dMe,"ra_View file":"查看文件","ra_View: %s":"查看:%s",ra_Wednesday:zMe,ra_Width:hMe,"ra_YAML editor":"YAML 编辑器",ra_Yes:IMe,"ra_You can export all objects or just the selected branch.":"您可以导出所有对象或仅导出选定的分支。","ra_You can filter entries by entering here some text":"您可以通过在此处输入一些文本来过滤条目","ra_You can use * as wildcard":"您可以使用 * 作为通配符",ra___different__:wMe,ra_aclEveryone_read_object:CMe,ra_aclEveryone_read_state:AMe,ra_aclEveryone_write_object:mMe,ra_aclEveryone_write_state:pMe,ra_aclGroup_read_object:OMe,ra_aclGroup_read_state:EMe,ra_aclGroup_write_object:_Me,ra_aclGroup_write_state:fMe,ra_aclOwner_read_object:SMe,ra_aclOwner_read_state:xMe,ra_aclOwner_write_object:kMe,ra_aclOwner_write_state:YMe,ra_buttons:QMe,ra_changedFrom:vMe,ra_close:UMe,ra_create_boolean_state:bMe,ra_create_channel:$Me,ra_create_device:PMe,ra_create_number_state:WMe,ra_create_state:RMe,ra_create_string_state:JMe,ra_daysShortText:BMe,ra_dow_Fr:GMe,ra_dow_Mo:FMe,ra_dow_Sa:HMe,ra_dow_Su:VMe,ra_dow_Th:ZMe,ra_dow_Tu:XMe,ra_dow_We:KMe,ra_expertMode:qMe,ra_false:ene,ra_fileType_all:tne,ra_fileType_audio:sne,ra_fileType_code:ine,ra_fileType_images:rne,ra_fileType_txt:one,ra_fileType_video:Mne,"ra_fileType_video,":"视频",ra_filter_customs:nne,ra_filter_customs_without:ane,ra_filter_func:cne,ra_filter_id:une,ra_filter_name:lne,ra_filter_role:Nne,ra_filter_room:Lne,ra_filter_type:jne,"ra_import data from %s file":"从 %s 文件导入数据",ra_invalidConfig:gne,ra_lastChange:Tne,ra_locally:yne,ra_month_Apr:Dne,ra_month_Aug:dne,ra_month_Dec:zne,ra_month_Feb:hne,ra_month_Jan:Ine,ra_month_Jul:wne,ra_month_Jun:Cne,ra_month_Mai:Ane,ra_month_Mar:mne,ra_month_Nov:pne,ra_month_Oct:One,ra_month_Sep:Ene,ra_months_Apr:_ne,ra_months_Aug:fne,ra_months_Dec:Sne,ra_months_Feb:xne,ra_months_Jan:kne,ra_months_Jul:Yne,ra_months_Jun:Qne,ra_months_Mai:vne,ra_months_Mar:Une,ra_months_Nov:bne,ra_months_Oct:$ne,ra_months_Sep:Pne,"ra_no confirm for 5 mins":"5分钟内无需确认",ra_none:Wne,ra_object_changed_by:Rne,ra_object_changed_by_user:Jne,ra_otherConfig:Bne,ra_qualityCode:Gne,ra_repeat:Fne,ra_select_folder_hint:Hne,ra_show_all:Vne,ra_state_changed_by:Zne,ra_state_changed_from:Xne,ra_timestamp:Kne,ra_tooltip_ack:qne,ra_tooltip_comment:eae,ra_tooltip_copyState:tae,ra_tooltip_ctrlForLink:sae,ra_tooltip_customConfig:iae,ra_tooltip_deleteObject:rae,ra_tooltip_editObject:oae,ra_tooltip_editState:Mae,ra_tooltip_expire:nae,ra_tooltip_from:aae,ra_tooltip_lc:cae,ra_tooltip_quality:uae,ra_tooltip_ts:lae,ra_tooltip_user:Nae,ra_tooltip_value:Lae,ra_true:jae,"ra_use seconds":"用秒",ra_val:gae,"ra_via internet":"通过互联网",ra_warning_every_minute:Tae,ra_warning_every_second:yae,sc_cron:Dae,sc_date:dae,sc_dates:zae,sc_dow:hae,sc_dows:Iae,sc_every:wae,sc_everyN_dates:Cae,sc_everyN_dow:Aae,sc_everyN_dows:mae,sc_everyN_hours:pae,sc_everyN_minutes:Oae,sc_everyN_months:Eae,sc_everyN_seconds:_ae,sc_every_dates:fae,sc_every_dow:Sae,sc_every_dows:xae,sc_every_hours:kae,sc_every_minutes:Yae,sc_every_months:Qae,sc_every_seconds:vae,sc_from:Uae,sc_hours:bae,sc_interval:$ae,sc_intervalBetween:Pae,sc_invalid_cron:Wae,sc_minutes:Rae,sc_months:Jae,sc_once:Bae,sc_period:Gae,sc_seconds:Fae,sc_simple:Hae,sc_specific:Vae,sc_specific_dates:Zae,sc_specific_dow:Xae,sc_specific_dows:Kae,sc_specific_hours:qae,sc_specific_minutes:ece,sc_specific_months:tce,sc_specific_seconds:sce,sc_time:ice,sc_to:rce,sc_wizard:oce,sch_all:Mce,sch_astroDay:nce,sch_astroNight:ace,sch_astro_dawn:cce,sch_astro_dusk:uce,sch_astro_goldenHour:lce,sch_astro_goldenHourEnd:Nce,sch_astro_nadir:Lce,sch_astro_nauticalDawn:jce,sch_astro_nauticalDusk:gce,sch_astro_night:Tce,sch_astro_nightEnd:yce,sch_astro_solarNoon:Dce,sch_astro_sunrise:dce,sch_astro_sunriseEnd:zce,sch_astro_sunset:hce,sch_astro_sunsetStart:Ice,sch_at:wce,sch_desc_atTime:Cce,sch_desc_everyDay:Ace,sch_desc_everyHour:mce,sch_desc_everyMinute:pce,sch_desc_everyMonth:Oce,sch_desc_everyNDay:Ece,sch_desc_everyNHours:_ce,sch_desc_everyNMinutes:fce,sch_desc_everyNMonths:Sce,sch_desc_everyNWeeks:xce,sch_desc_everyNYears:kce,sch_desc_everyWeek:Yce,sch_desc_everyYear:Qce,sch_desc_intervalFromTo:vce,sch_desc_never:Uce,sch_desc_onDate:bce,sch_desc_onDates:$ce,sch_desc_onEveryDate:Pce,sch_desc_onMonth:Wce,sch_desc_onMonths:Rce,sch_desc_onWeekday:Jce,sch_desc_onWeekdays:Bce,sch_desc_onWeekends:Gce,sch_desc_onWorkdays:Fce,sch_desc_onceInPast:Hce,sch_desc_once_on:Vce,sch_desc_validFrom:Zce,sch_desc_validFromTo:Xce,sch_desc_validTo:Kce,sch_every:qce,sch_exactTime:eue,sch_from:tue,sch_fromTo:sue,sch_intervalTime:iue,sch_invert:rue,sch_no_one:oue,sch_on:Mue,sch_period:nue,sch_periodDaily:aue,sch_periodDates:cue,sch_periodDay:uue,sch_periodEvery:lue,sch_periodEveryDay:Nue,sch_periodEveryMonth:Lue,sch_periodEveryWeek:jue,sch_periodEveryYear:gue,sch_periodHours:Tue,sch_periodMinutes:yue,sch_periodMonth:Due,sch_periodMonthly:due,sch_periodOnce:zue,sch_periodSpecificMonths:hue,sch_periodWeek:Iue,sch_periodWeekdays:wue,sch_periodWeekend:Cue,sch_periodWeekly:Aue,sch_periodWorkdays:mue,sch_periodYear:pue,sch_periodYearly:Oue,sch_specificTime:Eue,sch_time:_ue,sch_to:fue,sch_valid:Sue,sch_validFrom:xue,sch_validTo:kue,sch_wholeDay:Yue,sch_yearEveryMonth:Que},Uue={en:J1,de:eC,ru:uO,pt:hx,nl:fv,fr:P9,it:XR,es:nV,pl:yee,uk:poe,"zh-cn":vue},bue=` +html { + height: 100%; +} + +body { + margin: 0; + padding: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + width: 100%; + height: 100%; + overflow: hidden; +} + +/* scrollbar */ +::-webkit-scrollbar-track { + background-color: #ccc; + border-radius: 5px; +} + +::-webkit-scrollbar { + width: 5px; + height: 5px; + background-color: #ccc; +} + +::-webkit-scrollbar-thumb { + background-color: #575757; + border-radius: 5px; +} + +#root { + height: 100%; +} + +.App { + height: 100%; +} + +@keyframes glow { + from { + background-color: initial; + } + to { + background-color: #58c458; + } +} +`;function $ue(){try{return window.self!==window.top}catch{return!0}}class qt extends qs{socket;isIFrame=$ue();instance;adapterName;instanceId;newReact;encryptedFields;sentryDSN;alertDialogRendered;_secret;_systemConfig;savedNative;common=null;sentryStarted=!1;sentryInited=!1;resizeTimer=null;constructor(e,t){const s=e.Connection||(t==null?void 0:t.Connection)||Ee;if(!window.document.getElementById("generic-app-iobroker-component")){const N=window.document.createElement("style");N.setAttribute("id","generic-app-iobroker-component"),N.innerHTML=bue,window.document.head.appendChild(N)}if(!qt.isWeb()&&window.io&&window.location.port==="3000")try{const N=new window.SocketClient;delete window.io,window.io=N}catch{}super(e),yg();const r=(window.location.search||"").replace(/^\?/,"").replace(/#.*$/,""),o={};r.trim().split("&").filter(N=>N.trim()).forEach(N=>{const c=N.split("="),[L,j]=c;o[L]=c.length===2?j:!0,o[L]==="true"?o[L]=!0:o[L]==="false"&&(o[L]=!1)}),this.instance=(t==null?void 0:t.instance)??e.instance??(o.instance!==void 0?parseInt(o.instance,10)||0:parseInt(window.location.search.slice(1),10)||0);const M=window.location.pathname.split("/");this.adapterName=(t==null?void 0:t.adapterName)||e.adapterName||window.adapterName||M[M.length-2]||"iot",this.instanceId=`system.adapter.${this.adapterName}.${this.instance}`,this.newReact=o.newReact===!0;const a=qs.getLocation();a.tab=a.tab||(window._localStorage||window.localStorage).getItem(`${this.adapterName}-adapter`)||"";const u=this.createTheme(o.theme);this.state={...this.state,selectedTab:(window._localStorage||window.localStorage).getItem(`${this.adapterName}-adapter`)||"",selectedTabNum:-1,native:{},errorText:"",changed:!1,connected:!1,loaded:!1,isConfigurationError:"",expertMode:!1,toast:"",theme:u,themeName:this.getThemeName(u),themeType:this.getThemeType(u),bottomButtons:(t&&t.bottomButtons)===!1?!1:(e==null?void 0:e.bottomButtons)!==!1,width:qt.getWidth(),confirmClose:!1,_alert:!1,_alertType:"info",_alertMessage:""};const l=Uue;t!=null&&t.translations?Object.keys(t.translations).forEach(N=>{t.translations&&(l[N]=Object.assign(l[N],t.translations[N]||{}))}):e.translations&&Object.keys(e.translations).forEach(N=>{e.translations&&(l[N]=Object.assign(l[N],e.translations[N]||{}))}),D.setTranslations(l),this.savedNative={},this.encryptedFields=e.encryptedFields||(t==null?void 0:t.encryptedFields)||[],this.sentryDSN=(t==null?void 0:t.sentryDSN)||e.sentryDSN,window.socketUrl&&(window.socketUrl.startsWith(":")?window.socketUrl=`${window.location.protocol}//${window.location.hostname}${window.socketUrl}`:!window.socketUrl.startsWith("http://")&&!window.socketUrl.startsWith("https://")&&(window.socketUrl=`${window.location.protocol}//${window.socketUrl}`)),this.alertDialogRendered=!1,window.iobOldAlert||(window.iobOldAlert=window.alert),window.alert=N=>{if(!this.alertDialogRendered){window.iobOldAlert(N);return}N!=null&&N.toString().toLowerCase().includes("error")?(console.error(N),this.showAlert(N.toString(),"error")):(console.log(N),this.showAlert(N.toString(),"info"))},this.socket=new s({...(e==null?void 0:e.socket)||(t==null?void 0:t.socket),name:this.adapterName,doNotLoadAllObjects:t==null?void 0:t.doNotLoadAllObjects,onProgress:N=>{N===at.CONNECTING?this.setState({connected:!1}):N===at.READY?this.setState({connected:!0}):this.setState({connected:!0})},onReady:()=>{D.setLanguage(this.socket.systemLang),this.socket.subscribeObject("system.config",this.onSystemConfigChanged).then(()=>this.getSystemConfig()).then(N=>(this._secret=typeof N<"u"&&N.native&&N.native.secret||"Zgfr56gFe87jJOM",this._systemConfig=(N==null?void 0:N.common)||{},this.socket.getObject(this.instanceId))).then(async N=>{var y,d;let c;const L=N,g=((y=await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`))==null?void 0:y.val)!==!1&&((d=this._systemConfig)==null?void 0:d.diag)!=="none"&&(L==null?void 0:L.common)&&L.common.name&&L.common.version&&!L.common.disableDataReporting&&window.location.host!=="localhost:3000";!this.sentryStarted&&this.sentryDSN&&g&&(this.sentryStarted=!0,Tg({dsn:this.sentryDSN,release:`iobroker.${L.common.name}@${L.common.version}`,integrations:[vc()]}),console.log("Sentry initialized")),!this.sentryInited&&g&&(this.sentryInited=!0,c=this.socket.getObject("system.meta.uuid").then(I=>{I&&I.native&&I.native.uuid&&Lt().setUser({id:I.native.uuid})})),c=c instanceof Promise?c:Promise.resolve(),c.then(()=>{L?(this.common=L==null?void 0:L.common,this.onPrepareLoad(L.native,L.encryptedNative),this.savedNative=JSON.parse(JSON.stringify(L.native)),this.setState({native:L.native,loaded:!0,expertMode:this.getExpertMode()},()=>this.onConnectionReady&&this.onConnectionReady())):(console.warn("Cannot load instance settings"),this.setState({native:{},loaded:!0,expertMode:this.getExpertMode()},()=>this.onConnectionReady&&this.onConnectionReady()))})}).catch(N=>window.alert(`Cannot settings: ${N}`))},onError:N=>{console.error(N),this.showError(N)}})}static isWeb(){return window.socketUrl!==void 0}showAlert(e,t){t!=="error"&&t!=="warning"&&t!=="info"&&t!=="success"&&(t="info"),this.setState({_alert:!0,_alertType:t,_alertMessage:e})}renderAlertSnackbar(){return this.alertDialogRendered=!0,n.createElement(Jr,{style:this.state._alertType==="error"?{backgroundColor:"#f44336"}:this.state._alertType==="success"?{backgroundColor:"#4caf50"}:void 0,open:this.state._alert,autoHideDuration:6e3,onClose:(e,t)=>t!=="clickaway"&&this.setState({_alert:!1}),message:this.state._alertMessage})}onSystemConfigChanged=(e,t)=>{var s,r;t&&e==="system.config"&&(this.socket.systemLang!==(t==null?void 0:t.common.language)&&(this.socket.systemLang=(t==null?void 0:t.common.language)||"en",D.setLanguage(this.socket.systemLang)),((s=this._systemConfig)==null?void 0:s.expertMode)!==!!((r=t==null?void 0:t.common)!=null&&r.expertMode)?(this._systemConfig=(t==null?void 0:t.common)||{},this.setState({expertMode:this.getExpertMode()})):this._systemConfig=(t==null?void 0:t.common)||{})};componentDidMount(){window.addEventListener("resize",this.onResize,!0),window.addEventListener("message",this.onReceiveMessage,!1),super.componentDidMount()}componentWillUnmount(){window.removeEventListener("resize",this.onResize,!0),window.removeEventListener("message",this.onReceiveMessage,!1),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null),window.iobOldAlert&&(window.alert=window.iobOldAlert,delete window.iobOldAlert),super.componentWillUnmount()}onReceiveMessage=e=>{if(e!=null&&e.data)if(typeof e.data=="string"&&e.data==="updateTheme"||e.data&&typeof e.data=="object"&&e.data.type==="updateTheme"){const t=E.getThemeName();E.setThemeName(t);const s=this.createTheme(t);this.setState({theme:s,themeName:this.getThemeName(s),themeType:this.getThemeType(s)},()=>{this.props.onThemeChange&&this.props.onThemeChange(t),this.onThemeChanged&&this.onThemeChanged(t)})}else e.data==="updateExpertMode"?this.onToggleExpertMode&&this.onToggleExpertMode(this.getExpertMode()):e.data!=="chartReady"&&console.debug(`Received unknown message: "${JSON.stringify(e.data)}". May be it will be processed later`)};onResize=()=>{this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout(()=>{this.resizeTimer=null,this.setState({width:qt.getWidth()})},200)};static getWidth(){const e={xs:0,sm:600,md:960,lg:1280,xl:1920},t=window.innerWidth;return Object.keys(e).reverse().find(o=>t>=e[o])||"xs"}createTheme(e){return gN(E.getThemeName(e))}getThemeName(e){return e.name}getThemeType(e){return e.palette.mode}onThemeChanged(e){}onToggleExpertMode(e){}toggleTheme(e){const t=this.state.themeName;if(e=e||(t==="dark"||t==="blue"||t==="colored"?"light":"dark"),e!==t){E.setThemeName(e);const s=this.createTheme(e);this.setState({theme:s,themeName:this.getThemeName(s),themeType:this.getThemeType(s)},()=>{this.props.onThemeChange&&this.props.onThemeChange(e||"light"),this.onThemeChanged&&this.onThemeChanged(e||"light")})}}getSystemConfig(){return this.socket.getSystemConfig()}getExpertMode(){var e;return window.sessionStorage.getItem("App.expertMode")==="true"||!!((e=this._systemConfig)!=null&&e.expertMode)}onConnectionReady(){}encrypt(e){let t="";if(this._secret)for(let s=0;s{e[s]&&(e[s]=this.encrypt(e[s]))}),!0}onPrepareLoad(e,t){var s;(s=this.encryptedFields)==null||s.forEach(r=>{e[r]&&(e[r]=this.decrypt(e[r]))}),t==null||t.forEach(r=>{this.encryptedFields=this.encryptedFields||[],!this.encryptedFields.includes(r)&&this.encryptedFields.push(r),e[r]&&(e[r]=this.decrypt(e[r]))})}async getExtendableInstances(){try{const e=await this.socket.getObjectViewSystem("instance","system.adapter.","system.adapter.香");return Object.values(e).filter(t=>{var s;return!!((s=t==null?void 0:t.common)!=null&&s.webExtendable)})}catch{return[]}}async getIpAddresses(e){var o;const t=await this.socket.getHostByIp(e||((o=this.common)==null?void 0:o.host)||""),s=t.find(M=>M.address==="0.0.0.0");s&&(s.name=`[IPv4] 0.0.0.0 - ${D.t("ra_Listen on all IPs")}`);const r=t.find(M=>M.address==="::");return r&&(r.name=`[IPv6] :: - ${D.t("ra_Listen on all IPs")}`),t}onSave(e){let t;if(this.state.isConfigurationError){this.setState({errorText:this.state.isConfigurationError});return}this.socket.getObject(this.instanceId).then(s=>{t=s||{};for(const r in this.state.native)Object.prototype.hasOwnProperty.call(this.state.native,r)&&(this.state.native[r]===null?t.native[r]=null:this.state.native[r]!==void 0?t.native[r]=JSON.parse(JSON.stringify(this.state.native[r])):delete t.native[r]);if(this.state.common)for(const r in this.state.common)this.state.common[r]===null?t.common[r]=null:this.state.common[r]!==void 0?t.common[r]=JSON.parse(JSON.stringify(this.state.common[r])):delete t.common[r];return this.onPrepareSave(t.native)!==!1?this.socket.setObject(this.instanceId,t):Promise.reject(new Error("Invalid configuration"))}).then(()=>{this.savedNative=t.native,globalThis.changed=!1;try{window.parent.postMessage("nochange","*")}catch{}this.setState({changed:!1},()=>{e&&qt.onClose()})}).catch(s=>console.error(`Cannot save configuration: ${s}`))}renderToast(){return this.state.toast?n.createElement(Jr,{anchorOrigin:{vertical:"bottom",horizontal:"left"},open:!0,autoHideDuration:6e3,onClose:()=>this.setState({toast:""}),ContentProps:{"aria-describedby":"message-id"},message:n.createElement("span",{id:"message-id"},this.state.toast),action:[n.createElement(P,{key:"close","aria-label":"Close",color:"inherit",onClick:()=>this.setState({toast:""}),size:"large"},n.createElement(ge,null))]}):null}static onClose(){if(typeof window.parent<"u"&&window.parent)try{window.parent.$iframeDialog&&typeof window.parent.$iframeDialog.close=="function"?window.parent.$iframeDialog.close():window.parent.postMessage("close","*")}catch{window.parent.postMessage("close","*")}}renderError(){return this.state.errorText?n.createElement(Hc,{text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}getIsChanged(e){e=e||this.state.native;const t=JSON.stringify(e)!==JSON.stringify(this.savedNative);return globalThis.changed=t,t}onLoadConfig(e){JSON.stringify(e)!==JSON.stringify(this.state.native)&&this.setState({native:e,changed:this.getIsChanged(e)})}setConfigurationError(e){this.state.isConfigurationError!==e&&this.setState({isConfigurationError:e})}renderSaveCloseButtons(){return!this.state.confirmClose&&!this.state.bottomButtons?null:n.createElement(n.Fragment,null,this.state.bottomButtons?n.createElement(kg,{theme:this.state.theme,newReact:this.newReact,noTextOnButtons:this.state.width==="xs"||this.state.width==="sm"||this.state.width==="md",changed:this.state.changed,onSave:e=>this.onSave(e),onClose:()=>{this.state.changed?this.setState({confirmClose:!0}):qt.onClose()},error:!!this.state.isConfigurationError}):null,this.state.confirmClose?n.createElement(Fc,{title:D.t("ra_Please confirm"),text:D.t("ra_Some data are not stored. Discard?"),ok:D.t("ra_Discard"),cancel:D.t("ra_Cancel"),onClose:e=>this.setState({confirmClose:!1},()=>e&&qt.onClose())}):null)}_updateNativeValue(e,t,s){typeof t!="object"&&(t=t.split("."));const r=t.shift()||"";if(!t.length)return s&&typeof s=="object"?JSON.stringify(e[r])!==JSON.stringify(s)?(e[r]=s,!0):!1:e[r]!==s?(e[r]=s,!0):!1;if(e[r]=e[r]||{},typeof e[r]!="object")throw new Error(`attribute ${r} is no object, but ${typeof e[r]}`);return this._updateNativeValue(e[r],t,s)}updateNativeValue(e,t,s){const r=JSON.parse(JSON.stringify(this.state.native));if(this._updateNativeValue(r,e,t)){const o=this.getIsChanged(r);if(o!==this.state.changed)try{window.parent.postMessage(o?"change":"nochange","*")}catch{}this.setState({native:r,changed:o},s)}}showError(e){this.setState({errorText:e})}showToast(e){this.setState({toast:e})}renderHelperDialogs(){return n.createElement(n.Fragment,null,this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar())}render(){return this.state.loaded?n.createElement("div",{className:"App"},this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar()):n.createElement(Og,{themeType:this.state.themeType})}}const et={color:{width:36,height:14,borderRadius:2},delButton:{marginTop:16},swatch:{mt:"16px",p:"5px",backgroundColor:"background.paper",borderRadius:"1px",boxShadow:"0 0 0 1px rgba(0,0,0,.1)",display:"inline-block",cursor:"pointer",verticalAlign:"middle"},swatchDisabled:{opacity:.5,cursor:"default"},popover:{"& .MuiPaper-root":{textAlign:"right",backgroundColor:"#00000000",boxShadow:"none"}},popoverList:{padding:0},closeButton:i=>({backgroundColor:`${i.palette.background.paper} !important`,borderRadius:"0 0 25% 25%","&:hover":{backgroundColor:`${i.palette.secondary.main} !important`}}),textDense:{mt:0,mb:0},iconButton:{width:16,height:16},button:{width:32,height:32,minWidth:32,minHeight:32}};class Vs extends ze{constructor(e){super(e),this.state={displayColorPicker:!1,color:this.props.value||this.props.color||"",anchorEl:null}}handleClick=e=>{this.setState({displayColorPicker:!this.state.displayColorPicker,anchorEl:this.state.displayColorPicker?null:e.currentTarget})};handleClose=()=>{this.setState({displayColorPicker:!1,anchorEl:null})};static getColor(e,t){if(e&&typeof e=="object"){const s=e;if(s.rgb)return t?`#${s.rgb.r.toString(16).padStart(2,"0")}${s.rgb.g.toString(16).padStart(2,"0")}${s.rgb.b.toString(16).padStart(2,"0")}`:`rgba(${s.rgb.r},${s.rgb.g},${s.rgb.b},${s.rgb.a})`;const r=e;return t?`#${r.r.toString(16).padStart(2,"0")}${r.g.toString(16).padStart(2,"0")}${r.b.toString(16).padStart(2,"0")}`:`rgba(${r.r},${r.g},${r.b},${r.a})`}return typeof e=="string"?t?Vs.rgb2hex(e||""):e||"":""}static rgb2hex(e){const t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(t){const s=parseInt(t[1],10).toString(16).padStart(2,"0"),r=parseInt(t[2],10).toString(16).padStart(2,"0"),o=parseInt(t[3],10).toString(16).padStart(2,"0");return(t==null?void 0:t.length)===4?`#${s}${r}${o}`:e}return e}handleChange=e=>{this.setState({color:e},()=>this.props.onChange&&this.props.onChange(Vs.getColor(e)))};componentDidUpdate(e,t){const s=Vs.getColor(this.props.color||this.props.value||"");s!==t.color&&this.setState({color:s})}renderCustomPalette(){return this.props.customPalette?n.createElement("div",{style:{width:"100%",display:"flex",flexWrap:"wrap"}},this.props.customPalette.map(e=>n.createElement(X,{style:et.button,key:e,onClick:()=>{this.handleChange(e),setTimeout(()=>this.handleClose(),300)}},n.createElement("div",{style:{...et.iconButton,background:e}})))):null}render(){var s;const e={...this.props.style||{}};e.position="relative";const{color:t}=this.state;return n.createElement(W,{component:"div",style:e,sx:this.props.sx||void 0,className:this.props.className||""},this.props.noInputField?null:n.createElement(le,{disabled:this.props.disabled,variant:"standard",id:"ar_color_picker_name",label:this.props.label||this.props.name,value:t||"",margin:"dense",sx:{"&.MuiFormControl-root":et.textDense,width:t?"calc(100% - 80px)":"calc(100% - 56px)",mr:t?void 0:1},onChange:r=>this.handleChange(r.target.value)}),!this.props.noInputField&&t?n.createElement(P,{disabled:this.props.disabled,onClick:()=>this.handleChange(""),size:"small",style:this.props.label||this.props.name?et.delButton:void 0},n.createElement(ut,null)):null,n.createElement(W,{component:"div",onClick:r=>!this.props.disabled&&this.handleClick(r),title:D.t("ra_Select color"),sx:{...et.swatch,...this.props.disabled?et.swatchDisabled:void 0,background:t?void 0:"transparent",border:t?void 0:"1px dashed #ccc",boxSizing:"border-box",marginTop:this.props.noInputField||!(this.props.label||this.props.name)?0:void 0}},n.createElement("div",{style:{...et.color,background:Vs.getColor(t),width:this.props.noInputField?this.props.barWidth||16:this.props.barWidth||36}})),this.state.displayColorPicker&&!this.props.disabled?n.createElement(ss,{sx:{...et.popover,"&. MuiMenu-list":et.popoverList},anchorEl:this.state.anchorEl,open:!0,onClose:()=>this.handleClose()},n.createElement(cN,{color:this.state.color||void 0,onChangeComplete:r=>this.handleChange(r.rgb),styles:{default:{picker:{backgroundColor:((s=this.props.theme)==null?void 0:s.palette.background.paper)||"#888"}}}}),t&&this.props.noInputField?n.createElement(P,{sx:et.closeButton,onClick:()=>this.handleChange("")},n.createElement(ut,null)):null,n.createElement(P,{sx:et.closeButton,onClick:()=>this.handleClose()},n.createElement(ge,null)),this.renderCustomPalette()):null)}}var Vc={exports:{}};(function(i,e){(function(s,r){i.exports=r()})(globalThis,()=>(()=>{var t={949(M,a,u){Object.defineProperty(a,"__esModule",{value:!0}),a.CronParser=void 0;var l=u(515),N=(function(){function c(L,j,g){j===void 0&&(j=!0),g===void 0&&(g=!1),this.expression=L,this.dayOfWeekStartIndexZero=j,this.monthStartIndexZero=g}return c.prototype.parse=function(){var L,j,g=(L=this.expression)!==null&&L!==void 0?L:"";if(g==="@reboot")return j=["@reboot","","","","","",""],j;if(g.startsWith("@")){var y=this.parseSpecial(this.expression);j=this.extractParts(y)}else j=this.extractParts(this.expression);return this.normalize(j),this.validate(j),j},c.prototype.parseSpecial=function(L){var j={"@yearly":"0 0 1 1 *","@annually":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *","@reboot":"@reboot"},g=j[L];if(!g)throw new Error("Unknown special expression.");return g},c.prototype.extractParts=function(L){if(!this.expression)throw new Error("cron expression is empty");for(var j=L.trim().split(/[ ]+/),g=0;g7)throw new Error("Expression has ".concat(j.length," parts; too many!"));return j},c.prototype.normalize=function(L){var j=this;if(L[3]=L[3].replace("?","*"),L[5]=L[5].replace("?","*"),L[2]=L[2].replace("?","*"),L[0].indexOf("0/")==0&&(L[0]=L[0].replace("0/","*/")),L[1].indexOf("0/")==0&&(L[1]=L[1].replace("0/","*/")),L[2].indexOf("0/")==0&&(L[2]=L[2].replace("0/","*/")),L[3].indexOf("1/")==0&&(L[3]=L[3].replace("1/","*/")),L[4].indexOf("1/")==0&&(L[4]=L[4].replace("1/","*/")),L[6].indexOf("1/")==0&&(L[6]=L[6].replace("1/","*/")),L[5]=L[5].replace(/(^\d)|([^#/\s]\d)/g,function(A){var h=A.replace(/\D/,""),p=h;return j.dayOfWeekStartIndexZero?h=="7"&&(p="0"):p=(parseInt(h)-1).toString(),A.replace(h,p)}),L[5]=="L"&&(L[5]="6"),L[3]=="?"&&(L[3]="*"),L[3].indexOf("W")>-1&&(L[3].indexOf(",")>-1||L[3].indexOf("-")>-1))throw new Error("The 'W' character can be specified only when the day-of-month is a single day, not a range or list of days.");var g={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6};for(var y in g)L[5]=L[5].replace(new RegExp(y,"gi"),g[y].toString());L[4]=L[4].replace(/(^\d{1,2})|([^#/\s]\d{1,2})/g,function(A){var h=A.replace(/\D/,""),p=h;return j.monthStartIndexZero&&(p=(parseInt(h)+1).toString()),A.replace(h,p)});var d={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12};for(var I in d)L[4]=L[4].replace(new RegExp(I,"gi"),d[I].toString());L[0]=="0"&&(L[0]=""),!/\*|\-|\,|\//.test(L[2])&&(/\*|\//.test(L[1])||/\*|\//.test(L[0]))&&(L[2]+="-".concat(L[2]));for(var m=0;m-1&&!/^\*|\-|\,/.test(L[m])){var w=null;switch(m){case 4:w="12";break;case 5:w="6";break;case 6:w="9999";break;default:w=null;break}if(w!==null){var O=L[m].split("/");L[m]="".concat(O[0],"-").concat(w,"/").concat(O[1])}}},c.prototype.validate=function(L){var j="0-9,\\-*/";this.validateOnlyExpectedCharactersFound(L[0],j),this.validateOnlyExpectedCharactersFound(L[1],j),this.validateOnlyExpectedCharactersFound(L[2],j),this.validateOnlyExpectedCharactersFound(L[3],"0-9,\\-*/LW"),this.validateOnlyExpectedCharactersFound(L[4],j),this.validateOnlyExpectedCharactersFound(L[5],"0-9,\\-*/L#"),this.validateOnlyExpectedCharactersFound(L[6],j),this.validateAnyRanges(L)},c.prototype.validateAnyRanges=function(L){l.default.secondRange(L[0]),l.default.minuteRange(L[1]),l.default.hourRange(L[2]),l.default.dayOfMonthRange(L[3]),l.default.monthRange(L[4],this.monthStartIndexZero),l.default.dayOfWeekRange(L[5],this.dayOfWeekStartIndexZero)},c.prototype.validateOnlyExpectedCharactersFound=function(L,j){var g=L.match(new RegExp("[^".concat(j,"]+"),"gi"));if(g&&g.length)throw new Error("Expression contains invalid values: '".concat(g.toString(),"'"))},c})();a.CronParser=N},333(M,a,u){Object.defineProperty(a,"__esModule",{value:!0}),a.ExpressionDescriptor=void 0;var l=u(823),N=u(949),c=(function(){function L(j,g){if(this.expression=j,this.options=g,this.expressionParts=new Array(5),!this.options.locale&&L.defaultLocale&&(this.options.locale=L.defaultLocale),!L.locales[this.options.locale]){var y=Object.keys(L.locales)[0];console.warn("Locale '".concat(this.options.locale,"' could not be found; falling back to '").concat(y,"'.")),this.options.locale=y}this.i18n=L.locales[this.options.locale],g.use24HourTimeFormat===void 0&&(g.use24HourTimeFormat=this.i18n.use24HourTimeFormatByDefault())}return L.toString=function(j,g){var y=g===void 0?{}:g,d=y.throwExceptionOnParseError,I=d===void 0?!0:d,m=y.verbose,w=m===void 0?!1:m,O=y.dayOfWeekStartIndexZero,A=O===void 0?!0:O,h=y.monthStartIndexZero,p=h===void 0?!1:h,S=y.use24HourTimeFormat,f=y.trimHoursLeadingZero,$=f===void 0?!1:f,x=y.locale,Z=x===void 0?null:x,k=y.logicalAndDayFields,Y=k===void 0?!1:k,J={throwExceptionOnParseError:I,verbose:w,dayOfWeekStartIndexZero:A,monthStartIndexZero:p,use24HourTimeFormat:S,trimHoursLeadingZero:$,locale:Z,logicalAndDayFields:Y};J.tzOffset&&console.warn("'tzOffset' option has been deprecated and is no longer supported.");var Le=new L(j,J);return Le.getFullDescription()},L.initialize=function(j,g){g===void 0&&(g="en"),L.specialCharacters=["/","-",",","*"],L.defaultLocale=g,j.load(L.locales)},L.prototype.getFullDescription=function(){var j,g,y="";try{var d=new N.CronParser(this.expression,this.options.dayOfWeekStartIndexZero,this.options.monthStartIndexZero);if(this.expressionParts=d.parse(),this.expressionParts[0]==="@reboot")return((g=(j=this.i18n).atReboot)===null||g===void 0?void 0:g.call(j))||"Run once, at startup";var I=this.getTimeOfDayDescription(),m=this.getDayOfMonthDescription(),w=this.getMonthDescription(),O=this.getDayOfWeekDescription(),A=this.getYearDescription();y+=I+m+O+w+A,y=this.transformVerbosity(y,!!this.options.verbose),y=y.charAt(0).toLocaleUpperCase()+y.substr(1)}catch(h){if(!this.options.throwExceptionOnParseError)y=this.i18n.anErrorOccuredWhenGeneratingTheExpressionD();else throw"".concat(h)}return y},L.prototype.getTimeOfDayDescription=function(){var j=this.expressionParts[0],g=this.expressionParts[1],y=this.expressionParts[2],d="";if(!l.StringUtilities.containsAny(g,L.specialCharacters)&&!l.StringUtilities.containsAny(y,L.specialCharacters)&&!l.StringUtilities.containsAny(j,L.specialCharacters))d+=this.i18n.atSpace()+this.formatTime(y,g,j);else if(!j&&g.indexOf("-")>-1&&!(g.indexOf(",")>-1)&&!(g.indexOf("/")>-1)&&!l.StringUtilities.containsAny(y,L.specialCharacters)){var I=g.split("-");d+=l.StringUtilities.format(this.i18n.everyMinuteBetweenX0AndX1(),this.formatTime(y,I[0],""),this.formatTime(y,I[1],""))}else if(!j&&y.indexOf(",")>-1&&y.indexOf("-")==-1&&y.indexOf("/")==-1&&!l.StringUtilities.containsAny(g,L.specialCharacters)){var m=y.split(",");d+=this.i18n.at();for(var w=0;w-1?m=d.substring(0,d.indexOf("#")):d.indexOf("L")>-1&&(m=m.replace("L",""));var w=parseInt(m),O=j.i18n.daysOfTheWeekInCase?j.i18n.daysOfTheWeekInCase(I)[w]:g[w];if(d.indexOf("#")>-1){var A=null,h=d.substring(d.indexOf("#")+1),p=d.substring(0,d.indexOf("#"));switch(h){case"1":A=j.i18n.first(p);break;case"2":A=j.i18n.second(p);break;case"3":A=j.i18n.third(p);break;case"4":A=j.i18n.fourth(p);break;case"5":A=j.i18n.fifth(p);break}O=A+" "+O}return O},function(d){return parseInt(d)==1?"":l.StringUtilities.format(j.i18n.commaEveryX0DaysOfTheWeek(d),d)},function(d){var I=d.substring(0,d.indexOf("-")),m=j.expressionParts[3]!="*";return m?j.i18n.commaAndX0ThroughX1(I):j.i18n.commaX0ThroughX1(I)},function(d){var I=null;if(d.indexOf("#")>-1){var m=d.substring(d.indexOf("#")+1),w=d.substring(0,d.indexOf("#"));I=j.i18n.commaOnThe(m,w).trim()+j.i18n.spaceX0OfTheMonth()}else if(d.indexOf("L")>-1)I=j.i18n.commaOnTheLastX0OfTheMonth(d.replace("L",""));else{var O=j.expressionParts[3]!="*";O?j.options.logicalAndDayFields?I=j.i18n.commaOnlyOnX0(d):I=j.i18n.commaAndOnX0():I=j.i18n.commaOnlyOnX0(d)}return I}),y},L.prototype.getMonthDescription=function(){var j=this,g=this.i18n.monthsOfTheYear(),y=this.getSegmentDescription(this.expressionParts[4],"",function(d,I){return I&&j.i18n.monthsOfTheYearInCase?j.i18n.monthsOfTheYearInCase(I)[parseInt(d)-1]:g[parseInt(d)-1]},function(d){return parseInt(d)==1?"":l.StringUtilities.format(j.i18n.commaEveryX0Months(d),d)},function(d){return j.i18n.commaMonthX0ThroughMonthX1()||j.i18n.commaX0ThroughX1()},function(d){return j.i18n.commaOnlyInMonthX0?j.i18n.commaOnlyInMonthX0():j.i18n.commaOnlyInX0()});return y},L.prototype.getDayOfMonthDescription=function(){var j=this,g=null,y=this.expressionParts[3];switch(y){case"L":g=this.i18n.commaOnTheLastDayOfTheMonth();break;case"WL":case"LW":g=this.i18n.commaOnTheLastWeekdayOfTheMonth();break;default:var d=y.match(/(\d{1,2}W)|(W\d{1,2})/);if(d){var I=parseInt(d[0].replace("W","")),m=I==1?this.i18n.firstWeekday():l.StringUtilities.format(this.i18n.weekdayNearestDayX0(),I.toString());g=l.StringUtilities.format(this.i18n.commaOnTheX0OfTheMonth(),m);break}else{var w=y.match(/L-(\d{1,2})/);if(w){var O=w[1];g=l.StringUtilities.format(this.i18n.commaDaysBeforeTheLastDayOfTheMonth(O),O);break}else{if(y=="*"&&this.expressionParts[5]!="*")return"";g=this.getSegmentDescription(y,this.i18n.commaEveryDay(),function(A){return A=="L"?j.i18n.lastDay():j.i18n.dayX0?l.StringUtilities.format(j.i18n.dayX0(),A):A},function(A){return A=="1"?j.i18n.commaEveryDay():j.i18n.commaEveryX0Days(A)},function(A){return j.i18n.commaBetweenDayX0AndX1OfTheMonth(A)},function(A){return j.i18n.commaOnDayX0OfTheMonth(A)})}break}}return g},L.prototype.getYearDescription=function(){var j=this,g=this.getSegmentDescription(this.expressionParts[6],"",function(y){return/^\d+$/.test(y)?new Date(parseInt(y),1).getFullYear().toString():y},function(y){return l.StringUtilities.format(j.i18n.commaEveryX0Years(y),y)},function(y){return j.i18n.commaYearX0ThroughYearX1()||j.i18n.commaX0ThroughX1()},function(y){return j.i18n.commaOnlyInYearX0?j.i18n.commaOnlyInYearX0():j.i18n.commaOnlyInX0()});return g},L.prototype.getSegmentDescription=function(j,g,y,d,I,m){var w=null,O=j.indexOf("/")>-1,A=j.indexOf("-")>-1,h=j.indexOf(",")>-1;if(!j)w="";else if(j==="*")w=g;else if(!O&&!A&&!h)w=l.StringUtilities.format(m(j),y(j));else if(h){for(var p=j.split(","),S="",f=0;f0&&p.length>2&&(S+=",",f0&&p.length>1&&(f==p.length-1||p.length==2)&&(S+="".concat(this.i18n.spaceAnd()," ")),p[f].indexOf("/")>-1||p[f].indexOf("-")>-1){var $=p[f].indexOf("-")>-1&&p[f].indexOf("/")==-1,x=this.getSegmentDescription(p[f],g,y,d,$?this.i18n.commaX0ThroughX1:I,m);$&&(x=x.replace(", ","")),S+=x}else if(!O)S+=y(p[f]);else{var Z=this.getSegmentDescription(p[f],g,y,d,I,m);Z&&Z.startsWith(", ")&&(Z=Z.substring(2)),S+=Z}O?w=S:w=l.StringUtilities.format(m(j),S)}else if(O){var p=j.split("/");if(w=l.StringUtilities.format(d(p[1]),p[1]),p[0].indexOf("-")>-1){var k=this.generateRangeSegmentDescription(p[0],I,y);k.indexOf(", ")!=0&&(w+=", "),w+=k}else if(p[0].indexOf("*")==-1){var Y=l.StringUtilities.format(m(p[0]),y(p[0]));Y=Y.replace(", ",""),w+=l.StringUtilities.format(this.i18n.commaStartingX0(),Y)}}else A&&(w=this.generateRangeSegmentDescription(j,I,y));return w},L.prototype.generateRangeSegmentDescription=function(j,g,y){var d="",I=j.split("-"),m=y(I[0],1),w=y(I[1],2),O=g(j);return d+=l.StringUtilities.format(O,m,w),d},L.prototype.formatTime=function(j,g,y){var d=0,I=0,m=parseInt(j)+d,w=parseInt(g)+I;w>=60?(w-=60,m+=1):w<0&&(w+=60,m-=1),m>=24?m=m-24:m<0&&(m=24+m);var O="",A=!1;this.options.use24HourTimeFormat||(A=!!(this.i18n.setPeriodBeforeTime&&this.i18n.setPeriodBeforeTime()),O=A?"".concat(this.getPeriod(m)," "):" ".concat(this.getPeriod(m)),m>12&&(m-=12),m===0&&(m=12));var h="";y&&(h=":".concat(("00"+y).substring(y.length)));var p=m.toString(),S=("00"+p).substring(p.length),f=w.toString(),$=("00"+f).substring(f.length),x=this.options.trimHoursLeadingZero?p:S;return"".concat(A?O:"").concat(x,":").concat($).concat(h).concat(A?"":O)},L.prototype.transformVerbosity=function(j,g){if(!g&&(j=j.replace(new RegExp(", ".concat(this.i18n.everyMinute()),"g"),""),j=j.replace(new RegExp(", ".concat(this.i18n.everyHour()),"g"),""),j=j.replace(new RegExp(this.i18n.commaEveryDay(),"g"),""),j=j.replace(/\, ?$/,""),this.i18n.conciseVerbosityReplacements))for(var y=0,d=Object.entries(this.i18n.conciseVerbosityReplacements());y=12?this.i18n.pm&&this.i18n.pm()||"PM":this.i18n.am&&this.i18n.am()||"AM"},L.locales={},L})();a.ExpressionDescriptor=c},747(M,a,u){Object.defineProperty(a,"__esModule",{value:!0}),a.enLocaleLoader=void 0;var l=u(486),N=(function(){function c(){}return c.prototype.load=function(L){L.en=new l.en},c})();a.enLocaleLoader=N},486(M,a){Object.defineProperty(a,"__esModule",{value:!0}),a.en=void 0;var u=(function(){function l(){}return l.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},l.prototype.atX0MinutesPastTheHourGt20=function(){return null},l.prototype.commaMonthX0ThroughMonthX1=function(){return null},l.prototype.commaYearX0ThroughYearX1=function(){return null},l.prototype.use24HourTimeFormatByDefault=function(){return!1},l.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"An error occurred when generating the expression description. Check the cron expression syntax."},l.prototype.everyMinute=function(){return"every minute"},l.prototype.everyHour=function(){return"every hour"},l.prototype.atSpace=function(){return"At "},l.prototype.everyMinuteBetweenX0AndX1=function(){return"Every minute between %s and %s"},l.prototype.at=function(){return"At"},l.prototype.spaceAnd=function(){return" and"},l.prototype.everySecond=function(){return"every second"},l.prototype.everyX0Seconds=function(){return"every %s seconds"},l.prototype.secondsX0ThroughX1PastTheMinute=function(){return"seconds %s through %s past the minute"},l.prototype.atX0SecondsPastTheMinute=function(){return"at %s seconds past the minute"},l.prototype.everyX0Minutes=function(){return"every %s minutes"},l.prototype.minutesX0ThroughX1PastTheHour=function(){return"minutes %s through %s past the hour"},l.prototype.atX0MinutesPastTheHour=function(){return"at %s minutes past the hour"},l.prototype.everyX0Hours=function(){return"every %s hours"},l.prototype.betweenX0AndX1=function(){return"between %s and %s"},l.prototype.atX0=function(){return"at %s"},l.prototype.commaEveryDay=function(){return", every day"},l.prototype.commaEveryX0DaysOfTheWeek=function(){return", every %s days of the week"},l.prototype.commaX0ThroughX1=function(){return", %s through %s"},l.prototype.commaAndX0ThroughX1=function(){return", %s through %s"},l.prototype.first=function(){return"first"},l.prototype.second=function(){return"second"},l.prototype.third=function(){return"third"},l.prototype.fourth=function(){return"fourth"},l.prototype.fifth=function(){return"fifth"},l.prototype.commaOnThe=function(){return", on the "},l.prototype.spaceX0OfTheMonth=function(){return" %s of the month"},l.prototype.lastDay=function(){return"the last day"},l.prototype.commaOnTheLastX0OfTheMonth=function(){return", on the last %s of the month"},l.prototype.commaOnlyOnX0=function(){return", only on %s"},l.prototype.commaAndOnX0=function(){return", and on %s"},l.prototype.commaEveryX0Months=function(){return", every %s months"},l.prototype.commaOnlyInX0=function(){return", only in %s"},l.prototype.commaOnTheLastDayOfTheMonth=function(){return", on the last day of the month"},l.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", on the last weekday of the month"},l.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s days before the last day of the month"},l.prototype.firstWeekday=function(){return"first weekday"},l.prototype.weekdayNearestDayX0=function(){return"weekday nearest day %s"},l.prototype.commaOnTheX0OfTheMonth=function(){return", on the %s of the month"},l.prototype.commaEveryX0Days=function(){return", every %s days in a month"},l.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", between day %s and %s of the month"},l.prototype.commaOnDayX0OfTheMonth=function(){return", on day %s of the month"},l.prototype.commaEveryHour=function(){return", every hour"},l.prototype.commaEveryX0Years=function(){return", every %s years"},l.prototype.commaStartingX0=function(){return", starting %s"},l.prototype.daysOfTheWeek=function(){return["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},l.prototype.monthsOfTheYear=function(){return["January","February","March","April","May","June","July","August","September","October","November","December"]},l.prototype.atReboot=function(){return"Run once, at startup"},l.prototype.onTheHour=function(){return"on the hour"},l})();a.en=u},515(M,a){Object.defineProperty(a,"__esModule",{value:!0});function u(N,c){if(!N)throw new Error(c)}var l=(function(){function N(){}return N.secondRange=function(c){for(var L=c.split(","),j=0;j=0&&g<=59,"seconds part must be >= 0 and <= 59")}},N.minuteRange=function(c){for(var L=c.split(","),j=0;j=0&&g<=59,"minutes part must be >= 0 and <= 59")}},N.hourRange=function(c){for(var L=c.split(","),j=0;j=0&&g<=23,"hours part must be >= 0 and <= 23")}},N.dayOfMonthRange=function(c){for(var L=c.split(","),j=0;j=1&&g<=31,"DOM part must be >= 1 and <= 31")}},N.monthRange=function(c,L){for(var j=c.split(","),g=0;g=1&&y<=12,L?"month part must be >= 0 and <= 11":"month part must be >= 1 and <= 12")}},N.dayOfWeekRange=function(c,L){for(var j=c.split(","),g=0;g=0&&y<=6,L?"DOW part must be >= 0 and <= 6":"DOW part must be >= 1 and <= 7")}},N})();a.default=l},823(M,a){Object.defineProperty(a,"__esModule",{value:!0}),a.StringUtilities=void 0;var u=(function(){function l(){}return l.format=function(N){for(var c=[],L=1;L-1})},l})();a.StringUtilities=u}},s={};function r(M){var a=s[M];if(a!==void 0)return a.exports;var u=s[M]={exports:{}};return t[M](u,u.exports,r),u.exports}var o={};return(()=>{var M=o;Object.defineProperty(M,"__esModule",{value:!0}),M.toString=void 0;var a=r(333),u=r(747);a.ExpressionDescriptor.initialize(new u.enLocaleLoader),M.default=a.ExpressionDescriptor;var l=a.ExpressionDescriptor.toString;M.toString=l})(),o})())})(Vc);var jt=Vc.exports;const Pue=lN(jt);var Wue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.fr=void 0;var N=(function(){function c(){}return c.prototype.conciseVerbosityReplacements=function(){return{"de le":"du"}},c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Une erreur est survenue en générant la description de l'expression cron. Vérifiez sa syntaxe."},c.prototype.everyMinute=function(){return"toutes les minutes"},c.prototype.everyHour=function(){return"toutes les heures"},c.prototype.atSpace=function(){return"À "},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Toutes les minutes entre %s et %s"},c.prototype.at=function(){return"À"},c.prototype.spaceAnd=function(){return" et"},c.prototype.everySecond=function(){return"toutes les secondes"},c.prototype.everyX0Seconds=function(){return"toutes les %s secondes"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"les secondes entre %s et %s après la minute"},c.prototype.atX0SecondsPastTheMinute=function(){return"%s secondes après la minute"},c.prototype.everyX0Minutes=function(){return"toutes les %s minutes"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"les minutes entre %s et %s après l'heure"},c.prototype.atX0MinutesPastTheHour=function(){return"%s minutes après l'heure"},c.prototype.everyX0Hours=function(){return"toutes les %s heures"},c.prototype.betweenX0AndX1=function(){return"de %s à %s"},c.prototype.atX0=function(){return"%s"},c.prototype.commaEveryDay=function(){return", tous les jours"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", tous les %s jours de la semaine"},c.prototype.commaX0ThroughX1=function(){return", de %s à %s"},c.prototype.commaAndX0ThroughX1=function(){return", et de %s à %s"},c.prototype.first=function(){return"premier"},c.prototype.second=function(){return"second"},c.prototype.third=function(){return"troisième"},c.prototype.fourth=function(){return"quatrième"},c.prototype.fifth=function(){return"cinquième"},c.prototype.commaOnThe=function(){return", le "},c.prototype.spaceX0OfTheMonth=function(){return" %s du mois"},c.prototype.lastDay=function(){return"le dernier jour"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", le dernier %s du mois"},c.prototype.commaOnlyOnX0=function(){return", uniquement le %s"},c.prototype.commaAndOnX0=function(){return", et %s"},c.prototype.commaEveryX0Months=function(){return", tous les %s mois"},c.prototype.commaOnlyInX0=function(){return", uniquement en %s"},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", le dernier jour du mois"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", le dernier jour ouvrable du mois"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s jours avant le dernier jour du mois"},c.prototype.firstWeekday=function(){return"premier jour ouvrable"},c.prototype.weekdayNearestDayX0=function(){return"jour ouvrable le plus proche du %s"},c.prototype.commaOnTheX0OfTheMonth=function(){return", le %s du mois"},c.prototype.commaEveryX0Days=function(){return", tous les %s jours"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", du %s au %s du mois"},c.prototype.commaOnDayX0OfTheMonth=function(){return", le %s du mois"},c.prototype.commaEveryHour=function(){return", chaque heure"},c.prototype.commaEveryX0Years=function(){return", tous les %s ans"},c.prototype.commaDaysX0ThroughX1=function(){return", du %s au %s"},c.prototype.commaStartingX0=function(){return", à partir de %s"},c.prototype.daysOfTheWeek=function(){return["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},c.prototype.monthsOfTheYear=function(){return["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},c.prototype.onTheHour=function(){return"à l'heure pile"},c})();return l.fr=N,u().locales.fr=new N,M})())})(Wue);var Rue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.es=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Ocurrió un error mientras se generaba la descripción de la expresión. Revise la sintaxis de la expresión de cron."},c.prototype.at=function(){return"A las"},c.prototype.atSpace=function(){return"A las "},c.prototype.atX0=function(){return"a las %s"},c.prototype.atX0MinutesPastTheHour=function(){return"a los %s minutos de la hora"},c.prototype.atX0SecondsPastTheMinute=function(){return"a los %s segundos del minuto"},c.prototype.betweenX0AndX1=function(){return"entre las %s y las %s"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", entre los días %s y %s del mes"},c.prototype.commaEveryDay=function(){return", cada día"},c.prototype.commaEveryX0Days=function(){return", cada %s días"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", cada %s días de la semana"},c.prototype.commaEveryX0Months=function(){return", cada %s meses"},c.prototype.commaOnDayX0OfTheMonth=function(){return", el día %s del mes"},c.prototype.commaOnlyInX0=function(){return", sólo en %s"},c.prototype.commaOnlyOnX0=function(){return", sólo el %s"},c.prototype.commaAndOnX0=function(){return", y el %s"},c.prototype.commaOnThe=function(){return", en el "},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", en el último día del mes"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", en el último día de la semana del mes"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s días antes del último día del mes"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", en el último %s del mes"},c.prototype.commaOnTheX0OfTheMonth=function(){return", en el %s del mes"},c.prototype.commaX0ThroughX1=function(){return", de %s a %s"},c.prototype.commaAndX0ThroughX1=function(){return", y de %s a %s"},c.prototype.everyHour=function(){return"cada hora"},c.prototype.everyMinute=function(){return"cada minuto"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"cada minuto entre las %s y las %s"},c.prototype.everySecond=function(){return"cada segundo"},c.prototype.everyX0Hours=function(){return"cada %s horas"},c.prototype.everyX0Minutes=function(){return"cada %s minutos"},c.prototype.everyX0Seconds=function(){return"cada %s segundos"},c.prototype.fifth=function(){return"quinto"},c.prototype.first=function(){return"primero"},c.prototype.firstWeekday=function(){return"primer día de la semana"},c.prototype.fourth=function(){return"cuarto"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"del minuto %s al %s pasada la hora"},c.prototype.second=function(){return"segundo"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"En los segundos %s al %s de cada minuto"},c.prototype.spaceAnd=function(){return" y"},c.prototype.spaceX0OfTheMonth=function(){return" %s del mes"},c.prototype.lastDay=function(){return"el último día"},c.prototype.third=function(){return"tercer"},c.prototype.weekdayNearestDayX0=function(){return"día de la semana más próximo al %s"},c.prototype.commaEveryX0Years=function(){return", cada %s años"},c.prototype.commaStartingX0=function(){return", comenzando %s"},c.prototype.daysOfTheWeek=function(){return["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},c.prototype.monthsOfTheYear=function(){return["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},c.prototype.onTheHour=function(){return"en punto"},c})();return l.es=N,u().locales.es=new N,M})())})(Rue);var Jue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.de=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.everyMinute=function(){return"jede Minute"},c.prototype.everyHour=function(){return"jede Stunde"},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Beim Generieren der Ausdrucksbeschreibung ist ein Fehler aufgetreten. Überprüfen Sie die Syntax des Cron-Ausdrucks."},c.prototype.atSpace=function(){return"Um "},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Jede Minute zwischen %s und %s"},c.prototype.at=function(){return"Um"},c.prototype.spaceAnd=function(){return" und"},c.prototype.everySecond=function(){return"Jede Sekunde"},c.prototype.everyX0Seconds=function(){return"alle %s Sekunden"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"Sekunden %s bis %s"},c.prototype.atX0SecondsPastTheMinute=function(){return"bei Sekunde %s"},c.prototype.everyX0Minutes=function(){return"alle %s Minuten"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"Minuten %s bis %s"},c.prototype.atX0MinutesPastTheHour=function(){return"bei Minute %s"},c.prototype.everyX0Hours=function(){return"alle %s Stunden"},c.prototype.betweenX0AndX1=function(){return"zwischen %s und %s"},c.prototype.atX0=function(){return"um %s"},c.prototype.commaEveryDay=function(){return", jeden Tag"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", alle %s Tage der Woche"},c.prototype.commaX0ThroughX1=function(){return", %s bis %s"},c.prototype.commaAndX0ThroughX1=function(){return", und %s bis %s"},c.prototype.first=function(){return"ersten"},c.prototype.second=function(){return"zweiten"},c.prototype.third=function(){return"dritten"},c.prototype.fourth=function(){return"vierten"},c.prototype.fifth=function(){return"fünften"},c.prototype.commaOnThe=function(){return", am "},c.prototype.spaceX0OfTheMonth=function(){return" %s des Monats"},c.prototype.lastDay=function(){return"der letzte Tag"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", am letzten %s des Monats"},c.prototype.commaOnlyOnX0=function(){return", nur jeden %s"},c.prototype.commaAndOnX0=function(){return", und jeden %s"},c.prototype.commaEveryX0Months=function(){return", alle %s Monate"},c.prototype.commaOnlyInX0=function(){return", nur im %s"},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", am letzten Tag des Monats"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", am letzten Werktag des Monats"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s tage vor dem letzten Tag des Monats"},c.prototype.firstWeekday=function(){return"ersten Werktag"},c.prototype.weekdayNearestDayX0=function(){return"Werktag am nächsten zum %s Tag"},c.prototype.commaOnTheX0OfTheMonth=function(){return", am %s des Monats"},c.prototype.commaEveryX0Days=function(){return", alle %s Tage"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", zwischen Tag %s und %s des Monats"},c.prototype.commaOnDayX0OfTheMonth=function(){return", an Tag %s des Monats"},c.prototype.commaEveryX0Years=function(){return", alle %s Jahre"},c.prototype.commaStartingX0=function(){return", beginnend %s"},c.prototype.daysOfTheWeek=function(){return["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},c.prototype.monthsOfTheYear=function(){return["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},c.prototype.onTheHour=function(){return"zur vollen Stunde"},c})();return l.de=N,u().locales.de=new N,M})())})(Jue);var Bue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.it=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"È verificato un errore durante la generazione la descrizione espressione. Controllare la sintassi delle espressioni cron."},c.prototype.at=function(){return"Alle"},c.prototype.atSpace=function(){return"Alle "},c.prototype.atX0=function(){return"alle %s"},c.prototype.atX0MinutesPastTheHour=function(){return"al %s minuto passata l'ora"},c.prototype.atX0SecondsPastTheMinute=function(){return"al %s secondo passato il minuto"},c.prototype.betweenX0AndX1=function(){return"tra le %s e le %s"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", tra il giorno %s e %s del mese"},c.prototype.commaEveryDay=function(){return", ogni giorno"},c.prototype.commaEveryX0Days=function(){return", ogni %s giorni"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", ogni %s giorni della settimana"},c.prototype.commaEveryX0Months=function(){return", ogni %s mesi"},c.prototype.commaEveryX0Years=function(){return", ogni %s anni"},c.prototype.commaOnDayX0OfTheMonth=function(){return", il giorno %s del mese"},c.prototype.commaOnlyInX0=function(){return", solo in %s"},c.prototype.commaOnlyOnX0=function(){return", solo il %s"},c.prototype.commaAndOnX0=function(){return", e il %s"},c.prototype.commaOnThe=function(){return", il "},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", l'ultimo giorno del mese"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", nell'ultima settimana del mese"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s giorni prima dell'ultimo giorno del mese"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", l'ultimo %s del mese"},c.prototype.commaOnTheX0OfTheMonth=function(){return", il %s del mese"},c.prototype.commaX0ThroughX1=function(){return", %s al %s"},c.prototype.commaAndX0ThroughX1=function(){return", e %s al %s"},c.prototype.everyHour=function(){return"ogni ora"},c.prototype.everyMinute=function(){return"ogni minuto"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Ogni minuto tra le %s e le %s"},c.prototype.everySecond=function(){return"ogni secondo"},c.prototype.everyX0Hours=function(){return"ogni %s ore"},c.prototype.everyX0Minutes=function(){return"ogni %s minuti"},c.prototype.everyX0Seconds=function(){return"ogni %s secondi"},c.prototype.fifth=function(){return"quinto"},c.prototype.first=function(){return"primo"},c.prototype.firstWeekday=function(){return"primo giorno della settimana"},c.prototype.fourth=function(){return"quarto"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"minuti %s al %s dopo l'ora"},c.prototype.second=function(){return"secondo"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"secondi %s al %s oltre il minuto"},c.prototype.spaceAnd=function(){return" e"},c.prototype.spaceX0OfTheMonth=function(){return" %s del mese"},c.prototype.lastDay=function(){return"l'ultimo giorno"},c.prototype.third=function(){return"terzo"},c.prototype.weekdayNearestDayX0=function(){return"giorno della settimana più vicino al %s"},c.prototype.commaStartingX0=function(){return", a partire %s"},c.prototype.daysOfTheWeek=function(){return["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},c.prototype.monthsOfTheYear=function(){return["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},c.prototype.onTheHour=function(){return"all'ora esatta"},c})();return l.it=N,u().locales.it=new N,M})())})(Bue);var Gue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(j){j.exports=t}},r={};function o(j){var g=r[j];if(g!==void 0)return g.exports;var y=r[j]={exports:{}};return s[j](y,y.exports,o),y.exports}o.n=j=>{var g=j&&j.__esModule?()=>j.default:()=>j;return o.d(g,{a:g}),g},o.d=(j,g)=>{for(var y in g)o.o(g,y)&&!o.o(j,y)&&Object.defineProperty(j,y,{enumerable:!0,get:g[y]})},o.o=(j,g)=>Object.prototype.hasOwnProperty.call(j,g),o.r=j=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(j,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(j,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.ru=void 0;var N=function(j,g){var y=Number(j);return y!==void 0?g[y%100>4&&y%100<20?2:[2,0,1,1,1,2][y%10<5?Math.abs(y)%10:5]]:g[2]},c=function(j,g){var y=Number(j);return y!==void 0?g[y===0?0:y===1||y===2||y===4?1:2]:g[1]},L=(function(){function j(){}return j.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},j.prototype.atX0MinutesPastTheHourGt20=function(){return null},j.prototype.commaMonthX0ThroughMonthX1=function(){return null},j.prototype.commaYearX0ThroughYearX1=function(){return null},j.prototype.use24HourTimeFormatByDefault=function(){return!0},j.prototype.everyMinute=function(){return"каждую минуту"},j.prototype.everyHour=function(){return"каждый час"},j.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Произошла ошибка во время генерации описания выражения. Проверьте синтаксис крон-выражения."},j.prototype.atSpace=function(){return"В "},j.prototype.everyMinuteBetweenX0AndX1=function(){return"Каждую минуту с %s по %s"},j.prototype.at=function(){return"В"},j.prototype.spaceAnd=function(){return" и"},j.prototype.everySecond=function(){return"каждую секунду"},j.prototype.everyX0Seconds=function(g){return N(g,["каждую %s секунду","каждые %s секунды","каждые %s секунд"])},j.prototype.secondsX0ThroughX1PastTheMinute=function(){return"секунды с %s по %s"},j.prototype.atX0SecondsPastTheMinute=function(g){return N(g,["в %s секунду","в %s секунды","в %s секунд"])},j.prototype.everyX0Minutes=function(g){return N(g,["каждую %s минуту","каждые %s минуты","каждые %s минут"])},j.prototype.minutesX0ThroughX1PastTheHour=function(){return"минуты с %s по %s"},j.prototype.atX0MinutesPastTheHour=function(g){return N(g,["в %s минуту","в %s минуты","в %s минут"])},j.prototype.everyX0Hours=function(g){return N(g,["каждый %s час","каждые %s часа","каждые %s часов"])},j.prototype.betweenX0AndX1=function(){return"с %s по %s"},j.prototype.atX0=function(){return"в %s"},j.prototype.commaEveryDay=function(){return", каждый день"},j.prototype.commaEveryX0DaysOfTheWeek=function(g){return N(g,[", каждый %s день недели",", каждые %s дня недели",", каждые %s дней недели"])},j.prototype.commaX0ThroughX1=function(g){return g&&(g[0]=="2"||g[0]=="3")?", со %s по %s":", с %s по %s"},j.prototype.commaAndX0ThroughX1=function(g){return g&&(g[0]=="2"||g[0]=="3")?" и со %s по %s":" и с %s по %s"},j.prototype.first=function(g){return c(g,["первое","первый","первую"])},j.prototype.second=function(g){return c(g,["второе","второй","вторую"])},j.prototype.third=function(g){return c(g,["третье","третий","третью"])},j.prototype.fourth=function(g){return c(g,["четвертое","четвертый","четвертую"])},j.prototype.fifth=function(g){return c(g,["пятое","пятый","пятую"])},j.prototype.commaOnThe=function(g){return g==="2"?", во ":", в "},j.prototype.spaceX0OfTheMonth=function(){return" %s месяца"},j.prototype.lastDay=function(){return"последний день"},j.prototype.commaOnTheLastX0OfTheMonth=function(g){return c(g,[", в последнее %s месяца",", в последний %s месяца",", в последнюю %s месяца"])},j.prototype.commaOnlyOnX0=function(g){return g&&g[0]==="2"?", только во %s":", только в %s"},j.prototype.commaAndOnX0=function(){return", и %s"},j.prototype.commaEveryX0Months=function(g){return N(g,[""," каждые %s месяца"," каждые %s месяцев"])},j.prototype.commaOnlyInMonthX0=function(){return", только %s"},j.prototype.commaOnlyInX0=function(){return", только в %s"},j.prototype.commaOnTheLastDayOfTheMonth=function(){return", в последний день месяца"},j.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", в последний будний день месяца"},j.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(g){return N(g,[", за %s день до конца месяца",", за %s дня до конца месяца",", за %s дней до конца месяца"])},j.prototype.firstWeekday=function(){return"первый будний день"},j.prototype.weekdayNearestDayX0=function(){return"ближайший будний день к %s числу"},j.prototype.commaOnTheX0OfTheMonth=function(){return", в %s месяца"},j.prototype.commaEveryX0Days=function(g){return N(g,[", каждый %s день",", каждые %s дня",", каждые %s дней"])},j.prototype.commaBetweenDayX0AndX1OfTheMonth=function(g){return g&&g.substring(0,g.indexOf("-"))=="2"?", со %s по %s число месяца":", с %s по %s число месяца"},j.prototype.commaOnDayX0OfTheMonth=function(g){return g&&g[0]=="2"?", во %s число месяца":", в %s число месяца"},j.prototype.commaEveryX0Years=function(g){return N(g,[", каждый %s год",", каждые %s года",", каждые %s лет"])},j.prototype.commaStartingX0=function(){return", начало %s"},j.prototype.daysOfTheWeek=function(){return["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},j.prototype.daysOfTheWeekInCase=function(g){return g===void 0&&(g=2),g==1?["воскресенья","понедельника","вторника","среды","четверга","пятницы","субботы"]:["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"]},j.prototype.monthsOfTheYear=function(){return["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},j.prototype.monthsOfTheYearInCase=function(g){return g==1?["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]:this.monthsOfTheYear()},j.prototype.onTheHour=function(){return"ровно в час"},j})();return l.ru=L,u().locales.ru=new L,M})())})(Gue);var Fue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.zh_CN=void 0;var N=(function(){function c(){}return c.prototype.setPeriodBeforeTime=function(){return!0},c.prototype.pm=function(){return"下午"},c.prototype.am=function(){return"上午"},c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return", 从%s年至%s年"},c.prototype.use24HourTimeFormatByDefault=function(){return!1},c.prototype.everyMinute=function(){return"每分钟"},c.prototype.everyHour=function(){return"每小时"},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"生成表达式描述时发生了错误,请检查cron表达式语法。"},c.prototype.atSpace=function(){return"在"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"在 %s 至 %s 之间的每分钟"},c.prototype.at=function(){return"在"},c.prototype.spaceAnd=function(){return" 和"},c.prototype.everySecond=function(){return"每秒"},c.prototype.everyX0Seconds=function(){return"每隔 %s 秒"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"在一分钟后的第 %s 到 %s 秒"},c.prototype.atX0SecondsPastTheMinute=function(){return"在一分钟后的第 %s 秒"},c.prototype.everyX0Minutes=function(){return"每隔 %s 分钟"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"在整点后的第 %s 到 %s 分钟"},c.prototype.atX0MinutesPastTheHour=function(){return"在整点后的第 %s 分钟"},c.prototype.everyX0Hours=function(){return"每隔 %s 小时"},c.prototype.betweenX0AndX1=function(){return"在 %s 和 %s 之间"},c.prototype.atX0=function(){return"在%s"},c.prototype.commaEveryDay=function(){return", 每天"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", 每周的每 %s 天"},c.prototype.commaX0ThroughX1=function(){return", %s至%s"},c.prototype.commaAndX0ThroughX1=function(){return", 和%s至%s"},c.prototype.first=function(){return"第一个"},c.prototype.second=function(){return"第二个"},c.prototype.third=function(){return"第三个"},c.prototype.fourth=function(){return"第四个"},c.prototype.fifth=function(){return"第五个"},c.prototype.commaOnThe=function(){return", 限每月的"},c.prototype.spaceX0OfTheMonth=function(){return"%s"},c.prototype.lastDay=function(){return"本月最后一天"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", 限每月的最后一个%s"},c.prototype.commaOnlyOnX0=function(){return", 仅%s"},c.prototype.commaAndOnX0=function(){return", 或者为%s"},c.prototype.commaEveryX0Months=function(){return", 每隔 %s 个月"},c.prototype.commaOnlyInX0=function(){return", 仅限%s"},c.prototype.commaOnlyInMonthX0=function(){return", 仅于%s份"},c.prototype.commaOnlyInYearX0=function(){return", 仅于 %s 年"},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", 限每月的最后一天"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", 限每月的最后一个工作日"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", 限每月最后%s天"},c.prototype.firstWeekday=function(){return"第一个工作日"},c.prototype.weekdayNearestDayX0=function(){return"最接近 %s 号的工作日"},c.prototype.commaOnTheX0OfTheMonth=function(){return", 限每月的%s"},c.prototype.commaEveryX0Days=function(){return", 每隔 %s 天"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", 限每月的 %s 至 %s 之间"},c.prototype.commaOnDayX0OfTheMonth=function(){return", 限每月%s"},c.prototype.commaEveryX0Years=function(){return", 每隔 %s 年"},c.prototype.commaStartingX0=function(){return", %s开始"},c.prototype.dayX0=function(){return" %s 号"},c.prototype.daysOfTheWeek=function(){return["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},c.prototype.monthsOfTheYear=function(){return["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},c.prototype.onTheHour=function(){return"整点"},c})();return l.zh_CN=N,u().locales.zh_CN=new N,M})())})(Fue);var Hue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.uk=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.everyMinute=function(){return"щохвилини"},c.prototype.everyHour=function(){return"щогодини"},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"ВІдбулася помилка підчас генерації опису. Перевірта правильність написання cron виразу."},c.prototype.atSpace=function(){return"О "},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Щохвилини між %s та %s"},c.prototype.at=function(){return"О"},c.prototype.spaceAnd=function(){return" та"},c.prototype.everySecond=function(){return"Щосекунди"},c.prototype.everyX0Seconds=function(){return"кожні %s секунд"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"з %s по %s секунду"},c.prototype.atX0SecondsPastTheMinute=function(){return"о %s секунді"},c.prototype.everyX0Minutes=function(){return"кожні %s хвилин"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"з %s по %s хвилину"},c.prototype.atX0MinutesPastTheHour=function(){return"о %s хвилині"},c.prototype.everyX0Hours=function(){return"кожні %s годин"},c.prototype.betweenX0AndX1=function(){return"між %s та %s"},c.prototype.atX0=function(){return"о %s"},c.prototype.commaEveryDay=function(){return", щоденно"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", кожен %s день тижня"},c.prototype.commaX0ThroughX1=function(){return", %s по %s"},c.prototype.commaAndX0ThroughX1=function(){return", та %s по %s"},c.prototype.first=function(){return"перший"},c.prototype.second=function(){return"другий"},c.prototype.third=function(){return"третій"},c.prototype.fourth=function(){return"четвертий"},c.prototype.fifth=function(){return"п'ятий"},c.prototype.commaOnThe=function(){return", в "},c.prototype.spaceX0OfTheMonth=function(){return" %s місяця"},c.prototype.lastDay=function(){return"останній день"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", в останній %s місяця"},c.prototype.commaOnlyOnX0=function(){return", тільки в %s"},c.prototype.commaAndOnX0=function(){return", і в %s"},c.prototype.commaEveryX0Months=function(){return", кожен %s місяць"},c.prototype.commaOnlyInX0=function(){return", тільки в %s"},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", в останній день місяця"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", в останній будень місяця"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s днів до останнього дня місяця"},c.prototype.firstWeekday=function(){return"перший будень"},c.prototype.weekdayNearestDayX0=function(){return"будень найближчий до %s дня"},c.prototype.commaOnTheX0OfTheMonth=function(){return", в %s місяця"},c.prototype.commaEveryX0Days=function(){return", кожен %s день"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", між %s та %s днями місяця"},c.prototype.commaOnDayX0OfTheMonth=function(){return", на %s день місяця"},c.prototype.commaEveryX0Years=function(){return", кожні %s роки"},c.prototype.commaStartingX0=function(){return", початок %s"},c.prototype.daysOfTheWeek=function(){return["неділя","понеділок","вівторок","середа","четвер","п'ятниця","субота"]},c.prototype.monthsOfTheYear=function(){return["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},c.prototype.onTheHour=function(){return"рівно о годині"},c})();return l.uk=N,u().locales.uk=new N,M})())})(Hue);var Vue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.pt_BR=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Ocorreu um erro ao gerar a descrição da expressão Cron."},c.prototype.at=function(){return"às"},c.prototype.atSpace=function(){return"às "},c.prototype.atX0=function(){return"Às %s"},c.prototype.atX0MinutesPastTheHour=function(){return"aos %s minutos da hora"},c.prototype.atX0SecondsPastTheMinute=function(){return"aos %s segundos do minuto"},c.prototype.betweenX0AndX1=function(){return"entre %s e %s"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", entre os dias %s e %s do mês"},c.prototype.commaEveryDay=function(){return", a cada dia"},c.prototype.commaEveryX0Days=function(){return", a cada %s dias"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", a cada %s dias de semana"},c.prototype.commaEveryX0Months=function(){return", a cada %s meses"},c.prototype.commaOnDayX0OfTheMonth=function(){return", no dia %s do mês"},c.prototype.commaOnlyInX0=function(L){return L&&L.length>1&&L[1]==="-"?"somente %s":", somente em %s"},c.prototype.commaOnlyOnX0=function(L){return L&&L.length>1&&L[1]==="-"?", somente %s":", somente de %s"},c.prototype.commaAndOnX0=function(){return", e de %s"},c.prototype.commaOnThe=function(L,j){return j==="6"||j==="0"?", no":", na "},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", no último dia do mês"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", no último dia da semana do mês"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s dias antes do último dia do mês"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", na última %s do mês"},c.prototype.commaOnTheX0OfTheMonth=function(){return", no %s do mês"},c.prototype.commaX0ThroughX1=function(){return", de %s a %s"},c.prototype.commaAndX0ThroughX1=function(){return", e de %s a %s"},c.prototype.everyHour=function(){return"a cada hora"},c.prototype.everyMinute=function(){return"a cada minuto"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"a cada minuto entre %s e %s"},c.prototype.everySecond=function(){return"a cada segundo"},c.prototype.everyX0Hours=function(){return"a cada %s horas"},c.prototype.everyX0Minutes=function(){return"a cada %s minutos"},c.prototype.everyX0Seconds=function(){return"a cada %s segundos"},c.prototype.fifth=function(L){return L==="6"||L==="0"?"quinto":"quinta"},c.prototype.first=function(L){return L==="6"||L==="0"?"primeiro":"primeira"},c.prototype.firstWeekday=function(){return"primeiro dia da semana"},c.prototype.fourth=function(L){return L==="6"||L==="0"?"quarto":"quarta"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"do minuto %s até %s de cada hora"},c.prototype.second=function(L){return L==="6"||L==="0"?"segundo":"segunda"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"No segundo %s até %s de cada minuto"},c.prototype.spaceAnd=function(){return" e"},c.prototype.spaceX0OfTheMonth=function(){return" %s do mês"},c.prototype.lastDay=function(){return"o último dia"},c.prototype.third=function(L){return L==="6"||L==="0"?"terceiro":"terceira"},c.prototype.weekdayNearestDayX0=function(){return"dia da semana mais próximo do dia %s"},c.prototype.commaEveryX0Years=function(){return", a cada %s anos"},c.prototype.commaStartingX0=function(){return", iniciando %s"},c.prototype.daysOfTheWeek=function(){return["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},c.prototype.monthsOfTheYear=function(){return["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},c.prototype.onTheHour=function(){return"na hora certa"},c})();return l.pt_BR=N,u().locales.pt_BR=new N,M})())})(Vue);var Zue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt)})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.pl=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Wystąpił błąd podczas generowania opisu wyrażenia cron. Sprawdź składnię wyrażenia cron."},c.prototype.at=function(){return"O"},c.prototype.atSpace=function(){return"O "},c.prototype.atX0=function(){return"o %s"},c.prototype.atX0MinutesPastTheHour=function(){return"w %s minucie"},c.prototype.atX0SecondsPastTheMinute=function(){return"w %s sekundzie"},c.prototype.betweenX0AndX1=function(){return"od %s do %s"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", od %s-ego do %s-ego dnia miesiąca"},c.prototype.commaEveryDay=function(){return", co dzień"},c.prototype.commaEveryX0Days=function(){return", co %s dni"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", co %s dni tygodnia"},c.prototype.commaEveryX0Months=function(){return", co %s miesięcy"},c.prototype.commaEveryX0Years=function(){return", co %s lat"},c.prototype.commaOnDayX0OfTheMonth=function(){return", %s-ego dnia miesiąca"},c.prototype.commaOnlyInX0=function(){return", tylko %s"},c.prototype.commaOnlyOnX0=function(){return", tylko %s"},c.prototype.commaAndOnX0=function(){return", i %s"},c.prototype.commaOnThe=function(){return", "},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", ostatni dzień miesiąca"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", ostatni dzień roboczy miesiąca"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s dni przed ostatnim dniem miesiąca"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", ostatni %s miesiąca"},c.prototype.commaOnTheX0OfTheMonth=function(){return", %s miesiąca"},c.prototype.commaX0ThroughX1=function(){return", od %s do %s"},c.prototype.commaAndX0ThroughX1=function(){return", i od %s do %s"},c.prototype.everyHour=function(){return"co godzinę"},c.prototype.everyMinute=function(){return"co minutę"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Co minutę od %s do %s"},c.prototype.everySecond=function(){return"co sekundę"},c.prototype.everyX0Hours=function(){return"co %s godzin"},c.prototype.everyX0Minutes=function(){return"co %s minut"},c.prototype.everyX0Seconds=function(){return"co %s sekund"},c.prototype.fifth=function(){return"piąty"},c.prototype.first=function(){return"pierwszy"},c.prototype.firstWeekday=function(){return"pierwszy dzień roboczy"},c.prototype.fourth=function(){return"czwarty"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"minuty od %s do %s"},c.prototype.second=function(){return"drugi"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"sekundy od %s do %s"},c.prototype.spaceAnd=function(){return" i"},c.prototype.spaceX0OfTheMonth=function(){return" %s miesiąca"},c.prototype.lastDay=function(){return"ostatni dzień"},c.prototype.third=function(){return"trzeci"},c.prototype.weekdayNearestDayX0=function(){return"dzień roboczy najbliższy %s-ego dnia"},c.prototype.commaStartingX0=function(){return", startowy %s"},c.prototype.daysOfTheWeek=function(){return["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},c.prototype.monthsOfTheYear=function(){return["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"]},c.prototype.onTheHour=function(){return"o pełnej godzinie"},c})();return l.pl=N,u().locales.pl=new N,M})())})(Zue);function Zc(i,e){return Pue.toString(i,{locale:e})}const be={mainDiv:{width:"100%",height:"100%"},periodSelect:{display:"block",width:250},tabContent:{padding:20,height:"calc(100% - 240px)",overflow:"auto"},numberButton:{padding:4,minWidth:40,margin:5},appBar:{color:"white"},warning:{marginLeft:16,color:"red",fontSize:12}},Xue=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Kue=["January","February","March","April","May","June","July","August","September","October","November","December"];function fn(i,e){const t=[];if(i==="*"){if(e===24||e===60||e===7)for(let r=0;r1){const M=parseInt(o[1],10);for(let a=parseInt(o[0],10);a<=M;a++)t.push(a)}else t.push(parseInt(s[r],10))}t.sort();for(let r=t.length-1;r>=0;r--)t[r]===t[r+1]&&t.splice(r+1,1);return t}function Sn(i,e){if(typeof i!="object"&&(i=[i]),i.length===e)return"*";const t=[];if(!i.length)return"-";i=i.map(o=>parseInt(o,10)),i.sort((o,M)=>o-M);let s=i[0],r=i[0];for(let o=1;othis.props.onChange&&this.props.onChange(this.state.cron),100)}static cron2state(e){e=e.replace(/['"]/g,"").trim();const t=e.split(" ").map(r=>r.trim());let s;return t.length===6?s={seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",dates:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:s={seconds:!1,minutes:t[0]||"*",hours:t[1]||"*",dates:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},s}static state2cron(e){let t=`${e.minutes} ${e.hours} ${e.dates} ${e.months} ${e.dow}`;return e.seconds!==!1&&(t=`${e.seconds} ${t}`),t}recalcCron(){const e=Pt.state2cron(this.state);e!==this.state.cron&&this.setState({cron:e},()=>this.props.onChange&&this.props.onChange(this.state.cron))}onToggle(e,t,s){if(e===!0)this.setCronAttr(t,"*");else if(e===!1)s===60||s===24?this.setCronAttr(t,"0"):this.setCronAttr(t,"1");else{const r=fn(this.state[t],s),o=r.indexOf(e);o!==-1?r.splice(o,1):(r.push(e),r.sort()),this.setCronAttr(t,Sn(r,s))}}getDigitsSelector(e,t){let s=[];if(t===7)s=[1,2,3,4,5,6,0];else if(t===60||t===24)for(let o=0;othis.onToggle(!1,e,t)},D.t("ra_Deselect all")),n.createElement(X,{key:"addall",variant:"contained",style:be.numberButton,color:"secondary",onClick:()=>this.onToggle(!0,e,t)},D.t("ra_Select all")),n.createElement("div",{key:"all"},s.map(o=>[t===7&&o===4||t===12&&o===7||t===31&&!((o-1)%10)||t===60&&o&&!(o%10)||t===24&&o&&!(o%6)?n.createElement("div",{key:`allInner${o}`,style:{width:"100%"}}):null,n.createElement(X,{key:`_${o}`,variant:r.indexOf(o)!==-1?"contained":"outlined",style:be.numberButton,color:r.indexOf(o)!==-1?"secondary":"primary",onClick:()=>this.onToggle(o,e,t)},t===7?D.t(Xue[o]):t===12?Kue[o-1]:o)]))]}getPeriodsTab(e,t){const s=this.state[e];let r=s==="*",o=s==null?!1:s.toString().includes("/"),M;if(this.state.modes[e]===null){M=r?"every":o?"everyN":"specific";const u=JSON.parse(JSON.stringify(this.state.modes));return u[e]=M,setTimeout(()=>this.setState({modes:u},()=>this.recalcCron()),100),null}r=this.state.modes[e]==="every",o=this.state.modes[e]==="everyN",M=this.state.modes[e];let a=1;return o&&s&&(a=parseInt(s.replace("*/",""),10)||1),n.createElement("div",null,n.createElement(Xe,{variant:"standard",style:{...be.periodSelect,verticalAlign:"bottom"},value:M,onChange:u=>{const l=JSON.parse(JSON.stringify(this.state.modes));if(l[e]=u.target.value,u.target.value==="every")this.setCronAttr(e,"*",l);else if(u.target.value==="everyN"){const N=parseInt((this.state[e]||"").toString().replace("*/",""),10)||1;this.setCronAttr(e,`*/${N}`,l)}else if(u.target.value==="specific"){let N=parseInt((this.state[e]||"").toString().split(",")[0],10)||0;!N&&(e==="months"||e==="dates")&&(N=1),this.setCronAttr(e,Sn(N,t),l)}}},n.createElement(te,{key:"every",value:"every"},D.t(`sc_every_${e}`)),n.createElement(te,{key:"everyN",value:"everyN"},D.t(`sc_everyN_${e}`)),n.createElement(te,{key:"specific",value:"specific"},D.t(`sc_specific_${e}`))),o&&n.createElement(le,{variant:"standard",key:"interval",label:D.t(`sc_${e}`),value:a,slotProps:{htmlInput:{min:1,max:t},inputLabel:{shrink:!0}},onChange:u=>{this.setState({[e]:`*/${u.target.value}`},()=>this.recalcCron())},type:"number",margin:"normal"}),!r&&!o&&this.getDigitsSelector(e,t))}static convertCronToText(e,t){return e.split(" ").includes("-")?D.t("ra_Invalid CRON"):Zc(e,t)}setCronAttr(e,t,s){s?e==="seconds"?this.setState({seconds:t,modes:s},()=>this.recalcCron()):e==="minutes"?this.setState({minutes:t,modes:s},()=>this.recalcCron()):e==="hours"?this.setState({hours:t,modes:s},()=>this.recalcCron()):e==="dates"?this.setState({dates:t,modes:s},()=>this.recalcCron()):e==="months"?this.setState({months:t,modes:s},()=>this.recalcCron()):e==="dow"?this.setState({dow:t,modes:s},()=>this.recalcCron()):this.setState({modes:s},()=>this.recalcCron()):e==="seconds"?this.setState({seconds:t},()=>this.recalcCron()):e==="minutes"?this.setState({minutes:t},()=>this.recalcCron()):e==="hours"?this.setState({hours:t},()=>this.recalcCron()):e==="dates"?this.setState({dates:t},()=>this.recalcCron()):e==="months"?this.setState({months:t},()=>this.recalcCron()):e==="dow"&&this.setState({dow:t},()=>this.recalcCron())}render(){const e=this.state.seconds!==!1?this.state.tab:this.state.tab+1,t=this.state.minutes==="*"||this.state.minutes==="*/1",s=this.state.seconds==="*"||this.state.seconds==="*/1";return n.createElement("div",{style:be.mainDiv},n.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)"}},n.createElement(le,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0})),n.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)",height:60}},Pt.convertCronToText(this.state.cron,this.props.language||"en"),n.createElement("span",{style:be.warning},s?D.t("ra_warning_every_second"):t?D.t("ra_warning_every_minute"):"")),n.createElement(H,{control:n.createElement(ne,{checked:!!this.state.seconds,onChange:r=>this.setState({seconds:r.target.checked?"*":!1},()=>this.recalcCron())}),label:D.t("ra_use seconds")}),n.createElement(rl,{position:"static",sx:{"&.MuiAppBar-root":be.appBar},color:"secondary"},n.createElement(ol,{value:this.state.tab,style:be.appBar,color:"secondary",onChange:(r,o)=>this.setState({tab:o})},this.state.seconds!==!1&&n.createElement(ls,{id:"sc_seconds",label:D.t("sc_seconds")}),n.createElement(ls,{id:"minutes",label:D.t("sc_minutes")}),n.createElement(ls,{id:"hours",label:D.t("sc_hours")}),n.createElement(ls,{id:"dates",label:D.t("sc_dates")}),n.createElement(ls,{id:"months",label:D.t("sc_months")}),n.createElement(ls,{id:"dow",label:D.t("sc_dows")}))),e===0&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("seconds",60)),e===1&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("minutes",60)),e===2&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("hours",24)),e===3&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("dates",31)),e===4&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("months",12)),e===5&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("dow",7)))}}const Ls={modalDialog:{minWidth:400,maxWidth:800},overflowHidden:{display:"flex",overflow:"hidden"},titleIcon:{marginRight:5},content:{fontSize:16},languageButton:{position:"absolute",right:8,top:8},languageButtonActive:i=>({color:i.palette.primary.main})};function Kje(i){const{open:e,toggleTranslation:t,noTranslation:s,title:r,fullWidth:o,help:M,maxWidth:a,progress:u,icon:l,applyDisabled:N,applyButton:c,onClose:L,children:j,titleButtonApply:g,titleButtonClose:y,onApply:d,textInput:I,defaultValue:m,overflowHidden:w}=i,[O,A]=Yo(m||"");ye(()=>{A(m||"")},[m]);const h=Ml(),p=Pa(h.breakpoints.down("md"));let S=null;return l&&(S=l),n.createElement(de,{open:e,maxWidth:p?!1:a||"md",fullWidth:!!o,fullScreen:p,disableEscapeKeyDown:!1,onClose:L,sx:{"& .MuiDialog-paper":p?{}:Ls.modalDialog}},r&&n.createElement(Ie,null,l?n.createElement(S,{style:Ls.titleIcon}):null,r,D.getLanguage()!=="en"&&t?n.createElement(P,{size:"large",sx:E.getStyle(i.theme,Ls.languageButton,s&&Ls.languageButtonActive),onClick:()=>t(),title:D.t("Disable/Enable translation")},n.createElement(jl,null)):null),n.createElement(Ae,{style:{...Ls.content,...w?Ls.overflowHidden:void 0,paddingTop:8}},I&&n.createElement(le,{autoComplete:"off",fullWidth:!0,autoFocus:!0,variant:"outlined",size:"medium",multiline:!0,value:O,onChange:f=>A(f.target.value)}),j,M?n.createElement("div",null,M):null),n.createElement(me,null,c!==!1&&n.createElement(X,{startIcon:n.createElement(ve,null),disabled:u||N&&m===O,onClick:()=>d(I?O:""),variant:"contained",color:"primary"},D.t(g||"ra_Ok")),n.createElement(X,{color:"grey",onClick:L,disabled:u,variant:"contained",startIcon:n.createElement(ge,null)},D.t(y||"ra_Cancel"))))}function que(){const i=NN();return[...i.breakpoints.keys].reverse().reduce((t,s)=>{const r=Pa(i.breakpoints.up(s));return!t&&r?s:t},null)||"xs"}function Nr(){return i=>function(t){const s=que();return n.createElement(i,{...t,width:s})}}function ele(i){const[e,t]=n.useState(i.input||i.value||""),[s,r]=n.useState("");return n.createElement(de,{open:!0,onClose:()=>i.onClose(null),"aria-labelledby":"form-dialog-title",fullWidth:i.fullWidth!==void 0?i.fullWidth:!1},n.createElement(Ie,{id:"form-dialog-title"},i.titleText),n.createElement(Ae,null,n.createElement(Jt,null,i.promptText),n.createElement(le,{variant:"standard",autoFocus:!0,margin:"dense",error:!!s,helperText:s===!0||!s?"":s,value:e,label:i.labelText||"",type:i.type||"text",onKeyUp:o=>o.code==="Enter"&&e&&i.onClose(e),onChange:o=>{let M="";i.verify&&(M=i.verify(o.target.value)),i.rule?t(i.rule(o.target.value)):t(o.target.value),r(M)},fullWidth:!0})),n.createElement(me,null,n.createElement(X,{variant:"contained",disabled:!e||!!s,onClick:()=>i.onClose(e),color:"primary",startIcon:n.createElement(ve,null)},i.applyText||D.t("ra_Ok")),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>i.onClose(null),startIcon:n.createElement(ge,null)},i.cancelText||D.t("ra_Cancel"))))}const tle=Nr()(ele);function lo(i){return n.createElement("svg",{onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 486 486",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),xmlns:"http://www.w3.org/2000/svg",className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"m414.928297,149.715165 c-2.639376,-57.222555 -35.669446,-106.505345 -83.345894,-132.039151 c-3.758948,-2.049842 -7.636885,-3.932022 -11.590542,-5.641125 c-19.303146,-8.394083 -40.607459,-13.050853 -63.004303,-13.050853 c-84.113909,0 -152.791790,65.703174 -157.718988,148.605566 l0.043268,-0.010816 v0.281245 c0,3.061243 -0.146031,16.750306 -0.146031,16.750306 l-2.352723,5.224668 h15.744315 c5.916964,-19.384275 24.078904,-32.635245 45.513024,-32.635245 c26.231510,0 47.573684,21.915481 47.573684,48.146991 c0,26.226103 -21.342174,47.146409 -47.573684,47.146409 c-25.111939,0 -45.734774,-19.735831 -47.443879,-44.658471 h-18.789334 c-0.400232,0 -0.778832,0.638209 -1.162839,0.584122 l-19.762875,55.199753 c-2.774590,7.696379 2.926030,16.214860 11.103771,16.214860 h17.020735 l-0.129805,87.899899 c0,17.356066 14.073071,31.174935 31.429136,31.174935 h56.205745 v82.648189 c0,12.877778 12.937273,22.580734 25.815051,22.580734 h144.597825 c12.877778,0 23.429877,-9.702955 23.429877,-22.580734 v-166.037352 c0,-22.645636 5.976457,-44.761234 16.561008,-64.789128 c11.055093,-20.925714 17.523731,-44.620611 18.129489,-69.792045 c0.027042,-1.260193 0.037858,-2.552839 0.037858,-3.845485 c0,-2.466302 -0.070310,-4.938014 -0.183890,-7.377273 zm-155.393308,-11.731165 h-13.456494 v13.559257 c0,4.732489 -4.267352,8.567157 -8.999842,8.567157 c-4.727079,0 -8.999842,-3.834667 -8.999842,-8.567157 v-13.559257 h-12.185483 c-4.732489,0 -8.567157,-4.267352 -8.567157,-8.999842 c0,-4.727079 3.834667,-8.999842 8.567157,-8.999842 h12.185483 v-12.077311 c0,-4.732489 4.272762,-8.567157 8.999842,-8.567157 c4.732489,0 8.999842,3.834667 8.999842,8.567157 v12.077311 h13.456494 c4.727079,0 8.567157,4.272762 8.567157,8.999842 c0,4.732489 -3.840077,8.999842 -8.567157,8.999842 zm0,0"}),n.createElement("path",{fill:"currentColor",d:"m187.695312 285.875c3.9375-3.980469 6.414063-9.449219 6.414063-15.523438 0-12.128906-9.855469-21.980468-21.984375-21.980468-6.007812 0-11.472656 2.410156-15.457031 6.347656-4.023438 4.003906-6.523438 9.539062-6.523438 15.636719 0 12.125 9.855469 21.980469 21.980469 21.980469 6.078125 0 11.585938-2.476563 15.570312-6.460938zm0 0"}))}function ms(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 650 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"m524,128l-192,0l-64,-64l-160,0c-26.51,0 -48,21.49 -48,48l0,288c0,26.51 21.49,48 48,48l416,0c26.51,0 48,-21.49 48,-48l0,-224c0,-26.51 -21.49,-48 -48,-48z"}))}function bi(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 650 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"m631.75617,292.093l-72.424,124.155a63.997,63.997 0 0 1 -55.281,31.752l-399.964,0c-18.523,0 -30.064,-20.093 -20.731,-36.093l72.424,-124.155a64,64 0 0 1 55.282,-31.752l399.964,0c18.523,0 30.064,20.093 20.73,36.093zm-420.694,-68.093l328,0l0,-48c0,-26.51 -21.49,-48 -48,-48l-160,0l-64,-64l-160,0c-26.51,0 -48,21.49 -48,48l0,278.046l69.077,-118.418c17.137,-29.378 48.912,-47.628 82.923,-47.628z"}))}function sM(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"#EE3333",d:"M256,0C114.844,0,0,114.844,0,256s114.844,256,256,256s256-114.844,256-256S397.156,0,256,0z M256,448 c-105.865,0-192-86.135-192-192c0-40.406,12.25-78.604,35.542-111.198l267.656,267.656C334.604,435.75,296.406,448,256,448z M412.458,367.198L144.802,99.542C177.396,76.25,215.594,64,256,64c105.865,0,192,86.135,192,192 C448,296.406,435.75,334.604,412.458,367.198z"}))}var sle=i=>typeof i!="string"?{}:i.split(/ ?; ?/).reduce((e,t)=>{const[s,r]=t.split(/ ?: ?/).map((o,M)=>M===0?o.replace(/\s+/g,""):o.trim());if(s&&r){const o=s.replace(/(\w)-(\w)/g,(a,u,l)=>`${u}${l.toUpperCase()}`);let M=r.trim();Number.isNaN(Number(r))||(M=Number(r)),e[s.startsWith("-")?s:o]=M}return e},{});function ile(i=6){const e="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let t="";for(let s=i;s>0;--s)t+=e[Math.round(Math.random()*(e.length-1))];return t}var rle=["br","col","colgroup","dl","hr","iframe","img","input","link","menuitem","meta","ol","param","select","table","tbody","tfoot","thead","tr","ul","wbr"],xn={"accept-charset":"acceptCharset",acceptcharset:"acceptCharset",accesskey:"accessKey",allowfullscreen:"allowFullScreen",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",cellpadding:"cellPadding",cellspacing:"cellSpacing",charset:"charSet",class:"className",classid:"classID",classname:"className",colspan:"colSpan",contenteditable:"contentEditable",contextmenu:"contextMenu",controlslist:"controlsList",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",datetime:"dateTime",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",enctype:"encType",for:"htmlFor",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",innerhtml:"innerHTML",inputmode:"inputMode",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",marginwidth:"marginWidth",marginheight:"marginHeight",maxlength:"maxLength",mediagroup:"mediaGroup",minlength:"minLength",nomodule:"noModule",novalidate:"noValidate",playsinline:"playsInline",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rowspan:"rowSpan",spellcheck:"spellCheck",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",tabindex:"tabIndex",typemustmatch:"typeMustMatch",usemap:"useMap",accentheight:"accentHeight","accent-height":"accentHeight",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",arabicform:"arabicForm","arabic-form":"arabicForm",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",diffuseconstant:"diffuseConstant",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",edgemode:"edgeMode",enablebackground:"enableBackground","enable-background":"enableBackground",externalresourcesrequired:"externalResourcesRequired",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",imagerendering:"imageRendering","image-rendering":"imageRendering",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",vmathematical:"vMathematical","v-mathematical":"vMathematical",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan",onblur:"onBlur",onchange:"onChange",onclick:"onClick",oncontextmenu:"onContextMenu",ondoubleclick:"onDoubleClick",ondrag:"onDrag",ondragend:"onDragEnd",ondragenter:"onDragEnter",ondragexit:"onDragExit",ondragleave:"onDragLeave",ondragover:"onDragOver",ondragstart:"onDragStart",ondrop:"onDrop",onerror:"onError",onfocus:"onFocus",oninput:"onInput",oninvalid:"onInvalid",onkeydown:"onKeyDown",onkeypress:"onKeyPress",onkeyup:"onKeyUp",onload:"onLoad",onmousedown:"onMouseDown",onmouseenter:"onMouseEnter",onmouseleave:"onMouseLeave",onmousemove:"onMouseMove",onmouseout:"onMouseOut",onmouseover:"onMouseOver",onmouseup:"onMouseUp",onscroll:"onScroll",onsubmit:"onSubmit",ontouchcancel:"onTouchCancel",ontouchend:"onTouchEnd",ontouchmove:"onTouchMove",ontouchstart:"onTouchStart",onwheel:"onWheel"};function ole(i,e){var o;const{key:t,level:s,...r}=e;switch(i.nodeType){case 1:return Ku(nle(i.nodeName),Mle(i,t),kn(i.childNodes,s,r));case 3:{const M=((o=i.nodeValue)==null?void 0:o.toString())??"";if(!r.allowWhiteSpaces&&/^\s+$/.test(M)&&!/[\u00A0\u202F]/.test(M))return null;if(!i.parentNode)return M;const a=i.parentNode.nodeName.toLowerCase();return rle.includes(a)?(/\S/.test(M)&&console.warn(`A textNode is not allowed inside '${a}'. Your text "${M}" will be ignored`),null):M}case 8:return null;case 11:return kn(i.childNodes,s,e);default:return null}}function Mle(i,e){const t={key:e};if(i instanceof Element){const s=i.getAttribute("class");s&&(t.className=s),[...i.attributes].forEach(r=>{switch(r.name){case"class":break;case"style":t[r.name]=sle(r.value);break;case"allowfullscreen":case"allowpaymentrequest":case"async":case"autofocus":case"autoplay":case"checked":case"controls":case"default":case"defer":case"disabled":case"formnovalidate":case"hidden":case"ismap":case"itemscope":case"loop":case"multiple":case"muted":case"nomodule":case"novalidate":case"open":case"readonly":case"required":case"reversed":case"selected":case"typemustmatch":t[xn[r.name]||r.name]=!0;break;default:t[xn[r.name]||r.name]=r.value}})}return t}function kn(i,e,t){const s=[...i].map((r,o)=>Fi(r,{...t,index:o,level:e+1})).filter(Boolean);return s.length?s:null}function nle(i){return/[a-z]+[A-Z]+[a-z]+/.test(i)?i:i.toLowerCase()}function Xc(i,e={}){return typeof i=="string"?ale(i,e):i instanceof Node?Fi(i,e):null}function Fi(i,e={}){if(!i||!(i instanceof Node))return null;const{actions:t=[],index:s=0,level:r=0,randomKey:o}=e;let M=i,a=`${r}-${s}`;const u=[];return o&&r===0&&(a=`${ile()}-${a}`),Array.isArray(t)&&t.forEach(l=>{l.condition(M,a,r)&&(typeof l.pre=="function"&&(M=l.pre(M,a,r),M instanceof Node||(M=i)),typeof l.post=="function"&&u.push(l.post(M,a,r)))}),u.length?u:ole(M,{key:a,level:r,...e})}function ale(i,e={}){if(!i||typeof i!="string")return null;const{includeAllNodes:t=!1,nodeOnly:s=!1,selector:r="body > *",type:o="text/html"}=e;try{const a=new DOMParser().parseFromString(i,o);if(t){const{childNodes:l}=a.body;return s?l:[...l].map(N=>Fi(N,e))}const u=a.querySelector(r)||a.body.childNodes[0];if(!(u instanceof Node))throw new TypeError("Error parsing input");return s?u:Fi(u,e)}catch{}return null}var cle=Object.defineProperty,ule=(i,e,t)=>e in i?cle(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Ai=(i,e,t)=>ule(i,typeof e!="symbol"?e+"":e,t),Yn="react-inlinesvg",lle=10,re={IDLE:"idle",LOADING:"loading",LOADED:"loaded",FAILED:"failed",READY:"ready",UNSUPPORTED:"unsupported"};function Nle(i){return i[Math.floor(Math.random()*i.length)]}function Zs(){var i;return!!(typeof window<"u"&&((i=window.document)!=null&&i.createElement))}function Lle(){return yle()&&typeof window<"u"&&window!==null}function jle(i,...e){const t={};for(const s in i)({}).hasOwnProperty.call(i,s)&&(e.includes(s)||(t[s]=i[s]));return t}function gle(i){const e="abcdefghijklmnopqrstuvwxyz",s=`${e}${e.toUpperCase()}1234567890`;let r="";for(let o=0;o299)throw new Error("Not found");if(!["image/svg+xml","text/plain"].some(o=>r.includes(o)))throw new Error(`Content type isn't valid: ${r}`);return t.text()}function Tle(i=1){return new Promise(e=>{setTimeout(e,i*1e3)})}function yle(){if(!document)return!1;const i=document.createElement("div");i.innerHTML="";const e=i.firstChild;return!!e&&e.namespaceURI==="http://www.w3.org/2000/svg"}var Dle=class{constructor(){Ai(this,"cacheApi"),Ai(this,"cacheStore"),Ai(this,"subscribers",[]),Ai(this,"isReady",!1),this.cacheStore=new Map;let i=Yn,e=!1;Zs()&&(i=window.REACT_INLINESVG_CACHE_NAME??Yn,e=!!window.REACT_INLINESVG_PERSISTENT_CACHE&&"caches"in window),e?caches.open(i).then(t=>{this.cacheApi=t}).catch(t=>{console.error(`Failed to open cache: ${t.message}`),this.cacheApi=void 0}).finally(()=>{this.isReady=!0;const t=[...this.subscribers];this.subscribers.length=0,t.forEach(s=>{try{s()}catch(r){console.error(`Error in CacheStore subscriber callback: ${r.message}`)}})}):this.isReady=!0}onReady(i){this.isReady?i():this.subscribers.push(i)}async get(i,e){var t;return await(this.cacheApi?this.fetchAndAddToPersistentCache(i,e):this.fetchAndAddToInternalCache(i,e)),((t=this.cacheStore.get(i))==null?void 0:t.content)??""}set(i,e){this.cacheStore.set(i,e)}isCached(i){var e;return((e=this.cacheStore.get(i))==null?void 0:e.status)===re.LOADED}async fetchAndAddToInternalCache(i,e){const t=this.cacheStore.get(i);if((t==null?void 0:t.status)===re.LOADING){await this.handleLoading(i,async()=>{this.cacheStore.set(i,{content:"",status:re.IDLE}),await this.fetchAndAddToInternalCache(i,e)});return}if(!(t!=null&&t.content)){this.cacheStore.set(i,{content:"",status:re.LOADING});try{const s=await Kc(i,e);this.cacheStore.set(i,{content:s,status:re.LOADED})}catch(s){throw this.cacheStore.set(i,{content:"",status:re.FAILED}),s}}}async fetchAndAddToPersistentCache(i,e){var r,o,M;const t=this.cacheStore.get(i);if((t==null?void 0:t.status)===re.LOADED)return;if((t==null?void 0:t.status)===re.LOADING){await this.handleLoading(i,async()=>{this.cacheStore.set(i,{content:"",status:re.IDLE}),await this.fetchAndAddToPersistentCache(i,e)});return}this.cacheStore.set(i,{content:"",status:re.LOADING});const s=await((r=this.cacheApi)==null?void 0:r.match(i));if(s){const a=await s.text();this.cacheStore.set(i,{content:a,status:re.LOADED});return}try{await((o=this.cacheApi)==null?void 0:o.add(new Request(i,e)));const a=await((M=this.cacheApi)==null?void 0:M.match(i)),u=await(a==null?void 0:a.text())??"";this.cacheStore.set(i,{content:u,status:re.LOADED})}catch(a){throw this.cacheStore.set(i,{content:"",status:re.FAILED}),a}}async handleLoading(i,e){var t;for(let s=0;s({[i]:e}))}async delete(i){this.cacheApi&&await this.cacheApi.delete(i),this.cacheStore.delete(i)}async clear(){if(this.cacheApi){const i=await this.cacheApi.keys();await Promise.allSettled(i.map(e=>this.cacheApi.delete(e)))}this.cacheStore.clear()}};function Qn(i){const e=Fe(void 0);return ye(()=>{e.current=i}),e.current}function dle(i){const{baseURL:e,content:t,description:s,handleError:r,hash:o,preProcessor:M,title:a,uniquifyIDs:u=!1}=i;try{const l=zle(t,M),N=Xc(l,{nodeOnly:!0});if(!N||!(N instanceof SVGSVGElement))throw new Error("Could not convert the src to a DOM Node");const c=qc(N,{baseURL:e,hash:o,uniquifyIDs:u});if(s){const L=c.querySelector("desc");L!=null&&L.parentNode&&L.parentNode.removeChild(L);const j=document.createElementNS("http://www.w3.org/2000/svg","desc");j.innerHTML=s,c.prepend(j)}if(typeof a<"u"){const L=c.querySelector("title");if(L!=null&&L.parentNode&&L.parentNode.removeChild(L),a){const j=document.createElementNS("http://www.w3.org/2000/svg","title");j.innerHTML=a,c.prepend(j)}}return c}catch(l){return r(l)}}function zle(i,e){return e?e(i):i}function qc(i,e){const{baseURL:t="",hash:s,uniquifyIDs:r}=e,o=["id","href","xlink:href","xlink:role","xlink:arcrole"],M=["href","xlink:href"],a=(u,l)=>M.includes(u)&&(l?!l.includes("#"):!1);return r&&[...i.children].forEach(u=>{var l;if((l=u.attributes)!=null&&l.length){const N=Object.values(u.attributes).map(c=>{const L=c,j=/url\((.*?)\)/.exec(c.value);return j!=null&&j[1]&&(L.value=c.value.replace(j[0],`url(${t}${j[1]}__${s})`)),L});o.forEach(c=>{const L=N.find(j=>j.name===c);L&&!a(c,L.value)&&(L.value=`${L.value}__${s}`)})}return u.children.length?qc(u,e):u}),i}var hs;function hle(i){const{cacheRequests:e=!0,children:t=null,description:s,fetchOptions:r,innerRef:o,loader:M=null,onError:a,onLoad:u,src:l,title:N,uniqueHash:c}=i,[L,j]=qu((Y,J)=>({...Y,...J}),{content:"",element:null,isCached:e&&hs.isCached(i.src),status:re.IDLE}),{content:g,element:y,isCached:d,status:I}=L,m=Qn(i),w=Qn(L),O=Fe(c??gle(8)),A=Fe(!1),h=Fe(!1),p=Qt(Y=>{A.current&&(j({status:Y.message==="Browser does not support SVG"?re.UNSUPPORTED:re.FAILED}),a==null||a(Y))},[a]),S=Qt((Y,J=!1)=>{A.current&&j({content:Y,isCached:J,status:re.LOADED})},[]),f=Qt(async()=>{const Y=await Kc(l,r);S(Y)},[r,S,l]),$=Qt(()=>{try{const Y=dle({...i,handleError:p,hash:O.current,content:g}),J=Xc(Y);if(!J||!el(J))throw new Error("Could not convert the src to a React element");j({element:J,status:re.READY})}catch(Y){p(Y)}},[g,p,i]),x=Qt(async()=>{const Y=/^data:image\/svg[^,]*?(;base64)?,(.*)/u.exec(l);let J;if(Y?J=Y[1]?window.atob(Y[2]):decodeURIComponent(Y[2]):l.includes("{A.current&&j({content:"",element:null,isCached:!1,status:re.LOADING})},[]);ye(()=>{if(A.current=!0,!(!Zs()||h.current)){try{if(I===re.IDLE){if(!Lle())throw new Error("Browser does not support SVG");if(!l)throw new Error("Missing src");Z()}}catch(Y){p(Y)}return h.current=!0,()=>{A.current=!1}}},[]),ye(()=>{if(!(!Zs()||!m)&&m.src!==l){if(!l){p(new Error("Missing src"));return}Z()}},[p,Z,m,l]),ye(()=>{I===re.LOADED&&$()},[I,$]),ye(()=>{!Zs()||!m||m.src!==l||(m.title!==N||m.description!==s)&&$()},[s,$,m,l,N]),ye(()=>{if(w)switch(I){case re.LOADING:{w.status!==re.LOADING&&x();break}case re.LOADED:{w.status!==re.LOADED&&$();break}case re.READY:{w.status!==re.READY&&(u==null||u(l,d));break}}},[x,$,d,u,w,l,I]);const k=jle(i,"baseURL","cacheRequests","children","description","fetchOptions","innerRef","loader","onError","onLoad","preProcessor","src","title","uniqueHash","uniquifyIDs");return Zs()?y?tl(y,{ref:o,...k}):[re.UNSUPPORTED,re.FAILED].includes(I)?t:M:M}function No(i){hs||(hs=new Dle);const{loader:e}=i,[t,s]=Yo(hs.isReady);return ye(()=>{t||hs.onReady(()=>{s(!0)})},[t]),t?n.createElement(hle,{...i}):e}function Ile(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"}))}function qje(i){let e;const t=i==null?void 0:i._id;return t?(t.startsWith("_design/")||t==="system"?e=n.createElement(Wi,{className:"iconOwn"}):t==="0_userdata"||t==="0_userdata.0"?e=n.createElement(gl,{className:"iconOwn"}):t==="alias"||t==="alias.0"?e=n.createElement(Ile,{className:"iconOwn"}):t==="system.adapter"?e=n.createElement(Wi,{className:"iconOwn"}):t==="system.group"?e=n.createElement(Qo,{className:"iconOwn"}):t==="system.user"?e=n.createElement(vo,{className:"iconOwn"}):t==="system.host"?e=n.createElement(Uo,{className:"iconOwn"}):t.endsWith(".connection")||t.endsWith(".connected")?e=n.createElement(zs,{className:"iconOwn"}):t.endsWith(".info")?e=n.createElement(bo,{className:"iconOwn"}):(i==null?void 0:i.type)==="meta"&&(e=n.createElement(tr,{className:"iconOwn"})),e||null):null}function ege(i,e){var r;e=e||".";let t="";const s=i==null?void 0:i.common;if(s){const o=s.icon;if(o)if(o.startsWith("data:image/"))t=o;else if(o.includes(".")){let M;i.type==="instance"||i.type==="adapter"?t=`${e}/adapter/${s.name}/${o}`:(r=i._id)!=null&&r.startsWith("system.adapter.")?(M=i._id.split(".",3),o[0]==="/"?M[2]+=o:M[2]+=`/${o}`,t=`${e}/adapter/${M[2]}`):(M=i._id.split(".",2),o[0]==="/"?M[0]+=o:M[0]+=`/${o}`,t=`${e}/adapter/${M[0]}`)}else return null}return t||null}const wle=window.location.hostname.endsWith("iobroker.in"),vn=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1),xe=n.forwardRef(function(e,t){var s,r,o;if(e.src){if(typeof e.src=="string"){if(e.src.length<3)return e.sx?n.createElement(W,{component:"span",sx:e.sx,ref:t,title:e.title||void 0,style:{height:27,marginTop:-8,...e.styleUTF8||e.style},className:e.className?`iconOwn ${e.className}`:"iconOwn"},e.src):n.createElement("span",{ref:t,title:e.title||void 0,style:{height:27,marginTop:-8,...e.styleUTF8||e.style},className:e.className?`iconOwn ${e.className}`:"iconOwn"},e.src);if(e.src.startsWith("data:image/svg"))return n.createElement(No,{title:e.title||void 0,src:e.src,className:e.className?`iconOwn ${e.className}`:"iconOwn",width:((s=e.style)==null?void 0:s.width)||28,height:((r=e.style)==null?void 0:r.height)||((o=e.style)==null?void 0:o.width)||28,style:e.style||void 0});if(wle&&!e.src.startsWith("http://")&&!e.src.startsWith("https://")){let M=e.src;return M.startsWith("./")?M=vn+M.substring(2):M.startsWith("/")||(M=vn+M),e.sx?n.createElement(W,{component:"img",sx:e.sx,title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:`https://remote-files.iobroker.in${M}`,alt:e.alt||void 0,ref:t,onError:a=>{var u;return(u=e.onError)==null?void 0:u.call(e,a)}}):n.createElement("img",{title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:`https://remote-files.iobroker.in${M}`,alt:e.alt||void 0,ref:t,onError:a=>{var u;return(u=e.onError)==null?void 0:u.call(e,a)}})}return e.sx?n.createElement(W,{component:"img",sx:e.sx,title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:e.src,alt:e.alt||void 0,ref:t,onError:e.onError}):n.createElement("img",{title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:e.src,alt:e.alt||void 0,ref:t,onError:e.onError})}return e.src}return null});xe.displayName="Icon";const Vt={dialog:{height:"100%"},paper:{height:"calc(100% - 64px)"},content:{textAlign:"center"},textarea:{width:"100%",height:"100%"},img:{width:"auto",height:"calc(100% - 5px)",objectFit:"contain"},dialogTitle:{justifyContent:"space-between",display:"flex"}},_e={images:["png","jpg","svg","jpeg","bmp","gif","apng","avif","webp","ico"],code:["js","json","json5","md"],txt:["log","txt","html","css","xml","ics","csv"],audio:["mp3","wav","ogg","acc"],video:["mp4","mov","avi"]};function Un(i,e){let t="";const s=new Uint8Array((i==null?void 0:i.data)||i),r=s.byteLength;for(let o=0;o{let o="";r.file!==void 0&&(o=r.file);const M={copyPossible:this.state.copyPossible,ext:this.state.ext};if(o.type==="Buffer")if(s.toLowerCase().endsWith(".json5")){M.ext="json5",M.copyPossible=!0;try{o=atob(Un(o,!0))}catch{console.error("Cannot convert base64 to string"),o=""}}else{const a=E.detectMimeType(Un(o));a&&(M.ext=a,M.copyPossible=_e.code.includes(a)||_e.txt.includes(a))}M.copyPossible&&(M.ext&&_e.txt.includes(M.ext)?(M.text=o,M.editingValue=o):M.ext&&_e.code.includes(M.ext)&&(M.code=o,M.editingValue=o)),this.setState(M)}).catch(r=>window.alert(`Cannot read file: ${r}`))}}componentDidMount(){this.readFile();const e=this.props.href.split("/");e.splice(0,2);const t=e[0],s=e.splice(1).join("/");this.props.supportSubscribes&&this.props.socket.subscribeFiles(t,s,this.onFileChanged).catch(r=>window.alert(`Cannot subscribe on file: ${r}`))}componentWillUnmount(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null);const e=this.props.href.split("/");e.splice(0,2);const t=e[0],s=e.splice(1).join("/");this.props.supportSubscribes&&this.props.socket.unsubscribeFiles(t,s,this.onFileChanged)}onFileChanged=(e,t,s)=>{this.state.changed||(this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(()=>{this.timeout=null,s===null?window.alert("Show file was deleted!"):this.state.text!==null||this.state.code!==null?this.readFile():this.setState({forceUpdate:Date.now()})},300))};getEditorOrViewer(){return n.createElement(le,{variant:"standard",style:Vt.textarea,multiline:!0,value:this.state.editingValue||this.state.code||this.state.text,slotProps:{htmlInput:{readOnly:!this.state.editing}}})}getContent(){return this.state.ext&&_e.images.includes(this.state.ext)?this.state.imgError?n.createElement(sM,{style:{...Vt.img,...this.props.getStyleBackgroundImage()}}):n.createElement(xe,{onError:e=>{e.target.onerror=null,this.setState({imgError:!0})},style:{...Vt.img,...this.props.getStyleBackgroundImage()},src:`${this.props.href}?ts=${this.state.forceUpdate}`,alt:this.props.href}):this.state.ext&&_e.audio.includes(this.state.ext)?n.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement("audio",{style:{width:"100%"},src:this.props.href,controls:!0})):this.state.ext&&_e.video.includes(this.state.ext)?n.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement("video",{style:{width:"100%",height:"100%"},controls:!0},n.createElement("source",{src:this.props.href,type:`video/${this.state.ext}`}))):this.state.code!==null||this.state.text!==null||this.state.editing?this.getEditorOrViewer():null}onSave(){}render(){return n.createElement(de,{sx:{"&.MuiDialog-scrollPaper":Vt.dialog,"& .MuiDialog-paper":Vt.paper},scroll:"paper",open:!!this.props.href,onClose:()=>this.props.onClose(),fullWidth:!0,maxWidth:"xl","aria-labelledby":"ar_dialog_file_view_title"},n.createElement("div",{style:Vt.dialogTitle},n.createElement(Ie,{id:"ar_dialog_file_view_title"},`${this.props.t(this.state.editing?"Edit":"View")}: ${this.props.href}`),this.state.ext&&_e.images.includes(this.state.ext)&&n.createElement("div",null,n.createElement(P,{size:"large",color:"inherit",onClick:this.props.setStateBackgroundImage},n.createElement($o,null)))),n.createElement(Ae,{style:Vt.content},this.getContent()),n.createElement(me,null,this.state.copyPossible?n.createElement(X,{color:"grey",onClick:e=>{e.stopPropagation(),e.preventDefault(),E.copyToClipboard(this.state.text||this.state.code||"")},startIcon:n.createElement(Tl,null)},this.props.t("Copy content")):null,this.state.editing?n.createElement(X,{color:"grey",disabled:this.state.editingValue===this.state.code||this.state.editingValue===this.state.text,variant:"contained",onClick:()=>this.onSave(),startIcon:n.createElement(Br,null)},this.props.t("Save")):null,n.createElement(X,{variant:"contained",onClick:()=>this.props.onClose(),color:"primary",startIcon:n.createElement(ge,null)},this.props.t("Close"))))}}const Ale=Nr()(Cle),js=32,Tt=32,mi=120,bn=64,$n="Not found",pi={all:Ja,images:Al,code:Po,txt:Cl,audio:wl,video:Il},v={root:{width:"100%",overflow:"hidden",height:"100%",position:"relative"},filesDiv:{width:"calc(100% - 8px)",overflowX:"hidden",overflowY:"auto",padding:8},filesDivHint:{position:"absolute",bottom:0,left:20,opacity:.7,fontStyle:"italic",fontSize:12},filesDivTable:{height:"calc(100% - 56px)"},filesDivTile:{height:"calc(100% - 104px)",display:"flex",alignContent:"flex-start",alignItems:"stretch",flexWrap:"wrap",flex:`0 0 ${bn}px`},itemTile:i=>({position:"relative",userSelect:"none",cursor:"pointer",height:mi,width:bn,display:"inline-block",textAlign:"center",opacity:.1,transition:"opacity 1s",margin:"4px",borderRadius:"4px","&:hover":{background:i.palette.secondary.light,color:E.invertColor(i.palette.secondary.main,!0)}}),itemNameFolderTile:{fontWeight:"bold"},itemNameTile:{width:"100%",height:32,overflow:"hidden",textOverflow:"ellipsis",fontSize:12,textAlign:"center",wordBreak:"break-all"},itemFolderIconTile:i=>({width:"100%",height:mi-32-16-8,display:"block",pl:1,color:i.palette.secondary.main||"#fbff7d"}),itemFolderIconBack:i=>({position:"absolute",top:22,left:18,zIndex:1,color:(i.palette.mode==="dark","#FFF")}),itemSizeTile:{width:"100%",height:16,textAlign:"center",fontSize:10},itemImageTile:{width:"calc(100% - 8px)",height:mi-32-16-8,margin:4,display:"block",textAlign:"center",objectFit:"contain"},itemIconTile:{width:"100%",height:mi-32-16-8,display:"block",objectFit:"contain"},itemSelected:i=>({background:i.palette.primary.main,color:E.invertColor(i.palette.primary.main,!0)}),itemTable:i=>({userSelect:"none",cursor:"pointer",height:js,display:"inline-flex",lineHeight:`${js}px`,"&:hover":{background:i.palette.secondary.light,color:E.invertColor(i.palette.secondary.main,!0)}}),itemNameTable:{display:"inline-block",pl:"10px",fontSize:"1rem",verticalAlign:"top",flexGrow:1,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden","@media screen and (max-width: 500px)":{textAlign:"end",direction:"rtl"}},itemNameFolderTable:{fontWeight:"bold"},itemSizeTable:{display:"inline-block",width:60,verticalAlign:"top",textAlign:"right",whiteSpace:"nowrap"},itemAccessTable:{verticalAlign:"top",width:60,textAlign:"right",paddingRight:5,display:"flex",justifyContent:"center"},itemImageTable:{display:"inline-block",width:30,marginTop:1,objectFit:"contain",maxHeight:30},itemNoImageTable:{marginTop:6},itemIconTable:{display:"inline-block",marginTop:1,width:30,height:30},itemFolderTable:{},itemFolderTemp:{opacity:.4},itemFolderIconTable:i=>({marginTop:"1px",marginLeft:"8px",display:"inline-block",width:30,height:30,color:i.palette.secondary.main||"#fbff7d"}),itemDownloadButtonTable:i=>({display:"inline-block",width:Tt,height:js,minWidth:Tt,verticalAlign:"middle",textAlign:"center",padding:0,borderRadius:`${Tt/2}px`,"&:hover":{backgroundColor:i.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.08)"},"& span":{pt:"9px"},"& svg":{width:14,height:14,fontSize:"1rem",mt:"-3px",verticalAlign:"middle",color:i.palette.mode==="dark"?"#EEE":"#111"}}),itemDownloadEmptyTable:{display:"inline-block",width:Tt,height:js,minWidth:Tt,padding:0},itemAclButtonTable:{width:Tt,height:js,minWidth:Tt,verticalAlign:"top",padding:0,fontSize:12,display:"flex"},itemDeleteButtonTable:{display:"inline-block",width:Tt,height:js,minWidth:Tt,verticalAlign:"top",padding:0,"& svg":{width:18,height:18,fontSize:"1.5rem"}},uploadDiv:{top:0,zIndex:1,bottom:0,left:0,right:0,position:"absolute",opacity:.9,textAlign:"center",background:"#FFFFFF"},uploadDivDragging:{opacity:1},uploadCenterDiv:i=>({m:"20px",border:"3px dashed grey",borderRadius:"30px",width:"calc(100% - 40px)",height:"calc(100% - 40px)",position:"relative",color:i.palette.mode==="dark"?"#222":"#CCC",display:"flex",alignItems:"center",justifyContent:"center"}),uploadCenterIcon:{width:"25%",height:"25%"},uploadCenterText:{fontSize:24,fontWeight:"bold"},uploadCloseButton:{zIndex:2,position:"absolute",top:30,right:30},uploadCenterTextAndIcon:{position:"absolute",height:"30%",width:"100%",margin:"auto",opacity:.3},menuButtonExpertActive:{color:"#c00000"},menuButtonRestrictActive:{color:"#c05000"},pathDiv:i=>({display:"flex",width:"calc(100% - 16px)",ml:1,mr:1,textOverflow:"clip",overflow:"hidden",whiteSpace:"nowrap",backgroundColor:i.palette.secondary.main,color:i.palette.secondary.contrastText,borderRadius:"4px 4px 0 0"}),pathDivInput:{width:"100%"},pathDivBreadcrumbDir:i=>({pl:"2px",pr:"2px",cursor:"pointer",color:"white","&:hover":{backgroundColor:i.palette.primary.main,color:i.palette.primary.contrastText}}),pathDivBreadcrumbSelected:{color:"#FFF"},backgroundImageLight:{background:"white"},backgroundImageDark:{background:"black"},backgroundImageColored:{background:"silver"},specialFolder:i=>({color:i.palette.mode==="dark"?"#229b0f":"#5dd300"}),tooltip:{pointerEvents:"none"}},Et="0_userdata.0";function gs(i){const e=(i||"").split("/");return e.length&&e.pop(),e.join("/")}function fr(i){const e=E.getFileExtension(i);return!!(e!=null&&e.toLowerCase().match(/[a-z]+/)&&e.length<5)}const ie="Table",Sr="Tile";function Pn(i,e){return i.folder&&e.folder?i.name>e.name?1:i.namee.name?1:i.name{var l;return u.startsWith(`${this.limitToPath}/`)||u===this.limitToPath||((l=this.limitToPath)==null?void 0:l.startsWith(`${u}/`))}))}catch{s=[]}let r;this.props.showViewTypeButton?r=this.localStorage.getItem("files.viewType")||ie:r=ie;let o=this.props.selected||this.localStorage.getItem("files.selected")||Et,M;if(e.restrictToFolder){o=e.restrictToFolder,M=e.restrictToFolder;const u=e.restrictToFolder.split("/");s=[];let l="";for(let N=0;N{if(this.state.viewType===ie&&!this.findItem(this.state.selected)){const t=this.state.selected.split("/");for(;t.length&&!this.findItem(t.join("/"));)t.pop();let s;t.length?s=t.join("/"):s=Et,this.setState({selected:s,path:s,pathFocus:!1},()=>this.scrollToSelected())}else this.scrollToSelected();this.initialReadFinished=!0})}scrollToSelected(){if(this.mounted){const e=document.getElementById(this.state.selected);e==null||e.scrollIntoView()}}async componentDidMount(){this.mounted=!0,this.loadFolders().catch(e=>console.error(`Cannot load folders: ${e}`)),this.browseList=[],this.browseListRunning=!1,this.supportSubscribes=await this.props.socket.checkFeatureSupported("BINARY_STATE_EVENT"),this.supportSubscribes&&await this.props.socket.subscribeFiles("*","*",this.onFileChange)}componentWillUnmount(){this.supportSubscribes&&this.props.socket.unsubscribeFiles("*","*",this.onFileChange),this.mounted=!1,this.browseList=null,this.browseListRunning=!1,Object.values(this._tempTimeout).forEach(e=>{e&&clearTimeout(e)}),this._tempTimeout={}}browseFoldersCb(e,t,s){if(!(e!=null&&e.length))s(t);else{const r=e.shift();r?this.browseFolder(r,t).catch(o=>console.error(`Cannot read folder ${r}: ${o.message}`)).then(()=>{setTimeout(()=>this.browseFoldersCb(e,t,s),0)}):setTimeout(()=>this.browseFoldersCb(e,t,s),0)}}browseFolders(e,t){let s;return t?s=t:(s={},Object.keys(this.state.folders).forEach(r=>s[r]=this.state.folders[r])),e!=null&&e.length?new Promise(r=>{this.browseFoldersCb(e,s,r)}):Promise.resolve(s)}readDirSerial(e,t){return new Promise((s,r)=>{this.browseList&&(this.browseList.push({resolve:s,reject:r,adapter:e,relPath:t}),this.browseListRunning||this.processBrowseList())})}processBrowseList(e=0){!this.browseListRunning&&this.browseList&&this.browseList.length&&(this.browseListRunning=!0,this.browseList.length>10?this.browseList.length%10||this.setState({queueLength:this.browseList.length}):this.setState({queueLength:this.browseList.length}),this.browseList[0].processing=!0,this.props.socket.readDir(this.browseList[0].adapter,this.browseList[0].relPath||"").then(t=>{if(this.browseList){const s=this.browseList.shift();if(s){const r=s.resolve;s.resolve=null,s.reject=null,s.adapter=null,s.relPath=null,r&&r(t),this.browseListRunning=!1,this.browseList.length?e<5?this.processBrowseList(e+1):setTimeout(()=>this.processBrowseList(0),0):this.setState({queueLength:0})}else this.setState({queueLength:0})}}).catch(t=>{if(this.browseList){const s=this.browseList.shift();if(s){const r=s.reject;s.resolve=null,s.reject=null,s.adapter=null,s.relPath=null,r&&r(t),this.browseListRunning=!1,this.browseList.length?e<5?this.processBrowseList(e+1):setTimeout(()=>this.processBrowseList(0),0):this.setState({queueLength:0})}else this.setState({queueLength:0})}}))}async browseFolder(e,t,s,r){let o;if(t?o=t:(o={},Object.keys(this.state.folders).forEach(c=>{o[c]=this.state.folders[c]})),o[e]&&!r)return s?Promise.resolve(o):new Promise((c,L)=>{Promise.all(o[e].filter(j=>j.folder).map(j=>this.browseFolder(j.id,o,!0).catch(()=>{}))).then(()=>c(o)).catch(j=>L(new Error(j)))});if(!e||e==="/"){try{let c=await this.props.socket.readMetaItems();const L=[];let j=null;if(this.state.restrictToFolder){const y=this.state.restrictToFolder.split("/")[0];c=c.filter(d=>d._id===y)}else this.state.expertMode||(c=c.filter(y=>!y._id.endsWith(".admin")));const g=c.findIndex(y=>y._id==="system.meta.uuid");if(g!==-1&&c.splice(g,1),c.forEach(y=>{if(this.limitToObjectID&&this.limitToObjectID!==y._id)return;const d={id:y._id,name:y._id,title:y.common&&y.common.name||y._id,meta:!0,from:y.from,ts:y.ts,color:y.common&&y.common.color,icon:y.common&&y.common.icon,folder:!0,acl:y.acl,level:0};d.id===Et?j=d:L.push(d)}),L.sort((y,d)=>y.id>d.id?1:y.idy.folder).map(y=>this.browseFolder(y.id,o,!0).catch(()=>{}))).then(()=>o)}catch(c){const L=c;this.initialReadFinished&&window.alert(`Cannot read meta items: ${L.message}`),o[e||"/"]=[]}return o}const M=e.split("/"),a=M.length,u=M.shift(),l=M.join("/");let N;try{N=await this.readDirSerial(u||"",l)}catch(c){if(c==="Not exists"&&u==="0_userdata.0")N=[];else throw c}try{const c=[];if(N.forEach(L=>{var g;const j={id:`${e}/${L.file}`,ext:E.getFileExtension(L.file),folder:L.isDir,name:L.file,size:(g=L.stats)==null?void 0:g.size,modified:L.modifiedAt,acl:L.acl,level:a};this.state.restrictToFolder?(j.folder&&(j.id.startsWith(`${this.state.restrictToFolder}/`)||j.id===this.state.restrictToFolder||this.state.restrictToFolder.startsWith(`${j.id}/`))||j.id.startsWith(`${this.state.restrictToFolder}/`))&&c.push(j):this.limitToPath?(j.folder&&(j.id.startsWith(`${this.limitToPath}/`)||j.id===this.limitToPath||this.limitToPath.startsWith(`${j.id}/`))||j.id.startsWith(`${this.limitToPath}/`))&&c.push(j):c.push(j)}),c.sort(Pn),o[e]=c,!s)return Promise.all(c.filter(L=>L.folder).map(L=>this.browseFolder(L.id,o,!0))).then(()=>o)}catch(c){const L=c;this.initialReadFinished&&window.alert(`Cannot read ${u}${l?`/${l}`:""}: ${L==null?void 0:L.message}`),o[e]=[]}return o}toggleFolder(e,t){t==null||t.stopPropagation();const s=[...this.state.expanded],r=s.indexOf(e.id);r===-1?(s.push(e.id),s.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(s)),e.temp?this.setState({expanded:s}):this.browseFolder(e.id).then(o=>this.setState({expanded:s,folders:o})).catch(o=>window.alert(o===$n?this.props.t('ra_Cannot find "%s"',e.id):this.props.t('ra_Cannot read "%s"',e.id)))):(s.splice(r,1),this.localStorage.setItem("files.expanded",JSON.stringify(s)),this.setState({expanded:s}))}onFileChange=(e,t,s)=>{const r=`${e}/${t}`,o=r.lastIndexOf("/"),M=r.substring(0,o);console.log(`File changed ${r}[${s}]`),this.state.folders[M]&&(this._tempTimeout[M]&&clearTimeout(this._tempTimeout[M]),this._tempTimeout[M]=setTimeout(()=>{delete this._tempTimeout[M],this.browseFolder(M,null,!1,!0).then(a=>this.setState({folders:a})).catch(a=>console.error(`Cannot read folder: ${a.message}`))},300))};changeFolder(e,t){var r;e==null||e.stopPropagation(),this.lastSelect=Date.now();let s=t||gs(this.state.currentDir);if(s==="/"&&(s=""),this.state.viewType==="Tile"&&((r=this.refFileDiv.current)!=null&&r.scrollTop)&&(this.scrollPositions[this.state.currentDir]=this.refFileDiv.current.scrollTop),this.localStorage.setItem("files.currentDir",s),t&&e&&(e.altKey||e.shiftKey||e.ctrlKey||e.metaKey)){this.setState({selected:s});return}if(s&&!this.state.folders[s]){this.browseFolder(s).then(o=>this.setState({folders:o,path:s,currentDir:s,selected:s,pathFocus:!1},()=>this.props.onSelect&&this.props.onSelect(""))).catch(o=>console.error(`Cannot read folder: ${o.message}`));return}this.setState({currentDir:s,selected:s,path:s,pathFocus:!1},()=>{if(this.props.onSelect&&this.props.onSelect(""),this.state.viewType==="Tile"&&this.scrollPositions[this.state.currentDir]){const o=this.scrollPositions[this.state.currentDir];delete this.scrollPositions[this.state.currentDir],this.refFileDiv.current&&(this.refFileDiv.current.scrollTop=o)}})}select(e,t,s){t&&t.stopPropagation(),this.lastSelect=Date.now(),this.localStorage.setItem("files.selected",e),this.setState({selected:e,path:e,pathFocus:!1},()=>{if(this.props.onSelect){const r=E.getFileExtension(e);(!this.props.filterFiles||r&&this.props.filterFiles.includes(r))&&(!this.state.filterByType||r&&_e[this.state.filterByType].includes(r))?this.props.onSelect(e,!1,!!this.state.folders[e]):this.props.onSelect("")}s&&s()})}getText(e){if(e)return typeof e=="object"?e[this.props.lang]||e.en||void 0:e}renderFolder(e,t){var u;if(this.state.filterEmpty&&!((u=this.state.folders[e.id])!=null&&u.length)&&e.id!==Et&&!e.temp)return null;const s=t?bi:ms,r=this.state.viewType===ie?e.level*this.levelPadding:0,o=e.name===Et,M=o||e.name==="vis.0"||e.name==="vis-2.0",a=E.getStyle(this.props.theme,v[`itemFolderIcon${this.state.viewType}`],M&&v.specialFolder);return n.createElement(W,{component:"div",key:e.id,id:e.id,style:this.state.viewType===ie?{marginLeft:r,width:`calc(100% - ${r}px)`}:void 0,onClick:l=>this.state.viewType===ie?this.select(e.id,l):this.changeFolder(l,e.id),onDoubleClick:l=>this.state.viewType===ie&&this.toggleFolder(e,l),title:this.getText(e.title),className:"browserItem",sx:E.getStyle(this.props.theme,v[`item${this.state.viewType}`],v[`itemFolder${this.state.viewType}`],this.state.selected===e.id?v.itemSelected:{},e.temp?v.itemFolderTemp:{})},n.createElement(s,{style:a,onClick:this.state.viewType===ie?l=>this.toggleFolder(e,l):void 0}),n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,v[`itemName${this.state.viewType}`],v[`itemNameFolder${this.state.viewType}`])},o?this.props.t("ra_User files"):e.name),n.createElement(W,{component:"div",style:v[`itemSize${this.state.viewType}`],sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===ie&&this.state.folders[e.id]?this.state.folders[e.id].length:""),n.createElement(W,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===ie&&this.props.expertMode?this.formatAcl(e.acl):null),this.state.viewType===ie&&this.props.expertMode?n.createElement(W,{component:"div",sx:{...v.itemDeleteButtonTable,display:{md:"inline-block",sm:"none"}}}):null,this.state.viewType===ie&&this.props.allowDownload?n.createElement("div",{style:v[`itemDownloadEmpty${this.state.viewType}`]}):null,this.state.viewType===ie&&this.props.allowDelete&&this.state.folders[e.id]&&this.state.folders[e.id].length?n.createElement(P,{"aria-label":"delete",onClick:l=>{l.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(e.id):this.setState({deleteItem:e.id})},sx:v[`itemDeleteButton${this.state.viewType}`],size:"large"},n.createElement(ut,{fontSize:"small"})):this.state.viewType===ie&&this.props.allowDelete?n.createElement(W,{component:"div",sx:v[`itemDeleteButton${this.state.viewType}`]}):null)}renderBackFolder(){return n.createElement(W,{component:"div",key:this.state.currentDir,id:this.state.currentDir,onClick:e=>this.changeFolder(e),title:this.props.t("ra_Back to %s",gs(this.state.currentDir)),className:"browserItem",sx:E.getStyle(this.props.theme,v[`item${this.state.viewType}`],v[`itemFolder${this.state.viewType}`])},n.createElement(ms,{style:E.getStyle(this.props.theme,v[`itemFolderIcon${this.state.viewType}`])}),n.createElement(yl,{sx:v.itemFolderIconBack}),n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,v[`itemName${this.state.viewType}`],v[`itemNameFolder${this.state.viewType}`])},".."))}formatSize(e){return n.createElement("div",{style:v[`itemSize${this.state.viewType}`]},e||e===0?E.formatBytes(e):"")}formatAcl(e){const t=e?e.permissions||e.file:0;let s;return t?s=t.toString(16).padStart(3,"0"):s="",n.createElement("div",{style:v[`itemAccess${this.state.viewType}`]},this.props.modalEditOfAccessControl?n.createElement(P,{size:"large",onClick:()=>this.setState({modalEditOfAccess:!0}),sx:v[`itemAclButton${this.state.viewType}`]},s||"---"):s||"---")}getFileIcon(e){switch(e){case"json":case"json5":return n.createElement(zl,{style:v[`itemIcon${this.state.viewType}`]});case"css":return n.createElement(dl,{style:v[`itemIcon${this.state.viewType}`]});case"js":case"ts":return n.createElement(Po,{style:v[`itemIcon${this.state.viewType}`]});case"html":case"md":return n.createElement(tr,{style:v[`itemIcon${this.state.viewType}`]});case"mp3":case"ogg":case"wav":case"m4a":case"mp4":case"flac":return n.createElement(Dl,{style:v[`itemIcon${this.state.viewType}`]});default:return n.createElement(Ja,{style:v[`itemIcon${this.state.viewType}`]})}}static getEditFile(e){switch(e){case"json":case"json5":case"js":case"html":case"txt":case"css":case"log":case"csv":return!0;default:return!1}}setStateBackgroundImage=()=>{const e=["light","dark","colored","delete"];this.setState(({backgroundImage:t})=>t&&e.indexOf(t)!==-1&&e.length-1!==e.indexOf(t)?(this.localStorage.setItem("files.backgroundImage",e[e.indexOf(t)+1]),{backgroundImage:e[e.indexOf(t)+1]}):(this.localStorage.setItem("files.backgroundImage",e[0]),{backgroundImage:e[0]}))};getStyleBackgroundImage=()=>{switch(this.state.backgroundImage){case"light":return v.backgroundImageLight;case"dark":return v.backgroundImageDark;case"colored":return v.backgroundImageColored;case"delete":return null;default:return null}};renderFile(e){const t=this.state.viewType===ie?e.level*this.levelPadding:0,s=E.getFileExtension(e.name);return n.createElement(W,{component:"div",key:e.id,id:e.id,onDoubleClick:r=>{r.stopPropagation(),this.props.onSelect?(!this.props.filterFiles||e.ext&&this.props.filterFiles.includes(e.ext))&&(!this.state.filterByType||e.ext&&_e[this.state.filterByType].includes(e.ext))&&this.props.onSelect(e.id,!0,!!this.state.folders[e.id]):this.setState({viewer:this.imagePrefix+e.id,formatEditFile:s})},onClick:r=>this.select(e.id,r),style:this.state.viewType===ie?{marginLeft:t,width:`calc(100% - ${t}px)`}:void 0,className:"browserItem",sx:E.getStyle(this.props.theme,v[`item${this.state.viewType}`],v[`itemFile${this.state.viewType}`],this.state.selected===e.id?v.itemSelected:void 0)},s&&_e.images.includes(s)?this.state.fileErrors.includes(e.id)?n.createElement(sM,{style:{...v[`itemImage${this.state.viewType}`],...this.getStyleBackgroundImage(),...v[`itemNoImage${this.state.viewType}`]}}):n.createElement(xe,{onError:r=>{r.target.onerror=null;const o=[...this.state.fileErrors];o.includes(e.id)||(o.push(e.id),this.setState({fileErrors:o}))},style:{...v[`itemImage${this.state.viewType}`],...this.getStyleBackgroundImage()},src:this.imagePrefix+e.id,alt:e.name}):this.getFileIcon(s),n.createElement(W,{component:"div",sx:v[`itemName${this.state.viewType}`]},e.name),n.createElement(W,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.formatSize(e.size)),n.createElement(W,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===ie&&this.props.expertMode?this.formatAcl(e.acl):null),n.createElement(W,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===ie&&this.props.expertMode&&iM.getEditFile(s)?n.createElement(P,{"aria-label":"edit",onClick:r=>{r.stopPropagation(),this.props.onSelect?(!this.props.filterFiles||e.ext&&this.props.filterFiles.includes(e.ext))&&(!this.state.filterByType||e.ext&&_e[this.state.filterByType].includes(e.ext))&&this.props.onSelect(e.id,!0,!!this.state.folders[e.id]):this.setState({viewer:this.imagePrefix+e.id,formatEditFile:s})},sx:v.itemDeleteButtonTable,size:"large"},n.createElement(Ks,{fontSize:"small"})):n.createElement(W,{component:"div",sx:v[`itemDeleteButton${this.state.viewType}`]})),this.state.viewType===ie&&this.props.allowDownload?n.createElement(W,{component:"a",className:"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge",sx:v.itemDownloadButtonTable,tabIndex:0,download:e.id,href:this.imagePrefix+e.id,onClick:r=>r.stopPropagation()},n.createElement(hl,null)):null,this.state.viewType===ie&&this.props.allowDelete&&e.id!=="vis.0/"&&e.id!=="vis-2.0/"&&e.id!==Et?n.createElement(P,{"aria-label":"delete",onClick:r=>{r.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(e.id):this.setState({deleteItem:e.id})},sx:v[`itemDeleteButton${this.state.viewType}`],size:"large"},n.createElement(ut,{fontSize:"small"})):this.state.viewType===ie&&this.props.allowDelete?n.createElement(W,{component:"div",sx:v[`itemDeleteButton${this.state.viewType}`]}):null)}renderItems(e){var t;if((t=this.state.folders)!=null&&t[e]){if(this.state.viewType===Sr){const r=[];return e&&e!=="/"&&r.push(this.renderBackFolder()),this.state.folders[e].forEach(o=>{o.folder?r.push(this.renderFolder(o)):(!this.props.filterFiles||o.ext&&this.props.filterFiles.includes(o.ext))&&(!this.state.filterByType||o.ext&&_e[this.state.filterByType].includes(o.ext))&&r.push(this.renderFile(o))}),r}const s=[];return this.state.folders[e].forEach(r=>{if(r.folder){const o=this.state.expanded.includes(r.id),M=this.renderFolder(r,o);if(Array.isArray(M)?M.forEach(a=>s.push(a)):s.push(M),this.state.folders[r.id]&&o){const a=this.renderItems(r.id);Array.isArray(a)?a.forEach(u=>s.push(u)):s.push(a)}}else(!this.props.filterFiles||r.ext&&this.props.filterFiles.includes(r.ext))&&(!this.state.filterByType||r.ext&&_e[this.state.filterByType].includes(r.ext))&&s.push(this.renderFile(r))}),s}return n.createElement("div",{style:{position:"relative"}},n.createElement(er,{key:e,color:"secondary",size:24}),n.createElement("div",{style:{position:"absolute",zIndex:2,top:4,width:24,textAlign:"center"}},this.state.queueLength))}renderToolbar(){const e=this.props.showTypeSelector?pi[this.state.filterByType||"all"]||pi.all:null,t=this.findFirstFolder(this.state.selected);return n.createElement($a,{key:"toolbar",variant:"dense"},this.props.allowNonRestricted&&this.props.restrictToFolder?n.createElement(P,{edge:"start",title:this.state.restrictToFolder?this.props.t("ra_Show all folders"):this.props.t("ra_Restrict to folder"),style:{...v.menuButton,...this.state.restrictToFolder?v.menuButtonRestrictActive:void 0},"aria-label":"restricted to folder",onClick:()=>this.setState({restrictToFolder:(this.state.restrictToFolder?"":this.props.restrictToFolder)||"",loadAllFolders:!0}),size:"small"},n.createElement(ml,{fontSize:"small"})):null,this.props.showExpertButton?n.createElement(P,{edge:"start",title:this.props.t("ra_Toggle expert mode"),style:{...v.menuButton,...this.state.expertMode?v.menuButtonExpertActive:void 0},"aria-label":"expert mode",onClick:()=>this.setState({expertMode:!this.state.expertMode}),size:"small"},n.createElement(lo,null)):null,this.props.showViewTypeButton?n.createElement(P,{edge:"start",title:this.props.t("ra_Toggle view mode"),style:v.menuButton,"aria-label":"view mode",onClick:()=>{const s=this.state.viewType===ie?Sr:ie;this.localStorage.setItem("files.viewType",s);let r=this.state.selected;fr(r)&&(r=gs(r)),this.setState({viewType:s,currentDir:r},()=>{this.state.viewType===ie&&this.scrollToSelected()})},size:"small"},this.state.viewType!==ie?n.createElement(pl,{fontSize:"small"}):n.createElement(Ol,{fontSize:"small"})):null,n.createElement(P,{edge:"start",title:this.props.t("ra_Hide empty folders"),style:v.menuButton,color:this.state.filterEmpty?"secondary":"inherit","aria-label":"filter empty",onClick:()=>{this.localStorage.setItem("file.empty",this.state.filterEmpty?"false":"true"),this.setState({filterEmpty:!this.state.filterEmpty})},size:"small"},n.createElement(El,{fontSize:"small"})),n.createElement(P,{edge:"start",title:this.props.t("ra_Reload files"),style:v.menuButton,color:"inherit","aria-label":"reload files",onClick:()=>this.setState({folders:{}},()=>this.loadFolders()),size:"small"},n.createElement(Ba,{fontSize:"small"})),this.props.allowCreateFolder?n.createElement(P,{edge:"start",disabled:!this.state.selected||!t||!!this.limitToPath&&!this.state.selected.startsWith(`${this.limitToPath}/`)&&this.limitToPath!==this.state.selected,title:this.props.t("ra_Create folder"),style:v.menuButton,color:"inherit","aria-label":"add folder",onClick:()=>this.setState({addFolder:!0}),size:"small"},n.createElement(Ga,{fontSize:"small"})):null,this.props.allowUpload?n.createElement(P,{edge:"start",disabled:!this.state.selected||!t||!!this.limitToPath&&!this.state.selected.startsWith(`${this.limitToPath}/`)&&this.limitToPath!==this.state.selected,title:this.props.t("ra_Upload file"),style:v.menuButton,color:"inherit","aria-label":"upload file",onClick:()=>this.setState({uploadFile:!0}),size:"small"},n.createElement(Ri,{fontSize:"small"})):null,this.props.showTypeSelector&&e?n.createElement(ae,{title:this.props.t("ra_Filter files"),slotProps:{popper:{sx:v.tooltip}}},n.createElement(P,{size:"small",onClick:s=>this.setState({showTypesMenu:s.target})},n.createElement(e,{fontSize:"small"}))):null,this.state.showTypesMenu?n.createElement(ss,{open:!0,anchorEl:this.state.showTypesMenu,onClose:()=>this.setState({showTypesMenu:null})},Object.keys(pi).map(s=>{const r=pi[s];return n.createElement(te,{key:s,selected:this.state.filterByType===s,onClick:()=>{s==="all"?(this.localStorage.removeItem("files.filterByType"),this.setState({filterByType:"",showTypesMenu:null})):(this.localStorage.setItem("files.filterByType",s),this.setState({filterByType:s,showTypesMenu:null}))}},n.createElement(Yt,null,n.createElement(r,{fontSize:"small"})),n.createElement(nt,null,this.props.t(`ra_fileType_${s}`)))})):null,n.createElement(ae,{title:this.props.t("ra_Background image"),slotProps:{popper:{sx:v.tooltip}}},n.createElement(P,{color:"inherit",edge:"start",style:v.menuButton,onClick:this.setStateBackgroundImage,size:"small"},n.createElement($o,{fontSize:"small"}))),this.state.viewType!==ie&&this.props.allowDelete?n.createElement(ae,{title:this.props.t("ra_Delete"),slotProps:{popper:{sx:v.tooltip}}},n.createElement("span",null,n.createElement(P,{"aria-label":"delete",disabled:!this.state.selected||this.state.selected==="vis.0/"||this.state.selected==="vis-2.0/"||this.state.selected===Et,color:"inherit",edge:"start",style:v.menuButton,onClick:s=>{s.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(this.state.selected):this.setState({deleteItem:this.state.selected})},size:"small"},n.createElement(ut,{fontSize:"small"})))):null)}findItem(e,t){if(t=t||this.state.folders,!t)return null;const s=e.split("/");s.pop();const r=s.join("/")||"/";return t[r]&&t[r].find(o=>o.id===e)||null}renderInputDialog(){if(this.state.addFolder){const e=this.findFirstFolder(this.state.selected);return e?n.createElement(tle,{key:"inputDialog",applyText:this.props.t("ra_Create"),cancelText:this.props.t("ra_Cancel"),titleText:this.props.t("ra_Create new folder in %s",this.state.selected),promptText:this.props.t("ra_If no file will be created in the folder, it will disappear after the browser closed"),labelText:this.props.t("ra_Folder name"),verify:t=>this.state.folders[e].find(s=>s.name===t)?"":this.props.t("ra_Duplicate name"),onClose:t=>{if(t){const s={};Object.keys(this.state.folders).forEach(a=>s[a]=this.state.folders[a]);const r=this.findItem(e),o=`${e}/${t}`;s[e].push({id:o,level:((r==null?void 0:r.level)||0)+1,name:t,folder:!0,temp:!0}),s[e].sort(Pn),s[o]=[];const M=[...this.state.expanded];M.includes(e)||(M.push(e),M.sort()),this.localStorage.setItem("files.expanded",JSON.stringify(M)),this.setState({addFolder:!1,folders:s,expanded:M},()=>this.select(o))}else this.setState({addFolder:!1})},replace:t=>t.replace(/[^-_\w]/,"_")}):(window.alert(this.props.t("ra_Invalid parent folder!")),null)}return null}componentDidUpdate(){this.setOpacityTimer&&clearTimeout(this.setOpacityTimer),this.setOpacityTimer=setTimeout(()=>{this.setOpacityTimer=null;const e=window.document.getElementsByClassName("browserItem");for(let t=0;tthis.setState({uploadFile:!1})},n.createElement(ge,null)),n.createElement(Va,{key:"dropzone",onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:e=>{let t=e.length;e.forEach(s=>{const r=new FileReader;r.onabort=()=>console.log("file reading was aborted"),r.onerror=()=>console.log("file reading has failed"),r.onload=()=>{const o=this.findFirstFolder(this.state.selected);if(!o)window.alert(this.props.t("ra_Invalid parent folder!"));else{const M=`${o}/${s.name}`;this.uploadFile(M,r.result).then(()=>{--t||this.setState({uploadFile:!1},()=>{if(this.supportSubscribes){const a=[...this.state.expanded];a.includes(o)||(a.push(o),a.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(a))),this.setState({expanded:a},()=>this.select(M))}else setTimeout(()=>this.browseFolder(o,null,!1,!0).then(a=>{const u=[...this.state.expanded];u.includes(o)||(u.push(o),u.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(u))),this.setState({folders:a,expanded:u},()=>this.select(M))}),500)})})}},r.readAsArrayBuffer(s)})}},({getRootProps:e,getInputProps:t})=>n.createElement("div",{style:{...v.uploadDiv,...this.state.uploadFile==="dragging"?v.uploadDivDragging:void 0},...e()},n.createElement("input",{...t()}),n.createElement(W,{component:"div",sx:v.uploadCenterDiv},n.createElement("div",{style:v.uploadCenterTextAndIcon},n.createElement(Ri,{style:v.uploadCenterIcon}),n.createElement("div",{style:v.uploadCenterText},this.state.uploadFile==="dragging"?this.props.t("ra_Drop file here"):this.props.t("ra_Place your files here or click here to open the browse dialog"))))))]:null}deleteRecursive(e){const t=this.findItem(e);if(t!=null&&t.folder)return(this.state.folders[e]?Promise.all(this.state.folders[e].map(o=>this.deleteRecursive(o.id))):Promise.resolve()).then(()=>{if(t.level>=1){const o=e.split("/"),M=o.shift();this.props.socket.deleteFolder(M||"",o.join("/")).then(()=>{const a=JSON.parse(JSON.stringify(this.state.folders));delete a[t.id];const u=gs(t.id),l=a[u];if(l){const N=l.findIndex(c=>c.id===t.id);N!==-1&&l.splice(N,1),this.select(u,null,()=>this.setState({folders:a}))}})}});const s=e.split("/"),r=s.shift();return s.length?this.props.socket.deleteFile(r||"",s.join("/")).catch(o=>window.alert(`Cannot delete file: ${o}`)):Promise.resolve()}deleteItem(e){e=e||this.state.deleteItem,this.state.suppressDeleteConfirm&&(this.suppressDeleteConfirm=Date.now()+6e4*5),this.setState({deleteItem:"",suppressDeleteConfirm:!1},()=>this.deleteRecursive(e).then(()=>{const t={},s=this.state.expanded.indexOf(e);if(s!==-1){const r=[...this.state.expanded];r.splice(s,1),this.localStorage.setItem("files.expanded",JSON.stringify(r)),t.expanded=r}if(this.state.selected===e){const r=this.state.selected.split("/");r.pop(),t.selected=r.join("/")}if(this.supportSubscribes)this.setState(t);else{const r=this.findFirstFolder(e),o={};Object.keys(this.state.folders).forEach(M=>{M!==r&&!M.startsWith(`${r}/`)&&(o[M]=this.state.folders[M])}),t.folders=o,this.setState(t,()=>setTimeout(()=>{this.browseFolders([...this.state.expanded],o).then(M=>this.setState({folders:M})).catch(M=>console.error(M))},200))}}))}renderDeleteDialog(){return this.state.deleteItem?n.createElement(de,{key:"deleteDialog",open:!0,onClose:()=>this.setState({deleteItem:""}),"aria-labelledby":"ar_dialog_file_delete_title"},n.createElement(Ie,{id:"ar_dialog_file_delete_title"},this.props.t("ra_Confirm deletion of %s",this.state.deleteItem.split("/").pop())),n.createElement(Ae,null,n.createElement(Jt,null,this.props.t("ra_Are you sure?")),n.createElement(H,{control:n.createElement(ne,{checked:this.state.suppressDeleteConfirm,onChange:()=>{this.setState({suppressDeleteConfirm:!this.state.suppressDeleteConfirm})}}),label:this.props.t("ra_no confirm for 5 mins")})),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.deleteItem(""),color:"primary",autoFocus:!0},this.props.t("ra_Delete")),n.createElement(X,{variant:"contained",onClick:()=>this.setState({deleteItem:""}),color:"grey"},this.props.t("ra_Cancel")))):null}renderViewDialog(){const e=this.props.FileViewer||Ale;return this.state.viewer?n.createElement(e,{supportSubscribes:this.supportSubscribes||void 0,key:this.state.viewer,href:this.state.viewer,formatEditFile:this.state.formatEditFile||void 0,themeType:this.props.themeType||"light",setStateBackgroundImage:this.setStateBackgroundImage,getStyleBackgroundImage:this.getStyleBackgroundImage,t:this.props.t,socket:this.props.socket,onClose:()=>this.setState({viewer:"",formatEditFile:""})}):null}renderError(){return this.state.errorText?n.createElement(Hc,{key:"errorDialog",text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}updateItemsAcl(e){this.cacheFolders||=JSON.parse(JSON.stringify(this.state.folders));let t;e.forEach(s=>{const r=this.findItem(s.id,this.cacheFolders);r&&JSON.stringify(r.acl)!==JSON.stringify(s.acl)&&(r.acl=s.acl,t=!0)}),t&&(this.cacheFoldersTimeout&&clearTimeout(this.cacheFoldersTimeout),this.cacheFoldersTimeout=setTimeout(()=>{this.cacheFoldersTimeout=null;const s=this.cacheFolders||{};this.cacheFolders=null,this.setState({folders:s})},200))}changeToPath(){setTimeout(()=>{if(this.state.path!==this.state.selected&&(!this.lastSelect||Date.now()-this.lastSelect>100)){let e=this.state.path;fr(this.state.path)&&(e=gs(this.state.path)),new Promise(t=>{this.state.folders[e]?t(!0):this.browseFolder(e).then(s=>this.setState({folders:s},()=>t(!0))).catch(s=>this.setState({errorText:s===$n?this.props.t('ra_Cannot find "%s"',e):this.props.t('ra_Cannot read "%s"',e)}))}).then(t=>t&&this.setState({selected:this.state.path,currentDir:e,pathFocus:!1})).catch(t=>console.error(t))}else(!this.lastSelect||Date.now()-this.lastSelect>100)&&this.setState({pathFocus:!1})},100)}renderBreadcrumb(){const e=this.state.currentDir.startsWith("/")?this.state.currentDir.split("/"):`/${this.state.currentDir}`.split("/"),t=[];return n.createElement(nl,{style:{paddingLeft:8,color:"#FFF"}},e.map((s,r)=>{s&&t.push(s);const o=t.join("/");return rthis.changeFolder(M,o||"/")},s||this.props.t("ra_Root")):n.createElement("div",{style:v.pathDivBreadcrumbSelected,key:`${this.state.selected}_${r}`,onClick:()=>this.setState({pathFocus:!0})},s)}))}renderPath(){return n.createElement(W,{component:"div",key:"path",sx:v.pathDiv},this.state.pathFocus?n.createElement(vt,{value:this.state.path,onKeyDown:e=>{e.key==="Enter"?this.changeToPath():e.key==="Escape"&&this.setState({pathFocus:!1})},endAdornment:n.createElement(P,{size:"small",onClick:()=>this.changeToPath()},n.createElement(_l,null)),onBlur:()=>this.changeToPath(),onChange:e=>this.setState({path:e.target.value}),style:v.pathDivInput}):this.renderBreadcrumb())}render(){return this.props.ready?(this.state.loadAllFolders&&!this.foldersLoading&&(this.foldersLoading=!0,setTimeout(()=>{this.setState({loadAllFolders:!1,folders:{}},()=>{this.foldersLoading=!1,this.loadFolders().catch(e=>console.error(`Cannot load folders: ${e}`))})},300)),n.createElement("div",{style:{...v.root,...this.props.style},className:this.props.className},this.props.showToolbar?this.renderToolbar():null,this.state.viewType===Sr?this.renderPath():null,n.createElement("div",{style:{...v.filesDiv,...v[`filesDiv${this.state.viewType}`]},onClick:e=>{this.state.viewType!==ie&&(this.state.selected!==(this.state.currentDir||"/")?this.changeFolder(e,this.state.currentDir||"/"):e.stopPropagation())},id:"dev",ref:this.refFileDiv},this.state.viewType===ie?this.renderItems("/"):this.renderItems(this.state.currentDir||"/"),this.state.viewType!==ie?n.createElement("div",{style:v.filesDivHint},this.props.t("ra_select_folder_hint")):null),this.props.allowUpload?this.renderInputDialog():null,this.props.allowUpload?this.renderUpload():null,this.props.allowDelete?this.renderDeleteDialog():null,this.props.allowView?this.renderViewDialog():null,this.state.modalEditOfAccess&&this.props.modalEditOfAccessControl?this.props.modalEditOfAccessControl(this):null,this.renderError())):n.createElement(al,null)}}const mle=Nr()(iM),ple="PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSIwIC0xMjAgNDgwIDQ4MCIgd2lkdGg9IjQ4MHB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00NzIgMGgtNDY0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djE5MmMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDMydjI0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoNDBjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMjRoMjg4djI0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoNDBjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMjRoMzJjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMTkyYzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS0zOTIgMjI0aC0yNHYtMTZoMjR6bTM0NCAwaC0yNHYtMTZoMjR6bTQwLTMyaC00NDh2LTE3Nmg0NDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2IDE3NmMzNS4zNDc2NTYgMCA2NC0yOC42NTIzNDQgNjQtNjRzLTI4LjY1MjM0NC02NC02NC02NC02NCAyOC42NTIzNDQtNjQgNjRjLjAzOTA2MiAzNS4zMjgxMjUgMjguNjcxODc1IDYzLjk2MDkzOCA2NCA2NHptLTgtMTExLjI4MTI1djE1LjI4MTI1aDE2di0xNS4yODEyNWMyNC42MDU0NjkgNC4xNjAxNTYgNDEuOTE3OTY5IDI2LjQ3NjU2MiAzOS44MzIwMzEgNTEuMzQzNzUtMi4wODU5MzcgMjQuODY3MTg4LTIyLjg3ODkwNiA0My45ODQzNzUtNDcuODMyMDMxIDQzLjk4NDM3NXMtNDUuNzQ2MDk0LTE5LjExNzE4Ny00Ny44MzIwMzEtNDMuOTg0Mzc1Yy0yLjA4NTkzOC0yNC44NjcxODggMTUuMjI2NTYyLTQ3LjE4MzU5NCAzOS44MzIwMzEtNTEuMzQzNzV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYwIDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjAgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTEyOCAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im05NiAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTY0IDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im02NCA2NGgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjggMTc2YzE2LjA5Mzc1LjAxOTUzMSAyOS42ODc1LTExLjkzNzUgMzEuNzE4NzUtMjcuOTA2MjUgMi4wMzUxNTYtMTUuOTY0ODQ0LTguMTMyODEyLTMwLjk0NTMxMi0yMy43MTg3NS0zNC45NTcwMzF2LTE3LjEzNjcxOWgtMTZ2MTcuMTM2NzE5Yy0xNS41ODU5MzggNC4wMTE3MTktMjUuNzUzOTA2IDE4Ljk5MjE4Ny0yMy43MTg3NSAzNC45NTcwMzEgMi4wMzEyNSAxNS45Njg3NSAxNS42MjUgMjcuOTI1NzgxIDMxLjcxODc1IDI3LjkwNjI1em0wLTQ4YzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZzLTcuMTY0MDYyIDE2LTE2IDE2LTE2LTcuMTY0MDYyLTE2LTE2IDcuMTY0MDYyLTE2IDE2LTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0NCAxNzZjMTYuMDkzNzUuMDE5NTMxIDI5LjY4NzUtMTEuOTM3NSAzMS43MTg3NS0yNy45MDYyNSAyLjAzNTE1Ni0xNS45NjQ4NDQtOC4xMzI4MTItMzAuOTQ1MzEyLTIzLjcxODc1LTM0Ljk1NzAzMXYtMTcuMTM2NzE5aC0xNnYxNy4xMzY3MTljLTE1LjU4NTkzOCA0LjAxMTcxOS0yNS43NTM5MDYgMTguOTkyMTg3LTIzLjcxODc1IDM0Ljk1NzAzMSAyLjAzMTI1IDE1Ljk2ODc1IDE1LjYyNSAyNy45MjU3ODEgMzEuNzE4NzUgMjcuOTA2MjV6bTAtNDhjOC44MzU5MzggMCAxNiA3LjE2NDA2MiAxNiAxNnMtNy4xNjQwNjIgMTYtMTYgMTYtMTYtNy4xNjQwNjItMTYtMTYgNy4xNjQwNjItMTYgMTYtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNjQgMTc2YzE2LjA5Mzc1LjAxOTUzMSAyOS42ODc1LTExLjkzNzUgMzEuNzE4NzUtMjcuOTA2MjUgMi4wMzUxNTYtMTUuOTY0ODQ0LTguMTMyODEyLTMwLjk0NTMxMi0yMy43MTg3NS0zNC45NTcwMzF2LTE3LjEzNjcxOWgtMTZ2MTcuMTM2NzE5Yy0xNS41ODU5MzggNC4wMTE3MTktMjUuNzUzOTA2IDE4Ljk5MjE4Ny0yMy43MTg3NSAzNC45NTcwMzEgMi4wMzEyNSAxNS45Njg3NSAxNS42MjUgMjcuOTI1NzgxIDMxLjcxODc1IDI3LjkwNjI1em0wLTQ4YzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZzLTcuMTY0MDYyIDE2LTE2IDE2LTE2LTcuMTY0MDYyLTE2LTE2IDcuMTY0MDYyLTE2IDE2LTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwOCAxMTJoMzJjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMzJjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2NjRjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOHptOC02NGgxNnYxNmgtMTZ6bTAgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQzMiAxMzZjMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHMtOC0zLjU4MjAzMS04LTggMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyIDE2OGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",Ole="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNTA3LjU0NiAxMDUuMTI1YzAtMS4wNDQtLjIwNS0yLjA5MS0uNjQ3LTMuMDcybC00My45My05Ny42M2MtMS4yMS0yLjY5Mi0zLjg4OC00LjQyMy02LjgzOS00LjQyM2gtMTgyLjYzYy00LjE0MyAwLTcuNSAzLjM1Ny03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDIzLjgxMnY4Mi42M2gtODIuNjI1di04Mi42M2gyMy44MTNjNC4xNDMgMCA3LjUtMy4zNTcgNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTE4Mi42M2MtMi45NTEgMC01LjYyOSAxLjczMS02Ljg0IDQuNDIzbC00My45MyA5Ny42M2MtLjQ0MS45ODEtLjY0NiAyLjAyOC0uNjQ3IDMuMDcyaC0uMDE1djEyLjIwM2MwIDI5LjUxNCAyMi44MjcgNTMuNzggNTEuNzUxIDU2LjExMmwzMS44NjUgNTguNDE5aC00LjAwN2MtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgxNi42MzNjLjAwNSAwIC4wMS4wMDEuMDE1LjAwMXMuMDExLS4wMDEuMDE2LS4wMDFoMTYuNjE4YzQuMTQzIDAgNy41LTMuMzU3IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xMi4xODlsLTMyLjQ1Ni01OS41MDNjMTUuNzUtMy40MTMgMjkuMDU3LTEzLjQzMyAzNi44NzktMjcuMDAzIDkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzcuODIyIDEzLjU3MSAyMS4xMjkgMjMuNTkxIDM2Ljg3OSAyNy4wMDNsLTMyLjQ1NiA1OS41MDNoLTEyLjE4OGMtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgxNi42MThjLjAwNSAwIC4wMTEuMDAxLjAxNi4wMDFzLjAxLS4wMDEuMDE1LS4wMDFoMTYuNjMzYzQuMTQzIDAgNy41LTMuMzU3IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC00LjAwN2wzMS44NjUtNTguNDE5YzI4LjkyNC0yLjMzMiA1MS43NTEtMjYuNTk4IDUxLjc1MS01Ni4xMTJ2LTEyLjIwM3ptLTE5LjA4NS03LjQ5NWgtNzguNTIzdi04Mi42M2g0MS4zNDN6bS05My41MjMtODIuNjN2ODIuNjNoLTgyLjYyNXYtODIuNjN6bS0xOTUuMjUgODIuNjNoLTgyLjYyNXYtODIuNjNoODIuNjI1em0tMTM4Ljk2OC04Mi42M2g0MS4zNDN2ODIuNjNoLTc4LjUyNHptLjAzNCAxNDMuNjQxYy0uMDExIDAtLjAyMS0uMDAxLS4wMzItLjAwMS0yMi43NjctLjAxNS00MS4yODUtMTguNTQyLTQxLjI4NS00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMwIDIyLjc3OC0xOC41MzEgNDEuMzEtNDEuMzA4IDQxLjMxM3ptOTcuNjIxIDBjLTIyLjc3OSAwLTQxLjMxMi0xOC41MzMtNDEuMzEyLTQxLjMxMnYtNC42OThoODIuNjI1djQuNjk4YzAgMjIuNzc4LTE4LjUzNCA0MS4zMTItNDEuMzEzIDQxLjMxMnptOTcuNjI1IDBjLTIyLjc3OSAwLTQxLjMxMi0xOC41MzMtNDEuMzEyLTQxLjMxMnYtNC42OThoODIuNjI1djQuNjk4Yy0uMDAxIDIyLjc3OC0xOC41MzQgNDEuMzEyLTQxLjMxMyA0MS4zMTJ6bTk3LjYyNSAwYy0yMi43NzkgMC00MS4zMTItMTguNTMzLTQxLjMxMi00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMwIDIyLjc3OC0xOC41MzQgNDEuMzEyLTQxLjMxMyA0MS4zMTJ6bTk3LjY0OC0uMDAxYy0uMDA1IDAtLjAwOSAwLS4wMTQgMC0uMDAzIDAtLjAwNiAwLS4wMDkgMC0yMi43NzkgMC00MS4zMTItMTguNTMzLTQxLjMxMi00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMtLjAwMSAyMi43NzItMTguNTIxIDQxLjMtNDEuMjkgNDEuMzEyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Ele="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUwOC41MzYgNTA4LjUzNiIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDk4LjUzNiAzNDQuMzIxaC0xNy4yOThjLjQzNC0xNy42NzItMTAuMjY3LTM0LjIxMi0yOS41NDctMzQuMjEycy0yOS45ODIgMTYuNTQtMjkuNTQ3IDM0LjIxMmgtMTcuMjk4Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwdjI1LjY5N2MwIDI0LjYwMSAxNS43MTIgNDUuNTk2IDM3LjYyNSA1My40OTRsLTExLjYwMSAxMS42MDFjLTExLjA4NiAxMS4wODYtMjUuODI2IDE3LjE5MS00MS41MDMgMTcuMTkxLTMyLjM2NCAwLTU4LjY5My0yNi4zMy01OC42OTMtNTguNjkzdi02Ni42NGMzNi4wODggMS4yNjYgNTcuODQ2LTIyLjM5IDgxLjE0OS00NS42OTQgMjguNTE3LTMuMDI0IDUwLjgwOS0yNy4yMTYgNTAuODA5LTU2LjUyMnYtMjUuNjk4YzAtNS41MjMtNC40NzctMTAtMTAtMTBoLTE3LjI5OGMuNDM0LTE3LjY3MS0xMC4yNjctMzQuMjEyLTI5LjU0Ny0zNC4yMTJzLTI5Ljk4MiAxNi41NC0yOS41NDcgMzQuMjEyaC0xNy4zYy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwdjI1LjY5OGMwIDI0LjYwMSAxNS43MTEgNDUuNTk2IDM3LjYyNSA1My40OTRsLTExLjYwMSAxMS42MDFjLTExLjA4NiAxMS4wODYtMjUuODI2IDE3LjE5MS00MS41MDMgMTcuMTkxLTMyLjM2NCAwLTU4LjY5My0yNi4zMy01OC42OTMtNTguNjk0IDAtMjUuODk1IDAtNTEuNzkxIDAtNzcuNjg2aDIyLjcxNmMxMi4yODUgMCAxOC43MjYgMTUuNTMgMTAuMDMzIDI0LjIyMS05LjEyMiA5LjEyMSA1LjAyIDIzLjI2NCAxNC4xNDIgMTQuMTQzIDYuNDU4LTYuNDU3IDEwLjAxNC0xNS4wNDIgMTAuMDE0LTI0LjE3NSAwLTE4Ljg1Mi0xNS4zMzctMzQuMTg4LTM0LjE4OS0zNC4xODhoLTIyLjcxNnYtMTguODI0YzI2LjI1Ny01LjA0MyA0Ni4xNjEtMjguMTc1IDQ2LjE2MS01NS44ODF2LTIwLjg1MWMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwaC0zNi45MTR2LTI0LjIzNmgzNi45MTRjMTIuODQgMCAxMi44NTktMjAgMC0yMGgtOTMuODI4Yy0xMi44NCAwLTEyLjg1OSAyMCAwIDIwaDM2LjkxNHYyNC4yMzVoLTM2LjkxNGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYyMC44NTFjMCAyOC4yMzMgMjAuNjY5IDUxLjcxOSA0Ny42NjcgNTYuMTUxdjE4LjU1NWgtMjIuNzE2Yy0xOC44NTIgMC0zNC4xODkgMTUuMzM3LTM0LjE4OSAzNC4xODggMCA5LjEzMiAzLjU1NiAxNy43MTcgMTAuMDE0IDI0LjE3NSA5LjEyMSA5LjEyMSAyMy4yNjMtNS4wMjEgMTQuMTQzLTE0LjE0My04LjY4NS04LjY4NC0yLjI2NC0yNC4yMjEgMTAuMDMzLTI0LjIyMWgyMi43MTZ2NzcuNjg2YzAgMzIuMzY0LTI2LjMzIDU4LjY5NC01OC42OTQgNTguNjk0LTE1LjY3NyAwLTMwLjQxNy02LjEwNS00MS41MDItMTcuMTkxbC0xMS4yMTgtMTEuMjE4YzIyLjUtNy41NzUgMzguNzU2LTI4Ljg1NiAzOC43NTYtNTMuODc3di0yNS42OThjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMTcuMjk4Yy40MzQtMTcuNjcxLTEwLjI2Ny0zNC4yMTItMjkuNTQ3LTM0LjIxMnMtMjkuOTgyIDE2LjU0LTI5LjU0NyAzNC4yMTJoLTE3LjNjLTUuNTIzIDAtMTAgNC40NzctMTAgMTB2MjUuNjk4YzAgMjguNzA3IDIxLjM5NCA1Mi40OTggNDkuMDczIDU2LjNsMjIuOTM3IDIyLjkzN2MxNS4xNjQgMTUuMTYzIDM2LjAxIDIzLjQ4NiA1Ny40MzMgMjMuMDAzdjY2LjYxNGMwIDMyLjM2NC0yNi4zMyA1OC42OTMtNTguNjkzIDU4LjY5My0xNS42NzcgMC0zMC40MTctNi4xMDUtNDEuNTAyLTE3LjE5MWwtMTEuNjAyLTExLjYwMmMyMS45MTQtNy44OTggMzcuNjI1LTI4Ljg5MiAzNy42MjUtNTMuNDk0di0yNS42OTdjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMTcuMjk3Yy40MzQtMTcuNjcyLTEwLjI2Ny0zNC4yMTItMjkuNTQ3LTM0LjIxMnMtMjkuOTgyIDE2LjU0LTI5LjU0NyAzNC4yMTJoLTE3LjI5OWMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYyNS42OTdjMCAyOS4zMDUgMjIuMjkyIDUzLjQ5NyA1MC44MDggNTYuNTIxbDIyLjcxNyAyMi43MTZjMTQuODYzIDE0Ljg2MyAzNC42MjUgMjMuMDQ4IDU1LjY0NSAyMy4wNDggNDMuMzkyIDAgNzguNjkzLTM1LjMwMiA3OC42OTMtNzguNjkzdi02OS42NTdjMTQuNDI2LTQuMTY0IDI3LjE2MS0xMi4zNDIgMzYuOTA1LTIzLjI1N3YyMC41MjJjMCAxMi44NCAyMCAxMi44NTkgMjAgMHYtMjAuNTIyYzkuNTIgMTAuNjYzIDIxLjg4OSAxOC43MjMgMzUuOTA1IDIyLjk3MnY2OS45NDZjMCA0My4zOTIgMzUuMzAyIDc4LjY5MyA3OC42OTMgNzguNjkzIDIxLjAyIDAgNDAuNzgxLTguMTg2IDU1LjY0NS0yMy4wNDhsMjIuNzE2LTIyLjcxNmMyOC41MTYtMy4wMjUgNTAuODA4LTI3LjIxNiA1MC44MDgtNTYuNTIxdi0yNS42OTdjLjAwMS01LjUyNC00LjQ3Ni0xMC4wMDEtOS45OTktMTAuMDAxem0tMTEyLjI5OC0xNDkuOTI3YzAtMTIuMzEzIDE5LjA5NS0xMi4zMTMgMTkuMDk1IDB2NC42NjRoLTE5LjA5NXptNDYuMzkzIDI0LjY2NHYxNS42OThjMCAyMC4zMTYtMTYuNTI5IDM2Ljg0NS0zNi44NDUgMzYuODQ1cy0zNi44NDUtMTYuNTI5LTM2Ljg0NS0zNi44NDV2LTE1LjY5OHptLTMyNi45MTQtMjQuNjY0YzAtMTIuMzEzIDE5LjA5NS0xMi4zMTMgMTkuMDk1IDB2NC42NjRoLTE5LjA5NXptNDYuMzkzIDI0LjY2NHYxNS42OThjMCAyMC4zMTYtMTYuNTI5IDM2Ljg0NS0zNi44NDUgMzYuODQ1cy0zNi44NDUtMTYuNTI5LTM2Ljg0NS0zNi44NDV2LTE1LjY5OHptLTEwNC44MTIgMTIwLjU5OWMwLTEyLjMxMyAxOS4wOTUtMTIuMzEzIDE5LjA5NSAwdjQuNjY1aC0xOS4wOTV6bTQ2LjM5MiAyNC42NjR2MTUuNjk3YzAgMjAuMzE2LTE2LjUyOSAzNi44NDUtMzYuODQ1IDM2Ljg0NXMtMzYuODQ1LTE2LjUyOC0zNi44NDUtMzYuODQ1di0xNS42OTd6bTEyMy40MTEtMjc4LjM2NHYtMTAuODUxaDczLjgyOHYxMC44NTFjMCA0Ny41OTYtNzMuODI4IDQ3LjU5Ni03My44MjggMHptMjI1LjA0MiAyNTMuN2MwLTEyLjMxMyAxOS4wOTUtMTIuMzEzIDE5LjA5NSAwdjQuNjY1aC0xOS4wOTV6bTQ2LjM5MyAyNC42NjR2MTUuNjk3YzAgMjAuMzE2LTE2LjUyOSAzNi44NDUtMzYuODQ1IDM2Ljg0NXMtMzYuODQ1LTE2LjUyOS0zNi44NDUtMzYuODQ1di0xNS42OTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yODEuMjA2IDQ0MS44NDctMTYuNDM4LTkuNDl2LTIxLjY0NWMwLTEyLjg0LTIwLTEyLjg1OS0yMCAwdjIxLjYxOWwtMTYuNDgzIDkuNTE2Yy0zLjA5NCAxLjc4Ni01IDUuMDg3LTUgOC42NnYyNC43OGMwIDMuNTczIDEuOTA2IDYuODc0IDUgOC42NmwyMS40NiAxMi4zOWMzLjA2NyAxLjc3MSA2LjkzMyAxLjc3MSAxMCAwbDIxLjQ2LTEyLjM5YzMuMDk0LTEuNzg2IDUtNS4wODcgNS04LjY2di0yNC43OGMuMDAxLTMuNTczLTEuOTA1LTYuODc0LTQuOTk5LTguNjZ6bS0xNSAyNy42NjctMTEuNDYgNi42MTctMTEuNDYtNi42MTd2LTEzLjIzM2wxMS40Ni02LjYxNyAxMS40NiA2LjYxN3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0NS41MzUgMzc0LjE4M2MxLjYzNSAzLjkyNCA1LjcxNiA2LjQ2NiA5Ljk2OCA2LjEzOCA0LjE2OS0uMzIyIDcuNzc4LTMuMjcyIDguODk3LTcuMzAzIDIuMzY0LTguNTEzLTcuMTkxLTE1Ljc1OS0xNC43NzMtMTEuMjM1LTQuMjE0IDIuNTE0LTUuOTQ1IDcuODgtNC4wOTIgMTIuNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",_le="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im05IDE3YzQuNDExIDAgOC0zLjU4OSA4LTggMC0xLjI1Ni0uMjk5LTIuNDQxLS44MTgtMy41MDEgMS4xMDMtMS41NDggMi44OTgtMi40OTkgNC44MTgtMi40OTkgMi44NCAwIDUuMjc4IDIuMDY0IDUuNzk5IDQuODMxLS4xOS4xMDUtLjM3NS4yMTgtLjU1NC4zNDItMS4yMjQtLjc0Ny0yLjYzNi0xLjE3My00LjA3NC0xLjE3M2gtLjE3MXYyaC4xNzFjLjg5NiAwIDEuNzguMjIxIDIuNTguNjE1LS4wODMuMTA5LS4xNzEuMjExLS4yNDguMzI2bC0uMzM2LjUwNCAxLjY2NCAxLjEwOS4zMzYtLjUwNGMuODU3LTEuMjgzIDIuMjktMi4wNSAzLjgzMy0yLjA1IDEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMmgtN2MtMS4xMDMgMC0yLS44OTctMi0yaC0yYzAgMi4yMDYgMS43OTQgNCA0IDRoMjVjMi4yMDYgMCA0LTEuNzk0IDQtNHMtMS43OTQtNC00LTRjLS40NzMgMC0uOTM1LjA2LTEuMzg3LjE1Ny0xLjE1OS0zLjYyMy00LjU0Mi02LjE1Ny04LjQzLTYuMTU3LTMuNTQ5IDAtNi43NDYgMi4xMDctOC4xNDQgNS4zNjlsLS4yNzcuNjQ2Yy0uMzU2LjAxMy0uNzA2LjA1NS0xLjA1LjEyMy0uODItMy41NDItNC4wMjMtNi4xMzgtNy43MTItNi4xMzgtMi4zMTIgMC00LjQ4OCAxLjAzNC01Ljk3OCAyLjc1MS0xLjQ2Ny0xLjY4Mi0zLjYyLTIuNzUxLTYuMDIyLTIuNzUxLTQuNDExIDAtOCAzLjU4OS04IDhzMy41ODkgOCA4IDh6bTI5LjE4My0xNGMzLjA0NyAwIDUuNjc2IDIuMDE3IDYuNTQxIDQuODc3LS4xNjMuMDkzLS4zMjUuMTg4LS40NzkuMjk1LTEuMjI1LS43NDYtMi42MzYtMS4xNzItNC4wNzQtMS4xNzJoLS4xNzF2MmguMTcxYy44OTUgMCAxLjc4LjIyMSAyLjU4LjYxNS0uMDgzLjEwOS0uMTcxLjIxMS0uMjQ4LjMyNmwtLjMzNi41MDQgMS42NjQgMS4xMDkuMzM2LS41MDRjLjg1Ny0xLjI4MyAyLjI5LTIuMDUgMy44MzMtMi4wNSAxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDJoLTE0LjU1NmMuMzQ0LS41OTEuNTU2LTEuMjY4LjU1Ni0yIDAtMS41NzEtLjkxOC0yLjkxOS0yLjIzOC0zLjU3M2wuMTE2LS4yN2MxLjA4Mi0yLjUyNSAzLjU1Ny00LjE1NyA2LjMwNS00LjE1N3ptLTI5LjE4MyAwYzMuMzA5IDAgNiAyLjY5MSA2IDZzLTIuNjkxIDYtNiA2LTYtMi42OTEtNi02IDIuNjkxLTYgNi02eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMzd2LTQuNWw0LTN2LTIuNWgtMnYxLjVsLTIgMS41di01aC0ydjdsLTItMS41di0xLjVoLTJ2Mi41bDQgM3YyLjVoLTEwdi02LjVsNC0zdi0yLjVoLTJ2MS41bC0yIDEuNXYtNC41ODZsMS43MDctMS43MDctMS40MTQtMS40MTQtMi4yOTMgMi4yOTN2Ny40MTRsLTItMS41di0xLjVoLTJ2Mi41bDQgM3Y0LjVoLTE0di0xLjI3OWwuNDk2LS4xNjVjMy4yOTItMS4wOTggNS41MDQtNC4xNjYgNS41MDQtNy42MzYgMC0yLjE0OS0uODM3LTQuMTcxLTIuMzU3LTUuNjkxbC00LjY0My00LjY0My0zLjgyNSAzLjgyNWMtLjM5LS44MDItLjg5Ni0xLjU0Ni0xLjUzMi0yLjE4M2wtNC42NDMtNC42NDItNC42NDMgNC42NDNjLTEuNTIgMS41Mi0yLjM1NyAzLjU0Mi0yLjM1NyA1LjY5MSAwIDMuNDcgMi4yMTIgNi41MzggNS41MDMgNy42MzVsLjQ5Ny4xNjV2NC4yOGgtMTYuMjgxbC40OSAxLjk1OWMzLjUzOSAxNC4xNTUgMTYuMjAxIDI0LjA0MSAzMC43OTEgMjQuMDQxczI3LjI1Mi05Ljg4NiAzMC43OTEtMjQuMDQxbC40OS0xLjk1OXptLTI3LjM2NCA2LjI1OCAxLjE0NSAxLjcxN2MuMTQzLjIxNC4yMTkuNDY0LjIxOS43MjIgMCAuNzE5LS41ODQgMS4zMDMtMS4zMDMgMS4zMDNoLTE1LjM5NGMtLjcxOSAwLTEuMzAzLS41ODQtMS4zMDMtMS4zMDMgMC0uMjU4LjA3Ni0uNTA4LjIxOS0uNzIzbDEuMTQ2LTEuNzE4Yy40MTUtLjYyNC42MzUtMS4zNTEuNjM1LTIuMTAxIDAtLjc3LS4yNDYtMS41MjUtLjY4MS0yLjE1NWgxNS4zNjJjLS40MzUuNjMxLS42ODEgMS4zODUtLjY4MSAyLjE1NSAwIC43NS4yMiAxLjQ3Ny42MzYgMi4xMDN6bS0xLjYzNi0yMi44NDQgMy4yMjkgMy4yMjljMS4xNDIgMS4xNDIgMS43NzEgMi42NjIgMS43NzEgNC4yNzcgMCAyLjU1Ny0xLjYwNCA0LjgxNy00IDUuNjgxdi0xLjE4NmwyLjcwNy0yLjcwNy0xLjQxNC0xLjQxNC0xLjI5MyAxLjI5MnYtMi4xNzJsMS43MDctMS43MDctMS40MTQtMS40MTQtMi4yOTMgMi4yOTN2Ny4wMTRjLTIuMzk2LS44NjMtNC0zLjEyMi00LTUuNjggMC0xLjYxNS42MjktMy4xMzUgMS43NzEtNC4yNzd6bS0xNSA0LjUwNmMwLTEuNjE1LjYyOS0zLjEzNSAxLjc3MS00LjI3N2wzLjIyOS0zLjIyOSAzLjIyOSAzLjIyOWMuNjY2LjY2NiAxLjE1MyAxLjQ4MSAxLjQ0OSAyLjM3MS0xLjA4NCAxLjQtMS42NzggMy4xMDYtMS42NzggNC45MDYgMCAuNDY0LjA0Ni45MTguMTIyIDEuMzY0LS42MDkuNTgxLTEuMzI5IDEuMDM0LTIuMTIyIDEuMzE5di02LjNsMS44MzItMi43NDgtMS42NjQtMS4xMDktMS4zMjMgMS45ODUtMS4xMzgtMS4xMzgtMS40MTQgMS40MTQgMS43MDcgMS43MDd2Mi4xNzJsLTEuMjkzLTEuMjkzLTEuNDE0IDEuNDE0IDIuNzA3IDIuNzA3djEuMTg2Yy0yLjM5Ni0uODYzLTQtMy4xMjItNC01LjY4em02IDcuODAxLjQ5Ni0uMTY1Yy44MjUtLjI3NSAxLjU4OS0uNjk2IDIuMjgxLTEuMjE2LjkxNiAxLjk0OCAyLjU4NiAzLjUwMiA0LjcyNiA0LjIxNWwuNDk3LjE2NXYxLjI4aC04em0tNy40MTQgNi4yNzkuODkuODljLjMzMy4zMzMuNTI0Ljc5NS41MjQgMS4yNjUgMCAuMzU0LS4xMDQuNjk4LS4zLjk5M2wtMS4xNDUgMS43MTdjLS4zNjMuNTQ0LS41NTUgMS4xNzgtLjU1NSAxLjgzMiAwIDEuODIyIDEuNDgxIDMuMzAzIDMuMzAzIDMuMzAzaDE1LjM5NWMxLjgyMSAwIDMuMzAyLTEuNDgxIDMuMzAyLTMuMzAzIDAtLjY1NC0uMTkyLTEuMjg4LS41NTUtMS44MzJsLTEuMTQ1LTEuNzE2Yy0uMTk2LS4yOTUtLjMtLjYzOS0uMy0uOTk0IDAtLjQ3MS4xOTEtLjkzMy41MjQtMS4yNjZsLjg5LS44OWg2LjgzNmMtLjE2LjM4NS0uMjUuODA2LS4yNSAxLjI0NyAwIDEuNDkyIDEuMDExIDIuNzg4IDIuNDU5IDMuMTQ5bDQuMjIgMS4wNTVjLjc3OC4xOTYgMS4zMjEuODkxIDEuMzIxIDEuNjkzIDAgLjcxNy0uNDMgMS4zNTMtMS4wOTYgMS42MThsLTYuMjc1IDIuNTExYy0xLjU5Ny42MzktMi42MjkgMi4xNjMtMi42MjkgMy44ODIgMCAxLjQ5Ni44MDcgMi44ODggMi4xMDcgMy42M2wyLjcxNSAxLjU1MWMtMy4wMDQgMS4wNDktNi4yMTUgMS42MjEtOS41MzcgMS42NTNsLTUuMDg2LTMuMzkxYy0uMTI0LS4wODItLjE5OS0uMjIxLS4xOTktLjM3MSAwLS4yMTkuMTU3LS40MDQuMzc0LS40NGwzLjQzNS0uNTcyYzEuMjY5LS4yMTMgMi4xOTEtMS4zMDIgMi4xOTEtMi41OSAwLTEuNDQ3LTEuMTc3LTIuNjI0LTIuNjI0LTIuNjI0aC0yMC42MDVjLTIuOTg5LTMuMzY3LTUuMjU2LTcuNDMtNi40ODYtMTJ6bTE0LjUwMyAyMC4yNjIgMi4yMyAxLjQ4N2MtNi4zMjktLjc4NC0xMi4xMDUtMy41NDgtMTYuNjA3LTcuNzQ5aDE4LjY2NGMuMzQ0IDAgLjYyNC4yOC42MjQuNjI0IDAgLjMwNy0uMjE5LjU2NS0uNTIxLjYxNmwtMy40MzQuNTcyYy0xLjE4NS4xOTgtMi4wNDUgMS4yMTItMi4wNDUgMi40MTQgMCAuODE5LjQwNyAxLjU4MSAxLjA4OSAyLjAzNnptMTguMTAzLS44NzUtNC4wOTMtMi4zMzljLS42NzgtLjM4OC0xLjA5OS0xLjExMy0xLjA5OS0xLjg5NCAwLS44OTcuNTM5LTEuNjkyIDEuMzcyLTIuMDI1bDYuMjc1LTIuNTExYzEuNDI5LS41NzEgMi4zNTMtMS45MzUgMi4zNTMtMy40NzUgMC0xLjcyMS0xLjE2Ni0zLjIxNC0yLjgzNS0zLjYzMmwtNC4yMi0xLjA1NWMtLjU1Ny0uMTQtLjk0NS0uNjM3LS45NDUtMS4yMSAwLS42ODcuNTU5LTEuMjQ2IDEuMjQ2LTEuMjQ2aDE4LjQ2OGMtMi4zNzYgOC44MjgtOC41NjUgMTUuODE0LTE2LjUyMiAxOS4zODd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNyAxN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zOSAyMWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MyAxN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyAxOWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAyM2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAxN2gydjJoLTJ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",fle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiID4NCjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQoJPHBhdGggZD0iTTUxMS45NzYsNDE2LjA2M2MtMC4wMDUtMC4wNzUtMC4wMDQtMC4xNDktMC4wMTEtMC4yMjRjLTAuMDI3LTAuMjk3LTAuMDctMC41ODgtMC4xMzEtMC44NzMNCgkJYy0wLjAwNi0wLjAyOC0wLjAxNS0wLjA1Ni0wLjAyMi0wLjA4NGMtMC4wNTktMC4yNjItMC4xMzItMC41MTgtMC4yMTgtMC43NjhjLTAuMDIzLTAuMDY3LTAuMDQ4LTAuMTMyLTAuMDczLTAuMTk4DQoJCWMtMC4wODQtMC4yMjctMC4xNzktMC40NDgtMC4yODQtMC42NjNjLTAuMDE4LTAuMDM4LTAuMDMtMC4wNzctMC4wNDktMC4xMTVsLTQwLjExMi03OS4xMThWNzMuNzINCgkJYzAtOC4wMDYtNi41MTMtMTQuNTE5LTE0LjUxOS0xNC41MTlINTUuNDQxYy04LjAwNiwwLTE0LjUxOSw2LjUxMy0xNC41MTksMTQuNTE5djI2MC4yOThMMC44MTEsNDEzLjEzNw0KCQljLTAuMDE5LDAuMDM4LTAuMDMxLDAuMDc3LTAuMDQ5LDAuMTE1Yy0wLjEwNSwwLjIxNS0wLjE5OSwwLjQzNi0wLjI4NCwwLjY2MmMtMC4wMjUsMC4wNjYtMC4wNSwwLjEzMi0wLjA3MywwLjE5OQ0KCQljLTAuMDg1LDAuMjUxLTAuMTU5LDAuNTA4LTAuMjE4LDAuNzdjLTAuMDA2LDAuMDI3LTAuMDE1LDAuMDU0LTAuMDIxLDAuMDgxYy0wLjA2MSwwLjI4Ni0wLjEwNCwwLjU3Ny0wLjEzMSwwLjg3NA0KCQljLTAuMDA3LDAuMDc0LTAuMDA3LDAuMTQ5LTAuMDExLDAuMjIzQzAuMDE0LDQxNi4yMTcsMCw0MTYuMzcxLDAsNDE2LjUyOXYxOS4wMjZjMCw5LjUwOSw3LjczNSwxNy4yNDQsMTcuMjQ0LDE3LjI0NGg0NzcuNTEyDQoJCWM5LjUwOSwwLDE3LjI0NC03LjczNSwxNy4yNDQtMTcuMjQ0di0xOS4wMjZDNTEyLDQxNi4zNzEsNTExLjk4Niw0MTYuMjE3LDUxMS45NzYsNDE2LjA2M3ogTTU1LjkyMyw3NC4yMDNoNDAwLjE1NHYyNTQuMTA5DQoJCUg1NS45MjNWNzQuMjAzeiBNNTMuMDI5LDM0My4zMTFINDU4Ljk3bDMzLjMxOCw2NS43MTdoLTE2NC43OGwtOC4yNzEtMjkuOTg5Yy0xLjY4NC02LjEwNS03LjI4Mi0xMC4zNjktMTMuNjE1LTEwLjM2OWgtOTkuMjQ2DQoJCWMtNi4zMzMsMC0xMS45MzIsNC4yNjQtMTMuNjE1LDEwLjM2OGwtOC4yNzEsMjkuOTlIMTkuNzExTDUzLjAyOSwzNDMuMzExeiBNMzExLjk0OCw0MDkuMDI5SDIwMC4wNTJsNi45OTMtMjUuMzU4aDk3LjkxDQoJCUwzMTEuOTQ4LDQwOS4wMjl6IE00OTcsNDM1LjU1NGMwLDEuMjM3LTEuMDA3LDIuMjQ0LTIuMjQ0LDIuMjQ0SDE3LjI0NGMtMS4yMzcsMC0yLjI0NC0xLjAwNy0yLjI0NC0yLjI0NHYtMTEuNTI2aDQ4MlY0MzUuNTU0eiINCgkJLz4NCgk8cGF0aCBkPSJNNDMyLjU3NywyMTMuNzU2Yy00LjE0MywwLTcuNSwzLjM1Ny03LjUsNy41djc2LjA1NUg4Ni45MjN2LTc2LjA1NWMwLTQuMTQzLTMuMzU3LTcuNS03LjUtNy41DQoJCQljLTQuMTQzLDAtNy41LDMuMzU3LTcuNSw3LjV2NzkuMjk0YzAsNi40ODUsNS4yNzUsMTEuNzYxLDExLjc2MSwxMS43NjFoMzQ0LjYzM2M2LjQ4NSwwLDExLjc2MS01LjI3NSwxMS43NjEtMTEuNzYxdi03OS4yOTQNCgkJCUM0NDAuMDc3LDIxNy4xMTUsNDM2LjcyLDIxMy43NTYsNDMyLjU3NywyMTMuNzU2eiIvPg0KCTxwYXRoIGQ9Ik00MjguMzE2LDkwLjIwM0g4My42ODRjLTYuNDg1LDAtMTEuNzYxLDUuMjc1LTExLjc2MSwxMS43NjF2NzkuMjk0YzAsNC4xNDMsMy4zNTcsNy41LDcuNSw3LjVjNC4xNDMsMCw3LjUtMy4zNTcsNy41LTcuNQ0KCQkJdi03Ni4wNTVoMzM4LjE1NHY3Ni4wNTVjMCw0LjE0MywzLjM1Nyw3LjUsNy41LDcuNXM3LjUtMy4zNTcsNy41LTcuNXYtNzkuMjk0QzQ0MC4wNzcsOTUuNDc3LDQzNC44MDIsOTAuMjAzLDQyOC4zMTYsOTAuMjAzeiIvPg0KPC9nPg0KPC9zdmc+DQo=",Sle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTY0LjM5OSAyMDUuODcyYzQuMDk5LjY2NCA4LjIwNi0xLjI3MyAxMC4yODQtNC45MWw2MC0xMDVjMS43NjktMy4wOTUgMS43NTYtNi44OTctLjAzMy05Ljk4cy01LjA4NS00Ljk4MS04LjY0OS00Ljk4MWgtMzYuNjgybC0xMy40ODYtNzIuODIxYy0uNzcyLTQuMTY5LTQuMDg5LTcuMzk4LTguMjc3LTguMDU4LTQuMTg1LS42Ni04LjMzNyAxLjM5NC0xMC4zNTMgNS4xMjNsLTYwIDExMWMtMS42NzUgMy4wOTktMS41OTcgNi44NTEuMjA4IDkuODc2IDEuODA0IDMuMDI1IDUuMDY2IDQuODc5IDguNTg5IDQuODc5aDM2LjgwMmwxMy4zOTMgNjYuOTYxYy44MTcgNC4wOSA0LjA4OCA3LjI0MiA4LjIwNCA3LjkxMXptLTEzLjM5OS05NC44NzFoLTI4LjIyOGwzOC41NTQtNzEuMzIzIDkuODQxIDUzLjE0NGMuODc4IDQuNzQgNS4wMTMgOC4xNzkgOS44MzMgOC4xNzloMjcuNzY5bC0zOC4yIDY2Ljg1LTkuNzYzLTQ4LjgxMWMtLjkzNS00LjY3NC01LjAzOS04LjAzOS05LjgwNi04LjAzOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwIDQ1OS4wMDFjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDN2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoMjZjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzgtMTAtMTAtMTBoLTU2di02OGMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHY2OGgtNDB2LTIyM2g0MHY2NWMwIDUuNTIzIDQuNDc4IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwdi03NWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwaC02MGMtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHYyMzNoLTQwdi0xNzNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTB2MTczaC00MHYtMTEzYzAtNS41MjMtNC40NzgtMTAtMTAtMTBoLTYwYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwdjExM2gtNzN2LTQ0OWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHYyNmgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDBoLTIzYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwczQuNDc4IDEwIDEwIDEwaDIzdjQwaC0yM2MtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGgyM3Y0MGgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDBoLTIzYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwczQuNDc4IDEwIDEwIDEwaDIzdjQwaC0yM2MtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGgyM3Y0MGgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDN6bTI1Ni0xNjNoNDB2MTYzaC00MHptLTEyMCA2MGg0MHYxMDNoLTQweiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDM2IDE0Ni4wMDFjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHYtNjBjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMzUuODU3bC0xMDAgMTAwaC01NS44NTdjLTIuNjUyIDAtNS4xOTUgMS4wNTQtNy4wNzEgMi45MjlsLTkwIDkwYy0zLjkwNSAzLjkwNS0zLjkwNSAxMC4yMzcgMCAxNC4xNDMgMy45MDcgMy45MDUgMTAuMjM2IDMuOTA0IDE0LjE0MyAwbDg3LjA3MS04Ny4wNzFoNTUuODU3YzIuNjUyIDAgNS4xOTUtMS4wNTQgNy4wNzEtMi45MjlsMTAyLjkyOS0xMDIuOTN2MzUuODU3YzAgNS41MjQgNC40NzggMTAuMDAxIDEwIDEwLjAwMXoiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iNDM2IiBjeT0iMzQ2LjAwMSIgcj0iMTAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",xle="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cmVjdCB4PSIyMTYiIHk9Ijg4LjQ4OSIgd2lkdGg9IjgwIiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjIxNiIgeT0iNjIuNDg5IiB3aWR0aD0iODAiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwLDUyLjQ5NHY5LjI4NWMtMi4zNDctMC44MzItNC44NzItMS4yODUtNy41LTEuMjg1Yy0xMi40MDYsMC0yMi41LDEwLjA5My0yMi41LDIyLjVjMCwxMi40MDcsMTAuMDk0LDIyLjUsMjIuNSwyMi41DQoJCQljMi42MjgsMCw1LjE1My0wLjQ1Myw3LjUtMS4yODV2MzU1LjI5OGg3LjVjOC42OTksMCwxMy4zNTQtMi44MTksMTcuMDk1LTUuMDg1YzIuODk5LTEuNzU1LDQuODE0LTIuOTE1LDkuMzI1LTIuOTE1DQoJCQljNC41MTEsMCw2LjQyNiwxLjE2LDkuMzI1LDIuOTE1YzMuNzQsMi4yNjYsOC4zOTYsNS4wODUsMTcuMDk1LDUuMDg1YzguNjk4LDAsMTMuMzU0LTIuODE5LDE3LjA5NC01LjA4NQ0KCQkJYzIuODk3LTEuNzU1LDQuODEzLTIuOTE1LDkuMzIyLTIuOTE1YzQuNTA5LDAsNi40MjQsMS4xNiw5LjMyMSwyLjkxNWMzLjc0LDIuMjY2LDguMzk1LDUuMDg1LDE3LjA5Myw1LjA4NQ0KCQkJczEzLjM1NC0yLjgxOSwxNy4wOTQtNS4wODVjMi44OTctMS43NTUsNC44MTMtMi45MTUsOS4zMjEtMi45MTVjNC41MSwwLDYuNDI1LDEuMTYsOS4zMjIsMi45MTUNCgkJCWMzLjc0LDIuMjY2LDguMzk2LDUuMDg1LDE3LjA5Myw1LjA4NWw3LjUtMC4wMTN2LTQwN0gzMHogTTIyLjUsOTAuNDk0Yy00LjEzNiwwLTcuNS0zLjM2NC03LjUtNy41YzAtNC4xMzYsMy4zNjQtNy41LDcuNS03LjUNCgkJCXM3LjUsMy4zNjQsNy41LDcuNUMzMCw4Ny4xMywyNi42MzYsOTAuNDk0LDIyLjUsOTAuNDk0eiBNMTg4LjUsNDQyLjY2NGMtMC41ODUtMC4zMjUtMS4xNzktMC42ODUtMS44MjEtMS4wNzQNCgkJCWMtMy4zMzktMi4wMjItNy40MDctNC40ODYtMTQuNDI5LTQuOTkxVjIyNi41NTVoLTE1djIxMi40MzFjLTEuODI0LDAuODI3LTMuMzU1LDEuNzU1LTQuNzU4LDIuNjA0DQoJCQljLTIuODk3LDEuNzU1LTQuODEzLDIuOTE1LTkuMzIyLDIuOTE1Yy0xLjY0OCwwLTIuOTUtMC4xNTUtNC4wNzktMC40MzhoMy4xNTlWMTQxLjk5NGgtMTV2Mjk2LjIzOA0KCQkJYy0yLjczNC0xLjAwNS02LjA5Ny0xLjcyNi0xMC40OTQtMS43MjZjLTEuNjM4LDAtMy4xMzMsMC4xLTQuNTA2LDAuMjc4di0yMTYuNzloLTE1djIyMi45ODhjLTEuODQ5LDAuOTUxLTMuNzM4LDEuNTI1LTYuOTEsMS41MjUNCgkJCWMtMy44NDMsMC01LjgwMi0wLjg0Mi04LjA5LTIuMTc2VjE0MS45OTRoLTE1djI5NC42NjFjLTEuMDQxLTAuMDk2LTIuMTQ4LTAuMTQ4LTMuMzMtMC4xNDhjLTguNjk5LDAtMTMuMzU0LDIuODE5LTE3LjA5NSw1LjA4NQ0KCQkJYy0wLjY0NCwwLjM5LTEuMjM5LDAuNzUtMS44MjUsMS4wNzVWNjcuNDk0aDIyLjI1djQxaDE1di00MWg0NXY0MWgxNXYtNDFoNDYuMjVWNDQyLjY2NHoiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSIxMzYuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iNjYiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSIxMTEuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSI4Ni45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSI5Ny4yNSIgeT0iMTMwLjk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjY2Ii8+DQogICAgICAgIDxyZWN0IHg9Ijk3LjI1IiB5PSI4MC45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSI5Ny4yNSIgeT0iMTA1Ljk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iMTEzLjk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iMTM4Ljk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjY2Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iODguOTk0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzc1Ljc1IiB5PSIxNTUuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzc1Ljc1IiB5PSI4MC45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSIzNzUuNzUiIHk9IjEwNS45ODkiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSIzNzUuNzUiIHk9IjEzMC45ODkiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cGF0aCBkPSJNNDg5LjUsNjAuNDk0Yy0yLjYyOCwwLTUuMTUzLDAuNDUzLTcuNSwxLjI4NXYtOS4yODVIMzA4LjV2NDA3LjAxM2g3LjVjOC42OTksMCwxMy4zNTQtMi44MTksMTcuMDk1LTUuMDg1DQoJCQljMi44OTktMS43NTUsNC44MTQtMi45MTUsOS4zMjUtMi45MTVjNC41MTEsMCw2LjQyNiwxLjE2LDkuMzI1LDIuOTE1YzMuNzQsMi4yNjYsOC4zOTYsNS4wODUsMTcuMDk1LDUuMDg1DQoJCQljOC42OTgsMCwxMy4zNTQtMi44MTksMTcuMDk0LTUuMDg1YzIuODk3LTEuNzU1LDQuODEzLTIuOTE1LDkuMzIyLTIuOTE1YzQuNTA5LDAsNi40MjQsMS4xNiw5LjMyMSwyLjkxNQ0KCQkJYzMuNzQsMi4yNjYsOC4zOTUsNS4wODUsMTcuMDkzLDUuMDg1czEzLjM1NC0yLjgxOSwxNy4wOTQtNS4wODVjMi44OTctMS43NTUsNC44MTMtMi45MTUsOS4zMjEtMi45MTUNCgkJCWM0LjUxLDAsNi40MjUsMS4xNiw5LjMyMiwyLjkxNWMzLjc0LDIuMjY2LDguMzk2LDUuMDg1LDE3LjA5Myw1LjA4NWw3LjUtMC4wMTNWMTA0LjIwOGMyLjM0NywwLjgzMiw0Ljg3MiwxLjI4NSw3LjUsMS4yODUNCgkJCWMxMi40MDYsMCwyMi41LTEwLjA5MywyMi41LTIyLjVDNTEyLDcwLjU4NSw1MDEuOTA2LDYwLjQ5NCw0ODkuNSw2MC40OTR6IE00NjcsNDQyLjY2NGMtMC41ODUtMC4zMjUtMS4xNzktMC42ODUtMS44MjEtMS4wNzQNCgkJCWMtMy4zMzktMi4wMjItNy40MDctNC40ODYtMTQuNDI5LTQuOTkxVjIyNi41NTVoLTE1djIxMi40MzFjLTEuODI0LDAuODI3LTMuMzU1LDEuNzU1LTQuNzU4LDIuNjA0DQoJCQljLTIuODk3LDEuNzU1LTQuODEzLDIuOTE1LTkuMzIyLDIuOTE1Yy0xLjY0OCwwLTIuOTUtMC4xNTUtNC4wNzktMC40MzhoMy4xNTlWMTQxLjk5NGgtMTV2Mjk2LjIzOA0KCQkJYy0yLjczNC0xLjAwNS02LjA5Ny0xLjcyNi0xMC40OTQtMS43MjZjLTEuNjM4LDAtMy4xMzMsMC4xLTQuNTA2LDAuMjc4di0yNTAuNzloLTE1djI1Ni45ODhjLTEuODQ5LDAuOTUxLTMuNzM4LDEuNTI1LTYuOTEsMS41MjUNCgkJCWMtMy44NDMsMC01LjgwMi0wLjg0Mi04LjA5LTIuMTc2VjE0MS45OTRoLTE1djI5NC42NjFjLTEuMDQxLTAuMDk2LTIuMTQ4LTAuMTQ4LTMuMzMtMC4xNDhjLTguNjk5LDAtMTMuMzU0LDIuODE5LTE3LjA5NSw1LjA4NQ0KCQkJYy0wLjY0NCwwLjM5LTEuMjM5LDAuNzUtMS44MjUsMS4wNzVWNjcuNDk0aDIyLjI1djQxaDE1di00MWg0NXY0MWgxNXYtNDFINDY3VjQ0Mi42NjR6IE00ODkuNSw5MC40OTRjLTQuMTM2LDAtNy41LTMuMzY0LTcuNS03LjUNCgkJCWMwLTQuMTM2LDMuMzY0LTcuNSw3LjUtNy41czcuNSwzLjM2NCw3LjUsNy41QzQ5Nyw4Ny4xMyw0OTMuNjM2LDkwLjQ5NCw0ODkuNSw5MC40OTR6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",kle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00MiAxMmMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMi00YzAgMS4xMDMtLjg5NyAyLTIgMnMtMi0uODk3LTItMmMwLS4xNzguMDMxLS4zNDcuMDc1LS41MTFsMS4yMTggMS4yMTggMS40MTQtMS40MTQtMS4yMTgtMS4yMThjLjE2NC0uMDQ0LjMzMy0uMDc1LjUxMS0uMDc1IDEuMTAzIDAgMiAuODk3IDIgMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyIDRjLTIuMjA2IDAtNCAxLjc5NC00IDRzMS43OTQgNCA0IDQgNC0xLjc5NCA0LTQtMS43OTQtNC00LTR6bTAgNmMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTJjLjE3OCAwIC4zNDcuMDMxLjUxMS4wNzVsLTEuMjE4IDEuMjE4IDEuNDE0IDEuNDE0IDEuMjE4LTEuMjE4Yy4wNDQuMTY0LjA3NS4zMzMuMDc1LjUxMSAwIDEuMTAzLS44OTcgMi0yIDJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAxMmgyYzEuNjU0IDAgMy0xLjM0NiAzLTNzLTEuMzQ2LTMtMy0zaC0yYy0xLjY1NCAwLTMgMS4zNDYtMyAzczEuMzQ2IDMgMyAzem0wLTRoMmMuNTUxIDAgMSAuNDQ5IDEgMXMtLjQ0OSAxLTEgMWgtMmMtLjU1MSAwLTEtLjQ0OS0xLTFzLjQ0OS0xIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzIDZoLTJjLTEuNjU0IDAtMyAxLjM0Ni0zIDNzMS4zNDYgMyAzIDNoMmMxLjY1NCAwIDMtMS4zNDYgMy0zcy0xLjM0Ni0zLTMtM3ptMCA0aC0yYy0uNTUxIDAtMS0uNDQ5LTEtMXMuNDQ5LTEgMS0xaDJjLjU1MSAwIDEgLjQ0OSAxIDFzLS40NDkgMS0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02Mi45OTcgNThjMC0uMTYzLS4wMzctLjMyNi0uMTE3LS40NzRsLTIuODgtNS4zNDl2LTM4LjE3Ny0xMGMwLTEuNjU0LTEuMzQ2LTMtMy0zaC01MGMtMS42NTQgMC0zIDEuMzQ2LTMgM3YxMCAzOC4xNzdsLTIuODggNS4zNDljLS4wOC4xNDgtLjExNy4zMTEtLjExNy40NzRoLS4wMDN2MmMwIDEuNjU0IDEuMzQ2IDMgMyAzaDU2YzEuNjU0IDAgMy0xLjM0NiAzLTN2LTJ6bS02Ljk5Ny0xMy4yNTF2LTI5Ljc0OWgydjMzLjQ2M3ptLTQxLjkzMS0yLjc0OWMuMTg5IDEuNTAyLjc5MiAyLjg3NSAxLjY5NSA0aC0yLjc2NHYtNHptMzYuOTMxIDB2NGgtMi43NjVjLjkwNC0xLjEyNSAxLjUwNy0yLjQ5OCAxLjY5NS00em0tNS42OSA0aC0uMzF2LTIuMzgyYy40MDItLjQ2LjctMS4wMDkuODU4LTEuNjE4aDIuMDUyYy0uMjgyIDEuNjY2LTEuMjQ2IDMuMTAxLTIuNiA0em0tOC4zMS0xLjY5di0yLjMxaDEuMTQyYy40NDcgMS43MjEgMiAzIDMuODU4IDMgLjM0NyAwIC42NzgtLjA1OCAxLS4xNDJ2MS4xNDJoLTQuMzFjLS42Ny0uNDQ1LTEuMjQ1LTEuMDItMS42OS0xLjY5em0zLjI3OC00LjMxYy4zNDctLjU5NS45ODUtMSAxLjcyMi0xczEuMzc1LjQwNSAxLjcyMiAxem0yLjcyMiAydi43MjJjLS4yOTUuMTcyLS42MzQuMjc4LTEgLjI3OC0uNzM3IDAtMS4zNzUtLjQwNS0xLjcyMi0xem0yLjg1OC0yYy0uNDQ3LTEuNzIxLTItMy0zLjg1OC0zcy0zLjQxMSAxLjI3OS0zLjg1OCAzaC0yLjA1MmMuNDc4LTIuODMzIDIuOTQyLTUgNS45MS01czUuNDMxIDIuMTY3IDUuOTEgNXptLTExLjcyNS03LjA4NGMuNTEzLTIuNzkyIDIuOTU5LTQuOTE2IDUuODk3LTQuOTE2IDEuNjEgMCAzLjA2NS42MzEgNC4xNDMgMS42Ni0uOTczLS40MjMtMi4wNDYtLjY2LTMuMTczLS42Ni0yLjkxOCAwLTUuNDY5IDEuNTc2LTYuODY3IDMuOTE2em0uODY3IDQuMDg0YzAtMy4zMDkgMi42OTEtNiA2LTYgMi4zMzUgMCA0LjM1NyAxLjM0MyA1LjM0OCAzLjI5NC0xLjI1My0uODE1LTIuNzQ1LTEuMjk0LTQuMzQ4LTEuMjk0LTMuMDA0IDAtNS42MjQgMS42NjctNi45OTIgNC4xMjItLjAwMS0uMDQxLS4wMDgtLjA4MS0uMDA4LS4xMjJ6bS0uOTMxIDVjLjEyOSAxLjAyNy40NDkgMS45OTYuOTMxIDIuODY0djEuMTM2aC02di0xLjEzNmMuNDgyLS44NjkuODAyLTEuODM3LjkzMS0yLjg2NHptLTEzLjA2OSA0di0xLjE0MmMuMzIyLjA4NC42NTMuMTQyIDEgLjE0MiAxLjg1OCAwIDMuNDExLTEuMjc5IDMuODU4LTNoMS4xNDJ2Mi4zMWMtLjQ0NS42Ny0xLjAyIDEuMjQ1LTEuNjkgMS42OXptMC00aDIuNzIyYy0uMzQ3LjU5NS0uOTg1IDEtMS43MjIgMS0uMzY2IDAtLjcwNS0uMTA2LTEtLjI3OHptLS43MjItMmMuMzQ3LS41OTUuOTg1LTEgMS43MjItMXMxLjM3NS40MDUgMS43MjIgMXptOC43MTQtMi44NzhjLTEuMzY4LTIuNDU1LTMuOTg4LTQuMTIyLTYuOTkyLTQuMTIyLTEuNjAzIDAtMy4wOTUuNDc5LTQuMzQ4IDEuMjk0Ljk5MS0xLjk1MSAzLjAxMy0zLjI5NCA1LjM0OC0zLjI5NCAzLjMwOSAwIDYgMi42OTEgNiA2IDAgLjA0MS0uMDA3LjA4MS0uMDA4LjEyMnptLTUuOTkyLTguMTIyYy0xLjEwNiAwLTIuMTYuMjI2LTMuMTE5LjYzNCAxLjA3Ni0xLjAxNSAyLjUyMi0xLjYzNCA0LjExOS0xLjYzNCAyLjk2MSAwIDUuNDIyIDIuMTU4IDUuOTA3IDQuOTgzLTEuMzg4LTIuMzc4LTMuOTYxLTMuOTgzLTYuOTA3LTMuOTgzem0tMSA2YzIuOTY3IDAgNS40MzEgMi4xNjcgNS45MSA1aC0yLjA1MmMtLjQ0Ny0xLjcyMS0yLTMtMy44NTgtM3MtMy40MTEgMS4yNzktMy44NTggM2gtMi4wNTJjLjQ3OS0yLjgzMyAyLjk0My01IDUuOTEtNXptLTMuODU4IDdjLjE1OC42MDkuNDU2IDEuMTU3Ljg1OCAxLjYxOHYyLjM4MmgtLjMxYy0xLjM1NC0uODk5LTIuMzE5LTIuMzM0LTIuNi00em0tNS4xNDIgNmg1LjEzNmMuMjc4LjE1NC41NjcuMjkuODY0LjQxMXYzLjU4OWgtNnptOCAuOTMxYy4zMjguMDQxLjY2MS4wNjkgMSAuMDY5IDEuNDAxIDAgMi43MTgtLjM2NCAzLjg2NC0xaDEuMTM2djRoLTZ6bTgtLjkzMWg2djRoLTZ6bTggMGgxLjEzNmMxLjE0Ny42MzYgMi40NjMgMSAzLjg2NCAxIC4zMzkgMCAuNjcyLS4wMjggMS0uMDY5djMuMDY5aC02em04IC40MTFjLjI5Ny0uMTIxLjU4Ni0uMjU3Ljg2NC0uNDExaDUuMTM2djRoLTZ6bTcuOTY4LTcuNTcyLjAxOS0uMDAzLTIuNzc0LTE2LjY0M2MtLjIxMi0xLjI3MS0xLjMwMS0yLjE5My0yLjU4OS0yLjE5My0xLjQ0NyAwLTIuNjI0IDEuMTc3LTIuNjI0IDIuNjI0djEuMzc2aDJ2LTEuMzc2YzAtLjM0NC4yOC0uNjI0LjYyNC0uNjI0LjMwNyAwIC41NjUuMjE5LjYxNi41MjFsMi41OCAxNS40NzloLS44ODljLS4xMjktMS4wMy0uNDUxLTItLjkzNC0yLjg3IDAtLjA0NC4wMDMtLjA4Ni4wMDMtLjEzIDAtMS40Mi0uMzc2LTIuNzUxLTEuMDI3LTMuOTA4LS40NTctNC4wNTQtMy44NDEtNy4wOTItNy45NDMtNy4wOTItNC40MTEgMC04IDMuNTg5LTggOCAwIDEuMzczLjM2NCAyLjcxMyAxLjAzMSAzLjkwNC4wODIuNzIxLjI2MSAxLjQyNS41MzIgMi4wOTZoLTMuMTg3Yy4yNjMtLjY1LjQ0Mi0xLjMzLjUyNy0yLjAyOC42OTItMS4yMDggMS4wNjctMi41NzQgMS4wNjctMy45NzIgMC00LjQxMS0zLjU4OS04LTgtOC00LjA4IDAtNy40NDggMy4wMDYtNy45MzQgNy4wMjctLjY3NCAxLjE3Mi0xLjA2NiAyLjUyNi0xLjA2NiAzLjk3MyAwIC4wNDQuMDAzLjA4Ni4wMDQuMTMtLjQ4NC44Ny0uODA1IDEuODQtLjkzNSAyLjg3aC0uODg5bDIuNTgtMTUuNDc5Yy4wNTEtLjMwMi4zMDktLjUyMS42MTYtLjUyMS4zNDQgMCAuNjI0LjI4LjYyNC42MjR2MS4zNzZoMnYtMS4zNzZjMC0xLjQ0Ny0xLjE3Ny0yLjYyNC0yLjYyNC0yLjYyNC0xLjI4OCAwLTIuMzc3LjkyMi0yLjU4OCAyLjE5MmwtMi43NzQgMTYuNjQ0LjAxOS4wMDNjLS4wMS4wNTQtLjAzMy4xMDQtLjAzMy4xNjF2M2gtMXYtMjNoNDR2MjNoLTF2LTNjMC0uMDU3LS4wMjMtLjEwNy0uMDMyLS4xNjF6bTEuMDMyLTI1LjgzOXY0aC00NHYtNHptLTIwLTJoLTR2LTRjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptLTI4LTljMC0uNTUxLjQ0OS0xIDEtMWg1MGMuNTUxIDAgMSAuNDQ5IDEgMXY5aC0yMnYtNGMwLTIuMjA2LTEuNzk0LTQtNC00cy00IDEuNzk0LTQgNHY0aC0yMnptMCAxMWgydjI5Ljc0OWwtMiAzLjcxNHptMy41OTcgMzFoMS40MDN2N2MwIC41NTMuNDQ4IDEgMSAxaDQwYy41NTIgMCAxLS40NDcgMS0xdi03aDEuNDAzbDUuOTIzIDExaC01Ni42NTJ6bTUwLjQwMyAxNWgtNTZjLS41NTEgMC0xLS40NDgtMS0xdi0xaDU4djFjMCAuNTUyLS40NDkgMS0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMiAxNmg0djJoLTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCAxNmg0djJoLTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMSA5aDJ2MmgtMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Yle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTExMy4yMDYgMTA2LjI2NWgtMTMuNjIzdi04Ni4yOGExLjc0OSAxLjc0OSAwIDAgMCAtMS41NTQtMS43MzhsLTQ2LTUuMTkyYTEuNzUgMS43NSAwIDAgMCAtMS45NDYgMS43Mzl2My40NDFoLTE5LjkxNmExLjc1IDEuNzUgMCAwIDAgLTEuNzUgMS43NXY4Ni4yOGgtMTMuNjIzYTEuNzUgMS43NSAwIDEgMCAwIDMuNWgzNS4yODl2My40NDFhMS43NSAxLjc1IDAgMCAwIDEuNzUgMS43NSAxLjYxIDEuNjEgMCAwIDAgLjItLjAxMWw0NS45LTUuMThoMTUuMjc2YTEuNzUgMS43NSAwIDAgMCAwLTMuNXptLTgxLjI4OS04NC41M2gxOC4xNjZ2NC41aC0xMS45MTdhMS43NSAxLjc1IDAgMCAwIC0xLjc1IDEuNzV2NzguMjhoLTQuNXptOCA4NC41M3YtNzYuNTNoMTAuMTY2djc2LjUzem0xMy42NjYtODkuNTEzIDQyLjUgNC44djg0LjlsLTQyLjUgNC44eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjEuMTI1IDU4Ljc5MmE1LjIwOCA1LjIwOCAwIDEgMCA1LjIwOCA1LjIwOCA1LjIxNCA1LjIxNCAwIDAgMCAtNS4yMDgtNS4yMDh6bTAgNi45MTZhMS43MDggMS43MDggMCAxIDEgMS43MDgtMS43MDggMS43MSAxLjcxIDAgMCAxIC0xLjcwOCAxLjcwOHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Qle="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDAxLjA2NywwSDExMC45MzNjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y0OTQuOTMzYzAsNC43MTksMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjkwLjEzMw0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1Y4LjUzM0M0MDkuNiwzLjgxNCw0MDUuNzc3LDAsNDAxLjA2NywweiBNMzkyLjUzMyw0OTQuOTMzSDExOS40NjdWMTcuMDY3aDI3My4wNjdWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Ni45MzMsMzQuMTMzSDE0NS4wNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y0NjAuOGMwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzaDIyMS44NjcNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzN2LTQ2MC44QzM3NS40NjcsMzcuOTQ4LDM3MS42NDQsMzQuMTMzLDM2Ni45MzMsMzQuMTMzeiBNMzU4LjQsNDk0LjkzM0gxNTMuNlY1MS4yaDIwNC44VjQ5NC45MzN6DQoJCQkiLz4NCiAgICAgICAgPHBhdGggZD0iTTI1Niw2OC4yNjdjLTQ3LjA1MywwLTg1LjMzMywzOC4yODEtODUuMzMzLDg1LjMzM3Y4LjUzM2MwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzaDE1My42DQoJCQljNC43MSwwLDguNTMzLTMuODE0LDguNTMzLTguNTMzVjE1My42QzM0MS4zMzMsMTA2LjU0NywzMDMuMDUzLDY4LjI2NywyNTYsNjguMjY3eiBNMTg3LjczMywxNTMuNg0KCQkJYzAtMzcuNjQxLDMwLjYyNi02OC4yNjcsNjguMjY3LTY4LjI2N2MzNy42NDEsMCw2OC4yNjcsMzAuNjI2LDY4LjI2Nyw2OC4yNjdIMTg3LjczM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzOC45MzMsMTg3LjczM0gxNzkuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzMNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMTk2LjI2N0MyNDcuNDY3LDE5MS41NDgsMjQzLjY0NCwxODcuNzMzLDIzOC45MzMsMTg3LjczM3ogTTIzMC40LDMwNy4yaC00Mi42NjdWMjA0LjhIMjMwLjQNCgkJCVYzMDcuMnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMi44LDE4Ny43MzNoLTU5LjczM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YxOTYuMjY3QzM0MS4zMzMsMTkxLjU0OCwzMzcuNTEsMTg3LjczMywzMzIuOCwxODcuNzMzeiBNMzI0LjI2NywzMDcuMkgyODEuNlYyMDQuOGg0Mi42NjdWMzA3LjINCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzOC45MzMsMzQxLjMzM0gxNzkuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzMNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMzQ5Ljg2N0MyNDcuNDY3LDM0NS4xNDgsMjQzLjY0NCwzNDEuMzMzLDIzOC45MzMsMzQxLjMzM3ogTTIzMC40LDQ2MC44aC00Mi42NjdWMzU4LjRIMjMwLjQNCgkJCVY0NjAuOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMi44LDM0MS4zMzNoLTU5LjczM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YzNDkuODY3QzM0MS4zMzMsMzQ1LjE0OCwzMzcuNTEsMzQxLjMzMywzMzIuOCwzNDEuMzMzeiBNMzI0LjI2Nyw0NjAuOEgyODEuNlYzNTguNGg0Mi42NjdWNDYwLjgNCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI1Niw2OC4yNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y4NS4zMzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1Y3Ni44DQoJCQlDMjY0LjUzMyw3Mi4wODEsMjYwLjcxLDY4LjI2NywyNTYsNjguMjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzIwLjQzNSw5Ny42OThjLTMuMzI4LTMuMzM2LTguNzMtMy4zMzYtMTIuMDY2LDBMMjQ5Ljk2NywxNTYuMWMtMy4zMzcsMy4zMzctMy4zMzcsOC43MywwLDEyLjA2Ng0KCQkJYzEuNjY0LDEuNjY0LDMuODQ5LDIuNSw2LjAzMywyLjVjMi4xODUsMCw0LjM2OS0wLjgzNiw2LjAzMy0yLjVsNTguNDAyLTU4LjQwMkMzMjMuNzcyLDEwNi40MjgsMzIzLjc3MiwxMDEuMDM1LDMyMC40MzUsOTcuNjk4eiINCiAgICAgICAgLz4NCiAgICAgICAgPHBhdGggZD0iTTI2Mi4wMzMsMTU2LjFMMjAzLjYzMSw5Ny42OWMtMy4zMjgtMy4zMzctOC43My0zLjMzNy0xMi4wNjYsMGMtMy4zMzcsMy4zMzYtMy4zMzcsOC43MywwLDEyLjA2Nmw1OC40MDIsNTguNDExDQoJCQljMS42NjQsMS42NjQsMy44NDksMi41LDYuMDMzLDIuNWMyLjE4NSwwLDQuMzY5LTAuODM2LDYuMDMzLTIuNUMyNjUuMzcsMTY0LjgzLDI2NS4zNywxNTkuNDM3LDI2Mi4wMzMsMTU2LjF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01OS43MzMsNDk0LjkzM2gtNTEuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzQzAsNTA4LjE4NiwzLjgyMyw1MTIsOC41MzMsNTEyaDUxLjINCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNDNjguMjY3LDQ5OC43NDgsNjQuNDQ0LDQ5NC45MzMsNTkuNzMzLDQ5NC45MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDMuNDY3LDQ5NC45MzNoLTEwMi40Yy00LjcxLDAtOC41MzMsMy44MTQtOC41MzMsOC41MzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gxMDIuNA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM0M1MTIsNDk4Ljc0OCw1MDguMTc3LDQ5NC45MzMsNTAzLjQ2Nyw0OTQuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",vle="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMjU2IDE2MGE5NiA5NiAwIDEgMCA5NiA5NiA5Ni4xMDggOTYuMTA4IDAgMCAwIC05Ni05NnptMCAxNzZhODAgODAgMCAxIDEgODAtODAgODAuMDkxIDgwLjA5MSAwIDAgMSAtODAgODB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTI4YTEyOCAxMjggMCAxIDAgMTI4IDEyOCAxMjguMTQ1IDEyOC4xNDUgMCAwIDAgLTEyOC0xMjh6bTAgMjQwYTExMiAxMTIgMCAxIDEgMTEyLTExMiAxMTIuMTI3IDExMi4xMjcgMCAwIDEgLTExMiAxMTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzIgNDg4di00NjRhOCA4IDAgMCAwIC04LThoLTMzNmE4IDggMCAwIDAgLTggOHY0NjRhOCA4IDAgMCAwIDggOGgzMzZhOCA4IDAgMCAwIDgtOHptLTMzNi0zNzZoMzIwdjMwNGgtMzIwem05Ni04MGgxNDR2NDBhOCA4IDAgMCAwIDggOGg3MnYxNmgtMjI0em0yMjQgMzJoLTY0di0zMmg2NHptLTI0MC0zMnY2NGgtODB2LTY0em0tODAgNDQ4di00OGgzMjB2NDh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDggNDBhMjQgMjQgMCAxIDAgMjQgMjQgMjQuMDI3IDI0LjAyNyAwIDAgMCAtMjQtMjR6bTAgMzJhOCA4IDAgMSAxIDgtOCA4LjAwOSA4LjAwOSAwIDAgMSAtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTEyIDU2aDQ4djE2aC00OHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI4OCA0MGgzMnYxNmgtMzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yODggNzJoMzJ2MTZoLTMyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjcyIDIwMGE4IDggMCAwIDAgLTE2IDBjMCA2LjM3My0yLjQxNyA5LjE5MS02LjA3NCAxMy40NTgtNC40MjYgNS4xNTktOS45MjYgMTEuNTgtOS45MjYgMjMuODcyczUuNSAxOC43MTQgOS45MjYgMjMuODczYzMuNjU3IDQuMjY4IDYuMDc0IDcuMDg3IDYuMDc0IDEzLjQ2MnMtMi40MTcgOS4xOTMtNi4wNzQgMTMuNDYxYy00LjQyNiA1LjE1OS05LjkyNiAxMS41ODEtOS45MjYgMjMuODc0YTggOCAwIDAgMCAxNiAwYzAtNi4zNzUgMi40MTctOS4xOTQgNi4wNzQtMTMuNDYyIDQuNDIzLTUuMTU5IDkuOTI2LTExLjU4IDkuOTI2LTIzLjg3M3MtNS41LTE4LjcxNS05LjkyNi0yMy44NzRjLTMuNjU3LTQuMjY4LTYuMDc0LTcuMDkxLTYuMDc0LTEzLjQ2MXMyLjQxNy05LjE5MSA2LjA3NC0xMy40NThjNC40MjYtNS4xNTkgOS45MjYtMTEuNTggOS45MjYtMjMuODcyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjk2IDIzNy4zM2MwLTYuMzczIDIuNDE3LTkuMTkyIDYuMDc1LTEzLjQ2LjgxMi0uOTQ3IDEuNjIzLTEuOSAyLjQwNy0yLjg3OGE4IDggMCAwIDAgLTEyLjUtOS45ODRjLS42NjguODM2LTEuMzYxIDEuNjQxLTIuMDUzIDIuNDQ5LTQuNDI5IDUuMTU5LTkuOTI5IDExLjU4MS05LjkyOSAyMy44NzNzNS41IDE4LjcxNCA5LjkyNiAyMy44NzNjMy42NTcgNC4yNjggNi4wNzQgNy4wODcgNi4wNzQgMTMuNDYycy0yLjQxNyA5LjE5NC02LjA3NSAxMy40NjJjLS44MTMuOTQ5LTEuNjI1IDEuOS0yLjQwOSAyLjg4MWE4IDggMCAwIDAgMTIuNSA5Ljk4NGMuNjY4LS44MzcgMS4zNjItMS42NDQgMi4wNTQtMi40NTIgNC40My01LjE2IDkuOTMtMTEuNTgyIDkuOTMtMjMuODc1cy01LjUtMTguNzE1LTkuOTI2LTIzLjg3NGMtMy42NTctNC4yNjgtNi4wNzQtNy4wOTEtNi4wNzQtMTMuNDYxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjE2IDIzNy4zM2MwLTYuMzczIDIuNDE3LTkuMTkyIDYuMDc1LTEzLjQ2LjgxMi0uOTQ3IDEuNjIzLTEuOSAyLjQwNy0yLjg3OGE4IDggMCAwIDAgLTEyLjUtOS45ODRjLS42NjguODM2LTEuMzYxIDEuNjQxLTIuMDUzIDIuNDQ5LTQuNDI5IDUuMTU5LTkuOTI5IDExLjU4MS05LjkyOSAyMy44NzNzNS41IDE4LjcxNCA5LjkyNiAyMy44NzNjMy42NTcgNC4yNjggNi4wNzQgNy4wODcgNi4wNzQgMTMuNDYycy0yLjQxNyA5LjE5NC02LjA3NSAxMy40NjJjLS44MTMuOTQ5LTEuNjI1IDEuOS0yLjQwOSAyLjg4MWE4IDggMCAwIDAgMTIuNSA5Ljk4NGMuNjY4LS44MzcgMS4zNjItMS42NDQgMi4wNTQtMi40NTIgNC40My01LjE2IDkuOTMtMTEuNTgyIDkuOTMtMjMuODc1cy01LjUtMTguNzE1LTkuOTI2LTIzLjg3NGMtMy42NTctNC4yNjgtNi4wNzQtNy4wOTEtNi4wNzQtMTMuNDYxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Ule="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ3Ni4wNjUgNDc2LjA2NSI+DQo8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KCTxwYXRoIGQ9Ik00MzIuNTU4LDE3Mi4wMkM0MTkuMzAzLDY0LjU4NywzMjEuNDY2LTExLjc2LDIxNC4wMzMsMS40OTVTMzAuMjUzLDExMi41ODcsNDMuNTA4LDIyMC4wMg0KCQljMTEuMDA4LDg5LjIyMiw4MS4zMDMsMTU5LjUxNywxNzAuNTI1LDE3MC41MjV2MzcuNTJoLTU2Yy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjR2MjRoMjA4di0yNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTU2DQoJCXYtMzcuNTJDMzY5LjQ2NiwzNzcuMjksNDQ1LjgxMywyNzkuNDUzLDQzMi41NTgsMTcyLjAyeiBNMzE4LjAzMyw0NDQuMDY1YzQuNDE4LDAsOCwzLjU4Miw4LDh2OGgtMTc2di04YzAtNC40MTgsMy41ODItOCw4LTgNCgkJSDMxOC4wMzN6IE0yMzAuMDMzLDQyOC4wNjV2LTMyaDE2djMySDIzMC4wMzN6IE0yMzguMDMzLDM3Ni4wNjVjLTk5LjQxMSwwLTE4MC04MC41ODktMTgwLTE4MA0KCQljMC4xMTUtOTkuMzY0LDgwLjYzNi0xNzkuODg1LDE4MC0xODBjOTkuNDExLDAsMTgwLDgwLjU4OSwxODAsMTgwUzMzNy40NDQsMzc2LjA2NSwyMzguMDMzLDM3Ni4wNjV6Ii8+DQoJPHBhdGggZD0iTTQwNi4wMzMsMjEyLjA2NXYtMTZjMC00LjQxOC0zLjU4Mi04LTgtOGgtOTMuNTM2YzM5LjgtMjcuODMyLDQ5LjUwMi04Mi42NTgsMjEuNjctMTIyLjQ1OA0KCQljLTE2LjQ2Ny0yMy41NDgtNDMuNC0zNy41NjUtNzIuMTM0LTM3LjU0MmgtMTZjLTQuNDE4LDAtOCwzLjU4Mi04LDh2OTMuNTM2Yy0yNy44MzItMzkuOC04Mi42NTgtNDkuNTAyLTEyMi40NTgtMjEuNjcNCgkJYy0yMy41NDgsMTYuNDY3LTM3LjU2NSw0My40LTM3LjU0Miw3Mi4xMzR2MTZjMCw0LjQxOCwzLjU4Miw4LDgsOGg5My41MzZjLTIzLjQ2NSwxNi40NzgtMzcuNDYzLDQzLjMyOC0zNy41MzYsNzINCgkJYzAuMDU3LDQ4LjU3NywzOS40MjMsODcuOTQzLDg4LDg4aDE2YzQuNDE4LDAsOC0zLjU4Miw4LTh2LTkzLjUzNmMyNy44MzIsMzkuOCw4Mi42NTgsNDkuNTAyLDEyMi40NTgsMjEuNjcNCgkJQzM5Mi4wMzgsMjY3LjczMyw0MDYuMDU2LDI0MC44LDQwNi4wMzMsMjEyLjA2NXogTTI0Ni4wMzMsNDQuMDY1aDhjMzkuNzY0LDAuMDU1LDcxLjk1NSwzMi4zMzYsNzEuOSw3Mi4xDQoJCWMtMC4wNDMsMzEuMTctMjAuMTM4LDU4Ljc3Mi00OS43ODgsNjguMzg4Yy00LjIwMi0xNC4wNTItMTUuNzU4LTI0LjY3Ny0zMC4xMTItMjcuNjg4VjQ0LjA2NXogTTg2LjAzMywxODguMDY1di04DQoJCWMwLjA3My0zOS43NjQsMzIuMzY4LTcxLjk0LDcyLjEzMy03MS44NjdjMzEuMTQ4LDAuMDU3LDU4LjcyNywyMC4xMzgsNjguMzQ3LDQ5Ljc2M2MtMTQuMDQ3LDQuMjAzLTI0LjY2OCwxNS43NTUtMjcuNjgsMzAuMTA0DQoJCUg4Ni4wMzN6IE0yMzAuMDMzLDM0OC4wNjVoLThjLTM5Ljc2NC0wLjA1NS03MS45NTUtMzIuMzM2LTcxLjktNzIuMWMwLjA0My0zMS4xNywyMC4xMzgtNTguNzcyLDQ5Ljc4OC02OC4zODgNCgkJYzQuMjAyLDE0LjA1MiwxNS43NTgsMjQuNjc3LDMwLjExMiwyNy42ODhWMzQ4LjA2NXogTTIzOC4wMzMsMjIwLjA2NWMtMTMuMjU1LDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCwyNC0yNA0KCQlzMjQsMTAuNzQ1LDI0LDI0UzI1MS4yODcsMjIwLjA2NSwyMzguMDMzLDIyMC4wNjV6IE0zMTcuOSwyODMuOTMyYy0zMS4xNDgtMC4wNTctNTguNzI3LTIwLjEzOC02OC4zNDctNDkuNzYzDQoJCWMxNC4wNDctNC4yMDMsMjQuNjY4LTE1Ljc1NSwyNy42OC0zMC4xMDRoMTEyLjh2OEMzODkuOTU5LDI1MS44MywzNTcuNjY0LDI4NC4wMDYsMzE3LjksMjgzLjkzMnoiLz4NCjwvZz4NCjwvc3ZnPg0K",ble="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTkgNTExLjk5OSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS45OTksMTI2LjAwMWgtMC4wMjdjNi4yOTItOC4zNjIsMTAuMDI3LTE4Ljc1MiwxMC4wMjctMzBjMC0yNy41Ny0yMi40My01MC4wMDEtNTAtNTAuMDAxDQoJCXMtNTAuMDAxLDIyLjQzLTUwLjAwMSw1MC4wMDFjMCwxMS4yNDgsMy43MzYsMjEuNjM4LDEwLjAyNywzMGgtMC4wMjdjLTUuNTIyLDAtMTAsNC40NzctMTAsMTB2MzUuNTQ1DQoJCWMtMTEuMzI4LTcuMjMzLTIzLjEyOC0xMy42NTgtMzUuMzM0LTE5LjI0MXYtMTYuMzA0YzAtNS41MjMtNC40NzctMTAtMTAtMTBzLTEwLDQuNDc3LTEwLDEwdjguMDM3DQoJCWMtMy4zNjktMS4yNDctNi43NjQtMi40MzgtMTAuMTg2LTMuNTYyYy04LjI5MS0yLjcyMy0xNi42ODMtNS4wNTItMjUuMTQ2LTcuMDExdi0yMC44MzNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMA0KCQljLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2MTYuOTMyYy0xMS42OC0xLjg0OS0yMy40NzQtMi45NzQtMzUuMzMyLTMuMzgxVjk2LjAwMWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwDQoJCXYzMC4xODNjLTExLjg1OSwwLjQwNy0yMy42NTMsMS41MzItMzUuMzMzLDMuMzgxdi0xNi45MzJjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHYyMC44MzMNCgkJYy04LjQ2MiwxLjk1OS0xNi44NTIsNC4yODctMjUuMTQyLDcuMDA5Yy0zLjQyNCwxLjEyNC02LjgxOSwyLjMxNi0xMC4xOTEsMy41NjN2LTguMDM3YzAtNS41MjMtNC40NzctMTAtMTAtMTANCgkJYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjE2LjMwNGMtMTIuMjA1LDUuNTgzLTI0LjAwNCwxMi4wMDctMzUuMzM0LDE5LjI0di0zNS41NDRjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMC4wMjcNCgkJYzYuMjkzLTguMzYyLDEwLjAyNy0xOC43NTIsMTAuMDI3LTMwYzAtMjcuNTctMjIuNDMtNTAtNTAtNTBzLTUwLDIyLjQzLTUwLDUwYzAsMTEuMjQ4LDMuNzM0LDIxLjYzOCwxMC4wMjcsMzBIMTANCgkJYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjMxOS45OTljMCw1LjUyMyw0LjQ3NywxMCwxMCwxMGg0MGg0MGgzMS4wMzNjNS41MjIsMCwxMC00LjQ3NywxMC0xMGMwLTUuNTIyLTQuNDc4LTEwLTEwLTEwSDEwMA0KCQl2LTIwLjAwMWgzMTEuOTk4djIwLjAwMWgtMjEuMDMzYy01LjUyMywwLTEwLDQuNDc4LTEwLDEwYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMzEuMDMzaDQwLjAwMWg0MGM1LjUyMiwwLDEwLTQuNDc3LDEwLTEwDQoJCVYxMzYuMDAxQzUxMS45OTksMTMwLjQ3Nyw1MDcuNTIxLDEyNi4wMDEsNTAxLjk5OSwxMjYuMDAxeiBNODAsNDQ1Ljk5OUg1MEgyMFYxNDYuMDAxaDIwdjQxLjg5OGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwDQoJCXMxMC00LjQ3NywxMC0xMHYtNDEuODk4aDIwVjQ0NS45OTl6IE01MCwxMjYuMDAxYy0xNi41NDMsMC0zMC0xMy40NTgtMzAtMzBzMTMuNDU3LTMwLDMwLTMwYzE2LjU0MywwLDMwLDEzLjQ1OCwzMCwzMA0KCQlTNjYuNTQzLDEyNi4wMDEsNTAsMTI2LjAwMXogTTEzNS4zMzQsNDA1Ljk5OEgxMDBWMTk1LjYyOWMxMS4zMTgtOC4wMiwyMy4xMjYtMTUuMDk1LDM1LjMzNC0yMS4yMThWNDA1Ljk5OHogTTE5MC42NjcsNDA2DQoJCWgtMzUuMzMzVjE2NS4zODRjMTEuNS00LjYzLDIzLjI5OC04LjQ0OSwzNS4zMzMtMTEuNDM3VjQwNnogTTI0Niw0MDZoLTM1LjMzM1YxNDkuNzg3YzExLjYxNC0xLjk1OCwyMy40MDktMy4xNjgsMzUuMzMzLTMuNTk5DQoJCVY0MDZ6IE0zMDEuMzMyLDQwNS45OThIMjY2di0yNTkuODFjMTEuOTI0LDAuNDMxLDIzLjcxNywxLjY0MSwzNS4zMzIsMy41OTlWNDA1Ljk5OHogTTM1Ni42NjQsNDA1Ljk5OWgtMzUuMzMyVjE1My45NDgNCgkJYzEyLjAzNSwyLjk4OCwyMy44MzIsNi44MDcsMzUuMzMyLDExLjQzOFY0MDUuOTk5eiBNNDExLjk5OCw0MDUuOTk4aC0zNS4zMzRWMTc0LjQxMmMxMi4yMDksNi4xMjMsMjQuMDE3LDEzLjIsMzUuMzM0LDIxLjIyDQoJCVY0MDUuOTk4eiBNNDkxLjk5OSw0NDUuOTk5aC0zMGgtMzAuMDAxVjE0Ni4wMDFoMjAuMDAxdjQxLjg5OGMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwYzUuNTIyLDAsMTAtNC40NzcsMTAtMTB2LTQxLjg5OGgyMA0KCQlWNDQ1Ljk5OXogTTQ2MS45OTksMTI2LjAwMWMtMTYuNTQyLDAtMzAuMDAxLTEzLjQ1OC0zMC4wMDEtMzBjMC0xNi41NDMsMTMuNDU5LTMwLjAwMSwzMC4wMDEtMzAuMDAxDQoJCWMxNi41NDIsMCwzMCwxMy40NTgsMzAsMzAuMDAxQzQ5MS45OTksMTEyLjU0Miw0NzguNTQxLDEyNi4wMDEsNDYxLjk5OSwxMjYuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTUwLDQ0NS45OTloLTAuMjM2Yy01LjUyMywwLTEwLDQuNDc4LTEwLDEwYzAsNS41MjMsNC40NzcsMTAsMTAsMTBIMTUwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTANCgkJQzE2MCw0NTAuNDc3LDE1NS41MjMsNDQ1Ljk5OSwxNTAsNDQ1Ljk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Mi4yMzQsNDQ1Ljk5OWgtMC4yMzdjLTUuNTIyLDAtMTAsNC40NzgtMTAsMTBjMCw1LjUyMyw0LjQ3OCwxMCwxMCwxMGgwLjIzN2M1LjUyMywwLDEwLTQuNDc3LDEwLTEwDQoJCUMzNzIuMjM0LDQ1MC40NzcsMzY3Ljc1OCw0NDUuOTk5LDM2Mi4yMzQsNDQ1Ljk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwLDIwNi42MzFjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2MC4yMzVjMCw1LjUyMyw0LjQ3NywxMCwxMCwxMHMxMC00LjQ3NywxMC0xMHYtMC4yMzUNCgkJQzYwLDIxMS4xMDgsNTUuNTIzLDIwNi42MzEsNTAsMjA2LjYzMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ2MS45OTksMjA2LjYzMWMtNS41MjIsMC0xMCw0LjQ3Ny0xMCwxMHYwLjIzNWMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwYzUuNTIyLDAsMTAtNC40NzcsMTAtMTB2LTAuMjM1DQoJCUM0NzEuOTk5LDIxMS4xMDgsNDY3LjUyMSwyMDYuNjMxLDQ2MS45OTksMjA2LjYzMXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",$le="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MC4wMDUgNDgwLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTEwNC4wMDUsMTA4LjAwM2MtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0YzAsNC40MTgsMy41ODIsOCw4LDhzOC0zLjU4Miw4LThzMy41ODItOCw4LThzOC0zLjU4Miw4LTgNCgkJCVMxMDguNDIzLDEwOC4wMDMsMTA0LjAwNSwxMDguMDAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzg1LjM1Nyw3Ni4xMTVsLTI4MC00OGMtMC40NDctMC4wNzMtMC44OTktMC4xMTEtMS4zNTItMC4xMTJDNDYuNjEyLDI3Ljk1NiwwLjA0Nyw3NC40NDQsMCwxMzEuODM3DQoJCQljLTAuMDI2LDMxLjA1OSwxMy44NDMsNjAuNTAxLDM3LjgwNSw4MC4yNjFsNTguNDQsMjMzLjg0OGMwLjg5MiwzLjU1OSw0LjA5MSw2LjA1Niw3Ljc2LDYuMDU2aDY0DQoJCQljNC40MTgsMC4wMDgsOC4wMDctMy41NjYsOC4wMTUtNy45ODVjMC0wLjE3MS0wLjAwNS0wLjM0MS0wLjAxNS0wLjUxMWwtMTMuNi0yMTcuNGwyMjIuOTItMzguMjE2DQoJCQljMy44NTQtMC42NDUsNi42NzktMy45OCw2LjY4LTcuODg4di05NkMzOTIuMDA3LDgwLjEwNSwzODkuMTk5LDc2Ljc3MywzODUuMzU3LDc2LjExNXogTTExMC4yNTMsNDM2LjAwM0w1Ny42MDUsMjI1LjE3MQ0KCQkJYzAuNTA0LDAuMjQ4LDEuMDQsMC40MTYsMS41NDQsMC42NjRjMi41NzYsMS4yMzIsNS4xODksMi4zNTIsNy44NCwzLjM2YzAuNzQ0LDAuMjgsMS40NjQsMC42LDIuMjA4LDAuODY0DQoJCQljMy4zMTksMS4xNzQsNi42OTcsMi4xNzUsMTAuMTIsM2MwLjgsMC4xOTIsMS42LDAuMzI4LDIuNCwwLjUwNGMyLjc2OCwwLjU5Miw1LjU2NSwxLjA3Nyw4LjM5MiwxLjQ1Ng0KCQkJYzEuMDA4LDAuMTI4LDIuMDE2LDAuMjY0LDMuMDI0LDAuMzY4YzMuNjExLDAuMzksNy4yNCwwLjU5NiwxMC44NzIsMC42MTZjMC40NTMtMC4wMDEsMC45MDUtMC4wMzksMS4zNTItMC4xMTJsNDEuMjE2LTcuMDg4DQoJCQlsMTIuOTIsMjA3LjJIMTEwLjI1M3ogTTM0NC4wMDUsMTc4LjczOWwtMjM4LjA4OCw0MC44bC0yLjU3NiwwLjQ2NGMtNDguMzY3LTAuMzA0LTg3LjM5OS0zOS42MzItODcuMzM2LTg4DQoJCQljMC4wNTUtNDguMzIsMzkuMDE4LTg3LjU3OSw4Ny4zMzYtODhsMjQwLjY2NCw0MS4yNjRWMTc4LjczOXogTTM3Ni4wMDUsMTczLjI1OWwtMTYsMi43NDR2LTg4bDE2LDIuNzQ0VjE3My4yNTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDQuMDA1LDc2LjAwM2MtMzAuOTI4LDAtNTYsMjUuMDcyLTU2LDU2YzAuMDM1LDMwLjkxMywyNS4wODcsNTUuOTY1LDU2LDU2YzMwLjkyOCwwLDU2LTI1LjA3Miw1Ni01Ng0KCQkJQzE2MC4wMDUsMTAxLjA3NSwxMzQuOTMzLDc2LjAwMywxMDQuMDA1LDc2LjAwM3ogTTEwNC4wMDUsMTcyLjAwM2MtMjIuMDkxLDAtNDAtMTcuOTA5LTQwLTQwYzAuMDI2LTIyLjA4LDE3LjkyLTM5Ljk3NCw0MC00MA0KCQkJYzIyLjA5MSwwLDQwLDE3LjkwOSw0MCw0MFMxMjYuMDk3LDE3Mi4wMDMsMTA0LjAwNSwxNzIuMDAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQxLjkzMyw0MTEuNTIzbC05LjY2NC0xNTUuMDI0Yy0wLjI3Ni00LjQxOC00LjA4Mi03Ljc3Ni04LjUtNy41Yy00LjQxOCwwLjI3Ni03Ljc3Niw0LjA4Mi03LjUsOC41bDkuNjY0LDE1NQ0KCQkJYzAuMjYzLDQuMjI3LDMuNzczLDcuNTE2LDguMDA4LDcuNTA0YzAuMTY4LDAsMC4zMzYsMCwwLjUwNCwwQzEzOC44NTQsNDE5LjcyOCwxNDIuMjA3LDQxNS45MzIsMTQxLjkzMyw0MTEuNTIzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDcyLjAwNSwxMjQuMDAzaC00OGMtNC40MTgsMC04LDMuNTgyLTgsOHMzLjU4Miw4LDgsOGg0OGM0LjQxOCwwLDgtMy41ODIsOC04UzQ3Ni40MjMsMTI0LjAwMyw0NzIuMDA1LDEyNC4wMDN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIuMDA1LDE1Ni4wMDNoLTQ4Yy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDQ4YzQuNDE4LDAsOC0zLjU4Miw4LThTNDc2LjQyMywxNTYuMDAzLDQ3Mi4wMDUsMTU2LjAwM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ3Mi4wMDUsOTIuMDAzaC00OGMtNC40MTgsMC04LDMuNTgyLTgsOHMzLjU4Miw4LDgsOGg0OGM0LjQxOCwwLDgtMy41ODIsOC04UzQ3Ni40MjMsOTIuMDAzLDQ3Mi4wMDUsOTIuMDAzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Ple="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ4LjQ1Nyw3Ny4yMjdhOC4wNjMsOC4wNjMsMCwwLDAtMTAuNCwxMi4zMjV2Ni45MjdhNS4yNzMsNS4yNzMsMCwwLDAsMTAuNTQ1LDBWODkuNTUzYTguMDYzLDguMDYzLDAsMCwwLS4xNDYtMTIuMzI2Wk00NS44NzQsODcuMjRhMS43NSwxLjc1LDAsMCwwLS43NzEsMS40NTF2Ny43ODdhMS43NzMsMS43NzMsMCwwLDEtMy41NDUsMFY4OC42OTFhMS43NDcsMS43NDcsMCwwLDAtLjc3My0xLjQ1MUE0LjU2Niw0LjU2NiwwLDAsMSw0Mi40LDc4Ljk3OGE0Ljg3Niw0Ljg3NiwwLDAsMSwuOTQtLjA5Miw0LjUsNC41LDAsMCwxLDIuODkzLDEuMDQxLDQuNTYyLDQuNTYyLDAsMCwxLS4zNTYsNy4zMTNaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDUuMjI4LDQ0LjY2Myw2NS41OCw0My4zNlYxOS41MTRhNS4zNyw1LjM3LDAsMCwwLTUuMzYzLTUuMzY0SDI2LjQ0M2E1LjM3LDUuMzcsMCwwLDAtNS4zNjMsNS4zNjR2ODguOTcyYTUuMzcsNS4zNywwLDAsMCw1LjM2Myw1LjM2NEg2MC4yMTdhNS4zNyw1LjM3LDAsMCwwLDUuMzYzLTUuMzY0VjU5LjhsMzkuNjQ4LTEuM2ExLjc1LDEuNzUsMCwwLDAsMS42OTItMS43NDlWNDYuNDEyQTEuNzUsMS43NSwwLDAsMCwxMDUuMjI4LDQ0LjY2M1pNNjIuMDgsMTA4LjQ4NmExLjg2NiwxLjg2NiwwLDAsMS0xLjg2MywxLjg2NEgyNi40NDNhMS44NjYsMS44NjYsMCwwLDEtMS44NjMtMS44NjRWMTkuNTE0YTEuODY2LDEuODY2LDAsMCwxLDEuODYzLTEuODY0SDYwLjIxN2ExLjg2NiwxLjg2NiwwLDAsMSwxLjg2MywxLjg2NFY0My4yNDVsLTYuMjY3LS4yMDZhMTUuMTI3LDE1LjEyNywwLDEsMCwwLDE3LjA4Nmw2LjI2NC0uMjA2Wk00NC4zOSw2MC41aDBMNTEsNjAuMjg0YTExLjYxMiwxMS42MTIsMCwxLDEsLjA0LTE3LjRsLTYuNjQ5LS4yMTloLS4wNThBOC45Miw4LjkyLDAsMSwwLDQ0LjM5LDYwLjVabTU5LjAzLTUuNDQyLTM5LjU4NywxLjNoLS4wMDhMNDQuMzM0LDU3YTUuNDIsNS40MiwwLDAsMS0uMDI3LTEwLjg0bDU5LjExMywxLjk0M1oiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Wle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTggNTExLjk5OCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS4zNCwxMTcuMzM2Yy01LjkwNiwwLTEwLjY4OCw0Ljc3My0xMC42ODgsMTAuNjY0djg1LjMzNUg0NjkuMzR2LTIxLjMzNmMwLTIzLjUyMy0xOS4xNTYtNDIuNjYzLTQyLjY4OC00Mi42NjMNCgkJYy0xMi43MTgsMC0yNC4xNTUsNS42MDktMzEuOTk5LDE0LjQ5MWMtNy44MTItOC44ODItMTkuMjUtMTQuNDkxLTMyLTE0LjQ5MWMtMTIuNzE4LDAtMjQuMTU1LDUuNjA5LTMxLjk5OSwxNC40OTENCgkJYy03LjgxMi04Ljg4Mi0xOS4yNS0xNC40OTEtMzItMTQuNDkxYy0xMi43MTksMC0yNC4xNTYsNS42MDktMzEuOTkyLDE0LjQ5MWMtNy44Mi04Ljg4Mi0xOS4yNTgtMTQuNDkxLTMyLTE0LjQ5MQ0KCQljLTEyLjcyNiwwLTI0LjE3MSw1LjYwOS0zMiwxNC40OTFjLTcuODItOC44ODItMTkuMjU4LTE0LjQ5MS0zMi0xNC40OTFjLTEyLjcyNiwwLTI0LjE3MSw1LjYwOS0zMiwxNC40OTENCgkJYy03LjgyLTguODgyLTE5LjI1OC0xNC40OTEtMzItMTQuNDkxYy0xOS44MzUsMC0zNi41NywxMy42MTYtNDEuMzIsMzEuOTk5SDMyYy01Ljg5MSwwLTEwLjY2NCw0Ljc3My0xMC42NjQsMTAuNjY0djIxLjMzNkgxMC42NjQNCgkJQzQuNzczLDIxMy4zMzUsMCwyMTguMTA4LDAsMjIzLjk5OXM0Ljc3MywxMC42NjQsMTAuNjY0LDEwLjY2NGgxMC42NzJ2MjEuMzM2YzAsNS44OTEsNC43NzMsMTAuNjY0LDEwLjY2NCwxMC42NjRoMzJ2MjAyLjY3OA0KCQljMCwyMy41MTYsMTkuMTQxLDQyLjY1Niw0Mi42NjQsNDIuNjU2YzEyLjc0MiwwLDI0LjE4LTUuNjI1LDMyLTE0LjVjNy44MjgsOC44NzUsMTkuMjczLDE0LjUsMzIsMTQuNQ0KCQljMTIuNzQyLDAsMjQuMTgtNS42MjUsMzItMTQuNWM3LjgyOCw4Ljg3NSwxOS4yNzMsMTQuNSwzMiwxNC41YzEyLjc0MiwwLDI0LjE4LTUuNjI1LDMyLTE0LjUNCgkJYzcuODM2LDguODc1LDE5LjI3MywxNC41LDMxLjk5MiwxNC41YzEyLjc1LDAsMjQuMTg4LTUuNjI1LDMyLTE0LjVjNy44NDQsOC44NzUsMTkuMjgxLDE0LjUsMzEuOTk5LDE0LjUNCgkJYzEyLjc1LDAsMjQuMTg4LTUuNjI1LDMyLTE0LjVjNy44NDQsOC44NzUsMTkuMjgxLDE0LjUsMzEuOTk5LDE0LjVjMjMuNTMxLDAsNDIuNjg4LTE5LjE0MSw0Mi42ODgtNDIuNjU2VjIzNC42NjNoMzINCgkJYzUuODc1LDAsMTAuNjU2LTQuNzczLDEwLjY1Ni0xMC42NjRWMTI4QzUxMS45OTYsMTIyLjEwOSw1MDcuMjE1LDExNy4zMzYsNTAxLjM0LDExNy4zMzZ6IE02NCwyNDUuMzM1SDQyLjY2NHYtNDIuNjcySDY0VjI0NS4zMzUNCgkJeiBNMTI3Ljk5OSw0NjkuMzQxYzAsMTEuNzUtOS41NjMsMjEuMzEyLTIxLjMzNiwyMS4zMTJjLTExLjc1NywwLTIxLjMyOC05LjU2Mi0yMS4zMjgtMjEuMzEyVjI1NS45OTl2LTY0DQoJCWMwLTExLjc1OCw5LjU3LTIxLjMzNiwyMS4zMjgtMjEuMzM2YzExLjc3MywwLDIxLjMzNiw5LjU3OCwyMS4zMzYsMjEuMzM2VjQ2OS4zNDF6IE0xOTEuOTk5LDQ2OS4zNDENCgkJYy0wLjAwMSwxMS43NS05LjU2MywyMS4zMTItMjEuMzM2LDIxLjMxMmMtMTEuNzU3LDAtMjEuMzI4LTkuNTYyLTIxLjMyOC0yMS4zMTJWMTkxLjk5OWMwLTExLjc1OCw5LjU3LTIxLjMzNiwyMS4zMjgtMjEuMzM2DQoJCWMxMS43NzMsMCwyMS4zMzYsOS41NzgsMjEuMzM2LDIxLjMzNlY0NjkuMzQxeiBNMjU1Ljk5OCw0NjkuMzQxYzAsMTEuNzUtOS41NjIsMjEuMzEyLTIxLjMzNiwyMS4zMTINCgkJYy0xMS43NTcsMC0yMS4zMjgtOS41NjItMjEuMzI4LTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTctMjEuMzM2LDIxLjMyOC0yMS4zMzZjMTEuNzczLDAsMjEuMzM2LDkuNTc4LDIxLjMzNiwyMS4zMzZWNDY5LjM0MXoNCgkJIE0zMTkuOTk4LDQ2OS4zNDFjMCwxMS43NS05LjU2MiwyMS4zMTItMjEuMzQ0LDIxLjMxMmMtMTEuNzUsMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5DQoJCWMwLTExLjc1OCw5LjU2Mi0yMS4zMzYsMjEuMzEyLTIxLjMzNmMxMS43ODEsMCwyMS4zNDQsOS41NzgsMjEuMzQ0LDIxLjMzNlY0NjkuMzQxeiBNMzgzLjk5Nyw0NjkuMzQxDQoJCWMwLDExLjc1LTkuNTYyLDIxLjMxMi0yMS4zNDQsMjEuMzEyYy0xMS43NDksMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTYyLTIxLjMzNiwyMS4zMTItMjEuMzM2DQoJCWMxMS43ODEsMCwyMS4zNDQsOS41NzgsMjEuMzQ0LDIxLjMzNlY0NjkuMzQxeiBNNDQ3Ljk5Niw0NjkuMzQxYzAsMTEuNzUtOS41NjIsMjEuMzEyLTIxLjM0NCwyMS4zMTINCgkJYy0xMS43NDksMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTYyLTIxLjMzNiwyMS4zMTItMjEuMzM2YzExLjc4MSwwLDIxLjM0NCw5LjU3OCwyMS4zNDQsMjEuMzM2VjQ2OS4zNDENCgkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzU2Ljg3MSwxMDMuNjcyYy0xLjMxMi00LjUzOS0wLjUtNy44NDQsMi42ODgtMTEuMDU1YzguNjU2LTguNjk1LDExLjUzMS0xOS45ODQsOC4wNjItMzEuODEyDQoJCQljLTIuMzEyLTcuOTM4LTYuODEyLTEzLjU0Ny03LjM3NS0xNC4yNWMtMC4wMzEsMC0wLjAzMS0wLjAwOC0wLjAzMS0wLjAwOHYtMC4wMTVjLTEuOTY5LTIuMzU5LTQuOTA2LTMuODY3LTguMjE5LTMuODY3DQoJCQljLTUuODksMC0xMC42NTUsNC43ODEtMTAuNjU1LDEwLjY3MmMwLDIuNTg2LDAuOTA2LDQuOTYxLDIuNDM4LDYuODA1YzAuMDMxLDAuMDIzLDIuMjgxLDIuOTM4LDMuMzc1LDYuNjU2DQoJCQljMS4yNjYsNC4zNjcsMC40NjksNy41ODYtMi43MTksMTAuNzY2Yy04LjYyNSw4LjY3OC0xMS41MTUsMjAuMDQ1LTguMDc4LDMxLjk5OGMyLjMyOCw4LjEwMiw2LjgyOCwxMy44MzYsNy4zMjgsMTQuNDY5di0wLjAwOA0KCQkJYzEuOTY5LDIuNDIyLDQuOTUzLDMuOTc3LDguMzEyLDMuOTc3YzUuODkxLDAsMTAuNjU2LTQuNzczLDEwLjY1Ni0xMC42NjRjMC0yLjUzOS0wLjg3NS00Ljg2Ny0yLjM0NC02LjY5NQ0KCQkJQzM2MC4yNzgsMTEwLjYxLDM1Ny45NjUsMTA3LjU1NSwzNTYuODcxLDEwMy42NzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNjguNjU2LDk2LjYxYy0yLjQ2MS05LjgzNi0wLjQ5Mi0xOC4xOTUsNi0yNS41NDdjMTEuNDA2LTEyLjg5MSwxNS4wMzEtMjguNjk1LDEwLjUtNDUuNzI2DQoJCQljLTMuMTg4LTExLjkzOC05LjMxMi0yMC4yMjctMTAtMjEuMTMzVjQuMjJjLTEuOTY5LTIuNTU1LTUuMDIzLTQuMjE5LTguNDkyLTQuMjE5Yy01Ljg5MywwLTEwLjY2Niw0Ljc3My0xMC42NjYsMTAuNjY0DQoJCQljMCwyLjQxNCwwLjgwNSw0LjYzMywyLjE1Niw2LjQxNGgtMC4wMTZjMC4wNDcsMC4wNjIsNC40OTIsNi4xMDksNi41NDcsMTQuMzJjMi40NTMsOS44MjcsMC40ODQsMTguMTg3LTYuMDE2LDI1LjUzOA0KCQkJYy0xMS4zOSwxMi44OTEtMTUuMDE1LDI4LjY5Ni0xMC40ODMsNDUuNzI3YzMuMTcyLDExLjkzOCw5LjMwNSwyMC4yMjcsOS45ODQsMjEuMTMzbDAuMDE2LTAuMDE2DQoJCQljMS45NDUsMi41Nyw1LjAxNiw0LjIxOSw4LjQ3Nyw0LjIxOWM1Ljg5OCwwLDEwLjY4LTQuNzczLDEwLjY4LTEwLjY2NGMwLTIuNDE0LTAuODEyLTQuNjMzLTIuMTU2LTYuNDE0DQoJCQlDMjc1LjE0LDExMC44NiwyNzAuNjk1LDEwNC44MTMsMjY4LjY1Niw5Ni42MXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4OS42NCwxMTAuNjQxYy0wLjAyMy0wLjAzMS0yLjMyOC0zLjA4Ni0zLjQ0NS02Ljk2OWMtMS4zMDUtNC41MzktMC41LTcuODQ0LDIuNjk1LTExLjA1NQ0KCQkJYzguNjY0LTguNjk1LDExLjUyMy0xOS45ODQsOC4wNjItMzEuODEyYy0yLjMyLTcuOTM4LTYuNzg5LTEzLjUzMS03LjM5MS0xNC4yNWMwLDAsMC0wLjAwOC0wLjAwOC0wLjAwOGwtMC4wMDgtMC4wMjN2MC4wMDgNCgkJCWMtMS45NjEtMi4zNTktNC45MDYtMy44NjctOC4yMTEtMy44NjdjLTUuODkxLDAtMTAuNjcyLDQuNzgxLTEwLjY3MiwxMC42NzJjMCwyLjU4NiwwLjkyMiw0Ljk2MSwyLjQ1Myw2LjgwNQ0KCQkJYzAuMDIzLDAuMDIzLDIuMjczLDIuOTM4LDMuMzU5LDYuNjU2YzEuMjgxLDQuMzY3LDAuNDY5LDcuNTg2LTIuNzAzLDEwLjc2NmMtOC42NCw4LjY3OC0xMS41MTUsMjAuMDQ1LTguMDc3LDMxLjk5OA0KCQkJYzIuMzI4LDguMTAyLDYuODI4LDEzLjgzNiw3LjMzNiwxNC40Njl2LTAuMDA4YzEuOTYxLDIuNDIyLDQuOTQ1LDMuOTc3LDguMzA1LDMuOTc3YzUuODkxLDAsMTAuNjY0LTQuNzczLDEwLjY2NC0xMC42NjQNCgkJCWMwLTIuNTM5LTAuODkxLTQuODY3LTIuMzY3LTYuNjk1SDE4OS42NHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Rle="PHN2ZyBoZWlnaHQ9IjQ5NnB0IiB2aWV3Qm94PSIwIC0xIDQ5NiA0OTUiIHdpZHRoPSI0OTZwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDg4IDMyMC41aC00MHYtMzJjMC0yLjEyODkwNi0uODM5ODQ0LTQuMTYwMTU2LTIuMzQzNzUtNS42NTYyNWwtMTIwLTEyMGMtMS40OTYwOTQtMS41MDM5MDYtMy41MjczNDQtMi4zNDM3NS01LjY1NjI1LTIuMzQzNzVoLTE2di0xNTJjMC00LjQyNTc4MS0zLjU3NDIxOS04LTgtOGgtOTZjLTQuNDI1NzgxIDAtOCAzLjU3NDIxOS04IDh2MTUyaC0yNGMtMi4xMjg5MDYgMC00LjE2MDE1Ni44Mzk4NDQtNS42NTYyNSAyLjM0Mzc1bC0xMjAgMTIwYy0xLjUwMzkwNiAxLjQ5NjA5NC0yLjM0Mzc1IDMuNTI3MzQ0LTIuMzQzNzUgNS42NTYyNXYzMmgtMzJjLTQuNDI1NzgxIDAtOCAzLjU3NDIxOS04IDh2NDhjMCA0LjQyNTc4MSAzLjU3NDIxOSA4IDggOGg0ODBjNC40MjU3ODEgMCA4LTMuNTc0MjE5IDgtOHYtNDhjMC00LjQyNTc4MS0zLjU3NDIxOS04LTgtOHptLTI4MC0zMDRoODB2MTkyaC04MHptLTE1MiAyNzUuMzEyNSAxMTUuMzEyNS0xMTUuMzEyNWgyMC42ODc1djQwYzAgNC40MjU3ODEgMy41NzQyMTkgOCA4IDhoOTZjNC40MjU3ODEgMCA4LTMuNTc0MjE5IDgtOHYtNDBoMTIuNjg3NWwxMTUuMzEyNSAxMTUuMzEyNXYyOC42ODc1aC0zNzZ6bTQyNCA3Ni42ODc1aC00NjR2LTMyaDQ2NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuMzEyNSA0NDAuNWMtMi4xMzY3MTktMi4xNDQ1MzEtMy4zMTI1LTQuOTc2NTYyLTMuMzEyNS04czEuMTc1NzgxLTUuODU1NDY5IDMuMzEyNS04bDEwLjM0Mzc1LTEwLjM0Mzc1LTExLjMxMjUtMTEuMzEyNS0xMC4zNDM3NSAxMC4zNDM3NWMtNS4xNjAxNTYgNS4xNjAxNTYtOCAxMi4wMTU2MjUtOCAxOS4zMTI1czIuODM5ODQ0IDE0LjE2MDE1NiA4IDE5LjMxMjVsNC42ODc1IDQuNjg3NWMyLjEzNjcxOSAyLjE0NDUzMSAzLjMxMjUgNC45NzY1NjIgMy4zMTI1IDhzLTEuMTc1NzgxIDUuODU1NDY5LTMuMzEyNSA4bC0xMC4zNDM3NSAxMC4zNDM3NSAxMS4zMTI1IDExLjMxMjUgMTAuMzQzNzUtMTAuMzQzNzVjNS4xNjAxNTYtNS4xNjAxNTYgOC0xMi4wMTU2MjUgOC0xOS4zMTI1cy0yLjgzOTg0NC0xNC4xNjAxNTYtOC0xOS4zMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNy4zMTI1IDQ0MC41Yy0yLjEzNjcxOS0yLjE0NDUzMS0zLjMxMjUtNC45NzY1NjItMy4zMTI1LThzMS4xNzU3ODEtNS44NTU0NjkgMy4zMTI1LThsMTAuMzQzNzUtMTAuMzQzNzUtMTEuMzEyNS0xMS4zMTI1LTEwLjM0Mzc1IDEwLjM0Mzc1Yy01LjE2MDE1NiA1LjE2MDE1Ni04IDEyLjAxNTYyNS04IDE5LjMxMjVzMi44Mzk4NDQgMTQuMTYwMTU2IDggMTkuMzEyNWw0LjY4NzUgNC42ODc1YzIuMTM2NzE5IDIuMTQ0NTMxIDMuMzEyNSA0Ljk3NjU2MiAzLjMxMjUgOHMtMS4xNzU3ODEgNS44NTU0NjktMy4zMTI1IDhsLTEwLjM0Mzc1IDEwLjM0Mzc1IDExLjMxMjUgMTEuMzEyNSAxMC4zNDM3NS0xMC4zNDM3NWM1LjE2MDE1Ni01LjE2MDE1NiA4LTEyLjAxNTYyNSA4LTE5LjMxMjVzLTIuODM5ODQ0LTE0LjE2MDE1Ni04LTE5LjMxMjV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjc1LjMxMjUgNDQwLjVjLTIuMTM2NzE5LTIuMTQ0NTMxLTMuMzEyNS00Ljk3NjU2Mi0zLjMxMjUtOHMxLjE3NTc4MS01Ljg1NTQ2OSAzLjMxMjUtOGwxMC4zNDM3NS0xMC4zNDM3NS0xMS4zMTI1LTExLjMxMjUtMTAuMzQzNzUgMTAuMzQzNzVjLTUuMTYwMTU2IDUuMTYwMTU2LTggMTIuMDE1NjI1LTggMTkuMzEyNXMyLjgzOTg0NCAxNC4xNjAxNTYgOCAxOS4zMTI1bDQuNjg3NSA0LjY4NzVjMi4xMzY3MTkgMi4xNDQ1MzEgMy4zMTI1IDQuOTc2NTYyIDMuMzEyNSA4cy0xLjE3NTc4MSA1Ljg1NTQ2OS0zLjMxMjUgOGwtMTAuMzQzNzUgMTAuMzQzNzUgMTEuMzEyNSAxMS4zMTI1IDEwLjM0Mzc1LTEwLjM0Mzc1YzUuMTYwMTU2LTUuMTYwMTU2IDgtMTIuMDE1NjI1IDgtMTkuMzEyNXMtMi44Mzk4NDQtMTQuMTYwMTU2LTgtMTkuMzEyNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjMuMzEyNSA0NDAuNWMtMi4xMzY3MTktMi4xNDQ1MzEtMy4zMTI1LTQuOTc2NTYyLTMuMzEyNS04czEuMTc1NzgxLTUuODU1NDY5IDMuMzEyNS04bDEwLjM0Mzc1LTEwLjM0Mzc1LTExLjMxMjUtMTEuMzEyNS0xMC4zNDM3NSAxMC4zNDM3NWMtNS4xNjAxNTYgNS4xNjAxNTYtOCAxMi4wMTU2MjUtOCAxOS4zMTI1czIuODM5ODQ0IDE0LjE2MDE1NiA4IDE5LjMxMjVsNC42ODc1IDQuNjg3NWMyLjEzNjcxOSAyLjE0NDUzMSAzLjMxMjUgNC45NzY1NjIgMy4zMTI1IDhzLTEuMTc1NzgxIDUuODU1NDY5LTMuMzEyNSA4bC0xMC4zNDM3NSAxMC4zNDM3NSAxMS4zMTI1IDExLjMxMjUgMTAuMzQzNzUtMTAuMzQzNzVjNS4xNjAxNTYtNS4xNjAxNTYgOC0xMi4wMTU2MjUgOC0xOS4zMTI1cy0yLjgzOTg0NC0xNC4xNjAxNTYtOC0xOS4zMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAyODguNWgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzUyIDI4OC41aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAgMjg4LjVoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Jle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDUgNTEyLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTMyNy4xNTksMi43NjZjLTQuMDYzLTMuNjg4LTEwLjI1LTMuNjg4LTE0LjMxMywwYy00LjY0Miw0LjE4Ni0xMTAuODg5LDEwMS4yOTItMTYwLjIyOCwyMTMuODM5DQoJCQkJYy01LjMxOC0xLjg2Ny0xMS40NC0zLjI2Ni0xOS4zNTUtMy4yNjZjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzNjLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2DQoJCQkJYy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4M2MtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2Nw0KCQkJCWMwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3YzExLjk2OSwwLDE3LjUyMSwzLjg2NSwyNC41NDIsOC43NWM4LjA0Miw1LjYwNCwxOC4wNjMsMTIuNTgzLDM2LjcyOSwxMi41ODMNCgkJCQljMTguNjc3LDAsMjguNzA4LTYuOTc5LDM2Ljc2LTEyLjU4M2M3LjAzMS00Ljg4NSwxMi41ODMtOC43NSwyNC41NjMtOC43NWMxMiwwLDE3LjU2MywzLjg2NSwyNC42MDQsOC43Ng0KCQkJCWM4LjA1Miw1LjYwNCwxOC4wODMsMTIuNTczLDM2Ljc3MSwxMi41NzNjMTguNjc3LDAsMjguNzA4LTYuOTY5LDM2Ljc3MS0xMi41NzNjNy4wMzEtNC44OTYsMTIuNTk0LTguNzYsMjQuNTk0LTguNzYNCgkJCQljNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3Yy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3Mw0KCQkJCWMtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzZjLTExLjIwOCwwLTE2LjgyMy0zLjQxOS0yMy4yNDItNy44NTRjNDAuMTIxLTkyLjY2MSwxMjMuNjYxLTE3Ny40NjYsMTQ4LjYwNy0yMDEuNDkNCgkJCQljMzMuMjE5LDMyLjAxLDE3MC42NjcsMTcxLjg2NSwxNzAuNjY3LDI5NC42NzdjMCw5NC4xMDQtNzYuNTYzLDE3MC42NjctMTcwLjY2NywxNzAuNjY3Yy00Mi40NzcsMC04Mi42NjktMTUuODIyLTExMy43OC00My43NTgNCgkJCQljMTEuNTQyLTIuMTM4LDE4Ljk5NC03LjE3NywyNS4xODYtMTEuNDgyYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2YzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjcNCgkJCQlzLTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3Yy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3M2MtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzYNCgkJCQljLTEyLDAtMTcuNTYzLTMuODY1LTI0LjU5NC04Ljc2Yy04LjA2My01LjYwNC0xOC4wOTQtMTIuNTczLTM2Ljc4MS0xMi41NzNjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzMNCgkJCQljLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2Yy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4Mw0KCQkJCWMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N3M0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2MxMS45NjksMCwxNy41MjEsMy44NjUsMjQuNTQyLDguNzUNCgkJCQljOC4wNDIsNS42MDQsMTguMDYzLDEyLjU4MywzNi43MjksMTIuNTgzYzE4LjY3NywwLDI4LjcwOC02Ljk3OSwzNi43Ni0xMi41ODNjNy4wMzEtNC44ODUsMTIuNTgzLTguNzUsMjQuNTYzLTguNzUNCgkJCQljMTIsMCwxNy41NjMsMy44NjUsMjQuNjA0LDguNzZjNC4zNDUsMy4wMjMsOS40MTQsNi4zNTUsMTUuOTYxLDguODY1YzM2LjYsNDIuOTk2LDg5LjY1NSw2Ny43MDgsMTQ2LjE3NCw2Ny43MDgNCgkJCQljMTA1Ljg2NSwwLDE5Mi04Ni4xMzUsMTkyLTE5MkM1MTIuMDAzLDE3MS42NDEsMzM0LjcwMSw5LjU4OSwzMjcuMTU5LDIuNzY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTAuNjY5LDM2Mi42NzJjMTEuOTY5LDAsMTcuNTIxLDMuODY1LDI0LjU0Miw4Ljc1YzguMDQyLDUuNjA0LDE4LjA2MywxMi41ODMsMzYuNzI5LDEyLjU4Mw0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3YzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdjLTExLjk2OSwwLTE3LjUyMS0zLjg2NS0yNC41NDItOC43NQ0KCQkJCWMtOC4wNDItNS42MDQtMTguMDYzLTEyLjU4My0zNi43MjktMTIuNTgzYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzQuNzczLDM2Mi42NzIsMTAuNjY5LDM2Mi42NzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMzMuMjYzLDM0MS4zMzljLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjdzNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdjMTIsMCwxNy41NjMsMy44NjUsMjQuNTk0LDguNzYNCgkJCQljOC4wNjMsNS42MDQsMTguMDk0LDEyLjU3MywzNi43ODEsMTIuNTczYzE4LjY3NywwLDI4LjcwOC02Ljk2OSwzNi43NzEtMTIuNTczYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2DQoJCQkJYzEyLjE5OCwwLDE4LjQwNiwzLjk2OSwyNi4yNSw4Ljk5YzkuMDUyLDUuNzgxLDE5LjMxMywxMi4zNDQsMzcuNzUsMTIuMzQ0YzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjcNCgkJCQljMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N2MtMTIuMTk4LDAtMTguNDA2LTMuOTY5LTI2LjI1LTguOTljLTkuMDUyLTUuNzgxLTE5LjMxMy0xMi4zNDQtMzcuNzUtMTIuMzQ0DQoJCQkJYy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3M2MtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzZjLTEyLDAtMTcuNTYzLTMuODY1LTI0LjYwNC04Ljc2DQoJCQkJQzE2MS45ODIsMzQ4LjMwNywxNTEuOTUxLDM0MS4zMzksMTMzLjI2MywzNDEuMzM5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTMzLjI2MywyNzcuMzM5Yy0xOC42NzcsMC0yOC42OTgsNi45NjktMzYuNzUsMTIuNTczYy03LjAzMSw0Ljg5Ni0xMi41ODMsOC43Ni0yNC41NzMsOC43Ng0KCQkJCWMtMTEuOTY5LDAtMTcuNTIxLTMuODY1LTI0LjU0Mi04Ljc1Yy04LjA0Mi01LjYwNC0xOC4wNjMtMTIuNTgzLTM2LjcyOS0xMi41ODNjLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjcNCgkJCQljMCw1Ljg5Niw0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2MxMS45NjksMCwxNy41MjEsMy44NjUsMjQuNTQyLDguNzVjOC4wNDIsNS42MDQsMTguMDYzLDEyLjU4MywzNi43MjksMTIuNTgzDQoJCQkJYzE4LjY3NywwLDI4LjcwOC02Ljk3OSwzNi43Ni0xMi41ODNjNy4wMzEtNC44ODUsMTIuNTgzLTguNzUsMjQuNTYzLTguNzVjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2Nw0KCQkJCUMxNDMuOTMsMjgyLjEwOSwxMzkuMTU5LDI3Ny4zMzksMTMzLjI2MywyNzcuMzM5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjMxLjQwOSwzMDcuNDMyYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2YzExLjk2OSwwLDE3LjUyMSwzLjg2NSwyNC41NDIsOC43NQ0KCQkJCWM4LjA0Miw1LjYwNCwxOC4wNjMsMTIuNTgzLDM2LjcyOSwxMi41ODNjMTguNjc3LDAsMjguNzA4LTYuOTc5LDM2Ljc2LTEyLjU4M2M3LjAzMS00Ljg4NSwxMi41ODMtOC43NSwyNC41NjMtOC43NQ0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3YzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzMNCgkJCQljLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2Yy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4Mw0KCQkJCWMtMTguNjg3LDAtMjguNzE5LDYuOTY5LTM2Ljc4MSwxMi41NzNjLTcuMDMxLDQuODk2LTEyLjU5NCw4Ljc2LTI0LjU4Myw4Ljc2Yy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3DQoJCQkJczQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3QzIxMy4zMTUsMzIwLjAwNSwyMjMuMzQ2LDMxMy4wMzYsMjMxLjQwOSwzMDcuNDMyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Ble="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUxMiAxNjMuODdjMC0xMy45LTUuNDEyLTI2Ljk2MS0xNS4yMzMtMzYuNzctOS44MTUtOS44MjgtMjIuODc2LTE1LjI0LTM2Ljc3Ni0xNS4yNGgtODAuOTdjLTI2LjcwNSAwLTQ4LjQzLTIxLjcyNi00OC40My00OC40MyAwLTEyLjkzOCA1LjAzNy0yNS4xMDEgMTQuMTg0LTM0LjI0NyA5LjE0NC05LjE0NiAyMS4zMDctMTQuMTgzIDM0LjI0NS0xNC4xODNoMTI1LjQ4YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC0xMjUuNDhjLTE2Ljk0NSAwLTMyLjg3NCA2LjU5Ny00NC44NTMgMTguNTc3LTExLjk3OSAxMS45NzktMTguNTc3IDI3LjkwOC0xOC41NzcgNDQuODUzIDAgMzQuOTc1IDI4LjQ1NSA2My40MyA2My40MyA2My40M2g4MC45N2M5Ljg5IDAgMTkuMTgyIDMuODUgMjYuMTY5IDEwLjg0NyA2Ljk5MSA2Ljk4MiAxMC44NDEgMTYuMjczIDEwLjg0MSAyNi4xNjMgMCA4LjYzNy0zLjAzOCAxNy4wNDQtOC41NTcgMjMuNjc0bC0yMi4zMDUgMjYuODIyYy03Ljg4NC0yLjcyNS0xNi45ODktLjk3Mi0yMy4yODIgNS4zMTFsLTkuMDU4IDkuMDU4Yy0yMC4zMi0uNDItNDMuMDk4IDMuOTQtNjIuODIxIDcuNDI3LTQuMDc5LjcyMS02LjgwMSA0LjYxMy02LjA3OSA4LjY5MS43MjEgNC4wNzkgNC42MTMgNi43OTkgOC42OTEgNi4wNzkgMTguOTQyLTMuMzUgMzguMzkyLTUuNzY4IDU3LjgwOS03LjE4NSA3LjY4MS0uNTY2IDE0LjgzMyA0LjM5MyAxNi45ODUgMTEuNzggMS44MjcgNi4yNyA0Ny4wMjcgMTYwLjE2NyA0OC41MzMgMTY2LjU3NS40OTggMi4xMTktLjczOCAzLjY2LTIuOTEyIDMuNjYtMjIuNzg2IDAtNDEuMDQyIDE1LjY2LTQ4LjQ2NCAzNi40ODhoLTMyMC4zNzFjLTQuMTQyIDAtNy41IDMuMzU3LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVoMzI3Ljc4N2M1LjQ0NSAwIDkuODc1IDQuNDMgOS44NzUgOS44NzVzLTQuNDMxIDkuODc1LTkuODc2IDkuODc1aC00MzYuOTA2YzMuMjY1LTExLjM5MSAxMy43NzUtMTkuNzUgMjYuMi0xOS43NWg1Mi45MTljNC4xNDIgMCA3LjUtMy4zNTcgNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjVoLTQ0Ljk0NGM2Mi40NjItMTExLjU5OCAxNzEuOTAzLTE3Ny4wMjcgMjk0Ljc3OC0yMDUuNDg2IDQuMDM1LS45MzUgNi41NDktNC45NjMgNS42MTQtOC45OTktLjkzNC00LjAzNS00Ljk2NC02LjU0OS04Ljk5OS01LjYxNC03MS42MzIgMTYuNTk5LTE0My41OTMgNDcuMDUxLTIwMS40NzMgOTIuNjA2bC0xMC4wNzEtMTAuMDdjLTguNjM1LTguNzUyLTIzLjE1OS04LjY3OC0zMS44MjYtLjAxLTguNjMxIDguNjMyLTguNzI4IDIzLjE2NiAwIDMxLjgwN2w4LjA1MSA4LjA1MWMtMjkuNDY3IDI4Ljk1OS01NC4xMDIgNjIuMzItNzQuMDQyIDk4LjkyLTE4LjQ4NyA0LjUwMi0zMi4yNTYgMjEuMTkxLTMyLjI1NiA0MS4wNDUgMCA0LjE0MyAzLjM1OCA3LjUgNy41IDcuNWg0NDUuNDU1YzEzLjcxNiAwIDI0Ljg3NS0xMS4xNTkgMjQuODc1LTI0Ljg3NSAwLTEwLjc1LTYuODU1LTE5LjkyNy0xNi40MjQtMjMuMzk1IDUuMjYzLTEzLjU3MyAxNy45MDMtMjIuOTY5IDMyLjU5OC0yMi45NjkgMTEuNDgzIDAgMjAuMzAyLTExLjQwMSAxNy40MTEtMjIuNTEtLjAxOC0uMDcxLS4wMzgtLjE0Mi0uMDU4LS4yMTFsLTQ1Ljg1Ny0xNTcuMzkxIDkuMTYzLTkuMTU2YzcuMzU5LTcuMzAzIDguNjQ0LTE5LjA5MyAzLjE5Ny0yNy43NjJsMjIuMTE1LTI2LjU5M2M3Ljc1NC05LjMxOCAxMi4wMjUtMjEuMTMyIDEyLjAyNS0zMy4yNjh6bS00MDMuMTQ2IDE3MS40MTNjMS40Mi0xLjQyMSAzLjMwNS0yLjIwMyA1LjMwNy0yLjIwMyAxLjk5OSAwIDMuODc3Ljc3OSA1LjI5NiAyLjIwNGw5LjAxNCA5LjAxNGMtMy44MjUgMy4yNDMtNy41ODIgNi41NTEtMTEuMjc0IDkuOTIybC04LjM0NC04LjM0NGMtMi45Mi0yLjkyLTIuOTItNy42NzIuMDAxLTEwLjU5M3ptMzU1LjIwNS05NC4zOTgtMy45ODYgMy45ODNjLTIuNDk2LTQuNDYxLTYuMDM3LTguMjAzLTEwLjIzMy0xMC45NjFsMy42MTktMy42MTljMi45MjYtMi45MiA3LjY4LTIuOTIyIDEwLjU5OC0uMDA0IDEuNDIxIDEuNDIxIDIuMjAzIDMuMzAyIDIuMjAzIDUuMjk3IDAgMi0uNzgyIDMuODg1LTIuMjAxIDUuMzA0em0tMjE1Ljc2NSA5NC43NjRjLTEzLjgyNCA3LjY1My0yMi40MTIgMjIuMjM1LTIyLjQxMiAzOC4wNTYgMCAxMS45ODcgNS4wMTkgMjMuNTYzIDEzLjc3MSAzMS43NTggOC4wNjYgNy41NTMgMTguNzg4IDExLjc1NiAyOS43ODYgMTEuNzU1Ljk0IDAgMTUxLjA4LTkuODM4IDE1MS4wOC05LjgzOCA2LjkxMS0uNDU0IDEzLjIyNS0zLjkxNiAxNy4zMjItOS40OTggNC4wOTYtNS41NzkgNS41MDctMTIuNjM3IDMuODcyLTE5LjM2MmwtMTkuNTM4LTgwLjMyM2MtMy4wMTctMTIuNDA0LTE1LjE4My0yMC4wMTMtMjcuNjkzLTE3LjMyOS0zMC4wOTQgNi40NjYtNTkuNzg3IDE1LjU5NC04OC4yNTYgMjcuMTMtMTkuNzY4IDguMDEtMzkuMjU5IDE3LjMxMy01Ny45MzIgMjcuNjUxem0xMDcuMjY2IDYwLjk2OS02Ny40MyA0LjQzM3YtMTcuNjgxYzAtLjIzOC4yMDItLjQ0LjQ0LS40NGg2Ni41NWMuMjQzIDAgLjQ0LjE5Ny40NC40NHptNDIuMDcxLTEwMS4wODVjLjYxMy0uMTMyIDEuMjIzLS4xOTUgMS44MjMtLjE5NSAzLjgxNCAwIDcuMjEgMi41NTkgOC4xNDUgNi40MDNsMTkuNTM4IDgwLjMyM2MuNTk1IDIuNDQ2LjEwMiA0LjkxMS0xLjM4OCA2Ljk0LTEuNDkyIDIuMDMyLTMuNjk5IDMuMjQyLTYuMjE1IDMuNDA4bC00OC45NzQgMy4yMTl2LTEyLjI2MWMwLTguNTE0LTYuOTI2LTE1LjQ0LTE1LjQ0LTE1LjQ0aC02Ni41NWMtOC41MTQgMC0xNS40NCA2LjkyNy0xNS40NCAxNS40NHYxOC42NjdsLTEuODUuMTIyYy03Ljk1Ny41MTgtMTUuNTUyLTIuMTkyLTIxLjM3NS03LjY0NS01LjgxOS01LjQ0OS05LjAyNC0xMi44MzktOS4wMjQtMjAuODA5IDAtMTAuMzY3IDUuNjI0LTE5LjkyMSAxNC42NzctMjQuOTMzIDE4LjE0OC0xMC4wNDcgMzcuMDktMTkuMDg4IDU2LjMwMS0yNi44NzMgMjcuNjY2LTExLjIxMSA1Ni41MjUtMjAuMDgzIDg1Ljc3Mi0yNi4zNjZ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Gle="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDM1LjIgMzI0LjI2N2gtMTAuOTA2Yy0zLjAyNC01LjI2My04LjYyNC04LjUxNS0xNC42OTQtOC41MzN2LTE3LjA2N2MwLTkuNDI2LTcuNjQxLTE3LjA2Ny0xNy4wNjctMTcuMDY3aC0xNy4wNjdjLTkuNDI2IDAtMTcuMDY3IDcuNjQxLTE3LjA2NyAxNy4wNjd2MTcuMDY3Yy02LjA3LjAxOC0xMS42NyAzLjI3LTE0LjY5NCA4LjUzM2gtMjMyLjc3MmMtMTQuMTM4IDAtMjUuNi0xMS40NjItMjUuNi0yNS42czExLjQ2Mi0yNS42IDI1LjYtMjUuNmgzNi41MDZjMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDYyLjEwNmMxNC4xMzggMCAyNS42LTExLjQ2MiAyNS42LTI1LjZzLTExLjQ2Mi0yNS42LTI1LjYtMjUuNmgtNjIuMTA2Yy0zLjAyNC01LjI2My04LjYyNC04LjUxNS0xNC42OTQtOC41MzN2LTE3LjA2N2MwLTkuNDI2LTcuNjQxLTE3LjA2Ny0xNy4wNjctMTcuMDY3aC0xNy4wNjZjLTkuNDI2IDAtMTcuMDY3IDcuNjQxLTE3LjA2NyAxNy4wNjd2MTcuMDY3Yy02LjA3LjAxOC0xMS42NyAzLjI3LTE0LjY5NCA4LjUzM2gtMzYuNTA2Yy00Mi40MTUgMC03Ni44IDM0LjM4NS03Ni44IDc2LjhzMzQuMzg1IDc2LjggNzYuOCA3Ni44aDIzMi43NzJjMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDEwLjkwN2MxNC4xMzggMCAyNS42IDExLjQ2MiAyNS42IDI1LjZzLTExLjQ2MiAyNS42LTI1LjYgMjUuNmgtMzA5LjU3MmMtMy4wMjQtNS4yNjMtOC42MjQtOC41MTUtMTQuNjk0LTguNTMzdi0xNy4wNjdjMC05LjQyNi03LjY0MS0xNy4wNjctMTcuMDY3LTE3LjA2N2gtMTcuMDY3Yy05LjQyNiAwLTE3LjA2NyA3LjY0MS0xNy4wNjcgMTcuMDY3djE3LjA2N2MtNi4wNy4wMTgtMTEuNjcgMy4yNy0xNC42OTQgOC41MzNoLTE5LjQzOWMtMTQuMTM4IDAtMjUuNiAxMS40NjItMjUuNiAyNS42czExLjQ2MiAyNS42IDI1LjYgMjUuNmgxOS40MzljMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDMwOS41NzNjNDIuNDE1IDAgNzYuOC0zNC4zODUgNzYuOC03Ni44cy0zNC4zODUtNzYuOC03Ni44LTc2Ljh6bS01OS43MzMtMjUuNmgxNy4wNjd2MTcuMDY3aC0xNy4wNjd6bS03Ni44LTUxLjJjMCA0LjcxMy0zLjgyMSA4LjUzMy04LjUzMyA4LjUzM2gtNTkuNzM0di0xNy4wNjdoNTkuNzMzYzQuNzEzIDAgOC41MzQgMy44MjEgOC41MzQgOC41MzR6bS0xMTkuNDY3LTUxLjJoMTcuMDY3djE3LjA2N2gtMTcuMDY3em0tOC41MzMgMzQuMTMzaDQyLjY2N3YzNC4xMzNoLTUxLjJ2LTM0LjEzM3ptLTExOS40NjcgNjguMjY3Yy4wMzgtMzIuOTc0IDI2Ljc1OS01OS42OTYgNTkuNzMzLTU5LjczM2gzNC4xMzN2MTcuMDY2aC0zNC4xMzNjLTIzLjU2NCAwLTQyLjY2NyAxOS4xMDMtNDIuNjY3IDQyLjY2N3MxOS4xMDMgNDIuNjY3IDQyLjY2NyA0Mi42NjdoMjMwLjR2MTcuMDY2aC0yMzAuNGMtMzIuOTc0LS4wMzgtNTkuNjk1LTI2Ljc1OS01OS43MzMtNTkuNzMzem0zMDcuMiA2OC4yNjZ2LTM0LjEzM2g1MS4ydjM0LjEzM3ptLTI4MS42IDM0LjEzNGgxNy4wNjd2MTcuMDY3aC0xNy4wNjd6bS01OS43MzMgNTEuMmMwLTQuNzEzIDMuODIxLTguNTMzIDguNTMzLTguNTMzaDE3LjA2N3YxNy4wNjZoLTE3LjA2N2MtNC43MTMgMC04LjUzMy0zLjgyLTguNTMzLTguNTMzem00Mi42NjYgMTcuMDY2di0zNC4xMzNoNTEuMnYzNC4xMzN6bTM3NS40NjctOC41MzNoLTMwNy4ydi0xNy4wNjdoMzA3LjJjMjMuNTY0IDAgNDIuNjY3LTE5LjEwMyA0Mi42NjctNDIuNjY3cy0xOS4xMDMtNDIuNjY3LTQyLjY2Ny00Mi42NjdoLTguNTMzdi0xNy4wNjdoOC41MzNjMzIuOTkgMCA1OS43MzMgMjYuNzQ0IDU5LjczMyA1OS43MzNzLTI2Ljc0MyA1OS43MzUtNTkuNzMzIDU5LjczNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4Ny43MzMgMTYyLjEzM2M0LjcxMyAwIDguNTMzLTMuODIxIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyMS04LjUzMy04LjUzMy04LjUzMy00LjcxMyAwLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEzIDMuODIxIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg3LjczMyAxMTAuOTMzYzQuNzEzIDAgOC41MzMtMy44MjEgOC41MzMtOC41MzN2LTE3LjA2N2MwLTQuNzEzLTMuODIxLTguNTMzLTguNTMzLTguNTMzLTQuNzEzIDAtOC41MzMgMy44MjEtOC41MzMgOC41MzN2MTcuMDY3YzAgNC43MTMgMy44MjEgOC41MzMgOC41MzMgOC41MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xODcuNzMzIDU5LjczM2M0LjcxMyAwIDguNTMzLTMuODIxIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyMS04LjUzMy04LjUzMy04LjUzMy00LjcxMyAwLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEzIDMuODIxIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTU0Ljc0MyAxNTcuODY3YzEuNTEzIDIuNjYyIDQuMzM3IDQuMzA5IDcuMzk5IDQuMzE2czUuODkzLTEuNjI4IDcuNDE4LTQuMjgzIDEuNTExLTUuOTI0LS4wMzgtOC41NjZsLTguNTMzLTE0Ljc4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI5LjE0MyAxMTMuNDkzYzEuNTEzIDIuNjYyIDQuMzM3IDQuMzA5IDcuMzk5IDQuMzE2czUuODkzLTEuNjI4IDcuNDE4LTQuMjgzIDEuNTExLTUuOTI0LS4wMzgtOC41NjZsLTguNTMzLTE0Ljc4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAzLjU0MyA2OS4xODhjMi4zNzIgNC4wNDcgNy41NjYgNS40MiAxMS42MjggMy4wNzQgNC4wNjItMi4zNDUgNS40Ny03LjUzIDMuMTUxLTExLjYwOGwtOC41MzMtMTQuNzg4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjA5LjA2NyAxNjAuOTljNC4wODEgMi4zNTYgOS4zLjk1OCAxMS42NTctMy4xMjNsOC41MzMtMTQuNzhjMS41NDktMi42NDIgMS41NjMtNS45MTEuMDM4LTguNTY2cy00LjM1Ni00LjI5LTcuNDE4LTQuMjgzLTUuODg2IDEuNjU0LTcuMzk5IDQuMzE2bC04LjUzMyAxNC43OGMtMi4zNTggNC4wODEtLjk2IDkuMjk5IDMuMTIyIDExLjY1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzNC42NjcgMTE2LjY1MWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43OGMxLjU0OS0yLjY0MiAxLjU2My01LjkxMS4wMzgtOC41NjZzLTQuMzU2LTQuMjktNy40MTgtNC4yODMtNS44ODYgMS42NTQtNy4zOTkgNC4zMTZsLTguNTMzIDE0Ljc4Yy0yLjM1OCA0LjA4LS45NiA5LjI5OSAzLjEyMiAxMS42NTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjAuMjY3IDcyLjMxMWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43ODhjMS41NDktMi42NDIgMS41NjMtNS45MTEuMDM4LTguNTY2cy00LjM1Ni00LjI5LTcuNDE4LTQuMjgzLTUuODg2IDEuNjU0LTcuMzk5IDQuMzE2bC04LjUzMyAxNC43ODhjLTIuMzU4IDQuMDgxLS45NiA5LjMgMy4xMjIgMTEuNjU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzg0IDI3My4wNjdjNC43MTMgMCA4LjUzMy0zLjgyIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyLTguNTMzLTguNTMzLTguNTMzcy04LjUzMyAzLjgyMS04LjUzMyA4LjUzM3YxNy4wNjdjMCA0LjcxMiAzLjgyIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzg0IDIyMS44NjdjNC43MTMgMCA4LjUzMy0zLjgyMSA4LjUzMy04LjUzM3YtMTcuMDY3YzAtNC43MTMtMy44Mi04LjUzMy04LjUzMy04LjUzM3MtOC41MzMgMy44MjEtOC41MzMgOC41MzN2MTcuMDY3YzAgNC43MTIgMy44MiA4LjUzMyA4LjUzMyA4LjUzM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAxNzAuNjY3YzQuNzEzIDAgOC41MzMtMy44MjEgOC41MzMtOC41MzN2LTE3LjA2N2MwLTQuNzEzLTMuODItOC41MzMtOC41MzMtOC41MzNzLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEyIDMuODIgOC41MzMgOC41MzMgOC41MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNTEuMDEgMjY4LjhjMi4zNzIgNC4wNDcgNy41NjYgNS40MiAxMS42MjggMy4wNzQgNC4wNjItMi4zNDUgNS40Ny03LjUzIDMuMTUxLTExLjYwOGwtOC41MzMtMTQuNzhjLTEuNTE0LTIuNjYyLTQuMzM3LTQuMzA5LTcuMzk5LTQuMzE2cy01Ljg5MyAxLjYyOC03LjQxOCA0LjI4My0xLjUxMSA1LjkyNC4wMzggOC41NjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjUuNDEgMjI0LjQyN2MxLjUxNCAyLjY2MiA0LjMzNyA0LjMwOSA3LjM5OSA0LjMxNnM1Ljg5My0xLjYyOCA3LjQxOC00LjI4MyAxLjUxMS01LjkyNC0uMDM4LTguNTY2bC04LjUzMy0xNC43OGMtMS41MTQtMi42NjItNC4zMzctNC4zMDktNy4zOTktNC4zMTZzLTUuODkzIDEuNjI4LTcuNDE4IDQuMjgzLTEuNTExIDUuOTI0LjAzOCA4LjU2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5OS44MSAxODAuMTIyYzIuMzcyIDQuMDQ3IDcuNTY2IDUuNDIgMTEuNjI4IDMuMDc0IDQuMDYyLTIuMzQ1IDUuNDctNy41MyAzLjE1MS0xMS42MDhsLTguNTMzLTE0Ljc4OGMtMS41MTMtMi42NjItNC4zMzctNC4zMDktNy4zOTktNC4zMTZzLTUuODkzIDEuNjI4LTcuNDE4IDQuMjgzLTEuNTExIDUuOTI0LjAzOCA4LjU2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwNS4zMzMgMjcxLjkyM2M0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43OGMyLjMxOC00LjA3OC45MTEtOS4yNjItMy4xNTEtMTEuNjA4LTQuMDYyLTIuMzQ1LTkuMjU2LS45NzItMTEuNjI4IDMuMDc0bC04LjUzMyAxNC43OGMtMi4zNTcgNC4wODItLjk1OSA5LjMwMSAzLjEyMiAxMS42NTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzAuOTMzIDIyNy41ODRjNC4wODEgMi4zNTYgOS4zLjk1OCAxMS42NTctMy4xMjNsOC41MzMtMTQuNzhjMi4zMTgtNC4wNzguOTExLTkuMjYyLTMuMTUxLTExLjYwOHMtOS4yNTYtLjk3Mi0xMS42MjggMy4wNzRsLTguNTMzIDE0Ljc4Yy0yLjM1NyA0LjA4Mi0uOTU5IDkuMzAxIDMuMTIyIDExLjY1N3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1Ni41MzMgMTgzLjI0NWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43ODhjMi4zMTgtNC4wNzguOTExLTkuMjYyLTMuMTUxLTExLjYwOC00LjA2Mi0yLjM0NS05LjI1Ni0uOTcyLTExLjYyOCAzLjA3NGwtOC41MzMgMTQuNzg4Yy0yLjM1NyA0LjA4Mi0uOTU5IDkuMyAzLjEyMiAxMS42NTd6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Fle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4wMDIgNTEyLjAwMiIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzk4LjU4OSAyNDYuMzQyYy02NC42NjYtMTcuMzI4LTExNS42MDEtNjguMjY0LTEzMi45MjktMTMyLjkyOS0xLjE3MS00LjM3Mi01LjEzMy03LjQxMi05LjY1OS03LjQxMnMtOC40ODggMy4wNC05LjY1OSA3LjQxMmMtMTcuMzI4IDY0LjY2Ni02OC4yNjMgMTE1LjYwMS0xMzIuOTI5IDEzMi45MjktNC4zNzIgMS4xNzEtNy40MTIgNS4xMzMtNy40MTIgOS42NTlzMy4wNCA4LjQ4OCA3LjQxMiA5LjY1OWM2NC42NjYgMTcuMzI5IDExNS42MDEgNjguMjY0IDEzMi45MjkgMTMyLjkyOSAxLjE3MSA0LjM3MiA1LjEzMyA3LjQxMiA5LjY1OSA3LjQxMnM4LjQ4OC0zLjA0IDkuNjU5LTcuNDEyYzE3LjMyOC02NC42NjUgNjguMjY0LTExNS42MDEgMTMyLjkyOS0xMzIuOTI5IDQuMzcyLTEuMTcxIDcuNDEyLTUuMTMzIDcuNDEyLTkuNjU5cy0zLjA0LTguNDg4LTcuNDEyLTkuNjU5em0tMTQyLjU4OCAxMTkuMTc2Yy0yMS4wMzktNDkuMDk2LTYwLjQyLTg4LjQ3OC0xMDkuNTE2LTEwOS41MTcgNDkuMDk2LTIxLjAzOSA4OC40NzgtNjAuNDIgMTA5LjUxNi0xMDkuNTE3IDIxLjAzOSA0OS4wOTcgNjAuNDIgODguNDc4IDEwOS41MTcgMTA5LjUxNy00OS4wOTcgMjEuMDM5LTg4LjQ3OCA2MC40Mi0xMDkuNTE3IDEwOS41MTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjQuMDM2IDIwMC40NThjLTEuODg2LTIuNTQ1LTQuODY3LTQuMDQ3LTguMDM1LTQuMDQ3cy02LjE0OSAxLjUwMS04LjAzNSA0LjA0N2MtMTMuNDE2IDE4LjEwNy0yOS40IDM0LjA5MS00Ny41MDggNDcuNTA4LTIuNTQ1IDEuODg2LTQuMDQ3IDQuODY3LTQuMDQ3IDguMDM1czEuNTAxIDYuMTQ5IDQuMDQ3IDguMDM1YzE4LjEwOCAxMy40MTYgMzQuMDkyIDI5LjQgNDcuNTA4IDQ3LjUwOCAxLjg4NiAyLjU0NSA0Ljg2NyA0LjA0NyA4LjAzNSA0LjA0N3M2LjE0OS0xLjUwMSA4LjAzNS00LjA0N2MxMy40MTYtMTguMTA4IDI5LjQtMzQuMDkyIDQ3LjUwOC00Ny41MDggMi41NDUtMS44ODYgNC4wNDctNC44NjcgNC4wNDctOC4wMzVzLTEuNTAxLTYuMTQ5LTQuMDQ3LTguMDM1Yy0xOC4xMDgtMTMuNDE3LTM0LjA5Mi0yOS40MDEtNDcuNTA4LTQ3LjUwOHptLTguMDM1IDg4LjkwOWMtMTAuMDQtMTIuMTYyLTIxLjIwNC0yMy4zMjYtMzMuMzY2LTMzLjM2NiAxMi4xNjMtMTAuMDQgMjMuMzI2LTIxLjIwNCAzMy4zNjYtMzMuMzY2IDEwLjA0IDEyLjE2MyAyMS4yMDQgMjMuMzI2IDMzLjM2NiAzMy4zNjYtMTIuMTYyIDEwLjA0LTIzLjMyNiAyMS4yMDQtMzMuMzY2IDMzLjM2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1Ni4wMDEgNzUuOTk5YzUuNTIzIDAgMTAtNC40NzcgMTAtMTB2LTU1Ljk5OWMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHY1NS45OTljMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExNC41NzkgMTI4LjcyMWMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOS0uOTc2IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0M2wtMzkuNTk3LTM5LjU5OGMtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MyAwcy0zLjkwNSAxMC4yMzcgMCAxNC4xNDN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im03NiAyNTYuMDAxYzAtNS41MjMtNC40NzctMTAtMTAtMTBoLTU2Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwczQuNDc3IDEwIDEwIDEwaDU2YzUuNTIyIDAgMTAtNC40NzcgMTAtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTQuNTc5IDM4My4yODEtMzkuNTk4IDM5LjU5OGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQzIDEuOTUzIDEuOTUzIDQuNTEyIDIuOTI5IDcuMDcxIDIuOTI5czUuMTE5LS45NzYgNy4wNzEtMi45MjlsMzkuNTk4LTM5LjU5OGMzLjkwNS0zLjkwNSAzLjkwNS0xMC4yMzcgMC0xNC4xNDNzLTEwLjIzNy0zLjkwNi0xNC4xNDIgMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1Ni4wMDEgNDM2LjAwM2MtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHY1NS45OTljMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtNTUuOTk5YzAtNS41MjMtNC40NzctMTAtMTAtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zOTcuNDI0IDM4My4yODFjLTMuOTA1LTMuOTA0LTEwLjIzNi0zLjkwNC0xNC4xNDMgMC0zLjkwNSAzLjkwNS0zLjkwNSAxMC4yMzcgMCAxNC4xNDNsMzkuNTk3IDM5LjU5OGMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOS0uOTc3IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0M3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwMi4wMDIgMjQ2LjAwMWgtNTUuOTk5Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwczQuNDc3IDEwIDEwIDEwaDU1Ljk5OWM1LjUyMyAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM5MC4zNTMgMTMxLjY0OWMyLjU1OSAwIDUuMTE5LS45NzYgNy4wNzEtMi45MjlsMzkuNTk3LTM5LjU5OGMzLjkwNS0zLjkwNSAzLjkwNS0xMC4yMzcgMC0xNC4xNDNzLTEwLjIzNy0zLjkwNS0xNC4xNDMgMGwtMzkuNTk3IDM5LjU5OGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQzIDEuOTUzIDEuOTUzIDQuNTEyIDIuOTI5IDcuMDcyIDIuOTI5eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYxLjg2OCAzOC43MzVjMS4zMTQgMCAyLjY1LS4yNjEgMy45MzQtLjgxMSA1LjA3Ny0yLjE3NSA3LjQyOC04LjA1NCA1LjI1Mi0xMy4xM2wtLjAwMy0uMDA3Yy0yLjE3NS01LjA3Ni04LjA1MS03LjQyMy0xMy4xMjktNS4yNDktNS4wNzYgMi4xNzUtNy40MjYgOC4wNTgtNS4yNSAxMy4xMzQgMS42MjUgMy43OTIgNS4zMTYgNi4wNjMgOS4xOTYgNi4wNjN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjkuODQ0IDc0LjEzMSAxMy4wNTQgMzEuNTE0YzEuNTk1IDMuODUxIDUuMzE4IDYuMTc1IDkuMjQzIDYuMTc1IDEuMjc1IDAgMi41NzItLjI0NSAzLjgyMy0uNzY0IDUuMTAyLTIuMTE0IDcuNTI1LTcuOTYzIDUuNDEyLTEzLjA2NmwtMTMuMDU0LTMxLjUxNGMtMi4xMTQtNS4xMDMtNy45NjMtNy41MjctMTMuMDY2LTUuNDEycy03LjUyNiA3Ljk2NC01LjQxMiAxMy4wNjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNC41NDIgMTcwLjk0M2MxLjM1Ny42MjYgMi43ODIuOTIzIDQuMTg0LjkyMyAzLjc4IDAgNy4zOTgtMi4xNTQgOS4wODYtNS44MTIgMi4zMTQtNS4wMTQuMTI1LTEwLjk1Ni00Ljg4OS0xMy4yN2wtLjAwNi0uMDAzYy01LjAxMy0yLjMxNS0xMC45NTItLjEyNS0xMy4yNjcgNC44OTEtMi4zMTYgNS4wMTQtLjEyMyAxMC45NTYgNC44OTIgMTMuMjcxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjYuNDc3IDE4OC4zMjEgMzEuNTE1IDEzLjA1NGMxLjI1MS41MTkgMi41NDcuNzY0IDMuODIzLjc2NCAzLjkyNCAwIDcuNjQ3LTIuMzI1IDkuMjQzLTYuMTc2IDIuMTE0LTUuMTAzLS4zMS0xMC45NTItNS40MTItMTMuMDY1bC0zMS41MTYtMTMuMDU0Yy01LjEwMS0yLjExMy0xMC45NTIuMzEtMTMuMDY1IDUuNDEyLTIuMTE0IDUuMTAyLjMxIDEwLjk1MiA1LjQxMiAxMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDUuNjQ1IDMyOS4xMDRjNS4xMDMtMi4xMTMgNy41MjYtNy45NjMgNS40MTItMTMuMDY1LTIuMTEzLTUuMTAzLTcuOTY0LTcuNTI3LTEzLjA2NS01LjQxMmwtMzEuNTE0IDEzLjA1NGMtNS4xMDMgMi4xMTMtNy41MjYgNy45NjMtNS40MTIgMTMuMDY1IDEuNTk1IDMuODUyIDUuMzE4IDYuMTc2IDkuMjQzIDYuMTc2IDEuMjc1IDAgMi41NzItLjI0NSAzLjgyMy0uNzY0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQuNzkzIDM0MC45NDctLjAwNy4wMDNjLTUuMDc2IDIuMTc1LTcuNDI0IDguMDUzLTUuMjQ5IDEzLjEyOSAxLjYyNSAzLjc5MiA1LjMxNyA2LjA2MiA5LjE5OCA2LjA2MiAxLjMxNSAwIDIuNjUyLS4yNjEgMy45MzYtLjgxMiA1LjA3Ny0yLjE3NSA3LjQyOC04LjA1NCA1LjI1Mi0xMy4xMzEtMi4xNzQtNS4wNzUtOC4wNTMtNy40MjYtMTMuMTMtNS4yNTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjYuMDU0IDQ3NC4xOWMtNS4wMTUtMi4zMTUtMTAuOTU2LS4xMjUtMTMuMjcgNC44ODlsLS4wMDMuMDA2Yy0yLjMxNCA1LjAxNC0uMTI0IDEwLjk1MyA0Ljg5MSAxMy4yNjcgMS4zNTYuNjI2IDIuNzguOTIyIDQuMTgyLjkyMiAzLjc4MSAwIDcuNDAxLTIuMTU2IDkuMDg5LTUuODE0IDIuMzE0LTUuMDE0LjEyNS0xMC45NTUtNC44ODktMTMuMjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTUuOTYzIDQwMC45NDVjLTUuMTAxLTIuMTE0LTEwLjk1Mi4zMS0xMy4wNjUgNS40MTJsLTEzLjA1NCAzMS41MTVjLTIuMTE0IDUuMTAzLjMxIDEwLjk1MiA1LjQxMiAxMy4wNjUgMS4yNTEuNTE5IDIuNTQ3Ljc2NCAzLjgyMy43NjQgMy45MjQgMCA3LjY0Ny0yLjMyNSA5LjI0My02LjE3NmwxMy4wNTQtMzEuNTE1YzIuMTEzLTUuMTAyLS4zMTEtMTAuOTUyLTUuNDEzLTEzLjA2NXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0Ni4xOTkgNDc0LjA3OGMtNS4wNzYgMi4xNzUtNy40MjggOC4wNTQtNS4yNTIgMTMuMTNsLjAwMy4wMDdjMS42MjUgMy43OTEgNS4zMTQgNi4wNiA5LjE5MiA2LjA2IDEuMzE1IDAgMi42NTEtLjI2MSAzLjkzNy0uODEyIDUuMDc2LTIuMTc1IDcuNDI2LTguMDU4IDUuMjUtMTMuMTM0LTIuMTc0LTUuMDc2LTguMDUxLTcuNDI2LTEzLjEzLTUuMjUxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQyLjE1OCA0MzcuODcxLTEzLjA1NC0zMS41MTRjLTIuMTE0LTUuMTAzLTcuOTY1LTcuNTI3LTEzLjA2NS01LjQxMi01LjEwMyAyLjExMy03LjUyNiA3Ljk2My01LjQxMiAxMy4wNjVsMTMuMDU0IDMxLjUxNGMxLjU5NSAzLjg1MiA1LjMxOCA2LjE3NiA5LjI0MyA2LjE3NiAxLjI3NSAwIDIuNTcyLS4yNDUgMy44MjMtLjc2NCA1LjEwMi0yLjExMiA3LjUyNS03Ljk2MiA1LjQxMS0xMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00ODcuMjA4IDM0MC45NDdjLTUuMDc2LTIuMTc3LTEwLjk1NS4xNzctMTMuMTMgNS4yNTItMi4xNzYgNS4wNzcuMTc2IDEwLjk1NiA1LjI1MiAxMy4xMzFsLjAwNi4wMDNjMS4yODUuNTUgMi42MTkuODExIDMuOTMzLjgxMSAzLjg3OSAwIDcuNTY5LTIuMjcyIDkuMTk0LTYuMDY0IDIuMTc3LTUuMDc3LS4xNzgtMTAuOTU3LTUuMjU1LTEzLjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0NS41MjUgMzIzLjY4MS0zMS41MTQtMTMuMDU0Yy01LjEwMi0yLjExMy0xMC45NTEuMzEtMTMuMDY1IDUuNDEycy4zMSAxMC45NTIgNS40MTIgMTMuMDY1bDMxLjUxNCAxMy4wNTRjMS4yNTIuNTE5IDIuNTQ4Ljc2NCAzLjgyMy43NjQgMy45MjQgMCA3LjY0Ny0yLjMyNSA5LjI0My02LjE3NiAyLjExMy01LjEwMi0uMzExLTEwLjk1Mi01LjQxMy0xMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00ODMuMjc0IDE3MS44NjZjMS4zMTQgMCAyLjY1LS4yNjEgMy45MzQtLjgxMWwuMDA3LS4wMDNjNS4wNzYtMi4xNzUgNy40MjQtOC4wNTMgNS4yNDktMTMuMTI5cy04LjA2LTcuNDI3LTEzLjEzNC01LjI1Yy01LjA3NyAyLjE3NS03LjQyOCA4LjA1NC01LjI1MiAxMy4xMzEgMS42MjUgMy43OTEgNS4zMTYgNi4wNjIgOS4xOTYgNi4wNjJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MDYuMzU3IDE4Mi44OTdjLTUuMTAzIDIuMTEzLTcuNTI2IDcuOTYzLTUuNDEyIDEzLjA2NSAxLjU5NSAzLjg1MiA1LjMxOCA2LjE3NiA5LjI0MyA2LjE3NiAxLjI3NSAwIDIuNTcyLS4yNDUgMy44MjMtLjc2NGwzMS41MTQtMTMuMDU0YzUuMTAzLTIuMTEzIDcuNTI2LTcuOTYzIDUuNDEyLTEzLjA2NS0yLjExNC01LjEwMy03Ljk2My03LjUyNy0xMy4wNjYtNS40MTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNDYuMTk5IDM3LjkyM2MxLjI4NS41NTEgMi42MjEuODExIDMuOTM1LjgxMSAzLjg4IDAgNy41NzEtMi4yNzEgOS4xOTYtNi4wNjNsLjAwMy0uMDA3YzIuMTc2LTUuMDc2LS4xNzctMTAuOTUyLTUuMjUzLTEzLjEyNy01LjA3NC0yLjE3Ni0xMC45NTcuMTc5LTEzLjEzMiA1LjI1Ni0yLjE3NyA1LjA3Ni4xNzUgMTAuOTU1IDUuMjUxIDEzLjEzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzE2LjAzOSAxMTEuMDU3YzEuMjUxLjUxOSAyLjU0Ny43NjQgMy44MjMuNzY0IDMuOTI0IDAgNy42NDctMi4zMjUgOS4yNDMtNi4xNzZsMTMuMDU0LTMxLjUxNGMyLjExNC01LjEwMy0uMzEtMTAuOTUzLTUuNDEyLTEzLjA2Ni01LjEwMS0yLjExNC0xMC45NTEuMzEtMTMuMDY1IDUuNDEybC0xMy4wNTQgMzEuNTE0Yy0yLjExNSA1LjEwMi4zMDkgMTAuOTUyIDUuNDExIDEzLjA2NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Hle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MC4wMDUgNDgwLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTI0MC4wMDMsNDhjNC40MTgsMCw4LTMuNTgyLDgtOFY4YzAtNC40MTgtMy41ODItOC04LThzLTgsMy41ODItOCw4djMyQzIzMi4wMDMsNDQuNDE4LDIzNS41ODQsNDgsMjQwLjAwMyw0OHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE0MS4wNzUsMzYuNjU2bDE2LDI3LjcwNGMyLjE4NCwzLjg0MSw3LjA2OCw1LjE4NCwxMC45MDksM3M1LjE4NC03LjA2OCwzLTEwLjkwOWMtMC4wMTctMC4wMzEtMC4wMzUtMC4wNjEtMC4wNTMtMC4wOTINCgkJCQlsLTE2LTI3LjcwNGMtMi4xODQtMy44NDEtNy4wNjgtNS4xODQtMTAuOTA5LTNjLTMuODQxLDIuMTg0LTUuMTg0LDcuMDY4LTMsMTAuOTA5QzE0MS4wMzksMzYuNTk1LDE0MS4wNTcsMzYuNjI2LDE0MS4wNzUsMzYuNjU2DQoJCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNzYuNTY3LDEwNi44NzVjMC4wMywwLjAxOCwwLjA2MSwwLjAzNSwwLjA5MiwwLjA1M2wyNy43MDQsMTZjMy44MTIsMi4yMzQsOC43MTMsMC45NTYsMTAuOTQ3LTIuODU2DQoJCQkJYzIuMjM0LTMuODEyLDAuOTU2LTguNzEzLTIuODU2LTEwLjk0N2MtMC4wMy0wLjAxOC0wLjA2MS0wLjAzNS0wLjA5Mi0wLjA1M2wtMjcuNzA0LTE2Yy0zLjgxMi0yLjIzNC04LjcxMy0wLjk1Ni0xMC45NDcsMi44NTYNCgkJCQlDNzEuNDc3LDk5LjczOSw3Mi43NTUsMTA0LjY0MSw3Ni41NjcsMTA2Ljg3NXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTk2LjAwMywxOTJjMC00LjQxOC0zLjU4Mi04LTgtOGgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJDOTIuNDIxLDIwMCw5Ni4wMDMsMTk2LjQxOCw5Ni4wMDMsMTkyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA0LjQ1NiwyNjEuMDE4Yy0wLjAzMSwwLjAxOC0wLjA2MiwwLjAzNi0wLjA5MywwLjA1NGwtMjcuNzA0LDE2Yy0zLjg0MSwyLjE4My01LjE4NSw3LjA2Ny0zLjAwMiwxMC45MDgNCgkJCQljMi4xODMsMy44NDEsNy4wNjcsNS4xODUsMTAuOTA4LDMuMDAyYzAuMDMxLTAuMDE4LDAuMDYyLTAuMDM2LDAuMDkzLTAuMDU0bDI3LjcwNC0xNmMzLjg0MS0yLjE4Myw1LjE4NS03LjA2NywzLjAwMi0xMC45MDgNCgkJCQlDMTEzLjE4MSwyNjAuMTc5LDEwOC4yOTcsMjU4LjgzNSwxMDQuNDU2LDI2MS4wMTh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MDMuNDQsMjc3LjEyNmMtMC4wMzEtMC4wMTgtMC4wNjItMC4wMzYtMC4wOTMtMC4wNTRsLTI3LjcwNC0xNmMtMy44MTEtMi4yMzUtOC43MTMtMC45NTctMTAuOTQ4LDIuODU0DQoJCQkJYy0yLjIzNSwzLjgxMS0wLjk1Nyw4LjcxMywyLjg1NCwxMC45NDhjMC4wMzEsMC4wMTgsMC4wNjIsMC4wMzYsMC4wOTMsMC4wNTRsMjcuNzA0LDE2YzMuODExLDIuMjM1LDguNzEzLDAuOTU3LDEwLjk0OC0yLjg1NA0KCQkJCUM0MDguNTI5LDI4NC4yNjIsNDA3LjI1MSwyNzkuMzYxLDQwMy40NCwyNzcuMTI2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI0LjAwMywxODRoLTMyYy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDMyYzQuNDE4LDAsOC0zLjU4Miw4LThTNDI4LjQyMSwxODQsNDI0LjAwMywxODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNzEuNjUxLDEyNGMxLjQwNCwwLDIuNzg0LTAuMzcsNC0xLjA3MmwyNy43MDQtMTZjMy44NDEtMi4xODQsNS4xODQtNy4wNjgsMy0xMC45MDlzLTcuMDY4LTUuMTg0LTEwLjkwOS0zDQoJCQkJYy0wLjAzMSwwLjAxNy0wLjA2MSwwLjAzNS0wLjA5MiwwLjA1M2wtMjcuNzA0LDE2Yy0zLjgyNiwyLjIwOS01LjEzNyw3LjEwMi0yLjkyOCwxMC45MjgNCgkJCQlDMzY2LjE1MiwxMjIuNDc1LDM2OC43OTMsMTI0LDM3MS42NTEsMTI0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzExLjk5Myw2Ny4yOTFjMC4wMDMsMC4wMDIsMC4wMDYsMC4wMDQsMC4wMDksMC4wMDVjMy44MjcsMi4yMDcsOC43MiwwLjg5NCwxMC45MjctMi45MzQNCgkJCQljMC0wLjAwMSwwLjAwMS0wLjAwMiwwLjAwMS0wLjAwMmwxNi0yNy43MDRjMi4yMzUtMy44MTEsMC45NTctOC43MTMtMi44NTQtMTAuOTQ4Yy0zLjgxMS0yLjIzNS04LjcxMy0wLjk1Ny0xMC45NDgsMi44NTQNCgkJCQljLTAuMDE4LDAuMDMxLTAuMDM2LDAuMDYyLTAuMDU0LDAuMDkzbC0xNiwyNy43MDRDMzA2Ljg2Miw2MC4xODQsMzA4LjE2OSw2NS4wNzgsMzExLjk5Myw2Ny4yOTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNTYuMDAzLDMyMGM0LjQxOCwwLDgtMy41ODIsOC04di04OGgxNmMxNy42NzMsMCwzMi0xNC4zMjcsMzItMzJzLTE0LjMyNy0zMi0zMi0zMmMtMTcuNjczLDAtMzIsMTQuMzI3LTMyLDMydjE2aC0xNg0KCQkJCXYtMTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMycy0zMiwxNC4zMjctMzIsMzJzMTQuMzI3LDMyLDMyLDMyaDE2djg4YzAsNC40MTgsMy41ODIsOCw4LDhzOC0zLjU4Miw4LTh2LTg4aDE2djg4DQoJCQkJQzI0OC4wMDMsMzE2LjQxOCwyNTEuNTg0LDMyMCwyNTYuMDAzLDMyMHogTTI2NC4wMDMsMTkyYzAtOC44MzcsNy4xNjMtMTYsMTYtMTZzMTYsNy4xNjMsMTYsMTZzLTcuMTYzLDE2LTE2LDE2aC0xNlYxOTJ6DQoJCQkJIE0yMTYuMDAzLDIwOGgtMTZjLTguODM3LDAtMTYtNy4xNjMtMTYtMTZzNy4xNjMtMTYsMTYtMTZzMTYsNy4xNjMsMTYsMTZWMjA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjQ2LjIxOSw2NC4xNTJjLTcwLjYxMS0zLjM5Mi0xMzAuNjAzLDUxLjA5OS0xMzMuOTk1LDEyMS43MWMtMS45NDMsNDAuNDMyLDE1LjM1NCw3OS40LDQ2LjY0MywxMDUuMDgyDQoJCQkJYzUuNjM5LDQuNDE3LDguOTk0LDExLjEzNSw5LjEzNiwxOC4yOTZWMzI4YzAuMDQyLDEwLjEzNCw2LjQ0NSwxOS4xNSwxNiwyMi41MjhWMzYwYzAuMDIxLDUuOTIzLDIuMjQ1LDExLjYyNyw2LjI0LDE2DQoJCQkJYy04LjMyLDkuMDQ0LTguMzIsMjIuOTU2LDAsMzJjLTguODk0LDkuNzUtOC4yLDI0Ljg2NCwxLjU1LDMzLjc1OGM0LjQyOSw0LjA0LDEwLjIxNSw2LjI2OCwxNi4yMSw2LjI0Mg0KCQkJCWM0LjMwNiwwLjExMyw3Ljg4OS0zLjI4Nyw4LjAwMS03LjU5M2MwLjA0NC0xLjY4LTAuNDU2LTMuMzMtMS40MjUtNC43MDNjLTAuMjUzLTAuNDg5LTAuNTUzLTAuOTUzLTAuODk2LTEuMzg0DQoJCQkJYy0wLjY1OC0wLjYwMi0xLjQwOS0xLjA5NC0yLjIyNC0xLjQ1NmMtMC4yMzItMC4xMi0wLjQ2NC0wLjIxNi0wLjcwNC0wLjMxMmMtMC44MS0wLjI5NS0xLjY1OS0wLjQ2NS0yLjUyLTAuNTA0DQoJCQkJYy0wLjA4LDAtMC4xNTItMC4wNDgtMC4yMzItMC4wNDhjLTQuNDE4LDAtOC0zLjU4Mi04LThzMy41ODItOCw4LThoMzJjNC40MTgsMCw4LTMuNTgyLDgtOHMtMy41ODItOC04LThoLTMyDQoJCQkJYy00LjQxOCwwLTgtMy41ODItOC04czMuNTgyLTgsOC04aDMyYzQuNDE4LDAsOC0zLjU4Miw4LThzLTMuNTgyLTgtOC04aC0zMmMtNC40MTgsMC04LTMuNTgyLTgtOHYtOGg0MGM0LjQxOCwwLDgtMy41ODIsOC04DQoJCQkJcy0zLjU4Mi04LTgtOGgtNDhjLTQuNDE4LDAtOC0zLjU4Mi04LTh2LTE4Ljc2Yy0wLjEzMS0xMS45NjItNS42NC0yMy4yMy0xNS0zMC42OGMtNDcuNzg4LTM5LjI3NC01NC42ODktMTA5Ljg1Mi0xNS40MTUtMTU3LjY0DQoJCQkJYzIyLjQ2Ni0yNy4zMzYsNTYuNTI4LTQyLjQ0OCw5MS44NzEtNDAuNzZjNTkuMTA3LDMuNTE2LDEwNS41MzYsNTEuOTU3LDEwNi41NDQsMTExLjE2YzAuMjg3LDM0LjA1Mi0xNS4wMjQsNjYuMzYzLTQxLjU2LDg3LjcwNA0KCQkJCWMtOS4yOSw3LjY1Mi0xNC42MDIsMTkuMTA5LTE0LjQ0LDMxLjE0NFYzMjhjMCw0LjQxOC0zLjU4Miw4LTgsOGgtMjRjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMTZ2OA0KCQkJCWMwLDQuNDE4LTMuNTgyLDgtOCw4aC04Yy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDhjNC40MTgsMCw4LDMuNTgyLDgsOHMtMy41ODIsOC04LDhoLThjLTQuNDE4LDAtOCwzLjU4Mi04LDgNCgkJCQlzMy41ODIsOCw4LDhoOGM0LjQxOCwwLDgsMy41ODIsOCw4cy0zLjU4Miw4LTgsOGgtNDBjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzAuNjMyDQoJCQkJYy00LjQxNywxMi40OTctMTguMTI5LDE5LjA0Ny0zMC42MjYsMTQuNjNjLTMuODI2LTEuMzUyLTcuMjQ2LTMuNjUzLTkuOTQyLTYuNjg2Yy0yLjkzOC0zLjMtNy45OTYtMy41OTQtMTEuMjk2LTAuNjU2DQoJCQkJYy0zLjMsMi45MzgtMy41OTQsNy45OTYtMC42NTYsMTEuMjk2YzE0LjYzMSwxNi40ODcsMzkuODU3LDE3Ljk5Miw1Ni4zNDQsMy4zNjJjNi44MS02LjA0MywxMS4zNDktMTQuMjMyLDEyLjg2NC0yMy4yMQ0KCQkJCWMxMi41MjktMy45MTYsMTkuNTExLTE3LjI0NywxNS41OTYtMjkuNzc2Yy0xLjA0LTMuMzI5LTIuODAxLTYuMzg4LTUuMTU2LTguOTZjOC4zMi05LjA0NCw4LjMyLTIyLjk1NiwwLTMyDQoJCQkJYzMuOTk1LTQuMzczLDYuMjE5LTEwLjA3Nyw2LjI0LTE2di05LjQ3MmM5LjU1NS0zLjM3OCwxNS45NTgtMTIuMzk0LDE2LTIyLjUyOHYtMTcuODMyYy0wLjEwNy03LjE4NywzLjAwNy0xNC4wNDYsOC40ODgtMTguNjk2DQoJCQkJYzMwLjM0NC0yNC4zOTUsNDcuODUtNjEuMzM5LDQ3LjUxMi0xMDAuMjcyQzM2Ni44NDcsMTIzLjUzMiwzMTMuNzc3LDY4LjE2OSwyNDYuMjE5LDY0LjE1MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Vle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yNTUuOTk5LDBjLTc5LjA0NCwwLTE0My4zNTIsNjQuMzA4LTE0My4zNTIsMTQzLjM1M3Y3MC4xOTNjMCw0Ljc4LDMuODc5LDguNjU2LDguNjU5LDguNjU2aDQ4LjA1Nw0KCQkJYzQuNzgsMCw4LjY1Ni0zLjg3Niw4LjY1Ni04LjY1NnYtNzAuMTkzYzAtNDIuOTk4LDM0Ljk4MS03Ny45OCw3Ny45NzktNzcuOThzNzcuOTc5LDM0Ljk4Miw3Ny45NzksNzcuOTh2NzAuMTkzDQoJCQljMCw0Ljc4LDMuODgsOC42NTYsOC42NjEsOC42NTZoNDguMDU3YzQuNzgsMCw4LjY1Ni0zLjg3Niw4LjY1Ni04LjY1NnYtNzAuMTkzQzM5OS4zNTIsNjQuMzA4LDMzNS4wNDQsMCwyNTUuOTk5LDB6DQoJCQkgTTM4Mi4wNCwyMDQuODloLTMwLjc0OHYtNjEuNTM3YzAtNTIuNTQ0LTQyLjc0OC05NS4yOTItOTUuMjkxLTk1LjI5MnMtOTUuMjkxLDQyLjc0OC05NS4yOTEsOTUuMjkydjYxLjUzN2gtMzAuNzQ4di02MS41MzcNCgkJCWMwLTY5LjQ5OSw1Ni41NC0xMjYuMDQsMTI2LjAzOC0xMjYuMDRjNjkuNDk5LDAsMTI2LjA0LDU2LjU0MSwxMjYuMDQsMTI2LjA0VjIwNC44OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQxMC42MywyMDQuODlIMTAxLjM3MWMtMjAuNTA1LDAtMzcuMTg4LDE2LjY4My0zNy4xODgsMzcuMTg4djIzMi43MzRjMCwyMC41MDUsMTYuNjgzLDM3LjE4OCwzNy4xODgsMzcuMTg4SDQxMC42Mw0KCQkJYzIwLjUwNSwwLDM3LjE4Ny0xNi42ODMsMzcuMTg3LTM3LjE4OVYyNDIuMDc4QzQ0Ny44MTcsMjIxLjU3Myw0MzEuMTM1LDIwNC44OSw0MTAuNjMsMjA0Ljg5eiBNNDMwLjUwNSw0NzQuODExDQoJCQljMCwxMC45Ni04LjkxNiwxOS44NzYtMTkuODc1LDE5Ljg3NkgxMDEuMzcxYy0xMC45NiwwLTE5Ljg3Ni04LjkxNi0xOS44NzYtMTkuODc2VjI0Mi4wNzhjMC0xMC45Niw4LjkxNi0xOS44NzYsMTkuODc2LTE5Ljg3Ng0KCQkJSDQxMC42M2MxMC45NTksMCwxOS44NzUsOC45MTYsMTkuODc1LDE5Ljg3NlY0NzQuODExeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjg1LjExLDM2OS43ODFjMTAuMTEzLTguNTIxLDE1Ljk5OC0yMC45NzgsMTUuOTk4LTM0LjM2NWMwLTI0Ljg3My0yMC4yMzYtNDUuMTA5LTQ1LjEwOS00NS4xMDkNCgkJCWMtMjQuODc0LDAtNDUuMTEsMjAuMjM2LTQ1LjExLDQ1LjEwOWMwLDEzLjM4Nyw1Ljg4NSwyNS44NDQsMTYsMzQuMzY3bC05LjczMSw0Ni4zNjJjLTAuNTM1LDIuNTU0LDAuMTA4LDUuMjExLDEuNzUyLDcuMjM2DQoJCQljMS42NDUsMi4wMjMsNC4xMTMsMy4yLDYuNzIsMy4yaDYwLjczOGMyLjYwOCwwLDUuMDc2LTEuMTc2LDYuNzE5LTMuMmMxLjY0My0yLjAyNiwyLjI4Ni00LjY4MywxLjc1MS03LjIzNEwyODUuMTEsMzY5Ljc4MXoNCgkJCSBNMjcwLjg1MSwzNTguODJjLTMuMDQsMS45MzYtNC41NjUsNS41NTMtMy44MjQsOS4wODFsOC42OCw0MS4zNjZoLTM5LjQxNWw4LjY4Mi00MS4zNjNjMC43NC0zLjUyOS0wLjc4Mi03LjE0Ni0zLjgyNC05LjA4MQ0KCQkJYy04LjEwOC01LjE2LTEyLjk0OC0xMy45MTEtMTIuOTQ4LTIzLjQwNmMwLTE1LjMyNywxMi40NjktMjcuNzk2LDI3Ljc5Ny0yNy43OTZjMTUuMzI3LDAsMjcuNzk2LDEyLjQ2OSwyNy43OTYsMjcuNzk2DQoJCQlDMjgzLjc5NywzNDQuOTE0LDI3OC45NTcsMzUzLjY2MywyNzAuODUxLDM1OC44MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Zle="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00OTQuOTMzNTk0IDBoLTQ3Ny44NjcxODhjLTkuNDIxODc1LjAwNzgxMjUtMTcuMDU4NTkzNSA3LjY0NDUzMS0xNy4wNjY0MDYgMTcuMDY2NDA2djU5LjczNDM3NWMuMDA3ODEyNSA5LjQyMTg3NSA3LjY0NDUzMSAxNy4wNTQ2ODggMTcuMDY2NDA2IDE3LjA2NjQwN2gxMC44OTQ1MzJsLTI2LjgzNTkzOCA0Ni45NjQ4NDNjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTk1MzEgMS41MjczNDQgMi42Mjg5MDcgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2NDg0NGMtMS41MDc4MTIgMi42NDA2MjUtMS41IDUuODg2NzE5LjAyNzM0NCA4LjUxNTYyNSAxLjUyNzM0NCAyLjYzMjgxMyA0LjMzOTg0NCA0LjI1IDcuMzgyODEyIDQuMjVoMTkuNDI1NzgybC0yNi44MzU5MzggNDYuOTY4NzVjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4MjgxMy4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42Mjg5MDYgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2ODc1Yy0xLjUwNzgxMiAyLjY0MDYyNS0xLjUgNS44ODI4MTMuMDI3MzQ0IDguNTE1NjI1IDEuNTI3MzQ0IDIuNjI4OTA3IDQuMzM5ODQ0IDQuMjUgNy4zODI4MTIgNC4yNWgxOS40MjU3ODJsLTI2LjgzNTkzOCA0Ni45NjQ4NDRjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42MzI4MTIgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1MzkwNmgxOS40MjU3ODJsLTI2LjgzNTkzOCA0Ni45NjQ4NDRjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42MzI4MTMgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2ODc1Yy0xLjUwNzgxMiAyLjY0MDYyNS0xLjUgNS44ODI4MTMuMDI3MzQ0IDguNTE1NjI1IDEuNTI3MzQ0IDIuNjI4OTA2IDQuMzM5ODQ0IDQuMjUgNy4zODI4MTIgNC4yNWg0OTQuOTI5Njg4YzMuMDQyOTY4IDAgNS44NTU0NjgtMS42MjEwOTQgNy4zODI4MTItNC4yNSAxLjUyNzM0NC0yLjYzMjgxMiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45Njg3NWgxOS40MjU3ODJjMy4wNDI5NjggMCA1Ljg1NTQ2OC0xLjYxNzE4NyA3LjM4MjgxMi00LjI1IDEuNTI3MzQ0LTIuNjI4OTA2IDEuNTM1MTU2LTUuODc1LjAyNzM0NC04LjUxNTYyNWwtMjYuODM1OTM4LTQ2Ljk2NDg0NGgxOS40MjU3ODJjMy4wNDI5NjgtLjAwMzkwNiA1Ljg1NTQ2OC0xLjYyMTA5NCA3LjM4MjgxMi00LjI1MzkwNiAxLjUyNzM0NC0yLjYyODkwNiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45NjQ4NDRoMTkuNDI1NzgyYzMuMDQyOTY4IDAgNS44NTU0NjgtMS42MjEwOTMgNy4zODI4MTItNC4yNSAxLjUyNzM0NC0yLjYzMjgxMiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45Njg3NWgxOS40MjU3ODJjMy4wNDI5NjggMCA1Ljg1NTQ2OC0xLjYyMTA5NCA3LjM4MjgxMi00LjI1IDEuNTI3MzQ0LTIuNjMyODEyIDEuNTM1MTU2LTUuODc1LjAyNzM0NC04LjUxNTYyNWwtMjYuODM1OTM4LTQ2Ljk2ODc1aDE5LjQyNTc4MmMzLjA0Mjk2OCAwIDUuODU1NDY4LTEuNjE3MTg3IDcuMzgyODEyLTQuMjUgMS41MjczNDQtMi42Mjg5MDYgMS41MzUxNTYtNS44NzUuMDI3MzQ0LTguNTE1NjI1bC0yNi44MzU5MzgtNDYuOTY0ODQ0aDE5LjQyNTc4MmMzLjA0Mjk2OCAwIDUuODU1NDY4LTEuNjIxMDkzIDcuMzgyODEyLTQuMjUgMS41MjczNDQtMi42MzI4MTIgMS41MzUxNTYtNS44Nzg5MDYuMDI3MzQ0LTguNTE5NTMxbC0yNi44MzU5MzgtNDYuOTY0ODQzaDEwLjg5NDUzMmM5LjQyMTg3NS0uMDExNzE5IDE3LjA1NDY4Ny03LjY0NDUzMiAxNy4wNjY0MDYtMTcuMDY2NDA3di01OS43MzQzNzVjLS4wMTE3MTktOS40MjE4NzUtNy42NDQ1MzEtMTcuMDU0Njg3Mi0xNy4wNjY0MDYtMTcuMDY2NDA2em0tNDQ3LjMxNjQwNiA5My44NjcxODhoNDYuMjV2NDIuNjY3OTY4aC03MC42Mjg5MDd6bTMxOS4zMTY0MDYgMHY0Mi42Njc5NjhoLTIyMS44NjcxODh2LTQyLjY2Nzk2OHptNjguMjY1NjI1IDB2NDIuNjY3OTY4aC0xNy4wNjY0MDd2LTQyLjY2Nzk2OHptLTI5MC4xMzI4MTMgMzQxLjMzMjAzMXYtNDIuNjY0MDYzaDIyMS44NjcxODh2NDIuNjY0MDYzem0yMjEuODY3MTg4IDE3LjA2NjQwNnY0Mi42Njc5NjloLTIyMS44NjcxODh2LTQyLjY2Nzk2OXptMC0yNTZoLTIyMS44NjcxODh2LTQyLjY2NDA2M2gyMjEuODY3MTg4em0xNy4wNjY0MDYtNDIuNjY0MDYzaDE3LjA2NjQwNnY0Mi42NjQwNjNoLTE3LjA2NjQwNnptLTIzOC45MzM1OTQgMTYyLjEzMjgxM3YtNDIuNjY3OTY5aDIyMS44NjcxODh2NDIuNjY3OTY5em0yMjEuODY3MTg4IDE3LjA2NjQwNnY0Mi42NjQwNjNoLTIyMS44NjcxODh2LTQyLjY2NDA2M3ptLTIyMS44NjcxODgtNzYuODAwNzgxdi00Mi42Njc5NjloMjIxLjg2NzE4OHY0Mi42Njc5Njl6bS0xNy4wNjY0MDYtNTkuNzM0Mzc1aC0xNy4wNjY0MDZ2LTQyLjY2NDA2M2gxNy4wNjY0MDZ6bTAgMTcuMDY2NDA2djQyLjY2Nzk2OWgtMTcuMDY2NDA2di00Mi42Njc5Njl6bTAgNTkuNzM0Mzc1djQyLjY2Nzk2OWgtMTcuMDY2NDA2di00Mi42Njc5Njl6bTAgNTkuNzM0Mzc1djQyLjY2NDA2M2gtMTcuMDY2NDA2di00Mi42NjQwNjN6bTAgNTkuNzM0Mzc1djQyLjY2NDA2M2gtMTcuMDY2NDA2di00Mi42NjQwNjN6bTI1NiAwaDE3LjA2NjQwNnY0Mi42NjQwNjNoLTE3LjA2NjQwNnptMC0xNy4wNzAzMTJ2LTQyLjY2NDA2M2gxNy4wNjY0MDZ2NDIuNjY0MDYzem0wLTU5LjczMDQ2OXYtNDIuNjY3OTY5aDE3LjA2NjQwNnY0Mi42Njc5Njl6bTAtNTkuNzM0Mzc1di00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMzQuMTMyODEyLTQyLjY2Nzk2OWgxNy4wNjY0MDd2NDIuNjY3OTY5aC0xNy4wNjY0MDd6bTAtMTcuMDY2NDA2di00Mi42NjQwNjNoMTcuMDY2NDA3djQyLjY2NDA2M3ptLTE3LjA2NjQwNi01OS43MzA0NjloLTE3LjA2NjQwNnYtNDIuNjY3OTY4aDE3LjA2NjQwNnptLTI3My4wNjY0MDYgMGgtMTcuMDY2NDA2di00Mi42Njc5NjhoMTcuMDY2NDA2em0tODAuMzgyODEyIDE3LjA2NjQwNmg0Ni4yNXY0Mi42NjQwNjNoLTcwLjYyODkwN3ptMCA1OS43MzA0NjloNDYuMjV2NDIuNjY3OTY5aC03MC42Mjg5MDd6bTAgNTkuNzM0Mzc1aDQ2LjI1djQyLjY2Nzk2OWgtNzAuNjI4OTA3em0wIDU5LjczNDM3NWg0Ni4yNXY0Mi42NjQwNjNoLTcwLjYyODkwN3ptMCA1OS43MzQzNzVoNDYuMjV2NDIuNjY0MDYzaC03MC42Mjg5MDd6bTAgNTkuNzMwNDY5aDQ2LjI1djQyLjY2Nzk2OWgtNzAuNjI4OTA3em02My4zMTY0MDYgNDIuNjY3OTY5di00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMjczLjA2NjQwNiAwdi00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMTA0Ljc1NzgxMiAwaC03MC42MjV2LTQyLjY2Nzk2OWg0Ni4yNXptMC01OS43MzQzNzVoLTcwLjYyNXYtNDIuNjY0MDYzaDQ2LjI1em0wLTU5LjczNDM3NWgtNzAuNjI1di00Mi42NjQwNjNoNDYuMjV6bTAtNTkuNzMwNDY5aC03MC42MjV2LTQyLjY2Nzk2OWgxNy4wNjY0MDd2MTcuMDY2NDA2YzAgNC43MTQ4NDQgMy44MjAzMTIgOC41MzUxNTcgOC41MzUxNTYgOC41MzUxNTcgNC43MTA5MzcgMCA4LjUzMTI1LTMuODIwMzEzIDguNTMxMjUtOC41MzUxNTd2LTE3LjA2NjQwNmgxMi4xMTcxODd6bTAtNTkuNzM0Mzc1aC0zNi40OTIxODd2LTQyLjY2Nzk2OWgxMi4xMTcxODd6bTAtNTkuNzM0Mzc1aC0zNi40OTIxODd2LTQyLjY2NDA2M2gxMi4xMTcxODd6bTAtNTkuNzMwNDY5aC0zNi40OTIxODd2LTQyLjY2Nzk2OGgxMi4xMTcxODd6bS0xOS40MjU3ODEtNTkuNzM0Mzc1aC00NTIuMjY1NjI1di01OS43MzQzNzVoNDc3Ljg2NzE4OGwuMDA3ODEyIDU5LjczNDM3NXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im01OS43MzQzNzUgNDIuNjY3OTY5aC0xNy4wNjY0MDZjLTQuNzE0ODQ0IDAtOC41MzUxNTcgMy44MjAzMTItOC41MzUxNTcgOC41MzEyNSAwIDQuNzE0ODQzIDMuODIwMzEzIDguNTM1MTU2IDguNTM1MTU3IDguNTM1MTU2aDE3LjA2NjQwNmM0LjcxMDkzNyAwIDguNTMxMjUtMy44MjAzMTMgOC41MzEyNS04LjUzNTE1NiAwLTQuNzEwOTM4LTMuODIwMzEzLTguNTMxMjUtOC41MzEyNS04LjUzMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0NS4wNjY0MDYgNDIuNjY3OTY5aC01MS4xOTkyMThjLTQuNzE0ODQ0IDAtOC41MzUxNTcgMy44MjAzMTItOC41MzUxNTcgOC41MzEyNSAwIDQuNzE0ODQzIDMuODIwMzEzIDguNTM1MTU2IDguNTM1MTU3IDguNTM1MTU2aDUxLjE5OTIxOGM0LjcxNDg0NCAwIDguNTM1MTU2LTMuODIwMzEzIDguNTM1MTU2LTguNTM1MTU2IDAtNC43MTA5MzgtMy44MjAzMTItOC41MzEyNS04LjUzNTE1Ni04LjUzMTI1em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Xle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTIzNCAyNDMuNzgzYy0uOTUxIDAtMS44NjguMTQxLTIuNzM5LjM4OWwtLjAwMi0uMDA3LTI4LjcyMiA4LjE4N2MtNS4zMTEgMS41MTQtOC4zOSA3LjA0Ny02Ljg3NiAxMi4zNTggMS4yNTMgNC4zOTYgNS4yNTggNy4yNjEgOS42MTIgNy4yNjEuOTA3IDAgMS44My0uMTI1IDIuNzQ2LS4zODVsMTUuOTgxLTQuNTU0djM1LjQybC0xMjQgMzUuMzQ1di0zNS40MmwyMS40NjQtNi4xMThjNS4zMTEtMS41MTQgOC4zOS03LjA0NyA2Ljg3Ni0xMi4zNThzLTcuMDQ1LTguMzg3LTEyLjM1OC02Ljg3NmwtMjguNzIzIDguMTg3LjAwMS4wMDdjLTQuMTg5IDEuMTkzLTcuMjYgNS4wMzktNy4yNiA5LjYxdjEyNy4xOTljLTguMzYzLTYuMjkzLTE4Ljc1Mi0xMC4wMjgtMzAtMTAuMDI4LTI3LjU3IDAtNTAgMjIuNDMtNTAgNTBzMjIuNDMgNTAgNTAgNTAgNTAtMjIuNDMgNTAtNTB2LTEwMy40MDZsMTI0LTM1LjM0NXY1Ny43MzNjLTguMzYzLTYuMjkyLTE4Ljc1Mi0xMC4wMjctMzAtMTAuMDI3LTI3LjU3IDAtNTAgMjIuNDMtNTAgNTBzMjIuNDMgNTAgNTAgNTAgNTAtMjIuNDMgNTAtNTB2LTE2Ny4xNzJjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMHptLTE4NCAyNDguMjE3Yy0xNi41NDIgMC0zMC0xMy40NTgtMzAtMzBzMTMuNDU4LTMwIDMwLTMwIDMwIDEzLjQ1OCAzMCAzMC0xMy40NTggMzAtMzAgMzB6bTE0NC00MS4wNDVjLTE2LjU0MiAwLTMwLTEzLjQ1OC0zMC0zMHMxMy40NTgtMzAgMzAtMzAgMzAgMTMuNDU4IDMwIDMwLTEzLjQ1OCAzMC0zMCAzMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwOC4wMTMgMi4wMWMtMi41MTEtMS44ODktNS43NjMtMi40ODctOC43ODItMS42MTlsLTEwNC40MDggMzAuMDg5Yy00LjI4MiAxLjIzNC03LjIzMSA1LjE1Mi03LjIzMSA5LjYwOXYxMjcuMTk5Yy04LjM2My02LjI5Mi0xOC43NTItMTAuMDI3LTMwLTEwLjAyNy0yNy41NyAwLTUwIDIyLjQzLTUwIDUwczIyLjQzIDUwIDUwIDUwIDUwLTIyLjQzIDUwLTUwdi0xMDMuNDNsOTcuMTc3LTI4LjAwNWM0LjI4Mi0xLjIzNCA3LjIzMS01LjE1MiA3LjIzMS05LjYwOXYtNTYuMjE3YzAtMy4xNDItMS40NzctNi4xMDEtMy45ODctNy45OXptLTE1MC40MjEgMjM1LjI1MWMtMTYuNTQyIDAtMzAtMTMuNDU4LTMwLTMwczEzLjQ1OC0zMCAzMC0zMCAzMCAxMy40NTggMzAgMzAtMTMuNDU4IDMwLTMwIDMwem0xMzQuNDA4LTE3OC41NjktODQuNDA4IDI0LjMyNXYtMzUuNDAzbDg0LjQwOC0yNC4zMjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NzEuNTkxIDM0OC43NjItNDguMjg4LTcuMDE3LTIxLjU5NS00My43NTZjLTEuNjg1LTMuNDEzLTUuMTYxLTUuNTc0LTguOTY3LTUuNTc0cy03LjI4MyAyLjE2MS04Ljk2NyA1LjU3NGwtMjEuNTk1IDQzLjc1Ni00OC4yODggNy4wMTdjLTMuNzY3LjU0Ny02Ljg5NiAzLjE4Ni04LjA3MyA2LjgwNnMtLjE5NSA3LjU5NCAyLjUzMSAxMC4yNTFsMzQuOTQxIDM0LjA2LTguMjQ5IDQ4LjA5M2MtLjY0NCAzLjc1MS44OTggNy41NDMgMy45NzggOS43ODEgMy4wNzkgMi4yMzYgNy4xNjIgMi41MzIgMTAuNTMxLjc2MWw0My4xOS0yMi43MDcgNDMuMTkgMjIuNzA2YzEuNDYzLjc3IDMuMDYxIDEuMTQ5IDQuNjUyIDEuMTQ5IDIuMDczIDAgNC4xMzctLjY0NCA1Ljg3OS0xLjkxIDMuMDgtMi4yMzcgNC42MjItNi4wMjkgMy45NzgtOS43ODFsLTguMjQ5LTQ4LjA5MyAzNC45NDEtMzQuMDZjMi43MjYtMi42NTcgMy43MDctNi42MzEgMi41MzEtMTAuMjUxcy00LjMwNC02LjI1OC04LjA3MS02LjgwNXptLTQ3LjEyNCA0MC40NjRjLTIuMzU3IDIuMjk3LTMuNDMzIDUuNjA3LTIuODc2IDguODUxbDUuNzEyIDMzLjMwNC0yOS45MDktMTUuNzI0Yy0yLjkxMy0xLjUzMi02LjM5My0xLjUzMi05LjMwNyAwbC0yOS45MDkgMTUuNzI0IDUuNzEyLTMzLjMwNGMuNTU3LTMuMjQ0LS41MTktNi41NTQtMi44NzYtOC44NTFsLTI0LjE5Ni0yMy41ODYgMzMuNDM5LTQuODU5YzMuMjU3LS40NzMgNi4wNzMtMi41MTkgNy41MjktNS40N2wxNC45NTUtMzAuMzAxIDE0Ljk1NCAzMC4zMDFjMS40NTcgMi45NTEgNC4yNzIgNC45OTcgNy41MjkgNS40N2wzMy40MzkgNC44NTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMi42MiA5MC43MDYtNi42MiAzOC41OTNjLS42NDQgMy43NTEuODk4IDcuNTQzIDMuOTc4IDkuNzgxIDMuMDc5IDIuMjM3IDcuMTYzIDIuNTMzIDEwLjUzMS43NjFsMzQuNjU4LTE4LjIyMSAzNC42NTkgMTguMjIxYzEuNDYzLjc2OSAzLjA2MSAxLjE0OCA0LjY1MiAxLjE0OCAyLjA3MyAwIDQuMTM3LS42NDQgNS44NzktMS45MSAzLjA4LTIuMjM4IDQuNjIyLTYuMDI5IDMuOTc4LTkuNzgxbC02LjYyLTM4LjU5MyAyOC4wNC0yNy4zMzFjMi43MjYtMi42NTcgMy43MDctNi42MzEgMi41MzEtMTAuMjUxcy00LjMwNi02LjI1OC04LjA3My02LjgwNmwtMzguNzUtNS42MzEtMTcuMzI4LTM1LjExMmMtMS42ODQtMy40MTMtNS4xNi01LjU3NC04Ljk2Ny01LjU3NHMtNy4yODMgMi4xNjEtOC45NjcgNS41NzRsLTE3LjMyOSAzNS4xMTMtMzguNzUgNS42MzFjLTMuNzY3LjU0Ny02Ljg5NiAzLjE4Ni04LjA3MyA2LjgwNnMtLjE5NSA3LjU5NCAyLjUzMSAxMC4yNTF6bTI0LjMzLTMwLjk4M2MzLjI1Ny0uNDczIDYuMDczLTIuNTE5IDcuNTI5LTUuNDdsMTAuNjg4LTIxLjY1NyAxMC42ODggMjEuNjU3YzEuNDU3IDIuOTUxIDQuMjcyIDQuOTk3IDcuNTI5IDUuNDdsMjMuOSAzLjQ3My0xNy4yOTIgMTYuODU4Yy0yLjM1NyAyLjI5OC0zLjQzMyA1LjYwOC0yLjg3NiA4Ljg1Mmw0LjA4MyAyMy44MDQtMjEuMzc3LTExLjIzOGMtMS40NTctLjc2Ni0zLjA1NS0xLjE0OS00LjY1My0xLjE0OS0xLjU5OSAwLTMuMTk3LjM4My00LjY1MyAxLjE0OWwtMjEuMzc3IDExLjIzOCA0LjA4My0yMy44MDRjLjU1Ny0zLjI0NC0uNTE5LTYuNTU0LTIuODc2LTguODUybC0xNy4yOTYtMTYuODU4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjM0IDg2LjMwNmMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYxMGMwIDUuNTIzIDQuNDc3IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwdi0xMGMwLTUuNTIzLTQuNDc3LTEwLTEwLTEweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjM0IDE1Ni4zMDZjLTUuNTIzIDAtMTAgNC40NzctMTAgMTB2MTBjMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtMTBjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3NCAxMjYuMzA2aC0xMGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3NyAxMCAxMCAxMGgxMGM1LjUyMyAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE5NCAxNDYuMzA2aDEwYzUuNTIzIDAgMTAtNC40NzcgMTAtMTBzLTQuNDc3LTEwLTEwLTEwaC0xMGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3NyAxMCAxMCAxMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2MiAyODQuMzFjMi42MyAwIDUuMjEtMS4wNyA3LjA3LTIuOTNzMi45My00LjQ0IDIuOTMtNy4wN2MwLTIuNjQtMS4wNy01LjIxLTIuOTMtNy4wOC0xLjg2LTEuODYtNC40NC0yLjkyLTcuMDctMi45MnMtNS4yMSAxLjA2LTcuMDcgMi45MmMtMS44NiAxLjg3LTIuOTMgNC40NC0yLjkzIDcuMDggMCAyLjYzIDEuMDcgNS4yMSAyLjkzIDcuMDdzNC40NCAyLjkzIDcuMDcgMi45M3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Kle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUwNS40IDUwNS40Ij4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDM3LjEsMjMzLjQ1YzE0LjgtMTAuNCwyNC42LTI3LjcsMjQuNi00Ny4yYzAtMzEuOS0yNS44LTU3LjctNTcuNy01Ny43Yy0zMS45LDAtNTcuNywyNS44LTU3LjcsNTcuNw0KCQkJYzAsMTkuNSw5LjcsMzYuOCwyNC42LDQ3LjJjLTEyLjcsNC40LTI0LjMsMTEuMi0zNC4xLDIwYy0xMy41LTExLjUtMjkuNC0yMC4zLTQ2LjgtMjUuNWMyMS4xLTEyLjgsMzUuMy0zNi4xLDM1LjMtNjIuNg0KCQkJYzAtNDAuNC0zMi43LTczLjEtNzMuMS03My4xYy00MC40LDAtNzMuMSwzMi44LTczLjEsNzMuMWMwLDI2LjUsMTQuMSw0OS44LDM1LjMsNjIuNmMtMTcuMiw1LjItMzIuOSwxMy45LTQ2LjMsMjUuMg0KCQkJYy05LjgtOC42LTIxLjItMTUuMy0zMy43LTE5LjZjMTQuOC0xMC40LDI0LjYtMjcuNywyNC42LTQ3LjJjMC0zMS45LTI1LjgtNTcuNy01Ny43LTU3LjdzLTU3LjcsMjUuOC01Ny43LDU3LjcNCgkJCWMwLDE5LjUsOS43LDM2LjgsMjQuNiw0Ny4yQzI4LjUsMjQ3LjI1LDAsMjg0Ljk1LDAsMzI5LjI1djYuNmMwLDAuMiwwLjIsMC40LDAuNCwwLjRoMTIyLjNjLTAuNyw1LjUtMS4xLDExLjItMS4xLDE2Ljl2Ni44DQoJCQljMCwyOS40LDIzLjgsNTMuMiw1My4yLDUzLjJoMTU1YzI5LjQsMCw1My4yLTIzLjgsNTMuMi01My4ydi02LjhjMC01LjctMC40LTExLjQtMS4xLTE2LjlINTA1YzAuMiwwLDAuNC0wLjIsMC40LTAuNHYtNi42DQoJCQlDNTA1LjIsMjg0Ljg1LDQ3Ni44LDI0Ny4xNSw0MzcuMSwyMzMuNDV6IE0zNjIuMywxODYuMTVjMC0yMywxOC43LTQxLjcsNDEuNy00MS43czQxLjcsMTguNyw0MS43LDQxLjcNCgkJCWMwLDIyLjctMTguMyw0MS4yLTQwLjksNDEuN2MtMC4zLDAtMC41LDAtMC44LDBzLTAuNSwwLTAuOCwwQzM4MC41LDIyNy40NSwzNjIuMywyMDguOTUsMzYyLjMsMTg2LjE1eiBNMTk0LjksMTY1LjM1DQoJCQljMC0zMS41LDI1LjYtNTcuMSw1Ny4xLTU3LjFzNTcuMSwyNS42LDU3LjEsNTcuMWMwLDMwLjQtMjMuOSw1NS4zLTUzLjgsNTdjLTEuMSwwLTIuMiwwLTMuMywwYy0xLjEsMC0yLjIsMC0zLjMsMA0KCQkJQzIxOC44LDIyMC42NSwxOTQuOSwxOTUuNzUsMTk0LjksMTY1LjM1eiBNNTkuMywxODYuMTVjMC0yMywxOC43LTQxLjcsNDEuNy00MS43czQxLjcsMTguNyw0MS43LDQxLjdjMCwyMi43LTE4LjMsNDEuMi00MC45LDQxLjcNCgkJCWMtMC4zLDAtMC41LDAtMC44LDBzLTAuNSwwLTAuOCwwQzc3LjYsMjI3LjQ1LDU5LjMsMjA4Ljk1LDU5LjMsMTg2LjE1eiBNMTI1LjUsMzIwLjE1SDE2LjJjNC41LTQyLjYsNDAuNS03Niw4NC4yLTc2LjMNCgkJCWMwLjIsMCwwLjQsMCwwLjYsMHMwLjQsMCwwLjYsMGMyMC44LDAuMSwzOS44LDcuOCw1NC41LDIwLjNDMTQxLjcsMjc5Ljc1LDEzMSwyOTguOTUsMTI1LjUsMzIwLjE1eiBNMzY2LjgsMzU5Ljk1DQoJCQljMCwyMC41LTE2LjcsMzcuMi0zNy4yLDM3LjJoLTE1NWMtMjAuNSwwLTM3LjItMTYuNy0zNy4yLTM3LjJ2LTYuOGMwLTYyLjEsNDkuNi0xMTIuOSwxMTEuMy0xMTQuN2MxLjEsMC4xLDIuMywwLjEsMy40LDAuMQ0KCQkJczIuMywwLDMuNC0wLjFjNjEuNywxLjgsMTExLjMsNTIuNiwxMTEuMywxMTQuN1YzNTkuOTV6IE0zNzguNywzMjAuMTVjLTUuNS0yMS4xLTE2LTQwLTMwLjMtNTUuNmMxNC44LTEyLjgsMzQtMjAuNSw1NS0yMC43DQoJCQljMC4yLDAsMC40LDAsMC42LDBzMC40LDAsMC42LDBjNDMuNywwLjMsNzkuNywzMy43LDg0LjIsNzYuM0gzNzguN3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",qle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM2Ny4wNDMgMTcwLjQxNGMtMTAuNTE2LS4zNjUtMjAuMDE2LTUuMDQ3LTI2Ljc0OS0xMy4xODEtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC02LjczMyA4LjEzNS0xNi4yMzMgMTIuODE2LTI2Ljc0OSAxMy4xODItNC4xNC4xNDQtNy4zNzkgMy42MTYtNy4yMzQgNy43NTYuMTQ0IDQuMTQgMy41OTQgNy4zNzEgNy43NTYgNy4yMzUgMTMuNTY2LS40NzIgMjYuMzg2LTYuMzI4IDM1LjY0Ni0xNi4xODcgMjAuMjc2IDIxLjYyOSA1NC41NjkgMjEuNjU3IDc0Ljg3NS4wMDEgMjAuMjc4IDIxLjYyOSA1NC41NzEgMjEuNjU0IDc0Ljg3NC0uMDAxIDkuMjYyIDkuODU5IDIyLjA4IDE1LjcxNSAzNS42NDcgMTYuMTg3IDQuMTIxLjE0OSA3LjYxMy0zLjA5NSA3Ljc1Ni03LjIzNS4xNDUtNC4xNC0zLjA5NC03LjYxMi03LjIzNC03Ljc1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MC4yOTQgMjE4Ljc1N2MtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NiAxNy42MzYtNDEuNDYxIDE3LjYwNy01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTk2IDE3LjYzOS00MS40NjEgMTcuNjA2LTU2LjAzMS0uMDAxLTQuOTA0LTUuOTIyLTEzLjkyNy01LjkzOC0xOC44NDEuMDAxLTcuOTk0IDkuNjU4LTIwLjE4MiAxNC40ODQtMzIuNjEyIDEyLjkxNC00LjEtLjUxOS03Ljg2MSAyLjM4OS04LjM4MiA2LjQ5OS0uNTIxIDQuMTA5IDIuMzkgNy44NjIgNi40OTkgOC4zODIgMTYuNDgxIDIuMDg5IDMyLjY1OC0zLjc5NSA0My45MTYtMTUuODA4IDIwLjI3NyAyMS42MjggNTQuNTY4IDIxLjY1NCA3NC44NzMgMCAyMC4yNzYgMjEuNjI3IDU0LjU3IDIxLjY1NiA3NC44NzMgMCAxMS4yNTggMTIuMDEzIDI3LjQzNiAxNy44OTYgNDMuOTE1IDE1LjgwOCA0LjEwOS0uNTIgNy4wMi00LjI3MiA2LjQ5OS04LjM4MnMtNC4yODktNy4wMTktOC4zODItNi40OTljLTEyLjQzNSAxLjU2OS0yNC42MTgtMy4yNTUtMzIuNjExLTEyLjkxNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC43ODIgMTA3LjdjLTguMDgyLTEuNzAzLTE1LjE2Ny02LTIwLjQ4Ny0xMi40MjctNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC01LjMyIDYuNDI3LTEyLjQwNCAxMC43MjUtMjAuNDg2IDEyLjQyOC00LjA1NC44NTQtNi42NDcgNC44MzItNS43OTMgOC44ODVzNC44NCA2LjY0NyA4Ljg4NSA1Ljc5MmMxMC4zODMtMi4xODggMTkuNTkyLTcuMzkgMjYuODE2LTE1LjExNyAyMC4yODIgMjEuNjMxIDU0LjU3MiAyMS42NDggNzQuODcyLS4wMDEgMjAuMjc2IDIxLjYyNiA1NC41NjcgMjEuNjU2IDc0Ljg3MS4wMDIgNy4yMjYgNy43MjcgMTYuNDM2IDEyLjkzIDI2LjgxOCAxNS4xMTYgNC4wNDguODU1IDguMDMtMS43NCA4Ljg4NS01Ljc5My44NTMtNC4wNTMtMS43NDEtOC4wMzEtNS43OTMtOC44ODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01NC45ODUgNDI5LjI3M2gxNjkuNzMydjY5LjU3OWMwIDcuMjUgNS44OTggMTMuMTQ4IDEzLjE0OSAxMy4xNDhoMjUuMTkyYzcuMjUgMCAxMy4xNDgtNS44OTggMTMuMTQ4LTEzLjE0OHYtMS40NjRoNzQuMTk5djEuNDY0YzAgNy4yNSA1Ljg5OCAxMy4xNDggMTMuMTQ5IDEzLjE0OGgyNS4xOTJjNy4yNSAwIDEzLjE0OC01Ljg5OCAxMy4xNDgtMTMuMTQ4di02OS41NzloNTUuMTE5YzI0LjEyMSAwIDQzLjA4MS0yMC44ODYgNDAuNjU3LTQ0Ljk1Ni0uMDA0LS4wNC0uMDA4LS4wOC0uMDEzLS4xMmwtMTMuMDM1LTExMS41NjdjLS40ODEtNC4xMTQtNC4yMTUtNy4wNjItOC4zMTktNi41NzktNC4xMTQuNDgxLTcuMDYgNC4yMDYtNi41NzkgOC4zMmwxMy4wMyAxMTEuNTAzYzEuNDYgMTQuODMzLTEwLjA5NCAyOC4zOTgtMjUuNzM4IDI4LjM5OGgtNTUuMTE5di0xOS4wNThoNDQuOTM3YzkuNDcgMCAxNi44OC04LjE5MSAxNS45MzUtMTcuNjE2LS4wMDUtLjA0My0uMDEtLjA4Ni0uMDE1LS4xMjlsLTM4Ljc1Ni0zMjkuMDc0Yy0uODYxLTguMTc5LTcuNjk1LTE0LjMzNy0xNS45MjctMTQuMzM3aC0xMzQuNTcxYy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDEzNC41NzFjLjUyMyAwIC45NTcuMzkzIDEuMDEuOTE0LjAwNC4wNDIuMDA5LjA4My4wMTQuMTI1bDM4Ljc1IDMyOS4wMzRjLjAxOS4yNzUtLjA3NC41NDctLjI2Ljc1MS0uMTkxLjIxMi0uNDY2LjMzMy0uNzUyLjMzM2gtNDQuOTM3di0yMi44OTJjMC0zOS40NzctMzIuMjU2LTcwLjM0NC03MC4zNDUtNzAuMzQ0LTI2Ljc3OCAwLTUwLjk0NyAxNS4xODktNjIuODM5IDM4Ljc0NC0xMi4wMDgtMjMuNzcyLTM2LjcyNS0zOS4yNS02NC4yMDYtMzguNzMxLTM3LjcuNzA5LTY4Ljk4OCAzMS41OTMtNjguOTg4IDcwLjMzMnYyMi44OTJoLTcwLjM1MmMtLjI4NiAwLS41Ni0uMTIyLS43NTMtLjMzNS0uMTg1LS4yMDQtLjI3Ny0uNDc2LS4yNTktLjc1MWwzOC43NTItMzI5LjAzMmMuMDA1LS4wNDIuMDEtLjA4NC4wMTQtLjEyNy4wNTMtLjUyLjQ4Ni0uOTEyIDEuMDEtLjkxMmgxMzQuNTdjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEzNC41N2MtOC4yMzMgMC0xNS4wNjcgNi4xNi0xNS45MjcgMTQuMzM5bC0zOC43NTcgMzI5LjA3M2MtLjAwNS4wNDMtLjAxLjA4Ni0uMDE1LjEyOS0uOTQ2IDkuNDIyIDYuNDY0IDE3LjYxNiAxNS45MzUgMTcuNjE2aDE1OS41NTF2MTkuMDU4aC0xNjkuNzMyYy0xNC44NTIgMC0yNy4yNzktMTIuNzgyLTI1LjczOS0yOC4zOTlsNDAuNjA5LTM0Ny40ODNjLjAwNS0uMDQuMDA5LS4wOC4wMTMtLjExOSAxLjMzNi0xMy4yNjggMTIuMzk5LTIzLjI3MyAyNS43MzQtMjMuMjczaDMyMC43OThjMTMuMzM1IDAgMjQuMzk3IDEwLjAwNSAyNS43MzMgMjMuMjcyLjAwNC4wNC4wMDguMDguMDEzLjEybDIzLjQ4NyAyMDAuOTc5Yy40ODEgNC4xMTUgNC4yMTcgNy4wNjMgOC4zMTkgNi41NzkgNC4xMTQtLjQ4IDcuMDYtNC4yMDYgNi41NzktOC4zMmwtMjMuNDgtMjAwLjkyMmMtMi4xMzgtMjAuOTMyLTE5LjYwMy0zNi43MDgtNDAuNjUxLTM2LjcwOGgtMzIwLjc5OGMtMjEuMDQ5IDAtMzguNTE2IDE1Ljc3Ny00MC42NTIgMzYuNzFsLTQwLjYxIDM0Ny40ODhjLS4wMDUuMDQtLjAwOS4wOC0uMDEzLjEyLTIuNDE1IDIzLjk5OSAxNi40NjYgNDQuOTU1IDQwLjY1OCA0NC45NTV6bTI1Ny43MTMtNzEuMzAyYzAtMTAuMzI1IDguMTIyLTE5LjI4OSAxOC41LTE5LjQ4MyAxMC42ODItLjIwNCAxOS4yMDkgOC40OTEgMTkuMjA5IDE4LjgzNnYyMi44OTJoLTM3LjcwOXptLTM2LjQ5MSA3MS4zMDJoNzQuMTk5djE5LjA1OGgtNzQuMTk5em03OC4yMTUtMzQuMDU4YzUuNTY5IDAgMTAuMDE0IDQuODE4IDkuNDg0IDEwLjQzLS40NzMgNC44ODQtNC41OSA4LjYyNy05LjQ4NCA4LjYyN2gtNzguMjE1di0xOS4wNThjMjYuMTEyLjAwMSA1Mi4xNjcuMDAxIDc4LjIxNS4wMDF6bS03OC4yMTUgNjguMTE2aDc4LjIxNWM1LjUzNyAwIDEwLjAxNiA0Ljc5NiA5LjQ4NCAxMC40My0uNDcyIDQuODc0LTQuNTg3IDguNjI3LTkuNDg0IDguNjI3aC03OC4yMTV6bTExMC42OSAzMy42NjloLTIxLjQ5di0yLjIxM2MxOC4wMTQtOS4xMjcgMTguMDU0LTM0LjcwOCAwLTQzLjg1NXYtMjQuMjZjMTguMDk4LTkuMTcgMTcuOTY4LTM0Ljc1MiAwLTQzLjg1NXYtMjUuNDkzYzAtMjAuNDg2LTE4LjIwMi0zNi41MTctMzguNzk0LTMzLjQ5LTE2LjM1MyAyLjQtMjguOTE1IDE2LjUyNi0yOC45MTUgMzMuNDl2MjIuODkyaC0yMS40OXYtMjEuODM3YzAtMzAuNTUyIDI0LjQ2LTU2LjA5NCA1NC44MjItNTYuMzg2IDMxLjIxOC0uMjYyIDU1Ljg2NyAyNS4wNTggNTUuODY3IDU1LjMzMXptLTIzNi4zNzctMTE2Ljc4NXYtMjEuODM4YzAtMzIuMjI0IDI2LjY5Ni01Ny41ODMgNTcuNTg5LTU2LjM0MiAyOS40ODMgMS4yMDQgNTMuMDk5IDI1LjUwMyA1My4wOTkgNTUuMjg3djEzOS42NzdoLTIxLjQ5YzAtMTQuNDE4IDAtMTIxLjA2MyAwLTEzOS42NzcgMC0xNy45NS0xNC4wNjUtMzIuODA0LTMxLjkxNS0zMy43OTUtMTkuMjc2LTEuMDk2LTM1Ljc5MyAxNC4yNjEtMzUuNzkzIDMzLjc5NXYyMi44OTJoLTIxLjQ5em0zNi40OSAwdi0yMi4yNDVjMC05LjQyNSA2Ljc2Mi0xNy43MjQgMTUuODc3LTE5LjI0MyAxMS42MzktMS44NTIgMjEuODMgNy4yMzcgMjEuODMgMTguNTk2djIyLjg5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",eNe="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MGgtMzJ2LTgwYzAtOC44MjItNy4xNzgtMTYtMTYtMTZoLTMydi00MGMwLTEzLjIzMy0xMC43NjctMjQtMjQtMjRoLTIyNGMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0djQwaC0zMmMtOC44MjIgMC0xNiA3LjE3OC0xNiAxNnY4MGgtMzJjLTIyLjA1NiAwLTQwIDE3Ljk0NC00MCA0MHYxNzZjMCAyMi4wNTYgMTcuOTQ0IDQwIDQwIDQwaDgwdjcyYzAgMTMuMjMzIDEwLjc2NyAyNCAyNCAyNGgyMjRjMTMuMjMzIDAgMjQtMTAuNzY3IDI0LTI0di03Mmg4MGMyMi4wNTYgMCA0MC0xNy45NDQgNDAtNDB2LTE3NmMwLTIyLjA1Ni0xNy45NDQtNDAtNDAtNDB6bS00OC04MHY4MGgtMzJ2LTgwem0tMjg4LTU2YzAtNC40MTEgMy41ODktOCA4LThoMjI0YzQuNDExIDAgOCAzLjU4OSA4IDh2MTM2aC0yNDBjMC0xLjYzNSAwLTEzMC4yMTEgMC0xMzZ6bS00OCA1NmgzMnY4MGgtMzJ6bTI4OCA0MDhjMCA0LjQxMS0zLjU4OSA4LTggOGgtMjI0Yy00LjQxMSAwLTgtMy41ODktOC04di0xMzZoMjQwem0xMjAtMTEyYzAgMTMuMjMzLTEwLjc2NyAyNC0yNCAyNGgtODB2LTQ4aDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04Yy0yOC42NTcgMC0yOTAuODgzIDAtMzA0IDAtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGgxNnY0OGgtODBjLTEzLjIzMyAwLTI0LTEwLjc2Ny0yNC0yNHYtMTc2YzAtMTMuMjMzIDEwLjc2Ny0yNCAyNC0yNGg0MzJjMTMuMjMzIDAgMjQgMTAuNzY3IDI0IDI0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDU2IDE5MmMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0czEwLjc2NyAyNCAyNCAyNCAyNC0xMC43NjcgMjQtMjQtMTAuNzY3LTI0LTI0LTI0em0wIDMyYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkyIDE5MmMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0czEwLjc2NyAyNCAyNCAyNCAyNC0xMC43NjcgMjQtMjQtMTAuNzY3LTI0LTI0LTI0em0wIDMyYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQ0IDM3NmgtMTY4Yy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4aDE2OGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0NCA0MTZoLTE2OGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGgxNjhjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNDQgNDU2aC0xNjhjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDhoMTY4YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",tNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ3My41NzQgMjUyLjQzMmgtNzMuMTg0di00My43NjFjMC0xMS40NzMtOS4zMzQtMjAuODA3LTIwLjgwNy0yMC44MDctOS44ODYgMC0zNC4yOTUgMC00NC4zMDIgMHYtMTcuODQxYzAtMTIuMzk5LTEwLjA4Ny0yMi40ODYtMjIuNDg2LTIyLjQ4NmgtMTcuNTk1bDE0LjcyNC00Ny41MzVjMTYuNzU5LjY5MiAzMC41MzktMTIuNzUgMzAuNTM5LTI5LjI4NCAwLTE2LjE2NC0xMy4xNTEtMjkuMzE1LTI5LjMxNS0yOS4zMTUtMjkuMjY4IDAtNDAuNDU1IDM4LjUxLTE1LjU0MSA1NC4xNTRsLTE2LjEwMSA1MS45NzloLTMwLjEzM2MtMTAuNTc2IDAtMTkuODMxIDcuNTE0LTIyLjAwNiAxNy44NjYtLjEwNi41MDctLjE2IDEuMDI0LS4xNiAxLjU0MnYyMC45MTloLTM4LjE0NnYtMTguODAxYzAtOC42NzMtNy4wNTctMTUuNzMtMTUuNzMtMTUuNzNoLTEuMzc5di0xOS41NzJjOS40NjktLjIwMyAxNy4xMTMtNy45NTMgMTcuMTEzLTE3LjQ3di0xNS42MTZjMC05LjUxNy03LjY0NC0xNy4yNjctMTcuMTEzLTE3LjQ3di00My42OTljMC0yMS42OTUtMTcuNjUtMzkuMzQ2LTM5LjM0Ni0zOS4zNDZoLTUxLjY3N2MtNC4xNCAwLTcuNDk1IDMuMzU2LTcuNDk1IDcuNDk1czMuMzU2IDcuNDk1IDcuNDk1IDcuNDk1aDUxLjY3OGMxMy40MjkgMCAyNC4zNTUgMTAuOTI2IDI0LjM1NSAyNC4zNTV2NDMuNjgyaC0zNy45NTd2LTIyLjU4NGMwLTQuMTQtMy4zNTYtNy40OTUtNy40OTUtNy40OTVoLTk2LjJ2LTM3Ljk1N2gzNS42MzhjNC4xNCAwIDcuNDk1LTMuMzU2IDcuNDk1LTcuNDk1cy0zLjM1NS03LjQ5NS03LjQ5NS03LjQ5NWgtNDMuMTMzYy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2NTIuOTQ3YzAgNC4xNCAzLjM1NiA3LjQ5NSA3LjQ5NSA3LjQ5NWg5Ni4ydjE1LjEwOWMtOS40NjguMjAzLTE3LjExMiA3Ljk1NC0xNy4xMTIgMTcuNDd2MTUuNjE2YzAgOS41MTYgNy42NDQgMTcuMjY3IDE3LjExMiAxNy40N3YxOS41NzJoLTEuMzc5Yy04LjY3MyAwLTE1LjczIDcuMDU3LTE1LjczIDE1LjczdjE4LjgwMWgtMjIuNTU1Yy0xMS40NzMgMC0yMC44MDcgOS4zMzQtMjAuODA3IDIwLjgwN3YyLjQ4OWwtMzMuNDAyIDcuNTg5Yy0zLjQxMy43NzUtNS44MzUgMy44MDktNS44MzUgNy4zMDl2MTA3LjI0M2MwIDMuNDk5IDIuNDIxIDYuNTMzIDUuODMzIDcuMzA4bDMzLjQwNCA3LjU5OHYyLjQ4N2MwIDExLjQ3MyA5LjMzNCAyMC44MDcgMjAuODA3IDIwLjgwN2g2LjQyNHYyNy43OTloLTE1LjEyN2MtNC4xNCAwLTcuNDk1IDMuMzU2LTcuNDk1IDcuNDk1IDAgNC4xNCAzLjM1NiA3LjQ5NSA3LjQ5NSA3LjQ5NWgzMzMuODQ5YzEuMzc4IDAgMi40OTggMS4xMjEgMi40OTggMi40OTh2MjUuNTJjLTE1LjgzNi0yLjgzLTMyLjQxOC4xMDMtNDYuNzA3IDguODExLTE2Ljc1NCAxMC4yMTEtMzcuNTcgMTAuMjEyLTU0LjMyNCAwLTIxLjU2Ny0xMy4xNDQtNDguMzYxLTEzLjE0NS02OS45MjggMC0xNi43NTQgMTAuMjExLTM3LjU3IDEwLjIxMi01NC4zMjQgMC0yMS41NjctMTMuMTQ0LTQ4LjM2MS0xMy4xNDUtNjkuOTI4IDAtMTYuNzU0IDEwLjIxMi0zNy41NyAxMC4yMTItNTQuMzI0IDBsLTI3LjQ2OS0xNi43NDJ2LTIwLjA4N2gxMC42NzZjNC4xNCAwIDcuNDk1LTMuMzU2IDcuNDk1LTcuNDk1cy0zLjM1Ni03LjQ5NS03LjQ5NS03LjQ5NWgtMTguMTcyYy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2OTcuNTQ5YzAgNC4xMzkgMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNDk3LjAwOWM0LjE0IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTUgMC04OC41MDYgMC0xMTguMDA5IDAtMjEzLjQ4Ny4wMDEtMjEuMTg4LTE3LjIzNy0zOC40MjYtMzguNDI1LTM4LjQyNnptLTE2Mi40MjUtMTk2LjAzN2M3Ljg5OCAwIDE0LjMyNSA2LjQyNiAxNC4zMjUgMTQuMzI0cy02LjQyNiAxNC4zMjUtMTQuMzI1IDE0LjMyNWMtNy44OTggMC0xNC4zMjQtNi40MjYtMTQuMzI0LTE0LjMyNXM2LjQyNi0xNC4zMjQgMTQuMzI0LTE0LjMyNHptLTI2Ny42MDQgMjc2LjQ0LTI0LjI0Ny01LjUxNXYtOTUuMjc3bDI0LjI0Ny01LjUwOXptMTk4LjY1My0xNjQuOTc0Yy45NDctMy4xMjUgMy44NjctNS4zMzMgNy4xNzYtNS4zMzNoNjMuNDJjNC4xMzMgMCA3LjQ5NSAzLjM2MiA3LjQ5NSA3LjQ5NXYxNy44NDFoLTc4LjA5MXptLTE0MC4zMDUtNTEuNTY5di0xNS42MTZjMC0xLjM3OCAxLjEyMS0yLjQ5OCAyLjQ5OC0yLjQ5OGg2Ny4xODVjMS4zNzggMCAyLjQ5OCAxLjEyMSAyLjQ5OCAyLjQ5OHYxNS42MTZjMCAxLjM3OC0xLjEyMSAyLjQ5OC0yLjQ5OCAyLjQ5OGgtNjcuMTg1Yy0xLjM3Ny4wMDEtMi40OTgtMS4xMi0yLjQ5OC0yLjQ5OHptNTUuMDY5IDE3LjQ4OXYxOS41NTNoLTM3Ljk1N3YtMTkuNTUzem0tNTUuMDY2IDM1LjI4M2MwLS40MDcuMzMyLS43MzkuNzM5LS43MzloNzAuNjk2Yy40MDcgMCAuNzM5LjMzMi43MzkuNzM5djE4LjgwMWgtNzIuMTc1di0xOC44MDF6bS0uMDAzIDMzLjc5MWgyNDAuMTQ4djE1My42NTZoLTI0MC4xNDh6bS0zNy41NDIgMTUzLjY1NmMtMy4yMDcgMC01LjgxNi0yLjYwOS01LjgxNi01LjgxNnYtMTQyLjAyM2MwLTMuMjA3IDIuNjA5LTUuODE2IDUuODE2LTUuODE2aDIyLjU1MXYxNTMuNjU2Yy01LjIxMS0uMDAxLTE3LjQ4OC0uMDAxLTIyLjU1MS0uMDAxem0yOTkuMzcyIDQyLjc5aC0yNzcuOTU3di0yNy43OTloMjc3Ljk1NnYyNy43OTl6bTcuNDk1LTQyLjc5NGMtLjAyOSAwLS4wNTguMDA0LS4wODcuMDA0aC0xNC4wOTl2LTE1My42NTZoMjIuNTUxYzMuMjA3IDAgNS44MTYgMi42MDkgNS44MTYgNS44MTZ2MTQyLjAyNGMwIDMuMjA3LTIuNjA5IDUuODE2LTUuODE2IDUuODE2aC04LjI3OGMtLjAyOSAwLS4wNTgtLjAwNC0uMDg3LS4wMDR6bTEyNS43OTEgMTQwLjM0M2MtOS4zNzkgMC00NzEuMTA3IDAtNDgyLjAxOSAwdi00NC45MTZsMTkuNjY3IDExLjk4N2MyMS41NjcgMTMuMTQ1IDQ4LjM2MSAxMy4xNDUgNjkuOTI4IDAgMTYuNzU0LTEwLjIxMSAzNy41Ny0xMC4yMTIgNTQuMzI0IDAgMjEuNTY4IDEzLjE0NSA0OC4zNjEgMTMuMTQ1IDY5LjkyOCAwIDE2Ljc1NC0xMC4yMTEgMzcuNTctMTAuMjEyIDU0LjMyNCAwIDIxLjU2OCAxMy4xNDUgNDguMzYxIDEzLjE0NSA2OS45MjggMCAxNy4wOTctMTAuNDIxIDM3Ljk0MS05Ljk4NiA1NC4zMjQgMCAyMS41NjcgMTMuMTQ0IDQ4LjM2MiAxMy4xNDQgNjkuOTI4IDBsMTkuNjY3LTExLjk4N2MuMDAxIDEwLjU1Ni4wMDEgMjIuMzguMDAxIDQ0LjkxNnptMC02Mi40NzJjLTI5Ljc4OSAxOC4xNTYtMzAuMzUzIDE4LjgzNi0zNi41MjcgMjEuMTMydi00NC4yNTdjMC00LjEzOS0zLjM1Ni03LjQ5NS03LjQ5NS03LjQ5NXMtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2NDcuNDI3Yy0xOS40NzIgMS4xNzItMjguOTg0LTcuNjg4LTM4LjUwNi0xMS44MzZ2LTMwLjA1NGMwLTkuNjQzLTcuODQ2LTE3LjQ4OS0xNy40ODktMTcuNDg5aC0xMC43ODN2LTI3Ljc5OWMxMy4zNDIgMCAyMS42NzYtMTAuMDQ5IDIxLjY3Ni0yMC44MDd2LTMxLjc1NWg0NS4xMDJ2NjIuMzMxYzAgNC4xMzkgMy4zNTYgNy40OTUgNy40OTUgNy40OTVzNy40OTUtMy4zNTYgNy40OTUtNy40OTV2LTY5LjgyNmMwLTQuMTM5LTMuMzU2LTcuNDk1LTcuNDk1LTcuNDk1aC01Mi41OTd2LTM2LjUyN2g3My4xODRjMTIuOTIzIDAgMjMuNDM2IDEwLjUxMyAyMy40MzYgMjMuNDM1djE0My41MnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxMS4wMjQgMjI3LjE1M2gtNzkuNzI2Yy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2OTAuMDdjMCA0LjE0IDMuMzU2IDcuNDk1IDcuNDk1IDcuNDk1aDc5LjcyNmM0LjE0IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTV2LTkwLjA3Yy4wMDEtNC4xMzktMy4zNTUtNy40OTUtNy40OTUtNy40OTV6bS03LjQ5NSA5MC4wN2gtNjQuNzM1di03NS4wNzloNjQuNzM1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAyNDAuOTdoLTY0LjUwNWMtNC4xMzkgMC03LjQ5NSAzLjM1Ni03LjQ5NSA3LjQ5NSAwIDQuMTQgMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTUuMDAxLTQuMTM5LTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAyNzIuMTg4aC02NC41MDVjLTQuMTM5IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTVzMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTVzLTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAzMDMuNDA2aC02NC41MDVjLTQuMTM5IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTVzMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTVzLTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYxLjg5OSAyODcuMTc5aDcuNTQ4bC0yLjkwNCA3LjQzMmMtMS41MDcgMy44NTUuMzk3IDguMjAyIDQuMjUzIDkuNzA5Ljg5Ni4zNSAxLjgxOS41MTYgMi43MjYuNTE2IDIuOTk3IDAgNS44MjYtMS44MDkgNi45ODMtNC43NjlsNi45LTE3LjY1NWMuOTAyLTIuMzA3LjYwNi00LjkxLS43OTEtNi45NTVzLTMuNzEzLTMuMjY4LTYuMTktMy4yNjhoLTcuNTQ4bDIuOTA0LTcuNDMyYzEuNTA3LTMuODU1LS4zOTctOC4yMDItNC4yNTMtOS43MDktMy44NTUtMS41MDktOC4yMDMuMzk2LTkuNzA5IDQuMjUzbC02LjkgMTcuNjU1Yy0uOTAyIDIuMzA3LS42MDYgNC45MS43OTEgNi45NTUgMS4zOTYgMi4wNDQgMy43MTMgMy4yNjggNi4xOSAzLjI2OHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",sNe="PHN2ZyB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtOTQuNzI3IDczLjcwOGE2Ljc1IDYuNzUgMCAxIDAgNi43NSA2Ljc1IDYuNzU2IDYuNzU2IDAgMCAwIC02Ljc1LTYuNzV6bTAgMTBhMy4yNSAzLjI1IDAgMSAxIDMuMjUtMy4yNSAzLjI1NCAzLjI1NCAwIDAgMSAtMy4yNSAzLjI1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNzMuMDgxIDczLjcwOGE2Ljc1IDYuNzUgMCAxIDAgNi43NSA2Ljc1IDYuNzU3IDYuNzU3IDAgMCAwIC02Ljc1LTYuNzV6bTAgMTBhMy4yNSAzLjI1IDAgMSAxIDMuMjUtMy4yNSAzLjI1NCAzLjI1NCAwIDAgMSAtMy4yNSAzLjI1eiIvPg0KICAgICAgICA8Y2lyY2xlIGN4PSI2NC45NjYiIGN5PSI0OC4wMjEiIHI9IjMiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iNzcuNTkxIiBjeT0iNDguMDIxIiByPSIzIi8+DQogICAgICAgIDxjaXJjbGUgY3g9IjkwLjIxNiIgY3k9IjQ4LjAyMSIgcj0iMyIvPg0KICAgICAgICA8Y2lyY2xlIGN4PSIxMDIuODQxIiBjeT0iNDguMDIxIiByPSIzIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjEuNSAzMy41aC0xMTVhMS43NTEgMS43NTEgMCAwIDAgLTEuNzUgMS43NXY1Ny41YTEuNzUxIDEuNzUxIDAgMCAwIDEuNzUgMS43NWgxNS45NDJ2OC4yNWExLjc1MSAxLjc1MSAwIDAgMCAxLjc1IDEuNzVoMTBhMS43NSAxLjc1IDAgMCAwIDEuNzUtMS43NXYtOC4yNWg1Ni4xMTZ2OC4yNWExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1aDEwYTEuNzUxIDEuNzUxIDAgMCAwIDEuNzUtMS43NXYtOC4yNWgxNS45NDJhMS43NTEgMS43NTEgMCAwIDAgMS43NS0xLjc1di01Ny41YTEuNzUxIDEuNzUxIDAgMCAwIC0xLjc1LTEuNzV6bS04OS4wNTggNjcuNWgtNi41di02LjVoNi41em02OS42MTYgMGgtNi41di02LjVoNi41em0xNy42OTItMTBoLTExMS41di01NGgxMTEuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyLjY5MiA3NC4yNWExMC4yNSAxMC4yNSAwIDEgMCAtMTAuMjUtMTAuMjUgMTAuMjYxIDEwLjI2MSAwIDAgMCAxMC4yNSAxMC4yNXptLTEuNzUtMTYuNzYydjQuMDEyYTEuNzUgMS43NSAwIDAgMCAzLjUgMHYtNC4wMTJhNi43NSA2Ljc1IDAgMSAxIC0zLjUgMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyLjY5MiA0OS45NThhMS43NDkgMS43NDkgMCAwIDAgMS43NS0xLjc1di0zYTEuNzUgMS43NSAwIDAgMCAtMy41IDB2M2ExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzguNzkyIDUxLjM1M2ExLjc1IDEuNzUgMCAwIDAgMi4zMzctLjgxNmwxLjMtMi43YTEuNzUgMS43NSAwIDAgMCAtMy4xNTItMS41MmwtMS4zIDIuN2ExLjc1IDEuNzUgMCAwIDAgLjgxNSAyLjMzNnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1LjA1MiA1NS45MTlhMS43NDggMS43NDggMCAwIDAgMS4wODgtLjM4bDIuMzQ4LTEuODY4YTEuNzUgMS43NSAwIDAgMCAtMi4xNzktMi43MzlsLTIuMzQ4IDEuODY4YTEuNzUgMS43NSAwIDAgMCAxLjA5MSAzLjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQuMjU2IDUwLjUzN2ExLjc1IDEuNzUgMCAxIDAgMy4xNTItMS41MjFsLTEuMy0yLjdhMS43NSAxLjc1IDAgMCAwIC0zLjE1MiAxLjUyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYuOSA1My42NzEgMi4zNDkgMS44NjhhMS43NSAxLjc1IDAgMCAwIDIuMTc4LTIuNzRsLTIuMzQ4LTEuODY3YTEuNzUgMS43NSAwIDEgMCAtMi4xNzkgMi43Mzl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01OC44MDggNzAuMjkyaDUwLjE5MmExLjc1MSAxLjc1MSAwIDAgMCAxLjc1LTEuNzV2LTEwYTEuNzUgMS43NSAwIDAgMCAtMS43NS0xLjc1aC01MC4xOTJhMS43NDkgMS43NDkgMCAwIDAgLTEuNzUgMS43NXYxMGExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1em0xLjc1LTEwaDQ2LjY5MnY2LjVoLTQ2LjY5MnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2LjEzNSA4Ny4yMDhoMzMuMTE1YTEuNzUgMS43NSAwIDAgMCAwLTMuNWgtMzMuMTE1YTEuNzUgMS43NSAwIDAgMCAwIDMuNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",iNe="PHN2ZyBoZWlnaHQ9IjYwMHB0IiB2aWV3Qm94PSItNDUgLTE5IDYwMCA2MDAuMDAxIiB3aWR0aD0iNjAwcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5OC4yMTQ4NDQgMGgtNTAuOTc2NTYzYy0xOC4xOTUzMTIuMDI3MzQzOC0zMi45MzM1OTMgMTQuNzY5NTMxLTMyLjk2NDg0MyAzMi45NjQ4NDR2MjQuODcxMDk0aC0xNDQuODI0MjE5Yy02MS40Mzc1LjA5Mzc1LTExMi4yNTM5MDcgNDcuODcxMDkzLTExNi4xMzI4MTMgMTA5LjE4NzVoLTM5LjA2NjQwNmMtNS41MTU2MjUgMC05Ljk4ODI4MSA0LjQ2ODc1LTkuOTg4MjgxIDkuOTg4MjgxdjMwLjUxMTcxOWgtMTAuMjg1MTU3Yy0zLjcwNzAzMSAwLTcuMTA1NDY4IDIuMDQ2ODc0LTguODM1OTM3IDUuMzI4MTI0bC04NS43Njk1MzEgMTYyLjU1NDY4OGMtMS42MzY3MTkgMy4wOTc2NTYtMS41MzEyNSA2LjgyNDIxOS4yNzczNDQgOS44MjQyMTkgMS44MDg1OTMgMyA1LjA1MDc4MSA0LjgyODEyNSA4LjU1NDY4NyA0LjgyODEyNWgxMDguMTIxMDk0Yy4xNzU3ODEgMy45NTcwMzEuNjc1NzgxIDcuODg2NzE4IDEuNDk2MDkzIDExLjc2MTcxOCA3LjU3MDMxMyAzNS4wNTQ2ODggMzguNTU4NTk0IDYwLjA5Mzc1IDc0LjQyNTc4MiA2MC4xMjUgMzUuODcxMDk0LjAzNTE1NyA2Ni45MDIzNDQtMjQuOTQ5MjE4IDc0LjUzNTE1Ni01OS45OTYwOTMuODQzNzUtMy45MTAxNTcgMS4zNjcxODgtNy44OTA2MjUgMS41NTA3ODEtMTEuODk0NTMxaDEwOC4xMzY3MTljMy41IDAgNi43NS0xLjgzMjAzMiA4LjU1NDY4OC00LjgzMjAzMiAxLjgwODU5My0zIDEuOTE3OTY4LTYuNzI2NTYyLjI3NzM0My05LjgyMDMxMmwtODUuNzY5NTMxLTE2Mi41NDY4NzVjLTEuNzMwNDY5LTMuMjg5MDYzLTUuMTQ0NTMxLTUuMzM5ODQ0LTguODU5Mzc1LTUuMzMyMDMxaC0xMC4yNjE3MTl2LTMwLjUxMTcxOWMwLTUuNTE5NTMxLTQuNDcyNjU2LTkuOTg4MjgxLTkuOTg4MjgxLTkuOTg4MjgxaC00NC41MzUxNTZjMi4xNDA2MjUtMjIuNDcyNjU3IDIwLjk4ODI4MS0zOS42NDQ1MzIgNDMuNTYyNS0zOS42OTkyMTloMTQ0LjgwNDY4N3YyOC4xNjAxNTZjLjAzNTE1NiAxOC4xOTE0MDYgMTQuNzc3MzQ0IDMyLjkzMzU5NCAzMi45Njg3NSAzMi45NjA5MzdoNTAuOTgwNDY5YzUuNTE1NjI1IDAgOS45ODgyODEtNC40NjQ4NDMgOS45ODgyODEtOS45ODgyODF2LTE2OC40Njg3NWMwLTUuNTExNzE5LTQuNDY0ODQ0LTkuOTgwNDY4NS05Ljk3NjU2Mi05Ljk4ODI4MXptLTI1MC45MTc5NjkgMzk3LjYzMjgxMmMtNS41NjY0MDYgMjUuOTMzNTk0LTI4LjUwNzgxMyA0NC40NTMxMjYtNTUuMDMxMjUgNDQuNDIxODc2LTI2LjUzMTI1LS4wMjczNDQtNDkuNDI1NzgxLTE4LjU5NzY1Ny01NC45MzM1OTQtNDQuNTQ2ODc2LS41NTQ2ODctMi40NTMxMjQtLjkyNTc4MS00Ljk0OTIxOC0xLjEyMTA5My03LjQ1MzEyNGgxMTIuMjM0Mzc0Yy0uMTk5MjE4IDIuNTUwNzgxLS41ODU5MzcgNS4wODIwMzEtMS4xNDg0MzcgNy41NzgxMjR6bTExMi42MDU0NjktMjcuNTc0MjE4aC0xMDEuMzk0NTMyYy0uMDY2NDA2IDAtLjEzNjcxOCAwLS4yMDMxMjQgMGgtMTMxLjk2MDkzOGMtLjA3MDMxMiAwLS4xMzY3MTkgMC0uMjA3MDMxIDBoLTEwMS4zOTQ1MzFsNzUuMjUzOTA2LTE0Mi41NTQ2ODhoMTg0LjY4MzU5NHptLTk5LjQ3MjY1Ni0xNjIuNTM1MTU2aC0xMzYuMTkxNDA3di0yMC41MTk1MzJoMTM2LjE5MTQwN3ptOC45OTYwOTMtMTAwLjE4MzU5NGMtMzMuNTM1MTU2LjI3MzQzNy02MS4yNDYwOTMgMjYuMjM4MjgxLTYzLjY5NTMxMiA1OS42ODM1OTRoLTMyLjQzMzU5NGMzLjg0NzY1Ni01MC4yNzM0MzggNDUuNzMwNDY5LTg5LjEyNSA5Ni4xNTIzNDQtODkuMTg3NWgxNDQuODA0Njg3djI5LjUwMzkwNnptMjE4Ljc2OTUzMSA2MS4xNDA2MjVoLTQwLjk4NDM3NGMtNy4xNjc5NjktLjAxOTUzMS0xMi45NzI2NTctNS44MjQyMTktMTIuOTkyMTg4LTEyLjk4ODI4MXYtMTIyLjUwNzgxM2MuMDE5NTMxLTcuMTYwMTU2IDUuODI0MjE5LTEyLjk2NDg0NCAxMi45OTIxODgtMTIuOTg0Mzc1aDQwLjk4NDM3NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im05MC41MTU2MjUgNDE1Ljk5MjE4OGMwLTUuNTE1NjI2LTQuNDcyNjU2LTkuOTg4MjgyLTkuOTg4MjgxLTkuOTg4MjgyaC02MS4zOTg0MzhjLTUuNTE1NjI1IDAtOS45ODgyODEgNC40NzI2NTYtOS45ODgyODEgOS45ODgyODIgMCA1LjUxOTUzMSA0LjQ3MjY1NiA5Ljk5MjE4NyA5Ljk4ODI4MSA5Ljk5MjE4N2g2MS4zOTg0MzhjNS41MTU2MjUgMCA5Ljk4ODI4MS00LjQ3MjY1NiA5Ljk4ODI4MS05Ljk5MjE4N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTcuNTM5MDYyIDQ3Mi42NzE4NzUtNDAuMDcwMzEyIDM3Ljc0NjA5NGMtMi42NDA2MjUgMi40MzM1OTMtMy43NzM0MzggNi4xMDE1NjItMi45NTcwMzEgOS41OTc2NTYuODEyNSAzLjUwMzkwNiAzLjQ0MTQwNiA2LjI5Njg3NSA2Ljg4NjcxOSA3LjMxNjQwNiAzLjQ0NTMxMiAxLjAyMzQzOCA3LjE3NTc4MS4xMTcxODggOS43NjU2MjQtMi4zNzVsNDAuMDcwMzEzLTM3LjczODI4MWMyLjY0MDYyNS0yLjQzMzU5NCAzLjc2OTUzMS02LjEwMTU2MiAyLjk1NzAzMS05LjYwNTQ2OS0uODE2NDA2LTMuNDk2MDkzLTMuNDQ1MzEyLTYuMjkyOTY5LTYuODg2NzE4LTcuMzE2NDA2LTMuNDQ5MjE5LTEuMDE5NTMxLTcuMTc1NzgyLS4xMTMyODEtOS43NjU2MjYgMi4zNzV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzY1LjU0Njg3NSA0MDYuMDAzOTA2aC02MS4zOTA2MjVjLTUuNTE5NTMxIDAtOS45OTIxODggNC40NzI2NTYtOS45OTIxODggOS45ODgyODIgMCA1LjUxOTUzMSA0LjQ3MjY1NyA5Ljk5MjE4NyA5Ljk5MjE4OCA5Ljk5MjE4N2g2MS4zOTA2MjVjNS41MTk1MzEgMCA5Ljk4ODI4MS00LjQ3MjY1NiA5Ljk4ODI4MS05Ljk5MjE4NyAwLTUuNTE1NjI2LTQuNDY4NzUtOS45ODgyODItOS45ODgyODEtOS45ODgyODJ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY3LjA0Njg3NSA0NzIuNjcxODc1Yy0yLjU4OTg0NC0yLjQ4ODI4MS02LjMxNjQwNi0zLjM5NDUzMS05Ljc2NTYyNS0yLjM3NS0zLjQ0NTMxMiAxLjAyMzQzNy02LjA3NDIxOSAzLjgyMDMxMy02Ljg4NjcxOSA3LjMxNjQwNi0uODE2NDA2IDMuNTAzOTA3LjMxNjQwNyA3LjE3MTg3NSAyLjk1MzEyNSA5LjYwNTQ2OWw0MC4wNjI1IDM3LjcyMjY1NmMyLjU4OTg0NCAyLjQ5MjE4OCA2LjMxNjQwNiAzLjQwMjM0NCA5Ljc2NTYyNSAyLjM3NSAzLjQ0MTQwNy0xLjAxOTUzMSA2LjA3MDMxMy0zLjgxMjUgNi44ODY3MTktNy4zMTY0MDYuODEyNS0zLjQ5NjA5NC0uMzE2NDA2LTcuMTY0MDYyLTIuOTU3MDMxLTkuNjAxNTYyem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE5Mi4yNzM0MzggNDkwLjkzMzU5NGMtNS41MTU2MjYgMC05Ljk4ODI4MiA0LjQ3MjY1Ni05Ljk4ODI4MiA5Ljk5MjE4N3Y1MC44NDc2NTdjMCAuMjQ2MDkzLS4wMjM0MzcuNTAzOTA2LS4wMjM0MzcuNzM4MjgxIDAgNS41MTU2MjUgNC40NzI2NTYgOS45ODgyODEgOS45ODgyODEgOS45ODgyODEuNDI1NzgxLS4wMDM5MDYuODU1NDY5LS4wMjczNDQgMS4yNzczNDQtLjA4NTkzOCA0Ljk5MjE4Ny0uNjI4OTA2IDguNzM4MjgxLTQuODc4OTA2IDguNzM4MjgxLTkuOTA2MjV2LTUxLjU4MjAzMWMwLTUuNTE5NTMxLTQuNDcyNjU2LTkuOTkyMTg3LTkuOTkyMTg3LTkuOTkyMTg3em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",rNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ3OC41MTEsODguNjIyQzQwMy42OTQsNjkuMjIzLDMyOC40MzcsMzkuMDE3LDI2MC44NzgsMS4yNjljLTMuMDMtMS42OTItNi43MjMtMS42OTMtOS43NTUsMA0KCQkJQzE4MS42MjEsNDAuMDk5LDExMC40MzIsNjguNjcyLDMzLjQ4OSw4OC42MjNjLTQuNDEsMS4xNDQtNy40OSw1LjEyNC03LjQ5LDkuNjh2MTEwLjM5NGMwLDExMy41MzUsNTUuMjkyLDE4OC42MzksMTAxLjY3OCwyMzEuNjUNCgkJCWM0OS43NTcsNDYuMTM4LDEwNy40Niw3MS42NTUsMTI4LjMyNCw3MS42NTVjMjAuODY0LDAsNzguNTY3LTI1LjUxNywxMjguMzI0LTcxLjY1NQ0KCQkJYzQ2LjM4NC00My4wMTEsMTAxLjY3OC0xMTguMTE0LDEwMS42NzgtMjMxLjY1Vjk4LjMwMkM0ODYuMDAyLDkzLjc0Niw0ODIuOTIyLDg5Ljc2Niw0NzguNTExLDg4LjYyMnogTTM3MC43MjYsNDI1LjY3OA0KCQkJYy0yNy41NTcsMjUuNTUzLTU0LjMzNiw0MS42ODUtNzEuOTUsNTAuNzE4Yy0yMi4zMTksMTEuNDQ3LTM3LjgxLDE1LjYwMy00Mi43NzYsMTUuNjAzYy00Ljk2NiwwLTIwLjQ1Ni00LjE1NS00Mi43NzYtMTUuNjAzDQoJCQljLTE3LjYxMi05LjAzMy00NC4zOTItMjUuMTY1LTcxLjk1LTUwLjcxOGMtNDMuNDY0LTQwLjMwMy05NS4yNzYtMTEwLjY2My05NS4yNzYtMjE2Ljk4M1YxMDYuMDA4DQoJCQljNzMuOTY0LTE5LjgsMTQyLjgwMS00Ny41MjMsMjEwLjAwMy04NC41NzRjNjUuNDk4LDM2LjA1OSwxMzcuODI3LDY1LjE4NSwyMTAsODQuNTcxdjEwMi42OWgwLjAwMQ0KCQkJQzQ2Ni4wMDEsMzE1LjAxNSw0MTQuMTksMzg1LjM3NSwzNzAuNzI2LDQyNS42Nzh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NDMuNzkzLDExNS4zNjhjLTYzLjMzNi0xOC40MTMtMTI0LjkzNi00My40MjQtMTgzLjA4Ny03NC4zMzdjLTIuOTM4LTEuNTYzLTYuNDYxLTEuNTYtOS4zOTcsMC4wMDYNCgkJCUMxOTMuMDY5LDcyLjA3OSwxMzEuNDcsOTcuMDk0LDY4LjIyLDExNS4zODdjLTQuMjc3LDEuMjM3LTcuMjIyLDUuMTUzLTcuMjIyLDkuNjA2djgzLjcwMmMwLDM5LjA3Nyw3LjQwNSw3Ni4xNjEsMjIuMDA4LDExMC4yMjINCgkJCWMxNC41MywzMy44OTEsMzYuMjAxLDY0LjgyLDY0LjQwOSw5MS45MzNjMjAuMTc1LDE5LjM5LDQzLjQ2OSwzNi40NzcsNjcuMzY3LDQ5LjQxM2M0LjI4MiwyLjMxOCwyNi4zMDUsMTQuMDAzLDM5LjQwMiwxNi40MjENCgkJCWMwLjYsMC4xMSwxLjIwNywwLjE2NiwxLjgxNSwwLjE2NmMwLjYwOCwwLDEuMjE1LTAuMDU2LDEuODE1LTAuMTY2YzEzLjA5Ny0yLjQxOCwzNS4xMi0xNC4xMDMsMzkuNDAyLTE2LjQyMQ0KCQkJYzIzLjg5NS0xMi45MzYsNDcuMTktMzAuMDIzLDY3LjM2Ny00OS40MTNjMjguMjA4LTI3LjExMSw0OS44NzgtNTguMDQxLDY0LjQwOS05MS45MzNjMTQuNjAzLTM0LjA2LDIyLjAwOC03MS4xNDQsMjIuMDA4LTExMC4yMjINCgkJCXYtODMuNzI0QzQ1MS4wMDEsMTIwLjUyNCw0NDguMDYzLDExNi42MTEsNDQzLjc5MywxMTUuMzY4eiBNNDMxLjAwMSwyMDguNjk1YzAsNzMuMzc2LTI3LjAwOCwxMzYuNTM4LTgwLjI3NiwxODcuNzM0DQoJCQljLTE4Ljg5OCwxOC4xNjItNDAuNjkzLDM0LjE1My02My4wMjksNDYuMjQ1Yy0xMC4xNjcsNS41MDMtMjMuODkyLDExLjkxOS0zMS42OTcsMTMuOTM0Yy03LjgwNS0yLjAxNS0yMS41My04LjQzMS0zMS42OTYtMTMuOTM0DQoJCQljLTIyLjMzNy0xMi4wOTMtNDQuMTMyLTI4LjA4NC02My4wMjktNDYuMjQ1Yy01My4yNjctNTEuMTk1LTgwLjI3Ni0xMTQuMzU5LTgwLjI3Ni0xODcuNzM0VjEzMi40OA0KCQkJYzYwLjM1NC0xNy45NjksMTE5LjE3Mi00MS45MzEsMTc1LjAxOS03MS4zMDZjNTUuNzU3LDI5LjI1MSwxMTQuNTY5LDUzLjIwNCwxNzQuOTgzLDcxLjI3NFYyMDguNjk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTczLjAyNywzNTguMzA1bC0wLjItMC4yMTVjLTMuNzAxLTQuMDU1LTkuOTg3LTQuMzY3LTE0LjA3My0wLjY4OWMtNC4xMDUsMy42OTQtNC40MzgsMTAuMDE3LTAuNzQ0LDE0LjEyMmwwLjIsMC4yMTUNCgkJCWMxLjk3MSwyLjE1OCw0LjY3MywzLjI1Niw3LjM4NywzLjI1NmMyLjM4MywwLDQuNzc1LTAuODQ4LDYuNjg2LTIuNTY3QzE3Ni4zODgsMzY4LjczMywxNzYuNzIxLDM2Mi40MDksMTczLjAyNywzNTguMzA1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjI2Ljk2Myw0MDMuNjk1Yy0xMi4wNDYtNy42MDItMjMuNjQ1LTE2LjM2NC0zNC40NzMtMjYuMDQ0Yy00LjExNy0zLjY4Mi0xMC40MzktMy4zMjctMTQuMTIsMC43OQ0KCQkJYy0zLjY4LDQuMTE4LTMuMzI2LDEwLjQzOSwwLjc5MiwxNC4xMmMxMS42NTMsMTAuNDE4LDI0LjE0NSwxOS44NTQsMzcuMTI5LDI4LjA0OGMxLjY1NywxLjA0NSwzLjUwMiwxLjU0NCw1LjMyNywxLjU0NA0KCQkJYzMuMzE4LDAsNi41NjQtMS42NSw4LjQ2Ni00LjY2NEMyMzMuMDMyLDQxMi44MTgsMjMxLjYzNSw0MDYuNjQyLDIyNi45NjMsNDAzLjY5NXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwOC44OTgsMjA5LjA3N3YtMzIuOTIxYzAtMjkuMTY4LTIzLjczLTUyLjg5OC01Mi45LTUyLjg5OGMtMjkuMTY4LDAtNTIuODk4LDIzLjczLTUyLjg5OCw1Mi44OTh2MzIuOTIxDQoJCQljLTExLjg5OCwwLjQyOS0yMS40NDcsMTAuMjM1LTIxLjQ0NywyMi4yMzZ2NzYuNzY5Yy0wLjAwMSwxMi4yNzMsOS45ODQsMjIuMjU3LDIyLjI1NywyMi4yNTdIMzA4LjA5DQoJCQljMTIuMjczLDAsMjIuMjU4LTkuOTg0LDIyLjI1OC0yMi4yNTd2LTc2Ljc2OUMzMzAuMzQ4LDIxOS4zMTEsMzIwLjc5OCwyMDkuNTA0LDMwOC44OTgsMjA5LjA3N3ogTTIyMy4wOTksMTc2LjE1Ng0KCQkJYzAtMTguMTQsMTQuNzU5LTMyLjg5OCwzMi45LTMyLjg5OGMxOC4xNCwwLDMyLjg5OCwxNC43NTgsMzIuODk4LDMyLjg5OHYzMi45aC02NS43OTlWMTc2LjE1NnogTTMxMC4zNDcsMzA4LjA4Mw0KCQkJYzAsMS4yMjQtMS4wMzQsMi4yNTctMi4yNTgsMi4yNTdIMjAzLjkwOGMtMS4yMjQsMC0yLjI1OC0xLjAzMy0yLjI1OC0yLjI1N3YtNzYuNzY5aDAuMDAxYzAtMS4yMjQsMS4wMzQtMi4yNTcsMi4yNTgtMi4yNTdoOS4xODkNCgkJCWg4NS43OTloOS4xOTJjMS4yMjQsMCwyLjI1OCwxLjAzMywyLjI1OCwyLjI1N1YzMDguMDgzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDI0OS42NGMtNy43MDEsMC0xMy45ODIsNi4yODEtMTMuOTgyLDEzLjk4MmMwLDMuNzg2LDEuNTIzLDcuMjI1LDMuOTgyLDkuNzQ2djkuNzg3YzAsNS41MjIsNC40NzcsMTAsMTAsMTANCgkJCWM1LjUyMywwLDEwLTQuNDc4LDEwLTEwdi05Ljc4N2MyLjQ1OS0yLjUyMiwzLjk4Mi01Ljk2LDMuOTgyLTkuNzQ2QzI2OS45ODIsMjU1LjkyMSwyNjMuNzAxLDI0OS42NCwyNTYsMjQ5LjY0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",oNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00OTYuODgyODEyIDBoLTQ4MS43NjU2MjRjLTguMzQ3NjU3IDAtMTUuMTE3MTg4IDYuNzY5NTMxLTE1LjExNzE4OCAxNS4xMTcxODh2NDgxLjc2NTYyNGMwIDguMzQ3NjU3IDYuNzY5NTMxIDE1LjExNzE4OCAxNS4xMTcxODggMTUuMTE3MTg4aDQ4MS43NjU2MjRjOC4zNDc2NTcgMCAxNS4xMTcxODgtNi43Njk1MzEgMTUuMTE3MTg4LTE1LjExNzE4OHYtNDgxLjc2NTYyNGMwLTguMzQ3NjU3LTYuNzY5NTMxLTE1LjExNzE4OC0xNS4xMTcxODgtMTUuMTE3MTg4em0tNDA2LjE3NTc4MSA0MjEuMjkyOTY5di04OC42OTUzMTNoMTE5LjA3NDIxOXY4OC42OTUzMTN6bS02MC40NzI2NTYtMzkxLjA1ODU5NGg2OC40NTMxMjV2MzAuMjM4MjgxaC02OC40NTMxMjV6bTAgNjAuNDcyNjU2aDY4LjQ1MzEyNXYzMC4yMzgyODFoLTY4LjQ1MzEyNXptMzUyLjgzOTg0NC01OC40NTMxMjV2MjguMjE4NzVoLTI1NC4xNDg0Mzh2LTI4LjIxODc1em0tMjU0LjE0ODQzOCAyMzkuODcxMDk0aDI1NC4xNTIzNDR2MzAuMjM4MjgxaC0yNTQuMTUyMzQ0em0wLTMwLjIzNDM3NXYtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0wLTYwLjQ3MjY1NnYtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0wLTYwLjQ3MjY1N3YtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0tOTguNjkxNDA2IDMwLjIzNDM3Nmg2OC40NTMxMjV2MzAuMjM4MjgxaC02OC40NTMxMjV6bTAgNjAuNDcyNjU2aDY4LjQ1MzEyNXYzMC4yMzgyODFoLTY4LjQ1MzEyNXptMCA2MC40NzI2NTZoNjguNDUzMTI1djMwLjIzODI4MWgtNjguNDUzMTI1em0zODMuMDc4MTI1IDBoNjguNDUzMTI1djMwLjIzODI4MWgtNjguNDUzMTI1em02OC40NTMxMjUtMzAuMjM0Mzc1aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU2aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU3aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU2aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bS0yNDEuNzUgMjcyLjEyNWgzMC4yMzgyODF2ODguNjk1MzEzaC0zMC4yMzgyODF6bTYwLjQ3NjU2MyAwaDEyMC44MDA3ODF2ODguNjk1MzEzaC0xMjAuODAwNzgxem0tMjcwLjI1NzgxMyAxNDkuMTY3OTY5di0xNDkuMTY3OTY5aDMwLjIzODI4MXYxMDMuODEyNWMwIDguMzQ3NjU2IDYuNzY5NTMyIDE1LjExNzE4OCAxNS4xMTcxODggMTUuMTE3MTg4aDM2MC44MjAzMTJjOC4zNDc2NTYgMCAxNS4xMTcxODgtNi43Njk1MzIgMTUuMTE3MTg4LTE1LjExNzE4OHYtMTAzLjgxMjVoMzAuMjM4MjgxdjE0OS4xNjc5Njl6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",MNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0yIDUxMiA1MTIiIHdpZHRoPSI1MTJwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzQ4LjI0NjA5NCAzNzYuNzg1MTU2Yy0zLjI1LTIuNjA1NDY4LTcuOTkyMTg4LTIuMDgyMDMxLTEwLjU5NzY1NiAxLjE2NDA2M2wtMjguOTQ5MjE5IDM2LjA5Mzc1Yy0zLjk4NDM3NSA0Ljk2ODc1LS4zNjcxODggMTIuMjU3ODEyIDUuODc1IDEyLjI1NzgxMiAyLjIxMDkzNyAwIDQuMzk4NDM3LS45Njg3NSA1Ljg4NjcxOS0yLjgyNDIxOWwyOC45NDkyMTgtMzYuMDkzNzVjMi42MDU0NjktMy4yNSAyLjA4NTkzOC03Ljk5MjE4Ny0xLjE2NDA2Mi0xMC41OTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkwLjM1OTM3NSAzNTguNzM4MjgxYy0zLjI1LTIuNjA1NDY5LTcuOTkyMTg3LTIuMDgyMDMxLTEwLjU5NzY1NiAxLjE2NDA2M2wtMjguOTQ5MjE5IDM2LjA5Mzc1Yy0zLjk4NDM3NSA0Ljk2ODc1LS4zNjcxODggMTIuMjU3ODEyIDUuODc1IDEyLjI1NzgxMiAyLjIxMDkzOCAwIDQuMzk4NDM4LS45Njg3NSA1Ljg4NjcxOS0yLjgyNDIxOGwyOC45NDkyMTktMzYuMDkzNzVjMi42MDU0NjgtMy4yNDYwOTQgMi4wODU5MzctNy45OTIxODgtMS4xNjQwNjMtMTAuNTk3NjU3em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTExMS43NSA0MjIuMDUwNzgxYzIuMTA5Mzc1IDAgNC4yMDcwMzEtLjg3ODkwNiA1LjY5OTIxOS0yLjU5NzY1NmwzOS42MTMyODEtNDUuNjQ0NTMxYzIuNzMwNDY5LTMuMTQ0NTMyIDIuMzk0NTMxLTcuOTA2MjUtLjc1LTEwLjYzMjgxMy0zLjE0NDUzMS0yLjczMDQ2OS03LjkxMDE1Ni0yLjM5NDUzMS0xMC42MzY3MTkuNzVsLTM5LjYxNzE4NyA0NS42NDQ1MzFjLTQuMjUzOTA2IDQuOTAyMzQ0LS42OTUzMTMgMTIuNDgwNDY5IDUuNjkxNDA2IDEyLjQ4MDQ2OXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTYuNjIxMDk0IDM3Ni43ODUxNTZjLTMuMjUtMi42MDU0NjgtNy45OTYwOTQtMi4wODIwMzEtMTAuNjAxNTYzIDEuMTY0MDYzbC0xNC40NzI2NTYgMTguMDQ2ODc1Yy0yLjYwNTQ2OSAzLjI1LTIuMDgyMDMxIDcuOTk2MDk0IDEuMTY0MDYzIDEwLjU5NzY1NiAzLjI2OTUzMSAyLjYyNSA4LjAxMTcxOCAyLjA2MjUgMTAuNTk3NjU2LTEuMTY0MDYybDE0LjQ3NjU2Mi0xOC4wNDY4NzZjMi42MDU0NjktMy4yNSAyLjA4MjAzMi03Ljk5MjE4Ny0xLjE2NDA2Mi0xMC41OTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDM3Ljk5MjE4OCAzOTQuODMyMDMxYy0zLjI1LTIuNjA1NDY5LTcuOTkyMTg4LTIuMDgyMDMxLTEwLjU5NzY1NyAxLjE2NDA2M2wtMTQuNDc2NTYyIDE4LjA0Njg3NWMtMi42MDU0NjkgMy4yNS0yLjA4MjAzMSA3Ljk5MjE4NyAxLjE2NDA2MiAxMC41OTc2NTYgMy4yNjk1MzEgMi42MjEwOTQgOC4wMTE3MTkgMi4wNjI1IDEwLjYwMTU2My0xLjE2NDA2M2wxNC40NzI2NTYtMTguMDQ2ODc0YzIuNjA1NDY5LTMuMjQ2MDk0IDIuMDgyMDMxLTcuOTkyMTg4LTEuMTY0MDYyLTEwLjU5NzY1N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTYuNDcyNjU2IDM2Mi45ODQzNzVjLTMuMjUtMi42MDU0NjktNy45OTIxODctMi4wODIwMzEtMTAuNTk3NjU2IDEuMTY0MDYzbC0xNC40NzY1NjIgMTguMDUwNzgxYy0yLjYwNTQ2OSAzLjI0NjA5My0yLjA4MjAzMiA3Ljk5MjE4NyAxLjE2NDA2MiAxMC41OTc2NTYgMy4yNjk1MzEgMi42MjEwOTQgOC4wMTE3MTkgMi4wNjI1IDEwLjU5NzY1Ni0xLjE2NDA2M2wxNC40NzI2NTYtMTguMDQ2ODc0YzIuNjA5Mzc2LTMuMjUgMi4wODU5MzgtNy45OTYwOTQtMS4xNjAxNTYtMTAuNjAxNTYzem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwNC40NjA5MzggMGMtMTcuMjUzOTA3IDAtNDY2LjU5Mzc1IDAtNDk2LjkyMTg3NiAwLTQuMTYwMTU2IDAtNy41MzkwNjIgMy4zNjcxODgtNy41MzkwNjIgNy41MzkwNjJ2NDkzLjg2NzE4OGMwIDQuMTcxODc1IDMuMzc4OTA2IDcuNTM5MDYyIDcuNTM5MDYyIDcuNTM5MDYyaDQyMi4yMTA5MzhjNC4xNjAxNTYgMCA3LjUzOTA2Mi0zLjM2NzE4NyA3LjUzOTA2Mi03LjUzOTA2MiAwLTQuMTY0MDYyLTMuMzc4OTA2LTcuNTQyOTY5LTcuNTM5MDYyLTcuNTQyOTY5aC00MTQuNjcxODc1di0xNDMuODgyODEyaDE0LjM2NzE4N3Y5MC45NTcwMzFjMCA0LjE2NDA2MiAzLjM3NSA3LjUzOTA2MiA3LjUzOTA2MyA3LjUzOTA2MmgxMjYuNDAyMzQ0YzQuMTYwMTU2IDAgNy41MzkwNjItMy4zNzUgNy41MzkwNjItNy41MzkwNjIgMC00LjE2MDE1Ni0zLjM3ODkwNi03LjUzOTA2Mi03LjUzOTA2Mi03LjUzOTA2MmgtMTE4Ljg2MzI4MXYtODMuNDE3OTY5aDE0LjUzOTA2MnYyNi4xMjEwOTNjMCA0LjE2NDA2MyAzLjM3NSA3LjUzOTA2MyA3LjUzOTA2MiA3LjUzOTA2MyA0LjE2NDA2MyAwIDcuNTM5MDYzLTMuMzc1IDcuNTM5MDYzLTcuNTM5MDYzdi0yNi4xMjEwOTNoMTUzLjcxMDkzN3Y4My40MTc5NjloLTM0LjMwODU5M2MtNC4xNjAxNTcgMC03LjUzOTA2MyAzLjM3ODkwNi03LjUzOTA2MyA3LjUzOTA2MiAwIDQuMTY0MDYyIDMuMzc4OTA2IDcuNTM5MDYyIDcuNTM5MDYzIDcuNTM5MDYyaDI4MS40NzI2NTZjNC4xNjQwNjMgMCA3LjUzOTA2My0zLjM3NSA3LjUzOTA2My03LjUzOTA2MnYtOTAuOTU3MDMxaDE0LjM2NzE4N3YxNDMuODgyODEyaC0zNy4wMTU2MjVjLTQuMTYwMTU2IDAtNy41MzkwNjIgMy4zNzg5MDctNy41MzkwNjIgNy41NDI5NjkgMCA0LjE3MTg3NSAzLjM3ODkwNiA3LjUzOTA2MiA3LjUzOTA2MiA3LjUzOTA2Mmg0NC41NTQ2ODhjNC4xNjAxNTYgMCA3LjUzOTA2Mi0zLjM2NzE4NyA3LjUzOTA2Mi03LjUzOTA2MiAwLTUzLjg2MzI4MSAwLTQzNy40OTYwOTQgMC00OTMuODY3MTg4IDAtNC4xNzE4NzQtMy4zNzg5MDYtNy41MzkwNjItNy41MzkwNjItNy41MzkwNjJ6bS00NDUuMzk4NDM4IDMzNC45MDIzNDRjLTEzLjcxNDg0NCAwLTMwLjA1ODU5NCAwLTQzLjk4NDM3NSAwIDAtOS41NTA3ODIgMC0xNi4yNTc4MTMgMC0yNi43ODEyNWg0My45ODQzNzV6bTAtNDEuODU5Mzc1aC00My45ODQzNzV2LTI2Ljc4OTA2M2g0My45ODQzNzV6bTAtNDEuODY3MTg4aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzg5MDYyaDQzLjk4NDM3NXptMC00MS44NzEwOTRoLTQzLjk4NDM3NXYtMjYuNzc3MzQzaDQzLjk4NDM3NXptMC00MS44NTkzNzRjLTkuNzAzMTI1IDAtMzMuOTE3OTY5IDAtNDMuOTg0Mzc1IDB2LTI2Ljc4OTA2M2g0My45ODQzNzV6bTAtNDEuODY3MTg4aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzgxMjVoNDMuOTg0Mzc1em0xNS4wNzgxMjUtMjYuNzgxMjVoMzYzLjcxODc1djI2Ljc4MTI1aC0zNjMuNzE4NzV6bTAgODMuNzE4NzVoMjg5LjMwMDc4MWM0LjE2NDA2MyAwIDcuNTM5MDYzLTMuMzY3MTg3IDcuNTM5MDYzLTcuNTM5MDYzIDAtNC4xNjAxNTYtMy4zNzUtNy41MzkwNjItNy41MzkwNjMtNy41MzkwNjItMS4yMzQzNzUgMC0yODIuOTQxNDA2IDAtMjg5LjMwMDc4MSAwdi0yNi43ODEyNWgzNjMuNzE4NzV2MjYuNzgxMjVoLTQ0LjI1NzgxM2MtNC4xNjQwNjIgMC03LjUzOTA2MiAzLjM3ODkwNi03LjUzOTA2MiA3LjUzOTA2MiAwIDQuMTcxODc2IDMuMzc1IDcuNTM5MDYzIDcuNTM5MDYyIDcuNTM5MDYzaDQ0LjI1NzgxM3YyNi43ODkwNjNjLTExLjYyNSAwLTM1NC40OTIxODcgMC0zNjMuNzE4NzUgMHptMCA0MS44NzEwOTRoMzYzLjcxODc1djI2Ljc3NzM0M2gtMzYzLjcxODc1em0wIDQxLjg1OTM3NWgzNjMuNzE4NzV2MjYuNzg5MDYyaC0zNjMuNzE4NzV6bTAgNDEuODY3MTg3aDM2My43MTg3NXYyNi43ODEyNWgtMzYzLjcxODc1em0wIDQxLjg1OTM3NWgzNjMuNzE4NzV2MjYuNzg5MDYzaC0zNjMuNzE4NzV6bTAgNjguNjQ4NDM4di0yNi43ODEyNWgzNjMuNzE4NzV2MjYuNzgxMjVjLTM1LjYxNzE4NyAwLTMyNi45NTMxMjUgMC0zNjMuNzE4NzUgMHptMzkzLjMzNTkzNyA5OC40OTYwOTRoLTE4My4zMjgxMjR2LTQwLjY2Nzk2OWMwLTQuMTY0MDYzLTMuMzc1LTcuNTM5MDYzLTcuNTM5MDYzLTcuNTM5MDYzcy03LjUzOTA2MyAzLjM3NS03LjUzOTA2MyA3LjUzOTA2M3Y0MC42Njc5NjloLTI2LjE0MDYyNHYtODMuNDE0MDYzaDI2LjE0MDYyNHYxMi41ODU5MzdjMCA0LjE2Nzk2OSAzLjM3NSA3LjUzOTA2MyA3LjUzOTA2MyA3LjUzOTA2M3M3LjUzOTA2My0zLjM3MTA5NCA3LjUzOTA2My03LjUzOTA2M3YtMTIuNTg5ODQzaDE1My43MTA5Mzd2MjYuMTIxMDkzYzAgNC4xNjQwNjMgMy4zNzUgNy41MzkwNjMgNy41MzkwNjMgNy41MzkwNjMgNC4xNjQwNjIgMCA3LjUzOTA2Mi0zLjM3NSA3LjUzOTA2Mi03LjUzOTA2M3YtMjYuMTIxMDkzaDE0LjUzOTA2MnptMjkuNDQ1MzEzLTk4LjQ5NjA5NGMtMTMuNzg5MDYzIDAtMjkuODY3MTg3IDAtNDMuOTg0Mzc1IDB2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzg5MDYzaDQzLjk4NDM3NXptMC00MS44NjcxODhoLTQzLjk4NDM3NXYtMjYuNzgxMjVoNDMuOTg0Mzc1em0wLTQxLjg1OTM3NWgtNDMuOTg0Mzc1di0yNi43ODkwNjJoNDMuOTg0Mzc1em0wLTQxLjg3MTA5NGgtNDMuOTg0Mzc1di0yNi43NzczNDNoNDMuOTg0Mzc1em0wLTQxLjg1OTM3NGgtNDMuOTg0Mzc1di0yNi43ODkwNjNoNDMuOTg0Mzc1em0wLTQxLjg2NzE4OGgtNDMuOTg0Mzc1di0yNi43ODEyNWg0My45ODQzNzV6bTAtNDEuODU5Mzc1aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",nNe="PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTU2LjgzOCAxaC00OS42NzZjLTMuMzk4IDAtNi4xNjIgMi43NjQtNi4xNjIgNi4xNjIgMCAuNjY1LjEwNiAxLjMyLjMxNiAxLjk0OWwuNTU4IDEuNjc2Yy44NDEgMi41MiAzLjE5IDQuMjEzIDUuODQ3IDQuMjEzaDQuMzg0bDEuNTA2IDEzLjU1MmMuMjgyIDIuNTM2IDIuNDE4IDQuNDQ4IDQuOTY5IDQuNDQ4aDI2Ljg0YzIuNTUxIDAgNC42ODgtMS45MTIgNC45NjktNC40NDhsMS41MDYtMTMuNTUyaDQuMzg0YzIuNjU3IDAgNS4wMDYtMS42OTMgNS44NDYtNC4yMTRsLjU1OC0xLjY3NGMuMjExLS42My4zMTctMS4yODUuMzE3LTEuOTUgMC0zLjM5OC0yLjc2NC02LjE2Mi02LjE2Mi02LjE2MnptLTMyLjgzOCAzMGgtNHYtOGMwLTEuMTAzLjg5Ny0yIDItMnMyIC44OTcgMiAyem0xMCAwaC00di04YzAtMS4xMDMuODk3LTIgMi0yczIgLjg5NyAyIDJ6bTEwIDBoLTR2LThjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptNC40MDItMi42NjhjLS4xNDcgMS4zMjQtMS4xMzggMi4zNjMtMi40MDIgMi42MTF2LTcuOTQzYzAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0djhoLTJ2LThjMC0yLjIwNi0xLjc5NC00LTQtNHMtNCAxLjc5NC00IDR2OGgtMnYtOGMwLTIuMjA2LTEuNzk0LTQtNC00cy00IDEuNzk0LTQgNHY3Ljk0MmMtMS4yNjQtLjI0OC0yLjI1NC0xLjI4Ny0yLjQwMi0yLjYxMWwtMS40ODEtMTMuMzMxaDM1Ljc2NnptMTIuMzg0LTE5Ljg1My0uNTU4IDEuNjc1Yy0uNTY3IDEuNzAyLTIuMTU0IDIuODQ2LTMuOTQ5IDIuODQ2aC00OC41NThjLTEuNzk0IDAtMy4zODEtMS4xNDQtMy45NDktMi44NDZsLS41NTgtMS42NzZjLS4xNDItLjQyNC0uMjE0LS44NjctLjIxNC0xLjMxNiAwLTIuMjk1IDEuODY3LTQuMTYyIDQuMTYyLTQuMTYyaDQ5LjY3NmMyLjI5NSAwIDQuMTYyIDEuODY3IDQuMTYyIDQuMTYyIDAgLjQ0OS0uMDcyLjg5Mi0uMjE0IDEuMzE3eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUgNWgtNmMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJoNmMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0yem0tNiA0di0yaDZsLjAwMSAyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTEgNWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcgOWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSA5aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDloMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQgNDB2LTFoLTFjLS4xMTkgMC0xLjc5OS4wNDItMy4xNzkgMi4wMzUtLjA0Ni0uMDYzLS4wOTItLjEzMS0uMTM4LS4xOTMtLjkwMy0xLjIzLTEuNjgzLTIuMjkzLTEuNjgzLTQuODQydi0xaC0xYy0uMTM5IDAtMi44OTMuMDU3LTQuNjI0IDMuMjc4LTIuMDUzLTMuMjIzLTUuMzI4LTMuMjc4LTUuMzc2LTMuMjc4aC0xdjFjMCAyLjU1OS0uNzg0IDMuNjMzLTEuNjkyIDQuODc3LS4wNC4wNTUtLjA4LjExNC0uMTIuMTY5LTEuMzgzLTIuMDA0LTMuMDY5LTIuMDQ2LTMuMTg4LTIuMDQ2aC0xdjFjMCAyLjU0My0uOTk1IDMuODMzLTIuMTQ3IDUuMzI3LTEuMzM3IDEuNzMzLTIuODUzIDMuNjk3LTIuODUzIDcuNjczIDAgNi4wNzUgMy45MjUgMTAgMTAgMTBoMTRjNi4wNzUgMCAxMC0zLjkyNSAxMC0xMCAwLTMuOTc2LTEuNTE2LTUuOTQtMi44NTMtNy42NzMtMS4xNTItMS40OTQtMi4xNDctMi43ODQtMi4xNDctNS4zMjd6bS0xOSAxN2MwLTIuMzk2IDEuMzU4LTMuNzE5IDIuNjcyLTUgLjg1MS0uODMgMS43MjQtMS42OCAyLjExNS0yLjc3My41Ni4zMSAxLjIxMyAxLjA0MyAxLjIxMyAyLjc3M3YzaDJ2LTFjMC0xLjk4NiAxLjIzOS0yLjY2IDIuMTQ3LTIuODg3LjM1NSAxLjMwNCAxLjI5NSAyLjI0NCAyLjE0NiAzLjA5NC45MTYuOTE2IDEuNzA3IDEuNzA3IDEuNzA3IDIuNzkzIDAgMS4zODMtMS40NjMgNC03IDRzLTctMi42MTctNy00em0xNCA0aC0uMTAyYzEuNTYyLTEuMjggMi4xMDItMi44OTkgMi4xMDItNCAwLTEuOTE0LTEuMjE4LTMuMTMyLTIuMjkzLTQuMjA3LS45MTYtLjkxNi0xLjcwNy0xLjcwNy0xLjcwNy0yLjc5M3YtMWgtMWMtLjg5MiAwLTIuMTkzLjI3OC0zLjI0NSAxLjA4OS0uNjgyLTIuMzk1LTIuNjI4LTMuMDg5LTMuNzU1LTMuMDg5aC0xdjFjMCAuODQ1LS42NTUgMS41MjYtMS43MjQgMi41NjgtMS40NiAxLjQyMy0zLjI3NiAzLjE5My0zLjI3NiA2LjQzMiAwIDEuMTAxLjU0IDIuNzIgMi4xMDIgNGgtLjEwMmMtMy44NjggMC04LTIuMTAyLTgtOCAwLTMuMjk0IDEuMTgzLTQuODI4IDIuNDM2LTYuNDUyIDEuMDU1LTEuMzY3IDIuMTM5LTIuNzcyIDIuNDY1LTUuMDg0Ljg5MS43MzkgMi4wOTkgMi42NDIgMi4wOTkgNy41MzZoMmMwLTIuNTYtLjMyMy00LjQ2MS0uODAzLTUuODc4LjIyOC0uMzY2LjQ2OS0uNzEzLjcyNi0xLjA2Ni44NDYtMS4xNTkgMS43OTEtMi40NTMgMi4wMjMtNC44NzkgMS40NTYuNDUzIDQuMDU0IDIuMDY5IDQuMDU0IDcuODIzaDJjMC0xLjYzLS4xOTEtMi45OS0uNTA2LTQuMTMyLjYzNy0yLjI3MyAxLjc2MS0zLjIxOCAyLjU2Ny0zLjYwMS4yMzggMi4zNDYgMS4xMzcgMy41NyAyLjAxIDQuNzU5LjI2Mi4zNTcuNTA3LjcwOC43MzggMS4wOC0uNDgzIDEuNDE4LS44MDkgMy4zMjQtLjgwOSA1Ljg5NGgyYzAtNC45MDYgMS4yMTQtNi44MDcgMi4wOTgtNy41NDIuMzI1IDIuMzE1IDEuNDExIDMuNzIyIDIuNDY2IDUuMDkgMS4yNTMgMS42MjQgMi40MzYgMy4xNTggMi40MzYgNi40NTIgMCA1Ljg5OC00LjEzMiA4LTggOHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",aNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDY3LDBINDVDMjAuMTg3LDAsMCwyMC4xODcsMCw0NXY0MjJjMCwyNC44MTMsMjAuMTg3LDQ1LDQ1LDQ1aDQyMmMyNC44MTMsMCw0NS0yMC4xODcsNDUtNDVWNDUNCgkJCUM1MTIsMjAuMTg3LDQ5MS44MTMsMCw0NjcsMHogTTQ4Miw0NjdjMCw4LjI3MS02LjcyOSwxNS0xNSwxNUg0NWMtOC4yNzEsMC0xNS02LjcyOS0xNS0xNVY0NWMwLTguMjcxLDYuNzI5LTE1LDE1LTE1aDQyMg0KCQkJYzguMjcxLDAsMTUsNi43MjksMTUsMTVWNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDgxYy05Ni40OTUsMC0xNzUsNzguNTA1LTE3NSwxNzVzNzguNTA1LDE3NSwxNzUsMTc1czE3NS03OC41MDUsMTc1LTE3NVMzNTIuNDk1LDgxLDI1Niw4MXogTTI1Niw0MDENCgkJCWMtNzkuOTUzLDAtMTQ1LTY1LjA0Ny0xNDUtMTQ1czY1LjA0Ny0xNDUsMTQ1LTE0NXMxNDUsNjUuMDQ3LDE0NSwxNDVTMzM1Ljk1Myw0MDEsMjU2LDQwMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4NywyMTZjLTIyLjA1NiwwLTQwLDE3Ljk0NC00MCw0MGMwLDIyLjA1NiwxNy45NDQsNDAsNDAsNDBjMjIuMDU2LDAsNDAtMTcuOTQ0LDQwLTQwQzIyNywyMzMuOTQ0LDIwOS4wNTYsMjE2LDE4NywyMTZ6DQoJCQkgTTE4NywyNjZjLTUuNTE0LDAtMTAtNC40ODYtMTAtMTBjMC01LjUxNCw0LjQ4Ni0xMCwxMC0xMGM1LjUxNCwwLDEwLDQuNDg2LDEwLDEwQzE5NywyNjEuNTE0LDE5Mi41MTQsMjY2LDE4NywyNjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zMjUsMjE2Yy0yMi4wNTYsMC00MCwxNy45NDQtNDAsNDBjMCwyMi4wNTYsMTcuOTQ0LDQwLDQwLDQwYzIyLjA1NiwwLDQwLTE3Ljk0NCw0MC00MEMzNjUsMjMzLjk0NCwzNDcuMDU2LDIxNiwzMjUsMjE2eg0KCQkJIE0zMjUsMjY2Yy01LjUxNCwwLTEwLTQuNDg2LTEwLTEwYzAtNS41MTQsNC40ODYtMTAsMTAtMTBjNS41MTQsMCwxMCw0LjQ4NiwxMCwxMEMzMzUsMjYxLjUxNCwzMzAuNTE0LDI2NiwzMjUsMjY2eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",cNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0zNjAsMEgxMjBDOTcuOTIsMC4wMjYsODAuMDI2LDE3LjkyLDgwLDQwdjM2OGMwLjAyNCwxOS4wMDEsMTMuMzg5LDM1LjM3MywzMiwzOS4yVjQ4MGg0OHYtMzJoMTYwdjMyaDQ4di0zMi44DQoJCQljMTguNjExLTMuODI3LDMxLjk3Ni0yMC4xOTksMzItMzkuMlY0MEMzOTkuOTc0LDE3LjkyLDM4Mi4wOCwwLjAyNiwzNjAsMHogTTE0NCw0NjRoLTE2di0xNmgxNlY0NjR6IE0zNTIsNDY0aC0xNnYtMTZoMTZWNDY0eg0KCQkJIE0zODQsNDA4YzAsMTMuMjU1LTEwLjc0NSwyNC0yNCwyNEgxMjBjLTEzLjI1NSwwLTI0LTEwLjc0NS0yNC0yNFY0MGMwLTEzLjI1NSwxMC43NDUtMjQsMjQtMjRoMjQwYzEzLjI1NSwwLDI0LDEwLjc0NSwyNCwyNFY0MDgNCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCwxNjBjLTcwLjY5MiwwLTEyOCw1Ny4zMDgtMTI4LDEyOGMwLjA4NCw3MC42NTgsNTcuMzQyLDEyNy45MTYsMTI4LDEyOGM3MC42OTIsMCwxMjgtNTcuMzA4LDEyOC0xMjgNCgkJCVMzMTAuNjkyLDE2MCwyNDAsMTYweiBNMjQwLDQwMGMtNjEuODU2LDAtMTEyLTUwLjE0NC0xMTItMTEyYzAuMDY2LTYxLjgyOCw1MC4xNzItMTExLjkzNCwxMTItMTEyYzYxLjg1NiwwLDExMiw1MC4xNDQsMTEyLDExMg0KCQkJUzMwMS44NTYsNDAwLDI0MCw0MDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNDAsMTkyYy01My4wMTksMC05Niw0Mi45ODEtOTYsOTZjMC4wNTcsNTIuOTk2LDQzLjAwNCw5NS45NDMsOTYsOTZjNTMuMDE5LDAsOTYtNDIuOTgxLDk2LTk2UzI5My4wMTksMTkyLDI0MCwxOTJ6DQoJCQkgTTI0MCwzNjhjLTQ0LjE4MywwLTgwLTM1LjgxNy04MC04MGMwLjA0OS00NC4xNjMsMzUuODM3LTc5Ljk1Miw4MC04MGM0NC4xODMsMCw4MCwzNS44MTcsODAsODBDMzIwLDMzMi4xODMsMjg0LjE4MywzNjgsMjQwLDM2OA0KCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjQwLDMyYy0zMC45MjgsMC01NiwyNS4wNzItNTYsNTZjMC4wMzUsMzAuOTEzLDI1LjA4Nyw1NS45NjUsNTYsNTZjMzAuOTI4LDAsNTYtMjUuMDcyLDU2LTU2DQoJCQlDMjk2LDU3LjA3MiwyNzAuOTI4LDMyLDI0MCwzMnogTTI0MCwxMjhjLTIyLjA5MSwwLTQwLTE3LjkwOS00MC00MGMwLjAyNi0yMi4wOCwxNy45Mi0zOS45NzQsNDAtNDBjMjIuMDkxLDAsNDAsMTcuOTA5LDQwLDQwDQoJCQlTMjYyLjA5MSwxMjgsMjQwLDEyOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCw2NGMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTMjUzLjI1NSw2NCwyNDAsNjR6IE0yNDAsOTZjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJCXMzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOFMyNDQuNDE4LDk2LDI0MCw5NnoiLz4NCiAgICAgICAgPHJlY3QgeD0iMTEyIiB5PSIzMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1MiIgeT0iMzIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KICAgICAgICA8cmVjdCB4PSIxMTIiIHk9IjQwMCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1MiIgeT0iNDAwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCwyNDhjLTIyLjA5MSwwLTQwLDE3LjkwOS00MCw0MGMwLjAyNiwyMi4wOCwxNy45MiwzOS45NzQsNDAsNDBjMjIuMDkxLDAsNDAtMTcuOTA5LDQwLTQwDQoJCQlDMjgwLDI2NS45MDksMjYyLjA5MSwyNDgsMjQwLDI0OHogTTI0MCwzMTJjLTEzLjI1NSwwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQsMjQtMjRzMjQsMTAuNzQ1LDI0LDI0UzI1My4yNTUsMzEyLDI0MCwzMTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00OCwyODBIMTZjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJjNC40MTgsMCw4LTMuNTgyLDgtOFM1Mi40MTgsMjgwLDQ4LDI4MHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUzLjY1NiwyMjYuMzQ0bC0yNC0yNGMtMy4xNzgtMy4wNjktOC4yNDMtMi45ODEtMTEuMzEyLDAuMTk3Yy0yLjk5NCwzLjEtMi45OTQsOC4wMTUsMCwxMS4xMTVsMjQsMjQNCgkJCWMzLjE3OCwzLjA2OSw4LjI0MywyLjk4MSwxMS4zMTItMC4xOTdDNTYuNjUsMjM0LjM1OSw1Ni42NSwyMjkuNDQ0LDUzLjY1NiwyMjYuMzQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTMuNDYsMzM4LjM0NGMtMy4xLTIuOTk1LTguMDE2LTIuOTk1LTExLjExNiwwbC0yNCwyNGMtMy4xNzgsMy4wNy0zLjI2Niw4LjEzNC0wLjE5NiwxMS4zMTJzOC4xMzQsMy4yNjYsMTEuMzEyLDAuMTk2DQoJCQljMC4wNjctMC4wNjQsMC4xMzItMC4xMywwLjE5Ni0wLjE5NmwyNC0yNEM1Ni43MjYsMzQ2LjQ3OCw1Ni42MzgsMzQxLjQxNCw1My40NiwzMzguMzQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY0LDI4MGgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJjNC40MTgsMCw4LTMuNTgyLDgtOFM0NjguNDE4LDI4MCw0NjQsMjgweiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDYxLjQ2LDIwMi4zNDRjLTMuMS0yLjk5NC04LjAxNS0yLjk5NC0xMS4xMTYsMGwtMjQsMjRjLTMuMTI0LDMuMTI1LTMuMTIzLDguMTksMC4wMDIsMTEuMzE0DQoJCQljMS41LDEuNDk5LDMuNTM0LDIuMzQyLDUuNjU0LDIuMzQyYzIuMTIyLDAsNC4xNTYtMC44NDQsNS42NTYtMi4zNDRsMjQtMjRDNDY0LjcyNiwyMTAuNDc4LDQ2NC42MzgsMjA1LjQxNCw0NjEuNDYsMjAyLjM0NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ2MS42NTYsMzYyLjM0NGwtMjQtMjRjLTMuMTc4LTMuMDctOC4yNDItMi45ODItMTEuMzEyLDAuMTk2Yy0yLjk5NSwzLjEtMi45OTUsOC4wMTYsMCwxMS4xMTZsMjQsMjQNCgkJCWMzLjE3OCwzLjA3LDguMjQyLDIuOTgyLDExLjMxMi0wLjE5NkM0NjQuNjUxLDM3MC4zNiw0NjQuNjUxLDM2NS40NDQsNDYxLjY1NiwzNjIuMzQ0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",uNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MTIgNTYuMTY0MDYyYzAtMTIuNzk2ODc0LTEwLjQwNjI1LTIzLjIwMzEyNC0yMy4yMDMxMjUtMjMuMjAzMTI0aC00OS45Njg3NXYtMTUuMDQ2ODc2YzAtOS44Nzg5MDYtOC4wMzUxNTYtMTcuOTE0MDYyLTE3LjkxNDA2My0xNy45MTQwNjJoLTEwMy4wODk4NDNjLTkuODc4OTA3IDAtMTcuOTE0MDYzIDguMDM5MDYyLTE3LjkxNDA2MyAxNy45MTQwNjJ2MTUuMDQ2ODc2aC04Ny44MTY0MDZ2LTE1LjA0Njg3NmMwLTkuODc4OTA2LTguMDM5MDYyLTE3LjkxNDA2Mi0xNy45MTc5NjktMTcuOTE0MDYyaC0xMDMuMDg5ODQzYy05Ljg3ODkwNyAwLTE3LjkxNDA2MyA4LjAzOTA2Mi0xNy45MTQwNjMgMTcuOTE0MDYydjE1LjA0Njg3NmgtNDkuOTY4NzVjLTEyLjc5Njg3NSAwLTIzLjIwMzEyNSAxMC40MDYyNS0yMy4yMDMxMjUgMjMuMjAzMTI0djQ5LjVjMCA2LjA1MDc4MiAyLjMyODEyNSAxMS41NjI1IDYuMTM2NzE5IDE1LjY5OTIxOS0zLjgwODU5NCA0LjEzMjgxMy02LjEzNjcxOSA5LjY0ODQzOC02LjEzNjcxOSAxNS42OTkyMTl2MzA1LjgwODU5NGMwIDEyLjc5Mjk2OCAxMC40MDYyNSAyMy4yMDMxMjUgMjMuMjAzMTI1IDIzLjIwMzEyNWgyLjM3ODkwNnYyMi40NTMxMjVjMCAxMi43ODEyNSAxMC4zOTg0MzggMjMuMTc1NzgxIDIzLjE3OTY4OCAyMy4xNzU3ODFoMjMyLjYxNzE4N2M0LjE0NDUzMiAwIDcuNTAzOTA2LTMuMzU5Mzc1IDcuNTAzOTA2LTcuNSAwLTQuMTQ0NTMxLTMuMzU5Mzc0LTcuNTAzOTA2LTcuNTAzOTA2LTcuNTAzOTA2aC0yMzIuNjE3MTg3Yy00LjUwNzgxMyAwLTguMTcxODc1LTMuNjY3OTY5LTguMTcxODc1LTguMTcxODc1di0yMi40NTMxMjVoNDMwLjgyMDMxMnYyMi40NTMxMjVjMCA0LjUwNzgxMi0zLjY2NDA2MiA4LjE3MTg3NS04LjE3MTg3NSA4LjE3MTg3NWgtMTQ3LjEyNWMtNC4xNDg0MzcgMC03LjUwMzkwNiAzLjM1OTM3NS03LjUwMzkwNiA3LjUwMzkwNiAwIDQuMTQwNjI1IDMuMzU1NDY5IDcuNSA3LjUwMzkwNiA3LjVoMTQ3LjEyNWMxMi43ODEyNSAwIDIzLjE3OTY4OC0xMC4zOTQ1MzEgMjMuMTc5Njg4LTIzLjE3NTc4MXYtMjIuNDUzMTI1aDIuMzc4OTA2YzEyLjc5Mjk2OSAwIDIzLjIwMzEyNS0xMC40MTAxNTcgMjMuMjAzMTI1LTIzLjIwMzEyNXYtMzA1LjgwODU5NGMwLTYuMDUwNzgxLTIuMzMyMDMxLTExLjU2NjQwNi02LjEzNjcxOS0xNS42OTkyMTkgMy44MDQ2ODgtNC4xMzY3MTkgNi4xMzY3MTktOS42NDg0MzcgNi4xMzY3MTktMTUuNjk5MjE5em0tMTk3LjA4NTkzOC0zOC4yNWMwLTEuNjA1NDY4IDEuMzA0Njg4LTIuOTA2MjUgMi45MTAxNTctMi45MDYyNWgxMDMuMDg5ODQzYzEuNjA1NDY5IDAgMi45MTAxNTcgMS4zMDQ2ODggMi45MTAxNTcgMi45MDYyNXYxNS4wNDY4NzZoLTEwOC45MTAxNTd6bS0yMjYuNzM4MjgxIDBjMC0xLjYwNTQ2OCAxLjMwNDY4OC0yLjkwNjI1IDIuOTEwMTU3LTIuOTA2MjVoMTAzLjA4OTg0M2MxLjYwNTQ2OSAwIDIuOTEwMTU3IDEuMzA0Njg4IDIuOTEwMTU3IDIuOTA2MjV2MTUuMDQ2ODc2aC0xMDguOTEwMTU3em00MDguODE2NDA3IDQyNC45NTcwMzJjMCA0LjUxOTUzMS0zLjY3NTc4MiA4LjE5OTIxOC04LjE5NTMxMyA4LjE5OTIxOGgtNDY1LjU5Mzc1Yy00LjUxOTUzMSAwLTguMTk1MzEzLTMuNjc5Njg3LTguMTk1MzEzLTguMTk5MjE4di0zMDUuODA4NTk0YzAtNC41MTk1MzEgMy42NzU3ODItOC4xOTkyMTkgOC4xOTUzMTMtOC4xOTkyMTloNDY1LjU5Mzc1YzQuNTIzNDM3IDAgOC4xOTUzMTMgMy42Nzk2ODggOC4xOTUzMTMgOC4xOTkyMTl6bTAtMzM3LjIwNzAzMmMwIDQuNTE5NTMyLTMuNjc1NzgyIDguMTk1MzEzLTguMTk1MzEzIDguMTk1MzEzaC00NjUuNTkzNzVjLTQuNTE5NTMxIDAtOC4xOTUzMTMtMy42NzU3ODEtOC4xOTUzMTMtOC4xOTUzMTN2LTQ5LjVjMC00LjUyMzQzNyAzLjY3NTc4Mi04LjE5OTIxOCA4LjE5NTMxMy04LjE5OTIxOGg0NjUuNTkzNzVjNC41MTk1MzEgMCA4LjE5NTMxMyAzLjY3NTc4MSA4LjE5NTMxMyA4LjE5OTIxOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDYuMDk3NjU2IDU1LjE1MjM0NGMtMTQuMjA3MDMxIDAtMjUuNzYxNzE4IDExLjU1NDY4Ny0yNS43NjE3MTggMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4NyAyNS43NjE3MTkgMjUuNzYxNzE4IDI1Ljc2MTcxOSAxNC4yMDMxMjUgMCAyNS43NjE3MTktMTEuNTU0Njg3IDI1Ljc2MTcxOS0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU4NTk0LTI1Ljc1NzgxMi0yNS43NjE3MTktMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODcgMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTI5Njg4IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOCAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuMTY3OTY5IDU1LjE1MjM0NGMtMTQuMjA3MDMxIDAtMjUuNzYxNzE5IDExLjU1NDY4Ny0yNS43NjE3MTkgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4OCAyNS43NjE3MTkgMjUuNzYxNzE5IDI1Ljc2MTcxOSAxNC4yMDMxMjUgMCAyNS43NTc4MTItMTEuNTU0Njg3IDI1Ljc1NzgxMi0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg3LTI1Ljc1NzgxMi0yNS43NTc4MTItMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45MzM1OTQgMC0xMC43NTc4MTMtNC44MjQyMTktMTAuNzU3ODEzLTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTc4MTMtMTAuNzU3ODEyIDUuOTI5Njg3IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzIuODMyMDMxIDU1LjE1MjM0NGMtMTQuMjAzMTI1IDAtMjUuNzU3ODEyIDExLjU1NDY4Ny0yNS43NTc4MTIgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4NyAyNS43NjE3MTkgMjUuNzU3ODEyIDI1Ljc2MTcxOSAxNC4yMDcwMzEgMCAyNS43NjE3MTktMTEuNTU0Njg3IDI1Ljc2MTcxOS0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg4LTI1Ljc1NzgxMi0yNS43NjE3MTktMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODcgMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTMzNTk0IDAgMTAuNzU3ODEzIDQuODI4MTI1IDEwLjc1NzgxMyAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzU3ODEzIDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MDUuOTAyMzQ0IDU1LjE1MjM0NGMtMTQuMjAzMTI1IDAtMjUuNzYxNzE5IDExLjU1NDY4Ny0yNS43NjE3MTkgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1ODU5NCAyNS43NjE3MTkgMjUuNzYxNzE5IDI1Ljc2MTcxOSAxNC4yMDcwMzEgMCAyNS43NjE3MTgtMTEuNTU0Njg3IDI1Ljc2MTcxOC0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg3LTI1Ljc1NzgxMi0yNS43NjE3MTgtMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODggMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE4LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTI5Njg3IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MzQuNzQyMTg4IDE3MS45Mzc1aC0yMTguMTQ4NDM4Yy00LjE0NDUzMSAwLTcuNTAzOTA2IDMuMzU5Mzc1LTcuNTAzOTA2IDcuNSAwIDQuMTQ0NTMxIDMuMzU5Mzc1IDcuNTAzOTA2IDcuNTAzOTA2IDcuNTAzOTA2aDIxOC4xNDg0MzhjMS40Mzc1IDAgMi42MDU0NjggMS4xNzE4NzUgMi42MDU0NjggMi42MDkzNzV2MTkuODUxNTYzYzAgMS40Mzc1LTEuMTY3OTY4IDIuNjA5Mzc1LTIuNjA1NDY4IDIuNjA5Mzc1aC0zNTcuNDg0Mzc2Yy0xLjQzNzUgMC0yLjYwNTQ2OC0xLjE3MTg3NS0yLjYwNTQ2OC0yLjYwOTM3NXYtMTkuODUxNTYzYzAtMS40Mzc1IDEuMTY3OTY4LTIuNjA5Mzc1IDIuNjA1NDY4LTIuNjA5Mzc1aDEwNC4yNjk1MzJjNC4xNDQ1MzEgMCA3LjUwMzkwNi0zLjM1OTM3NSA3LjUwMzkwNi03LjUwMzkwNiAwLTQuMTQwNjI1LTMuMzU5Mzc1LTcuNS03LjUwMzkwNi03LjVoLTEwNC4yNjk1MzJjLTkuNzEwOTM3IDAtMTcuNjA5Mzc0IDcuODk4NDM4LTE3LjYwOTM3NCAxNy42MTMyODF2MTkuODUxNTYzYzAgOS43MTA5MzcgNy44OTg0MzcgMTcuNjEzMjgxIDE3LjYwOTM3NCAxNy42MTMyODFoMTAuMDM1MTU3djE2Ni40NjQ4NDRjMCAxNC4yNzczNDMgMTEuNjE3MTg3IDI1Ljg5NDUzMSAyNS44OTQ1MzEgMjUuODk0NTMxaDI4NS42MjVjMTQuMjc3MzQ0IDAgMjUuODk0NTMxLTExLjYxNzE4OCAyNS44OTQ1MzEtMjUuODk0NTMxdi0xNjYuNDY0ODQ0aDEwLjAzNTE1N2M5LjcxMDkzNyAwIDE3LjYxMzI4MS03Ljg5ODQzNyAxNy42MTMyODEtMTcuNjEzMjgxdi0xOS44NTE1NjNjMC05LjcxMDkzNy03LjkwMjM0NC0xNy42MTMyODEtMTcuNjEzMjgxLTE3LjYxMzI4MXptLTI1LjA0Mjk2OSAyMjEuNTQyOTY5YzAgNi4wMDM5MDYtNC44ODI4MTMgMTAuODg2NzE5LTEwLjg4NjcxOSAxMC44ODY3MTloLTI4NS42MjVjLTYuMDAzOTA2IDAtMTAuODkwNjI1LTQuODgyODEzLTEwLjg5MDYyNS0xMC44ODY3MTl2LTE2Ni40NjQ4NDRoMzA3LjQwMjM0NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTIuNTQyOTY5IDI5NC44NTkzNzVjMi4wMjM0MzcgMCA0LjA0Mjk2OS0uODE2NDA2IDUuNTIzNDM3LTIuNDIxODc1bDIzLjAxMTcxOS0yNS4wMTU2MjVjMi44MDg1OTQtMy4wNTA3ODEgMi42MDkzNzUtNy43OTY4NzUtLjQ0MTQwNi0xMC42MDE1NjMtMy4wNTA3ODEtMi44MDQ2ODctNy43OTI5NjktMi42MDkzNzQtMTAuNjAxNTYzLjQ0MTQwN2wtMjMuMDExNzE4IDI1LjAxNTYyNWMtMi44MDQ2ODggMy4wNDY4NzUtMi42MDkzNzYgNy43OTI5NjguNDQxNDA2IDEwLjYwMTU2MiAxLjQ0MTQwNiAxLjMyNDIxOSAzLjI2MTcxOCAxLjk4MDQ2OSA1LjA3ODEyNSAxLjk4MDQ2OXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTQuMTg3NSAzMjQuMTM2NzE5YzEuNDQxNDA2IDEuMzI4MTI1IDMuMjYxNzE5IDEuOTgwNDY5IDUuMDc4MTI1IDEuOTgwNDY5IDIuMDIzNDM3IDAgNC4wNDI5NjktLjgxNjQwNyA1LjUyMzQzNy0yLjQyMTg3Nmw0Ny4zMTY0MDctNTEuNDI5Njg3YzIuODA0Njg3LTMuMDUwNzgxIDIuNjA5Mzc1LTcuNzk2ODc1LS40NDE0MDctMTAuNjA1NDY5LTMuMDUwNzgxLTIuODA0Njg3LTcuNzk2ODc0LTIuNjA1NDY4LTEwLjYwMTU2Mi40NDE0MDZsLTQ3LjMxNjQwNiA1MS40MzM1OTRjLTIuODA0Njg4IDMuMDQ2ODc1LTIuNjA1NDY5IDcuNzk2ODc1LjQ0MTQwNiAxMC42MDE1NjN6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",lNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTEyMi4yNSAxNy4yNjZoLTExNi41YTUuNzU2IDUuNzU2IDAgMCAwIC01Ljc1IDUuNzV2NjcuOTk0YTUuNzU3IDUuNzU3IDAgMCAwIDUuNzUgNS43NWg5Ljg4M2wtMy4wNjggNC40NGE2LjA3OSA2LjA3OSAwIDAgMCAxMCA2LjkxMmw3Ljg0Ny0xMS4zNTJoNjcuMTc2bDcuODQ0IDExLjM1MWE2LjA3OSA2LjA3OSAwIDAgMCAxMC02LjkxMmwtMy4wNjgtNC40MzloOS44ODNhNS43NTcgNS43NTcgMCAwIDAgNS43NTMtNS43NXYtNjcuOTk0YTUuNzU2IDUuNzU2IDAgMCAwIC01Ljc1LTUuNzV6bS0xMDIuNTYxIDg4Ljg1NmEyLjU4MiAyLjU4MiAwIDAgMSAtMi4xMjIgMS4xMTIgMi41OCAyLjU4IDAgMCAxIC0yLjEyMy00LjA0Nmw0LjQ0My02LjQyOGg2LjI3MXptOTIuODY3LTIuOTM0YTIuNTggMi41OCAwIDAgMSAtMi4xMjMgNC4wNDYgMi41ODUgMi41ODUgMCAwIDEgLTIuMTIzLTEuMTEybC02LjQ2OC05LjM2Mmg2LjI3MXptMTEuOTQ0LTEyLjE3OGEyLjI1MyAyLjI1MyAwIDAgMSAtMi4yNSAyLjI1aC0xMTYuNWEyLjI1MyAyLjI1MyAwIDAgMSAtMi4yNS0yLjI1di02Ny45OTRhMi4yNTMgMi4yNTMgMCAwIDEgMi4yNS0yLjI1aDExNi41YTIuMjUzIDIuMjUzIDAgMCAxIDIuMjUgMi4yNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExOC4yNSAyNS4yNjZoLTEwOC41YTEuNzQ5IDEuNzQ5IDAgMCAwIC0xLjc1IDEuNzV2NTkuOTk0YTEuNzUgMS43NSAwIDAgMCAxLjc1IDEuNzVoMTA4LjVhMS43NSAxLjc1IDAgMCAwIDEuNzUtMS43NXYtNTkuOTk0YTEuNzQ5IDEuNzQ5IDAgMCAwIC0xLjc1LTEuNzV6bS0xLjc1IDU5Ljk5NGgtMTA1di01Ni40OTRoMTA1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDEuMzc1IDQ3LjkyMmg3LjN2MTkuOTMyYTEuNzUgMS43NSAwIDAgMCAzLjUgMHYtMTkuOTMyaDcuM2ExLjc1IDEuNzUgMCAwIDAgMC0zLjVoLTE4LjFhMS43NSAxLjc1IDAgMCAwIDAgMy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNzUuOTYzIDY4LjUyN2ExLjc0OSAxLjc0OSAwIDAgMCAzLjIzIDBsOS4wNDctMjEuNjgxYTEuNzUgMS43NSAwIDEgMCAtMy4yMy0xLjM0NmwtNy40MzIgMTcuODA5LTcuNDMyLTE3LjgwOWExLjc1IDEuNzUgMCAxIDAgLTMuMjMgMS4zNDh6Ii8+DQogICAgPC9nPg0KPC9zdmc+",NNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01OSwySDVBMywzLDAsMCwwLDIsNVY1OWEzLDMsMCwwLDAsMywzSDU5YTMsMywwLDAsMCwzLTNWNUEzLDMsMCwwLDAsNTksMlptMSw1N2ExLDEsMCwwLDEtMSwxSDVhMSwxLDAsMCwxLTEtMVY1QTEsMSwwLDAsMSw1LDRINTlhMSwxLDAsMCwxLDEsMVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMyLDZBMjYsMjYsMCwxLDAsNTgsMzIsMjYuMDI5LDI2LjAyOSwwLDAsMCwzMiw2Wm0wLDUwQTI0LDI0LDAsMSwxLDU2LDMyLDI0LjAyOCwyNC4wMjgsMCwwLDEsMzIsNTZaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0zMiwxMEEyMiwyMiwwLDEsMCw1NCwzMiwyMi4wMjUsMjIuMDI1LDAsMCwwLDMyLDEwWm0xMC4xNzUsNC44MTNjMi40NjksOS41NS0zLjYxMywxMi45LTYuNDI4LDEzLjkxMWE1LDUsMCwwLDAtMS42NS0xLjI0NywxMS4zNzQsMTEuMzc0LDAsMCwwLDMuMzExLTYuNzk0Yy4yNDktMi44NDUtLjc5LTUuNzA2LTMuMDUtOC41MzFBMTkuODI0LDE5LjgyNCwwLDAsMSw0Mi4xNzUsMTQuODEzWk0zNSwzMmEzLDMsMCwxLDEtMy0zQTMsMywwLDAsMSwzNSwzMlpNMzEuNTg2LDEyLjAyMWMyLjc2NywyLjg3Myw0LjA2Niw1LjcyMiwzLjgzMSw4LjQ3YTEwLjEsMTAuMSwwLDAsMS0zLjc4NCw2LjUzLDE5LjY1MiwxOS42NTIsMCwwLDAtOS41ODUtMTIuMzQ0QTE5LjgzOCwxOS44MzgsMCwwLDEsMzEuNTg2LDEyLjAyMVpNMjAuMTIsMTUuOTQ4YTE3LjY1NywxNy42NTcsMCwwLDEsOS41OTIsMTEuNjMzLDQuOTUxLDQuOTUxLDAsMCwwLS45NTcuNjQ3LDE4Ljg4NiwxOC44ODYsMCwwLDAtMTQuMzM4LTUuNzUyQTIwLjEyNiwyMC4xMjYsMCwwLDEsMjAuMTIsMTUuOTQ4Wk0xMiwzMmExOS44NywxOS44NywwLDAsMSwxLjQ0Mi03LjQxNkExNi4zODUsMTYuMzg1LDAsMCwxLDI1LjgxNiwyOC4yNmExMy43OSwxMy43OSwwLDAsMC04LjA2NCwxLjI5MUExMi42NDQsMTIuNjQ0LDAsMCwwLDEyLjMxMSwzNS40LDE5LjkxMywxOS45MTMsMCwwLDEsMTIsMzJabTEuMTY0LDYuNjZjMS4xMy0zLjUyOSwyLjk4Mi02LDUuNTItNy4zNGExMi42NDMsMTIuNjQzLDAsMCwxLDguNTYxLS43ODdBNC45MTksNC45MTksMCwwLDAsMjcsMzJjMCwuMTA5LjAyNS4yMTEuMDMyLjMxOC0yLjAwOC45MTUtNy45NjEsNC40Mi04LjksMTQuMDYzQTIwLjAzNCwyMC4wMzQsMCwwLDEsMTMuMTY0LDM4LjY2Wm02Ljg3OCw5LjMzM2MuMzY0LTkuMjc5LDUuNTYzLTEyLjc0Myw3LjUzMS0xMy43MTlhNSw1LDAsMCwwLDEuMDY1LDEuNGMtLjk1OCwyLjYwOS0yLjg1Myw5Ljc5MSwyLjEwOCwxNi4yNjFBMTkuODU2LDE5Ljg1NiwwLDAsMSwyMC4wNDIsNDcuOTkzWk0zMy4zODEsNTEuOTNjLTUuNC01LjczMy0zLjkyLTEyLjQ5NS0yLjk4OC0xNS4yMTlBNC45MjksNC45MjksMCwwLDAsMzIsMzdjLjA4MSwwLC4xNTYtLjAyLjIzNS0uMDI0LjYsMy4wNDksMi44MjksOS4yMjMsMTEuMTExLDExLjQ3NUExOS44NTYsMTkuODU2LDAsMCwxLDMzLjM4MSw1MS45M1ptMTEuOTY2LTUuMDc4Yy04LjQ0MS0xLjYxNy0xMC42MjMtNy4yOTItMTEuMTc0LTEwLjM3YTUuMDA2LDUuMDA2LDAsMCwwLDEuMDg0LS43MTljMS44NjgsMS45LDYuMjE1LDUuNjMzLDExLjUyMiw1LjYzM2ExMS4yMDgsMTEuMjA4LDAsMCwwLDMuMDg1LS40NTVBMjAuMDY5LDIwLjA2OSwwLDAsMSw0NS4zNDcsNDYuODUyWk01MiwzMmExOS45LDE5LjksMCwwLDEtMS4wNzQsNi40MTRjLTYuNTA3LDMuMTItMTIuNDYyLTIuMTg0LTE0LjQzOC00LjI1MWE0LjkyNyw0LjkyNywwLDAsMCwuMzY5LTEuMDI1LDE2LjYsMTYuNiwwLDAsMCwxLjc4OS4wOTQsMTguMzI4LDE4LjMyOCwwLDAsMCwxMi45MjYtNS4zMzlBMjAsMjAsMCwwLDEsNTIsMzJabS0xNS4wODgtLjg2OGE0Ljc0NSw0Ljc0NSwwLDAsMC0uMTczLS42NWMyLjkyNi0xLjE1NSw5LjIzNC00Ljc2Niw3LjgxNy0xNC4wMjhhMjAuMDU3LDIwLjA1NywwLDAsMSw2LjM5NCw5LjJBMTYuMzQ0LDE2LjM0NCwwLDAsMSwzNi45MTIsMzEuMTMyWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOSwxMkEzLDMsMCwxLDAsNiw5LDMsMywwLDAsMCw5LDEyWk05LDhBMSwxLDAsMSwxLDgsOSwxLDEsMCwwLDEsOSw4WiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTUsNmEzLDMsMCwxLDAsMywzQTMsMywwLDAsMCw1NSw2Wm0wLDRhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsNTUsMTBaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMiw1NWEzLDMsMCwwLDAtMy0zLDIuOTY2LDIuOTY2LDAsMCwwLTEsLjE4NFY0NUg2VjU1YTMsMywwLDAsMCwzLDNoNlY1NkgxMS44MTZBMi45NjYsMi45NjYsMCwwLDAsMTIsNTVaTTksNTZhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsOSw1NloiLz4NCiAgICAgICAgPHBhdGggZD0iTTU2LDUyLjE4NEEyLjk2NiwyLjk2NiwwLDAsMCw1NSw1MmEzLDMsMCwwLDAtMywzLDIuOTY2LDIuOTY2LDAsMCwwLC4xODQsMUg0NXYySDU1YTMsMywwLDAsMCwzLTNWNDlINTZaTTU1LDU2YTEsMSwwLDEsMSwxLTFBMSwxLDAsMCwxLDU1LDU2WiIvPg0KICAgICAgICA8cmVjdCB4PSIxNyIgeT0iNTYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",LNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyOC42MDcgNDI4LjYwNyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQyMy43NzMsMzQzLjg3MUw0MjMuNzczLDM0My44NzFjLTYuNjE3LTQuNTk5LTEyLjQ0LTEwLjI0Ni0xNy4yNDEtMTYuNzE4Yy0xMS40OTQtMTMuMDYxLTI2LjEyMi0yOS4yNTctNTMuMjktMjkuMjU3DQoJCQkJYy0yNy4xNjcsMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjUNCgkJCQljLTEwLjk3MS0xMi41MzktMjUuNi0yOS43OC01My4yOS0yOS43OGMtMjcuNjksMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NQ0KCQkJCXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjVjLTcuNDU4LTkuODUtMTYuODg5LTE4LjAzNS0yNy42OS0yNC4wMzNjLTUuMTk0LTIuNTk3LTExLjUwOS0wLjQ5Mi0xNC4xMDYsNC43MDINCgkJCQljLTIuNTk3LDUuMTk0LTAuNDkyLDExLjUwOSw0LjcwMiwxNC4xMDZjOC4yMDMsNC45NDQsMTUuNDU3LDExLjMxNCwyMS40MiwxOC44MDhjMTIuMDE2LDE0LjEwNiwyNi4xMjIsMjkuNzgsNTMuMjksMjkuNzgNCgkJCQlzNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NXMyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NQ0KCQkJCWMxMC45NzEsMTIuNTM5LDI1LjYsMjkuNzgsNTMuMjksMjkuNzhjMjcuNjksMCw0MS4yNzMtMTUuNjczLDUzLjI5LTI5Ljc4YzEyLjAxNi0xNC4xMDYsMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1DQoJCQkJYzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1YzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc1YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3MSwxNC42MjktMy4xMzUNCgkJCQlDNDMwLjA4MiwzNTMuNTk0LDQyOC42NzksMzQ3LjA0NSw0MjMuNzczLDM0My44NzF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MjMuNzczLDI2NS41MDNMNDIzLjc3MywyNjUuNTAzYy02LjYxNy00LjU5OS0xMi40NC0xMC4yNDYtMTcuMjQxLTE2LjcxOGMtMTEuNDk0LTEzLjA2MS0yNi4xMjItMjkuMjU3LTUzLjI5LTI5LjI1Nw0KCQkJCWMtMjcuMTY3LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjVzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1DQoJCQkJYy0xMC45NzEtMTIuNTM5LTI1LjYtMjkuNzgtNTMuMjktMjkuNzhjLTI3LjY5LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjUNCgkJCQlzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1Yy03LjQ1OC05Ljg1LTE2Ljg4OS0xOC4wMzUtMjcuNjktMjQuMDMzYy01LjE5NC0yLjU5Ny0xMS41MDktMC40OTItMTQuMTA2LDQuNzAyDQoJCQkJcy0wLjQ5MiwxMS41MDksNC43MDIsMTQuMTA2YzguMjAzLDQuOTQ0LDE1LjQ1NywxMS4zMTQsMjEuNDIsMTguODA4YzEyLjAxNiwxNC4xMDYsMjYuMTIyLDI5Ljc4LDUzLjI5LDI5Ljc4DQoJCQkJczQxLjI3My0xNS42NzMsNTMuMjktMjkuNzhjMTIuMDE2LTE0LjEwNiwxOS44NTMtMjIuNDY1LDM3LjYxNi0yMi40NjVzMjYuNjQ1LDkuOTI3LDM3LjYxNiwyMi40NjUNCgkJCQljMTAuOTcxLDEyLjUzOSwyNS42LDI5Ljc4LDUzLjI5LDI5Ljc4YzI3LjY5LDAsNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NQ0KCQkJCWMxNy43NjMsMCwyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NWM2LjA4OSw3LjgxOCwxMy4zMDgsMTQuNjg1LDIxLjQyLDIwLjM3NWM0LjkwNSwzLjE3NCwxMS40NTUsMS43NzEsMTQuNjI5LTMuMTM1DQoJCQkJQzQzMC4wODIsMjc1LjIyNyw0MjguNjc5LDI2OC42NzcsNDIzLjc3MywyNjUuNTAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDIzLjc3MywxODEuOTExTDQyMy43NzMsMTgxLjkxMWMtNi42MTctNC41OTktMTIuNDQtMTAuMjQ2LTE3LjI0MS0xNi43MThjLTExLjQ5NC0xMy4wNjEtMjYuMTIyLTI5LjI1Ny01My4yOS0yOS4yNTcNCgkJCQljLTI3LjE2NywwLTQxLjI3MywxNS42NzMtNTMuMjksMjkuNzhzLTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjVzLTI1LjYtMjkuNzgtNTMuMjktMjkuNzgNCgkJCQljLTI3LjY5LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjVzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1DQoJCQkJYy03LjQ1OC05Ljg1LTE2Ljg4OS0xOC4wMzUtMjcuNjktMjQuMDMzYy01LjE5NC0yLjU5Ny0xMS41MDktMC40OTItMTQuMTA2LDQuNzAyYy0yLjU5Nyw1LjE5NC0wLjQ5MiwxMS41MDksNC43MDIsMTQuMTA2DQoJCQkJYzguMjAzLDQuOTQ0LDE1LjQ1NywxMS4zMTQsMjEuNDIsMTguODA4YzEyLjAxNiwxNC4xMDYsMjYuMTIyLDI5Ljc4LDUzLjI5LDI5Ljc4czQxLjI3My0xNS42NzMsNTMuMjktMjkuNzgNCgkJCQljMTIuMDE2LTE0LjEwNiwxOS44NTMtMjIuNDY1LDM3LjYxNi0yMi40NjVzMjYuNjQ1LDkuOTI3LDM3LjYxNiwyMi40NjVzMjUuNiwyOS43OCw1My4yOSwyOS43OA0KCQkJCWMyNy42OSwwLDQxLjI3My0xNS42NzMsNTMuMjktMjkuNzhzMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1YzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1DQoJCQkJYzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc1YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3MSwxNC42MjktMy4xMzUNCgkJCQlDNDMwLjA4MiwxOTEuNjM1LDQyOC42NzksMTg1LjA4NSw0MjMuNzczLDE4MS45MTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01LjgxNCw4Mi4xMjRjOC4yMDMsNC45NDQsMTUuNDU3LDExLjMxNCwyMS40MiwxOC44MDhjMTIuMDE2LDE0LjEwNiwyNi4xMjIsMjkuNzgsNTMuMjksMjkuNzgNCgkJCQlzNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NXMyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NQ0KCQkJCWMxMC45NzEsMTIuNTM5LDI1LjYsMjkuNzgsNTMuMjksMjkuNzhjMjcuNjksMCw0MS4yNzMtMTUuNjczLDUzLjI5LTI5Ljc4YzEyLjAxNi0xNC4xMDYsMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1DQoJCQkJYzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1YzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc2YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3LDE0LjYyOS0zLjEzNQ0KCQkJCWMzLjE3NC00LjkwNSwxLjc3MS0xMS40NTUtMy4xMzUtMTQuNjI5aDBjLTYuNjE3LTQuNTk5LTEyLjQ0LTEwLjI0Ni0xNy4yNDEtMTYuNzE4Yy0xMS40OTQtMTMuMDYxLTI2LjEyMi0yOS4yNTctNTMuMjktMjkuMjU3DQoJCQkJYy0yNy4xNjcsMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjUNCgkJCQljLTEwLjk3MS0xMi41MzktMjUuNi0yOS43OC01My4yOS0yOS43OGMtMjcuNjksMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NQ0KCQkJCVM1My44OCw5OS44ODcsNDIuOTA4LDg3LjM0OGMtNy40NTgtOS44NS0xNi44ODktMTguMDM1LTI3LjY5LTI0LjAzM2MtNS4xOTQtMi41OTctMTEuNTA5LTAuNDkyLTE0LjEwNiw0LjcwMg0KCQkJCVMwLjYyMSw3OS41MjcsNS44MTQsODIuMTI0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",jNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUwOCA1MDgiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxyZWN0IHg9IjEzOS4zIiB3aWR0aD0iMTYuNCIgaGVpZ2h0PSIzOC4yIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTA0LjEsMjEuNCA4OC45LDI3LjcgOTgsNDkuOCAxMTMuMiw0My41IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjcuNSw4OS40IDIxLjMsMTA0LjYgNDMuMywxMTMuNyA0OS41LDk4LjUgCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOTAuOSwyMS40IDE4MS44LDQzLjUgMTk2LjksNDkuOCAyMDYsMjcuNyAJCSIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9IjQzLjMsMTgyLjcgMjEuMywxOTEuOCAyNy41LDIwNyA0OS41LDE5Ny45IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjY3LjQsODkuNCAyNDUuNCw5OC41IDI1MS43LDExMy43IDI3My43LDEwNC42IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjQ2LDM3LjYgMjE5LjEsNjQuNiAyMzAuNyw3Ni4zIDI1Ny42LDQ5LjIgCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI2NC4zLDIyMC4xIDM3LjQsMjQ3LjEgNDksMjU4LjggNzUuOSwyMzEuNyAJCSIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE0LjMsMTQwIDAsMTQwIDAsMTU2LjQgMTQuMywxNTYuNCAzOC4xLDE1Ni40IDM4LjEsMTQwIAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNTkuMSw0Ny43IDQ5LDM3LjYgMzcuNCw0OS4yIDY0LjMsNzYuMyA3NS45LDY0LjYgCQkiLz4NCiAgICAgICAgPHBhdGggZD0iTTMxOS41LDE3Mi45djE2LjVjNDkuNywwLDkwLjEsNDAuNiw5MC4xLDkwLjZINDI2QzQyNi4xLDIyMC45LDM3OC4zLDE3Mi45LDMxOS41LDE3Mi45eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY2LjEsMjk1LjVjMC42LTUuNiwwLjktMTAuNiwwLjktMTUuNmMwLTgxLjctNjYuMi0xNDguMi0xNDcuNS0xNDguMmMtMjguNCwwLTU1LjUsOC4yLTc4LjcsMjNjMC4yLTIuMiwwLjUtNC4zLDAuNS02LjUNCgkJCWMwLTUyLTQyLjEtOTQuMy05My44LTk0LjNzLTkzLjgsNDIuMy05My44LDk0LjNjMCwzMC42LDE0LjksNTkuMSwzOS41LDc2LjdjLTE1LjQsMTcuMi0yNS41LDM5LjMtMjcuMyw2My43DQoJCQljLTM3LDQtNjUuOCwzNS41LTY1LjgsNzMuN2MwLDQwLjksMzMuMSw3NC4xLDczLjcsNzQuMWgzNjAuNWM0MC43LDAsNzMuNy0zMy4yLDczLjctNzQuMUM1MDgsMzMzLjcsNDkxLjQsMzA3LjcsNDY2LjEsMjk1LjV6DQoJCQkgTTcwLDE0OC4yYzAtNDIuOSwzNC43LTc3LjgsNzcuNC03Ny44YzQyLjcsMCw3Ny40LDM0LjksNzcuNCw3Ny44YzAsNi45LTAuOSwxMy45LTIuNywyMC42Yy04LjMsNy40LTE1LjcsMTUuNS0yMi4xLDI0LjQNCgkJCWMtMzMuMS05LjEtNjguNy0xLjMtOTQuOSwyMC4xQzgzLjMsMTk5LDcwLDE3NC41LDcwLDE0OC4yeiBNNDM0LjMsNDE5LjlINzMuN2MtMzEuNiwwLTU3LjQtMjUuOS01Ny40LTU3LjYNCgkJCWMwLTMxLjgsMjUuNy01Ny42LDU3LjQtNTcuNmg4LjJ2LTguMmMwLTQ5LjksNDAuNC05MC42LDkwLjEtOTAuNmMxNC40LDAsMzQuNyw2LjgsMzQuNyw2LjhzMzguNy02NC40LDExMi44LTY0LjQNCgkJCWM3Mi4zLDAsMTMxLjEsNTkuMSwxMzEuMSwxMzEuN2MwLDEzLjktMi42LDI2LjEtMi42LDI2LjFsNi4yLDIuM2MyMi4zLDguNCwzNy4zLDMwLjEsMzcuMyw1My45DQoJCQlDNDkxLjYsMzk0LDQ2NS45LDQxOS45LDQzNC4zLDQxOS45eiIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9Ijg4LjQsNDU1LjIgNDcuNSw0OTYuNCA1OS4xLDUwOCAxMDAsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNzguNiw0NTUuMiAxMzcuNiw0OTYuNCAxNDkuMiw1MDggMTkwLjEsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyNjguNyw0NTUuMiAyMjcuNyw0OTYuNCAyMzkuMyw1MDggMjgwLjMsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzNTguOCw0NTUuMiAzMTcuOSw0OTYuNCAzMjkuNCw1MDggMzcwLjQsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI0NDguOSw0NTUuMiA0MDgsNDk2LjQgNDE5LjYsNTA4IDQ2MC41LDQ2Ni44IAkJIi8+DQogICAgPC9nPg0KPC9zdmc+DQo=",gNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MSA1NWgtNXYtNDRhMy4wMDkgMy4wMDkgMCAwIDAgMy0zdi01YTEgMSAwIDAgMCAtMS0xaC01MmExIDEgMCAwIDAgLTEgMXY1YTMuMDA5IDMuMDA5IDAgMCAwIDMgM3Y0NGgtNWExIDEgMCAwIDAgLTEgMXY1YTEgMSAwIDAgMCAxIDFoNThhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAgLTEtMXptLTU0LTQ3di00aDUwdjRhMSAxIDAgMCAxIC0xIDFoLTQ4YTEgMSAwIDAgMSAtMS0xem00NyAzdjQ0aC00NHYtNDR6bTYgNDloLTU2di0zaDU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTIgMTJoLTQwYTEgMSAwIDAgMCAtMSAxdjQwYTEgMSAwIDAgMCAxIDFoNDBhMSAxIDAgMCAwIDEtMXYtNDBhMSAxIDAgMCAwIC0xLTF6bS0yMSA0MGgtMTh2LTE5aDE4em0wLTIxaC0xOHYtMTdoMTh6bTIwIDIxaC0xOHYtMTloMTh6bTAtMjFoLTE4di0xN2gxOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE1LjE3MiAxOGg1LjY1N3YyaC01LjY1N3oiIHRyYW5zZm9ybT0ibWF0cml4KC43MDcgLS43MDcgLjcwNyAuNzA3IC04LjE2MyAxOC4yOTMpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNC4xMzYgMjAuNWgxMi43Mjh2MmgtMTIuNzI4eiIgdHJhbnNmb3JtPSJtYXRyaXgoLjcwNyAtLjcwNyAuNzA3IC43MDcgLTkuMTk4IDIwLjc5MykiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",TNe={"Alarm Systems":"PHN2ZyBoZWlnaHQ9IjUxMXB0IiB2aWV3Qm94PSItMzEgMCA1MTEgNTExLjk5OTk4IiB3aWR0aD0iNTExcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTIzNS4zMjgxMjUgMTE5LjE2Nzk2OWMyMC44Mzk4NDQgOC4wNTg1OTMgMzUuNjQ0NTMxIDIxLjE0ODQzNyA0NC42MzI4MTMgNDEuNTAzOTA2Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzEuNjg3NSAxMjguNTg1OTM4YzE4Ljk4MDQ2OSA3LjMzOTg0MyAzMS4zODI4MTIgMTguODMyMDMxIDM5LjAzNTE1NiAzNi4xNjQwNjIgMS42Njc5NjkgMy43NzM0MzggNS4zNjMyODIgNi4wMjM0MzggOS4yNDIxODggNi4wMjM0MzggMS4zNjMyODEgMCAyLjc0NjA5NC0uMjc3MzQ0IDQuMDcwMzEyLS44NjMyODIgNS4xMDU0NjktMi4yNTM5MDYgNy40MTQwNjMtOC4yMTQ4NDQgNS4xNjAxNTYtMTMuMzE2NDA2LTkuODIwMzEyLTIyLjI1LTI2LjI1LTM3LjU3NDIxOS01MC4yMjY1NjItNDYuODQzNzUtNS4xOTkyMTktMi4wMTE3MTktMTEuMDQ2ODc1LjU3NDIxOS0xMy4wNTg1OTQgNS43NzczNDQtMi4wMTE3MTggNS4yMDMxMjUuNTc4MTI1IDExLjA0Njg3NSA1Ljc3NzM0NCAxMy4wNTg1OTR6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjA3LjEwNTQ2OSAyMzcuODEyNWMyMC4wODk4NDMgMCAzNi40Mzc1LTE2LjM0Mzc1IDM2LjQzNzUtMzYuNDMzNTk0IDAtMjAuMDkzNzUtMTYuMzQ3NjU3LTM2LjQzNzUtMzYuNDM3NS0zNi40Mzc1LTIwLjA4OTg0NCAwLTM2LjQzNzUgMTYuMzQzNzUtMzYuNDM3NSAzNi40Mzc1IDAgMjAuMDg5ODQ0IDE2LjM0NzY1NiAzNi40MzM1OTQgMzYuNDM3NSAzNi40MzM1OTR6bTAtNTIuNjc1NzgxYzguOTUzMTI1IDAgMTYuMjQyMTg3IDcuMjg1MTU2IDE2LjI0MjE4NyAxNi4yNDIxODcgMCA4Ljk1MzEyNS03LjI4OTA2MiAxNi4yMzgyODItMTYuMjQyMTg3IDE2LjIzODI4Mi04Ljk1NzAzMSAwLTE2LjI0MjE4OC03LjI4NTE1Ny0xNi4yNDIxODgtMTYuMjM4MjgyIDAtOC45NTcwMzEgNy4yODUxNTctMTYuMjQyMTg3IDE2LjI0MjE4OC0xNi4yNDIxODd6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkwLjE3OTY4OCAxNDcuMDE1NjI1YzMuNzY1NjI0IDAgNy4zOTg0MzctLjU3NDIxOSAxMC44MjAzMTItMS42MzY3MTlsNy4zMzk4NDQgOS44NzEwOTRjMTMuOTQxNDA2IDE4Ljc1IDIxLjYyMTA5NCA0MS45NDUzMTIgMjEuNjIxMDk0IDY1LjMxMjV2NTkuMTUyMzQ0YzAgNS41NzgxMjUgNC41MjM0MzcgMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTYgNS41NzQyMTggMCAxMC4wOTc2NTYtNC41MTk1MzEgMTAuMDk3NjU2LTEwLjA5NzY1NnYtNTkuMTUyMzQ0YzAtMjcuNjc1NzgxLTkuMDkzNzUtNTUuMTUyMzQ0LTI1LjYwOTM3NS03Ny4zNTkzNzVsLTYuNjc1NzgxLTguOTgwNDY5YzUuNDQ5MjE4LTYuMzY3MTg3IDguNzQ2MDk0LTE0LjYyNSA4Ljc0NjA5NC0yMy42NDA2MjUgMC0yMC4wOTM3NS0xNi4zNDM3NS0zNi40Mzc1LTM2LjQzNzUtMzYuNDM3NS0yMC4wODk4NDQgMC0zNi40MzM1OTQgMTYuMzQzNzUtMzYuNDMzNTk0IDM2LjQzNzUgMCAyMC4wODk4NDQgMTYuMzQzNzUgMzYuNDMzNTk0IDM2LjQzMzU5NCAzNi40MzM1OTR6bTAtNTIuNjc1NzgxYzguOTU3MDMxIDAgMTYuMjQyMTg3IDcuMjg1MTU2IDE2LjI0MjE4NyAxNi4yNDIxODcgMCA4Ljk1MzEyNS03LjI4NTE1NiAxNi4yNDIxODgtMTYuMjQyMTg3IDE2LjI0MjE4OC04Ljk1MzEyNiAwLTE2LjI0MjE4OC03LjI4OTA2My0xNi4yNDIxODgtMTYuMjQyMTg4IDAtOC45NTcwMzEgNy4yODkwNjItMTYuMjQyMTg3IDE2LjI0MjE4OC0xNi4yNDIxODd6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjA1ODU5NCAzNDkuMDUwNzgxYy01LjU3ODEyNSAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU3djYzLjMyMDMxMmMwIDE0LjIzMDQ2OS0xMS41NzgxMjYgMjUuODA4NTk0LTI1LjgwODU5NCAyNS44MDg1OTRoLTQ0LjU5NzY1NnYtMzMuNDI5Njg4YzAtNS41NzgxMjUtNC41MTk1MzItMTAuMDk3NjU2LTEwLjA5Mzc1LTEwLjA5NzY1NmgtNDIuMjY1NjI2di0xMTIuNDUzMTI1YzIxLjg1NTQ2OS0yNC4wMzUxNTYgMzUuMTkxNDA3LTU1Ljk0OTIxOSAzNS4xOTE0MDctOTAuOTE3OTY5IDAtNzQuNTk3NjU2LTYwLjY4NzUtMTM1LjI4NTE1Ni0xMzUuMjgxMjUtMTM1LjI4NTE1NnMtMTM1LjI4MTI1IDYwLjY4NzUtMTM1LjI4MTI1IDEzNS4yODUxNTZjMCAzMy4xMDU0NjkgMTEuOTU3MDMxIDYzLjQ2NDg0NCAzMS43NzczNDMgODcuMDAzOTA2djIxMy41MTk1MzJjMCA1LjU3ODEyNSA0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU3IDEwLjA5NzY1NmgyMzUuNzYxNzE5YzUuNTc0MjE4IDAgMTAuMDkzNzUtNC41MTk1MzEgMTAuMDkzNzUtMTAuMDk3NjU2di0zMy40Mjk2ODhoNDQuNTk3NjU2YzI1LjM2NzE4NyAwIDQ2LjAwMzkwNi0yMC42MzY3MTggNDYuMDAzOTA2LTQ2LjAwMzkwNnYtNjMuMzIwMzEyYzAtNS41NzgxMjYtNC41MjM0MzgtMTAuMDk3NjU3LTEwLjA5NzY1Ni0xMC4wOTc2NTd6bS0yMzIuOTUzMTI1LTI2Mi43NjE3MTljNjMuNDU3MDMxIDAgMTE1LjA4NTkzNyA1MS42Mjg5MDcgMTE1LjA4NTkzNyAxMTUuMDg5ODQ0IDAgNjMuNDU3MDMyLTUxLjYyODkwNiAxMTUuMDg1OTM4LTExNS4wODU5MzcgMTE1LjA4NTkzOC02My40NjA5MzggMC0xMTUuMDg1OTM4LTUxLjYyODkwNi0xMTUuMDg1OTM4LTExNS4wODU5MzggMC02My40NjA5MzcgNTEuNjI1LTExNS4wODk4NDQgMTE1LjA4NTkzOC0xMTUuMDg5ODQ0em0tODMuMzA4NTk0IDIyMS42MDE1NjNjMjIuOTgwNDY5IDE4LjAxNTYyNSA1MS45MTAxNTYgMjguNzY5NTMxIDgzLjMwODU5NCAyOC43Njk1MzEgMjkuODYzMjgxIDAgNTcuNDkyMTg3LTkuNzM0Mzc1IDc5Ljg5NDUzMS0yNi4xODc1djE4MS4zMzIwMzJoLTE2My4yMDMxMjV6bTIxNS41NjY0MDYgMTgzLjkxNDA2M2gtMzIuMTY3OTY5di02Ni44NTkzNzZoMzIuMTY3OTY5em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0OC4xNjAxNTYgMzc3Ljc4OTA2MmgxNy45MjU3ODJjNS41NzQyMTggMCAxMC4wOTc2NTYtNC41MjM0MzcgMTAuMDk3NjU2LTEwLjA5NzY1NiAwLTUuNTc4MTI1LTQuNTIzNDM4LTEwLjA5NzY1Ni0xMC4wOTc2NTYtMTAuMDk3NjU2aC0xNy45MjU3ODJjLTUuNTc0MjE4IDAtMTAuMDk3NjU2IDQuNTE5NTMxLTEwLjA5NzY1NiAxMC4wOTc2NTYgMCA1LjU3NDIxOSA0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU2IDEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTguMTQ0NTMxIDM3Ny43ODkwNjJoMTcuOTIxODc1YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTIzNDM3IDEwLjA5NzY1Ni0xMC4wOTc2NTYgMC01LjU3ODEyNS00LjUyMzQzNy0xMC4wOTc2NTYtMTAuMDk3NjU2LTEwLjA5NzY1NmgtMTcuOTIxODc1Yy01LjU3ODEyNSAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU2IDAgNS41NzQyMTkgNC41MTk1MzEgMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY2LjA0Njg3NSAzNTcuNTkzNzVoLTE3LjkyMTg3NWMtNS41NzQyMTkgMC0xMC4wOTc2NTYgNC41MTk1MzEtMTAuMDk3NjU2IDEwLjA5NzY1NiAwIDUuNTc0MjE5IDQuNTIzNDM3IDEwLjA5NzY1NiAxMC4wOTc2NTYgMTAuMDk3NjU2aDE3LjkyMTg3NWM1LjU3ODEyNSAwIDEwLjA5NzY1Ni00LjUyMzQzNyAxMC4wOTc2NTYtMTAuMDk3NjU2IDAtNS41NzgxMjUtNC41MTk1MzEtMTAuMDk3NjU2LTEwLjA5NzY1Ni0xMC4wOTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ4LjE2MDE1NiA0MjAuNjc1NzgxaDY3LjkwNjI1YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTE5NTMxIDEwLjA5NzY1Ni0xMC4wOTc2NTZzLTQuNTIzNDM3LTEwLjA5NzY1Ni0xMC4wOTc2NTYtMTAuMDk3NjU2aC02Ny45MDYyNWMtNS41NzQyMTggMC0xMC4wOTc2NTYgNC41MTk1MzEtMTAuMDk3NjU2IDEwLjA5NzY1NnM0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU2IDEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDguMTI1IDQ0My4xNTYyNWgtOTkuOTY0ODQ0Yy01LjU3NDIxOCAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU2IDAgNS41NzQyMTkgNC41MjM0MzggMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTZoOTkuOTY0ODQ0YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTIzNDM3IDEwLjA5NzY1Ni0xMC4wOTc2NTYgMC01LjU3ODEyNS00LjUxOTUzMS0xMC4wOTc2NTYtMTAuMDk3NjU2LTEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDYuMzU1NDY5IDQwLjEzNjcxOWMxLjg0Mzc1IDMuMzIwMzEyIDUuMjg1MTU2IDUuMTkxNDA2IDguODMyMDMxIDUuMTkxNDA2IDEuNjYwMTU2IDAgMy4zNDM3NS0uNDE0MDYzIDQuODk4NDM4LTEuMjc3MzQ0IDQuODc1LTIuNzEwOTM3IDYuNjI1LTguODU5Mzc1IDMuOTE0MDYyLTEzLjczNDM3NWwtMTMuOTg0Mzc1LTI1LjEyODkwNmMtMi43MTA5MzctNC44NzEwOTQtOC44NTkzNzUtNi42MjUtMTMuNzM0Mzc1LTMuOTEwMTU2LTQuODcxMDk0IDIuNzEwOTM3LTYuNjI1IDguODU5Mzc1LTMuOTE0MDYyIDEzLjczNDM3NXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im02My4xNDQ1MzEgODMuMDE1NjI1LTI2LjA1NDY4Ny0xNS4wMzkwNjNjLTQuODMyMDMyLTIuNzg5MDYyLTExLjAwMzkwNi0xLjEzMjgxMi0xMy43OTI5NjkgMy42OTUzMTNzLTEuMTMyODEzIDExLjAwMzkwNiAzLjY5NTMxMyAxMy43OTI5NjlsMjYuMDU0Njg3IDE1LjA0Mjk2OGMxLjU4OTg0NC45MTc5NjkgMy4zMjgxMjUgMS4zNTE1NjMgNS4wMzkwNjMgMS4zNTE1NjMgMy40ODgyODEgMCA2Ljg4MjgxMi0xLjgwODU5NCA4Ljc1MzkwNi01LjA0Njg3NSAyLjc4OTA2Mi00LjgzMjAzMSAxLjEzMjgxMi0xMS4wMDc4MTItMy42OTUzMTMtMTMuNzk2ODc1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxLjExMzI4MSAxNDYuMjEwOTM4LTMwLjA4NTkzNy0xLjI4MTI1Yy01LjU4MjAzMi0uMjUtMTAuMjgxMjUgNC4wODk4NDMtMTAuNTE5NTMyIDkuNjYwMTU2LS4yMzQzNzQgNS41NzAzMTIgNC4wODk4NDQgMTAuMjgxMjUgOS42NjAxNTcgMTAuNTE1NjI1bDMwLjA4NTkzNyAxLjI4MTI1Yy4xNDQ1MzIuMDA3ODEyLjI5Mjk2OS4wMDc4MTIuNDM3NS4wMDc4MTIgNS4zNzg5MDYgMCA5Ljg1MTU2My00LjI0MjE4NyAxMC4wNzgxMjUtOS42Njc5NjkuMjM4MjgxLTUuNTcwMzEyLTQuMDg1OTM3LTEwLjI3NzM0My05LjY1NjI1LTEwLjUxNTYyNHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yODMuNjQwNjI1IDE5OC42MjUuMTIxMDk0LjI5Njg3NWMxLjU4OTg0MyAzLjkyNTc4MSA1LjM2NzE4NyA2LjMwNDY4NyA5LjM1OTM3NSA2LjMwNDY4NyAxLjI2MTcxOCAwIDIuNTQ2ODc1LS4yMzgyODEgMy43ODkwNjItLjc0MjE4NyA1LjE2Nzk2OS0yLjA5Mzc1IDcuNjYwMTU2LTcuOTgwNDY5IDUuNTY2NDA2LTEzLjE0ODQzN2wtLjEyMTA5My0uMjk2ODc2Yy0yLjA5Mzc1LTUuMTY3OTY4LTcuOTgwNDY5LTcuNjU2MjUtMTMuMTQ4NDM4LTUuNTYyNXMtNy42NjAxNTYgNy45ODA0NjktNS41NjY0MDYgMTMuMTQ4NDM4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0OS4zNjcxODggMzE1LjY2Nzk2OWMtMi4wNzgxMjYtNS4xNzE4NzUtNy45NjQ4NDQtNy42Nzk2ODgtMTMuMTM2NzE5LTUuNjAxNTYzLTUuMTcxODc1IDIuMDgyMDMyLTcuNjc5Njg4IDcuOTYwOTM4LTUuNjAxNTYzIDEzLjEzNjcxOWwuMTE3MTg4LjI5Mjk2OWMxLjU4NTkzNyAzLjk0MTQwNiA1LjM3MTA5NCA2LjMzNTkzNyA5LjM3NSA2LjMzNTkzNyAxLjI1MzkwNiAwIDIuNTI3MzQ0LS4yMzQzNzUgMy43NjE3MTgtLjczNDM3NSA1LjE3NTc4Mi0yLjA3ODEyNSA3LjY4MzU5NC03Ljk2MDkzNyA1LjYwMTU2My0xMy4xMzI4MTJ6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Amplifier:ple,Awnings:Ole,"Battery Status":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM5NC4wNjMgMzkxLjk5NmMtOS4xOTgtNS4yOS0xOC4zNzMtMTAuNjIzLTI3LjU1OC0xNS45MzcgNS4wMDItMTEuNzY5IDEwLjE5NC0yMy45MDIgMTQuOTAzLTM2LjA1MyAxLjgwOS00LjY2NyAxLjE4OS05LjkxMS0xLjY1NS0xNC4wMjgtNS43NzYtOC4zNjEtMTYuODYzLTguODU1LTI0LjM0NC0xLjc0LTE5LjY2MSAxOC43LTM5LjA4NSAzNy01OC42NTIgNTUuNTM3LTMuNzc1IDMuNTc3LTUuNjM5IDguNDM0LTUuMTEgMTMuMzI3LjUyMyA0Ljg0NiAzLjMzOSA5LjE0NCA3LjcyNSAxMS43OTIgOS4zNDUgNS42NDEgMTguNzYxIDEwLjk1NSAyOC4wOTggMTYuMjkxLTQuNjQ0IDEwLjk1MS0xMC4zNzIgMjQuMjQ2LTE0LjkyIDM2LjAwMi0yLjg4NyA3LjQ2Mi40MjEgMTUuNzQ0IDcuNjkzIDE5LjI2NCA1LjcxNCAyLjc2NiAxMi4yOCAyLjIxMSAxOC4yOTktMy40ODMgMTkuMzQ0LTE4LjMgMzkuMzQzLTM3LjIxNCA1OC42Ny01NS41NDcgMy44MTgtMy42MjIgNS42NzQtOC41MTIgNS4wOS0xMy40MTYtLjU5MS00Ljk2Mi0zLjU5NC05LjMzOC04LjIzOS0xMi4wMDl6bS03LjE3NCAxNC41NGMtMTUuNjM0IDE0LjgzMi01OC45NDkgNTYuOTczLTYwLjEwOSA1Ni40MTItLjExOC0uMDU3LS4zMDYtLjE3OC0uMjQtLjM0OSA1LjE3OS0xMy41MjYgMTEuNjM1LTI4LjI3MiAxNi45MTgtNDAuNzMyIDEuNDkzLTMuNTIyLjkwNy04LjI4LTMuNzY4LTEwLjk3LTEwLjg0LTYuMjM3LTIxLjc5MS0xMi4zNTQtMzIuNTY0LTE4Ljg0NS0uODAyLS40ODMtLjc2Ny0uNzEtLjA1MS0xLjM4OCAyMC44NzQtMTkuNzc5IDU3Ljk1OS01NS4zMTEgNTkuODAzLTU2LjQ1OS4zOTYuMDg0LjU0NC4yOTkuNTQ1LjM4NC01LjMwNyAxMy42ODQtMTEuMjEzIDI3LjMwNS0xNi45IDQwLjczOS0xLjc5NCA0LjIzNy0uMjkzIDguNjQ5IDMuNzM5IDEwLjk4IDQuMzk5IDIuNTQgOC43OTYgNS4wODcgMTMuMTkxIDcuNjM0IDYuMzc0IDMuNjkzIDEyLjc0OCA3LjM4NyAxOS4xMzQgMTEuMDU5IDEuMTA2LjYzNSAxLjEzNi43NDQuMzAyIDEuNTM1em0tODEuNzg0LTIwOC40aC0yMDEuNDZjLTEwLjI3MyAwLTE4LjYzMSA4LjMzLTE4LjYzMSAxOC41Njl2NDQuMjc2YzAgMTAuMjM5IDguMzU3IDE4LjU2OSAxOC42MzEgMTguNTY5aDIwMS40NjFjMTAuMjczIDAgMTguNjMxLTguMzMgMTguNjMxLTE4LjU2OXYtNDQuMjc2Yy0uMDAxLTEwLjIzOS04LjM1OC0xOC41NjktMTguNjMyLTE4LjU2OXptMy42MzEgNjIuODQ1YzAgMS45NjgtMS42MjkgMy41NjktMy42MzEgMy41NjloLTIwMS40NmMtMi4wMDIgMC0zLjYzMS0xLjYwMS0zLjYzMS0zLjU2OXYtNDQuMjc2YzAtMS45NjggMS42MjktMy41NjkgMy42MzEtMy41NjloMjAxLjQ2MWMyLjAwMiAwIDMuNjMxIDEuNjAxIDMuNjMxIDMuNTY5djQ0LjI3NnptMTUtMTQzLjg5OGMwLTEwLjIzOS04LjM1Ny0xOC41NjktMTguNjMxLTE4LjU2OWgtMjAxLjQ2Yy0xMC4yNzMgMC0xOC42MzEgOC4zMy0xOC42MzEgMTguNTY5djQ0LjI3NmMwIDEwLjIzOSA4LjM1NyAxOC41NjkgMTguNjMxIDE4LjU2OWgyMDEuNDYxYzEwLjI3MyAwIDE4LjYzMS04LjMzIDE4LjYzMS0xOC41Njl2LTQ0LjI3NnptLTE1IDQ0LjI3N2MwIDEuOTY4LTEuNjI5IDMuNTY5LTMuNjMxIDMuNTY5aC0yMDEuNDZjLTIuMDAyIDAtMy42MzEtMS42MDEtMy42MzEtMy41Njl2LTQ0LjI3NmMwLTEuOTY4IDEuNjI5LTMuNTY5IDMuNjMxLTMuNTY5aDIwMS40NjFjMi4wMDIgMCAzLjYzMSAxLjYwMSAzLjYzMSAzLjU2OXY0NC4yNzZ6bTM4LjI0NyAxMjMuODU3Yy0xOC42NTMgMC0zNi4yNjYgNC41MjktNTEuODAzIDEyLjU0MmgtMTkxLjUzNWMtMTAuMjcyIDAtMTguNjMgOC4zMzEtMTguNjMgMTguNTd2NDQuMjdjMCAxMC4yMzkgOC4zNTcgMTguNTcgMTguNjMgMTguNTdoMTMxLjYyMWMtMS4wOTYgNi4zMTgtMS42NzMgMTIuODEyLTEuNjczIDE5LjQzOCAwIDI0LjI0MyA3LjY1MSA0Ni43MjkgMjAuNjYgNjUuMTgyaC0xNTAuNjA4Yy0yLjAwMiAwLTMuNjMtMS42MDItMy42My0zLjU3di00NC4yN2MwLTEuOTY5IDEuNjI4LTMuNTcgMy42My0zLjU3aDEwNy42NDFjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEwNy42NDFjLTEwLjI3MiAwLTE4LjYzIDguMzMxLTE4LjYzIDE4LjU3djQ0LjI3YzAgMTAuMjM5IDguMzU3IDE4LjU3IDE4LjYzIDE4LjU3aDE2My4yMzdjNy4wNyA3LjA2MyAxNS4wNjUgMTMuMTk5IDIzLjc4NSAxOC4yMWgtMTk4LjI0MmMtMTQuMjI3IDAtMjUuOC0xMS41NzQtMjUuOC0yNS44di0zNjUuMDg5YzAtMTQuMjI2IDExLjU3My0yNS44IDI1LjgtMjUuOGgyMjMuOWMxNC4yMjcgMCAyNS44IDExLjU3NCAyNS44IDI1Ljh2MTU2LjY0YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTE1Ni42NGMwLTIyLjQ5Ny0xOC4zMDMtNDAuOC00MC44LTQwLjhoLTQwLjA2N3YtMzUuNjExYzAtMTYuMzc2LTEzLjMyMy0yOS42OTktMjkuNjk5LTI5LjY5OWgtODQuMzY3Yy0xNi4zNzYgMC0yOS42OTkgMTMuMzIzLTI5LjY5OSAyOS42OTl2MzUuNjExaC00MC4wNjhjLTIyLjQ5NyAwLTQwLjggMTguMzAzLTQwLjggNDAuOHYzNjUuMDljMCAyMi40OTcgMTguMzAzIDQwLjggNDAuOCA0MC44aDIyMy45YzMuODkyIDAgNy43MzEtLjU1MyAxMS40NDItMS42MzYgNi4yNDggMS4wNzEgMTIuNjY3IDEuNjM2IDE5LjIxNiAxLjYzNiA2Mi41MjQgMCAxMTMuMzkyLTUwLjg2NyAxMTMuMzkyLTExMy4zOTIgMC02Mi41MjQtNTAuODY3LTExMy4zOTEtMTEzLjM5Mi0xMTMuMzkxem0tMTk5LjQ5MS0yNTUuNTE4YzAtOC4xMDUgNi41OTQtMTQuNjk5IDE0LjY5OS0xNC42OTloODQuMzY3YzguMTA1IDAgMTQuNjk5IDYuNTk0IDE0LjY5OSAxNC42OTl2MzUuNjExaC0xMTMuNzY1em0tNDMuODQ3IDMzNC40NzFjLTIuMDAyIDAtMy42My0xLjYwMi0zLjYzLTMuNTd2LTQ0LjI3YzAtMS45NjkgMS42MjgtMy41NyAzLjYzLTMuNTdoMTY5LjM0MWMtMTUuNjY2IDEzLjUyMS0yNy42IDMxLjI1LTM0LjA0MSA1MS40MXptMjQzLjMzOCAxMzIuODNjLTU0LjI1MyAwLTk4LjM5Mi00NC4xMzgtOTguMzkyLTk4LjM5MiAwLTU0LjI1MyA0NC4xMzktOTguMzkxIDk4LjM5Mi05OC4zOTFzOTguMzkyIDQ0LjEzOCA5OC4zOTIgOTguMzkxYzAgNTQuMjU0LTQ0LjEzOSA5OC4zOTItOTguMzkyIDk4LjM5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Ceiling Spotlights":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDc0IDc0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00Ni40NCA0aC0yLjk3YTEgMSAwIDAgMSAwLTJoMi45N2ExIDEgMCAwIDEgMCAyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjguNjQgMTAuMzhoLTYzLjI4YTEgMSAwIDAgMSAtMS0xdi02LjM4YTEgMSAwIDAgMSAxLTFoMjEuMmExIDEgMCAwIDEgMCAyaC0yMC4ydjQuMzhoNjEuMjh2LTQuMzhoLTE0LjJhMSAxIDAgMCAxIDAtMmgxNS4yYTEgMSAwIDAgMSAxIDF2Ni4zOGExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2LjQ3IDRoLTIuOTFhMSAxIDAgMCAxIDAtMmgyLjkxYTEgMSAwIDAgMSAwIDJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNyA1MS4yMDdhMSAxIDAgMCAxIC0xLTF2LTQwLjgyOGExIDEgMCAxIDEgMiAwdjQwLjgyOGExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ2Ljc3MSA2Ny4wN2gtMTkuNTQyYTEgMSAwIDAgMSAtLjk3Ny0xLjIxNWwzLjQ5LTE1Ljg1NWExIDEgMCAwIDEgLjk3Ny0uNzg1aDEyLjU2MmExIDEgMCAwIDEgLjk3Ny43ODVsMy40OSAxNS44NmExIDEgMCAwIDEgLS45NzcgMS4yMTV6bS0xOC4zLTJoMTcuMDU2bC0zLjA0OS0xMy44NmgtMTAuOTU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzcgNzJhNS45MzYgNS45MzYgMCAwIDEgLTUuOTMtNS45MyAxIDEgMCAwIDEgMiAwIDMuOTMgMy45MyAwIDAgMCA3Ljg2IDAgMSAxIDAgMCAxIDIgMCA1LjkzNiA1LjkzNiAwIDAgMSAtNS45MyA1LjkzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjAuNDE2IDM1LjExNGExIDEgMCAwIDEgLTEtMXYtMjQuNzM1YTEgMSAwIDAgMSAyIDB2MjQuNzM1YTEgMSAwIDAgMSAtMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjkuNiA1MC4wMjZoLTE4LjM3YTEgMSAwIDAgMSAtLjk3Ni0xLjIxNWwzLjI4LTE0LjkxMWExIDEgMCAwIDEgLjk3Ny0uNzg1aDExLjgwOWExIDEgMCAwIDEgLjk3Ny43ODVsMy4yOCAxNC45MDlhMSAxIDAgMCAxIC0uOTc2IDEuMjE1em0tMTcuMTI2LTJoMTUuODgybC0yLjgzOS0xMi45MDloLTEwLjJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02MC40MTYgNTQuNjZhNS42NDEgNS42NDEgMCAwIDEgLTUuNjM0LTUuNjM0IDEgMSAwIDEgMSAyIDAgMy42MzQgMy42MzQgMCAxIDAgNy4yNjggMCAxIDEgMCAxIDEgMiAwIDUuNjQxIDUuNjQxIDAgMCAxIC01LjYzNCA1LjYzNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzLjU4NCAzNS4xMTRhMSAxIDAgMCAxIC0xLTF2LTI0LjczNWExIDEgMCAwIDEgMiAwdjI0LjczNWExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyLjc3IDUwLjAyNmgtMTguMzdhMSAxIDAgMCAxIC0uOTc2LTEuMjE1bDMuMjc2LTE0LjkxMWExIDEgMCAwIDEgLjk3Ny0uNzg1aDExLjgxMmExIDEgMCAwIDEgLjk3Ny43ODVsMy4yOCAxNC45MDlhMSAxIDAgMCAxIC0uOTc2IDEuMjE1em0tMTcuMTI2LTJoMTUuODgxbC0yLjgzOS0xMi45MDloLTEwLjIwM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzLjU4NCA1NC42NmE1LjY0MSA1LjY0MSAwIDAgMSAtNS42MzQtNS42MzQgMSAxIDAgMCAxIDIgMCAzLjYzNCAzLjYzNCAwIDAgMCA3LjI2OCAwIDEgMSAwIDAgMSAyIDAgNS42NDEgNS42NDEgMCAwIDEgLTUuNjM0IDUuNjM0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Chandelier:Ele,Climate:_le,"Coffee Makers":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ2NiAxMTEuOTk2aC00OS43MTlsLTEwOS4yMTUtNDYuMzYxIDQuODg5LTU0Ljc0NmMuMjUtMi43OTYtLjY4Ny01LjU2OC0yLjU4Mi03LjYzOS0xLjg5NC0yLjA3LTQuNTcyLTMuMjUtNy4zNzgtMy4yNWgtNjBjLTIuODA3IDAtNS40ODQgMS4xOC03LjM3OSAzLjI1LTEuODk1IDIuMDcxLTIuODMxIDQuODQzLTIuNTgyIDcuNjM5bDQuODk4IDU0Ljg1NC0xMDQuNzk1IDQ2LjI1M2gtMjYuMTM3Yy0zOC41OTggMC03MCAzMS40MDItNzAgNzB2NjkuOTk3YzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMHMzMC0xMy40NTggMzAtMzB2LTY5Ljk5N2MwLTUuNDIgNC41OC0xMCAxMC0xMGgyNi45MTVsMjEuNDgzIDEyMS43MzhjMS45MjcgMTAuOTIzIDkuOTA0IDE4LjI2MyAxOS44NDggMTguMjYzdjQwLjAwM2MtOS42NTIgMC0xNy4yMTcgNi44MDItMTkuNzQ0IDE3Ljc1MWwtMzAuMDAxIDEzMGMtLjY4NSAyLjk2OS4wMjEgNi4wODkgMS45MTggOC40NzRzNC43NzggMy43NzQgNy44MjYgMy43NzRoMjgwYzMuMDQ3IDAgNS45MjktMS4zOSA3LjgyNi0zLjc3NCAxLjg5Ny0yLjM4NSAyLjYwNC01LjUwNSAxLjkxOC04LjQ3NGwtMzAuMDAxLTEzMGMtMi41MjUtMTAuOTQ5LTEwLjA5MS0xNy43NTEtMTkuNzQzLTE3Ljc1MXYtNDAuMDAyYzkuOTQ0IDAgMTcuOTItNy4zMzkgMTkuODQ3LTE4LjI2MmwxNC4zODEtODEuNDkyIDY0LjA1Ni01NS4yMzZjMi4yMDMtMS44OTkgMy40Ny00LjY2NSAzLjQ3LTcuNTczdi0yNy40MzhjLjAwMS01LjUyNC00LjQ3Ny0xMC4wMDEtOS45OTktMTAuMDAxem0tMTc0LjkzOC05MS45OTYtMy43NSA0MS45OTZoLTMwLjYzNGwtMy43NTEtNDEuOTk2em0tNDEuNDIzIDYxLjk5Nmg0NC43ODVsNzAuNjcyIDMwaC0xODMuNDI4em0tMTQzLjYzOSA3MC4wMDFjLTE2LjU0MiAwLTMwIDEzLjQ1OC0zMCAzMHY2OS45OTdjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMHMtMTAtNC40ODYtMTAtMTB2LTY5Ljk5N2MwLTI3LjU3IDIyLjQzLTUwIDUwLTUwaDE5Ljg1NmwzLjUzIDIwem02OC4wOTQgMTM4LjI2My0yNy45MjktMTU4LjI2NGg2Mi43NjJsMi41MjggMzUuODE3Yy4zNzIgNS4yNyA0Ljc2MiA5LjI5NiA5Ljk2NSA5LjI5Ni4yMzYgMCAuNDc1LS4wMDguNzE0LS4wMjUgNS41MDktLjM4OSA5LjY2LTUuMTcgOS4yNzEtMTAuNjc5bC0yLjQyOS0zNC40MDloOTAuNTM5bC0xMS4yOTUgMTYwLjAwMmgtNjcuOTQ5bC0yLjUyOS0zNS44MTdjLS4zODktNS41MDktNS4xNjYtOS42NjEtMTAuNjc5LTkuMjcxLTUuNTA5LjM4OS05LjY2IDUuMTctOS4yNzEgMTAuNjc5bDIuNDI5IDM0LjQwOWgtNDUuNTE4Yy0uMTk5LS4zMjEtLjQ2My0uOTE0LS42MDktMS43Mzh6bS0uMTAzIDgzLjk4OGMuMjU5LTEuMTI1LjYxLTEuODU3Ljg1My0yLjI0OWg0NS4zNmwtMTEuMDc3IDEyMGgtNjIuMzF6bTEzNC4yMTItMi4yNDggMTEuMDc3IDEyMGgtOTAuMDY5bDExLjA3Ny0xMjB6bTY2LjI5NyAyLjI0OCAyNy4xNzUgMTE3Ljc1MmgtNjIuMzFsLTExLjA3Ny0xMjBoNDUuMzZjLjI0My4zOTEuNTkzIDEuMTIzLjg1MiAyLjI0OHptLTIwLjI1NS0yMi4yNDhoLTE1OS45OTh2LTQwLjAwMmgxNTkuOTk4em0yMC4xNTEtNjEuNzRjLS4xNDYuODI0LS40MDkgMS40MTctLjYwOCAxLjczN2gtNDUuNTE4bDExLjI5NS0xNjAuMDAxaDYyLjc2MmwtMTIuOTM3IDczLjMwOWMwIC4wMDEgMCAuMDAyLS4wMDEuMDAzem04MS42MDQtMTQ1LjQwNy00Mi4wMjkgMzYuMjQyIDguNjY1LTQ5LjA5OWgzMy4zNjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMjQuNTk5IDIyMS45OTdjNS41MjMgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzctMTAtMTAtMTBoLS4wMDdjLTUuNTIzIDAtOS45OTYgNC40NzctOS45OTYgMTBzNC40OCAxMCAxMC4wMDMgMTB6Ii8+DQogICAgPC9nPg0KPC9zdmc+","Cold Water":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ3NSA0NzUiID4NCjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQoJPHBhdGggZD0iTTQzOC40MTMsMzQzLjE4OEM0MjguMDU5LDMzNS4wODUsNDE1LjE3NCwzMjUsMzkwLjgzNSwzMjVjLTI0LjMzOSwwLTM3LjIyNCwxMC4wODUtNDcuNTc3LDE4LjE4OA0KCQlDMzM0LjQ5NiwzNTAuMDQ1LDMyOC4xNjUsMzU1LDMxNC4xNywzNTVjLTEzLjk5NCwwLTIwLjMyNS00Ljk1NS0yOS4wODctMTEuODEzQzI3NC43MjksMzM1LjA4NSwyNjEuODQ0LDMyNSwyMzcuNTA2LDMyNQ0KCQljLTI0LjMzOSwwLTM3LjIyNCwxMC4wODUtNDcuNTc4LDE4LjE4OEMxODEuMTY2LDM1MC4wNDUsMTc0LjgzNCwzNTUsMTYwLjg0LDM1NWMtMTMuOTk2LDAtMjAuMzI3LTQuOTU1LTI5LjA5LTExLjgxMw0KCQlDMTIxLjM5NSwzMzUuMDg0LDEwOC41MDksMzI1LDg0LjE3LDMyNWMtMjQuMzM5LDAtMzcuMjI1LDEwLjA4NC00Ny41NzksMTguMTg4QzI3LjgyOCwzNTAuMDQ1LDIxLjQ5NiwzNTUsNy41LDM1NXYzMA0KCQljMjQuMzM5LDAsMzcuMjI1LTEwLjA4NCw0Ny41NzktMTguMTg4QzYzLjg0MiwzNTkuOTU1LDcwLjE3NCwzNTUsODQuMTcsMzU1YzEzLjk5NiwwLDIwLjMyNyw0Ljk1NSwyOS4wOTEsMTEuODEzDQoJCUMxMjMuNjE1LDM3NC45MTYsMTM2LjUsMzg1LDE2MC44NCwzODVjMjQuMzM4LDAsMzcuMjI0LTEwLjA4NCw0Ny41NzgtMTguMTg4QzIxNy4xOCwzNTkuOTU1LDIyMy41MTEsMzU1LDIzNy41MDYsMzU1DQoJCWMxMy45OTQsMCwyMC4zMjUsNC45NTUsMjkuMDg3LDExLjgxM0MyNzYuOTQ3LDM3NC45MTUsMjg5LjgzMywzODUsMzE0LjE3LDM4NWMyNC4zMzgsMCwzNy4yMjQtMTAuMDg1LDQ3LjU3Ny0xOC4xODgNCgkJQzM3MC41MSwzNTkuOTU1LDM3Ni44NDEsMzU1LDM5MC44MzUsMzU1YzEzLjk5NSwwLDIwLjMyNSw0Ljk1NSwyOS4wODgsMTEuODEzQzQzMC4yNzcsMzc0LjkxNSw0NDMuMTYyLDM4NSw0NjcuNSwzODV2LTMwDQoJCUM0NTMuNTA2LDM1NSw0NDcuMTc1LDM1MC4wNDUsNDM4LjQxMywzNDMuMTg4eiIvPg0KCTxwYXRoIGQ9Ik0zOTAuODM1LDQxNWMtMjQuMzM4LDAtMzcuMjI0LDEwLjA4NS00Ny41NzcsMTguMTg4QzMzNC40OTYsNDQwLjA0NSwzMjguMTY1LDQ0NSwzMTQuMTcsNDQ1DQoJCWMtMTMuOTk0LDAtMjAuMzI1LTQuOTU1LTI5LjA4Ny0xMS44MTNDMjc0LjcyOSw0MjUuMDg1LDI2MS44NDQsNDE1LDIzNy41MDYsNDE1Yy0yNC4zMzksMC0zNy4yMjQsMTAuMDg1LTQ3LjU3OCwxOC4xODgNCgkJQzE4MS4xNjYsNDQwLjA0NSwxNzQuODM0LDQ0NSwxNjAuODQsNDQ1Yy0xMy45OTYsMC0yMC4zMjctNC45NTUtMjkuMDktMTEuODEzQzEyMS4zOTUsNDI1LjA4NCwxMDguNTA5LDQxNSw4NC4xNyw0MTUNCgkJYy0yNC4zMzksMC0zNy4yMjUsMTAuMDg0LTQ3LjU3OSwxOC4xODhDMjcuODI4LDQ0MC4wNDUsMjEuNDk2LDQ0NSw3LjUsNDQ1djMwYzI0LjMzOSwwLDM3LjIyNS0xMC4wODQsNDcuNTc5LTE4LjE4OA0KCQlDNjMuODQyLDQ0OS45NTUsNzAuMTc0LDQ0NSw4NC4xNyw0NDVjMTMuOTk2LDAsMjAuMzI3LDQuOTU1LDI5LjA5MSwxMS44MTNDMTIzLjYxNSw0NjQuOTE2LDEzNi41LDQ3NSwxNjAuODQsNDc1DQoJCWMyNC4zMzgsMCwzNy4yMjQtMTAuMDg0LDQ3LjU3OC0xOC4xODhDMjE3LjE4LDQ0OS45NTUsMjIzLjUxMSw0NDUsMjM3LjUwNiw0NDVjMTMuOTk0LDAsMjAuMzI1LDQuOTU1LDI5LjA4NywxMS44MTMNCgkJQzI3Ni45NDcsNDY0LjkxNSwyODkuODMzLDQ3NSwzMTQuMTcsNDc1YzI0LjMzOCwwLDM3LjIyNC0xMC4wODUsNDcuNTc3LTE4LjE4OEMzNzAuNTEsNDQ5Ljk1NSwzNzYuODQxLDQ0NSwzOTAuODM1LDQ0NQ0KCQljMTMuOTk1LDAsMjAuMzI1LDQuOTU1LDI5LjA4OCwxMS44MTNDNDMwLjI3Nyw0NjQuOTE1LDQ0My4xNjIsNDc1LDQ2Ny41LDQ3NXYtMzBjLTEzLjk5NCwwLTIwLjMyNS00Ljk1NS0yOS4wODctMTEuODEzDQoJCUM0MjguMDU5LDQyNS4wODUsNDE1LjE3NCw0MTUsMzkwLjgzNSw0MTV6Ii8+DQoJPHBvbHlnb24gcG9pbnRzPSIxODQuMzc4LDI1OC4zMjMgMjIyLjUsMjM2LjMxMyAyMjIuNSwyODAuMzMzIDI1Mi41LDI4MC4zMzMgMjUyLjUsMjM2LjMxMyAyOTAuNjIyLDI1OC4zMjMgMzA1LjYyMiwyMzIuMzQzDQoJCTI2Ny41LDIxMC4zMzMgMzA1LjYyMiwxODguMzIzIDI5MC42MjIsMTYyLjM0MyAyNTIuNSwxODQuMzUzIDI1Mi41LDE0MC4zMzMgMjIyLjUsMTQwLjMzMyAyMjIuNSwxODQuMzUzIDE4NC4zNzgsMTYyLjM0Mw0KCQkxNjkuMzc4LDE4OC4zMjMgMjA3LjUsMjEwLjMzMyAxNjkuMzc4LDIzMi4zNDMgCQkJIi8+DQoJPHBvbHlnb24gcG9pbnRzPSIyNC4wOTUsMTE3Ljk5IDYyLjIxNiw5NS45OCA2Mi4yMTYsMTQwIDkyLjIxNiwxNDAgOTIuMjE2LDk1Ljk4IDEzMC4zMzgsMTE3Ljk5IDE0NS4zMzgsOTIuMDEgMTA3LjIxNiw3MA0KCQkxNDUuMzM4LDQ3Ljk5IDEzMC4zMzgsMjIuMDEgOTIuMjE2LDQ0LjAyIDkyLjIxNiwwIDYyLjIxNiwwIDYyLjIxNiw0NC4wMiAyNC4wOTUsMjIuMDEgOS4wOTUsNDcuOTkgNDcuMjE3LDcwIDkuMDk1LDkyLjAxDQoJCSIvPg0KCTxwb2x5Z29uIHBvaW50cz0iMzQ0LjY2MiwxMTcuOTkgMzgyLjc4NCw5NS45OCAzODIuNzg0LDE0MCA0MTIuNzg0LDE0MCA0MTIuNzg0LDk1Ljk4IDQ1MC45MDUsMTE3Ljk5IDQ2NS45MDUsOTIuMDEgNDI3Ljc4Myw3MA0KCQk0NjUuOTA1LDQ3Ljk5IDQ1MC45MDUsMjIuMDEgNDEyLjc4NCw0NC4wMiA0MTIuNzg0LDAgMzgyLjc4NCwwIDM4Mi43ODQsNDQuMDIgMzQ0LjY2MiwyMi4wMSAzMjkuNjYyLDQ3Ljk5IDM2Ny43ODQsNzANCgkJMzI5LjY2Miw5Mi4wMSAJCQkiLz4NCjwvZz4NCjwvc3ZnPg0K",Computer:fle,Consumption:Sle,Curtains:xle,Dishwashers:kle,Doors:Yle,Doorstep:Qle,Dryer:vle,Fan:Ule,"Floor Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM3Ny4wMTggMTA0LjQtNTQuODYxLTkzLjQxNmMtMy45OC02Ljc3NS0xMS4zMzQtMTAuOTg0LTE5LjE5MS0xMC45ODRoLTkxLjY1NWMtNy42OTcgMC0xNC45NzMgNC4wNzktMTguOTg3IDEwLjY0NGwtNTcuMTM1IDkzLjQxNGMtOS4wNTUgMTQuODAzIDEuNjI2IDMzLjg3IDE4Ljk4NyAzMy44N2gyOC4xODJjMi4yMjIgMzMuNDUyIDI2LjgwOCA2MC44ODQgNTguOTE2IDY3LjQxLS4yNzQgMS44MjYtLjE4NC0xMy41MS0uMTg0IDIxNy4xOTVoLTM3LjQ4NGMtMTEuODk4IDAtMjEuNTc5IDkuNjgtMjEuNTc5IDIxLjU3OXY0Ni4zMWMwIDExLjg5OCA5LjY4IDIxLjU3OSAyMS41NzkgMjEuNTc5aDEwNC43OWMxMS44OTkgMCAyMS41NzktOS42OCAyMS41NzktMjEuNTc5di00Ni4zMWMwLTExLjg5OC05LjY4LTIxLjU3OS0yMS41NzktMjEuNTc5aC0zNy40ODRjMC0yMzAuNzY2LjA5LTIxNS4zNy0uMTg0LTIxNy4xOTUgMjIuMDI1LTQuNDc2IDQwLjUwNS0xOC43OTUgNTAuNjY2LTM4LjE0MXYzNy42MzFjMCA4LjIzNSA2LjY3NiAxNC45MTEgMTQuOTExIDE0LjkxMXMxNC45MTEtNi42NzYgMTQuOTExLTE0LjkxMXYtNjYuOWg2LjYxYzE3LjE2NiAwIDI3Ljg5My0xOC43MDggMTkuMTkyLTMzLjUyOHptLTc2Ljg2NiAzNzcuNzc4aC04OC4zMDJ2LTI5LjgyMmg4OC4zMDJ6bS04NC41OTktNDUyLjM1Nmg4My4wODNsNDUuOTc0IDc4LjI4NGMtNy4wNjEgMC0xNjkuOTAzIDAtMTc2LjkzOCAwem00MC40NDcgMTQ3LjE3MmMtMjIuNTk1IDAtNDEuMjY3LTE3LjExNy00My43MjktMzkuMDY2aDg3LjQ1OGMtMi40NjIgMjEuOTQ5LTIxLjEzNCAzOS4wNjYtNDMuNzI5IDM5LjA2NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Garage Doors":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIsNjRjNC40MTgsMCw4LTMuNTgyLDgtOFY4YzAtNC40MTgtMy41ODItOC04LThIOEMzLjU4MiwwLDAsMy41ODIsMCw4djQ4YzAsNC40MTgsMy41ODIsOCw4LDhoMTZ2NDAwSDgNCgkJYy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDQ2NGM0LjQxOCwwLDgtMy41ODIsOC04cy0zLjU4Mi04LTgtOGgtMTZWNjRINDcyeiBNNDA4LDQ2NEg3MnYtNDhoMzM2VjQ2NHogTTQwOCw0MDBINzJ2LTQ4DQoJCWgzMzZWNDAweiBNNDA4LDMzNkg3MnYtNDhoMzM2VjMzNnogTTQwOCwyNzJINzJ2LTQ4aDMzNlYyNzJ6IE00MDgsMjA4SDcydi00OGgzMzZWMjA4eiBNNDA4LDE0NEg3MlY5NmgzMzZWMTQ0eiBNNDQwLDQ2NGgtMTZWODgNCgkJYzAtNC40MTgtMy41ODItOC04LThINjRjLTQuNDE4LDAtOCwzLjU4Mi04LDh2Mzc2SDQwVjY0aDQwMFY0NjR6IE0xNiw0OFYxNmg0NDh2MzJIMTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTYsNDU2aDQ4YzQuNDE4LDAsOC0zLjU4Miw4LThzLTMuNTgyLTgtOC04aC00OGMtNC40MTgsMC04LDMuNTgyLTgsOFMyMTEuNTgyLDQ1NiwyMTYsNDU2eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Gates:ble,Hairdryer:$le,Handle:Ple,"Hanging Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTkzLjUyNSAzNTkuNzcxaDEwNy44ODV2NC4xMjlhNTMuMDcyIDUzLjA3MiAwIDEgMCAxMDYuMTQ0IDB2LTQuMTI0aDExMC45MjFhNiA2IDAgMCAwIDYtNmMwLTgyLjAxNS01OC45MTMtMTUwLjUxOC0xMzYuNjQtMTY1LjQ0NHYtMjAuMzE5YTMxLjg4MyAzMS44ODMgMCAwIDAgLTI1LjgzNS0zMS4yNnYtMTIwLjc1M2E2IDYgMCAwIDAgLTEyIDB2MTIwLjc1M2EzMS44ODMgMzEuODgzIDAgMCAwIC0yNS44MzUgMzEuMjZ2MjAuMzE0Yy03Ny43MjcgMTQuOTI2LTEzNi42NCA4My40MjktMTM2LjY0IDE2NS40NDRhNiA2IDAgMCAwIDYgNnptMjAyLjAyOSA0LjEyOWE0MS4wNzIgNDEuMDcyIDAgMSAxIC04Mi4xNDQgMHYtNC4xMjRoODIuMTQ0em0tMzkuNTU0LTIxNS43MjJhMTkuODUxIDE5Ljg1MSAwIDAgMSAxOS4xOCAxNC44NjhoLTM4LjM2YTE5Ljg1MSAxOS44NTEgMCAwIDEgMTkuMTgtMTQuODY4em0tMTkuODM1IDI2Ljg2OGgzOS42N3YxMS40MjRhMTY4LjI4OCAxNjguMjg4IDAgMCAwIC0zOS42NyAwem0xOS44MzUgMjIuMjU0Yzg0LjI3NCAwIDE1My4yIDY2Ljk2IDE1Ni4zNjEgMTUwLjQ3NGgtMzEyLjcyMmMzLjE2MS04My41MTcgNzIuMDg3LTE1MC40NzQgMTU2LjM2MS0xNTAuNDc0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjUwIDQ1NS41MDh2NDAuNDkyYTYgNiAwIDAgMCAxMiAwdi00MC40OTJhNiA2IDAgMCAwIC0xMiAweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzAzLjQyMiA0MzEuNDg4YTYgNiAwIDAgMCAtLjA3NSA4LjQ4NWwyOC4zNDQgMjguODUxYTYgNiAwIDAgMCA4LjU2MS04LjQxbC0yOC4zNDQtMjguODUxYTYgNiAwIDAgMCAtOC40ODYtLjA3NXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMC4wOTIgNDMxLjU2My0yOC4zNDQgMjguODUxYTYgNiAwIDAgMCA4LjU2MSA4LjQxbDI4LjM0NC0yOC44NTFhNiA2IDAgMCAwIC04LjU2MS04LjQxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg2Ljc1IDIzNi44MWExNjguNzMxIDE2OC43MzEgMCAwIDAgLTQ1LjkyNyA0OC4xNDMgNiA2IDAgMSAwIDEwLjE0MSA2LjQxNyAxNTYuNzgxIDE1Ni43ODEgMCAwIDEgNDIuNjc3LTQ0LjczNiA2IDYgMCAwIDAgLTYuODkxLTkuODI0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Heater:Wle,Hoods:Rle,"Hot Water":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMCA1MTAiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5NSAyNDEuOTAyYy0xOC4yMjMgMC0zMy4zNTgtNS45MzctNDUuMDkyLTE3LjYydi0xNDkuMzU0YzAtNDEuMzE1LTMzLjYxMy03NC45MjgtNzQuOTI5LTc0LjkyOHMtNzQuOTI4IDMzLjYxMy03NC45MjggNzQuOTI4djE0OS4zOTVjLTI0LjI1NCAyNC4xMDctNjkuNDc2IDI0LjQxNS05My42NjMtMy44MDMtNS45ODEtNi45NzgtMTYuNzkzLTYuOTgyLTIyLjc3NyAwLTI0LjU4NiAyOC42ODUtNzIuNTM4IDI4Ljc5OC05Ny4yMjMgMC02LjMyMi03LjM3OC0xNy44NjctNi44NjctMjMuNTM3Ljk2My0uMTQ4LjIwNC0xNS42ODggMjAuNDE4LTQ3Ljg1MiAyMC40MTgtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXM2LjcxNiAxNSAxNSAxNWMyOC42MzIgMCA0OC40ODktMTEuMjggNjAuMDI3LTIwLjYyNCAzMy40NDcgMjcuNjE1IDg2LjUxMiAyNy42MjUgMTE5Ljk3My0uMDIyIDMwLjE5MSAyNC45NDQgNzQuMzYyIDI2LjE3OSAxMDUuMDUyIDkuOTU3djQwLjQ3MWMtMjcuOTg0IDIzLjEzMS00My44MTEgNTcuODc4LTQyLjY1OCA5NC40NTMgMS45NzQgNjIuNzI4IDUzLjc0MyAxMTMuODY0IDExNy41ODYgMTEzLjg2NCA2NC44NzEgMCAxMTcuNjQ3LTUyLjc3NiAxMTcuNjQ3LTExNy42NDYgMC0zNS4wNy0xNS44MzctNjguNDA2LTQyLjcxOS05MC42NjZ2LTQwLjQ5N2MxMy4zMjUgNy4wNTIgMjguNTE3IDEwLjcxIDQ1LjA5MiAxMC43MSA4LjI4NCAwIDE1LTYuNzE2IDE1LTE1cy02LjcxNS0xNC45OTktMTQuOTk5LTE0Ljk5OXptLTEyMC4wMi0yMTEuOTAyYzI0Ljc3MyAwIDQ0LjkyOCAyMC4xNTUgNDQuOTI4IDQ0LjkyOHYxNDkuNTM3Yy04LjMxNCA4LjIxMS0xOC4zMjcgMTMuNTUxLTI5LjkyOSAxNS45NTN2LTE0My45NTdjMC04LjI4NC02LjcxNi0xNS0xNS0xNXMtMTUgNi43MTYtMTUgMTV2MTQzLjk0N2MtMTEuNjAzLTIuNDA5LTIxLjYxNS03Ljc1OS0yOS45MjgtMTUuOTgzdi0xNDkuNDk3Yy4wMDEtMjQuNzczIDIwLjE1Ni00NC45MjggNDQuOTI5LTQ0LjkyOHptLS4wMDEgMzQzLjUwNGMxMC41MzIgMCAxOS4xMDEgOC41NjggMTkuMTAxIDE5LjFzLTguNTY4IDE5LjEtMTkuMTAxIDE5LjFjLTEwLjUzMSAwLTE5LjEtOC41NjgtMTkuMS0xOS4xczguNTY5LTE5LjEgMTkuMS0xOS4xem04Ny42NDggMTguODVjMCA0OC4zMjktMzkuMzE4IDg3LjY0Ni04Ny42NDcgODcuNjQ2LTQ2LjgzMSAwLTg2LjEyOS0zOC4wNDQtODcuNjAyLTg0LjgwOC0uOTItMjkuMjE4IDEyLjcwNC01Ni44NzUgMzYuNDQzLTczLjk4MSAzLjkxMi0yLjgxOSA2LjIzLTcuMzQ3IDYuMjMtMTIuMTY5di00Ny43NzRjOS4xNDggNC44MiAxOS4xNzcgOC4wMzMgMjkuOTI4IDkuNTY4djc1LjAyYy0xOS43NTggNi4zNTUtMzQuMSAyNC45MDUtMzQuMSA0Ni43NDggMCAyNy4wNzQgMjIuMDI2IDQ5LjEgNDkuMSA0OS4xczQ5LjEwMS0yMi4wMjYgNDkuMTAxLTQ5LjFjMC0yMS44NDMtMTQuMzQyLTQwLjM5My0zNC4xMDEtNDYuNzQ4di03NS4wMTRjMTAuNzUtMS41MzEgMjAuNzgtNC43MzggMjkuOTI5LTkuNTUydjQ3Ljc1M2MwIDQuODIyIDIuMzE4IDkuMzUxIDYuMjMgMTIuMTY5IDIyLjg0OCAxNi40NjMgMzYuNDg5IDQzLjA1OSAzNi40ODkgNzEuMTQyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTc4LjE5IDMwOC4zMzJjLTI0LjgxMyAwLTQ1IDIwLjE4Ny00NSA0NXMyMC4xODcgNDUgNDUgNDUgNDUtMjAuMTg3IDQ1LTQ1LTIwLjE4Ni00NS00NS00NXptMCA2MGMtOC4yNzEgMC0xNS02LjcyOS0xNS0xNXM2LjcyOS0xNSAxNS0xNSAxNSA2LjcyOSAxNSAxNS02LjcyOCAxNS0xNSAxNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTczLjg1NyAzNzkuMTE3Yy0yNC44MTMgMC00NSAyMC4xODctNDUgNDVzMjAuMTg3IDQ1IDQ1IDQ1IDQ1LTIwLjE4NyA0NS00NS0yMC4xODYtNDUtNDUtNDV6bTAgNjBjLTguMjcxIDAtMTUtNi43MjktMTUtMTVzNi43MjktMTUgMTUtMTUgMTUgNi43MjkgMTUgMTUtNi43MjggMTUtMTUgMTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02NC44NjMgMTU0LjE0M2MtNS44NTggNS44NTgtNS44NTggMTUuMzU1IDAgMjEuMjEzIDUuODU3IDUuODU3IDE1LjM1NSA1Ljg1OCAyMS4yMTMgMCAyMS4wNDYtMjEuMDQ2IDIxLjA0Ni01NS4yOTEgMC03Ni4zMzgtOS4zNzEtOS4zNy05LjM3My0yNC41MzkgMC0zMy45MTEgNS44NTgtNS44NTggNS44NTgtMTUuMzU1IDAtMjEuMjEzLTUuODU3LTUuODU4LTE1LjM1NS01Ljg1Ny0yMS4yMTMgMC0yMS4wOTYgMjEuMDk2LTIxLjA5OCA1NS4yNDEgMCA3Ni4zMzggOS4zNDkgOS4zNDkgOS4zNDkgMjQuNTYxIDAgMzMuOTExeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQyLjI1MSAxNTQuMTQzYy01Ljg1OCA1Ljg1OC01Ljg1OCAxNS4zNTUgMCAyMS4yMTMgNS44NTcgNS44NTggMTUuMzU0IDUuODU4IDIxLjIxMyAwIDIxLjA5Ny0yMS4wOTcgMjEuMDk4LTU1LjI0IDAtNzYuMzM5LTkuMzcxLTkuMzctOS4zNzMtMjQuNTM5IDAtMzMuOTExIDUuODU4LTUuODU4IDUuODU4LTE1LjM1NSAwLTIxLjIxMy01Ljg1Ni01Ljg1OC0xNS4zNTQtNS44NTctMjEuMjEzIDAtMjEuMDk2IDIxLjA5Ni0yMS4wOTggNTUuMjQxIDAgNzYuMzM4IDkuMzcxIDkuMzcxIDkuMzczIDI0LjUzOSAwIDMzLjkxMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxOS42MzkgMTU0LjE0M2MtNS44NTggNS44NTgtNS44NTggMTUuMzU1IDAgMjEuMjEzIDUuODU3IDUuODU4IDE1LjM1NCA1Ljg1OCAyMS4yMTMgMCAyMS4wOTctMjEuMDk3IDIxLjA5OC01NS4yNCAwLTc2LjMzOS05LjM3MS05LjM3LTkuMzczLTI0LjUzOSAwLTMzLjkxMSA1Ljg1OC01Ljg1OCA1Ljg1OC0xNS4zNTUgMC0yMS4yMTMtNS44NTYtNS44NTgtMTUuMzU0LTUuODU3LTIxLjIxMyAwLTIxLjA5NiAyMS4wOTYtMjEuMDk4IDU1LjI0MSAwIDc2LjMzOCA5LjM3IDkuMzcxIDkuMzczIDI0LjUzOSAwIDMzLjkxMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Humidity:Jle,Iron:Ble,Irrigation:Gle,"Led Strip":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0xNiAxOGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2IDI2YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgNDJhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNiA1MGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2IDU4YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMzRhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMiA2Mmg4YTEgMSAwIDAgMCAxLTF2LTQ5aDZ2NDFhMSAxIDAgMCAwIC4yOTMuNzA3bDggOGExIDEgMCAwIDAgLjcwNy4yOTNoOGExIDEgMCAwIDAgLjcwNy0uMjkzbDgtOGExIDEgMCAwIDAgLjI5My0uNzA3di01MGExIDEgMCAwIDAgLTEtMWgtOGExIDEgMCAwIDAgLTEgMXY0OWgtNnYtNDlhMSAxIDAgMCAwIC0xLTFoLTE2YTEgMSAwIDAgMCAtLjcwNy4yOTNsLTggOGExIDEgMCAwIDAgLS4yOTMuNzA3djUwYTEgMSAwIDAgMCAxIDF6bTMzLTEzdi00NWg2djQ4LjU4NmwtNiA2em0tOCA1aDZ2NmgtNnptLTgtNXYtNDVoNnY1NC41ODZsLTYtNnptLTgtNDVoNnY2aC02em0tOCA1MXYtNDMuNTg2bDYtNnY1NC41ODZoLTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCA1MmEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDQ0YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDggMjhhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCAyMGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDEyYTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDggMzZhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMiA1MmEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDQ0YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMjhhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMiAyMGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDEyYTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMzZhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMyA2aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM5IDU2aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQgMzFoNXYyaC01eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNiAyNWgydjVoLTJ6IiB0cmFuc2Zvcm09Im1hdHJpeCguNiAtLjggLjggLjYgLTE5LjIgMTYuNikiLz4NCiAgICAgICAgPHBhdGggZD0ibTQuNSAzNS41aDV2MmgtNXoiIHRyYW5zZm9ybT0ibWF0cml4KC44IC0uNiAuNiAuOCAtMjAuNTA1IDExLjUwNSkiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDMxaDV2MmgtNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU0LjUgMjYuNWg1djJoLTV6IiB0cmFuc2Zvcm09Im1hdHJpeCguOCAtLjYgLjYgLjggLTUuMDk4IDM5LjcxMikiLz4NCiAgICAgICAgPHBhdGggZD0ibTU2IDM0aDJ2NWgtMnoiIHRyYW5zZm9ybT0ibWF0cml4KC42IC0uOCAuOCAuNiAtNi40IDYwLjIpIi8+DQogICAgPC9nPg0KPC9zdmc+",Light:Fle,Lightings:Hle,Lock:Vle,Louvre:Zle,"Mowing Machine":"PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ3IDU0YzUuNTE0IDAgMTAtNC40ODYgMTAtMTBzLTQuNDg2LTEwLTEwLTEwLTEwIDQuNDg2LTEwIDEwIDQuNDg2IDEwIDEwIDEwem0tNy45MzEtMTFjLjE4My0xLjQ1OC43NTktMi43OTIgMS42MTktMy44OThsMS4zNjIgMS4zNjMgMS40MTQtMS40MTQtMS4zNjItMS4zNjJjMS4xMDYtLjg2IDIuNDQtMS40MzYgMy44OTgtMS42MTl2MS45M2gydi0xLjkzMWMxLjQ1OC4xODMgMi43OTIuNzU5IDMuODk4IDEuNjE5bC0xLjM2MiAxLjM2MiAxLjQxNCAxLjQxNCAxLjM2Mi0xLjM2M2MuODYgMS4xMDYgMS40MzYgMi40NCAxLjYxOSAzLjg5OGgtMS45MzF2MmgxLjkzMWMtLjE4MyAxLjQ1OC0uNzU5IDIuNzkyLTEuNjE5IDMuODk4bC0xLjM2Mi0xLjM2My0xLjQxNCAxLjQxNCAxLjM2MiAxLjM2MmMtMS4xMDYuODYtMi40NCAxLjQzNi0zLjg5OCAxLjYxOXYtMS45MjloLTJ2MS45MzFjLTEuNDU4LS4xODMtMi43OTItLjc1OS0zLjg5OC0xLjYxOWwxLjM2Mi0xLjM2Mi0xLjQxNC0xLjQxNC0xLjM2MiAxLjM2M2MtLjg2LTEuMTA2LTEuNDM2LTIuNDQtMS42MTktMy44OThoMS45MzF2LTJoLTEuOTMxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMjFoLTI0Ljk4Yy0xLjUxMSAwLTIuOTg0LjQyNi00LjI2MiAxLjIyOWwtMjIuMDIxIDEzLjg2NmMtMi4zNCAxLjQ3My0zLjczNyA0LjAwNS0zLjczNyA2Ljc2OXY2LjEzNmMwIC41NTMuNDQ4IDEgMSAxaDMzLjA4OGMuMzQxIDAgLjY1OC0uMTc0Ljg0Mi0uNDYuMTg0LS4yODcuMjA5LS42NDcuMDY3LS45NTctLjc1LTEuNjM1LTEuMDgtMy4zODctLjk3OS01LjIwOC4zMDktNS41OTEgNC45MzYtMTAuMTQ1IDEwLjUzNS0xMC4zNjYgMy4wMjgtLjExNiA1Ljg5Mi45NjcgOC4wNjkgMy4wNiAyLjE3OCAyLjA5MyAzLjM3OCA0LjkxIDMuMzc4IDcuOTMxIDAgLjU1My40NDggMSAxIDFoM2MuNTUyIDAgMS0uNDQ3IDEtMXYtMTdjMC0zLjMwOS0yLjY5MS02LTYtNnptLTI4LjE3NyAyLjkyM2MuOTU5LS42MDQgMi4wNjQtLjkyMyAzLjE5Ny0uOTIzaDEwLjM3bC04LjM5MSA1LjAzNXYtLjAzNWgtMTEuNjUxem0tMjIuMDIgMTMuODY0IDEyLjM2OC03Ljc4N2gxMS41NTJsLTE4LjIzMyAxMC45NGMtMS4xNTcuNjk0LTIuNDggMS4wNi0zLjgyNyAxLjA2aC00LjU5NmMuMjQ4LTEuNzI4IDEuMjI5LTMuMjYzIDIuNzM2LTQuMjEzem01NC4xOTcgNS4yMTNoLTEuMDM4Yy0uMjM5LTMuMTg4LTEuNjIzLTYuMTMyLTMuOTU1LTguMzc0LTIuNTczLTIuNDczLTUuOTYzLTMuNzUtOS41MzQtMy42MTUtNi4xOS4yNDUtMTEuMzc0IDQuOTctMTIuMzE3IDEwLjk4OWgtMTcuMTU2djJoMTcuMDEzYy4wMDIgMS4zNjEuMjAyIDIuNzE1LjYxNSA0aC0zMC42Mjh2LTRoNC42NjNjMS43MDkgMCAzLjM4OS0uNDY1IDQuODU2LTEuMzQ1bDMyLjc1OC0xOS42NTVoMTAuNzIzYzIuMjA2IDAgNCAxLjc5NCA0IDR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA0OGMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMC02YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMi0yLS44OTctMi0yIC44OTctMiAyLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02LjY1MSAxNS42MzVjLTEuNzU3IDIuMTI1LTEuNDU4IDUuMjgyLjY2NyA3LjA0bDQuNjI0IDMuODIzYy4xODcuMTU0LjQxMi4yMjkuNjM3LjIyOS4yODggMCAuNTczLS4xMjQuNzcxLS4zNjIgMS43NTctMi4xMjUgMS40NTgtNS4yODItLjY2Ny03LjA0bC00LjYyNC0zLjgyM2MtLjQyNi0uMzUyLTEuMDU2LS4yOTItMS40MDguMTMzem01LjY2MiA4LjU3Ni0zLjcyMS0zLjA3N2MtMS4wMDQtLjgzMS0xLjMyOS0yLjE4NS0uOTA1LTMuMzQ1bDMuNzIxIDMuMDc3YzEuMDA1LjgzMSAxLjMyOSAyLjE4NS45MDUgMy4zNDV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMS40NDUgOS4yMjktNC42MjQgMy44MjNjLTIuMTI1IDEuNzU4LTIuNDI0IDQuOTE2LS42NjcgNy4wNC4xOTguMjM5LjQ4My4zNjIuNzcxLjM2Mi4yMjUgMCAuNDUtLjA3NS42MzctLjIyOWw0LjYyNC0zLjgyM2MyLjEyNS0xLjc1NyAyLjQyNC00LjkxNS42NjctNy4wNC0uMzUyLS40MjQtLjk4My0uNDg0LTEuNDA4LS4xMzN6bS0uNTMzIDUuNjMyLTMuNzIyIDMuMDc4Yy0uMTUyLS40MTUtLjIxMS0uODYzLS4xNjgtMS4zMTYuMDc2LS43OTguNDU4LTEuNTE5IDEuMDc1LTIuMDI5bDMuNzIxLTMuMDc3Yy40MjMgMS4xNi4wOTkgMi41MTMtLjkwNiAzLjM0NHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Music:Xle,"Outdoor Blinds":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ1NyAwaC00MDJjLTMwLjMyNyAwLTU1IDI0LjY3My01NSA1NXY0NTdoNDMydi00MDguMDM1YzcuNTA3IDMuODQ4IDE2IDYuMDM1IDI1IDYuMDM1IDMwLjMyNyAwIDU1LTI0LjY3MyA1NS01NXMtMjQuNjczLTU1LTU1LTU1em0tNDAyIDMwaDM1My4wMzVjLTMuODQ4IDcuNTA3LTYuMDM1IDE2LTYuMDM1IDI1djdoLTM3MnYtN2MwLTEzLjc4NSAxMS4yMTUtMjUgMjUtMjV6bS0yNSAyNzJ2LTMwaDM3MnYzMHptMzcyIDMwdjMwaC0zNzJ2LTMwem0tMzcyLTkwdi0zMGgzNzJ2MzB6bTAtNjB2LTMwaDM3MnYzMHptMC02MHYtMzBoMzcydjMwem0wIDM2MHYtOTBoMzcydjkwem00MjctNDAyYy0xMy43ODUgMC0yNS0xMS4yMTUtMjUtMjVzMTEuMjE1LTI1IDI1LTI1IDI1IDExLjIxNSAyNSAyNS0xMS4yMTUgMjUtMjUgMjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02MCA0MjJoMzB2MzBoLTMweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQyIDQyMmgzMHYzMGgtMzB6Ii8+DQogICAgPC9nPg0KPC9zdmc+",People:Kle,Pool:qle,"Power Consumption":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0xMiAzYy0uMjc2IDAtLjUtLjIyNC0uNS0uNXYtMmMwLS4yNzYuMjI0LS41LjUtLjVzLjUuMjI0LjUuNXYyYzAgLjI3Ni0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4LjcxOCA1Ljc4MmMtLjEyOCAwLS4yNTYtLjA0OS0uMzU0LS4xNDYtLjE5NS0uMTk1LS4xOTUtLjUxMiAwLS43MDdsMS40MTQtMS40MTRjLjE5NS0uMTk1LjUxMi0uMTk1LjcwNyAwcy4xOTUuNTEyIDAgLjcwN2wtMS40MTQgMS40MTRjLS4wOTcuMDk3LS4yMjUuMTQ2LS4zNTMuMTQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjMuNSAxMi41aC0yYy0uMjc2IDAtLjUtLjIyNC0uNS0uNXMuMjI0LS41LjUtLjVoMmMuMjc2IDAgLjUuMjI0LjUuNXMtLjIyNC41LS41LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMC4xMzIgMjAuNjMyYy0uMTI4IDAtLjI1Ni0uMDQ5LS4zNTQtLjE0NmwtMS40MTQtMS40MTRjLS4xOTUtLjE5NS0uMTk1LS41MTIgMC0uNzA3cy41MTItLjE5NS43MDcgMGwxLjQxNCAxLjQxNGMuMTk1LjE5NS4xOTUuNTEyIDAgLjcwNy0uMDk3LjA5Ny0uMjI1LjE0Ni0uMzUzLjE0NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEyIDI0Yy0uMjc2IDAtLjUtLjIyNC0uNS0uNXYtMmMwLS4yNzYuMjI0LS41LjUtLjVzLjUuMjI0LjUuNXYyYzAgLjI3Ni0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMuODY4IDIwLjYzMmMtLjEyOCAwLS4yNTYtLjA0OS0uMzU0LS4xNDYtLjE5NS0uMTk1LS4xOTUtLjUxMiAwLS43MDdsMS40MTQtMS40MTRjLjE5NS0uMTk1LjUxMi0uMTk1LjcwNyAwcy4xOTUuNTEyIDAgLjcwN2wtMS40MTQgMS40MTRjLS4wOTcuMDk3LS4yMjUuMTQ2LS4zNTMuMTQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMi41IDEyLjVoLTJjLS4yNzYgMC0uNS0uMjI0LS41LS41cy4yMjQtLjUuNS0uNWgyYy4yNzYgMCAuNS4yMjQuNS41cy0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUuMjgyIDUuNzgyYy0uMTI4IDAtLjI1Ni0uMDQ5LS4zNTQtLjE0NmwtMS40MTMtMS40MTRjLS4xOTUtLjE5NS0uMTk1LS41MTIgMC0uNzA3cy41MTItLjE5NS43MDcgMGwxLjQxNCAxLjQxNGMuMTk1LjE5NS4xOTUuNTEyIDAgLjcwNy0uMDk4LjA5Ny0uMjI2LjE0Ni0uMzU0LjE0NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwLjU3MyAyMGMtLjA1OSAwLS4xMTctLjAxLS4xNzUtLjAzMS0uMjE5LS4wODItLjM1Mi0uMzA0LS4zMjEtLjUzNGwuODUzLTYuNDM1aC0zLjQzYy0uMTg5IDAtLjM2Mi0uMTA3LS40NDctLjI3NnMtLjA2Ny0uMzcyLjA0Ny0uNTI0bDYtOGMuMTM5LS4xODYuMzg2LS4yNTIuNTk3LS4xNi4yMTIuMDkxLjMzNS4zMTQuMjk3LjU0MmwtLjkwNCA1LjQxOGgzLjQxYy4xODQgMCAuMzUzLjEwMS40NC4yNjNzLjA3OC4zNTgtLjAyMi41MTNsLTUuOTI3IDljLS4wOTUuMTQzLS4yNTQuMjI0LS40MTguMjI0em0tMi4wNzMtOGgzYy4xNDUgMCAuMjgxLjA2My4zNzYuMTcxLjA5NS4xMDcuMTM5LjI1Mi4xMi4zOTVsLS42NDEgNC44MzggNC4yMTctNi40MDRoLTMuMDcyYy0uMTQ3IDAtLjI4Ni0uMDY0LS4zODItLjE3Ny0uMDk1LS4xMTItLjEzNi0uMjYxLS4xMTEtLjQwNWwuNjYzLTMuOTc4eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Printer:eNe,Pump:tNe,Receiver:sNe,Sconces:iNe,Security:rNe,Shading:oNe,Shutters:MNe,SmokeDetector:nNe,Sockets:aNe,Speaker:cNe,Stove:uNe,"Table Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTk3LjUgMjIwLjM2MS0xNS45MTQgMTUuOTE0YTYgNiAwIDEgMCA4LjQ4NCA4LjQ4NmwxNS45MTUtMTUuOTE1YTYgNiAwIDEgMCAtOC40ODQtOC40ODV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05NS41MSAxMTdhNiA2IDAgMCAwIDQuMjQzLTEwLjI0MmwtMTUuOTE0LTE1LjkxNWE2IDYgMCAwIDAgLTguNDg2IDguNDg2bDE1LjkxNCAxNS45MTRhNS45NzggNS45NzggMCAwIDAgNC4yNDMgMS43NTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzUuNSAyNDIuNTA4LTE1LjkxLTE1LjkxNGE2IDYgMCAwIDAgLTguNDg2IDguNDg1bDE1LjkxNCAxNS45MTVhNiA2IDAgMCAwIDguNDg2LTguNDg2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtODYuODI2IDE3MWE2IDYgMCAwIDAgLTYtNmgtMjQuODM3YTYgNiAwIDAgMCAwIDEyaDI0LjgzN2E2IDYgMCAwIDAgNi02eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTU1IDIzOS41MjFhNiA2IDAgMCAwIC02IDZ2MjQuODM2YTYgNiAwIDAgMCAxMiAwdi0yNC44MzZhNiA2IDAgMCAwIC02LTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzguODUyIDQ1MS45NjlhNDEuODM3IDQxLjgzNyAwIDAgMCAtNDEuMTY2LTM1Ljk2OWgtMjguNjg2di0zMjYuNjg0YTY5LjMwOSA2OS4zMDkgMCAwIDAgLTEyMS43LTQ1LjM4MiA1Ni4wMjIgNTYuMDIyIDAgMCAwIC00OC43MDkgNi4zNDlsLTgxLjUxOSA1NC4wNjhhNiA2IDAgMCAwIC0uOTI1IDkuMjQybDIzLjQyMiAyMy40MjMtMS40NDIgMS40NDJhMzUuMTg4IDM1LjE4OCAwIDAgMCA0OS43NjMgNDkuNzYzbDEuNDQyLTEuNDQyIDIzLjQyMiAyMy40MjFhNiA2IDAgMCAwIDQuMjQ2IDEuNzU5Yy4yIDAgLjQtLjAxLjYtLjAzYTYgNiAwIDAgMCA0LjQtMi42NTRsNTQuMDY3LTgxLjUxOWE1Ni4wODggNTYuMDg4IDAgMCAwIDMuNDg4LTU1LjY1NiAyNi4zODYgMjYuMzg2IDAgMCAxIDQ2LjQ0NSAxNy4yMTZ2MzI2LjY4NGgtMjkuMTgyYTQyIDQyIDAgMCAwIC00MS4zNDMgMzYuMDc2IDI2LjQgMjYuNCAwIDAgMCAtMjIuNDc1IDI1Ljk1NnY3Ljk2OGE2LjI4MiA2LjI4MiAwIDAgMCA2LjMxOSA2aDIxNi42OTJhNS45OTIgNS45OTIgMCAwIDAgNS45ODktNnYtNy45NjhhMjYuMjQ3IDI2LjI0NyAwIDAgMCAtMjMuMTQ4LTI2LjA2M3ptLTI1OS40NTItMjcyLjIzNGEyMy4xODggMjMuMTg4IDAgMCAxIC0zMi43OTMtMzIuNzkybDEuNDQzLTEuNDQzIDMyLjc5MyAzMi43OTN6bTM2LjY0OCAxNi43OTQtODYuMjMtODYuMjI5IDE4LjA5My0xMiA4MC4xNCA4MC4xNHptNTAuMDEyLTc1LjQtMzEuMjQ2IDQ3LjExLTc2LjctNzYuNzA1IDQ3LjExLTMxLjI0NmE0My44OTQgNDMuODk0IDAgMCAxIDYwLjg0IDYwLjg0MXptMzMuNTI4LTcwLjI3MmEzOC4yNTIgMzguMjUyIDAgMCAwIC0yNi42ODggMTAuODIzIDU0LjYyIDU0LjYyIDAgMCAwIC0xNC4xODYtMTIuNDM1IDU3LjMxIDU3LjMxIDAgMCAxIDk4LjI4NiA0MC4wNzF2MzI2LjY4NGgtMTl2LTMyNi42ODRhMzguNDYxIDM4LjQ2MSAwIDAgMCAtMzguNDA5LTM4LjQ2NHptLTIuNzcgMzc3LjE0M2gxMDAuODY4YzE0LjI1OSAwIDI2LjE5NSAxMSAyOC45NzYgMjRoLTE1OC44MTljMi43ODEtMTMgMTQuNzE2LTI0IDI4Ljk3NS0yNHptMTUzLjE4MiA1MmgtMjA1di0xLjk2OGExNC4zMiAxNC4zMiAwIDAgMSAxNC4zMTktMTQuMDMyaDE3Ni42OTJhMTQuMDM0IDE0LjAzNCAwIDAgMSAxMy45ODkgMTQuMDMyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzA1IDM4MS4wMzFhNiA2IDAgMCAwIDEyIDB2LTc1LjgwNmE2IDYgMCAwIDAgLTEyIDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMTEgMjkwLjg0NGE2IDYgMCAwIDAgNi02di00LjgzNGE2IDYgMCAwIDAgLTEyIDB2NC44MzRhNiA2IDAgMCAwIDYgNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Temperature Sensors":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNMzUyLDM4NS40MDZWNTMuMzMzQzM1MiwyMy45MjcsMzI4LjA3MywwLDI5OC42NjcsMHMtNTMuMzMzLDIzLjkyNy01My4zMzMsNTMuMzMzdjMzMi4wNzMNCgkJCQlDMjMxLjcxOSwzOTkuMzY1LDIyNCw0MTguMDMxLDIyNCw0MzcuMzMzQzIyNCw0NzguNSwyNTcuNSw1MTIsMjk4LjY2Nyw1MTJjNDEuMTY3LDAsNzQuNjY3LTMzLjUsNzQuNjY3LTc0LjY2Nw0KCQkJCUMzNzMuMzMzLDQxOC4wMzEsMzY1LjYxNSwzOTkuMzY1LDM1MiwzODUuNDA2eiBNMjk4LjY2Nyw0OTAuNjY3Yy0yOS40MDYsMC01My4zMzMtMjMuOTI3LTUzLjMzMy01My4zMzMNCgkJCQljMC0xNS4xMDQsNi4zMjMtMjkuMTI1LDE3LjgxMy0zOS40NjljMi4yNC0yLjAzMSwzLjUyMS00LjkwNiwzLjUyMS03LjkyN1Y1My4zMzNjMC0xNy42NDYsMTQuMzU0LTMyLDMyLTMyDQoJCQkJYzE3LjY0NiwwLDMyLDE0LjM1NCwzMiwzMnYzMzYuNjA0YzAsMy4wMjEsMS4yODEsNS44OTYsMy41MjEsNy45MjdDMzQ1LjY3Nyw0MDguMjA4LDM1Miw0MjIuMjI5LDM1Miw0MzcuMzMzDQoJCQkJQzM1Miw0NjYuNzQsMzI4LjA3Myw0OTAuNjY3LDI5OC42NjcsNDkwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwOS4zMzMsNDA3LjI5OFYyMjRjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N2MtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N3YxODMuMjk4DQoJCQkJYy0xMi4zODksNC40MTgtMjEuMzMzLDE2LjE0Ny0yMS4zMzMsMzAuMDM1YzAsMTcuNjQ2LDE0LjM1NCwzMiwzMiwzMmMxNy42NDYsMCwzMi0xNC4zNTQsMzItMzINCgkJCQlDMzMwLjY2Nyw0MjMuNDQ1LDMyMS43MjMsNDExLjcxNiwzMDkuMzMzLDQwNy4yOTh6IE0yOTguNjY3LDQ0OGMtNS44ODUsMC0xMC42NjctNC43ODEtMTAuNjY3LTEwLjY2Nw0KCQkJCWMwLTUuODg1LDQuNzgxLTEwLjY2NywxMC42NjctMTAuNjY3YzUuODg1LDAsMTAuNjY3LDQuNzgxLDEwLjY2NywxMC42NjdDMzA5LjMzMyw0NDMuMjE5LDMwNC41NTIsNDQ4LDI5OC42NjcsNDQ4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEzLjMzMywzNDEuMzMzaC02NGMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N2MwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3aDY0DQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDM0Ni4xMDQsMjE5LjIyOSwzNDEuMzMzLDIxMy4zMzMsMzQxLjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMy4zMzMsMjk4LjY2N0gxOTJjLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjdjMCw1Ljg5Niw0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2gyMS4zMzMNCgkJCQljNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N0MyMjQsMzAzLjQzOCwyMTkuMjI5LDI5OC42NjcsMjEzLjMzMywyOTguNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEzLjMzMywyNTZIMTkyYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3YzAsNS44OTYsNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdoMjEuMzMzDQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDI2MC43NzEsMjE5LjIyOSwyNTYsMjEzLjMzMywyNTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzMzLDIzNC42NjdoNjRjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N3MtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdoLTY0DQoJCQkJYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzE0My40MzgsMjM0LjY2NywxNDkuMzMzLDIzNC42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzMzLDEwNi42NjdoNjRjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N3MtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdoLTY0DQoJCQkJYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzE0My40MzgsMTA2LjY2NywxNDkuMzMzLDEwNi42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTMuMzMzLDE3MC42NjdIMTkyYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3YzAsNS44OTYsNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdoMjEuMzMzDQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDE3NS40MzgsMjE5LjIyOSwxNzAuNjY3LDIxMy4zMzMsMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMy4zMzMsMTI4SDE5MmMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N2MwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3aDIxLjMzMw0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3QzIyNCwxMzIuNzcxLDIxOS4yMjksMTI4LDIxMy4zMzMsMTI4eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Tv:lNe,"Vacuum Cleaner":"PHN2ZyB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDQwIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04LS4wMjczNDQtMjIuMDgyMDMxLTE3LjkxNzk2OS0zOS45NzI2NTYtNDAtNDAtNC40MTc5NjkgMC04LTMuNTgyMDMxLTgtOHMzLjU4MjAzMS04IDgtOGMzMC45MTQwNjIuMDM1MTU2IDU1Ljk2NDg0NCAyNS4wODU5MzggNTYgNTYgMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MDggOTZjLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzLTMuNTgyMDMxLTgtOC04LTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04YzEzLjI1MzkwNiAwIDI0IDEwLjc0NjA5NCAyNCAyNCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ3MiA5NmMtNC40MTc5NjkgMC04LTMuNTgyMDMxLTgtOC0uMDQ2ODc1LTM5Ljc0NjA5NC0zMi4yNTM5MDYtNzEuOTUzMTI1LTcyLTcyLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzMy41ODIwMzEtOCA4LThjNDguNTc4MTI1LjA1ODU5MzggODcuOTQxNDA2IDM5LjQyMTg3NSA4OCA4OCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IC4wMzUxNTYtMzAuOTE0MDYyIDI1LjA4NTkzOC01NS45NjQ4NDQgNTYtNTYgNC40MTc5NjkgMCA4IDMuNTgyMDMxIDggOHMtMy41ODIwMzEgOC04IDhjLTIyLjA4MjAzMS4wMjczNDQtMzkuOTcyNjU2IDE3LjkxNzk2OS00MCA0MCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTcyIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IDAtMTMuMjUzOTA2IDEwLjc0NjA5NC0yNCAyNC0yNCA0LjQxNzk2OSAwIDggMy41ODIwMzEgOCA4cy0zLjU4MjAzMSA4LTggOC04IDMuNTgyMDMxLTggOC0zLjU4MjAzMSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04IDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IC4wNTg1OTM4LTQ4LjU3ODEyNSAzOS40MjE4NzUtODcuOTQxNDA2MiA4OC04OCA0LjQxNzk2OSAwIDggMy41ODIwMzEgOCA4cy0zLjU4MjAzMSA4LTggOGMtMzkuNzQ2MDk0LjA0Njg3NS03MS45NTMxMjUgMzIuMjUzOTA2LTcyIDcyIDAgNC40MTc5NjktMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQwIDQxNmMyNi41MDc4MTIgMCA0OC0yMS40OTIxODggNDgtNDhzLTIxLjQ5MjE4OC00OC00OC00OC00OCAyMS40OTIxODgtNDggNDhjLjAyNzM0NCAyNi41IDIxLjUgNDcuOTcyNjU2IDQ4IDQ4em0wLTgwYzE3LjY3MTg3NSAwIDMyIDE0LjMyODEyNSAzMiAzMnMtMTQuMzI4MTI1IDMyLTMyIDMyLTMyLTE0LjMyODEyNS0zMi0zMiAxNC4zMjgxMjUtMzIgMzItMzJ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQwIDE4NGMxMy4yNTM5MDYgMCAyNC0xMC43NDYwOTQgMjQtMjRzLTEwLjc0NjA5NC0yNC0yNC0yNC0yNCAxMC43NDYwOTQtMjQgMjQgMTAuNzQ2MDk0IDI0IDI0IDI0em0wLTMyYzQuNDE3OTY5IDAgOCAzLjU4MjAzMSA4IDhzLTMuNTgyMDMxIDgtOCA4LTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxNy45NDUzMTIgMTUydi4wNDY4NzVoLjA1NDY4OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTIgMTUyaDQ4djE2aC00OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yODAgMTUyaDQ4djE2aC00OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDAgNDhjLTEwMS4yNjU2MjUtLjAxMTcxOS0xODguOTQ1MzEyIDcwLjMzMjAzMS0yMTAuODkwNjI1IDE2OS4xODc1LTIxLjk0NTMxMyA5OC44NTkzNzUgMjcuNzM0Mzc1IDE5OS42OTE0MDYgMTE5LjQ5MjE4NyAyNDIuNTMxMjUgNTcuOTI1NzgyIDI3LjAzNTE1NiAxMjQuODUxNTYzIDI3LjAzNTE1NiAxODIuNzgxMjUgMCA5MS43NTc4MTMtNDIuODM1OTM4IDE0MS40MzM1OTQtMTQzLjY2NDA2MiAxMTkuNDkyMTg4LTI0Mi41MjM0MzgtMjEuOTQxNDA2LTk4Ljg1NTQ2OC0xMDkuNjEzMjgxLTE2OS4xOTkyMTgtMjEwLjg3NS0xNjkuMTk1MzEyem0wIDE2YzEwNy4yODUxNTYuMTMyODEyIDE5NS4zOTg0MzggODQuODA0Njg4IDE5OS44MDA3ODEgMTkyaC0xNmMtNC41ODIwMzEtOTguMTc5Njg4LTg1LjUxNTYyNS0xNzUuNDIxODc1LTE4My44MDA3ODEtMTc1LjQyMTg3NXMtMTc5LjIxODc1IDc3LjI0MjE4Ny0xODMuODAwNzgxIDE3NS40MjE4NzVoLTE2YzQuNDAyMzQzLTEwNy4xOTUzMTIgOTIuNTE1NjI1LTE5MS44NjcxODggMTk5LjgwMDc4MS0xOTJ6bTI5LjExMzI4MSAyNDUuNDk2MDk0YzMwLjY4MzU5NCAxMS45ODgyODEgNTAuODgyODEzIDQxLjU1ODU5NCA1MC44ODY3MTkgNzQuNTAzOTA2djI3LjY0MDYyNWMtNDkuODc4OTA2IDI3LjE0NDUzMS0xMTAuMTIxMDk0IDI3LjE0NDUzMS0xNjAgMHYtMjcuNjQwNjI1Yy4wMDM5MDYtMjYuNDI5Njg4IDEzLjA2MjUtNTEuMTUyMzQ0IDM0Ljg4NjcxOS02Ni4wNTQ2ODggMjEuODI4MTI1LTE0LjkwNjI1IDQ5LjYwOTM3NS0xOC4wNjY0MDYgNzQuMjI2NTYyLTguNDQ5MjE4em02Ni44ODY3MTkgNzQuNTAzOTA2YzAtNTMuMDE5NTMxLTQyLjk4MDQ2OS05Ni05Ni05NnMtOTYgNDIuOTgwNDY5LTk2IDk2djE3LjczNDM3NWMtMzguODYzMjgxLTI2Ljk4MDQ2OS02NC41MDc4MTItNjkuMTMyODEzLTcwLjYwMTU2Mi0xMTYuMDQ2ODc1LTYuMDk3NjU3LTQ2LjkxNzk2OSA3LjkyNTc4MS05NC4yMjI2NTYgMzguNjAxNTYyLTEzMC4yMzgyODF2MzYuNTUwNzgxYy4wMjczNDQgMjIuMDgyMDMxIDE3LjkxNzk2OSAzOS45NzI2NTYgNDAgNDBoMTc2YzIyLjA4MjAzMS0uMDI3MzQ0IDM5Ljk3MjY1Ni0xNy45MTc5NjkgNDAtNDB2LTM2LjU1MDc4MWMzMC42NzU3ODEgMzYuMDE1NjI1IDQ0LjY5OTIxOSA4My4zMjAzMTIgMzguNjAxNTYyIDEzMC4yMzgyODEtNi4wOTM3NSA0Ni45MTQwNjItMzEuNzM4MjgxIDg5LjA2NjQwNi03MC42MDE1NjIgMTE2LjA0Njg3NXptLTIwOC0yNDQuODYzMjgxYzYzLjU4OTg0NC01Ny41MTU2MjUgMTYwLjQxMDE1Ni01Ny41MTU2MjUgMjI0IDB2NTIuODYzMjgxYzAgMTMuMjUzOTA2LTEwLjc0NjA5NCAyNC0yNCAyNGgtMTc2Yy0xMy4yNTM5MDYgMC0yNC0xMC43NDYwOTQtMjQtMjR6bS04Ny43MTA5MzggMTMyLjg2MzI4MWgxNmMyLjgzNTkzOCA2MS4wMzkwNjIgMzUuNjcxODc2IDExNi43MjI2NTYgODcuNzEwOTM4IDE0OC43NTM5MDZ2MTguNjQ0NTMyYy02MS40Mzc1LTMzLjg1MTU2My0xMDAuNzUzOTA2LTk3LjMxMjUtMTAzLjcxMDkzOC0xNjcuMzk4NDM4em0xMTkuNzEwOTM4IDE3NS4yNDYwOTR2LTE3LjY0NDUzMmM1MC41MDM5MDYgMjQuNTYyNSAxMDkuNDk2MDk0IDI0LjU2MjUgMTYwIDB2MTcuNjcxODc2Yy01MC45OTYwOTQgMjIuMzM1OTM3LTEwOS4wMDM5MDYgMjIuMzM1OTM3LTE2MCAwem0xNzYtNy44NDc2NTZ2LTE4LjY0NDUzMmM1Mi4wNDI5NjktMzIuMDI3MzQ0IDg0Ljg4NjcxOS04Ny43MTA5MzcgODcuNzI2NTYyLTE0OC43NTM5MDZoMTZjLTIuOTYwOTM3IDcwLjA4OTg0NC00Mi4yODUxNTYgMTMzLjU1MDc4MS0xMDMuNzI2NTYyIDE2Ny4zOTg0Mzh6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Ventilation:NNe,"Washing Machines":"PHN2ZyBoZWlnaHQ9IjQ5NnB0IiB2aWV3Qm94PSIwIDAgNDk2IDQ5NiIgd2lkdGg9IjQ5NnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00ODggMGgtNDAwYy00LjQyNTc4MSAwLTggMy41ODU5MzgtOCA4djI5Ni44MzIwMzFjLTIuNjAxNTYyLS41MjczNDMtNS4yNzM0MzgtLjgzMjAzMS04LS44MzIwMzEtMjIuMDU0Njg4IDAtNDAgMTcuOTQ1MzEyLTQwIDQwdi4xNjc5NjljLTcuODI0MjE5IDUuODg2NzE5LTEzLjE1MjM0NCAxNC4zOTg0MzctMTUuMTIxMDk0IDIzLjgzMjAzMWgtOC44Nzg5MDZjLTQuNDI1NzgxIDAtOCAzLjU4NTkzOC04IDh2MzJjMCA0LjQxNDA2MiAzLjU3NDIxOSA4IDggOGg4djI0YzAgMzAuODc4OTA2IDI1LjEyODkwNiA1NiA1NiA1Nmg0MTZjNC40MjU3ODEgMCA4LTMuNTg1OTM4IDgtOHYtNDgwYzAtNC40MTQwNjItMy41NzQyMTktOC04LTh6bS04IDE2djgwaC0zODR2LTgwem0tNDM1LjY1NjI1IDMzOS4xNzU3ODFjMi44Mzk4NDQtMS42MDE1NjIgNC40MzM1OTQtNC43NjE3MTkgNC4wMTU2MjUtOGwtLjEyODkwNi0uOTI5Njg3Yy0uMTAxNTYzLS43MzQzNzUtLjIzMDQ2OS0xLjQ2ODc1LS4yMzA0NjktMi4yNDYwOTQgMC0xMy4yMzA0NjkgMTAuNzY5NTMxLTI0IDI0LTI0IDguNDQ5MjE5IDAgMTYuMTIxMDk0IDQuNDA2MjUgMjAuNTI3MzQ0IDExLjgwMDc4MSAxLjE5OTIxOCAyLjAxNTYyNSAzLjIzNDM3NSAzLjQwNjI1IDUuNTUwNzgxIDMuNzkyOTY5IDIuMzI4MTI1LjM5ODQzOCA0LjY5OTIxOS0uMjY1NjI1IDYuNDk2MDk0LTEuNzkyOTY5IDMuMTIxMDkzLTIuNjQ4NDM3IDguMzIwMzEyLTUuODAwNzgxIDE1LjQyNTc4MS01LjgwMDc4MSA4LjU1ODU5NCAwIDE2LjUzNTE1NiA0LjcyNjU2MiAyMC44MTY0MDYgMTIuMzM1OTM4IDEuNjY0MDYzIDIuOTc2NTYyIDUuMDU0Njg4IDQuNTU4NTkzIDguMzgyODEzIDMuOTYwOTM3IDguMzUxNTYyLTEuNDg4MjgxIDE2LjkwNjI1IDQuMjQ2MDk0IDE4LjQ5NjA5MyAxMi43NDIxODcuNTcwMzEzIDMuMDM5MDYzIDIuODM5ODQ0IDUuNDg4MjgyIDUuODM5ODQ0IDYuMjczNDM4IDMuMDE1NjI1LjgwMDc4MSA2LjE2Nzk2OS0uMjM0Mzc1IDguMTY3OTY5LTIuNjA5Mzc1IDQuNjE3MTg3LTUuNTI3MzQ0IDExLjI4OTA2My04LjcwMzEyNSAxOC4yOTY4NzUtOC43MDMxMjUgMTAuNDE0MDYyIDAgMTkuMjE0ODQ0IDYuNzEwOTM4IDIyLjUyNzM0NCAxNmgtMTg4LjkyNTc4MmMxLjk0MTQwNy01LjI5Njg3NSA1LjYwNTQ2OS05LjkzNzUgMTAuNzQyMTg4LTEyLjgyNDIxOXptMTA3LjY1NjI1LTc1LjE3NTc4MWMwLTc0Ljk5MjE4OCA2MS4wMDc4MTItMTM2IDEzNi0xMzZzMTM2IDYxLjAwNzgxMiAxMzYgMTM2LTYxLjAwNzgxMiAxMzYtMTM2IDEzNmMtMTEuMjg5MDYyIDAtMjIuMzI4MTI1LTEuNTE5NTMxLTMzLjA3ODEyNS00LjIxNDg0NC42Mjg5MDYtMS4xNDQ1MzEgMS4wNzgxMjUtMi4zOTQ1MzEgMS4wNzgxMjUtMy43ODUxNTZ2LTEyLjMzNTkzOGMxMC4zNjcxODggMi44NjMyODIgMjEuMDc4MTI1IDQuMzM1OTM4IDMyIDQuMzM1OTM4IDY2LjE2Nzk2OSAwIDEyMC01My44MzIwMzEgMTIwLTEyMHMtNTMuODMyMDMxLTEyMC0xMjAtMTIwLTEyMCA1My44MzIwMzEtMTIwIDEyMGMwIDIxLjA4OTg0NCA1LjQ4MDQ2OSA0MS40MzM1OTQgMTUuODI0MjE5IDU5LjUwMzkwNi0xLjc5Mjk2OS44MDg1OTQtMy41MzUxNTcgMS43MjY1NjMtNS4xOTE0MDcgMi44MDA3ODItNC4wNTg1OTMtNi4xMTMyODItMTAuMTUyMzQzLTEwLjYzMjgxMy0xNy4yMDcwMzEtMTIuODI0MjE5LTYuMTY3OTY5LTE1Ljc2MTcxOS05LjQyNTc4MS0zMi4zNTkzNzUtOS40MjU3ODEtNDkuNDgwNDY5em00OC40NjQ4NDQgNTYuMDQ2ODc1Yy02LjM2NzE4OC05LjkxMDE1Ni0xMS0yMC43MDMxMjUtMTMuNjc5Njg4LTMyLjA0Njg3NWg1LjIxNDg0NGM3LjI4OTA2MiAwIDE0LjE1MjM0NC0yLjgzOTg0NCAxOS4zMTI1LThsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzEwLjMyODEyNSAxMC4zMTI1IDI4LjI5Njg3NSAxMC4zMjAzMTIgMzguNjI1IDBsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzEwLjMyODEyNSAxMC4zMTI1IDI4LjI5Njg3NSAxMC4zMjAzMTIgMzguNjI1IDBsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzUuMTY3OTY5IDUuMTYwMTU2IDEyLjAyMzQzOCA4IDE5LjMxMjUgOGg1LjA5NzY1NmMtMTAuODgyODEyIDQ1Ljc5Mjk2OS01Mi4wMjczNDQgODAtMTAxLjA5NzY1NiA4MC0xMC45NzY1NjIgMC0yMS42OTUzMTItMS43OTI5NjktMzItNS4xMjg5MDZ2LTIuODcxMDk0YzAtNC40MTQwNjItMy41NzQyMTktOC04LThoLTguODA4NTk0Yy0zLjY4NzUtMTguMDg5ODQ0LTE5LjYyNS0zMS43MjY1NjItMzguNzI2NTYyLTMxLjk1MzEyNXptLTE2LjQ2NDg0NC01Ni4wNDY4NzVjMC01Ny4zNDM3NSA0Ni42NTYyNS0xMDQgMTA0LTEwNHMxMDQgNDYuNjU2MjUgMTA0IDEwNGMwIDIuNzAzMTI1LS4xOTkyMTkgNS4zNTE1NjItLjQwNjI1IDhoLTcuNTkzNzVjLTMuMDIzNDM4IDAtNS44NTU0NjktMS4xNzU3ODEtOC0zLjMxMjVsLTQuNjg3NS00LjY4NzVjLTEwLjMyODEyNS0xMC4zMTI1LTI4LjI5Njg3NS0xMC4zMjAzMTItMzguNjI1IDBsLTQuNjg3NSA0LjY3OTY4OGMtNC4yODEyNSA0LjI4MTI1LTExLjcxODc1IDQuMjgxMjUtMTYgMGwtNC42ODc1LTQuNjc5Njg4Yy0xMC4zMjgxMjUtMTAuMzEyNS0yOC4yOTY4NzUtMTAuMzIwMzEyLTM4LjYyNSAwbC00LjY4NzUgNC42Nzk2ODhjLTQuMjgxMjUgNC4yODEyNS0xMS43MTg3NSA0LjI4MTI1LTE2IDBsLTQuNjg3NS00LjY3OTY4OGMtMTAuMzI4MTI1LTEwLjMxMjUtMjguMjk2ODc1LTEwLjMyMDMxMi0zOC42MjUgMGwtNC42ODc1IDQuNjc5Njg4Yy0yLjE0NDUzMSAyLjE0NDUzMS00Ljk3NjU2MiAzLjMyMDMxMi04IDMuMzIwMzEyaC03LjY5NTMxMmMtLjE5OTIxOS0yLjY0ODQzOC0uMzA0Njg4LTUuMzIwMzEyLS4zMDQ2ODgtOHptLTE2OCAxMDRoMjI0djE2aC0yMjR6bTE2MCA5NmgtMTA0Yy0yMi4wNTQ2ODggMC00MC0xNy45NDUzMTItNDAtNDB2LTI0aDE5MnYyNGMwIDIyLjA1NDY4OC0xNy45NDUzMTIgNDAtNDAgNDB6bTQ3LjExMzI4MSAwYzEwLjQwNjI1LTEwLjE3NTc4MSAxNi44ODY3MTktMjQuMzM1OTM4IDE2Ljg4NjcxOS00MHYtMTUuODcxMDk0YzE1LjQyNTc4MSA1LjE0NDUzMiAzMS41MDM5MDYgNy44NzEwOTQgNDggNy44NzEwOTQgODMuODE2NDA2IDAgMTUyLTY4LjE4MzU5NCAxNTItMTUycy02OC4xODM1OTQtMTUyLTE1Mi0xNTItMTUyIDY4LjE4MzU5NC0xNTIgMTUyYzAgMTMuMDE1NjI1IDEuODAwNzgxIDI1LjczNDM3NSA1LjAwNzgxMiAzOC4xMTMyODEtNi4yMjI2NTYtMy45MDYyNS0xMy40NjQ4NDMtNi4xMTMyODEtMjEuMDA3ODEyLTYuMTEzMjgxLTYuNTM1MTU2IDAtMTMgMS42NzE4NzUtMTguNzg1MTU2IDQuODE2NDA2LTEuNTg5ODQ0LTEuNzI2NTYyLTMuMzc1LTMuMjE0ODQ0LTUuMjE0ODQ0LTQuNjI1di0yMDAuMTkxNDA2aDM4NHYzNjh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM2IDgwYzEzLjIzMDQ2OSAwIDI0LTEwLjc2OTUzMSAyNC0yNHMtMTAuNzY5NTMxLTI0LTI0LTI0LTI0IDEwLjc2OTUzMS0yNCAyNCAxMC43Njk1MzEgMjQgMjQgMjR6bTAtMzJjNC40MTQwNjIgMCA4IDMuNTkzNzUgOCA4cy0zLjU4NTkzOCA4LTggOC04LTMuNTkzNzUtOC04IDMuNTg1OTM4LTggOC04em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMCA4MGMxMy4yMzA0NjkgMCAyNC0xMC43Njk1MzEgMjQtMjRzLTEwLjc2OTUzMS0yNC0yNC0yNC0yNCAxMC43Njk1MzEtMjQgMjQgMTAuNzY5NTMxIDI0IDI0IDI0em0wLTMyYzQuNDE0MDYyIDAgOCAzLjU5Mzc1IDggOHMtMy41ODU5MzggOC04IDgtOC0zLjU5Mzc1LTgtOCAzLjU4NTkzOC04IDgtOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjQgODBjMTMuMjMwNDY5IDAgMjQtMTAuNzY5NTMxIDI0LTI0cy0xMC43Njk1MzEtMjQtMjQtMjQtMjQgMTAuNzY5NTMxLTI0IDI0IDEwLjc2OTUzMSAyNCAyNCAyNHptMC0zMmM0LjQxNDA2MiAwIDggMy41OTM3NSA4IDhzLTMuNTg1OTM4IDgtOCA4LTgtMy41OTM3NS04LTggMy41ODU5MzgtOCA4LTh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQ4IDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00NDggMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxNiA2NGgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDE2IDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zODQgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzUyIDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNTIgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Water Consumption":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTI2OC45OSAxODcuNDk5Yy01Ljc1MS05Ljk1OS0yMC4xOTYtMTAuMDE2LTI1Ljk3OSAwLTIxLjgxIDQwLjYxMS0zMi4wMTEgNDguMDYxLTMyLjAxMSA2Ny41MDEgMCAyNC44MTMgMjAuMTg3IDQ1IDQ1IDQ1czQ1LTIwLjE4NyA0NS00NWMwLTE5LjQ1OC0xMC40ODYtMjcuNDIxLTMyLjAxLTY3LjUwMXptLTEyLjk5IDgyLjUwMWMtOC4yNzEgMC0xNS02LjcyOS0xNS0xNSAwLTYuNjg3IDMuMDQyLTguMjE1IDE1LTMwLjAwNSAxMS45NzQgMjEuODE4IDE1IDIzLjMxOCAxNSAzMC4wMDUgMCA4LjI3MS02LjcyOSAxNS0xNSAxNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwNiAwaC0zMDBjLTguNzY5IDAtMTUuNjc2IDcuNTAyLTE0Ljk0OCAxNi4yNDZsMzAgMzYwYy42NDggNy43NzQgNy4xNDcgMTMuNzU0IDE0Ljk0OCAxMy43NTRoNzV2MzJoLTE1Yy0xMy4zMTggMC0yMC4wNDggMTYuMTY1LTEwLjYwNiAyNS42MDZsNjAgNjBjNS44NTcgNS44NTggMTUuMzU1IDUuODU5IDIxLjIxMyAwbDYwLTYwYzkuNDE3LTkuNDE3IDIuNzQ1LTI1LjYwNi0xMC42MDctMjUuNjA2aC0xNXYtMzJoNzVjNy44MDEgMCAxNC4zLTUuOTggMTQuOTQ4LTEzLjc1NGwzMC0zNjBjLjcyOC04LjczOS02LjE3NC0xNi4yNDYtMTQuOTQ4LTE2LjI0NnptLTE2LjMwMiAzMC01LjM0NiA2NC4xNDdjLTIxLjc2OCA4LjM0My0zNS44NzEgMjUuODUzLTUzLjM1MiAyNS44NTMtMjIuNzE3IDAtNDAuNDIzLTMwLTc1LTMwLTM0LjcyNyAwLTUyLjE3NiAzMC03NSAzMC0xNy40ODUgMC0zMS41NTYtMTcuNDk5LTUzLjM1Mi0yNS44NTNsLTUuMzQ2LTY0LjE0N3ptLTI3LjUgMzMwaC03Ni4xOThjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2NjJjMCA2LjQzMiA0LjA0OCAxMS45MTkgOS43MzYgMTQuMDVsLTI0LjczNiAyNC43MzctMjQuNzM2LTI0LjczNmM1LjY4OC0yLjEzMSA5LjczNi03LjYxOCA5LjczNi0xNC4wNXYtNjJjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtNzYuMTk4bC0xOS4yMDgtMjMwLjUwMmMxNC4zMTUgOS4xNTMgMjkuMDc2IDIwLjUwMSA1MC40MDYgMjAuNTAxIDM0LjcyNyAwIDUyLjE3Ni0zMCA3NS0zMCAyMi43MTcgMCA0MC40MjMgMzAgNzUgMzAgMjEuMDE5IDAgMzUuNDQ5LTEwLjkzNyA1MC40MDYtMjAuNTAyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==","Water Heater":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNjcsMTg1LjMyNXYyODFhMzUuNTQxLDM1LjU0MSwwLDAsMCwzNS40NjksMzUuNjMxTDMxOS4wNiw1MDJoLjAwNkEzNS44OTEsMzUuODkxLDAsMCwwLDM1NSw0NjYuMzY5VjQ2NGg2MC42MmMzNC44MzcsMCw2My4zOC0yNy44Nyw2My4zOC02Mi43MTVWMTg5LjczYzAtMzQuODQ0LTI4LjU0My02Mi43My02My4zOC02Mi43M0gzNTV2LTkuNjg5YzAtLjA3NC0uMTYtLjE0Ni0uMTYyLS4yMTlzLS4wNjUtLjExNC0uMDY1LS4xODdBNjIuMDQ0LDYyLjA0NCwwLDAsMCwyOTIuNzYzLDU1SDIxOVY0NGgxNy44MjhDMjQ1LjY1LDQ0LDI1MywzNy4yLDI1MywyOC4zNzRWMjZhMTYuMTY3LDE2LjE2NywwLDAsMC0xNi4xNzItMTZIMTg5LjcwNkExNS43NywxNS43NywwLDAsMCwxNzQsMjZ2Mi4zNzRBMTUuNDU0LDE1LjQ1NCwwLDAsMCwxODkuNzA2LDQ0SDIwN1Y1NUgxMzMuNzcxQzEwMS41LDU1LDc0LjkyNCw4MCw3Mi4xLDExMUgzOS4yYTYuMDU2LDYuMDU2LDAsMCwwLTUuMiw4LjkyOVpNMzU1LDE2MWg2MC42MkEyOC41ODEsMjguNTgxLDAsMCwxLDQ0NCwxODkuNzNWNDAxLjI4NUEyOC41NjgsMjguNTY4LDAsMCwxLDQxNS42Miw0MzBIMzU1Wm0wLDI4MWg2MC42MkE0MC41ODEsNDAuNTgxLDAsMCwwLDQ1Niw0MDEuMjg1VjE4OS43M0E0MC41OTQsNDAuNTk0LDAsMCwwLDQxNS42MiwxNDlIMzU1VjEzOWg2MC42MmMyOC4yMjEsMCw1MS4zOCwyMi41LDUxLjM4LDUwLjczVjQwMS4yODVDNDY3LDQyOS41MTMsNDQzLjg0MSw0NTIsNDE1LjYyLDQ1MkgzNTVabS0xMiwyNC4zNjlBMjMuODkxLDIzLjg5MSwwLDAsMSwzMTkuMDY2LDQ5MGgwbC0yMTYuNTkxLS4wNDFBMjMuNTI3LDIzLjUyNywwLDAsMSw3OSw0NjYuMzI4VjQ1Mi41N2wyNjQsLjA0OVpNMTkwLDMyYTQsNCwwLDAsMS00LTRWMjZhNCw0LDAsMCwxLDQtNGg0N2E0LDQsMCwwLDEsNCw0djJhNCw0LDAsMCwxLTQsNFpNMTMzLjc3MSw2N0gyOTIuNzYzYTQ5LjgyOSw0OS44MjksMCwwLDEsNDkuNTc2LDQ0SDg0LjJBNDkuODMsNDkuODMsMCwwLDEsMTMzLjc3MSw2N1pNMzQzLDEyM1Y0NDAuNjE5TDc5LDQ0MC41N1YxODMuOWE2Ljg1Myw2Ljg1MywwLDAsMC0uOC0yLjg1MUw0OC45MzQsMTIzWiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjAzLDM4OC40NDNBMzUuMDE3LDM1LjAxNywwLDAsMCwyMzgsMzUzLjZWMjM2Ljg0NGEzNSwzNSwwLDAsMC03MCwwVjM1My42QTM1LjAxNywzNS4wMTcsMCwwLDAsMjAzLDM4OC40NDNabS0yMy0xNTEuNmEyMywyMywwLDAsMSw0NiwwVjI4OUgxODBaTTE4MCwzMDFoNDZ2NTIuNmEyMywyMywwLDAsMS00NiwwWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOTksMzE0LjkxM2E2LDYsMCwwLDAsNi02VjIzMy4xMDZhNiw2LDAsMCwwLTEyLDB2NzUuODA3QTYsNiwwLDAsMCw5OSwzMTQuOTEzWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOTksMjE4LjcyNmE2LDYsMCwwLDAsNi02di00LjgzNGE2LDYsMCwwLDAtMTIsMHY0LjgzNEE2LDYsMCwwLDAsOTksMjE4LjcyNloiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Water:LNe,Weather:jNe,Window:gNe},yNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0xMDggNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MDQgNDguMDE1NjI1aC00OTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOS04LTh2LTMyLjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQ5NmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4djMyLjAxNTYyNWMwIDQuNDI1NzgxLTMuNTc0MjE5IDgtOCA4em0tNDg4LTE2aDQ4MHYtMTYuMDE1NjI1aC00ODB6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTI0Ni43MTg3NWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0Ni43MTg3NWMwIDQuNDI1NzgyLTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NiAyOTYuMTYwMTU2Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04di0yNDYuNzE4NzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNDYuNzE4NzVjMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyOTYuMTYwMTU2aC0yNGMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDI0YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00OTYgMjk2LjE2MDE1NmgtMjRjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgyNGM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MC4xMTMyODFoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE4NC4xMjg5MDZoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNzEuOTg0Mzc1IDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0yMi4wNTg1OTQgMTcuOTM3NS00MCAzOS45OTIxODctNDAgNC40MjE4NzYgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI0IDgtOCA4LTEzLjIyMjY1NiAwLTIzLjk5MjE4NyAxMC43NjU2MjUtMjMuOTkyMTg3IDI0IDAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUyIDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yMzQzNzUtMTAuNzY5NTMxLTI0LTIzLjk5MjE4OC0yNC00LjQyMTg3NCAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzgxMjYtOCA4LTggMjIuMDU0Njg4IDAgMzkuOTkyMTg4IDE3Ljk0MTQwNiAzOS45OTIxODggNDAgMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im03OS45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0My45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgMTA0LjE0NDUzMWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtMjQuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQuMDE1NjI1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDgwLjEyODkwNmgtMzJjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTk2IDk2LjEyODkwNmgtMTYuMDE1NjI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDE1NjI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDMuOTY4NzUgOTYuMTI4OTA2aC0xNS45Njg3NWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDE1Ljk2ODc1YzQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjAuMDA3ODEyIDEyOC4xMjg5MDZoLTE2LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDMxMjVjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE3NS45ODQzNzUgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTIyLjA1ODU5NCAxNy45Mzc1LTQwIDM5Ljk5MjE4Ny00MCA0LjQyMTg3NiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzgxMjQgOC04IDgtMTMuMjIyNjU2IDAtMjMuOTkyMTg3IDEwLjc2NTYyNS0yMy45OTIxODcgMjQgMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTEzLjIzNDM3NS0xMC43Njk1MzEtMjQtMjMuOTkyMTg4LTI0LTQuNDIxODc0IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNi04IDgtOCAyMi4wNTQ2ODggMCAzOS45OTIxODggMTcuOTQxNDA2IDM5Ljk5MjE4OCA0MCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4My45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjAwIDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiA4MC4xMjg5MDZoLTMyYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMzJjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiAxMDQuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di0yNC4wMTU2MjVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNC4wMTU2MjVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDAgOTYuMTI4OTA2aC0xNi4wMTU2MjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMTU2MjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSA5Ni4xMjg5MDZoLTE1Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTUuOTY4NzVjNC40MjE4NzUgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNC4wMDc4MTIgMTI4LjEyODkwNmgtMTYuMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMzEyNWM0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTggOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2LjE2Nzk2OSAyODAuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtMTMuMjQyMTg3IDEwLjc3NzM0My0yNC4wMTU2MjUgMjQuMDE1NjI1LTI0LjAxNTYyNSA0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDgtNC40MjE4NzUgMC04LjAxNTYyNSAzLjU4OTg0NC04LjAxNTYyNSA4LjAxNTYyNSAwIDQuNDIxODc1LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjgwLjE0NDUzMWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04LTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCAxMy4yMzQzNzUgMCAyNCAxMC43NjU2MjUgMjQgMjQgMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzYuMTkxNDA2IDI5Ni4xNjAxNTZoLTgwLjAyMzQzN2MtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDgwLjAzMTI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU4MjAzMSA4LTguMDA3ODEzIDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjgzMjAzMSAyNjQuMTI4OTA2aC00OS4yOTY4NzVjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOGg0OS4yOTY4NzVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3Mi4xNjc5NjkgMjY0LjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtNDcuOTg0Mzc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2NDcuOTg0Mzc1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjE5OTIxOSAyNjQuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04di00OGMwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDh2NDhjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYuMTY3OTY5IDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTE2LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjk2LjE2MDE1NmMtNC40MjE4NzUgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOHYxNi4wMTU2MjVjMCA0LjQyNTc4Mi0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAuMTk5MjE5IDIxNi4xNDQ1MzFoLTQ4LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNDguMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyOC4xOTE0MDYgMjQwLjE0NDUzMWgtNjQuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNjQuMDIzNDM3YzQuNDI1NzgyIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjAuMTY3OTY5IDI4MC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yNDIxODcgMTAuNzc3MzQzLTI0LjAxNTYyNSAyNC4wMTU2MjUtMjQuMDE1NjI1IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOC00LjQyMTg3NSAwLTguMDE1NjI1IDMuNTg5ODQ0LTguMDE1NjI1IDguMDE1NjI1IDAgNC40MjE4NzUtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyODAuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04IDAtNC40MTc5NjktMy41ODIwMzEtOC04LTgtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDEzLjIzNDM3NSAwIDI0IDEwLjc2NTYyNSAyNCAyNCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0MC4xOTE0MDYgMjk2LjE2MDE1NmgtODAuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoODAuMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOC4wMDc4MTMgOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuODMyMDMxIDI2NC4xMjg5MDZoLTQ5LjI5Njg3NWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04aDQ5LjI5Njg3NWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjE2Nzk2OSAyNjQuMTI4OTA2Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Ny45ODQzNzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHY0Ny45ODQzNzVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuMTk5MjE5IDI2NC4xNDQ1MzFjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTh2LTQ4YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOHY0OGMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC4xNjc5NjkgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MTYuMDE1NjI1YzAgNC40MjU3ODItMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyOTYuMTYwMTU2Yy00LjQyMTg3NSAwLTgtMy41NzQyMTgtOC04di0xNi4wMTU2MjVjMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCA0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQyNC4xOTkyMTkgMjE2LjE0NDUzMWgtNDguMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg0OC4wMzEyNWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyLjE5MTQwNiAyNDAuMTQ0NTMxaC02NC4wMjM0MzdjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg2NC4wMjM0MzdjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",DNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM2Mi43ODcgMzYyLjc4NyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTI2MC45NDUsMTQ0Ljk3OWMtMi42NjcsMC01LjEzMywxLjQxNi02LjQ3NywzLjcxOWwtNDcuNDg0LDgxLjMzM2MtMS4zNTQsMi4zMTktMS4zNjUsNS4xODYtMC4wMjcsNy41MTYNCgkJYzEuMzM3LDIuMzI5LDMuODE4LDMuNzY2LDYuNTA0LDMuNzY2aDk0Ljk2OGMyLjY4NiwwLDUuMTY3LTEuNDM3LDYuNTA0LTMuNzY2YzEuMzM4LTIuMzMsMS4zMjctNS4xOTYtMC4wMjctNy41MTZsLTQ3LjQ4My04MS4zMzMNCgkJQzI2Ni4wNzgsMTQ2LjM5NSwyNjMuNjEyLDE0NC45NzksMjYwLjk0NSwxNDQuOTc5eiBNMjI2LjUyNCwyMjYuMzEybDM0LjQyMS01OC45NThsMzQuNDIsNTguOTU4SDIyNi41MjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTUuMjg3LDI1NC42OWgtMTc1LjYybDgxLjI3OC0xMzkuMjE4bDYyLjkyNiwxMDcuNzgzYzIuMDg4LDMuNTc4LDYuNjgzLDQuNzg0LDEwLjI1OCwyLjY5Ng0KCQljMy41NzctMi4wODgsNC43ODQtNi42ODEsMi42OTUtMTAuMjU4TDI2Ny40MjIsOTYuODE1Yy0wLjAyMS0wLjAzNi0wLjA0OC0wLjA2Ny0wLjA2OS0wLjEwM2MtMC4xMjYtMC4yMDgtMC4yNjItMC40MDgtMC40MDctMC42MDMNCgkJYy0wLjA0NC0wLjA1OS0wLjA4Ni0wLjExOC0wLjEzMS0wLjE3NmMtMC4xODMtMC4yMy0wLjM3Ni0wLjQ1MS0wLjU4NC0wLjY1OGMtMC4wMjQtMC4wMjQtMC4wNTEtMC4wNDUtMC4wNzYtMC4wNjkNCgkJYy0wLjE4Ni0wLjE4LTAuMzgzLTAuMzQ5LTAuNTg3LTAuNTA5Yy0wLjA2NS0wLjA1MS0wLjEzMi0wLjEtMC4xOTktMC4xNDhjLTAuMTg3LTAuMTM3LTAuMzc5LTAuMjY0LTAuNTc4LTAuMzg0DQoJCWMtMC4wNTUtMC4wMzMtMC4xMDgtMC4wNjgtMC4xNjQtMC4xYy0wLjI2MS0wLjE0Ny0wLjUzLTAuMjgyLTAuODA5LTAuMzk3Yy0wLjAxMS0wLjAwNC0wLjAyMi0wLjAwOC0wLjAzMy0wLjAxMg0KCQljLTAuMjYtMC4xMDYtMC41MjgtMC4xOTYtMC44MDItMC4yNzNjLTAuMDczLTAuMDIxLTAuMTQ2LTAuMDM4LTAuMjItMC4wNTZjLTAuMjIyLTAuMDU1LTAuNDQ3LTAuMS0wLjY3Ny0wLjEzNQ0KCQljLTAuMDc5LTAuMDEyLTAuMTU3LTAuMDI2LTAuMjM2LTAuMDM2Yy0wLjI5Ny0wLjAzNi0wLjU5OC0wLjA2LTAuOTA2LTAuMDZIMTAxLjg0MmMtMi42NjcsMC01LjEzMywxLjQxNi02LjQ3NywzLjcxOQ0KCQlMMS4wMjMsMjU4LjQwOGMtMS4zNTQsMi4zMTktMS4zNjUsNS4xODYtMC4wMjcsNy41MTZjMS4zMzcsMi4zMjksMy44MTgsMy43NjYsNi41MDQsMy43NjZoODYuNTM4YzAuMDA4LDAsMC4wMTUsMC4wMDEsMC4wMjMsMC4wMDENCgkJczAuMDE1LTAuMDAxLDAuMDIzLTAuMDAxaDM1Ljg4OWMwLjAwOCwwLDAuMDE1LDAuMDAxLDAuMDIzLDAuMDAxczAuMDE1LTAuMDAxLDAuMDIzLTAuMDAxaDM2LjU4NmgxODguNjg0DQoJCWM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41UzM1OS40MywyNTQuNjksMzU1LjI4NywyNTQuNjl6IE0xNjIuMjk4LDI1NC42OWgtMTkuMjYzbDY5LjQzLTExOS40Nw0KCQljMi4wODEtMy41ODIsMC44NjUtOC4xNzItMi43MTYtMTAuMjUzYy0zLjU4LTIuMDgzLTguMTczLTAuODY2LTEwLjI1MywyLjcxNmwtNzMuODEsMTI3LjAwN0gxMDcuMWw4NS4xOTItMTQ2LjU5NGg1NS41OQ0KCQlMMTYyLjI5OCwyNTQuNjl6IE0xMDYuMTQ3LDEwOC4wOTZoMzQuMDkxTDc0Ljc4OSwyMjAuNzE3Yy0yLjA4MSwzLjU4Mi0wLjg2NSw4LjE3MiwyLjcxNiwxMC4yNTMNCgkJYzEuMTg2LDAuNjg5LDIuNDgyLDEuMDE3LDMuNzYyLDEuMDE3YzIuNTg0LDAsNS4xLTEuMzM3LDYuNDkxLTMuNzMzbDY5LjgzLTEyMC4xNThoMTcuMzU2TDg5Ljc1MSwyNTQuNjlIMjAuNTYzTDEwNi4xNDcsMTA4LjA5NnoiDQogICAgICAgIC8+DQogICAgPC9nPg0KPC9zdmc+DQo=",dNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Ni43MDQgMjcyLjA4NmgtODEuNzA0di04OC4wNzNjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2ODguMDczaC0xNXYtMTkzLjcxYzAtOC4yNDktNi43MTEtMTQuOTU5LTE0Ljk1OS0xNC45NTloLTkxLjU4MmMtOC4yNDggMC0xNC45NTkgNi43MS0xNC45NTkgMTQuOTU5djE5My43MWgtMTV2LTE5My43MWMwLTguMjQ5LTYuNzExLTE0Ljk1OS0xNC45NTktMTQuOTU5aC05MS41ODJjLTguMjQ4IDAtMTQuOTU5IDYuNzEtMTQuOTU5IDE0Ljk1OXYxOTMuNzFoLTE1di0yMjMuNjY5aDI4OHYxMDAuNTk2YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTEwMC41OTZoMy4yMDRjOC40MzUgMCAxNS4yOTYtNi44ODMgMTUuMjk2LTE1LjM0NHYtMTcuNzNjMC04LjQ2LTYuODYxLTE1LjM0My0xNS4yOTYtMTUuMzQzaC0zMjQuNDA4Yy04LjQzNSAwLTE1LjI5NiA2Ljg4My0xNS4yOTYgMTUuMzQ0djE3LjczYzAgOC40NiA2Ljg2MSAxNS4zNDQgMTUuMjk2IDE1LjM0NGgzLjIwNHYyMjMuNjY5aC04MS43MDRjLTguNDM1LS4wMDEtMTUuMjk2IDYuODYxLTE1LjI5NiAxNS4yOTV2MTcuNjIyYzAgOC40MzUgNi44NjEgMTUuMjk2IDE1LjI5NiAxNS4yOTZoLjV2MTQzLjQ4NmgtLjVjLTguNDM1IDAtMTUuMjk2IDYuODYyLTE1LjI5NiAxNS4yOTZ2MTcuNjIyYzAgOC40MzQgNi44NjEgMTUuMjk2IDE1LjI5NiAxNS4yOTZoMjIzLjIwNGM0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMjIzLjIwNGMtLjE2MyAwLS4yOTYtLjEzMy0uMjk2LS4yOTZ2LTE3LjYyMmMwLS4xNjMuMTMzLS4yOTYuMjk2LS4yOTZoNDgxLjQwOGMuMTYzIDAgLjI5Ni4xMzMuMjk2LjI5NnYxNy42MjJjMCAuMTYzLS4xMzMuMjk2LS4yOTYuMjk2aC0yMjMuMjA0Yy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDIyMy4yMDRjOC40MzUgMCAxNS4yOTYtNi44NjIgMTUuMjk2LTE1LjI5NnYtMTcuNjIyYzAtOC40MzQtNi44NjEtMTUuMjk2LTE1LjI5Ni0xNS4yOTZoLS41di0xNDMuNDg2aC41YzguNDM1IDAgMTUuMjk2LTYuODYyIDE1LjI5Ni0xNS4yOTZ2LTE3LjYyMmMwLTguNDM0LTYuODYxLTE1LjI5Ni0xNS4yOTYtMTUuMjk2em0tNDAzLjIwNC0yMzkuMDEydi0xNy43M2MwLS4yMTIuMTUzLS4zNDQuMjk2LS4zNDRoMzI0LjQwOGMuMTQzIDAgLjI5Ni4xMzEuMjk2LjM0NHYxNy43M2MwIC4yMTItLjE1My4zNDQtLjI5Ni4zNDQtMTUuMzY3IDAtMzA5LjA1MSAwLTMyNC40MDggMC0uMTQzLS4wMDEtLjI5Ni0uMTMyLS4yOTYtLjM0NHptMTg0Ljk1OSA0NS4zNDMgOTEuNTQxLS4wNDF2MTkzLjcxaC05MS41MDJ6bS0xMzYuNSAwIDkxLjU0MS0uMDQxdjE5My43MWgtOTEuNTAyem0zMzkuMjQ1IDM4NC44MTdoLTQ1MC40MDh2LTE0Mi45MzRoNDUwLjQwOHptMTUuNzk2LTE1OC4yM2MwIC4xNjQtLjEzMy4yOTYtLjI5Ni4yOTYtMi44MjQgMC00NzEuMTUzIDAtNDgxLjQwOCAwLS4xNjMgMC0uMjk2LS4xMzMtLjI5Ni0uMjk2di0xNy42MjJjMC0uMTYzLjEzMy0uMjk2LjI5Ni0uMjk2aDQ4MS40MDhjLjE2MyAwIC4yOTYuMTMzLjI5Ni4yOTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02Ny42NTUgNDQyLjcwNGgxOC45OWM4Ljc2OCAwIDE1LjktNy4xMzMgMTUuOS0xNS45MDF2LTY5LjUyYzAtOC43NjgtNy4xMzMtMTUuOTAxLTE1LjktMTUuOTAxaC0xOC45OWMtOC43NjggMC0xNS45IDcuMTMzLTE1LjkgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzMgMTUuOTAxIDE1LjkgMTUuOTAxem0tLjktODUuNDIxYzAtLjQ5Ny40MDQtLjkwMS45LS45MDFoMTguOTljLjQ5NiAwIC45LjQwNC45LjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkuOTAxaC0xOC45OWMtLjQ5NiAwLS45LS40MDQtLjktLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzOS40MDYgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzQgMTUuOTAxIDE1LjkwMSAxNS45MDF6bS0uOTAxLTg1LjQyMWMwLS40OTcuNDA0LS45MDEuOTAxLS45MDFoMTguOTg5Yy40OTcgMCAuOTAxLjQwNC45MDEuOTAxdjY5LjUyYzAgLjQ5Ny0uNDA0LjkwMS0uOTAxLjkwMWgtMTguOTg5Yy0uNDk3IDAtLjkwMS0uNDA0LS45MDEtLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxMC43OTYgNDQyLjcwNGgxOC45OWM4Ljc2OCAwIDE1LjkwMS03LjEzMyAxNS45MDEtMTUuOTAxdi02OS41MmMwLTguNzY4LTcuMTM0LTE1LjkwMS0xNS45MDEtMTUuOTAxaC0xOC45OWMtOC43NjggMC0xNS45IDcuMTMzLTE1LjkgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzIgMTUuOTAxIDE1LjkgMTUuOTAxem0tLjktODUuNDIxYzAtLjQ5Ny40MDQtLjkwMS45LS45MDFoMTguOTljLjQ5NyAwIC45MDEuNDA0LjkwMS45MDF2NjkuNTJjMCAuNDk3LS40MDQuOTAxLS45MDEuOTAxaC0xOC45OWMtLjQ5NiAwLS45LS40MDQtLjktLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI4Mi41NDcgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzMgMTUuOTAxIDE1LjkwMSAxNS45MDF6bS0uOTAxLTg1LjQyMWMwLS40OTcuNDA0LS45MDEuOTAxLS45MDFoMTguOTg5Yy40OTcgMCAuOTAxLjQwNC45MDEuOTAxdjY5LjUyYzAgLjQ5Ny0uNDA0LjkwMS0uOTAxLjkwMWgtMTguOTg5Yy0uNDk3IDAtLjkwMS0uNDA0LS45MDEtLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1NC4xMzEgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYy0uMDAxIDguNzY4IDcuMTMzIDE1LjkwMSAxNS45MDEgMTUuOTAxem0tLjkwMi04NS40MjFjMC0uNDk3LjQwNC0uOTAxLjkwMS0uOTAxaDE4Ljk4OWMuNDk3IDAgLjkwMS40MDQuOTAxLjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkwMS45MDFoLTE4Ljk4OWMtLjQ5NyAwLS45MDEtLjQwNC0uOTAxLS45MDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MjUuNTIxIDQ0Mi43MDRoMTguOTg5YzguNzY4IDAgMTUuOTAxLTcuMTMzIDE1LjkwMS0xNS45MDF2LTY5LjUyYzAtOC43NjgtNy4xMzQtMTUuOTAxLTE1LjkwMS0xNS45MDFoLTE4Ljk4OWMtOC43NjggMC0xNS45MDEgNy4xMzMtMTUuOTAxIDE1LjkwMXY2OS41MmMwIDguNzY4IDcuMTM0IDE1LjkwMSAxNS45MDEgMTUuOTAxem0tLjkwMS04NS40MjFjMC0uNDk3LjQwNC0uOTAxLjkwMS0uOTAxaDE4Ljk4OWMuNDk3IDAgLjkwMS40MDQuOTAxLjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkwMS45MDFoLTE4Ljk4OWMtLjQ5NyAwLS45MDEtLjQwNC0uOTAxLS45MDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMTYuNDExIDEwNy4yNjhjLTIuOTMtMi45MjktNy42NzgtMi45MjktMTAuNjA3IDBzLTIuOTI5IDcuNjc4IDAgMTAuNjA2bDIzLjUxMiAyMy41MTJjMi45MyAyLjkyOSA3LjY3OCAyLjkyOSAxMC42MDcgMHMyLjkyOS03LjY3OCAwLTEwLjYwNnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0Mi42MDQgOTIuODMyYy0yLjkzLTIuOTI5LTcuNjc4LTIuOTI5LTEwLjYwNyAwcy0yLjkyOSA3LjY3OCAwIDEwLjYwNmwxMS43NTYgMTEuNzU2YzIuOTMgMi45MjkgNy42NzggMi45MjkgMTAuNjA3IDBzMi45MjktNy42NzggMC0xMC42MDZ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",zNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQxMy45MDcgMGMtNTQuMTA0IDAtOTguMTIyIDQ0LjAwNS05OC4xMjIgOTguMDk2djQzLjU4MnMtNjkuODMxLTM2LjkxMi03MS4wNjUtMzcuNTkzYy05LjU0NC01LjI2Ni0xMi4xODUtNS4yNjctMjEuNzMxIDAtMS4yMzQuNjgxLTEzNi4xNDEgNzEuOTU4LTEzNi4xNDEgNzEuOTU4LTExLjQzNyA2LjAxNy0xMy4wNDUgNy43NDUtMTcuODc4IDE1Ljc4My0uNzg4IDEuMzExLTY1LjY5OCAxMDQuMjMtNjUuNjk4IDEwNC4yMy0zLjE3NSA1LjAyMy00LjA3NyAxMC45NjItMi41MzkgMTYuNzIyIDEuNjE3IDYuMDU2IDUuODQgMTEuMjY5IDExLjU3NyAxNC4yOTUgMy42NDYgMS45MyA3LjU4MiAyLjg1IDExLjQ2NSAyLjg1IDYuMjAyIDAgMTIuMjU1LTIuMzU4IDE2Ljc0NS02LjY4OHY2NS4wNDRjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtODcuNTQxczQ5LjEzNC03Ny44NTUgNDkuNjUyLTc4LjY4MmMyLjMzNC0zLjcyOSAzLjMyOC01LjI4MyA0LjQ5Ni02LjMxOCAxLjMzMy0xLjE4MSAzLjY2NS0yLjQ2NCA4LjY2NS01LjEwN2wxMTMuMDAyLTU5LjY0OWMuODAxLS40MjUgMS40OS0uODAzIDIuMDkzLTEuMTMzLjE0MS0uMDc3LjI4NS0uMTU2LjQyOC0uMjM0LjE0My4wNzguMjg3LjE1Ny40MjguMjM0LjYwMy4zMzEgMS4yOTIuNzA4IDIuMTA5IDEuMTQyIDAgMCAxMTguMTkzIDYyLjQxMyAxMTkuNjQyIDYzLjMxLjg2OS41MzggMS41MDkuOTk1IDIuMDA5IDEuNDM4IDEuMTY3IDEuMDM1IDIuMTYyIDIuNTg5IDQuNDk2IDYuMzE4LjUxOC44MjcgNDkuNjUxIDc4LjY4MSA0OS42NTEgNzguNjgxdjE2MC43MTZoLTg0LjkyMXYtMTA0LjM0aDEyLjYyNWM3LjY1MiAwIDEzLjg3OC02LjIyNiAxMy44NzgtMTMuODc4di0yMS40M2MwLTcuNjUyLTYuMjI2LTEzLjg3OC0xMy44NzgtMTMuODc4aC04NS4xMjJjLTQuMTQyIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVoODR2MTkuMTg2aC0yMDkuODF2LTE5LjE4Nmg5MS4yYzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC05Mi4zMjJjLTcuNjUyIDAtMTMuODc4IDYuMjI2LTEzLjg3OCAxMy44Nzh2MjEuNDNjMCA3LjY1MiA2LjIyNiAxMy44NzggMTMuODc4IDEzLjg3OGgxMi42MjV2MTA0LjMzOWgtODQuOTQ3di0zOC41NjNjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NzYuNTM2YzAgNi45MzQgNS42NDEgMTIuNTc0IDEyLjU3NCAxMi41NzRoNDQ1LjkwN2M3LjE2NyAwIDEyLjk5OS01LjgzMiAxMi45OTktMTIuOTk5di00MDAuOTA1Yy4wMDEtNTQuMDkxLTQ0LjAwNC05OC4wOTYtOTguMDkyLTk4LjA5NnptLTI3My40NCA0OTdoLTg0Ljk0OHYtMjAuNTQ2aDg0Ljk0N3YyMC41NDZ6bTE1OS43ODMtMTM5Ljg4Ni02Ni4zODIgNTkuODQ1LTY2LjM4Mi01OS44NDV6bS0xNDQuNzgzIDkuMzU5IDY3LjIwMSA2MC41ODQtNjcuMjAxIDYwLjU4NHptMTIuMDIgMTMwLjUyNyA2Ni4zODItNTkuODQ1IDY2LjM4MSA1OS44NDV6bTE0NC43ODMtOS4zNTktNjcuMjAxLTYwLjU4NCA2Ny4yMDEtNjAuNTg0em05OS45MTkgOS4zNTloLTg0LjkxOXYtMjAuNTQ2aDg0LjkxOXptNTMuNDQ1LTE5OC44MjNjLS4zNDctLjcyLS43MzMtMS40MjctMS4xNjYtMi4xMTdsLTUxLjk0NS04Mi4yNjZoODQuNDc3djg0LjM4M3ptLTEzNC44NDgtMjAwLjA4MWMwLTQ1LjgxOSAzNy4yODgtODMuMDk2IDgzLjEyMi04My4wOTYgNDUuODE2IDAgODMuMDkyIDM3LjI3NiA4My4wOTIgODMuMDk2djEuMjg3aC0xNjYuMjE0em0wIDE2LjI4N2gxNjYuMjE0djg0LjQxMmgtOTMuOTQ5cy0zLjUyMy01LjY1Ni00LjMxMi02Ljk2NmMtNC44MzEtOC4wMzYtNi40NC05Ljc2Ni0xNy44NjgtMTUuNzc4bC01MC4wODYtMjYuNDV2LTM1LjIxOHptOTUuMjQ2IDE4MC4xNzdzLTUwLjI3NS03OS42NTYtNTAuNzgtODAuNDYzYy00Ljc5OS03LjY2NS02LjUxNC05LjgyNS0xMy4yODEtMTMuNjkyLS41MjEtLjI5Ny0xMTkuOTI5LTYzLjQwOC0xMjAuNDgyLTYzLjcxMS01LjEwMS0yLjc5NS03Ljg0Ny0zLjMyLTEyLjA2Ny0xLjU3Mi0uMDM3LjAxNS0uMDc2LjAzNC0uMTEzLjA1LS42MTYuMjU5LTExNy45ODUgNjIuMTk3LTExNy45ODUgNjIuMTk3LTExLjcyNyA2LjItMTIuOTYxIDcuMjk1LTE4Ljg2OCAxNi43MjktLjUwNS44MDctNTAuNzggODAuNDYzLTUwLjc4IDgwLjQ2My0uMDEuMDE2LS4wMTYuMDMzLS4wMjYuMDQ5bC0xMC4yOTQgMTYuMzFjLTIuMzc1IDMuNzY3LTcuODg1IDUuMDk2LTEyLjAzOSAyLjg5NC0yLjA2LTEuMDg2LTMuNTUyLTIuODczLTQuMDkzLTQuOTAxLS4zMTYtMS4xODQtLjQ0Ni0yLjk4NC43MjktNC44NDMgMCAwIDY1LjAzNy0xMDMuMTI0IDY1Ljg3Mi0xMDQuNTEyIDMuNDQ4LTUuNzM0IDMuNDQ4LTUuNzM0IDEyLjAxNy0xMC4yNDMgMCAwIDEzOS4xOTMtNzMuNjM5IDE0MC4wMTItNzQuMDEzLjgyLjM3NCAxNDAuMDEyIDc0LjAxMyAxNDAuMDEyIDc0LjAxMy4wMDMuMDAyLjAwNy4wMDQuMDExLjAwNiA4LjU1OSA0LjUwMiA4LjU1OSA0LjUwMiAxMi4wMDcgMTAuMjM4LjgzNCAxLjM4OCAxLjgxNiAzLjAyIDMuMDU4IDQuOTg3bDYyLjgzMyA5OS41MDljMS4xNjggMS44NiAxLjAzNCAzLjY2OS43MTYgNC44NTktLjU0NCAyLjAzMi0yLjAzMiAzLjgyLTQuMDcyIDQuODk5LTQuMjI2IDIuMjMxLTkuNjQ1LjkyNC0xMi4wNjktMi44OTZsLTEwLjI5Mi0xNi4zMDdjLS4wMS0uMDE3LS4wMTYtLjAzNS0uMDI2LS4wNXptNzAuOTY4IDIwMi40NGgtNjkuODExdi04NC40MTFoNjkuODExem0tNjkuODExLTk5LjQxMXYtNzQuMzg5YzcuMzEzIDcuMDQyIDE4Ljc2MyA4Ljg3NCAyOC4yMzggMy44NzUgNS42LTIuOTY1IDkuNzQ2LTguMDE2IDExLjQzOC0xMy44OTdoMzAuMTM1djg0LjQxMmgtNjkuODExeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjg1LjI2MiAyMzcuODczYzAtMjguMzQ3LTIzLjA2Mi01MS40MDktNTEuNDA4LTUxLjQwOS0yOC4zMzEgMC01MS4zNzkgMjMuMDYyLTUxLjM3OSA1MS40MDlzMjMuMDQ5IDUxLjQwOSA1MS4zNzkgNTEuNDA5YzI4LjM0Ny0uMDAxIDUxLjQwOC0yMy4wNjMgNTEuNDA4LTUxLjQwOXptLTg3Ljc4NyAwYzAtMjAuMDc2IDE2LjMyLTM2LjQwOSAzNi4zNzktMzYuNDA5IDIwLjA3NSAwIDM2LjQwOCAxNi4zMzMgMzYuNDA4IDM2LjQwOXMtMTYuMzMzIDM2LjQwOS0zNi40MDggMzYuNDA5Yy0yMC4wNTktLjAwMS0zNi4zNzktMTYuMzM0LTM2LjM3OS0zNi40MDl6Ii8+DQogICAgPC9nPg0KPC9zdmc+",hNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Mi45OTUgMTY2LjQ4OS0zMS45OTUtMjMuOTk2di0xMTIuNDkzYzguMjg0IDAgMTUtNi43MTYgMTUtMTVzLTYuNzE2LTE1LTE1LTE1aC05MGMtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXM2LjcxNiAxNSAxNSAxNXY0NC45OTJsLTg4LjAwOS02Ni4wMDZjLTE1Ljg5My0xMS45MDQtMzguMDktMTEuOTA1LTUzLjk4OS4wMDVsLTIwOS45OTkgMTU3LjVjLTE5Ljg1MyAxNC44OTMtMjMuODkxIDQzLjE1NS05LjAwMSA2My4wMDQgNy4yMiA5LjYyIDE3Ljc1MiAxNS44NTMgMjkuNjU3IDE3LjU1IDIuMTU3LjMwOCA0LjMxLjQ2IDYuNDUuNDU5IDUuMTA5IDAgMTAuMTMtLjg3NiAxNC44OTEtMi41NjR2MjUyLjA2YzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMzYwYzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTI1Mi4wNjhjNC43NjMgMS42ODUgOS44MDMgMi41NiAxNC45NzggMi41NiAxNC4xIDAgMjcuNTY1LTYuNzI5IDM2LjAyMi0xOCAxNC44ODgtMTkuODQ2IDEwLjg0OS00OC4xMDgtOS4wMDUtNjMuMDAzem0tOTEuOTk1LTEzNi40ODloMzB2ODkuOTkybC0zMC0yMi41em0tMTIwIDI3MmgtNTB2LTkyaDUwem0zMCAwdi0xMDdjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtODBjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2MTA3aC0xMDkuOTk5di03Ny4wMDRsMTY0Ljk5OS0xMjMuNzUyIDE2NSAxMjMuNzUzdjc3LjAwM3ptLTIxOS45OTkgMzBoMjA5Ljk5OXYzMGgtNDVjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2NDVoLTQ1Yy04LjI4NCAwLTE1IDYuNzE2LTE1IDE1djQ1aC05MHptMTE5Ljk5OSAxNTB2LTMwaDQ1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTQ1aDQ1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTQ1aDkwdjE1MHptMjY3LjAwMi0yNzAuNTExYy0yLjg2MyAzLjgxNS03LjI0NSA2LjAwNC0xMi4wMjQgNi4wMDQtMy4yNiAwLTYuMzY1LTEuMDM2LTguOTc5LTIuOTk2bC0xOTEuOTk5LTE0NC4wMDNjLTUuMzMzLTQtMTIuNjY3LTQtMTggMGwtMTkyLjAwOCAxNDQuMDA5Yy0zLjE5MyAyLjM5Ny03LjEzNiAzLjQwOC0xMS4wOTggMi44NDItMy45NzMtLjU2Ni03LjQ4OC0yLjY0Ny05Ljg5Ni01Ljg1Ni00Ljk2MS02LjYxNC0zLjYxMi0xNi4wMzUgMy4wMDYtMjFsMjA5Ljk5MS0xNTcuNDkyYzIuNjUyLTEuOTg3IDUuODMtMi45NzkgOS4wMDctMi45NzkgMy4xNzUgMCA2LjM0OS45OTIgOC45OTYgMi45NzRsMjA5Ljk5NiAxNTcuNDk3YzYuNjIgNC45NjYgNy45NjkgMTQuMzg2IDMuMDA4IDIxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",INe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00ODUuNCwyNzIuMDY3aC04LjUzM3YtMTc5LjJjMC00Mi42NjctMzQuMTMzLTc2LjgtNzYuOC03Ni44Yy0zNy43NywwLTY0LjkzNSwyOC4wMDYtNjcuOTc0LDY5LjA0MQ0KCQkJCWMtMTkuODI5LDMuNzQ4LTM0LjQyNiwyMC44MjYtMzQuNDI2LDQxLjg5MmMwLDUuMTIsMy40MTMsOC41MzMsOC41MzMsOC41MzNoNjguMjY3YzUuMTIsMCw4LjUzMy0zLjQxMyw4LjUzMy04LjUzMw0KCQkJCWMwLTIwLjgzMy0xNC4yNzQtMzcuNzY5LTMzLjc2Ny00MS43NjdjMi41NS0yNy4xMTYsMTguODM2LTUyLjEsNTAuODM0LTUyLjFjMzMuMjgsMCw1OS43MzMsMjYuNDUzLDU5LjczMyw1OS43MzN2MTc5LjJIMjAyLjk3NQ0KCQkJCWMtMy44Ni0xOS42ODEtMjAuODc4LTM0LjEzMy00MS44NDEtMzQuMTMzYy04LjUzMy0xMC4yNC0yMC40OC0xNy4wNjctMzQuMTMzLTE3LjA2N2MtMTYuMjEzLDAtMzAuNzIsOS4zODctMzcuNTQ3LDIzLjA0DQoJCQkJYy02LjgyNy0zLjQxMy0xNC41MDctNS45NzMtMjIuMTg3LTUuOTczYy0yMC45NjMsMC0zNy45ODEsMTQuNDUyLTQxLjg0MSwzNC4xMzNIMjQuNmMtMTQuNTA3LDAtMjUuNiwxMS4wOTMtMjUuNiwyNS42DQoJCQkJYzAsMTQuNTA3LDExLjA5MywyNS42LDI1LjYsMjUuNmgxMC4yNTVsMjMuMDI1LDkxLjMwN2M2LjgyNywyNi40NTMsMzAuNzIsNDUuMjI3LDU4LjAyNyw0NS4yMjdoNi44MjdsLTExLjA5MywyMi4xODcNCgkJCQljLTIuNTYsNC4yNjctMC44NTMsOS4zODcsMy40MTMsMTEuMDkzYzAuODUzLDAuODUzLDIuNTYsMC44NTMsMy40MTMsMC44NTNjMy40MTMsMCw1Ljk3My0xLjcwNyw3LjY4LTQuMjY3TDE0MS4wOCw0NTkuOGgyMzYuOA0KCQkJCWwxNC41MDcsMjkuMDEzYzEuNzA3LDMuNDEzLDQuMjY3LDUuMTIsNy42OCw1LjEyYzEuNzA3LDAsMi41NiwwLDMuNDEzLTEuNzA3YzMuNDEzLTEuNzA3LDUuMTItNi44MjcsMy40MTMtMTEuMDkzDQoJCQkJbC0xMC42ODktMjEuMzc5YzI2LjQxOS0wLjkzOCw0OS4yNjYtMTkuMzksNTUuOTE2LTQ0LjMyOGwyMy4yNC05Mi4xNmgxMC4wNGMxNC41MDcsMCwyNS42LTExLjA5MywyNS42LTI1LjYNCgkJCQlDNTExLDI4My4xNiw0OTkuOTA3LDI3Mi4wNjcsNDg1LjQsMjcyLjA2N3ogTTM2NS4wOCwxMTguNDY3aC00OC42NGMzLjQxMy0xMC4yNCwxMy42NTMtMTcuMDY3LDI0Ljc0Ny0xNy4wNjcNCgkJCQlTMzYxLjY2NywxMDguMjI3LDM2NS4wOCwxMTguNDY3eiBNNjcuMjY3LDI1NWM3LjY4LDAsMTQuNTA3LDMuNDEzLDIwLjQ4LDkuMzg3YzEuNzA3LDIuNTYsNS4xMiwzLjQxMyw4LjUzMywyLjU2DQoJCQkJczUuMTItMy40MTMsNS45NzMtNi44MjdjMi41Ni0xMi44LDEyLjgtMjIuMTg3LDI1LjYtMjIuMTg3YzkuMzg3LDAsMTcuOTIsNC4yNjcsMjIuMTg3LDEyLjhjMS43MDcsMy40MTMsNS45NzMsNS4xMiw5LjM4Nyw0LjI2Nw0KCQkJCWMwLjg1MywwLDEuNzA3LDAsMi41NiwwYzExLjA5MywwLDIwLjQ4LDYuODI3LDIzLjg5MywxNy4wNjdINDMuMzczQzQ2Ljc4NywyNjEuODI3LDU2LjE3MywyNTUsNjcuMjY3LDI1NXogTTQzNi43Niw0MTAuMzA3DQoJCQkJYy01LjEyLDE4Ljc3My0yMi4xODcsMzIuNDI3LTQxLjgxMywzMi40MjdIMTE2Ljc2Yy0xOS42MjcsMC0zNi42OTMtMTMuNjUzLTQxLjgxMy0zMi40MjdsLTIyLjE4Ny04Ny4wNGg0MDQuNDhMNDM2Ljc2LDQxMC4zMDd6DQoJCQkJIE00ODUuNCwzMDYuMmgtMTcuMDY3SDQxLjY2N0gyNC42Yy01LjEyLDAtOC41MzMtMy40MTMtOC41MzMtOC41MzNzMy40MTMtOC41MzMsOC41MzMtOC41MzNoOC41MzNoMTYyLjEzM0g0ODUuNA0KCQkJCWM1LjEyLDAsOC41MzMsMy40MTMsOC41MzMsOC41MzNTNDkwLjUyLDMwNi4yLDQ4NS40LDMwNi4yeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzA2LjIsMTczLjkzM2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMjk3LjY2NywxNzAuNTIsMzAxLjA4LDE3My45MzMsMzA2LjIsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwNi4yLDIxMy4xODdjNS4xMiwwLDguNTMzLTQuMjY3LDguNTMzLTguNTMzdi05LjM4N2MwLTUuMTItMy40MTMtOC41MzMtOC41MzMtOC41MzNzLTguNTMzLDMuNDEzLTguNTMzLDguNTMzdjkuMzg3DQoJCQkJQzI5Ny42NjcsMjA5Ljc3MywzMDEuMDgsMjEzLjE4NywzMDYuMiwyMTMuMTg3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzA2LjIsMjQ2LjQ2N2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMjk3LjY2NywyNDMuMDUzLDMwMS4wOCwyNDYuNDY3LDMwNi4yLDI0Ni40Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNDAuMzMzLDE3My45MzNjNS4xMiwwLDguNTMzLTMuNDEzLDguNTMzLTguNTMzdi00LjI2N2MwLTUuMTItMy40MTMtOC41MzMtOC41MzMtOC41MzMNCgkJCQljLTUuMTIsMC04LjUzMywzLjQxMy04LjUzMyw4LjUzM3Y0LjI2N0MzMzEuOCwxNzAuNTIsMzM1LjIxMywxNzMuOTMzLDM0MC4zMzMsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMS44LDIwNC42NTNjMCw1LjEyLDMuNDEzLDguNTMzLDguNTMzLDguNTMzYzUuMTIsMCw4LjUzMy00LjI2Nyw4LjUzMy04LjUzM3YtOS4zODdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJYy01LjEyLDAtOC41MzMsMy40MTMtOC41MzMsOC41MzNWMjA0LjY1M3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMS44LDIzNy45MzNjMCw1LjEyLDMuNDEzLDguNTMzLDguNTMzLDguNTMzYzUuMTIsMCw4LjUzMy0zLjQxMyw4LjUzMy04LjUzM3YtNC4yNjdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJYy01LjEyLDAtOC41MzMsMy40MTMtOC41MzMsOC41MzNWMjM3LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM3NC40NjcsMTczLjkzM2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMzY1LjkzMywxNzAuNTIsMzY5LjM0NywxNzMuOTMzLDM3NC40NjcsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2NS45MzMsMjA0LjY1M2MwLDUuMTIsMy40MTMsOC41MzMsOC41MzMsOC41MzNTMzgzLDIwOC45MiwzODMsMjA0LjY1M3YtOS4zODdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJcy04LjUzMywzLjQxMy04LjUzMyw4LjUzM1YyMDQuNjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjkzMywyMzcuOTMzYzAsNS4xMiwzLjQxMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjQxMyw4LjUzMy04LjUzM3YtNC4yNjdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJcy04LjUzMywzLjQxMy04LjUzMyw4LjUzM1YyMzcuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",wNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ5NiwzNDRoLThWMjgwYTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJWMTEyYTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJIODhhMzIuMDQyLDMyLjA0MiwwLDAsMC0zMiwzMlYyNDhhMzIuMDQyLDMyLjA0MiwwLDAsMC0zMiwzMnY2NEgxNmE4LDgsMCwwLDAtOCw4djMyYTgsOCwwLDAsMCw4LDhoOHYzMmE4LDgsMCwwLDAsOCw4SDU2YTcuOTksNy45OSwwLDAsMCw3Ljg0LTYuNDNMNzAuNTYsMzkySDQ0MS40NGw2LjcyLDMzLjU3QTcuOTksNy45OSwwLDAsMCw0NTYsNDMyaDI0YTgsOCwwLDAsMCw4LThWMzkyaDhhOCw4LDAsMCwwLDgtOFYzNTJBOCw4LDAsMCwwLDQ5NiwzNDRaTTcyLDExMkExNi4wMjEsMTYuMDIxLDAsMCwxLDg4LDk2SDQyNGExNi4wMjEsMTYuMDIxLDAsMCwxLDE2LDE2VjI0OEg0MjRWMjE2YTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJIMjk2YTMyLjA0MiwzMi4wNDIsMCwwLDAtMzIsMzJ2MzJIMjQ4VjIxNmEzMi4wNDIsMzIuMDQyLDAsMCwwLTMyLTMySDEyMGEzMi4wNDIsMzIuMDQyLDAsMCwwLTMyLDMydjMySDcyWk00MDgsMjE2djMySDI4MFYyMTZhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNi0xNmg5NkExNi4wMjEsMTYuMDIxLDAsMCwxLDQwOCwyMTZabS0xNzYsMHYzMkgxMDRWMjE2YTE2LjAyMSwxNi4wMjEsMCwwLDEsMTYtMTZoOTZBMTYuMDIxLDE2LjAyMSwwLDAsMSwyMzIsMjE2Wk00MCwyODBhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNi0xNkg0NTZhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNiwxNnY2NEg0MFptOS40NCwxMzZINDBWMzkySDU0LjI0Wk00NzIsNDE2aC05LjQ0bC00LjgtMjRINDcyWm0xNi00MEgyNFYzNjBINDg4WiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",CNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NS4zOTMgNDUuMzkzIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDMuNTE4LDEyLjcwOUwyNS4xNzgsMC43MjhjLTEuNTExLTAuOTc4LTMuNDU4LTAuOTY4LTQuOTYsMC4wMjFMMS44NTksMTIuNzE5Yy0xLjE0LDAuNzUxLTEuNDU1LDIuMjg0LTAuNzA1LDMuNDI0DQoJCQljMC43NTEsMS4xNCwyLjI4MywxLjQ1NiwzLjQyNCwwLjcwNEwyMi43MTUsNS4wMjFMNDAuODMsMTYuODU3YzAuNDE2LDAuMjY5LDAuODgxLDAuMzk2LDEuMzQxLDAuMzk2DQoJCQljMC44MTIsMCwxLjYwNC0wLjM5NywyLjA3Ny0xLjEyN0M0NC45OSwxNC45OCw0NC42NjIsMTMuNDUyLDQzLjUxOCwxMi43MDl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zOC44NzksMjcuNjE2Yy0wLjE1MS0wLjg2NS0wLjkwMy0xLjUwNS0xLjc4LTEuNTA1aC0xLjAwOGwtMC4zODMtMy45ODdjLTAuNDA5LTQuMjY0LTMuOTQ4LTcuNDktOC4yMzItNy40OUgxNy45Mg0KCQkJYy00LjI4NSwwLTcuODIzLDMuMjI3LTguMjMzLDcuNDlsLTAuMzgyLDMuOTg3SDguMjk2Yy0wLjg3OCwwLTEuNjI5LDAuNjQtMS43ODIsMS41MDVsLTEuNSw4LjUwNA0KCQkJYy0wLjE4NiwxLjA1NCwwLjExMiwyLjEzOSwwLjgsMi45NTdjMC42NjIsMC43ODgsMS42MzcsMS4yNTgsMi42NTcsMS4yOTN2MS40MTJjMCwxLjk5OSwxLjYwMiwzLjYxLDMuNjAzLDMuNjFoMS4xMzgNCgkJCWMxLjk5OSwwLDMuNjI1LTEuNjExLDMuNjI1LTMuNjF2LTEuMzg5aDExLjczMnYxLjM4NmMwLDIsMS42MTMsMy42MTMsMy42MTIsMy42MTNoMS4xMzljMS45OTksMCwzLjYxNC0xLjYxMywzLjYxNC0zLjYxM1Y0MC4zNw0KCQkJYzEuMDItMC4wMzUsMS45ODktMC41MDEsMi42NDktMS4yODhjMC42ODgtMC44MiwwLjk4Mi0xLjg5OSwwLjc5OC0yLjk1NUwzOC44NzksMjcuNjE2eiBNMTEuNjQyLDM3LjExMw0KCQkJYy0xLjY4NywwLTMuMDU1LTEuMzY3LTMuMDU1LTMuMDU2YzAtMS42ODksMS4zNjgtMy4wNTcsMy4wNTUtMy4wNTdjMS42ODgsMCwzLjA1NywxLjM2NywzLjA1NywzLjA1Nw0KCQkJQzE0LjY5OSwzNS43NDYsMTMuMzMsMzcuMTEzLDExLjY0MiwzNy4xMTN6IE0xMi40MDQsMjYuMTExbDAuMzUzLTMuNjc4YzAuMjU3LTIuNjc0LDIuNDc2LTQuNjg4LDUuMTYzLTQuNjg4aDAuNTUxdjEuMTU2DQoJCQljMCwxLjAwMywwLjc5NywxLjgwMiwxLjc5OSwxLjgwMmg0Ljg1NmMxLjAwMiwwLDEuODEzLTAuNzk5LDEuODEzLTEuODAydi0xLjE1NWgwLjUzN2MyLjY4NywwLDQuOTA2LDIuMDE0LDUuMTYyLDQuNjg4DQoJCQlsMC4zNTQsMy42NzhMMTIuNDA0LDI2LjExMUwxMi40MDQsMjYuMTExeiBNMzMuNzUsMzcuMTEzYy0xLjY4NywwLTMuMDU1LTEuMzY3LTMuMDU1LTMuMDU2YzAtMS42ODksMS4zNjgtMy4wNTcsMy4wNTUtMy4wNTcNCgkJCWMxLjY4OCwwLDMuMDU3LDEuMzY3LDMuMDU3LDMuMDU3QzM2LjgwNywzNS43NDYsMzUuNDM4LDM3LjExMywzMy43NSwzNy4xMTN6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",ANe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00OTQuNTk0LDM5NC4yMzdoLTE5LjQ2MWMxMi45NTQtMTkuNTQzLDIwLjUxMi00Mi45NTgsMjAuNTEyLTY4LjEwOWMwLTY4LjE1Ny01NS40NDktMTIzLjYwNi0xMjMuNjA2LTEyMy42MDYNCgkJCWMtNy4xNzEsMC0xNC4yLDAuNjIyLTIxLjA0LDEuNzk5YzE3Ljg1My0yMS40MzUsMjguNjA4LTQ4Ljk3OSwyOC42MDgtNzguOTlDMzc5LjYwNiw1Ny4xNzQsMzI0LjE1NywxLjcyNCwyNTYsMS43MjQNCgkJCWMtNjguMTU3LDAtMTIzLjYwNiw1NS40NDktMTIzLjYwNiwxMjMuNjA2YzAsMzAuMDEyLDEwLjc1NSw1Ny41NTUsMjguNjA4LDc4Ljk5Yy02Ljg0LTEuMTc4LTEzLjg2OS0xLjc5OS0yMS4wNC0xLjc5OQ0KCQkJYy02OC4xNTcsMC0xMjMuNjA2LDU1LjQ0OS0xMjMuNjA2LDEyMy42MDZjMCwyNS4xNTEsNy41NTgsNDguNTY3LDIwLjUxMiw2OC4xMDlIMTcuNDA2TDAsNTEwLjI3Nmg5My4yOTRsMTUuMTM1LTIwLjE4MWg2My4wNjQNCgkJCWwxNS4xMzUsMjAuMTgxaDEzOC43NDJsMTUuMTM1LTIwLjE4MWg2My4wNjRsMTUuMTM1LDIwLjE4MUg1MTJMNDk0LjU5NCwzOTQuMjM3eiBNNDY5LjUxOSwzNzMuNjdsLTEzLjE0Mi03LjU4OA0KCQkJYzQuNzM2LTkuOTU4LDcuNzYtMjAuODgxLDguNjg4LTMyLjM4N2gxNS4xNzVDNDc5LjI1NCwzNDcuOTQ4LDQ3NS41MDMsMzYxLjQ1LDQ2OS41MTksMzczLjY3eiBNNDA5Ljg3NywzOTQuNTMzdi0xMzYuODENCgkJCWMyNC4wNDUsMTMuMzU0LDQwLjM2MSwzOS4wMDUsNDAuMzYxLDY4LjQwNVM0MzMuOTIyLDM4MS4xNzgsNDA5Ljg3NywzOTQuNTMzeiBNNDE5LjU4MSw0MjMuNjA4DQoJCQljLTEyLjIyLDUuOTg0LTI1LjcyMiw5LjczNC0zOS45NzUsMTAuNzIydi0xNS4xNzVjMTEuNTA2LTAuOTI3LDIyLjQyOS0zLjk1MSwzMi4zODctOC42ODhMNDE5LjU4MSw0MjMuNjA4eiBNNDQ4Ljc4NywzNzkuMTc2DQoJCQlsMTMuMTQ4LDcuNTkxYy03Ljc5NCwxMS41MTctMTcuNzQsMjEuNDYzLTI5LjI1NiwyOS4yNTZsLTcuNTkxLTEzLjE0OEM0MzQuMzM2LDM5Ni40NjQsNDQyLjM3NSwzODguNDI1LDQ0OC43ODcsMzc5LjE3NnoNCgkJCSBNNDgwLjI0MSwzMTguNTZoLTE1LjE3NWMtMC45MjctMTEuNTA2LTMuOTUxLTIyLjQyOS04LjY4OC0zMi4zODdsMTMuMTQyLTcuNTg4QzQ3NS41MDMsMjkwLjgwNSw0NzkuMjU0LDMwNC4zMDcsNDgwLjI0MSwzMTguNTZ6DQoJCQkgTTQzMi42NzgsMjM2LjIzMWMxMS41MTYsNy43OTQsMjEuNDYzLDE3Ljc0LDI5LjI1NiwyOS4yNTZsLTEzLjE0OCw3LjU5MWMtNi40MTItOS4yNDktMTQuNDUtMTcuMjg3LTIzLjY5OS0yMy42OTkNCgkJCUw0MzIuNjc4LDIzNi4yMzF6IE00MTEuOTk0LDI0MS43ODljLTkuOTU4LTQuNzM2LTIwLjg4MS03Ljc2LTMyLjM4Ny04LjY4OHYtMTUuMTc2YzE0LjI1MiwwLjk4NywyNy43NTQsNC43MzgsMzkuOTc0LDEwLjcyMg0KCQkJTDQxMS45OTQsMjQxLjc4OXogTTM5NC43NDIsMjUxLjN2MTQ5LjY1NWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyYy03Ljg5NCwwLTE1LjUxNC0xLjE4Ny0yMi43MDMtMy4zNzJWMjUxLjMNCgkJCWM3LjE4OS0yLjE4NiwxNC44MS0zLjM3MiwyMi43MDMtMy4zNzJDMzc5LjkzMiwyNDcuOTI4LDM4Ny41NTIsMjQ5LjExNCwzOTQuNzQyLDI1MS4zeiBNMTc3LjgsMzk0LjUzM3YtMTM2LjgxDQoJCQljMjQuMDQ1LDEzLjM1NCw0MC4zNjEsMzkuMDA1LDQwLjM2MSw2OC40MDVTMjAxLjg0NSwzODEuMTc4LDE3Ny44LDM5NC41MzN6IE0xODcuNTA0LDQyMy42MDgNCgkJCWMtMTIuMjIsNS45ODQtMjUuNzIyLDkuNzM0LTM5Ljk3NSwxMC43MjJ2LTE1LjE3NWMxMS41MDYtMC45MjcsMjIuNDI5LTMuOTUxLDMyLjM4Ny04LjY4OEwxODcuNTA0LDQyMy42MDh6IE0yODIuMTQyLDI2NS40ODgNCgkJCWM3Ljc5NC0xMS41MTcsMTcuNzQtMjEuNDYzLDI5LjI1Ni0yOS4yNTZsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OUwyODIuMTQyLDI2NS40ODh6IE0yODcuNywyODYuMTczDQoJCQljLTQuNzM2LDkuOTU4LTcuNzYsMjAuODgxLTguNjg4LDMyLjM4N2gtMTUuMTc1YzAuOTg3LTE0LjI1Myw0LjczNy0yNy43NTQsMTAuNzIyLTM5Ljk3NUwyODcuNywyODYuMTczeiBNMzE2LjY0LDIxNS4yMjcNCgkJCWwtNy41OTEtMTMuMTQ4YzkuMjQ5LTYuNDEyLDE3LjI4Ny0xNC40NSwyMy42OTktMjMuNjk5bDEzLjE0OCw3LjU5MUMzMzguMTAzLDE5Ny40ODcsMzI4LjE1NywyMDcuNDMzLDMxNi42NCwyMTUuMjI3eg0KCQkJIE0yOTMuODM5LDE5My43MzZWNTYuOTI1QzMxNy44ODQsNzAuMjgsMzM0LjIsOTUuOTMsMzM0LjIsMTI1LjMzMVMzMTcuODg0LDE4MC4zODEsMjkzLjgzOSwxOTMuNzM2eiBNMjk1Ljk1NSwyMDkuNjY5DQoJCQlsNy41ODcsMTMuMTQyYy0xMi4yMiw1Ljk4NC0yNS43MjIsOS43MzQtMzkuOTc1LDEwLjcyMnYtMTUuMTc1QzI3NS4wNzQsMjE3LjQzLDI4NS45OTYsMjE0LjQwNywyOTUuOTU1LDIwOS42Njl6IE0yNzcuMDQsMjQ3LjEzOA0KCQkJYy04Ljk1MSwxMC43NDctMTYuMTE5LDIzLjAyOC0yMS4wNCwzNi4zODljLTQuOTIxLTEzLjM2MS0xMi4wODktMjUuNjQxLTIxLjA0LTM2LjM4OWM2Ljg0LDEuMTc4LDEzLjg2OSwxLjc5OSwyMS4wNCwxLjc5OQ0KCQkJQzI2My4xNzEsMjQ4LjkzNywyNzAuMiwyNDguMzE1LDI3Ny4wNCwyNDcuMTM4eiBNMjQ4LjE2NCwzMTguNTZoLTE1LjE3NWMtMC45MjctMTEuNTA2LTMuOTUxLTIyLjQyOS04LjY4OC0zMi4zODdsMTMuMTQyLTcuNTg4DQoJCQlDMjQzLjQyNiwyOTAuODA1LDI0Ny4xNzcsMzA0LjMwNywyNDguMTY0LDMxOC41NnogTTI0OC40MzEsMjMzLjUzM2MtMTQuMjUyLTAuOTg3LTI3Ljc1NC00LjczOC0zOS45NzQtMTAuNzIybDcuNTg3LTEzLjE0Mg0KCQkJYzkuOTU4LDQuNzM2LDIwLjg4MSw3Ljc2LDMyLjM4Nyw4LjY4OFYyMzMuNTMzeiBNMjE4LjE2MSwxOTMuNzM2Yy0yNC4wNDUtMTMuMzU0LTQwLjM2MS0zOS4wMDUtNDAuMzYxLTY4LjQwNQ0KCQkJYzAtMjkuNCwxNi4zMTYtNTUuMDUxLDQwLjM2MS02OC40MDVWMTkzLjczNnogTTE3OS4yNTEsMTc4LjM3OWM2LjQxMiw5LjI0OSwxNC40NSwxNy4yODcsMjMuNjk5LDIzLjY5OWwtNy41OTEsMTMuMTQ4DQoJCQljLTExLjUxNi03Ljc5NC0yMS40NjMtMTcuNzQtMjkuMjU2LTI5LjI1NkwxNzkuMjUxLDE3OC4zNzl6IE0yMDAuNjAxLDIzNi4yMzFjMTEuNTE2LDcuNzk0LDIxLjQ2MywxNy43NCwyOS4yNTYsMjkuMjU2DQoJCQlsLTEzLjE0OCw3LjU5MWMtNi40MTItOS4yNDktMTQuNDUtMTcuMjg3LTIzLjY5OS0yMy42OTlMMjAwLjYwMSwyMzYuMjMxeiBNMjE2LjcxLDM3OS4xNzZsMTMuMTQ4LDcuNTkxDQoJCQljLTcuNzk0LDExLjUxNy0xNy43NCwyMS40NjMtMjkuMjU2LDI5LjI1NmwtNy41OTEtMTMuMTQ4QzIwMi4yNTksMzk2LjQ2NCwyMTAuMjk4LDM4OC40MjUsMjE2LjcxLDM3OS4xNzZ6IE0yMjQuMywzNjYuMDgyDQoJCQljNC43MzYtOS45NTgsNy43Ni0yMC44ODEsOC42ODgtMzIuMzg3aDE1LjE3NWMtMC45ODcsMTQuMjUzLTQuNzM3LDI3Ljc1NC0xMC43MjIsMzkuOTc1TDIyNC4zLDM2Ni4wODJ6IE0yNTYsMzY4LjcyOQ0KCQkJYzMuMzMyLDkuMDQ1LDcuNjk3LDE3LjU5MywxMi45NDQsMjUuNTA4aC0yNS44ODhDMjQ4LjMwMywzODYuMzIxLDI1Mi42NjgsMzc3Ljc3NCwyNTYsMzY4LjcyOXogTTI2My44MzYsMzMzLjY5NWgxNS4xNzUNCgkJCWMwLjkyNywxMS41MDYsMy45NTEsMjIuNDI5LDguNjg4LDMyLjM4N2wtMTMuMTQyLDcuNTg4QzI2OC41NzQsMzYxLjQ1LDI2NC44MjMsMzQ3Ljk0OCwyNjMuODM2LDMzMy42OTV6IE0yOTUuMjksMzc5LjE3Ng0KCQkJYzYuNDEyLDkuMjQ5LDE0LjQ1LDE3LjI4NywyMy42OTksMjMuNjk5bC03LjU5MSwxMy4xNDhjLTExLjUxNi03Ljc5NC0yMS40NjMtMTcuNzQtMjkuMjU2LTI5LjI1NkwyOTUuMjksMzc5LjE3NnoNCgkJCSBNMjkzLjgzOSwzMjYuMTI4YzAtMjkuNCwxNi4zMTYtNTUuMDUxLDQwLjM2MS02OC40MDV2MTM2LjgxQzMxMC4xNTUsMzgxLjE3OCwyOTMuODM5LDM1NS41MjgsMjkzLjgzOSwzMjYuMTI4eiBNMzMyLjA4NCw0MTAuNDY2DQoJCQljOS45NTgsNC43MzYsMjAuODgxLDcuNzYsMzIuMzg3LDguNjg4djE1LjE3NWMtMTQuMjUzLTAuOTg3LTI3Ljc1NC00LjczOC0zOS45NzUtMTAuNzIyTDMzMi4wODQsNDEwLjQ2NnogTTM2NC40NzEsMjE3LjkyNVYyMzMuMQ0KCQkJYy0xMS41MDYsMC45MjctMjIuNDI5LDMuOTUxLTMyLjM4Nyw4LjY4OGwtNy41ODctMTMuMTQyQzMzNi43MTYsMjIyLjY2MywzNTAuMjE4LDIxOC45MTIsMzY0LjQ3MSwyMTcuOTI1eiBNMzUzLjQ4LDE3Mi44NzMNCgkJCWwtMTMuMTQyLTcuNTg4YzQuNzM2LTkuOTU4LDcuNzYtMjAuODgxLDguNjg4LTMyLjM4N2gxNS4xNzVDMzYzLjIxNiwxNDcuMTUxLDM1OS40NjUsMTYwLjY1MywzNTMuNDgsMTcyLjg3M3ogTTM2NC4yMDIsMTE3Ljc2Mw0KCQkJaC0xNS4xNzVjLTAuOTI3LTExLjUwNi0zLjk1MS0yMi40MjktOC42ODgtMzIuMzg3bDEzLjE0Mi03LjU4OEMzNTkuNDY1LDkwLjAwOCwzNjMuMjE2LDEwMy41MSwzNjQuMjAyLDExNy43NjN6IE0zMTYuNjQsMzUuNDM0DQoJCQljMTEuNTE2LDcuNzk0LDIxLjQ2MywxNy43NCwyOS4yNTYsMjkuMjU2bC0xMy4xNDgsNy41OTFjLTYuNDEyLTkuMjQ5LTE0LjQ1LTE3LjI4Ny0yMy42OTktMjMuNjk5TDMxNi42NCwzNS40MzR6IE0yOTUuOTU2LDQwLjk5Mg0KCQkJYy05Ljk1OC00LjczNi0yMC44ODEtNy43Ni0zMi4zODctOC42ODhWMTcuMTI4YzE0LjI1MiwwLjk4NywyNy43NTQsNC43MzgsMzkuOTc0LDEwLjcyMkwyOTUuOTU2LDQwLjk5MnogTTI3OC43MDMsNTAuNTAzdjE0OS42NTUNCgkJCWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyYy03Ljg5NCwwLTE1LjUxNC0xLjE4Ny0yMi43MDMtMy4zNzJWNTAuNTAzYzcuMTg5LTIuMTg2LDE0LjgxLTMuMzcyLDIyLjcwMy0zLjM3Mg0KCQkJQzI2My44OTQsNDcuMTMxLDI3MS41MTQsNDguMzE3LDI3OC43MDMsNTAuNTAzeiBNMjQ4LjQzMiwxNy4xMjh2MTUuMTc1Yy0xMS41MDYsMC45MjctMjIuNDI5LDMuOTUxLTMyLjM4Nyw4LjY4OGwtNy41ODctMTMuMTQyDQoJCQlDMjIwLjY3OCwyMS44NjYsMjM0LjE4LDE4LjExNSwyNDguNDMyLDE3LjEyOHogTTE5NS4zNiwzNS40MzRsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OQ0KCQkJbC0xMy4xNDgtNy41OTFDMTczLjg5Nyw1My4xNzQsMTgzLjg0Myw0My4yMjgsMTk1LjM2LDM1LjQzNHogTTE1OC41Miw3Ny43ODhsMTMuMTQyLDcuNTg4Yy00LjczNiw5Ljk1OC03Ljc2LDIwLjg4MS04LjY4OCwzMi4zODcNCgkJCWgtMTUuMTc1QzE0OC43ODUsMTAzLjUxLDE1Mi41MzUsOTAuMDA4LDE1OC41Miw3Ny43ODh6IE0xNTguNTIsMTcyLjg3M2MtNS45ODQtMTIuMjItOS43MzUtMjUuNzIyLTEwLjcyMi0zOS45NzVoMTUuMTc1DQoJCQljMC45MjcsMTEuNTA2LDMuOTUxLDIyLjQyOSw4LjY4OCwzMi4zODdMMTU4LjUyLDE3Mi44NzN6IE0xODcuNTA0LDIyOC42NDdsLTcuNTg3LDEzLjE0MmMtOS45NTgtNC43MzYtMjAuODgxLTcuNzYtMzIuMzg3LTguNjg4DQoJCQl2LTE1LjE3NkMxNjEuNzgyLDIxOC45MTIsMTc1LjI4NCwyMjIuNjY0LDE4Ny41MDQsMjI4LjY0N3ogTTE2Mi42NjUsMjUxLjN2MTQ5LjY1NWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyDQoJCQljLTcuODk0LDAtMTUuNTE0LTEuMTg3LTIyLjcwMy0zLjM3MlYyNTEuM2M3LjE4OS0yLjE4NiwxNC44MS0zLjM3MiwyMi43MDMtMy4zNzJDMTQ3Ljg1NSwyNDcuOTI4LDE1NS40NzUsMjQ5LjExNCwxNjIuNjY1LDI1MS4zeg0KCQkJIE02MS43NjIsMzI2LjEyOGMwLTI5LjQsMTYuMzE2LTU1LjA1MSw0MC4zNjEtNjguNDA1djEzNi44MUM3OC4wNzgsMzgxLjE3OCw2MS43NjIsMzU1LjUyOCw2MS43NjIsMzI2LjEyOHogTTg2LjkxMyw0MDIuODc2DQoJCQlsLTcuNTkxLDEzLjE0OGMtMTEuNTE2LTcuNzk0LTIxLjQ2My0xNy43NC0yOS4yNTYtMjkuMjU2bDEzLjE0OC03LjU5MUM2OS42MjUsMzg4LjQyNSw3Ny42NjQsMzk2LjQ2NCw4Ni45MTMsNDAyLjg3NnoNCgkJCSBNMTAwLjAwNyw0MTAuNDY2YzkuOTU4LDQuNzM2LDIwLjg4MSw3Ljc2LDMyLjM4Nyw4LjY4OHYxNS4xNzVjLTE0LjI1My0wLjk4Ny0yNy43NTQtNC43MzgtMzkuOTc1LTEwLjcyMkwxMDAuMDA3LDQxMC40NjZ6DQoJCQkgTTEzMi4zOTQsMjE3LjkyNVYyMzMuMWMtMTEuNTA2LDAuOTI3LTIyLjQyOSwzLjk1MS0zMi4zODcsOC42ODhsLTcuNTg3LTEzLjE0MkMxMDQuNjM5LDIyMi42NjMsMTE4LjE0MSwyMTguOTEyLDEzMi4zOTQsMjE3LjkyNQ0KCQkJeiBNNzkuMzIyLDIzNi4yMzFsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OWwtMTMuMTQ4LTcuNTkxDQoJCQlDNTcuODU5LDI1My45NzEsNjcuODA1LDI0NC4wMjUsNzkuMzIyLDIzNi4yMzF6IE00Mi40ODEsMjc4LjU4NWwxMy4xNDIsNy41ODhjLTQuNzM2LDkuOTU4LTcuNzYsMjAuODgxLTguNjg4LDMyLjM4N0gzMS43NTkNCgkJCUMzMi43NDYsMzA0LjMwNywzNi40OTcsMjkwLjgwNSw0Mi40ODEsMjc4LjU4NXogTTMxLjc1OSwzMzMuNjk1aDE1LjE3NWMwLjkyNywxMS41MDYsMy45NTEsMjIuNDI5LDguNjg4LDMyLjM4N0w0Mi40OCwzNzMuNjcNCgkJCUMzNi40OTcsMzYxLjQ1LDMyLjc0NiwzNDcuOTQ4LDMxLjc1OSwzMzMuNjk1eiBNNDI2LjI3NCw0OTUuMTRsLTE1LjEzNS0yMC4xODFoLTc4LjJsLTE1LjEzNSwyMC4xODFIMTk0LjE5N2wtMTUuMTM1LTIwLjE4MQ0KCQkJaC03OC4yTDg1LjcyNiw0OTUuMTRIMTcuNTc1bDEyLjg2NS04NS43NjhoMTguMjNjMjIuNjIsMjQuNzg2LDU1LjE3MSw0MC4zNjEsOTEuMjkxLDQwLjM2MXM2OC42NzEtMTUuNTc1LDkxLjI5MS00MC4zNjFoNDkuNDk0DQoJCQljMjIuNjIsMjQuNzg2LDU1LjE3MSw0MC4zNjEsOTEuMjkxLDQwLjM2MXM2OC42NzEtMTUuNTc1LDkxLjI5MS00MC4zNjFoMTguMjNsMTIuODY1LDg1Ljc2OEg0MjYuMjc0eiIvPg0KICAgICAgICA8cmVjdCB4PSIzMDUuOTQ4IiB5PSIxMTYuNzU1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIxOTAuOTE5IiB5PSIxMTYuNzU1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSIxMTEuMjA1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSI2NS43OTkiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjI0OC40MzMiIHk9IjE3MS43NDciIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQyMS45ODYiIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjMwNi45NTciIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjMxMi4wMDIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjI2Ni41OTYiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjM3Mi41NDQiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjE4OS45MSIgeT0iMzE3LjU1MiIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iNzQuODgiIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjMxMi4wMDIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjI2Ni41OTYiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjM3Mi41NDQiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQ2MS4zODciIHk9IjQ3MC44ODEiIHRyYW5zZm9ybT0ibWF0cml4KDAuOTg4OSAtMC4xNDgzIDAuMTQ4MyAwLjk4ODkgLTY1Ljc3MiA3NC44NDExKSINCiAgICAgICAgICAgICAgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iNDU2LjIxIiB5PSI0MzEuOTM1IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjk4ODkgLTAuMTQ4MyAwLjE0ODMgMC45ODg5IC02MC43MTk5IDczLjY5MDMpIg0KICAgICAgICAgICAgICB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjI0LjE0NSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSI0NjQuODciIHdpZHRoPSI0NS40MDYiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjIxOC4xNjIiIHk9IjQ2NC44NyIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMjYzLjU2OSIgeT0iNDI0LjUwOSIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMjMzLjI5OCIgeT0iNDI0LjUwOSIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzYuMTI3IiB5PSI0MzYuNDYxIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjE0ODMgLTAuOTg4OSAwLjk4ODkgMC4xNDgzIC0zOTguMDY3NSA0MjUuODQyNykiDQogICAgICAgICAgICAgIHdpZHRoPSIyNC4xNDUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1LjQ2OCIgeT0iNDcwLjg2IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjE0ODMgLTAuOTg4OSAwLjk4ODkgMC4xNDgzIC00MzYuNDgzOCA0NTAuMDMyNSkiDQogICAgICAgICAgICAgIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",mNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTYxLDIxSDNhMSwxLDAsMCwwLDAsMkg2MWExLDEsMCwwLDAsMC0yWiIvPg0KICAgICAgICA8cGF0aCBkPSJNNjEsMkg0OWExLDEsMCwwLDAtMSwxVjE3SDQ2di0uNzY0YTEwLjUzMywxMC41MzMsMCwwLDAtMS4xLTQuNjgzQTguNTIyLDguNTIyLDAsMCwxLDQ0LDcuNzY0VjNhMSwxLDAsMCwwLTEtMUgzOWExLDEsMCwwLDAtMSwxVjcuNzY0YTguNTIyLDguNTIyLDAsMCwxLS45LDMuNzg5Yy0uMDM5LjA4LS4wNjcuMTY1LS4xLjI0Ni0uMDM4LS4wODEtLjA2Ni0uMTY2LS4xLS4yNDZBOC41MjIsOC41MjIsMCwwLDEsMzYsNy43NjRWM2ExLDEsMCwwLDAtMS0xSDMxYTEsMSwwLDAsMC0xLDFWNy43NjRhOC41MjIsOC41MjIsMCwwLDEtLjg5NSwzLjc4OUExMC41MzMsMTAuNTMzLDAsMCwwLDI4LDE2LjIzNlYxN0gxOFYxMC40MTRhMi4zOTQsMi4zOTQsMCwwLDEsLjcwNy0xLjcwNkE0LjM4NSw0LjM4NSwwLDAsMCwyMCw1LjU4NlY0aDJWNS41ODZhNC4zODUsNC4zODUsMCwwLDAsMS4yOTMsMy4xMjJBMi4zOTQsMi4zOTQsMCwwLDEsMjQsMTAuNDE0VjE0YTEsMSwwLDAsMCwyLDBWMTAuNDE0YTQuMzg1LDQuMzg1LDAsMCwwLTEuMjkzLTMuMTIyQTIuMzk0LDIuMzk0LDAsMCwxLDI0LDUuNTg2VjNhMSwxLDAsMCwwLTEtMUgxOWExLDEsMCwwLDAtMSwxVjUuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDZBNC41MTUsNC41MTUsMCwwLDAsMTcsNy42NDlhNC41MTUsNC41MTUsMCwwLDAtLjI5My0uMzU3QTIuMzk0LDIuMzk0LDAsMCwxLDE2LDUuNTg2VjNhMSwxLDAsMCwwLTEtMUgxMWExLDEsMCwwLDAtMSwxVjUuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDZBNC4zODUsNC4zODUsMCwwLDAsOCwxMC40MTRWMTdIM2ExLDEsMCwwLDAsMCwySDYxYTEsMSwwLDAsMCwwLTJINTBWMTRINjBhMSwxLDAsMCwwLDIsMFYzQTEsMSwwLDAsMCw2MSwyWk00Miw0VjdINDBWNFpNMTAuNzA3LDguNzA4QTQuMzg1LDQuMzg1LDAsMCwwLDEyLDUuNTg2VjRoMlY1LjU4NmE0LjM4NSw0LjM4NSwwLDAsMCwxLjI5MywzLjEyMkEyLjM5NCwyLjM5NCwwLDAsMSwxNiwxMC40MTRWMTJIMTBWMTAuNDE0QTIuMzk0LDIuMzk0LDAsMCwxLDEwLjcwNyw4LjcwOFpNMTAsMTRoNnYzSDEwWm0yMCwyLjIzNmE4LjUyMiw4LjUyMiwwLDAsMSwuODk1LTMuNzg5QTEwLjUzMywxMC41MzMsMCwwLDAsMzIsNy43NjRWNGgyVjcuNzY0YTEwLjUzMywxMC41MzMsMCwwLDAsMS4xLDQuNjgzLDguNTIyLDguNTIyLDAsMCwxLC45LDMuNzg5VjE3SDMwWk0zOCwxN3YtLjc2NGE4LjUyMiw4LjUyMiwwLDAsMSwuOS0zLjc4OUExMC41NDEsMTAuNTQxLDAsMCwwLDM5LjkyNCw5aDIuMTUyYTEwLjU0MSwxMC41NDEsMCwwLDAsMS4wMjksMy40NDcsOC41MjIsOC41MjIsMCwwLDEsLjksMy43ODlWMTdaTTYwLDRWNkg1MFY0Wk01MCwxMlY4SDYwdjRaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik02MSw0NEgzYTEsMSwwLDAsMCwwLDJINjBWNjBINDZWNDlhMSwxLDAsMCwwLTIsMFY2MEg0MlY1M2ExLDEsMCwwLDAtMS0xSDI2YTEsMSwwLDAsMC0xLDF2N0gyMlY0OWExLDEsMCwwLDAtMS0xSDVhMSwxLDAsMCwwLTEsMVY2MEgzYTEsMSwwLDAsMCwwLDJINjFhMSwxLDAsMCwwLDEtMVY0NUExLDEsMCwwLDAsNjEsNDRaTTQwLDU2SDM3VjU0aDNabS01LDBIMzJWNTRoM1ptLTUtMnYySDI3VjU0Wk0yMCw1Mi4zODJhMy45NDcsMy45NDcsMCwwLDAtNiwwVjUwaDZaTTE5LDU1YTIsMiwwLDEsMS0yLTJBMiwyLDAsMCwxLDE5LDU1Wk02LDU0aDZ2Mkg2Wm02LTR2Mkg2VjUwWk02LDU4aDZ2Mkg2Wm04LDJWNTcuNjE4YTMuOTQ3LDMuOTQ3LDAsMCwwLDYsMFY2MFptMTMtMmgzdjJIMjdabTUsMGgzdjJIMzJabTUsMlY1OGgzdjJaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik01Nyw1NmExLDEsMCwwLDAsMS0xVjUxYTEsMSwwLDAsMC0xLTFINDlhMSwxLDAsMCwwLTEsMXY0YTEsMSwwLDAsMCwxLDFabS03LTRoNnYySDUwWiIvPg0KICAgICAgICA8cGF0aCBkPSJNNjAsMjkuMTg0VjI2YTEsMSwwLDAsMC0xLTFINTVhMSwxLDAsMCwwLTEsMXYzLjE4NEEzLDMsMCwwLDAsNTIsMzJ2N2EyLjk2NiwyLjk2NiwwLDAsMCwuMTg0LDFINDlWMzRhMSwxLDAsMCwwLDAtMkg0MWExLDEsMCwwLDAsMCwydjZIMzhWMzFhMSwxLDAsMCwwLTEtMUgyNWExLDEsMCwwLDAtMSwxdjlIMjJWMzlhMSwxLDAsMCwwLTIsMHYxSDE0VjMzLjQxNGEyLjM5NCwyLjM5NCwwLDAsMSwuNzA3LTEuNzA2QTQuMzg1LDQuMzg1LDAsMCwwLDE2LDI4LjU4NlYyN2gydjEuNTg2YTQuMzg1LDQuMzg1LDAsMCwwLDEuMjkzLDMuMTIyQTIuMzk0LDIuMzk0LDAsMCwxLDIwLDMzLjQxNFYzNWExLDEsMCwwLDAsMiwwVjMzLjQxNGE0LjM4NSw0LjM4NSwwLDAsMC0xLjI5My0zLjEyMkEyLjM5NCwyLjM5NCwwLDAsMSwyMCwyOC41ODZWMjZhMSwxLDAsMCwwLTEtMUgxNWExLDEsMCwwLDAtMSwxdjIuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDYsNC41MTUsNC41MTUsMCwwLDAtLjI5My4zNTcsNC41MTUsNC41MTUsMCwwLDAtLjI5My0uMzU3QTIuMzk0LDIuMzk0LDAsMCwxLDEyLDI4LjU4NlYyNmExLDEsMCwwLDAtMS0xSDdhMSwxLDAsMCwwLTEsMXYyLjU4NmEyLjM5NCwyLjM5NCwwLDAsMS0uNzA3LDEuNzA2QTQuMzg1LDQuMzg1LDAsMCwwLDQsMzMuNDE0VjQwSDNhMSwxLDAsMCwwLDAsMkg2MWExLDEsMCwwLDAsLjctMS43MTNBMi45NjQsMi45NjQsMCwwLDAsNjIsMzlWMzJBMywzLDAsMCwwLDYwLDI5LjE4NFpNNi43MDcsMzEuNzA4QTQuMzg1LDQuMzg1LDAsMCwwLDgsMjguNTg2VjI3aDJ2MS41ODZhNC4zODUsNC4zODUsMCwwLDAsMS4yOTMsMy4xMjJBMi4zOTQsMi4zOTQsMCwwLDEsMTIsMzMuNDE0VjM1SDZWMzMuNDE0QTIuMzk0LDIuMzk0LDAsMCwxLDYuNzA3LDMxLjcwOFpNNiwzN2g2djNINlpNNTYsMjdoMnYySDU2Wm0tMSw0aDRhMSwxLDAsMCwxLDEsMXYzSDU0VjMyQTEsMSwwLDAsMSw1NSwzMVpNMzYsMzZIMzJWMzJoNFptLTYtNHYySDI2VjMyWm0tNCw0aDR2NEgyNlptNiw0VjM4aDR2MlptMTEsMFYzNGg0djZabTEyLDBhMSwxLDAsMCwxLTEtMVYzN2g2djJhMSwxLDAsMCwxLTEsMVoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",pNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0xMDggNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MDQgNDguMDE1NjI1aC00OTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOS04LTh2LTMyLjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQ5NmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4djMyLjAxNTYyNWMwIDQuNDI1NzgxLTMuNTc0MjE5IDgtOCA4em0tNDg4LTE2aDQ4MHYtMTYuMDE1NjI1aC00ODB6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTI0Ni43MTg3NWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0Ni43MTg3NWMwIDQuNDI1NzgyLTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NiAyOTYuMTYwMTU2Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04di0yNDYuNzE4NzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNDYuNzE4NzVjMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyOTYuMTYwMTU2aC0yNGMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDI0YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00OTYgMjk2LjE2MDE1NmgtMjRjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgyNGM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MC4xMTMyODFoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE4NC4xMjg5MDZoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNzEuOTg0Mzc1IDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0yMi4wNTg1OTQgMTcuOTM3NS00MCAzOS45OTIxODctNDAgNC40MjE4NzYgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI0IDgtOCA4LTEzLjIyMjY1NiAwLTIzLjk5MjE4NyAxMC43NjU2MjUtMjMuOTkyMTg3IDI0IDAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUyIDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yMzQzNzUtMTAuNzY5NTMxLTI0LTIzLjk5MjE4OC0yNC00LjQyMTg3NCAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzgxMjYtOCA4LTggMjIuMDU0Njg4IDAgMzkuOTkyMTg4IDE3Ljk0MTQwNiAzOS45OTIxODggNDAgMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im03OS45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0My45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgMTA0LjE0NDUzMWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtMjQuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQuMDE1NjI1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDgwLjEyODkwNmgtMzJjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTk2IDk2LjEyODkwNmgtMTYuMDE1NjI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDE1NjI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDMuOTY4NzUgOTYuMTI4OTA2aC0xNS45Njg3NWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDE1Ljk2ODc1YzQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjAuMDA3ODEyIDEyOC4xMjg5MDZoLTE2LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDMxMjVjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE3NS45ODQzNzUgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTIyLjA1ODU5NCAxNy45Mzc1LTQwIDM5Ljk5MjE4Ny00MCA0LjQyMTg3NiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzgxMjQgOC04IDgtMTMuMjIyNjU2IDAtMjMuOTkyMTg3IDEwLjc2NTYyNS0yMy45OTIxODcgMjQgMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTEzLjIzNDM3NS0xMC43Njk1MzEtMjQtMjMuOTkyMTg4LTI0LTQuNDIxODc0IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNi04IDgtOCAyMi4wNTQ2ODggMCAzOS45OTIxODggMTcuOTQxNDA2IDM5Ljk5MjE4OCA0MCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4My45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjAwIDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiA4MC4xMjg5MDZoLTMyYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMzJjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiAxMDQuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di0yNC4wMTU2MjVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNC4wMTU2MjVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDAgOTYuMTI4OTA2aC0xNi4wMTU2MjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMTU2MjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSA5Ni4xMjg5MDZoLTE1Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTUuOTY4NzVjNC40MjE4NzUgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNC4wMDc4MTIgMTI4LjEyODkwNmgtMTYuMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMzEyNWM0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTggOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2LjE2Nzk2OSAyODAuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtMTMuMjQyMTg3IDEwLjc3NzM0My0yNC4wMTU2MjUgMjQuMDE1NjI1LTI0LjAxNTYyNSA0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDgtNC40MjE4NzUgMC04LjAxNTYyNSAzLjU4OTg0NC04LjAxNTYyNSA4LjAxNTYyNSAwIDQuNDIxODc1LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjgwLjE0NDUzMWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04LTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCAxMy4yMzQzNzUgMCAyNCAxMC43NjU2MjUgMjQgMjQgMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzYuMTkxNDA2IDI5Ni4xNjAxNTZoLTgwLjAyMzQzN2MtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDgwLjAzMTI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU4MjAzMSA4LTguMDA3ODEzIDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjgzMjAzMSAyNjQuMTI4OTA2aC00OS4yOTY4NzVjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOGg0OS4yOTY4NzVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3Mi4xNjc5NjkgMjY0LjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtNDcuOTg0Mzc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2NDcuOTg0Mzc1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjE5OTIxOSAyNjQuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04di00OGMwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDh2NDhjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYuMTY3OTY5IDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTE2LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjk2LjE2MDE1NmMtNC40MjE4NzUgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOHYxNi4wMTU2MjVjMCA0LjQyNTc4Mi0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAuMTk5MjE5IDIxNi4xNDQ1MzFoLTQ4LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNDguMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyOC4xOTE0MDYgMjQwLjE0NDUzMWgtNjQuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNjQuMDIzNDM3YzQuNDI1NzgyIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjAuMTY3OTY5IDI4MC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yNDIxODcgMTAuNzc3MzQzLTI0LjAxNTYyNSAyNC4wMTU2MjUtMjQuMDE1NjI1IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOC00LjQyMTg3NSAwLTguMDE1NjI1IDMuNTg5ODQ0LTguMDE1NjI1IDguMDE1NjI1IDAgNC40MjE4NzUtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyODAuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04IDAtNC40MTc5NjktMy41ODIwMzEtOC04LTgtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDEzLjIzNDM3NSAwIDI0IDEwLjc2NTYyNSAyNCAyNCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0MC4xOTE0MDYgMjk2LjE2MDE1NmgtODAuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoODAuMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOC4wMDc4MTMgOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuODMyMDMxIDI2NC4xMjg5MDZoLTQ5LjI5Njg3NWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04aDQ5LjI5Njg3NWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjE2Nzk2OSAyNjQuMTI4OTA2Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Ny45ODQzNzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHY0Ny45ODQzNzVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuMTk5MjE5IDI2NC4xNDQ1MzFjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTh2LTQ4YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOHY0OGMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC4xNjc5NjkgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MTYuMDE1NjI1YzAgNC40MjU3ODItMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyOTYuMTYwMTU2Yy00LjQyMTg3NSAwLTgtMy41NzQyMTgtOC04di0xNi4wMTU2MjVjMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCA0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQyNC4xOTkyMTkgMjE2LjE0NDUzMWgtNDguMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg0OC4wMzEyNWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyLjE5MTQwNiAyNDAuMTQ0NTMxaC02NC4wMjM0MzdjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg2NC4wMjM0MzdjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",ONe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",ENe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4yNzMgNTEyLjI3MyIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNTA3Ljg5MSAyMzguMzk5Yy02LjcyMy0zNS44ODEtMjEuODUzLTY2LjkwNS00My43NTUtODkuNzE4LTkuODQ1LTEwLjI1My0yMS40NTYtMTkuNzUtMzQuNTE0LTI4LjIyNy0xNC45NC05LjY5OS0zMi4xOTItMTguNDM4LTU0LjI5My0yNy41MDMtOS42ODQtMy45NzItMTkuMzc1LTcuNjM3LTI4LjQwNi0xMS4wMDUtMTQuNjQyLTUuNDYtMzAuMDY0LTEwLjk1OC00NS44NDMtMTYuMzM3LTUuNDI3LTEuODUxLTEwLjkyMS0zLjYwNi0xNi4yMzQtNS4zMDMtOC41MDUtMi43MTctMTcuMy01LjUyNy0yNS43NzEtOC43MjEtNS4yMjQtMS45Ny03LjQyNi0zLjQ2NC04LjMyMS00LjI1OC4wNDYtLjA1Ni4wOTYtLjExNS4xNTEtLjE3NyA0LjA0OC00LjYxNSAyNy42MDMtMjMuMTA1IDQxLjUwMS0zMy42NzcgMi41NjItMS45NDkgMy41OTUtNS4zMTUgMi41NjYtOC4zNjVzLTMuODg5LTUuMTA0LTcuMTA3LTUuMTA0bC0xNTQuMDUyLS4wMDRjLTEuMzIxIDAtMi42MTkuMzQ5LTMuNzYyIDEuMDEyLTE3LjI4MiAxMC4wMjEtMzEuNjIzIDI1Ljc5LTM5LjM0NiA0My4yNjItOC45NDYgMjAuMjQtOS4wMTYgNDEuNDI1LS4yMDIgNjEuMjYzIDEyLjA3IDI3LjE2NyAzNy41NjcgNDIuMjM3IDYwLjA2MyA1NS41MzMgNS44NyAzLjQ2OSAxMS40MTQgNi43NDYgMTYuNjU1IDEwLjE2NyAzLjA5NSAyLjAyIDYuMjczIDQuMDAzIDkuMzQ3IDUuOTIyIDExLjU0NSA3LjIwOCAyMi40NSAxNC4wMTYgMzEuMTY3IDIzLjYwNCA4Ljk4MSA5Ljg3NyAxMS42OTMgMjIuNTAxIDcuODQyIDM2LjUwNy04Ljk0OCAzMi41NDQtMzUuNTQ0IDYxLjc4MS01OS4wMDkgODcuNTc2LTQuMzQyIDQuNzczLTguNDQyIDkuMjgxLTEyLjQwOSAxMy43NzYtMTEuMTA3IDEyLjU4Ny0yNy4zOTMgMzAuODktNDQuNjM0IDUwLjI2Ny01Ni44NjkgNjMuOTE0LTk0LjQxNSAxMDYuMjI5LTk4IDExMS44NDYtMS40NzQgMi4zMDktMS41NzEgNS4yMzgtLjI1NCA3LjY0IDEuMzE2IDIuNDAyIDMuODM4IDMuODk1IDYuNTc3IDMuODk1bDQ0Ni4zMTYuMDAzaC4wMDFjMy4yNTEgMCA2LjEzMi0yLjA5NCA3LjEzNS01LjE4NyAxMS42NTktMzUuOTYgMjIuMjEyLTcyLjIzMiAzNS4yODMtMTIxLjI4MyAxNS41OTEtNTguNTE1IDE5LjE4NS0xMDUuMzU0IDExLjMwOC0xNDcuNDA0em0tMjUuODAzIDE0My41NDNjLTEyLjM3IDQ2LjQyLTIyLjQ2NCA4MS4zMDUtMzMuMzg1IDExNS4zMzFsLTI2Ljk0LS4wMDJjMS4yODgtMy45NDggMi41NzMtNy45MDMgMy44NjEtMTEuODQyIDExLjU4LTM1LjQxIDIyLjg3Ny03MC45MjUgMzIuNTA0LTEwNi44ODggMS41MzUtNS43NCAzLjEyMi0xMS42NzQgNC42Ny0xNy42NDUgMS4wNC00LjAwOS0xLjM2OC04LjEwMy01LjM3OC05LjE0Mi00LjAwOS0xLjAzOC04LjEwMiAxLjM2OS05LjE0MiA1LjM3OC0xLjUzMyA1LjkxNC0zLjExMyAxMS44Mi00LjY0MSAxNy41MzEtOS40MzkgMzUuMjc1LTIwLjc5NyA3MS4wMjUtMzIuMjcgMTA2LjEwNC0xLjc5NyA1LjQ5My0zLjU5NSAxMC45OTItNS4zODkgMTYuNTA0aC0xNTcuOTc4Yy0uNDMyLTEuODU4LTEuNTY3LTMuNTUzLTMuMzA5LTQuNjQ5LTMuNTA0LTIuMjA2LTguMTM2LTEuMTUyLTEwLjM0MiAyLjM1My0uNDk1Ljc4Ni0uOTczIDEuNTQyLTEuNDQ5IDIuMjk2aC0xNTYuMjM0YzI0LjQ3My0zMC41NTEgOTEuODk3LTExMi4wNzMgMTI0LjIzOC0xNDguNzI0IDE3LjI0LTE5LjUzNyAzMS4zNjgtMzguNzI2IDQxLjk5NC01Ny4wMzMgMTcuNTk4LTMwLjMxOSAyNC41NjctNTYuNzY1IDIwLjcxNi03OC42MDEtOC4yNzMtNDYuOTA5LTQ1LjEyNy02NS43NjQtNzcuNjQzLTgyLjM5OC0zLjQzOS0xLjc1OS02Ljk5NS0zLjU3OS0xMC40MDctNS4zNzVsLS42MDktLjMyMWMtMy42NjMtMS45MzMtOC4yLS41My0xMC4xMzMgMy4xMzNzLS41MyA4LjIgMy4xMzMgMTAuMTMzbC42MTYuMzI1YzMuNDk2IDEuODQgNy4wOTEgMy42OCAxMC41NjggNS40NTggMzIuMjU3IDE2LjUwMiA2Mi43MjYgMzIuMDkgNjkuNzAzIDcxLjY1IDMuMjIgMTguMjU2LTMuMTQ1IDQxLjI5MS0xOC45MTcgNjguNDY2LTkuOTg5IDE3LjIxLTIzLjkxNCAzNi4xMDQtNDAuMjY4IDU0LjYzOC0zNS4yODYgMzkuOTg4LTExNi4wOTggMTM3LjgzOC0xMzIuMDU2IDE1OC42NDhoLTMzLjg1YzE3Ljg4Mi0yMC43NTMgNTYuNzQ0LTY0LjQyOCA4Ni45ODEtOTguNDExIDE3LjI1Mi0xOS4zODkgMzMuNTQ3LTM3LjcwMiA0NC42NzUtNTAuMzEzIDMuODkyLTQuNDEgNy45NTYtOC44NzggMTIuMjU4LTEzLjYwNyAyNC41OTctMjcuMDQgNTIuNDc2LTU3LjY4OCA2Mi4zNzUtOTMuNjkzIDUuMjA3LTE4LjkzOSAxLjIyNy0zNi45LTExLjIwNy01MC41NzUtMTYuNDIzLTE4LjA2Mi0zOS44NjMtMzAuMjM3LTYwLjYzNS00Mi41MTQtMjEuNTY1LTEyLjc0Ni00My44NjQtMjUuOTI2LTUzLjk4Ny00OC43MS0xNS4wMjMtMzMuODE1IDQuMzY2LTY3LjcxOCAzMS42NjctODQuNDQ3aDEzLjYzOWMtMjAuNTU3IDE1LjA3NC0zMi41NjggMzAuMzA1LTM2LjQ5NCA0Ni4xOTUtMy4xODMgMTIuODgyLS44MTMgMjUuNzU2IDcuMDQ1IDM4LjI2NSA0LjMyNCA2Ljg4MyA5LjkwNCAxMy4xMTIgMTcuMDU4IDE5LjA0MiAzLjE4OCAyLjY0MyA3LjkxNiAyLjIwMSAxMC41NjEtLjk4OCAyLjY0My0zLjE4OSAyLjIwMS03LjkxNy0uOTg4LTEwLjU2MS01LjkwOS00Ljg5OC0xMC40NjUtOS45NTktMTMuOTI5LTE1LjQ3Mi01LjY4OC05LjA1Ni03LjM4NC0xNy43ODYtNS4xODUtMjYuNjg4IDMuOTc5LTE2LjEwMyAyMC41NjgtMzIuODUxIDQ5LjMxNC00OS43OTNoNTAuNzE1Yy0xMy4zMDYgMTAuNDc5LTI4LjEwNSAyNC43NzUtMjQuMDk1IDQyLjM1MyAzLjk3OSAxNy40NDEgMjQuMTc3IDI3LjE3OSAzOS4xNzggMzMuNDcyIDE5LjU1OCA4LjIwNSAzOS44MzUgMTQuNzIgNTkuNDQ1IDIxLjAyMSAzMi4wODggMTAuMzEgNjUuMjY5IDIwLjk3MSA5NS4wMDMgMzkuMTM3IDMzLjkzNCAyMC43MzEgNTUuNTE4IDUxLjE1OCA2Mi40MiA4Ny45ODkgNC40NzggMjMuODk2IDMuNDI2IDUwLjYzNC0zLjMxMSA4NC4xNTJsLS4xMDcuNTM2Yy0uODE0IDQuMDYyIDEuODE4IDguMDE0IDUuODggOC44MjguNDk4LjEuOTkzLjE0NyAxLjQ4MS4xNDcgMy41MDEgMCA2LjYzMi0yLjQ2NCA3LjM0Ni02LjAyOGwuMTA2LS41MzJjNy4xMjgtMzUuNDYyIDguMTkxLTY0LjAxOCAzLjM0OS04OS44NjctNy43MDctNDEuMTIzLTMxLjY4Ni03NS4wMi02OS4zNDQtOTguMDI2LTMxLjI2Mi0xOS4wOTktNjUuMzA5LTMwLjAzOS05OC4yMzQtNDAuNjE4LTE5LjMwNy02LjIwMy0zOS4yNzEtMTIuNjE4LTU4LjIzLTIwLjU3Mi01Ljc4Ny0yLjQyOS0xMC43MTItNC45MTItMTUuMDU3LTcuNTktNS40NjQtMy4zNjgtMTMuNzIxLTguNDU3LTE1LjMwMi0xNS4zODgtMi41NzktMTEuMzA5IDE0LjMzLTIzLjk5OCAyNS41Mi0zMi4zOTUgMy4yMTYtMi40MTQgNi4xMDYtNC41ODUgOC40NzMtNi42MTcgMCAwIDEzLjc4OSAwIDEzLjc4Ny4wMDItOS44OTIgNy43ODYtMzQuMTU2IDE5LjczMy0zMC4xNzQgMzUuNjUzIDEuOTk4IDcuOTg2IDEwLjY4OCAxMi4xOTEgMTguMDM1IDE0Ljk2MiAxMy45ODEgNS4yNzIgMjguMzI0IDkuMzY3IDQyLjQ1NiAxNC4xODYgMTUuNjQ0IDUuMzM1IDMwLjkzMyAxMC43ODMgNDUuNDQyIDE2LjE5NSA4LjkxMyAzLjMyNSAxOC40NyA2LjkzOCAyNy45NTcgMTAuODI5IDIxLjIxNCA4LjcwMSAzNy42NzkgMTcuMDI4IDUxLjgxNiAyNi4yMDYgMTIuMDk0IDcuODUyIDIyLjgxMyAxNi42MTEgMzEuODYxIDI2LjAzNSAxOS44NzUgMjAuNzAxIDMzLjY0OCA0OS4wODggMzkuODMxIDgyLjA5MSA3LjQ1MSAzOS43NzEgMy45MzcgODQuNTA1LTExLjA1OCAxNDAuNzgxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQ0LjM2NSAxOTkuNDA3YzEuNDYxIDIuMDczIDMuNzggMy4xOCA2LjEzOCAzLjE4IDEuNDkyIDAgMy0uNDQ0IDQuMzEzLTEuMzcgMy4zODYtMi4zODYgNC4xOTYtNy4wNjUgMS44MTEtMTAuNDUxLTQuMTA5LTUuODMxLTguODExLTExLjI5My0xMy45NzMtMTYuMjMzLTIuOTkzLTIuODY1LTcuNzQxLTIuNzYtMTAuNjA0LjIzMi0yLjg2NCAyLjk5My0yLjc2MSA3Ljc0LjIzMiAxMC42MDQgNC40NjUgNC4yNzQgOC41MzEgOC45OTcgMTIuMDgzIDE0LjAzOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1NS4wODMgMTIyLjUxOC0uNDczLS4yNDZjLTUuNzc2LTIuOTkzLTExLjU0NS01Ljk4My0xNy4zMzQtOC45NDUtMy42ODQtMS44ODMtOC4yMDYtLjQyNi0xMC4wOTMgMy4yNjItMS44ODYgMy42ODgtLjQyNiA4LjIwNiAzLjI2MiAxMC4wOTMgNS43NjUgMi45NDkgMTEuNTExIDUuOTI3IDE3LjI2MyA4LjkwOGwuNDczLjI0NWMxLjEwNC41NzIgMi4yODMuODQzIDMuNDQ1Ljg0MyAyLjcxMiAwIDUuMzMxLTEuNDc2IDYuNjY1LTQuMDUgMS45MDYtMy42NzguNDctOC4yMDQtMy4yMDgtMTAuMTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuNjgzIDU3LjU4NGMxLjc0NC01LjUxIDQuNzE5LTEwLjE5NiA4LjE2My0xMi44NTYgMy4yNzgtMi41MzIgMy44ODItNy4yNDIgMS4zNTEtMTAuNTItMi41MzQtMy4yNzktNy4yNDQtMy44ODItMTAuNTIxLTEuMzUxLTUuODg5IDQuNTQ5LTEwLjYxIDExLjcyNC0xMy4yOTMgMjAuMjAxLTEuMjUgMy45NDkuOTM4IDguMTY0IDQuODg3IDkuNDE0Ljc1My4yMzggMS41MTUuMzUyIDIuMjY1LjM1MiAzLjE4Mi0uMDAxIDYuMTM2LTIuMDQzIDcuMTQ4LTUuMjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDEuMTM2IDk1LjkwM2MtNi43NTEtMy4zMTQtMTEuNDI0LTYuMjY4LTE1LjE1Mi05LjU3Ni0zLjA5OC0yLjc1LTcuODM4LTIuNDY2LTEwLjU4OC42MzEtMi43NSAzLjA5OC0yLjQ2NyA3LjgzOC42MzEgMTAuNTg4IDQuNzc5IDQuMjQyIDEwLjQ4NCA3Ljg4OCAxOC40OTkgMTEuODIyIDEuMDYzLjUyMiAyLjE5Ljc2OSAzLjMuNzY5IDIuNzcgMCA1LjQzNS0xLjU0MiA2LjczOC00LjE5NiAxLjgyNS0zLjcxOC4yOS04LjIxMi0zLjQyOC0xMC4wMzh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNzUuODU1IDQ0MS4yNzZjLTMuNTUzLTIuMTI2LTguMTU5LS45NzItMTAuMjg3IDIuNTgzLTMuNDk0IDUuODM1LTYuOTQ5IDExLjU3Ni0xMC4zMDYgMTcuMTIyLTIuMTQ1IDMuNTQzLTEuMDExIDguMTU1IDIuNTMzIDEwLjI5OSAxLjIxNS43MzUgMi41NTQgMS4wODUgMy44NzcgMS4wODUgMi41MzcgMCA1LjAxNC0xLjI4OCA2LjQyMy0zLjYxOCAzLjM2OC01LjU2NSA2LjgzNy0xMS4zMjcgMTAuMzQzLTE3LjE4MyAyLjEyNy0zLjU1NC45NzEtOC4xNi0yLjU4My0xMC4yODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjQuODY0IDIyNC4xNTJjLTQuMDY3Ljc4Ni02LjcyNyA0LjcyLTUuOTQgOC43ODcuOTEgNC43MTMgMS4zNzIgOS40NjggMS4zNzIgMTQuMTMyIDAgLjM1OC0uMDAzLjcxNi0uMDA5IDEuMDktLjAxNS45NzYtLjA0NCAxLjk0Ny0uMDg3IDIuOTE1LS4xODcgNC4xMzggMy4wMTggNy42NDMgNy4xNTUgNy44MjkuMTE1LjAwNS4yMjkuMDA4LjM0My4wMDggMy45ODYgMCA3LjMwNi0zLjE0IDcuNDg2LTcuMTYzLjA1MS0xLjExNy4wODQtMi4yMzkuMTAxLTMuMzUuMDA4LS40NDMuMDExLS44ODcuMDExLTEuMzMgMC01LjYxNy0uNTU0LTExLjMzLTEuNjQ1LTE2Ljk3OC0uNzg3LTQuMDY3LTQuNzI4LTYuNzI1LTguNzg3LTUuOTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMDYuMjU0IDM4OS40ODFjLTMuNTgyLTIuMDczLTguMTcyLS44NTMtMTAuMjQ5IDIuNzMxLTMuMjMyIDUuNTgyLTYuNjA2IDExLjM3LTEwLjA2MiAxNy4yNjEtMi4wOTYgMy41NzMtLjg5NyA4LjE2OCAyLjY3NiAxMC4yNjQgMS4xOTIuNjk5IDIuNDk4IDEuMDMxIDMuNzg3IDEuMDMxIDIuNTc0IDAgNS4wOC0xLjMyNiA2LjQ3Ny0zLjcwNyAzLjQ2OS01LjkxNSA2Ljg1Ni0xMS43MjggMTAuMTAzLTE3LjMzMiAyLjA3Ni0zLjU4My44NTItOC4xNzEtMi43MzItMTAuMjQ4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzYxLjkyOSAyODMuMzE0Yy0zLjg4My0xLjQ0Ni04LjIwMS41My05LjY0NiA0LjQxMy0yLjA5MSA1LjYxOS00LjU5MiAxMS40MDQtNy42NDYgMTcuNjg2LTEuODExIDMuNzI1LS4yNTkgOC4yMTMgMy40NjYgMTAuMDI0IDEuMDU3LjUxNCAyLjE3NC43NTYgMy4yNzMuNzU2IDIuNzgxIDAgNS40NTQtMS41NTMgNi43NTEtNC4yMjMgMy4yNjYtNi43MTggNS45NTItMTIuOTM3IDguMjE0LTE5LjAxMSAxLjQ0NS0zLjg4Mi0uNTMtOC4yLTQuNDEyLTkuNjQ1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzM1LjkyIDMzNy4yNzVjLTMuNTg1LTIuMDc1LTguMTczLS44NTItMTAuMjQ5IDIuNzMzLTMuMTA5IDUuMzcyLTYuNjM0IDExLjQ2LTkuOTc1IDE3LjUxNy0yIDMuNjI3LS42ODIgOC4xODkgMi45NDUgMTAuMTkgMS4xNDguNjMzIDIuMzkxLjkzNCAzLjYxNS45MzQgMi42NDQgMCA1LjIwNy0xLjQwMSA2LjU3NC0zLjg3OSAzLjI2Ni01LjkyIDYuNzQ5LTExLjkzOCA5LjgyMi0xNy4yNDcgMi4wNzctMy41ODUuODUyLTguMTcyLTIuNzMyLTEwLjI0OHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMwOC4wMDEgMTUxLjQwMmMtMy4yMTgtMS44MzgtNi40NzQtMy43NjMtOS42MjEtNS42MjQtMi41MzEtMS40OTYtNS4wNTktMi45OS03LjYtNC40NjEtMy41ODYtMi4wNzUtOC4xNzQtLjg1Mi0xMC4yNDggMi43MzMtMi4wNzYgMy41ODQtLjg1MyA4LjE3MyAyLjczMiAxMC4yNDkgMi41MDEgMS40NDggNC45OSAyLjkxOSA3LjQ4MiA0LjM5MyAzLjE5NCAxLjg4OCA2LjQ5OCAzLjg0MSA5LjgxMyA1LjczNSAxLjE3NC42NyAyLjQ1Mi45ODkgMy43MTQuOTg5IDIuNjA0IDAgNS4xMzUtMS4zNTggNi41MTktMy43ODEgMi4wNTYtMy41OTcuODA2LTguMTc4LTIuNzkxLTEwLjIzM3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",_Ne="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxyZWN0IHg9IjE4OC42MzIiIHk9IjI1NiIgd2lkdGg9IjM1LjkzIiBoZWlnaHQ9IjE3Ljk2NSIvPg0KICAgICAgICA8cGF0aCBkPSJNNDQxLjkxNyw0NzEuNTc5bDE2LjAzOS04OC4yMTljMC40ODItMi42MjMtMC4yMjgtNS4zMTYtMS45MzktNy4zNmMtMS43MDItMi4wNDQtNC4yMjgtMy4yMjgtNi44OTUtMy4yMjhoLTg5LjgyNQ0KCQkJYy0yLjY2NywwLTUuMTkzLDEuMTg0LTYuODk1LDMuMjI4Yy0xLjcxMSwyLjA0NC0yLjQyMSw0LjczNy0xLjkzOSw3LjM2bDE2LjAzOSw4OC4yMTlIMjYwLjQ5MVYzMS40MzkNCgkJCWMwLTQuOTY1LTQuMDE4LTguOTgyLTguOTgyLTguOTgySDUzLjg5NWMtNC45NjUsMC04Ljk4Miw0LjAxOC04Ljk4Miw4Ljk4MnY0NDAuMTRIMHYxNy45NjVoNTMuODk1aDE5Ny42MTRoMTI1Ljc1NGg1My44OTVINTEyDQoJCQl2LTE3Ljk2NUg0NDEuOTE3eiBNMjQyLjUyNiw0NzEuNTc5SDYyLjg3N1Y0MC40MjFoMTc5LjY0OVY0NzEuNTc5eiBNNDIzLjY1OCw0NzEuNTc5aC0zOC44OTVsLTE0LjcwMi04MC44NDJoNjguMjk4DQoJCQlMNDIzLjY1OCw0NzEuNTc5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDU4LjEwNSw3Ni4zNTFjLTI3LjQ1NiwwLTQ0LjQ4OSwxMi40OTYtNTMuODk1LDI1LjE5NWMtOS40MDgtMTIuNjk5LTI2LjQzOS0yNS4xOTUtNTMuODk1LTI1LjE5NQ0KCQkJYy00Ljk2NSwwLTguOTgyLDQuMDE4LTguOTgyLDguOTgyYzAsNC45NjUsNC4wMTgsOC45ODIsOC45ODIsOC45ODJjMzMuNzU0LDAsNDMuMjcyLDIzLjMwNyw0NC45MTIsMjguMjQ2djIzMi4yNDYNCgkJCWMwLDQuOTY1LDQuMDE4LDguOTgyLDguOTgyLDguOTgyczguOTgyLTQuMDE4LDguOTgyLTguOTgyVjEyMi41NzJjMS41NDQtNC42OCwxMC45ODctMjguMjU3LDQ0LjkxMi0yOC4yNTcNCgkJCWM0Ljk2NSwwLDguOTgyLTQuMDE4LDguOTgyLTguOTgyQzQ2Ny4wODgsODAuMzY4LDQ2My4wNyw3Ni4zNTEsNDU4LjEwNSw3Ni4zNTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNjUuODMzLDExOS4yNjNjLTE1LjU1My0xNS41NTMtMzYuODQyLTIyLjM3Ny01NS42NjctMTcuNzk4Yy0zLjI1NCwwLjc5OC01Ljc5OCwzLjM0Mi02LjU5Niw2LjU5Ng0KCQkJYy00LjU3OSwxOC43NzIsMi4yMzcsNDAuMDk3LDE3Ljc5OCw1NS42NjdjMTIuMzYsMTIuMzYsMjguMzYsMTkuMjAyLDQzLjgxNiwxOS4yMDJjNC4wMDksMCw3Ljk4Mi0wLjQ2NSwxMS44NTEtMS40MDQNCgkJCWMzLjI1NS0wLjc5OCw1Ljc5OC0zLjM0Miw2LjU5Ni02LjU5NkMzODguMjExLDE1Ni4xNTgsMzgxLjM5NSwxMzQuODMzLDM2NS44MzMsMTE5LjI2M3ogTTM2Ny4wMDksMTY0LjkwMw0KCQkJYy0xMS4xNTgsMC40MzktMjMuNTk2LTQuNTM1LTMyLjkzOS0xMy44NzdjLTkuMzQyLTkuMzUxLTE0LjQzOS0yMS43MzctMTMuODc3LTMyLjkzOWMxMS4xMjMtMC41NzksMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDE0MS4zMTYsMzY3LjU3LDE1My43MDIsMzY3LjAwOSwxNjQuOTAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjgzMywyMDAuMTA1Yy0xNS41NTMtMTUuNTUzLTM2Ljg0Mi0yMi4zNjktNTUuNjY3LTE3Ljc5OGMtMy4yNTQsMC43OTgtNS43OTgsMy4zNDItNi41OTYsNi41OTYNCgkJCWMtNC41NzksMTguNzcyLDIuMjM3LDQwLjA5NywxNy43OTgsNTUuNjY3YzEyLjM2LDEyLjM2LDI4LjM2LDE5LjIwMiw0My44MTYsMTkuMjAyYzQuMDA5LDAsNy45ODItMC40NjUsMTEuODUxLTEuNDA0DQoJCQljMy4yNTUtMC43OTgsNS43OTgtMy4zNDIsNi41OTYtNi41OTZDMzg4LjIxMSwyMzcsMzgxLjM5NSwyMTUuNjc2LDM2NS44MzMsMjAwLjEwNXogTTM2Ny4wMDksMjQ1Ljc0Ng0KCQkJYy0xMS4xNTgsMC40OTEtMjMuNTk2LTQuNTQ0LTMyLjkzOS0xMy44NzdjLTkuMzQyLTkuMzUxLTE0LjQzOS0yMS43MzctMTMuODc3LTMyLjkzOWMxMS4xMjMtMC41MzUsMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDIyMi4xNTgsMzY3LjU3LDIzNC41NDQsMzY3LjAwOSwyNDUuNzQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjgzMywyODAuOTQ3Yy0xNS41NTMtMTUuNTYxLTM2Ljg0Mi0yMi4zNjktNTUuNjY3LTE3Ljc5OGMtMy4yNTQsMC43OTgtNS43OTgsMy4zNDItNi41OTYsNi41OTYNCgkJCWMtNC41NzksMTguNzcyLDIuMjM3LDQwLjA5NywxNy43OTgsNTUuNjY3YzEyLjM2LDEyLjM2LDI4LjM2LDE5LjIwMiw0My44MTYsMTkuMjAyYzQuMDA5LDAsNy45ODItMC40NjUsMTEuODUxLTEuNDA0DQoJCQljMy4yNTUtMC43OTgsNS43OTgtMy4zNDIsNi41OTYtNi41OTZDMzg4LjIxMSwzMTcuODQyLDM4MS4zOTUsMjk2LjUxOCwzNjUuODMzLDI4MC45NDd6IE0zNjcuMDA5LDMyNi41ODgNCgkJCWMtMTEuMTU4LDAuNDQ3LTIzLjU5Ni00LjUzNS0zMi45MzktMTMuODc3Yy05LjM0Mi05LjM1MS0xNC40MzktMjEuNzM3LTEzLjg3Ny0zMi45MzljMTEuMTIzLTAuNTcsMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDMwMywzNjcuNTcsMzE1LjM4NiwzNjcuMDA5LDMyNi41ODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDkuMzg2LDEwOC4wNjFjLTAuNzk4LTMuMjU0LTMuMzQyLTUuNzk4LTYuNTk2LTYuNTk2Yy0xOC43ODktNC41Ny00MC4xMDUsMi4yMzctNTUuNjY3LDE3Ljc5OA0KCQkJYy0xNS41NjEsMTUuNTctMjIuMzc3LDM2Ljg5NS0xNy43OTgsNTUuNjY3YzAuNzk4LDMuMjU1LDMuMzQyLDUuNzk4LDYuNTk2LDYuNTk2YzMuODY4LDAuOTM5LDcuODMzLDEuNDA0LDExLjg0MiwxLjQwNA0KCQkJYzE1LjQ2NSwwLDMxLjQ2NS02Ljg0Miw0My44MjUtMTkuMjAyQzUwNy4xNDksMTQ4LjE1OCw1MTMuOTY1LDEyNi44MzMsNTA5LjM4NiwxMDguMDYxeiBNNDc4Ljg4NiwxNTEuMDI2DQoJCQljLTkuMzUxLDkuMzQyLTIxLjg3NywxNC4zMjUtMzIuOTM5LDEzLjg3N2MtMC41NjEtMTEuMjAyLDQuNTM1LTIzLjU4OCwxMy44NzctMzIuOTM5YzkuMzUxLTkuMzQyLDIxLjc5OC0xNC40NDcsMzIuOTM5LTEzLjg3Nw0KCQkJQzQ5My4zMjUsMTI5LjI4OSw0ODguMjI4LDE0MS42NzUsNDc4Ljg4NiwxNTEuMDI2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTA5LjM4NiwxODguOTAzYy0wLjc5OC0zLjI1NC0zLjM0Mi01Ljc5OC02LjU5Ni02LjU5NmMtMTguNzg5LTQuNTc5LTQwLjEwNSwyLjIzNy01NS42NjcsMTcuNzk4DQoJCQljLTE1LjU2MSwxNS41Ny0yMi4zNzcsMzYuODk1LTE3Ljc5OCw1NS42NjdjMC43OTgsMy4yNTUsMy4zNDIsNS43OTgsNi41OTYsNi41OTZjMy44NjksMC45MzksNy44MzMsMS40MDQsMTEuODQyLDEuNDA0DQoJCQljMTUuNDY1LDAsMzEuNDY1LTYuODQyLDQzLjgyNS0xOS4yMDJDNTA3LjE0OSwyMjksNTEzLjk2NSwyMDcuNjc2LDUwOS4zODYsMTg4LjkwM3ogTTQ3OC44ODYsMjMxLjg2OA0KCQkJYy05LjM1MSw5LjMzMy0yMS44NzcsMTQuMzY4LTMyLjkzOSwxMy44NzdjLTAuNTYxLTExLjIwMiw0LjUzNS0yMy41ODgsMTMuODc3LTMyLjkzOWM5LjM1MS05LjM0MiwyMS43OTgtMTQuNDAzLDMyLjkzOS0xMy44NzcNCgkJCUM0OTMuMzI1LDIxMC4xMzIsNDg4LjIyOCwyMjIuNTE3LDQ3OC44ODYsMjMxLjg2OHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwOS4zODYsMjY5Ljc0NmMtMC43OTgtMy4yNTQtMy4zNDItNS43OTgtNi41OTYtNi41OTZjLTE4Ljc4OS00LjU3OS00MC4xMDUsMi4yMzctNTUuNjY3LDE3Ljc5OA0KCQkJYy0xNS41NjEsMTUuNTctMjIuMzc3LDM2Ljg5NS0xNy43OTgsNTUuNjY3YzAuNzk4LDMuMjU1LDMuMzQyLDUuNzk4LDYuNTk2LDYuNTk2YzMuODY5LDAuOTM5LDcuODMzLDEuNDA0LDExLjg0MiwxLjQwNA0KCQkJYzE1LjQ2NSwwLDMxLjQ2NS02Ljg0Miw0My44MjUtMTkuMjAyQzUwNy4xNDksMzA5Ljg0Miw1MTMuOTY1LDI4OC41MTgsNTA5LjM4NiwyNjkuNzQ2eiBNNDc4Ljg4NiwzMTIuNzENCgkJCWMtOS4zNTEsOS4zNDItMjEuODc3LDE0LjMzMy0zMi45MzksMTMuODc3Yy0wLjU2MS0xMS4yMDIsNC41MzUtMjMuNTg4LDEzLjg3Ny0zMi45MzljOS4zNTEtOS4zNDIsMjEuNzk4LTE0LjQ0NywzMi45MzktMTMuODc3DQoJCQlDNDkzLjMyNSwyOTAuOTc0LDQ4OC4yMjgsMzAzLjM2LDQ3OC44ODYsMzEyLjcxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",fNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTEzOS45MzMgMjMwLjU2NmgyMzIuMTM1YzIyLjQwNSAwIDQwLjYzNC0xOC4yMjggNDAuNjM0LTQwLjYzM3YtMTQ5LjNjLS4wMDEtMjIuNDA1LTE4LjIyOS00MC42MzMtNDAuNjM1LTQwLjYzM2gtMjMyLjEzNGMtMjIuNDA1IDAtNDAuNjM0IDE4LjIyOC00MC42MzQgNDAuNjMzdjE0OS4yOTljMCAyMi40MDYgMTguMjI4IDQwLjYzNCA0MC42MzQgNDAuNjM0em0tMjUuNjM0LTE4OS45MzNjMC0xNC4xMzQgMTEuNDk5LTI1LjYzMyAyNS42MzQtMjUuNjMzaDIzMi4xMzVjMTQuMTM1IDAgMjUuNjM0IDExLjQ5OSAyNS42MzQgMjUuNjMzdjE0OS4yOTljMCAxNC4xMzQtMTEuNDk5IDI1LjYzMy0yNS42MzQgMjUuNjMzaC0yMzIuMTM1Yy0xNC4xMzUgMC0yNS42MzQtMTEuNDk5LTI1LjYzNC0yNS42MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzkuOTMzIDUwLjIwNGM0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41di00LjE0MmMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41cy03LjUgMy4zNTgtNy41IDcuNXY0LjE0MmMwIDQuMTQyIDMuMzU3IDcuNSA3LjUgNy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ1LjExIDE2NC44MTNjMTAuNDIzIDIuMDgxIDE4Ljg1IDEwLjE4IDIwLjk3IDIwLjE1NyAxLjUzNiA3LjIyMiA4LjAyMiAxMi40NjMgMTUuNDIyIDEyLjQ2M2gxNDguOTQ3YzcuNDggMCAxMy45OC01LjMxIDE1LjQ1NS0xMi42MjQgMi4xMTUtMTAuNDgyIDEwLjU3Ni0xOC45MzYgMjEuMDUyLTIxLjAzOCA3LjMwOC0xLjQ2NiAxMi42MTEtNy45NjUgMTIuNjExLTE1LjQ1NHYtNjYuMDY3YzAtNy40ODQtNS4zMTEtMTMuOTg1LTEyLjYyNy0xNS40NTctMTAuNDcyLTIuMTA3LTE4LjkyNS0xMC41NjMtMjEuMDM2LTIxLjA0MS0xLjQ3NS03LjMxMi03Ljk2Ny0xMi42MTgtMTUuNDM5LTEyLjYxOGgtMTQ4Ljk3MWMtNy4zOTUgMC0xMy44NzggNS4yNDItMTUuNDE0IDEyLjQ2NS0yLjExOCA5Ljk2OS0xMC41NCAxOC4wNjctMjAuOTU1IDIwLjE1My03LjM1NSAxLjQ3Mi0xMi42OTIgNy45NzktMTIuNjkyIDE1LjQ3djY4LjEyNWMwIDcuNDk0IDUuMzMxIDEzLjk5OSAxMi42NzcgMTUuNDY2em0yLjMyMy04My41OTJjMC0uMzc0LjI2Mi0uNjg3LjYzOC0uNzYyIDE2LjIwMy0zLjI0NCAyOS4zMzctMTYgMzIuNjgyLTMxLjc0MS4wNzMtLjM0NC4zNzgtLjU4NS43NDItLjU4NWgxNDguOTcyYy4zNTcgMCAuNjY2LjI0NS43MzMuNTgzIDMuMjkgMTYuMzI1IDE2LjQ2NCAyOS40OTkgMzIuNzgyIDMyLjc4Mi4zNC4wNjguNTg2LjM4NS41ODYuNzUydjY2LjA2N2MwIC4zNjEtLjI0MS42ODMtLjU2MS43NDctMTYuMzI2IDMuMjc0LTI5LjUxIDE2LjQ0Ny0zMi44MDYgMzIuNzc4LS4wNjkuMzQyLS4zODYuNTkxLS43NTIuNTkxaC0xNDguOTQ3Yy0uMzYyIDAtLjY3OC0uMjQ2LS43NS0uNTgyLTMuMzQ3LTE1Ljc1Mi0xNi40OS0yOC41MTEtMzIuNzA1LTMxLjc0OC0uMzU3LS4wNzEtLjYxNC0uMzg5LS42MTQtLjc1N3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3Mi4wNjcgNTAuMjA0YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTQuMTQyYzAtNC4xNDItMy4zNTctNy41LTcuNS03LjVzLTcuNSAzLjM1OC03LjUgNy41djQuMTQyYzAgNC4xNDIgMy4zNTggNy41IDcuNSA3LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzkuOTMzIDE5OS41MDNjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXYtNC4xNDJjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NC4xNDJjMCA0LjE0MyAzLjM1NyA3LjUgNy41IDcuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3Mi4wNjcgMTgwLjM2MmMtNC4xNDMgMC03LjUgMy4zNTgtNy41IDcuNXY0LjE0MmMwIDQuMTQyIDMuMzU3IDcuNSA3LjUgNy41czcuNS0zLjM1OCA3LjUtNy41di00LjE0MmMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg5LjczMyAxNjQuMWg0OS43YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTI1LjYzM2gxNy4zNWMyLjYgMCA1LjAxNC0xLjM0NiA2LjM4LTMuNTU3czEuNDkxLTQuOTcyLjMyOC03LjI5N2wtMjQuODUtNDkuN2MtMS4yNzEtMi41NDEtMy44NjctNC4xNDYtNi43MDgtNC4xNDZzLTUuNDM4IDEuNjA1LTYuNzA4IDQuMTQ2bC0xNC40OTMgMjguOTg3aC0yOC40OThjLTQuMTQzIDAtNy41IDMuMzU4LTcuNSA3LjV2NDkuN2MtLjAwMSA0LjE0MiAzLjM1NyA3LjUgNy40OTkgNy41em00OS43MDEtNzMuNTYzIDEyLjcxNSAyNS40M2gtMjUuNDN6bS00Mi4yMDEgMjMuODYzaDEzLjQ5OGwtMi44NTYgNS43MTNjLTEuMTYzIDIuMzI1LTEuMDM4IDUuMDg2LjMyOCA3LjI5N3MzLjc4IDMuNTU3IDYuMzggMy41NTdoMTcuMzUxdjE4LjEzM2gtMzQuN3YtMzQuN3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxMy45ODMgMTQ3LjUzM2MxNy44MzggMCAzMi4zNS0xNC41MTIgMzIuMzUtMzIuMzUgMC0xNy44MzctMTQuNTEyLTMyLjM1LTMyLjM1LTMyLjM1cy0zMi4zNTEgMTQuNTEyLTMyLjM1MSAzMi4zNWMuMDAxIDE3LjgzOCAxNC41MTQgMzIuMzUgMzIuMzUxIDMyLjM1em0wLTQ5LjY5OWM5LjU2NiAwIDE3LjM1IDcuNzgzIDE3LjM1IDE3LjM1cy03Ljc4MyAxNy4zNS0xNy4zNSAxNy4zNS0xNy4zNTEtNy43ODMtMTcuMzUxLTE3LjM1Yy4wMDEtOS41NjcgNy43ODQtMTcuMzUgMTcuMzUxLTE3LjM1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjMwLjg2NyAyNDguNWMtOC41NDcgMC0xNS41IDYuOTUzLTE1LjUgMTUuNXYxNy4xMzNjMCA4LjU0NyA2Ljk1MyAxNS41IDE1LjUgMTUuNWg1MC4yNjZjOC41NDcgMCAxNS41LTYuOTUzIDE1LjUtMTUuNXYtMTcuMTMzYzAtOC41NDctNi45NTMtMTUuNS0xNS41LTE1LjV6bTUwLjc2NiAxNS41djE3LjEzM2MwIC4yNzYtLjIyNS41LS41LjVoLTUwLjI2NmMtLjI3NSAwLS41LS4yMjQtLjUtLjV2LTE3LjEzM2MwLS4yNzYuMjI1LS41LjUtLjVoNTAuMjY2Yy4yNzUgMCAuNS4yMjQuNS41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDk2LjUgNDYzLjg2N2gtMTcuNjcyYy4wMTMtLjI2MS4wNC0uNTE5LjA0LS43ODN2LTguMjg0YzAtMTAuNjUyLTYuOTU5LTE5LjcwNC0xNi41NjctMjIuODY0di0xMzYuNTA1YzkuNjA4LTMuMTYgMTYuNTY3LTEyLjIxMiAxNi41NjctMjIuODY0di04LjI4NGMwLTguNzAzLTcuMDgxLTE1Ljc4My0xNS43ODQtMTUuNzgzaC0yLjU2MmMxLjE0My0yLjggMS43NzktNS44NiAxLjc3OS05LjA2NyAwLTEzLjI3LTEwLjc5Ni0yNC4wNjYtMjQuMDY2LTI0LjA2NnMtMjQuMDY2IDEwLjc5Ni0yNC4wNjYgMjQuMDY2YzAgMy4yMDcuNjM1IDYuMjY2IDEuNzc5IDkuMDY3aC0yLjU2M2MtOC43MDMgMC0xNS43ODMgNy4wODEtMTUuNzgzIDE1Ljc4M3Y4LjI4NGMwIDEwLjUxOCA2Ljc4NiAxOS40NzYgMTYuMjA3IDIyLjc0MS0xOC42MTYgMTguNDM4LTQwLjAzNyAzMy4zNTEtNjMuNzM0IDQ0LjMzNy0zLjc1OCAxLjc0Mi01LjM5MyA2LjIwMS0zLjY1IDkuOTU4IDEuMjcgMi43MzcgMy45NzggNC4zNDggNi44MSA0LjM0OCAxLjA1NiAwIDIuMTI5LS4yMjQgMy4xNDktLjY5OCAyMS4wNTgtOS43NjIgNDAuNDI3LTIyLjQzMiA1Ny43ODYtMzcuNzU0djIzLjcxMmMtNDUuNDEgMzUuNDk1LTEwMC4wMTQgNTQuMjQ3LTE1OC4xNjcgNTQuMjQ3LTU4LjE0OCAwLTExMi43NTYtMTguNzUzLTE1OC4xNjctNTQuMjQ5di0yMy42OWM0My43NjQgMzguNjkgOTkuMjggNTkuODA1IDE1OC4xNjcgNTkuODA1IDIzLjU5MiAwIDQ2LjkxMy0zLjQ0MSA2OS4zMTQtMTAuMjI4IDMuOTY0LTEuMjAxIDYuMjA0LTUuMzg4IDUuMDAzLTkuMzUzLTEuMjAxLTMuOTY0LTUuMzg5LTYuMjA3LTkuMzUzLTUuMDAzLTIwLjk4OSA2LjM1OS00Mi44NDcgOS41ODMtNjQuOTY0IDkuNTgzLTU5LjU3MiAwLTExNS40NjItMjMuMDctMTU3LjgwMi02NS4wMTggOS40MTktMy4yNjcgMTYuMjAyLTEyLjIyNCAxNi4yMDItMjIuNzR2LTguMjg0YzAtOC43MDMtNy4wOC0xNS43ODMtMTUuNzgzLTE1Ljc4M2gtMi41NjNjMS4xNDMtMi44IDEuNzc5LTUuODYgMS43NzktOS4wNjcgMC0xMy4yNy0xMC43OTYtMjQuMDY2LTI0LjA2Ni0yNC4wNjZzLTI0LjA3IDEwLjc5OC0yNC4wNyAyNC4wNjhjMCAzLjIwNy42MzYgNi4yNjYgMS43NzkgOS4wNjdoLTIuNTYyYy04LjcwMyAwLTE1Ljc4NCA3LjA4MS0xNS43ODQgMTUuNzgzdjguMjg0YzAgMTAuNjUyIDYuOTU5IDE5LjcwNCAxNi41NjcgMjIuODY0djEzNi41MDZjLTkuNjA4IDMuMTYtMTYuNTY3IDEyLjIxMi0xNi41NjcgMjIuODY0djguMjg0YzAgLjI2NC4wMjcuNTIyLjA0Ljc4M2gtMTcuNjczYy04LjU0NyAwLTE1LjUgNi45NTMtMTUuNSAxNS41djE3LjEzMmMwIDguNTQ3IDYuOTUzIDE1LjUgMTUuNSAxNS41aDU5LjgzM2M0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtNTkuODMzYy0uMjc1IDAtLjUtLjIyNC0uNS0uNXYtMTcuMTMzYzAtLjI3Ni4yMjUtLjUuNS0uNWg0ODFjLjI3NSAwIC41LjIyNC41LjV2MTcuMTMzYzAgLjI3Ni0uMjI1LjUtLjUuNWgtMzkxLjE2N2MtNC4xNDMgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgzOTEuMTY3YzguNTQ3IDAgMTUuNS02Ljk1MyAxNS41LTE1LjV2LTE3LjEzM2MwLTguNTQ3LTYuOTUzLTE1LjUtMTUuNS0xNS41em0tNjcuMzMzLTE2NC41NzdjLjE2MS0uODc4LjE1OC0xLjc3OC4wMDUtMi42NTZoMTguMTI4djE4LjEzM2gtMTguMTMzem0wIDQzLjkwNGMuMDEyLS4yMzkuMDEyLS40NzkgMC0uNzE5di0xMi43MDloMTguMTMzdjEwMC45NjdoLTE4LjEzM3ptMC0xMDMuNzYxYzAtNC45OTkgNC4wNjctOS4wNjYgOS4wNjYtOS4wNjZzOS4wNjYgNC4wNjcgOS4wNjYgOS4wNjYtNC4wNjcgOS4wNjctOS4wNjYgOS4wNjctOS4wNjYtNC4wNjctOS4wNjYtOS4wNjd6bS0xNi41NjcgMjQuODVjMC0uNDMyLjM1Mi0uNzgzLjc4My0uNzgzaDQ5LjdjLjQzMyAwIC43ODQuMzUyLjc4NC43ODN2OC4yODRjMCA0Ljk5OS00LjA2NyA5LjA2Ni05LjA2NyA5LjA2NmgtMzMuMTMzYy01IDAtOS4wNjctNC4wNjctOS4wNjctOS4wNjZ6bS0xNTYuNiAxNDQuMTc2YzU3LjY0OCAwIDExMi4wMDctMTcuNDIyIDE1OC4xNjctNTAuNTE0djczLjk5MWMtOS42MDggMy4xNi0xNi41NjcgMTIuMjEyLTE2LjU2NyAyMi44NjR2OC4yODRjMCAuMjY0LjAyNy41MjIuMDQuNzgzaC0yODMuMjc5Yy4wMTMtLjI2MS4wNC0uNTE5LjA0LS43ODN2LTguMjg0YzAtMTAuNjUyLTYuOTU5LTE5LjcwNC0xNi41NjctMjIuODY0di03My45OTJjNDYuMTYxIDMzLjA5MiAxMDAuNTIzIDUwLjUxNSAxNTguMTY2IDUwLjUxNXptLTE3My4xNjctMTEwLjc4OWMtLjAxMi4yNDctLjAxMi40OTUgMCAuNzQydjE2LjM1NWgtMTguMTMzdi0xOC4xMzNoMTguMTMzem0tMTguMTMzIDMyLjA5N2gxOC4xMzN2MTAwLjk2N2gtMTguMTMzem0wLTkwLjMzNGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY2LTkuMDY2czkuMDY2IDQuMDY3IDkuMDY2IDkuMDY2LTQuMDY3IDkuMDY3LTkuMDY2IDkuMDY3LTkuMDY2LTQuMDY3LTkuMDY2LTkuMDY3em0tMTYuNTY3IDI0Ljg1YzAtLjQzMi4zNTItLjc4My43ODQtLjc4M2g0OS43Yy40MzIgMCAuNzgzLjM1Mi43ODMuNzgzdjguMjg0YzAgNC45OTktNC4wNjcgOS4wNjYtOS4wNjcgOS4wNjZoLTMzLjEzM2MtNSAwLTkuMDY3LTQuMDY3LTkuMDY3LTkuMDY2em0uNzg0IDE5OS41ODRjLS40MzMgMC0uNzg0LS4zNTItLjc4NC0uNzgzdi04LjI4NGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY3LTkuMDY2aDMzLjEzM2M1IDAgOS4wNjcgNC4wNjcgOS4wNjcgOS4wNjZ2OC4yODRjMCAuNDMyLS4zNTIuNzgzLS43ODMuNzgzem0zNjQuNDY2IDBjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzgzdi04LjI4NGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY3LTkuMDY2aDMzLjEzM2M1IDAgOS4wNjcgNC4wNjcgOS4wNjcgOS4wNjZ2OC4yODRjMCAuNDMyLS4zNTIuNzgzLS43ODQuNzgzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",SNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzQuNjA4LDgwLjQzOWwtMjMyLTgwYy0xLjY5LTAuNTgzLTMuNTI2LTAuNTgzLTUuMjE2LDBsLTIzMiw4MEMyLjE2Niw4MS41NTEsMC4wMDEsODQuNTg3LDAsODcuOTk5djM4NA0KCQkJYzAsNC40MTgsMy41ODIsOCw4LDhoNDBjNC40MTgsMCw4LTMuNTgyLDgtOHYtMjQ4aDM2OHYyNDhjMCw0LjQxOCwzLjU4Miw4LDgsOGg0MGM0LjQxOCwwLDgtMy41ODIsOC04di0zODQNCgkJCUM0NzkuOTk5LDg0LjU4Nyw0NzcuODM0LDgxLjU1MSw0NzQuNjA4LDgwLjQzOXogTTQwLDIxNS45OTl2MjQ4SDE2di0zMDRoMjRWMjE1Ljk5OXogTTQyNCwyMDcuOTk5SDU2di0xNmgzNjhWMjA3Ljk5OXoNCgkJCSBNNDI0LDE3NS45OTlINTZ2LTE2aDM2OFYxNzUuOTk5eiBNNDY0LDQ2My45OTloLTI0di0zMDRoMjRWNDYzLjk5OXogTTQ2NCwxNDMuOTk5SDE2VjkzLjcwM2wyMjQtNzcuMjRsMjI0LDc3LjI0VjE0My45OTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zOTUuNTc2LDM0NC43OTlsLTI5LjYtMTQuOGwtMjYuNC01Mi44Yy00LjA2MS04LjEyNS0xMi4zODEtMTMuMjQyLTIxLjQ2NC0xMy4ySDE2MS44ODgNCgkJCWMtOS4wOTgtMC4wMy0xNy40MjEsNS4xMTQtMjEuNDY0LDEzLjI2NGwtMjYuNCw1Mi44bC0yOS42LDE0LjhjLTIuNzA1LDEuMzUyLTQuNDE2LDQuMTEyLTQuNDI0LDcuMTM2djExMmMwLDguODM3LDcuMTYzLDE2LDE2LDE2DQoJCQloMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMjRoMTkydjI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMTEyDQoJCQlDNDAwLjAxNywzNDguOTUyLDM5OC4zMDEsMzQ2LjE2LDM5NS41NzYsMzQ0Ljc5OXogTTE1NC43MzYsMjg0LjQyM2MxLjM0NS0yLjcxOCw0LjExOS00LjQzNCw3LjE1Mi00LjQyNGgxNTYuMjI0DQoJCQljMy4wMzMtMC4wMSw1LjgwNywxLjcwNiw3LjE1Miw0LjQyNGwyMS43OTIsNDMuNTc2SDEzMi45NDRMMTU0LjczNiwyODQuNDIzeiBNMTI4LDQ2My45OTlIOTZ2LTI0aDMyVjQ2My45OTl6IE0zODQsNDYzLjk5OWgtMzINCgkJCXYtMjRoMzJWNDYzLjk5OXogTTM4NCw0MjMuOTk5SDEzNkg5NnYtNjcuMDU2bDI1Ljg4OC0xMi45NDRoMjM2LjIyNEwzODQsMzU2Ljk0M1Y0MjMuOTk5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTUyLDM1OS45OTloLTI0Yy04LjgzNywwLTE2LDcuMTYzLTE2LDE2djE2YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMjRjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMTYNCgkJCUMxNjgsMzY3LjE2MiwxNjAuODM3LDM1OS45OTksMTUyLDM1OS45OTl6IE0xNTIsMzkxLjk5OWgtMjR2LTE2aDI0VjM5MS45OTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTIsMzU5Ljk5OWgtMjRjLTguODM3LDAtMTYsNy4xNjMtMTYsMTZ2MTZjMCw4LjgzNyw3LjE2MywxNiwxNiwxNmgyNGM4LjgzNywwLDE2LTcuMTYzLDE2LTE2di0xNg0KCQkJQzM2OCwzNjcuMTYyLDM2MC44MzcsMzU5Ljk5OSwzNTIsMzU5Ljk5OXogTTM1MiwzOTEuOTk5aC0yNHYtMTZoMjRWMzkxLjk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI4MCwzNTkuOTk5aC04MGMtOC44MzcsMC0xNiw3LjE2My0xNiwxNnYxNmMwLDguODM3LDcuMTYzLDE2LDE2LDE2aDgwYzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTE2DQoJCQlDMjk2LDM2Ny4xNjIsMjg4LjgzNywzNTkuOTk5LDI4MCwzNTkuOTk5eiBNMjgwLDM5MS45OTloLTgwdi0xNmg4MFYzOTEuOTk5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",xNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMS45NzggNTExLjk3OCIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTMwLjAwOSAyMjMuMjQ4YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTE2LjY5NmMwLTEyLjU1NyAxMC4yMTYtMjIuNzczIDIyLjc3Mi0yMi43NzNoMTUuMzkyYzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xNS4zOTJjLTIwLjgyOCAwLTM3Ljc3MiAxNi45NDUtMzcuNzcyIDM3Ljc3M3YxNi42OTZjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzMC4wMDkgMjgxLjE4N2M0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41di0yNC43NDZjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2MjQuNzQ2YzAgNC4xNDIgMy4zNTggNy41IDcuNSA3LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTcuODU2IDIwOC44NnYzNi4zMzljMCA0LjE0MiAzLjM1NyA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtMzYuMzM5YzAtMy4yOTQgMi43OTYtNi4wNzggNi4xMDUtNi4wNzhoMTMuMjM3YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xMy4yMzdjLTExLjYzNyAwLTIxLjEwNSA5LjQ1NS0yMS4xMDUgMjEuMDc4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjI4LjE4MSAyMTEuNDNjMi45NDIgMS45NjQgNi4zODIgMi45NjMgOS44ODkgMi45NjMgMi40NDIgMCA0LjkxOS0uNDg1IDcuMjgyLTEuNDY3bDI0Ljc2LTEwLjI1NSA2My41OTUgNC45MDYgNC42NjEgMTYuMTIxYzEuNjE5IDUuNjAxIDUuNTk2IDEwLjA3NCAxMS4xOTcgMTIuNTk1IDMuMTQ4IDEuNDE3IDYuNTkxIDIuMTI0IDEwLjA0MSAyLjEyNCAzLjY1MyAwIDcuMzE2LS43OTMgMTAuNjQ0LTIuMzc0bDExNy4yOTEtNTUuNzI5YzYuNDY5LTMuMDc0IDExLjQyNS05LjAxIDEzLjI1OC0xNS44OCAxLjU4Mi01LjkzMi42MjktMTEuODM1LTIuNjg0LTE2LjYxOWwtMjMuNjM5LTM0LjE2NGMxNy43NjMtMjAuNDYyIDIxLjk0MS00OS41OTUgMTAuMTI3LTc0LjQ2MS0xNi4yNzItMzQuMjAxLTU3LjMzMi00OC43OTctOTEuNTEtMzIuNTUtMjYuMTgxIDEyLjQzNS00MS41OTIgNDAuMDA4LTM4LjkxIDY4LjQ1OGwtMzMuNzY2IDE2LjA0MmMtLjAwMSAwLS4wMDEgMC0uMDAxIDAtMTAuNzI1IDUuMDk2LTE1LjM5MSAxNy4yODEtMTEuNjExIDMwLjMxNWw4Ljc0NSAzMC4yNDJoLTQ3LjE1N2wtMjUuMDU1LTEwLjM3N2MtNS43NjMtMi4zNzEtMTIuMTc5LTEuNzkzLTE3LjE2NyAxLjU0Ni00LjcxMyAzLjE1Ny03LjQxNiA4LjIyMS03LjQxNiAxMy44OTN2NDAuNzYxYy0uMDAyIDUuNjkxIDIuNzA2IDEwLjc2IDcuNDI2IDEzLjkxem0yNTcuNi01NS4wNzdjLjc5IDEuMTQuOTY2IDIuNTU4LjUyNCA0LjIxNC0uNjkyIDIuNTkzLTIuNzM0IDUuMDI2LTUuMjAyIDYuMTk5bC0xMTcuMjkxIDU1LjcyOGMtMi40NyAxLjE3My01LjY0NiAxLjIyMS04LjA5MS4xMi0xLjU2NS0uNzA0LTIuNTU2LTEuNzQxLTIuOTQzLTMuMDgzbC0yMi4zNzYtNzcuMzg1IDEwOS41NDItNTIuMDR6bS04Ni4yNTItMTM2LjE2MmMuMDAxIDAgLjAwMi0uMDAxLjAwMy0uMDAxIDI2LjcxNi0xMi43MDMgNTguODA2LTEuMjg4IDcxLjUyNCAyNS40NDIgOC42NjQgMTguMjM3IDYuMzMgMzkuNDE3LTUuNDYzIDU1LjE3M2wtLjAyNC0uMDI2LTI4LjAwMi00MC40N2MtNy43MjktMTEuMTYtMjAuMTM1LTE1LjI0MS0zMC44NjgtMTAuMTU3bC0zNy44MDMgMTcuOTU4LS4wMTIuMDAzYy4yMTctMjAuMTkgMTEuODk5LTM5LjAxOSAzMC42NDUtNDcuOTIyem0tNzIuNjc2IDg0LjQ5OCA4Ni4yNzMtNDAuOTg0YzQuNzUtMi4yNTEgOS40OTIgMS4zNjYgMTIuMTA3IDUuMTQzbDYuMDYyIDguNzYtMTA1LjExNSA0OS45MzctMi45NjctMTAuMjYyYy0xLjI3OC00LjQwNC0xLjA5LTEwLjM0NiAzLjY0LTEyLjU5NHptLTUwLjQ1MyA2Mi4wMDloNDUuNDc4bDcuMzY1IDI1LjQ5LTUyLjg0My00LjA3N3ptLTQwLjY0Ny05LjkzOGMwLS4zOTUuMDc5LS45NzIuNzY1LTEuNDMxLjIwNC0uMTM3Ljc3MS0uNDU1IDEuNjEzLS40NTUuNDI3IDAgLjkyNC4wODIgMS40OC4zMTFsMjEuNzg4IDkuMDI0djI1LjgzNGwtMjEuNzk3IDkuMDI3Yy0xLjY2NS42OTQtMi43OTIuMDg1LTMuMDk2LS4xMTgtLjY2OC0uNDQ2LS43NTQtLjk5OS0uNzU0LTEuNDMxdi00MC43NjF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTcuOTYgNDY0LjQ3OWMtMi45MjkgMi45MjktMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjEgMy4zNzEgMi4xOSA1LjI4MyAyLjE5IDEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOC03LjY3OC0yLjkyOC0xMC42MDcuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTkwLjkyIDQ2OC4yNzdjLTIuOTI5IDIuOTI5LTIuOTI5IDcuNjc4IDAgMTAuNjA2bC4wMjguMDI4YzEuNDYyIDEuNDYxIDMuMzcxIDIuMTkgNS4yODMgMi4xOSAxLjkyIDAgMy44NDItLjczNiA1LjMxLTIuMjA0IDIuOTI5LTIuOTI5IDIuOTE1LTcuNjkyLS4wMTQtMTAuNjIxLTIuOTMtMi45MjctNy42NzgtMi45MjctMTAuNjA3LjAwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMwNy45NTcgNDY0LjQ3OWMtMi45MjkgMi45MjktMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjEgMy4zNzEgMi4xOSA1LjI4MyAyLjE5IDEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOC03LjY3OC0yLjkyOC0xMC42MDcuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjIyMiA0ODEuMTAyYzEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOS03LjY3OC0yLjkyOS0xMC42MDcgMHMtMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjIgMy4zNzEgMi4xOTEgNS4yODMgMi4xOTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NzAuNzg0IDQwOS4zODVjMjIuNzEzLTIuMjc4IDQxLjE5MS0yMi43OTIgNDEuMTkxLTQ1LjcyOXYtMjguNzQzYzAtMy43MDktMS41NDktNy4yMzQtNC4yNDgtOS42NzEtMi42OTItMi40MzEtNi4zNTItMy42MDktMTAuMDEtMy4yMzNsLTI4LjgxIDIuODkyYy05LjkyMyAxLjAxLTE5LjAzNyA1LjUwMi0yNi4xNTEgMTIuMTUybC4wNjMtNS4xNTRjMC0yMi45MDMtMTguMzM3LTQzLjI2Ni00MS4wNTQtNDUuNTc4bC0yOC43ODMtMi44OWMtMy42ODctLjM3OS03LjMzNC44MDItMTAuMDI1IDMuMjMyLTIuNjk5IDIuNDM4LTQuMjQ4IDUuOTYyLTQuMjQ4IDkuNjcxdjI4Ljc0M2MwIDIyLjkwMyAxOC40NzMgNDMuNDE3IDQxLjE4NSA0NS43MjlsMjcuODYzIDIuODE0djUzLjk5NmgtNTQuNTE5Yy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDExOS4zMDRjMi40NDQgMCA0LjQzNCAxLjk3NiA0LjQzNCA0LjQwNXY0NS41MjNjMCAyLjQwMy0yLjAzIDQuNDM0LTQuNDM0IDQuNDM0aC00NzMuMTM0Yy0yLjM4OCAwLTQuNDA1LTIuMDMtNC40MDUtNC40MzR2LTQ1LjUyM2MwLTIuMzg4IDIuMDE4LTQuNDA1IDQuNDA1LTQuNDA1aDMxOS4xOTJjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTc1LjEyNnYtMTUuMzk3bDI4LjA1Ny0yLjgzM2MyMi43MTMtMi4yNzggNDEuMTktMjIuNzkyIDQxLjE5LTQ1LjcyOXYtMjguNzQzYzAtMy43MDUtMS41NTItNy4yMjktNC4yNTctOS42NjktMi43LTIuNDM1LTYuMzU5LTMuNjEyLTEwLjAwMS0zLjIzNWwtMjguODEgMi44OTJjLTkuOTM0IDEuMDExLTE5LjA1OCA1LjUwNy0yNi4xOCAxMi4xNjMgMCAwIC4xOTktNC40MjkuMTk5LTUuMDEzIDAtMjIuOTA3LTE4LjQ3NC00My40Mi00MS4xOS00NS43MjlsLTI4Ljc3Ni0yLjg5Yy0zLjY2Ni0uMzc1LTcuMzA4Ljc5Ni05Ljk5NyAzLjIyMi0yLjcwNCAyLjQzOS00LjI1NSA1Ljk2Ny00LjI1NSA5LjY4MXYyOC43NDNjMCAyMi45MDMgMTguNDc0IDQzLjQxNyA0MS4xODYgNDUuNzI5bDI3LjgzNCAyLjgxM3Y1My45OTZoLTE2NC4yNTN2LTE1LjM5OGwyOC4wMjYtMi44MzJjMjIuNzEzLTIuMjc0IDQxLjE5MS0yMi43ODkgNDEuMTkxLTQ1LjcyOXYtMjguNzQzYzAtMy43MTMtMS41NTEtNy4yNDItNC4yNTUtOS42ODEtMi42ODktMi40MjYtNi4zMzMtMy42MDQtOS45NzUtMy4yMjRsLTI4LjgxIDIuODkyYy05LjkzNCAxLjAxMS0xOS4wNTggNS41MDctMjYuMTc5IDEyLjE2MiAwIDAgLjE5OC00LjQzLjE5OC01LjAxMiAwLTIyLjkwMy0xOC40NzQtNDMuNDE3LTQxLjE5LTQ1LjcyOWwtMjguNzc2LTIuODljLTMuNjYtLjM3NC03LjMwNi43OTUtOS45OTcgMy4yMjItMi43MDQgMi40MzktNC4yNTUgNS45NjgtNC4yNTUgOS42ODF2MjguNzQzYzAgMjIuOTAzIDE4LjQ3NCA0My40MTcgNDEuMTg2IDQ1LjcyOWwyNy44MzUgMi44MTN2MzEuNzk1IDIyLjIwMWgtNDkuODEyYy0xMC43IDAtMTkuNDA1IDguNzA1LTE5LjQwNSAxOS40MDV2NDUuNTIzYzAgMTAuNzE2IDguNzA1IDE5LjQzNCAxOS40MDUgMTkuNDM0aDQ3My4xMzRjMTAuNzE2IDAgMTkuNDM0LTguNzE4IDE5LjQzNC0xOS40MzR2LTQ1LjUyM2MwLTEwLjctOC43MTgtMTkuNDA1LTE5LjQzNC0xOS40MDVoLTQ5Ljc4NXYtMTUuMzk4em0tMjguMDI4LTM4Ljc1NmMwLTE1LjE3MSAxMi42NzItMjkuMjc5IDI3LjY2LTMwLjgwNWwyNi41NTktMi42NjZ2MjYuNDk4YzAgMTUuMTkyLTEyLjY4IDI5LjI5OS0yNy42OTMgMzAuODA1bC0xNS40MTUgMS41NTggMTkuMDY5LTIxLjA5N2MyLjc3Ny0zLjA3MyAyLjUzNy03LjgxNi0uNTM1LTEwLjU5My0zLjA3Mi0yLjc3NS03LjgxNC0yLjUzOS0xMC41OTQuNTM1bC0xOS4wNTEgMjEuMDc3em0tMTUtMjMuNDU3LTE4Ljg4LTIwLjg4OGMtMi43NzktMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTItLjUzNSAxMC41OTNsMTkuMDY3IDIxLjA5Ni0xNS40MDgtMS41NTZjLTE1LjAxNC0xLjUyOC0yNy42OTgtMTUuNjM1LTI3LjY5OC0zMC44MDV2LTI2LjQ5N2wyNi41NDggMi42NjZjMTUuMDE1IDEuNTI4IDI3LjUgMTUuNjM1IDI3LjUgMzAuODA1em0tMTY0LjI4MiAyMy40NTdjMC0xNS4xNyAxMi42ODUtMjkuMjc3IDI3LjY4OC0zMC44MDVsMjYuNTU5LTIuNjY2djI2LjQ5OGMwIDE1LjE5Mi0xMi42NzkgMjkuMjk5LTI3LjY5MiAzMC44MDVsLTE1LjQxNCAxLjU1NyAxOS4wNjgtMjEuMDk2YzIuNzc3LTMuMDczIDIuNTM3LTcuODE2LS41MzUtMTAuNTkzLTMuMDcyLTIuNzc1LTcuODE0LTIuNTM5LTEwLjU5NC41MzVsLTE5LjA3OSAyMS4xMDh2LTE1LjM0M3ptLTQ0Ljk4LTM0LjI4NiAxOS4wNjkgMjEuMDk3LTE1LjQwOS0xLjU1N2MtMTUuMDE1LTEuNTI4LTI3LjY5OS0xNS42MzUtMjcuNjk5LTMwLjgwNXYtMjYuNDk1bDI2LjUyMSAyLjY2M2MxNS4wMTUgMS41MjYgMjcuNDk5IDE1LjYzMyAyNy40OTkgMzAuODA1djE1LjA5MWwtMTguODUyLTIwLjg1N2MtMi43NzgtMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTItLjUzNSAxMC41OTN6bS0xMzQuMjczIDM0LjI4NmMwLTE1LjE3IDEyLjY4NS0yOS4yNzcgMjcuNjg4LTMwLjgwNWwyNi41My0yLjY2M3YyNi40OTVjMCAxNS4xOTUtMTIuNjc5IDI5LjMwMS0yNy42OTIgMzAuODA1bC0xNS40MDUgMS41NTcgMTkuMDgzLTIxLjA5NGMyLjc3OS0zLjA3MiAyLjU0Mi03LjgxNC0uNTMtMTAuNTkzLTMuMDY4LTIuNzc4LTcuODEzLTIuNTQyLTEwLjU5My41M2wtMTkuMDgxIDIxLjA5MXptLTQ0Ljk4MS0zNC4yODYgMTkuMDY5IDIxLjA5Ny0xNS40MDktMS41NThjLTE1LjAxNS0xLjUyOC0yNy42OTktMTUuNjM1LTI3LjY5OS0zMC44MDV2LTI2LjQ5NWwyNi41MiAyLjY2M2MxNS4wMTUgMS41MjggMjcuNTAxIDE1LjYzNSAyNy41MDEgMzAuODA1djE1LjA5MmwtMTguODUzLTIwLjg1OGMtMi43NzktMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTIxLS41MzUgMTAuNTk0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",kNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTI2LjYyMiAxNTEuNzQxaDEwLjh2MzUuNjgxYzAgMTEuMTI1IDkuMDUxIDIwLjE3NSAyMC4xNzUgMjAuMTc1aDE0LjgxNGM0Ljc5OSAwIDkuMjA4LTEuNjkxIDEyLjY3NS00LjUgMy40NjcgMi44MDkgNy44NzUgNC41IDEyLjY3NSA0LjVoMTQuODE0YzExLjEyNCAwIDIwLjE3NS05LjA1IDIwLjE3NS0yMC4xNzV2LTM5Ljk0aDIwLjEzOXYxODUuMTE1aC0yMy40NTdjLTEwLjkzOCAwLTE5LjgzNyA4Ljg5OC0xOS44MzcgMTkuODM2djM3LjMyNGMwIDkuOTY4IDcuMzk4IDE4LjIxOSAxNi45ODggMTkuNjA4djg3LjU3NmMwIDguMzA0IDYuNzU1IDE1LjA1OSAxNS4wNTkgMTUuMDU5aDMwLjMzNWM4LjMwNCAwIDE1LjA1OS02Ljc1NSAxNS4wNTktMTUuMDU5di01My44NDRoNTEuNDY0YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41Yy05Ljc2NSAwLTg1Ljc4NSAwLTk2LjkxNyAwdi0xOC41MDNoMjI4LjgzNHYxOC41MDNjLTExLjEzNyAwLTg3LjIxNyAwLTk2LjkxNyAwLTQuMTQzIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTcgNy41IDcuNSA3LjVoNTEuNDY1djUzLjg0NGMwIDguMzA0IDYuNzU1IDE1LjA1OSAxNS4wNTkgMTUuMDU5aDMwLjMzNGM4LjMwNCAwIDE1LjA2LTYuNzU1IDE1LjA2LTE1LjA1OSAwLTEwLjE1NCAwLTc3LjAzNiAwLTg3LjU3NiA5LjU5LTEuMzg5IDE2Ljk4OC05LjY0IDE2Ljk4OC0xOS42MDh2LTM3LjMyNGMwLTEwLjkzOC04Ljg5OC0xOS44MzYtMTkuODM3LTE5LjgzNmgtMjMuNDU3di03NS4wNThjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NzUuMDU4aC0yNS4xNjRjMC0yMS43MTMgMC0xNjIuOTEyIDAtMTg1LjExNWgyNS4xNjR2NzUuMDU4YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTc1LjA1OGgyMC4xMzl2MzkuOTRjMCAxMS4xMjUgOS4wNTEgMjAuMTc1IDIwLjE3NSAyMC4xNzVoMTQuODE0YzQuNzk5IDAgOS4yMDgtMS42OTEgMTIuNjc1LTQuNSAzLjQ2NyAyLjgwOSA3Ljg3NSA0LjUgMTIuNjc0IDQuNWgxNC44MTVjMTEuMTI0IDAgMjAuMTc1LTkuMDUgMjAuMTc1LTIwLjE3NXYtMzUuNjgxaDEwLjhjMTEuMTI0IDAgMjAuMTc1LTkuMDUgMjAuMTc1LTIwLjE3NXYtMTQuODE0YzAtMTEuMTI1LTkuMDUxLTIwLjE3NS0yMC4xNzUtMjAuMTc1aC0xMC44di0zNS42ODFjMC0xMS4xMjQtOS4wNTEtMjAuMTc0LTIwLjE3NS0yMC4xNzRoLTE0LjgxNWMtNC43OTkgMC05LjIwNyAxLjY5MS0xMi42NzQgNC41LTMuNDY3LTIuODA5LTcuODc1LTQuNS0xMi42NzUtNC41aC0xNC44MTRjLTExLjEyNCAwLTIwLjE3NSA5LjA1LTIwLjE3NSAyMC4xNzR2MzkuOTQxaC0yMC4xMzl2LTgwLjY2M2MtLjAwMS0xMS4xMjQtOS4wNTEtMjAuMTc0LTIwLjE3NS0yMC4xNzRoLTE0LjgxNGMtMTEuMTI0IDAtMjAuMTc1IDkuMDUtMjAuMTc1IDIwLjE3NHY1MC41MzRoLTk1Ljg5NnYtNTAuNTM0YzAtMTEuMTI0LTkuMDUtMjAuMTc0LTIwLjE3NC0yMC4xNzRoLTE0LjgxNWMtMTEuMTI0IDAtMjAuMTc0IDkuMDUtMjAuMTc0IDIwLjE3NHY4MC42NjNoLTIwLjEzOXYtMzkuOTQxYzAtMTEuMTI0LTkuMDUxLTIwLjE3NC0yMC4xNzUtMjAuMTc0aC0xNC44MTRjLTQuNzk5IDAtOS4yMDggMS42OTEtMTIuNjc1IDQuNS0zLjQ2Ny0yLjgwOS03Ljg3NS00LjUtMTIuNjc1LTQuNWgtMTQuODE0Yy0xMS4xMjQgMC0yMC4xNzUgOS4wNS0yMC4xNzUgMjAuMTc0djM1LjY4MWgtMTAuOGMtMTEuMTI0IDAtMjAuMTc1IDkuMDUtMjAuMTc1IDIwLjE3NXYxNC44MTRjMCAxMS4xMjUgOS4wNTEgMjAuMTc1IDIwLjE3NSAyMC4xNzV6bTE0MS4yNjctNC4yNmgyNS4xNjN2MTg1LjExNWgtMjUuMTYzem00MC4xNjMgNjguNzEyaDk1Ljg5NnY3Ni45MDFoLTk1Ljg5NnptOTUuODk1LTE1aC05NS44OTZ2LTIzLjU4M2g5NS44OTZ6bS0xMzEuOTE5IDI0MS45MDQtLjA1MSA1My45MDMtMzAuMzkzLS4wMzljMC0uMDAxLS4wMDEtLjAwOC0uMDAxLS4wMnYtNTMuODQ0em0xOTguMzI5IDUzLjkwMy0zMC4zOTMtLjA1OXYtNTMuODQ0aDMwLjQ0NXptMTIuMjExLTE0OS40MDNjMi42NjcgMCA0LjgzNyAyLjE2OSA0LjgzNyA0LjgzNnYzNy4zMjRjMCAyLjY2Ny0yLjE3IDQuODM2LTQuODM3IDQuODM2LTEzLjIwMiAwLTI0MS4yNTYgMC0yNTMuMTM3IDAtMi42NjcgMC00LjgzNy0yLjE2OS00LjgzNy00LjgzNnYtMzcuMzI0YzAtMi42NjcgMi4xNy00LjgzNiA0LjgzNy00LjgzNnptLTE3NC41MTYtMTV2LTI0LjUwM2g5NS44OTZ2MjQuNTAzem05NS44OTUtMTY5Ljk4N2gtOTUuODk2di0xNS4xMjhoOTUuODk2em0tMTE1Ljk3Ny0zMC4xMjl2LTE2LjY0NWgxMzYuMDZ2MTYuNjQ1Yy00LjY1MyAwLTEzMC40MTEgMC0xMzYuMDYgMHptMjk3LjQwOC0yMC45MDRjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc1djE0LjgxNGMwIDIuODA1LTIuMzcgNS4xNzUtNS4xNzUgNS4xNzVoLTEwLjh2LTI1LjE2NHptLTQ1Ljc5LTU1Ljg1NWgxNC44MTVjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc0djEyNi41MjZjMCAyLjgwNS0yLjM3IDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTVjLTIuODA1IDAtNS4xNzQtMi4zNy01LjE3NC01LjE3NXYtMTI2LjUyNmMwLTIuODA1IDIuMzY5LTUuMTc0IDUuMTc0LTUuMTc0em0tNDUuMzM4IDUuMTc0YzAtMi44MDUgMi4zNy01LjE3NCA1LjE3NS01LjE3NGgxNC44MTRjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc0djEyNi41MjZjMCAyLjgwNS0yLjM3IDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODU0IDAtNS4xNzUtMi4zMjEtNS4xNzUtNS4xNzUgMC0yLjkwNCAwLTEyMi42MDIgMC0xMjYuNTI2em0tMTUgNzEuNTg1Yy0xMy40NjMgMC0yNS4xODYgMC00MC4yMjEgMHYtMTYuNjQ1aDQwLjIyMXptLTYwLjMwMy0xMTIuMzA3YzAtMi44MDUgMi4zNy01LjE3NCA1LjE3NS01LjE3NGgxNC44MTRjMi44NTQgMCA1LjE3NSAyLjMyMSA1LjE3NSA1LjE3NHY4MC42NjNjLTkuMTA2IDAtMTYuMDU4IDAtMjUuMTY0IDAgMC05LjM3MyAwLTcwLjg4NSAwLTgwLjY2M3ptLTE1IDY1LjUzNHYxNS4xMjhoLTk1Ljg5NnYtMTUuMTI4em0tMTM2LjA1OC02NS41MzRjMC0yLjgwNSAyLjM2OS01LjE3NCA1LjE3NC01LjE3NGgxNC44MTVjMi44MDUgMCA1LjE3NCAyLjM3IDUuMTc0IDUuMTc0djgwLjY2M2MtOS4xMDQgMC0xNi4wMzkgMC0yNS4xNjMgMHptNS4wODEgOTUuNjYzdjE2LjY0NWMtMTUuMjczIDAtMjYuNDYgMC00MC4yMiAwdi0xNi42NDV6bS03NS4yMDktNjAuMTE1aDE0LjgxNGMyLjgwNSAwIDUuMTc1IDIuMzcgNS4xNzUgNS4xNzR2MTI2LjUyNmMwIDIuODU0LTIuMzIxIDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODA1IDAtNS4xNzUtMi4zNy01LjE3NS01LjE3NXYtMTI2LjUyNmMwLTIuODA1IDIuMzctNS4xNzQgNS4xNzUtNS4xNzR6bS00NS4zMzkgNS4xNzRjMC0yLjgwNSAyLjM3LTUuMTc0IDUuMTc1LTUuMTc0aDE0LjgxNGMyLjgwNSAwIDUuMTc1IDIuMzcgNS4xNzUgNS4xNzR2MTI2LjUyNmMwIDIuODU0LTIuMzIxIDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODU0IDAtNS4xNzUtMi4zMjEtNS4xNzUtNS4xNzUgMC01LjY3OSAwLTEyMC44MjcgMC0xMjYuNTI2em0tMzAuOTc1IDU1Ljg1NmMwLTIuODU0IDIuMzIxLTUuMTc1IDUuMTc1LTUuMTc1aDEwLjh2MjUuMTY0aC0xMC44Yy0yLjg1NCAwLTUuMTc1LTIuMzIxLTUuMTc1LTUuMTc1eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",YNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIsMjgwaC0xNlYxNjYuNGMwLTEyLTkuNi0yMi40LTIyLjQtMjIuNGgtNGMtMTIsMC0yMi40LDkuNi0yMi40LDIyLjRWMjgwaC0yNHYtMTZjMC0xMy42LTEwLjQtMjQtMjQtMjRIMTIwDQoJCQljLTEzLjYsMC0yNCwxMC40LTI0LDI0djE2SDcyVjE2Ni40YzAtMTItOS42LTIyLjQtMjIuNC0yMi40aC0zLjJjLTEyLjgsMC0yMi40LDkuNi0yMi40LDIyLjRWMjgwSDhjLTQuOCwwLTgsMy4yLTgsOHMzLjIsOCw4LDhoOA0KCQkJdjE0NGMwLDQuOCwzLjIsOCw4LDhoOHY4YzAsNC44LDMuMiw4LDgsOHM4LTMuMiw4LTh2LThoMzg0djhjMCw0LjgsMy4yLDgsOCw4czgtMy4yLDgtOHYtOGg4YzQuOCwwLDgtMy4yLDgtOFYyOTZoOA0KCQkJYzQuOCwwLDgtMy4yLDgtOFM0NzYuOCwyODAsNDcyLDI4MHogTTQzMC40LDE2MGg0YzMuMiwwLDYuNCwyLjQsNi40LDYuNFYyODBoLTE2VjE2Ni40SDQyNEM0MjQsMTYzLjIsNDI2LjQsMTYwLDQzMC40LDE2MHoNCgkJCSBNMTEyLDI2NGMwLTQuOCwzLjItOCw4LThoMjQwYzQuOCwwLDgsMy4yLDgsOHYxNkgxMTJWMjY0eiBNNDAsMTY2LjRjMC00LDIuNC02LjQsNi40LTYuNGg0YzMuMiwwLDUuNiwyLjQsNS42LDYuNFYyODBINDBWMTY2LjR6DQoJCQkgTTIzMiw0MzJIMzJ2LTY0aDIwMFY0MzJ6IE00NDgsNDMySDI0OHYtNjRoMjAwVjQzMnogTTQ0OCwzNTJIMzJ2LTU2aDQxNlYzNTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMDgsMzg0Yy00LjgsMC04LDMuMi04LDh2MTZjMCw0LjgsMy4yLDgsOCw4czgtMy4yLDgtOHYtMTZDMjE2LDM4Ny4yLDIxMi44LDM4NCwyMDgsMzg0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjcyLDM4NGMtNC44LDAtOCwzLjItOCw4djE2YzAsNC44LDMuMiw4LDgsOHM4LTMuMiw4LTh2LTE2QzI4MCwzODcuMiwyNzYuOCwzODQsMjcyLDM4NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM4NCwxNkg5NmMtNC44LDAtOCwzLjItOCw4djE2MGMwLDQuOCwzLjIsOCw4LDhoMjg4YzQuOCwwLDgtMy4yLDgtOFYyNEMzOTIsMTkuMiwzODguOCwxNiwzODQsMTZ6IE0zNzYsMTc2SDEwNFYzMmgyNzINCgkJCVYxNzZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTIsMTQ0aC04Yy00LjgsMC04LDMuMi04LDhzMy4yLDgsOCw4aDhjNC44LDAsOC0zLjIsOC04UzM1Ni44LDE0NCwzNTIsMTQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTU3LjYsNTAuNGMtMy4yLTMuMi04LTMuMi0xMS4yLDBsLTI0LDI0Yy0zLjIsMy4yLTMuMiw4LDAsMTEuMmMzLjIsMy4yLDgsMy4yLDExLjIsMGwyNC0yNA0KCQkJQzE2MC44LDU4LjQsMTYwLjgsNTMuNiwxNTcuNiw1MC40eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTk3LjYsNTAuNGMtMy4yLTMuMi04LTMuMi0xMS4yLDBsLTU2LDU2Yy0zLjIsMy4yLTMuMiw4LDAsMTEuMmMzLjIsMy4yLDgsMy4yLDExLjIsMGw1Ni01Ng0KCQkJQzIwMC44LDU4LjQsMjAwLjgsNTMuNiwxOTcuNiw1MC40eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",QNe="PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgd2lkdGg9IjQ4MHB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00NzIgOTZoLTE0NGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHYxODRoLTE3NnYtMjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMjR2MTZoMTZ2MTZoLTMydi0zMmgtMTZ2MzJoLTMydi0xNmgxNnYtMTZoLTI0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djI0aC0yNGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHYxNzZjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg0NjRjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMzY4YzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS0xMzYgMTZoMTI4djk2aC0xMjh6bS0xNiAyMjRoLTE0NHYtMzJoMTQ0em0tMzA0LTMyaDE0NHYzMmgtMTQ0em0wIDQ4aDE0NHYxMTJoLTE0NHptMTYwIDBoNjR2MTEyaC02NHptODAgMGg2NHYxMTJoLTY0em04MCAxMTJ2LTI0MGgxMjh2MjQwem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1MiAxNDRoMTZ2MzJoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1MiAyNTZoMTZ2MzJoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDMyMGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04MCAzMjBjMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHMtOC0zLjU4MjAzMS04LTggMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTEyIDMyMGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDQgMzIwYzAgNC40MTc5NjktMy41ODIwMzEgOC04IDhzLTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04IDggMy41ODIwMzEgOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTggMTUyaDE2MGM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0yNGMwLTIuMTIxMDk0LS44NDM3NS00LjE1NjI1LTIuMzQzNzUtNS42NTYyNWwtMzItMzJjLTEuNS0xLjUtMy41MzUxNTYtMi4zNDM3NS01LjY1NjI1LTIuMzQzNzVoLTh2LTcyYzAtNC40MTc5NjktMy41ODIwMzEtOC04LThoLTY0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djcyaC04Yy0yLjEyMTA5NCAwLTQuMTU2MjUuODQzNzUtNS42NTYyNSAyLjM0Mzc1bC0zMiAzMmMtMS41IDEuNS0yLjM0Mzc1IDMuNTM1MTU2LTIuMzQzNzUgNS42NTYyNXYyNGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4em01Ni0xMzZoNDh2NjRoLTQ4em0tNDggMTA3LjMxMjUgMjcuMzEyNS0yNy4zMTI1aDg5LjM3NWwyNy4zMTI1IDI3LjMxMjV2MTIuNjg3NWgtMTQ0em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzNiAzNjhoLTk2Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djY0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoOTZjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOHptLTggNjRoLTgwdi00OGg4MHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzIgMzEyaDMydjE2aC0zMnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDggMzkyaDE2djMyaC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNzIgMzkyaDE2djMyaC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTIgMjAwaDQ4YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LThjLS4wNTQ2ODgtMTQuNTQ2ODc1LTkuOTE0MDYyLTI3LjIyNjU2Mi0yNC0zMC44NjMyODF2LTE1My4xMzY3MTloLTE2djE1My4xMzY3MTljLTE0LjA4NTkzOCAzLjYzNjcxOS0yMy45NDUzMTIgMTYuMzE2NDA2LTI0IDMwLjg2MzI4MXY4YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDh6bTI0LTMyYzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZoLTMyYzAtOC44MzU5MzggNy4xNjQwNjItMTYgMTYtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQ4IDEzNmg0OGM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di04Yy0uMDU0Njg4LTE0LjU0Njg3NS05LjkxNDA2Mi0yNy4yMjY1NjItMjQtMzAuODYzMjgxdi04OS4xMzY3MTloLTE2djg5LjEzNjcxOWMtMTQuMDg1OTM4IDMuNjM2NzE5LTIzLjk0NTMxMiAxNi4zMTY0MDYtMjQgMzAuODYzMjgxdjhjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOHptMjQtMzJjOC44MzU5MzggMCAxNiA3LjE2NDA2MiAxNiAxNmgtMzJjMC04LjgzNTkzOCA3LjE2NDA2Mi0xNiAxNi0xNnptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",vNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUxMC40MTcgMjMzLjIyNS01OC42NDQtMTE3LjI3OWMtMTUuOTM5LTMxLjg3Ny00Ny45NzgtNTEuNjgtODMuNjItNTEuNjgtOC41ODYgMC0xNi45ODQgMS4xODgtMjUuMDMyIDMuNDM3LjEwNS0xLjQ4OS4xNzgtMi45ODguMTc4LTQuNTAzIDAtMzQuODQ5LTI4LjM1MS02My4yLTYzLjItNjMuMnMtNjMuMiAyOC4zNTItNjMuMiA2My4yYzAgMzAuOTkzIDIyLjQzMiA1Ni44MjggNTEuOTA5IDYyLjE2OWwtNjEuMzY2IDYxLjQ3Yy02Ljg3NSA2Ljg4Ni0yMS44NzEgMjcuODItMTAuMzMzIDU0LjQ2LTEuNzA1LS4xOTEtMy40MjEtLjI5OS01LjE0NC0uMjk5LTIzLjA4NyAwLTQyLjMzNiAxNi42OS00Ni4zNTEgMzguNjM1LTcuNzQtNC4xNDQtMTYuNTczLTYuNTAxLTI1Ljk0OS02LjUwMS0zMC40MTkgMC01NS4xNjcgMjQuNzQ4LTU1LjE2NyA1NS4xNjcgMCA5LjA2MyAyLjIxMSAxNy42MTUgNi4xIDI1LjE2N2gtNDAuNTk4di0zMzguNDY4YzAtOC4yODQtNi43MTYtMTUtMTUtMTVzLTE1IDYuNzE2LTE1IDE1djQ4MmMwIDguMjg0IDYuNzE2IDE1IDE1IDE1czE1LTYuNzE2IDE1LTE1di00OS4yNjdoMzA2LjU2M2M4LjI4NCAwIDE1LTYuNzE2IDE1LTE1di02NC4yNjdjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtMzYuNDEyYzMuMjc0LTguMzk1IDMuMjE0LTE1LjI2MyAzLjIxNC0xOC4yIDI4LjQ2OSAwIDQ4LjItMjIuMDk4IDQ4LjItNDcuMTMzIDAtMjUuOTg5LTIxLjE0NC00Ny4xMzMtNDcuMTMzLTQ3LjEzM2gtMTIuMzA0bDU1LjkwNC01Ni4wODYgNTMuNzM2IDEwNi43NzctLjEwMyAyMDUuMzAxYy0uMDAyIDMuOTc5IDEuNTc4IDcuNzk2IDQuMzkxIDEwLjYxMSAyLjgxMyAyLjgxNCA2LjYzIDQuMzk2IDEwLjYwOSA0LjM5Nmg4MC4zMzVjOC4yODQgMCAxNS02LjcxNiAxNS0xNXYtMjU3LjA2NmMwLTIuMzI5LS41NDItNC42MjUtMS41ODMtNi43MDh6bS0yNjMuNTE3LTE3MC4wMjVjMC0xOC4zMDcgMTQuODk0LTMzLjIgMzMuMi0zMy4yczMzLjIgMTQuODk0IDMzLjIgMzMuMi0xNC44OTQgMzMuMi0zMy4yIDMzLjJjLTE4LjMwNyAwLTMzLjItMTQuODkzLTMzLjItMzMuMnptLTEyNy4yMzMgMjM5LjkzM2MxMy44NzcgMCAyNS4xNjcgMTEuMjkgMjUuMTY3IDI1LjE2N3MtMTEuMjkgMjUuMTY3LTI1LjE2NyAyNS4xNjctMjUuMTY3LTExLjI5LTI1LjE2Ny0yNS4xNjcgMTEuMjktMjUuMTY3IDI1LjE2Ny0yNS4xNjd6bTIwMS44OTYgODAuMzM0djM0LjI2N2gtMjkxLjU2M3YtMzQuMjY3em0tMTcuMTMtMTEyLjQ2N2M5LjQ0NyAwIDE3LjEzMyA3LjY4NiAxNy4xMzMgMTcuMTMzIDAgOS41ODMtNy44MTQgMTcuMTMzLTE3LjEzMyAxNy4xMzNoLTE2LjA2N2MtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXYxNi4wNjdjMCA5LjU4My03LjgxNCAxNy4xMzMtMTcuMTMzIDE3LjEzM2gtNjQuMjY3Yy05LjQ0NyAwLTE3LjEzMy03LjY4Ni0xNy4xMzMtMTcuMTMzdi00OC4yYzAtOS40NDcgNy42ODYtMTcuMTMzIDE3LjEzMy0xNy4xMzMgOS4yOTcgMCAxNy4xMzMgNy41MjYgMTcuMTMzIDE3LjEzM3YxNi4wNjdjMCA4LjI4NCA2LjcxNiAxNSAxNSAxNXMxNS02LjcxNiAxNS0xNXYtMTYuMDY3YzAtOS40MjkgNy42MTYtMTcuMTMzIDE3LjEzMy0xNy4xMzN6bTE3Ny41NjcgMjExaC01MC4zMjZsLjA5Ny0xOTMuODU5Yy4wMDEtMi4zNDQtLjU0Ny00LjY1Ni0xLjYwMS02Ljc1bC02NC42ODUtMTI4LjUzM2MtMi4xNjctNC4zMDUtNi4yNjktNy4zMDYtMTEuMDI3LTguMDY4LTQuNzYxLS43NjItOS41OTQuODEtMTIuOTk1IDQuMjIybC04Ni40NTggODYuNzM5Yy03LjI2MyA3LjI5MS0xOS4xMTUgNi44MDctMjYuMzA4LS4zODYtNy4zODEtNy4zODEtNy43MjgtMTkuNjExLS4wMjItMjcuMzI5bDk1LjI3LTk1LjQzMWMxMS43OTktMTEuODI1IDI3LjUtMTguMzM3IDQ0LjIxNy0xOC4zMzcgMjQuMTk5IDAgNDUuOTU1IDEzLjQ0OCA1Ni43NzkgMzUuMDk3bDU3LjA1OSAxMTQuMTA5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",UNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNOTIuNTQ1LDE4NS4wOWM1MS4wMjksMCw5Mi41NDUtNDEuNTE2LDkyLjU0NS05Mi41NDVTMTQzLjU3NCwwLDkyLjU0NSwwUzAsNDEuNTE2LDAsOTIuNTQ1ICAgIFM0MS41MTYsMTg1LjA5LDkyLjU0NSwxODUuMDl6IE05Mi41NDUsMjBjNDAuMDAxLDAsNzIuNTQ1LDMyLjU0NCw3Mi41NDUsNzIuNTQ1cy0zMi41NDQsNzIuNTQ1LTcyLjU0NSw3Mi41NDUgICAgUzIwLDEzMi41NDYsMjAsOTIuNTQ1UzUyLjU0NCwyMCw5Mi41NDUsMjB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDAuNTAxLDExNC41MjZjMS45NTIsMS45NDUsNC41MDYsMi45MTcsNy4wNiwyLjkxN2MyLjU2NCwwLDUuMTMtMC45OCw3LjA4My0yLjk0ICAgIGMzLjg5OC0zLjkxMiwzLjg4OC0xMC4yNDQtMC4wMjMtMTQuMTQzbC0xMi4wMDgtMTEuOTY4VjQ0YzAtNS41MjItNC40NzgtMTAtMTAtMTBzLTEwLDQuNDc4LTEwLDEwdjQ4LjU0NSAgICBjMCwyLjY1OCwxLjA1OSw1LjIwNywyLjk0LDcuMDgzTDEwMC41MDEsMTE0LjUyNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMiwzMzJoLTYxLjU0N2MtOC40Ni0xMi4wMzQtMjEuMTcyLTIwLjU1OC0zNS42NzEtMjMuNzI4bC00My45NjQtOS42MTMgICAgYzE3Ljk5MS0xMi4xMzQsMjkuODQ3LTMyLjcwMiwyOS44NDctNTUuOTg4di0yNC40MTd2LTExLjI5N3YtMi41NDJjMC0zNy4yMTItMzAuMjc0LTY3LjQ4Ni02Ny40ODYtNjcuNDg2ICAgIHMtNjcuNDg2LDMwLjI3NC02Ny40ODYsNjcuNDg2djIuNTQydjExLjI5N3YyNC40MTdjMCwyMy4yNTYsMTEuODI1LDQzLjgwMywyOS43NzgsNTUuOTQzbC00My45MzYsOS42MzkgICAgYy0xLjg3NywwLjQxMi0zLjcyMiwwLjkxNy01LjUzNSwxLjUwMlYyMjdjMC01LjUyMi00LjQ3OC0xMC0xMC0xMGgtNjhjLTUuNTIyLDAtMTAsNC40NzgtMTAsMTBzNC40NzgsMTAsMTAsMTBoNTh2MTQwaC02OHYtNTAgICAgYzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMHMtMzAsMTMuNDU4LTMwLDMwdjUwSDIwVjIzN2g1OGM1LjUyMiwwLDEwLTQuNDc4LDEwLTEwcy00LjQ3OC0xMC0xMC0xMEgxMGMtNS41MjIsMC0xMCw0LjQ3OC0xMCwxMHYxNjAgICAgYzAsNS41MjIsNC40NzgsMTAsMTAsMTBoNzh2MTloLTFjLTE3LjA5NCwwLTMxLDEzLjkwNi0zMSwzMXY1SDEwYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjQwYzAsNS41MjIsNC40NzgsMTAsMTAsMTBoNDkyICAgIGM1LjUyMiwwLDEwLTQuNDc4LDEwLTEwdi00MHYtNDB2LTQwdi00MEM1MTIsMzM2LjQ3OCw1MDcuNTIyLDMzMiw1MDIsMzMyeiBNNDQxLjE3OSw0NTJIMzg0di0yMGgxMDh2MjBINDQxLjE3OXogTTQ5Miw0MTJIMzg0ICAgIHYtMjBoMTA4VjQxMnogTTQ5MiwzNzJIMzg0di0yMGg1MC44NzRjMC4wMywwLDAuMDYsMC4wMDYsMC4wODksMC4wMDZjMC4wMzEsMCwwLjA2My0wLjAwNiwwLjA5NC0wLjAwNkg0OTJWMzcyeiBNMjc1LjY5MiwyMDQuNDE2ICAgIGMwLTI2LjE4NCwyMS4zMDMtNDcuNDg2LDQ3LjQ4Ni00Ny40ODZjMjQuOTMzLDAsNDUuNDM5LDE5LjMxNCw0Ny4zNDIsNDMuNzY3bC0yMy4yNDYtMTMuNjU3ICAgIGMtNC4yMTEtMi40NzUtOS41OTMtMS41NDQtMTIuNzMsMi4xOTljLTEwLjEyNiwxMi4wODUtMjQuOTc3LDE5LjAxNy00MC43NDQsMTkuMDE3aC0xOC4xMDd2LTEuMjk3VjIwNC40MTZ6IE0yNzUuNjkyLDIyOC4yNTUgICAgSDI5My44YzE4LjgyNSwwLDM2LjctNy4xNzksNTAuMjA1LTE5Ljk0bDI2LjY2LDE1LjY2M3YxOC42OTRjMCwyNi4xODQtMjEuMzAzLDQ3LjQ4Ni00Ny40ODYsNDcuNDg2cy00Ny40ODYtMjEuMzAzLTQ3LjQ4Ni00Ny40ODYgICAgVjIyOC4yNTV6IE0zMzguODQ0LDMwOC4zMDNsLTE1LjgxNSw0Mi4yOTRsLTE1Ljg0NC00Mi4zN2M1LjEzLDEuMjUyLDEwLjQ4MywxLjkzMSwxNS45OTMsMS45MzEgICAgQzMyOC41NzIsMzEwLjE1OCwzMzMuODEzLDMwOS41MDQsMzM4Ljg0NCwzMDguMzAzeiBNMjI2LDM5N2M1LjUyMiwwLDEwLTQuNDc4LDEwLTEwdi01NS42MjNjMy4wODUtMS42MjYsNi4zNzQtMi44MzIsOS44Mi0zLjU4OCAgICBsNDMuNzQtOS41OTZsMjQuMTAzLDY0LjQ1N2MxLjQ2MSwzLjkwNyw1LjE5NCw2LjQ5Nyw5LjM2Niw2LjQ5N3M3LjkwNS0yLjU5LDkuMzY2LTYuNDk4bDI0LjEwNC02NC40NjFsNDQuMDExLDkuNjIzICAgIGMzLjg2MywwLjg0NCw3LjUyOSwyLjI3NCwxMC45MDIsNC4xODhIMzc0Yy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjQwdjQwdjMwSDIxNS4xNzl2LTU1SDIyNnogTTE5NS4xNzksMzk3djU1SDE4MHYtNSAgICBjMC0xNy4wOTQtMTMuOTA2LTMxLTMxLTMxaC0xdi0xOUgxOTUuMTc5eiBNMTA4LDMyN2MwLTUuNTE0LDQuNDg2LTEwLDEwLTEwczEwLDQuNDg2LDEwLDEwdjg5aC0yMFYzMjd6IE03Niw0NDcgICAgYzAtNi4wNjUsNC45MzUtMTEsMTEtMTFoMTFoNDBoMTFjNi4wNjUsMCwxMSw0LjkzNSwxMSwxMXY1SDc2VjQ0N3ogTTQ5Miw0OTJIMjB2LTIwaDQ3MlY0OTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTAuOTMsMjE5LjkzYy0xLjg2LDEuODYtMi45Myw0LjQ0LTIuOTMsNy4wN3MxLjA2OSw1LjIxLDIuOTMsNy4wNjljMS44NiwxLjg2LDQuNDQsMi45MzEsNy4wNywyLjkzMSAgICBzNS4yMS0xLjA3LDcuMDY5LTIuOTMxQzEyNi45MywyMzIuMjEsMTI4LDIyOS42MywxMjgsMjI3cy0xLjA3LTUuMjEtMi45MzEtNy4wN2MtMS44NTktMS44Ni00LjQzOS0yLjkzLTcuMDY5LTIuOTMgICAgUzExMi43OSwyMTguMDY5LDExMC45MywyMTkuOTN6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",bNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01NSwzNS45MzVjNC40OTMtLjU1NSw4LTQuOCw4LTkuOTM1LDAtNC44ODUtMy41MzUtMTktOS0xOXMtOSwxNC4xMTUtOSwxOWMwLDUuMTM4LDMuNTA3LDkuMzgsOCw5LjkzNVY0Mkg0OS45NDlhOS45NzgsOS45NzgsMCwwLDAtMTQuNDQxLTcuOTIybC0xLjYtMi41MTNMMzIuMzg4LDI3SDM2LjVhMS41LDEuNSwwLDAsMSwwLDNIMzZ2MmguNWEzLjUsMy41LDAsMCwwLDAtN0gzMWExLDEsMCwwLDAtLjk0OCwxLjMxNkwzMS42MTMsMzFIMjBWMjloM2ExLDEsMCwwLDAsMS0xLDUsNSwwLDAsMC0xMCwwLDEsMSwwLDAsMCwxLDFoM3YyLjY3NWwtMS45NjQsMi43YTkuOTkxLDkuOTkxLDAsMSwwLDQuNTEsMTEuNjA2LDMuOTg1LDMuOTg1LDAsMSwwLDYuNDI1LTQuNjM0bDUuNTIxLTguMjgzLDEuMzI5LDIuMDg5QTkuOTk1LDkuOTk1LDAsMSwwLDQ5Ljk0OSw0NEg2M1Y0Mkg1NVpNNDcsMjZjMC01LjA2NywzLjY2MS0xNyw3LTE3czcsMTEuOTMzLDcsMTdjMCw0LjAyMi0yLjYxNCw3LjM1MS02LDcuOTA5VjE4LjUzNWwyLjU1NS0xLjctMS4xMS0xLjY2NC0zLDJBMSwxLDAsMCwwLDUzLDE4djdsLTIuNC0xLjgtMS4yLDEuNkw1MywyNy41djYuNDA5QzQ5LjYxNCwzMy4zNTEsNDcsMzAuMDIyLDQ3LDI2Wk0xOSwyNWEzLjAwNiwzLjAwNiwwLDAsMSwyLjgyOSwySDE2LjE3MUEzLjAwNiwzLjAwNiwwLDAsMSwxOSwyNVptNSwxNWEzLjgzNiwzLjgzNiwwLDAsMC0uNTYuMDU3TDIwLjUsMzNoOS42MzJsLTQuODI1LDcuMjM3QTMuOTY4LDMuOTY4LDAsMCwwLDI0LDQwWk0xMSw1MWE4LDgsMCwxLDEsMy44NTctMTVsLTMuMDExLDQuMTRBMi45NiwyLjk2LDAsMCwwLDExLDQwYTMsMywwLDEsMCwyLjczOCw0LjIxNGw1LjEuMzkyQTguMDE0LDguMDE0LDAsMCwxLDExLDUxWm03Ljk4LTguMzg5LTUuMS0uMzkyYTMuMDA1LDMuMDA1LDAsMCwwLS40MTQtLjkxNmwzLTQuMTI1QTcuOTY5LDcuOTY5LDAsMCwxLDE4Ljk4LDQyLjYxMVpNMTIsNDNhMSwxLDAsMSwxLTEtMUExLDEsMCwwLDEsMTIsNDNabTguODc5LTEuNDcyYTkuOTY4LDkuOTY4LDAsMCwwLTMuMjI4LTUuOTc0bDEuMTExLTEuNTI3LDIuODMyLDYuOEE0LjAzMiw0LjAzMiwwLDAsMCwyMC44NzksNDEuNTI4Wk0yNCw0NmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNCw0NlptMTYsNWE4LDgsMCwwLDEtNS4xLTE0LjE1NmwyLjc0OCw0LjMxOUEyLjk2NiwyLjk2NiwwLDAsMCwzNyw0M2EzLDMsMCwxLDAsMy0zLDIuOTYzLDIuOTYzLDAsMCwwLS42NzEuMDgybC0yLjc0MS00LjMwN0E4LDgsMCwxLDEsNDAsNTFabTAtOWExLDEsMCwxLDEtMSwxQTEsMSwwLDAsMSw0MCw0MloiLz4NCiAgICAgICAgPHBhdGggZD0iTTcsMThhNCw0LDAsMCwwLDIuNzg4LTEuMTM5LDUuNjMzLDUuNjMzLDAsMCwwLDMuOTYxLS41NDVBMy45NTQsMy45NTQsMCwwLDAsMTcsMThhNCw0LDAsMSwwLS4wODMtOCw2LDYsMCwwLDAtMTEuOS41MzhBMy45OTIsMy45OTIsMCwwLDAsNywxOFptLS42NTMtNS44NzdhMSwxLDAsMCwwLC42Ny0uOTc3QS42LjYsMCwwLDAsNywxMWE0LDQsMCwwLDEsOC0uMDQxYzAsLjAzMy0uMDE4LjE1Mi0uMDIuMTg1YTEsMSwwLDAsMCwxLjMzOS45ODZBMS45NywxLjk3LDAsMCwxLDE3LDEyYTIsMiwwLDEsMS0xLjksMi41NzMsMSwxLDAsMCwwLTEuNTg5LS40ODcsMy44LDMuOCwwLDAsMS0zLjc1MS42OTMsMSwxLDAsMCwwLTEuMTI5LjM3MiwxLjk5NCwxLjk5NCwwLDEsMS0yLjI4Mi0zLjAyOFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMSIgeT0iNTUiIHdpZHRoPSI2MiIgaGVpZ2h0PSIyIi8+DQogICAgPC9nPg0KPC9zdmc+DQo=",$Ne="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTE2OC45OTIgMjc3LjU5MWMwLTI2LjU1MS0yMS42MDEtNDguMTUxLTQ4LjE1MS00OC4xNTFzLTQ4LjE1MSAyMS42MDEtNDguMTUxIDQ4LjE1MSAyMS42MDEgNDguMTUgNDguMTUxIDQ4LjE1IDQ4LjE1MS0yMS42IDQ4LjE1MS00OC4xNXptLTgxLjMwMyAwYzAtMTguMjc5IDE0Ljg3Mi0zMy4xNTEgMzMuMTUxLTMzLjE1MXMzMy4xNTEgMTQuODcyIDMzLjE1MSAzMy4xNTEtMTQuODcyIDMzLjE1LTMzLjE1MSAzMy4xNS0zMy4xNTEtMTQuODcxLTMzLjE1MS0zMy4xNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ3OS4yNzIgNDYyaC0zNC4wNjJsLTM5LjE1OC0zNi42NjdjLTMuMDIzLTIuODMxLTcuNzctMi42NzUtMTAuNjAxLjM0OXMtMi42NzUgNy43Ny4zNDkgMTAuNjAxbDQxLjMyMSAzOC42OTJjMS4zOSAxLjMwMiAzLjIyMiAyLjAyNSA1LjEyNiAyLjAyNWgzNy4wMjRjOS43NzUgMCAxNy43MjggNy45NTMgMTcuNzI4IDE3LjcyOXYyLjI3MWgtNjAuODQ0Yy0yLjE0OCAwLTQuMjYxLS43MDMtNS45ODEtMS45ODZsLTE4OC40OTItMTc4LjkxNHYtMjQuMTMybDEzMi4yMDcgMTIzLjc5NmMzLjAyMyAyLjgzMSA3Ljc3IDIuNjc1IDEwLjYwMS0uMzQ5czIuNjc1LTcuNzctLjM0OS0xMC42MDFsLTE0Mi40NTktMTMzLjM5NnYtMi40NThjMC04LjI4NC02Ljc0LTE1LjAyNC0xNS4wMjUtMTUuMDI0aC0xMi41NDh2LTQyLjc4NmgxMS40MzhjNi41MzYgMCAxMi4zOC0zLjkwMSAxNC44ODYtOS45MzggMi41MDctNi4wMzcgMS4xNDUtMTIuOTMtMy40NzEtMTcuNTZsLTEwNC43MDYtMTA1LjAzNmMtMS4xNjgtMS4xNzItMi40ODctMi4xMzgtMy45MS0yLjg4OXYtMTAuODY5aDUwLjE0OGM4Ljk1OSAwIDE2LjI0OC03LjI4OSAxNi4yNDgtMTYuMjQ4di0yNS4yMTNjMC04Ljk1OS03LjI4OS0xNi4yNDgtMTYuMjQ4LTE2LjI0OGgtNTAuMTY2Yy0uMTg0LTMuOTc4LTMuNDU4LTcuMTQ5LTcuNDgyLTcuMTQ5LTQuMTQzIDAtNy41IDMuMzU3LTcuNSA3LjV2NjguMjIzYy0xLjQyNy43NTEtMi43NDkgMS43MTktMy45MiAyLjg5NGwtNDAuMDE1IDQwLjE0Yy0yLjkyNSAyLjkzNC0yLjkxNyA3LjY4Mi4wMTcgMTAuNjA2IDIuOTMzIDIuOTIzIDcuNjgxIDIuOTE3IDEwLjYwNi0uMDE3bDQwLjAxNi00MC4xNDFjLjI3MS0uMjcxLjU3OS0uMzI4Ljc5MS0uMzI4LjIxMSAwIC41MjEuMDU3Ljc5Mi4zMjlsMTA0LjcwNSAxMDUuMDM1Yy4xNTcuMTU4LjUyNy41MjkuMjQgMS4yMTktLjI4Ni42ODktLjgwOS42ODktMS4wMzIuNjg5aC0yMDkuNDFjLS4yMjQgMC0uNzQ3IDAtMS4wMzMtLjY4OXMuMDg0LTEuMDYxLjI0MS0xLjIxOWw0My41MjEtNDMuNjU4YzIuOTI1LTIuOTM0IDIuOTE3LTcuNjgzLS4wMTctMTAuNjA2LTIuOTM0LTIuOTI1LTcuNjgzLTIuOTE4LTEwLjYwNi4wMTdsLTQzLjUyMSA0My42NTdjLTQuNjE1IDQuNjMtNS45NzggMTEuNTIyLTMuNDcyIDE3LjU2MSAyLjUwNyA2LjAzNyA4LjM1IDkuOTM4IDE0Ljg4NyA5LjkzOGgxMS40Mzh2NjkuNDQ0YzAgNC4xNDMgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU3IDcuNS03LjV2LTY5LjQ0NGgxNTYuNTM1djEzMi44ODJoLTE1Ni41MzZ2LTMzLjQ1MmMwLTQuMTQzLTMuMzU3LTcuNS03LjUtNy41cy03LjUgMy4zNTctNy41IDcuNXYxODYuNDJoLTIwLjA3M2MtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWg0OTdjNC4xNDMgMCA3LjUtMy4zNTcgNy41LTcuNXYtOS43NzFjMC0xOC4wNDctMTQuNjgyLTMyLjcyOS0zMi43MjgtMzIuNzI5em0tMjk5LjUzLTQzOC42MDN2MjUuMjEzYzAgLjY4OC0uNTYgMS4yNDgtMS4yNDggMS4yNDhoLTUwLjE0OHYtMjcuNzA5aDUwLjE0OGMuNjg5IDAgMS4yNDguNTYgMS4yNDggMS4yNDh6bTE2Ny4xOTYgNDEzLjI5MSA2My41NDEgNjAuMzEyaC02My41NDF6bS0xNSA2MC4zMTJoLTYwLjgxMXYtMTMyLjI3bDYwLjgxMSA1Ny43MnptLTc1LjgxLTE0Ni41MDh2MTQ2LjUwOGgtNDIuMDJ2LTE1Ni45NDJoMTIuNTQ4YzQuOTM5IDAgOS4zMTYtMi40MDYgMTIuMDU2LTYuMDk2em0tMjkuNDQ2LTgxLjUzMi0uMDEyIDU2LjA5N3MtLjAwNC4wMDEtLjAxNC4wMDFoLTEyLjU0OHYtNTYuMTEzem0tMjcuNTc0IDIyOC4wNGgtMzcuMTV2LTEzNy45NjloMzcuMTV6bS0xMDQuMzg0LTYxLjQ4NGg1Mi4yMzR2MjEuNDM2aC01Mi4yMzR6bTUyLjIzNC0xNWgtNTIuMjM0di0yMS40MzZoNTIuMjM0em0tNTIuMjM0IDUxLjQzNWg1Mi4yMzR2MjUuMDQ5aC01Mi4yMzR6bTUyLjIzNC0xMTIuOTJ2MjUuMDQ5aC01Mi4yMzR2LTI1LjA0OXptLTEwNC4zODUgMGgzNy4xNXYxMzcuOTY5aC0zNy4xNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",PNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM2Ny4wNDMgMTcwLjQxNGMtMTAuNTE2LS4zNjUtMjAuMDE2LTUuMDQ3LTI2Ljc0OS0xMy4xODEtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC02LjczMyA4LjEzNS0xNi4yMzMgMTIuODE2LTI2Ljc0OSAxMy4xODItNC4xNC4xNDQtNy4zNzkgMy42MTYtNy4yMzQgNy43NTYuMTQ0IDQuMTQgMy41OTQgNy4zNzEgNy43NTYgNy4yMzUgMTMuNTY2LS40NzIgMjYuMzg2LTYuMzI4IDM1LjY0Ni0xNi4xODcgMjAuMjc2IDIxLjYyOSA1NC41NjkgMjEuNjU3IDc0Ljg3NS4wMDEgMjAuMjc4IDIxLjYyOSA1NC41NzEgMjEuNjU0IDc0Ljg3NC0uMDAxIDkuMjYyIDkuODU5IDIyLjA4IDE1LjcxNSAzNS42NDcgMTYuMTg3IDQuMTIxLjE0OSA3LjYxMy0zLjA5NSA3Ljc1Ni03LjIzNS4xNDUtNC4xNC0zLjA5NC03LjYxMi03LjIzNC03Ljc1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MC4yOTQgMjE4Ljc1N2MtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NiAxNy42MzYtNDEuNDYxIDE3LjYwNy01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTk2IDE3LjYzOS00MS40NjEgMTcuNjA2LTU2LjAzMS0uMDAxLTQuOTA0LTUuOTIyLTEzLjkyNy01LjkzOC0xOC44NDEuMDAxLTcuOTk0IDkuNjU4LTIwLjE4MiAxNC40ODQtMzIuNjEyIDEyLjkxNC00LjEtLjUxOS03Ljg2MSAyLjM4OS04LjM4MiA2LjQ5OS0uNTIxIDQuMTA5IDIuMzkgNy44NjIgNi40OTkgOC4zODIgMTYuNDgxIDIuMDg5IDMyLjY1OC0zLjc5NSA0My45MTYtMTUuODA4IDIwLjI3NyAyMS42MjggNTQuNTY4IDIxLjY1NCA3NC44NzMgMCAyMC4yNzYgMjEuNjI3IDU0LjU3IDIxLjY1NiA3NC44NzMgMCAxMS4yNTggMTIuMDEzIDI3LjQzNiAxNy44OTYgNDMuOTE1IDE1LjgwOCA0LjEwOS0uNTIgNy4wMi00LjI3MiA2LjQ5OS04LjM4MnMtNC4yODktNy4wMTktOC4zODItNi40OTljLTEyLjQzNSAxLjU2OS0yNC42MTgtMy4yNTUtMzIuNjExLTEyLjkxNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC43ODIgMTA3LjdjLTguMDgyLTEuNzAzLTE1LjE2Ny02LTIwLjQ4Ny0xMi40MjctNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC01LjMyIDYuNDI3LTEyLjQwNCAxMC43MjUtMjAuNDg2IDEyLjQyOC00LjA1NC44NTQtNi42NDcgNC44MzItNS43OTMgOC44ODVzNC44NCA2LjY0NyA4Ljg4NSA1Ljc5MmMxMC4zODMtMi4xODggMTkuNTkyLTcuMzkgMjYuODE2LTE1LjExNyAyMC4yODIgMjEuNjMxIDU0LjU3MiAyMS42NDggNzQuODcyLS4wMDEgMjAuMjc2IDIxLjYyNiA1NC41NjcgMjEuNjU2IDc0Ljg3MS4wMDIgNy4yMjYgNy43MjcgMTYuNDM2IDEyLjkzIDI2LjgxOCAxNS4xMTYgNC4wNDguODU1IDguMDMtMS43NCA4Ljg4NS01Ljc5My44NTMtNC4wNTMtMS43NDEtOC4wMzEtNS43OTMtOC44ODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01NC45ODUgNDI5LjI3M2gxNjkuNzMydjY5LjU3OWMwIDcuMjUgNS44OTggMTMuMTQ4IDEzLjE0OSAxMy4xNDhoMjUuMTkyYzcuMjUgMCAxMy4xNDgtNS44OTggMTMuMTQ4LTEzLjE0OHYtMS40NjRoNzQuMTk5djEuNDY0YzAgNy4yNSA1Ljg5OCAxMy4xNDggMTMuMTQ5IDEzLjE0OGgyNS4xOTJjNy4yNSAwIDEzLjE0OC01Ljg5OCAxMy4xNDgtMTMuMTQ4di02OS41NzloNTUuMTE5YzI0LjEyMSAwIDQzLjA4MS0yMC44ODYgNDAuNjU3LTQ0Ljk1Ni0uMDA0LS4wNC0uMDA4LS4wOC0uMDEzLS4xMmwtMTMuMDM1LTExMS41NjdjLS40ODEtNC4xMTQtNC4yMTUtNy4wNjItOC4zMTktNi41NzktNC4xMTQuNDgxLTcuMDYgNC4yMDYtNi41NzkgOC4zMmwxMy4wMyAxMTEuNTAzYzEuNDYgMTQuODMzLTEwLjA5NCAyOC4zOTgtMjUuNzM4IDI4LjM5OGgtNTUuMTE5di0xOS4wNThoNDQuOTM3YzkuNDcgMCAxNi44OC04LjE5MSAxNS45MzUtMTcuNjE2LS4wMDUtLjA0My0uMDEtLjA4Ni0uMDE1LS4xMjlsLTM4Ljc1Ni0zMjkuMDc0Yy0uODYxLTguMTc5LTcuNjk1LTE0LjMzNy0xNS45MjctMTQuMzM3aC0xMzQuNTcxYy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDEzNC41NzFjLjUyMyAwIC45NTcuMzkzIDEuMDEuOTE0LjAwNC4wNDIuMDA5LjA4My4wMTQuMTI1bDM4Ljc1IDMyOS4wMzRjLjAxOS4yNzUtLjA3NC41NDctLjI2Ljc1MS0uMTkxLjIxMi0uNDY2LjMzMy0uNzUyLjMzM2gtNDQuOTM3di0yMi44OTJjMC0zOS40NzctMzIuMjU2LTcwLjM0NC03MC4zNDUtNzAuMzQ0LTI2Ljc3OCAwLTUwLjk0NyAxNS4xODktNjIuODM5IDM4Ljc0NC0xMi4wMDgtMjMuNzcyLTM2LjcyNS0zOS4yNS02NC4yMDYtMzguNzMxLTM3LjcuNzA5LTY4Ljk4OCAzMS41OTMtNjguOTg4IDcwLjMzMnYyMi44OTJoLTcwLjM1MmMtLjI4NiAwLS41Ni0uMTIyLS43NTMtLjMzNS0uMTg1LS4yMDQtLjI3Ny0uNDc2LS4yNTktLjc1MWwzOC43NTItMzI5LjAzMmMuMDA1LS4wNDIuMDEtLjA4NC4wMTQtLjEyNy4wNTMtLjUyLjQ4Ni0uOTEyIDEuMDEtLjkxMmgxMzQuNTdjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEzNC41N2MtOC4yMzMgMC0xNS4wNjcgNi4xNi0xNS45MjcgMTQuMzM5bC0zOC43NTcgMzI5LjA3M2MtLjAwNS4wNDMtLjAxLjA4Ni0uMDE1LjEyOS0uOTQ2IDkuNDIyIDYuNDY0IDE3LjYxNiAxNS45MzUgMTcuNjE2aDE1OS41NTF2MTkuMDU4aC0xNjkuNzMyYy0xNC44NTIgMC0yNy4yNzktMTIuNzgyLTI1LjczOS0yOC4zOTlsNDAuNjA5LTM0Ny40ODNjLjAwNS0uMDQuMDA5LS4wOC4wMTMtLjExOSAxLjMzNi0xMy4yNjggMTIuMzk5LTIzLjI3MyAyNS43MzQtMjMuMjczaDMyMC43OThjMTMuMzM1IDAgMjQuMzk3IDEwLjAwNSAyNS43MzMgMjMuMjcyLjAwNC4wNC4wMDguMDguMDEzLjEybDIzLjQ4NyAyMDAuOTc5Yy40ODEgNC4xMTUgNC4yMTcgNy4wNjMgOC4zMTkgNi41NzkgNC4xMTQtLjQ4IDcuMDYtNC4yMDYgNi41NzktOC4zMmwtMjMuNDgtMjAwLjkyMmMtMi4xMzgtMjAuOTMyLTE5LjYwMy0zNi43MDgtNDAuNjUxLTM2LjcwOGgtMzIwLjc5OGMtMjEuMDQ5IDAtMzguNTE2IDE1Ljc3Ny00MC42NTIgMzYuNzFsLTQwLjYxIDM0Ny40ODhjLS4wMDUuMDQtLjAwOS4wOC0uMDEzLjEyLTIuNDE1IDIzLjk5OSAxNi40NjYgNDQuOTU1IDQwLjY1OCA0NC45NTV6bTI1Ny43MTMtNzEuMzAyYzAtMTAuMzI1IDguMTIyLTE5LjI4OSAxOC41LTE5LjQ4MyAxMC42ODItLjIwNCAxOS4yMDkgOC40OTEgMTkuMjA5IDE4LjgzNnYyMi44OTJoLTM3LjcwOXptLTM2LjQ5MSA3MS4zMDJoNzQuMTk5djE5LjA1OGgtNzQuMTk5em03OC4yMTUtMzQuMDU4YzUuNTY5IDAgMTAuMDE0IDQuODE4IDkuNDg0IDEwLjQzLS40NzMgNC44ODQtNC41OSA4LjYyNy05LjQ4NCA4LjYyN2gtNzguMjE1di0xOS4wNThjMjYuMTEyLjAwMSA1Mi4xNjcuMDAxIDc4LjIxNS4wMDF6bS03OC4yMTUgNjguMTE2aDc4LjIxNWM1LjUzNyAwIDEwLjAxNiA0Ljc5NiA5LjQ4NCAxMC40My0uNDcyIDQuODc0LTQuNTg3IDguNjI3LTkuNDg0IDguNjI3aC03OC4yMTV6bTExMC42OSAzMy42NjloLTIxLjQ5di0yLjIxM2MxOC4wMTQtOS4xMjcgMTguMDU0LTM0LjcwOCAwLTQzLjg1NXYtMjQuMjZjMTguMDk4LTkuMTcgMTcuOTY4LTM0Ljc1MiAwLTQzLjg1NXYtMjUuNDkzYzAtMjAuNDg2LTE4LjIwMi0zNi41MTctMzguNzk0LTMzLjQ5LTE2LjM1MyAyLjQtMjguOTE1IDE2LjUyNi0yOC45MTUgMzMuNDl2MjIuODkyaC0yMS40OXYtMjEuODM3YzAtMzAuNTUyIDI0LjQ2LTU2LjA5NCA1NC44MjItNTYuMzg2IDMxLjIxOC0uMjYyIDU1Ljg2NyAyNS4wNTggNTUuODY3IDU1LjMzMXptLTIzNi4zNzctMTE2Ljc4NXYtMjEuODM4YzAtMzIuMjI0IDI2LjY5Ni01Ny41ODMgNTcuNTg5LTU2LjM0MiAyOS40ODMgMS4yMDQgNTMuMDk5IDI1LjUwMyA1My4wOTkgNTUuMjg3djEzOS42NzdoLTIxLjQ5YzAtMTQuNDE4IDAtMTIxLjA2MyAwLTEzOS42NzcgMC0xNy45NS0xNC4wNjUtMzIuODA0LTMxLjkxNS0zMy43OTUtMTkuMjc2LTEuMDk2LTM1Ljc5MyAxNC4yNjEtMzUuNzkzIDMzLjc5NXYyMi44OTJoLTIxLjQ5em0zNi40OSAwdi0yMi4yNDVjMC05LjQyNSA2Ljc2Mi0xNy43MjQgMTUuODc3LTE5LjI0MyAxMS42MzktMS44NTIgMjEuODMgNy4yMzcgMjEuODMgMTguNTk2djIyLjg5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",WNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTYsMjUySDExNmMtNS41MSwwLTEwLDQuNDktMTAsMTBzNC40OSwxMCwxMCwxMGgxMDBjNS41MSwwLDEwLTQuNDksMTAtMTBTMjIxLjUxLDI1MiwyMTYsMjUyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1MmMtNS41MSwwLTEwLDQuNDktMTAsMTBzNC40OSwxMCwxMCwxMHMxMC00LjQ5LDEwLTEwUzI2MS41MSwyNTIsMjU2LDI1MnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM5NiwyNTJIMjk2Yy01LjUxLDAtMTAsNC40OS0xMCwxMHM0LjQ5LDEwLDEwLDEwaDEwMGM1LjUxLDAsMTAtNC40OSwxMC0xMFM0MDEuNTEsMjUyLDM5NiwyNTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yODYsMTA3aC02MGMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHY2MGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwaDYwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTB2LTYwDQoJCQlDMjk2LDExMS40NzcsMjkxLjUyMywxMDcsMjg2LDEwN3ogTTI3NiwxNjdoLTQwdi00MGg0MFYxNjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDIsNDkyaC0xM1YyMzNjMC02Mi4yMzctMjQuMjM2LTEyMC43NDgtNjguMjQ0LTE2NC43NTZDMzc2Ljc0OCwyNC4yMzYsMzE4LjIzNywwLDI1NiwwUzEzNS4yNTIsMjQuMjM2LDkxLjI0NCw2OC4yNDQNCgkJCVMyMywxNzAuNzYzLDIzLDIzM3YyNTlIMTBjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoNDkyYzUuNTIzLDAsMTAtNC40NzcsMTAtMTBTNTA3LjUyMyw0OTIsNTAyLDQ5MnogTTM4Niw0OTJIMTI2DQoJCQl2LTIwaDI2MFY0OTJ6IE0zODYsNDUySDEyNnYtMjBoMjYwVjQ1MnogTTM4Niw0MTJIMTI2di0yMGgyNjBWNDEyeiBNMzg2LDM3MkgxMjZ2LTIwaDI2MFYzNzJ6IE0zODYsMzMySDEyNnYtMjBoMjYwVjMzMnoNCgkJCSBNNDI5LDQ5MmgtMjNWMzAyYzAtNS41MjMtNC40NzctMTAtMTAtMTBIMTE2Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjE5MEg4M1YyMzNjMC05NS42NjgsNzcuMzgzLTE3My41LDE3Mi41LTE3My41DQoJCQlDMzUxLjE2OCw1OS41LDQyOSwxMzcuMzMyLDQyOSwyMzNWNDkyeiBNNDY5LDQ5MmgtMjBWMjMzYzAtMTA2LjY5Ni04Ni44MDQtMTkzLjUtMTkzLjUtMTkzLjUNCgkJCWMtNTEuNjM5LDAtMTAwLjA2MywyMC4xMzctMTM2LjM1Miw1Ni43MDJDODIuOTQsMTMyLjY4NCw2MywxODEuMjY3LDYzLDIzM3YyNTlINDNWMjMzYzAtMTE3LjQ0OSw5NS41NTEtMjEzLDIxMy0yMTMNCgkJCXMyMTMsOTUuNTUxLDIxMywyMTNWNDkyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",RNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUwOC41NDEgMjE4LjM4NC0xNjIuNTA3LTIwMy4xMzRjLTcuNzUzLTkuNjkyLTE5LjMxOC0xNS4yNS0zMS43MjktMTUuMjVoLTgzLjE1NWMtOC43MDMgMC0xNS43ODMgNy4wOC0xNS43ODMgMTUuNzgzdjE2LjU2N2MwIDguNzAzIDcuMDggMTUuNzgzIDE1Ljc4MyAxNS43ODNoMzMuOTE3djExNy41MzNoLTMwLjYzMmwtMTIwLjMzNC0xNTAuNDE2Yy03Ljc1My05LjY5MS0xOS4zMTgtMTUuMjUtMzEuNzI5LTE1LjI1aC02Ni41ODljLTguNzAzIDAtMTUuNzgzIDcuMDgtMTUuNzgzIDE1Ljc4M3YxNi41NjdjMCA4LjcwMyA3LjA4IDE1Ljc4MyAxNS43ODMgMTUuNzgzaDE3LjM1djExNy41MzNoLTE3LjM1Yy04LjcwMy4wMDEtMTUuNzgzIDcuMDgxLTE1Ljc4MyAxNS43ODR2MzA2LjQ4M2MwIDEzLjI3MSAxMC43OTYgMjQuMDY3IDI0LjA2NyAyNC4wNjdoNDcyLjE1YzguNzAzIDAgMTUuNzgzLTcuMDggMTUuNzgzLTE1Ljc4M3YtNzQuNTUtMTQzLjI4OS01MC4xMzRjMC0zLjU3MS0xLjIyOC03LjA3My0zLjQ1OS05Ljg2em0tNjIuMDI0IDE5NS43ODNjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzgzdi03NC41NS0xMjEuOTA4bDE4LjEzNCAyMi42Njd2MTc0LjU3NHptLTIzMS45MzQgMGMtLjQzMiAwLS43ODQtLjM1Mi0uNzg0LS43ODN2LTY3LjA1aDE4LjEzM3Y2Ny44MzN6bS02Ni4yNjYtODIuODM0Yy0uNDMyIDAtLjc4NC0uMzUyLS43ODQtLjc4NHYtNjcuMDQ5aDE4LjEzM3Y2Ny44MzN6bS02Ni4yNjctODIuODMzYy0uNDMyIDAtLjc4My0uMzUyLS43ODMtLjc4M3YtNjcuMDVoMTguMTMzdjY3LjgzM3ptODMuNjE2LTkxLjc0MXY4LjkwOGgtMTguMTMzdi0zMS41NzR6bTY2LjI2NyA4Mi44MzN2OC45MDhoLTE4LjEzM3YtMzEuNTc0em04MS4yNjcgOC4xMjV2LTE5Ni40MjhjLjA3Mi4wODQuMTUyLjE2LjIyMi4yNDdsMTcuOTExIDIyLjM4OXYxNzQuNTc1aC0xNy4zNWMtLjQzMSAwLS43ODMtLjM1Mi0uNzgzLS43ODN6bTExNy41MzMgNTAuNDgzaC0xOC4xMzN2LTEyMi42OTFsMTguMTM0IDIyLjY2N3YxMDAuMDI0em0tMTguMTMzIDE1aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptLTE1IDE4LjEzM2gtMTcuMzVjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzg0di03NC41NDktMTIxLjkwOGwxOC4xMzMgMjIuNjY2em0tMzMuMTMzLTExNS45NjZoLTE4LjEzNHYtMTIyLjY5MWwxOC4xMzQgMjIuNjY3em0tMTguMTM0IDE1aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptMTguMTM0IDMzLjEzM3Y2Ny4wNWMwIC4yNjQuMDI3LjUyMi4wNC43ODRoLTg0LjQ0di01Mi45NTUtMTQuODc5em0tOTkuNDAxIDE3LjUwOXYxMDAuMDI0aC0xOC4xMzN2LTEyMi42OTFsNS4wODYgNi4zNTd6bS0xNTAuNjY2LTE4OC4zMzMgMTguMTMzIDIyLjY2N3YxMDAuMDI0aC0xOC4xMzN6bTMzLjEzMyA4Ny45OTFoMTguMTMzdjY3LjgzM2gtMTguMTMzem0zMy4xMzMtNS4xNTggMTguMTMzIDIyLjY2N3YxMDAuMDI0aC0xOC4xMzN6bTMzLjEzNCA4Ny45OTFoMTguMTMzdjY3LjgzM2gtMTguMTMzem0tMTE0LjQtOTcuODMzaC0xOC4xMzN2LTExNC4zNzhjLjA3My4wODQuMTUyLjE2LjIyMi4yNDdsMTcuOTExIDIyLjM5em0xNSA2NC43aDE4LjEzM3YxOC4xMzNoLTE4LjEzM3ptNjYuMjY2IDgyLjgzM2gxOC4xMzR2MTguMTMzaC0xOC4xMzN2LTE4LjEzM3ptNjYuMjY3IDgyLjgzM2gxOC4xMzN2MTguMTMzaC0xOC4xMzN6bTMzLjEzMy00OS43aDE1MC42Njd2NjcuMDVjMCAuMjY0LjAyNy41MjIuMDQuNzgzaC0xNTAuNzA3em0yMDcuMzE2LTc3LjM0NiA5LjYxOCAxMi4wMjJ2MTAwLjAyNGgtMTguMTMzdi0xMjIuNjl6bS04LjUxNSAxMjcuMDQ2aDE4LjEzM3YxOC4xMzNoLTE4LjEzM3ptLTI0OC41LTM2My42ODN2LTE2LjU2N2MwLS40MzIuMzUyLS43ODMuNzgzLS43ODNoODMuMTU1YzcuODMgMCAxNS4xMjUgMy41MDYgMjAuMDE3IDkuNjJsMTYyLjUwNyAyMDMuMTM0YzAgLjAwMS4wMDEuMDAxLjAwMi4wMDIuMTA5LjEzNy4xNy4zMTEuMTcuNDg4djI4Ljc1M2wtMTcxLjg2Ni0yMTQuODMxYy00LjU5My01Ljc0LTExLjQ0Mi05LjAzMi0xOC43OTMtOS4wMzJoLS42NDItNzQuNTVjLS40MzItLjAwMS0uNzgzLS4zNTItLjc4My0uNzg0em02Ny44MzMgMTUuNzgzdjg0LjRoLTE4LjEzNHYtODQuNHptLTE4LjEzNCA5OS40aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptMTguMTM0IDMzLjEzNHY2Ny4wNWMwIC4yNjQuMDI3LjUyMi4wNC43ODNoLTE4LjE3NHYtMjAuMjU2YzAtMy41Ny0xLjIyOC03LjA3Mi0zLjQ1OC05Ljg1OSAwLS4wMDEgMC0uMDAxIDAtLjAwMWwtMzAuMTc0LTM3LjcxOGg1MS43NjZ6bS0yODMuMi0xNDguMzE3di0xNi41NjdjMC0uNDMxLjM1Mi0uNzgzLjc4My0uNzgzaDY2LjU4OGM3LjgzIDAgMTUuMTI1IDMuNTA2IDIwLjAxNiA5LjYybDE2Mi41MDggMjAzLjEzNGMuMTEuMTM4LjE3MS4zMTMuMTcxLjQ5djI4Ljc1NGwtMTcxLjg2NS0yMTQuODMyYy00LjU5Mi01Ljc0LTExLjQ0Mi05LjAzMy0xOC43OTMtOS4wMzNoLS42NDItNTcuOTgzYy0uNDMxIDAtLjc4My0uMzUxLS43ODMtLjc4M3ptNTEuMjY3IDE1Ljc4M3Y4NC40aC0xOC4xMzR2LTg0LjR6bS0xOC4xMzQgOTkuNGgxOC4xMzN2MTguMTMzaC0xOC4xMzN6bS0yNC4wNjYgMzQ5LjQ2N2MtNSAwLTkuMDY3LTQuMDY3LTkuMDY3LTkuMDY3di0zMDYuNDgzYzAtLjQzMi4zNTItLjc4NC43ODMtLjc4NGg1MC40ODN2NjcuMDVjMCA4LjcwMyA3LjA4IDE1Ljc4MyAxNS43ODMgMTUuNzgzaDUwLjQ4M3Y2Ny4wNWMwIDguNzAzIDcuMDgxIDE1Ljc4NCAxNS43ODQgMTUuNzg0aDUwLjQ4NHY2Ny4wNWMwIDguNzAzIDcuMDgxIDE1Ljc4MyAxNS43ODQgMTUuNzgzaDUwLjQ4M3Y2Ny4wNWMwIC40MzItLjM1Mi43ODMtLjc4My43ODNoLTI0MC4yMTd6bTQ3Mi45MzMtLjc4M2MwIC40MzItLjM1Mi43ODMtLjc4My43ODNoLTIxNi4xOWMuMDEzLS4yNjEuMDQtLjUxOS4wNC0uNzgzdi02Ny4wNWgyMTYuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",JNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTggNTExLjk5OCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS45OTgsMzAuNTk4aC0xNTJjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2NDAuMDAzYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMjAuMDAxdjc0Ljc5NGgtMTkwDQoJCQkJYy01LjUyMiwwLTEwLDQuNDc3LTEwLDEwdjQwLjAwMmMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwSDIwMHY3NC43OTZIMTBjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2NDAuMDAxYzAsNS41MjMsNC40NzcsMTAsMTAsMTANCgkJCQloMTMuOTk2VjQ3MS40YzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMTgxLjc2YzIuMjU2LDAsNC40NDUtMC43NjMsNi4yMTMtMi4xNjVsMjg2LjI0My0yMjYuOTcyDQoJCQkJYzIuMzkyLTEuODk2LDMuNzg2LTQuNzgyLDMuNzg2LTcuODM1VjgwLjYwMVY0MC41OThDNTExLjk5OCwzNS4wNzUsNTA3LjUyMiwzMC41OTgsNTAxLjk5OCwzMC41OTh6IE0xODkuOTk5LDIwNS4zOTd2LTIwLjAwMg0KCQkJCWgxODB2MjAuMDAySDE4OS45OTl6IE0yMCwzNDAuMTk0di0yMC4wMDFoMTgwdjIwLjAwMUgyMHogTTQ5MS45OTgsMTA5Ljg3OWgtNDEuMDM1Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwDQoJCQkJYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoNDEuMDM1djEwOS43MTVMMjEyLjI3MSw0NjEuNEg0My45OTZ2LTYyLjI1M2g0MS4wMzZjNS41MjIsMCwxMC00LjQ3NywxMC0xMHMtNC40NzgtMTAtMTAtMTBINDMuOTk2DQoJCQkJdi0xOC45NTNIMjEwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTB2LTQwLjAwMXYtODQuNzk2aDE1OS45OTljNS41MjMsMCwxMC00LjQ3NywxMC0xMHYtNDAuMDAyVjkwLjYwMWgxMDEuOTk5VjEwOS44Nzl6DQoJCQkJIE00OTEuOTk4LDcwLjYwMWgtMTMyVjUwLjU5OGgxMzJWNzAuNjAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTE0LDM3OS4xNDRoLTAuMjM2Yy01LjUyNCwwLTEwLDQuNDc3LTEwLDEwczQuNDc2LDEwLDEwLDEwSDExNGM1LjUyMiwwLDEwLTQuNDc3LDEwLTEwUzExOS41MjIsMzc5LjE0NCwxMTQsMzc5LjE0NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQyMS45OTgsMTI5Ljg4aDAuMjM1YzUuNTIyLDAsMTAtNC40NzcsMTAtMTBzLTQuNDc4LTEwLTEwLTEwaC0wLjIzNWMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMA0KCQkJCVM0MTYuNDc1LDEyOS44OCw0MjEuOTk4LDEyOS44OHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",BNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01LjUxOCA2NGgyLjk4NmMuNTUzIDAgMS0uNDQ3IDEtMXYtMi4wMjFoNDQuOTkydjIuMDIxYzAgLjU1My40NDcgMSAxIDFoM2MuNTUzIDAgMS0uNDQ3IDEtMXYtNjAuNWMwLTEuMzc4LTEuMTIxLTIuNS0yLjUtMi41cy0yLjUgMS4xMjItMi41IDIuNXYxNS41MDRoLTIuOTk4di0xMy45OTZjMC0uNTUyLS40NDctMS0xLTFoLTE1Ljk5NmMtLjU1MyAwLTEgLjQ0OC0xIDF2MTMuOTk1aC0zLjAwMnYtMTMuOTk1YzAtLjU1Mi0uNDQ3LTEtMS0xaC0xNS45OTZjLS41NTMgMC0xIC40NDgtMSAxdjEzLjk5NWgtM3YtMTUuNTAzYzAtMS4zNzgtMS4xMjEtMi41LTIuNS0yLjVzLTIuNSAxLjEyMi0yLjUgMi41bC4wMTQgNjAuNWMwIC41NTMuNDQ3IDEgMSAxem01MC45NzgtNjEuNWMwLS4yNzYuMjI1LS41LjUtLjVzLjUuMjI0LjUuNXY1OS41aC0xem0tMTQuOTk4IDIuNTA4aDIuMDAydjEuMDA4aC0yLjAwMnptLTUuOTk2IDBoMy45OTZ2Mi4wMDhjMCAuNTUyLjQ0NyAxIDEgMWg0LjAwMmMuNTUzIDAgMS0uNDQ4IDEtMXYtMi4wMDhoMy45OTh2MTIuOTk1aC0xMy45OTZ6bS0xNS4wMDIgMGgydjEuMDA4aC0yem0tNS45OTYgMGgzLjk5NnYyLjAwOGMwIC41NTIuNDQ3IDEgMSAxaDRjLjU1MyAwIDEtLjQ0OCAxLTF2LTIuMDA4aDR2MTIuOTk1aC0xMy45OTZ6bS01IDE0Ljk5NWg0IDE1Ljk5NiA1LjAwMiAxNS45OTYgMy45OTh2MWgtNDQuOTkyem0wIDNoNDQuOTkydjEzLjk3MWgtMi45OTZ2LTEwLjk5YzAtLjU1Mi0uNDQ3LTEtMS0xaC0zN2MtLjU1MyAwLTEgLjQ0OC0xIDF2MTAuOTkxaC0yLjk5NnptMTkuOTk2IDYuOTgxaDVjLjU1MyAwIDEtLjQ0OCAxLTF2LTJoMTR2OS45OTFoLTM1di05Ljk5MWgxNHYyYzAgLjU1Mi40NDcgMSAxIDF6bTEtMnYtMWgzdjF6bS0yMC45OTYgMTAuOTkxaDMuOTk2IDM3IDMuOTk2djEuMDAyaC00NC45OTJ6bTAgMy4wMDJoNDQuOTkydjE0aC0yLjk5NHYtMTEuOTljMC0uNTUzLS40NDctMS0xLTFoLTE0LjAwMmMtLjU1MyAwLTEgLjQ0Ny0xIDF2MTEuOTloLTIuOTk0di04Ljk4OGMwLS41NTMtLjQ0Ny0xLTEtMWgtNi45OTRjLS4wMDQgMC0uMDA2LS4wMDItLjAxLS4wMDJzLS4wMDYuMDAyLS4wMS4wMDJoLTMuOTgyYy0uMDA0IDAtLjAwNi0uMDAyLS4wMS0uMDAycy0uMDA2LjAwMi0uMDEuMDAyaC02Ljk4NmMtLjU1MyAwLTEgLjQ0Ny0xIDF2OC45ODhoLTN6bTMxLjk5NiA2LjAxN2g0LjAwMmMuNTUzIDAgMS0uNDQ3IDEtMXYtMi4wMDhoM3YxMC45OWgtMTIuMDAydi0xMC45OWgzdjIuMDA4YzAgLjU1My40NDcgMSAxIDF6bTEtMnYtMS4wMDhoMi4wMDJ2MS4wMDh6bS0yMiA1aDQuMDAyYy41NTMgMCAxLS40NDcgMS0xdi0yLjAwNmg1LjAwNHY3Ljk4OGgtMTYuMDAydi03Ljk4OGg0Ljk5NnYyLjAwNmMwIC41NTMuNDQ3IDEgMSAxem0xLTJ2LTEuMDA2aDIuMDAydjEuMDA2em0tMTEuOTk2IDguOTgzaDQgMTguMDAyIDQuOTk0IDE0LjAwMiAzLjk5NHYxLjAwMmgtNDQuOTkyem0tMi41LTU1Ljk3N2MuMjc1IDAgLjUuMjI0LjUuNXY1OS41aC0uOTg2bC0uMDE0LTU5LjVjMC0uMjc2LjIyNS0uNS41LS41eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",GNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MyAzdi0yaC0zMWMtLjU1MyAwLTEgLjQ0Ny0xIDF2OGMwIC41NTMuNDQ3IDEgMSAxaDF2NTBoLTMydjJoMzMgNCA4IDQgMTN2LTJoLTEydi01aDEydi0yaC0xMy00LTN2LTJoMjB2LTJoLTIxYy0uNTUzIDAtMSAuNDQ3LTEgMXY0YzAgLjU1My40NDcgMSAxIDFoM3Y1aC02di01MGgyNHYtMmgtMjUtNC0xdi02em0tMTYgNTNoMnY1aC0yem0tMTAtNDV2NTBoLTJ2LTUweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjEgMzJjMC0yLjExOC0uNTAxLTQuMjM4LTEuNDQ3LTYuMTMxbC0uNjU4LTEuMzE2Yy0uMzQtLjY3OC0xLjQ0OS0uNjc4LTEuNzg5IDBsLS42NTggMS4zMTZjLS45NDcgMS44OTMtMS40NDggNC4wMTMtMS40NDggNi4xMzEgMCAuMjQxLjAyOS40ODEuMDQyLjcyMi0uNjQ2LS40ODMtMS4zODMtLjgzNy0yLjE3Mi0xLjAzNGwtMi42MjgtLjY1N2MtLjMzOC0uMDg3LS43MDEuMDE1LS45NDkuMjYzcy0uMzQ5LjYwOC0uMjYzLjk0OWwuNjU3IDIuNjI5Yy4yNjkgMS4wNzMuODIzIDIuMDU1IDEuNjA1IDIuODM2Ljc4MS43ODIgMS43NjMgMS4zMzcgMi44MzYgMS42MDVoLjAwMWwuNjcyLjE2OC0xLjI1LjYyNS44OTUgMS43ODkgMi41NTQtMS4yNzd2Mi4zODJoLTdjLS41NTMgMC0xIC40NDctMSAxdjRjMCAuNTUzLjQ0NyAxIDEgMWgxLjA5NWwuOTEgOS4xYy4wNTEuNTEuNDgxLjkuOTk1LjloMTBjLjUxNCAwIC45NDQtLjM5Ljk5NS0uOWwuOTEtOS4xaDEuMDk1Yy41NTMgMCAxLS40NDcgMS0xdi00YzAtLjU1My0uNDQ3LTEtMS0xaC03di0yLjM4MmwyLjU1MyAxLjI3Ni44OTUtMS43ODktMS4yNS0uNjI1LjY3Mi0uMTY4aC4wMDFjMS4wNzMtLjI2OSAyLjA1NS0uODIzIDIuODM2LTEuNjA1Ljc4Mi0uNzgxIDEuMzM3LTEuNzYzIDEuNjA1LTIuODM3bC42NTctMi42MjhjLjA4Ni0uMzQxLS4wMTUtLjcwMS0uMjYzLS45NDlzLS42MDktLjM1LS45NDktLjI2M2wtMi42MjkuNjU3Yy0uNzg4LjE5Ny0xLjUyNS41NTEtMi4xNzEgMS4wMzQuMDE0LS4yNC4wNDMtLjQ4LjA0My0uNzIxem0xLjA5NSAyNWgtOC4xODlsLS44LThoOS43OXptMi45MDUtMTBoLTE0di0yaDE0em0tNy0xOS43MzRjLjY1NSAxLjQ4NSAxIDMuMTEgMSA0LjczNHMtLjM0NSAzLjI0OS0xIDQuNzM0Yy0uNjU1LTEuNDg1LTEtMy4xMS0xLTQuNzM0cy4zNDUtMy4yNDkgMS00LjczNHptLTUuMjkzIDkuMDI3Yy0uNTI1LS41MjUtLjg5OC0xLjE4Ni0xLjA4LTEuOTA3bC0uMjUyLTEuMDExIDEuMDEuMjUyYy43MjMuMTgyIDEuMzgzLjU1NSAxLjkwOCAxLjA4cy44OTggMS4xODYgMS4wOCAxLjkwN2wuMjUyIDEuMDExLTEuMDEtLjI1MmMtLjcyMi0uMTgyLTEuMzgzLS41NTUtMS45MDgtMS4wOHptMTAuOTA3LTIuNjY2IDEuMDExLS4yNTItLjI1MiAxLjAxYy0uMTgyLjcyMy0uNTU1IDEuMzgzLTEuMDggMS45MDhzLTEuMTg2Ljg5OC0xLjkwOCAxLjA4bC0xLjAxLjI1Mi4yNTItMS4wMWMuMTgyLS43MjMuNTU1LTEuMzgzIDEuMDgtMS45MDhzMS4xODYtLjg5OCAxLjkwNy0xLjA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNSAxNWgxM2MyLjc1NyAwIDUtMi4yNDMgNS01cy0yLjI0My01LTUtNWMtLjQzOCAwLS44NzcuMDYxLTEuMzAzLjE4LS43NjYtMi40NTUtMy4wMjMtNC4xOC01LjY5Ny00LjE4LTMuMzA5IDAtNiAyLjY5MS02IDYtMi4yMDYgMC00IDEuNzk0LTQgNHMxLjc5NCA0IDQgNHptMC02Yy4yNyAwIC41MzMuMDU0Ljc4My4xNi4zNTIuMTQ3Ljc1Ni4wODUgMS4wNDMtLjE2My4yODgtLjI0OC40MTEtLjYzOS4zMTctMS4wMDctLjA5OC0uMzc3LS4xNDMtLjY5Mi0uMTQzLS45OSAwLTIuMjA2IDEuNzk0LTQgNC00IDIuMDgxIDAgMy43ODQgMS41NzQgMy45NjEgMy42NjIuMDI4LjM0NS4yMzMuNjQ4LjU0LjgwNi4zMDguMTU4LjY3NS4xNDUuOTctLjAzMi40ODMtLjI5Ljk5Ny0uNDM2IDEuNTI5LS40MzYgMS42NTQgMCAzIDEuMzQ2IDMgM3MtMS4zNDYgMy0zIDNoLTEzYy0xLjEwMyAwLTItLjg5Ny0yLTJzLjg5Ny0yIDItMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",FNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MSw1N0g0OC40MTRsLS44NzktLjg3OWE4LjU4Nyw4LjU4NywwLDAsMS0yLjQ3MS01LjExMkM1MS4xNTMsNDguNTg3LDU1LjYwNyw0MS45MzQsNTUuOTU3LDM0SDU2YTEsMSwwLDAsMCwxLTFWMzBhMSwxLDAsMCwwLTEtMUg1Mi40NjRhMTkuNTgyLDE5LjU4MiwwLDAsMCwxLjY3My00SDU3YTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMS0xSDQ2Ljg0MUExMi43LDEyLjcsMCwwLDAsMzMuMTU5LDNIMjNhMSwxLDAsMCwwLTEsMVYyNGExLDEsMCwwLDAsMSwxaDIuODYzYTE5LjU4MiwxOS41ODIsMCwwLDAsMS42NzMsNEgyNGExLDEsMCwwLDAtMSwxdjNhMSwxLDAsMCwwLDEsMWguMDQzYy4zNSw3LjkzNCw0LjgsMTQuNTg3LDEwLjg5MywxNy4wMDlhOC41ODcsOC41ODcsMCwwLDEtMi40NzEsNS4xMTJMMzEuNTg2LDU3SDI5YTEsMSwwLDAsMC0xLDF2NGExLDEsMCwwLDAsMSwxSDUxYTEsMSwwLDAsMCwxLTFWNThBMSwxLDAsMCwwLDUxLDU3Wk01Niw1VjIzSDU0LjYxMUEyMS40NDcsMjEuNDQ3LDAsMCwwLDU1LDE5LDE5LjQ5MywxOS40OTMsMCwwLDAsNDkuNDA3LDVaTTI0LDIzVjVoNi41OTNBMTkuNDkzLDE5LjQ5MywwLDAsMCwyNSwxOWEyMS40NDcsMjEuNDQ3LDAsMCwwLC4zODksNFptMy00YzAtOC44MjIsNS44MzItMTYsMTMtMTZzMTMsNy4xNzgsMTMsMTZhMTguNDA3LDE4LjQwNywwLDAsMS0yLjg3MiwxMEg0Ny42ODJBMTYsMTYsMCwwLDAsNTEsMTljMC03LjcyLTQuOTM1LTE0LTExLTE0UzI5LDExLjI4LDI5LDE5YTE2LDE2LDAsMCwwLDMuMzE4LDEwSDI5Ljg3MkExOC40MDcsMTguNDA3LDAsMCwxLDI3LDE5Wm04LjA2MSwxMEExMy4zMDgsMTMuMzA4LDAsMCwxLDMxLDE5YzAtNi42MTcsNC4wMzctMTIsOS0xMnM5LDUuMzgzLDksMTJhMTMuMzA4LDEzLjMwOCwwLDAsMS00LjA2MSwxMFpNMjUsMzFINTV2MUgyNVptMS4wNDIsM0g1My45NThDNTMuNTI4LDQyLjkwOCw0Ny40NDIsNTAsNDAsNTBTMjYuNDcyLDQyLjkwOCwyNi4wNDIsMzRaTTM2Ljg2NCw1MS42MjlhMTMuNDQsMTMuNDQsMCwwLDAsNi4yNzIsMEExMC41MzksMTAuNTM5LDAsMCwwLDQ1LjYzNiw1N0gzNC4zNjRBMTAuNTM5LDEwLjUzOSwwLDAsMCwzNi44NjQsNTEuNjI5Wk01MCw2MUgzMFY1OUg1MFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzLDU3aC0uMDhBNy4wMSw3LjAxLDAsMCwwLDE5LDUxLjY4NVY0OGExLDEsMCwwLDAtMS0xSDE3VjI2LjgxNmEzLDMsMCwxLDAtMiwwVjQ3SDE0YTEsMSwwLDAsMC0xLDF2My42ODVBNy4wMSw3LjAxLDAsMCwwLDkuMDgsNTdIOWEzLDMsMCwwLDAsMCw2SDIzYTMsMywwLDAsMCwwLTZaTTE2LDIzYTEsMSwwLDEsMS0xLDFBMSwxLDAsMCwxLDE2LDIzWk0xNSw0OWgydjIuMDhhNi4yOSw2LjI5LDAsMCwwLTIsMFptMSw0YTUuMDA2LDUuMDA2LDAsMCwxLDUsNUgxMUE1LjAwNiw1LjAwNiwwLDAsMSwxNiw1M1ptNyw4SDlhMSwxLDAsMCwxLDAtMiwxLDEsMCwwLDAsMSwxSDIyYTEsMSwwLDAsMCwxLTEsMSwxLDAsMCwxLDAsMloiLz4NCiAgICAgICAgPHBhdGggZD0iTTgsMTVhMSwxLDAsMCwwLDEtMSw1LjAwNiw1LjAwNiwwLDAsMSw1LTUsMSwxLDAsMCwwLDAtMkE1LjAwNiw1LjAwNiwwLDAsMSw5LDIsMSwxLDAsMCwwLDcsMiw1LjAwNiw1LjAwNiwwLDAsMSwyLDcsMSwxLDAsMCwwLDIsOWE1LjAwNiw1LjAwNiwwLDAsMSw1LDVBMSwxLDAsMCwwLDgsMTVaTTUuNiw4QTcuMDY2LDcuMDY2LDAsMCwwLDgsNS42LDcuMDY2LDcuMDY2LDAsMCwwLDEwLjQsOCw3LjA2Niw3LjA2NiwwLDAsMCw4LDEwLjQsNy4wNjYsNy4wNjYsMCwwLDAsNS42LDhaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNCwxMWEzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMiwzLDMsMCwwLDEtMy0zLDEsMSwwLDAsMC0yLDBabTIsNGE1LjAxNyw1LjAxNywwLDAsMC0xLDEsNS4wMTcsNS4wMTcsMCwwLDAtMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEtMUE1LjAxNyw1LjAxNywwLDAsMCwxNiwxNVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTYyLDQ4YTMsMywwLDAsMS0zLTMsMSwxLDAsMCwwLTIsMCwzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMlptLTQsMmE1LjAxNyw1LjAxNywwLDAsMC0xLTEsNS4wMTcsNS4wMTcsMCwwLDAsMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEsMUE1LjAxNyw1LjAxNywwLDAsMCw1OCw1MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",HNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUwOSA1MDkiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM1OS4yIDB2ODkuOGgtODkuODAxdjg5LjhoLTg5Ljh2ODkuOGgtODkuNzk5djg5LjhoLTg5Ljh2MTQ5LjhoNTA5di01MDl6bTExOS44IDQ3OWgtNDQ5di04OS44aDg5Ljh2LTg5LjhoODkuOHYtODkuOGg4OS44di04OS44aDg5Ljh2LTg5LjhoODkuOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTY4LjQ0OCAxNzYuOTU2IDk0LjA0MS05NC4wNC0zLjYyOSA0My4wNjYgMjkuODk1IDIuNTE5IDguNTYyLTEwMS42MjYtMTAxLjYyNyA4LjU2MiAyLjUxOCAyOS44OTQgNDMuMDY4LTMuNjI4LTk0LjA0MSA5NC4wNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",VNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yMzguOTMzLDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjc2LjhjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzVjQyLjY2Nw0KCQkJQzI0Ny40NjcsMzcuOTU2LDI0My42NDQsMzQuMTMzLDIzOC45MzMsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDc3Ljg2NywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1Y3Ni44YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM1M0ODYuNCw4MS41MSw0ODYuNCw3Ni44VjQyLjY2Nw0KCQkJQzQ4Ni40LDM3Ljk1Niw0ODIuNTc3LDM0LjEzMyw0NzcuODY3LDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTE3OS4yLDBIOC41MzNDMy44MjMsMCwwLDMuODIzLDAsOC41MzN2NDk0LjkzM0MwLDUwOC4xNzcsMy44MjMsNTEyLDguNTMzLDUxMkgxNzkuMmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVY4LjUzM0MxODcuNzMzLDMuODIzLDE4My45MSwwLDE3OS4yLDB6IE0xNzAuNjY3LDQ5NC45MzNoLTE1My42VjE3LjA2N2gxNTMuNlY0OTQuOTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTAzLjQ2NywzNTguNEgxNzkuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjEzNi41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDMyNC4yNjcNCgkJCWM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzNWMzY2LjkzM0M1MTIsMzYyLjIyMyw1MDguMTc3LDM1OC40LDUwMy40NjcsMzU4LjR6IE00OTQuOTMzLDQ5NC45MzNoLTMwNy4yVjM3NS40NjdoMzA3LjINCgkJCVY0OTQuOTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTAzLjQ2NywwSDE3OS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MzQuMTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMjQuMjY3DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjguNTMzQzUxMiwzLjgyMyw1MDguMTc3LDAsNTAzLjQ2NywweiBNNDk0LjkzMywzNC4xMzNoLTMwNy4yVjE3LjA2N2gzMDcuMlYzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMzYuNTMzLDI0Ny40NjdoLTI1LjZjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gyNS42YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzMw0KCQkJUzE0MS4yNDQsMjQ3LjQ2NywxMzYuNTMzLDI0Ny40Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTAuOTMzLDI0Ny40NjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YyNS42YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1YyNTYNCgkJCUMxMTkuNDY3LDI1MS4yOSwxMTUuNjQ0LDI0Ny40NjcsMTEwLjkzMywyNDcuNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY2LjkzMyw0MTguMTMzaC01MS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoNTEuMmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVMzNzEuNjQ0LDQxOC4xMzMsMzY2LjkzMyw0MTguMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQxLjMzMyw0MTguMTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MTcuMDY3YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzMw0KCQkJdi0xNy4wNjdDMzQ5Ljg2Nyw0MjEuOTU2LDM0Ni4wNDQsNDE4LjEzMywzNDEuMzMzLDQxOC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTAuMTMzLDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDMjk4LjY2NywzNy45NTYsMjk0Ljg0NCwzNC4xMzMsMjkwLjEzMywzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTAuMTMzLDExOS40NjdjLTQ1LjkzNSwwLTc2LjgsMTcuMTQzLTc2LjgsNDIuNjY3VjE3OS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gxNy4wNjd2NzYuOA0KCQkJYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOGM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhIMzU4LjRjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjcNCgkJCUMzNjYuOTMzLDEzNi42MSwzMzYuMDY4LDExOS40NjcsMjkwLjEzMywxMTkuNDY3eiBNMzQ5Ljg2NywxNzAuNjY3SDMzMi44Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNWMjU2SDI1NnYtNzYuOA0KCQkJYzAtNC43MS0zLjgyMy04LjUzMy04LjUzMy04LjUzM0gyMzAuNHYtOC41MzNjMC0xMi40MDcsMjAuOTMyLTI1LjYsNTkuNzMzLTI1LjZzNTkuNzMzLDEzLjE5Myw1OS43MzMsMjUuNlYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQ5Ljg2NywxMTkuNDY3Yy0xMS4zNzUsMC0yMi4wNDIsMS4wNzUtMzEuNjkzLDMuMTkxYy0zLjkxNywwLjg2Mi02LjcwNyw0LjMyNi02LjcwNyw4LjMzNw0KCQkJYzAsNC4wMTEsMi43OSw3LjQ3NSw2LjcwNyw4LjMzN2MxOS4yNTEsNC4yMTUsMzEuNjkzLDEzLjE2NywzMS42OTMsMjIuODAxdjguNTMzSDMzMi44Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2ODUuMzMzDQoJCQljMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDU5LjczM2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhoMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDNDI2LjY2NywxMzYuNjEsMzk1LjgwMiwxMTkuNDY3LDM0OS44NjcsMTE5LjQ2N3ogTTQwOS42LDE3MC42NjdoLTE3LjA2N2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NmgtNDIuNjY3di02OC4yNjcNCgkJCUgzNTguNGM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTE3LjA2N2MwLTkuODEzLTQuNzM2LTE4LjU3Ny0xMy4zOC0yNS41NTdjMzYuNDM3LDAuODAyLDU2LjA0NywxMy41NDIsNTYuMDQ3LDI1LjU1Nw0KCQkJVjE3MC42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MDkuNiwxMTkuNDY3Yy0xMS4zNzUsMC0yMi4wNDIsMS4wNzUtMzEuNjkzLDMuMTkxYy0zLjkxNywwLjg2Mi02LjcwNyw0LjMyNi02LjcwNyw4LjMzNw0KCQkJYzAsNC4wMTEsMi43OSw3LjQ3NSw2LjcwNyw4LjMzN2MxOS4yNTEsNC4yMTUsMzEuNjkzLDEzLjE2NywzMS42OTMsMjIuODAxdjguNTMzaC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y4NS4zMzMNCgkJCWMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoNTkuNzMzYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNzYuOGgxNy4wNjdjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjcNCgkJCUM0ODYuNCwxMzYuNjEsNDU1LjUzNSwxMTkuNDY3LDQwOS42LDExOS40Njd6IE00NjkuMzMzLDE3MC42NjdoLTE3LjA2N2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NmgtNDIuNjY3di02OC4yNjcNCgkJCWgxNy4wNjdjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjdjMC05LjgxMy00LjczNi0xOC41NzctMTMuMzgtMjUuNTU3YzM2LjQzNywwLjgwMiw1Ni4wNDcsMTMuNTQyLDU2LjA0NywyNS41NTcNCgkJCVYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMyw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVMzMDQuMjQ3LDg1LjMzMywyOTAuMTMzLDg1LjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM1OC40LDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDMzY2LjkzMywzNy45NTYsMzYzLjExLDM0LjEzMywzNTguNCwzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTguNCw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVMzNzIuNTE0LDg1LjMzMywzNTguNCw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MjYuNjY3LDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDNDM1LjIsMzcuOTU2LDQzMS4zNzcsMzQuMTMzLDQyNi42NjcsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI2LjY2Nyw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVM0NDAuNzgxLDg1LjMzMyw0MjYuNjY3LDg1LjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ4Ni40LDMyNC4yNjdIMTc5LjJjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YzNC4xMzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDMwNy4yDQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjMzMi44QzQ5NC45MzMsMzI4LjA5LDQ5MS4xMSwzMjQuMjY3LDQ4Ni40LDMyNC4yNjd6IE00NzcuODY3LDM1OC40SDE4Ny43MzN2LTE3LjA2N2gyOTAuMTMzDQoJCQlWMzU4LjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NjkuMzMzLDM5Mi41MzNoLTI1NmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjY4LjI2N2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjU2DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi02OC4yNjdDNDc3Ljg2NywzOTYuMzU2LDQ3NC4wNDQsMzkyLjUzMyw0NjkuMzMzLDM5Mi41MzN6IE00NjAuOCw0NjAuOEgyMjEuODY3di01MS4ySDQ2MC44DQoJCQlWNDYwLjh6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",ZNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01NS43NTggNjEtMS41NjktNS41N2M0LjA1My0yLjIwNCA2LjgxMS02LjUwMSA2LjgxMS0xMS40M3YtMWMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0ydi0xMGMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0yaC0yNmMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJ2MTBjLTEuMTAzIDAtMiAuODk3LTIgMnYyYzAgMS4xMDMuODk3IDIgMiAydjFjMCA0LjkyOSAyLjc1OCA5LjIyNiA2LjgxMSAxMS40M2wtMS41NjkgNS41N2gtMTMuMzQzYy0uNDY1LTIuMjc5LTIuNDg0LTQtNC44OTktNGgtMXYtOS4wMDNjNC42OTMtMS45NjMgOC02LjYgOC0xMS45OTd2LTdoLTE4di00aDR2Mmgydi0yYzAtMS4xMDMtLjg5Ny0yLTItMmgtNi0xLTFjLTEuMTAzIDAtMiAuODk3LTIgMnY0aC0ydjdjMCA1LjM5NyAzLjMwNyAxMC4wMzQgOCAxMS45OTd2OS4wMDNoLTFjLTIuNDE0IDAtNC40MzQgMS43MjEtNC44OTkgNGgtNS4xMDF2Mmg2NHYtMnptLTIwLjc1OS0zOGgyNi4wMDF2MmgtMjZ6bTIuMDAxIDhoNHYtMmgtNHYtMmgyMnYxMGgtMjJ6bS0yLjAwMSA4aDI2LjAwMXYyaC0yNnptMi4wMDEgNXYtMWgyMnYxYzAgNi4wNjUtNC45MzUgMTEtMTEgMTFzLTExLTQuOTM1LTExLTExem02LjY2MSAxMi4yNGMxLjM2LjQ4MyAyLjgxNi43NiA0LjMzOS43NnMyLjk3OS0uMjc3IDQuMzM5LS43NmwxLjM0IDQuNzZoLTExLjM1OHptLTM2LjY2MS0zMS4yNGgxIDF2NGgtMnptMjAgNnYyaC0yMnYtMnptLTIyIDV2LTFoMjJ2MWMwIDYuMDY1LTQuOTM1IDExLTExIDExcy0xMS00LjkzNS0xMS0xMXptOCAxMi42MzdjLjk2NS4yMjkgMS45NjYuMzYzIDMgLjM2M3MyLjAzNS0uMTM0IDMtLjM2M3Y4LjM2M2gtNnptLTMgMTAuMzYzaDEyYzEuMzAyIDAgMi40MDIuODM5IDIuODE2IDJoLTE3LjYzMmMuNDE0LTEuMTYxIDEuNTE0LTIgMi44MTYtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQgMjFoMjRjMS42NTQgMCAzLTEuMzQ2IDMtM3YtMTRjMC0xLjY1NC0xLjM0Ni0zLTMtM2gtMjRjLTEuNjU0IDAtMyAxLjM0Ni0zIDN2MTRjMCAxLjY1NCAxLjM0NiAzIDMgM3ptLTEtMTdjMC0uNTUxLjQ0OC0xIDEtMWgyNGMuNTUyIDAgMSAuNDQ5IDEgMXYxNGMwIC41NTEtLjQ0OCAxLTEgMWgtMjRjLS41NTIgMC0xLS40NDktMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAgMi41MTVoMnYxNi45NzFoLTJ6IiB0cmFuc2Zvcm09Im1hdHJpeCguNzA3IC0uNzA3IC43MDcgLjcwNyAtNC41NTYgMTEpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMCAyLjUxNWgydjE2Ljk3MWgtMnoiIHRyYW5zZm9ybT0ibWF0cml4KC43MDcgLS43MDcgLjcwNyAuNzA3IC0xLjYyNyAxOC4wNzEpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNSA5aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1IDEzaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDExaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDExaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDNoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDUgN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQzIDVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTUgMTNoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTUgMTdoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMTVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTMgMTVoMnYyaC0yeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",XNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MSw1N0g0OC40MTRsLS44NzktLjg3OWE4LjU4Nyw4LjU4NywwLDAsMS0yLjQ3MS01LjExMkM1MS4xNTMsNDguNTg3LDU1LjYwNyw0MS45MzQsNTUuOTU3LDM0SDU2YTEsMSwwLDAsMCwxLTFWMzBhMSwxLDAsMCwwLTEtMUg1Mi40NjRhMTkuNTgyLDE5LjU4MiwwLDAsMCwxLjY3My00SDU3YTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMS0xSDQ2Ljg0MUExMi43LDEyLjcsMCwwLDAsMzMuMTU5LDNIMjNhMSwxLDAsMCwwLTEsMVYyNGExLDEsMCwwLDAsMSwxaDIuODYzYTE5LjU4MiwxOS41ODIsMCwwLDAsMS42NzMsNEgyNGExLDEsMCwwLDAtMSwxdjNhMSwxLDAsMCwwLDEsMWguMDQzYy4zNSw3LjkzNCw0LjgsMTQuNTg3LDEwLjg5MywxNy4wMDlhOC41ODcsOC41ODcsMCwwLDEtMi40NzEsNS4xMTJMMzEuNTg2LDU3SDI5YTEsMSwwLDAsMC0xLDF2NGExLDEsMCwwLDAsMSwxSDUxYTEsMSwwLDAsMCwxLTFWNThBMSwxLDAsMCwwLDUxLDU3Wk01Niw1VjIzSDU0LjYxMUEyMS40NDcsMjEuNDQ3LDAsMCwwLDU1LDE5LDE5LjQ5MywxOS40OTMsMCwwLDAsNDkuNDA3LDVaTTI0LDIzVjVoNi41OTNBMTkuNDkzLDE5LjQ5MywwLDAsMCwyNSwxOWEyMS40NDcsMjEuNDQ3LDAsMCwwLC4zODksNFptMy00YzAtOC44MjIsNS44MzItMTYsMTMtMTZzMTMsNy4xNzgsMTMsMTZhMTguNDA3LDE4LjQwNywwLDAsMS0yLjg3MiwxMEg0Ny42ODJBMTYsMTYsMCwwLDAsNTEsMTljMC03LjcyLTQuOTM1LTE0LTExLTE0UzI5LDExLjI4LDI5LDE5YTE2LDE2LDAsMCwwLDMuMzE4LDEwSDI5Ljg3MkExOC40MDcsMTguNDA3LDAsMCwxLDI3LDE5Wm04LjA2MSwxMEExMy4zMDgsMTMuMzA4LDAsMCwxLDMxLDE5YzAtNi42MTcsNC4wMzctMTIsOS0xMnM5LDUuMzgzLDksMTJhMTMuMzA4LDEzLjMwOCwwLDAsMS00LjA2MSwxMFpNMjUsMzFINTV2MUgyNVptMS4wNDIsM0g1My45NThDNTMuNTI4LDQyLjkwOCw0Ny40NDIsNTAsNDAsNTBTMjYuNDcyLDQyLjkwOCwyNi4wNDIsMzRaTTM2Ljg2NCw1MS42MjlhMTMuNDQsMTMuNDQsMCwwLDAsNi4yNzIsMEExMC41MzksMTAuNTM5LDAsMCwwLDQ1LjYzNiw1N0gzNC4zNjRBMTAuNTM5LDEwLjUzOSwwLDAsMCwzNi44NjQsNTEuNjI5Wk01MCw2MUgzMFY1OUg1MFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzLDU3aC0uMDhBNy4wMSw3LjAxLDAsMCwwLDE5LDUxLjY4NVY0OGExLDEsMCwwLDAtMS0xSDE3VjI2LjgxNmEzLDMsMCwxLDAtMiwwVjQ3SDE0YTEsMSwwLDAsMC0xLDF2My42ODVBNy4wMSw3LjAxLDAsMCwwLDkuMDgsNTdIOWEzLDMsMCwwLDAsMCw2SDIzYTMsMywwLDAsMCwwLTZaTTE2LDIzYTEsMSwwLDEsMS0xLDFBMSwxLDAsMCwxLDE2LDIzWk0xNSw0OWgydjIuMDhhNi4yOSw2LjI5LDAsMCwwLTIsMFptMSw0YTUuMDA2LDUuMDA2LDAsMCwxLDUsNUgxMUE1LjAwNiw1LjAwNiwwLDAsMSwxNiw1M1ptNyw4SDlhMSwxLDAsMCwxLDAtMiwxLDEsMCwwLDAsMSwxSDIyYTEsMSwwLDAsMCwxLTEsMSwxLDAsMCwxLDAsMloiLz4NCiAgICAgICAgPHBhdGggZD0iTTgsMTVhMSwxLDAsMCwwLDEtMSw1LjAwNiw1LjAwNiwwLDAsMSw1LTUsMSwxLDAsMCwwLDAtMkE1LjAwNiw1LjAwNiwwLDAsMSw5LDIsMSwxLDAsMCwwLDcsMiw1LjAwNiw1LjAwNiwwLDAsMSwyLDcsMSwxLDAsMCwwLDIsOWE1LjAwNiw1LjAwNiwwLDAsMSw1LDVBMSwxLDAsMCwwLDgsMTVaTTUuNiw4QTcuMDY2LDcuMDY2LDAsMCwwLDgsNS42LDcuMDY2LDcuMDY2LDAsMCwwLDEwLjQsOCw3LjA2Niw3LjA2NiwwLDAsMCw4LDEwLjQsNy4wNjYsNy4wNjYsMCwwLDAsNS42LDhaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNCwxMWEzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMiwzLDMsMCwwLDEtMy0zLDEsMSwwLDAsMC0yLDBabTIsNGE1LjAxNyw1LjAxNywwLDAsMC0xLDEsNS4wMTcsNS4wMTcsMCwwLDAtMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEtMUE1LjAxNyw1LjAxNywwLDAsMCwxNiwxNVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTYyLDQ4YTMsMywwLDAsMS0zLTMsMSwxLDAsMCwwLTIsMCwzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMlptLTQsMmE1LjAxNyw1LjAxNywwLDAsMC0xLTEsNS4wMTcsNS4wMTcsMCwwLDAsMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEsMUE1LjAxNyw1LjAxNywwLDAsMCw1OCw1MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",KNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNMjM4LjkzMywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1Y3Ni44YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1Y0Mi42NjcNCgkJCUMyNDcuNDY3LDM3Ljk1NiwyNDMuNjQ0LDM0LjEzMywyMzguOTMzLDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ3Ny44NjcsMzQuMTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNWNzYuOGMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNTNDg2LjQsODEuNTEsNDg2LjQsNzYuOFY0Mi42NjcNCgkJCUM0ODYuNCwzNy45NTYsNDgyLjU3NywzNC4xMzMsNDc3Ljg2NywzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNzkuMiwwSDguNTMzQzMuODIzLDAsMCwzLjgyMywwLDguNTMzdjQ5NC45MzNDMCw1MDguMTc3LDMuODIzLDUxMiw4LjUzMyw1MTJIMTc5LjJjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzDQoJCQlWOC41MzNDMTg3LjczMywzLjgyMywxODMuOTEsMCwxNzkuMiwweiBNMTcwLjY2Nyw0OTQuOTMzaC0xNTMuNlYxNy4wNjdoMTUzLjZWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMy40NjcsMzU4LjRIMTc5LjJjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YxMzYuNTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMjQuMjY3DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjM2Ni45MzNDNTEyLDM2Mi4yMjMsNTA4LjE3NywzNTguNCw1MDMuNDY3LDM1OC40eiBNNDk0LjkzMyw0OTQuOTMzaC0zMDcuMlYzNzUuNDY3aDMwNy4yDQoJCQlWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMy40NjcsMEgxNzkuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjM0LjEzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMzI0LjI2Nw0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1Y4LjUzM0M1MTIsMy44MjMsNTA4LjE3NywwLDUwMy40NjcsMHogTTQ5NC45MzMsMzQuMTMzaC0zMDcuMlYxNy4wNjdoMzA3LjJWMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTM2LjUzMywyNDcuNDY3aC0yNS42Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjUuNmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVMxNDEuMjQ0LDI0Ny40NjcsMTM2LjUzMywyNDcuNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTEwLjkzMywyNDcuNDY3Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MjUuNmMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNzOC41MzMtMy44MjMsOC41MzMtOC41MzNWMjU2DQoJCQlDMTE5LjQ2NywyNTEuMjksMTE1LjY0NCwyNDcuNDY3LDExMC45MzMsMjQ3LjQ2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Ni45MzMsNDE4LjEzM2gtNTEuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzczMuODIzLDguNTMzLDguNTMzLDguNTMzaDUxLjJjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzDQoJCQlTMzcxLjY0NCw0MTguMTMzLDM2Ni45MzMsNDE4LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM0MS4zMzMsNDE4LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjE3LjA2N2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNzOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCXYtMTcuMDY3QzM0OS44NjcsNDIxLjk1NiwzNDYuMDQ0LDQxOC4xMzMsMzQxLjMzMyw0MTguMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzI5OC42NjcsMzcuOTU2LDI5NC44NDQsMzQuMTMzLDI5MC4xMzMsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMywxMTkuNDY3Yy00NS45MzUsMC03Ni44LDE3LjE0My03Ni44LDQyLjY2N1YxNzkuMmMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMTcuMDY3djc2LjgNCgkJCWMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNIMzMyLjhjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi03Ni44SDM1OC40YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDMzY2LjkzMywxMzYuNjEsMzM2LjA2OCwxMTkuNDY3LDI5MC4xMzMsMTE5LjQ2N3ogTTM0OS44NjcsMTcwLjY2N0gzMzIuOGMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NkgyNTZ2LTc2LjgNCgkJCWMwLTQuNzEtMy44MjMtOC41MzMtOC41MzMtOC41MzNIMjMwLjR2LTguNTMzYzAtMTIuNDA3LDIwLjkzMi0yNS42LDU5LjczMy0yNS42czU5LjczMywxMy4xOTMsNTkuNzMzLDI1LjZWMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM0OS44NjcsMTE5LjQ2N2MtMTEuMzc1LDAtMjIuMDQyLDEuMDc1LTMxLjY5MywzLjE5MWMtMy45MTcsMC44NjItNi43MDcsNC4zMjYtNi43MDcsOC4zMzcNCgkJCWMwLDQuMDExLDIuNzksNy40NzUsNi43MDcsOC4zMzdjMTkuMjUxLDQuMjE1LDMxLjY5MywxMy4xNjcsMzEuNjkzLDIyLjgwMXY4LjUzM0gzMzIuOGMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjg1LjMzMw0KCQkJYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzNjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi03Ni44aDE3LjA2N2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTE3LjA2Nw0KCQkJQzQyNi42NjcsMTM2LjYxLDM5NS44MDIsMTE5LjQ2NywzNDkuODY3LDExOS40Njd6IE00MDkuNiwxNzAuNjY3aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1YyNTZoLTQyLjY2N3YtNjguMjY3DQoJCQlIMzU4LjRjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjdjMC05LjgxMy00LjczNi0xOC41NzctMTMuMzgtMjUuNTU3YzM2LjQzNywwLjgwMiw1Ni4wNDcsMTMuNTQyLDU2LjA0NywyNS41NTcNCgkJCVYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDA5LjYsMTE5LjQ2N2MtMTEuMzc1LDAtMjIuMDQyLDEuMDc1LTMxLjY5MywzLjE5MWMtMy45MTcsMC44NjItNi43MDcsNC4zMjYtNi43MDcsOC4zMzcNCgkJCWMwLDQuMDExLDIuNzksNy40NzUsNi43MDcsOC4zMzdjMTkuMjUxLDQuMjE1LDMxLjY5MywxMy4xNjcsMzEuNjkzLDIyLjgwMXY4LjUzM2gtMTcuMDY3Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2ODUuMzMzDQoJCQljMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDU5LjczM2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhoMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDNDg2LjQsMTM2LjYxLDQ1NS41MzUsMTE5LjQ2Nyw0MDkuNiwxMTkuNDY3eiBNNDY5LjMzMywxNzAuNjY3aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1YyNTZoLTQyLjY2N3YtNjguMjY3DQoJCQloMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3YzAtOS44MTMtNC43MzYtMTguNTc3LTEzLjM4LTI1LjU1N2MzNi40MzcsMC44MDIsNTYuMDQ3LDEzLjU0Miw1Ni4wNDcsMjUuNTU3DQoJCQlWMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTI5MC4xMzMsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTMzA0LjI0Nyw4NS4zMzMsMjkwLjEzMyw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTguNCwzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzM2Ni45MzMsMzcuOTU2LDM2My4xMSwzNC4xMzMsMzU4LjQsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzU4LjQsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTMzcyLjUxNCw4NS4zMzMsMzU4LjQsODUuMzMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI2LjY2NywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzQzNS4yLDM3Ljk1Niw0MzEuMzc3LDM0LjEzMyw0MjYuNjY3LDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQyNi42NjcsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTNDQwLjc4MSw4NS4zMzMsNDI2LjY2Nyw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00ODYuNCwzMjQuMjY3SDE3OS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MzQuMTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMDcuMg0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1YzMzIuOEM0OTQuOTMzLDMyOC4wOSw0OTEuMTEsMzI0LjI2Nyw0ODYuNCwzMjQuMjY3eiBNNDc3Ljg2NywzNTguNEgxODcuNzMzdi0xNy4wNjdoMjkwLjEzMw0KCQkJVjM1OC40eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY5LjMzMywzOTIuNTMzaC0yNTZjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y2OC4yNjdjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDI1Ng0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNjguMjY3QzQ3Ny44NjcsMzk2LjM1Niw0NzQuMDQ0LDM5Mi41MzMsNDY5LjMzMywzOTIuNTMzeiBNNDYwLjgsNDYwLjhIMjIxLjg2N3YtNTEuMkg0NjAuOA0KCQkJVjQ2MC44eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",qNe="PHN2ZyB2aWV3Qm94PSIwIDAgMzAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTk0LjgzNiA1OGgtMTE5LjMyOGMtMjQuNDQ1IDAtNDQuMzM2IDE5Ljg4OS00NC4zMzYgNDQuMzM2djExOS4zMjhjMCAyNC40NDcgMTkuODkxIDQ0LjMzNiA0NC4zMzYgNDQuMzM2aDExOS4zMjhjMjQuNDQ1IDAgNDQuMzM2LTE5Ljg4OSA0NC4zMzYtNDQuMzM2di0xMTkuMzI4YzAtMjQuNDQ3LTE5Ljg5MS00NC4zMzYtNDQuMzM2LTQ0LjMzNnptMzYuMzM2IDE2My42NjRjMCAyMC4wMzUtMTYuMzAxIDM2LjMzNi0zNi4zMzYgMzYuMzM2aC0xMTkuMzI4Yy0yMC4wMzUgMC0zNi4zMzYtMTYuMzAxLTM2LjMzNi0zNi4zMzZ2LTExOS4zMjhjMC0yMC4wMzUgMTYuMzAxLTM2LjMzNiAzNi4zMzYtMzYuMzM2aDExOS4zMjhjMjAuMDM1IDAgMzYuMzM2IDE2LjMwMSAzNi4zMzYgMzYuMzM2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM1LjE3MiA3NGMtNDkuNjI1IDAtOTAgNDAuMzczLTkwIDkwczQwLjM3NSA5MCA5MCA5MCA5MC00MC4zNzMgOTAtOTAtNDAuMzc1LTkwLTkwLTkwem0wIDE3MmMtNDUuMjE1IDAtODItMzYuNzg1LTgyLTgyczM2Ljc4NS04MiA4Mi04MiA4MiAzNi43ODUgODIgODItMzYuNzg1IDgyLTgyIDgyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM1LjE3MiA5MGMtNDAuODA1IDAtNzQgMzMuMTk1LTc0IDc0czMzLjE5NSA3NCA3NCA3NCA3NC0zMy4xOTUgNzQtNzQtMzMuMTk1LTc0LTc0LTc0em0wIDE0MGMtMzYuMzkxIDAtNjYtMjkuNjA3LTY2LTY2czI5LjYwOS02NiA2Ni02NiA2NiAyOS42MDcgNjYgNjYtMjkuNjEgNjYtNjYgNjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im03OS4xNzIgMTM4djMyYzAgMi4yMDkgMS43ODkgNCA0IDRoMTA0YzIuMjExIDAgNC0xLjc5MSA0LTR2LTMyYzAtMi4yMDktMS43ODktNC00LTRoLTEwNGMtMi4yMTEgMC00IDEuNzkxLTQgNHptOCA0aDk2djI0aC05NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExNy4xNzIgMTI4LjUzYzIuNTAxIDAgNC41My0yLjAyOCA0LjUzLTQuNTNzLTIuMDI4LTQuNTMtNC41My00LjUzLTQuNTMgMi4wMjgtNC41MyA0LjUzYzAgMi41MDEgMi4wMjggNC41MyA0LjUzIDQuNTN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjkuMTcyIDEyOC41M2MyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzcy0yLjAyOC00LjUzLTQuNTMtNC41My00LjUzIDIuMDI4LTQuNTMgNC41M2MwIDIuNTAxIDIuMDI4IDQuNTMgNC41MyA0LjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ1LjE3MiAxNTEuNDdjLTIuNTAyIDAtNC41MyAyLjAyOC00LjUzIDQuNTMgMCAyLjUwMSAyLjAyOCA0LjUzIDQuNTMgNC41MyAyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzLS4wMDEtMi41MDItMi4wMjktNC41My00LjUzLTQuNTN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDEuMTcyIDEyOC41M2MyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzcy0yLjAyOC00LjUzLTQuNTMtNC41My00LjUzIDIuMDI4LTQuNTMgNC41M2MwIDIuNTAxIDIuMDI4IDQuNTMgNC41MyA0LjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUzLjE3MiAxMjguNTNjMi41MDEgMCA0LjUzLTIuMDI4IDQuNTMtNC41M3MtMi4wMjgtNC41My00LjUzLTQuNTMtNC41MyAyLjAyOC00LjUzIDQuNTNjMCAyLjUwMSAyLjAyOCA0LjUzIDQuNTMgNC41M3oiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iMTk5LjE3MiIgY3k9IjM4IiByPSI0Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzkuMTcyIDQ2Yy02LjYxNyAwLTEyIDUuMzgzLTEyIDEyczUuMzgzIDEyIDEyIDEyIDEyLTUuMzgzIDEyLTEyLTUuMzgzLTEyLTEyLTEyem0wIDE2Yy0yLjIwNyAwLTQtMS43OTUtNC00czEuNzkzLTQgNC00IDQgMS43OTUgNCA0LTEuNzkzIDQtNCA0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY0LjgyOCAxMTAgMi44MjgtMi44MjhjMS41NjItMS41NjIgMS41NjItNC4wOTQgMC01LjY1NnMtNC4wOTQtMS41NjItNS42NTYgMGwtMi44MjggMi44MjgtMi44MjgtMi44MjhjLTEuNTYyLTEuNTYyLTQuMDk0LTEuNTYyLTUuNjU2IDBzLTEuNTYyIDQuMDk0IDAgNS42NTZsMi44MjggMi44MjgtMi44MjggMi44MjhjLTEuNTYyIDEuNTYyLTEuNTYyIDQuMDk0IDAgNS42NTYuNzgxLjc4MSAxLjgwNSAxLjE3MiAyLjgyOCAxLjE3MnMyLjA0Ny0uMzkxIDIuODI4LTEuMTcybDIuODI4LTIuODI4IDIuODI4IDIuODI4Yy43ODEuNzgxIDEuODA1IDEuMTcyIDIuODI4IDEuMTcyczIuMDQ3LS4zOTEgMi44MjgtMS4xNzJjMS41NjItMS41NjIgMS41NjItNC4wOTQgMC01LjY1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzOS4xNzIgMTk0aC00LjkzNGw1Ljg1OS05Ljc2OGMxLjEzNy0xLjg5NS41MjMtNC4zNTItMS4zNzEtNS40ODgtMS44OTgtMS4xMzctNC4zNTItLjUyMS01LjQ4OCAxLjM3MWwtOS40OTYgMTUuODI2Yy0uNzQyIDEuMjM2LS43NjIgMi43NzUtLjA1MSA0LjAyOXMyLjAzOSAyLjAyOSAzLjQ4IDIuMDI5aDUuNTI3bC01LjEwNSAxMC4yMTFjLS45ODggMS45NzctLjE4OCA0LjM3OSAxLjc4OSA1LjM2Ny41NzQuMjg3IDEuMTg0LjQyMiAxLjc4NS40MjIgMS40NjkgMCAyLjg3OS0uODA5IDMuNTgyLTIuMjExbDgtMTZjLjYyMS0xLjI0LjU1NS0yLjcxMy0uMTc2LTMuODkzLS43MjktMS4xNzYtMi4wMTQtMS44OTUtMy40MDEtMS44OTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05NS4xNzIgMTQ2Yy0yLjIxMSAwLTQgMS43OTEtNCA0djhjMCAyLjIwOSAxLjc4OSA0IDQgNHM0LTEuNzkxIDQtNHYtOGMwLTIuMjA5LTEuNzg5LTQtNC00eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTA3LjE3MiAxNDZjLTIuMjExIDAtNCAxLjc5MS00IDR2OGMwIDIuMjA5IDEuNzg5IDQgNCA0czQtMS43OTEgNC00di04YzAtMi4yMDktMS43ODktNC00LTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTkuMTcyIDE0NmMtMi4yMTEgMC00IDEuNzkxLTQgNHY4YzAgMi4yMDkgMS43ODkgNCA0IDRzNC0xLjc5MSA0LTR2LThjMC0yLjIwOS0xLjc4OS00LTQtNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzMS4xNzIgMTQ2Yy0yLjIxMSAwLTQgMS43OTEtNCA0djhjMCAyLjIwOSAxLjc4OSA0IDQgNHM0LTEuNzkxIDQtNHYtOGMwLTIuMjA5LTEuNzg5LTQtNC00eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYzLjE3MiAxNDZjLTIuMjExIDAtNCAxLjc5MS00IDR2OGMwIDIuMjA5IDEuNzg5IDQgNCA0czQtMS43OTEgNC00di04YzAtMi4yMDktMS43ODktNC00LTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzUuMTcyIDE0NmMtMi4yMTEgMC00IDEuNzkxLTQgNHY4YzAgMi4yMDkgMS43ODkgNCA0IDRzNC0xLjc5MSA0LTR2LThjMC0yLjIwOS0xLjc4OS00LTQtNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",e0e="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMi41IDUxMi41IiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNC43NSw0MTguNWMtNC4xNDMsMC03LjUsMy4zNTgtNy41LDcuNXY3OC41YzAsOS42NzMsMTUsOS42NzMsMTUsMFY0MjZDNTEyLjI1LDQyMS44NTgsNTA4Ljg5Myw0MTguNSw1MDQuNzUsNDE4LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDQuNzUsMjQ5LjM1NWgtNTguODk0di0yNy4wNDNoMTguMDExYzEwLjk2NCwwLDE5Ljg4My04LjkxOSwxOS44ODMtMTkuODgzVjE5Ljg4NEM0ODMuNzUsOC45Miw0NzQuODMxLDAsNDYzLjg2NywwICAgSDE4NC4wNTljLTEwLjk2NCwwLTE5Ljg4Myw4LjkyLTE5Ljg4MywxOS44ODR2MjYuOTI5YzAsOS42NzMsMTUsOS42NzMsMTUsMFYxOS44ODRjMC0yLjY5MywyLjE5LTQuODg0LDQuODgzLTQuODg0aDI3OS44MDkgICBjMi42OTIsMCw0Ljg4MywyLjE5MSw0Ljg4Myw0Ljg4NHYxNDUuNDI5aC0yMi44OTRWODUuNDA2YzAtMi40NzUtMS4yMjEtNC43OS0zLjI2My02LjE4OGMtMi4wNDEtMS4zOTgtNC42NDEtMS42OTktNi45NDktMC44MDUgICBjLTEuOTYyLDAuNzYxLTQzLjM0LDE3LjY1OS01Mi4xNDYsODYuODk5SDE3OS4xNzZ2LTc5LjVjMC05LjY3My0xNS05LjY3My0xNSwwdjExNi42MTdjMCwxMC45NjQsOC45MTksMTkuODgzLDE5Ljg4MywxOS44ODMgICBoMTAwLjc0NnYyNy4wNDNIMTE0LjUxNmMxNi42MTItMTYuNTk0LDE4LjIzNC00Mi44NzEsMTguMjM0LTY0Ljk0OWMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41aC00MC41di0xNC4xNTkgICBjMjQuMDYsNS4xMTQsNTAuMjg4LTE0LjYxNiw0OS45NjctMzkuNjQ1Yy0wLjA0My0zLjM1Mi0wLjQ1OS02Ljc1OC0zLjU1Ni04LjgwM2MtMTQuMjQ2LTkuNDAzLTMzLjg2Ni01LjQ4NS00Ni40MTEsNC43ODN2LTEzLjUyOSAgIGMyMS40MzMtMTQuNzkzLDIzLjAyNS00OS42MjksMi40MjktNjUuODg5Yy0yLjA3NS0xLjYzOC00LjM3MS0zLjE5Ny02LjgzNC00LjIwMWMtMTAuNTcxLTQuMzE2LTIyLjE5MSwxNC41MTMtMjQuNzEsMjEuNzgxICAgYy01Ljk1MSwxNy4xNzQtMC41NjgsMzYuOTI2LDE0LjExNCw0Ny44MjR2MTMuOTMxYy05LjYyNy03LjgzMy0yMi4yLTExLjY5Ni0zNC40ODMtOS4yMzZjLTUuMDc2LDEuMDE3LTEzLjk3MSwzLjMxNC0xNS4wNzgsOS40NjcgICBjLTQuNzU4LDI2LjQ3NiwyNS4yMzUsNDguNjQzLDQ5LjU2Miw0My41Mzl2MTQuMTM3aC00My41Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41YzAsMjIuMDQ3LDEuMTk2LDQ4LjM1NywxNy44MDYsNjQuOTQ5SDcuNzUgICBjLTQuMTQzLDAtNy41LDMuMzU4LTcuNSw3LjVWNTA0LjVjMCw5LjY3MywxNSw5LjY3MywxNSwwdi0zNWgxMzUuNXYzNWMwLDkuNjczLDE1LDkuNjczLDE1LDB2LTE5MWgyNjUuMjE1ICAgYzAuMDM5LDIuNjEzLDAuMjg5LDE2LjY4OCwwLjMyLDIwLjkwNkgzMDQuMzU2Yy0yOS42NTEsMC01MS42Miw3LjcxOC02NS4yOTgsMjIuOTM5Yy0xNi40MjIsMTguMjc0LTE0LjI2LDQwLjQyNi0xNC4xNTksNDEuMzU5ICAgYzAuNDA4LDMuODExLDMuNjI0LDYuNzAxLDcuNDU3LDYuNzAxaDk2Ljg5NHYxMy41aC0yOS41Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoMjkuNVY0OTdoLTk2Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoMTAwLjgyNSAgIGMwLjgzMiwwLjMxOCwxLjczMSwwLjUsMi42NzUsMC41czEuODQzLTAuMTgyLDIuNjc1LTAuNUg0NDAuMjVjOS42NzMsMCw5LjY3My0xNSwwLTE1aC05NnYtOTEuNTk0aDUwLjEwNiAgIGMxNy4yMTgsMCwyOS42NjQtNC4xNTEsMzguMDUyLTEyLjY5YzE0LjY5OS0xNC45NjUsMTQuMjUxLTQwLjAyMiwxMy42ODQtNzEuNzQ3Yy0wLjA0NC0yLjQ1NC0wLjA4Ny00Ljk1LTAuMTI1LTcuNDdoNTEuMjgzVjM4NCAgIGMwLDkuNjczLDE1LDkuNjczLDE1LDBWMjU2Ljg1NUM1MTIuMjUsMjUyLjcxMyw1MDguODkzLDI0OS4zNTUsNTA0Ljc1LDI0OS4zNTV6IE05Ny4yNzYsMTI4LjQ5NiAgIGM5LjY1Mi02LjEyNCwxOC4wNDktNC42ODEsMjIuNDIxLTMuMTM3Yy0xLjMyLDE1LjU0Ny0yMC4yMjEsMjYuODYtMzQuNjY4LDIxLjk2M0M4NS42MzUsMTQyLjUxMSw4OC4wNzcsMTM0LjMzMiw5Ny4yNzYsMTI4LjQ5NnogICAgTTQ3LjQyNCwxNDQuMDk3Yy02LjM3Mi00LjA0My0xMS43OTItMTEuMDA1LTEyLjQ5My0xOC43NDJjMTUuMDItNS4yOCwzMi42ODMsNi40MTgsMzQuNjQsMjEuOTY3ICAgQzYyLjI4NiwxNDkuNzkyLDUzLjgxLDE0OC4xNDgsNDcuNDI0LDE0NC4wOTd6IE03Ny42MzcsNTEuMTY5YzEyLjU2LDkuNTU0LDExLjk5NywzMS4zNTktMC4wNDQsNDEuMDU0ICAgYy0zLjcxNS0zLjA1NS05LjMxOS05LjQ4MS05LjMxOS0yMC40NDFDNjguMjczLDYwLjM1Miw3My45OTEsNTQuMDM1LDc3LjYzNyw1MS4xNjl6IE0zMy44NTYsMTkxLjkwNmg4My43ODEgICBjLTEuMjcsNDAuNTE1LTEzLjM2Miw1Ni41LTQxLjg4OCw1Ni41QzQ2LjgzMiwyNDguNDA3LDM1LjA3MiwyMzIuOTM2LDMzLjg1NiwxOTEuOTA2eiBNNDIxLjcwNywzODIuMjA1ICAgYy01LjQyMSw1LjUxOS0xNC4zNjcsOC4yMDEtMjcuMzUxLDguMjAxSDI0MC4wMTNjMC42OTQtNS45ODgsMy4wMDYtMTUuMDI2LDEwLjIwMy0yMy4wMzUgICBjMTAuNzEyLTExLjkyMSwyOC45MjctMTcuOTY1LDU0LjE0MS0xNy45NjVoMTI2LjczNkM0MzAuNDczLDM2NC4xMDUsNDI4LjI1MSwzNzUuNTQzLDQyMS43MDcsMzgyLjIwNXogTTQ2OC43NSwxODAuMzEzdjIyLjExNyAgIGMwLDIuNjkzLTIuMTksNC44ODMtNC44ODMsNC44ODNoLTE4LjAxMXYtMjdINDY4Ljc1eiBNNDE5LjEyNiwxMTEuMzU4YzQuMDg0LTUuMzk1LDguMTktOS40MSwxMS43My0xMi4zMjJ2MTg3Ljg2MyAgIGMtMy41MjgtMy4wMjMtNy42MDQtNy4xNDYtMTEuNjU5LTEyLjYyMmMtMTQuNjE1LTE5LjczOS0yMi4zNDEtNDguMDQ5LTIyLjM0MS04MS44NzIgICBDMzk2Ljg1NiwxNTguNjMyLDQwNC41NTgsMTMwLjYwNiw0MTkuMTI2LDExMS4zNTh6IE0zODMuODczLDIyMi4zMTNjMS40MzIsMTAuMDk1LDMuNTUzLDE5LjA3Nyw2LjEzOCwyNy4wNDNoLTI2Ljg5di0yNy4wNDMgICBIMzgzLjg3M3ogTTE3OS4xNzYsMjAyLjQyOXYtMjIuMTE3aDIwMi45OTNjLTAuNDY5LDguOTkyLTAuNDE1LDE4LjAxNSwwLjE2OSwyN0gxODQuMDU5ICAgQzE4MS4zNjYsMjA3LjMxMywxNzkuMTc2LDIwNS4xMjIsMTc5LjE3NiwyMDIuNDI5eiBNMjk5LjgwNSwyMjIuMzEzaDQ4LjMxNnYyNy4wNDNoLTQ4LjMxNlYyMjIuMzEzeiBNMzk1LjkwMSwyNjQuMzU1ICAgYzcuODE1LDE2LjcsMTcuNTE2LDI3LjQ4OCwyNS4zNjUsMzQuMTQ1SDE1LjI1di0zNC4xNDVIMzk1LjkwMXogTTE1LjI1LDQ1NC41di02M2gxMzUuNXY2M0gxNS4yNXogTTE1MC43NSwzNzYuNUgxNS4yNXYtNjNoMTM1LjUgICBWMzc2LjV6IE00NDUuODU2LDI5OC41di0zNC4xNDVoNTEuMzk0VjI5OC41SDQ0NS44NTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01NC43NSwzNTIuNWg1N2M5LjY3MywwLDkuNjczLTE1LDAtMTVoLTU3QzQ1LjA3NywzMzcuNSw0NS4wNzcsMzUyLjUsNTQuNzUsMzUyLjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTEuNzUsNDE1LjVoLTU3Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoNTdDMTIxLjQyMyw0MzAuNSwxMjEuNDIzLDQxNS41LDExMS43NSw0MTUuNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",t0e={Anteroom:yNe,Attic:DNe,Balcony:dNe,Barn:zNe,Basement:hNe,Bathroom:INe,Bedroom:wNe,"Boiler Room":"PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSItMyAwIDQ4MCA0ODAiIHdpZHRoPSI0ODBwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMjM0Ljk2ODc1IDY0Yy0xMy4yNTM5MDYgMC0yNCAxMC43NDYwOTQtMjQgMjRzMTAuNzQ2MDk0IDI0IDI0IDI0IDI0LTEwLjc0NjA5NCAyNC0yNC0xMC43NDYwOTQtMjQtMjQtMjR6bTAgMzJjLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDgtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzA2Ljk2ODc1IDE2MGgtMTQ0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djY0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoMTQ0YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LTY0YzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS04IDY0aC0xMjh2LTQ4aDEyOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xODYuOTY4NzUgMTkyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMTguOTY4NzUgMTkyaDMydjE2aC0zMnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjYuOTY4NzUgMTkyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzguOTY4NzUgNzJ2MzJoMTZ2LTI0aDE2di0xNmgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDY2Ljk2ODc1IDBoLTMyYy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djE5MmMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4aC01NnYtNTZoMjRjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNDhjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMjR2LTE2Yy0uMDI3MzQ0LTIyLjA4MjAzMS0xNy45MjE4NzUtMzkuOTcyNjU2LTQwLTQwaC0xNnYtMTZoLTE2djE2aC0xNy43NjE3MTlsLTYuNDgwNDY5LTI1LjkzNzVjLS44ODY3MTgtMy41NjI1LTQuMDg1OTM3LTYuMDYyNS03Ljc1NzgxMi02LjA2MjVoLTQ4Yy0zLjY3MTg3NSAwLTYuODcxMDk0IDIuNS03Ljc2MTcxOSA2LjA2MjVsLTYuNDgwNDY5IDI1LjkzNzVoLTE3Ljc1NzgxMnYtMTZoLTE2djE2aC0xNmMtMjIuMDgyMDMxLjAyNzM0NC0zOS45NzI2NTYgMTcuOTE3OTY5LTQwIDQwdjU2aC0yNGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHY2NGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDI0djIyNGgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2MzJjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg5NmM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0zMmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04aC0yNHYtNDEuNzEwOTM4YzEyLjM3MTA5NCA2LjM3NSAyNi4wODIwMzEgOS43MDMxMjYgNDAgOS43MTA5MzhoOHYyNGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDQ4YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LTI0aDhjMTMuOTE0MDYyLS4wMDc4MTIgMjcuNjI4OTA2LTMuMzM1OTM4IDQwLTkuNzEwOTM4djQxLjcxMDkzOGgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2MzJjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg5NmM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0zMmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04aC0yNHYtMTc2aDU2YzMwLjkxMDE1Ni0uMDM5MDYyIDU1Ljk2MDkzOC0yNS4wODk4NDQgNTYtNTZ2LTE5MmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04em0tODggMTA0djMyaC0xNnYtMzJ6bS0xNjEuNzUzOTA2LTg4aDM1LjUwMzkwNmw0IDE2aC00My41MDM5MDZ6bS05NC4yNDYwOTQgNTZjMC0xMy4yNTM5MDYgMTAuNzQ2MDk0LTI0IDI0LTI0aDE3NmMxMy4yNTM5MDYgMCAyNCAxMC43NDYwOTQgMjQgMjR2NTZoLTIyNHptLTMyIDEyMHYtNDhoMTZ2NDh6bTgwIDI3MmgtODB2LTE2aDgwem0tMzItMzJoLTE2di02OS41NTg1OTRjNC41MzUxNTYgNi40ODQzNzUgOS45MTQwNjIgMTIuMzMyMDMyIDE2IDE3LjM5MDYyNXptMTEyLTE2aC0zMnYtMTZoMzJ6bTEyOCA0OGgtODB2LTE2aDgwem0tMzItMzJoLTE2di01Mi4xNjc5NjljNi4wODIwMzEtNS4wNTg1OTMgMTEuNDY0ODQ0LTEwLjkwNjI1IDE2LTE3LjM5MDYyNXptMC0xMjBjLS4wNDI5NjkgMzkuNzQ2MDk0LTMyLjI1MzkwNiA3MS45NTcwMzEtNzIgNzJoLTgwYy0zOS43NDYwOTQtLjA0Mjk2OS03MS45NTcwMzEtMzIuMjUzOTA2LTcyLTcydi0xNjhoMjI0em0xMTItMTEyYy0uMDI3MzQ0IDIyLjA4MjAzMS0xNy45MjE4NzUgMzkuOTcyNjU2LTQwIDQwaC01NnYtMTZoNTZjMTMuMjUzOTA2IDAgMjQtMTAuNzQ2MDk0IDI0LTI0di0xODRoMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNTYuNjI1IDUzLjY1NjI1IDEwLjM0Mzc1LTEwLjM0Mzc1IDE4LjM0Mzc1IDE4LjM0Mzc1IDExLjMxMjUtMTEuMzEyNS0yNC0yNGMtMy4xMjUtMy4xMjEwOTQtOC4xODc1LTMuMTIxMDk0LTExLjMxMjUgMGwtMTAuOTM3NSAxMC45Mzc1LTM0LjM5ODQzOC0yNy41MjczNDQtMTAuMDA3ODEyIDEyLjQ5MjE4OCA0MCAzMmMzLjE4MzU5NCAyLjU1MDc4MSA3Ljc3MzQzOCAyLjI5Mjk2OCAxMC42NTYyNS0uNTg5ODQ0em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTAgODcuNDMzNTk0IDQwIDE2YzIuOTcyNjU2IDEuMTgzNTk0IDYuMzYzMjgxLjQ4NDM3NSA4LjYyNS0xLjc3NzM0NGwxMS45MTc5NjktMTEuOTIxODc1IDI2Ljg0NzY1NiAxMy40NjQ4NDQgNy4xNTIzNDQtMTQuMzIwMzEzLTMyLTE2Yy0zLjA3ODEyNS0xLjUzNTE1Ni02Ljc5Njg3NS0uOTI5Njg3LTkuMjMwNDY5IDEuNTAzOTA2bC0xMi4yNzM0MzggMTIuMjI2NTYzLTM1LjEwMTU2Mi0xNC4wNDI5Njl6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Carport:CNe,Cellar:ANe,Chamber:mNe,Corridor:pNe,"Dining Area":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==","Dining Room":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Dining:ONe,"Dressing Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Ny4wMDQgMjc2LjE2OWMwLTQuMTM5IDMuMzc0LTcuNTEyIDcuNTEyLTcuNTEyczcuNDgzIDMuMzczIDcuNDgzIDcuNTEydjEzNy4zNCAzOS45OTdjMCA0LjEzOS0zLjM0NSA3LjQ4My03LjQ4MyA3LjQ4M2gtNDk3LjAwNGMtNC4xMzkgMC03LjUxMi0zLjM0NS03LjUxMi03LjQ4MyAwLTEyNC43NTQgMC0yNDkuNTM2IDAtMzc0LjI5MSAwLTcuNzY3IDMuMTc1LTE0LjgyNSA4LjI3Ny0xOS45MjggNS4xMDMtNS4xMDMgMTIuMTYxLTguMjc3IDE5LjkyOC04LjI3N2gxMjQuMjQ0YzcuOTA5IDAgMTUuMzY0IDMuMzE2IDIwLjcyMiA5LjA5OSA1LjM1Ny01Ljc4MyAxMi44MTItOS4wOTkgMjAuNzIyLTkuMDk5aDEyNC4yNDNjNy44ODEgMCAxNS4zNjQgMy4zMTYgMjAuNjkzIDkuMDk5IDUuMzU4LTUuNzgzIDEyLjgxMy05LjA5OSAyMC43MjItOS4wOTloMTI0LjI0NGM3Ljc2NyAwIDE0LjgyNiAzLjE3NSAxOS45MjggOC4yNzcgNS4xMDIgNS4xMDMgOC4yNzcgMTIuMTYxIDguMjc3IDE5LjkyOHYyNS42MjUgMTM3LjM0YzAgNC4xMzktMy4zNDUgNy41MTItNy40ODMgNy41MTItNC4xMzkgMC03LjUxMi0zLjM3My03LjUxMi03LjUxMnYtMTI5Ljg1NWgtNjcuODM1djEyLjkyNmw0Ni44MyAyMy44MzljNC4xOTUgMi4xMjYgNy4xMTUgNS43NTUgOC40NDcgOS44OTQgMS4zNiA0LjEzOSAxLjEzNCA4Ljc4Ny0uOTkyIDEyLjk1NC0xLjQ0NiAyLjgzNS0zLjY1NyA1LjE1OS02LjI5MyA2Ljc3NS0yLjY2NCAxLjY0NC01LjcyNiAyLjUyMy04Ljg3MiAyLjUyM2gtMy4zNDV2OTUuNjEzYzAgNC4xMzktMy4zNDUgNy40ODQtNy40ODQgNy40ODRoLTcxLjE1Yy00LjEzOSAwLTcuNDgzLTMuMzQ1LTcuNDgzLTcuNDg0di0zNC41NTRjMC00LjE2NyAzLjM0NS03LjUxMiA3LjQ4My03LjUxMiA0LjEzOSAwIDcuNTEyIDMuMzQ1IDcuNTEyIDcuNTEydjI3LjA0M2g1Ni4xMjd2LTg4LjEwMmgtNTYuMTI3djI3LjA3MWMwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEycy03LjQ4My0zLjM3My03LjQ4My03LjUxMnYtMjcuMDcxaC0zLjM0NWMtNC43MDYgMC04Ljk1Ny0xLjg5OS0xMi4wMTktNC45ODktMy4wOS0zLjA2MS00Ljk4OS03LjMxMy00Ljk4OS0xMi4wMTkgMC0zLjM0NS45OTItNi41MiAyLjY5My05LjE1NiAxLjcyOS0yLjY2NCA0LjEzOS00LjgxOSA2Ljk3NC02LjE4bDQ2LjAzNS0yMy40NDN2LTEzLjEyNGgtNjcuODM0djI5My43MDFoMTUwLjY2M3YtMTI5Ljg1N3ptLTczLjg0My0xMzcuMTk5Yy0uODIyLS41MS0xLjY3Mi0uNTEtMi40OTUgMGwtNDUuNzIzIDIzLjMwMWMtLjkwNy4zNC0xLjQ3NC45MzYtMS40NzQgMS45NTYgMCAxLjEwNS45MDcgMi4wMTMgMi4wMTMgMi4wMTNoOTIuODA3Yy43OTMgMCAxLjQ0Ni0uMzk3IDEuNzg2LTEuMTA1LjUxLS45OTIuMTQyLTIuMTgzLS44NzgtMi42OTNsLTE1LjMzNi03LjgyM2MtOS4wNDMtNC41OTMtMTguMDU3LTkuMTU4LTMwLjctMTUuNjQ5em0tMTY1LjgtLjA4NWMtLjcwOS0uNDI1LTEuNDc0LS40MjUtMi4yNCAwbC00NS44NjUgMjMuMzg2Yy0uODc5LjM0LTEuNDQ2LjkzNi0xLjQ0NiAxLjk1NiAwIDEuMTA1LjkwNyAyLjAxMyAyLjAxMyAyLjAxM2g5Mi44MDdjLjc5NCAwIDEuNDQ2LS4zOTcgMS43ODYtMS4xMDUuNTEtLjk5Mi4xNDItMi4xODMtLjg3OS0yLjY5My0xNS4zOTItNy44MjQtMzAuODEyLTE1LjY0OC00Ni4xNzYtMjMuNTU3em0tMjExLjY2Ni0yNi41NmMtNC4xMzkgMC03LjUxMi0zLjM0NS03LjUxMi03LjQ4NHMzLjM3My03LjUxMiA3LjUxMi03LjUxMmg4OS4yOTJjNC4xMzggMCA3LjUxMiAzLjM3NCA3LjUxMiA3LjUxMiAwIDQuMTM5LTMuMzczIDcuNDg0LTcuNTEyIDcuNDg0em0wIDEwMS45MzRjLTQuMTM5IDAtNy41MTItMy4zNzMtNy41MTItNy41MTJzMy4zNzMtNy40ODMgNy41MTItNy40ODNoODkuMjkyYzQuMTM4IDAgNy41MTIgMy4zNDUgNy41MTIgNy40ODMgMCA0LjEzOS0zLjM3MyA3LjUxMi03LjUxMiA3LjUxMnptMC0zMy45ODhjLTQuMTM5IDAtNy41MTItMy4zNDUtNy41MTItNy40ODNzMy4zNzMtNy41MTIgNy41MTItNy41MTJoODkuMjkyYzQuMTM4IDAgNy41MTIgMy4zNzMgNy41MTIgNy41MTJzLTMuMzczIDcuNDgzLTcuNTEyIDcuNDgzem0wLTMzLjk1OWMtNC4xMzkgMC03LjUxMi0zLjM3My03LjUxMi03LjUxMnMzLjM3My03LjQ4MyA3LjUxMi03LjQ4M2g4OS4yOTJjNC4xMzggMCA3LjUxMiAzLjM0NSA3LjUxMiA3LjQ4MyAwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEyem0yMDIuODIyLTIwLjg2M3YtMTMuMTI0aC02Ny44MzR2MTI5Ljg1N2MwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEycy03LjUxMi0zLjM3My03LjUxMi03LjUxMnYtMTYyLjk2N2MwLTMuNjI4LTEuNDc0LTYuOTE3LTMuODgzLTkuMzI2LTIuMzgxLTIuMzgxLTUuNjk4LTMuODg0LTkuMzI2LTMuODg0aC0xMjQuMjQ0Yy0zLjYyOCAwLTYuOTE3IDEuNTAyLTkuMzI3IDMuODg0LTIuMzgxIDIuNDA5LTMuODgzIDUuNjk3LTMuODgzIDkuMzI2djE5Mi4zNjFoMTUuMzA4YzYuMDk0IDAgMTEuNTk0IDIuNDY2IDE1LjU5IDYuNDY0IDMuOTk3IDMuOTk3IDYuNDkyIDkuNTI1IDYuNDkyIDE1LjU5djIzLjMwMWMwIDYuMDY3LTIuNDk1IDExLjU5NC02LjQ5MiAxNS41OTFzLTkuNDk2IDYuNDYzLTE1LjU5IDYuNDYzaC0xNS4zMDh2MTA3LjAwOWgxNTAuNjYzdi0xNjkuODI1YzAtNC4xMzkgMy4zNzQtNy41MTIgNy41MTItNy41MTJzNy41MTIgMy4zNzMgNy41MTIgNy41MTJ2MTI5Ljg1NmgxNTAuNjYzdi0yOTMuN2gtNjcuODM0djEyLjkyNmw0Ni42MyAyMy43MjZjNC4xNjcgMi4xMjYgNy4yIDUuNTI4IDguNjQ2IDEwLjAwNyAyLjQ2NiA3LjU2OC0uNTM5IDE1LjU5LTcuMjg1IDE5LjcyOS0yLjY2NCAxLjY0NC01Ljc1NCAyLjUyMy04Ljg3MiAyLjUyM2gtOTIuODA3Yy00LjcwNiAwLTguOTU4LTEuODk5LTEyLjA0Ny00Ljk4OS0zLjA2MS0zLjA2MS00Ljk2LTcuMzEzLTQuOTYtMTIuMDE5IDAtMy4zNDUuOTkyLTYuNTIgMi42OTMtOS4xNTYgMS43MDEtMi42NjQgNC4xMS00LjgxOSA2Ljk3My02LjE4em0tMjMzLjUyMSAxNzIuMzJoNi4wOTRjNC4xMzkgMCA3LjUxMiAzLjM3MyA3LjUxMiA3LjUxMnMtMy4zNzMgNy41MTItNy41MTIgNy41MTJoLTYuMDk0djExLjE5OGgxNS4zMDhjMS45NTYgMCAzLjcxMy0uNzk0IDQuOTg5LTIuMDY5IDEuMjc2LTEuMzA1IDIuMDk4LTMuMDYxIDIuMDk4LTQuOTl2LTIzLjMwMmMwLTEuOTI4LS44MjItMy42ODUtMi4wOTgtNC45ODktMS4yNzUtMS4yNzYtMy4wMzMtMi4wNjktNC45ODktMi4wNjloLTE1LjMwOHptMzMxLjM0NS0yMTguNTU0djE4LjExM2gxNTAuNjYzdi0xOC4xMTNjMC0zLjYyOC0xLjQ3NC02LjkxNy0zLjg4My05LjMyNi0yLjQwOS0yLjM4MS01LjY5OC0zLjg4NC05LjMyNy0zLjg4NGgtMTI0LjI0M2MtMy42MjggMC02LjkxNyAxLjUwMi05LjMyNiAzLjg4NC0yLjQxIDIuNDEtMy44ODQgNS42OTgtMy44ODQgOS4zMjZ6bS0xNjUuNjU4IDE4LjExNGgxNTAuNjYzdi0xOC4xMTRjMC0zLjYyOC0xLjUwMi02LjkxNy0zLjg4My05LjMyNi0yLjQxLTIuMzgxLTUuNjk4LTMuODg0LTkuMzI3LTMuODg0aC0xMjQuMjQzYy0zLjYyOSAwLTYuOTQ1IDEuNTAyLTkuMzI3IDMuODg0LTIuNDEgMi40MDktMy44ODMgNS42OTctMy44ODMgOS4zMjZ6bTMxNi4zMjEgMzIzLjY5MmgtMzE2LjMyMXYyNC45NzNoMzE2LjMyMnYtMjQuOTczeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Driveway:ENe,Entrance:_Ne,"Equipment Room":"PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC00IDUxMiA1MTIiIHdpZHRoPSI1MTJwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzAzLjA5Mzc1IDE3NC4yNWMzLjM5NDUzMSAyLjM3ODkwNiA4LjA3MDMxMiAxLjU1MDc4MSAxMC40NDUzMTItMS44Mzk4NDRsMTUuOTUzMTI2LTIyLjc4OTA2MmMyLjM3ODkwNi0zLjM5NDUzMiAxLjU1NDY4Ny04LjA3MDMxMy0xLjgzOTg0NC0xMC40NDUzMTMtMy4zOTQ1MzItMi4zNzUtOC4wNzAzMTMtMS41NTA3ODEtMTAuNDQ1MzEzIDEuODQzNzVsLTE1Ljk1NzAzMSAyMi43ODUxNTdjLTIuMzc1IDMuMzk0NTMxLTEuNTUwNzgxIDguMDcwMzEyIDEuODQzNzUgMTAuNDQ1MzEyem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MS42NzE4NzUgMTU1Ljk4NDM3NS01LjQxNzk2OSAyNy4yODUxNTZjLS45MTc5NjggNC42NDA2MjUgMi42MzI4MTMgOC45NjA5MzggNy4zNjcxODggOC45NjA5MzggMy41MDc4MTIgMCA2LjY0MDYyNS0yLjQ3MjY1NyA3LjM0NzY1Ni02LjAzOTA2M2w1LjQxNDA2Mi0yNy4yODkwNjJjLjgwODU5NC00LjA2MjUtMS44MzIwMzEtOC4wMTE3MTktNS44OTQ1MzEtOC44MTY0MDYtNC4wNjY0MDYtLjgwNDY4OC04LjAxMTcxOSAxLjgzMjAzMS04LjgxNjQwNiA1Ljg5ODQzN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMDkuNTg5ODQ0IDEyMS40NDkyMTljLTIuMTQ0NTMyLTMuNTQyOTY5LTYuNzU3ODEzLTQuNjcxODc1LTEwLjMwMDc4Mi0yLjUyNzM0NGwtMjMuNzg5MDYyIDE0LjQyMTg3NWMtMy41NDI5NjkgMi4xNDg0MzgtNC42NzE4NzUgNi43NjE3MTktMi41MjczNDQgMTAuMzA0Njg4IDIuMTUyMzQ0IDMuNTQyOTY4IDYuNzY1NjI1IDQuNjY3OTY4IDEwLjMwNDY4OCAyLjUyMzQzN2wyMy43ODkwNjItMTQuNDE3OTY5YzMuNTQyOTY5LTIuMTQ4NDM3IDQuNjcxODc1LTYuNzYxNzE4IDIuNTIzNDM4LTEwLjMwNDY4N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04My42NTIzNDQgMTUyLjE3OTY4OGMyLjc1NzgxMiAxLjM1OTM3NCA2LjExMzI4MSAxLjQwNjI1IDguOTY4NzUgMCA3LTMuNDUzMTI2IDI5LjgzNTkzNy0xNi41MDc4MTMgMjkuODM1OTM3LTM5LjQ2NDg0NCAwLTE4LjIwMzEyNS0yMS4yMTQ4NDMtMjcuMDY2NDA2LTM0LjMxMjUtMTYuMDc0MjE5LTUuMDYyNS00LjI2MTcxOS0xMS45NDE0MDYtNS44OTA2MjUtMTguNzUzOTA2LTQuMDg5ODQ0LTkuMzE2NDA2IDIuNDU3MDMxLTE1LjU3MDMxMyAxMC41NjI1LTE1LjU3MDMxMyAyMC4xNjQwNjMgMCAyMy4wMTU2MjUgMjIuODQzNzUgMzYuMDMxMjUgMjkuODMyMDMyIDM5LjQ2NDg0NHptLTMuNzc3MzQ0LTQyLjM2NzE4OGMxLjM5ODQzOCAyLjQ2ODc1IDQuNDY4NzUgNC42MjUgOC4wMjM0MzggNC43MTA5MzggMy41ODIwMzEuMTEzMjgxIDYuOTcyNjU2LTIuMDQ2ODc2IDguNDYwOTM3LTQuNjUyMzQ0IDMuMDU0Njg3LTUuMzU1NDY5IDExLjA5NzY1Ni0zLjE0NDUzMiAxMS4wOTc2NTYgMi44NDc2NTYgMCAxMi42OTE0MDYtMTMuMzk0NTMxIDIxLjU2NjQwNi0xOS4zMjQyMTkgMjQuODc1LTUuOTI5Njg3LTMuMjkyOTY5LTE5LjMxMjUtMTIuMTQ0NTMxLTE5LjMxMjUtMjQuODc1IDAtNi4wNDI5NjkgOC4wODU5MzgtOC4xMzI4MTIgMTEuMDU0Njg4LTIuOTA2MjV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQxLjE0MDYyNSAxMDMuNjE3MTg4aDI5LjYzNjcxOWM0LjE0NDUzMSAwIDcuNS0zLjM1NTQ2OSA3LjUtNy41IDAtNC4xNDA2MjYtMy4zNTU0NjktNy41LTcuNS03LjVoLTI5LjYzNjcxOWMtNC4xNDQ1MzEgMC03LjUgMy4zNTkzNzQtNy41IDcuNSAwIDQuMTQ0NTMxIDMuMzU1NDY5IDcuNSA3LjUgNy41em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0MS4xNDA2MjUgMTMwLjAyNzM0NGgyOS42MzY3MTljNC4xNDQ1MzEgMCA3LjUtMy4zNTU0NjkgNy41LTcuNSAwLTQuMTQ0NTMyLTMuMzU1NDY5LTcuNS03LjUtNy41aC0yOS42MzY3MTljLTQuMTQ0NTMxIDAtNy41IDMuMzU1NDY4LTcuNSA3LjUgMCA0LjE0MDYyNSAzLjM1NTQ2OSA3LjUgNy41IDcuNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDEuMTQwNjI1IDE1Ni40Mzc1aDI5LjYzNjcxOWM0LjE0NDUzMSAwIDcuNS0zLjM1NTQ2OSA3LjUtNy41cy0zLjM1NTQ2OS03LjUtNy41LTcuNWgtMjkuNjM2NzE5Yy00LjE0NDUzMSAwLTcuNSAzLjM1NTQ2OS03LjUgNy41czMuMzU1NDY5IDcuNSA3LjUgNy41em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NS43Njk1MzEgMTUuMDA3ODEyYzQuMTQ0NTMxIDAgNy41LTMuMzU1NDY4IDcuNS03LjUgMC00LjE0NDUzMS0zLjM1NTQ2OS03LjQ5OTk5OTUtNy41LTcuNDk5OTk5NWgtNzMuNzEwOTM3Yy0uMTE3MTg4IDAtLjIzMDQ2OS4wMTE3MTg3LS4zNDc2NTYuMDE1NjI1LTIuNDk2MDk0LS4xMjg5MDY1LTUgLjk4NDM3NDUtNi41MzkwNjMgMy4xODM1OTM1bC0yNS44OTA2MjUgMzYuOTcyNjU3LTMyLjgzOTg0NC0yMi45OTYwOTRjLTE3LjM3MTA5NC0xMi4xNjQwNjMtMzguOTAyMzQ0LTE2LjI4OTA2My01OS41OTM3NS0xMS41MzkwNjNsLTIuNTk3NjU2LTEuODIwMzEyYy05LjU4OTg0NC02LjcxMDkzOC0yMi44MTY0MDYtNC4zNDc2NTctMjkuNSA1LjE5OTIxOWwtNS45Njg3NSA4LjUyMzQzN2MtNi42OTUzMTIgOS41NjI1LTQuMzYzMjgxIDIyLjgwMDc4MSA1LjIwMzEyNSAyOS40OTYwOTRsMi4wNDY4NzUgMS40MzM1OTNjLTYuODU5Mzc1IDMwLjYxNzE4OCAyNi44NjMyODEgNTQuMDgyMDMyIDUzLjE3OTY4OCAzNy4yMzgyODJsNC4xOTE0MDYgMi45MzM1OTRjLTYuODUxNTYzIDMwLjU3MDMxMiAyNi44MDQ2ODcgNTQuMTE3MTg3IDUzLjE3NTc4MSAzNy4yMzgyODFsNC4xOTUzMTMgMi45MzM1OTNjLTYuODU5Mzc2IDMwLjYxNzE4OCAyNi44NjMyODEgNTQuMDc4MTI2IDUzLjE3NTc4MSAzNy4yMzQzNzZsMi4wNTQ2ODcgMS40NDE0MDZjOS41NjY0MDYgNi42OTUzMTIgMjIuODAwNzgyIDQuMzYzMjgxIDI5LjQ5NjA5NC01LjIwMzEyNWw1Ljk2ODc1LTguNTIzNDM4YzYuNjk1MzEyLTkuNTYyNSA0LjM2MzI4MS0yMi44MDA3ODEtNS4xOTkyMTktMjkuNDk2MDkzbC0zLjI3MzQzNy0yLjI5Mjk2OWMtMi42MTMyODItMjEuMDY2NDA3LTEzLjg1NTQ2OS0zOS44ODY3MTktMzEuMjI2NTYzLTUyLjA1NDY4OGwtMzAuMTk5MjE5LTIxLjE0MDYyNSAyMy42NTIzNDQtMzMuNzc3MzQ0em0tMjE1LjQ1NzAzMSA0My40NzI2NTcgMjQuNjIxMDk0IDE3LjI0MjE4N2MtMTEuNzk2ODc1IDIuNzkyOTY5LTIzLjIyMjY1Ni01LjIzNDM3NS0yNC42MjEwOTQtMTcuMjQyMTg3em01Ny4zNjcxODggNDAuMTY3OTY5IDI0LjYyNSAxNy4yNDIxODdjLTExLjc2OTUzMiAyLjc5Njg3NS0yMy4yMjI2NTctNS4yMDcwMzEtMjQuNjI1LTE3LjI0MjE4N3ptNTcuMzcxMDkzIDQwLjE3MTg3NGMxNC45MTc5NjkgMTAuNDQ1MzEzIDkuNzc3MzQ0IDYuODQzNzUgMjQuNjI1IDE3LjI0MjE4OC0xMS43NzM0MzcgMi43OTY4NzUtMjMuMjIyNjU2LTUuMjE0ODQ0LTI0LjYyNS0xNy4yNDIxODh6bTY0LjEyODkwNyA2LjM0Mzc1LTUuOTY4NzUgOC41MjM0MzhjLTEuOTUzMTI2IDIuNzg5MDYyLTUuODEyNSAzLjQ3MjY1Ni04LjYwNTQ2OSAxLjUxOTUzMS0yLjQxMDE1Ny0xLjY4NzUtMTY5Ljg1OTM3NS0xMTguOTQxNDA2LTE3Mi4wMTk1MzEtMTIwLjQ0OTIxOS0yLjc2OTUzMi0xLjk0MTQwNi0zLjQ1NzAzMi01LjgzMjAzMS0xLjUxNTYyNi04LjYwNTQ2OGw1Ljk2ODc1LTguNTIzNDM4YzEuOTQ5MjE5LTIuNzgxMjUgNS44NDM3NS0zLjQ0OTIxOCA4LjYwNTQ2OS0xLjUxNTYyNWwxNzIuMDE5NTMxIDEyMC40NDUzMTNjMi43NzM0MzggMS45NDE0MDYgMy40NTcwMzIgNS44MzU5MzcgMS41MTU2MjYgOC42MDU0Njh6bS0xNC45MDIzNDQtMzYuMjg5MDYyYy03Ljg5NDUzMi01LjUzMTI1LTEyNS4wNDY4NzUtODcuNTU4NTk0LTEyOC43MTA5MzgtOTAuMTI1IDExLjQ3MjY1Ni4zNTE1NjIgMjIuNjcxODc1IDQgMzIuMjczNDM4IDEwLjcyMjY1Nmw3NS4zMjQyMTggNTIuNzQyMTg4YzkuNTk3NjU3IDYuNzIyNjU2IDE2Ljg1OTM3NiAxNiAyMS4xMTMyODIgMjYuNjYwMTU2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5MC44MjAzMTIgMzEwLjUxNTYyNWgtMjE3LjMyMDMxMmMtNC4xNDQ1MzEgMC03LjUgMy4zNTkzNzUtNy41IDcuNSAwIDQuMTQ0NTMxIDMuMzU1NDY5IDcuNTAzOTA2IDcuNSA3LjUwMzkwNmgyMTcuMzIwMzEyYzMuNDA2MjUgMCA2LjE3OTY4OCAyLjc2OTUzMSA2LjE3OTY4OCA2LjE3NTc4MXYxMy42Nzk2ODhjMCAzLjQwNjI1LTIuNzczNDM4IDYuMTc5Njg4LTYuMTc5Njg4IDYuMTc5Njg4LTMuNDQ1MzEyIDAtNDYzLjYwOTM3NCAwLTQ2OS42NDA2MjQgMC0zLjQwNjI1IDAtNi4xNzk2ODgtMi43Njk1MzItNi4xNzk2ODgtNi4xNzk2ODh2LTEzLjY3OTY4OGMwLTMuNDA2MjUgMi43NzM0MzgtNi4xNzU3ODEgNi4xNzk2ODgtNi4xNzU3ODFoMjE3LjMyMDMxMmM0LjE0NDUzMSAwIDcuNS0zLjM1OTM3NSA3LjUtNy41MDM5MDYgMC00LjE0MDYyNS0zLjM1NTQ2OS03LjUtNy41LTcuNWgtODUuMzU1NDY5Yy41OTc2NTctMS45NTMxMjUuOTI1NzgxLTQuMDI3MzQ0LjkyNTc4MS02LjE3NTc4MXYtMTMuNjc5Njg4YzAtMTEuNjc5Njg3LTkuNS0yMS4xNzk2ODctMjEuMTc5Njg3LTIxLjE3OTY4N2gtMTExLjcxMDkzN2MtMTEuNjc5Njg4IDAtMjEuMTc5Njg4IDkuNS0yMS4xNzk2ODggMjEuMTc5Njg3djEzLjY3OTY4OGMwIDUuMjE0ODQ0IDEuOTAyMzQ0IDkuOTg0Mzc1IDUuMDM5MDYyIDEzLjY3OTY4Ny0zLjEzNjcxOCAzLjY5MTQwNy01LjAzOTA2MiA4LjQ2NDg0NC01LjAzOTA2MiAxMy42NzU3ODF2MTMuNjc5Njg4YzAgMTEuMzI4MTI1IDguOTQ1MzEyIDIwLjU3ODEyNSAyMC4xMzY3MTkgMjEuMTI4OTA2djYuNjA5Mzc1YzAgMTEuNjc5Njg4IDkuNTAzOTA2IDIxLjE3OTY4OCAyMS4xNzk2ODcgMjEuMTc5Njg4aDIwLjcxNDg0NHY5NS4xNDA2MjVjMCA3Ljg3ODkwNiA2LjQxMDE1NiAxNC4yODkwNjIgMTQuMjkyOTY5IDE0LjI4OTA2MmgxNC4xNTIzNDNjNy44Nzg5MDcgMCAxNC4yOTI5NjktNi40MTAxNTYgMTQuMjkyOTY5LTE0LjI4OTA2MnYtOTUuMTQwNjI1aDMwMi40NjA5Mzh2OTUuMTQwNjI1YzAgNy44Nzg5MDYgNi40MTAxNTYgMTQuMjg5MDYyIDE0LjI5Mjk2OSAxNC4yODkwNjJoMTQuMTUyMzQzYzcuODgyODEzIDAgMTQuMjkyOTY5LTYuNDEwMTU2IDE0LjI5Mjk2OS0xNC4yODkwNjJ2LTk1LjE0MDYyNWgyMC43MTA5MzhjMTEuNjc5Njg3IDAgMjEuMTc5Njg3LTkuNSAyMS4xNzk2ODctMjEuMTc5Njg4di02LjYwOTM3NWMxMS4xOTUzMTMtLjU1MDc4MSAyMC4xNDA2MjUtOS44MDA3ODEgMjAuMTQwNjI1LTIxLjEyODkwNnYtMTMuNjc5Njg4YzAtMTEuNjc1NzgxLTkuNS0yMS4xNzk2ODctMjEuMTc5Njg4LTIxLjE3OTY4N3ptLTQ3NS44MjAzMTItMTkuODU1NDY5YzAtMy40MDYyNSAyLjc3MzQzOC02LjE3OTY4NyA2LjE3OTY4OC02LjE3OTY4N2gxMTEuNzEwOTM3YzMuNDA2MjUgMCA2LjE3OTY4NyAyLjc3MzQzNyA2LjE3OTY4NyA2LjE3OTY4N3YxMy42Nzk2ODhjMCAzLjQwNjI1LTIuNzczNDM3IDYuMTc5Njg3LTYuMTc5Njg3IDYuMTc5Njg3aC0xMTEuNzEwOTM3Yy0zLjQwNjI1IDAtNi4xNzk2ODgtMi43NzM0MzctNi4xNzk2ODgtNi4xNzk2ODd6bTc0Ljc2NTYyNSAxOTguMDYyNWgtMTIuNzM0Mzc1di05NC40Mjk2ODdoMTIuNzM0Mzc1em0zNDUuMjAzMTI1IDBoLTEyLjczODI4MXYtOTQuNDI5Njg3aDEyLjczODI4MXptNDEuODkwNjI1LTExNS42MDkzNzVjMCAzLjQwNjI1LTIuNzY5NTMxIDYuMTc5Njg4LTYuMTc5Njg3IDYuMTc5Njg4LTEzLjcxNDg0NCAwLTQxNS4wMzUxNTcgMC00MjkuMzYzMjgyIDAtMy40MDYyNSAwLTYuMTc5Njg3LTIuNzczNDM4LTYuMTc5Njg3LTYuMTc5Njg4di02LjU1ODU5M2g0NDEuNzIyNjU2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyOC45NjA5MzggMTEyLjUyNzM0NGM0LjE0NDUzMSAwIDcuNS0zLjM1OTM3NSA3LjUtNy41di00MS4xMzY3MTljMC0xNi4zMTY0MDYtMTMuMjczNDM4LTI5LjU5Mzc1LTI5LjU4OTg0NC0yOS41OTM3NWgtMTc3LjI4MTI1Yy0xNi4zMTY0MDYgMC0yOS41ODk4NDQgMTMuMjczNDM3LTI5LjU4OTg0NCAyOS41OTM3NXYxMTcuMjc3MzQ0YzAgMTYuMzE2NDA2IDEzLjI3MzQzOCAyOS41ODk4NDMgMjkuNTg5ODQ0IDI5LjU4OTg0M2gxNzcuMjgxMjVjMTYuMzE2NDA2IDAgMjkuNTkzNzUtMTMuMjczNDM3IDI5LjU5Mzc1LTI5LjU4OTg0M3YtNDEuMTQwNjI1YzAtNC4xNDA2MjUtMy4zNTkzNzUtNy41LTcuNTAzOTA2LTcuNS00LjE0MDYyNiAwLTcuNSAzLjM1OTM3NS03LjUgNy41djQxLjE0MDYyNWMwIDguMDQyOTY5LTYuNTQ2ODc2IDE0LjU4OTg0My0xNC41ODk4NDQgMTQuNTg5ODQzaC0xNzcuMjgxMjVjLTguMDQyOTY5IDAtMTQuNTg5ODQ0LTYuNTQ2ODc0LTE0LjU4OTg0NC0xNC41ODk4NDN2LTExNy4yNzczNDRjMC04LjA0Njg3NSA2LjU0Njg3NS0xNC41OTM3NSAxNC41ODk4NDQtMTQuNTkzNzVoMTc3LjI4MTI1YzguMDQyOTY4IDAgMTQuNTg5ODQ0IDYuNTQ2ODc1IDE0LjU4OTg0NCAxNC41OTM3NXY0MS4xMzY3MTljMCA0LjE0MDYyNSAzLjM1OTM3NCA3LjUgNy41IDcuNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNC43NzM0MzggNjEuNTcwMzEyYy00LjE0NDUzMiAwLTcuNSAzLjM1OTM3Ni03LjUgNy41djEwNi45MTQwNjNjMCA0LjE0NDUzMSAzLjM1NTQ2OCA3LjUgNy41IDcuNWgxNjYuOTE0MDYyYzQuMTQ0NTMxIDAgNy41LTMuMzU1NDY5IDcuNS03LjV2LTEwNi45MTQwNjNjMC00LjE0MDYyNC0zLjM1NTQ2OS03LjUtNy41LTcuNXptMTU5LjQxNDA2MiAxMDYuOTE0MDYzaC0xNTEuOTE0MDYydi05MS45MTQwNjNoMTUxLjkxNDA2MnptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+","Front Yard":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjYuNDksMzYuOTQ3Yy0zMS41NzksMC01Ny4yNywyNS42OTEtNTcuMjcsNTcuMjdjMCwzMS41NzksMjUuNjkxLDU3LjI3LDU3LjI3LDU3LjI3YzMxLjU3OCwwLDU3LjI3LTI1LjY5MSw1Ny4yNy01Ny4yNw0KCQkJQzE4My43NjEsNjIuNjM4LDE1OC4wNywzNi45NDcsMTI2LjQ5LDM2Ljk0N3ogTTEyNi40OSwxMzEuNDg3Yy0yMC41NTEsMC0zNy4yNy0xNi43MTktMzcuMjctMzcuMjcNCgkJCWMwLTIwLjU1MSwxNi43MTktMzcuMjcsMzcuMjctMzcuMjdjMjAuNTUsMCwzNy4yNywxNi43MTksMzcuMjcsMzcuMjdDMTYzLjc2MSwxMTQuNzY4LDE0Ny4wNDIsMTMxLjQ4NywxMjYuNDksMTMxLjQ4N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyNi40OSwwYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjEyLjMzOGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwczEwLTQuNDc3LDEwLTEwVjEwQzEzNi40OSw0LjQ3NywxMzIuMDE0LDAsMTI2LjQ5LDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjYuNDksMTU2LjA5N2MtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHYxMi4zMzhjMCw1LjUyMyw0LjQ3NywxMCwxMCwxMHMxMC00LjQ3NywxMC0xMHYtMTIuMzM4DQoJCQlDMTM2LjQ5LDE2MC41NzQsMTMyLjAxNCwxNTYuMDk3LDEyNi40OSwxNTYuMDk3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEwLjcwOCw4NC4yMTdIMTk4LjM3Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwczQuNDc3LDEwLDEwLDEwaDEyLjMzOGM1LjUyMywwLDEwLTQuNDc3LDEwLTEwDQoJCQlTMjE2LjIzLDg0LjIxNywyMTAuNzA4LDg0LjIxN3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTU0LjYxLDg0LjIxN0g0Mi4yNzJjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoMTIuMzM5YzUuNTIzLDAsMTAtNC40NzcsOS45OTktMTANCgkJCUM2NC42MSw4OC42OTQsNjAuMTM0LDg0LjIxNyw1NC42MSw4NC4yMTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMDAuOTc3LDE5LjcyOWMtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MiwwbC05Ljg3Nyw5Ljg3N2MtMy45MDUsMy45MDYtMy45MDUsMTAuMjM4LDAsMTQuMTQzDQoJCQljMS45NTIsMS45NTMsNC41MTIsMi45MjksNy4wNzEsMi45MjljMi41NTksMCw1LjExOS0wLjk3Niw3LjA3MS0yLjkyOWw5Ljg3Ny05Ljg3N0MyMDQuODgzLDI5Ljk2NiwyMDQuODgzLDIzLjYzNCwyMDAuOTc3LDE5LjcyOQ0KCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNzYuMDIzLDE0NC42ODVjLTMuOTA2LTMuOTA1LTEwLjIzOC0zLjkwNS0xNC4xNDMsMGwtOS44NzcsOS44NzdjLTMuOTA1LDMuOTA2LTMuOTA1LDEwLjIzOCwwLDE0LjE0Mw0KCQkJYzEuOTUyLDEuOTUzLDQuNTEyLDIuOTI5LDcuMDcxLDIuOTI5czUuMTE5LTAuOTc2LDcuMDcyLTIuOTI5bDkuODc3LTkuODc3Qzc5LjkyOCwxNTQuOTIyLDc5LjkyOCwxNDguNTksNzYuMDIzLDE0NC42ODV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik03Ni4wMjEsMjkuNjA2bC05Ljg3Ny05Ljg3N2MtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MiwwYy0zLjkwNSwzLjkwNi0zLjkwNSwxMC4yMzgsMCwxNC4xNDNsOS44NzcsOS44NzcNCgkJCWMxLjk1MiwxLjk1Myw0LjUxMiwyLjkyOSw3LjA3MSwyLjkyOXM1LjExOS0wLjk3Niw3LjA3MS0yLjkyOUM3OS45MjcsMzkuODQzLDc5LjkyNywzMy41MTEsNzYuMDIxLDI5LjYwNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ1OS41NCw0NjguMzg5Yy0wLjEyOS0wLjY0LTAuMzItMS4yNy0wLjU3LTEuODdjLTAuMjUtMC42LTAuNTYtMS4xOC0wLjkyLTEuNzJjLTAuMzYtMC41NS0wLjc4LTEuMDYtMS4yNC0xLjUzDQoJCQljLTAuNDYtMC40Ni0wLjk3LTAuODctMS41Mi0xLjI0Yy0wLjU0LTAuMzYtMS4xMi0wLjY3LTEuNzMtMC45MmMtMC41OTktMC4yNS0xLjIyOS0wLjQ0LTEuODctMC41N2MtMS4yOS0wLjI2LTIuNjItMC4yNi0zLjkwOSwwDQoJCQljLTAuNjMxLDAuMTMtMS4yNjEsMC4zMi0xLjg3LDAuNTdjLTAuNjAxLDAuMjUtMS4xODEsMC41Ni0xLjcyMSwwLjkyYy0wLjU1LDAuMzctMS4wNiwwLjc4LTEuNTIsMS4yNA0KCQkJYy0wLjQ2LDAuNDctMC44OCwwLjk4LTEuMjUsMS41M2MtMC4zNiwwLjU0LTAuNjcsMS4xMi0wLjkyLDEuNzJjLTAuMjUsMC42LTAuNDQsMS4yMy0wLjU3LDEuODcNCgkJCWMtMC4xMywwLjY1MS0wLjE5LDEuMzAxLTAuMTksMS45NjFjMCwwLjY1LDAuMDYsMS4zMSwwLjE5LDEuOTVjMC4xMywwLjY0LDAuMzIsMS4yNywwLjU3LDEuODdjMC4yNSwwLjYsMC41NiwxLjE4LDAuOTIsMS43Mw0KCQkJYzAuMzcsMC41NCwwLjc5LDEuMDYsMS4yNSwxLjUyYzAuNDYsMC40NiwwLjk3LDAuODgsMS41MiwxLjI0YzAuNTQsMC4zNiwxLjEyLDAuNjcsMS43MjEsMC45MmMwLjYwOSwwLjI1LDEuMjM5LDAuNDQsMS44NywwLjU3DQoJCQljMC42NSwwLjEzLDEuMzEsMC4yLDEuOTYsMC4yYzAuNjUsMCwxLjMxLTAuMDcsMS45NDktMC4yYzAuNjQxLTAuMTMsMS4yNy0wLjMyLDEuODctMC41N2MwLjYxLTAuMjUsMS4xOS0wLjU2LDEuNzMtMC45Mg0KCQkJYzAuNTUtMC4zNiwxLjA2LTAuNzgsMS41Mi0xLjI0YzAuNDYtMC40NiwwLjg4LTAuOTgsMS4yNC0xLjUyYzAuMzYxLTAuNTUsMC42Ny0xLjEzLDAuOTItMS43M2MwLjI1LTAuNiwwLjQ0LTEuMjMsMC41Ny0xLjg3DQoJCQlzMC4yLTEuMywwLjItMS45NUM0NTkuNzQsNDY5LjY4OSw0NTkuNjcsNDY5LjAzOSw0NTkuNTQsNDY4LjM4OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQwOS43MzksNDYwLjM0Nkg2Mi4xMzhjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoMzQ3LjZjNS41MjMsMCwxMC00LjQ3NywxMC4wMDEtMTANCgkJCUM0MTkuNzM5LDQ2NC44MjMsNDE1LjI2MSw0NjAuMzQ2LDQwOS43MzksNDYwLjM0NnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMS41NjMsNDI3LjkzMWgtNi44MDljLTMuODA2LTIxLjMxMi0yMi40NzYtMzcuNTQtNDQuODY0LTM3LjU0Yy0zLjMsMC02LjU5MSwwLjM2Mi05LjgwMywxLjA2N1YyOTMuMjkNCgkJCWMzNi40ODItNC45MDIsNjQuNzA0LTM2LjIzNiw2NC43MDQtNzQuMDM3YzAtMTkuNzA5LTcuNzgxLTM4LjUzMS0yMS41MjQtNTIuNDY0YzAuMTg2LTEuODE0LDAuMjc4LTMuNjQxLDAuMjc4LTUuNDY4DQoJCQljMC0yOS40NzctMjMuOTgxLTUzLjQ1OC01My40NTgtNTMuNDU4Yy0yOS40NzcsMC01My40NTgsMjMuOTgyLTUzLjQ1OCw1My40NThjMCwxLjgyNywwLjA5MywzLjY1MywwLjI3Nyw1LjQ2Nw0KCQkJYy0xMy43NDEsMTMuOTM0LTIxLjUyMywzMi43NTYtMjEuNTIzLDUyLjQ2NWMwLDM3LjgwMiwyOC4yMjMsNjkuMTM2LDY0LjcwNCw3NC4wMzd2ODkuNjJjLTQuNjg1LTEuNjMyLTkuNzE2LTIuNTItMTQuOTUxLTIuNTINCgkJCWMtMjUuMTI5LDAtNDUuNTczLDIwLjQ0NC00NS41NzMsNDUuNTc0djEuOTY4aC04LjUwNnYtMzUuMTNoMC4wMDFjNS41MjIsMCwxMC00LjQ3NywxMC0xMHYtNDNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtMC4wMDENCgkJCXYtNDcuMzI5YzAtMi44NDQtMS4yMTEtNS41NTMtMy4zMy03LjQ1TDMxNi4yNywyNDYuODZjLTMuNzk3LTMuMzk5LTkuNTQzLTMuMzk5LTEzLjM0LDBsLTI0Ljc4NywyMi4xOTFsLTI0Ljc4OC0yMi4xOTENCgkJCWMtMy43OTctMy4zOTgtOS41NDMtMy4zOTgtMTMuMzQsMGwtMjQuNzg4LDIyLjE5MWwtMjQuNzg4LTIyLjE5MWMtMy43OTctMy4zOTktOS41NDMtMy4zOTktMTMuMzQsMC4wMDFsLTI0Ljc4NywyMi4xOTENCgkJCWwtMjQuNzg4LTIyLjE5MWMtMy43OTctMy4zOTgtOS41NDMtMy4zOTgtMTMuMzQsMEw4OS4zOTgsMjY5LjA1TDY0LjYxLDI0Ni44NTljLTMuNzk2LTMuMzk5LTkuNTQzLTMuMzk5LTEzLjM0LTAuMDAxDQoJCQlsLTMxLjQ1OCwyOC4xNjNjLTIuMTE5LDEuODk3LTMuMzMsNC42MDYtMy4zMyw3LjQ1MXY0Ny4zMjloLTAuMDAxYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjQzYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMC4wMDENCgkJCXYzNS4xM2gtNi4wNDRjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBWNTAyYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoNDkxLjEyM2M1LjUyMiwwLDEwLTQuNDc3LDEwLTEwdi02NC4wNjkNCgkJCUM1MTEuNTYzLDQzMi40MDgsNTA3LjA4NSw0MjcuOTMxLDUwMS41NjMsNDI3LjkzMXogTTQ0OS44OSw0MTAuMzkxYzExLjI5NiwwLDIwLjkwNSw3LjM2MiwyNC4yODEsMTcuNTRoLTIzLjQ2MnYtMS45NjgNCgkJCWMwLTUuNDQxLTAuOTU5LTEwLjY2Mi0yLjcxNi0xNS41MDRDNDQ4LjYyLDQxMC40MTQsNDQ5LjI1Myw0MTAuMzkxLDQ0OS44OSw0MTAuMzkxeiBNNDIwLjA4NywxODUuNTc0djMzLjExOGwtMTAuNDA3LTEwLjQwNw0KCQkJYy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBjLTMuOTA1LDMuOTA1LTMuOTA1LDEwLjIzNywwLDE0LjE0M2wyMy4yNTcsMjMuMjU3YzAuNDA3LDAuNDA2LDAuODM5LDAuNzcsMS4yOTMsMS4wOTENCgkJCXYyNi4yNjVjLTI1LjQwNS00LjcxMi00NC43MDQtMjcuMDM5LTQ0LjcwNC01My43ODljMC0xNS44MTYsNi44NDUtMzAuODU0LDE4Ljc3OC00MS4yNTZjMi43NC0yLjM4OCwzLjk2OS02LjA3NSwzLjIwOS05LjYyOQ0KCQkJYy0wLjQ5Mi0yLjI5OS0wLjc0MS00LjY3LTAuNzQxLTcuMDQ3YzAtMTguNDQ5LDE1LjAwOS0zMy40NTgsMzMuNDU4LTMzLjQ1OGMxOC40NDksMCwzMy40NTgsMTUuMDA5LDMzLjQ1OCwzMy40NTgNCgkJCWMwLDIuMzc4LTAuMjQ5LDQuNzQ4LTAuNzQxLDcuMDQ1Yy0wLjc2MiwzLjU1NSwwLjQ2Nyw3LjI0MywzLjIwOCw5LjYzMmMxMS45MzUsMTAuNDAzLDE4Ljc3OSwyNS40NCwxOC43NzksNDEuMjU2DQoJCQljMCwyNi43NS0xOS4yOTksNDkuMDc2LTQ0LjcwNCw1My43ODh2LTI2LjI2NWMwLjQ1My0wLjMyMiwwLjg4Ny0wLjY4NSwxLjI5My0xLjA5MWwyMy4yNTctMjMuMjU3DQoJCQljMy45MDUtMy45MDUsMy45MDUtMTAuMjM3LDAtMTQuMTQzYy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBsLTEwLjQwNywxMC40MDd2LTMzLjExOGMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwDQoJCQlDNDI0LjU2NCwxNzUuNTc0LDQyMC4wODcsMTgwLjA1MSw0MjAuMDg3LDE4NS41NzR6IE0zNzkuNTYzLDQyNS45NjNjMC0xNC4xMDIsMTEuNDcyLTI1LjU3NCwyNS41NzMtMjUuNTc0DQoJCQljMTQuMTAyLDAsMjUuNTczLDExLjQ3MiwyNS41NzMsMjUuNTc0djEuOTY4aC01MS4xNDZWNDI1Ljk2M3ogTTI4OC4xNDMsMjg2Ljk0MWwyMS40NTctMTkuMjFsMjEuNDU3LDE5LjIxVjMyOS44aC00Mi45MTRWMjg2Ljk0MQ0KCQkJeiBNMjI1LjIyNywyODYuOTQxbDIxLjQ1OC0xOS4yMWwyMS40NTcsMTkuMjFWMzI5LjhoLTQyLjkxNVYyODYuOTQxeiBNMTYyLjMxMywyODYuOTQxbDIxLjQ1Ny0xOS4yMWwyMS40NTgsMTkuMjFWMzI5LjhoLTQyLjkxNQ0KCQkJVjI4Ni45NDF6IE05OS4zOTgsMjg2Ljk0MWwyMS40NTctMTkuMjFsMjEuNDU4LDE5LjIxVjMyOS44SDk5LjM5OFYyODYuOTQxeiBNMzYuNDgzLDI4Ni45NDFsMjEuNDU3LTE5LjIxbDIxLjQ1NywxOS4yMVYzMjkuOA0KCQkJSDM2LjQ4M1YyODYuOTQxeiBNMjYuNDgyLDM0OS44MDFoMzE0LjU3NXYyM0gyNi40ODJWMzQ5LjgwMXogTTMzMS4wNTcsMzkyLjgwMXYzNS4xM2gtNDIuOTE0di0zNS4xM0gzMzEuMDU3eiBNMjY4LjE0MywzOTIuODAxDQoJCQl2MzUuMTNoLTQyLjkxNXYtMzUuMTNIMjY4LjE0M3ogTTIwNS4yMjcsMzkyLjgwMXYzNS4xM2gtNDIuOTE1di0zNS4xM0gyMDUuMjI3eiBNMTQyLjMxMywzOTIuODAxdjM1LjEzSDk5LjM5OHYtMzUuMTNIMTQyLjMxM3oNCgkJCSBNNzkuMzk4LDM5Mi44MDF2MzUuMTNIMzYuNDgzdi0zNS4xM0g3OS4zOTh6IE0yMC40MzgsNDkydi00NC4wNjloNDcxLjEyM1Y0OTJIMjAuNDM4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjc4LjQ4NywxMjcuODQzYy0wLjU1NiwwLTEuMTEyLDAuMDExLTEuNjY4LDAuMDMzYy03LjU0My0xNC40Mi0yMi41MTktMjMuOTIzLTM4Ljg5NC0yMy45MjMNCgkJCWMtMjAuNTg3LDAtMzguMDQ3LDE0LjY4My00Mi43NzMsMzQuMzQ2Yy0xOS43ODMsMS45My0zNS4zMDksMTkuMDAxLTM1LjMwOSwzOS43MDdjMCwyMS45OTQsMTcuNTE3LDM5Ljg4NywzOS4wNDgsMzkuODg3aDc5LjU5Ng0KCQkJYzI0LjI4NSwwLDQ0LjA0MS0yMC4xOTgsNDQuMDQxLTQ1LjAyNUMzMjIuNTI3LDE0OC4wNDEsMzAyLjc3MSwxMjcuODQzLDI3OC40ODcsMTI3Ljg0M3ogTTI3OC40ODcsMTk3Ljg5M2gtNzkuNTk2DQoJCQljLTEwLjUwMywwLTE5LjA0OC04LjkyMS0xOS4wNDgtMTkuODg3YzAtMTAuOTY3LDguNTQ1LTE5Ljg4OCwxOS4wNDgtMTkuODg4YzEuMDU2LDAsMi4xNDgsMC4wOTksMy4yNDQsMC4yOTYNCgkJCWMyLjg5MywwLjUxNiw1Ljg3LTAuMjY3LDguMTM1LTIuMTQxYzIuMjY1LTEuODc1LDMuNTktNC42NTIsMy42MjMtNy41OTJjMC4xNTMtMTMuNjM1LDEwLjkzMy0yNC43MjgsMjQuMDMyLTI0LjcyOA0KCQkJYzEwLjYzOCwwLDE5Ljg3Nyw3LjEwOCwyMi45ODgsMTcuNjg5YzEuNTExLDUuMTM1LDYuNzk0LDguMTczLDExLjk5NCw2Ljg4NmMxLjgzOC0wLjQ1NCwzLjcxNS0wLjY4NCw1LjU4LTAuNjg0DQoJCQljMTMuMjU2LDAsMjQuMDQxLDExLjIyNiwyNC4wNDEsMjUuMDI1QzMwMi41MjcsMTg2LjY2NywyOTEuNzQzLDE5Ny44OTMsMjc4LjQ4NywxOTcuODkzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Gallery:fNe,Garage:SNe,Garden:xNe,"Ground Floor":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAyIDUxMi4wMDIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIHN0cm9rZT0iIiBkPSJNNDc3LjQ0NCw0NzEuMDM0aC0zLjgzM2MtMy42NzktMTQuNDM1LTE1LjkyNi0yNS4zNTYtMzAuODU5LTI3LjI0MVYzMDguNTg3aDIuMTM4YzkuOTE3LDAsMTcuOTg1LTguMDY4LDE3Ljk4NS0xNy45ODYNCgkJCWMwLTkuOTE3LTguMDY4LTE3Ljk4NS0xNy45ODUtMTcuOTg1aC0yLjEzOFYxMjkuMzgyaDkuODE1YzcuMTk3LDAsMTMuMDUyLTUuODU1LDEzLjA1Mi0xMy4wNTJ2LTE0LjkwNA0KCQkJYzAtMC4wMzMtMC4wMDUtMC4wNjUtMC4wMDUtMC4wOThjLTAuMDAxLTAuMDk4LTAuMDA5LTAuMTk2LTAuMDE1LTAuMjk0Yy0wLjAwOS0wLjE3MS0wLjAyMS0wLjM0Mi0wLjA0Mi0wLjUxDQoJCQljLTAuMDExLTAuMDg5LTAuMDI2LTAuMTc3LTAuMDQxLTAuMjY2Yy0wLjAyOS0wLjE4My0wLjA2NS0wLjM2NC0wLjEwOC0wLjU0MmMtMC4wMS0wLjA0LTAuMDE0LTAuMDgxLTAuMDI0LTAuMTIxTDQ0Ni4xMjMsMjUuNDINCgkJCWMtMS41NzQtNi4wNi03LjA0Ny0xMC4yOTMtMTMuMzA3LTEwLjI5M2gtNDkuMTA1Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3czMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDQ4LjQ2OGwxNi43MzQsNjQuNDQNCgkJCUgzMzUuMzcyTDI5Mi4zNDcsMjkuN2g0NS44NjZjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N2MwLTQuMDI1LTMuMjYyLTcuMjg3LTcuMjg3LTcuMjg3aC01NS41OTZsLTAuOTI2LTEuMzg3DQoJCQlDMjc1Ljk0OCw1LjEzNywyNjYuMzQyLDAsMjU1Ljk5NywwYy0xMC4zNDUsMC0xOS45NSw1LjEzNi0yNS42OTQsMTMuNzM5bC0wLjkyNywxLjM4OEg3OS4xNzgNCgkJCWMtNi4yNjEsMC0xMS43MzMsNC4yMzItMTMuMzA3LDEwLjI5M0w0Ni42MDksOTkuNTk1Yy0wLjAxLDAuMDQtMC4wMTQsMC4wODEtMC4wMjQsMC4xMjFjLTAuMDQzLDAuMTc4LTAuMDc5LDAuMzU5LTAuMTA4LDAuNTQyDQoJCQljLTAuMDE0LDAuMDg5LTAuMDMsMC4xNzctMC4wNDEsMC4yNjZjLTAuMDIxLDAuMTY4LTAuMDMzLDAuMzM4LTAuMDQyLDAuNTFjLTAuMDA1LDAuMDk4LTAuMDE0LDAuMTk2LTAuMDE1LDAuMjk0DQoJCQljMCwwLjAzMy0wLjAwNSwwLjA2NS0wLjAwNSwwLjA5OHYxNC45MDRjMCw3LjE5Nyw1Ljg1NSwxMy4wNTIsMTMuMDUyLDEzLjA1Mmg5LjgxNXYxNDMuMjMzaC0yLjEzOA0KCQkJYy05LjkxNywwLTE3Ljk4NSw4LjA2OC0xNy45ODUsMTcuOTg1czguMDY4LDE3Ljk4NiwxNy45ODUsMTcuOTg2aDIuMTM4djQ2LjY5NmMwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQlzNy4yODctMy4yNjIsNy4yODctNy4yODd2LTQ2LjY5NmgzNDQuMzY0djEyOS4zMTFjLTAuMDU1LTAuMDMyLTAuMTEzLTAuMDYtMC4xNjktMC4wOTJjLTAuNzE0LTAuNDE1LTEuNDM5LTAuODEtMi4xNzYtMS4xODINCgkJCWMtMC4xNDQtMC4wNzMtMC4yOTEtMC4xMzktMC40MzUtMC4yMWMtMC42MTQtMC4zMDItMS4yMzUtMC41ODgtMS44NjMtMC44NTljLTAuMjEzLTAuMDkyLTAuNDI1LTAuMTgzLTAuNjM5LTAuMjcyDQoJCQljLTAuNzI3LTAuMy0xLjQ1OS0wLjU4NS0yLjIwMi0wLjg0NGMtMC4wNDQtMC4wMTUtMC4wODctMC4wMzMtMC4xMzEtMC4wNDljLTAuNzg0LTAuMjcxLTEuNTc4LTAuNTExLTIuMzc4LTAuNzM2DQoJCQljLTAuMjE5LTAuMDYyLTAuNDQtMC4xMTgtMC42Ni0wLjE3NmMtMC42NDItMC4xNjktMS4yODktMC4zMjMtMS45NC0wLjQ2MmMtMC4xODgtMC4wNC0wLjM3NS0wLjA4NS0wLjU2NC0wLjEyMw0KCQkJYy0wLjgxMi0wLjE2Mi0xLjYyOS0wLjMtMi40NTEtMC40MTRjLTAuMTc4LTAuMDI1LTAuMzU4LTAuMDQyLTAuNTM3LTAuMDY0Yy0wLjY3MS0wLjA4NC0xLjM0NS0wLjE1Mi0yLjAyMi0wLjIwNA0KCQkJYy0wLjIzNC0wLjAxOC0wLjQ2OC0wLjAzNi0wLjcwMi0wLjA1MWMtMC44NDItMC4wNTEtMS42ODUtMC4wODUtMi41MzMtMC4wODVjLTE1LjQ0NiwwLTI5LjY5OSw4LjYxLTM3LjA2MiwyMS45MTUNCgkJCWMtMC44NDYtMC4wMi0xLjY4NCwwLjAwMS0yLjUxNiwwLjA0NmMtMC4xOTUsMC4wMTEtMC4zODcsMC4wMzQtMC41ODEsMC4wNDhjLTAuNjM2LDAuMDQ3LTEuMjY4LDAuMTA3LTEuODk0LDAuMTkNCgkJCWMtMC4yMywwLjAzMS0wLjQ1OCwwLjA3MS0wLjY4NiwwLjEwN2MtMC41ODYsMC4wOTItMS4xNjgsMC4xOTctMS43NDQsMC4zMjFjLTAuMjM0LDAuMDUtMC40NjUsMC4xMDQtMC42OTcsMC4xNTkNCgkJCWMtMC41NzEsMC4xMzctMS4xMzUsMC4yODktMS42OTUsMC40NTdjLTAuMjE3LDAuMDY1LTAuNDM1LDAuMTI4LTAuNjUsMC4xOThjLTAuNTg4LDAuMTktMS4xNjcsMC40LTEuNzQsMC42MjQNCgkJCWMtMC4xNzEsMC4wNjctMC4zNDUsMC4xMjctMC41MTUsMC4xOTdjLTAuNzA1LDAuMjktMS4zOTksMC42MDItMi4wNzksMC45NDFjLTAuMDI4LDAuMDE0LTAuMDU4LDAuMDI2LTAuMDg2LDAuMDQNCgkJCWMtMC43MzMsMC4zNjktMS40NSwwLjc2Ni0yLjE1LDEuMTljLTAuMDY2LDAuMDQtMC4xMjksMC4wODYtMC4xOTUsMC4xMjdjLTAuNiwwLjM3LTEuMTg3LDAuNzU5LTEuNzYsMS4xNjkNCgkJCWMtMC4xODQsMC4xMzItMC4zNjEsMC4yNzItMC41NDIsMC40MDhjLTAuNDQ3LDAuMzM1LTAuODg4LDAuNjc3LTEuMzE2LDEuMDM2Yy0wLjIwNiwwLjE3Mi0wLjQwNywwLjM1MS0wLjYwOSwwLjUyOQ0KCQkJYy0wLjM5MSwwLjM0NS0wLjc3NCwwLjY5OC0xLjE0OCwxLjA2M2MtMC4yMDEsMC4xOTYtMC40MDEsMC4zOTQtMC41OTcsMC41OTZjLTAuMzY1LDAuMzc2LTAuNzE3LDAuNzYzLTEuMDY0LDEuMTU4DQoJCQljLTAuMTc4LDAuMjAzLTAuMzU5LDAuNDA0LTAuNTMzLDAuNjEyYy0wLjM2NywwLjQ0MS0wLjcxNywwLjg5Ny0xLjA2LDEuMzU5Yy0wLjEzMSwwLjE3Ni0wLjI2OSwwLjM0Ni0wLjM5NiwwLjUyNQ0KCQkJYy0wLjg4NSwxLjI0Ni0xLjY4OSwyLjU2LTIuMzkyLDMuOTQ0aC0zNS40NTdWMzQ2LjE4MWMwLTcuMTM1LTUuODA1LTEyLjkzOS0xMi45MzktMTIuOTM5aC03My4zNDkNCgkJCWMtNy4xMzUsMC0xMi45MzksNS44MDUtMTIuOTM5LDEyLjkzOXYxMjQuODUzaC02MC42MzljLTAuMTg4LTAuNDY5LTAuMzk5LTAuOTI1LTAuNjA1LTEuMzgzDQoJCQljLTAuMDg4LTAuMTk0LTAuMTY2LTAuMzk0LTAuMjU2LTAuNTg2Yy0wLjM1My0wLjc0OS0wLjcyOC0xLjQ4My0xLjEyOC0yLjIwMmMtMC4wNzUtMC4xMzUtMC4xNi0wLjI2My0wLjIzNi0wLjM5Nw0KCQkJYy0wLjMzMS0wLjU3Ny0wLjY3My0xLjE0Ny0xLjAzNC0xLjcwM2MtMC4xNTEtMC4yMzItMC4zMTEtMC40NTYtMC40NjctMC42ODVjLTAuMzA1LTAuNDQ4LTAuNjE2LTAuODkxLTAuOTQtMS4zMjQNCgkJCWMtMC4xODMtMC4yNDUtMC4zNzItMC40ODQtMC41NjItMC43MjRjLTAuMzItMC40MDUtMC42NDYtMC44MDMtMC45ODItMS4xOTNjLTAuMjAyLTAuMjM0LTAuNDA1LTAuNDY3LTAuNjEyLTAuNjk1DQoJCQljLTAuMzUyLTAuMzg4LTAuNzE0LTAuNzY2LTEuMDgxLTEuMTM4Yy0wLjIwNS0wLjIwNy0wLjQwNy0wLjQxNy0wLjYxNi0wLjYyYy0wLjQxOS0wLjQwNS0wLjg1Mi0wLjc5NC0xLjI5LTEuMTc4DQoJCQljLTAuMTcyLTAuMTUxLTAuMzM3LTAuMzA4LTAuNTExLTAuNDU1Yy0wLjYyMi0wLjUyNS0xLjI1OS0xLjAzMS0xLjkxNC0xLjUxM2MtMC4wNjctMC4wNDktMC4xMzctMC4wOTMtMC4yMDQtMC4xNDENCgkJCWMtMC41ODgtMC40MjYtMS4xODgtMC44MzYtMS44MDEtMS4yMjZjLTAuMjI1LTAuMTQ0LTAuNDU4LTAuMjc2LTAuNjg2LTAuNDE0Yy0wLjQ2Ny0wLjI4My0wLjkzOC0wLjU2Mi0xLjQxOC0wLjgyNA0KCQkJYy0wLjI3LTAuMTQ4LTAuNTQ1LTAuMjg3LTAuODE5LTAuNDI4Yy0wLjQ1Ni0wLjIzNC0wLjkxNi0wLjQ2MS0xLjM4My0wLjY3NmMtMC4yOS0wLjEzNC0wLjU4MS0wLjI2NC0wLjg3NS0wLjM5MQ0KCQkJYy0wLjQ3My0wLjIwMy0wLjk1My0wLjM5NC0xLjQzNi0wLjU3OGMtMC4yOTEtMC4xMS0wLjU3OS0wLjIyMy0wLjg3My0wLjMyNmMtMC41MjgtMC4xODYtMS4wNjUtMC4zNTMtMS42MDQtMC41MTQNCgkJCWMtMC4yNTYtMC4wNzctMC41MDgtMC4xNjItMC43NjYtMC4yMzNjLTAuOC0wLjIyMS0xLjYwOC0wLjQyMS0yLjQyOC0wLjU4OGMtMC41MjctMC43MTgtMS4wNzQtMS40MTgtMS42MzctMi4wOTkNCgkJCWMtMC4xOTMtMC4yMzMtMC4zOTgtMC40NTItMC41OTUtMC42ODFjLTAuMzc4LTAuNDQtMC43NTQtMC44ODItMS4xNDctMS4zMDZjLTAuMjQ2LTAuMjY1LTAuNTA1LTAuNTE0LTAuNzU3LTAuNzcyDQoJCQljLTAuMzYtMC4zNjktMC43MTYtMC43NDQtMS4wODctMS4xYy0wLjI3Ny0wLjI2NS0wLjU2Ni0wLjUxNC0wLjg0OS0wLjc3MmMtMC4zNjItMC4zMy0wLjcxOS0wLjY2NC0xLjA5MS0wLjk4MQ0KCQkJYy0wLjMwMS0wLjI1Ny0wLjYxNC0wLjQ5OC0wLjkyMS0wLjc0N2MtMC4zNjgtMC4yOTgtMC43MzItMC42LTEuMTA4LTAuODg2Yy0wLjMyMi0wLjI0NC0wLjY1NC0wLjQ3Mi0wLjk4MS0wLjcwNw0KCQkJYy0wLjM3Ni0wLjI3LTAuNzQ5LTAuNTQ0LTEuMTMzLTAuODAxYy0wLjMzOS0wLjIyNy0wLjY4Ny0wLjQzOS0xLjAzMS0wLjY1N2MtMC4zODctMC4yNDUtMC43NzEtMC40OTMtMS4xNjQtMC43MjUNCgkJCWMtMC4zNTMtMC4yMDktMC43MTUtMC40MDItMS4wNzQtMC42MDFjLTAuMzk3LTAuMjItMC43OTItMC40NDMtMS4xOTYtMC42NTFjLTAuMzY4LTAuMTktMC43NDItMC4zNjQtMS4xMTUtMC41NDQNCgkJCWMtMC40MDYtMC4xOTUtMC44MTEtMC4zOTMtMS4yMjQtMC41NzZjLTAuMzgtMC4xNjktMC43NjUtMC4zMjMtMS4xNS0wLjQ4MmMtMC40MTctMC4xNzEtMC44MzItMC4zNDQtMS4yNTUtMC41MDMNCgkJCWMtMC4zODktMC4xNDctMC43ODQtMC4yOC0xLjE3OC0wLjQxNmMtMC40MjctMC4xNDctMC44NTQtMC4yOTYtMS4yODYtMC40M2MtMC4zOTgtMC4xMjQtMC44MDEtMC4yMzYtMS4yMDQtMC4zNDkNCgkJCWMtMC40MzctMC4xMjMtMC44NzMtMC4yNDYtMS4zMTQtMC4zNTZjLTAuNDA3LTAuMTAxLTAuODE3LTAuMTkxLTEuMjI3LTAuMjgxYy0wLjQ0NS0wLjA5OC0wLjg5LTAuMTk0LTEuMzM4LTAuMjc5DQoJCQljLTAuNDE0LTAuMDc4LTAuODMxLTAuMTQ1LTEuMjQ4LTAuMjEyYy0wLjQ1My0wLjA3Mi0wLjkwNS0wLjE0My0xLjM2MS0wLjIwMmMtMC40Mi0wLjA1NC0wLjg0Mi0wLjA5OC0xLjI2NC0wLjE0MQ0KCQkJYy0wLjQ2LTAuMDQ3LTAuOTIxLTAuMDktMS4zODUtMC4xMjJjLTAuNDI0LTAuMDMtMC44NS0wLjA1MS0xLjI3Ni0wLjA2OWMtMC4yNjktMC4wMTItMC41MzQtMC4wMzYtMC44MDQtMC4wNDN2LTI5Ljg1MQ0KCQkJYzAtNC4wMjQtMy4yNjItNy4yODctNy4yODctNy4yODdjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODd2MzEuODU2Yy0xNy4wNTMsNS4yNzktMjkuODM5LDIwLjM1Ni0zMS43NSwzOC42MjNoLTIuOTQyDQoJCQljLTExLjI5NCwwLTIwLjQ4Myw5LjE4OS0yMC40ODMsMjAuNDgzczkuMTg5LDIwLjQ4MywyMC40ODMsMjAuNDgzaDQ0Mi44OTRjMTEuMjk0LDAsMjAuNDgzLTkuMTg5LDIwLjQ4My0yMC40ODMNCgkJCUM0OTcuOTI3LDQ4MC4yMjMsNDg4LjczOCw0NzEuMDM0LDQ3Ny40NDQsNDcxLjAzNHogTTIzOS4zMzMsMjYuNDZjMC0wLjAwMSwwLjAwMS0wLjAwMSwwLjAwMS0wLjAwMWwzLjA4OS00LjYyNw0KCQkJYzMuMDM0LTQuNTQ1LDguMTA5LTcuMjU4LDEzLjU3NC03LjI1OGM1LjQ2NSwwLDEwLjU0LDIuNzEzLDEzLjU3NCw3LjI1OWw0OC4yNzgsNzIuMzA4aC01LjIwMmwtNDYuMTAzLTY5LjA1Mw0KCQkJYy0yLjM1OC0zLjUzMS02LjMtNS42MzktMTAuNTQ2LTUuNjM5Yy00LjI0NiwwLTguMTg5LDIuMTA4LTEwLjU0Niw1LjYzOUwxOTkuMzQ3LDk0LjE0aC01LjIwMmw4Ljc3OC0xMy4xNDhMMjM5LjMzMywyNi40NnoNCgkJCSBNMjk1LjEyNCw5NC4xNEgyMTYuODdsMzkuMTI3LTU4LjYwNEwyOTUuMTI0LDk0LjE0eiBNNzkuODE2LDI5LjdoMTM5LjgzMUwyMDkuNTEsNDQuODgzTDE3Ni42MjIsOTQuMTRINjMuMDgxTDc5LjgxNiwyOS43eg0KCQkJIE02MC45NDgsMTE0LjgwOXYtNi4wOTZoMzkwLjA5OHY2LjA5Nkg2MC45NDh6IE00MjguMTc5LDEyOS4zODJ2MTQzLjIzM0g4My44MTVWMTI5LjM4Mkg0MjguMTc5eiBNNjcuMTA0LDI5NC4wMTQNCgkJCWMtMS44ODEsMC0zLjQxMi0xLjUzMS0zLjQxMi0zLjQxM2MwLTEuODgxLDEuNTMtMy40MTIsMy40MTItMy40MTJINDQ0Ljg5YzEuODgxLDAsMy40MTIsMS41MzEsMy40MTIsMy40MTINCgkJCWMwLDEuODgyLTEuNTMsMy40MTMtMy40MTIsMy40MTNINjcuMTA0eiBNMzYwLjQxNiw0NzAuODkzYzAuMzE3LTAuMTg3LDAuNjM4LTAuMzY4LDAuOTY3LTAuNTM1DQoJCQljMC4xNTYtMC4wNzksMC4zMTYtMC4xNDksMC40NzQtMC4yMjNjMC4yOC0wLjEzMSwwLjU2Mi0wLjI1NiwwLjg1LTAuMzcxYzAuMTgzLTAuMDczLDAuMzY4LTAuMTQyLDAuNTUzLTAuMjA4DQoJCQljMC4yNzItMC4wOTgsMC41NDctMC4xODcsMC44MjQtMC4yNzFjMC4yMDEtMC4wNiwwLjQwMi0wLjEyMSwwLjYwNS0wLjE3NGMwLjI3Ni0wLjA3MiwwLjU1Ni0wLjEzMiwwLjgzNi0wLjE5DQoJCQljMC4yMDctMC4wNDMsMC40MTEtMC4wOTEsMC42Mi0wLjEyNmMwLjM1Ni0wLjA2LDAuNzE4LTAuMTAyLDEuMDgxLTAuMTM5YzAuMTc2LTAuMDE4LDAuMzUyLTAuMDM5LDAuNTI5LTAuMDUyDQoJCQljMC40NDYtMC4wMzEsMC44OTYtMC4wNDcsMS4zNS0wLjA0M2MwLjMzNywwLjAwMywwLjY3OSwwLjAzMiwxLjAyLDAuMDU2YzAuMjM0LDAuMDE2LDAuNDY3LDAuMDIsMC43MDIsMC4wNDYNCgkJCWMwLjU3MiwwLjA2NSwxLjE0NiwwLjE1NSwxLjcxOSwwLjI3OWMzLjUwOSwwLjc1Niw3LjA0Ny0xLjE1NSw4LjMzNy00LjUwN2M0LjA5Mi0xMC42MzksMTQuNDk2LTE3Ljc4NywyNS44OTEtMTcuNzg3DQoJCQljNy45NSwwLDE1LjUzMywzLjQyOCwyMC44MDYsOS40MDZjMC4yMSwwLjIzOCwwLjQzMywwLjQ2LDAuNjY5LDAuNjY2YzAuMDEzLDAuMDExLDAuMDI4LDAuMDIsMC4wNDEsMC4wMzINCgkJCWMwLjkzMiwwLjgwNCwyLjA0MywxLjM1NSwzLjIzLDEuNjA4YzAuOTAzLDAuMTkzLDEuODQ4LDAuMjE2LDIuNzg3LDAuMDUxYzEwLjQxNi0xLjgzMSwxOS45NjQsMy44NjgsMjMuOTIyLDEyLjYyNGgtOTguMDYxDQoJCQlDMzYwLjI1LDQ3MC45ODUsMzYwLjMzNCw0NzAuOTQyLDM2MC40MTYsNDcwLjg5M3ogTTI5MS4wMzgsMzQ3LjgxNXYxMjMuMjE5aC03MC4wODJWMzQ3LjgxNUgyOTEuMDM4eiBNNzcuNzk3LDQ0NS4zNTINCgkJCWMwLjc2Ny0wLjEyMSwxLjUzNi0wLjIxNSwyLjMwNS0wLjI3OWMwLjA2Ni0wLjAwNSwwLjEzMi0wLjAwOSwwLjE5OC0wLjAxNGMwLjc4NC0wLjA2LDEuNTY3LTAuMDk2LDIuMzQzLTAuMDk2DQoJCQljMTAuNjg5LDAsMjAuNDY1LDUuNDI0LDI2LjE1LDE0LjUwOWMxLjE4OCwxLjg5OSwzLjE4NSwzLjE0Nyw1LjQxNCwzLjM4MWMwLjUyMywwLjA1NSwxLjAzOCwwLjEzNSwxLjU0OSwwLjIyNg0KCQkJYzAuMTE1LDAuMDIsMC4yMywwLjA0MSwwLjM0NSwwLjA2M2MwLjUsMC4wOTcsMC45OTUsMC4yMDgsMS40ODMsMC4zMzhjMC4wNjMsMC4wMTcsMC4xMjUsMC4wMzcsMC4xODksMC4wNTUNCgkJCWMwLjQ0NCwwLjEyMywwLjg4MSwwLjI2MSwxLjMxMywwLjQxMWMwLjA5OSwwLjAzNCwwLjE5OSwwLjA2NywwLjI5OCwwLjEwM2MwLjQ2NywwLjE2OSwwLjkyNywwLjM1MywxLjM3OSwwLjU1Mw0KCQkJYzAuMDg4LDAuMDM5LDAuMTc1LDAuMDgxLDAuMjYzLDAuMTIyYzAuNDAzLDAuMTg1LDAuOCwwLjM4LDEuMTksMC41ODhjMC4wNzQsMC4wMzksMC4xNDgsMC4wNzYsMC4yMjIsMC4xMTYNCgkJCWMwLjQzMSwwLjIzNiwwLjg1MiwwLjQ4OCwxLjI2NSwwLjc1MmMwLjA5NCwwLjA2LDAuMTg3LDAuMTIyLDAuMjgsMC4xODRjMC4zODgsMC4yNTcsMC43NjksMC41MjMsMS4xMzksMC44MDMNCgkJCWMwLjAzMiwwLjAyNCwwLjA2NiwwLjA0NywwLjA5OCwwLjA3MmMwLjM5MiwwLjMsMC43NywwLjYxNywxLjE0MSwwLjk0M2MwLjA4NywwLjA3NywwLjE3NCwwLjE1NCwwLjI2LDAuMjMyDQoJCQljMC4zNjUsMC4zMzEsMC43MjIsMC42NzEsMS4wNjQsMS4wMjdjMC4wMjksMC4wMywwLjA1NiwwLjA2MiwwLjA4NCwwLjA5MmMwLjMxOSwwLjMzNiwwLjYyNSwwLjY4MywwLjkyMywxLjAzOQ0KCQkJYzAuMDcyLDAuMDg2LDAuMTQ1LDAuMTcyLDAuMjE2LDAuMjZjMC4wNTMsMC4wNjYsMC4xMDEsMC4xMzYsMC4xNTQsMC4yMDJINTIuMTgxQzU0LjIyOSw0NTcuODY4LDY0LjY0Myw0NDcuNDM5LDc3Ljc5Nyw0NDUuMzUyeg0KCQkJIE00NzcuNDQ0LDQ5Ny40MjdIMzQuNTVjLTMuMjU5LDAtNS45MS0yLjY1MS01LjkxLTUuOTFjMC0zLjI1OSwyLjY1MS01LjkxLDUuOTEtNS45MWg0NDIuODk0YzMuMjU5LDAsNS45MSwyLjY1MSw1LjkxLDUuOTENCgkJCUM0ODMuMzU0LDQ5NC43NzYsNDgwLjcwMyw0OTcuNDI3LDQ3Ny40NDQsNDk3LjQyN3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgIGQ9Ik0xODYuMjEzLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzN2MtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4OCw3LjI4N2g4Ni43OWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkzLjUsMjM0LjgzNSwxOTAuMjM4LDIzMS41NzIsMTg2LjIxMywyMzEuNTcyeiBNMTY4LjMwMywyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIG9wYWNpdHk9IjAuMjUiICBkPSJNMjk5LjY2OCwyMzEuNTcyaC0zLjMzOHYtNjUuNzQ2YzAtNS43MjQtNC42NTctMTAuMzgtMTAuMzgtMTAuMzhoLTU5LjM1NWMtNS43MjQsMC0xMC4zOCw0LjY1Ny0xMC4zOCwxMC4zOHY2NS43NDYNCgkJCWgtMy4zMzhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMC4wMDEsNC4wMjQsMy4yNjMsNy4yODcsNy4yODcsNy4yODdoODYuNzkxYzQuMDI1LDAsNy4yODctMy4yNjIsNy4yODctNy4yODcNCgkJCUMzMDYuOTU1LDIzNC44MzUsMzAzLjY5MywyMzEuNTcyLDI5OS42NjgsMjMxLjU3MnogTTI4MS43NTgsMjMxLjU3M2gtNTAuOTd2LTYxLjU1NGg1MC45N1YyMzEuNTczeiIvPg0KICAgICAgICA8cGF0aCBvcGFjaXR5PSIwLjI1IiAgZD0iTTQxMi41NzIsMjMxLjU3MmgtMy4zMzh2LTY1Ljc0NmMwLTUuNzI0LTQuNjU3LTEwLjM4LTEwLjM3OS0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDg2Ljc5MWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDNDE5Ljg1OSwyMzQuODM1LDQxNi41OTcsMjMxLjU3Miw0MTIuNTcyLDIzMS41NzJ6IE0zOTQuNjYxLDIzMS41NzNoLTUwLjk3di02MS41NTRoNTAuOTdWMjMxLjU3M3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4Mi44MTMsNDEzLjgzM2gtMC41Mjh2LTYwLjA0NWMwLTUuNTY2LTQuNTI5LTEwLjA5NS0xMC4wOTUtMTAuMDk1aC01My44ODZjLTUuNTY2LDAtMTAuMDk1LDQuNTI5LTEwLjA5NSwxMC4wOTV2NjAuMDQ1DQoJCQloLTAuNTI4Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3YzAsNC4wMjUsMy4yNjIsNy4yODcsNy4yODcsNy4yODdoNy44MTRoNTkuNTA0aDcuODE0YzQuMDI1LDAsNy4yODctMy4yNjIsNy4yODctNy4yODcNCgkJCUMxOTAuMSw0MTcuMDk1LDE4Ni44MzgsNDEzLjgzMywxODIuODEzLDQxMy44MzN6IE0xNjcuNzEyLDQxMy44MzNoLTQ0LjkzMXYtNTUuNTY3aDQ0LjkzMVY0MTMuODMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDA0LjMxNCw0MTMuODMzaC0wLjUyOHYtNjAuMDQ1YzAtNS41NjYtNC41MjktMTAuMDk1LTEwLjA5NS0xMC4wOTVoLTUzLjg4NmMtNS41NjYsMC0xMC4wOTYsNC41MjktMTAuMDk2LDEwLjA5NXY2MC4wNDUNCgkJCWgtMC41MjhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMCw0LjAyNSwzLjI2Miw3LjI4Nyw3LjI4Nyw3LjI4N2g3LjgxNEgzOTYuNWg3LjgxNGM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDNDExLjYwMSw0MTcuMDk1LDQwOC4zMzksNDEzLjgzMyw0MDQuMzE0LDQxMy44MzN6IE0zODkuMjEzLDQxMy44MzNoLTQ0LjkzMnYtNTUuNTY3aDQ0LjkzMlY0MTMuODMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjc2LjU0NSw0MDUuMDg5Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3djEyLjYzYzAsNC4wMjQsMy4yNjIsNy4yODcsNy4yODcsNy4yODcNCgkJCWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3di0xMi42M0MyODMuODMyLDQwOC4zNTIsMjgwLjU3LDQwNS4wODksMjc2LjU0NSw0MDUuMDg5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Guest Bathroom":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02My42MTggNjItMi43MTgtNS40NDdhMSAxIDAgMCAwIC0uOS0uNTUzaC0xdi0zMGgzdi0yaC0zdi0xOWE1LjAwNiA1LjAwNiAwIDAgMCAtNS01aC0xNGE1LjAwNiA1LjAwNiAwIDAgMCAtNSA1djFhMyAzIDAgMCAwIC0zIDN2MWgtNWEzIDMgMCAwIDAgLTMgM3YyYTEgMSAwIDAgMCAxIDFoMTV2LTJoLTE0di0xYTEgMSAwIDAgMSAxLTFoMThhMSAxIDAgMCAxIDEgMXYxaC00djJoNWExIDEgMCAwIDAgMS0xdi0yYTMgMyAwIDAgMCAtMy0zaC01di0xYTMgMyAwIDAgMCAtMy0zdi0xYTMgMyAwIDAgMSAzLTNoMTRhMyAzIDAgMCAxIDMgM3YxOWgtNXYyaDV2MTRoLTN2LTJoLTJ2Nmgydi0yaDN2MTRoLTFhMSAxIDAgMCAwIC0uOS41NTNsLTIuNzE4IDUuNDQ3aC01Mi4zODJ2Mmg2NHYtMnptLTI1LjYxOC01M3YxaC00di0xYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxem0xOC42MTggNDloMi43NjRsMiA0aC02Ljc2NHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIgMzcuOTg3djE5LjAxM2ExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LTE5LjFsMi0uMDEzdjIuMTEzaDJ2LTZoLTJ2MS44ODJsLTE4LjAwNi4xMTguMDEyIDJ6bTIgMTIuMDEzaDEwdjFoLTEwem0wIDZ2LTNoMTB2M3ptMTAtOGgtMTB2LTEwLjAyNmwxMC0uMDY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAgMjljNC40ODYgMCA4LTUuMjcxIDgtMTJzLTMuNTE0LTEyLTgtMTItOCA1LjI3MS04IDEyIDMuNTE0IDEyIDggMTJ6bTAtMjJjMy4yNTIgMCA2IDQuNTc5IDYgMTBzLTIuNzQ4IDEwLTYgMTAtNi00LjU3OS02LTEwIDIuNzQ4LTEwIDYtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01LjA5NSAxMy41aDcuODF2MmgtNy44MXoiIHRyYW5zZm9ybT0ibWF0cml4KC43NjggLS42NCAuNjQgLjc2OCAtNy4xOTcgOS4xMjIpIi8+DQogICAgICAgIDxwYXRoIGQ9Im03LjA5NSAxOC41aDcuODF2MmgtNy44MXoiIHRyYW5zZm9ybT0ibWF0cml4KC43NjggLS42NCAuNjQgLjc2OCAtOS45MzQgMTEuNTYyKSIvPg0KICAgIDwvZz4NCjwvc3ZnPg==","Guest Room":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ1NiwzMjhhNDAuMDM3LDQwLjAzNywwLDAsMC04LC44MDQ5M1YxNDRhNy45NzUyMiw3Ljk3NTIyLDAsMCwwLTIuMzQzODEtNS42NTc0NywxNC42NDUzNSwxNC42NDUzNSwwLDAsMSwwLTIwLjY4NTA2QTcuOTc1MjIsNy45NzUyMiwwLDAsMCw0NDgsMTEyVjg4aDQwYTcuOTk5NDYsNy45OTk0NiwwLDAsMCw2Ljk0NTgtMTEuOTY4NzVsLTMyLTU2QTcuOTk4NjMsNy45OTg2MywwLDAsMCw0NTYsMTZIMzg0YTcuOTk4NjMsNy45OTg2MywwLDAsMC02Ljk0NTgsNC4wMzEyNWwtMzIsNTZBNy45OTk0Niw3Ljk5OTQ2LDAsMCwwLDM1Miw4OGg0MHYyNGE3Ljk3NTIyLDcuOTc1MjIsMCwwLDAsMi4zNDM4MSw1LjY1NzQ3LDE0LjY0NTM1LDE0LjY0NTM1LDAsMCwxLDAsMjAuNjg1MDZBNy45NzUyMiw3Ljk3NTIyLDAsMCwwLDM5MiwxNDRWMzIwSDMxMlYyODhoMjRhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgtOFYyNDhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLTgtOEgzMTJWMjE2aDQ4YTguMDAwMDgsOC4wMDAwOCwwLDAsMCw4LThWMTEyYTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThIMjA4YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LDh2OTZhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgsOGg0OHYyNEgyMDUuNDE2MDhsLTEzLjYwNTUzLTM0LjAxNDY1LTQuOTc0MTItMzkuNzkzQTU2LjUzMTQ4LDU2LjUzMTQ4LDAsMCwwLDE4NCwxNTQuMjZWODBBNjQsNjQsMCwwLDAsNTYsODB2NTIuODI4NjFBNTYuMDQxOTMsNTYuMDQxOTMsMCwwLDAsMzMuNTk0MjQsMTYxLjkxOWwtMTcuMTgzNiw1MS41NTA3OGE3Ljk5OCw3Ljk5OCwwLDAsMC0uMTcxODcsNC40NzA3bDUuNTkxMzcsMjIuMzY1NDhBNy45OTc0NSw3Ljk5NzQ1LDAsMCwwLDE2LDI0OFY0ODhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgsOEg0ODhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgtOFYzNjhBNDAuMDQ1NTIsNDAuMDQ1NTIsMCwwLDAsNDU2LDMyOFptMjQsNDB2NTZINDMyVjM2OGEyNCwyNCwwLDAsMSw0OCwwWk0yNjQsNDI0VjQwMGE4LjAwOTE3LDguMDA5MTcsMCwwLDEsOC04SDQwOGE4LjAwOTE3LDguMDA5MTcsMCwwLDEsOCw4djI0Wk05Niw0MjRWNDAwYTguMDA5MTcsOC4wMDkxNywwLDAsMSw4LThIMjQwYTguMDA5MTcsOC4wMDkxNywwLDAsMSw4LDh2MjRabTMyMC04MHYzMy4zNzYyMkEyMy44ODIxMiwyMy44ODIxMiwwLDAsMCw0MDgsMzc2SDI3MmEyMy45MDExMSwyMy45MDExMSwwLDAsMC0xNiw2LjEzMDg2QTIzLjkwMTExLDIzLjkwMTExLDAsMCwwLDI0MCwzNzZIMTA0YTIzLjg4MjEyLDIzLjg4MjEyLDAsMCwwLTgsMS4zNzYyMlYzNDRhOC4wMDkxNyw4LjAwOTE3LDAsMCwxLDgtOEg0MDhBOC4wMDkxNyw4LjAwOTE3LDAsMCwxLDQxNiwzNDRabTEwLjQ1MTcyLTIwOEg0MTMuNTQ4MjhhMzAuODQzNTEsMzAuODQzNTEsMCwwLDAsMC0xNmgxMi45MDM0NEEzMC44NDM1MSwzMC44NDM1MSwwLDAsMCw0MjYuNDUxNzIsMTM2Wk0zODguNjQyNTgsMzJoNjIuNzE0ODRsMjIuODU2OTQsNDBIMzY1Ljc4NTY0Wk00MzIsODh2MTZINDA4Vjg4Wm0tMjQsNjRoMjRWMzM2LjAyMmMtLjM2NjMzLjI3NTY0LS43MjQxOC41NjItMS4wODA2OS44NDk2MUEyNC4wNDM2OSwyNC4wNDM2OSwwLDAsMCw0MDgsMzIwWk0yOTYsMzIwSDEwNGEyNC4wNDM2OSwyNC4wNDM2OSwwLDAsMC0yMi45MTkzMSwxNi44NzE1OEEzOS45LDM5LjksMCwwLDAsMzIsMzM2LjAyMlYyODhIMjk2Wm0zMi00OEgzMlYyNTZIMzI4Wk03MiwyNDBINjRWMjI1LjU0MWw3LjMxNjg5LTE4LjI5Mkw3MiwyMDkuMjk3ODVabTg4LS4wMDAyNC4wMDAyNC4wMDAyNEgxNjBaTTIxNiwyMDBWMTIwSDM1MnY4MEgzMTJWMTY4YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThIMjY0YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LDh2MzJabTU2LTI0aDI0djY0SDI3MlpNMTIwLDMyYTQ4LjA1NCw0OC4wNTQsMCwwLDEsNDgsNDh2NTAuODUzNTJhNTYuNzI1NjIsNTYuNzI1NjIsMCwwLDAtNy45MTk5Mi01LjczNTM2bC0xMS40NDE2NS02Ljg2NUEzMS43OTQwNSwzMS43OTQwNSwwLDAsMCwxNTIsMTA0VjgwYTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThoLTYuMTExMzNhMjAuODMwNTMsMjAuODMwNTMsMCwwLDEtMTguNzMzNC0xMS41NzgxMiw4LjAwMDY0LDguMDAwNjQsMCwwLDAtMTIuODEyLTIuMDc5MTFsLTE2LDE2QTguMDAwNzYsOC4wMDA3NiwwLDAsMCw4OCw4MHYyNGEzMS44MDE4OCwzMS44MDE4OCwwLDAsMCwyLjc1NzUxLDEyLjk3MTE5TDcyLDEyNS4wMVY4MEE0OC4wNTQsNDguMDU0LDAsMCwxLDEyMCwzMlptMTYsNzJhMTYsMTYsMCwwLDEtMzIsMFY4My4zMTM0OGw2Ljk0Njc4LTYuOTQ2MjlBMzYuNjk4MTYsMzYuNjk4MTYsMCwwLDAsMTM2LDg3Ljk1MzEyWm0tMzQuNzcxOTEsMjUuODkyMDlhMzEuOTE2MTMsMzEuOTE2MTMsMCwwLDAsMzYuNzA0NDcuNTk3MTdsMS4yMzcxOC43NDI0M0wxMjAsMTU1LjE5MzM2bC0xOS44NjYyNy0yNC44MzIyOFpNNDguNzczLDE2Ni45Nzk0OUE0MC4wMzUzOCw0MC4wMzUzOCwwLDAsMSw3MC45NjM4NywxNDIuODYyM2wxMy45MTE2Mi01Ljk2MTkxLDI4Ljg3NzQ0LDM2LjA5NjY4YTcuOTk5NDMsNy45OTk0MywwLDAsMCwxMi40OTQxNCwwTDE1Mi45OSwxMzkuNTY4MzZhMzkuNzI3NzksMzkuNzI3NzksMCwwLDEsMTcuOTY5NDgsMjguNjA4NGw1LjEwMjU0LDQwLjgxNTQzYTcuOTgyODEsNy45ODI4MSwwLDAsMCwuNTEwMjYsMS45Nzg1MUwxODguMTgzNTksMjQwSDE4MGwtMjAtMjYuNjY3VjIwMS44MDY2NGE1MC44MjMzOCw1MC44MjMzOCwwLDAsMCwxLjkzMjYyLTM3LjMwNzYybC0yLjM0MzI2LTcuMDI5MjktMTUuMTc4NzIsNS4wNjA1NCwyLjM0MzI3LDcuMDI5M2EzNC45NTUxMywzNC45NTUxMywwLDAsMS0xLjkwOTE4LDI2Ljg2MjMxQTcuOTk5MzQsNy45OTkzNCwwLDAsMCwxNDQsMjAwdjQwSDg4VjIwOGE4LjAwNjQzLDguMDA2NDMsMCwwLDAtLjQxMDY0LTIuNTMwMjdsLTgtMjRhOC4wMDAwOSw4LjAwMDA5LDAsMCwwLTE1LjAxNzA5LS40NDA0M2wtMTYsNDBBNy45OTcyMyw3Ljk5NzIzLDAsMCwwLDQ4LDIyNHYxNkgzOC4yNDYwOWwtNS45MTk5Mi0yMy42ODA2NlpNMzIsMzY4YTI0LDI0LDAsMCwxLDQ4LDB2NTZIMzJaTTQ4MCw0ODBIMzJWNDQwSDQ4MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Gym:kNe,Hall:YNe,"Home Theater":"PHN2ZyBoZWlnaHQ9IjUxMXB0IiB2aWV3Qm94PSIxIC00NCA1MTEuOTk4OTkgNTExIiB3aWR0aD0iNTExcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICA8cGF0aCBkPSJtMjgyLjUxOTUzMSAzMzMuOTg4MjgxYy00LjE3MTg3NSAwLTcuNTQ2ODc1IDMuMzc4OTA3LTcuNTQ2ODc1IDcuNTQ2ODc1IDAgNC4xNjc5NjkgMy4zNzUgNy41NDY4NzUgNy41NDY4NzUgNy41NDY4NzVoMTE0LjMzOTg0NGM3LjA4MjAzMSAwIDEyLjg0Mzc1LTUuNzYxNzE5IDEyLjg0Mzc1LTEyLjg0NzY1NnYtMTkxLjkyOTY4N2MwLTcuMDgyMDMyLTUuNzYxNzE5LTEyLjg0NzY1Ny0xMi44NDM3NS0xMi44NDc2NTdoLTI4MS43MTg3NWMtNy4wODIwMzEgMC0xMi44NDM3NSA1Ljc2NTYyNS0xMi44NDM3NSAxMi44NDc2NTd2MTkxLjkyOTY4N2MwIDcuMDg1OTM3IDUuNzYxNzE5IDEyLjg0NzY1NiAxMi44NDM3NSAxMi44NDc2NTZoMTM3LjE5MTQwNmM0LjE2Nzk2OSAwIDcuNTQ2ODc1LTMuMzc4OTA2IDcuNTQ2ODc1LTcuNTQ2ODc1IDAtNC4xNjc5NjgtMy4zNzg5MDYtNy41NDY4NzUtNy41NDY4NzUtNy41NDY4NzVoLTEzNC45NDUzMTJ2LTE4Ny40Mzc1aDI3Ny4yMjY1NjJ2MTg3LjQzNzV6bTAgMCIvPg0KICAgIDxwYXRoIGQ9Im00OS4yNjE3MTkgODIuNzQyMTg4YzE1LjU4MjAzMSAwIDI4LjI2MTcxOS0xMi42Nzk2ODggMjguMjYxNzE5LTI4LjI1MzkwNyAwLTE1LjU4NTkzNy0xMi42Nzk2ODgtMjguMjYxNzE5LTI4LjI2MTcxOS0yOC4yNjE3MTktMTUuNTc4MTI1IDAtMjguMjUzOTA3IDEyLjY3NTc4Mi0yOC4yNTM5MDcgMjguMjYxNzE5IDAgMTUuNTc0MjE5IDEyLjY3NTc4MiAyOC4yNTM5MDcgMjguMjUzOTA3IDI4LjI1MzkwN3ptMC00MS40MjU3ODJjNy4yNjE3MTkgMCAxMy4xNjc5NjkgNS45MDYyNSAxMy4xNjc5NjkgMTMuMTcxODc1IDAgNy4yNTM5MDctNS45MDYyNSAxMy4xNjAxNTctMTMuMTY3OTY5IDEzLjE2MDE1Ny03LjI1MzkwNyAwLTEzLjE2MDE1Ny01LjkwNjI1LTEzLjE2MDE1Ny0xMy4xNjAxNTcgMC03LjI2NTYyNSA1LjkwNjI1LTEzLjE3MTg3NSAxMy4xNjAxNTctMTMuMTcxODc1em0wIDAiLz4NCiAgICA8cGF0aCBkPSJtNDYyLjczODI4MS41Yy0yNy4xNjQwNjIgMC00OS4yNjk1MzEgMjIuMTA1NDY5LTQ5LjI2OTUzMSA0OS4yNjk1MzF2NTYuMzA0Njg4Yy01LjY1MjM0NC0xLjM2NzE4OC02LjA0Mjk2OS0uNTM1MTU3LTU0LjMzMjAzMS0uNzc3MzQ0LTQuMTY0MDYzIDAtNy41NDI5NjkgMy4zODI4MTMtNy41NDI5NjkgNy41NDY4NzVzMy4zNzg5MDYgNy41NDY4NzUgNy41NDI5NjkgNy41NDY4NzVoNDcuNzIyNjU2YzcuNzMwNDY5IDAgMTMuOTE0MDYzIDYuMzA0Njg3IDEzLjkxNDA2MyAxMy45MTQwNjN2MjExLjkzMzU5M2MwIDcuNjY0MDYzLTYuMjQ2MDk0IDEzLjkxNDA2My0xMy45MTQwNjMgMTMuOTE0MDYzLTU5LjQxNzk2OSAwLTIzMS41NTQ2ODcgMC0zMDEuNzE4NzUgMC03LjY2Nzk2OSAwLTEzLjkxNDA2My02LjI1LTEzLjkxNDA2My0xMy45MTQwNjMgMC0xMC43NDYwOTMgMC0yMDQuNTg5ODQzIDAtMjExLjkzMzU5MyAwLTUuMjczNDM4IDIuOTU3MDMyLTkuODc4OTA3IDcuMzA0Njg4LTEyLjI0NjA5NCA1Ljg0Mzc1LTMuMTc1NzgyLTQuMjQyMTg4LTEuMDQ2ODc1IDIzMC40MjE4NzUtMS42Njc5NjkgNC4xNzU3ODEgMCA3LjU0Njg3NS0zLjM4MjgxMyA3LjU0Njg3NS03LjU0Njg3NXMtMy4zNzEwOTQtNy41NDY4NzUtNy41NDY4NzUtNy41NDY4NzVjLTIzNi4zNTE1NjMuMjczNDM3LTIyNC41NTA3ODEtLjY0NDUzMS0yMzAuNDIxODc1Ljc3NzM0NHYtNTYuMzA0Njg4YzAtMjcuMTY0MDYyLTIyLjEwNTQ2OS00OS4yNjk1MzEtNDkuMjY5NTMxLTQ5LjI2OTUzMS0yMi43Njk1MzEgMC00Mi40NDkyMTkgMTUuNDMzNTk0LTQ3Ljg2MzI4MSAzNy41MjczNDQtLjk4NDM3NiA0LjA1NDY4NyAxLjUgOC4xNDA2MjUgNS41NDI5NjggOS4xMjUgNC4wNDY4NzUuOTg4MjgxIDguMTI4OTA2LTEuNDg4MjgyIDkuMTI1LTUuNTMxMjUgMy43NDYwOTQtMTUuMzI0MjE5IDE3LjM5ODQzOC0yNi4wMzEyNSAzMy4xOTUzMTMtMjYuMDMxMjUgMTguODQzNzUgMCAzNC4xNzU3ODEgMTUuMzM1OTM3IDM0LjE3NTc4MSAzNC4xNzk2ODd2NjUuMzE2NDA3Yy0zLjExMzI4MSAzLjUxMTcxOC01LjM5MDYyNSA3Ljc3MzQzNy02LjUxMTcxOSAxMi40ODA0NjgtMi42NzE4NzUtMTIuODI0MjE4LTE0LjA1ODU5My0yMi40ODgyODEtMjcuNjY0MDYyLTIyLjQ4ODI4MS0xNS41NzgxMjUgMC0yOC4yNTM5MDcgMTIuNjc5Njg3LTI4LjI1MzkwNyAyOC4yNTc4MTMgMCAxNS41NzgxMjQgMTIuNjc1NzgyIDI4LjI1NzgxMiAyOC4yNTM5MDcgMjguMjU3ODEyIDEyLjUzNTE1NiAwIDIzLjE4NzUtOC4yMTA5MzggMjYuODcxMDkzLTE5LjUzMTI1djYxLjM5ODQzOGMtMy42ODM1OTMtMTEuMzIwMzEzLTE0LjMzNTkzNy0xOS41MjczNDQtMjYuODcxMDkzLTE5LjUyNzM0NC0xNS41NzgxMjUgMC0yOC4yNTM5MDcgMTIuNjc1NzgxLTI4LjI1MzkwNyAyOC4yNTM5MDYgMCAxNS41ODIwMzEgMTIuNjc1NzgyIDI4LjI1NzgxMiAyOC4yNTM5MDcgMjguMjU3ODEyIDEyLjUzNTE1NiAwIDIzLjE4NzUtOC4yMDcwMzEgMjYuODcxMDkzLTE5LjUzMTI1djYxLjQwMjM0NGMtMy42ODM1OTMtMTEuMzI0MjE4LTE0LjMzNTkzNy0xOS41MzEyNS0yNi44NzEwOTMtMTkuNTMxMjUtMTUuNTc4MTI1IDAtMjguMjUzOTA3IDEyLjY3NTc4Mi0yOC4yNTM5MDcgMjguMjUzOTA2IDAgMTUuNTgyMDMyIDEyLjY3NTc4MiAyOC4yNTc4MTMgMjguMjUzOTA3IDI4LjI1NzgxMyAxMi41MzUxNTYgMCAyMy4xODc1LTguMjA3MDMxIDI2Ljg3MTA5My0xOS41MzEyNXYxNy4wODk4NDRjLTIwLjEwNTQ2OCAyNS41MzEyNS02MS4wMzkwNjIgMTEuMTI1LTYxLjAzOTA2Mi0yMS4wOTc2NTd2LTIyNS44NDM3NWMwLTQuMTc1NzgxLTMuMzgyODEyLTcuNTQ2ODc0LTcuNTQ2ODc1LTcuNTQ2ODc0LTQuMTc1NzgxIDAtNy41NDY4NzUgMy4zNzEwOTMtNy41NDY4NzUgNy41NDY4NzR2MjI1Ljg0Mzc1YzAgMjQuNjAxNTYzIDE4LjEyMTA5NCA0NS4wNTA3ODIgNDEuNzE4NzUgNDguNjk1MzEzdjYyLjUyNzM0NGgtMTguOTY0ODQ0Yy00LjE2Nzk2OCAwLTcuNTQ2ODc1IDMuMzc4OTA2LTcuNTQ2ODc1IDcuNTQ2ODc1IDAgNC4xNjc5NjggMy4zNzg5MDcgNy41NDY4NzUgNy41NDY4NzUgNy41NDY4NzVoNTMuMDE5NTMyYzQuMTY3OTY4IDAgNy41NDY4NzQtMy4zNzg5MDcgNy41NDY4NzQtNy41NDY4NzUgMC00LjE2Nzk2OS0zLjM3ODkwNi03LjU0Njg3NS03LjU0Njg3NC03LjU0Njg3NWgtMTguOTY0ODQ0di02Mi41MzEyNWM3LjA0Mjk2OC0xLjA4NTkzOCAxMy41OTc2NTYtMy42Njc5NjkgMTkuMzI0MjE4LTcuNDEwMTU3djkuMTk5MjE5YzAgMTUuOTg0Mzc1IDEzLjAxOTUzMiAyOS4wMDM5MDcgMjkuMDA3ODEzIDI5LjAwMzkwN2g0NS44MjAzMTN2MzUuODk4NDM3YzAgNi4yODkwNjMgNS4xMDkzNzQgMTEuNDEwMTU2IDExLjM5ODQzNyAxMS40MTAxNTZoMjEuMTI4OTA2YzYuMjg5MDYzIDAgMTEuMzk4NDM4LTUuMTIxMDkzIDExLjM5ODQzOC0xMS40MTAxNTZ2LTM1Ljg5ODQzN2gxMjIuMjI2NTYydjM1Ljg5ODQzN2MwIDYuMjg5MDYzIDUuMTA5Mzc1IDExLjQxMDE1NiAxMS4zOTg0MzggMTEuNDEwMTU2aDIxLjEyODkwNmM2LjI4OTA2MyAwIDExLjM5ODQzNy01LjEyMTA5MyAxMS4zOTg0MzctMTEuNDEwMTU2di0zNS44OTg0MzdoNDUuODIwMzEzYzE1Ljk4ODI4MSAwIDI5LjAwNzgxMy0xMy4wMTk1MzIgMjkuMDA3ODEzLTI5LjAwMzkwN3YtOS4xOTkyMTljNS43MjY1NjIgMy43NDIxODggMTIuMjgxMjUgNi4zMjQyMTkgMTkuMzI0MjE4IDcuNDEwMTU3djYyLjUzMTI1aC0xOC45NjQ4NDRjLTQuMTY3OTY4IDAtNy41NDY4NzQgMy4zNzg5MDYtNy41NDY4NzQgNy41NDY4NzUgMCA0LjE2Nzk2OCAzLjM3ODkwNiA3LjU0Njg3NSA3LjU0Njg3NCA3LjU0Njg3NWg1My4wMTk1MzJjNC4xNjc5NjggMCA3LjU0Njg3NS0zLjM3ODkwNyA3LjU0Njg3NS03LjU0Njg3NSAwLTQuMTY3OTY5LTMuMzc4OTA3LTcuNTQ2ODc1LTcuNTQ2ODc1LTcuNTQ2ODc1aC0xOC45NjQ4NDR2LTYyLjUyNzM0NGMyMy41OTc2NTYtMy42NDQ1MzEgNDEuNzE4NzUtMjQuMDkzNzUgNDEuNzE4NzUtNDguNjk1MzEzdi0yNDUuOTg4MjgxYzAtMjcuMTY0MDYyLTIyLjA5Mzc1LTQ5LjI2OTUzMS00OS4yNjE3MTktNDkuMjY5NTMxem0tNDEzLjQ3NjU2MiAxNDZjLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2NDA2MiAwLTcuMjU3ODEzIDUuOTA2MjUtMTMuMTY0MDYzIDEzLjE2NDA2My0xMy4xNjQwNjMgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYzIDAgNy4yNTc4MTItNS45MDYyNSAxMy4xNjQwNjItMTMuMTY0MDYyIDEzLjE2NDA2MnptMCA3OC44NTU0NjljLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2Nzk2OSAwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2My0xMy4xNjQwNjIgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYyIDEzLjE2Nzk2OXptMCA3OC44NTE1NjJjLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2Nzk2OSAwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2My0xMy4xNjQwNjIgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYyIDEzLjE2Nzk2OXptMTMwLjUzNTE1NiAxMDMuMjUzOTA3aC0xMy43NDYwOTR2LTMyLjIxODc1aDEzLjc0NjA5NHptMTY2LjE1MjM0NCAwaC0xMy43NDYwOTR2LTMyLjIxODc1aDEzLjc0NjA5NHptMTUwLjk1NzAzMS0xMTEuNzAzMTI2YzAgMzIuMjM4MjgyLTQwLjk0MTQwNiA0Ni42MjEwOTQtNjEuMDM5MDYyIDIxLjA5NzY1N3YtMTcuMDg1OTM4YzMuNjgzNTkzIDExLjMyMDMxMyAxNC4zMzU5MzcgMTkuNTI3MzQ0IDI2Ljg3MTA5MyAxOS41MjczNDQgMTUuNTc4MTI1IDAgMjguMjUzOTA3LTEyLjY3NTc4MSAyOC4yNTM5MDctMjguMjU3ODEzIDAtMTUuNTc4MTI0LTEyLjY3NTc4Mi0yOC4yNTM5MDYtMjguMjUzOTA3LTI4LjI1MzkwNi0xMi41MzUxNTYgMC0yMy4xODM1OTMgOC4yMDcwMzItMjYuODcxMDkzIDE5LjUyNzM0NHYtNjEuMzk0NTMxYzMuNjgzNTkzIDExLjMyMDMxMiAxNC4zMzU5MzcgMTkuNTI3MzQzIDI2Ljg3MTA5MyAxOS41MjczNDMgMTUuNTc4MTI1IDAgMjguMjUzOTA3LTEyLjY3NTc4MSAyOC4yNTM5MDctMjguMjU3ODEyIDAtMTUuNTc4MTI1LTEyLjY3NTc4Mi0yOC4yNTM5MDYtMjguMjUzOTA3LTI4LjI1MzkwNi0xMi41MzUxNTYgMC0yMy4xODM1OTMgOC4yMDcwMzEtMjYuODcxMDkzIDE5LjUyNzM0NHYtNjEuMzk4NDM4YzMuNjgzNTkzIDExLjMyNDIxOSAxNC4zMzU5MzcgMTkuNTMxMjUgMjYuODcxMDkzIDE5LjUzMTI1IDE1LjU3ODEyNSAwIDI4LjI1MzkwNy0xMi42NzU3ODEgMjguMjUzOTA3LTI4LjI1NzgxMiAwLTE1LjU3ODEyNi0xMi42NzU3ODItMjguMjUzOTA3LTI4LjI1MzkwNy0yOC4yNTM5MDctMTMuNjA1NDY5IDAtMjQuOTkyMTg3IDkuNjYwMTU3LTI3LjY2NDA2MiAyMi40ODQzNzUtMS4xMjEwOTQtNC43MDcwMzEtMy4zOTg0MzgtOC45Njg3NS02LjUxMTcxOS0xMi40NzY1NjJ2LTY1LjMyMDMxM2MwLTE4Ljg0Mzc1IDE1LjMzMjAzMS0zNC4xNzk2ODcgMzQuMTc5Njg4LTM0LjE3OTY4NyAxOC44NDM3NSAwIDM0LjE2Nzk2OCAxNS4zMzU5MzcgMzQuMTY3OTY4IDM0LjE3OTY4N3YyNDUuOTg4Mjgxem0tNDcuMzMyMDMxLTQuNzE4NzVjMC03LjI1NzgxMiA1LjkwNjI1LTEzLjE2NDA2MiAxMy4xNjQwNjItMTMuMTY0MDYyIDcuMjU3ODEzIDAgMTMuMTY0MDYzIDUuOTA2MjUgMTMuMTY0MDYzIDEzLjE2NDA2MiAwIDcuMjYxNzE5LTUuOTA2MjUgMTMuMTY3OTY5LTEzLjE2NDA2MyAxMy4xNjc5NjktNy4yNTc4MTIgMC0xMy4xNjQwNjItNS45MDYyNS0xMy4xNjQwNjItMTMuMTY3OTY5em0wLTc4Ljg1MTU2MmMwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2Mi0xMy4xNjQwNjIgNy4yNTc4MTMgMCAxMy4xNjQwNjMgNS45MDYyNSAxMy4xNjQwNjMgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYzIDEzLjE2Nzk2OS03LjI1NzgxMiAwLTEzLjE2NDA2Mi01LjkwNjI1LTEzLjE2NDA2Mi0xMy4xNjc5Njl6bTAtNzguODUxNTYyYzAtNy4yNTc4MTMgNS45MDYyNS0xMy4xNjQwNjMgMTMuMTY0MDYyLTEzLjE2NDA2MyA3LjI1NzgxMyAwIDEzLjE2NDA2MyA1LjkwNjI1IDEzLjE2NDA2MyAxMy4xNjQwNjMgMCA3LjI1NzgxMi01LjkwNjI1IDEzLjE2NDA2Mi0xMy4xNjQwNjMgMTMuMTY0MDYyLTcuMjU3ODEyIDAtMTMuMTY0MDYyLTUuOTA2MjUtMTMuMTY0MDYyLTEzLjE2NDA2MnptMCAwIi8+DQogICAgPHBhdGggZD0ibTQ2Mi43MzgyODEgMjYuMjI2NTYyYy0xNS41ODIwMzEgMC0yOC4yNTc4MTIgMTIuNjc1NzgyLTI4LjI1NzgxMiAyOC4yNTc4MTMgMCAxNS41NzgxMjUgMTIuNjc1NzgxIDI4LjI1MzkwNiAyOC4yNTc4MTIgMjguMjUzOTA2IDE1LjU3ODEyNSAwIDI4LjI1MzkwNy0xMi42NzU3ODEgMjguMjUzOTA3LTI4LjI1MzkwNiAwLTE1LjU4MjAzMS0xMi42NzU3ODItMjguMjU3ODEzLTI4LjI1MzkwNy0yOC4yNTc4MTN6bTAgNDEuNDIxODc2Yy03LjI2MTcxOSAwLTEzLjE2Nzk2OS01LjkwNjI1LTEzLjE2Nzk2OS0xMy4xNjQwNjMgMC03LjI2MTcxOSA1LjkwNjI1LTEzLjE2NDA2MyAxMy4xNjc5NjktMTMuMTY0MDYzIDcuMjU3ODEzIDAgMTMuMTY0MDYzIDUuOTAyMzQ0IDEzLjE2NDA2MyAxMy4xNjQwNjMgMCA3LjI1NzgxMy01LjkwNjI1IDEzLjE2NDA2My0xMy4xNjQwNjMgMTMuMTY0MDYzem0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Kitchen:QNe,"Laundry Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MSAyaC01OGMtLjU1MiAwLTEgLjQ0OC0xIDF2NThjMCAuNTUyLjQ0OCAxIDEgMWg1OGMuNTUyIDAgMS0uNDQ4IDEtMXYtNThjMC0uNTUyLS40NDgtMS0xLTF6bS0xIDZoLTR2LTJjMC0uNTUyLS40NDgtMS0xLTFoLTZjLS41NTIgMC0xIC40NDgtMSAxdjJoLTNjLS41NTIgMC0xIC40NDgtMSAxdjloLTJ2LTE0aDE4em0tMTIuMTQyIDMxLTEuNjkyLTExaDkuNjY5bC0xLjY5MiAxMXptMS4xNDItMTNjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptOC43NTkuMzQ5Yy0uMTktLjIyMi0uNDY3LS4zNDktLjc1OS0uMzQ5aC0yYzAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0aC0yYy0uMjkyIDAtLjU2OS4xMjctLjc1OS4zNDlzLS4yNzQuNTE1LS4yMjkuODAzbDEuODIzIDExLjg0OGgtMy44MzV2LTE5aDE4djE5aC0zLjgzNWwxLjgyMy0xMS44NDhjLjA0NS0uMjg4LS4wMzktLjU4Mi0uMjI5LS44MDN6bS03Ljc1OS0xNy4zNDl2LTJoNHYxMWgtNHptLTIgOWgtMnYtOGgyem04IDB2LThoNHY4em0tMTYtMTR2MTRoLTJ2LTEwYzAtLjU1Mi0uNDQ4LTEtMS0xaC02Yy0uNTUyIDAtMSAuNDQ4LTEgMXYxMGgtMnYtN2MwLS4yNjUtLjEwNS0uNTItLjI5My0uNzA3bC0xLjcwNy0xLjcwN3YtMi41ODZjMC0uNTUyLS40NDgtMS0xLTFoLTRjLS41NTIgMC0xIC40NDgtMSAxdjIuNTg2bC0xLjcwNyAxLjcwN2MtLjE4OC4xODctLjI5My40NDItLjI5My43MDd2N2gtMnYtMTBjMC0uNTUyLS40NDgtMS0xLTFoLThjLS41NTIgMC0xIC40NDgtMSAxdjEwaC0ydi0xNHptLTQgMTRoLTR2LTloNHptLTExLjcwNy04LjI5MyAxLjcwNyAxLjcwN3Y2LjU4NmgtNnYtNi41ODZsMS43MDctMS43MDdjLjE4OC0uMTg3LjI5My0uNDQyLjI5My0uNzA3di0yaDJ2MmMwIC4yNjUuMTA1LjUyLjI5My43MDd6bS0xMC4yOTMgOC4yOTNoLTZ2LTloNnptLTEwIDJoMzZ2NDBoLTM2em00NSAyOGgtMnYtMWgyem0tMyAyaDQuNjQ5bDQuMzUxIDMuNDh2Ni41MmgtOXptMTEgMTB2LTdjMC0uMzA0LS4xMzgtLjU5MS0uMzc1LS43ODFsLTUtNGMtLjE3OC0uMTQyLS4zOTgtLjIxOS0uNjI1LS4yMTl2LTJjMC0uNTUyLS40NDgtMS0xLTFoLTRjLS41NTIgMC0xIC40NDgtMSAxdjJjLS41NTIgMC0xIC40NDgtMSAxdjExaC0ydi0xOWgxOHYxOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDIyaC0zMGMtLjU1MiAwLTEgLjQ0OC0xIDF2MzRjMCAuNTUyLjQ0OCAxIDEgMWgzMGMuNTUyIDAgMS0uNDQ4IDEtMXYtMzRjMC0uNTUyLS40NDgtMS0xLTF6bS0xIDJ2NWgtMjh2LTV6bS0yOCAzMnYtMjVoMjh2MjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMiAzM2MtNi4wNjUgMC0xMSA0LjkzNS0xMSAxMXM0LjkzNSAxMSAxMSAxMSAxMS00LjkzNSAxMS0xMS00LjkzNS0xMS0xMS0xMXptMCAyMGMtNC45NjIgMC05LTQuMDM4LTktOXM0LjAzOC05IDktOSA5IDQuMDM4IDkgOS00LjAzOCA5LTkgOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI2LjE5OSA0OC4yODYgMS4zOTkgMS40MjljLjY3Ny0uNjYzIDEuMjI2LTEuNDMyIDEuNjMxLTIuMjg2bC0xLjgwNy0uODU3Yy0uMzAzLjYzOS0uNzE0IDEuMjE2LTEuMjIzIDEuNzE0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjIgMzZ2MmMzLjMwOSAwIDYgMi42OTEgNiA2aDJjMC00LjQxMS0zLjU4OS04LTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwIDI1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0IDI1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDI1aDJ2MmgtMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Living Area":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5NC41IDI3Ny42NjdoLTUuNXYtMzYuNWMwLTE1LjE2NC0xMi4zMzYtMjcuNS0yNy41LTI3LjVoLTExMGMtNy44NzUgMC0xNC45ODIgMy4zMzItMjAgOC42NTUtNS4wMTgtNS4zMjItMTIuMTI1LTguNjU1LTIwLTguNjU1aC0xMTBjLTcuODc1IDAtMTQuOTgyIDMuMzMyLTIwIDguNjU1LTUuMDE4LTUuMzIyLTEyLjEyNS04LjY1NS0yMC04LjY1NWgtNDAuNWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWg0MC41YzYuODkzIDAgMTIuNSA1LjYwNyAxMi41IDEyLjV2NzcuMDE4Yy0zLjc1My0xLjkyNC04LTMuMDE4LTEyLjUtMy4wMThoLTEwMS41di0yMGMwLTkuNjQ5LTcuODUxLTE3LjUtMTcuNS0xNy41aC0zLjV2LTM2LjVjMC02Ljg5MyA1LjYwNy0xMi41IDEyLjUtMTIuNWgzNC41YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC0zNC41Yy0xNS4xNjQgMC0yNy41IDEyLjMzNi0yNy41IDI3LjV2MzYuNWgtNi41Yy05LjY0OSAwLTE3LjUgNy44NTEtMTcuNSAxNy41djQyLjVjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtNDIuNWMwLTEuMzc4IDEuMTIyLTIuNSAyLjUtMi41aDI1YzEuMzc4IDAgMi41IDEuMTIyIDIuNSAyLjV2MTQwLjVoLTI3LjVjLTEuMzc4IDAtMi41LTEuMTIyLTIuNS0yLjV2LTYwLjVjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NjAuNWMwIDkuNjQ5IDcuODUxIDE3LjUgMTcuNSAxNy41aDI3LjV2MTQuNjY3YzAgNi44OTMgNS42MDcgMTIuNSAxMi41IDEyLjVoMjVjNi44OTMgMCAxMi41LTUuNjA3IDEyLjUtMTIuNXYtMTQuNjY3aDMyMnYxNC42NjdjMCA2Ljg5MyA1LjYwNyAxMi41IDEyLjUgMTIuNWgyNWM2Ljg5MyAwIDEyLjUtNS42MDcgMTIuNS0xMi41di0xNC42NjdoMjcuNWM5LjY0OSAwIDE3LjUtNy44NTEgMTcuNS0xNy41di0xMzhjMC05LjY1LTcuODUxLTE3LjUtMTcuNS0xNy41em0tMTQzLTQ5aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41djM2LjVoLTQuNWMtOS42NDkgMC0xNy41IDcuODUxLTE3LjUgMTcuNXYyMGgtMTAwLjVjLTQuNSAwLTguNzQ3IDEuMDkzLTEyLjUgMy4wMTh2LTc3LjAxOGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41em0tMjkxLjUgMjA3di0xNWgzMjZjNC4xNDIgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjVoLTMyNnYtMTUuNWgxMDEuNWM3Ljg3NSAwIDE0Ljk4Mi0zLjMzMiAyMC04LjY1NSA1LjAxOCA1LjMyMiAxMi4xMjUgOC42NTUgMjAgOC42NTVoMTEwYzcuODc1IDAgMTQuOTgyLTMuMzMyIDIwLTguNjU1IDUuMDE4IDUuMzIyIDEyLjEyNSA4LjY1NSAyMCA4LjY1NWgxMDAuNXYxNS41aC0zMWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWgzMXYxNXptMzkyLTYwLjVoLTEwMC41Yy02Ljg5MyAwLTEyLjUtNS42MDctMTIuNS0xMi41di0yMGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41aDEwMC41em0tMTI4LTEyLjVjMCA2Ljg5My01LjYwNyAxMi41LTEyLjUgMTIuNWgtMTEwYy02Ljg5MyAwLTEyLjUtNS42MDctMTIuNS0xMi41di0yMGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41em0tMTIyLjUtMTM0aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41djc3LjAxOGMtMy43NTMtMS45MjQtOC0zLjAxOC0xMi41LTMuMDE4aC0xMTBjLTQuNSAwLTguNzQ3IDEuMDkzLTEyLjUgMy4wMTh2LTc3LjAxOGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41em0tNDAgMTAxLjVjNi44OTMgMCAxMi41IDUuNjA3IDEyLjUgMTIuNXYyMGMwIDYuODkzLTUuNjA3IDEyLjUtMTIuNSAxMi41aC0xMDEuNXYtNDV6bS04MS41IDEzMi42NjZoLTIwdi0xMi4xNjdoMjB6bTM1MiAwdi0xMi4xNjdoMjB2MTIuMTY3em02NS0yOS42NjZjMCAxLjM3OC0xLjEyMiAyLjUtMi41IDIuNWgtMjcuNXYtMTQwLjVjMC0xLjM3OCAxLjEyMi0yLjUgMi41LTIuNWgyNWMxLjM3OCAwIDIuNSAxLjEyMiAyLjUgMi41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjIgMTczLjY2N2g4OWM2Ljg5MyAwIDEyLjUtNS42MDcgMTIuNS0xMi41di01NmMwLTYuODkzLTUuNjA3LTEyLjUtMTIuNS0xMi41aC04OWMtNi44OTMgMC0xMi41IDUuNjA3LTEyLjUgMTIuNXY1NmMwIDYuODkyIDUuNjA3IDEyLjUgMTIuNSAxMi41em0yLjUtNjZoODR2NTFoLTg0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzYyIDE3My42NjdoODljNi44OTMgMCAxMi41LTUuNjA3IDEyLjUtMTIuNXYtNTZjMC02Ljg5My01LjYwNy0xMi41LTEyLjUtMTIuNWgtODljLTYuODkzIDAtMTIuNSA1LjYwNy0xMi41IDEyLjV2NTZjMCA2Ljg5MiA1LjYwNyAxMi41IDEyLjUgMTIuNXptMi41LTY2aDg0djUxaC04NHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMC40OSAxMzAuMTY3aDExMi4wMmM2Ljg4NyAwIDEyLjQ5LTUuNjAzIDEyLjQ5LTEyLjQ5di0xNi41NDljMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2MTQuMDM5aC0xMDd2LTY2aDEwN3YxNi45NjFjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtMTkuNDcyYzAtNi44ODctNS42MDMtMTIuNDktMTIuNDktMTIuNDloLTExMi4wMmMtNi44ODcgMC0xMi40OSA1LjYwMy0xMi40OSAxMi40OXY3MS4wMjFjMCA2Ljg4NiA1LjYwMyAxMi40OSAxMi40OSAxMi40OXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMS44ODEgMjc4LjEwMmM3LjM0OSA0LjgyOCAxMy41MjIgMTEuMDAyIDE4LjM1MSAxOC4zNTEgMS4zODcgMi4xMSAzLjc0MyAzLjM4MSA2LjI2OCAzLjM4MXM0Ljg4MS0xLjI3MSA2LjI2OC0zLjM4MWM0LjgyOC03LjM0OSAxMS4wMDItMTMuNTIyIDE4LjM1MS0xOC4zNTEgMi4xMS0xLjM4NyAzLjM4MS0zLjc0MyAzLjM4MS02LjI2OHMtMS4yNzEtNC44ODEtMy4zODEtNi4yNjhjLTcuMzQ5LTQuODI4LTEzLjUyMi0xMS4wMDItMTguMzUxLTE4LjM1MS0xLjM4Ny0yLjExLTMuNzQzLTMuMzgxLTYuMjY4LTMuMzgxcy00Ljg4MSAxLjI3MS02LjI2OCAzLjM4MWMtNC44MjggNy4zNDktMTEuMDAyIDEzLjUyMi0xOC4zNTEgMTguMzUxLTIuMTEgMS4zODctMy4zODEgMy43NDMtMy4zODEgNi4yNjhzMS4yNzEgNC44ODEgMy4zODEgNi4yNjh6bTI0LjYxOS0xNC4zNDVjMi40OTQgMi44ODcgNS4xODkgNS41ODMgOC4wNzYgOC4wNzYtMi44ODcgMi40OTQtNS41ODMgNS4xODktOC4wNzYgOC4wNzYtMi40OTQtMi44ODctNS4xODktNS41ODMtOC4wNzYtOC4wNzYgMi44ODctMi40OTMgNS41ODItNS4xODggOC4wNzYtOC4wNzZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zODEuODgxIDI3OC4xMDJjNy4zNDkgNC44MjggMTMuNTIyIDExLjAwMiAxOC4zNTEgMTguMzUxIDEuMzg3IDIuMTEgMy43NDMgMy4zODEgNi4yNjggMy4zODFzNC44ODEtMS4yNzEgNi4yNjgtMy4zODFjNC44MjgtNy4zNDkgMTEuMDAyLTEzLjUyMiAxOC4zNTEtMTguMzUxIDIuMTEtMS4zODcgMy4zODEtMy43NDMgMy4zODEtNi4yNjhzLTEuMjcxLTQuODgxLTMuMzgxLTYuMjY4Yy03LjM0OS00LjgyOC0xMy41MjItMTEuMDAyLTE4LjM1MS0xOC4zNTEtMS4zODctMi4xMS0zLjc0My0zLjM4MS02LjI2OC0zLjM4MXMtNC44ODEgMS4yNzEtNi4yNjggMy4zODFjLTQuODI4IDcuMzQ5LTExLjAwMiAxMy41MjItMTguMzUxIDE4LjM1MS0yLjExIDEuMzg3LTMuMzgxIDMuNzQzLTMuMzgxIDYuMjY4czEuMjcxIDQuODgxIDMuMzgxIDYuMjY4em0yNC42MTktMTQuMzQ1YzIuNDk0IDIuODg3IDUuMTg5IDUuNTgzIDguMDc2IDguMDc2LTIuODg3IDIuNDk0LTUuNTgzIDUuMTg5LTguMDc2IDguMDc2LTIuNDk0LTIuODg3LTUuMTg5LTUuNTgzLTguMDc2LTguMDc2IDIuODg3LTIuNDkzIDUuNTgyLTUuMTg4IDguMDc2LTguMDc2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAwLjIzMiAyNDcuMjE1Yy00LjgyOCA3LjM0OS0xMS4wMDIgMTMuNTIyLTE4LjM1MSAxOC4zNTEtMi4xMSAxLjM4Ny0zLjM4MSAzLjc0My0zLjM4MSA2LjI2OHMxLjI3MSA0Ljg4MSAzLjM4MSA2LjI2OGM3LjM0OSA0LjgyOCAxMy41MjIgMTEuMDAyIDE4LjM1MSAxOC4zNTEgMS4zODcgMi4xMSAzLjc0MyAzLjM4MSA2LjI2OCAzLjM4MXM0Ljg4MS0xLjI3MSA2LjI2OC0zLjM4MWM0LjgyOC03LjM0OSAxMS4wMDItMTMuNTIyIDE4LjM1MS0xOC4zNTEgMi4xMS0xLjM4NyAzLjM4MS0zLjc0MyAzLjM4MS02LjI2OHMtMS4yNzEtNC44ODEtMy4zODEtNi4yNjhjLTcuMzQ5LTQuODI4LTEzLjUyMi0xMS4wMDItMTguMzUxLTE4LjM1MS0xLjM4Ny0yLjExLTMuNzQzLTMuMzgxLTYuMjY4LTMuMzgxcy00Ljg4MSAxLjI3LTYuMjY4IDMuMzgxem0xNC4zNDQgMjQuNjE4Yy0yLjg4NyAyLjQ5NC01LjU4MyA1LjE4OS04LjA3NiA4LjA3Ni0yLjQ5NC0yLjg4Ny01LjE4OS01LjU4My04LjA3Ni04LjA3NiAyLjg4Ny0yLjQ5NCA1LjU4My01LjE4OSA4LjA3Ni04LjA3NiAyLjQ5NCAyLjg4OCA1LjE4OSA1LjU4MyA4LjA3NiA4LjA3NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Living Room":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ3MywzMzEuOTE2VjI3My42NDhBMzkuNzEsMzkuNzEsMCwwLDAsNDMzLjMyOCwyMzRIMzc2VjE3MGg0NC4wMDlhNi4yODksNi4yODksMCwwLDAsNS43NDctOC4wMkw0MDQuODMxLDkyLjI0OEE1Ljk3Niw1Ljk3NiwwLDAsMCwzOTkuMDg0LDg4SDM0MC45MTZhNS45MzIsNS45MzIsMCwwLDAtNS43NDcsNC4yTDMxNC4yNDQsMTYxLjkyYTYuMzcyLDYuMzcyLDAsMCwwLC45MzQsNS40ODMsNi4xNzYsNi4xNzYsMCwwLDAsNC44MTMsMi42SDM2NHY2NEg4OC42NzVBMzkuNzEzLDM5LjcxMywwLDAsMCw0OSwyNzMuNjQ4djU4LjI2OGEzOS40MTcsMzkuNDE3LDAsMCwwLTM3LDM5LjU1NlY0NjMuMWE1LjkxNSw1LjkxNSwwLDAsMCw2LDUuOUgzNXYzMGE2LjI0Niw2LjI0NiwwLDAsMCw2LjI4LDZoNjcuODY3QTUuODc3LDUuODc3LDAsMCwwLDExNSw0OTlWNDY5SDQwN3YzMGE1Ljg3OSw1Ljg3OSwwLDAsMCw1Ljg1NSw2aDY3Ljg2OUE2LjI0Myw2LjI0MywwLDAsMCw0ODcsNDk5VjQ2OWgxN2E1LjkxMyw1LjkxMywwLDAsMCw2LTUuOVYzNzEuNDcyQTM5LjQxNywzOS40MTcsMCwwLDAsNDczLDMzMS45MTZaTTM0NS4zODEsMTAwaDQ5LjIzOGwxNy4zMjYsNThoLTgzLjg5Wk04OC42NzUsMjQ2SDQzMy4zMjhBMjcuNywyNy43LDAsMCwxLDQ2MSwyNzMuNjQ4djU5LjNhMzkuODU0LDM5Ljg1NCwwLDAsMC0zMCwzOC41MjZWMzkwSDkxVjM3MS40NzJhMzkuODU0LDM5Ljg1NCwwLDAsMC0zMC0zOC41MjZ2LTU5LjNBMjcuNywyNy43LDAsMCwxLDg4LjY3NSwyNDZaTTEwMyw0OTNINDdWNDY5aDU2Wm0zNzIsMEg0MTlWNDY5aDU2Wm0yMy0zNkgyNFYzNzEuNDcyYTI3LjUsMjcuNSwwLDEsMSw1NSwwVjM5NS44YTYuNDQ4LDYuNDQ4LDAsMCwwLDYuMzEsNi4ySDQzNi42OTNBNi40NDUsNi40NDUsMCwwLDAsNDQzLDM5NS44VjM3MS40NzJhMjcuNSwyNy41LDAsMSwxLDU1LDBaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTQsMjAzLjIzOFY1Ni42MjZBNS42NCw1LjY0LDAsMCwwLDIwOC4wNjIsNTFoLTUzLjkyTDExMi4yNzIsOC45NDRhNS43MzcsNS43MzcsMCwwLDAtOC40ODQuMDQ3TDYxLjkxOSw1MUg4YTUuNjkzLDUuNjkzLDAsMCwwLTYsNS42MjZWMjAzLjIzOEE1LjgsNS44LDAsMCwwLDgsMjA5SDIwOC4wNjJBNS43NDksNS43NDksMCwwLDAsMjE0LDIwMy4yMzhaTTE3NCwxMzEuOGwtNDIuMjMsMTkuNjg2TDgwLjM2NSwxMTYuNDQzYTYuMjQ1LDYuMjQ1LDAsMCwwLTcuMTMxLjE2M0w0MSwxNDAuNjg2Vjg3SDE3NFpNNDEsMTU1LjY4OWwzNi4wNjItMjYuOTExLDUwLjg4NSwzNC41NDJhNi4xNyw2LjE3LDAsMCwwLDMuNDI3LDEuMDM5LDUuMTY5LDUuMTY5LDAsMCwwLDIuMzMyLS41NTdMMTc0LDE0NS4wMjVWMTczSDQxWk0xNzguMTU1LDc1SDM3LjY4OUwyMy4yNDMsNjNIMTkyLjVaTTI5LDg0LjA5MVYxNzYuMkwxNCwxODkuOTI4VjcwLjQ3M1pNMzcuNywxODVIMTc4LjE0bDEzLjc2NywxMkgyMy44MzVaTTE4NiwxNzYuMjFWODQuMDc4bDE2LTEzLjlWMTkwLjIyNlpNMTA4LjAzLDIxLjg1OSwxMzcuMTcyLDUxSDc4Ljg4OVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyOC4zNzQsMTMzLjJhMjAuMjE0LDIwLjIxNCwwLDEsMC0yMC4yMTQtMjAuMjE0QTIwLjIzNiwyMC4yMzYsMCwwLDAsMTI4LjM3NCwxMzMuMlptMC0yOC40MjdhOC4yMTQsOC4yMTQsMCwxLDEtOC4yMTQsOC4yMTNBOC4yMjMsOC4yMjMsMCwwLDEsMTI4LjM3NCwxMDQuNzY4WiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQ4Ljc4NywzMDguNDRhMjIuMDg3LDIyLjA4NywwLDAsMCwwLDIxLjY2MmwtOC40NzksOC40NzlhNiw2LDAsMSwwLDguNDg0LDguNDg1bDguNDc5LTguNDhhMjIuMDksMjIuMDksMCwwLDAsMjEuNjYyLDBsOC40NzgsOC40NzlhNiw2LDAsMCwwLDguNDg2LTguNDg1bC04LjQ4Ny04LjQ4OGEyMi4yMTEsMjIuMjExLDAsMCwwLDAtMjEuNjQ0bDguNDg3LTguNDg4YTYsNiwwLDAsMC04LjQ4Ni04LjQ4NWwtOC40NzgsOC40NzlhMjIuMDkyLDIyLjA5MiwwLDAsMC0yMS42NjEsMGwtOC40OC04LjQ3OWE2LDYsMCwxLDAtOC40ODQsOC40ODVabTE5LjMxNi42NzhhMTAuMTU2LDEwLjE1NiwwLDEsMS03LjE3OSwyLjk3NEExMC4wODMsMTAuMDgzLDAsMCwxLDM2OC4xLDMwOS4xMThaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMzguNzg3LDMwOC40NGEyMi4wODcsMjIuMDg3LDAsMCwwLDAsMjEuNjYybC04LjQ3OSw4LjQ3OWE2LDYsMCwxLDAsOC40ODQsOC40ODVsOC40NzktOC40OGEyMi4wOSwyMi4wOSwwLDAsMCwyMS42NjIsMGw4LjQ3OCw4LjQ3OWE2LDYsMCwwLDAsOC40ODYtOC40ODVsLTguNDg3LTguNDg4YTIyLjIxMSwyMi4yMTEsMCwwLDAsMC0yMS42NDRsOC40ODctOC40ODhhNiw2LDAsMCwwLTguNDg2LTguNDg1bC04LjQ3OCw4LjQ3OWEyMi4wOTIsMjIuMDkyLDAsMCwwLTIxLjY2MSwwbC04LjQ4LTguNDc5YTYsNiwwLDEsMC04LjQ4NCw4LjQ4NVptMTkuMzE2LjY3OGExMC4xNTYsMTAuMTU2LDAsMSwxLTcuMTc5LDIuOTc0QTEwLjA4MywxMC4wODMsMCwwLDEsMjU4LjEsMzA5LjExOFoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyOC43ODcsMzA4LjQ0YTIyLjA4NywyMi4wODcsMCwwLDAsMCwyMS42NjJsLTguNDc5LDguNDc5YTYsNiwwLDEsMCw4LjQ4NCw4LjQ4NWw4LjQ3OS04LjQ4YTIyLjA5LDIyLjA5LDAsMCwwLDIxLjY2MiwwbDguNDc4LDguNDc5YTYsNiwwLDAsMCw4LjQ4Ni04LjQ4NWwtOC40ODctOC40ODhhMjIuMjExLDIyLjIxMSwwLDAsMCwwLTIxLjY0NGw4LjQ4Ny04LjQ4OGE2LDYsMCwwLDAtOC40ODYtOC40ODVsLTguNDc4LDguNDc5YTIyLjA5MiwyMi4wOTIsMCwwLDAtMjEuNjYxLDBsLTguNDgtOC40NzlhNiw2LDAsMSwwLTguNDg0LDguNDg1Wm0xOS4zMTYuNjc4YTEwLjE1NiwxMC4xNTYsMCwxLDEtNy4xNzksMi45NzRBMTAuMDgzLDEwLjA4MywwLDAsMSwxNDguMSwzMDkuMTE4WiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Locker Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDYwIDYwIiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0yMyA0aC0xNWMtMi4yMDkxMzkgMC00IDEuNzkwODYxLTQgNHYzNGMwIDIuMjA5MTM5IDEuNzkwODYxIDQgNCA0aDZjLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTZjLTEuMTA0NTY5NSAwLTItLjg5NTQzMDUtMi0ydi0zNGMwLTEuMTA0NTY5NS44OTU0MzA1LTIgMi0yaDE1YzEuMTA0NTY5NSAwIDIgLjg5NTQzMDUgMiAydjEyLjA1YzAgLjU1MjI4NDcuNDQ3NzE1MyAxIDEgMXMxLS40NDc3MTUzIDEtMXYtMTIuMDVjMC0yLjIwOTEzOS0xLjc5MDg2MS00LTQtNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExIDEyaDljLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTljLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMSAxNmg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTFzLS40NDc3MTUzLTEtMS0xaC05Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjEgMTljMC0uNTUyMjg0Ny0uNDQ3NzE1My0xLTEtMWgtOWMtLjU1MjI4NDcgMC0xIC40NDc3MTUzLTEgMXMuNDQ3NzE1MyAxIDEgMWg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05IDM1Yy0uNTUyMjg0NzUgMC0xIC40NDc3MTUzLTEgMXY1YzAgLjU1MjI4NDcuNDQ3NzE1MjUgMSAxIDFoM2MuNTUyMjg0NyAwIDEtLjQ0NzcxNTMgMS0xcy0uNDQ3NzE1My0xLTEtMWgtMnYtNGMwLS41NTIyODQ3LS40NDc3MTUyNS0xLTEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUyIDBoLTE1Yy0yLjkxMjIxNDIuMDAxODA2OTEtNS41OTM0MDA4IDEuNTg2MDA1MTgtNyA0LjEzNi0xLjQwNjU5OTItMi41NDk5OTQ4Mi00LjA4Nzc4NTgtNC4xMzQxOTMwOS03LTQuMTM2aC0xNWMtNC40MTYyMjE5Mi4wMDQ5NTk4OC03Ljk5NTA0MDEyIDMuNTgzNzc4MDgtOCA4djM0Yy4wMDQ5NTk4OCA0LjQxNjIyMTkgMy41ODM3NzgwOCA3Ljk5NTA0MDEgOCA4aDZjLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTZjLTMuMzEyMzM3NTctLjAwMzMwNzQtNS45OTY2OTI2Mi0yLjY4NzY2MjQtNi02di0zNGMuMDAzMzA3MzgtMy4zMTIzMzc1NyAyLjY4NzY2MjQzLTUuOTk2NjkyNjIgNi02aDE1YzMuMzEyMzM3Ni4wMDMzMDczOCA1Ljk5NjY5MjYgMi42ODc2NjI0MyA2IDZ2MTJjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xdi0xMmMuMDAzMzA3NC0zLjMxMjMzNzU3IDIuNjg3NjYyNC01Ljk5NjY5MjYyIDYtNmgxNWMzLjMxMjMzNzYuMDAzMzA3MzggNS45OTY2OTI2IDIuNjg3NjYyNDMgNiA2djM0Yy0uMDAzMzA3NCAzLjMxMjMzNzYtMi42ODc2NjI0IDUuOTk2NjkyNi02IDZoLTZjLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDFoNmM0LjQxNjIyMTktLjAwNDk1OTkgNy45OTUwNDAxLTMuNTgzNzc4MSA4LTh2LTM0Yy0uMDA0OTU5OS00LjQxNjIyMTkyLTMuNTgzNzc4MS03Ljk5NTA0MDEyLTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ2IDQ2aDZjMi4yMDkxMzkgMCA0LTEuNzkwODYxIDQtNHYtMzRjMC0yLjIwOTEzOS0xLjc5MDg2MS00LTQtNGgtMTVjLTIuMjA5MTM5IDAtNCAxLjc5MDg2MS00IDR2MTIuMDVjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xdi0xMi4wNWMwLTEuMTA0NTY5NS44OTU0MzA1LTIgMi0yaDE1YzEuMTA0NTY5NSAwIDIgLjg5NTQzMDUgMiAydjM0YzAgMS4xMDQ1Njk1LS44OTU0MzA1IDItMiAyaC02Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMTJoOWMuNTUyMjg0NyAwIDEtLjQ0NzcxNTMgMS0xcy0uNDQ3NzE1My0xLTEtMWgtOWMtLjU1MjI4NDcgMC0xIC40NDc3MTUzLTEgMXMuNDQ3NzE1MyAxIDEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwIDE2aDljLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTljLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyMGg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTFzLS40NDc3MTUzLTEtMS0xaC05Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDkgMjd2M2MwIC41NTIyODQ3LjQ0NzcxNTMgMSAxIDFzMS0uNDQ3NzE1MyAxLTF2LTNjMC0uNTUyMjg0Ny0uNDQ3NzE1My0xLTEtMXMtMSAuNDQ3NzE1My0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNyAyM2MtMy44NjQxNjU3LjAwNDQwODYtNi45OTU1OTE0IDMuMTM1ODM0My03IDd2NmMtMS42NTY4NTQyIDAtMyAxLjM0MzE0NTgtMyAzdjE4YzAgMS42NTY4NTQyIDEuMzQzMTQ1OCAzIDMgM2gyMGMxLjY1Njg1NDIgMCAzLTEuMzQzMTQ1OCAzLTN2LTE4YzAtMS42NTY4NTQyLTEuMzQzMTQ1OC0zLTMtM3YtNmMtLjAwNDQwODYtMy44NjQxNjU3LTMuMTM1ODM0My02Ljk5NTU5MTQtNy03em0xNCAxNnYxOGMwIC41NTIyODQ3LS40NDc3MTUzIDEtMSAxaC0yMGMtLjU1MjI4NDcgMC0xLS40NDc3MTUzLTEtMXYtMThjMC0uNTUyMjg0Ny40NDc3MTUzLTEgMS0xaDIwYy41NTIyODQ3IDAgMSAuNDQ3NzE1MyAxIDF6bS03LTNoLTh2LTZjMC0uNTUyMjg0Ny40NDc3MTUzLTEgMS0xaDZjLjU1MjI4NDcgMCAxIC40NDc3MTUzIDEgMXptNC02djZoLTJ2LTZjMC0xLjY1Njg1NDItMS4zNDMxNDU4LTMtMy0zaC02Yy0xLjY1Njg1NDIgMC0zIDEuMzQzMTQ1OC0zIDN2NmgtMnYtNmMuMDAzMzA2MS0yLjc2MDA1MzIgMi4yMzk5NDY4LTQuOTk2NjkzOSA1LTVoNmMyLjc2MDA1MzIuMDAzMzA2MSA0Ljk5NjY5MzkgMi4yMzk5NDY4IDUgNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxLjIxMyA0MS4xNDRjLTEuNTA0MTcyLS4zNjkzNzI3LTMuMDk0NjQyNi0uMDI1NjA2OC00LjMxMi45MzItMS4yMTc4ODM0Ljk2MTgxMzQtMS45MjAxMjc1IDIuNDM0NjA4OS0xLjkwMDc0MDMgMy45ODYzNjU3LjAxOTM4NzEgMS41NTE3NTY4Ljc1ODIwNzYgMy4wMDY1NDgxIDEuOTk5NzQwMyAzLjkzNzYzNDN2M2MwIDEuNjU2ODU0MiAxLjM0MzE0NTggMyAzIDNzMy0xLjM0MzE0NTggMy0zdi0zYzEuNTQ0NTEwNy0xLjE1Njk1NDQgMi4yODUzNDkyLTMuMDk5NDU1NyAxLjkwMzUxOTEtNC45OTEwODUyLS4zODE4MzAxLTEuODkxNjI5Ni0xLjgxODE1ODctMy4zOTQ2NjQzLTMuNjkwNTE5MS0zLjg2MTkxNDh6bS41ODcgNy4yNTZjLS40OTcxNDc5LjM1NzYwNjYtLjc5NDI0MDEuOTMwNjIzMi0uOCAxLjU0M3YzLjA1N2MwIC41NTIyODQ3LS40NDc3MTUzIDEtMSAxcy0xLS40NDc3MTUzLTEtMXYtMy4wODFjLS4wMDU3MDgyLS42MDIwNTIyLS4yOTk0MjU5LTEuMTY0OTQ5Mi0uNzktMS41MTQtMS4wMzUwNTUzLS43NzE3ODcyLTEuNDYwMjE2NC0yLjExOTI1MDctMS4wNTU1MzY0LTMuMzQ1MzEzMXMxLjU0ODQyMS0yLjA1NTY4NjcgMi44Mzk1MzY0LTIuMDU5Njg2OWMuMjU1MDMwOS4wMDA1MDg1LjUwOTExNDQuMDMxMDUyMi43NTcuMDkxIDEuMDU1ODY4LjI2MzI0NjEgMS44ODI5MDcgMS4wODMzNzcyIDIuMTU1IDIuMTM3LjMxMzM3NDYgMS4xODM5Njk1LS4xMjQ0MTY1IDIuNDM5NTUxMi0xLjEwNiAzLjE3MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Nursery:vNe,Office:UNe,Outdoors:bNe,Playroom:$Ne,Pool:PNe,"Rear Wall":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MDMuNDY3LDguNTMzSDM4NGMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdWMjU2djUxLjJoLTY5LjczNWMwLjk0OC0yLjY3MSwxLjQ2OC01LjU0MiwxLjQ2OC04LjUzMw0KCQkJCWMwLTE0LjExNC0xMS40ODYtMjUuNi0yNS42LTI1LjZoLTE3LjA2N1YyNTZoODUuMzMzYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YxMTAuOTMzYzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzMNCgkJCQlIMTYyLjEzM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjEzNi41MzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g4NS4zMzN2MTcuMDY3SDIzMC40DQoJCQkJYy0xNC4xMTQsMC0yNS42LDExLjQ4Ni0yNS42LDI1LjZjMCwyLjk5MSwwLjUyMSw1Ljg2MiwxLjQ2OCw4LjUzM2gtNjkuNzM1VjI1NlYxMzYuNTMzVjE3LjA2N2MwLTQuNzE5LTMuODIzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJSDguNTMzQzMuODIzLDguNTMzLDAsMTIuMzQ4LDAsMTcuMDY3djExOS40NjdWMjU2djExOS40Njd2MTE5LjQ2N2MwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzSDEyOGgyNTZoMTE5LjQ2Nw0KCQkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMzc1LjQ2N1YyNTZWMTM2LjUzM1YxNy4wNjdDNTEyLDEyLjM0OCw1MDguMTc3LDguNTMzLDUwMy40NjcsOC41MzN6IE0xNzAuNjY3LDE1My42aDE3MC42NjcNCgkJCQl2NTEuMkgxNzAuNjY3VjE1My42eiBNMzQxLjMzMywxMTkuNDY3djE3LjA2N0gxNzAuNjY3di0xNy4wNjdIMzQxLjMzM3ogTTE3MC42NjcsMjIxLjg2N2gxNzAuNjY3djE3LjA2N0gxNzAuNjY3VjIyMS44Njd6DQoJCQkJIE0zNzUuNDY3LDQ4Ni40SDI2NC41MzN2LTkzLjg2N2g1MS4yaDU5LjczM1Y0ODYuNHogTTMwNy4yLDM3NS40NjdIMjA0LjhWMzU4LjRoMTAyLjRWMzc1LjQ2N3ogTTQ5NC45MzMsMjQ3LjQ2N2gtMTcuMDY3VjE3OS4yDQoJCQkJYzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzNoLTI1LjZoLTI1LjZjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y2OC4yNjdoLTE3LjA2N3YtMTAyLjRoMTAyLjRWMjQ3LjQ2N3oNCgkJCQkgTTQyNi42NjcsMjQ3LjQ2N3YtNTkuNzMzaDguNTMzdjU5LjczM0g0MjYuNjY3eiBNNDUyLjI2NywxODcuNzMzaDguNTMzdjU5LjczM2gtOC41MzNWMTg3LjczM3ogTTM5Mi41MzMsMzE1LjczM3YtNTEuMmgyNS42DQoJCQkJaDI1LjZoMjUuNmgyNS42djEwMi40aC0xMDIuNFYzMTUuNzMzeiBNMzkyLjUzMywyNS42aDEwMi40VjEyOGgtMTAyLjRWMjUuNnogTTIyMS44NjcsMjk4LjY2N2MwLTQuNzEsMy44MzEtOC41MzMsOC41MzMtOC41MzMNCgkJCQloNTEuMmM0LjcwMiwwLDguNTMzLDMuODIzLDguNTMzLDguNTMzcy0zLjgzMSw4LjUzMy04LjUzMyw4LjUzM2gtNTEuMkMyMjUuNjk4LDMwNy4yLDIyMS44NjcsMzAzLjM3NywyMjEuODY3LDI5OC42Njd6DQoJCQkJIE0yMzAuNCwzMjQuMjY3aDUxLjJoOTMuODY3djUxLjJoLTUxLjJWMzU4LjRjMC05LjQxMi03LjY1NC0xNy4wNjctMTcuMDY3LTE3LjA2N0gyMDQuOGMtOS40MTIsMC0xNy4wNjcsNy42NTQtMTcuMDY3LDE3LjA2Nw0KCQkJCXYxNy4wNjdoLTUxLjJ2LTUxLjJIMjMwLjR6IE01MS4yLDMzMi44aDM0LjEzM3Y4LjUzM0g1MS4yVjMzMi44eiBNODUuMzMzLDMxNS43MzNINTEuMlYzMDcuMmgzNC4xMzNWMzE1LjczM3ogTTUxLjIsMzU4LjQNCgkJCQloMzQuMTMzdjguNTMzSDUxLjJWMzU4LjR6IE0xMDIuNCwzNDkuODY3di0yNS42di0yNS42YzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzNoLTUxLjJjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzMw0KCQkJCXYyNS42djI1LjZ2MTcuMDY3SDE3LjA2N3YtMTAyLjRoMTAyLjR2NTEuMnY1MS4ySDEwMi40VjM0OS44Njd6IE01OS43MzMsMTEwLjkzM0g3Ni44VjEyOEg1OS43MzNWMTEwLjkzM3ogTTUxLjIsMTQ1LjA2N2gzNC4xMzMNCgkJCQloMzQuMTMzdjEwMi40aC0xMDIuNHYtMTAyLjRINTEuMnogTTE3LjA2NywyNS42aDEwMi40VjEyOGgtMjUuNnYtMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzMw0KCQkJCWMwLTQuNzE5LTMuODIzLTguNTMzLTguNTMzLTguNTMzaC04LjUzM0g1MS4yaC04LjUzM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzYzAsNC43MTksMy44MjMsOC41MzMsOC41MzMsOC41MzNWMTI4DQoJCQkJaC0yNS42VjI1LjZ6IE0xNy4wNjcsMzg0aDI1LjZoNTEuMmgyNS42djEwMi40aC0xMDIuNFYzODR6IE0xMzYuNTMzLDM5Mi41MzNoNTkuNzMzaDUxLjJWNDg2LjRIMTM2LjUzM1YzOTIuNTMzeiBNNDk0LjkzMyw0ODYuNA0KCQkJCWgtMTcuMDY3di02OC4yNjdjMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTguNTMzdi02OC4yNjcNCgkJCQljMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTguNTMzdi02OC4yNjdjMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzMw0KCQkJCXMtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTE3LjA2N1YzODRoMTAyLjRWNDg2LjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMjEuODY3LDQwOS42SDIwNC44Yy00LjcxLDAtOC41MzMsMy44MTQtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoOC41MzN2OC41MzMNCgkJCQljMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2M0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzN2LTE3LjA2N0MyMzAuNCw0MTMuNDE0LDIyNi41NzcsNDA5LjYsMjIxLjg2Nyw0MDkuNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwNy4yLDQwOS42aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM1Y0MzUuMmMwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODE0LDguNTMzLTguNTMzDQoJCQkJdi04LjUzM2g4LjUzM2M0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNTMzExLjkxLDQwOS42LDMwNy4yLDQwOS42eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Second Floor":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAyIDUxMi4wMDIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIHN0cm9rZT0iIiBkPSJNNDc3LjQ0NCw0NzEuMDM0aC0zLjgzM2MtMy42NzktMTQuNDM1LTE1LjkyNi0yNS4zNTYtMzAuODU5LTI3LjI0MVYzMDguNTg3aDIuMTM4YzkuOTE3LDAsMTcuOTg1LTguMDY4LDE3Ljk4NS0xNy45ODYNCgkJCWMwLTkuOTE3LTguMDY4LTE3Ljk4NS0xNy45ODUtMTcuOTg1aC0yLjEzOFYxMjkuMzgyaDkuODE1YzcuMTk3LDAsMTMuMDUyLTUuODU1LDEzLjA1Mi0xMy4wNTJ2LTE0LjkwNA0KCQkJYzAtMC4wMzMtMC4wMDUtMC4wNjUtMC4wMDUtMC4wOThjLTAuMDAxLTAuMDk4LTAuMDA5LTAuMTk2LTAuMDE1LTAuMjk0Yy0wLjAwOS0wLjE3MS0wLjAyMS0wLjM0Mi0wLjA0Mi0wLjUxDQoJCQljLTAuMDExLTAuMDg5LTAuMDI2LTAuMTc3LTAuMDQxLTAuMjY2Yy0wLjAyOS0wLjE4My0wLjA2NS0wLjM2NC0wLjEwOC0wLjU0MmMtMC4wMS0wLjA0LTAuMDE0LTAuMDgxLTAuMDI0LTAuMTIxTDQ0Ni4xMjMsMjUuNDINCgkJCWMtMS41NzQtNi4wNi03LjA0Ny0xMC4yOTMtMTMuMzA3LTEwLjI5M2gtNDkuMTA1Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3czMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDQ4LjQ2OGwxNi43MzQsNjQuNDQNCgkJCUgzMzUuMzcyTDI5Mi4zNDcsMjkuN2g0NS44NjZjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N2MwLTQuMDI1LTMuMjYyLTcuMjg3LTcuMjg3LTcuMjg3aC01NS41OTZsLTAuOTI2LTEuMzg3DQoJCQlDMjc1Ljk0OCw1LjEzNywyNjYuMzQyLDAsMjU1Ljk5NywwYy0xMC4zNDUsMC0xOS45NSw1LjEzNi0yNS42OTQsMTMuNzM5bC0wLjkyNywxLjM4OEg3OS4xNzgNCgkJCWMtNi4yNjEsMC0xMS43MzMsNC4yMzItMTMuMzA3LDEwLjI5M0w0Ni42MDksOTkuNTk1Yy0wLjAxLDAuMDQtMC4wMTQsMC4wODEtMC4wMjQsMC4xMjFjLTAuMDQzLDAuMTc4LTAuMDc5LDAuMzU5LTAuMTA4LDAuNTQyDQoJCQljLTAuMDE0LDAuMDg5LTAuMDMsMC4xNzctMC4wNDEsMC4yNjZjLTAuMDIxLDAuMTY4LTAuMDMzLDAuMzM4LTAuMDQyLDAuNTFjLTAuMDA1LDAuMDk4LTAuMDE0LDAuMTk2LTAuMDE1LDAuMjk0DQoJCQljMCwwLjAzMy0wLjAwNSwwLjA2NS0wLjAwNSwwLjA5OHYxNC45MDRjMCw3LjE5Nyw1Ljg1NSwxMy4wNTIsMTMuMDUyLDEzLjA1Mmg5LjgxNXYxNDMuMjMzaC0yLjEzOA0KCQkJYy05LjkxNywwLTE3Ljk4NSw4LjA2OC0xNy45ODUsMTcuOTg1czguMDY4LDE3Ljk4NiwxNy45ODUsMTcuOTg2aDIuMTM4djQ2LjY5NmMwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQlzNy4yODctMy4yNjIsNy4yODctNy4yODd2LTQ2LjY5NmgzNDQuMzY0djEyOS4zMTFjLTAuMDU1LTAuMDMyLTAuMTEzLTAuMDYtMC4xNjktMC4wOTJjLTAuNzE0LTAuNDE1LTEuNDM5LTAuODEtMi4xNzYtMS4xODINCgkJCWMtMC4xNDQtMC4wNzMtMC4yOTEtMC4xMzktMC40MzUtMC4yMWMtMC42MTQtMC4zMDItMS4yMzUtMC41ODgtMS44NjMtMC44NTljLTAuMjEzLTAuMDkyLTAuNDI1LTAuMTgzLTAuNjM5LTAuMjcyDQoJCQljLTAuNzI3LTAuMy0xLjQ1OS0wLjU4NS0yLjIwMi0wLjg0NGMtMC4wNDQtMC4wMTUtMC4wODctMC4wMzMtMC4xMzEtMC4wNDljLTAuNzg0LTAuMjcxLTEuNTc4LTAuNTExLTIuMzc4LTAuNzM2DQoJCQljLTAuMjE5LTAuMDYyLTAuNDQtMC4xMTgtMC42Ni0wLjE3NmMtMC42NDItMC4xNjktMS4yODktMC4zMjMtMS45NC0wLjQ2MmMtMC4xODgtMC4wNC0wLjM3NS0wLjA4NS0wLjU2NC0wLjEyMw0KCQkJYy0wLjgxMi0wLjE2Mi0xLjYyOS0wLjMtMi40NTEtMC40MTRjLTAuMTc4LTAuMDI1LTAuMzU4LTAuMDQyLTAuNTM3LTAuMDY0Yy0wLjY3MS0wLjA4NC0xLjM0NS0wLjE1Mi0yLjAyMi0wLjIwNA0KCQkJYy0wLjIzNC0wLjAxOC0wLjQ2OC0wLjAzNi0wLjcwMi0wLjA1MWMtMC44NDItMC4wNTEtMS42ODUtMC4wODUtMi41MzMtMC4wODVjLTE1LjQ0NiwwLTI5LjY5OSw4LjYxLTM3LjA2MiwyMS45MTUNCgkJCWMtMC44NDYtMC4wMi0xLjY4NCwwLjAwMS0yLjUxNiwwLjA0NmMtMC4xOTUsMC4wMTEtMC4zODcsMC4wMzQtMC41ODEsMC4wNDhjLTAuNjM2LDAuMDQ3LTEuMjY4LDAuMTA3LTEuODk0LDAuMTkNCgkJCWMtMC4yMywwLjAzMS0wLjQ1OCwwLjA3MS0wLjY4NiwwLjEwN2MtMC41ODYsMC4wOTItMS4xNjgsMC4xOTctMS43NDQsMC4zMjFjLTAuMjM0LDAuMDUtMC40NjUsMC4xMDQtMC42OTcsMC4xNTkNCgkJCWMtMC41NzEsMC4xMzctMS4xMzUsMC4yODktMS42OTUsMC40NTdjLTAuMjE3LDAuMDY1LTAuNDM1LDAuMTI4LTAuNjUsMC4xOThjLTAuNTg4LDAuMTktMS4xNjcsMC40LTEuNzQsMC42MjQNCgkJCWMtMC4xNzEsMC4wNjctMC4zNDUsMC4xMjctMC41MTUsMC4xOTdjLTAuNzA1LDAuMjktMS4zOTksMC42MDItMi4wNzksMC45NDFjLTAuMDI4LDAuMDE0LTAuMDU4LDAuMDI2LTAuMDg2LDAuMDQNCgkJCWMtMC43MzMsMC4zNjktMS40NSwwLjc2Ni0yLjE1LDEuMTljLTAuMDY2LDAuMDQtMC4xMjksMC4wODYtMC4xOTUsMC4xMjdjLTAuNiwwLjM3LTEuMTg3LDAuNzU5LTEuNzYsMS4xNjkNCgkJCWMtMC4xODQsMC4xMzItMC4zNjEsMC4yNzItMC41NDIsMC40MDhjLTAuNDQ3LDAuMzM1LTAuODg4LDAuNjc3LTEuMzE2LDEuMDM2Yy0wLjIwNiwwLjE3Mi0wLjQwNywwLjM1MS0wLjYwOSwwLjUyOQ0KCQkJYy0wLjM5MSwwLjM0NS0wLjc3NCwwLjY5OC0xLjE0OCwxLjA2M2MtMC4yMDEsMC4xOTYtMC40MDEsMC4zOTQtMC41OTcsMC41OTZjLTAuMzY1LDAuMzc2LTAuNzE3LDAuNzYzLTEuMDY0LDEuMTU4DQoJCQljLTAuMTc4LDAuMjAzLTAuMzU5LDAuNDA0LTAuNTMzLDAuNjEyYy0wLjM2NywwLjQ0MS0wLjcxNywwLjg5Ny0xLjA2LDEuMzU5Yy0wLjEzMSwwLjE3Ni0wLjI2OSwwLjM0Ni0wLjM5NiwwLjUyNQ0KCQkJYy0wLjg4NSwxLjI0Ni0xLjY4OSwyLjU2LTIuMzkyLDMuOTQ0aC0zNS40NTdWMzQ2LjE4MWMwLTcuMTM1LTUuODA1LTEyLjkzOS0xMi45MzktMTIuOTM5aC03My4zNDkNCgkJCWMtNy4xMzUsMC0xMi45MzksNS44MDUtMTIuOTM5LDEyLjkzOXYxMjQuODUzaC02MC42MzljLTAuMTg4LTAuNDY5LTAuMzk5LTAuOTI1LTAuNjA1LTEuMzgzDQoJCQljLTAuMDg4LTAuMTk0LTAuMTY2LTAuMzk0LTAuMjU2LTAuNTg2Yy0wLjM1My0wLjc0OS0wLjcyOC0xLjQ4My0xLjEyOC0yLjIwMmMtMC4wNzUtMC4xMzUtMC4xNi0wLjI2My0wLjIzNi0wLjM5Nw0KCQkJYy0wLjMzMS0wLjU3Ny0wLjY3My0xLjE0Ny0xLjAzNC0xLjcwM2MtMC4xNTEtMC4yMzItMC4zMTEtMC40NTYtMC40NjctMC42ODVjLTAuMzA1LTAuNDQ4LTAuNjE2LTAuODkxLTAuOTQtMS4zMjQNCgkJCWMtMC4xODMtMC4yNDUtMC4zNzItMC40ODQtMC41NjItMC43MjRjLTAuMzItMC40MDUtMC42NDYtMC44MDMtMC45ODItMS4xOTNjLTAuMjAyLTAuMjM0LTAuNDA1LTAuNDY3LTAuNjEyLTAuNjk1DQoJCQljLTAuMzUyLTAuMzg4LTAuNzE0LTAuNzY2LTEuMDgxLTEuMTM4Yy0wLjIwNS0wLjIwNy0wLjQwNy0wLjQxNy0wLjYxNi0wLjYyYy0wLjQxOS0wLjQwNS0wLjg1Mi0wLjc5NC0xLjI5LTEuMTc4DQoJCQljLTAuMTcyLTAuMTUxLTAuMzM3LTAuMzA4LTAuNTExLTAuNDU1Yy0wLjYyMi0wLjUyNS0xLjI1OS0xLjAzMS0xLjkxNC0xLjUxM2MtMC4wNjctMC4wNDktMC4xMzctMC4wOTMtMC4yMDQtMC4xNDENCgkJCWMtMC41ODgtMC40MjYtMS4xODgtMC44MzYtMS44MDEtMS4yMjZjLTAuMjI1LTAuMTQ0LTAuNDU4LTAuMjc2LTAuNjg2LTAuNDE0Yy0wLjQ2Ny0wLjI4My0wLjkzOC0wLjU2Mi0xLjQxOC0wLjgyNA0KCQkJYy0wLjI3LTAuMTQ4LTAuNTQ1LTAuMjg3LTAuODE5LTAuNDI4Yy0wLjQ1Ni0wLjIzNC0wLjkxNi0wLjQ2MS0xLjM4My0wLjY3NmMtMC4yOS0wLjEzNC0wLjU4MS0wLjI2NC0wLjg3NS0wLjM5MQ0KCQkJYy0wLjQ3My0wLjIwMy0wLjk1My0wLjM5NC0xLjQzNi0wLjU3OGMtMC4yOTEtMC4xMS0wLjU3OS0wLjIyMy0wLjg3My0wLjMyNmMtMC41MjgtMC4xODYtMS4wNjUtMC4zNTMtMS42MDQtMC41MTQNCgkJCWMtMC4yNTYtMC4wNzctMC41MDgtMC4xNjItMC43NjYtMC4yMzNjLTAuOC0wLjIyMS0xLjYwOC0wLjQyMS0yLjQyOC0wLjU4OGMtMC41MjctMC43MTgtMS4wNzQtMS40MTgtMS42MzctMi4wOTkNCgkJCWMtMC4xOTMtMC4yMzMtMC4zOTgtMC40NTItMC41OTUtMC42ODFjLTAuMzc4LTAuNDQtMC43NTQtMC44ODItMS4xNDctMS4zMDZjLTAuMjQ2LTAuMjY1LTAuNTA1LTAuNTE0LTAuNzU3LTAuNzcyDQoJCQljLTAuMzYtMC4zNjktMC43MTYtMC43NDQtMS4wODctMS4xYy0wLjI3Ny0wLjI2NS0wLjU2Ni0wLjUxNC0wLjg0OS0wLjc3MmMtMC4zNjItMC4zMy0wLjcxOS0wLjY2NC0xLjA5MS0wLjk4MQ0KCQkJYy0wLjMwMS0wLjI1Ny0wLjYxNC0wLjQ5OC0wLjkyMS0wLjc0N2MtMC4zNjgtMC4yOTgtMC43MzItMC42LTEuMTA4LTAuODg2Yy0wLjMyMi0wLjI0NC0wLjY1NC0wLjQ3Mi0wLjk4MS0wLjcwNw0KCQkJYy0wLjM3Ni0wLjI3LTAuNzQ5LTAuNTQ0LTEuMTMzLTAuODAxYy0wLjMzOS0wLjIyNy0wLjY4Ny0wLjQzOS0xLjAzMS0wLjY1N2MtMC4zODctMC4yNDUtMC43NzEtMC40OTMtMS4xNjQtMC43MjUNCgkJCWMtMC4zNTMtMC4yMDktMC43MTUtMC40MDItMS4wNzQtMC42MDFjLTAuMzk3LTAuMjItMC43OTItMC40NDMtMS4xOTYtMC42NTFjLTAuMzY4LTAuMTktMC43NDItMC4zNjQtMS4xMTUtMC41NDQNCgkJCWMtMC40MDYtMC4xOTUtMC44MTEtMC4zOTMtMS4yMjQtMC41NzZjLTAuMzgtMC4xNjktMC43NjUtMC4zMjMtMS4xNS0wLjQ4MmMtMC40MTctMC4xNzEtMC44MzItMC4zNDQtMS4yNTUtMC41MDMNCgkJCWMtMC4zODktMC4xNDctMC43ODQtMC4yOC0xLjE3OC0wLjQxNmMtMC40MjctMC4xNDctMC44NTQtMC4yOTYtMS4yODYtMC40M2MtMC4zOTgtMC4xMjQtMC44MDEtMC4yMzYtMS4yMDQtMC4zNDkNCgkJCWMtMC40MzctMC4xMjMtMC44NzMtMC4yNDYtMS4zMTQtMC4zNTZjLTAuNDA3LTAuMTAxLTAuODE3LTAuMTkxLTEuMjI3LTAuMjgxYy0wLjQ0NS0wLjA5OC0wLjg5LTAuMTk0LTEuMzM4LTAuMjc5DQoJCQljLTAuNDE0LTAuMDc4LTAuODMxLTAuMTQ1LTEuMjQ4LTAuMjEyYy0wLjQ1My0wLjA3Mi0wLjkwNS0wLjE0My0xLjM2MS0wLjIwMmMtMC40Mi0wLjA1NC0wLjg0Mi0wLjA5OC0xLjI2NC0wLjE0MQ0KCQkJYy0wLjQ2LTAuMDQ3LTAuOTIxLTAuMDktMS4zODUtMC4xMjJjLTAuNDI0LTAuMDMtMC44NS0wLjA1MS0xLjI3Ni0wLjA2OWMtMC4yNjktMC4wMTItMC41MzQtMC4wMzYtMC44MDQtMC4wNDN2LTI5Ljg1MQ0KCQkJYzAtNC4wMjQtMy4yNjItNy4yODctNy4yODctNy4yODdjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODd2MzEuODU2Yy0xNy4wNTMsNS4yNzktMjkuODM5LDIwLjM1Ni0zMS43NSwzOC42MjNoLTIuOTQyDQoJCQljLTExLjI5NCwwLTIwLjQ4Myw5LjE4OS0yMC40ODMsMjAuNDgzczkuMTg5LDIwLjQ4MywyMC40ODMsMjAuNDgzaDQ0Mi44OTRjMTEuMjk0LDAsMjAuNDgzLTkuMTg5LDIwLjQ4My0yMC40ODMNCgkJCUM0OTcuOTI3LDQ4MC4yMjMsNDg4LjczOCw0NzEuMDM0LDQ3Ny40NDQsNDcxLjAzNHogTTIzOS4zMzMsMjYuNDZjMC0wLjAwMSwwLjAwMS0wLjAwMSwwLjAwMS0wLjAwMWwzLjA4OS00LjYyNw0KCQkJYzMuMDM0LTQuNTQ1LDguMTA5LTcuMjU4LDEzLjU3NC03LjI1OGM1LjQ2NSwwLDEwLjU0LDIuNzEzLDEzLjU3NCw3LjI1OWw0OC4yNzgsNzIuMzA4aC01LjIwMmwtNDYuMTAzLTY5LjA1Mw0KCQkJYy0yLjM1OC0zLjUzMS02LjMtNS42MzktMTAuNTQ2LTUuNjM5Yy00LjI0NiwwLTguMTg5LDIuMTA4LTEwLjU0Niw1LjYzOUwxOTkuMzQ3LDk0LjE0aC01LjIwMmw4Ljc3OC0xMy4xNDhMMjM5LjMzMywyNi40NnoNCgkJCSBNMjk1LjEyNCw5NC4xNEgyMTYuODdsMzkuMTI3LTU4LjYwNEwyOTUuMTI0LDk0LjE0eiBNNzkuODE2LDI5LjdoMTM5LjgzMUwyMDkuNTEsNDQuODgzTDE3Ni42MjIsOTQuMTRINjMuMDgxTDc5LjgxNiwyOS43eg0KCQkJIE02MC45NDgsMTE0LjgwOXYtNi4wOTZoMzkwLjA5OHY2LjA5Nkg2MC45NDh6IE00MjguMTc5LDEyOS4zODJ2MTQzLjIzM0g4My44MTVWMTI5LjM4Mkg0MjguMTc5eiBNNjcuMTA0LDI5NC4wMTQNCgkJCWMtMS44ODEsMC0zLjQxMi0xLjUzMS0zLjQxMi0zLjQxM2MwLTEuODgxLDEuNTMtMy40MTIsMy40MTItMy40MTJINDQ0Ljg5YzEuODgxLDAsMy40MTIsMS41MzEsMy40MTIsMy40MTINCgkJCWMwLDEuODgyLTEuNTMsMy40MTMtMy40MTIsMy40MTNINjcuMTA0eiBNMzYwLjQxNiw0NzAuODkzYzAuMzE3LTAuMTg3LDAuNjM4LTAuMzY4LDAuOTY3LTAuNTM1DQoJCQljMC4xNTYtMC4wNzksMC4zMTYtMC4xNDksMC40NzQtMC4yMjNjMC4yOC0wLjEzMSwwLjU2Mi0wLjI1NiwwLjg1LTAuMzcxYzAuMTgzLTAuMDczLDAuMzY4LTAuMTQyLDAuNTUzLTAuMjA4DQoJCQljMC4yNzItMC4wOTgsMC41NDctMC4xODcsMC44MjQtMC4yNzFjMC4yMDEtMC4wNiwwLjQwMi0wLjEyMSwwLjYwNS0wLjE3NGMwLjI3Ni0wLjA3MiwwLjU1Ni0wLjEzMiwwLjgzNi0wLjE5DQoJCQljMC4yMDctMC4wNDMsMC40MTEtMC4wOTEsMC42Mi0wLjEyNmMwLjM1Ni0wLjA2LDAuNzE4LTAuMTAyLDEuMDgxLTAuMTM5YzAuMTc2LTAuMDE4LDAuMzUyLTAuMDM5LDAuNTI5LTAuMDUyDQoJCQljMC40NDYtMC4wMzEsMC44OTYtMC4wNDcsMS4zNS0wLjA0M2MwLjMzNywwLjAwMywwLjY3OSwwLjAzMiwxLjAyLDAuMDU2YzAuMjM0LDAuMDE2LDAuNDY3LDAuMDIsMC43MDIsMC4wNDYNCgkJCWMwLjU3MiwwLjA2NSwxLjE0NiwwLjE1NSwxLjcxOSwwLjI3OWMzLjUwOSwwLjc1Niw3LjA0Ny0xLjE1NSw4LjMzNy00LjUwN2M0LjA5Mi0xMC42MzksMTQuNDk2LTE3Ljc4NywyNS44OTEtMTcuNzg3DQoJCQljNy45NSwwLDE1LjUzMywzLjQyOCwyMC44MDYsOS40MDZjMC4yMSwwLjIzOCwwLjQzMywwLjQ2LDAuNjY5LDAuNjY2YzAuMDEzLDAuMDExLDAuMDI4LDAuMDIsMC4wNDEsMC4wMzINCgkJCWMwLjkzMiwwLjgwNCwyLjA0MywxLjM1NSwzLjIzLDEuNjA4YzAuOTAzLDAuMTkzLDEuODQ4LDAuMjE2LDIuNzg3LDAuMDUxYzEwLjQxNi0xLjgzMSwxOS45NjQsMy44NjgsMjMuOTIyLDEyLjYyNGgtOTguMDYxDQoJCQlDMzYwLjI1LDQ3MC45ODUsMzYwLjMzNCw0NzAuOTQyLDM2MC40MTYsNDcwLjg5M3ogTTI5MS4wMzgsMzQ3LjgxNXYxMjMuMjE5aC03MC4wODJWMzQ3LjgxNUgyOTEuMDM4eiBNNzcuNzk3LDQ0NS4zNTINCgkJCWMwLjc2Ny0wLjEyMSwxLjUzNi0wLjIxNSwyLjMwNS0wLjI3OWMwLjA2Ni0wLjAwNSwwLjEzMi0wLjAwOSwwLjE5OC0wLjAxNGMwLjc4NC0wLjA2LDEuNTY3LTAuMDk2LDIuMzQzLTAuMDk2DQoJCQljMTAuNjg5LDAsMjAuNDY1LDUuNDI0LDI2LjE1LDE0LjUwOWMxLjE4OCwxLjg5OSwzLjE4NSwzLjE0Nyw1LjQxNCwzLjM4MWMwLjUyMywwLjA1NSwxLjAzOCwwLjEzNSwxLjU0OSwwLjIyNg0KCQkJYzAuMTE1LDAuMDIsMC4yMywwLjA0MSwwLjM0NSwwLjA2M2MwLjUsMC4wOTcsMC45OTUsMC4yMDgsMS40ODMsMC4zMzhjMC4wNjMsMC4wMTcsMC4xMjUsMC4wMzcsMC4xODksMC4wNTUNCgkJCWMwLjQ0NCwwLjEyMywwLjg4MSwwLjI2MSwxLjMxMywwLjQxMWMwLjA5OSwwLjAzNCwwLjE5OSwwLjA2NywwLjI5OCwwLjEwM2MwLjQ2NywwLjE2OSwwLjkyNywwLjM1MywxLjM3OSwwLjU1Mw0KCQkJYzAuMDg4LDAuMDM5LDAuMTc1LDAuMDgxLDAuMjYzLDAuMTIyYzAuNDAzLDAuMTg1LDAuOCwwLjM4LDEuMTksMC41ODhjMC4wNzQsMC4wMzksMC4xNDgsMC4wNzYsMC4yMjIsMC4xMTYNCgkJCWMwLjQzMSwwLjIzNiwwLjg1MiwwLjQ4OCwxLjI2NSwwLjc1MmMwLjA5NCwwLjA2LDAuMTg3LDAuMTIyLDAuMjgsMC4xODRjMC4zODgsMC4yNTcsMC43NjksMC41MjMsMS4xMzksMC44MDMNCgkJCWMwLjAzMiwwLjAyNCwwLjA2NiwwLjA0NywwLjA5OCwwLjA3MmMwLjM5MiwwLjMsMC43NywwLjYxNywxLjE0MSwwLjk0M2MwLjA4NywwLjA3NywwLjE3NCwwLjE1NCwwLjI2LDAuMjMyDQoJCQljMC4zNjUsMC4zMzEsMC43MjIsMC42NzEsMS4wNjQsMS4wMjdjMC4wMjksMC4wMywwLjA1NiwwLjA2MiwwLjA4NCwwLjA5MmMwLjMxOSwwLjMzNiwwLjYyNSwwLjY4MywwLjkyMywxLjAzOQ0KCQkJYzAuMDcyLDAuMDg2LDAuMTQ1LDAuMTcyLDAuMjE2LDAuMjZjMC4wNTMsMC4wNjYsMC4xMDEsMC4xMzYsMC4xNTQsMC4yMDJINTIuMTgxQzU0LjIyOSw0NTcuODY4LDY0LjY0Myw0NDcuNDM5LDc3Ljc5Nyw0NDUuMzUyeg0KCQkJIE00NzcuNDQ0LDQ5Ny40MjdIMzQuNTVjLTMuMjU5LDAtNS45MS0yLjY1MS01LjkxLTUuOTFjMC0zLjI1OSwyLjY1MS01LjkxLDUuOTEtNS45MWg0NDIuODk0YzMuMjU5LDAsNS45MSwyLjY1MSw1LjkxLDUuOTENCgkJCUM0ODMuMzU0LDQ5NC43NzYsNDgwLjcwMyw0OTcuNDI3LDQ3Ny40NDQsNDk3LjQyN3oiLz4NCiAgICAgICAgPHBhdGggIGQ9Ik0xODYuMjEzLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzN2MtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4OCw3LjI4N2g4Ni43OWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkzLjUsMjM0LjgzNSwxOTAuMjM4LDIzMS41NzIsMTg2LjIxMywyMzEuNTcyeiBNMTY4LjMwMywyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTkuNjY4LDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU1Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4Nyw3LjI4N2g4Ni43OTFjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzMwNi45NTUsMjM0LjgzNSwzMDMuNjkzLDIzMS41NzIsMjk5LjY2OCwyMzEuNTcyeiBNMjgxLjc1OCwyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MTIuNTcyLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zNzktMTAuMzhoLTU5LjM1NmMtNS43MjQsMC0xMC4zOCw0LjY1Ny0xMC4zOCwxMC4zOHY2NS43NDYNCgkJCWgtMy4zMzhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMCw0LjAyNCwzLjI2Miw3LjI4Nyw3LjI4Nyw3LjI4N2g4Ni43OTFjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzQxOS44NTksMjM0LjgzNSw0MTYuNTk3LDIzMS41NzIsNDEyLjU3MiwyMzEuNTcyeiBNMzk0LjY2MSwyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIG9wYWNpdHk9IjAuMjUiIGQ9Ik0xODIuODEzLDQxMy44MzNoLTAuNTI4di02MC4wNDVjMC01LjU2Ni00LjUyOS0xMC4wOTUtMTAuMDk1LTEwLjA5NWgtNTMuODg2Yy01LjU2NiwwLTEwLjA5NSw0LjUyOS0xMC4wOTUsMTAuMDk1djYwLjA0NQ0KCQkJaC0wLjUyOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLDQuMDI1LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDcuODE0aDU5LjUwNGg3LjgxNGM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkwLjEsNDE3LjA5NSwxODYuODM4LDQxMy44MzMsMTgyLjgxMyw0MTMuODMzeiBNMTY3LjcxMiw0MTMuODMzaC00NC45MzF2LTU1LjU2N2g0NC45MzFWNDEzLjgzM3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgZD0iTTQwNC4zMTQsNDEzLjgzM2gtMC41Mjh2LTYwLjA0NWMwLTUuNTY2LTQuNTI5LTEwLjA5NS0xMC4wOTUtMTAuMDk1aC01My44ODZjLTUuNTY2LDAtMTAuMDk2LDQuNTI5LTEwLjA5NiwxMC4wOTV2NjAuMDQ1DQoJCQloLTAuNTI4Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3YzAsNC4wMjUsMy4yNjIsNy4yODcsNy4yODcsNy4yODdoNy44MTRIMzk2LjVoNy44MTRjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzQxMS42MDEsNDE3LjA5NSw0MDguMzM5LDQxMy44MzMsNDA0LjMxNCw0MTMuODMzeiBNMzg5LjIxMyw0MTMuODMzaC00NC45MzJ2LTU1LjU2N2g0NC45MzJWNDEzLjgzM3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgZD0iTTI3Ni41NDUsNDA1LjA4OWMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N3YxMi42M2MwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQljNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N3YtMTIuNjNDMjgzLjgzMiw0MDguMzUyLDI4MC41Nyw0MDUuMDg5LDI3Ni41NDUsNDA1LjA4OXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Shed:WNe,"Sleeping Area":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NTYsMjI0Yy0xNC4xMzMsMC0yNCw2LjMwMS0yNCwxNS4zMnYyNy41MDVDNDE5LjMzMywyNDEuNzkzLDM5OS44NSwyMjQsMzc2LDIyNEgxNTJjLTQuNDE3LTAuMDAxLTcuOTk5LDMuNTc5LTgsNy45OTYNCgkJCWMwLDAuMDAxLDAsMC4wMDMsMCwwLjAwNHY0OC4wNjdjMC4wNDUtMTMuMDUyLTUuMjAxLTI2LjA3NS0xNS41ODYtMzUuNTgzYy0xOS41NTItMTcuOTAyLTQ5LjkxNS0xNi41NjQtNjcuODE2LDIuOTg5DQoJCQljLTE2Ljc2NCwxOC4zMDktMTYuODAxLDQ2LjM4LTAuMDg2LDY0LjczNGMtNC42MTIsMC41MDgtOC45NjgsMi4zOC0xMi41MTIsNS4zNzVWMTE1LjE5OUM0OCwxMDQuNDM0LDM3LjQ2MSw5NiwyNCw5Ng0KCQkJcy0yNCw4LjQzNC0yNCwxOS4xOTl2MzQ1LjYwMkMwLDQ3MS41NjYsMTAuNTM5LDQ4MCwyNCw0ODBzMjQtOC40MzQsMjQtMTkuMTk5VjQwOGgzODR2NTYuNjhjMCw5LjAxOSw5Ljg2NywxNS4zMiwyNCwxNS4zMg0KCQkJczI0LTYuMzAxLDI0LTE1LjMyVjIzOS4zMkM0ODAsMjMwLjMwMSw0NzAuMTMzLDIyNCw0NTYsMjI0eiBNMzIsNDYwLjgwMWMtMC4wODYsMC42NTYtMi43NzMsMy4xOTktOCwzLjE5OQ0KCQkJYy01LjI1LDAtNy45MjItMi41NDMtOC0zLjE5OVYxMTUuMTk5YzAuMDc4LTAuNjU2LDIuNzUtMy4xOTksOC0zLjE5OWM1LjIyNywwLDcuOTE0LDIuNTQzLDgsMy4xOTlWNDYwLjgwMXogTTE2MCwyNDBoMjE2DQoJCQljMzAuMTcyLDAsNTMuMTcyLDQ0LjkyNiw1NS43NTgsODhIMTYwVjI0MHogTTE0NCwyODAuMDgzdjM4LjU2Yy0zLjQ1Mi0zLjM1My03Ljg0OC01LjU2Ni0xMi41OTctNi4zNDINCgkJCUMxMzkuNzkzLDMwMy4xMzcsMTQzLjk1NiwyOTEuNiwxNDQsMjgwLjA4M3ogTTk2LDI0OGMxNy42NzMsMCwzMiwxNC4zMjcsMzIsMzJjMCwxNy42NzMtMTQuMzI3LDMyLTMyLDMycy0zMi0xNC4zMjctMzItMzINCgkJCUM2NC4wMTksMjYyLjMzNSw3OC4zMzUsMjQ4LjAxOSw5NiwyNDh6IE00MzIsMzkySDQ4di00OC4wMjNjNC4xNjMtMC4zMjgsNy4zNzQtMy44MDEsNy4zNzUtNy45NzcNCgkJCWMtMC4wNzctNC4zMzEsMy4zNjQtNy45MDksNy42OTUtOGg2NC42MWM0LjMzMSwwLjA5MSw3Ljc3MiwzLjY2OSw3LjY5NSw4Yy0wLjAwMSw0LjQxNywzLjU3OSw3Ljk5OSw3Ljk5Niw4DQoJCQljMC4wMDEsMCwwLjAwMywwLDAuMDA0LDBINDMyVjM5MnogTTQ2NCw0NjIuNTk0Yy01LjE2OSwxLjg3NS0xMC44MzEsMS44NzUtMTYsMFYyNDEuNDA2YzUuMTY5LTEuODc1LDEwLjgzMS0xLjg3NSwxNiwwVjQ2Mi41OTR6Ig0KICAgICAgICAvPg0KICAgICAgICA8cGF0aCBkPSJNMTM3LjA3OCwxNzZsMjkuMDctMzQuODc5YzEuOTg2LTIuMzg2LDIuNDEzLTUuNzA1LDEuMDk0LTguNTE2Yy0xLjMxNi0yLjgxLTQuMTM5LTQuNjA1LTcuMjQyLTQuNjA1aC00OHYxNmgzMC45MjINCgkJCWwtMjkuMDcsMzQuODc5Yy0yLjgyNywzLjM5OC0yLjM2NCw4LjQ0NCwxLjAzNCwxMS4yN2MxLjQzNywxLjE5NSwzLjI0NiwxLjg1LDUuMTE0LDEuODUxaDQ4di0xNkgxMzcuMDc4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjI0LjM1OSwxMzZsNDUuOTUzLTU5LjA5YzEuODc3LTIuNDExLDIuMjE3LTUuNjgxLDAuODc1LTguNDI2Yy0xLjM0NC0yLjc0My00LjEzMi00LjQ4My03LjE4OC00LjQ4NGgtNjR2MTZoNDcuNjQxDQoJCQlsLTQ1Ljk1Myw1OS4wOWMtMi43MTQsMy40ODQtMi4wODksOC41MDksMS4zOTYsMTEuMjIzYzEuNDA1LDEuMDk0LDMuMTM2LDEuNjg4LDQuOTE3LDEuNjg4aDY0di0xNkgyMjQuMzU5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzI4LDk2bDYyLjM5OC04My4xOTljMi42NTItMy41MzMsMS45MzktOC41NDYtMS41OTQtMTEuMTk5QzM4Ny40MTksMC41NjIsMzg1LjczMywwLDM4NCwwaC03MnYxNmg1NmwtNjIuMzk4LDgzLjE5OQ0KCQkJYy0xLjgxOCwyLjQyNC0yLjExMiw1LjY2OC0wLjc1OCw4LjM3OUMzMDYuMiwxMTAuMjg4LDMwOC45NywxMTIsMzEyLDExMmg4MFY5NkgzMjh6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Stairway:RNe,Stairwell:JNe,Storeroom:BNe,"Summer House":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTkgNTExLjk5OSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTE3My44MzIsMjI1LjI2M2gtNDMuMDM5Yy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41djYwLjEzNGMwLDQuMTQyLDMuMzU3LDcuNSw3LjUsNy41aDQzLjAzOWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41DQoJCQl2LTYwLjEzNEMxODEuMzMyLDIyOC42MjIsMTc3Ljk3NCwyMjUuMjYzLDE3My44MzIsMjI1LjI2M3ogTTE2Ni4zMzEsMjg1LjM5N2gtMjguMDM4di00NS4xMzNoMjguMDM4VjI4NS4zOTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NTkuMTI3LDIwMS4xOTNjMy4zMTQsMi4yNzgsOC4wOTEsMS40NzEsMTAuNDMtMS45MzJjMCwwLDIzLjAwOS0zMy40NjksMjMuMDI5LTMzLjQ5OA0KCQkJYzIuMzE1LTMuMzY4LDEuNDI4LTguMTIxLTEuOTMyLTEwLjQzMUwyNzEuNzYzLDQuODYxYy05LjQyOS02LjQ4LTIyLjA5Ny02LjQ4MS0zMS41MjYsMGMwLDAtMTM5Ljc2Miw5Ni4wNzctMTQwLjI3Myw5Ni40MjgNCgkJCWMtNy45MTEsNS40MzgsMC40MjksMTcuOTEsOC40OTcsMTIuMzYzbDE0MC4yNzQtOTYuNDI5YzQuMzQ3LTIuOTg3LDEwLjE4Ny0yLjk4NywxNC41MzEtMC4wMDFsMjEyLjcwOSwxNDYuMjI0bC0xNC41MzEsMjEuMTM3DQoJCQljMCwwLTIwMS4xNDMtMTM4LjI3Mi0yMDEuMTk1LTEzOC4zMDhjLTIuNDk1LTEuNzE1LTUuOTk5LTEuNzE4LTguNDk4LTAuMDAxTDUwLjU1NywxODQuNTgzbC0xNC41My0yMS4xMzcNCgkJCWMwLDAsNDcuMTE3LTMyLjM5LDQ3LjI4OS0zMi41MDljNy44MDctNS4zNjYtMC40MTYtMTcuOTE3LTguNDk4LTEyLjM2MmMwLDAtNTMuMzAxLDM2LjY0LTUzLjQ3MSwzNi43NTcNCgkJCWMtMy4zNzQsMi4zMi00LjI0MSw3LjA3MS0xLjkzMywxMC40MzFsMjEuNzA5LDMxLjU3OXYzMDcuMTU2YzAsNC4xNDIsMy4zNTgsNy41LDcuNSw3LjVIMjU2YzQuMTQyLDAsNy41LTMuMzU4LDcuNS03LjVWMzk1Ljk3MQ0KCQkJSDQwMi42NHYxMDguNTI4YzAsNC4xNDIsMy4zNTgsNy41LDcuNTAxLDcuNWgzMC40ODhjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNVYzOTUuOTcxaDIzLjc2OWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41di0zMC40ODcNCgkJCWMwLTQuMTQzLTMuMzU4LTcuNS03LjUtNy41aC0yMy43Njl2LTU3LjI1OWgyMy43NjljNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNXYtMzAuNDg4YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTIzLjc2OXYtNTQuMTAzDQoJCQlMNDU5LjEyNywyMDEuMTkzeiBNNDE3LjY0MSwxODYuODc2aDE1LjQ4N3Y2MC44NThoLTE1LjQ4N1YxODYuODc2eiBNMjU2LDYxLjU1NmwzOS4wNzUsMjYuODYxaC03OC4xNDlMMjU2LDYxLjU1NnoNCgkJCSBNNTYuMTI1LDI3MC4zMzJoMzguMzk5djUzLjA1NWMwLDQuMTQxLDMuMzU4LDcuNSw3LjUsNy41SDIwMi42YzQuMTQyLDAsNy41MDEtMy4zNTgsNy41MDEtNy41di01My4wNTVoMzguMzk4djY4LjQ1Nkg1Ni4xMjUNCgkJCVYyNzAuMzMyeiBNMTA5LjUyNSwzMTUuODg2VjIwOS43NzdoODUuNTc1djEwNi4xMDlIMTA5LjUyNXogTTk0LjUyNCw0OTYuOTk4SDU2LjEyNXYtNTkuNzU0aDM4LjM5OVY0OTYuOTk4eiBNMTY2LjMzMSw0OTYuOTk3DQoJCQloLTI4LjAzOHYtODUuNzgzaDI4LjAzOFY0OTYuOTk3eiBNMTk1LjA5OSw0OTYuOTk3aC0xMy43Njd2LTkzLjI4M2MwLTQuMTQyLTMuMzU4LTcuNS03LjUtNy41aC00My4wMzkNCgkJCWMtNC4xNDIsMC03LjUwMSwzLjM1OC03LjUwMSw3LjV2OTMuMjgzaC0xMy43NjhWMzgwLjcyN2g4NS41NzVWNDk2Ljk5N3ogTTI0OC40OTksNDk2Ljk5OEgyMTAuMXYtNTkuNzU0aDM4LjM5OFY0OTYuOTk4eg0KCQkJIE0yNDguNSw0MjIuMjQ0aC0zOC4zOTl2LTQ5LjAxOGMtMC4wMDEtNC4xNDItMy4zNTktNy41LTcuNTAyLTcuNUgxMDIuMDI0Yy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41MDF2NDkuMDE4SDU2LjEyNXYtNjguNDU2DQoJCQlIMjQ4LjVWNDIyLjI0NHogTTI0OC41LDI1NS4yMjVjMCwwLjAwMywwLDAuMDA2LDAsMC4wMXYwLjA5NmgtMzguMzk5di01My4wNTVjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNUgxMDIuMDI0DQoJCQljLTQuMTQyLDAtNy41LDMuMzU4LTcuNSw3LjV2NTMuMDU1SDU2LjEyNXYtNTYuMzczbDE3LjY2My0xMi4xNDNjMC4yOTcsMC4wMzYsMC41OTcsMC4wNiwwLjkwNCwwLjA2SDI0OC41VjI1NS4yMjV6DQoJCQkgTTk1LjUyMywxNzEuODc1bDk5LjU4MS02OC40NTZoMTIxLjc5M2w5OS41ODEsNjguNDU2aC02LjMzNkg5NS41MjN6IE00MDIuNjQsMTg2Ljg3NnY2MC44NThIMjYzLjUwMXYtNjAuODU4SDQwMi42NHoNCgkJCSBNMjYzLjUwMSwyOTMuMjIzaDE1LjQ4NnY1Ny4yNTloLTE1LjQ4NlYyOTMuMjIzeiBNNDMzLjEyOCw0OTYuOTk4aC0xNS40ODdWMzk1Ljk3MWgxNS40ODdWNDk2Ljk5OHogTTQ2NC4zOTcsMzY1LjQ4NHYxNS40ODYNCgkJCUgyNjMuNTAxdi0xNS40ODZINDY0LjM5N3ogTTI5My45ODgsMzUwLjQ4MnYtNTcuMjU5aDE1LjQ4N3Y1Ny4yNTlIMjkzLjk4OHogTTMyNC40NzYsMzUwLjQ4MnYtNTcuMjU5aDE2LjMzN3Y1Ny4yNTlIMzI0LjQ3NnoNCgkJCSBNMzU1LjgxNCwzNTAuNDgydi01Ny4yNTloMTUuNDg3djU3LjI1OUgzNTUuODE0eiBNMzg2LjMwMiwzNTAuNDgydi01Ny4yNTloMTYuMzM3djU3LjI1OUgzODYuMzAyeiBNNDE3LjY0MSwzNTAuNDgydi01Ny4yNTkNCgkJCWgxNS40ODd2NTcuMjU5SDQxNy42NDF6IE00NjQuMzk3LDI2Mi43MzV2MTUuNDg3SDI2My41MDF2LTE1LjQ4N0g0NjQuMzk3eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Swimming Pool":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE4Ny43MzMgMTg3LjczMyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTE4Ny41OTksMTUxLjQ1OEwxNTMuNDY1LDMzLjE4NmMtMC40MjItMS40NjEtMS43NTgtMi40NjYtMy4yNzktMi40NjZIMzcuNTQ3Yy0xLjUyMSwwLTIuODU3LDEuMDA1LTMuMjc5LDIuNDY2DQoJCQlMMC4xMzUsMTUxLjQ1OEMwLjA0NCwxNTEuNzY1LDAsMTUyLjA4NSwwLDE1Mi40MDV2MjUuMDg4YzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNIMTg0LjMyDQoJCQljMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxM3YtMjUuMDg4QzE4Ny43MzMsMTUyLjA4NSwxODcuNjg3LDE1MS43NjUsMTg3LjU5OSwxNTEuNDU4eiBNMTgwLjkwNywxNzQuMDhINi44Mjd2LTIxLjE5Mg0KCQkJTDQwLjExNSwzNy41NDdIMTQ3LjYybDMzLjI4NywxMTUuMzQyVjE3NC4wOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTc4LjUwNyw2LjgyN2MtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3Y1MS4yYzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNzMy40MTMtMS41MjksMy40MTMtMy40MTN2LTUxLjINCgkJCUM4MS45Miw4LjM1Niw4MC4zOTEsNi44MjcsNzguNTA3LDYuODI3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA5LjIyNyw2LjgyN2MtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3Y1MS4yYzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJdi01MS4yQzExMi42NCw4LjM1NiwxMTEuMTExLDYuODI3LDEwOS4yMjcsNi44Mjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDkuMjI3LDE3LjA2N2gtMzAuNzJjLTEuODg0LDAtMy40MTMsMS41MjktMy40MTMsMy40MTNzMS41MjksMy40MTMsMy40MTMsMy40MTNoMzAuNzJjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJUzExMS4xMTEsMTcuMDY3LDEwOS4yMjcsMTcuMDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA5LjIyNywzMC43MmgtMzAuNzJjLTEuODg0LDAtMy40MTMsMS41MjktMy40MTMsMy40MTNzMS41MjksMy40MTMsMy40MTMsMy40MTNoMzAuNzJjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJUzExMS4xMTEsMzAuNzIsMTA5LjIyNywzMC43MnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEwOS4yMjcsNDQuMzczaC0zMC43MmMtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3MxLjUyOSwzLjQxMywzLjQxMywzLjQxM2gzMC43MmMxLjg4NCwwLDMuNDEzLTEuNTI5LDMuNDEzLTMuNDEzDQoJCQlTMTExLjExMSw0NC4zNzMsMTA5LjIyNyw0NC4zNzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNjMuNzg5LDE0Ni4xNzlsLTE3LjUxNi05OC45ODdjLTAuMjg4LTEuNjMtMS43MDUtMi44MTgtMy4zNi0yLjgxOEg0OC4zMjhjLTEuNjEzLDAtMy4wMDUsMS4xMjYtMy4zNCwyLjcwMw0KCQkJbC0yMS4wMTksOTguOTg3Yy0wLjIxMywxLjAwNywwLjAzOCwyLjA1NywwLjY4NiwyLjg1N2MwLjY0OSwwLjgsMS42MjEsMS4yNjUsMi42NTIsMS4yNjVoMTMzLjEyYzEuMDA5LDAsMS45NjYtMC40NDcsMi42MTYtMS4yMTkNCgkJCUMxNjMuNjkxLDE0OC4xOTUsMTYzLjk2NSwxNDcuMTc0LDE2My43ODksMTQ2LjE3OXogTTMxLjUyLDE0My4zNkw1MS4wODksNTEuMmg4OC45NThsMTYuMzA5LDkyLjE2SDMxLjUyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Terrace:GNe,Toilet:FNe,Upstairs:HNe,Wardrobe:VNe,Washroom:ZNe,Wc:XNe,Windscreen:KNe,Workshop:qNe,Workspace:e0e},s0e=[{_id:"hood",name:{en:"Hood",ru:"Вытяжка",de:"Abzugshaube",fr:"Capot",it:"Cappe",nl:"Hood",pl:"Okapy",pt:"Hood",es:"Campana","zh-cn":"抽油烟机"},icon:"Hoods.svg"},{_id:"alarm_system",name:{en:"Alarm System",ru:"Сигнализация",de:"Alarmanlage",fr:"Systèmes D'Alarme",it:"Sistemi Di Allarme",nl:"Alarm Systems",pl:"Systemy Alarmowe",pt:"Sistemas De Alarme",es:"Sistemas De Alarma","zh-cn":"报警系统"},icon:"Alarm Systems.svg"},{_id:"battery_status",name:{en:"Battery Status",ru:"Заряд батареи",de:"Batteriestatus",fr:"État De La Batterie",it:"Stato Della Batteria",nl:"Batterij Status",pl:"Stan Baterii",pt:"Estado Da Bateria",es:"Estado De La Batería","zh-cn":"电池状态"},icon:"Battery Status.svg"},{_id:"lighting",name:{en:"Lighting",ru:"Светильник",de:"Beleuchtung",fr:"Éclairages",it:"Illuminazione",nl:"Verlichting",pl:"Oprawy Oświetleniowe",pt:"Iluminações",es:"Iluminaciones","zh-cn":"照明"},icon:"Lightings.svg"},{_id:"shading",name:{en:"Shading",ru:"Затенение",de:"Beschattungen",fr:"Ombres",it:"Ombreggiatura",nl:"Shading",pl:"Zacienienie",pt:"Shading",es:"Sombreado","zh-cn":"底纹"},icon:"Shading.svg"},{_id:"irrigation",name:{en:"Irrigation",ru:"Орошение",de:"Bewässerung",fr:"Irrigation",it:"Irrigazione",nl:"Irrigatie",pl:"Nawadnianie",pt:"Irrigação",es:"Irrigación","zh-cn":"灌溉"},icon:"Irrigation.svg"},{_id:"iron",name:{en:"Iron",ru:"Утюг",de:"Bügeleisen",fr:"Le Fer",it:"Ferro",nl:"Ijzer",pl:"Żelazo",pt:"Ferro",es:"Hierro","zh-cn":"铁"},icon:"Iron.svg"},{_id:"computer",name:{en:"Computer",ru:"Компьютер",de:"Rechner",fr:"L'Ordinateur",it:"Computer",nl:"Computer",pl:"Komputer",pt:"Computador",es:"Ordenador","zh-cn":"电脑"},icon:"Computer.svg"},{_id:"ceiling_spotlight",name:{en:"Ceiling Spotlight",ru:"Потолочный прожектор",de:"Deckenspot",fr:"Plafond Spotlight",it:"Faretti A Soffitto",nl:"Plafond Spotlight",pl:"Reflektory Sufitowe",pt:"Tecto Foco",es:"Focos De Techo","zh-cn":"天花射灯"},icon:"Ceiling Spotlights.svg"},{_id:"printer",name:{en:"Printer",de:"Drucker",ru:"Принтер",pt:"Impressora",nl:"Printer",fr:"Imprimante",it:"Stampante",es:"Impresora",pl:"Drukarka","zh-cn":"打印机"},icon:"Printer.svg"},{_id:"power_consumption",name:{en:"Power Consumption",ru:"Потребляемая мощность",de:"Stromverbrauch",fr:"Consommation D'Énergie",it:"Consumo Di Energia",nl:"Energieverbruik",pl:"Pobór Energii",pt:"Consumo De Energia",es:"El Consumo De Energía","zh-cn":"能量消耗"},icon:"Power Consumption.svg"},{_id:"window",name:{en:"Window",ru:"Окно",de:"Fenster",fr:"La Fenêtre",it:"Finestra",nl:"Venster",pl:"Okno",pt:"Janela",es:"Ventana","zh-cn":"窗户"},icon:"Window.svg"},{_id:"garage_door",name:{en:"Garage Door",ru:"Гаражные Ворота",de:"Garagentor",fr:"Portes De Garage",it:"Garage Door",nl:"Garage Door",pl:"Bramy Garażowe",pt:"Portas De Garagem",es:"Las Puertas De Garaje","zh-cn":"车库门"},icon:"Garage Doors.svg"},{_id:"hairdryer",name:{en:"Hairdryer",ru:"Фен",de:"Haartrockner",fr:"Sèche-Cheveux",it:"Asciugacapelli",nl:"Haardroger",pl:"Suszarka Do Włosów",pt:"Secador De Cabelo",es:"Secador De Pelo","zh-cn":"电吹风"},icon:"Hairdryer.svg"},{_id:"hanging_lamp",name:{en:"Hanging Lamp",ru:"Подвесной светильник",de:"Hängelampe",fr:"Lampes Suspendues",it:"Lampade A Sospensione",nl:"Opknoping Lampen",pl:"Lampy Wiszące",pt:"Lâmpadas De Suspensão",es:"Lámparas Colgantes","zh-cn":"挂灯"},icon:"Hanging Lamps.svg"},{_id:"doorstep",name:{en:"Enterance",ru:"Входная дверь",de:"Haustür",fr:"Seuil De Porte",it:"Gradino Della Porta",nl:"Drempel",pl:"Próg",pt:"Porta",es:"Peldaño","zh-cn":"门阶"},icon:"Doorstep.svg"},{_id:"hot_water",name:{en:"Hot Water",ru:"Горячая вода",de:"Heißwasser",fr:"Eau Chaude",it:"Acqua Calda",nl:"Heet Water",pl:"Gorąca Woda",pt:"Água Quente",es:"Agua Caliente","zh-cn":"热水"},icon:"Hot Water.svg"},{_id:"heating",name:{en:"Heating",ru:"Отопление",de:"Heizung",fr:"Chauffe-Eau",it:"Riscaldatore",nl:"Verwarmer",pl:"Podgrzewacz",pt:"Aquecedor",es:"Calentador","zh-cn":"加热器"},icon:"Heater.svg"},{_id:"stove",name:{en:"Stove",ru:"Печь",de:"Herd",fr:"Le Fourneau",it:"Stufa",nl:"Fornuis",pl:"Kuchenka",pt:"Forno",es:"Cocina","zh-cn":"火炉"},icon:"Stove.svg"},{_id:"louvre",name:{en:"Louvre",ru:"Жалюзи",de:"Jalousie",fr:"Persienne",it:"Persiana Di Ventilazione",nl:"Louvre",pl:"Żaluzja",pt:"Trapeira",es:"Lumbrera","zh-cn":"卢浮宫"},icon:"Louvre.svg"},{_id:"coffee_maker",name:{en:"Coffee Maker",ru:"Кофеварка",de:"Kaffemaschine",fr:"Cafetière",it:"Macchine Da Caffè",nl:"Koffie Maker",pl:"Ekspresy Do Kawy",pt:"Cafeteira",es:"Cafetera","zh-cn":"咖啡壶"},icon:"Coffee Makers.svg"},{_id:"cold_water",name:{en:"Cold Water",ru:"Холодная вода",de:"Kaltwasser",fr:"Eau Froide",it:"Acqua Fredda",nl:"Koud Water",pl:"Zimna Woda",pt:"Água Fria",es:"Agua Fría","zh-cn":"冷水"},icon:"Cold Water.svg"},{_id:"climate",name:{en:"Climate",ru:"Климат",de:"Klima",fr:"Climat",it:"Clima",nl:"Klimaat",pl:"Klimat",pt:"Clima",es:"Clima","zh-cn":"气候"},icon:"Climate.svg"},{_id:"speaker",name:{en:"Speaker",ru:"Звуковая система",de:"Lautsprecher",fr:"Orateur",it:"Altoparlante",nl:"Spreker",pl:"Głośnik",pt:"Palestrante",es:"Altavoz","zh-cn":"扬声器"},icon:"Speaker.svg"},{_id:"led_strip",name:{en:"Led Strip",ru:"Светодиодная лента",de:"LED Leiste",fr:"Led Strip",it:"Led Strip",nl:"Loden Strip",pl:"Pasek Ledowy",pt:"Led Faixa",es:"Tira Llevada","zh-cn":"灯带"},icon:"Led Strip.svg"},{_id:"light",name:{en:"Light",ru:"Свет",de:"Licht",fr:"Lumière",it:"Leggero",nl:"Licht",pl:"Lekki",pt:"Luz",es:"Luz","zh-cn":"光"},icon:"Light.svg"},{_id:"fan",name:{en:"Fan",ru:"Вентилятор",de:"Lüfter",fr:"Ventilateur",it:"Fan",nl:"Ventilator",pl:"Wentylator",pt:"Ventilador",es:"Ventilador","zh-cn":"扇子"},icon:"Fan.svg"},{_id:"humidity",name:{en:"Humidity",ru:"Влажность",de:"Luftfeuchtigkeit",fr:"Humidité",it:"Umidità",nl:"Vochtigheid",pl:"Wilgotność",pt:"Umidade",es:"Humedad","zh-cn":"湿度"},icon:"Humidity.svg"},{_id:"ventilation",name:{en:"Ventilation",ru:"Вентиляция",de:"Lüftung",fr:"Ventilation",it:"Ventilazione",nl:"Ventilatie",pl:"Wentylacja",pt:"Ventilação",es:"Ventilación","zh-cn":"通风"},icon:"Ventilation.svg"},{_id:"chandelier",name:{en:"Chandelier",ru:"Люстра",de:"Kronleuchter",fr:"Lustre",it:"Lampadario",nl:"Kroonluchter",pl:"Żyrandol",pt:"Lustre",es:"Candelabro","zh-cn":"枝形吊灯"},icon:"Chandelier.svg"},{_id:"awning",name:{en:"Awning",ru:"Маркиза",de:"Markise",fr:"Auvents",it:"Tende",nl:"Luifels",pl:"Okrycia",pt:"Toldos",es:"Toldos","zh-cn":"遮阳篷"},icon:"Awnings.svg"},{_id:"music",name:{en:"Music",ru:"Музыка",de:"Musik",fr:"Musique",it:"Musica",nl:"Muziek",pl:"Muzyka",pt:"Música",es:"Música","zh-cn":"音乐"},icon:"Music.svg"},{_id:"people",name:{en:"People",ru:"Люди",de:"Personen",fr:"Gens",it:"Persone",nl:"Mensen",pl:"Ludzie",pt:"Pessoas",es:"Personas","zh-cn":"人们"},icon:"People.svg"},{_id:"pool",name:{en:"Pool",ru:"Бассейн",de:"Pool",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"水池"},icon:"Pool.svg"},{_id:"pump",name:{en:"Pump",ru:"Насос",de:"Pumpe",fr:"Pompe",it:"Pompa",nl:"Pomp",pl:"Pompa",pt:"Bombear",es:"Bomba","zh-cn":"泵"},icon:"Pump.svg"},{_id:"outdoor_blinds",name:{en:"Outdoor Blinds",ru:"Внещгте жалюзи",de:"Raffstore",fr:"Volets",it:"Tende Da Esterni",nl:"Outdoor Blinds",pl:"Rolety Zewnętrzne",pt:"Estores Exteriores",es:"Persianas Exteriores","zh-cn":"室外百叶窗"},icon:"Outdoor Blinds.svg"},{_id:"mowing_machine",name:{en:"Mowing Machine",ru:"Газонокосилка",de:"Rasenmäher",fr:"Machine De Fauchage",it:"Macchina Di Falciatura",nl:"Maaimachine",pl:"Kosiarka",pt:"Roçada Máquina",es:"Segadora","zh-cn":"割草机"},icon:"Mowing Machine.svg"},{_id:"receiver",name:{en:"Receiver",ru:"Приставка",de:"Receiver",fr:"Destinataire",it:"Ricevitore",nl:"Ontvanger",pl:"Odbiorca",pt:"Recebedor",es:"Receptor","zh-cn":"接收者"},icon:"Receiver.svg"},{_id:"shutters",name:{en:"Shutters",ru:"Ставни",de:"Rollladen",fr:"Volets",it:"Persiane",nl:"Shutters",pl:"Żaluzje",pt:"Persianas",es:"Persianas","zh-cn":"百叶窗"},icon:"Shutters.svg"},{_id:"smoke_detector",name:{en:"Smoke detector",de:"Rauchmelder",ru:"Детектор дыма",pt:"Detector de fumaça",nl:"Rookdetector",fr:"Détecteur de fumée",it:"Rilevatore di fumo",es:"Detector de humo",pl:"Wykrywacz dymu","zh-cn":"烟雾探测器"},icon:"SmokeDetector.svg"},{_id:"lock",name:{en:"Lock",ru:"Замок",de:"Schloß",fr:"Fermer À Clé",it:"Serratura",nl:"Slot",pl:"Zamek",pt:"Trancar",es:"Cerrar Con Llave","zh-cn":"锁"},icon:"Lock.svg"},{_id:"security",name:{en:"Security",ru:"Безопасность",de:"Sicherheit",fr:"Sécurité",it:"Sicurezza",nl:"Veiligheid",pl:"Bezpieczeństwo",pt:"Segurança",es:"Seguridad","zh-cn":"安全"},icon:"Security.svg"},{_id:"dishwasher",name:{en:"Dishwasher",ru:"Посудомоечная машина",de:"Spülmaschine",fr:"Lave-Vaisselles",it:"Lavastoviglie",nl:"Vaatwassers",pl:"Zmywarki",pt:"Máquinas De Lavar Louça",es:"Lavaplatos","zh-cn":"洗碗机"},icon:"Dishwashers.svg"},{_id:"vacuum_cleaner",name:{en:"Vacuum Cleaner",ru:"Пылесос",de:"Staubsauger",fr:"Aspirateur",it:"Aspirapolvere",nl:"Stofzuiger",pl:"Odkurzacz",pt:"Aspirador De Pó",es:"Aspiradora","zh-cn":"吸尘器"},icon:"Vacuum Cleaner.svg"},{_id:"socket",name:{en:"Socket",ru:"Розетка",de:"Steckdose",fr:"Prise",it:"Socket",nl:"Socket",pl:"Gniazdka",pt:"Tomada",es:"Zócalo","zh-cn":"套接字"},icon:"Sockets.svg"},{_id:"floor_lamp",name:{en:"Floor Lamp",ru:"Торшер",de:"Stehlampe",fr:"Lampes Pour Plancher",it:"Lampade A Stelo",nl:"Vloerlampen",pl:"Lampy Podłogowe",pt:"Lâmpadas Chão",es:"Lámparas De Pie","zh-cn":"落地灯"},icon:"Floor Lamps.svg"},{_id:"power_consumption",name:{en:"Power Consumption",ru:"Потребляемая мощность",de:"Stromverbrauch",fr:"Consommation D'Énergie",it:"Consumo Di Energia",nl:"Energieverbruik",pl:"Pobór Energii",pt:"Consumo De Energia",es:"El Consumo De Energía","zh-cn":"能量消耗"},icon:"Power Consumption.svg"},{_id:"temperature_sensor",name:{en:"Temperature Sensor",ru:"Температурный датчик",de:"Temperatur-Sensor",fr:"Capteur De Température",it:"Sensori Di Temperatura",nl:"Temperatuursensor",pl:"Czujniki Temperatury",pt:"Sensores De Temperatura",es:"Sensores De Temperatura","zh-cn":"温度传感器"},icon:"Temperature Sensors.svg"},{_id:"table_lamp",name:{en:"Table Lamp",ru:"Настольная лампа",de:"Tischlampe",fr:"Lampe De Chevet",it:"Lampade Da Tavolo",nl:"Tafellampen",pl:"Lampy Stołowe",pt:"Lâmpadas De Mesa",es:"Lámparas De Mesa","zh-cn":"台灯"},icon:"Table Lamps.svg"},{_id:"gate",name:{en:"Gate",ru:"Ворота",de:"Tor",fr:"Porte",it:"Gate",nl:"Gate",pl:"Bramy",pt:"Portões",es:"Puertas","zh-cn":"盖茨"},icon:"Gates.svg"},{_id:"dryer",name:{en:"Dryer",ru:"Сушилка",de:"Trockner",fr:"Séchoir",it:"Asciugatrice",nl:"Droger",pl:"Suszarka",pt:"Secador",es:"Secadora","zh-cn":"烘干机"},icon:"Dryer.svg"},{_id:"door",name:{en:"Door",ru:"Дверь",de:"Tür",fr:"Des Portes",it:"Porte",nl:"Deuren",pl:"Drzwi",pt:"Portas",es:"Puertas","zh-cn":"门"},icon:"Doors.svg"},{_id:"tv",name:{en:"Tv",ru:"Телевизор",de:"TV",fr:"La Télé",it:"Tv",nl:"Tv",pl:"Telewizja",pt:"Televisão",es:"Televisor","zh-cn":"电视"},icon:"Tv.svg"},{_id:"consumption",name:{en:"Consumption",ru:"Потребление",de:"Verbrauch",fr:"Consommation",it:"Consumo",nl:"Consumptie",pl:"Konsumpcja",pt:"Consumo",es:"Consumo","zh-cn":"消费"},icon:"Consumption.svg"},{_id:"amplifier",name:{en:"Amplifier",ru:"Усилитель звука",de:"Verstärker",fr:"Amplificateur",it:"Amplificatore",nl:"Versterker",pl:"Wzmacniacz",pt:"Amplificador",es:"Amplificador","zh-cn":"放大器"},icon:"Amplifier.svg"},{_id:"curtains",name:{en:"Curtains",ru:"Шторы",de:"Vorhänge",fr:"Des Rideaux",it:"Le Tende",nl:"Gordijnen",pl:"Zasłony",pt:"Cortinas",es:"Cortinas","zh-cn":"窗帘"},icon:"Curtains.svg"},{_id:"sconce",name:{en:"Sconce",ru:"Настенный светильник",de:"Wandlampe",fr:"Sconce",it:"Sconce",nl:"Sconce",pl:"Kinkiety",pt:"Arandelas",es:"Los Apliques","zh-cn":"壁灯"},icon:"Sconces.svg"},{_id:"washing_machine",name:{en:"Washing Machine",ru:"Стиральная машина",de:"Waschmaschine",fr:"Machines À Laver",it:"Lavatrici",nl:"Wasmachines",pl:"Pralki",pt:"Máquinas De Lavar Roupas",es:"Lavadoras","zh-cn":"洗衣机"},icon:"Washing Machines.svg"},{_id:"water",name:{en:"Water",ru:"Вода",de:"Wasser",fr:"L'Eau",it:"Acqua",nl:"Water",pl:"Woda",pt:"Água",es:"Agua","zh-cn":"水"},icon:"Water.svg"},{_id:"water_heater",name:{en:"Water Heater",ru:"Нагреватель воды",de:"Wasserkocher",fr:"Chauffe-Eau",it:"Scaldabagno",nl:"Waterkoker",pl:"Podgrzewacz Wody",pt:"Aquecedor De Água",es:"Calentador De Agua","zh-cn":"热水器"},icon:"Water Heater.svg"},{_id:"water_consumption",name:{en:"Water Consumption",ru:"Потребление воды",de:"Wasserverbrauch",fr:"Consommation D'Eau",it:"Consumo D'Acqua",nl:"Waterverbruik",pl:"Konsumpcja Wody",pt:"Consumo De Água",es:"Consumo De Agua","zh-cn":"耗水量"},icon:"Water Consumption.svg"},{_id:"weather",name:{en:"Weather",ru:"Погода",de:"Wetter",fr:"La Météo",it:"Tempo Metereologico",nl:"Weer",pl:"Pogoda",pt:"Clima",es:"Tiempo","zh-cn":"天气"},icon:"Weather.svg"}],i0e=[{_id:"storeroom",name:{en:"Storeroom",ru:"Кладовая",de:"Abstellraum",fr:"Débarras",it:"Dispensa",nl:"Bergplaats",pl:"Magazyn",pt:"Despensa",es:"Trastero","zh-cn":"库房"},icon:"Storeroom.svg"},{_id:"second_floor",name:{en:"Second floor",ru:"Второй этаж",de:"Erster OG",pt:"Primeiro andar",nl:"Eerste verdieping",fr:"Premier étage",it:"Primo piano",es:"Primer piso",pl:"Pierwsze piętro","zh-cn":"第一层"},icon:"Second Floor.svg"},{_id:"dressing_room",name:{en:"Dressing Room",ru:"Гардеробная",de:"Ankleide",fr:"Vestiaire",it:"Camerino",nl:"Kleedkamer",pl:"Przebieralnia",pt:"Provador",es:"Vestidor","zh-cn":"更衣室"},icon:"Dressing Room.svg"},{_id:"workspace",name:{en:"Workspace",ru:"Рабочая Среда",de:"Arbeitszimmer",fr:"Espace De Travail",it:"Area Di Lavoro",nl:"Workspace",pl:"Workspace",pt:"Área De Trabalho",es:"Espacio De Trabajo","zh-cn":"工作区"},icon:"Workspace.svg"},{_id:"driveway",name:{en:"Driveway",ru:"Дорога",de:"Auffahrt",fr:"Allée",it:"Viale",nl:"Pad",pl:"Podjazd",pt:"Entrada Da Garagem",es:"Entrada De Coches","zh-cn":"车道"},icon:"Driveway.svg"},{_id:"outdoors",name:{en:"Outdoors",ru:"На Улице",de:"Außenbereich",fr:"En Plein Air",it:"All'Aperto",nl:"Buitenshuis",pl:"Na Dworze",pt:"Ao Ar Livre",es:"Al Aire Libre","zh-cn":"户外"},icon:"Outdoors.svg"},{_id:"bathroom",name:{en:"Bathroom",ru:"Ванная Комната",de:"Badezimmer",fr:"Salle De Bains",it:"Bagno",nl:"Badkamer",pl:"Łazienka",pt:"Banheiro",es:"Baño","zh-cn":"浴室"},icon:"Bathroom.svg"},{_id:"balcony",name:{en:"Balcony",ru:"Балкон",de:"Balkon",fr:"Balcon",it:"Balcone",nl:"Balkon",pl:"Balkon",pt:"Sacada",es:"Balcón","zh-cn":"阳台"},icon:"Balcony.svg"},{_id:"office",name:{en:"Office",ru:"Офис",de:"Office",fr:"Bureau",it:"Ufficio",nl:"Kantoor",pl:"Gabinet",pt:"Escritório",es:"Oficina","zh-cn":"办公室"},icon:"Office.svg"},{_id:"carport",name:{en:"Carport",ru:"Навес",de:"Carport",fr:"Carport",it:"Posto Auto Coperto",nl:"Carport",pl:"Wiata",pt:"Telheiro",es:"Cochera","zh-cn":"车棚"},icon:"Carport.svg"},{_id:"attic",name:{en:"Attic",ru:"Чердак",de:"Dachgeschoss",fr:"Grenier",it:"Attico",nl:"Zolder",pl:"Poddasze",pt:"Sótão",es:"Ático","zh-cn":"阁楼"},icon:"Attic.svg"},{_id:"hall",name:{en:"Hall",ru:"Зал",de:"Diele",fr:"Salle",it:"Sala",nl:"Hal",pl:"Sala",pt:"Corredor",es:"Sala","zh-cn":"大厅"},icon:"Hall.svg"},{_id:"entrance",name:{en:"Entrance",ru:"Вход",de:"Eingang",fr:"Entrée",it:"Ingresso",nl:"Ingang",pl:"Wejście",pt:"Entrada",es:"Entrada","zh-cn":"入口"},icon:"Entrance.svg"},{_id:"ground_floor",name:{en:"Ground Floor",ru:"Первый Этаж",de:"Erdgeschoss",fr:"Rez-De-Chaussée",it:"Piano Terra",nl:"Begane Grond",pl:"Parter",pt:"Térreo",es:"Planta Baja","zh-cn":"一楼"},icon:"Ground Floor.svg"},{_id:"dining_area",name:{en:"Dining Area",ru:"Столовая",de:"Essbereich",fr:"Salle À Manger",it:"Zona Pranzo",nl:"Eethoek",pl:"Jadalnia",pt:"Área De Refeições",es:"Comedor","zh-cn":"用餐区"},icon:"Dining Area.svg"},{_id:"dining_room",name:{en:"Dining Room",ru:"Столовая",de:"Esszimmer",fr:"Salle À Manger",it:"Sala Da Pranzo",nl:"Eetkamer",pl:"Jadalnia",pt:"Sala De Jantar",es:"Comedor","zh-cn":"饭厅"},icon:"Dining Room.svg"},{_id:"gym",name:{en:"Gym",ru:"Спортзал",de:"Fitnessraum",fr:"Gym",it:"Palestra",nl:"Sportschool",pl:"Siłownia",pt:"Ginásio",es:"Gimnasio","zh-cn":"健身房"},icon:"Gym.svg"},{_id:"gallery",name:{en:"Gallery",ru:"Галерея",de:"Galerie",fr:"Galerie",it:"Galleria",nl:"Galerij",pl:"Galeria",pt:"Galeria",es:"Galería","zh-cn":"画廊"},icon:"Gallery.svg"},{_id:"garage",name:{en:"Garage",ru:"Гараж",de:"Garage",fr:"Garage",it:"Box Auto",nl:"Garage",pl:"Garaż",pt:"Garagem",es:"Garaje","zh-cn":"车库"},icon:"Garage.svg"},{_id:"wardrobe",name:{en:"Wardrobe",ru:"Гардероб",de:"Garderobe",fr:"Penderie",it:"Armadio",nl:"Garderobe",pl:"Szafa",pt:"Guarda Roupa",es:"Armario","zh-cn":"衣柜"},icon:"Wardrobe.svg"},{_id:"garden",name:{en:"Garden",ru:"Сад",de:"Garten",fr:"Jardin",it:"Giardino",nl:"Tuin",pl:"Ogród",pt:"Jardim",es:"Jardín","zh-cn":"花园"},icon:"Garden.svg"},{_id:"summer_house",name:{en:"Summer House",ru:"Дача",de:"Gartenhaus",fr:"Maison D'Été",it:"Casa Estiva",nl:"Zomerhuis",pl:"Domek Letniskowy",pt:"Summer House",es:"Casa De Verano","zh-cn":"凉亭"},icon:"Summer House.svg"},{_id:"guest_bathroom",name:{en:"Guest Bathroom",ru:"Гостевая Комната",de:"Gäste-WC",fr:"Salle De Bains Invité",it:"Guest Bathroom",nl:"Gastenbadkamer",pl:"Łazienka Gościnna",pt:"Banheiro De Hóspedes",es:"Baño De Visitas","zh-cn":"客用浴室"},icon:"Guest Bathroom.svg"},{_id:"guest_room",name:{en:"Guest Room",ru:"Гостевая Комната",de:"Gästezimmer",fr:"Chambre D'Amis",it:"Stanza Degli Ospiti",nl:"Guest Room",pl:"Pokój Gościnny",pt:"Quarto De Hóspedes",es:"Habitación De Huéspedes","zh-cn":"客房"},icon:"Guest Room.svg"},{_id:"laundry_room",name:{en:"Laundry Room",ru:"Прачечная",de:"Hauswirtschaftsraum",fr:"Buanderie",it:"Lavanderia",nl:"Wasruimte",pl:"Pralnia",pt:"Lavandaria",es:"Cuarto De Lavado","zh-cn":"洗衣房"},icon:"Laundry Room.svg"},{_id:"home_theater",name:{en:"Home Theater",ru:"Домашний Театр",de:"Heimkino",fr:"Cinéma Maison",it:"Home Theater",nl:"Thuisbioscoop",pl:"Kino Domowe",pt:"Cinema Em Casa",es:"Cine En Casa","zh-cn":"家庭电影院"},icon:"Home Theater.svg"},{_id:"boiler_room",name:{en:"Boiler Room",ru:"Бойлерная",de:"Heizungsraum",fr:"Chaufferie",it:"Locale Caldaia",nl:"Boiler Room",pl:"Kotłownia",pt:"Sala Da Caldeira",es:"Sala De Calderas","zh-cn":"锅炉房"},icon:"Boiler Room.svg"},{_id:"chamber",name:{en:"Chamber",ru:"Камера",de:"Kammer",fr:"Chambre",it:"Camera",nl:"Kamer",pl:"Izba",pt:"Câmara",es:"Cámara","zh-cn":"商会"},icon:"Chamber.svg"},{_id:"basement,_cellar",name:{en:"Basement, Cellar",ru:"Подвал, Погреб",de:"Keller",fr:"Sous-Sol, Cave",it:"Taverna, Cantina",nl:"Kelder, Kelder",pl:"Piwnica, Piwnica",pt:"Porão, Adega",es:"Sótano, Bodega","zh-cn":"地下室,地窖"},icon:"Basement.svg"},{_id:"nursery",name:{en:"Nursery",ru:"Питомник",de:"Kinderzimmer",fr:"Garderie",it:"Asilo",nl:"Kinderkamer",pl:"Żłobek",pt:"Berçário",es:"Guardería","zh-cn":"苗圃"},icon:"Nursery.svg"},{_id:"corridor",name:{en:"Corridor",ru:"Коридор",de:"Korridor",fr:"Couloir",it:"Corridoio",nl:"Gang",pl:"Korytarz",pt:"Corredor",es:"Corredor","zh-cn":"走廊"},icon:"Corridor.svg"},{_id:"kitchen",name:{en:"Kitchen",ru:"Кухня",de:"Küche",fr:"Cuisine",it:"Cucina",nl:"Keuken",pl:"Kuchnia",pt:"Cozinha",es:"Cocina","zh-cn":"厨房"},icon:"Kitchen.svg"},{_id:"upstairs",name:{en:"Upstairs",ru:"Вверх По Лестнице",de:"Obergeschoss",fr:"En Haut",it:"Di Sopra",nl:"Boven",pl:"Na Górę",pt:"Andar De Cima",es:"Piso Superior","zh-cn":"楼上"},icon:"Upstairs.svg"},{_id:"office",name:{en:"Office",ru:"Офис",de:"Office",fr:"Bureau",it:"Ufficio",nl:"Kantoor",pl:"Gabinet",pt:"Escritório",es:"Oficina","zh-cn":"办公室"},icon:"Office.svg"},{_id:"pool",name:{en:"Pool",ru:"Бассейн",de:"Pool",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"水池"},icon:"Pool.svg"},{_id:"rear_wall",name:{en:"Rear Wall",ru:"Задняя Стенка",de:"Rückwand",fr:"Paroi Arrière",it:"Parete Posteriore",nl:"Achterwand",pl:"Tylna Ściana",pt:"Parede Traseira",es:"Pared Posterior","zh-cn":"后墙"},icon:"Rear Wall.svg"},{_id:"barn",name:{en:"Barn",ru:"Амбар",de:"Scheune",fr:"Grange",it:"Fienile",nl:"Schuur",pl:"Stodoła",pt:"Celeiro",es:"Granero","zh-cn":"谷仓"},icon:"Barn.svg"},{_id:"sleeping_area",name:{en:"Sleeping Area",ru:"Спальное Место",de:"Schlafbereich",fr:"Coin Montagne",it:"Area Sleeping",nl:"Sleeping Area",pl:"Powierzchnia Spania",pt:"Sleeping Area",es:"Área De Dormir","zh-cn":"睡眠区"},icon:"Sleeping Area.svg"},{_id:"bedroom",name:{en:"Bedroom",ru:"Спальная Комната",de:"Schlafzimmer",fr:"Chambre",it:"Camera Da Letto",nl:"Slaapkamer",pl:"Sypialnia",pt:"Quarto",es:"Cuarto","zh-cn":"卧室"},icon:"Bedroom.svg"},{_id:"shed",name:{en:"Shed",ru:"Сбрасывать",de:"Schuppen",fr:"Hangar",it:"Capannone",nl:"Schuur",pl:"Budka",pt:"Cabana",es:"Cobertizo","zh-cn":"棚"},icon:"Shed.svg"},{_id:"swimming_pool",name:{en:"Swimming Pool",ru:"Плавательный Бассейн",de:"Schwimmbad",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"游泳池"},icon:"Swimming Pool.svg"},{_id:"dining",name:{en:"Dining",ru:"Обеденный",de:"Speis",fr:"À Manger",it:"Cenare",nl:"Dining",pl:"Jadalnia",pt:"Jantar",es:"Comida","zh-cn":"用餐"},icon:"Dining.svg"},{_id:"playroom",name:{en:"Playroom",ru:"Игровая Комната",de:"Spielzimmer",fr:"Salle De Jeux",it:"Stanza Dei Giochi",nl:"Speelkamer",pl:"Pokój Zabaw",pt:"Sala De Jogos",es:"Cuarto De Jugar","zh-cn":"游戏室"},icon:"Playroom.svg"},{_id:"stairway",name:{en:"Stairway",ru:"Лестница",de:"Treppe",fr:"Escalier",it:"Scala",nl:"Trap",pl:"Klatka Schodowa",pt:"Escada",es:"Escalera","zh-cn":"楼梯"},icon:"Stairway.svg"},{_id:"equipment_room",name:{en:"Equipment Room",ru:"Оборудование Номера",de:"Technikraum",fr:"Salle D'Équipement",it:"Stanza Degli Attrezzi",nl:"Technische Ruimte",pl:"Wyposażenie Pokoi",pt:"Sala De Equipamentos",es:"Cuarto De Equipos","zh-cn":"机房"},icon:"Equipment Room.svg"},{_id:"terrace",name:{en:"Terrace",ru:"Терраса",de:"Terrasse",fr:"Terrasse",it:"Terrazza",nl:"Terras",pl:"Taras",pt:"Terraço",es:"Terraza","zh-cn":"阳台"},icon:"Terrace.svg"},{_id:"toilet",name:{en:"Toilet",ru:"Туалет",de:"Toilette",fr:"Toilette",it:"Gabinetto",nl:"Toilet",pl:"Toaleta",pt:"Banheiro",es:"Inodoro","zh-cn":"洗手间"},icon:"Toilet.svg"},{_id:"stairwell",name:{en:"Stairwell",ru:"Лестничная клетка",de:"Treppenhaus",fr:"Cage D'Escalier",it:"Tromba Delle Scale",nl:"Trappenhuis",pl:"Klatka Schodowa",pt:"Caixa De Escada",es:"Hueco De Escalera","zh-cn":"楼梯间"},icon:"Stairwell.svg"},{_id:"locker_room",name:{en:"Locker Room",ru:"Камера Хранения",de:"Umkleideraum",fr:"Vestiaire",it:"Spogliatoio",nl:"Kleedkamer",pl:"Szatnia",pt:"Vestiário",es:"Vestuario","zh-cn":"更衣室"},icon:"Locker Room.svg"},{_id:"basement",name:{en:"Basement",ru:"Подвал",de:"Untergeschoss",fr:"Sous-Sol",it:"Seminterrato",nl:"Kelder",pl:"Piwnica",pt:"Porão",es:"Sótano","zh-cn":"地下室"},icon:"Basement.svg"},{_id:"front_yard",name:{en:"Front Yard",ru:"Передний Двор",de:"Vorgarten",fr:"Front Yard",it:"Cortile",nl:"Voortuin",pl:"Podwórko",pt:"Jardim Da Frente",es:"Patio Delantero","zh-cn":"前院"},icon:"Front Yard.svg"},{_id:"anteroom",name:{en:"Anteroom",ru:"Передняя",de:"Vorraum",fr:"Antichambre",it:"Anticamera",nl:"Voorkamer",pl:"Przedpokój",pt:"Ante-Sala",es:"Antesala","zh-cn":"接待室"},icon:"Anteroom.svg"},{_id:"washroom",name:{en:"Washroom",ru:"Уборная",de:"Waschraum",fr:"Toilettes",it:"Bagno",nl:"Waskamer",pl:"Umywalnia",pt:"Banheiro",es:"Baño","zh-cn":"卫生间"},icon:"Washroom.svg"},{_id:"wc",name:{en:"Wc",ru:"Туалет",de:"WC",fr:"Toilettes",it:"Bagno",nl:"Wc",pl:"Toaleta",pt:"Banheiro",es:"Wc","zh-cn":"厕所"},icon:"Wc.svg"},{_id:"workshop",name:{en:"Workshop",ru:"Мастерская",de:"Werkstatt",fr:"Atelier",it:"Laboratorio",nl:"Werkplaats",pl:"Warsztat",pt:"Oficina",es:"Taller","zh-cn":"作坊"},icon:"Workshop.svg"},{_id:"windscreen",name:{en:"Windscreen",ru:"Ветровое Стекло",de:"Windfang",fr:"Pare-Brise",it:"Parabrezza",nl:"Voorruit",pl:"Szyba Przednia",pt:"Pára-Brisas",es:"Parabrisas","zh-cn":"风档"},icon:"Windscreen.svg"},{_id:"living_area",name:{en:"Living Area",ru:"Жилая Площадь",de:"Wohnbereich",fr:"Salon",it:"Zona Giorno",nl:"Living Area",pl:"Powierzchnia Mieszkalna",pt:"Sala-De-Estar",es:"Sala De Estar","zh-cn":"生活区域"},icon:"Living Area.svg"},{_id:"living_room",name:{en:"Living Room",ru:"Гостинная",de:"Wohnzimmer",fr:"Le Salon",it:"Soggiorno",nl:"Woonkamer",pl:"Salon",pt:"Sala De Estar",es:"Sala De Estar","zh-cn":"客厅"},icon:"Living Room.svg"},{_id:"living_room",name:{en:"Living Room",ru:"Гостинная",de:"Wohnzimmer",fr:"Le Salon",it:"Soggiorno",nl:"Woonkamer",pl:"Salon",pt:"Sala De Estar",es:"Sala De Estar","zh-cn":"客厅"},icon:"Living Room.svg"}];class r0e extends ze{constructor(e){super(e),this.state={opened:!1,names:[],filter:"",icons:null,loading:!1,isAnyName:!1}}loadAllIcons(){this.state.loading||this.state.icons||this.setState({loading:!0},()=>{const e=[],t=[];if(this.props.icons){const s=this.props.icons.map((r,o)=>{let M;if(typeof r=="object"){if(M=r.icon||r.src||r.href||"",t[o]=typeof r.name=="object"?r.name[this.props.lang]||r.name.en||r._id||"":r.name||"",!t[o]){const a=M.split(".");a.pop(),t[o]=a[a.length-1]}}else M=r;return M?M.startsWith("data:")?(e[o]=M,Promise.resolve()):E.getSvg(M).then(a=>e[o]=a):Promise.resolve()});Promise.all(s).catch(r=>console.error(r)).then(()=>this.setState({icons:e,loading:!1,names:t,isAnyName:!!t.find(r=>r)}))}else{let s=this.props.onlyRooms||!this.props.onlyRooms&&!this.props.onlyDevices?i0e:null;if(s&&(s.forEach(r=>{r.name&&typeof r.name=="object"&&(r.name=r.name[this.props.lang]||r.name.en||r._id),r.name=r.name||r._id}),s=s.filter((r,o)=>!(s!=null&&s.find((M,a)=>o!==a&&M.icon===r.icon&&M.name===r.name))),s.forEach((r,o)=>{t[o]=r.name,e[o]=`data:image/svg+xml;base64,${t0e[r.icon.replace(/\.svg$/,"")]}`})),s=this.props.onlyDevices||!this.props.onlyRooms&&!this.props.onlyDevices?s0e:null,s){const r=e.length;s&&s.forEach(o=>{o.name&&typeof o.name=="object"&&(o.name=o.name[this.props.lang]||o.name.en||o._id),o.name=o.name||o._id}),s=s.filter((o,M)=>!(s!=null&&s.find((a,u)=>M!==u&&a.icon===o.icon&&a.name===o.name))),s.forEach((o,M)=>{t[M+r]=o.name,e[M+r]=`data:image/svg+xml;base64,${TNe[o.icon.replace(/\.svg$/,"")]}`})}this.setState({icons:e,loading:!1,names:t,isAnyName:!!t.find(r=>r)})}})}render(){return this.state.loading?n.createElement(er,null):n.createElement(n.Fragment,null,n.createElement(X,{color:"grey",variant:"outlined",title:this.props.t("ra_Select predefined icon"),onClick:()=>this.setState({opened:!0},()=>this.loadAllIcons()),style:{minWidth:40,marginRight:8}},"..."),this.state.opened?n.createElement(de,{onClose:()=>this.setState({opened:!1}),open:!0},n.createElement(Ie,null,this.props.t("ra_Select predefined icon"),this.state.isAnyName?n.createElement(le,{variant:"standard",margin:"dense",style:{marginLeft:20},value:this.state.filter,onChange:e=>this.setState({filter:e.target.value.toLowerCase()}),placeholder:this.props.t("ra_Filter"),slotProps:{input:{endAdornment:this.state.filter?n.createElement(P,{tabIndex:-1,size:"small",onClick:()=>this.setState({filter:""})},n.createElement(Fa,null)):void 0}}}):null),n.createElement(Ae,null,n.createElement("div",{style:{width:"100%",textAlign:"center"}},this.state.icons&&this.state.icons.map((e,t)=>!this.state.filter||this.state.names[t]&&this.state.names[t].toLowerCase().includes(this.state.filter)?n.createElement(ae,{title:this.state.names[t]||"",key:t,slotProps:{popper:{sx:{pointerEvents:"none"}}}},n.createElement(P,{onClick:()=>this.setState({opened:!1},()=>{const s=this.props.onSelect||this.props.onChange;s&&s(e)}),size:"large"},n.createElement(xe,{src:e,alt:t.toString(),style:{width:32,height:32,borderRadius:5}}))):null))),n.createElement(me,null,n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.setState({opened:!1}),startIcon:n.createElement(ge,null)},this.props.t("ra_Close")))):null)}}const _t={formContainer:{display:"flex",justifyContent:"left",alignItems:"center"},formControl:{display:"flex",padding:24,flexGrow:1e3},divContainer:{width:64,height:32,whiteSpace:"nowrap",lineHeight:"32px",marginRight:8},dragField:{textAlign:"center",display:"table",minHeight:90,width:"calc(100% - 60px)",border:"2px dashed #777",borderRadius:10,padding:4},formIcon:{margin:10,opacity:.6},text:{display:"table-cell",verticalAlign:"middle"}};function tge(i){var a,u,l,N;const e=i.icon,t=i.onChange,s=Qt(c=>{const L=new FileReader;L.addEventListener("load",()=>t(L.result),!1),c[0]&&L.readAsDataURL(c[0])},[t]),{getRootProps:r,getInputProps:o,isDragActive:M}=uN({onDrop:s});return n.createElement("div",{style:_t.formContainer},e?n.createElement(e,{style:_t.formIcon}):null,n.createElement(wt,{variant:"standard",style:{..._t.formControl,padding:3}},n.createElement(As,{shrink:!0,sx:(a=i.customStyles)!=null&&a.label?{"&.MuiInputLabel-root":i.customStyles.label}:void 0,classes:{root:(u=i.customClasses)==null?void 0:u.label}},i.label),n.createElement("div",{style:_t.formContainer},i.value?n.createElement("div",{style:_t.divContainer},n.createElement(xe,{style:{...i.previewStyle,...((l=i.customStyles)==null?void 0:l.icon)||void 0},src:i.value,className:E.clsx(i.previewClassName,(N=i.customClasses)==null?void 0:N.icon)}),!i.disabled&&n.createElement(P,{style:{verticalAlign:"top"},title:D.t("ra_Clear icon"),size:"small",onClick:()=>i.onChange("")},n.createElement(Fa,null))):!i.disabled&&n.createElement(r0e,{icons:i.icons,onlyRooms:i.onlyRooms,onlyDevices:i.onlyDevices,onSelect:c=>i.onChange(c),t:D.t,lang:D.getLanguage()}),!i.disabled&&n.createElement("div",{...r(),style:{..._t.dragField,...M?{backgroundColor:"rgba(0, 255, 0, 0.1)"}:{cursor:"pointer"}}},n.createElement("input",{...o()}),M?n.createElement("span",{style:_t.text},D.t("ra_Drop the files here...")):n.createElement("span",{style:_t.text},D.t("ra_Drag 'n' drop some files here, or click to select files"))))))}function o0e(i){const e=document.createElement("div");e.innerHTML=i;const t=e.firstElementChild;return t!=null&&t.remove?t.remove():t&&e.removeChild(t),e.remove(),t}function M0e(i){const e={};if(!i)return e;for(let t,s=0;so[1].toUpperCase()),e[t]=i[s].value}return e}class $i extends ze{svg;static REMOTE_SERVER=window.location.hostname.includes("iobroker.in");static REMOTE_PREFIX=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1);constructor(e){var t;super(e),this.state={svg:!!((t=this.props.src)!=null&&t.startsWith("data:")),created:!0,color:this.props.color||"",src:this.props.src||"",imgError:!1,showError:!!this.props.showError},this.svg=this.state.svg&&this.state.src?this.getSvgFromData(this.state.src):null}static getDerivedStateFromProps(e,t){var o;const s={};let r=!1;return e&&t&&e.src!==t.src&&(s.src=e.src,s.svg=(o=e.src)==null?void 0:o.startsWith("data:"),s.created=!1,r=!0),e&&t&&e.color!==t.color&&(s.color=e.color,s.created=!1,r=!0),e&&t&&e.showError!==t.showError&&(s.showError=e.showError,r=!0),r?s:null}getSvgFromData(e){const t="data:image/svg+xml;base64,";if(!e.startsWith(t))return null;e=e.substring(t.length);try{e=atob(e);const s=o0e(e),r=s.innerHTML,o=M0e(s.attributes);return s.remove(),n.createElement(W,{component:"svg",sx:this.props.sx,className:this.props.className,style:this.state.color?{color:this.state.color}:void 0,...o,dangerouslySetInnerHTML:{__html:r}})}catch{}return null}render(){if(this.state.svg)return this.state.created||setTimeout(()=>{this.svg=this.state.src?this.getSvgFromData(this.state.src):null,this.setState({created:!0})},50),this.svg;if(this.state.src){if(this.state.imgError||!this.state.src)return n.createElement(sM,{className:this.props.className});if($i.REMOTE_SERVER&&!this.state.src.startsWith("http://")&&!this.state.src.startsWith("https://")){let e=(this.props.imagePrefix||"")+this.state.src;return e.startsWith("./")?e=$i.REMOTE_PREFIX+e.substring(2):e.startsWith("/")||(e=$i.REMOTE_PREFIX+e),n.createElement(W,{component:"img",sx:this.props.sx,className:this.props.className,src:`https://remote-files.iobroker.in${e}`,alt:"",onError:()=>this.props.showError?this.setState({imgError:!0}):this.setState({src:""})})}return n.createElement(W,{component:"img",sx:this.props.sx,className:this.props.className,src:(this.props.imagePrefix||"")+this.state.src,alt:"",onError:()=>this.props.showError?this.setState({imgError:!0}):this.setState({src:""})})}return null}}var B={},Lr={},Ht={};Object.defineProperty(Ht,"__esModule",{value:!0});Ht.StateType=Ht.Types=void 0;var Wn;(function(i){i.unknown="unknown",i.airCondition="airCondition",i.blind="blind",i.blindButtons="blindButtons",i.button="button",i.buttonSensor="buttonSensor",i.camera="camera",i.chart="chart",i.cie="cie",i.ct="ct",i.dimmer="dimmer",i.door="door",i.fireAlarm="fireAlarm",i.floodAlarm="floodAlarm",i.gate="gate",i.hue="hue",i.humidity="humidity",i.illuminance="illuminance",i.image="image",i.info="info",i.instance="instance",i.light="light",i.location="location",i.locationOne="locationOne",i.lock="lock",i.media="media",i.motion="motion",i.percentage="percentage",i.rgb="rgb",i.rgbSingle="rgbSingle",i.rgbwSingle="rgbwSingle",i.slider="slider",i.socket="socket",i.temperature="temperature",i.thermostat="thermostat",i.vacuumCleaner="vacuumCleaner",i.volume="volume",i.volumeGroup="volumeGroup",i.warning="warning",i.weatherCurrent="weatherCurrent",i.weatherForecast="weatherForecast",i.window="window",i.windowTilt="windowTilt"})(Wn||(Ht.Types=Wn={}));var Rn;(function(i){i.Number="number",i.String="string",i.Boolean="boolean"})(Rn||(Ht.StateType=Rn={}));var Oe={};Object.defineProperty(Oe,"__esModule",{value:!0});Oe.checkEnum=eu;Oe.roleOrEnum=vs;Oe.roleOrEnumLight=n0e;Oe.roleOrEnumBlind=a0e;Oe.roleOrEnumGate=c0e;Oe.roleOrEnumWindow=u0e;Oe.roleOrEnumDoor=l0e;Oe.getEnums=N0e;Oe.getAllStatesInChannel=L0e;Oe.getAllStatesInDevice=j0e;Oe.getObjectsBelowId=cu;Oe.getFunctionEnums=g0e;Oe.getParentId=T0e;function eu(i,e){let t=!1;return i&&i.forEach(s=>{const r=s.lastIndexOf(".");r!==-1&&(s=s.substring(r+1));for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&e[o].find(M=>M.test(s)))return t=!0,!1}),t}function vs(i,e,t,s){return i.common.role&&(t!=null&&t.includes(i.common.role))?!0:eu(e,s)}const tu={en:[/lights?/i,/lamps?/i,/ceilings?/i],de:[/licht(er)?/i,/lampen?/i,/beleuchtung(en)?/i],ru:[/свет/i,/ламп[аы]/i,/торшеры?/,/подсветк[аи]/i,/лампочк[аи]/i,/светильники?/i]},su=["switch.light","dimmer","value.dimmer","level.dimmer","sensor.light","state.light"];function n0e(i,e){return vs(i,e,su,tu)}const Hi={en:[/blinds?/i,/windows?/i,/shutters?/i],de:[/rollladen?/i,/fenstern?/i,/beschattung(en)?/i,/jalousien?/i],ru:[/ставни/i,/рольставни/i,/окна|окно/,/жалюзи/i]},iu=["blind","level.blind","value.blind","action.stop","button.stop","button.stop.blind","button.open.blind","button.close.blind","level.tilt","value.tilt","button.tilt.open","button.tilt.close","button.tilt.stop"];function a0e(i,e){return vs(i,e,iu,Hi)}const ru={en:[/gates?/i],de:[/^toren$/i,/^tor$/i],ru:[/ворота/i]},ou=["gate","value.gate","switch.gate","action.stop","button.stop"];function c0e(i,e){return vs(i,e,ou,ru)}const Mu=["window","state.window","sensor.window","value.window"];function u0e(i,e){return vs(i,e,Mu,Hi)}const nu={en:[/doors?/i,/gates?/i,/wickets?/i,/entry|entries/i],de:[/^türe?/i,/^tuere?/i,/^tore?$/i,/einfahrt(en)?/i,/pforten?/i],ru:[/двери|дверь/i,/ворота/i,/калитка|калитки/,/въезды?/i,/входы?/i]},au=["door","state.door","sensor.door"];function l0e(i,e){return vs(i,e,au,nu)}function N0e(){return{door:{roles:au,words:nu},window:{roles:Mu,words:Hi},blind:{roles:iu,words:Hi},gate:{roles:ou,words:ru},light:{roles:su,words:tu}}}function L0e(i,e){const t=[],s=new RegExp(`^${e.replace(/([$^.)([\]{}])/g,"\\$1")}\\.[^.]+$`);return i.forEach(r=>s.test(r)&&t.push(r)),t}function j0e(i,e){const t=[],s=new RegExp(`^${e.replace(/([$^.)([\]{}])/g,"\\$1")}\\.[^.]+\\.[^.]+$`);return i.forEach(r=>s.test(r)&&t.push(r)),t}function cu(i,e){const t=[];e+=".";let s=0,r=i.length-1,o=-1;for(;s<=r;){const M=Math.floor((s+r)/2);i[M]=i.length)return t;for(let M=o;M{e[M].common.members.includes(t)&&o.push(M)}),!o.length&&((r=e[t])===null||r===void 0?void 0:r.type)==="state"){const M=(0,zt.getParentId)(t);e[M]&&(e[M].type==="channel"||e[M].type==="device")&&this.enums.forEach(a=>{e[a].common.members.includes(M)&&o.push(a)})}return o.length?o:null}static copyState(e,t){const s=t||JSON.parse(JSON.stringify(e));return s.original=e.original||e,"enums"in e&&e.enums&&(s.enums=e.enums),"role"in e&&e.role&&(s.role=e.role),"channelRole"in e&&e.channelRole&&(s.channelRole=e.channelRole),s}_testOneState(e){var t,s,r,o,M,a;const u=e.objects,l=e.pattern,N=e.state,c=e.channelStates,L=e.usedIds,j=e.usedInCurrentDevice,g=e.ignoreIndicators,y=e.ignoreEnums,d=e.sortedKeys;let I=e.result,m=!1;for(const w of c)if(!(N.name==="COVER"&&(I!=null&&I.states.find(O=>O.id&&O.name==="COVER")))){if(N.indicator&&g){const A=w.split(".").pop()||"";if(A&&g.includes(A))continue}if(!N.indicator){if(j.includes(w))continue;if(!N.notSingle){if(!e.detectAllPossibleDevices){if(L.includes(w))continue}}}if(this._applyPattern(u,w,N,y,d)){if(I||(I=JSON.parse(JSON.stringify(ft.patterns[l])),e.result=I,I==null||I.states.forEach((O,A)=>Be.copyState(ft.patterns[l].states[A],O))),I.states.find(({id:O})=>O===w))m=!0;else for(const O of I.states)if(O.name===N.name){if(O.id){let A;e.favorId&&(w===e.favorId?A=!0:O.id===e.favorId&&(A=!1));const h=(r=(s=(t=u[O.id])===null||t===void 0?void 0:t.common)===null||s===void 0?void 0:s.role)!==null&&r!==void 0?r:"",p=(a=(M=(o=u[w])===null||o===void 0?void 0:o.common)===null||M===void 0?void 0:M.role)!==null&&a!==void 0?a:"",S=O.defaultRole;if(S&&A===void 0&&(p===S?A=!0:h===S&&(A=!1)),A===void 0){const f=p.split("."),$=f.length,x=h.split("."),Z=x.length;p===""||f[0]==="state"&&x[0]!=="state"?A=!1:f[0]!=="state"&&x[0]==="state"||$>Z?A=!0:$1)){for(const O of c)if(O!==w&&(N.indicator||!j.includes(O)&&(N.notSingle||!L.includes(O)))&&this._applyPattern(u,O,N,y,d))if(N.indicator||j.push(O),Array.isArray(N)){const A=Be.copyState(N[0]);A.id=O,I.states.push(A)}else{const A=Be.copyState(N);A.id=O,I.states.push(A)}}}}return m}static findParentChannelOrDevice(e,t,s){if(!e[t])return;const r=t.split("."),o=t;if(e[t].type==="state"&&(r.pop(),t=r.join(".")),r.length<=2)return t;const M=e[t];if((M==null?void 0:M.type)==="device"||s&&(M==null?void 0:M.type)==="channel")return t;if(s)return;r.pop();const a=r.join("."),u=e[a];if(!u)return M?t:o;if(u.type==="device"||r.length<=2)return a;if((M==null?void 0:M.type)==="channel")return t;r.pop();const l=r.join("."),N=e[l];return!N||N.type!=="device"&&N.type!=="channel"?a:l}static getChannelOrDeviceStates(e,t,s,r=!1,o=!1){var M;const a=(M=e[t])===null||M===void 0?void 0:M.type;switch(a){case void 0:return[...(0,zt.getObjectsBelowId)(s,t)];case"state":case"channel":case"device":case"folder":if(r&&a!=="device"){const u=Be.findParentChannelOrDevice(e,t);return u&&u!==t?[...(0,zt.getObjectsBelowId)(s,u)]:[t]}if(a!=="state")return[...(0,zt.getObjectsBelowId)(s,t)];if(o){const u=Be.findParentChannelOrDevice(e,t,!0);return u&&u!==t?[...(0,zt.getObjectsBelowId)(s,u)]:[t]}return[t];default:return[t]}}static patternIsAllowed(e,t,s){if(!e)return!1;if(Array.isArray(e.type)){for(let r=0;r{const o=e.indexOf(s),M=e.indexOf(r);if(o===-1||M===-1)return;const a=e.splice(o,1);e.splice(M,0,...a)}),e}_detectNext(e){var t,s,r,o;const{objects:M,id:a,_usedIdsOptional:u=[],ignoreIndicators:l,prioritizedTypes:N,detectParent:c,detectOnlyChannel:L,allowedTypes:j,excludedTypes:g,_keysOptional:y,detectAllPossibleDevices:d}=e;let{_patternList:I}=e;e._usedIdsOptional=u;const m=Be.getChannelOrDeviceStates(M,a,y||[],c,L);if(!(!((t=M[a])===null||t===void 0)&&t.common)&&!m.length)return null;if((s=e._checkedPatterns)!==null&&s!==void 0||(e._checkedPatterns=[]),!I){const A=Object.keys(ft.patterns).filter(h=>Be.patternIsAllowed(ft.patterns[h],j,g));I=N?this.sortTypes(A,N):A,e._patternList=I}const w={objects:M,channelStates:m,usedIds:u,ignoreIndicators:l||[],pattern:"unknown",usedInCurrentDevice:[],state:{},ignoreEnums:!!e.ignoreEnums,sortedKeys:y,favorId:e.detectParent?void 0:a,detectAllPossibleDevices:d},O=(r=M[a])===null||r===void 0?void 0:r.type;for(const A of I){if(e._checkedPatterns.includes(A))continue;e._checkedPatterns.push(A),delete w.result,w.pattern=A,w.usedInCurrentDevice=[];for(const p of ft.patterns[A].states){let S=!1;if(w.state=p,this._testOneState(w)&&(S=!0),p.required&&!S){delete w.result;break}}if(!Be.allRequiredStatesFound(w))continue;w.usedInCurrentDevice.forEach(p=>u.push(p));let h;if(O!=="device"){const p=(o=Be.findParentChannelOrDevice(M,a))!==null&&o!==void 0?o:a;if(M[p]&&(M[p].type==="channel"||M[p].type==="device")){h=(0,zt.getObjectsBelowId)(y,p);for(const S of h)w.result.states.forEach((f,$)=>{!f.id&&(f.indicator||f.searchInParent)&&!f.noDeviceDetection&&this._applyPattern(M,S,f.original,!!e.ignoreEnums,w.sortedKeys)&&w.result&&(w.result.states[$].id=S)})}}if(w.result.states.forEach(p=>Be.cleanState(p,w.objects)),e.limitTypesToOneOf){for(const p of e.limitTypesToOneOf)if(p.includes(A))for(const S of p)S===A||e._checkedPatterns.includes(S)||e._checkedPatterns.push(S)}return w.result}return null}detect(e){var t;const{objects:s,id:r,ignoreCache:o,detectAllPossibleDevices:M}=e;let{_keysOptional:a,_usedIdsOptional:u}=e;if(!o&&this.cache[r]){const{allowedTypes:c=[],excludedTypes:L=[]}=e;if(!c.length&&!L.length)return this.cache[r];const j=this.cache[r].filter(({type:g})=>c.includes(g)&&!L.includes(g));if(j.length)return j}a?e._keysOptionalSorted||a.sort():(a=Object.keys(s),a.sort(),e._keysOptional=a),u&&!e.detectParent&&(u=[],e._usedIdsOptional=u),e.ignoreEnums===void 0&&((t=e.allowedTypes)===null||t===void 0?void 0:t.length)===1&&(e.ignoreEnums=!0),M&&(e.excludedTypes||(e.excludedTypes=[]),e.excludedTypes.includes(Mt.Types.info)||e.excludedTypes.push(Mt.Types.info)),e._checkedPatterns=[];const l=[];let N;for(;N=this._detectNext(e);)l.push(N),e.detectAllPossibleDevices&&(e._usedIdsOptional=[]);return l.sort((c,L)=>{if(c.type===Mt.Types.info&&L.type!==Mt.Types.info)return 1;if(L.type===Mt.Types.info&&c.type!==Mt.Types.info)return-1;const j=c.states.find(I=>I.id===r&&I.required)?1:0,g=L.states.find(I=>I.id===r&&I.required)?1:0;if(j!==g)return g-j;if(!j){const I=c.states.find(w=>w.id===r)?1:0,m=L.states.find(w=>w.id===r)?1:0;if(I!==m)return m-I}const y=c.states.filter(I=>I.id).length;return L.states.filter(I=>I.id).length-y}),this.cache[r]=l.length?l:null,this.cache[r]}static getPatterns(){const e={};return Object.keys(ft.patterns).forEach(t=>{const s=JSON.parse(JSON.stringify(ft.patterns[t]));s.states.forEach((r,o)=>{const M=ft.patterns[t].states[o];M.role&&(s.states[o].role=M.role.toString()),M.enums&&(s.states[o].enums=!0)}),e[t]=s}),e}}Lr.ChannelDetector=Be;Be.getEnums=zt.getEnums;(function(i){Object.defineProperty(i,"__esModule",{value:!0}),i.StateType=i.Types=i.roleOrEnumGate=i.roleOrEnumDoor=i.roleOrEnumWindow=i.roleOrEnumBlind=i.roleOrEnumLight=void 0;const e=Lr;var t=Oe;Object.defineProperty(i,"roleOrEnumLight",{enumerable:!0,get:function(){return t.roleOrEnumLight}}),Object.defineProperty(i,"roleOrEnumBlind",{enumerable:!0,get:function(){return t.roleOrEnumBlind}}),Object.defineProperty(i,"roleOrEnumWindow",{enumerable:!0,get:function(){return t.roleOrEnumWindow}}),Object.defineProperty(i,"roleOrEnumDoor",{enumerable:!0,get:function(){return t.roleOrEnumDoor}}),Object.defineProperty(i,"roleOrEnumGate",{enumerable:!0,get:function(){return t.roleOrEnumGate}}),i.default=e.ChannelDetector;var s=Ht;Object.defineProperty(i,"Types",{enumerable:!0,get:function(){return s.Types}}),Object.defineProperty(i,"StateType",{enumerable:!0,get:function(){return s.StateType}})})(B);var uu={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Jn=n.createContext&&n.createContext(uu),y0e=["attr","size","title"];function D0e(i,e){if(i==null)return{};var t,s,r=d0e(i,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(i);for(s=0;sn.createElement(e.tag,Zi({key:t},e.attr),lu(e.child)))}function U(i){return e=>n.createElement(w0e,Vi({attr:Zi({},i.attr)},e),lu(i.child))}function w0e(i){var e=t=>{var{attr:s,size:r,title:o}=i,M=D0e(i,y0e),a=r||t.size||"1em",u;return t.className&&(u=t.className),i.className&&(u=(u?u+" ":"")+i.className),n.createElement("svg",Vi({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,s,M,{className:u,style:Zi(Zi({color:i.color||t.color},t.style),i.style),height:a,width:a,xmlns:"http://www.w3.org/2000/svg"}),o&&n.createElement("title",null,o),i.children)};return Jn!==void 0?n.createElement(Jn.Consumer,null,t=>e(t)):e(uu)}function C0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z"},child:[]}]})(i)}function A0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"},child:[]}]})(i)}function m0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"},child:[]}]})(i)}function p0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z"},child:[]}]})(i)}function O0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z"},child:[]}]})(i)}function E0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z"},child:[]}]})(i)}function _0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"},child:[]}]})(i)}function f0e(i){return U({attr:{t:"1569683928793",viewBox:"0 0 1024 1024",version:"1.1"},child:[{tag:"path",attr:{d:"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H212V212h200v200zM864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H612V212h200v200zM864 544H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z m-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"},child:[]}]})(i)}function S0e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M24 5.25v13a.75.75 0 0 1-1.136.643L16.5 15.075v2.175A1.75 1.75 0 0 1 14.75 19h-13A1.75 1.75 0 0 1 0 17.25v-11C0 5.284.784 4.5 1.75 4.5h13c.966 0 1.75.784 1.75 1.75v2.175l6.364-3.818A.75.75 0 0 1 24 5.25Zm-9 1a.25.25 0 0 0-.25-.25h-13a.25.25 0 0 0-.25.25v11c0 .138.112.25.25.25h13a.25.25 0 0 0 .25-.25v-11Zm1.5 7.075 6 3.6V6.575l-6 3.6Z"},child:[]}]})(i)}function x0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"},child:[]}]})(i)}function k0e(i){return U({attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z"},child:[]}]})(i)}function Y0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"},child:[]}]})(i)}function Q0e(i){return U({attr:{viewBox:"0 0 384 512"},child:[{tag:"path",attr:{d:"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"},child:[]}]})(i)}function Gn(i){return U({attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z"},child:[]}]})(i)}function v0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"},child:[]}]})(i)}function U0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"},child:[]}]})(i)}function b0e(i){return U({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"},child:[]}]})(i)}function Fn(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"},child:[]}]})(i)}function $0e(i){return U({attr:{viewBox:"0 0 416 512"},child:[{tag:"path",attr:{d:"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z"},child:[]}]})(i)}function P0e(i){return U({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"},child:[]}]})(i)}function W0e(i){return U({attr:{viewBox:"0 0 352 512"},child:[{tag:"path",attr:{d:"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"},child:[]}]})(i)}function R0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"},child:[]}]})(i)}function J0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"},child:[]}]})(i)}function B0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"},child:[]}]})(i)}function G0e(i){return U({attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"},child:[]}]})(i)}function F0e(i){return U({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"},child:[]}]})(i)}function H0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"},child:[]}]})(i)}function V0e(i){return U({attr:{viewBox:"0 0 352 512"},child:[{tag:"path",attr:{d:"M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"},child:[]}]})(i)}function Z0e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"circle",attr:{cx:"12",cy:"19",r:"2"},child:[]},{tag:"path",attr:{d:"M10 3h4v12h-4z"},child:[]}]})(i)}function X0e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"m21.41 10.59-7.99-8c-.78-.78-2.05-.78-2.83 0l-8.01 8c-.78.78-.78 2.05 0 2.83l8.01 8c.78.78 2.05.78 2.83 0l7.99-8c.79-.79.79-2.05 0-2.83zM13.5 14.5V12H10v3H8v-4c0-.55.45-1 1-1h4.5V7.5L17 11l-3.5 3.5z"},child:[]}]})(i)}function K0e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"m17 16-4-4V8.82C14.16 8.4 15 7.3 15 6c0-1.66-1.34-3-3-3S9 4.34 9 6c0 1.3.84 2.4 2 2.82V12l-4 4H3v5h5v-3.05l4-4.2 4 4.2V21h5v-5h-4z"},child:[]}]})(i)}function q0e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M15 16v1.26l-6-3v-3.17L11.7 8H16V2h-6v4.9L7.3 10H3v6h5l7 3.5V22h6v-6z"},child:[]}]})(i)}function Hn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M16.56 8.94 7.62 0 6.21 1.41l2.38 2.38-5.15 5.15a1.49 1.49 0 0 0 0 2.12l5.5 5.5c.29.29.68.44 1.06.44s.77-.15 1.06-.44l5.5-5.5c.59-.58.59-1.53 0-2.12zM5.21 10 10 5.21 14.79 10H5.21zM19 11.5s-2 2.17-2 3.5c0 1.1.9 2 2 2s2-.9 2-2c0-1.33-2-3.5-2-3.5zM2 20h20v4H2v-4z"},child:[]}]})(i)}function e4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M8.4 18.2c.38.5.6 1.12.6 1.8 0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3c.44 0 .85.09 1.23.26l1.41-1.77a4.504 4.504 0 0 1-1.09-3.69l-2.03-.68A2.997 2.997 0 0 1 0 9.5c0-1.66 1.34-3 3-3s3 1.34 3 3c0 .07 0 .14-.01.21l2.03.68a4.468 4.468 0 0 1 3.22-2.32V5.91A3.018 3.018 0 0 1 9 3c0-1.66 1.34-3 3-3s3 1.34 3 3c0 1.4-.96 2.57-2.25 2.91v2.16c1.4.23 2.58 1.11 3.22 2.32L18 9.71V9.5c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3c-1.06 0-1.98-.55-2.52-1.37l-2.03.68a4.49 4.49 0 0 1-1.09 3.69l1.41 1.77c.38-.18.79-.27 1.23-.27 1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3c0-.68.22-1.3.6-1.8l-1.41-1.77c-1.35.75-3.01.76-4.37 0L8.4 18.2z"},child:[]}]})(i)}function Vn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"},child:[]}]})(i)}function t4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"},child:[]}]})(i)}function s4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3A8.994 8.994 0 0 0 13 3.06V1h-2v2.06A8.994 8.994 0 0 0 3.06 11H1v2h2.06A8.994 8.994 0 0 0 11 20.94V23h2v-2.06A8.994 8.994 0 0 0 20.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"},child:[]}]})(i)}function i4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M7 5h10v2h2V3c0-1.1-.9-1.99-2-1.99L7 1c-1.1 0-2 .9-2 2v4h2V5zm8.41 11.59L20 12l-4.59-4.59L14 8.83 17.17 12 14 15.17l1.41 1.42zM10 15.17 6.83 12 10 8.83 8.59 7.41 4 12l4.59 4.59L10 15.17zM17 19H7v-2H5v4c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2v-4h-2v2z"},child:[]}]})(i)}function Zn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4zM13 18h-2v-2h2v2zm0-4h-2V9h2v5z"},child:[]}]})(i)}function r4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M15.54 5.54 13.77 7.3 12 5.54 10.23 7.3 8.46 5.54 12 2zm2.92 10-1.76-1.77L18.46 12l-1.76-1.77 1.76-1.77L22 12zm-10 2.92 1.77-1.76L12 18.46l1.77-1.76 1.77 1.76L12 22zm-2.92-10 1.76 1.77L5.54 12l1.76 1.77-1.76 1.77L2 12z"},child:[]},{tag:"circle",attr:{cx:"12",cy:"12",r:"3"},child:[]}]})(i)}function Xn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h-4V4h4v2z"},child:[]}]})(i)}function o4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M11.07 12.85c.77-1.39 2.25-2.21 3.11-3.44.91-1.29.4-3.7-2.18-3.7-1.69 0-2.52 1.28-2.87 2.34L6.54 6.96C7.25 4.83 9.18 3 11.99 3c2.35 0 3.96 1.07 4.78 2.41.7 1.15 1.11 3.3.03 4.9-1.2 1.77-2.35 2.31-2.97 3.45-.25.46-.35.76-.35 2.24h-2.89c-.01-.78-.13-2.05.48-3.15zM14 20c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"},child:[]}]})(i)}function Kn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 3C6.95 3 3.15 4.85 0 7.23L12 22 24 7.25C20.85 4.87 17.05 3 12 3zm1 13h-2v-6h2v6zm-2-8V6h2v2h-2z"},child:[]}]})(i)}function M4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3A8.994 8.994 0 0 0 13 3.06V1h-2v2.06A8.994 8.994 0 0 0 3.06 11H1v2h2.06A8.994 8.994 0 0 0 11 20.94V23h2v-2.06A8.994 8.994 0 0 0 20.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"},child:[]}]})(i)}function n4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M9.91,19.56c0-0.85,0.2-1.64,0.59-2.38s0.94-1.35,1.65-1.84V5.42c0-0.8,0.27-1.48,0.82-2.03S14.2,2.55,15,2.55 + c0.81,0,1.49,0.28,2.04,0.83c0.55,0.56,0.83,1.23,0.83,2.03v9.92c0.71,0.49,1.25,1.11,1.64,1.84s0.58,1.53,0.58,2.38 + c0,0.92-0.23,1.78-0.68,2.56s-1.07,1.4-1.85,1.85s-1.63,0.68-2.56,0.68c-0.92,0-1.77-0.23-2.55-0.68s-1.4-1.07-1.86-1.85 + S9.91,20.48,9.91,19.56z M11.67,19.56c0,0.93,0.33,1.73,0.98,2.39c0.65,0.66,1.44,0.99,2.36,0.99c0.93,0,1.73-0.33,2.4-1 + s1.01-1.46,1.01-2.37c0-0.62-0.16-1.2-0.48-1.73c-0.32-0.53-0.76-0.94-1.32-1.23l-0.28-0.14c-0.1-0.04-0.15-0.14-0.15-0.29V5.42 + c0-0.32-0.11-0.59-0.34-0.81C15.62,4.4,15.34,4.29,15,4.29c-0.32,0-0.6,0.11-0.83,0.32c-0.23,0.21-0.34,0.48-0.34,0.81v10.74 + c0,0.15-0.05,0.25-0.14,0.29l-0.27,0.14c-0.55,0.29-0.98,0.7-1.29,1.23C11.82,18.35,11.67,18.92,11.67,19.56z M12.45,19.56 + c0,0.71,0.24,1.32,0.73,1.82s1.07,0.75,1.76,0.75s1.28-0.25,1.79-0.75c0.51-0.5,0.76-1.11,0.76-1.81c0-0.63-0.22-1.19-0.65-1.67 + c-0.43-0.48-0.96-0.77-1.58-0.85V9.69c0-0.06-0.03-0.13-0.1-0.19c-0.07-0.07-0.14-0.1-0.22-0.1c-0.09,0-0.16,0.03-0.21,0.08 + c-0.05,0.06-0.08,0.12-0.08,0.21v7.34c-0.61,0.09-1.13,0.37-1.56,0.85C12.66,18.37,12.45,18.92,12.45,19.56z`},child:[]}]})(i)}function a4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M6.34,12.48c0-0.94,0.3-1.78,0.89-2.52s1.34-1.21,2.25-1.41C9.73,7.43,10.3,6.5,11.2,5.78s1.92-1.08,3.08-1.08 + c1.12,0,2.13,0.35,3.02,1.05c0.89,0.7,1.46,1.6,1.73,2.69h0.27c1.12,0,2.08,0.39,2.88,1.18c0.79,0.78,1.19,1.74,1.19,2.85 + c0,0.6-0.12,1.17-0.37,1.7c-0.25,0.53-0.59,0.99-1.03,1.37v0.03c0,0.59-0.19,1.12-0.56,1.59c-0.37,0.47-0.84,0.76-1.4,0.89 + c-0.14,0.62-0.45,1.15-0.91,1.58c-0.46,0.43-1.01,0.7-1.63,0.8c0.29,0.34,0.43,0.72,0.43,1.13c0,0.48-0.17,0.89-0.51,1.24 + c-0.34,0.34-0.75,0.52-1.23,0.52c-0.48,0-0.89-0.17-1.23-0.52c-0.34-0.34-0.51-0.76-0.51-1.24c0-0.19,0.03-0.38,0.1-0.57h-0.1 + c-0.58,0-1.08-0.21-1.5-0.63c-0.42-0.42-0.63-0.92-0.63-1.5c0-0.4,0.1-0.76,0.3-1.07c-0.52-0.29-0.89-0.7-1.12-1.25h-1.28v-0.01 + c-1.07-0.07-1.98-0.49-2.73-1.27S6.34,13.56,6.34,12.48z M7.74,12.23c0,0.8,0.28,1.48,0.84,2.04s1.24,0.84,2.03,0.84 + c0.49,0,0.95-0.11,1.37-0.34c0.12,0.74,0.47,1.36,1.04,1.86s1.25,0.74,2.02,0.74c0.87,0,1.61-0.31,2.22-0.92 + c0.41,0.48,0.92,0.71,1.54,0.71c0.57,0,1.05-0.2,1.46-0.6c0.4-0.4,0.6-0.89,0.6-1.46c0.4-0.27,0.72-0.61,0.95-1.04 + c0.23-0.42,0.35-0.88,0.35-1.37c0-0.79-0.28-1.47-0.85-2.02c-0.57-0.55-1.25-0.83-2.05-0.83c-0.56,0-1.07,0.15-1.53,0.44 + c0.06-0.24,0.08-0.51,0.08-0.79c0-0.96-0.34-1.78-1.03-2.46c-0.69-0.68-1.52-1.01-2.49-1.01c-0.94,0-1.75,0.33-2.43,0.97 + s-1.04,1.44-1.07,2.37c-0.02,0-0.05,0-0.08,0c-0.04,0-0.07,0-0.09,0c-0.79,0-1.46,0.28-2.03,0.84S7.74,11.45,7.74,12.23z`},child:[]}]})(i)}function c4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M7.56,17.19c0-0.88,0.24-1.89,0.72-3.03s1.1-2.25,1.86-3.31c1.56-2.06,2.92-3.62,4.06-4.67l0.75-0.72 + c0.25,0.26,0.53,0.5,0.83,0.72c0.41,0.42,1.04,1.11,1.88,2.09s1.57,1.85,2.17,2.65c0.71,1.01,1.32,2.1,1.81,3.25 + s0.74,2.16,0.74,3.03c0,1-0.19,1.95-0.58,2.86c-0.39,0.91-0.91,1.7-1.57,2.36c-0.66,0.66-1.45,1.19-2.37,1.58 + c-0.92,0.39-1.89,0.59-2.91,0.59c-1,0-1.95-0.19-2.86-0.57c-0.91-0.38-1.7-0.89-2.36-1.55c-0.66-0.65-1.19-1.44-1.58-2.35 + S7.56,18.23,7.56,17.19z M9.82,14.26c0,0.83,0.17,1.49,0.52,1.99c0.35,0.49,0.88,0.74,1.59,0.74c0.72,0,1.25-0.25,1.61-0.74 + c0.35-0.49,0.53-1.15,0.54-1.99c-0.01-0.84-0.19-1.5-0.54-2c-0.35-0.49-0.89-0.74-1.61-0.74c-0.71,0-1.24,0.25-1.59,0.74 + C9.99,12.76,9.82,13.42,9.82,14.26z M11.39,14.26c0-0.15,0-0.27,0-0.35s0.01-0.19,0.02-0.33c0.01-0.14,0.02-0.25,0.05-0.32 + s0.05-0.16,0.09-0.24c0.04-0.08,0.09-0.15,0.15-0.18c0.07-0.04,0.14-0.06,0.23-0.06c0.14,0,0.25,0.04,0.33,0.12s0.14,0.21,0.17,0.38 + c0.03,0.18,0.05,0.32,0.06,0.45s0.01,0.3,0.01,0.52c0,0.23,0,0.4-0.01,0.52c-0.01,0.12-0.03,0.27-0.06,0.45 + c-0.03,0.17-0.09,0.3-0.17,0.38s-0.19,0.12-0.33,0.12c-0.09,0-0.16-0.02-0.23-0.06c-0.07-0.04-0.12-0.1-0.15-0.18 + c-0.04-0.08-0.07-0.17-0.09-0.24c-0.02-0.08-0.04-0.19-0.05-0.32c-0.01-0.14-0.02-0.25-0.02-0.32S11.39,14.41,11.39,14.26z + M11.98,22.01h1.32l4.99-10.74h-1.35L11.98,22.01z M16.28,19.02c0.01,0.84,0.2,1.5,0.55,2c0.35,0.49,0.89,0.74,1.6,0.74 + c0.72,0,1.25-0.25,1.6-0.74c0.35-0.49,0.52-1.16,0.53-2c-0.01-0.84-0.18-1.5-0.53-1.99c-0.35-0.49-0.88-0.74-1.6-0.74 + c-0.71,0-1.25,0.25-1.6,0.74C16.47,17.52,16.29,18.18,16.28,19.02z M17.85,19.02c0-0.23,0-0.4,0.01-0.52 + c0.01-0.12,0.03-0.27,0.06-0.45s0.09-0.3,0.17-0.38s0.19-0.12,0.33-0.12c0.09,0,0.17,0.02,0.24,0.06c0.07,0.04,0.12,0.1,0.16,0.19 + c0.04,0.09,0.07,0.17,0.1,0.24s0.04,0.18,0.05,0.32l0.01,0.32l0,0.34c0,0.16,0,0.28,0,0.35l-0.01,0.32l-0.05,0.32l-0.1,0.24 + l-0.16,0.19l-0.24,0.06c-0.14,0-0.25-0.04-0.33-0.12s-0.14-0.21-0.17-0.38c-0.03-0.18-0.05-0.33-0.06-0.45S17.85,19.25,17.85,19.02z + `},child:[]}]})(i)}function u4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M7.38,21.83c0-0.3,0.1-0.55,0.29-0.76c0.19-0.21,0.43-0.31,0.7-0.31v-0.02l13.16,0.04c0.06-0.01,0.1-0.02,0.1-0.02 + c0.27,0.01,0.51,0.12,0.7,0.33c0.19,0.21,0.29,0.47,0.28,0.77c0,0.3-0.1,0.55-0.29,0.76c-0.19,0.21-0.43,0.31-0.7,0.31v0.01 + L8.59,22.9c-0.1,0.01-0.17,0.02-0.22,0.02c-0.28-0.01-0.51-0.11-0.7-0.32C7.47,22.39,7.37,22.13,7.38,21.83z M8.2,16.37 + c-0.01-0.43,0.04-0.93,0.16-1.52c0.06-0.3,0.2-0.76,0.44-1.37c0.02-0.05,0.07-0.14,0.13-0.28c0.01,0.02,0.03,0.03,0.04,0.05 + s0.02,0.02,0.02,0.03c0.11,0.44,0.27,0.84,0.49,1.2c0.21,0.32,0.48,0.56,0.82,0.69c0.26,0.11,0.63,0.17,1.1,0.18 + c0.02,0,0.05,0,0.08,0c0.03,0,0.06,0,0.08,0c-0.33-0.33-0.59-0.67-0.79-1c-0.3-0.52-0.49-1.12-0.57-1.81 + c-0.06-0.54-0.03-1.19,0.09-1.96c0.02-0.15,0.12-0.49,0.29-1.01c0.15-0.47,0.36-0.9,0.64-1.28C11.54,7.8,12,7.3,12.61,6.78 + c0.37-0.31,0.89-0.67,1.56-1.07c0.07-0.04,0.18-0.11,0.35-0.19c0,0.02,0,0.04,0,0.05s0,0.03,0,0.04v0.02 + c-0.24,0.57-0.41,1.15-0.49,1.73c-0.06,0.53,0.02,1.02,0.24,1.48c0.17,0.36,0.48,0.75,0.92,1.15c0.09,0.09,0.29,0.29,0.6,0.58 + c0.3,0.29,0.54,0.52,0.7,0.68l0.25,0.25c0.26-0.38,0.41-0.83,0.44-1.35c0.04-0.55,0-1.15-0.14-1.8c0-0.01,0-0.04,0.01-0.11 + c0.02,0.02,0.13,0.1,0.3,0.24c0.56,0.5,0.98,0.95,1.28,1.34c0.48,0.62,0.83,1.21,1.06,1.74c0.19,0.46,0.31,0.92,0.38,1.4 + c0.06,0.42,0.08,0.77,0.07,1.05c-0.01,0.78-0.1,1.43-0.25,1.96c-0.07,0.21-0.13,0.38-0.19,0.52c0.25-0.07,0.47-0.16,0.65-0.26 + c0.25-0.16,0.45-0.37,0.6-0.66c0.16-0.29,0.29-0.62,0.38-0.98c0-0.01,0.01-0.03,0.03-0.05c0.01,0.02,0.02,0.05,0.05,0.09 + c0.02,0.04,0.04,0.07,0.05,0.1c0.13,0.31,0.22,0.63,0.27,0.97c0.08,0.38,0.1,0.75,0.08,1.13c-0.02,0.29-0.07,0.56-0.16,0.81 + c-0.08,0.24-0.16,0.43-0.22,0.58c-0.19,0.38-0.39,0.71-0.62,0.98c-0.06,0.07-0.11,0.13-0.14,0.16H9.67 + c-0.01-0.01-0.03-0.03-0.07-0.06s-0.06-0.05-0.08-0.07C9.26,18.98,8.98,18.6,8.7,18.1c-0.08-0.15-0.18-0.38-0.29-0.69 + C8.29,17.1,8.22,16.75,8.2,16.37z`},child:[]}]})(i)}function l4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M4.37,14.62c0-0.24,0.08-0.45,0.25-0.62c0.17-0.16,0.38-0.24,0.6-0.24h2.04c0.23,0,0.42,0.08,0.58,0.25 + c0.15,0.17,0.23,0.37,0.23,0.61S8,15.06,7.85,15.23c-0.15,0.17-0.35,0.25-0.58,0.25H5.23c-0.23,0-0.43-0.08-0.6-0.25 + C4.46,15.06,4.37,14.86,4.37,14.62z M7.23,21.55c0-0.23,0.08-0.43,0.23-0.61l1.47-1.43c0.15-0.16,0.35-0.23,0.59-0.23 + c0.24,0,0.44,0.08,0.6,0.23s0.24,0.34,0.24,0.57c0,0.24-0.08,0.46-0.24,0.64L8.7,22.14c-0.41,0.32-0.82,0.32-1.23,0 + C7.31,21.98,7.23,21.78,7.23,21.55z M7.23,7.71c0-0.23,0.08-0.43,0.23-0.61C7.66,6.93,7.87,6.85,8.1,6.85 + c0.22,0,0.42,0.08,0.59,0.24l1.43,1.47c0.16,0.15,0.24,0.35,0.24,0.59c0,0.24-0.08,0.44-0.24,0.6s-0.36,0.24-0.6,0.24 + c-0.24,0-0.44-0.08-0.59-0.24L7.47,8.32C7.31,8.16,7.23,7.95,7.23,7.71z M9.78,14.62c0-0.93,0.23-1.8,0.7-2.6s1.1-1.44,1.91-1.91 + s1.67-0.7,2.6-0.7c0.7,0,1.37,0.14,2.02,0.42c0.64,0.28,1.2,0.65,1.66,1.12c0.47,0.47,0.84,1.02,1.11,1.66 + c0.27,0.64,0.41,1.32,0.41,2.02c0,0.94-0.23,1.81-0.7,2.61c-0.47,0.8-1.1,1.43-1.9,1.9c-0.8,0.47-1.67,0.7-2.61,0.7 + s-1.81-0.23-2.61-0.7c-0.8-0.47-1.43-1.1-1.9-1.9C10.02,16.43,9.78,15.56,9.78,14.62z M11.48,14.62c0,0.98,0.34,1.81,1.03,2.5 + c0.68,0.69,1.51,1.04,2.49,1.04s1.81-0.35,2.5-1.04s1.04-1.52,1.04-2.5c0-0.96-0.35-1.78-1.04-2.47c-0.69-0.68-1.52-1.02-2.5-1.02 + c-0.97,0-1.8,0.34-2.48,1.02C11.82,12.84,11.48,13.66,11.48,14.62z M14.14,22.4c0-0.24,0.08-0.44,0.25-0.6s0.37-0.24,0.6-0.24 + c0.24,0,0.45,0.08,0.61,0.24s0.24,0.36,0.24,0.6v1.99c0,0.24-0.08,0.45-0.25,0.62c-0.17,0.17-0.37,0.25-0.6,0.25 + s-0.44-0.08-0.6-0.25c-0.17-0.17-0.25-0.38-0.25-0.62V22.4z M14.14,6.9V4.86c0-0.23,0.08-0.43,0.25-0.6C14.56,4.09,14.76,4,15,4 + s0.43,0.08,0.6,0.25c0.17,0.17,0.25,0.37,0.25,0.6V6.9c0,0.23-0.08,0.42-0.25,0.58S15.23,7.71,15,7.71s-0.44-0.08-0.6-0.23 + S14.14,7.13,14.14,6.9z M19.66,20.08c0-0.23,0.08-0.42,0.23-0.56c0.15-0.16,0.34-0.23,0.56-0.23c0.24,0,0.44,0.08,0.6,0.23 + l1.46,1.43c0.16,0.17,0.24,0.38,0.24,0.61c0,0.23-0.08,0.43-0.24,0.59c-0.4,0.31-0.8,0.31-1.2,0l-1.42-1.42 + C19.74,20.55,19.66,20.34,19.66,20.08z M19.66,9.16c0-0.25,0.08-0.45,0.23-0.59l1.42-1.47c0.17-0.16,0.37-0.24,0.59-0.24 + c0.24,0,0.44,0.08,0.6,0.25c0.17,0.17,0.25,0.37,0.25,0.6c0,0.25-0.08,0.46-0.24,0.62l-1.46,1.43c-0.18,0.16-0.38,0.24-0.6,0.24 + c-0.23,0-0.41-0.08-0.56-0.24S19.66,9.4,19.66,9.16z M21.92,14.62c0-0.24,0.08-0.44,0.24-0.62c0.16-0.16,0.35-0.24,0.57-0.24h2.02 + c0.23,0,0.43,0.09,0.6,0.26c0.17,0.17,0.26,0.37,0.26,0.6s-0.09,0.43-0.26,0.6c-0.17,0.17-0.37,0.25-0.6,0.25h-2.02 + c-0.23,0-0.43-0.08-0.58-0.25S21.92,14.86,21.92,14.62z`},child:[]}]})(i)}function qn(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M3.89,17.6c0-0.99,0.31-1.88,0.93-2.65s1.41-1.27,2.38-1.49c0.26-1.17,0.85-2.14,1.78-2.88c0.93-0.75,2-1.12,3.22-1.12 + c1.18,0,2.24,0.36,3.16,1.09c0.93,0.73,1.53,1.66,1.8,2.8h0.27c1.18,0,2.18,0.41,3.01,1.24s1.25,1.83,1.25,3 + c0,1.18-0.42,2.18-1.25,3.01s-1.83,1.25-3.01,1.25H8.16c-0.58,0-1.13-0.11-1.65-0.34S5.52,21,5.14,20.62 + c-0.38-0.38-0.68-0.84-0.91-1.36S3.89,18.17,3.89,17.6z M5.34,17.6c0,0.76,0.28,1.42,0.82,1.96s1.21,0.82,1.99,0.82h9.28 + c0.77,0,1.44-0.27,1.99-0.82c0.55-0.55,0.83-1.2,0.83-1.96c0-0.76-0.27-1.42-0.83-1.96c-0.55-0.54-1.21-0.82-1.99-0.82h-1.39 + c-0.1,0-0.15-0.05-0.15-0.15l-0.07-0.49c-0.1-0.94-0.5-1.73-1.19-2.35s-1.51-0.93-2.45-0.93c-0.94,0-1.76,0.31-2.46,0.94 + c-0.7,0.62-1.09,1.41-1.18,2.34l-0.07,0.42c0,0.1-0.05,0.15-0.16,0.15l-0.45,0.07c-0.72,0.06-1.32,0.36-1.81,0.89 + C5.59,16.24,5.34,16.87,5.34,17.6z M14.19,8.88c-0.1,0.09-0.08,0.16,0.07,0.21c0.43,0.19,0.79,0.37,1.08,0.55 + c0.11,0.03,0.19,0.02,0.22-0.03c0.61-0.57,1.31-0.86,2.12-0.86c0.81,0,1.5,0.27,2.1,0.81c0.59,0.54,0.92,1.21,0.99,2l0.09,0.64h1.42 + c0.65,0,1.21,0.23,1.68,0.7c0.47,0.47,0.7,1.02,0.7,1.66c0,0.6-0.21,1.12-0.62,1.57s-0.92,0.7-1.53,0.77c-0.1,0-0.15,0.05-0.15,0.16 + v1.13c0,0.11,0.05,0.16,0.15,0.16c1.01-0.06,1.86-0.46,2.55-1.19s1.04-1.6,1.04-2.6c0-1.06-0.37-1.96-1.12-2.7 + c-0.75-0.75-1.65-1.12-2.7-1.12h-0.15c-0.26-1-0.81-1.82-1.65-2.47c-0.83-0.65-1.77-0.97-2.8-0.97C16.28,7.29,15.11,7.82,14.19,8.88 + z`},child:[]}]})(i)}function ea(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352 146.4c-34.4-48.6-67.5-78.5-90.8-96.6-3.1-2.4-7.3-2.4-10.4-.1-23 17.1-56.1 48.4-90.5 96.5-37.3 52-63 108.4-64.2 170.9 0 1.2-.1 2.5-.1 3.7 0 18.4 3.9 35.9 10.9 52.1 4.1 9.3 9.2 18.1 15.2 26.3 28.5 39 77.8 64.8 133.8 64.8 88.4 0 160.1-64.1 160.1-143.2 0-63.7-27-122.2-64-174.4zm-86 264.3h-.5c-9.9 0-12-14.1-2.6-17.1 45.1-14.2 69.6-38.5 86.4-80.8 3.5-8.9 16.7-6.5 16.8 3.1v1.4c-.1 51.6-44.9 93.4-100.1 93.4z"},child:[]}]})(i)}function N4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 76c48.1 0 93.3 18.7 127.3 52.7S436 207.9 436 256s-18.7 93.3-52.7 127.3S304.1 436 256 436c-48.1 0-93.3-18.7-127.3-52.7S76 304.1 76 256s18.7-93.3 52.7-127.3S207.9 76 256 76m0-28C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48z"},child:[]},{tag:"path",attr:{d:"M363.5 148.5C334.8 119.8 296.6 104 256 104c-40.6 0-78.8 15.8-107.5 44.5C119.8 177.2 104 215.4 104 256s15.8 78.8 44.5 107.5C177.2 392.2 215.4 408 256 408c40.6 0 78.8-15.8 107.5-44.5C392.2 334.8 408 296.6 408 256s-15.8-78.8-44.5-107.5z"},child:[]}]})(i)}function L4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M430.1 347.9c-6.6-6.1-16.3-7.6-24.6-9-11.5-1.9-15.9-4-22.6-10-14.3-12.7-14.3-31.1 0-43.8l30.3-26.9c46.4-41 46.4-108.2 0-149.2-34.2-30.1-80.1-45-127.8-45-55.7 0-113.9 20.3-158.8 60.1-83.5 73.8-83.5 194.7 0 268.5 41.5 36.7 97.5 55 152.9 55.4h1.7c55.4 0 110-17.9 148.8-52.4 14.4-12.7 12-36.6.1-47.7zM120 216c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm40 126c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-161c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm72 219c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm24-208c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"},child:[]}]})(i)}function j4e(i){return U({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M8 12a4 4 0 0 0 4 4m0 -8a4 4 0 0 0 -4 4"},child:[]},{tag:"path",attr:{d:"M3 12h1"},child:[]},{tag:"path",attr:{d:"M12 3v1"},child:[]},{tag:"path",attr:{d:"M12 20v1"},child:[]},{tag:"path",attr:{d:"M5.6 5.6l.7 .7"},child:[]},{tag:"path",attr:{d:"M6.3 17.7l-.7 .7"},child:[]},{tag:"path",attr:{d:"M20 7l-3 5h4l-3 5"},child:[]}]})(i)}function g4e(i){return U({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M224,127.17a96.48,96.48,0,0,1-2.39,22.18A24,24,0,0,1,198.21,168H152a24,24,0,0,0-24,24,24,24,0,0,1-32,22.61C58.73,201.44,32,169.81,32,128a96,96,0,0,1,95-96C179.84,31.47,223.55,74.35,224,127.17Z",opacity:"0.2"},child:[]},{tag:"path",attr:{d:"M200.77,53.89A103.27,103.27,0,0,0,128,24h-1.07A104,104,0,0,0,24,128c0,43,26.58,79.06,69.36,94.17A32,32,0,0,0,136,192a16,16,0,0,1,16-16h46.21a31.81,31.81,0,0,0,31.2-24.88,104.43,104.43,0,0,0,2.59-24A103.28,103.28,0,0,0,200.77,53.89Zm13,93.71A15.89,15.89,0,0,1,198.21,160H152a32,32,0,0,0-32,32,16,16,0,0,1-21.31,15.07C62.49,194.3,40,164,40,128a88,88,0,0,1,87.09-88h.9a88.35,88.35,0,0,1,88,87.25A88.86,88.86,0,0,1,213.81,147.6ZM140,76a12,12,0,1,1-12-12A12,12,0,0,1,140,76ZM96,100A12,12,0,1,1,84,88,12,12,0,0,1,96,100Zm0,56a12,12,0,1,1-12-12A12,12,0,0,1,96,156Zm88-56a12,12,0,1,1-12-12A12,12,0,0,1,184,100Z"},child:[]}]})(i)}function T4e(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"M296,320H216a24,24,0,0,0,0,48h80a24,24,0,0,0,0-48Zm0,32H216a8,8,0,0,1,0-16h80a8,8,0,0,1,0,16Z"}),n.createElement("path",{d:"M68.071,123.492c22.578-13.918,52.2-25.229,85.674-32.71l-3.49-15.615c-35.688,7.977-66.163,19.653-90.58,34.705-17.914,11.043-32.041,23.643-41.99,37.451l12.98,9.354C39.376,144.588,51.961,133.423,68.071,123.492Z"}),n.createElement("path",{d:"M435.533,137.112C409.439,121.027,374,108.967,332.845,102.144,322.474,87,288.213,80,256,80s-66.474,7-76.845,22.144C138,108.967,102.561,121.027,76.467,137.112,47.376,155.045,32,176.792,32,200v96c0,29,24.155,55.7,68.016,75.193C141.813,389.77,197.209,400,256,400s114.187-10.23,155.984-28.807C455.845,351.7,480,325,480,296V200C480,176.792,464.624,155.045,435.533,137.112ZM177.64,151.23C185.676,168.192,221.98,176,256,176s70.324-7.808,78.36-24.77c21.862,4.212,41.832,10.19,58.13,17.44C422.343,181.941,432,195.509,432,200s-9.657,18.059-39.51,31.33C357.224,247.008,307.475,256,256,256s-101.224-8.992-136.49-24.67C89.657,218.059,80,204.491,80,200s9.657-18.059,39.512-31.331C135.808,161.42,155.778,155.442,177.64,151.23Zm14.36-19c15.6,8,40.35,11.773,64,11.773s48.4-3.775,64-11.773V144c0,.687-2.715,5.08-15.618,9.381C291.577,157.649,274.4,160,256,160s-35.577-2.351-48.382-6.619C194.715,149.08,192,144.687,192,144Zm15.618-29.608C220.423,98.351,237.605,96,256,96s35.577,2.351,48.382,6.619C317.285,106.92,320,111.313,320,112s-2.715,5.08-15.618,9.381C291.577,125.649,274.4,128,256,128s-35.577-2.351-48.382-6.619C194.715,117.08,192,112.687,192,112S194.715,106.92,207.618,102.619ZM176,118.937v16.319c-23.589,4.453-45.254,10.9-62.99,18.794C82.779,167.489,64,185.1,64,200s18.779,32.511,49.01,45.95C150.249,262.505,202.367,272,256,272s105.751-9.5,142.99-26.05C429.221,232.511,448,214.9,448,200s-18.779-32.511-49.008-45.95c-17.738-7.89-39.4-14.341-62.992-18.794V118.937C411.852,132.7,464,165.41,464,200c0,21.967-21.328,44.044-58.516,60.572C365.688,278.259,312.6,288,256,288s-109.688-9.741-149.484-27.428C69.328,244.044,48,221.967,48,200,48,165.41,100.148,132.7,176,118.937ZM464,296c0,21.967-21.327,44.044-58.514,60.572C365.689,374.259,312.6,384,256,384s-109.689-9.741-149.486-27.428C69.327,340.044,48,317.967,48,296V239.371c11.522,13.444,29.066,25.621,52.018,35.822C141.814,293.77,197.211,304,256,304s114.186-10.23,155.982-28.807c22.952-10.2,40.5-22.378,52.018-35.822Z"}),n.createElement("path",{d:"M418.482,385.814C374.684,405.28,316.979,416,256,416a488.01,488.01,0,0,1-78.705-6.23l-2.59,15.789A504.064,504.064,0,0,0,256,432c63.169,0,123.181-11.21,168.981-31.565q1.3-.576,2.572-1.16l-6.655-14.55Q419.7,385.274,418.482,385.814Z"}),n.createElement("path",{d:"M436.123,377.062l7.754,14c5.883-3.259,11.492-6.728,16.674-10.31l-9.1-13.161C446.7,370.871,441.546,374.059,436.123,377.062Z"}),n.createElement("rect",{x:"248",y:"192",width:"16",height:"16"}),n.createElement("rect",{x:"280",y:"192",width:"16",height:"16"}),n.createElement("rect",{x:"216",y:"192",width:"16",height:"16"})))}function sge(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M448 490.667h-32v-480C416 4.779 411.221 0 405.333 0H106.667C100.779 0 96 4.779 96 10.667v480H64c-5.888 0-10.667 4.779-10.667 10.667C53.333 507.221 58.112 512 64 512h384c5.888 0 10.667-4.779 10.667-10.667s-4.779-10.666-10.667-10.666zm-53.333 0H117.333V21.333h277.333v469.334z"}),n.createElement("path",{fill:"currentColor",d:"M341.333 277.333c17.643 0 32-14.357 32-32s-14.357-32-32-32-32 14.357-32 32 14.358 32 32 32zm0-42.666c5.888 0 10.667 4.779 10.667 10.667S347.221 256 341.333 256s-10.667-4.779-10.667-10.667 4.779-10.666 10.667-10.666z"}))}function y4e(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M298.667 298.667c17.643 0 32-14.357 32-32s-14.357-32-32-32-32 14.357-32 32c0 17.642 14.357 32 32 32zm0-42.667c5.867 0 10.667 4.779 10.667 10.667s-4.8 10.667-10.667 10.667S288 272.555 288 266.667 292.8 256 298.667 256z"}),n.createElement("path",{fill:"currentColor",d:"M448 490.667h-32v-480C416 4.779 411.221 0 405.333 0H106.667c-.597 0-1.131.256-1.707.341-.555.085-1.088.149-1.621.32-.939.32-1.749.789-2.56 1.344-.32.213-.704.277-1.003.533-.107.085-.149.213-.256.32-.768.704-1.365 1.579-1.899 2.496-.213.341-.512.619-.661.981-.597 1.345-.96 2.774-.96 4.332v480H64c-5.888 0-10.667 4.779-10.667 10.667C53.333 507.221 58.112 512 64 512h42.667c.576 0 1.173-.043 1.749-.149l256-42.667a10.672 10.672 0 0 0 8.917-10.517V53.333c0-5.227-3.776-9.664-8.917-10.517L235.541 21.333h159.125v480c0 5.888 4.779 10.667 10.667 10.667H448c5.888 0 10.667-4.779 10.667-10.667s-4.779-10.666-10.667-10.666zm-96-428.31v387.264l-234.667 39.125V23.253L352 62.357z"}))}function ige(i){return n.createElement("svg",{viewBox:"0 0 452.498 452.498",...i},n.createElement("path",{fill:"currentColor",d:"M301.317 295.155c-51.157-10.946-87.714-56.144-87.723-108.459a112.981 112.981 0 0 1 2.304-23.381 107.145 107.145 0 0 1 8.533-23.723 8.53 8.53 0 0 0-.427-8.533c-21.845-35.413-48.213-74.752-84.48-103.68a151.775 151.775 0 0 0-13.653-9.899 79.82 79.82 0 0 0-13.653-7.083 8.535 8.535 0 0 0-11.691 9.728l1.024 4.523c1.109 4.864 2.219 9.728 3.072 14.763a151.95 151.95 0 0 1 2.475 22.613v5.973a160.68 160.68 0 0 1-51.2 117.077 187.752 187.752 0 0 0-40.619 49.323 140.292 140.292 0 0 0-6.485 112.555C28.65 398.37 74.79 435.008 129.37 442.696h1.28a8.629 8.629 0 0 0 2.56-17.066 67.41 67.41 0 0 1-43.776-39.339 61.78 61.78 0 0 1 2.731-49.493 91.4 91.4 0 0 1 19.029-22.784 98.216 98.216 0 0 0 31.317-71.851v-3.669-5.12a86.72 86.72 0 0 1 17.067 19.029 80.214 80.214 0 0 1 12.885 42.667v.683a80.558 80.558 0 0 1-14.592 46.336 8.534 8.534 0 0 0 2.816 12.288 29.268 29.268 0 0 0 29.525 1.28 50.175 50.175 0 0 0 21.333-27.477 59.734 59.734 0 0 1 12.715 36.011c-.579 27.882-18.718 52.352-45.227 61.013a8.534 8.534 0 0 0 4.266 16.469c70.656-12.715 121.941-69.717 124.757-137.984a8.53 8.53 0 0 0-6.739-8.534zm-72.022 111.104a79.103 79.103 0 0 0 12.117-41.899 84.48 84.48 0 0 0-28.416-60.245 8.535 8.535 0 0 0-14.507 5.376c-.939 11.435-7.68 26.624-16.213 31.317a11.012 11.012 0 0 1-4.181 1.28 97.453 97.453 0 0 0 11.52-46.08v-1.024a97.279 97.279 0 0 0-15.616-52.053 105.562 105.562 0 0 0-39.509-35.925 8.535 8.535 0 0 0-12.117 10.155 78.449 78.449 0 0 1 3.755 22.016v2.731a81.32 81.32 0 0 1-26.027 59.733 105.478 105.478 0 0 0-22.443 27.477 80.723 80.723 0 0 0-8.533 35.499 79.108 79.108 0 0 0 13.397 43.947 131.416 131.416 0 0 1-57.941-67.669 123.223 123.223 0 0 1 5.717-98.901 170.67 170.67 0 0 1 37.205-44.629 177.58 177.58 0 0 0 56.405-129.451v-6.571a167.053 167.053 0 0 0-2.731-24.917V34.89a100.687 100.687 0 0 1 7.509 5.717c32.939 26.197 57.685 62.72 78.251 95.488a123.351 123.351 0 0 0-7.509 23.211 129.741 129.741 0 0 0-2.901 27.392c-.012 57.557 38.394 108.044 93.867 123.392a129.706 129.706 0 0 1-61.099 96.169z"}),n.createElement("path",{fill:"currentColor",d:"M324.527 58.697c-49.399.039-94.366 28.501-115.541 73.131a123.96 123.96 0 0 0-9.557 27.477 129.741 129.741 0 0 0-2.901 27.392 127.147 127.147 0 0 0 48.896 100.608 128.002 128.002 0 0 0 79.104 27.392 126.807 126.807 0 0 0 79.104-27.392 128.001 128.001 0 0 0 48.867-100.579c.015-70.693-57.279-128.013-127.972-128.029zm0 238.933a110.91 110.91 0 0 1-23.211-2.475c-51.157-10.946-87.714-56.144-87.723-108.459a112.938 112.938 0 0 1 2.219-23.723 107.639 107.639 0 0 1 8.533-23.808c18.353-38.703 57.347-63.382 100.181-63.403 61.267 0 110.933 49.667 110.933 110.933S385.794 297.63 324.527 297.63z"}),n.createElement("path",{fill:"currentColor",d:"M354.565 106.91a16.212 16.212 0 0 0-11.947-5.205h-36.267a16.216 16.216 0 0 0-11.947 5.205 15.19 15.19 0 0 0-4.011 11.52l6.4 79.616c.837 8.16 7.755 14.338 15.957 14.251h23.552c8.086.105 14.958-5.885 15.957-13.909l6.4-79.957a15.187 15.187 0 0 0-4.094-11.521zm-19.115 88.32h-21.675l-6.315-76.8h34.133l-6.143 76.8zM328.965 229.363h-8.96c-11.621.047-21.031 9.456-21.077 21.077v9.045c.047 11.621 9.456 21.031 21.077 21.077h9.045c11.654-.047 21.077-9.508 21.077-21.163v-8.96c-.047-11.653-9.508-21.076-21.162-21.076zm4.096 30.038a4.097 4.097 0 0 1-4.011 4.011h-8.96a4.097 4.097 0 0 1-4.011-4.011v-8.96a4.097 4.097 0 0 1 4.011-4.011h8.96a4.097 4.097 0 0 1 4.011 4.011v8.96z"}))}function ta(i){return n.createElement("svg",{viewBox:"0 0 512.006 512.006",...i},n.createElement("path",{d:"M502.379 211.249c0 74.656-60.52 135.176-135.176 135.176-6.469.01-12.919-.473-19.311-1.448-66.487-9.598-115.837-66.555-115.866-133.728-.019-67.212 49.349-124.227 115.866-133.825a142.128 142.128 0 0 1 19.311-1.352c74.656 0 135.176 60.521 135.176 135.177z",fill:"#c52828"}),n.createElement("path",{d:"M463.757 211.249c-.029 67.173-49.378 124.131-115.865 133.728-66.487-9.598-115.837-66.555-115.866-133.728-.019-67.212 49.349-124.227 115.866-133.825 66.516 9.598 115.875 66.613 115.865 133.825z",fill:"#f44335"}),n.createElement("g",{fill:"#fdd834"},n.createElement("path",{d:"M380.527 230.56h-26.649a8.208 8.208 0 0 1-8.4-7.242l-7.242-90.472c-.212-4.47 3.235-8.275 7.705-8.497.232-.01.463-.01.695 0h41.036a8.105 8.105 0 0 1 8.4 7.802c.01.232.01.463 0 .695l-7.242 90.472c-.501 4.181-4.093 7.319-8.303 7.242zM362.085 269.181h10.235c7.84 0 14.194 6.353 14.194 14.194v10.235c0 7.84-6.353 14.194-14.194 14.194h-10.235c-7.84 0-14.194-6.353-14.194-14.194v-10.235c.001-7.84 6.354-14.194 14.194-14.194z"})),n.createElement("path",{d:"M308.015 332.714a132.057 132.057 0 0 1-24.332-15.256 138.367 138.367 0 0 1-25.587-26.456 134.123 134.123 0 0 1-26.07-79.754 136.453 136.453 0 0 1 3.09-28.966 129.801 129.801 0 0 1 9.655-28.966c-24.428-39.201-50.691-78.113-85.547-108.334-2.607-2.221-5.214-4.442-7.917-6.566a161.051 161.051 0 0 0-14.387-10.621 80.965 80.965 0 0 0-13.807-7.145c1.641 7.338 3.476 14.773 4.731 22.208a180.355 180.355 0 0 1 2.993 26.939v7.145a192.012 192.012 0 0 1-60.829 139.521 202.647 202.647 0 0 0-43.836 52.719 149.063 149.063 0 0 0-6.566 120.017 152.006 152.006 0 0 0 22.208 40.167 164.926 164.926 0 0 0 106.21 61.891 86.874 86.874 0 0 1-44.801-32.249 51.315 51.315 0 0 1-3.669-5.6 77.46 77.46 0 0 1-6.469-13.325 79.464 79.464 0 0 1 3.766-63.726 111.914 111.914 0 0 1 23.463-28.387 101.983 101.983 0 0 0 32.442-74.25v-3.862a97.875 97.875 0 0 0-4.731-27.132 112.539 112.539 0 0 1 10.911 6.566 108.053 108.053 0 0 1 30.222 30.801 100.963 100.963 0 0 1 15.835 46.443v8.4a100.92 100.92 0 0 1-18.249 57.933c22.98 13.035 38.622-8.593 44.994-28.966a60.067 60.067 0 0 0 2.51-12.842 88.458 88.458 0 0 1 28.966 61.312v5.214c-2.704 33.678-25.346 62.451-57.45 72.995 73.353-11.789 128.717-72.889 133.245-147.053a131.977 131.977 0 0 1-30.994-10.815z",fill:"#f57c00"}),n.createElement("path",{d:"M263.117 417.489v-5.214a88.462 88.462 0 0 0-28.966-61.312 60.129 60.129 0 0 1-2.51 12.842c-5.986 20.47-22.014 42.098-44.994 28.966a100.923 100.923 0 0 0 18.249-57.933v-.966-7.338a100.971 100.971 0 0 0-15.835-46.443 108.027 108.027 0 0 0-30.222-30.801 108.949 108.949 0 0 0-39.877-35.532 97.838 97.838 0 0 1 4.731 27.132v3.862a101.988 101.988 0 0 1-32.442 74.25 111.924 111.924 0 0 0-23.366 28.387 79.491 79.491 0 0 0-3.573 63.726 83.948 83.948 0 0 0 35.436 42.291 51.315 51.315 0 0 0 3.669 5.6 86.886 86.886 0 0 0 44.415 32.249 164.927 164.927 0 0 1-106.21-61.892 152.082 152.082 0 0 1-22.014-40.167 149.055 149.055 0 0 1 6.564-120.015 202.714 202.714 0 0 1 44.029-53.202A192.012 192.012 0 0 0 131.03 76.458v-7.145a180.486 180.486 0 0 0-2.993-26.939c-1.255-7.435-3.09-14.869-4.731-22.208a80.965 80.965 0 0 1 13.807 7.145 159.446 159.446 0 0 1 14.773 10.718c2.704 2.124 5.311 4.345 7.917 6.566 34.856 30.222 61.119 69.133 85.547 108.334a129.75 129.75 0 0 0-9.655 28.966 136.634 136.634 0 0 0-3.669 29.353 134.116 134.116 0 0 0 26.07 79.754 138.396 138.396 0 0 0 25.587 26.456 132.164 132.164 0 0 0 24.332 15.256 152.203 152.203 0 0 1-44.898 84.775z",fill:"#ff9801"}),n.createElement("path",{d:"M147.831 500.912h-1.448c-61.756-8.7-113.963-50.15-136.432-108.334a158.725 158.725 0 0 1 7.338-127.355 212.528 212.528 0 0 1 45.96-55.809 181.787 181.787 0 0 0 57.933-132.473v-6.759a171.298 171.298 0 0 0-2.8-25.587c-.966-5.697-2.221-11.2-3.476-16.704l-1.159-5.117c-1.178-5.204 2.076-10.37 7.28-11.548a9.663 9.663 0 0 1 5.948.541 89.473 89.473 0 0 1 15.449 8.014 172.47 172.47 0 0 1 15.449 11.2c41.036 32.732 70.871 77.244 95.589 117.314a9.673 9.673 0 0 1 .483 9.655 121.056 121.056 0 0 0-9.655 26.842 128.158 128.158 0 0 0-2.607 26.456c.01 59.198 41.374 110.333 99.258 122.721a9.655 9.655 0 0 1 7.628 9.655c-3.186 77.244-61.216 141.742-141.163 156.129-5.253.927-10.254-2.588-11.181-7.84a9.65 9.65 0 0 1 6.353-10.795c29.99-9.8 50.517-37.492 51.174-69.037a67.618 67.618 0 0 0-14.387-40.746 56.78 56.78 0 0 1-24.139 31.091 33.122 33.122 0 0 1-33.408-1.448c-4.644-2.626-6.276-8.516-3.659-13.16.145-.261.299-.502.473-.743a91.187 91.187 0 0 0 16.511-52.429v-.772a90.743 90.743 0 0 0-14.58-48.277 98.107 98.107 0 0 0-19.311-21.532v9.945a111.13 111.13 0 0 1-35.436 81.299 103.445 103.445 0 0 0-21.532 25.78 69.873 69.873 0 0 0-3.09 56.002 76.304 76.304 0 0 0 49.533 44.512c5.33.801 9.009 5.774 8.207 11.104-.801 5.328-5.774 8.997-11.103 8.205zM137.113 39.478v1.738a188.136 188.136 0 0 1 3.09 28.194v7.435A200.926 200.926 0 0 1 76.38 223.318a192.998 192.998 0 0 0-42.098 50.498 139.414 139.414 0 0 0-6.469 111.907 148.682 148.682 0 0 0 65.561 76.568 89.522 89.522 0 0 1-15.159-49.726 91.25 91.25 0 0 1 9.655-40.167 119.46 119.46 0 0 1 25.394-31.091 92.026 92.026 0 0 0 29.449-67.588v-3.09a88.799 88.799 0 0 0-4.248-24.911 9.653 9.653 0 0 1 6.237-12.147 9.638 9.638 0 0 1 7.473.657 119.392 119.392 0 0 1 44.705 40.649 110.062 110.062 0 0 1 17.669 58.898v1.159a110.343 110.343 0 0 1-13.035 52.139 12.555 12.555 0 0 0 4.731-1.448c9.655-5.31 17.283-22.497 18.345-35.436.434-5.31 5.088-9.269 10.409-8.844a9.61 9.61 0 0 1 6.006 2.761 95.586 95.586 0 0 1 32.153 68.168 89.528 89.528 0 0 1-13.711 47.408 146.774 146.774 0 0 0 69.133-108.817c-62.77-17.37-106.22-74.492-106.21-139.618a146.655 146.655 0 0 1 3.283-30.994 139.876 139.876 0 0 1 8.497-26.263c-23.27-37.077-51.27-78.402-88.541-108.045a113.049 113.049 0 0 0-8.496-6.467z"}),n.createElement("path",{d:"M367.203 356.081a144.841 144.841 0 0 1-89.506-30.994 143.882 143.882 0 0 1-55.326-113.838 146.655 146.655 0 0 1 3.283-30.994 140.652 140.652 0 0 1 10.814-31.091c23.965-50.498 74.839-82.699 130.735-82.747 79.986.019 144.813 64.875 144.803 144.861a144.848 144.848 0 0 1-55.297 113.809 143.543 143.543 0 0 1-89.506 30.994zm0-270.353c-48.47.019-92.586 27.943-113.355 71.74a121.83 121.83 0 0 0-9.655 26.939 127.805 127.805 0 0 0-2.51 26.842c.01 59.198 41.374 110.333 99.258 122.721a125.763 125.763 0 0 0 26.263 2.8c69.326 0 125.521-56.195 125.521-125.521S436.519 85.728 367.203 85.728z"}),n.createElement("path",{d:"M380.527 240.215h-26.649c-9.279.097-17.109-6.894-18.056-16.125l-7.242-90.085a17.201 17.201 0 0 1 4.538-13.035 18.38 18.38 0 0 1 13.518-5.89h41.036a18.375 18.375 0 0 1 13.518 5.89 17.204 17.204 0 0 1 4.635 13.035l-7.242 90.472c-1.139 9.076-8.912 15.854-18.056 15.738zm-25.49-19.311h24.525l6.952-86.899h-38.622l7.145 86.899zM372.32 317.459h-10.235c-13.151-.048-23.801-10.698-23.849-23.849v-10.235c.048-13.151 10.698-23.801 23.849-23.849h10.138c13.189 0 23.888 10.66 23.946 23.849v10.138c0 13.18-10.669 23.888-23.849 23.946zm-10.138-38.622a4.635 4.635 0 0 0-4.538 4.538v10.138a4.635 4.635 0 0 0 4.538 4.538h10.138a4.635 4.635 0 0 0 4.538-4.538v-10.138a4.635 4.635 0 0 0-4.538-4.538h-10.138z"}))}function rge(i){return n.createElement("svg",{viewBox:"0 0 512.224 512.224",...i},n.createElement("path",{fill:"currentColor",d:"M321.71 427.573c-42.239-16.782-69.968-57.632-69.973-103.083.012-7.976.87-15.928 2.56-23.723a107.066 107.066 0 0 1 10.752-28.757 8.534 8.534 0 0 0-2.304-10.923 98.766 98.766 0 0 1-9.216-7.851 92.567 92.567 0 0 1-20.053-28.843 89.437 89.437 0 0 1-7.339-35.413 87.726 87.726 0 0 1 10.069-40.107c2.219-4.096 4.437-8.107 6.997-12.117a8.536 8.536 0 0 0 0-9.387l-17.835-28.416-17.067-27.392a24.148 24.148 0 0 0-7.906-7.906c-11.358-6.992-26.233-3.452-33.225 7.906l-50.176 80.64c-11.264 18.091-22.869 36.779-34.901 54.784l-3.413 5.035A698.15 698.15 0 0 0 39 275.935a158.81 158.81 0 0 0-17.664 72.96 160.509 160.509 0 0 0 13.056 63.659 165.287 165.287 0 0 0 88.661 86.784 167.511 167.511 0 0 0 64.683 12.885 167.509 167.509 0 0 0 64.683-12.8 164.36 164.36 0 0 0 52.907-34.901 162.072 162.072 0 0 0 20.309-24.149 8.532 8.532 0 0 0-3.925-12.8zm-28.331 24.917a147.644 147.644 0 0 1-47.445 31.147 152.92 152.92 0 0 1-116.395 0 148.222 148.222 0 0 1-79.445-77.824 143.623 143.623 0 0 1-11.691-56.917 141.656 141.656 0 0 1 15.701-65.195 688.246 688.246 0 0 1 38.741-62.293l3.413-5.035c12.203-18.176 23.893-37.035 35.243-55.211l50.176-80.725a6.995 6.995 0 0 1 6.059-3.413 7.082 7.082 0 0 1 6.144 3.84l17.067 27.392 14.933 24.064c-1.621 2.56-3.243 5.461-4.864 8.533a104.964 104.964 0 0 0-11.776 48.299 106.408 106.408 0 0 0 8.533 42.155 109.907 109.907 0 0 0 23.808 34.133 136.402 136.402 0 0 0 5.205 4.693 124.263 124.263 0 0 0-9.216 26.965 129.873 129.873 0 0 0-2.901 27.392c.04 48.518 27.402 92.877 70.741 114.688a143.263 143.263 0 0 1-12.031 13.312z"}),n.createElement("path",{fill:"currentColor",d:"M100.014 442.592c-.058 0-.114-.008-.172-.009-.057.001-.113.009-.17.009h.342z"}),n.createElement("path",{fill:"currentColor",d:"M105.646 428a112.632 112.632 0 0 1-24.576-35.755 109.311 109.311 0 0 1-8.533-43.349 107.531 107.531 0 0 1 11.861-49.408 8.533 8.533 0 0 0-3.889-12.306 8.533 8.533 0 0 0-11.216 4.455 124.582 124.582 0 0 0-13.824 57.259 126.296 126.296 0 0 0 10.24 50.091 129.715 129.715 0 0 0 28.331 41.131 8.535 8.535 0 0 0 5.802 2.466 8.527 8.527 0 0 0 5.853-2.515 8.534 8.534 0 0 0-.049-12.069zM419.161 140.597a456.86 456.86 0 0 0-26.453-42.155l-1.707-2.475C381.443 82.4 372.91 68.149 364.377 54.41L335.79 8.757a18.69 18.69 0 0 0-5.896-5.896c-8.742-5.486-20.277-2.846-25.763 5.896L275.63 54.41c-8.533 14.08-17.408 27.989-26.453 41.899-6.997 10.155-14.08 20.565-20.395 31.232-2.56 4.096-5.12 8.448-7.68 13.312a104.964 104.964 0 0 0-11.776 48.299 106.408 106.408 0 0 0 8.533 42.155 109.918 109.918 0 0 0 23.808 34.133 115.197 115.197 0 0 0 10.752 9.216 8.533 8.533 0 0 0 5.12 1.707l1.877-.256a8.532 8.532 0 0 0 5.717-4.267 110.25 110.25 0 0 1 42.155-43.435 112.64 112.64 0 0 1 106.581-2.389 8.533 8.533 0 0 0 12.117-4.95 105.041 105.041 0 0 0-6.825-80.469zm-7.083 65.707a129.795 129.795 0 0 0-113.408 7.253 127.305 127.305 0 0 0-43.349 41.387l-1.792-1.707a92.567 92.567 0 0 1-20.053-28.843 89.437 89.437 0 0 1-7.339-35.413 87.734 87.734 0 0 1 9.813-40.363c2.219-3.84 4.523-8.192 7.168-12.373 6.144-10.411 13.141-20.651 20.053-30.72 9.387-13.824 18.432-28.16 26.965-42.069l28.501-45.397a1.536 1.536 0 0 1 1.365-.768 1.535 1.535 0 0 1 1.365.768l27.904 45.312c8.619 13.909 17.579 28.245 26.965 42.069l1.707 2.475a443.768 443.768 0 0 1 25.6 40.533 87.883 87.883 0 0 1 8.535 57.856z"}),n.createElement("path",{fill:"currentColor",d:"M277.337 228.746a58.176 58.176 0 0 1-12.629-18.091 54.768 54.768 0 0 1-4.437-21.675 53.425 53.425 0 0 1 5.973-24.576c1.707-3.157 3.499-6.4 5.632-9.728l.512-.853a8.533 8.533 0 0 0-2.894-12.242 8.533 8.533 0 0 0-11.613 3.282l-.512.768c-2.219 3.584-4.352 7.253-6.229 10.837a70.656 70.656 0 0 0-7.936 32.512 71.854 71.854 0 0 0 5.888 28.501 75.615 75.615 0 0 0 16.299 23.467 8.531 8.531 0 0 0 5.973 2.389v.085a8.533 8.533 0 0 0 5.973-14.676z"}),n.createElement("path",{fill:"currentColor",d:"M421.721 210.826a129.961 129.961 0 0 0-123.051 2.731 127.233 127.233 0 0 0-48.64 50.176 124.24 124.24 0 0 0-12.459 33.365 129.873 129.873 0 0 0-2.901 27.392c0 70.692 57.308 128 128 128 47.899.071 91.829-26.606 113.855-69.14 32.508-62.775 7.971-140.016-54.804-172.524zM362.67 435.424c-61.267 0-110.933-49.667-110.933-110.933.006-8.004.864-15.985 2.56-23.808a107.209 107.209 0 0 1 10.752-28.843c19.355-35.894 56.842-58.275 97.621-58.283 61.267 0 110.933 49.666 110.933 110.933S423.937 435.424 362.67 435.424z"}),n.createElement("path",{fill:"currentColor",d:"M392.707 244.704a16.296 16.296 0 0 0-11.947-5.205h-36.267a16.296 16.296 0 0 0-11.947 5.205 15.274 15.274 0 0 0-4.011 11.52l6.4 79.531c.796 8.194 7.725 14.419 15.957 14.336h23.552c8.086.105 14.958-5.885 15.957-13.909l6.4-79.957a15.26 15.26 0 0 0-4.094-11.521zm-19.114 88.32h-21.675l-6.315-76.8h34.133l-6.143 76.8zM367.107 367.157h-8.96c-11.621.047-21.031 9.456-21.077 21.077v9.045c.047 11.621 9.456 21.031 21.077 21.077h9.045c11.654-.047 21.077-9.508 21.077-21.163v-8.96c-.046-11.653-9.507-21.076-21.162-21.076zm4.096 30.037a4.097 4.097 0 0 1-4.011 4.011h-8.96a4.097 4.097 0 0 1-4.011-4.011v-8.96a4.097 4.097 0 0 1 4.011-4.011h8.96a4.097 4.097 0 0 1 4.011 4.011v8.96z"}))}function sa(i){return n.createElement("svg",{viewBox:"0 0 512.002 512.002",...i},n.createElement("path",{d:"M481.929 324.35c0 65.951-53.464 119.415-119.415 119.415a111.938 111.938 0 0 1-17.059-1.279c-58.735-8.478-102.33-58.795-102.356-118.135-.017-59.375 43.595-109.742 102.356-118.221a125.333 125.333 0 0 1 17.059-1.194c65.951-.001 119.415 53.462 119.415 119.414z",fill:"#c52828"}),n.createElement("path",{d:"M447.81 324.35c-.026 59.341-43.621 109.657-102.356 118.135-58.735-8.478-102.33-58.795-102.356-118.135-.017-59.375 43.595-109.742 102.356-118.221 58.77 8.487 102.373 58.846 102.356 118.221z",fill:"#f44335"}),n.createElement("g",{fill:"#fdd834"},n.createElement("path",{d:"M374.285 341.409h-23.542a7.251 7.251 0 0 1-7.421-6.397l-6.397-79.923a7.174 7.174 0 0 1 6.807-7.506c.205-.009.409-.009.614 0h36.251a7.16 7.16 0 0 1 7.421 6.892c.009.205.009.409 0 .614l-6.397 79.923a7.249 7.249 0 0 1-7.336 6.397zM357.993 375.527h9.041c6.926 0 12.539 5.612 12.539 12.539v9.041c0 6.926-5.612 12.539-12.539 12.539h-9.041c-6.926 0-12.539-5.612-12.539-12.539v-9.041c0-6.926 5.621-12.539 12.539-12.539z"})),n.createElement("path",{d:"M318.415 435.235a153.553 153.553 0 0 1-19.192 22.859 157.081 157.081 0 0 1-50.154 33.095 159.575 159.575 0 0 1-61.413 12.283 149.268 149.268 0 0 1-20.556-1.365 155.17 155.17 0 0 1-40.857-10.833 156.698 156.698 0 0 1-84.017-82.311 152.753 152.753 0 0 1-12.368-60.219 150.27 150.27 0 0 1 17.059-69.005 752.602 752.602 0 0 1 42.648-68.237c15.268-22.774 29.513-46.145 44.013-69.346l34.119-54.504 7.335-11.771c4.504-7.353 14.117-9.656 21.469-5.143a15.525 15.525 0 0 1 5.143 5.143l34.716 55.869c-2.644 4.18-5.032 8.53-7.335 12.709a96.424 96.424 0 0 0-11.515 44.439 98.026 98.026 0 0 0 8.018 38.725 100.313 100.313 0 0 0 21.921 31.56 106.83 106.83 0 0 0 9.98 8.53 115.344 115.344 0 0 0-11.6 31.048 120.546 120.546 0 0 0-2.729 25.589c.041 48.9 29.878 92.828 75.315 110.885z",fill:"#0377bc"}),n.createElement("path",{d:"M277.217 435.235a153.553 153.553 0 0 1-19.192 22.859 157.081 157.081 0 0 1-50.154 33.095 158.847 158.847 0 0 1-40.772 10.833 155.17 155.17 0 0 1-40.857-10.833 156.698 156.698 0 0 1-84.017-82.311 152.657 152.657 0 0 1-12.368-60.134 150.27 150.27 0 0 1 17.059-69.005 752.602 752.602 0 0 1 42.648-68.237c15.268-22.774 29.513-46.145 44.013-69.346l34.119-54.504c9.212 14.671 18.339 29.427 27.465 44.098-2.644 4.18-5.032 8.53-7.335 12.709a96.502 96.502 0 0 0-10.833 44.354 98.026 98.026 0 0 0 8.018 38.725 100.313 100.313 0 0 0 21.921 31.56 106.83 106.83 0 0 0 9.98 8.53 115.323 115.323 0 0 0-12.283 31.133 120.546 120.546 0 0 0-2.729 25.589c.043 48.9 29.88 92.828 75.317 110.885z",fill:"#02a9f4"}),n.createElement("path",{d:"M411.388 144.545a477.911 477.911 0 0 0-27.636-43.842c-9.894-14.586-19.192-29.598-28.489-44.525L328.395 13.53c-3.037-4.708-9.323-6.065-14.031-3.028a10.259 10.259 0 0 0-3.028 3.028l-12.794 20.215-14.074 22.433c-9.297 14.927-18.595 29.939-28.489 44.525-6.994 10.236-13.989 20.471-20.301 31.133-2.644 4.18-5.032 8.53-7.335 12.709a96.502 96.502 0 0 0-10.833 44.354 98.758 98.758 0 0 0 29.939 70.284 106.83 106.83 0 0 0 9.98 8.53 119.423 119.423 0 0 1 84.017-60.902 114.9 114.9 0 0 1 21.068-1.877c5.186.009 10.372.324 15.524.938a119.369 119.369 0 0 1 39.578 12.539 96.462 96.462 0 0 0-6.228-73.866z",fill:"#0377bc"}),n.createElement("path",{d:"M379.573 188.899a93.046 93.046 0 0 1-1.535 17.059 131.537 131.537 0 0 0-15.524-1.024 114.797 114.797 0 0 0-21.068 1.877 119.425 119.425 0 0 0-84.017 60.902 106.96 106.96 0 0 1-9.98-8.53c-31.099-29.743-38.878-76.417-19.106-114.638 2.303-4.35 4.691-8.53 7.335-12.709 6.312-10.662 13.306-20.898 20.301-31.133 9.894-14.586 19.192-29.598 28.489-44.525l14.074-22.433 14.074 22.433c9.297 14.927 18.595 29.939 28.489 44.525a477.911 477.911 0 0 1 27.636 43.842 96.401 96.401 0 0 1 10.832 44.354z",fill:"#02a9f4"}),n.createElement("path",{d:"M187.656 512.002a167.398 167.398 0 0 1-64.655-12.88 165.226 165.226 0 0 1-88.623-86.746 160.466 160.466 0 0 1-13.05-63.631 158.81 158.81 0 0 1 17.656-72.928 698.388 698.388 0 0 1 39.663-63.887l3.412-5.032c12.027-17.998 23.627-36.677 34.886-54.76L167.1 71.531c6.986-11.353 21.861-14.893 33.214-7.898a24.1 24.1 0 0 1 7.898 7.898l17.059 27.38 17.827 28.404a8.521 8.521 0 0 1 0 9.383c-2.559 4.009-4.777 8.018-6.994 12.112a87.69 87.69 0 0 0-10.065 40.089 89.456 89.456 0 0 0 7.335 35.398 92.438 92.438 0 0 0 20.045 28.83 99.608 99.608 0 0 0 9.212 7.847 8.534 8.534 0 0 1 2.303 10.918 106.955 106.955 0 0 0-10.747 28.745 112.483 112.483 0 0 0-2.559 23.712c.009 45.429 27.721 86.26 69.943 103.038 4.393 1.706 6.559 6.653 4.853 11.046a8.584 8.584 0 0 1-.93 1.749 162.407 162.407 0 0 1-20.301 24.139 164.29 164.29 0 0 1-52.884 34.886 167.489 167.489 0 0 1-64.653 12.795zm0-435.012a6.99 6.99 0 0 0-6.056 3.412l-50.154 80.69c-11.344 18.168-23.03 37.019-35.227 55.187l-3.412 5.032a687.543 687.543 0 0 0-38.725 62.266 141.613 141.613 0 0 0-15.695 65.166 143.56 143.56 0 0 0 11.686 56.893 148.16 148.16 0 0 0 79.411 77.79 152.855 152.855 0 0 0 116.344 0 147.616 147.616 0 0 0 47.425-31.133 143.446 143.446 0 0 0 12.027-13.306c-43.322-21.802-70.668-66.139-70.711-114.638a129.576 129.576 0 0 1 2.9-27.38 124.357 124.357 0 0 1 9.212-26.954 136.293 136.293 0 0 1-5.203-4.691 109.87 109.87 0 0 1-23.798-34.119 106.411 106.411 0 0 1-8.53-42.136c0-16.803 4.035-33.359 11.771-48.278 1.621-3.071 3.241-5.971 4.862-8.53l-14.927-24.054-17.059-27.38a7.087 7.087 0 0 0-6.141-3.837z"}),n.createElement("path",{d:"M99.971 442.4A8.521 8.521 0 0 1 94 439.926a129.631 129.631 0 0 1-28.318-41.113 126.28 126.28 0 0 1-10.236-50.069 124.503 124.503 0 0 1 13.818-57.234c1.868-4.325 6.883-6.32 11.208-4.452s6.32 6.883 4.452 11.208c-.162.375-.35.742-.563 1.092a107.494 107.494 0 0 0-11.856 49.387 109.211 109.211 0 0 0 8.53 43.331 112.626 112.626 0 0 0 24.565 35.739c3.344 3.318 3.369 8.717.051 12.061a8.549 8.549 0 0 1-6.022 2.525l.342-.001zM257.428 276.242a8.526 8.526 0 0 1-5.118-1.706 115.222 115.222 0 0 1-10.747-9.212 109.87 109.87 0 0 1-23.798-34.119 106.411 106.411 0 0 1-8.53-42.136c0-16.803 4.035-33.359 11.771-48.278 2.559-4.862 5.118-9.212 7.677-13.306 6.312-10.662 13.392-21.068 20.386-31.218 9.041-13.903 17.912-27.807 26.442-41.881L304 8.753c5.485-8.734 17.017-11.379 25.751-5.894a18.698 18.698 0 0 1 5.894 5.894l28.574 45.634c8.53 13.733 17.059 27.977 26.612 41.539l1.706 2.474a457.473 457.473 0 0 1 26.442 42.136 104.968 104.968 0 0 1 6.824 80.434c-1.433 4.487-6.235 6.969-10.722 5.536a8.282 8.282 0 0 1-1.39-.589 112.612 112.612 0 0 0-106.535 2.388 110.28 110.28 0 0 0-42.136 43.416 8.52 8.52 0 0 1-5.715 4.265l-1.877.256zm62.437-258.959a1.541 1.541 0 0 0-1.365.768l-28.489 45.378c-8.53 13.903-17.571 28.233-26.954 42.051-6.909 10.065-13.903 20.301-20.045 30.707-2.644 4.18-4.947 8.53-7.165 12.368a87.722 87.722 0 0 0-9.809 40.345 89.456 89.456 0 0 0 7.335 35.398 92.438 92.438 0 0 0 20.045 28.83l1.791 1.706a127.216 127.216 0 0 1 43.331-41.369 129.73 129.73 0 0 1 113.359-7.25 87.904 87.904 0 0 0-8.53-57.831 444.102 444.102 0 0 0-25.589-40.516l-1.706-2.474c-9.383-13.818-18.339-28.148-26.954-42.051L321.23 18.05a1.532 1.532 0 0 0-1.365-.767z"}),n.createElement("path",{d:"M271.246 243.233a8.519 8.519 0 0 1-5.971-2.388 75.502 75.502 0 0 1-16.292-23.456 71.923 71.923 0 0 1-5.885-28.489 70.537 70.537 0 0 1 7.933-32.498c1.877-3.582 4.009-7.25 6.227-10.833l.512-.768a8.538 8.538 0 0 1 11.609-3.284 8.538 8.538 0 0 1 3.284 11.609 6.997 6.997 0 0 1-.392.631l-.512.853c-2.132 3.327-3.924 6.568-5.63 9.724a53.307 53.307 0 0 0-5.971 24.565 54.816 54.816 0 0 0 4.435 21.665 58.198 58.198 0 0 0 12.624 18.083c3.395 3.267 3.489 8.666.222 12.061a8.518 8.518 0 0 1-6.193 2.61v-.085z"}),n.createElement("path",{d:"M362.514 452.294c-70.66 0-127.945-57.285-127.945-127.945a129.576 129.576 0 0 1 2.9-27.38 123.98 123.98 0 0 1 12.453-33.351 127.15 127.15 0 0 1 48.619-50.154c37.94-21.495 84.136-22.518 122.997-2.729 62.744 32.489 87.275 109.7 54.777 172.452-22.005 42.512-65.916 69.184-113.801 69.107zm0-238.83c-40.763.009-78.234 22.382-97.579 58.257a107.238 107.238 0 0 0-10.747 28.83 112.818 112.818 0 0 0-2.559 23.798c0 61.243 49.643 110.885 110.885 110.885s110.885-49.642 110.885-110.885-49.643-110.885-110.885-110.885z"}),n.createElement("path",{d:"M374.285 349.939h-23.542c-8.231.085-15.157-6.141-15.95-14.33l-6.397-79.496a15.26 15.26 0 0 1 4.009-11.515 16.312 16.312 0 0 1 11.942-5.203h36.251a16.31 16.31 0 0 1 11.941 5.203 15.27 15.27 0 0 1 4.094 11.515l-6.397 79.923c-.999 8.026-7.865 14.013-15.951 13.903zm-22.519-17.06h21.665l6.141-76.767h-34.119l6.313 76.767zM367.034 418.176h-9.041c-11.617-.043-21.026-9.451-21.068-21.068v-9.041c.043-11.617 9.451-21.026 21.068-21.068h8.956c11.651 0 21.102 9.417 21.153 21.068v8.956c.001 11.651-9.416 21.11-21.068 21.153zm-8.956-34.119a4.095 4.095 0 0 0-4.009 4.009v8.956a4.095 4.095 0 0 0 4.009 4.009h8.956a4.095 4.095 0 0 0 4.009-4.009v-8.956a4.095 4.095 0 0 0-4.009-4.009h-8.956z"}))}function D4e(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M462,226c-5.52,0-10,4.48-10,10s4.48,10,10,10c5.52,0,10-4.48,10-10S467.52,226,462,226z"}),n.createElement("path",{fill:"currentColor",d:"M50,226c-5.52,0-10,4.48-10,10s4.48,10,10,10s10-4.48,10-10S55.52,226,50,226z"}),n.createElement("path",{fill:"currentColor",d:`M502,126h-0.027C508.265,117.637,512,107.248,512,96c0-27.57-22.43-50-50-50s-50,22.43-50,50 + c0,11.248,3.735,21.637,10.027,30H422c-5.522,0-10,4.478-10,10v50.03c-7.399,0.025-17.158,0.065-23,0.113V166.63 + c0-5.522-4.478-10-10-10c-5.522,0-10,4.478-10,10v12.435c-0.931-0.964-1.899-2.045-2.923-3.258 + c-10.745-12.754-24.515-23.761-40.077-32.106V121.83c0-5.522-4.478-10-10-10c-5.522,0-10,4.478-10,10v12.983 + c-12.92-4.643-26.438-7.5-40-8.448V96c0-5.522-4.478-10-10-10c-5.522,0-10,4.478-10,10v30.365 + c-13.565,0.948-27.084,3.807-40,8.452V120.17c0-5.522-4.477-10-10-10s-10,4.478-10,10v23.542 + c-15.764,8.457-29.695,19.652-40.55,32.652c-0.758,0.908-1.587,1.755-2.45,2.566v-12.3c0-5.522-4.477-10-10-10s-10,4.478-10,10 + v20.385c-4.189,0.067-14.913,0.05-23,0.024V136c0-5.522-4.477-10-10-10h-0.027C96.265,117.637,100,107.248,100,96 + c0-27.57-22.43-50-50-50S0,68.43,0,96c0,11.248,3.735,21.637,10.027,30H10c-5.523,0-10,4.478-10,10v320c0,5.522,4.477,10,10,10h80 + c5.523,0,10-4.478,10-10v-11h312v11c0,5.522,4.478,10,10,10h80c5.522,0,10-4.478,10-10V136C512,130.478,507.522,126,502,126z + M80,446H20V146h20v50c0,5.522,4.477,10,10,10s10-4.478,10-10v-50h20V446z M50,126c-16.542,0-30-13.458-30-30s13.458-30,30-30 + s30,13.458,30,30S66.542,126,50,126z M123,425h-23v-19h23V425z M123,386h-23V247h23V386z M123,227h-23v-19.959 + c3.808,0.011,8.197,0.022,12.244,0.022c4.378,0,8.351-0.012,10.756-0.046V227z M186,425h-43v-19h43V425z M186,276v40v70h-43 + V244.817c16.149-3.513,31.29-11.046,43-21.321V276z M186,194.605c-2.373,2.327-4.659,4.785-6.815,7.365 + c-8.521,10.2-21.771,18.214-36.185,22.224v-21.525c6.846-3.098,13.007-7.736,17.806-13.49c7.006-8.391,15.56-15.917,25.194-22.232 + V194.605z M206,156.285c12.757-5.415,26.344-8.765,40-9.871v20.099c-14.162,1.416-27.777,5.83-40,12.895V156.285z M206,203.562 + c11.538-9.26,25.37-15.088,40-16.922V266h-40V203.562z M246,425h-40v-19h40V425z M246,386h-40v-60h40V386z M306,425h-40v-19h40 + V425z M306,386h-40v-60h40V386z M306,306H206v-20h100V306z M306,266h-40v-79.359c14.617,1.835,28.449,7.664,40,16.924V266z + M306,179.418c-12.232-7.071-25.847-11.487-40-12.904v-20.1c13.651,1.106,27.238,4.454,40,9.865V179.418z M369,425h-43v-19h43V425 + z M369,386h-43v-70v-40v-52.635c11.722,10.137,26.674,17.329,43,20.634V386z M369,223.458 + c-14.663-3.788-27.83-11.575-36.517-21.887c-2.039-2.417-4.216-4.742-6.483-6.965v-27.672c9.465,6.201,17.88,13.567,24.789,21.767 + c4.64,5.496,10.324,11.234,18.211,14.57V223.458z M412,425h-23v-19h23V425z M412,386h-23V246h23V386z M412,226h-23v-19.856 + c5.683-0.048,15.526-0.088,23-0.113V226z M492,446h-60V146h20v50c0,5.522,4.478,10,10,10c5.522,0,10-4.478,10-10v-50h20V446z + M462,126c-16.542,0-30-13.458-30-30s13.458-30,30-30s30,13.458,30,30S478.542,126,462,126z`}))}function oge(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M391,362h77.417L440.989,58.467C438.075,26.229,409.37,0,377,0H135c-32.37,0-61.075,26.229-63.989,58.467L43.583,362H121v30 H91v120h330V392h-30V362z M135,30h242c16.963,0,32.584,14.273,34.11,31.167L416.427,120H95.573l5.316-58.833 C102.416,44.273,118.037,30,135,30z M92.862,150h326.275l16.446,182H76.416L92.862,150z M151,362h210v30H151V362z M241,422v60h-45 v-60H241z M271,422h45v60h-45V422z M121,422h45v60h-45V422z M391,482h-45v-60h45V482z"}))}function Mge(i){return n.createElement("svg",{width:170,height:170,viewBox:"-20 -20 190 190",...i},n.createElement("path",{className:"path stOff",d:"M0 109v36.3c0 5.3 3.7 9.7 8.3 9.7h50.1v-23h37v23H153V84H0l28.4-29V13h18.1v24l30-37 66.2 69",fill:"none"}))}function d4e(i){return n.createElement("svg",{viewBox:"0 0 511.448 511.448",...i},n.createElement("path",{d:"M344.556 112.216C318.38 78.84 291.34 44.344 269.516 7.32c-5.76-9.76-21.824-9.76-27.552 0-21.856 37.024-48.896 71.52-75.072 104.896-53.056 67.68-103.168 131.616-103.168 207.232 0 105.888 86.112 192 192 192s192-86.112 192-192c0-75.616-50.112-139.552-103.168-207.232z",fill:"#2196f3"}),n.createElement("g",{fill:"#fafafa"},n.createElement("path",{d:"M207.724 287.448c-26.464 0-48-21.536-48-48s21.536-48 48-48 48 21.536 48 48-21.536 48-48 48zm0-64c-8.832 0-16 7.168-16 16s7.168 16 16 16 16-7.168 16-16-7.168-16-16-16zM303.724 447.448c-26.464 0-48-21.536-48-48s21.536-48 48-48 48 21.536 48 48-21.536 48-48 48zm0-64c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zM175.724 415.448a16.07 16.07 0 0 1-11.328-4.672c-6.24-6.24-6.24-16.384 0-22.624l160-160c6.24-6.24 16.384-6.24 22.624 0s6.24 16.384 0 22.624l-160 160a15.943 15.943 0 0 1-11.296 4.672z"})))}function nge(i){return n.createElement("svg",{viewBox:"-20 -20 190 190",...i},n.createElement("defs",null,n.createElement("filter",{id:"glow",x:"-5000%",y:"-5000%",width:"10000%",height:"10000%"},n.createElement("feFlood",{result:"flood",floodColor:"#70C5FF",floodOpacity:"1"}),n.createElement("feComposite",{in:"flood",result:"mask",in2:"SourceGraphic",operator:"in"}),n.createElement("feMorphology",{in:"mask",result:"dilated",operator:"dilate",radius:"2"}),n.createElement("feGaussianBlur",{in:"dilated",result:"blurred",stdDeviation:"5"}),n.createElement("feMerge",null,n.createElement("feMergeNode",{in:"blurred"}),n.createElement("feMergeNode",{in:"SourceGraphic"})))),n.createElement("path",{style:{stroke:"currentColor",fill:"none",strokeWidth:12,strokeLinejoin:"round",strokeMiterlimit:10},filter:i.isOn?"url(#glow)":"",className:"path",d:"M0,109v36.3c0,5.3,3.7,9.7,8.3,9.7h50.1v-23h37v23H153V84H0l28.4-29V13h18.1v24L76.5,0l66.2,69"}))}function ia(i){return n.createElement("svg",{viewBox:"0 0 508.16 508.16",...i},n.createElement("path",{d:"M504.18 13.67a3.924 3.924 0 0 0-.42.02H4a4 4 0 0 0-4 4v47.28a4 4 0 0 0 4 4h19.72l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.16a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h479.8a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.64-42.08h9.84a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h19.72a4 4 0 0 0 4-4V17.69a4 4 0 0 0-3.98-4.02zM99.08 486.49H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm26.8 378.24h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm.16-47.28h-18.96V68.97h18.96v39.28zm247.84 378.24h-240v-39.28h240v39.28zm-240-47.28v-39.28h239.68v39.28H133.88zm240-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm-240-47.28V68.97h239.84v39.28H133.88zm266.64 378.24h-18.64l-.32-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm.32-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm-18.96-47.28V68.97h18.8v39.28h-18.8zm63.56 8v39.28h-36.92v-39.28h36.92zm-36.76-8V68.97h36.92v39.28h-36.92zm36.76 55.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.76l-.16-39.28h36.92zm42.68 181.12h-79.44v-39.28h66.96l12.48 39.28zm0-47.28h-79.44v-39.28h66.96l12.48 39.28zm0-47.28h-79.44v-39.28h36.92v17.44a4 4 0 0 0 8 0v-17.44h22.04l12.48 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6V68.97h22.04l12.56 39.28zm11.56-47.28H8V21.69h491.76l-.08 39.28z",fill:"currentColor"}),n.createElement("path",{d:"M454.32 37.33h-13.76a4 4 0 0 0 0 8h13.76a4 4 0 0 0 0-8zM414.84 37.33h-96a4 4 0 0 0 0 8h96a4 4 0 0 0 0-8z",fill:"currentColor"}))}function age(i){return n.createElement("svg",{viewBox:"0 0 230 230",...i},n.createElement("ellipse",{fill:"#2979ff",stroke:"#2979ff",strokeWidth:"1.5",cx:"112.9",cy:"114",rx:"112",ry:"112"}),n.createElement("ellipse",{fill:"#40c4ff",strokeWidth:"1.5",cx:"112.900006",cy:"113.999995",rx:"73.684216",ry:"73.684216",stroke:"#40c4ff"}),n.createElement("ellipse",{fill:"#ffffff",strokeWidth:"1.5",cx:"112.900003",cy:"114",rx:"33.578948",ry:"33.578948",stroke:"#ffffff"}))}function cge(i){return n.createElement("svg",{viewBox:"0 0 24.986 24.986",...i},n.createElement("g",{fill:"currentColor"},n.createElement("path",{fill:"currentColor",d:"M17.548 17.961l-.771-.769s-1.225 1.305-1.304 1.305c-.081 0-1.308-1.305-1.308-1.305l-.771.769s1.306 1.198 1.306 1.308c0 .106-1.306 1.308-1.306 1.308l.771.767s1.217-1.305 1.308-1.305c.089 0 1.304 1.305 1.304 1.305l.771-.767s-1.307-1.218-1.307-1.308c.001-.092 1.307-1.308 1.307-1.308z"}),n.createElement("path",{fill:"currentColor",d:"M15.472 14.435a4.832 4.832 0 0 0 0 9.661 4.83 4.83 0 0 0 0-9.661zm0 8.913a4.083 4.083 0 0 1-4.081-4.082 4.079 4.079 0 0 1 4.081-4.081 4.083 4.083 0 0 1 0 8.163z"}),n.createElement("circle",{fill:"currentColor",cx:10.06,cy:2.207,r:2.207}),n.createElement("path",{fill:"currentColor",d:"M10.2 20.476v3.26l.009.009a1.25 1.25 0 0 0 1.251 1.238c.643 0 1.167-.487 1.236-1.11-.083-.052-.173-.093-.253-.146a5.425 5.425 0 0 1-2.243-3.251z"}),n.createElement("path",{fill:"currentColor",d:"M12.455 14.724c.08-.057.168-.097.253-.146l-.002-6.687h.606V12.945c0 .516.417.932.932.932a.931.931 0 0 0 .933-.932V7.51c-.206-2.42-3.013-2.385-3.013-2.385H7.74c-3.168.06-3.055 2.385-3.055 2.385l-.001 5.428h.003c-.002.014-.002.025-.002.04a.932.932 0 1 0 1.861 0l-.001-.04h.001V7.914h.584l-.007 15.811c0 .693.562 1.261 1.257 1.261s1.257-.565 1.257-1.261V13.523h.562v4.457a5.414 5.414 0 0 1 2.256-3.256z"})))}function z4e(i){return n.createElement("svg",{viewBox:"0 0 63.907 63.907",fill:"currentColor",...i},n.createElement("circle",{fill:"currentColor",cx:30.515,cy:6.136,r:6.136}),n.createElement("path",{fill:"currentColor",d:"M47.399 27.455C42.346 24.53 38.2 20.579 34.71 15.931c-2.193-3.084-7.991-2.923-10.347-.097-3.584 3.487-6.625 7.081-9.037 10.677a3.209 3.209 0 0 0 5.329 3.573 54.205 54.205 0 0 1 3.59-4.734c-.051 3.333.116 9.347.2 12.05.028.9-.177 1.78-.595 2.579-3.308 6.317-5.424 12.294-7.572 19.606a3.37 3.37 0 1 0 6.465 1.901c1.982-6.742 3.897-12.201 6.884-17.981.152.006.304.006.458-.001 1.907 5.69 3.815 11.383 5.725 17.073 1.387 4.147 7.822 1.993 6.431-2.155-2.087-6.221-4.171-12.439-6.251-18.659-.121-.357-.414-1.755-.455-2.211-.344-3.832-.469-7.652-.432-11.477a51.027 51.027 0 0 0 9.782 7.328c3.597 2.088 6.063-3.891 2.514-5.948z"}))}function h4e(i){return n.createElement("svg",{viewBox:"0 0 285 285",...i},n.createElement("g",null,n.createElement("path",{fill:"currentColor",d:`M88.4,87.996c2.525-2.146,2.832-5.933,0.687-8.458C82.801,72.144,79.34,62.719,79.34,53c0-22.607,18.393-41,41-41 + c22.607,0,41,18.393,41,41c0,9.729-3.467,19.161-9.761,26.557c-2.148,2.523-1.843,6.311,0.681,8.458 + c1.129,0.961,2.511,1.431,3.886,1.431c1.698,0,3.386-0.717,4.572-2.111C168.858,77.77,173.34,65.576,173.34,53 + c0-29.225-23.775-53-53-53c-29.225,0-53,23.775-53,53c0,12.563,4.476,24.748,12.602,34.31C82.089,89.835,85.873,90.141,88.4,87.996 + z`}),n.createElement("path",{fill:"currentColor",d:`M120.186,41.201c13.228,0,23.812,8.105,27.313,19.879c0.761-2.562,1.176-5.271,1.176-8.08 + c0-15.649-12.685-28.335-28.335-28.335c-15.648,0-28.334,12.686-28.334,28.335c0,2.623,0.364,5.16,1.031,7.571 + C96.691,49.076,107.152,41.201,120.186,41.201z`}),n.createElement("path",{fill:"currentColor",d:`M234.21,169.856c-3.769-22.452-19.597-26.04-27.034-26.462c-2.342-0.133-4.516-1.32-5.801-3.282 + c-5.388-8.225-12.609-10.4-18.742-10.4c-4.405,0-8.249,1.122-10.449,1.932c-0.275,0.102-0.559,0.15-0.837,0.15 + c-0.87,0-1.701-0.47-2.163-1.262c-5.472-9.387-13.252-11.809-19.822-11.809c-3.824,0-7.237,0.82-9.548,1.564 + c-0.241,0.077-0.764,0.114-1.001,0.114c-1.256,0-2.637-1.03-2.637-2.376V69.753c0-11.035-8.224-16.552-16.5-16.552 + c-8.276,0-16.5,5.517-16.5,16.552v84.912c0,4.989-3.811,8.074-7.918,8.074c-2.495,0-4.899-1.138-6.552-3.678l-7.937-12.281 + c-3.508-5.788-8.576-8.188-13.625-8.189c-11.412-0.001-22.574,12.258-14.644,25.344l62.491,119.692 + c0.408,0.782,1.225,1.373,2.108,1.373h87.757c1.253,0,2.289-1.075,2.365-2.325l2.196-35.816c0.025-0.413,0.162-0.84,0.39-1.186 + C231.591,212.679,237.828,191.414,234.21,169.856z`})))}function uge(i){return n.createElement("svg",{viewBox:"0 0 384.754 384.754",...i},n.createElement("path",{fill:"currentColor",d:`M214.86,374.508c0,4.971-4.029,9-9,9h-65.01c-4.971,0-9.223-3.57-9.223-8.541V288.87c0-4.971,4.252-9.361,9.223-9.361 + h99.585c4.971,0,9,4.029,9,9s-4.029,9-9,9h-90.808v68h56.232C210.83,365.508,214.86,369.538,214.86,374.508z M136.65,115.508h10 + c4.971,0,9-4.029,9-9s-4.029-9-9-9h-10c-4.971,0-9,4.029-9,9S131.679,115.508,136.65,115.508z M180.947,115.508h10 + c4.97,0,9-4.029,9-9s-4.029-9-9-9h-10c-4.971,0-9,4.029-9,9S175.976,115.508,180.947,115.508z M152.056,142.508c0,4.971,4.029,9,9,9 + h5c4.971,0,9-4.029,9-9s-4.029-9-9-9h-5C156.086,133.508,152.056,137.538,152.056,142.508z M127.875,220.987 + c6.952,11.05,21.072,18.33,36.689,18.33c15.619,0,29.74-7.282,36.691-18.332c12.326,0.961,24.51,6.008,33.264,13.909 + c3.69,3.329,9.381,3.038,12.712-0.651c3.33-3.69,3.038-9.536-0.651-12.866c-12.984-11.718-31.526-18.868-49.6-18.868h-1.237 + c-3.845,0-7.265,2.597-8.513,6.232c-2.119,6.173-10.584,12.499-22.666,12.499c-12.08,0-20.546-6.366-22.667-12.539 + c-1.249-3.636-4.668-6.193-8.512-6.193h-1.236c-30.601,0-59.207,19.216-65.123,43.549L40.6,354.841 + c-0.119,0.442-0.205,0.936-0.255,1.402c-0.124,1.119-0.033,2.244,0.243,3.289c0.245,0.932,0.635,1.814,1.145,2.602 + c1.056,1.635,2.77,2.936,4.713,3.615c0.342,0.119,0.181,0.45,1.181,0.528v0.23c0,0-0.258,0-0.257,0c0.646,0,1.293,0.107,1.93,0.107 + c0.089,0,0.177-0.107,0.266-0.107h54.025c4.971,0,9-4.029,9-9s-4.029-9-9-9H60.743l23.773-97.92 + C88.17,235.565,107.472,222.596,127.875,220.987z M189.97,248.508c-4.971,0-9,4.029-9,9s4.029,9,9,9h31.78c4.971,0,9-4.029,9-9 + s-4.029-9-9-9H189.97z M74.842,100.475c-0.417-4.952,3.259-9.306,8.212-9.723c1.519-0.126,2.98,0.13,4.292,0.692 + c1.424-6.374,3.641-12.519,6.628-18.336c-0.344-0.283-0.681-0.594-0.982-0.93c-0.329-0.366-0.648-0.756-0.91-1.164 + c-0.819-1.275-1.455-2.772-1.455-4.38c0-0.002,0-0.005,0-0.008s0-0.007,0-0.01c0-0.218,0-0.437,0-0.656c0-0.003,0-0.006,0-0.009 + c0-0.001,0-0.003,0-0.004c0-0.301,0.07-0.51,0.105-0.802C94.772,27.947,126.077,0,163.556,0c34.778,0,64.202,23.508,71.492,57.508 + h24.149c4.971,0,9,4.029,9,9s-4.029,9-9,9h-25.056c2.481,5,4.362,10.481,5.62,16.11c1.31-0.562,2.771-0.992,4.293-0.866 + c4.953,0.417,8.631,4.77,8.215,9.723l-1.17,13.92c-0.417,4.952-4.763,8.622-9.723,8.215c-0.326-0.027-0.646-0.072-0.961-0.133 + c-6.549,36.481-38.522,64.25-76.86,64.25c-38.337,0-70.31-27.769-76.858-64.25c-0.314,0.061-0.635,0.104-0.961,0.133 + c-4.945,0.421-9.306-3.261-9.723-8.215L74.842,100.475z M110.646,57.508h105.822c-6.838-23-28.063-39.334-52.912-39.334 + C138.708,18.174,117.483,34.508,110.646,57.508z M103.471,108.857c0,33.132,26.955,59.957,60.086,59.957 + c33.132,0,60.087-26.868,60.087-60c0-12.091-3.508-23.305-10.183-33.305h-99.809C106.977,85.508,103.471,96.765,103.471,108.857z + M344.428,256.584c-0.107-1.239-0.475-2.471-1.114-3.609c-0.174-0.312-0.367-0.614-0.579-0.905l-8.921-12.739 + c-2.851-4.072-8.461-5.063-12.534-2.21c-4.071,2.851-5.062,8.463-2.21,12.534l6.039,8.625l-5.512,11.819 + c-0.003,0.008-0.007,0.015-0.01,0.022l-5.523,12.046l-13.016,1.341c-0.002,0-0.004,0-0.006,0l-13.012,0.936l-7.494-10.805 + c-0.004-0.005-0.007-0.059-0.011-0.064l-7.484-10.715l11.044-23.697l10.49-0.924c4.952-0.434,8.615-4.802,8.182-9.753 + c-0.434-4.952-4.813-8.609-9.75-8.183l-15.495,1.356c-0.355,0.024-0.708,0.069-1.057,0.135c-1.297,0.243-2.487,0.761-3.515,1.485 + c-1.014,0.713-1.893,1.644-2.556,2.764c-0.182,0.306-0.345,0.621-0.49,0.947l-15.289,32.79c-0.16,0.328-0.3,0.664-0.419,1.006 + c-0.43,1.233-0.575,2.51-0.465,3.749c0.108,1.236,0.474,2.463,1.11,3.599c0.176,0.314,0.37,0.62,0.583,0.912l10.376,14.817 + c0.005,0.007,0.01,0.014,0.015,0.021l7.479,10.685l-36.083,77.381c-2.101,4.505-0.151,9.86,4.354,11.961 + c1.23,0.573,2.524,0.845,3.798,0.845c3.39,0,6.636-1.924,8.163-5.198l36.082-77.146l13.012-0.902c0.002,0,0.004,0,0.006,0 + l18.021-1.813c0.358-0.024,0.714-0.188,1.064-0.256c1.292-0.243,2.477-0.817,3.501-1.539c1.014-0.711,1.891-1.669,2.555-2.786 + c0.185-0.309,0.351-0.644,0.497-0.975l7.644-16.398c0.001-0.002,0.002-0.008,0.003-0.009l7.644-16.396 + c0.159-0.326,0.299-0.66,0.417-1.001C344.392,259.102,344.538,257.825,344.428,256.584z`}))}function xr(i){return n.createElement("svg",{viewBox:"1 -10 511.99999 511",...i},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"M 405.5 150 C 405.5 232.566406 338.566406 299.5 256 299.5 C 173.433594 299.5 106.5 232.566406 106.5 150 C 106.5 67.433594 173.433594 0.5 256 0.5 C 338.566406 0.5 405.5 67.433594 405.5 150 Z M 405.5 150 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(25.882353%,75.294118%,88.627451%)",fillOpacity:1}}),n.createElement("path",{d:"M 512 342.921875 C 512 425.488281 445.066406 492.421875 362.5 492.421875 C 279.933594 492.421875 213 425.488281 213 342.921875 C 213 260.355469 279.933594 193.421875 362.5 193.421875 C 445.066406 193.421875 512 260.355469 512 342.921875 Z M 512 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(100%,81.568627%,38.039216%)",fillOpacity:1}}),n.createElement("path",{d:"M 220.746094 295.308594 C 232.050781 298.039062 243.855469 299.5 256 299.5 C 321.917969 299.5 377.871094 256.835938 397.753906 197.613281 C 386.449219 194.878906 374.644531 193.421875 362.5 193.421875 C 296.582031 193.421875 240.628906 236.085938 220.746094 295.308594 Z M 220.746094 295.308594 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(28.627451%,74.117647%,56.470588%)",fillOpacity:1}}),n.createElement("path",{d:"M 299 342.921875 C 299 425.488281 232.066406 492.421875 149.5 492.421875 C 66.933594 492.421875 0 425.488281 0 342.921875 C 0 260.355469 66.933594 193.421875 149.5 193.421875 C 232.066406 193.421875 299 260.355469 299 342.921875 Z M 299 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(98.039216%,43.921569%,69.803922%)",fillOpacity:1}}),n.createElement("path",{d:"M 114.246094 197.613281 C 134.128906 256.835938 190.082031 299.5 256 299.5 C 268.144531 299.5 279.949219 298.039062 291.253906 295.308594 C 271.371094 236.085938 215.417969 193.421875 149.5 193.421875 C 137.355469 193.421875 125.550781 194.878906 114.246094 197.613281 Z M 114.246094 197.613281 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(68.627451%,48.235294%,77.647059%)",fillOpacity:1}}),n.createElement("path",{d:"M 213 342.921875 C 213 383.800781 229.414062 420.839844 256 447.828125 C 282.585938 420.839844 299 383.800781 299 342.921875 C 299 302.042969 282.585938 265.003906 256 238.015625 C 229.414062 265.003906 213 302.042969 213 342.921875 Z M 213 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(93.72549%,38.039216%,13.333333%)",fillOpacity:1}}),n.createElement("path",{d:"M 291.253906 295.320312 C 279.949219 298.046875 268.140625 299.5 256 299.5 C 243.859375 299.5 232.050781 298.046875 220.746094 295.320312 C 228.058594 273.542969 240.242188 254.015625 256 238.015625 C 271.757812 254.015625 283.941406 273.542969 291.253906 295.320312 Z M 291.253906 295.320312 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(100%,100%,100%)",fillOpacity:1}})))}function I4e(i){return n.createElement("svg",{width:32,height:32,viewBox:"0 0 365.445 365.445",...i},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"M146.7 162.775h-26.8a6.655 6.655 0 0 0-6.647 6.647v26.602a6.653 6.653 0 0 0 6.647 6.646h26.8a6.654 6.654 0 0 0 6.647-6.646v-26.602a6.655 6.655 0 0 0-6.647-6.647zM245.547 162.775h-26.801a6.653 6.653 0 0 0-6.646 6.647v26.602a6.652 6.652 0 0 0 6.646 6.646h26.801a6.654 6.654 0 0 0 6.646-6.646v-26.602a6.655 6.655 0 0 0-6.646-6.647z"})),n.createElement("path",{d:"M345.445 1.204H20c-11.046 0-20 8.954-20 20v323.037c0 11.045 8.954 20 20 20h325.445c11.045 0 20-8.955 20-20V21.204c0-11.045-8.953-20-20-20zM182.723 287.66c-57.955 0-104.937-46.981-104.937-104.937 0-57.957 46.982-104.938 104.937-104.938S287.66 124.767 287.66 182.723 240.678 287.66 182.723 287.66z",fill:"currentColor"}))}function w4e(i){return n.createElement("svg",{width:32,height:32,viewBox:"0 0 45.659 45.659",...i},n.createElement("path",{fill:"currentColor",d:"M30.619 27.309V7.781C30.619 3.49 27.124 0 22.833 0c-4.29 0-7.785 3.491-7.785 7.78v19.528a10.722 10.722 0 0 0-3.05 7.522c0 5.972 4.857 10.828 10.829 10.828 5.97 0 10.834-4.856 10.834-10.828 0-2.918-1.141-5.572-3.042-7.521zM22.825 42.66c-4.316 0-7.824-3.512-7.824-7.828 0-2.527 1.174-4.779 3.077-6.211V16.237h3.372c.552 0 1-.47 1-1.022 0-.553-.448-1.021-1-1.021h-3.372v-2.466h3.372c.552 0 1-.434 1-.986a.989.989 0 0 0-1-.986h-3.372V7.78c0-2.636 2.119-4.78 4.754-4.78 2.637 0 4.756 2.144 4.756 4.781v20.871c1.903 1.434 3.047 3.671 3.047 6.18 0 4.316-3.494 7.828-7.81 7.828z"}),n.createElement("path",{fill:"currentColor",d:"M25.334 30.463V18.632h-5.002v11.831a4.973 4.973 0 0 0-2.537 4.369 5.038 5.038 0 0 0 5.038 5.046 5.034 5.034 0 0 0 5.034-5.046c0-1.866-.982-3.495-2.533-4.369z"}))}function lge(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M341.333 288.593V85.333C341.333 38.205 303.128 0 256 0s-85.333 38.205-85.333 85.333v203.259C144.48 312.03 128 346.091 128 384c0 70.693 57.308 128 128 128s128-57.307 128-128c0-37.909-16.48-71.97-42.667-95.407zM256 469.333c-47.128 0-85.333-38.205-85.333-85.333 0-24.637 10.441-47.492 28.455-63.615l14.212-12.72V85.333c0-23.564 19.103-42.667 42.667-42.667s42.667 19.102 42.667 42.667v222.332l14.212 12.72c18.014 16.123 28.455 38.977 28.455 63.615-.002 47.128-38.207 85.333-85.335 85.333z"}),n.createElement("path",{fill:"currentColor",d:"M234.667 170.667h42.667v256h-42.667z"}),n.createElement("circle",{fill:"currentColor",cx:256,cy:384,r:64}))}function C4e(i){return n.createElement("svg",{viewBox:"0 0 297 297",...i},n.createElement("g",null,n.createElement("path",{fill:"currentColor",d:"m243.404,138.042c-5.775,0-10.458,4.683-10.458,10.458 0,46.564-37.883,84.446-84.446,84.446s-84.446-37.882-84.446-84.446 37.883-84.446 84.446-84.446c5.775,0 10.458-4.683 10.458-10.458s-4.683-10.457-10.458-10.457c-58.097,0-105.361,47.265-105.361,105.361s47.264,105.361 105.361,105.361 105.361-47.264 105.361-105.361c0-5.775-4.681-10.458-10.457-10.458z"}),n.createElement("path",{fill:"currentColor",d:"m142.963,121.344l-20.272-30.41c-3.203-4.807-9.695-6.104-14.502-2.9-4.805,3.202-6.104,9.695-2.9,14.502l20.279,30.422c-3.015,4.436-4.78,9.787-4.78,15.543 0,15.281 12.432,27.713 27.713,27.713 15.281,0 27.713-12.432 27.713-27.713 0-15.281-12.432-27.713-27.713-27.713-1.897-0.001-3.749,0.191-5.538,0.556zm12.335,27.156c0,3.748-3.05,6.798-6.798,6.798s-6.798-3.05-6.798-6.798 3.05-6.798 6.798-6.798 6.798,3.05 6.798,6.798z"}),n.createElement("path",{fill:"currentColor",d:"M148.5,0C66.617,0,0,66.617,0,148.5S66.617,297,148.5,297S297,230.383,297,148.5S230.383,0,148.5,0z M158.958,275.653 v-6.366c0-5.775-4.683-10.458-10.458-10.458c-5.775,0-10.458,4.683-10.458,10.458v6.366 c-62.027-5.056-111.64-54.668-116.695-116.695h6.366c5.775,0,10.458-4.683,10.458-10.458s-4.683-10.458-10.458-10.458h-6.366 c5.056-62.027,54.668-111.64,116.695-116.695v6.366c0,5.775,4.683,10.458,10.458,10.458c5.775,0,10.458-4.683,10.458-10.458v-6.366 c62.027,5.056,111.64,54.668,116.695,116.695h-6.366c-5.775,0-10.458,4.683-10.458,10.458s4.683,10.458,10.458,10.458h6.366 C270.598,220.985,220.985,270.598,158.958,275.653z"})))}function Nge(i){return n.createElement("svg",{viewBox:"0 0 480 480",...i},n.createElement("g",null,n.createElement("path",{fill:"currentColor",d:`M472,304h-80v-8c0-4.418-3.582-8-8-8h-32c-4.418,0-8,3.582-8,8v8h-48v-48c0-4.418-3.582-8-8-8h-8v-24c0-4.418-3.582-8-8-8 + h-8v-16h8c4.418,0,8-3.582,8-8v-32c0-4.418-3.582-8-8-8h-8v-24h44.28c5.382-0.016,10.547,2.121,14.344,5.936l7.44,7.44 + c14.167,14.169,37.138,14.171,51.308,0.004c6.806-6.805,10.629-16.036,10.628-25.66V92.28 + c0.002-20.037-16.239-36.282-36.276-36.284c-9.625-0.001-18.855,3.822-25.66,10.628l-7.44,7.44 + c-3.797,3.815-8.962,5.952-14.344,5.936H264V56c0-4.418-3.582-8-8-8h-32c-4.418,0-8,3.582-8,8v24h-52.28 + c-5.382,0.016-10.547-2.121-14.344-5.936l-7.44-7.44c-14.167-14.169-37.138-14.171-51.308-0.004 + C83.822,73.425,79.999,82.655,80,92.28v23.44c-0.002,20.037,16.239,36.282,36.276,36.284c9.625,0.001,18.855-3.822,25.66-10.628 + l7.44-7.44c3.797-3.815,8.962-5.952,14.344-5.936H216v24h-8c-4.418,0-8,3.582-8,8v32c0,4.418,3.582,8,8,8h8v16h-8 + c-4.418,0-8,3.582-8,8v24h-8c-4.418,0-8,3.582-8,8v48h-48v-8c0-4.418-3.582-8-8-8H96c-4.418,0-8,3.582-8,8v8H8 + c-4.418,0-8,3.582-8,8v104c0,4.418,3.582,8,8,8h80c0,4.418,3.582,8,8,8h32c4.418,0,8-3.582,8-8v-8h208v8c0,4.418,3.582,8,8,8h32 + c4.418,0,8-3.582,8-8v-8h80c4.418,0,8-3.582,8-8v-96C480,307.582,476.418,304,472,304z M88,408H16v-88h72V408z M120,416h-16V304 + h16V416z M232,64h16v16h-16V64z M163.72,112c-9.628-0.028-18.866,3.798-25.656,10.624l-7.44,7.44 + c-7.928,7.918-20.774,7.909-28.692-0.02c-3.796-3.801-5.929-8.953-5.932-14.324V92.28c0.006-11.205,9.095-20.283,20.3-20.276 + c5.372,0.003,10.523,2.137,14.324,5.932l7.44,7.44c6.79,6.826,16.028,10.652,25.656,10.624h144.56 + c9.628,0.028,18.866-3.798,25.656-10.624l7.44-7.44c7.928-7.918,20.774-7.909,28.692,0.02c3.796,3.801,5.929,8.953,5.932,14.324 + v23.44c-0.006,11.205-9.095,20.283-20.3,20.276c-5.372-0.003-10.523-2.136-14.324-5.932l-7.44-7.44 + c-6.79-6.826-16.028-10.652-25.656-10.624H163.72z M248,128v24h-16v-24H248z M216,168h48v16h-48V168z M248,200v16h-16v-16H248z + M216,232h48v16h-48V232z M344,400H136v-80h56c4.418,0,8-3.582,8-8v-48h80v48c0,4.418,3.582,8,8,8h56V400z M376,416h-16V304h16 + V416z M464,400h-72v-80h72V400z`})))}function Lge(i){return n.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...i},n.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M258.5 185.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H258.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),n.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}))}function A4e(i){return n.createElement("svg",{viewBox:"0 0 361 361",...i},n.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M228.5 205.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H228.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),n.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M232.826 280.905c-.339 3.356-18.813-.782-20.919-1.06l-45.073-5.94-45.074-5.94-14.507-1.912c-1.456-.192-6.201-.055-6.412-2.147-.621-6.157 0-12.699 0-18.878v-43.5-82.076-5.13c0-2.551 5.184-1.015 6.412-.853l35.438 4.67 83.723 11.035c1.457.192 6.201.055 6.412 2.147.169 1.673 0 3.451 0 5.13v144.454c0 6.448 10 6.448 10 0V136.451v-5.13c0-7.619-6.137-10.793-12.673-11.655l-28.531-3.76-88.411-11.652-9.897-1.304c-6.555-.864-12.473 4.9-12.473 11.38v144.832c0 2.023-.071 4.04.132 6.053.717 7.111 6.606 9.563 12.759 10.374l76.827 10.125 39.896 5.259 9.697 1.278c7.063.931 12.011-4.778 12.673-11.346.648-6.415-9.358-6.352-9.999 0z",fill:"currentColor"}))}function Nu(i){return n.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...i},n.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9zM265.732 265.178c.584 2.887-1.629 5.228-4.942 5.228H103.457c-3.313 0-6.474-2.341-7.058-5.228L75.24 130.633c-.584-2.887 1.628-5.228 4.942-5.228h157.333c3.313 0 6.474 2.34 7.058 5.228l21.159 134.545z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M247.194 199.667h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5h-6.639c-2.726 0-5 2.274-5 5s2.275 5 5 5z",fill:"currentColor"}))}const m4e={"type-Device type":"Device type","type-airCondition":"Air conditioner","type-blind":"Blinds","type-blindButtons":"Blind controlled by buttons","type-button":"Button","type-buttonSensor":"Button with feedback","type-camera":"Camera","type-chart":"Chart","type-cie":"CIE color light","type-ct":"Color temperature","type-dimmer":"Dimmer","type-door":"Door","type-fireAlarm":"Fire alarm","type-floodAlarm":"Flood alarm","type-gate":"Gate","type-hue":"HUE light","type-humidity":"Humidity","type-illuminance":"Illuminance","type-image":"Image","type-info":"Information","type-instance":"Instance","type-light":"Light","type-location":"Position","type-locationOne":"Position as one state","type-lock":"Lock","type-media":"Media-player","type-motion":"Motion sensor","type-percentage":"Percentage","type-rgb":"RGB light","type-rgbSingle":"R,G,B light - single states","type-rgbwSingle":"R,G,B,W light - single states","type-slider":"Slider","type-socket":"Socket","type-temperature":"Temperature","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Vacuum cleaner","type-valve":"Valve","type-volume":"Volume","type-volumeGroup":"Volume group","type-warning":"Warning","type-weatherCurrent":"Current weather","type-weatherForecast":"Weather forecast","type-window":"Window sensor","type-windowTilt":"Window tilt sensor"},p4e={"type-Device type":"Gerätetyp","type-airCondition":"Klimaanlage","type-blind":"Jalousien","type-blindButtons":"Jalousie über Tasten gesteuert","type-button":"Taste","type-buttonSensor":"Taste mit Rückmeldung","type-camera":"Kamera","type-chart":"Diagramm","type-cie":"CIE Farblicht","type-ct":"Farbtemperatur","type-dimmer":"Dimmer","type-door":"Türsensor","type-fireAlarm":"Feueralarm","type-floodAlarm":"Wasseralarm","type-gate":"Tor-Steuerung","type-hue":"HUE-Licht","type-humidity":"Feuchtigkeit","type-illuminance":"Beleuchtungsstärke","type-image":"Bild","type-info":"Information","type-instance":"Instanz","type-light":"Licht","type-location":"Position","type-locationOne":"Position als ein Zustand","type-lock":"Schloss","type-media":"Mediaplayer","type-motion":"Bewegungssensor","type-percentage":"Prozentsatz","type-rgb":"RGB-Licht","type-rgbSingle":"R,G,B-Licht Einzelwerte","type-rgbwSingle":"R,G,B,W-Licht Einzelwerte","type-slider":"Schieberegler","type-socket":"Steckdose","type-temperature":"Temperatur","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Staubsauger","type-valve":"Ventil","type-volume":"Lautstärke","type-volumeGroup":"Lautstärke-Gruppe","type-warning":"Warnung","type-weatherCurrent":"Aktuelle Wetterlage","type-weatherForecast":"Wettervorhersage","type-window":"Fenstersensor","type-windowTilt":"Fensterkippung-Sensor"},O4e={"type-Device type":"Тип устройства","type-airCondition":"Кондиционер","type-blind":"Рольставни/Жалюзи","type-blindButtons":"Жалюзи управляющиеся кнопками","type-button":"Кнопка","type-buttonSensor":"Кнопка с обратной связью","type-camera":"Камера","type-chart":"Диаграмма","type-cie":"CIE свет","type-ct":"Цветовая температура","type-dimmer":"Диммер","type-door":"Датчик положения двери","type-fireAlarm":"Датчик дыма","type-floodAlarm":"Датчик затопления","type-gate":"Ворота","type-hue":"HUE свет","type-humidity":"Влажность","type-illuminance":"Освещенность","type-image":"Изображение","type-info":"Информация","type-instance":"Инстанция","type-light":"Свет","type-location":"Местоположение","type-locationOne":"Позиция в одном состоянии","type-lock":"Замок","type-media":"Медиа-плейер","type-motion":"Датчик движения","type-percentage":"Проценты","type-rgb":"RGB свет","type-rgbSingle":"R,G,B как отдельные значение","type-rgbwSingle":"R,G,B,W как отдельные значение","type-slider":"Ползунок","type-socket":"Розетка","type-temperature":"Температура","type-thermostat":"Термостат","type-url":"URL","type-vacuumCleaner":"Пылесос","type-valve":"Вентиль","type-volume":"Громкость","type-volumeGroup":"Группа громкости","type-warning":"Предупреждение","type-weatherCurrent":"Актуальная погода","type-weatherForecast":"Прогноз погоды","type-window":"Датчик открытия окна","type-windowTilt":"Датчик наклона окна"},E4e={"type-Device type":"Tipo de dispositivo","type-airCondition":"Ar condicionado","type-blind":"persianas","type-blindButtons":"Persiana controlada por botões","type-button":"botão","type-buttonSensor":"Sensor de botão","type-camera":"câmera","type-chart":"Gráfico","type-cie":"Luz colorida CIE","type-ct":"Temperatura de cor","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"alarme de incêndio","type-floodAlarm":"alarme de inundação","type-gate":"portão","type-hue":"Luz HUE","type-humidity":"umidade","type-illuminance":"Iluminância","type-image":"imagem","type-info":"informação","type-instance":"exemplo","type-light":"luz","type-location":"localização","type-locationOne":"Posição como um estado","type-lock":"trancar","type-media":"mídia","type-motion":"movimento","type-percentage":"Percentagem","type-rgb":"Luz RGB","type-rgbSingle":"Luz RGB única","type-rgbwSingle":"RGBW como valor único","type-slider":"controle deslizante","type-socket":"soquete","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirador de pó","type-valve":"válvula","type-volume":"volume","type-volumeGroup":"grupo de volume","type-warning":"aviso","type-weatherCurrent":"clima atual","type-weatherForecast":"previsão do tempo","type-window":"janela","type-windowTilt":"inclinação da janela"},_4e={"type-Device type":"Typ urządzenia","type-airCondition":"Klimatyzator","type-blind":"żaluzje","type-blindButtons":"Roleta sterowana przyciskami","type-button":"przycisk","type-buttonSensor":"Czujnik przycisku","type-camera":"kamera","type-chart":"Wykres","type-cie":"Światło kolorowe CIE","type-ct":"Temperatura barwowa","type-dimmer":"opornik","type-door":"drzwi","type-fireAlarm":"alarm pożarowy","type-floodAlarm":"alarm przeciwpowodziowy","type-gate":"brama","type-hue":"Światło HUE","type-humidity":"wilgotność","type-illuminance":"Natężenie oświetlenia","type-image":"obraz","type-info":"Informacje","type-instance":"przykład","type-light":"światło","type-location":"lokalizacja","type-locationOne":"Pozycja jako państwa","type-lock":"zamek","type-media":"głoska bezdźwięczna","type-motion":"ruch","type-percentage":"Procent","type-rgb":"Światło RGB","type-rgbSingle":"Pojedyncze światło RGB","type-rgbwSingle":"RGBW jako pojedyncza wartość","type-slider":"suwak","type-socket":"gniazdo","type-temperature":"temperatura","type-thermostat":"termostat","type-url":"Adres URL","type-vacuumCleaner":"Odkurzacz","type-valve":"zawór","type-volume":"tom","type-volumeGroup":"grupa woluminów","type-warning":"ostrzeżenie","type-weatherCurrent":"aktualna pogoda","type-weatherForecast":"prognoza pogody","type-window":"okno","type-windowTilt":"pochylenie okna"},f4e={"type-Device type":"Type d'appareil","type-airCondition":"Climatiseur","type-blind":"stores","type-blindButtons":"Store commandé par boutons","type-button":"bouton","type-buttonSensor":"Capteur de bouton","type-camera":"caméra","type-chart":"Graphique","type-cie":"lumière colorée CIE","type-ct":"Température de couleur","type-dimmer":"variateur","type-door":"porte","type-fireAlarm":"alarme incendie","type-floodAlarm":"alarme d'inondation","type-gate":"grille","type-hue":"Lumière HUE","type-humidity":"humidité","type-illuminance":"Éclairement","type-image":"image","type-info":"informations","type-instance":"exemple","type-light":"lumière","type-location":"emplacement","type-locationOne":"Position en tant qu'État","type-lock":"verrouillage","type-media":"médias","type-motion":"mouvement","type-percentage":"Pourcentage","type-rgb":"lumière RVB","type-rgbSingle":"Lumière RVB simple","type-rgbwSingle":"RGBW comme valeur unique","type-slider":"curseur","type-socket":"douille","type-temperature":"température","type-thermostat":"thermostat","type-url":"URL","type-vacuumCleaner":"Aspirateur","type-valve":"soupape","type-volume":"volume","type-volumeGroup":"groupe de volumes","type-warning":"avertissement","type-weatherCurrent":"météo actuelle","type-weatherForecast":"prévisions météorologiques","type-window":"fenêtre","type-windowTilt":"inclinaison de la fenêtre"},S4e={"type-Device type":"Tipo di dispositivo","type-airCondition":"Condizionatore d'aria","type-blind":"tende","type-blindButtons":"Tenda controllata da pulsanti","type-button":"pulsante","type-buttonSensor":"Sensore del pulsante","type-camera":"telecamera","type-chart":"Grafico","type-cie":"Luce colorata CIE","type-ct":"Temperatura del colore","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"allarme antincendio","type-floodAlarm":"allarme allagamento","type-gate":"cancello","type-hue":"Luce HUE","type-humidity":"umidità","type-illuminance":"Illuminamento","type-image":"immagine","type-info":"informazioni","type-instance":"esempio","type-light":"leggero","type-location":"posizione","type-locationOne":"Posizione come stato","type-lock":"serratura","type-media":"media","type-motion":"movimento","type-percentage":"Percentuale","type-rgb":"luce RGB","type-rgbSingle":"Luce RGB singola","type-rgbwSingle":"RGBW come valore singolo","type-slider":"cursore","type-socket":"PRESA","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirapolvere","type-valve":"valvola","type-volume":"volume","type-volumeGroup":"gruppo di volumi","type-warning":"avvertimento","type-weatherCurrent":"meteo attuale","type-weatherForecast":"previsioni del tempo","type-window":"finestra","type-windowTilt":"inclinazione della finestra"},x4e={"type-Device type":"Apparaattype","type-airCondition":"Airconditioner","type-blind":"jaloezieën","type-blindButtons":"Jaloezie bediend door knoppen","type-button":"knop","type-buttonSensor":"Knopsensor","type-camera":"camera","type-chart":"Grafiek","type-cie":"CIE-kleurenlicht","type-ct":"Kleurtemperatuur","type-dimmer":"dimmer","type-door":"deur","type-fireAlarm":"brandalarm","type-floodAlarm":"overstromingsalarm","type-gate":"hek","type-hue":"HUE-licht","type-humidity":"vochtigheid","type-illuminance":"Verlichtingssterkte","type-image":"afbeelding","type-info":"informatie","type-instance":"aanleg","type-light":"licht","type-location":"locatie","type-locationOne":"Positie als staat","type-lock":"slot","type-media":"media","type-motion":"beweging","type-percentage":"Percentage","type-rgb":"RGB-licht","type-rgbSingle":"RGB-licht enkel","type-rgbwSingle":"RGBW als enkele waarde","type-slider":"schuifregelaar","type-socket":"stopcontact","type-temperature":"temperatuur","type-thermostat":"thermostaat","type-url":"URL","type-vacuumCleaner":"Stofzuiger","type-valve":"ventiel","type-volume":"volume","type-volumeGroup":"volumegroep","type-warning":"waarschuwing","type-weatherCurrent":"huidige weersomstandigheden","type-weatherForecast":"weersvoorspelling","type-window":"raam","type-windowTilt":"raamkanteling"},k4e={"type-Device type":"Тип пристрою","type-airCondition":"Кондиціонер","type-blind":"жалюзі","type-blindButtons":"Штора керується кнопками","type-button":"кнопку","type-buttonSensor":"Датчик кнопки","type-camera":"камера","type-chart":"Діаграма","type-cie":"Кольорове світло CIE","type-ct":"Колірна температура","type-dimmer":"диммер","type-door":"двері","type-fireAlarm":"пожежна сигналізація","type-floodAlarm":"сигналізація про повінь","type-gate":"ворота","type-hue":"світло HUE","type-humidity":"вологість","type-illuminance":"Освітленість","type-image":"зображення","type-info":"інформація","type-instance":"екземпляр","type-light":"світло","type-location":"розташування","type-locationOne":"Позиція як держави","type-lock":"замок","type-media":"ЗМІ","type-motion":"руху","type-percentage":"Відсоток","type-rgb":"RGB світло","type-rgbSingle":"Одиночне світло RGB","type-rgbwSingle":"RGBW як одне значення","type-slider":"повзунок","type-socket":"гніздо","type-temperature":"температура","type-thermostat":"термостат","type-url":"URL","type-vacuumCleaner":"Пилосос","type-valve":"клапан","type-volume":"обсяг","type-volumeGroup":"група обсягів","type-warning":"УВАГА","type-weatherCurrent":"поточна погода","type-weatherForecast":"прогноз погоди","type-window":"вікно","type-windowTilt":"нахил вікна"},Y4e={"type-Device type":"设备类型","type-airCondition":"空调","type-blind":"百叶窗","type-blindButtons":"按钮控制百叶窗","type-button":"按钮","type-buttonSensor":"按钮传感器","type-camera":"相机","type-chart":"图表","type-cie":"CIE色光","type-ct":"色温","type-dimmer":"调光器","type-door":"门","type-fireAlarm":"火灾报警","type-floodAlarm":"洪水警报","type-gate":"门","type-hue":"色调灯","type-humidity":"湿度","type-illuminance":"照度","type-image":"图像","type-info":"信息","type-instance":"实例","type-light":"光","type-location":"地点","type-locationOne":"作为一个国家的地位","type-lock":"锁","type-media":"媒体","type-motion":"运动","type-percentage":"百分比","type-rgb":"RGB灯","type-rgbSingle":"RGB灯单","type-rgbwSingle":"RGBW 作为单一值","type-slider":"滑块","type-socket":"插座","type-temperature":"温度","type-thermostat":"恒温器","type-url":"网址","type-vacuumCleaner":"吸尘器","type-valve":"阀门","type-volume":"体积","type-volumeGroup":"卷组","type-warning":"警告","type-weatherCurrent":"当前天气","type-weatherForecast":"天气预报","type-window":"窗户","type-windowTilt":"窗户倾斜"};let ra=!1;function Lu(){ra||(ra=!0,D.extendTranslations({en:m4e,de:p4e,ru:O4e,pt:E4e,pl:_4e,fr:f4e,it:S4e,nl:x4e,uk:k4e,"zh-cn":Y4e}))}const oa={[B.Types.airCondition]:B0e,[B.Types.blind]:ia,[B.Types.blindButtons]:ia,[B.Types.button]:h4e,[B.Types.buttonSensor]:N4e,[B.Types.camera]:S0e,[B.Types.chart]:O0e,[B.Types.image]:J0e,[B.Types.dimmer]:V0e,[B.Types.door]:y4e,[B.Types.fireAlarm]:ta,"sensor.alarm.fire":ta,[B.Types.floodAlarm]:sa,"sensor.alarm.flood":sa,[B.Types.gate]:D4e,[B.Types.humidity]:d4e,[B.Types.illuminance]:j4e,[B.Types.info]:R0e,[B.Types.light]:W0e,[B.Types.lock]:P0e,[B.Types.location]:U0e,[B.Types.locationOne]:M4e,[B.Types.media]:b0e,[B.Types.motion]:z4e,[B.Types.ct]:Hn,[B.Types.percentage]:Fn,[B.Types.rgb]:xr,[B.Types.rgbSingle]:xr,[B.Types.rgbwSingle]:g4e,[B.Types.hue]:Hn,[B.Types.cie]:xr,[B.Types.slider]:Fn,[B.Types.socket]:I4e,[B.Types.temperature]:w4e,[B.Types.thermostat]:C4e,[B.Types.vacuumCleaner]:T4e,[B.Types.volume]:Q0e,[B.Types.volumeGroup]:k0e,[B.Types.window]:A4e,[B.Types.windowTilt]:Nu,[B.Types.weatherCurrent]:qn,[B.Types.weatherForecast]:qn,[B.Types.warning]:Vn,[B.Types.unknown]:o4e,[B.Types.instance]:x0e,invalid:Vn,hub3:K0e,node:q0e,hub5:e4e,controller:r4e},Oi={width:32,height:32};function Q4e(i){const[e,t]=n.useState(!1);if(ye(()=>{i.title&&!e&&(Lu(),t(!0))},[i.title,e]),!e&&i.title)return n.createElement(W,{style:{...Oi,...i.style||void 0},className:i.className,sx:i.sx});const s=i.type||(i.src?Object.keys(oa).find(M=>i.src===M):void 0);if(!s&&i.src)return n.createElement(xe,{style:Oi,...i,title:i.title===!0?void 0:i.title,src:i.src});const r=s&&oa[s];if(!r)return s?n.createElement("span",{style:{...Oi,...i.style||void 0}},s[0].toUpperCase()):null;const o=n.createElement(r,{style:{...Oi,...i.style||void 0},onClick:i.onClick,className:i.className,sx:i.sx});return i.title?n.createElement(ae,{slotProps:{popper:{sx:{pointerEvents:"none"}}},title:i.title===!0?D.t(`type-${s}`):i.title},n.createElement("div",{style:{display:"flex"}},o)):o}const St={itemChildrenWrapper:{display:"flex",width:"100%",justifyContent:"space-between"},type:{marginTop:10},selectIcon:{paddingRight:8,verticalAlign:"middle",width:20,height:20},selectText:{verticalAlign:"middle"},iconWrapper:{display:"flex",alignItems:"center"},iconStyle:{width:16,height:16,margin:"0 3px"},emptyIcon:{width:16,height:16,margin:"0 3px"}};function jge(i){const[e,t]=n.useState({}),[s,r]=n.useState([]);return ye(()=>{const o={};Object.keys(B.Types).filter(a=>{var u,l;return(!i.supportedDevices||((u=i.supportedDevices)==null?void 0:u.includes(a)))&&!((l=i.unsupportedDevices)!=null&&l.includes(a))}).forEach(a=>o[a]=D.t(`type-${B.Types[a]}`));const M=Object.keys(o);M.sort((a,u)=>o[a]===o[u]?0:o[a].localeCompare(o[u],"de")),Lu(),r(M),t(o)},[i.supportedDevices,i.unsupportedDevices]),s?n.createElement(wt,{style:{...St.type,...i.style},sx:i.sx,variant:"standard",error:!!i.error},n.createElement(As,null,i.label||D.t("type-Device type")),n.createElement(Xe,{variant:"standard",disabled:!!i.disabled,value:i.value,onChange:o=>i.onChange(o.target.value)},s.map(o=>{var M;return n.createElement(te,{key:B.Types[o],value:B.Types[o]},n.createElement("div",{style:St.itemChildrenWrapper},n.createElement("div",null,n.createElement(Q4e,{type:B.Types[o],style:{...St.selectIcon,color:i.themeType==="dark"?"#FFFFFF":"#000"}}),n.createElement("span",{style:St.selectText},e[o])),(M=i.showApplications)!=null&&M.TYPE_OPTIONS[o]?n.createElement("div",{style:St.iconWrapper},Object.keys(i.showApplications.TYPE_OPTIONS[o]).map(a=>i.showApplications.TYPE_OPTIONS[o][a]?n.createElement(xe,{key:a,style:St.iconStyle,src:i.showApplications.ICONS_TYPE[a]}):n.createElement("div",{key:a,style:St.emptyIcon}))):null))}))):n.createElement(W,{style:{...St.type,...i.style},sx:i.sx})}function v4e(i){return U({attr:{version:"1",viewBox:"0 0 48 48",enableBackground:"new 0 0 48 48"},child:[{tag:"circle",attr:{fill:"#B2EBF2",cx:"32",cy:"24",r:"9"},child:[]},{tag:"path",attr:{fill:"#4DD0E1",d:"M32,12c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C44,17.4,38.6,12,32,12z M32,32 c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S36.4,32,32,32z"},child:[]},{tag:"g",attr:{fill:"#3F51B5"},child:[{tag:"polygon",attr:{points:"25.4,22 19.8,5.1 13.6,27.7 11.4,22 4,22 4,26 8.6,26 14.4,40.3 20.2,18.9 22.6,26 30,26 30,22"},child:[]},{tag:"circle",attr:{cx:"32",cy:"24",r:"4"},child:[]}]}]})(i)}function U4e(i){return U({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M4.428 2.727l3.335 3.335c-.486.07-.903.276-1.32.624L.886 12.383c-1.181 1.18-1.181 3.194 0 4.375a2.41 2.41 0 0 0 1.598.834l17.088 3.681-3.335-3.333c.486-.07.903-.278 1.32-.626l5.557-5.695c1.181-1.181 1.181-3.196 0-4.377a2.411 2.411 0 0 0-1.598-.833zM11.653 6.2c.694 0 1.25.486 1.25 1.18 0 .695-.486 1.251-1.181 1.251-.695 0-1.25-.485-1.25-1.18s.555-1.251 1.18-1.251zm1.51 3.792c.049-.006.088.046.088.098-.139.694-.695 1.181-1.39 1.181-.694 0-1.32-.487-1.46-1.112 0 0 .002-.07.071 0 .487.278.972.348 1.32.278.346 0 .833-.07 1.32-.416a.092.092 0 0 1 .05-.029zm.723 2.511c.058.013.06.106.06.158-.209.903-.973 1.666-1.946 1.666a2.167 2.167 0 0 1-2.084-1.528c-.07-.07 0-.138.138-.138.695.347 1.39.416 1.877.416.486 0 1.18-.14 1.875-.556.035-.017.06-.022.08-.018zm.597 3.018c.049-.013.087.09.087.195-.278 1.181-1.25 2.085-2.5 2.155-1.251 0-2.293-.835-2.57-1.946 0-.139.068-.278.207-.209.834.486 1.737.556 2.362.556s1.529-.208 2.362-.694c.018-.035.036-.053.052-.057z"},child:[]}]})(i)}function b4e(i){return U({attr:{version:"1.2",baseProfile:"tiny",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13 5l.855 3.42 3.389-.971 1.501 2.6-2.535 2.449 2.535 2.451-1.5 2.6-3.39-.971-.855 3.422h-3l-.855-3.422-3.39.971-1.501-2.6 2.535-2.451-2.534-2.449 1.5-2.6 3.39.971.855-3.42h3m0-2h-3c-.918 0-1.718.625-1.939 1.516l-.354 1.412-1.4-.4c-.184-.053-.369-.078-.552-.078-.7 0-1.368.37-1.731 1l-1.5 2.6c-.459.796-.317 1.802.342 2.438l1.047 1.011-1.048 1.015c-.66.637-.802 1.643-.343 2.438l1.502 2.6c.363.631 1.031 1 1.731 1 .183 0 .368-.025.552-.076l1.399-.401.354 1.415c.222.885 1.022 1.51 1.94 1.51h3c.918 0 1.718-.625 1.939-1.516l.354-1.414 1.399.4c.184.053.369.077.552.077.7 0 1.368-.37 1.731-1l1.5-2.6c.459-.796.317-1.8-.342-2.438l-1.047-1.013 1.047-1.013c.66-.637.801-1.644.342-2.438l-1.5-2.6c-.365-.631-1.031-1-1.732-1-.184 0-.368.025-.551.076l-1.4.401-.354-1.413c-.22-.884-1.02-1.509-1.938-1.509zM11.5 10.5c1.104 0 2 .895 2 2 0 1.104-.896 2-2 2s-2-.896-2-2c0-1.105.896-2 2-2m0-1c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3z"},child:[]}]})(i)}function $4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M7.707 17.707 13.414 12 7.707 6.293 6.293 7.707 10.586 12l-4.293 4.293zM15 6h2v12h-2z"},child:[]}]})(i)}function P4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M327.467 19.992c.748 14.94 2.317 51.268 2.59 98.76 3.474-.286 6.557-.381 9.72 1.08 18.04 8.345 27.243 29.326 27.026 50.506-.217 21.18-11.283 44.136-36.104 54.307a41.62 41.62 0 0 1-2.486.923c-3.408 80.504-12.307 166.37-33.754 225.5-6.876 15.831-17.029 29.217-26.828 40.94l55.27.422c20.676-12.19 32.041-27.395 36.32-46.407l17.558 3.954c-3.67 16.312-11.99 30.662-24.511 42.677l143.052 1.094c-5.13-14.524-16.16-46.501-20.357-70.217C451.89 293.171 450.15 45 450.025 19.992zM18.279 38.984l.881 18.725c17.856 12.047 32.035 23.91 45.969 35.527 12.887-11.156 2.404-29.725-5.82-39.091-13.668-5.346-27.335-10.467-41.03-15.16zM86.723 65.13c4.77 14.56 3.347 29.656-7.477 39.746 24.105 19.479 50.832 38.151 97.1 55.635 13.836-22.588 12.08-43.852-3.338-60.739-29.03-10.9-57.703-22.997-86.285-34.642zm-31.721 42.988V400h17.996V122.723c-6.187-4.856-12.114-9.73-17.996-14.606zm145.264 1.434c3.253 8.283 4.54 16.754 3.982 25.043-.765 11.35-4.673 22.135-10.545 32.095 16.926 5.691 36.192 11.248 58.451 16.655l2.604.633 1.834 1.953c9.223 9.826 22.535 17.206 35.469 21.006 12.933 3.8 25.473 3.655 31.814 1.056 18.024-7.385 24.773-22.363 24.932-37.84.152-14.822-7.069-28.554-15.479-33.306-45.88-1.699-89.948-12.607-133.062-27.295zm-33.264 66.476V400h17.996V182.605a502.784 502.784 0 0 1-17.996-6.578zM32 419.002v17.996h176v-17.996z"},child:[]}]})(i)}function W4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.7 21.04l-194.4.41L21.04 159.3l.41 194.4L159.3 491l194.4-.4L491 352.7l-.4-194.4L352.7 21.04zm-8 19.66l126.2 125.7.4 178.3-123.1 123.6-2.6 2.6-178.3.4L41.08 345.6l-.38-178.3L166.4 41.08l178.3-.38zm-7.5 18.01l-163.3.34L58.71 174.8l.34 163.3L174.8 453.3l163.3-.3 115.2-115.8-.3-163.3L337.2 58.71zM108.4 210.4c5.3 0 10.8.5 16.4 1.3 5.7.8 11.5 2 17.5 3.6v20.5c-5.3-2.4-10.5-4.2-15.6-5.4-5.1-1.2-9.9-1.8-14.4-1.8-6 0-10.4.8-13.25 2.5-2.87 1.6-4.3 4.2-4.3 7.7 0 2.6.96 4.6 2.87 6.1 1.95 1.4 5.48 2.7 10.58 3.7l10.6 2.1c10.8 2.2 18.5 5.5 23.1 9.9 4.5 4.5 6.8 10.8 6.8 18.9 0 10.7-3.2 18.7-9.5 24-6.4 5.2-16.1 7.8-29.2 7.8-6.1 0-12.3-.6-18.51-1.8-6.2-1.1-12.41-2.9-18.61-5.2v-21.1c6.2 3.3 12.19 5.8 17.96 7.5 5.82 1.6 11.46 2.4 16.76 2.4 5.5 0 9.7-.9 12.6-2.7 2.9-1.8 4.4-4.4 4.4-7.8 0-3.1-1-5.4-3-7.1-2-1.6-5.9-3.1-11.8-4.4l-9.7-2.1c-9.73-2.1-16.85-5.4-21.37-10-4.47-4.5-6.7-10.7-6.7-18.4 0-9.7 3.12-17.1 9.37-22.3 6.25-5.3 15.24-7.9 27-7.9zm187.7 0c15.6 0 27.8 4.5 36.7 13.5 8.9 8.9 13.3 21.2 13.3 37 0 15.7-4.4 28-13.3 37-8.9 8.9-21.1 13.4-36.7 13.4-15.6 0-27.8-4.5-36.7-13.4-8.9-9-13.3-21.3-13.3-37 0-15.8 4.4-28.1 13.3-37 8.9-9 21.1-13.5 36.7-13.5zm-141.9 1.8h89.6v18.9h-32.2v78.3h-25.1v-78.3h-32.3v-18.9zm205.8 0h41.6c12.3 0 21.8 2.8 28.4 8.3 6.7 5.4 10 13.2 10 23.4s-3.3 18.1-10 23.6c-6.6 5.4-16.1 8.2-28.4 8.2H385v33.7h-25v-97.2zm-63.9 16.4c-7.7 0-13.6 2.8-17.8 8.5-4.2 5.6-6.3 13.6-6.3 23.8 0 10.2 2.1 18.1 6.3 23.8 4.2 5.6 10.1 8.4 17.8 8.4 7.7 0 13.6-2.8 17.8-8.4 4.2-5.7 6.3-13.6 6.3-23.8 0-10.2-2.1-18.2-6.3-23.8-4.2-5.7-10.1-8.5-17.8-8.5zm88.9 1.8v27.1h13.9c4.9 0 8.6-1.2 11.3-3.5 2.6-2.4 3.9-5.8 3.9-10.1s-1.3-7.7-3.9-10c-2.7-2.4-6.4-3.5-11.3-3.5H385z"},child:[]}]})(i)}function R4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 54.28c-124.603 0-226 101.398-226 226 0 47.864 14.975 92.293 40.465 128.876l29.79-19.86c-17.188-24.545-28.708-53.362-32.696-84.577H96v-18H66.115c-.07-2.14-.115-4.284-.115-6.44 0-45.378 15.816-86.97 42.236-119.598l17.4 17.4 12.727-12.727-18.133-18.132C152.735 114.057 197.335 92.8 247 90.498v29.22h18V90.5c49.665 2.302 94.265 23.56 126.77 56.725l-18.133 18.132 12.726 12.727 17.4-17.4c26.42 32.63 42.237 74.22 42.237 119.6 0 2.154-.044 4.3-.115 6.437H416v18h28.44c-3.987 31.214-15.507 60.03-32.694 84.575l29.79 19.86C467.025 372.574 482 328.146 482 280.282c0-124.602-101.397-226-226-226zm15.83 66.23a144 160 0 0 1 74.608 100.062l49.966-17.568a160 160 0 0 0-4.3-7.012l-5.135 5.153-30.368-30.29-5.76-5.746 7.85-7.874a160 160 0 0 0-86.862-36.726zm156.15 89.844l-175.332 60.6C240.505 272.618 231 283.155 231 295.72c0 13.7 11.3 25 25 25 6.77 0 12.95-2.764 17.473-7.208L427.98 210.354zm-16.513 32.322l-60.713 40.72a144 160 0 0 1-56.6 108.323h76.057a160 160 0 0 0 39.763-68.572H398.48v-52.515h17.022a160 160 0 0 0-4.035-27.957zM128 421.72v36h256v-36H128z"},child:[]}]})(i)}function Ma(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M140 29.92c-31.4 0-59.89 3.25-79.89 8.25-9.9 2.5-17.8 5.51-22.4 8.25-3.2 1.87-4.1 3.15-4.5 3.58.4.43 1.3 1.71 4.5 3.58 4.6 2.74 12.5 5.75 22.4 8.25 20 5 48.49 8.25 79.89 8.25h5.7c5.3-2 11.1-3.78 17.6-5.4 20.3-5.08 46.5-8.42 75.8-9.36 1.2-.57 2.3-1.14 3.2-1.7 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zm232 0c-31.4 0-59.9 3.25-79.8 8.25-10 2.5-17.9 5.51-22.5 8.25-3.1 1.87-4.1 3.15-4.5 3.58.4.43 1.4 1.71 4.5 3.58.9.56 2 1.13 3.2 1.7 29.3.94 55.5 4.28 75.8 9.36 6.5 1.62 12.3 3.4 17.6 5.4h5.7c31.4 0 59.9-3.25 79.8-8.25 10-2.5 17.9-5.51 22.5-8.25 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zM33.01 71.44V369.9c0 4.3 1.8 8 6.8 12.3 5 4.3 13.1 8.5 23.3 11.9 15.3 5.1 35 8.5 55.89 9.8V278.3l-16.5 28.6-7.79-4.5c-27.4-15.9-44.3-45.3-44.4-77v-9h52.59c-.6 2.6-.9 5.3-.9 8.1 0 13.1 6.8 24.8 17 31.7v-63.4c-1.9 1.3-3.6 2.7-5.2 4.2l-25.99-45.1 7.8-4.5c7.49-4.2 15.29-7.3 23.39-9.3V87.61c-24.19-1.08-45.99-4.01-63.19-8.32-8.9-2.21-16.5-4.76-22.8-7.85zm445.99 0c-6.3 3.09-14 5.63-22.8 7.84-17.2 4.31-39 7.24-63.2 8.32v50.6c8.1 2 16 5.1 23.4 9.3l7.7 4.5-4.4 7.8-21.5 37.2c-1.6-1.5-3.3-2.9-5.2-4.2v63.4c10.2-6.9 17-18.6 17-31.7 0-2.8-.3-5.5-.9-8.1h50.8v9c0 31.8-17 61.1-44.4 77l-7.8 4.5-14.7-25.5v122.5c20.9-1.3 40.7-4.7 55.9-9.8 10.2-3.4 18.3-7.6 23.3-11.9 5-4.3 6.8-8 6.8-12.3zM256 73c-34.7 0-66.2 3.57-88.3 9.1-11.1 2.77-19.8 6.09-25.1 9.19-4.3 2.58-5.3 4.42-5.5 4.71.2.29 1.2 2.12 5.5 4.7 5.3 3.1 14 6.4 25.1 9.2 22.1 5.5 53.6 9.1 88.3 9.1 34.7 0 66.2-3.6 88.3-9.1 11.1-2.8 19.8-6.1 25.1-9.2 4.3-2.58 5.3-4.41 5.5-4.7-.2-.29-1.2-2.13-5.5-4.71-5.3-3.1-14-6.42-25.1-9.19-22.1-5.53-53.6-9.1-88.3-9.1zm118.9 23c.1.1.1.1.1 0s0-.1-.1 0zm-237.8 0c-.1-.1-.1-.1-.1 0s0 .1.1 0zm-.1 22.1V448c0 5 2.2 9.3 7.9 14.2 5.6 4.8 14.7 9.5 25.9 13.3 22.6 7.5 54 11.5 85.2 11.5 31.2 0 62.6-4 85.2-11.5 11.2-3.8 20.3-8.5 25.9-13.3 5.7-4.9 7.9-9.2 7.9-14.2V118.1c-7.2 3.7-16 6.6-26.3 9.3-24.2 6-56.7 9.6-92.7 9.6s-68.5-3.6-92.7-9.6c-10.3-2.7-19.1-5.6-26.3-9.3zM256 191c16.8 0 33.5 4.4 48.5 13l7.8 4.5-4.5 7.8-24.1 41.6c-7.3-6.7-17-10.9-27.7-10.9s-20.4 4.2-27.7 10.9l-28.6-49.4 7.8-4.5c15-8.7 31.7-13 48.5-13zm0 74c12.8 0 23 10.2 23 23s-10.2 23-23 23-23-10.2-23-23 10.2-23 23-23zm-98 15h57.8c-.5 2.6-.8 5.3-.8 8 0 18.1 12 33.7 28.5 39l-29.2 50.5-7.8-4.5c-30-17.3-48.5-49.4-48.5-84zm138.2 0H352v9c0 34.6-18.5 66.7-48.5 84l-7.8 4.5-28.8-50c17.3-4.8 30.1-20.8 30.1-39.5 0-2.7-.3-5.4-.8-8z"},child:[]}]})(i)}function J4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M288.3 13.4c-12.3-.01-23 6.49-27.3 15.31l-2.9 5.95-6.6-1.01c-5.5-.85-11.3-1.32-17.1-1.32-18.8 0-35.7 4.5-47.3 11.14-11.5 6.64-16.9 14.59-16.9 22 0 7.42 5.4 15.37 16.9 22 11.6 6.64 28.5 11.13 47.3 11.13 7.5-.02 14.9-.74 21.8-2.13l6.3-1.23 3.2 5.46c5.6 9.2 23.7 18.2 44.7 18.2 13.9 0 26.4-3.6 34.8-8.8 8.4-5.2 12.2-11.23 12.2-16.9 0-5.09-3-10.48-10-15.44-6.9-4.97-17.6-8.87-30-9.95l-18.3-1.59 12.5-13.49c4.1-4.41 6.1-9.6 6.1-14.87 0-12.88-12.4-24.46-29.4-24.46zM152.2 65.46C84.8 102.3 39 173.9 39 256c0 32.1 7 62.6 19.54 90 5.95-7.9 10.48-13.4 12.67-16C62.05 307.2 57 282.2 57 256c0-74 40.27-138.5 100.1-172.78-3.1-5.39-4.9-11.34-4.9-17.74v-.02zm210.7 1.75c7.5 6.93 12.5 15.9 12.5 25.99 0 1.14-.1 2.27-.2 3.38C423.7 132.9 455 190.7 455 256c0 23.7-4.2 46.5-11.8 67.6l18.3 2.2c7.4-21.9 11.5-45.4 11.5-69.8 0-80.8-44.4-151.5-110.1-188.79zm58.6 270.49c-11.1.2-23 1.1-35.9 3.1l-.5.1-.5.1c-25.8 7.3-37.1 15.2-46.4 24.7l-2.2 2.2-.3 3.1c-3.4 29.6-5.8 60 0 91.8l1.3 6.8 6.8.6c30.6 2.6 58.7 1.4 86.2 0l1-.1.9-.2c18.5-5.2 34.4-12.8 46.4-24.6l1.7-1.6.6-2.2c10-33.4 3.4-63.8.4-92.7l-.8-7.4-7.3-.7c-16.2-1.5-32.8-3.2-51.4-3zM79.62 348.2c-4.94 6.1-11.43 14.5-18.58 25.6-12.29 18.9-22.53 42.4-20.51 54.9 1.43 8.8 6.97 19.6 14.51 27.6 7.54 7.9 16.69 12.8 24.58 12.8 7.87 0 17.03-4.9 24.58-12.8 7.5-8 13.1-18.8 14.5-27.6 2-12.5-8.2-36-20.5-54.9-7.15-11-13.64-19.5-18.58-25.6zM427 355.7c1.7 0 3.3 0 5 .1 5.4.1 10.7.4 16 .8-5.9 3.4-12.1 6.8-19.5 9.9l-2.4.2c-19.5 1.4-37.7.3-55.4-2 4.7-2 10.5-4 18.3-6.2 13.8-2.2 26.3-2.9 38-2.8zm38 11.6c2.8 22.9 5 44.5-1 66.6-7 6.3-16 11.4-27 15.4 3-22.5 2-44.8-.5-66.6 11.3-5 20.2-10.2 28.5-15.4zm-112.2 13.1c20.7 3.2 42.3 5.4 65.8 4.5 2.5 23 3.5 45.6-.4 67.8-21.5 1-43.1 1.5-65.8-.1-3.5-24-2.2-47.9.4-72.2zm-216.4 34.7c.9 5.5 1 11 .1 16.4-.3 1.6-.6 3.3-1 4.9C170 459.5 211.4 473 256 473c21.6 0 42.5-3.2 62.3-9.1l-2-18.2c-19 6-39.3 9.3-60.3 9.3-44.9 0-86.3-14.8-119.6-39.9z"},child:[]}]})(i)}function B4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M33.125 19.406L135.5 128.22l81-23.157 18.72-5.344-7.564 17.936-46.125 109.78 134.282-70 26.157-13.655L328.436 170 256.5 309.25l91.25-57.125 22.97-14.375-9.22 25.47-34.625 95.624 71-36.375 21.188-10.845L410.906 334l-33.937 93.063 45.124-6.688 4.53-.656 3.313 3.155 64.313 61.47-30.5-80.5 23.313-46.908-72.5 39.532 51.062-141.158-91.188 47.47 72.344-142.813-128.217 82.81L421.875 70.063 239.03 168.69l30.44-99.563-103.845 25.25-132.5-74.97zM18.155 30.78l77.876 108.25-31.124 75.532 94.125-46.78-98.905 166.812 190.25-99.656-101.03 185.406 140.25-79.063-46.94 102.22 106.5-53-45.655 92.28 86.5-14.467 93.47 31.562-63.158-60.344-56.125 8.314-15.53 2.312 5.374-14.75 31.158-85.437-70.907 36.31-21.124 10.814 8.094-22.313 33.47-92.436-97.22 60.875-28.938 18.092L224.22 331l74.06-143.344-131.06 68.313-22.97 12 10.03-23.908 48.626-115.687-67.75 19.375-5.5 1.563-3.875-4.157L18.157 30.78z"},child:[]}]})(i)}function G4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M20.127 52.803v58.986L250.46 245.153c26.367-28.823 70.087-36.533 105.313-16.195 35.29 20.374 50.465 62.207 38.567 99.503l101.648 58.855-64.728-74.65 35.638-37.352-57.27-7.687 84.72-86.92-125.71 33.186 12.995-120.208-66.578 96.363-27.448-80.593-16.353 88.77L20.127 52.803zm0 105.12l-.008.018.007.005v-.02zm0 .022l-.002 87.582 155.344 89.95-89.94 33.287h135.493l-63.658 99.87 116.22-70.083 15.77 85.852 38.543-80.01 63.66 87.018-5.853-87.047 90.54 17.268-102.4-59.198c-26.546 26.964-68.89 33.744-103.183 13.945-34.322-19.816-49.62-59.928-39.49-96.424L20.127 157.945zm316.6 119.442c-.938-.003-1.874.027-2.805.092-12.42.86-24.164 7.707-30.9 19.375-10.78 18.67-4.455 42.27 14.214 53.047 18.67 10.78 42.27 4.455 53.047-14.214 10.78-18.67 4.454-42.27-14.215-53.047-6.125-3.536-12.78-5.23-19.34-5.253z"},child:[]}]})(i)}function F4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 32l-64 96 80 16-16 80 64-96-80-16 16-80zm-96 217c-1.9 0-9.8 3-15.8 6.7-2.8 1.7-5.3 3.5-7.2 4.8v119c1.9 1.3 4.4 3.1 7.2 4.8 6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 5.9-3.7 10.6-7.3 10.6-7.3l2.5-2H201V265h-12.1l-2.5-2s-4.7-3.6-10.6-7.3c-6-3.7-13.9-6.7-15.8-6.7zm192 0c-1.9 0-9.8 3-15.8 6.7-5.9 3.7-10.6 7.3-10.6 7.3l-2.5 2H311v110h12.1l2.5 2s4.7 3.6 10.6 7.3c6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 2.8-1.7 5.3-3.5 7.2-4.8v-119c-1.9-1.3-4.4-3.1-7.2-4.8-6-3.7-13.9-6.7-15.8-6.7zm-133 16v110h14V265h-14zm32 0v110h42V265h-42zM95.5 311c-18.8 0-36.6 9.2-49.94 22.7C32.22 347.1 23 365 23 384v106h18V384c0-13 6.78-27.1 17.32-37.7C68.85 335.8 82.8 329 95.5 329H119v-18H95.5zm297.5 0v18h22.9c13.1 0 27.1 6.8 37.7 17.4C464.2 357 471 371 471 384v106h18V384c0-19-9.2-37-22.7-50.4-13.4-13.4-31.4-22.6-50.4-22.6H393z"},child:[]}]})(i)}function H4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M376 211H256V16L136 301h120v195z"},child:[]}]})(i)}function V4e(i){return U({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M18.36 6.64a9 9 0 1 1-12.73 0"},child:[]},{tag:"line",attr:{x1:"12",y1:"2",x2:"12",y2:"12"},child:[]}]})(i)}function Z4e(i){return U({attr:{fill:"none",viewBox:"0 0 24 24",strokeWidth:"2",stroke:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},child:[]}]})(i)}function X4e(i){return U({attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M6 0l-6 8h6l-4 8 14-10h-8l6-6z"},child:[]}]})(i)}const gge={SET:f0e,WORKING:Xn,UNREACH:Kn,LOWBAT:Zn,MAINTAIN:Z0e,ERROR:t4e,DIRECTION:X0e,CONNECTED:Kn,ACTUAL:b4e,SECOND:$4e,PRESS_LONG:H0e,PRESS:F0e,MUTE:Y0e,ACCURACY:G4e,RADIUS:m0e,ELEVATION:_0e,LATITUDE:E0e,LONGITUDE:A0e,GPS:s4e,ON_ACTUAL:Gn,ON_SET:Gn,OPEN:G0e,STOP:W4e,WATER_ALARM:ea,WASTE_ALARM:Ma,PAUSE:C0e,STATE:J4e,BATTERY:Zn,WASTE:Ma,WATER:ea,WORK_MODE:Xn,MODE:i4e,POWER:p0e,BOOST:U4e,HUMIDITY:c4e,TEMPERATURE:n4e,BRIGHTNESS:l4e,MOTION:$0e,FIRE:u4e,WINDOW:Nu,SMOKE:a4e,SWING:P4e,SPEED:R4e,DIMMER:Z4e,ON:V4e,COLOR_TEMP:v0e,ELECTRIC_POWER:X4e,CURRENT:H4e,VOLTAGE:F4e,CONSUMPTION:v4e,FREQUENCY:B4e,HUE:L4e};class ju extends n.Component{static generateFile(e,t){const s=window.document.createElement("a");s.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),s.setAttribute("download",e),s.style.display="none",window.document.body.appendChild(s),s.click(),window.document.body.removeChild(s)}handleFileSelect=e=>{const t=e.target,s=t==null?void 0:t.files;if(!s||!s.length){console.error("No files found. Please report to developers");return}const r=s[0];if(r){const o=new window.FileReader;o.onload=()=>{var a;const M=((a=o.result)==null?void 0:a.toString())||"";try{const u=JSON.parse(M);u.native&&u.common?u.common.name!==this.props.common.name?this.props.onError&&this.props.onError(D.t("ra_otherConfig",u.common.name)):this.props.onLoad&&this.props.onLoad(u.native):this.props.onError&&this.props.onError(D.t("ra_invalidConfig"))}catch(u){this.props.onError&&this.props.onError(u==null?void 0:u.toString())}},o.readAsText(r)}else alert("Failed to open JSON File")};download(){const e={_id:`system.adapter.${this.props.common.name}.${this.props.instance}`,common:JSON.parse(JSON.stringify(this.props.common)),native:this.props.native};e.common.news&&delete e.common.news,e.common.titleLang&&delete e.common.titleLang,e.common.desc&&delete e.common.desc,ju.generateFile(`${e._id}.json`,e)}upload(){const e=window.document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",this.handleFileSelect,!1),e.click()}render(){return n.createElement("div",{className:this.props.className,style:this.props.style},this.props.common.icon?n.createElement(xe,{src:this.props.common.icon,style:{padding:8,width:64},alt:"logo"}):null,this.props.common.readme?n.createElement(Ct,{size:"small",color:"primary","aria-label":"Help",style:{marginRight:5,marginTop:5,float:"right"},onClick:()=>{const e=window.open(this.props.common.readme,"_blank");e==null||e.focus()}},n.createElement(fl,null)):null,n.createElement(Ct,{size:"small",color:"primary","aria-label":"Load config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Load configuration from file"),onClick:()=>this.upload()},n.createElement(Sl,null)),n.createElement(Ct,{size:"small",color:"primary","aria-label":"Save config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Save configuration to file"),onClick:()=>this.download()},n.createElement(xl,null)))}}class gu{static text2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static getTitle(e){const t=gu.extractHeader(e);let s=t.body;const r=t.header;if(!r.title){s=s.replace(/{[^}]*}/g,""),s=s.trim();const o=s.replace(/\r/g,"").split(` +`);for(let M=0;M{if(!M.trim())return;const a=M.indexOf(":");if(a!==-1){const u=M.substring(0,a).trim();let l=M.substring(a+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[u]=!0:l==="false"?t[u]=!1:parseFloat(l).toString()===l?t[u]=parseFloat(l):t[u]=l}else t[M.trim()]=!0}),e=e.substring(s+7))}return{header:t,body:e}}static removeDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(s=>e=e.replace(s,"")),e}static onCopy(e,t){Gc(t),e&&e.stopPropagation(),e&&e.preventDefault()}}function K4e(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function Tu(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 320 320",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("g",{fill:"currentColor"},n.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"248",cx:"160",fill:"none",strokeWidth:"15"}),n.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function Ts(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"}))}function yu(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 320 320",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("g",{fill:"currentColor"},n.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),n.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("rect",{height:"27",width:"50",y:"140.83068",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),n.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"251",cx:"241",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),n.createElement("line",{y2:"200.94531",x2:"240.5",y1:"45.94531",x1:"240.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("rect",{height:"27",width:"50",y:"78.7979",x:"214.5",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),n.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"84",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),n.createElement("line",{y2:"201.94531",x2:"83.5",y1:"46.94531",x1:"83.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"57.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function q4e(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",onClick:e=>i.onClick&&i.onClick(e),width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}))}function eLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}),n.createElement("path",{fill:"currentColor",stroke:"null",d:"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z"}))}function tLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function Xs(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 320 320",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("rect",{fill:"none",rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor"}),n.createElement("ellipse",{fill:"none",ry:"54",rx:"54",cy:"160",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor"}))}function sLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 24 24",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",stroke:"currentColor",d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"}))}const kr={root:{width:"100%",height:"100%"},overflowHidden:{overflow:"hidden"},container:{height:"100%"}};function iLe(i){var e;return n.createElement(Wa,{elevation:Number.isNaN(i.elevation)?1:i.elevation,style:{...kr.root,...((e=i.styles)==null?void 0:e.root)||void 0,...i.overflow!=="visible"?kr.overflowHidden:void 0},onKeyDown:i.onKeyDown,tabIndex:i.tabIndex},n.createElement(Ut,{container:!0,direction:"column",wrap:"nowrap",sx:kr.container},i.children))}const na={root:{height:"100%",overflow:"hidden"},overflowAuto:{overflow:"auto"}},rLe=n.forwardRef(function(e,t){return n.createElement(Ut,{sx:{...na.root,...(e==null?void 0:e.style)||void 0,...e.overflow==="auto"?na.overflowAuto:void 0},ref:t},e.children)});function oLe(i){return n.createElement(Ut,{container:!0,alignItems:"center"},i.children)}const Is=24,Ye=32,Du=i=>i==="dark"?"#62ff25":"#37c400",du=i=>i==="dark"?"#ee56ff":"#a204b4",MLe=i=>i==="dark"?"#fff46e":"#b89101",zu=i=>"#ff6d69",hu=i=>"#5773ff",nLe=["0_userdata.0.","alias.0."],bt={headerCellInput:{width:"calc(100% - 5px)",height:Ye,pt:0,"& .itemIcon":{verticalAlign:"middle",width:Is,height:Is,display:"inline-block"}},headerCellSelectItem:{"& .itemIcon":{width:Is,height:Is,mr:"5px",display:"inline-block"}},selectNone:{opacity:.5},selectClearButton:{position:"absolute",top:0,right:0,borderRadius:5,backgroundColor:"background.default"},cellIdTooltipLink:{color:"#7ec2fd","&:hover":{color:"#7ec2fd"},"&:visited":{color:"#7ec2fd"}},cellIdTooltip:{fontSize:14}};function aLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 436 436",style:i==null?void 0:i.style,width:"24",height:"24",className:"admin-button"},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),n.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function aa(i){i=(i||"").toString();const e=i[0]==="*",t=i[i.length-1]==="*";return i=i.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+i+(t?"":"$")}function cLe(i,e){const t=[];for(let s=0;s{if(r==null)return;const M=typeof r=="object";if(t&&M&&typeof r.en=="string"&&typeof r.de=="string"){s[o]=r.en;return}s[o]=M?Lo(r,e,t):r}):uLe(i,(s,r,o)=>{if(r==null||e.includes(o))return;const M=typeof r=="object";if(t&&M&&typeof r.en=="string"&&typeof r.de=="string"){s[o]=r.en;return}s[o]=M?Lo(r,e,t):r})}function ca(i,e,t){const s=document.createElement("a"),r=[];t.excludeSystemRepositories&&r.push("system.repositories");const o=r.length>0||t.excludeTranslations?Lo(e,r,t.excludeTranslations):e,M=t.beautify?JSON.stringify(o,null,2):JSON.stringify(o);s.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(M)}`),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}class lLe extends ze{hasIcons;timer=null;constructor(e){var t;super(e),this.state={value:e.initialValue||[]},this.hasIcons=!!((t=e.values)!=null&&t.find(s=>s.icon))}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){var e;return n.createElement("div",{style:{position:"relative"}},n.createElement(Xe,{variant:"standard",key:this.props.name,sx:bt.headerCellInput,className:"no-underline",multiple:!0,renderValue:t=>t!=null&&t.length?t.map(s=>{const r=this.props.values.find(u=>typeof u=="object"?u.value===s:u===s);let o,M,a;return typeof r=="object"?(o=r.value,M=r.name,a=r.icon):(o=r,M=r),n.createElement(W,{component:"span",sx:bt.headerCellSelectItem,key:o},a||(this.hasIcons?n.createElement("div",{className:"itemIcon"}):null),M)}):this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:t=>{let s=t.target.value;if(this.state.value[0]==="_"&&s.includes("_")&&s.length>1){const r=s.indexOf("_");r!==-1&&s.splice(r,1)}else this.state.value[0]!=="_"&&s.includes("_")&&(s=["_"]);s.includes("")&&(s=[]),this.setState({value:s},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,s)},400)})},onClose:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},inputProps:{name:this.props.name,id:this.props.name},displayEmpty:!0},n.createElement(te,{key:"empty",value:""},n.createElement("span",{style:bt.selectNone},this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`])),(e=this.props.values)==null?void 0:e.map(t=>{let s,r,o;return typeof t=="object"?(s=t.value,r=t.name,o=t.icon):(s=t,r=t),n.createElement(te,{sx:bt.headerCellSelectItem,key:s,value:s},o||(this.hasIcons?n.createElement("div",{className:"itemIcon"}):null),r)})),this.state.value.length?n.createElement(W,{component:"div",sx:bt.selectClearButton},n.createElement(P,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:[]},()=>this.props.onChange(this.props.name,void 0))}},n.createElement(ge,null))):null)}}class NLe extends ze{timer=null;constructor(e){super(e),this.state={value:e.initialValue||""}}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){return n.createElement(wt,{sx:this.props.styles,key:this.props.name,title:this.props.t("ra_You can use * as wildcard"),margin:"dense"},n.createElement(vt,{classes:{underline:"no-underline"},id:this.props.name,placeholder:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:e=>{const t=e.target.value;this.setState({value:t},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,t)},400)})},onBlur:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},autoComplete:"off"}),this.state.value?n.createElement("div",{style:{position:"absolute",right:0}},n.createElement(P,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:""},()=>this.props.onChange(this.props.name,void 0))}},n.createElement(ge,null))):null)}}function oi(i,e,t,s){if(t||=0,s===void 0&&(s=i.length-1,!s))return i[0]===e;const r=Math.floor((t+s)/2);return e===i[r]?!0:s-1===t?i[t]===e||i[s]===e:e>i[r]?oi(i,e,r,s):ek.toLowerCase())),(L=e.custom)!=null&&L.length&&(r.custom=e.custom.map(k=>k.toLowerCase())),(j=e.role)!=null&&j.length&&(r.role=e.role.map(k=>k.toLowerCase())),(g=e.room)!=null&&g.length&&(r.room=[],e.room.forEach(k=>{var Y,J;r.room=r.room.concat(((J=(Y=s[k])==null?void 0:Y.common)==null?void 0:J.members)||[])})),(y=e.func)!=null&&y.length&&(r.func=[],e.func.forEach(k=>{var Y,J;r.func=r.func.concat(((J=(Y=s[k])==null?void 0:Y.common)==null?void 0:J.members)||[])}))}const N=i.data;if(N!=null&&N.id){const k=(d=N.obj)==null?void 0:d.common;if(M){if(M.type&&(typeof M.type=="string"?(!N.obj||M.type!==N.obj.type)&&(l=!0):Array.isArray(M.type)&&(!N.obj||!M.type.includes(N.obj.type))&&(l=!0)),!l&&((I=M.common)!=null&&I.type)&&(k!=null&&k.type?typeof M.common.type=="string"?M.common.type!==k.type&&(l=!0):Array.isArray(M.common.type)&&(M.common.type.includes(k.type)||(l=!0)):l=!0),!l&&((m=M.common)!=null&&m.role)&&(k!=null&&k.role?typeof M.common.role=="string"?k.role.startsWith(M.common.role)&&(l=!0):Array.isArray(M.common.role)&&(M.common.role.find(Y=>k.role.startsWith(Y))||(l=!0)):l=!0),!l&&((w=M.common)==null?void 0:w.custom)==="_"&&(k!=null&&k.custom))l=!0;else if(!l&&((O=M.common)!=null&&O.custom)&&((A=M.common)==null?void 0:A.custom)!=="_"){const Y=M.common.custom;if(!(k!=null&&k.custom))l=!0;else if(Y==="_dataSources")Object.keys(k.custom).find(J=>J.startsWith("history.")||J.startsWith("sql.")||J.startsWith("influxdb."))||(l=!0);else if(Array.isArray(Y)){const J=Object.keys(k.custom);Y.find(Le=>J.find(Je=>Je.startsWith(Le)))&&(l=!0)}else Y!==!0&&!Object.keys(k.custom).find(J=>J.startsWith(Y))&&(l=!0)}}!l&&!e.expertMode&&(l=N.id==="system"||N.id==="enum"||N.id.startsWith("system.")||N.id.startsWith("enum.")||N.id.startsWith("_design/")||N.id.endsWith(".admin")||!!(k!=null&&k.expert)),!l&&r.id&&(N.fID===void 0&&(N.fID=N.id.toLowerCase()),l=!N.fID.includes(r.id)),!l&&r.idRx&&(l=!r.idRx.test(N.id)),!l&&r.name&&(k?(N.fName===void 0&&(N.fName=Re(k.name,t)||"",N.fName=N.fName.toLowerCase()),l=!N.fName.includes(r.name)):l=!0),!l&&r.nameRx&&k&&(N.fName===void 0&&(N.fName=Re(k.name,t)||"",N.fName=N.fName.toLowerCase()),l=!r.nameRx.test(N.fName)),!l&&((h=e.role)!=null&&h.length)&&k&&(l=!(typeof k.role=="string"&&r.role.find(Y=>k.role.startsWith(Y)))),!l&&((p=r.room)!=null&&p.length)&&(l=!r.room.find(Y=>Y===N.id||N.id.startsWith(`${Y}.`))),!l&&((S=r.func)!=null&&S.length)&&(l=!r.func.find(Y=>Y===N.id||N.id.startsWith(`${Y}.`))),!l&&((f=r.type)!=null&&f.length)&&(l=!(($=N.obj)!=null&&$.type&&r.type.includes(N.obj.type))),!l&&a&&(l=!((x=N.obj)!=null&&x.type&&a.includes(N.obj.type))),!l&&((Z=r.custom)!=null&&Z.length)&&(k?r.custom[0]==="_"?l=!!k.custom:k.custom?l=!r.custom.find(Y=>k.custom[Y]):l=!0:l=r.custom[0]!=="_")}return N.visible=!l,N.hasVisibleChildren=!1,i.children&&u<20&&i.children.forEach(k=>{jo(k,e,t,s,r,o,M,a,u+1)&&(N.hasVisibleChildren=!0)}),N.sumVisibility=N.visible||N.hasVisibleChildren,o&&N.sumVisibility&&o.count++,N.id&&N.sumVisibility&&i.children&&i.children.forEach(k=>k.data.hasVisibleParent=!0),N.visible||N.hasVisibleChildren}function Iu(i,e,t,s){var o;s||=[];const r=i.data;return r.sumVisibility&&(r.id&&t[r.id]&&t[r.id].type===e&&s.push(r.id),(o=i.children)==null||o.forEach(M=>Iu(M,e,t,s))),s}function ua(i,e,t,s,r,o){let M;return e==="alias"||e==="alias.0"?M=n.createElement(Ha,{className:"iconOwn",style:{color:du(s)}}):e==="0_userdata"||e==="0_userdata.0"?M=n.createElement(kl,{className:"iconOwn",style:{color:Du(s)}}):e.startsWith("_design/")||e==="system"?M=n.createElement(Wi,{className:"iconOwn",style:{color:zu(s)}}):e==="system.adapter"?M=n.createElement(Wi,{className:"iconOwn",style:{color:hu(s)}}):e==="system.group"?M=n.createElement(Qo,{className:"iconOwn"}):e==="system.user"?M=n.createElement(vo,{className:"iconOwn"}):e==="system.host"?M=n.createElement(Uo,{className:"iconOwn"}):e.endsWith(".connection")||e.endsWith(".connected")?M=n.createElement(zs,{className:"iconOwn"}):e.endsWith(".info")?M=n.createElement(bo,{className:"iconOwn"}):i[e]&&i[e].type==="meta"?M=n.createElement(tr,{className:"iconOwn"}):t<2&&i[`system.adapter.${e}`]&&(M=Xi(i,`system.adapter.${e}`,r,o)),M||null}function wu(i,e){var t,s;return(s=(t=i==null?void 0:i.obj)==null?void 0:t.common)!=null&&s.desc&&Re(i.obj.common.desc,e)||null}function LLe(i,e){const t=wu(i,e);return t!=null&&t.startsWith("http")?n.createElement(W,{component:"a",sx:bt.cellIdTooltipLink,href:t,target:"_blank",rel:"noreferrer"},t):n.createElement("span",{style:bt.cellIdTooltip},t||i.id||"")}function la(i,e){var N,c,L,j,g,y,d,I,m,w;const t=e.imagePrefix||".";let s=Object.keys(i);s.sort((O,A)=>O===A?0:(O=O.replace(/\./g,"!!!"),A=A.replace(/\./g,"!!!"),O>A?1:-1)),e.root&&(s=s.filter(O=>O===e.root||O.startsWith(`${e.root}.`)));let r=[],o="",M=0;const a={data:{name:"",id:""},children:[]},u={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:i,customs:["_"],enums:[],hasSomeCustoms:!1,aliasesMap:{}};let l=a;for(let O=0;Ox.role===$)?typeof $!="string"?console.warn(`Invalid role type "${typeof $}" in "${h._id}"`):u.roles.push({role:$,type:f.type}):A.startsWith("enum.rooms.")?(u.roomEnums.push(A),u.enums.push(A)):A.startsWith("enum.functions.")?(u.funcEnums.push(A),u.enums.push(A)):h.type==="enum"?u.enums.push(A):h.type==="instance"&&f&&(f.supportCustoms||(N=f.adminUI)!=null&&N.custom)&&(u.hasSomeCustoms=!0,u.customs.push(A.substring(15))),A.startsWith("alias.")&&((c=h.common.alias)!=null&&c.id))if(typeof h.common.alias.id=="string"){const x=h.common.alias.id;u.aliasesMap[x]?u.aliasesMap[x].includes(A)||u.aliasesMap[x].push(A):u.aliasesMap[x]=[A]}else{const x=h.common.alias.id.read;x&&(u.aliasesMap[x]?u.aliasesMap[x].includes(A)||u.aliasesMap[x].push(A):u.aliasesMap[x]=[A]);const Z=h.common.alias.id.write;Z&&(u.aliasesMap[Z]?u.aliasesMap[Z].includes(A)||u.aliasesMap[Z].push(A):u.aliasesMap[Z]=[A])}}u.ids.push(A);let S;do if(S=!1,!o||A.startsWith(`${o}.`)){if(p.length-M>1){let $=o;for(let x=M;xZ.data.name===p[x]));else{const Z={data:{name:p[x],parent:l,id:$,obj:i[$],level:x,icon:ua(i,$,x,e.themeType,e.lang,t),generated:!0}};l.children||=[],l.children.push(Z),l=Z,u.ids.push($)}}const f={data:{name:p[p.length-1],title:Re((L=h==null?void 0:h.common)==null?void 0:L.name,e.lang),obj:h,parent:l,icon:Xi(i,A,e.lang,t)||ua(i,A,0,e.themeType,e.lang,t),id:A,hasCustoms:!!((j=h.common)!=null&&j.custom&&Object.keys(h.common.custom).length),level:p.length-1,generated:!1,button:h.type==="state"&&!!((g=h.common)!=null&&g.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("button")&&((y=h.common)==null?void 0:y.write)!==!1,switch:h.type==="state"&&((d=h.common)==null?void 0:d.type)==="boolean"&&((I=h.common)==null?void 0:I.write)!==!1&&((m=h.common)==null?void 0:m.read)!==!1,url:!!((w=h.common)!=null&&w.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("url")}};l.children||=[],l.children.push(f),l=f,M=p.length,r=p,o=A}else{let f=0;for(;r[f]===p[f];)f++;if(f>0){let $=r.length;for(r=r.splice(0,f),M=f,o=r.join(".");$>f;)l.data.parent?l=l.data.parent:console.error(`Parent is null for ${A} ${o} ${r.join(".")}`),$--}else l=a,r=[],o="",M=0;S=!0}while(S)}return u.roomEnums.sort((O,A)=>{var S,f,$,x;const h=Re((f=(S=i[O])==null?void 0:S.common)==null?void 0:f.name,e.lang)||O.split(".").pop(),p=Re((x=($=i[A])==null?void 0:$.common)==null?void 0:x.name,e.lang)||A.split(".").pop();return h>p?1:h{var S,f,$,x;const h=Re((f=(S=i[O])==null?void 0:S.common)==null?void 0:f.name,e.lang)||O.split(".").pop(),p=Re((x=($=i[A])==null?void 0:$.common)==null?void 0:x.name,e.lang)||A.split(".").pop();return h>p?1:hO.role.localeCompare(A.role)),u.types.sort(),{info:u,root:a}}function Cu(i,e,t,s,r){if(i.data.id===e)return i;if(t||(t=e.split("."),r=0,s=t[r]),!i.children&&i.data.id!==e)return null;let o;if(i.children)for(let M=0;Ms)break}return o?(r||=0,Cu(o,e,t,`${s}.${t[r+1]}`,r+1)):null}function Au(i,e,t,s){var M,a;if(!e)return{rooms:[],per:!1};s||=[];for(const u of i.roomEnums){const l=(M=i.objects[u])==null?void 0:M.common;if(!l)continue;const N=Re(l.name,t);(a=l.members)!=null&&a.includes(e)&&!s.includes(N)&&s.push(N)}let r;const o=e.split(".");return o.pop(),e=o.join("."),i.objects[e]&&(r=s.length,Au(i,e,t,s)),{rooms:s,per:!r}}function ys(i,e,t,s){var r,o;if(!e)return[];s||=[];for(let M=0;M946681200&&l<9466812e5&&(l*=1e3),l=l&&new Date(l).toString();else if(a!=null&&a.role&&typeof a.role=="string"&&a.role.match(/^value\.duration/)){if(typeof l=="number"&&l>=0){const g=Math.floor(l/3600),y=Math.floor(l%3600/60),d=Math.floor(l%60);l=`${g.toString().padStart(2,"0")}:${y.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}`}else if(typeof l=="string"&&E.isStringInteger(l)){const g=parseInt(l,10);if(g>=0){const y=Math.floor(g/3600),d=Math.floor(g%3600/60),I=Math.floor(g%60);l=`${y.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}:${I.toString().padStart(2,"0")}`}}}else N==="number"?Number.isInteger(l)||(l=Math.round(l*1e8)/1e8,s&&(l=l.toString().replace(".",","))):N==="object"?l=JSON.stringify(l):N!=="string"?l=l.toString():l.startsWith("data:image/")&&(u="image"),typeof l!="string"&&(l=l.toString());const c={v:l};M&&M[l]!==void 0&&l!==M[l]&&(c.s=l,l=M[l],c.v=l),((j=c.v)==null?void 0:j.length)>40&&(c.c=c.v,c.v=`${c.v.substring(0,40)}...`),a!=null&&a.unit&&(c.u=a.unit);let L;if(i.full&&(typeof l=="string"&&l.length>100?L=[{t:r.value,v:`${l.substring(0,100)}...`}]:L=[{t:r.value,v:l}],t)){if(t.ack!==void 0&&t.ack!==null&&L.push({t:r.ack,v:t.ack.toString()}),t.ts&&L.push({t:r.ts,v:t.ts?E.formatDate(new Date(t.ts),e):""}),t.lc&&L.push({t:r.lc,v:t.lc?E.formatDate(new Date(t.lc),e):""}),t.from){let g=t.from.toString();g.startsWith("system.adapter.")&&(g=g.substring(15)),L.push({t:r.from,v:g})}if(t.user){let g=t.user.toString();g.startsWith("system.user.")&&(g=g.substring(12)),L.push({t:r.user,v:g})}t.c&&L.push({t:r.c,v:t.c}),L.push({t:r.quality,v:E.quality2text(t.q||0).join(", "),nbr:!0})}return{valText:c,valFull:L,fileViewer:u}}function jLe(i){const{state:e}=i;return{color:e!=null&&e.ack?e.q?"#ffa500":"":i.nonAckColor||"#ff2222c9"}}function gLe(i,e){let t=e,s=1;const r=[];for(;s=t)r.push(0);else if(s1){const s=e.path;let r;const o=i;if(o[s[0]]&&typeof o[s[0]]=="object")return s.length===2?r=o[s[0]][s[1]]:s.length===3?r=o[s[0]][s[1]]&&typeof o[s[0]][s[1]]=="object"?o[s[0]][s[1]][s[2]]:null:s.length===4?r=o[s[0]][s[1]]&&typeof o[s[0]][s[1]]=="object"&&o[s[0]][s[1]][s[2]]?o[s[0]][s[1]][s[2]][s[3]]:null:s.length===5?r=o[s[0]][s[1]]&&typeof o[s[0]][s[1]]=="object"&&o[s[0]][s[1]][s[2]]&&o[s[0]][s[1]][s[2]][s[3]]?o[s[0]][s[1]][s[2]][s[3]][s[4]]:null:s.length===6&&(r=o[s[0]][s[1]]&&typeof o[s[0]][s[1]]=="object"&&o[s[0]][s[1]][s[2]]&&o[s[0]][s[1]][s[2]][s[3]]&&o[s[0]][s[1]][s[2]][s[3]][s[4]]?o[s[0]][s[1]][s[2]][s[3]][s[4]][s[5]]:null),r??null}return null}function TLe(i,e,t){var s;if((s=i==null?void 0:i._id)!=null&&s.startsWith(`${e.adapter}.`)&&e.path.length>1){const r=e.path,o=i;if(o[r[0]]&&typeof o[r[0]]=="object"){if(r.length===2)return o[r[0]][r[1]]=t,!0;if(r.length===3){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object")return o[r[0]][r[1]][r[2]]=t,!0}else if(r.length===4){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object")return o[r[0]][r[1]][r[2]][r[3]]=t,!0}else if(r.length===5){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]]=t,!0}else if(r.length===6&&o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object"&&o[r[0]][r[1]][r[2]][r[3]][r[4]]&&typeof o[r[0]][r[1]][r[2]][r[3]][r[4]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]][r[5]]=t,!0}}return!1}function La(i){return!!nLe.find(e=>i.startsWith(e))}const yLe=16,Te=20,pu="#ff413c",Ou="#86211f",go="#57ff45",To="#098c04",yo="#f3ad11",Do="#6c5008",C={toolbar:{minHeight:38},toolbarButtons:{padding:4,marginLeft:4},switchColumnAuto:{marginLeft:16},dialogColumns:{transition:"opacity 1s"},dialogColumnsLabel:{fontSize:12,paddingTop:8},columnCustom:{width:"100%",display:"inline-block"},columnCustomEditable:{cursor:"text"},columnCustom_center:{textAlign:"center"},columnCustom_left:{textAlign:"left"},columnCustom_right:{textAlign:"right"},width100:{width:"100%"},transparent_10:{opacity:.1},transparent_20:{opacity:.2},transparent_30:{opacity:.3},transparent_40:{opacity:.4},transparent_50:{opacity:.5},transparent_60:{opacity:.6},transparent_70:{opacity:.7},transparent_80:{opacity:.8},transparent_90:{opacity:.9},transparent_100:{opacity:1},headerRow:{paddingLeft:8,height:38,whiteSpace:"nowrap",userSelect:"none"},buttonClearFilter:{position:"relative",float:"right",padding:0},buttonClearFilterIcon:{zIndex:2,position:"absolute",top:0,left:0,color:"#FF0000",opacity:.7},tableDiv:{paddingTop:0,paddingLeft:0,width:"calc(100% - 8px)",height:"calc(100% - 38px)",overflow:"auto"},tableRow:i=>({pl:1,height:Ye,lineHeight:`${Ye}px`,verticalAlign:"top",userSelect:"none",position:"relative",width:"100%","&:hover":{background:`${i.palette.mode==="dark"?i.palette.primary.dark:i.palette.primary.light} !important`,color:E.invertColor(i.palette.primary.main,!0)},whiteSpace:"nowrap",flexWrap:"nowrap"}),tableRowLines:i=>({borderBottom:`1px solid ${i.palette.mode==="dark","#8888882e"}`,"& > div":{borderRight:`1px solid ${i.palette.mode==="dark","#8888882e"}`}}),tableRowNoDragging:{cursor:"pointer"},tableRowAlias:{height:Ye+10},tableRowAliasReadWrite:{height:Ye+22},tableRowFocused:i=>({"&:after":{content:'""',position:"absolute",top:1,left:1,right:1,bottom:1,border:i.palette.mode?"1px dotted #000":"1px dotted #FFF"}}),checkBox:{padding:0},cellId:{position:"relative",fontSize:"1rem",overflow:"hidden",textOverflow:"ellipsis","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"},"& .iconOwn":{display:"block",width:Ye-4,height:Ye-4,mt:"2px",float:"right"},"&:hover .iconOwn":{display:"none"},"& *":{width:"initial"}},cellIdSpan:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},cellIdIconFolder:i=>({marginRight:8,width:Ye-4,height:Ye-4,cursor:"pointer",color:i.palette.secondary.main||"#fbff7d",verticalAlign:"top"}),cellIdIconDocument:{verticalAlign:"middle",marginLeft:(Ye-Te)/2,marginRight:8,width:Te,height:Te},cellIdIconOwn:{},cellCopyButton:{width:Te,height:Te,top:(Ye-Te)/2,opacity:.8,position:"absolute",right:3},cellCopyButtonInDetails:{width:Te,height:Te,top:(Ye-Te)/2,opacity:.8},cellEditButton:{width:Te,height:Te,color:"white",position:"absolute",top:(Ye-Te)/2,right:Te+3,opacity:.7,"&:hover":{opacity:1}},cellName:{display:"inline-block",verticalAlign:"top",fontSize:14,ml:"5px",overflow:"hidden",textOverflow:"ellipsis",position:"relative","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellNameWithDesc:{lineHeight:"normal"},cellNameDivDiv:{},cellDescription:{fontSize:10,opacity:.5,fontStyle:"italic"},cellIdAlias:i=>({fontStyle:"italic",fontSize:12,opacity:.7,"&:hover":{color:i.palette.mode==="dark"?"#009900":"#007700"}}),cellIdAliasReadWriteDiv:{height:24,marginTop:-5},cellIdAliasAlone:{lineHeight:0},cellIdAliasReadWrite:{lineHeight:"12px"},cellType:{display:"inline-block",verticalAlign:"top","& .itemIcon":{verticalAlign:"middle",width:Is,height:Is,display:"inline-block"},"& .itemIconFolder":{marginLeft:3}},cellRole:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellRoom:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellEnumParent:{opacity:.4},cellFunc:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValue:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValueButton:{marginTop:5},cellValueButtonFalse:{opacity:.3},cellAdapter:{display:"inline-block",verticalAlign:"top"},cellValueTooltip:{fontSize:12},cellValueText:{width:"100%",height:Ye,fontSize:16,display:"flex",overflow:"hidden",textOverflow:"ellipsis",position:"relative",verticalAlign:"top","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellValueFile:{color:"#2837b9"},cellValueTooltipTitle:{fontStyle:"italic",width:100,display:"inline-block"},cellValueTooltipValue:{width:120,display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis"},cellValueTooltipImage:{width:100,height:"auto"},cellValueTooltipBoth:{width:220,display:"inline-block",whiteSpace:"nowrap"},cellValueTooltipBox:{width:250,overflow:"hidden",pointerEvents:"none"},tooltip:{pointerEvents:"none"},cellValueTextUnit:{marginLeft:4,opacity:.8,display:"inline-block"},cellValueTextState:{opacity:.7},cellValueTooltipCopy:{position:"absolute",bottom:3,right:3},cellValueTooltipEdit:{position:"absolute",bottom:3,right:15},cellButtons:{display:"inline-block",verticalAlign:"top"},cellButtonsButton:{display:"inline-block",opacity:.5,width:Te+4,height:Te+4,"&:hover":{opacity:1},p:0,mt:"-2px"},cellButtonsEmptyButton:{fontSize:12},cellButtonMinWidth:{minWidth:40},cellButtonsButtonAlone:{ml:`${Te+6}px`,pt:0,mt:"-2px"},cellButtonsButtonWithCustoms:i=>({color:i.palette.mode==="dark"?i.palette.primary.main:i.palette.secondary.main}),cellButtonsButtonWithoutCustoms:{opacity:.2},cellButtonsValueButton:i=>({position:"absolute",top:Te/2-2,opacity:.7,width:Te-2,height:Te-2,color:i.palette.action.active,"&:hover":{opacity:1}}),cellButtonsValueButtonCopy:{right:8,cursor:"pointer"},cellButtonsValueButtonEdit:{right:Te/2+16},cellDetailsLine:{display:"flex",alignItems:"center",width:"100%",height:32,fontSize:16},cellDetailsName:{fontWeight:"bold",marginRight:8,minWidth:80},filteredOut:{opacity:.5},filteredParentOut:{opacity:.3},filterInput:{mt:0,mb:0},selectIcon:{width:24,height:24,marginRight:4},itemSelected:i=>({background:`${i.palette.primary.main} !important`,color:`${E.invertColor(i.palette.primary.main,!0)} !important`}),header:{width:"100%"},headerCell:{display:"inline-block",verticalAlign:"top"},headerCellValue:{paddingTop:4,fontSize:16},visibleButtons:{color:"#2196f3",opacity:.7},grow:{flexGrow:1},enumIconDiv:{marginRight:8,width:32,height:32,borderRadius:8,background:"#FFFFFF"},enumIcon:{marginTop:4,marginLeft:4,width:24,height:24},enumDialog:{overflow:"hidden"},enumList:{minWidth:250,height:"calc(100% - 50px)",overflow:"auto"},enumCheckbox:{minWidth:0},buttonDiv:{display:"flex",height:"100%",alignItems:"center"},aclText:{fontSize:13,marginTop:6},rightsObject:{color:"#55ff55",paddingLeft:3},rightsState:{color:"#86b6ff",paddingLeft:3},textCenter:{padding:12,textAlign:"center"},tooltipAccessControl:{display:"flex",flexDirection:"column"},fontSizeTitle:{"@media screen and (max-width: 465px)":{"& *":{fontSize:12}}},draggable:{cursor:"copy"},nonDraggable:{cursor:"no-drop"},iconDeviceConnected:i=>({color:i.palette.mode==="dark"?go:To,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceDisconnected:i=>({color:i.palette.mode==="dark"?yo:Do,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceError:i=>({color:i.palette.mode==="dark"?pu:Ou,opacity:.8,position:"absolute",top:4,right:50,width:20}),resizeHandle:{display:"block",position:"absolute",cursor:"col-resize",width:7,top:2,bottom:2,zIndex:1},resizeHandleRight:{right:3,borderRight:"2px dotted #888","&:hover":{borderColor:"#ccc",borderRightStyle:"solid"},"&.active":{borderColor:"#517ea5",borderRightStyle:"solid"}},invertedBackground:i=>({backgroundColor:i.palette.mode==="dark"?"#9a9a9a":"#565656",padding:"0 3px",borderRadius:"2px 0 0 2px"}),invertedBackgroundFlex:i=>({backgroundColor:i.palette.mode==="dark"?"#9a9a9a":"#565656",borderRadius:"0 2px 2px 0"}),contextMenuEdit:i=>({color:i.palette.mode==="dark"?"#ffee48":"#cbb801"}),contextMenuEditValue:i=>({color:i.palette.mode==="dark"?"#5dff45":"#1cd301"}),contextMenuView:i=>({color:i.palette.mode==="dark"?"#FFF":"#000"}),contextMenuCustom:i=>({color:i.palette.mode==="dark"?"#42eaff":"#01bbc2"}),contextMenuACL:i=>({color:i.palette.mode==="dark"?"#e079ff":"#500070"}),contextMenuRoom:i=>({color:i.palette.mode==="dark"?"#ff9a33":"#642a00"}),contextMenuRole:i=>({color:i.palette.mode==="dark"?"#ffdb43":"#562d00"}),contextMenuDelete:i=>({color:i.palette.mode==="dark"?"#ff4f4f":"#cf0000"}),contextMenuKeys:{marginLeft:8,opacity:.7,fontSize:"smaller"},contextMenuWithSubMenu:{display:"flex"},...bt},ja={state:n.createElement(Xs,{className:"itemIcon",style:{verticalAlign:"middle"}}),channel:n.createElement(Tu,{className:"itemIcon",style:{verticalAlign:"middle"}}),device:n.createElement(yu,{className:"itemIcon",style:{verticalAlign:"middle"}}),adapter:n.createElement(K4e,{className:"itemIcon",style:{verticalAlign:"middle"}}),meta:n.createElement(tr,{className:"itemIcon",style:{verticalAlign:"middle"}}),instance:n.createElement(tLe,{className:"itemIcon",style:{color:"#7da7ff",verticalAlign:"middle"}}),enum:n.createElement(Xl,{className:"itemIcon",style:{verticalAlign:"middle"}}),chart:n.createElement(Zl,{className:"itemIcon",style:{verticalAlign:"middle"}}),config:n.createElement(Fr,{className:"itemIcon",style:{verticalAlign:"middle"}}),group:n.createElement(Qo,{className:"itemIcon",style:{verticalAlign:"middle"}}),user:n.createElement(vo,{className:"itemIcon",style:{verticalAlign:"middle"}}),host:n.createElement(Uo,{className:"itemIcon",style:{verticalAlign:"middle"}}),schedule:n.createElement(Vl,{className:"itemIcon",style:{verticalAlign:"middle"}}),script:n.createElement(Po,{className:"itemIcon",style:{verticalAlign:"middle"}}),folder:n.createElement(ms,{className:"itemIcon itemIconFolder",style:{verticalAlign:"middle"}})},je={xs:{idWidth:"100%",fields:[],widths:{}},sm:{idWidth:300,fields:["room","val"],widths:{room:100,val:200}},md:{idWidth:300,fields:["room","func","val","buttons"],widths:{name:200,room:150,func:150,val:120,buttons:120}},lg:{idWidth:300,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:300,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:165,lastChange:165}},xl:{idWidth:550,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:400,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:170,lastChange:170}}};let ga=!1;const Ds={id:"",name:"",room:[],func:[],role:[],type:[],custom:[],expertMode:!1};class Ki extends ze{info={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:{},customs:[],enums:[],hasSomeCustoms:!1,aliasesMap:{}};localStorage=window._localStorage||window.localStorage;tableRef;pausedSubscribes=!1;selectFirst;root=null;states={};subscribes=[];unsubscribeTimer=null;statesUpdateTimer=null;objectsUpdateTimer=null;visibleCols;texts;possibleCols;imagePrefix;adapterColumns=[];styleTheme="";edit={id:"",val:"",q:0,ack:!1};levelPadding;customWidth=!1;resizeTimeout=null;resizerNextName=null;resizerActiveName=null;resizerCurrentWidths={};resizeLeft=!1;resizerOldWidth=0;resizerMin=0;resizerNextMin=0;resizerOldWidthNext=0;resizerPosition=0;resizerActiveDiv=null;resizerNextDiv=null;storedWidths=null;systemConfig;objects;defaultHistory="";ctrlPressed=!1;columnsVisibility={};changedIds=null;contextMenu=null;recordStates=[];styles={};expertMode=!1;customColumnDialog=null;constructor(e){super(e);const t=this.localStorage.getItem(`${e.dialogName||"App"}.objectSelected`)||"";if(this.selectFirst="",this.expertMode=!!this.props.expertMode,t.startsWith("["))try{const d=JSON.parse(t);this.selectFirst=d[0]||""}catch{}else this.selectFirst=t;let s;const r=this.localStorage.getItem(`${e.dialogName||"App"}.objectExpanded`)||"[]";try{s=JSON.parse(r)}catch{s=[]}let o;const M=e.defaultFilters?"":this.localStorage.getItem(`${e.dialogName||"App"}.objectFilter`)||"";if(M)try{o=JSON.parse(M)}catch{o={...Ds}}else e.defaultFilters&&typeof e.defaultFilters=="object"?o={...e.defaultFilters}:o={...Ds};if(typeof o.room=="string"&&o.room&&(o.room=[o.room].filter(d=>d),o.room.length||delete o.room),typeof o.func=="string"&&o.func&&(o.func=[o.func].filter(d=>d),o.func.length||delete o.func),typeof o.role=="string"&&o.role&&(o.role=[o.role].filter(d=>d),o.role.length||delete o.role),typeof o.type=="string"&&(o.type=[o.type].filter(d=>d),o.type.length||delete o.type),typeof o.custom=="string"&&(o.custom=[o.custom].filter(d=>d),o.custom.length||delete o.custom),o.expertMode=e.expertMode!==void 0?e.expertMode:(window._sessionStorage||window.sessionStorage).getItem("App.expertMode")==="true",this.tableRef=ba(),this.visibleCols=e.columns||je[e.width||"lg"].fields,e.types&&e.types.length===1){const d=this.visibleCols.indexOf("type");d!==-1&&this.visibleCols.splice(d,1)}this.possibleCols=je.xl.fields;let a=null;if(e.router){const d=e.router.getLocation();d.id&&d.dialog==="customs"&&(a=[d.id],this.pauseSubscribe(!0))}let u;Array.isArray(e.selected)?u=e.selected:u=[e.selected||""],u=u.map(d=>d.replace(/["']/g,"")).filter(d=>d),this.selectFirst=u.length&&u[0]?u[0]:this.selectFirst;const l=this.localStorage.getItem(`${e.dialogName||"App"}.columns`);let N;try{N=l?JSON.parse(l):null}catch{N=null}let c=null;try{c=c?JSON.parse(c):{}}catch{c={}}this.imagePrefix=e.imagePrefix||".";let L;const j=this.localStorage.getItem(`${e.dialogName||"App"}.foldersFirst`);j==="false"?L=!1:j==="true"?L=!0:L=e.foldersFirst===void 0?!0:e.foldersFirst;let g=!1;try{g=this.props.objectStatesView&&JSON.parse(this.localStorage.getItem(`${e.dialogName||"App"}.objectStatesView`)||"")||!1}catch{}this.state={aliasMenu:"",beautifyJsonExport:!0,columns:N,columnsAuto:this.localStorage.getItem(`${e.dialogName||"App"}.columnsAuto`)!=="false",columnsDialogTransparent:100,columnsEditCustomDialog:null,columnsForAdmin:null,columnsSelectorShow:!1,columnsWidths:c,customColumnDialogValueChanged:!1,customDialog:a,depth:0,editObjectAlias:!1,editObjectDialog:"",enumDialog:null,excludeSystemRepositoriesFromExport:!0,excludeTranslations:!1,expandAllVisible:!1,expanded:s,filter:o,filterKey:0,focused:this.localStorage.getItem(`${e.dialogName||"App"}.focused`)||"",foldersFirst:L,linesEnabled:this.localStorage.getItem(`${e.dialogName||"App"}.lines`)==="true",loaded:!1,noStatesByExportImport:!1,roleDialog:null,scrollBarWidth:16,selected:u,selectedNonObject:this.localStorage.getItem(`${e.dialogName||"App"}.selectedNonObject`)||"",showAliasEditor:"",showAllExportOptions:!1,showContextMenu:null,showDescription:this.localStorage.getItem(`${e.dialogName||"App"}.desc`)!=="false",showExportDialog:!1,showImportDialog:!1,showImportMenu:null,showRenameDialog:null,statesView:g,toast:"",tooltipInfo:null,viewFileDialog:""},this.texts={name:e.t("ra_Name"),categories:e.t("ra_Categories"),value:e.t("ra_tooltip_value"),ack:e.t("ra_tooltip_ack"),ts:e.t("ra_tooltip_ts"),lc:e.t("ra_tooltip_lc"),from:e.t("ra_tooltip_from"),user:e.t("ra_tooltip_user"),c:e.t("ra_tooltip_comment"),quality:e.t("ra_tooltip_quality"),editObject:e.t("ra_tooltip_editObject"),deleteObject:e.t("ra_tooltip_deleteObject"),customConfig:e.t("ra_tooltip_customConfig"),copyState:e.t("ra_tooltip_copyState"),editState:e.t("ra_tooltip_editState"),ctrlForLink:e.t("ra_tooltip_ctrlForLink"),close:e.t("ra_Close"),filter_id:e.t("ra_filter_id"),filter_name:e.t("ra_filter_name"),filter_type:e.t("ra_filter_type"),filter_role:e.t("ra_filter_role"),filter_room:e.t("ra_filter_room"),filter_func:e.t("ra_filter_func"),filter_custom:e.t("ra_filter_customs"),filterCustomsWithout:e.t("ra_filter_customs_without"),objectChangedByUser:e.t("ra_object_changed_by_user"),objectChangedBy:e.t("ra_object_changed_by"),objectChangedFrom:e.t("ra_state_changed_from"),stateChangedBy:e.t("ra_state_changed_by"),stateChangedFrom:e.t("ra_state_changed_from"),ownerGroup:e.t("ra_Owner group"),ownerUser:e.t("ra_Owner user"),showAll:e.t("ra_show_all"),deviceError:e.t("ra_Error"),deviceDisconnected:e.t("ra_Disconnected"),deviceConnected:e.t("ra_Connected"),aclOwner_read_object:e.t("ra_aclOwner_read_object"),aclOwner_read_state:e.t("ra_aclOwner_read_state"),aclOwner_write_object:e.t("ra_aclOwner_write_object"),aclOwner_write_state:e.t("ra_aclOwner_write_state"),aclGroup_read_object:e.t("ra_aclGroup_read_object"),aclGroup_read_state:e.t("ra_aclGroup_read_state"),aclGroup_write_object:e.t("ra_aclGroup_write_object"),aclGroup_write_state:e.t("ra_aclGroup_write_state"),aclEveryone_read_object:e.t("ra_aclEveryone_read_object"),aclEveryone_read_state:e.t("ra_aclEveryone_read_state"),aclEveryone_write_object:e.t("ra_aclEveryone_write_object"),aclEveryone_write_state:e.t("ra_aclEveryone_write_state"),create:e.t("ra_Create"),createBooleanState:e.t("ra_create_boolean_state"),createNumberState:e.t("ra_create_number_state"),createStringState:e.t("ra_create_string_state"),createState:e.t("ra_create_state"),createChannel:e.t("ra_create_channel"),createDevice:e.t("ra_create_device"),createFolder:e.t("ra_Create folder")},this.levelPadding=e.levelPadding||yLe;const y=this.localStorage.getItem(`${this.props.dialogName||"App"}.table`);if(y)try{const d=JSON.parse(y),I=this.props.width||"lg";this.storedWidths=JSON.parse(JSON.stringify(je[I])),Object.keys(d).forEach(m=>{m==="id"?je[I].idWidth=d.id:m==="nameHeader"?je[I].widths.name=d[m]:je[I].widths[m]!==void 0&&(je[I].widths[m]=d[m])}),this.customWidth=!0}catch{}this.calculateColumnsVisibility()}async loadAllObjects(e){var s;const t=this.props;try{await new Promise(l=>{this.setState({updating:!0},()=>l())});const r=(t.objectsWorker?await t.objectsWorker.getObjects(e):await t.socket.getObjects(e,!0))||{};if(t.types&&Ee.isWeb())for(let l=0;l{try{if(l(r[N]))this.objects[N]=r[N];else{const c=r[N]&&r[N].type;c&&(c==="channel"||c==="device"||c==="folder"||c==="adapter"||c==="instance")&&(this.objects[N]=r[N])}}catch(c){console.log(`Error by filtering of "${N}": ${c}`)}})}else if(t.types){this.objects={};const l=t.types;Object.keys(r).forEach(N=>{var L;const c=(L=r[N])==null?void 0:L.type;c&&(c==="channel"||c==="device"||c==="enum"||c==="folder"||c==="adapter"||c==="instance"||l.includes(c))&&(this.objects[N]=r[N])})}else this.objects=r;t.setObjectsReference&&t.setObjectsReference(this.objects),this.defaultHistory=this.systemConfig.common.defaultHistory,this.defaultHistory&&t.socket.getState(`system.adapter.${this.defaultHistory}.alive`).then(l=>{l!=null&&l.val||(this.defaultHistory="")}).catch(l=>window.alert(`Cannot get state: ${l}`));const o=await this.getAdditionalColumns();this.calculateColumnsVisibility(null,null,o);const{info:M,root:a}=la(this.objects,{imagePrefix:t.imagePrefix,root:t.root,lang:t.lang,themeType:t.themeType});this.root=a,this.info=M;const u=((s=this.state.selected)==null?void 0:s.length)&&Cu(this.root,this.state.selected[0]);u&&!jo(u,this.state.filter,t.lang,this.objects,void 0,void 0,t.customFilter,t.types)?this.setState({filter:{...Ds},columnsForAdmin:o},()=>{this.doFilter(),this.setState({loaded:!0,updating:!1},()=>this.expandAllSelected(()=>this.onAfterSelect()))}):(this.doFilter(),this.setState({loaded:!0,updating:!1,columnsForAdmin:o},()=>this.expandAllSelected(()=>this.onAfterSelect())))}catch(r){this.showError(r)}}expandAllSelected(e){const t=[...this.state.expanded];let s=!1;this.state.selected.forEach(r=>{const o=r.split("."),M=[];for(let a=0;a!this.objects[N]))&&((u=(a=this.props).onSelect)==null||u.call(a,this.state.selected,null,e))}else this.localStorage.removeItem(`${this.props.dialogName||"App"}.objectSelected`),this.state.selected.length?this.setState({selected:[]},()=>{this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}):this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}static getDerivedStateFromProps(e,t){const s={};let r=!1;return e.expertMode!==void 0&&e.expertMode!==t.filter.expertMode&&(r=!0,s.filter={...t.filter},s.filter.expertMode=e.expertMode),r?s:null}async componentDidMount(){await this.loadAllObjects(!ga),this.props.objectsWorker?this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker):await this.props.socket.subscribeObject("*",this.onObjectChange),ga=!0,window.addEventListener("contextmenu",this.onContextMenu,!0),window.addEventListener("keydown",this.onKeyPress,!0),window.addEventListener("keyup",this.onKeyPress,!0),this.props.onAllLoaded&&setTimeout(()=>{var e,t;(t=(e=this.props).onAllLoaded)==null||t.call(e)},100)}onKeyPress=e=>{e.type==="keydown"&&e.ctrlKey&&!this.ctrlPressed?(this.ctrlPressed=!0,this.tableRef.current&&(this.tableRef.current.className="highlight-link")):e.type==="keyup"&&!e.ctrlKey&&this.ctrlPressed&&(this.ctrlPressed=!1,this.tableRef.current&&(this.tableRef.current.className=""))};componentWillUnmount(){window.removeEventListener("contextmenu",this.onContextMenu,!0),window.removeEventListener("keydown",this.onKeyPress,!0),window.removeEventListener("keyup",this.onKeyPress,!0),this.props.objectsWorker?this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker,!0):this.props.socket.unsubscribeObject("*",this.onObjectChange).catch(e=>console.error(`Cannot unsubscribe *: ${e}`)),this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.objects={}}showDeleteDialog(e){var u,l,N,c;const{id:t,obj:s,item:r}=e,o=Object.keys(this.objects);o.sort();let M=0;const a=`${t}.`;for(let L=0;La)break;(c=(N=this.props).onObjectDelete)==null||c.call(N,t,!!((u=r.children)!=null&&u.length),!((l=s.common)!=null&&l.dontDelete),M+1)}onContextMenu=e=>{this.contextMenu&&Date.now()-this.contextMenu.ts<2e3?(e.preventDefault(),this.setState({showContextMenu:{item:this.contextMenu.item,position:{left:e.clientX+2,top:e.clientY-6}}})):this.state.showContextMenu&&(e.preventDefault(),this.setState({showContextMenu:null})),this.contextMenu=null};refreshComponent(){this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.loadAllObjects(!0).then(()=>console.log("updated!")).catch(e=>this.showError(e))}renderErrorDialog(){return this.state.error?n.createElement(de,{open:!0,maxWidth:"sm",fullWidth:!0,onClose:()=>this.setState({error:""}),"aria-labelledby":"error-dialog-title","aria-describedby":"error-dialog-description"},n.createElement(Ie,{id:"alert-dialog-title"},this.props.t("ra_Error")),n.createElement(Ae,null,n.createElement(Jt,{id:"alert-dialog-description"},this.state.error)),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.setState({error:""}),color:"primary",autoFocus:!0,startIcon:n.createElement(ve,null)},this.props.t("ra_Ok")))):null}showError(e){this.setState({error:typeof e=="object"?e&&typeof e.toString=="function"?e.toString():JSON.stringify(e):e})}onSelect(e,t,s){if(this.localStorage.setItem(`${this.props.dialogName||"App"}.focused`,e),!this.props.multiSelect)this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))?(this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`),this.state.selected[0]!==e?this.setState({selected:[e],selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),s&&s()}):t&&this.props.onSelect&&this.onAfterSelect(t)):(this.localStorage.setItem(`${this.props.dialogName||"App"}.selectedNonObject`,e),this.setState({selected:[],selectedNonObject:e,focused:e},()=>{this.onAfterSelect(),s&&s()}));else if(this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))){this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`);const r=[...this.state.selected],o=r.indexOf(e);o===-1?(r.push(e),r.sort()):t||r.splice(o,1),this.setState({selected:r,selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),s&&s()})}}_renderDefinedList(e){const t=[...this.possibleCols];if(t.unshift("id"),this.props.columns&&!this.props.columns.includes("buttons")){const s=t.indexOf("buttons");s!==-1&&t.splice(s,1)}return t.filter(s=>e&&(s==="val"||s==="buttons")||!e&&s!=="val"&&s!=="buttons").map(s=>{var r;return n.createElement(IM,{onClick:()=>{if(!this.state.columnsAuto&&s!=="id"){const o=[...this.state.columns||[]],M=o.indexOf(s);M===-1?(o.push(s),o.sort()):o.splice(M,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.calculateColumnsVisibility(null,o),this.setState({columns:o})}},key:s},n.createElement(ne,{edge:"start",disabled:s==="id"||this.state.columnsAuto,checked:s==="id"||!!(this.state.columnsAuto?this.visibleCols.includes(s):(r=this.state.columns)!=null&&r.includes(s)),disableRipple:!0}),n.createElement(nt,{primary:this.texts[`filter_${s}`]||this.props.t(`ra_${s}`)}))})}renderColumnsSelectorDialog(){return this.state.columnsSelectorShow?n.createElement(de,{onClose:()=>this.setState({columnsSelectorShow:!1}),open:!0,sx:{"& .MuiPaper-root":E.getStyle(this.props.theme,C.dialogColumns,C[`transparent_${this.state.columnsDialogTransparent}`])}},n.createElement(Ie,{sx:C.fontSizeTitle},this.props.t("ra_Configure")),n.createElement(Ae,{sx:C.fontSizeTitle},n.createElement(H,{style:C.switchColumnAuto,control:n.createElement(Di,{checked:this.state.foldersFirst,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.foldersFirst`,this.state.foldersFirst?"false":"true"),this.setState({foldersFirst:!this.state.foldersFirst})}}),label:this.props.t("ra_Folders always first")}),n.createElement(H,{style:C.switchColumnAuto,control:n.createElement(Di,{checked:this.state.linesEnabled,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.lines`,this.state.linesEnabled?"false":"true"),this.setState({linesEnabled:!this.state.linesEnabled})}}),label:this.props.t("ra_Show lines between rows")}),n.createElement(H,{style:C.switchColumnAuto,control:n.createElement(Di,{checked:this.state.columnsAuto,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.columnsAuto`,this.state.columnsAuto?"false":"true"),this.state.columnsAuto?this.state.columns?(this.calculateColumnsVisibility(!1),this.setState({columnsAuto:!1})):(this.calculateColumnsVisibility(!1,[...this.visibleCols]),this.setState({columnsAuto:!1,columns:[...this.visibleCols]})):(this.calculateColumnsVisibility(!0),this.setState({columnsAuto:!0}))}}),label:this.props.t("ra_Auto (no custom columns)")}),n.createElement(wM,null,this._renderDefinedList(!1),this.state.columnsForAdmin&&Object.keys(this.state.columnsForAdmin).sort().map(e=>{var t;return(t=this.state.columnsForAdmin)==null?void 0:t[e].map(s=>{var r;return n.createElement(IM,{onClick:()=>{if(!this.state.columnsAuto){const o=[...this.state.columns||[]],M=`_${e}_${s.path}`,a=o.indexOf(M);a===-1?(o.push(M),o.sort()):o.splice(a,1),this.calculateColumnsVisibility(null,o),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.setState({columns:o})}},key:`${e}_${s.name}`},n.createElement(Yt,null,n.createElement(ne,{disabled:this.state.columnsAuto,edge:"start",checked:!this.state.columnsAuto&&((r=this.state.columns)==null?void 0:r.includes(`_${e}_${s.path}`)),disableRipple:!0})),n.createElement(nt,{primary:`${s.name} (${e})`}))})}),this._renderDefinedList(!0))),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.setState({columnsSelectorShow:!1}),color:"primary",startIcon:n.createElement(ge,null)},this.texts.close))):null}async getAdditionalColumns(){try{const e=await this.props.socket.getAdapters();let t=null;return e.forEach(s=>t=this.parseObjectForAdmins(t,s)),t}catch(e){return console.error(`Cannot get adapters: ${e}`),null}}checkUnsubscribes(){for(let e=this.subscribes.length-1;e>=0;e--)this.recordStates.includes(this.subscribes[e])||this.unsubscribe(this.subscribes[e]);this.recordStates=[]}findItem(e,t,s,r){if(t||=e.split("."),s||=this.root,!s||!t.length)return null;if(r=(r?`${r}.`:"")+t.shift(),s.children){const o=s.children.find(M=>M.data.id===r);if(o){if(o.data.id===e)return o;if(t.length)return this.findItem(e,t,o,r)}else return null}return null}onStateChange=(e,t)=>{if(this.states[e]){const s=this.findItem(e);s!=null&&s.data.state&&(s.data.state=void 0)}t?this.states[e]=t:delete this.states[e],this.pausedSubscribes?this.statesUpdateTimer&&(clearTimeout(this.statesUpdateTimer),this.statesUpdateTimer=null):this.statesUpdateTimer||(this.statesUpdateTimer=setTimeout(()=>{this.statesUpdateTimer=null,this.forceUpdate()},300))};parseObjectForAdmins(e,t){var s;if((s=t.common)!=null&&s.adminColumns&&t.common.name){const r=t.common.adminColumns;let o;r&&typeof r!="object"?o=[r]:r&&(o=r);let M;r?M=o.map(a=>{if(typeof a!="object")return{path:a,name:a.split(".").pop()};const u=a;return u.objTypes&&typeof u.objTypes!="object"?u.objTypes=[u.objTypes]:u.objTypes||(u.objTypes=void 0),!u.name&&u.path?{path:u.path,name:u.path.split(".").pop(),width:u.width,edit:!!u.edit,type:u.type,objTypes:u.objTypes}:u.path?{path:u.path,name:Re(u.name||"",this.props.lang),width:u.width,edit:!!u.edit,type:u.type,objTypes:u.objTypes}:(console.warn(`Admin columns for ${t._id} ignored, because path not found`),null)}).filter(a=>a):M=null,M!=null&&M.length&&(e||={},e[t.common.name]=M.sort((a,u)=>a.path>u.path?-1:a.path{if(Array.isArray(e)){let t=null;e.forEach(s=>{const{newInnerState:r,filtered:o}=this.processOnObjectChangeElement(s.id,s.obj);o||(r&&t?Object.assign(t,r):t=r)}),t&&this.setState(t),this.afterObjectUpdated()}};onObjectChange=(e,t)=>{const{newInnerState:s,filtered:r}=this.processOnObjectChangeElement(e,t);r||(s&&this.setState(s),this.afterObjectUpdated())};afterObjectUpdated(){!this.objectsUpdateTimer&&this.objects&&(this.objectsUpdateTimer=setTimeout(()=>{this.objectsUpdateTimer=null;const{info:e,root:t}=la(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=t,this.info=e,this.pausedSubscribes||this.doFilter()},500))}updateAliases(e){var s,r,o;if(!this.objects||!((s=this.info)!=null&&s.aliasesMap)||!(e!=null&&e.startsWith("alias.")))return;const t=Object.keys(this.objects).filter(M=>M.startsWith("alias.0"));this.info.aliasesMap={};for(const M of t){const a=this.objects[M];if((o=(r=a==null?void 0:a.common)==null?void 0:r.alias)!=null&&o.id)if(typeof a.common.alias.id=="string"){const u=a.common.alias.id;this.info.aliasesMap[u]?this.info.aliasesMap[u].includes(M)||this.info.aliasesMap[u].push(M):this.info.aliasesMap[u]=[M]}else{const u=a.common.alias.id.read;u&&(this.info.aliasesMap[u]?this.info.aliasesMap[u].includes(M)||this.info.aliasesMap[u].push(M):this.info.aliasesMap[u]=[M]);const l=a.common.alias.id.write;l&&(this.info.aliasesMap[l]?this.info.aliasesMap[l].includes(M)||this.info.aliasesMap[l].push(M):this.info.aliasesMap[l]=[M])}}}processOnObjectChangeElement(e,t){const s=t==null?void 0:t.type;if(t&&typeof this.props.filterFunc=="function"&&!this.props.filterFunc(t)&&s!=="channel"&&s!=="device"&&s!=="folder"&&s!=="adapter"&&s!=="instance")return{newInnerState:null,filtered:!0};let r=null;if(e.startsWith("system.adapter.")&&(t==null?void 0:t.type)==="adapter"){const o=JSON.parse(JSON.stringify(this.state.columnsForAdmin));this.parseObjectForAdmins(o,t),JSON.stringify(this.state.columnsForAdmin)!==JSON.stringify(o)&&(r={columnsForAdmin:o})}return this.objects||={},t?this.objects[e]=t:this.objects[e]&&delete this.objects[e],this.updateAliases(e),{newInnerState:r,filtered:!1}}subscribe(e){this.subscribes.includes(e)||(this.subscribes.push(e),this.pausedSubscribes||this.props.socket.subscribeState(e,this.onStateChange).catch(t=>console.error(`Cannot subscribe on state ${e}: ${t}`)))}unsubscribe(e){const t=this.subscribes.indexOf(e);t!==-1&&(this.subscribes.splice(t,1),this.states[e]&&delete this.states[e],this.props.socket.unsubscribeState(e,this.onStateChange),this.pausedSubscribes&&console.warn("Unsubscribe during pause?"))}pauseSubscribe(e){!this.pausedSubscribes&&e?(this.pausedSubscribes=!0,this.subscribes.forEach(t=>this.props.socket.unsubscribeState(t,this.onStateChange))):this.pausedSubscribes&&!e&&(this.pausedSubscribes=!1,this.subscribes.forEach(t=>this.props.socket.subscribeState(t,this.onStateChange)))}clearFilter(){JSON.stringify(this.state.filter)!==JSON.stringify(Ds)&&this.setState({filter:{...Ds},filterKey:this.state.filterKey+1},()=>{var e,t;this.doFilter(),(t=(e=this.props).onFilterChanged)==null||t.call(e,{...Ds})})}isFilterEmpty(){var e,t,s,r,o;return!!this.state.filter.id||!!this.state.filter.name||!!((e=this.state.filter.room)!=null&&e.length)||!!((t=this.state.filter.func)!=null&&t.length)||!!((s=this.state.filter.role)!=null&&s.length)||!!((r=this.state.filter.type)!=null&&r.length)||!!((o=this.state.filter.custom)!=null&&o.length)}getFilterInput(e){return n.createElement(NLe,{key:`${e}_${this.state.filterKey}`,styles:this.styles.filterInput,name:e,texts:this.texts,t:this.props.t,initialValue:this.state.filter[e],onChange:(t,s)=>{const r={...this.state.filter};s===void 0?delete r[t]:r[t]=s,this.setState({filter:r},()=>{var o,M;this.doFilter(),(M=(o=this.props).onFilterChanged)==null||M.call(o,r)})}})}getFilterSelect(e,t){return n.createElement(lLe,{key:`${e}_${this.state.filterKey}`,name:e,texts:this.texts,initialValue:this.state.filter[e]||[],values:t,onChange:(s,r)=>{const o={...this.state.filter};r===void 0?delete o[s]:o[s]=r,this.setState({filter:o},()=>{var M,a;this.doFilter(),(a=(M=this.props).onFilterChanged)==null||a.call(M,o)})}})}getFilterSelectRole(){return this.getFilterSelect("role",this.info.roles.map(e=>e.role))}getFilterSelectRoom(){const e=this.info.roomEnums.map(t=>{var s,r,o,M;return{name:Re((r=(s=this.objects[t])==null?void 0:s.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:n.createElement(xe,{src:((M=(o=this.objects[t])==null?void 0:o.common)==null?void 0:M.icon)||"",style:C.selectIcon})}});return this.getFilterSelect("room",e)}getFilterSelectFunction(){const e=this.info.funcEnums.map(t=>{var s,r,o,M;return{name:Re((r=(s=this.objects[t])==null?void 0:s.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:n.createElement(xe,{src:((M=(o=this.objects[t])==null?void 0:o.common)==null?void 0:M.icon)||"",style:C.selectIcon})}});return this.getFilterSelect("func",e)}getFilterSelectType(){const e=this.info.types.map(t=>({name:t,value:t,icon:ja[t]||null}));return this.getFilterSelect("type",e)}getFilterSelectCustoms(){if(this.info.customs.length>1){const e=this.info.customs.map(t=>({name:t==="_"?this.texts.filterCustomsWithout:t,value:t,icon:t==="_"?null:n.createElement(xe,{src:Xi(this.objects,t,this.props.lang,this.imagePrefix)||"",style:C.selectIcon})}));return this.getFilterSelect("custom",e)}return null}onExpandAll(e,t){var r;const s=e||this.root;t||=[],(r=s==null?void 0:s.children)==null||r.forEach(o=>{o.data.sumVisibility&&(t.push(o.data.id),this.onExpandAll(o,t))}),s===this.root&&(t.sort(),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t}))}onCollapseAll(){this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify([])),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,"[]"),this.setState({expanded:[],depth:0,selected:[]},()=>this.onAfterSelect())}expandDepth(e,t,s){var r;e||=this.root,t>0&&((r=e.children)==null||r.forEach(o=>{o.data.sumVisibility&&(oi(s,o.data.id)||(s.push(o.data.id),s.sort()),t-1>0&&this.expandDepth(o,t-1,s))}))}static collapseDepth(e,t){return t.filter(s=>s.split(".").length<=e)}onExpandVisible(){if(this.state.depth<9){const e=this.state.depth+1,t=[...this.state.expanded];this.root&&this.expandDepth(this.root,e,t),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}onStatesViewVisible(){const e=!this.state.statesView;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectStatesView`,JSON.stringify(e)),this.setState({statesView:e})}onCollapseVisible(){if(this.state.depth>0){const e=this.state.depth-1,t=Ki.collapseDepth(e,this.state.expanded);this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}getEnumsForId=e=>{const t=[];return this.info.enums.forEach(s=>{var r,o,M;if((M=(o=(r=this.objects[s])==null?void 0:r.common)==null?void 0:o.members)!=null&&M.includes(e)){const a={_id:this.objects[s]._id,common:JSON.parse(JSON.stringify(this.objects[s].common)),native:this.objects[s].native,type:"enum"};a.common&&(delete a.common.members,delete a.common.custom,delete a.common.mobile),t.push(a)}}),t.length?t:void 0};_createAllEnums=async(e,t)=>{var s,r;for(let o=0;or)break}return e}return[]}async _exportObjects(e){var o;if(e.isAll){ca("allObjects.json",this.objects,e);return}if(!(this.state.selected.length||this.state.selectedNonObject)){window.alert(this.props.t("ra_Save of objects-tree is not possible"));return}const t={},s=this.state.selected[0]||this.state.selectedNonObject,r=this._getSelectedIdsForExport();for(const M of r){if(t[M]=JSON.parse(JSON.stringify(this.objects[M])),((o=t[M])==null?void 0:o.type)==="state"&&!e.noStatesByExportImport){const a=await this.props.socket.getState(M);a&&(t[M].val=a.val,t[M].ack=a.ack)}if(t[M].common){const a=this.getEnumsForId(M);a&&(t[M].common.enums=a)}}ca(`${s}.json`,t,e)}renderExportDialog(){return this.state.showExportDialog===!1?null:n.createElement(de,{open:!0,maxWidth:"lg"},n.createElement(Ie,null,this.props.t("ra_Select type of export")),n.createElement(Ae,null,n.createElement(Jt,null,this.state.filter.expertMode||this.state.showAllExportOptions?n.createElement(n.Fragment,null,this.props.t("ra_You can export all objects or just the selected branch."),n.createElement("br",null),this.props.t("ra_Selected %s object(s)",this.state.showExportDialog),n.createElement("br",null),n.createElement(H,{control:n.createElement(ne,{checked:this.state.noStatesByExportImport,onChange:e=>this.setState({noStatesByExportImport:e.target.checked})}),label:this.props.t("ra_Do not export values of states")}),n.createElement("br",null),this.props.t("These options can reduce the size of the export file:"),n.createElement(H,{control:n.createElement(ne,{checked:this.state.beautifyJsonExport,onChange:e=>this.setState({beautifyJsonExport:e.target.checked})}),label:this.props.t("Beautify JSON output")}),n.createElement("br",null),n.createElement(H,{control:n.createElement(ne,{checked:this.state.excludeSystemRepositoriesFromExport,onChange:e=>this.setState({excludeSystemRepositoriesFromExport:e.target.checked})}),label:this.props.t("Exclude system repositories from export JSON")}),n.createElement(H,{control:n.createElement(ne,{checked:this.state.excludeTranslations,onChange:e=>this.setState({excludeTranslations:e.target.checked})}),label:this.props.t("Exclude translations (except english) from export JSON")})):null)),n.createElement(me,null,this.state.filter.expertMode||this.state.showAllExportOptions?n.createElement(X,{color:"grey",variant:"outlined",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!0,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},n.createElement("span",{style:{marginRight:8}},this.props.t("ra_All objects")),"(",Object.keys(this.objects).length,")"):n.createElement(X,{color:"grey",variant:"outlined",startIcon:n.createElement(lo,null),onClick:()=>this.setState({showAllExportOptions:!0})},this.props.t("ra_Advanced options")),n.createElement(X,{color:"primary",variant:"contained",autoFocus:!0,onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!1,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},n.createElement("span",{style:{marginRight:8}},this.props.t("ra_Only selected")),"(",this.state.showExportDialog,")"),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1}),startIcon:n.createElement(ge,null)},this.props.t("ra_Cancel"))))}renderRenameDialog(){var t;if(!this.state.showRenameDialog)return null;const e=this.props.objectMoveRenameDialog;return n.createElement(e,{expertMode:this.props.expertMode,onClose:()=>this.setState({showRenameDialog:null}),id:this.state.showRenameDialog.id,childrenIds:this.state.showRenameDialog.childrenIds,theme:this.props.theme,socket:this.props.socket,t:this.props.t,objectType:(t=this.objects[this.state.showRenameDialog.id])==null?void 0:t.type})}async parseJsonFile(e){try{const t=JSON.parse(e),s=Object.keys(t).length,r=t._id;if(r===void 0&&s)await this.loadObjects(t),window.alert(this.props.t("ra_%s object(s) processed",s));else{if(!r)return window.alert(this.props.t("ra_Invalid structure"));try{let o,M,a;if(t.common.enums&&(o=t.common.enums,delete t.common.enums),t.val&&(M=t.val,delete t.val),t.ack!==void 0&&(a=t.ack,delete t.ack),await this.props.socket.setObject(t._id,t),t.type==="state")if(M!=null)await this.props.socket.setState(t._id,M,a===void 0?!0:a);else{const u=await this.props.socket.getState(t._id);(!u||u.val===null||u.val===void 0)&&await this.props.socket.setState(t._id,t.common.def===void 0?null:t.common.def,!0)}o&&await this._createAllEnums(o,t._id),window.alert(this.props.t("ra_%s was imported",t._id))}catch(o){window.alert(o)}}}catch(t){window.alert(t)}}handleJsonUpload(e){var r;const t=e.target,s=((r=t.files)==null?void 0:r.length)&&t.files[0];if(s){const o=new FileReader;o.onload=M=>{var a;return this.parseJsonFile((a=M.target)==null?void 0:a.result),null},o.readAsText(s)}else window.alert(this.props.t("ra_Failed to open JSON File"))}toolTipObjectCreating=()=>{var s,r;const{t:e}=this.props;let t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:2},e("ra_Folder → State")),n.createElement("div",{key:3},e("ra_Folder → Channel → State")),n.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),n.createElement("div",{key:5},e("ra_Device → Channel → State")),n.createElement("div",{key:6},e("ra_Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];if(this.state.selected.length||this.state.selectedNonObject){const o=this.state.selected[0]||this.state.selectedNonObject;if(!(o.split(".").length<2||this.objects[o]&&((s=this.objects[o])==null?void 0:s.type)==="state"))if(this.state.filter.expertMode)switch((r=this.objects[o])==null?void 0:r.type){case"device":t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:5},e("ra_Device → Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"folder":t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:2},e("ra_Folder → State")),n.createElement("div",{key:3},e("ra_Folder → Channel → State")),n.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"channel":t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:1},e("ra_Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break}else(o.startsWith("alias.0")||o.startsWith("0_userdata"))&&(t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:2},e("ra_Folder → State")),n.createElement("div",{key:3},e("ra_Folder → Channel → State")),n.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),n.createElement("div",{key:5},e("ra_Device → Channel → State")),n.createElement("div",{key:6},e("ra_Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:7},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:8},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))])}return t.length?t:e("ra_Add new child object to selected parent")};onOpenFile(){const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",t=>this.handleJsonUpload(t),!1),e.click()}renderInputJsonDialog(){const e=this.props.objectBrowserInsertJsonObjects;return this.state.showImportDialog?n.createElement(e,{onClose:t=>{this.setState({showImportDialog:!1}),t&&this.parseJsonFile(t)},themeName:this.props.themeName,themeType:this.props.themeType,t:this.props.t}):null}getToolbar(){let e=!1;if(this.state.selected.length||this.state.selectedNonObject){const t=this.state.selected[0]||this.state.selectedNonObject;t.split(".").length<2||this.objects[t]&&this.objects[t].type==="state"?e=!1:(this.state.filter.expertMode||t.startsWith("alias.0")||t.startsWith("0_userdata"))&&(e=!0)}return n.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center",overflowX:"auto"}},n.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},n.createElement(ae,{title:this.props.t("ra_Refresh tree"),slotProps:{popper:{sx:C.tooltip}}},n.createElement("div",null,n.createElement(P,{onClick:()=>this.refreshComponent(),disabled:this.state.updating,size:"large"},n.createElement(Ba,null)))),this.props.showExpertButton&&!this.props.expertMode&&n.createElement(ae,{title:this.props.t("ra_expertMode"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"expertMode",color:this.state.filter.expertMode?"secondary":"default",onClick:()=>{const t={...this.state.filter};t.expertMode=!t.expertMode,this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(t)),this.setState({filter:t})},size:"large"},n.createElement(lo,null))),!this.props.disableColumnSelector&&this.props.width!=="xs"&&n.createElement(ae,{title:this.props.t("ra_Configure"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"columnSelector",color:this.state.columnsAuto?"primary":"default",onClick:()=>this.setState({columnsSelectorShow:!0}),size:"large"},n.createElement(Yl,null))),this.props.width!=="xs"&&this.state.expandAllVisible&&n.createElement(ae,{title:this.props.t("ra_Expand all nodes"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"expandAll",onClick:()=>this.onExpandAll(),size:"large"},n.createElement(bi,null))),n.createElement(ae,{title:this.props.t("ra_Collapse all nodes"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"collapseAll",onClick:()=>this.onCollapseAll(),size:"large"},n.createElement(ms,null))),this.props.width!=="xs"&&n.createElement(ae,{title:this.props.t("ra_Expand one step node"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"expandVisible",color:"primary",onClick:()=>this.onExpandVisible(),size:"large"},n.createElement(CM,{badgeContent:this.state.depth,color:"secondary",sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}})},n.createElement(bi,null)))),this.props.width!=="xs"&&n.createElement(ae,{title:this.props.t("ra_Collapse one step node"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"collapseVisible",color:"primary",onClick:()=>this.onCollapseVisible(),size:"large"},n.createElement(CM,{sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}}),badgeContent:this.state.depth,color:"secondary"},n.createElement(ms,null)))),this.props.objectStatesView&&n.createElement(ae,{title:this.props.t("ra_Toggle the states view"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:()=>this.onStatesViewVisible(),size:"large"},n.createElement(Ql,{color:this.state.statesView?"primary":"inherit"}))),n.createElement(ae,{title:this.props.t("ra_Show/Hide object descriptions"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.desc`,this.state.showDescription?"false":"true"),this.setState({showDescription:!this.state.showDescription})},size:"large"},n.createElement(vl,{color:this.state.showDescription?"primary":"inherit"}))),this.props.objectAddBoolean?n.createElement(ae,{title:this.toolTipObjectCreating(),slotProps:{popper:{sx:C.tooltip}}},n.createElement("div",null,n.createElement(P,{disabled:!e,onClick:()=>this.setState({modalNewObj:{id:this.state.selected[0]||this.state.selectedNonObject}}),size:"large"},n.createElement(Gr,null)))):null,this.props.objectImportExport&&n.createElement(ae,{title:this.props.t("ra_Add objects tree from JSON file"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:t=>{this.props.objectBrowserInsertJsonObjects?this.setState({showImportMenu:t.currentTarget}):this.onOpenFile()},size:"large"},n.createElement(Ri,null))),this.props.objectBrowserInsertJsonObjects?n.createElement(ss,{anchorEl:this.state.showImportMenu,open:!!this.state.showImportMenu,onClose:()=>this.setState({showImportMenu:null})},n.createElement(te,{onClick:()=>this.setState({showImportMenu:null},()=>this.onOpenFile())},n.createElement(Yt,null,n.createElement(Ul,null)),n.createElement(nt,null,this.props.t("ra_From file"))),n.createElement(te,{onClick:()=>this.setState({showImportMenu:null,showImportDialog:!0})},n.createElement(Yt,null,n.createElement(bl,null)),n.createElement(nt,null,this.props.t("ra_From text")))):null,this.props.objectImportExport&&(!!this.state.selected.length||this.state.selectedNonObject)&&n.createElement(ae,{title:this.props.t("ra_Save objects tree as JSON file"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:()=>this.setState({showExportDialog:this._getSelectedIdsForExport().length}),size:"large"},n.createElement(Ri,{style:{transform:"rotate(180deg)"}})))),!!this.props.objectBrowserEditObject&&this.props.width!=="xs"&&n.createElement("div",{style:{display:"flex",whiteSpace:"nowrap"}},`${this.props.t("ra_Objects")}: ${Object.keys(this.info.objects).length}, ${this.props.t("ra_States")}: ${Object.keys(this.info.objects).filter(t=>this.info.objects[t].type==="state").length}`),this.props.objectEditBoolean&&n.createElement(ae,{title:this.props.t("ra_Edit custom config"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:()=>{var s;const t=this.root?Iu(this.root,"state",this.objects):[];t.length?(this.pauseSubscribe(!0),t.length===1&&(this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,this.state.selected[0]),(s=this.props.router)==null||s.doNavigate(null,"custom",this.state.selected[0])),this.setState({customDialog:t,customDialogAll:!0})):this.setState({toast:this.props.t("ra_please select object")})},size:"large"},n.createElement($l,null))))}toggleExpanded(e){const t=JSON.parse(JSON.stringify(this.state.expanded)),s=t.indexOf(e);s===-1?(t.push(e),t.sort()):t.splice(s,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t})}onCopy(e,t){e.stopPropagation(),e.preventDefault(),t&&(E.copyToClipboard(t),t.length<50?this.setState({toast:this.props.t("ra_Copied %s",t)}):this.setState({toast:this.props.t("ra_Copied")}))}renderTooltipAccessControl=e=>{if(!e)return null;const t=[{value:"0x400",valueNum:1024,title:"read",group:"Owner"},{value:"0x200",valueNum:512,title:"write",group:"Owner"},{value:"0x40",valueNum:64,title:"read",group:"Group"},{value:"0x20",valueNum:32,title:"write",group:"Group"},{value:"0x4",valueNum:4,title:"read",group:"Everyone"},{value:"0x2",valueNum:2,title:"write",group:"Everyone"}],s=[],r=o=>{const M=e[o];t.forEach((a,u)=>{M&a.valueNum&&s.push(n.createElement("span",{key:o+u},this.texts[`acl${a.group}_${a.title}_${o}`],",",n.createElement("span",{style:o==="object"?C.rightsObject:C.rightsState},a.value)))})};return s.push(n.createElement("span",{key:"group"},`${this.texts.ownerGroup}: ${(e.ownerGroup||"").replace("system.group.","")}`)),s.push(n.createElement("span",{key:"owner"},`${this.texts.ownerUser}: ${(e.owner||"").replace("system.user.","")}`)),r("object"),e.state&&r("state"),s.length?n.createElement("span",{style:C.tooltipAccessControl},s.map(o=>o)):null};renderColumnButtons(e,t){var M,a,u,l;if(!t.data.obj)return this.props.onObjectDelete||this.props.objectEditOfAccessControl?n.createElement("div",{style:C.buttonDiv},this.state.filter.expertMode&&this.props.objectEditOfAccessControl?n.createElement(P,{sx:{...C.cellButtonsButton,...C.cellButtonsEmptyButton,...C.cellButtonMinWidth},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},n.createElement("div",{style:{height:15}},"---")):null,this.props.onObjectDelete&&((M=t.children)!=null&&M.length)?n.createElement(P,{sx:{...C.cellButtonsButton,...C.cellButtonsButtonAlone},size:"small","aria-label":"delete",title:this.texts.deleteObject,onClick:()=>{var j;const N=Object.keys(this.objects);N.sort();let c=0;const L=`${e}.`;for(let g=0;gL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((j=t.children)!=null&&j.length),!1,c+1)}},n.createElement(ut,{style:C.cellButtonsButtonIcon})):null):null;t.data.aclTooltip=t.data.aclTooltip||this.renderTooltipAccessControl(t.data.obj.acl);const s=t.data.obj.acl?t.data.obj.type==="state"?t.data.obj.acl.state:t.data.obj.acl.object:0,r=t.data.obj.acl&&(t.data.obj.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object),o=this.state.filter.expertMode||La(t.data.id);return[this.state.filter.expertMode&&this.props.objectEditOfAccessControl?n.createElement(ae,{key:"acl",title:t.data.aclTooltip,slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{sx:{...C.cellButtonsButton,...C.cellButtonMinWidth,opacity:1},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},n.createElement("div",{style:C.aclText},Number.isNaN(Number(s))?Number(r).toString(16):Number(s).toString(16)))):n.createElement("div",{key:"aclEmpty",style:C.cellButtonMinWidth}),o?n.createElement(P,{key:"edit",sx:{marginRight:"2px",...C.cellButtonsButton},size:"small","aria-label":"edit",title:this.texts.editObject,onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.setState({editObjectDialog:e,editObjectAlias:!1})}},n.createElement(Ks,{style:C.cellButtonsButtonIcon})):n.createElement(W,{component:"div",key:"editDisabled",sx:C.cellButtonsButton}),this.props.onObjectDelete&&((a=t.children)!=null&&a.length||!((u=t.data.obj.common)!=null&&u.dontDelete))?n.createElement(P,{key:"delete",sx:C.cellButtonsButton,size:"small","aria-label":"delete",onClick:()=>{var j,g,y;const N=Object.keys(this.objects);N.sort();let c=0;const L=`${e}.`;for(let d=0;dL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((j=t.children)!=null&&j.length),!((y=(g=t.data.obj)==null?void 0:g.common)!=null&&y.dontDelete),c)},title:this.texts.deleteObject},n.createElement(ut,{style:C.cellButtonsButtonIcon})):null,this.props.objectCustomDialog&&this.info.hasSomeCustoms&&t.data.obj.type==="state"&&((l=t.data.obj.common)==null?void 0:l.type)!=="file"?n.createElement(P,{sx:{...C.cellButtonsButton,...t.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:C.cellButtonsButtonWithoutCustoms},key:"custom",size:"small","aria-label":"config",title:this.texts.customConfig,onClick:()=>{var N;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.pauseSubscribe(!0),(N=this.props.router)==null||N.doNavigate(null,"customs",e),this.setState({customDialog:[e],customDialogAll:!1})}},n.createElement(Fr,{style:C.cellButtonsButtonIcon})):null]}readHistory(e){var t,s;if(window.sparkline&&this.defaultHistory&&((s=(t=this.objects[e])==null?void 0:t.common)!=null&&s.custom)&&this.objects[e].common.custom[this.defaultHistory]){const r=new Date;r.setHours(r.getHours()-24),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0);const o=r.getTime();this.props.socket.getHistory(e,{instance:this.defaultHistory,start:o,end:Date.now(),step:36e5,from:!1,ack:!1,q:!1,addId:!1,aggregate:"minmax"}).then(M=>{const a=window.document.getElementsByClassName("sparkline");for(let u=0;uconsole.warn(`Cannot read history: ${M}`))}}getTooltipInfo(e,t){var l,N,c;const s=this.objects[e],r=this.states[e],{valFull:o,fileViewer:M}=Yr({state:r,obj:s,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,full:!0}),a=[];o==null||o.forEach(L=>{L.t===this.texts.quality&&r.q?(a.push(n.createElement("div",{style:C.cellValueTooltipBoth,key:L.t},L.t,": ",L.v)),L.nbr||a.push(n.createElement("br",{key:`${L.t}_br`}))):(a.push(n.createElement("div",{style:C.cellValueTooltipTitle,key:L.t},L.t,": ")),a.push(n.createElement("div",{style:C.cellValueTooltipValue,key:`${L.t}_v`},L.v)),L.nbr||a.push(n.createElement("br",{key:`${L.t}_br`})))});const u=((l=s==null?void 0:s.common)==null?void 0:l.role)||"";M==="image"?a.push(n.createElement("img",{style:C.cellValueTooltipImage,src:r.val,alt:e})):u==="url"||s.common.role==="url.self"||s.common.role==="url.blank"?a.unshift(n.createElement("div",{key:"ctrl",style:{textDecoration:"underline",fontWeight:"bold"}},this.texts.ctrlForLink)):this.defaultHistory&&((c=(N=s==null?void 0:s.common)==null?void 0:N.custom)!=null&&c[this.defaultHistory])&&a.push(n.createElement("svg",{key:"sparkline",className:"sparkline","data-id":e,style:{fill:"#3d85de"},width:"200",height:"30",strokeWidth:"3"})),this.setState({tooltipInfo:{el:a,id:e}},()=>t&&t())}renderColumnValue(e,t,s){var u,l;const r=t.data.obj;if(!r||!this.states)return null;if(((u=r.common)==null?void 0:u.type)==="file")return n.createElement(W,{component:"div",sx:{...C.cellValueText,...C.cellValueFile}},"[file]");if(!this.states[e])return r.type==="state"&&(this.recordStates.includes(e)||this.recordStates.push(e),this.states[e]={val:null},this.subscribe(e)),null;this.recordStates.includes(e)||this.recordStates.push(e);const o=this.states[e];let M=t.data.state;if(!M){const{valText:N}=Yr({state:o,obj:r,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma}),c=[];if(t.data.state={valTextRx:c},c.push(n.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}valText`,style:{whiteSpace:"nowrap",display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}},N.v.toString())),N.u&&c.push(n.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,style:C.cellValueTextUnit,key:`${N.v.toString()}unit`},N.u)),N.s!==void 0&&c.push(n.createElement("span",{style:C.cellValueTextState,className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}states`},"(",N.s,")")),!s){const L=N.c!==void 0?N.c:N.v||"";c.push(n.createElement(Ts,{className:"copyButton",style:this.styles.iconCopy,onClick:j=>this.onCopy(j,L),key:"cc"}))}M=t.data.state}M.style=jLe({state:o,isExpertMode:this.state.filter.expertMode,isButton:t.data.button,nonAckColor:this.props.theme.palette.nonAck});let a=M.valTextRx;return this.state.filter.expertMode||(t.data.button?a=[n.createElement(aLe,{key:"button",style:{color:M.style.color,...C.cellValueButton}})]:t.data.switch&&(a=[n.createElement(Di,{key:"switch",sx:{"& .MuiSwitch-thumb":{color:M.style.color},"& .MuiSwitch-track":{backgroundColor:this.states[e].val&&this.state.selected.includes(e)?this.props.themeType==="dark"?"#FFF !important":"#111 !important":void 0}},checked:!!this.states[e].val})])),n.createElement(ae,{key:"value",title:(l=this.state.tooltipInfo)==null?void 0:l.el,slotProps:{popper:{sx:C.cellValueTooltipBox},tooltip:{sx:C.cellValueTooltip}},onOpen:()=>this.getTooltipInfo(e,()=>this.readHistory(e)),onClose:()=>{var N;return((N=this.state.tooltipInfo)==null?void 0:N.id)===e&&this.setState({tooltipInfo:null})}},n.createElement(W,{component:"div",style:M.style,className:t.data.url?"iob-link":void 0,sx:{...C.cellValueText,height:s?void 0:Ye,"& .admin-button:active":{transform:"translate(0, 2px)"}}},a))}_syncEnum(e,t,s,r){var a,u,l;if(!(t!=null&&t.length)){r&&r();return}const o=t.pop()||"",M=[];if((a=this.info.objects[o])!=null&&a.common){if((u=this.info.objects[o].common.members)!=null&&u.length){const N=this.info.objects[o].common.members.indexOf(e);if(N!==-1&&!s.includes(o)){const c=JSON.parse(JSON.stringify(this.info.objects[o]));c.common.members.splice(N,1),M.push(this.props.socket.setObject(o,c).then(()=>this.info.objects[o]=c).catch(L=>this.showError(L)))}}if(s.includes(o)&&!((l=this.info.objects[o].common.members)!=null&&l.includes(e))){const N=JSON.parse(JSON.stringify(this.info.objects[o]));N.common.members||=[],N.common.members.push(e),N.common.members.sort(),M.push(this.props.socket.setObject(o,N).then(()=>this.info.objects[o]=N).catch(c=>this.showError(c)))}}Promise.all(M).then(()=>{setTimeout(()=>this._syncEnum(e,t,s,r),0)})}syncEnum(e,t,s){const r=[...this.info[t==="func"?"funcEnums":"roomEnums"]];return new Promise(o=>{this._syncEnum(e,r,s,()=>{o()})})}renderEnumDialog(){if(!this.state.enumDialog)return null;const e=this.state.enumDialog.type,t=this.state.enumDialog.item,s=this.state.enumDialogEnums,r=this.state.enumDialog.enumsOriginal,o=(e==="room"?this.info.roomEnums:this.info.funcEnums).map(M=>{var a,u;return{name:Re(((u=(a=this.objects[M])==null?void 0:a.common)==null?void 0:u.name)||M.split(".").pop()||"",this.props.lang),value:M,icon:Xi(this.objects,M,this.props.lang,this.imagePrefix)}}).sort((M,a)=>M.name>a.name?1:-1);return o.forEach(M=>{M.icon&&typeof M.icon=="string"&&(M.icon=n.createElement(W,{style:C.enumIconDiv},n.createElement("img",{src:M.icon,style:C.enumIcon,alt:M.name})))}),n.createElement(de,{sx:{"& .MuiPaper-root":C.enumDialog},onClose:()=>this.setState({enumDialog:null}),"aria-labelledby":"enum-dialog-title",open:!0},n.createElement(Ie,{id:"enum-dialog-title",style:{display:"flex",justifyContent:"space-between",width:"100%",flexWrap:"nowrap",gap:8,paddingRight:12}},e==="func"?this.props.t("ra_Define functions"):this.props.t("ra_Define rooms"),n.createElement(Ct,{color:"primary",disabled:r===JSON.stringify(s),size:"small",onClick:()=>this.syncEnum(t.data.id,e,s).then(()=>this.setState({enumDialog:null,enumDialogEnums:null}))},n.createElement(ve,null))),n.createElement(wM,{sx:{"&.MuiList-root":C.enumList}},o.map(M=>{let a,u,l;typeof M=="object"?(a=M.value,u=M.name,l=M.icon):(a=M,u=M);const N=`checkbox-list-label-${a}`;return n.createElement(cl,{sx:C.headerCellSelectItem,key:a,onClick:()=>{const c=s.indexOf(a),L=JSON.parse(JSON.stringify(this.state.enumDialogEnums));c===-1?(L.push(a),L.sort()):L.splice(c,1),this.setState({enumDialogEnums:L})},secondaryAction:l},n.createElement(Yt,{sx:{"&.MuiListItemIcon-root":C.enumCheckbox}},n.createElement(ne,{edge:"start",checked:s.includes(a),tabIndex:-1,disableRipple:!0,slotProps:{input:{"aria-labelledby":N}}})),n.createElement(nt,{id:N},u))})))}renderEditRoleDialog(){var e,t;if(!this.state.roleDialog||!this.props.objectBrowserEditRole)return null;if(this.state.roleDialog&&this.props.objectBrowserEditRole){const s=this.props.objectBrowserEditRole;return n.createElement(s,{key:"objectBrowserEditRole",id:this.state.roleDialog,socket:this.props.socket,t:this.props.t,roleArray:this.info.roles,commonType:(t=(e=this.info.objects[this.state.roleDialog])==null?void 0:e.common)==null?void 0:t.type,onClose:r=>{r&&(this.info.objects[this.state.roleDialog]=r),this.setState({roleDialog:null})}})}return null}onColumnsEditCustomDialogClose(e){var s,r;const t=this.customColumnDialog;if(e){let o=t.value;t.type==="boolean"?o=o==="true"||o===!0:t.type==="number"&&(o=parseFloat(o)),this.customColumnDialog=null,this.props.socket.getObject(((r=(s=this.state.columnsEditCustomDialog)==null?void 0:s.obj)==null?void 0:r._id)||"").then(M=>{var a;if(M&&TLe(M,(a=this.state.columnsEditCustomDialog)==null?void 0:a.it,o))return this.props.socket.setObject(M._id,M);throw new Error(this.props.t("ra_Cannot update attribute, because not found in the object"))}).then(()=>this.setState({columnsEditCustomDialog:null})).catch(M=>this.showError(M))}else this.customColumnDialog=null,this.setState({columnsEditCustomDialog:null})}renderColumnsEditCustomDialog(){if(!this.state.columnsEditCustomDialog)return null;if(!this.customColumnDialog){const e=Na(this.state.columnsEditCustomDialog.obj,this.state.columnsEditCustomDialog.it);this.customColumnDialog={type:this.state.columnsEditCustomDialog.it.type||typeof e,initValue:(e??"").toString(),value:(e??"").toString()}}return n.createElement(de,{onClose:()=>this.setState({columnsEditCustomDialog:null}),maxWidth:"md","aria-labelledby":"custom-dialog-title",open:!0},n.createElement(Ie,{id:"custom-dialog-title"},`${this.props.t("ra_Edit object field")}: ${this.state.columnsEditCustomDialog.obj._id}`),n.createElement(Ae,null,n.createElement(Jt,{id:"alert-dialog-description"},this.customColumnDialog.type==="boolean"?n.createElement(H,{control:n.createElement(ne,{onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),defaultChecked:this.customColumnDialog.value==="true",onChange:e=>{const t=this.customColumnDialog;t.value=e.target.checked.toString();const s=t.value!==t.initValue;s===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:s})}}),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}):n.createElement(le,{variant:"standard",defaultValue:this.customColumnDialog.value,fullWidth:!0,onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`,onChange:e=>{const t=this.customColumnDialog;t.value=e.target.value;const s=t.value!==t.initValue;s===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:s})},autoFocus:!0}))),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(!0),disabled:!this.state.customColumnDialogValueChanged,color:"primary",startIcon:n.createElement(ve,null)},this.props.t("ra_Update")),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(),startIcon:n.createElement(ge,null)},this.props.t("ra_Cancel"))))}renderCustomValue(e,t,s){const r=Na(e,t);return r!=null?t.edit&&!this.props.notEditable&&(!t.objTypes||t.objTypes.includes(e.type))?n.createElement(W,{component:"div",style:{...C.columnCustom,...C.columnCustomEditable,...C[`columnCustom_${t.align}`]},onClick:()=>this.setState({columnsEditCustomDialog:{item:s,it:t,obj:e},customColumnDialogValueChanged:!1})},r):n.createElement(W,{component:"div",style:{...C.columnCustom,...C[`columnCustom_${t.align}`]}},r):null}renderAliasLink(e,t,s){const r=t||0,o=this.objects[this.info.aliasesMap[e][r]].common.alias.id;return o?n.createElement(W,{component:"div",onClick:M=>{M.stopPropagation(),M.preventDefault();const a=this.info.aliasesMap[e][r];this.info.aliasesMap[e].length>1&&this.setState({aliasMenu:""}),this.onSelect(a),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(a)),100)},sx:s||this.styles.aliasAlone},n.createElement("span",{className:"admin-browser-arrow"},typeof o=="string"||o.read===e&&o.write===e?"↔":o.read===e?"→":"←"),this.info.aliasesMap[e][r]):null}renderLeaf(e,t,s){var Us,bs,$s,Ti,yi,uM,lM,NM,LM,jM,gM,TM,yM,DM;const r=e.data.id;s.count++,t=t===void 0?this.state.expanded.includes(r):t;let o;const M=e.data.obj,a=M==null?void 0:M.type;e.children||a==="folder"||a==="device"||a==="channel"||a==="meta"?o=t?n.createElement(bi,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):n.createElement(ms,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):M&&M.common&&M.common.write===!1&&M.type==="state"?o=n.createElement(eLe,{style:this.styles.cellIdIconDocument}):o=n.createElement(q4e,{style:this.styles.cellIdIconDocument});let u=null;e.data.icon&&(typeof e.data.icon=="string"?e.data.icon.length<3?u=n.createElement("span",{className:"iconOwn",style:C.cellIdIconOwn},e.data.icon):u=n.createElement(xe,{style:C.cellIdIconOwn,className:"iconOwn",src:e.data.icon,alt:""}):u=e.data.icon);const l=M==null?void 0:M.common,N=(M==null?void 0:M.type)&&ja[M.type]||n.createElement("div",{className:"itemIcon"}),c=this.levelPadding*(e.data.level||0);if(e.data.lang!==this.props.lang){const{rooms:Q,per:q}=Au(this.info,r,this.props.lang);e.data.rooms=Q.join(", "),e.data.per=q;const{funcs:Ue,pef:we}=mu(this.info,r,this.props.lang);e.data.funcs=Ue.join(", "),e.data.pef=we,e.data.lang=this.props.lang}const L=this.props.multiSelect&&this.objects[r]&&(!this.props.types||this.props.types.includes(this.objects[r].type))?n.createElement(ne,{style:C.checkBox,checked:this.state.selected.includes(r)}):null;let j=!this.props.notEditable&&a==="state"&&(this.state.filter.expertMode||(l==null?void 0:l.write)!==!1);this.props.objectBrowserViewFile&&(l==null?void 0:l.type)==="file"&&(j=!0);const g=!this.props.notEditable&&this.objects[r]&&(this.state.filter.expertMode||a==="state"||a==="channel"||a==="device"),y=this.state.statesView&&(a==="state"||a==="channel"||a==="device");let d="";const I=[];if(y&&(d=(Us=this.states[r])==null?void 0:Us.from,d===void 0?d=" ":(d=d?d.replace(/^system\.adapter\.|^system\./,""):"",I.push(`${this.texts.stateChangedFrom} ${d}`)),M!=null&&M.user)){const Q=M.user.replace("system.user.","");d+=`/${Q}`,I.push(`${this.texts.stateChangedBy} ${Q}`)}M&&(M.from&&I.push(`${this.texts.objectChangedFrom} ${M.from.replace(/^system\.adapter\.|^system\./,"")}`),M.user&&I.push(`${this.texts.objectChangedBy} ${M.user.replace(/^system\.user\./,"")}`),M.ts&&I.push(`${this.texts.objectChangedByUser} ${E.formatDate(new Date(M.ts),this.props.dateFormat||this.systemConfig.common.dateFormat)}`));let m=!1,w=null;r.startsWith("alias.")&&((bs=l==null?void 0:l.alias)!=null&&bs.id)?(m=typeof l.alias.id=="object",m?w=n.createElement("div",{style:C.cellIdAliasReadWriteDiv},l.alias.id.read?n.createElement(W,{component:"div",onClick:Q=>{Q.stopPropagation(),Q.preventDefault(),this.onSelect(l.alias.id.read),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.read)),100)},sx:this.styles.aliasReadWrite},"←",l.alias.id.read):null,l.alias.id.write?n.createElement(W,{component:"div",onClick:Q=>{Q.stopPropagation(),Q.preventDefault(),this.onSelect(l.alias.id.write),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.write)),100)},sx:this.styles.aliasReadWrite},"→",l.alias.id.write):null):w=n.createElement(W,{component:"div",onClick:Q=>{Q.stopPropagation(),Q.preventDefault(),this.onSelect(l.alias.id),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id)),100)},sx:this.styles.aliasAlone},"→",l.alias.id)):this.info.aliasesMap[r]&&(this.info.aliasesMap[r].length>1?w=n.createElement(W,{component:"div",id:`alias_${r}`,onClick:Q=>{Q.stopPropagation(),Q.preventDefault(),this.setState({aliasMenu:r})},sx:this.styles.aliasAlone},this.props.t("ra_%s links from aliases",this.info.aliasesMap[r].length)):w=this.renderAliasLink(r,0));let O=l==null?void 0:l.color,A;if(O&&!this.state.selected.includes(r)){const Q=this.props.themeName==="dark"?"#1f1f1f":this.props.themeName==="blue"?"#222a2e":"#FFFFFF";E.colorDistance(O,Q)<1e3&&(A=this.props.themeType==="dark"?"#9a9a9a":"#565656")}let h=!1;r==="0_userdata"?(O=Du(this.props.themeType),h=!0):r==="alias"?(O=du(this.props.themeType),h=!0):r==="javascript"?(O=MLe(this.props.themeType),h=!0):r==="system"?(O=zu(this.props.themeType),h=!0):r==="system.adapter"?O=hu(this.props.themeType):(!O||this.state.selected.includes(r))&&(O="inherit");const p=[];if(l!=null&&l.statusStates){const Q={};Object.keys(l.statusStates).forEach(Ue=>{var it;let we=l.statusStates[Ue];we.split(".").length<3&&(we=`${r}.${we}`),Q[Ue]=we,this.states[we]?this.recordStates.includes(we)||this.recordStates.push(we):((it=this.objects[we])==null?void 0:it.type)==="state"&&(this.recordStates.includes(we)||this.recordStates.push(we),this.states[we]={val:null},this.subscribe(we))});let q=!1;l.statusStates.errorId&&this.states[Q.errorId]&&this.states[Q.errorId].val&&(O=this.props.themeType==="dark"?pu:Ou,q=!0,p.push(n.createElement(Pl,{key:"error",style:this.styles.iconDeviceError}))),Q.onlineId&&this.states[Q.onlineId]?q?this.states[Q.onlineId].val?p.push(n.createElement(zs,{key:"conn",style:this.styles.iconDeviceConnected})):p.push(n.createElement(di,{key:"disc",style:this.styles.iconDeviceDisconnected})):this.states[Q.onlineId].val?(O=this.props.themeType==="dark"?go:To,p.push(n.createElement(zs,{key:"conn",style:this.styles.iconDeviceConnected}))):(O=this.props.themeType==="dark"?yo:Do,p.push(n.createElement(di,{key:"disc",style:this.styles.iconDeviceDisconnected}))):Q.offlineId&&this.states[Q.offlineId]&&(q?this.states[Q.offlineId].val?p.push(n.createElement(di,{key:"disc",style:this.styles.iconDeviceDisconnected})):p.push(n.createElement(zs,{key:"conn",style:this.styles.iconDeviceConnected})):this.states[Q.offlineId].val?(O=this.props.themeType==="dark"?yo:Do,p.push(n.createElement(di,{key:"disc",style:this.styles.iconDeviceDisconnected}))):(O=this.props.themeType==="dark"?go:To,p.push(n.createElement(zs,{key:"conn",style:this.styles.iconDeviceConnected}))))}const S=y?E.quality2text((($s=this.states[r])==null?void 0:$s.q)||0).join(", "):null;let f=((Ti=e.data)==null?void 0:Ti.title)||"",$=!1;if(this.state.showDescription){const Q=wu(e.data,this.props.lang);Q&&(f=[n.createElement("div",{key:"name",style:C.cellNameDivDiv},f),n.createElement("div",{key:"desc",style:C.cellDescription},Q)],$=!!Q)}const x=this.props.width==="xs"&&this.state.focused===r,Z=n.createElement(Ut,{container:!0,wrap:"nowrap",direction:"row",sx:C.cellId,style:{width:this.columnsVisibility.id,paddingLeft:c}},n.createElement(Ut,{container:!0,alignItems:"center"},L,o),n.createElement(Ut,{style:{...C.cellIdSpan,...A?this.styles.invertedBackground:void 0,color:O,fontWeight:h?"bold":void 0}},n.createElement(ae,{title:LLe(e.data,this.props.lang),slotProps:{popper:{sx:C.tooltip}}},n.createElement("div",null,e.data.name)),w,p),n.createElement("div",{style:{...C.grow,...A?this.styles.invertedBackgroundFlex:{}}}),n.createElement(Ut,{container:!0,alignItems:"center"},u),this.props.width!=="xs"?n.createElement("div",null,n.createElement(Ts,{className:x?"":"copyButton",style:C.cellCopyButton,onClick:Q=>this.onCopy(Q,r)})):null);let k=x&&f||this.columnsVisibility.name?n.createElement(W,{component:"div",sx:{...C.cellName,...$?C.cellNameWithDesc:void 0,width:this.props.width!=="xs"?this.columnsVisibility.name:void 0,ml:x?0:"5px"}},f,!x&&((yi=e.data)!=null&&yi.title)?n.createElement(W,{style:{color:O}},n.createElement(Ts,{className:"copyButton",style:C.cellCopyButton,onClick:Q=>{var q;return this.onCopy(Q,(q=e.data)==null?void 0:q.title)}})):null):null,Y;this.state.statesView?Y=[x&&y&&((uM=this.states[r])!=null&&uM.from)||this.columnsVisibility.changedFrom?{el:n.createElement("div",{key:"from",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.changedFrom:void 0},title:I.join(` +`)},y&&((lM=this.states[r])!=null&&lM.from)?d:null),type:"from"}:null,x&&S||this.columnsVisibility.qualityCode?{el:n.createElement("div",{key:"q",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.qualityCode:void 0},title:S||""},S),type:"quality"}:null,x&&y&&((NM=this.states[r])!=null&&NM.ts)||this.columnsVisibility.timestamp?{el:n.createElement("div",{key:"ts",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.timestamp:void 0}},y&&((LM=this.states[r])!=null&&LM.ts)?E.formatDate(new Date(this.states[r].ts),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"ts"}:null,x&&y&&((jM=this.states[r])!=null&&jM.lc)||this.columnsVisibility.lastChange?{el:n.createElement("div",{key:"lc",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.lastChange:void 0}},y&&((gM=this.states[r])!=null&&gM.lc)?E.formatDate(new Date(this.states[r].lc),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"lc"}:null]:Y=[x&&(M!=null&&M.type)||this.columnsVisibility.type?{el:n.createElement("div",{key:"type",style:{...C.cellType,width:this.props.width!=="xs"?this.columnsVisibility.type:void 0}},N," ",M==null?void 0:M.type),type:"filter_type"}:null,x&&l||this.columnsVisibility.role?{el:n.createElement("div",{key:"role",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.role:"100%",cursor:this.state.filter.expertMode&&g&&this.props.objectBrowserEditRole?"text":"default"},onClick:!x&&this.state.filter.expertMode&&g&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0},l==null?void 0:l.role),type:"filter_role",onClick:x&&this.state.filter.expertMode&&g&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0}:null,x&&l||this.columnsVisibility.room?{el:n.createElement("div",{key:"room",style:{...C.cellRoom,...e.data.per?C.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.room:"100%",cursor:g?"text":"default"},onClick:!x&&g?()=>{const Q=ys(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:Q,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(Q)}})}:void 0},e.data.rooms),type:"filter_room",onClick:x&&g?()=>{const Q=ys(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:Q,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(Q)}})}:void 0}:null,x&&l||this.columnsVisibility.func?{el:n.createElement("div",{key:"func",style:{...C.cellFunc,...e.data.pef?C.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.func:"100%",cursor:g?"text":"default"},onClick:!x&&g?()=>{const Q=ys(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:Q,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(Q)}})}:void 0},e.data.funcs),type:"filter_func",onClick:x&&g?()=>{const Q=ys(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:Q,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(Q)}})}:void 0}:null];let J=((TM=this.adapterColumns)==null?void 0:TM.map(Q=>n.createElement("div",{style:{...C.cellAdapter,width:this.props.width!=="xs"?this.columnsVisibility[Q.id]:void 0},key:Q.id,title:`${Q.adapter} => ${Q.pathText}`},M?this.renderCustomValue(M,Q,e):null)))||null;const Le=x||this.columnsVisibility.val?this.renderColumnValue(r,e,x):null;let Je=x&&Le||this.columnsVisibility.val?n.createElement("div",{style:{...C.cellValue,width:this.props.width!=="xs"?this.columnsVisibility.val:"calc(100% - 100px)",cursor:j?(l==null?void 0:l.type)==="file"?"zoom-in":e.data.button?"grab":"text":"default"},onClick:Q=>{var q,Ue,we;if(j){if(!(!M||!this.states))if((l==null?void 0:l.type)==="file")this.setState({viewFileDialog:r});else if(e.data.url&&Q.ctrlKey){if((q=this.states[r])!=null&&q.val&&typeof this.states[r].val=="string")if((l==null?void 0:l.role)==="url.self")window.location.href=this.states[r].val;else{const it=window.open(this.states[r].val,"_blank");it==null||it.focus()}}else!this.state.filter.expertMode&&e.data.button?this.props.socket.setState(r,!0).catch(it=>window.alert(`Cannot write state "${r}": ${it}`)):!this.state.filter.expertMode&&e.data.switch?this.props.socket.setState(r,!this.states[r].val).catch(it=>window.alert(`Cannot write state "${r}": ${it}`)):(this.edit={val:this.states[r]?this.states[r].val:"",q:this.states[r]&&this.states[r].q||0,ack:!1,id:r},this.setState({updateOpened:!0}))}else(l==null?void 0:l.role)==="url"||(l==null?void 0:l.role)==="url.blank"&&Q.ctrlKey?(Ue=this.states[r])!=null&&Ue.val&&typeof this.states[r].val=="string"&&window.open(this.states[r].val,"_blank"):(l==null?void 0:l.role)==="url.self"&&Q.ctrlKey&&(we=this.states[r])!=null&&we.val&&typeof this.states[r].val=="string"&&(window.location.href=this.states[r].val)}},Le):null,qe=x||this.columnsVisibility.buttons?n.createElement("div",{style:{...C.cellButtons,width:this.props.width!=="xs"?this.columnsVisibility.buttons:void 0}},this.renderColumnButtons(r,e)):null,us=null;if(this.props.width==="xs"&&this.state.focused===r){Y=Y.filter(q=>q);let Q;Y.length?Q=Y.map(q=>q?n.createElement("div",{key:q.type,style:C.cellDetailsLine},n.createElement("span",{style:C.cellDetailsName},this.texts[q.type],":"),q.el,n.createElement("div",{style:{flexGrow:1}}),q.onClick?n.createElement(Ks,{style:C.cellCopyButtonInDetails,onClick:()=>{q!=null&&q.onClick&&q.onClick()}}):null):null):Q=null,J.length||(J=null),us=n.createElement(Wa,{style:{width:"100%",display:"flex",flexDirection:"column",padding:10,backgroundColor:this.props.theme.palette.mode==="dark"?"#333":"#ccc"}},n.createElement("div",{style:C.cellDetailsLine},n.createElement("div",{style:{flexGrow:1}}),n.createElement(Ts,{style:C.cellCopyButtonInDetails,onClick:q=>this.onCopy(q,r)})),k&&n.createElement("div",{style:C.cellDetailsLine},n.createElement("span",{style:C.cellDetailsName},this.texts.name,":"),k,n.createElement("div",{style:{flexGrow:1}}),(yM=e.data)!=null&&yM.title?n.createElement(Ts,{className:"copyButton",style:C.cellCopyButtonInDetails,onClick:q=>{var Ue;return this.onCopy(q,(Ue=e.data)==null?void 0:Ue.title)}}):null),Q,J&&n.createElement("div",{style:C.cellDetailsLine},J),((DM=this.objects[r])==null?void 0:DM.type)==="state"&&n.createElement("div",{style:C.cellDetailsLine},n.createElement("span",{style:C.cellDetailsName},this.texts.value,":"),Je,n.createElement("div",{style:{flexGrow:1}}),n.createElement(Ts,{className:"copyButton",style:C.cellCopyButtonInDetails,onClick:q=>{const{valText:Ue}=Yr({state:this.states[r],obj:this.objects[r],texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma});this.onCopy(q,Ue.c!==void 0?Ue.c:Ue.v.toString())},key:"cc"})),qe&&n.createElement("div",{style:{...C.cellDetailsLine,justifyContent:"right"}},qe)),k=null,Y=null,J=null,Je=null,qe=null}return{row:n.createElement(Ut,{container:!0,direction:"row",wrap:"nowrap",sx:E.getStyle(this.props.theme,C.tableRow,this.state.linesEnabled&&C.tableRowLines,!this.props.dragEnabled&&C.tableRowNoDragging,w&&C.tableRowAlias,m&&C.tableRowAliasReadWrite,this.state.focused===r&&this.props.multiSelect&&C.tableRowFocused,!e.data.visible&&C.filteredOut,e.data.hasVisibleParent&&!e.data.visible&&!e.data.hasVisibleChildren&&C.filteredParentOut,this.state.selected.includes(r)&&C.itemSelected,this.state.selectedNonObject===r&&C.itemSelected),key:r,id:r,onMouseDown:Q=>{this.onSelect(r);let q;"which"in Q?q=Q.which===3:"button"in Q&&(q=Q.button===2),q?this.contextMenu={item:e,ts:Date.now()}:this.contextMenu=null},onDoubleClick:()=>{e.children?this.toggleExpanded(r):this.onSelect(r,!0)}},Z,k,Y==null?void 0:Y.map(Q=>Q==null?void 0:Q.el),J,Je,qe),details:us}}renderItem(e,t,s){const r=[];s=s||{count:0};const o=this.renderLeaf(e,t,s);let M;const a=this.props.DragWrapper;return this.props.dragEnabled&&a?e.data.sumVisibility?M=n.createElement(a,{key:e.data.id,item:e,style:C.draggable},o.row):M=n.createElement("div",{key:e.data.id,style:C.nonDraggable},o.row):M=o.row,e.data.id&&M&&r.push(M),o.details&&r.push(o.details),t=t===void 0?oi(this.state.expanded,e.data.id):t,(!e.data.id||t)&&(this.state.foldersFirst?e.children&&(r.push(e.children.map(u=>u.children&&(!this.state.columnsSelectorShow||s.count<15)&&u.data.sumVisibility?this.renderItem(u,void 0,s):null)),r.push(e.children.map(u=>!u.children&&(!this.state.columnsSelectorShow||s.count<15)&&u.data.sumVisibility?this.renderItem(u,void 0,s):null))):e.children&&r.push(e.children.map(u=>(!this.state.columnsSelectorShow||s.count<15)&&u.data.sumVisibility?this.renderItem(u,void 0,s):null))),r}calculateColumnsVisibility(e,t,s,r){let o=r||this.state.columnsWidths;const M=s||this.state.columnsForAdmin,a=t||this.state.columns||[],u=typeof e!="boolean"?this.state.columnsAuto:e;o=JSON.parse(JSON.stringify(o)),Object.keys(o).forEach(N=>{o[N]&&(o[N]=parseInt(o[N],10)||0)}),this.adapterColumns=[];const l=je[this.props.width||"lg"].widths;if(u){if(this.columnsVisibility={id:je[this.props.width||"lg"].idWidth,name:this.visibleCols.includes("name")&&l.name||0,nameHeader:this.visibleCols.includes("name")&&l.name||0,type:this.visibleCols.includes("type")&&l.type||0,role:this.visibleCols.includes("role")&&l.role||0,room:this.visibleCols.includes("room")&&l.room||0,func:this.visibleCols.includes("func")&&l.func||0,changedFrom:this.visibleCols.includes("changedFrom")&&l.changedFrom||0,qualityCode:this.visibleCols.includes("qualityCode")&&l.qualityCode||0,timestamp:this.visibleCols.includes("timestamp")&&l.timestamp||0,lastChange:this.visibleCols.includes("lastChange")&&l.lastChange||0,val:this.visibleCols.includes("val")&&l.val||0,buttons:this.visibleCols.includes("buttons")&&l.buttons||0},this.columnsVisibility.name&&!this.customWidth){let N=this.columnsVisibility.id||0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.name=`calc(100% - ${N+5}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${N+5+this.state.scrollBarWidth}px)`}else if(!this.customWidth){let N=0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.id=`calc(100% - ${N+5}px)`}}else{const N=this.props.width||"lg";this.columnsVisibility={id:o.id||je[N].idWidth,name:a.includes("name")&&(o.name||l.name||je[N].widths.name)||0,type:a.includes("type")&&(o.type||l.type||je[N].widths.type)||0,role:a.includes("role")&&(o.role||l.role||je[N].widths.role)||0,room:a.includes("room")&&(o.room||l.room||je[N].widths.room)||0,func:a.includes("func")&&(o.func||l.func||je[N].widths.func)||0};let c=this.columnsVisibility.id;if(this.columnsVisibility.name&&(c+=this.columnsVisibility.type||0,c+=this.columnsVisibility.role||0,c+=this.columnsVisibility.room||0,c+=this.columnsVisibility.func||0),M&&a&&Object.keys(M).sort().forEach(L=>M[L].forEach(j=>{const g=`_${L}_${j.path}`;if(a.includes(g)){const y={adapter:L,id:`_${L}_${j.path}`,name:j.name,path:j.path.split("."),pathText:j.path};j.edit&&(y.edit=!0,j.type&&(y.type=j.type),j.objTypes&&(y.objTypes=j.objTypes)),this.adapterColumns.push(y),this.columnsVisibility[g]=o[y.id]||j.width||je[N].widths.func||je.xl.widths.func||0,c+=this.columnsVisibility[g]}else this.columnsVisibility[g]=0})),this.adapterColumns.sort((L,j)=>L.id>j.id?-1:L.idg==="id"||typeof this.columnsVisibility[g]=="string"||!this.columnsVisibility[g]?j:j+this.columnsVisibility[g],0);this.columnsVisibility.id=`calc(100% - ${L}px)`}}}resizerMouseMove=e=>{if(this.resizerActiveDiv){let t,s;this.resizeLeft?(t=this.resizerOldWidth-e.clientX+this.resizerPosition,s=this.resizerOldWidthNext+e.clientX-this.resizerPosition):(t=this.resizerOldWidth+e.clientX-this.resizerPosition,s=this.resizerOldWidthNext-e.clientX+this.resizerPosition),this.resizerActiveName&&this.resizerNextName&&(!this.resizerMin||t>this.resizerMin)&&(!this.resizerNextMin||s>this.resizerNextMin)&&(this.resizerCurrentWidths[this.resizerActiveName]=t,this.resizerCurrentWidths[this.resizerNextName]=s,this.resizerActiveDiv.style.width=`${t}px`,this.resizerNextDiv&&(this.resizerNextDiv.style.width=`${s}px`),this.columnsVisibility[this.resizerActiveName]=t,this.columnsVisibility[this.resizerNextName]=s,this.resizerNextName==="nameHeader"?(this.columnsVisibility.name=s-this.state.scrollBarWidth,this.resizerCurrentWidths.name=s-this.state.scrollBarWidth):this.resizerActiveName==="nameHeader"&&(this.columnsVisibility.name=t-this.state.scrollBarWidth,this.resizerCurrentWidths.name=t-this.state.scrollBarWidth),this.customWidth=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=null,this.forceUpdate()},200))}};resizerMouseUp=()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveName=null,this.resizerNextName=null,this.resizerActiveDiv=null,this.resizerNextDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{if(this.storedWidths||=JSON.parse(JSON.stringify(je[this.props.width||"lg"])),this.resizerCurrentWidths||={},this.resizerActiveDiv=e.target.parentNode,this.resizerActiveName=this.resizerActiveDiv.dataset.name||null,this.resizerActiveName){let t=0;if(e.target.dataset.left==="true"){this.resizeLeft=!0,this.resizerNextDiv=this.resizerActiveDiv.previousElementSibling;let s=this.resizerNextDiv.querySelector(".iob-ob-resize-handler");for(;this.resizerNextDiv&&!s&&t<10;)this.resizerNextDiv=this.resizerNextDiv.previousElementSibling,s=this.resizerNextDiv.querySelector(".iob-ob-resize-handler"),t++;(s==null?void 0:s.dataset.left)!=="true"&&(this.resizerNextDiv=this.resizerNextDiv.nextElementSibling)}else this.resizeLeft=!1,this.resizerNextDiv=this.resizerActiveDiv.nextElementSibling;this.resizerNextName=this.resizerNextDiv.dataset.name||null,this.resizerMin=parseInt(this.resizerActiveDiv.dataset.min,10)||0,this.resizerNextMin=parseInt(this.resizerNextDiv.dataset.min,10)||0,this.resizerPosition=e.clientX,this.resizerCurrentWidths[this.resizerActiveName]=this.resizerActiveDiv.offsetWidth,this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveName],this.resizerNextName&&(this.resizerCurrentWidths[this.resizerNextName]=this.resizerNextDiv.offsetWidth,this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerNextName]),window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};navigateKeyPress(e){var s,r;const t=this.state.selectedNonObject||this.state.selected[0];if(t){if(e.code==="ArrowUp"||e.code==="ArrowDown"){e.preventDefault();const o=[];(s=this.tableRef.current)==null||s.childNodes.forEach(l=>o.push(l.id));const M=o.indexOf(t),a=e.code==="ArrowDown"?M+1:M-1,u=o[a]||t;this.onSelect(u),this.scrollToItem(u)}if((e.code==="ArrowRight"||e.code==="ArrowLeft")&&this.toggleExpanded(t),e.code==="Delete"&&this.root&&t){const o=Ki.getItemFromRoot(this.root,t);if(o){const{obj:M}=o.data;M&&!((r=M.common)!=null&&r.dontDelete)&&this.showDeleteDialog({id:t,obj:M,item:o})}}}}static getItemFromRoot(e,t){const s=t.split(".");let r="",o=e;for(let M=0;M{this.customWidth=!1,je[this.props.width||"lg"]=JSON.parse(JSON.stringify(this.storedWidths)),this.calculateColumnsVisibility(),this.localStorage.removeItem(`${this.props.dialogName||"App"}.table`),this.forceUpdate()};renderHandleRight(){return n.createElement(W,{component:"div",className:"iob-ob-resize-handler",sx:{...C.resizeHandle,...C.resizeHandleRight},onMouseDown:this.resizerMouseDown,onDoubleClick:this.resizerReset,title:this.props.t("ra_Double click to reset table layout")})}renderHeader(){let e=null;return!this.columnsVisibility.buttons&&!this.isFilterEmpty()&&(e=n.createElement(P,{onClick:()=>this.clearFilter(),style:C.buttonClearFilter,title:this.props.t("ra_Clear filter"),size:"large"},n.createElement(sLe,null),n.createElement(ge,{style:C.buttonClearFilterIcon}))),this.props.width==="xs"?n.createElement("div",{style:C.headerRow},n.createElement("div",{style:{...C.headerCell,width:"100%"}},this.getFilterInput("id"))):n.createElement("div",{style:C.headerRow},n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.id,position:"relative"},"data-min":240,"data-name":"id"},this.getFilterInput("id"),this.renderHandleRight()),this.columnsVisibility.name?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.nameHeader,position:"relative"},"data-min":100,"data-name":"nameHeader"},this.getFilterInput("name"),this.renderHandleRight()):null,!this.state.statesView&&n.createElement(n.Fragment,null,this.columnsVisibility.type?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.type,position:"relative"},"data-min":100,"data-name":"type"},this.getFilterSelectType(),this.renderHandleRight()):null,this.columnsVisibility.role?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.role,position:"relative"},"data-min":100,"data-name":"role"},this.getFilterSelectRole(),this.renderHandleRight()):null,this.columnsVisibility.room?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.room,position:"relative"},"data-min":100,"data-name":"room"},this.getFilterSelectRoom(),this.renderHandleRight()):null,this.columnsVisibility.func?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.func,position:"relative"},"data-min":100,"data-name":"func"},this.getFilterSelectFunction(),this.renderHandleRight()):null),this.state.statesView&&n.createElement(n.Fragment,null,n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.changedFrom,position:"relative"},"data-min":100,"data-name":"changedFrom"},this.props.t("ra_Changed from"),this.renderHandleRight()),n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.qualityCode,position:"relative"},"data-min":100,"data-name":"qualityCode"},this.props.t("ra_Quality code"),this.renderHandleRight()),n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.timestamp,position:"relative"},"data-min":100,"data-name":"timestamp"},this.props.t("ra_Timestamp"),this.renderHandleRight()),n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.lastChange,position:"relative"},"data-min":100,"data-name":"lastChange"},this.props.t("ra_Last change"),this.renderHandleRight())),this.adapterColumns.map(t=>n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility[t.id]},title:t.adapter,key:t.id,"data-min":100,"data-name":t.id},t.name)),this.columnsVisibility.val?n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.val,position:"relative"},"data-min":120,"data-name":"val"},this.props.t("ra_Value"),e):null,this.columnsVisibility.buttons?n.createElement("div",{title:this.texts.filter_custom,style:{...C.headerCell,width:this.columnsVisibility.buttons}}," ",this.getFilterSelectCustoms()):null)}renderToast(){return n.createElement(Jr,{open:!!this.state.toast,autoHideDuration:3e3,onClick:()=>this.setState({toast:""}),onClose:()=>this.setState({toast:""}),message:this.state.toast,action:n.createElement(P,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({toast:""})},n.createElement(ge,{fontSize:"small"}))})}componentDidUpdate(){if(this.tableRef.current){const e=this.tableRef.current.offsetWidth-this.tableRef.current.clientWidth;this.state.scrollBarWidth!==e?setTimeout(()=>this.setState({scrollBarWidth:e}),100):this.selectFirst&&this.scrollToItem(this.selectFirst)}}scrollToItem(e){this.selectFirst="";const t=window.document.getElementById(e);t==null||t.scrollIntoView({behavior:"auto",block:"center",inline:"center"})}renderCustomDialog(){if(this.state.customDialog&&this.props.objectCustomDialog){const e=this.props.objectCustomDialog;return n.createElement(e,{reportChangedIds:t=>this.changedIds=[...t],objectIDs:this.state.customDialog,allVisibleObjects:!!this.state.customDialogAll,expertMode:this.state.filter.expertMode,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,t:this.props.t,lang:this.props.lang,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,objects:this.objects,customsInstances:this.info.customs,onClose:()=>{var t;this.pauseSubscribe(!1),this.setState({customDialog:null}),this.changedIds&&(this.changedIds=null,this.forceUpdate()),(t=this.props.router)==null||t.doNavigate("tab-objects")},systemConfig:this.systemConfig})}return null}onUpdate(e){this.props.socket.setState(this.edit.id,{val:e.val,ack:e.ack,q:e.q||0,expire:e.expire||void 0}).catch(t=>this.showError(`Cannot write value: ${t}`))}renderEditObjectDialog(){if(!this.state.editObjectDialog||!this.props.objectBrowserEditObject)return null;const e=this.props.objectBrowserEditObject;return n.createElement(e,{key:this.state.editObjectDialog,obj:this.objects[this.state.editObjectDialog],roleArray:this.info.roles,objects:this.objects,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,dialogName:this.props.dialogName,aliasTab:this.state.editObjectAlias,t:this.props.t,expertMode:!!this.state.filter.expertMode,onNewObject:t=>this.props.socket.setObject(t._id,t).then(()=>this.setState({editObjectDialog:t._id,editObjectAlias:!1},()=>this.onSelect(t._id))).catch(s=>this.showError(`Cannot write object: ${s}`)),onClose:t=>{var s,r;if(t){let o;this.state.editObjectDialog.startsWith("alias.")&&JSON.stringify((s=this.objects[this.state.editObjectDialog].common)==null?void 0:s.alias)!==JSON.stringify((r=t.common)==null?void 0:r.alias)&&(o=this.state.editObjectDialog),this.props.socket.setObject(t._id,t).then(()=>{o&&this.subscribes.includes(o)&&(this.unsubscribe(o),setTimeout(()=>this.subscribe(o),100))}).catch(M=>this.showError(`Cannot write object: ${M}`))}this.setState({editObjectDialog:"",editObjectAlias:!1})},width:this.props.width})}renderViewObjectFileDialog(){if(!this.state.viewFileDialog||!this.props.objectBrowserViewFile)return null;const e=this.props.objectBrowserViewFile;return n.createElement(e,{key:"viewFile",obj:this.objects[this.state.viewFileDialog],socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({viewFileDialog:""})})}renderAliasEditorDialog(){if(!this.props.objectBrowserAliasEditor||!this.state.showAliasEditor)return null;const e=this.props.objectBrowserAliasEditor;return n.createElement(e,{key:"editAlias",obj:this.objects[this.state.showAliasEditor],roleArray:this.info.roles,objects:this.objects,socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({showAliasEditor:""}),onRedirect:(t,s)=>setTimeout(()=>this.onSelect(t,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(t),setTimeout(()=>this.setState({editObjectDialog:t,showAliasEditor:"",editObjectAlias:!0}),300)})),s||0)})}showAddDataPointDialog(e,t,s){this.setState({showContextMenu:null,modalNewObj:{id:e,initialType:t,initialStateType:s}})}renderAliasMenu(){return this.state.aliasMenu?n.createElement(ss,{key:"aliasmenu",open:!0,anchorEl:window.document.getElementById(`alias_${this.state.aliasMenu}`),onClose:()=>this.setState({aliasMenu:""})},this.info.aliasesMap[this.state.aliasMenu].map((e,t)=>n.createElement(te,{key:e,onClick:()=>this.onSelect(e)},n.createElement(nt,null,this.renderAliasLink(this.state.aliasMenu,t,{"& .admin-browser-arrow":{mr:"8px"}}))))):null}renderContextMenu(){var L,j,g,y,d,I,m;if(!this.state.showContextMenu)return null;const e=this.state.showContextMenu.item,t=e.data.id,s=[],r=e.data.obj;let o="";if(this.props.objectEditOfAccessControl&&this.state.filter.expertMode)if(!r)o="---";else{const w=r.acl?r.type==="state"?r.acl.state:r.acl.object:0,O=r.acl&&(r.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object);o=Number.isNaN(Number(w))?Number(O).toString(16):Number(w).toString(16)}const M=!this.props.notEditable&&r&&(this.state.filter.expertMode||r.type==="state"||r.type==="channel"||r.type==="device"),a=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="channel"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",u=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",l=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",N=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",c={EDIT:{key:"0",visibility:!!(this.props.objectBrowserEditObject&&r&&(this.state.filter.expertMode||La(t))),icon:n.createElement(Ks,{fontSize:"small",style:this.styles.contextMenuEdit}),label:this.texts.editObject,onClick:()=>this.setState({editObjectDialog:e.data.id,showContextMenu:null,editObjectAlias:!1})},EDIT_VALUE:{key:"1",visibility:!!(this.states&&!this.props.notEditable&&r&&r.type==="state"&&((L=r.common)==null?void 0:L.type)!=="file"&&(this.state.filter.expertMode||r.common.write!==!1)),icon:n.createElement(Fl,{fontSize:"small",style:this.styles.contextMenuEditValue}),label:this.props.t("ra_Edit value"),onClick:()=>{var w;this.edit={val:this.states[t]?this.states[t].val:"",q:((w=this.states[t])==null?void 0:w.q)||0,ack:!1,id:t},this.setState({updateOpened:!0,showContextMenu:null})}},VIEW:{visibility:!!this.props.objectBrowserViewFile&&(r==null?void 0:r.type)==="state"&&((j=r.common)==null?void 0:j.type)==="file",icon:n.createElement(Gl,{fontSize:"small",style:this.styles.contextMenuView}),label:this.props.t("ra_View file"),onClick:()=>this.setState({viewFileDialog:(r==null?void 0:r._id)||"",showContextMenu:null})},CUSTOM:{key:"2",visibility:!(this.props.objectCustomDialog&&this.info.hasSomeCustoms&&r&&r.type==="state"&&((g=r.common)==null?void 0:g.type)!=="file"),icon:n.createElement(Fr,{fontSize:"small",style:e.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:C.cellButtonsButtonWithoutCustoms}),style:this.styles.contextMenuCustom,label:this.texts.customConfig,onClick:()=>{var w;this.pauseSubscribe(!0),(w=this.props.router)==null||w.doNavigate(null,"customs",t),this.setState({customDialog:[t],showContextMenu:null})}},ACL:{key:"3",visibility:!!o,icon:o,iconStyle:{fontSize:"smaller"},listItemIconStyle:this.styles.contextMenuACL,style:this.styles.contextMenuACL,label:this.props.t("ra_Edit ACL"),onClick:()=>this.setState({showContextMenu:null,modalEditOfAccess:!0,modalEditOfAccessObjData:e.data})},ROLE:{key:"4",visibility:!!(this.state.filter.expertMode&&M&&this.props.objectBrowserEditRole),icon:n.createElement(Bl,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit role"),onClick:()=>this.setState({roleDialog:e.data.id,showContextMenu:null})},FUNCTION:{key:"5",visibility:!!M,icon:n.createElement(Jl,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit function"),onClick:()=>{const w=ys(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ROOM:{key:"6",visibility:!!M,icon:n.createElement(Rl,{fontSize:"small",style:this.styles.contextMenuRoom}),label:this.props.t("ra_Edit room"),onClick:()=>{const w=ys(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ALIAS:{key:"7",visibility:!!(!this.props.notEditable&&this.props.objectBrowserAliasEditor&&this.props.objectBrowserEditObject&&(r==null?void 0:r.type)==="state"&&((y=r.common)==null?void 0:y.type)!=="file"),icon:n.createElement(Ha,{style:(d=r==null?void 0:r.common)!=null&&d.alias?this.styles.cellButtonsButtonWithCustoms:C.cellButtonsButtonWithoutCustoms}),label:this.info.aliasesMap[e.data.id]||e.data.id.startsWith("alias.0.")?this.props.t("ra_Edit alias"):this.props.t("ra_Create alias"),onClick:()=>{var w;(w=r==null?void 0:r.common)!=null&&w.alias?this.setState({showContextMenu:null,editObjectDialog:e.data.id,editObjectAlias:!0}):this.setState({showContextMenu:null,showAliasEditor:e.data.id})}},CREATE:{key:"+",visibility:(e.data.id.startsWith("0_userdata.0")||e.data.id.startsWith("javascript."))&&(a||u||l||N),icon:n.createElement(Gr,{fontSize:"small",style:this.styles.cellButtonsButtonWithCustoms}),style:C.contextMenuWithSubMenu,label:this.texts.create,subMenu:[{label:this.texts.createBooleanState,visibility:a,icon:n.createElement(Xs,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","boolean")},{label:this.texts.createNumberState,visibility:a,icon:n.createElement(Xs,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","number")},{label:this.texts.createStringState,visibility:a,icon:n.createElement(Xs,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","string")},{label:this.texts.createState,visibility:a,icon:n.createElement(Xs,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state")},{label:this.texts.createChannel,visibility:u,icon:n.createElement(Tu,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"channel")},{label:this.texts.createDevice,visibility:l,icon:n.createElement(yu,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"device")},{label:this.texts.createFolder,icon:n.createElement(Ga,{fontSize:"small"}),visibility:N,onClick:()=>this.showAddDataPointDialog(e.data.id,"folder")}]},RENAME:{key:"8",visibility:!!(!this.props.notEditable&&this.props.objectMoveRenameDialog&&!e.data.id.startsWith("system.")&&e.data.id.split(".").length>2&&(this.props.expertMode||e.data.id.startsWith("javascript.0.")||e.data.id.startsWith("0_userdata.0."))),icon:n.createElement(Wl,null),label:this.props.t("ra_Rename_Move_Copy"),onClick:()=>{const w=Object.keys(this.objects),O=`${e.data.id}.`;this.setState({showContextMenu:null,showRenameDialog:{id:e.data.id,childrenIds:w.filter(A=>A.startsWith(O))}})}},DELETE:{key:"Delete",visibility:!!(this.props.onObjectDelete&&((I=e.children)!=null&&I.length||r&&!((m=r.common)!=null&&m.dontDelete))),icon:n.createElement(ut,{fontSize:"small",style:this.styles.contextMenuDelete}),style:this.styles.contextMenuDelete,label:this.texts.deleteObject,onClick:()=>this.setState({showContextMenu:null},()=>this.showDeleteDialog({id:t,obj:r||{},item:e}))}};return Object.keys(c).forEach(w=>{var O,A;c[w].visibility&&(c[w].subMenu?(s.push(n.createElement(te,{key:w,href:"",onClick:h=>this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position,subItem:w,subAnchor:h.target}}),style:c[w].style},n.createElement(Yt,{style:{...c[w].iconStyle,...c[w].listItemIconStyle}},c[w].icon),n.createElement(nt,null,c[w].label,"..."),n.createElement("div",{style:{...C.contextMenuKeys,opacity:1}},n.createElement(Hl,null)))),((O=this.state.showContextMenu)==null?void 0:O.subItem)===w&&s.push(n.createElement(ss,{key:"subContextMenu",open:!0,anchorEl:this.state.showContextMenu.subAnchor,onClose:()=>{this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position}}),this.contextMenu=null}},(A=c[w].subMenu)==null?void 0:A.map(h=>h.visibility?n.createElement(te,{key:h.label,onClick:h.onClick,style:h.style},n.createElement(Yt,{style:{...h.iconStyle,...h.listItemIconStyle||void 0}},h.icon),n.createElement(nt,null,h.label)):null)))):s.push(n.createElement(te,{key:w,onClick:c[w].onClick,sx:c[w].style},n.createElement(Yt,{style:{...c[w].iconStyle,...c[w].listItemIconStyle}},c[w].icon),n.createElement(nt,null,c[w].label),c[w].key?n.createElement("div",{style:C.contextMenuKeys},`Alt+${c[w].key==="Delete"?this.props.t("ra_Del"):c[w].key}`):null)))}),s.length?n.createElement(ss,{key:"contextMenu",open:!0,onKeyUp:w=>{w.preventDefault(),w.altKey&&Object.keys(c).forEach(O=>{w.key===c[O].key&&c[O].onClick&&c[O].onClick()})},anchorReference:"anchorPosition",anchorPosition:this.state.showContextMenu.position,onClose:()=>{this.setState({showContextMenu:null}),this.contextMenu=null}},s):(setTimeout(()=>this.setState({showContextMenu:null}),100),null)}renderEditValueDialog(){var r;if(!this.state.updateOpened||!this.props.objectBrowserValue)return null;if(!this.edit.id)return console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`),null;if(!this.objects[this.edit.id])return console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`),null;const e=(r=this.objects[this.edit.id].common)!=null&&r.type?this.objects[this.edit.id].common.type:typeof this.edit.val,t=this.objects[this.edit.id].common.role,s=this.props.objectBrowserValue;return n.createElement(s,{t:this.props.t,lang:this.props.lang,type:e,role:t||"",states:E.getStates(this.objects[this.edit.id]),themeType:this.props.themeType,theme:this.props.theme,expertMode:!!this.state.filter.expertMode,value:this.edit.val,socket:this.props.socket,object:this.objects[this.edit.id],defaultHistory:this.defaultHistory,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,onClose:o=>{this.setState({updateOpened:!1}),o&&this.onUpdate(o)},width:this.props.width})}doFilter(e){if(!this.objects||!this.root)return;e||this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(this.state.filter));const t={count:0};jo(this.root,this.state.filter,this.props.lang,this.objects,void 0,t,this.props.customFilter,this.props.types),t.count<500&&!this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!0})):t.count>=500&&this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!1})):this.forceUpdate()}render(){if(this.recordStates=[],this.unsubscribeTimer&&clearTimeout(this.unsubscribeTimer),this.styleTheme!==this.props.themeType&&(this.styles={cellIdIconFolder:E.getStyle(this.props.theme,C.cellIdIconFolder),cellIdIconDocument:E.getStyle(this.props.theme,C.cellIdIconDocument),iconDeviceError:E.getStyle(this.props.theme,C.iconDeviceError),iconDeviceConnected:E.getStyle(this.props.theme,C.iconDeviceConnected),iconDeviceDisconnected:E.getStyle(this.props.theme,C.iconDeviceDisconnected),cellButtonsButtonWithCustoms:E.getStyle(this.props.theme,C.cellButtonsButtonWithCustoms),invertedBackground:E.getStyle(this.props.theme,C.invertedBackground),invertedBackgroundFlex:E.getStyle(this.props.theme,C.invertedBackgroundFlex),contextMenuEdit:E.getStyle(this.props.theme,C.contextMenuEdit),contextMenuEditValue:E.getStyle(this.props.theme,C.contextMenuEditValue),contextMenuView:E.getStyle(this.props.theme,C.contextMenuView),contextMenuCustom:E.getStyle(this.props.theme,C.contextMenuCustom),contextMenuACL:E.getStyle(this.props.theme,C.contextMenuACL),contextMenuRoom:E.getStyle(this.props.theme,C.contextMenuRoom),contextMenuRole:E.getStyle(this.props.theme,C.contextMenuRole),contextMenuDelete:E.getStyle(this.props.theme,C.contextMenuDelete),filterInput:E.getStyle(this.props.theme,C.headerCellInput,C.filterInput),iconCopy:E.getStyle(this.props.theme,C.cellButtonsValueButton,C.cellButtonsValueButtonCopy),aliasReadWrite:E.getStyle(this.props.theme,C.cellIdAlias,C.cellIdAliasReadWrite),aliasAlone:E.getStyle(this.props.theme,C.cellIdAlias,C.cellIdAliasAlone)},this.styleTheme=this.props.themeType),this.unsubscribeTimer=setTimeout(()=>{this.unsubscribeTimer=null,this.checkUnsubscribes()},200),this.expertMode!==!!this.state.filter.expertMode&&(this.expertMode=!!this.state.filter.expertMode,this.doFilter(!0)),!this.state.loaded)return n.createElement(er,{key:`${this.props.dialogName}_c`});const e=this.root?this.renderItem(this.root,void 0):null;return n.createElement(iLe,{key:this.props.dialogName},n.createElement("style",null,` +@keyframes newValueAnimation-light { + 0% { + color: #00f900; + } + 80% { + color: #008000; + } + 100% { + color: #000; + } +} +@keyframes newValueAnimation-dark { + 0% { + color: #00f900; + } + 80% { + color: #008000; + } + 100% { + color: #fff; + } +} +.newValueBrowser-dark { + animation: newValueAnimation-dark 2s ease-in-out; +} +.newValueBrowser-light { + animation: newValueAnimation-light 2s ease-in-out; +} +.highlight-link .iob-link { + text-decoration: underline; + cursor: pointer; +} +`),n.createElement(oLe,null,this.getToolbar()),n.createElement(rLe,null,this.renderHeader(),n.createElement(W,{style:C.tableDiv,ref:this.tableRef,onKeyDown:t=>this.navigateKeyPress(t)},e)),this.renderContextMenu(),this.renderAliasMenu(),this.renderToast(),this.renderColumnsEditCustomDialog(),this.renderColumnsSelectorDialog(),this.renderCustomDialog(),this.renderEditValueDialog(),this.renderEditObjectDialog(),this.renderViewObjectFileDialog(),this.renderAliasEditorDialog(),this.renderEditRoleDialog(),this.renderEnumDialog(),this.renderErrorDialog(),this.renderExportDialog(),this.renderRenameDialog(),this.renderInputJsonDialog(),this.state.modalNewObj&&this.props.modalNewObject&&this.props.modalNewObject(this),this.state.modalEditOfAccess&&this.state.modalEditOfAccessObjData&&this.props.modalEditOfAccessControl&&this.props.modalEditOfAccessControl(this,this.state.modalEditOfAccessObjData))}}const DLe=Nr()(Ki);class Tge extends n.Component{refTypo;height;width;constructor(e){super(e),this.state={closed:this.props.storeId?window.localStorage.getItem(this.props.storeId)==="true":!1},this.height=0,this.width=0,this.refTypo=n.createRef()}componentDidMount(){this.detectHeight()}onClick(){this.props.storeId&&this.props.closed===void 0&&(this.state.closed?window.localStorage.removeItem(this.props.storeId):window.localStorage.setItem(this.props.storeId,"true")),this.props.closed===void 0?this.setState({closed:!this.state.closed},()=>{this.props.onClose&&this.props.onClose(this.state.closed)}):this.props.onClose&&this.props.onClose(!this.props.closed)}detectHeight(){const e=this.props.closed!==void 0?this.props.closed:this.state.closed;this.props.closeable&&!e&&this.refTypo.current&&window.requestAnimationFrame(()=>{(this.props.closed!==void 0?this.props.closed:this.state.closed)||this.refTypo.current&&(!this.height||this.width!==this.refTypo.current.clientWidth)&&(this.height=this.refTypo.current.clientHeight,this.width=this.refTypo.current.clientWidth,this.forceUpdate())})}componentDidUpdate(){this.detectHeight()}render(){const e=this.props.closed!==void 0?this.props.closed:this.state.closed,t=e?ql:ge;return n.createElement(W,{className:"iom-info-box",style:{whiteSpace:"preserve",display:"flex",gap:8,alignItems:e||this.props.iconPosition==="top"?"flex-start":"center",borderWidth:1,borderStyle:"solid",padding:4,borderRadius:5,marginBottom:8,maxWidth:"100%",transition:"height 0.5s",height:this.props.closeable?e?30:this.height||void 0:void 0,overflow:this.props.closeable?"hidden":void 0,position:"relative",...this.props.style},sx:{borderColor:s=>this.props.type==="ok"?s.palette.info.main:s.palette[this.props.type].main}},this.props.type==="ok"?n.createElement(ve,{style:{color:"#0F0"}}):this.props.type==="info"?n.createElement(bo,{color:"primary"}):n.createElement(Kl,{color:this.props.type}),n.createElement(ul,{ref:this.refTypo},this.props.children),this.props.closeable?n.createElement(t,{sx:{color:s=>s.palette.mode==="dark"?"lightgray":"gray",cursor:"pointer",position:"absolute",top:4,right:4},onClick:()=>this.onClick()}):null,this.props.closeable?n.createElement("div",{style:{width:22}}):null,e?n.createElement(W,{component:"div",sx:s=>{const r=s.palette[this.props.type==="ok"?"info":this.props.type].main;return{background:`linear-gradient(${r}00 0%, ${r}10 60%, ${r}90 100%)`}},style:{bottom:0,position:"absolute",left:0,right:0,height:10}}):null)}}const _={hr:{border:0,borderTop:"1px solid gray"},scrollWindow:{width:"100%",overflow:"auto",height:"calc(100% - 22px)"},rowDiv:{width:"100%"},modeDiv:{width:200,display:"inline-block",verticalAlign:"top"},settingsDiv:{display:"inline-block",verticalAlign:"top"},inputTime:{width:90,marginTop:0,marginLeft:5},inputDate:{width:140,marginTop:0,marginLeft:5},inputEvery:{width:40,marginLeft:5,marginRight:5},inputRadio:{padding:"4px 12px",verticalAlign:"top"},inputGroup:{maxWidth:400,display:"inline-block"},inputGroupElement:{width:120},inputDateDay:{width:60},inputDateDayCheck:{padding:4},inputSmallCheck:{padding:0},rowOnce:{},rowDays:i=>({background:i.palette.mode!=="dark"?"#ddeaff":"#4b5057"}),rowDows:i=>({background:i.palette.mode!=="dark"?"#DDFFDD":"#52646c"}),rowMonths:i=>({background:i.palette.mode!=="dark"?"#DDFFFF":"#1f5557"}),rowMonthsDates:i=>({background:i.palette.mode!=="dark"?"#EEFFFF":"#3c5737",maxWidth:600}),rowYears:i=>({background:i.palette.mode!=="dark"?"#fbffdd":"#574b33"}),rowDowsDows:i=>({background:i.palette.mode!=="dark"?"#EEFFEE":"#3d4c54",pl:"10px",pb:"10px"})},Qr=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Ei=["January","February","March","April","May","June","July","August","September","October","November","December"],vr={minutes:"minutes",hours:"hours"},Rs=["sunrise","sunriseEnd","goldenHourEnd","solarNoon","goldenHour","sunsetStart","sunset","dusk","nauticalDusk","night","nightEnd","nauticalDawn","dawn","nadir"];function yt(i){return i<10?`0${i}`:`${i}`}const Ta={time:{exactTime:!1,start:"00:00",end:"23:59",mode:"hours",interval:1},period:{once:"",days:1,dows:"",dates:"",weeks:0,months:"",years:0,yearMonth:0,yearDate:0},valid:{from:"",to:""}};function Ur(i){const e=i.split(".");return e.length===3?`${e[2]}-${e[1]}-${e[0]}`:""}class Ce extends ze{refFrom;refTo;refOnce;timerOnce=null;timerFrom=null;timerTo=null;constructor(e){super(e);let t;if(this.props.schedule&&typeof this.props.schedule=="string"&&this.props.schedule[0]==="{")try{t=JSON.parse(this.props.schedule)}catch{}else typeof this.props.schedule=="object"&&(t=this.props.schedule);(!t||!Object.keys(t).length)&&(setTimeout(()=>this.onChange(this.state.schedule,!0),200),t=Ta),t={...Ta,...t},t.valid.from||=Ce.now2string(),this.refFrom=n.createRef(),this.refTo=n.createRef(),this.refOnce=n.createRef(),this.state={schedule:t,desc:Ce.state2text(t)},JSON.stringify(t)!==this.props.schedule&&setTimeout(()=>{var s,r;return(r=(s=this.props).onChange)==null?void 0:r.call(s,JSON.stringify(t))},100)}componentWillUnmount(){this.timerOnce&&(clearTimeout(this.timerOnce),this.timerOnce=null),this.timerFrom&&(clearTimeout(this.timerFrom),this.timerFrom=null),this.timerTo&&(clearTimeout(this.timerTo),this.timerTo=null)}onChange(e,t){var r,o;const s=JSON.stringify(e)!==JSON.stringify(this.state.schedule);if(t||s){s&&this.setState({schedule:e,desc:Ce.state2text(e)});const M=JSON.parse(JSON.stringify(e));if(M.period.once){const a=M.period.once;delete M.period,M.period={once:a},delete M.valid}else if(M.period.days){const a=M.period.days,u=M.period.dows;delete M.period,M.period={days:a},u&&u!=="[]"&&(M.period.dows=u)}else if(M.period.weeks){const a=M.period.weeks,u=M.period.dows;delete M.period,M.period={weeks:a},u&&u!=="[]"&&(M.period.dows=u)}else if(M.period.months){const a=M.period.months,u=M.period.dates;delete M.period,M.period={months:a},u&&u!=="[]"&&(M.period.dates=u)}else if(M.period.years){const a=M.period.years,u=M.period.yearMonth,l=M.period.yearDate;delete M.period,M.period={years:a,yearDate:l},u&&(M.period.yearMonth=u)}if(M.time.exactTime?(delete M.time.end,delete M.time.mode,delete M.time.interval):delete M.time.exactTime,M.valid){if(M.valid.to||delete M.valid.to,M.period.days===1||M.period.weeks===1||M.period.months===1||M.period.years===1){const a=Ce.string2date(M.valid.from),u=new Date;u.setHours(0),u.setMinutes(0),u.setSeconds(0),u.setMilliseconds(0),a<=u&&delete M.valid.from}!M.valid.from&&!M.valid.to&&delete M.valid}(o=(r=this.props).onChange)==null||o.call(r,JSON.stringify(M),Ce.state2text(e))}}static state2text(e){if(typeof e=="string")try{e=JSON.parse(e)}catch{return""}const t=[],s=Ce.string2date(e.valid.from);if(e.period.once){const r=Ce.string2date(e.period.once),o=new Date;if(o.setMilliseconds(0),o.setSeconds(0),o.setMinutes(0),o.setHours(0),rD.t(Qr[M]));if(o.length===1)t.push(D.t("sch_desc_onWeekday",o[0]));else if(o.length===7)t.push(D.t("sch_desc_everyDay"));else{const M=o.pop();t.push(D.t("sch_desc_onWeekdays",o.join(", "),M))}}}else t.push(D.t("sch_desc_everyDay"));else t.push(D.t("sch_desc_everyNDay",e.period.days.toString()));else if(e.period.weeks)if(e.period.weeks===1?t.push(D.t("sch_desc_everyWeek")):t.push(D.t("sch_desc_everyNWeeks",e.period.weeks.toString())),e.period.dows){const r=JSON.parse(e.period.dows);if(r.length===2&&r[0]===0&&r[1]===6)t.push(D.t("sch_desc_onWeekends"));else if(r.length===5&&r[0]===1&&r[1]===2&&r[2]===3&&r[3]===4&&r[4]===5)t.push(D.t("sch_desc_onWorkdays"));else{const o=r.map(M=>D.t(Qr[M]));if(o.length===1)t.push(D.t("sch_desc_onWeekday",o[0]));else if(o.length===7)t.push(D.t("sch_desc_everyDay"));else{const M=o.pop();t.push(D.t("sch_desc_onWeekdays",o.join(", "),M))}}}else return D.t("sch_desc_never");else if(e.period.months){if(e.period.dates){const r=JSON.parse(e.period.dates);if(r.length===1)t.push(D.t("sch_desc_onDate",r[0]));else if(r.length===31)t.push(D.t("sch_desc_onEveryDate"));else if(r.length){const o=r.pop();t.push(D.t("sch_desc_onDates",r.join(", "),o))}else return D.t("sch_desc_never")}else t.push(D.t("sch_desc_onEveryDate"));if(e.period.months===1)t.push(D.t("sch_desc_everyMonth"));else if(typeof e.period.months=="number")t.push(D.t("sch_desc_everyNMonths",e.period.months.toString()));else{const o=JSON.parse(e.period.months).map(M=>D.t(Ei[M-1]));if(!o.length)return D.t("sch_desc_never");if(o.length===1)t.push(D.t("sch_desc_onMonth",o[0]));else if(o.length===12)t.push(D.t("sch_desc_everyMonth"));else{const M=o.pop();t.push(D.t("sch_desc_onMonths",o.join(", "),M))}}}else e.period.years&&(e.period.years===1?t.push(D.t("sch_desc_everyYear")):t.push(D.t("sch_desc_everyNYears",e.period.years.toString())),t.push(D.t("sch_desc_onDate",e.period.yearDate.toString(),e.period.yearMonth?D.t(Ei[e.period.yearMonth-1]):D.t("sch_desc_everyMonth"))));if(e.time.exactTime)Rs.includes(e.time.start)?t.push(D.t("sch_desc_atTime",D.t(`sch_astro_${e.time.start}`))):t.push(D.t("sch_desc_atTime",e.time.start));else{e.time.mode===vr.minutes?e.time.interval===1?t.push(D.t("sch_desc_everyMinute")):t.push(D.t("sch_desc_everyNMinutes",e.time.interval.toString())):e.time.interval===1?t.push(D.t("sch_desc_everyHour")):t.push(D.t("sch_desc_everyNHours",e.time.interval.toString()));const r=Rs.indexOf(e.time.start)!==-1?D.t(`sch_astro_${e.time.start}`):e.time.start,o=Rs.indexOf(e.time.end)!==-1?D.t(`sch_astro_${e.time.end}`):e.time.end;(r!=="00:00"||o!=="24:00"&&o!=="23:59")&&t.push(D.t("sch_desc_intervalFromTo",r,o))}return e.period.once||(s.getTime()>Date.now()&&e.valid.to?t.push(D.t("sch_desc_validFromTo",e.valid.from,e.valid.to)):s.getTime()>Date.now()?t.push(D.t("sch_desc_validFrom",e.valid.from)):e.valid.to&&t.push(D.t("sch_desc_validTo",e.valid.to))),t.join(" ")}getTimePeriodElements(){const e=this.state.schedule;let t=!1,s=!1,r=!1,o=!0;return e.time.start==="00:00"&&e.time.end==="24:00"?(t=!0,o=!1):e.time.start==="sunrise"?(s=!0,o=!1):e.time.start==="sunset"&&(r=!0,o=!1),n.createElement("div",{key:"timePeriod",style:_.rowDiv},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!e.time.exactTime,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.exactTime=!1,this.onChange(M)}}),label:D.t("sch_intervalTime")})),n.createElement("div",{style:_.settingsDiv},n.createElement("div",{style:_.settingsDiv},!e.time.exactTime&&n.createElement("div",null,n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!o,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start="00:00",M.time.end="23:59",this.onChange(M)}}),label:o?"":D.t("sch_fromTo")}),o&&[n.createElement(le,{variant:"standard",style:{..._.inputTime,marginRight:10},key:"exactTimeFrom",type:"time",sx:M=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:M.palette.mode==="dark"?"invert(80%)":void 0}}),value:this.state.schedule.time.start,onChange:M=>{const a=JSON.parse(JSON.stringify(this.state.schedule));a.time.start=M.target.value,this.onChange(a)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_from"),margin:"normal"}),n.createElement(le,{variant:"standard",style:_.inputTime,key:"exactTimeTo",type:"time",sx:M=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:M.palette.mode==="dark"?"invert(80%)":void 0}}),value:this.state.schedule.time.end,onChange:M=>{const a=JSON.parse(JSON.stringify(this.state.schedule));a.time.end=M.target.value,this.onChange(a)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_to"),margin:"normal"})])),!e.time.exactTime&&n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!t,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start="00:00",M.time.end="24:00",this.onChange(M)}}),label:D.t("sch_wholeDay")})),!e.time.exactTime&&n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!s,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start="sunrise",M.time.end="sunset",this.onChange(M)}}),label:D.t("sch_astroDay")})),!e.time.exactTime&&n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!r,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start="sunset",M.time.end="sunrise",this.onChange(M)}}),label:D.t("sch_astroNight")}))),!e.time.exactTime&&this.getPeriodSettingsMinutes(o)))}getTimeExactElements(){const e=Rs.includes(this.state.schedule.time.start);return n.createElement("div",{key:"timeExact",style:_.rowDiv},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!this.state.schedule.time.exactTime,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.exactTime=!0,this.onChange(t)}}),label:D.t("sch_exactTime")})),this.state.schedule.time.exactTime&&n.createElement(Xe,{variant:"standard",value:e?this.state.schedule.time.start:"00:00",onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.time.start=t.target.value,this.onChange(s)}},n.createElement(te,{key:"specific",value:"00:00"},D.t("sch_specificTime")),Rs.map(t=>n.createElement(te,{key:t,value:t},D.t(`sch_astro_${t}`)))),this.state.schedule.time.exactTime&&!e&&n.createElement("div",{style:_.settingsDiv},n.createElement(le,{variant:"standard",style:_.inputTime,key:"exactTimeValue",value:this.state.schedule.time.start,type:"time",sx:t=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:t.palette.mode==="dark"?"invert(80%)":void 0}}),onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.time.start=t.target.value,this.onChange(s)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"})))}static getDivider(){return n.createElement("hr",{style:_.hr})}getPeriodModes(){const e=this.state.schedule,t=!e.period.dows&&!e.period.months&&!e.period.dates&&!e.period.years&&!e.period.days&&!e.period.weeks;return t&&!e.period.once&&(e.period.once=Ce.now2string(!0)),[n.createElement("div",{key:"once",style:{..._.rowDiv,..._.rowOnce}},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!t,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.once||=Ce.now2string(!0),s.period.dows="",s.period.months="",s.period.dates="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.weeks=0,s.period.days=0,this.onChange(s)}}),label:D.t("sch_periodOnce")})),t&&n.createElement("div",{style:_.settingsDiv},n.createElement(le,{variant:"standard",style:_.inputDate,type:"date",ref:this.refOnce,key:"exactDateAt",defaultValue:Ur(e.period.once),onChange:s=>{this.timerOnce&&clearTimeout(this.timerOnce),this.refOnce.current&&(this.refOnce.current.style.background="#ff000030"),this.timerOnce=setTimeout(r=>{this.timerOnce=null,this.refOnce.current&&(this.refOnce.current.style.background="");const o=JSON.parse(JSON.stringify(this.state.schedule)),M=Ce.string2date(r);M.toString()!=="Invalid Date"&&(o.period.once=`${yt(M.getDate())}.${yt(M.getMonth()+1)}.${M.getFullYear()}`,this.onChange(o))},1500,s.target.value)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_at"),margin:"normal"}))),n.createElement(W,{component:"div",key:"days",sx:E.getStyle(this.props.theme,_.rowDiv,_.rowDays)},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!e.period.days,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.days=1,s.period.dows="",s.period.months="",s.period.dates="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.weeks=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodDaily")})),n.createElement("div",{style:_.settingsDiv},this.getPeriodSettingsDaily(),e.period.days?this.getPeriodSettingsWeekdays():null)),n.createElement(W,{component:"div",key:"weeks",sx:E.getStyle(this.props.theme,_.rowDiv,_.rowDows)},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!e.period.weeks,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.weeks=e.period.weeks?0:1,s.period.dows||="[0]",s.period.months="",s.period.dates="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.days=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodWeekly")})),n.createElement(W,{component:"div",style:_.settingsDiv},n.createElement("div",{style:_.settingsDiv},this.getPeriodSettingsWeekly()),n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,_.settingsDiv,_.rowDowsDows)},this.state.schedule.period.weeks?this.getPeriodSettingsWeekdays():null))),n.createElement(W,{component:"div",key:"months",sx:E.getStyle(this.props.theme,_.rowDiv,_.rowMonths)},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!e.period.months,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months=1,s.period.dows="",s.period.dates="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.weeks=0,s.period.days=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodMonthly")})),n.createElement("div",{style:_.settingsDiv},this.getPeriodSettingsMonthly(),e.period.months?n.createElement(W,null,n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,_.settingsDiv,_.rowMonthsDates)},n.createElement(H,{control:n.createElement(ne,{style:_.inputRadio,checked:!!e.period.dates,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months||=1;const r=[];for(let o=1;o<=31;o++)r.push(o);s.period.dates||=JSON.stringify(r),s.period.dows="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.weeks=0,s.period.days=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodDates")})),n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,_.settingsDiv,_.rowMonthsDates)},this.getPeriodSettingsDates())):null)),n.createElement(W,{component:"div",key:"years",sx:E.getStyle(this.props.theme,_.rowDiv,_.rowYears)},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!e.period.years,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.years=1,s.period.yearDate=1,s.period.yearMonth=1,s.period.dows="",s.period.months=0,s.period.dates="",s.period.weeks=0,s.period.days=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodYearly")})),n.createElement("div",{style:_.settingsDiv},n.createElement("div",{style:_.settingsDiv},this.getPeriodSettingsYearly()),!!e.period.years&&n.createElement("div",{style:_.settingsDiv},n.createElement("span",null,D.t("sch_on")),n.createElement(vt,{key:"input",value:this.state.schedule.period.yearDate,style:_.inputEvery,type:"number",inputProps:{min:1,max:31},onChange:s=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.yearDate=parseInt(s.target.value,10),r.period.yearDate<1&&(r.period.yearDate=31),r.period.yearDate>31&&(r.period.yearDate=1),this.onChange(r)}}),n.createElement(Xe,{variant:"standard",value:e.period.yearMonth,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.yearMonth=s.target.value,this.onChange(r)}},n.createElement(te,{key:"every",value:0},D.t("sch_yearEveryMonth")),Ei.map((s,r)=>n.createElement(te,{key:s,value:r+1},D.t(s)))))))]}getPeriodSettingsMinutes(e){return n.createElement("div",{style:{display:"inline-block",marginTop:e?15:"inherit"}},n.createElement("label",{style:{marginLeft:4,marginRight:4}},D.t("sch_every")),n.createElement(vt,{value:this.state.schedule.time.interval,style:{..._.inputEvery,verticalAlign:"bottom"},type:"number",inputProps:{min:1},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.time.interval=parseInt(t.target.value,10),this.onChange(s)}}),n.createElement(Xe,{variant:"standard",value:this.state.schedule.time.mode,onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.time.mode=t.target.value,this.onChange(s)}},n.createElement(te,{value:vr.minutes},D.t("sch_periodMinutes")),n.createElement(te,{value:vr.hours},D.t("sch_periodHours"))))}getPeriodSettingsWeekdays(){const e=this.state.schedule,t=e.period.dows&&e.period.dows!=="[1, 2, 3, 4, 5]"&&e.period.dows!=="[0, 6]";return[n.createElement("div",{key:"workdays"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.dows==="[1, 2, 3, 4, 5]",onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.dows="[1, 2, 3, 4, 5]",s.period.days&&(s.period.days=1),this.onChange(s)}}),label:D.t("sch_periodWorkdays")})),n.createElement("div",{key:"weekend"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.dows==="[0, 6]",onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.dows="[0, 6]",s.period.days&&(s.period.days=1),this.onChange(s)}}),label:D.t("sch_periodWeekend")})),n.createElement("div",{key:"specific",style:{verticalAlign:"top"}},n.createElement(H,{style:{verticalAlign:"top"},control:n.createElement(Me,{style:_.inputRadio,checked:!!t,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.dows="[0, 1, 2, 3, 4, 5, 6]",s.period.days&&(s.period.days=1),this.onChange(s)}}),label:D.t("sch_periodWeekdays")}),t&&(e.period.days===1||e.period.weeks)&&n.createElement(Dr,{row:!0,style:{..._.inputGroup,width:150}},[1,2,3,4,5,6,0].map(s=>n.createElement(H,{key:`specific_${s}`,style:_.inputGroupElement,control:n.createElement(ne,{style:_.inputSmallCheck,checked:e.period.dows.includes(s.toString()),onChange:r=>{const o=JSON.parse(JSON.stringify(this.state.schedule));let M;try{M=JSON.parse(o.period.dows)}catch{M=[]}r.target.checked&&!M.includes(s)?M.push(s):!r.target.checked&&M.includes(s)&&M.splice(M.indexOf(s),1),M.sort((a,u)=>a-u),o.period.dows=JSON.stringify(M),o.period.days&&(o.period.days=1),this.onChange(o)}}),label:D.t(Qr[s])}))))]}getPeriodSettingsDaily(){if(!this.state.schedule.period.days)return null;const e=this.state.schedule;return[n.createElement("div",{key:"every_day"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.days===1&&!e.period.dows,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=1,t.period.dows="",this.onChange(t)}}),label:D.t("sch_periodEveryDay")})),n.createElement("div",{key:"everyN_day"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.days>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=2,t.period.dows="",this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.days>1&&[n.createElement(vt,{key:"input",value:this.state.schedule.period.days,style:_.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.days=parseInt(t.target.value,10),s.period.dows="",this.onChange(s)}}),n.createElement("span",{key:"span",style:{paddingRight:10}},D.t("sch_periodDay"))])]}getPeriodSettingsWeekly(){if(!this.state.schedule.period.weeks)return null;const e=this.state.schedule;return[n.createElement("div",{key:"radios",style:{display:"inline-block",verticalAlign:"top"}},n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.weeks===1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=1,this.onChange(t)}}),label:D.t("sch_periodEveryWeek")})),n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.weeks>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=2,this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.weeks>1&&[n.createElement(vt,{key:"input",value:this.state.schedule.period.weeks,style:_.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.weeks=parseInt(t.target.value,10),this.onChange(s)}}),n.createElement("span",{key:"text"},D.t("sch_periodWeek"))]))]}getPeriodSettingsDates(){if(!this.state.schedule.period.dates)return null;const e=this.state.schedule,t=[];for(let r=1;r<=31;r++)t.push(r);const s=JSON.parse(e.period.dates);return n.createElement(Dr,{row:!0,style:{..._.inputGroup,maxWidth:620}},n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:s.length===31,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule)),o=[];for(let M=1;M<=31;M++)o.push(M);r.period.dates=JSON.stringify(o),this.onChange(r)}}),label:D.t("sch_all")}),n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:!s.length,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.dates="[]",this.onChange(r)}}),label:D.t("sch_no_one")}),s.length!==31&&!!s.length&&n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:!1,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule)),o=[],M=JSON.parse(r.period.dates);for(let a=1;a<=31;a++)M.includes(a)||o.push(a);o.sort((a,u)=>a-u),r.period.dates=JSON.stringify(o),this.onChange(r)}}),label:D.t("sch_invert")}),n.createElement("div",null),t.map(r=>n.createElement(H,{key:`date_${r}`,style:r?_.inputDateDay:{..._.inputDateDay,opacity:0,cursor:"default",userSelect:"none",pointerEvents:"none"},control:n.createElement(ne,{style:_.inputDateDayCheck,checked:JSON.parse(e.period.dates).includes(r),onChange:o=>{const M=JSON.parse(JSON.stringify(this.state.schedule));let a;try{a=JSON.parse(M.period.dates)}catch{a=[]}o.target.checked&&!a.includes(r)?a.push(r):!o.target.checked&&a.includes(r)&&a.splice(a.indexOf(r),1),a.sort((u,l)=>u-l),M.period.dates=JSON.stringify(a),this.onChange(M)}}),label:r<10?[n.createElement("span",{key:"0",style:{opacity:0}},"0"),n.createElement("span",{key:"num"},r)]:r})))}getPeriodSettingsMonthly(){if(!this.state.schedule.period.months)return null;const e=this.state.schedule,t=typeof e.period.months=="string"?JSON.parse(e.period.months):[];return[n.createElement("div",{key:"every"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:typeof e.period.months=="number"&&e.period.months===1,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months=1,this.onChange(e)}}),label:D.t("sch_periodEveryMonth")})),n.createElement("div",{key:"everyN"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:typeof e.period.months=="number"&&e.period.months>1,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months=2,this.onChange(s)}}),label:D.t("sch_periodEvery")}),typeof e.period.months=="number"&&e.period.months>1&&[n.createElement(vt,{key:"input",value:e.period.months,style:_.inputEvery,type:"number",inputProps:{min:2},onChange:s=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.months=parseInt(s.target.value,10),r.period.months<1&&(r.period.months=1),this.onChange(r)}}),n.createElement("span",{key:"text"},D.t("sch_periodMonth"))]),n.createElement("div",{key:"specific",style:{verticalAlign:"top"}},n.createElement(H,{style:{verticalAlign:"top"},control:n.createElement(Me,{style:_.inputRadio,checked:typeof e.period.months=="string",onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months="[1,2,3,4,5,6,7,8,9,10,11,12]",this.onChange(s)}}),label:D.t("sch_periodSpecificMonths")}),typeof e.period.months=="string"&&n.createElement(Dr,{row:!0,style:_.inputGroup},n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:t.length===12,onChange:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule)),r=[];for(let o=1;o<=12;o++)r.push(o);s.period.months=JSON.stringify(r),this.onChange(s)}}),label:D.t("sch_all")}),n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:!t.length,onChange:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months="[]",this.onChange(s)}}),label:D.t("sch_no_one")}),t.length!==12&&!!t.length&&n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:!1,onChange:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule)),r=[],o=JSON.parse(s.period.months);for(let M=1;M<=12;M++)o.includes(M)||r.push(M);r.sort((M,a)=>M-a),s.period.months=JSON.stringify(r),this.onChange(s)}}),label:D.t("sch_invert")}),n.createElement("div",null),Ei.map((s,r)=>n.createElement(H,{key:`month_${r}`,style:_.inputGroupElement,control:n.createElement(ne,{style:_.inputSmallCheck,checked:typeof e.period.months=="string"?JSON.parse(e.period.months).includes(r+1):e.period.months===r,onChange:o=>{const M=JSON.parse(JSON.stringify(this.state.schedule));let a;try{a=JSON.parse(M.period.months)}catch{a=[]}o.target.checked&&!a.includes(r+1)?a.push(r+1):!o.target.checked&&a.includes(r+1)&&a.splice(a.indexOf(r+1),1),a.sort((u,l)=>u-l),M.period.months=JSON.stringify(a),this.onChange(M)}}),label:D.t(s)}))))]}getPeriodSettingsYearly(){if(!this.state.schedule.period.years)return null;const e=this.state.schedule;return[n.createElement("div",{key:"year"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.years===1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=1,this.onChange(t)}}),label:D.t("sch_periodEveryYear")})),n.createElement("div",{key:"every"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.years>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=2,this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.years>1&&[n.createElement(vt,{key:"input",value:this.state.schedule.period.years,style:_.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.years=parseInt(t.target.value,10),s.period.years<1&&(s.period.years=1),this.onChange(s)}}),n.createElement("span",{key:"text"},D.t("sch_periodYear"))])]}static now2string(e){const t=new Date;return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),e&&(t.setDate(t.getDate()+2),t.setMilliseconds(t.getMilliseconds()-1)),`${yt(t.getDate())}.${yt(t.getMonth()+1)}.${yt(t.getFullYear())}`}static string2date(e){let t=e.split(".");return t.length===1?(t=e.split("-"),new Date(parseInt(t[0],10),parseInt(t[1],10)-1,parseInt(t[2],10))):new Date(parseInt(t[2],10),parseInt(t[1],10)-1,parseInt(t[0],10))}getValidSettings(){const e=this.state.schedule;return n.createElement("div",{style:_.rowDiv},n.createElement("div",{style:{..._.modeDiv,verticalAlign:"middle"}},n.createElement("span",{style:{fontWeight:"bold",paddingRight:10}},D.t("sch_valid")),n.createElement("span",null,D.t("sch_validFrom"))),n.createElement("div",{style:_.settingsDiv},n.createElement(le,{variant:"standard",style:{..._.inputDate,marginRight:10},key:"exactTimeFrom",inputRef:this.refFrom,defaultValue:Ur(e.valid.from),type:"date",onChange:t=>{this.timerFrom&&clearTimeout(this.timerFrom),this.refFrom.current&&(this.refFrom.current.style.background="#ff000030"),this.timerFrom=setTimeout(s=>{this.timerFrom=null,this.refFrom.current&&(this.refFrom.current.style.background="");const r=JSON.parse(JSON.stringify(this.state.schedule)),o=Ce.string2date(s);o.toString()!=="Invalid Date"&&(r.valid.from=`${yt(o.getDate())}.${yt(o.getMonth()+1)}.${o.getFullYear()}`,this.onChange(r))},1500,t.target.value)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"}),n.createElement(H,{control:n.createElement(ne,{style:_.inputRadio,checked:!!e.valid.to,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.valid.to=t.valid.to?"":Ce.now2string(!0),this.onChange(t)}}),label:D.t("sch_validTo")}),!!e.valid.to&&n.createElement(le,{variant:"standard",inputRef:this.refTo,style:{..._.inputDate,marginRight:10},key:"exactTimeFrom",type:"date",defaultValue:Ur(e.valid.to),onChange:t=>{this.timerTo&&clearTimeout(this.timerTo),this.refTo.current&&(this.refTo.current.style.background="#ff000030"),this.timerTo=setTimeout(s=>{this.timerTo=null,this.refTo.current&&(this.refTo.current.style.background="");const r=JSON.parse(JSON.stringify(this.state.schedule)),o=Ce.string2date(s);o.toString()!=="Invalid Date"&&(r.valid.to=`${yt(o.getDate())}.${yt(o.getMonth()+1)}.${o.getFullYear()}`,this.onChange(r))},1500,t.target.value)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"})))}render(){return n.createElement("div",{style:{height:"calc(100% - 48px)",width:"100%",overflow:"hidden"}},n.createElement("div",null,this.state.desc),n.createElement("div",{style:_.scrollWindow},n.createElement("h5",null,D.t("sch_time")),this.getTimePeriodElements(),this.getTimeExactElements(),Ce.getDivider(),n.createElement("h5",null,D.t("sch_period")),this.getPeriodModes(),!this.state.schedule.period.once&&Ce.getDivider(),!this.state.schedule.period.once&&this.getValidSettings()))}}const _i={different:{opacity:.5},icon:{width:16,height:16,marginRight:8}};class yge extends ze{wordDifferent;timeout=null;constructor(e){super(e),e.different&&(this.wordDifferent=e.t("ra___different__"));let t;Array.isArray(e.list)?t=e.list.filter(s=>(s==null?void 0:s._id)&&s.common).map(s=>{var r,o;return{name:E.getObjectNameFromObj(s,e.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:s._id,icon:(r=s.common)==null?void 0:r.icon,color:(o=s.common)==null?void 0:o.color}}):t=Object.values(e.list).filter(s=>(s==null?void 0:s._id)&&s.common).map(s=>{var r,o;return{name:E.getObjectNameFromObj(s,e.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:s._id,icon:(r=s.common)==null?void 0:r.icon,color:(o=s.common)==null?void 0:o.color}}),e.different&&e.value===e.different&&t.unshift({value:e.different,name:this.wordDifferent||""}),e.allowNone&&t.unshift({value:"",name:D.t("ra_none")}),this.state={list:t}}render(){this.props.allowNone&&!this.state.list.find(r=>r.value==="")?this.timeout=this.timeout||setTimeout(()=>{this.timeout=null;const r=JSON.parse(JSON.stringify(this.state.list));r.unshift({value:"",name:D.t("ra_none")}),this.setState({list:r})},100):!this.props.allowNone&&this.state.list.find(r=>r.value==="")&&(this.timeout=this.timeout||setTimeout(()=>{this.timeout=null;const r=JSON.parse(JSON.stringify(this.state.list)),o=this.state.list.findIndex(M=>M.value==="");r.splice(o,1),this.setState({list:r})},100));const e=this.state.list.find(r=>r.value===this.props.value||this.props.removePrefix&&r.value.replace(this.props.removePrefix,"")===this.props.value),t=this.props.value===this.props.different?{}:{color:(e==null?void 0:e.color)||void 0,backgroundColor:E.getInvertedColor((e==null?void 0:e.color)||"",this.props.themeType)};this.props.dense&&this.props.style&&Object.assign(t,this.props.style);const s=n.createElement(Xe,{variant:"standard",disabled:this.props.disabled,value:this.props.value,slotProps:{input:this.props.inputProps},renderValue:()=>n.createElement("span",null,e!=null&&e.icon?n.createElement(xe,{src:e==null?void 0:e.icon,style:_i.icon}):null,e==null?void 0:e.name),sx:{"&.MuiSelect-root":this.props.value===this.props.different?_i.different:{}},classes:{root:this.props.dense?this.props.className:""},style:t,onChange:r=>{if(this.props.different&&r.target.value!==this.props.different){let o=null;for(let M=0;Mthis.props.onChange(r.target.value));return}}this.props.onChange(this.props.removePrefix?r.target.value.replace(this.props.removePrefix,""):r.target.value)}},this.state.list.map(r=>n.createElement(te,{style:this.props.different&&r.value===this.props.different?_i.different:{color:r.color||void 0,backgroundColor:E.getInvertedColor(r.color||"",this.props.themeType)},key:r.value,value:r.value},r.icon?n.createElement(xe,{src:r.icon,style:_i.icon}):null,r.name)));return this.props.dense?s:n.createElement(wt,{variant:"standard",fullWidth:!!this.props.fullWidth,style:this.props.style,className:this.props.className},n.createElement(As,null,this.props.label),s)}}class Dge extends ze{resizerRefTable;resizerActiveIndex;resizerActiveDiv;resizerCurrentWidths;widthFilled=!1;installTimeout=null;resizerMin=0;resizerMinNext=0;resizerPosition=0;resizerOldWidth=0;resizerOldWidthNext=0;constructor(e){super(e),this.resizerRefTable=n.createRef(),this.resizerActiveIndex=null,this.resizerActiveDiv=null,this.resizerCurrentWidths=[]}componentDidMount(){this.resizerInstall()}componentWillUnmount(){this.resizerUninstall()}resizerInstall(){if(this.resizerRefTable.current&&!this.resizerRefTable.current._installed){this.resizerRefTable.current._installed=!0;const e=this.resizerRefTable.current.querySelectorAll("th"),t=(window._localStorage||window.localStorage).getItem(`App.${this.props.name||"history"}.table`);if(this.widthFilled=!1,t)try{this.resizerCurrentWidths=JSON.parse(t),this.widthFilled=!0}catch{}if(this.widthFilled)if(this.resizerCurrentWidths.length!==e.length)this.resizerCurrentWidths=[],this.widthFilled=!1;else{const s=this.resizerRefTable.current.offsetWidth;let r=0;for(let o=0;o20&&(this.resizerCurrentWidths=[],this.widthFilled=!1)}for(let s=0;s{this.installTimeout=null,this.resizerInstall()},100)}resizerReset=()=>{for(let e=0;e{if(this.resizerActiveDiv&&this.resizerActiveIndex!==null){const t=this.resizerOldWidth+e.clientX-this.resizerPosition,s=this.resizerOldWidthNext-e.clientX+this.resizerPosition;(!this.resizerMin||t>this.resizerMin)&&(!this.resizerMinNext||s>this.resizerMinNext)&&(this.resizerCurrentWidths[this.resizerActiveIndex]=t,this.resizerCurrentWidths[this.resizerActiveIndex+1]=s,this.resizerApplyWidths())}};resizerMouseUp=()=>{(window._localStorage||window.localStorage).setItem(`App.${this.props.name||"history"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveIndex=null,this.resizerActiveDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{var t,s,r,o;if(this.resizerActiveIndex===null||this.resizerActiveIndex===void 0){console.log(`Mouse down ${(t=e.target)==null?void 0:t.dataset.index}`),this.resizerActiveIndex=parseInt(((s=e.target)==null?void 0:s.dataset.index)||"0",10),this.resizerActiveDiv=e.target,this.resizerMin=this.props.minWidths?this.props.minWidths[this.resizerActiveIndex]:0,this.resizerMinNext=this.props.minWidths?this.props.minWidths[this.resizerActiveIndex+1]:0,this.resizerPosition=e.clientX;let M;this.resizerCurrentWidths[this.resizerActiveIndex]==="auto"&&(M=(r=this.resizerRefTable.current)==null?void 0:r.querySelectorAll("th"),M&&(this.resizerCurrentWidths[this.resizerActiveIndex]=M[this.resizerActiveIndex].offsetWidth)),this.resizerCurrentWidths[this.resizerActiveIndex+1]==="auto"&&(M=M||((o=this.resizerRefTable.current)==null?void 0:o.querySelectorAll("th")),M&&(this.resizerCurrentWidths[this.resizerActiveIndex+1]=M[this.resizerActiveIndex+1].offsetWidth)),this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveIndex],this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerActiveIndex+1],window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};render(){if(this.props.ready===!1)return n.createElement(ll,null);const e={gridTemplateColumns:this.resizerApplyWidths()};return n.createElement(Ra,{stickyHeader:this.props.stickyHeader,size:this.props.size||"small",className:this.props.className,sx:this.props.sx,ref:this.resizerRefTable,style:{...this.props.style||void 0,...e}},this.props.children)}}const br={div:{borderRadius:3,padding:"0 3px",lineHeight:"20px",whiteSpace:"nowrap",overflow:"hidden",display:"flex",alignItems:"center"},icon:{width:16,height:16,marginRight:8,verticalAlign:"middle"},text:{display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}};function dge(i){var o,M,a,u,l,N,c,L,j;const e=i.value;let t;const s=i.removePrefix||"";if(typeof e=="string"){const g=i.list;if(g)if(Array.isArray(g)){const y=g.find(d=>(d==null?void 0:d._id)===s+e);y?t={name:E.getObjectNameFromObj(y,i.lang).replace("system.group.",""),value:y._id,icon:i.icon||((o=y.common)==null?void 0:o.icon),color:i.color||((M=y.common)==null?void 0:M.color)}:t={name:e,value:s+e}}else if(g[s+e]){const y=g[s+e];t={name:E.getObjectNameFromObj(y,i.lang).replace("system.group.",""),value:y._id,icon:i.icon||((a=y.common)==null?void 0:a.icon),color:i.color||((u=y.common)==null?void 0:u.color)}}else t={name:e,value:s+e,icon:i.icon,color:i.color};else t={name:e,value:s+e,icon:i.icon,color:i.color}}else if(!e||typeof e!="object")t={name:"",value:"",icon:i.icon,color:i.color};else{const g=e;t={name:E.getObjectNameFromObj(g,i.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:g._id,icon:i.icon||((l=g.common)==null?void 0:l.icon),color:i.color||((N=g.common)==null?void 0:N.color)}}const r=t!=null&&t.color?{border:`1px solid ${E.invertColor(t==null?void 0:t.color)}`,color:E.getInvertedColor(t==null?void 0:t.color,i.themeType||"light",!0)||void 0,backgroundColor:t==null?void 0:t.color}:{};return n.createElement("div",{style:{...i.style||void 0,...br.div,...r||void 0},className:E.clsx(i.className,(c=i.moreClasses)==null?void 0:c.root),title:i.title||t.value},t!=null&&t.icon?n.createElement(xe,{src:t==null?void 0:t.icon,className:(L=i.moreClasses)==null?void 0:L.icon,style:br.icon}):null,n.createElement("div",{style:br.text,className:(j=i.moreClasses)==null?void 0:j.text},t==null?void 0:t.name))}function zge({themeName:i,toggleTheme:e,t,className:s,style:r,size:o}){return n.createElement("div",{className:s||void 0,style:r||void 0},n.createElement(ae,{title:t("ra_Change color theme"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},n.createElement(P,{onClick:()=>e(),size:o||"medium"},i==="dark"&&n.createElement(eN,{className:s}),i==="blue"&&n.createElement(tN,{className:s}),i==="colored"&&n.createElement($o,{className:s}),i!=="dark"&&i!=="blue"&&i!=="colored"&&n.createElement(sN,{className:s}))))}function gr(){return(gr=Object.assign||function(i){for(var e=1;e=0||(r[t]=i[t]);return r}function zo(i){var e=Fe(i),t=Fe(function(s){e.current&&e.current(s)});return e.current=i,t.current}var Mi=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),i>t?t:i0:d.buttons>0)&&r.current?o(ya(r.current,d,a.current)):y(!1)},g=function(){return y(!1)};function y(d){var I=u.current,m=ho(r.current),w=d?m.addEventListener:m.removeEventListener;w(I?"touchmove":"mousemove",j),w(I?"touchend":"mouseup",g)}return[function(d){var I=d.nativeEvent,m=r.current;if(m&&(Da(I),!(function(O,A){return A&&!ei(O)})(I,u.current)&&m)){if(ei(I)){u.current=!0;var w=I.changedTouches||[];w.length&&(a.current=w[0].identifier)}m.focus(),o(ya(m,I,a.current)),y(!0)}},function(d){var I=d.which||d.keyCode;I<37||I>40||(d.preventDefault(),M({left:I===39?.05:I===37?-.05:0,top:I===40?.05:I===38?-.05:0}))},y]},[M,o]),N=l[0],c=l[1],L=l[2];return ye(function(){return L},[L]),n.createElement("div",gr({},s,{onTouchStart:N,onMouseDown:N,className:"react-colorful__interactive",ref:r,onKeyDown:c,tabIndex:0,role:"slider"}))}),rM=function(i){return i.filter(Boolean).join(" ")},fu=function(i){var e=i.color,t=i.left,s=i.top,r=s===void 0?.5:s,o=rM(["react-colorful__pointer",i.className]);return n.createElement("div",{className:o,style:{top:100*r+"%",left:100*t+"%"}},n.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:e}}))},pe=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*i)/t},dLe=function(i){return CLe(Io(i))},Io=function(i){return i[0]==="#"&&(i=i.substring(1)),i.length<6?{r:parseInt(i[0]+i[0],16),g:parseInt(i[1]+i[1],16),b:parseInt(i[2]+i[2],16),a:i.length===4?pe(parseInt(i[3]+i[3],16)/255,2):1}:{r:parseInt(i.substring(0,2),16),g:parseInt(i.substring(2,4),16),b:parseInt(i.substring(4,6),16),a:i.length===8?pe(parseInt(i.substring(6,8),16)/255,2):1}},zLe=function(i){return wLe(ILe(i))},hLe=function(i){var e=i.s,t=i.v,s=i.a,r=(200-e)*t/100;return{h:pe(i.h),s:pe(r>0&&r<200?e*t/100/(r<=100?r:200-r)*100:0),l:pe(r/2),a:pe(s,2)}},wo=function(i){var e=hLe(i);return"hsl("+e.h+", "+e.s+"%, "+e.l+"%)"},ILe=function(i){var e=i.h,t=i.s,s=i.v,r=i.a;e=e/360*6,t/=100,s/=100;var o=Math.floor(e),M=s*(1-t),a=s*(1-(e-o)*t),u=s*(1-(1-e+o)*t),l=o%6;return{r:pe(255*[s,a,M,M,u,s][l]),g:pe(255*[u,s,s,a,M,M][l]),b:pe(255*[M,M,u,s,s,a][l]),a:pe(r,2)}},fi=function(i){var e=i.toString(16);return e.length<2?"0"+e:e},wLe=function(i){var e=i.r,t=i.g,s=i.b,r=i.a,o=r<1?fi(pe(255*r)):"";return"#"+fi(e)+fi(t)+fi(s)+o},CLe=function(i){var e=i.r,t=i.g,s=i.b,r=i.a,o=Math.max(e,t,s),M=o-Math.min(e,t,s),a=M?o===e?(t-s)/M:o===t?2+(s-e)/M:4+(e-t)/M:0;return{h:pe(60*(a<0?a+6:a)),s:pe(o?M/o*100:0),v:pe(o/255*100),a:r}},ALe=n.memo(function(i){var e=i.hue,t=i.onChange,s=rM(["react-colorful__hue",i.className]);return n.createElement("div",{className:s},n.createElement(_u,{onMove:function(r){t({h:360*r.left})},onKey:function(r){t({h:Mi(e+360*r.left,0,360)})},"aria-label":"Hue","aria-valuenow":pe(e),"aria-valuemax":"360","aria-valuemin":"0"},n.createElement(fu,{className:"react-colorful__hue-pointer",left:e/360,color:wo({h:e,s:100,v:100,a:1})})))}),mLe=n.memo(function(i){var e=i.hsva,t=i.onChange,s={backgroundColor:wo({h:e.h,s:100,v:100,a:1})};return n.createElement("div",{className:"react-colorful__saturation",style:s},n.createElement(_u,{onMove:function(r){t({s:100*r.left,v:100-100*r.top})},onKey:function(r){t({s:Mi(e.s+100*r.left,0,100),v:Mi(e.v-100*r.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+pe(e.s)+"%, Brightness "+pe(e.v)+"%"},n.createElement(fu,{className:"react-colorful__saturation-pointer",top:1-e.v/100,left:e.s/100,color:wo(e)})))}),Su=function(i,e){if(i===e)return!0;for(var t in i)if(i[t]!==e[t])return!1;return!0},pLe=function(i,e){return i.toLowerCase()===e.toLowerCase()||Su(Io(i),Io(e))};function OLe(i,e,t){var s=zo(t),r=Yo(function(){return i.toHsva(e)}),o=r[0],M=r[1],a=Fe({color:e,hsva:o});ye(function(){if(!i.equal(e,a.current.color)){var l=i.toHsva(e);a.current={hsva:l,color:e},M(l)}},[e,i]),ye(function(){var l;Su(o,a.current.hsva)||i.equal(l=i.fromHsva(o),a.current.color)||(a.current={hsva:o,color:l},s(l))},[o,i,s]);var u=Qt(function(l){M(function(N){return Object.assign({},N,l)})},[]);return[o,u]}var ELe=typeof window<"u"?sl:ye,_Le=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},da=new Map,fLe=function(i){ELe(function(){var e=i.current?i.current.ownerDocument:document;if(e!==void 0&&!da.has(e)){var t=e.createElement("style");t.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,da.set(e,t);var s=_Le();s&&t.setAttribute("nonce",s),e.head.appendChild(t)}},[])},SLe=function(i){var e=i.className,t=i.colorModel,s=i.color,r=s===void 0?t.defaultColor:s,o=i.onChange,M=Eu(i,["className","colorModel","color","onChange"]),a=Fe(null);fLe(a);var u=OLe(t,r,o),l=u[0],N=u[1],c=rM(["react-colorful",e]);return n.createElement("div",gr({},M,{ref:a,className:c}),n.createElement(mLe,{hsva:l,onChange:N}),n.createElement(ALe,{hue:l.h,onChange:N,className:"react-colorful__last-control"}))},xLe={defaultColor:"000",toHsva:dLe,fromHsva:function(i){return zLe({h:i.h,s:i.s,v:i.v,a:1})},equal:pLe},kLe=function(i){return n.createElement(SLe,gr({},i,{colorModel:xLe}))};class YLe extends ze{dialogName;filters;filterFunc;constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName=`SelectID.${this.dialogName}`;const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch{this.filters={}}e.filters&&(this.filters={...this.filters,...e.filters||{}});let s=this.props.selected||[];if(Array.isArray(s)||(s=[s]),s=s.filter(r=>r),e.filterFunc)if(typeof e.filterFunc=="string")try{this.filterFunc=new Function("obj",e.filterFunc)}catch{console.error(`Cannot parse filter function: "obj => ${e.filterFunc}"`),this.filterFunc=void 0}else this.filterFunc=e.filterFunc;this.state={selected:s,name:"",selectionBlocked:!1}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect?this.state.selected:this.state.selected[0]||"",this.state.name),this.props.onClose()}render(){let e;return this.state.name||this.state.selected.length?this.state.selected.length===1?e=[n.createElement("span",{key:"selected"},D.t("ra_Selected")," "),n.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},(this.state.name||this.state.selected[0])+(this.state.name?` [${this.state.selected[0]}]`:""))]:e=[n.createElement("span",{key:"selected"},D.t("ra_Selected")," "),n.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},D.t("%s items",this.state.selected.length.toString()))]:e=this.props.title||D.t("ra_Please select object ID..."),n.createElement(de,{onClose:()=>{},maxWidth:!1,style:{zIndex:this.props.zIndex||void 0},sx:{"& .MuiDialog-paper":{height:"95%",p:"4px",width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)"}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectid_title"},n.createElement(Ie,{id:"ar_dialog_selectid_title",style:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}},e),n.createElement(Ae,{style:{height:"100%",overflow:"hidden",padding:"8px 4px"}},n.createElement(DLe,{foldersFirst:this.props.foldersFirst,imagePrefix:this.props.imagePrefix||this.props.prefix,dateFormat:this.props.dateFormat,defaultFilters:this.filters,dialogName:this.dialogName,isFloatComma:this.props.isFloatComma,showExpertButton:this.props.showExpertButton!==void 0?this.props.showExpertButton:!0,expertMode:this.props.expertMode,columns:this.props.columns||["name","type","role","room","func","val"],types:this.props.types?Array.isArray(this.props.types)?this.props.types:[this.props.types]:["state"],root:this.props.root,t:D.t,lang:this.props.lang||D.getLanguage(),socket:this.props.socket,selected:this.state.selected,multiSelect:this.props.multiSelect,notEditable:this.props.notEditable===void 0?!0:this.props.notEditable,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,customFilter:this.props.customFilter,allowNonObjects:this.props.allowNonObjects,onFilterChanged:t=>{this.filters=t,(window._localStorage||window.localStorage).setItem(this.dialogName,JSON.stringify(t))},onSelect:async(t,s,r)=>{let o;if(Array.isArray(t)?o=t:o=[t],JSON.stringify(o)!==JSON.stringify(this.state.selected)){let M=!0;if(this.props.onSelectConfirm){const a={};for(const u of o)try{a[u]=await this.props.socket.getObject(u)}catch{}M=await this.props.onSelectConfirm(o,a)}this.setState({selected:o,name:s,selectionBlocked:!M},()=>r&&this.handleOk())}else r&&this.handleOk()},filterFunc:this.filterFunc,title:"",onAllLoaded:()=>this.setState({allLoaded:!0})})),n.createElement(me,null,n.createElement(X,{id:`ar_dialog_selectid_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),startIcon:n.createElement(ve,null),disabled:!this.state.allLoaded||!this.state.selected.length||this.state.selectionBlocked,color:"primary"},this.props.ok||D.t("ra_Ok")),n.createElement(X,{id:`ar_dialog_selectid_cancel_${this.props.dialogName||""}`,color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}function $t(i,e,t){if(typeof e=="string"&&(e=e.split(".")),!i)return null;if(e.length===1)return t&&t[i[e[0]]]?t[i[e[0]]]:i[e[0]];const s=e.shift();return $t(i[s],e)}function xu(i,e,t){if(typeof e=="string"&&(e=e.split(".")),e.length===1)return i[e[0]]=t;const s=e.shift();return(i[s]===null||i[s]===void 0)&&(i[s]={}),xu(i[s],e,t)}const R={tableContainer:{width:"100%",height:"100%",overflow:"auto"},table:{width:"100%",minWidth:800,maxWidth:1920},cell:{paddingTop:0,paddingBottom:0,paddingLeft:4,paddingRight:4},rowMainWithChildren:{},rowMainWithoutChildren:{},rowNoEdit:{opacity:.3},cellExpand:{width:30},cellButton:{width:30},cellHeader:{fontWeight:"bold",background:i=>(i.palette.mode==="dark","#888"),color:i=>i.palette.mode==="dark"?"#EEE":"#111",height:48,wordBreak:"break-word",whiteSpace:"pre"},width_name_nicknames:{maxWidth:150},width_ioType:{maxWidth:100},width_type:{maxWidth:100},width_displayTraits:{maxWidth:100},width_roomHint:{maxWidth:100},rowSecondary:{fontStyle:"italic"},cellSecondary:{fontSize:10},visuallyHidden:{border:0,clip:"rect(0 0 0 0)",height:1,margin:-1,overflow:"hidden",padding:0,position:"absolute",top:20,width:1},fieldEditWithButton:{width:"calc(100% - 33px)",display:"inline-block"},fieldEdit:{width:"100%",display:"inline-block",lineHeight:"50px",verticalAlign:"middle"},fieldButton:{width:30,display:"inline-block"},colorDialog:{overflow:"hidden",padding:15},subText:{fontSize:10,fontStyle:"italic"},glow:{animation:"glow 0.2s 2 alternate"}};function za(i,e,t,s){const r=$t(i,t,s)||"",o=$t(e,t,s)||"";return or?1:0}function QLe(i,e,t){return i==="desc"?(s,r)=>za(s,r,e,t):(s,r)=>-za(s,r,e,t)}function vLe(i,e){const t=i.map((s,r)=>({e:s,i:r}));return t.sort((s,r)=>{const o=e(s.e,r.e);return o||s.i-r.i}),t.map(s=>s.e)}class Co extends ze{selectCallback=null;updateTimeout=null;constructor(e){super(e);let t=(window._localStorage||window.localStorage).getItem(this.props.name||"iob-table")||"[]";try{t=JSON.parse(t)||[]}catch{t=[]}Array.isArray(t)||(t=[]),this.state={opened:t,editMode:!1,deleteMode:!1,editData:null,order:"asc",update:null,orderBy:this.props.columns[0].field,showSelectColor:!1}}componentWillUnmount(){this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null)}static getDerivedStateFromProps(e,t){if(e.glowOnChange){const s=[];let r=0;return e.data&&t.data&&e.data.forEach(o=>{var a;r++;const M=(a=t.data)==null?void 0:a.find(u=>u.id===o.id);M?JSON.stringify(M)!==JSON.stringify(o)&&s.push(o.id):s.push(o.id)}),s.length&&s.length!==r?{data:e.data,update:s}:{data:e.data}}return{data:e.data}}renderCellEdit(e,t){let s=$t(e,t.field);return Array.isArray(s)&&(s=s[0]),t.lookup?this.renderCellEditSelect(t,s):t.editComponent?this.renderCellEditCustom(t,s,e):t.type==="boolean"||!t.type&&typeof s=="boolean"?this.renderCellEditBoolean(t,s):t.type==="color"?this.renderCellEditColor(t,s):t.type==="oid"?this.renderCellEditObjectID(t,s):t.type==="numeric"?this.renderCellEditNumber(t,s):this.renderCellEditString(t,s)}onChange(e,t,s){const r=this.state.editData?{...this.state.editData}:{};s===t?delete r[e.field]:r[e.field]=s,this.setState({editData:r})}renderCellEditSelect(e,t){return n.createElement(Xe,{variant:"standard",onChange:s=>this.onChange(e,t,s.target.value),value:this.state.editData&&this.state.editData[e.field]||t},e.lookup&&Object.keys(e.lookup).map((s,r)=>{var o;return n.createElement(te,{key:r,value:s},(o=e.lookup)==null?void 0:o[s])}))}renderCellEditString(e,t){return n.createElement(le,{variant:"standard",style:R.fieldEdit,fullWidth:!0,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:s=>this.onChange(e,t,s.target.value)})}renderCellEditNumber(e,t){return n.createElement(le,{variant:"standard",style:R.fieldEdit,type:"number",fullWidth:!0,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:s=>this.onChange(e,t,s.target.value)})}renderCellEditCustom(e,t,s){const r=e.editComponent;return this.state.editData&&this.state.editData[e.field]!==void 0&&(t=this.state.editData[e.field],s=JSON.parse(JSON.stringify(s)),s[e.field]=t),r?n.createElement(r,{value:t,rowData:s,onChange:o=>this.onChange(e,t,o)}):null}renderCellEditBoolean(e,t){return n.createElement(ne,{checked:this.state.editData&&this.state.editData[e.field]!==void 0?!!this.state.editData[e.field]:!!t,onChange:s=>this.onChange(e,!!t,s.target.checked),inputProps:{"aria-label":"checkbox"}})}renderSelectColorDialog(){return n.createElement(de,{sx:{"& .MuiPaper-root":R.root,"& .MuiPaper-paper":R.paper},onClose:()=>{this.selectCallback=null,this.setState({showSelectColor:!1})},open:this.state.showSelectColor},n.createElement(kLe,{color:this.state.selectIdValue,onChange:e=>this.setState({selectIdValue:e},()=>{this.selectCallback&&this.selectCallback(e)})}))}renderCellEditColor(e,t){const s=this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t;return n.createElement("div",{style:R.fieldEdit},n.createElement(le,{variant:"standard",fullWidth:!0,style:R.fieldEditWithButton,value:s,inputProps:{style:{backgroundColor:s,color:E.isUseBright(s)?"#FFF":"#000"}},onChange:r=>this.onChange(e,!!t,r.target.value)}),n.createElement(P,{style:R.fieldButton,onClick:()=>{this.selectCallback=r=>this.onChange(e,t,r),this.setState({showSelectColor:!0,selectIdValue:t})},size:"large"},n.createElement(iN,null)))}renderSelectIdDialog(){return this.state.showSelectId&&this.props.socket?n.createElement(YLe,{key:"tableSelect",imagePrefix:"../..",dialogName:this.props.adapterName,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,selected:this.state.selectIdValue,onClose:()=>this.setState({showSelectId:!1}),onOk:e=>{this.setState({showSelectId:!1,selectIdValue:null});const t=Array.isArray(e)?e[0]:e;t&&this.selectCallback&&(this.selectCallback&&this.selectCallback(t),this.selectCallback=null)}}):null}renderCellEditObjectID(e,t){return n.createElement("div",{style:R.fieldEdit},n.createElement(le,{variant:"standard",fullWidth:!0,style:R.fieldEditWithButton,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:s=>this.onChange(e,t,s.target.value)}),n.createElement(P,{style:R.fieldButton,onClick:()=>{this.selectCallback=s=>this.onChange(e,t,s),this.setState({showSelectId:!0,selectIdValue:t})},size:"large"},n.createElement(rN,null)))}static renderCellNonEdit(e,t){let s=$t(e,t.field,t.lookup);return Array.isArray(s)&&(s=s[0]),t.type==="boolean"?n.createElement(ne,{checked:!!s,disabled:!0,inputProps:{"aria-label":"checkbox"}}):s}renderCell(e,t,s,r){return this.state.editMode===r&&t.editable!=="never"&&t.editable!==!1?n.createElement(Ve,{key:t.field,style:{...R.cell,...s?R.cellSecondary:void 0,...t.cellStyle},component:"th"},this.renderCellEdit(e,t)):n.createElement(Ve,{key:t.field,style:{...R.cell,...s?R.cellSecondary:void 0,...t.cellStyle},component:"th"},Co.renderCellNonEdit(e,t))}static renderCellWithSubField(e,t){const s=$t(e,t.field,t.lookup);if(t.subField){const r=$t(e,t.subField,t.subLookup);return n.createElement("div",null,n.createElement("div",{style:R.mainText},s),n.createElement("div",{style:{...R.subText,...t.subStyle||void 0}},r))}return n.createElement("div",null,n.createElement("div",{style:R.mainText},s))}renderLine(e,t){const s=this.props.levelShift===void 0?24:this.props.levelShift;t=t||0;const r=this.props.data.indexOf(e);if(!e||!t&&e.parentId||t&&!e.parentId)return null;const o=this.state.opened.includes(e.id),M=this.props.data.filter(u=>u.parentId===e.id),a=n.createElement(AM,{key:e.id,className:`table-row-${(e.id||"").toString().replace(/[.$]/g,"_")}`,style:{...this.state.update&&this.state.update.includes(e.id)&&R.glow||void 0,...R.row,...t?R.rowSecondary:void 0,...!t&&M.length?R.rowMainWithChildren:void 0,...!t&&!M.length?R.rowMainWithoutChildren:void 0,...this.state.editMode!==!1&&this.state.editMode!==r?R.rowNoEdit:void 0,...this.state.deleteMode!==!1&&this.state.deleteMode!==r?R.rowNoEdit:void 0}},n.createElement(Ve,{style:{...R.cell,...R.cellExpand,...t?R.cellSecondary:void 0}},M.length?n.createElement(P,{onClick:()=>{const u=[...this.state.opened],l=u.indexOf(e.id);l===-1?(u.push(e.id),u.sort()):u.splice(l,1),(window._localStorage||window.localStorage).setItem(this.props.name||"iob-table",JSON.stringify(u)),this.setState({opened:u})},size:"small"},o?n.createElement(oN,null):n.createElement(MN,null)):null),n.createElement(Ve,{scope:"row",style:{...R.cell,...t?R.cellSecondary:void 0,...this.props.columns[0].cellStyle,paddingLeft:s*t}},this.props.columns[0].subField?Co.renderCellWithSubField(e,this.props.columns[0]):$t(e,this.props.columns[0].field,this.props.columns[0].lookup)),this.props.columns.map((u,l)=>!l&&!u.hidden?null:this.renderCell(e,u,t,r)),this.props.onUpdate?n.createElement(Ve,{style:{...R.cell,...R.cellButton}},this.state.editMode===r||this.state.deleteMode===r?n.createElement(P,{disabled:this.state.editMode!==!1&&(!this.state.editData||!Object.keys(this.state.editData).length),onClick:()=>{if(this.state.editMode!==!1){const u=JSON.parse(JSON.stringify(e));this.state.editData&&Object.keys(this.state.editData).forEach(l=>{var N;return xu(u,l,(N=this.state.editData)==null?void 0:N[l])}),this.setState({editMode:!1},()=>this.props.onUpdate&&this.props.onUpdate(u,e))}else this.setState({deleteMode:!1},()=>this.props.onDelete&&this.props.onDelete(e))},size:"large"},n.createElement(ve,null)):n.createElement(P,{disabled:this.state.editMode!==!1,onClick:()=>this.setState({editMode:r,editData:null}),size:"large"},n.createElement(Ks,null))):null,this.props.onDelete&&!this.props.onUpdate?n.createElement(Ve,{style:{...R.cell,...R.cellButton}},this.state.deleteMode===r?n.createElement(P,{disabled:this.state.editMode!==!1&&(!this.state.editData||!Object.keys(this.state.editData).length),onClick:()=>this.setState({deleteMode:!1},()=>this.props.onDelete&&this.props.onDelete(e)),size:"large"},n.createElement(ve,null)):null):null,this.props.onUpdate||this.props.onDelete?n.createElement(Ve,{style:{...R.cell,...R.cellButton}},this.state.editMode===r||this.state.deleteMode===r?n.createElement(P,{onClick:()=>this.setState({editMode:!1,deleteMode:!1}),size:"large"},n.createElement(ge,null)):this.props.onDelete?n.createElement(P,{disabled:this.state.deleteMode!==!1,onClick:()=>this.setState({deleteMode:r}),size:"large"},n.createElement(ut,null)):null):null);if(!t&&o){const u=M.map(l=>this.renderLine(l,t+1));return u.unshift(a),u}return a}handleRequestSort(e){const t=this.state.orderBy===e&&this.state.order==="asc";this.setState({order:t?"desc":"asc",orderBy:e})}renderHead(){return n.createElement(Nl,null,n.createElement(AM,{key:"headerRow"},n.createElement(Ve,{component:"th",sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R.cellExpand)}),n.createElement(Ve,{component:"th",sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R[`width_${this.props.columns[0].field.replace(/\./g,"_")}`]),style:this.props.columns[0].headerStyle||this.props.columns[0].cellStyle,sortDirection:this.props.noSort?!1:this.state.orderBy===this.props.columns[0].field?this.state.order:!1},this.props.noSort?null:n.createElement(mM,{active:this.state.orderBy===this.props.columns[0].field,direction:this.state.orderBy===this.props.columns[0].field?this.state.order:"asc",onClick:()=>this.handleRequestSort(this.props.columns[0].field)},this.props.columns[0].title||this.props.columns[0].field,this.state.orderBy===this.props.columns[0].field?n.createElement("span",{style:R.visuallyHidden},this.state.order==="desc"?"sorted descending":"sorted ascending"):null)),this.props.columns.map((e,t)=>!t&&!e.hidden?null:n.createElement(Ve,{key:e.field,sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R[`width_${e.field.replace(/\./g,"_")}`]),style:e.headerStyle||e.cellStyle,component:"th"},this.props.noSort?null:n.createElement(mM,{active:this.state.orderBy===e.field,direction:this.state.orderBy===e.field?this.state.order:"asc",onClick:()=>this.handleRequestSort(e.field)},e.title||e.field,this.state.orderBy===e.field?n.createElement("span",{style:R.visuallyHidden},this.state.order==="desc"?"sorted descending":"sorted ascending"):null))),this.props.onUpdate?n.createElement(Ve,{component:"th",sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R.cellButton)},this.props.noAdd?null:n.createElement(Ct,{color:"primary",size:"small",disabled:this.state.editMode!==!1,onClick:()=>this.props.onUpdate&&this.props.onUpdate(!0)},n.createElement(Gr,null))):null,this.props.onDelete||this.props.onUpdate?n.createElement(Ve,{component:"th",sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R.cellButton)}):null))}render(){const e=this.props.columns.find(t=>t.field===this.state.orderBy);if(e){const t=e.lookup,s=vLe(this.props.data,QLe(this.state.order,this.state.orderBy,t));return this.state.update&&this.state.update.length&&(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null,this.setState({update:null})},500)),n.createElement("div",{style:R.tableContainer,className:this.props.className},n.createElement(Ra,{style:R.table,"aria-label":"simple table",size:"small",stickyHeader:!0},this.renderHead(),n.createElement(Ll,null,s.map(r=>this.renderLine(r)))),this.renderSelectIdDialog(),this.renderSelectColorDialog())}return null}}function ha(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);e&&(s=s.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),t.push.apply(t,s)}return t}function ku(i){for(var e=1;ei.length)&&(e=i.length);for(var t=0,s=new Array(e);t
',tje=Number.isNaN||Nt.isNaN;function K(i){return typeof i=="number"&&!tje(i)}var ka=function(e){return e>0&&e<1/0};function $r(i){return typeof i>"u"}function Ms(i){return Ao(i)==="object"&&i!==null}var sje=Object.prototype.hasOwnProperty;function ws(i){if(!Ms(i))return!1;try{var e=i.constructor,t=e.prototype;return e&&t&&sje.call(t,"isPrototypeOf")}catch{return!1}}function Pe(i){return typeof i=="function"}var ije=Array.prototype.slice;function Ju(i){return Array.from?Array.from(i):ije.call(i)}function De(i,e){return i&&Pe(e)&&(Array.isArray(i)||K(i.length)?Ju(i).forEach(function(t,s){e.call(i,t,s,i)}):Ms(i)&&Object.keys(i).forEach(function(t){e.call(i,i[t],t,i)})),i}var ue=Object.assign||function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r0&&s.forEach(function(o){Ms(o)&&Object.keys(o).forEach(function(M){e[M]=o[M]})}),e},rje=/\.\d*(?:0|9){12}\d*$/;function ps(i){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return rje.test(i)?Math.round(i*e)/e:i}var oje=/^width|height|left|top|marginLeft|marginTop$/;function Wt(i,e){var t=i.style;De(e,function(s,r){oje.test(r)&&K(s)&&(s="".concat(s,"px")),t[r]=s})}function Mje(i,e){return i.classList?i.classList.contains(e):i.className.indexOf(e)>-1}function he(i,e){if(e){if(K(i.length)){De(i,function(s){he(s,e)});return}if(i.classList){i.classList.add(e);return}var t=i.className.trim();t?t.indexOf(e)<0&&(i.className="".concat(t," ").concat(e)):i.className=e}}function lt(i,e){if(e){if(K(i.length)){De(i,function(t){lt(t,e)});return}if(i.classList){i.classList.remove(e);return}i.className.indexOf(e)>=0&&(i.className=i.className.replace(e,""))}}function Cs(i,e,t){if(e){if(K(i.length)){De(i,function(s){Cs(s,e,t)});return}t?he(i,e):lt(i,e)}}var nje=/([a-z\d])([A-Z])/g;function cM(i){return i.replace(nje,"$1-$2").toLowerCase()}function ko(i,e){return Ms(i[e])?i[e]:i.dataset?i.dataset[e]:i.getAttribute("data-".concat(cM(e)))}function ai(i,e,t){Ms(t)?i[e]=t:i.dataset?i.dataset[e]=t:i.setAttribute("data-".concat(cM(e)),t)}function aje(i,e){if(Ms(i[e]))try{delete i[e]}catch{i[e]=void 0}else if(i.dataset)try{delete i.dataset[e]}catch{i.dataset[e]=void 0}else i.removeAttribute("data-".concat(cM(e)))}var Bu=/\s\s*/,Gu=(function(){var i=!1;if(Tr){var e=!1,t=function(){},s=Object.defineProperty({},"once",{get:function(){return i=!0,e},set:function(o){e=o}});Nt.addEventListener("test",t,s),Nt.removeEventListener("test",t,s)}return i})();function tt(i,e,t){var s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=t;e.trim().split(Bu).forEach(function(o){if(!Gu){var M=i.listeners;M&&M[o]&&M[o][t]&&(r=M[o][t],delete M[o][t],Object.keys(M[o]).length===0&&delete M[o],Object.keys(M).length===0&&delete i.listeners)}i.removeEventListener(o,r,s)})}function Ze(i,e,t){var s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=t;e.trim().split(Bu).forEach(function(o){if(s.once&&!Gu){var M=i.listeners,a=M===void 0?{}:M;r=function(){delete a[o][t],i.removeEventListener(o,r,s);for(var l=arguments.length,N=new Array(l),c=0;cMath.abs(t)&&(t=L)})}),t}function xi(i,e){var t=i.pageX,s=i.pageY,r={endX:t,endY:s};return e?r:ku({startX:t,startY:s},r)}function lje(i){var e=0,t=0,s=0;return De(i,function(r){var o=r.startX,M=r.startY;e+=o,t+=M,s+=1}),e/=s,t/=s,{pageX:e,pageY:t}}function Rt(i){var e=i.aspectRatio,t=i.height,s=i.width,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",o=ka(s),M=ka(t);if(o&&M){var a=t*e;r==="contain"&&a>s||r==="cover"&&a90?{width:u,height:a}:{width:a,height:u}}function Lje(i,e,t,s){var r=e.aspectRatio,o=e.naturalWidth,M=e.naturalHeight,a=e.rotate,u=a===void 0?0:a,l=e.scaleX,N=l===void 0?1:l,c=e.scaleY,L=c===void 0?1:c,j=t.aspectRatio,g=t.naturalWidth,y=t.naturalHeight,d=s.fillColor,I=d===void 0?"transparent":d,m=s.imageSmoothingEnabled,w=m===void 0?!0:m,O=s.imageSmoothingQuality,A=O===void 0?"low":O,h=s.maxWidth,p=h===void 0?1/0:h,S=s.maxHeight,f=S===void 0?1/0:S,$=s.minWidth,x=$===void 0?0:$,Z=s.minHeight,k=Z===void 0?0:Z,Y=document.createElement("canvas"),J=Y.getContext("2d"),Le=Rt({aspectRatio:j,width:p,height:f}),Je=Rt({aspectRatio:j,width:x,height:k},"cover"),qe=Math.min(Le.width,Math.max(Je.width,g)),us=Math.min(Le.height,Math.max(Je.height,y)),yr=Rt({aspectRatio:r,width:p,height:f}),Us=Rt({aspectRatio:r,width:x,height:k},"cover"),bs=Math.min(yr.width,Math.max(Us.width,o)),$s=Math.min(yr.height,Math.max(Us.height,M)),Ti=[-bs/2,-$s/2,bs,$s];return Y.width=ps(qe),Y.height=ps(us),J.fillStyle=I,J.fillRect(0,0,qe,us),J.save(),J.translate(qe/2,us/2),J.rotate(u*Math.PI/180),J.scale(N,L),J.imageSmoothingEnabled=w,J.imageSmoothingQuality=A,J.drawImage.apply(J,[i].concat(Qu(Ti.map(function(yi){return Math.floor(ps(yi))})))),J.restore(),Y}var Hu=String.fromCharCode;function jje(i,e,t){var s="";t+=e;for(var r=e;r0;)t.push(Hu.apply(null,Ju(r.subarray(0,s)))),r=r.subarray(s);return"data:".concat(e,";base64,").concat(btoa(t.join("")))}function Dje(i){var e=new DataView(i),t;try{var s,r,o;if(e.getUint8(0)===255&&e.getUint8(1)===216)for(var M=e.byteLength,a=2;a+1=8&&(o=l+c)}}}if(o){var L=e.getUint16(o,s),j,g;for(g=0;g=0?o:Wu),height:Math.max(s.offsetHeight,M>=0?M:Ru)};this.containerData=a,Wt(r,{width:a.width,height:a.height}),he(e,We),lt(r,We)},initCanvas:function(){var e=this.containerData,t=this.imageData,s=this.options.viewMode,r=Math.abs(t.rotate)%180===90,o=r?t.naturalHeight:t.naturalWidth,M=r?t.naturalWidth:t.naturalHeight,a=o/M,u=e.width,l=e.height;e.height*a>e.width?s===3?u=e.height*a:l=e.width/a:s===3?l=e.width/a:u=e.height*a;var N={aspectRatio:a,naturalWidth:o,naturalHeight:M,width:u,height:l};this.canvasData=N,this.limited=s===1||s===2,this.limitCanvas(!0,!0),N.width=Math.min(Math.max(N.width,N.minWidth),N.maxWidth),N.height=Math.min(Math.max(N.height,N.minHeight),N.maxHeight),N.left=(e.width-N.width)/2,N.top=(e.height-N.height)/2,N.oldLeft=N.left,N.oldTop=N.top,this.initialCanvasData=ue({},N)},limitCanvas:function(e,t){var s=this.options,r=this.containerData,o=this.canvasData,M=this.cropBoxData,a=s.viewMode,u=o.aspectRatio,l=this.cropped&&M;if(e){var N=Number(s.minCanvasWidth)||0,c=Number(s.minCanvasHeight)||0;a>1?(N=Math.max(N,r.width),c=Math.max(c,r.height),a===3&&(c*u>N?N=c*u:c=N/u)):a>0&&(N?N=Math.max(N,l?M.width:0):c?c=Math.max(c,l?M.height:0):l&&(N=M.width,c=M.height,c*u>N?N=c*u:c=N/u));var L=Rt({aspectRatio:u,width:N,height:c});N=L.width,c=L.height,o.minWidth=N,o.minHeight=c,o.maxWidth=1/0,o.maxHeight=1/0}if(t)if(a>(l?0:1)){var j=r.width-o.width,g=r.height-o.height;o.minLeft=Math.min(0,j),o.minTop=Math.min(0,g),o.maxLeft=Math.max(0,j),o.maxTop=Math.max(0,g),l&&this.limited&&(o.minLeft=Math.min(M.left,M.left+(M.width-o.width)),o.minTop=Math.min(M.top,M.top+(M.height-o.height)),o.maxLeft=M.left,o.maxTop=M.top,a===2&&(o.width>=r.width&&(o.minLeft=Math.min(0,j),o.maxLeft=Math.max(0,j)),o.height>=r.height&&(o.minTop=Math.min(0,g),o.maxTop=Math.max(0,g))))}else o.minLeft=-o.width,o.minTop=-o.height,o.maxLeft=r.width,o.maxTop=r.height},renderCanvas:function(e,t){var s=this.canvasData,r=this.imageData;if(t){var o=Nje({width:r.naturalWidth*Math.abs(r.scaleX||1),height:r.naturalHeight*Math.abs(r.scaleY||1),degree:r.rotate||0}),M=o.width,a=o.height,u=s.width*(M/s.naturalWidth),l=s.height*(a/s.naturalHeight);s.left-=(u-s.width)/2,s.top-=(l-s.height)/2,s.width=u,s.height=l,s.aspectRatio=M/a,s.naturalWidth=M,s.naturalHeight=a,this.limitCanvas(!0,!1)}(s.width>s.maxWidth||s.widths.maxHeight||s.heightt.width?o.height=o.width/s:o.width=o.height*s),this.cropBoxData=o,this.limitCropBox(!0,!0),o.width=Math.min(Math.max(o.width,o.minWidth),o.maxWidth),o.height=Math.min(Math.max(o.height,o.minHeight),o.maxHeight),o.width=Math.max(o.minWidth,o.width*r),o.height=Math.max(o.minHeight,o.height*r),o.left=t.left+(t.width-o.width)/2,o.top=t.top+(t.height-o.height)/2,o.oldLeft=o.left,o.oldTop=o.top,this.initialCropBoxData=ue({},o)},limitCropBox:function(e,t){var s=this.options,r=this.containerData,o=this.canvasData,M=this.cropBoxData,a=this.limited,u=s.aspectRatio;if(e){var l=Number(s.minCropBoxWidth)||0,N=Number(s.minCropBoxHeight)||0,c=a?Math.min(r.width,o.width,o.width+o.left,r.width-o.left):r.width,L=a?Math.min(r.height,o.height,o.height+o.top,r.height-o.top):r.height;l=Math.min(l,r.width),N=Math.min(N,r.height),u&&(l&&N?N*u>l?N=l/u:l=N*u:l?N=l/u:N&&(l=N*u),L*u>c?L=c/u:c=L*u),M.minWidth=Math.min(l,c),M.minHeight=Math.min(N,L),M.maxWidth=c,M.maxHeight=L}t&&(a?(M.minLeft=Math.max(0,o.left),M.minTop=Math.max(0,o.top),M.maxLeft=Math.min(r.width,o.left+o.width)-M.width,M.maxTop=Math.min(r.height,o.top+o.height)-M.height):(M.minLeft=0,M.minTop=0,M.maxLeft=r.width-M.width,M.maxTop=r.height-M.height))},renderCropBox:function(){var e=this.options,t=this.containerData,s=this.cropBoxData;(s.width>s.maxWidth||s.widths.maxHeight||s.height=t.width&&s.height>=t.height?Uu:nM),Wt(this.cropBox,ue({width:s.width,height:s.height},ti({translateX:s.left,translateY:s.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),Os(this.element,Eo,this.getData())}},hje={initPreview:function(){var e=this.element,t=this.crossOrigin,s=this.options.preview,r=t?this.crossOriginUrl:this.url,o=e.alt||"The image to preview",M=document.createElement("img");if(t&&(M.crossOrigin=t),M.src=r,M.alt=o,this.viewBox.appendChild(M),this.viewBoxImage=M,!!s){var a=s;typeof s=="string"?a=e.ownerDocument.querySelectorAll(s):s.querySelector&&(a=[s]),this.previews=a,De(a,function(u){var l=document.createElement("img");ai(u,Si,{width:u.offsetWidth,height:u.offsetHeight,html:u.innerHTML}),t&&(l.crossOrigin=t),l.src=r,l.alt=o,l.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',u.innerHTML="",u.appendChild(l)})}},resetPreview:function(){De(this.previews,function(e){var t=ko(e,Si);Wt(e,{width:t.width,height:t.height}),e.innerHTML=t.html,aje(e,Si)})},preview:function(){var e=this.imageData,t=this.canvasData,s=this.cropBoxData,r=s.width,o=s.height,M=e.width,a=e.height,u=s.left-t.left-e.left,l=s.top-t.top-e.top;!this.cropped||this.disabled||(Wt(this.viewBoxImage,ue({width:M,height:a},ti(ue({translateX:-u,translateY:-l},e)))),De(this.previews,function(N){var c=ko(N,Si),L=c.width,j=c.height,g=L,y=j,d=1;r&&(d=L/r,y=o*d),o&&y>j&&(d=j/o,g=r*d,y=j),Wt(N,{width:g,height:y}),Wt(N.getElementsByTagName("img")[0],ue({width:M*d,height:a*d},ti(ue({translateX:-u*d,translateY:-l*d},e))))}))}},Ije={bind:function(){var e=this.element,t=this.options,s=this.cropper;Pe(t.cropstart)&&Ze(e,So,t.cropstart),Pe(t.cropmove)&&Ze(e,fo,t.cropmove),Pe(t.cropend)&&Ze(e,_o,t.cropend),Pe(t.crop)&&Ze(e,Eo,t.crop),Pe(t.zoom)&&Ze(e,xo,t.zoom),Ze(s,ma,this.onCropStart=this.cropStart.bind(this)),t.zoomable&&t.zoomOnWheel&&Ze(s,fa,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),t.toggleDragModeOnDblclick&&Ze(s,Aa,this.onDblclick=this.dblclick.bind(this)),Ze(e.ownerDocument,pa,this.onCropMove=this.cropMove.bind(this)),Ze(e.ownerDocument,Oa,this.onCropEnd=this.cropEnd.bind(this)),t.responsive&&Ze(window,_a,this.onResize=this.resize.bind(this))},unbind:function(){var e=this.element,t=this.options,s=this.cropper;Pe(t.cropstart)&&tt(e,So,t.cropstart),Pe(t.cropmove)&&tt(e,fo,t.cropmove),Pe(t.cropend)&&tt(e,_o,t.cropend),Pe(t.crop)&&tt(e,Eo,t.crop),Pe(t.zoom)&&tt(e,xo,t.zoom),tt(s,ma,this.onCropStart),t.zoomable&&t.zoomOnWheel&&tt(s,fa,this.onWheel,{passive:!1,capture:!0}),t.toggleDragModeOnDblclick&&tt(s,Aa,this.onDblclick),tt(e.ownerDocument,pa,this.onCropMove),tt(e.ownerDocument,Oa,this.onCropEnd),t.responsive&&tt(window,_a,this.onResize)}},wje={resize:function(){if(!this.disabled){var e=this.options,t=this.container,s=this.containerData,r=t.offsetWidth/s.width,o=t.offsetHeight/s.height,M=Math.abs(r-1)>Math.abs(o-1)?r:o;if(M!==1){var a,u;e.restore&&(a=this.getCanvasData(),u=this.getCropBoxData()),this.render(),e.restore&&(this.setCanvasData(De(a,function(l,N){a[N]=l*M})),this.setCropBoxData(De(u,function(l,N){u[N]=l*M})))}}},dblclick:function(){this.disabled||this.options.dragMode===Pu||this.setDragMode(Mje(this.dragBox,po)?$u:aM)},wheel:function(e){var t=this,s=Number(this.options.wheelZoomRatio)||.1,r=1;this.disabled||(e.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){t.wheeling=!1},50),e.deltaY?r=e.deltaY>0?1:-1:e.wheelDelta?r=-e.wheelDelta/120:e.detail&&(r=e.detail>0?1:-1),this.zoom(-r*s,e)))},cropStart:function(e){var t=e.buttons,s=e.button;if(!(this.disabled||(e.type==="mousedown"||e.type==="pointerdown"&&e.pointerType==="mouse")&&(K(t)&&t!==1||K(s)&&s!==0||e.ctrlKey))){var r=this.options,o=this.pointers,M;e.changedTouches?De(e.changedTouches,function(a){o[a.identifier]=xi(a)}):o[e.pointerId||0]=xi(e),Object.keys(o).length>1&&r.zoomable&&r.zoomOnTouch?M=bu:M=ko(e.target,ni),ZLe.test(M)&&Os(this.element,So,{originalEvent:e,action:M})!==!1&&(e.preventDefault(),this.action=M,this.cropping=!1,M===vu&&(this.cropping=!0,he(this.dragBox,qi)))}},cropMove:function(e){var t=this.action;if(!(this.disabled||!t)){var s=this.pointers;e.preventDefault(),Os(this.element,fo,{originalEvent:e,action:t})!==!1&&(e.changedTouches?De(e.changedTouches,function(r){ue(s[r.identifier]||{},xi(r,!0))}):ue(s[e.pointerId||0]||{},xi(e,!0)),this.change(e))}},cropEnd:function(e){if(!this.disabled){var t=this.action,s=this.pointers;e.changedTouches?De(e.changedTouches,function(r){delete s[r.identifier]}):delete s[e.pointerId||0],t&&(e.preventDefault(),Object.keys(s).length||(this.action=""),this.cropping&&(this.cropping=!1,Cs(this.dragBox,qi,this.cropped&&this.options.modal)),Os(this.element,_o,{originalEvent:e,action:t}))}}},Cje={change:function(e){var t=this.options,s=this.canvasData,r=this.containerData,o=this.cropBoxData,M=this.pointers,a=this.action,u=t.aspectRatio,l=o.left,N=o.top,c=o.width,L=o.height,j=l+c,g=N+L,y=0,d=0,I=r.width,m=r.height,w=!0,O;!u&&e.shiftKey&&(u=c&&L?c/L:1),this.limited&&(y=o.minLeft,d=o.minTop,I=y+Math.min(r.width,s.width,s.left+s.width),m=d+Math.min(r.height,s.height,s.top+s.height));var A=M[Object.keys(M)[0]],h={x:A.endX-A.startX,y:A.endY-A.startY},p=function(f){switch(f){case Zt:j+h.x>I&&(h.x=I-j);break;case Xt:l+h.xm&&(h.y=m-g);break}};switch(a){case nM:l+=h.x,N+=h.y;break;case Zt:if(h.x>=0&&(j>=I||u&&(N<=d||g>=m))){w=!1;break}p(Zt),c+=h.x,c<0&&(a=Xt,c=-c,l-=c),u&&(L=c/u,N+=(o.height-L)/2);break;case xt:if(h.y<=0&&(N<=d||u&&(l<=y||j>=I))){w=!1;break}p(xt),L-=h.y,N+=h.y,L<0&&(a=ds,L=-L,N-=L),u&&(c=L*u,l+=(o.width-c)/2);break;case Xt:if(h.x<=0&&(l<=y||u&&(N<=d||g>=m))){w=!1;break}p(Xt),c-=h.x,l+=h.x,c<0&&(a=Zt,c=-c,l-=c),u&&(L=c/u,N+=(o.height-L)/2);break;case ds:if(h.y>=0&&(g>=m||u&&(l<=y||j>=I))){w=!1;break}p(ds),L+=h.y,L<0&&(a=xt,L=-L,N-=L),u&&(c=L*u,l+=(o.width-c)/2);break;case Js:if(u){if(h.y<=0&&(N<=d||j>=I)){w=!1;break}p(xt),L-=h.y,N+=h.y,c=L*u}else p(xt),p(Zt),h.x>=0?jd&&(L-=h.y,N+=h.y):(L-=h.y,N+=h.y);c<0&&L<0?(a=Fs,L=-L,c=-c,N-=L,l-=c):c<0?(a=Bs,c=-c,l-=c):L<0&&(a=Gs,L=-L,N-=L);break;case Bs:if(u){if(h.y<=0&&(N<=d||l<=y)){w=!1;break}p(xt),L-=h.y,N+=h.y,c=L*u,l+=o.width-c}else p(xt),p(Xt),h.x<=0?l>y?(c-=h.x,l+=h.x):h.y<=0&&N<=d&&(w=!1):(c-=h.x,l+=h.x),h.y<=0?N>d&&(L-=h.y,N+=h.y):(L-=h.y,N+=h.y);c<0&&L<0?(a=Gs,L=-L,c=-c,N-=L,l-=c):c<0?(a=Js,c=-c,l-=c):L<0&&(a=Fs,L=-L,N-=L);break;case Fs:if(u){if(h.x<=0&&(l<=y||g>=m)){w=!1;break}p(Xt),c-=h.x,l+=h.x,L=c/u}else p(ds),p(Xt),h.x<=0?l>y?(c-=h.x,l+=h.x):h.y>=0&&g>=m&&(w=!1):(c-=h.x,l+=h.x),h.y>=0?g=0&&(j>=I||g>=m)){w=!1;break}p(Zt),c+=h.x,L=c/u}else p(ds),p(Zt),h.x>=0?j=0&&g>=m&&(w=!1):c+=h.x,h.y>=0?g0?a=h.y>0?Gs:Js:h.x<0&&(l-=c,a=h.y>0?Fs:Bs),h.y<0&&(N-=L),this.cropped||(lt(this.cropBox,We),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}w&&(o.width=c,o.height=L,o.left=l,o.top=N,this.action=a,this.renderCropBox()),De(M,function(S){S.startX=S.endX,S.startY=S.endY})}},Aje={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&he(this.dragBox,qi),lt(this.cropBox,We),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=ue({},this.initialImageData),this.canvasData=ue({},this.initialCanvasData),this.cropBoxData=ue({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(ue(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),lt(this.dragBox,qi),he(this.cropBox,We)),this},replace:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&e&&(this.isImg&&(this.element.src=e),t?(this.url=e,this.image.src=e,this.ready&&(this.viewBoxImage.src=e,De(this.previews,function(s){s.getElementsByTagName("img")[0].src=e}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(e))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,lt(this.cropper,wa)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,he(this.cropper,wa)),this},destroy:function(){var e=this.element;return e[ce]?(e[ce]=void 0,this.isImg&&this.replaced&&(e.src=this.originalUrl),this.uncreate(),this):this},move:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,s=this.canvasData,r=s.left,o=s.top;return this.moveTo($r(e)?e:r+Number(e),$r(t)?t:o+Number(t))},moveTo:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,s=this.canvasData,r=!1;return e=Number(e),t=Number(t),this.ready&&!this.disabled&&this.options.movable&&(K(e)&&(s.left=e,r=!0),K(t)&&(s.top=t,r=!0),r&&this.renderCanvas(!0)),this},zoom:function(e,t){var s=this.canvasData;return e=Number(e),e<0?e=1/(1-e):e=1+e,this.zoomTo(s.width*e/s.naturalWidth,null,t)},zoomTo:function(e,t,s){var r=this.options,o=this.canvasData,M=o.width,a=o.height,u=o.naturalWidth,l=o.naturalHeight;if(e=Number(e),e>=0&&this.ready&&!this.disabled&&r.zoomable){var N=u*e,c=l*e;if(Os(this.element,xo,{ratio:e,oldRatio:M/u,originalEvent:s})===!1)return this;if(s){var L=this.pointers,j=Fu(this.cropper),g=L&&Object.keys(L).length?lje(L):{pageX:s.pageX,pageY:s.pageY};o.left-=(N-M)*((g.pageX-j.left-o.left)/M),o.top-=(c-a)*((g.pageY-j.top-o.top)/a)}else ws(t)&&K(t.x)&&K(t.y)?(o.left-=(N-M)*((t.x-o.left)/M),o.top-=(c-a)*((t.y-o.top)/a)):(o.left-=(N-M)/2,o.top-=(c-a)/2);o.width=N,o.height=c,this.renderCanvas(!0)}return this},rotate:function(e){return this.rotateTo((this.imageData.rotate||0)+Number(e))},rotateTo:function(e){return e=Number(e),K(e)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=e%360,this.renderCanvas(!0,!0)),this},scaleX:function(e){var t=this.imageData.scaleY;return this.scale(e,K(t)?t:1)},scaleY:function(e){var t=this.imageData.scaleX;return this.scale(K(t)?t:1,e)},scale:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,s=this.imageData,r=!1;return e=Number(e),t=Number(t),this.ready&&!this.disabled&&this.options.scalable&&(K(e)&&(s.scaleX=e,r=!0),K(t)&&(s.scaleY=t,r=!0),r&&this.renderCanvas(!0,!0)),this},getData:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.options,s=this.imageData,r=this.canvasData,o=this.cropBoxData,M;if(this.ready&&this.cropped){M={x:o.left-r.left,y:o.top-r.top,width:o.width,height:o.height};var a=s.width/s.naturalWidth;if(De(M,function(N,c){M[c]=N/a}),e){var u=Math.round(M.y+M.height),l=Math.round(M.x+M.width);M.x=Math.round(M.x),M.y=Math.round(M.y),M.width=l-M.x,M.height=u-M.y}}else M={x:0,y:0,width:0,height:0};return t.rotatable&&(M.rotate=s.rotate||0),t.scalable&&(M.scaleX=s.scaleX||1,M.scaleY=s.scaleY||1),M},setData:function(e){var t=this.options,s=this.imageData,r=this.canvasData,o={};if(this.ready&&!this.disabled&&ws(e)){var M=!1;t.rotatable&&K(e.rotate)&&e.rotate!==s.rotate&&(s.rotate=e.rotate,M=!0),t.scalable&&(K(e.scaleX)&&e.scaleX!==s.scaleX&&(s.scaleX=e.scaleX,M=!0),K(e.scaleY)&&e.scaleY!==s.scaleY&&(s.scaleY=e.scaleY,M=!0)),M&&this.renderCanvas(!0,!0);var a=s.width/s.naturalWidth;K(e.x)&&(o.left=e.x*a+r.left),K(e.y)&&(o.top=e.y*a+r.top),K(e.width)&&(o.width=e.width*a),K(e.height)&&(o.height=e.height*a),this.setCropBoxData(o)}return this},getContainerData:function(){return this.ready?ue({},this.containerData):{}},getImageData:function(){return this.sized?ue({},this.imageData):{}},getCanvasData:function(){var e=this.canvasData,t={};return this.ready&&De(["left","top","width","height","naturalWidth","naturalHeight"],function(s){t[s]=e[s]}),t},setCanvasData:function(e){var t=this.canvasData,s=t.aspectRatio;return this.ready&&!this.disabled&&ws(e)&&(K(e.left)&&(t.left=e.left),K(e.top)&&(t.top=e.top),K(e.width)?(t.width=e.width,t.height=e.width/s):K(e.height)&&(t.height=e.height,t.width=e.height*s),this.renderCanvas(!0)),this},getCropBoxData:function(){var e=this.cropBoxData,t;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(e){var t=this.cropBoxData,s=this.options.aspectRatio,r,o;return this.ready&&this.cropped&&!this.disabled&&ws(e)&&(K(e.left)&&(t.left=e.left),K(e.top)&&(t.top=e.top),K(e.width)&&e.width!==t.width&&(r=!0,t.width=e.width),K(e.height)&&e.height!==t.height&&(o=!0,t.height=e.height),s&&(r?t.height=t.width/s:o&&(t.width=t.height*s)),this.renderCropBox()),this},getCroppedCanvas:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var t=this.canvasData,s=Lje(this.image,this.imageData,t,e);if(!this.cropped)return s;var r=this.getData(e.rounded),o=r.x,M=r.y,a=r.width,u=r.height,l=s.width/Math.floor(t.naturalWidth);l!==1&&(o*=l,M*=l,a*=l,u*=l);var N=a/u,c=Rt({aspectRatio:N,width:e.maxWidth||1/0,height:e.maxHeight||1/0}),L=Rt({aspectRatio:N,width:e.minWidth||0,height:e.minHeight||0},"cover"),j=Rt({aspectRatio:N,width:e.width||(l!==1?s.width:a),height:e.height||(l!==1?s.height:u)}),g=j.width,y=j.height;g=Math.min(c.width,Math.max(L.width,g)),y=Math.min(c.height,Math.max(L.height,y));var d=document.createElement("canvas"),I=d.getContext("2d");d.width=ps(g),d.height=ps(y),I.fillStyle=e.fillColor||"transparent",I.fillRect(0,0,g,y);var m=e.imageSmoothingEnabled,w=m===void 0?!0:m,O=e.imageSmoothingQuality;I.imageSmoothingEnabled=w,O&&(I.imageSmoothingQuality=O);var A=s.width,h=s.height,p=o,S=M,f,$,x,Z,k,Y;p<=-a||p>A?(p=0,f=0,x=0,k=0):p<=0?(x=-p,p=0,f=Math.min(A,a+p),k=f):p<=A&&(x=0,f=Math.min(a,A-p),k=f),f<=0||S<=-u||S>h?(S=0,$=0,Z=0,Y=0):S<=0?(Z=-S,S=0,$=Math.min(h,u+S),Y=$):S<=h&&(Z=0,$=Math.min(u,h-S),Y=$);var J=[p,S,f,$];if(k>0&&Y>0){var Le=g/a;J.push(x*Le,Z*Le,k*Le,Y*Le)}return I.drawImage.apply(I,[s].concat(Qu(J.map(function(Je){return Math.floor(ps(Je))})))),d},setAspectRatio:function(e){var t=this.options;return!this.disabled&&!$r(e)&&(t.aspectRatio=Math.max(0,e)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(e){var t=this.options,s=this.dragBox,r=this.face;if(this.ready&&!this.disabled){var o=e===aM,M=t.movable&&e===$u;e=o||M?e:Pu,t.dragMode=e,ai(s,ni,e),Cs(s,po,o),Cs(s,Oo,M),t.cropBoxMovable||(ai(r,ni,e),Cs(r,po,o),Cs(r,Oo,M))}return this}},mje=Nt.Cropper,Vu=(function(){function i(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(bLe(this,i),!e||!qLe.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=ue({},xa,ws(t)&&t),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return $Le(i,[{key:"init",value:function(){var t=this.element,s=t.tagName.toLowerCase(),r;if(!t[ce]){if(t[ce]=this,s==="img"){if(this.isImg=!0,r=t.getAttribute("src")||"",this.originalUrl=r,!r)return;r=t.src}else s==="canvas"&&window.HTMLCanvasElement&&(r=t.toDataURL());this.load(r)}}},{key:"load",value:function(t){var s=this;if(t){this.url=t,this.imageData={};var r=this.element,o=this.options;if(!o.rotatable&&!o.scalable&&(o.checkOrientation=!1),!o.checkOrientation||!window.ArrayBuffer){this.clone();return}if(XLe.test(t)){KLe.test(t)?this.read(Tje(t)):this.clone();return}var M=new XMLHttpRequest,a=this.clone.bind(this);this.reloading=!0,this.xhr=M,M.onabort=a,M.onerror=a,M.ontimeout=a,M.onprogress=function(){M.getResponseHeader("content-type")!==Sa&&M.abort()},M.onload=function(){s.read(M.response)},M.onloadend=function(){s.reloading=!1,s.xhr=null},o.checkCrossOrigin&&Ya(t)&&r.crossOrigin&&(t=Qa(t)),M.open("GET",t,!0),M.responseType="arraybuffer",M.withCredentials=r.crossOrigin==="use-credentials",M.send()}}},{key:"read",value:function(t){var s=this.options,r=this.imageData,o=Dje(t),M=0,a=1,u=1;if(o>1){this.url=yje(t,Sa);var l=dje(o);M=l.rotate,a=l.scaleX,u=l.scaleY}s.rotatable&&(r.rotate=M),s.scalable&&(r.scaleX=a,r.scaleY=u),this.clone()}},{key:"clone",value:function(){var t=this.element,s=this.url,r=t.crossOrigin,o=s;this.options.checkCrossOrigin&&Ya(s)&&(r||(r="anonymous"),o=Qa(s)),this.crossOrigin=r,this.crossOriginUrl=o;var M=document.createElement("img");r&&(M.crossOrigin=r),M.src=o||s,M.alt=t.alt||"The image to crop",this.image=M,M.onload=this.start.bind(this),M.onerror=this.stop.bind(this),he(M,Ca),t.parentNode.insertBefore(M,t.nextSibling)}},{key:"start",value:function(){var t=this,s=this.image;s.onload=null,s.onerror=null,this.sizing=!0;var r=Nt.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(Nt.navigator.userAgent),o=function(l,N){ue(t.imageData,{naturalWidth:l,naturalHeight:N,aspectRatio:l/N}),t.initialImageData=ue({},t.imageData),t.sizing=!1,t.sized=!0,t.build()};if(s.naturalWidth&&!r){o(s.naturalWidth,s.naturalHeight);return}var M=document.createElement("img"),a=document.body||document.documentElement;this.sizingImage=M,M.onload=function(){o(M.width,M.height),r||a.removeChild(M)},M.src=s.src,r||(M.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",a.appendChild(M))}},{key:"stop",value:function(){var t=this.image;t.onload=null,t.onerror=null,t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var t=this.element,s=this.options,r=this.image,o=t.parentNode,M=document.createElement("div");M.innerHTML=eje;var a=M.querySelector(".".concat(ce,"-container")),u=a.querySelector(".".concat(ce,"-canvas")),l=a.querySelector(".".concat(ce,"-drag-box")),N=a.querySelector(".".concat(ce,"-crop-box")),c=N.querySelector(".".concat(ce,"-face"));this.container=o,this.cropper=a,this.canvas=u,this.dragBox=l,this.cropBox=N,this.viewBox=a.querySelector(".".concat(ce,"-view-box")),this.face=c,u.appendChild(r),he(t,We),o.insertBefore(a,t.nextSibling),lt(r,Ca),this.initPreview(),this.bind(),s.initialAspectRatio=Math.max(0,s.initialAspectRatio)||NaN,s.aspectRatio=Math.max(0,s.aspectRatio)||NaN,s.viewMode=Math.max(0,Math.min(3,Math.round(s.viewMode)))||0,he(N,We),s.guides||he(N.getElementsByClassName("".concat(ce,"-dashed")),We),s.center||he(N.getElementsByClassName("".concat(ce,"-center")),We),s.background&&he(a,"".concat(ce,"-bg")),s.highlight||he(c,GLe),s.cropBoxMovable&&(he(c,Oo),ai(c,ni,nM)),s.cropBoxResizable||(he(N.getElementsByClassName("".concat(ce,"-line")),We),he(N.getElementsByClassName("".concat(ce,"-point")),We)),this.render(),this.ready=!0,this.setDragMode(s.dragMode),s.autoCrop&&this.crop(),this.setData(s.data),Pe(s.ready)&&Ze(t,Ea,s.ready,{once:!0}),Os(t,Ea)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var t=this.cropper.parentNode;t&&t.removeChild(this.cropper),lt(this.element,We)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=mje,i}},{key:"setDefaults",value:function(t){ue(xa,ws(t)&&t)}}])})();ue(Vu.prototype,zje,hje,Ije,wje,Cje,Aje);var ts=function(){return ts=Object.assign||function(i){for(var e,t=1,s=arguments.length;t0&&S.zoomTo(Je)})(p.currentTarget.cropper,w),d&&d(p)}}));I&&I(h)}return function(){var p,S;(S=(p=O.current)===null||p===void 0?void 0:p.cropper)===null||S===void 0||S.destroy()}}),[O]);var A=(function(h){return pje.reduce((function(p,S){var f=p,$=S;return f[$],Wr(f,[typeof $=="symbol"?$:$+""])}),h)})(ts(ts({},m),{crossOrigin:u,src:o,alt:y}));return n.createElement("div",{style:M,className:a},n.createElement("img",ts({},A,{style:Oje,ref:O})))}));const _je=` +/*! + * Cropper.js v1.5.12 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2021-06-12T08:00:11.623Z + */ + +.cropper-container { + direction: ltr; + font-size: 0; + line-height: 0; + position: relative; + -ms-touch-action: none; + touch-action: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.cropper-container img { + display: block; + height: 100%; + image-orientation: 0deg; + max-height: none !important; + max-width: none !important; + min-height: 0 !important; + min-width: 0 !important; + width: 100%; +} + +.cropper-wrap-box, +.cropper-canvas, +.cropper-drag-box, +.cropper-crop-box, +.cropper-modal { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; +} + +.cropper-wrap-box, +.cropper-canvas { + overflow: hidden; +} + +.cropper-drag-box { + background-color: #fff; + opacity: 0; +} + +.cropper-modal { + background-color: #000; + opacity: 0.5; +} + +.cropper-view-box { + display: block; + height: 100%; + outline: 1px solid #39f; + outline-color: rgba(51, 153, 255, 0.75); + overflow: hidden; + width: 100%; +} + +.cropper-dashed { + border: 0 dashed #eee; + display: block; + opacity: 0.5; + position: absolute; +} + +.cropper-dashed.dashed-h { + border-bottom-width: 1px; + border-top-width: 1px; + height: calc(100% / 3); + left: 0; + top: calc(100% / 3); + width: 100%; +} + +.cropper-dashed.dashed-v { + border-left-width: 1px; + border-right-width: 1px; + height: 100%; + left: calc(100% / 3); + top: 0; + width: calc(100% / 3); +} + +.cropper-center { + display: block; + height: 0; + left: 50%; + opacity: 0.75; + position: absolute; + top: 50%; + width: 0; +} + +.cropper-center::before, +.cropper-center::after { + background-color: #eee; + content: ' '; + display: block; + position: absolute; +} + +.cropper-center::before { + height: 1px; + left: -3px; + top: 0; + width: 7px; +} + +.cropper-center::after { + height: 7px; + left: 0; + top: -3px; + width: 1px; +} + +.cropper-face, +.cropper-line, +.cropper-point { + display: block; + height: 100%; + opacity: 0.1; + position: absolute; + width: 100%; +} + +.cropper-face { + background-color: #fff; + left: 0; + top: 0; +} + +.cropper-line { + background-color: #39f; +} + +.cropper-line.line-e { + cursor: ew-resize; + right: -3px; + top: 0; + width: 5px; +} + +.cropper-line.line-n { + cursor: ns-resize; + height: 5px; + left: 0; + top: -3px; +} + +.cropper-line.line-w { + cursor: ew-resize; + left: -3px; + top: 0; + width: 5px; +} + +.cropper-line.line-s { + bottom: -3px; + cursor: ns-resize; + height: 5px; + left: 0; +} + +.cropper-point { + background-color: #39f; + height: 5px; + opacity: 0.75; + width: 5px; +} + +.cropper-point.point-e { + cursor: ew-resize; + margin-top: -3px; + right: -3px; + top: 50%; +} + +.cropper-point.point-n { + cursor: ns-resize; + left: 50%; + margin-left: -3px; + top: -3px; +} + +.cropper-point.point-w { + cursor: ew-resize; + left: -3px; + margin-top: -3px; + top: 50%; +} + +.cropper-point.point-s { + bottom: -3px; + cursor: s-resize; + left: 50%; + margin-left: -3px; +} + +.cropper-point.point-ne { + cursor: nesw-resize; + right: -3px; + top: -3px; +} + +.cropper-point.point-nw { + cursor: nwse-resize; + left: -3px; + top: -3px; +} + +.cropper-point.point-sw { + bottom: -3px; + cursor: nesw-resize; + left: -3px; +} + +.cropper-point.point-se { + bottom: -3px; + cursor: nwse-resize; + height: 20px; + opacity: 1; + right: -3px; + width: 20px; +} + +@media (min-width: 768px) { + .cropper-point.point-se { + height: 15px; + width: 15px; + } +} + +@media (min-width: 992px) { + .cropper-point.point-se { + height: 10px; + width: 10px; + } +} + +@media (min-width: 1200px) { + .cropper-point.point-se { + height: 5px; + opacity: 0.75; + width: 5px; + } +} + +.cropper-point.point-se::before { + background-color: #39f; + bottom: -50%; + content: ' '; + display: block; + height: 200%; + opacity: 0; + position: absolute; + right: -50%; + width: 200%; +} + +.cropper-invisible { + opacity: 0; +} + +.cropper-bg { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC'); +} + +.cropper-hide { + display: block; + height: 0; + position: absolute; + width: 0; +} + +.cropper-hidden { + display: none !important; +} + +.cropper-move { + cursor: move; +} + +.cropper-crop { + cursor: crosshair; +} + +.cropper-disabled .cropper-drag-box, +.cropper-disabled .cropper-face, +.cropper-disabled .cropper-line, +.cropper-disabled .cropper-point { + cursor: not-allowed; +} +`,$e={dropZone:{width:"100%",height:100,position:"relative"},dropZoneEmpty:{},image:{objectFit:"contain",margin:"auto",display:"flex",width:"100%",height:"100%"},uploadDiv:{position:"relative",width:"100%",height:300,opacity:.9,marginTop:30,cursor:"pointer",outline:"none"},uploadDivDragging:{opacity:1,background:"rgba(128,255,128,0.1)"},uploadCenterDiv:{margin:5,border:"3px dashed grey",borderRadius:5,width:"calc(100% - 10px)",height:"calc(100% - 10px)",position:"relative",display:"flex"},uploadCenterIcon:{paddingTop:10,width:48,height:48},uploadCenterText:{fontSize:16},uploadCenterTextAndIcon:{textAlign:"center",position:"absolute",top:0,bottom:0,left:0,right:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},disabledOpacity:{opacity:.3,cursor:"default"},buttonRemoveWrapper:{position:"absolute",zIndex:222,right:0},buttonCropWrapper:{position:"absolute",zIndex:222,right:0,top:50},error:{border:"2px solid red",boxSizing:"border-box"}};class hge extends ze{cropperRef;constructor(e){if(super(e),this.state={uploadFile:!1,anchorEl:null,cropHandler:!1},this.cropperRef=ba(),!window.document.getElementById("cropper-style-json-component")){const t=window.document.createElement("style");t.setAttribute("id","cropper-style-json-component"),t.innerHTML=_je,window.document.head.appendChild(t)}}onDrop(e){const t=this.props.onChange,s=this.props.maxSize||10*1024,r=e[0],o=new FileReader;o.onabort=()=>console.log("file reading was aborted"),o.onerror=()=>console.log("file reading has failed"),o.onload=()=>{var u,l;if(!r||!r.name)return;const M=(u=r.name)==null?void 0:u.split(".");let a=M!=null&&M.length?`image/${(l=M.pop())==null?void 0:l.toLowerCase()}`:"image/jpeg";if(a==="image/jpg"?a="image/jpeg":a.includes("svg")&&(a="image/svg+xml"),r.size>s)window.alert(D.t("ra_File is too big. Max %sk allowed. Try use SVG.",Math.round(s/1024)));else{const N=`data:${a};base64,${btoa(new Uint8Array(o.result).reduce((c,L)=>c+String.fromCharCode(L),""))}`;t?t(N):console.log(N)}},o.readAsArrayBuffer(r)}render(){const{disabled:e,icon:t,removeIconFunc:s,error:r,crop:o,onChange:M}=this.props,a=this.props.maxSize||10*1024;let u=this.props.accept||{"image/*":[]};const{uploadFile:l,anchorEl:N,cropHandler:c}=this.state;if(typeof u=="string")u={[u]:[]};else if(Array.isArray(u)){const L={};u.forEach(j=>{L[j]=[]}),u=L}return n.createElement(Va,{disabled:!!e||c,key:"dropzone",multiple:!1,accept:u,maxSize:a,onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:(L,j)=>{var g,y,d;this.setState({uploadFile:!1}),L.length?this.onDrop(L):window.alert(((d=(y=(g=j==null?void 0:j[0])==null?void 0:g.errors)==null?void 0:y[0])==null?void 0:d.message)||D.t("ra_Cannot upload"))}},({getRootProps:L,getInputProps:j})=>n.createElement("div",{style:{...$e.uploadDiv,...l==="dragging"?$e.uploadDivDragging:void 0,...$e.dropZone,...e?$e.disabledOpacity:void 0,...t?void 0:$e.dropZoneEmpty},...L()},n.createElement("input",{...j()}),n.createElement("div",{style:{...$e.uploadCenterDiv,...r?$e.error:void 0}},t?s&&!c&&n.createElement("div",{style:$e.buttonRemoveWrapper},n.createElement(ae,{title:D.t("ra_Clear"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},n.createElement(P,{size:"large",onClick:g=>{s&&s(),g.stopPropagation()}},n.createElement(ge,null)))):n.createElement("div",{style:$e.uploadCenterTextAndIcon},n.createElement(nN,{style:$e.uploadCenterIcon}),n.createElement("div",{style:$e.uploadCenterText},l==="dragging"?D.t("ra_Drop file here"):D.t("ra_Place your files here or click here to open the browse dialog"))),t&&o&&n.createElement("div",{style:$e.buttonCropWrapper},n.createElement(ae,{title:D.t("ra_Crop"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},n.createElement(P,{size:"large",onClick:g=>{c?this.setState({anchorEl:g.currentTarget}):this.setState({cropHandler:!0}),g.stopPropagation()}},n.createElement(aN,{color:c?"primary":"inherit"}))),n.createElement(ss,{anchorEl:N,keepMounted:!0,open:!!N,onClose:()=>this.setState({anchorEl:null})},n.createElement(te,{onClick:()=>this.setState({anchorEl:null,cropHandler:!1},()=>{var y,d;const g=(d=(y=this.cropperRef)==null?void 0:y.current)==null?void 0:d.cropper;g&&(M?M(g.getCroppedCanvas().toDataURL()):console.log(g.getCroppedCanvas().toDataURL()))})},D.t("ra_Save")),n.createElement(te,{onClick:()=>this.setState({anchorEl:null,cropHandler:!1})},D.t("ra_Close")))),t&&!c?n.createElement(xe,{src:t,style:$e.image,alt:"icon"}):null,t&&o&&c?n.createElement(Eje,{ref:this.cropperRef,style:$e.image,src:t,initialAspectRatio:1,viewMode:1,guides:!1,minCropBoxHeight:10,minCropBoxWidth:10,background:!1,checkOrientation:!1}):null)))}}const kt={mainDiv:{width:"100%",height:"100%",overflow:"auto"},formControl:{margin:0,minWidth:120},formControlMarginRight:{marginRight:5},formControlPaddingTop:{paddingTop:6.2}},fje={once:"once"},fe={seconds:"seconds",minutes:"minutes"},va=["ra_Sunday","ra_Monday","ra_Tuesday","ra_Wednesday","ra_Thursday","ra_Friday","ra_Saturday","ra_Sunday"];function ct(i){return i<10?`0${i}`:`${i}`}const Sje={mode:"interval",interval:{period:1,unit:fe.minutes}};function Pi(i){if(i==="*")return[0,1,2,3,4,5,6];const e=i.split(","),t=[];return e.forEach(s=>{const r=s.split("-");if(r.length===2){const o=parseInt(r[0],10),M=parseInt(r[1],10);for(let a=o;a<=M;a++)t.includes(a===7?0:a)||t.push(a===7?0:a)}else{s==="7"&&(s="0");const o=parseInt(s,10);t.includes(o)||t.push(o)}}),t.sort(),t}function Zu(i,e){i=i.replace(/['"]/g,"").trim();const t=i.split(" ");let s,r=null;return t.length===6?s={seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",date:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:s={seconds:null,minutes:t[0]||"*",hours:t[1]||"*",date:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},s.seconds===null&&s.minutes==="*"&&s.hours==="*"&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)&&(r={mode:"interval",interval:{period:1,unit:fe.minutes}}),s.seconds==="*"&&s.minutes==="*"&&s.hours==="*"&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"interval",interval:{period:1,unit:fe.seconds}}:s.seconds===null&&s.minutes.includes("/")&&s.hours==="*"&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"interval",interval:{period:parseInt(s.minutes.split("/")[1],10),unit:fe.minutes}}:s.seconds!==null&&s.seconds.includes("/")&&s.minutes==="*"&&s.hours==="*"&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"interval",interval:{period:parseInt(s.seconds.split("/")[1],10),unit:fe.seconds}}:s.seconds!==null&&s.seconds.includes("/")&&s.minutes==="*"&&s.hours.includes("-")&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"intervalBetween",intervalBetween:{period:parseInt(s.seconds.split("/")[1],10),unit:fe.seconds,timeFrom:parseInt(s.hours.split("-")[0],10),timeTo:parseInt(s.hours.split("-")[1],10),weekdays:Pi(s.dow)}}:s.seconds===null&&s.minutes.includes("/")&&s.hours.includes("-")&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"intervalBetween",intervalBetween:{period:parseInt(s.minutes.split("/")[1],10),unit:fe.minutes,timeFrom:parseInt(s.hours.split("-")[0],10),timeTo:parseInt(s.hours.split("-")[1],10),weekdays:Pi(s.dow)}}:s.seconds===null&&parseInt(s.minutes,10).toString()===s.minutes&&parseInt(s.hours,10).toString()===s.hours&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"specific",specific:{time:`${ct(parseInt(s.hours,10))}:${ct(parseInt(s.minutes,10))}`,weekdays:Pi(s.dow)}}:s.seconds===null&&parseInt(s.minutes,10).toString()===s.minutes&&parseInt(s.hours,10).toString()===s.hours&&parseInt(s.date,10).toString()===s.date&&parseInt(s.months,10).toString()===s.months&&(s.dow==="*"||e)&&(r={mode:"once",once:{time:`${ct(parseInt(s.hours,10))}:${ct(parseInt(s.minutes,10))}`,date:`${ct(parseInt(s.date,10))}.${ct(parseInt(s.months,10))}`}}),r}class ci extends n.Component{constructor(e){super(e);let t=typeof e.cronExpression=="string"?e.cronExpression.replace(/^["']/,"").replace(/["']\n?$/,""):"";t[0]==="{"&&(t="");const s=Zu(t||"* * * * *",!0)||Sje;this.state={extended:!1,cron:ci.state2cron(s),mode:"interval",once:{time:"00:00",date:""},interval:{period:1,unit:fe.minutes},intervalBetween:{period:1,unit:fe.minutes,timeFrom:0,timeTo:23,weekdays:[0,1,2,3,4,5,6]},specific:{time:"00:00",weekdays:[0,1,2,3,4,5,6]}},Object.assign(this.state,s),this.state.cron!==e.cronExpression&&setTimeout(()=>e.onChange&&e.onChange(this.state.cron),100)}static periodArray2text(e,t=7){if(t=t||7,e.length===t)return"*";const s=[];let r=null,o=null;if(!e.length)return"_";for(let M=0;M60&&(s.period=60),s.period!==void 0&&s.period<1&&(s.period=1),s.minutes!==void 0&&s.minutes!==null&&s.minutes>60&&(s.minutes=60),s.minutes!==void 0&&s.minutes!==null&&s.minutes<1&&(s.minutes=1),s.hours!==void 0&&s.hours!==null&&s.hours>24&&(s.hours=24),s.hours!==void 0&&s.hours!==null&&s.hours<1&&(s.hours=1),e.extended)t=`${s.minutes!==void 0&&s.minutes!==null&&s.minutes>1?`*/${s.minutes}`:"*"} ${s.hours!==void 0&&s.hours!==null&&s.hours>1?`*/${s.hours}`:"*"} * * *`;else switch(s.unit){case fe.seconds:t=`${s.period>1?`*/${s.period}`:"*"} * * * * *`;break;case fe.minutes:t=`${s.period>1?`*/${s.period}`:"*"} * * * *`;break}}else if(e.mode==="intervalBetween"){const s=e.intervalBetween||{period:1,unit:fe.minutes,timeFrom:0,timeTo:24,weekdays:[0,1,2,3,4,5,6]};let r;switch(s.timeFrom=s.timeFrom||0,s.timeTo=s.timeTo===void 0?24:s.timeTo,s.timeFrom!==0&&s.timeTo===24&&(s.timeTo=23),s.timeFrom===0&&s.timeTo===24?r="*":r=s.timeFrom!==s.timeTo?`${s.timeFrom}-${s.timeTo}`:"*",s.period>60&&(s.period=60),s.period<1&&(s.period=1),s.unit=s.unit||fe.minutes,s.unit){case fe.seconds:t=`${s.period>1?`*/${s.period}`:"*"} * ${r} * * ${this.periodArray2text(s.weekdays)}`;break;case fe.minutes:t=`${s.period>1?`*/${s.period}`:"*"} ${r} * * ${this.periodArray2text(s.weekdays)}`;break}}else if(e.mode==="specific"){const s=e.specific||{time:"00:00",weekdays:[0,1,2,3,4,5,6]},r=(s.time||"00:00").split(":");let o=parseInt(r[1],10)||0;o>59&&(o=59),o<0&&(o=0);let M=parseInt(r[0],10)||0;M>23&&(M=23),M<0&&(M=0),t=`${o} ${M} * * ${this.periodArray2text(s.weekdays||[])}`}else if(e.mode==="once"){const s=e.once||{time:"00:00",date:""};s.date||(s.date=`${new Date().getDate()}.${ct(new Date().getMonth()+1)}`);const r=(s.time||"00:00").split(":"),o=s.date.split(".");let M=parseInt(r[1],10)||0;M>59&&(M=59),M<0&&(M=0);let a=parseInt(r[0],10)||0;a>23&&(a=23),a<0&&(a=0);let u=parseInt(o[0],10)||1;u>31&&(u=31),u<1&&(u=1);let l=parseInt(o[1],10)||1;l>12&&(l=12),l<1&&(l=1),t=`${M} ${a} ${u} ${l} *`}return t}recalcCron(){this.onChange(ci.state2cron(this.state))}getControlsWeekdaysElements(e){const t=e==="intervalBetween"?this.state.intervalBetween:this.state.specific;return n.createElement("div",{key:"weekdays",style:{paddingLeft:8,width:"calc(100% - 8px)",maxWidth:600}},n.createElement("h5",null,D.t("ra_On weekdays")),[1,2,3,4,5,6,0].map(s=>n.createElement(H,{key:va[s],control:n.createElement(ne,{checked:t.weekdays.includes(s),onChange:r=>{const o=JSON.parse(JSON.stringify(this.state[e])),M=o.weekdays.indexOf(s);r.target.checked?M===-1&&o.weekdays.push(s):M!==-1&&o.weekdays.splice(M,1),o.weekdays.sort(),e==="intervalBetween"?this.setState({intervalBetween:o},()=>this.recalcCron()):this.setState({specific:o},()=>this.recalcCron())},value:s.toString()}),label:D.t(va[s])})))}getControlsPeriodElements(e){const t=e==="interval"?this.state.interval:this.state.intervalBetween;return this.state.extended?n.createElement("div",{key:"period",style:{paddingLeft:8,display:"inline-block"}},n.createElement("h5",{style:{marginBottom:5}},D.t("sc_period")),n.createElement(le,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_minutes"),value:t.minutes,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.minutes=parseInt(s.target.value,10),r.minutes<1&&(r.minutes=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:60},inputLabel:{shrink:!0}},type:"number",margin:"normal"}),n.createElement(le,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_hours"),value:t.hours,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.hours=parseInt(s.target.value,10),r.hours<1&&(r.hours=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:24},inputLabel:{shrink:!0}},type:"number",margin:"normal"})):n.createElement("div",{key:"period",style:{paddingLeft:8,display:"inline-block"}},n.createElement("h5",{style:{marginBottom:5}},D.t("sc_period")),n.createElement(le,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_every"),value:t.period,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.period=parseInt(s.target.value,10),r.period<1&&(r.period=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:60},inputLabel:{shrink:!0}},type:"number",margin:"normal"}),n.createElement(Xe,{variant:"standard",style:{verticalAlign:"bottom"},value:t.unit,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.unit=s.target.value,e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())}},n.createElement(te,{value:"seconds"},D.t("sc_seconds")),")",n.createElement(te,{value:"minutes"},D.t("sc_minutes")),")"))}getControlsTime(e){const t=e==="once"?this.state.once:this.state.specific;return n.createElement(wt,{variant:"standard",sx:{...kt.formControl,"&.MuiFormControl-root":kt.formControlMarginRight}},n.createElement(le,{variant:"standard",key:"at",label:D.t("sc_time"),value:t.time,type:"time",sx:s=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:s.palette.mode==="dark"?"invert(80%)":void 0}}),onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.time=s.target.value,e==="once"?this.setState({once:r},()=>this.recalcCron()):this.setState({specific:r},()=>this.recalcCron())},slotProps:{inputLabel:{shrink:!0}},margin:"normal"}))}getControlsDate(){const e=this.state.once;if(!e.date){const t=new Date;e.date=`${t.getDate()}.${ct(t.getMonth()+1)}`}return n.createElement(wt,{variant:"standard",style:kt.formControl},n.createElement(le,{variant:"standard",key:"date",label:D.t("sc_date"),value:e.date,type:"text",slotProps:{htmlInput:{style:kt.formControlPaddingTop},inputLabel:{shrink:!0}},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.once));s.date=t.target.value,this.setState({once:s},()=>this.recalcCron())},margin:"normal"}))}getOnceElements(){return n.createElement("div",{style:{marginLeft:8}},this.getControlsTime("once"),this.getControlsDate())}getIntervalElements(){return this.getControlsPeriodElements("interval")}getIntervalBetweenElements(){const e=this.state.intervalBetween;return[this.getControlsPeriodElements("intervalBetween"),n.createElement("div",{key:"between",style:{paddingLeft:8,display:"inline-block",verticalAlign:"top"}},n.createElement("h5",{style:{marginBottom:5}},D.t("sc_hours")),n.createElement(wt,{variant:"standard",style:kt.formControl},n.createElement(As,{shrink:!0,htmlFor:"age-label-placeholder"},D.t("sc_from")),n.createElement(Xe,{variant:"standard",style:{width:100},value:e.timeFrom,onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.intervalBetween));s.timeFrom=parseInt(t.target.value,10),s.timeTo===24&&(s.timeTo=23),this.setState({intervalBetween:s},()=>this.recalcCron())}},[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23].map(t=>n.createElement(te,{key:`B_${t}`,value:t},`${ct(t)}:00`)))),n.createElement(wt,{variant:"standard",style:kt.formControl},n.createElement(As,{shrink:!0,htmlFor:"age-label-placeholder"},D.t("sc_to")),n.createElement(Xe,{variant:"standard",style:{width:100},value:e.timeTo,onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.intervalBetween));s.timeTo=parseInt(t.target.value,10),this.setState({intervalBetween:s},()=>this.recalcCron())}},[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23].map(t=>n.createElement(te,{key:`A_${t}`,value:t},`${ct(t)}:00`)),!e.timeFrom&&n.createElement(te,{value:24},"00:00")))),this.getControlsWeekdaysElements("intervalBetween")]}getSpecificTimeElements(){return[n.createElement("div",{key:"time",style:{marginLeft:8}},this.getControlsTime("specific")),this.getControlsWeekdaysElements("specific")]}onModeChange(e){e!==this.state.mode&&this.setState({mode:e},()=>this.recalcCron())}onChange(e){e!==this.state.cron&&(this.setState({cron:e}),this.props.onChange&&this.props.onChange(e))}render(){return n.createElement("div",{style:kt.mainDiv},n.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)"}},n.createElement(le,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0,error:this.state.cron.includes("_")})),n.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)",height:60}},this.state.cron.includes("_")?D.t("sc_invalid_cron"):Zc(this.state.cron,this.props.language||"en")),n.createElement("div",null,n.createElement(wt,{variant:"standard",style:{...kt.formControl,marginLeft:8,marginTop:8}},n.createElement(As,null,D.t("ra_Repeat")),n.createElement(Xe,{variant:"standard",value:this.state.mode,onChange:e=>this.onModeChange(e.target.value),inputProps:{name:"mode",id:"mode"}},n.createElement(te,{value:"once"},D.t("sc_once")),n.createElement(te,{value:"interval"},D.t("sc_interval")),n.createElement(te,{value:"intervalBetween"},D.t("sc_intervalBetween")),n.createElement(te,{value:"specific"},D.t("sc_specific"))))),this.state.mode===fje.once&&this.getOnceElements(),this.state.mode==="interval"&&this.getIntervalElements(),this.state.mode==="intervalBetween"&&this.getIntervalBetweenElements(),this.state.mode==="specific"&&this.getSpecificTimeElements())}}function Ige(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 436 436",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),n.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function wge(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 95 95",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:`M93.779,63.676c-0.981-1.082-2.24-1.653-3.639-1.653c-1.145,0-3.953,0.396-5.318,4.062 + c-0.344,0.922-0.443,1.413-0.907,1.363c-0.786-0.078-3.845-3.346-4.845-8.145l-2.482-11.6c1.961-3.177,3.977-5.629,5.988-7.292 + c1.08-0.882,2.314-1.349,3.808-1.43c3.815-0.26,5.203-0.74,6.14-1.399c1.547-1.115,2.397-2.728,2.397-4.542 + c0-1.596-0.604-3.019-1.75-4.115c-1.106-1.059-2.581-1.618-4.26-1.618c-2.468,0-5.239,1.142-8.474,3.49 + c-1.91,1.388-3.935,3.406-6.121,6.111c-0.711-2.653-1.319-3.889-1.771-4.628c-1.396-2.303-3.664-2.303-4.41-2.303l-0.813,0.013 + l-23.045,0.544l1.297-5.506c0.828-3.593,1.915-6.436,3.226-8.45c0.638-0.98,1.614-2.148,2.638-2.148 + c0.387,0,1.152,0.063,2.582,0.36c3.978,0.86,5.465,0.959,6.239,0.959c1.708,0,3.21-0.571,4.347-1.651 + c1.176-1.119,1.797-2.583,1.797-4.233c0-1.29-0.424-3.156-2.445-4.722c-1.396-1.081-3.311-1.629-5.691-1.629 + c-3.568,0-7.349,1.141-11.241,3.39c-3.862,2.232-7.038,5.317-9.438,9.171c-2.105,3.379-3.929,8.124-5.555,14.459H21.877 + l-2.238,8.831h10.186l-7.74,31.116c-1.603,6.443-2.777,8.028-3.098,8.361c-0.875,0.904-2.68,1.094-4.04,1.094 + c-1.683,0-3.477-0.121-5.349-0.361c-1.286-0.157-2.265-0.234-2.991-0.234c-1.878,0-3.423,0.488-4.59,1.448 + C0.716,81.858,0,83.403,0,85.14c0,1.357,0.44,3.309,2.539,4.895c1.434,1.08,3.389,1.628,5.813,1.628 + c6.069,0,11.725-2.411,16.813-7.165c4.947-4.624,8.571-11.413,10.773-20.195l6.119-24.935l20.87,0.354l2.244,9.64l-4.573,6.748 + c-0.824,1.209-2.051,2.701-3.658,4.441c-0.84,0.92-1.398,1.426-1.721,1.689c-1.316-1.608-2.809-2.424-4.432-2.424 + c-1.525,0-2.91,0.625-4.002,1.804c-1.036,1.116-1.583,2.514-1.583,4.038c0,1.83,0.783,3.459,2.264,4.709 + c1.357,1.146,3.034,1.728,4.981,1.728c2.414,0,4.884-0.921,7.344-2.737c2.053-1.519,4.697-4.526,8.074-9.189 + c2.17,6.24,5.248,10.252,6.714,11.927c2.313,2.644,6.049,4.22,9.993,4.22c3.348,0,5.244-1.402,6.916-2.641l0.148-0.109 + c2.926-2.164,3.54-4.545,3.54-6.166C95.174,65.965,94.691,64.679,93.779,63.676z`}))}function Cge(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M510.371,226.513c-1.088-2.603-2.645-4.971-4.629-6.955l-63.979-63.979c-8.341-8.32-21.824-8.32-30.165,0 c-8.341,8.341-8.341,21.845,0,30.165l27.584,27.584H320.013c-11.797,0-21.333,9.557-21.333,21.333s9.536,21.333,21.333,21.333 h119.168l-27.584,27.584c-8.341,8.341-8.341,21.845,0,30.165c4.16,4.181,9.621,6.251,15.083,6.251s10.923-2.069,15.083-6.251 l63.979-63.979c1.984-1.963,3.541-4.331,4.629-6.955C512.525,237.606,512.525,231.718,510.371,226.513z"}),n.createElement("path",{fill:"currentColor",d:`M362.68,298.667c-11.797,0-21.333,9.557-21.333,21.333v106.667h-85.333V85.333c0-9.408-6.187-17.728-15.211-20.437 + l-74.091-22.229h174.635v106.667c0,11.776,9.536,21.333,21.333,21.333s21.333-9.557,21.333-21.333v-128 + C384.013,9.557,374.477,0,362.68,0H21.347c-0.768,0-1.451,0.32-2.197,0.405c-1.003,0.107-1.92,0.277-2.88,0.512 + c-2.24,0.576-4.267,1.451-6.165,2.645c-0.469,0.299-1.045,0.32-1.493,0.661C8.44,4.352,8.376,4.587,8.205,4.715 + C5.88,6.549,3.939,8.789,2.531,11.456c-0.299,0.576-0.363,1.195-0.597,1.792c-0.683,1.621-1.429,3.2-1.685,4.992 + c-0.107,0.64,0.085,1.237,0.064,1.856c-0.021,0.427-0.299,0.811-0.299,1.237V448c0,10.176,7.189,18.923,17.152,20.907 + l213.333,42.667c1.387,0.299,2.795,0.427,4.181,0.427c4.885,0,9.685-1.685,13.525-4.843c4.928-4.053,7.808-10.091,7.808-16.491 + v-21.333H362.68c11.797,0,21.333-9.557,21.333-21.333V320C384.013,308.224,374.477,298.667,362.68,298.667z`}))}function Age(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 339 339",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M 318.371 88.485 C 332.371 114.538 339.207 142.418 338.881 172.125 C 338.874 172.605 338.631 172.845 338.151 172.845 L 335.411 172.845 C 335.077 172.845 334.911 173.012 334.911 173.345 L 334.911 181.215 C 334.911 181.635 335.121 181.845 335.541 181.845 L 337.711 181.845 C 338.157 181.845 338.364 182.068 338.331 182.515 C 331.921 264.525 267.321 330.135 185.931 337.995 C 89.911 347.265 6.491 275.385 0.301 179.465 C 0.274 179.052 0.467 178.845 0.881 178.845 L 2.381 178.845 C 2.741 178.845 2.921 178.665 2.921 178.305 L 2.911 171.465 C 2.904 171.052 2.694 170.845 2.281 170.845 L 0.441 170.845 C 0.147 170.845 0.001 170.698 0.001 170.405 C -0.289 83.535 64.591 10.095 151.421 0.955 C 211.511 -5.375 269.171 20.055 305.341 68.135 C 305.538 68.391 305.938 68.338 306.062 68.039 C 306.065 68.031 306.068 68.023 306.071 68.015 L 311.541 51.395 C 311.63 51.125 311.924 50.977 312.201 51.065 L 316.881 52.625 C 317.274 52.758 317.407 53.022 317.281 53.415 L 310.271 74.305 C 310.157 74.645 310.197 74.968 310.391 75.275 L 314.011 80.905 C 314.204 81.205 314.481 81.378 314.841 81.425 L 336.771 84.365 C 337.124 84.412 337.277 84.612 337.231 84.965 L 336.601 89.775 C 336.547 90.182 336.321 90.358 335.921 90.305 L 318.721 87.975 C 318.267 87.915 318.151 88.085 318.371 88.485 Z M 200.701 172.615 C 170.541 200.245 121.671 181.975 117.251 140.865 C 117.211 140.518 117.017 140.345 116.671 140.345 L 8.941 140.345 C 8.68 140.346 8.46 140.532 8.421 140.785 C -10.469 249.095 80.901 345.385 189.421 331.625 C 265.701 321.955 325.741 260.435 332.311 183.415 C 343.611 50.895 200.811 -38.365 85.961 28.845 C 47.041 51.625 20.601 89.335 9.791 133.265 C 9.611 133.985 9.891 134.345 10.631 134.345 L 116.371 134.345 C 116.664 134.345 116.824 134.202 116.851 133.915 C 118.397 116.288 126.001 103.005 139.661 94.065 C 172.821 72.345 214.571 95.715 216.891 133.845 C 216.911 134.178 217.087 134.345 217.421 134.345 L 330.342 134.345 C 330.842 134.345 331.092 134.595 331.092 135.095 L 331.092 139.595 C 331.092 140.095 330.842 140.345 330.342 140.345 L 217.161 140.345 C 216.827 140.345 216.641 140.512 216.601 140.845 C 215.141 153.652 209.841 164.242 200.701 172.615 Z M 210.861 135.845 C 210.861 111.572 191.183 91.895 166.911 91.895 C 142.638 91.895 122.961 111.572 122.961 135.845 C 122.961 160.118 142.638 179.795 166.911 179.795 C 191.183 179.795 210.861 160.118 210.861 135.845 Z",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"}),n.createElement("path",{fill:"currentColor",d:"M 222.771 42.215 C 224.237 43.708 223.741 45.092 221.281 46.365 C 220.5 46.768 219.574 46.779 218.781 46.395 C 183.761 29.182 149.014 29.638 114.541 47.765 C 113.252 48.444 111.662 47.8 111.211 46.415 C 110.891 45.435 110.867 44.465 111.141 43.505 C 111.234 43.158 111.437 42.898 111.751 42.725 C 145.631 23.545 186.631 23.045 221.051 41.045 C 221.831 41.452 222.404 41.842 222.771 42.215 Z",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"}),n.createElement("text",{style:{whiteSpace:"pre",fontFamily:"Arial, sans-serif",fontSize:16},x:"139.395",y:"288.084",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"},"vacuum"))}const xje={dialogPaper:{height:"calc(100% - 96px)"}};class mge extends n.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={showWarning:"",cron:t}}handleCancel(){this.props.onClose()}handleOk(e){if(!e){const t=Pt.cron2state(this.state.cron);if(t.seconds==="*"||t.seconds==="*/1"){this.setState({showWarning:"everySecond"});return}if(t.minutes==="*"||t.minutes==="*/1"){this.setState({showWarning:"everyMinute"});return}}this.props.onOk(this.state.cron),this.props.onClose()}renderWarningDialog(){return this.state.showWarning?n.createElement(Fc,{title:D.t("ra_Please confirm"),text:D.t(this.state.showWarning==="everySecond"?"ra_The schedule will be executed every second. Are you sure?":"ra_The schedule will be executed every minute. Are you sure?"),onClose:e=>this.setState({showWarning:""},()=>{e&&this.handleOk(!0)})}):null}handleClear(){this.props.onOk(!1),this.props.onClose()}render(){return n.createElement(de,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":xje.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},this.renderWarningDialog(),n.createElement(Ie,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define schedule...")),n.createElement(Ae,{style:{height:"100%",overflow:"hidden"}},n.createElement(Pt,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),n.createElement(me,null,!!this.props.clearButton&&n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.handleClear(),startIcon:n.createElement(ut,null)},this.props.clear||D.t("ra_Clear")),n.createElement(X,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:n.createElement(ve,null)},this.props.ok||D.t("ra_Ok")),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}const kje={dialogPaper:{height:"calc(100% - 96px)"}};class pge extends n.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={cron:t,mode:this.props.simple?"simple":this.props.complex?"complex":(typeof t=="object"||t[0]==="{")&&!this.props.noWizard?"wizard":Zu(this.props.cron||"* * * * *")?"simple":"complex"}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.state.cron),this.props.onClose()}setMode(e){this.setState({mode:e})}render(){return n.createElement(de,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":kje.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},n.createElement(Ie,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define schedule...")),n.createElement(Ae,{style:{height:"100%",overflow:"hidden"}},this.props.simple&&this.props.complex||!this.props.simple&&!this.props.complex?n.createElement("div",null,!this.props.simple&&!this.props.complex&&!this.props.noWizard&&n.createElement(n.Fragment,null,n.createElement(Me,{key:"wizard",checked:this.state.mode==="wizard",onChange:()=>this.setMode("wizard")}),n.createElement("label",{onClick:()=>this.setMode("wizard"),style:this.state.mode!=="wizard"?{color:"lightgrey"}:{}},D.t("sc_wizard"))),(!this.props.simple&&!this.props.complex||this.props.simple)&&n.createElement(n.Fragment,null,n.createElement(Me,{key:"simple",checked:this.state.mode==="simple",onChange:()=>this.setMode("simple")}),n.createElement("label",{onClick:()=>this.setMode("simple"),style:this.state.mode!=="simple"?{color:"lightgrey"}:{}},D.t("sc_simple"))),(!this.props.simple&&!this.props.complex||this.props.complex)&&n.createElement(n.Fragment,null,n.createElement(Me,{key:"complex",checked:this.state.mode==="complex",onChange:()=>this.setMode("complex")}),n.createElement("label",{onClick:()=>this.setMode("complex"),style:this.state.mode!=="complex"?{color:"lightgrey"}:{}},D.t("sc_cron")))):null,this.state.mode==="simple"&&n.createElement(ci,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()}),this.state.mode==="wizard"&&n.createElement(Ce,{theme:this.props.theme,schedule:this.state.cron,onChange:e=>this.setState({cron:e})}),this.state.mode==="complex"&&n.createElement(Pt,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:n.createElement(ve,null)},this.props.ok||D.t("ra_Ok")),n.createElement(X,{variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}class Oge extends ze{handleOk(){this.props.onClose&&this.props.onClose()}render(){return n.createElement(de,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"ar_dialog_message_title","aria-describedby":"ar_dialog_message_description"},n.createElement(Ie,{id:"ar_dialog_message_title"},this.props.title||D.t("ra_Message")),n.createElement(Ae,null,n.createElement(Jt,{id:"ar_dialog_message_description"},n.createElement("span",{style:{marginRight:this.props.icon?8:0}},this.props.icon||null),this.props.text)),n.createElement(me,null,n.createElement(X,{id:"ar_dialog_message_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:n.createElement(ge,null)},this.props.ok||D.t("ra_Close"))))}}const Kt={headerID:{fontWeight:"bold",fontStyle:"italic"},dialog:{height:"95%"},dialogMobile:{padding:"4px",width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)",height:"100%"},content:{height:"100%",overflow:"hidden"},contentMobile:{padding:"8px 4px"},titleRoot:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}};class Ege extends n.Component{dialogName;filters;constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName=`SelectFile.${this.dialogName}`;const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch{this.filters={}}e.filters&&(this.filters={...this.filters,...e.filters});let s=this.props.selected||[];typeof s!="object"?s=[s]:s=[...s],s=s.filter(r=>r),this.state={selected:s}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect||!Array.isArray(this.state.selected)?this.state.selected:this.state.selected[0]||""),this.props.onClose()}render(){let e;return this.state.selected.length?!Array.isArray(this.state.selected)||this.state.selected.length===1?e=[n.createElement("span",{key:"selected"},D.t("ra_Selected")," "),n.createElement("span",{key:"id",style:Kt.headerID},this.state.selected)]:e=[n.createElement("span",{key:"selected"},D.t("ra_Selected")," "),n.createElement("span",{key:"id",style:Kt.headerID},D.t("%s items",this.state.selected.length))]:e=this.props.title||D.t("ra_Please select file..."),n.createElement(de,{onClose:()=>{},maxWidth:!1,style:{zIndex:this.props.zIndex||void 0},sx:{"& .MuiDialog-paper":{...Kt.dialog,...Kt.dialogMobile}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectfile_title"},n.createElement(Ie,{id:"ar_dialog_selectfile_title",sx:{"&.MuiDialogTitle-root":Kt.titleRoot}},e),n.createElement(Ae,{style:{...Kt.content,...Kt.contentMobile}},n.createElement(mle,{ready:!0,imagePrefix:this.props.imagePrefix||this.props.prefix||"../",allowUpload:!!this.props.allowUpload,allowDownload:this.props.allowDownload!==!1,allowCreateFolder:!!this.props.allowCreateFolder,allowDelete:!!this.props.allowDelete,allowView:this.props.allowView!==!1,showViewTypeButton:this.props.showViewTypeButton!==!1,showToolbar:this.props.showToolbar!==!1,limitPath:this.props.limitPath,filterFiles:this.props.filterFiles,filterByType:this.props.filterByType,selected:this.props.selected,restrictToFolder:this.props.restrictToFolder,allowNonRestricted:this.props.allowNonRestricted,onSelect:(t,s,r)=>{this.setState({selected:Array.isArray(t)?t:[t]},()=>s&&(!this.props.selectOnlyFolders||r)&&this.handleOk())},t:this.props.t||D.t,lang:this.props.lang||D.getLanguage(),socket:this.props.socket,themeType:this.props.themeType,themeName:this.props.themeName,theme:this.props.theme,showExpertButton:this.props.showExpertButton,expertMode:this.props.expertMode,showTypeSelector:this.props.showTypeSelector})),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.handleOk(),startIcon:n.createElement(ve,null),disabled:!this.state.selected.length,color:"primary"},this.props.ok||D.t("ra_Ok")),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}const Yje={dialogPaper:{height:"calc(100% - 96px)"}};class _ge extends n.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={cron:t}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.state.cron),this.props.onClose()}render(){return n.createElement(de,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":Yje.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},n.createElement(Ie,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define CRON...")),n.createElement(Ae,{style:{height:"100%",overflow:"hidden"}},n.createElement(ci,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),n.createElement(me,null,n.createElement(X,{variant:"contained",disabled:!this.state.cron||this.state.cron.includes("_"),onClick:()=>this.handleOk(),color:"primary",startIcon:n.createElement(ve,null)},this.props.ok||D.t("ra_Ok")),n.createElement(X,{variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}const Dt={CONNECTING:0,CONNECTED:1,OBJECTS_LOADED:2,STATES_LOADED:3,READY:4},dt="permissionError",b="notConnectedError";function Ua(i){i=(i||"").toString();const e=i[0]==="*",t=i[i.length-1]==="*";return i=i.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+i+(t?"":"$")}class F{_socket;_authTimer;systemLang="en";_waitForFirstConnection;_waitForFirstConnectionResolve=null;_promises={};_instanceSubscriptions;props;doNotLoadAllObjects;doNotLoadACL;states={};objects=null;scriptLoadCounter;acl=null;firstConnect=!0;waitForRestart=!1;connected=!1;statesSubscribes={};objectsSubscribes={};filesSubscribes={};onConnectionHandlers=[];onLogHandlers=[];onProgress;onError;loaded=!1;loadTimer=null;loadCounter=0;ignoreState="";simStates={};autoSubscribes;autoSubscribeLog;subscribed;isSecure;onCmdStdoutHandler;onCmdStderrHandler;onCmdExitHandler;systemConfig=null;objectViewCached;constructor(e){e||={protocol:window.location.protocol,host:window.location.hostname},this.props=e,this.autoSubscribes=this.props.autoSubscribes||[],this.autoSubscribeLog=this.props.autoSubscribeLog||!1,this.props.protocol||=window.location.protocol,this.props.host||=window.location.hostname,this.props.port||=window.location.port==="3000"?F.isWeb()?8082:8081:window.location.port,this.props.ioTimeout=Math.max(this.props.ioTimeout||2e4,2e4),this.props.cmdTimeout=Math.max(this.props.cmdTimeout||5e3,5e3),this._instanceSubscriptions={},this.doNotLoadAllObjects=this.props.doNotLoadAllObjects===void 0?!0:this.props.doNotLoadAllObjects,this.doNotLoadACL=this.props.doNotLoadACL===void 0?!0:this.props.doNotLoadACL,this.states={},this._waitForFirstConnection=new Promise(t=>{this._waitForFirstConnectionResolve=t}),this.onProgress=this.props.onProgress||(()=>{}),this.onError=this.props.onError||(t=>console.error(t)),this.startSocket()}static isWeb(){const e=window.adapterName;return e==="material"||e==="vis"||(e==null?void 0:e.startsWith("vis-"))||e==="echarts-show"||window.socketUrl!==void 0}startSocket(){if(typeof window.io>"u"&&typeof window.iob>"u"){if(typeof window.registerSocketOnLoad!="function"){if(this.scriptLoadCounter||=0,this.scriptLoadCounter++,this.scriptLoadCounter<30){setTimeout(()=>this.startSocket(),100);return}window.alert("Cannot load socket.io.js!")}else window.registerSocketOnLoad(()=>this.startSocket());return}if(this._socket)return;let e=this.props.host,t=this.props.port,s=this.props.protocol.replace(":",""),r=window.location.pathname;if(window.location.hostname==="iobroker.net"||window.location.hostname==="iobroker.pro")r="";else{if(window.socketUrl){const a=new URL(window.socketUrl);e=a.hostname,t=a.port,s=a.protocol.replace(":","")}const M=r.lastIndexOf("/");if(M!==-1&&(r=r.substring(0,M+1)),F.isWeb()){const a=r.split("/");a.length>2&&(a.pop(),a[a.length-1].match(/\d+\.\d+\.\d+/)&&a.pop(),a.pop(),r=a.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?`${s}://${e}:${t}${r}`:`${s}://${e}${r}`;this._socket=(window.io||window.iob).connect(o,{path:r.endsWith("/")?`${r}socket.io`:`${r}/socket.io`,query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid}),this._socket.on("connect",M=>{M!==!0?setTimeout(()=>this.getVersion().then(a=>{const[u,l,N]=a.version.split(".");parseInt(u,10)*1e4+parseInt(l,10)*100+parseInt(N,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",(L,j)=>this.onPreConnect(L,j))}),500):this._socket.emit("authenticate",(a,u)=>this.onPreConnect(a,u))}),this._socket.on("reconnect",()=>{this.onProgress(Dt.READY),this.connected=!0,this.waitForRestart?window.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach(M=>M(!0)))}),this._socket.on("disconnect",()=>{this.connected=!1,this.subscribed=!1,this.onProgress(Dt.CONNECTING),this.onConnectionHandlers.forEach(M=>M(!1))}),this._socket.on("reauthenticate",()=>F.authenticate()),this._socket.on("log",M=>{var a,u;(u=(a=this.props).onLog)==null||u.call(a,M),this.onLogHandlers.forEach(l=>l(M))}),this._socket.on("error",M=>{let a=M||"";typeof a.toString!="function"&&(a=JSON.stringify(a),console.error(`Received strange error: ${a}`)),a=a.toString(),a.includes("User not authorized")?F.authenticate():window.alert(`Socket Error: ${M}`)}),this._socket.on("connect_error",M=>console.error(`Connect error: ${M}`)),this._socket.on("permissionError",M=>this.onError({message:"no permission",operation:M.operation,type:M.type,id:M.id||""})),this._socket.on("objectChange",(M,a)=>setTimeout(()=>this.objectChange(M,a),0)),this._socket.on("stateChange",(M,a)=>setTimeout(()=>this.stateChange(M,a),0)),this._socket.on("im",(M,a,u)=>setTimeout(()=>this.instanceMessage(M,a,u),0)),this._socket.on("fileChange",(M,a,u)=>setTimeout(()=>this.fileChange(M,a,u),0)),this._socket.on("cmdStdout",(M,a)=>{var u;return(u=this.onCmdStdoutHandler)==null?void 0:u.call(this,M,a)}),this._socket.on("cmdStderr",(M,a)=>{var u;return(u=this.onCmdStderrHandler)==null?void 0:u.call(this,M,a)}),this._socket.on("cmdExit",(M,a)=>{var u;return(u=this.onCmdExitHandler)==null?void 0:u.call(this,M,a)})}onPreConnect(e,t){this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?window.location.reload():(this.firstConnect?(this.loadTimer=setTimeout(()=>{this.loadTimer=null,this.loadCounter++,this.loadCounter<10&&this.onConnect().catch(s=>this.onError(s))},1e3),this.loaded||this.onConnect().catch(s=>this.onError(s))):this.onProgress(Dt.READY),this._subscribe(!0),this.onConnectionHandlers.forEach(s=>s(!0))),this._waitForFirstConnectionResolve&&(this._waitForFirstConnectionResolve(),this._waitForFirstConnectionResolve=null)}static isCloud(){return window.location.hostname.includes("amazonaws.com")||window.location.hostname.includes("iobroker.in")?!0:typeof window.socketUrl>"u"?!1:window.socketUrl.includes("iobroker.in")||window.socketUrl.includes("amazonaws")}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnection}async _getUserPermissions(){return this.doNotLoadACL?null:new Promise((e,t)=>{this._socket.emit("getUserPermissions",(s,r)=>s?t(new Error(s)):e(r))})}async onConnect(){var s,r,o,M,a;let e;try{e=await this._getUserPermissions()}catch(u){const l=u;this.onError(`Cannot read user permissions: ${l.message}`);return}if(!this.doNotLoadACL){if(this.loaded)return;this.loaded=!0,this.loadTimer&&(clearTimeout(this.loadTimer),this.loadTimer=null),this.onProgress(Dt.CONNECTED),this.firstConnect=!1,this.acl=e}let t;try{if(t=await this.getSystemConfig(),this.doNotLoadACL){if(this.loaded)return;this.loaded=!0,this.loadTimer&&(clearTimeout(this.loadTimer),this.loadTimer=null),this.onProgress(Dt.CONNECTED),this.firstConnect=!1}this.systemConfig=t,(s=this.systemConfig)!=null&&s.common?this.systemLang=this.systemConfig.common.language:(this.systemLang=window.navigator.userLanguage||window.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substr(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en")),(o=(r=this.props).onLanguage)==null||o.call(r,this.systemLang),this.doNotLoadAllObjects?(this.objects={"system.config":t},this.onProgress(Dt.READY),(a=(M=this.props).onReady)==null||a.call(M,this.objects)):(await this.getObjects(),this.onProgress(Dt.READY),this.props.onReady&&this.objects&&this.props.onReady(this.objects))}catch(u){this.onError(`Cannot read system config: ${u}`)}}static authenticate(){window.location.search.includes("&href=")?window.location.href=`${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`:window.location.href=`${window.location.protocol}//${window.location.host}${window.location.pathname}?login&href=${window.location.search}${window.location.hash}`}async subscribeState(e,t,s){typeof t=="function"&&(s=t,t=!1);let r;if(Array.isArray(e)?r=e:r=[e],!s)return console.error("No callback found for subscribeState"),Promise.reject(new Error("No callback found for subscribeState"));const o=[];for(let M=0;M{this._socket.emit(F.isWeb()?"getStates":"getForeignStates",r,(u,l)=>{u?(console.error(`Cannot getForeignStates "${e}": ${JSON.stringify(u)}`),a(new Error(u))):(l&&Object.keys(l).forEach(N=>s(N,l[N])),M())})})}subscribeStateAsync(e,t){let s;Array.isArray(e)?s=e:s=[e];const r=[];for(let o=0;o{typeof t=="function"&&this.connected?this._socket.emit(F.isWeb()?"getStates":"getForeignStates",e,(a,u)=>{a&&console.error(`Cannot getForeignStates "${e}": ${JSON.stringify(a)}`),u&&Object.keys(u).forEach(l=>t(l,u[l])),u?o():M(new Error(`Cannot getForeignStates "${e}": ${JSON.stringify(a)}`))}):this.connected?M(new Error("callback is not a function")):M(new Error("not connected"))})}unsubscribeState(e,t){let s;Array.isArray(e)?s=e:s=[e];const r=[];for(let o=0;o{(o===e||this.objectsSubscribes[o].reg.test(e))&&this.objectsSubscribes[o].cbs.forEach(M=>{try{M(e,t,s)}catch(a){console.error(`Error by callback of objectChange: ${a}`)}})}),r&&this.props.onObjectChange&&this.props.onObjectChange(e,t)}stateChange(e,t){for(const s in this.statesSubscribes)Object.prototype.hasOwnProperty.call(this.statesSubscribes,s)&&this.statesSubscribes[s].reg.test(e)&&this.statesSubscribes[s].cbs.forEach(r=>{try{r(e,t)}catch(o){const M=o;console.error(`Error by callback of stateChange: ${M==null?void 0:M.message}`)}})}instanceMessage(e,t,s){this._instanceSubscriptions[t]&&this._instanceSubscriptions[t].forEach(r=>{r.messageType===e&&r.callback(s,t,e)})}getStates(e,t){return this.connected?(typeof e=="boolean"&&(t=e,e=void 0),new Promise((s,r)=>{this._socket.emit("getStates",e,(o,M)=>{this.states=M,!t&&this.onProgress(Dt.STATES_LOADED),o?r(new Error(o)):s(this.states)})})):Promise.reject(new Error(b))}getState(e){return this.connected?e&&e===this.ignoreState?Promise.resolve(this.simStates[e]||{val:null,ack:!0}):new Promise((t,s)=>{this._socket.emit("getState",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}getBinaryState(e){return this.connected?new Promise((t,s)=>{this._socket.emit("getBinaryState",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}setBinaryState(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("setBinaryState",e,t,o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}setState(e,t,s){if(!this.connected)return Promise.reject(new Error(b));if(e&&e===this.ignoreState){let r;if(typeof s=="boolean"||typeof t=="object"&&t.val!==void 0?r=t:r={val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=r,this.statesSubscribes[e])for(const o of this.statesSubscribes[e].cbs)try{o(e,r)}catch(M){console.error(`Error by callback of stateChanged: ${M}`)}return Promise.resolve()}return new Promise((r,o)=>{this._socket.emit("setState",e,t,M=>M?o(new Error(M)):r())})}getObjects(e,t){return this.connected?new Promise((s,r)=>{!e&&this.objects?s(this.objects):this._socket.emit(F.isWeb()?"getObjects":"getAllObjects",(o,M)=>{this.objects=M,t&&this.onProgress(Dt.OBJECTS_LOADED),o?r(new Error(o)):s(this.objects)})}):Promise.reject(new Error(b))}getObjectsById(e){return this.connected?new Promise((t,s)=>{this._socket.emit("getObjects",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}_subscribe(e){if(e&&!this.subscribed){this.subscribed=!0,this.autoSubscribes.forEach(s=>this._socket.emit("subscribeObjects",s)),Object.keys(this.objectsSubscribes).forEach(s=>this._socket.emit("subscribeObjects",s)),this.autoSubscribeLog&&this._socket.emit("requireLog",!0);const t=Object.keys(this.statesSubscribes);t.forEach(s=>this._socket.emit("subscribe",s)),t.length&&this._socket.emit(F.isWeb()?"getStates":"getForeignStates",t,(s,r)=>{s&&console.error(`Cannot getForeignStates: ${JSON.stringify(s)}`),r&&Object.keys(r).forEach(o=>this.stateChange(o,r[o]))})}else!e&&this.subscribed&&(this.subscribed=!1,this.autoSubscribes.forEach(t=>this._socket.emit("unsubscribeObjects",t)),Object.keys(this.objectsSubscribes).forEach(t=>this._socket.emit("unsubscribeObjects",t)),this.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach(t=>this._socket.emit("unsubscribe",t)))}requireLog(e){return this.connected?new Promise((t,s)=>{this._socket.emit("requireLog",e,r=>r?s(new Error(r)):t())}):Promise.reject(new Error(b))}delObject(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("delObject",e,{maintenance:!!t},o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}delObjects(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("delObjects",e,{maintenance:!!t},o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}setObject(e,t){return this.connected?t?(t=JSON.parse(JSON.stringify(t)),Object.prototype.hasOwnProperty.call(t,"from")&&delete t.from,Object.prototype.hasOwnProperty.call(t,"user")&&delete t.user,Object.prototype.hasOwnProperty.call(t,"ts")&&delete t.ts,new Promise((s,r)=>{this._socket.emit("setObject",e,t,o=>o?r(new Error(o)):s())})):Promise.reject(new Error("Null object is not allowed")):Promise.reject(new Error(b))}getObject(e){return this.connected?e&&e===this.ignoreState?Promise.resolve({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed",read:!0,write:!0,role:"state"},native:{}}):new Promise((t,s)=>{this._socket.emit("getObject",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}getAdapterInstances(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",!t&&this._promises[`instances_${e}`]instanceof Promise?this._promises[`instances_${e}`]:this.connected?(this._promises[`instances_${e}`]=new Promise((s,r)=>{this._socket.emit("getAdapterInstances",e,(o,M)=>o?r(new Error(o)):s(M))}),this._promises[`instances_${e}`]):Promise.reject(new Error(b))}getAdapters(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(typeof e=="boolean"&&(t=e,e=""),e||="",!t&&this._promises[`adapter_${e}`]instanceof Promise?this._promises[`adapter_${e}`]:this.connected?(this._promises[`adapter_${e}`]=new Promise((s,r)=>{this._socket.emit("getAdapters",e,(o,M)=>{o?r(new Error(o)):s(M)})}),this._promises[`adapter_${e}`]):Promise.reject(new Error(b)))}_renameGroups(e,t){if(!(e!=null&&e.length))t==null||t(null);else{const s=e.pop();if(!s){setTimeout(()=>this._renameGroups(e,t),0);return}const r=s._id;s._id=s.newId,delete s.newId,this.setObject(s._id,s).then(()=>this.delObject(r)).then(()=>setTimeout(()=>this._renameGroups(e,t),0)).catch(o=>t==null?void 0:t(o))}}async renameGroup(e,t,s){if(F.isWeb())return Promise.reject(new Error("Allowed only in admin"));const r=await this.getGroups(!0);if(r.length){const o=r.filter(a=>a._id.startsWith(`${e}.`));o.forEach(a=>{a.newId=t+a._id.substring(e.length)}),await new Promise((a,u)=>{this._renameGroups(o,l=>l?u(new Error(l)):a(null))});const M=r.find(a=>a._id===e);if(M)return M._id=t,s!==void 0&&(M.common||={},M.common.name=s),this.setObject(M._id,M).then(()=>this.delObject(e))}return Promise.resolve()}sendTo(e,t,s){return this.connected?new Promise(r=>{this._socket.emit("sendTo",e,t,s,o=>r(o))}):Promise.reject(new Error(b))}extendObject(e,t){return this.connected?(t=JSON.parse(JSON.stringify(t)),Object.prototype.hasOwnProperty.call(t,"from")&&delete t.from,Object.prototype.hasOwnProperty.call(t,"user")&&delete t.user,Object.prototype.hasOwnProperty.call(t,"ts")&&delete t.ts,new Promise((s,r)=>{this._socket.emit("extendObject",e,t,o=>o?r(new Error(o)):s())})):Promise.reject(new Error(b))}registerLogHandler(e){!this.onLogHandlers.includes(e)&&this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);t!==-1&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){!this.onConnectionHandlers.includes(e)&&this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);t!==-1&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return!t&&this._promises[`enums_${e||"all"}`]instanceof Promise?this._promises[`enums_${e||"all"}`]:this.connected?(this._promises[`enums_${e||"all"}`]=new Promise((s,r)=>{this._socket.emit("getObjectView","system","enum",{startkey:`enum.${e||""}`,endkey:`enum.${e?`${e}.`:""}香`},(o,M)=>{if(!o&&M){const a={};for(let u=0;u{this._socket.emit("getObjectView",e,t,{startkey:s,endkey:r},(a,u)=>{if(a)M(new Error(a));else{const l={};if(u&&u.rows)for(let N=0;N{const s=[];return t&&t.native&&t.native.certificates&&Object.keys(t.native.certificates).forEach(r=>{const o=t.native.certificates[r];if(!o)return;const M={name:r,type:""};o.length<700&&(o.includes("/")||o.includes("\\"))?(r.toLowerCase().includes("private")||o.toLowerCase().includes("private")?M.type="private":(r.toLowerCase().includes("public")||o.toLowerCase().includes("public"))&&(M.type="public"),s.push(M)):(M.type=o.substring(0,26)==="-----BEGIN RSA PRIVATE KEY"||o.substring(0,22)==="-----BEGIN PRIVATE KEY"?"private":"public",M.type==="public"&&o.split("-----END CERTIFICATE-----").filter(u=>u.replace(/\r\n|\r|\n/,"").trim()).length>1&&(M.type="chained"),s.push(M))}),s}),this._promises.cert):Promise.reject(new Error(b))}getLogs(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(s=>{this._socket.emit("sendToHost",e,"getLogs",t||200,r=>s(r))}):Promise.reject(new Error(b))}getLogsFiles(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,s)=>{this._socket.emit("readLogs",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}delLogs(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,s)=>{this._socket.emit("sendToHost",e,"delLogs",null,r=>r?s(new Error(r)):t())}):Promise.reject(new Error(b))}readMetaItems(){return this.connected?new Promise((e,t)=>{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"香"},(s,r)=>s?t(new Error(s)):e(r.rows&&r.rows.map(o=>o.value)))}):Promise.reject(new Error(b))}readDir(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("readDir",e,t,(o,M)=>o?r(new Error(o)):s(M))}):Promise.reject(new Error(b))}readFile(e,t,s){return this.connected?new Promise((r,o)=>{s?this._socket.emit("readFile64",e,t,s,(M,a)=>M?o(new Error(M)):r(a)):this._socket.emit("readFile",e,t,(M,a,u)=>{M?o(new Error(M)):r({data:a,type:u})})}):Promise.reject(new Error(b))}writeFile64(e,t,s){return this.connected?new Promise((r,o)=>{if(typeof s=="string")this._socket.emit("writeFile",e,t,s,M=>M?o(new Error(M)):r());else{const M=btoa(new Uint8Array(s).reduce((a,u)=>a+String.fromCharCode(u),""));this._socket.emit("writeFile64",e,t,M,a=>a?o(new Error(a)):r())}}):Promise.reject(new Error(b))}deleteFile(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("unlink",e,t,o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}deleteFolder(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("deleteFolder",e,t,o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}getHosts(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.hosts instanceof Promise?this._promises.hosts:this.connected?(this._promises.hosts=new Promise((t,s)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.香"},(r,o)=>{r?s(new Error(r)):t(o.rows.map(M=>M.value))})}),this._promises.hosts):Promise.reject(new Error(b))}getUsers(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.users instanceof Promise?this._promises.users:this.connected?(this._promises.users=new Promise((t,s)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.香"},(r,o)=>{r?s(new Error(r)):t(o.rows.map(M=>M.value))})}),this._promises.users):Promise.reject(new Error(b))}getGroups(e){return!e&&this._promises.groups instanceof Promise?this._promises.groups:this.connected?(this._promises.groups=new Promise((t,s)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.香"},(r,o)=>{r?s(new Error(r)):t(o.rows.map(M=>M.value))})}),this._promises.groups):Promise.reject(new Error(b))}getHostInfo(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e+=`system.host.${e}`),!t&&this._promises[`hostInfo_${e}`]instanceof Promise?this._promises[`hostInfo_${e}`]:this.connected?(this._promises[`hostInfo_${e}`]=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("getHostInfo timeout")))},s||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getHostInfo",null,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getHostInfo"')):!a||typeof a!="object"?o(new Error('Cannot read "getHostInfo"')):r(a))})}),this._promises[`hostInfo_${e}`]):Promise.reject(new Error(b)))}getHostInfoShort(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e+=`system.host.${e}`),!t&&this._promises[`hostInfoShort_${e}`]instanceof Promise?this._promises[`hostInfoShort_${e}`]:this.connected?(this._promises[`hostInfoShort_${e}`]=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("hostInfoShort timeout")))},s||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getHostInfoShort",null,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getHostInfoShort"')):!a||typeof a!="object"?o(new Error('Cannot read "getHostInfoShort"')):r(a))})}),this._promises[`hostInfoShort_${e}`]):Promise.reject(new Error(b)))}getRepository(e,t,s,r){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!s&&this._promises.repo instanceof Promise?this._promises.repo:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.repo=new Promise((o,M)=>{let a=setTimeout(()=>{a&&(a=null,M(new Error("getRepository timeout")))},r||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getRepository",t,u=>{a&&(clearTimeout(a),a=null,u===dt?M(new Error('May not read "getRepository"')):!u||typeof u!="object"?M(new Error('Cannot read "getRepository"')):o(u))})}),this._promises.repo):Promise.reject(new Error(b))}getInstalled(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(this._promises.installed=this._promises.installed||{},!t&&this._promises.installed[e]instanceof Promise?this._promises.installed[e]:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.installed[e]=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("getInstalled timeout")))},s||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getInstalled",null,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getInstalled"')):!a||typeof a!="object"?o(new Error('Cannot read "getInstalled"')):r(a))})}),this._promises.installed[e]):Promise.reject(new Error(b)))}rename(e,t,s){return this.connected?new Promise((r,o)=>{this._socket.emit("rename",e,t,s,M=>M?o(new Error(M)):r())}):Promise.reject(new Error(b))}renameFile(e,t,s){return this.connected?new Promise((r,o)=>{this._socket.emit("renameFile",e,t,s,M=>M?o(new Error(M)):r())}):Promise.reject(new Error(b))}cmdExec(e,t,s,r){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?(e.startsWith(e)||(e+=`system.host.${e}`),new Promise((o,M)=>{let a=r?setTimeout(()=>{a&&(a=null,M(new Error("cmdExec timeout")))},r):null;this._socket.emit("cmdExec",e,s,t,null,u=>{(!r||a)&&(a&&clearTimeout(a),a=null,u?M(new Error(u)):o())})})):Promise.reject(new Error(b))}checkFeatureSupported(e,t){return!t&&this._promises[`supportedFeatures_${e}`]instanceof Promise?this._promises[`supportedFeatures_${e}`]:this.connected?(this._promises[`supportedFeatures_${e}`]=new Promise((s,r)=>{this._socket.emit("checkFeatureSupported",e,(o,M)=>o?r(new Error(o)):s(M))}),this._promises[`supportedFeatures_${e}`]):Promise.reject(new Error(b))}async readBaseSettings(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):await this.checkFeatureSupported("CONTROLLER_READWRITE_BASE_SETTINGS")?this.connected?new Promise((s,r)=>{let o=setTimeout(()=>{o&&(o=null,r(new Error("readBaseSettings timeout")))},this.props.cmdTimeout);e.startsWith("system.host.")&&(e=e.replace(/^system\.host\./,"")),this._socket.emit("sendToHost",e,"readBaseSettings",null,M=>{o&&(clearTimeout(o),o=null,M===dt?r(new Error('May not read "BaseSettings"')):!M||typeof M!="object"?r(new Error('Cannot read "BaseSettings"')):s(M))})}):Promise.reject(new Error(b)):Promise.reject(new Error("Not supported"))}writeBaseSettings(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.checkFeatureSupported("CONTROLLER_READWRITE_BASE_SETTINGS").then(s=>s?this.connected?new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("writeBaseSettings timeout")))},this.props.cmdTimeout);this._socket.emit("sendToHost",e,"writeBaseSettings",t,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not write "BaseSettings"')):a?r(a):o(new Error('Cannot write "BaseSettings"')))})}):Promise.reject(new Error(b)):Promise.reject(new Error("Not supported")))}restartController(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((t,s)=>{this._socket.emit("sendToHost",e,"restartController",null,r=>{r?s(new Error(r)):t(!0)})})}getDiagData(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise(s=>{this._socket.emit("sendToHost",e,"getDiagData",t,r=>s(r))})}getForeignStates(e){return this.connected?F.isWeb()?new Promise((t,s)=>{this._socket.emit("getStates",e||"*",(r,o)=>r?s(new Error(r)):t(o))}):new Promise((t,s)=>{this._socket.emit("getForeignStates",e||"*",(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}getForeignObjects(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((s,r)=>{this._socket.emit("getForeignObjects",e||"*",t,(o,M)=>o?r(new Error(o)):s(M))}):Promise.reject(new Error(b))}getSystemConfig(e){return!e&&this._promises.systemConfig instanceof Promise?this._promises.systemConfig:this.connected?(this._promises.systemConfig=this.getObject("system.config").then(t=>{const s=t||{};return s.common||={},s.native||={},s}),this._promises.systemConfig):Promise.reject(new Error(b))}setSystemConfig(e){return this.setObject("system.config",e).then(()=>this._promises.systemConfig=Promise.resolve(e))}getRawSocket(){return this._socket}getHistory(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("getHistory",e,t,(o,M)=>o?r(new Error(o)):s(M))}):Promise.reject(new Error(b))}getHistoryEx(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("getHistory",e,t,(o,M,a,u)=>o?r(new Error(o)):s({values:M,sessionId:u,step:a}))}):Promise.reject(new Error(b))}changePassword(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((s,r)=>{this._socket.emit("changePassword",e,t,o=>o?r(new Error(o)):s())})}getIpAddresses(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e=`system.host.${e}`),!t&&this._promises[`IPs_${e}`]instanceof Promise?this._promises[`IPs_${e}`]:(this._promises[`IPs_${e}`]=this.getObject(e).then(s=>s!=null&&s.common?s.common.address||[]:[]),this._promises[`IPs_${e}`]))}getHostByIp(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")&&(e=e.replace(/^system\.host\./,"")),!t&&this._promises[`rIPs_${e}`]instanceof Promise?this._promises[`rIPs_${e}`]:(this._promises[`rIPs_${e}`]=new Promise(s=>{this._socket.emit("getHostByIp",e,(r,o)=>{var u,l;const M=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],a=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if((l=(u=o==null?void 0:o.native)==null?void 0:u.hardware)!=null&&l.networkInterfaces){for(const N in o.native.hardware.networkInterfaces)if(Object.prototype.hasOwnProperty.call(o.native.hardware.networkInterfaces,N))for(let c=0;c{this._socket.emit("encrypt",e,(r,o)=>r?s(new Error(r)):t(o))})}decrypt(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((t,s)=>{this._socket.emit("decrypt",e,(r,o)=>r?s(new Error(r)):t(o))})}getVersion(e){return!e&&this._promises.version instanceof Promise?this._promises.version:(this._promises.version=new Promise((t,s)=>{this._socket.emit("getVersion",(r,o,M)=>{r&&!o&&typeof r=="string"&&r.match(/\d+\.\d+\.\d+/)?t({version:r,serverName:"socketio"}):r?s(new Error(r)):t({version:o,serverName:M})})}),this._promises.version)}getWebServerName(){return this._promises.webName instanceof Promise?this._promises.webName:(this._promises.webName=new Promise((e,t)=>{this._socket.emit("getAdapterName",(s,r)=>s?t(new Error(s)):e(r))}),this._promises.webName)}getAdminVersion(){return console.log("Deprecated: use getVersion"),this.getVersion()}chmodFile(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((r,o)=>{this._socket.emit("chmodFile",e,t,s,(M,a,u)=>M?o(new Error(M)):r({entries:a,id:u}))}):Promise.reject(new Error(b))}chownFile(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((r,o)=>{this._socket.emit("chownFile",e,t,s,(M,a,u)=>M?o(new Error(M)):r({entries:a,id:u}))}):Promise.reject(new Error(b))}fileExists(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("fileExists",e,t,(o,M)=>o?r(new Error(o)):s(M))}):Promise.reject(new Error(b))}getNotifications(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(s=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},r=>s(r))}):Promise.reject(new Error(b))}clearNotifications(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(s=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},r=>s(r))}):Promise.reject(new Error(b))}getIsEasyModeStrict(){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((e,t)=>{this._socket.emit("getIsEasyModeStrict",(s,r)=>s?t(new Error(s)):e(r))}):Promise.reject(new Error(b))}getEasyMode(){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((e,t)=>{this._socket.emit("getEasyMode",(s,r)=>s?t(new Error(s)):e(r))}):Promise.reject(new Error(b))}getCurrentUser(){return this.connected?new Promise(e=>{this._socket.emit("authEnabled",(t,s)=>e(s))}):Promise.reject(new Error(b))}getCurrentSession(e){return this.connected?new Promise((t,s)=>{const r=new AbortController;let o=setTimeout(()=>{o&&(o=null,r.abort(),s(new Error("getCurrentSession timeout")))},e||5e3);fetch("./session",{signal:r.signal}).then(M=>M.json()).then(M=>{o&&(clearTimeout(o),o=null,t(M))}).catch(M=>s(new Error(`getCurrentSession: ${M}`)))}):Promise.reject(new Error(b))}getRatings(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,s)=>{this._socket.emit("getRatings",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}getCurrentInstance(){return this.connected?this._promises.currentInstance instanceof Promise?this._promises.currentInstance:(this._promises.currentInstance=new Promise((e,t)=>{this._socket.emit("getCurrentInstance",(s,r)=>s?t(new Error(s)):e(r))}),this._promises.currentInstance):Promise.reject(new Error(b))}getCompactAdapters(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.compactAdapters instanceof Promise?this._promises.compactAdapters:this.connected?(this._promises.compactAdapters=new Promise((t,s)=>{this._socket.emit("getCompactAdapters",(r,o)=>r?s(new Error(r)):t(o))}),this._promises.compactAdapters):Promise.reject(new Error(b))}getAdaptersResetCache(e){e||="",delete this._promises.compactAdapters,delete this._promises[`adapter_${e}`]}getCompactInstances(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.compactInstances instanceof Promise?this._promises.compactInstances:this.connected?(this._promises.compactInstances=new Promise((t,s)=>{this._socket.emit("getCompactInstances",(r,o)=>r?s(new Error(r)):t(o))}),this._promises.compactInstances):Promise.reject(new Error(b))}getAdapternInstancesResetCache(e){e||="",delete this._promises.compactInstances,delete this._promises[`instances_${e}`]}getCompactInstalled(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(this._promises.installedCompact||={},!t&&this._promises.installedCompact[e]instanceof Promise?this._promises.installedCompact[e]:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.installedCompact[e]=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("getCompactInstalled timeout")))},s||this.props.cmdTimeout);this._socket.emit("getCompactInstalled",e,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getCompactInstalled"')):!a||typeof a!="object"?o(new Error('Cannot read "getCompactInstalled"')):r(a))})}),this._promises.installedCompact[e]):Promise.reject(new Error(b)))}getCompactSystemRepositories(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.getCompactSystemRepositories instanceof Promise?this._promises.getCompactSystemRepositories:this.connected?(this._promises.getCompactSystemRepositories=new Promise((s,r)=>{let o=setTimeout(()=>{o&&(o=null,r(new Error("getCompactSystemRepositories timeout")))},t||this.props.cmdTimeout);this._socket.emit("getCompactSystemRepositories",M=>{o&&(clearTimeout(o),o=null,M===dt?r(new Error('May not read "getCompactSystemRepositories"')):!M||typeof M!="object"?r(new Error('Cannot read "getCompactSystemRepositories"')):s(M))})}),this._promises.getCompactSystemRepositories):Promise.reject(new Error(b))}getCompactSystemConfig(e){return!e&&this._promises.systemConfigPromise instanceof Promise?this._promises.systemConfigPromise:this.connected?(this._promises.systemConfigPromise=new Promise((t,s)=>{this._socket.emit("getCompactSystemConfig",(r,o)=>r?s(new Error(r)):t(o))}),this._promises.systemConfigPromise):Promise.reject(new Error(b))}getCompactRepository(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!t&&this._promises.repoCompact instanceof Promise?this._promises.repoCompact:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.repoCompact=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("getCompactRepository timeout")))},s||this.props.cmdTimeout);this._socket.emit("getCompactRepository",e,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getCompactRepository"')):a?r(a):o(new Error('Cannot read "getCompactRepository"')))})}),this._promises.repoCompact):Promise.reject(new Error(b))}getInstalledResetCache(){delete this._promises.repoCompact,delete this._promises.repo}getCompactHosts(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.hostsCompact instanceof Promise?this._promises.hostsCompact:this.connected?(this._promises.hostsCompact=new Promise((t,s)=>{this._socket.emit("getCompactHosts",(r,o)=>r?s(new Error(r)):t(o))}),this._promises.hostsCompact):Promise.reject(new Error(b))}getUuid(){return this._promises.uuid instanceof Promise?this._promises.uuid:this.connected?(this._promises.uuid=this.getObject("system.meta.uuid").then(e=>{var t;return(t=e==null?void 0:e.native)==null?void 0:t.uuid}),this._promises.uuid):Promise.reject(new Error(b))}subscribeOnInstance(e,t,s,r){return this.connected?new Promise((o,M)=>{this._socket.emit("clientSubscribe",e,t,s,(a,u)=>{a?M(new Error(a)):u!=null&&u.error?M(new Error(u.error)):(e.startsWith("system.adapter.")||(e=`system.adapter.${e}`),this._instanceSubscriptions[e]||=[],this._instanceSubscriptions[e].find(l=>l.messageType===t&&l.callback===r)||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(u))})}):Promise.reject(new Error(b))}unsubscribeFromInstance(e,t,s){var M;e.startsWith("system.adapter.")||(e=`system.adapter.${e}`);let r;const o=[];do{r=!1;const a=(M=this._instanceSubscriptions[e])==null?void 0:M.findIndex(u=>(!t||u.messageType===t)&&(!s||u.callback===s));if(a!=null&&a!==-1){r=!0;const u=this._instanceSubscriptions[e][a].messageType;this._instanceSubscriptions[e].splice(a,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e],this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find(N=>N.messageType===u)||o.push(new Promise((N,c)=>{this._socket.emit("clientUnsubscribe",e,t,(L,j)=>{L?c(new Error(L)):N(j)})}))}}while(r&&(!s||!t));return o.length?Promise.all(o).then(a=>a.find(u=>u)||!1):Promise.resolve(!1)}log(e,t){e&&this._socket.emit("log",e,t||"debug")}logout(){return this.connected?new Promise((e,t)=>{this._socket.emit("logout",s=>s?t(new Error(s)):e())}):Promise.reject(new Error(b))}setStateToIgnore(e){this.ignoreState=e||""}}function fge(i){var e;return i.type==="object"?`iobobject://${i.address}/${i.path||""}`:i.type==="state"?`iobstate://${i.address}`:i.type==="file"?`iobfile://${i.address}/${i.path||""}`:i.type==="http"?i.address:(e=i.path)!=null&&e.includes("/")?`iobfile://${i.address}/${i.path}`:i.path?`iobobject://${i.address}/${i.path}`:`iobstate://${i.address}`}function Qje(i){const e={type:"object",address:""};if(i.startsWith("iobobject://")){e.type="object",i=i.replace("iobobject://","");const t=i.split("/");e.address=t[0],e.path=t[1]}else if(i.startsWith("iobstate://")){e.type="state",i=i.replace("iobstate://","");const t=i.split("/");e.address=t[0],e.path=t[1]}else if(i.startsWith("iobfile://")){e.type="file",i=i.replace("iobfile://","");const t=i.split("/");e.address=t.shift(),e.path=t.join("/")}else if(i.startsWith("http://")||i.startsWith("https://"))e.type="http",e.address=i;else if(i.startsWith("data:"))e.type="base64",e.address=i;else{const t=i.split("/");if(t.length===2)if(e.address=t[0],e.path=t[1],e.path.includes("."))e.type="object";else if(e.path)if(e.path==="val"||e.path==="q"||e.path==="ack"||e.path==="ts"||e.path==="lc"||e.path==="from"||e.path==="user"||e.path==="expire"||e.path==="c")e.type="state";else if(e.path==="common"||e.path==="native"||e.path==="from"||e.path==="acl"||e.path==="type")e.type="object";else throw new Error(`Unknown path: ${e.path}`);else e.type="state";else t.length===1?(e.address=t[0],e.type="state"):(e.address=t.shift(),e.type="file",e.path=t.join("/"))}return e}function Xu(i,e,t){if(t||=0,i==null||!e)return i;if(e.length-1===t)return i[e[t]];if(typeof i=="object")return Xu(i[e[t]],e,t+1)}function vje(i,e,t,s){if(s||=0,i==null||!e)return t;if(e.length-1===s)return i[e[s]]=t,i;if(typeof i=="object")return vje(i[e[s]],e,t,s+1)}async function Sge(i,e){var t;if(typeof i=="string"&&(i=Qje(i)),i.type==="object"){const s=await e.getObject(i.address);return Xu(s,(t=i.path)==null?void 0:t.split("."))}if(i.type==="state"){const s=await e.getState(i.address);return i.path?s==null?void 0:s[i.path]:s}if(i.type==="file")return await e.readFile(i.address,i.path,!0);if(i.type==="http")return fetch(i.address).then(s=>s.text()).then(s=>{if(s.startsWith("{")&&s.endsWith("}")||s.startsWith("[")&&s.endsWith("]"))try{return JSON.parse(s)}catch{}return s});throw new Error(`Unknown type: ${i.type}`)}const Rr=i=>{const e={};return i.forEach(t=>{e[t]={requiredVersion:"*",singleton:!0}}),e};function xge(i){const e=["@emotion/react","@emotion/styled","@iobroker/adapter-react-v5","@iobroker/json-config","@iobroker/dm-gui-components","@mui/icons-material","@mui/material","@mui/x-date-pickers","date-fns","date-fns/locale","leaflet","leaflet-geosearch","react","react-ace","react-dom","react-dropzone","semver"];return Array.isArray(i)?Rr(e.filter(t=>i.includes(t))):i&&(i.dependencies||i.devDependencies)?Rr(e.filter(t=>{var s,r;return((s=i.dependencies)==null?void 0:s[t])||((r=i.devDependencies)==null?void 0:r[t])})):Rr(e)}export{Xje as AdminConnection,T4e as Cleaner,Vs as ColorPicker,Pt as ComplexCron,mge as ComplexCronDialog,Fc as Confirm,Ee as Connection,pge as Cron,Kje as CustomModal,Q4e as DeviceTypeIcon,jge as DeviceTypeSelector,mge as DialogComplexCron,Fc as DialogConfirm,pge as DialogCron,Hc as DialogError,Oge as DialogMessage,Ege as DialogSelectFile,YLe as DialogSelectID,_ge as DialogSimpleCron,tle as DialogTextInput,sge as DoorClosed,y4e as DoorOpened,Se as ERRORS,_e as EXTENSIONS,Hc as Error,mle as FileBrowser,iM as FileBrowserClass,Ale as FileViewer,Cle as FileViewerClass,ige as FireOff,ta as FireOn,rge as FloodOff,sa as FloodOn,D4e as Gate,qt as GenericApp,oge as HeatValve,Mge as Home,d4e as Humidity,D as I18n,ja as ITEM_IMAGES,xe as Icon,K4e as IconAdapter,Ile as IconAlias,Ige as IconButtonImage,Tu as IconChannel,sLe as IconClearFilter,ms as IconClosed,Ts as IconCopy,yu as IconDevice,q4e as IconDocument,eLe as IconDocumentReadOnly,lo as IconExpert,wge as IconFx,nge as IconHome,tLe as IconInstance,Cge as IconLogout,sM as IconNoIcon,bi as IconOpen,tge as IconPicker,r0e as IconSelector,Xs as IconState,Age as IconVacuum,$i as Image,Tge as InfoBox,ia as Jalousie,F as LegacyConnection,Og as Loader,pg as LoaderHA,Dg as LoaderMV,dg as LoaderNW,Ag as LoaderPT,hg as LoaderVendor,ju as Logo,gu as MDUtils,age as Material,Oge as Message,cge as MotionOff,z4e as MotionOn,DLe as ObjectBrowser,Ki as ObjectBrowserClass,Zje as PERMISSION_ERROR,at as PROGRESS,h4e as PushButton,xr as RGB,uge as RepairExpert,qs as Router,gge as STATES_NAME_ICONS,kg as SaveCloseButtons,Ce as Schedule,Ege as SelectFile,YLe as SelectID,yge as SelectWithIcon,ci as SimpleCron,_ge as SimpleCronDialog,I4e as Socket,iLe as TabContainer,rLe as TabContent,oLe as TabHeader,Dge as TableResize,tle as TextInput,dge as TextWithIcon,gN as Theme,w4e as Thermometer,lge as ThermometerSimple,C4e as Thermostat,zge as ToggleThemeMenu,Co as TreeTable,hge as UploadImage,E as Utils,Nge as Valve,Lge as WindowClosed,A4e as WindowOpened,Nu as WindowTilted,Zc as convertCronToText,Gc as copy,Zu as cron2state,Uue as dictionary,Lu as extendDeviceTypeTranslation,Xu as getAttrInObject,ege as getSelectIdIcon,Xi as getSelectIdIconFromObjects,qje as getSystemIcon,Qje as iobUriParse,Sge as iobUriRead,fge as iobUriToString,xge as moduleFederationShared,Ua as pattern2RegEx,yg as printPrompt,vje as setAttrInObject,Nr as withWidth}; diff --git a/admin/custom/assets/index-ChQotUCl.js b/admin/custom/assets/index-kuWacDNo.js similarity index 95% rename from admin/custom/assets/index-ChQotUCl.js rename to admin/custom/assets/index-kuWacDNo.js index 4f062e412..a9deee8ef 100644 --- a/admin/custom/assets/index-ChQotUCl.js +++ b/admin/custom/assets/index-kuWacDNo.js @@ -1 +1 @@ -import"./virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BcRVut8U.js";import{j as n}from"./jsx-runtime-BplTyRFk.js";import{h as d}from"./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-BW9Qbxx5.js";import{r as m}from"./ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-D8zcZsJo.js";import"./preload-helper-BDBacUwf.js";import"./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs_commonjs-proxy-2W2BYT2K.js";import"./ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs-CL--xmjC.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const t of e)if(t.type==="childList")for(const o of t.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function a(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?t.credentials="include":e.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function i(e){if(e.ep)return;e.ep=!0;const t=a(e);fetch(e.href,t)}})();var c,s=m;c=s.createRoot,s.hydrateRoot;window.adapterName="adapter-component-template";const u=document.getElementById("root"),f=c(u);f.render(n.jsx(d.StrictMode,{children:n.jsx("div",{})})); +import"./virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-CocegHDZ.js";import{j as n}from"./jsx-runtime-BplTyRFk.js";import{h as d}from"./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-BW9Qbxx5.js";import{r as m}from"./ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-D8zcZsJo.js";import"./preload-helper-BDBacUwf.js";import"./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs_commonjs-proxy-2W2BYT2K.js";import"./ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs-CL--xmjC.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const t of e)if(t.type==="childList")for(const o of t.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function a(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?t.credentials="include":e.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function i(e){if(e.ep)return;e.ep=!0;const t=a(e);fetch(e.href,t)}})();var c,s=m;c=s.createRoot,s.hydrateRoot;window.adapterName="adapter-component-template";const u=document.getElementById("root"),f=c(u);f.render(n.jsx(d.StrictMode,{children:n.jsx("div",{})})); diff --git a/admin/custom/assets/index-qs6J40Tp.js b/admin/custom/assets/index-qs6J40Tp.js deleted file mode 100644 index 1f7332766..000000000 --- a/admin/custom/assets/index-qs6J40Tp.js +++ /dev/null @@ -1,964 +0,0 @@ -import{o as He,g as zM,c as hM,a as IM}from"./createTheme-MsdB8zt7.js";import{h as n,a as ye,i as ze,f as Qo,j as qu,m as el,_ as Fe,g as Qt,n as tl,o as sl,p as Pa,l as il,q as rl}from"./ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-BW9Qbxx5.js";import{h as er,i as Wa,j as Ct,k as de,l as Ie,m as Ae,n as Jt,_ as H,a as ne,o as me,p as X,q as Br,r as P,s as W,b as le,t as ss,e as Xe,f as te,u as ol,v as Ml,w as ls,x as nl,y as Ra,z as ae,A as Yt,B as nt,C as al,D as vt,E as cl,c as wt,d as As,F as Ja,G as Ut,H as wM,I as Di,J as CM,K as AM,L as ul,M as ll,N as Me,O as Dr,P as Nl,Q as Ba,R as Ve,S as mM,T as Ll,U as pM,V as jl}from"./ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-KsT5vKjV.js";import{_ as Gr,a as ge,b as ve,c as ut,d as gl,e as Wi,f as Tl,g as vo,h as Uo,i as bo,j as zs,k as $o,l as tr,m as Po,n as yl,o as Dl,p as Ga,q as dl,r as Wo,s as zl,t as hl,u as Ks,v as Il,w as wl,x as Cl,y as Al,z as ml,A as pl,B as Ol,C as El,D as _l,E as Fa,F as Ha,G as Ri,H as fl,I as Va,J as Sl,K as xl,L as kl,M as Za,N as Yl,O as Ql,P as vl,Q as Ul,R as Fr,S as bl,T as $l,U as Pl,V as Hr,W as Wl,X as di,Y as Rl,Z as Jl,$ as Bl,a0 as Gl,a1 as Fl,a2 as Hl,a3 as Vl,a4 as Zl,a5 as Xl,a6 as Kl,a7 as ql,a8 as eN,a9 as tN,aa as sN,ab as iN,ac as ui,ad as rN,ae as oN,af as MN,ag as nN,ah as aN,ai as cN}from"./ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__.mjs-B551AMx-.js";import{C as uN,D as Xa,u as lN}from"./index-CzRngQHl.js";function NN(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{u as LN}from"./useTheme-ldICnlmf.js";import"./blue-CagzI6CQ.js";import"./index-D_5kZmfw.js";import"./defaultTheme-CmVP-QNF.js";import"./useTheme-BV4xOYIL.js";import"./ConfigCustomJavascriptSet__loadShare___mf_0_emotion_mf_1_react__loadShare__.mjs-sg07E3QA.js";const dr=11/23/100;function OM(i){const e={r:0,g:0,b:0};if(i.length===7)e.r=parseInt(i.substring(1,3),16),e.g=parseInt(i.substring(3,5),16),e.b=parseInt(i.substring(5,7),16);else if(i.length===4){const t=i[1],s=i[2],r=i[3];e.r=parseInt(t+t,16),e.g=parseInt(s+s,16),e.b=parseInt(r+r,16)}return e}function jN(i){return`#${Math.round(i.r).toString(16).padStart(2,"0")}${Math.round(i.g).toString(16).padStart(2,"0")}${Math.round(i.b).toString(16).padStart(2,"0")}`}function gN(i,e,t){const s=OM(i),r=OM(e);return s.r+=r.r*(.05+dr*(t-1)),s.g+=r.g*(.05+dr*(t-1)),s.b+=r.b*(.05+dr*(t-1)),jN(s)}function zi(i,e){const t={};for(let s=1;s<=24;s++)t[`elevation${s}`]={backgroundColor:gN(i,e,s)};return t}function TN(i,e){var M,a,u,l,N,c,L,j,g,y,d;let t,s;i==="dark"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[200],"&:hover":{color:He[100]}}},MuiPaper:zi("#121212","#fff")},t={name:i,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):i==="blue"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#3399CC"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[400],"&:hover":{color:He[300]}}}},t={name:i,palette:{mode:"dark",background:{paper:"#151d21",default:"#151d21"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):i==="colored"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#2a3135"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[200],"&:hover":{color:He[100]}}},MuiPaper:zi("#151d21","#fff")},t={name:i,palette:{mode:"light",primary:{main:"#3399CC"},secondary:{main:"#164477"},expert:"#96fc96"}}):i==="PT"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#0F99DE"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[400],"&:hover":{color:He[300]}}}},t={name:i,palette:{mode:"light",primary:{main:"#0F99DE"},secondary:{main:"#88A536"},expert:"#BD1B24"}}):i==="NW"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[400],"&:hover":{color:He[300]}}},MuiPaper:zi("#121212","#fff")},t={name:i,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#00af78"},secondary:{main:"#005a40"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):i==="HA"?(s={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:"#db0a33","&:hover":{color:"#FF0a33"}}},MuiPaper:zi("#121212","#fff")},t={name:i,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#970720"},secondary:{main:"#db0a33"},expert:"#db0a33",nonAck:"#ffe96a",text:{primary:"#ffffff",secondary:"#ffffff"}}}):(s={MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:He[400],"&:hover":{color:He[300]}}}},t={name:i,palette:{mode:"light",primary:{main:"#3399CC",dark:"#256c97",light:"#76d0fd"},secondary:{main:"#164477"},expert:"#14bb00"}}),t.toolbar={height:48},t.saveToolbar={background:(a=(M=t.palette)==null?void 0:M.primary)==null?void 0:a.main,button:{borderRadius:3,height:32}},t.palette&&(t.palette.grey={main:zM[300],dark:zM[400]});const r=hM(t),o=r.palette;return hM(r,{...e||void 0,components:{...s,MuiButton:{variants:[{props:{variant:"contained",color:"grey"},style:{backgroundColor:(u=o.grey)==null?void 0:u[300],color:o.getContrastText&&((l=o.grey)!=null&&l[300])?o.getContrastText(o.grey[300]):void 0}},{props:{variant:"outlined",color:"grey"},style:{color:(N=o.text)==null?void 0:N.primary,borderColor:o.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)","&.Mui-disabled":{border:`1px solid ${(c=o.action)==null?void 0:c.disabledBackground}`},"&:hover":{borderColor:o.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)",backgroundColor:IM(((L=o.text)==null?void 0:L.primary)||"",((j=o.action)==null?void 0:j.hoverOpacity)||.04)}}},{props:{variant:"text",color:"grey"},style:{color:(g=o.text)==null?void 0:g.primary,"&:hover":{backgroundColor:IM(((y=o.text)==null?void 0:y.primary)||"",((d=o.action)==null?void 0:d.hoverOpacity)||.04)}}}]},...(e==null?void 0:e.components)||void 0}})}function yN(){let i,e;const t=new Promise((s,r)=>{i=s,e=r});return t.resolve=i,t.reject=e,t}function Vr(i){return(i==null?void 0:i.rows.map(e=>e.value).filter(e=>!!e))??[]}function ht(i){return i!=null&&i.startsWith("system.host.")||(i=`system.host.${i}`),i}function Ps(i){return i!=null&&i.startsWith("system.host.")&&(i=i.substring(12)),i}function EM(i){return new Promise(e=>{setTimeout(e,i)})}function hi(i){i=(i||"").toString();const e=i[0]==="*",t=i[i.length-1]==="*";return i=i.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+i+(t?"":"$")}typeof globalThis.process<"u"&&(globalThis.location||={href:"http://localhost:8081/",protocol:"http:",host:"localhost:8081",pathname:"/",hostname:"localhost",reload:()=>{}},globalThis.localStorage||={_keys:{},setItem:(i,e)=>{globalThis.localStorage._keys[i]=e},getItem:i=>i in globalThis.localStorage._keys?globalThis.localStorage._keys[i]:null,removeItem:i=>{i in globalThis.localStorage._keys&&delete globalThis.localStorage._keys[i]}},globalThis.sessionStorage||=globalThis.localStorage,globalThis.navigator||={language:"en"});var at;(function(i){i[i.CONNECTING=0]="CONNECTING",i[i.CONNECTED=1]="CONNECTED",i[i.OBJECTS_LOADED=2]="OBJECTS_LOADED",i[i.READY=3]="READY"})(at||(at={}));var Se;(function(i){i.PERMISSION_ERROR="permissionError",i.NOT_CONNECTED="notConnectedError",i.TIMEOUT="timeout",i.NOT_ADMIN="Allowed only in admin",i.NOT_SUPPORTED="Not supported"})(Se||(Se={}));const Kje=Se.PERMISSION_ERROR;Se.NOT_CONNECTED;const DN=["material","echarts","vis"];class Ee{props;connId;lastAccessToken=null;ignoreState="";connected=!1;subscribed=!1;firstConnect=!0;waitForRestart=!1;loaded=!1;simStates={};objectViewCached;constructor(e){this.props=this.applyDefaultProps(e),this.connId=`${this.props.name?`${this.props.name}-`:""}${Math.round(Math.random()*1e6).toString().padStart(6,"0")}`,this.waitForSocketLib().then(()=>this.startSocket()).catch(t=>{alert(`Socket connection could not be initialized: ${t}`)})}applyDefaultProps(e){return{...e,protocol:e.protocol||globalThis.location.protocol,host:e.host||globalThis.location.hostname,port:e.port||(globalThis.location.port==="3000"?8081:globalThis.location.port),ioTimeout:Math.max(e.ioTimeout||2e4,2e4),cmdTimeout:Math.max(e.cmdTimeout||5e3,5e3),admin5only:e.admin5only||!1,autoSubscribes:e.autoSubscribes??[],autoSubscribeLog:e.autoSubscribeLog??!1,doNotLoadACL:e.doNotLoadACL??!0,doNotLoadAllObjects:e.doNotLoadAllObjects??!0}}statesSubscribes={};filesSubscribes={};objectsSubscribes={};objects={};states={};acl=null;isSecure=!1;onReadyDone=!1;onConnectionHandlers=[];onLogHandlers=[];onCmdStdoutHandler;onCmdStderrHandler;onCmdExitHandler;onError(e){(this.props.onError??console.error)(e)}_socket;_waitForSocketPromise;_waitForFirstConnectionPromise=yN();_instanceSubscriptions={};_promises={};_authTimer=null;_refreshTimer=null;_systemConfig;get systemConfig(){return this._systemConfig}systemLang="en";static isWeb(){return globalThis.socketUrl!==void 0}waitForSocketLib(){return this._waitForSocketPromise?this._waitForSocketPromise:(this._waitForSocketPromise=new Promise(async(e,t)=>{if(this.props.connect){e();return}if(typeof globalThis.io>"u"&&typeof globalThis.iob>"u")if(typeof globalThis.registerSocketOnLoad=="function")globalThis.registerSocketOnLoad(()=>e());else{for(let s=1;s<=30;s++){if(globalThis.io||globalThis.iob)return e();await EM(100)}t(new Error("Socket library could not be loaded!"))}else e()}),this._waitForSocketPromise)}async startSocket(){if(this._socket)return;let e=this.props.host,t=this.props.port,s=(this.props.protocol||globalThis.location.protocol).replace(":",""),r=globalThis.location.pathname;if(globalThis.location.hostname==="iobroker.net"||globalThis.location.hostname==="iobroker.pro")r="";else{if(globalThis.socketUrl){const u=new globalThis.URL(globalThis.socketUrl);e=u.hostname,t=u.port,s=u.protocol.replace(":","")}const a=r.lastIndexOf("/");if(a!==-1&&(r=r.substring(0,a+1)),Ee.isWeb()){const u=r.split("/");u.length>2&&(u.pop(),u.pop(),DN.includes(u[u.length-1])&&u.pop(),r=u.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?`${s}://${e}:${t}`:`${s}://${e}`,M=this.props.connect||(globalThis.io||globalThis.iob).connect;return this._socket=M(o,{path:r.endsWith("/")?`${r}socket.io`:`${r}/socket.io`,query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid,token:this.props.token}),this._socket.on("connect",a=>{var l;(l=globalThis.addEventListener)==null||l.call(globalThis,"storage",this.onAccessTokenUpdated);const u=Ee.readTokens();if(u&&!u.owner){const N=Date.now();this.saveTokens({access_token:u.access_token,refresh_token:u.refresh_token,expires_in:Math.round((u.expires_in.getTime()-N)/1e3),refresh_token_expires_in:Math.round((u.refresh_token_expires_in.getTime()-N)/1e3),token_type:"Bearer"},u.stayLoggedIn)}this.onReadyDone=!1,a!==!0?(this.connected=!0,setTimeout(()=>this.getVersion().then(N=>{const[c,L,j]=N.version.split(".");parseInt(c,10)*1e4+parseInt(L,10)*100+parseInt(j,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",(y,d)=>this.onPreConnect(y,d))}).catch(N=>this.onError({message:N.toString(),operation:"getVersion"})),500)):this._socket.emit("authenticate",(N,c)=>{this.onPreConnect(N,c)})}),this._socket.on("reconnect",()=>{var a,u;this.onReadyDone=!1,(u=(a=this.props).onProgress)==null||u.call(a,at.READY),this.connected=!0,this.waitForRestart?globalThis.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach(l=>l(!0)))}),this._socket.on("disconnect",()=>{var a,u;this.onReadyDone=!1,this.connected=!1,this.subscribed=!1,(u=(a=this.props).onProgress)==null||u.call(a,at.CONNECTING),this.onConnectionHandlers.forEach(l=>l(!1))}),this._socket.on("reauthenticate",()=>this.authenticate()),this._socket.on("log",a=>{var u,l;(l=(u=this.props).onLog)==null||l.call(u,a),this.onLogHandlers.forEach(N=>N(a))}),this._socket.on("error",a=>{let u;a==null?u="":typeof a.toString=="function"?u=a.toString():(u=JSON.stringify(a),console.error(`Received strange error: ${u}`)),u.includes("User not authorized")?this.authenticate():u.includes("websocket error")?(console.error(`Socket Error => reload: ${a}`),globalThis.location.reload()):console.error(`Socket Error: ${a}`)}),this._socket.on("connect_error",a=>console.error(`Connect error: ${a}`)),this._socket.on("permissionError",a=>this.onError({message:"no permission",operation:a.operation,type:a.type,id:a.id||""})),this._socket.on("objectChange",(a,u)=>{setTimeout(()=>this.objectChange(a,u),0)}),this._socket.on("stateChange",(a,u)=>{setTimeout(()=>this.stateChange(a,u),0)}),this._socket.on("im",(a,u,l)=>{setTimeout(()=>this.instanceMessage(a,u,l),0)}),this._socket.on("fileChange",(a,u,l)=>{setTimeout(()=>this.fileChange(a,u,l),0)}),this._socket.on("cmdStdout",(a,u)=>{var l;(l=this.onCmdStdoutHandler)==null||l.call(this,a,u)}),this._socket.on("cmdStderr",(a,u)=>{var l;(l=this.onCmdStderrHandler)==null||l.call(this,a,u)}),this._socket.on("cmdExit",(a,u)=>{var l;(l=this.onCmdExitHandler)==null||l.call(this,a,u)}),Promise.resolve()}onPreConnect(e,t){var s,r;this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?globalThis.location.reload():(this.firstConnect?this.loadData().catch(o=>{console.error(`Cannot load data: ${o}`)}):(r=(s=this.props).onProgress)==null||r.call(s,at.READY),this._subscribe(!0),this.onConnectionHandlers.forEach(o=>o(!0)),this.checkAccessTokenExpire()),this._waitForFirstConnectionPromise.resolve()}static readTokens(){let e=globalThis.sessionStorage.getItem("iob_tokens");const t=!e;if(e||(e=globalThis.localStorage.getItem("iob_tokens")),!e)return null;const[s,r,o,M,a]=e.split(";"),u=new Date(r);return u.getTime(){if(e.key==="iob_tokens"){const t=Ee.readTokens();t&&(console.log(`Tab ${this.connId} received updated token: ${t.access_token}`),this.updateTokenExpiration(t.access_token))}};updateTokenExpiration(e){this.lastAccessToken!==e&&(this.lastAccessToken=e,this._socket.emit("updateTokenExpiration",e,(t,s)=>{t?(console.error(`[UPDATE/${new Date().toISOString()}] cannot say to server about new token: ${t}`),globalThis.location.reload()):s?console.log(`[UPDATE/${new Date().toISOString()}] server accepted new token: ${e}`):(console.error(`[UPDATE/${new Date().toISOString()}] cannot say to server about new token`),globalThis.location.reload())})),this.checkAccessTokenExpire()}refreshTokens(e,t){if(!e){console.log(`[REFRESH/${new Date().toISOString()}] No token structure found => reloading the page`),setTimeout(()=>globalThis.location.reload(),500);return}t||!e.owner||e.owner===this.connId?(console.log(`[REFRESH/${new Date().toISOString()}] claim ownership of the token`),this.acquireTokenLock()?(console.log(`[REFRESH/${new Date().toISOString()}] refreshing token`),fetch("./oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`grant_type=refresh_token&refresh_token=${e.refresh_token}&client_id=ioBroker&stayloggedin=${e.stayLoggedIn}`}).then(s=>{if(s.ok)return s.json();throw new Error("Cannot refresh access token")}).then(s=>{if(s.access_token)console.log(`[REFRESH/${new Date().toISOString()}] received new token: ${s.access_token}`),this.saveTokens(s,e.stayLoggedIn),this.releaseTokenLock(),this.updateTokenExpiration(s.access_token);else throw new Error("Cannot get access token")}).catch(s=>{console.warn(`[REFRESH/${new Date().toISOString()}] cannot refresh token: ${s}`),this.releaseTokenLock(),this.deleteTokens(e.stayLoggedIn),console.error(s),globalThis.location.reload()})):(console.log(`[REFRESH/${new Date().toISOString()}] Someone else is updating the token, so wait for the next check`),this.checkAccessTokenExpire())):this.lastAccessToken!==e.access_token&&this.updateTokenExpiration(e.access_token)}acquireTokenLock(){const e=Date.now(),t=globalThis.localStorage.getItem("iob_token_semaphore");if(t)try{const r=JSON.parse(t);if(e{r?(console.log(`[TOKEN/${new Date().toISOString()}] Token will be prolonged`),this.refreshTokens(e,s)):(console.log(`[TOKEN/${new Date().toISOString()}] Token will not be prolonged. Reloading the page`),setTimeout(()=>globalThis.location.reload(),Date.now()>t?500:t-Date.now()))})):(console.log(`[TOKEN/${new Date().toISOString()}] No tokenTimeoutHandler defined. Prolonging the token`),this.refreshTokens(e,s))):this.lastAccessToken!==e.access_token?(console.log(`[TOKEN/${new Date().toISOString()}] We are not the owner of the token, but we will inform the server about new token`),this.refreshTokens(e)):(console.log(`[TOKEN/${new Date().toISOString()}] We are not the owner of the token and the token did not change. Check in 3 seconds if the owner updated the token`),this._refreshTimer=setTimeout(()=>{this._refreshTimer=null,this.checkAccessTokenExpire()},3e3)):(console.log(`[TOKEN/${new Date().toISOString()}] We do not have a refresh token, so we need to reauthenticate`),setTimeout(()=>globalThis.location.reload(),Date.now()>t?500:t-Date.now()))}else this._refreshTimer=setTimeout(()=>{this._refreshTimer=null,this.checkAccessTokenExpire()},t-Date.now()-3e4>12e4?12e4:t-Date.now()-3e4)}}}static isCloud(){return globalThis.location.hostname.includes("amazonaws.com")||globalThis.location.hostname.includes("iobroker.in")?!0:typeof globalThis.socketUrl>"u"?!1:globalThis.socketUrl.includes("iobroker.in")||globalThis.socketUrl.includes("amazonaws")}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnectionPromise}async getUserPermissions(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getUserPermissions",(s,r)=>{s?t(s):e(r||null)})}})}async loadData(){if(this.loaded)return;const e=10;for(let t=1;t<=e;t++){if(this.doLoadData().catch(s=>console.error(`Cannot load data: ${s}`)),this.loaded)return;await EM(Ee.isCloud()?5e3:1e3)}}async doLoadData(){var e,t,s,r,o,M,a,u,l;if(!this.loaded){if(!this.props.doNotLoadACL)try{this.acl=await this.getUserPermissions()}catch(N){this.onError(`Cannot read user permissions: ${N}`);return}try{this.props.admin5only&&!Ee.isWeb()&&(!globalThis.vendorPrefix||globalThis.vendorPrefix==="@@vendorPrefix@@")?this._systemConfig=await this.getCompactSystemConfig():this._systemConfig=await this.getSystemConfig()}catch(N){this.onError(`Cannot read system config: ${N}`);return}this._systemConfig&&(this.systemLang=(e=this._systemConfig.common)==null?void 0:e.language,this.systemLang||(this.systemLang=globalThis.navigator.userLanguage||globalThis.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substring(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en"),this._systemConfig.common.language=this.systemLang)),(s=(t=this.props).onLanguage)==null||s.call(t,this.systemLang),this.loaded=!0,(o=(r=this.props).onProgress)==null||o.call(r,at.CONNECTED),this.firstConnect=!1,this.props.doNotLoadAllObjects?this.props.admin5only?this.objects={}:this.objects={"system.config":this._systemConfig}:this.objects=await this.getObjects(),(a=(M=this.props).onProgress)==null||a.call(M,at.READY),this.onReadyDone||(this.onReadyDone=!0,(l=(u=this.props).onReady)==null||l.call(u,this.objects))}}authenticate(){globalThis.location.search.includes("&href=")?globalThis.location.href=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname}${globalThis.location.search}`:globalThis.location.href=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname}?login&href=${encodeURIComponent(globalThis.location.search+globalThis.location.hash)}`}async subscribeState(...e){let t,s,r;e.length===3?[t,s,r]=e:([t,r]=e,s=!1);let o;if(Array.isArray(t)?o=t:o=[t],typeof r!="function")throw new Error("The state change handler must be a function!");const M=[];for(let a=0;aa.includes("*"))){let a;for(let u=0;uconsole.error(`Cannot call state change handler: ${L}`))}}}else try{const a=await(Ee.isWeb()?this.getStates(o):this.getForeignStates(o));if(a)for(const[u,l]of Object.entries(a)){const N=r(u,l);N instanceof Promise&&N.catch(c=>console.error(`Cannot call state change handler: ${c}`))}}catch(a){console.error(`Cannot getState "${o.join(", ")}": ${a.message}`);return}}async subscribeStateAsync(e,t){return this.subscribeState(e,t)}unsubscribeState(e,t){var o;let s;Array.isArray(e)?s=e:s=[e];const r=[];for(let M=0;M{try{const N=l(e,t,s);N instanceof Promise&&N.catch(c=>console.error(`Cannot call object change handler: ${c}`))}catch(N){console.error(`Error by callback of objectChange: ${N}`)}});if(r){const a=(M=(o=this.props).onObjectChange)==null?void 0:M.call(o,e,t);a instanceof Promise&&a.catch(u=>console.error(`Cannot call object change handler: ${u}`))}}stateChange(e,t){for(const s of Object.values(this.statesSubscribes))if(s.reg.test(e))for(const r of s.cbs)try{const o=r(e,t??null);o instanceof Promise&&o.catch(M=>console.error(`Cannot call state change handler: ${M}`))}catch(o){console.error(`Error by callback of stateChanged: ${o}`)}}instanceMessage(e,t,s){var r;(r=this._instanceSubscriptions[t])==null||r.forEach(o=>{if(o.messageType===e){const M=o.callback(s,t,e);M instanceof Promise&&M.catch(a=>console.error(`Cannot call instance message handler: ${a}`))}})}fileChange(e,t,s){for(const r of Object.values(this.filesSubscribes))if(r.regId.test(e)&&r.regFilePattern.test(t))for(const o of r.cbs)try{o(e,t,s)}catch(M){console.error(`Error by callback of fileChange: ${M}`)}}async subscribeFiles(e,t,s){if(typeof s!="function")throw new Error("The state change handler must be a function!");let r;Array.isArray(t)?r=t:r=[t];const o=[];for(let M=0;M{const c={elapsed:!1,clearTimeout:()=>{}};let L;s!==!1&&(L=setTimeout(()=>{c.elapsed=!0,r==null||r(),e&&this._promises[e]instanceof Promise&&delete this._promises[e],N(new Error(Se.TIMEOUT))},s??this.props.cmdTimeout),c.clearTimeout=()=>{clearTimeout(L)});try{await a(l,N,c)}catch(j){e&&this._promises[e]instanceof Promise&&delete this._promises[e],N(new Error(j.toString()))}});return e&&(this._promises[e]=u),u}resetCache(e,t){t?Object.keys(this._promises).filter(s=>s.startsWith(e)).forEach(s=>{delete this._promises[s]}):delete this._promises[e]}getStates(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getStates",e,(r,o)=>{this.states=o??{},r?s(r):t(this.states)})}})}getState(e){return this.request({commandTimeout:!1,executor:(t,s)=>{if(e&&e===this.ignoreState){t(this.simStates[e]||{val:null,ack:!0});return}this._socket.emit("getState",e,(r,o)=>{r?s(r):t(o)})}})}getBinaryState(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getBinaryState",e,(r,o)=>{r?s(r):t(o)})}})}setBinaryState(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("setBinaryState",e,t,o=>{o?r(o):s()})}})}setState(e,t,s){return typeof s=="boolean"&&(t={val:t,ack:s}),this.request({commandTimeout:!1,executor:(r,o)=>{if(e&&e===this.ignoreState){let M;if(typeof s=="boolean"||typeof t=="object"&&t.val!==void 0?M=t:M={val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=M,this.statesSubscribes[e])for(const a of this.statesSubscribes[e].cbs)try{const u=a(e,M);u instanceof Promise&&u.catch(l=>console.error(`Cannot call state change handler: ${l}`))}catch(u){console.error(`Error by callback of stateChanged: ${u}`)}r();return}this._socket.emit("setState",e,t,M=>{M?o(M):r()})}})}getObjects(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{if(!e&&this.objects){s(this.objects);return}this._socket.emit(Ee.isWeb()?"getObjects":"getAllObjects",(o,M)=>{var a,u;t||(u=(a=this.props).onProgress)==null||u.call(a,at.OBJECTS_LOADED),o?r(o):(this.objects=M??{},s(this.objects))})}})}getObjectsById(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getObjects",e,(r,o)=>{r?s(r):t(o)})}})}_subscribe(e){var t,s;if(e&&!this.subscribed){this.subscribed=!0,(t=this.props.autoSubscribes)!=null&&t.length&&this._socket.emit("subscribeObjects",this.props.autoSubscribes);const r=Object.keys(this.objectsSubscribes);r.length&&this._socket.emit("subscribeObjects",r),Object.keys(this.objectsSubscribes).forEach(o=>this._socket.emit("subscribeObjects",o)),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!0),Object.keys(this.statesSubscribes).forEach(o=>this._socket.emit("subscribe",o)),Object.keys(this.filesSubscribes).forEach(o=>{const[M,a]=o.split("$%$");this._socket.emit("subscribeFiles",M,a)})}else if(!e&&this.subscribed){this.subscribed=!1,(s=this.props.autoSubscribes)!=null&&s.length&&this._socket.emit("unsubscribeObjects",this.props.autoSubscribes);const r=Object.keys(this.objectsSubscribes);r.length&&this._socket.emit("unsubscribeObjects",r),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach(o=>this._socket.emit("unsubscribe",o)),Object.keys(this.filesSubscribes).forEach(o=>{const[M,a]=o.split("$%$");this._socket.emit("unsubscribeFiles",M,a)})}}requireLog(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("requireLog",e,r=>{r?s(r):t()})}})}delObject(e,t=!1){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("delObject",e,{maintenance:t},o=>{o?r(o):s()})}})}delObjects(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("delObjects",e,{maintenance:t},o=>{o?r(o):s()})}})}setObject(e,t){return t?(t=JSON.parse(JSON.stringify(t)),delete t.from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("setObject",e,t,o=>{o?r(o):s()})}})):Promise.reject(new Error("Null object is not allowed"))}getObject(e){return this.request({commandTimeout:!1,executor:(t,s)=>{if(e&&e===this.ignoreState){t({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed"}});return}this._socket.emit("getObject",e,(r,o)=>{r?s(r):t(o)})}})}sendTo(e,t,s){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendTo",e,t,s,o=>{r(o)})}})}extendObject(e,t){return t?(t=JSON.parse(JSON.stringify(t)),delete t.from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("extendObject",e,t,o=>{o?r(o):s()})}})):Promise.reject(new Error("Null object is not allowed"))}registerLogHandler(e){this.onLogHandlers.includes(e)||this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);t!==-1&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){this.onConnectionHandlers.includes(e)||this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);t!==-1&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return this.request({cacheKey:`enums_${e||"all"}`,forceUpdate:t,commandTimeout:!1,executor:(s,r)=>{this._socket.emit("getObjectView","system","enum",{startkey:`enum.${e||""}`,endkey:e?`enum.${e}.香`:"enum.香"},(o,M)=>{if(o)r(o);else{const a={};if(M)for(let u=0;u{s||="",r||="香",this._socket.emit("getObjectView",e,t,{startkey:s,endkey:r},(a,u)=>{if(a)M(a);else{const l={};if(u&&u.rows)for(let N=0;N{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"香"},(s,r)=>{var o;s?t(s):e((o=r.rows)==null?void 0:o.map(M=>M.value).filter(M=>!!M))})}})}readDir(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("readDir",e,t,(o,M)=>{o?r(o):s(M)})}})}readFile(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit(s?"readFile64":"readFile",e,t,(M,a,u)=>{M?o(M):r({file:a,mimeType:u})})}})}writeFile64(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{if(typeof s=="string")this._socket.emit("writeFile",e,t,s,M=>{M?o(M):r()});else{const M=btoa(new Uint8Array(s).reduce((a,u)=>a+String.fromCharCode(u),""));this._socket.emit("writeFile64",e,t,M,a=>{a?o(a):r()})}}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("deleteFile",e,t,o=>{o?r(o):s()})}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("deleteFolder",e,t,o=>{o?r(o):s()})}})}rename(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,s,M=>{M?o(M):r()})}})}renameFile(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,s,M=>{M?o(M):r()})}})}cmdExec(e,t,s,r){return this.request({commandTimeout:r,executor:(o,M,a)=>{e=ht(e),this._socket.emit("cmdExec",e,s,t,u=>{a.elapsed||(a.clearTimeout(),u?M(u):o())})}})}getSystemConfig(e){return this.request({cacheKey:"systemConfig",forceUpdate:e,commandTimeout:!1,executor:async t=>{let s=await this.getObject("system.config");s??={},s.common??={},s.native??={},t(s)}})}getCompactSystemConfig(e){return this.request({cacheKey:"systemConfigCommon",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getCompactSystemConfig",(r,o)=>{r?s(r):(o??={},o.common??={},o.native??={},t(o))})}})}getForeignStates(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getForeignStates",e||"*",(r,o)=>{r?s(r):t(o??{})})}})}getForeignObjects(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("getForeignObjects",e||"*",t,(o,M)=>{o?r(o):s(M)})}})}setSystemConfig(e){return this.setObject("system.config",e)}getRawSocket(){return this._socket}getHistory(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("getHistory",e,t,(o,M)=>{o?r(o):s(M)})}})}getHistoryEx(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("getHistory",e,t,(o,M,a,u)=>{o?r(o):s({values:M,sessionId:u,step:a})})}})}getIpAddresses(e,t){return e=ht(e),this.request({cacheKey:`IPs_${e}`,forceUpdate:t,commandTimeout:!1,executor:async s=>{const r=await this.getObject(e);s((r==null?void 0:r.common.address)??[])}})}getVersion(e){return this.request({cacheKey:"version",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getVersion",(r,o,M)=>{r&&!o&&typeof r=="string"&&r.match(/\d+\.\d+\.\d+/)?t({version:r,serverName:"socketio"}):r?s(r):t({version:o,serverName:M})})}})}getWebServerName(){return this.request({cacheKey:"webName",commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getAdapterName",(s,r)=>{s?t(s):e(r)})}})}fileExists(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("fileExists",e,t,(o,M)=>{o?r(o):s(!!M)})}})}getCurrentUser(){return this.request({commandTimeout:!1,executor:e=>{this._socket.emit("authEnabled",(t,s)=>{e(s)})}})}getUuid(){return this.request({cacheKey:"uuid",commandTimeout:!1,executor:async e=>{var s;const t=await this.getObject("system.meta.uuid");e((s=t==null?void 0:t.native)==null?void 0:s.uuid)}})}checkFeatureSupported(e,t){return this.request({cacheKey:`supportedFeatures_${e}`,forceUpdate:t,commandTimeout:!1,executor:(s,r)=>{this._socket.emit("checkFeatureSupported",e,(o,M)=>{o?r(o):s(M)})}})}getAdapterInstances(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",this.request({cacheKey:`instances_${e}`,forceUpdate:t,commandTimeout:!1,executor:async s=>{const r=e?`system.adapter.${e}.`:"system.adapter.",o=`${r}香`,M=await this.getObjectViewSystem("instance",r,o),a=Object.values(M);s(e?a.filter(u=>u.common.name===e):a)}})}getAdapters(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",this.request({cacheKey:`adapter_${e}`,forceUpdate:t,commandTimeout:!1,executor:async s=>{const r=await this.getObjectViewSystem("adapter",`system.adapter.${e||""}`,`system.adapter.${e||"香"}`),o=Object.values(r);s(e?o.filter(M=>M.common.name===e):o)}})}getGroups(e){return this.request({cacheKey:"groups",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.香"},(r,o)=>{r?s(r):t(Vr(o))})}})}logout(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("logout",s=>{s?t(s):e(null)})}})}subscribeOnInstance(e,t,s,r){return this.request({commandTimeout:!1,executor:(o,M)=>{this._socket.emit("clientSubscribe",e,t,s,(a,u)=>{a?M(a):u&&(u.error?M(u.error):(e.startsWith("system.adapter.")||(e=`system.adapter.${e}`),this._instanceSubscriptions[e]=this._instanceSubscriptions[e]||[],this._instanceSubscriptions[e].find(l=>l.messageType===t&&l.callback===r)||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(u)))})}})}unsubscribeFromInstance(e,t,s){var M;e.startsWith("system.adapter.")||(e=`system.adapter.${e}`);let r;const o=[];do{r=!1;const a=(M=this._instanceSubscriptions[e])==null?void 0:M.findIndex(u=>(!t||u.messageType===t)&&(!s||u.callback===s));if(a!=null&&a!==-1){r=!0;const u=this._instanceSubscriptions[e][a].messageType;this._instanceSubscriptions[e].splice(a,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e],this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find(N=>N.messageType===u)||o.push(this.request({commandTimeout:!1,executor:(N,c)=>{this._socket.emit("clientUnsubscribe",e,t,(L,j)=>L?c(L):N(j))}}))}}while(r&&(!s||!t));return o.length?Promise.all(o).then(a=>!!a.find(u=>u)):Promise.resolve(!1)}log(e,t){return e?this.request({commandTimeout:!1,executor:s=>(this._socket.emit("log",e,t),s(null))}):Promise.resolve(null)}setStateToIgnore(e){this.ignoreState=e}destroy(){var e;if(this._socket){const t=this._socket;try{typeof t.destroy=="function"?t.destroy():typeof t.close=="function"&&t.close(!0)}catch{}}(e=globalThis.removeEventListener)==null||e.call(globalThis,"storage",this.onAccessTokenUpdated),this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this._refreshTimer&&(clearTimeout(this._refreshTimer),this._refreshTimer=null),this.onConnectionHandlers.length=0,this.onLogHandlers.length=0;for(const t of Object.keys(this.statesSubscribes))delete this.statesSubscribes[t];for(const t of Object.keys(this.objectsSubscribes))delete this.objectsSubscribes[t];for(const t of Object.keys(this.filesSubscribes))delete this.filesSubscribes[t];this._instanceSubscriptions={},this.connected=!1,this.onReadyDone=!1}}function dN(i,e){if(!e)return;let t;if(e.length<700&&(e.indexOf("/")!==-1||e.indexOf("\\")!==-1))if(i.toLowerCase().includes("private"))t="private";else if(e.toLowerCase().includes("private"))t="private";else if(i.toLowerCase().includes("public"))t="public";else if(e.toLowerCase().includes("public"))t="public";else if(i.toLowerCase().includes("chain"))t="chained";else if(e.toLowerCase().includes("chain"))t="chained";else return;else t=e.substring(0,26)==="-----BEGIN RSA PRIVATE KEY"||e.substring(0,22)==="-----BEGIN PRIVATE KEY"?"private":"public",t==="public"&&e.split("-----END CERTIFICATE-----").filter(r=>r.replace(/\r\n|\r|\n/,"").trim()).length>1&&(t="chained");return{name:i,type:t}}function zN(i){var s,r,o,M;const e=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],t=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if((r=(s=i.native)==null?void 0:s.hardware)!=null&&r.networkInterfaces){const a=(M=(o=i.native)==null?void 0:o.hardware)==null?void 0:M.networkInterfaces;Object.keys(a).forEach(u=>{var l;(l=a[u])==null||l.forEach(N=>{N.family!=="IPv6"?e.push({name:`[${N.family}] ${N.address} - ${u}`,address:N.address,family:"ipv4"}):t.push({name:`[${N.family}] ${N.address} - ${u}`,address:N.address,family:"ipv6"})})})}return{IPs4:e,IPs6:t}}class qje extends Ee{constructor(e){super(e)}request(e){return super.request({requireAdmin:!0,...e})}getCertificates(e){return this.request({cacheKey:"cert",forceUpdate:e,commandTimeout:!1,executor:async t=>{var r;const s=await this.getObject("system.certificates");(r=s==null?void 0:s.native)!=null&&r.certificates?t(Object.entries(s.native.certificates).map(([o,M])=>dN(o,M)).filter(o=>!!o)):t([])}})}getLogs(e,t=200){return this.request({commandTimeout:!1,executor:s=>{this._socket.emit("sendToHost",e,"getLogs",t||200,r=>{s(r)})}})}upgradeAdapterWithWebserver(e,t){return this.request({commandTimeout:!1,executor:s=>{this._socket.emit("sendToHost",e,"upgradeAdapterWithWebserver",t,r=>{s(r)})}})}upgradeController(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("sendToHost",e,"upgradeController",{version:t,adminInstance:s},M=>{const a=M;a.error?o(a.error):r(a.result)})}})}updateLicenses(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("updateLicenses",e,t,(o,M)=>{o?r(o):s(M)})}})}upgradeOsPackages(e,t,s){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendToHost",e,"upgradeOsPackages",{packages:t,restart:!!s},o=>{r(o)})}})}getLogsFiles(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("readLogs",e,(r,o)=>{r&&s(r),t(o)})}})}delLogs(e){return this.request({commandTimeout:!1,executor:(t,s)=>{this._socket.emit("sendToHost",e,"delLogs",null,r=>{r&&s(r),t()})}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("deleteFile",e,t,o=>{o&&r(o),s()})}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(s,r)=>{this._socket.emit("deleteFolder",e,t,o=>{o&&r(o),s()})}})}rename(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,s,M=>{M&&o(M),r()})}})}renameFile(e,t,s){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,s,M=>{M&&o(M),r()})}})}getHosts(e){return this.request({cacheKey:"hosts",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.香"},(r,o)=>{r?s(r):t(Vr(o))})}})}getUsers(e){return this.request({cacheKey:"users",forceUpdate:e,commandTimeout:!1,executor:(t,s)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.香"},(r,o)=>{r?s(r):t(Vr(o))})}})}renameGroup(e,t,s){return this.request({commandTimeout:!1,executor:async r=>{const o=await this.getGroups(!0),M=o.filter(u=>u._id.startsWith(`${e}.`));for(const u of M){const l=u._id,N=t+u._id.substring(e.length);u._id=N,await this.setObject(N,u),await this.delObject(l)}const a=o.find(u=>u._id===e);if(a){const u=a._id;a._id=t,s!==void 0&&(a.common??={},a.common.name=s),await this.setObject(t,a),await this.delObject(u)}r()}})}getHostInfo(e,t,s){return e=ht(e),this.request({cacheKey:`hostInfo_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("sendToHost",e,"getHostInfo",null,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getHostInfo"'):a?r(a):o('Cannot read "getHostInfo"'))})}})}getHostInfoShort(e,t,s){return e=ht(e),this.request({cacheKey:`hostInfoShort_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("sendToHost",e,"getHostInfoShort",null,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getHostInfoShort"'):a?r(a):o('Cannot read "getHostInfoShort"'))})}})}getRepository(e,t,s,r){return this.request({cacheKey:`repository_${e}`,forceUpdate:s,commandTimeout:r,executor:(o,M,a)=>{this._socket.emit("sendToHost",e,"getRepository",t,u=>{a.elapsed||(a.clearTimeout(),u===Se.PERMISSION_ERROR?M('May not read "getRepository"'):u?o(u):M('Cannot read "getRepository"'))})}})}getInstalled(e,t,s){return e=ht(e),this.request({cacheKey:`installed_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("sendToHost",e,"getInstalled",null,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getInstalled"'):a?r(a):o('Cannot read "getInstalled"'))})}})}cmdExec(e,t,s,r){return this.request({commandTimeout:r,executor:(o,M,a)=>{e=ht(e),this._socket.emit("cmdExec",e,s,t,u=>{a.elapsed||(a.clearTimeout(),u&&M(u),o())})}})}readBaseSettings(e){return e=Ps(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(t,s,r)=>{this._socket.emit("sendToHost",e,"readBaseSettings",null,o=>{r.elapsed||(r.clearTimeout(),o===Se.PERMISSION_ERROR?s('May not read "BaseSettings"'):o?o.error?s(new Error(o.error)):t(o):s('Cannot read "BaseSettings"'))})}})}writeBaseSettings(e,t){return e=Ps(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(s,r,o)=>{this._socket.emit("sendToHost",e,"writeBaseSettings",t,M=>{o.elapsed||(o.clearTimeout(),M===Se.PERMISSION_ERROR?r('May not write "BaseSettings"'):M?s(M):r('Cannot write "BaseSettings"'))})}})}restartController(e){return e=Ps(e),this.request({executor:(t,s,r)=>{this._socket.emit("sendToHost",e,"restartController",null,()=>{r.elapsed||(r.clearTimeout(),t(!0))})}})}getDiagData(e,t){return e=Ps(e),this.request({executor:(s,r,o)=>{this._socket.emit("sendToHost",e,"getDiagData",t,M=>{o.elapsed||(o.clearTimeout(),s(M||null))})}})}changePassword(e,t){return this.request({executor:(s,r,o)=>{this._socket.emit("changePassword",e,t,M=>{o.elapsed||(o.clearTimeout(),M&&r(M),s())})}})}getIpAddresses(e,t){return e=ht(e),this.request({cacheKey:`IPs_${e}`,forceUpdate:t,commandTimeout:!1,executor:async s=>{const r=await this.getObject(e);s((r==null?void 0:r.common.address)??[])}})}getHostByIp(e,t){return e=Ps(e),this.request({cacheKey:`rIPs_${e}`,forceUpdate:t,executor:(s,r,o)=>{this._socket.emit("getHostByIp",e,(M,a)=>{if(o.elapsed)return;o.clearTimeout();const{IPs4:u,IPs6:l}=zN(a);s([...u,...l])})}})}encrypt(e){return this.request({executor:(t,s,r)=>{this._socket.emit("encrypt",e,(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}decrypt(e){return this.request({executor:(t,s,r)=>{this._socket.emit("decrypt",e,(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}chmodFile(e,t,s){return this.request({executor:(r,o,M)=>{this._socket.emit("chmodFile",e,t,s,(a,u)=>{M.elapsed||(M.clearTimeout(),a&&o(a),r(u))})}})}chownFile(e,t,s){return this.request({executor:(r,o,M)=>{this._socket.emit("chownFile",e,t,s,(a,u)=>{M.elapsed||(M.clearTimeout(),a&&o(a),r(u))})}})}getNotifications(e,t){return this.request({executor:(s,r,o)=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},M=>{o.elapsed||(o.clearTimeout(),s(M))})}})}clearNotifications(e,t){return this.request({executor:(s,r,o)=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},M=>{o.elapsed||(o.clearTimeout(),s(M))})}})}getIsEasyModeStrict(){return this.request({executor:(e,t,s)=>{this._socket.emit("getIsEasyModeStrict",(r,o)=>{s.elapsed||(s.clearTimeout(),r&&t(r),e(!!o))})}})}getEasyMode(){return this.request({executor:(e,t,s)=>{this._socket.emit("getEasyMode",(r,o)=>{s.elapsed||(s.clearTimeout(),r?t(new Error(r)):e(o))})}})}getRatings(e){return this.request({executor:(t,s,r)=>{this._socket.emit("getRatings",!!e,(o,M)=>{r.elapsed||(r.clearTimeout(),o?s(new Error(o)):t(M))})}})}getCurrentSession(e){const t=new AbortController;return this.request({commandTimeout:e||5e3,onTimeout:()=>{t.abort()},executor:async(s,r,o)=>{try{const M=await fetch("./session",{signal:t.signal});if(o.elapsed)return;o.clearTimeout();const a=await M.json();s(a)}catch(M){r(`getCurrentSession: ${M}`)}}})}getCurrentInstance(){return this.request({cacheKey:"currentInstance",executor:(e,t,s)=>{this._socket.emit("getCurrentInstance",(r,o)=>{s.elapsed||(s.clearTimeout(),r?t(r):e(o))})}})}getAdapterInstances(e,t){let s;return typeof e=="boolean"?(t=e,s=""):s=e||"",this.request({cacheKey:`instances_${s}`,forceUpdate:t,executor:(r,o,M)=>{this._socket.emit("getAdapterInstances",s,(a,u)=>{M.elapsed||(M.clearTimeout(),a&&o(a),r(u))})}})}getAdapters(e,t){let s;return typeof e=="boolean"?(t=e,s=""):s=e||"",this.request({cacheKey:`adapter_${s}`,forceUpdate:t,executor:(r,o,M)=>{this._socket.emit("getAdapters",s,(a,u)=>{M.elapsed||(M.clearTimeout(),a&&o(a),r(u))})}})}getCompactAdapters(e){return this.request({cacheKey:"compactAdapters",forceUpdate:e,executor:(t,s,r)=>{this._socket.emit("getCompactAdapters",(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}getAdaptersResetCache(e){e=e??"",this.resetCache(`adapter_${e}`),this.resetCache("compactAdapters")}getCompactInstances(e){return this.request({cacheKey:"compactInstances",forceUpdate:e,executor:(t,s,r)=>{this._socket.emit("getCompactInstances",(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}getAdapterInstancesResetCache(e){e=e??"",this.resetCache(`instances_${e}`),this.resetCache("compactInstances")}getCompactInstalled(e,t,s){return e=ht(e),this.request({cacheKey:`installedCompact_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("getCompactInstalled",e,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getCompactInstalled"'):a?r(a):o('Cannot read "getCompactInstalled"'))})}})}getInstalledResetCache(e){e?(this.resetCache(`installedCompact_${e}`),this.resetCache(`installed_${e}`)):(this.resetCache("installedCompact_",!0),this.resetCache("installed_",!0))}getCompactRepository(e,t,s){return e=ht(e),this.request({cacheKey:`repositoryCompact_${e}`,forceUpdate:t,commandTimeout:s,executor:(r,o,M)=>{this._socket.emit("getCompactRepository",e,a=>{M.elapsed||(M.clearTimeout(),a===Se.PERMISSION_ERROR?o('May not read "getCompactRepository"'):a?r(a):o('Cannot read "getCompactRepository"'))})}})}getRepositoryResetCache(e){e?(this.resetCache(`repositoryCompact_${e}`),this.resetCache(`repository_${e}`)):(this.resetCache("repositoryCompact_",!0),this.resetCache("repository_",!0))}getCompactHosts(e){return this.request({cacheKey:"hostsCompact",forceUpdate:e,executor:(t,s,r)=>{this._socket.emit("getCompactHosts",(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}getCompactSystemRepositories(e){return this.request({cacheKey:"repositoriesCompact",forceUpdate:e,executor:(t,s,r)=>{this._socket.emit("getCompactSystemRepositories",(o,M)=>{r.elapsed||(r.clearTimeout(),o&&s(o),t(M))})}})}}const V=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,oe=globalThis,is="10.49.0";function sr(){return ir(oe),oe}function ir(i){const e=i.__SENTRY__=i.__SENTRY__||{};return e.version=e.version||is,e[is]=e[is]||{}}function xs(i,e,t=oe){const s=t.__SENTRY__=t.__SENTRY__||{},r=s[is]=s[is]||{};return r[i]||(r[i]=e())}const hN=["debug","info","warn","error","log","assert","trace"],IN="Sentry Logger ",Ji={};function ks(i){if(!("console"in oe))return i();const e=oe.console,t={},s=Object.keys(Ji);s.forEach(r=>{const o=Ji[r];t[r]=e[r],e[r]=o});try{return i()}finally{s.forEach(r=>{e[r]=t[r]})}}function wN(){Jo().enabled=!0}function CN(){Jo().enabled=!1}function Ka(){return Jo().enabled}function AN(...i){Ro("log",...i)}function mN(...i){Ro("warn",...i)}function pN(...i){Ro("error",...i)}function Ro(i,...e){V&&Ka()&&ks(()=>{oe.console[i](`${IN}[${i}]:`,...e)})}function Jo(){return V?xs("loggerSettings",()=>({enabled:!1})):{enabled:!1}}const G={enable:wN,disable:CN,isEnabled:Ka,log:AN,warn:mN,error:pN},qa=50,rs="?",_M=/\(error: (.*)\)/,fM=/captureMessage|captureException/;function ec(...i){const e=i.sort((t,s)=>t[0]-s[0]).map(t=>t[1]);return(t,s=0,r=0)=>{const o=[],M=t.split(` -`);for(let a=s;a1024&&(u=u.slice(0,1024));const l=_M.test(u)?u.replace(_M,"$1"):u;if(!l.includes("Error: ")){for(const N of e){const c=N(l);if(c){o.push(c);break}}if(o.length>=qa+r)break}}return EN(o.slice(r))}}function ON(i){return Array.isArray(i)?ec(...i):i}function EN(i){if(!i.length)return[];const e=Array.from(i);return/sentryWrapped/.test(Ii(e).function||"")&&e.pop(),e.reverse(),fM.test(Ii(e).function||"")&&(e.pop(),fM.test(Ii(e).function||"")&&e.pop()),e.slice(0,qa).map(t=>({...t,filename:t.filename||Ii(e).filename,function:t.function||rs}))}function Ii(i){return i[i.length-1]||{}}const zr="";function Bt(i){try{return!i||typeof i!="function"?zr:i.name||zr}catch{return zr}}function SM(i){const e=i.exception;if(e){const t=[];try{return e.values.forEach(s=>{s.stacktrace.frames&&t.push(...s.stacktrace.frames)}),t}catch{return}}}function tc(i){return"__v_isVNode"in i&&i.__v_isVNode?"[VueVNode]":"[VueViewModel]"}const ki={},xM={};function ns(i,e){ki[i]=ki[i]||[],ki[i].push(e)}function as(i,e){if(!xM[i]){xM[i]=!0;try{e()}catch(t){V&&G.error(`Error while instrumenting ${i}`,t)}}}function st(i,e){const t=i&&ki[i];if(t)for(const s of t)try{s(e)}catch(r){V&&G.error(`Error while triggering instrumentation handler. -Type: ${i} -Name: ${Bt(s)} -Error:`,r)}}let hr=null;function _N(i){const e="error";ns(e,i),as(e,fN)}function fN(){hr=oe.onerror,oe.onerror=function(i,e,t,s,r){return st("error",{column:s,error:r,line:t,msg:i,url:e}),hr?hr.apply(this,arguments):!1},oe.onerror.__SENTRY_INSTRUMENTED__=!0}let Ir=null;function SN(i){const e="unhandledrejection";ns(e,i),as(e,xN)}function xN(){Ir=oe.onunhandledrejection,oe.onunhandledrejection=function(i){return st("unhandledrejection",i),Ir?Ir.apply(this,arguments):!0},oe.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}const sc=Object.prototype.toString;function rr(i){switch(sc.call(i)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return Gt(i,Error)}}function Ys(i,e){return sc.call(i)===`[object ${e}]`}function ic(i){return Ys(i,"ErrorEvent")}function kM(i){return Ys(i,"DOMError")}function kN(i){return Ys(i,"DOMException")}function At(i){return Ys(i,"String")}function Bo(i){return typeof i=="object"&&i!==null&&"__sentry_template_string__"in i&&"__sentry_template_values__"in i}function or(i){return i===null||Bo(i)||typeof i!="object"&&typeof i!="function"}function si(i){return Ys(i,"Object")}function Mr(i){return typeof Event<"u"&&Gt(i,Event)}function YN(i){return typeof Element<"u"&&Gt(i,Element)}function QN(i){return Ys(i,"RegExp")}function li(i){return!!(i!=null&&i.then&&typeof i.then=="function")}function vN(i){return si(i)&&"nativeEvent"in i&&"preventDefault"in i&&"stopPropagation"in i}function Gt(i,e){try{return i instanceof e}catch{return!1}}function rc(i){return!!(typeof i=="object"&&i!==null&&(i.__isVue||i._isVue||i.__v_isVNode))}function oc(i){return typeof Request<"u"&&Gt(i,Request)}const Go=oe,UN=80;function Mc(i,e={}){if(!i)return"";try{let t=i;const s=5,r=[];let o=0,M=0;const a=" > ",u=a.length;let l;const N=Array.isArray(e)?e:e.keyAttrs,c=!Array.isArray(e)&&e.maxStringLength||UN;for(;t&&o++1&&M+r.length*u+l.length>=c));)r.push(l),M+=l.length,t=t.parentNode;return r.reverse().join(a)}catch{return""}}function bN(i,e){const t=i,s=[];if(!(t!=null&&t.tagName))return"";if(Go.HTMLElement&&t instanceof HTMLElement&&t.dataset){if(t.dataset.sentryComponent)return t.dataset.sentryComponent;if(t.dataset.sentryElement)return t.dataset.sentryElement}s.push(t.tagName.toLowerCase());const r=e!=null&&e.length?e.filter(o=>t.getAttribute(o)).map(o=>[o,t.getAttribute(o)]):null;if(r!=null&&r.length)r.forEach(o=>{s.push(`[${o[0]}="${o[1]}"]`)});else{t.id&&s.push(`#${t.id}`);const o=t.className;if(o&&At(o)){const M=o.split(/\s+/);for(const a of M)s.push(`.${a}`)}}for(const o of["aria-label","type","name","title","alt"]){const M=t.getAttribute(o);M&&s.push(`[${o}="${M}"]`)}return s.join("")}function Fo(){try{return Go.document.location.href}catch{return""}}function $N(i,e=5){if(!Go.HTMLElement)return null;let t=i;for(let s=0;s"}}function QM(i){return typeof i=="object"&&i!==null?Object.fromEntries(Object.entries(i)):{}}function PN(i){const e=Object.keys(ac(i));return e.sort(),e[0]?e.join(", "):"[object has no keys]"}let Ns;function nr(i){if(Ns!==void 0)return Ns?Ns(i):i();const e=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),t=oe;return e in t&&typeof t[e]=="function"?(Ns=t[e],Ns(i)):(Ns=null,i())}function Bi(){return nr(()=>Math.random())}function ar(){return nr(()=>Date.now())}function Zr(i,e=0){return typeof i!="string"||e===0||i.length<=e?i:`${i.slice(0,e)}...`}function vM(i,e){if(!Array.isArray(i))return"";const t=[];for(let s=0;sYi(i,s,t))}function WN(){const i=oe;return i.crypto||i.msCrypto}let wr;function RN(){return Bi()*16}function Ke(i=WN()){try{if(i!=null&&i.randomUUID)return nr(()=>i.randomUUID()).replace(/-/g,"")}catch{}return wr||(wr="10000000100040008000"+1e11),wr.replace(/[018]/g,e=>(e^(RN()&15)>>e/4).toString(16))}function cc(i){var e,t;return(t=(e=i.exception)==null?void 0:e.values)==null?void 0:t[0]}function es(i){const{message:e,event_id:t}=i;if(e)return e;const s=cc(i);return s?s.type&&s.value?`${s.type}: ${s.value}`:s.type||s.value||t||"":t||""}function Xr(i,e,t){const s=i.exception=i.exception||{},r=s.values=s.values||[],o=r[0]=r[0]||{};o.value||(o.value=e||""),o.type||(o.type="Error")}function Es(i,e){const t=cc(i);if(!t)return;const s={type:"generic",handled:!0},r=t.mechanism;if(t.mechanism={...s,...r,...e},e&&"data"in e){const o={...r==null?void 0:r.data,...e.data};t.mechanism.data=o}}function UM(i){if(JN(i))return!0;try{Ft(i,"__sentry_captured__",!0)}catch{}return!1}function JN(i){try{return i.__sentry_captured__}catch{}}const uc=1e3;function Ni(){return ar()/uc}function BN(){const{performance:i}=oe;if(!(i!=null&&i.now)||!i.timeOrigin)return Ni;const e=i.timeOrigin;return()=>(e+nr(()=>i.now()))/uc}let bM;function mt(){return(bM??(bM=BN()))()}function GN(i){const e=mt(),t={sid:Ke(),init:!0,timestamp:e,started:e,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>HN(t)};return i&&_s(t,i),t}function _s(i,e={}){if(e.user&&(!i.ipAddress&&e.user.ip_address&&(i.ipAddress=e.user.ip_address),!i.did&&!e.did&&(i.did=e.user.id||e.user.email||e.user.username)),i.timestamp=e.timestamp||mt(),e.abnormal_mechanism&&(i.abnormal_mechanism=e.abnormal_mechanism),e.ignoreDuration&&(i.ignoreDuration=e.ignoreDuration),e.sid&&(i.sid=e.sid.length===32?e.sid:Ke()),e.init!==void 0&&(i.init=e.init),!i.did&&e.did&&(i.did=`${e.did}`),typeof e.started=="number"&&(i.started=e.started),i.ignoreDuration)i.duration=void 0;else if(typeof e.duration=="number")i.duration=e.duration;else{const t=i.timestamp-i.started;i.duration=t>=0?t:0}e.release&&(i.release=e.release),e.environment&&(i.environment=e.environment),!i.ipAddress&&e.ipAddress&&(i.ipAddress=e.ipAddress),!i.userAgent&&e.userAgent&&(i.userAgent=e.userAgent),typeof e.errors=="number"&&(i.errors=e.errors),e.status&&(i.status=e.status)}function FN(i,e){let t={};i.status==="ok"&&(t={status:"exited"}),_s(i,t)}function HN(i){return{sid:`${i.sid}`,init:i.init,started:new Date(i.started*1e3).toISOString(),timestamp:new Date(i.timestamp*1e3).toISOString(),status:i.status,errors:i.errors,did:typeof i.did=="number"||typeof i.did=="string"?`${i.did}`:void 0,duration:i.duration,abnormal_mechanism:i.abnormal_mechanism,attrs:{release:i.release,environment:i.environment,ip_address:i.ipAddress,user_agent:i.userAgent}}}function Li(i,e,t=2){if(!e||typeof e!="object"||t<=0)return e;if(i&&Object.keys(e).length===0)return i;const s={...i};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(s[r]=Li(s[r],e[r],t-1));return s}function $M(){return Ke()}function lc(){return Ke().substring(16)}const Kr="_sentrySpan";function PM(i,e){e?Ft(i,Kr,e):delete i[Kr]}function WM(i){return i[Kr]}const VN=100;class pt{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:$M(),sampleRand:Bi()}}clone(){const e=new pt;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._attributes={...this._attributes},e._extra={...this._extra},e._contexts={...this._contexts},this._contexts.flags&&(e._contexts.flags={values:[...this._contexts.flags.values]}),e._user=this._user,e._level=this._level,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e._lastEventId=this._lastEventId,e._conversationId=this._conversationId,PM(e,WM(this)),e}setClient(e){this._client=e}setLastEventId(e){this._lastEventId=e}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&_s(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}setConversationId(e){return this._conversationId=e||void 0,this._notifyScopeListeners(),this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this.setTags({[e]:t})}setAttributes(e){return this._attributes={...this._attributes,...e},this._notifyScopeListeners(),this}setAttribute(e,t){return this.setAttributes({[e]:t})}removeAttribute(e){return e in this._attributes&&(delete this._attributes[e],this._notifyScopeListeners()),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return t===null?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;const t=typeof e=="function"?e(this):e,s=t instanceof pt?t.getScopeData():si(t)?e:void 0,{tags:r,attributes:o,extra:M,user:a,contexts:u,level:l,fingerprint:N=[],propagationContext:c,conversationId:L}=s||{};return this._tags={...this._tags,...r},this._attributes={...this._attributes,...o},this._extra={...this._extra,...M},this._contexts={...this._contexts,...u},a&&Object.keys(a).length&&(this._user=a),l&&(this._level=l),N.length&&(this._fingerprint=N),c&&(this._propagationContext=c),L&&(this._conversationId=L),this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,this._conversationId=void 0,PM(this,void 0),this._attachments=[],this.setPropagationContext({traceId:$M(),sampleRand:Bi()}),this._notifyScopeListeners(),this}addBreadcrumb(e,t){var o;const s=typeof t=="number"?t:VN;if(s<=0)return this;const r={timestamp:Ni(),...e,message:e.message?Zr(e.message,2048):e.message};return this._breadcrumbs.push(r),this._breadcrumbs.length>s&&(this._breadcrumbs=this._breadcrumbs.slice(-s),(o=this._client)==null||o.recordDroppedEvent("buffer_overflow","log_item")),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:WM(this),conversationId:this._conversationId}}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata=Li(this._sdkProcessingMetadata,e,2),this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){const s=(t==null?void 0:t.event_id)||Ke();if(!this._client)return V&&G.warn("No client configured on scope - will not capture exception!"),s;const r=new Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:r,...t,event_id:s},this),s}captureMessage(e,t,s){const r=(s==null?void 0:s.event_id)||Ke();if(!this._client)return V&&G.warn("No client configured on scope - will not capture message!"),r;const o=(s==null?void 0:s.syntheticException)??new Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:o,...s,event_id:r},this),r}captureEvent(e,t){const s=e.event_id||(t==null?void 0:t.event_id)||Ke();return this._client?(this._client.captureEvent(e,{...t,event_id:s},this),s):(V&&G.warn("No client configured on scope - will not capture event!"),s)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}}function ZN(){return xs("defaultCurrentScope",()=>new pt)}function XN(){return xs("defaultIsolationScope",()=>new pt)}const RM=i=>i instanceof Promise&&!i[Nc],Nc=Symbol("chained PromiseLike"),KN=(i,e,t)=>{const s=i.then(r=>(e(r),r),r=>{throw t(r),r});return RM(s)&&RM(i)?s:qN(i,s)},qN=(i,e)=>{let t=!1;for(const s in i){if(s in e)continue;t=!0;const r=i[s];typeof r=="function"?Object.defineProperty(e,s,{value:(...o)=>r.apply(i,o),enumerable:!0,configurable:!0,writable:!0}):e[s]=r}return t&&Object.assign(e,{[Nc]:!0}),e};class e0{constructor(e,t){let s;e?s=e:s=new pt;let r;t?r=t:r=new pt,this._stack=[{scope:s}],this._isolationScope=r}withScope(e){const t=this._pushScope();let s;try{s=e(t)}catch(r){throw this._popScope(),r}return li(s)?KN(s,()=>this._popScope(),()=>this._popScope()):(this._popScope(),s)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const e=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:e}),e}_popScope(){return this._stack.length<=1?!1:!!this._stack.pop()}}function fs(){const i=sr(),e=ir(i);return e.stack=e.stack||new e0(ZN(),XN())}function t0(i){return fs().withScope(i)}function s0(i,e){const t=fs();return t.withScope(()=>(t.getStackTop().scope=i,e(i)))}function JM(i){return fs().withScope(()=>i(fs().getIsolationScope()))}function i0(){return{withIsolationScope:JM,withScope:t0,withSetScope:s0,withSetIsolationScope:(i,e)=>JM(e),getCurrentScope:()=>fs().getScope(),getIsolationScope:()=>fs().getIsolationScope()}}function Vo(i){const e=ir(i);return e.acs?e.acs:i0()}function Lt(){const i=sr();return Vo(i).getCurrentScope()}function cs(){const i=sr();return Vo(i).getIsolationScope()}function r0(){return xs("globalScope",()=>new pt)}function o0(...i){const e=sr(),t=Vo(e);if(i.length===2){const[s,r]=i;return s?t.withSetScope(s,r):t.withScope(r)}return t.withScope(i[0])}function ke(){return Lt().getClient()}function M0(i){const e=i.getPropagationContext(),{traceId:t,parentSpanId:s,propagationSpanId:r}=e,o={trace_id:t,span_id:r||lc()};return s&&(o.parent_span_id=s),o}const n0="sentry.source",a0="sentry.sample_rate",c0="sentry.previous_trace_sample_rate",u0="sentry.op",l0="sentry.origin",Lc="sentry.profile_id",jc="sentry.exclusive_time",N0="gen_ai.conversation.id",L0=0,j0=1;function g0(i){if(i){if(typeof i=="object"&&"deref"in i&&typeof i.deref=="function")try{return i.deref()}catch{return}return i}}const T0="_sentryScope",y0="_sentryIsolationScope";function gc(i){const e=i;return{scope:e[T0],isolationScope:g0(e[y0])}}const BM="sentry-";function D0(i){const e=d0(i);if(!e)return;const t=Object.entries(e).reduce((s,[r,o])=>{if(r.startsWith(BM)){const M=r.slice(BM.length);s[M]=o}return s},{});if(Object.keys(t).length>0)return t}function d0(i){if(!(!i||!At(i)&&!Array.isArray(i)))return Array.isArray(i)?i.reduce((e,t)=>{const s=GM(t);return Object.entries(s).forEach(([r,o])=>{e[r]=o}),e},{}):GM(i)}function GM(i){return i.split(",").map(e=>{const t=e.indexOf("=");if(t===-1)return[];const s=e.slice(0,t),r=e.slice(t+1);return[s,r].map(o=>{try{return decodeURIComponent(o.trim())}catch{return}})}).reduce((e,[t,s])=>(t&&s&&(e[t]=s),e),{})}const z0=/^o(\d+)\./,h0=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function I0(i){return i==="http"||i==="https"}function ji(i,e=!1){const{host:t,path:s,pass:r,port:o,projectId:M,protocol:a,publicKey:u}=i;return`${a}://${u}${e&&r?`:${r}`:""}@${t}${o?`:${o}`:""}/${s&&`${s}/`}${M}`}function w0(i){const e=h0.exec(i);if(!e){ks(()=>{console.error(`Invalid Sentry Dsn: ${i}`)});return}const[t,s,r="",o="",M="",a=""]=e.slice(1);let u="",l=a;const N=l.split("/");if(N.length>1&&(u=N.slice(0,-1).join("/"),l=N.pop()),l){const c=l.match(/^\d+/);c&&(l=c[0])}return Tc({host:o,pass:r,path:u,projectId:l,port:M,protocol:t,publicKey:s})}function Tc(i){return{protocol:i.protocol,publicKey:i.publicKey||"",pass:i.pass||"",host:i.host,port:i.port||"",path:i.path||"",projectId:i.projectId}}function C0(i){if(!V)return!0;const{port:e,projectId:t,protocol:s}=i;return["protocol","publicKey","host","projectId"].find(M=>i[M]?!1:(G.error(`Invalid Sentry Dsn: ${M} missing`),!0))?!1:t.match(/^\d+$/)?I0(s)?e&&isNaN(parseInt(e,10))?(G.error(`Invalid Sentry Dsn: Invalid port ${e}`),!1):!0:(G.error(`Invalid Sentry Dsn: Invalid protocol ${s}`),!1):(G.error(`Invalid Sentry Dsn: Invalid projectId ${t}`),!1)}function A0(i){const e=i.match(z0);return e==null?void 0:e[1]}function m0(i){const e=i.getOptions(),{host:t}=i.getDsn()||{};let s;return e.orgId?s=String(e.orgId):t&&(s=A0(t)),s}function p0(i){const e=typeof i=="string"?w0(i):Tc(i);if(!(!e||!C0(e)))return e}function O0(i){if(typeof i=="boolean")return Number(i);const e=typeof i=="string"?parseFloat(i):i;if(!(typeof e!="number"||isNaN(e)||e<0||e>1))return e}const yc=1;let FM=!1;function E0(i){const{spanId:e,traceId:t,isRemote:s}=i.spanContext(),r=s?e:ur(i).parent_span_id,o=gc(i).scope,M=s?(o==null?void 0:o.getPropagationContext().propagationSpanId)||lc():e;return{parent_span_id:r,span_id:M,trace_id:t}}function _0(i){if(i&&i.length>0)return i.map(({context:{spanId:e,traceId:t,traceFlags:s,...r},attributes:o})=>({span_id:e,trace_id:t,sampled:s===yc,attributes:o,...r}))}function HM(i){return typeof i=="number"?VM(i):Array.isArray(i)?i[0]+i[1]/1e9:i instanceof Date?VM(i.getTime()):mt()}function VM(i){return i>9999999999?i/1e3:i}function ur(i){if(x0(i))return i.getSpanJSON();const{spanId:e,traceId:t}=i.spanContext();if(S0(i)){const{attributes:s,startTime:r,name:o,endTime:M,status:a,links:u}=i;return{span_id:e,trace_id:t,data:s,description:o,parent_span_id:f0(i),start_timestamp:HM(r),timestamp:HM(M)||void 0,status:Y0(a),op:s[u0],origin:s[l0],links:_0(u)}}return{span_id:e,trace_id:t,start_timestamp:0,data:{}}}function f0(i){var e;return"parentSpanId"in i?i.parentSpanId:"parentSpanContext"in i?(e=i.parentSpanContext)==null?void 0:e.spanId:void 0}function S0(i){const e=i;return!!e.attributes&&!!e.startTime&&!!e.name&&!!e.endTime&&!!e.status}function x0(i){return typeof i.getSpanJSON=="function"}function k0(i){const{traceFlags:e}=i.spanContext();return e===yc}function Y0(i){if(!(!i||i.code===L0))return i.code===j0?"ok":i.message||"internal_error"}const Q0="_sentryRootSpan",Dc=v0;function v0(i){return i[Q0]||i}function ZM(){FM||(ks(()=>{console.warn("[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.")}),FM=!0)}function U0(i){var t;if(typeof __SENTRY_TRACING__=="boolean"&&!__SENTRY_TRACING__)return!1;const e=(t=ke())==null?void 0:t.getOptions();return!!e&&(e.tracesSampleRate!=null||!!e.tracesSampler)}function XM(i){G.log(`Ignoring span ${i.op} - ${i.description} because it matches \`ignoreSpans\`.`)}function KM(i,e){if(!(e!=null&&e.length)||!i.description)return!1;for(const t of e){if($0(t)){if(Yi(i.description,t))return V&&XM(i),!0;continue}if(!t.name&&!t.op)continue;const s=t.name?Yi(i.description,t.name):!0,r=t.op?i.op&&Yi(i.op,t.op):!0;if(s&&r)return V&&XM(i),!0}return!1}function b0(i,e){const t=e.parent_span_id,s=e.span_id;if(t)for(const r of i)r.parent_span_id===s&&(r.parent_span_id=t)}function $0(i){return typeof i=="string"||i instanceof RegExp}const Zo="production",P0="_frozenDsc";function dc(i,e){const t=e.getOptions(),{publicKey:s}=e.getDsn()||{},r={environment:t.environment||Zo,release:t.release,public_key:s,trace_id:i,org_id:m0(e)};return e.emit("createDsc",r),r}function W0(i,e){const t=e.getPropagationContext();return t.dsc||dc(t.traceId,i)}function R0(i){var g;const e=ke();if(!e)return{};const t=Dc(i),s=ur(t),r=s.data,o=t.spanContext().traceState,M=(o==null?void 0:o.get("sentry.sample_rate"))??r[a0]??r[c0];function a(y){return(typeof M=="number"||typeof M=="string")&&(y.sample_rate=`${M}`),y}const u=t[P0];if(u)return a(u);const l=o==null?void 0:o.get("sentry.dsc"),N=l&&D0(l);if(N)return a(N);const c=dc(i.spanContext().traceId,e),L=r[n0]??r["sentry.span.source"],j=s.description;return L!=="url"&&j&&(c.transaction=j),U0()&&(c.sampled=String(k0(t)),c.sample_rand=(o==null?void 0:o.get("sentry.sample_rand"))??((g=gc(t).scope)==null?void 0:g.getPropagationContext().sampleRand.toString())),a(c),e.emit("createDsc",c,t),c}function J0(i){return!!i&&typeof i=="function"&&"_streamed"in i&&!!i._streamed}function It(i,e=100,t=1/0){try{return qr("",i,e,t)}catch(s){return{ERROR:`**non-serializable** (${s})`}}}function zc(i,e=3,t=100*1024){const s=It(i,e);return H0(s)>t?zc(i,e-1,t):s}function qr(i,e,t=1/0,s=1/0,r=V0()){const[o,M]=r;if(e==null||["boolean","string"].includes(typeof e)||typeof e=="number"&&Number.isFinite(e))return e;const a=B0(i,e);if(!a.startsWith("[object "))return a;if(e.__sentry_skip_normalization__)return e;const u=typeof e.__sentry_override_normalization_depth__=="number"?e.__sentry_override_normalization_depth__:t;if(u===0)return a.replace("object ","");if(o(e))return"[Circular ~]";const l=e;if(l&&typeof l.toJSON=="function")try{const j=l.toJSON();return qr("",j,u-1,s,r)}catch{}const N=Array.isArray(e)?[]:{};let c=0;const L=ac(e);for(const j in L){if(!Object.prototype.hasOwnProperty.call(L,j))continue;if(c>=s){N[j]="[MaxProperties ~]";break}const g=L[j];N[j]=qr(j,g,u-1,s,r),c++}return M(e),N}function B0(i,e){try{if(i==="domain"&&e&&typeof e=="object"&&e._events)return"[Domain]";if(i==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&e===global)return"[Global]";if(typeof window<"u"&&e===window)return"[Window]";if(typeof document<"u"&&e===document)return"[Document]";if(rc(e))return tc(e);if(vN(e))return"[SyntheticEvent]";if(typeof e=="number"&&!Number.isFinite(e))return`[${e}]`;if(typeof e=="function")return`[Function: ${Bt(e)}]`;if(typeof e=="symbol")return`[${String(e)}]`;if(typeof e=="bigint")return`[BigInt: ${String(e)}]`;const t=G0(e);return/^HTML(\w*)Element$/.test(t)?`[HTMLElement: ${t}]`:`[object ${t}]`}catch(t){return`**non-serializable** (${t})`}}function G0(i){const e=Object.getPrototypeOf(i);return e!=null&&e.constructor?e.constructor.name:"null prototype"}function F0(i){return~-encodeURI(i).split(/%..|./).length}function H0(i){return F0(JSON.stringify(i))}function V0(){const i=new WeakSet;function e(s){return i.has(s)?!0:(i.add(s),!1)}function t(s){i.delete(s)}return[e,t]}function Qs(i,e=[]){return[i,e]}function Z0(i,e){const[t,s]=i;return[t,[...s,e]]}function eo(i,e){const t=i[1];for(const s of t){const r=s[0].type;if(e(s,r))return!0}return!1}function X0(i,e){return eo(i,(t,s)=>e.includes(s))}function to(i){const e=ir(oe);return e.encodePolyfill?e.encodePolyfill(i):new TextEncoder().encode(i)}function K0(i){const[e,t]=i;let s=JSON.stringify(e);function r(o){typeof s=="string"?s=typeof o=="string"?s+o:[to(s),o]:s.push(typeof o=="string"?to(o):o)}for(const o of t){const[M,a]=o;if(r(` -${JSON.stringify(M)} -`),typeof a=="string"||a instanceof Uint8Array)r(a);else{let u;try{u=JSON.stringify(a)}catch{u=JSON.stringify(It(a))}r(u)}}return typeof s=="string"?s:q0(s)}function q0(i){const e=i.reduce((r,o)=>r+o.length,0),t=new Uint8Array(e);let s=0;for(const r of i)t.set(r,s),s+=r.length;return t}function e4(i){const e=typeof i.data=="string"?to(i.data):i.data;return[{type:"attachment",length:e.length,filename:i.filename,content_type:i.contentType,attachment_type:i.attachmentType},e]}const hc={sessions:"session",event:"error",client_report:"internal",user_report:"default",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",raw_security:"security",log:"log_item",trace_metric:"metric"};function t4(i){return i in hc}function qM(i){return t4(i)?hc[i]:i}function Ic(i){if(!(i!=null&&i.sdk))return;const{name:e,version:t}=i.sdk;return{name:e,version:t}}function s4(i,e,t,s){var o;const r=(o=i.sdkProcessingMetadata)==null?void 0:o.dynamicSamplingContext;return{event_id:i.event_id,sent_at:new Date().toISOString(),...e&&{sdk:e},...!!t&&s&&{dsn:ji(s)},...r&&{trace:r}}}function i4(i,e){var s,r,o,M;if(!e)return i;const t=i.sdk||{};return i.sdk={...t,name:t.name||e.name,version:t.version||e.version,integrations:[...((s=i.sdk)==null?void 0:s.integrations)||[],...e.integrations||[]],packages:[...((r=i.sdk)==null?void 0:r.packages)||[],...e.packages||[]],settings:(o=i.sdk)!=null&&o.settings||e.settings?{...(M=i.sdk)==null?void 0:M.settings,...e.settings}:void 0},i}function r4(i,e,t,s){const r=Ic(t),o={sent_at:new Date().toISOString(),...r&&{sdk:r},...!!s&&e&&{dsn:ji(e)}},M="aggregates"in i?[{type:"sessions"},i]:[{type:"session"},i.toJSON()];return Qs(o,[M])}function o4(i,e,t,s){const r=Ic(t),o=i.type&&i.type!=="replay_event"?i.type:"event";i4(i,t==null?void 0:t.sdk);const M=s4(i,r,s,e);return delete i.sdkProcessingMetadata,Qs(M,[[{type:o},i]])}function M4(i,e){const{fingerprint:t,span:s,breadcrumbs:r,sdkProcessingMetadata:o}=e;n4(i,e),s&&u4(i,s),l4(i,t),a4(i,r),c4(i,o)}function en(i,e){const{extra:t,tags:s,attributes:r,user:o,contexts:M,level:a,sdkProcessingMetadata:u,breadcrumbs:l,fingerprint:N,eventProcessors:c,attachments:L,propagationContext:j,transactionName:g,span:y}=e;Ws(i,"extra",t),Ws(i,"tags",s),Ws(i,"attributes",r),Ws(i,"user",o),Ws(i,"contexts",M),i.sdkProcessingMetadata=Li(i.sdkProcessingMetadata,u,2),a&&(i.level=a),g&&(i.transactionName=g),y&&(i.span=y),l.length&&(i.breadcrumbs=[...i.breadcrumbs,...l]),N.length&&(i.fingerprint=[...i.fingerprint,...N]),c.length&&(i.eventProcessors=[...i.eventProcessors,...c]),L.length&&(i.attachments=[...i.attachments,...L]),i.propagationContext={...i.propagationContext,...j}}function Ws(i,e,t){i[e]=Li(i[e],t,1)}function wc(i,e){const t=r0().getScopeData();return i&&en(t,i.getScopeData()),e&&en(t,e.getScopeData()),t}function n4(i,e){const{extra:t,tags:s,user:r,contexts:o,level:M,transactionName:a}=e;Object.keys(t).length&&(i.extra={...t,...i.extra}),Object.keys(s).length&&(i.tags={...s,...i.tags}),Object.keys(r).length&&(i.user={...r,...i.user}),Object.keys(o).length&&(i.contexts={...o,...i.contexts}),M&&(i.level=M),a&&i.type!=="transaction"&&(i.transaction=a)}function a4(i,e){const t=[...i.breadcrumbs||[],...e];i.breadcrumbs=t.length?t:void 0}function c4(i,e){i.sdkProcessingMetadata={...i.sdkProcessingMetadata,...e}}function u4(i,e){i.contexts={trace:E0(e),...i.contexts},i.sdkProcessingMetadata={dynamicSamplingContext:R0(e),...i.sdkProcessingMetadata};const t=Dc(e),s=ur(t).description;s&&!i.transaction&&i.type==="transaction"&&(i.transaction=s)}function l4(i,e){i.fingerprint=i.fingerprint?Array.isArray(i.fingerprint)?i.fingerprint:[i.fingerprint]:[],e&&(i.fingerprint=i.fingerprint.concat(e)),i.fingerprint.length||delete i.fingerprint}const Cr=0,tn=1,sn=2;function gi(i){return new ii(e=>{e(i)})}function Xo(i){return new ii((e,t)=>{t(i)})}class ii{constructor(e){this._state=Cr,this._handlers=[],this._runExecutor(e)}then(e,t){return new ii((s,r)=>{this._handlers.push([!1,o=>{if(!e)s(o);else try{s(e(o))}catch(M){r(M)}},o=>{if(!t)r(o);else try{s(t(o))}catch(M){r(M)}}]),this._executeHandlers()})}catch(e){return this.then(t=>t,e)}finally(e){return new ii((t,s)=>{let r,o;return this.then(M=>{o=!1,r=M,e&&e()},M=>{o=!0,r=M,e&&e()}).then(()=>{if(o){s(r);return}t(r)})})}_executeHandlers(){if(this._state===Cr)return;const e=this._handlers.slice();this._handlers=[],e.forEach(t=>{t[0]||(this._state===tn&&t[1](this._value),this._state===sn&&t[2](this._value),t[0]=!0)})}_runExecutor(e){const t=(o,M)=>{if(this._state===Cr){if(li(M)){M.then(s,r);return}this._state=o,this._value=M,this._executeHandlers()}},s=o=>{t(tn,o)},r=o=>{t(sn,o)};try{e(s,r)}catch(o){r(o)}}}function N4(i,e,t,s=0){try{const r=so(e,t,i,s);return li(r)?r:gi(r)}catch(r){return Xo(r)}}function so(i,e,t,s){const r=t[s];if(!i||!r)return i;const o=r({...i},e);return V&&o===null&&G.log(`Event processor "${r.id||"?"}" dropped event`),li(o)?o.then(M=>so(M,e,t,s+1)):so(o,e,t,s+1)}let gt,rn,on,Ot;function L4(i){const e=oe._sentryDebugIds,t=oe._debugIds;if(!e&&!t)return{};const s=e?Object.keys(e):[],r=t?Object.keys(t):[];if(Ot&&s.length===rn&&r.length===on)return Ot;rn=s.length,on=r.length,Ot={},gt||(gt={});const o=(M,a)=>{for(const u of M){const l=a[u],N=gt==null?void 0:gt[u];if(N&&Ot&&l)Ot[N[0]]=l,gt&&(gt[u]=[N[0],l]);else if(l){const c=i(u);for(let L=c.length-1;L>=0;L--){const j=c[L],g=j==null?void 0:j.filename;if(g&&Ot&>){Ot[g]=l,gt[u]=[g,l];break}}}}};return e&&o(s,e),t&&o(r,t),Ot}function j4(i,e,t,s,r,o){const{normalizeDepth:M=3,normalizeMaxBreadth:a=1e3}=i,u={...e,event_id:e.event_id||t.event_id||Ke(),timestamp:e.timestamp||Ni()},l=t.integrations||i.integrations.map(I=>I.name);g4(u,i),D4(u,l),r&&r.emit("applyFrameMetadata",e),e.type===void 0&&T4(u,i.stackParser);const N=z4(s,t.captureContext);t.mechanism&&Es(u,t.mechanism);const c=r?r.getEventProcessors():[],L=wc(o,N),j=[...t.attachments||[],...L.attachments];j.length&&(t.attachments=j),M4(u,L);const g=[...c,...L.eventProcessors];return(t.data&&t.data.__sentry__===!0?gi(u):N4(g,u,t)).then(I=>(I&&y4(I),typeof M=="number"&&M>0?d4(I,M,a):I))}function g4(i,e){var a,u;const{environment:t,release:s,dist:r,maxValueLength:o}=e;i.environment=i.environment||t||Zo,!i.release&&s&&(i.release=s),!i.dist&&r&&(i.dist=r);const M=i.request;M!=null&&M.url&&o&&(M.url=Zr(M.url,o)),o&&((u=(a=i.exception)==null?void 0:a.values)==null||u.forEach(l=>{l.value&&(l.value=Zr(l.value,o))}))}function T4(i,e){var s,r;const t=L4(e);(r=(s=i.exception)==null?void 0:s.values)==null||r.forEach(o=>{var M,a;(a=(M=o.stacktrace)==null?void 0:M.frames)==null||a.forEach(u=>{u.filename&&(u.debug_id=t[u.filename])})})}function y4(i){var s,r;const e={};if((r=(s=i.exception)==null?void 0:s.values)==null||r.forEach(o=>{var M,a;(a=(M=o.stacktrace)==null?void 0:M.frames)==null||a.forEach(u=>{u.debug_id&&(u.abs_path?e[u.abs_path]=u.debug_id:u.filename&&(e[u.filename]=u.debug_id),delete u.debug_id)})}),Object.keys(e).length===0)return;i.debug_meta=i.debug_meta||{},i.debug_meta.images=i.debug_meta.images||[];const t=i.debug_meta.images;Object.entries(e).forEach(([o,M])=>{t.push({type:"sourcemap",code_file:o,debug_id:M})})}function D4(i,e){e.length>0&&(i.sdk=i.sdk||{},i.sdk.integrations=[...i.sdk.integrations||[],...e])}function d4(i,e,t){var r,o;if(!i)return null;const s={...i,...i.breadcrumbs&&{breadcrumbs:i.breadcrumbs.map(M=>({...M,...M.data&&{data:It(M.data,e,t)}}))},...i.user&&{user:It(i.user,e,t)},...i.contexts&&{contexts:It(i.contexts,e,t)},...i.extra&&{extra:It(i.extra,e,t)}};return(r=i.contexts)!=null&&r.trace&&s.contexts&&(s.contexts.trace=i.contexts.trace,i.contexts.trace.data&&(s.contexts.trace.data=It(i.contexts.trace.data,e,t))),i.spans&&(s.spans=i.spans.map(M=>({...M,...M.data&&{data:It(M.data,e,t)}}))),(o=i.contexts)!=null&&o.flags&&s.contexts&&(s.contexts.flags=It(i.contexts.flags,3,t)),s}function z4(i,e){if(!e)return i;const t=i?i.clone():new pt;return t.update(e),t}function h4(i,e){return Lt().captureException(i,void 0)}function Cc(i,e){return Lt().captureEvent(i,e)}function Mn(i){const e=cs(),{user:t}=wc(e,Lt()),{userAgent:s}=oe.navigator||{},r=GN({user:t,...s&&{userAgent:s},...i}),o=e.getSession();return(o==null?void 0:o.status)==="ok"&&_s(o,{status:"exited"}),Ac(),e.setSession(r),r}function Ac(){const i=cs(),t=Lt().getSession()||i.getSession();t&&FN(t),mc(),i.setSession()}function mc(){const i=cs(),e=ke(),t=i.getSession();t&&e&&e.captureSession(t)}function Ar(i=!1){if(i){Ac();return}mc()}const I4="7";function w4(i){const e=i.protocol?`${i.protocol}:`:"",t=i.port?`:${i.port}`:"";return`${e}//${i.host}${t}${i.path?`/${i.path}`:""}/api/`}function C4(i){return`${w4(i)}${i.projectId}/envelope/`}function A4(i,e){const t={sentry_version:I4};return i.publicKey&&(t.sentry_key=i.publicKey),e&&(t.sentry_client=`${e.name}/${e.version}`),new URLSearchParams(t).toString()}function m4(i,e,t){return e||`${C4(i)}?${A4(i,t)}`}const nn=[];function p4(i){const e={};return i.forEach(t=>{const{name:s}=t,r=e[s];r&&!r.isDefaultInstance&&t.isDefaultInstance||(e[s]=t)}),Object.values(e)}function O4(i){const e=i.defaultIntegrations||[],t=i.integrations;e.forEach(r=>{r.isDefaultInstance=!0});let s;if(Array.isArray(t))s=[...e,...t];else if(typeof t=="function"){const r=t(e);s=Array.isArray(r)?r:[r]}else s=e;return p4(s)}function E4(i,e){const t={};return e.forEach(s=>{s!=null&&s.beforeSetup&&s.beforeSetup(i)}),e.forEach(s=>{s&&pc(i,s,t)}),t}function an(i,e){for(const t of e)t!=null&&t.afterAllSetup&&t.afterAllSetup(i)}function pc(i,e,t){if(t[e.name]){V&&G.log(`Integration skipped because it was already installed: ${e.name}`);return}if(t[e.name]=e,!nn.includes(e.name)&&typeof e.setupOnce=="function"&&(e.setupOnce(),nn.push(e.name)),e.setup&&typeof e.setup=="function"&&e.setup(i),typeof e.preprocessEvent=="function"){const s=e.preprocessEvent.bind(e);i.on("preprocessEvent",(r,o)=>s(r,o,i))}if(typeof e.processEvent=="function"){const s=e.processEvent.bind(e),r=Object.assign((o,M)=>s(o,M,i),{id:e.name});i.addEventProcessor(r)}V&&G.log(`Integration installed: ${e.name}`)}function _4(i){return[{type:"log",item_count:i.length,content_type:"application/vnd.sentry.items.log+json"},{items:i}]}function f4(i,e,t,s){const r={};return e!=null&&e.sdk&&(r.sdk={name:e.sdk.name,version:e.sdk.version}),t&&s&&(r.dsn=ji(s)),Qs(r,[_4(i)])}function io(i,e){const t=e??S4(i)??[];if(t.length===0)return;const s=i.getOptions(),r=f4(t,s._metadata,s.tunnel,i.getDsn());Oc().set(i,[]),i.emit("flushLogs"),i.sendEnvelope(r)}function S4(i){return Oc().get(i)}function Oc(){return xs("clientToLogBufferMap",()=>new WeakMap)}function x4(i){return[{type:"trace_metric",item_count:i.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:i}]}function k4(i,e,t,s){const r={};return e!=null&&e.sdk&&(r.sdk={name:e.sdk.name,version:e.sdk.version}),t&&s&&(r.dsn=ji(s)),Qs(r,[x4(i)])}function Ec(i,e){const t=e??Y4(i)??[];if(t.length===0)return;const s=i.getOptions(),r=k4(t,s._metadata,s.tunnel,i.getDsn());_c().set(i,[]),i.emit("flushMetrics"),i.sendEnvelope(r)}function Y4(i){return _c().get(i)}function _c(){return xs("clientToMetricBufferMap",()=>new WeakMap)}function fc(i){return typeof i=="object"&&typeof i.unref=="function"&&i.unref(),i}const Ko=Symbol.for("SentryBufferFullError");function qo(i=100){const e=new Set;function t(){return e.sizes(a),()=>s(a)),a}function o(M){if(!e.size)return gi(!0);const a=Promise.allSettled(Array.from(e)).then(()=>!0);if(!M)return a;const u=[a,new Promise(l=>fc(setTimeout(()=>l(!1),M)))];return Promise.race(u)}return{get $(){return Array.from(e)},add:r,drain:o}}const Q4=60*1e3;function v4(i,e=ar()){const t=parseInt(`${i}`,10);if(!isNaN(t))return t*1e3;const s=Date.parse(`${i}`);return isNaN(s)?Q4:s-e}function U4(i,e){return i[e]||i.all||0}function b4(i,e,t=ar()){return U4(i,e)>t}function $4(i,{statusCode:e,headers:t},s=ar()){const r={...i},o=t==null?void 0:t["x-sentry-rate-limits"],M=t==null?void 0:t["retry-after"];if(o)for(const a of o.trim().split(",")){const[u,l,,,N]=a.split(":",5),c=parseInt(u,10),L=(isNaN(c)?60:c)*1e3;if(!l)r.all=s+L;else for(const j of l.split(";"))j==="metric_bucket"?(!N||N.split(";").includes("custom"))&&(r[j]=s+L):r[j]=s+L}else M?r.all=s+v4(M,s):e===429&&(r.all=s+60*1e3);return r}const Sc=64;function P4(i,e,t=qo(i.bufferSize||Sc)){let s={};const r=M=>t.drain(M);function o(M){const a=[];if(eo(M,(c,L)=>{const j=qM(L);b4(s,j)?i.recordDroppedEvent("ratelimit_backoff",j):a.push(c)}),a.length===0)return Promise.resolve({});const u=Qs(M[0],a),l=c=>{if(X0(u,["client_report"])){V&&G.warn(`Dropping client report. Will not send outcomes (reason: ${c}).`);return}eo(u,(L,j)=>{i.recordDroppedEvent(c,qM(j))})},N=()=>e({body:K0(u)}).then(c=>c.statusCode===413?(V&&G.error("Sentry responded with status code 413. Envelope was discarded due to exceeding size limits."),l("send_error"),c):(V&&c.statusCode!==void 0&&(c.statusCode<200||c.statusCode>=300)&&G.warn(`Sentry responded with status code ${c.statusCode} to sent event.`),s=$4(s,c),c),c=>{throw l("network_error"),V&&G.error("Encountered error running transport request:",c),c});return t.add(N).then(c=>c,c=>{if(c===Ko)return V&&G.error("Skipped sending event because buffer is full."),l("queue_overflow"),Promise.resolve({});throw c})}return{send:o,flush:r}}function W4(i,e,t){const s=[{type:"client_report"},{timestamp:Ni(),discarded_events:i}];return Qs(e?{dsn:e}:{},[s])}function xc(i){const e=[];i.message&&e.push(i.message);try{const t=i.exception.values[i.exception.values.length-1];t!=null&&t.value&&(e.push(t.value),t.type&&e.push(`${t.type}: ${t.value}`))}catch{}return e}function R4(i){var u;const{trace_id:e,parent_span_id:t,span_id:s,status:r,origin:o,data:M,op:a}=((u=i.contexts)==null?void 0:u.trace)??{};return{data:M??{},description:i.transaction,op:a,parent_span_id:t,span_id:s??"",start_timestamp:i.start_timestamp??0,status:r,timestamp:i.timestamp,trace_id:e??"",origin:o,profile_id:M==null?void 0:M[Lc],exclusive_time:M==null?void 0:M[jc],measurements:i.measurements,is_segment:!0}}function J4(i){return{type:"transaction",timestamp:i.timestamp,start_timestamp:i.start_timestamp,transaction:i.description,contexts:{trace:{trace_id:i.trace_id,span_id:i.span_id,parent_span_id:i.parent_span_id,op:i.op,status:i.status,origin:i.origin,data:{...i.data,...i.profile_id&&{[Lc]:i.profile_id},...i.exclusive_time&&{[jc]:i.exclusive_time}}}},measurements:i.measurements}}const cn="Not capturing exception because it's already been captured.",un="Discarded session because of missing or non-string release",kc=Symbol.for("SentryInternalError"),Yc=Symbol.for("SentryDoNotSendEventError"),B4=5e3;function Qi(i){return{message:i,[kc]:!0}}function mr(i){return{message:i,[Yc]:!0}}function ln(i){return!!i&&typeof i=="object"&&kc in i}function Nn(i){return!!i&&typeof i=="object"&&Yc in i}function Ln(i,e,t,s,r){let o=0,M,a=!1;i.on(t,()=>{o=0,clearTimeout(M),a=!1}),i.on(e,u=>{o+=s(u),o>=8e5?r(i):a||(a=!0,M=fc(setTimeout(()=>{r(i)},B4)))}),i.on("flush",()=>{r(i)})}class G4{constructor(e){var s,r,o;if(this._options=e,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=qo(((s=e.transportOptions)==null?void 0:s.bufferSize)??Sc),e.dsn?this._dsn=p0(e.dsn):V&&G.warn("No DSN provided, client will not send events."),this._dsn){const M=m4(this._dsn,e.tunnel,e._metadata?e._metadata.sdk:void 0);this._transport=e.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:M})}this._options.enableLogs=this._options.enableLogs??((r=this._options._experiments)==null?void 0:r.enableLogs),this._options.enableLogs&&Ln(this,"afterCaptureLog","flushLogs",Z4,io),(this._options.enableMetrics??((o=this._options._experiments)==null?void 0:o.enableMetrics)??!0)&&Ln(this,"afterCaptureMetric","flushMetrics",V4,Ec)}captureException(e,t,s){const r=Ke();if(UM(e))return V&&G.log(cn),r;const o={event_id:r,...t};return this._process(()=>this.eventFromException(e,o).then(M=>this._captureEvent(M,o,s)).then(M=>M),"error"),o.event_id}captureMessage(e,t,s,r){const o={event_id:Ke(),...s},M=Bo(e)?e:String(e),a=or(e),u=a?this.eventFromMessage(M,t,o):this.eventFromException(e,o);return this._process(()=>u.then(l=>this._captureEvent(l,o,r)),a?"unknown":"error"),o.event_id}captureEvent(e,t,s){const r=Ke();if(t!=null&&t.originalException&&UM(t.originalException))return V&&G.log(cn),r;const o={event_id:r,...t},M=e.sdkProcessingMetadata||{},a=M.capturedSpanScope,u=M.capturedSpanIsolationScope,l=jn(e.type);return this._process(()=>this._captureEvent(e,o,a||s,u),l),o.event_id}captureSession(e){this.sendSession(e),_s(e,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(e){const t=this._transport;if(!t)return!0;this.emit("flush");const s=await this._isClientDoneProcessing(e),r=await t.flush(e);return s&&r}async close(e){io(this);const t=await this.flush(e);return this.getOptions().enabled=!1,this.emit("close"),t}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}init(){(this._isEnabled()||this._options.integrations.some(({name:e})=>e.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(e){return this._integrations[e]}addIntegration(e){const t=this._integrations[e.name];!t&&e.beforeSetup&&e.beforeSetup(this),pc(this,e,this._integrations),t||an(this,[e])}sendEvent(e,t={}){this.emit("beforeSendEvent",e,t);let s=o4(e,this._dsn,this._options._metadata,this._options.tunnel);for(const r of t.attachments||[])s=Z0(s,e4(r));this.sendEnvelope(s).then(r=>this.emit("afterSendEvent",e,r))}sendSession(e){const{release:t,environment:s=Zo}=this._options;if("aggregates"in e){const o=e.attrs||{};if(!o.release&&!t){V&&G.warn(un);return}o.release=o.release||t,o.environment=o.environment||s,e.attrs=o}else{if(!e.release&&!t){V&&G.warn(un);return}e.release=e.release||t,e.environment=e.environment||s}this.emit("beforeSendSession",e);const r=r4(e,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(r)}recordDroppedEvent(e,t,s=1){if(this._options.sendClientReports){const r=`${e}:${t}`;V&&G.log(`Recording outcome: "${r}"${s>1?` (${s} times)`:""}`),this._outcomes[r]=(this._outcomes[r]||0)+s}}on(e,t){const s=this._hooks[e]=this._hooks[e]||new Set,r=(...o)=>t(...o);return s.add(r),()=>{s.delete(r)}}emit(e,...t){const s=this._hooks[e];s&&s.forEach(r=>r(...t))}async sendEnvelope(e){if(this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport)try{return await this._transport.send(e)}catch(t){return V&&G.error("Error while sending envelope:",t),{}}return V&&G.error("Transport disabled"),{}}dispose(){}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=E4(this,e),an(this,e)}_updateSessionFromEvent(e,t){var u,l;let s=t.level==="fatal",r=!1;const o=(u=t.exception)==null?void 0:u.values;if(o){r=!0,s=!1;for(const N of o)if(((l=N.mechanism)==null?void 0:l.handled)===!1){s=!0;break}}const M=e.status==="ok";(M&&e.errors===0||M&&s)&&(_s(e,{...s&&{status:"crashed"},errors:e.errors||Number(r||s)}),this.captureSession(e))}async _isClientDoneProcessing(e){let t=0;for(;!e||tsetTimeout(s,1)),!this._numProcessing)return!0;t++}return!1}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(e,t,s,r){const o=this.getOptions(),M=Object.keys(this._integrations);return!t.integrations&&(M!=null&&M.length)&&(t.integrations=M),this.emit("preprocessEvent",e,t),e.type||r.setLastEventId(e.event_id||t.event_id),j4(o,e,t,s,this,r).then(a=>{var l;if(a===null)return a;this.emit("postprocessEvent",a,t),a.contexts={trace:{...(l=a.contexts)==null?void 0:l.trace,...M0(s)},...a.contexts};const u=W0(this,s);return a.sdkProcessingMetadata={dynamicSamplingContext:u,...a.sdkProcessingMetadata},a})}_captureEvent(e,t={},s=Lt(),r=cs()){return V&&ro(e)&&G.log(`Captured error event \`${xc(e)[0]||""}\``),this._processEvent(e,t,s,r).then(o=>o.event_id,o=>{V&&(Nn(o)?G.log(o.message):ln(o)?G.warn(o.message):G.warn(o))})}_processEvent(e,t,s,r){const o=this.getOptions(),{sampleRate:M}=o,a=Qc(e),u=ro(e),N=`before send for type \`${e.type||"error"}\``,c=typeof M>"u"?void 0:O0(M);if(u&&typeof c=="number"&&Bi()>c)return this.recordDroppedEvent("sample_rate","error"),Xo(mr(`Discarding event because it's not included in the random sample (sampling rate = ${M})`));const L=jn(e.type);return this._prepareEvent(e,t,s,r).then(j=>{var d;if(j===null)throw this.recordDroppedEvent("event_processor",L),mr("An event processor returned `null`, will not send event.");if(((d=t.data)==null?void 0:d.__sentry__)===!0)return j;const y=H4(this,o,j,t);return F4(y,N)}).then(j=>{var d;if(j===null){if(this.recordDroppedEvent("before_send",L),a){const m=1+(e.spans||[]).length;this.recordDroppedEvent("before_send","span",m)}throw mr(`${N} returned \`null\`, will not send event.`)}const g=s.getSession()||r.getSession();if(u&&g&&this._updateSessionFromEvent(g,j),a){const I=((d=j.sdkProcessingMetadata)==null?void 0:d.spanCountBeforeProcessing)||0,m=j.spans?j.spans.length:0,w=I-m;w>0&&this.recordDroppedEvent("before_send","span",w)}const y=j.transaction_info;if(a&&y&&j.transaction!==e.transaction){const I="custom";j.transaction_info={...y,source:I}}return this.sendEvent(j,t),j}).then(null,j=>{throw Nn(j)||ln(j)?j:(this.captureException(j,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:j}),Qi(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. -Reason: ${j}`))})}_process(e,t){this._numProcessing++,this._promiseBuffer.add(e).then(s=>(this._numProcessing--,s),s=>(this._numProcessing--,s===Ko&&this.recordDroppedEvent("queue_overflow",t),s))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([t,s])=>{const[r,o]=t.split(":");return{reason:r,category:o,quantity:s}})}_flushOutcomes(){V&&G.log("Flushing outcomes...");const e=this._clearOutcomes();if(e.length===0){V&&G.log("No outcomes to send");return}if(!this._dsn){V&&G.log("No dsn provided, will not send outcomes");return}V&&G.log("Sending outcomes:",e);const t=W4(e,this._options.tunnel&&ji(this._dsn));this.sendEnvelope(t)}}function jn(i){return i==="replay_event"?"replay":i||"error"}function F4(i,e){const t=`${e} must return \`null\` or a valid event.`;if(li(i))return i.then(s=>{if(!si(s)&&s!==null)throw Qi(t);return s},s=>{throw Qi(`${e} rejected with ${s}`)});if(!si(i)&&i!==null)throw Qi(t);return i}function H4(i,e,t,s){const{beforeSend:r,beforeSendTransaction:o,ignoreSpans:M}=e,a=!J0(e.beforeSendSpan)&&e.beforeSendSpan;let u=t;if(ro(u)&&r)return r(u,s);if(Qc(u)){if(a||M){const l=R4(u);if(M!=null&&M.length&&KM(l,M))return null;if(a){const N=a(l);N?u=Li(t,J4(N)):ZM()}if(u.spans){const N=[],c=u.spans;for(const j of c){if(M!=null&&M.length&&KM(j,M)){b0(c,j);continue}if(a){const g=a(j);g?N.push(g):(ZM(),N.push(j))}else N.push(j)}const L=u.spans.length-N.length;L&&i.recordDroppedEvent("before_send","span",L),u.spans=N}}if(o){if(u.spans){const l=u.spans.length;u.sdkProcessingMetadata={...t.sdkProcessingMetadata,spanCountBeforeProcessing:l}}return o(u,s)}}return u}function ro(i){return i.type===void 0}function Qc(i){return i.type==="transaction"}function V4(i){let e=0;return i.name&&(e+=i.name.length*2),e+=8,e+vc(i.attributes)}function Z4(i){let e=0;return i.message&&(e+=i.message.length*2),e+vc(i.attributes)}function vc(i){if(!i)return 0;let e=0;return Object.values(i).forEach(t=>{Array.isArray(t)?e+=t.length*gn(t[0]):or(t)?e+=gn(t):e+=100}),e}function gn(i){return typeof i=="string"?i.length*2:typeof i=="number"?8:typeof i=="boolean"?4:0}function X4(i){return rr(i)&&"__sentry_fetch_url_host__"in i&&typeof i.__sentry_fetch_url_host__=="string"}function Tn(i){return X4(i)?`${i.message} (${i.__sentry_fetch_url_host__})`:i.message}function K4(i,e){e.debug===!0&&(V?G.enable():ks(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),Lt().update(e.initialScope);const s=new i(e);return q4(s),s.init(),s}function q4(i){Lt().setClient(i)}function pr(i){if(!i)return{};const e=i.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!e)return{};const t=e[6]||"",s=e[8]||"";return{host:e[4],path:e[5],protocol:e[2],search:t,hash:s,relative:e[5]+t+s}}function eL(i,e=!0){if(i.startsWith("data:")){const t=i.match(/^data:([^;,]+)/),s=t?t[1]:"text/plain",r=i.includes(";base64,"),o=i.indexOf(",");let M="";if(e&&o!==-1){const a=i.slice(o+1);M=a.length>10?`${a.slice(0,10)}... [truncated]`:a}return`data:${s}${r?",base64":""}${M?`,${M}`:""}`}return i}function tL(i){var e;"aggregates"in i?((e=i.attrs)==null?void 0:e.ip_address)===void 0&&(i.attrs={...i.attrs,ip_address:"{{auto}}"}):i.ipAddress===void 0&&(i.ipAddress="{{auto}}")}function sL(i,e,t=[e],s="npm"){const r=(i._metadata=i._metadata||{}).sdk=i._metadata.sdk||{};r.name||(r.name=`sentry.javascript.${e}`,r.packages=t.map(o=>({name:`${s}:@sentry/${o}`,version:is})),r.version=is)}const iL=100;function os(i,e){const t=ke(),s=cs();if(!t)return;const{beforeBreadcrumb:r=null,maxBreadcrumbs:o=iL}=t.getOptions();if(o<=0)return;const a={timestamp:Ni(),...i},u=r?ks(()=>r(a,e)):a;u!==null&&(t.emit&&t.emit("beforeAddBreadcrumb",u,e),s.addBreadcrumb(u,o))}let yn;const rL="FunctionToString",Dn=new WeakMap,oL=(()=>({name:rL,setupOnce(){yn=Function.prototype.toString;try{Function.prototype.toString=function(...i){const e=Ho(this),t=Dn.has(ke())&&e!==void 0?e:this;return yn.apply(t,i)}}catch{}},setup(i){Dn.set(i,!0)}})),ML=oL,nL=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,/can't redefine non-configurable property "solana"/,/vv\(\)\.getRestrictions is not a function/,/Can't find variable: _AutofillCallbackHandler/,/Object Not Found Matching Id:\d+, MethodName:simulateEvent/,/^Java exception was raised during method invocation$/],aL="EventFilters",cL=(i={})=>{let e;return{name:aL,setup(t){const s=t.getOptions();e=dn(i,s)},processEvent(t,s,r){if(!e){const o=r.getOptions();e=dn(i,o)}return lL(t,e)?null:t}}},uL=((i={})=>({...cL(i),name:"InboundFilters"}));function dn(i={},e={}){return{allowUrls:[...i.allowUrls||[],...e.allowUrls||[]],denyUrls:[...i.denyUrls||[],...e.denyUrls||[]],ignoreErrors:[...i.ignoreErrors||[],...e.ignoreErrors||[],...i.disableErrorDefaults?[]:nL],ignoreTransactions:[...i.ignoreTransactions||[],...e.ignoreTransactions||[]]}}function lL(i,e){if(i.type){if(i.type==="transaction"&&LL(i,e.ignoreTransactions))return V&&G.warn(`Event dropped due to being matched by \`ignoreTransactions\` option. -Event: ${es(i)}`),!0}else{if(NL(i,e.ignoreErrors))return V&&G.warn(`Event dropped due to being matched by \`ignoreErrors\` option. -Event: ${es(i)}`),!0;if(yL(i))return V&&G.warn(`Event dropped due to not having an error message, error type or stacktrace. -Event: ${es(i)}`),!0;if(jL(i,e.denyUrls))return V&&G.warn(`Event dropped due to being matched by \`denyUrls\` option. -Event: ${es(i)}. -Url: ${Gi(i)}`),!0;if(!gL(i,e.allowUrls))return V&&G.warn(`Event dropped due to not being matched by \`allowUrls\` option. -Event: ${es(i)}. -Url: ${Gi(i)}`),!0}return!1}function NL(i,e){return e!=null&&e.length?xc(i).some(t=>cr(t,e)):!1}function LL(i,e){if(!(e!=null&&e.length))return!1;const t=i.transaction;return t?cr(t,e):!1}function jL(i,e){if(!(e!=null&&e.length))return!1;const t=Gi(i);return t?cr(t,e):!1}function gL(i,e){if(!(e!=null&&e.length))return!0;const t=Gi(i);return t?cr(t,e):!0}function TL(i=[]){for(let e=i.length-1;e>=0;e--){const t=i[e];if(t&&t.filename!==""&&t.filename!=="[native code]")return t.filename||null}return null}function Gi(i){var e,t;try{const s=[...((e=i.exception)==null?void 0:e.values)??[]].reverse().find(o=>{var M,a,u;return((M=o.mechanism)==null?void 0:M.parent_id)===void 0&&((u=(a=o.stacktrace)==null?void 0:a.frames)==null?void 0:u.length)}),r=(t=s==null?void 0:s.stacktrace)==null?void 0:t.frames;return r?TL(r):null}catch{return V&&G.error(`Cannot extract url for event ${es(i)}`),null}}function yL(i){var e,t;return(t=(e=i.exception)==null?void 0:e.values)!=null&&t.length?!i.message&&!i.exception.values.some(s=>s.stacktrace||s.type&&s.type!=="Error"||s.value):!1}function DL(i,e,t,s,r,o){var a;if(!((a=r.exception)!=null&&a.values)||!o||!Gt(o.originalException,Error))return;const M=r.exception.values.length>0?r.exception.values[r.exception.values.length-1]:void 0;M&&(r.exception.values=oo(i,e,s,o.originalException,t,r.exception.values,M,0))}function oo(i,e,t,s,r,o,M,a){if(o.length>=t+1)return o;let u=[...o];if(Gt(s[r],Error)){zn(M,a,s);const l=i(e,s[r]),N=u.length;hn(l,r,N,a),u=oo(i,e,t,s[r],r,[l,...u],l,N)}return Uc(s)&&s.errors.forEach((l,N)=>{if(Gt(l,Error)){zn(M,a,s);const c=i(e,l),L=u.length;hn(c,`errors[${N}]`,L,a),u=oo(i,e,t,l,r,[c,...u],c,L)}}),u}function Uc(i){return Array.isArray(i.errors)}function zn(i,e,t){i.mechanism={handled:!0,type:"auto.core.linked_errors",...Uc(t)&&{is_exception_group:!0},...i.mechanism,exception_id:e}}function hn(i,e,t,s){i.mechanism={handled:!0,...i.mechanism,type:"chained",source:e,exception_id:t,parent_id:s}}function dL(i){const e="console";ns(e,i),as(e,zL)}function zL(){"console"in oe&&hN.forEach(function(i){i in oe.console&&Ge(oe.console,i,function(e){return Ji[i]=e,function(...t){st("console",{args:t,level:i});const r=Ji[i];r==null||r.apply(oe.console,t)}})})}function hL(i){return i==="warn"?"warning":["fatal","error","warning","log","info","debug"].includes(i)?i:"log"}const IL="Dedupe",wL=(()=>{let i;return{name:IL,processEvent(e){if(e.type)return e;try{if(CL(e,i))return V&&G.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return i=e}}}),bc=wL;function CL(i,e){return e?!!(AL(i,e)||mL(i,e)):!1}function AL(i,e){const t=i.message,s=e.message;return!(!t&&!s||t&&!s||!t&&s||t!==s||!Pc(i,e)||!$c(i,e))}function mL(i,e){const t=In(e),s=In(i);return!(!t||!s||t.type!==s.type||t.value!==s.value||!Pc(i,e)||!$c(i,e))}function $c(i,e){let t=SM(i),s=SM(e);if(!t&&!s)return!0;if(t&&!s||!t&&s||(t=t,s=s,s.length!==t.length))return!1;for(let r=0;r({name:pL,setup(i){i.on("spanStart",e=>{const t=Lt().getScopeData(),s=cs().getScopeData(),r=t.conversationId||s.conversationId;if(r){const{op:o,data:M,description:a}=ur(e);if(!(o!=null&&o.startsWith("gen_ai."))&&!M["ai.operationId"]&&!(a!=null&&a.startsWith("ai.")))return;e.setAttribute(N0,r)}})}})),EL=OL;function Wc(i){if(i!==void 0)return i>=400&&i<500?"warning":i>=500?"error":void 0}const ri=oe;function _L(){return"history"in ri&&!!ri.history}function fL(){if(!("fetch"in ri))return!1;try{return new Headers,new Request("data:,"),new Response,!0}catch{return!1}}function Mo(i){return i&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(i.toString())}function SL(){var t;if(typeof EdgeRuntime=="string")return!0;if(!fL())return!1;if(Mo(ri.fetch))return!0;let i=!1;const e=ri.document;if(e&&typeof e.createElement=="function")try{const s=e.createElement("iframe");s.hidden=!0,e.head.appendChild(s),(t=s.contentWindow)!=null&&t.fetch&&(i=Mo(s.contentWindow.fetch)),e.head.removeChild(s)}catch(s){V&&G.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",s)}return i}function xL(i,e){const t="fetch";ns(t,i),as(t,()=>kL(void 0,e))}function kL(i,e=!1){e&&!SL()||Ge(oe,"fetch",function(t){return function(...s){const r=new Error,{method:o,url:M}=YL(s),a={args:s,fetchData:{method:o,url:M},startTimestamp:mt()*1e3,virtualError:r,headers:QL(s)};return st("fetch",{...a}),t.apply(oe,s).then(async u=>(st("fetch",{...a,endTimestamp:mt()*1e3,response:u}),u),u=>{st("fetch",{...a,endTimestamp:mt()*1e3,error:u}),rr(u)&&u.stack===void 0&&(u.stack=r.stack,Ft(u,"framesToPop",1));const l=ke(),N=(l==null?void 0:l.getOptions().enhanceFetchErrorMessages)??"always";if(N!==!1&&u instanceof TypeError&&(u.message==="Failed to fetch"||u.message==="Load failed"||u.message==="NetworkError when attempting to fetch resource."))try{const j=new URL(a.fetchData.url).host;N==="always"?u.message=`${u.message} (${j})`:Ft(u,"__sentry_fetch_url_host__",j)}catch{}throw u})}})}function vi(i,e){return!!i&&typeof i=="object"&&!!i[e]}function wn(i){return typeof i=="string"?i:i?vi(i,"url")?i.url:i.toString?i.toString():"":""}function YL(i){if(i.length===0)return{method:"GET",url:""};if(i.length===2){const[t,s]=i;return{url:wn(t),method:vi(s,"method")?String(s.method).toUpperCase():oc(t)&&vi(t,"method")?String(t.method).toUpperCase():"GET"}}const e=i[0];return{url:wn(e),method:vi(e,"method")?String(e.method).toUpperCase():"GET"}}function QL(i){const[e,t]=i;try{if(typeof t=="object"&&t!==null&&"headers"in t&&t.headers)return new Headers(t.headers);if(oc(e))return new Headers(e.headers)}catch{}}function vL(){return"npm"}const Ne=oe;let no=0;function Rc(){return no>0}function UL(){no++,setTimeout(()=>{no--})}function Ss(i,e={}){function t(r){return typeof r=="function"}if(!t(i))return i;try{const r=i.__sentry_wrapped__;if(r)return typeof r=="function"?r:i;if(Ho(i))return i}catch{return i}const s=function(...r){try{const o=r.map(M=>Ss(M,e));return i.apply(this,o)}catch(o){throw UL(),o0(M=>{M.addEventProcessor(a=>(e.mechanism&&(Xr(a,void 0),Es(a,e.mechanism)),a.extra={...a.extra,arguments:r},a)),h4(o)}),o}};try{for(const r in i)Object.prototype.hasOwnProperty.call(i,r)&&(s[r]=i[r])}catch{}nc(s,i),Ft(i,"__sentry_wrapped__",s);try{Object.getOwnPropertyDescriptor(s,"name").configurable&&Object.defineProperty(s,"name",{get(){return i.name}})}catch{}return s}function bL(){const i=Fo(),{referrer:e}=Ne.document||{},{userAgent:t}=Ne.navigator||{},s={...e&&{Referer:e},...t&&{"User-Agent":t}};return{url:i,headers:s}}function eM(i,e){const t=tM(i,e),s={type:JL(e),value:BL(e)};return t.length&&(s.stacktrace={frames:t}),s.type===void 0&&s.value===""&&(s.value="Unrecoverable error caught"),s}function $L(i,e,t,s){const r=ke(),o=r==null?void 0:r.getOptions().normalizeDepth,M=ZL(e),a={__serialized__:zc(e,o)};if(M)return{exception:{values:[eM(i,M)]},extra:a};const u={exception:{values:[{type:Mr(e)?e.constructor.name:s?"UnhandledRejection":"Error",value:HL(e,{isUnhandledRejection:s})}]},extra:a};if(t){const l=tM(i,t);l.length&&(u.exception.values[0].stacktrace={frames:l})}return u}function Or(i,e){return{exception:{values:[eM(i,e)]}}}function tM(i,e){const t=e.stacktrace||e.stack||"",s=WL(e),r=RL(e);try{return i(t,s,r)}catch{}return[]}const PL=/Minified React error #\d+;/i;function WL(i){return i&&PL.test(i.message)?1:0}function RL(i){return typeof i.framesToPop=="number"?i.framesToPop:0}function Jc(i){return typeof WebAssembly<"u"&&typeof WebAssembly.Exception<"u"?i instanceof WebAssembly.Exception:!1}function JL(i){const e=i==null?void 0:i.name;return!e&&Jc(i)?i.message&&Array.isArray(i.message)&&i.message.length==2?i.message[0]:"WebAssembly.Exception":e}function BL(i){const e=i==null?void 0:i.message;return Jc(i)?Array.isArray(i.message)&&i.message.length==2?i.message[1]:"wasm exception":e?e.error&&typeof e.error.message=="string"?Tn(e.error):Tn(i):"No error message"}function GL(i,e,t,s){const r=(t==null?void 0:t.syntheticException)||void 0,o=sM(i,e,r,s);return Es(o),o.level="error",t!=null&&t.event_id&&(o.event_id=t.event_id),gi(o)}function FL(i,e,t="info",s,r){const o=(s==null?void 0:s.syntheticException)||void 0,M=ao(i,e,o,r);return M.level=t,s!=null&&s.event_id&&(M.event_id=s.event_id),gi(M)}function sM(i,e,t,s,r){let o;if(ic(e)&&e.error)return Or(i,e.error);if(kM(e)||kN(e)){const M=e;if("stack"in e)o=Or(i,e);else{const a=M.name||(kM(M)?"DOMError":"DOMException"),u=M.message?`${a}: ${M.message}`:a;o=ao(i,u,t,s),Xr(o,u)}return"code"in M&&(o.tags={...o.tags,"DOMException.code":`${M.code}`}),o}return rr(e)?Or(i,e):si(e)||Mr(e)?(o=$L(i,e,t,r),Es(o,{synthetic:!0}),o):(o=ao(i,e,t,s),Xr(o,`${e}`),Es(o,{synthetic:!0}),o)}function ao(i,e,t,s){const r={};if(s&&t){const o=tM(i,t);o.length&&(r.exception={values:[{value:e,stacktrace:{frames:o}}]}),Es(r,{synthetic:!0})}if(Bo(e)){const{__sentry_template_string__:o,__sentry_template_values__:M}=e;return r.logentry={message:o,params:M},r}return r.message=e,r}function HL(i,{isUnhandledRejection:e}){const t=PN(i),s=e?"promise rejection":"exception";return ic(i)?`Event \`ErrorEvent\` captured as ${s} with message \`${i.message}\``:Mr(i)?`Event \`${VL(i)}\` (type=${i.type}) captured as ${s}`:`Object captured as ${s} with keys: ${t}`}function VL(i){try{const e=Object.getPrototypeOf(i);return e?e.constructor.name:void 0}catch{}}function ZL(i){return Object.values(i).find(e=>e instanceof Error)}class XL extends G4{constructor(e){var N;const t=KL(e),s=Ne.SENTRY_SDK_SOURCE||vL();sL(t,"browser",["browser"],s),(N=t._metadata)!=null&&N.sdk&&(t._metadata.sdk.settings={infer_ip:t.sendDefaultPii?"auto":"never",...t._metadata.sdk.settings}),super(t);const{sendDefaultPii:r,sendClientReports:o,enableLogs:M,_experiments:a,enableMetrics:u}=this._options,l=u??(a==null?void 0:a.enableMetrics)??!0;Ne.document&&(o||M||l)&&Ne.document.addEventListener("visibilitychange",()=>{Ne.document.visibilityState==="hidden"&&(o&&this._flushOutcomes(),M&&io(this),l&&Ec(this))}),r&&this.on("beforeSendSession",tL)}eventFromException(e,t){return GL(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e,t="info",s){return FL(this._options.stackParser,e,t,s,this._options.attachStacktrace)}_prepareEvent(e,t,s,r){return e.platform=e.platform||"javascript",super._prepareEvent(e,t,s,r)}}function KL(i){var e;return{release:typeof __SENTRY_RELEASE__=="string"?__SENTRY_RELEASE__:(e=Ne.SENTRY_RELEASE)==null?void 0:e.id,sendClientReports:!0,parentSpanIsAlwaysRootSpan:!0,...i}}const qL=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,Qe=oe,ej=1e3;let Cn,co,uo;function tj(i){ns("dom",i),as("dom",sj)}function sj(){if(!Qe.document)return;const i=st.bind(null,"dom"),e=An(i,!0);Qe.document.addEventListener("click",e,!1),Qe.document.addEventListener("keypress",e,!1),["EventTarget","Node"].forEach(t=>{var o,M;const r=(o=Qe[t])==null?void 0:o.prototype;(M=r==null?void 0:r.hasOwnProperty)!=null&&M.call(r,"addEventListener")&&(Ge(r,"addEventListener",function(a){return function(u,l,N){if(u==="click"||u=="keypress")try{const c=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},L=c[u]=c[u]||{refCount:0};if(!L.handler){const j=An(i);L.handler=j,a.call(this,u,j,N)}L.refCount++}catch{}return a.call(this,u,l,N)}}),Ge(r,"removeEventListener",function(a){return function(u,l,N){if(u==="click"||u=="keypress")try{const c=this.__sentry_instrumentation_handlers__||{},L=c[u];L&&(L.refCount--,L.refCount<=0&&(a.call(this,u,L.handler,N),L.handler=void 0,delete c[u]),Object.keys(c).length===0&&delete this.__sentry_instrumentation_handlers__)}catch{}return a.call(this,u,l,N)}}))})}function ij(i){if(i.type!==co)return!1;try{if(!i.target||i.target._sentryId!==uo)return!1}catch{}return!0}function rj(i,e){return i!=="keypress"?!1:e!=null&&e.tagName?!(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable):!0}function An(i,e=!1){return t=>{if(!t||t._sentryCaptured)return;const s=oj(t);if(rj(t.type,s))return;Ft(t,"_sentryCaptured",!0),s&&!s._sentryId&&Ft(s,"_sentryId",Ke());const r=t.type==="keypress"?"input":t.type;ij(t)||(i({event:t,name:r,global:e}),co=t.type,uo=s?s._sentryId:void 0),clearTimeout(Cn),Cn=Qe.setTimeout(()=>{uo=void 0,co=void 0},ej)}}function oj(i){try{return i.target}catch{return null}}let wi;function Bc(i){const e="history";ns(e,i),as(e,Mj)}function Mj(){if(Qe.addEventListener("popstate",()=>{const e=Qe.location.href,t=wi;if(wi=e,t===e)return;st("history",{from:t,to:e})}),!_L())return;function i(e){return function(...t){const s=t.length>2?t[2]:void 0;if(s){const r=wi,o=nj(String(s));if(wi=o,r===o)return e.apply(this,t);st("history",{from:r,to:o})}return e.apply(this,t)}}Ge(Qe.history,"pushState",i),Ge(Qe.history,"replaceState",i)}function nj(i){try{return new URL(i,Qe.location.origin).toString()}catch{return i}}const Ui={};function aj(i){const e=Ui[i];if(e)return e;let t=Qe[i];if(Mo(t))return Ui[i]=t.bind(Qe);const s=Qe.document;if(s&&typeof s.createElement=="function")try{const r=s.createElement("iframe");r.hidden=!0,s.head.appendChild(r);const o=r.contentWindow;o!=null&&o[i]&&(t=o[i]),s.head.removeChild(r)}catch(r){qL&&G.warn(`Could not create sandbox iframe for ${i} check, bailing to window.${i}: `,r)}return t&&(Ui[i]=t.bind(Qe))}function cj(i){Ui[i]=void 0}const Hs="__sentry_xhr_v3__";function uj(i){ns("xhr",i),as("xhr",lj)}function lj(){if(!Qe.XMLHttpRequest)return;const i=XMLHttpRequest.prototype;i.open=new Proxy(i.open,{apply(e,t,s){const r=new Error,o=mt()*1e3,M=At(s[0])?s[0].toUpperCase():void 0,a=Nj(s[1]);if(!M||!a)return e.apply(t,s);t[Hs]={method:M,url:a,request_headers:{}},M==="POST"&&a.match(/sentry_key/)&&(t.__sentry_own_request__=!0);const u=()=>{const l=t[Hs];if(l&&t.readyState===4){try{l.status_code=t.status}catch{}const N={endTimestamp:mt()*1e3,startTimestamp:o,xhr:t,virtualError:r};st("xhr",N)}};return"onreadystatechange"in t&&typeof t.onreadystatechange=="function"?t.onreadystatechange=new Proxy(t.onreadystatechange,{apply(l,N,c){return u(),l.apply(N,c)}}):t.addEventListener("readystatechange",u),t.setRequestHeader=new Proxy(t.setRequestHeader,{apply(l,N,c){const[L,j]=c,g=N[Hs];return g&&At(L)&&At(j)&&(g.request_headers[L.toLowerCase()]=j),l.apply(N,c)}}),e.apply(t,s)}}),i.send=new Proxy(i.send,{apply(e,t,s){const r=t[Hs];if(!r)return e.apply(t,s);s[0]!==void 0&&(r.body=s[0]);const o={startTimestamp:mt()*1e3,xhr:t};return st("xhr",o),e.apply(t,s)}})}function Nj(i){if(At(i))return i;try{return i.toString()}catch{}}const Lj=40;function jj(i,e=aj("fetch")){let t=0,s=0;async function r(o){const M=o.body.length;t+=M,s++;const a={body:o.body,method:"POST",referrerPolicy:"strict-origin",headers:i.headers,keepalive:t<=6e4&&s<15,...i.fetchOptions};try{const u=await e(i.url,a);return{statusCode:u.status,headers:{"x-sentry-rate-limits":u.headers.get("X-Sentry-Rate-Limits"),"retry-after":u.headers.get("Retry-After")}}}catch(u){throw cj("fetch"),u}finally{t-=M,s--}}return P4(i,r,qo(i.bufferSize||Lj))}const lr=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,gj=30,Tj=50;function lo(i,e,t,s){const r={filename:i,function:e===""?rs:e,in_app:!0};return t!==void 0&&(r.lineno=t),s!==void 0&&(r.colno=s),r}const yj=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,Dj=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,dj=/\((\S*)(?::(\d+))(?::(\d+))\)/,zj=/at (.+?) ?\(data:(.+?),/,hj=i=>{var r;const e=i.match(zj);if(e)return{filename:``,function:e[1]};const t=yj.exec(i);if(t){const[,o,M,a]=t;return lo(o,rs,+M,+a)}const s=Dj.exec(i);if(s){if(((r=s[2])==null?void 0:r.indexOf("eval"))===0){const u=dj.exec(s[2]);u&&(s[2]=u[1],s[3]=u[2],s[4]=u[3])}const[M,a]=Gc(s[1]||rs,s[2]);return lo(a,M,s[3]?+s[3]:void 0,s[4]?+s[4]:void 0)}},Ij=[gj,hj],wj=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Cj=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Aj=i=>{const e=wj.exec(i);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const o=Cj.exec(e[3]);o&&(e[1]=e[1]||"eval",e[3]=o[1],e[4]=o[2],e[5]="")}let s=e[3],r=e[1]||rs;return[r,s]=Gc(r,s),lo(s,r,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}},mj=[Tj,Aj],pj=[Ij,mj],Oj=ec(...pj),Gc=(i,e)=>{const t=i.indexOf("safari-extension")!==-1,s=i.indexOf("safari-web-extension")!==-1;return t||s?[i.indexOf("@")!==-1?i.split("@")[0]:rs,t?`safari-extension:${e}`:`safari-web-extension:${e}`]:[i,e]},Ci=1024,Ej="Breadcrumbs",_j=((i={})=>{const e={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...i};return{name:Ej,setup(t){e.console&&dL(kj(t)),e.dom&&tj(xj(t,e.dom)),e.xhr&&uj(Yj(t)),e.fetch&&xL(Qj(t)),e.history&&Bc(vj(t)),e.sentry&&t.on("beforeSendEvent",Sj(t))}}}),fj=_j;function Sj(i){return function(t){ke()===i&&os({category:`sentry.${t.type==="transaction"?"transaction":"event"}`,event_id:t.event_id,level:t.level,message:es(t)},{event:t})}}function xj(i,e){return function(s){if(ke()!==i)return;let r,o,M=typeof e=="object"?e.serializeAttribute:void 0,a=typeof e=="object"&&typeof e.maxStringLength=="number"?e.maxStringLength:void 0;a&&a>Ci&&(lr&&G.warn(`\`dom.maxStringLength\` cannot exceed ${Ci}, but a value of ${a} was configured. Sentry will use ${Ci} instead.`),a=Ci),typeof M=="string"&&(M=[M]);try{const l=s.event,N=Uj(l)?l.target:l;r=Mc(N,{keyAttrs:M,maxStringLength:a}),o=$N(N)}catch{r=""}if(r.length===0)return;const u={category:`ui.${s.name}`,message:r};o&&(u.data={"ui.component_name":o}),os(u,{event:s.event,name:s.name,global:s.global})}}function kj(i){return function(t){if(ke()!==i)return;const s={category:"console",data:{arguments:t.args,logger:"console"},level:hL(t.level),message:vM(t.args," ")};if(t.level==="assert")if(t.args[0]===!1)s.message=`Assertion failed: ${vM(t.args.slice(1)," ")||"console.assert"}`,s.data.arguments=t.args.slice(1);else return;os(s,{input:t.args,level:t.level})}}function Yj(i){return function(t){if(ke()!==i)return;const{startTimestamp:s,endTimestamp:r}=t,o=t.xhr[Hs];if(!s||!r||!o)return;const{method:M,url:a,status_code:u,body:l}=o,N={method:M,url:a,status_code:u},c={xhr:t.xhr,input:l,startTimestamp:s,endTimestamp:r},L={category:"xhr",data:N,type:"http",level:Wc(u)};i.emit("beforeOutgoingRequestBreadcrumb",L,c),os(L,c)}}function Qj(i){return function(t){if(ke()!==i)return;const{startTimestamp:s,endTimestamp:r}=t;if(r&&!(t.fetchData.url.match(/sentry_key/)&&t.fetchData.method==="POST"))if(t.error){const o={data:t.error,input:t.args,startTimestamp:s,endTimestamp:r},M={category:"fetch",data:t.fetchData,level:"error",type:"http"};i.emit("beforeOutgoingRequestBreadcrumb",M,o),os(M,o)}else{const o=t.response,M={...t.fetchData,status_code:o==null?void 0:o.status},a={input:t.args,response:o,startTimestamp:s,endTimestamp:r},u={category:"fetch",data:M,type:"http",level:Wc(M.status_code)};i.emit("beforeOutgoingRequestBreadcrumb",u,a),os(u,a)}}}function vj(i){return function(t){if(ke()!==i)return;let s=t.from,r=t.to;const o=pr(Ne.location.href);let M=s?pr(s):void 0;const a=pr(r);M!=null&&M.path||(M=o),o.protocol===a.protocol&&o.host===a.host&&(r=a.relative),o.protocol===M.protocol&&o.host===M.host&&(s=M.relative),os({category:"navigation",data:{from:s,to:r}})}}function Uj(i){return!!i&&!!i.target}const bj="EventTarget,Window,Node,ApplicationCache,AudioTrackList,BroadcastChannel,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(","),$j="BrowserApiErrors",Pj=((i={})=>{const e={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...i};return{name:$j,setupOnce(){e.setTimeout&&Ge(Ne,"setTimeout",mn),e.setInterval&&Ge(Ne,"setInterval",mn),e.requestAnimationFrame&&Ge(Ne,"requestAnimationFrame",Rj),e.XMLHttpRequest&&"XMLHttpRequest"in Ne&&Ge(XMLHttpRequest.prototype,"send",Jj);const t=e.eventTarget;t&&(Array.isArray(t)?t:bj).forEach(r=>Bj(r,e))}}}),Wj=Pj;function mn(i){return function(...e){const t=e[0];return e[0]=Ss(t,{mechanism:{handled:!1,type:`auto.browser.browserapierrors.${Bt(i)}`}}),i.apply(this,e)}}function Rj(i){return function(e){return i.apply(this,[Ss(e,{mechanism:{data:{handler:Bt(i)},handled:!1,type:"auto.browser.browserapierrors.requestAnimationFrame"}})])}}function Jj(i){return function(...e){const t=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(r=>{r in t&&typeof t[r]=="function"&&Ge(t,r,function(o){const M={mechanism:{data:{handler:Bt(o)},handled:!1,type:`auto.browser.browserapierrors.xhr.${r}`}},a=Ho(o);return a&&(M.mechanism.data.handler=Bt(a)),Ss(o,M)})}),i.apply(this,e)}}function Bj(i,e){var r,o;const s=(r=Ne[i])==null?void 0:r.prototype;(o=s==null?void 0:s.hasOwnProperty)!=null&&o.call(s,"addEventListener")&&(Ge(s,"addEventListener",function(M){return function(a,u,l){try{Gj(u)&&(u.handleEvent=Ss(u.handleEvent,{mechanism:{data:{handler:Bt(u),target:i},handled:!1,type:"auto.browser.browserapierrors.handleEvent"}}))}catch{}return e.unregisterOriginalCallbacks&&Fj(this,a,u),M.apply(this,[a,Ss(u,{mechanism:{data:{handler:Bt(u),target:i},handled:!1,type:"auto.browser.browserapierrors.addEventListener"}}),l])}}),Ge(s,"removeEventListener",function(M){return function(a,u,l){try{const N=u.__sentry_wrapped__;N&&M.call(this,a,N,l)}catch{}return M.call(this,a,u,l)}}))}function Gj(i){return typeof i.handleEvent=="function"}function Fj(i,e,t){i&&typeof i=="object"&&"removeEventListener"in i&&typeof i.removeEventListener=="function"&&i.removeEventListener(e,t)}const Hj=(i={})=>{const e=i.lifecycle??"route";return{name:"BrowserSession",setupOnce(){if(typeof Ne.document>"u"){lr&&G.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.");return}Mn({ignoreDuration:!0}),Ar();const t=cs();let s=t.getUser();t.addScopeListener(r=>{const o=r.getUser();((s==null?void 0:s.id)!==(o==null?void 0:o.id)||(s==null?void 0:s.ip_address)!==(o==null?void 0:o.ip_address))&&(Ar(),s=o)}),e==="route"&&Bc(({from:r,to:o})=>{r!==o&&(Mn({ignoreDuration:!0}),Ar())})}}},Vj="CultureContext",Zj=(()=>({name:Vj,preprocessEvent(i){var t;const e=Kj();e&&(i.contexts={...i.contexts,culture:{...e,...(t=i.contexts)==null?void 0:t.culture}})}})),Xj=Zj;function Kj(){try{const i=Ne.Intl;if(!i)return;const e=i.DateTimeFormat().resolvedOptions();return{locale:e.locale,timezone:e.timeZone,calendar:e.calendar}}catch{return}}const qj="GlobalHandlers",eg=((i={})=>{const e={onerror:!0,onunhandledrejection:!0,...i};return{name:qj,setupOnce(){Error.stackTraceLimit=50},setup(t){e.onerror&&(sg(t),pn("onerror")),e.onunhandledrejection&&(ig(t),pn("onunhandledrejection"))}}}),tg=eg;function sg(i){_N(e=>{const{stackParser:t,attachStacktrace:s}=Fc();if(ke()!==i||Rc())return;const{msg:r,url:o,line:M,column:a,error:u}=e,l=Mg(sM(t,u||r,void 0,s,!1),o,M,a);l.level="error",Cc(l,{originalException:u,mechanism:{handled:!1,type:"auto.browser.global_handlers.onerror"}})})}function ig(i){SN(e=>{const{stackParser:t,attachStacktrace:s}=Fc();if(ke()!==i||Rc())return;const r=rg(e),o=or(r)?og(r):sM(t,r,void 0,s,!0);o.level="error",Cc(o,{originalException:r,mechanism:{handled:!1,type:"auto.browser.global_handlers.onunhandledrejection"}})})}function rg(i){if(or(i))return i;try{if("reason"in i)return i.reason;if("detail"in i&&"reason"in i.detail)return i.detail.reason}catch{}return i}function og(i){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(i)}`}]}}}function Mg(i,e,t,s){const r=i.exception=i.exception||{},o=r.values=r.values||[],M=o[0]=o[0]||{},a=M.stacktrace=M.stacktrace||{},u=a.frames=a.frames||[];return u.length===0&&u.push({colno:s,lineno:t,filename:ng(e)??Fo(),function:rs,in_app:!0}),i}function pn(i){lr&&G.log(`Global Handler attached: ${i}`)}function Fc(){const i=ke();return(i==null?void 0:i.getOptions())||{stackParser:()=>[],attachStacktrace:!1}}function ng(i){if(!(!At(i)||i.length===0))return i.startsWith("data:")?`<${eL(i,!1)}>`:i}const ag=()=>({name:"HttpContext",preprocessEvent(i){var s;if(!Ne.navigator&&!Ne.location&&!Ne.document)return;const e=bL(),t={...e.headers,...(s=i.request)==null?void 0:s.headers};i.request={...e,...i.request,headers:t}}}),cg="cause",ug=5,lg="LinkedErrors",Ng=((i={})=>{const e=i.limit||ug,t=i.key||cg;return{name:lg,preprocessEvent(s,r,o){const M=o.getOptions();DL(eM,M.stackParser,t,e,s,r)}}}),Lg=Ng;function jg(){return gg()?(lr&&ks(()=>{console.error("[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/")}),!0):!1}function gg(){var r;if(typeof Ne.window>"u")return!1;const i=Ne;if(i.nw)return!1;const e=i.chrome||i.browser;if(!((r=e==null?void 0:e.runtime)!=null&&r.id))return!1;const t=Fo();return!(Ne===Ne.top&&/^(?:chrome-extension|moz-extension|ms-browser-extension|safari-web-extension):\/\//.test(t))}function Tg(i){return[uL(),ML(),EL(),Wj(),fj(),tg(),Lg(),bc(),ag(),Xj(),Hj()]}function yg(i={}){const e=!i.skipBrowserExtensionCheck&&jg();let t=i.defaultIntegrations==null?Tg():i.defaultIntegrations;const s={...i,enabled:e?!1:i.enabled,stackParser:ON(i.stackParser||Oj),integrations:O4({integrations:i.integrations,defaultIntegrations:t}),transport:i.transport||jj};return K4(XL,s)}function Dg(){console.log(` -██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗ -██║██╔═══██╗██╔══██╗██╔══██╗██╔═══██╗██║ ██╔╝██╔════╝██╔══██╗ -██║██║ ██║██████╔╝██████╔╝██║ ██║█████╔╝ █████╗ ██████╔╝ -██║██║ ██║██╔══██╗██╔══██╗██║ ██║██╔═██╗ ██╔══╝ ██╔══██╗ -██║╚██████╔╝██████╔╝██║ ██║╚██████╔╝██║ ██╗███████╗██║ ██║ -╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ -`),console.log("Nice to see you here! :) Join our dev community here https://github.com/ioBroker/ioBroker or here https://github.com/iobroker-community-adapters"),console.log("Help us to create open source project with reactJS!"),console.log("See you :)")}function dg(i){const e=i.themeType||"light",t=i.size||300;return n.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{style:{width:t,height:t,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:2}},n.createElement("svg",{viewBox:"0 0 500 500",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%"},n.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"200"}),n.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"133"}),n.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"83"}),n.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"66"}),n.createElement("circle",{strokeWidth:"15",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"15"}),n.createElement("g",null,n.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),n.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),n.createElement("g",{transform:"rotate(60, 250, 250)"},n.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),n.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),n.createElement("g",{transform:"rotate(120, 250, 250)"},n.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),n.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),[0,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345].map(s=>n.createElement("line",{key:s,transform:`rotate(${s}, 250, 250)`,y2:"250",x2:"115",y1:"240",x1:"135",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),n.createElement("animateTransform",{attributeType:"xml",attributeName:"transform",type:"rotate",from:"0 250 250",to:"360 250 250",dur:"10s",additive:"sum",repeatCount:"indefinite"})),n.createElement("path",{d:"M 56.089 160.250 C 55.077 162.588, 46.037 182.950, 36 205.500 C 25.963 228.050, 16.923 248.412, 15.911 250.750 L 14.071 255 28.286 254.976 L 42.500 254.952 47.931 242.226 C 50.918 235.227, 54.366 227.250, 55.592 224.500 L 57.822 219.500 66.383 237.250 L 74.945 255 88.973 255 C 96.688 255, 103 254.841, 103 254.646 C 103 254.452, 100.043 248.071, 96.430 240.466 L 89.859 226.638 91.603 222.771 C 92.563 220.644, 93.660 218.710, 94.043 218.473 C 94.426 218.237, 108.609 246.609, 125.562 281.522 L 156.384 345 166.071 345 C 175.705 345, 175.763 344.985, 176.856 342.250 C 179.911 334.602, 208 260.765, 208 260.383 C 208 260.138, 202.546 260.065, 195.879 260.219 L 183.759 260.500 174.629 285.244 C 169.608 298.853, 165.254 309.990, 164.952 309.994 C 164.651 309.997, 148.901 277.389, 129.952 237.532 C 111.004 197.674, 95.275 165.057, 95 165.049 C 94.725 165.041, 90.685 172.415, 86.022 181.435 C 81.358 190.455, 77.308 197.689, 77.022 197.510 C 76.735 197.331, 72.675 187.920, 68 176.598 C 63.325 165.275, 59.147 156.008, 58.714 156.005 C 58.282 156.002, 57.101 157.912, 56.089 160.250 M 55.294 168.694 C 52.241 175.842, 52.166 176.323, 53.718 178.692 L 55.349 181.182 56.706 178.591 C 57.453 177.166, 58.406 176, 58.825 176 C 59.244 176, 60.777 178.363, 62.232 181.250 C 64.829 186.403, 64.879 186.440, 64.939 183.250 C 64.973 181.463, 65.422 180, 65.937 180 C 66.724 180, 60.176 162.824, 58.920 161.596 C 58.689 161.370, 57.057 164.564, 55.294 168.694 M 91.698 175.542 C 89.205 180.626, 89.099 181.308, 90.410 183.792 L 91.840 186.500 92.926 183.669 C 94.349 179.961, 96.024 180.653, 98.588 186.009 L 100.676 190.370 101.324 187.132 C 101.832 184.592, 101.217 182.395, 98.473 176.947 C 96.549 173.126, 94.849 170, 94.696 170 C 94.542 170, 93.193 172.494, 91.698 175.542 M 157.005 192.607 C 143.168 197.636, 134.999 209.202, 135.001 223.761 C 135.002 232.756, 138.710 240.755, 145.856 247.180 C 152.159 252.848, 158.121 255, 167.518 255 C 173.509 255, 175.684 254.499, 180.811 251.936 C 200.823 241.936, 205.088 216.155, 189.337 200.403 C 181.479 192.546, 166.868 189.022, 157.005 192.607 M 206 223 L 206 255 215.472 255 L 224.944 255 225.222 241.419 L 225.500 227.837 230.500 234.660 C 233.250 238.412, 238.002 244.636, 241.060 248.491 L 246.620 255.500 253.810 255.168 L 261 254.836 261 222.918 L 261 191 251.528 191 L 242.056 191 241.778 204.552 L 241.500 218.104 231.111 204.552 L 220.722 191 213.361 191 L 206 191 206 223 M 285.821 192.331 C 276.229 195.045, 270.010 202.130, 270.004 210.349 C 269.995 221.957, 275.913 226.925, 295.801 232.006 C 300.753 233.271, 302.228 235.609, 299.412 237.730 C 296.739 239.746, 288.369 238.774, 281.563 235.657 L 276.132 233.171 272.469 239.320 C 268.119 246.621, 268.341 247.287, 276.524 251.500 C 281.399 254.010, 283.761 254.556, 290.977 254.842 C 302.365 255.294, 307.420 253.846, 312.603 248.649 C 317.383 243.855, 319.463 236.989, 318.043 230.693 C 316.210 222.562, 311.258 218.610, 297.878 214.599 C 288.025 211.645, 285.443 209.631, 288.538 207.315 C 291.104 205.394, 302.270 205.946, 306.769 208.217 L 310.039 209.866 313.104 203.794 C 316.516 197.035, 316.622 197.304, 309.167 193.844 C 303.663 191.289, 292.140 190.542, 285.821 192.331 M 322 199 L 322 207 330 207 L 338 207 338 231 L 338 255 347.500 255 L 357 255 357 231.044 L 357 207.088 364.250 206.794 L 371.500 206.500 371.792 198.750 L 372.084 191 347.042 191 L 322 191 322 199 M 379 223 L 379 255 401 255 L 423 255 423 247.500 L 423 240 409.500 240 L 396 240 396 235 L 396 230 407.500 230 L 419 230 419 222 L 419 214 407.500 214 L 396 214 396 210.529 L 396 207.058 409.250 206.779 L 422.500 206.500 422.792 198.750 L 423.084 191 401.042 191 L 379 191 379 223 M 433 223 L 433 255 442 255 L 451 255 451 247 L 451 239 454.800 239 C 458.555 239, 458.645 239.092, 462.469 246.937 L 466.339 254.874 476.172 255.187 C 481.580 255.359, 486.003 255.111, 486.002 254.636 C 486.001 254.160, 483.277 249.264, 479.949 243.754 C 473.914 233.765, 473.903 233.732, 475.836 231.619 C 480.222 226.824, 482.359 220.791, 482.431 213 C 482.512 204.192, 480.272 198.822, 475.031 195.260 C 469.795 191.703, 465.527 191.012, 448.750 191.006 L 433 191 433 223 M 448.210 213.250 L 448.500 221.500 455.338 221.500 C 461.319 221.500, 462.417 221.204, 464.088 219.139 C 465.995 216.785, 466.556 212.613, 465.379 209.545 C 464.356 206.879, 459.449 205, 453.509 205 L 447.919 205 448.210 213.250 M 163.169 209.017 C 156.337 210.583, 151.176 218.533, 152.339 225.701 C 154.672 240.077, 175.040 242.355, 180.446 228.844 C 184.978 217.516, 175.176 206.267, 163.169 209.017 M 216.676 271.715 C 216.037 272.750, 188 344.021, 188 344.612 C 188 344.863, 192.811 344.940, 198.691 344.784 L 209.381 344.500 211.894 336.750 L 214.406 329 226.550 329 L 238.694 329 242.097 336.992 L 245.500 344.983 255.250 344.992 C 262.399 344.998, 264.994 344.667, 264.979 343.750 C 264.968 343.063, 258.477 326.525, 250.555 307 L 236.150 271.500 226.656 271.215 C 221.434 271.058, 216.943 271.283, 216.676 271.715 M 273 307 C 273 326.800, 272.887 343.337, 272.750 343.750 C 272.613 344.163, 277.102 344.628, 282.727 344.785 L 292.954 345.069 293.227 327.379 L 293.500 309.689 307 327.336 L 320.500 344.982 328.262 344.991 L 336.025 345 335.762 308.250 L 335.500 271.500 326.750 271.211 L 318 270.922 317.882 286.711 C 317.816 295.395, 317.816 302.837, 317.882 303.250 C 317.947 303.663, 317.808 304, 317.574 304 C 317.340 304, 310.809 296.575, 303.060 287.500 L 288.971 271 280.985 271 L 273 271 273 307 M 223.254 303.048 L 220.078 312 226.539 312 C 230.093 312, 233 311.861, 233 311.691 C 233 311.257, 226.886 294.553, 226.636 294.302 C 226.522 294.189, 225.001 298.125, 223.254 303.048",stroke:"none",fill:i.themeType==="dark"?"#EEE":"#111",fillRule:"evenodd"}))))}function zg(i){const e=i.themeType||"dark",t=i.size||300;return n.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{style:{width:t,height:t,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:2}},n.createElement("svg",{viewBox:"0 0 2000 1728",style:{fillRule:"evenodd",clipRule:"evenodd",fill:"#00af78"}},n.createElement("style",null,` - @keyframes jump { - 0% { fill: #00af78; } - 25% { fill: #00af78; } - 25.01% { fill: #00785A; } - 100% { fill: #00785A; } - } - .bar { animation: jump 2s linear infinite; } - .bar.bar1 { animation-delay: 0s; } - .bar.bar2 { animation-delay: 0.5s; } - .bar.bar3 { animation-delay: 1s; } - .bar.bar4 { animation-delay: 1.5s; } - `),n.createElement("path",{d:"M944.5 76.5a852 852 0 0 1 129 6.5 598 598 0 0 1 51 9c19.36 5.344 38.69 10.677 58 16a834 834 0 0 1 117 52 698 698 0 0 1 95 69c2.67 2 5.33 2 8 0a410 410 0 0 1 37-28 18.4 18.4 0 0 1 6-.5q.495 10.51 4.5 20a3200 3200 0 0 0 18 73 3553 3553 0 0 0 19 66 48.8 48.8 0 0 0 2.5 11 4.94 4.94 0 0 1-1 2.5c-2.33.667-4.67.667-7 0a19 19 0 0 0-5-3 209 209 0 0 0-24-7 292 292 0 0 0-20-8c-8.68-2.341-17.34-4.674-26-7a221 221 0 0 0-21-8 337 337 0 0 1-34-11 1272 1272 0 0 1-43-13q-2.91-3.23-1.5-7.5a671 671 0 0 0 42.5-35l-1.5-3a289 289 0 0 0-21.5-18.5c-9.31-6.637-18.65-13.304-28-20a731 731 0 0 1-44-26 175 175 0 0 1-30-15 568 568 0 0 0-50-20 1038 1038 0 0 1-53-16 1070 1070 0 0 0-48-10 1087 1087 0 0 1-55-6 1379 1379 0 0 0-99 1 203.5 203.5 0 0 1-35 5Q629.152 192.558 494 414.5a132 132 0 0 1-10 17 1277 1277 0 0 0-21 43l-11 27a637 637 0 0 1-14 41 8191 8191 0 0 1-16 67 50.7 50.7 0 0 0-1 15 11.3 11.3 0 0 0 1.5 3.5 327 327 0 0 1 40 8q62.273 18.89 115 56 70.252 53.736 113.5 130.5 59.461 114.478 41 243c-.667 1.33-1.333 2.67-2 4a335 335 0 0 1-3 18 507 507 0 0 1-20 53 309 309 0 0 1-10 17c-1.699.91-3.533 1.24-5.5 1 .377-40.1-3.456-79.77-11.5-119l-3-6a154.4 154.4 0 0 0-7-27Q629.1 886.514 525.5 812a44.5 44.5 0 0 1-9.5-5.5l-1.5.5q69.98 79.772 110.5 177.5a684 684 0 0 1 21 74c.389 8.51 1.722 16.84 4 25q1.302 30.765 2.5 61.5-2.217 6.885.5 13.5l17.5 13.5a1597 1597 0 0 0 61 36 3333 3333 0 0 1 61 26q25.04 7.53 50 15a771 771 0 0 0 51 10 526.7 526.7 0 0 0 120 5c15.24-2.5 30.57-4.17 46-5 154.49-25.8 278.99-100.96 373.5-225.5 36-49.308 63.67-102.974 83-161 .29-5.821 1.96-11.154 5-16q7.2-33.086 15-66a343 343 0 0 1 4-30c-5.29 5.217-9.62 11.217-13 18-26.71 37.032-60.54 65.866-101.5 86.5a471 471 0 0 1-27 11 50.1 50.1 0 0 0-17 5q-13.77 1.158-27 5-33 2.977-66 0a153 153 0 0 0-29-5c-52.38-14.072-96.21-41.572-131.5-82.5q-58.935-72.777-58.5-167.5.345-16.269 1.5-32.5 10.89-72.278 57-128c66.33-75.505 149.5-104.339 249.5-86.5a700 700 0 0 1 48 16c4.24 2.853 8.57 5.52 13 8l6 2c20.5 12.068 38.84 26.735 55 44q2.37 1.06 4.5 2.5a442 442 0 0 0 25.5-24.5c2.59-1.601 5.26-1.767 8-.5a1168 1168 0 0 0 25.5 55 1221 1221 0 0 0 16 45c.41 6.057 2.08 11.724 5 17 .58 6.637 2.24 12.97 5 19a778 778 0 0 1 10 55c18.69 162.392-18.64 309.725-112 442-15.67 19-31.33 38-47 57-34.61 35.92-72.44 68.42-113.5 97.5q-16.53 10.545-33 21a516 516 0 0 1-35 18l-3 3c-14.49 6.96-29.16 13.63-44 20-26.02 9.5-52.35 18.17-79 26q-132.478 31.62-267 9a1979 1979 0 0 0-61-14 421 421 0 0 1-25-9c-3.333-.67-6.667-1.33-10-2-20.636-8.65-41.303-17.32-62-26-124.377-64.5-220.21-158.33-287.5-281.5a1010 1010 0 0 1-17-39l-3-4a395 395 0 0 0-15-41 374 374 0 0 1-11-36l-9-39a366 366 0 0 0-6-36 1642 1642 0 0 1-5.5-92.5q5.24-279.871 211-466 61.788-53.755 135-91a1492 1492 0 0 1 47-21l28-10 37-11a1956 1956 0 0 1 46-10 1145 1145 0 0 1 87-10.5m367 359c12.69-.014 25.35.486 38 1.5a399 399 0 0 1 39 10c56.18 22.509 95.34 62.009 117.5 118.5 21.9 63.822 14.57 123.822-22 180-20.98 28.71-47.15 51.21-78.5 67.5-37.69 16.585-77.02 21.585-118 15-69.62-14.983-118.78-54.816-147.5-119.5a284 284 0 0 1-11-39q-15.24-126.17 85.5-201.5c29.7-18.676 62.04-29.509 97-32.5"}),n.createElement("path",{d:"M899.5 258.5a2829 2829 0 0 0 135 0c5.33.53 10.66 1.03 16 1.5l1.5 1.5q.255 125.792 1.5 251.5c-.56 6.766-2.73 12.932-6.5 18.5a587 587 0 0 0-9.5 25.5 71.8 71.8 0 0 1-5.5 20.5 575 575 0 0 0-5.5 52.5 587 587 0 0 0 5.5 55.5 515 515 0 0 0 18.5 58.5c-.24.873-.57 1.707-1 2.5a4183 4183 0 0 1-152 .5 11.3 11.3 0 0 1-1.5-3.5 58052 58052 0 0 1 0-482 30 30 0 0 1 3.5-3"}),n.createElement("path",{d:"M717.5 423.5q71.002-.25 142 .5l1.5 1.5q.713 154.588.5 309 .27 6.043-2 11.5a2513 2513 0 0 1-141 1 6.98 6.98 0 0 1-3.5-2.5 37080 37080 0 0 1-1.5-314.5q-.099-4.63 4-6.5"}),n.createElement("path",{d:"M1360.5 487.5c2.13-.353 3.47.48 4 2.5-.74 4.181-1.57 8.348-2.5 12.5a13569 13569 0 0 1-34 102 27.2 27.2 0 0 0-1 8c1.33 1.838 3.16 2.838 5.5 3a937 937 0 0 1 86 0 4.95 4.95 0 0 1-.5 3 820 820 0 0 0-27 29q-50.445 59.205-100.5 119-5.535 6.54-12 12a3.6 3.6 0 0 1-1.5-1q-1.005-3 0-6a1048 1048 0 0 0 16-61c2.94-5.581 4.6-11.581 5-18l3-6a156.5 156.5 0 0 1 5-24 11.3 11.3 0 0 0-3.5-1.5l-90-1a3.6 3.6 0 0 1-1-1.5c49.72-57.045 99.38-114.045 149-171"},n.createElement("animate",{attributeName:"fill",values:`#00af78;${e==="dark"?"#ffffff":"#00785A"};#00af78`,dur:"2s",repeatCount:"indefinite"})),n.createElement("path",{className:"bar bar1",d:"M544.5 537.5q68.283-.426 136.5 1a2379 2379 0 0 1 1.5 96.5l-.5 92.5q-.918 3.798-4.5 2.5-50.249-64.14-122-103-8.75-1.76-14.5-8.5-1-39 0-78a30 30 0 0 1 3.5-3M721.5 777.5q60.628-.732 121 1.5 37.233 79.24 74.5 158.5 1 2 0 4a3116 3116 0 0 1-136.5.5 417 417 0 0 1-8.5-38.5 962 962 0 0 1-15-47 713 713 0 0 0-21-46 732 732 0 0 1-16-27q-1.122-3.51 1.5-6"}),n.createElement("path",{className:"bar bar2",d:"M879.5 777.5q93-.25 186 .5c18.83 33.513 43.5 62.179 74 86a144.6 144.6 0 0 1 23 16q13.5 5.88 25.5 14.5a574 574 0 0 1 22.5 45c-.33 1-.67 2-1 3-84.63-.161-169.3.006-254 .5q-3.752-3.208-6.5-7.5a2804 2804 0 0 1-8-20 252 252 0 0 1-13-24 3463 3463 0 0 0-23-53 1506 1506 0 0 1-27-55q-1.122-3.51 1.5-6"}),n.createElement("path",{className:"bar bar3",d:"M786.5 971.5q68.56.08 137 0a29.2 29.2 0 0 1 7 2.5 9467 9467 0 0 0 68.5 141.5c4 11.67 9.34 22.67 16 33 1.47 4.53-.2 6.87-5 7-86.772-.2-173.606-.37-260.5-.5-1.754-4.38-.921-8.22 2.5-11.5a411 411 0 0 1 10-25 578 578 0 0 0 10-32 99.6 99.6 0 0 1 5-22q2.12-21.06 5-42l1-48q1.478-1.971 3.5-3"}),n.createElement("path",{className:"bar bar4",d:"M970.5 971.5c83.58.74 167.25.74 251 0 2.73.182 5.39.682 8 1.5 18.09 35.51 36.26 71.01 54.5 106.5 7.67 13.67 15.33 27.33 23 41 2.16 3.76 2.82 7.76 2 12-10.9 7.75-22.4 14.59-34.5 20.5-2.92.99-5.92 1.65-9 2-68.48.48-136.82.65-205 .5-4.11-.08-7.28-1.74-9.5-5a3780 3780 0 0 0-67-140 71388 71388 0 0 1-12-28q-5.977-4.855-1.5-11"}),n.createElement("path",{d:"M83.5 1377.5a332.5 332.5 0 0 0 50.5 0c3.056.58 6.056 1.24 9 2a31209 31209 0 0 1 126.5 194 3.6 3.6 0 0 0 1.5-1c.652-63.71.652-127.37 0-191 .51-2.76 2.177-4.09 5-4a279.4 279.4 0 0 0 47 0c2.145-.1 3.979.56 5.5 2 .529 54.71.862 109.54 1 164.5l-.5 116.5c-.575 3.3-2.575 4.96-6 5a490 490 0 0 0-52 0q-5.74-1.74-10-6a14653 14653 0 0 0-125.5-193q-2.01 1.785-2 4.5a6168 6168 0 0 1 .5 191.5q-2.794 3.675-7.5 3a219.4 219.4 0 0 0-41 0q-5.057-.81-5.5-6c-.667-93.33-.667-186.67 0-280a19.2 19.2 0 0 0 3.5-2"}),n.createElement("path",{d:"M986.5 1377.5c17.32 1.09 34.66 1.25 52 .5 3.23 1.94 5.4 4.78 6.5 8.5 9.36 38.7 18.7 77.37 28 116 3.05 6.64 4.72 13.64 5 21 2.95 5.96 4.62 12.29 5 19 4.15 16.12 8.49 32.12 13 48 2.04-1.08 3.38-2.75 4-5 4.23-19.04 8.56-38.04 13-57 4.55-15.3 8.88-30.64 13-46 .76-4.32 1.43-8.65 2-13 4.33-15.33 8.66-30.66 13-46 2.08-12.15 4.75-24.15 8-36 .85-3.2 2.35-6.03 4.5-8.5 19.85-.22 39.68-.72 59.5-1.5 2.3-.01 4.47.49 6.5 1.5 6.53 21.92 12.37 44.09 17.5 66.5 2.94 6.32 4.61 12.99 5 20 3.56 15.24 7.89 30.24 13 45 2.47 11.74 5.14 23.41 8 35a7.4 7.4 0 0 0 2 3c2.38 11.75 5.04 23.41 8 35 1.33 3.33 3.16 6.33 5.5 9a2872 2872 0 0 1 27.5-111c.39-7.01 2.06-13.68 5-20 .39-7.01 2.06-13.68 5-20 .57-4.35 1.24-8.68 2-13 4.34-16 8.67-32 13-48l1.5-1.5c16.17-.29 32.34-.79 48.5-1.5q5.385-.045 10.5 1.5c.58.89.91 1.89 1 3-2.02 4.57-3.18 9.4-3.5 14.5-2.84 6-4.5 12.34-5 19a351 351 0 0 0-8 25c-2.97 11.6-5.63 23.27-8 35-2.56 8.31-5.23 16.65-8 25-.39 6.38-2.06 12.38-5 18a8809 8809 0 0 1-38 144q-4.725 2.91-10.5 3a410 410 0 0 0-56.5 0c-3.08-.44-5.91-1.44-8.5-3-8.05-31.19-16.88-62.19-26.5-93-.67-4-1.33-8-2-12-9.67-32.85-18.5-65.85-26.5-99-3.92 8.2-6.42 16.87-7.5 26-.72 2.45-1.72 4.78-3 7a2343 2343 0 0 1-28 109c-.72 2.45-1.72 4.78-3 7-4.17 18.07-8.51 36.07-13 54-4.52 3.47-9.69 4.8-15.5 4a685 685 0 0 0-55.5 0c-1.63-.38-3.13-1.04-4.5-2q-6-17.88-10.5-36c-10.91-43.39-21.91-86.73-33-130-2.88-5.97-4.54-12.31-5-19a32 32 0 0 1-3-7 4792 4792 0 0 0-18-75c-3.031-5.25-4.031-10.92-3-17 .995-.57 1.828-1.23 2.5-2"}),n.createElement("path",{d:"M1648.5 1406.5c16.35.64 32.68 1.3 49 2 1.4 1.35 2.06 3.02 2 5a255 255 0 0 0-.5 38c.5 1.17 1.33 2 2.5 2.5 16.33.33 32.67.67 49 1 .92.37 1.75.87 2.5 1.5.82 13.58.66 27.08-.5 40.5-17 .33-34 .67-51 1-1.17.5-2 1.33-2.5 2.5-.67 31.33-.67 62.67 0 94 2.29 23.73 15.12 33.23 38.5 28.5 4.85-3.25 10.02-4.08 15.5-2.5.64 13.67.98 27.34 1 41a11.4 11.4 0 0 1-4.5 3.5c-22.63 5.41-45.29 5.75-68 1-13.91-4.18-24.08-12.68-30.5-25.5-4.8-11.14-7.13-22.81-7-35-.65-34.59-.65-69.25 0-104-.32-1.56-1.15-2.73-2.5-3.5-9-.33-18-.67-27-1-.92-.37-1.75-.87-2.5-1.5-.21-11.69-.71-23.36-1.5-35 .19-3.23 1.85-5.06 5-5.5 9-.33 18-.67 27-1l1.5-1.5c.33-14.33.67-28.67 1-43 .98-1.31 2.15-2.31 3.5-3M1807.5 1406.5c9.18.78 18.35.78 27.5 0 7.6.35 15.1 1.18 22.5 2.5a980 980 0 0 1 1.5 43.5l1.5 1.5c15 .33 30 .67 45 1 1.17.5 2 1.33 2.5 2.5-.77 11.49-.61 22.99.5 34.5a23 23 0 0 1-2 5c-15 .33-30 .67-45 1-.92.37-1.75.87-2.5 1.5-.67 32.67-.67 65.33 0 98 1.84 19.84 12.68 28.67 32.5 26.5 4.83-.18 9.33-1.35 13.5-3.5 1.44.06 2.77.39 4 1a673 673 0 0 0 3.5 36c.38 2.82-.62 4.99-3 6.5-23.81 6.5-47.81 7.17-72 2-12.46-5.13-21.63-13.63-27.5-25.5-1.1-4.87-2.77-9.54-5-14-.33-3.33-.67-6.67-1-10-.33-39-.67-78-1-117l-1.5-1.5c-10.43-.05-20.77-.71-31-2-.66-6.59-.99-13.26-1-20 .01-6.74.34-13.41 1-20 10.26-1.26 20.59-1.93 31-2l1.5-1.5c.33-14 .67-28 1-42 .69-1.85 1.86-3.18 3.5-4"}),n.createElement("path",{d:"M878.5 1446.5c27.433-1.66 52.433 5.01 75 20 21.826 18.58 34.326 42.24 37.5 71 3.595 25.23 1.262 49.9-7 74-16.274 34.06-43.107 53.89-80.5 59.5q-48.019 5.13-88-21-30.077-28.71-35.5-70.5a400 400 0 0 1 0-40q13.828-84.585 98.5-93m1 47c25.457-.37 42.623 11.3 51.5 35q9.63 36.765-4 72-17.011 26.355-48.5 22.5a61.5 61.5 0 0 0-14-5c-7.087-4.96-12.92-11.13-17.5-18.5a28.9 28.9 0 0 0-5-11c-3.333-19.33-3.333-38.67 0-58 4.098-14.4 12.598-25.23 25.5-32.5q6.626-1.05 12-4.5"}),n.createElement("path",{d:"M447.5 1447.5c21.766-2.21 42.766.62 63 8.5 21.067 11.41 35.234 28.57 42.5 51.5q1.39 10.62 4 21a229.3 229.3 0 0 1 1 40c-1.171 1.39-2.671 2.23-4.5 2.5q-65.505.255-131 1.5c-2.062 4.18-2.229 8.51-.5 13 2.366 8.1 5.7 15.77 10 23 15.264 15.93 33.764 20.77 55.5 14.5 3.87-2.52 7.87-4.85 12-7 3.262-2.59 5.762-5.76 7.5-9.5a39.7 39.7 0 0 1 8-7 965 965 0 0 0 21.5 8.5q10.12 1.62 18.5 7.5c.667 1.67.667 3.33 0 5q-9.276 20.79-27.5 34.5c-23.698 14.22-49.365 19.55-77 16-51.283-10.29-80.116-41.45-86.5-93.5-.894-14.71-.56-29.37 1-44a86 86 0 0 0 4-18 125.3 125.3 0 0 1 10.5-23c7.797-11.96 17.464-22.13 29-30.5 12.242-7.13 25.242-11.96 39-14.5m14 42c25.166 1.33 39.166 14.5 42 39.5q-1.824 2.61-5 3a719 719 0 0 1-75-1q2.218-22.395 21-36a123 123 0 0 1 17-5.5"}),n.createElement("path",{d:"M1482.5 1447.5c14.73-.22 29.39.61 44 2.5 37.88 7.55 57.72 30.72 59.5 69.5.33 38 .67 76 1 114 1.99 9.92 2.66 19.92 2 30-.75.63-1.58 1.13-2.5 1.5-15.66-.53-31.33-.53-47 0-2.44-2.29-3.94-5.13-4.5-8.5-1.06-4.6-1.73-9.27-2-14a7.2 7.2 0 0 0-2.5-2c-4.34 5.21-9.01 10.04-14 14.5-26.31 16.05-54.31 19.72-84 11q-44.205-19.29-37.5-67.5a124 124 0 0 0 5-17c8.22-13.88 19.38-24.72 33.5-32.5 9.71-4.13 19.71-7.46 30-10 21.1-4.3 42.44-6.63 64-7 1.8-.64 3.14-1.8 4-3.5-1.04-7.84-2.88-15.5-5.5-23a34.4 34.4 0 0 1-6.5-7.5 31.4 31.4 0 0 1-8-5c-6.73-.84-13.4-2.01-20-3.5-5.98 1.27-11.98 2.44-18 3.5q-3.72 4.11-9 6c-1.8 3.1-3.97 5.94-6.5 8.5-1.37 5.77-3.7 11.1-7 16-.8 1.3-1.97 1.97-3.5 2a426 426 0 0 0-34-13.5c-3.12-1.97-6.28-3.81-9.5-5.5-.65-3.09-.32-6.09 1-9 9.52-23.19 26.36-38.35 50.5-45.5a221 221 0 0 1 27-4.5m28 122c6.92-.31 13.76.02 20.5 1 2.47 19.95-4.37 35.78-20.5 47.5-4.04.9-7.7 2.57-11 5q-16.545 4.515-33 0c-16.58-9.72-18.91-22.05-7-37 2.29-1.29 4.29-2.96 6-5 14.59-5.91 29.59-9.74 45-11.5"}),n.createElement("path",{d:"M578.5 1454.5q29.139-.72 58 1.5c1.167 1.17 2.333 2.33 3.5 3.5a800 800 0 0 0 34 54c1.667-1.33 3.333-2.67 5-4a337 337 0 0 1 18-30 182 182 0 0 0 16.5-23.5 222 222 0 0 1 29-1.5c8.667.17 17.333.33 26 .5q3.726 3.42.5 7.5a2217 2217 0 0 0-63.5 93.5 103.5 103.5 0 0 0 8.5 15.5 5919 5919 0 0 1 59 85c2.155 3.04 1.988 5.87-.5 8.5a457 457 0 0 0-51 .5q-3.55-.51-7-1.5a728 728 0 0 1-40-60.5c-2.341-1.21-4.507-.88-6.5 1a926 926 0 0 1-28 45 120 120 0 0 1-11.5 14.5l-7.5 1.5c-16.734-.89-33.4-1.23-50-1q-.411-4.725 2-9a2463 2463 0 0 0 67.5-97.5 9.6 9.6 0 0 0-1.5-4.5 1263 1263 0 0 1-46-69l-18-24q-1.615-5.115 3.5-6"}))))}const hg=` -.logo-background-light, .logo-background-colored { - background: white; -} -.logo-background-dark, .logo-background-blue { - background: black; -} -`;function Ig(i){ye(()=>{if(!window.document.getElementById("vendor-iobroker-component")){const t=window.document.createElement("style");t.setAttribute("id","vendor-iobroker-component"),t.innerHTML=hg,window.document.head.appendChild(t)}},[]);const e=i.themeType||i.themeName||"light";return n.createElement("div",{className:`vendor-logo-back logo-background-${e}`,style:{display:"flex",flexDirection:"column",height:"100%",width:"10%",margin:"auto",backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:i.themeType==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{style:{flexGrow:1}}),n.createElement(er,{color:"secondary",size:i.size||200,thickness:5}),n.createElement("div",{style:{flexGrow:1}}))}const wg=` -/** - * Copyright 2018-2024 Denis Haev (bluefox) - * - * MIT License - * - **/ - -.logo-background-light, .logo-background-colored { - background: white; -} -.logo-background-dark, .logo-background-blue { - background: black; -} -.logo-div { - position: absolute; - top: 50%; - left: 50%; - -ms-transform: translateX(-50%) translateY(-50%); - -webkit-transform: translate(-50%,-50%); - transform: translate(-50%,-50%); - overflow: hidden; - border-radius: 50%; - z-index: 2; -} -.logo-border { - /*border-color: #164477;*/ - border-top-color: #3399CC; - border-left-color: #164477; - border-bottom-color: #164477; - border-right-color: #164477; - border-radius: 50%; - border-style: solid; - box-sizing: border-box; - width: 100%; - height: 100%; - position: absolute; -} -.logo-top { - position: absolute; - width: 4.5%; - height: 16%; - top: 0; - z-index: 2; -} -.logo-i { - position: absolute; - width: 14.5%; - height: 60%; - top: 20%; - left: 42%; - background: #3399CC; -} -.logo-i-top { - position: absolute; - width: 14.5%; - height: 4%; - left: 42%; - background: #3399CC; - border-radius: 100%; -} -.logo-back { - width: 100%; - height: 100%; - z-index: 0; - overflow: hidden; -} -@keyframes logo-grow { - 0% { - width: 230px; - height: 230px; - transform: translate(-50%,-50%) scale(1); - opacity: 1 - } - 99% { - width: 230px; - height: 230px; - transform: translate(-50%,-50%) scale(10); - opacity: 0; - } - 100% { - width: 0; - height: 0; - opacity: 0; - } -} -@keyframes logo-spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } -@keyframes logo-color-inside-light { - 0% { - background: #FEFEFE; - } - 100% { - background: #3399CC; - } -} -@keyframes logo-color-inside-dark { - 0% { - background: #030303; - } - 100% { - background: #3399CC; - } -} -@keyframes logo-color-inside-colored { - 0% { - background: #FEFEFE; - } - 100% { - background: #3399CC; - } -} -@keyframes logo-color-inside-blue { - 0% { - background: #030303; - } - 100% { - background: #3399CC; - } -} - -@keyframes logo-color-outside-light { - 0% { - border-color: #FEFEFE; - } - 100% { - border-top-color: #3399CC; - border-left-color: #164477; - border-bottom-color: #164477; - border-right-color: #164477; - } -} -@keyframes logo-color-outside-dark { - 0% { - border-color: #040404; - } - 100% { - border-top-color: #3399CC; - border-left-color: #164477; - border-bottom-color: #164477; - border-right-color: #164477; - } -} -@keyframes logo-color-outside-colored { - 0% { - border-color: #FEFEFE; - } - 100% { - border-top-color: #3399CC; - border-left-color: #164477; - border-bottom-color: #164477; - border-right-color: #164477; - } -} -@keyframes logo-color-outside-blue { - 0% { - border-color: #040404; - } - 100% { - border-top-color: #3399CC; - border-left-color: #164477; - border-bottom-color: #164477; - border-right-color: #164477; - } -} - -.logo-animate-wait { - animation: logo-color-outside 1.5s, logo-spin 1.5s linear infinite; -} - -.logo-animate-grow-light { - background: #DDD; -} -.logo-animate-grow-dark { - background: #1d1d1d; -} -.logo-animate-grow-colored { - background: #DDD; -} -.logo-animate-grow-blue { - background: #1d1d1d; -} - -.logo-animate-grow { - display: inline-block; - text-align: center; - z-index: 1; - top: 50%; - left: 50%; - -ms-transform: translateX(-50%) translateY(-50%); - -webkit-transform: translate(-50%,-50%); - transform: translate(-50%,-50%); - width: 245px; - height: 245px; - border-radius: 50%; - position: absolute; - animation: logo-grow 1s 1 ease forwards; -} - -.logo-animate-color-inside-light { - animation: logo-color-inside-light 2.5s; -} -.logo-animate-color-inside-dark { - animation: logo-color-inside-dark 2.5s; -} -.logo-animate-color-inside-colored { - animation: logo-color-inside-colored 2.5s; -} -.logo-animate-color-inside-blue { - animation: logo-color-inside-blue 2.5s; -} - -.logo-animate-color-outside-light { - animation: logo-color-outside-light 1.5s; -} -.logo-animate-color-outside-dark { - animation: logo-color-outside-dark 1.5s; -} -.logo-animate-color-outside-colored { - animation: logo-color-outside-colored 1.5s; -} -.logo-animate-color-outside-blue { - animation: logo-color-outside-blue 1.5s; -} -`;function Cg(i){ye(()=>{if(!window.document.getElementById("loader-iobroker-component")){const s=window.document.createElement("style");s.setAttribute("id","loader-iobroker-component"),s.innerHTML=wg,window.document.head.appendChild(s)}},[]);const e=i.size||234,t=i.themeName||i.theme||i.themeType||"light";return n.createElement("div",{className:`logo-back logo-background-${t}`,style:{backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:void 0,backgroundSize:"cover"}},window.loadingHideLogo==="true"?null:n.createElement(n.Fragment,null,n.createElement("div",{className:"logo-div",style:{width:e,height:e}},n.createElement("div",{className:`logo-top logo-background-${t}`,style:{left:"37%"}}),n.createElement("div",{className:`logo-top logo-background-${t}`,style:{left:"57%"}}),n.createElement("div",{className:`logo-border logo-background-${t} logo-animate-wait`,style:{borderWidth:e*.132}}),n.createElement("div",{className:`logo-i logo-animate-color-inside-${t}`}),n.createElement("div",{className:`logo-i-top logo-animate-color-inside-${t}`,style:{top:"18%"}}),n.createElement("div",{className:`logo-i-top logo-animate-color-inside-${t}`,style:{bottom:"18%"}})),n.createElement("div",{className:`logo-animate-grow logo-animate-grow-${t}`,style:{width:e+11,height:e+11}})))}const Ag=` -.logo-background-light, .logo-background-colored { - background: white; -} -.logo-background-dark, .logo-background-blue { - background: black; -} -.pt-logo-div { - position: absolute; - top: 50%; - left: 50%; - -ms-transform: translateX(-50%) translateY(-50%); - -webkit-transform: translate(-50%,-50%); - transform: translate(-50%,-50%); - z-index: 2; -} -.pt-logo-border { - border-style: solid; - box-sizing: border-box; - width: 100%; - height: 100%; - position: absolute; -} -.pt-loader-block { - height: 65px; - width: 74px; - border-radius: 15px; - position: absolute; - box-sizing: content-box; -} -.pt-loader-blue { - border: 9px solid #0F99DE; - transform: rotate(5grad); - left: 93px; - top: 0; - animation: spin-blue 5s ease-in-out infinite; -} -.pt-loader-green { - border: 9px solid #88A536; - transform: rotate(-6grad); - left: 70px; - top: 58px; - animation: spin-green 5s ease-in-out infinite; -} -.pt-loader-red { - border: 9px solid #BD1B24; - transform: rotate(-15grad); - left: 24px; - top: 100px; - animation: spin-red 5s ease-in-out infinite; -} - -@keyframes spin-blue { - 0% { - transform: rotate(5deg); - } - 25% { - transform: rotate(185deg); - } - 50% { - transform: rotate(185deg); - } - 75% { - transform: rotate(185deg); - } - 100% { - transform: rotate(185deg); - } -} -@keyframes spin-green { - 0% { - transform: rotate(-6deg); - } - 25% { - transform: rotate(-6deg); - } - 50% { - transform: rotate(174deg); - } - 75% { - transform: rotate(174deg); - } - 100% { - transform: rotate(-6deg); - } -} -@keyframes spin-red { - 0% { - transform: rotate(-15deg); - } - 25% { - transform: rotate(-15deg); - } - 50% { - transform: rotate(-15deg); - } - 75% { - transform: rotate(165deg); - } - 100% { - transform: rotate(165deg); - } -} -`;function mg(i){const e=i.size||200;ye(()=>{if(!window.document.getElementById("pt-iobroker-component")){const s=window.document.createElement("style");s.setAttribute("id","pt-iobroker-component"),s.innerHTML=Ag,window.document.head.appendChild(s)}},[]);const t=i.themeType||i.themeName||"light";return n.createElement("div",{className:`pt-logo-back logo-background-${t}`,style:{backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:i.themeType==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{className:"pt-logo-div",style:{width:e,height:e}},n.createElement("div",{style:{width:200,height:200}},n.createElement("div",{className:"pt-loader-blue pt-loader-block"}),n.createElement("div",{className:"pt-loader-green pt-loader-block"}),n.createElement("div",{className:"pt-loader-red pt-loader-block"}))))}const On="loader-ha-spin-keyframes",pg=` -@keyframes loaderHA-spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -}`;function Og(i){const e=i.themeType||"dark",t=i.size||270,s=t*1.5,r=t*14/270,o=t*280/270;return n.useEffect(()=>{if(!window.document.getElementById(On)){const M=window.document.createElement("style");M.setAttribute("id",On),M.innerHTML=pg,window.document.head.appendChild(M)}},[]),n.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundImage:i.backgroundImage&&i.backgroundImage!=="@@loginBackgroundImage@@"?i.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:i.backgroundColor&&i.backgroundColor!=="@@loginBackgroundColor@@"?i.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},n.createElement("div",{style:{position:"relative",width:s,height:s,display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement("div",{style:{position:"absolute",top:-r,left:-r,right:-r,bottom:-r,border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.50)`,borderRadius:"50%",animation:"loaderHA-spin 3.6s linear infinite"}}),n.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.75)`,borderRadius:"50%",animation:"loaderHA-spin 2.2s linear infinite"}}),n.createElement("div",{style:{width:t,height:t,zIndex:1,display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 69.6 148.1",style:{width:"100%",height:"100%"}},n.createElement("path",{fill:"#db0a33",d:"M69.5,100.6c0-.4,0-.8-.2-1.1v-.7c-.2-.4-.3-.8-.5-1.2,0-.2-.2-.5-.3-.7,0,0,0-.2,0-.2,0-.2,0-.3-.2-.5l-.4-.7-.4-.6c-1-1.6-2.4-3-4.2-4.3-.3-.2-.6-.4-.9-.6,0,0-.2,0-.3-.2-.3-.2-.6-.3-.9-.5-.2,0-.3-.2-.5-.3-.3-.2-.6-.3-.9-.5,0,0-.2,0-.3-.2-1-2.7-2.4-4.9-3.8-6.7h0c2.5,0,6.6-.3,7.5-3,3.5-3,2.5-9.7,2.5-10,0-.6-.2-1.1-.4-1.7h0v-.3c.5-3-.4-7.1-.5-7.7h0l-.3-1.1c0-.3-.2-.7-.4-1,0-.4-.3-.7-.4-1,0-.3-.3-.7-.5-1s-.4-.7-.6-1c-.2-.3-.4-.6-.6-.9l-.4-.4-.4-.4-.4-.4c0,0-.3-.3-.5-.4-.3-.2-.6-.4-1-.6-.2,0-.4-.2-.5-.2-.2,0-.4,0-.6-.2-.2,0-.4,0-.6,0h-1.8c-.4,0-.8,0-1.1.2-.4,0-.7.2-1.1.4h0c-1.6-.2-2.6-1-3.1-1.7h0c2-.9,3.5-1.9,4.6-3,2.6-2.2,4-5.1,4.7-7.2,3.4-1.1,5.4-4,5.4-4h0c4.6-5.3,1.2-15.1,1.2-15.1,0,0-.8,4.2-4,5.5,0-.3-.2-.6-.3-1.1s-.3-1.1-.6-1.7c-.2-.7-.5-1.4-.9-2.2-.4-.8-.8-1.6-1.4-2.4-.5-.8-1.2-1.7-1.9-2.5h0C59.2,6.6,49.2.3,49.2.3c0,0,3.3,5.8,1.3,9.9,0,0-3.5-.8-5.7-.8s-2.4.1-3.5.3c-.5.1-1.1.2-1.6.3-.3,0-.5.1-.8.2-.2,0-.5.1-.7.2-.5.1-.9.2-1.3.4-.4.1-.8.3-1.2.4-.4.1-.7.2-1,.3s-.6.2-.9.3h-.2c-2-2.8-3.7-7.5,1.8-11.9,0,0-13,5.3-8.2,17,0,0,0,.2-.1.4h0c-.3.3-.6.7-1,1.3-.3.6-.7,1.3-.9,2.1-.1.4-.2.8-.2,1.3v1.5c-.2-.1-.5-.2-.9-.4-1.7-.8-1.7-2.8-1.7-2.8-1.1,8.3,4.2,13.3,5.2,14.1,0,.4,0,.7-.2,1v.4c-.2,0-.3.3-.4.5-.1.4-.2.7-.3,1.1-.1.7-.1,1.5,0,2.2s.3,1.4.5,2c.3.6.6,1.2.9,1.7,0,0,0,0,.1.2.4.6,1,1.4,2,2h.1c.2,0,.8.5,1.7.7.2.2,1.5,1.7,3.1,2.1-.2,1.1-1,2.8-3.4,3.7,0,0-14.2-.4-13.2,13.5-6.6,8.7-3.8,13.4-3.8,13.4-.9.6-.9,1.9-.5,3,0,0,0,.3.2.5,0,0,0,0,.3.4.3.4.6.7,1,.8,1.1.7,3.1,1.5,6.4,1.1.2.3,1.3,1.8,1.3,2.2.5,2.3,1.2,4.5,1.3,6.8l.2,1.3c-2.2-.2-11-.2-16.6,9.1,0,0-.2.2-.2.4l-.5.9-.6,1.2h0c-.3.7-.7,1.7-1.1,2.8-.5.4-1.2,0-1.7-.3-.4-.4-.7-.7-.9-1.1,0,0,0-.2,0-.3v-.2s0-.2-.2-.2h0c0,0,0,0-.2-.2h-.4s-.2,0-.2,0c-.2,0-.2.2-.3.3,0,0-.1.2-.2.2,0,.2-.2.3-.2.5-.2.6-.4,1.2-.6,1.8-.6,2.4-.6,4.9-.1,7.3.2,1.2.6,2.4,1.1,3.5.5,1.1,1.2,2.1,2,3.1.8.9,1.7,1.8,2.7,2.5s2,1.3,3.1,1.8h0l.6.4-.3-.7c-.2-.4-.3-.9-.5-1.3-.1-.4-.2-.9-.3-1.3-.1-.9-.2-1.8,0-2.7,0-.4.2-.8.4-1.2.2-.4.4-.7.7-1.1.6-.8,1-1.6,1.5-2.5.4-.9.8-1.8,1.1-2.7.1-.5.3-1,.3-1.5v-.9h0c.1-2.3-1.9-3-3-2.9-.9,0-1.7.2-2,.2.7-1.3,1.3-2.4,2-3.4h0c.2-.4.4-.6.6-.9.4-.5.8-1,1.2-1.5.1,0,.2-.3.3-.4h0c.1,0,.2-.2.3-.4.1,0,.2-.3.4-.4,6.5-6.5,12.5-2.9,12.5-2.9,0,0,1.1,3.7,1.6,4.6h0c1,2.3,2.7,4.6,4.1,6.9h0c0,0,0,4.8,2.2,7.2.5.6,1.1,1.3,1.7,2.2.3.5.5,1,.7,1.4.2.3.3.6.4.9.3.4.5.8.8,1.3s.6,1,.8,1.6c.2.5.4,1,.6,1.5,0,0,1,5.1.7,7.4-3.3.9-5.5,2.4-7.4,3.2-1,.3-3.4,2-5.5,1.9h-.5c0,.1-3.6.3-2.7,3.1,0,0,.2,3.6,5.8,2.9,1.8-.1,7.5-.5,9.1-.3,1.6.2,2.8.2,3.7.1,1.3,0,3.8,0,5.3-.4.4,1.8,3.2,2.4,6,1.5,3.6,1.6,13.5,2,15.6-1.6,2.4-4.1-2.4-8.6-4.1-12.6-3.8-9.3-.8-14-1.6-16.8,0-.7-.2-1.8-.4-3.2.8-.4,1.5-.8,2.2-1.3,1-.7,1.7-1.4,2.3-2.1l.2-.2c0,0,.2-.3.3-.4l.6-.9.6-1.2.4-1.1.3-1.2v-.8c0-.3,0-.5,0-.7h0v-2.4h.2ZM52.6,131.9c-.3.4-.7.9-1.2,1.6-1-.6-2.7-2.2-3.3-4.3,0-.2,0-.3-.2-.5-1.1-6.9-2.6-9.7-3.2-10.6-1-3.7-1.7-7.4-1.3-9.6,0,0,3.6,8.2,6.4,10,0,0,3.7,8.5,4.5,9.9.6,1-.9,2.3-1.7,3.5ZM63.6,102.7h0v.2h0v.9c0,0-.3.4-.3.4,0,0,0,.2,0,.3v.2h0v.2h0l-.2.2c-.3.6-.8,1.1-1.3,1.5h0c-.3-2.4-.6-5.1-.8-8.2.2-.5.3-1.1.4-1.7l.2.2c.2.2.4.4.5.6.2.2.3.4.5.7,0,.2.3.4.4.7h0c0,.3.2.5.3.7,0,.2.2.5.2.7h0v.3c0,.2,0,.4,0,.6v.7h0v.7h0Z"}))),n.createElement("div",{style:{position:"absolute",width:o,zIndex:2,top:"57.5%",left:"50%",transform:"translate(-50%, -155%)"}},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 7152 512",width:"100%",height:"auto"},n.createElement("path",{fill:"#fff",d:"M4566 0h1053v5h25c2 5 2 5 1 8h16q3 3 2 7l3 1 4 1 2 7h2l12 1q3 1 2 6v3h7q3 4 2 10v6h3l4 1 1 8 3-1 5 2 1 7 7 1 1 14v2h3q3 0 5 2l1 9v22l3 1 4 1 1 7v41q0 3-3 5l-5 1v26q1 3-2 5h-8l1 2v8l-1 8h-8v16q-3 3-7 2l-1 3-2 5h-6v6l-1 11h-7l-1 8-10 1h-6l-1 3-1 4-7 2v3l-2 4h-16l1 2-2 6h-15v3l-3 6-10 1h-11l-10 2q1 3-2 5l-8 1h-796l-4-1-2-7h-2q-7 0-14-2v-8h-8l-1-7h-3l-4-1q-2-5-2-10v-62l2-6 7-1v-3l2-4h7v-8l5-1h3v-3l1-5q3-2 8-1h57l140-1h602v-3l2-4h7l1-8 8-1v-31l-7-1q-2-2-2-5v-2l-3-1q-5 0-6-4v-5h-3l-11 1-2-2v-7h-917l-1 8-23 1h-14l-5-1v7l-9 3h-7l-1 3-1 4-9 1h-6l-1 3-2 5h-6v3q0 3-2 5l-6 1v3q0 3-4 5h-5v15l-2 2h-7v16h-8v110h8v24h6l3 3v5l3 1q4 0 6 4l-1 5 9 2v6h3q3 0 5 2l1 6h2l5 1q2 4 0 8h2q12-3 23 1l1 5v3l2-1h1069l9 1 1 8h18l7 2 1 6h3q3 0 5 4l1 5h3q3 0 5 4v12l3 1 5 2v21l1 17v3l-1 8-5 3-3 1v8l-2 7h-8l1 2-1 6h-16v5H4571v-5h-42v-8h-16q-2-3-2-7h-7l-4-1q-3 1-5-2v-7l-2 1h-8q-4 0-7-2l-1-8-3 1h-3q-2-1-2-6v-3h-3q-5 1-6-2l1-6h-3l-6-2-1-6h-3q-3 0-5-4v-6l-3 1h-3q-3-4-3-10v-7l-8-1 1-8h-9l-1-7v-2l1-8h-7q-2-3-2-8v-18l-2 1-6-2-1-9v-23h-2q-3 1-5-2V186l1-3h7v-32q3-4 8-3v-19q0-4 3-6h6l-1-2q-1-8 3-14h7v-7q3-2 7-2v-9c1-6 1-6 3-8h6v-3l1-5 7-1 1-3q1-5 3-5l6-1v-3q-1-3 2-5h6v-3q-1-3 2-5l6-1v-2l2-5 7-2 1-6 6-2 2 1v-3q-1-4 2-6l7-1h7v-3l2-4h16V5h34l-1-4zM1620 0h1065v5h23l3 1v6l15 1 2 6-1 2h7q3 3 3 8h3l5 3v7h3l5 1v7h3l5 1v7h3q4 0 6 2l1 6 3 1 5 2v15l8 2v24h7q3 4 2 10v395h-130V169l-7-2q-2-4-2-9v-6l-3-1-5-2v-15l-11 1-2-1-4-2v-7l-3 1h-17l-5-1v-8h-900v7c-4 4-14 2-19 2h-18l-5-1v3q1 5-2 6l-15 1h-4l-5-1v7q-3 3-7 2l-1 3-2 5h-7l1 3-2 5h-8v8l-4 1h-3v9c-1 6-1 6-3 8h-6v21l-1 3-7 1v83l7 1 1 3v22h3l5 1 1 15h3l4 2v7h7q3 4 2 9l9 2v6h3q3-1 5 2l1 6h11q3 0 5 2l1 6h4l12 2 1 7h714l8 2 1 5-1 2h18l8 2-1 6 9 1 1 9 7-1 1 9v3l1 6v7h3l4 2v33l-6 2-2-1v22l-2 4-7 1v3l-1 4h-8v5h-784v-5h-41c-2-5-2-5-1-8h-16q-2-3-2-7h-7l-4-1q-3 0-5-2v-7l-2 1h-4l-3-6v-3h-10q-3 0-7-2v-7h-3l-5-1-1-7h-3q-3 1-5-2l1-6-8-1q-2-5-2-11v-6h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-6-3-1q-5-1-5-3-2-8 0-14h-7q-2-5-2-10v-7l-2 1-4-1q-4-3-3-7v-18h-2q-3 1-5-2v-41h-7q-2-3-2-8V193q4-2 9-2v-41l5-1h3v-21l1-4 7-1v-10l2-6h7l-1-2q-1-7 2-15l8-1v-3l1-5h7V66q3-4 8-3v-3l3-5 6-1v-3l2-4h7v-7l6-2 2 1v-3q0-5 2-6l10-1h6l-1-2 1-4q4-3 9-2h7v-3q0-3 2-5h15l-1-3 3-5 7-1h25zM4137 0h130v392q1 3-2 5l-6 1v20l-1 4-7 2v2q1 7-2 13l-7 1v4c0 10 0 10-3 13h-6v3q1 3-2 5l-6 1v3l-2 4h-7v3l-2 6h-7v3q1 4-2 6h-6v3q1 3-2 5h-24v3l-1 5h-24l1 2v2q-3 2-6 1H3057v-5h-24l-2-6 1-2h-16l-1-5v-3h-9c-6 0-6 0-8-2l-1-7-3 1-5-3v-7l-2 1-6-2v-7h-7l-2-6 1-2h-3q-4 1-6-2v-6h-3l-4-1q-2-5-2-10v-7h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-7v-16h-3q-5-1-5-3l-1-7v-17l-2 1-6-2v-77c0-6 0-6 2-8h6v-27q-1-4 2-7l7-1v-11q-1-3 2-5l6-1v-7l1-4 1-5h7v-15q3-4 8-3l1-3 1-4 8-1v-3l1-5h7v-3q-1-4 2-6l6 1v-3q0-4 2-6l6-2v-2l3-5h15v-3q-1-3 2-5h15l-1-2 1-4 3-3h21l1-3q1-5 3-5l14-1h638v-2l2-6h148q3 0 5 2l1 6h13c7 0 7 0 11 2l2 7 7 1v8h7q3 5 2 12v66l-1 8-8 1v7q-3 3-7 2l-1 3-1 4-7 1h-211l-230 1h-333v3l-2 4h-24v7l-6 3q-4 3-4 7l-7 1v3q1 3-2 5h-7v3l-1 5h-7l1 49 6 1 1 5v3h8l1 6v3l-1 7h11q4-1 7 3v6l3-1 12 1q3 2 2 6v3l3-1h993l5 1v-3q-1-4 2-6l6-1v-3q0-3 4-5h6l-1-2 2-6h7v-3l2-14h5zM0 0h126l1 8v144l-1 5h932l106-1 7 1h4q3 0 5 2l2 6h52l5 2v7h9l8 1q2 4 1 8h2q7-2 14 1l1 7h11l5 1q2 4 1 8l3-1 5 3v7h8v16h7l4 8h2l5 3v23h3q3 0 5 2v24h7q3 7 2 14v137l-1 32v16q1 6-2 7h-5v7l-1 3-1 6h-16l1 3-1 2h-79v-4h-7l-3-1-6-1-1-8v-7h-6q-2-4-2-10V338h-3q-3 1-5-2l-1-9v-6h-3l-5-2v-16h-16l-2-6 1-2h-16l-1-1v-7H126l1 2v188c0 11 0 11-3 14h-7v15l-4 1h-12v5H22l-1-3 1-2h-3q-5 1-6-2v-5h-3l-5-2v-7H0zM6537 0h606v5l8 1 1 16v82l-3 4-8 1h-6v3l-1 4q-5 2-10 1h-509v3l-1 5q-13 2-24 0v3q1 5-2 6l-6 1h-4l-5-1v3l-1 5-7 2v8q0 6-2 7l-7 1v210c0 7 0 7-2 10h-7v32q-3 3-8 2v15q-2 3-5 2h-3v2q1 8-2 15l-7 1v7l-1 3-1 6h-7v7l-6 2-2-1v3q1 5-2 6l-9 2h-6v5q-4 3-9 2v3q1 3-2 5h-15l1 3-2 5h-33l1 3-1 2h-589v-5h-8v-8h-7l-3-10v-6l-3-1-4-1-1-7v-48l2-5 7-1v-10q-1-3 2-5 2-2 6-2l1-3 2-5h32v-7q6-3 12-2h498l8 1v-3q0-3 2-5l7-2h8l2-7 7-1v-11q0-3 2-5h6V167l1-8q4-4 8-3v-44l1-5h8V84l1-3h7V66l8-4v-2l3-5 6-1v-9l1-6h8v-8q8-3 15-2l1-3 3-5h6v-3q-1-3 2-5h15v-3q-1-3 2-5h24z"})))))}function Eg(i){const e=window.vendorPrefix;return e==="PT"?n.createElement(mg,{themeType:i.themeType}):e==="MV"?n.createElement(dg,{themeType:i.themeType}):e==="NW"?n.createElement(zg,{themeType:"dark"}):e==="HA"?n.createElement(Og,{themeType:"dark"}):e&&e!=="@@vendorPrefix@@"?n.createElement(Ig,{themeType:i.themeType}):n.createElement(Cg,{themeType:i.themeType})}class qs extends ze{onHashChangedBound;constructor(e){super(e),this.onHashChangedBound=this.onHashChanged.bind(this)}componentDidMount(){window.addEventListener("hashchange",this.onHashChangedBound)}componentWillUnmount(){window.removeEventListener("hashchange",this.onHashChangedBound)}onHashChanged(){}static getLocation(){let e=window.location.hash;e=e.replace(/^#/,"");const t=e.split("/").map(s=>{try{return s?decodeURIComponent(s):""}catch{return console.error(`Router: Cannot decode ${s}`),s}});return{tab:t[0]||"",dialog:t[1]||"",id:t[2]||"",arg:t[3]||""}}static doNavigate(e,t,s,r){let o="";const M=qs.getLocation();r!==void 0&&!s&&(s=M.id),s&&!t&&(t=M.dialog),(t&&!e||e===null)&&(e=M.tab),e&&(o=`#${e}`,t&&(o+=`/${t}`,s&&(o+=`/${s}`,r!==void 0&&(o+=`/${r}`)))),window.location.hash!==o&&(window.location.hash=o)}}function _g(){const i=document.getSelection();if(!(i!=null&&i.rangeCount))return()=>{};let e=document.activeElement;const t=[];for(let s=0;s{i.type==="Caret"&&i.removeAllRanges(),i.rangeCount||t.forEach(s=>i.addRange(s)),e&&e.focus()}}const En={"text/plain":"Text","text/html":"Url",default:"Text"},fg="Copy to clipboard: #{key}, Enter";function Sg(i){const e=`${/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl"}+C`;return i.replace(/#{\s*key\s*}/g,e)}function Hc(i,e){let t,s,r,o,M=!1;e=e||{};const a=e.debug||!1;try{if(t=_g(),s=document.createRange(),r=document.getSelection(),o=document.createElement("span"),o.textContent=i,o.ariaHidden="true",o.style.all="unset",o.style.position="fixed",o.style.top="0px",o.style.clip="rect(0, 0, 0, 0)",o.style.whiteSpace="pre",o.style.userSelect="text",o.addEventListener("copy",l=>{var N,c,L,j;if(l.stopPropagation(),e!=null&&e.format)if(l.preventDefault(),typeof l.clipboardData>"u"){a&&console.warn("unable to use e.clipboardData"),a&&console.warn("trying IE specific stuff"),(N=window.clipboardData)==null||N.clearData();const g=En[e.format]||En.default;(c=window.clipboardData)==null||c.setData(g,i)}else(L=l.clipboardData)==null||L.clearData(),(j=l.clipboardData)==null||j.setData(e.format,i)}),document.body.appendChild(o),s.selectNodeContents(o),r==null||r.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");M=!0}catch(u){a&&console.error("unable to copy using execCommand: ",u),a&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",i),M=!0}catch(l){a&&console.error("unable to copy using clipboardData: ",l),a&&console.error("falling back to prompt");const N=Sg("message"in e?e.message||"":fg);window.prompt(N,i)}}finally{r&&(s&&typeof r.removeRange=="function"?r.removeRange(s):r.removeAllRanges()),o&&document.body.removeChild(o),t&&t()}return M}class D{static translations={};static unknownTranslations=[];static lang=window.sysLang||"en";static _disableWarning=!1;static setLanguage(e){e&&(D.lang=e)}static extendTranslations(e,t){if(e.prefix){const s=e;if(typeof s.prefix=="string"){const r=s.prefix;delete s.prefix,Object.keys(s).forEach(o=>{const M=o,a={},u=s[M];Object.keys(u).forEach(l=>{l&&u&&(l.startsWith(r)?a[l]=u[l]:a[`${r}${l}`]=u[l])}),e[M]=a})}else console.warn("Found prefix in translations, but it is not a string")}try{if(!t)e.en&&e.de&&e.ru?Object.keys(e).forEach(s=>{const r=s;D.translations[r]||={},Object.assign(D.translations[r],e[r])}):Object.keys(e).forEach(s=>{const r=e[s];Object.keys(r).forEach(o=>{const M=o,a=D.translations[M];a?a[s]?a[s]!==r[M]&&console.warn(`Translation for word "${s}" in "${M}" was ignored: existing = "${a[s]}", new = ${r[M]}`):a[s]=r[M]:console.warn(`Used unknown language: ${M}`)})});else{D.translations[t]||console.warn(`Used unknown language: ${t}`),D.translations[t]||={};const s=D.translations[t];Object.keys(e).forEach(r=>{s[r]?s[r]!==e[r]&&console.warn(`Translation for word "${r}" in "${t}" was ignored: existing = "${s[r]}", new = ${e[r]}`):s[r]=e[r]})}}catch(s){console.error(`Cannot apply translations: ${s}`)}}static setTranslations(e){e&&(D.translations=e)}static getLanguage(){return D.lang}static t(e,...t){const s=D.translations[D.lang];if(s){const r=s[e];if(r)e=r;else if(D.unknownTranslations.includes(e)||(D.unknownTranslations.push(e),!D._disableWarning&&console.log(`Translate: ${e}`)),D.lang!=="en"&&D.translations.en){const o=D.translations.en[e];o&&(e=o)}}for(const r of t)e=e.replace("%s",r);return e}static i18nShow(e){const t={};e?typeof e=="string"?(D.unknownTranslations.forEach(s=>{s.startsWith(e)&&(t[s]=s.replace(e,""))}),console.log(JSON.stringify(t,null,2))):e&&typeof e=="object"&&(D.unknownTranslations.forEach(s=>{e.test(s)&&(t[s]=s)}),console.log(JSON.stringify(t,null,2))):(D.unknownTranslations.forEach(s=>t[s]=s),console.log(JSON.stringify(t,null,2)))}static disableWarning(e){D._disableWarning=!!e}}window.i18nShow=D.i18nShow;window.i18nDisableWarning=D.disableWarning;const rt="material",xg=["Su","Mo","Tu","We","Th","Fr","Sa"],kg=["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Er={0:"0x00 - good",1:"0x01 - general problem",2:"0x02 - no connection problem",16:"0x10 - substitute value from controller",32:"0x20 - substitute initial value",64:"0x40 - substitute value from device or instance",128:"0x80 - substitute value from sensor",17:"0x11 - general problem by instance",65:"0x41 - general problem by device",129:"0x81 - general problem by sensor",18:"0x12 - instance not connected",66:"0x42 - device not connected",130:"0x82 - sensor not connected",68:"0x44 - device reports error",132:"0x84 - sensor reports error"},_n={JVBERi0:"pdf",R0lGODdh:"gif",R0lGODlh:"gif",iVBORw0KGgo:"png","/9j/":"jpg",PHN2Zw:"svg",Qk1:"bmp",AAABAA:"ico"};class E{static namespace=rt;static INSTANCES="instances";static dateFormat=["DD","MM"];static FORBIDDEN_CHARS=/[^._\-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu;static CapitalWords(e){return(e||"").split(/[\s_]/).filter(t=>t).map(t=>t?t[0].toUpperCase()+t.substring(1).toLowerCase():"").join(" ")}static formatSeconds(e){const t=Math.floor(e/86400);e%=3600*24;const s=Math.floor(e/3600).toString().padStart(2,"0");e%=3600;const r=Math.floor(e/60).toString().padStart(2,"0");e%=60;const o=Math.floor(e).toString().padStart(2,"0");let M="";return t&&(M+=`${t} ${D.t("ra_daysShortText")} `),M+=`${s}:${r}:${o}`,M}static getObjectName(e,t,s,r,o){var u;const M=e[t];let a;if(typeof s=="string"&&!r&&(r={language:s},s=null),r=r||{},r.language||(r.language=e["system.config"]&&e["system.config"].common&&e["system.config"].common.language||window.sysLang||"en"),s!=null&&s.name){const l=s.name;typeof l=="object"?a=r.language&&l[r.language]||l.en:a=l}else if(o&&((u=M==null?void 0:M.common)!=null&&u.desc)){const l=M.common.desc;typeof l=="object"?a=r.language&&l[r.language]||l.en||l.de||l.ru||"":a=l,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}else if(!o&&(M!=null&&M.common)){const l=M.common.name||M.common.desc;l&&typeof l=="object"?a=r.language&&l[r.language]||l.en||l.de||l.ru||"":a=l,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}else{const l=t.lastIndexOf(".");a=t.substring(l+1).replace(/[_.]/g," "),a=E.CapitalWords(a)}return(a==null?void 0:a.trim())||""}static getObjectNameFromObj(e,t,s,r,o){var u,l;const M=e;let a=(e==null?void 0:e._id)||"";if(typeof t=="string"&&!s&&(s={language:t},t=null),s=s||{},t!=null&&t.name){const N=t.name;typeof N=="object"?a=s.language&&N[s.language]||N.en:a=N}else if(r&&((u=M==null?void 0:M.common)!=null&&u.desc)){const N=M.common.desc;typeof N=="object"?a=s.language&&N[s.language]||N.en:a=N,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}else if(!r&&((l=M==null?void 0:M.common)!=null&&l.name)){let N=M.common.name;!N&&M.common.desc&&(N=M.common.desc),typeof N=="object"?a=s.language&&N[s.language]||N.en:a=N,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}return o?a:a.trim()}static getSettingsOrder(e,t,s){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[rt];const M=s.user||"admin";if(o&&o[M]){if(t){if(o[M].subOrder&&o[M].subOrder[t])return JSON.parse(JSON.stringify(o[M].subOrder[t]))}else if(o[M].order)return JSON.parse(JSON.stringify(o[M].order))}}return null}static getSettingsCustomURLs(e,t,s){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[rt];const M=s.user||"admin";if(o&&o[M]){if(t){if(o[M].subURLs&&o[M].subURLs[t])return JSON.parse(JSON.stringify(o[M].subURLs[t]))}else if(o[M].URLs)return JSON.parse(JSON.stringify(o[M].URLs))}}return null}static reorder(e,t,s){const r=Array.from(e),[o]=r.splice(t,1);return r.splice(s,0,o),r}static getSettings(e,t,s){let r;const o=(e==null?void 0:e._id)||(t==null?void 0:t.id);let M;if(e&&Object.prototype.hasOwnProperty.call(e,"common")?M=e.common:M=e,M!=null&&M.custom?(r=M.custom,r=r[rt]&&r[rt][t.user||"admin"]?JSON.parse(JSON.stringify(r[rt][t.user||"admin"])):{enabled:!0}):r={enabled:s===void 0?!0:s,useCustom:!1},Object.prototype.hasOwnProperty.call(r,"enabled")||(r.enabled=s===void 0?!0:s),t&&(!r.name&&t.name&&(r.name=t.name),!r.icon&&t.icon&&(r.icon=t.icon),!r.color&&t.color&&(r.color=t.color)),M&&(!r.color&&M.color&&(r.color=M.color),!r.icon&&M.icon&&(r.icon=M.icon),!r.name&&M.name&&(r.name=M.name)),typeof r.name=="object"&&(r.name=t.language&&r.name[t.language]||r.name.en,r.name=(r.name||"").toString().replace(/_/g," "),r.name===r.name.toUpperCase()&&(r.name=r.name[0]+r.name.substring(1).toLowerCase())),!r.name&&o){const a=o.lastIndexOf(".");r.name=o.substring(a+1).replace(/[_.]/g," "),r.name=(r.name||"").toString().replace(/_/g," "),r.name=E.CapitalWords(r.name)}return r}static setSettings(e,t,s){if(e){e.common=e.common||{},e.common.custom=e.common.custom||{},e.common.custom[rt]=e.common.custom[rt]||{},e.common.custom[rt][s.user||"admin"]=t;const r=e.common.custom[rt][s.user||"admin"];return r.useCommon&&(r.color!==void 0&&(e.common.color=r.color,delete r.color),r.icon!==void 0&&(e.common.icon=r.icon,delete r.icon),r.name!==void 0&&(typeof e.common.name!="object"&&s.language?e.common.name={[s.language]:r.name}:typeof e.common.name=="object"&&s.language&&(e.common.name[s.language]=r.name),delete r.name)),!0}return!1}static getIcon(e,t){return e!=null&&e.icon?e.icon.length<=2?n.createElement("span",{style:t||{}},e.icon):e.icon.startsWith("data:image")?n.createElement("img",{alt:e.name,src:e.icon,style:t||{}}):n.createElement("img",{alt:e.name,src:(e.prefix||"")+e.icon,style:t}):null}static getObjectIcon(e,t){var s;if(typeof e=="object"&&(t=e,e=t==null?void 0:t._id),(s=t==null?void 0:t.common)!=null&&s.icon){let r=t.common.icon;if(typeof r=="string"&&r.length<=2||r.startsWith("data:image"))return r;const o=e.split(".");return o[0]==="system"?r=`adapter/${o[2]}${r.startsWith("/")?"":"/"}${r}`:r=`adapter/${o[0]}${r.startsWith("/")?"":"/"}${r}`,window.location.pathname.match(/adapter\/[^/]+\/[^/]+\.html/)?r=`../../${r}`:window.location.pathname.match(/material\/[.\d]+/)?r=`../../${r}`:window.location.pathname.match(/material\//)&&(r=`../${r}`),r}return null}static splitCamelCase(e){return e?E.CapitalWords(e):""}static isUseBright(e,t){if(!e)return t===void 0?!0:t;e=e.toString(),e.startsWith("#")&&(e=e.slice(1));let s,r,o;const M=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(M&&M.length===4)s=parseInt(M[1],10),r=parseInt(M[2],10),o=parseInt(M[3],10);else{if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===8)e=e.substring(0,6);else if(e.length!==6)return!1;s=parseInt(e.slice(0,2),16),r=parseInt(e.slice(2,4),16),o=parseInt(e.slice(4,6),16)}return s*.299+r*.587+o*.114<=186}static getTimeString(e){if(e=parseFloat(e),Number.isNaN(e))return"--:--";const t=Math.floor(e/3600),s=Math.floor(e%3600/60).toString().padStart(2,"0"),r=(e%60).toString().padStart(2,"0");return t?`${t}:${s}:${r}`:`${s}:${r}`}static getWindDirection(e){return e>=0&&e<11.25?"N":e>=11.25&&e<33.75?"NNE":e>=33.75&&e<56.25?"NE":e>=56.25&&e<78.75?"ENE":e>=78.75&&e<101.25?"E":e>=101.25&&e<123.75?"ESE":e>=123.75&&e<146.25?"SE":e>=146.25&&e<168.75?"SSE":e>=168.75&&e<191.25?"S":e>=191.25&&e<213.75?"SSW":e>=213.75&&e<236.25?"SW":e>=236.25&&e<258.75?"WSW":e>=258.75&&e<281.25?"W":e>=281.25&&e<303.75?"WNW":e>=303.75&&e<326.25?"NW":e>=326.25&&e<348.75?"NNW":"N"}static padding(e){return typeof e=="string"?e.length<2?`0${e}`:e:e<10?`0${e}`:e.toString()}static setDataFormat(e){e&&(E.dateFormat=e.toUpperCase().split(/[.-/]/),E.dateFormat.splice(E.dateFormat.indexOf("YYYY"),1))}static date2string(e){if(typeof e=="string"){if(e=e.trim(),!e)return"";if(e.match(/^[\w\s]+$/))return e;const s=e.match(/(\d{1,4})[-./](\d{1,2})[-./](\d{1,4})/);if(s){const r=[parseInt(s[1],10),parseInt(s[2],10),parseInt(s[3],10)],o=r.find(M=>M>31);if(o!==void 0){r.splice(r.indexOf(o),1);const M=r.find(a=>a>12);M?(r.splice(r.indexOf(M),1),e=new Date(o,r[0]-1,M)):E.dateFormat[0][0]==="M"&&E.dateFormat[1][0]==="D"?(e=new Date(o,r[0]-1,r[1]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[1]-1,r[0]))):E.dateFormat[0][0]==="D"&&E.dateFormat[1][0]==="M"?(e=new Date(o,r[1]-1,r[0]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[0]-1,r[1]))):e=new Date(e)}else e=new Date(e)}else e=new Date(e)}else e=new Date(e);let t=D.t(`ra_dow_${xg[e.getDay()]}`).replace("ra_dow_","");return t+=`. ${e.getDate()} ${D.t(`ra_month_${kg[e.getMonth()]}`).replace("ra_month_","")}`,t}static renderTextWithA(e){let t=e.match(/
||[^<]+<\/b>|[^<]+<\/i>/);if(t){const s=[];let r=1;do{const o=e.substring(0,t.index);if(e=e.substring((t.index||0)+t[0].length),o&&s.push(n.createElement("span",{key:`a${r++}`},o)),t[0].startsWith(""))s.push(n.createElement("b",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith(""))s.push(n.createElement("i",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith("([^<]*)||[^<]+<\/b>|[^<]+<\/i>/):null,!t&&e&&s.push(n.createElement("span",{key:`a${r++}`},e))}while(t);return s}return e}static getSmartName(e,t,s,r){var M,a;if(!t){if(!r)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const u=e;return(M=u==null?void 0:u.common)!=null&&M.custom&&u.common.custom[s]?u.common.custom[s].smartName:void 0}if(!r)return e[t].common.smartName;const o=e[t];return(a=o==null?void 0:o.common)!=null&&a.custom&&o.common.custom[s]&&o.common.custom[s].smartName||null}static getSmartNameFromObj(e,t,s){var o,M;if(!s)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const r=(M=(o=e==null?void 0:e.common)==null?void 0:o.custom)==null?void 0:M[t];return r?r.smartName:void 0}static enableSmartName(e,t,s){const r=e;s?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName={}):r.common.smartName={}}static removeSmartName(e,t,s){var o,M;const r=e;s?(M=(o=r==null?void 0:r.common)==null?void 0:o.custom)!=null&&M[t]&&(r.common.custom[t]=null):r.common.smartName=null}static updateSmartName(e,t,s,r,o,M){var l,N;const a=D.getLanguage(),u=e;if(typeof u.common.smartName=="string"){const c=u.common.smartName;u.common.smartName={},u.common.smartName[a]=c}if((l=u.native)!=null&&l.byON){delete u.native.byON;let c=u.common.smartName;c&&typeof c!="object"&&(c={en:c,[a]:c}),u.common.smartName=c}if(r!==void 0&&(M?(u.common.custom||={},u.common.custom[o]||={},u.common.custom[o].smartName||={},r?u.common.custom[o].smartName.smartType=r:delete u.common.custom[o].smartName.smartType):(u.common.smartName||={},r?u.common.smartName.smartType=r:delete u.common.smartName.smartType)),s!==void 0&&(M?(u.common.custom||={},u.common.custom[o]||={},u.common.custom[o].smartName||={},u.common.custom[o].smartName.byON=s):(u.common.smartName||={},u.common.smartName.byON=s)),t!==void 0){let c;if(M?(u.common.custom||={},u.common.custom[o]||={},u.common.custom[o].smartName||={},c=u.common.custom[o].smartName):(u.common.smartName||={},c=u.common.smartName),c[a]=t,c&&(!c[a]||c[a]===u.common.name&&!u.common.role)){delete c[a];let L=!0;for(const j in c)if(Object.prototype.hasOwnProperty.call(c,j)){L=!1;break}if(L)if(M&&((N=u.common.custom)!=null&&N[o]))u.common.custom[o].smartName.byON===void 0?delete u.common.custom[o]:(delete u.common.custom[o].en,delete u.common.custom[o].de,delete u.common.custom[o].ru,delete u.common.custom[o].nl,delete u.common.custom[o].pl,delete u.common.custom[o].it,delete u.common.custom[o].fr,delete u.common.custom[o].pt,delete u.common.custom[o].es,delete u.common.custom[o].uk,delete u.common.custom[o]["zh-cn"]);else if(u.common.smartName&&u.common.smartName.byON!==void 0){const j=u.common.smartName;delete j.en,delete j.de,delete j.ru,delete j.nl,delete j.pl,delete j.it,delete j.fr,delete j.pt,delete j.es,delete j.uk,delete j["zh-cn"]}else u.common.smartName=null}}}static updateSmartNameEx(e,t){var o,M,a,u;const s=D.getLanguage(),r=e;if(typeof r.common.smartName=="string"){const l=r.common.smartName;r.common.smartName={},r.common.smartName[s]=l}if((o=r.native)!=null&&o.byON){delete r.native.byON;let l=r.common.smartName;l&&typeof l!="object"&&(l={en:l,[s]:l}),r.common.smartName=l}if(t.smartType!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},t.smartType?r.common.custom[t.instanceId].smartName.smartType=t.smartType:delete r.common.custom[t.instanceId].smartName.smartType):(r.common.smartName||={},t.smartType?r.common.smartName.smartType=t.smartType:delete r.common.smartName.smartType)),t.byON!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.byON=t.byON):(r.common.smartName||={},r.common.smartName.byON=t.byON)),t.noAutoDetect!==void 0&&(t.noCommon?t.noAutoDetect?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.noAutoDetect=t.noAutoDetect):(a=(M=r.common.custom)==null?void 0:M[t.instanceId])!=null&&a.smartName&&delete r.common.custom[t.instanceId].smartName.noAutoDetect:!t.noAutoDetect&&r.common.smartName?delete r.common.smartName.noAutoDetect:(r.common.smartName||={},r.common.smartName.noAutoDetect=t.noAutoDetect)),t.smartName!==void 0){let l;if(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},l=r.common.custom[t.instanceId].smartName):(r.common.smartName||={},l=r.common.smartName),l[s]=t.smartName,l&&(!l[s]||l[s]===r.common.name&&!r.common.role)){delete l[s];let N=!0;for(const c in l)if(Object.prototype.hasOwnProperty.call(l,c)){N=!1;break}if(N)if(t.noCommon&&((u=r.common.custom)!=null&&u[t.instanceId]))r.common.custom[t.instanceId].smartName.byON===void 0?delete r.common.custom[t.instanceId]:(delete r.common.custom[t.instanceId].en,delete r.common.custom[t.instanceId].de,delete r.common.custom[t.instanceId].ru,delete r.common.custom[t.instanceId].nl,delete r.common.custom[t.instanceId].pl,delete r.common.custom[t.instanceId].it,delete r.common.custom[t.instanceId].fr,delete r.common.custom[t.instanceId].pt,delete r.common.custom[t.instanceId].es,delete r.common.custom[t.instanceId].uk,delete r.common.custom[t.instanceId]["zh-cn"]);else if(r.common.smartName&&r.common.smartName.byON!==void 0){const c=r.common.smartName;delete c.en,delete c.de,delete c.ru,delete c.nl,delete c.pl,delete c.it,delete c.fr,delete c.pt,delete c.es,delete c.uk,delete c["zh-cn"]}else r.common.smartName=null}}}static disableSmartName(e,t,s){const r=e;s?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName=!1):r.common.smartName=!1}static copyToClipboard(e,t){return t&&(t.stopPropagation(),t.preventDefault()),Hc(e)}static getFileExtension(e){const t=(e||"").lastIndexOf(".");return t!==-1?e.substring(t+1).toLowerCase():null}static formatBytes(e){if(Math.abs(e)<1024)return`${e} B`;const t=["KB","MB","GB"];let s=-1;do e/=1024,++s;while(Math.abs(e)>=1024&&s186?`#000000${s||""}`:`#FFFFFF${s||""}`;const a=(255-r).toString(16),u=(255-o).toString(16),l=(255-M).toString(16);return`#${a.padStart(2,"0")}${u.padStart(2,"0")}${l.padStart(2,"0")}${s||""}`}static color2rgb(e){if(e==null||e===""||typeof e!="string")return!1;if(e.startsWith("rgba")){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),\s*([.\d]+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else if(e.startsWith("rgb")){const t=e.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else e.startsWith("#")&&(e=e.slice(1));return e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length!==6&&e.length!==8?(console.warn(`Cannot invert color: ${e}`),!1):[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}static rgb2lab(e){let t=e[0]/255,s=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=(t*.4124+s*.3576+r*.1805)/.95047,M=t*.2126+s*.7152+r*.0722,a=(t*.0193+s*.1192+r*.9505)/1.08883;return o=o>.008856?o**.33333333:7.787*o+.137931,M=M>.008856?M**.33333333:7.787*M+.137931,a=a>.008856?a**.33333333:7.787*a+.137931,[116*M-16,500*(o-M),200*(M-a)]}static colorDistance(e,t){const s=E.color2rgb(e),r=E.color2rgb(t);if(!s||!r)return 0;const o=E.rgb2lab(s),M=E.rgb2lab(r),a=o[0]-M[0],u=o[1]-M[1],l=o[2]-M[2],N=Math.sqrt(o[1]*o[1]+o[2]*o[2]),c=Math.sqrt(M[1]*M[1]+M[2]*M[2]),L=N-c;let j=u*u+l*l-L*L;j=j<0?0:Math.sqrt(j);const g=1+.045*N,y=1+.015*N,d=a,I=L/g,m=j/y,w=d*d+I*I+m*m;return w<0?0:w}static _toVal(e){let t,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e))for(let r=0;r{if(s=s.trim(),s){const r=s.split("="),o=decodeURIComponent(r[0]).trim();if(r.length>1){const M=decodeURIComponent(r[1]);if(M==="true")t[o]=!0;else if(M==="false")t[o]=!1;else{const a=parseFloat(M);a.toString()===M?t[o]=a:t[o]=M}}else t[o]=!0}}),t}static getParentId(e){const t=(e||"").toString().split(".");return t.length>1?(t.pop(),t.join(".")):null}static formatDate(e,t){if(!e)return"";let s;const r=(e.getMonth()+1).toString().padStart(2,"0"),o=e.getDate().toString().padStart(2,"0");return t==="MM/DD/YYYY"?s=`${r}/${o}/${e.getFullYear()}`:s=`${e.getFullYear()}-${r}-${o}`,s+=` ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`,s}static formatTime(e){if(e){e=Math.round(e);const t=Math.floor(e/(3600*24)),s=Math.floor(e%(3600*24)/3600),r=Math.floor(e%3600/60),o=e%60;return t?`${t}.${s.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:s?`${s}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`0:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}return"0:00:00"}static MDtext2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static MDgetTitle(e){var o;const t=E.MDextractHeader(e),s=t.header;let r=t.body;if(!s.title){r=r.replace(/{[^}]*}/g,""),r=r.trim();const M=r.replace(/\r/g,"").split(` -`);for(let a=0;a{if(!M.trim())return;const a=M.indexOf(":");if(a!==-1){const u=M.substring(0,a).trim();let l=M.substring(a+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[u]=!0:l==="false"?t[u]=!1:parseFloat(l).toString()===t[u]?t[u]=parseFloat(l):t[u]=l}else t[M.trim()]=!0}),e=e.substring(s+7))}return{header:t,body:e}}static MDremoveDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(s=>e=e.replace(s,"")),e}static generateFile(e,t){const s=document.createElement("a");s.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}static quality2text(e){const t=e&4294901760,s=Er[e];let r;return s?r=[s]:e&1?r=[Er[1],`0x${(e&65534).toString(16)}`]:e&2?r=[Er[2],`0x${(e&65533).toString(16)}`]:r=[`0x${e.toString(16)}`],t&&r.push(`0x${(t>>16).toString(16).toUpperCase()}`),r}static clone(e){return JSON.parse(JSON.stringify(e))}static getStates(e){var r;const t=(r=e==null?void 0:e.common)==null?void 0:r.states;let s;if(t)if(typeof t=="string"&&t[0]==="{")try{s=JSON.parse(t)}catch{console.error(`Cannot parse states: ${t}`),s=null}else if(typeof t=="string"){const o=t.split(";");s={};for(let M=0;Ms[M]=o):(e==null?void 0:e.common.type)==="string"?t.forEach(o=>s[o]=o):(e==null?void 0:e.common.type)==="boolean"&&(s.false=t[0],s.true=t[1])):typeof t=="object"&&(s=t);return s||null}static async getSvg(e){const s=await(await fetch(e)).blob();return new Promise(r=>{const o=new FileReader;o.onload=()=>{var M;return r(((M=o.result)==null?void 0:M.toString())||"")},o.readAsDataURL(s)})}static detectMimeType(e){const t=Object.keys(_n).find(s=>e.startsWith(s));return t?_n[t]:null}static isStableRepository(e){return!!(typeof e=="string"&&e.toLowerCase().startsWith("stable")||e&&typeof e!="string"&&e.find(t=>t.toLowerCase().startsWith("stable")))}static isStringInteger(e){return typeof e=="number"?Math.round(e)===e:parseInt(e,10).toString()===e}static isValidDate(e){return e instanceof Date&&!isNaN(e)}static getStyle(e,...t){const s={};for(let r=0;r{if(typeof t[r][o]=="function")s[o]=t[r][o](e);else if(typeof t[r][o]=="object"){const M=t[r][o];s[o]={},Object.keys(M).forEach(a=>{typeof M[a]=="function"?s[o][a]=M(e):(M[a]||M[a]===0)&&(s[o][a]=M[a])})}else(t[r][o]||t[r][o]===0)&&(s[o]=t[r][o])});return s}}const _r={buttonIcon:{marginRight:8}};class Yg extends n.Component{isIFrame;constructor(e){super(e);const t=e.newReact===void 0?!0:e.newReact;if(e.isIFrame!==void 0)this.isIFrame=e.isIFrame;else try{this.isIFrame=!t&&window.self!==window.top}catch{this.isIFrame=!t}}render(){const e=this.props.noTextOnButtons,t={borderRadius:this.props.theme.saveToolbar.button.borderRadius||3,height:this.props.theme.saveToolbar.button.height||32},s={bottom:this.isIFrame?38:0,left:this.props.paddingLeft||0,right:0,position:"absolute",background:this.props.theme.saveToolbar.background};return this.props.dense&&(s.minHeight=48),this.props.error&&(t.border="1px solid red"),n.createElement(Wa,{style:s},n.createElement(Ct,{variant:"extended","aria-label":"Save",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!1),style:t},n.createElement(Gr,{style:e?void 0:_r.buttonIcon}),!e&&D.t("ra_Save")),n.createElement(Ct,{variant:"extended","aria-label":"Save and close",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!0),style:{...t,marginLeft:10}},n.createElement(Gr,{style:e?void 0:_r.buttonIcon}),e?"+":D.t("ra_Save and close"),e&&n.createElement(ge,null)),n.createElement("div",{style:{flexGrow:1}}),n.createElement(Ct,{variant:"extended","aria-label":"Close",onClick:()=>this.props.onClose(),style:t},n.createElement(ge,{style:e?void 0:_r.buttonIcon}),!e&&D.t("ra_Close")))}}const fn={suppress:{fontSize:12},suppressRoot:{marginTop:"16px"}};class Vc extends ze{constructor(e){if(super(e),!this.props.dialogName&&this.props.suppressQuestionMinutes)throw new Error("dialogName required if suppressQuestionMinutes used");let t=!1;this.props.suppressQuestionMinutes&&(t=parseInt((window._localStorage||window.localStorage).getItem(this.props.dialogName),10)||0,t?Date.now()>t&&((window._localStorage||window.localStorage).removeItem(this.props.dialogName),t=!1):t=!1),this.state={suppress:t}}handleOk(){this.state.suppress&&(window._localStorage||window.localStorage).setItem(this.props.dialogName,Date.now()+(this.props.suppressQuestionMinutes||2)*6e4),this.props.onClose&&this.props.onClose(!0)}handleCancel(){this.props.onClose&&this.props.onClose(!1)}render(){return typeof this.state.suppress=="number"?(setTimeout(()=>this.props.onClose&&this.props.onClose(!0),100),null):n.createElement(de,{open:!0,maxWidth:"md",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:(e,t)=>{t!=="backdropClick"&&t!=="escapeKeyDown"&&this.handleCancel()},"aria-labelledby":"ar_confirmation_dialog_title","aria-describedby":"ar_confirmation_dialog_description"},n.createElement(Ie,{id:"ar_confirmation_dialog_title"},this.props.title||D.t("ra_Are you sure?")),n.createElement(Ae,null,n.createElement(Jt,{id:"ar_confirmation_dialog_description"},this.props.icon||null,this.props.text,this.props.suppressQuestionMinutes?n.createElement("br",null):null,this.props.suppressQuestionMinutes?n.createElement(H,{sx:{"& .FormControlLabel-label":fn.suppress,"&.FormControlLabel-root":fn.suppressRoot},control:n.createElement(ne,{id:`ar_dialog_confirm_suppress_${this.props.dialogName||""}`,checked:!!this.state.suppress,onChange:()=>this.setState({suppress:!this.state.suppress})}),label:this.props.suppressText||D.t("ra_Suppress question for next %s minutes",(this.props.suppressQuestionMinutes||2).toString())}):null)),n.createElement(me,null,n.createElement(X,{id:`ar_dialog_confirm_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:n.createElement(ve,null)},this.props.ok||D.t("ra_Ok")),n.createElement(X,{id:`ar_dialog_confirm_cancel_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:n.createElement(ge,null)},this.props.cancel||D.t("ra_Cancel"))))}}class Zc extends ze{handleOk(){this.props.onClose&&this.props.onClose()}render(){return n.createElement(de,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},n.createElement(Ie,{id:"ar_alert_dialog_title"},this.props.title||D.t("ra_Error")),n.createElement(Ae,null,n.createElement(Jt,{id:"ar_alert_dialog_description"},this.props.text||D.t("ra_Unknown error!"))),n.createElement(me,null,n.createElement(X,{id:"ar_dialog_error_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:n.createElement(ve,null)},D.t("ra_Ok"))))}}const Qg="Actions",vg="Append",Ug="Cancel",bg="Categories",$g="Checked",Pg="Delete",Wg="Close",Rg="Commercial",Jg="Configure",Bg="Connected",Gg="Continue",Fg="Copied",Hg="Create",Vg="Crop",Zg="Delete",Xg="Delete",Kg="Discard",qg="Disconnected",eT="Error",tT="Filter",sT="Friday",iT="Latitude",rT="Logout",oT="Longitude",MT="Message",nT="Monday",aT="Name",cT="Objects",uT="Ok",lT="Product",NT="Rename/Move/Copy",LT="Repeat",jT="Replace",gT="Root",TT="Saturday",yT="Save",DT="Selected",dT="States",zT="Sunday",hT="Thursday",IT="Timestamp",wT="Tuesday",CT="Update",AT="Valid till",mT="Value",pT="Version",OT="Wednesday",ET="Width",_T="Yes",fT="different",ST="Everyone can read object",xT="Everyone can read state",kT="Everyone can write object",YT="Everyone can write state",QT="Group can read object",vT="Group can read state",UT="Group can write object",bT="Group can write state",$T="Owner can read object",PT="Owner can read state",WT="Owner can write object",RT="Owner can write state",JT="Buttons",BT="Changed from",GT="close",FT="Create boolean state",HT="Create channel",VT="Create device",ZT="Create number state",XT="Create state",KT="Create string state",qT="days",ey="Fr",ty="Mo",sy="Sa",iy="Su",ry="Th",oy="Tu",My="We",ny="Expert mode",ay="FALSE",cy="All files",uy="Audio",ly="Code/JSON",Ny="Images",Ly="Text",jy="Video",gy="Settings",Ty="without",yy="Function",Dy="ID",dy="Name",zy="Role",hy="Room",Iy="Type",wy="Invalid settings",Cy="Last change",Ay="locally",my="Apr",py="Aug",Oy="Dec",Ey="Feb",_y="Jan",fy="Jul",Sy="Jun",xy="Mai",ky="Mar",Yy="Nov",Qy="Oct",vy="Sep",Uy="Apr",by="Aug",$y="Dec",Py="Feb",Wy="Jan",Ry="Jul",Jy="Jun",By="Mai",Gy="Mar",Fy="Nov",Hy="Oct",Vy="Sep",Zy="none",Xy="Object changed by",Ky="Object last changed at",qy="Settings from other adapter %s",eD="Quality code",tD="repeat",sD='To select folder, just hold the key "shift" by clicking the folder.',iD="Show all",rD="State changed by",oD="Object changed from",MD="Timestamp",nD="Acknowledged",aD="Comment",cD="Copy the state value",uD="Hold Cltr/⌘ key to open the link",lD="Custom settings",ND="Delete object",LD="Edit object",jD="Edit the state value",gD="Expires in",TD="From",yD="Last changed",DD="Quality",dD="Time stamp",zD="User",hD="Value",ID="TRUE",wD="Value",CD="Warning: The CRON job will run every minute during the specified period!",AD="Warning: The CRON job will run every second during the specified period!",mD="CRON",pD="Date",OD="Dates",ED="Day",_D="Day of week",fD="Every",SD="every N days",xD="every Nth day of the week",kD="every N day of week",YD="every N hours",QD="every N minutes",vD="every N months",UD="every N seconds",bD="every day",$D="every day of the week",PD="every day of the week",WD="every hour",RD="every minute",JD="every month",BD="every second",GD="From",FD="Hours",HD="Interval",VD="Interval between",ZD="Invalid CRON",XD="Minutes",KD="months",qD="Once",ed="Period",td="Seconds",sd="Simple",id="Specific time",rd="specific dates",od="specific day(s) of the week",Md="specific day of weeks",nd="specific hours",ad="specific minutes",cd="specific months",ud="specific seconds",ld="Time",Nd="To",Ld="Wizard",jd="all",gd="Astro day",Td="Astro night",yd="Dawn",Dd="Dusk",dd="Golden hour",zd="Golden hour end",hd="Nadir",Id="Nautical dawn",wd="Nautical dusk",Cd="Night",Ad="Night end",md="Solar noon",pd="Sunrise",Od="Sunrise end",Ed="Sunset",_d="Sunset start",fd="at",Sd="at %s",xd="every day",kd="every hour",Yd="every minute",Qd="every month",vd="every %s day",Ud="every %s hours",bd="every %s minutes",$d="every %s months",Pd="every %s weeks",Wd="every %s years",Rd="every week",Jd="every year",Bd="from %s to %s",Gd="never",Fd="on %s of %s",Hd="on %s and %s of",Vd="on every date of",Zd="%s",Xd="%s and %s",Kd="on %s",qd="on %s and %s",e1="on weekends",t1="on working days",s1="will ne be not executed any more, because start is in the past",i1="on %s",r1="from %s",o1="Execute from to",M1="to %s",n1="every",a1="Specific time",c1="from",u1="From-to",l1="Interval time",N1="invert",L1="none",j1="on",g1="Period",T1="Daily",y1="Dates",D1="Day",d1="Every",z1="Every day",h1="Every month",I1="Every week",w1="Every year",C1="Hours",A1="Minutes",m1="month",p1="Monthly",O1="Once",E1="Specific months",_1="Week",f1="Weekdays",S1="Weekend",x1="Weekly",k1="Workdays",Y1="Year",Q1="Yearly",v1="Specific time",U1="Time",b1="to",$1="Valid",P1="from",W1="to",R1="Whole day",J1="every month",B1={"ra_%s links from aliases":"%s links from aliases","ra_%s object(s) processed":"%s object(s) processed","ra_%s was imported":"%s was imported","ra_Accept license":"Accept license",ra_Actions:Qg,"ra_Add new child object to selected parent":"Add new child object to selected parent","ra_Add objects tree from JSON file":"Add objects tree from JSON file","ra_Add row":"Add row","ra_Advanced options":"Advanced options","ra_All items are filtered out":"All items are filtered out","ra_All objects":"All objects",ra_Append:vg,"ra_Append %s entries or replace existing?":"Append %s entries or replace existing?","ra_Append or replace?":"Append or replace?","ra_Are you sure?":"Are you sure?","ra_Auto (no custom columns)":"Auto (no custom columns)","ra_Back to %s":"Back to %s","ra_Background image":"Background image",ra_Cancel:Ug,"ra_Cannot add items with set filter":"Cannot add items with set filter","ra_Cannot decode license":"Cannot decode license","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Cannot determine position: System settings are empty and GPS detection is disabled in browser",'ra_Cannot find "%s"':'Cannot find "%s"','ra_Cannot read "%s"':'Cannot read "%s"',"ra_Cannot read licenses: %s":"Cannot read licenses: %s","ra_Cannot retrieve options, as instance is offline":"Cannot retrieve options, as instance is offline","ra_Cannot update attribute, because not found in the object":"Cannot update attribute, because not found in the object","ra_Cannot upload":"Cannot upload",ra_Categories:bg,"ra_Chained certificate":"Chained certificate","ra_Change color theme":"Change color theme","ra_Changed from":"Changed from","ra_Channel → State":"Channel → State","ra_Check license":"Check license",ra_Checked:$g,ra_Clear:Pg,"ra_Clear filter":"Clear filter","ra_Clear icon":"Clear icon","ra_Click to see in full size":"Click to see in full size","ra_Click to show":"Click to show","ra_Clone current row":"Clone current row",ra_Close:Wg,"ra_Collapse all nodes":"Collapse all nodes","ra_Collapse one step node":"Collapse one level",ra_Commercial:Rg,ra_Configure:Jg,"ra_Configure visible columns":"Configure visible columns","ra_Confirm deletion of %s":"Confirm deletion of %s",ra_Connected:Bg,ra_Continue:Gg,ra_Copied:Fg,"ra_Copied %s":'Copied "%s"',"ra_Copy content":"Copy content",ra_Create:Hg,"ra_Create alias":"Create alias","ra_Create folder":"Create folder","ra_Create new folder in %s":"Create new folder in %s",ra_Crop:Vg,"ra_Define CRON...":"Define CRON...","ra_Define functions":"Define functions","ra_Define rooms":"Define rooms","ra_Define schedule":"Define schedule","ra_Define schedule...":"Define schedule...",ra_Del:Zg,ra_Delete:Xg,"ra_Delete current row":"Delete current row","ra_Deselect all":"Unselect all","ra_Device → Channel → State":"Device → Channel → State","ra_Disable/Enable translation":"Disable/Enable translation",ra_Discard:Kg,ra_Disconnected:qg,"ra_Do not ask for next 2 hours in this session":"Do not ask for next 2 hours in this session","ra_Do not export values of states":"Do not export values of states","ra_Do not use let's encrypt":"Do not use let's encrypt","ra_Docker is not available":"Docker is not available","ra_Docker is not installed or not running":"Docker is not installed or not running","ra_Double click to reset table layout":"Double click to reset table layout","ra_Drag 'n' drop some files here, or click to select files":"Drag 'n' drop some files here, or click to select files","ra_Drop file here":"Drop file here","ra_Drop the files here...":"Drop the file here...","ra_Duplicate name":"Duplicate name","ra_Edit ACL":"Edit ACL","ra_Edit alias":"Edit alias","ra_Edit custom config":"Edit custom config","ra_Edit full path":"Edit full path","ra_Edit function":"Edit function","ra_Edit object field":"Edit object field","ra_Edit role":"Edit role","ra_Edit room":"Edit room","ra_Edit value":"Edit value","ra_Enter the code from that page here":"Enter the code from that page here",ra_Error:eT,"ra_Expand all nodes":"Expand all nodes","ra_Expand one step node":"Expand one level","ra_Expand/Collapse card":"Expand/Collapse card","ra_Export configuration section":"Export configuration section","ra_Export data to %s file":"Export data to %s file","ra_Failed to open JSON File":"Failed to open JSON File","ra_Fallback custom certificates":"Fallback custom certificates","ra_File is too big. Max %sk allowed. Try use SVG.":"File is too big. Max %sk allowed. Try use SVG.",ra_Filter:tT,"ra_Filter and Data Actions":"Filter and Data Actions","ra_Filter files":"Filter files","ra_Folder name":"Folder name","ra_Folder → Channel → State":"Folder → Channel → State","ra_Folder → Device → Channel → State":"Folder → Device → Channel → State","ra_Folder → State":"Folder → State","ra_Folders always first":"Folders always first",ra_Friday:sT,"ra_From file":"From file","ra_From text":"From text","ra_Get %s access":"Get %s access","ra_Good luck":"Good luck","ra_Hide empty folders":"Hide empty folders","ra_If no file will be created in the folder, it will disappear after the browser closed":"If no file will be created in the folder, it will disappear after the browser closed","ra_If the button above does not work, you can authorize manually this app by visiting this url":"If the button above does not work, you can authorize manually this app by visiting this url","ra_Import and add configuration section":"Import and add configuration section","ra_Import and replace configuration section":"Import and replace configuration section","ra_Import data from %s file":"Import data from %s file","ra_Import from %s":"Import from %s","ra_Instance %s is alive":"Instance %s is alive","ra_Instance %s is not alive":"Instance %s is not alive","ra_Instance is not alive":"Instance is not alive","ra_Invalid CRON":"Invalid CRON","ra_Invalid JSON":"Invalid JSON","ra_Invalid JSON file.":"Invalid JSON file.","ra_Invalid JSON format. Expected an array.":"Invalid JSON format. Expected an array.","ra_Invalid answer from server":"Invalid answer from server","ra_Invalid parent folder!":"Invalid parent folder!","ra_Invalid structure":"Invalid structure","ra_JSON editor":"JSON editor","ra_Last change":"Last change",ra_Latitude:iT,"ra_License %s":"License %s","ra_License agreement":"License agreement","ra_License does not exist":"License does not exist","ra_License expired on %s":"License expired on %s",'ra_License for other product "%s"':'License for other product "%s"',"ra_License is for version %s, but required version is %s.":"License is for version %s, but required version is %s.","ra_License must be converted":"License must be converted to newer version. You can do it in your iobroker.net profile.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"License not found in the license manager. Do you want to update licenses from iobroker.net?","ra_Listen on all IPs":"Listen on all IPs","ra_Load configuration from file":"Load configuration from file",ra_Logout:rT,ra_Longitude:oT,'ra_May not trigger "updateLicenses"':'May not trigger "updateLicenses"',ra_Message:MT,ra_Monday:nT,"ra_Move down":"Move down","ra_Move up":"Move up",ra_Name:aT,"ra_No data found in file":"No data found in file","ra_No one license found in license manager":"No one license found in license manager","ra_No response from admin":"No response from admin","ra_No response from the backend":"No response from the backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Non-experts may create new objects only in "0_userdata.0" or "alias.0".',"ra_Not a number":"Not a number","ra_OAuth Client ID":"OAuth Client ID","ra_OAuth Client secret":"OAuth Client secret",ra_Objects:cT,ra_Ok:uT,"ra_On weekdays":"On weekdays","ra_Only following structures of objects are available:":"Only following structures of objects are available:","ra_Only selected":"Only selected","ra_Owner group":"Owner group","ra_Owner user":"Owner user","ra_Passwords are not equal!":"Passwords are not equal!","ra_Place your files here or click here to open the browse dialog":"Place your files here or click here to open the browse dialog","ra_Please allow popups in your browser for this page!":"Please allow popups in your browser for this page!","ra_Please confirm":"Please confirm","ra_Please create license":"Please create license","ra_Please enter the license":"Please enter the license","ra_Please select file...":"Please select file...","ra_Please select object ID...":"Please select object ID...","ra_Port could be used by %s":"Port could be used by %s","ra_Port is already used by %s":"Port is already used by %s","ra_Press ENTER Key to add new item":"Press ENTER Key to add new item","ra_Private certificate":"Private certificate",ra_Product:lT,"ra_Public certificate":"Public certificate","ra_Quality code":"Quality","ra_Refresh tree":"Refresh tree","ra_Reload files":"Reload files",ra_Rename_Move_Copy:NT,"ra_Renew %s access":"Renew %s access",ra_Repeat:LT,ra_Replace:jT,"ra_Request timed out":"Request timed out","ra_Restrict to folder":"Restrict to folder",ra_Root:gT,ra_Saturday:TT,ra_Save:yT,"ra_Save and close":"Save and close","ra_Save configuration to file":"Save configuration to file","ra_Save objects tree as JSON file":"Save objects tree as JSON file","ra_Select all":"Select all","ra_Select color":"Select color","ra_Select predefined icon":"Select predefined icon","ra_Select type of export":"Select type of export",ra_Selected:DT,"ra_Selected %s object(s)":"Selected %s object(s)","ra_Serial number (UUID)":"Serial number (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serial number (UUID) "%s" in license is for other device.',"ra_Session will expire in %s seconds. Continue?":"Session will expire in %s seconds. Continue?","ra_Show all folders":"Show all folders","ra_Show lines between rows":"Show lines between rows","ra_Show/Hide object descriptions":"Show/Hide object descriptions","ra_Show/hide filter input":"Show/hide filter input","ra_Some data are not stored. Discard?":"Some data are not stored. Discard?",ra_States:dT,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Successfully authorized. Token valid till %s and will be automatically renewed.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Successfully authorized. Token valid till %s but it can expire as the instance is not running.","ra_Suitable license not found in license manager":"Suitable license not found in license manager",ra_Sunday:zT,"ra_Suppress question for next %s minutes":"Suppress question for next %s minutes","ra_System language":"System language","ra_Take browser position":"Take position from browser","ra_Take position from system settings":"Take position from system settings",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").',"ra_The page you are looking for was not found":"The page you are looking for was not found","ra_The schedule will be executed every minute. Are you sure?":"The schedule will be executed every minute. Are you sure?","ra_The schedule will be executed every second. Are you sure?":"The schedule will be executed every second. Are you sure?",ra_Thursday:hT,ra_Timestamp:IT,"ra_Toggle expert mode":"Toggle expert mode","ra_Toggle the states view":"Toggle the states view","ra_Toggle view mode":"Toggle view mode","ra_Too big":"Too big","ra_Too small":"Too small","ra_Transparent dialog":"Transparent dialog",ra_Tuesday:wT,"ra_Unknown error":"Unknown error","ra_Unknown error!":"Unknown error!",ra_Update:CT,"ra_Upload file":"Upload file","ra_Use all available let's encrypt certificates":"Use all available let's encrypt certificates","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use iobroker.acme adapter for letsencrypt certificates","ra_Use system settings for position":"Use system settings for position","ra_Used system settings":"Used system settings","ra_User files":"User files",ra_ValidTill:AT,ra_Value:mT,ra_Version:pT,"ra_View file":"View file","ra_View: %s":"View: %s",ra_Wednesday:OT,ra_Width:ET,"ra_YAML editor":"YAML editor",ra_Yes:_T,"ra_You can export all objects or just the selected branch.":"You can export all objects or just the selected branch.","ra_You can filter entries by entering here some text":"You can filter entries by entering here some text","ra_You can use * as wildcard":"You can use * as wildcard",ra___different__:fT,ra_aclEveryone_read_object:ST,ra_aclEveryone_read_state:xT,ra_aclEveryone_write_object:kT,ra_aclEveryone_write_state:YT,ra_aclGroup_read_object:QT,ra_aclGroup_read_state:vT,ra_aclGroup_write_object:UT,ra_aclGroup_write_state:bT,ra_aclOwner_read_object:$T,ra_aclOwner_read_state:PT,ra_aclOwner_write_object:WT,ra_aclOwner_write_state:RT,ra_buttons:JT,ra_changedFrom:BT,ra_close:GT,ra_create_boolean_state:FT,ra_create_channel:HT,ra_create_device:VT,ra_create_number_state:ZT,ra_create_state:XT,ra_create_string_state:KT,ra_daysShortText:qT,ra_dow_Fr:ey,ra_dow_Mo:ty,ra_dow_Sa:sy,ra_dow_Su:iy,ra_dow_Th:ry,ra_dow_Tu:oy,ra_dow_We:My,ra_expertMode:ny,ra_false:ay,ra_fileType_all:cy,ra_fileType_audio:uy,ra_fileType_code:ly,ra_fileType_images:Ny,ra_fileType_txt:Ly,ra_fileType_video:jy,"ra_fileType_video,":"Video",ra_filter_customs:gy,ra_filter_customs_without:Ty,ra_filter_func:yy,ra_filter_id:Dy,ra_filter_name:dy,ra_filter_role:zy,ra_filter_room:hy,ra_filter_type:Iy,"ra_import data from %s file":"Import data from %s file",ra_invalidConfig:wy,ra_lastChange:Cy,ra_locally:Ay,ra_month_Apr:my,ra_month_Aug:py,ra_month_Dec:Oy,ra_month_Feb:Ey,ra_month_Jan:_y,ra_month_Jul:fy,ra_month_Jun:Sy,ra_month_Mai:xy,ra_month_Mar:ky,ra_month_Nov:Yy,ra_month_Oct:Qy,ra_month_Sep:vy,ra_months_Apr:Uy,ra_months_Aug:by,ra_months_Dec:$y,ra_months_Feb:Py,ra_months_Jan:Wy,ra_months_Jul:Ry,ra_months_Jun:Jy,ra_months_Mai:By,ra_months_Mar:Gy,ra_months_Nov:Fy,ra_months_Oct:Hy,ra_months_Sep:Vy,"ra_no confirm for 5 mins":"no confirm for 5 mins",ra_none:Zy,ra_object_changed_by:Xy,ra_object_changed_by_user:Ky,ra_otherConfig:qy,ra_qualityCode:eD,ra_repeat:tD,ra_select_folder_hint:sD,ra_show_all:iD,ra_state_changed_by:rD,ra_state_changed_from:oD,ra_timestamp:MD,ra_tooltip_ack:nD,ra_tooltip_comment:aD,ra_tooltip_copyState:cD,ra_tooltip_ctrlForLink:uD,ra_tooltip_customConfig:lD,ra_tooltip_deleteObject:ND,ra_tooltip_editObject:LD,ra_tooltip_editState:jD,ra_tooltip_expire:gD,ra_tooltip_from:TD,ra_tooltip_lc:yD,ra_tooltip_quality:DD,ra_tooltip_ts:dD,ra_tooltip_user:zD,ra_tooltip_value:hD,ra_true:ID,"ra_use seconds":"use seconds",ra_val:wD,"ra_via internet":"via internet",ra_warning_every_minute:CD,ra_warning_every_second:AD,sc_cron:mD,sc_date:pD,sc_dates:OD,sc_dow:ED,sc_dows:_D,sc_every:fD,sc_everyN_dates:SD,sc_everyN_dow:xD,sc_everyN_dows:kD,sc_everyN_hours:YD,sc_everyN_minutes:QD,sc_everyN_months:vD,sc_everyN_seconds:UD,sc_every_dates:bD,sc_every_dow:$D,sc_every_dows:PD,sc_every_hours:WD,sc_every_minutes:RD,sc_every_months:JD,sc_every_seconds:BD,sc_from:GD,sc_hours:FD,sc_interval:HD,sc_intervalBetween:VD,sc_invalid_cron:ZD,sc_minutes:XD,sc_months:KD,sc_once:qD,sc_period:ed,sc_seconds:td,sc_simple:sd,sc_specific:id,sc_specific_dates:rd,sc_specific_dow:od,sc_specific_dows:Md,sc_specific_hours:nd,sc_specific_minutes:ad,sc_specific_months:cd,sc_specific_seconds:ud,sc_time:ld,sc_to:Nd,sc_wizard:Ld,sch_all:jd,sch_astroDay:gd,sch_astroNight:Td,sch_astro_dawn:yd,sch_astro_dusk:Dd,sch_astro_goldenHour:dd,sch_astro_goldenHourEnd:zd,sch_astro_nadir:hd,sch_astro_nauticalDawn:Id,sch_astro_nauticalDusk:wd,sch_astro_night:Cd,sch_astro_nightEnd:Ad,sch_astro_solarNoon:md,sch_astro_sunrise:pd,sch_astro_sunriseEnd:Od,sch_astro_sunset:Ed,sch_astro_sunsetStart:_d,sch_at:fd,sch_desc_atTime:Sd,sch_desc_everyDay:xd,sch_desc_everyHour:kd,sch_desc_everyMinute:Yd,sch_desc_everyMonth:Qd,sch_desc_everyNDay:vd,sch_desc_everyNHours:Ud,sch_desc_everyNMinutes:bd,sch_desc_everyNMonths:$d,sch_desc_everyNWeeks:Pd,sch_desc_everyNYears:Wd,sch_desc_everyWeek:Rd,sch_desc_everyYear:Jd,sch_desc_intervalFromTo:Bd,sch_desc_never:Gd,sch_desc_onDate:Fd,sch_desc_onDates:Hd,sch_desc_onEveryDate:Vd,sch_desc_onMonth:Zd,sch_desc_onMonths:Xd,sch_desc_onWeekday:Kd,sch_desc_onWeekdays:qd,sch_desc_onWeekends:e1,sch_desc_onWorkdays:t1,sch_desc_onceInPast:s1,sch_desc_once_on:i1,sch_desc_validFrom:r1,sch_desc_validFromTo:o1,sch_desc_validTo:M1,sch_every:n1,sch_exactTime:a1,sch_from:c1,sch_fromTo:u1,sch_intervalTime:l1,sch_invert:N1,sch_no_one:L1,sch_on:j1,sch_period:g1,sch_periodDaily:T1,sch_periodDates:y1,sch_periodDay:D1,sch_periodEvery:d1,sch_periodEveryDay:z1,sch_periodEveryMonth:h1,sch_periodEveryWeek:I1,sch_periodEveryYear:w1,sch_periodHours:C1,sch_periodMinutes:A1,sch_periodMonth:m1,sch_periodMonthly:p1,sch_periodOnce:O1,sch_periodSpecificMonths:E1,sch_periodWeek:_1,sch_periodWeekdays:f1,sch_periodWeekend:S1,sch_periodWeekly:x1,sch_periodWorkdays:k1,sch_periodYear:Y1,sch_periodYearly:Q1,sch_specificTime:v1,sch_time:U1,sch_to:b1,sch_valid:$1,sch_validFrom:P1,sch_validTo:W1,sch_wholeDay:R1,sch_yearEveryMonth:J1},G1="Aktionen",F1="Anhängen",H1="Abbrechen",V1="Kategorien",Z1="Geprüft",X1="Löschen",K1="Schließen",q1="Kommerziell",ez="Konfigurieren",tz="Verbunden",sz="Weitermachen",iz="Kopiert",rz="Erstellen",oz="Ernte",Mz="Entf",nz="Löschen",az="Verwerfen",cz="Getrennt",uz="Fehler",lz="Filter",Nz="Freitag",Lz="Breite",jz="Ausloggen",gz="Längengrad",Tz="Meldung",yz="Montag",Dz="Name",dz="Objekte",zz="OK",hz="Produkt",Iz="Umbenennen/Verschieben/Kopieren",wz="Wiederholen",Cz="Ersetzen",Az="Anfang",mz="Samstag",pz="Speichern",Oz="Ausgewählt",Ez="Zustände",_z="Sonntag",fz="Donnerstag",Sz="Zeitstempel",xz="Dienstag",kz="Aktualisieren",Yz="Gültig bis",Qz="Wert",vz="Ausführung",Uz="Mittwoch",bz="Breite",$z="Ja",Pz="unterschiedlich",Wz="Jeder kann Objekt lesen",Rz="Jeder kann Zustand lesen",Jz="Jeder kann ein Objekt schreiben",Bz="Jeder kann Zustand schreiben",Gz="Gruppe kann Objekt lesen",Fz="Gruppe kann Status lesen",Hz="Gruppe kann Objekt schreiben",Vz="Gruppe kann Status schreiben",Zz="Besitzer kann Objekt lesen",Xz="Besitzer kann Zustand lesen",Kz="Besitzer kann Objekt schreiben",qz="Besitzer kann Zustand schreiben",eh="Tasten",th="Geändert von",sh="Schließen",ih="Booleschen Zustand erstellen",rh="Kanal erstellen",oh="Gerät erstellen",Mh="Nummern-Zustand erstellen",nh="Zustand erstellen",ah="String-Zustand erstellen",ch="T.",uh="Fr",lh="Mo",Nh="Sa",Lh="So",jh="Do",gh="Di",Th="Mi",yh="Expertenmodus",Dh="FALSCH",dh="Alle Dateien",zh="Audio",hh="Code/JSON",Ih="Bilder",wh="Text",Ch="Video",Ah="Einstellungen",mh="ohne",ph="Funktion",Oh="ID",Eh="Name",_h="Rolle",fh="Raum",Sh="Typ",xh="Ungültige Einstellungen",kh="Letzte Änderung",Yh="örtlich",Qh="Apr",vh="Aug",Uh="Dez",bh="Feb",$h="Jan",Ph="Jul",Wh="Jun",Rh="Mai",Jh="Mär",Bh="Nov",Gh="Okt",Fh="Sep",Hh="Apr",Vh="Aug",Zh="Dez",Xh="Feb",Kh="Jan",qh="Jul",eI="Jun",tI="Mai",sI="Mär",iI="Nov",rI="Okt",oI="Sep",MI="kein",nI="Objekt geändert von",aI="Objekt zuletzt geändert um",cI="Einstellungen von anderen Adaptern %s",uI="Qualitätscode",lI="wiederholen",NI='Um einen Ordner auszuwählen, halten Sie einfach die Taste "Shift" gedrückt, indem Sie auf den Ordner klicken.',LI="Alle anzeigen",jI="Zustand geändert durch",gI="Objekt geändert von",TI="Zeitstempel",yI="Bestätigt",DI="Kommentar",dI="Statuswert kopieren",zI="Strg/⌘-Taste gedrückt halten, um den Link zu öffnen",hI="Benutzerdefinierte Einstellungen",II="Objekt löschen",wI="Objekt bearbeiten",CI="Statuswert bearbeiten",AI="Läuft ab in",mI="Von",pI="Zuletzt geändert",OI="Qualität",EI="Zeitstempel",_I="Benutzer",fI="Wert",SI="WAHR",xI="Wert",kI="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Minute ausgeführt!",YI="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Sekunde ausgeführt!",QI="CRON",vI="Datum",UI="Tage",bI="Tag",$I="Wochentage",PI="Jeden",WI="alle N Tage",RI="jeden x-ten Tag der Woche",JI="alle N Wochentage",BI="alle N Stunden",GI="alle N Minuten",FI="alle N Monate",HI="alle N Sekunden",VI="jeden Tag",ZI="jeden Tag der Woche",XI="jeden Tag der Woche",KI="jede Stunde",qI="jede Minute",ew="jeden Monat",tw="jede Sekunde",sw="Von",iw="Stunden",rw="Intervall",ow="Intervall zwischen",Mw="Ungültiger CRON",nw="Minuten",aw="Monate",cw="Einmal",uw="Zeitraum",lw="Sekunden",Nw="Einfach",Lw="Bestimmte Zeit",jw="bestimmte Tage",gw="bestimmte(r) Tag(e) der Woche",Tw="bestimmten Wochentag",yw="bestimmte Stunden",Dw="bestimmte Minuten",dw="bestimmte Monate",zw="bestimmte Sekunden",hw="Zeit",Iw="Bis",ww="Wizard",Cw="alle",Aw="Astronomischer Tag",mw="Astronomische Nacht",pw="Morgendämmerung",Ow="Abenddämmerung",Ew="Goldene Stunde",_w="Goldene Stundenende",fw="Nadir",Sw="Nautische Morgendämmerung",xw="Nautische Abenddämmerung",kw="Nacht",Yw="Nachtende",Qw="Sonnenmittag",vw="Sonnenaufgang",Uw="Sonnenaufgangende",bw="Sonnenuntergang",$w="Sonnenuntergangstart",Pw="am",Ww="um %s",Rw="jeden Tag",Jw="jede Stunde",Bw="jede Minute",Gw="jeden Monat",Fw="jeden %s Tag",Hw="alle %s Stunden",Vw="alle %s Minuten",Zw="alle %s Monate",Xw="alle %s Wochen",Kw="alle %s Jahre",qw="jede Woche",e2="jedes Jahr",t2="von %s bis %s",s2="noch nie",i2="am %s von %s",r2="am %s und %s von",o2="an jedem Datum von",M2="%s",n2="%s und %s",a2="auf %s",c2="auf %s und %s",u2="an Wochenenden",l2="an Werktagen",N2="wird nicht mehr ausgeführt, weil der Start in der Vergangenheit ist",L2="auf %s",j2="von %s",g2="Ausführen von bis",T2="bis %s",y2="jeden",D2="Bestimmte Zeit",d2="von",z2="Von bis",h2="Zeitintervall",I2="umkehren",w2="keiner",C2="am",A2="Zeitraum",m2="Täglich",p2="Daten",O2="Tag",E2="Jeden",_2="Jeden Tag",f2="Jeden Monat",S2="Jede Woche",x2="Jedes Jahr",k2="Stunden",Y2="Minuten",Q2="Monat",v2="Monatlich",U2="Einmal",b2="Bestimmte Monate",$2="Woche",P2="Wochentage",W2="Wochenende",R2="Wöchentlich",J2="Arbeitstage",B2="Jahr",G2="Jährlich",F2="Bestimmte Zeit",H2="Zeit",V2="zu",Z2="Gültigkeit",X2="von",K2="bis",q2="Ganzer Tag",eC="jeden Monat",tC={"ra_%s links from aliases":"%s Links von Aliasen","ra_%s object(s) processed":"%s Objekt(e) verarbeitet","ra_%s was imported":"%s wurde importiert","ra_Accept license":"Lizenz akzeptieren",ra_Actions:G1,"ra_Add new child object to selected parent":"Dem ausgewählten übergeordneten Objekt ein neues untergeordnetes Objekt hinzufügen","ra_Add objects tree from JSON file":"Objektbaum aus JSON-Datei hinzufügen","ra_Add row":"Zeile hinzufügen","ra_Advanced options":"Erweiterte Optionen","ra_All items are filtered out":"Alle Elemente sind herausgefiltert","ra_All objects":"Alle Objekte",ra_Append:F1,"ra_Append %s entries or replace existing?":"%s Einträge anhängen oder vorhandene ersetzen?","ra_Append or replace?":"Anhängen oder ersetzen?","ra_Are you sure?":"Bist du sicher?","ra_Auto (no custom columns)":"Auto (keine benutzerdefinierten Spalten)","ra_Back to %s":"Zurück zu %s","ra_Background image":"Hintergrundbild",ra_Cancel:H1,"ra_Cannot add items with set filter":"Elemente mit festgelegtem Filter können nicht hinzugefügt werden","ra_Cannot decode license":"Lizenz kann nicht entschlüsselt werden","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Position kann nicht bestimmt werden: Die Systemeinstellungen sind leer und die GPS-Erkennung ist im Browser deaktiviert",'ra_Cannot find "%s"':'Kann "%s" nicht finden','ra_Cannot read "%s"':'"%s" kann nicht gelesen werden',"ra_Cannot read licenses: %s":"Lizenzen können nicht gelesen werden: %s","ra_Cannot retrieve options, as instance is offline":"Optionen können nicht abgerufen werden, da die Instanz offline ist","ra_Cannot update attribute, because not found in the object":"Attribut kann nicht aktualisiert werden, da es nicht im Objekt gefunden wurde","ra_Cannot upload":"Kann nicht hochladen",ra_Categories:V1,"ra_Chained certificate":"Chained Zertifikat","ra_Change color theme":"Farbthema ändern","ra_Changed from":"Geändert von","ra_Channel → State":"Kanal → Zustand","ra_Check license":"Lizenz prüfen",ra_Checked:Z1,ra_Clear:X1,"ra_Clear filter":"Filter löschen","ra_Clear icon":"Symbol löschen","ra_Click to see in full size":"Klicken Sie hier, um die Vollbildansicht zu öffnen.","ra_Click to show":"Zum Anzeigen klicken","ra_Clone current row":"Aktuelle Zeile klonen",ra_Close:K1,"ra_Collapse all nodes":"Alle Knoten zuklappen","ra_Collapse one step node":"Eine Ebene zuklappen",ra_Commercial:q1,ra_Configure:ez,"ra_Configure visible columns":"Spalten Konfigurieren","ra_Confirm deletion of %s":"Das Löschen von %s bestätigen",ra_Connected:tz,ra_Continue:sz,ra_Copied:iz,"ra_Copied %s":'"%s" kopiert',"ra_Copy content":"Inhalte kopieren",ra_Create:rz,"ra_Create alias":"Alias erstellen","ra_Create folder":"Ordner erstellen","ra_Create new folder in %s":'Neuen Ordner in "%s" erstellen',ra_Crop:oz,"ra_Define CRON...":"Definieren Sie CRON ...","ra_Define functions":"Funktionen definieren","ra_Define rooms":"Räume definieren","ra_Define schedule":"Zeitplan definieren","ra_Define schedule...":"Zeitplan definieren ...",ra_Del:Mz,ra_Delete:nz,"ra_Delete current row":"Aktuelle Zeile löschen","ra_Deselect all":"Alles abwählen","ra_Device → Channel → State":"Gerät → Kanal → Zustand","ra_Disable/Enable translation":"Übersetzung deaktivieren/aktivieren",ra_Discard:az,ra_Disconnected:cz,"ra_Do not ask for next 2 hours in this session":"Fragen Sie nicht nach den nächsten 2 Stunden in dieser Sitzung","ra_Do not export values of states":"Keine Zustandswerte exportieren","ra_Do not use let's encrypt":"Let's encrypt nicht verwenden","ra_Docker is not available":"Docker ist nicht verfügbar","ra_Docker is not installed or not running":"Docker ist nicht installiert oder läuft nicht","ra_Double click to reset table layout":"Doppelklicken, um das Tabellenlayout zurückzusetzen","ra_Drag 'n' drop some files here, or click to select files":"Die Datei hierher ziehen und ablegen, oder klicken, um die Datei auszuwählen","ra_Drop file here":"Datei hier ablegen","ra_Drop the files here...":"Datei hier ablegen...","ra_Duplicate name":"Doppelter Name","ra_Edit ACL":"ACL bearbeiten","ra_Edit alias":"Alias bearbeiten","ra_Edit custom config":"Bearbeite Benutzerdefinierte Konfiguration","ra_Edit full path":"Vollständigen Pfad bearbeiten","ra_Edit function":"Funktion bearbeiten","ra_Edit object field":"Objektfeld bearbeiten","ra_Edit role":"Rolle bearbeiten","ra_Edit room":"Raum bearbeiten","ra_Edit value":"Wert bearbeiten","ra_Enter the code from that page here":"Geben Sie den Code von dieser Seite hier ein",ra_Error:uz,"ra_Expand all nodes":"Alle Knoten aufklappen","ra_Expand one step node":"Eine Ebene aufklappen","ra_Expand/Collapse card":"Karte ein-/ausklappen","ra_Export configuration section":"Konfigurationsabschnitt exportieren","ra_Export data to %s file":"Daten in %s-Datei exportieren","ra_Failed to open JSON File":"Fehler beim Öffnen der JSON-Datei","ra_Fallback custom certificates":"Benutzerdefinierte Fallback-Zertifikate","ra_File is too big. Max %sk allowed. Try use SVG.":"Datei ist zu groß. Max %sk erlaubt. Versuchen Sie, SVG zu verwenden.",ra_Filter:lz,"ra_Filter and Data Actions":"Filter- und Datenaktionen","ra_Filter files":"Dateien filtern","ra_Folder name":"Ordnernamen","ra_Folder → Channel → State":"Ordner → Kanal → Zustand","ra_Folder → Device → Channel → State":"Ordner → Gerät → Kanal → Zustand","ra_Folder → State":"Ordner → Zustand","ra_Folders always first":"Ordner immer zuerst",ra_Friday:Nz,"ra_From file":"Aus der Datei","ra_From text":"Aus dem Text","ra_Get %s access":"%s Zugriff erhalten","ra_Good luck":"Viel Glück","ra_Hide empty folders":"Leere Ordner ausblenden","ra_If no file will be created in the folder, it will disappear after the browser closed":"Wenn im Ordner keine Datei erstellt wird, verschwindet dieser nach dem Schließen des Browsers","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Wenn die Schaltfläche oben nicht funktioniert, können Sie diese App manuell autorisieren, indem Sie diese URL besuchen","ra_Import and add configuration section":"Konfigurationsabschnitt importieren und hinzufügen","ra_Import and replace configuration section":"Konfigurationsabschnitt importieren und ersetzen","ra_Import data from %s file":"Daten aus %s-Datei importieren","ra_Import from %s":"Von %s importieren","ra_Instance %s is alive":"Instanz %s ist aktiv","ra_Instance %s is not alive":"Instanz %s ist nicht aktiv","ra_Instance is not alive":"Instanz ist nicht am Leben","ra_Invalid CRON":"Ungültiger CRON","ra_Invalid JSON":"Ungültiges JSON","ra_Invalid JSON file.":"Ungültige JSON-Datei.","ra_Invalid JSON format. Expected an array.":"Ungültiges JSON-Format. Array erwartet.","ra_Invalid answer from server":"Ungültige Antwort vom Server","ra_Invalid parent folder!":"Ungültiger übergeordneter Ordner!","ra_Invalid structure":"Ungültige Struktur","ra_JSON editor":"JSON-Editor","ra_Last change":"Letzte Änderung",ra_Latitude:Lz,"ra_License %s":"Lizenz %s","ra_License agreement":"Lizenzvereinbarung","ra_License does not exist":"Lizenz existiert nicht","ra_License expired on %s":"Lizenz am %s abgelaufen",'ra_License for other product "%s"':"Lizenz für anderes Produkt „%s“","ra_License is for version %s, but required version is %s.":"Lizenz ist für Version %s, aber erforderliche Version ist %s.","ra_License must be converted":"Die Lizenz muss auf eine neuere Version konvertiert werden. Sie können dies in Ihrem iobroker.net-Profil tun.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Lizenz im Lizenzmanager nicht gefunden. Möchten Sie Lizenzen von iobroker.net aktualisieren?","ra_Listen on all IPs":"Zugriff von allen IPs zulassen","ra_Load configuration from file":"Konfiguration aus Datei laden",ra_Logout:jz,ra_Longitude:gz,'ra_May not trigger "updateLicenses"':"Löst möglicherweise nicht „updateLicenses“ aus",ra_Message:Tz,ra_Monday:yz,"ra_Move down":"Nach unten","ra_Move up":"Nach oben",ra_Name:Dz,"ra_No data found in file":"Keine Daten in der Datei gefunden","ra_No one license found in license manager":"Im Lizenzmanager wurde keine Lizenz gefunden","ra_No response from admin":"Keine Antwort vom Administrator","ra_No response from the backend":"Keine Antwort vom Backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Nicht-Experten dürfen neue Objekte nur in "0_userdata.0" oder "alias.0" erstellen.',"ra_Not a number":"Keine Nummer","ra_OAuth Client ID":"OAuth-Client-ID","ra_OAuth Client secret":"OAuth-Client-Secret",ra_Objects:dz,ra_Ok:zz,"ra_On weekdays":"An Wochentagen","ra_Only following structures of objects are available:":"Es stehen nur folgende Objektstrukturen zur Verfügung:","ra_Only selected":"Nur ausgewählt","ra_Owner group":"Besitzergruppe","ra_Owner user":"Besitzer Benutzer","ra_Passwords are not equal!":"Passwörter sind nicht gleich!","ra_Place your files here or click here to open the browse dialog":"Die Dateien hier platzieren oder hier klicken, um den Suchdialog zu öffnen","ra_Please allow popups in your browser for this page!":"Bitte lassen Sie Popups für diese Seite in Ihrem Browser zu!","ra_Please confirm":"Bitte bestätigen","ra_Please create license":"Bitte erstellen Sie eine Lizenz","ra_Please enter the license":"Bitte die Lizenz eingeben","ra_Please select file...":"Bitte Datei auswählen...","ra_Please select object ID...":"Bitte Objekt-ID auswählen...","ra_Port could be used by %s":"Port könnte von %s verwendet werden","ra_Port is already used by %s":"Port wird bereits von %s verwendet","ra_Press ENTER Key to add new item":"Die Eingabetaste drücken, um ein neues Element hinzuzufügen","ra_Private certificate":"Privates Zertifikat",ra_Product:hz,"ra_Public certificate":"Öffentliches Zertifikat","ra_Quality code":"Qualität","ra_Refresh tree":"Baum aktualisieren","ra_Reload files":"Dateien neu laden",ra_Rename_Move_Copy:Iz,"ra_Renew %s access":"%s Zugriff erneuern",ra_Repeat:wz,ra_Replace:Cz,"ra_Request timed out":"Zeitüberschreitung der Anforderung","ra_Restrict to folder":"Auf Ordner beschränken",ra_Root:Az,ra_Saturday:mz,ra_Save:pz,"ra_Save and close":"Speichern und schließen","ra_Save configuration to file":"Konfiguration in Datei speichern","ra_Save objects tree as JSON file":"Objektbaum als JSON-Datei speichern","ra_Select all":"Alle auswählen","ra_Select color":"Wähle Farbe","ra_Select predefined icon":"Vordefiniertes Symbol auswählen","ra_Select type of export":"Die Art des Exports auswählen ",ra_Selected:Oz,"ra_Selected %s object(s)":"Ausgewählt %s Objekt(en)","ra_Serial number (UUID)":"Seriennummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Seriennummer (UUID) „%s“ in der Lizenz gilt für ein anderes Gerät.","ra_Session will expire in %s seconds. Continue?":"Die Sitzung läuft in %s Sekunden ab. Fortfahren?","ra_Show all folders":"Alle Ordner anzeigen","ra_Show lines between rows":"Linien zwischen Zeilen anzeigen","ra_Show/Hide object descriptions":"Objektbeschreibungen ein-/ausblenden","ra_Show/hide filter input":"Filtereingabe ein-/ausblenden","ra_Some data are not stored. Discard?":"Einige Daten werden nicht gespeichert. Verwerfen?",ra_States:Ez,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Erfolgreich autorisiert. Token gültig bis %s und wird automatisch erneuert.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Erfolgreich autorisiert. Token gültig bis %s, kann aber ablaufen, da die Instanz nicht ausgeführt wird.","ra_Suitable license not found in license manager":"Passende Lizenz im Lizenzmanager nicht gefunden",ra_Sunday:_z,"ra_Suppress question for next %s minutes":"Frage für die nächsten %s Minuten unterdrücken","ra_System language":"Systemsprache","ra_Take browser position":"Position vom Browser einnehmen","ra_Take position from system settings":"Position aus den Systemeinstellungen übernehmen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Die Experten können Objekte überall erstellen, außer auf der zweiten Ebene (z. B. "vis.0" oder "javascript.0").',"ra_The page you are looking for was not found":"Die gesuchte Seite wurde nicht gefunden","ra_The schedule will be executed every minute. Are you sure?":"Der Zeitplan wird jede Minute ausgeführt. Sind Sie sicher?","ra_The schedule will be executed every second. Are you sure?":"Der Zeitplan wird jede Sekunde ausgeführt. Sind Sie sicher?",ra_Thursday:fz,ra_Timestamp:Sz,"ra_Toggle expert mode":"Expertenmodus umschalten","ra_Toggle the states view":"Statusansicht umschalten","ra_Toggle view mode":"Ansichtsmodus umschalten","ra_Too big":"Zu groß","ra_Too small":"Zu klein","ra_Transparent dialog":"Transparenter Dialog",ra_Tuesday:xz,"ra_Unknown error":"Unbekannter Fehler","ra_Unknown error!":"Unbekannter Fehler!",ra_Update:kz,"ra_Upload file":"Datei hochladen","ra_Use all available let's encrypt certificates":"Alle verfügbaren Zertifikate von Let's encrypt benutzen","ra_Use iobroker.acme adapter for letsencrypt certificates":"ioBroker.acme-Adapter für letsencrypt-Zertifikate verwenden","ra_Use system settings for position":"Systemeinstellungen für die Position verwenden","ra_Used system settings":"Systemeinstellungen","ra_User files":"Benutzerdaten",ra_ValidTill:Yz,ra_Value:Qz,ra_Version:vz,"ra_View file":"Datei ansehen","ra_View: %s":"Anschauen: %s",ra_Wednesday:Uz,ra_Width:bz,"ra_YAML editor":"YAML-Editor",ra_Yes:$z,"ra_You can export all objects or just the selected branch.":"Sie können alle Objekte oder nur den ausgewählten Zweig exportieren.","ra_You can filter entries by entering here some text":"Sie können Einträge filtern, indem Sie hier Text eingeben","ra_You can use * as wildcard":"Sie können * als Platzhalter verwenden",ra___different__:Pz,ra_aclEveryone_read_object:Wz,ra_aclEveryone_read_state:Rz,ra_aclEveryone_write_object:Jz,ra_aclEveryone_write_state:Bz,ra_aclGroup_read_object:Gz,ra_aclGroup_read_state:Fz,ra_aclGroup_write_object:Hz,ra_aclGroup_write_state:Vz,ra_aclOwner_read_object:Zz,ra_aclOwner_read_state:Xz,ra_aclOwner_write_object:Kz,ra_aclOwner_write_state:qz,ra_buttons:eh,ra_changedFrom:th,ra_close:sh,ra_create_boolean_state:ih,ra_create_channel:rh,ra_create_device:oh,ra_create_number_state:Mh,ra_create_state:nh,ra_create_string_state:ah,ra_daysShortText:ch,ra_dow_Fr:uh,ra_dow_Mo:lh,ra_dow_Sa:Nh,ra_dow_Su:Lh,ra_dow_Th:jh,ra_dow_Tu:gh,ra_dow_We:Th,ra_expertMode:yh,ra_false:Dh,ra_fileType_all:dh,ra_fileType_audio:zh,ra_fileType_code:hh,ra_fileType_images:Ih,ra_fileType_txt:wh,ra_fileType_video:Ch,"ra_fileType_video,":"Video",ra_filter_customs:Ah,ra_filter_customs_without:mh,ra_filter_func:ph,ra_filter_id:Oh,ra_filter_name:Eh,ra_filter_role:_h,ra_filter_room:fh,ra_filter_type:Sh,"ra_import data from %s file":"Daten aus %s-Datei importieren",ra_invalidConfig:xh,ra_lastChange:kh,ra_locally:Yh,ra_month_Apr:Qh,ra_month_Aug:vh,ra_month_Dec:Uh,ra_month_Feb:bh,ra_month_Jan:$h,ra_month_Jul:Ph,ra_month_Jun:Wh,ra_month_Mai:Rh,ra_month_Mar:Jh,ra_month_Nov:Bh,ra_month_Oct:Gh,ra_month_Sep:Fh,ra_months_Apr:Hh,ra_months_Aug:Vh,ra_months_Dec:Zh,ra_months_Feb:Xh,ra_months_Jan:Kh,ra_months_Jul:qh,ra_months_Jun:eI,ra_months_Mai:tI,ra_months_Mar:sI,ra_months_Nov:iI,ra_months_Oct:rI,ra_months_Sep:oI,"ra_no confirm for 5 mins":"5 Minuten lang keine Bestätigung",ra_none:MI,ra_object_changed_by:nI,ra_object_changed_by_user:aI,ra_otherConfig:cI,ra_qualityCode:uI,ra_repeat:lI,ra_select_folder_hint:NI,ra_show_all:LI,ra_state_changed_by:jI,ra_state_changed_from:gI,ra_timestamp:TI,ra_tooltip_ack:yI,ra_tooltip_comment:DI,ra_tooltip_copyState:dI,ra_tooltip_ctrlForLink:zI,ra_tooltip_customConfig:hI,ra_tooltip_deleteObject:II,ra_tooltip_editObject:wI,ra_tooltip_editState:CI,ra_tooltip_expire:AI,ra_tooltip_from:mI,ra_tooltip_lc:pI,ra_tooltip_quality:OI,ra_tooltip_ts:EI,ra_tooltip_user:_I,ra_tooltip_value:fI,ra_true:SI,"ra_use seconds":"Sekunden benutzen",ra_val:xI,"ra_via internet":"übers Internet",ra_warning_every_minute:kI,ra_warning_every_second:YI,sc_cron:QI,sc_date:vI,sc_dates:UI,sc_dow:bI,sc_dows:$I,sc_every:PI,sc_everyN_dates:WI,sc_everyN_dow:RI,sc_everyN_dows:JI,sc_everyN_hours:BI,sc_everyN_minutes:GI,sc_everyN_months:FI,sc_everyN_seconds:HI,sc_every_dates:VI,sc_every_dow:ZI,sc_every_dows:XI,sc_every_hours:KI,sc_every_minutes:qI,sc_every_months:ew,sc_every_seconds:tw,sc_from:sw,sc_hours:iw,sc_interval:rw,sc_intervalBetween:ow,sc_invalid_cron:Mw,sc_minutes:nw,sc_months:aw,sc_once:cw,sc_period:uw,sc_seconds:lw,sc_simple:Nw,sc_specific:Lw,sc_specific_dates:jw,sc_specific_dow:gw,sc_specific_dows:Tw,sc_specific_hours:yw,sc_specific_minutes:Dw,sc_specific_months:dw,sc_specific_seconds:zw,sc_time:hw,sc_to:Iw,sc_wizard:ww,sch_all:Cw,sch_astroDay:Aw,sch_astroNight:mw,sch_astro_dawn:pw,sch_astro_dusk:Ow,sch_astro_goldenHour:Ew,sch_astro_goldenHourEnd:_w,sch_astro_nadir:fw,sch_astro_nauticalDawn:Sw,sch_astro_nauticalDusk:xw,sch_astro_night:kw,sch_astro_nightEnd:Yw,sch_astro_solarNoon:Qw,sch_astro_sunrise:vw,sch_astro_sunriseEnd:Uw,sch_astro_sunset:bw,sch_astro_sunsetStart:$w,sch_at:Pw,sch_desc_atTime:Ww,sch_desc_everyDay:Rw,sch_desc_everyHour:Jw,sch_desc_everyMinute:Bw,sch_desc_everyMonth:Gw,sch_desc_everyNDay:Fw,sch_desc_everyNHours:Hw,sch_desc_everyNMinutes:Vw,sch_desc_everyNMonths:Zw,sch_desc_everyNWeeks:Xw,sch_desc_everyNYears:Kw,sch_desc_everyWeek:qw,sch_desc_everyYear:e2,sch_desc_intervalFromTo:t2,sch_desc_never:s2,sch_desc_onDate:i2,sch_desc_onDates:r2,sch_desc_onEveryDate:o2,sch_desc_onMonth:M2,sch_desc_onMonths:n2,sch_desc_onWeekday:a2,sch_desc_onWeekdays:c2,sch_desc_onWeekends:u2,sch_desc_onWorkdays:l2,sch_desc_onceInPast:N2,sch_desc_once_on:L2,sch_desc_validFrom:j2,sch_desc_validFromTo:g2,sch_desc_validTo:T2,sch_every:y2,sch_exactTime:D2,sch_from:d2,sch_fromTo:z2,sch_intervalTime:h2,sch_invert:I2,sch_no_one:w2,sch_on:C2,sch_period:A2,sch_periodDaily:m2,sch_periodDates:p2,sch_periodDay:O2,sch_periodEvery:E2,sch_periodEveryDay:_2,sch_periodEveryMonth:f2,sch_periodEveryWeek:S2,sch_periodEveryYear:x2,sch_periodHours:k2,sch_periodMinutes:Y2,sch_periodMonth:Q2,sch_periodMonthly:v2,sch_periodOnce:U2,sch_periodSpecificMonths:b2,sch_periodWeek:$2,sch_periodWeekdays:P2,sch_periodWeekend:W2,sch_periodWeekly:R2,sch_periodWorkdays:J2,sch_periodYear:B2,sch_periodYearly:G2,sch_specificTime:F2,sch_time:H2,sch_to:V2,sch_valid:Z2,sch_validFrom:X2,sch_validTo:K2,sch_wholeDay:q2,sch_yearEveryMonth:eC},sC="Действия",iC="Добавить",rC="Отмена",oC="Категории",MC="Проверено",nC="Удалить",aC="Закрыть",cC="Коммерческая",uC="Настроить",lC="Соединение установлено",NC="Продолжать",LC="скопировано",jC="Создать",gC="Обрезать",TC="Delete",yC="Удалить",DC="Отказаться",dC="Отключено",zC="Ошибка",hC="Фильтр",IC="Пятница",wC="Широта",CC="Выйти",AC="Долгота",mC="Сообщение",pC="Понедельник",OC="Имя",EC="Объекты",_C="Ok",fC="Продукт",SC="Переименовать/Переместить/Копировать",xC="Повторение",kC="Заменять",YC="Начало",QC="Суббота",vC="Сохранить",UC="выбранный",bC="Состояния",$C="Воскресенье",PC="Четверг",WC="Времени",RC="Вторник",JC="Обновить",BC="Годен до",GC="Значение",FC="Версия",HC="Среда",VC="Ширина",ZC="Да",XC="разное",KC="Каждый может читать объект",qC="Каждый может читать состояние",eA="Каждый может написать объект",tA="Каждый может написать состояние",sA="Группа может читать объект",iA="Группа может читать состояние",rA="Группа может писать объект",oA="Группа может записывать состояние",MA="Владелец может читать объект",nA="Владелец может читать состояние",aA="Владелец может писать объект",cA="Владелец может писать состояние",uA="Кнопки",lA="Изменено с",NA="Закрыть",LA="Создать логическое состояние",jA="Создать канал",gA="Создать устройство",TA="Создать состояние номера",yA="Создать состояние",DA="Создать состояние строки",dA="д.",zA="Пт",hA="Пн",IA="Сб",wA="Вс",CA="Чт",AA="Вт",mA="Ср",pA="Экспертный режим",OA="ЛОЖЬ",EA="Все файлы",_A="Аудио",fA="Код/JSON",SA="Картинки",xA="Текст",kA="видео",YA="настройки",QA="без",vA="функция",UA="ID",bA="Имя",$A="роль",PA="комната",WA="Тип",RA="Неверные настройки",JA="Последнее изменение",BA="локально",GA="Апр",FA="Авг",HA="Дек",VA="Фев",ZA="Янв",XA="Июл",KA="Июн",qA="Май",em="Мрт",tm="Ноя",sm="Окт",im="Сен",rm="Апр",om="Авг",Mm="Дек",nm="Фев",am="Янв",cm="Июнь",um="Июль",lm="Май",Nm="Март",Lm="Ноя",jm="Окт",gm="Сен",Tm="ничего",ym="Объект изменен",Dm="Последний раз объект изменен в",dm="Настройки из другого адаптера %s",zm="Код качества",hm="повтор",Im="Чтобы выбрать папку, просто удерживайте клавишу «Shift», щелкнув папку.",wm="Показать все",Cm="Состояние изменено",Am="Объект изменен с",mm="Отметка времени",pm="Подтверждено",Om="Комментарий",Em="Скопируйте значение состояния",_m="Удерживайте клавишу Cltr/⌘, чтобы открыть ссылку",fm="Пользовательские настройки",Sm="Удалить объект",xm="Редактировать объект",km="Изменить значение состояния",Ym="Истекает через",Qm="От",vm="Последнее изменение",Um="Качество",bm="Отметка времени",$m="пользователь",Pm="Значение",Wm="истинный",Rm="Значение",Jm="Внимание: задание CRON будет запускаться каждую минуту в течение указанного периода!",Bm="Внимание: задание CRON будет выполняться каждую секунду в течение указанного периода!",Gm="CRON",Fm="Дата",Hm="Даты",Vm="День",Zm="День недели",Xm="каждый(ую/ые)",Km="каждый N день",qm="каждый N-й день недели",ep="каждый N день недели",tp="каждые N часов",sp="каждые N минут",ip="каждые N месяцев",rp="каждые N секунд",op="каждый день",Mp="Каждый день недели",np="каждый день недели",ap="каждый час",cp="каждую минуту",up="каждый месяц",lp="каждую секунду",Np="От",Lp="часы",jp="Интервал",gp="Интервал между",Tp="Неверный CRON",yp="минуты",Dp="Месяцы",dp="один раз",zp="Период",hp="секунды",Ip="Просто",wp="Конкретное время",Cp="конкретные даты",Ap="конкретный день(а) недели",mp="конкретный день недели",pp="конкретные часы",Op="конкретные минуты",Ep="конкретные месяцы",_p="конкретные секунды",fp="Время",Sp="До",xp="Форма",kp="все",Yp="днём",Qp="ночью",vp="Рассвет",Up="Сумерки",bp="Золотой час",$p="Конец золотого часа",Pp="Надир",Wp="Морской рассвет",Rp="Морские сумерки",Jp="Ночь",Bp="Конец ночи",Gp="Солнечный полдень",Fp="Восход",Hp="Восход солнца",Vp="Заход солнца",Zp="Начало заката",Xp="дата",Kp="в %s",qp="каждый день",e3="каждый час",t3="каждую минуту",s3="каждый месяц",i3="каждый %s день",r3="каждый %s часов",o3="каждые %s минут",M3="каждые %s месяцев",n3="каждые %s недель",a3="каждые %s лет",c3="каждую неделю",u3="каждый год",l3="от %s до %s",N3="никогда",L3="%s %s",j3="%s и %s",g3="в каждый день",T3="%s",y3="%s и %s",D3="%s",d3="%s и %s",z3="на выходных",h3="в рабочие дни",I3="не будет больше выполняться, потому что начало в прошлом",w3="%s",C3="%s",A3="Выполнить с",m3="%s",p3="каждый",O3="Конкретное время",E3="от",_3="От и до",f3="Интервал времени",S3="инвертировать",x3="никакой",k3="на",Y3="период",Q3="Ежедневно",v3="Даты",U3="День",b3="каждый",$3="Каждый день",P3="Каждый месяц",W3="Каждую неделю",R3="Каждый год",J3="часов",B3="минут",G3="месяц",F3="ежемесячно",H3="однажды",V3="Конкретные месяцы",Z3="Неделю",X3="Будние дни",K3="выходные",q3="еженедельно",eO="Рабочие дни",tO="Год",sO="каждый год",iO="Конкретное время",rO="Время",oO="в",MO="действительный",nO="от",aO="в",cO="Весь день",uO="каждый месяц",lO={"ra_%s links from aliases":"%s ссылок из псевдонимов","ra_%s object(s) processed":"Объектов обработано: %s","ra_%s was imported":"%s был импортирован","ra_Accept license":"Принять лицензию",ra_Actions:sC,"ra_Add new child object to selected parent":"Добавить новый дочерний объект к выбранному родительскому объекту","ra_Add objects tree from JSON file":"Добавить дерево объектов из файла JSON","ra_Add row":"Добавить ряд","ra_Advanced options":"Расширенные настройки","ra_All items are filtered out":"Все элементы отфильтрованы","ra_All objects":"Все объекты",ra_Append:iC,"ra_Append %s entries or replace existing?":"Добавить записи %s или заменить существующие?","ra_Append or replace?":"Дополнить или заменить?","ra_Are you sure?":"Вы уверены?","ra_Auto (no custom columns)":"Авто (без настраиваемых столбцов)","ra_Back to %s":"Вернуться к %s","ra_Background image":"Фоновая картинка",ra_Cancel:rC,"ra_Cannot add items with set filter":"Невозможно добавить элементы с установленным фильтром","ra_Cannot decode license":"Не могу декодировать лицензию","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Невозможно определить местоположение: системные настройки пусты, а обнаружение GPS отключено в браузере.",'ra_Cannot find "%s"':'Не могу найти "%s"','ra_Cannot read "%s"':'Не могу прочитать "%s"',"ra_Cannot read licenses: %s":"Невозможно прочитать лицензии: %s","ra_Cannot retrieve options, as instance is offline":"Невозможно получить параметры, так как экземпляр находится в автономном режиме.","ra_Cannot update attribute, because not found in the object":"Невозможно обновить атрибут, потому что он не найден в объекте","ra_Cannot upload":"Невозможно загрузить",ra_Categories:oC,"ra_Chained certificate":"Chained сертификат","ra_Change color theme":"Изменить цветовую тему","ra_Changed from":"Изменено","ra_Channel → State":"Канал → Состояние","ra_Check license":"Проверить лицензию",ra_Checked:MC,ra_Clear:nC,"ra_Clear filter":"Очистить фильтр","ra_Clear icon":"Очистить значок","ra_Click to see in full size":"Нажмите, чтобы посмотреть в полном размере","ra_Click to show":"Нажмите, чтобы показать","ra_Clone current row":"Клонировать текущую строку",ra_Close:aC,"ra_Collapse all nodes":"Свернуть все узлы","ra_Collapse one step node":"Свернуть один уровень",ra_Commercial:cC,ra_Configure:uC,"ra_Configure visible columns":"Настроить видимые столбцы","ra_Confirm deletion of %s":"Подтвердите удаление %s",ra_Connected:lC,ra_Continue:NC,ra_Copied:LC,"ra_Copied %s":'Скопировано "%s"',"ra_Copy content":"Копировать содержимое",ra_Create:jC,"ra_Create alias":"Создать псевдоним","ra_Create folder":"Создать папку","ra_Create new folder in %s":"Создать новую папку в %s",ra_Crop:gC,"ra_Define CRON...":"Определите CRON...","ra_Define functions":"Задать функции","ra_Define rooms":"Задать комнаты","ra_Define schedule":"Задать расписание","ra_Define schedule...":"Определить расписание ...",ra_Del:TC,ra_Delete:yC,"ra_Delete current row":"Удалить текущую строку","ra_Deselect all":"Убрать выбор везде","ra_Device → Channel → State":"Устройство → Канал → Состояние","ra_Disable/Enable translation":"Включить/отключить перевод",ra_Discard:DC,ra_Disconnected:dC,"ra_Do not ask for next 2 hours in this session":"Не спрашивайте о следующих 2 часах в этом сеансе","ra_Do not export values of states":"Не экспортировать значения состояний","ra_Do not use let's encrypt":"Не использовать Let’s Encrypt","ra_Docker is not available":"Докер недоступен","ra_Docker is not installed or not running":"Docker не установлен или не запущен","ra_Double click to reset table layout":"Дважды щелкните, чтобы сбросить макет таблицы","ra_Drag 'n' drop some files here, or click to select files":"Перетащите сюда несколько файлов или щелкните, чтобы выбрать файлы","ra_Drop file here":"Перетащите файл сюда","ra_Drop the files here...":"Перетащите файл сюда ...","ra_Duplicate name":"Повторяющееся имя","ra_Edit ACL":"Изменить ACL-список","ra_Edit alias":"Изменить псевдоним","ra_Edit custom config":"Редактировать настраиваемую конфигурацию","ra_Edit full path":"Изменить полный путь","ra_Edit function":"Изменить функцию","ra_Edit object field":"Поле редактирования объекта","ra_Edit role":"Изменить роль","ra_Edit room":"Редактировать комнату","ra_Edit value":"Изменить значение","ra_Enter the code from that page here":"Введите код с этой страницы здесь",ra_Error:zC,"ra_Expand all nodes":"Развернуть все узлы","ra_Expand one step node":"Открыть один уровень","ra_Expand/Collapse card":"Развернуть/Свернуть карточку","ra_Export configuration section":"Раздел конфигурации экспорта","ra_Export data to %s file":"Экспорт данных в файл %s","ra_Failed to open JSON File":"Не удалось открыть файл JSON","ra_Fallback custom certificates":"Резервные пользовательские сертификаты","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл слишком большой. Разрешено максимальное количество %sk. Попробуйте использовать SVG.",ra_Filter:hC,"ra_Filter and Data Actions":"Фильтрация и действия с данными","ra_Filter files":"Фильтровать файлы","ra_Folder name":"Имя папки","ra_Folder → Channel → State":"Папка → Канал → Состояние","ra_Folder → Device → Channel → State":"Папка → Устройство → Канал → Состояние","ra_Folder → State":"Папка → Состояние","ra_Folders always first":"Папки всегда на первом месте",ra_Friday:IC,"ra_From file":"Из файла","ra_From text":"Из текста","ra_Get %s access":"Получить %s доступ","ra_Good luck":"Удачи","ra_Hide empty folders":"Скрыть пустые папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Если в папке не будет создан файл, он исчезнет после закрытия браузера.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Если кнопка выше не работает, вы можете вручную авторизовать это приложение, перейдя по этой ссылке.","ra_Import and add configuration section":"Импорт и добавление раздела конфигурации","ra_Import and replace configuration section":"Импорт и замена раздела конфигурации","ra_Import data from %s file":"Импорт данных из файла %s","ra_Import from %s":"Импорт из %s","ra_Instance %s is alive":"Экземпляр %s работает","ra_Instance %s is not alive":"Экземпляр %s не работает","ra_Instance is not alive":"Экземпляр не живой","ra_Invalid CRON":"Неверный CRON","ra_Invalid JSON":"Неверный JSON","ra_Invalid JSON file.":"Неверный файл JSON.","ra_Invalid JSON format. Expected an array.":"Недопустимый формат JSON. Ожидается массив.","ra_Invalid answer from server":"Неверный ответ от сервера","ra_Invalid parent folder!":"Неверная родительская папка!","ra_Invalid structure":"Неверная структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Последнее изменение",ra_Latitude:wC,"ra_License %s":"Лицензия %s","ra_License agreement":"Лицензионное соглашение","ra_License does not exist":"Лицензия не существует","ra_License expired on %s":"Срок действия лицензии истек %s",'ra_License for other product "%s"':'Лицензия на другой продукт "%s"',"ra_License is for version %s, but required version is %s.":"Лицензия предназначена для версии %s, но необходима версия %s.","ra_License must be converted":"Лицензия должна быть преобразована в более новую версию. Вы можете сделать это в своем профиле на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Лицензия не найдена в диспетчере лицензий. Вы хотите обновить лицензии от iobroker.net?","ra_Listen on all IPs":"Слушать на всех IP","ra_Load configuration from file":"Загрузить конфигурацию из файла",ra_Logout:CC,ra_Longitude:AC,'ra_May not trigger "updateLicenses"':"Не может запускать «updateLicenses»",ra_Message:mC,ra_Monday:pC,"ra_Move down":"Вниз","ra_Move up":"Вверх",ra_Name:OC,"ra_No data found in file":"Данные в файле не найдены","ra_No one license found in license manager":"В менеджере лицензий не найдена ни одна лицензия","ra_No response from admin":"Нет ответа от администратора","ra_No response from the backend":"Нет ответа от бэкэнда",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Не-эксперты могут создавать новые объекты только в «0_userdata.0» или «alias.0».","ra_Not a number":"Не число","ra_OAuth Client ID":"Идентификатор клиента OAuth","ra_OAuth Client secret":"Секрет клиента OAuth",ra_Objects:EC,ra_Ok:_C,"ra_On weekdays":"На выходных","ra_Only following structures of objects are available:":"Доступны только следующие структуры объектов:","ra_Only selected":"Только выбранные","ra_Owner group":"Группа владельцев","ra_Owner user":"Пользователь-владелец","ra_Passwords are not equal!":"Пароли не равны!","ra_Place your files here or click here to open the browse dialog":"Поместите свои файлы сюда или щелкните здесь, чтобы открыть диалоговое окно выбора","ra_Please allow popups in your browser for this page!":"Пожалуйста, разрешите всплывающие окна в вашем браузере для этой страницы!","ra_Please confirm":"Пожалуйста подтвердите","ra_Please create license":"Пожалуйста, создайте лицензию","ra_Please enter the license":"Пожалуйста, введите лицензию","ra_Please select file...":"Пожалуйста, выберите файл...","ra_Please select object ID...":"Пожалуйста, выберите идентификатор объекта ...","ra_Port could be used by %s":"Порт может использоваться %s","ra_Port is already used by %s":"Порт уже используется %s","ra_Press ENTER Key to add new item":"Нажмите клавишу ENTER, чтобы добавить новый элемент.","ra_Private certificate":"Частный сертификат",ra_Product:fC,"ra_Public certificate":"Публичный сертификат","ra_Quality code":"Валидность","ra_Refresh tree":"Обновить дерево","ra_Reload files":"Обновить",ra_Rename_Move_Copy:SC,"ra_Renew %s access":"Продлить доступ %s",ra_Repeat:xC,ra_Replace:kC,"ra_Request timed out":"Истекло время запроса","ra_Restrict to folder":"Ограничить папкой",ra_Root:YC,ra_Saturday:QC,ra_Save:vC,"ra_Save and close":"Сохранить и закрыть","ra_Save configuration to file":"Сохранить конфигурацию в файл","ra_Save objects tree as JSON file":"Сохранить дерево объектов как файл JSON","ra_Select all":"Выбрать все","ra_Select color":"Выберите цвет","ra_Select predefined icon":"Выберите предопределенный значок","ra_Select type of export":"Выберите тип экспорта",ra_Selected:UC,"ra_Selected %s object(s)":"Объектов: %s","ra_Serial number (UUID)":"Серийный номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Серийный номер (UUID) «%s» в лицензии предназначен для другого устройства.","ra_Session will expire in %s seconds. Continue?":"Сессия истечет через %s секунд. Продолжить?","ra_Show all folders":"Показать все папки","ra_Show lines between rows":"Показать линии между строками","ra_Show/Hide object descriptions":"Показать/скрыть описания объектов","ra_Show/hide filter input":"Показать/скрыть ввод фильтра","ra_Some data are not stored. Discard?":"Некоторые данные не сохранились. Отказаться?",ra_States:bC,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизация выполнена успешно. Токен действителен до %s и будет автоматически продлен.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизация выполнена успешно. Токен действителен до %s, но его срок действия может истечь, так как экземпляр не запущен.","ra_Suitable license not found in license manager":"Подходящая лицензия не найдена в менеджере лицензий",ra_Sunday:$C,"ra_Suppress question for next %s minutes":"Скрыть вопрос на следующие %s минут(ы)","ra_System language":"Язык системы","ra_Take browser position":"Взять позицию из браузера","ra_Take position from system settings":"Занять позицию из системных настроек",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Эксперты могут создавать объекты везде, кроме второго уровня (например, «vis.0» или «javascript.0»).","ra_The page you are looking for was not found":"Страница, которую вы ищете, не найдена","ra_The schedule will be executed every minute. Are you sure?":"Расписание будет выполняться каждую минуту. Вы уверены?","ra_The schedule will be executed every second. Are you sure?":"Расписание будет выполняться каждую секунду. Вы уверены?",ra_Thursday:PC,ra_Timestamp:WC,"ra_Toggle expert mode":"Переключить экспертный режим","ra_Toggle the states view":"Переключить режим просмотра состояний","ra_Toggle view mode":"Переключить режим просмотра","ra_Too big":"Слишком большое","ra_Too small":"Слишком маленькое","ra_Transparent dialog":"Прозрачный диалог",ra_Tuesday:RC,"ra_Unknown error":"Неизвестная ошибка","ra_Unknown error!":"Неизвестная ошибка!",ra_Update:JC,"ra_Upload file":"Загрузить файл","ra_Use all available let's encrypt certificates":"Использовать все доступные сертификаты Let’s encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Используйте адаптер iobroker.acme для сертификатов letsencrypt","ra_Use system settings for position":"Использовать системные настройки для позиции","ra_Used system settings":"Системные настройки","ra_User files":"Файлы пользователя",ra_ValidTill:BC,ra_Value:GC,ra_Version:FC,"ra_View file":"Посмотреть файл","ra_View: %s":"Просмотр: %s",ra_Wednesday:HC,ra_Width:VC,"ra_YAML editor":"Редактор YAML",ra_Yes:ZC,"ra_You can export all objects or just the selected branch.":"Вы можете экспортировать все объекты или только выбранную ветвь.","ra_You can filter entries by entering here some text":"Вы можете отфильтровать записи, введя здесь текст","ra_You can use * as wildcard":"Вы можете использовать * в качестве подстановочного знака",ra___different__:XC,ra_aclEveryone_read_object:KC,ra_aclEveryone_read_state:qC,ra_aclEveryone_write_object:eA,ra_aclEveryone_write_state:tA,ra_aclGroup_read_object:sA,ra_aclGroup_read_state:iA,ra_aclGroup_write_object:rA,ra_aclGroup_write_state:oA,ra_aclOwner_read_object:MA,ra_aclOwner_read_state:nA,ra_aclOwner_write_object:aA,ra_aclOwner_write_state:cA,ra_buttons:uA,ra_changedFrom:lA,ra_close:NA,ra_create_boolean_state:LA,ra_create_channel:jA,ra_create_device:gA,ra_create_number_state:TA,ra_create_state:yA,ra_create_string_state:DA,ra_daysShortText:dA,ra_dow_Fr:zA,ra_dow_Mo:hA,ra_dow_Sa:IA,ra_dow_Su:wA,ra_dow_Th:CA,ra_dow_Tu:AA,ra_dow_We:mA,ra_expertMode:pA,ra_false:OA,ra_fileType_all:EA,ra_fileType_audio:_A,ra_fileType_code:fA,ra_fileType_images:SA,ra_fileType_txt:xA,ra_fileType_video:kA,"ra_fileType_video,":"видео",ra_filter_customs:YA,ra_filter_customs_without:QA,ra_filter_func:vA,ra_filter_id:UA,ra_filter_name:bA,ra_filter_role:$A,ra_filter_room:PA,ra_filter_type:WA,"ra_import data from %s file":"Импортировать данные из файла %s",ra_invalidConfig:RA,ra_lastChange:JA,ra_locally:BA,ra_month_Apr:GA,ra_month_Aug:FA,ra_month_Dec:HA,ra_month_Feb:VA,ra_month_Jan:ZA,ra_month_Jul:XA,ra_month_Jun:KA,ra_month_Mai:qA,ra_month_Mar:em,ra_month_Nov:tm,ra_month_Oct:sm,ra_month_Sep:im,ra_months_Apr:rm,ra_months_Aug:om,ra_months_Dec:Mm,ra_months_Feb:nm,ra_months_Jan:am,ra_months_Jul:cm,ra_months_Jun:um,ra_months_Mai:lm,ra_months_Mar:Nm,ra_months_Nov:Lm,ra_months_Oct:jm,ra_months_Sep:gm,"ra_no confirm for 5 mins":"не спрашивать подтверждения в течение 5 минут",ra_none:Tm,ra_object_changed_by:ym,ra_object_changed_by_user:Dm,ra_otherConfig:dm,ra_qualityCode:zm,ra_repeat:hm,ra_select_folder_hint:Im,ra_show_all:wm,ra_state_changed_by:Cm,ra_state_changed_from:Am,ra_timestamp:mm,ra_tooltip_ack:pm,ra_tooltip_comment:Om,ra_tooltip_copyState:Em,ra_tooltip_ctrlForLink:_m,ra_tooltip_customConfig:fm,ra_tooltip_deleteObject:Sm,ra_tooltip_editObject:xm,ra_tooltip_editState:km,ra_tooltip_expire:Ym,ra_tooltip_from:Qm,ra_tooltip_lc:vm,ra_tooltip_quality:Um,ra_tooltip_ts:bm,ra_tooltip_user:$m,ra_tooltip_value:Pm,ra_true:Wm,"ra_use seconds":"секунды",ra_val:Rm,"ra_via internet":"через интернет",ra_warning_every_minute:Jm,ra_warning_every_second:Bm,sc_cron:Gm,sc_date:Fm,sc_dates:Hm,sc_dow:Vm,sc_dows:Zm,sc_every:Xm,sc_everyN_dates:Km,sc_everyN_dow:qm,sc_everyN_dows:ep,sc_everyN_hours:tp,sc_everyN_minutes:sp,sc_everyN_months:ip,sc_everyN_seconds:rp,sc_every_dates:op,sc_every_dow:Mp,sc_every_dows:np,sc_every_hours:ap,sc_every_minutes:cp,sc_every_months:up,sc_every_seconds:lp,sc_from:Np,sc_hours:Lp,sc_interval:jp,sc_intervalBetween:gp,sc_invalid_cron:Tp,sc_minutes:yp,sc_months:Dp,sc_once:dp,sc_period:zp,sc_seconds:hp,sc_simple:Ip,sc_specific:wp,sc_specific_dates:Cp,sc_specific_dow:Ap,sc_specific_dows:mp,sc_specific_hours:pp,sc_specific_minutes:Op,sc_specific_months:Ep,sc_specific_seconds:_p,sc_time:fp,sc_to:Sp,sc_wizard:xp,sch_all:kp,sch_astroDay:Yp,sch_astroNight:Qp,sch_astro_dawn:vp,sch_astro_dusk:Up,sch_astro_goldenHour:bp,sch_astro_goldenHourEnd:$p,sch_astro_nadir:Pp,sch_astro_nauticalDawn:Wp,sch_astro_nauticalDusk:Rp,sch_astro_night:Jp,sch_astro_nightEnd:Bp,sch_astro_solarNoon:Gp,sch_astro_sunrise:Fp,sch_astro_sunriseEnd:Hp,sch_astro_sunset:Vp,sch_astro_sunsetStart:Zp,sch_at:Xp,sch_desc_atTime:Kp,sch_desc_everyDay:qp,sch_desc_everyHour:e3,sch_desc_everyMinute:t3,sch_desc_everyMonth:s3,sch_desc_everyNDay:i3,sch_desc_everyNHours:r3,sch_desc_everyNMinutes:o3,sch_desc_everyNMonths:M3,sch_desc_everyNWeeks:n3,sch_desc_everyNYears:a3,sch_desc_everyWeek:c3,sch_desc_everyYear:u3,sch_desc_intervalFromTo:l3,sch_desc_never:N3,sch_desc_onDate:L3,sch_desc_onDates:j3,sch_desc_onEveryDate:g3,sch_desc_onMonth:T3,sch_desc_onMonths:y3,sch_desc_onWeekday:D3,sch_desc_onWeekdays:d3,sch_desc_onWeekends:z3,sch_desc_onWorkdays:h3,sch_desc_onceInPast:I3,sch_desc_once_on:w3,sch_desc_validFrom:C3,sch_desc_validFromTo:A3,sch_desc_validTo:m3,sch_every:p3,sch_exactTime:O3,sch_from:E3,sch_fromTo:_3,sch_intervalTime:f3,sch_invert:S3,sch_no_one:x3,sch_on:k3,sch_period:Y3,sch_periodDaily:Q3,sch_periodDates:v3,sch_periodDay:U3,sch_periodEvery:b3,sch_periodEveryDay:$3,sch_periodEveryMonth:P3,sch_periodEveryWeek:W3,sch_periodEveryYear:R3,sch_periodHours:J3,sch_periodMinutes:B3,sch_periodMonth:G3,sch_periodMonthly:F3,sch_periodOnce:H3,sch_periodSpecificMonths:V3,sch_periodWeek:Z3,sch_periodWeekdays:X3,sch_periodWeekend:K3,sch_periodWeekly:q3,sch_periodWorkdays:eO,sch_periodYear:tO,sch_periodYearly:sO,sch_specificTime:iO,sch_time:rO,sch_to:oO,sch_valid:MO,sch_validFrom:nO,sch_validTo:aO,sch_wholeDay:cO,sch_yearEveryMonth:uO},NO="Ações",LO="Acrescentar",jO="Cancelar",gO="Categorias",TO="Verificado",yO="Excluir",DO="Perto",dO="Comercial",zO="Configurar",hO="Conectado",IO="Continuar",wO="Copiado",CO="Crio",AO="Colheita",mO="Delete",pO="Excluir",OO="Descartar",EO="Desconectado",_O="Erro",fO="Filtro",SO="Sexta-feira",xO="Latitude",kO="Sair",YO="Longitude",QO="mensagem",vO="Segunda-feira",UO="Nome",bO="Objetos",$O="Está bem",PO="produtos",WO="Renomear/Mover/Copiar",RO="Repita",JO="Substituir",BO="Raiz",GO="Sábado",FO="Salve ",HO="Selecionado",VO="Estados",ZO="Domingo",XO="Quinta-feira",KO="Timestamp",qO="Terça-feira",eE="Atualizar",tE="Válida até",sE="Valor",iE="Versão",rE="Quarta-feira",oE="Largura",ME="Sim",nE="diferente",aE="Todos podem ler objetos",cE="Todos podem ler o estado",uE="Todos podem escrever objetos",lE="Todos podem escrever o estado",NE="O grupo pode ler o objeto",LE="O grupo pode ler o estado",jE="O grupo pode escrever o objeto",gE="O grupo pode escrever o estado",TE="O proprietário pode ler o objeto",yE="O proprietário pode ler o estado",DE="O proprietário pode escrever o objeto",dE="O proprietário pode escrever o estado",zE="Botões",hE="Mudou de",IE="fechar",wE="Criar estado booleano",CE="Criar canal",AE="Criar dispositivo",mE="Criar estado numérico",pE="Criar estado",OE="Criar estado de string",EE="d.",_E="Fr",fE="Mo",SE="Sa",xE="Su",kE="º",YE="Tu",QE="Nós",vE="Modo especialista",UE="FALSO",bE="Todos os arquivos",$E="áudio",PE="Código/JSON",WE="Imagens",RE="Texto",JE="Vídeo",BE="Configurações",GE="sem",FE="Função",HE="ID",VE="Nome",ZE="Papel (Função)",XE="Quarto",KE="Tipo",qE="Configurações inválidas",e_="Última mudança",t_="localmente",s_="abril",i_="agosto",r_="dezembro",o_="fevereiro",M_="janeiro",n_="julho",a_="junho",c_="Mai",u_="março",l_="novembro",N_="outubro",L_="setembro",j_="abril",g_="agosto",T_="dezembro",y_="fevereiro",D_="janeiro",d_="julho",z_="junho",h_="Mai",I_="março",w_="novembro",C_="outubro",A_="setembro",m_="Nenhum",p_="Objeto alterado por",O_="Objeto alterado pela última vez em",E_="Configurações de outro adaptador %s",__="Código de qualidade",f_="repetir",S_='Para selecionar a pasta, basta segurar a tecla "shift" clicando na pasta.',x_="Mostrar tudo",k_="Estado alterado por",Y_="Objeto alterado de",Q_="Timestamp",v_="Confirmado",U_="Comente",b_="Copie o valor do estado",$_="Segure a tecla Ctrl/⌘ para abrir o link",P_="Opções customizadas",W_="Excluir objeto",R_="Editar objeto",J_="Edite o valor do estado",B_="Expira em",G_="De",F_="Última alteração",H_="Qualidade",V_="Timestamp",Z_="Usuário",X_="Valor",K_="verdadeiro",q_="Valor",ef="Aviso: O trabalho CRON será executado a cada minuto durante o período especificado!",tf="Aviso: O trabalho CRON será executado a cada segundo durante o período especificado!",sf="CRON",rf="Data",of="Dias",Mf="Dia",nf="Dia da semana",af="todos",cf="a cada N dias",uf="todo enésimo dia da semana",lf="todos os N dias da semana",Nf="a cada N horas",Lf="a cada N minutos",jf="a cada N meses",gf="a cada N segundos",Tf="todo dia",yf="todos os dias da semana",Df="todos os dias da semana",df="toda hora",zf="todo minuto",hf="todo mês",If="todo segundo",wf="de",Cf="horas",Af="intervalo",mf="intervalo entre",pf="CRON inválido",Of="minutos",Ef="meses",_f="uma vez",ff="período",Sf="segundos",xf="simples",kf="tempo específico",Yf="datas específicas",Qf="dia(s) específico(s) da semana",vf="dia específico de semanas",Uf="horas específicas",bf="minutos específicos",$f="meses específicos",Pf="segundos específicos",Wf="tempo",Rf="para",Jf="assistente",Bf="tudo",Gf="dia astral",Ff="noite astral",Hf="amanhecer",Vf="anoitecer",Zf="hora dourada",Xf="Fim da hora dourada",Kf="nadir",qf="Amanhecer náutico",eS="Anoitecer náutico",tS="noite",sS="fim da noite",iS="meio-dia solar",rS="nascer do sol",oS="fim do nascer do sol",MS="pôr do sol",nS="início do pôr do sol",aS="às",cS="em %s",uS="todo dia",lS="toda hora",NS="todo minuto",LS="todo mês",jS="a cada %s dias",gS="a cada %s horas",TS="a cada %s minutos",yS="a cada %s meses",DS="a cada %s semanas",dS="a cada %s anos",zS="toda semana",hS="todo ano",IS="de %s para %s",wS="nunca",CS="em %s de %s",AS="em %s e %s de",mS="em toda data de",pS="%s",OS="%s e %s",ES="em %s",_S="em %s e %s",fS="nos fins de semana",SS="em dias úteis",xS="não será mais executado, porque o começo está no passado",kS="em %s",YS="de %s",QS="Executar de até",vS="até %s",US="cada",bS="tempo específico",$S="de",PS="de a´t",WS="tempo de intervalo",RS="invertido",JS="nenhum",BS="em",GS="período",FS="diariamente",HS="datas",VS="dia",ZS="todos",XS="todo dia",KS="todo mês",qS="toda semana",ex="todo ano",tx="horas",sx="minutos",ix="mês",rx="por mês",ox="uma vez",Mx="meses específicos",nx="semana",ax="dias úteis",cx="final de semana",ux="semanal",lx="dias úteis",Nx="ano",Lx="anual",jx="tempo específico",gx="tempo",Tx="para",yx="válido",Dx="de",dx="para",zx="dia inteiro",hx="todo mês",Ix={"ra_%s links from aliases":"%s links de aliases","ra_%s object(s) processed":"%s objeto(s) processado(s)","ra_%s was imported":"%s foi importado","ra_Accept license":"Aceitar licença",ra_Actions:NO,"ra_Add new child object to selected parent":"Adicionar novo objeto filho ao pai selecionado","ra_Add objects tree from JSON file":"Adicionar árvore de objetos do arquivo JSON","ra_Add row":"Adicionar linha","ra_Advanced options":"Opções avançadas","ra_All items are filtered out":"Todos os itens são filtrados","ra_All objects":"Todos os objetos",ra_Append:LO,"ra_Append %s entries or replace existing?":"Acrescentar %s entradas ou substituir as existentes?","ra_Append or replace?":"Acrescentar ou substituir?","ra_Are you sure?":"Você tem certeza?","ra_Auto (no custom columns)":"Auto (sem colunas personalizadas)","ra_Back to %s":"Voltar para %s","ra_Background image":"Imagem de fundo",ra_Cancel:jO,"ra_Cannot add items with set filter":"Não é possível adicionar itens com filtro definido","ra_Cannot decode license":"Não é possível decodificar a licença","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Não é possível determinar a posição: as configurações do sistema estão vazias e a detecção de GPS está desativada no navegador",'ra_Cannot find "%s"':'Não foi possível encontrar "%s"','ra_Cannot read "%s"':'Não é possível ler "%s"',"ra_Cannot read licenses: %s":"Não é possível ler licenças: %s","ra_Cannot retrieve options, as instance is offline":"Não é possível recuperar opções, pois a instância está off-line","ra_Cannot update attribute, because not found in the object":"Não é possível atualizar o atributo, porque não foi encontrado no objeto","ra_Cannot upload":"Não é possível fazer upload",ra_Categories:gO,"ra_Chained certificate":"certificado encadeado","ra_Change color theme":"Alterar tema de cores","ra_Changed from":"Mudou de","ra_Channel → State":"Canal → Estado","ra_Check license":"Verifique a licença",ra_Checked:TO,ra_Clear:yO,"ra_Clear filter":"Filtro limpo","ra_Clear icon":"Ícone de limpeza","ra_Click to see in full size":"Clique para ver em tamanho real.","ra_Click to show":"Clique para mostrar","ra_Clone current row":"Clonar linha atual",ra_Close:DO,"ra_Collapse all nodes":"Recolher todos os nós","ra_Collapse one step node":"Recolher um nível",ra_Commercial:dO,ra_Configure:zO,"ra_Configure visible columns":"Configurar colunas visíveis","ra_Confirm deletion of %s":"Confirme a exclusão de %s",ra_Connected:hO,ra_Continue:IO,ra_Copied:wO,"ra_Copied %s":'"%s" copiado',"ra_Copy content":"Copiar conteúdo",ra_Create:CO,"ra_Create alias":"Criar alias","ra_Create folder":"Criar pasta","ra_Create new folder in %s":"Crie uma nova pasta em %s",ra_Crop:AO,"ra_Define CRON...":"Defina CRON...","ra_Define functions":"Definir funções","ra_Define rooms":"Definir quartos","ra_Define schedule":"Definir cronograma","ra_Define schedule...":"Definir programação ...",ra_Del:mO,ra_Delete:pO,"ra_Delete current row":"Excluir linha atual","ra_Deselect all":"Desmarque todos","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Desativar/Ativar tradução",ra_Discard:OO,ra_Disconnected:EO,"ra_Do not ask for next 2 hours in this session":"Não peça as próximas 2 horas nesta sessão","ra_Do not export values of states":"Não exporte valores de estados","ra_Do not use let's encrypt":"Não use vamos criptografar","ra_Docker is not available":"O Docker não está disponível","ra_Docker is not installed or not running":"O Docker não está instalado ou não está em execução","ra_Double click to reset table layout":"Clique duas vezes para redefinir o layout da tabela","ra_Drag 'n' drop some files here, or click to select files":"Arraste e solte alguns arquivos aqui ou clique para selecionar arquivos","ra_Drop file here":"Solte o arquivo aqui","ra_Drop the files here...":"Solte o arquivo aqui ...","ra_Duplicate name":"Nome duplicado","ra_Edit ACL":"Editar ACL","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuração personalizada","ra_Edit full path":"Editar caminho completo","ra_Edit function":"Função de edição","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar papel","ra_Edit room":"Sala de edição","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Digite o código dessa página aqui",ra_Error:_O,"ra_Expand all nodes":"Expanda todos os nós","ra_Expand one step node":"Expanda um nível","ra_Expand/Collapse card":"Expandir/Recolher cartão","ra_Export configuration section":"Seção de configuração de exportação","ra_Export data to %s file":"Exportar dados para o arquivo %s","ra_Failed to open JSON File":"Falha ao abrir arquivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"O arquivo é muito grande. Max %sk permitido. Tente usar SVG.",ra_Filter:fO,"ra_Filter and Data Actions":"Ações de filtro e dados","ra_Filter files":"Filtrar arquivos","ra_Folder name":"Nome da pasta","ra_Folder → Channel → State":"Pasta → Canal → Estado","ra_Folder → Device → Channel → State":"Pasta → Dispositivo → Canal → Estado","ra_Folder → State":"Pasta → Estado","ra_Folders always first":"Pastas sempre primeiro",ra_Friday:SO,"ra_From file":"Do arquivo","ra_From text":"Do texto","ra_Get %s access":"Obtenha acesso %s","ra_Good luck":"Boa sorte","ra_Hide empty folders":"Esconder pastas vazias","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nenhum arquivo for criado na pasta, ele desaparecerá depois que o navegador for fechado","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se o botão acima não funcionar, você pode autorizar manualmente este aplicativo visitando esta url","ra_Import and add configuration section":"Seção de importação e adição de configuração","ra_Import and replace configuration section":"Seção de configuração de importação e substituição","ra_Import data from %s file":"Importar dados do arquivo %s","ra_Import from %s":"Importar de %s","ra_Instance %s is alive":"O %s da instância está ativo","ra_Instance %s is not alive":"O %s da instância não está ativo","ra_Instance is not alive":"A instância não está ativa","ra_Invalid CRON":"CRON inválido","ra_Invalid JSON":"JSON inválido","ra_Invalid JSON file.":"Arquivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Esperava-se uma matriz.","ra_Invalid answer from server":"Resposta inválida do servidor","ra_Invalid parent folder!":"Pasta pai inválida!","ra_Invalid structure":"Estrutura inválida","ra_JSON editor":"Editor JSON","ra_Last change":"Última mudança",ra_Latitude:xO,"ra_License %s":"Licença %s","ra_License agreement":"Contrato de licença","ra_License does not exist":"A licença não existe","ra_License expired on %s":"A licença expirou em %s",'ra_License for other product "%s"':'Licença para outro produto "%s"',"ra_License is for version %s, but required version is %s.":"A licença é para a versão %s, mas a versão necessária é %s.","ra_License must be converted":"A licença deve ser convertida para uma versão mais recente. Você pode fazê-lo em seu perfil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licença não encontrada no gerenciador de licenças. Deseja atualizar as licenças do iobroker.net?","ra_Listen on all IPs":"Ouça em todos os IPs","ra_Load configuration from file":"Carregar configuração do arquivo",ra_Logout:kO,ra_Longitude:YO,'ra_May not trigger "updateLicenses"':'Pode não acionar "updateLicenses"',ra_Message:QO,ra_Monday:vO,"ra_Move down":"Mover para baixo","ra_Move up":"Subir",ra_Name:UO,"ra_No data found in file":"Nenhum dado encontrado no arquivo","ra_No one license found in license manager":"Nenhuma licença encontrada no gerenciador de licenças","ra_No response from admin":"Nenhuma resposta do administrador","ra_No response from the backend":"Nenhuma resposta do backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Os não especialistas podem criar novos objetos apenas em "0_userdata.0" ou "alias.0".',"ra_Not a number":"Não é um número","ra_OAuth Client ID":"ID do cliente OAuth","ra_OAuth Client secret":"Segredo do cliente OAuth",ra_Objects:bO,ra_Ok:$O,"ra_On weekdays":"Nos dias úteis","ra_Only following structures of objects are available:":"Apenas as seguintes estruturas de objetos estão disponíveis:","ra_Only selected":"Apenas selecionado","ra_Owner group":"Grupo proprietário","ra_Owner user":"Usuário proprietário","ra_Passwords are not equal!":"As senhas não são iguais!","ra_Place your files here or click here to open the browse dialog":"Coloque seus arquivos aqui ou clique aqui para abrir a janela de navegação","ra_Please allow popups in your browser for this page!":"Por favor, permita pop-ups no seu navegador para esta página!","ra_Please confirm":"Por favor confirme","ra_Please create license":"Crie uma licença","ra_Please enter the license":"Por favor, insira a licença","ra_Please select file...":"Selecione o arquivo...","ra_Please select object ID...":"Selecione o ID do objeto ...","ra_Port could be used by %s":"A porta pode ser usada por %s","ra_Port is already used by %s":"A porta já está sendo usada por %s","ra_Press ENTER Key to add new item":"Pressione a tecla ENTER para adicionar um novo item","ra_Private certificate":"certificado privado",ra_Product:PO,"ra_Public certificate":"certificado público","ra_Quality code":"Qualidade","ra_Refresh tree":"Atualizar árvore","ra_Reload files":"Recarregar arquivos",ra_Rename_Move_Copy:WO,"ra_Renew %s access":"Renovar acesso %s",ra_Repeat:RO,ra_Replace:JO,"ra_Request timed out":"Solicitação expirou","ra_Restrict to folder":"Restringir à pasta",ra_Root:BO,ra_Saturday:GO,ra_Save:FO,"ra_Save and close":"Salvar e fechar","ra_Save configuration to file":"Salvar configuração em arquivo","ra_Save objects tree as JSON file":"Salvar árvore de objetos como arquivo JSON","ra_Select all":"Selecionar tudo","ra_Select color":"Selecione a cor","ra_Select predefined icon":"Selecione o ícone predefinido","ra_Select type of export":"Selecione o tipo de exportação",ra_Selected:HO,"ra_Selected %s object(s)":"%s objeto(s) selecionado(s)","ra_Serial number (UUID)":"Número de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'O número de série (UUID) "%s" na licença é para outro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"A sessão irá expirar em %s segundos. Continuar?","ra_Show all folders":"Mostrar todas as pastas","ra_Show lines between rows":"Mostrar linhas entre as linhas","ra_Show/Hide object descriptions":"Mostrar/ocultar descrições de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Alguns dados não são armazenados. Descartar?",ra_States:VO,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado com sucesso. Token válido até %s e será renovado automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado com sucesso. Token válido até %s, mas pode expirar, pois a instância não está em execução.","ra_Suitable license not found in license manager":"Licença adequada não encontrada no gerenciador de licenças",ra_Sunday:ZO,"ra_Suppress question for next %s minutes":"Suprimir pergunta nos próximos %s minutos","ra_System language":"Idioma do sistema","ra_Take browser position":"Tomar posição do navegador","ra_Take position from system settings":"Tomar posição a partir das configurações do sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Os especialistas podem criar objetos em qualquer lugar, exceto no segundo nível (por exemplo, "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"A página que você está procurando não foi encontrada","ra_The schedule will be executed every minute. Are you sure?":"O agendamento será executado a cada minuto. Tem certeza?","ra_The schedule will be executed every second. Are you sure?":"O agendamento será executado a cada segundo. Tem certeza?",ra_Thursday:XO,ra_Timestamp:KO,"ra_Toggle expert mode":"Alternar modo especialista","ra_Toggle the states view":"Alternar a visualização dos estados","ra_Toggle view mode":"Alternar modo de visualização","ra_Too big":"Muito grande","ra_Too small":"Muito pequeno","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:qO,"ra_Unknown error":"Erro desconhecido","ra_Unknown error!":"Erro desconhecido!",ra_Update:eE,"ra_Upload file":"Subir arquivo","ra_Use all available let's encrypt certificates":"Use todos os certificados disponíveis vamos criptografar","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use o adaptador iobroker.acme para certificados letsencrypt","ra_Use system settings for position":"Use as configurações do sistema para a posição","ra_Used system settings":"Configurações do sistema usadas","ra_User files":"Arquivos do usuário",ra_ValidTill:tE,ra_Value:sE,ra_Version:iE,"ra_View file":"Visualizar arquivo","ra_View: %s":"Visualizar: %s",ra_Wednesday:rE,ra_Width:oE,"ra_YAML editor":"Editor YAML",ra_Yes:ME,"ra_You can export all objects or just the selected branch.":"Você pode exportar todos os objetos ou apenas a ramificação selecionada.","ra_You can filter entries by entering here some text":"Você pode filtrar as entradas digitando aqui algum texto","ra_You can use * as wildcard":"Você pode usar * como curinga",ra___different__:nE,ra_aclEveryone_read_object:aE,ra_aclEveryone_read_state:cE,ra_aclEveryone_write_object:uE,ra_aclEveryone_write_state:lE,ra_aclGroup_read_object:NE,ra_aclGroup_read_state:LE,ra_aclGroup_write_object:jE,ra_aclGroup_write_state:gE,ra_aclOwner_read_object:TE,ra_aclOwner_read_state:yE,ra_aclOwner_write_object:DE,ra_aclOwner_write_state:dE,ra_buttons:zE,ra_changedFrom:hE,ra_close:IE,ra_create_boolean_state:wE,ra_create_channel:CE,ra_create_device:AE,ra_create_number_state:mE,ra_create_state:pE,ra_create_string_state:OE,ra_daysShortText:EE,ra_dow_Fr:_E,ra_dow_Mo:fE,ra_dow_Sa:SE,ra_dow_Su:xE,ra_dow_Th:kE,ra_dow_Tu:YE,ra_dow_We:QE,ra_expertMode:vE,ra_false:UE,ra_fileType_all:bE,ra_fileType_audio:$E,ra_fileType_code:PE,ra_fileType_images:WE,ra_fileType_txt:RE,ra_fileType_video:JE,"ra_fileType_video,":"Vídeo",ra_filter_customs:BE,ra_filter_customs_without:GE,ra_filter_func:FE,ra_filter_id:HE,ra_filter_name:VE,ra_filter_role:ZE,ra_filter_room:XE,ra_filter_type:KE,"ra_import data from %s file":"Importar dados do arquivo %s",ra_invalidConfig:qE,ra_lastChange:e_,ra_locally:t_,ra_month_Apr:s_,ra_month_Aug:i_,ra_month_Dec:r_,ra_month_Feb:o_,ra_month_Jan:M_,ra_month_Jul:n_,ra_month_Jun:a_,ra_month_Mai:c_,ra_month_Mar:u_,ra_month_Nov:l_,ra_month_Oct:N_,ra_month_Sep:L_,ra_months_Apr:j_,ra_months_Aug:g_,ra_months_Dec:T_,ra_months_Feb:y_,ra_months_Jan:D_,ra_months_Jul:d_,ra_months_Jun:z_,ra_months_Mai:h_,ra_months_Mar:I_,ra_months_Nov:w_,ra_months_Oct:C_,ra_months_Sep:A_,"ra_no confirm for 5 mins":"sem confirmação por 5 minutos",ra_none:m_,ra_object_changed_by:p_,ra_object_changed_by_user:O_,ra_otherConfig:E_,ra_qualityCode:__,ra_repeat:f_,ra_select_folder_hint:S_,ra_show_all:x_,ra_state_changed_by:k_,ra_state_changed_from:Y_,ra_timestamp:Q_,ra_tooltip_ack:v_,ra_tooltip_comment:U_,ra_tooltip_copyState:b_,ra_tooltip_ctrlForLink:$_,ra_tooltip_customConfig:P_,ra_tooltip_deleteObject:W_,ra_tooltip_editObject:R_,ra_tooltip_editState:J_,ra_tooltip_expire:B_,ra_tooltip_from:G_,ra_tooltip_lc:F_,ra_tooltip_quality:H_,ra_tooltip_ts:V_,ra_tooltip_user:Z_,ra_tooltip_value:X_,ra_true:K_,"ra_use seconds":"use segundos",ra_val:q_,"ra_via internet":"via internet",ra_warning_every_minute:ef,ra_warning_every_second:tf,sc_cron:sf,sc_date:rf,sc_dates:of,sc_dow:Mf,sc_dows:nf,sc_every:af,sc_everyN_dates:cf,sc_everyN_dow:uf,sc_everyN_dows:lf,sc_everyN_hours:Nf,sc_everyN_minutes:Lf,sc_everyN_months:jf,sc_everyN_seconds:gf,sc_every_dates:Tf,sc_every_dow:yf,sc_every_dows:Df,sc_every_hours:df,sc_every_minutes:zf,sc_every_months:hf,sc_every_seconds:If,sc_from:wf,sc_hours:Cf,sc_interval:Af,sc_intervalBetween:mf,sc_invalid_cron:pf,sc_minutes:Of,sc_months:Ef,sc_once:_f,sc_period:ff,sc_seconds:Sf,sc_simple:xf,sc_specific:kf,sc_specific_dates:Yf,sc_specific_dow:Qf,sc_specific_dows:vf,sc_specific_hours:Uf,sc_specific_minutes:bf,sc_specific_months:$f,sc_specific_seconds:Pf,sc_time:Wf,sc_to:Rf,sc_wizard:Jf,sch_all:Bf,sch_astroDay:Gf,sch_astroNight:Ff,sch_astro_dawn:Hf,sch_astro_dusk:Vf,sch_astro_goldenHour:Zf,sch_astro_goldenHourEnd:Xf,sch_astro_nadir:Kf,sch_astro_nauticalDawn:qf,sch_astro_nauticalDusk:eS,sch_astro_night:tS,sch_astro_nightEnd:sS,sch_astro_solarNoon:iS,sch_astro_sunrise:rS,sch_astro_sunriseEnd:oS,sch_astro_sunset:MS,sch_astro_sunsetStart:nS,sch_at:aS,sch_desc_atTime:cS,sch_desc_everyDay:uS,sch_desc_everyHour:lS,sch_desc_everyMinute:NS,sch_desc_everyMonth:LS,sch_desc_everyNDay:jS,sch_desc_everyNHours:gS,sch_desc_everyNMinutes:TS,sch_desc_everyNMonths:yS,sch_desc_everyNWeeks:DS,sch_desc_everyNYears:dS,sch_desc_everyWeek:zS,sch_desc_everyYear:hS,sch_desc_intervalFromTo:IS,sch_desc_never:wS,sch_desc_onDate:CS,sch_desc_onDates:AS,sch_desc_onEveryDate:mS,sch_desc_onMonth:pS,sch_desc_onMonths:OS,sch_desc_onWeekday:ES,sch_desc_onWeekdays:_S,sch_desc_onWeekends:fS,sch_desc_onWorkdays:SS,sch_desc_onceInPast:xS,sch_desc_once_on:kS,sch_desc_validFrom:YS,sch_desc_validFromTo:QS,sch_desc_validTo:vS,sch_every:US,sch_exactTime:bS,sch_from:$S,sch_fromTo:PS,sch_intervalTime:WS,sch_invert:RS,sch_no_one:JS,sch_on:BS,sch_period:GS,sch_periodDaily:FS,sch_periodDates:HS,sch_periodDay:VS,sch_periodEvery:ZS,sch_periodEveryDay:XS,sch_periodEveryMonth:KS,sch_periodEveryWeek:qS,sch_periodEveryYear:ex,sch_periodHours:tx,sch_periodMinutes:sx,sch_periodMonth:ix,sch_periodMonthly:rx,sch_periodOnce:ox,sch_periodSpecificMonths:Mx,sch_periodWeek:nx,sch_periodWeekdays:ax,sch_periodWeekend:cx,sch_periodWeekly:ux,sch_periodWorkdays:lx,sch_periodYear:Nx,sch_periodYearly:Lx,sch_specificTime:jx,sch_time:gx,sch_to:Tx,sch_valid:yx,sch_validFrom:Dx,sch_validTo:dx,sch_wholeDay:zx,sch_yearEveryMonth:hx},wx="Acties",Cx="toevoegen",Ax="Annuleer",mx="Categorieën",px="Gecontroleerd",Ox="Verwijderen",Ex="Dichtbij",_x="Reclame",fx="Configureren",Sx="Verbonden",xx="Doorgaan",kx="Gekopieerd",Yx="Creëer",Qx="Bijsnijden",vx="Delete",Ux="Verwijderen",bx="Weggooien",$x="Verbinding verbroken",Px="Fout",Wx="Filter",Rx="Vrijdag",Jx="Breedtegraad",Bx="Uitloggen",Gx="Lengtegraad",Fx="Bericht",Hx="Maandag",Vx="Naam",Zx="Voorwerpen",Xx="OK",Kx="Product",qx="Hernoemen/Verplaatsen/Kopiëren",e5="Herhaling",t5="Vervangen",s5="Wortel",i5="Zaterdag",r5="Sparen",o5="Geselecteerd",M5="Staten",n5="Zondag",a5="Donderdag",c5="Tijdstempel",u5="Dinsdag",l5="Bijwerken",N5="Geldig tot",L5="Waarde",j5="Versie",g5="Woensdag",T5="Breedte",y5="Ja",D5="verschillend",d5="Iedereen kan object lezen",z5="Iedereen kan staat lezen",h5="Iedereen kan object schrijven",I5="Iedereen kan staat schrijven",w5="Groep kan object lezen",C5="Groep kan status lezen",A5="Groep kan object schrijven",m5="Groep kan staat schrijven",p5="Eigenaar kan object lezen",O5="Eigenaar kan staat lezen",E5="Eigenaar kan object schrijven",_5="Eigenaar kan staat schrijven",f5="Toetsen",S5="Veranderd van",x5="dichtbij",k5="Creëer een Booleaanse status",Y5="Kanaal maken",Q5="Apparaat maken",v5="Nummerstatus maken",U5="Staat creëren",b5="Tekenreeksstatus maken",$5="d.",P5="Fr",W5="Mo",R5="Za",J5="Zo",B5="Th",G5="Tu",F5="Wij",H5="Expert modus",V5="ONWAAR",Z5="Alle bestanden",X5="Audio",K5="Code/JSON",q5="Afbeeldingen",ek="Tekst",tk="Video",sk="Instellingen",ik="zonder",rk="Functie",ok="ID",Mk="Naam",nk="Rol",ak="Kamer",ck="Type",uk="Ongeldige instellingen",lk="Laatste wijziging",Nk="plaatselijk",Lk="april",jk="aug",gk="dec",Tk="februari",yk="jan",Dk="jul",dk="juni",zk="Mei",hk="mrt",Ik="nov",wk="Okt",Ck="sept",Ak="april",mk="aug",pk="dec",Ok="februari",Ek="jan",_k="jul",fk="juni",Sk="Mei",xk="mrt",kk="nov",Yk="Okt",Qk="sept",vk="geen",Uk="Object veranderd door",bk="Object voor het laatst gewijzigd om",$k="Instellingen van andere adapter %s",Pk="Kwaliteitscode",Wk="herhalen",Rk='Om een map te selecteren, houdt u gewoon de toets "shift" ingedrukt door op de map te klikken.',Jk="Alles weergeven",Bk="Staat veranderd door",Gk="Object veranderd van",Fk="Tijdstempel",Hk="Erkende vlag",Vk="Opmerking",Zk="Kopieer de statuswaarde",Xk="Houd de Cltr/⌘-toets ingedrukt om de link te openen",Kk="Aangepaste instellingen",qk="Object verwijderen",eY="Object bewerken",tY="Bewerk de statuswaarde",sY="Verloopt over",iY="Van",rY="Laatst gewijzigd",oY="Kwaliteit",MY="Tijdstempel",nY="Gebruiker",aY="Waarde",cY="WAAR",uY="Waarde",lY="Waarschuwing: De CRON-taak wordt elke minuut uitgevoerd gedurende de opgegeven periode!",NY="Waarschuwing: De CRON-taak wordt elke seconde uitgevoerd gedurende de opgegeven periode!",LY="CRON",jY="Datum",gY="data",TY="Dag",yY="Dag van de week",DY="elk",dY="elke N dagen",zY="elke N-de dag van de week",hY="elke N dag van de week",IY="elke N uur",wY="elke N minuten",CY="elke N maanden",AY="elke N seconden",mY="elke dag",pY="elke dag van de week",OY="elke dag van de week",EY="elk uur",_Y="elke minuut",fY="elke maand",SY="elke seconde",xY="Van",kY="uren",YY="Interval",QY="Interval tussen",vY="Ongeldige CRON",UY="Notulen",bY="maanden",$Y="Een keer",PY="Periode",WY="seconden",RY="Gemakkelijk",JY="Specifieke tijd",BY="specifieke data",GY="specifieke dag(en) van de week",FY="specifieke dag van weken",HY="specifieke uren",VY="specifieke minuten",ZY="specifieke maanden",XY="specifieke seconden",KY="Tijd",qY="Naar",eQ="tovenaar",tQ="allemaal",sQ="Astro-dag",iQ="Astro-nacht",rQ="Dageraad",oQ="Schemer",MQ="gouden uur",nQ="Gouden uur einde",aQ="Nadir",cQ="Nautische dageraad",uQ="Nautische schemering",lQ="Nacht",NQ="Nacht einde",LQ="Zonne middag",jQ="zonsopkomst",gQ="Sunrise einde",TQ="Zonsondergang",yQ="Zonsondergang start",DQ="Bij",dQ="op %s",zQ="elke dag",hQ="elk uur",IQ="elke minuut",wQ="elke maand",CQ="elke %s dag",AQ="elke %s uur",mQ="elke %s minuten",pQ="elke %s maanden",OQ="elke %s weken",EQ="elke %s jaar",_Q="elke week",fQ="elk jaar",SQ="van %s tot %s",xQ="nooit",kQ="op %s van %s",YQ="op %s en %s van",QQ="op elke datum van",vQ="%s",UQ="%s en %s",bQ="op %s",$Q="op %s en %s",PQ="in het weekend",WQ="op werkdagen",RQ="zal niet meer worden uitgevoerd, omdat start verleden tijd is",JQ="op %s",BQ="van %s",GQ="Uitvoeren van tot",FQ="tot %s",HQ="elk",VQ="Specifieke tijd",ZQ="van",XQ="Van naar",KQ="Interval tijd",qQ="omkeren",ev="geen",tv="Aan",sv="Periode",iv="Dagelijks",rv="data",ov="Dag",Mv="elk",nv="Elke dag",av="Elke maand",cv="Elke week",uv="Elk jaar",lv="uren",Nv="Notulen",Lv="maand",jv="Maandelijks",gv="Een keer",Tv="Specifieke maanden",yv="Week",Dv="Doordeweekse dagen",dv="Weekend",zv="Wekelijks",hv="werkdagen",Iv="Jaar",wv="jaar-",Cv="Specifieke tijd",Av="Tijd",mv="naar",pv="Geldig",Ov="van",Ev="naar",_v="Hele dag",fv="elke maand",Sv={"ra_%s links from aliases":"%s links van aliassen","ra_%s object(s) processed":"%s object(en) verwerkt","ra_%s was imported":"%s is geïmporteerd","ra_Accept license":"Accepteer licentie",ra_Actions:wx,"ra_Add new child object to selected parent":"Voeg een nieuw kindobject toe aan het geselecteerde bovenliggende object","ra_Add objects tree from JSON file":"Objectenboom toevoegen vanuit JSON-bestand","ra_Add row":"Voeg een rij toe","ra_Advanced options":"Geavanceerde mogelijkheden","ra_All items are filtered out":"Alle items zijn uitgefilterd","ra_All objects":"Alle objecten",ra_Append:Cx,"ra_Append %s entries or replace existing?":"%s ingangen toevoegen of bestaande vervangen?","ra_Append or replace?":"Toevoegen of vervangen?","ra_Are you sure?":"Weet je het zeker?","ra_Auto (no custom columns)":"Auto (geen aangepaste kolommen)","ra_Back to %s":"Terug naar %s","ra_Background image":"Achtergrond afbeelding",ra_Cancel:Ax,"ra_Cannot add items with set filter":"Kan geen items toevoegen met ingestelde filter","ra_Cannot decode license":"Kan licentie niet decoderen","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Kan positie niet bepalen: systeeminstellingen zijn leeg en GPS-detectie is uitgeschakeld in browser",'ra_Cannot find "%s"':'Kan "%s" niet vinden','ra_Cannot read "%s"':'Kan "%s" niet lezen',"ra_Cannot read licenses: %s":"Kan licenties niet lezen: %s","ra_Cannot retrieve options, as instance is offline":"Kan opties niet ophalen, omdat instantie offline is","ra_Cannot update attribute, because not found in the object":"Kan kenmerk niet bijwerken, omdat het niet in het object is gevonden","ra_Cannot upload":"Kan niet uploaden",ra_Categories:mx,"ra_Chained certificate":"Geketend certificaat","ra_Change color theme":"Kleurthema wijzigen","ra_Changed from":"Veranderd van","ra_Channel → State":"Kanaal → Staat","ra_Check license":"Licentie controleren",ra_Checked:px,ra_Clear:Ox,"ra_Clear filter":"Filter wissen","ra_Clear icon":"Pictogram wissen","ra_Click to see in full size":"Klik om de afbeelding op volledige grootte te bekijken.","ra_Click to show":"Klik om te tonen","ra_Clone current row":"Kloon de huidige rij",ra_Close:Ex,"ra_Collapse all nodes":"Vouw alle knooppunten samen","ra_Collapse one step node":"Eén niveau samenvouwen",ra_Commercial:_x,ra_Configure:fx,"ra_Configure visible columns":"Configureer zichtbare kolommen","ra_Confirm deletion of %s":"Bevestig het verwijderen van %s",ra_Connected:Sx,ra_Continue:xx,ra_Copied:kx,"ra_Copied %s":'"%s" gekopieerd',"ra_Copy content":"Inhoud kopiëren",ra_Create:Yx,"ra_Create alias":"Alias maken","ra_Create folder":"Map aanmaken","ra_Create new folder in %s":"Maak een nieuwe map in %s",ra_Crop:Qx,"ra_Define CRON...":"Definieer CRON...","ra_Define functions":"Definieer functies","ra_Define rooms":"Definieer kamers","ra_Define schedule":"Definieer schema","ra_Define schedule...":"Schema definiëren ...",ra_Del:vx,ra_Delete:Ux,"ra_Delete current row":"Huidige rij verwijderen","ra_Deselect all":"Deselecteer alles","ra_Device → Channel → State":"Apparaat → Kanaal → Staat","ra_Disable/Enable translation":"Vertaling uitschakelen/inschakelen",ra_Discard:bx,ra_Disconnected:$x,"ra_Do not ask for next 2 hours in this session":"Vraag niet om de volgende 2 uur in deze sessie","ra_Do not export values of states":"Exporteer geen waarden van staten","ra_Do not use let's encrypt":"Gebruik geen let's encrypt","ra_Docker is not available":"Docker is niet beschikbaar","ra_Docker is not installed or not running":"Docker is niet geïnstalleerd of draait niet","ra_Double click to reset table layout":"Dubbelklik om de tafelindeling te resetten","ra_Drag 'n' drop some files here, or click to select files":"Sleep enkele bestanden hierheen, of klik om bestanden te selecteren","ra_Drop file here":"Zet het bestand hier neer","ra_Drop the files here...":"Zet het bestand hier neer...","ra_Duplicate name":"Dubbele naam","ra_Edit ACL":"ACL bewerken","ra_Edit alias":"Alias bewerken","ra_Edit custom config":"Bewerk aangepaste config","ra_Edit full path":"Volledig pad bewerken","ra_Edit function":"Bewerkingsfunctie","ra_Edit object field":"Bewerk objectveld","ra_Edit role":"Rol bewerken","ra_Edit room":"Kamer bewerken","ra_Edit value":"Waarde bewerken","ra_Enter the code from that page here":"Voer hier de code van die pagina in",ra_Error:Px,"ra_Expand all nodes":"Vouw alle knooppunten uit","ra_Expand one step node":"Vouw een niveau uit","ra_Expand/Collapse card":"Kaart uit-/inklappen","ra_Export configuration section":"Sectie Exportconfiguratie","ra_Export data to %s file":"Exporteer gegevens naar %s bestand","ra_Failed to open JSON File":"JSON-bestand kan niet worden geopend","ra_Fallback custom certificates":"Fallback aangepaste certificaten","ra_File is too big. Max %sk allowed. Try use SVG.":"Bestand is te groot. Max. %sk toegestaan. Probeer SVG te gebruiken.",ra_Filter:Wx,"ra_Filter and Data Actions":"Filter- en gegevensacties","ra_Filter files":"Bestanden filteren","ra_Folder name":"Naam van de map","ra_Folder → Channel → State":"Map → Kanaal → Staat","ra_Folder → Device → Channel → State":"Map → Apparaat → Kanaal → Staat","ra_Folder → State":"Map → Staat","ra_Folders always first":"Mappen altijd eerst",ra_Friday:Rx,"ra_From file":"Van bestand","ra_From text":"Van tekst","ra_Get %s access":"Krijg %s toegang","ra_Good luck":"Veel geluk","ra_Hide empty folders":"Verberg lege mappen","ra_If no file will be created in the folder, it will disappear after the browser closed":"Als er geen bestand in de map wordt gemaakt, verdwijnt het nadat de browser is gesloten","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Als de bovenstaande knop niet werkt, kunt u deze app handmatig autoriseren door deze url te bezoeken","ra_Import and add configuration section":"Configuratiesectie importeren en toevoegen","ra_Import and replace configuration section":"Configuratiesectie importeren en vervangen","ra_Import data from %s file":"Importeer gegevens uit %s bestand","ra_Import from %s":"Importeren uit %s","ra_Instance %s is alive":"Instantie %s leeft","ra_Instance %s is not alive":"Instantie %s is niet actief","ra_Instance is not alive":"Instantie leeft niet","ra_Invalid CRON":"Ongeldige CRON","ra_Invalid JSON":"Ongeldige JSON","ra_Invalid JSON file.":"Ongeldig JSON-bestand.","ra_Invalid JSON format. Expected an array.":"Ongeldige JSON-indeling. Er werd een array verwacht.","ra_Invalid answer from server":"Ongeldig antwoord van de server","ra_Invalid parent folder!":"Ongeldige bovenliggende map!","ra_Invalid structure":"Ongeldige structuur","ra_JSON editor":"JSON-editor","ra_Last change":"Laatste wijziging",ra_Latitude:Jx,"ra_License %s":"Licentie %s","ra_License agreement":"Licentieovereenkomst","ra_License does not exist":"Licentie bestaat niet","ra_License expired on %s":"Licentie verlopen op %s",'ra_License for other product "%s"':'Licentie voor ander product "%s"',"ra_License is for version %s, but required version is %s.":"Licentie is voor versie %s, maar vereiste versie is %s.","ra_License must be converted":"Licentie moet worden omgezet naar nieuwere versie. U kunt dit doen in uw iobroker.net-profiel.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licentie niet gevonden in licentiebeheer. Wilt u licenties van iobroker.net bijwerken?","ra_Listen on all IPs":"Luister op alle IP's","ra_Load configuration from file":"Laad configuratie uit bestand",ra_Logout:Bx,ra_Longitude:Gx,'ra_May not trigger "updateLicenses"':'Activeert mogelijk niet "updateLicenses"',ra_Message:Fx,ra_Monday:Hx,"ra_Move down":"Naar beneden verplaatsen","ra_Move up":"Omhoog gaan",ra_Name:Vx,"ra_No data found in file":"Geen gegevens gevonden in bestand","ra_No one license found in license manager":"Geen enkele licentie gevonden in licentiebeheer","ra_No response from admin":"Geen reactie van de beheerder","ra_No response from the backend":"Geen reactie van de backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Niet-experts mogen alleen nieuwe objecten maken in "0_userdata.0" of "alias.0".',"ra_Not a number":"Geen nummer","ra_OAuth Client ID":"OAuth-client-ID","ra_OAuth Client secret":"OAuth-clientgeheim",ra_Objects:Zx,ra_Ok:Xx,"ra_On weekdays":"Op weekdagen","ra_Only following structures of objects are available:":"Alleen de volgende structuren van objecten zijn beschikbaar:","ra_Only selected":"Alleen geselecteerd","ra_Owner group":"Eigenaarsgroep","ra_Owner user":"Eigenaar gebruiker","ra_Passwords are not equal!":"Wachtwoorden zijn niet gelijk!","ra_Place your files here or click here to open the browse dialog":"Plaats uw bestanden hier of klik hier om het bladervenster te openen","ra_Please allow popups in your browser for this page!":"Sta pop-ups toe in uw browser voor deze pagina!","ra_Please confirm":"Bevestig alstublieft","ra_Please create license":"Maak een licentie aan","ra_Please enter the license":"Voer de licentie in","ra_Please select file...":"Selecteer bestand...","ra_Please select object ID...":"Selecteer object-ID ...","ra_Port could be used by %s":"Poort kan worden gebruikt door %s","ra_Port is already used by %s":"Poort wordt al gebruikt door %s","ra_Press ENTER Key to add new item":"Druk op de ENTER-toets om een nieuw item toe te voegen","ra_Private certificate":"Privé certificaat",ra_Product:Kx,"ra_Public certificate":"Openbaar certificaat","ra_Quality code":"Kwaliteit","ra_Refresh tree":"Vernieuw de boom","ra_Reload files":"Laad bestanden opnieuw",ra_Rename_Move_Copy:qx,"ra_Renew %s access":"%s toegang verlengen",ra_Repeat:e5,ra_Replace:t5,"ra_Request timed out":"Verzoek verlopen","ra_Restrict to folder":"Beperken tot map",ra_Root:s5,ra_Saturday:i5,ra_Save:r5,"ra_Save and close":"Opslaan en afsluiten","ra_Save configuration to file":"Sla de configuratie op in een bestand","ra_Save objects tree as JSON file":"Sla de objectenboom op als JSON-bestand","ra_Select all":"Selecteer alles","ra_Select color":"Selecteer kleur","ra_Select predefined icon":"Selecteer voorgedefinieerd pictogram","ra_Select type of export":"Selecteer het type export",ra_Selected:o5,"ra_Selected %s object(s)":"Geselecteerde %s object(en)","ra_Serial number (UUID)":"Serienummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serienummer (UUID) "%s" in licentie is voor ander apparaat.',"ra_Session will expire in %s seconds. Continue?":"Sessie verloopt over %s seconden. Doorgaan?","ra_Show all folders":"Toon alle mappen","ra_Show lines between rows":"Toon lijnen tussen rijen","ra_Show/Hide object descriptions":"Toon/verberg objectbeschrijvingen","ra_Show/hide filter input":"Filterinvoer weergeven/verbergen","ra_Some data are not stored. Discard?":"Sommige gegevens worden niet opgeslagen. Weggooien?",ra_States:M5,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Succesvol geautoriseerd. Token geldig tot %s en wordt automatisch verlengd.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Succesvol geautoriseerd. Token geldig tot %s, maar kan verlopen omdat de instantie niet actief is.","ra_Suitable license not found in license manager":"Geschikte licentie niet gevonden in licentiebeheer",ra_Sunday:n5,"ra_Suppress question for next %s minutes":"Vraag de volgende %s minuten onderdrukken","ra_System language":"Systeemtaal","ra_Take browser position":"Positie innemen vanuit de browser","ra_Take position from system settings":"Neem positie over van systeeminstellingen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'De experts kunnen overal objecten maken, behalve vanaf het tweede niveau (bijv. "Vis.0" of "javascript.0").',"ra_The page you are looking for was not found":"De pagina die u zoekt is niet gevonden","ra_The schedule will be executed every minute. Are you sure?":"Het schema wordt elke minuut uitgevoerd. Weet u het zeker?","ra_The schedule will be executed every second. Are you sure?":"Het schema wordt elke seconde uitgevoerd. Weet je het zeker?",ra_Thursday:a5,ra_Timestamp:c5,"ra_Toggle expert mode":"Schakel tussen expertmodus","ra_Toggle the states view":"Schakel de statusweergave in of uit","ra_Toggle view mode":"Schakelen tussen weergavemodus","ra_Too big":"Te groot","ra_Too small":"Te klein","ra_Transparent dialog":"Transparant dialoogvenster",ra_Tuesday:u5,"ra_Unknown error":"Onbekende fout","ra_Unknown error!":"Onbekende fout!",ra_Update:l5,"ra_Upload file":"Upload bestand","ra_Use all available let's encrypt certificates":"Gebruik alle beschikbare Let's Encrypt-certificaten","ra_Use iobroker.acme adapter for letsencrypt certificates":"Gebruik de iobroker.acme-adapter voor letsencrypt-certificaten","ra_Use system settings for position":"Gebruik systeeminstellingen voor positie","ra_Used system settings":"Gebruikte systeeminstellingen","ra_User files":"Gebruikersbestanden",ra_ValidTill:N5,ra_Value:L5,ra_Version:j5,"ra_View file":"Bestand bekijken","ra_View: %s":"Bekijk: %s",ra_Wednesday:g5,ra_Width:T5,"ra_YAML editor":"YAML-editor",ra_Yes:y5,"ra_You can export all objects or just the selected branch.":"U kunt alle objecten of alleen de geselecteerde tak exporteren.","ra_You can filter entries by entering here some text":"U kunt items filteren door hier wat tekst in te voeren","ra_You can use * as wildcard":"U kunt * als joker gebruiken",ra___different__:D5,ra_aclEveryone_read_object:d5,ra_aclEveryone_read_state:z5,ra_aclEveryone_write_object:h5,ra_aclEveryone_write_state:I5,ra_aclGroup_read_object:w5,ra_aclGroup_read_state:C5,ra_aclGroup_write_object:A5,ra_aclGroup_write_state:m5,ra_aclOwner_read_object:p5,ra_aclOwner_read_state:O5,ra_aclOwner_write_object:E5,ra_aclOwner_write_state:_5,ra_buttons:f5,ra_changedFrom:S5,ra_close:x5,ra_create_boolean_state:k5,ra_create_channel:Y5,ra_create_device:Q5,ra_create_number_state:v5,ra_create_state:U5,ra_create_string_state:b5,ra_daysShortText:$5,ra_dow_Fr:P5,ra_dow_Mo:W5,ra_dow_Sa:R5,ra_dow_Su:J5,ra_dow_Th:B5,ra_dow_Tu:G5,ra_dow_We:F5,ra_expertMode:H5,ra_false:V5,ra_fileType_all:Z5,ra_fileType_audio:X5,ra_fileType_code:K5,ra_fileType_images:q5,ra_fileType_txt:ek,ra_fileType_video:tk,"ra_fileType_video,":"Video",ra_filter_customs:sk,ra_filter_customs_without:ik,ra_filter_func:rk,ra_filter_id:ok,ra_filter_name:Mk,ra_filter_role:nk,ra_filter_room:ak,ra_filter_type:ck,"ra_import data from %s file":"Importeer gegevens uit %s bestand",ra_invalidConfig:uk,ra_lastChange:lk,ra_locally:Nk,ra_month_Apr:Lk,ra_month_Aug:jk,ra_month_Dec:gk,ra_month_Feb:Tk,ra_month_Jan:yk,ra_month_Jul:Dk,ra_month_Jun:dk,ra_month_Mai:zk,ra_month_Mar:hk,ra_month_Nov:Ik,ra_month_Oct:wk,ra_month_Sep:Ck,ra_months_Apr:Ak,ra_months_Aug:mk,ra_months_Dec:pk,ra_months_Feb:Ok,ra_months_Jan:Ek,ra_months_Jul:_k,ra_months_Jun:fk,ra_months_Mai:Sk,ra_months_Mar:xk,ra_months_Nov:kk,ra_months_Oct:Yk,ra_months_Sep:Qk,"ra_no confirm for 5 mins":"geen bevestiging gedurende 5 minuten",ra_none:vk,ra_object_changed_by:Uk,ra_object_changed_by_user:bk,ra_otherConfig:$k,ra_qualityCode:Pk,ra_repeat:Wk,ra_select_folder_hint:Rk,ra_show_all:Jk,ra_state_changed_by:Bk,ra_state_changed_from:Gk,ra_timestamp:Fk,ra_tooltip_ack:Hk,ra_tooltip_comment:Vk,ra_tooltip_copyState:Zk,ra_tooltip_ctrlForLink:Xk,ra_tooltip_customConfig:Kk,ra_tooltip_deleteObject:qk,ra_tooltip_editObject:eY,ra_tooltip_editState:tY,ra_tooltip_expire:sY,ra_tooltip_from:iY,ra_tooltip_lc:rY,ra_tooltip_quality:oY,ra_tooltip_ts:MY,ra_tooltip_user:nY,ra_tooltip_value:aY,ra_true:cY,"ra_use seconds":"gebruik seconden",ra_val:uY,"ra_via internet":"via internet",ra_warning_every_minute:lY,ra_warning_every_second:NY,sc_cron:LY,sc_date:jY,sc_dates:gY,sc_dow:TY,sc_dows:yY,sc_every:DY,sc_everyN_dates:dY,sc_everyN_dow:zY,sc_everyN_dows:hY,sc_everyN_hours:IY,sc_everyN_minutes:wY,sc_everyN_months:CY,sc_everyN_seconds:AY,sc_every_dates:mY,sc_every_dow:pY,sc_every_dows:OY,sc_every_hours:EY,sc_every_minutes:_Y,sc_every_months:fY,sc_every_seconds:SY,sc_from:xY,sc_hours:kY,sc_interval:YY,sc_intervalBetween:QY,sc_invalid_cron:vY,sc_minutes:UY,sc_months:bY,sc_once:$Y,sc_period:PY,sc_seconds:WY,sc_simple:RY,sc_specific:JY,sc_specific_dates:BY,sc_specific_dow:GY,sc_specific_dows:FY,sc_specific_hours:HY,sc_specific_minutes:VY,sc_specific_months:ZY,sc_specific_seconds:XY,sc_time:KY,sc_to:qY,sc_wizard:eQ,sch_all:tQ,sch_astroDay:sQ,sch_astroNight:iQ,sch_astro_dawn:rQ,sch_astro_dusk:oQ,sch_astro_goldenHour:MQ,sch_astro_goldenHourEnd:nQ,sch_astro_nadir:aQ,sch_astro_nauticalDawn:cQ,sch_astro_nauticalDusk:uQ,sch_astro_night:lQ,sch_astro_nightEnd:NQ,sch_astro_solarNoon:LQ,sch_astro_sunrise:jQ,sch_astro_sunriseEnd:gQ,sch_astro_sunset:TQ,sch_astro_sunsetStart:yQ,sch_at:DQ,sch_desc_atTime:dQ,sch_desc_everyDay:zQ,sch_desc_everyHour:hQ,sch_desc_everyMinute:IQ,sch_desc_everyMonth:wQ,sch_desc_everyNDay:CQ,sch_desc_everyNHours:AQ,sch_desc_everyNMinutes:mQ,sch_desc_everyNMonths:pQ,sch_desc_everyNWeeks:OQ,sch_desc_everyNYears:EQ,sch_desc_everyWeek:_Q,sch_desc_everyYear:fQ,sch_desc_intervalFromTo:SQ,sch_desc_never:xQ,sch_desc_onDate:kQ,sch_desc_onDates:YQ,sch_desc_onEveryDate:QQ,sch_desc_onMonth:vQ,sch_desc_onMonths:UQ,sch_desc_onWeekday:bQ,sch_desc_onWeekdays:$Q,sch_desc_onWeekends:PQ,sch_desc_onWorkdays:WQ,sch_desc_onceInPast:RQ,sch_desc_once_on:JQ,sch_desc_validFrom:BQ,sch_desc_validFromTo:GQ,sch_desc_validTo:FQ,sch_every:HQ,sch_exactTime:VQ,sch_from:ZQ,sch_fromTo:XQ,sch_intervalTime:KQ,sch_invert:qQ,sch_no_one:ev,sch_on:tv,sch_period:sv,sch_periodDaily:iv,sch_periodDates:rv,sch_periodDay:ov,sch_periodEvery:Mv,sch_periodEveryDay:nv,sch_periodEveryMonth:av,sch_periodEveryWeek:cv,sch_periodEveryYear:uv,sch_periodHours:lv,sch_periodMinutes:Nv,sch_periodMonth:Lv,sch_periodMonthly:jv,sch_periodOnce:gv,sch_periodSpecificMonths:Tv,sch_periodWeek:yv,sch_periodWeekdays:Dv,sch_periodWeekend:dv,sch_periodWeekly:zv,sch_periodWorkdays:hv,sch_periodYear:Iv,sch_periodYearly:wv,sch_specificTime:Cv,sch_time:Av,sch_to:mv,sch_valid:pv,sch_validFrom:Ov,sch_validTo:Ev,sch_wholeDay:_v,sch_yearEveryMonth:fv},xv="Actes",kv="Ajouter",Yv="Annuler",Qv="Catégories",vv="Vérifié",Uv="Effacer",bv="Fermer",$v="Commercial",Pv="Configurer",Wv="Lié",Rv="Continuer",Jv="Copié",Bv="Créer",Gv="Recadrer",Fv="Delete",Hv="Supprimer",Vv="Jeter",Zv="Débranché",Xv="Erreur",Kv="Filtre",qv="Vendredi",eU="Latitude",tU="Déconnexion",sU="Longitude",iU="Message",rU="Lundi",oU="Nom",MU="Objets",nU="D'accord",aU="Produit",cU="Renommer/Déplacer/Copier",uU="Répéter",lU="Remplacer",NU="Racine",LU="Samedi",jU="sauver",gU="Choisi",TU="États",yU="Dimanche",DU="Jeudi",dU="Horodatage",zU="Mardi",hU="Mise à jour",IU="Valable jusqu'au",wU="Valeur",CU="Version",AU="Mercredi",mU="Largeur",pU="Oui",OU="différent",EU="Tout le monde peut lire un objet",_U="Tout le monde peut lire l'état",fU="Tout le monde peut écrire un objet",SU="Tout le monde peut écrire l'état",xU="Le groupe peut lire l'objet",kU="Le groupe peut lire l'état",YU="Le groupe peut écrire un objet",QU="Le groupe peut écrire l'état",vU="Le propriétaire peut lire l'objet",UU="Le propriétaire peut lire l'état",bU="Le propriétaire peut écrire un objet",$U="Le propriétaire peut écrire l'état",PU="Boutons",WU="Changé de",RU="Fermer",JU="Créer un état booléen",BU="Créer une chaîne",GU="Créer un appareil",FU="Créer un état de numéro",HU="Créer un état",VU="Créer un état de chaîne",ZU="j.",XU="Fr",KU="Mo",qU="Sa",e6="Su",t6="Th",s6="Tu",i6="Nous",r6="Mode expert",o6="FAUX",M6="Tous les fichiers",n6="l'audio",a6="Code/JSON",c6="Images",u6="Texte",l6="Vidéo",N6="Paramètres",L6="sans",j6="Une fonction",g6="ID",T6="Prénom",y6="Rôle",D6="Pièce",d6="Type",z6="Paramètres invalides",h6="Dernier changement",I6="localement",w6="Avr",C6="Août",A6="Déc",m6="Fév",p6="Jan",O6="Juil",E6="Juin",_6="Mai",f6="Mar",S6="Nov",x6="Oct",k6="Sep",Y6="Avr",Q6="Août",v6="Déc",U6="Fév",b6="Jan",$6="Juil",P6="Juin",W6="Mai",R6="Mar",J6="Nov",B6="Oct",G6="Sep",F6="rien",H6="Objet modifié par",V6="Objet modifié pour la dernière fois à",Z6="Paramètres d'un autre adaptateur %s",X6="Code de qualité",K6="répéter",q6='Pour sélectionner un dossier, maintenez simplement la touche "shift" enfoncée en cliquant sur le dossier.',e8="Tout afficher",t8="État modifié par",s8="Objet changé de",i8="Horodatage",r8="Drapeau reconnu",o8="Commentaire",M8="Copiez la valeur d'état",n8="Maintenez la touche Cltr/⌘ enfoncée pour ouvrir le lien",a8="Paramètres personnalisés",c8="Supprimer un objet",u8="Modifier l'objet",l8="Modifier la valeur d'état",N8="Expire dans",L8="De",j8="Dernière modification",g8="Qualité",T8="Horodatage",y8="Utilisateur",D8="Valeur",d8="VRAI",z8="Valeur",h8="Attention : la tâche CRON s’exécutera toutes les minutes pendant la période spécifiée !",I8="Attention : la tâche CRON s’exécutera toutes les secondes pendant la période spécifiée !",w8="CRON",C8="Date",A8="Rendez-vous",m8="Jour",p8="Jour de la semaine",O8="Chaque",E8="tous les N jours",_8="chaque Nième jour de la semaine",f8="tous les N jours de la semaine",S8="toutes les N heures",x8="toutes les N minutes",k8="tous les N mois",Y8="toutes les N secondes",Q8="tous les jours",v8="Chaque jour de la semaine",U8="Chaque jour de la semaine",b8="Toutes les heures",$8="chaque minute",P8="chaque mois",W8="chaque seconde",R8="De",J8="Heures",B8="Intervalle",G8="Intervalle entre",F8="CRON non valide",H8="Minutes",V8="mois",Z8="Une fois que",X8="Période",K8="Secondes",q8="Facile",eb="Temps spécifique",tb="dates spécifiques",sb="jour(s) spécifique(s) de la semaine",ib="jour spécifique de semaines",rb="heures spécifiques",ob="minutes spécifiques",Mb="mois spécifiques",nb="secondes spécifiques",ab="Temps",cb="À",ub="sorcier",lb="tout",Nb="Journée astronomique",Lb="Nuit astronomique",jb="Aube",gb="Crépuscule",Tb="Heure d'or",yb="Fin de l'heure d'or",Db="Nadir",db="Aube nautique",zb="Crépuscule nautique",hb="Nuit",Ib="Fin de nuit",wb="Midi solaire",Cb="lever du soleil",Ab="Fin du lever du soleil",mb="Le coucher du soleil",pb="Coucher du soleil",Ob="à",Eb="à %s",_b="tous les jours",fb="Toutes les heures",Sb="chaque minute",xb="chaque mois",kb="chaque %s jour",Yb="chaque %s heures",Qb="toutes les %s minutes",vb="tous les %s mois",Ub="chaque %s semaines",bb="tous les %s ans",$b="toutes les semaines",Pb="chaque année",Wb="de %s à %s",Rb="jamais",Jb="sur %s de %s",Bb="sur %s et %s de",Gb="à chaque date de",Fb="%s",Hb="%s et %s",Vb="sur %s",Zb="sur %s et %s",Xb="les weekends",Kb="les jours ouvrables",qb="ne sera plus exécuté, car start est dans le passé",e9="sur %s",t9="de %s",s9="Exécuter de à",i9="à %s",r9="chaque",o9="Temps spécifique",M9="de",n9="De à",a9="Temps d'interval",c9="inverser",u9="aucun",l9="sur",N9="Période",L9="du quotidien",j9="Rendez-vous",g9="journée",T9="Chaque",y9="Tous les jours",D9="Chaque mois",d9="Toutes les semaines",z9="Chaque année",h9="Heures",I9="Minutes",w9="mois",C9="Mensuel",A9="Une fois que",m9="Mois spécifiques",p9="La semaine",O9="Jours de la semaine",E9="Weekend",_9="Hebdomadaire",f9="Jours ouvrables",S9="Année",x9="Annuel",k9="Temps spécifique",Y9="Temps",Q9="à",v9="Valide",U9="de",b9="à",$9="Toute la journée",P9="chaque mois",W9={"ra_%s links from aliases":"%s liens provenant d'alias","ra_%s object(s) processed":"%s objet(s) traité(s)","ra_%s was imported":"%s a été importé","ra_Accept license":"Accepter la licence",ra_Actions:xv,"ra_Add new child object to selected parent":"Ajouter un nouvel objet enfant au parent sélectionné","ra_Add objects tree from JSON file":"Ajouter une arborescence d'objets à partir d'un fichier JSON","ra_Add row":"Ajouter une rangée","ra_Advanced options":"Options avancées","ra_All items are filtered out":"Tous les éléments sont filtrés","ra_All objects":"Tous les objets",ra_Append:kv,"ra_Append %s entries or replace existing?":"Ajouter %s entrées ou remplacer l'existant ?","ra_Append or replace?":"Ajouter ou remplacer ?","ra_Are you sure?":"Êtes-vous sûr?","ra_Auto (no custom columns)":"Auto (pas de colonnes personnalisées)","ra_Back to %s":"Retour à %s","ra_Background image":"Image de fond",ra_Cancel:Yv,"ra_Cannot add items with set filter":"Impossible d'ajouter des éléments avec le filtre défini","ra_Cannot decode license":"Impossible de décoder la licence","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossible de déterminer la position : les paramètres système sont vides et la détection GPS est désactivée dans le navigateur",'ra_Cannot find "%s"':'Impossible de trouver "%s"','ra_Cannot read "%s"':'Impossible de lire "%s"',"ra_Cannot read licenses: %s":"Impossible de lire les licences : %s","ra_Cannot retrieve options, as instance is offline":"Impossible de récupérer les options, car l'instance est hors ligne","ra_Cannot update attribute, because not found in the object":"Impossible de mettre à jour l'attribut, car il est introuvable dans l'objet","ra_Cannot upload":"Impossible de télécharger",ra_Categories:Qv,"ra_Chained certificate":"Certificat chaîné","ra_Change color theme":"Changer le thème de couleur","ra_Changed from":"Changé de","ra_Channel → State":"Canal → État","ra_Check license":"Vérifier la licence",ra_Checked:vv,ra_Clear:Uv,"ra_Clear filter":"Effacer le filtre","ra_Clear icon":"Effacer l'icône","ra_Click to see in full size":"Cliquez pour afficher en taille réelle","ra_Click to show":"Cliquez pour afficher","ra_Clone current row":"Cloner la ligne actuelle",ra_Close:bv,"ra_Collapse all nodes":"Réduire tous les nœuds","ra_Collapse one step node":"Réduire d'un niveau",ra_Commercial:$v,ra_Configure:Pv,"ra_Configure visible columns":"Configurer les colonnes visibles","ra_Confirm deletion of %s":"Confirmer la suppression de %s",ra_Connected:Wv,ra_Continue:Rv,ra_Copied:Jv,"ra_Copied %s":'"%s" copié',"ra_Copy content":"Copier le contenu",ra_Create:Bv,"ra_Create alias":"Créer un alias","ra_Create folder":"Créer le dossier","ra_Create new folder in %s":"Créer un nouveau dossier dans %s",ra_Crop:Gv,"ra_Define CRON...":"Définir CRON...","ra_Define functions":"Définir des fonctions","ra_Define rooms":"Définir des pièces","ra_Define schedule":"Définir le calendrier","ra_Define schedule...":"Définir le calendrier ...",ra_Del:Fv,ra_Delete:Hv,"ra_Delete current row":"Supprimer la ligne actuelle","ra_Deselect all":"Tout déselectionner","ra_Device → Channel → State":"Appareil → Canal → État","ra_Disable/Enable translation":"Activer/Désactiver la traduction",ra_Discard:Vv,ra_Disconnected:Zv,"ra_Do not ask for next 2 hours in this session":"Ne demandez pas les 2 prochaines heures de cette session","ra_Do not export values of states":"Ne pas exporter les valeurs des états","ra_Do not use let's encrypt":"Ne pas utiliser let's encrypt","ra_Docker is not available":"Docker n'est pas disponible","ra_Docker is not installed or not running":"Docker n'est pas installé ou n'est pas en cours d'exécution","ra_Double click to reset table layout":"Double-cliquez pour réinitialiser la disposition du tableau","ra_Drag 'n' drop some files here, or click to select files":"Glissez-déposez des fichiers ici, ou cliquez pour sélectionner des fichiers","ra_Drop file here":"Déposer le fichier ici","ra_Drop the files here...":"Déposez le fichier ici...","ra_Duplicate name":"Nom en double","ra_Edit ACL":"Modifier la LCA","ra_Edit alias":"Modifier l'alias","ra_Edit custom config":"Modifier la configuration personnalisée","ra_Edit full path":"Modifier le chemin complet","ra_Edit function":"Fonction d'édition","ra_Edit object field":"Modifier le champ d'objet","ra_Edit role":"Modifier le rôle","ra_Edit room":"Modifier la salle","ra_Edit value":"Modifier la valeur","ra_Enter the code from that page here":"Entrez le code de cette page ici",ra_Error:Xv,"ra_Expand all nodes":"Développer tous les nœuds","ra_Expand one step node":"Développer un niveau","ra_Expand/Collapse card":"Carte Développer/Réduire","ra_Export configuration section":"Exporter la section de configuration","ra_Export data to %s file":"Exporter les données vers le fichier %s","ra_Failed to open JSON File":"Échec de l'ouverture du fichier JSON","ra_Fallback custom certificates":"Certificats personnalisés de secours","ra_File is too big. Max %sk allowed. Try use SVG.":"Le fichier est trop volumineux. Max %sk autorisé. Essayez d'utiliser SVG.",ra_Filter:Kv,"ra_Filter and Data Actions":"Actions sur les filtres et les données","ra_Filter files":"Filtrer les fichiers","ra_Folder name":"Nom de dossier","ra_Folder → Channel → State":"Dossier → Chaîne → État","ra_Folder → Device → Channel → State":"Dossier → Appareil → Canal → État","ra_Folder → State":"Dossier → État","ra_Folders always first":"Les dossiers toujours en premier",ra_Friday:qv,"ra_From file":"À partir du fichier","ra_From text":"À partir du texte","ra_Get %s access":"Obtenir l'accès %s","ra_Good luck":"Bonne chance","ra_Hide empty folders":"Masquer les dossiers vides","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si aucun fichier ne sera créé dans le dossier, il disparaîtra après la fermeture du navigateur","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si le bouton ci-dessus ne fonctionne pas, vous pouvez autoriser manuellement cette application en visitant cette URL","ra_Import and add configuration section":"Importer et ajouter la section de configuration","ra_Import and replace configuration section":"Importer et remplacer la section de configuration","ra_Import data from %s file":"Importer des données à partir du fichier %s","ra_Import from %s":"Importer depuis %s","ra_Instance %s is alive":"L'instance %s est active","ra_Instance %s is not alive":"L'instance %s n'est pas active","ra_Instance is not alive":"L'instance n'est pas active","ra_Invalid CRON":"CRON invalide","ra_Invalid JSON":"JSON invalide","ra_Invalid JSON file.":"Fichier JSON invalide.","ra_Invalid JSON format. Expected an array.":"Format JSON invalide. Tableau attendu.","ra_Invalid answer from server":"Réponse invalide du serveur","ra_Invalid parent folder!":"Dossier parent non valide!","ra_Invalid structure":"Structure invalide","ra_JSON editor":"Éditeur JSON","ra_Last change":"Dernier changement",ra_Latitude:eU,"ra_License %s":"Licence %s","ra_License agreement":"Accord de licence","ra_License does not exist":"La licence n'existe pas","ra_License expired on %s":"Licence expirée le %s",'ra_License for other product "%s"':'Licence pour un autre produit "%s"',"ra_License is for version %s, but required version is %s.":"La licence est pour la version %s, mais la version requise est %s.","ra_License must be converted":"La licence doit être convertie en une version plus récente. Vous pouvez le faire dans votre profil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licence introuvable dans le gestionnaire de licences. Voulez-vous mettre à jour les licences depuis iobroker.net ?","ra_Listen on all IPs":"Écoutez sur toutes les adresses IP","ra_Load configuration from file":"Charger la configuration à partir du fichier",ra_Logout:tU,ra_Longitude:sU,'ra_May not trigger "updateLicenses"':'Peut ne pas déclencher "updateLicences"',ra_Message:iU,ra_Monday:rU,"ra_Move down":"Descendre","ra_Move up":"Déplacer vers le haut",ra_Name:oU,"ra_No data found in file":"Aucune donnée trouvée dans le fichier","ra_No one license found in license manager":"Aucune licence trouvée dans le gestionnaire de licences","ra_No response from admin":"Aucune réponse de l'administrateur","ra_No response from the backend":"Aucune réponse du backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Les non-experts ne peuvent créer de nouveaux objets que dans "0_userdata.0" ou "alias.0".',"ra_Not a number":"Pas un numéro","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Secret client OAuth",ra_Objects:MU,ra_Ok:nU,"ra_On weekdays":"En semaine","ra_Only following structures of objects are available:":"Seules les structures d'objets suivantes sont disponibles:","ra_Only selected":"Uniquement sélectionné","ra_Owner group":"Groupe propriétaire","ra_Owner user":"Utilisateur propriétaire","ra_Passwords are not equal!":"Les mots de passe ne sont pas égaux !","ra_Place your files here or click here to open the browse dialog":"Placez vos fichiers ici ou cliquez ici pour ouvrir la boîte de dialogue de navigation","ra_Please allow popups in your browser for this page!":"Veuillez autoriser les popups dans votre navigateur pour cette page !","ra_Please confirm":"Veuillez confirmer","ra_Please create license":"Veuillez créer une licence","ra_Please enter the license":"Veuillez entrer la licence","ra_Please select file...":"Veuillez sélectionner le fichier...","ra_Please select object ID...":"Veuillez sélectionner l'ID d'objet ...","ra_Port could be used by %s":"Le port pourrait être utilisé par %s","ra_Port is already used by %s":"Le port est déjà utilisé par %s","ra_Press ENTER Key to add new item":"Appuyez sur la touche ENTRÉE pour ajouter un nouvel élément","ra_Private certificate":"Certificat privé",ra_Product:aU,"ra_Public certificate":"Certificat public","ra_Quality code":"Qualité","ra_Refresh tree":"Rafraîchir l'arborescence","ra_Reload files":"Recharger les fichiers",ra_Rename_Move_Copy:cU,"ra_Renew %s access":"Renouveler l'accès %s",ra_Repeat:uU,ra_Replace:lU,"ra_Request timed out":"La demande a expiré","ra_Restrict to folder":"Restreindre au dossier",ra_Root:NU,ra_Saturday:LU,ra_Save:jU,"ra_Save and close":"Sauver et fermer","ra_Save configuration to file":"Enregistrer la configuration dans un fichier","ra_Save objects tree as JSON file":"Enregistrer l'arborescence des objets en tant que fichier JSON","ra_Select all":"Tout sélectionner","ra_Select color":"Choisissez la couleur","ra_Select predefined icon":"Sélectionnez l'icône prédéfinie","ra_Select type of export":"Sélectionnez le type d'exportation",ra_Selected:gU,"ra_Selected %s object(s)":"Objet(s) %s sélectionné(s)","ra_Serial number (UUID)":"Numéro de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Le numéro de série (UUID) "%s" dans la licence est pour un autre appareil.',"ra_Session will expire in %s seconds. Continue?":"La session expirera dans %s secondes. Continuer ?","ra_Show all folders":"Afficher tous les dossiers","ra_Show lines between rows":"Afficher les lignes entre les lignes","ra_Show/Hide object descriptions":"Afficher/Masquer les descriptions d'objets","ra_Show/hide filter input":"Afficher/masquer l'entrée de filtre","ra_Some data are not stored. Discard?":"Certaines données ne sont pas stockées. Jeter?",ra_States:TU,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorisation réussie. Jeton valide jusqu'au %s et sera automatiquement renouvelé.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorisation réussie. Jeton valide jusqu'à %s, mais il peut expirer car l'instance n'est pas en cours d'exécution.","ra_Suitable license not found in license manager":"Licence appropriée introuvable dans le gestionnaire de licences",ra_Sunday:yU,"ra_Suppress question for next %s minutes":"Supprimer la question pour les %s prochaines minutes","ra_System language":"Langue du système","ra_Take browser position":"Prendre position depuis le navigateur","ra_Take position from system settings":"Prendre position à partir des paramètres système",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Les experts peuvent créer des objets partout mais à partir du deuxième niveau (par exemple "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"La page que vous recherchez n'a pas été trouvée","ra_The schedule will be executed every minute. Are you sure?":"Le planning sera exécuté toutes les minutes. Êtes-vous sûr ?","ra_The schedule will be executed every second. Are you sure?":"Le planning sera exécuté toutes les secondes. Êtes-vous sûr ?",ra_Thursday:DU,ra_Timestamp:dU,"ra_Toggle expert mode":"Basculer en mode expert","ra_Toggle the states view":"Basculer la vue des états","ra_Toggle view mode":"Basculer le mode d'affichage","ra_Too big":"Trop grand","ra_Too small":"Trop petit","ra_Transparent dialog":"Dialogue transparent",ra_Tuesday:zU,"ra_Unknown error":"Erreur inconnue","ra_Unknown error!":"Erreur inconnue!",ra_Update:hU,"ra_Upload file":"Téléverser un fichier","ra_Use all available let's encrypt certificates":"Utilisez tous les certificats let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utiliser l'adaptateur iobroker.acme pour les certificats Letsencrypt","ra_Use system settings for position":"Utiliser les paramètres système pour la position","ra_Used system settings":"Paramètres système utilisés","ra_User files":"Fichiers utilisateurs",ra_ValidTill:IU,ra_Value:wU,ra_Version:CU,"ra_View file":"Voir la fiche","ra_View: %s":"Affichage : %s",ra_Wednesday:AU,ra_Width:mU,"ra_YAML editor":"Éditeur YAML",ra_Yes:pU,"ra_You can export all objects or just the selected branch.":"Vous pouvez exporter tous les objets ou uniquement la branche sélectionnée.","ra_You can filter entries by entering here some text":"Vous pouvez filtrer les entrées en saisissant ici du texte","ra_You can use * as wildcard":"Vous pouvez utiliser * comme caractère générique",ra___different__:OU,ra_aclEveryone_read_object:EU,ra_aclEveryone_read_state:_U,ra_aclEveryone_write_object:fU,ra_aclEveryone_write_state:SU,ra_aclGroup_read_object:xU,ra_aclGroup_read_state:kU,ra_aclGroup_write_object:YU,ra_aclGroup_write_state:QU,ra_aclOwner_read_object:vU,ra_aclOwner_read_state:UU,ra_aclOwner_write_object:bU,ra_aclOwner_write_state:$U,ra_buttons:PU,ra_changedFrom:WU,ra_close:RU,ra_create_boolean_state:JU,ra_create_channel:BU,ra_create_device:GU,ra_create_number_state:FU,ra_create_state:HU,ra_create_string_state:VU,ra_daysShortText:ZU,ra_dow_Fr:XU,ra_dow_Mo:KU,ra_dow_Sa:qU,ra_dow_Su:e6,ra_dow_Th:t6,ra_dow_Tu:s6,ra_dow_We:i6,ra_expertMode:r6,ra_false:o6,ra_fileType_all:M6,ra_fileType_audio:n6,ra_fileType_code:a6,ra_fileType_images:c6,ra_fileType_txt:u6,ra_fileType_video:l6,"ra_fileType_video,":"Vidéo",ra_filter_customs:N6,ra_filter_customs_without:L6,ra_filter_func:j6,ra_filter_id:g6,ra_filter_name:T6,ra_filter_role:y6,ra_filter_room:D6,ra_filter_type:d6,"ra_import data from %s file":"Importer des données à partir du fichier %s",ra_invalidConfig:z6,ra_lastChange:h6,ra_locally:I6,ra_month_Apr:w6,ra_month_Aug:C6,ra_month_Dec:A6,ra_month_Feb:m6,ra_month_Jan:p6,ra_month_Jul:O6,ra_month_Jun:E6,ra_month_Mai:_6,ra_month_Mar:f6,ra_month_Nov:S6,ra_month_Oct:x6,ra_month_Sep:k6,ra_months_Apr:Y6,ra_months_Aug:Q6,ra_months_Dec:v6,ra_months_Feb:U6,ra_months_Jan:b6,ra_months_Jul:$6,ra_months_Jun:P6,ra_months_Mai:W6,ra_months_Mar:R6,ra_months_Nov:J6,ra_months_Oct:B6,ra_months_Sep:G6,"ra_no confirm for 5 mins":"pas de confirmation pendant 5 minutes",ra_none:F6,ra_object_changed_by:H6,ra_object_changed_by_user:V6,ra_otherConfig:Z6,ra_qualityCode:X6,ra_repeat:K6,ra_select_folder_hint:q6,ra_show_all:e8,ra_state_changed_by:t8,ra_state_changed_from:s8,ra_timestamp:i8,ra_tooltip_ack:r8,ra_tooltip_comment:o8,ra_tooltip_copyState:M8,ra_tooltip_ctrlForLink:n8,ra_tooltip_customConfig:a8,ra_tooltip_deleteObject:c8,ra_tooltip_editObject:u8,ra_tooltip_editState:l8,ra_tooltip_expire:N8,ra_tooltip_from:L8,ra_tooltip_lc:j8,ra_tooltip_quality:g8,ra_tooltip_ts:T8,ra_tooltip_user:y8,ra_tooltip_value:D8,ra_true:d8,"ra_use seconds":"utiliser les secondes",ra_val:z8,"ra_via internet":"par Internet",ra_warning_every_minute:h8,ra_warning_every_second:I8,sc_cron:w8,sc_date:C8,sc_dates:A8,sc_dow:m8,sc_dows:p8,sc_every:O8,sc_everyN_dates:E8,sc_everyN_dow:_8,sc_everyN_dows:f8,sc_everyN_hours:S8,sc_everyN_minutes:x8,sc_everyN_months:k8,sc_everyN_seconds:Y8,sc_every_dates:Q8,sc_every_dow:v8,sc_every_dows:U8,sc_every_hours:b8,sc_every_minutes:$8,sc_every_months:P8,sc_every_seconds:W8,sc_from:R8,sc_hours:J8,sc_interval:B8,sc_intervalBetween:G8,sc_invalid_cron:F8,sc_minutes:H8,sc_months:V8,sc_once:Z8,sc_period:X8,sc_seconds:K8,sc_simple:q8,sc_specific:eb,sc_specific_dates:tb,sc_specific_dow:sb,sc_specific_dows:ib,sc_specific_hours:rb,sc_specific_minutes:ob,sc_specific_months:Mb,sc_specific_seconds:nb,sc_time:ab,sc_to:cb,sc_wizard:ub,sch_all:lb,sch_astroDay:Nb,sch_astroNight:Lb,sch_astro_dawn:jb,sch_astro_dusk:gb,sch_astro_goldenHour:Tb,sch_astro_goldenHourEnd:yb,sch_astro_nadir:Db,sch_astro_nauticalDawn:db,sch_astro_nauticalDusk:zb,sch_astro_night:hb,sch_astro_nightEnd:Ib,sch_astro_solarNoon:wb,sch_astro_sunrise:Cb,sch_astro_sunriseEnd:Ab,sch_astro_sunset:mb,sch_astro_sunsetStart:pb,sch_at:Ob,sch_desc_atTime:Eb,sch_desc_everyDay:_b,sch_desc_everyHour:fb,sch_desc_everyMinute:Sb,sch_desc_everyMonth:xb,sch_desc_everyNDay:kb,sch_desc_everyNHours:Yb,sch_desc_everyNMinutes:Qb,sch_desc_everyNMonths:vb,sch_desc_everyNWeeks:Ub,sch_desc_everyNYears:bb,sch_desc_everyWeek:$b,sch_desc_everyYear:Pb,sch_desc_intervalFromTo:Wb,sch_desc_never:Rb,sch_desc_onDate:Jb,sch_desc_onDates:Bb,sch_desc_onEveryDate:Gb,sch_desc_onMonth:Fb,sch_desc_onMonths:Hb,sch_desc_onWeekday:Vb,sch_desc_onWeekdays:Zb,sch_desc_onWeekends:Xb,sch_desc_onWorkdays:Kb,sch_desc_onceInPast:qb,sch_desc_once_on:e9,sch_desc_validFrom:t9,sch_desc_validFromTo:s9,sch_desc_validTo:i9,sch_every:r9,sch_exactTime:o9,sch_from:M9,sch_fromTo:n9,sch_intervalTime:a9,sch_invert:c9,sch_no_one:u9,sch_on:l9,sch_period:N9,sch_periodDaily:L9,sch_periodDates:j9,sch_periodDay:g9,sch_periodEvery:T9,sch_periodEveryDay:y9,sch_periodEveryMonth:D9,sch_periodEveryWeek:d9,sch_periodEveryYear:z9,sch_periodHours:h9,sch_periodMinutes:I9,sch_periodMonth:w9,sch_periodMonthly:C9,sch_periodOnce:A9,sch_periodSpecificMonths:m9,sch_periodWeek:p9,sch_periodWeekdays:O9,sch_periodWeekend:E9,sch_periodWeekly:_9,sch_periodWorkdays:f9,sch_periodYear:S9,sch_periodYearly:x9,sch_specificTime:k9,sch_time:Y9,sch_to:Q9,sch_valid:v9,sch_validFrom:U9,sch_validTo:b9,sch_wholeDay:$9,sch_yearEveryMonth:P9},R9="Azioni",J9="Aggiungere",B9="Annulla",G9="Categorie",F9="Controllato",H9="Elimina",V9="Vicino",Z9="Commerciale",X9="Configura",K9="Collegato",q9="Continuare",e7="Copiato",t7="Creare",s7="Raccolto",i7="Delete",r7="Elimina",o7="Scartare",M7="Disconnesso",n7="Errore",a7="Filtro",c7="Venerdì",u7="Latitudine",l7="Esci",N7="Longitudine",L7="Messaggio",j7="Lunedi",g7="Nome",T7="Oggetti",y7="Ok",D7="Prodotto",d7="Rinomina/Sposta/Copia",z7="Ripetere",h7="Sostituire",I7="Radice",w7="Sabato",C7="Salva",A7="Selezionato",m7="stati",p7="Domenica",O7="Giovedì",E7="Timestamp",_7="Martedì",f7="Aggiornare",S7="Valido fino a",x7="Valore",k7="Versione",Y7="Mercoledì",Q7="Larghezza",v7="SÌ",U7="diverso",b7="Tutti possono leggere gli oggetti",$7="Tutti possono leggere lo stato",P7="Tutti possono scrivere oggetti",W7="Tutti possono scrivere stato",R7="Il gruppo può leggere l'oggetto",J7="Il gruppo può leggere lo stato",B7="Il gruppo può scrivere l'oggetto",G7="Il gruppo può scrivere lo stato",F7="Il proprietario può leggere l'oggetto",H7="Il proprietario può leggere lo stato",V7="Il proprietario può scrivere l'oggetto",Z7="Il proprietario può scrivere lo stato",X7="Bottoni",K7="Cambiato da",q7="vicino",e$="Crea uno stato booleano",t$="Crea canale",s$="Crea dispositivo",i$="Crea lo stato del numero",r$="Crea stato",o$="Crea lo stato della stringa",M$="g.",n$="fr",a$="momento",c$="Sa",u$="su",l$="th",N$="Tu",L$="Noi",j$="Modalità esperto",g$="FALSO",T$="Tutti i files",y$="Audio",D$="Codice/JSON",d$="immagini",z$="Testo",h$="video",I$="impostazioni",w$="senza",C$="Funzione",A$="ID",m$="Nome",p$="Ruolo",O$="Camera",E$="genere",_$="Impostazioni non valide",f$="Ultima modifica",S$="localmente",x$="apr",k$="agosto",Y$="Dic",Q$="febbraio",v$="gen",U$="lug",b$="giu",$$="Mai",P$="marzo",W$="nov",R$="ottobre",J$="Sett",B$="apr",G$="agosto",F$="Dic",H$="febbraio",V$="gen",Z$="lug",X$="giu",K$="Mai",q$="marzo",eP="nov",tP="ottobre",sP="Sett",iP="nessuna",rP="Oggetto modificato da",oP="L'oggetto è stato modificato l'ultima volta alle",MP="Impostazioni dall'altro adattatore %s",nP="Codice di qualità",aP="ripetere",cP='Per selezionare la cartella, basta tenere premuto il tasto "shift" facendo clic sulla cartella.',uP="Mostra tutto",lP="Stato cambiato da",NP="Oggetto cambiato da",LP="Timestamp",jP="Bandiera riconosciuta",gP="Commento",TP="Copia il valore dello stato",yP="Tieni premuto il tasto Cltr/⌘ per aprire il collegamento",DP="Impostazioni personalizzate",dP="Elimina oggetto",zP="Modifica oggetto",hP="Modifica il valore dello stato",IP="Scade tra",wP="A partire dal",CP="Ultima modifica",AP="Qualità",mP="Data e ora",pP="Utente",OP="Valore",EP="VERO",_P="Valore",fP="Attenzione: il processo CRON verrà eseguito ogni minuto durante il periodo specificato!",SP="Attenzione: il processo CRON verrà eseguito ogni secondo durante il periodo specificato!",xP="CRON",kP="Data",YP="Date",QP="Giorno",vP="Giorno della settimana",UP="Ogni",bP="ogni N giorni",$P="ogni Nesimo giorno della settimana",PP="ogni N giorno della settimana",WP="ogni N ore",RP="ogni N minuti",JP="ogni N mesi",BP="ogni N secondi",GP="ogni giorno",FP="Tutti i giorni della settimana",HP="Tutti i giorni della settimana",VP="ogni ora",ZP="ogni minuto",XP="ogni mese",KP="ogni secondo",qP="A partire dal",eW="Ore",tW="Intervallo",sW="Intervallo tra",iW="CRON non valido",rW="Minuti",oW="mesi",MW="Una volta",nW="Periodo",aW="secondi",cW="Semplice",uW="Orario preciso",lW="date specifiche",NW="giorno/i specifico/i della settimana",LW="giorno specifico delle settimane",jW="orari specifici",gW="minuti specifici",TW="mesi specifici",yW="secondi specifici",DW="Tempo",dW="Per",zW="procedura guidata",hW="tutti",IW="Astro day",wW="Astro night",CW="Alba",AW="Crepuscolo",mW="Ora d'oro",pW="Fine dell'ora d'oro",OW="Nadir",EW="Alba nautica",_W="Crepuscolo nautico",fW="Notte",SW="Fine della notte",xW="Mezzogiorno solare",kW="Alba",YW="Fine dell'alba",QW="Tramonto",vW="Inizio del tramonto",UW="a",bW="a %s",$W="ogni giorno",PW="ogni ora",WW="ogni minuto",RW="ogni mese",JW="ogni %s giorno",BW="ogni %s ore",GW="ogni %s minuti",FW="ogni %s mesi",HW="ogni %s settimane",VW="ogni %s anni",ZW="ogni settimana",XW="ogni anno",KW="da %s a %s",qW="mai",eR="su %s di %s",tR="su %s e %s di",sR="in ogni data di",iR="%s",rR="%s e %s",oR="su %s",MR="su %s e %s",nR="nei finesettimana",aR="nei giorni lavorativi",cR="non verrà più eseguito, perché start è nel passato",uR="su %s",lR="da %s",NR="Eseguire da a",LR="a %s",jR="ogni",gR="Orario preciso",TR="a partire dal",yR="Da A",DR="Intervallo di tempo",dR="invertire",zR="nessuna",hR="sopra",IR="Periodo",wR="Quotidiano",CR="Date",AR="Giorno",mR="Ogni",pR="Ogni giorno",OR="Ogni mese",ER="Ogni settimana",_R="Ogni anno",fR="Ore",SR="Minuti",xR="mese",kR="Mensile",YR="Una volta",QR="Mesi specifici",vR="Settimana",UR="Giorni della settimana",bR="Fine settimana",$R="settimanalmente",PR="giorni feriali",WR="Anno",RR="Annuale",JR="Orario preciso",BR="Tempo",GR="per",FR="Valido",HR="a partire dal",VR="per",ZR="Giorno intero",XR="ogni mese",KR={"ra_%s links from aliases":"%s link da alias","ra_%s object(s) processed":"%s oggetti elaborati","ra_%s was imported":"%s è stato importato","ra_Accept license":"Accetta licenza",ra_Actions:R9,"ra_Add new child object to selected parent":"Aggiungi un nuovo oggetto figlio al genitore selezionato","ra_Add objects tree from JSON file":"Aggiungi l'albero degli oggetti dal file JSON","ra_Add row":"Aggiungi riga","ra_Advanced options":"Opzioni avanzate","ra_All items are filtered out":"Tutti gli elementi vengono filtrati","ra_All objects":"Tutti gli oggetti",ra_Append:J9,"ra_Append %s entries or replace existing?":"Aggiungi %s voci o sostituisci quelle esistenti?","ra_Append or replace?":"Aggiungere o sostituire?","ra_Are you sure?":"Sei sicuro?","ra_Auto (no custom columns)":"Auto (nessuna colonna personalizzata)","ra_Back to %s":"Torna a %s","ra_Background image":"Immagine di sfondo",ra_Cancel:B9,"ra_Cannot add items with set filter":"Impossibile aggiungere elementi con il filtro impostato","ra_Cannot decode license":"Impossibile decodificare la licenza","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossibile determinare la posizione: le impostazioni di sistema sono vuote e il rilevamento GPS è disabilitato nel browser",'ra_Cannot find "%s"':'Impossibile trovare "%s"','ra_Cannot read "%s"':'Impossibile leggere "%s"',"ra_Cannot read licenses: %s":"Impossibile leggere le licenze: %s","ra_Cannot retrieve options, as instance is offline":"Impossibile recuperare le opzioni, poiché l'istanza è offline","ra_Cannot update attribute, because not found in the object":"Impossibile aggiornare l'attributo, perché non trovato nell'oggetto","ra_Cannot upload":"Impossibile caricare",ra_Categories:G9,"ra_Chained certificate":"Certificato incatenato","ra_Change color theme":"Cambia tema colore","ra_Changed from":"Cambiato da","ra_Channel → State":"Canale → Stato","ra_Check license":"Controlla la licenza",ra_Checked:F9,ra_Clear:H9,"ra_Clear filter":"Filtro pulito","ra_Clear icon":"Cancella icona","ra_Click to see in full size":"Clicca per visualizzare l'immagine a dimensioni intere","ra_Click to show":"Clicca per mostrare","ra_Clone current row":"Clona riga corrente",ra_Close:V9,"ra_Collapse all nodes":"Comprimi tutti i nodi","ra_Collapse one step node":"Comprimi un livello",ra_Commercial:Z9,ra_Configure:X9,"ra_Configure visible columns":"Configura colonne visibili","ra_Confirm deletion of %s":"Conferma l'eliminazione di %s",ra_Connected:K9,ra_Continue:q9,ra_Copied:e7,"ra_Copied %s":'"%s" copiato',"ra_Copy content":"Copia contenuto",ra_Create:t7,"ra_Create alias":"Crea alias","ra_Create folder":"Creare una cartella","ra_Create new folder in %s":"Crea nuova cartella in %s",ra_Crop:s7,"ra_Define CRON...":"Definisci CRON...","ra_Define functions":"Definire le funzioni","ra_Define rooms":"Definisci le stanze","ra_Define schedule":"Definisci programma","ra_Define schedule...":"Definisci pianificazione ...",ra_Del:i7,ra_Delete:r7,"ra_Delete current row":"Elimina la riga corrente","ra_Deselect all":"Deseleziona tutto","ra_Device → Channel → State":"Dispositivo → Canale → Stato","ra_Disable/Enable translation":"Disabilita/Abilita la traduzione",ra_Discard:o7,ra_Disconnected:M7,"ra_Do not ask for next 2 hours in this session":"Non chiedere per le prossime 2 ore in questa sessione","ra_Do not export values of states":"Non esportare i valori degli stati","ra_Do not use let's encrypt":"Non utilizzare crittografiamo","ra_Docker is not available":"Docker non è disponibile","ra_Docker is not installed or not running":"Docker non è installato o non è in esecuzione","ra_Double click to reset table layout":"Fare doppio clic per ripristinare il layout della tabella","ra_Drag 'n' drop some files here, or click to select files":"Trascina e rilascia alcuni file qui o fai clic per selezionare i file","ra_Drop file here":"Trascina il file qui","ra_Drop the files here...":"Trascina qui il file...","ra_Duplicate name":"Nome duplicato","ra_Edit ACL":"Modifica ACL","ra_Edit alias":"Modifica alias","ra_Edit custom config":"Modifica configurazione personalizzata","ra_Edit full path":"Modifica percorso completo","ra_Edit function":"Funzione di modifica","ra_Edit object field":"Modifica campo oggetto","ra_Edit role":"Modifica ruolo","ra_Edit room":"Modifica stanza","ra_Edit value":"Modifica valore","ra_Enter the code from that page here":"Inserisci qui il codice da quella pagina",ra_Error:n7,"ra_Expand all nodes":"Espandi tutti i nodi","ra_Expand one step node":"Espandi un livello","ra_Expand/Collapse card":"Espandi/Comprimi scheda","ra_Export configuration section":"Sezione di configurazione dell'esportazione","ra_Export data to %s file":"Esporta i dati nel file %s","ra_Failed to open JSON File":"Impossibile aprire il file JSON","ra_Fallback custom certificates":"Certificati personalizzati di fallback","ra_File is too big. Max %sk allowed. Try use SVG.":"Il file è troppo grande. Max %sk consentito. Prova a usare SVG.",ra_Filter:a7,"ra_Filter and Data Actions":"Azioni sui filtri e sui dati","ra_Filter files":"Filtra i file","ra_Folder name":"Nome della cartella","ra_Folder → Channel → State":"Cartella → Canale → Stato","ra_Folder → Device → Channel → State":"Cartella → Dispositivo → Canale → Stato","ra_Folder → State":"Cartella → Stato","ra_Folders always first":"Le cartelle sono sempre al primo posto",ra_Friday:c7,"ra_From file":"Dal file","ra_From text":"Dal testo","ra_Get %s access":"Ottieni l'accesso %s","ra_Good luck":"Buona fortuna","ra_Hide empty folders":"Nascondi cartelle vuote","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nessun file verrà creato nella cartella, scomparirà dopo la chiusura del browser","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se il pulsante sopra non funziona, puoi autorizzare manualmente questa app visitando questo URL","ra_Import and add configuration section":"Importa e aggiungi la sezione di configurazione","ra_Import and replace configuration section":"Importa e sostituisci la sezione di configurazione","ra_Import data from %s file":"Importa i dati dal file %s","ra_Import from %s":"Importa da %s","ra_Instance %s is alive":"Il %s dell'istanza è vivo","ra_Instance %s is not alive":"Il TESTO dell'istanza non è vivo","ra_Instance is not alive":"L'istanza non è viva","ra_Invalid CRON":"CRON non valido","ra_Invalid JSON":"JSON non valido","ra_Invalid JSON file.":"File JSON non valido.","ra_Invalid JSON format. Expected an array.":"Formato JSON non valido. È previsto un array.","ra_Invalid answer from server":"Risposta non valida dal server","ra_Invalid parent folder!":"Cartella principale non valida!","ra_Invalid structure":"Struttura non valida","ra_JSON editor":"Editor JSON","ra_Last change":"Ultima modifica",ra_Latitude:u7,"ra_License %s":"Licenza %s","ra_License agreement":"Contratto di licenza","ra_License does not exist":"La licenza non esiste","ra_License expired on %s":"Licenza scaduta il %s",'ra_License for other product "%s"':'Licenza per altro prodotto "%s"',"ra_License is for version %s, but required version is %s.":"La licenza è per la versione %s, ma la versione richiesta è %s.","ra_License must be converted":"La licenza deve essere convertita in una versione più recente. Puoi farlo nel tuo profilo iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licenza non trovata nel gestore delle licenze. Vuoi aggiornare le licenze da iobroker.net?","ra_Listen on all IPs":"Ascolta su tutti gli IP","ra_Load configuration from file":"Carica la configurazione dal file",ra_Logout:l7,ra_Longitude:N7,'ra_May not trigger "updateLicenses"':'Potrebbe non attivare "updateLicenses"',ra_Message:L7,ra_Monday:j7,"ra_Move down":"Abbassati","ra_Move up":"Andare avanti",ra_Name:g7,"ra_No data found in file":"Nessun dato trovato nel file","ra_No one license found in license manager":"Nessuna licenza trovata nel gestore delle licenze","ra_No response from admin":"Nessuna risposta dall'amministratore","ra_No response from the backend":"Nessuna risposta dal backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'I non esperti possono creare nuovi oggetti solo in "0_userdata.0" o "alias.0".',"ra_Not a number":"Non un numero","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Segreto del client OAuth",ra_Objects:T7,ra_Ok:y7,"ra_On weekdays":"Nei giorni della settimana","ra_Only following structures of objects are available:":"Sono disponibili solo le seguenti strutture di oggetti:","ra_Only selected":"Solo selezionato","ra_Owner group":"Gruppo di proprietari","ra_Owner user":"Utente proprietario","ra_Passwords are not equal!":"Le password non sono uguali!","ra_Place your files here or click here to open the browse dialog":"Posiziona i file qui o fai clic qui per aprire la finestra di dialogo Sfoglia","ra_Please allow popups in your browser for this page!":"Si prega di abilitare i popup nel browser per questa pagina!","ra_Please confirm":"Si prega di confermare","ra_Please create license":"Si prega di creare la licenza","ra_Please enter the license":"Inserisci la licenza","ra_Please select file...":"Si prega di selezionare il file...","ra_Please select object ID...":"Seleziona l'ID oggetto ...","ra_Port could be used by %s":"La porta potrebbe essere utilizzata da %s","ra_Port is already used by %s":"La porta è già utilizzata da %s","ra_Press ENTER Key to add new item":"Premere il tasto INVIO per aggiungere un nuovo elemento","ra_Private certificate":"Certificato privato",ra_Product:D7,"ra_Public certificate":"Certificato pubblico","ra_Quality code":"Qualità","ra_Refresh tree":"Aggiorna l'albero","ra_Reload files":"Ricarica i file",ra_Rename_Move_Copy:d7,"ra_Renew %s access":"Rinnova l'accesso %s",ra_Repeat:z7,ra_Replace:h7,"ra_Request timed out":"Tempo scaduto per la richiesta","ra_Restrict to folder":"Limita alla cartella",ra_Root:I7,ra_Saturday:w7,ra_Save:C7,"ra_Save and close":"Salva e chiudi","ra_Save configuration to file":"Salva la configurazione su file","ra_Save objects tree as JSON file":"Salva l'albero degli oggetti come file JSON","ra_Select all":"Seleziona tutto","ra_Select color":"Seleziona il colore","ra_Select predefined icon":"Seleziona l'icona predefinita","ra_Select type of export":"Seleziona il tipo di esportazione",ra_Selected:A7,"ra_Selected %s object(s)":"%s oggetto/i selezionato/i","ra_Serial number (UUID)":"Numero di serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Il numero di serie (UUID) "%s" nella licenza è per un altro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sessione scadrà tra %s secondi. Continuare?","ra_Show all folders":"Mostra tutte le cartelle","ra_Show lines between rows":"Mostra linee tra le righe","ra_Show/Hide object descriptions":"Mostra/Nascondi le descrizioni degli oggetti","ra_Show/hide filter input":"Mostra/nascondi input filtro","ra_Some data are not stored. Discard?":"Alcuni dati non vengono memorizzati. Scartare?",ra_States:m7,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizzazione completata. Il token è valido fino al %s e verrà rinnovato automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizzazione completata. Il token è valido fino al %s, ma potrebbe scadere perché l'istanza non è in esecuzione.","ra_Suitable license not found in license manager":"Licenza adatta non trovata nel gestore delle licenze",ra_Sunday:p7,"ra_Suppress question for next %s minutes":"Sopprimi la domanda per i prossimi %s minuti","ra_System language":"Linguaggio di sistema","ra_Take browser position":"Prendi posizione dal browser","ra_Take position from system settings":"Prendi posizione dalle impostazioni di sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Gli esperti possono creare oggetti ovunque ma dal secondo livello (es. "Vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"La pagina che stai cercando non è stata trovata","ra_The schedule will be executed every minute. Are you sure?":"La pianificazione verrà eseguita ogni minuto. Sei sicuro?","ra_The schedule will be executed every second. Are you sure?":"La pianificazione verrà eseguita ogni secondo. Sei sicuro?",ra_Thursday:O7,ra_Timestamp:E7,"ra_Toggle expert mode":"Attiva / disattiva la modalità esperto","ra_Toggle the states view":"Attiva o disattiva la visualizzazione degli stati","ra_Toggle view mode":"Attiva / disattiva la modalità di visualizzazione","ra_Too big":"Troppo grande","ra_Too small":"Troppo piccolo","ra_Transparent dialog":"Finestra di dialogo trasparente",ra_Tuesday:_7,"ra_Unknown error":"Errore sconosciuto","ra_Unknown error!":"Errore sconosciuto!",ra_Update:f7,"ra_Upload file":"Caricare un file","ra_Use all available let's encrypt certificates":"Usa tutti i certificati Let's Encrypt disponibili","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utilizzare l'adattatore iobroker.acme per i certificati letsencrypt","ra_Use system settings for position":"Usa le impostazioni di sistema per la posizione","ra_Used system settings":"Impostazioni di sistema utilizzate","ra_User files":"File utente",ra_ValidTill:S7,ra_Value:x7,ra_Version:k7,"ra_View file":"Vedi il file","ra_View: %s":"Visualizza: %s",ra_Wednesday:Y7,ra_Width:Q7,"ra_YAML editor":"Editor YAML",ra_Yes:v7,"ra_You can export all objects or just the selected branch.":"Puoi esportare tutti gli oggetti o solo il ramo selezionato.","ra_You can filter entries by entering here some text":"Puoi filtrare le voci inserendo qui del testo","ra_You can use * as wildcard":"Puoi usare * come carattere jolly",ra___different__:U7,ra_aclEveryone_read_object:b7,ra_aclEveryone_read_state:$7,ra_aclEveryone_write_object:P7,ra_aclEveryone_write_state:W7,ra_aclGroup_read_object:R7,ra_aclGroup_read_state:J7,ra_aclGroup_write_object:B7,ra_aclGroup_write_state:G7,ra_aclOwner_read_object:F7,ra_aclOwner_read_state:H7,ra_aclOwner_write_object:V7,ra_aclOwner_write_state:Z7,ra_buttons:X7,ra_changedFrom:K7,ra_close:q7,ra_create_boolean_state:e$,ra_create_channel:t$,ra_create_device:s$,ra_create_number_state:i$,ra_create_state:r$,ra_create_string_state:o$,ra_daysShortText:M$,ra_dow_Fr:n$,ra_dow_Mo:a$,ra_dow_Sa:c$,ra_dow_Su:u$,ra_dow_Th:l$,ra_dow_Tu:N$,ra_dow_We:L$,ra_expertMode:j$,ra_false:g$,ra_fileType_all:T$,ra_fileType_audio:y$,ra_fileType_code:D$,ra_fileType_images:d$,ra_fileType_txt:z$,ra_fileType_video:h$,"ra_fileType_video,":"video",ra_filter_customs:I$,ra_filter_customs_without:w$,ra_filter_func:C$,ra_filter_id:A$,ra_filter_name:m$,ra_filter_role:p$,ra_filter_room:O$,ra_filter_type:E$,"ra_import data from %s file":"Importa dati dal file %s",ra_invalidConfig:_$,ra_lastChange:f$,ra_locally:S$,ra_month_Apr:x$,ra_month_Aug:k$,ra_month_Dec:Y$,ra_month_Feb:Q$,ra_month_Jan:v$,ra_month_Jul:U$,ra_month_Jun:b$,ra_month_Mai:$$,ra_month_Mar:P$,ra_month_Nov:W$,ra_month_Oct:R$,ra_month_Sep:J$,ra_months_Apr:B$,ra_months_Aug:G$,ra_months_Dec:F$,ra_months_Feb:H$,ra_months_Jan:V$,ra_months_Jul:Z$,ra_months_Jun:X$,ra_months_Mai:K$,ra_months_Mar:q$,ra_months_Nov:eP,ra_months_Oct:tP,ra_months_Sep:sP,"ra_no confirm for 5 mins":"nessuna conferma per 5 minuti",ra_none:iP,ra_object_changed_by:rP,ra_object_changed_by_user:oP,ra_otherConfig:MP,ra_qualityCode:nP,ra_repeat:aP,ra_select_folder_hint:cP,ra_show_all:uP,ra_state_changed_by:lP,ra_state_changed_from:NP,ra_timestamp:LP,ra_tooltip_ack:jP,ra_tooltip_comment:gP,ra_tooltip_copyState:TP,ra_tooltip_ctrlForLink:yP,ra_tooltip_customConfig:DP,ra_tooltip_deleteObject:dP,ra_tooltip_editObject:zP,ra_tooltip_editState:hP,ra_tooltip_expire:IP,ra_tooltip_from:wP,ra_tooltip_lc:CP,ra_tooltip_quality:AP,ra_tooltip_ts:mP,ra_tooltip_user:pP,ra_tooltip_value:OP,ra_true:EP,"ra_use seconds":"usa i secondi",ra_val:_P,"ra_via internet":"attraverso internet",ra_warning_every_minute:fP,ra_warning_every_second:SP,sc_cron:xP,sc_date:kP,sc_dates:YP,sc_dow:QP,sc_dows:vP,sc_every:UP,sc_everyN_dates:bP,sc_everyN_dow:$P,sc_everyN_dows:PP,sc_everyN_hours:WP,sc_everyN_minutes:RP,sc_everyN_months:JP,sc_everyN_seconds:BP,sc_every_dates:GP,sc_every_dow:FP,sc_every_dows:HP,sc_every_hours:VP,sc_every_minutes:ZP,sc_every_months:XP,sc_every_seconds:KP,sc_from:qP,sc_hours:eW,sc_interval:tW,sc_intervalBetween:sW,sc_invalid_cron:iW,sc_minutes:rW,sc_months:oW,sc_once:MW,sc_period:nW,sc_seconds:aW,sc_simple:cW,sc_specific:uW,sc_specific_dates:lW,sc_specific_dow:NW,sc_specific_dows:LW,sc_specific_hours:jW,sc_specific_minutes:gW,sc_specific_months:TW,sc_specific_seconds:yW,sc_time:DW,sc_to:dW,sc_wizard:zW,sch_all:hW,sch_astroDay:IW,sch_astroNight:wW,sch_astro_dawn:CW,sch_astro_dusk:AW,sch_astro_goldenHour:mW,sch_astro_goldenHourEnd:pW,sch_astro_nadir:OW,sch_astro_nauticalDawn:EW,sch_astro_nauticalDusk:_W,sch_astro_night:fW,sch_astro_nightEnd:SW,sch_astro_solarNoon:xW,sch_astro_sunrise:kW,sch_astro_sunriseEnd:YW,sch_astro_sunset:QW,sch_astro_sunsetStart:vW,sch_at:UW,sch_desc_atTime:bW,sch_desc_everyDay:$W,sch_desc_everyHour:PW,sch_desc_everyMinute:WW,sch_desc_everyMonth:RW,sch_desc_everyNDay:JW,sch_desc_everyNHours:BW,sch_desc_everyNMinutes:GW,sch_desc_everyNMonths:FW,sch_desc_everyNWeeks:HW,sch_desc_everyNYears:VW,sch_desc_everyWeek:ZW,sch_desc_everyYear:XW,sch_desc_intervalFromTo:KW,sch_desc_never:qW,sch_desc_onDate:eR,sch_desc_onDates:tR,sch_desc_onEveryDate:sR,sch_desc_onMonth:iR,sch_desc_onMonths:rR,sch_desc_onWeekday:oR,sch_desc_onWeekdays:MR,sch_desc_onWeekends:nR,sch_desc_onWorkdays:aR,sch_desc_onceInPast:cR,sch_desc_once_on:uR,sch_desc_validFrom:lR,sch_desc_validFromTo:NR,sch_desc_validTo:LR,sch_every:jR,sch_exactTime:gR,sch_from:TR,sch_fromTo:yR,sch_intervalTime:DR,sch_invert:dR,sch_no_one:zR,sch_on:hR,sch_period:IR,sch_periodDaily:wR,sch_periodDates:CR,sch_periodDay:AR,sch_periodEvery:mR,sch_periodEveryDay:pR,sch_periodEveryMonth:OR,sch_periodEveryWeek:ER,sch_periodEveryYear:_R,sch_periodHours:fR,sch_periodMinutes:SR,sch_periodMonth:xR,sch_periodMonthly:kR,sch_periodOnce:YR,sch_periodSpecificMonths:QR,sch_periodWeek:vR,sch_periodWeekdays:UR,sch_periodWeekend:bR,sch_periodWeekly:$R,sch_periodWorkdays:PR,sch_periodYear:WR,sch_periodYearly:RR,sch_specificTime:JR,sch_time:BR,sch_to:GR,sch_valid:FR,sch_validFrom:HR,sch_validTo:VR,sch_wholeDay:ZR,sch_yearEveryMonth:XR},qR="Comportamiento",eJ="Adjuntar",tJ="Cancelar",sJ="Categorías",iJ="Comprobado",rJ="Borrar",oJ="Cerca",MJ="Comercial",nJ="Configurar",aJ="Conectado",cJ="Continuar",uJ="Copiado",lJ="Crear",NJ="Cultivo",LJ="Delete",jJ="Eliminar",gJ="Desechar",TJ="Desconectado",yJ="Error",DJ="Filtrar",dJ="Viernes",zJ="Latitud",hJ="Cerrar sesión",IJ="Longitud",wJ="Mensaje",CJ="Lunes",AJ="Nombre",mJ="Objetos",pJ="Okay",OJ="Producto",EJ="Cambiar nombre/Mover/Copiar",_J="Repetir",fJ="Reemplazar",SJ="Raíz",xJ="Sábado",kJ="Salvar",YJ="Seleccionado",QJ="Estados",vJ="Domingo",UJ="Jueves",bJ="Marca de tiempo",$J="Martes",PJ="Actualizar",WJ="Válida hasta",RJ="Valor",JJ="Versión",BJ="Miércoles",GJ="Anchura",FJ="Sí",HJ="diferente",VJ="Todo el mundo puede leer el objeto",ZJ="Todos pueden leer el estado",XJ="Todos pueden escribir objetos",KJ="Todos pueden escribir el estado",qJ="El grupo puede leer el objeto",eB="El grupo puede leer el estado",tB="El grupo puede escribir un objeto",sB="El grupo puede escribir el estado",iB="El propietario puede leer el objeto",rB="El propietario puede leer el estado",oB="El propietario puede escribir el objeto",MB="El propietario puede escribir el estado",nB="Botones",aB="Cambiaron desde",cB="cerrar",uB="Crear estado booleano",lB="Crear canal",NB="Crear dispositivo",LB="Crear estado numérico",jB="Crear estado",gB="Crear estado de cadena",TB="d.",yB="Fr",DB="Mes",dB="Sa",zB="Su",hB="Th",IB="Tu",wB="Nosotros",CB="Modo experto",AB="FALSO",mB="Todos los archivos",pB="Audio",OB="Código/JSON",EB="Imágenes",_B="Texto",fB="Video",SB="Configuraciones",xB="sin",kB="Función",YB="ID",QB="Nombre",vB="Papel",UB="Habitación",bB="Tipo",$B="Configuraciones inválidas",PB="Ultimo cambio",WB="en la zona",RB="Abr",JB="Ago",BB="Dic",GB="Feb",FB="Ene",HB="Jul",VB="Jun",ZB="Mai",XB="Mar",KB="Nov",qB="Oct",eG="Sep",tG="Abr",sG="Ago",iG="Dic",rG="Feb",oG="Ene",MG="Jul",nG="Jun",aG="Mai",cG="Mar",uG="Nov",lG="Oct",NG="Sep",LG="ninguno",jG="Objeto cambiado por",gG="Objeto cambiado por última vez a las",TG="Configuraciones de otro adaptador %s",yG="Código de calidad",DG="repetir",dG='Para seleccionar la carpeta, simplemente mantenga presionada la tecla "shift" haciendo clic en la carpeta.',zG="Mostrar todo",hG="Estado cambiado por",IG="Objeto cambiado de",wG="Marca de tiempo",CG="Bandera reconocida",AG="Comentario",mG="Copie el valor del estado",pG="Mantenga presionada la tecla Cltr/⌘ para abrir el enlace",OG="Ajustes personalizados",EG="Eliminar objeto",_G="Editar objeto",fG="Edite el valor del estado",SG="Caduca en",xG="Desde",kG="Último cambio",YG="Calidad",QG="Sello de tiempo",vG="Usuario",UG="Valor",bG="VERDADERO",$G="Valor",PG="Advertencia: ¡El trabajo CRON se ejecutará cada minuto durante el período especificado!",WG="Advertencia: ¡El trabajo CRON se ejecutará cada segundo durante el período especificado!",RG="CRON",JG="Fecha",BG="fechas",GG="Día",FG="Día de la semana",HG="Cada",VG="cada N días",ZG="cada enésimo día de la semana",XG="cada N día de la semana",KG="cada N horas",qG="cada N minutos",eF="cada N meses",tF="cada N segundos",sF="cada día",iF="Cada día de la semana",rF="Cada día de la semana",oF="cada hora",MF="cada minuto",nF="cada mes",aF="cada segundo",cF="De",uF="Horas",lF="Intervalo",NF="Intervalo entre",LF="CRON no válido",jF="Minutos",gF="meses",TF="Una vez",yF="Período",DF="Segundos",dF="Sencillo",zF="Tiempo específico",hF="fechas especificas",IF="día(s) específico(s) de la semana",wF="día específico de semanas",CF="horas específicas",AF="minutos específicos",mF="meses específicos",pF="segundos específicos",OF="Hora",EF="A",_F="Mago",fF="todas",SF="Día astro",xF="Noche astro",kF="Amanecer",YF="Oscuridad",QF="hora dorada",vF="Fin de la hora dorada",UF="Nadir",bF="Amanecer náutico",$F="Anochecer náutico",PF="Noche",WF="Fin de la noche",RF="Mediodía solar",JF="amanecer",BF="Fin del amanecer",GF="Puesta de sol",FF="Puesta de sol",HF="a",VF="en %s",ZF="cada día",XF="cada hora",KF="cada minuto",qF="cada mes",eH="cada %s días",tH="cada %s horas",sH="cada %s minutos",iH="cada %s meses",rH="cada %s semanas",oH="cada %s años",MH="cada semana",nH="todos los años",aH="de %s a %s",cH="Nunca",uH="en %s de %s",lH="en %s y %s de",NH="en cada fecha de",LH="%s",jH="%s y %s",gH="en %s",TH="en %s y %s",yH="en los fines de semana",DH="en días laborables",dH="ya no se ejecutará más, porque el inicio está en el pasado",zH="en %s",hH="de %s",IH="Ejecutar desde hasta",wH="a %s",CH="cada",AH="Tiempo específico",mH="de",pH="De-a",OH="Tiempo de intervalo",EH="invertir; poner boca abajo o en la posición opuesta, orden o arreglo; Boca abajo",_H="ninguna",fH="en",SH="Período",xH="Diario",kH="fechas",YH="Día",QH="Cada",vH="Cada día",UH="Cada mes",bH="Cada semana",$H="Todos los años",PH="Horas",WH="Minutos",RH="mes",JH="Mensual",BH="Una vez",GH="Meses específicos",FH="Semana",HH="Días laborables",VH="Fin de semana",ZH="Semanal",XH="Días laborables",KH="Año",qH="Anual",eV="Tiempo específico",tV="Hora",sV="a",iV="Válido",rV="de",oV="a",MV="Todo el dia",nV="cada mes",aV={"ra_%s links from aliases":"%s enlaces de alias","ra_%s object(s) processed":"%s objeto(s) procesados","ra_%s was imported":"%s fue importado","ra_Accept license":"Aceptar licencia",ra_Actions:qR,"ra_Add new child object to selected parent":"Agregar nuevo objeto hijo al padre seleccionado","ra_Add objects tree from JSON file":"Agregar árbol de objetos desde el archivo JSON","ra_Add row":"Añadir fila","ra_Advanced options":"Opciones avanzadas","ra_All items are filtered out":"Todos los elementos se filtran","ra_All objects":"Todos los objetos",ra_Append:eJ,"ra_Append %s entries or replace existing?":"¿Agregar %s entradas o reemplazar las existentes?","ra_Append or replace?":"¿Agregar o reemplazar?","ra_Are you sure?":"¿Estás seguro?","ra_Auto (no custom columns)":"Automático (sin columnas personalizadas)","ra_Back to %s":"Volver a %s","ra_Background image":"Imagen de fondo",ra_Cancel:tJ,"ra_Cannot add items with set filter":"No se pueden agregar elementos con el filtro establecido","ra_Cannot decode license":"No se puede decodificar la licencia","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"No se puede determinar la posición: la configuración del sistema está vacía y la detección de GPS está deshabilitada en el navegador",'ra_Cannot find "%s"':'No se puede encontrar "%s"','ra_Cannot read "%s"':'No se puede leer "%s"',"ra_Cannot read licenses: %s":"No se pueden leer licencias: %s","ra_Cannot retrieve options, as instance is offline":"No se pueden recuperar las opciones, ya que la instancia está fuera de línea","ra_Cannot update attribute, because not found in the object":"No se puede actualizar el atributo porque no se encuentra en el objeto","ra_Cannot upload":"no se puede cargar",ra_Categories:sJ,"ra_Chained certificate":"certificado encadenado","ra_Change color theme":"Cambiar tema de color","ra_Changed from":"Cambiaron desde","ra_Channel → State":"Canal → Estado","ra_Check license":"Verificar licencia",ra_Checked:iJ,ra_Clear:rJ,"ra_Clear filter":"Filtro claro","ra_Clear icon":"Icono claro","ra_Click to see in full size":"Haz clic para ver en tamaño completo.","ra_Click to show":"Haga clic para mostrar","ra_Clone current row":"Clonar fila actual",ra_Close:oJ,"ra_Collapse all nodes":"Contraer todos los nodos","ra_Collapse one step node":"Contraer un nivel",ra_Commercial:MJ,ra_Configure:nJ,"ra_Configure visible columns":"Configurar columnas visibles","ra_Confirm deletion of %s":"Confirmar la eliminación de %s",ra_Connected:aJ,ra_Continue:cJ,ra_Copied:uJ,"ra_Copied %s":'Copiado "%s"',"ra_Copy content":"Copiar contenido",ra_Create:lJ,"ra_Create alias":"Crear alias","ra_Create folder":"Crear carpeta","ra_Create new folder in %s":"Crear nueva carpeta en %s",ra_Crop:NJ,"ra_Define CRON...":"Definir CRON...","ra_Define functions":"Definir funciones","ra_Define rooms":"Definir habitaciones","ra_Define schedule":"Definir horario","ra_Define schedule...":"Definir horario ...",ra_Del:LJ,ra_Delete:jJ,"ra_Delete current row":"Eliminar fila actual","ra_Deselect all":"Deselecciona todo","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Deshabilitar/Habilitar traducción",ra_Discard:gJ,ra_Disconnected:TJ,"ra_Do not ask for next 2 hours in this session":"No preguntes por las siguientes 2 horas en esta sesión.","ra_Do not export values of states":"No exportar valores de estados.","ra_Do not use let's encrypt":"No use vamos a cifrar","ra_Docker is not available":"Docker no está disponible","ra_Docker is not installed or not running":"Docker no está instalado o no se está ejecutando","ra_Double click to reset table layout":"Haga doble clic para restablecer el diseño de la tabla","ra_Drag 'n' drop some files here, or click to select files":"Arrastre y suelte algunos archivos aquí, o haga clic para seleccionar archivos","ra_Drop file here":"Suelta el archivo aquí","ra_Drop the files here...":"Suelta el archivo aquí ...","ra_Duplicate name":"Nombre duplicado","ra_Edit ACL":"Editar LCA","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuración personalizada","ra_Edit full path":"Editar ruta completa","ra_Edit function":"Función de edición","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar rol","ra_Edit room":"Cuarto de edición","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Introduzca el código de esa página aquí",ra_Error:yJ,"ra_Expand all nodes":"Expandir todos los nodos","ra_Expand one step node":"Expandir un nivel","ra_Expand/Collapse card":"Expandir/Contraer tarjeta","ra_Export configuration section":"Exportar sección de configuración","ra_Export data to %s file":"Exportar datos al archivo %s","ra_Failed to open JSON File":"No se pudo abrir el archivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"El archivo es demasiado grande. Máximo de %sk permitido. Intenta usar SVG.",ra_Filter:DJ,"ra_Filter and Data Actions":"Acciones de filtrado y datos","ra_Filter files":"Filtrar archivos","ra_Folder name":"Nombre de la carpeta","ra_Folder → Channel → State":"Carpeta → Canal → Estado","ra_Folder → Device → Channel → State":"Carpeta → Dispositivo → Canal → Estado","ra_Folder → State":"Carpeta → Estado","ra_Folders always first":"Carpetas siempre primero",ra_Friday:dJ,"ra_From file":"Desde archivo","ra_From text":"Del texto","ra_Get %s access":"Obtener %s acceso","ra_Good luck":"Buena suerte","ra_Hide empty folders":"Ocultar carpetas vacías","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si no se creará ningún archivo en la carpeta, desaparecerá después de que se cierre el navegador.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si el botón de arriba no funciona, puedes autorizar manualmente esta aplicación visitando esta URL","ra_Import and add configuration section":"Importar y agregar sección de configuración","ra_Import and replace configuration section":"Importar y reemplazar sección de configuración","ra_Import data from %s file":"Importar datos del archivo %s","ra_Import from %s":"Importar desde %s","ra_Instance %s is alive":"Instancia %s está vivo","ra_Instance %s is not alive":"Instancia %s no está vivo","ra_Instance is not alive":"La instancia no está viva","ra_Invalid CRON":"CRON no válido","ra_Invalid JSON":"JSON no válido","ra_Invalid JSON file.":"Archivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Se esperaba un array.","ra_Invalid answer from server":"Respuesta inválida del servidor","ra_Invalid parent folder!":"Carpeta principal no válida.","ra_Invalid structure":"Estructura inválida","ra_JSON editor":"editor JSON","ra_Last change":"Ultimo cambio",ra_Latitude:zJ,"ra_License %s":"Licencia %s","ra_License agreement":"Acuerdo de licencia","ra_License does not exist":"La licencia no existe","ra_License expired on %s":"La licencia venció el %s",'ra_License for other product "%s"':'Licencia para otro producto "%s"',"ra_License is for version %s, but required version is %s.":"La licencia es para la versión %s, pero la versión requerida es %s.","ra_License must be converted":"La licencia debe convertirse a una versión más reciente. Puedes hacerlo en tu perfil de iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licencia no encontrada en el administrador de licencias. ¿Quieres actualizar las licencias de iobroker.net?","ra_Listen on all IPs":"Escuche en todas las IP","ra_Load configuration from file":"Cargar configuración desde archivo",ra_Logout:hJ,ra_Longitude:IJ,'ra_May not trigger "updateLicenses"':'No puede activar "updateLicenses"',ra_Message:wJ,ra_Monday:CJ,"ra_Move down":"Mover hacia abajo","ra_Move up":"Ascender",ra_Name:AJ,"ra_No data found in file":"No se encontraron datos en el archivo","ra_No one license found in license manager":"No se encontró ninguna licencia en el administrador de licencias","ra_No response from admin":"No hay respuesta del administrador","ra_No response from the backend":"No hay respuesta del backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Los no expertos pueden crear nuevos objetos solo en "0_userdata.0" o "alias.0".',"ra_Not a number":"No un número","ra_OAuth Client ID":"ID de cliente OAuth","ra_OAuth Client secret":"Secreto de cliente OAuth",ra_Objects:mJ,ra_Ok:pJ,"ra_On weekdays":"De lunes a viernes","ra_Only following structures of objects are available:":"Solo están disponibles las siguientes estructuras de objetos:","ra_Only selected":"Solo seleccionados","ra_Owner group":"Grupo propietario","ra_Owner user":"Usuario propietario","ra_Passwords are not equal!":"¡Las contraseñas no son iguales!","ra_Place your files here or click here to open the browse dialog":"Coloque sus archivos aquí o haga clic aquí para abrir el cuadro de diálogo de exploración","ra_Please allow popups in your browser for this page!":"¡Permita ventanas emergentes en su navegador para esta página!","ra_Please confirm":"Por favor confirmar","ra_Please create license":"Por favor cree una licencia","ra_Please enter the license":"Por favor ingrese la licencia","ra_Please select file...":"Seleccione el archivo...","ra_Please select object ID...":"Por favor seleccione ID de objeto ...","ra_Port could be used by %s":"El puerto podría ser utilizado por %s","ra_Port is already used by %s":"El puerto ya está en uso por %s","ra_Press ENTER Key to add new item":"Presione la tecla ENTER para agregar un nuevo elemento","ra_Private certificate":"certificado privado",ra_Product:OJ,"ra_Public certificate":"Certificado público","ra_Quality code":"Calidad","ra_Refresh tree":"Actualizar árbol","ra_Reload files":"Recargar archivos",ra_Rename_Move_Copy:EJ,"ra_Renew %s access":"Renovar el acceso a %s",ra_Repeat:_J,ra_Replace:fJ,"ra_Request timed out":"Tiempo de espera agotado","ra_Restrict to folder":"Restringir a carpeta",ra_Root:SJ,ra_Saturday:xJ,ra_Save:kJ,"ra_Save and close":"Guardar y cerrar","ra_Save configuration to file":"Guardar configuración en archivo","ra_Save objects tree as JSON file":"Guardar el árbol de objetos como archivo JSON","ra_Select all":"Seleccionar todo","ra_Select color":"Seleccionar el color","ra_Select predefined icon":"Seleccionar icono predefinido","ra_Select type of export":"Seleccione tipo de exportación",ra_Selected:YJ,"ra_Selected %s object(s)":"%s objetos seleccionados","ra_Serial number (UUID)":"Número de serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'El número de serie (UUID) "%s" en la licencia es para otro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sesión expirará en %s segundos. ¿Continuar?","ra_Show all folders":"Mostrar todas las carpetas","ra_Show lines between rows":"Mostrar líneas entre filas","ra_Show/Hide object descriptions":"Mostrar/ocultar descripciones de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Algunos datos no se almacenan. ¿Desechar?",ra_States:QJ,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado correctamente. El token es válido hasta el %s y se renovará automáticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado correctamente. El token es válido hasta %s, pero puede caducar porque la instancia no está en ejecución.","ra_Suitable license not found in license manager":"Licencia adecuada no encontrada en el administrador de licencias",ra_Sunday:vJ,"ra_Suppress question for next %s minutes":"Suprimir pregunta durante los próximos %s minutos","ra_System language":"Lenguaje del sistema","ra_Take browser position":"Tomar posición desde el navegador","ra_Take position from system settings":"Tomar posición desde la configuración del sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Los expertos pueden crear objetos en todas partes excepto desde el segundo nivel (por ejemplo, "vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"No se encontró la página que busca","ra_The schedule will be executed every minute. Are you sure?":"El cronograma se ejecutará cada minuto. ¿Estás seguro?","ra_The schedule will be executed every second. Are you sure?":"El cronograma se ejecutará cada segundo. ¿Estás seguro?",ra_Thursday:UJ,ra_Timestamp:bJ,"ra_Toggle expert mode":"Alternar modo experto","ra_Toggle the states view":"Alternar la vista de estados","ra_Toggle view mode":"Alternar modo de vista","ra_Too big":"Demasiado grande","ra_Too small":"Demasiado pequeña","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:$J,"ra_Unknown error":"Error desconocido","ra_Unknown error!":"¡Error desconocido!",ra_Update:PJ,"ra_Upload file":"Subir archivo","ra_Use all available let's encrypt certificates":"Utilice todos los certificados let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use el adaptador iobroker.acme para los certificados de letsencrypt","ra_Use system settings for position":"Usar la configuración del sistema para la posición","ra_Used system settings":"Configuraciones del sistema usadas","ra_User files":"Archivos de usuario",ra_ValidTill:WJ,ra_Value:RJ,ra_Version:JJ,"ra_View file":"Ver archivo","ra_View: %s":"Ver: %s",ra_Wednesday:BJ,ra_Width:GJ,"ra_YAML editor":"Editor YAML",ra_Yes:FJ,"ra_You can export all objects or just the selected branch.":"Puede exportar todos los objetos o solo la rama seleccionada.","ra_You can filter entries by entering here some text":"Puede filtrar las entradas ingresando aquí algún texto","ra_You can use * as wildcard":"Puedes utilizar * como comodín",ra___different__:HJ,ra_aclEveryone_read_object:VJ,ra_aclEveryone_read_state:ZJ,ra_aclEveryone_write_object:XJ,ra_aclEveryone_write_state:KJ,ra_aclGroup_read_object:qJ,ra_aclGroup_read_state:eB,ra_aclGroup_write_object:tB,ra_aclGroup_write_state:sB,ra_aclOwner_read_object:iB,ra_aclOwner_read_state:rB,ra_aclOwner_write_object:oB,ra_aclOwner_write_state:MB,ra_buttons:nB,ra_changedFrom:aB,ra_close:cB,ra_create_boolean_state:uB,ra_create_channel:lB,ra_create_device:NB,ra_create_number_state:LB,ra_create_state:jB,ra_create_string_state:gB,ra_daysShortText:TB,ra_dow_Fr:yB,ra_dow_Mo:DB,ra_dow_Sa:dB,ra_dow_Su:zB,ra_dow_Th:hB,ra_dow_Tu:IB,ra_dow_We:wB,ra_expertMode:CB,ra_false:AB,ra_fileType_all:mB,ra_fileType_audio:pB,ra_fileType_code:OB,ra_fileType_images:EB,ra_fileType_txt:_B,ra_fileType_video:fB,"ra_fileType_video,":"Video",ra_filter_customs:SB,ra_filter_customs_without:xB,ra_filter_func:kB,ra_filter_id:YB,ra_filter_name:QB,ra_filter_role:vB,ra_filter_room:UB,ra_filter_type:bB,"ra_import data from %s file":"Importar datos del archivo %s",ra_invalidConfig:$B,ra_lastChange:PB,ra_locally:WB,ra_month_Apr:RB,ra_month_Aug:JB,ra_month_Dec:BB,ra_month_Feb:GB,ra_month_Jan:FB,ra_month_Jul:HB,ra_month_Jun:VB,ra_month_Mai:ZB,ra_month_Mar:XB,ra_month_Nov:KB,ra_month_Oct:qB,ra_month_Sep:eG,ra_months_Apr:tG,ra_months_Aug:sG,ra_months_Dec:iG,ra_months_Feb:rG,ra_months_Jan:oG,ra_months_Jul:MG,ra_months_Jun:nG,ra_months_Mai:aG,ra_months_Mar:cG,ra_months_Nov:uG,ra_months_Oct:lG,ra_months_Sep:NG,"ra_no confirm for 5 mins":"Sin confirmación durante 5 minutos",ra_none:LG,ra_object_changed_by:jG,ra_object_changed_by_user:gG,ra_otherConfig:TG,ra_qualityCode:yG,ra_repeat:DG,ra_select_folder_hint:dG,ra_show_all:zG,ra_state_changed_by:hG,ra_state_changed_from:IG,ra_timestamp:wG,ra_tooltip_ack:CG,ra_tooltip_comment:AG,ra_tooltip_copyState:mG,ra_tooltip_ctrlForLink:pG,ra_tooltip_customConfig:OG,ra_tooltip_deleteObject:EG,ra_tooltip_editObject:_G,ra_tooltip_editState:fG,ra_tooltip_expire:SG,ra_tooltip_from:xG,ra_tooltip_lc:kG,ra_tooltip_quality:YG,ra_tooltip_ts:QG,ra_tooltip_user:vG,ra_tooltip_value:UG,ra_true:bG,"ra_use seconds":"usar segundos",ra_val:$G,"ra_via internet":"vía Internet",ra_warning_every_minute:PG,ra_warning_every_second:WG,sc_cron:RG,sc_date:JG,sc_dates:BG,sc_dow:GG,sc_dows:FG,sc_every:HG,sc_everyN_dates:VG,sc_everyN_dow:ZG,sc_everyN_dows:XG,sc_everyN_hours:KG,sc_everyN_minutes:qG,sc_everyN_months:eF,sc_everyN_seconds:tF,sc_every_dates:sF,sc_every_dow:iF,sc_every_dows:rF,sc_every_hours:oF,sc_every_minutes:MF,sc_every_months:nF,sc_every_seconds:aF,sc_from:cF,sc_hours:uF,sc_interval:lF,sc_intervalBetween:NF,sc_invalid_cron:LF,sc_minutes:jF,sc_months:gF,sc_once:TF,sc_period:yF,sc_seconds:DF,sc_simple:dF,sc_specific:zF,sc_specific_dates:hF,sc_specific_dow:IF,sc_specific_dows:wF,sc_specific_hours:CF,sc_specific_minutes:AF,sc_specific_months:mF,sc_specific_seconds:pF,sc_time:OF,sc_to:EF,sc_wizard:_F,sch_all:fF,sch_astroDay:SF,sch_astroNight:xF,sch_astro_dawn:kF,sch_astro_dusk:YF,sch_astro_goldenHour:QF,sch_astro_goldenHourEnd:vF,sch_astro_nadir:UF,sch_astro_nauticalDawn:bF,sch_astro_nauticalDusk:$F,sch_astro_night:PF,sch_astro_nightEnd:WF,sch_astro_solarNoon:RF,sch_astro_sunrise:JF,sch_astro_sunriseEnd:BF,sch_astro_sunset:GF,sch_astro_sunsetStart:FF,sch_at:HF,sch_desc_atTime:VF,sch_desc_everyDay:ZF,sch_desc_everyHour:XF,sch_desc_everyMinute:KF,sch_desc_everyMonth:qF,sch_desc_everyNDay:eH,sch_desc_everyNHours:tH,sch_desc_everyNMinutes:sH,sch_desc_everyNMonths:iH,sch_desc_everyNWeeks:rH,sch_desc_everyNYears:oH,sch_desc_everyWeek:MH,sch_desc_everyYear:nH,sch_desc_intervalFromTo:aH,sch_desc_never:cH,sch_desc_onDate:uH,sch_desc_onDates:lH,sch_desc_onEveryDate:NH,sch_desc_onMonth:LH,sch_desc_onMonths:jH,sch_desc_onWeekday:gH,sch_desc_onWeekdays:TH,sch_desc_onWeekends:yH,sch_desc_onWorkdays:DH,sch_desc_onceInPast:dH,sch_desc_once_on:zH,sch_desc_validFrom:hH,sch_desc_validFromTo:IH,sch_desc_validTo:wH,sch_every:CH,sch_exactTime:AH,sch_from:mH,sch_fromTo:pH,sch_intervalTime:OH,sch_invert:EH,sch_no_one:_H,sch_on:fH,sch_period:SH,sch_periodDaily:xH,sch_periodDates:kH,sch_periodDay:YH,sch_periodEvery:QH,sch_periodEveryDay:vH,sch_periodEveryMonth:UH,sch_periodEveryWeek:bH,sch_periodEveryYear:$H,sch_periodHours:PH,sch_periodMinutes:WH,sch_periodMonth:RH,sch_periodMonthly:JH,sch_periodOnce:BH,sch_periodSpecificMonths:GH,sch_periodWeek:FH,sch_periodWeekdays:HH,sch_periodWeekend:VH,sch_periodWeekly:ZH,sch_periodWorkdays:XH,sch_periodYear:KH,sch_periodYearly:qH,sch_specificTime:eV,sch_time:tV,sch_to:sV,sch_valid:iV,sch_validFrom:rV,sch_validTo:oV,sch_wholeDay:MV,sch_yearEveryMonth:nV},cV="Akcje",uV="Dodać",lV="Anuluj",NV="Kategorie",LV="Sprawdzony",jV="Kasować",gV="Blisko",TV="Handlowy",yV="Konfiguruj",DV="Połączony",dV="Kontynuować",zV="Skopiowano",hV="Stwórz",IV="Przyciąć",wV="Delete",CV="Usunąć",AV="Wyrzucać",mV="Niepowiązany",pV="Błąd",OV="Filtr",EV="Piątek",_V="Szerokość",fV="Wyloguj",SV="Długość geograficzna",xV="Wiadomość",kV="Poniedziałek",YV="Nazwa",QV="Obiekty",vV="Dobrze",UV="Produkt",bV="Zmień nazwę/Przenieś/Kopiuj",$V="Powtarzać",PV="Zastępować",WV="Korzeń",RV="Sobota",JV="Zapisać",BV="Wybrany",GV="Stany",FV="Niedziela",HV="Czwartek",VV="Znak czasu",ZV="Wtorek",XV="Aktualizacja",KV="Obowiązuje do",qV="Wartość",eZ="Wersja",tZ="Środa",sZ="Szerokość",iZ="Tak",rZ="różne",oZ="Każdy może czytać obiekt",MZ="Każdy może czytać stan",nZ="Każdy może pisać przedmiot",aZ="Każdy może pisać stan",cZ="Grupa może odczytać obiekt",uZ="Grupa może odczytać stan",lZ="Grupa może pisać obiekt",NZ="Grupa może pisać stan",LZ="Właściciel może czytać obiekt",jZ="Właściciel może odczytać stan",gZ="Właściciel może napisać obiekt",TZ="Właściciel może pisać stan",yZ="guziki",DZ="Zmieniony z",dZ="blisko",zZ="Utwórz stan logiczny",hZ="Utwórz kanał",IZ="Utwórz urządzenie",wZ="Utwórz stan liczbowy",CZ="Utwórz stan",AZ="Utwórz stan ciągu",mZ="d.",pZ="Ks",OZ="Mo",EZ="Sa",_Z="Su",fZ="Th",SZ="Tu",xZ="My",kZ="Tryb ekspercki",YZ="FAŁSZ",QZ="Wszystkie pliki",vZ="Audio",UZ="Kod/JSON",bZ="Obrazy",$Z="Tekst",PZ="Wideo",WZ="Ustawienia",RZ="bez",JZ="Funkcjonować",BZ="ID",GZ="Imię",FZ="Rola",HZ="Sala",VZ="Rodzaj",ZZ="Nieprawidłowe ustawienia",XZ="Ostatnia zmiana",KZ="lokalnie",qZ="kwiecień",eX="sierpień",tX="grudzień",sX="luty",iX="styczeń",rX="lipiec",oX="czerwiec",MX="Mai",nX="Zniszczyć",aX="listopad",cX="październik",uX="wrzesień",lX="kwiecień",NX="sierpień",LX="grudzień",jX="luty",gX="styczeń",TX="lipiec",yX="czerwiec",DX="Mai",dX="Zniszczyć",zX="listopad",hX="październik",IX="wrzesień",wX="Żaden",CX="Obiekt zmieniony przez",AX="Obiekt ostatnio zmieniony o godz",mX="Ustawienia z innego adaptera %s",pX="Kod jakości",OX="powtarzać",EX="Aby wybrać folder, wystarczy przytrzymać klawisz „shift”, klikając folder.",_X="Pokaż wszystko",fX="Stan zmieniony przez",SX="Obiekt zmieniony z",xX="Znak czasu",kX="Potwierdzon",YX="Komentarz",QX="Skopiuj wartość stanu",vX="Przytrzymaj klawisz CTRL/⌘, aby otworzyć link",UX="Własne ustawienia",bX="Usuń obiekt",$X="Edytuj obiekt",PX="Edytuj wartość stanu",WX="Wygasa za",RX="Z",JX="Ostatnia zmiana",BX="Jakość",GX="Znak czasu",FX="Użytkownik",HX="Wartość",VX="PRAWDA",ZX="Wartość",XX="Ostrzeżenie: Zadanie CRON będzie uruchamiane co minutę w określonym przedziale czasowym!",KX="Ostrzeżenie: Zadanie CRON będzie uruchamiane co sekundę w określonym przedziale czasowym!",qX="CRON",eK="Data",tK="Daktyle",sK="Dzień",iK="Dzień tygodnia",rK="Każdy",oK="co N dni",MK="w każdy N-ty dzień tygodnia",nK="co N dnia tygodnia",aK="co N godzin",cK="co N minut",uK="co N miesięcy",lK="co N sekund",NK="codziennie",LK="każdy dzień tygodnia",jK="każdy dzień tygodnia",gK="co godzinę",TK="każda minuta",yK="każdego miesiąca",DK="każda sekunda",dK="Od",zK="godziny",hK="Interwał",IK="Interwał między",wK="Nieprawidłowy CRON",CK="Minuty",AK="miesięcy",mK="Pewnego razu",pK="Kropka",OK="sekundy",EK="Prosty",_K="Określony czas",fK="konkretne daty",SK="określone dni tygodnia",xK="określony dzień tygodni",kK="określone godziny",YK="określone minuty",QK="określone miesiące",vK="określone sekundy",UK="Czas",bK="Do",$K="Czarodziej",PK="wszystko",WK="Dzień Astro",RK="Noc Astro",JK="Świt",BK="Zmierzch",GK="Złota godzina",FK="Koniec złotej godziny",HK="Północ",VK="Morski świt",ZK="Morski zmierzch",XK="Noc",KK="Koniec nocy",qK="Południe słoneczne",eq="Wschód słońca",tq="Koniec wschodu słońca",sq="Zachód słońca",iq="Początek zachodu słońca",rq="w",oq="na %s",Mq="codziennie",nq="co godzinę",aq="każda minuta",cq="każdego miesiąca",uq="każdego dnia %s",lq="co %s godzin",Nq="co %s minut",Lq="co %s miesięcy",jq="co %s tygodni",gq="co %s lat",Tq="co tydzień",yq="każdego roku",Dq="od %s do %s",dq="nigdy",zq="na %s z %s",hq="na %s i %s z",Iq="w każdą datę",wq="%s",Cq="%s i %s",Aq="na %s",mq="na %s i %s",pq="w weekendy",Oq="w dni robocze",Eq="nie będzie już wykonywany, ponieważ start jest w przeszłości",_q="na %s",fq="z %s",Sq="Wykonaj od do",xq="do %s",kq="każdy",Yq="Określony czas",Qq="od",vq="Od-do",Uq="Czas przerwy",bq="odwracać",$q="Żaden",Pq="na",Wq="Kropka",Rq="Codziennie",Jq="Daktyle",Bq="Dzień",Gq="Każdy",Fq="Codziennie",Hq="Każdego miesiąca",Vq="Co tydzień",Zq="Każdego roku",Xq="godziny",Kq="Minuty",qq="miesiąc",eee="Miesięczny",tee="Pewnego razu",see="Określone miesiące",iee="Tydzień",ree="Dni powszednie",oee="Weekend",Mee="Co tydzień",nee="Dni robocze",aee="Rok",cee="Rocznie",uee="Określony czas",lee="Czas",Nee="do",Lee="Ważny",jee="od",gee="do",Tee="Cały dzień",yee="każdego miesiąca",Dee={"ra_%s links from aliases":"%s linków z aliasów","ra_%s object(s) processed":"Przetworzono %s obiektów","ra_%s was imported":"%s został zaimportowany","ra_Accept license":"Zaakceptuj licencję",ra_Actions:cV,"ra_Add new child object to selected parent":"Dodaj nowy obiekt potomny do wybranego rodzica","ra_Add objects tree from JSON file":"Dodaj drzewo obiektów z pliku JSON","ra_Add row":"Dodaj wiersz","ra_Advanced options":"Zaawansowane opcje","ra_All items are filtered out":"Wszystkie pozycje są odfiltrowane","ra_All objects":"Wszystkie obiekty",ra_Append:uV,"ra_Append %s entries or replace existing?":"Dołączyć wpisy %s czy zastąpić istniejące?","ra_Append or replace?":"Dołączyć czy zastąpić?","ra_Are you sure?":"Jesteś pewny?","ra_Auto (no custom columns)":"Auto (bez kolumn niestandardowych)","ra_Back to %s":"Powrót do %s","ra_Background image":"Zdjęcie w tle",ra_Cancel:lV,"ra_Cannot add items with set filter":"Nie można dodać elementów z ustawionym filtrem","ra_Cannot decode license":"Nie można zdekodować licencji","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Nie można określić pozycji: ustawienia systemu są puste, a wykrywanie GPS jest wyłączone w przeglądarce",'ra_Cannot find "%s"':"Nie można znaleźć „%s”",'ra_Cannot read "%s"':"Nie można odczytać „%s”","ra_Cannot read licenses: %s":"Nie można odczytać licencji: %s","ra_Cannot retrieve options, as instance is offline":"Nie można pobrać opcji, ponieważ instancja jest w trybie offline","ra_Cannot update attribute, because not found in the object":"Nie można zaktualizować atrybutu, ponieważ nie znaleziono go w obiekcie","ra_Cannot upload":"Nie można przesłać",ra_Categories:NV,"ra_Chained certificate":"Certyfikat łańcuchowy","ra_Change color theme":"Zmień motyw kolorystyczny","ra_Changed from":"Zmieniony z","ra_Channel → State":"Kanał → Stan","ra_Check license":"Sprawdź licencję",ra_Checked:LV,ra_Clear:jV,"ra_Clear filter":"Czysty filtr","ra_Clear icon":"Wyczyść ikonę","ra_Click to see in full size":"Kliknij, aby zobaczyć w pełnym rozmiarze","ra_Click to show":"Kliknij, aby pokazać","ra_Clone current row":"Sklonuj bieżący wiersz",ra_Close:gV,"ra_Collapse all nodes":"Zwiń wszystkie węzły","ra_Collapse one step node":"Zwiń o jeden poziom",ra_Commercial:TV,ra_Configure:yV,"ra_Configure visible columns":"Skonfiguruj widoczne kolumny","ra_Confirm deletion of %s":"Potwierdź usunięcie %s",ra_Connected:DV,ra_Continue:dV,ra_Copied:zV,"ra_Copied %s":'Skopiowano "%s"',"ra_Copy content":"Kopiuj zawartość",ra_Create:hV,"ra_Create alias":"Utwórz alias","ra_Create folder":"Utwórz folder","ra_Create new folder in %s":"Utwórz nowy folder w %s",ra_Crop:IV,"ra_Define CRON...":"Zdefiniuj CRON...","ra_Define functions":"Zdefiniuj funkcje","ra_Define rooms":"Zdefiniuj pokoje","ra_Define schedule":"Zdefiniuj harmonogram","ra_Define schedule...":"Zdefiniuj harmonogram ...",ra_Del:wV,ra_Delete:CV,"ra_Delete current row":"Usuń bieżący wiersz","ra_Deselect all":"Odznacz wszystko","ra_Device → Channel → State":"Urządzenie → Kanał → Stan","ra_Disable/Enable translation":"Wyłącz/Włącz tłumaczenie",ra_Discard:AV,ra_Disconnected:mV,"ra_Do not ask for next 2 hours in this session":"Nie proś o kolejne 2 godziny w tej sesji","ra_Do not export values of states":"Nie eksportuj wartości stanów","ra_Do not use let's encrypt":"Nie używaj zaszyfrujmy","ra_Docker is not available":"Docker nie jest dostępny","ra_Docker is not installed or not running":"Docker nie jest zainstalowany lub nie działa","ra_Double click to reset table layout":"Kliknij dwukrotnie, aby zresetować układ tabeli","ra_Drag 'n' drop some files here, or click to select files":"Przeciągnij i upuść kilka plików tutaj lub kliknij, aby wybrać pliki","ra_Drop file here":"Upuść plik tutaj","ra_Drop the files here...":"Upuść plik tutaj...","ra_Duplicate name":"Zduplikowana nazwa","ra_Edit ACL":"Edytuj listy ACL","ra_Edit alias":"Edytuj alias","ra_Edit custom config":"Edytuj konfigurację niestandardową","ra_Edit full path":"Edytuj pełną ścieżkę","ra_Edit function":"Funkcja edycji","ra_Edit object field":"Edytuj pole obiektu","ra_Edit role":"Edytuj rolę","ra_Edit room":"Edytuj pokój","ra_Edit value":"Edytuj wartość","ra_Enter the code from that page here":"Wpisz kod z tej strony tutaj",ra_Error:pV,"ra_Expand all nodes":"Rozwiń wszystkie węzły","ra_Expand one step node":"Rozwiń o jeden poziom","ra_Expand/Collapse card":"Rozwiń/Zwiń kartę","ra_Export configuration section":"Sekcja konfiguracji eksportu","ra_Export data to %s file":"Eksportuj dane do pliku %s","ra_Failed to open JSON File":"Nie udało się otworzyć pliku JSON","ra_Fallback custom certificates":"Niestandardowe certyfikaty zastępcze","ra_File is too big. Max %sk allowed. Try use SVG.":"Plik jest za duży. Maksymalna dozwolona liczba %sk. Spróbuj użyć SVG.",ra_Filter:OV,"ra_Filter and Data Actions":"Akcje filtrów i danych","ra_Filter files":"Filtruj pliki","ra_Folder name":"Nazwa folderu","ra_Folder → Channel → State":"Folder → Kanał → Stan","ra_Folder → Device → Channel → State":"Folder → Urządzenie → Kanał → Stan","ra_Folder → State":"Folder → Stan","ra_Folders always first":"Foldery zawsze na pierwszym miejscu",ra_Friday:EV,"ra_From file":"Z pliku","ra_From text":"Z tekstu","ra_Get %s access":"Uzyskaj dostęp %s","ra_Good luck":"Powodzenia","ra_Hide empty folders":"Ukryj puste foldery","ra_If no file will be created in the folder, it will disappear after the browser closed":"Jeśli w folderze nie zostanie utworzony żaden plik, zniknie on po zamknięciu przeglądarki","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Jeśli przycisk powyżej nie działa, możesz autoryzować tę aplikację ręcznie, odwiedzając ten adres URL","ra_Import and add configuration section":"Importuj i dodaj sekcję konfiguracji","ra_Import and replace configuration section":"Importuj i zastąp sekcję konfiguracji","ra_Import data from %s file":"Importuj dane z pliku %s","ra_Import from %s":"Importuj z %s","ra_Instance %s is alive":"Instancja %s jest aktywna","ra_Instance %s is not alive":"Instancja TEKST nie jest aktywna","ra_Instance is not alive":"Instancja nie jest aktywna","ra_Invalid CRON":"Nieprawidłowy CRON","ra_Invalid JSON":"Nieprawidłowy JSON","ra_Invalid JSON file.":"Nieprawidłowy plik JSON.","ra_Invalid JSON format. Expected an array.":"Nieprawidłowy format JSON. Oczekiwano tablicy.","ra_Invalid answer from server":"Nieprawidłowa odpowiedź z serwera","ra_Invalid parent folder!":"Nieprawidłowy folder nadrzędny!","ra_Invalid structure":"Nieprawidłowa struktura","ra_JSON editor":"Edytor JSON","ra_Last change":"Ostatnia zmiana",ra_Latitude:_V,"ra_License %s":"Licencja %s","ra_License agreement":"Umowa licencyjna","ra_License does not exist":"Licencja nie istnieje","ra_License expired on %s":"Licencja wygasła w dniu %s",'ra_License for other product "%s"':"Licencja na inny produkt „%s”","ra_License is for version %s, but required version is %s.":"Licencja dotyczy wersji %s, ale wymagana wersja to %s.","ra_License must be converted":"Licencja musi zostać przekonwertowana na nowszą wersję. Możesz to zrobić w swoim profilu iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Nie znaleziono licencji w menedżerze licencji. Chcesz zaktualizować licencje z iobroker.net?","ra_Listen on all IPs":"Słuchaj na wszystkich adresach IP","ra_Load configuration from file":"Załaduj konfigurację z pliku",ra_Logout:fV,ra_Longitude:SV,'ra_May not trigger "updateLicenses"':"Może nie uruchamiać „updateLicenses”",ra_Message:xV,ra_Monday:kV,"ra_Move down":"Padnij","ra_Move up":"Podnieść",ra_Name:YV,"ra_No data found in file":"Nie znaleziono danych w pliku","ra_No one license found in license manager":"Nie znaleziono licencji w menedżerze licencji","ra_No response from admin":"Brak odpowiedzi od administratora","ra_No response from the backend":"Brak odpowiedzi z zaplecza",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Osoby nie będące ekspertami mogą tworzyć nowe obiekty tylko w „0_userdata.0” lub „alias.0”.","ra_Not a number":"Nie numer","ra_OAuth Client ID":"Identyfikator klienta OAuth","ra_OAuth Client secret":"Tajny klucz klienta OAuth",ra_Objects:QV,ra_Ok:vV,"ra_On weekdays":"W dni powszednie","ra_Only following structures of objects are available:":"Dostępne są tylko następujące struktury obiektów:","ra_Only selected":"Tylko wybrane","ra_Owner group":"Grupa właścicieli","ra_Owner user":"Właściciel użytkownika","ra_Passwords are not equal!":"Hasła nie są równe!","ra_Place your files here or click here to open the browse dialog":"Umieść swoje pliki tutaj lub kliknij tutaj, aby otworzyć okno dialogowe przeglądania","ra_Please allow popups in your browser for this page!":"Proszę zezwolić na wyświetlanie wyskakujących okienek w przeglądarce dla tej strony!","ra_Please confirm":"Proszę potwierdzić","ra_Please create license":"Utwórz licencję","ra_Please enter the license":"Proszę wprowadzić licencję","ra_Please select file...":"Wybierz plik...","ra_Please select object ID...":"Wybierz identyfikator obiektu ...","ra_Port could be used by %s":"Port może być używany przez %s","ra_Port is already used by %s":"Port jest już używany przez %s","ra_Press ENTER Key to add new item":"Naciśnij klawisz ENTER, aby dodać nowy element","ra_Private certificate":"Prywatny certyfikat",ra_Product:UV,"ra_Public certificate":"Certyfikat publiczny","ra_Quality code":"Jakości","ra_Refresh tree":"Odśwież drzewo","ra_Reload files":"Załaduj ponownie pliki",ra_Rename_Move_Copy:bV,"ra_Renew %s access":"Odnów dostęp %s",ra_Repeat:$V,ra_Replace:PV,"ra_Request timed out":"Upłynął limit czasu żądania","ra_Restrict to folder":"Ogranicz do folderu",ra_Root:WV,ra_Saturday:RV,ra_Save:JV,"ra_Save and close":"Zapisz i zamknij","ra_Save configuration to file":"Zapisz konfigurację do pliku","ra_Save objects tree as JSON file":"Zapisz drzewo obiektów jako plik JSON","ra_Select all":"Zaznacz wszystko","ra_Select color":"Wybierz kolor","ra_Select predefined icon":"Wybierz predefiniowaną ikonę","ra_Select type of export":"Wybierz rodzaj eksportu",ra_Selected:BV,"ra_Selected %s object(s)":"Wybrane obiekty %s","ra_Serial number (UUID)":"Numer seryjny (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Numer seryjny (UUID) „%s” w licencji dotyczy innego urządzenia.","ra_Session will expire in %s seconds. Continue?":"Sesja wygaśnie za %s sekund. Kontynuować?","ra_Show all folders":"Pokaż wszystkie foldery","ra_Show lines between rows":"Pokaż linie między rzędami","ra_Show/Hide object descriptions":"Pokaż/ukryj opisy obiektów","ra_Show/hide filter input":"Pokaż/ukryj wejście filtra","ra_Some data are not stored. Discard?":"Niektóre dane nie są przechowywane. Wyrzucać?",ra_States:GV,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Pomyślnie autoryzowano. Token ważny do %s i zostanie automatycznie odnowiony.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Pomyślnie autoryzowano. Token ważny do %s, ale może wygasnąć, ponieważ instancja nie jest uruchomiona.","ra_Suitable license not found in license manager":"Nie znaleziono odpowiedniej licencji w menedżerze licencji",ra_Sunday:FV,"ra_Suppress question for next %s minutes":"Ukryj pytanie przez następne %s minut","ra_System language":"Język systemu","ra_Take browser position":"Zajmij pozycję z przeglądarki","ra_Take position from system settings":"Zajmij pozycję z ustawień systemowych",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Eksperci mogą tworzyć obiekty wszędzie poza drugim poziomem (np. „Vis.0” lub „javascript.0”).","ra_The page you are looking for was not found":"Strona, której szukasz nie została znaleziona","ra_The schedule will be executed every minute. Are you sure?":"Harmonogram będzie wykonywany co minutę. Czy jesteś pewien?","ra_The schedule will be executed every second. Are you sure?":"Harmonogram będzie wykonywany co sekundę. Czy jesteś pewien?",ra_Thursday:HV,ra_Timestamp:VV,"ra_Toggle expert mode":"Przełącz tryb eksperta","ra_Toggle the states view":"Przełącz widok stanów","ra_Toggle view mode":"Przełącz tryb widoku","ra_Too big":"Za duży","ra_Too small":"Za mały","ra_Transparent dialog":"Przejrzyste okno dialogowe",ra_Tuesday:ZV,"ra_Unknown error":"Nieznany błąd","ra_Unknown error!":"Nieznany błąd!",ra_Update:XV,"ra_Upload file":"Przesyłanie pliku","ra_Use all available let's encrypt certificates":"Użyj wszystkich dostępnych certyfikatów Let's Encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Użyj adaptera iobroker.acme dla certyfikatów letsencrypt","ra_Use system settings for position":"Użyj ustawień systemowych dla pozycji","ra_Used system settings":"Używane ustawienia systemowe","ra_User files":"Pliki użytkownika",ra_ValidTill:KV,ra_Value:qV,ra_Version:eZ,"ra_View file":"Zobaczyć plik","ra_View: %s":"Widok: %s",ra_Wednesday:tZ,ra_Width:sZ,"ra_YAML editor":"Edytor YAML",ra_Yes:iZ,"ra_You can export all objects or just the selected branch.":"Możesz wyeksportować wszystkie obiekty lub tylko wybraną gałąź.","ra_You can filter entries by entering here some text":"Możesz filtrować wpisy, wpisując tutaj jakiś tekst","ra_You can use * as wildcard":"Możesz użyć * jako symbolu wieloznacznego",ra___different__:rZ,ra_aclEveryone_read_object:oZ,ra_aclEveryone_read_state:MZ,ra_aclEveryone_write_object:nZ,ra_aclEveryone_write_state:aZ,ra_aclGroup_read_object:cZ,ra_aclGroup_read_state:uZ,ra_aclGroup_write_object:lZ,ra_aclGroup_write_state:NZ,ra_aclOwner_read_object:LZ,ra_aclOwner_read_state:jZ,ra_aclOwner_write_object:gZ,ra_aclOwner_write_state:TZ,ra_buttons:yZ,ra_changedFrom:DZ,ra_close:dZ,ra_create_boolean_state:zZ,ra_create_channel:hZ,ra_create_device:IZ,ra_create_number_state:wZ,ra_create_state:CZ,ra_create_string_state:AZ,ra_daysShortText:mZ,ra_dow_Fr:pZ,ra_dow_Mo:OZ,ra_dow_Sa:EZ,ra_dow_Su:_Z,ra_dow_Th:fZ,ra_dow_Tu:SZ,ra_dow_We:xZ,ra_expertMode:kZ,ra_false:YZ,ra_fileType_all:QZ,ra_fileType_audio:vZ,ra_fileType_code:UZ,ra_fileType_images:bZ,ra_fileType_txt:$Z,ra_fileType_video:PZ,"ra_fileType_video,":"Wideo",ra_filter_customs:WZ,ra_filter_customs_without:RZ,ra_filter_func:JZ,ra_filter_id:BZ,ra_filter_name:GZ,ra_filter_role:FZ,ra_filter_room:HZ,ra_filter_type:VZ,"ra_import data from %s file":"Importuj dane z pliku %s",ra_invalidConfig:ZZ,ra_lastChange:XZ,ra_locally:KZ,ra_month_Apr:qZ,ra_month_Aug:eX,ra_month_Dec:tX,ra_month_Feb:sX,ra_month_Jan:iX,ra_month_Jul:rX,ra_month_Jun:oX,ra_month_Mai:MX,ra_month_Mar:nX,ra_month_Nov:aX,ra_month_Oct:cX,ra_month_Sep:uX,ra_months_Apr:lX,ra_months_Aug:NX,ra_months_Dec:LX,ra_months_Feb:jX,ra_months_Jan:gX,ra_months_Jul:TX,ra_months_Jun:yX,ra_months_Mai:DX,ra_months_Mar:dX,ra_months_Nov:zX,ra_months_Oct:hX,ra_months_Sep:IX,"ra_no confirm for 5 mins":"brak potwierdzenia przez 5 minut",ra_none:wX,ra_object_changed_by:CX,ra_object_changed_by_user:AX,ra_otherConfig:mX,ra_qualityCode:pX,ra_repeat:OX,ra_select_folder_hint:EX,ra_show_all:_X,ra_state_changed_by:fX,ra_state_changed_from:SX,ra_timestamp:xX,ra_tooltip_ack:kX,ra_tooltip_comment:YX,ra_tooltip_copyState:QX,ra_tooltip_ctrlForLink:vX,ra_tooltip_customConfig:UX,ra_tooltip_deleteObject:bX,ra_tooltip_editObject:$X,ra_tooltip_editState:PX,ra_tooltip_expire:WX,ra_tooltip_from:RX,ra_tooltip_lc:JX,ra_tooltip_quality:BX,ra_tooltip_ts:GX,ra_tooltip_user:FX,ra_tooltip_value:HX,ra_true:VX,"ra_use seconds":"użyj sekund",ra_val:ZX,"ra_via internet":"przez internet",ra_warning_every_minute:XX,ra_warning_every_second:KX,sc_cron:qX,sc_date:eK,sc_dates:tK,sc_dow:sK,sc_dows:iK,sc_every:rK,sc_everyN_dates:oK,sc_everyN_dow:MK,sc_everyN_dows:nK,sc_everyN_hours:aK,sc_everyN_minutes:cK,sc_everyN_months:uK,sc_everyN_seconds:lK,sc_every_dates:NK,sc_every_dow:LK,sc_every_dows:jK,sc_every_hours:gK,sc_every_minutes:TK,sc_every_months:yK,sc_every_seconds:DK,sc_from:dK,sc_hours:zK,sc_interval:hK,sc_intervalBetween:IK,sc_invalid_cron:wK,sc_minutes:CK,sc_months:AK,sc_once:mK,sc_period:pK,sc_seconds:OK,sc_simple:EK,sc_specific:_K,sc_specific_dates:fK,sc_specific_dow:SK,sc_specific_dows:xK,sc_specific_hours:kK,sc_specific_minutes:YK,sc_specific_months:QK,sc_specific_seconds:vK,sc_time:UK,sc_to:bK,sc_wizard:$K,sch_all:PK,sch_astroDay:WK,sch_astroNight:RK,sch_astro_dawn:JK,sch_astro_dusk:BK,sch_astro_goldenHour:GK,sch_astro_goldenHourEnd:FK,sch_astro_nadir:HK,sch_astro_nauticalDawn:VK,sch_astro_nauticalDusk:ZK,sch_astro_night:XK,sch_astro_nightEnd:KK,sch_astro_solarNoon:qK,sch_astro_sunrise:eq,sch_astro_sunriseEnd:tq,sch_astro_sunset:sq,sch_astro_sunsetStart:iq,sch_at:rq,sch_desc_atTime:oq,sch_desc_everyDay:Mq,sch_desc_everyHour:nq,sch_desc_everyMinute:aq,sch_desc_everyMonth:cq,sch_desc_everyNDay:uq,sch_desc_everyNHours:lq,sch_desc_everyNMinutes:Nq,sch_desc_everyNMonths:Lq,sch_desc_everyNWeeks:jq,sch_desc_everyNYears:gq,sch_desc_everyWeek:Tq,sch_desc_everyYear:yq,sch_desc_intervalFromTo:Dq,sch_desc_never:dq,sch_desc_onDate:zq,sch_desc_onDates:hq,sch_desc_onEveryDate:Iq,sch_desc_onMonth:wq,sch_desc_onMonths:Cq,sch_desc_onWeekday:Aq,sch_desc_onWeekdays:mq,sch_desc_onWeekends:pq,sch_desc_onWorkdays:Oq,sch_desc_onceInPast:Eq,sch_desc_once_on:_q,sch_desc_validFrom:fq,sch_desc_validFromTo:Sq,sch_desc_validTo:xq,sch_every:kq,sch_exactTime:Yq,sch_from:Qq,sch_fromTo:vq,sch_intervalTime:Uq,sch_invert:bq,sch_no_one:$q,sch_on:Pq,sch_period:Wq,sch_periodDaily:Rq,sch_periodDates:Jq,sch_periodDay:Bq,sch_periodEvery:Gq,sch_periodEveryDay:Fq,sch_periodEveryMonth:Hq,sch_periodEveryWeek:Vq,sch_periodEveryYear:Zq,sch_periodHours:Xq,sch_periodMinutes:Kq,sch_periodMonth:qq,sch_periodMonthly:eee,sch_periodOnce:tee,sch_periodSpecificMonths:see,sch_periodWeek:iee,sch_periodWeekdays:ree,sch_periodWeekend:oee,sch_periodWeekly:Mee,sch_periodWorkdays:nee,sch_periodYear:aee,sch_periodYearly:cee,sch_specificTime:uee,sch_time:lee,sch_to:Nee,sch_valid:Lee,sch_validFrom:jee,sch_validTo:gee,sch_wholeDay:Tee,sch_yearEveryMonth:yee},dee="Дії",zee="Додайте",hee="Скасувати",Iee="Категорії",wee="Перевірено",Cee="Видалити",Aee="Закрити",mee="Комерційний",pee="Налаштувати",Oee="Підключено",Eee="Продовжити",_ee="Скопійовано",fee="Створити",See="Урожай",xee="Delete",kee="Видалити",Yee="Відкинути",Qee="Відключено",vee="Помилка",Uee="фільтр",bee="П'ятниця",$ee="Широта",Pee="Вийти",Wee="Довгота",Ree="повідомлення",Jee="понеділок",Bee="Ім'я",Gee="Об'єкти",Fee="В порядку",Hee="Продукт",Vee="Перейменувати/Перемістити/Копіювати",Zee="Повторіть",Xee="Замінити",Kee="Корінь",qee="Субота",ete="зберегти",tte="Вибране",ste="держави",ite="неділя",rte="четвер",ote="Мітка часу",Mte="вівторок",nte="оновлення",ate="Дійсний до",cte="Значення",ute="Версія",lte="Середа",Nte="Ширина",Lte="Так",jte="інший",gte="Кожен може читати об'єкт",Tte="Кожен може читати стан",yte="Кожен може написати об'єкт",Dte="Кожен може написати стан",dte="Група може читати об'єкт",zte="Група може читати стан",hte="Група може писати об'єкт",Ite="Група може писати стан",wte="Власник може читати об'єкт",Cte="Власник може читати стан",Ate="Власник може написати об'єкт",mte="Власник може написати стан",pte="кнопки",Ote="Змінено з",Ete="закрити",_te="Створіть логічний стан",fte="Створити канал",Ste="Створити пристрій",xte="Створити номерний стан",kte="Створити состояние",Yte="Створити рядковий стан",Qte="днів",vte="О",Ute="пн",bte="Sa",$te="Нд",Pte="чт",Wte="вт",Rte="ми",Jte="Експертний режим",Bte="НЕПРАВДА",Gte="Всі файли",Fte="Аудіо",Hte="Код/JSON",Vte="Зображення",Zte="текст",Xte="відео",Kte="Налаштування",qte="без",ese="функція",tse="ID",sse="Ім'я",ise="Роль",rse="Кімната",ose="Тип",Mse="Недійсні налаштування",nse="Остання зміна",ase="локально",cse="квіт",use="серп",lse="груд",Nse="лютий",Lse="січня",jse="лип",gse="черв",Tse="травень",yse="березень",Dse="Листопад",dse="жовт",zse="вер",hse="квіт",Ise="серп",wse="груд",Cse="лютий",Ase="січня",mse="лип",pse="черв",Ose="травень",Ese="березень",_se="Листопад",fse="жовт",Sse="вер",xse="немає",kse="Об'єкт змінено",Yse="Об'єкт востаннє змінено о",Qse="Налаштування з іншого адаптера %s",vse="Код якості",Use="повторити",bse="Щоб вибрати папку, просто клацніть папку, утримуючи клавішу «Shift».",$se="Показати все",Pse="Стан змінено на",Wse="Об'єкт змінено з",Rse="Мітка часу",Jse="Визнано",Bse="коментар",Gse="Скопіюйте значення стану",Fse="Утримуйте клавішу Cltr/⌘, щоб відкрити посилання",Hse="Спеціальні налаштування",Vse="Видалити об'єкт",Zse="Редагувати об'єкт",Xse="Відредагуйте значення стану",Kse="Термін дії закінчується через",qse="Від",eie="Востаннє змінено",tie="якість",sie="Позначка часу",iie="Користувач",rie="Значення",oie="ПРАВДА",Mie="Значення",nie="Попередження: завдання CRON виконуватиметься щохвилини протягом зазначеного періоду!",aie="Попередження: завдання CRON виконуватиметься кожну секунду протягом зазначеного періоду!",cie="CRON",uie="Дата",lie="дати",Nie="День",Lie="День тижня",jie="кожен",gie="кожні N днів",Tie="кожен N-й день тижня",yie="кожні N днів тижня",Die="кожні N годин",die="кожні N хвилин",zie="кожні N місяців",hie="кожні N секунд",Iie="кожен день",wie="кожен день тижня",Cie="кожен день тижня",Aie="щогодини",mie="кожну хвилину",pie="щомісяця",Oie="кожна секунда",Eie="Від",_ie="години",fie="Інтервал",Sie="Інтервал між",xie="Недійсний CRON",kie="хвилин",Yie="місяців",Qie="Один раз",vie="Крапка",Uie="секунд",bie="просто",$ie="Конкретний час",Pie="конкретні дати",Wie="конкретний день (дні) тижня",Rie="конкретний день тижня",Jie="конкретні години",Bie="конкретні хвилини",Gie="конкретні місяці",Fie="конкретні секунди",Hie="час",Vie="до",Zie="майстер",Xie="все",Kie="Астродень",qie="Астро ніч",ere="Світанок",tre="Сутінки",sre="Золота година",ire="Кінець золотої години",rre="Надір",ore="Морський світанок",Mre="Морські сутінки",nre="ніч",are="Кінець ночі",cre="Сонячний полудень",ure="Схід сонця",lre="Кінець сходу сонця",Nre="Захід сонця",Lre="Початок заходу сонця",jre="в",gre="в %s",Tre="кожен день",yre="щогодини",Dre="кожну хвилину",dre="щомісяця",zre="кожен %s день",hre="кожні %s годин",Ire="кожні %s хвилин",wre="кожні %s місяців",Cre="кожні %s тижнів",Are="кожні %s років",mre="щотижня",pre="щороку",Ore="від %s до %s",Ere="ніколи",_re="на %s з %s",fre="на %s і %s з",Sre="на кожну дату",xre="%s",kre="%s і %s",Yre="на %s",Qre="на %s і %s",vre="на вихідних",Ure="в робочі дні",bre="більше не виконуватиметься, оскільки запуск у минулому",$re="на %s",Pre="від %s",Wre="Виконати від до",Rre="до %s",Jre="кожен",Bre="Конкретний час",Gre="від",Fre="Від до",Hre="Час інтервалу",Vre="інвертувати",Zre="немає",Xre="на",Kre="Крапка",qre="Щодня",eoe="дати",toe="День",soe="кожен",ioe="Кожен день",roe="Щомісяця",ooe="Щотижня",Moe="Щороку",noe="години",aoe="хвилин",coe="місяць",uoe="Щомісяця",loe="Один раз",Noe="Конкретні місяці",Loe="тиждень",joe="будні",goe="Вихідні",Toe="Щотижня",yoe="робочі дні",Doe="рік",doe="щорічно",zoe="Конкретний час",hoe="час",Ioe="до",woe="Дійсний",Coe="від",Aoe="до",moe="Цілий день",poe="щомісяця",Ooe={"ra_%s links from aliases":"%s посилань із псевдонімів","ra_%s object(s) processed":"Оброблено %s об’єктів","ra_%s was imported":"%s було імпортовано","ra_Accept license":"Прийняти ліцензію",ra_Actions:dee,"ra_Add new child object to selected parent":"Додати новий дочірній об’єкт до вибраного батьківського","ra_Add objects tree from JSON file":"Додайте дерево об’єктів із файлу JSON","ra_Add row":"Додати рядок","ra_Advanced options":"Розширені опції","ra_All items are filtered out":"Усі елементи відфільтровано","ra_All objects":"Всі об'єкти",ra_Append:zee,"ra_Append %s entries or replace existing?":"Додати %s записів чи замінити наявні?","ra_Append or replace?":"Додати чи замінити?","ra_Are you sure?":"Ти впевнений?","ra_Auto (no custom columns)":"Автоматично (без спеціальних стовпців)","ra_Back to %s":"Назад до %s","ra_Background image":"Фонове зображення",ra_Cancel:hee,"ra_Cannot add items with set filter":"Неможливо додати елементи зі встановленим фільтром","ra_Cannot decode license":"Неможливо розшифрувати ліцензію","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Неможливо визначити положення: системні налаштування порожні, а визначення GPS вимкнено в браузері",'ra_Cannot find "%s"':'Не вдається знайти "%s"','ra_Cannot read "%s"':'Неможливо прочитати "%s"',"ra_Cannot read licenses: %s":"Неможливо прочитати ліцензії: %s","ra_Cannot retrieve options, as instance is offline":"Неможливо отримати параметри, оскільки екземпляр офлайн","ra_Cannot update attribute, because not found in the object":"Неможливо оновити атрибут, оскільки його не знайдено в об’єкті","ra_Cannot upload":"Неможливо завантажити",ra_Categories:Iee,"ra_Chained certificate":"Прикутий сертифікат","ra_Change color theme":"Змінити кольорову тему","ra_Changed from":"Змінено з","ra_Channel → State":"Канал → Стан","ra_Check license":"Перевірити ліцензію",ra_Checked:wee,ra_Clear:Cee,"ra_Clear filter":"Очистити фільтр","ra_Clear icon":"Очистити значок","ra_Click to see in full size":"Натисніть, щоб побачити в повному розмірі","ra_Click to show":"Натисніть, щоб показати","ra_Clone current row":"Клонувати поточний рядок",ra_Close:Aee,"ra_Collapse all nodes":"Згорнути всі вузли","ra_Collapse one step node":"Згорнути на один рівень",ra_Commercial:mee,ra_Configure:pee,"ra_Configure visible columns":"Налаштувати видимі стовпці","ra_Confirm deletion of %s":"Підтвердити видалення %s",ra_Connected:Oee,ra_Continue:Eee,ra_Copied:_ee,"ra_Copied %s":'Скопійовано "%s"',"ra_Copy content":"Скопіюйте вміст",ra_Create:fee,"ra_Create alias":"Створити псевдонім","ra_Create folder":"Створити папку","ra_Create new folder in %s":"Створіть нову папку в %s",ra_Crop:See,"ra_Define CRON...":"Визначити CRON...","ra_Define functions":"Визначити функції","ra_Define rooms":"Визначте кімнати","ra_Define schedule":"Визначити розклад","ra_Define schedule...":"Визначити розклад...",ra_Del:xee,ra_Delete:kee,"ra_Delete current row":"Видалити поточний рядок","ra_Deselect all":"Скасувати вибір усіх","ra_Device → Channel → State":"Пристрій → Канал → Стан","ra_Disable/Enable translation":"Вимкнути/Увімкнути переклад",ra_Discard:Yee,ra_Disconnected:Qee,"ra_Do not ask for next 2 hours in this session":"Не запитуйте про наступні 2 години цього сеансу","ra_Do not export values of states":"Не експортуйте значення станів","ra_Do not use let's encrypt":"Не використовуйте let's encrypt","ra_Docker is not available":"Докер недоступний","ra_Docker is not installed or not running":"Docker не встановлено або не працює","ra_Double click to reset table layout":"Двічі клацніть, щоб скинути макет таблиці","ra_Drag 'n' drop some files here, or click to select files":"Перетягніть деякі файли сюди або натисніть, щоб вибрати файли","ra_Drop file here":"Перетягніть файл сюди","ra_Drop the files here...":"Перетягніть файл сюди...","ra_Duplicate name":"Повторюване ім'я","ra_Edit ACL":"Редагувати ACL","ra_Edit alias":"Редагувати псевдонім","ra_Edit custom config":"Редагувати спеціальну конфігурацію","ra_Edit full path":"Редагувати повний шлях","ra_Edit function":"функція редагування","ra_Edit object field":"Поле редагування об'єкта","ra_Edit role":"Редагувати роль","ra_Edit room":"Редагувати кімнату","ra_Edit value":"Редагувати значення","ra_Enter the code from that page here":"Введіть тут код з цієї сторінки",ra_Error:vee,"ra_Expand all nodes":"Розгорнути всі вузли","ra_Expand one step node":"Розгорніть один рівень","ra_Expand/Collapse card":"Розгорнути/Згорнути картку","ra_Export configuration section":"Розділ конфігурації експорту","ra_Export data to %s file":"Експортувати дані у файл %s","ra_Failed to open JSON File":"Не вдалося відкрити файл JSON","ra_Fallback custom certificates":"Запасні спеціальні сертифікати","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл завеликий. Максимально дозволено %sk. Спробуйте використовувати SVG.",ra_Filter:Uee,"ra_Filter and Data Actions":"Фільтр і дії з даними","ra_Filter files":"Фільтр файлів","ra_Folder name":"Назва папки","ra_Folder → Channel → State":"Папка → Канал → Стан","ra_Folder → Device → Channel → State":"Папка → Пристрій → Канал → Стан","ra_Folder → State":"Папка → Стан","ra_Folders always first":"Папки завжди першими",ra_Friday:bee,"ra_From file":"З файлу","ra_From text":"З тексту","ra_Get %s access":"Отримайте доступ %s","ra_Good luck":"Удачі","ra_Hide empty folders":"Приховати порожні папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Якщо в папці не буде створено файл, він зникне після закриття браузера","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Якщо кнопка вище не працює, ви можете авторизувати цю програму вручну, перейшовши за цим посиланням","ra_Import and add configuration section":"Розділ імпорту та додавання конфігурації","ra_Import and replace configuration section":"Розділ імпорту та заміни конфігурації","ra_Import data from %s file":"Імпортувати дані з файлу %s","ra_Import from %s":"Імпортувати з %s","ra_Instance %s is alive":"Примірник %s живий","ra_Instance %s is not alive":"Примірник %s не живий","ra_Instance is not alive":"Примірник не живий","ra_Invalid CRON":"Недійсний CRON","ra_Invalid JSON":"Недійсний JSON","ra_Invalid JSON file.":"Недійсний JSON-файл.","ra_Invalid JSON format. Expected an array.":"Недійсний формат JSON. Очікується масив.","ra_Invalid answer from server":"Недійсна відповідь від сервера","ra_Invalid parent folder!":"Недійсна батьківська папка!","ra_Invalid structure":"Недійсна структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Остання зміна",ra_Latitude:$ee,"ra_License %s":"Ліцензія %s","ra_License agreement":"Ліцензійна угода","ra_License does not exist":"Ліцензії не існує","ra_License expired on %s":"Термін дії ліцензії закінчився %s",'ra_License for other product "%s"':'Ліцензія на інший продукт "%s"',"ra_License is for version %s, but required version is %s.":"Ліцензія для версії %s, але потрібна версія %s.","ra_License must be converted":"Ліцензію необхідно конвертувати до новішої версії. Ви можете зробити це у своєму профілі на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Ліцензія не знайдена в менеджері ліцензій. Хочете оновити ліцензії з iobroker.net?","ra_Listen on all IPs":"Прослуховування на всіх IP","ra_Load configuration from file":"Завантажити конфігурацію з файлу",ra_Logout:Pee,ra_Longitude:Wee,'ra_May not trigger "updateLicenses"':'Може не запускати "updateLicenses"',ra_Message:Ree,ra_Monday:Jee,"ra_Move down":"Рухатися вниз","ra_Move up":"Рухатися вгору",ra_Name:Bee,"ra_No data found in file":"Немає даних у файлі","ra_No one license found in license manager":"У менеджері ліцензій не знайдено жодної ліцензії","ra_No response from admin":"Немає відповіді від адміністратора","ra_No response from the backend":"Немає відповіді від сервера",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Неексперти можуть створювати нові об’єкти лише в «0_userdata.0» або «alias.0».","ra_Not a number":"Не номер","ra_OAuth Client ID":"Ідентифікатор клієнта OAuth","ra_OAuth Client secret":"Секрет клієнта OAuth",ra_Objects:Gee,ra_Ok:Fee,"ra_On weekdays":"В будні дні","ra_Only following structures of objects are available:":"Доступні тільки такі структури об'єктів:","ra_Only selected":"Тільки обрані","ra_Owner group":"Група власників","ra_Owner user":"Користувач-власник","ra_Passwords are not equal!":"Паролі не бувають рівними!","ra_Place your files here or click here to open the browse dialog":"Розмістіть свої файли тут або натисніть тут, щоб відкрити діалогове вікно перегляду","ra_Please allow popups in your browser for this page!":"Будь ласка, дозвольте спливаючі вікна у вашому браузері для цієї сторінки!","ra_Please confirm":"Будь-ласка підтвердіть","ra_Please create license":"Будь ласка, створіть ліцензію","ra_Please enter the license":"Будь ласка, введіть ліцензію","ra_Please select file...":"Виберіть файл...","ra_Please select object ID...":"Виберіть ідентифікатор об'єкта...","ra_Port could be used by %s":"Порт може використовуватися %s","ra_Port is already used by %s":"Порт уже використовується %s","ra_Press ENTER Key to add new item":"Натисніть клавішу ENTER, щоб додати новий елемент","ra_Private certificate":"Приватний сертифікат",ra_Product:Hee,"ra_Public certificate":"Публічний сертифікат","ra_Quality code":"якість","ra_Refresh tree":"Оновити дерево","ra_Reload files":"Перезавантажте файли",ra_Rename_Move_Copy:Vee,"ra_Renew %s access":"Поновити доступ %s",ra_Repeat:Zee,ra_Replace:Xee,"ra_Request timed out":"Час запиту вичерпано","ra_Restrict to folder":"Обмежити папкою",ra_Root:Kee,ra_Saturday:qee,ra_Save:ete,"ra_Save and close":"Зберегти та закрити","ra_Save configuration to file":"Зберегти конфігурацію у файл","ra_Save objects tree as JSON file":"Зберегти дерево об’єктів як файл JSON","ra_Select all":"Вибрати все","ra_Select color":"Виберіть колір","ra_Select predefined icon":"Виберіть попередньо визначений значок","ra_Select type of export":"Виберіть тип експорту",ra_Selected:tte,"ra_Selected %s object(s)":"Вибрані об’єкти %s","ra_Serial number (UUID)":"Серійний номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Серійний номер (UUID) "%s" у ліцензії призначений для іншого пристрою.',"ra_Session will expire in %s seconds. Continue?":"Сеанс закінчиться через %s секунд. Продовжити?","ra_Show all folders":"Показати всі папки","ra_Show lines between rows":"Показувати лінії між рядками","ra_Show/Hide object descriptions":"Показати/Сховати описи об’єктів","ra_Show/hide filter input":"Показати/сховати введення фільтра","ra_Some data are not stored. Discard?":"Деякі дані не зберігаються. Відкинути?",ra_States:ste,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизацію успішно пройшло. Токен дійсний до %s та буде автоматично поновлено.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизацію успішно виконано. Токен дійсний до %s, але його термін дії може закінчитися, оскільки екземпляр не запущено.","ra_Suitable license not found in license manager":"Відповідна ліцензія не знайдена в менеджері ліцензій",ra_Sunday:ite,"ra_Suppress question for next %s minutes":"Приховати запитання на наступні %s хвилин","ra_System language":"Системна мова","ra_Take browser position":"Займіть позицію з браузера","ra_Take position from system settings":"Займіть позицію в налаштуваннях системи",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Експерти можуть створювати об’єкти всюди, крім другого рівня (наприклад, «vis.0» або «javascript.0»).","ra_The page you are looking for was not found":"Сторінка, яку ви шукаєте, не знайдена","ra_The schedule will be executed every minute. Are you sure?":"Розклад буде виконуватися щохвилини. Ви впевнені?","ra_The schedule will be executed every second. Are you sure?":"Розклад буде виконуватися щосекунди. Ви впевнені?",ra_Thursday:rte,ra_Timestamp:ote,"ra_Toggle expert mode":"Перемкнути експертний режим","ra_Toggle the states view":"Перемкнути перегляд штатів","ra_Toggle view mode":"Перемкнути режим перегляду","ra_Too big":"Занадто великий","ra_Too small":"Занадто малий","ra_Transparent dialog":"Прозорий діалог",ra_Tuesday:Mte,"ra_Unknown error":"Невідома помилка","ra_Unknown error!":"Невідома помилка!",ra_Update:nte,"ra_Upload file":"Завантажити файл","ra_Use all available let's encrypt certificates":"Використовуйте всі доступні сертифікати let's encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Використовуйте адаптер iobroker.acme для сертифікатів letsencrypt","ra_Use system settings for position":"Використовуйте системні налаштування для позиції","ra_Used system settings":"Використані системні налаштування","ra_User files":"Файли користувача",ra_ValidTill:ate,ra_Value:cte,ra_Version:ute,"ra_View file":"Переглянути файл","ra_View: %s":"Перегляд: %s",ra_Wednesday:lte,ra_Width:Nte,"ra_YAML editor":"Редактор YAML",ra_Yes:Lte,"ra_You can export all objects or just the selected branch.":"Ви можете експортувати всі об’єкти або лише вибрану гілку.","ra_You can filter entries by entering here some text":"Ви можете фільтрувати записи, ввівши тут певний текст","ra_You can use * as wildcard":"Ви можете використовувати * як символ підстановки",ra___different__:jte,ra_aclEveryone_read_object:gte,ra_aclEveryone_read_state:Tte,ra_aclEveryone_write_object:yte,ra_aclEveryone_write_state:Dte,ra_aclGroup_read_object:dte,ra_aclGroup_read_state:zte,ra_aclGroup_write_object:hte,ra_aclGroup_write_state:Ite,ra_aclOwner_read_object:wte,ra_aclOwner_read_state:Cte,ra_aclOwner_write_object:Ate,ra_aclOwner_write_state:mte,ra_buttons:pte,ra_changedFrom:Ote,ra_close:Ete,ra_create_boolean_state:_te,ra_create_channel:fte,ra_create_device:Ste,ra_create_number_state:xte,ra_create_state:kte,ra_create_string_state:Yte,ra_daysShortText:Qte,ra_dow_Fr:vte,ra_dow_Mo:Ute,ra_dow_Sa:bte,ra_dow_Su:$te,ra_dow_Th:Pte,ra_dow_Tu:Wte,ra_dow_We:Rte,ra_expertMode:Jte,ra_false:Bte,ra_fileType_all:Gte,ra_fileType_audio:Fte,ra_fileType_code:Hte,ra_fileType_images:Vte,ra_fileType_txt:Zte,ra_fileType_video:Xte,"ra_fileType_video,":"відео",ra_filter_customs:Kte,ra_filter_customs_without:qte,ra_filter_func:ese,ra_filter_id:tse,ra_filter_name:sse,ra_filter_role:ise,ra_filter_room:rse,ra_filter_type:ose,"ra_import data from %s file":"Імпортувати дані з файлу %s",ra_invalidConfig:Mse,ra_lastChange:nse,ra_locally:ase,ra_month_Apr:cse,ra_month_Aug:use,ra_month_Dec:lse,ra_month_Feb:Nse,ra_month_Jan:Lse,ra_month_Jul:jse,ra_month_Jun:gse,ra_month_Mai:Tse,ra_month_Mar:yse,ra_month_Nov:Dse,ra_month_Oct:dse,ra_month_Sep:zse,ra_months_Apr:hse,ra_months_Aug:Ise,ra_months_Dec:wse,ra_months_Feb:Cse,ra_months_Jan:Ase,ra_months_Jul:mse,ra_months_Jun:pse,ra_months_Mai:Ose,ra_months_Mar:Ese,ra_months_Nov:_se,ra_months_Oct:fse,ra_months_Sep:Sse,"ra_no confirm for 5 mins":"без підтвердження протягом 5 хв",ra_none:xse,ra_object_changed_by:kse,ra_object_changed_by_user:Yse,ra_otherConfig:Qse,ra_qualityCode:vse,ra_repeat:Use,ra_select_folder_hint:bse,ra_show_all:$se,ra_state_changed_by:Pse,ra_state_changed_from:Wse,ra_timestamp:Rse,ra_tooltip_ack:Jse,ra_tooltip_comment:Bse,ra_tooltip_copyState:Gse,ra_tooltip_ctrlForLink:Fse,ra_tooltip_customConfig:Hse,ra_tooltip_deleteObject:Vse,ra_tooltip_editObject:Zse,ra_tooltip_editState:Xse,ra_tooltip_expire:Kse,ra_tooltip_from:qse,ra_tooltip_lc:eie,ra_tooltip_quality:tie,ra_tooltip_ts:sie,ra_tooltip_user:iie,ra_tooltip_value:rie,ra_true:oie,"ra_use seconds":"використовуйте секунди",ra_val:Mie,"ra_via internet":"через інтернет",ra_warning_every_minute:nie,ra_warning_every_second:aie,sc_cron:cie,sc_date:uie,sc_dates:lie,sc_dow:Nie,sc_dows:Lie,sc_every:jie,sc_everyN_dates:gie,sc_everyN_dow:Tie,sc_everyN_dows:yie,sc_everyN_hours:Die,sc_everyN_minutes:die,sc_everyN_months:zie,sc_everyN_seconds:hie,sc_every_dates:Iie,sc_every_dow:wie,sc_every_dows:Cie,sc_every_hours:Aie,sc_every_minutes:mie,sc_every_months:pie,sc_every_seconds:Oie,sc_from:Eie,sc_hours:_ie,sc_interval:fie,sc_intervalBetween:Sie,sc_invalid_cron:xie,sc_minutes:kie,sc_months:Yie,sc_once:Qie,sc_period:vie,sc_seconds:Uie,sc_simple:bie,sc_specific:$ie,sc_specific_dates:Pie,sc_specific_dow:Wie,sc_specific_dows:Rie,sc_specific_hours:Jie,sc_specific_minutes:Bie,sc_specific_months:Gie,sc_specific_seconds:Fie,sc_time:Hie,sc_to:Vie,sc_wizard:Zie,sch_all:Xie,sch_astroDay:Kie,sch_astroNight:qie,sch_astro_dawn:ere,sch_astro_dusk:tre,sch_astro_goldenHour:sre,sch_astro_goldenHourEnd:ire,sch_astro_nadir:rre,sch_astro_nauticalDawn:ore,sch_astro_nauticalDusk:Mre,sch_astro_night:nre,sch_astro_nightEnd:are,sch_astro_solarNoon:cre,sch_astro_sunrise:ure,sch_astro_sunriseEnd:lre,sch_astro_sunset:Nre,sch_astro_sunsetStart:Lre,sch_at:jre,sch_desc_atTime:gre,sch_desc_everyDay:Tre,sch_desc_everyHour:yre,sch_desc_everyMinute:Dre,sch_desc_everyMonth:dre,sch_desc_everyNDay:zre,sch_desc_everyNHours:hre,sch_desc_everyNMinutes:Ire,sch_desc_everyNMonths:wre,sch_desc_everyNWeeks:Cre,sch_desc_everyNYears:Are,sch_desc_everyWeek:mre,sch_desc_everyYear:pre,sch_desc_intervalFromTo:Ore,sch_desc_never:Ere,sch_desc_onDate:_re,sch_desc_onDates:fre,sch_desc_onEveryDate:Sre,sch_desc_onMonth:xre,sch_desc_onMonths:kre,sch_desc_onWeekday:Yre,sch_desc_onWeekdays:Qre,sch_desc_onWeekends:vre,sch_desc_onWorkdays:Ure,sch_desc_onceInPast:bre,sch_desc_once_on:$re,sch_desc_validFrom:Pre,sch_desc_validFromTo:Wre,sch_desc_validTo:Rre,sch_every:Jre,sch_exactTime:Bre,sch_from:Gre,sch_fromTo:Fre,sch_intervalTime:Hre,sch_invert:Vre,sch_no_one:Zre,sch_on:Xre,sch_period:Kre,sch_periodDaily:qre,sch_periodDates:eoe,sch_periodDay:toe,sch_periodEvery:soe,sch_periodEveryDay:ioe,sch_periodEveryMonth:roe,sch_periodEveryWeek:ooe,sch_periodEveryYear:Moe,sch_periodHours:noe,sch_periodMinutes:aoe,sch_periodMonth:coe,sch_periodMonthly:uoe,sch_periodOnce:loe,sch_periodSpecificMonths:Noe,sch_periodWeek:Loe,sch_periodWeekdays:joe,sch_periodWeekend:goe,sch_periodWeekly:Toe,sch_periodWorkdays:yoe,sch_periodYear:Doe,sch_periodYearly:doe,sch_specificTime:zoe,sch_time:hoe,sch_to:Ioe,sch_valid:woe,sch_validFrom:Coe,sch_validTo:Aoe,sch_wholeDay:moe,sch_yearEveryMonth:poe},Eoe="操作",_oe="附加",foe="取消",Soe="类别",xoe="勾选",koe="删除",Yoe="关",Qoe="商业的",voe="配置",Uoe="连接的",boe="继续",$oe="复制的",Poe="创建",Woe="庄稼",Roe="Delete",Joe="删除",Boe="丢弃",Goe="断开连接",Foe="错误",Hoe="筛选",Voe="星期五",Zoe="纬度",Xoe="登出",Koe="经度",qoe="信息",eMe="周一",tMe="姓名",sMe="对象",iMe="好",rMe="产品",oMe="重命名/移动/复制",MMe="重复",nMe="代替",aMe="根",cMe="周六",uMe="保存",lMe="已选",NMe="状态",LMe="星期日",jMe="周四",gMe="时间戳记",TMe="周二",yMe="更新资料",DMe="有效期至",dMe="值",zMe="版本",hMe="周三",IMe="宽度",wMe="是的",CMe="不同的",AMe="每个人都可以阅读对象",mMe="每个人都可以阅读状态",pMe="每个人都可以写对象",OMe="每个人都可以写状态",EMe="组可以读取对象",_Me="群组可以读取状态",fMe="组可以写对象",SMe="组可以写状态",xMe="所有者可以读取对象",kMe="所有者可以读取状态",YMe="所有者可以写对象",QMe="所有者可以写状态",vMe="纽扣",UMe="更改为",bMe="关闭",$Me="创建布尔状态",PMe="创建频道",WMe="创建设备",RMe="创建号码状态",JMe="创建状态",BMe="创建字符串状态",GMe="天",FMe="r",HMe="莫",VMe="萨",ZMe="苏",XMe="Th",KMe="Tu",qMe="我们",ene="专家模式",tne="错误的",sne="所有文件",ine="声音的",rne="代码/JSON",one="图片",Mne="文本",nne="视频",ane="设定值",cne="没有",une="功能",lne="ID",Nne="名称",Lne="角色",jne="房间",gne="类型",Tne="无效的设定",yne="最后一次变更",Dne="本地",dne="4月",zne="八月",hne="十二月",Ine="二月",wne="简",Cne="七月",Ane="君",mne="迈",pne="三月",One="十一月",Ene="十月",_ne="九月",fne="4月",Sne="八月",xne="十二月",kne="二月",Yne="简",Qne="七月",vne="君",Une="迈",bne="三月",$ne="十一月",Pne="十月",Wne="九月",Rne="没有任何",Jne="物件变更者",Bne="对象上次更改时间为",Gne="来自其他适配器%s的设置",Fne="质量代码",Hne="重复",Vne="要选择文件夹,只需按住“shift”键单击文件夹即可。",Zne="显示全部",Xne="状态由",Kne="对象已从更改",qne="时间戳记",eae="致谢国旗",tae="评论",sae="复制状态值",iae="按住 Cltr/⌘ 键打开链接",rae="自定义设置",oae="删除物件",Mae="编辑物件",nae="编辑状态值",aae="有效期:",cae="从",uae="最后改变了",lae="质量",Nae="时间戳",Lae="用户",jae="值",gae="真的",Tae="值",yae="警告:CRON 作业将在指定期间内每分钟运行一次!",Dae="警告:CRON 作业将在指定期间内每秒运行一次!",dae="周期任务",zae="日期",hae="日",Iae="天",wae="星期",Cae="每",Aae="每N天",mae="每周的第 N 天",pae="每周N天",Oae="每N小时一次",Eae="每N分钟",_ae="每N个月",fae="每N秒",Sae="每天",xae="一周的每一天",kae="一周的每一天",Yae="每小时",Qae="每分钟",vae="每月",Uae="每秒",bae="从",$ae="小时",Pae="间隔",Wae="间隔时间",Rae="无效的 CRON",Jae="分钟",Bae="月",Gae="一次",Fae="周期",Hae="秒",Vae="简单模式",Zae="特定的时间",Xae="特定的日子",Kae="一周中的特定日子",qae="特定的一周",ece="特定的小时",tce="特定的分钟",sce="特定的月份",ice="特定的描述",rce="时间",oce="至",Mce="向导模式",nce="全选",ace="天文白天",cce="天文夜晚",uce="黎明",lce="黄昏",Nce="黄金时段",Lce="黄金时段结束",jce="天底",gce="航海黎明",Tce="航海黄昏",yce="夜晚",Dce="夜晚结束",dce="正午",zce="日出",hce="日出结束",Ice="日落",wce="日落开始",Cce="在",Ace="的%s",mce="每天",pce="每小时",Oce="每分钟",Ece="每月",_ce="每%s天",fce="每%s小时",Sce="每%s分钟",xce="每%s月",kce="每%s周",Yce="每%s年",Qce="每周",vce="每年",Uce="从%s到%s",bce="决不",$ce="在%s的%s上",Pce="在%s和%s上",Wce="在每天",Rce="%s",Jce="%s和%s",Bce="在%s上",Gce="在%s和%s上",Fce="在周末",Hce="在工作日",Vce="将不再执行,因为起始时间已经是过去的时间了。",Zce="在%s上",Xce="来自%s",Kce="从执行到",qce="到%s",eue="每",tue="特定的时间",sue="从",iue="从到",rue="间隔时间",oue="倒置",Mue="取消全选",nue="的",aue="周期",cue="每天",uue="日期",lue="天",Nue="每",Lue="每天",jue="每月",gue="每周",Tue="每年",yue="小时",Due="分钟",due="月",zue="每月一次",hue="一次",Iue="特定的月份",wue="周",Cue="工作日",Aue="周末",mue="每周",pue="工作日",Oue="年",Eue="每年",_ue="特定的时间",fue="时间",Sue="至",xue="生效",kue="从",Yue="至",Que="一整天",vue="每月",Uue={"ra_%s links from aliases":"来自别名的 %s 个链接","ra_%s object(s) processed":"已处理%s个对象","ra_%s was imported":"对象已导入","ra_Accept license":"接受许可",ra_Actions:Eoe,"ra_Add new child object to selected parent":"将新的子对象添加到选定的父对象","ra_Add objects tree from JSON file":"从JSON文件添加对象树","ra_Add row":"添加行","ra_Advanced options":"高级选项","ra_All items are filtered out":"所有项目都被过滤掉","ra_All objects":"所有对象",ra_Append:_oe,"ra_Append %s entries or replace existing?":"追加 %s 条目还是替换现有条目?","ra_Append or replace?":"追加还是替换?","ra_Are you sure?":"你确定吗?","ra_Auto (no custom columns)":"自动(无自定义列)","ra_Back to %s":"返回“%s”","ra_Background image":"背景图像",ra_Cancel:foe,"ra_Cannot add items with set filter":"无法使用设置过滤器添加项目","ra_Cannot decode license":"无法解码许可证","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"无法确定位置:系统设置为空且浏览器中禁用了 GPS 检测",'ra_Cannot find "%s"':"找不到“%s”",'ra_Cannot read "%s"':"无法阅读“%s”","ra_Cannot read licenses: %s":"无法读取许可证:%s","ra_Cannot retrieve options, as instance is offline":"无法检索选项,因为实例处于脱机状态","ra_Cannot update attribute, because not found in the object":"无法更新属性,因为在对象中找不到","ra_Cannot upload":"无法上传",ra_Categories:Soe,"ra_Chained certificate":"链式证书","ra_Change color theme":"更改颜色主题","ra_Changed from":"更改为","ra_Channel → State":"频道→状态","ra_Check license":"检查许可证",ra_Checked:xoe,ra_Clear:koe,"ra_Clear filter":"清除筛选","ra_Clear icon":"清除图标","ra_Click to see in full size":"点击查看完整尺寸","ra_Click to show":"点击显示","ra_Clone current row":"克隆当前行",ra_Close:Yoe,"ra_Collapse all nodes":"收合所有节点","ra_Collapse one step node":"折叠一级",ra_Commercial:Qoe,ra_Configure:voe,"ra_Configure visible columns":"配置可见列","ra_Confirm deletion of %s":"确认删除%s",ra_Connected:Uoe,ra_Continue:boe,ra_Copied:$oe,"ra_Copied %s":'复制的"%s"',"ra_Copy content":"复制内容",ra_Create:Poe,"ra_Create alias":"创建别名","ra_Create folder":"创建文件夹","ra_Create new folder in %s":"在%s中创建新文件夹",ra_Crop:Woe,"ra_Define CRON...":"定义 CRON...","ra_Define functions":"定义功能","ra_Define rooms":"定义房间","ra_Define schedule":"定义时间表","ra_Define schedule...":"定义时间表...",ra_Del:Roe,ra_Delete:Joe,"ra_Delete current row":"删除当前行","ra_Deselect all":"全部取消选择","ra_Device → Channel → State":"设备→频道→状态","ra_Disable/Enable translation":"禁用/启用翻译",ra_Discard:Boe,ra_Disconnected:Goe,"ra_Do not ask for next 2 hours in this session":"本次会话中不要询问接下来的 2 个小时","ra_Do not export values of states":"不导出状态值","ra_Do not use let's encrypt":"不要使用让我们加密","ra_Docker is not available":"Docker 不可用","ra_Docker is not installed or not running":"Docker 未安装或未运行","ra_Double click to reset table layout":"双击重置表格布局","ra_Drag 'n' drop some files here, or click to select files":"将一些文件拖放到此处,或单击以选择文件","ra_Drop file here":"将档案放在这里","ra_Drop the files here...":"把文件放在这里...","ra_Duplicate name":"名称重复","ra_Edit ACL":"编辑访问控制列表","ra_Edit alias":"编辑别名","ra_Edit custom config":"编辑自定义配置","ra_Edit full path":"编辑完整路径","ra_Edit function":"编辑功能","ra_Edit object field":"编辑对象字段","ra_Edit role":"编辑角色","ra_Edit room":"编辑室","ra_Edit value":"编辑值","ra_Enter the code from that page here":"在此处输入该页面的代码",ra_Error:Foe,"ra_Expand all nodes":"展开所有节点","ra_Expand one step node":"扩大一级","ra_Expand/Collapse card":"展开/折叠卡","ra_Export configuration section":"导出配置部分","ra_Export data to %s file":"将数据导出到 %s 文件","ra_Failed to open JSON File":"无法打开JSON文件","ra_Fallback custom certificates":"后备自定义证书","ra_File is too big. Max %sk allowed. Try use SVG.":"文件太大。允许的最大字节%s数。尝试使用 SVG。",ra_Filter:Hoe,"ra_Filter and Data Actions":"过滤和数据操作","ra_Filter files":"过滤文件","ra_Folder name":"文件夹名称","ra_Folder → Channel → State":"文件夹→频道→状态","ra_Folder → Device → Channel → State":"文件夹→设备→频道→状态","ra_Folder → State":"文件夹→状态","ra_Folders always first":"资料夹永远优先",ra_Friday:Voe,"ra_From file":"从文件","ra_From text":"文本","ra_Get %s access":"获取 %s 访问权限","ra_Good luck":"祝你好运","ra_Hide empty folders":"隐藏空文件夹","ra_If no file will be created in the folder, it will disappear after the browser closed":"如果在该文件夹中未创建任何文件,则该文件将在浏览器关闭后消失","ra_If the button above does not work, you can authorize manually this app by visiting this url":"如果上面的按钮不起作用,您可以通过访问此网址手动授权此应用","ra_Import and add configuration section":"导入并添加配置部分","ra_Import and replace configuration section":"导入和替换配置部分","ra_Import data from %s file":"从 %s 文件导入数据","ra_Import from %s":"从 %s 导入","ra_Instance %s is alive":"实例 %s 是活动的","ra_Instance %s is not alive":"实例 %s 不存在","ra_Instance is not alive":"实例不存在","ra_Invalid CRON":"无效的 CRON","ra_Invalid JSON":"JSON 无效","ra_Invalid JSON file.":"无效的JSON文件。","ra_Invalid JSON format. Expected an array.":"JSON格式无效。应为数组。","ra_Invalid answer from server":"来自服务器的无效答案","ra_Invalid parent folder!":"父文件夹无效!","ra_Invalid structure":"结构无效","ra_JSON editor":"JSON 编辑器","ra_Last change":"最后一次变更",ra_Latitude:Zoe,"ra_License %s":"许可证 %s","ra_License agreement":"许可协议","ra_License does not exist":"许可证不存在","ra_License expired on %s":"许可证已于 %s 过期",'ra_License for other product "%s"':"其他产品“%s”的许可证","ra_License is for version %s, but required version is %s.":"许可证适用于版本 %s,但所需版本为 %s。","ra_License must be converted":"许可证必须转换为更新版本。您可以在 iobroker.net 个人资料中执行此操作。","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"在许可证管理器中找不到许可证。您要从 iobroker.net 更新许可证吗?","ra_Listen on all IPs":"监听所有IP","ra_Load configuration from file":"从文件加载配置",ra_Logout:Xoe,ra_Longitude:Koe,'ra_May not trigger "updateLicenses"':"可能不会触发“updateLicenses”",ra_Message:qoe,ra_Monday:eMe,"ra_Move down":"下移","ra_Move up":"提升",ra_Name:tMe,"ra_No data found in file":"文件中未找到数据","ra_No one license found in license manager":"许可证管理器中未找到任何许可证","ra_No response from admin":"管理员没有回应","ra_No response from the backend":"后端无响应",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"非专家只能在“ 0_userdata.0”或“ alias.0”中创建新对象。","ra_Not a number":"不是数字","ra_OAuth Client ID":"OAuth客户端ID","ra_OAuth Client secret":"OAuth 客户端密钥",ra_Objects:sMe,ra_Ok:iMe,"ra_On weekdays":"在工作日","ra_Only following structures of objects are available:":"仅以下对象结构可用:","ra_Only selected":"只选择","ra_Owner group":"所有者组","ra_Owner user":"所有者用户","ra_Passwords are not equal!":"密码不相等!","ra_Place your files here or click here to open the browse dialog":"将文件放在此处或单击此处打开浏览对话框","ra_Please allow popups in your browser for this page!":"请允许浏览器弹出此页面!","ra_Please confirm":"请确认","ra_Please create license":"请创建许可证","ra_Please enter the license":"请输入许可证","ra_Please select file...":"请选择文件...","ra_Please select object ID...":"请选择对象ID ...","ra_Port could be used by %s":"%s 可以使用端口","ra_Port is already used by %s":"端口已被 %s 使用","ra_Press ENTER Key to add new item":"按 ENTER 键添加新项目","ra_Private certificate":"私有证书",ra_Product:rMe,"ra_Public certificate":"公共证书","ra_Quality code":"质量代码","ra_Refresh tree":"刷新树","ra_Reload files":"重新载入文件",ra_Rename_Move_Copy:oMe,"ra_Renew %s access":"续订 %s 访问权限",ra_Repeat:MMe,ra_Replace:nMe,"ra_Request timed out":"请求超时","ra_Restrict to folder":"限制到文件夹",ra_Root:aMe,ra_Saturday:cMe,ra_Save:uMe,"ra_Save and close":"保存并关闭","ra_Save configuration to file":"将配置保存到文件","ra_Save objects tree as JSON file":"将对象树另存为JSON文件","ra_Select all":"全选","ra_Select color":"选择颜色","ra_Select predefined icon":"选择预定义图标","ra_Select type of export":"选择导出类型",ra_Selected:lMe,"ra_Selected %s object(s)":"选定的 %s 个对象","ra_Serial number (UUID)":"序列号 (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"许可证中的序列号 (UUID)“%s”用于其他设备。","ra_Session will expire in %s seconds. Continue?":"会话将在 %s 秒后过期。是否继续?","ra_Show all folders":"显示所有文件夹","ra_Show lines between rows":"显示行之间的线","ra_Show/Hide object descriptions":"显示/隐藏对象描述","ra_Show/hide filter input":"显示/隐藏过滤器输入","ra_Some data are not stored. Discard?":"部分数据未存储。丢弃?",ra_States:NMe,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"授权成功。令牌有效期至 %s,并将自动续订。","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"授权成功。令牌有效期至 %s,但由于实例未运行,令牌可能会过期。","ra_Suitable license not found in license manager":"在许可证管理器中找不到合适的许可证",ra_Sunday:LMe,"ra_Suppress question for next %s minutes":"在接下来的%s分钟内取消提问","ra_System language":"系统语言","ra_Take browser position":"从浏览器获取位置","ra_Take position from system settings":"从系统设置中获取位置",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"专家可以在任何地方创建对象,但要从第二层开始(例如“ vis.0”或“ javascript.0”)。","ra_The page you are looking for was not found":"未找到您要查找的页面","ra_The schedule will be executed every minute. Are you sure?":"该计划将每分钟执行一次。您确定吗?","ra_The schedule will be executed every second. Are you sure?":"该计划将每秒执行一次。你确定吗?",ra_Thursday:jMe,ra_Timestamp:gMe,"ra_Toggle expert mode":"切换专家模式","ra_Toggle the states view":"切换状态视图","ra_Toggle view mode":"切换检视模式","ra_Too big":"太大","ra_Too small":"太小","ra_Transparent dialog":"透明对话框",ra_Tuesday:TMe,"ra_Unknown error":"未知错误","ra_Unknown error!":"未知错误!",ra_Update:yMe,"ra_Upload file":"上传文件","ra_Use all available let's encrypt certificates":"使用所有可用的让我们加密证书","ra_Use iobroker.acme adapter for letsencrypt certificates":"使用 iobroker.acme 适配器获取 letsencrypt 证书","ra_Use system settings for position":"使用系统设置定位","ra_Used system settings":"使用的系统设置","ra_User files":"用户档案",ra_ValidTill:DMe,ra_Value:dMe,ra_Version:zMe,"ra_View file":"查看文件","ra_View: %s":"查看:%s",ra_Wednesday:hMe,ra_Width:IMe,"ra_YAML editor":"YAML 编辑器",ra_Yes:wMe,"ra_You can export all objects or just the selected branch.":"您可以导出所有对象或仅导出选定的分支。","ra_You can filter entries by entering here some text":"您可以通过在此处输入一些文本来过滤条目","ra_You can use * as wildcard":"您可以使用 * 作为通配符",ra___different__:CMe,ra_aclEveryone_read_object:AMe,ra_aclEveryone_read_state:mMe,ra_aclEveryone_write_object:pMe,ra_aclEveryone_write_state:OMe,ra_aclGroup_read_object:EMe,ra_aclGroup_read_state:_Me,ra_aclGroup_write_object:fMe,ra_aclGroup_write_state:SMe,ra_aclOwner_read_object:xMe,ra_aclOwner_read_state:kMe,ra_aclOwner_write_object:YMe,ra_aclOwner_write_state:QMe,ra_buttons:vMe,ra_changedFrom:UMe,ra_close:bMe,ra_create_boolean_state:$Me,ra_create_channel:PMe,ra_create_device:WMe,ra_create_number_state:RMe,ra_create_state:JMe,ra_create_string_state:BMe,ra_daysShortText:GMe,ra_dow_Fr:FMe,ra_dow_Mo:HMe,ra_dow_Sa:VMe,ra_dow_Su:ZMe,ra_dow_Th:XMe,ra_dow_Tu:KMe,ra_dow_We:qMe,ra_expertMode:ene,ra_false:tne,ra_fileType_all:sne,ra_fileType_audio:ine,ra_fileType_code:rne,ra_fileType_images:one,ra_fileType_txt:Mne,ra_fileType_video:nne,"ra_fileType_video,":"视频",ra_filter_customs:ane,ra_filter_customs_without:cne,ra_filter_func:une,ra_filter_id:lne,ra_filter_name:Nne,ra_filter_role:Lne,ra_filter_room:jne,ra_filter_type:gne,"ra_import data from %s file":"从 %s 文件导入数据",ra_invalidConfig:Tne,ra_lastChange:yne,ra_locally:Dne,ra_month_Apr:dne,ra_month_Aug:zne,ra_month_Dec:hne,ra_month_Feb:Ine,ra_month_Jan:wne,ra_month_Jul:Cne,ra_month_Jun:Ane,ra_month_Mai:mne,ra_month_Mar:pne,ra_month_Nov:One,ra_month_Oct:Ene,ra_month_Sep:_ne,ra_months_Apr:fne,ra_months_Aug:Sne,ra_months_Dec:xne,ra_months_Feb:kne,ra_months_Jan:Yne,ra_months_Jul:Qne,ra_months_Jun:vne,ra_months_Mai:Une,ra_months_Mar:bne,ra_months_Nov:$ne,ra_months_Oct:Pne,ra_months_Sep:Wne,"ra_no confirm for 5 mins":"5分钟内无需确认",ra_none:Rne,ra_object_changed_by:Jne,ra_object_changed_by_user:Bne,ra_otherConfig:Gne,ra_qualityCode:Fne,ra_repeat:Hne,ra_select_folder_hint:Vne,ra_show_all:Zne,ra_state_changed_by:Xne,ra_state_changed_from:Kne,ra_timestamp:qne,ra_tooltip_ack:eae,ra_tooltip_comment:tae,ra_tooltip_copyState:sae,ra_tooltip_ctrlForLink:iae,ra_tooltip_customConfig:rae,ra_tooltip_deleteObject:oae,ra_tooltip_editObject:Mae,ra_tooltip_editState:nae,ra_tooltip_expire:aae,ra_tooltip_from:cae,ra_tooltip_lc:uae,ra_tooltip_quality:lae,ra_tooltip_ts:Nae,ra_tooltip_user:Lae,ra_tooltip_value:jae,ra_true:gae,"ra_use seconds":"用秒",ra_val:Tae,"ra_via internet":"通过互联网",ra_warning_every_minute:yae,ra_warning_every_second:Dae,sc_cron:dae,sc_date:zae,sc_dates:hae,sc_dow:Iae,sc_dows:wae,sc_every:Cae,sc_everyN_dates:Aae,sc_everyN_dow:mae,sc_everyN_dows:pae,sc_everyN_hours:Oae,sc_everyN_minutes:Eae,sc_everyN_months:_ae,sc_everyN_seconds:fae,sc_every_dates:Sae,sc_every_dow:xae,sc_every_dows:kae,sc_every_hours:Yae,sc_every_minutes:Qae,sc_every_months:vae,sc_every_seconds:Uae,sc_from:bae,sc_hours:$ae,sc_interval:Pae,sc_intervalBetween:Wae,sc_invalid_cron:Rae,sc_minutes:Jae,sc_months:Bae,sc_once:Gae,sc_period:Fae,sc_seconds:Hae,sc_simple:Vae,sc_specific:Zae,sc_specific_dates:Xae,sc_specific_dow:Kae,sc_specific_dows:qae,sc_specific_hours:ece,sc_specific_minutes:tce,sc_specific_months:sce,sc_specific_seconds:ice,sc_time:rce,sc_to:oce,sc_wizard:Mce,sch_all:nce,sch_astroDay:ace,sch_astroNight:cce,sch_astro_dawn:uce,sch_astro_dusk:lce,sch_astro_goldenHour:Nce,sch_astro_goldenHourEnd:Lce,sch_astro_nadir:jce,sch_astro_nauticalDawn:gce,sch_astro_nauticalDusk:Tce,sch_astro_night:yce,sch_astro_nightEnd:Dce,sch_astro_solarNoon:dce,sch_astro_sunrise:zce,sch_astro_sunriseEnd:hce,sch_astro_sunset:Ice,sch_astro_sunsetStart:wce,sch_at:Cce,sch_desc_atTime:Ace,sch_desc_everyDay:mce,sch_desc_everyHour:pce,sch_desc_everyMinute:Oce,sch_desc_everyMonth:Ece,sch_desc_everyNDay:_ce,sch_desc_everyNHours:fce,sch_desc_everyNMinutes:Sce,sch_desc_everyNMonths:xce,sch_desc_everyNWeeks:kce,sch_desc_everyNYears:Yce,sch_desc_everyWeek:Qce,sch_desc_everyYear:vce,sch_desc_intervalFromTo:Uce,sch_desc_never:bce,sch_desc_onDate:$ce,sch_desc_onDates:Pce,sch_desc_onEveryDate:Wce,sch_desc_onMonth:Rce,sch_desc_onMonths:Jce,sch_desc_onWeekday:Bce,sch_desc_onWeekdays:Gce,sch_desc_onWeekends:Fce,sch_desc_onWorkdays:Hce,sch_desc_onceInPast:Vce,sch_desc_once_on:Zce,sch_desc_validFrom:Xce,sch_desc_validFromTo:Kce,sch_desc_validTo:qce,sch_every:eue,sch_exactTime:tue,sch_from:sue,sch_fromTo:iue,sch_intervalTime:rue,sch_invert:oue,sch_no_one:Mue,sch_on:nue,sch_period:aue,sch_periodDaily:cue,sch_periodDates:uue,sch_periodDay:lue,sch_periodEvery:Nue,sch_periodEveryDay:Lue,sch_periodEveryMonth:jue,sch_periodEveryWeek:gue,sch_periodEveryYear:Tue,sch_periodHours:yue,sch_periodMinutes:Due,sch_periodMonth:due,sch_periodMonthly:zue,sch_periodOnce:hue,sch_periodSpecificMonths:Iue,sch_periodWeek:wue,sch_periodWeekdays:Cue,sch_periodWeekend:Aue,sch_periodWeekly:mue,sch_periodWorkdays:pue,sch_periodYear:Oue,sch_periodYearly:Eue,sch_specificTime:_ue,sch_time:fue,sch_to:Sue,sch_valid:xue,sch_validFrom:kue,sch_validTo:Yue,sch_wholeDay:Que,sch_yearEveryMonth:vue},bue={en:B1,de:tC,ru:lO,pt:Ix,nl:Sv,fr:W9,it:KR,es:aV,pl:Dee,uk:Ooe,"zh-cn":Uue},$ue=` -html { - height: 100%; -} - -body { - margin: 0; - padding: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - width: 100%; - height: 100%; - overflow: hidden; -} - -/* scrollbar */ -::-webkit-scrollbar-track { - background-color: #ccc; - border-radius: 5px; -} - -::-webkit-scrollbar { - width: 5px; - height: 5px; - background-color: #ccc; -} - -::-webkit-scrollbar-thumb { - background-color: #575757; - border-radius: 5px; -} - -#root { - height: 100%; -} - -.App { - height: 100%; -} - -@keyframes glow { - from { - background-color: initial; - } - to { - background-color: #58c458; - } -} -`;function Pue(){try{return window.self!==window.top}catch{return!0}}class qt extends qs{socket;isIFrame=Pue();instance;adapterName;instanceId;newReact;encryptedFields;sentryDSN;alertDialogRendered;_secret;_systemConfig;savedNative;common=null;sentryStarted=!1;sentryInited=!1;resizeTimer=null;constructor(e,t){const s=e.Connection||(t==null?void 0:t.Connection)||Ee;if(!window.document.getElementById("generic-app-iobroker-component")){const N=window.document.createElement("style");N.setAttribute("id","generic-app-iobroker-component"),N.innerHTML=$ue,window.document.head.appendChild(N)}if(!qt.isWeb()&&window.io&&window.location.port==="3000")try{const N=new window.SocketClient;delete window.io,window.io=N}catch{}super(e),Dg();const r=(window.location.search||"").replace(/^\?/,"").replace(/#.*$/,""),o={};r.trim().split("&").filter(N=>N.trim()).forEach(N=>{const c=N.split("="),[L,j]=c;o[L]=c.length===2?j:!0,o[L]==="true"?o[L]=!0:o[L]==="false"&&(o[L]=!1)}),this.instance=(t==null?void 0:t.instance)??e.instance??(o.instance!==void 0?parseInt(o.instance,10)||0:parseInt(window.location.search.slice(1),10)||0);const M=window.location.pathname.split("/");this.adapterName=(t==null?void 0:t.adapterName)||e.adapterName||window.adapterName||M[M.length-2]||"iot",this.instanceId=`system.adapter.${this.adapterName}.${this.instance}`,this.newReact=o.newReact===!0;const a=qs.getLocation();a.tab=a.tab||(window._localStorage||window.localStorage).getItem(`${this.adapterName}-adapter`)||"";const u=this.createTheme(o.theme);this.state={...this.state,selectedTab:(window._localStorage||window.localStorage).getItem(`${this.adapterName}-adapter`)||"",selectedTabNum:-1,native:{},errorText:"",changed:!1,connected:!1,loaded:!1,isConfigurationError:"",expertMode:!1,toast:"",theme:u,themeName:this.getThemeName(u),themeType:this.getThemeType(u),bottomButtons:(t&&t.bottomButtons)===!1?!1:(e==null?void 0:e.bottomButtons)!==!1,width:qt.getWidth(),confirmClose:!1,_alert:!1,_alertType:"info",_alertMessage:""};const l=bue;t!=null&&t.translations?Object.keys(t.translations).forEach(N=>{t.translations&&(l[N]=Object.assign(l[N],t.translations[N]||{}))}):e.translations&&Object.keys(e.translations).forEach(N=>{e.translations&&(l[N]=Object.assign(l[N],e.translations[N]||{}))}),D.setTranslations(l),this.savedNative={},this.encryptedFields=e.encryptedFields||(t==null?void 0:t.encryptedFields)||[],this.sentryDSN=(t==null?void 0:t.sentryDSN)||e.sentryDSN,window.socketUrl&&(window.socketUrl.startsWith(":")?window.socketUrl=`${window.location.protocol}//${window.location.hostname}${window.socketUrl}`:!window.socketUrl.startsWith("http://")&&!window.socketUrl.startsWith("https://")&&(window.socketUrl=`${window.location.protocol}//${window.socketUrl}`)),this.alertDialogRendered=!1,window.iobOldAlert||(window.iobOldAlert=window.alert),window.alert=N=>{if(!this.alertDialogRendered){window.iobOldAlert(N);return}N!=null&&N.toString().toLowerCase().includes("error")?(console.error(N),this.showAlert(N.toString(),"error")):(console.log(N),this.showAlert(N.toString(),"info"))},this.socket=new s({...(e==null?void 0:e.socket)||(t==null?void 0:t.socket),name:this.adapterName,doNotLoadAllObjects:t==null?void 0:t.doNotLoadAllObjects,onProgress:N=>{N===at.CONNECTING?this.setState({connected:!1}):N===at.READY?this.setState({connected:!0}):this.setState({connected:!0})},onReady:()=>{D.setLanguage(this.socket.systemLang),this.socket.subscribeObject("system.config",this.onSystemConfigChanged).then(()=>this.getSystemConfig()).then(N=>(this._secret=typeof N<"u"&&N.native&&N.native.secret||"Zgfr56gFe87jJOM",this._systemConfig=(N==null?void 0:N.common)||{},this.socket.getObject(this.instanceId))).then(async N=>{var y,d;let c;const L=N,g=((y=await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`))==null?void 0:y.val)!==!1&&((d=this._systemConfig)==null?void 0:d.diag)!=="none"&&(L==null?void 0:L.common)&&L.common.name&&L.common.version&&!L.common.disableDataReporting&&window.location.host!=="localhost:3000";!this.sentryStarted&&this.sentryDSN&&g&&(this.sentryStarted=!0,yg({dsn:this.sentryDSN,release:`iobroker.${L.common.name}@${L.common.version}`,integrations:[bc()]}),console.log("Sentry initialized")),!this.sentryInited&&g&&(this.sentryInited=!0,c=this.socket.getObject("system.meta.uuid").then(I=>{I&&I.native&&I.native.uuid&&Lt().setUser({id:I.native.uuid})})),c=c instanceof Promise?c:Promise.resolve(),c.then(()=>{L?(this.common=L==null?void 0:L.common,this.onPrepareLoad(L.native,L.encryptedNative),this.savedNative=JSON.parse(JSON.stringify(L.native)),this.setState({native:L.native,loaded:!0,expertMode:this.getExpertMode()},()=>this.onConnectionReady&&this.onConnectionReady())):(console.warn("Cannot load instance settings"),this.setState({native:{},loaded:!0,expertMode:this.getExpertMode()},()=>this.onConnectionReady&&this.onConnectionReady()))})}).catch(N=>window.alert(`Cannot settings: ${N}`))},onError:N=>{console.error(N),this.showError(N)}})}static isWeb(){return window.socketUrl!==void 0}showAlert(e,t){t!=="error"&&t!=="warning"&&t!=="info"&&t!=="success"&&(t="info"),this.setState({_alert:!0,_alertType:t,_alertMessage:e})}renderAlertSnackbar(){return this.alertDialogRendered=!0,n.createElement(Br,{style:this.state._alertType==="error"?{backgroundColor:"#f44336"}:this.state._alertType==="success"?{backgroundColor:"#4caf50"}:void 0,open:this.state._alert,autoHideDuration:6e3,onClose:(e,t)=>t!=="clickaway"&&this.setState({_alert:!1}),message:this.state._alertMessage})}onSystemConfigChanged=(e,t)=>{var s,r;t&&e==="system.config"&&(this.socket.systemLang!==(t==null?void 0:t.common.language)&&(this.socket.systemLang=(t==null?void 0:t.common.language)||"en",D.setLanguage(this.socket.systemLang)),((s=this._systemConfig)==null?void 0:s.expertMode)!==!!((r=t==null?void 0:t.common)!=null&&r.expertMode)?(this._systemConfig=(t==null?void 0:t.common)||{},this.setState({expertMode:this.getExpertMode()})):this._systemConfig=(t==null?void 0:t.common)||{})};componentDidMount(){window.addEventListener("resize",this.onResize,!0),window.addEventListener("message",this.onReceiveMessage,!1),super.componentDidMount()}componentWillUnmount(){window.removeEventListener("resize",this.onResize,!0),window.removeEventListener("message",this.onReceiveMessage,!1),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null),window.iobOldAlert&&(window.alert=window.iobOldAlert,delete window.iobOldAlert),super.componentWillUnmount()}onReceiveMessage=e=>{if(e!=null&&e.data)if(typeof e.data=="string"&&e.data==="updateTheme"||e.data&&typeof e.data=="object"&&e.data.type==="updateTheme"){const t=E.getThemeName();E.setThemeName(t);const s=this.createTheme(t);this.setState({theme:s,themeName:this.getThemeName(s),themeType:this.getThemeType(s)},()=>{this.props.onThemeChange&&this.props.onThemeChange(t),this.onThemeChanged&&this.onThemeChanged(t)})}else e.data==="updateExpertMode"?this.onToggleExpertMode&&this.onToggleExpertMode(this.getExpertMode()):e.data!=="chartReady"&&console.debug(`Received unknown message: "${JSON.stringify(e.data)}". May be it will be processed later`)};onResize=()=>{this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout(()=>{this.resizeTimer=null,this.setState({width:qt.getWidth()})},200)};static getWidth(){const e={xs:0,sm:600,md:960,lg:1280,xl:1920},t=window.innerWidth;return Object.keys(e).reverse().find(o=>t>=e[o])||"xs"}createTheme(e){return TN(E.getThemeName(e))}getThemeName(e){return e.name}getThemeType(e){return e.palette.mode}onThemeChanged(e){}onToggleExpertMode(e){}toggleTheme(e){const t=this.state.themeName;if(e=e||(t==="dark"||t==="blue"||t==="colored"?"light":"dark"),e!==t){E.setThemeName(e);const s=this.createTheme(e);this.setState({theme:s,themeName:this.getThemeName(s),themeType:this.getThemeType(s)},()=>{this.props.onThemeChange&&this.props.onThemeChange(e||"light"),this.onThemeChanged&&this.onThemeChanged(e||"light")})}}getSystemConfig(){return this.socket.getSystemConfig()}getExpertMode(){var e;return window.sessionStorage.getItem("App.expertMode")==="true"||!!((e=this._systemConfig)!=null&&e.expertMode)}onConnectionReady(){}encrypt(e){let t="";if(this._secret)for(let s=0;s{e[s]&&(e[s]=this.encrypt(e[s]))}),!0}onPrepareLoad(e,t){var s;(s=this.encryptedFields)==null||s.forEach(r=>{e[r]&&(e[r]=this.decrypt(e[r]))}),t==null||t.forEach(r=>{this.encryptedFields=this.encryptedFields||[],!this.encryptedFields.includes(r)&&this.encryptedFields.push(r),e[r]&&(e[r]=this.decrypt(e[r]))})}async getExtendableInstances(){try{const e=await this.socket.getObjectViewSystem("instance","system.adapter.","system.adapter.香");return Object.values(e).filter(t=>{var s;return!!((s=t==null?void 0:t.common)!=null&&s.webExtendable)})}catch{return[]}}async getIpAddresses(e){var o;const t=await this.socket.getHostByIp(e||((o=this.common)==null?void 0:o.host)||""),s=t.find(M=>M.address==="0.0.0.0");s&&(s.name=`[IPv4] 0.0.0.0 - ${D.t("ra_Listen on all IPs")}`);const r=t.find(M=>M.address==="::");return r&&(r.name=`[IPv6] :: - ${D.t("ra_Listen on all IPs")}`),t}onSave(e){let t;if(this.state.isConfigurationError){this.setState({errorText:this.state.isConfigurationError});return}this.socket.getObject(this.instanceId).then(s=>{t=s||{};for(const r in this.state.native)Object.prototype.hasOwnProperty.call(this.state.native,r)&&(this.state.native[r]===null?t.native[r]=null:this.state.native[r]!==void 0?t.native[r]=JSON.parse(JSON.stringify(this.state.native[r])):delete t.native[r]);if(this.state.common)for(const r in this.state.common)this.state.common[r]===null?t.common[r]=null:this.state.common[r]!==void 0?t.common[r]=JSON.parse(JSON.stringify(this.state.common[r])):delete t.common[r];return this.onPrepareSave(t.native)!==!1?this.socket.setObject(this.instanceId,t):Promise.reject(new Error("Invalid configuration"))}).then(()=>{this.savedNative=t.native,globalThis.changed=!1;try{window.parent.postMessage("nochange","*")}catch{}this.setState({changed:!1},()=>{e&&qt.onClose()})}).catch(s=>console.error(`Cannot save configuration: ${s}`))}renderToast(){return this.state.toast?n.createElement(Br,{anchorOrigin:{vertical:"bottom",horizontal:"left"},open:!0,autoHideDuration:6e3,onClose:()=>this.setState({toast:""}),ContentProps:{"aria-describedby":"message-id"},message:n.createElement("span",{id:"message-id"},this.state.toast),action:[n.createElement(P,{key:"close","aria-label":"Close",color:"inherit",onClick:()=>this.setState({toast:""}),size:"large"},n.createElement(ge,null))]}):null}static onClose(){if(typeof window.parent<"u"&&window.parent)try{window.parent.$iframeDialog&&typeof window.parent.$iframeDialog.close=="function"?window.parent.$iframeDialog.close():window.parent.postMessage("close","*")}catch{window.parent.postMessage("close","*")}}renderError(){return this.state.errorText?n.createElement(Zc,{text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}getIsChanged(e){e=e||this.state.native;const t=JSON.stringify(e)!==JSON.stringify(this.savedNative);return globalThis.changed=t,t}onLoadConfig(e){JSON.stringify(e)!==JSON.stringify(this.state.native)&&this.setState({native:e,changed:this.getIsChanged(e)})}setConfigurationError(e){this.state.isConfigurationError!==e&&this.setState({isConfigurationError:e})}renderSaveCloseButtons(){return!this.state.confirmClose&&!this.state.bottomButtons?null:n.createElement(n.Fragment,null,this.state.bottomButtons?n.createElement(Yg,{theme:this.state.theme,newReact:this.newReact,noTextOnButtons:this.state.width==="xs"||this.state.width==="sm"||this.state.width==="md",changed:this.state.changed,onSave:e=>this.onSave(e),onClose:()=>{this.state.changed?this.setState({confirmClose:!0}):qt.onClose()},error:!!this.state.isConfigurationError}):null,this.state.confirmClose?n.createElement(Vc,{title:D.t("ra_Please confirm"),text:D.t("ra_Some data are not stored. Discard?"),ok:D.t("ra_Discard"),cancel:D.t("ra_Cancel"),onClose:e=>this.setState({confirmClose:!1},()=>e&&qt.onClose())}):null)}_updateNativeValue(e,t,s){typeof t!="object"&&(t=t.split("."));const r=t.shift()||"";if(!t.length)return s&&typeof s=="object"?JSON.stringify(e[r])!==JSON.stringify(s)?(e[r]=s,!0):!1:e[r]!==s?(e[r]=s,!0):!1;if(e[r]=e[r]||{},typeof e[r]!="object")throw new Error(`attribute ${r} is no object, but ${typeof e[r]}`);return this._updateNativeValue(e[r],t,s)}updateNativeValue(e,t,s){const r=JSON.parse(JSON.stringify(this.state.native));if(this._updateNativeValue(r,e,t)){const o=this.getIsChanged(r);if(o!==this.state.changed)try{window.parent.postMessage(o?"change":"nochange","*")}catch{}this.setState({native:r,changed:o},s)}}showError(e){this.setState({errorText:e})}showToast(e){this.setState({toast:e})}renderHelperDialogs(){return n.createElement(n.Fragment,null,this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar())}render(){return this.state.loaded?n.createElement("div",{className:"App"},this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar()):n.createElement(Eg,{themeType:this.state.themeType})}}const et={color:{width:36,height:14,borderRadius:2},delButton:{marginTop:16},swatch:{mt:"16px",p:"5px",backgroundColor:"background.paper",borderRadius:"1px",boxShadow:"0 0 0 1px rgba(0,0,0,.1)",display:"inline-block",cursor:"pointer",verticalAlign:"middle"},swatchDisabled:{opacity:.5,cursor:"default"},popover:{"& .MuiPaper-root":{textAlign:"right",backgroundColor:"#00000000",boxShadow:"none"}},popoverList:{padding:0},closeButton:i=>({backgroundColor:`${i.palette.background.paper} !important`,borderRadius:"0 0 25% 25%","&:hover":{backgroundColor:`${i.palette.secondary.main} !important`}}),textDense:{mt:0,mb:0},iconButton:{width:16,height:16},button:{width:32,height:32,minWidth:32,minHeight:32}};class Vs extends ze{constructor(e){super(e),this.state={displayColorPicker:!1,color:this.props.value||this.props.color||"",anchorEl:null}}handleClick=e=>{this.setState({displayColorPicker:!this.state.displayColorPicker,anchorEl:this.state.displayColorPicker?null:e.currentTarget})};handleClose=()=>{this.setState({displayColorPicker:!1,anchorEl:null})};static getColor(e,t){if(e&&typeof e=="object"){const s=e;if(s.rgb)return t?`#${s.rgb.r.toString(16).padStart(2,"0")}${s.rgb.g.toString(16).padStart(2,"0")}${s.rgb.b.toString(16).padStart(2,"0")}`:`rgba(${s.rgb.r},${s.rgb.g},${s.rgb.b},${s.rgb.a})`;const r=e;return t?`#${r.r.toString(16).padStart(2,"0")}${r.g.toString(16).padStart(2,"0")}${r.b.toString(16).padStart(2,"0")}`:`rgba(${r.r},${r.g},${r.b},${r.a})`}return typeof e=="string"?t?Vs.rgb2hex(e||""):e||"":""}static rgb2hex(e){const t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(t){const s=parseInt(t[1],10).toString(16).padStart(2,"0"),r=parseInt(t[2],10).toString(16).padStart(2,"0"),o=parseInt(t[3],10).toString(16).padStart(2,"0");return(t==null?void 0:t.length)===4?`#${s}${r}${o}`:e}return e}handleChange=e=>{this.setState({color:e},()=>this.props.onChange&&this.props.onChange(Vs.getColor(e)))};componentDidUpdate(e,t){const s=Vs.getColor(this.props.color||this.props.value||"");s!==t.color&&this.setState({color:s})}renderCustomPalette(){return this.props.customPalette?n.createElement("div",{style:{width:"100%",display:"flex",flexWrap:"wrap"}},this.props.customPalette.map(e=>n.createElement(X,{style:et.button,key:e,onClick:()=>{this.handleChange(e),setTimeout(()=>this.handleClose(),300)}},n.createElement("div",{style:{...et.iconButton,background:e}})))):null}render(){var s;const e={...this.props.style||{}};e.position="relative";const{color:t}=this.state;return n.createElement(W,{component:"div",style:e,sx:this.props.sx||void 0,className:this.props.className||""},this.props.noInputField?null:n.createElement(le,{disabled:this.props.disabled,variant:"standard",id:"ar_color_picker_name",label:this.props.label||this.props.name,value:t||"",margin:"dense",sx:{"&.MuiFormControl-root":et.textDense,width:t?"calc(100% - 80px)":"calc(100% - 56px)",mr:t?void 0:1},onChange:r=>this.handleChange(r.target.value)}),!this.props.noInputField&&t?n.createElement(P,{disabled:this.props.disabled,onClick:()=>this.handleChange(""),size:"small",style:this.props.label||this.props.name?et.delButton:void 0},n.createElement(ut,null)):null,n.createElement(W,{component:"div",onClick:r=>!this.props.disabled&&this.handleClick(r),title:D.t("ra_Select color"),sx:{...et.swatch,...this.props.disabled?et.swatchDisabled:void 0,background:t?void 0:"transparent",border:t?void 0:"1px dashed #ccc",boxSizing:"border-box",marginTop:this.props.noInputField||!(this.props.label||this.props.name)?0:void 0}},n.createElement("div",{style:{...et.color,background:Vs.getColor(t),width:this.props.noInputField?this.props.barWidth||16:this.props.barWidth||36}})),this.state.displayColorPicker&&!this.props.disabled?n.createElement(ss,{sx:{...et.popover,"&. MuiMenu-list":et.popoverList},anchorEl:this.state.anchorEl,open:!0,onClose:()=>this.handleClose()},n.createElement(uN,{color:this.state.color||void 0,onChangeComplete:r=>this.handleChange(r.rgb),styles:{default:{picker:{backgroundColor:((s=this.props.theme)==null?void 0:s.palette.background.paper)||"#888"}}}}),t&&this.props.noInputField?n.createElement(P,{sx:et.closeButton,onClick:()=>this.handleChange("")},n.createElement(ut,null)):null,n.createElement(P,{sx:et.closeButton,onClick:()=>this.handleClose()},n.createElement(ge,null)),this.renderCustomPalette()):null)}}var fr={exports:{}},Sn;function jt(){return Sn||(Sn=1,(function(i,e){(function(s,r){i.exports=r()})(globalThis,()=>(()=>{var t={949(M,a,u){Object.defineProperty(a,"__esModule",{value:!0}),a.CronParser=void 0;var l=u(515),N=(function(){function c(L,j,g){j===void 0&&(j=!0),g===void 0&&(g=!1),this.expression=L,this.dayOfWeekStartIndexZero=j,this.monthStartIndexZero=g}return c.prototype.parse=function(){var L,j,g=(L=this.expression)!==null&&L!==void 0?L:"";if(g==="@reboot")return j=["@reboot","","","","","",""],j;if(g.startsWith("@")){var y=this.parseSpecial(this.expression);j=this.extractParts(y)}else j=this.extractParts(this.expression);return this.normalize(j),this.validate(j),j},c.prototype.parseSpecial=function(L){var j={"@yearly":"0 0 1 1 *","@annually":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *","@reboot":"@reboot"},g=j[L];if(!g)throw new Error("Unknown special expression.");return g},c.prototype.extractParts=function(L){if(!this.expression)throw new Error("cron expression is empty");for(var j=L.trim().split(/[ ]+/),g=0;g7)throw new Error("Expression has ".concat(j.length," parts; too many!"));return j},c.prototype.normalize=function(L){var j=this;if(L[3]=L[3].replace("?","*"),L[5]=L[5].replace("?","*"),L[2]=L[2].replace("?","*"),L[0].indexOf("0/")==0&&(L[0]=L[0].replace("0/","*/")),L[1].indexOf("0/")==0&&(L[1]=L[1].replace("0/","*/")),L[2].indexOf("0/")==0&&(L[2]=L[2].replace("0/","*/")),L[3].indexOf("1/")==0&&(L[3]=L[3].replace("1/","*/")),L[4].indexOf("1/")==0&&(L[4]=L[4].replace("1/","*/")),L[6].indexOf("1/")==0&&(L[6]=L[6].replace("1/","*/")),L[5]=L[5].replace(/(^\d)|([^#/\s]\d)/g,function(A){var h=A.replace(/\D/,""),p=h;return j.dayOfWeekStartIndexZero?h=="7"&&(p="0"):p=(parseInt(h)-1).toString(),A.replace(h,p)}),L[5]=="L"&&(L[5]="6"),L[3]=="?"&&(L[3]="*"),L[3].indexOf("W")>-1&&(L[3].indexOf(",")>-1||L[3].indexOf("-")>-1))throw new Error("The 'W' character can be specified only when the day-of-month is a single day, not a range or list of days.");var g={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6};for(var y in g)L[5]=L[5].replace(new RegExp(y,"gi"),g[y].toString());L[4]=L[4].replace(/(^\d{1,2})|([^#/\s]\d{1,2})/g,function(A){var h=A.replace(/\D/,""),p=h;return j.monthStartIndexZero&&(p=(parseInt(h)+1).toString()),A.replace(h,p)});var d={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12};for(var I in d)L[4]=L[4].replace(new RegExp(I,"gi"),d[I].toString());L[0]=="0"&&(L[0]=""),!/\*|\-|\,|\//.test(L[2])&&(/\*|\//.test(L[1])||/\*|\//.test(L[0]))&&(L[2]+="-".concat(L[2]));for(var m=0;m-1&&!/^\*|\-|\,/.test(L[m])){var w=null;switch(m){case 4:w="12";break;case 5:w="6";break;case 6:w="9999";break;default:w=null;break}if(w!==null){var O=L[m].split("/");L[m]="".concat(O[0],"-").concat(w,"/").concat(O[1])}}},c.prototype.validate=function(L){var j="0-9,\\-*/";this.validateOnlyExpectedCharactersFound(L[0],j),this.validateOnlyExpectedCharactersFound(L[1],j),this.validateOnlyExpectedCharactersFound(L[2],j),this.validateOnlyExpectedCharactersFound(L[3],"0-9,\\-*/LW"),this.validateOnlyExpectedCharactersFound(L[4],j),this.validateOnlyExpectedCharactersFound(L[5],"0-9,\\-*/L#"),this.validateOnlyExpectedCharactersFound(L[6],j),this.validateAnyRanges(L)},c.prototype.validateAnyRanges=function(L){l.default.secondRange(L[0]),l.default.minuteRange(L[1]),l.default.hourRange(L[2]),l.default.dayOfMonthRange(L[3]),l.default.monthRange(L[4],this.monthStartIndexZero),l.default.dayOfWeekRange(L[5],this.dayOfWeekStartIndexZero)},c.prototype.validateOnlyExpectedCharactersFound=function(L,j){var g=L.match(new RegExp("[^".concat(j,"]+"),"gi"));if(g&&g.length)throw new Error("Expression contains invalid values: '".concat(g.toString(),"'"))},c})();a.CronParser=N},333(M,a,u){Object.defineProperty(a,"__esModule",{value:!0}),a.ExpressionDescriptor=void 0;var l=u(823),N=u(949),c=(function(){function L(j,g){if(this.expression=j,this.options=g,this.expressionParts=new Array(5),!this.options.locale&&L.defaultLocale&&(this.options.locale=L.defaultLocale),!L.locales[this.options.locale]){var y=Object.keys(L.locales)[0];console.warn("Locale '".concat(this.options.locale,"' could not be found; falling back to '").concat(y,"'.")),this.options.locale=y}this.i18n=L.locales[this.options.locale],g.use24HourTimeFormat===void 0&&(g.use24HourTimeFormat=this.i18n.use24HourTimeFormatByDefault())}return L.toString=function(j,g){var y=g===void 0?{}:g,d=y.throwExceptionOnParseError,I=d===void 0?!0:d,m=y.verbose,w=m===void 0?!1:m,O=y.dayOfWeekStartIndexZero,A=O===void 0?!0:O,h=y.monthStartIndexZero,p=h===void 0?!1:h,S=y.use24HourTimeFormat,f=y.trimHoursLeadingZero,$=f===void 0?!1:f,x=y.locale,Z=x===void 0?null:x,k=y.logicalAndDayFields,Y=k===void 0?!1:k,J={throwExceptionOnParseError:I,verbose:w,dayOfWeekStartIndexZero:A,monthStartIndexZero:p,use24HourTimeFormat:S,trimHoursLeadingZero:$,locale:Z,logicalAndDayFields:Y};J.tzOffset&&console.warn("'tzOffset' option has been deprecated and is no longer supported.");var Le=new L(j,J);return Le.getFullDescription()},L.initialize=function(j,g){g===void 0&&(g="en"),L.specialCharacters=["/","-",",","*"],L.defaultLocale=g,j.load(L.locales)},L.prototype.getFullDescription=function(){var j,g,y="";try{var d=new N.CronParser(this.expression,this.options.dayOfWeekStartIndexZero,this.options.monthStartIndexZero);if(this.expressionParts=d.parse(),this.expressionParts[0]==="@reboot")return((g=(j=this.i18n).atReboot)===null||g===void 0?void 0:g.call(j))||"Run once, at startup";var I=this.getTimeOfDayDescription(),m=this.getDayOfMonthDescription(),w=this.getMonthDescription(),O=this.getDayOfWeekDescription(),A=this.getYearDescription();y+=I+m+O+w+A,y=this.transformVerbosity(y,!!this.options.verbose),y=y.charAt(0).toLocaleUpperCase()+y.substr(1)}catch(h){if(!this.options.throwExceptionOnParseError)y=this.i18n.anErrorOccuredWhenGeneratingTheExpressionD();else throw"".concat(h)}return y},L.prototype.getTimeOfDayDescription=function(){var j=this.expressionParts[0],g=this.expressionParts[1],y=this.expressionParts[2],d="";if(!l.StringUtilities.containsAny(g,L.specialCharacters)&&!l.StringUtilities.containsAny(y,L.specialCharacters)&&!l.StringUtilities.containsAny(j,L.specialCharacters))d+=this.i18n.atSpace()+this.formatTime(y,g,j);else if(!j&&g.indexOf("-")>-1&&!(g.indexOf(",")>-1)&&!(g.indexOf("/")>-1)&&!l.StringUtilities.containsAny(y,L.specialCharacters)){var I=g.split("-");d+=l.StringUtilities.format(this.i18n.everyMinuteBetweenX0AndX1(),this.formatTime(y,I[0],""),this.formatTime(y,I[1],""))}else if(!j&&y.indexOf(",")>-1&&y.indexOf("-")==-1&&y.indexOf("/")==-1&&!l.StringUtilities.containsAny(g,L.specialCharacters)){var m=y.split(",");d+=this.i18n.at();for(var w=0;w-1?m=d.substring(0,d.indexOf("#")):d.indexOf("L")>-1&&(m=m.replace("L",""));var w=parseInt(m),O=j.i18n.daysOfTheWeekInCase?j.i18n.daysOfTheWeekInCase(I)[w]:g[w];if(d.indexOf("#")>-1){var A=null,h=d.substring(d.indexOf("#")+1),p=d.substring(0,d.indexOf("#"));switch(h){case"1":A=j.i18n.first(p);break;case"2":A=j.i18n.second(p);break;case"3":A=j.i18n.third(p);break;case"4":A=j.i18n.fourth(p);break;case"5":A=j.i18n.fifth(p);break}O=A+" "+O}return O},function(d){return parseInt(d)==1?"":l.StringUtilities.format(j.i18n.commaEveryX0DaysOfTheWeek(d),d)},function(d){var I=d.substring(0,d.indexOf("-")),m=j.expressionParts[3]!="*";return m?j.i18n.commaAndX0ThroughX1(I):j.i18n.commaX0ThroughX1(I)},function(d){var I=null;if(d.indexOf("#")>-1){var m=d.substring(d.indexOf("#")+1),w=d.substring(0,d.indexOf("#"));I=j.i18n.commaOnThe(m,w).trim()+j.i18n.spaceX0OfTheMonth()}else if(d.indexOf("L")>-1)I=j.i18n.commaOnTheLastX0OfTheMonth(d.replace("L",""));else{var O=j.expressionParts[3]!="*";O?j.options.logicalAndDayFields?I=j.i18n.commaOnlyOnX0(d):I=j.i18n.commaAndOnX0():I=j.i18n.commaOnlyOnX0(d)}return I}),y},L.prototype.getMonthDescription=function(){var j=this,g=this.i18n.monthsOfTheYear(),y=this.getSegmentDescription(this.expressionParts[4],"",function(d,I){return I&&j.i18n.monthsOfTheYearInCase?j.i18n.monthsOfTheYearInCase(I)[parseInt(d)-1]:g[parseInt(d)-1]},function(d){return parseInt(d)==1?"":l.StringUtilities.format(j.i18n.commaEveryX0Months(d),d)},function(d){return j.i18n.commaMonthX0ThroughMonthX1()||j.i18n.commaX0ThroughX1()},function(d){return j.i18n.commaOnlyInMonthX0?j.i18n.commaOnlyInMonthX0():j.i18n.commaOnlyInX0()});return y},L.prototype.getDayOfMonthDescription=function(){var j=this,g=null,y=this.expressionParts[3];switch(y){case"L":g=this.i18n.commaOnTheLastDayOfTheMonth();break;case"WL":case"LW":g=this.i18n.commaOnTheLastWeekdayOfTheMonth();break;default:var d=y.match(/(\d{1,2}W)|(W\d{1,2})/);if(d){var I=parseInt(d[0].replace("W","")),m=I==1?this.i18n.firstWeekday():l.StringUtilities.format(this.i18n.weekdayNearestDayX0(),I.toString());g=l.StringUtilities.format(this.i18n.commaOnTheX0OfTheMonth(),m);break}else{var w=y.match(/L-(\d{1,2})/);if(w){var O=w[1];g=l.StringUtilities.format(this.i18n.commaDaysBeforeTheLastDayOfTheMonth(O),O);break}else{if(y=="*"&&this.expressionParts[5]!="*")return"";g=this.getSegmentDescription(y,this.i18n.commaEveryDay(),function(A){return A=="L"?j.i18n.lastDay():j.i18n.dayX0?l.StringUtilities.format(j.i18n.dayX0(),A):A},function(A){return A=="1"?j.i18n.commaEveryDay():j.i18n.commaEveryX0Days(A)},function(A){return j.i18n.commaBetweenDayX0AndX1OfTheMonth(A)},function(A){return j.i18n.commaOnDayX0OfTheMonth(A)})}break}}return g},L.prototype.getYearDescription=function(){var j=this,g=this.getSegmentDescription(this.expressionParts[6],"",function(y){return/^\d+$/.test(y)?new Date(parseInt(y),1).getFullYear().toString():y},function(y){return l.StringUtilities.format(j.i18n.commaEveryX0Years(y),y)},function(y){return j.i18n.commaYearX0ThroughYearX1()||j.i18n.commaX0ThroughX1()},function(y){return j.i18n.commaOnlyInYearX0?j.i18n.commaOnlyInYearX0():j.i18n.commaOnlyInX0()});return g},L.prototype.getSegmentDescription=function(j,g,y,d,I,m){var w=null,O=j.indexOf("/")>-1,A=j.indexOf("-")>-1,h=j.indexOf(",")>-1;if(!j)w="";else if(j==="*")w=g;else if(!O&&!A&&!h)w=l.StringUtilities.format(m(j),y(j));else if(h){for(var p=j.split(","),S="",f=0;f0&&p.length>2&&(S+=",",f0&&p.length>1&&(f==p.length-1||p.length==2)&&(S+="".concat(this.i18n.spaceAnd()," ")),p[f].indexOf("/")>-1||p[f].indexOf("-")>-1){var $=p[f].indexOf("-")>-1&&p[f].indexOf("/")==-1,x=this.getSegmentDescription(p[f],g,y,d,$?this.i18n.commaX0ThroughX1:I,m);$&&(x=x.replace(", ","")),S+=x}else if(!O)S+=y(p[f]);else{var Z=this.getSegmentDescription(p[f],g,y,d,I,m);Z&&Z.startsWith(", ")&&(Z=Z.substring(2)),S+=Z}O?w=S:w=l.StringUtilities.format(m(j),S)}else if(O){var p=j.split("/");if(w=l.StringUtilities.format(d(p[1]),p[1]),p[0].indexOf("-")>-1){var k=this.generateRangeSegmentDescription(p[0],I,y);k.indexOf(", ")!=0&&(w+=", "),w+=k}else if(p[0].indexOf("*")==-1){var Y=l.StringUtilities.format(m(p[0]),y(p[0]));Y=Y.replace(", ",""),w+=l.StringUtilities.format(this.i18n.commaStartingX0(),Y)}}else A&&(w=this.generateRangeSegmentDescription(j,I,y));return w},L.prototype.generateRangeSegmentDescription=function(j,g,y){var d="",I=j.split("-"),m=y(I[0],1),w=y(I[1],2),O=g(j);return d+=l.StringUtilities.format(O,m,w),d},L.prototype.formatTime=function(j,g,y){var d=0,I=0,m=parseInt(j)+d,w=parseInt(g)+I;w>=60?(w-=60,m+=1):w<0&&(w+=60,m-=1),m>=24?m=m-24:m<0&&(m=24+m);var O="",A=!1;this.options.use24HourTimeFormat||(A=!!(this.i18n.setPeriodBeforeTime&&this.i18n.setPeriodBeforeTime()),O=A?"".concat(this.getPeriod(m)," "):" ".concat(this.getPeriod(m)),m>12&&(m-=12),m===0&&(m=12));var h="";y&&(h=":".concat(("00"+y).substring(y.length)));var p=m.toString(),S=("00"+p).substring(p.length),f=w.toString(),$=("00"+f).substring(f.length),x=this.options.trimHoursLeadingZero?p:S;return"".concat(A?O:"").concat(x,":").concat($).concat(h).concat(A?"":O)},L.prototype.transformVerbosity=function(j,g){if(!g&&(j=j.replace(new RegExp(", ".concat(this.i18n.everyMinute()),"g"),""),j=j.replace(new RegExp(", ".concat(this.i18n.everyHour()),"g"),""),j=j.replace(new RegExp(this.i18n.commaEveryDay(),"g"),""),j=j.replace(/\, ?$/,""),this.i18n.conciseVerbosityReplacements))for(var y=0,d=Object.entries(this.i18n.conciseVerbosityReplacements());y=12?this.i18n.pm&&this.i18n.pm()||"PM":this.i18n.am&&this.i18n.am()||"AM"},L.locales={},L})();a.ExpressionDescriptor=c},747(M,a,u){Object.defineProperty(a,"__esModule",{value:!0}),a.enLocaleLoader=void 0;var l=u(486),N=(function(){function c(){}return c.prototype.load=function(L){L.en=new l.en},c})();a.enLocaleLoader=N},486(M,a){Object.defineProperty(a,"__esModule",{value:!0}),a.en=void 0;var u=(function(){function l(){}return l.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},l.prototype.atX0MinutesPastTheHourGt20=function(){return null},l.prototype.commaMonthX0ThroughMonthX1=function(){return null},l.prototype.commaYearX0ThroughYearX1=function(){return null},l.prototype.use24HourTimeFormatByDefault=function(){return!1},l.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"An error occurred when generating the expression description. Check the cron expression syntax."},l.prototype.everyMinute=function(){return"every minute"},l.prototype.everyHour=function(){return"every hour"},l.prototype.atSpace=function(){return"At "},l.prototype.everyMinuteBetweenX0AndX1=function(){return"Every minute between %s and %s"},l.prototype.at=function(){return"At"},l.prototype.spaceAnd=function(){return" and"},l.prototype.everySecond=function(){return"every second"},l.prototype.everyX0Seconds=function(){return"every %s seconds"},l.prototype.secondsX0ThroughX1PastTheMinute=function(){return"seconds %s through %s past the minute"},l.prototype.atX0SecondsPastTheMinute=function(){return"at %s seconds past the minute"},l.prototype.everyX0Minutes=function(){return"every %s minutes"},l.prototype.minutesX0ThroughX1PastTheHour=function(){return"minutes %s through %s past the hour"},l.prototype.atX0MinutesPastTheHour=function(){return"at %s minutes past the hour"},l.prototype.everyX0Hours=function(){return"every %s hours"},l.prototype.betweenX0AndX1=function(){return"between %s and %s"},l.prototype.atX0=function(){return"at %s"},l.prototype.commaEveryDay=function(){return", every day"},l.prototype.commaEveryX0DaysOfTheWeek=function(){return", every %s days of the week"},l.prototype.commaX0ThroughX1=function(){return", %s through %s"},l.prototype.commaAndX0ThroughX1=function(){return", %s through %s"},l.prototype.first=function(){return"first"},l.prototype.second=function(){return"second"},l.prototype.third=function(){return"third"},l.prototype.fourth=function(){return"fourth"},l.prototype.fifth=function(){return"fifth"},l.prototype.commaOnThe=function(){return", on the "},l.prototype.spaceX0OfTheMonth=function(){return" %s of the month"},l.prototype.lastDay=function(){return"the last day"},l.prototype.commaOnTheLastX0OfTheMonth=function(){return", on the last %s of the month"},l.prototype.commaOnlyOnX0=function(){return", only on %s"},l.prototype.commaAndOnX0=function(){return", and on %s"},l.prototype.commaEveryX0Months=function(){return", every %s months"},l.prototype.commaOnlyInX0=function(){return", only in %s"},l.prototype.commaOnTheLastDayOfTheMonth=function(){return", on the last day of the month"},l.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", on the last weekday of the month"},l.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s days before the last day of the month"},l.prototype.firstWeekday=function(){return"first weekday"},l.prototype.weekdayNearestDayX0=function(){return"weekday nearest day %s"},l.prototype.commaOnTheX0OfTheMonth=function(){return", on the %s of the month"},l.prototype.commaEveryX0Days=function(){return", every %s days in a month"},l.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", between day %s and %s of the month"},l.prototype.commaOnDayX0OfTheMonth=function(){return", on day %s of the month"},l.prototype.commaEveryHour=function(){return", every hour"},l.prototype.commaEveryX0Years=function(){return", every %s years"},l.prototype.commaStartingX0=function(){return", starting %s"},l.prototype.daysOfTheWeek=function(){return["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},l.prototype.monthsOfTheYear=function(){return["January","February","March","April","May","June","July","August","September","October","November","December"]},l.prototype.atReboot=function(){return"Run once, at startup"},l.prototype.onTheHour=function(){return"on the hour"},l})();a.en=u},515(M,a){Object.defineProperty(a,"__esModule",{value:!0});function u(N,c){if(!N)throw new Error(c)}var l=(function(){function N(){}return N.secondRange=function(c){for(var L=c.split(","),j=0;j=0&&g<=59,"seconds part must be >= 0 and <= 59")}},N.minuteRange=function(c){for(var L=c.split(","),j=0;j=0&&g<=59,"minutes part must be >= 0 and <= 59")}},N.hourRange=function(c){for(var L=c.split(","),j=0;j=0&&g<=23,"hours part must be >= 0 and <= 23")}},N.dayOfMonthRange=function(c){for(var L=c.split(","),j=0;j=1&&g<=31,"DOM part must be >= 1 and <= 31")}},N.monthRange=function(c,L){for(var j=c.split(","),g=0;g=1&&y<=12,L?"month part must be >= 0 and <= 11":"month part must be >= 1 and <= 12")}},N.dayOfWeekRange=function(c,L){for(var j=c.split(","),g=0;g=0&&y<=6,L?"DOW part must be >= 0 and <= 6":"DOW part must be >= 1 and <= 7")}},N})();a.default=l},823(M,a){Object.defineProperty(a,"__esModule",{value:!0}),a.StringUtilities=void 0;var u=(function(){function l(){}return l.format=function(N){for(var c=[],L=1;L-1})},l})();a.StringUtilities=u}},s={};function r(M){var a=s[M];if(a!==void 0)return a.exports;var u=s[M]={exports:{}};return t[M](u,u.exports,r),u.exports}var o={};return(()=>{var M=o;Object.defineProperty(M,"__esModule",{value:!0}),M.toString=void 0;var a=r(333),u=r(747);a.ExpressionDescriptor.initialize(new u.enLocaleLoader),M.default=a.ExpressionDescriptor;var l=a.ExpressionDescriptor.toString;M.toString=l})(),o})())})(fr)),fr.exports}var Wue=jt();const Rue=NN(Wue);var Jue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.fr=void 0;var N=(function(){function c(){}return c.prototype.conciseVerbosityReplacements=function(){return{"de le":"du"}},c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Une erreur est survenue en générant la description de l'expression cron. Vérifiez sa syntaxe."},c.prototype.everyMinute=function(){return"toutes les minutes"},c.prototype.everyHour=function(){return"toutes les heures"},c.prototype.atSpace=function(){return"À "},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Toutes les minutes entre %s et %s"},c.prototype.at=function(){return"À"},c.prototype.spaceAnd=function(){return" et"},c.prototype.everySecond=function(){return"toutes les secondes"},c.prototype.everyX0Seconds=function(){return"toutes les %s secondes"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"les secondes entre %s et %s après la minute"},c.prototype.atX0SecondsPastTheMinute=function(){return"%s secondes après la minute"},c.prototype.everyX0Minutes=function(){return"toutes les %s minutes"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"les minutes entre %s et %s après l'heure"},c.prototype.atX0MinutesPastTheHour=function(){return"%s minutes après l'heure"},c.prototype.everyX0Hours=function(){return"toutes les %s heures"},c.prototype.betweenX0AndX1=function(){return"de %s à %s"},c.prototype.atX0=function(){return"%s"},c.prototype.commaEveryDay=function(){return", tous les jours"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", tous les %s jours de la semaine"},c.prototype.commaX0ThroughX1=function(){return", de %s à %s"},c.prototype.commaAndX0ThroughX1=function(){return", et de %s à %s"},c.prototype.first=function(){return"premier"},c.prototype.second=function(){return"second"},c.prototype.third=function(){return"troisième"},c.prototype.fourth=function(){return"quatrième"},c.prototype.fifth=function(){return"cinquième"},c.prototype.commaOnThe=function(){return", le "},c.prototype.spaceX0OfTheMonth=function(){return" %s du mois"},c.prototype.lastDay=function(){return"le dernier jour"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", le dernier %s du mois"},c.prototype.commaOnlyOnX0=function(){return", uniquement le %s"},c.prototype.commaAndOnX0=function(){return", et %s"},c.prototype.commaEveryX0Months=function(){return", tous les %s mois"},c.prototype.commaOnlyInX0=function(){return", uniquement en %s"},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", le dernier jour du mois"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", le dernier jour ouvrable du mois"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s jours avant le dernier jour du mois"},c.prototype.firstWeekday=function(){return"premier jour ouvrable"},c.prototype.weekdayNearestDayX0=function(){return"jour ouvrable le plus proche du %s"},c.prototype.commaOnTheX0OfTheMonth=function(){return", le %s du mois"},c.prototype.commaEveryX0Days=function(){return", tous les %s jours"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", du %s au %s du mois"},c.prototype.commaOnDayX0OfTheMonth=function(){return", le %s du mois"},c.prototype.commaEveryHour=function(){return", chaque heure"},c.prototype.commaEveryX0Years=function(){return", tous les %s ans"},c.prototype.commaDaysX0ThroughX1=function(){return", du %s au %s"},c.prototype.commaStartingX0=function(){return", à partir de %s"},c.prototype.daysOfTheWeek=function(){return["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},c.prototype.monthsOfTheYear=function(){return["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},c.prototype.onTheHour=function(){return"à l'heure pile"},c})();return l.fr=N,u().locales.fr=new N,M})())})(Jue);var Bue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.es=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Ocurrió un error mientras se generaba la descripción de la expresión. Revise la sintaxis de la expresión de cron."},c.prototype.at=function(){return"A las"},c.prototype.atSpace=function(){return"A las "},c.prototype.atX0=function(){return"a las %s"},c.prototype.atX0MinutesPastTheHour=function(){return"a los %s minutos de la hora"},c.prototype.atX0SecondsPastTheMinute=function(){return"a los %s segundos del minuto"},c.prototype.betweenX0AndX1=function(){return"entre las %s y las %s"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", entre los días %s y %s del mes"},c.prototype.commaEveryDay=function(){return", cada día"},c.prototype.commaEveryX0Days=function(){return", cada %s días"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", cada %s días de la semana"},c.prototype.commaEveryX0Months=function(){return", cada %s meses"},c.prototype.commaOnDayX0OfTheMonth=function(){return", el día %s del mes"},c.prototype.commaOnlyInX0=function(){return", sólo en %s"},c.prototype.commaOnlyOnX0=function(){return", sólo el %s"},c.prototype.commaAndOnX0=function(){return", y el %s"},c.prototype.commaOnThe=function(){return", en el "},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", en el último día del mes"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", en el último día de la semana del mes"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s días antes del último día del mes"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", en el último %s del mes"},c.prototype.commaOnTheX0OfTheMonth=function(){return", en el %s del mes"},c.prototype.commaX0ThroughX1=function(){return", de %s a %s"},c.prototype.commaAndX0ThroughX1=function(){return", y de %s a %s"},c.prototype.everyHour=function(){return"cada hora"},c.prototype.everyMinute=function(){return"cada minuto"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"cada minuto entre las %s y las %s"},c.prototype.everySecond=function(){return"cada segundo"},c.prototype.everyX0Hours=function(){return"cada %s horas"},c.prototype.everyX0Minutes=function(){return"cada %s minutos"},c.prototype.everyX0Seconds=function(){return"cada %s segundos"},c.prototype.fifth=function(){return"quinto"},c.prototype.first=function(){return"primero"},c.prototype.firstWeekday=function(){return"primer día de la semana"},c.prototype.fourth=function(){return"cuarto"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"del minuto %s al %s pasada la hora"},c.prototype.second=function(){return"segundo"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"En los segundos %s al %s de cada minuto"},c.prototype.spaceAnd=function(){return" y"},c.prototype.spaceX0OfTheMonth=function(){return" %s del mes"},c.prototype.lastDay=function(){return"el último día"},c.prototype.third=function(){return"tercer"},c.prototype.weekdayNearestDayX0=function(){return"día de la semana más próximo al %s"},c.prototype.commaEveryX0Years=function(){return", cada %s años"},c.prototype.commaStartingX0=function(){return", comenzando %s"},c.prototype.daysOfTheWeek=function(){return["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},c.prototype.monthsOfTheYear=function(){return["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},c.prototype.onTheHour=function(){return"en punto"},c})();return l.es=N,u().locales.es=new N,M})())})(Bue);var Gue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.de=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.everyMinute=function(){return"jede Minute"},c.prototype.everyHour=function(){return"jede Stunde"},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Beim Generieren der Ausdrucksbeschreibung ist ein Fehler aufgetreten. Überprüfen Sie die Syntax des Cron-Ausdrucks."},c.prototype.atSpace=function(){return"Um "},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Jede Minute zwischen %s und %s"},c.prototype.at=function(){return"Um"},c.prototype.spaceAnd=function(){return" und"},c.prototype.everySecond=function(){return"Jede Sekunde"},c.prototype.everyX0Seconds=function(){return"alle %s Sekunden"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"Sekunden %s bis %s"},c.prototype.atX0SecondsPastTheMinute=function(){return"bei Sekunde %s"},c.prototype.everyX0Minutes=function(){return"alle %s Minuten"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"Minuten %s bis %s"},c.prototype.atX0MinutesPastTheHour=function(){return"bei Minute %s"},c.prototype.everyX0Hours=function(){return"alle %s Stunden"},c.prototype.betweenX0AndX1=function(){return"zwischen %s und %s"},c.prototype.atX0=function(){return"um %s"},c.prototype.commaEveryDay=function(){return", jeden Tag"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", alle %s Tage der Woche"},c.prototype.commaX0ThroughX1=function(){return", %s bis %s"},c.prototype.commaAndX0ThroughX1=function(){return", und %s bis %s"},c.prototype.first=function(){return"ersten"},c.prototype.second=function(){return"zweiten"},c.prototype.third=function(){return"dritten"},c.prototype.fourth=function(){return"vierten"},c.prototype.fifth=function(){return"fünften"},c.prototype.commaOnThe=function(){return", am "},c.prototype.spaceX0OfTheMonth=function(){return" %s des Monats"},c.prototype.lastDay=function(){return"der letzte Tag"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", am letzten %s des Monats"},c.prototype.commaOnlyOnX0=function(){return", nur jeden %s"},c.prototype.commaAndOnX0=function(){return", und jeden %s"},c.prototype.commaEveryX0Months=function(){return", alle %s Monate"},c.prototype.commaOnlyInX0=function(){return", nur im %s"},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", am letzten Tag des Monats"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", am letzten Werktag des Monats"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s tage vor dem letzten Tag des Monats"},c.prototype.firstWeekday=function(){return"ersten Werktag"},c.prototype.weekdayNearestDayX0=function(){return"Werktag am nächsten zum %s Tag"},c.prototype.commaOnTheX0OfTheMonth=function(){return", am %s des Monats"},c.prototype.commaEveryX0Days=function(){return", alle %s Tage"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", zwischen Tag %s und %s des Monats"},c.prototype.commaOnDayX0OfTheMonth=function(){return", an Tag %s des Monats"},c.prototype.commaEveryX0Years=function(){return", alle %s Jahre"},c.prototype.commaStartingX0=function(){return", beginnend %s"},c.prototype.daysOfTheWeek=function(){return["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},c.prototype.monthsOfTheYear=function(){return["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},c.prototype.onTheHour=function(){return"zur vollen Stunde"},c})();return l.de=N,u().locales.de=new N,M})())})(Gue);var Fue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.it=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"È verificato un errore durante la generazione la descrizione espressione. Controllare la sintassi delle espressioni cron."},c.prototype.at=function(){return"Alle"},c.prototype.atSpace=function(){return"Alle "},c.prototype.atX0=function(){return"alle %s"},c.prototype.atX0MinutesPastTheHour=function(){return"al %s minuto passata l'ora"},c.prototype.atX0SecondsPastTheMinute=function(){return"al %s secondo passato il minuto"},c.prototype.betweenX0AndX1=function(){return"tra le %s e le %s"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", tra il giorno %s e %s del mese"},c.prototype.commaEveryDay=function(){return", ogni giorno"},c.prototype.commaEveryX0Days=function(){return", ogni %s giorni"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", ogni %s giorni della settimana"},c.prototype.commaEveryX0Months=function(){return", ogni %s mesi"},c.prototype.commaEveryX0Years=function(){return", ogni %s anni"},c.prototype.commaOnDayX0OfTheMonth=function(){return", il giorno %s del mese"},c.prototype.commaOnlyInX0=function(){return", solo in %s"},c.prototype.commaOnlyOnX0=function(){return", solo il %s"},c.prototype.commaAndOnX0=function(){return", e il %s"},c.prototype.commaOnThe=function(){return", il "},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", l'ultimo giorno del mese"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", nell'ultima settimana del mese"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s giorni prima dell'ultimo giorno del mese"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", l'ultimo %s del mese"},c.prototype.commaOnTheX0OfTheMonth=function(){return", il %s del mese"},c.prototype.commaX0ThroughX1=function(){return", %s al %s"},c.prototype.commaAndX0ThroughX1=function(){return", e %s al %s"},c.prototype.everyHour=function(){return"ogni ora"},c.prototype.everyMinute=function(){return"ogni minuto"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Ogni minuto tra le %s e le %s"},c.prototype.everySecond=function(){return"ogni secondo"},c.prototype.everyX0Hours=function(){return"ogni %s ore"},c.prototype.everyX0Minutes=function(){return"ogni %s minuti"},c.prototype.everyX0Seconds=function(){return"ogni %s secondi"},c.prototype.fifth=function(){return"quinto"},c.prototype.first=function(){return"primo"},c.prototype.firstWeekday=function(){return"primo giorno della settimana"},c.prototype.fourth=function(){return"quarto"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"minuti %s al %s dopo l'ora"},c.prototype.second=function(){return"secondo"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"secondi %s al %s oltre il minuto"},c.prototype.spaceAnd=function(){return" e"},c.prototype.spaceX0OfTheMonth=function(){return" %s del mese"},c.prototype.lastDay=function(){return"l'ultimo giorno"},c.prototype.third=function(){return"terzo"},c.prototype.weekdayNearestDayX0=function(){return"giorno della settimana più vicino al %s"},c.prototype.commaStartingX0=function(){return", a partire %s"},c.prototype.daysOfTheWeek=function(){return["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},c.prototype.monthsOfTheYear=function(){return["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},c.prototype.onTheHour=function(){return"all'ora esatta"},c})();return l.it=N,u().locales.it=new N,M})())})(Fue);var Hue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(j){j.exports=t}},r={};function o(j){var g=r[j];if(g!==void 0)return g.exports;var y=r[j]={exports:{}};return s[j](y,y.exports,o),y.exports}o.n=j=>{var g=j&&j.__esModule?()=>j.default:()=>j;return o.d(g,{a:g}),g},o.d=(j,g)=>{for(var y in g)o.o(g,y)&&!o.o(j,y)&&Object.defineProperty(j,y,{enumerable:!0,get:g[y]})},o.o=(j,g)=>Object.prototype.hasOwnProperty.call(j,g),o.r=j=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(j,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(j,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.ru=void 0;var N=function(j,g){var y=Number(j);return y!==void 0?g[y%100>4&&y%100<20?2:[2,0,1,1,1,2][y%10<5?Math.abs(y)%10:5]]:g[2]},c=function(j,g){var y=Number(j);return y!==void 0?g[y===0?0:y===1||y===2||y===4?1:2]:g[1]},L=(function(){function j(){}return j.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},j.prototype.atX0MinutesPastTheHourGt20=function(){return null},j.prototype.commaMonthX0ThroughMonthX1=function(){return null},j.prototype.commaYearX0ThroughYearX1=function(){return null},j.prototype.use24HourTimeFormatByDefault=function(){return!0},j.prototype.everyMinute=function(){return"каждую минуту"},j.prototype.everyHour=function(){return"каждый час"},j.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Произошла ошибка во время генерации описания выражения. Проверьте синтаксис крон-выражения."},j.prototype.atSpace=function(){return"В "},j.prototype.everyMinuteBetweenX0AndX1=function(){return"Каждую минуту с %s по %s"},j.prototype.at=function(){return"В"},j.prototype.spaceAnd=function(){return" и"},j.prototype.everySecond=function(){return"каждую секунду"},j.prototype.everyX0Seconds=function(g){return N(g,["каждую %s секунду","каждые %s секунды","каждые %s секунд"])},j.prototype.secondsX0ThroughX1PastTheMinute=function(){return"секунды с %s по %s"},j.prototype.atX0SecondsPastTheMinute=function(g){return N(g,["в %s секунду","в %s секунды","в %s секунд"])},j.prototype.everyX0Minutes=function(g){return N(g,["каждую %s минуту","каждые %s минуты","каждые %s минут"])},j.prototype.minutesX0ThroughX1PastTheHour=function(){return"минуты с %s по %s"},j.prototype.atX0MinutesPastTheHour=function(g){return N(g,["в %s минуту","в %s минуты","в %s минут"])},j.prototype.everyX0Hours=function(g){return N(g,["каждый %s час","каждые %s часа","каждые %s часов"])},j.prototype.betweenX0AndX1=function(){return"с %s по %s"},j.prototype.atX0=function(){return"в %s"},j.prototype.commaEveryDay=function(){return", каждый день"},j.prototype.commaEveryX0DaysOfTheWeek=function(g){return N(g,[", каждый %s день недели",", каждые %s дня недели",", каждые %s дней недели"])},j.prototype.commaX0ThroughX1=function(g){return g&&(g[0]=="2"||g[0]=="3")?", со %s по %s":", с %s по %s"},j.prototype.commaAndX0ThroughX1=function(g){return g&&(g[0]=="2"||g[0]=="3")?" и со %s по %s":" и с %s по %s"},j.prototype.first=function(g){return c(g,["первое","первый","первую"])},j.prototype.second=function(g){return c(g,["второе","второй","вторую"])},j.prototype.third=function(g){return c(g,["третье","третий","третью"])},j.prototype.fourth=function(g){return c(g,["четвертое","четвертый","четвертую"])},j.prototype.fifth=function(g){return c(g,["пятое","пятый","пятую"])},j.prototype.commaOnThe=function(g){return g==="2"?", во ":", в "},j.prototype.spaceX0OfTheMonth=function(){return" %s месяца"},j.prototype.lastDay=function(){return"последний день"},j.prototype.commaOnTheLastX0OfTheMonth=function(g){return c(g,[", в последнее %s месяца",", в последний %s месяца",", в последнюю %s месяца"])},j.prototype.commaOnlyOnX0=function(g){return g&&g[0]==="2"?", только во %s":", только в %s"},j.prototype.commaAndOnX0=function(){return", и %s"},j.prototype.commaEveryX0Months=function(g){return N(g,[""," каждые %s месяца"," каждые %s месяцев"])},j.prototype.commaOnlyInMonthX0=function(){return", только %s"},j.prototype.commaOnlyInX0=function(){return", только в %s"},j.prototype.commaOnTheLastDayOfTheMonth=function(){return", в последний день месяца"},j.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", в последний будний день месяца"},j.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(g){return N(g,[", за %s день до конца месяца",", за %s дня до конца месяца",", за %s дней до конца месяца"])},j.prototype.firstWeekday=function(){return"первый будний день"},j.prototype.weekdayNearestDayX0=function(){return"ближайший будний день к %s числу"},j.prototype.commaOnTheX0OfTheMonth=function(){return", в %s месяца"},j.prototype.commaEveryX0Days=function(g){return N(g,[", каждый %s день",", каждые %s дня",", каждые %s дней"])},j.prototype.commaBetweenDayX0AndX1OfTheMonth=function(g){return g&&g.substring(0,g.indexOf("-"))=="2"?", со %s по %s число месяца":", с %s по %s число месяца"},j.prototype.commaOnDayX0OfTheMonth=function(g){return g&&g[0]=="2"?", во %s число месяца":", в %s число месяца"},j.prototype.commaEveryX0Years=function(g){return N(g,[", каждый %s год",", каждые %s года",", каждые %s лет"])},j.prototype.commaStartingX0=function(){return", начало %s"},j.prototype.daysOfTheWeek=function(){return["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},j.prototype.daysOfTheWeekInCase=function(g){return g===void 0&&(g=2),g==1?["воскресенья","понедельника","вторника","среды","четверга","пятницы","субботы"]:["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"]},j.prototype.monthsOfTheYear=function(){return["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},j.prototype.monthsOfTheYearInCase=function(g){return g==1?["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]:this.monthsOfTheYear()},j.prototype.onTheHour=function(){return"ровно в час"},j})();return l.ru=L,u().locales.ru=new L,M})())})(Hue);var Vue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.zh_CN=void 0;var N=(function(){function c(){}return c.prototype.setPeriodBeforeTime=function(){return!0},c.prototype.pm=function(){return"下午"},c.prototype.am=function(){return"上午"},c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return", 从%s年至%s年"},c.prototype.use24HourTimeFormatByDefault=function(){return!1},c.prototype.everyMinute=function(){return"每分钟"},c.prototype.everyHour=function(){return"每小时"},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"生成表达式描述时发生了错误,请检查cron表达式语法。"},c.prototype.atSpace=function(){return"在"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"在 %s 至 %s 之间的每分钟"},c.prototype.at=function(){return"在"},c.prototype.spaceAnd=function(){return" 和"},c.prototype.everySecond=function(){return"每秒"},c.prototype.everyX0Seconds=function(){return"每隔 %s 秒"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"在一分钟后的第 %s 到 %s 秒"},c.prototype.atX0SecondsPastTheMinute=function(){return"在一分钟后的第 %s 秒"},c.prototype.everyX0Minutes=function(){return"每隔 %s 分钟"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"在整点后的第 %s 到 %s 分钟"},c.prototype.atX0MinutesPastTheHour=function(){return"在整点后的第 %s 分钟"},c.prototype.everyX0Hours=function(){return"每隔 %s 小时"},c.prototype.betweenX0AndX1=function(){return"在 %s 和 %s 之间"},c.prototype.atX0=function(){return"在%s"},c.prototype.commaEveryDay=function(){return", 每天"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", 每周的每 %s 天"},c.prototype.commaX0ThroughX1=function(){return", %s至%s"},c.prototype.commaAndX0ThroughX1=function(){return", 和%s至%s"},c.prototype.first=function(){return"第一个"},c.prototype.second=function(){return"第二个"},c.prototype.third=function(){return"第三个"},c.prototype.fourth=function(){return"第四个"},c.prototype.fifth=function(){return"第五个"},c.prototype.commaOnThe=function(){return", 限每月的"},c.prototype.spaceX0OfTheMonth=function(){return"%s"},c.prototype.lastDay=function(){return"本月最后一天"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", 限每月的最后一个%s"},c.prototype.commaOnlyOnX0=function(){return", 仅%s"},c.prototype.commaAndOnX0=function(){return", 或者为%s"},c.prototype.commaEveryX0Months=function(){return", 每隔 %s 个月"},c.prototype.commaOnlyInX0=function(){return", 仅限%s"},c.prototype.commaOnlyInMonthX0=function(){return", 仅于%s份"},c.prototype.commaOnlyInYearX0=function(){return", 仅于 %s 年"},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", 限每月的最后一天"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", 限每月的最后一个工作日"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", 限每月最后%s天"},c.prototype.firstWeekday=function(){return"第一个工作日"},c.prototype.weekdayNearestDayX0=function(){return"最接近 %s 号的工作日"},c.prototype.commaOnTheX0OfTheMonth=function(){return", 限每月的%s"},c.prototype.commaEveryX0Days=function(){return", 每隔 %s 天"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", 限每月的 %s 至 %s 之间"},c.prototype.commaOnDayX0OfTheMonth=function(){return", 限每月%s"},c.prototype.commaEveryX0Years=function(){return", 每隔 %s 年"},c.prototype.commaStartingX0=function(){return", %s开始"},c.prototype.dayX0=function(){return" %s 号"},c.prototype.daysOfTheWeek=function(){return["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},c.prototype.monthsOfTheYear=function(){return["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},c.prototype.onTheHour=function(){return"整点"},c})();return l.zh_CN=N,u().locales.zh_CN=new N,M})())})(Vue);var Zue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.uk=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.everyMinute=function(){return"щохвилини"},c.prototype.everyHour=function(){return"щогодини"},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"ВІдбулася помилка підчас генерації опису. Перевірта правильність написання cron виразу."},c.prototype.atSpace=function(){return"О "},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Щохвилини між %s та %s"},c.prototype.at=function(){return"О"},c.prototype.spaceAnd=function(){return" та"},c.prototype.everySecond=function(){return"Щосекунди"},c.prototype.everyX0Seconds=function(){return"кожні %s секунд"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"з %s по %s секунду"},c.prototype.atX0SecondsPastTheMinute=function(){return"о %s секунді"},c.prototype.everyX0Minutes=function(){return"кожні %s хвилин"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"з %s по %s хвилину"},c.prototype.atX0MinutesPastTheHour=function(){return"о %s хвилині"},c.prototype.everyX0Hours=function(){return"кожні %s годин"},c.prototype.betweenX0AndX1=function(){return"між %s та %s"},c.prototype.atX0=function(){return"о %s"},c.prototype.commaEveryDay=function(){return", щоденно"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", кожен %s день тижня"},c.prototype.commaX0ThroughX1=function(){return", %s по %s"},c.prototype.commaAndX0ThroughX1=function(){return", та %s по %s"},c.prototype.first=function(){return"перший"},c.prototype.second=function(){return"другий"},c.prototype.third=function(){return"третій"},c.prototype.fourth=function(){return"четвертий"},c.prototype.fifth=function(){return"п'ятий"},c.prototype.commaOnThe=function(){return", в "},c.prototype.spaceX0OfTheMonth=function(){return" %s місяця"},c.prototype.lastDay=function(){return"останній день"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", в останній %s місяця"},c.prototype.commaOnlyOnX0=function(){return", тільки в %s"},c.prototype.commaAndOnX0=function(){return", і в %s"},c.prototype.commaEveryX0Months=function(){return", кожен %s місяць"},c.prototype.commaOnlyInX0=function(){return", тільки в %s"},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", в останній день місяця"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", в останній будень місяця"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s днів до останнього дня місяця"},c.prototype.firstWeekday=function(){return"перший будень"},c.prototype.weekdayNearestDayX0=function(){return"будень найближчий до %s дня"},c.prototype.commaOnTheX0OfTheMonth=function(){return", в %s місяця"},c.prototype.commaEveryX0Days=function(){return", кожен %s день"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", між %s та %s днями місяця"},c.prototype.commaOnDayX0OfTheMonth=function(){return", на %s день місяця"},c.prototype.commaEveryX0Years=function(){return", кожні %s роки"},c.prototype.commaStartingX0=function(){return", початок %s"},c.prototype.daysOfTheWeek=function(){return["неділя","понеділок","вівторок","середа","четвер","п'ятниця","субота"]},c.prototype.monthsOfTheYear=function(){return["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},c.prototype.onTheHour=function(){return"рівно о годині"},c})();return l.uk=N,u().locales.uk=new N,M})())})(Zue);var Xue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.pt_BR=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Ocorreu um erro ao gerar a descrição da expressão Cron."},c.prototype.at=function(){return"às"},c.prototype.atSpace=function(){return"às "},c.prototype.atX0=function(){return"Às %s"},c.prototype.atX0MinutesPastTheHour=function(){return"aos %s minutos da hora"},c.prototype.atX0SecondsPastTheMinute=function(){return"aos %s segundos do minuto"},c.prototype.betweenX0AndX1=function(){return"entre %s e %s"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", entre os dias %s e %s do mês"},c.prototype.commaEveryDay=function(){return", a cada dia"},c.prototype.commaEveryX0Days=function(){return", a cada %s dias"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", a cada %s dias de semana"},c.prototype.commaEveryX0Months=function(){return", a cada %s meses"},c.prototype.commaOnDayX0OfTheMonth=function(){return", no dia %s do mês"},c.prototype.commaOnlyInX0=function(L){return L&&L.length>1&&L[1]==="-"?"somente %s":", somente em %s"},c.prototype.commaOnlyOnX0=function(L){return L&&L.length>1&&L[1]==="-"?", somente %s":", somente de %s"},c.prototype.commaAndOnX0=function(){return", e de %s"},c.prototype.commaOnThe=function(L,j){return j==="6"||j==="0"?", no":", na "},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", no último dia do mês"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", no último dia da semana do mês"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s dias antes do último dia do mês"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", na última %s do mês"},c.prototype.commaOnTheX0OfTheMonth=function(){return", no %s do mês"},c.prototype.commaX0ThroughX1=function(){return", de %s a %s"},c.prototype.commaAndX0ThroughX1=function(){return", e de %s a %s"},c.prototype.everyHour=function(){return"a cada hora"},c.prototype.everyMinute=function(){return"a cada minuto"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"a cada minuto entre %s e %s"},c.prototype.everySecond=function(){return"a cada segundo"},c.prototype.everyX0Hours=function(){return"a cada %s horas"},c.prototype.everyX0Minutes=function(){return"a cada %s minutos"},c.prototype.everyX0Seconds=function(){return"a cada %s segundos"},c.prototype.fifth=function(L){return L==="6"||L==="0"?"quinto":"quinta"},c.prototype.first=function(L){return L==="6"||L==="0"?"primeiro":"primeira"},c.prototype.firstWeekday=function(){return"primeiro dia da semana"},c.prototype.fourth=function(L){return L==="6"||L==="0"?"quarto":"quarta"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"do minuto %s até %s de cada hora"},c.prototype.second=function(L){return L==="6"||L==="0"?"segundo":"segunda"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"No segundo %s até %s de cada minuto"},c.prototype.spaceAnd=function(){return" e"},c.prototype.spaceX0OfTheMonth=function(){return" %s do mês"},c.prototype.lastDay=function(){return"o último dia"},c.prototype.third=function(L){return L==="6"||L==="0"?"terceiro":"terceira"},c.prototype.weekdayNearestDayX0=function(){return"dia da semana mais próximo do dia %s"},c.prototype.commaEveryX0Years=function(){return", a cada %s anos"},c.prototype.commaStartingX0=function(){return", iniciando %s"},c.prototype.daysOfTheWeek=function(){return["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},c.prototype.monthsOfTheYear=function(){return["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},c.prototype.onTheHour=function(){return"na hora certa"},c})();return l.pt_BR=N,u().locales.pt_BR=new N,M})())})(Xue);var Kue={exports:{}};(function(i,e){(function(s,r){i.exports=r(jt())})(globalThis,t=>(()=>{var s={93(c){c.exports=t}},r={};function o(c){var L=r[c];if(L!==void 0)return L.exports;var j=r[c]={exports:{}};return s[c](j,j.exports,o),j.exports}o.n=c=>{var L=c&&c.__esModule?()=>c.default:()=>c;return o.d(L,{a:L}),L},o.d=(c,L)=>{for(var j in L)o.o(L,j)&&!o.o(c,j)&&Object.defineProperty(c,j,{enumerable:!0,get:L[j]})},o.o=(c,L)=>Object.prototype.hasOwnProperty.call(c,L),o.r=c=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})};var M={};o.r(M);var a=o(93),u=o.n(a),l=M;Object.defineProperty(l,"__esModule",{value:!0}),l.pl=void 0;var N=(function(){function c(){}return c.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},c.prototype.atX0MinutesPastTheHourGt20=function(){return null},c.prototype.commaMonthX0ThroughMonthX1=function(){return null},c.prototype.commaYearX0ThroughYearX1=function(){return null},c.prototype.use24HourTimeFormatByDefault=function(){return!0},c.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Wystąpił błąd podczas generowania opisu wyrażenia cron. Sprawdź składnię wyrażenia cron."},c.prototype.at=function(){return"O"},c.prototype.atSpace=function(){return"O "},c.prototype.atX0=function(){return"o %s"},c.prototype.atX0MinutesPastTheHour=function(){return"w %s minucie"},c.prototype.atX0SecondsPastTheMinute=function(){return"w %s sekundzie"},c.prototype.betweenX0AndX1=function(){return"od %s do %s"},c.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", od %s-ego do %s-ego dnia miesiąca"},c.prototype.commaEveryDay=function(){return", co dzień"},c.prototype.commaEveryX0Days=function(){return", co %s dni"},c.prototype.commaEveryX0DaysOfTheWeek=function(){return", co %s dni tygodnia"},c.prototype.commaEveryX0Months=function(){return", co %s miesięcy"},c.prototype.commaEveryX0Years=function(){return", co %s lat"},c.prototype.commaOnDayX0OfTheMonth=function(){return", %s-ego dnia miesiąca"},c.prototype.commaOnlyInX0=function(){return", tylko %s"},c.prototype.commaOnlyOnX0=function(){return", tylko %s"},c.prototype.commaAndOnX0=function(){return", i %s"},c.prototype.commaOnThe=function(){return", "},c.prototype.commaOnTheLastDayOfTheMonth=function(){return", ostatni dzień miesiąca"},c.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", ostatni dzień roboczy miesiąca"},c.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s dni przed ostatnim dniem miesiąca"},c.prototype.commaOnTheLastX0OfTheMonth=function(){return", ostatni %s miesiąca"},c.prototype.commaOnTheX0OfTheMonth=function(){return", %s miesiąca"},c.prototype.commaX0ThroughX1=function(){return", od %s do %s"},c.prototype.commaAndX0ThroughX1=function(){return", i od %s do %s"},c.prototype.everyHour=function(){return"co godzinę"},c.prototype.everyMinute=function(){return"co minutę"},c.prototype.everyMinuteBetweenX0AndX1=function(){return"Co minutę od %s do %s"},c.prototype.everySecond=function(){return"co sekundę"},c.prototype.everyX0Hours=function(){return"co %s godzin"},c.prototype.everyX0Minutes=function(){return"co %s minut"},c.prototype.everyX0Seconds=function(){return"co %s sekund"},c.prototype.fifth=function(){return"piąty"},c.prototype.first=function(){return"pierwszy"},c.prototype.firstWeekday=function(){return"pierwszy dzień roboczy"},c.prototype.fourth=function(){return"czwarty"},c.prototype.minutesX0ThroughX1PastTheHour=function(){return"minuty od %s do %s"},c.prototype.second=function(){return"drugi"},c.prototype.secondsX0ThroughX1PastTheMinute=function(){return"sekundy od %s do %s"},c.prototype.spaceAnd=function(){return" i"},c.prototype.spaceX0OfTheMonth=function(){return" %s miesiąca"},c.prototype.lastDay=function(){return"ostatni dzień"},c.prototype.third=function(){return"trzeci"},c.prototype.weekdayNearestDayX0=function(){return"dzień roboczy najbliższy %s-ego dnia"},c.prototype.commaStartingX0=function(){return", startowy %s"},c.prototype.daysOfTheWeek=function(){return["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},c.prototype.monthsOfTheYear=function(){return["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"]},c.prototype.onTheHour=function(){return"o pełnej godzinie"},c})();return l.pl=N,u().locales.pl=new N,M})())})(Kue);function Xc(i,e){return Rue.toString(i,{locale:e})}const be={mainDiv:{width:"100%",height:"100%"},periodSelect:{display:"block",width:250},tabContent:{padding:20,height:"calc(100% - 240px)",overflow:"auto"},numberButton:{padding:4,minWidth:40,margin:5},appBar:{color:"white"},warning:{marginLeft:16,color:"red",fontSize:12}},que=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],ele=["January","February","March","April","May","June","July","August","September","October","November","December"];function xn(i,e){const t=[];if(i==="*"){if(e===24||e===60||e===7)for(let r=0;r1){const M=parseInt(o[1],10);for(let a=parseInt(o[0],10);a<=M;a++)t.push(a)}else t.push(parseInt(s[r],10))}t.sort();for(let r=t.length-1;r>=0;r--)t[r]===t[r+1]&&t.splice(r+1,1);return t}function kn(i,e){if(typeof i!="object"&&(i=[i]),i.length===e)return"*";const t=[];if(!i.length)return"-";i=i.map(o=>parseInt(o,10)),i.sort((o,M)=>o-M);let s=i[0],r=i[0];for(let o=1;othis.props.onChange&&this.props.onChange(this.state.cron),100)}static cron2state(e){e=e.replace(/['"]/g,"").trim();const t=e.split(" ").map(r=>r.trim());let s;return t.length===6?s={seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",dates:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:s={seconds:!1,minutes:t[0]||"*",hours:t[1]||"*",dates:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},s}static state2cron(e){let t=`${e.minutes} ${e.hours} ${e.dates} ${e.months} ${e.dow}`;return e.seconds!==!1&&(t=`${e.seconds} ${t}`),t}recalcCron(){const e=Pt.state2cron(this.state);e!==this.state.cron&&this.setState({cron:e},()=>this.props.onChange&&this.props.onChange(this.state.cron))}onToggle(e,t,s){if(e===!0)this.setCronAttr(t,"*");else if(e===!1)s===60||s===24?this.setCronAttr(t,"0"):this.setCronAttr(t,"1");else{const r=xn(this.state[t],s),o=r.indexOf(e);o!==-1?r.splice(o,1):(r.push(e),r.sort()),this.setCronAttr(t,kn(r,s))}}getDigitsSelector(e,t){let s=[];if(t===7)s=[1,2,3,4,5,6,0];else if(t===60||t===24)for(let o=0;othis.onToggle(!1,e,t)},D.t("ra_Deselect all")),n.createElement(X,{key:"addall",variant:"contained",style:be.numberButton,color:"secondary",onClick:()=>this.onToggle(!0,e,t)},D.t("ra_Select all")),n.createElement("div",{key:"all"},s.map(o=>[t===7&&o===4||t===12&&o===7||t===31&&!((o-1)%10)||t===60&&o&&!(o%10)||t===24&&o&&!(o%6)?n.createElement("div",{key:`allInner${o}`,style:{width:"100%"}}):null,n.createElement(X,{key:`_${o}`,variant:r.indexOf(o)!==-1?"contained":"outlined",style:be.numberButton,color:r.indexOf(o)!==-1?"secondary":"primary",onClick:()=>this.onToggle(o,e,t)},t===7?D.t(que[o]):t===12?ele[o-1]:o)]))]}getPeriodsTab(e,t){const s=this.state[e];let r=s==="*",o=s==null?!1:s.toString().includes("/"),M;if(this.state.modes[e]===null){M=r?"every":o?"everyN":"specific";const u=JSON.parse(JSON.stringify(this.state.modes));return u[e]=M,setTimeout(()=>this.setState({modes:u},()=>this.recalcCron()),100),null}r=this.state.modes[e]==="every",o=this.state.modes[e]==="everyN",M=this.state.modes[e];let a=1;return o&&s&&(a=parseInt(s.replace("*/",""),10)||1),n.createElement("div",null,n.createElement(Xe,{variant:"standard",style:{...be.periodSelect,verticalAlign:"bottom"},value:M,onChange:u=>{const l=JSON.parse(JSON.stringify(this.state.modes));if(l[e]=u.target.value,u.target.value==="every")this.setCronAttr(e,"*",l);else if(u.target.value==="everyN"){const N=parseInt((this.state[e]||"").toString().replace("*/",""),10)||1;this.setCronAttr(e,`*/${N}`,l)}else if(u.target.value==="specific"){let N=parseInt((this.state[e]||"").toString().split(",")[0],10)||0;!N&&(e==="months"||e==="dates")&&(N=1),this.setCronAttr(e,kn(N,t),l)}}},n.createElement(te,{key:"every",value:"every"},D.t(`sc_every_${e}`)),n.createElement(te,{key:"everyN",value:"everyN"},D.t(`sc_everyN_${e}`)),n.createElement(te,{key:"specific",value:"specific"},D.t(`sc_specific_${e}`))),o&&n.createElement(le,{variant:"standard",key:"interval",label:D.t(`sc_${e}`),value:a,slotProps:{htmlInput:{min:1,max:t},inputLabel:{shrink:!0}},onChange:u=>{this.setState({[e]:`*/${u.target.value}`},()=>this.recalcCron())},type:"number",margin:"normal"}),!r&&!o&&this.getDigitsSelector(e,t))}static convertCronToText(e,t){return e.split(" ").includes("-")?D.t("ra_Invalid CRON"):Xc(e,t)}setCronAttr(e,t,s){s?e==="seconds"?this.setState({seconds:t,modes:s},()=>this.recalcCron()):e==="minutes"?this.setState({minutes:t,modes:s},()=>this.recalcCron()):e==="hours"?this.setState({hours:t,modes:s},()=>this.recalcCron()):e==="dates"?this.setState({dates:t,modes:s},()=>this.recalcCron()):e==="months"?this.setState({months:t,modes:s},()=>this.recalcCron()):e==="dow"?this.setState({dow:t,modes:s},()=>this.recalcCron()):this.setState({modes:s},()=>this.recalcCron()):e==="seconds"?this.setState({seconds:t},()=>this.recalcCron()):e==="minutes"?this.setState({minutes:t},()=>this.recalcCron()):e==="hours"?this.setState({hours:t},()=>this.recalcCron()):e==="dates"?this.setState({dates:t},()=>this.recalcCron()):e==="months"?this.setState({months:t},()=>this.recalcCron()):e==="dow"&&this.setState({dow:t},()=>this.recalcCron())}render(){const e=this.state.seconds!==!1?this.state.tab:this.state.tab+1,t=this.state.minutes==="*"||this.state.minutes==="*/1",s=this.state.seconds==="*"||this.state.seconds==="*/1";return n.createElement("div",{style:be.mainDiv},n.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)"}},n.createElement(le,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0})),n.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)",height:60}},Pt.convertCronToText(this.state.cron,this.props.language||"en"),n.createElement("span",{style:be.warning},s?D.t("ra_warning_every_second"):t?D.t("ra_warning_every_minute"):"")),n.createElement(H,{control:n.createElement(ne,{checked:!!this.state.seconds,onChange:r=>this.setState({seconds:r.target.checked?"*":!1},()=>this.recalcCron())}),label:D.t("ra_use seconds")}),n.createElement(ol,{position:"static",sx:{"&.MuiAppBar-root":be.appBar},color:"secondary"},n.createElement(Ml,{value:this.state.tab,style:be.appBar,color:"secondary",onChange:(r,o)=>this.setState({tab:o})},this.state.seconds!==!1&&n.createElement(ls,{id:"sc_seconds",label:D.t("sc_seconds")}),n.createElement(ls,{id:"minutes",label:D.t("sc_minutes")}),n.createElement(ls,{id:"hours",label:D.t("sc_hours")}),n.createElement(ls,{id:"dates",label:D.t("sc_dates")}),n.createElement(ls,{id:"months",label:D.t("sc_months")}),n.createElement(ls,{id:"dow",label:D.t("sc_dows")}))),e===0&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("seconds",60)),e===1&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("minutes",60)),e===2&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("hours",24)),e===3&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("dates",31)),e===4&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("months",12)),e===5&&n.createElement("div",{style:be.tabContent},this.getPeriodsTab("dow",7)))}}const Ls={modalDialog:{minWidth:400,maxWidth:800},overflowHidden:{display:"flex",overflow:"hidden"},titleIcon:{marginRight:5},content:{fontSize:16},languageButton:{position:"absolute",right:8,top:8},languageButtonActive:i=>({color:i.palette.primary.main})};function ege(i){const{open:e,toggleTranslation:t,noTranslation:s,title:r,fullWidth:o,help:M,maxWidth:a,progress:u,icon:l,applyDisabled:N,applyButton:c,onClose:L,children:j,titleButtonApply:g,titleButtonClose:y,onApply:d,textInput:I,defaultValue:m,overflowHidden:w}=i,[O,A]=Qo(m||"");ye(()=>{A(m||"")},[m]);const h=nl(),p=Ra(h.breakpoints.down("md"));let S=null;return l&&(S=l),n.createElement(de,{open:e,maxWidth:p?!1:a||"md",fullWidth:!!o,fullScreen:p,disableEscapeKeyDown:!1,onClose:L,sx:{"& .MuiDialog-paper":p?{}:Ls.modalDialog}},r&&n.createElement(Ie,null,l?n.createElement(S,{style:Ls.titleIcon}):null,r,D.getLanguage()!=="en"&&t?n.createElement(P,{size:"large",sx:E.getStyle(i.theme,Ls.languageButton,s&&Ls.languageButtonActive),onClick:()=>t(),title:D.t("Disable/Enable translation")},n.createElement(gl,null)):null),n.createElement(Ae,{style:{...Ls.content,...w?Ls.overflowHidden:void 0,paddingTop:8}},I&&n.createElement(le,{autoComplete:"off",fullWidth:!0,autoFocus:!0,variant:"outlined",size:"medium",multiline:!0,value:O,onChange:f=>A(f.target.value)}),j,M?n.createElement("div",null,M):null),n.createElement(me,null,c!==!1&&n.createElement(X,{startIcon:n.createElement(ve,null),disabled:u||N&&m===O,onClick:()=>d(I?O:""),variant:"contained",color:"primary"},D.t(g||"ra_Ok")),n.createElement(X,{color:"grey",onClick:L,disabled:u,variant:"contained",startIcon:n.createElement(ge,null)},D.t(y||"ra_Cancel"))))}function tle(){const i=LN();return[...i.breakpoints.keys].reverse().reduce((t,s)=>{const r=Ra(i.breakpoints.up(s));return!t&&r?s:t},null)||"xs"}function Nr(){return i=>function(t){const s=tle();return n.createElement(i,{...t,width:s})}}function sle(i){const[e,t]=n.useState(i.input||i.value||""),[s,r]=n.useState("");return n.createElement(de,{open:!0,onClose:()=>i.onClose(null),"aria-labelledby":"form-dialog-title",fullWidth:i.fullWidth!==void 0?i.fullWidth:!1},n.createElement(Ie,{id:"form-dialog-title"},i.titleText),n.createElement(Ae,null,n.createElement(Jt,null,i.promptText),n.createElement(le,{variant:"standard",autoFocus:!0,margin:"dense",error:!!s,helperText:s===!0||!s?"":s,value:e,label:i.labelText||"",type:i.type||"text",onKeyUp:o=>o.code==="Enter"&&e&&i.onClose(e),onChange:o=>{let M="";i.verify&&(M=i.verify(o.target.value)),i.rule?t(i.rule(o.target.value)):t(o.target.value),r(M)},fullWidth:!0})),n.createElement(me,null,n.createElement(X,{variant:"contained",disabled:!e||!!s,onClick:()=>i.onClose(e),color:"primary",startIcon:n.createElement(ve,null)},i.applyText||D.t("ra_Ok")),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>i.onClose(null),startIcon:n.createElement(ge,null)},i.cancelText||D.t("ra_Cancel"))))}const ile=Nr()(sle);function No(i){return n.createElement("svg",{onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 486 486",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),xmlns:"http://www.w3.org/2000/svg",className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"m414.928297,149.715165 c-2.639376,-57.222555 -35.669446,-106.505345 -83.345894,-132.039151 c-3.758948,-2.049842 -7.636885,-3.932022 -11.590542,-5.641125 c-19.303146,-8.394083 -40.607459,-13.050853 -63.004303,-13.050853 c-84.113909,0 -152.791790,65.703174 -157.718988,148.605566 l0.043268,-0.010816 v0.281245 c0,3.061243 -0.146031,16.750306 -0.146031,16.750306 l-2.352723,5.224668 h15.744315 c5.916964,-19.384275 24.078904,-32.635245 45.513024,-32.635245 c26.231510,0 47.573684,21.915481 47.573684,48.146991 c0,26.226103 -21.342174,47.146409 -47.573684,47.146409 c-25.111939,0 -45.734774,-19.735831 -47.443879,-44.658471 h-18.789334 c-0.400232,0 -0.778832,0.638209 -1.162839,0.584122 l-19.762875,55.199753 c-2.774590,7.696379 2.926030,16.214860 11.103771,16.214860 h17.020735 l-0.129805,87.899899 c0,17.356066 14.073071,31.174935 31.429136,31.174935 h56.205745 v82.648189 c0,12.877778 12.937273,22.580734 25.815051,22.580734 h144.597825 c12.877778,0 23.429877,-9.702955 23.429877,-22.580734 v-166.037352 c0,-22.645636 5.976457,-44.761234 16.561008,-64.789128 c11.055093,-20.925714 17.523731,-44.620611 18.129489,-69.792045 c0.027042,-1.260193 0.037858,-2.552839 0.037858,-3.845485 c0,-2.466302 -0.070310,-4.938014 -0.183890,-7.377273 zm-155.393308,-11.731165 h-13.456494 v13.559257 c0,4.732489 -4.267352,8.567157 -8.999842,8.567157 c-4.727079,0 -8.999842,-3.834667 -8.999842,-8.567157 v-13.559257 h-12.185483 c-4.732489,0 -8.567157,-4.267352 -8.567157,-8.999842 c0,-4.727079 3.834667,-8.999842 8.567157,-8.999842 h12.185483 v-12.077311 c0,-4.732489 4.272762,-8.567157 8.999842,-8.567157 c4.732489,0 8.999842,3.834667 8.999842,8.567157 v12.077311 h13.456494 c4.727079,0 8.567157,4.272762 8.567157,8.999842 c0,4.732489 -3.840077,8.999842 -8.567157,8.999842 zm0,0"}),n.createElement("path",{fill:"currentColor",d:"m187.695312 285.875c3.9375-3.980469 6.414063-9.449219 6.414063-15.523438 0-12.128906-9.855469-21.980468-21.984375-21.980468-6.007812 0-11.472656 2.410156-15.457031 6.347656-4.023438 4.003906-6.523438 9.539062-6.523438 15.636719 0 12.125 9.855469 21.980469 21.980469 21.980469 6.078125 0 11.585938-2.476563 15.570312-6.460938zm0 0"}))}function ms(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 650 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"m524,128l-192,0l-64,-64l-160,0c-26.51,0 -48,21.49 -48,48l0,288c0,26.51 21.49,48 48,48l416,0c26.51,0 48,-21.49 48,-48l0,-224c0,-26.51 -21.49,-48 -48,-48z"}))}function bi(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 650 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"m631.75617,292.093l-72.424,124.155a63.997,63.997 0 0 1 -55.281,31.752l-399.964,0c-18.523,0 -30.064,-20.093 -20.731,-36.093l72.424,-124.155a64,64 0 0 1 55.282,-31.752l399.964,0c18.523,0 30.064,20.093 20.73,36.093zm-420.694,-68.093l328,0l0,-48c0,-26.51 -21.49,-48 -48,-48l-160,0l-64,-64l-160,0c-26.51,0 -48,21.49 -48,48l0,278.046l69.077,-118.418c17.137,-29.378 48.912,-47.628 82.923,-47.628z"}))}function iM(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"#EE3333",d:"M256,0C114.844,0,0,114.844,0,256s114.844,256,256,256s256-114.844,256-256S397.156,0,256,0z M256,448 c-105.865,0-192-86.135-192-192c0-40.406,12.25-78.604,35.542-111.198l267.656,267.656C334.604,435.75,296.406,448,256,448z M412.458,367.198L144.802,99.542C177.396,76.25,215.594,64,256,64c105.865,0,192,86.135,192,192 C448,296.406,435.75,334.604,412.458,367.198z"}))}var rle=i=>typeof i!="string"?{}:i.split(/ ?; ?/).reduce((e,t)=>{const[s,r]=t.split(/ ?: ?/).map((o,M)=>M===0?o.replace(/\s+/g,""):o.trim());if(s&&r){const o=s.replace(/(\w)-(\w)/g,(a,u,l)=>`${u}${l.toUpperCase()}`);let M=r.trim();Number.isNaN(Number(r))||(M=Number(r)),e[s.startsWith("-")?s:o]=M}return e},{});function ole(i=6){const e="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let t="";for(let s=i;s>0;--s)t+=e[Math.round(Math.random()*(e.length-1))];return t}var Mle=["br","col","colgroup","dl","hr","iframe","img","input","link","menuitem","meta","ol","param","select","table","tbody","tfoot","thead","tr","ul","wbr"],Yn={"accept-charset":"acceptCharset",acceptcharset:"acceptCharset",accesskey:"accessKey",allowfullscreen:"allowFullScreen",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",cellpadding:"cellPadding",cellspacing:"cellSpacing",charset:"charSet",class:"className",classid:"classID",classname:"className",colspan:"colSpan",contenteditable:"contentEditable",contextmenu:"contextMenu",controlslist:"controlsList",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",datetime:"dateTime",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",enctype:"encType",for:"htmlFor",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",innerhtml:"innerHTML",inputmode:"inputMode",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",marginwidth:"marginWidth",marginheight:"marginHeight",maxlength:"maxLength",mediagroup:"mediaGroup",minlength:"minLength",nomodule:"noModule",novalidate:"noValidate",playsinline:"playsInline",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rowspan:"rowSpan",spellcheck:"spellCheck",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",tabindex:"tabIndex",typemustmatch:"typeMustMatch",usemap:"useMap",accentheight:"accentHeight","accent-height":"accentHeight",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",arabicform:"arabicForm","arabic-form":"arabicForm",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",diffuseconstant:"diffuseConstant",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",edgemode:"edgeMode",enablebackground:"enableBackground","enable-background":"enableBackground",externalresourcesrequired:"externalResourcesRequired",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",imagerendering:"imageRendering","image-rendering":"imageRendering",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",vmathematical:"vMathematical","v-mathematical":"vMathematical",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan",onblur:"onBlur",onchange:"onChange",onclick:"onClick",oncontextmenu:"onContextMenu",ondoubleclick:"onDoubleClick",ondrag:"onDrag",ondragend:"onDragEnd",ondragenter:"onDragEnter",ondragexit:"onDragExit",ondragleave:"onDragLeave",ondragover:"onDragOver",ondragstart:"onDragStart",ondrop:"onDrop",onerror:"onError",onfocus:"onFocus",oninput:"onInput",oninvalid:"onInvalid",onkeydown:"onKeyDown",onkeypress:"onKeyPress",onkeyup:"onKeyUp",onload:"onLoad",onmousedown:"onMouseDown",onmouseenter:"onMouseEnter",onmouseleave:"onMouseLeave",onmousemove:"onMouseMove",onmouseout:"onMouseOut",onmouseover:"onMouseOver",onmouseup:"onMouseUp",onscroll:"onScroll",onsubmit:"onSubmit",ontouchcancel:"onTouchCancel",ontouchend:"onTouchEnd",ontouchmove:"onTouchMove",ontouchstart:"onTouchStart",onwheel:"onWheel"};function nle(i,e){var o;const{key:t,level:s,...r}=e;switch(i.nodeType){case 1:return qu(cle(i.nodeName),ale(i,t),Qn(i.childNodes,s,r));case 3:{const M=((o=i.nodeValue)==null?void 0:o.toString())??"";if(!r.allowWhiteSpaces&&/^\s+$/.test(M)&&!/[\u00A0\u202F]/.test(M))return null;if(!i.parentNode)return M;const a=i.parentNode.nodeName.toLowerCase();return Mle.includes(a)?(/\S/.test(M)&&console.warn(`A textNode is not allowed inside '${a}'. Your text "${M}" will be ignored`),null):M}case 8:return null;case 11:return Qn(i.childNodes,s,e);default:return null}}function ale(i,e){const t={key:e};if(i instanceof Element){const s=i.getAttribute("class");s&&(t.className=s),[...i.attributes].forEach(r=>{switch(r.name){case"class":break;case"style":t[r.name]=rle(r.value);break;case"allowfullscreen":case"allowpaymentrequest":case"async":case"autofocus":case"autoplay":case"checked":case"controls":case"default":case"defer":case"disabled":case"formnovalidate":case"hidden":case"ismap":case"itemscope":case"loop":case"multiple":case"muted":case"nomodule":case"novalidate":case"open":case"readonly":case"required":case"reversed":case"selected":case"typemustmatch":t[Yn[r.name]||r.name]=!0;break;default:t[Yn[r.name]||r.name]=r.value}})}return t}function Qn(i,e,t){const s=[...i].map((r,o)=>Fi(r,{...t,index:o,level:e+1})).filter(Boolean);return s.length?s:null}function cle(i){return/[a-z]+[A-Z]+[a-z]+/.test(i)?i:i.toLowerCase()}function Kc(i,e={}){return typeof i=="string"?ule(i,e):i instanceof Node?Fi(i,e):null}function Fi(i,e={}){if(!i||!(i instanceof Node))return null;const{actions:t=[],index:s=0,level:r=0,randomKey:o}=e;let M=i,a=`${r}-${s}`;const u=[];return o&&r===0&&(a=`${ole()}-${a}`),Array.isArray(t)&&t.forEach(l=>{l.condition(M,a,r)&&(typeof l.pre=="function"&&(M=l.pre(M,a,r),M instanceof Node||(M=i)),typeof l.post=="function"&&u.push(l.post(M,a,r)))}),u.length?u:nle(M,{key:a,level:r,...e})}function ule(i,e={}){if(!i||typeof i!="string")return null;const{includeAllNodes:t=!1,nodeOnly:s=!1,selector:r="body > *",type:o="text/html"}=e;try{const a=new DOMParser().parseFromString(i,o);if(t){const{childNodes:l}=a.body;return s?l:[...l].map(N=>Fi(N,e))}const u=a.querySelector(r)||a.body.childNodes[0];if(!(u instanceof Node))throw new TypeError("Error parsing input");return s?u:Fi(u,e)}catch{}return null}var lle=Object.defineProperty,Nle=(i,e,t)=>e in i?lle(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Ai=(i,e,t)=>Nle(i,typeof e!="symbol"?e+"":e,t),vn="react-inlinesvg",Lle=10,re={IDLE:"idle",LOADING:"loading",LOADED:"loaded",FAILED:"failed",READY:"ready",UNSUPPORTED:"unsupported"};function jle(i){return i[Math.floor(Math.random()*i.length)]}function Zs(){var i;return!!(typeof window<"u"&&((i=window.document)!=null&&i.createElement))}function gle(){return dle()&&typeof window<"u"&&window!==null}function Tle(i,...e){const t={};for(const s in i)({}).hasOwnProperty.call(i,s)&&(e.includes(s)||(t[s]=i[s]));return t}function yle(i){const e="abcdefghijklmnopqrstuvwxyz",s=`${e}${e.toUpperCase()}1234567890`;let r="";for(let o=0;o299)throw new Error("Not found");if(!["image/svg+xml","text/plain"].some(o=>r.includes(o)))throw new Error(`Content type isn't valid: ${r}`);return t.text()}function Dle(i=1){return new Promise(e=>{setTimeout(e,i*1e3)})}function dle(){if(!document)return!1;const i=document.createElement("div");i.innerHTML="";const e=i.firstChild;return!!e&&e.namespaceURI==="http://www.w3.org/2000/svg"}var zle=class{constructor(){Ai(this,"cacheApi"),Ai(this,"cacheStore"),Ai(this,"subscribers",[]),Ai(this,"isReady",!1),this.cacheStore=new Map;let i=vn,e=!1;Zs()&&(i=window.REACT_INLINESVG_CACHE_NAME??vn,e=!!window.REACT_INLINESVG_PERSISTENT_CACHE&&"caches"in window),e?caches.open(i).then(t=>{this.cacheApi=t}).catch(t=>{console.error(`Failed to open cache: ${t.message}`),this.cacheApi=void 0}).finally(()=>{this.isReady=!0;const t=[...this.subscribers];this.subscribers.length=0,t.forEach(s=>{try{s()}catch(r){console.error(`Error in CacheStore subscriber callback: ${r.message}`)}})}):this.isReady=!0}onReady(i){this.isReady?i():this.subscribers.push(i)}async get(i,e){var t;return await(this.cacheApi?this.fetchAndAddToPersistentCache(i,e):this.fetchAndAddToInternalCache(i,e)),((t=this.cacheStore.get(i))==null?void 0:t.content)??""}set(i,e){this.cacheStore.set(i,e)}isCached(i){var e;return((e=this.cacheStore.get(i))==null?void 0:e.status)===re.LOADED}async fetchAndAddToInternalCache(i,e){const t=this.cacheStore.get(i);if((t==null?void 0:t.status)===re.LOADING){await this.handleLoading(i,async()=>{this.cacheStore.set(i,{content:"",status:re.IDLE}),await this.fetchAndAddToInternalCache(i,e)});return}if(!(t!=null&&t.content)){this.cacheStore.set(i,{content:"",status:re.LOADING});try{const s=await qc(i,e);this.cacheStore.set(i,{content:s,status:re.LOADED})}catch(s){throw this.cacheStore.set(i,{content:"",status:re.FAILED}),s}}}async fetchAndAddToPersistentCache(i,e){var r,o,M;const t=this.cacheStore.get(i);if((t==null?void 0:t.status)===re.LOADED)return;if((t==null?void 0:t.status)===re.LOADING){await this.handleLoading(i,async()=>{this.cacheStore.set(i,{content:"",status:re.IDLE}),await this.fetchAndAddToPersistentCache(i,e)});return}this.cacheStore.set(i,{content:"",status:re.LOADING});const s=await((r=this.cacheApi)==null?void 0:r.match(i));if(s){const a=await s.text();this.cacheStore.set(i,{content:a,status:re.LOADED});return}try{await((o=this.cacheApi)==null?void 0:o.add(new Request(i,e)));const a=await((M=this.cacheApi)==null?void 0:M.match(i)),u=await(a==null?void 0:a.text())??"";this.cacheStore.set(i,{content:u,status:re.LOADED})}catch(a){throw this.cacheStore.set(i,{content:"",status:re.FAILED}),a}}async handleLoading(i,e){var t;for(let s=0;s({[i]:e}))}async delete(i){this.cacheApi&&await this.cacheApi.delete(i),this.cacheStore.delete(i)}async clear(){if(this.cacheApi){const i=await this.cacheApi.keys();await Promise.allSettled(i.map(e=>this.cacheApi.delete(e)))}this.cacheStore.clear()}};function Un(i){const e=Fe(void 0);return ye(()=>{e.current=i}),e.current}function hle(i){const{baseURL:e,content:t,description:s,handleError:r,hash:o,preProcessor:M,title:a,uniquifyIDs:u=!1}=i;try{const l=Ile(t,M),N=Kc(l,{nodeOnly:!0});if(!N||!(N instanceof SVGSVGElement))throw new Error("Could not convert the src to a DOM Node");const c=eu(N,{baseURL:e,hash:o,uniquifyIDs:u});if(s){const L=c.querySelector("desc");L!=null&&L.parentNode&&L.parentNode.removeChild(L);const j=document.createElementNS("http://www.w3.org/2000/svg","desc");j.innerHTML=s,c.prepend(j)}if(typeof a<"u"){const L=c.querySelector("title");if(L!=null&&L.parentNode&&L.parentNode.removeChild(L),a){const j=document.createElementNS("http://www.w3.org/2000/svg","title");j.innerHTML=a,c.prepend(j)}}return c}catch(l){return r(l)}}function Ile(i,e){return e?e(i):i}function eu(i,e){const{baseURL:t="",hash:s,uniquifyIDs:r}=e,o=["id","href","xlink:href","xlink:role","xlink:arcrole"],M=["href","xlink:href"],a=(u,l)=>M.includes(u)&&(l?!l.includes("#"):!1);return r&&[...i.children].forEach(u=>{var l;if((l=u.attributes)!=null&&l.length){const N=Object.values(u.attributes).map(c=>{const L=c,j=/url\((.*?)\)/.exec(c.value);return j!=null&&j[1]&&(L.value=c.value.replace(j[0],`url(${t}${j[1]}__${s})`)),L});o.forEach(c=>{const L=N.find(j=>j.name===c);L&&!a(c,L.value)&&(L.value=`${L.value}__${s}`)})}return u.children.length?eu(u,e):u}),i}var hs;function wle(i){const{cacheRequests:e=!0,children:t=null,description:s,fetchOptions:r,innerRef:o,loader:M=null,onError:a,onLoad:u,src:l,title:N,uniqueHash:c}=i,[L,j]=el((Y,J)=>({...Y,...J}),{content:"",element:null,isCached:e&&hs.isCached(i.src),status:re.IDLE}),{content:g,element:y,isCached:d,status:I}=L,m=Un(i),w=Un(L),O=Fe(c??yle(8)),A=Fe(!1),h=Fe(!1),p=Qt(Y=>{A.current&&(j({status:Y.message==="Browser does not support SVG"?re.UNSUPPORTED:re.FAILED}),a==null||a(Y))},[a]),S=Qt((Y,J=!1)=>{A.current&&j({content:Y,isCached:J,status:re.LOADED})},[]),f=Qt(async()=>{const Y=await qc(l,r);S(Y)},[r,S,l]),$=Qt(()=>{try{const Y=hle({...i,handleError:p,hash:O.current,content:g}),J=Kc(Y);if(!J||!tl(J))throw new Error("Could not convert the src to a React element");j({element:J,status:re.READY})}catch(Y){p(Y)}},[g,p,i]),x=Qt(async()=>{const Y=/^data:image\/svg[^,]*?(;base64)?,(.*)/u.exec(l);let J;if(Y?J=Y[1]?window.atob(Y[2]):decodeURIComponent(Y[2]):l.includes("{A.current&&j({content:"",element:null,isCached:!1,status:re.LOADING})},[]);ye(()=>{if(A.current=!0,!(!Zs()||h.current)){try{if(I===re.IDLE){if(!gle())throw new Error("Browser does not support SVG");if(!l)throw new Error("Missing src");Z()}}catch(Y){p(Y)}return h.current=!0,()=>{A.current=!1}}},[]),ye(()=>{if(!(!Zs()||!m)&&m.src!==l){if(!l){p(new Error("Missing src"));return}Z()}},[p,Z,m,l]),ye(()=>{I===re.LOADED&&$()},[I,$]),ye(()=>{!Zs()||!m||m.src!==l||(m.title!==N||m.description!==s)&&$()},[s,$,m,l,N]),ye(()=>{if(w)switch(I){case re.LOADING:{w.status!==re.LOADING&&x();break}case re.LOADED:{w.status!==re.LOADED&&$();break}case re.READY:{w.status!==re.READY&&(u==null||u(l,d));break}}},[x,$,d,u,w,l,I]);const k=Tle(i,"baseURL","cacheRequests","children","description","fetchOptions","innerRef","loader","onError","onLoad","preProcessor","src","title","uniqueHash","uniquifyIDs");return Zs()?y?sl(y,{ref:o,...k}):[re.UNSUPPORTED,re.FAILED].includes(I)?t:M:M}function Lo(i){hs||(hs=new zle);const{loader:e}=i,[t,s]=Qo(hs.isReady);return ye(()=>{t||hs.onReady(()=>{s(!0)})},[t]),t?n.createElement(wle,{...i}):e}function Cle(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"}))}function tge(i){let e;const t=i==null?void 0:i._id;return t?(t.startsWith("_design/")||t==="system"?e=n.createElement(Wi,{className:"iconOwn"}):t==="0_userdata"||t==="0_userdata.0"?e=n.createElement(Tl,{className:"iconOwn"}):t==="alias"||t==="alias.0"?e=n.createElement(Cle,{className:"iconOwn"}):t==="system.adapter"?e=n.createElement(Wi,{className:"iconOwn"}):t==="system.group"?e=n.createElement(vo,{className:"iconOwn"}):t==="system.user"?e=n.createElement(Uo,{className:"iconOwn"}):t==="system.host"?e=n.createElement(bo,{className:"iconOwn"}):t.endsWith(".connection")||t.endsWith(".connected")?e=n.createElement(zs,{className:"iconOwn"}):t.endsWith(".info")?e=n.createElement($o,{className:"iconOwn"}):(i==null?void 0:i.type)==="meta"&&(e=n.createElement(tr,{className:"iconOwn"})),e||null):null}function sge(i,e){var r;e=e||".";let t="";const s=i==null?void 0:i.common;if(s){const o=s.icon;if(o)if(o.startsWith("data:image/"))t=o;else if(o.includes(".")){let M;i.type==="instance"||i.type==="adapter"?t=`${e}/adapter/${s.name}/${o}`:(r=i._id)!=null&&r.startsWith("system.adapter.")?(M=i._id.split(".",3),o[0]==="/"?M[2]+=o:M[2]+=`/${o}`,t=`${e}/adapter/${M[2]}`):(M=i._id.split(".",2),o[0]==="/"?M[0]+=o:M[0]+=`/${o}`,t=`${e}/adapter/${M[0]}`)}else return null}return t||null}const Ale=window.location.hostname.endsWith("iobroker.in"),bn=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1),xe=n.forwardRef(function(e,t){var s,r,o;if(e.src){if(typeof e.src=="string"){if(e.src.length<3)return e.sx?n.createElement(W,{component:"span",sx:e.sx,ref:t,title:e.title||void 0,style:{height:27,marginTop:-8,...e.styleUTF8||e.style},className:e.className?`iconOwn ${e.className}`:"iconOwn"},e.src):n.createElement("span",{ref:t,title:e.title||void 0,style:{height:27,marginTop:-8,...e.styleUTF8||e.style},className:e.className?`iconOwn ${e.className}`:"iconOwn"},e.src);if(e.src.startsWith("data:image/svg"))return n.createElement(Lo,{title:e.title||void 0,src:e.src,className:e.className?`iconOwn ${e.className}`:"iconOwn",width:((s=e.style)==null?void 0:s.width)||28,height:((r=e.style)==null?void 0:r.height)||((o=e.style)==null?void 0:o.width)||28,style:e.style||void 0});if(Ale&&!e.src.startsWith("http://")&&!e.src.startsWith("https://")){let M=e.src;return M.startsWith("./")?M=bn+M.substring(2):M.startsWith("/")||(M=bn+M),e.sx?n.createElement(W,{component:"img",sx:e.sx,title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:`https://remote-files.iobroker.in${M}`,alt:e.alt||void 0,ref:t,onError:a=>{var u;return(u=e.onError)==null?void 0:u.call(e,a)}}):n.createElement("img",{title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:`https://remote-files.iobroker.in${M}`,alt:e.alt||void 0,ref:t,onError:a=>{var u;return(u=e.onError)==null?void 0:u.call(e,a)}})}return e.sx?n.createElement(W,{component:"img",sx:e.sx,title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:e.src,alt:e.alt||void 0,ref:t,onError:e.onError}):n.createElement("img",{title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:e.src,alt:e.alt||void 0,ref:t,onError:e.onError})}return e.src}return null});xe.displayName="Icon";const Vt={dialog:{height:"100%"},paper:{height:"calc(100% - 64px)"},content:{textAlign:"center"},textarea:{width:"100%",height:"100%"},img:{width:"auto",height:"calc(100% - 5px)",objectFit:"contain"},dialogTitle:{justifyContent:"space-between",display:"flex"}},_e={images:["png","jpg","svg","jpeg","bmp","gif","apng","avif","webp","ico"],code:["js","json","json5","md"],txt:["log","txt","html","css","xml","ics","csv"],audio:["mp3","wav","ogg","acc"],video:["mp4","mov","avi"]};function $n(i,e){let t="";const s=new Uint8Array((i==null?void 0:i.data)||i),r=s.byteLength;for(let o=0;o{let o="";r.file!==void 0&&(o=r.file);const M={copyPossible:this.state.copyPossible,ext:this.state.ext};if(o.type==="Buffer")if(s.toLowerCase().endsWith(".json5")){M.ext="json5",M.copyPossible=!0;try{o=atob($n(o,!0))}catch{console.error("Cannot convert base64 to string"),o=""}}else{const a=E.detectMimeType($n(o));a&&(M.ext=a,M.copyPossible=_e.code.includes(a)||_e.txt.includes(a))}M.copyPossible&&(M.ext&&_e.txt.includes(M.ext)?(M.text=o,M.editingValue=o):M.ext&&_e.code.includes(M.ext)&&(M.code=o,M.editingValue=o)),this.setState(M)}).catch(r=>window.alert(`Cannot read file: ${r}`))}}componentDidMount(){this.readFile();const e=this.props.href.split("/");e.splice(0,2);const t=e[0],s=e.splice(1).join("/");this.props.supportSubscribes&&this.props.socket.subscribeFiles(t,s,this.onFileChanged).catch(r=>window.alert(`Cannot subscribe on file: ${r}`))}componentWillUnmount(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null);const e=this.props.href.split("/");e.splice(0,2);const t=e[0],s=e.splice(1).join("/");this.props.supportSubscribes&&this.props.socket.unsubscribeFiles(t,s,this.onFileChanged)}onFileChanged=(e,t,s)=>{this.state.changed||(this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(()=>{this.timeout=null,s===null?window.alert("Show file was deleted!"):this.state.text!==null||this.state.code!==null?this.readFile():this.setState({forceUpdate:Date.now()})},300))};getEditorOrViewer(){return n.createElement(le,{variant:"standard",style:Vt.textarea,multiline:!0,value:this.state.editingValue||this.state.code||this.state.text,slotProps:{htmlInput:{readOnly:!this.state.editing}}})}getContent(){return this.state.ext&&_e.images.includes(this.state.ext)?this.state.imgError?n.createElement(iM,{style:{...Vt.img,...this.props.getStyleBackgroundImage()}}):n.createElement(xe,{onError:e=>{e.target.onerror=null,this.setState({imgError:!0})},style:{...Vt.img,...this.props.getStyleBackgroundImage()},src:`${this.props.href}?ts=${this.state.forceUpdate}`,alt:this.props.href}):this.state.ext&&_e.audio.includes(this.state.ext)?n.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement("audio",{style:{width:"100%"},src:this.props.href,controls:!0})):this.state.ext&&_e.video.includes(this.state.ext)?n.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement("video",{style:{width:"100%",height:"100%"},controls:!0},n.createElement("source",{src:this.props.href,type:`video/${this.state.ext}`}))):this.state.code!==null||this.state.text!==null||this.state.editing?this.getEditorOrViewer():null}onSave(){}render(){return n.createElement(de,{sx:{"&.MuiDialog-scrollPaper":Vt.dialog,"& .MuiDialog-paper":Vt.paper},scroll:"paper",open:!!this.props.href,onClose:()=>this.props.onClose(),fullWidth:!0,maxWidth:"xl","aria-labelledby":"ar_dialog_file_view_title"},n.createElement("div",{style:Vt.dialogTitle},n.createElement(Ie,{id:"ar_dialog_file_view_title"},`${this.props.t(this.state.editing?"Edit":"View")}: ${this.props.href}`),this.state.ext&&_e.images.includes(this.state.ext)&&n.createElement("div",null,n.createElement(P,{size:"large",color:"inherit",onClick:this.props.setStateBackgroundImage},n.createElement(Po,null)))),n.createElement(Ae,{style:Vt.content},this.getContent()),n.createElement(me,null,this.state.copyPossible?n.createElement(X,{color:"grey",onClick:e=>{e.stopPropagation(),e.preventDefault(),E.copyToClipboard(this.state.text||this.state.code||"")},startIcon:n.createElement(yl,null)},this.props.t("Copy content")):null,this.state.editing?n.createElement(X,{color:"grey",disabled:this.state.editingValue===this.state.code||this.state.editingValue===this.state.text,variant:"contained",onClick:()=>this.onSave(),startIcon:n.createElement(Gr,null)},this.props.t("Save")):null,n.createElement(X,{variant:"contained",onClick:()=>this.props.onClose(),color:"primary",startIcon:n.createElement(ge,null)},this.props.t("Close"))))}}const ple=Nr()(mle),js=32,Tt=32,mi=120,Pn=64,Wn="Not found",pi={all:Ga,images:ml,code:Wo,txt:Al,audio:Cl,video:wl},v={root:{width:"100%",overflow:"hidden",height:"100%",position:"relative"},filesDiv:{width:"calc(100% - 8px)",overflowX:"hidden",overflowY:"auto",padding:8},filesDivHint:{position:"absolute",bottom:0,left:20,opacity:.7,fontStyle:"italic",fontSize:12},filesDivTable:{height:"calc(100% - 56px)"},filesDivTile:{height:"calc(100% - 104px)",display:"flex",alignContent:"flex-start",alignItems:"stretch",flexWrap:"wrap",flex:`0 0 ${Pn}px`},itemTile:i=>({position:"relative",userSelect:"none",cursor:"pointer",height:mi,width:Pn,display:"inline-block",textAlign:"center",opacity:.1,transition:"opacity 1s",margin:"4px",borderRadius:"4px","&:hover":{background:i.palette.secondary.light,color:E.invertColor(i.palette.secondary.main,!0)}}),itemNameFolderTile:{fontWeight:"bold"},itemNameTile:{width:"100%",height:32,overflow:"hidden",textOverflow:"ellipsis",fontSize:12,textAlign:"center",wordBreak:"break-all"},itemFolderIconTile:i=>({width:"100%",height:mi-32-16-8,display:"block",pl:1,color:i.palette.secondary.main||"#fbff7d"}),itemFolderIconBack:i=>({position:"absolute",top:22,left:18,zIndex:1,color:(i.palette.mode==="dark","#FFF")}),itemSizeTile:{width:"100%",height:16,textAlign:"center",fontSize:10},itemImageTile:{width:"calc(100% - 8px)",height:mi-32-16-8,margin:4,display:"block",textAlign:"center",objectFit:"contain"},itemIconTile:{width:"100%",height:mi-32-16-8,display:"block",objectFit:"contain"},itemSelected:i=>({background:i.palette.primary.main,color:E.invertColor(i.palette.primary.main,!0)}),itemTable:i=>({userSelect:"none",cursor:"pointer",height:js,display:"inline-flex",lineHeight:`${js}px`,"&:hover":{background:i.palette.secondary.light,color:E.invertColor(i.palette.secondary.main,!0)}}),itemNameTable:{display:"inline-block",pl:"10px",fontSize:"1rem",verticalAlign:"top",flexGrow:1,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden","@media screen and (max-width: 500px)":{textAlign:"end",direction:"rtl"}},itemNameFolderTable:{fontWeight:"bold"},itemSizeTable:{display:"inline-block",width:60,verticalAlign:"top",textAlign:"right",whiteSpace:"nowrap"},itemAccessTable:{verticalAlign:"top",width:60,textAlign:"right",paddingRight:5,display:"flex",justifyContent:"center"},itemImageTable:{display:"inline-block",width:30,marginTop:1,objectFit:"contain",maxHeight:30},itemNoImageTable:{marginTop:6},itemIconTable:{display:"inline-block",marginTop:1,width:30,height:30},itemFolderTable:{},itemFolderTemp:{opacity:.4},itemFolderIconTable:i=>({marginTop:"1px",marginLeft:"8px",display:"inline-block",width:30,height:30,color:i.palette.secondary.main||"#fbff7d"}),itemDownloadButtonTable:i=>({display:"inline-block",width:Tt,height:js,minWidth:Tt,verticalAlign:"middle",textAlign:"center",padding:0,borderRadius:`${Tt/2}px`,"&:hover":{backgroundColor:i.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.08)"},"& span":{pt:"9px"},"& svg":{width:14,height:14,fontSize:"1rem",mt:"-3px",verticalAlign:"middle",color:i.palette.mode==="dark"?"#EEE":"#111"}}),itemDownloadEmptyTable:{display:"inline-block",width:Tt,height:js,minWidth:Tt,padding:0},itemAclButtonTable:{width:Tt,height:js,minWidth:Tt,verticalAlign:"top",padding:0,fontSize:12,display:"flex"},itemDeleteButtonTable:{display:"inline-block",width:Tt,height:js,minWidth:Tt,verticalAlign:"top",padding:0,"& svg":{width:18,height:18,fontSize:"1.5rem"}},uploadDiv:{top:0,zIndex:1,bottom:0,left:0,right:0,position:"absolute",opacity:.9,textAlign:"center",background:"#FFFFFF"},uploadDivDragging:{opacity:1},uploadCenterDiv:i=>({m:"20px",border:"3px dashed grey",borderRadius:"30px",width:"calc(100% - 40px)",height:"calc(100% - 40px)",position:"relative",color:i.palette.mode==="dark"?"#222":"#CCC",display:"flex",alignItems:"center",justifyContent:"center"}),uploadCenterIcon:{width:"25%",height:"25%"},uploadCenterText:{fontSize:24,fontWeight:"bold"},uploadCloseButton:{zIndex:2,position:"absolute",top:30,right:30},uploadCenterTextAndIcon:{position:"absolute",height:"30%",width:"100%",margin:"auto",opacity:.3},menuButtonExpertActive:{color:"#c00000"},menuButtonRestrictActive:{color:"#c05000"},pathDiv:i=>({display:"flex",width:"calc(100% - 16px)",ml:1,mr:1,textOverflow:"clip",overflow:"hidden",whiteSpace:"nowrap",backgroundColor:i.palette.secondary.main,color:i.palette.secondary.contrastText,borderRadius:"4px 4px 0 0"}),pathDivInput:{width:"100%"},pathDivBreadcrumbDir:i=>({pl:"2px",pr:"2px",cursor:"pointer",color:"white","&:hover":{backgroundColor:i.palette.primary.main,color:i.palette.primary.contrastText}}),pathDivBreadcrumbSelected:{color:"#FFF"},backgroundImageLight:{background:"white"},backgroundImageDark:{background:"black"},backgroundImageColored:{background:"silver"},specialFolder:i=>({color:i.palette.mode==="dark"?"#229b0f":"#5dd300"}),tooltip:{pointerEvents:"none"}},Et="0_userdata.0";function gs(i){const e=(i||"").split("/");return e.length&&e.pop(),e.join("/")}function Sr(i){const e=E.getFileExtension(i);return!!(e!=null&&e.toLowerCase().match(/[a-z]+/)&&e.length<5)}const ie="Table",xr="Tile";function Rn(i,e){return i.folder&&e.folder?i.name>e.name?1:i.namee.name?1:i.name{var l;return u.startsWith(`${this.limitToPath}/`)||u===this.limitToPath||((l=this.limitToPath)==null?void 0:l.startsWith(`${u}/`))}))}catch{s=[]}let r;this.props.showViewTypeButton?r=this.localStorage.getItem("files.viewType")||ie:r=ie;let o=this.props.selected||this.localStorage.getItem("files.selected")||Et,M;if(e.restrictToFolder){o=e.restrictToFolder,M=e.restrictToFolder;const u=e.restrictToFolder.split("/");s=[];let l="";for(let N=0;N{if(this.state.viewType===ie&&!this.findItem(this.state.selected)){const t=this.state.selected.split("/");for(;t.length&&!this.findItem(t.join("/"));)t.pop();let s;t.length?s=t.join("/"):s=Et,this.setState({selected:s,path:s,pathFocus:!1},()=>this.scrollToSelected())}else this.scrollToSelected();this.initialReadFinished=!0})}scrollToSelected(){if(this.mounted){const e=document.getElementById(this.state.selected);e==null||e.scrollIntoView()}}async componentDidMount(){this.mounted=!0,this.loadFolders().catch(e=>console.error(`Cannot load folders: ${e}`)),this.browseList=[],this.browseListRunning=!1,this.supportSubscribes=await this.props.socket.checkFeatureSupported("BINARY_STATE_EVENT"),this.supportSubscribes&&await this.props.socket.subscribeFiles("*","*",this.onFileChange)}componentWillUnmount(){this.supportSubscribes&&this.props.socket.unsubscribeFiles("*","*",this.onFileChange),this.mounted=!1,this.browseList=null,this.browseListRunning=!1,Object.values(this._tempTimeout).forEach(e=>{e&&clearTimeout(e)}),this._tempTimeout={}}browseFoldersCb(e,t,s){if(!(e!=null&&e.length))s(t);else{const r=e.shift();r?this.browseFolder(r,t).catch(o=>console.error(`Cannot read folder ${r}: ${o.message}`)).then(()=>{setTimeout(()=>this.browseFoldersCb(e,t,s),0)}):setTimeout(()=>this.browseFoldersCb(e,t,s),0)}}browseFolders(e,t){let s;return t?s=t:(s={},Object.keys(this.state.folders).forEach(r=>s[r]=this.state.folders[r])),e!=null&&e.length?new Promise(r=>{this.browseFoldersCb(e,s,r)}):Promise.resolve(s)}readDirSerial(e,t){return new Promise((s,r)=>{this.browseList&&(this.browseList.push({resolve:s,reject:r,adapter:e,relPath:t}),this.browseListRunning||this.processBrowseList())})}processBrowseList(e=0){!this.browseListRunning&&this.browseList&&this.browseList.length&&(this.browseListRunning=!0,this.browseList.length>10?this.browseList.length%10||this.setState({queueLength:this.browseList.length}):this.setState({queueLength:this.browseList.length}),this.browseList[0].processing=!0,this.props.socket.readDir(this.browseList[0].adapter,this.browseList[0].relPath||"").then(t=>{if(this.browseList){const s=this.browseList.shift();if(s){const r=s.resolve;s.resolve=null,s.reject=null,s.adapter=null,s.relPath=null,r&&r(t),this.browseListRunning=!1,this.browseList.length?e<5?this.processBrowseList(e+1):setTimeout(()=>this.processBrowseList(0),0):this.setState({queueLength:0})}else this.setState({queueLength:0})}}).catch(t=>{if(this.browseList){const s=this.browseList.shift();if(s){const r=s.reject;s.resolve=null,s.reject=null,s.adapter=null,s.relPath=null,r&&r(t),this.browseListRunning=!1,this.browseList.length?e<5?this.processBrowseList(e+1):setTimeout(()=>this.processBrowseList(0),0):this.setState({queueLength:0})}else this.setState({queueLength:0})}}))}async browseFolder(e,t,s,r){let o;if(t?o=t:(o={},Object.keys(this.state.folders).forEach(c=>{o[c]=this.state.folders[c]})),o[e]&&!r)return s?Promise.resolve(o):new Promise((c,L)=>{Promise.all(o[e].filter(j=>j.folder).map(j=>this.browseFolder(j.id,o,!0).catch(()=>{}))).then(()=>c(o)).catch(j=>L(new Error(j)))});if(!e||e==="/"){try{let c=await this.props.socket.readMetaItems();const L=[];let j=null;if(this.state.restrictToFolder){const y=this.state.restrictToFolder.split("/")[0];c=c.filter(d=>d._id===y)}else this.state.expertMode||(c=c.filter(y=>!y._id.endsWith(".admin")));const g=c.findIndex(y=>y._id==="system.meta.uuid");if(g!==-1&&c.splice(g,1),c.forEach(y=>{if(this.limitToObjectID&&this.limitToObjectID!==y._id)return;const d={id:y._id,name:y._id,title:y.common&&y.common.name||y._id,meta:!0,from:y.from,ts:y.ts,color:y.common&&y.common.color,icon:y.common&&y.common.icon,folder:!0,acl:y.acl,level:0};d.id===Et?j=d:L.push(d)}),L.sort((y,d)=>y.id>d.id?1:y.idy.folder).map(y=>this.browseFolder(y.id,o,!0).catch(()=>{}))).then(()=>o)}catch(c){const L=c;this.initialReadFinished&&window.alert(`Cannot read meta items: ${L.message}`),o[e||"/"]=[]}return o}const M=e.split("/"),a=M.length,u=M.shift(),l=M.join("/");let N;try{N=await this.readDirSerial(u||"",l)}catch(c){if(c==="Not exists"&&u==="0_userdata.0")N=[];else throw c}try{const c=[];if(N.forEach(L=>{var g;const j={id:`${e}/${L.file}`,ext:E.getFileExtension(L.file),folder:L.isDir,name:L.file,size:(g=L.stats)==null?void 0:g.size,modified:L.modifiedAt,acl:L.acl,level:a};this.state.restrictToFolder?(j.folder&&(j.id.startsWith(`${this.state.restrictToFolder}/`)||j.id===this.state.restrictToFolder||this.state.restrictToFolder.startsWith(`${j.id}/`))||j.id.startsWith(`${this.state.restrictToFolder}/`))&&c.push(j):this.limitToPath?(j.folder&&(j.id.startsWith(`${this.limitToPath}/`)||j.id===this.limitToPath||this.limitToPath.startsWith(`${j.id}/`))||j.id.startsWith(`${this.limitToPath}/`))&&c.push(j):c.push(j)}),c.sort(Rn),o[e]=c,!s)return Promise.all(c.filter(L=>L.folder).map(L=>this.browseFolder(L.id,o,!0))).then(()=>o)}catch(c){const L=c;this.initialReadFinished&&window.alert(`Cannot read ${u}${l?`/${l}`:""}: ${L==null?void 0:L.message}`),o[e]=[]}return o}toggleFolder(e,t){t==null||t.stopPropagation();const s=[...this.state.expanded],r=s.indexOf(e.id);r===-1?(s.push(e.id),s.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(s)),e.temp?this.setState({expanded:s}):this.browseFolder(e.id).then(o=>this.setState({expanded:s,folders:o})).catch(o=>window.alert(o===Wn?this.props.t('ra_Cannot find "%s"',e.id):this.props.t('ra_Cannot read "%s"',e.id)))):(s.splice(r,1),this.localStorage.setItem("files.expanded",JSON.stringify(s)),this.setState({expanded:s}))}onFileChange=(e,t,s)=>{const r=`${e}/${t}`,o=r.lastIndexOf("/"),M=r.substring(0,o);console.log(`File changed ${r}[${s}]`),this.state.folders[M]&&(this._tempTimeout[M]&&clearTimeout(this._tempTimeout[M]),this._tempTimeout[M]=setTimeout(()=>{delete this._tempTimeout[M],this.browseFolder(M,null,!1,!0).then(a=>this.setState({folders:a})).catch(a=>console.error(`Cannot read folder: ${a.message}`))},300))};changeFolder(e,t){var r;e==null||e.stopPropagation(),this.lastSelect=Date.now();let s=t||gs(this.state.currentDir);if(s==="/"&&(s=""),this.state.viewType==="Tile"&&((r=this.refFileDiv.current)!=null&&r.scrollTop)&&(this.scrollPositions[this.state.currentDir]=this.refFileDiv.current.scrollTop),this.localStorage.setItem("files.currentDir",s),t&&e&&(e.altKey||e.shiftKey||e.ctrlKey||e.metaKey)){this.setState({selected:s});return}if(s&&!this.state.folders[s]){this.browseFolder(s).then(o=>this.setState({folders:o,path:s,currentDir:s,selected:s,pathFocus:!1},()=>this.props.onSelect&&this.props.onSelect(""))).catch(o=>console.error(`Cannot read folder: ${o.message}`));return}this.setState({currentDir:s,selected:s,path:s,pathFocus:!1},()=>{if(this.props.onSelect&&this.props.onSelect(""),this.state.viewType==="Tile"&&this.scrollPositions[this.state.currentDir]){const o=this.scrollPositions[this.state.currentDir];delete this.scrollPositions[this.state.currentDir],this.refFileDiv.current&&(this.refFileDiv.current.scrollTop=o)}})}select(e,t,s){t&&t.stopPropagation(),this.lastSelect=Date.now(),this.localStorage.setItem("files.selected",e),this.setState({selected:e,path:e,pathFocus:!1},()=>{if(this.props.onSelect){const r=E.getFileExtension(e);(!this.props.filterFiles||r&&this.props.filterFiles.includes(r))&&(!this.state.filterByType||r&&_e[this.state.filterByType].includes(r))?this.props.onSelect(e,!1,!!this.state.folders[e]):this.props.onSelect("")}s&&s()})}getText(e){if(e)return typeof e=="object"?e[this.props.lang]||e.en||void 0:e}renderFolder(e,t){var u;if(this.state.filterEmpty&&!((u=this.state.folders[e.id])!=null&&u.length)&&e.id!==Et&&!e.temp)return null;const s=t?bi:ms,r=this.state.viewType===ie?e.level*this.levelPadding:0,o=e.name===Et,M=o||e.name==="vis.0"||e.name==="vis-2.0",a=E.getStyle(this.props.theme,v[`itemFolderIcon${this.state.viewType}`],M&&v.specialFolder);return n.createElement(W,{component:"div",key:e.id,id:e.id,style:this.state.viewType===ie?{marginLeft:r,width:`calc(100% - ${r}px)`}:void 0,onClick:l=>this.state.viewType===ie?this.select(e.id,l):this.changeFolder(l,e.id),onDoubleClick:l=>this.state.viewType===ie&&this.toggleFolder(e,l),title:this.getText(e.title),className:"browserItem",sx:E.getStyle(this.props.theme,v[`item${this.state.viewType}`],v[`itemFolder${this.state.viewType}`],this.state.selected===e.id?v.itemSelected:{},e.temp?v.itemFolderTemp:{})},n.createElement(s,{style:a,onClick:this.state.viewType===ie?l=>this.toggleFolder(e,l):void 0}),n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,v[`itemName${this.state.viewType}`],v[`itemNameFolder${this.state.viewType}`])},o?this.props.t("ra_User files"):e.name),n.createElement(W,{component:"div",style:v[`itemSize${this.state.viewType}`],sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===ie&&this.state.folders[e.id]?this.state.folders[e.id].length:""),n.createElement(W,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===ie&&this.props.expertMode?this.formatAcl(e.acl):null),this.state.viewType===ie&&this.props.expertMode?n.createElement(W,{component:"div",sx:{...v.itemDeleteButtonTable,display:{md:"inline-block",sm:"none"}}}):null,this.state.viewType===ie&&this.props.allowDownload?n.createElement("div",{style:v[`itemDownloadEmpty${this.state.viewType}`]}):null,this.state.viewType===ie&&this.props.allowDelete&&this.state.folders[e.id]&&this.state.folders[e.id].length?n.createElement(P,{"aria-label":"delete",onClick:l=>{l.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(e.id):this.setState({deleteItem:e.id})},sx:v[`itemDeleteButton${this.state.viewType}`],size:"large"},n.createElement(ut,{fontSize:"small"})):this.state.viewType===ie&&this.props.allowDelete?n.createElement(W,{component:"div",sx:v[`itemDeleteButton${this.state.viewType}`]}):null)}renderBackFolder(){return n.createElement(W,{component:"div",key:this.state.currentDir,id:this.state.currentDir,onClick:e=>this.changeFolder(e),title:this.props.t("ra_Back to %s",gs(this.state.currentDir)),className:"browserItem",sx:E.getStyle(this.props.theme,v[`item${this.state.viewType}`],v[`itemFolder${this.state.viewType}`])},n.createElement(ms,{style:E.getStyle(this.props.theme,v[`itemFolderIcon${this.state.viewType}`])}),n.createElement(Dl,{sx:v.itemFolderIconBack}),n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,v[`itemName${this.state.viewType}`],v[`itemNameFolder${this.state.viewType}`])},".."))}formatSize(e){return n.createElement("div",{style:v[`itemSize${this.state.viewType}`]},e||e===0?E.formatBytes(e):"")}formatAcl(e){const t=e?e.permissions||e.file:0;let s;return t?s=t.toString(16).padStart(3,"0"):s="",n.createElement("div",{style:v[`itemAccess${this.state.viewType}`]},this.props.modalEditOfAccessControl?n.createElement(P,{size:"large",onClick:()=>this.setState({modalEditOfAccess:!0}),sx:v[`itemAclButton${this.state.viewType}`]},s||"---"):s||"---")}getFileIcon(e){switch(e){case"json":case"json5":return n.createElement(hl,{style:v[`itemIcon${this.state.viewType}`]});case"css":return n.createElement(zl,{style:v[`itemIcon${this.state.viewType}`]});case"js":case"ts":return n.createElement(Wo,{style:v[`itemIcon${this.state.viewType}`]});case"html":case"md":return n.createElement(tr,{style:v[`itemIcon${this.state.viewType}`]});case"mp3":case"ogg":case"wav":case"m4a":case"mp4":case"flac":return n.createElement(dl,{style:v[`itemIcon${this.state.viewType}`]});default:return n.createElement(Ga,{style:v[`itemIcon${this.state.viewType}`]})}}static getEditFile(e){switch(e){case"json":case"json5":case"js":case"html":case"txt":case"css":case"log":case"csv":return!0;default:return!1}}setStateBackgroundImage=()=>{const e=["light","dark","colored","delete"];this.setState(({backgroundImage:t})=>t&&e.indexOf(t)!==-1&&e.length-1!==e.indexOf(t)?(this.localStorage.setItem("files.backgroundImage",e[e.indexOf(t)+1]),{backgroundImage:e[e.indexOf(t)+1]}):(this.localStorage.setItem("files.backgroundImage",e[0]),{backgroundImage:e[0]}))};getStyleBackgroundImage=()=>{switch(this.state.backgroundImage){case"light":return v.backgroundImageLight;case"dark":return v.backgroundImageDark;case"colored":return v.backgroundImageColored;case"delete":return null;default:return null}};renderFile(e){const t=this.state.viewType===ie?e.level*this.levelPadding:0,s=E.getFileExtension(e.name);return n.createElement(W,{component:"div",key:e.id,id:e.id,onDoubleClick:r=>{r.stopPropagation(),this.props.onSelect?(!this.props.filterFiles||e.ext&&this.props.filterFiles.includes(e.ext))&&(!this.state.filterByType||e.ext&&_e[this.state.filterByType].includes(e.ext))&&this.props.onSelect(e.id,!0,!!this.state.folders[e.id]):this.setState({viewer:this.imagePrefix+e.id,formatEditFile:s})},onClick:r=>this.select(e.id,r),style:this.state.viewType===ie?{marginLeft:t,width:`calc(100% - ${t}px)`}:void 0,className:"browserItem",sx:E.getStyle(this.props.theme,v[`item${this.state.viewType}`],v[`itemFile${this.state.viewType}`],this.state.selected===e.id?v.itemSelected:void 0)},s&&_e.images.includes(s)?this.state.fileErrors.includes(e.id)?n.createElement(iM,{style:{...v[`itemImage${this.state.viewType}`],...this.getStyleBackgroundImage(),...v[`itemNoImage${this.state.viewType}`]}}):n.createElement(xe,{onError:r=>{r.target.onerror=null;const o=[...this.state.fileErrors];o.includes(e.id)||(o.push(e.id),this.setState({fileErrors:o}))},style:{...v[`itemImage${this.state.viewType}`],...this.getStyleBackgroundImage()},src:this.imagePrefix+e.id,alt:e.name}):this.getFileIcon(s),n.createElement(W,{component:"div",sx:v[`itemName${this.state.viewType}`]},e.name),n.createElement(W,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.formatSize(e.size)),n.createElement(W,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===ie&&this.props.expertMode?this.formatAcl(e.acl):null),n.createElement(W,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===ie&&this.props.expertMode&&rM.getEditFile(s)?n.createElement(P,{"aria-label":"edit",onClick:r=>{r.stopPropagation(),this.props.onSelect?(!this.props.filterFiles||e.ext&&this.props.filterFiles.includes(e.ext))&&(!this.state.filterByType||e.ext&&_e[this.state.filterByType].includes(e.ext))&&this.props.onSelect(e.id,!0,!!this.state.folders[e.id]):this.setState({viewer:this.imagePrefix+e.id,formatEditFile:s})},sx:v.itemDeleteButtonTable,size:"large"},n.createElement(Ks,{fontSize:"small"})):n.createElement(W,{component:"div",sx:v[`itemDeleteButton${this.state.viewType}`]})),this.state.viewType===ie&&this.props.allowDownload?n.createElement(W,{component:"a",className:"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge",sx:v.itemDownloadButtonTable,tabIndex:0,download:e.id,href:this.imagePrefix+e.id,onClick:r=>r.stopPropagation()},n.createElement(Il,null)):null,this.state.viewType===ie&&this.props.allowDelete&&e.id!=="vis.0/"&&e.id!=="vis-2.0/"&&e.id!==Et?n.createElement(P,{"aria-label":"delete",onClick:r=>{r.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(e.id):this.setState({deleteItem:e.id})},sx:v[`itemDeleteButton${this.state.viewType}`],size:"large"},n.createElement(ut,{fontSize:"small"})):this.state.viewType===ie&&this.props.allowDelete?n.createElement(W,{component:"div",sx:v[`itemDeleteButton${this.state.viewType}`]}):null)}renderItems(e){var t;if((t=this.state.folders)!=null&&t[e]){if(this.state.viewType===xr){const r=[];return e&&e!=="/"&&r.push(this.renderBackFolder()),this.state.folders[e].forEach(o=>{o.folder?r.push(this.renderFolder(o)):(!this.props.filterFiles||o.ext&&this.props.filterFiles.includes(o.ext))&&(!this.state.filterByType||o.ext&&_e[this.state.filterByType].includes(o.ext))&&r.push(this.renderFile(o))}),r}const s=[];return this.state.folders[e].forEach(r=>{if(r.folder){const o=this.state.expanded.includes(r.id),M=this.renderFolder(r,o);if(Array.isArray(M)?M.forEach(a=>s.push(a)):s.push(M),this.state.folders[r.id]&&o){const a=this.renderItems(r.id);Array.isArray(a)?a.forEach(u=>s.push(u)):s.push(a)}}else(!this.props.filterFiles||r.ext&&this.props.filterFiles.includes(r.ext))&&(!this.state.filterByType||r.ext&&_e[this.state.filterByType].includes(r.ext))&&s.push(this.renderFile(r))}),s}return n.createElement("div",{style:{position:"relative"}},n.createElement(er,{key:e,color:"secondary",size:24}),n.createElement("div",{style:{position:"absolute",zIndex:2,top:4,width:24,textAlign:"center"}},this.state.queueLength))}renderToolbar(){const e=this.props.showTypeSelector?pi[this.state.filterByType||"all"]||pi.all:null,t=this.findFirstFolder(this.state.selected);return n.createElement(Wa,{key:"toolbar",variant:"dense"},this.props.allowNonRestricted&&this.props.restrictToFolder?n.createElement(P,{edge:"start",title:this.state.restrictToFolder?this.props.t("ra_Show all folders"):this.props.t("ra_Restrict to folder"),style:{...v.menuButton,...this.state.restrictToFolder?v.menuButtonRestrictActive:void 0},"aria-label":"restricted to folder",onClick:()=>this.setState({restrictToFolder:(this.state.restrictToFolder?"":this.props.restrictToFolder)||"",loadAllFolders:!0}),size:"small"},n.createElement(pl,{fontSize:"small"})):null,this.props.showExpertButton?n.createElement(P,{edge:"start",title:this.props.t("ra_Toggle expert mode"),style:{...v.menuButton,...this.state.expertMode?v.menuButtonExpertActive:void 0},"aria-label":"expert mode",onClick:()=>this.setState({expertMode:!this.state.expertMode}),size:"small"},n.createElement(No,null)):null,this.props.showViewTypeButton?n.createElement(P,{edge:"start",title:this.props.t("ra_Toggle view mode"),style:v.menuButton,"aria-label":"view mode",onClick:()=>{const s=this.state.viewType===ie?xr:ie;this.localStorage.setItem("files.viewType",s);let r=this.state.selected;Sr(r)&&(r=gs(r)),this.setState({viewType:s,currentDir:r},()=>{this.state.viewType===ie&&this.scrollToSelected()})},size:"small"},this.state.viewType!==ie?n.createElement(Ol,{fontSize:"small"}):n.createElement(El,{fontSize:"small"})):null,n.createElement(P,{edge:"start",title:this.props.t("ra_Hide empty folders"),style:v.menuButton,color:this.state.filterEmpty?"secondary":"inherit","aria-label":"filter empty",onClick:()=>{this.localStorage.setItem("file.empty",this.state.filterEmpty?"false":"true"),this.setState({filterEmpty:!this.state.filterEmpty})},size:"small"},n.createElement(_l,{fontSize:"small"})),n.createElement(P,{edge:"start",title:this.props.t("ra_Reload files"),style:v.menuButton,color:"inherit","aria-label":"reload files",onClick:()=>this.setState({folders:{}},()=>this.loadFolders()),size:"small"},n.createElement(Fa,{fontSize:"small"})),this.props.allowCreateFolder?n.createElement(P,{edge:"start",disabled:!this.state.selected||!t||!!this.limitToPath&&!this.state.selected.startsWith(`${this.limitToPath}/`)&&this.limitToPath!==this.state.selected,title:this.props.t("ra_Create folder"),style:v.menuButton,color:"inherit","aria-label":"add folder",onClick:()=>this.setState({addFolder:!0}),size:"small"},n.createElement(Ha,{fontSize:"small"})):null,this.props.allowUpload?n.createElement(P,{edge:"start",disabled:!this.state.selected||!t||!!this.limitToPath&&!this.state.selected.startsWith(`${this.limitToPath}/`)&&this.limitToPath!==this.state.selected,title:this.props.t("ra_Upload file"),style:v.menuButton,color:"inherit","aria-label":"upload file",onClick:()=>this.setState({uploadFile:!0}),size:"small"},n.createElement(Ri,{fontSize:"small"})):null,this.props.showTypeSelector&&e?n.createElement(ae,{title:this.props.t("ra_Filter files"),slotProps:{popper:{sx:v.tooltip}}},n.createElement(P,{size:"small",onClick:s=>this.setState({showTypesMenu:s.target})},n.createElement(e,{fontSize:"small"}))):null,this.state.showTypesMenu?n.createElement(ss,{open:!0,anchorEl:this.state.showTypesMenu,onClose:()=>this.setState({showTypesMenu:null})},Object.keys(pi).map(s=>{const r=pi[s];return n.createElement(te,{key:s,selected:this.state.filterByType===s,onClick:()=>{s==="all"?(this.localStorage.removeItem("files.filterByType"),this.setState({filterByType:"",showTypesMenu:null})):(this.localStorage.setItem("files.filterByType",s),this.setState({filterByType:s,showTypesMenu:null}))}},n.createElement(Yt,null,n.createElement(r,{fontSize:"small"})),n.createElement(nt,null,this.props.t(`ra_fileType_${s}`)))})):null,n.createElement(ae,{title:this.props.t("ra_Background image"),slotProps:{popper:{sx:v.tooltip}}},n.createElement(P,{color:"inherit",edge:"start",style:v.menuButton,onClick:this.setStateBackgroundImage,size:"small"},n.createElement(Po,{fontSize:"small"}))),this.state.viewType!==ie&&this.props.allowDelete?n.createElement(ae,{title:this.props.t("ra_Delete"),slotProps:{popper:{sx:v.tooltip}}},n.createElement("span",null,n.createElement(P,{"aria-label":"delete",disabled:!this.state.selected||this.state.selected==="vis.0/"||this.state.selected==="vis-2.0/"||this.state.selected===Et,color:"inherit",edge:"start",style:v.menuButton,onClick:s=>{s.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(this.state.selected):this.setState({deleteItem:this.state.selected})},size:"small"},n.createElement(ut,{fontSize:"small"})))):null)}findItem(e,t){if(t=t||this.state.folders,!t)return null;const s=e.split("/");s.pop();const r=s.join("/")||"/";return t[r]&&t[r].find(o=>o.id===e)||null}renderInputDialog(){if(this.state.addFolder){const e=this.findFirstFolder(this.state.selected);return e?n.createElement(ile,{key:"inputDialog",applyText:this.props.t("ra_Create"),cancelText:this.props.t("ra_Cancel"),titleText:this.props.t("ra_Create new folder in %s",this.state.selected),promptText:this.props.t("ra_If no file will be created in the folder, it will disappear after the browser closed"),labelText:this.props.t("ra_Folder name"),verify:t=>this.state.folders[e].find(s=>s.name===t)?"":this.props.t("ra_Duplicate name"),onClose:t=>{if(t){const s={};Object.keys(this.state.folders).forEach(a=>s[a]=this.state.folders[a]);const r=this.findItem(e),o=`${e}/${t}`;s[e].push({id:o,level:((r==null?void 0:r.level)||0)+1,name:t,folder:!0,temp:!0}),s[e].sort(Rn),s[o]=[];const M=[...this.state.expanded];M.includes(e)||(M.push(e),M.sort()),this.localStorage.setItem("files.expanded",JSON.stringify(M)),this.setState({addFolder:!1,folders:s,expanded:M},()=>this.select(o))}else this.setState({addFolder:!1})},replace:t=>t.replace(/[^-_\w]/,"_")}):(window.alert(this.props.t("ra_Invalid parent folder!")),null)}return null}componentDidUpdate(){this.setOpacityTimer&&clearTimeout(this.setOpacityTimer),this.setOpacityTimer=setTimeout(()=>{this.setOpacityTimer=null;const e=window.document.getElementsByClassName("browserItem");for(let t=0;tthis.setState({uploadFile:!1})},n.createElement(ge,null)),n.createElement(Xa,{key:"dropzone",onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:e=>{let t=e.length;e.forEach(s=>{const r=new FileReader;r.onabort=()=>console.log("file reading was aborted"),r.onerror=()=>console.log("file reading has failed"),r.onload=()=>{const o=this.findFirstFolder(this.state.selected);if(!o)window.alert(this.props.t("ra_Invalid parent folder!"));else{const M=`${o}/${s.name}`;this.uploadFile(M,r.result).then(()=>{--t||this.setState({uploadFile:!1},()=>{if(this.supportSubscribes){const a=[...this.state.expanded];a.includes(o)||(a.push(o),a.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(a))),this.setState({expanded:a},()=>this.select(M))}else setTimeout(()=>this.browseFolder(o,null,!1,!0).then(a=>{const u=[...this.state.expanded];u.includes(o)||(u.push(o),u.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(u))),this.setState({folders:a,expanded:u},()=>this.select(M))}),500)})})}},r.readAsArrayBuffer(s)})}},({getRootProps:e,getInputProps:t})=>n.createElement("div",{style:{...v.uploadDiv,...this.state.uploadFile==="dragging"?v.uploadDivDragging:void 0},...e()},n.createElement("input",{...t()}),n.createElement(W,{component:"div",sx:v.uploadCenterDiv},n.createElement("div",{style:v.uploadCenterTextAndIcon},n.createElement(Ri,{style:v.uploadCenterIcon}),n.createElement("div",{style:v.uploadCenterText},this.state.uploadFile==="dragging"?this.props.t("ra_Drop file here"):this.props.t("ra_Place your files here or click here to open the browse dialog"))))))]:null}deleteRecursive(e){const t=this.findItem(e);if(t!=null&&t.folder)return(this.state.folders[e]?Promise.all(this.state.folders[e].map(o=>this.deleteRecursive(o.id))):Promise.resolve()).then(()=>{if(t.level>=1){const o=e.split("/"),M=o.shift();this.props.socket.deleteFolder(M||"",o.join("/")).then(()=>{const a=JSON.parse(JSON.stringify(this.state.folders));delete a[t.id];const u=gs(t.id),l=a[u];if(l){const N=l.findIndex(c=>c.id===t.id);N!==-1&&l.splice(N,1),this.select(u,null,()=>this.setState({folders:a}))}})}});const s=e.split("/"),r=s.shift();return s.length?this.props.socket.deleteFile(r||"",s.join("/")).catch(o=>window.alert(`Cannot delete file: ${o}`)):Promise.resolve()}deleteItem(e){e=e||this.state.deleteItem,this.state.suppressDeleteConfirm&&(this.suppressDeleteConfirm=Date.now()+6e4*5),this.setState({deleteItem:"",suppressDeleteConfirm:!1},()=>this.deleteRecursive(e).then(()=>{const t={},s=this.state.expanded.indexOf(e);if(s!==-1){const r=[...this.state.expanded];r.splice(s,1),this.localStorage.setItem("files.expanded",JSON.stringify(r)),t.expanded=r}if(this.state.selected===e){const r=this.state.selected.split("/");r.pop(),t.selected=r.join("/")}if(this.supportSubscribes)this.setState(t);else{const r=this.findFirstFolder(e),o={};Object.keys(this.state.folders).forEach(M=>{M!==r&&!M.startsWith(`${r}/`)&&(o[M]=this.state.folders[M])}),t.folders=o,this.setState(t,()=>setTimeout(()=>{this.browseFolders([...this.state.expanded],o).then(M=>this.setState({folders:M})).catch(M=>console.error(M))},200))}}))}renderDeleteDialog(){return this.state.deleteItem?n.createElement(de,{key:"deleteDialog",open:!0,onClose:()=>this.setState({deleteItem:""}),"aria-labelledby":"ar_dialog_file_delete_title"},n.createElement(Ie,{id:"ar_dialog_file_delete_title"},this.props.t("ra_Confirm deletion of %s",this.state.deleteItem.split("/").pop())),n.createElement(Ae,null,n.createElement(Jt,null,this.props.t("ra_Are you sure?")),n.createElement(H,{control:n.createElement(ne,{checked:this.state.suppressDeleteConfirm,onChange:()=>{this.setState({suppressDeleteConfirm:!this.state.suppressDeleteConfirm})}}),label:this.props.t("ra_no confirm for 5 mins")})),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.deleteItem(""),color:"primary",autoFocus:!0},this.props.t("ra_Delete")),n.createElement(X,{variant:"contained",onClick:()=>this.setState({deleteItem:""}),color:"grey"},this.props.t("ra_Cancel")))):null}renderViewDialog(){const e=this.props.FileViewer||ple;return this.state.viewer?n.createElement(e,{supportSubscribes:this.supportSubscribes||void 0,key:this.state.viewer,href:this.state.viewer,formatEditFile:this.state.formatEditFile||void 0,themeType:this.props.themeType||"light",setStateBackgroundImage:this.setStateBackgroundImage,getStyleBackgroundImage:this.getStyleBackgroundImage,t:this.props.t,socket:this.props.socket,onClose:()=>this.setState({viewer:"",formatEditFile:""})}):null}renderError(){return this.state.errorText?n.createElement(Zc,{key:"errorDialog",text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}updateItemsAcl(e){this.cacheFolders||=JSON.parse(JSON.stringify(this.state.folders));let t;e.forEach(s=>{const r=this.findItem(s.id,this.cacheFolders);r&&JSON.stringify(r.acl)!==JSON.stringify(s.acl)&&(r.acl=s.acl,t=!0)}),t&&(this.cacheFoldersTimeout&&clearTimeout(this.cacheFoldersTimeout),this.cacheFoldersTimeout=setTimeout(()=>{this.cacheFoldersTimeout=null;const s=this.cacheFolders||{};this.cacheFolders=null,this.setState({folders:s})},200))}changeToPath(){setTimeout(()=>{if(this.state.path!==this.state.selected&&(!this.lastSelect||Date.now()-this.lastSelect>100)){let e=this.state.path;Sr(this.state.path)&&(e=gs(this.state.path)),new Promise(t=>{this.state.folders[e]?t(!0):this.browseFolder(e).then(s=>this.setState({folders:s},()=>t(!0))).catch(s=>this.setState({errorText:s===Wn?this.props.t('ra_Cannot find "%s"',e):this.props.t('ra_Cannot read "%s"',e)}))}).then(t=>t&&this.setState({selected:this.state.path,currentDir:e,pathFocus:!1})).catch(t=>console.error(t))}else(!this.lastSelect||Date.now()-this.lastSelect>100)&&this.setState({pathFocus:!1})},100)}renderBreadcrumb(){const e=this.state.currentDir.startsWith("/")?this.state.currentDir.split("/"):`/${this.state.currentDir}`.split("/"),t=[];return n.createElement(al,{style:{paddingLeft:8,color:"#FFF"}},e.map((s,r)=>{s&&t.push(s);const o=t.join("/");return rthis.changeFolder(M,o||"/")},s||this.props.t("ra_Root")):n.createElement("div",{style:v.pathDivBreadcrumbSelected,key:`${this.state.selected}_${r}`,onClick:()=>this.setState({pathFocus:!0})},s)}))}renderPath(){return n.createElement(W,{component:"div",key:"path",sx:v.pathDiv},this.state.pathFocus?n.createElement(vt,{value:this.state.path,onKeyDown:e=>{e.key==="Enter"?this.changeToPath():e.key==="Escape"&&this.setState({pathFocus:!1})},endAdornment:n.createElement(P,{size:"small",onClick:()=>this.changeToPath()},n.createElement(fl,null)),onBlur:()=>this.changeToPath(),onChange:e=>this.setState({path:e.target.value}),style:v.pathDivInput}):this.renderBreadcrumb())}render(){return this.props.ready?(this.state.loadAllFolders&&!this.foldersLoading&&(this.foldersLoading=!0,setTimeout(()=>{this.setState({loadAllFolders:!1,folders:{}},()=>{this.foldersLoading=!1,this.loadFolders().catch(e=>console.error(`Cannot load folders: ${e}`))})},300)),n.createElement("div",{style:{...v.root,...this.props.style},className:this.props.className},this.props.showToolbar?this.renderToolbar():null,this.state.viewType===xr?this.renderPath():null,n.createElement("div",{style:{...v.filesDiv,...v[`filesDiv${this.state.viewType}`]},onClick:e=>{this.state.viewType!==ie&&(this.state.selected!==(this.state.currentDir||"/")?this.changeFolder(e,this.state.currentDir||"/"):e.stopPropagation())},id:"dev",ref:this.refFileDiv},this.state.viewType===ie?this.renderItems("/"):this.renderItems(this.state.currentDir||"/"),this.state.viewType!==ie?n.createElement("div",{style:v.filesDivHint},this.props.t("ra_select_folder_hint")):null),this.props.allowUpload?this.renderInputDialog():null,this.props.allowUpload?this.renderUpload():null,this.props.allowDelete?this.renderDeleteDialog():null,this.props.allowView?this.renderViewDialog():null,this.state.modalEditOfAccess&&this.props.modalEditOfAccessControl?this.props.modalEditOfAccessControl(this):null,this.renderError())):n.createElement(cl,null)}}const Ole=Nr()(rM),Ele="PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSIwIC0xMjAgNDgwIDQ4MCIgd2lkdGg9IjQ4MHB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00NzIgMGgtNDY0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djE5MmMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDMydjI0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoNDBjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMjRoMjg4djI0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoNDBjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMjRoMzJjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMTkyYzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS0zOTIgMjI0aC0yNHYtMTZoMjR6bTM0NCAwaC0yNHYtMTZoMjR6bTQwLTMyaC00NDh2LTE3Nmg0NDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2IDE3NmMzNS4zNDc2NTYgMCA2NC0yOC42NTIzNDQgNjQtNjRzLTI4LjY1MjM0NC02NC02NC02NC02NCAyOC42NTIzNDQtNjQgNjRjLjAzOTA2MiAzNS4zMjgxMjUgMjguNjcxODc1IDYzLjk2MDkzOCA2NCA2NHptLTgtMTExLjI4MTI1djE1LjI4MTI1aDE2di0xNS4yODEyNWMyNC42MDU0NjkgNC4xNjAxNTYgNDEuOTE3OTY5IDI2LjQ3NjU2MiAzOS44MzIwMzEgNTEuMzQzNzUtMi4wODU5MzcgMjQuODY3MTg4LTIyLjg3ODkwNiA0My45ODQzNzUtNDcuODMyMDMxIDQzLjk4NDM3NXMtNDUuNzQ2MDk0LTE5LjExNzE4Ny00Ny44MzIwMzEtNDMuOTg0Mzc1Yy0yLjA4NTkzOC0yNC44NjcxODggMTUuMjI2NTYyLTQ3LjE4MzU5NCAzOS44MzIwMzEtNTEuMzQzNzV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYwIDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjAgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTEyOCAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im05NiAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTY0IDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im02NCA2NGgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjggMTc2YzE2LjA5Mzc1LjAxOTUzMSAyOS42ODc1LTExLjkzNzUgMzEuNzE4NzUtMjcuOTA2MjUgMi4wMzUxNTYtMTUuOTY0ODQ0LTguMTMyODEyLTMwLjk0NTMxMi0yMy43MTg3NS0zNC45NTcwMzF2LTE3LjEzNjcxOWgtMTZ2MTcuMTM2NzE5Yy0xNS41ODU5MzggNC4wMTE3MTktMjUuNzUzOTA2IDE4Ljk5MjE4Ny0yMy43MTg3NSAzNC45NTcwMzEgMi4wMzEyNSAxNS45Njg3NSAxNS42MjUgMjcuOTI1NzgxIDMxLjcxODc1IDI3LjkwNjI1em0wLTQ4YzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZzLTcuMTY0MDYyIDE2LTE2IDE2LTE2LTcuMTY0MDYyLTE2LTE2IDcuMTY0MDYyLTE2IDE2LTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0NCAxNzZjMTYuMDkzNzUuMDE5NTMxIDI5LjY4NzUtMTEuOTM3NSAzMS43MTg3NS0yNy45MDYyNSAyLjAzNTE1Ni0xNS45NjQ4NDQtOC4xMzI4MTItMzAuOTQ1MzEyLTIzLjcxODc1LTM0Ljk1NzAzMXYtMTcuMTM2NzE5aC0xNnYxNy4xMzY3MTljLTE1LjU4NTkzOCA0LjAxMTcxOS0yNS43NTM5MDYgMTguOTkyMTg3LTIzLjcxODc1IDM0Ljk1NzAzMSAyLjAzMTI1IDE1Ljk2ODc1IDE1LjYyNSAyNy45MjU3ODEgMzEuNzE4NzUgMjcuOTA2MjV6bTAtNDhjOC44MzU5MzggMCAxNiA3LjE2NDA2MiAxNiAxNnMtNy4xNjQwNjIgMTYtMTYgMTYtMTYtNy4xNjQwNjItMTYtMTYgNy4xNjQwNjItMTYgMTYtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNjQgMTc2YzE2LjA5Mzc1LjAxOTUzMSAyOS42ODc1LTExLjkzNzUgMzEuNzE4NzUtMjcuOTA2MjUgMi4wMzUxNTYtMTUuOTY0ODQ0LTguMTMyODEyLTMwLjk0NTMxMi0yMy43MTg3NS0zNC45NTcwMzF2LTE3LjEzNjcxOWgtMTZ2MTcuMTM2NzE5Yy0xNS41ODU5MzggNC4wMTE3MTktMjUuNzUzOTA2IDE4Ljk5MjE4Ny0yMy43MTg3NSAzNC45NTcwMzEgMi4wMzEyNSAxNS45Njg3NSAxNS42MjUgMjcuOTI1NzgxIDMxLjcxODc1IDI3LjkwNjI1em0wLTQ4YzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZzLTcuMTY0MDYyIDE2LTE2IDE2LTE2LTcuMTY0MDYyLTE2LTE2IDcuMTY0MDYyLTE2IDE2LTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwOCAxMTJoMzJjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMzJjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2NjRjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOHptOC02NGgxNnYxNmgtMTZ6bTAgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQzMiAxMzZjMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHMtOC0zLjU4MjAzMS04LTggMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyIDE2OGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",_le="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNTA3LjU0NiAxMDUuMTI1YzAtMS4wNDQtLjIwNS0yLjA5MS0uNjQ3LTMuMDcybC00My45My05Ny42M2MtMS4yMS0yLjY5Mi0zLjg4OC00LjQyMy02LjgzOS00LjQyM2gtMTgyLjYzYy00LjE0MyAwLTcuNSAzLjM1Ny03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDIzLjgxMnY4Mi42M2gtODIuNjI1di04Mi42M2gyMy44MTNjNC4xNDMgMCA3LjUtMy4zNTcgNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTE4Mi42M2MtMi45NTEgMC01LjYyOSAxLjczMS02Ljg0IDQuNDIzbC00My45MyA5Ny42M2MtLjQ0MS45ODEtLjY0NiAyLjAyOC0uNjQ3IDMuMDcyaC0uMDE1djEyLjIwM2MwIDI5LjUxNCAyMi44MjcgNTMuNzggNTEuNzUxIDU2LjExMmwzMS44NjUgNTguNDE5aC00LjAwN2MtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgxNi42MzNjLjAwNSAwIC4wMS4wMDEuMDE1LjAwMXMuMDExLS4wMDEuMDE2LS4wMDFoMTYuNjE4YzQuMTQzIDAgNy41LTMuMzU3IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xMi4xODlsLTMyLjQ1Ni01OS41MDNjMTUuNzUtMy40MTMgMjkuMDU3LTEzLjQzMyAzNi44NzktMjcuMDAzIDkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzcuODIyIDEzLjU3MSAyMS4xMjkgMjMuNTkxIDM2Ljg3OSAyNy4wMDNsLTMyLjQ1NiA1OS41MDNoLTEyLjE4OGMtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgxNi42MThjLjAwNSAwIC4wMTEuMDAxLjAxNi4wMDFzLjAxLS4wMDEuMDE1LS4wMDFoMTYuNjMzYzQuMTQzIDAgNy41LTMuMzU3IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC00LjAwN2wzMS44NjUtNTguNDE5YzI4LjkyNC0yLjMzMiA1MS43NTEtMjYuNTk4IDUxLjc1MS01Ni4xMTJ2LTEyLjIwM3ptLTE5LjA4NS03LjQ5NWgtNzguNTIzdi04Mi42M2g0MS4zNDN6bS05My41MjMtODIuNjN2ODIuNjNoLTgyLjYyNXYtODIuNjN6bS0xOTUuMjUgODIuNjNoLTgyLjYyNXYtODIuNjNoODIuNjI1em0tMTM4Ljk2OC04Mi42M2g0MS4zNDN2ODIuNjNoLTc4LjUyNHptLjAzNCAxNDMuNjQxYy0uMDExIDAtLjAyMS0uMDAxLS4wMzItLjAwMS0yMi43NjctLjAxNS00MS4yODUtMTguNTQyLTQxLjI4NS00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMwIDIyLjc3OC0xOC41MzEgNDEuMzEtNDEuMzA4IDQxLjMxM3ptOTcuNjIxIDBjLTIyLjc3OSAwLTQxLjMxMi0xOC41MzMtNDEuMzEyLTQxLjMxMnYtNC42OThoODIuNjI1djQuNjk4YzAgMjIuNzc4LTE4LjUzNCA0MS4zMTItNDEuMzEzIDQxLjMxMnptOTcuNjI1IDBjLTIyLjc3OSAwLTQxLjMxMi0xOC41MzMtNDEuMzEyLTQxLjMxMnYtNC42OThoODIuNjI1djQuNjk4Yy0uMDAxIDIyLjc3OC0xOC41MzQgNDEuMzEyLTQxLjMxMyA0MS4zMTJ6bTk3LjYyNSAwYy0yMi43NzkgMC00MS4zMTItMTguNTMzLTQxLjMxMi00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMwIDIyLjc3OC0xOC41MzQgNDEuMzEyLTQxLjMxMyA0MS4zMTJ6bTk3LjY0OC0uMDAxYy0uMDA1IDAtLjAwOSAwLS4wMTQgMC0uMDAzIDAtLjAwNiAwLS4wMDkgMC0yMi43NzkgMC00MS4zMTItMTguNTMzLTQxLjMxMi00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMtLjAwMSAyMi43NzItMTguNTIxIDQxLjMtNDEuMjkgNDEuMzEyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",fle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUwOC41MzYgNTA4LjUzNiIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDk4LjUzNiAzNDQuMzIxaC0xNy4yOThjLjQzNC0xNy42NzItMTAuMjY3LTM0LjIxMi0yOS41NDctMzQuMjEycy0yOS45ODIgMTYuNTQtMjkuNTQ3IDM0LjIxMmgtMTcuMjk4Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwdjI1LjY5N2MwIDI0LjYwMSAxNS43MTIgNDUuNTk2IDM3LjYyNSA1My40OTRsLTExLjYwMSAxMS42MDFjLTExLjA4NiAxMS4wODYtMjUuODI2IDE3LjE5MS00MS41MDMgMTcuMTkxLTMyLjM2NCAwLTU4LjY5My0yNi4zMy01OC42OTMtNTguNjkzdi02Ni42NGMzNi4wODggMS4yNjYgNTcuODQ2LTIyLjM5IDgxLjE0OS00NS42OTQgMjguNTE3LTMuMDI0IDUwLjgwOS0yNy4yMTYgNTAuODA5LTU2LjUyMnYtMjUuNjk4YzAtNS41MjMtNC40NzctMTAtMTAtMTBoLTE3LjI5OGMuNDM0LTE3LjY3MS0xMC4yNjctMzQuMjEyLTI5LjU0Ny0zNC4yMTJzLTI5Ljk4MiAxNi41NC0yOS41NDcgMzQuMjEyaC0xNy4zYy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwdjI1LjY5OGMwIDI0LjYwMSAxNS43MTEgNDUuNTk2IDM3LjYyNSA1My40OTRsLTExLjYwMSAxMS42MDFjLTExLjA4NiAxMS4wODYtMjUuODI2IDE3LjE5MS00MS41MDMgMTcuMTkxLTMyLjM2NCAwLTU4LjY5My0yNi4zMy01OC42OTMtNTguNjk0IDAtMjUuODk1IDAtNTEuNzkxIDAtNzcuNjg2aDIyLjcxNmMxMi4yODUgMCAxOC43MjYgMTUuNTMgMTAuMDMzIDI0LjIyMS05LjEyMiA5LjEyMSA1LjAyIDIzLjI2NCAxNC4xNDIgMTQuMTQzIDYuNDU4LTYuNDU3IDEwLjAxNC0xNS4wNDIgMTAuMDE0LTI0LjE3NSAwLTE4Ljg1Mi0xNS4zMzctMzQuMTg4LTM0LjE4OS0zNC4xODhoLTIyLjcxNnYtMTguODI0YzI2LjI1Ny01LjA0MyA0Ni4xNjEtMjguMTc1IDQ2LjE2MS01NS44ODF2LTIwLjg1MWMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwaC0zNi45MTR2LTI0LjIzNmgzNi45MTRjMTIuODQgMCAxMi44NTktMjAgMC0yMGgtOTMuODI4Yy0xMi44NCAwLTEyLjg1OSAyMCAwIDIwaDM2LjkxNHYyNC4yMzVoLTM2LjkxNGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYyMC44NTFjMCAyOC4yMzMgMjAuNjY5IDUxLjcxOSA0Ny42NjcgNTYuMTUxdjE4LjU1NWgtMjIuNzE2Yy0xOC44NTIgMC0zNC4xODkgMTUuMzM3LTM0LjE4OSAzNC4xODggMCA5LjEzMiAzLjU1NiAxNy43MTcgMTAuMDE0IDI0LjE3NSA5LjEyMSA5LjEyMSAyMy4yNjMtNS4wMjEgMTQuMTQzLTE0LjE0My04LjY4NS04LjY4NC0yLjI2NC0yNC4yMjEgMTAuMDMzLTI0LjIyMWgyMi43MTZ2NzcuNjg2YzAgMzIuMzY0LTI2LjMzIDU4LjY5NC01OC42OTQgNTguNjk0LTE1LjY3NyAwLTMwLjQxNy02LjEwNS00MS41MDItMTcuMTkxbC0xMS4yMTgtMTEuMjE4YzIyLjUtNy41NzUgMzguNzU2LTI4Ljg1NiAzOC43NTYtNTMuODc3di0yNS42OThjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMTcuMjk4Yy40MzQtMTcuNjcxLTEwLjI2Ny0zNC4yMTItMjkuNTQ3LTM0LjIxMnMtMjkuOTgyIDE2LjU0LTI5LjU0NyAzNC4yMTJoLTE3LjNjLTUuNTIzIDAtMTAgNC40NzctMTAgMTB2MjUuNjk4YzAgMjguNzA3IDIxLjM5NCA1Mi40OTggNDkuMDczIDU2LjNsMjIuOTM3IDIyLjkzN2MxNS4xNjQgMTUuMTYzIDM2LjAxIDIzLjQ4NiA1Ny40MzMgMjMuMDAzdjY2LjYxNGMwIDMyLjM2NC0yNi4zMyA1OC42OTMtNTguNjkzIDU4LjY5My0xNS42NzcgMC0zMC40MTctNi4xMDUtNDEuNTAyLTE3LjE5MWwtMTEuNjAyLTExLjYwMmMyMS45MTQtNy44OTggMzcuNjI1LTI4Ljg5MiAzNy42MjUtNTMuNDk0di0yNS42OTdjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMTcuMjk3Yy40MzQtMTcuNjcyLTEwLjI2Ny0zNC4yMTItMjkuNTQ3LTM0LjIxMnMtMjkuOTgyIDE2LjU0LTI5LjU0NyAzNC4yMTJoLTE3LjI5OWMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYyNS42OTdjMCAyOS4zMDUgMjIuMjkyIDUzLjQ5NyA1MC44MDggNTYuNTIxbDIyLjcxNyAyMi43MTZjMTQuODYzIDE0Ljg2MyAzNC42MjUgMjMuMDQ4IDU1LjY0NSAyMy4wNDggNDMuMzkyIDAgNzguNjkzLTM1LjMwMiA3OC42OTMtNzguNjkzdi02OS42NTdjMTQuNDI2LTQuMTY0IDI3LjE2MS0xMi4zNDIgMzYuOTA1LTIzLjI1N3YyMC41MjJjMCAxMi44NCAyMCAxMi44NTkgMjAgMHYtMjAuNTIyYzkuNTIgMTAuNjYzIDIxLjg4OSAxOC43MjMgMzUuOTA1IDIyLjk3MnY2OS45NDZjMCA0My4zOTIgMzUuMzAyIDc4LjY5MyA3OC42OTMgNzguNjkzIDIxLjAyIDAgNDAuNzgxLTguMTg2IDU1LjY0NS0yMy4wNDhsMjIuNzE2LTIyLjcxNmMyOC41MTYtMy4wMjUgNTAuODA4LTI3LjIxNiA1MC44MDgtNTYuNTIxdi0yNS42OTdjLjAwMS01LjUyNC00LjQ3Ni0xMC4wMDEtOS45OTktMTAuMDAxem0tMTEyLjI5OC0xNDkuOTI3YzAtMTIuMzEzIDE5LjA5NS0xMi4zMTMgMTkuMDk1IDB2NC42NjRoLTE5LjA5NXptNDYuMzkzIDI0LjY2NHYxNS42OThjMCAyMC4zMTYtMTYuNTI5IDM2Ljg0NS0zNi44NDUgMzYuODQ1cy0zNi44NDUtMTYuNTI5LTM2Ljg0NS0zNi44NDV2LTE1LjY5OHptLTMyNi45MTQtMjQuNjY0YzAtMTIuMzEzIDE5LjA5NS0xMi4zMTMgMTkuMDk1IDB2NC42NjRoLTE5LjA5NXptNDYuMzkzIDI0LjY2NHYxNS42OThjMCAyMC4zMTYtMTYuNTI5IDM2Ljg0NS0zNi44NDUgMzYuODQ1cy0zNi44NDUtMTYuNTI5LTM2Ljg0NS0zNi44NDV2LTE1LjY5OHptLTEwNC44MTIgMTIwLjU5OWMwLTEyLjMxMyAxOS4wOTUtMTIuMzEzIDE5LjA5NSAwdjQuNjY1aC0xOS4wOTV6bTQ2LjM5MiAyNC42NjR2MTUuNjk3YzAgMjAuMzE2LTE2LjUyOSAzNi44NDUtMzYuODQ1IDM2Ljg0NXMtMzYuODQ1LTE2LjUyOC0zNi44NDUtMzYuODQ1di0xNS42OTd6bTEyMy40MTEtMjc4LjM2NHYtMTAuODUxaDczLjgyOHYxMC44NTFjMCA0Ny41OTYtNzMuODI4IDQ3LjU5Ni03My44MjggMHptMjI1LjA0MiAyNTMuN2MwLTEyLjMxMyAxOS4wOTUtMTIuMzEzIDE5LjA5NSAwdjQuNjY1aC0xOS4wOTV6bTQ2LjM5MyAyNC42NjR2MTUuNjk3YzAgMjAuMzE2LTE2LjUyOSAzNi44NDUtMzYuODQ1IDM2Ljg0NXMtMzYuODQ1LTE2LjUyOS0zNi44NDUtMzYuODQ1di0xNS42OTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yODEuMjA2IDQ0MS44NDctMTYuNDM4LTkuNDl2LTIxLjY0NWMwLTEyLjg0LTIwLTEyLjg1OS0yMCAwdjIxLjYxOWwtMTYuNDgzIDkuNTE2Yy0zLjA5NCAxLjc4Ni01IDUuMDg3LTUgOC42NnYyNC43OGMwIDMuNTczIDEuOTA2IDYuODc0IDUgOC42NmwyMS40NiAxMi4zOWMzLjA2NyAxLjc3MSA2LjkzMyAxLjc3MSAxMCAwbDIxLjQ2LTEyLjM5YzMuMDk0LTEuNzg2IDUtNS4wODcgNS04LjY2di0yNC43OGMuMDAxLTMuNTczLTEuOTA1LTYuODc0LTQuOTk5LTguNjZ6bS0xNSAyNy42NjctMTEuNDYgNi42MTctMTEuNDYtNi42MTd2LTEzLjIzM2wxMS40Ni02LjYxNyAxMS40NiA2LjYxN3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0NS41MzUgMzc0LjE4M2MxLjYzNSAzLjkyNCA1LjcxNiA2LjQ2NiA5Ljk2OCA2LjEzOCA0LjE2OS0uMzIyIDcuNzc4LTMuMjcyIDguODk3LTcuMzAzIDIuMzY0LTguNTEzLTcuMTkxLTE1Ljc1OS0xNC43NzMtMTEuMjM1LTQuMjE0IDIuNTE0LTUuOTQ1IDcuODgtNC4wOTIgMTIuNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Sle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im05IDE3YzQuNDExIDAgOC0zLjU4OSA4LTggMC0xLjI1Ni0uMjk5LTIuNDQxLS44MTgtMy41MDEgMS4xMDMtMS41NDggMi44OTgtMi40OTkgNC44MTgtMi40OTkgMi44NCAwIDUuMjc4IDIuMDY0IDUuNzk5IDQuODMxLS4xOS4xMDUtLjM3NS4yMTgtLjU1NC4zNDItMS4yMjQtLjc0Ny0yLjYzNi0xLjE3My00LjA3NC0xLjE3M2gtLjE3MXYyaC4xNzFjLjg5NiAwIDEuNzguMjIxIDIuNTguNjE1LS4wODMuMTA5LS4xNzEuMjExLS4yNDguMzI2bC0uMzM2LjUwNCAxLjY2NCAxLjEwOS4zMzYtLjUwNGMuODU3LTEuMjgzIDIuMjktMi4wNSAzLjgzMy0yLjA1IDEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMmgtN2MtMS4xMDMgMC0yLS44OTctMi0yaC0yYzAgMi4yMDYgMS43OTQgNCA0IDRoMjVjMi4yMDYgMCA0LTEuNzk0IDQtNHMtMS43OTQtNC00LTRjLS40NzMgMC0uOTM1LjA2LTEuMzg3LjE1Ny0xLjE1OS0zLjYyMy00LjU0Mi02LjE1Ny04LjQzLTYuMTU3LTMuNTQ5IDAtNi43NDYgMi4xMDctOC4xNDQgNS4zNjlsLS4yNzcuNjQ2Yy0uMzU2LjAxMy0uNzA2LjA1NS0xLjA1LjEyMy0uODItMy41NDItNC4wMjMtNi4xMzgtNy43MTItNi4xMzgtMi4zMTIgMC00LjQ4OCAxLjAzNC01Ljk3OCAyLjc1MS0xLjQ2Ny0xLjY4Mi0zLjYyLTIuNzUxLTYuMDIyLTIuNzUxLTQuNDExIDAtOCAzLjU4OS04IDhzMy41ODkgOCA4IDh6bTI5LjE4My0xNGMzLjA0NyAwIDUuNjc2IDIuMDE3IDYuNTQxIDQuODc3LS4xNjMuMDkzLS4zMjUuMTg4LS40NzkuMjk1LTEuMjI1LS43NDYtMi42MzYtMS4xNzItNC4wNzQtMS4xNzJoLS4xNzF2MmguMTcxYy44OTUgMCAxLjc4LjIyMSAyLjU4LjYxNS0uMDgzLjEwOS0uMTcxLjIxMS0uMjQ4LjMyNmwtLjMzNi41MDQgMS42NjQgMS4xMDkuMzM2LS41MDRjLjg1Ny0xLjI4MyAyLjI5LTIuMDUgMy44MzMtMi4wNSAxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDJoLTE0LjU1NmMuMzQ0LS41OTEuNTU2LTEuMjY4LjU1Ni0yIDAtMS41NzEtLjkxOC0yLjkxOS0yLjIzOC0zLjU3M2wuMTE2LS4yN2MxLjA4Mi0yLjUyNSAzLjU1Ny00LjE1NyA2LjMwNS00LjE1N3ptLTI5LjE4MyAwYzMuMzA5IDAgNiAyLjY5MSA2IDZzLTIuNjkxIDYtNiA2LTYtMi42OTEtNi02IDIuNjkxLTYgNi02eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMzd2LTQuNWw0LTN2LTIuNWgtMnYxLjVsLTIgMS41di01aC0ydjdsLTItMS41di0xLjVoLTJ2Mi41bDQgM3YyLjVoLTEwdi02LjVsNC0zdi0yLjVoLTJ2MS41bC0yIDEuNXYtNC41ODZsMS43MDctMS43MDctMS40MTQtMS40MTQtMi4yOTMgMi4yOTN2Ny40MTRsLTItMS41di0xLjVoLTJ2Mi41bDQgM3Y0LjVoLTE0di0xLjI3OWwuNDk2LS4xNjVjMy4yOTItMS4wOTggNS41MDQtNC4xNjYgNS41MDQtNy42MzYgMC0yLjE0OS0uODM3LTQuMTcxLTIuMzU3LTUuNjkxbC00LjY0My00LjY0My0zLjgyNSAzLjgyNWMtLjM5LS44MDItLjg5Ni0xLjU0Ni0xLjUzMi0yLjE4M2wtNC42NDMtNC42NDItNC42NDMgNC42NDNjLTEuNTIgMS41Mi0yLjM1NyAzLjU0Mi0yLjM1NyA1LjY5MSAwIDMuNDcgMi4yMTIgNi41MzggNS41MDMgNy42MzVsLjQ5Ny4xNjV2NC4yOGgtMTYuMjgxbC40OSAxLjk1OWMzLjUzOSAxNC4xNTUgMTYuMjAxIDI0LjA0MSAzMC43OTEgMjQuMDQxczI3LjI1Mi05Ljg4NiAzMC43OTEtMjQuMDQxbC40OS0xLjk1OXptLTI3LjM2NCA2LjI1OCAxLjE0NSAxLjcxN2MuMTQzLjIxNC4yMTkuNDY0LjIxOS43MjIgMCAuNzE5LS41ODQgMS4zMDMtMS4zMDMgMS4zMDNoLTE1LjM5NGMtLjcxOSAwLTEuMzAzLS41ODQtMS4zMDMtMS4zMDMgMC0uMjU4LjA3Ni0uNTA4LjIxOS0uNzIzbDEuMTQ2LTEuNzE4Yy40MTUtLjYyNC42MzUtMS4zNTEuNjM1LTIuMTAxIDAtLjc3LS4yNDYtMS41MjUtLjY4MS0yLjE1NWgxNS4zNjJjLS40MzUuNjMxLS42ODEgMS4zODUtLjY4MSAyLjE1NSAwIC43NS4yMiAxLjQ3Ny42MzYgMi4xMDN6bS0xLjYzNi0yMi44NDQgMy4yMjkgMy4yMjljMS4xNDIgMS4xNDIgMS43NzEgMi42NjIgMS43NzEgNC4yNzcgMCAyLjU1Ny0xLjYwNCA0LjgxNy00IDUuNjgxdi0xLjE4NmwyLjcwNy0yLjcwNy0xLjQxNC0xLjQxNC0xLjI5MyAxLjI5MnYtMi4xNzJsMS43MDctMS43MDctMS40MTQtMS40MTQtMi4yOTMgMi4yOTN2Ny4wMTRjLTIuMzk2LS44NjMtNC0zLjEyMi00LTUuNjggMC0xLjYxNS42MjktMy4xMzUgMS43NzEtNC4yNzd6bS0xNSA0LjUwNmMwLTEuNjE1LjYyOS0zLjEzNSAxLjc3MS00LjI3N2wzLjIyOS0zLjIyOSAzLjIyOSAzLjIyOWMuNjY2LjY2NiAxLjE1MyAxLjQ4MSAxLjQ0OSAyLjM3MS0xLjA4NCAxLjQtMS42NzggMy4xMDYtMS42NzggNC45MDYgMCAuNDY0LjA0Ni45MTguMTIyIDEuMzY0LS42MDkuNTgxLTEuMzI5IDEuMDM0LTIuMTIyIDEuMzE5di02LjNsMS44MzItMi43NDgtMS42NjQtMS4xMDktMS4zMjMgMS45ODUtMS4xMzgtMS4xMzgtMS40MTQgMS40MTQgMS43MDcgMS43MDd2Mi4xNzJsLTEuMjkzLTEuMjkzLTEuNDE0IDEuNDE0IDIuNzA3IDIuNzA3djEuMTg2Yy0yLjM5Ni0uODYzLTQtMy4xMjItNC01LjY4em02IDcuODAxLjQ5Ni0uMTY1Yy44MjUtLjI3NSAxLjU4OS0uNjk2IDIuMjgxLTEuMjE2LjkxNiAxLjk0OCAyLjU4NiAzLjUwMiA0LjcyNiA0LjIxNWwuNDk3LjE2NXYxLjI4aC04em0tNy40MTQgNi4yNzkuODkuODljLjMzMy4zMzMuNTI0Ljc5NS41MjQgMS4yNjUgMCAuMzU0LS4xMDQuNjk4LS4zLjk5M2wtMS4xNDUgMS43MTdjLS4zNjMuNTQ0LS41NTUgMS4xNzgtLjU1NSAxLjgzMiAwIDEuODIyIDEuNDgxIDMuMzAzIDMuMzAzIDMuMzAzaDE1LjM5NWMxLjgyMSAwIDMuMzAyLTEuNDgxIDMuMzAyLTMuMzAzIDAtLjY1NC0uMTkyLTEuMjg4LS41NTUtMS44MzJsLTEuMTQ1LTEuNzE2Yy0uMTk2LS4yOTUtLjMtLjYzOS0uMy0uOTk0IDAtLjQ3MS4xOTEtLjkzMy41MjQtMS4yNjZsLjg5LS44OWg2LjgzNmMtLjE2LjM4NS0uMjUuODA2LS4yNSAxLjI0NyAwIDEuNDkyIDEuMDExIDIuNzg4IDIuNDU5IDMuMTQ5bDQuMjIgMS4wNTVjLjc3OC4xOTYgMS4zMjEuODkxIDEuMzIxIDEuNjkzIDAgLjcxNy0uNDMgMS4zNTMtMS4wOTYgMS42MThsLTYuMjc1IDIuNTExYy0xLjU5Ny42MzktMi42MjkgMi4xNjMtMi42MjkgMy44ODIgMCAxLjQ5Ni44MDcgMi44ODggMi4xMDcgMy42M2wyLjcxNSAxLjU1MWMtMy4wMDQgMS4wNDktNi4yMTUgMS42MjEtOS41MzcgMS42NTNsLTUuMDg2LTMuMzkxYy0uMTI0LS4wODItLjE5OS0uMjIxLS4xOTktLjM3MSAwLS4yMTkuMTU3LS40MDQuMzc0LS40NGwzLjQzNS0uNTcyYzEuMjY5LS4yMTMgMi4xOTEtMS4zMDIgMi4xOTEtMi41OSAwLTEuNDQ3LTEuMTc3LTIuNjI0LTIuNjI0LTIuNjI0aC0yMC42MDVjLTIuOTg5LTMuMzY3LTUuMjU2LTcuNDMtNi40ODYtMTJ6bTE0LjUwMyAyMC4yNjIgMi4yMyAxLjQ4N2MtNi4zMjktLjc4NC0xMi4xMDUtMy41NDgtMTYuNjA3LTcuNzQ5aDE4LjY2NGMuMzQ0IDAgLjYyNC4yOC42MjQuNjI0IDAgLjMwNy0uMjE5LjU2NS0uNTIxLjYxNmwtMy40MzQuNTcyYy0xLjE4NS4xOTgtMi4wNDUgMS4yMTItMi4wNDUgMi40MTQgMCAuODE5LjQwNyAxLjU4MSAxLjA4OSAyLjAzNnptMTguMTAzLS44NzUtNC4wOTMtMi4zMzljLS42NzgtLjM4OC0xLjA5OS0xLjExMy0xLjA5OS0xLjg5NCAwLS44OTcuNTM5LTEuNjkyIDEuMzcyLTIuMDI1bDYuMjc1LTIuNTExYzEuNDI5LS41NzEgMi4zNTMtMS45MzUgMi4zNTMtMy40NzUgMC0xLjcyMS0xLjE2Ni0zLjIxNC0yLjgzNS0zLjYzMmwtNC4yMi0xLjA1NWMtLjU1Ny0uMTQtLjk0NS0uNjM3LS45NDUtMS4yMSAwLS42ODcuNTU5LTEuMjQ2IDEuMjQ2LTEuMjQ2aDE4LjQ2OGMtMi4zNzYgOC44MjgtOC41NjUgMTUuODE0LTE2LjUyMiAxOS4zODd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNyAxN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zOSAyMWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MyAxN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyAxOWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAyM2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAxN2gydjJoLTJ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",xle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiID4NCjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQoJPHBhdGggZD0iTTUxMS45NzYsNDE2LjA2M2MtMC4wMDUtMC4wNzUtMC4wMDQtMC4xNDktMC4wMTEtMC4yMjRjLTAuMDI3LTAuMjk3LTAuMDctMC41ODgtMC4xMzEtMC44NzMNCgkJYy0wLjAwNi0wLjAyOC0wLjAxNS0wLjA1Ni0wLjAyMi0wLjA4NGMtMC4wNTktMC4yNjItMC4xMzItMC41MTgtMC4yMTgtMC43NjhjLTAuMDIzLTAuMDY3LTAuMDQ4LTAuMTMyLTAuMDczLTAuMTk4DQoJCWMtMC4wODQtMC4yMjctMC4xNzktMC40NDgtMC4yODQtMC42NjNjLTAuMDE4LTAuMDM4LTAuMDMtMC4wNzctMC4wNDktMC4xMTVsLTQwLjExMi03OS4xMThWNzMuNzINCgkJYzAtOC4wMDYtNi41MTMtMTQuNTE5LTE0LjUxOS0xNC41MTlINTUuNDQxYy04LjAwNiwwLTE0LjUxOSw2LjUxMy0xNC41MTksMTQuNTE5djI2MC4yOThMMC44MTEsNDEzLjEzNw0KCQljLTAuMDE5LDAuMDM4LTAuMDMxLDAuMDc3LTAuMDQ5LDAuMTE1Yy0wLjEwNSwwLjIxNS0wLjE5OSwwLjQzNi0wLjI4NCwwLjY2MmMtMC4wMjUsMC4wNjYtMC4wNSwwLjEzMi0wLjA3MywwLjE5OQ0KCQljLTAuMDg1LDAuMjUxLTAuMTU5LDAuNTA4LTAuMjE4LDAuNzdjLTAuMDA2LDAuMDI3LTAuMDE1LDAuMDU0LTAuMDIxLDAuMDgxYy0wLjA2MSwwLjI4Ni0wLjEwNCwwLjU3Ny0wLjEzMSwwLjg3NA0KCQljLTAuMDA3LDAuMDc0LTAuMDA3LDAuMTQ5LTAuMDExLDAuMjIzQzAuMDE0LDQxNi4yMTcsMCw0MTYuMzcxLDAsNDE2LjUyOXYxOS4wMjZjMCw5LjUwOSw3LjczNSwxNy4yNDQsMTcuMjQ0LDE3LjI0NGg0NzcuNTEyDQoJCWM5LjUwOSwwLDE3LjI0NC03LjczNSwxNy4yNDQtMTcuMjQ0di0xOS4wMjZDNTEyLDQxNi4zNzEsNTExLjk4Niw0MTYuMjE3LDUxMS45NzYsNDE2LjA2M3ogTTU1LjkyMyw3NC4yMDNoNDAwLjE1NHYyNTQuMTA5DQoJCUg1NS45MjNWNzQuMjAzeiBNNTMuMDI5LDM0My4zMTFINDU4Ljk3bDMzLjMxOCw2NS43MTdoLTE2NC43OGwtOC4yNzEtMjkuOTg5Yy0xLjY4NC02LjEwNS03LjI4Mi0xMC4zNjktMTMuNjE1LTEwLjM2OWgtOTkuMjQ2DQoJCWMtNi4zMzMsMC0xMS45MzIsNC4yNjQtMTMuNjE1LDEwLjM2OGwtOC4yNzEsMjkuOTlIMTkuNzExTDUzLjAyOSwzNDMuMzExeiBNMzExLjk0OCw0MDkuMDI5SDIwMC4wNTJsNi45OTMtMjUuMzU4aDk3LjkxDQoJCUwzMTEuOTQ4LDQwOS4wMjl6IE00OTcsNDM1LjU1NGMwLDEuMjM3LTEuMDA3LDIuMjQ0LTIuMjQ0LDIuMjQ0SDE3LjI0NGMtMS4yMzcsMC0yLjI0NC0xLjAwNy0yLjI0NC0yLjI0NHYtMTEuNTI2aDQ4MlY0MzUuNTU0eiINCgkJLz4NCgk8cGF0aCBkPSJNNDMyLjU3NywyMTMuNzU2Yy00LjE0MywwLTcuNSwzLjM1Ny03LjUsNy41djc2LjA1NUg4Ni45MjN2LTc2LjA1NWMwLTQuMTQzLTMuMzU3LTcuNS03LjUtNy41DQoJCQljLTQuMTQzLDAtNy41LDMuMzU3LTcuNSw3LjV2NzkuMjk0YzAsNi40ODUsNS4yNzUsMTEuNzYxLDExLjc2MSwxMS43NjFoMzQ0LjYzM2M2LjQ4NSwwLDExLjc2MS01LjI3NSwxMS43NjEtMTEuNzYxdi03OS4yOTQNCgkJCUM0NDAuMDc3LDIxNy4xMTUsNDM2LjcyLDIxMy43NTYsNDMyLjU3NywyMTMuNzU2eiIvPg0KCTxwYXRoIGQ9Ik00MjguMzE2LDkwLjIwM0g4My42ODRjLTYuNDg1LDAtMTEuNzYxLDUuMjc1LTExLjc2MSwxMS43NjF2NzkuMjk0YzAsNC4xNDMsMy4zNTcsNy41LDcuNSw3LjVjNC4xNDMsMCw3LjUtMy4zNTcsNy41LTcuNQ0KCQkJdi03Ni4wNTVoMzM4LjE1NHY3Ni4wNTVjMCw0LjE0MywzLjM1Nyw3LjUsNy41LDcuNXM3LjUtMy4zNTcsNy41LTcuNXYtNzkuMjk0QzQ0MC4wNzcsOTUuNDc3LDQzNC44MDIsOTAuMjAzLDQyOC4zMTYsOTAuMjAzeiIvPg0KPC9nPg0KPC9zdmc+DQo=",kle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTY0LjM5OSAyMDUuODcyYzQuMDk5LjY2NCA4LjIwNi0xLjI3MyAxMC4yODQtNC45MWw2MC0xMDVjMS43NjktMy4wOTUgMS43NTYtNi44OTctLjAzMy05Ljk4cy01LjA4NS00Ljk4MS04LjY0OS00Ljk4MWgtMzYuNjgybC0xMy40ODYtNzIuODIxYy0uNzcyLTQuMTY5LTQuMDg5LTcuMzk4LTguMjc3LTguMDU4LTQuMTg1LS42Ni04LjMzNyAxLjM5NC0xMC4zNTMgNS4xMjNsLTYwIDExMWMtMS42NzUgMy4wOTktMS41OTcgNi44NTEuMjA4IDkuODc2IDEuODA0IDMuMDI1IDUuMDY2IDQuODc5IDguNTg5IDQuODc5aDM2LjgwMmwxMy4zOTMgNjYuOTYxYy44MTcgNC4wOSA0LjA4OCA3LjI0MiA4LjIwNCA3LjkxMXptLTEzLjM5OS05NC44NzFoLTI4LjIyOGwzOC41NTQtNzEuMzIzIDkuODQxIDUzLjE0NGMuODc4IDQuNzQgNS4wMTMgOC4xNzkgOS44MzMgOC4xNzloMjcuNzY5bC0zOC4yIDY2Ljg1LTkuNzYzLTQ4LjgxMWMtLjkzNS00LjY3NC01LjAzOS04LjAzOS05LjgwNi04LjAzOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwIDQ1OS4wMDFjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDN2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoMjZjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzgtMTAtMTAtMTBoLTU2di02OGMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHY2OGgtNDB2LTIyM2g0MHY2NWMwIDUuNTIzIDQuNDc4IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwdi03NWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwaC02MGMtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHYyMzNoLTQwdi0xNzNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTB2MTczaC00MHYtMTEzYzAtNS41MjMtNC40NzgtMTAtMTAtMTBoLTYwYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwdjExM2gtNzN2LTQ0OWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHYyNmgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDBoLTIzYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwczQuNDc4IDEwIDEwIDEwaDIzdjQwaC0yM2MtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGgyM3Y0MGgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDBoLTIzYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwczQuNDc4IDEwIDEwIDEwaDIzdjQwaC0yM2MtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGgyM3Y0MGgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDN6bTI1Ni0xNjNoNDB2MTYzaC00MHptLTEyMCA2MGg0MHYxMDNoLTQweiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDM2IDE0Ni4wMDFjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHYtNjBjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMzUuODU3bC0xMDAgMTAwaC01NS44NTdjLTIuNjUyIDAtNS4xOTUgMS4wNTQtNy4wNzEgMi45MjlsLTkwIDkwYy0zLjkwNSAzLjkwNS0zLjkwNSAxMC4yMzcgMCAxNC4xNDMgMy45MDcgMy45MDUgMTAuMjM2IDMuOTA0IDE0LjE0MyAwbDg3LjA3MS04Ny4wNzFoNTUuODU3YzIuNjUyIDAgNS4xOTUtMS4wNTQgNy4wNzEtMi45MjlsMTAyLjkyOS0xMDIuOTN2MzUuODU3YzAgNS41MjQgNC40NzggMTAuMDAxIDEwIDEwLjAwMXoiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iNDM2IiBjeT0iMzQ2LjAwMSIgcj0iMTAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Yle="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cmVjdCB4PSIyMTYiIHk9Ijg4LjQ4OSIgd2lkdGg9IjgwIiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjIxNiIgeT0iNjIuNDg5IiB3aWR0aD0iODAiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwLDUyLjQ5NHY5LjI4NWMtMi4zNDctMC44MzItNC44NzItMS4yODUtNy41LTEuMjg1Yy0xMi40MDYsMC0yMi41LDEwLjA5My0yMi41LDIyLjVjMCwxMi40MDcsMTAuMDk0LDIyLjUsMjIuNSwyMi41DQoJCQljMi42MjgsMCw1LjE1My0wLjQ1Myw3LjUtMS4yODV2MzU1LjI5OGg3LjVjOC42OTksMCwxMy4zNTQtMi44MTksMTcuMDk1LTUuMDg1YzIuODk5LTEuNzU1LDQuODE0LTIuOTE1LDkuMzI1LTIuOTE1DQoJCQljNC41MTEsMCw2LjQyNiwxLjE2LDkuMzI1LDIuOTE1YzMuNzQsMi4yNjYsOC4zOTYsNS4wODUsMTcuMDk1LDUuMDg1YzguNjk4LDAsMTMuMzU0LTIuODE5LDE3LjA5NC01LjA4NQ0KCQkJYzIuODk3LTEuNzU1LDQuODEzLTIuOTE1LDkuMzIyLTIuOTE1YzQuNTA5LDAsNi40MjQsMS4xNiw5LjMyMSwyLjkxNWMzLjc0LDIuMjY2LDguMzk1LDUuMDg1LDE3LjA5Myw1LjA4NQ0KCQkJczEzLjM1NC0yLjgxOSwxNy4wOTQtNS4wODVjMi44OTctMS43NTUsNC44MTMtMi45MTUsOS4zMjEtMi45MTVjNC41MSwwLDYuNDI1LDEuMTYsOS4zMjIsMi45MTUNCgkJCWMzLjc0LDIuMjY2LDguMzk2LDUuMDg1LDE3LjA5Myw1LjA4NWw3LjUtMC4wMTN2LTQwN0gzMHogTTIyLjUsOTAuNDk0Yy00LjEzNiwwLTcuNS0zLjM2NC03LjUtNy41YzAtNC4xMzYsMy4zNjQtNy41LDcuNS03LjUNCgkJCXM3LjUsMy4zNjQsNy41LDcuNUMzMCw4Ny4xMywyNi42MzYsOTAuNDk0LDIyLjUsOTAuNDk0eiBNMTg4LjUsNDQyLjY2NGMtMC41ODUtMC4zMjUtMS4xNzktMC42ODUtMS44MjEtMS4wNzQNCgkJCWMtMy4zMzktMi4wMjItNy40MDctNC40ODYtMTQuNDI5LTQuOTkxVjIyNi41NTVoLTE1djIxMi40MzFjLTEuODI0LDAuODI3LTMuMzU1LDEuNzU1LTQuNzU4LDIuNjA0DQoJCQljLTIuODk3LDEuNzU1LTQuODEzLDIuOTE1LTkuMzIyLDIuOTE1Yy0xLjY0OCwwLTIuOTUtMC4xNTUtNC4wNzktMC40MzhoMy4xNTlWMTQxLjk5NGgtMTV2Mjk2LjIzOA0KCQkJYy0yLjczNC0xLjAwNS02LjA5Ny0xLjcyNi0xMC40OTQtMS43MjZjLTEuNjM4LDAtMy4xMzMsMC4xLTQuNTA2LDAuMjc4di0yMTYuNzloLTE1djIyMi45ODhjLTEuODQ5LDAuOTUxLTMuNzM4LDEuNTI1LTYuOTEsMS41MjUNCgkJCWMtMy44NDMsMC01LjgwMi0wLjg0Mi04LjA5LTIuMTc2VjE0MS45OTRoLTE1djI5NC42NjFjLTEuMDQxLTAuMDk2LTIuMTQ4LTAuMTQ4LTMuMzMtMC4xNDhjLTguNjk5LDAtMTMuMzU0LDIuODE5LTE3LjA5NSw1LjA4NQ0KCQkJYy0wLjY0NCwwLjM5LTEuMjM5LDAuNzUtMS44MjUsMS4wNzVWNjcuNDk0aDIyLjI1djQxaDE1di00MWg0NXY0MWgxNXYtNDFoNDYuMjVWNDQyLjY2NHoiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSIxMzYuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iNjYiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSIxMTEuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSI4Ni45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSI5Ny4yNSIgeT0iMTMwLjk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjY2Ii8+DQogICAgICAgIDxyZWN0IHg9Ijk3LjI1IiB5PSI4MC45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSI5Ny4yNSIgeT0iMTA1Ljk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iMTEzLjk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iMTM4Ljk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjY2Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iODguOTk0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzc1Ljc1IiB5PSIxNTUuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzc1Ljc1IiB5PSI4MC45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSIzNzUuNzUiIHk9IjEwNS45ODkiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSIzNzUuNzUiIHk9IjEzMC45ODkiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cGF0aCBkPSJNNDg5LjUsNjAuNDk0Yy0yLjYyOCwwLTUuMTUzLDAuNDUzLTcuNSwxLjI4NXYtOS4yODVIMzA4LjV2NDA3LjAxM2g3LjVjOC42OTksMCwxMy4zNTQtMi44MTksMTcuMDk1LTUuMDg1DQoJCQljMi44OTktMS43NTUsNC44MTQtMi45MTUsOS4zMjUtMi45MTVjNC41MTEsMCw2LjQyNiwxLjE2LDkuMzI1LDIuOTE1YzMuNzQsMi4yNjYsOC4zOTYsNS4wODUsMTcuMDk1LDUuMDg1DQoJCQljOC42OTgsMCwxMy4zNTQtMi44MTksMTcuMDk0LTUuMDg1YzIuODk3LTEuNzU1LDQuODEzLTIuOTE1LDkuMzIyLTIuOTE1YzQuNTA5LDAsNi40MjQsMS4xNiw5LjMyMSwyLjkxNQ0KCQkJYzMuNzQsMi4yNjYsOC4zOTUsNS4wODUsMTcuMDkzLDUuMDg1czEzLjM1NC0yLjgxOSwxNy4wOTQtNS4wODVjMi44OTctMS43NTUsNC44MTMtMi45MTUsOS4zMjEtMi45MTUNCgkJCWM0LjUxLDAsNi40MjUsMS4xNiw5LjMyMiwyLjkxNWMzLjc0LDIuMjY2LDguMzk2LDUuMDg1LDE3LjA5Myw1LjA4NWw3LjUtMC4wMTNWMTA0LjIwOGMyLjM0NywwLjgzMiw0Ljg3MiwxLjI4NSw3LjUsMS4yODUNCgkJCWMxMi40MDYsMCwyMi41LTEwLjA5MywyMi41LTIyLjVDNTEyLDcwLjU4NSw1MDEuOTA2LDYwLjQ5NCw0ODkuNSw2MC40OTR6IE00NjcsNDQyLjY2NGMtMC41ODUtMC4zMjUtMS4xNzktMC42ODUtMS44MjEtMS4wNzQNCgkJCWMtMy4zMzktMi4wMjItNy40MDctNC40ODYtMTQuNDI5LTQuOTkxVjIyNi41NTVoLTE1djIxMi40MzFjLTEuODI0LDAuODI3LTMuMzU1LDEuNzU1LTQuNzU4LDIuNjA0DQoJCQljLTIuODk3LDEuNzU1LTQuODEzLDIuOTE1LTkuMzIyLDIuOTE1Yy0xLjY0OCwwLTIuOTUtMC4xNTUtNC4wNzktMC40MzhoMy4xNTlWMTQxLjk5NGgtMTV2Mjk2LjIzOA0KCQkJYy0yLjczNC0xLjAwNS02LjA5Ny0xLjcyNi0xMC40OTQtMS43MjZjLTEuNjM4LDAtMy4xMzMsMC4xLTQuNTA2LDAuMjc4di0yNTAuNzloLTE1djI1Ni45ODhjLTEuODQ5LDAuOTUxLTMuNzM4LDEuNTI1LTYuOTEsMS41MjUNCgkJCWMtMy44NDMsMC01LjgwMi0wLjg0Mi04LjA5LTIuMTc2VjE0MS45OTRoLTE1djI5NC42NjFjLTEuMDQxLTAuMDk2LTIuMTQ4LTAuMTQ4LTMuMzMtMC4xNDhjLTguNjk5LDAtMTMuMzU0LDIuODE5LTE3LjA5NSw1LjA4NQ0KCQkJYy0wLjY0NCwwLjM5LTEuMjM5LDAuNzUtMS44MjUsMS4wNzVWNjcuNDk0aDIyLjI1djQxaDE1di00MWg0NXY0MWgxNXYtNDFINDY3VjQ0Mi42NjR6IE00ODkuNSw5MC40OTRjLTQuMTM2LDAtNy41LTMuMzY0LTcuNS03LjUNCgkJCWMwLTQuMTM2LDMuMzY0LTcuNSw3LjUtNy41czcuNSwzLjM2NCw3LjUsNy41QzQ5Nyw4Ny4xMyw0OTMuNjM2LDkwLjQ5NCw0ODkuNSw5MC40OTR6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Qle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00MiAxMmMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMi00YzAgMS4xMDMtLjg5NyAyLTIgMnMtMi0uODk3LTItMmMwLS4xNzguMDMxLS4zNDcuMDc1LS41MTFsMS4yMTggMS4yMTggMS40MTQtMS40MTQtMS4yMTgtMS4yMThjLjE2NC0uMDQ0LjMzMy0uMDc1LjUxMS0uMDc1IDEuMTAzIDAgMiAuODk3IDIgMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyIDRjLTIuMjA2IDAtNCAxLjc5NC00IDRzMS43OTQgNCA0IDQgNC0xLjc5NCA0LTQtMS43OTQtNC00LTR6bTAgNmMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTJjLjE3OCAwIC4zNDcuMDMxLjUxMS4wNzVsLTEuMjE4IDEuMjE4IDEuNDE0IDEuNDE0IDEuMjE4LTEuMjE4Yy4wNDQuMTY0LjA3NS4zMzMuMDc1LjUxMSAwIDEuMTAzLS44OTcgMi0yIDJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAxMmgyYzEuNjU0IDAgMy0xLjM0NiAzLTNzLTEuMzQ2LTMtMy0zaC0yYy0xLjY1NCAwLTMgMS4zNDYtMyAzczEuMzQ2IDMgMyAzem0wLTRoMmMuNTUxIDAgMSAuNDQ5IDEgMXMtLjQ0OSAxLTEgMWgtMmMtLjU1MSAwLTEtLjQ0OS0xLTFzLjQ0OS0xIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzIDZoLTJjLTEuNjU0IDAtMyAxLjM0Ni0zIDNzMS4zNDYgMyAzIDNoMmMxLjY1NCAwIDMtMS4zNDYgMy0zcy0xLjM0Ni0zLTMtM3ptMCA0aC0yYy0uNTUxIDAtMS0uNDQ5LTEtMXMuNDQ5LTEgMS0xaDJjLjU1MSAwIDEgLjQ0OSAxIDFzLS40NDkgMS0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02Mi45OTcgNThjMC0uMTYzLS4wMzctLjMyNi0uMTE3LS40NzRsLTIuODgtNS4zNDl2LTM4LjE3Ny0xMGMwLTEuNjU0LTEuMzQ2LTMtMy0zaC01MGMtMS42NTQgMC0zIDEuMzQ2LTMgM3YxMCAzOC4xNzdsLTIuODggNS4zNDljLS4wOC4xNDgtLjExNy4zMTEtLjExNy40NzRoLS4wMDN2MmMwIDEuNjU0IDEuMzQ2IDMgMyAzaDU2YzEuNjU0IDAgMy0xLjM0NiAzLTN2LTJ6bS02Ljk5Ny0xMy4yNTF2LTI5Ljc0OWgydjMzLjQ2M3ptLTQxLjkzMS0yLjc0OWMuMTg5IDEuNTAyLjc5MiAyLjg3NSAxLjY5NSA0aC0yLjc2NHYtNHptMzYuOTMxIDB2NGgtMi43NjVjLjkwNC0xLjEyNSAxLjUwNy0yLjQ5OCAxLjY5NS00em0tNS42OSA0aC0uMzF2LTIuMzgyYy40MDItLjQ2LjctMS4wMDkuODU4LTEuNjE4aDIuMDUyYy0uMjgyIDEuNjY2LTEuMjQ2IDMuMTAxLTIuNiA0em0tOC4zMS0xLjY5di0yLjMxaDEuMTQyYy40NDcgMS43MjEgMiAzIDMuODU4IDMgLjM0NyAwIC42NzgtLjA1OCAxLS4xNDJ2MS4xNDJoLTQuMzFjLS42Ny0uNDQ1LTEuMjQ1LTEuMDItMS42OS0xLjY5em0zLjI3OC00LjMxYy4zNDctLjU5NS45ODUtMSAxLjcyMi0xczEuMzc1LjQwNSAxLjcyMiAxem0yLjcyMiAydi43MjJjLS4yOTUuMTcyLS42MzQuMjc4LTEgLjI3OC0uNzM3IDAtMS4zNzUtLjQwNS0xLjcyMi0xem0yLjg1OC0yYy0uNDQ3LTEuNzIxLTItMy0zLjg1OC0zcy0zLjQxMSAxLjI3OS0zLjg1OCAzaC0yLjA1MmMuNDc4LTIuODMzIDIuOTQyLTUgNS45MS01czUuNDMxIDIuMTY3IDUuOTEgNXptLTExLjcyNS03LjA4NGMuNTEzLTIuNzkyIDIuOTU5LTQuOTE2IDUuODk3LTQuOTE2IDEuNjEgMCAzLjA2NS42MzEgNC4xNDMgMS42Ni0uOTczLS40MjMtMi4wNDYtLjY2LTMuMTczLS42Ni0yLjkxOCAwLTUuNDY5IDEuNTc2LTYuODY3IDMuOTE2em0uODY3IDQuMDg0YzAtMy4zMDkgMi42OTEtNiA2LTYgMi4zMzUgMCA0LjM1NyAxLjM0MyA1LjM0OCAzLjI5NC0xLjI1My0uODE1LTIuNzQ1LTEuMjk0LTQuMzQ4LTEuMjk0LTMuMDA0IDAtNS42MjQgMS42NjctNi45OTIgNC4xMjItLjAwMS0uMDQxLS4wMDgtLjA4MS0uMDA4LS4xMjJ6bS0uOTMxIDVjLjEyOSAxLjAyNy40NDkgMS45OTYuOTMxIDIuODY0djEuMTM2aC02di0xLjEzNmMuNDgyLS44NjkuODAyLTEuODM3LjkzMS0yLjg2NHptLTEzLjA2OSA0di0xLjE0MmMuMzIyLjA4NC42NTMuMTQyIDEgLjE0MiAxLjg1OCAwIDMuNDExLTEuMjc5IDMuODU4LTNoMS4xNDJ2Mi4zMWMtLjQ0NS42Ny0xLjAyIDEuMjQ1LTEuNjkgMS42OXptMC00aDIuNzIyYy0uMzQ3LjU5NS0uOTg1IDEtMS43MjIgMS0uMzY2IDAtLjcwNS0uMTA2LTEtLjI3OHptLS43MjItMmMuMzQ3LS41OTUuOTg1LTEgMS43MjItMXMxLjM3NS40MDUgMS43MjIgMXptOC43MTQtMi44NzhjLTEuMzY4LTIuNDU1LTMuOTg4LTQuMTIyLTYuOTkyLTQuMTIyLTEuNjAzIDAtMy4wOTUuNDc5LTQuMzQ4IDEuMjk0Ljk5MS0xLjk1MSAzLjAxMy0zLjI5NCA1LjM0OC0zLjI5NCAzLjMwOSAwIDYgMi42OTEgNiA2IDAgLjA0MS0uMDA3LjA4MS0uMDA4LjEyMnptLTUuOTkyLTguMTIyYy0xLjEwNiAwLTIuMTYuMjI2LTMuMTE5LjYzNCAxLjA3Ni0xLjAxNSAyLjUyMi0xLjYzNCA0LjExOS0xLjYzNCAyLjk2MSAwIDUuNDIyIDIuMTU4IDUuOTA3IDQuOTgzLTEuMzg4LTIuMzc4LTMuOTYxLTMuOTgzLTYuOTA3LTMuOTgzem0tMSA2YzIuOTY3IDAgNS40MzEgMi4xNjcgNS45MSA1aC0yLjA1MmMtLjQ0Ny0xLjcyMS0yLTMtMy44NTgtM3MtMy40MTEgMS4yNzktMy44NTggM2gtMi4wNTJjLjQ3OS0yLjgzMyAyLjk0My01IDUuOTEtNXptLTMuODU4IDdjLjE1OC42MDkuNDU2IDEuMTU3Ljg1OCAxLjYxOHYyLjM4MmgtLjMxYy0xLjM1NC0uODk5LTIuMzE5LTIuMzM0LTIuNi00em0tNS4xNDIgNmg1LjEzNmMuMjc4LjE1NC41NjcuMjkuODY0LjQxMXYzLjU4OWgtNnptOCAuOTMxYy4zMjguMDQxLjY2MS4wNjkgMSAuMDY5IDEuNDAxIDAgMi43MTgtLjM2NCAzLjg2NC0xaDEuMTM2djRoLTZ6bTgtLjkzMWg2djRoLTZ6bTggMGgxLjEzNmMxLjE0Ny42MzYgMi40NjMgMSAzLjg2NCAxIC4zMzkgMCAuNjcyLS4wMjggMS0uMDY5djMuMDY5aC02em04IC40MTFjLjI5Ny0uMTIxLjU4Ni0uMjU3Ljg2NC0uNDExaDUuMTM2djRoLTZ6bTcuOTY4LTcuNTcyLjAxOS0uMDAzLTIuNzc0LTE2LjY0M2MtLjIxMi0xLjI3MS0xLjMwMS0yLjE5My0yLjU4OS0yLjE5My0xLjQ0NyAwLTIuNjI0IDEuMTc3LTIuNjI0IDIuNjI0djEuMzc2aDJ2LTEuMzc2YzAtLjM0NC4yOC0uNjI0LjYyNC0uNjI0LjMwNyAwIC41NjUuMjE5LjYxNi41MjFsMi41OCAxNS40NzloLS44ODljLS4xMjktMS4wMy0uNDUxLTItLjkzNC0yLjg3IDAtLjA0NC4wMDMtLjA4Ni4wMDMtLjEzIDAtMS40Mi0uMzc2LTIuNzUxLTEuMDI3LTMuOTA4LS40NTctNC4wNTQtMy44NDEtNy4wOTItNy45NDMtNy4wOTItNC40MTEgMC04IDMuNTg5LTggOCAwIDEuMzczLjM2NCAyLjcxMyAxLjAzMSAzLjkwNC4wODIuNzIxLjI2MSAxLjQyNS41MzIgMi4wOTZoLTMuMTg3Yy4yNjMtLjY1LjQ0Mi0xLjMzLjUyNy0yLjAyOC42OTItMS4yMDggMS4wNjctMi41NzQgMS4wNjctMy45NzIgMC00LjQxMS0zLjU4OS04LTgtOC00LjA4IDAtNy40NDggMy4wMDYtNy45MzQgNy4wMjctLjY3NCAxLjE3Mi0xLjA2NiAyLjUyNi0xLjA2NiAzLjk3MyAwIC4wNDQuMDAzLjA4Ni4wMDQuMTMtLjQ4NC44Ny0uODA1IDEuODQtLjkzNSAyLjg3aC0uODg5bDIuNTgtMTUuNDc5Yy4wNTEtLjMwMi4zMDktLjUyMS42MTYtLjUyMS4zNDQgMCAuNjI0LjI4LjYyNC42MjR2MS4zNzZoMnYtMS4zNzZjMC0xLjQ0Ny0xLjE3Ny0yLjYyNC0yLjYyNC0yLjYyNC0xLjI4OCAwLTIuMzc3LjkyMi0yLjU4OCAyLjE5MmwtMi43NzQgMTYuNjQ0LjAxOS4wMDNjLS4wMS4wNTQtLjAzMy4xMDQtLjAzMy4xNjF2M2gtMXYtMjNoNDR2MjNoLTF2LTNjMC0uMDU3LS4wMjMtLjEwNy0uMDMyLS4xNjF6bTEuMDMyLTI1LjgzOXY0aC00NHYtNHptLTIwLTJoLTR2LTRjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptLTI4LTljMC0uNTUxLjQ0OS0xIDEtMWg1MGMuNTUxIDAgMSAuNDQ5IDEgMXY5aC0yMnYtNGMwLTIuMjA2LTEuNzk0LTQtNC00cy00IDEuNzk0LTQgNHY0aC0yMnptMCAxMWgydjI5Ljc0OWwtMiAzLjcxNHptMy41OTcgMzFoMS40MDN2N2MwIC41NTMuNDQ4IDEgMSAxaDQwYy41NTIgMCAxLS40NDcgMS0xdi03aDEuNDAzbDUuOTIzIDExaC01Ni42NTJ6bTUwLjQwMyAxNWgtNTZjLS41NTEgMC0xLS40NDgtMS0xdi0xaDU4djFjMCAuNTUyLS40NDkgMS0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMiAxNmg0djJoLTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCAxNmg0djJoLTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMSA5aDJ2MmgtMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",vle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTExMy4yMDYgMTA2LjI2NWgtMTMuNjIzdi04Ni4yOGExLjc0OSAxLjc0OSAwIDAgMCAtMS41NTQtMS43MzhsLTQ2LTUuMTkyYTEuNzUgMS43NSAwIDAgMCAtMS45NDYgMS43Mzl2My40NDFoLTE5LjkxNmExLjc1IDEuNzUgMCAwIDAgLTEuNzUgMS43NXY4Ni4yOGgtMTMuNjIzYTEuNzUgMS43NSAwIDEgMCAwIDMuNWgzNS4yODl2My40NDFhMS43NSAxLjc1IDAgMCAwIDEuNzUgMS43NSAxLjYxIDEuNjEgMCAwIDAgLjItLjAxMWw0NS45LTUuMThoMTUuMjc2YTEuNzUgMS43NSAwIDAgMCAwLTMuNXptLTgxLjI4OS04NC41M2gxOC4xNjZ2NC41aC0xMS45MTdhMS43NSAxLjc1IDAgMCAwIC0xLjc1IDEuNzV2NzguMjhoLTQuNXptOCA4NC41M3YtNzYuNTNoMTAuMTY2djc2LjUzem0xMy42NjYtODkuNTEzIDQyLjUgNC44djg0LjlsLTQyLjUgNC44eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjEuMTI1IDU4Ljc5MmE1LjIwOCA1LjIwOCAwIDEgMCA1LjIwOCA1LjIwOCA1LjIxNCA1LjIxNCAwIDAgMCAtNS4yMDgtNS4yMDh6bTAgNi45MTZhMS43MDggMS43MDggMCAxIDEgMS43MDgtMS43MDggMS43MSAxLjcxIDAgMCAxIC0xLjcwOCAxLjcwOHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Ule="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDAxLjA2NywwSDExMC45MzNjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y0OTQuOTMzYzAsNC43MTksMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjkwLjEzMw0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1Y4LjUzM0M0MDkuNiwzLjgxNCw0MDUuNzc3LDAsNDAxLjA2NywweiBNMzkyLjUzMyw0OTQuOTMzSDExOS40NjdWMTcuMDY3aDI3My4wNjdWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Ni45MzMsMzQuMTMzSDE0NS4wNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y0NjAuOGMwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzaDIyMS44NjcNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzN2LTQ2MC44QzM3NS40NjcsMzcuOTQ4LDM3MS42NDQsMzQuMTMzLDM2Ni45MzMsMzQuMTMzeiBNMzU4LjQsNDk0LjkzM0gxNTMuNlY1MS4yaDIwNC44VjQ5NC45MzN6DQoJCQkiLz4NCiAgICAgICAgPHBhdGggZD0iTTI1Niw2OC4yNjdjLTQ3LjA1MywwLTg1LjMzMywzOC4yODEtODUuMzMzLDg1LjMzM3Y4LjUzM2MwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzaDE1My42DQoJCQljNC43MSwwLDguNTMzLTMuODE0LDguNTMzLTguNTMzVjE1My42QzM0MS4zMzMsMTA2LjU0NywzMDMuMDUzLDY4LjI2NywyNTYsNjguMjY3eiBNMTg3LjczMywxNTMuNg0KCQkJYzAtMzcuNjQxLDMwLjYyNi02OC4yNjcsNjguMjY3LTY4LjI2N2MzNy42NDEsMCw2OC4yNjcsMzAuNjI2LDY4LjI2Nyw2OC4yNjdIMTg3LjczM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzOC45MzMsMTg3LjczM0gxNzkuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzMNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMTk2LjI2N0MyNDcuNDY3LDE5MS41NDgsMjQzLjY0NCwxODcuNzMzLDIzOC45MzMsMTg3LjczM3ogTTIzMC40LDMwNy4yaC00Mi42NjdWMjA0LjhIMjMwLjQNCgkJCVYzMDcuMnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMi44LDE4Ny43MzNoLTU5LjczM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YxOTYuMjY3QzM0MS4zMzMsMTkxLjU0OCwzMzcuNTEsMTg3LjczMywzMzIuOCwxODcuNzMzeiBNMzI0LjI2NywzMDcuMkgyODEuNlYyMDQuOGg0Mi42NjdWMzA3LjINCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzOC45MzMsMzQxLjMzM0gxNzkuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzMNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMzQ5Ljg2N0MyNDcuNDY3LDM0NS4xNDgsMjQzLjY0NCwzNDEuMzMzLDIzOC45MzMsMzQxLjMzM3ogTTIzMC40LDQ2MC44aC00Mi42NjdWMzU4LjRIMjMwLjQNCgkJCVY0NjAuOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMi44LDM0MS4zMzNoLTU5LjczM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YzNDkuODY3QzM0MS4zMzMsMzQ1LjE0OCwzMzcuNTEsMzQxLjMzMywzMzIuOCwzNDEuMzMzeiBNMzI0LjI2Nyw0NjAuOEgyODEuNlYzNTguNGg0Mi42NjdWNDYwLjgNCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI1Niw2OC4yNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y4NS4zMzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1Y3Ni44DQoJCQlDMjY0LjUzMyw3Mi4wODEsMjYwLjcxLDY4LjI2NywyNTYsNjguMjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzIwLjQzNSw5Ny42OThjLTMuMzI4LTMuMzM2LTguNzMtMy4zMzYtMTIuMDY2LDBMMjQ5Ljk2NywxNTYuMWMtMy4zMzcsMy4zMzctMy4zMzcsOC43MywwLDEyLjA2Ng0KCQkJYzEuNjY0LDEuNjY0LDMuODQ5LDIuNSw2LjAzMywyLjVjMi4xODUsMCw0LjM2OS0wLjgzNiw2LjAzMy0yLjVsNTguNDAyLTU4LjQwMkMzMjMuNzcyLDEwNi40MjgsMzIzLjc3MiwxMDEuMDM1LDMyMC40MzUsOTcuNjk4eiINCiAgICAgICAgLz4NCiAgICAgICAgPHBhdGggZD0iTTI2Mi4wMzMsMTU2LjFMMjAzLjYzMSw5Ny42OWMtMy4zMjgtMy4zMzctOC43My0zLjMzNy0xMi4wNjYsMGMtMy4zMzcsMy4zMzYtMy4zMzcsOC43MywwLDEyLjA2Nmw1OC40MDIsNTguNDExDQoJCQljMS42NjQsMS42NjQsMy44NDksMi41LDYuMDMzLDIuNWMyLjE4NSwwLDQuMzY5LTAuODM2LDYuMDMzLTIuNUMyNjUuMzcsMTY0LjgzLDI2NS4zNywxNTkuNDM3LDI2Mi4wMzMsMTU2LjF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01OS43MzMsNDk0LjkzM2gtNTEuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzQzAsNTA4LjE4NiwzLjgyMyw1MTIsOC41MzMsNTEyaDUxLjINCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNDNjguMjY3LDQ5OC43NDgsNjQuNDQ0LDQ5NC45MzMsNTkuNzMzLDQ5NC45MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDMuNDY3LDQ5NC45MzNoLTEwMi40Yy00LjcxLDAtOC41MzMsMy44MTQtOC41MzMsOC41MzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gxMDIuNA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM0M1MTIsNDk4Ljc0OCw1MDguMTc3LDQ5NC45MzMsNTAzLjQ2Nyw0OTQuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",ble="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMjU2IDE2MGE5NiA5NiAwIDEgMCA5NiA5NiA5Ni4xMDggOTYuMTA4IDAgMCAwIC05Ni05NnptMCAxNzZhODAgODAgMCAxIDEgODAtODAgODAuMDkxIDgwLjA5MSAwIDAgMSAtODAgODB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTI4YTEyOCAxMjggMCAxIDAgMTI4IDEyOCAxMjguMTQ1IDEyOC4xNDUgMCAwIDAgLTEyOC0xMjh6bTAgMjQwYTExMiAxMTIgMCAxIDEgMTEyLTExMiAxMTIuMTI3IDExMi4xMjcgMCAwIDEgLTExMiAxMTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzIgNDg4di00NjRhOCA4IDAgMCAwIC04LThoLTMzNmE4IDggMCAwIDAgLTggOHY0NjRhOCA4IDAgMCAwIDggOGgzMzZhOCA4IDAgMCAwIDgtOHptLTMzNi0zNzZoMzIwdjMwNGgtMzIwem05Ni04MGgxNDR2NDBhOCA4IDAgMCAwIDggOGg3MnYxNmgtMjI0em0yMjQgMzJoLTY0di0zMmg2NHptLTI0MC0zMnY2NGgtODB2LTY0em0tODAgNDQ4di00OGgzMjB2NDh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDggNDBhMjQgMjQgMCAxIDAgMjQgMjQgMjQuMDI3IDI0LjAyNyAwIDAgMCAtMjQtMjR6bTAgMzJhOCA4IDAgMSAxIDgtOCA4LjAwOSA4LjAwOSAwIDAgMSAtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTEyIDU2aDQ4djE2aC00OHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI4OCA0MGgzMnYxNmgtMzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yODggNzJoMzJ2MTZoLTMyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjcyIDIwMGE4IDggMCAwIDAgLTE2IDBjMCA2LjM3My0yLjQxNyA5LjE5MS02LjA3NCAxMy40NTgtNC40MjYgNS4xNTktOS45MjYgMTEuNTgtOS45MjYgMjMuODcyczUuNSAxOC43MTQgOS45MjYgMjMuODczYzMuNjU3IDQuMjY4IDYuMDc0IDcuMDg3IDYuMDc0IDEzLjQ2MnMtMi40MTcgOS4xOTMtNi4wNzQgMTMuNDYxYy00LjQyNiA1LjE1OS05LjkyNiAxMS41ODEtOS45MjYgMjMuODc0YTggOCAwIDAgMCAxNiAwYzAtNi4zNzUgMi40MTctOS4xOTQgNi4wNzQtMTMuNDYyIDQuNDIzLTUuMTU5IDkuOTI2LTExLjU4IDkuOTI2LTIzLjg3M3MtNS41LTE4LjcxNS05LjkyNi0yMy44NzRjLTMuNjU3LTQuMjY4LTYuMDc0LTcuMDkxLTYuMDc0LTEzLjQ2MXMyLjQxNy05LjE5MSA2LjA3NC0xMy40NThjNC40MjYtNS4xNTkgOS45MjYtMTEuNTggOS45MjYtMjMuODcyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjk2IDIzNy4zM2MwLTYuMzczIDIuNDE3LTkuMTkyIDYuMDc1LTEzLjQ2LjgxMi0uOTQ3IDEuNjIzLTEuOSAyLjQwNy0yLjg3OGE4IDggMCAwIDAgLTEyLjUtOS45ODRjLS42NjguODM2LTEuMzYxIDEuNjQxLTIuMDUzIDIuNDQ5LTQuNDI5IDUuMTU5LTkuOTI5IDExLjU4MS05LjkyOSAyMy44NzNzNS41IDE4LjcxNCA5LjkyNiAyMy44NzNjMy42NTcgNC4yNjggNi4wNzQgNy4wODcgNi4wNzQgMTMuNDYycy0yLjQxNyA5LjE5NC02LjA3NSAxMy40NjJjLS44MTMuOTQ5LTEuNjI1IDEuOS0yLjQwOSAyLjg4MWE4IDggMCAwIDAgMTIuNSA5Ljk4NGMuNjY4LS44MzcgMS4zNjItMS42NDQgMi4wNTQtMi40NTIgNC40My01LjE2IDkuOTMtMTEuNTgyIDkuOTMtMjMuODc1cy01LjUtMTguNzE1LTkuOTI2LTIzLjg3NGMtMy42NTctNC4yNjgtNi4wNzQtNy4wOTEtNi4wNzQtMTMuNDYxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjE2IDIzNy4zM2MwLTYuMzczIDIuNDE3LTkuMTkyIDYuMDc1LTEzLjQ2LjgxMi0uOTQ3IDEuNjIzLTEuOSAyLjQwNy0yLjg3OGE4IDggMCAwIDAgLTEyLjUtOS45ODRjLS42NjguODM2LTEuMzYxIDEuNjQxLTIuMDUzIDIuNDQ5LTQuNDI5IDUuMTU5LTkuOTI5IDExLjU4MS05LjkyOSAyMy44NzNzNS41IDE4LjcxNCA5LjkyNiAyMy44NzNjMy42NTcgNC4yNjggNi4wNzQgNy4wODcgNi4wNzQgMTMuNDYycy0yLjQxNyA5LjE5NC02LjA3NSAxMy40NjJjLS44MTMuOTQ5LTEuNjI1IDEuOS0yLjQwOSAyLjg4MWE4IDggMCAwIDAgMTIuNSA5Ljk4NGMuNjY4LS44MzcgMS4zNjItMS42NDQgMi4wNTQtMi40NTIgNC40My01LjE2IDkuOTMtMTEuNTgyIDkuOTMtMjMuODc1cy01LjUtMTguNzE1LTkuOTI2LTIzLjg3NGMtMy42NTctNC4yNjgtNi4wNzQtNy4wOTEtNi4wNzQtMTMuNDYxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",$le="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ3Ni4wNjUgNDc2LjA2NSI+DQo8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KCTxwYXRoIGQ9Ik00MzIuNTU4LDE3Mi4wMkM0MTkuMzAzLDY0LjU4NywzMjEuNDY2LTExLjc2LDIxNC4wMzMsMS40OTVTMzAuMjUzLDExMi41ODcsNDMuNTA4LDIyMC4wMg0KCQljMTEuMDA4LDg5LjIyMiw4MS4zMDMsMTU5LjUxNywxNzAuNTI1LDE3MC41MjV2MzcuNTJoLTU2Yy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjR2MjRoMjA4di0yNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTU2DQoJCXYtMzcuNTJDMzY5LjQ2NiwzNzcuMjksNDQ1LjgxMywyNzkuNDUzLDQzMi41NTgsMTcyLjAyeiBNMzE4LjAzMyw0NDQuMDY1YzQuNDE4LDAsOCwzLjU4Miw4LDh2OGgtMTc2di04YzAtNC40MTgsMy41ODItOCw4LTgNCgkJSDMxOC4wMzN6IE0yMzAuMDMzLDQyOC4wNjV2LTMyaDE2djMySDIzMC4wMzN6IE0yMzguMDMzLDM3Ni4wNjVjLTk5LjQxMSwwLTE4MC04MC41ODktMTgwLTE4MA0KCQljMC4xMTUtOTkuMzY0LDgwLjYzNi0xNzkuODg1LDE4MC0xODBjOTkuNDExLDAsMTgwLDgwLjU4OSwxODAsMTgwUzMzNy40NDQsMzc2LjA2NSwyMzguMDMzLDM3Ni4wNjV6Ii8+DQoJPHBhdGggZD0iTTQwNi4wMzMsMjEyLjA2NXYtMTZjMC00LjQxOC0zLjU4Mi04LTgtOGgtOTMuNTM2YzM5LjgtMjcuODMyLDQ5LjUwMi04Mi42NTgsMjEuNjctMTIyLjQ1OA0KCQljLTE2LjQ2Ny0yMy41NDgtNDMuNC0zNy41NjUtNzIuMTM0LTM3LjU0MmgtMTZjLTQuNDE4LDAtOCwzLjU4Mi04LDh2OTMuNTM2Yy0yNy44MzItMzkuOC04Mi42NTgtNDkuNTAyLTEyMi40NTgtMjEuNjcNCgkJYy0yMy41NDgsMTYuNDY3LTM3LjU2NSw0My40LTM3LjU0Miw3Mi4xMzR2MTZjMCw0LjQxOCwzLjU4Miw4LDgsOGg5My41MzZjLTIzLjQ2NSwxNi40NzgtMzcuNDYzLDQzLjMyOC0zNy41MzYsNzINCgkJYzAuMDU3LDQ4LjU3NywzOS40MjMsODcuOTQzLDg4LDg4aDE2YzQuNDE4LDAsOC0zLjU4Miw4LTh2LTkzLjUzNmMyNy44MzIsMzkuOCw4Mi42NTgsNDkuNTAyLDEyMi40NTgsMjEuNjcNCgkJQzM5Mi4wMzgsMjY3LjczMyw0MDYuMDU2LDI0MC44LDQwNi4wMzMsMjEyLjA2NXogTTI0Ni4wMzMsNDQuMDY1aDhjMzkuNzY0LDAuMDU1LDcxLjk1NSwzMi4zMzYsNzEuOSw3Mi4xDQoJCWMtMC4wNDMsMzEuMTctMjAuMTM4LDU4Ljc3Mi00OS43ODgsNjguMzg4Yy00LjIwMi0xNC4wNTItMTUuNzU4LTI0LjY3Ny0zMC4xMTItMjcuNjg4VjQ0LjA2NXogTTg2LjAzMywxODguMDY1di04DQoJCWMwLjA3My0zOS43NjQsMzIuMzY4LTcxLjk0LDcyLjEzMy03MS44NjdjMzEuMTQ4LDAuMDU3LDU4LjcyNywyMC4xMzgsNjguMzQ3LDQ5Ljc2M2MtMTQuMDQ3LDQuMjAzLTI0LjY2OCwxNS43NTUtMjcuNjgsMzAuMTA0DQoJCUg4Ni4wMzN6IE0yMzAuMDMzLDM0OC4wNjVoLThjLTM5Ljc2NC0wLjA1NS03MS45NTUtMzIuMzM2LTcxLjktNzIuMWMwLjA0My0zMS4xNywyMC4xMzgtNTguNzcyLDQ5Ljc4OC02OC4zODgNCgkJYzQuMjAyLDE0LjA1MiwxNS43NTgsMjQuNjc3LDMwLjExMiwyNy42ODhWMzQ4LjA2NXogTTIzOC4wMzMsMjIwLjA2NWMtMTMuMjU1LDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCwyNC0yNA0KCQlzMjQsMTAuNzQ1LDI0LDI0UzI1MS4yODcsMjIwLjA2NSwyMzguMDMzLDIyMC4wNjV6IE0zMTcuOSwyODMuOTMyYy0zMS4xNDgtMC4wNTctNTguNzI3LTIwLjEzOC02OC4zNDctNDkuNzYzDQoJCWMxNC4wNDctNC4yMDMsMjQuNjY4LTE1Ljc1NSwyNy42OC0zMC4xMDRoMTEyLjh2OEMzODkuOTU5LDI1MS44MywzNTcuNjY0LDI4NC4wMDYsMzE3LjksMjgzLjkzMnoiLz4NCjwvZz4NCjwvc3ZnPg0K",Ple="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTkgNTExLjk5OSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS45OTksMTI2LjAwMWgtMC4wMjdjNi4yOTItOC4zNjIsMTAuMDI3LTE4Ljc1MiwxMC4wMjctMzBjMC0yNy41Ny0yMi40My01MC4wMDEtNTAtNTAuMDAxDQoJCXMtNTAuMDAxLDIyLjQzLTUwLjAwMSw1MC4wMDFjMCwxMS4yNDgsMy43MzYsMjEuNjM4LDEwLjAyNywzMGgtMC4wMjdjLTUuNTIyLDAtMTAsNC40NzctMTAsMTB2MzUuNTQ1DQoJCWMtMTEuMzI4LTcuMjMzLTIzLjEyOC0xMy42NTgtMzUuMzM0LTE5LjI0MXYtMTYuMzA0YzAtNS41MjMtNC40NzctMTAtMTAtMTBzLTEwLDQuNDc3LTEwLDEwdjguMDM3DQoJCWMtMy4zNjktMS4yNDctNi43NjQtMi40MzgtMTAuMTg2LTMuNTYyYy04LjI5MS0yLjcyMy0xNi42ODMtNS4wNTItMjUuMTQ2LTcuMDExdi0yMC44MzNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMA0KCQljLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2MTYuOTMyYy0xMS42OC0xLjg0OS0yMy40NzQtMi45NzQtMzUuMzMyLTMuMzgxVjk2LjAwMWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwDQoJCXYzMC4xODNjLTExLjg1OSwwLjQwNy0yMy42NTMsMS41MzItMzUuMzMzLDMuMzgxdi0xNi45MzJjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHYyMC44MzMNCgkJYy04LjQ2MiwxLjk1OS0xNi44NTIsNC4yODctMjUuMTQyLDcuMDA5Yy0zLjQyNCwxLjEyNC02LjgxOSwyLjMxNi0xMC4xOTEsMy41NjN2LTguMDM3YzAtNS41MjMtNC40NzctMTAtMTAtMTANCgkJYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjE2LjMwNGMtMTIuMjA1LDUuNTgzLTI0LjAwNCwxMi4wMDctMzUuMzM0LDE5LjI0di0zNS41NDRjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMC4wMjcNCgkJYzYuMjkzLTguMzYyLDEwLjAyNy0xOC43NTIsMTAuMDI3LTMwYzAtMjcuNTctMjIuNDMtNTAtNTAtNTBzLTUwLDIyLjQzLTUwLDUwYzAsMTEuMjQ4LDMuNzM0LDIxLjYzOCwxMC4wMjcsMzBIMTANCgkJYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjMxOS45OTljMCw1LjUyMyw0LjQ3NywxMCwxMCwxMGg0MGg0MGgzMS4wMzNjNS41MjIsMCwxMC00LjQ3NywxMC0xMGMwLTUuNTIyLTQuNDc4LTEwLTEwLTEwSDEwMA0KCQl2LTIwLjAwMWgzMTEuOTk4djIwLjAwMWgtMjEuMDMzYy01LjUyMywwLTEwLDQuNDc4LTEwLDEwYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMzEuMDMzaDQwLjAwMWg0MGM1LjUyMiwwLDEwLTQuNDc3LDEwLTEwDQoJCVYxMzYuMDAxQzUxMS45OTksMTMwLjQ3Nyw1MDcuNTIxLDEyNi4wMDEsNTAxLjk5OSwxMjYuMDAxeiBNODAsNDQ1Ljk5OUg1MEgyMFYxNDYuMDAxaDIwdjQxLjg5OGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwDQoJCXMxMC00LjQ3NywxMC0xMHYtNDEuODk4aDIwVjQ0NS45OTl6IE01MCwxMjYuMDAxYy0xNi41NDMsMC0zMC0xMy40NTgtMzAtMzBzMTMuNDU3LTMwLDMwLTMwYzE2LjU0MywwLDMwLDEzLjQ1OCwzMCwzMA0KCQlTNjYuNTQzLDEyNi4wMDEsNTAsMTI2LjAwMXogTTEzNS4zMzQsNDA1Ljk5OEgxMDBWMTk1LjYyOWMxMS4zMTgtOC4wMiwyMy4xMjYtMTUuMDk1LDM1LjMzNC0yMS4yMThWNDA1Ljk5OHogTTE5MC42NjcsNDA2DQoJCWgtMzUuMzMzVjE2NS4zODRjMTEuNS00LjYzLDIzLjI5OC04LjQ0OSwzNS4zMzMtMTEuNDM3VjQwNnogTTI0Niw0MDZoLTM1LjMzM1YxNDkuNzg3YzExLjYxNC0xLjk1OCwyMy40MDktMy4xNjgsMzUuMzMzLTMuNTk5DQoJCVY0MDZ6IE0zMDEuMzMyLDQwNS45OThIMjY2di0yNTkuODFjMTEuOTI0LDAuNDMxLDIzLjcxNywxLjY0MSwzNS4zMzIsMy41OTlWNDA1Ljk5OHogTTM1Ni42NjQsNDA1Ljk5OWgtMzUuMzMyVjE1My45NDgNCgkJYzEyLjAzNSwyLjk4OCwyMy44MzIsNi44MDcsMzUuMzMyLDExLjQzOFY0MDUuOTk5eiBNNDExLjk5OCw0MDUuOTk4aC0zNS4zMzRWMTc0LjQxMmMxMi4yMDksNi4xMjMsMjQuMDE3LDEzLjIsMzUuMzM0LDIxLjIyDQoJCVY0MDUuOTk4eiBNNDkxLjk5OSw0NDUuOTk5aC0zMGgtMzAuMDAxVjE0Ni4wMDFoMjAuMDAxdjQxLjg5OGMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwYzUuNTIyLDAsMTAtNC40NzcsMTAtMTB2LTQxLjg5OGgyMA0KCQlWNDQ1Ljk5OXogTTQ2MS45OTksMTI2LjAwMWMtMTYuNTQyLDAtMzAuMDAxLTEzLjQ1OC0zMC4wMDEtMzBjMC0xNi41NDMsMTMuNDU5LTMwLjAwMSwzMC4wMDEtMzAuMDAxDQoJCWMxNi41NDIsMCwzMCwxMy40NTgsMzAsMzAuMDAxQzQ5MS45OTksMTEyLjU0Miw0NzguNTQxLDEyNi4wMDEsNDYxLjk5OSwxMjYuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTUwLDQ0NS45OTloLTAuMjM2Yy01LjUyMywwLTEwLDQuNDc4LTEwLDEwYzAsNS41MjMsNC40NzcsMTAsMTAsMTBIMTUwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTANCgkJQzE2MCw0NTAuNDc3LDE1NS41MjMsNDQ1Ljk5OSwxNTAsNDQ1Ljk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Mi4yMzQsNDQ1Ljk5OWgtMC4yMzdjLTUuNTIyLDAtMTAsNC40NzgtMTAsMTBjMCw1LjUyMyw0LjQ3OCwxMCwxMCwxMGgwLjIzN2M1LjUyMywwLDEwLTQuNDc3LDEwLTEwDQoJCUMzNzIuMjM0LDQ1MC40NzcsMzY3Ljc1OCw0NDUuOTk5LDM2Mi4yMzQsNDQ1Ljk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwLDIwNi42MzFjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2MC4yMzVjMCw1LjUyMyw0LjQ3NywxMCwxMCwxMHMxMC00LjQ3NywxMC0xMHYtMC4yMzUNCgkJQzYwLDIxMS4xMDgsNTUuNTIzLDIwNi42MzEsNTAsMjA2LjYzMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ2MS45OTksMjA2LjYzMWMtNS41MjIsMC0xMCw0LjQ3Ny0xMCwxMHYwLjIzNWMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwYzUuNTIyLDAsMTAtNC40NzcsMTAtMTB2LTAuMjM1DQoJCUM0NzEuOTk5LDIxMS4xMDgsNDY3LjUyMSwyMDYuNjMxLDQ2MS45OTksMjA2LjYzMXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Wle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MC4wMDUgNDgwLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTEwNC4wMDUsMTA4LjAwM2MtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0YzAsNC40MTgsMy41ODIsOCw4LDhzOC0zLjU4Miw4LThzMy41ODItOCw4LThzOC0zLjU4Miw4LTgNCgkJCVMxMDguNDIzLDEwOC4wMDMsMTA0LjAwNSwxMDguMDAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzg1LjM1Nyw3Ni4xMTVsLTI4MC00OGMtMC40NDctMC4wNzMtMC44OTktMC4xMTEtMS4zNTItMC4xMTJDNDYuNjEyLDI3Ljk1NiwwLjA0Nyw3NC40NDQsMCwxMzEuODM3DQoJCQljLTAuMDI2LDMxLjA1OSwxMy44NDMsNjAuNTAxLDM3LjgwNSw4MC4yNjFsNTguNDQsMjMzLjg0OGMwLjg5MiwzLjU1OSw0LjA5MSw2LjA1Niw3Ljc2LDYuMDU2aDY0DQoJCQljNC40MTgsMC4wMDgsOC4wMDctMy41NjYsOC4wMTUtNy45ODVjMC0wLjE3MS0wLjAwNS0wLjM0MS0wLjAxNS0wLjUxMWwtMTMuNi0yMTcuNGwyMjIuOTItMzguMjE2DQoJCQljMy44NTQtMC42NDUsNi42NzktMy45OCw2LjY4LTcuODg4di05NkMzOTIuMDA3LDgwLjEwNSwzODkuMTk5LDc2Ljc3MywzODUuMzU3LDc2LjExNXogTTExMC4yNTMsNDM2LjAwM0w1Ny42MDUsMjI1LjE3MQ0KCQkJYzAuNTA0LDAuMjQ4LDEuMDQsMC40MTYsMS41NDQsMC42NjRjMi41NzYsMS4yMzIsNS4xODksMi4zNTIsNy44NCwzLjM2YzAuNzQ0LDAuMjgsMS40NjQsMC42LDIuMjA4LDAuODY0DQoJCQljMy4zMTksMS4xNzQsNi42OTcsMi4xNzUsMTAuMTIsM2MwLjgsMC4xOTIsMS42LDAuMzI4LDIuNCwwLjUwNGMyLjc2OCwwLjU5Miw1LjU2NSwxLjA3Nyw4LjM5MiwxLjQ1Ng0KCQkJYzEuMDA4LDAuMTI4LDIuMDE2LDAuMjY0LDMuMDI0LDAuMzY4YzMuNjExLDAuMzksNy4yNCwwLjU5NiwxMC44NzIsMC42MTZjMC40NTMtMC4wMDEsMC45MDUtMC4wMzksMS4zNTItMC4xMTJsNDEuMjE2LTcuMDg4DQoJCQlsMTIuOTIsMjA3LjJIMTEwLjI1M3ogTTM0NC4wMDUsMTc4LjczOWwtMjM4LjA4OCw0MC44bC0yLjU3NiwwLjQ2NGMtNDguMzY3LTAuMzA0LTg3LjM5OS0zOS42MzItODcuMzM2LTg4DQoJCQljMC4wNTUtNDguMzIsMzkuMDE4LTg3LjU3OSw4Ny4zMzYtODhsMjQwLjY2NCw0MS4yNjRWMTc4LjczOXogTTM3Ni4wMDUsMTczLjI1OWwtMTYsMi43NDR2LTg4bDE2LDIuNzQ0VjE3My4yNTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDQuMDA1LDc2LjAwM2MtMzAuOTI4LDAtNTYsMjUuMDcyLTU2LDU2YzAuMDM1LDMwLjkxMywyNS4wODcsNTUuOTY1LDU2LDU2YzMwLjkyOCwwLDU2LTI1LjA3Miw1Ni01Ng0KCQkJQzE2MC4wMDUsMTAxLjA3NSwxMzQuOTMzLDc2LjAwMywxMDQuMDA1LDc2LjAwM3ogTTEwNC4wMDUsMTcyLjAwM2MtMjIuMDkxLDAtNDAtMTcuOTA5LTQwLTQwYzAuMDI2LTIyLjA4LDE3LjkyLTM5Ljk3NCw0MC00MA0KCQkJYzIyLjA5MSwwLDQwLDE3LjkwOSw0MCw0MFMxMjYuMDk3LDE3Mi4wMDMsMTA0LjAwNSwxNzIuMDAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQxLjkzMyw0MTEuNTIzbC05LjY2NC0xNTUuMDI0Yy0wLjI3Ni00LjQxOC00LjA4Mi03Ljc3Ni04LjUtNy41Yy00LjQxOCwwLjI3Ni03Ljc3Niw0LjA4Mi03LjUsOC41bDkuNjY0LDE1NQ0KCQkJYzAuMjYzLDQuMjI3LDMuNzczLDcuNTE2LDguMDA4LDcuNTA0YzAuMTY4LDAsMC4zMzYsMCwwLjUwNCwwQzEzOC44NTQsNDE5LjcyOCwxNDIuMjA3LDQxNS45MzIsMTQxLjkzMyw0MTEuNTIzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDcyLjAwNSwxMjQuMDAzaC00OGMtNC40MTgsMC04LDMuNTgyLTgsOHMzLjU4Miw4LDgsOGg0OGM0LjQxOCwwLDgtMy41ODIsOC04UzQ3Ni40MjMsMTI0LjAwMyw0NzIuMDA1LDEyNC4wMDN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIuMDA1LDE1Ni4wMDNoLTQ4Yy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDQ4YzQuNDE4LDAsOC0zLjU4Miw4LThTNDc2LjQyMywxNTYuMDAzLDQ3Mi4wMDUsMTU2LjAwM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ3Mi4wMDUsOTIuMDAzaC00OGMtNC40MTgsMC04LDMuNTgyLTgsOHMzLjU4Miw4LDgsOGg0OGM0LjQxOCwwLDgtMy41ODIsOC04UzQ3Ni40MjMsOTIuMDAzLDQ3Mi4wMDUsOTIuMDAzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Rle="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ4LjQ1Nyw3Ny4yMjdhOC4wNjMsOC4wNjMsMCwwLDAtMTAuNCwxMi4zMjV2Ni45MjdhNS4yNzMsNS4yNzMsMCwwLDAsMTAuNTQ1LDBWODkuNTUzYTguMDYzLDguMDYzLDAsMCwwLS4xNDYtMTIuMzI2Wk00NS44NzQsODcuMjRhMS43NSwxLjc1LDAsMCwwLS43NzEsMS40NTF2Ny43ODdhMS43NzMsMS43NzMsMCwwLDEtMy41NDUsMFY4OC42OTFhMS43NDcsMS43NDcsMCwwLDAtLjc3My0xLjQ1MUE0LjU2Niw0LjU2NiwwLDAsMSw0Mi40LDc4Ljk3OGE0Ljg3Niw0Ljg3NiwwLDAsMSwuOTQtLjA5Miw0LjUsNC41LDAsMCwxLDIuODkzLDEuMDQxLDQuNTYyLDQuNTYyLDAsMCwxLS4zNTYsNy4zMTNaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDUuMjI4LDQ0LjY2Myw2NS41OCw0My4zNlYxOS41MTRhNS4zNyw1LjM3LDAsMCwwLTUuMzYzLTUuMzY0SDI2LjQ0M2E1LjM3LDUuMzcsMCwwLDAtNS4zNjMsNS4zNjR2ODguOTcyYTUuMzcsNS4zNywwLDAsMCw1LjM2Myw1LjM2NEg2MC4yMTdhNS4zNyw1LjM3LDAsMCwwLDUuMzYzLTUuMzY0VjU5LjhsMzkuNjQ4LTEuM2ExLjc1LDEuNzUsMCwwLDAsMS42OTItMS43NDlWNDYuNDEyQTEuNzUsMS43NSwwLDAsMCwxMDUuMjI4LDQ0LjY2M1pNNjIuMDgsMTA4LjQ4NmExLjg2NiwxLjg2NiwwLDAsMS0xLjg2MywxLjg2NEgyNi40NDNhMS44NjYsMS44NjYsMCwwLDEtMS44NjMtMS44NjRWMTkuNTE0YTEuODY2LDEuODY2LDAsMCwxLDEuODYzLTEuODY0SDYwLjIxN2ExLjg2NiwxLjg2NiwwLDAsMSwxLjg2MywxLjg2NFY0My4yNDVsLTYuMjY3LS4yMDZhMTUuMTI3LDE1LjEyNywwLDEsMCwwLDE3LjA4Nmw2LjI2NC0uMjA2Wk00NC4zOSw2MC41aDBMNTEsNjAuMjg0YTExLjYxMiwxMS42MTIsMCwxLDEsLjA0LTE3LjRsLTYuNjQ5LS4yMTloLS4wNThBOC45Miw4LjkyLDAsMSwwLDQ0LjM5LDYwLjVabTU5LjAzLTUuNDQyLTM5LjU4NywxLjNoLS4wMDhMNDQuMzM0LDU3YTUuNDIsNS40MiwwLDAsMS0uMDI3LTEwLjg0bDU5LjExMywxLjk0M1oiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Jle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTggNTExLjk5OCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS4zNCwxMTcuMzM2Yy01LjkwNiwwLTEwLjY4OCw0Ljc3My0xMC42ODgsMTAuNjY0djg1LjMzNUg0NjkuMzR2LTIxLjMzNmMwLTIzLjUyMy0xOS4xNTYtNDIuNjYzLTQyLjY4OC00Mi42NjMNCgkJYy0xMi43MTgsMC0yNC4xNTUsNS42MDktMzEuOTk5LDE0LjQ5MWMtNy44MTItOC44ODItMTkuMjUtMTQuNDkxLTMyLTE0LjQ5MWMtMTIuNzE4LDAtMjQuMTU1LDUuNjA5LTMxLjk5OSwxNC40OTENCgkJYy03LjgxMi04Ljg4Mi0xOS4yNS0xNC40OTEtMzItMTQuNDkxYy0xMi43MTksMC0yNC4xNTYsNS42MDktMzEuOTkyLDE0LjQ5MWMtNy44Mi04Ljg4Mi0xOS4yNTgtMTQuNDkxLTMyLTE0LjQ5MQ0KCQljLTEyLjcyNiwwLTI0LjE3MSw1LjYwOS0zMiwxNC40OTFjLTcuODItOC44ODItMTkuMjU4LTE0LjQ5MS0zMi0xNC40OTFjLTEyLjcyNiwwLTI0LjE3MSw1LjYwOS0zMiwxNC40OTENCgkJYy03LjgyLTguODgyLTE5LjI1OC0xNC40OTEtMzItMTQuNDkxYy0xOS44MzUsMC0zNi41NywxMy42MTYtNDEuMzIsMzEuOTk5SDMyYy01Ljg5MSwwLTEwLjY2NCw0Ljc3My0xMC42NjQsMTAuNjY0djIxLjMzNkgxMC42NjQNCgkJQzQuNzczLDIxMy4zMzUsMCwyMTguMTA4LDAsMjIzLjk5OXM0Ljc3MywxMC42NjQsMTAuNjY0LDEwLjY2NGgxMC42NzJ2MjEuMzM2YzAsNS44OTEsNC43NzMsMTAuNjY0LDEwLjY2NCwxMC42NjRoMzJ2MjAyLjY3OA0KCQljMCwyMy41MTYsMTkuMTQxLDQyLjY1Niw0Mi42NjQsNDIuNjU2YzEyLjc0MiwwLDI0LjE4LTUuNjI1LDMyLTE0LjVjNy44MjgsOC44NzUsMTkuMjczLDE0LjUsMzIsMTQuNQ0KCQljMTIuNzQyLDAsMjQuMTgtNS42MjUsMzItMTQuNWM3LjgyOCw4Ljg3NSwxOS4yNzMsMTQuNSwzMiwxNC41YzEyLjc0MiwwLDI0LjE4LTUuNjI1LDMyLTE0LjUNCgkJYzcuODM2LDguODc1LDE5LjI3MywxNC41LDMxLjk5MiwxNC41YzEyLjc1LDAsMjQuMTg4LTUuNjI1LDMyLTE0LjVjNy44NDQsOC44NzUsMTkuMjgxLDE0LjUsMzEuOTk5LDE0LjUNCgkJYzEyLjc1LDAsMjQuMTg4LTUuNjI1LDMyLTE0LjVjNy44NDQsOC44NzUsMTkuMjgxLDE0LjUsMzEuOTk5LDE0LjVjMjMuNTMxLDAsNDIuNjg4LTE5LjE0MSw0Mi42ODgtNDIuNjU2VjIzNC42NjNoMzINCgkJYzUuODc1LDAsMTAuNjU2LTQuNzczLDEwLjY1Ni0xMC42NjRWMTI4QzUxMS45OTYsMTIyLjEwOSw1MDcuMjE1LDExNy4zMzYsNTAxLjM0LDExNy4zMzZ6IE02NCwyNDUuMzM1SDQyLjY2NHYtNDIuNjcySDY0VjI0NS4zMzUNCgkJeiBNMTI3Ljk5OSw0NjkuMzQxYzAsMTEuNzUtOS41NjMsMjEuMzEyLTIxLjMzNiwyMS4zMTJjLTExLjc1NywwLTIxLjMyOC05LjU2Mi0yMS4zMjgtMjEuMzEyVjI1NS45OTl2LTY0DQoJCWMwLTExLjc1OCw5LjU3LTIxLjMzNiwyMS4zMjgtMjEuMzM2YzExLjc3MywwLDIxLjMzNiw5LjU3OCwyMS4zMzYsMjEuMzM2VjQ2OS4zNDF6IE0xOTEuOTk5LDQ2OS4zNDENCgkJYy0wLjAwMSwxMS43NS05LjU2MywyMS4zMTItMjEuMzM2LDIxLjMxMmMtMTEuNzU3LDAtMjEuMzI4LTkuNTYyLTIxLjMyOC0yMS4zMTJWMTkxLjk5OWMwLTExLjc1OCw5LjU3LTIxLjMzNiwyMS4zMjgtMjEuMzM2DQoJCWMxMS43NzMsMCwyMS4zMzYsOS41NzgsMjEuMzM2LDIxLjMzNlY0NjkuMzQxeiBNMjU1Ljk5OCw0NjkuMzQxYzAsMTEuNzUtOS41NjIsMjEuMzEyLTIxLjMzNiwyMS4zMTINCgkJYy0xMS43NTcsMC0yMS4zMjgtOS41NjItMjEuMzI4LTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTctMjEuMzM2LDIxLjMyOC0yMS4zMzZjMTEuNzczLDAsMjEuMzM2LDkuNTc4LDIxLjMzNiwyMS4zMzZWNDY5LjM0MXoNCgkJIE0zMTkuOTk4LDQ2OS4zNDFjMCwxMS43NS05LjU2MiwyMS4zMTItMjEuMzQ0LDIxLjMxMmMtMTEuNzUsMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5DQoJCWMwLTExLjc1OCw5LjU2Mi0yMS4zMzYsMjEuMzEyLTIxLjMzNmMxMS43ODEsMCwyMS4zNDQsOS41NzgsMjEuMzQ0LDIxLjMzNlY0NjkuMzQxeiBNMzgzLjk5Nyw0NjkuMzQxDQoJCWMwLDExLjc1LTkuNTYyLDIxLjMxMi0yMS4zNDQsMjEuMzEyYy0xMS43NDksMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTYyLTIxLjMzNiwyMS4zMTItMjEuMzM2DQoJCWMxMS43ODEsMCwyMS4zNDQsOS41NzgsMjEuMzQ0LDIxLjMzNlY0NjkuMzQxeiBNNDQ3Ljk5Niw0NjkuMzQxYzAsMTEuNzUtOS41NjIsMjEuMzEyLTIxLjM0NCwyMS4zMTINCgkJYy0xMS43NDksMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTYyLTIxLjMzNiwyMS4zMTItMjEuMzM2YzExLjc4MSwwLDIxLjM0NCw5LjU3OCwyMS4zNDQsMjEuMzM2VjQ2OS4zNDENCgkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzU2Ljg3MSwxMDMuNjcyYy0xLjMxMi00LjUzOS0wLjUtNy44NDQsMi42ODgtMTEuMDU1YzguNjU2LTguNjk1LDExLjUzMS0xOS45ODQsOC4wNjItMzEuODEyDQoJCQljLTIuMzEyLTcuOTM4LTYuODEyLTEzLjU0Ny03LjM3NS0xNC4yNWMtMC4wMzEsMC0wLjAzMS0wLjAwOC0wLjAzMS0wLjAwOHYtMC4wMTVjLTEuOTY5LTIuMzU5LTQuOTA2LTMuODY3LTguMjE5LTMuODY3DQoJCQljLTUuODksMC0xMC42NTUsNC43ODEtMTAuNjU1LDEwLjY3MmMwLDIuNTg2LDAuOTA2LDQuOTYxLDIuNDM4LDYuODA1YzAuMDMxLDAuMDIzLDIuMjgxLDIuOTM4LDMuMzc1LDYuNjU2DQoJCQljMS4yNjYsNC4zNjcsMC40NjksNy41ODYtMi43MTksMTAuNzY2Yy04LjYyNSw4LjY3OC0xMS41MTUsMjAuMDQ1LTguMDc4LDMxLjk5OGMyLjMyOCw4LjEwMiw2LjgyOCwxMy44MzYsNy4zMjgsMTQuNDY5di0wLjAwOA0KCQkJYzEuOTY5LDIuNDIyLDQuOTUzLDMuOTc3LDguMzEyLDMuOTc3YzUuODkxLDAsMTAuNjU2LTQuNzczLDEwLjY1Ni0xMC42NjRjMC0yLjUzOS0wLjg3NS00Ljg2Ny0yLjM0NC02LjY5NQ0KCQkJQzM2MC4yNzgsMTEwLjYxLDM1Ny45NjUsMTA3LjU1NSwzNTYuODcxLDEwMy42NzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNjguNjU2LDk2LjYxYy0yLjQ2MS05LjgzNi0wLjQ5Mi0xOC4xOTUsNi0yNS41NDdjMTEuNDA2LTEyLjg5MSwxNS4wMzEtMjguNjk1LDEwLjUtNDUuNzI2DQoJCQljLTMuMTg4LTExLjkzOC05LjMxMi0yMC4yMjctMTAtMjEuMTMzVjQuMjJjLTEuOTY5LTIuNTU1LTUuMDIzLTQuMjE5LTguNDkyLTQuMjE5Yy01Ljg5MywwLTEwLjY2Niw0Ljc3My0xMC42NjYsMTAuNjY0DQoJCQljMCwyLjQxNCwwLjgwNSw0LjYzMywyLjE1Niw2LjQxNGgtMC4wMTZjMC4wNDcsMC4wNjIsNC40OTIsNi4xMDksNi41NDcsMTQuMzJjMi40NTMsOS44MjcsMC40ODQsMTguMTg3LTYuMDE2LDI1LjUzOA0KCQkJYy0xMS4zOSwxMi44OTEtMTUuMDE1LDI4LjY5Ni0xMC40ODMsNDUuNzI3YzMuMTcyLDExLjkzOCw5LjMwNSwyMC4yMjcsOS45ODQsMjEuMTMzbDAuMDE2LTAuMDE2DQoJCQljMS45NDUsMi41Nyw1LjAxNiw0LjIxOSw4LjQ3Nyw0LjIxOWM1Ljg5OCwwLDEwLjY4LTQuNzczLDEwLjY4LTEwLjY2NGMwLTIuNDE0LTAuODEyLTQuNjMzLTIuMTU2LTYuNDE0DQoJCQlDMjc1LjE0LDExMC44NiwyNzAuNjk1LDEwNC44MTMsMjY4LjY1Niw5Ni42MXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4OS42NCwxMTAuNjQxYy0wLjAyMy0wLjAzMS0yLjMyOC0zLjA4Ni0zLjQ0NS02Ljk2OWMtMS4zMDUtNC41MzktMC41LTcuODQ0LDIuNjk1LTExLjA1NQ0KCQkJYzguNjY0LTguNjk1LDExLjUyMy0xOS45ODQsOC4wNjItMzEuODEyYy0yLjMyLTcuOTM4LTYuNzg5LTEzLjUzMS03LjM5MS0xNC4yNWMwLDAsMC0wLjAwOC0wLjAwOC0wLjAwOGwtMC4wMDgtMC4wMjN2MC4wMDgNCgkJCWMtMS45NjEtMi4zNTktNC45MDYtMy44NjctOC4yMTEtMy44NjdjLTUuODkxLDAtMTAuNjcyLDQuNzgxLTEwLjY3MiwxMC42NzJjMCwyLjU4NiwwLjkyMiw0Ljk2MSwyLjQ1Myw2LjgwNQ0KCQkJYzAuMDIzLDAuMDIzLDIuMjczLDIuOTM4LDMuMzU5LDYuNjU2YzEuMjgxLDQuMzY3LDAuNDY5LDcuNTg2LTIuNzAzLDEwLjc2NmMtOC42NCw4LjY3OC0xMS41MTUsMjAuMDQ1LTguMDc3LDMxLjk5OA0KCQkJYzIuMzI4LDguMTAyLDYuODI4LDEzLjgzNiw3LjMzNiwxNC40Njl2LTAuMDA4YzEuOTYxLDIuNDIyLDQuOTQ1LDMuOTc3LDguMzA1LDMuOTc3YzUuODkxLDAsMTAuNjY0LTQuNzczLDEwLjY2NC0xMC42NjQNCgkJCWMwLTIuNTM5LTAuODkxLTQuODY3LTIuMzY3LTYuNjk1SDE4OS42NHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Ble="PHN2ZyBoZWlnaHQ9IjQ5NnB0IiB2aWV3Qm94PSIwIC0xIDQ5NiA0OTUiIHdpZHRoPSI0OTZwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDg4IDMyMC41aC00MHYtMzJjMC0yLjEyODkwNi0uODM5ODQ0LTQuMTYwMTU2LTIuMzQzNzUtNS42NTYyNWwtMTIwLTEyMGMtMS40OTYwOTQtMS41MDM5MDYtMy41MjczNDQtMi4zNDM3NS01LjY1NjI1LTIuMzQzNzVoLTE2di0xNTJjMC00LjQyNTc4MS0zLjU3NDIxOS04LTgtOGgtOTZjLTQuNDI1NzgxIDAtOCAzLjU3NDIxOS04IDh2MTUyaC0yNGMtMi4xMjg5MDYgMC00LjE2MDE1Ni44Mzk4NDQtNS42NTYyNSAyLjM0Mzc1bC0xMjAgMTIwYy0xLjUwMzkwNiAxLjQ5NjA5NC0yLjM0Mzc1IDMuNTI3MzQ0LTIuMzQzNzUgNS42NTYyNXYzMmgtMzJjLTQuNDI1NzgxIDAtOCAzLjU3NDIxOS04IDh2NDhjMCA0LjQyNTc4MSAzLjU3NDIxOSA4IDggOGg0ODBjNC40MjU3ODEgMCA4LTMuNTc0MjE5IDgtOHYtNDhjMC00LjQyNTc4MS0zLjU3NDIxOS04LTgtOHptLTI4MC0zMDRoODB2MTkyaC04MHptLTE1MiAyNzUuMzEyNSAxMTUuMzEyNS0xMTUuMzEyNWgyMC42ODc1djQwYzAgNC40MjU3ODEgMy41NzQyMTkgOCA4IDhoOTZjNC40MjU3ODEgMCA4LTMuNTc0MjE5IDgtOHYtNDBoMTIuNjg3NWwxMTUuMzEyNSAxMTUuMzEyNXYyOC42ODc1aC0zNzZ6bTQyNCA3Ni42ODc1aC00NjR2LTMyaDQ2NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuMzEyNSA0NDAuNWMtMi4xMzY3MTktMi4xNDQ1MzEtMy4zMTI1LTQuOTc2NTYyLTMuMzEyNS04czEuMTc1NzgxLTUuODU1NDY5IDMuMzEyNS04bDEwLjM0Mzc1LTEwLjM0Mzc1LTExLjMxMjUtMTEuMzEyNS0xMC4zNDM3NSAxMC4zNDM3NWMtNS4xNjAxNTYgNS4xNjAxNTYtOCAxMi4wMTU2MjUtOCAxOS4zMTI1czIuODM5ODQ0IDE0LjE2MDE1NiA4IDE5LjMxMjVsNC42ODc1IDQuNjg3NWMyLjEzNjcxOSAyLjE0NDUzMSAzLjMxMjUgNC45NzY1NjIgMy4zMTI1IDhzLTEuMTc1NzgxIDUuODU1NDY5LTMuMzEyNSA4bC0xMC4zNDM3NSAxMC4zNDM3NSAxMS4zMTI1IDExLjMxMjUgMTAuMzQzNzUtMTAuMzQzNzVjNS4xNjAxNTYtNS4xNjAxNTYgOC0xMi4wMTU2MjUgOC0xOS4zMTI1cy0yLjgzOTg0NC0xNC4xNjAxNTYtOC0xOS4zMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNy4zMTI1IDQ0MC41Yy0yLjEzNjcxOS0yLjE0NDUzMS0zLjMxMjUtNC45NzY1NjItMy4zMTI1LThzMS4xNzU3ODEtNS44NTU0NjkgMy4zMTI1LThsMTAuMzQzNzUtMTAuMzQzNzUtMTEuMzEyNS0xMS4zMTI1LTEwLjM0Mzc1IDEwLjM0Mzc1Yy01LjE2MDE1NiA1LjE2MDE1Ni04IDEyLjAxNTYyNS04IDE5LjMxMjVzMi44Mzk4NDQgMTQuMTYwMTU2IDggMTkuMzEyNWw0LjY4NzUgNC42ODc1YzIuMTM2NzE5IDIuMTQ0NTMxIDMuMzEyNSA0Ljk3NjU2MiAzLjMxMjUgOHMtMS4xNzU3ODEgNS44NTU0NjktMy4zMTI1IDhsLTEwLjM0Mzc1IDEwLjM0Mzc1IDExLjMxMjUgMTEuMzEyNSAxMC4zNDM3NS0xMC4zNDM3NWM1LjE2MDE1Ni01LjE2MDE1NiA4LTEyLjAxNTYyNSA4LTE5LjMxMjVzLTIuODM5ODQ0LTE0LjE2MDE1Ni04LTE5LjMxMjV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjc1LjMxMjUgNDQwLjVjLTIuMTM2NzE5LTIuMTQ0NTMxLTMuMzEyNS00Ljk3NjU2Mi0zLjMxMjUtOHMxLjE3NTc4MS01Ljg1NTQ2OSAzLjMxMjUtOGwxMC4zNDM3NS0xMC4zNDM3NS0xMS4zMTI1LTExLjMxMjUtMTAuMzQzNzUgMTAuMzQzNzVjLTUuMTYwMTU2IDUuMTYwMTU2LTggMTIuMDE1NjI1LTggMTkuMzEyNXMyLjgzOTg0NCAxNC4xNjAxNTYgOCAxOS4zMTI1bDQuNjg3NSA0LjY4NzVjMi4xMzY3MTkgMi4xNDQ1MzEgMy4zMTI1IDQuOTc2NTYyIDMuMzEyNSA4cy0xLjE3NTc4MSA1Ljg1NTQ2OS0zLjMxMjUgOGwtMTAuMzQzNzUgMTAuMzQzNzUgMTEuMzEyNSAxMS4zMTI1IDEwLjM0Mzc1LTEwLjM0Mzc1YzUuMTYwMTU2LTUuMTYwMTU2IDgtMTIuMDE1NjI1IDgtMTkuMzEyNXMtMi44Mzk4NDQtMTQuMTYwMTU2LTgtMTkuMzEyNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjMuMzEyNSA0NDAuNWMtMi4xMzY3MTktMi4xNDQ1MzEtMy4zMTI1LTQuOTc2NTYyLTMuMzEyNS04czEuMTc1NzgxLTUuODU1NDY5IDMuMzEyNS04bDEwLjM0Mzc1LTEwLjM0Mzc1LTExLjMxMjUtMTEuMzEyNS0xMC4zNDM3NSAxMC4zNDM3NWMtNS4xNjAxNTYgNS4xNjAxNTYtOCAxMi4wMTU2MjUtOCAxOS4zMTI1czIuODM5ODQ0IDE0LjE2MDE1NiA4IDE5LjMxMjVsNC42ODc1IDQuNjg3NWMyLjEzNjcxOSAyLjE0NDUzMSAzLjMxMjUgNC45NzY1NjIgMy4zMTI1IDhzLTEuMTc1NzgxIDUuODU1NDY5LTMuMzEyNSA4bC0xMC4zNDM3NSAxMC4zNDM3NSAxMS4zMTI1IDExLjMxMjUgMTAuMzQzNzUtMTAuMzQzNzVjNS4xNjAxNTYtNS4xNjAxNTYgOC0xMi4wMTU2MjUgOC0xOS4zMTI1cy0yLjgzOTg0NC0xNC4xNjAxNTYtOC0xOS4zMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAyODguNWgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzUyIDI4OC41aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAgMjg4LjVoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Gle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDUgNTEyLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTMyNy4xNTksMi43NjZjLTQuMDYzLTMuNjg4LTEwLjI1LTMuNjg4LTE0LjMxMywwYy00LjY0Miw0LjE4Ni0xMTAuODg5LDEwMS4yOTItMTYwLjIyOCwyMTMuODM5DQoJCQkJYy01LjMxOC0xLjg2Ny0xMS40NC0zLjI2Ni0xOS4zNTUtMy4yNjZjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzNjLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2DQoJCQkJYy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4M2MtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2Nw0KCQkJCWMwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3YzExLjk2OSwwLDE3LjUyMSwzLjg2NSwyNC41NDIsOC43NWM4LjA0Miw1LjYwNCwxOC4wNjMsMTIuNTgzLDM2LjcyOSwxMi41ODMNCgkJCQljMTguNjc3LDAsMjguNzA4LTYuOTc5LDM2Ljc2LTEyLjU4M2M3LjAzMS00Ljg4NSwxMi41ODMtOC43NSwyNC41NjMtOC43NWMxMiwwLDE3LjU2MywzLjg2NSwyNC42MDQsOC43Ng0KCQkJCWM4LjA1Miw1LjYwNCwxOC4wODMsMTIuNTczLDM2Ljc3MSwxMi41NzNjMTguNjc3LDAsMjguNzA4LTYuOTY5LDM2Ljc3MS0xMi41NzNjNy4wMzEtNC44OTYsMTIuNTk0LTguNzYsMjQuNTk0LTguNzYNCgkJCQljNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3Yy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3Mw0KCQkJCWMtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzZjLTExLjIwOCwwLTE2LjgyMy0zLjQxOS0yMy4yNDItNy44NTRjNDAuMTIxLTkyLjY2MSwxMjMuNjYxLTE3Ny40NjYsMTQ4LjYwNy0yMDEuNDkNCgkJCQljMzMuMjE5LDMyLjAxLDE3MC42NjcsMTcxLjg2NSwxNzAuNjY3LDI5NC42NzdjMCw5NC4xMDQtNzYuNTYzLDE3MC42NjctMTcwLjY2NywxNzAuNjY3Yy00Mi40NzcsMC04Mi42NjktMTUuODIyLTExMy43OC00My43NTgNCgkJCQljMTEuNTQyLTIuMTM4LDE4Ljk5NC03LjE3NywyNS4xODYtMTEuNDgyYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2YzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjcNCgkJCQlzLTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3Yy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3M2MtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzYNCgkJCQljLTEyLDAtMTcuNTYzLTMuODY1LTI0LjU5NC04Ljc2Yy04LjA2My01LjYwNC0xOC4wOTQtMTIuNTczLTM2Ljc4MS0xMi41NzNjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzMNCgkJCQljLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2Yy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4Mw0KCQkJCWMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N3M0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2MxMS45NjksMCwxNy41MjEsMy44NjUsMjQuNTQyLDguNzUNCgkJCQljOC4wNDIsNS42MDQsMTguMDYzLDEyLjU4MywzNi43MjksMTIuNTgzYzE4LjY3NywwLDI4LjcwOC02Ljk3OSwzNi43Ni0xMi41ODNjNy4wMzEtNC44ODUsMTIuNTgzLTguNzUsMjQuNTYzLTguNzUNCgkJCQljMTIsMCwxNy41NjMsMy44NjUsMjQuNjA0LDguNzZjNC4zNDUsMy4wMjMsOS40MTQsNi4zNTUsMTUuOTYxLDguODY1YzM2LjYsNDIuOTk2LDg5LjY1NSw2Ny43MDgsMTQ2LjE3NCw2Ny43MDgNCgkJCQljMTA1Ljg2NSwwLDE5Mi04Ni4xMzUsMTkyLTE5MkM1MTIuMDAzLDE3MS42NDEsMzM0LjcwMSw5LjU4OSwzMjcuMTU5LDIuNzY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTAuNjY5LDM2Mi42NzJjMTEuOTY5LDAsMTcuNTIxLDMuODY1LDI0LjU0Miw4Ljc1YzguMDQyLDUuNjA0LDE4LjA2MywxMi41ODMsMzYuNzI5LDEyLjU4Mw0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3YzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdjLTExLjk2OSwwLTE3LjUyMS0zLjg2NS0yNC41NDItOC43NQ0KCQkJCWMtOC4wNDItNS42MDQtMTguMDYzLTEyLjU4My0zNi43MjktMTIuNTgzYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzQuNzczLDM2Mi42NzIsMTAuNjY5LDM2Mi42NzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMzMuMjYzLDM0MS4zMzljLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjdzNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdjMTIsMCwxNy41NjMsMy44NjUsMjQuNTk0LDguNzYNCgkJCQljOC4wNjMsNS42MDQsMTguMDk0LDEyLjU3MywzNi43ODEsMTIuNTczYzE4LjY3NywwLDI4LjcwOC02Ljk2OSwzNi43NzEtMTIuNTczYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2DQoJCQkJYzEyLjE5OCwwLDE4LjQwNiwzLjk2OSwyNi4yNSw4Ljk5YzkuMDUyLDUuNzgxLDE5LjMxMywxMi4zNDQsMzcuNzUsMTIuMzQ0YzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjcNCgkJCQljMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N2MtMTIuMTk4LDAtMTguNDA2LTMuOTY5LTI2LjI1LTguOTljLTkuMDUyLTUuNzgxLTE5LjMxMy0xMi4zNDQtMzcuNzUtMTIuMzQ0DQoJCQkJYy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3M2MtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzZjLTEyLDAtMTcuNTYzLTMuODY1LTI0LjYwNC04Ljc2DQoJCQkJQzE2MS45ODIsMzQ4LjMwNywxNTEuOTUxLDM0MS4zMzksMTMzLjI2MywzNDEuMzM5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTMzLjI2MywyNzcuMzM5Yy0xOC42NzcsMC0yOC42OTgsNi45NjktMzYuNzUsMTIuNTczYy03LjAzMSw0Ljg5Ni0xMi41ODMsOC43Ni0yNC41NzMsOC43Ng0KCQkJCWMtMTEuOTY5LDAtMTcuNTIxLTMuODY1LTI0LjU0Mi04Ljc1Yy04LjA0Mi01LjYwNC0xOC4wNjMtMTIuNTgzLTM2LjcyOS0xMi41ODNjLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjcNCgkJCQljMCw1Ljg5Niw0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2MxMS45NjksMCwxNy41MjEsMy44NjUsMjQuNTQyLDguNzVjOC4wNDIsNS42MDQsMTguMDYzLDEyLjU4MywzNi43MjksMTIuNTgzDQoJCQkJYzE4LjY3NywwLDI4LjcwOC02Ljk3OSwzNi43Ni0xMi41ODNjNy4wMzEtNC44ODUsMTIuNTgzLTguNzUsMjQuNTYzLTguNzVjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2Nw0KCQkJCUMxNDMuOTMsMjgyLjEwOSwxMzkuMTU5LDI3Ny4zMzksMTMzLjI2MywyNzcuMzM5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjMxLjQwOSwzMDcuNDMyYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2YzExLjk2OSwwLDE3LjUyMSwzLjg2NSwyNC41NDIsOC43NQ0KCQkJCWM4LjA0Miw1LjYwNCwxOC4wNjMsMTIuNTgzLDM2LjcyOSwxMi41ODNjMTguNjc3LDAsMjguNzA4LTYuOTc5LDM2Ljc2LTEyLjU4M2M3LjAzMS00Ljg4NSwxMi41ODMtOC43NSwyNC41NjMtOC43NQ0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3YzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzMNCgkJCQljLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2Yy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4Mw0KCQkJCWMtMTguNjg3LDAtMjguNzE5LDYuOTY5LTM2Ljc4MSwxMi41NzNjLTcuMDMxLDQuODk2LTEyLjU5NCw4Ljc2LTI0LjU4Myw4Ljc2Yy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3DQoJCQkJczQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3QzIxMy4zMTUsMzIwLjAwNSwyMjMuMzQ2LDMxMy4wMzYsMjMxLjQwOSwzMDcuNDMyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Fle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUxMiAxNjMuODdjMC0xMy45LTUuNDEyLTI2Ljk2MS0xNS4yMzMtMzYuNzctOS44MTUtOS44MjgtMjIuODc2LTE1LjI0LTM2Ljc3Ni0xNS4yNGgtODAuOTdjLTI2LjcwNSAwLTQ4LjQzLTIxLjcyNi00OC40My00OC40MyAwLTEyLjkzOCA1LjAzNy0yNS4xMDEgMTQuMTg0LTM0LjI0NyA5LjE0NC05LjE0NiAyMS4zMDctMTQuMTgzIDM0LjI0NS0xNC4xODNoMTI1LjQ4YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC0xMjUuNDhjLTE2Ljk0NSAwLTMyLjg3NCA2LjU5Ny00NC44NTMgMTguNTc3LTExLjk3OSAxMS45NzktMTguNTc3IDI3LjkwOC0xOC41NzcgNDQuODUzIDAgMzQuOTc1IDI4LjQ1NSA2My40MyA2My40MyA2My40M2g4MC45N2M5Ljg5IDAgMTkuMTgyIDMuODUgMjYuMTY5IDEwLjg0NyA2Ljk5MSA2Ljk4MiAxMC44NDEgMTYuMjczIDEwLjg0MSAyNi4xNjMgMCA4LjYzNy0zLjAzOCAxNy4wNDQtOC41NTcgMjMuNjc0bC0yMi4zMDUgMjYuODIyYy03Ljg4NC0yLjcyNS0xNi45ODktLjk3Mi0yMy4yODIgNS4zMTFsLTkuMDU4IDkuMDU4Yy0yMC4zMi0uNDItNDMuMDk4IDMuOTQtNjIuODIxIDcuNDI3LTQuMDc5LjcyMS02LjgwMSA0LjYxMy02LjA3OSA4LjY5MS43MjEgNC4wNzkgNC42MTMgNi43OTkgOC42OTEgNi4wNzkgMTguOTQyLTMuMzUgMzguMzkyLTUuNzY4IDU3LjgwOS03LjE4NSA3LjY4MS0uNTY2IDE0LjgzMyA0LjM5MyAxNi45ODUgMTEuNzggMS44MjcgNi4yNyA0Ny4wMjcgMTYwLjE2NyA0OC41MzMgMTY2LjU3NS40OTggMi4xMTktLjczOCAzLjY2LTIuOTEyIDMuNjYtMjIuNzg2IDAtNDEuMDQyIDE1LjY2LTQ4LjQ2NCAzNi40ODhoLTMyMC4zNzFjLTQuMTQyIDAtNy41IDMuMzU3LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVoMzI3Ljc4N2M1LjQ0NSAwIDkuODc1IDQuNDMgOS44NzUgOS44NzVzLTQuNDMxIDkuODc1LTkuODc2IDkuODc1aC00MzYuOTA2YzMuMjY1LTExLjM5MSAxMy43NzUtMTkuNzUgMjYuMi0xOS43NWg1Mi45MTljNC4xNDIgMCA3LjUtMy4zNTcgNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjVoLTQ0Ljk0NGM2Mi40NjItMTExLjU5OCAxNzEuOTAzLTE3Ny4wMjcgMjk0Ljc3OC0yMDUuNDg2IDQuMDM1LS45MzUgNi41NDktNC45NjMgNS42MTQtOC45OTktLjkzNC00LjAzNS00Ljk2NC02LjU0OS04Ljk5OS01LjYxNC03MS42MzIgMTYuNTk5LTE0My41OTMgNDcuMDUxLTIwMS40NzMgOTIuNjA2bC0xMC4wNzEtMTAuMDdjLTguNjM1LTguNzUyLTIzLjE1OS04LjY3OC0zMS44MjYtLjAxLTguNjMxIDguNjMyLTguNzI4IDIzLjE2NiAwIDMxLjgwN2w4LjA1MSA4LjA1MWMtMjkuNDY3IDI4Ljk1OS01NC4xMDIgNjIuMzItNzQuMDQyIDk4LjkyLTE4LjQ4NyA0LjUwMi0zMi4yNTYgMjEuMTkxLTMyLjI1NiA0MS4wNDUgMCA0LjE0MyAzLjM1OCA3LjUgNy41IDcuNWg0NDUuNDU1YzEzLjcxNiAwIDI0Ljg3NS0xMS4xNTkgMjQuODc1LTI0Ljg3NSAwLTEwLjc1LTYuODU1LTE5LjkyNy0xNi40MjQtMjMuMzk1IDUuMjYzLTEzLjU3MyAxNy45MDMtMjIuOTY5IDMyLjU5OC0yMi45NjkgMTEuNDgzIDAgMjAuMzAyLTExLjQwMSAxNy40MTEtMjIuNTEtLjAxOC0uMDcxLS4wMzgtLjE0Mi0uMDU4LS4yMTFsLTQ1Ljg1Ny0xNTcuMzkxIDkuMTYzLTkuMTU2YzcuMzU5LTcuMzAzIDguNjQ0LTE5LjA5MyAzLjE5Ny0yNy43NjJsMjIuMTE1LTI2LjU5M2M3Ljc1NC05LjMxOCAxMi4wMjUtMjEuMTMyIDEyLjAyNS0zMy4yNjh6bS00MDMuMTQ2IDE3MS40MTNjMS40Mi0xLjQyMSAzLjMwNS0yLjIwMyA1LjMwNy0yLjIwMyAxLjk5OSAwIDMuODc3Ljc3OSA1LjI5NiAyLjIwNGw5LjAxNCA5LjAxNGMtMy44MjUgMy4yNDMtNy41ODIgNi41NTEtMTEuMjc0IDkuOTIybC04LjM0NC04LjM0NGMtMi45Mi0yLjkyLTIuOTItNy42NzIuMDAxLTEwLjU5M3ptMzU1LjIwNS05NC4zOTgtMy45ODYgMy45ODNjLTIuNDk2LTQuNDYxLTYuMDM3LTguMjAzLTEwLjIzMy0xMC45NjFsMy42MTktMy42MTljMi45MjYtMi45MiA3LjY4LTIuOTIyIDEwLjU5OC0uMDA0IDEuNDIxIDEuNDIxIDIuMjAzIDMuMzAyIDIuMjAzIDUuMjk3IDAgMi0uNzgyIDMuODg1LTIuMjAxIDUuMzA0em0tMjE1Ljc2NSA5NC43NjRjLTEzLjgyNCA3LjY1My0yMi40MTIgMjIuMjM1LTIyLjQxMiAzOC4wNTYgMCAxMS45ODcgNS4wMTkgMjMuNTYzIDEzLjc3MSAzMS43NTggOC4wNjYgNy41NTMgMTguNzg4IDExLjc1NiAyOS43ODYgMTEuNzU1Ljk0IDAgMTUxLjA4LTkuODM4IDE1MS4wOC05LjgzOCA2LjkxMS0uNDU0IDEzLjIyNS0zLjkxNiAxNy4zMjItOS40OTggNC4wOTYtNS41NzkgNS41MDctMTIuNjM3IDMuODcyLTE5LjM2MmwtMTkuNTM4LTgwLjMyM2MtMy4wMTctMTIuNDA0LTE1LjE4My0yMC4wMTMtMjcuNjkzLTE3LjMyOS0zMC4wOTQgNi40NjYtNTkuNzg3IDE1LjU5NC04OC4yNTYgMjcuMTMtMTkuNzY4IDguMDEtMzkuMjU5IDE3LjMxMy01Ny45MzIgMjcuNjUxem0xMDcuMjY2IDYwLjk2OS02Ny40MyA0LjQzM3YtMTcuNjgxYzAtLjIzOC4yMDItLjQ0LjQ0LS40NGg2Ni41NWMuMjQzIDAgLjQ0LjE5Ny40NC40NHptNDIuMDcxLTEwMS4wODVjLjYxMy0uMTMyIDEuMjIzLS4xOTUgMS44MjMtLjE5NSAzLjgxNCAwIDcuMjEgMi41NTkgOC4xNDUgNi40MDNsMTkuNTM4IDgwLjMyM2MuNTk1IDIuNDQ2LjEwMiA0LjkxMS0xLjM4OCA2Ljk0LTEuNDkyIDIuMDMyLTMuNjk5IDMuMjQyLTYuMjE1IDMuNDA4bC00OC45NzQgMy4yMTl2LTEyLjI2MWMwLTguNTE0LTYuOTI2LTE1LjQ0LTE1LjQ0LTE1LjQ0aC02Ni41NWMtOC41MTQgMC0xNS40NCA2LjkyNy0xNS40NCAxNS40NHYxOC42NjdsLTEuODUuMTIyYy03Ljk1Ny41MTgtMTUuNTUyLTIuMTkyLTIxLjM3NS03LjY0NS01LjgxOS01LjQ0OS05LjAyNC0xMi44MzktOS4wMjQtMjAuODA5IDAtMTAuMzY3IDUuNjI0LTE5LjkyMSAxNC42NzctMjQuOTMzIDE4LjE0OC0xMC4wNDcgMzcuMDktMTkuMDg4IDU2LjMwMS0yNi44NzMgMjcuNjY2LTExLjIxMSA1Ni41MjUtMjAuMDgzIDg1Ljc3Mi0yNi4zNjZ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Hle="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDM1LjIgMzI0LjI2N2gtMTAuOTA2Yy0zLjAyNC01LjI2My04LjYyNC04LjUxNS0xNC42OTQtOC41MzN2LTE3LjA2N2MwLTkuNDI2LTcuNjQxLTE3LjA2Ny0xNy4wNjctMTcuMDY3aC0xNy4wNjdjLTkuNDI2IDAtMTcuMDY3IDcuNjQxLTE3LjA2NyAxNy4wNjd2MTcuMDY3Yy02LjA3LjAxOC0xMS42NyAzLjI3LTE0LjY5NCA4LjUzM2gtMjMyLjc3MmMtMTQuMTM4IDAtMjUuNi0xMS40NjItMjUuNi0yNS42czExLjQ2Mi0yNS42IDI1LjYtMjUuNmgzNi41MDZjMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDYyLjEwNmMxNC4xMzggMCAyNS42LTExLjQ2MiAyNS42LTI1LjZzLTExLjQ2Mi0yNS42LTI1LjYtMjUuNmgtNjIuMTA2Yy0zLjAyNC01LjI2My04LjYyNC04LjUxNS0xNC42OTQtOC41MzN2LTE3LjA2N2MwLTkuNDI2LTcuNjQxLTE3LjA2Ny0xNy4wNjctMTcuMDY3aC0xNy4wNjZjLTkuNDI2IDAtMTcuMDY3IDcuNjQxLTE3LjA2NyAxNy4wNjd2MTcuMDY3Yy02LjA3LjAxOC0xMS42NyAzLjI3LTE0LjY5NCA4LjUzM2gtMzYuNTA2Yy00Mi40MTUgMC03Ni44IDM0LjM4NS03Ni44IDc2LjhzMzQuMzg1IDc2LjggNzYuOCA3Ni44aDIzMi43NzJjMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDEwLjkwN2MxNC4xMzggMCAyNS42IDExLjQ2MiAyNS42IDI1LjZzLTExLjQ2MiAyNS42LTI1LjYgMjUuNmgtMzA5LjU3MmMtMy4wMjQtNS4yNjMtOC42MjQtOC41MTUtMTQuNjk0LTguNTMzdi0xNy4wNjdjMC05LjQyNi03LjY0MS0xNy4wNjctMTcuMDY3LTE3LjA2N2gtMTcuMDY3Yy05LjQyNiAwLTE3LjA2NyA3LjY0MS0xNy4wNjcgMTcuMDY3djE3LjA2N2MtNi4wNy4wMTgtMTEuNjcgMy4yNy0xNC42OTQgOC41MzNoLTE5LjQzOWMtMTQuMTM4IDAtMjUuNiAxMS40NjItMjUuNiAyNS42czExLjQ2MiAyNS42IDI1LjYgMjUuNmgxOS40MzljMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDMwOS41NzNjNDIuNDE1IDAgNzYuOC0zNC4zODUgNzYuOC03Ni44cy0zNC4zODUtNzYuOC03Ni44LTc2Ljh6bS01OS43MzMtMjUuNmgxNy4wNjd2MTcuMDY3aC0xNy4wNjd6bS03Ni44LTUxLjJjMCA0LjcxMy0zLjgyMSA4LjUzMy04LjUzMyA4LjUzM2gtNTkuNzM0di0xNy4wNjdoNTkuNzMzYzQuNzEzIDAgOC41MzQgMy44MjEgOC41MzQgOC41MzR6bS0xMTkuNDY3LTUxLjJoMTcuMDY3djE3LjA2N2gtMTcuMDY3em0tOC41MzMgMzQuMTMzaDQyLjY2N3YzNC4xMzNoLTUxLjJ2LTM0LjEzM3ptLTExOS40NjcgNjguMjY3Yy4wMzgtMzIuOTc0IDI2Ljc1OS01OS42OTYgNTkuNzMzLTU5LjczM2gzNC4xMzN2MTcuMDY2aC0zNC4xMzNjLTIzLjU2NCAwLTQyLjY2NyAxOS4xMDMtNDIuNjY3IDQyLjY2N3MxOS4xMDMgNDIuNjY3IDQyLjY2NyA0Mi42NjdoMjMwLjR2MTcuMDY2aC0yMzAuNGMtMzIuOTc0LS4wMzgtNTkuNjk1LTI2Ljc1OS01OS43MzMtNTkuNzMzem0zMDcuMiA2OC4yNjZ2LTM0LjEzM2g1MS4ydjM0LjEzM3ptLTI4MS42IDM0LjEzNGgxNy4wNjd2MTcuMDY3aC0xNy4wNjd6bS01OS43MzMgNTEuMmMwLTQuNzEzIDMuODIxLTguNTMzIDguNTMzLTguNTMzaDE3LjA2N3YxNy4wNjZoLTE3LjA2N2MtNC43MTMgMC04LjUzMy0zLjgyLTguNTMzLTguNTMzem00Mi42NjYgMTcuMDY2di0zNC4xMzNoNTEuMnYzNC4xMzN6bTM3NS40NjctOC41MzNoLTMwNy4ydi0xNy4wNjdoMzA3LjJjMjMuNTY0IDAgNDIuNjY3LTE5LjEwMyA0Mi42NjctNDIuNjY3cy0xOS4xMDMtNDIuNjY3LTQyLjY2Ny00Mi42NjdoLTguNTMzdi0xNy4wNjdoOC41MzNjMzIuOTkgMCA1OS43MzMgMjYuNzQ0IDU5LjczMyA1OS43MzNzLTI2Ljc0MyA1OS43MzUtNTkuNzMzIDU5LjczNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4Ny43MzMgMTYyLjEzM2M0LjcxMyAwIDguNTMzLTMuODIxIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyMS04LjUzMy04LjUzMy04LjUzMy00LjcxMyAwLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEzIDMuODIxIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg3LjczMyAxMTAuOTMzYzQuNzEzIDAgOC41MzMtMy44MjEgOC41MzMtOC41MzN2LTE3LjA2N2MwLTQuNzEzLTMuODIxLTguNTMzLTguNTMzLTguNTMzLTQuNzEzIDAtOC41MzMgMy44MjEtOC41MzMgOC41MzN2MTcuMDY3YzAgNC43MTMgMy44MjEgOC41MzMgOC41MzMgOC41MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xODcuNzMzIDU5LjczM2M0LjcxMyAwIDguNTMzLTMuODIxIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyMS04LjUzMy04LjUzMy04LjUzMy00LjcxMyAwLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEzIDMuODIxIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTU0Ljc0MyAxNTcuODY3YzEuNTEzIDIuNjYyIDQuMzM3IDQuMzA5IDcuMzk5IDQuMzE2czUuODkzLTEuNjI4IDcuNDE4LTQuMjgzIDEuNTExLTUuOTI0LS4wMzgtOC41NjZsLTguNTMzLTE0Ljc4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI5LjE0MyAxMTMuNDkzYzEuNTEzIDIuNjYyIDQuMzM3IDQuMzA5IDcuMzk5IDQuMzE2czUuODkzLTEuNjI4IDcuNDE4LTQuMjgzIDEuNTExLTUuOTI0LS4wMzgtOC41NjZsLTguNTMzLTE0Ljc4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAzLjU0MyA2OS4xODhjMi4zNzIgNC4wNDcgNy41NjYgNS40MiAxMS42MjggMy4wNzQgNC4wNjItMi4zNDUgNS40Ny03LjUzIDMuMTUxLTExLjYwOGwtOC41MzMtMTQuNzg4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjA5LjA2NyAxNjAuOTljNC4wODEgMi4zNTYgOS4zLjk1OCAxMS42NTctMy4xMjNsOC41MzMtMTQuNzhjMS41NDktMi42NDIgMS41NjMtNS45MTEuMDM4LTguNTY2cy00LjM1Ni00LjI5LTcuNDE4LTQuMjgzLTUuODg2IDEuNjU0LTcuMzk5IDQuMzE2bC04LjUzMyAxNC43OGMtMi4zNTggNC4wODEtLjk2IDkuMjk5IDMuMTIyIDExLjY1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzNC42NjcgMTE2LjY1MWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43OGMxLjU0OS0yLjY0MiAxLjU2My01LjkxMS4wMzgtOC41NjZzLTQuMzU2LTQuMjktNy40MTgtNC4yODMtNS44ODYgMS42NTQtNy4zOTkgNC4zMTZsLTguNTMzIDE0Ljc4Yy0yLjM1OCA0LjA4LS45NiA5LjI5OSAzLjEyMiAxMS42NTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjAuMjY3IDcyLjMxMWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43ODhjMS41NDktMi42NDIgMS41NjMtNS45MTEuMDM4LTguNTY2cy00LjM1Ni00LjI5LTcuNDE4LTQuMjgzLTUuODg2IDEuNjU0LTcuMzk5IDQuMzE2bC04LjUzMyAxNC43ODhjLTIuMzU4IDQuMDgxLS45NiA5LjMgMy4xMjIgMTEuNjU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzg0IDI3My4wNjdjNC43MTMgMCA4LjUzMy0zLjgyIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyLTguNTMzLTguNTMzLTguNTMzcy04LjUzMyAzLjgyMS04LjUzMyA4LjUzM3YxNy4wNjdjMCA0LjcxMiAzLjgyIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzg0IDIyMS44NjdjNC43MTMgMCA4LjUzMy0zLjgyMSA4LjUzMy04LjUzM3YtMTcuMDY3YzAtNC43MTMtMy44Mi04LjUzMy04LjUzMy04LjUzM3MtOC41MzMgMy44MjEtOC41MzMgOC41MzN2MTcuMDY3YzAgNC43MTIgMy44MiA4LjUzMyA4LjUzMyA4LjUzM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAxNzAuNjY3YzQuNzEzIDAgOC41MzMtMy44MjEgOC41MzMtOC41MzN2LTE3LjA2N2MwLTQuNzEzLTMuODItOC41MzMtOC41MzMtOC41MzNzLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEyIDMuODIgOC41MzMgOC41MzMgOC41MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNTEuMDEgMjY4LjhjMi4zNzIgNC4wNDcgNy41NjYgNS40MiAxMS42MjggMy4wNzQgNC4wNjItMi4zNDUgNS40Ny03LjUzIDMuMTUxLTExLjYwOGwtOC41MzMtMTQuNzhjLTEuNTE0LTIuNjYyLTQuMzM3LTQuMzA5LTcuMzk5LTQuMzE2cy01Ljg5MyAxLjYyOC03LjQxOCA0LjI4My0xLjUxMSA1LjkyNC4wMzggOC41NjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjUuNDEgMjI0LjQyN2MxLjUxNCAyLjY2MiA0LjMzNyA0LjMwOSA3LjM5OSA0LjMxNnM1Ljg5My0xLjYyOCA3LjQxOC00LjI4MyAxLjUxMS01LjkyNC0uMDM4LTguNTY2bC04LjUzMy0xNC43OGMtMS41MTQtMi42NjItNC4zMzctNC4zMDktNy4zOTktNC4zMTZzLTUuODkzIDEuNjI4LTcuNDE4IDQuMjgzLTEuNTExIDUuOTI0LjAzOCA4LjU2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5OS44MSAxODAuMTIyYzIuMzcyIDQuMDQ3IDcuNTY2IDUuNDIgMTEuNjI4IDMuMDc0IDQuMDYyLTIuMzQ1IDUuNDctNy41MyAzLjE1MS0xMS42MDhsLTguNTMzLTE0Ljc4OGMtMS41MTMtMi42NjItNC4zMzctNC4zMDktNy4zOTktNC4zMTZzLTUuODkzIDEuNjI4LTcuNDE4IDQuMjgzLTEuNTExIDUuOTI0LjAzOCA4LjU2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwNS4zMzMgMjcxLjkyM2M0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43OGMyLjMxOC00LjA3OC45MTEtOS4yNjItMy4xNTEtMTEuNjA4LTQuMDYyLTIuMzQ1LTkuMjU2LS45NzItMTEuNjI4IDMuMDc0bC04LjUzMyAxNC43OGMtMi4zNTcgNC4wODItLjk1OSA5LjMwMSAzLjEyMiAxMS42NTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzAuOTMzIDIyNy41ODRjNC4wODEgMi4zNTYgOS4zLjk1OCAxMS42NTctMy4xMjNsOC41MzMtMTQuNzhjMi4zMTgtNC4wNzguOTExLTkuMjYyLTMuMTUxLTExLjYwOHMtOS4yNTYtLjk3Mi0xMS42MjggMy4wNzRsLTguNTMzIDE0Ljc4Yy0yLjM1NyA0LjA4Mi0uOTU5IDkuMzAxIDMuMTIyIDExLjY1N3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1Ni41MzMgMTgzLjI0NWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43ODhjMi4zMTgtNC4wNzguOTExLTkuMjYyLTMuMTUxLTExLjYwOC00LjA2Mi0yLjM0NS05LjI1Ni0uOTcyLTExLjYyOCAzLjA3NGwtOC41MzMgMTQuNzg4Yy0yLjM1NyA0LjA4Mi0uOTU5IDkuMyAzLjEyMiAxMS42NTd6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Vle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4wMDIgNTEyLjAwMiIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzk4LjU4OSAyNDYuMzQyYy02NC42NjYtMTcuMzI4LTExNS42MDEtNjguMjY0LTEzMi45MjktMTMyLjkyOS0xLjE3MS00LjM3Mi01LjEzMy03LjQxMi05LjY1OS03LjQxMnMtOC40ODggMy4wNC05LjY1OSA3LjQxMmMtMTcuMzI4IDY0LjY2Ni02OC4yNjMgMTE1LjYwMS0xMzIuOTI5IDEzMi45MjktNC4zNzIgMS4xNzEtNy40MTIgNS4xMzMtNy40MTIgOS42NTlzMy4wNCA4LjQ4OCA3LjQxMiA5LjY1OWM2NC42NjYgMTcuMzI5IDExNS42MDEgNjguMjY0IDEzMi45MjkgMTMyLjkyOSAxLjE3MSA0LjM3MiA1LjEzMyA3LjQxMiA5LjY1OSA3LjQxMnM4LjQ4OC0zLjA0IDkuNjU5LTcuNDEyYzE3LjMyOC02NC42NjUgNjguMjY0LTExNS42MDEgMTMyLjkyOS0xMzIuOTI5IDQuMzcyLTEuMTcxIDcuNDEyLTUuMTMzIDcuNDEyLTkuNjU5cy0zLjA0LTguNDg4LTcuNDEyLTkuNjU5em0tMTQyLjU4OCAxMTkuMTc2Yy0yMS4wMzktNDkuMDk2LTYwLjQyLTg4LjQ3OC0xMDkuNTE2LTEwOS41MTcgNDkuMDk2LTIxLjAzOSA4OC40NzgtNjAuNDIgMTA5LjUxNi0xMDkuNTE3IDIxLjAzOSA0OS4wOTcgNjAuNDIgODguNDc4IDEwOS41MTcgMTA5LjUxNy00OS4wOTcgMjEuMDM5LTg4LjQ3OCA2MC40Mi0xMDkuNTE3IDEwOS41MTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjQuMDM2IDIwMC40NThjLTEuODg2LTIuNTQ1LTQuODY3LTQuMDQ3LTguMDM1LTQuMDQ3cy02LjE0OSAxLjUwMS04LjAzNSA0LjA0N2MtMTMuNDE2IDE4LjEwNy0yOS40IDM0LjA5MS00Ny41MDggNDcuNTA4LTIuNTQ1IDEuODg2LTQuMDQ3IDQuODY3LTQuMDQ3IDguMDM1czEuNTAxIDYuMTQ5IDQuMDQ3IDguMDM1YzE4LjEwOCAxMy40MTYgMzQuMDkyIDI5LjQgNDcuNTA4IDQ3LjUwOCAxLjg4NiAyLjU0NSA0Ljg2NyA0LjA0NyA4LjAzNSA0LjA0N3M2LjE0OS0xLjUwMSA4LjAzNS00LjA0N2MxMy40MTYtMTguMTA4IDI5LjQtMzQuMDkyIDQ3LjUwOC00Ny41MDggMi41NDUtMS44ODYgNC4wNDctNC44NjcgNC4wNDctOC4wMzVzLTEuNTAxLTYuMTQ5LTQuMDQ3LTguMDM1Yy0xOC4xMDgtMTMuNDE3LTM0LjA5Mi0yOS40MDEtNDcuNTA4LTQ3LjUwOHptLTguMDM1IDg4LjkwOWMtMTAuMDQtMTIuMTYyLTIxLjIwNC0yMy4zMjYtMzMuMzY2LTMzLjM2NiAxMi4xNjMtMTAuMDQgMjMuMzI2LTIxLjIwNCAzMy4zNjYtMzMuMzY2IDEwLjA0IDEyLjE2MyAyMS4yMDQgMjMuMzI2IDMzLjM2NiAzMy4zNjYtMTIuMTYyIDEwLjA0LTIzLjMyNiAyMS4yMDQtMzMuMzY2IDMzLjM2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1Ni4wMDEgNzUuOTk5YzUuNTIzIDAgMTAtNC40NzcgMTAtMTB2LTU1Ljk5OWMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHY1NS45OTljMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExNC41NzkgMTI4LjcyMWMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOS0uOTc2IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0M2wtMzkuNTk3LTM5LjU5OGMtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MyAwcy0zLjkwNSAxMC4yMzcgMCAxNC4xNDN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im03NiAyNTYuMDAxYzAtNS41MjMtNC40NzctMTAtMTAtMTBoLTU2Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwczQuNDc3IDEwIDEwIDEwaDU2YzUuNTIyIDAgMTAtNC40NzcgMTAtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTQuNTc5IDM4My4yODEtMzkuNTk4IDM5LjU5OGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQzIDEuOTUzIDEuOTUzIDQuNTEyIDIuOTI5IDcuMDcxIDIuOTI5czUuMTE5LS45NzYgNy4wNzEtMi45MjlsMzkuNTk4LTM5LjU5OGMzLjkwNS0zLjkwNSAzLjkwNS0xMC4yMzcgMC0xNC4xNDNzLTEwLjIzNy0zLjkwNi0xNC4xNDIgMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1Ni4wMDEgNDM2LjAwM2MtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHY1NS45OTljMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtNTUuOTk5YzAtNS41MjMtNC40NzctMTAtMTAtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zOTcuNDI0IDM4My4yODFjLTMuOTA1LTMuOTA0LTEwLjIzNi0zLjkwNC0xNC4xNDMgMC0zLjkwNSAzLjkwNS0zLjkwNSAxMC4yMzcgMCAxNC4xNDNsMzkuNTk3IDM5LjU5OGMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOS0uOTc3IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0M3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwMi4wMDIgMjQ2LjAwMWgtNTUuOTk5Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwczQuNDc3IDEwIDEwIDEwaDU1Ljk5OWM1LjUyMyAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM5MC4zNTMgMTMxLjY0OWMyLjU1OSAwIDUuMTE5LS45NzYgNy4wNzEtMi45MjlsMzkuNTk3LTM5LjU5OGMzLjkwNS0zLjkwNSAzLjkwNS0xMC4yMzcgMC0xNC4xNDNzLTEwLjIzNy0zLjkwNS0xNC4xNDMgMGwtMzkuNTk3IDM5LjU5OGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQzIDEuOTUzIDEuOTUzIDQuNTEyIDIuOTI5IDcuMDcyIDIuOTI5eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYxLjg2OCAzOC43MzVjMS4zMTQgMCAyLjY1LS4yNjEgMy45MzQtLjgxMSA1LjA3Ny0yLjE3NSA3LjQyOC04LjA1NCA1LjI1Mi0xMy4xM2wtLjAwMy0uMDA3Yy0yLjE3NS01LjA3Ni04LjA1MS03LjQyMy0xMy4xMjktNS4yNDktNS4wNzYgMi4xNzUtNy40MjYgOC4wNTgtNS4yNSAxMy4xMzQgMS42MjUgMy43OTIgNS4zMTYgNi4wNjMgOS4xOTYgNi4wNjN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjkuODQ0IDc0LjEzMSAxMy4wNTQgMzEuNTE0YzEuNTk1IDMuODUxIDUuMzE4IDYuMTc1IDkuMjQzIDYuMTc1IDEuMjc1IDAgMi41NzItLjI0NSAzLjgyMy0uNzY0IDUuMTAyLTIuMTE0IDcuNTI1LTcuOTYzIDUuNDEyLTEzLjA2NmwtMTMuMDU0LTMxLjUxNGMtMi4xMTQtNS4xMDMtNy45NjMtNy41MjctMTMuMDY2LTUuNDEycy03LjUyNiA3Ljk2NC01LjQxMiAxMy4wNjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNC41NDIgMTcwLjk0M2MxLjM1Ny42MjYgMi43ODIuOTIzIDQuMTg0LjkyMyAzLjc4IDAgNy4zOTgtMi4xNTQgOS4wODYtNS44MTIgMi4zMTQtNS4wMTQuMTI1LTEwLjk1Ni00Ljg4OS0xMy4yN2wtLjAwNi0uMDAzYy01LjAxMy0yLjMxNS0xMC45NTItLjEyNS0xMy4yNjcgNC44OTEtMi4zMTYgNS4wMTQtLjEyMyAxMC45NTYgNC44OTIgMTMuMjcxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjYuNDc3IDE4OC4zMjEgMzEuNTE1IDEzLjA1NGMxLjI1MS41MTkgMi41NDcuNzY0IDMuODIzLjc2NCAzLjkyNCAwIDcuNjQ3LTIuMzI1IDkuMjQzLTYuMTc2IDIuMTE0LTUuMTAzLS4zMS0xMC45NTItNS40MTItMTMuMDY1bC0zMS41MTYtMTMuMDU0Yy01LjEwMS0yLjExMy0xMC45NTIuMzEtMTMuMDY1IDUuNDEyLTIuMTE0IDUuMTAyLjMxIDEwLjk1MiA1LjQxMiAxMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDUuNjQ1IDMyOS4xMDRjNS4xMDMtMi4xMTMgNy41MjYtNy45NjMgNS40MTItMTMuMDY1LTIuMTEzLTUuMTAzLTcuOTY0LTcuNTI3LTEzLjA2NS01LjQxMmwtMzEuNTE0IDEzLjA1NGMtNS4xMDMgMi4xMTMtNy41MjYgNy45NjMtNS40MTIgMTMuMDY1IDEuNTk1IDMuODUyIDUuMzE4IDYuMTc2IDkuMjQzIDYuMTc2IDEuMjc1IDAgMi41NzItLjI0NSAzLjgyMy0uNzY0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQuNzkzIDM0MC45NDctLjAwNy4wMDNjLTUuMDc2IDIuMTc1LTcuNDI0IDguMDUzLTUuMjQ5IDEzLjEyOSAxLjYyNSAzLjc5MiA1LjMxNyA2LjA2MiA5LjE5OCA2LjA2MiAxLjMxNSAwIDIuNjUyLS4yNjEgMy45MzYtLjgxMiA1LjA3Ny0yLjE3NSA3LjQyOC04LjA1NCA1LjI1Mi0xMy4xMzEtMi4xNzQtNS4wNzUtOC4wNTMtNy40MjYtMTMuMTMtNS4yNTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjYuMDU0IDQ3NC4xOWMtNS4wMTUtMi4zMTUtMTAuOTU2LS4xMjUtMTMuMjcgNC44ODlsLS4wMDMuMDA2Yy0yLjMxNCA1LjAxNC0uMTI0IDEwLjk1MyA0Ljg5MSAxMy4yNjcgMS4zNTYuNjI2IDIuNzguOTIyIDQuMTgyLjkyMiAzLjc4MSAwIDcuNDAxLTIuMTU2IDkuMDg5LTUuODE0IDIuMzE0LTUuMDE0LjEyNS0xMC45NTUtNC44ODktMTMuMjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTUuOTYzIDQwMC45NDVjLTUuMTAxLTIuMTE0LTEwLjk1Mi4zMS0xMy4wNjUgNS40MTJsLTEzLjA1NCAzMS41MTVjLTIuMTE0IDUuMTAzLjMxIDEwLjk1MiA1LjQxMiAxMy4wNjUgMS4yNTEuNTE5IDIuNTQ3Ljc2NCAzLjgyMy43NjQgMy45MjQgMCA3LjY0Ny0yLjMyNSA5LjI0My02LjE3NmwxMy4wNTQtMzEuNTE1YzIuMTEzLTUuMTAyLS4zMTEtMTAuOTUyLTUuNDEzLTEzLjA2NXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0Ni4xOTkgNDc0LjA3OGMtNS4wNzYgMi4xNzUtNy40MjggOC4wNTQtNS4yNTIgMTMuMTNsLjAwMy4wMDdjMS42MjUgMy43OTEgNS4zMTQgNi4wNiA5LjE5MiA2LjA2IDEuMzE1IDAgMi42NTEtLjI2MSAzLjkzNy0uODEyIDUuMDc2LTIuMTc1IDcuNDI2LTguMDU4IDUuMjUtMTMuMTM0LTIuMTc0LTUuMDc2LTguMDUxLTcuNDI2LTEzLjEzLTUuMjUxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQyLjE1OCA0MzcuODcxLTEzLjA1NC0zMS41MTRjLTIuMTE0LTUuMTAzLTcuOTY1LTcuNTI3LTEzLjA2NS01LjQxMi01LjEwMyAyLjExMy03LjUyNiA3Ljk2My01LjQxMiAxMy4wNjVsMTMuMDU0IDMxLjUxNGMxLjU5NSAzLjg1MiA1LjMxOCA2LjE3NiA5LjI0MyA2LjE3NiAxLjI3NSAwIDIuNTcyLS4yNDUgMy44MjMtLjc2NCA1LjEwMi0yLjExMiA3LjUyNS03Ljk2MiA1LjQxMS0xMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00ODcuMjA4IDM0MC45NDdjLTUuMDc2LTIuMTc3LTEwLjk1NS4xNzctMTMuMTMgNS4yNTItMi4xNzYgNS4wNzcuMTc2IDEwLjk1NiA1LjI1MiAxMy4xMzFsLjAwNi4wMDNjMS4yODUuNTUgMi42MTkuODExIDMuOTMzLjgxMSAzLjg3OSAwIDcuNTY5LTIuMjcyIDkuMTk0LTYuMDY0IDIuMTc3LTUuMDc3LS4xNzgtMTAuOTU3LTUuMjU1LTEzLjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0NS41MjUgMzIzLjY4MS0zMS41MTQtMTMuMDU0Yy01LjEwMi0yLjExMy0xMC45NTEuMzEtMTMuMDY1IDUuNDEycy4zMSAxMC45NTIgNS40MTIgMTMuMDY1bDMxLjUxNCAxMy4wNTRjMS4yNTIuNTE5IDIuNTQ4Ljc2NCAzLjgyMy43NjQgMy45MjQgMCA3LjY0Ny0yLjMyNSA5LjI0My02LjE3NiAyLjExMy01LjEwMi0uMzExLTEwLjk1Mi01LjQxMy0xMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00ODMuMjc0IDE3MS44NjZjMS4zMTQgMCAyLjY1LS4yNjEgMy45MzQtLjgxMWwuMDA3LS4wMDNjNS4wNzYtMi4xNzUgNy40MjQtOC4wNTMgNS4yNDktMTMuMTI5cy04LjA2LTcuNDI3LTEzLjEzNC01LjI1Yy01LjA3NyAyLjE3NS03LjQyOCA4LjA1NC01LjI1MiAxMy4xMzEgMS42MjUgMy43OTEgNS4zMTYgNi4wNjIgOS4xOTYgNi4wNjJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MDYuMzU3IDE4Mi44OTdjLTUuMTAzIDIuMTEzLTcuNTI2IDcuOTYzLTUuNDEyIDEzLjA2NSAxLjU5NSAzLjg1MiA1LjMxOCA2LjE3NiA5LjI0MyA2LjE3NiAxLjI3NSAwIDIuNTcyLS4yNDUgMy44MjMtLjc2NGwzMS41MTQtMTMuMDU0YzUuMTAzLTIuMTEzIDcuNTI2LTcuOTYzIDUuNDEyLTEzLjA2NS0yLjExNC01LjEwMy03Ljk2My03LjUyNy0xMy4wNjYtNS40MTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNDYuMTk5IDM3LjkyM2MxLjI4NS41NTEgMi42MjEuODExIDMuOTM1LjgxMSAzLjg4IDAgNy41NzEtMi4yNzEgOS4xOTYtNi4wNjNsLjAwMy0uMDA3YzIuMTc2LTUuMDc2LS4xNzctMTAuOTUyLTUuMjUzLTEzLjEyNy01LjA3NC0yLjE3Ni0xMC45NTcuMTc5LTEzLjEzMiA1LjI1Ni0yLjE3NyA1LjA3Ni4xNzUgMTAuOTU1IDUuMjUxIDEzLjEzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzE2LjAzOSAxMTEuMDU3YzEuMjUxLjUxOSAyLjU0Ny43NjQgMy44MjMuNzY0IDMuOTI0IDAgNy42NDctMi4zMjUgOS4yNDMtNi4xNzZsMTMuMDU0LTMxLjUxNGMyLjExNC01LjEwMy0uMzEtMTAuOTUzLTUuNDEyLTEzLjA2Ni01LjEwMS0yLjExNC0xMC45NTEuMzEtMTMuMDY1IDUuNDEybC0xMy4wNTQgMzEuNTE0Yy0yLjExNSA1LjEwMi4zMDkgMTAuOTUyIDUuNDExIDEzLjA2NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Zle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MC4wMDUgNDgwLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTI0MC4wMDMsNDhjNC40MTgsMCw4LTMuNTgyLDgtOFY4YzAtNC40MTgtMy41ODItOC04LThzLTgsMy41ODItOCw4djMyQzIzMi4wMDMsNDQuNDE4LDIzNS41ODQsNDgsMjQwLjAwMyw0OHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE0MS4wNzUsMzYuNjU2bDE2LDI3LjcwNGMyLjE4NCwzLjg0MSw3LjA2OCw1LjE4NCwxMC45MDksM3M1LjE4NC03LjA2OCwzLTEwLjkwOWMtMC4wMTctMC4wMzEtMC4wMzUtMC4wNjEtMC4wNTMtMC4wOTINCgkJCQlsLTE2LTI3LjcwNGMtMi4xODQtMy44NDEtNy4wNjgtNS4xODQtMTAuOTA5LTNjLTMuODQxLDIuMTg0LTUuMTg0LDcuMDY4LTMsMTAuOTA5QzE0MS4wMzksMzYuNTk1LDE0MS4wNTcsMzYuNjI2LDE0MS4wNzUsMzYuNjU2DQoJCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNzYuNTY3LDEwNi44NzVjMC4wMywwLjAxOCwwLjA2MSwwLjAzNSwwLjA5MiwwLjA1M2wyNy43MDQsMTZjMy44MTIsMi4yMzQsOC43MTMsMC45NTYsMTAuOTQ3LTIuODU2DQoJCQkJYzIuMjM0LTMuODEyLDAuOTU2LTguNzEzLTIuODU2LTEwLjk0N2MtMC4wMy0wLjAxOC0wLjA2MS0wLjAzNS0wLjA5Mi0wLjA1M2wtMjcuNzA0LTE2Yy0zLjgxMi0yLjIzNC04LjcxMy0wLjk1Ni0xMC45NDcsMi44NTYNCgkJCQlDNzEuNDc3LDk5LjczOSw3Mi43NTUsMTA0LjY0MSw3Ni41NjcsMTA2Ljg3NXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTk2LjAwMywxOTJjMC00LjQxOC0zLjU4Mi04LTgtOGgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJDOTIuNDIxLDIwMCw5Ni4wMDMsMTk2LjQxOCw5Ni4wMDMsMTkyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA0LjQ1NiwyNjEuMDE4Yy0wLjAzMSwwLjAxOC0wLjA2MiwwLjAzNi0wLjA5MywwLjA1NGwtMjcuNzA0LDE2Yy0zLjg0MSwyLjE4My01LjE4NSw3LjA2Ny0zLjAwMiwxMC45MDgNCgkJCQljMi4xODMsMy44NDEsNy4wNjcsNS4xODUsMTAuOTA4LDMuMDAyYzAuMDMxLTAuMDE4LDAuMDYyLTAuMDM2LDAuMDkzLTAuMDU0bDI3LjcwNC0xNmMzLjg0MS0yLjE4Myw1LjE4NS03LjA2NywzLjAwMi0xMC45MDgNCgkJCQlDMTEzLjE4MSwyNjAuMTc5LDEwOC4yOTcsMjU4LjgzNSwxMDQuNDU2LDI2MS4wMTh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MDMuNDQsMjc3LjEyNmMtMC4wMzEtMC4wMTgtMC4wNjItMC4wMzYtMC4wOTMtMC4wNTRsLTI3LjcwNC0xNmMtMy44MTEtMi4yMzUtOC43MTMtMC45NTctMTAuOTQ4LDIuODU0DQoJCQkJYy0yLjIzNSwzLjgxMS0wLjk1Nyw4LjcxMywyLjg1NCwxMC45NDhjMC4wMzEsMC4wMTgsMC4wNjIsMC4wMzYsMC4wOTMsMC4wNTRsMjcuNzA0LDE2YzMuODExLDIuMjM1LDguNzEzLDAuOTU3LDEwLjk0OC0yLjg1NA0KCQkJCUM0MDguNTI5LDI4NC4yNjIsNDA3LjI1MSwyNzkuMzYxLDQwMy40NCwyNzcuMTI2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI0LjAwMywxODRoLTMyYy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDMyYzQuNDE4LDAsOC0zLjU4Miw4LThTNDI4LjQyMSwxODQsNDI0LjAwMywxODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNzEuNjUxLDEyNGMxLjQwNCwwLDIuNzg0LTAuMzcsNC0xLjA3MmwyNy43MDQtMTZjMy44NDEtMi4xODQsNS4xODQtNy4wNjgsMy0xMC45MDlzLTcuMDY4LTUuMTg0LTEwLjkwOS0zDQoJCQkJYy0wLjAzMSwwLjAxNy0wLjA2MSwwLjAzNS0wLjA5MiwwLjA1M2wtMjcuNzA0LDE2Yy0zLjgyNiwyLjIwOS01LjEzNyw3LjEwMi0yLjkyOCwxMC45MjgNCgkJCQlDMzY2LjE1MiwxMjIuNDc1LDM2OC43OTMsMTI0LDM3MS42NTEsMTI0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzExLjk5Myw2Ny4yOTFjMC4wMDMsMC4wMDIsMC4wMDYsMC4wMDQsMC4wMDksMC4wMDVjMy44MjcsMi4yMDcsOC43MiwwLjg5NCwxMC45MjctMi45MzQNCgkJCQljMC0wLjAwMSwwLjAwMS0wLjAwMiwwLjAwMS0wLjAwMmwxNi0yNy43MDRjMi4yMzUtMy44MTEsMC45NTctOC43MTMtMi44NTQtMTAuOTQ4Yy0zLjgxMS0yLjIzNS04LjcxMy0wLjk1Ny0xMC45NDgsMi44NTQNCgkJCQljLTAuMDE4LDAuMDMxLTAuMDM2LDAuMDYyLTAuMDU0LDAuMDkzbC0xNiwyNy43MDRDMzA2Ljg2Miw2MC4xODQsMzA4LjE2OSw2NS4wNzgsMzExLjk5Myw2Ny4yOTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNTYuMDAzLDMyMGM0LjQxOCwwLDgtMy41ODIsOC04di04OGgxNmMxNy42NzMsMCwzMi0xNC4zMjcsMzItMzJzLTE0LjMyNy0zMi0zMi0zMmMtMTcuNjczLDAtMzIsMTQuMzI3LTMyLDMydjE2aC0xNg0KCQkJCXYtMTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMycy0zMiwxNC4zMjctMzIsMzJzMTQuMzI3LDMyLDMyLDMyaDE2djg4YzAsNC40MTgsMy41ODIsOCw4LDhzOC0zLjU4Miw4LTh2LTg4aDE2djg4DQoJCQkJQzI0OC4wMDMsMzE2LjQxOCwyNTEuNTg0LDMyMCwyNTYuMDAzLDMyMHogTTI2NC4wMDMsMTkyYzAtOC44MzcsNy4xNjMtMTYsMTYtMTZzMTYsNy4xNjMsMTYsMTZzLTcuMTYzLDE2LTE2LDE2aC0xNlYxOTJ6DQoJCQkJIE0yMTYuMDAzLDIwOGgtMTZjLTguODM3LDAtMTYtNy4xNjMtMTYtMTZzNy4xNjMtMTYsMTYtMTZzMTYsNy4xNjMsMTYsMTZWMjA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjQ2LjIxOSw2NC4xNTJjLTcwLjYxMS0zLjM5Mi0xMzAuNjAzLDUxLjA5OS0xMzMuOTk1LDEyMS43MWMtMS45NDMsNDAuNDMyLDE1LjM1NCw3OS40LDQ2LjY0MywxMDUuMDgyDQoJCQkJYzUuNjM5LDQuNDE3LDguOTk0LDExLjEzNSw5LjEzNiwxOC4yOTZWMzI4YzAuMDQyLDEwLjEzNCw2LjQ0NSwxOS4xNSwxNiwyMi41MjhWMzYwYzAuMDIxLDUuOTIzLDIuMjQ1LDExLjYyNyw2LjI0LDE2DQoJCQkJYy04LjMyLDkuMDQ0LTguMzIsMjIuOTU2LDAsMzJjLTguODk0LDkuNzUtOC4yLDI0Ljg2NCwxLjU1LDMzLjc1OGM0LjQyOSw0LjA0LDEwLjIxNSw2LjI2OCwxNi4yMSw2LjI0Mg0KCQkJCWM0LjMwNiwwLjExMyw3Ljg4OS0zLjI4Nyw4LjAwMS03LjU5M2MwLjA0NC0xLjY4LTAuNDU2LTMuMzMtMS40MjUtNC43MDNjLTAuMjUzLTAuNDg5LTAuNTUzLTAuOTUzLTAuODk2LTEuMzg0DQoJCQkJYy0wLjY1OC0wLjYwMi0xLjQwOS0xLjA5NC0yLjIyNC0xLjQ1NmMtMC4yMzItMC4xMi0wLjQ2NC0wLjIxNi0wLjcwNC0wLjMxMmMtMC44MS0wLjI5NS0xLjY1OS0wLjQ2NS0yLjUyLTAuNTA0DQoJCQkJYy0wLjA4LDAtMC4xNTItMC4wNDgtMC4yMzItMC4wNDhjLTQuNDE4LDAtOC0zLjU4Mi04LThzMy41ODItOCw4LThoMzJjNC40MTgsMCw4LTMuNTgyLDgtOHMtMy41ODItOC04LThoLTMyDQoJCQkJYy00LjQxOCwwLTgtMy41ODItOC04czMuNTgyLTgsOC04aDMyYzQuNDE4LDAsOC0zLjU4Miw4LThzLTMuNTgyLTgtOC04aC0zMmMtNC40MTgsMC04LTMuNTgyLTgtOHYtOGg0MGM0LjQxOCwwLDgtMy41ODIsOC04DQoJCQkJcy0zLjU4Mi04LTgtOGgtNDhjLTQuNDE4LDAtOC0zLjU4Mi04LTh2LTE4Ljc2Yy0wLjEzMS0xMS45NjItNS42NC0yMy4yMy0xNS0zMC42OGMtNDcuNzg4LTM5LjI3NC01NC42ODktMTA5Ljg1Mi0xNS40MTUtMTU3LjY0DQoJCQkJYzIyLjQ2Ni0yNy4zMzYsNTYuNTI4LTQyLjQ0OCw5MS44NzEtNDAuNzZjNTkuMTA3LDMuNTE2LDEwNS41MzYsNTEuOTU3LDEwNi41NDQsMTExLjE2YzAuMjg3LDM0LjA1Mi0xNS4wMjQsNjYuMzYzLTQxLjU2LDg3LjcwNA0KCQkJCWMtOS4yOSw3LjY1Mi0xNC42MDIsMTkuMTA5LTE0LjQ0LDMxLjE0NFYzMjhjMCw0LjQxOC0zLjU4Miw4LTgsOGgtMjRjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMTZ2OA0KCQkJCWMwLDQuNDE4LTMuNTgyLDgtOCw4aC04Yy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDhjNC40MTgsMCw4LDMuNTgyLDgsOHMtMy41ODIsOC04LDhoLThjLTQuNDE4LDAtOCwzLjU4Mi04LDgNCgkJCQlzMy41ODIsOCw4LDhoOGM0LjQxOCwwLDgsMy41ODIsOCw4cy0zLjU4Miw4LTgsOGgtNDBjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzAuNjMyDQoJCQkJYy00LjQxNywxMi40OTctMTguMTI5LDE5LjA0Ny0zMC42MjYsMTQuNjNjLTMuODI2LTEuMzUyLTcuMjQ2LTMuNjUzLTkuOTQyLTYuNjg2Yy0yLjkzOC0zLjMtNy45OTYtMy41OTQtMTEuMjk2LTAuNjU2DQoJCQkJYy0zLjMsMi45MzgtMy41OTQsNy45OTYtMC42NTYsMTEuMjk2YzE0LjYzMSwxNi40ODcsMzkuODU3LDE3Ljk5Miw1Ni4zNDQsMy4zNjJjNi44MS02LjA0MywxMS4zNDktMTQuMjMyLDEyLjg2NC0yMy4yMQ0KCQkJCWMxMi41MjktMy45MTYsMTkuNTExLTE3LjI0NywxNS41OTYtMjkuNzc2Yy0xLjA0LTMuMzI5LTIuODAxLTYuMzg4LTUuMTU2LTguOTZjOC4zMi05LjA0NCw4LjMyLTIyLjk1NiwwLTMyDQoJCQkJYzMuOTk1LTQuMzczLDYuMjE5LTEwLjA3Nyw2LjI0LTE2di05LjQ3MmM5LjU1NS0zLjM3OCwxNS45NTgtMTIuMzk0LDE2LTIyLjUyOHYtMTcuODMyYy0wLjEwNy03LjE4NywzLjAwNy0xNC4wNDYsOC40ODgtMTguNjk2DQoJCQkJYzMwLjM0NC0yNC4zOTUsNDcuODUtNjEuMzM5LDQ3LjUxMi0xMDAuMjcyQzM2Ni44NDcsMTIzLjUzMiwzMTMuNzc3LDY4LjE2OSwyNDYuMjE5LDY0LjE1MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Xle="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yNTUuOTk5LDBjLTc5LjA0NCwwLTE0My4zNTIsNjQuMzA4LTE0My4zNTIsMTQzLjM1M3Y3MC4xOTNjMCw0Ljc4LDMuODc5LDguNjU2LDguNjU5LDguNjU2aDQ4LjA1Nw0KCQkJYzQuNzgsMCw4LjY1Ni0zLjg3Niw4LjY1Ni04LjY1NnYtNzAuMTkzYzAtNDIuOTk4LDM0Ljk4MS03Ny45OCw3Ny45NzktNzcuOThzNzcuOTc5LDM0Ljk4Miw3Ny45NzksNzcuOTh2NzAuMTkzDQoJCQljMCw0Ljc4LDMuODgsOC42NTYsOC42NjEsOC42NTZoNDguMDU3YzQuNzgsMCw4LjY1Ni0zLjg3Niw4LjY1Ni04LjY1NnYtNzAuMTkzQzM5OS4zNTIsNjQuMzA4LDMzNS4wNDQsMCwyNTUuOTk5LDB6DQoJCQkgTTM4Mi4wNCwyMDQuODloLTMwLjc0OHYtNjEuNTM3YzAtNTIuNTQ0LTQyLjc0OC05NS4yOTItOTUuMjkxLTk1LjI5MnMtOTUuMjkxLDQyLjc0OC05NS4yOTEsOTUuMjkydjYxLjUzN2gtMzAuNzQ4di02MS41MzcNCgkJCWMwLTY5LjQ5OSw1Ni41NC0xMjYuMDQsMTI2LjAzOC0xMjYuMDRjNjkuNDk5LDAsMTI2LjA0LDU2LjU0MSwxMjYuMDQsMTI2LjA0VjIwNC44OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQxMC42MywyMDQuODlIMTAxLjM3MWMtMjAuNTA1LDAtMzcuMTg4LDE2LjY4My0zNy4xODgsMzcuMTg4djIzMi43MzRjMCwyMC41MDUsMTYuNjgzLDM3LjE4OCwzNy4xODgsMzcuMTg4SDQxMC42Mw0KCQkJYzIwLjUwNSwwLDM3LjE4Ny0xNi42ODMsMzcuMTg3LTM3LjE4OVYyNDIuMDc4QzQ0Ny44MTcsMjIxLjU3Myw0MzEuMTM1LDIwNC44OSw0MTAuNjMsMjA0Ljg5eiBNNDMwLjUwNSw0NzQuODExDQoJCQljMCwxMC45Ni04LjkxNiwxOS44NzYtMTkuODc1LDE5Ljg3NkgxMDEuMzcxYy0xMC45NiwwLTE5Ljg3Ni04LjkxNi0xOS44NzYtMTkuODc2VjI0Mi4wNzhjMC0xMC45Niw4LjkxNi0xOS44NzYsMTkuODc2LTE5Ljg3Ng0KCQkJSDQxMC42M2MxMC45NTksMCwxOS44NzUsOC45MTYsMTkuODc1LDE5Ljg3NlY0NzQuODExeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjg1LjExLDM2OS43ODFjMTAuMTEzLTguNTIxLDE1Ljk5OC0yMC45NzgsMTUuOTk4LTM0LjM2NWMwLTI0Ljg3My0yMC4yMzYtNDUuMTA5LTQ1LjEwOS00NS4xMDkNCgkJCWMtMjQuODc0LDAtNDUuMTEsMjAuMjM2LTQ1LjExLDQ1LjEwOWMwLDEzLjM4Nyw1Ljg4NSwyNS44NDQsMTYsMzQuMzY3bC05LjczMSw0Ni4zNjJjLTAuNTM1LDIuNTU0LDAuMTA4LDUuMjExLDEuNzUyLDcuMjM2DQoJCQljMS42NDUsMi4wMjMsNC4xMTMsMy4yLDYuNzIsMy4yaDYwLjczOGMyLjYwOCwwLDUuMDc2LTEuMTc2LDYuNzE5LTMuMmMxLjY0My0yLjAyNiwyLjI4Ni00LjY4MywxLjc1MS03LjIzNEwyODUuMTEsMzY5Ljc4MXoNCgkJCSBNMjcwLjg1MSwzNTguODJjLTMuMDQsMS45MzYtNC41NjUsNS41NTMtMy44MjQsOS4wODFsOC42OCw0MS4zNjZoLTM5LjQxNWw4LjY4Mi00MS4zNjNjMC43NC0zLjUyOS0wLjc4Mi03LjE0Ni0zLjgyNC05LjA4MQ0KCQkJYy04LjEwOC01LjE2LTEyLjk0OC0xMy45MTEtMTIuOTQ4LTIzLjQwNmMwLTE1LjMyNywxMi40NjktMjcuNzk2LDI3Ljc5Ny0yNy43OTZjMTUuMzI3LDAsMjcuNzk2LDEyLjQ2OSwyNy43OTYsMjcuNzk2DQoJCQlDMjgzLjc5NywzNDQuOTE0LDI3OC45NTcsMzUzLjY2MywyNzAuODUxLDM1OC44MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Kle="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00OTQuOTMzNTk0IDBoLTQ3Ny44NjcxODhjLTkuNDIxODc1LjAwNzgxMjUtMTcuMDU4NTkzNSA3LjY0NDUzMS0xNy4wNjY0MDYgMTcuMDY2NDA2djU5LjczNDM3NWMuMDA3ODEyNSA5LjQyMTg3NSA3LjY0NDUzMSAxNy4wNTQ2ODggMTcuMDY2NDA2IDE3LjA2NjQwN2gxMC44OTQ1MzJsLTI2LjgzNTkzOCA0Ni45NjQ4NDNjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTk1MzEgMS41MjczNDQgMi42Mjg5MDcgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2NDg0NGMtMS41MDc4MTIgMi42NDA2MjUtMS41IDUuODg2NzE5LjAyNzM0NCA4LjUxNTYyNSAxLjUyNzM0NCAyLjYzMjgxMyA0LjMzOTg0NCA0LjI1IDcuMzgyODEyIDQuMjVoMTkuNDI1NzgybC0yNi44MzU5MzggNDYuOTY4NzVjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4MjgxMy4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42Mjg5MDYgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2ODc1Yy0xLjUwNzgxMiAyLjY0MDYyNS0xLjUgNS44ODI4MTMuMDI3MzQ0IDguNTE1NjI1IDEuNTI3MzQ0IDIuNjI4OTA3IDQuMzM5ODQ0IDQuMjUgNy4zODI4MTIgNC4yNWgxOS40MjU3ODJsLTI2LjgzNTkzOCA0Ni45NjQ4NDRjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42MzI4MTIgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1MzkwNmgxOS40MjU3ODJsLTI2LjgzNTkzOCA0Ni45NjQ4NDRjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42MzI4MTMgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2ODc1Yy0xLjUwNzgxMiAyLjY0MDYyNS0xLjUgNS44ODI4MTMuMDI3MzQ0IDguNTE1NjI1IDEuNTI3MzQ0IDIuNjI4OTA2IDQuMzM5ODQ0IDQuMjUgNy4zODI4MTIgNC4yNWg0OTQuOTI5Njg4YzMuMDQyOTY4IDAgNS44NTU0NjgtMS42MjEwOTQgNy4zODI4MTItNC4yNSAxLjUyNzM0NC0yLjYzMjgxMiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45Njg3NWgxOS40MjU3ODJjMy4wNDI5NjggMCA1Ljg1NTQ2OC0xLjYxNzE4NyA3LjM4MjgxMi00LjI1IDEuNTI3MzQ0LTIuNjI4OTA2IDEuNTM1MTU2LTUuODc1LjAyNzM0NC04LjUxNTYyNWwtMjYuODM1OTM4LTQ2Ljk2NDg0NGgxOS40MjU3ODJjMy4wNDI5NjgtLjAwMzkwNiA1Ljg1NTQ2OC0xLjYyMTA5NCA3LjM4MjgxMi00LjI1MzkwNiAxLjUyNzM0NC0yLjYyODkwNiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45NjQ4NDRoMTkuNDI1NzgyYzMuMDQyOTY4IDAgNS44NTU0NjgtMS42MjEwOTMgNy4zODI4MTItNC4yNSAxLjUyNzM0NC0yLjYzMjgxMiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45Njg3NWgxOS40MjU3ODJjMy4wNDI5NjggMCA1Ljg1NTQ2OC0xLjYyMTA5NCA3LjM4MjgxMi00LjI1IDEuNTI3MzQ0LTIuNjMyODEyIDEuNTM1MTU2LTUuODc1LjAyNzM0NC04LjUxNTYyNWwtMjYuODM1OTM4LTQ2Ljk2ODc1aDE5LjQyNTc4MmMzLjA0Mjk2OCAwIDUuODU1NDY4LTEuNjE3MTg3IDcuMzgyODEyLTQuMjUgMS41MjczNDQtMi42Mjg5MDYgMS41MzUxNTYtNS44NzUuMDI3MzQ0LTguNTE1NjI1bC0yNi44MzU5MzgtNDYuOTY0ODQ0aDE5LjQyNTc4MmMzLjA0Mjk2OCAwIDUuODU1NDY4LTEuNjIxMDkzIDcuMzgyODEyLTQuMjUgMS41MjczNDQtMi42MzI4MTIgMS41MzUxNTYtNS44Nzg5MDYuMDI3MzQ0LTguNTE5NTMxbC0yNi44MzU5MzgtNDYuOTY0ODQzaDEwLjg5NDUzMmM5LjQyMTg3NS0uMDExNzE5IDE3LjA1NDY4Ny03LjY0NDUzMiAxNy4wNjY0MDYtMTcuMDY2NDA3di01OS43MzQzNzVjLS4wMTE3MTktOS40MjE4NzUtNy42NDQ1MzEtMTcuMDU0Njg3Mi0xNy4wNjY0MDYtMTcuMDY2NDA2em0tNDQ3LjMxNjQwNiA5My44NjcxODhoNDYuMjV2NDIuNjY3OTY4aC03MC42Mjg5MDd6bTMxOS4zMTY0MDYgMHY0Mi42Njc5NjhoLTIyMS44NjcxODh2LTQyLjY2Nzk2OHptNjguMjY1NjI1IDB2NDIuNjY3OTY4aC0xNy4wNjY0MDd2LTQyLjY2Nzk2OHptLTI5MC4xMzI4MTMgMzQxLjMzMjAzMXYtNDIuNjY0MDYzaDIyMS44NjcxODh2NDIuNjY0MDYzem0yMjEuODY3MTg4IDE3LjA2NjQwNnY0Mi42Njc5NjloLTIyMS44NjcxODh2LTQyLjY2Nzk2OXptMC0yNTZoLTIyMS44NjcxODh2LTQyLjY2NDA2M2gyMjEuODY3MTg4em0xNy4wNjY0MDYtNDIuNjY0MDYzaDE3LjA2NjQwNnY0Mi42NjQwNjNoLTE3LjA2NjQwNnptLTIzOC45MzM1OTQgMTYyLjEzMjgxM3YtNDIuNjY3OTY5aDIyMS44NjcxODh2NDIuNjY3OTY5em0yMjEuODY3MTg4IDE3LjA2NjQwNnY0Mi42NjQwNjNoLTIyMS44NjcxODh2LTQyLjY2NDA2M3ptLTIyMS44NjcxODgtNzYuODAwNzgxdi00Mi42Njc5NjloMjIxLjg2NzE4OHY0Mi42Njc5Njl6bS0xNy4wNjY0MDYtNTkuNzM0Mzc1aC0xNy4wNjY0MDZ2LTQyLjY2NDA2M2gxNy4wNjY0MDZ6bTAgMTcuMDY2NDA2djQyLjY2Nzk2OWgtMTcuMDY2NDA2di00Mi42Njc5Njl6bTAgNTkuNzM0Mzc1djQyLjY2Nzk2OWgtMTcuMDY2NDA2di00Mi42Njc5Njl6bTAgNTkuNzM0Mzc1djQyLjY2NDA2M2gtMTcuMDY2NDA2di00Mi42NjQwNjN6bTAgNTkuNzM0Mzc1djQyLjY2NDA2M2gtMTcuMDY2NDA2di00Mi42NjQwNjN6bTI1NiAwaDE3LjA2NjQwNnY0Mi42NjQwNjNoLTE3LjA2NjQwNnptMC0xNy4wNzAzMTJ2LTQyLjY2NDA2M2gxNy4wNjY0MDZ2NDIuNjY0MDYzem0wLTU5LjczMDQ2OXYtNDIuNjY3OTY5aDE3LjA2NjQwNnY0Mi42Njc5Njl6bTAtNTkuNzM0Mzc1di00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMzQuMTMyODEyLTQyLjY2Nzk2OWgxNy4wNjY0MDd2NDIuNjY3OTY5aC0xNy4wNjY0MDd6bTAtMTcuMDY2NDA2di00Mi42NjQwNjNoMTcuMDY2NDA3djQyLjY2NDA2M3ptLTE3LjA2NjQwNi01OS43MzA0NjloLTE3LjA2NjQwNnYtNDIuNjY3OTY4aDE3LjA2NjQwNnptLTI3My4wNjY0MDYgMGgtMTcuMDY2NDA2di00Mi42Njc5NjhoMTcuMDY2NDA2em0tODAuMzgyODEyIDE3LjA2NjQwNmg0Ni4yNXY0Mi42NjQwNjNoLTcwLjYyODkwN3ptMCA1OS43MzA0NjloNDYuMjV2NDIuNjY3OTY5aC03MC42Mjg5MDd6bTAgNTkuNzM0Mzc1aDQ2LjI1djQyLjY2Nzk2OWgtNzAuNjI4OTA3em0wIDU5LjczNDM3NWg0Ni4yNXY0Mi42NjQwNjNoLTcwLjYyODkwN3ptMCA1OS43MzQzNzVoNDYuMjV2NDIuNjY0MDYzaC03MC42Mjg5MDd6bTAgNTkuNzMwNDY5aDQ2LjI1djQyLjY2Nzk2OWgtNzAuNjI4OTA3em02My4zMTY0MDYgNDIuNjY3OTY5di00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMjczLjA2NjQwNiAwdi00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMTA0Ljc1NzgxMiAwaC03MC42MjV2LTQyLjY2Nzk2OWg0Ni4yNXptMC01OS43MzQzNzVoLTcwLjYyNXYtNDIuNjY0MDYzaDQ2LjI1em0wLTU5LjczNDM3NWgtNzAuNjI1di00Mi42NjQwNjNoNDYuMjV6bTAtNTkuNzMwNDY5aC03MC42MjV2LTQyLjY2Nzk2OWgxNy4wNjY0MDd2MTcuMDY2NDA2YzAgNC43MTQ4NDQgMy44MjAzMTIgOC41MzUxNTcgOC41MzUxNTYgOC41MzUxNTcgNC43MTA5MzcgMCA4LjUzMTI1LTMuODIwMzEzIDguNTMxMjUtOC41MzUxNTd2LTE3LjA2NjQwNmgxMi4xMTcxODd6bTAtNTkuNzM0Mzc1aC0zNi40OTIxODd2LTQyLjY2Nzk2OWgxMi4xMTcxODd6bTAtNTkuNzM0Mzc1aC0zNi40OTIxODd2LTQyLjY2NDA2M2gxMi4xMTcxODd6bTAtNTkuNzMwNDY5aC0zNi40OTIxODd2LTQyLjY2Nzk2OGgxMi4xMTcxODd6bS0xOS40MjU3ODEtNTkuNzM0Mzc1aC00NTIuMjY1NjI1di01OS43MzQzNzVoNDc3Ljg2NzE4OGwuMDA3ODEyIDU5LjczNDM3NXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im01OS43MzQzNzUgNDIuNjY3OTY5aC0xNy4wNjY0MDZjLTQuNzE0ODQ0IDAtOC41MzUxNTcgMy44MjAzMTItOC41MzUxNTcgOC41MzEyNSAwIDQuNzE0ODQzIDMuODIwMzEzIDguNTM1MTU2IDguNTM1MTU3IDguNTM1MTU2aDE3LjA2NjQwNmM0LjcxMDkzNyAwIDguNTMxMjUtMy44MjAzMTMgOC41MzEyNS04LjUzNTE1NiAwLTQuNzEwOTM4LTMuODIwMzEzLTguNTMxMjUtOC41MzEyNS04LjUzMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0NS4wNjY0MDYgNDIuNjY3OTY5aC01MS4xOTkyMThjLTQuNzE0ODQ0IDAtOC41MzUxNTcgMy44MjAzMTItOC41MzUxNTcgOC41MzEyNSAwIDQuNzE0ODQzIDMuODIwMzEzIDguNTM1MTU2IDguNTM1MTU3IDguNTM1MTU2aDUxLjE5OTIxOGM0LjcxNDg0NCAwIDguNTM1MTU2LTMuODIwMzEzIDguNTM1MTU2LTguNTM1MTU2IDAtNC43MTA5MzgtMy44MjAzMTItOC41MzEyNS04LjUzNTE1Ni04LjUzMTI1em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",qle="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTIzNCAyNDMuNzgzYy0uOTUxIDAtMS44NjguMTQxLTIuNzM5LjM4OWwtLjAwMi0uMDA3LTI4LjcyMiA4LjE4N2MtNS4zMTEgMS41MTQtOC4zOSA3LjA0Ny02Ljg3NiAxMi4zNTggMS4yNTMgNC4zOTYgNS4yNTggNy4yNjEgOS42MTIgNy4yNjEuOTA3IDAgMS44My0uMTI1IDIuNzQ2LS4zODVsMTUuOTgxLTQuNTU0djM1LjQybC0xMjQgMzUuMzQ1di0zNS40MmwyMS40NjQtNi4xMThjNS4zMTEtMS41MTQgOC4zOS03LjA0NyA2Ljg3Ni0xMi4zNThzLTcuMDQ1LTguMzg3LTEyLjM1OC02Ljg3NmwtMjguNzIzIDguMTg3LjAwMS4wMDdjLTQuMTg5IDEuMTkzLTcuMjYgNS4wMzktNy4yNiA5LjYxdjEyNy4xOTljLTguMzYzLTYuMjkzLTE4Ljc1Mi0xMC4wMjgtMzAtMTAuMDI4LTI3LjU3IDAtNTAgMjIuNDMtNTAgNTBzMjIuNDMgNTAgNTAgNTAgNTAtMjIuNDMgNTAtNTB2LTEwMy40MDZsMTI0LTM1LjM0NXY1Ny43MzNjLTguMzYzLTYuMjkyLTE4Ljc1Mi0xMC4wMjctMzAtMTAuMDI3LTI3LjU3IDAtNTAgMjIuNDMtNTAgNTBzMjIuNDMgNTAgNTAgNTAgNTAtMjIuNDMgNTAtNTB2LTE2Ny4xNzJjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMHptLTE4NCAyNDguMjE3Yy0xNi41NDIgMC0zMC0xMy40NTgtMzAtMzBzMTMuNDU4LTMwIDMwLTMwIDMwIDEzLjQ1OCAzMCAzMC0xMy40NTggMzAtMzAgMzB6bTE0NC00MS4wNDVjLTE2LjU0MiAwLTMwLTEzLjQ1OC0zMC0zMHMxMy40NTgtMzAgMzAtMzAgMzAgMTMuNDU4IDMwIDMwLTEzLjQ1OCAzMC0zMCAzMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwOC4wMTMgMi4wMWMtMi41MTEtMS44ODktNS43NjMtMi40ODctOC43ODItMS42MTlsLTEwNC40MDggMzAuMDg5Yy00LjI4MiAxLjIzNC03LjIzMSA1LjE1Mi03LjIzMSA5LjYwOXYxMjcuMTk5Yy04LjM2My02LjI5Mi0xOC43NTItMTAuMDI3LTMwLTEwLjAyNy0yNy41NyAwLTUwIDIyLjQzLTUwIDUwczIyLjQzIDUwIDUwIDUwIDUwLTIyLjQzIDUwLTUwdi0xMDMuNDNsOTcuMTc3LTI4LjAwNWM0LjI4Mi0xLjIzNCA3LjIzMS01LjE1MiA3LjIzMS05LjYwOXYtNTYuMjE3YzAtMy4xNDItMS40NzctNi4xMDEtMy45ODctNy45OXptLTE1MC40MjEgMjM1LjI1MWMtMTYuNTQyIDAtMzAtMTMuNDU4LTMwLTMwczEzLjQ1OC0zMCAzMC0zMCAzMCAxMy40NTggMzAgMzAtMTMuNDU4IDMwLTMwIDMwem0xMzQuNDA4LTE3OC41NjktODQuNDA4IDI0LjMyNXYtMzUuNDAzbDg0LjQwOC0yNC4zMjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NzEuNTkxIDM0OC43NjItNDguMjg4LTcuMDE3LTIxLjU5NS00My43NTZjLTEuNjg1LTMuNDEzLTUuMTYxLTUuNTc0LTguOTY3LTUuNTc0cy03LjI4MyAyLjE2MS04Ljk2NyA1LjU3NGwtMjEuNTk1IDQzLjc1Ni00OC4yODggNy4wMTdjLTMuNzY3LjU0Ny02Ljg5NiAzLjE4Ni04LjA3MyA2LjgwNnMtLjE5NSA3LjU5NCAyLjUzMSAxMC4yNTFsMzQuOTQxIDM0LjA2LTguMjQ5IDQ4LjA5M2MtLjY0NCAzLjc1MS44OTggNy41NDMgMy45NzggOS43ODEgMy4wNzkgMi4yMzYgNy4xNjIgMi41MzIgMTAuNTMxLjc2MWw0My4xOS0yMi43MDcgNDMuMTkgMjIuNzA2YzEuNDYzLjc3IDMuMDYxIDEuMTQ5IDQuNjUyIDEuMTQ5IDIuMDczIDAgNC4xMzctLjY0NCA1Ljg3OS0xLjkxIDMuMDgtMi4yMzcgNC42MjItNi4wMjkgMy45NzgtOS43ODFsLTguMjQ5LTQ4LjA5MyAzNC45NDEtMzQuMDZjMi43MjYtMi42NTcgMy43MDctNi42MzEgMi41MzEtMTAuMjUxcy00LjMwNC02LjI1OC04LjA3MS02LjgwNXptLTQ3LjEyNCA0MC40NjRjLTIuMzU3IDIuMjk3LTMuNDMzIDUuNjA3LTIuODc2IDguODUxbDUuNzEyIDMzLjMwNC0yOS45MDktMTUuNzI0Yy0yLjkxMy0xLjUzMi02LjM5My0xLjUzMi05LjMwNyAwbC0yOS45MDkgMTUuNzI0IDUuNzEyLTMzLjMwNGMuNTU3LTMuMjQ0LS41MTktNi41NTQtMi44NzYtOC44NTFsLTI0LjE5Ni0yMy41ODYgMzMuNDM5LTQuODU5YzMuMjU3LS40NzMgNi4wNzMtMi41MTkgNy41MjktNS40N2wxNC45NTUtMzAuMzAxIDE0Ljk1NCAzMC4zMDFjMS40NTcgMi45NTEgNC4yNzIgNC45OTcgNy41MjkgNS40N2wzMy40MzkgNC44NTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMi42MiA5MC43MDYtNi42MiAzOC41OTNjLS42NDQgMy43NTEuODk4IDcuNTQzIDMuOTc4IDkuNzgxIDMuMDc5IDIuMjM3IDcuMTYzIDIuNTMzIDEwLjUzMS43NjFsMzQuNjU4LTE4LjIyMSAzNC42NTkgMTguMjIxYzEuNDYzLjc2OSAzLjA2MSAxLjE0OCA0LjY1MiAxLjE0OCAyLjA3MyAwIDQuMTM3LS42NDQgNS44NzktMS45MSAzLjA4LTIuMjM4IDQuNjIyLTYuMDI5IDMuOTc4LTkuNzgxbC02LjYyLTM4LjU5MyAyOC4wNC0yNy4zMzFjMi43MjYtMi42NTcgMy43MDctNi42MzEgMi41MzEtMTAuMjUxcy00LjMwNi02LjI1OC04LjA3My02LjgwNmwtMzguNzUtNS42MzEtMTcuMzI4LTM1LjExMmMtMS42ODQtMy40MTMtNS4xNi01LjU3NC04Ljk2Ny01LjU3NHMtNy4yODMgMi4xNjEtOC45NjcgNS41NzRsLTE3LjMyOSAzNS4xMTMtMzguNzUgNS42MzFjLTMuNzY3LjU0Ny02Ljg5NiAzLjE4Ni04LjA3MyA2LjgwNnMtLjE5NSA3LjU5NCAyLjUzMSAxMC4yNTF6bTI0LjMzLTMwLjk4M2MzLjI1Ny0uNDczIDYuMDczLTIuNTE5IDcuNTI5LTUuNDdsMTAuNjg4LTIxLjY1NyAxMC42ODggMjEuNjU3YzEuNDU3IDIuOTUxIDQuMjcyIDQuOTk3IDcuNTI5IDUuNDdsMjMuOSAzLjQ3My0xNy4yOTIgMTYuODU4Yy0yLjM1NyAyLjI5OC0zLjQzMyA1LjYwOC0yLjg3NiA4Ljg1Mmw0LjA4MyAyMy44MDQtMjEuMzc3LTExLjIzOGMtMS40NTctLjc2Ni0zLjA1NS0xLjE0OS00LjY1My0xLjE0OS0xLjU5OSAwLTMuMTk3LjM4My00LjY1MyAxLjE0OWwtMjEuMzc3IDExLjIzOCA0LjA4My0yMy44MDRjLjU1Ny0zLjI0NC0uNTE5LTYuNTU0LTIuODc2LTguODUybC0xNy4yOTYtMTYuODU4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjM0IDg2LjMwNmMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYxMGMwIDUuNTIzIDQuNDc3IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwdi0xMGMwLTUuNTIzLTQuNDc3LTEwLTEwLTEweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjM0IDE1Ni4zMDZjLTUuNTIzIDAtMTAgNC40NzctMTAgMTB2MTBjMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtMTBjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3NCAxMjYuMzA2aC0xMGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3NyAxMCAxMCAxMGgxMGM1LjUyMyAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE5NCAxNDYuMzA2aDEwYzUuNTIzIDAgMTAtNC40NzcgMTAtMTBzLTQuNDc3LTEwLTEwLTEwaC0xMGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3NyAxMCAxMCAxMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2MiAyODQuMzFjMi42MyAwIDUuMjEtMS4wNyA3LjA3LTIuOTNzMi45My00LjQ0IDIuOTMtNy4wN2MwLTIuNjQtMS4wNy01LjIxLTIuOTMtNy4wOC0xLjg2LTEuODYtNC40NC0yLjkyLTcuMDctMi45MnMtNS4yMSAxLjA2LTcuMDcgMi45MmMtMS44NiAxLjg3LTIuOTMgNC40NC0yLjkzIDcuMDggMCAyLjYzIDEuMDcgNS4yMSAyLjkzIDcuMDdzNC40NCAyLjkzIDcuMDcgMi45M3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",eNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUwNS40IDUwNS40Ij4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDM3LjEsMjMzLjQ1YzE0LjgtMTAuNCwyNC42LTI3LjcsMjQuNi00Ny4yYzAtMzEuOS0yNS44LTU3LjctNTcuNy01Ny43Yy0zMS45LDAtNTcuNywyNS44LTU3LjcsNTcuNw0KCQkJYzAsMTkuNSw5LjcsMzYuOCwyNC42LDQ3LjJjLTEyLjcsNC40LTI0LjMsMTEuMi0zNC4xLDIwYy0xMy41LTExLjUtMjkuNC0yMC4zLTQ2LjgtMjUuNWMyMS4xLTEyLjgsMzUuMy0zNi4xLDM1LjMtNjIuNg0KCQkJYzAtNDAuNC0zMi43LTczLjEtNzMuMS03My4xYy00MC40LDAtNzMuMSwzMi44LTczLjEsNzMuMWMwLDI2LjUsMTQuMSw0OS44LDM1LjMsNjIuNmMtMTcuMiw1LjItMzIuOSwxMy45LTQ2LjMsMjUuMg0KCQkJYy05LjgtOC42LTIxLjItMTUuMy0zMy43LTE5LjZjMTQuOC0xMC40LDI0LjYtMjcuNywyNC42LTQ3LjJjMC0zMS45LTI1LjgtNTcuNy01Ny43LTU3LjdzLTU3LjcsMjUuOC01Ny43LDU3LjcNCgkJCWMwLDE5LjUsOS43LDM2LjgsMjQuNiw0Ny4yQzI4LjUsMjQ3LjI1LDAsMjg0Ljk1LDAsMzI5LjI1djYuNmMwLDAuMiwwLjIsMC40LDAuNCwwLjRoMTIyLjNjLTAuNyw1LjUtMS4xLDExLjItMS4xLDE2Ljl2Ni44DQoJCQljMCwyOS40LDIzLjgsNTMuMiw1My4yLDUzLjJoMTU1YzI5LjQsMCw1My4yLTIzLjgsNTMuMi01My4ydi02LjhjMC01LjctMC40LTExLjQtMS4xLTE2LjlINTA1YzAuMiwwLDAuNC0wLjIsMC40LTAuNHYtNi42DQoJCQlDNTA1LjIsMjg0Ljg1LDQ3Ni44LDI0Ny4xNSw0MzcuMSwyMzMuNDV6IE0zNjIuMywxODYuMTVjMC0yMywxOC43LTQxLjcsNDEuNy00MS43czQxLjcsMTguNyw0MS43LDQxLjcNCgkJCWMwLDIyLjctMTguMyw0MS4yLTQwLjksNDEuN2MtMC4zLDAtMC41LDAtMC44LDBzLTAuNSwwLTAuOCwwQzM4MC41LDIyNy40NSwzNjIuMywyMDguOTUsMzYyLjMsMTg2LjE1eiBNMTk0LjksMTY1LjM1DQoJCQljMC0zMS41LDI1LjYtNTcuMSw1Ny4xLTU3LjFzNTcuMSwyNS42LDU3LjEsNTcuMWMwLDMwLjQtMjMuOSw1NS4zLTUzLjgsNTdjLTEuMSwwLTIuMiwwLTMuMywwYy0xLjEsMC0yLjIsMC0zLjMsMA0KCQkJQzIxOC44LDIyMC42NSwxOTQuOSwxOTUuNzUsMTk0LjksMTY1LjM1eiBNNTkuMywxODYuMTVjMC0yMywxOC43LTQxLjcsNDEuNy00MS43czQxLjcsMTguNyw0MS43LDQxLjdjMCwyMi43LTE4LjMsNDEuMi00MC45LDQxLjcNCgkJCWMtMC4zLDAtMC41LDAtMC44LDBzLTAuNSwwLTAuOCwwQzc3LjYsMjI3LjQ1LDU5LjMsMjA4Ljk1LDU5LjMsMTg2LjE1eiBNMTI1LjUsMzIwLjE1SDE2LjJjNC41LTQyLjYsNDAuNS03Niw4NC4yLTc2LjMNCgkJCWMwLjIsMCwwLjQsMCwwLjYsMHMwLjQsMCwwLjYsMGMyMC44LDAuMSwzOS44LDcuOCw1NC41LDIwLjNDMTQxLjcsMjc5Ljc1LDEzMSwyOTguOTUsMTI1LjUsMzIwLjE1eiBNMzY2LjgsMzU5Ljk1DQoJCQljMCwyMC41LTE2LjcsMzcuMi0zNy4yLDM3LjJoLTE1NWMtMjAuNSwwLTM3LjItMTYuNy0zNy4yLTM3LjJ2LTYuOGMwLTYyLjEsNDkuNi0xMTIuOSwxMTEuMy0xMTQuN2MxLjEsMC4xLDIuMywwLjEsMy40LDAuMQ0KCQkJczIuMywwLDMuNC0wLjFjNjEuNywxLjgsMTExLjMsNTIuNiwxMTEuMywxMTQuN1YzNTkuOTV6IE0zNzguNywzMjAuMTVjLTUuNS0yMS4xLTE2LTQwLTMwLjMtNTUuNmMxNC44LTEyLjgsMzQtMjAuNSw1NS0yMC43DQoJCQljMC4yLDAsMC40LDAsMC42LDBzMC40LDAsMC42LDBjNDMuNywwLjMsNzkuNywzMy43LDg0LjIsNzYuM0gzNzguN3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",tNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM2Ny4wNDMgMTcwLjQxNGMtMTAuNTE2LS4zNjUtMjAuMDE2LTUuMDQ3LTI2Ljc0OS0xMy4xODEtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC02LjczMyA4LjEzNS0xNi4yMzMgMTIuODE2LTI2Ljc0OSAxMy4xODItNC4xNC4xNDQtNy4zNzkgMy42MTYtNy4yMzQgNy43NTYuMTQ0IDQuMTQgMy41OTQgNy4zNzEgNy43NTYgNy4yMzUgMTMuNTY2LS40NzIgMjYuMzg2LTYuMzI4IDM1LjY0Ni0xNi4xODcgMjAuMjc2IDIxLjYyOSA1NC41NjkgMjEuNjU3IDc0Ljg3NS4wMDEgMjAuMjc4IDIxLjYyOSA1NC41NzEgMjEuNjU0IDc0Ljg3NC0uMDAxIDkuMjYyIDkuODU5IDIyLjA4IDE1LjcxNSAzNS42NDcgMTYuMTg3IDQuMTIxLjE0OSA3LjYxMy0zLjA5NSA3Ljc1Ni03LjIzNS4xNDUtNC4xNC0zLjA5NC03LjYxMi03LjIzNC03Ljc1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MC4yOTQgMjE4Ljc1N2MtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NiAxNy42MzYtNDEuNDYxIDE3LjYwNy01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTk2IDE3LjYzOS00MS40NjEgMTcuNjA2LTU2LjAzMS0uMDAxLTQuOTA0LTUuOTIyLTEzLjkyNy01LjkzOC0xOC44NDEuMDAxLTcuOTk0IDkuNjU4LTIwLjE4MiAxNC40ODQtMzIuNjEyIDEyLjkxNC00LjEtLjUxOS03Ljg2MSAyLjM4OS04LjM4MiA2LjQ5OS0uNTIxIDQuMTA5IDIuMzkgNy44NjIgNi40OTkgOC4zODIgMTYuNDgxIDIuMDg5IDMyLjY1OC0zLjc5NSA0My45MTYtMTUuODA4IDIwLjI3NyAyMS42MjggNTQuNTY4IDIxLjY1NCA3NC44NzMgMCAyMC4yNzYgMjEuNjI3IDU0LjU3IDIxLjY1NiA3NC44NzMgMCAxMS4yNTggMTIuMDEzIDI3LjQzNiAxNy44OTYgNDMuOTE1IDE1LjgwOCA0LjEwOS0uNTIgNy4wMi00LjI3MiA2LjQ5OS04LjM4MnMtNC4yODktNy4wMTktOC4zODItNi40OTljLTEyLjQzNSAxLjU2OS0yNC42MTgtMy4yNTUtMzIuNjExLTEyLjkxNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC43ODIgMTA3LjdjLTguMDgyLTEuNzAzLTE1LjE2Ny02LTIwLjQ4Ny0xMi40MjctNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC01LjMyIDYuNDI3LTEyLjQwNCAxMC43MjUtMjAuNDg2IDEyLjQyOC00LjA1NC44NTQtNi42NDcgNC44MzItNS43OTMgOC44ODVzNC44NCA2LjY0NyA4Ljg4NSA1Ljc5MmMxMC4zODMtMi4xODggMTkuNTkyLTcuMzkgMjYuODE2LTE1LjExNyAyMC4yODIgMjEuNjMxIDU0LjU3MiAyMS42NDggNzQuODcyLS4wMDEgMjAuMjc2IDIxLjYyNiA1NC41NjcgMjEuNjU2IDc0Ljg3MS4wMDIgNy4yMjYgNy43MjcgMTYuNDM2IDEyLjkzIDI2LjgxOCAxNS4xMTYgNC4wNDguODU1IDguMDMtMS43NCA4Ljg4NS01Ljc5My44NTMtNC4wNTMtMS43NDEtOC4wMzEtNS43OTMtOC44ODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01NC45ODUgNDI5LjI3M2gxNjkuNzMydjY5LjU3OWMwIDcuMjUgNS44OTggMTMuMTQ4IDEzLjE0OSAxMy4xNDhoMjUuMTkyYzcuMjUgMCAxMy4xNDgtNS44OTggMTMuMTQ4LTEzLjE0OHYtMS40NjRoNzQuMTk5djEuNDY0YzAgNy4yNSA1Ljg5OCAxMy4xNDggMTMuMTQ5IDEzLjE0OGgyNS4xOTJjNy4yNSAwIDEzLjE0OC01Ljg5OCAxMy4xNDgtMTMuMTQ4di02OS41NzloNTUuMTE5YzI0LjEyMSAwIDQzLjA4MS0yMC44ODYgNDAuNjU3LTQ0Ljk1Ni0uMDA0LS4wNC0uMDA4LS4wOC0uMDEzLS4xMmwtMTMuMDM1LTExMS41NjdjLS40ODEtNC4xMTQtNC4yMTUtNy4wNjItOC4zMTktNi41NzktNC4xMTQuNDgxLTcuMDYgNC4yMDYtNi41NzkgOC4zMmwxMy4wMyAxMTEuNTAzYzEuNDYgMTQuODMzLTEwLjA5NCAyOC4zOTgtMjUuNzM4IDI4LjM5OGgtNTUuMTE5di0xOS4wNThoNDQuOTM3YzkuNDcgMCAxNi44OC04LjE5MSAxNS45MzUtMTcuNjE2LS4wMDUtLjA0My0uMDEtLjA4Ni0uMDE1LS4xMjlsLTM4Ljc1Ni0zMjkuMDc0Yy0uODYxLTguMTc5LTcuNjk1LTE0LjMzNy0xNS45MjctMTQuMzM3aC0xMzQuNTcxYy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDEzNC41NzFjLjUyMyAwIC45NTcuMzkzIDEuMDEuOTE0LjAwNC4wNDIuMDA5LjA4My4wMTQuMTI1bDM4Ljc1IDMyOS4wMzRjLjAxOS4yNzUtLjA3NC41NDctLjI2Ljc1MS0uMTkxLjIxMi0uNDY2LjMzMy0uNzUyLjMzM2gtNDQuOTM3di0yMi44OTJjMC0zOS40NzctMzIuMjU2LTcwLjM0NC03MC4zNDUtNzAuMzQ0LTI2Ljc3OCAwLTUwLjk0NyAxNS4xODktNjIuODM5IDM4Ljc0NC0xMi4wMDgtMjMuNzcyLTM2LjcyNS0zOS4yNS02NC4yMDYtMzguNzMxLTM3LjcuNzA5LTY4Ljk4OCAzMS41OTMtNjguOTg4IDcwLjMzMnYyMi44OTJoLTcwLjM1MmMtLjI4NiAwLS41Ni0uMTIyLS43NTMtLjMzNS0uMTg1LS4yMDQtLjI3Ny0uNDc2LS4yNTktLjc1MWwzOC43NTItMzI5LjAzMmMuMDA1LS4wNDIuMDEtLjA4NC4wMTQtLjEyNy4wNTMtLjUyLjQ4Ni0uOTEyIDEuMDEtLjkxMmgxMzQuNTdjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEzNC41N2MtOC4yMzMgMC0xNS4wNjcgNi4xNi0xNS45MjcgMTQuMzM5bC0zOC43NTcgMzI5LjA3M2MtLjAwNS4wNDMtLjAxLjA4Ni0uMDE1LjEyOS0uOTQ2IDkuNDIyIDYuNDY0IDE3LjYxNiAxNS45MzUgMTcuNjE2aDE1OS41NTF2MTkuMDU4aC0xNjkuNzMyYy0xNC44NTIgMC0yNy4yNzktMTIuNzgyLTI1LjczOS0yOC4zOTlsNDAuNjA5LTM0Ny40ODNjLjAwNS0uMDQuMDA5LS4wOC4wMTMtLjExOSAxLjMzNi0xMy4yNjggMTIuMzk5LTIzLjI3MyAyNS43MzQtMjMuMjczaDMyMC43OThjMTMuMzM1IDAgMjQuMzk3IDEwLjAwNSAyNS43MzMgMjMuMjcyLjAwNC4wNC4wMDguMDguMDEzLjEybDIzLjQ4NyAyMDAuOTc5Yy40ODEgNC4xMTUgNC4yMTcgNy4wNjMgOC4zMTkgNi41NzkgNC4xMTQtLjQ4IDcuMDYtNC4yMDYgNi41NzktOC4zMmwtMjMuNDgtMjAwLjkyMmMtMi4xMzgtMjAuOTMyLTE5LjYwMy0zNi43MDgtNDAuNjUxLTM2LjcwOGgtMzIwLjc5OGMtMjEuMDQ5IDAtMzguNTE2IDE1Ljc3Ny00MC42NTIgMzYuNzFsLTQwLjYxIDM0Ny40ODhjLS4wMDUuMDQtLjAwOS4wOC0uMDEzLjEyLTIuNDE1IDIzLjk5OSAxNi40NjYgNDQuOTU1IDQwLjY1OCA0NC45NTV6bTI1Ny43MTMtNzEuMzAyYzAtMTAuMzI1IDguMTIyLTE5LjI4OSAxOC41LTE5LjQ4MyAxMC42ODItLjIwNCAxOS4yMDkgOC40OTEgMTkuMjA5IDE4LjgzNnYyMi44OTJoLTM3LjcwOXptLTM2LjQ5MSA3MS4zMDJoNzQuMTk5djE5LjA1OGgtNzQuMTk5em03OC4yMTUtMzQuMDU4YzUuNTY5IDAgMTAuMDE0IDQuODE4IDkuNDg0IDEwLjQzLS40NzMgNC44ODQtNC41OSA4LjYyNy05LjQ4NCA4LjYyN2gtNzguMjE1di0xOS4wNThjMjYuMTEyLjAwMSA1Mi4xNjcuMDAxIDc4LjIxNS4wMDF6bS03OC4yMTUgNjguMTE2aDc4LjIxNWM1LjUzNyAwIDEwLjAxNiA0Ljc5NiA5LjQ4NCAxMC40My0uNDcyIDQuODc0LTQuNTg3IDguNjI3LTkuNDg0IDguNjI3aC03OC4yMTV6bTExMC42OSAzMy42NjloLTIxLjQ5di0yLjIxM2MxOC4wMTQtOS4xMjcgMTguMDU0LTM0LjcwOCAwLTQzLjg1NXYtMjQuMjZjMTguMDk4LTkuMTcgMTcuOTY4LTM0Ljc1MiAwLTQzLjg1NXYtMjUuNDkzYzAtMjAuNDg2LTE4LjIwMi0zNi41MTctMzguNzk0LTMzLjQ5LTE2LjM1MyAyLjQtMjguOTE1IDE2LjUyNi0yOC45MTUgMzMuNDl2MjIuODkyaC0yMS40OXYtMjEuODM3YzAtMzAuNTUyIDI0LjQ2LTU2LjA5NCA1NC44MjItNTYuMzg2IDMxLjIxOC0uMjYyIDU1Ljg2NyAyNS4wNTggNTUuODY3IDU1LjMzMXptLTIzNi4zNzctMTE2Ljc4NXYtMjEuODM4YzAtMzIuMjI0IDI2LjY5Ni01Ny41ODMgNTcuNTg5LTU2LjM0MiAyOS40ODMgMS4yMDQgNTMuMDk5IDI1LjUwMyA1My4wOTkgNTUuMjg3djEzOS42NzdoLTIxLjQ5YzAtMTQuNDE4IDAtMTIxLjA2MyAwLTEzOS42NzcgMC0xNy45NS0xNC4wNjUtMzIuODA0LTMxLjkxNS0zMy43OTUtMTkuMjc2LTEuMDk2LTM1Ljc5MyAxNC4yNjEtMzUuNzkzIDMzLjc5NXYyMi44OTJoLTIxLjQ5em0zNi40OSAwdi0yMi4yNDVjMC05LjQyNSA2Ljc2Mi0xNy43MjQgMTUuODc3LTE5LjI0MyAxMS42MzktMS44NTIgMjEuODMgNy4yMzcgMjEuODMgMTguNTk2djIyLjg5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",sNe="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MGgtMzJ2LTgwYzAtOC44MjItNy4xNzgtMTYtMTYtMTZoLTMydi00MGMwLTEzLjIzMy0xMC43NjctMjQtMjQtMjRoLTIyNGMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0djQwaC0zMmMtOC44MjIgMC0xNiA3LjE3OC0xNiAxNnY4MGgtMzJjLTIyLjA1NiAwLTQwIDE3Ljk0NC00MCA0MHYxNzZjMCAyMi4wNTYgMTcuOTQ0IDQwIDQwIDQwaDgwdjcyYzAgMTMuMjMzIDEwLjc2NyAyNCAyNCAyNGgyMjRjMTMuMjMzIDAgMjQtMTAuNzY3IDI0LTI0di03Mmg4MGMyMi4wNTYgMCA0MC0xNy45NDQgNDAtNDB2LTE3NmMwLTIyLjA1Ni0xNy45NDQtNDAtNDAtNDB6bS00OC04MHY4MGgtMzJ2LTgwem0tMjg4LTU2YzAtNC40MTEgMy41ODktOCA4LThoMjI0YzQuNDExIDAgOCAzLjU4OSA4IDh2MTM2aC0yNDBjMC0xLjYzNSAwLTEzMC4yMTEgMC0xMzZ6bS00OCA1NmgzMnY4MGgtMzJ6bTI4OCA0MDhjMCA0LjQxMS0zLjU4OSA4LTggOGgtMjI0Yy00LjQxMSAwLTgtMy41ODktOC04di0xMzZoMjQwem0xMjAtMTEyYzAgMTMuMjMzLTEwLjc2NyAyNC0yNCAyNGgtODB2LTQ4aDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04Yy0yOC42NTcgMC0yOTAuODgzIDAtMzA0IDAtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGgxNnY0OGgtODBjLTEzLjIzMyAwLTI0LTEwLjc2Ny0yNC0yNHYtMTc2YzAtMTMuMjMzIDEwLjc2Ny0yNCAyNC0yNGg0MzJjMTMuMjMzIDAgMjQgMTAuNzY3IDI0IDI0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDU2IDE5MmMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0czEwLjc2NyAyNCAyNCAyNCAyNC0xMC43NjcgMjQtMjQtMTAuNzY3LTI0LTI0LTI0em0wIDMyYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkyIDE5MmMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0czEwLjc2NyAyNCAyNCAyNCAyNC0xMC43NjcgMjQtMjQtMTAuNzY3LTI0LTI0LTI0em0wIDMyYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQ0IDM3NmgtMTY4Yy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4aDE2OGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0NCA0MTZoLTE2OGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGgxNjhjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNDQgNDU2aC0xNjhjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDhoMTY4YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",iNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ3My41NzQgMjUyLjQzMmgtNzMuMTg0di00My43NjFjMC0xMS40NzMtOS4zMzQtMjAuODA3LTIwLjgwNy0yMC44MDctOS44ODYgMC0zNC4yOTUgMC00NC4zMDIgMHYtMTcuODQxYzAtMTIuMzk5LTEwLjA4Ny0yMi40ODYtMjIuNDg2LTIyLjQ4NmgtMTcuNTk1bDE0LjcyNC00Ny41MzVjMTYuNzU5LjY5MiAzMC41MzktMTIuNzUgMzAuNTM5LTI5LjI4NCAwLTE2LjE2NC0xMy4xNTEtMjkuMzE1LTI5LjMxNS0yOS4zMTUtMjkuMjY4IDAtNDAuNDU1IDM4LjUxLTE1LjU0MSA1NC4xNTRsLTE2LjEwMSA1MS45NzloLTMwLjEzM2MtMTAuNTc2IDAtMTkuODMxIDcuNTE0LTIyLjAwNiAxNy44NjYtLjEwNi41MDctLjE2IDEuMDI0LS4xNiAxLjU0MnYyMC45MTloLTM4LjE0NnYtMTguODAxYzAtOC42NzMtNy4wNTctMTUuNzMtMTUuNzMtMTUuNzNoLTEuMzc5di0xOS41NzJjOS40NjktLjIwMyAxNy4xMTMtNy45NTMgMTcuMTEzLTE3LjQ3di0xNS42MTZjMC05LjUxNy03LjY0NC0xNy4yNjctMTcuMTEzLTE3LjQ3di00My42OTljMC0yMS42OTUtMTcuNjUtMzkuMzQ2LTM5LjM0Ni0zOS4zNDZoLTUxLjY3N2MtNC4xNCAwLTcuNDk1IDMuMzU2LTcuNDk1IDcuNDk1czMuMzU2IDcuNDk1IDcuNDk1IDcuNDk1aDUxLjY3OGMxMy40MjkgMCAyNC4zNTUgMTAuOTI2IDI0LjM1NSAyNC4zNTV2NDMuNjgyaC0zNy45NTd2LTIyLjU4NGMwLTQuMTQtMy4zNTYtNy40OTUtNy40OTUtNy40OTVoLTk2LjJ2LTM3Ljk1N2gzNS42MzhjNC4xNCAwIDcuNDk1LTMuMzU2IDcuNDk1LTcuNDk1cy0zLjM1NS03LjQ5NS03LjQ5NS03LjQ5NWgtNDMuMTMzYy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2NTIuOTQ3YzAgNC4xNCAzLjM1NiA3LjQ5NSA3LjQ5NSA3LjQ5NWg5Ni4ydjE1LjEwOWMtOS40NjguMjAzLTE3LjExMiA3Ljk1NC0xNy4xMTIgMTcuNDd2MTUuNjE2YzAgOS41MTYgNy42NDQgMTcuMjY3IDE3LjExMiAxNy40N3YxOS41NzJoLTEuMzc5Yy04LjY3MyAwLTE1LjczIDcuMDU3LTE1LjczIDE1LjczdjE4LjgwMWgtMjIuNTU1Yy0xMS40NzMgMC0yMC44MDcgOS4zMzQtMjAuODA3IDIwLjgwN3YyLjQ4OWwtMzMuNDAyIDcuNTg5Yy0zLjQxMy43NzUtNS44MzUgMy44MDktNS44MzUgNy4zMDl2MTA3LjI0M2MwIDMuNDk5IDIuNDIxIDYuNTMzIDUuODMzIDcuMzA4bDMzLjQwNCA3LjU5OHYyLjQ4N2MwIDExLjQ3MyA5LjMzNCAyMC44MDcgMjAuODA3IDIwLjgwN2g2LjQyNHYyNy43OTloLTE1LjEyN2MtNC4xNCAwLTcuNDk1IDMuMzU2LTcuNDk1IDcuNDk1IDAgNC4xNCAzLjM1NiA3LjQ5NSA3LjQ5NSA3LjQ5NWgzMzMuODQ5YzEuMzc4IDAgMi40OTggMS4xMjEgMi40OTggMi40OTh2MjUuNTJjLTE1LjgzNi0yLjgzLTMyLjQxOC4xMDMtNDYuNzA3IDguODExLTE2Ljc1NCAxMC4yMTEtMzcuNTcgMTAuMjEyLTU0LjMyNCAwLTIxLjU2Ny0xMy4xNDQtNDguMzYxLTEzLjE0NS02OS45MjggMC0xNi43NTQgMTAuMjExLTM3LjU3IDEwLjIxMi01NC4zMjQgMC0yMS41NjctMTMuMTQ0LTQ4LjM2MS0xMy4xNDUtNjkuOTI4IDAtMTYuNzU0IDEwLjIxMi0zNy41NyAxMC4yMTItNTQuMzI0IDBsLTI3LjQ2OS0xNi43NDJ2LTIwLjA4N2gxMC42NzZjNC4xNCAwIDcuNDk1LTMuMzU2IDcuNDk1LTcuNDk1cy0zLjM1Ni03LjQ5NS03LjQ5NS03LjQ5NWgtMTguMTcyYy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2OTcuNTQ5YzAgNC4xMzkgMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNDk3LjAwOWM0LjE0IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTUgMC04OC41MDYgMC0xMTguMDA5IDAtMjEzLjQ4Ny4wMDEtMjEuMTg4LTE3LjIzNy0zOC40MjYtMzguNDI1LTM4LjQyNnptLTE2Mi40MjUtMTk2LjAzN2M3Ljg5OCAwIDE0LjMyNSA2LjQyNiAxNC4zMjUgMTQuMzI0cy02LjQyNiAxNC4zMjUtMTQuMzI1IDE0LjMyNWMtNy44OTggMC0xNC4zMjQtNi40MjYtMTQuMzI0LTE0LjMyNXM2LjQyNi0xNC4zMjQgMTQuMzI0LTE0LjMyNHptLTI2Ny42MDQgMjc2LjQ0LTI0LjI0Ny01LjUxNXYtOTUuMjc3bDI0LjI0Ny01LjUwOXptMTk4LjY1My0xNjQuOTc0Yy45NDctMy4xMjUgMy44NjctNS4zMzMgNy4xNzYtNS4zMzNoNjMuNDJjNC4xMzMgMCA3LjQ5NSAzLjM2MiA3LjQ5NSA3LjQ5NXYxNy44NDFoLTc4LjA5MXptLTE0MC4zMDUtNTEuNTY5di0xNS42MTZjMC0xLjM3OCAxLjEyMS0yLjQ5OCAyLjQ5OC0yLjQ5OGg2Ny4xODVjMS4zNzggMCAyLjQ5OCAxLjEyMSAyLjQ5OCAyLjQ5OHYxNS42MTZjMCAxLjM3OC0xLjEyMSAyLjQ5OC0yLjQ5OCAyLjQ5OGgtNjcuMTg1Yy0xLjM3Ny4wMDEtMi40OTgtMS4xMi0yLjQ5OC0yLjQ5OHptNTUuMDY5IDE3LjQ4OXYxOS41NTNoLTM3Ljk1N3YtMTkuNTUzem0tNTUuMDY2IDM1LjI4M2MwLS40MDcuMzMyLS43MzkuNzM5LS43MzloNzAuNjk2Yy40MDcgMCAuNzM5LjMzMi43MzkuNzM5djE4LjgwMWgtNzIuMTc1di0xOC44MDF6bS0uMDAzIDMzLjc5MWgyNDAuMTQ4djE1My42NTZoLTI0MC4xNDh6bS0zNy41NDIgMTUzLjY1NmMtMy4yMDcgMC01LjgxNi0yLjYwOS01LjgxNi01LjgxNnYtMTQyLjAyM2MwLTMuMjA3IDIuNjA5LTUuODE2IDUuODE2LTUuODE2aDIyLjU1MXYxNTMuNjU2Yy01LjIxMS0uMDAxLTE3LjQ4OC0uMDAxLTIyLjU1MS0uMDAxem0yOTkuMzcyIDQyLjc5aC0yNzcuOTU3di0yNy43OTloMjc3Ljk1NnYyNy43OTl6bTcuNDk1LTQyLjc5NGMtLjAyOSAwLS4wNTguMDA0LS4wODcuMDA0aC0xNC4wOTl2LTE1My42NTZoMjIuNTUxYzMuMjA3IDAgNS44MTYgMi42MDkgNS44MTYgNS44MTZ2MTQyLjAyNGMwIDMuMjA3LTIuNjA5IDUuODE2LTUuODE2IDUuODE2aC04LjI3OGMtLjAyOSAwLS4wNTgtLjAwNC0uMDg3LS4wMDR6bTEyNS43OTEgMTQwLjM0M2MtOS4zNzkgMC00NzEuMTA3IDAtNDgyLjAxOSAwdi00NC45MTZsMTkuNjY3IDExLjk4N2MyMS41NjcgMTMuMTQ1IDQ4LjM2MSAxMy4xNDUgNjkuOTI4IDAgMTYuNzU0LTEwLjIxMSAzNy41Ny0xMC4yMTIgNTQuMzI0IDAgMjEuNTY4IDEzLjE0NSA0OC4zNjEgMTMuMTQ1IDY5LjkyOCAwIDE2Ljc1NC0xMC4yMTEgMzcuNTctMTAuMjEyIDU0LjMyNCAwIDIxLjU2OCAxMy4xNDUgNDguMzYxIDEzLjE0NSA2OS45MjggMCAxNy4wOTctMTAuNDIxIDM3Ljk0MS05Ljk4NiA1NC4zMjQgMCAyMS41NjcgMTMuMTQ0IDQ4LjM2MiAxMy4xNDQgNjkuOTI4IDBsMTkuNjY3LTExLjk4N2MuMDAxIDEwLjU1Ni4wMDEgMjIuMzguMDAxIDQ0LjkxNnptMC02Mi40NzJjLTI5Ljc4OSAxOC4xNTYtMzAuMzUzIDE4LjgzNi0zNi41MjcgMjEuMTMydi00NC4yNTdjMC00LjEzOS0zLjM1Ni03LjQ5NS03LjQ5NS03LjQ5NXMtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2NDcuNDI3Yy0xOS40NzIgMS4xNzItMjguOTg0LTcuNjg4LTM4LjUwNi0xMS44MzZ2LTMwLjA1NGMwLTkuNjQzLTcuODQ2LTE3LjQ4OS0xNy40ODktMTcuNDg5aC0xMC43ODN2LTI3Ljc5OWMxMy4zNDIgMCAyMS42NzYtMTAuMDQ5IDIxLjY3Ni0yMC44MDd2LTMxLjc1NWg0NS4xMDJ2NjIuMzMxYzAgNC4xMzkgMy4zNTYgNy40OTUgNy40OTUgNy40OTVzNy40OTUtMy4zNTYgNy40OTUtNy40OTV2LTY5LjgyNmMwLTQuMTM5LTMuMzU2LTcuNDk1LTcuNDk1LTcuNDk1aC01Mi41OTd2LTM2LjUyN2g3My4xODRjMTIuOTIzIDAgMjMuNDM2IDEwLjUxMyAyMy40MzYgMjMuNDM1djE0My41MnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxMS4wMjQgMjI3LjE1M2gtNzkuNzI2Yy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2OTAuMDdjMCA0LjE0IDMuMzU2IDcuNDk1IDcuNDk1IDcuNDk1aDc5LjcyNmM0LjE0IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTV2LTkwLjA3Yy4wMDEtNC4xMzktMy4zNTUtNy40OTUtNy40OTUtNy40OTV6bS03LjQ5NSA5MC4wN2gtNjQuNzM1di03NS4wNzloNjQuNzM1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAyNDAuOTdoLTY0LjUwNWMtNC4xMzkgMC03LjQ5NSAzLjM1Ni03LjQ5NSA3LjQ5NSAwIDQuMTQgMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTUuMDAxLTQuMTM5LTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAyNzIuMTg4aC02NC41MDVjLTQuMTM5IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTVzMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTVzLTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAzMDMuNDA2aC02NC41MDVjLTQuMTM5IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTVzMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTVzLTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYxLjg5OSAyODcuMTc5aDcuNTQ4bC0yLjkwNCA3LjQzMmMtMS41MDcgMy44NTUuMzk3IDguMjAyIDQuMjUzIDkuNzA5Ljg5Ni4zNSAxLjgxOS41MTYgMi43MjYuNTE2IDIuOTk3IDAgNS44MjYtMS44MDkgNi45ODMtNC43NjlsNi45LTE3LjY1NWMuOTAyLTIuMzA3LjYwNi00LjkxLS43OTEtNi45NTVzLTMuNzEzLTMuMjY4LTYuMTktMy4yNjhoLTcuNTQ4bDIuOTA0LTcuNDMyYzEuNTA3LTMuODU1LS4zOTctOC4yMDItNC4yNTMtOS43MDktMy44NTUtMS41MDktOC4yMDMuMzk2LTkuNzA5IDQuMjUzbC02LjkgMTcuNjU1Yy0uOTAyIDIuMzA3LS42MDYgNC45MS43OTEgNi45NTUgMS4zOTYgMi4wNDQgMy43MTMgMy4yNjggNi4xOSAzLjI2OHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",rNe="PHN2ZyB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtOTQuNzI3IDczLjcwOGE2Ljc1IDYuNzUgMCAxIDAgNi43NSA2Ljc1IDYuNzU2IDYuNzU2IDAgMCAwIC02Ljc1LTYuNzV6bTAgMTBhMy4yNSAzLjI1IDAgMSAxIDMuMjUtMy4yNSAzLjI1NCAzLjI1NCAwIDAgMSAtMy4yNSAzLjI1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNzMuMDgxIDczLjcwOGE2Ljc1IDYuNzUgMCAxIDAgNi43NSA2Ljc1IDYuNzU3IDYuNzU3IDAgMCAwIC02Ljc1LTYuNzV6bTAgMTBhMy4yNSAzLjI1IDAgMSAxIDMuMjUtMy4yNSAzLjI1NCAzLjI1NCAwIDAgMSAtMy4yNSAzLjI1eiIvPg0KICAgICAgICA8Y2lyY2xlIGN4PSI2NC45NjYiIGN5PSI0OC4wMjEiIHI9IjMiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iNzcuNTkxIiBjeT0iNDguMDIxIiByPSIzIi8+DQogICAgICAgIDxjaXJjbGUgY3g9IjkwLjIxNiIgY3k9IjQ4LjAyMSIgcj0iMyIvPg0KICAgICAgICA8Y2lyY2xlIGN4PSIxMDIuODQxIiBjeT0iNDguMDIxIiByPSIzIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjEuNSAzMy41aC0xMTVhMS43NTEgMS43NTEgMCAwIDAgLTEuNzUgMS43NXY1Ny41YTEuNzUxIDEuNzUxIDAgMCAwIDEuNzUgMS43NWgxNS45NDJ2OC4yNWExLjc1MSAxLjc1MSAwIDAgMCAxLjc1IDEuNzVoMTBhMS43NSAxLjc1IDAgMCAwIDEuNzUtMS43NXYtOC4yNWg1Ni4xMTZ2OC4yNWExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1aDEwYTEuNzUxIDEuNzUxIDAgMCAwIDEuNzUtMS43NXYtOC4yNWgxNS45NDJhMS43NTEgMS43NTEgMCAwIDAgMS43NS0xLjc1di01Ny41YTEuNzUxIDEuNzUxIDAgMCAwIC0xLjc1LTEuNzV6bS04OS4wNTggNjcuNWgtNi41di02LjVoNi41em02OS42MTYgMGgtNi41di02LjVoNi41em0xNy42OTItMTBoLTExMS41di01NGgxMTEuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyLjY5MiA3NC4yNWExMC4yNSAxMC4yNSAwIDEgMCAtMTAuMjUtMTAuMjUgMTAuMjYxIDEwLjI2MSAwIDAgMCAxMC4yNSAxMC4yNXptLTEuNzUtMTYuNzYydjQuMDEyYTEuNzUgMS43NSAwIDAgMCAzLjUgMHYtNC4wMTJhNi43NSA2Ljc1IDAgMSAxIC0zLjUgMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyLjY5MiA0OS45NThhMS43NDkgMS43NDkgMCAwIDAgMS43NS0xLjc1di0zYTEuNzUgMS43NSAwIDAgMCAtMy41IDB2M2ExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzguNzkyIDUxLjM1M2ExLjc1IDEuNzUgMCAwIDAgMi4zMzctLjgxNmwxLjMtMi43YTEuNzUgMS43NSAwIDAgMCAtMy4xNTItMS41MmwtMS4zIDIuN2ExLjc1IDEuNzUgMCAwIDAgLjgxNSAyLjMzNnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1LjA1MiA1NS45MTlhMS43NDggMS43NDggMCAwIDAgMS4wODgtLjM4bDIuMzQ4LTEuODY4YTEuNzUgMS43NSAwIDAgMCAtMi4xNzktMi43MzlsLTIuMzQ4IDEuODY4YTEuNzUgMS43NSAwIDAgMCAxLjA5MSAzLjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQuMjU2IDUwLjUzN2ExLjc1IDEuNzUgMCAxIDAgMy4xNTItMS41MjFsLTEuMy0yLjdhMS43NSAxLjc1IDAgMCAwIC0zLjE1MiAxLjUyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYuOSA1My42NzEgMi4zNDkgMS44NjhhMS43NSAxLjc1IDAgMCAwIDIuMTc4LTIuNzRsLTIuMzQ4LTEuODY3YTEuNzUgMS43NSAwIDEgMCAtMi4xNzkgMi43Mzl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01OC44MDggNzAuMjkyaDUwLjE5MmExLjc1MSAxLjc1MSAwIDAgMCAxLjc1LTEuNzV2LTEwYTEuNzUgMS43NSAwIDAgMCAtMS43NS0xLjc1aC01MC4xOTJhMS43NDkgMS43NDkgMCAwIDAgLTEuNzUgMS43NXYxMGExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1em0xLjc1LTEwaDQ2LjY5MnY2LjVoLTQ2LjY5MnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2LjEzNSA4Ny4yMDhoMzMuMTE1YTEuNzUgMS43NSAwIDAgMCAwLTMuNWgtMzMuMTE1YTEuNzUgMS43NSAwIDAgMCAwIDMuNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",oNe="PHN2ZyBoZWlnaHQ9IjYwMHB0IiB2aWV3Qm94PSItNDUgLTE5IDYwMCA2MDAuMDAxIiB3aWR0aD0iNjAwcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5OC4yMTQ4NDQgMGgtNTAuOTc2NTYzYy0xOC4xOTUzMTIuMDI3MzQzOC0zMi45MzM1OTMgMTQuNzY5NTMxLTMyLjk2NDg0MyAzMi45NjQ4NDR2MjQuODcxMDk0aC0xNDQuODI0MjE5Yy02MS40Mzc1LjA5Mzc1LTExMi4yNTM5MDcgNDcuODcxMDkzLTExNi4xMzI4MTMgMTA5LjE4NzVoLTM5LjA2NjQwNmMtNS41MTU2MjUgMC05Ljk4ODI4MSA0LjQ2ODc1LTkuOTg4MjgxIDkuOTg4MjgxdjMwLjUxMTcxOWgtMTAuMjg1MTU3Yy0zLjcwNzAzMSAwLTcuMTA1NDY4IDIuMDQ2ODc0LTguODM1OTM3IDUuMzI4MTI0bC04NS43Njk1MzEgMTYyLjU1NDY4OGMtMS42MzY3MTkgMy4wOTc2NTYtMS41MzEyNSA2LjgyNDIxOS4yNzczNDQgOS44MjQyMTkgMS44MDg1OTMgMyA1LjA1MDc4MSA0LjgyODEyNSA4LjU1NDY4NyA0LjgyODEyNWgxMDguMTIxMDk0Yy4xNzU3ODEgMy45NTcwMzEuNjc1NzgxIDcuODg2NzE4IDEuNDk2MDkzIDExLjc2MTcxOCA3LjU3MDMxMyAzNS4wNTQ2ODggMzguNTU4NTk0IDYwLjA5Mzc1IDc0LjQyNTc4MiA2MC4xMjUgMzUuODcxMDk0LjAzNTE1NyA2Ni45MDIzNDQtMjQuOTQ5MjE4IDc0LjUzNTE1Ni01OS45OTYwOTMuODQzNzUtMy45MTAxNTcgMS4zNjcxODgtNy44OTA2MjUgMS41NTA3ODEtMTEuODk0NTMxaDEwOC4xMzY3MTljMy41IDAgNi43NS0xLjgzMjAzMiA4LjU1NDY4OC00LjgzMjAzMiAxLjgwODU5My0zIDEuOTE3OTY4LTYuNzI2NTYyLjI3NzM0My05LjgyMDMxMmwtODUuNzY5NTMxLTE2Mi41NDY4NzVjLTEuNzMwNDY5LTMuMjg5MDYzLTUuMTQ0NTMxLTUuMzM5ODQ0LTguODU5Mzc1LTUuMzMyMDMxaC0xMC4yNjE3MTl2LTMwLjUxMTcxOWMwLTUuNTE5NTMxLTQuNDcyNjU2LTkuOTg4MjgxLTkuOTg4MjgxLTkuOTg4MjgxaC00NC41MzUxNTZjMi4xNDA2MjUtMjIuNDcyNjU3IDIwLjk4ODI4MS0zOS42NDQ1MzIgNDMuNTYyNS0zOS42OTkyMTloMTQ0LjgwNDY4N3YyOC4xNjAxNTZjLjAzNTE1NiAxOC4xOTE0MDYgMTQuNzc3MzQ0IDMyLjkzMzU5NCAzMi45Njg3NSAzMi45NjA5MzdoNTAuOTgwNDY5YzUuNTE1NjI1IDAgOS45ODgyODEtNC40NjQ4NDMgOS45ODgyODEtOS45ODgyODF2LTE2OC40Njg3NWMwLTUuNTExNzE5LTQuNDY0ODQ0LTkuOTgwNDY4NS05Ljk3NjU2Mi05Ljk4ODI4MXptLTI1MC45MTc5NjkgMzk3LjYzMjgxMmMtNS41NjY0MDYgMjUuOTMzNTk0LTI4LjUwNzgxMyA0NC40NTMxMjYtNTUuMDMxMjUgNDQuNDIxODc2LTI2LjUzMTI1LS4wMjczNDQtNDkuNDI1NzgxLTE4LjU5NzY1Ny01NC45MzM1OTQtNDQuNTQ2ODc2LS41NTQ2ODctMi40NTMxMjQtLjkyNTc4MS00Ljk0OTIxOC0xLjEyMTA5My03LjQ1MzEyNGgxMTIuMjM0Mzc0Yy0uMTk5MjE4IDIuNTUwNzgxLS41ODU5MzcgNS4wODIwMzEtMS4xNDg0MzcgNy41NzgxMjR6bTExMi42MDU0NjktMjcuNTc0MjE4aC0xMDEuMzk0NTMyYy0uMDY2NDA2IDAtLjEzNjcxOCAwLS4yMDMxMjQgMGgtMTMxLjk2MDkzOGMtLjA3MDMxMiAwLS4xMzY3MTkgMC0uMjA3MDMxIDBoLTEwMS4zOTQ1MzFsNzUuMjUzOTA2LTE0Mi41NTQ2ODhoMTg0LjY4MzU5NHptLTk5LjQ3MjY1Ni0xNjIuNTM1MTU2aC0xMzYuMTkxNDA3di0yMC41MTk1MzJoMTM2LjE5MTQwN3ptOC45OTYwOTMtMTAwLjE4MzU5NGMtMzMuNTM1MTU2LjI3MzQzNy02MS4yNDYwOTMgMjYuMjM4MjgxLTYzLjY5NTMxMiA1OS42ODM1OTRoLTMyLjQzMzU5NGMzLjg0NzY1Ni01MC4yNzM0MzggNDUuNzMwNDY5LTg5LjEyNSA5Ni4xNTIzNDQtODkuMTg3NWgxNDQuODA0Njg3djI5LjUwMzkwNnptMjE4Ljc2OTUzMSA2MS4xNDA2MjVoLTQwLjk4NDM3NGMtNy4xNjc5NjktLjAxOTUzMS0xMi45NzI2NTctNS44MjQyMTktMTIuOTkyMTg4LTEyLjk4ODI4MXYtMTIyLjUwNzgxM2MuMDE5NTMxLTcuMTYwMTU2IDUuODI0MjE5LTEyLjk2NDg0NCAxMi45OTIxODgtMTIuOTg0Mzc1aDQwLjk4NDM3NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im05MC41MTU2MjUgNDE1Ljk5MjE4OGMwLTUuNTE1NjI2LTQuNDcyNjU2LTkuOTg4MjgyLTkuOTg4MjgxLTkuOTg4MjgyaC02MS4zOTg0MzhjLTUuNTE1NjI1IDAtOS45ODgyODEgNC40NzI2NTYtOS45ODgyODEgOS45ODgyODIgMCA1LjUxOTUzMSA0LjQ3MjY1NiA5Ljk5MjE4NyA5Ljk4ODI4MSA5Ljk5MjE4N2g2MS4zOTg0MzhjNS41MTU2MjUgMCA5Ljk4ODI4MS00LjQ3MjY1NiA5Ljk4ODI4MS05Ljk5MjE4N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTcuNTM5MDYyIDQ3Mi42NzE4NzUtNDAuMDcwMzEyIDM3Ljc0NjA5NGMtMi42NDA2MjUgMi40MzM1OTMtMy43NzM0MzggNi4xMDE1NjItMi45NTcwMzEgOS41OTc2NTYuODEyNSAzLjUwMzkwNiAzLjQ0MTQwNiA2LjI5Njg3NSA2Ljg4NjcxOSA3LjMxNjQwNiAzLjQ0NTMxMiAxLjAyMzQzOCA3LjE3NTc4MS4xMTcxODggOS43NjU2MjQtMi4zNzVsNDAuMDcwMzEzLTM3LjczODI4MWMyLjY0MDYyNS0yLjQzMzU5NCAzLjc2OTUzMS02LjEwMTU2MiAyLjk1NzAzMS05LjYwNTQ2OS0uODE2NDA2LTMuNDk2MDkzLTMuNDQ1MzEyLTYuMjkyOTY5LTYuODg2NzE4LTcuMzE2NDA2LTMuNDQ5MjE5LTEuMDE5NTMxLTcuMTc1NzgyLS4xMTMyODEtOS43NjU2MjYgMi4zNzV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzY1LjU0Njg3NSA0MDYuMDAzOTA2aC02MS4zOTA2MjVjLTUuNTE5NTMxIDAtOS45OTIxODggNC40NzI2NTYtOS45OTIxODggOS45ODgyODIgMCA1LjUxOTUzMSA0LjQ3MjY1NyA5Ljk5MjE4NyA5Ljk5MjE4OCA5Ljk5MjE4N2g2MS4zOTA2MjVjNS41MTk1MzEgMCA5Ljk4ODI4MS00LjQ3MjY1NiA5Ljk4ODI4MS05Ljk5MjE4NyAwLTUuNTE1NjI2LTQuNDY4NzUtOS45ODgyODItOS45ODgyODEtOS45ODgyODJ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY3LjA0Njg3NSA0NzIuNjcxODc1Yy0yLjU4OTg0NC0yLjQ4ODI4MS02LjMxNjQwNi0zLjM5NDUzMS05Ljc2NTYyNS0yLjM3NS0zLjQ0NTMxMiAxLjAyMzQzNy02LjA3NDIxOSAzLjgyMDMxMy02Ljg4NjcxOSA3LjMxNjQwNi0uODE2NDA2IDMuNTAzOTA3LjMxNjQwNyA3LjE3MTg3NSAyLjk1MzEyNSA5LjYwNTQ2OWw0MC4wNjI1IDM3LjcyMjY1NmMyLjU4OTg0NCAyLjQ5MjE4OCA2LjMxNjQwNiAzLjQwMjM0NCA5Ljc2NTYyNSAyLjM3NSAzLjQ0MTQwNy0xLjAxOTUzMSA2LjA3MDMxMy0zLjgxMjUgNi44ODY3MTktNy4zMTY0MDYuODEyNS0zLjQ5NjA5NC0uMzE2NDA2LTcuMTY0MDYyLTIuOTU3MDMxLTkuNjAxNTYyem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE5Mi4yNzM0MzggNDkwLjkzMzU5NGMtNS41MTU2MjYgMC05Ljk4ODI4MiA0LjQ3MjY1Ni05Ljk4ODI4MiA5Ljk5MjE4N3Y1MC44NDc2NTdjMCAuMjQ2MDkzLS4wMjM0MzcuNTAzOTA2LS4wMjM0MzcuNzM4MjgxIDAgNS41MTU2MjUgNC40NzI2NTYgOS45ODgyODEgOS45ODgyODEgOS45ODgyODEuNDI1NzgxLS4wMDM5MDYuODU1NDY5LS4wMjczNDQgMS4yNzczNDQtLjA4NTkzOCA0Ljk5MjE4Ny0uNjI4OTA2IDguNzM4MjgxLTQuODc4OTA2IDguNzM4MjgxLTkuOTA2MjV2LTUxLjU4MjAzMWMwLTUuNTE5NTMxLTQuNDcyNjU2LTkuOTkyMTg3LTkuOTkyMTg3LTkuOTkyMTg3em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",MNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ3OC41MTEsODguNjIyQzQwMy42OTQsNjkuMjIzLDMyOC40MzcsMzkuMDE3LDI2MC44NzgsMS4yNjljLTMuMDMtMS42OTItNi43MjMtMS42OTMtOS43NTUsMA0KCQkJQzE4MS42MjEsNDAuMDk5LDExMC40MzIsNjguNjcyLDMzLjQ4OSw4OC42MjNjLTQuNDEsMS4xNDQtNy40OSw1LjEyNC03LjQ5LDkuNjh2MTEwLjM5NGMwLDExMy41MzUsNTUuMjkyLDE4OC42MzksMTAxLjY3OCwyMzEuNjUNCgkJCWM0OS43NTcsNDYuMTM4LDEwNy40Niw3MS42NTUsMTI4LjMyNCw3MS42NTVjMjAuODY0LDAsNzguNTY3LTI1LjUxNywxMjguMzI0LTcxLjY1NQ0KCQkJYzQ2LjM4NC00My4wMTEsMTAxLjY3OC0xMTguMTE0LDEwMS42NzgtMjMxLjY1Vjk4LjMwMkM0ODYuMDAyLDkzLjc0Niw0ODIuOTIyLDg5Ljc2Niw0NzguNTExLDg4LjYyMnogTTM3MC43MjYsNDI1LjY3OA0KCQkJYy0yNy41NTcsMjUuNTUzLTU0LjMzNiw0MS42ODUtNzEuOTUsNTAuNzE4Yy0yMi4zMTksMTEuNDQ3LTM3LjgxLDE1LjYwMy00Mi43NzYsMTUuNjAzYy00Ljk2NiwwLTIwLjQ1Ni00LjE1NS00Mi43NzYtMTUuNjAzDQoJCQljLTE3LjYxMi05LjAzMy00NC4zOTItMjUuMTY1LTcxLjk1LTUwLjcxOGMtNDMuNDY0LTQwLjMwMy05NS4yNzYtMTEwLjY2My05NS4yNzYtMjE2Ljk4M1YxMDYuMDA4DQoJCQljNzMuOTY0LTE5LjgsMTQyLjgwMS00Ny41MjMsMjEwLjAwMy04NC41NzRjNjUuNDk4LDM2LjA1OSwxMzcuODI3LDY1LjE4NSwyMTAsODQuNTcxdjEwMi42OWgwLjAwMQ0KCQkJQzQ2Ni4wMDEsMzE1LjAxNSw0MTQuMTksMzg1LjM3NSwzNzAuNzI2LDQyNS42Nzh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NDMuNzkzLDExNS4zNjhjLTYzLjMzNi0xOC40MTMtMTI0LjkzNi00My40MjQtMTgzLjA4Ny03NC4zMzdjLTIuOTM4LTEuNTYzLTYuNDYxLTEuNTYtOS4zOTcsMC4wMDYNCgkJCUMxOTMuMDY5LDcyLjA3OSwxMzEuNDcsOTcuMDk0LDY4LjIyLDExNS4zODdjLTQuMjc3LDEuMjM3LTcuMjIyLDUuMTUzLTcuMjIyLDkuNjA2djgzLjcwMmMwLDM5LjA3Nyw3LjQwNSw3Ni4xNjEsMjIuMDA4LDExMC4yMjINCgkJCWMxNC41MywzMy44OTEsMzYuMjAxLDY0LjgyLDY0LjQwOSw5MS45MzNjMjAuMTc1LDE5LjM5LDQzLjQ2OSwzNi40NzcsNjcuMzY3LDQ5LjQxM2M0LjI4MiwyLjMxOCwyNi4zMDUsMTQuMDAzLDM5LjQwMiwxNi40MjENCgkJCWMwLjYsMC4xMSwxLjIwNywwLjE2NiwxLjgxNSwwLjE2NmMwLjYwOCwwLDEuMjE1LTAuMDU2LDEuODE1LTAuMTY2YzEzLjA5Ny0yLjQxOCwzNS4xMi0xNC4xMDMsMzkuNDAyLTE2LjQyMQ0KCQkJYzIzLjg5NS0xMi45MzYsNDcuMTktMzAuMDIzLDY3LjM2Ny00OS40MTNjMjguMjA4LTI3LjExMSw0OS44NzgtNTguMDQxLDY0LjQwOS05MS45MzNjMTQuNjAzLTM0LjA2LDIyLjAwOC03MS4xNDQsMjIuMDA4LTExMC4yMjINCgkJCXYtODMuNzI0QzQ1MS4wMDEsMTIwLjUyNCw0NDguMDYzLDExNi42MTEsNDQzLjc5MywxMTUuMzY4eiBNNDMxLjAwMSwyMDguNjk1YzAsNzMuMzc2LTI3LjAwOCwxMzYuNTM4LTgwLjI3NiwxODcuNzM0DQoJCQljLTE4Ljg5OCwxOC4xNjItNDAuNjkzLDM0LjE1My02My4wMjksNDYuMjQ1Yy0xMC4xNjcsNS41MDMtMjMuODkyLDExLjkxOS0zMS42OTcsMTMuOTM0Yy03LjgwNS0yLjAxNS0yMS41My04LjQzMS0zMS42OTYtMTMuOTM0DQoJCQljLTIyLjMzNy0xMi4wOTMtNDQuMTMyLTI4LjA4NC02My4wMjktNDYuMjQ1Yy01My4yNjctNTEuMTk1LTgwLjI3Ni0xMTQuMzU5LTgwLjI3Ni0xODcuNzM0VjEzMi40OA0KCQkJYzYwLjM1NC0xNy45NjksMTE5LjE3Mi00MS45MzEsMTc1LjAxOS03MS4zMDZjNTUuNzU3LDI5LjI1MSwxMTQuNTY5LDUzLjIwNCwxNzQuOTgzLDcxLjI3NFYyMDguNjk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTczLjAyNywzNTguMzA1bC0wLjItMC4yMTVjLTMuNzAxLTQuMDU1LTkuOTg3LTQuMzY3LTE0LjA3My0wLjY4OWMtNC4xMDUsMy42OTQtNC40MzgsMTAuMDE3LTAuNzQ0LDE0LjEyMmwwLjIsMC4yMTUNCgkJCWMxLjk3MSwyLjE1OCw0LjY3MywzLjI1Niw3LjM4NywzLjI1NmMyLjM4MywwLDQuNzc1LTAuODQ4LDYuNjg2LTIuNTY3QzE3Ni4zODgsMzY4LjczMywxNzYuNzIxLDM2Mi40MDksMTczLjAyNywzNTguMzA1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjI2Ljk2Myw0MDMuNjk1Yy0xMi4wNDYtNy42MDItMjMuNjQ1LTE2LjM2NC0zNC40NzMtMjYuMDQ0Yy00LjExNy0zLjY4Mi0xMC40MzktMy4zMjctMTQuMTIsMC43OQ0KCQkJYy0zLjY4LDQuMTE4LTMuMzI2LDEwLjQzOSwwLjc5MiwxNC4xMmMxMS42NTMsMTAuNDE4LDI0LjE0NSwxOS44NTQsMzcuMTI5LDI4LjA0OGMxLjY1NywxLjA0NSwzLjUwMiwxLjU0NCw1LjMyNywxLjU0NA0KCQkJYzMuMzE4LDAsNi41NjQtMS42NSw4LjQ2Ni00LjY2NEMyMzMuMDMyLDQxMi44MTgsMjMxLjYzNSw0MDYuNjQyLDIyNi45NjMsNDAzLjY5NXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwOC44OTgsMjA5LjA3N3YtMzIuOTIxYzAtMjkuMTY4LTIzLjczLTUyLjg5OC01Mi45LTUyLjg5OGMtMjkuMTY4LDAtNTIuODk4LDIzLjczLTUyLjg5OCw1Mi44OTh2MzIuOTIxDQoJCQljLTExLjg5OCwwLjQyOS0yMS40NDcsMTAuMjM1LTIxLjQ0NywyMi4yMzZ2NzYuNzY5Yy0wLjAwMSwxMi4yNzMsOS45ODQsMjIuMjU3LDIyLjI1NywyMi4yNTdIMzA4LjA5DQoJCQljMTIuMjczLDAsMjIuMjU4LTkuOTg0LDIyLjI1OC0yMi4yNTd2LTc2Ljc2OUMzMzAuMzQ4LDIxOS4zMTEsMzIwLjc5OCwyMDkuNTA0LDMwOC44OTgsMjA5LjA3N3ogTTIyMy4wOTksMTc2LjE1Ng0KCQkJYzAtMTguMTQsMTQuNzU5LTMyLjg5OCwzMi45LTMyLjg5OGMxOC4xNCwwLDMyLjg5OCwxNC43NTgsMzIuODk4LDMyLjg5OHYzMi45aC02NS43OTlWMTc2LjE1NnogTTMxMC4zNDcsMzA4LjA4Mw0KCQkJYzAsMS4yMjQtMS4wMzQsMi4yNTctMi4yNTgsMi4yNTdIMjAzLjkwOGMtMS4yMjQsMC0yLjI1OC0xLjAzMy0yLjI1OC0yLjI1N3YtNzYuNzY5aDAuMDAxYzAtMS4yMjQsMS4wMzQtMi4yNTcsMi4yNTgtMi4yNTdoOS4xODkNCgkJCWg4NS43OTloOS4xOTJjMS4yMjQsMCwyLjI1OCwxLjAzMywyLjI1OCwyLjI1N1YzMDguMDgzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDI0OS42NGMtNy43MDEsMC0xMy45ODIsNi4yODEtMTMuOTgyLDEzLjk4MmMwLDMuNzg2LDEuNTIzLDcuMjI1LDMuOTgyLDkuNzQ2djkuNzg3YzAsNS41MjIsNC40NzcsMTAsMTAsMTANCgkJCWM1LjUyMywwLDEwLTQuNDc4LDEwLTEwdi05Ljc4N2MyLjQ1OS0yLjUyMiwzLjk4Mi01Ljk2LDMuOTgyLTkuNzQ2QzI2OS45ODIsMjU1LjkyMSwyNjMuNzAxLDI0OS42NCwyNTYsMjQ5LjY0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",nNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00OTYuODgyODEyIDBoLTQ4MS43NjU2MjRjLTguMzQ3NjU3IDAtMTUuMTE3MTg4IDYuNzY5NTMxLTE1LjExNzE4OCAxNS4xMTcxODh2NDgxLjc2NTYyNGMwIDguMzQ3NjU3IDYuNzY5NTMxIDE1LjExNzE4OCAxNS4xMTcxODggMTUuMTE3MTg4aDQ4MS43NjU2MjRjOC4zNDc2NTcgMCAxNS4xMTcxODgtNi43Njk1MzEgMTUuMTE3MTg4LTE1LjExNzE4OHYtNDgxLjc2NTYyNGMwLTguMzQ3NjU3LTYuNzY5NTMxLTE1LjExNzE4OC0xNS4xMTcxODgtMTUuMTE3MTg4em0tNDA2LjE3NTc4MSA0MjEuMjkyOTY5di04OC42OTUzMTNoMTE5LjA3NDIxOXY4OC42OTUzMTN6bS02MC40NzI2NTYtMzkxLjA1ODU5NGg2OC40NTMxMjV2MzAuMjM4MjgxaC02OC40NTMxMjV6bTAgNjAuNDcyNjU2aDY4LjQ1MzEyNXYzMC4yMzgyODFoLTY4LjQ1MzEyNXptMzUyLjgzOTg0NC01OC40NTMxMjV2MjguMjE4NzVoLTI1NC4xNDg0Mzh2LTI4LjIxODc1em0tMjU0LjE0ODQzOCAyMzkuODcxMDk0aDI1NC4xNTIzNDR2MzAuMjM4MjgxaC0yNTQuMTUyMzQ0em0wLTMwLjIzNDM3NXYtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0wLTYwLjQ3MjY1NnYtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0wLTYwLjQ3MjY1N3YtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0tOTguNjkxNDA2IDMwLjIzNDM3Nmg2OC40NTMxMjV2MzAuMjM4MjgxaC02OC40NTMxMjV6bTAgNjAuNDcyNjU2aDY4LjQ1MzEyNXYzMC4yMzgyODFoLTY4LjQ1MzEyNXptMCA2MC40NzI2NTZoNjguNDUzMTI1djMwLjIzODI4MWgtNjguNDUzMTI1em0zODMuMDc4MTI1IDBoNjguNDUzMTI1djMwLjIzODI4MWgtNjguNDUzMTI1em02OC40NTMxMjUtMzAuMjM0Mzc1aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU2aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU3aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU2aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bS0yNDEuNzUgMjcyLjEyNWgzMC4yMzgyODF2ODguNjk1MzEzaC0zMC4yMzgyODF6bTYwLjQ3NjU2MyAwaDEyMC44MDA3ODF2ODguNjk1MzEzaC0xMjAuODAwNzgxem0tMjcwLjI1NzgxMyAxNDkuMTY3OTY5di0xNDkuMTY3OTY5aDMwLjIzODI4MXYxMDMuODEyNWMwIDguMzQ3NjU2IDYuNzY5NTMyIDE1LjExNzE4OCAxNS4xMTcxODggMTUuMTE3MTg4aDM2MC44MjAzMTJjOC4zNDc2NTYgMCAxNS4xMTcxODgtNi43Njk1MzIgMTUuMTE3MTg4LTE1LjExNzE4OHYtMTAzLjgxMjVoMzAuMjM4MjgxdjE0OS4xNjc5Njl6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",aNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0yIDUxMiA1MTIiIHdpZHRoPSI1MTJwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzQ4LjI0NjA5NCAzNzYuNzg1MTU2Yy0zLjI1LTIuNjA1NDY4LTcuOTkyMTg4LTIuMDgyMDMxLTEwLjU5NzY1NiAxLjE2NDA2M2wtMjguOTQ5MjE5IDM2LjA5Mzc1Yy0zLjk4NDM3NSA0Ljk2ODc1LS4zNjcxODggMTIuMjU3ODEyIDUuODc1IDEyLjI1NzgxMiAyLjIxMDkzNyAwIDQuMzk4NDM3LS45Njg3NSA1Ljg4NjcxOS0yLjgyNDIxOWwyOC45NDkyMTgtMzYuMDkzNzVjMi42MDU0NjktMy4yNSAyLjA4NTkzOC03Ljk5MjE4Ny0xLjE2NDA2Mi0xMC41OTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkwLjM1OTM3NSAzNTguNzM4MjgxYy0zLjI1LTIuNjA1NDY5LTcuOTkyMTg3LTIuMDgyMDMxLTEwLjU5NzY1NiAxLjE2NDA2M2wtMjguOTQ5MjE5IDM2LjA5Mzc1Yy0zLjk4NDM3NSA0Ljk2ODc1LS4zNjcxODggMTIuMjU3ODEyIDUuODc1IDEyLjI1NzgxMiAyLjIxMDkzOCAwIDQuMzk4NDM4LS45Njg3NSA1Ljg4NjcxOS0yLjgyNDIxOGwyOC45NDkyMTktMzYuMDkzNzVjMi42MDU0NjgtMy4yNDYwOTQgMi4wODU5MzctNy45OTIxODgtMS4xNjQwNjMtMTAuNTk3NjU3em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTExMS43NSA0MjIuMDUwNzgxYzIuMTA5Mzc1IDAgNC4yMDcwMzEtLjg3ODkwNiA1LjY5OTIxOS0yLjU5NzY1NmwzOS42MTMyODEtNDUuNjQ0NTMxYzIuNzMwNDY5LTMuMTQ0NTMyIDIuMzk0NTMxLTcuOTA2MjUtLjc1LTEwLjYzMjgxMy0zLjE0NDUzMS0yLjczMDQ2OS03LjkxMDE1Ni0yLjM5NDUzMS0xMC42MzY3MTkuNzVsLTM5LjYxNzE4NyA0NS42NDQ1MzFjLTQuMjUzOTA2IDQuOTAyMzQ0LS42OTUzMTMgMTIuNDgwNDY5IDUuNjkxNDA2IDEyLjQ4MDQ2OXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTYuNjIxMDk0IDM3Ni43ODUxNTZjLTMuMjUtMi42MDU0NjgtNy45OTYwOTQtMi4wODIwMzEtMTAuNjAxNTYzIDEuMTY0MDYzbC0xNC40NzI2NTYgMTguMDQ2ODc1Yy0yLjYwNTQ2OSAzLjI1LTIuMDgyMDMxIDcuOTk2MDk0IDEuMTY0MDYzIDEwLjU5NzY1NiAzLjI2OTUzMSAyLjYyNSA4LjAxMTcxOCAyLjA2MjUgMTAuNTk3NjU2LTEuMTY0MDYybDE0LjQ3NjU2Mi0xOC4wNDY4NzZjMi42MDU0NjktMy4yNSAyLjA4MjAzMi03Ljk5MjE4Ny0xLjE2NDA2Mi0xMC41OTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDM3Ljk5MjE4OCAzOTQuODMyMDMxYy0zLjI1LTIuNjA1NDY5LTcuOTkyMTg4LTIuMDgyMDMxLTEwLjU5NzY1NyAxLjE2NDA2M2wtMTQuNDc2NTYyIDE4LjA0Njg3NWMtMi42MDU0NjkgMy4yNS0yLjA4MjAzMSA3Ljk5MjE4NyAxLjE2NDA2MiAxMC41OTc2NTYgMy4yNjk1MzEgMi42MjEwOTQgOC4wMTE3MTkgMi4wNjI1IDEwLjYwMTU2My0xLjE2NDA2M2wxNC40NzI2NTYtMTguMDQ2ODc0YzIuNjA1NDY5LTMuMjQ2MDk0IDIuMDgyMDMxLTcuOTkyMTg4LTEuMTY0MDYyLTEwLjU5NzY1N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTYuNDcyNjU2IDM2Mi45ODQzNzVjLTMuMjUtMi42MDU0NjktNy45OTIxODctMi4wODIwMzEtMTAuNTk3NjU2IDEuMTY0MDYzbC0xNC40NzY1NjIgMTguMDUwNzgxYy0yLjYwNTQ2OSAzLjI0NjA5My0yLjA4MjAzMiA3Ljk5MjE4NyAxLjE2NDA2MiAxMC41OTc2NTYgMy4yNjk1MzEgMi42MjEwOTQgOC4wMTE3MTkgMi4wNjI1IDEwLjU5NzY1Ni0xLjE2NDA2M2wxNC40NzI2NTYtMTguMDQ2ODc0YzIuNjA5Mzc2LTMuMjUgMi4wODU5MzgtNy45OTYwOTQtMS4xNjAxNTYtMTAuNjAxNTYzem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwNC40NjA5MzggMGMtMTcuMjUzOTA3IDAtNDY2LjU5Mzc1IDAtNDk2LjkyMTg3NiAwLTQuMTYwMTU2IDAtNy41MzkwNjIgMy4zNjcxODgtNy41MzkwNjIgNy41MzkwNjJ2NDkzLjg2NzE4OGMwIDQuMTcxODc1IDMuMzc4OTA2IDcuNTM5MDYyIDcuNTM5MDYyIDcuNTM5MDYyaDQyMi4yMTA5MzhjNC4xNjAxNTYgMCA3LjUzOTA2Mi0zLjM2NzE4NyA3LjUzOTA2Mi03LjUzOTA2MiAwLTQuMTY0MDYyLTMuMzc4OTA2LTcuNTQyOTY5LTcuNTM5MDYyLTcuNTQyOTY5aC00MTQuNjcxODc1di0xNDMuODgyODEyaDE0LjM2NzE4N3Y5MC45NTcwMzFjMCA0LjE2NDA2MiAzLjM3NSA3LjUzOTA2MiA3LjUzOTA2MyA3LjUzOTA2MmgxMjYuNDAyMzQ0YzQuMTYwMTU2IDAgNy41MzkwNjItMy4zNzUgNy41MzkwNjItNy41MzkwNjIgMC00LjE2MDE1Ni0zLjM3ODkwNi03LjUzOTA2Mi03LjUzOTA2Mi03LjUzOTA2MmgtMTE4Ljg2MzI4MXYtODMuNDE3OTY5aDE0LjUzOTA2MnYyNi4xMjEwOTNjMCA0LjE2NDA2MyAzLjM3NSA3LjUzOTA2MyA3LjUzOTA2MiA3LjUzOTA2MyA0LjE2NDA2MyAwIDcuNTM5MDYzLTMuMzc1IDcuNTM5MDYzLTcuNTM5MDYzdi0yNi4xMjEwOTNoMTUzLjcxMDkzN3Y4My40MTc5NjloLTM0LjMwODU5M2MtNC4xNjAxNTcgMC03LjUzOTA2MyAzLjM3ODkwNi03LjUzOTA2MyA3LjUzOTA2MiAwIDQuMTY0MDYyIDMuMzc4OTA2IDcuNTM5MDYyIDcuNTM5MDYzIDcuNTM5MDYyaDI4MS40NzI2NTZjNC4xNjQwNjMgMCA3LjUzOTA2My0zLjM3NSA3LjUzOTA2My03LjUzOTA2MnYtOTAuOTU3MDMxaDE0LjM2NzE4N3YxNDMuODgyODEyaC0zNy4wMTU2MjVjLTQuMTYwMTU2IDAtNy41MzkwNjIgMy4zNzg5MDctNy41MzkwNjIgNy41NDI5NjkgMCA0LjE3MTg3NSAzLjM3ODkwNiA3LjUzOTA2MiA3LjUzOTA2MiA3LjUzOTA2Mmg0NC41NTQ2ODhjNC4xNjAxNTYgMCA3LjUzOTA2Mi0zLjM2NzE4NyA3LjUzOTA2Mi03LjUzOTA2MiAwLTUzLjg2MzI4MSAwLTQzNy40OTYwOTQgMC00OTMuODY3MTg4IDAtNC4xNzE4NzQtMy4zNzg5MDYtNy41MzkwNjItNy41MzkwNjItNy41MzkwNjJ6bS00NDUuMzk4NDM4IDMzNC45MDIzNDRjLTEzLjcxNDg0NCAwLTMwLjA1ODU5NCAwLTQzLjk4NDM3NSAwIDAtOS41NTA3ODIgMC0xNi4yNTc4MTMgMC0yNi43ODEyNWg0My45ODQzNzV6bTAtNDEuODU5Mzc1aC00My45ODQzNzV2LTI2Ljc4OTA2M2g0My45ODQzNzV6bTAtNDEuODY3MTg4aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzg5MDYyaDQzLjk4NDM3NXptMC00MS44NzEwOTRoLTQzLjk4NDM3NXYtMjYuNzc3MzQzaDQzLjk4NDM3NXptMC00MS44NTkzNzRjLTkuNzAzMTI1IDAtMzMuOTE3OTY5IDAtNDMuOTg0Mzc1IDB2LTI2Ljc4OTA2M2g0My45ODQzNzV6bTAtNDEuODY3MTg4aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzgxMjVoNDMuOTg0Mzc1em0xNS4wNzgxMjUtMjYuNzgxMjVoMzYzLjcxODc1djI2Ljc4MTI1aC0zNjMuNzE4NzV6bTAgODMuNzE4NzVoMjg5LjMwMDc4MWM0LjE2NDA2MyAwIDcuNTM5MDYzLTMuMzY3MTg3IDcuNTM5MDYzLTcuNTM5MDYzIDAtNC4xNjAxNTYtMy4zNzUtNy41MzkwNjItNy41MzkwNjMtNy41MzkwNjItMS4yMzQzNzUgMC0yODIuOTQxNDA2IDAtMjg5LjMwMDc4MSAwdi0yNi43ODEyNWgzNjMuNzE4NzV2MjYuNzgxMjVoLTQ0LjI1NzgxM2MtNC4xNjQwNjIgMC03LjUzOTA2MiAzLjM3ODkwNi03LjUzOTA2MiA3LjUzOTA2MiAwIDQuMTcxODc2IDMuMzc1IDcuNTM5MDYzIDcuNTM5MDYyIDcuNTM5MDYzaDQ0LjI1NzgxM3YyNi43ODkwNjNjLTExLjYyNSAwLTM1NC40OTIxODcgMC0zNjMuNzE4NzUgMHptMCA0MS44NzEwOTRoMzYzLjcxODc1djI2Ljc3NzM0M2gtMzYzLjcxODc1em0wIDQxLjg1OTM3NWgzNjMuNzE4NzV2MjYuNzg5MDYyaC0zNjMuNzE4NzV6bTAgNDEuODY3MTg3aDM2My43MTg3NXYyNi43ODEyNWgtMzYzLjcxODc1em0wIDQxLjg1OTM3NWgzNjMuNzE4NzV2MjYuNzg5MDYzaC0zNjMuNzE4NzV6bTAgNjguNjQ4NDM4di0yNi43ODEyNWgzNjMuNzE4NzV2MjYuNzgxMjVjLTM1LjYxNzE4NyAwLTMyNi45NTMxMjUgMC0zNjMuNzE4NzUgMHptMzkzLjMzNTkzNyA5OC40OTYwOTRoLTE4My4zMjgxMjR2LTQwLjY2Nzk2OWMwLTQuMTY0MDYzLTMuMzc1LTcuNTM5MDYzLTcuNTM5MDYzLTcuNTM5MDYzcy03LjUzOTA2MyAzLjM3NS03LjUzOTA2MyA3LjUzOTA2M3Y0MC42Njc5NjloLTI2LjE0MDYyNHYtODMuNDE0MDYzaDI2LjE0MDYyNHYxMi41ODU5MzdjMCA0LjE2Nzk2OSAzLjM3NSA3LjUzOTA2MyA3LjUzOTA2MyA3LjUzOTA2M3M3LjUzOTA2My0zLjM3MTA5NCA3LjUzOTA2My03LjUzOTA2M3YtMTIuNTg5ODQzaDE1My43MTA5Mzd2MjYuMTIxMDkzYzAgNC4xNjQwNjMgMy4zNzUgNy41MzkwNjMgNy41MzkwNjMgNy41MzkwNjMgNC4xNjQwNjIgMCA3LjUzOTA2Mi0zLjM3NSA3LjUzOTA2Mi03LjUzOTA2M3YtMjYuMTIxMDkzaDE0LjUzOTA2MnptMjkuNDQ1MzEzLTk4LjQ5NjA5NGMtMTMuNzg5MDYzIDAtMjkuODY3MTg3IDAtNDMuOTg0Mzc1IDB2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzg5MDYzaDQzLjk4NDM3NXptMC00MS44NjcxODhoLTQzLjk4NDM3NXYtMjYuNzgxMjVoNDMuOTg0Mzc1em0wLTQxLjg1OTM3NWgtNDMuOTg0Mzc1di0yNi43ODkwNjJoNDMuOTg0Mzc1em0wLTQxLjg3MTA5NGgtNDMuOTg0Mzc1di0yNi43NzczNDNoNDMuOTg0Mzc1em0wLTQxLjg1OTM3NGgtNDMuOTg0Mzc1di0yNi43ODkwNjNoNDMuOTg0Mzc1em0wLTQxLjg2NzE4OGgtNDMuOTg0Mzc1di0yNi43ODEyNWg0My45ODQzNzV6bTAtNDEuODU5Mzc1aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",cNe="PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTU2LjgzOCAxaC00OS42NzZjLTMuMzk4IDAtNi4xNjIgMi43NjQtNi4xNjIgNi4xNjIgMCAuNjY1LjEwNiAxLjMyLjMxNiAxLjk0OWwuNTU4IDEuNjc2Yy44NDEgMi41MiAzLjE5IDQuMjEzIDUuODQ3IDQuMjEzaDQuMzg0bDEuNTA2IDEzLjU1MmMuMjgyIDIuNTM2IDIuNDE4IDQuNDQ4IDQuOTY5IDQuNDQ4aDI2Ljg0YzIuNTUxIDAgNC42ODgtMS45MTIgNC45NjktNC40NDhsMS41MDYtMTMuNTUyaDQuMzg0YzIuNjU3IDAgNS4wMDYtMS42OTMgNS44NDYtNC4yMTRsLjU1OC0xLjY3NGMuMjExLS42My4zMTctMS4yODUuMzE3LTEuOTUgMC0zLjM5OC0yLjc2NC02LjE2Mi02LjE2Mi02LjE2MnptLTMyLjgzOCAzMGgtNHYtOGMwLTEuMTAzLjg5Ny0yIDItMnMyIC44OTcgMiAyem0xMCAwaC00di04YzAtMS4xMDMuODk3LTIgMi0yczIgLjg5NyAyIDJ6bTEwIDBoLTR2LThjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptNC40MDItMi42NjhjLS4xNDcgMS4zMjQtMS4xMzggMi4zNjMtMi40MDIgMi42MTF2LTcuOTQzYzAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0djhoLTJ2LThjMC0yLjIwNi0xLjc5NC00LTQtNHMtNCAxLjc5NC00IDR2OGgtMnYtOGMwLTIuMjA2LTEuNzk0LTQtNC00cy00IDEuNzk0LTQgNHY3Ljk0MmMtMS4yNjQtLjI0OC0yLjI1NC0xLjI4Ny0yLjQwMi0yLjYxMWwtMS40ODEtMTMuMzMxaDM1Ljc2NnptMTIuMzg0LTE5Ljg1My0uNTU4IDEuNjc1Yy0uNTY3IDEuNzAyLTIuMTU0IDIuODQ2LTMuOTQ5IDIuODQ2aC00OC41NThjLTEuNzk0IDAtMy4zODEtMS4xNDQtMy45NDktMi44NDZsLS41NTgtMS42NzZjLS4xNDItLjQyNC0uMjE0LS44NjctLjIxNC0xLjMxNiAwLTIuMjk1IDEuODY3LTQuMTYyIDQuMTYyLTQuMTYyaDQ5LjY3NmMyLjI5NSAwIDQuMTYyIDEuODY3IDQuMTYyIDQuMTYyIDAgLjQ0OS0uMDcyLjg5Mi0uMjE0IDEuMzE3eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUgNWgtNmMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJoNmMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0yem0tNiA0di0yaDZsLjAwMSAyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTEgNWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcgOWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSA5aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDloMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQgNDB2LTFoLTFjLS4xMTkgMC0xLjc5OS4wNDItMy4xNzkgMi4wMzUtLjA0Ni0uMDYzLS4wOTItLjEzMS0uMTM4LS4xOTMtLjkwMy0xLjIzLTEuNjgzLTIuMjkzLTEuNjgzLTQuODQydi0xaC0xYy0uMTM5IDAtMi44OTMuMDU3LTQuNjI0IDMuMjc4LTIuMDUzLTMuMjIzLTUuMzI4LTMuMjc4LTUuMzc2LTMuMjc4aC0xdjFjMCAyLjU1OS0uNzg0IDMuNjMzLTEuNjkyIDQuODc3LS4wNC4wNTUtLjA4LjExNC0uMTIuMTY5LTEuMzgzLTIuMDA0LTMuMDY5LTIuMDQ2LTMuMTg4LTIuMDQ2aC0xdjFjMCAyLjU0My0uOTk1IDMuODMzLTIuMTQ3IDUuMzI3LTEuMzM3IDEuNzMzLTIuODUzIDMuNjk3LTIuODUzIDcuNjczIDAgNi4wNzUgMy45MjUgMTAgMTAgMTBoMTRjNi4wNzUgMCAxMC0zLjkyNSAxMC0xMCAwLTMuOTc2LTEuNTE2LTUuOTQtMi44NTMtNy42NzMtMS4xNTItMS40OTQtMi4xNDctMi43ODQtMi4xNDctNS4zMjd6bS0xOSAxN2MwLTIuMzk2IDEuMzU4LTMuNzE5IDIuNjcyLTUgLjg1MS0uODMgMS43MjQtMS42OCAyLjExNS0yLjc3My41Ni4zMSAxLjIxMyAxLjA0MyAxLjIxMyAyLjc3M3YzaDJ2LTFjMC0xLjk4NiAxLjIzOS0yLjY2IDIuMTQ3LTIuODg3LjM1NSAxLjMwNCAxLjI5NSAyLjI0NCAyLjE0NiAzLjA5NC45MTYuOTE2IDEuNzA3IDEuNzA3IDEuNzA3IDIuNzkzIDAgMS4zODMtMS40NjMgNC03IDRzLTctMi42MTctNy00em0xNCA0aC0uMTAyYzEuNTYyLTEuMjggMi4xMDItMi44OTkgMi4xMDItNCAwLTEuOTE0LTEuMjE4LTMuMTMyLTIuMjkzLTQuMjA3LS45MTYtLjkxNi0xLjcwNy0xLjcwNy0xLjcwNy0yLjc5M3YtMWgtMWMtLjg5MiAwLTIuMTkzLjI3OC0zLjI0NSAxLjA4OS0uNjgyLTIuMzk1LTIuNjI4LTMuMDg5LTMuNzU1LTMuMDg5aC0xdjFjMCAuODQ1LS42NTUgMS41MjYtMS43MjQgMi41NjgtMS40NiAxLjQyMy0zLjI3NiAzLjE5My0zLjI3NiA2LjQzMiAwIDEuMTAxLjU0IDIuNzIgMi4xMDIgNGgtLjEwMmMtMy44NjggMC04LTIuMTAyLTgtOCAwLTMuMjk0IDEuMTgzLTQuODI4IDIuNDM2LTYuNDUyIDEuMDU1LTEuMzY3IDIuMTM5LTIuNzcyIDIuNDY1LTUuMDg0Ljg5MS43MzkgMi4wOTkgMi42NDIgMi4wOTkgNy41MzZoMmMwLTIuNTYtLjMyMy00LjQ2MS0uODAzLTUuODc4LjIyOC0uMzY2LjQ2OS0uNzEzLjcyNi0xLjA2Ni44NDYtMS4xNTkgMS43OTEtMi40NTMgMi4wMjMtNC44NzkgMS40NTYuNDUzIDQuMDU0IDIuMDY5IDQuMDU0IDcuODIzaDJjMC0xLjYzLS4xOTEtMi45OS0uNTA2LTQuMTMyLjYzNy0yLjI3MyAxLjc2MS0zLjIxOCAyLjU2Ny0zLjYwMS4yMzggMi4zNDYgMS4xMzcgMy41NyAyLjAxIDQuNzU5LjI2Mi4zNTcuNTA3LjcwOC43MzggMS4wOC0uNDgzIDEuNDE4LS44MDkgMy4zMjQtLjgwOSA1Ljg5NGgyYzAtNC45MDYgMS4yMTQtNi44MDcgMi4wOTgtNy41NDIuMzI1IDIuMzE1IDEuNDExIDMuNzIyIDIuNDY2IDUuMDkgMS4yNTMgMS42MjQgMi40MzYgMy4xNTggMi40MzYgNi40NTIgMCA1Ljg5OC00LjEzMiA4LTggOHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",uNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDY3LDBINDVDMjAuMTg3LDAsMCwyMC4xODcsMCw0NXY0MjJjMCwyNC44MTMsMjAuMTg3LDQ1LDQ1LDQ1aDQyMmMyNC44MTMsMCw0NS0yMC4xODcsNDUtNDVWNDUNCgkJCUM1MTIsMjAuMTg3LDQ5MS44MTMsMCw0NjcsMHogTTQ4Miw0NjdjMCw4LjI3MS02LjcyOSwxNS0xNSwxNUg0NWMtOC4yNzEsMC0xNS02LjcyOS0xNS0xNVY0NWMwLTguMjcxLDYuNzI5LTE1LDE1LTE1aDQyMg0KCQkJYzguMjcxLDAsMTUsNi43MjksMTUsMTVWNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDgxYy05Ni40OTUsMC0xNzUsNzguNTA1LTE3NSwxNzVzNzguNTA1LDE3NSwxNzUsMTc1czE3NS03OC41MDUsMTc1LTE3NVMzNTIuNDk1LDgxLDI1Niw4MXogTTI1Niw0MDENCgkJCWMtNzkuOTUzLDAtMTQ1LTY1LjA0Ny0xNDUtMTQ1czY1LjA0Ny0xNDUsMTQ1LTE0NXMxNDUsNjUuMDQ3LDE0NSwxNDVTMzM1Ljk1Myw0MDEsMjU2LDQwMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4NywyMTZjLTIyLjA1NiwwLTQwLDE3Ljk0NC00MCw0MGMwLDIyLjA1NiwxNy45NDQsNDAsNDAsNDBjMjIuMDU2LDAsNDAtMTcuOTQ0LDQwLTQwQzIyNywyMzMuOTQ0LDIwOS4wNTYsMjE2LDE4NywyMTZ6DQoJCQkgTTE4NywyNjZjLTUuNTE0LDAtMTAtNC40ODYtMTAtMTBjMC01LjUxNCw0LjQ4Ni0xMCwxMC0xMGM1LjUxNCwwLDEwLDQuNDg2LDEwLDEwQzE5NywyNjEuNTE0LDE5Mi41MTQsMjY2LDE4NywyNjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zMjUsMjE2Yy0yMi4wNTYsMC00MCwxNy45NDQtNDAsNDBjMCwyMi4wNTYsMTcuOTQ0LDQwLDQwLDQwYzIyLjA1NiwwLDQwLTE3Ljk0NCw0MC00MEMzNjUsMjMzLjk0NCwzNDcuMDU2LDIxNiwzMjUsMjE2eg0KCQkJIE0zMjUsMjY2Yy01LjUxNCwwLTEwLTQuNDg2LTEwLTEwYzAtNS41MTQsNC40ODYtMTAsMTAtMTBjNS41MTQsMCwxMCw0LjQ4NiwxMCwxMEMzMzUsMjYxLjUxNCwzMzAuNTE0LDI2NiwzMjUsMjY2eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",lNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0zNjAsMEgxMjBDOTcuOTIsMC4wMjYsODAuMDI2LDE3LjkyLDgwLDQwdjM2OGMwLjAyNCwxOS4wMDEsMTMuMzg5LDM1LjM3MywzMiwzOS4yVjQ4MGg0OHYtMzJoMTYwdjMyaDQ4di0zMi44DQoJCQljMTguNjExLTMuODI3LDMxLjk3Ni0yMC4xOTksMzItMzkuMlY0MEMzOTkuOTc0LDE3LjkyLDM4Mi4wOCwwLjAyNiwzNjAsMHogTTE0NCw0NjRoLTE2di0xNmgxNlY0NjR6IE0zNTIsNDY0aC0xNnYtMTZoMTZWNDY0eg0KCQkJIE0zODQsNDA4YzAsMTMuMjU1LTEwLjc0NSwyNC0yNCwyNEgxMjBjLTEzLjI1NSwwLTI0LTEwLjc0NS0yNC0yNFY0MGMwLTEzLjI1NSwxMC43NDUtMjQsMjQtMjRoMjQwYzEzLjI1NSwwLDI0LDEwLjc0NSwyNCwyNFY0MDgNCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCwxNjBjLTcwLjY5MiwwLTEyOCw1Ny4zMDgtMTI4LDEyOGMwLjA4NCw3MC42NTgsNTcuMzQyLDEyNy45MTYsMTI4LDEyOGM3MC42OTIsMCwxMjgtNTcuMzA4LDEyOC0xMjgNCgkJCVMzMTAuNjkyLDE2MCwyNDAsMTYweiBNMjQwLDQwMGMtNjEuODU2LDAtMTEyLTUwLjE0NC0xMTItMTEyYzAuMDY2LTYxLjgyOCw1MC4xNzItMTExLjkzNCwxMTItMTEyYzYxLjg1NiwwLDExMiw1MC4xNDQsMTEyLDExMg0KCQkJUzMwMS44NTYsNDAwLDI0MCw0MDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNDAsMTkyYy01My4wMTksMC05Niw0Mi45ODEtOTYsOTZjMC4wNTcsNTIuOTk2LDQzLjAwNCw5NS45NDMsOTYsOTZjNTMuMDE5LDAsOTYtNDIuOTgxLDk2LTk2UzI5My4wMTksMTkyLDI0MCwxOTJ6DQoJCQkgTTI0MCwzNjhjLTQ0LjE4MywwLTgwLTM1LjgxNy04MC04MGMwLjA0OS00NC4xNjMsMzUuODM3LTc5Ljk1Miw4MC04MGM0NC4xODMsMCw4MCwzNS44MTcsODAsODBDMzIwLDMzMi4xODMsMjg0LjE4MywzNjgsMjQwLDM2OA0KCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjQwLDMyYy0zMC45MjgsMC01NiwyNS4wNzItNTYsNTZjMC4wMzUsMzAuOTEzLDI1LjA4Nyw1NS45NjUsNTYsNTZjMzAuOTI4LDAsNTYtMjUuMDcyLDU2LTU2DQoJCQlDMjk2LDU3LjA3MiwyNzAuOTI4LDMyLDI0MCwzMnogTTI0MCwxMjhjLTIyLjA5MSwwLTQwLTE3LjkwOS00MC00MGMwLjAyNi0yMi4wOCwxNy45Mi0zOS45NzQsNDAtNDBjMjIuMDkxLDAsNDAsMTcuOTA5LDQwLDQwDQoJCQlTMjYyLjA5MSwxMjgsMjQwLDEyOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCw2NGMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTMjUzLjI1NSw2NCwyNDAsNjR6IE0yNDAsOTZjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJCXMzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOFMyNDQuNDE4LDk2LDI0MCw5NnoiLz4NCiAgICAgICAgPHJlY3QgeD0iMTEyIiB5PSIzMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1MiIgeT0iMzIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KICAgICAgICA8cmVjdCB4PSIxMTIiIHk9IjQwMCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1MiIgeT0iNDAwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCwyNDhjLTIyLjA5MSwwLTQwLDE3LjkwOS00MCw0MGMwLjAyNiwyMi4wOCwxNy45MiwzOS45NzQsNDAsNDBjMjIuMDkxLDAsNDAtMTcuOTA5LDQwLTQwDQoJCQlDMjgwLDI2NS45MDksMjYyLjA5MSwyNDgsMjQwLDI0OHogTTI0MCwzMTJjLTEzLjI1NSwwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQsMjQtMjRzMjQsMTAuNzQ1LDI0LDI0UzI1My4yNTUsMzEyLDI0MCwzMTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00OCwyODBIMTZjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJjNC40MTgsMCw4LTMuNTgyLDgtOFM1Mi40MTgsMjgwLDQ4LDI4MHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUzLjY1NiwyMjYuMzQ0bC0yNC0yNGMtMy4xNzgtMy4wNjktOC4yNDMtMi45ODEtMTEuMzEyLDAuMTk3Yy0yLjk5NCwzLjEtMi45OTQsOC4wMTUsMCwxMS4xMTVsMjQsMjQNCgkJCWMzLjE3OCwzLjA2OSw4LjI0MywyLjk4MSwxMS4zMTItMC4xOTdDNTYuNjUsMjM0LjM1OSw1Ni42NSwyMjkuNDQ0LDUzLjY1NiwyMjYuMzQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTMuNDYsMzM4LjM0NGMtMy4xLTIuOTk1LTguMDE2LTIuOTk1LTExLjExNiwwbC0yNCwyNGMtMy4xNzgsMy4wNy0zLjI2Niw4LjEzNC0wLjE5NiwxMS4zMTJzOC4xMzQsMy4yNjYsMTEuMzEyLDAuMTk2DQoJCQljMC4wNjctMC4wNjQsMC4xMzItMC4xMywwLjE5Ni0wLjE5NmwyNC0yNEM1Ni43MjYsMzQ2LjQ3OCw1Ni42MzgsMzQxLjQxNCw1My40NiwzMzguMzQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY0LDI4MGgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJjNC40MTgsMCw4LTMuNTgyLDgtOFM0NjguNDE4LDI4MCw0NjQsMjgweiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDYxLjQ2LDIwMi4zNDRjLTMuMS0yLjk5NC04LjAxNS0yLjk5NC0xMS4xMTYsMGwtMjQsMjRjLTMuMTI0LDMuMTI1LTMuMTIzLDguMTksMC4wMDIsMTEuMzE0DQoJCQljMS41LDEuNDk5LDMuNTM0LDIuMzQyLDUuNjU0LDIuMzQyYzIuMTIyLDAsNC4xNTYtMC44NDQsNS42NTYtMi4zNDRsMjQtMjRDNDY0LjcyNiwyMTAuNDc4LDQ2NC42MzgsMjA1LjQxNCw0NjEuNDYsMjAyLjM0NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ2MS42NTYsMzYyLjM0NGwtMjQtMjRjLTMuMTc4LTMuMDctOC4yNDItMi45ODItMTEuMzEyLDAuMTk2Yy0yLjk5NSwzLjEtMi45OTUsOC4wMTYsMCwxMS4xMTZsMjQsMjQNCgkJCWMzLjE3OCwzLjA3LDguMjQyLDIuOTgyLDExLjMxMi0wLjE5NkM0NjQuNjUxLDM3MC4zNiw0NjQuNjUxLDM2NS40NDQsNDYxLjY1NiwzNjIuMzQ0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",NNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MTIgNTYuMTY0MDYyYzAtMTIuNzk2ODc0LTEwLjQwNjI1LTIzLjIwMzEyNC0yMy4yMDMxMjUtMjMuMjAzMTI0aC00OS45Njg3NXYtMTUuMDQ2ODc2YzAtOS44Nzg5MDYtOC4wMzUxNTYtMTcuOTE0MDYyLTE3LjkxNDA2My0xNy45MTQwNjJoLTEwMy4wODk4NDNjLTkuODc4OTA3IDAtMTcuOTE0MDYzIDguMDM5MDYyLTE3LjkxNDA2MyAxNy45MTQwNjJ2MTUuMDQ2ODc2aC04Ny44MTY0MDZ2LTE1LjA0Njg3NmMwLTkuODc4OTA2LTguMDM5MDYyLTE3LjkxNDA2Mi0xNy45MTc5NjktMTcuOTE0MDYyaC0xMDMuMDg5ODQzYy05Ljg3ODkwNyAwLTE3LjkxNDA2MyA4LjAzOTA2Mi0xNy45MTQwNjMgMTcuOTE0MDYydjE1LjA0Njg3NmgtNDkuOTY4NzVjLTEyLjc5Njg3NSAwLTIzLjIwMzEyNSAxMC40MDYyNS0yMy4yMDMxMjUgMjMuMjAzMTI0djQ5LjVjMCA2LjA1MDc4MiAyLjMyODEyNSAxMS41NjI1IDYuMTM2NzE5IDE1LjY5OTIxOS0zLjgwODU5NCA0LjEzMjgxMy02LjEzNjcxOSA5LjY0ODQzOC02LjEzNjcxOSAxNS42OTkyMTl2MzA1LjgwODU5NGMwIDEyLjc5Mjk2OCAxMC40MDYyNSAyMy4yMDMxMjUgMjMuMjAzMTI1IDIzLjIwMzEyNWgyLjM3ODkwNnYyMi40NTMxMjVjMCAxMi43ODEyNSAxMC4zOTg0MzggMjMuMTc1NzgxIDIzLjE3OTY4OCAyMy4xNzU3ODFoMjMyLjYxNzE4N2M0LjE0NDUzMiAwIDcuNTAzOTA2LTMuMzU5Mzc1IDcuNTAzOTA2LTcuNSAwLTQuMTQ0NTMxLTMuMzU5Mzc0LTcuNTAzOTA2LTcuNTAzOTA2LTcuNTAzOTA2aC0yMzIuNjE3MTg3Yy00LjUwNzgxMyAwLTguMTcxODc1LTMuNjY3OTY5LTguMTcxODc1LTguMTcxODc1di0yMi40NTMxMjVoNDMwLjgyMDMxMnYyMi40NTMxMjVjMCA0LjUwNzgxMi0zLjY2NDA2MiA4LjE3MTg3NS04LjE3MTg3NSA4LjE3MTg3NWgtMTQ3LjEyNWMtNC4xNDg0MzcgMC03LjUwMzkwNiAzLjM1OTM3NS03LjUwMzkwNiA3LjUwMzkwNiAwIDQuMTQwNjI1IDMuMzU1NDY5IDcuNSA3LjUwMzkwNiA3LjVoMTQ3LjEyNWMxMi43ODEyNSAwIDIzLjE3OTY4OC0xMC4zOTQ1MzEgMjMuMTc5Njg4LTIzLjE3NTc4MXYtMjIuNDUzMTI1aDIuMzc4OTA2YzEyLjc5Mjk2OSAwIDIzLjIwMzEyNS0xMC40MTAxNTcgMjMuMjAzMTI1LTIzLjIwMzEyNXYtMzA1LjgwODU5NGMwLTYuMDUwNzgxLTIuMzMyMDMxLTExLjU2NjQwNi02LjEzNjcxOS0xNS42OTkyMTkgMy44MDQ2ODgtNC4xMzY3MTkgNi4xMzY3MTktOS42NDg0MzcgNi4xMzY3MTktMTUuNjk5MjE5em0tMTk3LjA4NTkzOC0zOC4yNWMwLTEuNjA1NDY4IDEuMzA0Njg4LTIuOTA2MjUgMi45MTAxNTctMi45MDYyNWgxMDMuMDg5ODQzYzEuNjA1NDY5IDAgMi45MTAxNTcgMS4zMDQ2ODggMi45MTAxNTcgMi45MDYyNXYxNS4wNDY4NzZoLTEwOC45MTAxNTd6bS0yMjYuNzM4MjgxIDBjMC0xLjYwNTQ2OCAxLjMwNDY4OC0yLjkwNjI1IDIuOTEwMTU3LTIuOTA2MjVoMTAzLjA4OTg0M2MxLjYwNTQ2OSAwIDIuOTEwMTU3IDEuMzA0Njg4IDIuOTEwMTU3IDIuOTA2MjV2MTUuMDQ2ODc2aC0xMDguOTEwMTU3em00MDguODE2NDA3IDQyNC45NTcwMzJjMCA0LjUxOTUzMS0zLjY3NTc4MiA4LjE5OTIxOC04LjE5NTMxMyA4LjE5OTIxOGgtNDY1LjU5Mzc1Yy00LjUxOTUzMSAwLTguMTk1MzEzLTMuNjc5Njg3LTguMTk1MzEzLTguMTk5MjE4di0zMDUuODA4NTk0YzAtNC41MTk1MzEgMy42NzU3ODItOC4xOTkyMTkgOC4xOTUzMTMtOC4xOTkyMTloNDY1LjU5Mzc1YzQuNTIzNDM3IDAgOC4xOTUzMTMgMy42Nzk2ODggOC4xOTUzMTMgOC4xOTkyMTl6bTAtMzM3LjIwNzAzMmMwIDQuNTE5NTMyLTMuNjc1NzgyIDguMTk1MzEzLTguMTk1MzEzIDguMTk1MzEzaC00NjUuNTkzNzVjLTQuNTE5NTMxIDAtOC4xOTUzMTMtMy42NzU3ODEtOC4xOTUzMTMtOC4xOTUzMTN2LTQ5LjVjMC00LjUyMzQzNyAzLjY3NTc4Mi04LjE5OTIxOCA4LjE5NTMxMy04LjE5OTIxOGg0NjUuNTkzNzVjNC41MTk1MzEgMCA4LjE5NTMxMyAzLjY3NTc4MSA4LjE5NTMxMyA4LjE5OTIxOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDYuMDk3NjU2IDU1LjE1MjM0NGMtMTQuMjA3MDMxIDAtMjUuNzYxNzE4IDExLjU1NDY4Ny0yNS43NjE3MTggMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4NyAyNS43NjE3MTkgMjUuNzYxNzE4IDI1Ljc2MTcxOSAxNC4yMDMxMjUgMCAyNS43NjE3MTktMTEuNTU0Njg3IDI1Ljc2MTcxOS0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU4NTk0LTI1Ljc1NzgxMi0yNS43NjE3MTktMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODcgMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTI5Njg4IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOCAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuMTY3OTY5IDU1LjE1MjM0NGMtMTQuMjA3MDMxIDAtMjUuNzYxNzE5IDExLjU1NDY4Ny0yNS43NjE3MTkgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4OCAyNS43NjE3MTkgMjUuNzYxNzE5IDI1Ljc2MTcxOSAxNC4yMDMxMjUgMCAyNS43NTc4MTItMTEuNTU0Njg3IDI1Ljc1NzgxMi0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg3LTI1Ljc1NzgxMi0yNS43NTc4MTItMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45MzM1OTQgMC0xMC43NTc4MTMtNC44MjQyMTktMTAuNzU3ODEzLTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTc4MTMtMTAuNzU3ODEyIDUuOTI5Njg3IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzIuODMyMDMxIDU1LjE1MjM0NGMtMTQuMjAzMTI1IDAtMjUuNzU3ODEyIDExLjU1NDY4Ny0yNS43NTc4MTIgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4NyAyNS43NjE3MTkgMjUuNzU3ODEyIDI1Ljc2MTcxOSAxNC4yMDcwMzEgMCAyNS43NjE3MTktMTEuNTU0Njg3IDI1Ljc2MTcxOS0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg4LTI1Ljc1NzgxMi0yNS43NjE3MTktMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODcgMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTMzNTk0IDAgMTAuNzU3ODEzIDQuODI4MTI1IDEwLjc1NzgxMyAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzU3ODEzIDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MDUuOTAyMzQ0IDU1LjE1MjM0NGMtMTQuMjAzMTI1IDAtMjUuNzYxNzE5IDExLjU1NDY4Ny0yNS43NjE3MTkgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1ODU5NCAyNS43NjE3MTkgMjUuNzYxNzE5IDI1Ljc2MTcxOSAxNC4yMDcwMzEgMCAyNS43NjE3MTgtMTEuNTU0Njg3IDI1Ljc2MTcxOC0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg3LTI1Ljc1NzgxMi0yNS43NjE3MTgtMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODggMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE4LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTI5Njg3IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MzQuNzQyMTg4IDE3MS45Mzc1aC0yMTguMTQ4NDM4Yy00LjE0NDUzMSAwLTcuNTAzOTA2IDMuMzU5Mzc1LTcuNTAzOTA2IDcuNSAwIDQuMTQ0NTMxIDMuMzU5Mzc1IDcuNTAzOTA2IDcuNTAzOTA2IDcuNTAzOTA2aDIxOC4xNDg0MzhjMS40Mzc1IDAgMi42MDU0NjggMS4xNzE4NzUgMi42MDU0NjggMi42MDkzNzV2MTkuODUxNTYzYzAgMS40Mzc1LTEuMTY3OTY4IDIuNjA5Mzc1LTIuNjA1NDY4IDIuNjA5Mzc1aC0zNTcuNDg0Mzc2Yy0xLjQzNzUgMC0yLjYwNTQ2OC0xLjE3MTg3NS0yLjYwNTQ2OC0yLjYwOTM3NXYtMTkuODUxNTYzYzAtMS40Mzc1IDEuMTY3OTY4LTIuNjA5Mzc1IDIuNjA1NDY4LTIuNjA5Mzc1aDEwNC4yNjk1MzJjNC4xNDQ1MzEgMCA3LjUwMzkwNi0zLjM1OTM3NSA3LjUwMzkwNi03LjUwMzkwNiAwLTQuMTQwNjI1LTMuMzU5Mzc1LTcuNS03LjUwMzkwNi03LjVoLTEwNC4yNjk1MzJjLTkuNzEwOTM3IDAtMTcuNjA5Mzc0IDcuODk4NDM4LTE3LjYwOTM3NCAxNy42MTMyODF2MTkuODUxNTYzYzAgOS43MTA5MzcgNy44OTg0MzcgMTcuNjEzMjgxIDE3LjYwOTM3NCAxNy42MTMyODFoMTAuMDM1MTU3djE2Ni40NjQ4NDRjMCAxNC4yNzczNDMgMTEuNjE3MTg3IDI1Ljg5NDUzMSAyNS44OTQ1MzEgMjUuODk0NTMxaDI4NS42MjVjMTQuMjc3MzQ0IDAgMjUuODk0NTMxLTExLjYxNzE4OCAyNS44OTQ1MzEtMjUuODk0NTMxdi0xNjYuNDY0ODQ0aDEwLjAzNTE1N2M5LjcxMDkzNyAwIDE3LjYxMzI4MS03Ljg5ODQzNyAxNy42MTMyODEtMTcuNjEzMjgxdi0xOS44NTE1NjNjMC05LjcxMDkzNy03LjkwMjM0NC0xNy42MTMyODEtMTcuNjEzMjgxLTE3LjYxMzI4MXptLTI1LjA0Mjk2OSAyMjEuNTQyOTY5YzAgNi4wMDM5MDYtNC44ODI4MTMgMTAuODg2NzE5LTEwLjg4NjcxOSAxMC44ODY3MTloLTI4NS42MjVjLTYuMDAzOTA2IDAtMTAuODkwNjI1LTQuODgyODEzLTEwLjg5MDYyNS0xMC44ODY3MTl2LTE2Ni40NjQ4NDRoMzA3LjQwMjM0NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTIuNTQyOTY5IDI5NC44NTkzNzVjMi4wMjM0MzcgMCA0LjA0Mjk2OS0uODE2NDA2IDUuNTIzNDM3LTIuNDIxODc1bDIzLjAxMTcxOS0yNS4wMTU2MjVjMi44MDg1OTQtMy4wNTA3ODEgMi42MDkzNzUtNy43OTY4NzUtLjQ0MTQwNi0xMC42MDE1NjMtMy4wNTA3ODEtMi44MDQ2ODctNy43OTI5NjktMi42MDkzNzQtMTAuNjAxNTYzLjQ0MTQwN2wtMjMuMDExNzE4IDI1LjAxNTYyNWMtMi44MDQ2ODggMy4wNDY4NzUtMi42MDkzNzYgNy43OTI5NjguNDQxNDA2IDEwLjYwMTU2MiAxLjQ0MTQwNiAxLjMyNDIxOSAzLjI2MTcxOCAxLjk4MDQ2OSA1LjA3ODEyNSAxLjk4MDQ2OXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTQuMTg3NSAzMjQuMTM2NzE5YzEuNDQxNDA2IDEuMzI4MTI1IDMuMjYxNzE5IDEuOTgwNDY5IDUuMDc4MTI1IDEuOTgwNDY5IDIuMDIzNDM3IDAgNC4wNDI5NjktLjgxNjQwNyA1LjUyMzQzNy0yLjQyMTg3Nmw0Ny4zMTY0MDctNTEuNDI5Njg3YzIuODA0Njg3LTMuMDUwNzgxIDIuNjA5Mzc1LTcuNzk2ODc1LS40NDE0MDctMTAuNjA1NDY5LTMuMDUwNzgxLTIuODA0Njg3LTcuNzk2ODc0LTIuNjA1NDY4LTEwLjYwMTU2Mi40NDE0MDZsLTQ3LjMxNjQwNiA1MS40MzM1OTRjLTIuODA0Njg4IDMuMDQ2ODc1LTIuNjA1NDY5IDcuNzk2ODc1LjQ0MTQwNiAxMC42MDE1NjN6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",LNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTEyMi4yNSAxNy4yNjZoLTExNi41YTUuNzU2IDUuNzU2IDAgMCAwIC01Ljc1IDUuNzV2NjcuOTk0YTUuNzU3IDUuNzU3IDAgMCAwIDUuNzUgNS43NWg5Ljg4M2wtMy4wNjggNC40NGE2LjA3OSA2LjA3OSAwIDAgMCAxMCA2LjkxMmw3Ljg0Ny0xMS4zNTJoNjcuMTc2bDcuODQ0IDExLjM1MWE2LjA3OSA2LjA3OSAwIDAgMCAxMC02LjkxMmwtMy4wNjgtNC40MzloOS44ODNhNS43NTcgNS43NTcgMCAwIDAgNS43NTMtNS43NXYtNjcuOTk0YTUuNzU2IDUuNzU2IDAgMCAwIC01Ljc1LTUuNzV6bS0xMDIuNTYxIDg4Ljg1NmEyLjU4MiAyLjU4MiAwIDAgMSAtMi4xMjIgMS4xMTIgMi41OCAyLjU4IDAgMCAxIC0yLjEyMy00LjA0Nmw0LjQ0My02LjQyOGg2LjI3MXptOTIuODY3LTIuOTM0YTIuNTggMi41OCAwIDAgMSAtMi4xMjMgNC4wNDYgMi41ODUgMi41ODUgMCAwIDEgLTIuMTIzLTEuMTEybC02LjQ2OC05LjM2Mmg2LjI3MXptMTEuOTQ0LTEyLjE3OGEyLjI1MyAyLjI1MyAwIDAgMSAtMi4yNSAyLjI1aC0xMTYuNWEyLjI1MyAyLjI1MyAwIDAgMSAtMi4yNS0yLjI1di02Ny45OTRhMi4yNTMgMi4yNTMgMCAwIDEgMi4yNS0yLjI1aDExNi41YTIuMjUzIDIuMjUzIDAgMCAxIDIuMjUgMi4yNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExOC4yNSAyNS4yNjZoLTEwOC41YTEuNzQ5IDEuNzQ5IDAgMCAwIC0xLjc1IDEuNzV2NTkuOTk0YTEuNzUgMS43NSAwIDAgMCAxLjc1IDEuNzVoMTA4LjVhMS43NSAxLjc1IDAgMCAwIDEuNzUtMS43NXYtNTkuOTk0YTEuNzQ5IDEuNzQ5IDAgMCAwIC0xLjc1LTEuNzV6bS0xLjc1IDU5Ljk5NGgtMTA1di01Ni40OTRoMTA1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDEuMzc1IDQ3LjkyMmg3LjN2MTkuOTMyYTEuNzUgMS43NSAwIDAgMCAzLjUgMHYtMTkuOTMyaDcuM2ExLjc1IDEuNzUgMCAwIDAgMC0zLjVoLTE4LjFhMS43NSAxLjc1IDAgMCAwIDAgMy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNzUuOTYzIDY4LjUyN2ExLjc0OSAxLjc0OSAwIDAgMCAzLjIzIDBsOS4wNDctMjEuNjgxYTEuNzUgMS43NSAwIDEgMCAtMy4yMy0xLjM0NmwtNy40MzIgMTcuODA5LTcuNDMyLTE3LjgwOWExLjc1IDEuNzUgMCAxIDAgLTMuMjMgMS4zNDh6Ii8+DQogICAgPC9nPg0KPC9zdmc+",jNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01OSwySDVBMywzLDAsMCwwLDIsNVY1OWEzLDMsMCwwLDAsMywzSDU5YTMsMywwLDAsMCwzLTNWNUEzLDMsMCwwLDAsNTksMlptMSw1N2ExLDEsMCwwLDEtMSwxSDVhMSwxLDAsMCwxLTEtMVY1QTEsMSwwLDAsMSw1LDRINTlhMSwxLDAsMCwxLDEsMVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMyLDZBMjYsMjYsMCwxLDAsNTgsMzIsMjYuMDI5LDI2LjAyOSwwLDAsMCwzMiw2Wm0wLDUwQTI0LDI0LDAsMSwxLDU2LDMyLDI0LjAyOCwyNC4wMjgsMCwwLDEsMzIsNTZaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0zMiwxMEEyMiwyMiwwLDEsMCw1NCwzMiwyMi4wMjUsMjIuMDI1LDAsMCwwLDMyLDEwWm0xMC4xNzUsNC44MTNjMi40NjksOS41NS0zLjYxMywxMi45LTYuNDI4LDEzLjkxMWE1LDUsMCwwLDAtMS42NS0xLjI0NywxMS4zNzQsMTEuMzc0LDAsMCwwLDMuMzExLTYuNzk0Yy4yNDktMi44NDUtLjc5LTUuNzA2LTMuMDUtOC41MzFBMTkuODI0LDE5LjgyNCwwLDAsMSw0Mi4xNzUsMTQuODEzWk0zNSwzMmEzLDMsMCwxLDEtMy0zQTMsMywwLDAsMSwzNSwzMlpNMzEuNTg2LDEyLjAyMWMyLjc2NywyLjg3Myw0LjA2Niw1LjcyMiwzLjgzMSw4LjQ3YTEwLjEsMTAuMSwwLDAsMS0zLjc4NCw2LjUzLDE5LjY1MiwxOS42NTIsMCwwLDAtOS41ODUtMTIuMzQ0QTE5LjgzOCwxOS44MzgsMCwwLDEsMzEuNTg2LDEyLjAyMVpNMjAuMTIsMTUuOTQ4YTE3LjY1NywxNy42NTcsMCwwLDEsOS41OTIsMTEuNjMzLDQuOTUxLDQuOTUxLDAsMCwwLS45NTcuNjQ3LDE4Ljg4NiwxOC44ODYsMCwwLDAtMTQuMzM4LTUuNzUyQTIwLjEyNiwyMC4xMjYsMCwwLDEsMjAuMTIsMTUuOTQ4Wk0xMiwzMmExOS44NywxOS44NywwLDAsMSwxLjQ0Mi03LjQxNkExNi4zODUsMTYuMzg1LDAsMCwxLDI1LjgxNiwyOC4yNmExMy43OSwxMy43OSwwLDAsMC04LjA2NCwxLjI5MUExMi42NDQsMTIuNjQ0LDAsMCwwLDEyLjMxMSwzNS40LDE5LjkxMywxOS45MTMsMCwwLDEsMTIsMzJabTEuMTY0LDYuNjZjMS4xMy0zLjUyOSwyLjk4Mi02LDUuNTItNy4zNGExMi42NDMsMTIuNjQzLDAsMCwxLDguNTYxLS43ODdBNC45MTksNC45MTksMCwwLDAsMjcsMzJjMCwuMTA5LjAyNS4yMTEuMDMyLjMxOC0yLjAwOC45MTUtNy45NjEsNC40Mi04LjksMTQuMDYzQTIwLjAzNCwyMC4wMzQsMCwwLDEsMTMuMTY0LDM4LjY2Wm02Ljg3OCw5LjMzM2MuMzY0LTkuMjc5LDUuNTYzLTEyLjc0Myw3LjUzMS0xMy43MTlhNSw1LDAsMCwwLDEuMDY1LDEuNGMtLjk1OCwyLjYwOS0yLjg1Myw5Ljc5MSwyLjEwOCwxNi4yNjFBMTkuODU2LDE5Ljg1NiwwLDAsMSwyMC4wNDIsNDcuOTkzWk0zMy4zODEsNTEuOTNjLTUuNC01LjczMy0zLjkyLTEyLjQ5NS0yLjk4OC0xNS4yMTlBNC45MjksNC45MjksMCwwLDAsMzIsMzdjLjA4MSwwLC4xNTYtLjAyLjIzNS0uMDI0LjYsMy4wNDksMi44MjksOS4yMjMsMTEuMTExLDExLjQ3NUExOS44NTYsMTkuODU2LDAsMCwxLDMzLjM4MSw1MS45M1ptMTEuOTY2LTUuMDc4Yy04LjQ0MS0xLjYxNy0xMC42MjMtNy4yOTItMTEuMTc0LTEwLjM3YTUuMDA2LDUuMDA2LDAsMCwwLDEuMDg0LS43MTljMS44NjgsMS45LDYuMjE1LDUuNjMzLDExLjUyMiw1LjYzM2ExMS4yMDgsMTEuMjA4LDAsMCwwLDMuMDg1LS40NTVBMjAuMDY5LDIwLjA2OSwwLDAsMSw0NS4zNDcsNDYuODUyWk01MiwzMmExOS45LDE5LjksMCwwLDEtMS4wNzQsNi40MTRjLTYuNTA3LDMuMTItMTIuNDYyLTIuMTg0LTE0LjQzOC00LjI1MWE0LjkyNyw0LjkyNywwLDAsMCwuMzY5LTEuMDI1LDE2LjYsMTYuNiwwLDAsMCwxLjc4OS4wOTQsMTguMzI4LDE4LjMyOCwwLDAsMCwxMi45MjYtNS4zMzlBMjAsMjAsMCwwLDEsNTIsMzJabS0xNS4wODgtLjg2OGE0Ljc0NSw0Ljc0NSwwLDAsMC0uMTczLS42NWMyLjkyNi0xLjE1NSw5LjIzNC00Ljc2Niw3LjgxNy0xNC4wMjhhMjAuMDU3LDIwLjA1NywwLDAsMSw2LjM5NCw5LjJBMTYuMzQ0LDE2LjM0NCwwLDAsMSwzNi45MTIsMzEuMTMyWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOSwxMkEzLDMsMCwxLDAsNiw5LDMsMywwLDAsMCw5LDEyWk05LDhBMSwxLDAsMSwxLDgsOSwxLDEsMCwwLDEsOSw4WiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTUsNmEzLDMsMCwxLDAsMywzQTMsMywwLDAsMCw1NSw2Wm0wLDRhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsNTUsMTBaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMiw1NWEzLDMsMCwwLDAtMy0zLDIuOTY2LDIuOTY2LDAsMCwwLTEsLjE4NFY0NUg2VjU1YTMsMywwLDAsMCwzLDNoNlY1NkgxMS44MTZBMi45NjYsMi45NjYsMCwwLDAsMTIsNTVaTTksNTZhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsOSw1NloiLz4NCiAgICAgICAgPHBhdGggZD0iTTU2LDUyLjE4NEEyLjk2NiwyLjk2NiwwLDAsMCw1NSw1MmEzLDMsMCwwLDAtMywzLDIuOTY2LDIuOTY2LDAsMCwwLC4xODQsMUg0NXYySDU1YTMsMywwLDAsMCwzLTNWNDlINTZaTTU1LDU2YTEsMSwwLDEsMSwxLTFBMSwxLDAsMCwxLDU1LDU2WiIvPg0KICAgICAgICA8cmVjdCB4PSIxNyIgeT0iNTYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",gNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyOC42MDcgNDI4LjYwNyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQyMy43NzMsMzQzLjg3MUw0MjMuNzczLDM0My44NzFjLTYuNjE3LTQuNTk5LTEyLjQ0LTEwLjI0Ni0xNy4yNDEtMTYuNzE4Yy0xMS40OTQtMTMuMDYxLTI2LjEyMi0yOS4yNTctNTMuMjktMjkuMjU3DQoJCQkJYy0yNy4xNjcsMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjUNCgkJCQljLTEwLjk3MS0xMi41MzktMjUuNi0yOS43OC01My4yOS0yOS43OGMtMjcuNjksMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NQ0KCQkJCXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjVjLTcuNDU4LTkuODUtMTYuODg5LTE4LjAzNS0yNy42OS0yNC4wMzNjLTUuMTk0LTIuNTk3LTExLjUwOS0wLjQ5Mi0xNC4xMDYsNC43MDINCgkJCQljLTIuNTk3LDUuMTk0LTAuNDkyLDExLjUwOSw0LjcwMiwxNC4xMDZjOC4yMDMsNC45NDQsMTUuNDU3LDExLjMxNCwyMS40MiwxOC44MDhjMTIuMDE2LDE0LjEwNiwyNi4xMjIsMjkuNzgsNTMuMjksMjkuNzgNCgkJCQlzNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NXMyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NQ0KCQkJCWMxMC45NzEsMTIuNTM5LDI1LjYsMjkuNzgsNTMuMjksMjkuNzhjMjcuNjksMCw0MS4yNzMtMTUuNjczLDUzLjI5LTI5Ljc4YzEyLjAxNi0xNC4xMDYsMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1DQoJCQkJYzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1YzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc1YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3MSwxNC42MjktMy4xMzUNCgkJCQlDNDMwLjA4MiwzNTMuNTk0LDQyOC42NzksMzQ3LjA0NSw0MjMuNzczLDM0My44NzF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MjMuNzczLDI2NS41MDNMNDIzLjc3MywyNjUuNTAzYy02LjYxNy00LjU5OS0xMi40NC0xMC4yNDYtMTcuMjQxLTE2LjcxOGMtMTEuNDk0LTEzLjA2MS0yNi4xMjItMjkuMjU3LTUzLjI5LTI5LjI1Nw0KCQkJCWMtMjcuMTY3LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjVzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1DQoJCQkJYy0xMC45NzEtMTIuNTM5LTI1LjYtMjkuNzgtNTMuMjktMjkuNzhjLTI3LjY5LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjUNCgkJCQlzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1Yy03LjQ1OC05Ljg1LTE2Ljg4OS0xOC4wMzUtMjcuNjktMjQuMDMzYy01LjE5NC0yLjU5Ny0xMS41MDktMC40OTItMTQuMTA2LDQuNzAyDQoJCQkJcy0wLjQ5MiwxMS41MDksNC43MDIsMTQuMTA2YzguMjAzLDQuOTQ0LDE1LjQ1NywxMS4zMTQsMjEuNDIsMTguODA4YzEyLjAxNiwxNC4xMDYsMjYuMTIyLDI5Ljc4LDUzLjI5LDI5Ljc4DQoJCQkJczQxLjI3My0xNS42NzMsNTMuMjktMjkuNzhjMTIuMDE2LTE0LjEwNiwxOS44NTMtMjIuNDY1LDM3LjYxNi0yMi40NjVzMjYuNjQ1LDkuOTI3LDM3LjYxNiwyMi40NjUNCgkJCQljMTAuOTcxLDEyLjUzOSwyNS42LDI5Ljc4LDUzLjI5LDI5Ljc4YzI3LjY5LDAsNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NQ0KCQkJCWMxNy43NjMsMCwyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NWM2LjA4OSw3LjgxOCwxMy4zMDgsMTQuNjg1LDIxLjQyLDIwLjM3NWM0LjkwNSwzLjE3NCwxMS40NTUsMS43NzEsMTQuNjI5LTMuMTM1DQoJCQkJQzQzMC4wODIsMjc1LjIyNyw0MjguNjc5LDI2OC42NzcsNDIzLjc3MywyNjUuNTAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDIzLjc3MywxODEuOTExTDQyMy43NzMsMTgxLjkxMWMtNi42MTctNC41OTktMTIuNDQtMTAuMjQ2LTE3LjI0MS0xNi43MThjLTExLjQ5NC0xMy4wNjEtMjYuMTIyLTI5LjI1Ny01My4yOS0yOS4yNTcNCgkJCQljLTI3LjE2NywwLTQxLjI3MywxNS42NzMtNTMuMjksMjkuNzhzLTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjVzLTI1LjYtMjkuNzgtNTMuMjktMjkuNzgNCgkJCQljLTI3LjY5LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjVzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1DQoJCQkJYy03LjQ1OC05Ljg1LTE2Ljg4OS0xOC4wMzUtMjcuNjktMjQuMDMzYy01LjE5NC0yLjU5Ny0xMS41MDktMC40OTItMTQuMTA2LDQuNzAyYy0yLjU5Nyw1LjE5NC0wLjQ5MiwxMS41MDksNC43MDIsMTQuMTA2DQoJCQkJYzguMjAzLDQuOTQ0LDE1LjQ1NywxMS4zMTQsMjEuNDIsMTguODA4YzEyLjAxNiwxNC4xMDYsMjYuMTIyLDI5Ljc4LDUzLjI5LDI5Ljc4czQxLjI3My0xNS42NzMsNTMuMjktMjkuNzgNCgkJCQljMTIuMDE2LTE0LjEwNiwxOS44NTMtMjIuNDY1LDM3LjYxNi0yMi40NjVzMjYuNjQ1LDkuOTI3LDM3LjYxNiwyMi40NjVzMjUuNiwyOS43OCw1My4yOSwyOS43OA0KCQkJCWMyNy42OSwwLDQxLjI3My0xNS42NzMsNTMuMjktMjkuNzhzMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1YzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1DQoJCQkJYzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc1YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3MSwxNC42MjktMy4xMzUNCgkJCQlDNDMwLjA4MiwxOTEuNjM1LDQyOC42NzksMTg1LjA4NSw0MjMuNzczLDE4MS45MTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01LjgxNCw4Mi4xMjRjOC4yMDMsNC45NDQsMTUuNDU3LDExLjMxNCwyMS40MiwxOC44MDhjMTIuMDE2LDE0LjEwNiwyNi4xMjIsMjkuNzgsNTMuMjksMjkuNzgNCgkJCQlzNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NXMyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NQ0KCQkJCWMxMC45NzEsMTIuNTM5LDI1LjYsMjkuNzgsNTMuMjksMjkuNzhjMjcuNjksMCw0MS4yNzMtMTUuNjczLDUzLjI5LTI5Ljc4YzEyLjAxNi0xNC4xMDYsMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1DQoJCQkJYzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1YzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc2YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3LDE0LjYyOS0zLjEzNQ0KCQkJCWMzLjE3NC00LjkwNSwxLjc3MS0xMS40NTUtMy4xMzUtMTQuNjI5aDBjLTYuNjE3LTQuNTk5LTEyLjQ0LTEwLjI0Ni0xNy4yNDEtMTYuNzE4Yy0xMS40OTQtMTMuMDYxLTI2LjEyMi0yOS4yNTctNTMuMjktMjkuMjU3DQoJCQkJYy0yNy4xNjcsMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjUNCgkJCQljLTEwLjk3MS0xMi41MzktMjUuNi0yOS43OC01My4yOS0yOS43OGMtMjcuNjksMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NQ0KCQkJCVM1My44OCw5OS44ODcsNDIuOTA4LDg3LjM0OGMtNy40NTgtOS44NS0xNi44ODktMTguMDM1LTI3LjY5LTI0LjAzM2MtNS4xOTQtMi41OTctMTEuNTA5LTAuNDkyLTE0LjEwNiw0LjcwMg0KCQkJCVMwLjYyMSw3OS41MjcsNS44MTQsODIuMTI0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",TNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUwOCA1MDgiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxyZWN0IHg9IjEzOS4zIiB3aWR0aD0iMTYuNCIgaGVpZ2h0PSIzOC4yIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTA0LjEsMjEuNCA4OC45LDI3LjcgOTgsNDkuOCAxMTMuMiw0My41IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjcuNSw4OS40IDIxLjMsMTA0LjYgNDMuMywxMTMuNyA0OS41LDk4LjUgCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOTAuOSwyMS40IDE4MS44LDQzLjUgMTk2LjksNDkuOCAyMDYsMjcuNyAJCSIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9IjQzLjMsMTgyLjcgMjEuMywxOTEuOCAyNy41LDIwNyA0OS41LDE5Ny45IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjY3LjQsODkuNCAyNDUuNCw5OC41IDI1MS43LDExMy43IDI3My43LDEwNC42IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjQ2LDM3LjYgMjE5LjEsNjQuNiAyMzAuNyw3Ni4zIDI1Ny42LDQ5LjIgCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI2NC4zLDIyMC4xIDM3LjQsMjQ3LjEgNDksMjU4LjggNzUuOSwyMzEuNyAJCSIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE0LjMsMTQwIDAsMTQwIDAsMTU2LjQgMTQuMywxNTYuNCAzOC4xLDE1Ni40IDM4LjEsMTQwIAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNTkuMSw0Ny43IDQ5LDM3LjYgMzcuNCw0OS4yIDY0LjMsNzYuMyA3NS45LDY0LjYgCQkiLz4NCiAgICAgICAgPHBhdGggZD0iTTMxOS41LDE3Mi45djE2LjVjNDkuNywwLDkwLjEsNDAuNiw5MC4xLDkwLjZINDI2QzQyNi4xLDIyMC45LDM3OC4zLDE3Mi45LDMxOS41LDE3Mi45eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY2LjEsMjk1LjVjMC42LTUuNiwwLjktMTAuNiwwLjktMTUuNmMwLTgxLjctNjYuMi0xNDguMi0xNDcuNS0xNDguMmMtMjguNCwwLTU1LjUsOC4yLTc4LjcsMjNjMC4yLTIuMiwwLjUtNC4zLDAuNS02LjUNCgkJCWMwLTUyLTQyLjEtOTQuMy05My44LTk0LjNzLTkzLjgsNDIuMy05My44LDk0LjNjMCwzMC42LDE0LjksNTkuMSwzOS41LDc2LjdjLTE1LjQsMTcuMi0yNS41LDM5LjMtMjcuMyw2My43DQoJCQljLTM3LDQtNjUuOCwzNS41LTY1LjgsNzMuN2MwLDQwLjksMzMuMSw3NC4xLDczLjcsNzQuMWgzNjAuNWM0MC43LDAsNzMuNy0zMy4yLDczLjctNzQuMUM1MDgsMzMzLjcsNDkxLjQsMzA3LjcsNDY2LjEsMjk1LjV6DQoJCQkgTTcwLDE0OC4yYzAtNDIuOSwzNC43LTc3LjgsNzcuNC03Ny44YzQyLjcsMCw3Ny40LDM0LjksNzcuNCw3Ny44YzAsNi45LTAuOSwxMy45LTIuNywyMC42Yy04LjMsNy40LTE1LjcsMTUuNS0yMi4xLDI0LjQNCgkJCWMtMzMuMS05LjEtNjguNy0xLjMtOTQuOSwyMC4xQzgzLjMsMTk5LDcwLDE3NC41LDcwLDE0OC4yeiBNNDM0LjMsNDE5LjlINzMuN2MtMzEuNiwwLTU3LjQtMjUuOS01Ny40LTU3LjYNCgkJCWMwLTMxLjgsMjUuNy01Ny42LDU3LjQtNTcuNmg4LjJ2LTguMmMwLTQ5LjksNDAuNC05MC42LDkwLjEtOTAuNmMxNC40LDAsMzQuNyw2LjgsMzQuNyw2LjhzMzguNy02NC40LDExMi44LTY0LjQNCgkJCWM3Mi4zLDAsMTMxLjEsNTkuMSwxMzEuMSwxMzEuN2MwLDEzLjktMi42LDI2LjEtMi42LDI2LjFsNi4yLDIuM2MyMi4zLDguNCwzNy4zLDMwLjEsMzcuMyw1My45DQoJCQlDNDkxLjYsMzk0LDQ2NS45LDQxOS45LDQzNC4zLDQxOS45eiIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9Ijg4LjQsNDU1LjIgNDcuNSw0OTYuNCA1OS4xLDUwOCAxMDAsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNzguNiw0NTUuMiAxMzcuNiw0OTYuNCAxNDkuMiw1MDggMTkwLjEsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyNjguNyw0NTUuMiAyMjcuNyw0OTYuNCAyMzkuMyw1MDggMjgwLjMsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzNTguOCw0NTUuMiAzMTcuOSw0OTYuNCAzMjkuNCw1MDggMzcwLjQsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI0NDguOSw0NTUuMiA0MDgsNDk2LjQgNDE5LjYsNTA4IDQ2MC41LDQ2Ni44IAkJIi8+DQogICAgPC9nPg0KPC9zdmc+DQo=",yNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MSA1NWgtNXYtNDRhMy4wMDkgMy4wMDkgMCAwIDAgMy0zdi01YTEgMSAwIDAgMCAtMS0xaC01MmExIDEgMCAwIDAgLTEgMXY1YTMuMDA5IDMuMDA5IDAgMCAwIDMgM3Y0NGgtNWExIDEgMCAwIDAgLTEgMXY1YTEgMSAwIDAgMCAxIDFoNThhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAgLTEtMXptLTU0LTQ3di00aDUwdjRhMSAxIDAgMCAxIC0xIDFoLTQ4YTEgMSAwIDAgMSAtMS0xem00NyAzdjQ0aC00NHYtNDR6bTYgNDloLTU2di0zaDU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTIgMTJoLTQwYTEgMSAwIDAgMCAtMSAxdjQwYTEgMSAwIDAgMCAxIDFoNDBhMSAxIDAgMCAwIDEtMXYtNDBhMSAxIDAgMCAwIC0xLTF6bS0yMSA0MGgtMTh2LTE5aDE4em0wLTIxaC0xOHYtMTdoMTh6bTIwIDIxaC0xOHYtMTloMTh6bTAtMjFoLTE4di0xN2gxOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE1LjE3MiAxOGg1LjY1N3YyaC01LjY1N3oiIHRyYW5zZm9ybT0ibWF0cml4KC43MDcgLS43MDcgLjcwNyAuNzA3IC04LjE2MyAxOC4yOTMpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNC4xMzYgMjAuNWgxMi43Mjh2MmgtMTIuNzI4eiIgdHJhbnNmb3JtPSJtYXRyaXgoLjcwNyAtLjcwNyAuNzA3IC43MDcgLTkuMTk4IDIwLjc5MykiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",DNe={"Alarm Systems":"PHN2ZyBoZWlnaHQ9IjUxMXB0IiB2aWV3Qm94PSItMzEgMCA1MTEgNTExLjk5OTk4IiB3aWR0aD0iNTExcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTIzNS4zMjgxMjUgMTE5LjE2Nzk2OWMyMC44Mzk4NDQgOC4wNTg1OTMgMzUuNjQ0NTMxIDIxLjE0ODQzNyA0NC42MzI4MTMgNDEuNTAzOTA2Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzEuNjg3NSAxMjguNTg1OTM4YzE4Ljk4MDQ2OSA3LjMzOTg0MyAzMS4zODI4MTIgMTguODMyMDMxIDM5LjAzNTE1NiAzNi4xNjQwNjIgMS42Njc5NjkgMy43NzM0MzggNS4zNjMyODIgNi4wMjM0MzggOS4yNDIxODggNi4wMjM0MzggMS4zNjMyODEgMCAyLjc0NjA5NC0uMjc3MzQ0IDQuMDcwMzEyLS44NjMyODIgNS4xMDU0NjktMi4yNTM5MDYgNy40MTQwNjMtOC4yMTQ4NDQgNS4xNjAxNTYtMTMuMzE2NDA2LTkuODIwMzEyLTIyLjI1LTI2LjI1LTM3LjU3NDIxOS01MC4yMjY1NjItNDYuODQzNzUtNS4xOTkyMTktMi4wMTE3MTktMTEuMDQ2ODc1LjU3NDIxOS0xMy4wNTg1OTQgNS43NzczNDQtMi4wMTE3MTggNS4yMDMxMjUuNTc4MTI1IDExLjA0Njg3NSA1Ljc3NzM0NCAxMy4wNTg1OTR6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjA3LjEwNTQ2OSAyMzcuODEyNWMyMC4wODk4NDMgMCAzNi40Mzc1LTE2LjM0Mzc1IDM2LjQzNzUtMzYuNDMzNTk0IDAtMjAuMDkzNzUtMTYuMzQ3NjU3LTM2LjQzNzUtMzYuNDM3NS0zNi40Mzc1LTIwLjA4OTg0NCAwLTM2LjQzNzUgMTYuMzQzNzUtMzYuNDM3NSAzNi40Mzc1IDAgMjAuMDg5ODQ0IDE2LjM0NzY1NiAzNi40MzM1OTQgMzYuNDM3NSAzNi40MzM1OTR6bTAtNTIuNjc1NzgxYzguOTUzMTI1IDAgMTYuMjQyMTg3IDcuMjg1MTU2IDE2LjI0MjE4NyAxNi4yNDIxODcgMCA4Ljk1MzEyNS03LjI4OTA2MiAxNi4yMzgyODItMTYuMjQyMTg3IDE2LjIzODI4Mi04Ljk1NzAzMSAwLTE2LjI0MjE4OC03LjI4NTE1Ny0xNi4yNDIxODgtMTYuMjM4MjgyIDAtOC45NTcwMzEgNy4yODUxNTctMTYuMjQyMTg3IDE2LjI0MjE4OC0xNi4yNDIxODd6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkwLjE3OTY4OCAxNDcuMDE1NjI1YzMuNzY1NjI0IDAgNy4zOTg0MzctLjU3NDIxOSAxMC44MjAzMTItMS42MzY3MTlsNy4zMzk4NDQgOS44NzEwOTRjMTMuOTQxNDA2IDE4Ljc1IDIxLjYyMTA5NCA0MS45NDUzMTIgMjEuNjIxMDk0IDY1LjMxMjV2NTkuMTUyMzQ0YzAgNS41NzgxMjUgNC41MjM0MzcgMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTYgNS41NzQyMTggMCAxMC4wOTc2NTYtNC41MTk1MzEgMTAuMDk3NjU2LTEwLjA5NzY1NnYtNTkuMTUyMzQ0YzAtMjcuNjc1NzgxLTkuMDkzNzUtNTUuMTUyMzQ0LTI1LjYwOTM3NS03Ny4zNTkzNzVsLTYuNjc1NzgxLTguOTgwNDY5YzUuNDQ5MjE4LTYuMzY3MTg3IDguNzQ2MDk0LTE0LjYyNSA4Ljc0NjA5NC0yMy42NDA2MjUgMC0yMC4wOTM3NS0xNi4zNDM3NS0zNi40Mzc1LTM2LjQzNzUtMzYuNDM3NS0yMC4wODk4NDQgMC0zNi40MzM1OTQgMTYuMzQzNzUtMzYuNDMzNTk0IDM2LjQzNzUgMCAyMC4wODk4NDQgMTYuMzQzNzUgMzYuNDMzNTk0IDM2LjQzMzU5NCAzNi40MzM1OTR6bTAtNTIuNjc1NzgxYzguOTU3MDMxIDAgMTYuMjQyMTg3IDcuMjg1MTU2IDE2LjI0MjE4NyAxNi4yNDIxODcgMCA4Ljk1MzEyNS03LjI4NTE1NiAxNi4yNDIxODgtMTYuMjQyMTg3IDE2LjI0MjE4OC04Ljk1MzEyNiAwLTE2LjI0MjE4OC03LjI4OTA2My0xNi4yNDIxODgtMTYuMjQyMTg4IDAtOC45NTcwMzEgNy4yODkwNjItMTYuMjQyMTg3IDE2LjI0MjE4OC0xNi4yNDIxODd6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjA1ODU5NCAzNDkuMDUwNzgxYy01LjU3ODEyNSAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU3djYzLjMyMDMxMmMwIDE0LjIzMDQ2OS0xMS41NzgxMjYgMjUuODA4NTk0LTI1LjgwODU5NCAyNS44MDg1OTRoLTQ0LjU5NzY1NnYtMzMuNDI5Njg4YzAtNS41NzgxMjUtNC41MTk1MzItMTAuMDk3NjU2LTEwLjA5Mzc1LTEwLjA5NzY1NmgtNDIuMjY1NjI2di0xMTIuNDUzMTI1YzIxLjg1NTQ2OS0yNC4wMzUxNTYgMzUuMTkxNDA3LTU1Ljk0OTIxOSAzNS4xOTE0MDctOTAuOTE3OTY5IDAtNzQuNTk3NjU2LTYwLjY4NzUtMTM1LjI4NTE1Ni0xMzUuMjgxMjUtMTM1LjI4NTE1NnMtMTM1LjI4MTI1IDYwLjY4NzUtMTM1LjI4MTI1IDEzNS4yODUxNTZjMCAzMy4xMDU0NjkgMTEuOTU3MDMxIDYzLjQ2NDg0NCAzMS43NzczNDMgODcuMDAzOTA2djIxMy41MTk1MzJjMCA1LjU3ODEyNSA0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU3IDEwLjA5NzY1NmgyMzUuNzYxNzE5YzUuNTc0MjE4IDAgMTAuMDkzNzUtNC41MTk1MzEgMTAuMDkzNzUtMTAuMDk3NjU2di0zMy40Mjk2ODhoNDQuNTk3NjU2YzI1LjM2NzE4NyAwIDQ2LjAwMzkwNi0yMC42MzY3MTggNDYuMDAzOTA2LTQ2LjAwMzkwNnYtNjMuMzIwMzEyYzAtNS41NzgxMjYtNC41MjM0MzgtMTAuMDk3NjU3LTEwLjA5NzY1Ni0xMC4wOTc2NTd6bS0yMzIuOTUzMTI1LTI2Mi43NjE3MTljNjMuNDU3MDMxIDAgMTE1LjA4NTkzNyA1MS42Mjg5MDcgMTE1LjA4NTkzNyAxMTUuMDg5ODQ0IDAgNjMuNDU3MDMyLTUxLjYyODkwNiAxMTUuMDg1OTM4LTExNS4wODU5MzcgMTE1LjA4NTkzOC02My40NjA5MzggMC0xMTUuMDg1OTM4LTUxLjYyODkwNi0xMTUuMDg1OTM4LTExNS4wODU5MzggMC02My40NjA5MzcgNTEuNjI1LTExNS4wODk4NDQgMTE1LjA4NTkzOC0xMTUuMDg5ODQ0em0tODMuMzA4NTk0IDIyMS42MDE1NjNjMjIuOTgwNDY5IDE4LjAxNTYyNSA1MS45MTAxNTYgMjguNzY5NTMxIDgzLjMwODU5NCAyOC43Njk1MzEgMjkuODYzMjgxIDAgNTcuNDkyMTg3LTkuNzM0Mzc1IDc5Ljg5NDUzMS0yNi4xODc1djE4MS4zMzIwMzJoLTE2My4yMDMxMjV6bTIxNS41NjY0MDYgMTgzLjkxNDA2M2gtMzIuMTY3OTY5di02Ni44NTkzNzZoMzIuMTY3OTY5em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0OC4xNjAxNTYgMzc3Ljc4OTA2MmgxNy45MjU3ODJjNS41NzQyMTggMCAxMC4wOTc2NTYtNC41MjM0MzcgMTAuMDk3NjU2LTEwLjA5NzY1NiAwLTUuNTc4MTI1LTQuNTIzNDM4LTEwLjA5NzY1Ni0xMC4wOTc2NTYtMTAuMDk3NjU2aC0xNy45MjU3ODJjLTUuNTc0MjE4IDAtMTAuMDk3NjU2IDQuNTE5NTMxLTEwLjA5NzY1NiAxMC4wOTc2NTYgMCA1LjU3NDIxOSA0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU2IDEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTguMTQ0NTMxIDM3Ny43ODkwNjJoMTcuOTIxODc1YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTIzNDM3IDEwLjA5NzY1Ni0xMC4wOTc2NTYgMC01LjU3ODEyNS00LjUyMzQzNy0xMC4wOTc2NTYtMTAuMDk3NjU2LTEwLjA5NzY1NmgtMTcuOTIxODc1Yy01LjU3ODEyNSAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU2IDAgNS41NzQyMTkgNC41MTk1MzEgMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY2LjA0Njg3NSAzNTcuNTkzNzVoLTE3LjkyMTg3NWMtNS41NzQyMTkgMC0xMC4wOTc2NTYgNC41MTk1MzEtMTAuMDk3NjU2IDEwLjA5NzY1NiAwIDUuNTc0MjE5IDQuNTIzNDM3IDEwLjA5NzY1NiAxMC4wOTc2NTYgMTAuMDk3NjU2aDE3LjkyMTg3NWM1LjU3ODEyNSAwIDEwLjA5NzY1Ni00LjUyMzQzNyAxMC4wOTc2NTYtMTAuMDk3NjU2IDAtNS41NzgxMjUtNC41MTk1MzEtMTAuMDk3NjU2LTEwLjA5NzY1Ni0xMC4wOTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ4LjE2MDE1NiA0MjAuNjc1NzgxaDY3LjkwNjI1YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTE5NTMxIDEwLjA5NzY1Ni0xMC4wOTc2NTZzLTQuNTIzNDM3LTEwLjA5NzY1Ni0xMC4wOTc2NTYtMTAuMDk3NjU2aC02Ny45MDYyNWMtNS41NzQyMTggMC0xMC4wOTc2NTYgNC41MTk1MzEtMTAuMDk3NjU2IDEwLjA5NzY1NnM0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU2IDEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDguMTI1IDQ0My4xNTYyNWgtOTkuOTY0ODQ0Yy01LjU3NDIxOCAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU2IDAgNS41NzQyMTkgNC41MjM0MzggMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTZoOTkuOTY0ODQ0YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTIzNDM3IDEwLjA5NzY1Ni0xMC4wOTc2NTYgMC01LjU3ODEyNS00LjUxOTUzMS0xMC4wOTc2NTYtMTAuMDk3NjU2LTEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDYuMzU1NDY5IDQwLjEzNjcxOWMxLjg0Mzc1IDMuMzIwMzEyIDUuMjg1MTU2IDUuMTkxNDA2IDguODMyMDMxIDUuMTkxNDA2IDEuNjYwMTU2IDAgMy4zNDM3NS0uNDE0MDYzIDQuODk4NDM4LTEuMjc3MzQ0IDQuODc1LTIuNzEwOTM3IDYuNjI1LTguODU5Mzc1IDMuOTE0MDYyLTEzLjczNDM3NWwtMTMuOTg0Mzc1LTI1LjEyODkwNmMtMi43MTA5MzctNC44NzEwOTQtOC44NTkzNzUtNi42MjUtMTMuNzM0Mzc1LTMuOTEwMTU2LTQuODcxMDk0IDIuNzEwOTM3LTYuNjI1IDguODU5Mzc1LTMuOTE0MDYyIDEzLjczNDM3NXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im02My4xNDQ1MzEgODMuMDE1NjI1LTI2LjA1NDY4Ny0xNS4wMzkwNjNjLTQuODMyMDMyLTIuNzg5MDYyLTExLjAwMzkwNi0xLjEzMjgxMi0xMy43OTI5NjkgMy42OTUzMTNzLTEuMTMyODEzIDExLjAwMzkwNiAzLjY5NTMxMyAxMy43OTI5NjlsMjYuMDU0Njg3IDE1LjA0Mjk2OGMxLjU4OTg0NC45MTc5NjkgMy4zMjgxMjUgMS4zNTE1NjMgNS4wMzkwNjMgMS4zNTE1NjMgMy40ODgyODEgMCA2Ljg4MjgxMi0xLjgwODU5NCA4Ljc1MzkwNi01LjA0Njg3NSAyLjc4OTA2Mi00LjgzMjAzMSAxLjEzMjgxMi0xMS4wMDc4MTItMy42OTUzMTMtMTMuNzk2ODc1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxLjExMzI4MSAxNDYuMjEwOTM4LTMwLjA4NTkzNy0xLjI4MTI1Yy01LjU4MjAzMi0uMjUtMTAuMjgxMjUgNC4wODk4NDMtMTAuNTE5NTMyIDkuNjYwMTU2LS4yMzQzNzQgNS41NzAzMTIgNC4wODk4NDQgMTAuMjgxMjUgOS42NjAxNTcgMTAuNTE1NjI1bDMwLjA4NTkzNyAxLjI4MTI1Yy4xNDQ1MzIuMDA3ODEyLjI5Mjk2OS4wMDc4MTIuNDM3NS4wMDc4MTIgNS4zNzg5MDYgMCA5Ljg1MTU2My00LjI0MjE4NyAxMC4wNzgxMjUtOS42Njc5NjkuMjM4MjgxLTUuNTcwMzEyLTQuMDg1OTM3LTEwLjI3NzM0My05LjY1NjI1LTEwLjUxNTYyNHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yODMuNjQwNjI1IDE5OC42MjUuMTIxMDk0LjI5Njg3NWMxLjU4OTg0MyAzLjkyNTc4MSA1LjM2NzE4NyA2LjMwNDY4NyA5LjM1OTM3NSA2LjMwNDY4NyAxLjI2MTcxOCAwIDIuNTQ2ODc1LS4yMzgyODEgMy43ODkwNjItLjc0MjE4NyA1LjE2Nzk2OS0yLjA5Mzc1IDcuNjYwMTU2LTcuOTgwNDY5IDUuNTY2NDA2LTEzLjE0ODQzN2wtLjEyMTA5My0uMjk2ODc2Yy0yLjA5Mzc1LTUuMTY3OTY4LTcuOTgwNDY5LTcuNjU2MjUtMTMuMTQ4NDM4LTUuNTYyNXMtNy42NjAxNTYgNy45ODA0NjktNS41NjY0MDYgMTMuMTQ4NDM4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0OS4zNjcxODggMzE1LjY2Nzk2OWMtMi4wNzgxMjYtNS4xNzE4NzUtNy45NjQ4NDQtNy42Nzk2ODgtMTMuMTM2NzE5LTUuNjAxNTYzLTUuMTcxODc1IDIuMDgyMDMyLTcuNjc5Njg4IDcuOTYwOTM4LTUuNjAxNTYzIDEzLjEzNjcxOWwuMTE3MTg4LjI5Mjk2OWMxLjU4NTkzNyAzLjk0MTQwNiA1LjM3MTA5NCA2LjMzNTkzNyA5LjM3NSA2LjMzNTkzNyAxLjI1MzkwNiAwIDIuNTI3MzQ0LS4yMzQzNzUgMy43NjE3MTgtLjczNDM3NSA1LjE3NTc4Mi0yLjA3ODEyNSA3LjY4MzU5NC03Ljk2MDkzNyA1LjYwMTU2My0xMy4xMzI4MTJ6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Amplifier:Ele,Awnings:_le,"Battery Status":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM5NC4wNjMgMzkxLjk5NmMtOS4xOTgtNS4yOS0xOC4zNzMtMTAuNjIzLTI3LjU1OC0xNS45MzcgNS4wMDItMTEuNzY5IDEwLjE5NC0yMy45MDIgMTQuOTAzLTM2LjA1MyAxLjgwOS00LjY2NyAxLjE4OS05LjkxMS0xLjY1NS0xNC4wMjgtNS43NzYtOC4zNjEtMTYuODYzLTguODU1LTI0LjM0NC0xLjc0LTE5LjY2MSAxOC43LTM5LjA4NSAzNy01OC42NTIgNTUuNTM3LTMuNzc1IDMuNTc3LTUuNjM5IDguNDM0LTUuMTEgMTMuMzI3LjUyMyA0Ljg0NiAzLjMzOSA5LjE0NCA3LjcyNSAxMS43OTIgOS4zNDUgNS42NDEgMTguNzYxIDEwLjk1NSAyOC4wOTggMTYuMjkxLTQuNjQ0IDEwLjk1MS0xMC4zNzIgMjQuMjQ2LTE0LjkyIDM2LjAwMi0yLjg4NyA3LjQ2Mi40MjEgMTUuNzQ0IDcuNjkzIDE5LjI2NCA1LjcxNCAyLjc2NiAxMi4yOCAyLjIxMSAxOC4yOTktMy40ODMgMTkuMzQ0LTE4LjMgMzkuMzQzLTM3LjIxNCA1OC42Ny01NS41NDcgMy44MTgtMy42MjIgNS42NzQtOC41MTIgNS4wOS0xMy40MTYtLjU5MS00Ljk2Mi0zLjU5NC05LjMzOC04LjIzOS0xMi4wMDl6bS03LjE3NCAxNC41NGMtMTUuNjM0IDE0LjgzMi01OC45NDkgNTYuOTczLTYwLjEwOSA1Ni40MTItLjExOC0uMDU3LS4zMDYtLjE3OC0uMjQtLjM0OSA1LjE3OS0xMy41MjYgMTEuNjM1LTI4LjI3MiAxNi45MTgtNDAuNzMyIDEuNDkzLTMuNTIyLjkwNy04LjI4LTMuNzY4LTEwLjk3LTEwLjg0LTYuMjM3LTIxLjc5MS0xMi4zNTQtMzIuNTY0LTE4Ljg0NS0uODAyLS40ODMtLjc2Ny0uNzEtLjA1MS0xLjM4OCAyMC44NzQtMTkuNzc5IDU3Ljk1OS01NS4zMTEgNTkuODAzLTU2LjQ1OS4zOTYuMDg0LjU0NC4yOTkuNTQ1LjM4NC01LjMwNyAxMy42ODQtMTEuMjEzIDI3LjMwNS0xNi45IDQwLjczOS0xLjc5NCA0LjIzNy0uMjkzIDguNjQ5IDMuNzM5IDEwLjk4IDQuMzk5IDIuNTQgOC43OTYgNS4wODcgMTMuMTkxIDcuNjM0IDYuMzc0IDMuNjkzIDEyLjc0OCA3LjM4NyAxOS4xMzQgMTEuMDU5IDEuMTA2LjYzNSAxLjEzNi43NDQuMzAyIDEuNTM1em0tODEuNzg0LTIwOC40aC0yMDEuNDZjLTEwLjI3MyAwLTE4LjYzMSA4LjMzLTE4LjYzMSAxOC41Njl2NDQuMjc2YzAgMTAuMjM5IDguMzU3IDE4LjU2OSAxOC42MzEgMTguNTY5aDIwMS40NjFjMTAuMjczIDAgMTguNjMxLTguMzMgMTguNjMxLTE4LjU2OXYtNDQuMjc2Yy0uMDAxLTEwLjIzOS04LjM1OC0xOC41NjktMTguNjMyLTE4LjU2OXptMy42MzEgNjIuODQ1YzAgMS45NjgtMS42MjkgMy41NjktMy42MzEgMy41NjloLTIwMS40NmMtMi4wMDIgMC0zLjYzMS0xLjYwMS0zLjYzMS0zLjU2OXYtNDQuMjc2YzAtMS45NjggMS42MjktMy41NjkgMy42MzEtMy41NjloMjAxLjQ2MWMyLjAwMiAwIDMuNjMxIDEuNjAxIDMuNjMxIDMuNTY5djQ0LjI3NnptMTUtMTQzLjg5OGMwLTEwLjIzOS04LjM1Ny0xOC41NjktMTguNjMxLTE4LjU2OWgtMjAxLjQ2Yy0xMC4yNzMgMC0xOC42MzEgOC4zMy0xOC42MzEgMTguNTY5djQ0LjI3NmMwIDEwLjIzOSA4LjM1NyAxOC41NjkgMTguNjMxIDE4LjU2OWgyMDEuNDYxYzEwLjI3MyAwIDE4LjYzMS04LjMzIDE4LjYzMS0xOC41Njl2LTQ0LjI3NnptLTE1IDQ0LjI3N2MwIDEuOTY4LTEuNjI5IDMuNTY5LTMuNjMxIDMuNTY5aC0yMDEuNDZjLTIuMDAyIDAtMy42MzEtMS42MDEtMy42MzEtMy41Njl2LTQ0LjI3NmMwLTEuOTY4IDEuNjI5LTMuNTY5IDMuNjMxLTMuNTY5aDIwMS40NjFjMi4wMDIgMCAzLjYzMSAxLjYwMSAzLjYzMSAzLjU2OXY0NC4yNzZ6bTM4LjI0NyAxMjMuODU3Yy0xOC42NTMgMC0zNi4yNjYgNC41MjktNTEuODAzIDEyLjU0MmgtMTkxLjUzNWMtMTAuMjcyIDAtMTguNjMgOC4zMzEtMTguNjMgMTguNTd2NDQuMjdjMCAxMC4yMzkgOC4zNTcgMTguNTcgMTguNjMgMTguNTdoMTMxLjYyMWMtMS4wOTYgNi4zMTgtMS42NzMgMTIuODEyLTEuNjczIDE5LjQzOCAwIDI0LjI0MyA3LjY1MSA0Ni43MjkgMjAuNjYgNjUuMTgyaC0xNTAuNjA4Yy0yLjAwMiAwLTMuNjMtMS42MDItMy42My0zLjU3di00NC4yN2MwLTEuOTY5IDEuNjI4LTMuNTcgMy42My0zLjU3aDEwNy42NDFjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEwNy42NDFjLTEwLjI3MiAwLTE4LjYzIDguMzMxLTE4LjYzIDE4LjU3djQ0LjI3YzAgMTAuMjM5IDguMzU3IDE4LjU3IDE4LjYzIDE4LjU3aDE2My4yMzdjNy4wNyA3LjA2MyAxNS4wNjUgMTMuMTk5IDIzLjc4NSAxOC4yMWgtMTk4LjI0MmMtMTQuMjI3IDAtMjUuOC0xMS41NzQtMjUuOC0yNS44di0zNjUuMDg5YzAtMTQuMjI2IDExLjU3My0yNS44IDI1LjgtMjUuOGgyMjMuOWMxNC4yMjcgMCAyNS44IDExLjU3NCAyNS44IDI1Ljh2MTU2LjY0YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTE1Ni42NGMwLTIyLjQ5Ny0xOC4zMDMtNDAuOC00MC44LTQwLjhoLTQwLjA2N3YtMzUuNjExYzAtMTYuMzc2LTEzLjMyMy0yOS42OTktMjkuNjk5LTI5LjY5OWgtODQuMzY3Yy0xNi4zNzYgMC0yOS42OTkgMTMuMzIzLTI5LjY5OSAyOS42OTl2MzUuNjExaC00MC4wNjhjLTIyLjQ5NyAwLTQwLjggMTguMzAzLTQwLjggNDAuOHYzNjUuMDljMCAyMi40OTcgMTguMzAzIDQwLjggNDAuOCA0MC44aDIyMy45YzMuODkyIDAgNy43MzEtLjU1MyAxMS40NDItMS42MzYgNi4yNDggMS4wNzEgMTIuNjY3IDEuNjM2IDE5LjIxNiAxLjYzNiA2Mi41MjQgMCAxMTMuMzkyLTUwLjg2NyAxMTMuMzkyLTExMy4zOTIgMC02Mi41MjQtNTAuODY3LTExMy4zOTEtMTEzLjM5Mi0xMTMuMzkxem0tMTk5LjQ5MS0yNTUuNTE4YzAtOC4xMDUgNi41OTQtMTQuNjk5IDE0LjY5OS0xNC42OTloODQuMzY3YzguMTA1IDAgMTQuNjk5IDYuNTk0IDE0LjY5OSAxNC42OTl2MzUuNjExaC0xMTMuNzY1em0tNDMuODQ3IDMzNC40NzFjLTIuMDAyIDAtMy42My0xLjYwMi0zLjYzLTMuNTd2LTQ0LjI3YzAtMS45NjkgMS42MjgtMy41NyAzLjYzLTMuNTdoMTY5LjM0MWMtMTUuNjY2IDEzLjUyMS0yNy42IDMxLjI1LTM0LjA0MSA1MS40MXptMjQzLjMzOCAxMzIuODNjLTU0LjI1MyAwLTk4LjM5Mi00NC4xMzgtOTguMzkyLTk4LjM5MiAwLTU0LjI1MyA0NC4xMzktOTguMzkxIDk4LjM5Mi05OC4zOTFzOTguMzkyIDQ0LjEzOCA5OC4zOTIgOTguMzkxYzAgNTQuMjU0LTQ0LjEzOSA5OC4zOTItOTguMzkyIDk4LjM5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Ceiling Spotlights":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDc0IDc0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00Ni40NCA0aC0yLjk3YTEgMSAwIDAgMSAwLTJoMi45N2ExIDEgMCAwIDEgMCAyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjguNjQgMTAuMzhoLTYzLjI4YTEgMSAwIDAgMSAtMS0xdi02LjM4YTEgMSAwIDAgMSAxLTFoMjEuMmExIDEgMCAwIDEgMCAyaC0yMC4ydjQuMzhoNjEuMjh2LTQuMzhoLTE0LjJhMSAxIDAgMCAxIDAtMmgxNS4yYTEgMSAwIDAgMSAxIDF2Ni4zOGExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2LjQ3IDRoLTIuOTFhMSAxIDAgMCAxIDAtMmgyLjkxYTEgMSAwIDAgMSAwIDJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNyA1MS4yMDdhMSAxIDAgMCAxIC0xLTF2LTQwLjgyOGExIDEgMCAxIDEgMiAwdjQwLjgyOGExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ2Ljc3MSA2Ny4wN2gtMTkuNTQyYTEgMSAwIDAgMSAtLjk3Ny0xLjIxNWwzLjQ5LTE1Ljg1NWExIDEgMCAwIDEgLjk3Ny0uNzg1aDEyLjU2MmExIDEgMCAwIDEgLjk3Ny43ODVsMy40OSAxNS44NmExIDEgMCAwIDEgLS45NzcgMS4yMTV6bS0xOC4zLTJoMTcuMDU2bC0zLjA0OS0xMy44NmgtMTAuOTU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzcgNzJhNS45MzYgNS45MzYgMCAwIDEgLTUuOTMtNS45MyAxIDEgMCAwIDEgMiAwIDMuOTMgMy45MyAwIDAgMCA3Ljg2IDAgMSAxIDAgMCAxIDIgMCA1LjkzNiA1LjkzNiAwIDAgMSAtNS45MyA1LjkzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjAuNDE2IDM1LjExNGExIDEgMCAwIDEgLTEtMXYtMjQuNzM1YTEgMSAwIDAgMSAyIDB2MjQuNzM1YTEgMSAwIDAgMSAtMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjkuNiA1MC4wMjZoLTE4LjM3YTEgMSAwIDAgMSAtLjk3Ni0xLjIxNWwzLjI4LTE0LjkxMWExIDEgMCAwIDEgLjk3Ny0uNzg1aDExLjgwOWExIDEgMCAwIDEgLjk3Ny43ODVsMy4yOCAxNC45MDlhMSAxIDAgMCAxIC0uOTc2IDEuMjE1em0tMTcuMTI2LTJoMTUuODgybC0yLjgzOS0xMi45MDloLTEwLjJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02MC40MTYgNTQuNjZhNS42NDEgNS42NDEgMCAwIDEgLTUuNjM0LTUuNjM0IDEgMSAwIDEgMSAyIDAgMy42MzQgMy42MzQgMCAxIDAgNy4yNjggMCAxIDEgMCAxIDEgMiAwIDUuNjQxIDUuNjQxIDAgMCAxIC01LjYzNCA1LjYzNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzLjU4NCAzNS4xMTRhMSAxIDAgMCAxIC0xLTF2LTI0LjczNWExIDEgMCAwIDEgMiAwdjI0LjczNWExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyLjc3IDUwLjAyNmgtMTguMzdhMSAxIDAgMCAxIC0uOTc2LTEuMjE1bDMuMjc2LTE0LjkxMWExIDEgMCAwIDEgLjk3Ny0uNzg1aDExLjgxMmExIDEgMCAwIDEgLjk3Ny43ODVsMy4yOCAxNC45MDlhMSAxIDAgMCAxIC0uOTc2IDEuMjE1em0tMTcuMTI2LTJoMTUuODgxbC0yLjgzOS0xMi45MDloLTEwLjIwM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzLjU4NCA1NC42NmE1LjY0MSA1LjY0MSAwIDAgMSAtNS42MzQtNS42MzQgMSAxIDAgMCAxIDIgMCAzLjYzNCAzLjYzNCAwIDAgMCA3LjI2OCAwIDEgMSAwIDAgMSAyIDAgNS42NDEgNS42NDEgMCAwIDEgLTUuNjM0IDUuNjM0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Chandelier:fle,Climate:Sle,"Coffee Makers":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ2NiAxMTEuOTk2aC00OS43MTlsLTEwOS4yMTUtNDYuMzYxIDQuODg5LTU0Ljc0NmMuMjUtMi43OTYtLjY4Ny01LjU2OC0yLjU4Mi03LjYzOS0xLjg5NC0yLjA3LTQuNTcyLTMuMjUtNy4zNzgtMy4yNWgtNjBjLTIuODA3IDAtNS40ODQgMS4xOC03LjM3OSAzLjI1LTEuODk1IDIuMDcxLTIuODMxIDQuODQzLTIuNTgyIDcuNjM5bDQuODk4IDU0Ljg1NC0xMDQuNzk1IDQ2LjI1M2gtMjYuMTM3Yy0zOC41OTggMC03MCAzMS40MDItNzAgNzB2NjkuOTk3YzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMHMzMC0xMy40NTggMzAtMzB2LTY5Ljk5N2MwLTUuNDIgNC41OC0xMCAxMC0xMGgyNi45MTVsMjEuNDgzIDEyMS43MzhjMS45MjcgMTAuOTIzIDkuOTA0IDE4LjI2MyAxOS44NDggMTguMjYzdjQwLjAwM2MtOS42NTIgMC0xNy4yMTcgNi44MDItMTkuNzQ0IDE3Ljc1MWwtMzAuMDAxIDEzMGMtLjY4NSAyLjk2OS4wMjEgNi4wODkgMS45MTggOC40NzRzNC43NzggMy43NzQgNy44MjYgMy43NzRoMjgwYzMuMDQ3IDAgNS45MjktMS4zOSA3LjgyNi0zLjc3NCAxLjg5Ny0yLjM4NSAyLjYwNC01LjUwNSAxLjkxOC04LjQ3NGwtMzAuMDAxLTEzMGMtMi41MjUtMTAuOTQ5LTEwLjA5MS0xNy43NTEtMTkuNzQzLTE3Ljc1MXYtNDAuMDAyYzkuOTQ0IDAgMTcuOTItNy4zMzkgMTkuODQ3LTE4LjI2MmwxNC4zODEtODEuNDkyIDY0LjA1Ni01NS4yMzZjMi4yMDMtMS44OTkgMy40Ny00LjY2NSAzLjQ3LTcuNTczdi0yNy40MzhjLjAwMS01LjUyNC00LjQ3Ny0xMC4wMDEtOS45OTktMTAuMDAxem0tMTc0LjkzOC05MS45OTYtMy43NSA0MS45OTZoLTMwLjYzNGwtMy43NTEtNDEuOTk2em0tNDEuNDIzIDYxLjk5Nmg0NC43ODVsNzAuNjcyIDMwaC0xODMuNDI4em0tMTQzLjYzOSA3MC4wMDFjLTE2LjU0MiAwLTMwIDEzLjQ1OC0zMCAzMHY2OS45OTdjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMHMtMTAtNC40ODYtMTAtMTB2LTY5Ljk5N2MwLTI3LjU3IDIyLjQzLTUwIDUwLTUwaDE5Ljg1NmwzLjUzIDIwem02OC4wOTQgMTM4LjI2My0yNy45MjktMTU4LjI2NGg2Mi43NjJsMi41MjggMzUuODE3Yy4zNzIgNS4yNyA0Ljc2MiA5LjI5NiA5Ljk2NSA5LjI5Ni4yMzYgMCAuNDc1LS4wMDguNzE0LS4wMjUgNS41MDktLjM4OSA5LjY2LTUuMTcgOS4yNzEtMTAuNjc5bC0yLjQyOS0zNC40MDloOTAuNTM5bC0xMS4yOTUgMTYwLjAwMmgtNjcuOTQ5bC0yLjUyOS0zNS44MTdjLS4zODktNS41MDktNS4xNjYtOS42NjEtMTAuNjc5LTkuMjcxLTUuNTA5LjM4OS05LjY2IDUuMTctOS4yNzEgMTAuNjc5bDIuNDI5IDM0LjQwOWgtNDUuNTE4Yy0uMTk5LS4zMjEtLjQ2My0uOTE0LS42MDktMS43Mzh6bS0uMTAzIDgzLjk4OGMuMjU5LTEuMTI1LjYxLTEuODU3Ljg1My0yLjI0OWg0NS4zNmwtMTEuMDc3IDEyMGgtNjIuMzF6bTEzNC4yMTItMi4yNDggMTEuMDc3IDEyMGgtOTAuMDY5bDExLjA3Ny0xMjB6bTY2LjI5NyAyLjI0OCAyNy4xNzUgMTE3Ljc1MmgtNjIuMzFsLTExLjA3Ny0xMjBoNDUuMzZjLjI0My4zOTEuNTkzIDEuMTIzLjg1MiAyLjI0OHptLTIwLjI1NS0yMi4yNDhoLTE1OS45OTh2LTQwLjAwMmgxNTkuOTk4em0yMC4xNTEtNjEuNzRjLS4xNDYuODI0LS40MDkgMS40MTctLjYwOCAxLjczN2gtNDUuNTE4bDExLjI5NS0xNjAuMDAxaDYyLjc2MmwtMTIuOTM3IDczLjMwOWMwIC4wMDEgMCAuMDAyLS4wMDEuMDAzem04MS42MDQtMTQ1LjQwNy00Mi4wMjkgMzYuMjQyIDguNjY1LTQ5LjA5OWgzMy4zNjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMjQuNTk5IDIyMS45OTdjNS41MjMgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzctMTAtMTAtMTBoLS4wMDdjLTUuNTIzIDAtOS45OTYgNC40NzctOS45OTYgMTBzNC40OCAxMCAxMC4wMDMgMTB6Ii8+DQogICAgPC9nPg0KPC9zdmc+","Cold Water":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ3NSA0NzUiID4NCjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQoJPHBhdGggZD0iTTQzOC40MTMsMzQzLjE4OEM0MjguMDU5LDMzNS4wODUsNDE1LjE3NCwzMjUsMzkwLjgzNSwzMjVjLTI0LjMzOSwwLTM3LjIyNCwxMC4wODUtNDcuNTc3LDE4LjE4OA0KCQlDMzM0LjQ5NiwzNTAuMDQ1LDMyOC4xNjUsMzU1LDMxNC4xNywzNTVjLTEzLjk5NCwwLTIwLjMyNS00Ljk1NS0yOS4wODctMTEuODEzQzI3NC43MjksMzM1LjA4NSwyNjEuODQ0LDMyNSwyMzcuNTA2LDMyNQ0KCQljLTI0LjMzOSwwLTM3LjIyNCwxMC4wODUtNDcuNTc4LDE4LjE4OEMxODEuMTY2LDM1MC4wNDUsMTc0LjgzNCwzNTUsMTYwLjg0LDM1NWMtMTMuOTk2LDAtMjAuMzI3LTQuOTU1LTI5LjA5LTExLjgxMw0KCQlDMTIxLjM5NSwzMzUuMDg0LDEwOC41MDksMzI1LDg0LjE3LDMyNWMtMjQuMzM5LDAtMzcuMjI1LDEwLjA4NC00Ny41NzksMTguMTg4QzI3LjgyOCwzNTAuMDQ1LDIxLjQ5NiwzNTUsNy41LDM1NXYzMA0KCQljMjQuMzM5LDAsMzcuMjI1LTEwLjA4NCw0Ny41NzktMTguMTg4QzYzLjg0MiwzNTkuOTU1LDcwLjE3NCwzNTUsODQuMTcsMzU1YzEzLjk5NiwwLDIwLjMyNyw0Ljk1NSwyOS4wOTEsMTEuODEzDQoJCUMxMjMuNjE1LDM3NC45MTYsMTM2LjUsMzg1LDE2MC44NCwzODVjMjQuMzM4LDAsMzcuMjI0LTEwLjA4NCw0Ny41NzgtMTguMTg4QzIxNy4xOCwzNTkuOTU1LDIyMy41MTEsMzU1LDIzNy41MDYsMzU1DQoJCWMxMy45OTQsMCwyMC4zMjUsNC45NTUsMjkuMDg3LDExLjgxM0MyNzYuOTQ3LDM3NC45MTUsMjg5LjgzMywzODUsMzE0LjE3LDM4NWMyNC4zMzgsMCwzNy4yMjQtMTAuMDg1LDQ3LjU3Ny0xOC4xODgNCgkJQzM3MC41MSwzNTkuOTU1LDM3Ni44NDEsMzU1LDM5MC44MzUsMzU1YzEzLjk5NSwwLDIwLjMyNSw0Ljk1NSwyOS4wODgsMTEuODEzQzQzMC4yNzcsMzc0LjkxNSw0NDMuMTYyLDM4NSw0NjcuNSwzODV2LTMwDQoJCUM0NTMuNTA2LDM1NSw0NDcuMTc1LDM1MC4wNDUsNDM4LjQxMywzNDMuMTg4eiIvPg0KCTxwYXRoIGQ9Ik0zOTAuODM1LDQxNWMtMjQuMzM4LDAtMzcuMjI0LDEwLjA4NS00Ny41NzcsMTguMTg4QzMzNC40OTYsNDQwLjA0NSwzMjguMTY1LDQ0NSwzMTQuMTcsNDQ1DQoJCWMtMTMuOTk0LDAtMjAuMzI1LTQuOTU1LTI5LjA4Ny0xMS44MTNDMjc0LjcyOSw0MjUuMDg1LDI2MS44NDQsNDE1LDIzNy41MDYsNDE1Yy0yNC4zMzksMC0zNy4yMjQsMTAuMDg1LTQ3LjU3OCwxOC4xODgNCgkJQzE4MS4xNjYsNDQwLjA0NSwxNzQuODM0LDQ0NSwxNjAuODQsNDQ1Yy0xMy45OTYsMC0yMC4zMjctNC45NTUtMjkuMDktMTEuODEzQzEyMS4zOTUsNDI1LjA4NCwxMDguNTA5LDQxNSw4NC4xNyw0MTUNCgkJYy0yNC4zMzksMC0zNy4yMjUsMTAuMDg0LTQ3LjU3OSwxOC4xODhDMjcuODI4LDQ0MC4wNDUsMjEuNDk2LDQ0NSw3LjUsNDQ1djMwYzI0LjMzOSwwLDM3LjIyNS0xMC4wODQsNDcuNTc5LTE4LjE4OA0KCQlDNjMuODQyLDQ0OS45NTUsNzAuMTc0LDQ0NSw4NC4xNyw0NDVjMTMuOTk2LDAsMjAuMzI3LDQuOTU1LDI5LjA5MSwxMS44MTNDMTIzLjYxNSw0NjQuOTE2LDEzNi41LDQ3NSwxNjAuODQsNDc1DQoJCWMyNC4zMzgsMCwzNy4yMjQtMTAuMDg0LDQ3LjU3OC0xOC4xODhDMjE3LjE4LDQ0OS45NTUsMjIzLjUxMSw0NDUsMjM3LjUwNiw0NDVjMTMuOTk0LDAsMjAuMzI1LDQuOTU1LDI5LjA4NywxMS44MTMNCgkJQzI3Ni45NDcsNDY0LjkxNSwyODkuODMzLDQ3NSwzMTQuMTcsNDc1YzI0LjMzOCwwLDM3LjIyNC0xMC4wODUsNDcuNTc3LTE4LjE4OEMzNzAuNTEsNDQ5Ljk1NSwzNzYuODQxLDQ0NSwzOTAuODM1LDQ0NQ0KCQljMTMuOTk1LDAsMjAuMzI1LDQuOTU1LDI5LjA4OCwxMS44MTNDNDMwLjI3Nyw0NjQuOTE1LDQ0My4xNjIsNDc1LDQ2Ny41LDQ3NXYtMzBjLTEzLjk5NCwwLTIwLjMyNS00Ljk1NS0yOS4wODctMTEuODEzDQoJCUM0MjguMDU5LDQyNS4wODUsNDE1LjE3NCw0MTUsMzkwLjgzNSw0MTV6Ii8+DQoJPHBvbHlnb24gcG9pbnRzPSIxODQuMzc4LDI1OC4zMjMgMjIyLjUsMjM2LjMxMyAyMjIuNSwyODAuMzMzIDI1Mi41LDI4MC4zMzMgMjUyLjUsMjM2LjMxMyAyOTAuNjIyLDI1OC4zMjMgMzA1LjYyMiwyMzIuMzQzDQoJCTI2Ny41LDIxMC4zMzMgMzA1LjYyMiwxODguMzIzIDI5MC42MjIsMTYyLjM0MyAyNTIuNSwxODQuMzUzIDI1Mi41LDE0MC4zMzMgMjIyLjUsMTQwLjMzMyAyMjIuNSwxODQuMzUzIDE4NC4zNzgsMTYyLjM0Mw0KCQkxNjkuMzc4LDE4OC4zMjMgMjA3LjUsMjEwLjMzMyAxNjkuMzc4LDIzMi4zNDMgCQkJIi8+DQoJPHBvbHlnb24gcG9pbnRzPSIyNC4wOTUsMTE3Ljk5IDYyLjIxNiw5NS45OCA2Mi4yMTYsMTQwIDkyLjIxNiwxNDAgOTIuMjE2LDk1Ljk4IDEzMC4zMzgsMTE3Ljk5IDE0NS4zMzgsOTIuMDEgMTA3LjIxNiw3MA0KCQkxNDUuMzM4LDQ3Ljk5IDEzMC4zMzgsMjIuMDEgOTIuMjE2LDQ0LjAyIDkyLjIxNiwwIDYyLjIxNiwwIDYyLjIxNiw0NC4wMiAyNC4wOTUsMjIuMDEgOS4wOTUsNDcuOTkgNDcuMjE3LDcwIDkuMDk1LDkyLjAxDQoJCSIvPg0KCTxwb2x5Z29uIHBvaW50cz0iMzQ0LjY2MiwxMTcuOTkgMzgyLjc4NCw5NS45OCAzODIuNzg0LDE0MCA0MTIuNzg0LDE0MCA0MTIuNzg0LDk1Ljk4IDQ1MC45MDUsMTE3Ljk5IDQ2NS45MDUsOTIuMDEgNDI3Ljc4Myw3MA0KCQk0NjUuOTA1LDQ3Ljk5IDQ1MC45MDUsMjIuMDEgNDEyLjc4NCw0NC4wMiA0MTIuNzg0LDAgMzgyLjc4NCwwIDM4Mi43ODQsNDQuMDIgMzQ0LjY2MiwyMi4wMSAzMjkuNjYyLDQ3Ljk5IDM2Ny43ODQsNzANCgkJMzI5LjY2Miw5Mi4wMSAJCQkiLz4NCjwvZz4NCjwvc3ZnPg0K",Computer:xle,Consumption:kle,Curtains:Yle,Dishwashers:Qle,Doors:vle,Doorstep:Ule,Dryer:ble,Fan:$le,"Floor Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM3Ny4wMTggMTA0LjQtNTQuODYxLTkzLjQxNmMtMy45OC02Ljc3NS0xMS4zMzQtMTAuOTg0LTE5LjE5MS0xMC45ODRoLTkxLjY1NWMtNy42OTcgMC0xNC45NzMgNC4wNzktMTguOTg3IDEwLjY0NGwtNTcuMTM1IDkzLjQxNGMtOS4wNTUgMTQuODAzIDEuNjI2IDMzLjg3IDE4Ljk4NyAzMy44N2gyOC4xODJjMi4yMjIgMzMuNDUyIDI2LjgwOCA2MC44ODQgNTguOTE2IDY3LjQxLS4yNzQgMS44MjYtLjE4NC0xMy41MS0uMTg0IDIxNy4xOTVoLTM3LjQ4NGMtMTEuODk4IDAtMjEuNTc5IDkuNjgtMjEuNTc5IDIxLjU3OXY0Ni4zMWMwIDExLjg5OCA5LjY4IDIxLjU3OSAyMS41NzkgMjEuNTc5aDEwNC43OWMxMS44OTkgMCAyMS41NzktOS42OCAyMS41NzktMjEuNTc5di00Ni4zMWMwLTExLjg5OC05LjY4LTIxLjU3OS0yMS41NzktMjEuNTc5aC0zNy40ODRjMC0yMzAuNzY2LjA5LTIxNS4zNy0uMTg0LTIxNy4xOTUgMjIuMDI1LTQuNDc2IDQwLjUwNS0xOC43OTUgNTAuNjY2LTM4LjE0MXYzNy42MzFjMCA4LjIzNSA2LjY3NiAxNC45MTEgMTQuOTExIDE0LjkxMXMxNC45MTEtNi42NzYgMTQuOTExLTE0LjkxMXYtNjYuOWg2LjYxYzE3LjE2NiAwIDI3Ljg5My0xOC43MDggMTkuMTkyLTMzLjUyOHptLTc2Ljg2NiAzNzcuNzc4aC04OC4zMDJ2LTI5LjgyMmg4OC4zMDJ6bS04NC41OTktNDUyLjM1Nmg4My4wODNsNDUuOTc0IDc4LjI4NGMtNy4wNjEgMC0xNjkuOTAzIDAtMTc2LjkzOCAwem00MC40NDcgMTQ3LjE3MmMtMjIuNTk1IDAtNDEuMjY3LTE3LjExNy00My43MjktMzkuMDY2aDg3LjQ1OGMtMi40NjIgMjEuOTQ5LTIxLjEzNCAzOS4wNjYtNDMuNzI5IDM5LjA2NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Garage Doors":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIsNjRjNC40MTgsMCw4LTMuNTgyLDgtOFY4YzAtNC40MTgtMy41ODItOC04LThIOEMzLjU4MiwwLDAsMy41ODIsMCw4djQ4YzAsNC40MTgsMy41ODIsOCw4LDhoMTZ2NDAwSDgNCgkJYy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDQ2NGM0LjQxOCwwLDgtMy41ODIsOC04cy0zLjU4Mi04LTgtOGgtMTZWNjRINDcyeiBNNDA4LDQ2NEg3MnYtNDhoMzM2VjQ2NHogTTQwOCw0MDBINzJ2LTQ4DQoJCWgzMzZWNDAweiBNNDA4LDMzNkg3MnYtNDhoMzM2VjMzNnogTTQwOCwyNzJINzJ2LTQ4aDMzNlYyNzJ6IE00MDgsMjA4SDcydi00OGgzMzZWMjA4eiBNNDA4LDE0NEg3MlY5NmgzMzZWMTQ0eiBNNDQwLDQ2NGgtMTZWODgNCgkJYzAtNC40MTgtMy41ODItOC04LThINjRjLTQuNDE4LDAtOCwzLjU4Mi04LDh2Mzc2SDQwVjY0aDQwMFY0NjR6IE0xNiw0OFYxNmg0NDh2MzJIMTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTYsNDU2aDQ4YzQuNDE4LDAsOC0zLjU4Miw4LThzLTMuNTgyLTgtOC04aC00OGMtNC40MTgsMC04LDMuNTgyLTgsOFMyMTEuNTgyLDQ1NiwyMTYsNDU2eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Gates:Ple,Hairdryer:Wle,Handle:Rle,"Hanging Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTkzLjUyNSAzNTkuNzcxaDEwNy44ODV2NC4xMjlhNTMuMDcyIDUzLjA3MiAwIDEgMCAxMDYuMTQ0IDB2LTQuMTI0aDExMC45MjFhNiA2IDAgMCAwIDYtNmMwLTgyLjAxNS01OC45MTMtMTUwLjUxOC0xMzYuNjQtMTY1LjQ0NHYtMjAuMzE5YTMxLjg4MyAzMS44ODMgMCAwIDAgLTI1LjgzNS0zMS4yNnYtMTIwLjc1M2E2IDYgMCAwIDAgLTEyIDB2MTIwLjc1M2EzMS44ODMgMzEuODgzIDAgMCAwIC0yNS44MzUgMzEuMjZ2MjAuMzE0Yy03Ny43MjcgMTQuOTI2LTEzNi42NCA4My40MjktMTM2LjY0IDE2NS40NDRhNiA2IDAgMCAwIDYgNnptMjAyLjAyOSA0LjEyOWE0MS4wNzIgNDEuMDcyIDAgMSAxIC04Mi4xNDQgMHYtNC4xMjRoODIuMTQ0em0tMzkuNTU0LTIxNS43MjJhMTkuODUxIDE5Ljg1MSAwIDAgMSAxOS4xOCAxNC44NjhoLTM4LjM2YTE5Ljg1MSAxOS44NTEgMCAwIDEgMTkuMTgtMTQuODY4em0tMTkuODM1IDI2Ljg2OGgzOS42N3YxMS40MjRhMTY4LjI4OCAxNjguMjg4IDAgMCAwIC0zOS42NyAwem0xOS44MzUgMjIuMjU0Yzg0LjI3NCAwIDE1My4yIDY2Ljk2IDE1Ni4zNjEgMTUwLjQ3NGgtMzEyLjcyMmMzLjE2MS04My41MTcgNzIuMDg3LTE1MC40NzQgMTU2LjM2MS0xNTAuNDc0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjUwIDQ1NS41MDh2NDAuNDkyYTYgNiAwIDAgMCAxMiAwdi00MC40OTJhNiA2IDAgMCAwIC0xMiAweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzAzLjQyMiA0MzEuNDg4YTYgNiAwIDAgMCAtLjA3NSA4LjQ4NWwyOC4zNDQgMjguODUxYTYgNiAwIDAgMCA4LjU2MS04LjQxbC0yOC4zNDQtMjguODUxYTYgNiAwIDAgMCAtOC40ODYtLjA3NXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMC4wOTIgNDMxLjU2My0yOC4zNDQgMjguODUxYTYgNiAwIDAgMCA4LjU2MSA4LjQxbDI4LjM0NC0yOC44NTFhNiA2IDAgMCAwIC04LjU2MS04LjQxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg2Ljc1IDIzNi44MWExNjguNzMxIDE2OC43MzEgMCAwIDAgLTQ1LjkyNyA0OC4xNDMgNiA2IDAgMSAwIDEwLjE0MSA2LjQxNyAxNTYuNzgxIDE1Ni43ODEgMCAwIDEgNDIuNjc3LTQ0LjczNiA2IDYgMCAwIDAgLTYuODkxLTkuODI0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Heater:Jle,Hoods:Ble,"Hot Water":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMCA1MTAiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5NSAyNDEuOTAyYy0xOC4yMjMgMC0zMy4zNTgtNS45MzctNDUuMDkyLTE3LjYydi0xNDkuMzU0YzAtNDEuMzE1LTMzLjYxMy03NC45MjgtNzQuOTI5LTc0LjkyOHMtNzQuOTI4IDMzLjYxMy03NC45MjggNzQuOTI4djE0OS4zOTVjLTI0LjI1NCAyNC4xMDctNjkuNDc2IDI0LjQxNS05My42NjMtMy44MDMtNS45ODEtNi45NzgtMTYuNzkzLTYuOTgyLTIyLjc3NyAwLTI0LjU4NiAyOC42ODUtNzIuNTM4IDI4Ljc5OC05Ny4yMjMgMC02LjMyMi03LjM3OC0xNy44NjctNi44NjctMjMuNTM3Ljk2My0uMTQ4LjIwNC0xNS42ODggMjAuNDE4LTQ3Ljg1MiAyMC40MTgtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXM2LjcxNiAxNSAxNSAxNWMyOC42MzIgMCA0OC40ODktMTEuMjggNjAuMDI3LTIwLjYyNCAzMy40NDcgMjcuNjE1IDg2LjUxMiAyNy42MjUgMTE5Ljk3My0uMDIyIDMwLjE5MSAyNC45NDQgNzQuMzYyIDI2LjE3OSAxMDUuMDUyIDkuOTU3djQwLjQ3MWMtMjcuOTg0IDIzLjEzMS00My44MTEgNTcuODc4LTQyLjY1OCA5NC40NTMgMS45NzQgNjIuNzI4IDUzLjc0MyAxMTMuODY0IDExNy41ODYgMTEzLjg2NCA2NC44NzEgMCAxMTcuNjQ3LTUyLjc3NiAxMTcuNjQ3LTExNy42NDYgMC0zNS4wNy0xNS44MzctNjguNDA2LTQyLjcxOS05MC42NjZ2LTQwLjQ5N2MxMy4zMjUgNy4wNTIgMjguNTE3IDEwLjcxIDQ1LjA5MiAxMC43MSA4LjI4NCAwIDE1LTYuNzE2IDE1LTE1cy02LjcxNS0xNC45OTktMTQuOTk5LTE0Ljk5OXptLTEyMC4wMi0yMTEuOTAyYzI0Ljc3MyAwIDQ0LjkyOCAyMC4xNTUgNDQuOTI4IDQ0LjkyOHYxNDkuNTM3Yy04LjMxNCA4LjIxMS0xOC4zMjcgMTMuNTUxLTI5LjkyOSAxNS45NTN2LTE0My45NTdjMC04LjI4NC02LjcxNi0xNS0xNS0xNXMtMTUgNi43MTYtMTUgMTV2MTQzLjk0N2MtMTEuNjAzLTIuNDA5LTIxLjYxNS03Ljc1OS0yOS45MjgtMTUuOTgzdi0xNDkuNDk3Yy4wMDEtMjQuNzczIDIwLjE1Ni00NC45MjggNDQuOTI5LTQ0LjkyOHptLS4wMDEgMzQzLjUwNGMxMC41MzIgMCAxOS4xMDEgOC41NjggMTkuMTAxIDE5LjFzLTguNTY4IDE5LjEtMTkuMTAxIDE5LjFjLTEwLjUzMSAwLTE5LjEtOC41NjgtMTkuMS0xOS4xczguNTY5LTE5LjEgMTkuMS0xOS4xem04Ny42NDggMTguODVjMCA0OC4zMjktMzkuMzE4IDg3LjY0Ni04Ny42NDcgODcuNjQ2LTQ2LjgzMSAwLTg2LjEyOS0zOC4wNDQtODcuNjAyLTg0LjgwOC0uOTItMjkuMjE4IDEyLjcwNC01Ni44NzUgMzYuNDQzLTczLjk4MSAzLjkxMi0yLjgxOSA2LjIzLTcuMzQ3IDYuMjMtMTIuMTY5di00Ny43NzRjOS4xNDggNC44MiAxOS4xNzcgOC4wMzMgMjkuOTI4IDkuNTY4djc1LjAyYy0xOS43NTggNi4zNTUtMzQuMSAyNC45MDUtMzQuMSA0Ni43NDggMCAyNy4wNzQgMjIuMDI2IDQ5LjEgNDkuMSA0OS4xczQ5LjEwMS0yMi4wMjYgNDkuMTAxLTQ5LjFjMC0yMS44NDMtMTQuMzQyLTQwLjM5My0zNC4xMDEtNDYuNzQ4di03NS4wMTRjMTAuNzUtMS41MzEgMjAuNzgtNC43MzggMjkuOTI5LTkuNTUydjQ3Ljc1M2MwIDQuODIyIDIuMzE4IDkuMzUxIDYuMjMgMTIuMTY5IDIyLjg0OCAxNi40NjMgMzYuNDg5IDQzLjA1OSAzNi40ODkgNzEuMTQyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTc4LjE5IDMwOC4zMzJjLTI0LjgxMyAwLTQ1IDIwLjE4Ny00NSA0NXMyMC4xODcgNDUgNDUgNDUgNDUtMjAuMTg3IDQ1LTQ1LTIwLjE4Ni00NS00NS00NXptMCA2MGMtOC4yNzEgMC0xNS02LjcyOS0xNS0xNXM2LjcyOS0xNSAxNS0xNSAxNSA2LjcyOSAxNSAxNS02LjcyOCAxNS0xNSAxNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTczLjg1NyAzNzkuMTE3Yy0yNC44MTMgMC00NSAyMC4xODctNDUgNDVzMjAuMTg3IDQ1IDQ1IDQ1IDQ1LTIwLjE4NyA0NS00NS0yMC4xODYtNDUtNDUtNDV6bTAgNjBjLTguMjcxIDAtMTUtNi43MjktMTUtMTVzNi43MjktMTUgMTUtMTUgMTUgNi43MjkgMTUgMTUtNi43MjggMTUtMTUgMTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02NC44NjMgMTU0LjE0M2MtNS44NTggNS44NTgtNS44NTggMTUuMzU1IDAgMjEuMjEzIDUuODU3IDUuODU3IDE1LjM1NSA1Ljg1OCAyMS4yMTMgMCAyMS4wNDYtMjEuMDQ2IDIxLjA0Ni01NS4yOTEgMC03Ni4zMzgtOS4zNzEtOS4zNy05LjM3My0yNC41MzkgMC0zMy45MTEgNS44NTgtNS44NTggNS44NTgtMTUuMzU1IDAtMjEuMjEzLTUuODU3LTUuODU4LTE1LjM1NS01Ljg1Ny0yMS4yMTMgMC0yMS4wOTYgMjEuMDk2LTIxLjA5OCA1NS4yNDEgMCA3Ni4zMzggOS4zNDkgOS4zNDkgOS4zNDkgMjQuNTYxIDAgMzMuOTExeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQyLjI1MSAxNTQuMTQzYy01Ljg1OCA1Ljg1OC01Ljg1OCAxNS4zNTUgMCAyMS4yMTMgNS44NTcgNS44NTggMTUuMzU0IDUuODU4IDIxLjIxMyAwIDIxLjA5Ny0yMS4wOTcgMjEuMDk4LTU1LjI0IDAtNzYuMzM5LTkuMzcxLTkuMzctOS4zNzMtMjQuNTM5IDAtMzMuOTExIDUuODU4LTUuODU4IDUuODU4LTE1LjM1NSAwLTIxLjIxMy01Ljg1Ni01Ljg1OC0xNS4zNTQtNS44NTctMjEuMjEzIDAtMjEuMDk2IDIxLjA5Ni0yMS4wOTggNTUuMjQxIDAgNzYuMzM4IDkuMzcxIDkuMzcxIDkuMzczIDI0LjUzOSAwIDMzLjkxMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxOS42MzkgMTU0LjE0M2MtNS44NTggNS44NTgtNS44NTggMTUuMzU1IDAgMjEuMjEzIDUuODU3IDUuODU4IDE1LjM1NCA1Ljg1OCAyMS4yMTMgMCAyMS4wOTctMjEuMDk3IDIxLjA5OC01NS4yNCAwLTc2LjMzOS05LjM3MS05LjM3LTkuMzczLTI0LjUzOSAwLTMzLjkxMSA1Ljg1OC01Ljg1OCA1Ljg1OC0xNS4zNTUgMC0yMS4yMTMtNS44NTYtNS44NTgtMTUuMzU0LTUuODU3LTIxLjIxMyAwLTIxLjA5NiAyMS4wOTYtMjEuMDk4IDU1LjI0MSAwIDc2LjMzOCA5LjM3IDkuMzcxIDkuMzczIDI0LjUzOSAwIDMzLjkxMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Humidity:Gle,Iron:Fle,Irrigation:Hle,"Led Strip":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0xNiAxOGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2IDI2YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgNDJhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNiA1MGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2IDU4YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMzRhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMiA2Mmg4YTEgMSAwIDAgMCAxLTF2LTQ5aDZ2NDFhMSAxIDAgMCAwIC4yOTMuNzA3bDggOGExIDEgMCAwIDAgLjcwNy4yOTNoOGExIDEgMCAwIDAgLjcwNy0uMjkzbDgtOGExIDEgMCAwIDAgLjI5My0uNzA3di01MGExIDEgMCAwIDAgLTEtMWgtOGExIDEgMCAwIDAgLTEgMXY0OWgtNnYtNDlhMSAxIDAgMCAwIC0xLTFoLTE2YTEgMSAwIDAgMCAtLjcwNy4yOTNsLTggOGExIDEgMCAwIDAgLS4yOTMuNzA3djUwYTEgMSAwIDAgMCAxIDF6bTMzLTEzdi00NWg2djQ4LjU4NmwtNiA2em0tOCA1aDZ2NmgtNnptLTgtNXYtNDVoNnY1NC41ODZsLTYtNnptLTgtNDVoNnY2aC02em0tOCA1MXYtNDMuNTg2bDYtNnY1NC41ODZoLTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCA1MmEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDQ0YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDggMjhhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCAyMGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDEyYTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDggMzZhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMiA1MmEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDQ0YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMjhhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMiAyMGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDEyYTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMzZhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMyA2aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM5IDU2aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQgMzFoNXYyaC01eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNiAyNWgydjVoLTJ6IiB0cmFuc2Zvcm09Im1hdHJpeCguNiAtLjggLjggLjYgLTE5LjIgMTYuNikiLz4NCiAgICAgICAgPHBhdGggZD0ibTQuNSAzNS41aDV2MmgtNXoiIHRyYW5zZm9ybT0ibWF0cml4KC44IC0uNiAuNiAuOCAtMjAuNTA1IDExLjUwNSkiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDMxaDV2MmgtNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU0LjUgMjYuNWg1djJoLTV6IiB0cmFuc2Zvcm09Im1hdHJpeCguOCAtLjYgLjYgLjggLTUuMDk4IDM5LjcxMikiLz4NCiAgICAgICAgPHBhdGggZD0ibTU2IDM0aDJ2NWgtMnoiIHRyYW5zZm9ybT0ibWF0cml4KC42IC0uOCAuOCAuNiAtNi40IDYwLjIpIi8+DQogICAgPC9nPg0KPC9zdmc+",Light:Vle,Lightings:Zle,Lock:Xle,Louvre:Kle,"Mowing Machine":"PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ3IDU0YzUuNTE0IDAgMTAtNC40ODYgMTAtMTBzLTQuNDg2LTEwLTEwLTEwLTEwIDQuNDg2LTEwIDEwIDQuNDg2IDEwIDEwIDEwem0tNy45MzEtMTFjLjE4My0xLjQ1OC43NTktMi43OTIgMS42MTktMy44OThsMS4zNjIgMS4zNjMgMS40MTQtMS40MTQtMS4zNjItMS4zNjJjMS4xMDYtLjg2IDIuNDQtMS40MzYgMy44OTgtMS42MTl2MS45M2gydi0xLjkzMWMxLjQ1OC4xODMgMi43OTIuNzU5IDMuODk4IDEuNjE5bC0xLjM2MiAxLjM2MiAxLjQxNCAxLjQxNCAxLjM2Mi0xLjM2M2MuODYgMS4xMDYgMS40MzYgMi40NCAxLjYxOSAzLjg5OGgtMS45MzF2MmgxLjkzMWMtLjE4MyAxLjQ1OC0uNzU5IDIuNzkyLTEuNjE5IDMuODk4bC0xLjM2Mi0xLjM2My0xLjQxNCAxLjQxNCAxLjM2MiAxLjM2MmMtMS4xMDYuODYtMi40NCAxLjQzNi0zLjg5OCAxLjYxOXYtMS45MjloLTJ2MS45MzFjLTEuNDU4LS4xODMtMi43OTItLjc1OS0zLjg5OC0xLjYxOWwxLjM2Mi0xLjM2Mi0xLjQxNC0xLjQxNC0xLjM2MiAxLjM2M2MtLjg2LTEuMTA2LTEuNDM2LTIuNDQtMS42MTktMy44OThoMS45MzF2LTJoLTEuOTMxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMjFoLTI0Ljk4Yy0xLjUxMSAwLTIuOTg0LjQyNi00LjI2MiAxLjIyOWwtMjIuMDIxIDEzLjg2NmMtMi4zNCAxLjQ3My0zLjczNyA0LjAwNS0zLjczNyA2Ljc2OXY2LjEzNmMwIC41NTMuNDQ4IDEgMSAxaDMzLjA4OGMuMzQxIDAgLjY1OC0uMTc0Ljg0Mi0uNDYuMTg0LS4yODcuMjA5LS42NDcuMDY3LS45NTctLjc1LTEuNjM1LTEuMDgtMy4zODctLjk3OS01LjIwOC4zMDktNS41OTEgNC45MzYtMTAuMTQ1IDEwLjUzNS0xMC4zNjYgMy4wMjgtLjExNiA1Ljg5Mi45NjcgOC4wNjkgMy4wNiAyLjE3OCAyLjA5MyAzLjM3OCA0LjkxIDMuMzc4IDcuOTMxIDAgLjU1My40NDggMSAxIDFoM2MuNTUyIDAgMS0uNDQ3IDEtMXYtMTdjMC0zLjMwOS0yLjY5MS02LTYtNnptLTI4LjE3NyAyLjkyM2MuOTU5LS42MDQgMi4wNjQtLjkyMyAzLjE5Ny0uOTIzaDEwLjM3bC04LjM5MSA1LjAzNXYtLjAzNWgtMTEuNjUxem0tMjIuMDIgMTMuODY0IDEyLjM2OC03Ljc4N2gxMS41NTJsLTE4LjIzMyAxMC45NGMtMS4xNTcuNjk0LTIuNDggMS4wNi0zLjgyNyAxLjA2aC00LjU5NmMuMjQ4LTEuNzI4IDEuMjI5LTMuMjYzIDIuNzM2LTQuMjEzem01NC4xOTcgNS4yMTNoLTEuMDM4Yy0uMjM5LTMuMTg4LTEuNjIzLTYuMTMyLTMuOTU1LTguMzc0LTIuNTczLTIuNDczLTUuOTYzLTMuNzUtOS41MzQtMy42MTUtNi4xOS4yNDUtMTEuMzc0IDQuOTctMTIuMzE3IDEwLjk4OWgtMTcuMTU2djJoMTcuMDEzYy4wMDIgMS4zNjEuMjAyIDIuNzE1LjYxNSA0aC0zMC42Mjh2LTRoNC42NjNjMS43MDkgMCAzLjM4OS0uNDY1IDQuODU2LTEuMzQ1bDMyLjc1OC0xOS42NTVoMTAuNzIzYzIuMjA2IDAgNCAxLjc5NCA0IDR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA0OGMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMC02YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMi0yLS44OTctMi0yIC44OTctMiAyLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02LjY1MSAxNS42MzVjLTEuNzU3IDIuMTI1LTEuNDU4IDUuMjgyLjY2NyA3LjA0bDQuNjI0IDMuODIzYy4xODcuMTU0LjQxMi4yMjkuNjM3LjIyOS4yODggMCAuNTczLS4xMjQuNzcxLS4zNjIgMS43NTctMi4xMjUgMS40NTgtNS4yODItLjY2Ny03LjA0bC00LjYyNC0zLjgyM2MtLjQyNi0uMzUyLTEuMDU2LS4yOTItMS40MDguMTMzem01LjY2MiA4LjU3Ni0zLjcyMS0zLjA3N2MtMS4wMDQtLjgzMS0xLjMyOS0yLjE4NS0uOTA1LTMuMzQ1bDMuNzIxIDMuMDc3YzEuMDA1LjgzMSAxLjMyOSAyLjE4NS45MDUgMy4zNDV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMS40NDUgOS4yMjktNC42MjQgMy44MjNjLTIuMTI1IDEuNzU4LTIuNDI0IDQuOTE2LS42NjcgNy4wNC4xOTguMjM5LjQ4My4zNjIuNzcxLjM2Mi4yMjUgMCAuNDUtLjA3NS42MzctLjIyOWw0LjYyNC0zLjgyM2MyLjEyNS0xLjc1NyAyLjQyNC00LjkxNS42NjctNy4wNC0uMzUyLS40MjQtLjk4My0uNDg0LTEuNDA4LS4xMzN6bS0uNTMzIDUuNjMyLTMuNzIyIDMuMDc4Yy0uMTUyLS40MTUtLjIxMS0uODYzLS4xNjgtMS4zMTYuMDc2LS43OTguNDU4LTEuNTE5IDEuMDc1LTIuMDI5bDMuNzIxLTMuMDc3Yy40MjMgMS4xNi4wOTkgMi41MTMtLjkwNiAzLjM0NHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Music:qle,"Outdoor Blinds":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ1NyAwaC00MDJjLTMwLjMyNyAwLTU1IDI0LjY3My01NSA1NXY0NTdoNDMydi00MDguMDM1YzcuNTA3IDMuODQ4IDE2IDYuMDM1IDI1IDYuMDM1IDMwLjMyNyAwIDU1LTI0LjY3MyA1NS01NXMtMjQuNjczLTU1LTU1LTU1em0tNDAyIDMwaDM1My4wMzVjLTMuODQ4IDcuNTA3LTYuMDM1IDE2LTYuMDM1IDI1djdoLTM3MnYtN2MwLTEzLjc4NSAxMS4yMTUtMjUgMjUtMjV6bS0yNSAyNzJ2LTMwaDM3MnYzMHptMzcyIDMwdjMwaC0zNzJ2LTMwem0tMzcyLTkwdi0zMGgzNzJ2MzB6bTAtNjB2LTMwaDM3MnYzMHptMC02MHYtMzBoMzcydjMwem0wIDM2MHYtOTBoMzcydjkwem00MjctNDAyYy0xMy43ODUgMC0yNS0xMS4yMTUtMjUtMjVzMTEuMjE1LTI1IDI1LTI1IDI1IDExLjIxNSAyNSAyNS0xMS4yMTUgMjUtMjUgMjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02MCA0MjJoMzB2MzBoLTMweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQyIDQyMmgzMHYzMGgtMzB6Ii8+DQogICAgPC9nPg0KPC9zdmc+",People:eNe,Pool:tNe,"Power Consumption":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0xMiAzYy0uMjc2IDAtLjUtLjIyNC0uNS0uNXYtMmMwLS4yNzYuMjI0LS41LjUtLjVzLjUuMjI0LjUuNXYyYzAgLjI3Ni0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4LjcxOCA1Ljc4MmMtLjEyOCAwLS4yNTYtLjA0OS0uMzU0LS4xNDYtLjE5NS0uMTk1LS4xOTUtLjUxMiAwLS43MDdsMS40MTQtMS40MTRjLjE5NS0uMTk1LjUxMi0uMTk1LjcwNyAwcy4xOTUuNTEyIDAgLjcwN2wtMS40MTQgMS40MTRjLS4wOTcuMDk3LS4yMjUuMTQ2LS4zNTMuMTQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjMuNSAxMi41aC0yYy0uMjc2IDAtLjUtLjIyNC0uNS0uNXMuMjI0LS41LjUtLjVoMmMuMjc2IDAgLjUuMjI0LjUuNXMtLjIyNC41LS41LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMC4xMzIgMjAuNjMyYy0uMTI4IDAtLjI1Ni0uMDQ5LS4zNTQtLjE0NmwtMS40MTQtMS40MTRjLS4xOTUtLjE5NS0uMTk1LS41MTIgMC0uNzA3cy41MTItLjE5NS43MDcgMGwxLjQxNCAxLjQxNGMuMTk1LjE5NS4xOTUuNTEyIDAgLjcwNy0uMDk3LjA5Ny0uMjI1LjE0Ni0uMzUzLjE0NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEyIDI0Yy0uMjc2IDAtLjUtLjIyNC0uNS0uNXYtMmMwLS4yNzYuMjI0LS41LjUtLjVzLjUuMjI0LjUuNXYyYzAgLjI3Ni0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMuODY4IDIwLjYzMmMtLjEyOCAwLS4yNTYtLjA0OS0uMzU0LS4xNDYtLjE5NS0uMTk1LS4xOTUtLjUxMiAwLS43MDdsMS40MTQtMS40MTRjLjE5NS0uMTk1LjUxMi0uMTk1LjcwNyAwcy4xOTUuNTEyIDAgLjcwN2wtMS40MTQgMS40MTRjLS4wOTcuMDk3LS4yMjUuMTQ2LS4zNTMuMTQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMi41IDEyLjVoLTJjLS4yNzYgMC0uNS0uMjI0LS41LS41cy4yMjQtLjUuNS0uNWgyYy4yNzYgMCAuNS4yMjQuNS41cy0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUuMjgyIDUuNzgyYy0uMTI4IDAtLjI1Ni0uMDQ5LS4zNTQtLjE0NmwtMS40MTMtMS40MTRjLS4xOTUtLjE5NS0uMTk1LS41MTIgMC0uNzA3cy41MTItLjE5NS43MDcgMGwxLjQxNCAxLjQxNGMuMTk1LjE5NS4xOTUuNTEyIDAgLjcwNy0uMDk4LjA5Ny0uMjI2LjE0Ni0uMzU0LjE0NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwLjU3MyAyMGMtLjA1OSAwLS4xMTctLjAxLS4xNzUtLjAzMS0uMjE5LS4wODItLjM1Mi0uMzA0LS4zMjEtLjUzNGwuODUzLTYuNDM1aC0zLjQzYy0uMTg5IDAtLjM2Mi0uMTA3LS40NDctLjI3NnMtLjA2Ny0uMzcyLjA0Ny0uNTI0bDYtOGMuMTM5LS4xODYuMzg2LS4yNTIuNTk3LS4xNi4yMTIuMDkxLjMzNS4zMTQuMjk3LjU0MmwtLjkwNCA1LjQxOGgzLjQxYy4xODQgMCAuMzUzLjEwMS40NC4yNjNzLjA3OC4zNTgtLjAyMi41MTNsLTUuOTI3IDljLS4wOTUuMTQzLS4yNTQuMjI0LS40MTguMjI0em0tMi4wNzMtOGgzYy4xNDUgMCAuMjgxLjA2My4zNzYuMTcxLjA5NS4xMDcuMTM5LjI1Mi4xMi4zOTVsLS42NDEgNC44MzggNC4yMTctNi40MDRoLTMuMDcyYy0uMTQ3IDAtLjI4Ni0uMDY0LS4zODItLjE3Ny0uMDk1LS4xMTItLjEzNi0uMjYxLS4xMTEtLjQwNWwuNjYzLTMuOTc4eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Printer:sNe,Pump:iNe,Receiver:rNe,Sconces:oNe,Security:MNe,Shading:nNe,Shutters:aNe,SmokeDetector:cNe,Sockets:uNe,Speaker:lNe,Stove:NNe,"Table Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTk3LjUgMjIwLjM2MS0xNS45MTQgMTUuOTE0YTYgNiAwIDEgMCA4LjQ4NCA4LjQ4NmwxNS45MTUtMTUuOTE1YTYgNiAwIDEgMCAtOC40ODQtOC40ODV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05NS41MSAxMTdhNiA2IDAgMCAwIDQuMjQzLTEwLjI0MmwtMTUuOTE0LTE1LjkxNWE2IDYgMCAwIDAgLTguNDg2IDguNDg2bDE1LjkxNCAxNS45MTRhNS45NzggNS45NzggMCAwIDAgNC4yNDMgMS43NTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzUuNSAyNDIuNTA4LTE1LjkxLTE1LjkxNGE2IDYgMCAwIDAgLTguNDg2IDguNDg1bDE1LjkxNCAxNS45MTVhNiA2IDAgMCAwIDguNDg2LTguNDg2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtODYuODI2IDE3MWE2IDYgMCAwIDAgLTYtNmgtMjQuODM3YTYgNiAwIDAgMCAwIDEyaDI0LjgzN2E2IDYgMCAwIDAgNi02eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTU1IDIzOS41MjFhNiA2IDAgMCAwIC02IDZ2MjQuODM2YTYgNiAwIDAgMCAxMiAwdi0yNC44MzZhNiA2IDAgMCAwIC02LTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzguODUyIDQ1MS45NjlhNDEuODM3IDQxLjgzNyAwIDAgMCAtNDEuMTY2LTM1Ljk2OWgtMjguNjg2di0zMjYuNjg0YTY5LjMwOSA2OS4zMDkgMCAwIDAgLTEyMS43LTQ1LjM4MiA1Ni4wMjIgNTYuMDIyIDAgMCAwIC00OC43MDkgNi4zNDlsLTgxLjUxOSA1NC4wNjhhNiA2IDAgMCAwIC0uOTI1IDkuMjQybDIzLjQyMiAyMy40MjMtMS40NDIgMS40NDJhMzUuMTg4IDM1LjE4OCAwIDAgMCA0OS43NjMgNDkuNzYzbDEuNDQyLTEuNDQyIDIzLjQyMiAyMy40MjFhNiA2IDAgMCAwIDQuMjQ2IDEuNzU5Yy4yIDAgLjQtLjAxLjYtLjAzYTYgNiAwIDAgMCA0LjQtMi42NTRsNTQuMDY3LTgxLjUxOWE1Ni4wODggNTYuMDg4IDAgMCAwIDMuNDg4LTU1LjY1NiAyNi4zODYgMjYuMzg2IDAgMCAxIDQ2LjQ0NSAxNy4yMTZ2MzI2LjY4NGgtMjkuMTgyYTQyIDQyIDAgMCAwIC00MS4zNDMgMzYuMDc2IDI2LjQgMjYuNCAwIDAgMCAtMjIuNDc1IDI1Ljk1NnY3Ljk2OGE2LjI4MiA2LjI4MiAwIDAgMCA2LjMxOSA2aDIxNi42OTJhNS45OTIgNS45OTIgMCAwIDAgNS45ODktNnYtNy45NjhhMjYuMjQ3IDI2LjI0NyAwIDAgMCAtMjMuMTQ4LTI2LjA2M3ptLTI1OS40NTItMjcyLjIzNGEyMy4xODggMjMuMTg4IDAgMCAxIC0zMi43OTMtMzIuNzkybDEuNDQzLTEuNDQzIDMyLjc5MyAzMi43OTN6bTM2LjY0OCAxNi43OTQtODYuMjMtODYuMjI5IDE4LjA5My0xMiA4MC4xNCA4MC4xNHptNTAuMDEyLTc1LjQtMzEuMjQ2IDQ3LjExLTc2LjctNzYuNzA1IDQ3LjExLTMxLjI0NmE0My44OTQgNDMuODk0IDAgMCAxIDYwLjg0IDYwLjg0MXptMzMuNTI4LTcwLjI3MmEzOC4yNTIgMzguMjUyIDAgMCAwIC0yNi42ODggMTAuODIzIDU0LjYyIDU0LjYyIDAgMCAwIC0xNC4xODYtMTIuNDM1IDU3LjMxIDU3LjMxIDAgMCAxIDk4LjI4NiA0MC4wNzF2MzI2LjY4NGgtMTl2LTMyNi42ODRhMzguNDYxIDM4LjQ2MSAwIDAgMCAtMzguNDA5LTM4LjQ2NHptLTIuNzcgMzc3LjE0M2gxMDAuODY4YzE0LjI1OSAwIDI2LjE5NSAxMSAyOC45NzYgMjRoLTE1OC44MTljMi43ODEtMTMgMTQuNzE2LTI0IDI4Ljk3NS0yNHptMTUzLjE4MiA1MmgtMjA1di0xLjk2OGExNC4zMiAxNC4zMiAwIDAgMSAxNC4zMTktMTQuMDMyaDE3Ni42OTJhMTQuMDM0IDE0LjAzNCAwIDAgMSAxMy45ODkgMTQuMDMyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzA1IDM4MS4wMzFhNiA2IDAgMCAwIDEyIDB2LTc1LjgwNmE2IDYgMCAwIDAgLTEyIDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMTEgMjkwLjg0NGE2IDYgMCAwIDAgNi02di00LjgzNGE2IDYgMCAwIDAgLTEyIDB2NC44MzRhNiA2IDAgMCAwIDYgNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Temperature Sensors":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNMzUyLDM4NS40MDZWNTMuMzMzQzM1MiwyMy45MjcsMzI4LjA3MywwLDI5OC42NjcsMHMtNTMuMzMzLDIzLjkyNy01My4zMzMsNTMuMzMzdjMzMi4wNzMNCgkJCQlDMjMxLjcxOSwzOTkuMzY1LDIyNCw0MTguMDMxLDIyNCw0MzcuMzMzQzIyNCw0NzguNSwyNTcuNSw1MTIsMjk4LjY2Nyw1MTJjNDEuMTY3LDAsNzQuNjY3LTMzLjUsNzQuNjY3LTc0LjY2Nw0KCQkJCUMzNzMuMzMzLDQxOC4wMzEsMzY1LjYxNSwzOTkuMzY1LDM1MiwzODUuNDA2eiBNMjk4LjY2Nyw0OTAuNjY3Yy0yOS40MDYsMC01My4zMzMtMjMuOTI3LTUzLjMzMy01My4zMzMNCgkJCQljMC0xNS4xMDQsNi4zMjMtMjkuMTI1LDE3LjgxMy0zOS40NjljMi4yNC0yLjAzMSwzLjUyMS00LjkwNiwzLjUyMS03LjkyN1Y1My4zMzNjMC0xNy42NDYsMTQuMzU0LTMyLDMyLTMyDQoJCQkJYzE3LjY0NiwwLDMyLDE0LjM1NCwzMiwzMnYzMzYuNjA0YzAsMy4wMjEsMS4yODEsNS44OTYsMy41MjEsNy45MjdDMzQ1LjY3Nyw0MDguMjA4LDM1Miw0MjIuMjI5LDM1Miw0MzcuMzMzDQoJCQkJQzM1Miw0NjYuNzQsMzI4LjA3Myw0OTAuNjY3LDI5OC42NjcsNDkwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwOS4zMzMsNDA3LjI5OFYyMjRjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N2MtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N3YxODMuMjk4DQoJCQkJYy0xMi4zODksNC40MTgtMjEuMzMzLDE2LjE0Ny0yMS4zMzMsMzAuMDM1YzAsMTcuNjQ2LDE0LjM1NCwzMiwzMiwzMmMxNy42NDYsMCwzMi0xNC4zNTQsMzItMzINCgkJCQlDMzMwLjY2Nyw0MjMuNDQ1LDMyMS43MjMsNDExLjcxNiwzMDkuMzMzLDQwNy4yOTh6IE0yOTguNjY3LDQ0OGMtNS44ODUsMC0xMC42NjctNC43ODEtMTAuNjY3LTEwLjY2Nw0KCQkJCWMwLTUuODg1LDQuNzgxLTEwLjY2NywxMC42NjctMTAuNjY3YzUuODg1LDAsMTAuNjY3LDQuNzgxLDEwLjY2NywxMC42NjdDMzA5LjMzMyw0NDMuMjE5LDMwNC41NTIsNDQ4LDI5OC42NjcsNDQ4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEzLjMzMywzNDEuMzMzaC02NGMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N2MwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3aDY0DQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDM0Ni4xMDQsMjE5LjIyOSwzNDEuMzMzLDIxMy4zMzMsMzQxLjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMy4zMzMsMjk4LjY2N0gxOTJjLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjdjMCw1Ljg5Niw0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2gyMS4zMzMNCgkJCQljNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N0MyMjQsMzAzLjQzOCwyMTkuMjI5LDI5OC42NjcsMjEzLjMzMywyOTguNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEzLjMzMywyNTZIMTkyYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3YzAsNS44OTYsNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdoMjEuMzMzDQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDI2MC43NzEsMjE5LjIyOSwyNTYsMjEzLjMzMywyNTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzMzLDIzNC42NjdoNjRjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N3MtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdoLTY0DQoJCQkJYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzE0My40MzgsMjM0LjY2NywxNDkuMzMzLDIzNC42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzMzLDEwNi42NjdoNjRjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N3MtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdoLTY0DQoJCQkJYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzE0My40MzgsMTA2LjY2NywxNDkuMzMzLDEwNi42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTMuMzMzLDE3MC42NjdIMTkyYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3YzAsNS44OTYsNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdoMjEuMzMzDQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDE3NS40MzgsMjE5LjIyOSwxNzAuNjY3LDIxMy4zMzMsMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMy4zMzMsMTI4SDE5MmMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N2MwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3aDIxLjMzMw0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3QzIyNCwxMzIuNzcxLDIxOS4yMjksMTI4LDIxMy4zMzMsMTI4eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Tv:LNe,"Vacuum Cleaner":"PHN2ZyB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDQwIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04LS4wMjczNDQtMjIuMDgyMDMxLTE3LjkxNzk2OS0zOS45NzI2NTYtNDAtNDAtNC40MTc5NjkgMC04LTMuNTgyMDMxLTgtOHMzLjU4MjAzMS04IDgtOGMzMC45MTQwNjIuMDM1MTU2IDU1Ljk2NDg0NCAyNS4wODU5MzggNTYgNTYgMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MDggOTZjLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzLTMuNTgyMDMxLTgtOC04LTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04YzEzLjI1MzkwNiAwIDI0IDEwLjc0NjA5NCAyNCAyNCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ3MiA5NmMtNC40MTc5NjkgMC04LTMuNTgyMDMxLTgtOC0uMDQ2ODc1LTM5Ljc0NjA5NC0zMi4yNTM5MDYtNzEuOTUzMTI1LTcyLTcyLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzMy41ODIwMzEtOCA4LThjNDguNTc4MTI1LjA1ODU5MzggODcuOTQxNDA2IDM5LjQyMTg3NSA4OCA4OCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IC4wMzUxNTYtMzAuOTE0MDYyIDI1LjA4NTkzOC01NS45NjQ4NDQgNTYtNTYgNC40MTc5NjkgMCA4IDMuNTgyMDMxIDggOHMtMy41ODIwMzEgOC04IDhjLTIyLjA4MjAzMS4wMjczNDQtMzkuOTcyNjU2IDE3LjkxNzk2OS00MCA0MCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTcyIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IDAtMTMuMjUzOTA2IDEwLjc0NjA5NC0yNCAyNC0yNCA0LjQxNzk2OSAwIDggMy41ODIwMzEgOCA4cy0zLjU4MjAzMSA4LTggOC04IDMuNTgyMDMxLTggOC0zLjU4MjAzMSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04IDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IC4wNTg1OTM4LTQ4LjU3ODEyNSAzOS40MjE4NzUtODcuOTQxNDA2MiA4OC04OCA0LjQxNzk2OSAwIDggMy41ODIwMzEgOCA4cy0zLjU4MjAzMSA4LTggOGMtMzkuNzQ2MDk0LjA0Njg3NS03MS45NTMxMjUgMzIuMjUzOTA2LTcyIDcyIDAgNC40MTc5NjktMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQwIDQxNmMyNi41MDc4MTIgMCA0OC0yMS40OTIxODggNDgtNDhzLTIxLjQ5MjE4OC00OC00OC00OC00OCAyMS40OTIxODgtNDggNDhjLjAyNzM0NCAyNi41IDIxLjUgNDcuOTcyNjU2IDQ4IDQ4em0wLTgwYzE3LjY3MTg3NSAwIDMyIDE0LjMyODEyNSAzMiAzMnMtMTQuMzI4MTI1IDMyLTMyIDMyLTMyLTE0LjMyODEyNS0zMi0zMiAxNC4zMjgxMjUtMzIgMzItMzJ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQwIDE4NGMxMy4yNTM5MDYgMCAyNC0xMC43NDYwOTQgMjQtMjRzLTEwLjc0NjA5NC0yNC0yNC0yNC0yNCAxMC43NDYwOTQtMjQgMjQgMTAuNzQ2MDk0IDI0IDI0IDI0em0wLTMyYzQuNDE3OTY5IDAgOCAzLjU4MjAzMSA4IDhzLTMuNTgyMDMxIDgtOCA4LTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxNy45NDUzMTIgMTUydi4wNDY4NzVoLjA1NDY4OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTIgMTUyaDQ4djE2aC00OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yODAgMTUyaDQ4djE2aC00OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDAgNDhjLTEwMS4yNjU2MjUtLjAxMTcxOS0xODguOTQ1MzEyIDcwLjMzMjAzMS0yMTAuODkwNjI1IDE2OS4xODc1LTIxLjk0NTMxMyA5OC44NTkzNzUgMjcuNzM0Mzc1IDE5OS42OTE0MDYgMTE5LjQ5MjE4NyAyNDIuNTMxMjUgNTcuOTI1NzgyIDI3LjAzNTE1NiAxMjQuODUxNTYzIDI3LjAzNTE1NiAxODIuNzgxMjUgMCA5MS43NTc4MTMtNDIuODM1OTM4IDE0MS40MzM1OTQtMTQzLjY2NDA2MiAxMTkuNDkyMTg4LTI0Mi41MjM0MzgtMjEuOTQxNDA2LTk4Ljg1NTQ2OC0xMDkuNjEzMjgxLTE2OS4xOTkyMTgtMjEwLjg3NS0xNjkuMTk1MzEyem0wIDE2YzEwNy4yODUxNTYuMTMyODEyIDE5NS4zOTg0MzggODQuODA0Njg4IDE5OS44MDA3ODEgMTkyaC0xNmMtNC41ODIwMzEtOTguMTc5Njg4LTg1LjUxNTYyNS0xNzUuNDIxODc1LTE4My44MDA3ODEtMTc1LjQyMTg3NXMtMTc5LjIxODc1IDc3LjI0MjE4Ny0xODMuODAwNzgxIDE3NS40MjE4NzVoLTE2YzQuNDAyMzQzLTEwNy4xOTUzMTIgOTIuNTE1NjI1LTE5MS44NjcxODggMTk5LjgwMDc4MS0xOTJ6bTI5LjExMzI4MSAyNDUuNDk2MDk0YzMwLjY4MzU5NCAxMS45ODgyODEgNTAuODgyODEzIDQxLjU1ODU5NCA1MC44ODY3MTkgNzQuNTAzOTA2djI3LjY0MDYyNWMtNDkuODc4OTA2IDI3LjE0NDUzMS0xMTAuMTIxMDk0IDI3LjE0NDUzMS0xNjAgMHYtMjcuNjQwNjI1Yy4wMDM5MDYtMjYuNDI5Njg4IDEzLjA2MjUtNTEuMTUyMzQ0IDM0Ljg4NjcxOS02Ni4wNTQ2ODggMjEuODI4MTI1LTE0LjkwNjI1IDQ5LjYwOTM3NS0xOC4wNjY0MDYgNzQuMjI2NTYyLTguNDQ5MjE4em02Ni44ODY3MTkgNzQuNTAzOTA2YzAtNTMuMDE5NTMxLTQyLjk4MDQ2OS05Ni05Ni05NnMtOTYgNDIuOTgwNDY5LTk2IDk2djE3LjczNDM3NWMtMzguODYzMjgxLTI2Ljk4MDQ2OS02NC41MDc4MTItNjkuMTMyODEzLTcwLjYwMTU2Mi0xMTYuMDQ2ODc1LTYuMDk3NjU3LTQ2LjkxNzk2OSA3LjkyNTc4MS05NC4yMjI2NTYgMzguNjAxNTYyLTEzMC4yMzgyODF2MzYuNTUwNzgxYy4wMjczNDQgMjIuMDgyMDMxIDE3LjkxNzk2OSAzOS45NzI2NTYgNDAgNDBoMTc2YzIyLjA4MjAzMS0uMDI3MzQ0IDM5Ljk3MjY1Ni0xNy45MTc5NjkgNDAtNDB2LTM2LjU1MDc4MWMzMC42NzU3ODEgMzYuMDE1NjI1IDQ0LjY5OTIxOSA4My4zMjAzMTIgMzguNjAxNTYyIDEzMC4yMzgyODEtNi4wOTM3NSA0Ni45MTQwNjItMzEuNzM4MjgxIDg5LjA2NjQwNi03MC42MDE1NjIgMTE2LjA0Njg3NXptLTIwOC0yNDQuODYzMjgxYzYzLjU4OTg0NC01Ny41MTU2MjUgMTYwLjQxMDE1Ni01Ny41MTU2MjUgMjI0IDB2NTIuODYzMjgxYzAgMTMuMjUzOTA2LTEwLjc0NjA5NCAyNC0yNCAyNGgtMTc2Yy0xMy4yNTM5MDYgMC0yNC0xMC43NDYwOTQtMjQtMjR6bS04Ny43MTA5MzggMTMyLjg2MzI4MWgxNmMyLjgzNTkzOCA2MS4wMzkwNjIgMzUuNjcxODc2IDExNi43MjI2NTYgODcuNzEwOTM4IDE0OC43NTM5MDZ2MTguNjQ0NTMyYy02MS40Mzc1LTMzLjg1MTU2My0xMDAuNzUzOTA2LTk3LjMxMjUtMTAzLjcxMDkzOC0xNjcuMzk4NDM4em0xMTkuNzEwOTM4IDE3NS4yNDYwOTR2LTE3LjY0NDUzMmM1MC41MDM5MDYgMjQuNTYyNSAxMDkuNDk2MDk0IDI0LjU2MjUgMTYwIDB2MTcuNjcxODc2Yy01MC45OTYwOTQgMjIuMzM1OTM3LTEwOS4wMDM5MDYgMjIuMzM1OTM3LTE2MCAwem0xNzYtNy44NDc2NTZ2LTE4LjY0NDUzMmM1Mi4wNDI5NjktMzIuMDI3MzQ0IDg0Ljg4NjcxOS04Ny43MTA5MzcgODcuNzI2NTYyLTE0OC43NTM5MDZoMTZjLTIuOTYwOTM3IDcwLjA4OTg0NC00Mi4yODUxNTYgMTMzLjU1MDc4MS0xMDMuNzI2NTYyIDE2Ny4zOTg0Mzh6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Ventilation:jNe,"Washing Machines":"PHN2ZyBoZWlnaHQ9IjQ5NnB0IiB2aWV3Qm94PSIwIDAgNDk2IDQ5NiIgd2lkdGg9IjQ5NnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00ODggMGgtNDAwYy00LjQyNTc4MSAwLTggMy41ODU5MzgtOCA4djI5Ni44MzIwMzFjLTIuNjAxNTYyLS41MjczNDMtNS4yNzM0MzgtLjgzMjAzMS04LS44MzIwMzEtMjIuMDU0Njg4IDAtNDAgMTcuOTQ1MzEyLTQwIDQwdi4xNjc5NjljLTcuODI0MjE5IDUuODg2NzE5LTEzLjE1MjM0NCAxNC4zOTg0MzctMTUuMTIxMDk0IDIzLjgzMjAzMWgtOC44Nzg5MDZjLTQuNDI1NzgxIDAtOCAzLjU4NTkzOC04IDh2MzJjMCA0LjQxNDA2MiAzLjU3NDIxOSA4IDggOGg4djI0YzAgMzAuODc4OTA2IDI1LjEyODkwNiA1NiA1NiA1Nmg0MTZjNC40MjU3ODEgMCA4LTMuNTg1OTM4IDgtOHYtNDgwYzAtNC40MTQwNjItMy41NzQyMTktOC04LTh6bS04IDE2djgwaC0zODR2LTgwem0tNDM1LjY1NjI1IDMzOS4xNzU3ODFjMi44Mzk4NDQtMS42MDE1NjIgNC40MzM1OTQtNC43NjE3MTkgNC4wMTU2MjUtOGwtLjEyODkwNi0uOTI5Njg3Yy0uMTAxNTYzLS43MzQzNzUtLjIzMDQ2OS0xLjQ2ODc1LS4yMzA0NjktMi4yNDYwOTQgMC0xMy4yMzA0NjkgMTAuNzY5NTMxLTI0IDI0LTI0IDguNDQ5MjE5IDAgMTYuMTIxMDk0IDQuNDA2MjUgMjAuNTI3MzQ0IDExLjgwMDc4MSAxLjE5OTIxOCAyLjAxNTYyNSAzLjIzNDM3NSAzLjQwNjI1IDUuNTUwNzgxIDMuNzkyOTY5IDIuMzI4MTI1LjM5ODQzOCA0LjY5OTIxOS0uMjY1NjI1IDYuNDk2MDk0LTEuNzkyOTY5IDMuMTIxMDkzLTIuNjQ4NDM3IDguMzIwMzEyLTUuODAwNzgxIDE1LjQyNTc4MS01LjgwMDc4MSA4LjU1ODU5NCAwIDE2LjUzNTE1NiA0LjcyNjU2MiAyMC44MTY0MDYgMTIuMzM1OTM4IDEuNjY0MDYzIDIuOTc2NTYyIDUuMDU0Njg4IDQuNTU4NTkzIDguMzgyODEzIDMuOTYwOTM3IDguMzUxNTYyLTEuNDg4MjgxIDE2LjkwNjI1IDQuMjQ2MDk0IDE4LjQ5NjA5MyAxMi43NDIxODcuNTcwMzEzIDMuMDM5MDYzIDIuODM5ODQ0IDUuNDg4MjgyIDUuODM5ODQ0IDYuMjczNDM4IDMuMDE1NjI1LjgwMDc4MSA2LjE2Nzk2OS0uMjM0Mzc1IDguMTY3OTY5LTIuNjA5Mzc1IDQuNjE3MTg3LTUuNTI3MzQ0IDExLjI4OTA2My04LjcwMzEyNSAxOC4yOTY4NzUtOC43MDMxMjUgMTAuNDE0MDYyIDAgMTkuMjE0ODQ0IDYuNzEwOTM4IDIyLjUyNzM0NCAxNmgtMTg4LjkyNTc4MmMxLjk0MTQwNy01LjI5Njg3NSA1LjYwNTQ2OS05LjkzNzUgMTAuNzQyMTg4LTEyLjgyNDIxOXptMTA3LjY1NjI1LTc1LjE3NTc4MWMwLTc0Ljk5MjE4OCA2MS4wMDc4MTItMTM2IDEzNi0xMzZzMTM2IDYxLjAwNzgxMiAxMzYgMTM2LTYxLjAwNzgxMiAxMzYtMTM2IDEzNmMtMTEuMjg5MDYyIDAtMjIuMzI4MTI1LTEuNTE5NTMxLTMzLjA3ODEyNS00LjIxNDg0NC42Mjg5MDYtMS4xNDQ1MzEgMS4wNzgxMjUtMi4zOTQ1MzEgMS4wNzgxMjUtMy43ODUxNTZ2LTEyLjMzNTkzOGMxMC4zNjcxODggMi44NjMyODIgMjEuMDc4MTI1IDQuMzM1OTM4IDMyIDQuMzM1OTM4IDY2LjE2Nzk2OSAwIDEyMC01My44MzIwMzEgMTIwLTEyMHMtNTMuODMyMDMxLTEyMC0xMjAtMTIwLTEyMCA1My44MzIwMzEtMTIwIDEyMGMwIDIxLjA4OTg0NCA1LjQ4MDQ2OSA0MS40MzM1OTQgMTUuODI0MjE5IDU5LjUwMzkwNi0xLjc5Mjk2OS44MDg1OTQtMy41MzUxNTcgMS43MjY1NjMtNS4xOTE0MDcgMi44MDA3ODItNC4wNTg1OTMtNi4xMTMyODItMTAuMTUyMzQzLTEwLjYzMjgxMy0xNy4yMDcwMzEtMTIuODI0MjE5LTYuMTY3OTY5LTE1Ljc2MTcxOS05LjQyNTc4MS0zMi4zNTkzNzUtOS40MjU3ODEtNDkuNDgwNDY5em00OC40NjQ4NDQgNTYuMDQ2ODc1Yy02LjM2NzE4OC05LjkxMDE1Ni0xMS0yMC43MDMxMjUtMTMuNjc5Njg4LTMyLjA0Njg3NWg1LjIxNDg0NGM3LjI4OTA2MiAwIDE0LjE1MjM0NC0yLjgzOTg0NCAxOS4zMTI1LThsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzEwLjMyODEyNSAxMC4zMTI1IDI4LjI5Njg3NSAxMC4zMjAzMTIgMzguNjI1IDBsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzEwLjMyODEyNSAxMC4zMTI1IDI4LjI5Njg3NSAxMC4zMjAzMTIgMzguNjI1IDBsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzUuMTY3OTY5IDUuMTYwMTU2IDEyLjAyMzQzOCA4IDE5LjMxMjUgOGg1LjA5NzY1NmMtMTAuODgyODEyIDQ1Ljc5Mjk2OS01Mi4wMjczNDQgODAtMTAxLjA5NzY1NiA4MC0xMC45NzY1NjIgMC0yMS42OTUzMTItMS43OTI5NjktMzItNS4xMjg5MDZ2LTIuODcxMDk0YzAtNC40MTQwNjItMy41NzQyMTktOC04LThoLTguODA4NTk0Yy0zLjY4NzUtMTguMDg5ODQ0LTE5LjYyNS0zMS43MjY1NjItMzguNzI2NTYyLTMxLjk1MzEyNXptLTE2LjQ2NDg0NC01Ni4wNDY4NzVjMC01Ny4zNDM3NSA0Ni42NTYyNS0xMDQgMTA0LTEwNHMxMDQgNDYuNjU2MjUgMTA0IDEwNGMwIDIuNzAzMTI1LS4xOTkyMTkgNS4zNTE1NjItLjQwNjI1IDhoLTcuNTkzNzVjLTMuMDIzNDM4IDAtNS44NTU0NjktMS4xNzU3ODEtOC0zLjMxMjVsLTQuNjg3NS00LjY4NzVjLTEwLjMyODEyNS0xMC4zMTI1LTI4LjI5Njg3NS0xMC4zMjAzMTItMzguNjI1IDBsLTQuNjg3NSA0LjY3OTY4OGMtNC4yODEyNSA0LjI4MTI1LTExLjcxODc1IDQuMjgxMjUtMTYgMGwtNC42ODc1LTQuNjc5Njg4Yy0xMC4zMjgxMjUtMTAuMzEyNS0yOC4yOTY4NzUtMTAuMzIwMzEyLTM4LjYyNSAwbC00LjY4NzUgNC42Nzk2ODhjLTQuMjgxMjUgNC4yODEyNS0xMS43MTg3NSA0LjI4MTI1LTE2IDBsLTQuNjg3NS00LjY3OTY4OGMtMTAuMzI4MTI1LTEwLjMxMjUtMjguMjk2ODc1LTEwLjMyMDMxMi0zOC42MjUgMGwtNC42ODc1IDQuNjc5Njg4Yy0yLjE0NDUzMSAyLjE0NDUzMS00Ljk3NjU2MiAzLjMyMDMxMi04IDMuMzIwMzEyaC03LjY5NTMxMmMtLjE5OTIxOS0yLjY0ODQzOC0uMzA0Njg4LTUuMzIwMzEyLS4zMDQ2ODgtOHptLTE2OCAxMDRoMjI0djE2aC0yMjR6bTE2MCA5NmgtMTA0Yy0yMi4wNTQ2ODggMC00MC0xNy45NDUzMTItNDAtNDB2LTI0aDE5MnYyNGMwIDIyLjA1NDY4OC0xNy45NDUzMTIgNDAtNDAgNDB6bTQ3LjExMzI4MSAwYzEwLjQwNjI1LTEwLjE3NTc4MSAxNi44ODY3MTktMjQuMzM1OTM4IDE2Ljg4NjcxOS00MHYtMTUuODcxMDk0YzE1LjQyNTc4MSA1LjE0NDUzMiAzMS41MDM5MDYgNy44NzEwOTQgNDggNy44NzEwOTQgODMuODE2NDA2IDAgMTUyLTY4LjE4MzU5NCAxNTItMTUycy02OC4xODM1OTQtMTUyLTE1Mi0xNTItMTUyIDY4LjE4MzU5NC0xNTIgMTUyYzAgMTMuMDE1NjI1IDEuODAwNzgxIDI1LjczNDM3NSA1LjAwNzgxMiAzOC4xMTMyODEtNi4yMjI2NTYtMy45MDYyNS0xMy40NjQ4NDMtNi4xMTMyODEtMjEuMDA3ODEyLTYuMTEzMjgxLTYuNTM1MTU2IDAtMTMgMS42NzE4NzUtMTguNzg1MTU2IDQuODE2NDA2LTEuNTg5ODQ0LTEuNzI2NTYyLTMuMzc1LTMuMjE0ODQ0LTUuMjE0ODQ0LTQuNjI1di0yMDAuMTkxNDA2aDM4NHYzNjh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM2IDgwYzEzLjIzMDQ2OSAwIDI0LTEwLjc2OTUzMSAyNC0yNHMtMTAuNzY5NTMxLTI0LTI0LTI0LTI0IDEwLjc2OTUzMS0yNCAyNCAxMC43Njk1MzEgMjQgMjQgMjR6bTAtMzJjNC40MTQwNjIgMCA4IDMuNTkzNzUgOCA4cy0zLjU4NTkzOCA4LTggOC04LTMuNTkzNzUtOC04IDMuNTg1OTM4LTggOC04em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMCA4MGMxMy4yMzA0NjkgMCAyNC0xMC43Njk1MzEgMjQtMjRzLTEwLjc2OTUzMS0yNC0yNC0yNC0yNCAxMC43Njk1MzEtMjQgMjQgMTAuNzY5NTMxIDI0IDI0IDI0em0wLTMyYzQuNDE0MDYyIDAgOCAzLjU5Mzc1IDggOHMtMy41ODU5MzggOC04IDgtOC0zLjU5Mzc1LTgtOCAzLjU4NTkzOC04IDgtOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjQgODBjMTMuMjMwNDY5IDAgMjQtMTAuNzY5NTMxIDI0LTI0cy0xMC43Njk1MzEtMjQtMjQtMjQtMjQgMTAuNzY5NTMxLTI0IDI0IDEwLjc2OTUzMSAyNCAyNCAyNHptMC0zMmM0LjQxNDA2MiAwIDggMy41OTM3NSA4IDhzLTMuNTg1OTM4IDgtOCA4LTgtMy41OTM3NS04LTggMy41ODU5MzgtOCA4LTh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQ4IDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00NDggMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxNiA2NGgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDE2IDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zODQgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzUyIDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNTIgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Water Consumption":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTI2OC45OSAxODcuNDk5Yy01Ljc1MS05Ljk1OS0yMC4xOTYtMTAuMDE2LTI1Ljk3OSAwLTIxLjgxIDQwLjYxMS0zMi4wMTEgNDguMDYxLTMyLjAxMSA2Ny41MDEgMCAyNC44MTMgMjAuMTg3IDQ1IDQ1IDQ1czQ1LTIwLjE4NyA0NS00NWMwLTE5LjQ1OC0xMC40ODYtMjcuNDIxLTMyLjAxLTY3LjUwMXptLTEyLjk5IDgyLjUwMWMtOC4yNzEgMC0xNS02LjcyOS0xNS0xNSAwLTYuNjg3IDMuMDQyLTguMjE1IDE1LTMwLjAwNSAxMS45NzQgMjEuODE4IDE1IDIzLjMxOCAxNSAzMC4wMDUgMCA4LjI3MS02LjcyOSAxNS0xNSAxNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwNiAwaC0zMDBjLTguNzY5IDAtMTUuNjc2IDcuNTAyLTE0Ljk0OCAxNi4yNDZsMzAgMzYwYy42NDggNy43NzQgNy4xNDcgMTMuNzU0IDE0Ljk0OCAxMy43NTRoNzV2MzJoLTE1Yy0xMy4zMTggMC0yMC4wNDggMTYuMTY1LTEwLjYwNiAyNS42MDZsNjAgNjBjNS44NTcgNS44NTggMTUuMzU1IDUuODU5IDIxLjIxMyAwbDYwLTYwYzkuNDE3LTkuNDE3IDIuNzQ1LTI1LjYwNi0xMC42MDctMjUuNjA2aC0xNXYtMzJoNzVjNy44MDEgMCAxNC4zLTUuOTggMTQuOTQ4LTEzLjc1NGwzMC0zNjBjLjcyOC04LjczOS02LjE3NC0xNi4yNDYtMTQuOTQ4LTE2LjI0NnptLTE2LjMwMiAzMC01LjM0NiA2NC4xNDdjLTIxLjc2OCA4LjM0My0zNS44NzEgMjUuODUzLTUzLjM1MiAyNS44NTMtMjIuNzE3IDAtNDAuNDIzLTMwLTc1LTMwLTM0LjcyNyAwLTUyLjE3NiAzMC03NSAzMC0xNy40ODUgMC0zMS41NTYtMTcuNDk5LTUzLjM1Mi0yNS44NTNsLTUuMzQ2LTY0LjE0N3ptLTI3LjUgMzMwaC03Ni4xOThjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2NjJjMCA2LjQzMiA0LjA0OCAxMS45MTkgOS43MzYgMTQuMDVsLTI0LjczNiAyNC43MzctMjQuNzM2LTI0LjczNmM1LjY4OC0yLjEzMSA5LjczNi03LjYxOCA5LjczNi0xNC4wNXYtNjJjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtNzYuMTk4bC0xOS4yMDgtMjMwLjUwMmMxNC4zMTUgOS4xNTMgMjkuMDc2IDIwLjUwMSA1MC40MDYgMjAuNTAxIDM0LjcyNyAwIDUyLjE3Ni0zMCA3NS0zMCAyMi43MTcgMCA0MC40MjMgMzAgNzUgMzAgMjEuMDE5IDAgMzUuNDQ5LTEwLjkzNyA1MC40MDYtMjAuNTAyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==","Water Heater":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNjcsMTg1LjMyNXYyODFhMzUuNTQxLDM1LjU0MSwwLDAsMCwzNS40NjksMzUuNjMxTDMxOS4wNiw1MDJoLjAwNkEzNS44OTEsMzUuODkxLDAsMCwwLDM1NSw0NjYuMzY5VjQ2NGg2MC42MmMzNC44MzcsMCw2My4zOC0yNy44Nyw2My4zOC02Mi43MTVWMTg5LjczYzAtMzQuODQ0LTI4LjU0My02Mi43My02My4zOC02Mi43M0gzNTV2LTkuNjg5YzAtLjA3NC0uMTYtLjE0Ni0uMTYyLS4yMTlzLS4wNjUtLjExNC0uMDY1LS4xODdBNjIuMDQ0LDYyLjA0NCwwLDAsMCwyOTIuNzYzLDU1SDIxOVY0NGgxNy44MjhDMjQ1LjY1LDQ0LDI1MywzNy4yLDI1MywyOC4zNzRWMjZhMTYuMTY3LDE2LjE2NywwLDAsMC0xNi4xNzItMTZIMTg5LjcwNkExNS43NywxNS43NywwLDAsMCwxNzQsMjZ2Mi4zNzRBMTUuNDU0LDE1LjQ1NCwwLDAsMCwxODkuNzA2LDQ0SDIwN1Y1NUgxMzMuNzcxQzEwMS41LDU1LDc0LjkyNCw4MCw3Mi4xLDExMUgzOS4yYTYuMDU2LDYuMDU2LDAsMCwwLTUuMiw4LjkyOVpNMzU1LDE2MWg2MC42MkEyOC41ODEsMjguNTgxLDAsMCwxLDQ0NCwxODkuNzNWNDAxLjI4NUEyOC41NjgsMjguNTY4LDAsMCwxLDQxNS42Miw0MzBIMzU1Wm0wLDI4MWg2MC42MkE0MC41ODEsNDAuNTgxLDAsMCwwLDQ1Niw0MDEuMjg1VjE4OS43M0E0MC41OTQsNDAuNTk0LDAsMCwwLDQxNS42MiwxNDlIMzU1VjEzOWg2MC42MmMyOC4yMjEsMCw1MS4zOCwyMi41LDUxLjM4LDUwLjczVjQwMS4yODVDNDY3LDQyOS41MTMsNDQzLjg0MSw0NTIsNDE1LjYyLDQ1MkgzNTVabS0xMiwyNC4zNjlBMjMuODkxLDIzLjg5MSwwLDAsMSwzMTkuMDY2LDQ5MGgwbC0yMTYuNTkxLS4wNDFBMjMuNTI3LDIzLjUyNywwLDAsMSw3OSw0NjYuMzI4VjQ1Mi41N2wyNjQsLjA0OVpNMTkwLDMyYTQsNCwwLDAsMS00LTRWMjZhNCw0LDAsMCwxLDQtNGg0N2E0LDQsMCwwLDEsNCw0djJhNCw0LDAsMCwxLTQsNFpNMTMzLjc3MSw2N0gyOTIuNzYzYTQ5LjgyOSw0OS44MjksMCwwLDEsNDkuNTc2LDQ0SDg0LjJBNDkuODMsNDkuODMsMCwwLDEsMTMzLjc3MSw2N1pNMzQzLDEyM1Y0NDAuNjE5TDc5LDQ0MC41N1YxODMuOWE2Ljg1Myw2Ljg1MywwLDAsMC0uOC0yLjg1MUw0OC45MzQsMTIzWiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjAzLDM4OC40NDNBMzUuMDE3LDM1LjAxNywwLDAsMCwyMzgsMzUzLjZWMjM2Ljg0NGEzNSwzNSwwLDAsMC03MCwwVjM1My42QTM1LjAxNywzNS4wMTcsMCwwLDAsMjAzLDM4OC40NDNabS0yMy0xNTEuNmEyMywyMywwLDAsMSw0NiwwVjI4OUgxODBaTTE4MCwzMDFoNDZ2NTIuNmEyMywyMywwLDAsMS00NiwwWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOTksMzE0LjkxM2E2LDYsMCwwLDAsNi02VjIzMy4xMDZhNiw2LDAsMCwwLTEyLDB2NzUuODA3QTYsNiwwLDAsMCw5OSwzMTQuOTEzWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOTksMjE4LjcyNmE2LDYsMCwwLDAsNi02di00LjgzNGE2LDYsMCwwLDAtMTIsMHY0LjgzNEE2LDYsMCwwLDAsOTksMjE4LjcyNloiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Water:gNe,Weather:TNe,Window:yNe},dNe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0xMDggNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MDQgNDguMDE1NjI1aC00OTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOS04LTh2LTMyLjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQ5NmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4djMyLjAxNTYyNWMwIDQuNDI1NzgxLTMuNTc0MjE5IDgtOCA4em0tNDg4LTE2aDQ4MHYtMTYuMDE1NjI1aC00ODB6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTI0Ni43MTg3NWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0Ni43MTg3NWMwIDQuNDI1NzgyLTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NiAyOTYuMTYwMTU2Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04di0yNDYuNzE4NzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNDYuNzE4NzVjMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyOTYuMTYwMTU2aC0yNGMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDI0YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00OTYgMjk2LjE2MDE1NmgtMjRjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgyNGM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MC4xMTMyODFoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE4NC4xMjg5MDZoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNzEuOTg0Mzc1IDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0yMi4wNTg1OTQgMTcuOTM3NS00MCAzOS45OTIxODctNDAgNC40MjE4NzYgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI0IDgtOCA4LTEzLjIyMjY1NiAwLTIzLjk5MjE4NyAxMC43NjU2MjUtMjMuOTkyMTg3IDI0IDAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUyIDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yMzQzNzUtMTAuNzY5NTMxLTI0LTIzLjk5MjE4OC0yNC00LjQyMTg3NCAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzgxMjYtOCA4LTggMjIuMDU0Njg4IDAgMzkuOTkyMTg4IDE3Ljk0MTQwNiAzOS45OTIxODggNDAgMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im03OS45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0My45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgMTA0LjE0NDUzMWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtMjQuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQuMDE1NjI1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDgwLjEyODkwNmgtMzJjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTk2IDk2LjEyODkwNmgtMTYuMDE1NjI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDE1NjI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDMuOTY4NzUgOTYuMTI4OTA2aC0xNS45Njg3NWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDE1Ljk2ODc1YzQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjAuMDA3ODEyIDEyOC4xMjg5MDZoLTE2LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDMxMjVjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE3NS45ODQzNzUgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTIyLjA1ODU5NCAxNy45Mzc1LTQwIDM5Ljk5MjE4Ny00MCA0LjQyMTg3NiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzgxMjQgOC04IDgtMTMuMjIyNjU2IDAtMjMuOTkyMTg3IDEwLjc2NTYyNS0yMy45OTIxODcgMjQgMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTEzLjIzNDM3NS0xMC43Njk1MzEtMjQtMjMuOTkyMTg4LTI0LTQuNDIxODc0IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNi04IDgtOCAyMi4wNTQ2ODggMCAzOS45OTIxODggMTcuOTQxNDA2IDM5Ljk5MjE4OCA0MCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4My45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjAwIDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiA4MC4xMjg5MDZoLTMyYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMzJjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiAxMDQuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di0yNC4wMTU2MjVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNC4wMTU2MjVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDAgOTYuMTI4OTA2aC0xNi4wMTU2MjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMTU2MjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSA5Ni4xMjg5MDZoLTE1Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTUuOTY4NzVjNC40MjE4NzUgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNC4wMDc4MTIgMTI4LjEyODkwNmgtMTYuMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMzEyNWM0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTggOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2LjE2Nzk2OSAyODAuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtMTMuMjQyMTg3IDEwLjc3NzM0My0yNC4wMTU2MjUgMjQuMDE1NjI1LTI0LjAxNTYyNSA0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDgtNC40MjE4NzUgMC04LjAxNTYyNSAzLjU4OTg0NC04LjAxNTYyNSA4LjAxNTYyNSAwIDQuNDIxODc1LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjgwLjE0NDUzMWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04LTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCAxMy4yMzQzNzUgMCAyNCAxMC43NjU2MjUgMjQgMjQgMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzYuMTkxNDA2IDI5Ni4xNjAxNTZoLTgwLjAyMzQzN2MtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDgwLjAzMTI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU4MjAzMSA4LTguMDA3ODEzIDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjgzMjAzMSAyNjQuMTI4OTA2aC00OS4yOTY4NzVjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOGg0OS4yOTY4NzVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3Mi4xNjc5NjkgMjY0LjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtNDcuOTg0Mzc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2NDcuOTg0Mzc1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjE5OTIxOSAyNjQuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04di00OGMwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDh2NDhjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYuMTY3OTY5IDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTE2LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjk2LjE2MDE1NmMtNC40MjE4NzUgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOHYxNi4wMTU2MjVjMCA0LjQyNTc4Mi0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAuMTk5MjE5IDIxNi4xNDQ1MzFoLTQ4LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNDguMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyOC4xOTE0MDYgMjQwLjE0NDUzMWgtNjQuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNjQuMDIzNDM3YzQuNDI1NzgyIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjAuMTY3OTY5IDI4MC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yNDIxODcgMTAuNzc3MzQzLTI0LjAxNTYyNSAyNC4wMTU2MjUtMjQuMDE1NjI1IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOC00LjQyMTg3NSAwLTguMDE1NjI1IDMuNTg5ODQ0LTguMDE1NjI1IDguMDE1NjI1IDAgNC40MjE4NzUtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyODAuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04IDAtNC40MTc5NjktMy41ODIwMzEtOC04LTgtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDEzLjIzNDM3NSAwIDI0IDEwLjc2NTYyNSAyNCAyNCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0MC4xOTE0MDYgMjk2LjE2MDE1NmgtODAuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoODAuMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOC4wMDc4MTMgOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuODMyMDMxIDI2NC4xMjg5MDZoLTQ5LjI5Njg3NWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04aDQ5LjI5Njg3NWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjE2Nzk2OSAyNjQuMTI4OTA2Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Ny45ODQzNzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHY0Ny45ODQzNzVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuMTk5MjE5IDI2NC4xNDQ1MzFjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTh2LTQ4YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOHY0OGMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC4xNjc5NjkgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MTYuMDE1NjI1YzAgNC40MjU3ODItMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyOTYuMTYwMTU2Yy00LjQyMTg3NSAwLTgtMy41NzQyMTgtOC04di0xNi4wMTU2MjVjMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCA0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQyNC4xOTkyMTkgMjE2LjE0NDUzMWgtNDguMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg0OC4wMzEyNWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyLjE5MTQwNiAyNDAuMTQ0NTMxaC02NC4wMjM0MzdjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg2NC4wMjM0MzdjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",zNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM2Mi43ODcgMzYyLjc4NyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTI2MC45NDUsMTQ0Ljk3OWMtMi42NjcsMC01LjEzMywxLjQxNi02LjQ3NywzLjcxOWwtNDcuNDg0LDgxLjMzM2MtMS4zNTQsMi4zMTktMS4zNjUsNS4xODYtMC4wMjcsNy41MTYNCgkJYzEuMzM3LDIuMzI5LDMuODE4LDMuNzY2LDYuNTA0LDMuNzY2aDk0Ljk2OGMyLjY4NiwwLDUuMTY3LTEuNDM3LDYuNTA0LTMuNzY2YzEuMzM4LTIuMzMsMS4zMjctNS4xOTYtMC4wMjctNy41MTZsLTQ3LjQ4My04MS4zMzMNCgkJQzI2Ni4wNzgsMTQ2LjM5NSwyNjMuNjEyLDE0NC45NzksMjYwLjk0NSwxNDQuOTc5eiBNMjI2LjUyNCwyMjYuMzEybDM0LjQyMS01OC45NThsMzQuNDIsNTguOTU4SDIyNi41MjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTUuMjg3LDI1NC42OWgtMTc1LjYybDgxLjI3OC0xMzkuMjE4bDYyLjkyNiwxMDcuNzgzYzIuMDg4LDMuNTc4LDYuNjgzLDQuNzg0LDEwLjI1OCwyLjY5Ng0KCQljMy41NzctMi4wODgsNC43ODQtNi42ODEsMi42OTUtMTAuMjU4TDI2Ny40MjIsOTYuODE1Yy0wLjAyMS0wLjAzNi0wLjA0OC0wLjA2Ny0wLjA2OS0wLjEwM2MtMC4xMjYtMC4yMDgtMC4yNjItMC40MDgtMC40MDctMC42MDMNCgkJYy0wLjA0NC0wLjA1OS0wLjA4Ni0wLjExOC0wLjEzMS0wLjE3NmMtMC4xODMtMC4yMy0wLjM3Ni0wLjQ1MS0wLjU4NC0wLjY1OGMtMC4wMjQtMC4wMjQtMC4wNTEtMC4wNDUtMC4wNzYtMC4wNjkNCgkJYy0wLjE4Ni0wLjE4LTAuMzgzLTAuMzQ5LTAuNTg3LTAuNTA5Yy0wLjA2NS0wLjA1MS0wLjEzMi0wLjEtMC4xOTktMC4xNDhjLTAuMTg3LTAuMTM3LTAuMzc5LTAuMjY0LTAuNTc4LTAuMzg0DQoJCWMtMC4wNTUtMC4wMzMtMC4xMDgtMC4wNjgtMC4xNjQtMC4xYy0wLjI2MS0wLjE0Ny0wLjUzLTAuMjgyLTAuODA5LTAuMzk3Yy0wLjAxMS0wLjAwNC0wLjAyMi0wLjAwOC0wLjAzMy0wLjAxMg0KCQljLTAuMjYtMC4xMDYtMC41MjgtMC4xOTYtMC44MDItMC4yNzNjLTAuMDczLTAuMDIxLTAuMTQ2LTAuMDM4LTAuMjItMC4wNTZjLTAuMjIyLTAuMDU1LTAuNDQ3LTAuMS0wLjY3Ny0wLjEzNQ0KCQljLTAuMDc5LTAuMDEyLTAuMTU3LTAuMDI2LTAuMjM2LTAuMDM2Yy0wLjI5Ny0wLjAzNi0wLjU5OC0wLjA2LTAuOTA2LTAuMDZIMTAxLjg0MmMtMi42NjcsMC01LjEzMywxLjQxNi02LjQ3NywzLjcxOQ0KCQlMMS4wMjMsMjU4LjQwOGMtMS4zNTQsMi4zMTktMS4zNjUsNS4xODYtMC4wMjcsNy41MTZjMS4zMzcsMi4zMjksMy44MTgsMy43NjYsNi41MDQsMy43NjZoODYuNTM4YzAuMDA4LDAsMC4wMTUsMC4wMDEsMC4wMjMsMC4wMDENCgkJczAuMDE1LTAuMDAxLDAuMDIzLTAuMDAxaDM1Ljg4OWMwLjAwOCwwLDAuMDE1LDAuMDAxLDAuMDIzLDAuMDAxczAuMDE1LTAuMDAxLDAuMDIzLTAuMDAxaDM2LjU4NmgxODguNjg0DQoJCWM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41UzM1OS40MywyNTQuNjksMzU1LjI4NywyNTQuNjl6IE0xNjIuMjk4LDI1NC42OWgtMTkuMjYzbDY5LjQzLTExOS40Nw0KCQljMi4wODEtMy41ODIsMC44NjUtOC4xNzItMi43MTYtMTAuMjUzYy0zLjU4LTIuMDgzLTguMTczLTAuODY2LTEwLjI1MywyLjcxNmwtNzMuODEsMTI3LjAwN0gxMDcuMWw4NS4xOTItMTQ2LjU5NGg1NS41OQ0KCQlMMTYyLjI5OCwyNTQuNjl6IE0xMDYuMTQ3LDEwOC4wOTZoMzQuMDkxTDc0Ljc4OSwyMjAuNzE3Yy0yLjA4MSwzLjU4Mi0wLjg2NSw4LjE3MiwyLjcxNiwxMC4yNTMNCgkJYzEuMTg2LDAuNjg5LDIuNDgyLDEuMDE3LDMuNzYyLDEuMDE3YzIuNTg0LDAsNS4xLTEuMzM3LDYuNDkxLTMuNzMzbDY5LjgzLTEyMC4xNThoMTcuMzU2TDg5Ljc1MSwyNTQuNjlIMjAuNTYzTDEwNi4xNDcsMTA4LjA5NnoiDQogICAgICAgIC8+DQogICAgPC9nPg0KPC9zdmc+DQo=",hNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Ni43MDQgMjcyLjA4NmgtODEuNzA0di04OC4wNzNjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2ODguMDczaC0xNXYtMTkzLjcxYzAtOC4yNDktNi43MTEtMTQuOTU5LTE0Ljk1OS0xNC45NTloLTkxLjU4MmMtOC4yNDggMC0xNC45NTkgNi43MS0xNC45NTkgMTQuOTU5djE5My43MWgtMTV2LTE5My43MWMwLTguMjQ5LTYuNzExLTE0Ljk1OS0xNC45NTktMTQuOTU5aC05MS41ODJjLTguMjQ4IDAtMTQuOTU5IDYuNzEtMTQuOTU5IDE0Ljk1OXYxOTMuNzFoLTE1di0yMjMuNjY5aDI4OHYxMDAuNTk2YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTEwMC41OTZoMy4yMDRjOC40MzUgMCAxNS4yOTYtNi44ODMgMTUuMjk2LTE1LjM0NHYtMTcuNzNjMC04LjQ2LTYuODYxLTE1LjM0My0xNS4yOTYtMTUuMzQzaC0zMjQuNDA4Yy04LjQzNSAwLTE1LjI5NiA2Ljg4My0xNS4yOTYgMTUuMzQ0djE3LjczYzAgOC40NiA2Ljg2MSAxNS4zNDQgMTUuMjk2IDE1LjM0NGgzLjIwNHYyMjMuNjY5aC04MS43MDRjLTguNDM1LS4wMDEtMTUuMjk2IDYuODYxLTE1LjI5NiAxNS4yOTV2MTcuNjIyYzAgOC40MzUgNi44NjEgMTUuMjk2IDE1LjI5NiAxNS4yOTZoLjV2MTQzLjQ4NmgtLjVjLTguNDM1IDAtMTUuMjk2IDYuODYyLTE1LjI5NiAxNS4yOTZ2MTcuNjIyYzAgOC40MzQgNi44NjEgMTUuMjk2IDE1LjI5NiAxNS4yOTZoMjIzLjIwNGM0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMjIzLjIwNGMtLjE2MyAwLS4yOTYtLjEzMy0uMjk2LS4yOTZ2LTE3LjYyMmMwLS4xNjMuMTMzLS4yOTYuMjk2LS4yOTZoNDgxLjQwOGMuMTYzIDAgLjI5Ni4xMzMuMjk2LjI5NnYxNy42MjJjMCAuMTYzLS4xMzMuMjk2LS4yOTYuMjk2aC0yMjMuMjA0Yy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDIyMy4yMDRjOC40MzUgMCAxNS4yOTYtNi44NjIgMTUuMjk2LTE1LjI5NnYtMTcuNjIyYzAtOC40MzQtNi44NjEtMTUuMjk2LTE1LjI5Ni0xNS4yOTZoLS41di0xNDMuNDg2aC41YzguNDM1IDAgMTUuMjk2LTYuODYyIDE1LjI5Ni0xNS4yOTZ2LTE3LjYyMmMwLTguNDM0LTYuODYxLTE1LjI5Ni0xNS4yOTYtMTUuMjk2em0tNDAzLjIwNC0yMzkuMDEydi0xNy43M2MwLS4yMTIuMTUzLS4zNDQuMjk2LS4zNDRoMzI0LjQwOGMuMTQzIDAgLjI5Ni4xMzEuMjk2LjM0NHYxNy43M2MwIC4yMTItLjE1My4zNDQtLjI5Ni4zNDQtMTUuMzY3IDAtMzA5LjA1MSAwLTMyNC40MDggMC0uMTQzLS4wMDEtLjI5Ni0uMTMyLS4yOTYtLjM0NHptMTg0Ljk1OSA0NS4zNDMgOTEuNTQxLS4wNDF2MTkzLjcxaC05MS41MDJ6bS0xMzYuNSAwIDkxLjU0MS0uMDQxdjE5My43MWgtOTEuNTAyem0zMzkuMjQ1IDM4NC44MTdoLTQ1MC40MDh2LTE0Mi45MzRoNDUwLjQwOHptMTUuNzk2LTE1OC4yM2MwIC4xNjQtLjEzMy4yOTYtLjI5Ni4yOTYtMi44MjQgMC00NzEuMTUzIDAtNDgxLjQwOCAwLS4xNjMgMC0uMjk2LS4xMzMtLjI5Ni0uMjk2di0xNy42MjJjMC0uMTYzLjEzMy0uMjk2LjI5Ni0uMjk2aDQ4MS40MDhjLjE2MyAwIC4yOTYuMTMzLjI5Ni4yOTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02Ny42NTUgNDQyLjcwNGgxOC45OWM4Ljc2OCAwIDE1LjktNy4xMzMgMTUuOS0xNS45MDF2LTY5LjUyYzAtOC43NjgtNy4xMzMtMTUuOTAxLTE1LjktMTUuOTAxaC0xOC45OWMtOC43NjggMC0xNS45IDcuMTMzLTE1LjkgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzMgMTUuOTAxIDE1LjkgMTUuOTAxem0tLjktODUuNDIxYzAtLjQ5Ny40MDQtLjkwMS45LS45MDFoMTguOTljLjQ5NiAwIC45LjQwNC45LjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkuOTAxaC0xOC45OWMtLjQ5NiAwLS45LS40MDQtLjktLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzOS40MDYgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzQgMTUuOTAxIDE1LjkwMSAxNS45MDF6bS0uOTAxLTg1LjQyMWMwLS40OTcuNDA0LS45MDEuOTAxLS45MDFoMTguOTg5Yy40OTcgMCAuOTAxLjQwNC45MDEuOTAxdjY5LjUyYzAgLjQ5Ny0uNDA0LjkwMS0uOTAxLjkwMWgtMTguOTg5Yy0uNDk3IDAtLjkwMS0uNDA0LS45MDEtLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxMC43OTYgNDQyLjcwNGgxOC45OWM4Ljc2OCAwIDE1LjkwMS03LjEzMyAxNS45MDEtMTUuOTAxdi02OS41MmMwLTguNzY4LTcuMTM0LTE1LjkwMS0xNS45MDEtMTUuOTAxaC0xOC45OWMtOC43NjggMC0xNS45IDcuMTMzLTE1LjkgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzIgMTUuOTAxIDE1LjkgMTUuOTAxem0tLjktODUuNDIxYzAtLjQ5Ny40MDQtLjkwMS45LS45MDFoMTguOTljLjQ5NyAwIC45MDEuNDA0LjkwMS45MDF2NjkuNTJjMCAuNDk3LS40MDQuOTAxLS45MDEuOTAxaC0xOC45OWMtLjQ5NiAwLS45LS40MDQtLjktLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI4Mi41NDcgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzMgMTUuOTAxIDE1LjkwMSAxNS45MDF6bS0uOTAxLTg1LjQyMWMwLS40OTcuNDA0LS45MDEuOTAxLS45MDFoMTguOTg5Yy40OTcgMCAuOTAxLjQwNC45MDEuOTAxdjY5LjUyYzAgLjQ5Ny0uNDA0LjkwMS0uOTAxLjkwMWgtMTguOTg5Yy0uNDk3IDAtLjkwMS0uNDA0LS45MDEtLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1NC4xMzEgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYy0uMDAxIDguNzY4IDcuMTMzIDE1LjkwMSAxNS45MDEgMTUuOTAxem0tLjkwMi04NS40MjFjMC0uNDk3LjQwNC0uOTAxLjkwMS0uOTAxaDE4Ljk4OWMuNDk3IDAgLjkwMS40MDQuOTAxLjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkwMS45MDFoLTE4Ljk4OWMtLjQ5NyAwLS45MDEtLjQwNC0uOTAxLS45MDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MjUuNTIxIDQ0Mi43MDRoMTguOTg5YzguNzY4IDAgMTUuOTAxLTcuMTMzIDE1LjkwMS0xNS45MDF2LTY5LjUyYzAtOC43NjgtNy4xMzQtMTUuOTAxLTE1LjkwMS0xNS45MDFoLTE4Ljk4OWMtOC43NjggMC0xNS45MDEgNy4xMzMtMTUuOTAxIDE1LjkwMXY2OS41MmMwIDguNzY4IDcuMTM0IDE1LjkwMSAxNS45MDEgMTUuOTAxem0tLjkwMS04NS40MjFjMC0uNDk3LjQwNC0uOTAxLjkwMS0uOTAxaDE4Ljk4OWMuNDk3IDAgLjkwMS40MDQuOTAxLjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkwMS45MDFoLTE4Ljk4OWMtLjQ5NyAwLS45MDEtLjQwNC0uOTAxLS45MDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMTYuNDExIDEwNy4yNjhjLTIuOTMtMi45MjktNy42NzgtMi45MjktMTAuNjA3IDBzLTIuOTI5IDcuNjc4IDAgMTAuNjA2bDIzLjUxMiAyMy41MTJjMi45MyAyLjkyOSA3LjY3OCAyLjkyOSAxMC42MDcgMHMyLjkyOS03LjY3OCAwLTEwLjYwNnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0Mi42MDQgOTIuODMyYy0yLjkzLTIuOTI5LTcuNjc4LTIuOTI5LTEwLjYwNyAwcy0yLjkyOSA3LjY3OCAwIDEwLjYwNmwxMS43NTYgMTEuNzU2YzIuOTMgMi45MjkgNy42NzggMi45MjkgMTAuNjA3IDBzMi45MjktNy42NzggMC0xMC42MDZ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",INe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQxMy45MDcgMGMtNTQuMTA0IDAtOTguMTIyIDQ0LjAwNS05OC4xMjIgOTguMDk2djQzLjU4MnMtNjkuODMxLTM2LjkxMi03MS4wNjUtMzcuNTkzYy05LjU0NC01LjI2Ni0xMi4xODUtNS4yNjctMjEuNzMxIDAtMS4yMzQuNjgxLTEzNi4xNDEgNzEuOTU4LTEzNi4xNDEgNzEuOTU4LTExLjQzNyA2LjAxNy0xMy4wNDUgNy43NDUtMTcuODc4IDE1Ljc4My0uNzg4IDEuMzExLTY1LjY5OCAxMDQuMjMtNjUuNjk4IDEwNC4yMy0zLjE3NSA1LjAyMy00LjA3NyAxMC45NjItMi41MzkgMTYuNzIyIDEuNjE3IDYuMDU2IDUuODQgMTEuMjY5IDExLjU3NyAxNC4yOTUgMy42NDYgMS45MyA3LjU4MiAyLjg1IDExLjQ2NSAyLjg1IDYuMjAyIDAgMTIuMjU1LTIuMzU4IDE2Ljc0NS02LjY4OHY2NS4wNDRjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtODcuNTQxczQ5LjEzNC03Ny44NTUgNDkuNjUyLTc4LjY4MmMyLjMzNC0zLjcyOSAzLjMyOC01LjI4MyA0LjQ5Ni02LjMxOCAxLjMzMy0xLjE4MSAzLjY2NS0yLjQ2NCA4LjY2NS01LjEwN2wxMTMuMDAyLTU5LjY0OWMuODAxLS40MjUgMS40OS0uODAzIDIuMDkzLTEuMTMzLjE0MS0uMDc3LjI4NS0uMTU2LjQyOC0uMjM0LjE0My4wNzguMjg3LjE1Ny40MjguMjM0LjYwMy4zMzEgMS4yOTIuNzA4IDIuMTA5IDEuMTQyIDAgMCAxMTguMTkzIDYyLjQxMyAxMTkuNjQyIDYzLjMxLjg2OS41MzggMS41MDkuOTk1IDIuMDA5IDEuNDM4IDEuMTY3IDEuMDM1IDIuMTYyIDIuNTg5IDQuNDk2IDYuMzE4LjUxOC44MjcgNDkuNjUxIDc4LjY4MSA0OS42NTEgNzguNjgxdjE2MC43MTZoLTg0LjkyMXYtMTA0LjM0aDEyLjYyNWM3LjY1MiAwIDEzLjg3OC02LjIyNiAxMy44NzgtMTMuODc4di0yMS40M2MwLTcuNjUyLTYuMjI2LTEzLjg3OC0xMy44NzgtMTMuODc4aC04NS4xMjJjLTQuMTQyIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVoODR2MTkuMTg2aC0yMDkuODF2LTE5LjE4Nmg5MS4yYzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC05Mi4zMjJjLTcuNjUyIDAtMTMuODc4IDYuMjI2LTEzLjg3OCAxMy44Nzh2MjEuNDNjMCA3LjY1MiA2LjIyNiAxMy44NzggMTMuODc4IDEzLjg3OGgxMi42MjV2MTA0LjMzOWgtODQuOTQ3di0zOC41NjNjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NzYuNTM2YzAgNi45MzQgNS42NDEgMTIuNTc0IDEyLjU3NCAxMi41NzRoNDQ1LjkwN2M3LjE2NyAwIDEyLjk5OS01LjgzMiAxMi45OTktMTIuOTk5di00MDAuOTA1Yy4wMDEtNTQuMDkxLTQ0LjAwNC05OC4wOTYtOTguMDkyLTk4LjA5NnptLTI3My40NCA0OTdoLTg0Ljk0OHYtMjAuNTQ2aDg0Ljk0N3YyMC41NDZ6bTE1OS43ODMtMTM5Ljg4Ni02Ni4zODIgNTkuODQ1LTY2LjM4Mi01OS44NDV6bS0xNDQuNzgzIDkuMzU5IDY3LjIwMSA2MC41ODQtNjcuMjAxIDYwLjU4NHptMTIuMDIgMTMwLjUyNyA2Ni4zODItNTkuODQ1IDY2LjM4MSA1OS44NDV6bTE0NC43ODMtOS4zNTktNjcuMjAxLTYwLjU4NCA2Ny4yMDEtNjAuNTg0em05OS45MTkgOS4zNTloLTg0LjkxOXYtMjAuNTQ2aDg0LjkxOXptNTMuNDQ1LTE5OC44MjNjLS4zNDctLjcyLS43MzMtMS40MjctMS4xNjYtMi4xMTdsLTUxLjk0NS04Mi4yNjZoODQuNDc3djg0LjM4M3ptLTEzNC44NDgtMjAwLjA4MWMwLTQ1LjgxOSAzNy4yODgtODMuMDk2IDgzLjEyMi04My4wOTYgNDUuODE2IDAgODMuMDkyIDM3LjI3NiA4My4wOTIgODMuMDk2djEuMjg3aC0xNjYuMjE0em0wIDE2LjI4N2gxNjYuMjE0djg0LjQxMmgtOTMuOTQ5cy0zLjUyMy01LjY1Ni00LjMxMi02Ljk2NmMtNC44MzEtOC4wMzYtNi40NC05Ljc2Ni0xNy44NjgtMTUuNzc4bC01MC4wODYtMjYuNDV2LTM1LjIxOHptOTUuMjQ2IDE4MC4xNzdzLTUwLjI3NS03OS42NTYtNTAuNzgtODAuNDYzYy00Ljc5OS03LjY2NS02LjUxNC05LjgyNS0xMy4yODEtMTMuNjkyLS41MjEtLjI5Ny0xMTkuOTI5LTYzLjQwOC0xMjAuNDgyLTYzLjcxMS01LjEwMS0yLjc5NS03Ljg0Ny0zLjMyLTEyLjA2Ny0xLjU3Mi0uMDM3LjAxNS0uMDc2LjAzNC0uMTEzLjA1LS42MTYuMjU5LTExNy45ODUgNjIuMTk3LTExNy45ODUgNjIuMTk3LTExLjcyNyA2LjItMTIuOTYxIDcuMjk1LTE4Ljg2OCAxNi43MjktLjUwNS44MDctNTAuNzggODAuNDYzLTUwLjc4IDgwLjQ2My0uMDEuMDE2LS4wMTYuMDMzLS4wMjYuMDQ5bC0xMC4yOTQgMTYuMzFjLTIuMzc1IDMuNzY3LTcuODg1IDUuMDk2LTEyLjAzOSAyLjg5NC0yLjA2LTEuMDg2LTMuNTUyLTIuODczLTQuMDkzLTQuOTAxLS4zMTYtMS4xODQtLjQ0Ni0yLjk4NC43MjktNC44NDMgMCAwIDY1LjAzNy0xMDMuMTI0IDY1Ljg3Mi0xMDQuNTEyIDMuNDQ4LTUuNzM0IDMuNDQ4LTUuNzM0IDEyLjAxNy0xMC4yNDMgMCAwIDEzOS4xOTMtNzMuNjM5IDE0MC4wMTItNzQuMDEzLjgyLjM3NCAxNDAuMDEyIDc0LjAxMyAxNDAuMDEyIDc0LjAxMy4wMDMuMDAyLjAwNy4wMDQuMDExLjAwNiA4LjU1OSA0LjUwMiA4LjU1OSA0LjUwMiAxMi4wMDcgMTAuMjM4LjgzNCAxLjM4OCAxLjgxNiAzLjAyIDMuMDU4IDQuOTg3bDYyLjgzMyA5OS41MDljMS4xNjggMS44NiAxLjAzNCAzLjY2OS43MTYgNC44NTktLjU0NCAyLjAzMi0yLjAzMiAzLjgyLTQuMDcyIDQuODk5LTQuMjI2IDIuMjMxLTkuNjQ1LjkyNC0xMi4wNjktMi44OTZsLTEwLjI5Mi0xNi4zMDdjLS4wMS0uMDE3LS4wMTYtLjAzNS0uMDI2LS4wNXptNzAuOTY4IDIwMi40NGgtNjkuODExdi04NC40MTFoNjkuODExem0tNjkuODExLTk5LjQxMXYtNzQuMzg5YzcuMzEzIDcuMDQyIDE4Ljc2MyA4Ljg3NCAyOC4yMzggMy44NzUgNS42LTIuOTY1IDkuNzQ2LTguMDE2IDExLjQzOC0xMy44OTdoMzAuMTM1djg0LjQxMmgtNjkuODExeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjg1LjI2MiAyMzcuODczYzAtMjguMzQ3LTIzLjA2Mi01MS40MDktNTEuNDA4LTUxLjQwOS0yOC4zMzEgMC01MS4zNzkgMjMuMDYyLTUxLjM3OSA1MS40MDlzMjMuMDQ5IDUxLjQwOSA1MS4zNzkgNTEuNDA5YzI4LjM0Ny0uMDAxIDUxLjQwOC0yMy4wNjMgNTEuNDA4LTUxLjQwOXptLTg3Ljc4NyAwYzAtMjAuMDc2IDE2LjMyLTM2LjQwOSAzNi4zNzktMzYuNDA5IDIwLjA3NSAwIDM2LjQwOCAxNi4zMzMgMzYuNDA4IDM2LjQwOXMtMTYuMzMzIDM2LjQwOS0zNi40MDggMzYuNDA5Yy0yMC4wNTktLjAwMS0zNi4zNzktMTYuMzM0LTM2LjM3OS0zNi40MDl6Ii8+DQogICAgPC9nPg0KPC9zdmc+",wNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Mi45OTUgMTY2LjQ4OS0zMS45OTUtMjMuOTk2di0xMTIuNDkzYzguMjg0IDAgMTUtNi43MTYgMTUtMTVzLTYuNzE2LTE1LTE1LTE1aC05MGMtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXM2LjcxNiAxNSAxNSAxNXY0NC45OTJsLTg4LjAwOS02Ni4wMDZjLTE1Ljg5My0xMS45MDQtMzguMDktMTEuOTA1LTUzLjk4OS4wMDVsLTIwOS45OTkgMTU3LjVjLTE5Ljg1MyAxNC44OTMtMjMuODkxIDQzLjE1NS05LjAwMSA2My4wMDQgNy4yMiA5LjYyIDE3Ljc1MiAxNS44NTMgMjkuNjU3IDE3LjU1IDIuMTU3LjMwOCA0LjMxLjQ2IDYuNDUuNDU5IDUuMTA5IDAgMTAuMTMtLjg3NiAxNC44OTEtMi41NjR2MjUyLjA2YzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMzYwYzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTI1Mi4wNjhjNC43NjMgMS42ODUgOS44MDMgMi41NiAxNC45NzggMi41NiAxNC4xIDAgMjcuNTY1LTYuNzI5IDM2LjAyMi0xOCAxNC44ODgtMTkuODQ2IDEwLjg0OS00OC4xMDgtOS4wMDUtNjMuMDAzem0tOTEuOTk1LTEzNi40ODloMzB2ODkuOTkybC0zMC0yMi41em0tMTIwIDI3MmgtNTB2LTkyaDUwem0zMCAwdi0xMDdjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtODBjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2MTA3aC0xMDkuOTk5di03Ny4wMDRsMTY0Ljk5OS0xMjMuNzUyIDE2NSAxMjMuNzUzdjc3LjAwM3ptLTIxOS45OTkgMzBoMjA5Ljk5OXYzMGgtNDVjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2NDVoLTQ1Yy04LjI4NCAwLTE1IDYuNzE2LTE1IDE1djQ1aC05MHptMTE5Ljk5OSAxNTB2LTMwaDQ1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTQ1aDQ1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTQ1aDkwdjE1MHptMjY3LjAwMi0yNzAuNTExYy0yLjg2MyAzLjgxNS03LjI0NSA2LjAwNC0xMi4wMjQgNi4wMDQtMy4yNiAwLTYuMzY1LTEuMDM2LTguOTc5LTIuOTk2bC0xOTEuOTk5LTE0NC4wMDNjLTUuMzMzLTQtMTIuNjY3LTQtMTggMGwtMTkyLjAwOCAxNDQuMDA5Yy0zLjE5MyAyLjM5Ny03LjEzNiAzLjQwOC0xMS4wOTggMi44NDItMy45NzMtLjU2Ni03LjQ4OC0yLjY0Ny05Ljg5Ni01Ljg1Ni00Ljk2MS02LjYxNC0zLjYxMi0xNi4wMzUgMy4wMDYtMjFsMjA5Ljk5MS0xNTcuNDkyYzIuNjUyLTEuOTg3IDUuODMtMi45NzkgOS4wMDctMi45NzkgMy4xNzUgMCA2LjM0OS45OTIgOC45OTYgMi45NzRsMjA5Ljk5NiAxNTcuNDk3YzYuNjIgNC45NjYgNy45NjkgMTQuMzg2IDMuMDA4IDIxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",CNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00ODUuNCwyNzIuMDY3aC04LjUzM3YtMTc5LjJjMC00Mi42NjctMzQuMTMzLTc2LjgtNzYuOC03Ni44Yy0zNy43NywwLTY0LjkzNSwyOC4wMDYtNjcuOTc0LDY5LjA0MQ0KCQkJCWMtMTkuODI5LDMuNzQ4LTM0LjQyNiwyMC44MjYtMzQuNDI2LDQxLjg5MmMwLDUuMTIsMy40MTMsOC41MzMsOC41MzMsOC41MzNoNjguMjY3YzUuMTIsMCw4LjUzMy0zLjQxMyw4LjUzMy04LjUzMw0KCQkJCWMwLTIwLjgzMy0xNC4yNzQtMzcuNzY5LTMzLjc2Ny00MS43NjdjMi41NS0yNy4xMTYsMTguODM2LTUyLjEsNTAuODM0LTUyLjFjMzMuMjgsMCw1OS43MzMsMjYuNDUzLDU5LjczMyw1OS43MzN2MTc5LjJIMjAyLjk3NQ0KCQkJCWMtMy44Ni0xOS42ODEtMjAuODc4LTM0LjEzMy00MS44NDEtMzQuMTMzYy04LjUzMy0xMC4yNC0yMC40OC0xNy4wNjctMzQuMTMzLTE3LjA2N2MtMTYuMjEzLDAtMzAuNzIsOS4zODctMzcuNTQ3LDIzLjA0DQoJCQkJYy02LjgyNy0zLjQxMy0xNC41MDctNS45NzMtMjIuMTg3LTUuOTczYy0yMC45NjMsMC0zNy45ODEsMTQuNDUyLTQxLjg0MSwzNC4xMzNIMjQuNmMtMTQuNTA3LDAtMjUuNiwxMS4wOTMtMjUuNiwyNS42DQoJCQkJYzAsMTQuNTA3LDExLjA5MywyNS42LDI1LjYsMjUuNmgxMC4yNTVsMjMuMDI1LDkxLjMwN2M2LjgyNywyNi40NTMsMzAuNzIsNDUuMjI3LDU4LjAyNyw0NS4yMjdoNi44MjdsLTExLjA5MywyMi4xODcNCgkJCQljLTIuNTYsNC4yNjctMC44NTMsOS4zODcsMy40MTMsMTEuMDkzYzAuODUzLDAuODUzLDIuNTYsMC44NTMsMy40MTMsMC44NTNjMy40MTMsMCw1Ljk3My0xLjcwNyw3LjY4LTQuMjY3TDE0MS4wOCw0NTkuOGgyMzYuOA0KCQkJCWwxNC41MDcsMjkuMDEzYzEuNzA3LDMuNDEzLDQuMjY3LDUuMTIsNy42OCw1LjEyYzEuNzA3LDAsMi41NiwwLDMuNDEzLTEuNzA3YzMuNDEzLTEuNzA3LDUuMTItNi44MjcsMy40MTMtMTEuMDkzDQoJCQkJbC0xMC42ODktMjEuMzc5YzI2LjQxOS0wLjkzOCw0OS4yNjYtMTkuMzksNTUuOTE2LTQ0LjMyOGwyMy4yNC05Mi4xNmgxMC4wNGMxNC41MDcsMCwyNS42LTExLjA5MywyNS42LTI1LjYNCgkJCQlDNTExLDI4My4xNiw0OTkuOTA3LDI3Mi4wNjcsNDg1LjQsMjcyLjA2N3ogTTM2NS4wOCwxMTguNDY3aC00OC42NGMzLjQxMy0xMC4yNCwxMy42NTMtMTcuMDY3LDI0Ljc0Ny0xNy4wNjcNCgkJCQlTMzYxLjY2NywxMDguMjI3LDM2NS4wOCwxMTguNDY3eiBNNjcuMjY3LDI1NWM3LjY4LDAsMTQuNTA3LDMuNDEzLDIwLjQ4LDkuMzg3YzEuNzA3LDIuNTYsNS4xMiwzLjQxMyw4LjUzMywyLjU2DQoJCQkJczUuMTItMy40MTMsNS45NzMtNi44MjdjMi41Ni0xMi44LDEyLjgtMjIuMTg3LDI1LjYtMjIuMTg3YzkuMzg3LDAsMTcuOTIsNC4yNjcsMjIuMTg3LDEyLjhjMS43MDcsMy40MTMsNS45NzMsNS4xMiw5LjM4Nyw0LjI2Nw0KCQkJCWMwLjg1MywwLDEuNzA3LDAsMi41NiwwYzExLjA5MywwLDIwLjQ4LDYuODI3LDIzLjg5MywxNy4wNjdINDMuMzczQzQ2Ljc4NywyNjEuODI3LDU2LjE3MywyNTUsNjcuMjY3LDI1NXogTTQzNi43Niw0MTAuMzA3DQoJCQkJYy01LjEyLDE4Ljc3My0yMi4xODcsMzIuNDI3LTQxLjgxMywzMi40MjdIMTE2Ljc2Yy0xOS42MjcsMC0zNi42OTMtMTMuNjUzLTQxLjgxMy0zMi40MjdsLTIyLjE4Ny04Ny4wNGg0MDQuNDhMNDM2Ljc2LDQxMC4zMDd6DQoJCQkJIE00ODUuNCwzMDYuMmgtMTcuMDY3SDQxLjY2N0gyNC42Yy01LjEyLDAtOC41MzMtMy40MTMtOC41MzMtOC41MzNzMy40MTMtOC41MzMsOC41MzMtOC41MzNoOC41MzNoMTYyLjEzM0g0ODUuNA0KCQkJCWM1LjEyLDAsOC41MzMsMy40MTMsOC41MzMsOC41MzNTNDkwLjUyLDMwNi4yLDQ4NS40LDMwNi4yeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzA2LjIsMTczLjkzM2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMjk3LjY2NywxNzAuNTIsMzAxLjA4LDE3My45MzMsMzA2LjIsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwNi4yLDIxMy4xODdjNS4xMiwwLDguNTMzLTQuMjY3LDguNTMzLTguNTMzdi05LjM4N2MwLTUuMTItMy40MTMtOC41MzMtOC41MzMtOC41MzNzLTguNTMzLDMuNDEzLTguNTMzLDguNTMzdjkuMzg3DQoJCQkJQzI5Ny42NjcsMjA5Ljc3MywzMDEuMDgsMjEzLjE4NywzMDYuMiwyMTMuMTg3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzA2LjIsMjQ2LjQ2N2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMjk3LjY2NywyNDMuMDUzLDMwMS4wOCwyNDYuNDY3LDMwNi4yLDI0Ni40Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNDAuMzMzLDE3My45MzNjNS4xMiwwLDguNTMzLTMuNDEzLDguNTMzLTguNTMzdi00LjI2N2MwLTUuMTItMy40MTMtOC41MzMtOC41MzMtOC41MzMNCgkJCQljLTUuMTIsMC04LjUzMywzLjQxMy04LjUzMyw4LjUzM3Y0LjI2N0MzMzEuOCwxNzAuNTIsMzM1LjIxMywxNzMuOTMzLDM0MC4zMzMsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMS44LDIwNC42NTNjMCw1LjEyLDMuNDEzLDguNTMzLDguNTMzLDguNTMzYzUuMTIsMCw4LjUzMy00LjI2Nyw4LjUzMy04LjUzM3YtOS4zODdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJYy01LjEyLDAtOC41MzMsMy40MTMtOC41MzMsOC41MzNWMjA0LjY1M3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMS44LDIzNy45MzNjMCw1LjEyLDMuNDEzLDguNTMzLDguNTMzLDguNTMzYzUuMTIsMCw4LjUzMy0zLjQxMyw4LjUzMy04LjUzM3YtNC4yNjdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJYy01LjEyLDAtOC41MzMsMy40MTMtOC41MzMsOC41MzNWMjM3LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM3NC40NjcsMTczLjkzM2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMzY1LjkzMywxNzAuNTIsMzY5LjM0NywxNzMuOTMzLDM3NC40NjcsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2NS45MzMsMjA0LjY1M2MwLDUuMTIsMy40MTMsOC41MzMsOC41MzMsOC41MzNTMzgzLDIwOC45MiwzODMsMjA0LjY1M3YtOS4zODdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJcy04LjUzMywzLjQxMy04LjUzMyw4LjUzM1YyMDQuNjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjkzMywyMzcuOTMzYzAsNS4xMiwzLjQxMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjQxMyw4LjUzMy04LjUzM3YtNC4yNjdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJcy04LjUzMywzLjQxMy04LjUzMyw4LjUzM1YyMzcuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",ANe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ5NiwzNDRoLThWMjgwYTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJWMTEyYTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJIODhhMzIuMDQyLDMyLjA0MiwwLDAsMC0zMiwzMlYyNDhhMzIuMDQyLDMyLjA0MiwwLDAsMC0zMiwzMnY2NEgxNmE4LDgsMCwwLDAtOCw4djMyYTgsOCwwLDAsMCw4LDhoOHYzMmE4LDgsMCwwLDAsOCw4SDU2YTcuOTksNy45OSwwLDAsMCw3Ljg0LTYuNDNMNzAuNTYsMzkySDQ0MS40NGw2LjcyLDMzLjU3QTcuOTksNy45OSwwLDAsMCw0NTYsNDMyaDI0YTgsOCwwLDAsMCw4LThWMzkyaDhhOCw4LDAsMCwwLDgtOFYzNTJBOCw4LDAsMCwwLDQ5NiwzNDRaTTcyLDExMkExNi4wMjEsMTYuMDIxLDAsMCwxLDg4LDk2SDQyNGExNi4wMjEsMTYuMDIxLDAsMCwxLDE2LDE2VjI0OEg0MjRWMjE2YTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJIMjk2YTMyLjA0MiwzMi4wNDIsMCwwLDAtMzIsMzJ2MzJIMjQ4VjIxNmEzMi4wNDIsMzIuMDQyLDAsMCwwLTMyLTMySDEyMGEzMi4wNDIsMzIuMDQyLDAsMCwwLTMyLDMydjMySDcyWk00MDgsMjE2djMySDI4MFYyMTZhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNi0xNmg5NkExNi4wMjEsMTYuMDIxLDAsMCwxLDQwOCwyMTZabS0xNzYsMHYzMkgxMDRWMjE2YTE2LjAyMSwxNi4wMjEsMCwwLDEsMTYtMTZoOTZBMTYuMDIxLDE2LjAyMSwwLDAsMSwyMzIsMjE2Wk00MCwyODBhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNi0xNkg0NTZhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNiwxNnY2NEg0MFptOS40NCwxMzZINDBWMzkySDU0LjI0Wk00NzIsNDE2aC05LjQ0bC00LjgtMjRINDcyWm0xNi00MEgyNFYzNjBINDg4WiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",mNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NS4zOTMgNDUuMzkzIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDMuNTE4LDEyLjcwOUwyNS4xNzgsMC43MjhjLTEuNTExLTAuOTc4LTMuNDU4LTAuOTY4LTQuOTYsMC4wMjFMMS44NTksMTIuNzE5Yy0xLjE0LDAuNzUxLTEuNDU1LDIuMjg0LTAuNzA1LDMuNDI0DQoJCQljMC43NTEsMS4xNCwyLjI4MywxLjQ1NiwzLjQyNCwwLjcwNEwyMi43MTUsNS4wMjFMNDAuODMsMTYuODU3YzAuNDE2LDAuMjY5LDAuODgxLDAuMzk2LDEuMzQxLDAuMzk2DQoJCQljMC44MTIsMCwxLjYwNC0wLjM5NywyLjA3Ny0xLjEyN0M0NC45OSwxNC45OCw0NC42NjIsMTMuNDUyLDQzLjUxOCwxMi43MDl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zOC44NzksMjcuNjE2Yy0wLjE1MS0wLjg2NS0wLjkwMy0xLjUwNS0xLjc4LTEuNTA1aC0xLjAwOGwtMC4zODMtMy45ODdjLTAuNDA5LTQuMjY0LTMuOTQ4LTcuNDktOC4yMzItNy40OUgxNy45Mg0KCQkJYy00LjI4NSwwLTcuODIzLDMuMjI3LTguMjMzLDcuNDlsLTAuMzgyLDMuOTg3SDguMjk2Yy0wLjg3OCwwLTEuNjI5LDAuNjQtMS43ODIsMS41MDVsLTEuNSw4LjUwNA0KCQkJYy0wLjE4NiwxLjA1NCwwLjExMiwyLjEzOSwwLjgsMi45NTdjMC42NjIsMC43ODgsMS42MzcsMS4yNTgsMi42NTcsMS4yOTN2MS40MTJjMCwxLjk5OSwxLjYwMiwzLjYxLDMuNjAzLDMuNjFoMS4xMzgNCgkJCWMxLjk5OSwwLDMuNjI1LTEuNjExLDMuNjI1LTMuNjF2LTEuMzg5aDExLjczMnYxLjM4NmMwLDIsMS42MTMsMy42MTMsMy42MTIsMy42MTNoMS4xMzljMS45OTksMCwzLjYxNC0xLjYxMywzLjYxNC0zLjYxM1Y0MC4zNw0KCQkJYzEuMDItMC4wMzUsMS45ODktMC41MDEsMi42NDktMS4yODhjMC42ODgtMC44MiwwLjk4Mi0xLjg5OSwwLjc5OC0yLjk1NUwzOC44NzksMjcuNjE2eiBNMTEuNjQyLDM3LjExMw0KCQkJYy0xLjY4NywwLTMuMDU1LTEuMzY3LTMuMDU1LTMuMDU2YzAtMS42ODksMS4zNjgtMy4wNTcsMy4wNTUtMy4wNTdjMS42ODgsMCwzLjA1NywxLjM2NywzLjA1NywzLjA1Nw0KCQkJQzE0LjY5OSwzNS43NDYsMTMuMzMsMzcuMTEzLDExLjY0MiwzNy4xMTN6IE0xMi40MDQsMjYuMTExbDAuMzUzLTMuNjc4YzAuMjU3LTIuNjc0LDIuNDc2LTQuNjg4LDUuMTYzLTQuNjg4aDAuNTUxdjEuMTU2DQoJCQljMCwxLjAwMywwLjc5NywxLjgwMiwxLjc5OSwxLjgwMmg0Ljg1NmMxLjAwMiwwLDEuODEzLTAuNzk5LDEuODEzLTEuODAydi0xLjE1NWgwLjUzN2MyLjY4NywwLDQuOTA2LDIuMDE0LDUuMTYyLDQuNjg4DQoJCQlsMC4zNTQsMy42NzhMMTIuNDA0LDI2LjExMUwxMi40MDQsMjYuMTExeiBNMzMuNzUsMzcuMTEzYy0xLjY4NywwLTMuMDU1LTEuMzY3LTMuMDU1LTMuMDU2YzAtMS42ODksMS4zNjgtMy4wNTcsMy4wNTUtMy4wNTcNCgkJCWMxLjY4OCwwLDMuMDU3LDEuMzY3LDMuMDU3LDMuMDU3QzM2LjgwNywzNS43NDYsMzUuNDM4LDM3LjExMywzMy43NSwzNy4xMTN6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",pNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00OTQuNTk0LDM5NC4yMzdoLTE5LjQ2MWMxMi45NTQtMTkuNTQzLDIwLjUxMi00Mi45NTgsMjAuNTEyLTY4LjEwOWMwLTY4LjE1Ny01NS40NDktMTIzLjYwNi0xMjMuNjA2LTEyMy42MDYNCgkJCWMtNy4xNzEsMC0xNC4yLDAuNjIyLTIxLjA0LDEuNzk5YzE3Ljg1My0yMS40MzUsMjguNjA4LTQ4Ljk3OSwyOC42MDgtNzguOTlDMzc5LjYwNiw1Ny4xNzQsMzI0LjE1NywxLjcyNCwyNTYsMS43MjQNCgkJCWMtNjguMTU3LDAtMTIzLjYwNiw1NS40NDktMTIzLjYwNiwxMjMuNjA2YzAsMzAuMDEyLDEwLjc1NSw1Ny41NTUsMjguNjA4LDc4Ljk5Yy02Ljg0LTEuMTc4LTEzLjg2OS0xLjc5OS0yMS4wNC0xLjc5OQ0KCQkJYy02OC4xNTcsMC0xMjMuNjA2LDU1LjQ0OS0xMjMuNjA2LDEyMy42MDZjMCwyNS4xNTEsNy41NTgsNDguNTY3LDIwLjUxMiw2OC4xMDlIMTcuNDA2TDAsNTEwLjI3Nmg5My4yOTRsMTUuMTM1LTIwLjE4MWg2My4wNjQNCgkJCWwxNS4xMzUsMjAuMTgxaDEzOC43NDJsMTUuMTM1LTIwLjE4MWg2My4wNjRsMTUuMTM1LDIwLjE4MUg1MTJMNDk0LjU5NCwzOTQuMjM3eiBNNDY5LjUxOSwzNzMuNjdsLTEzLjE0Mi03LjU4OA0KCQkJYzQuNzM2LTkuOTU4LDcuNzYtMjAuODgxLDguNjg4LTMyLjM4N2gxNS4xNzVDNDc5LjI1NCwzNDcuOTQ4LDQ3NS41MDMsMzYxLjQ1LDQ2OS41MTksMzczLjY3eiBNNDA5Ljg3NywzOTQuNTMzdi0xMzYuODENCgkJCWMyNC4wNDUsMTMuMzU0LDQwLjM2MSwzOS4wMDUsNDAuMzYxLDY4LjQwNVM0MzMuOTIyLDM4MS4xNzgsNDA5Ljg3NywzOTQuNTMzeiBNNDE5LjU4MSw0MjMuNjA4DQoJCQljLTEyLjIyLDUuOTg0LTI1LjcyMiw5LjczNC0zOS45NzUsMTAuNzIydi0xNS4xNzVjMTEuNTA2LTAuOTI3LDIyLjQyOS0zLjk1MSwzMi4zODctOC42ODhMNDE5LjU4MSw0MjMuNjA4eiBNNDQ4Ljc4NywzNzkuMTc2DQoJCQlsMTMuMTQ4LDcuNTkxYy03Ljc5NCwxMS41MTctMTcuNzQsMjEuNDYzLTI5LjI1NiwyOS4yNTZsLTcuNTkxLTEzLjE0OEM0MzQuMzM2LDM5Ni40NjQsNDQyLjM3NSwzODguNDI1LDQ0OC43ODcsMzc5LjE3NnoNCgkJCSBNNDgwLjI0MSwzMTguNTZoLTE1LjE3NWMtMC45MjctMTEuNTA2LTMuOTUxLTIyLjQyOS04LjY4OC0zMi4zODdsMTMuMTQyLTcuNTg4QzQ3NS41MDMsMjkwLjgwNSw0NzkuMjU0LDMwNC4zMDcsNDgwLjI0MSwzMTguNTZ6DQoJCQkgTTQzMi42NzgsMjM2LjIzMWMxMS41MTYsNy43OTQsMjEuNDYzLDE3Ljc0LDI5LjI1NiwyOS4yNTZsLTEzLjE0OCw3LjU5MWMtNi40MTItOS4yNDktMTQuNDUtMTcuMjg3LTIzLjY5OS0yMy42OTkNCgkJCUw0MzIuNjc4LDIzNi4yMzF6IE00MTEuOTk0LDI0MS43ODljLTkuOTU4LTQuNzM2LTIwLjg4MS03Ljc2LTMyLjM4Ny04LjY4OHYtMTUuMTc2YzE0LjI1MiwwLjk4NywyNy43NTQsNC43MzgsMzkuOTc0LDEwLjcyMg0KCQkJTDQxMS45OTQsMjQxLjc4OXogTTM5NC43NDIsMjUxLjN2MTQ5LjY1NWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyYy03Ljg5NCwwLTE1LjUxNC0xLjE4Ny0yMi43MDMtMy4zNzJWMjUxLjMNCgkJCWM3LjE4OS0yLjE4NiwxNC44MS0zLjM3MiwyMi43MDMtMy4zNzJDMzc5LjkzMiwyNDcuOTI4LDM4Ny41NTIsMjQ5LjExNCwzOTQuNzQyLDI1MS4zeiBNMTc3LjgsMzk0LjUzM3YtMTM2LjgxDQoJCQljMjQuMDQ1LDEzLjM1NCw0MC4zNjEsMzkuMDA1LDQwLjM2MSw2OC40MDVTMjAxLjg0NSwzODEuMTc4LDE3Ny44LDM5NC41MzN6IE0xODcuNTA0LDQyMy42MDgNCgkJCWMtMTIuMjIsNS45ODQtMjUuNzIyLDkuNzM0LTM5Ljk3NSwxMC43MjJ2LTE1LjE3NWMxMS41MDYtMC45MjcsMjIuNDI5LTMuOTUxLDMyLjM4Ny04LjY4OEwxODcuNTA0LDQyMy42MDh6IE0yODIuMTQyLDI2NS40ODgNCgkJCWM3Ljc5NC0xMS41MTcsMTcuNzQtMjEuNDYzLDI5LjI1Ni0yOS4yNTZsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OUwyODIuMTQyLDI2NS40ODh6IE0yODcuNywyODYuMTczDQoJCQljLTQuNzM2LDkuOTU4LTcuNzYsMjAuODgxLTguNjg4LDMyLjM4N2gtMTUuMTc1YzAuOTg3LTE0LjI1Myw0LjczNy0yNy43NTQsMTAuNzIyLTM5Ljk3NUwyODcuNywyODYuMTczeiBNMzE2LjY0LDIxNS4yMjcNCgkJCWwtNy41OTEtMTMuMTQ4YzkuMjQ5LTYuNDEyLDE3LjI4Ny0xNC40NSwyMy42OTktMjMuNjk5bDEzLjE0OCw3LjU5MUMzMzguMTAzLDE5Ny40ODcsMzI4LjE1NywyMDcuNDMzLDMxNi42NCwyMTUuMjI3eg0KCQkJIE0yOTMuODM5LDE5My43MzZWNTYuOTI1QzMxNy44ODQsNzAuMjgsMzM0LjIsOTUuOTMsMzM0LjIsMTI1LjMzMVMzMTcuODg0LDE4MC4zODEsMjkzLjgzOSwxOTMuNzM2eiBNMjk1Ljk1NSwyMDkuNjY5DQoJCQlsNy41ODcsMTMuMTQyYy0xMi4yMiw1Ljk4NC0yNS43MjIsOS43MzQtMzkuOTc1LDEwLjcyMnYtMTUuMTc1QzI3NS4wNzQsMjE3LjQzLDI4NS45OTYsMjE0LjQwNywyOTUuOTU1LDIwOS42Njl6IE0yNzcuMDQsMjQ3LjEzOA0KCQkJYy04Ljk1MSwxMC43NDctMTYuMTE5LDIzLjAyOC0yMS4wNCwzNi4zODljLTQuOTIxLTEzLjM2MS0xMi4wODktMjUuNjQxLTIxLjA0LTM2LjM4OWM2Ljg0LDEuMTc4LDEzLjg2OSwxLjc5OSwyMS4wNCwxLjc5OQ0KCQkJQzI2My4xNzEsMjQ4LjkzNywyNzAuMiwyNDguMzE1LDI3Ny4wNCwyNDcuMTM4eiBNMjQ4LjE2NCwzMTguNTZoLTE1LjE3NWMtMC45MjctMTEuNTA2LTMuOTUxLTIyLjQyOS04LjY4OC0zMi4zODdsMTMuMTQyLTcuNTg4DQoJCQlDMjQzLjQyNiwyOTAuODA1LDI0Ny4xNzcsMzA0LjMwNywyNDguMTY0LDMxOC41NnogTTI0OC40MzEsMjMzLjUzM2MtMTQuMjUyLTAuOTg3LTI3Ljc1NC00LjczOC0zOS45NzQtMTAuNzIybDcuNTg3LTEzLjE0Mg0KCQkJYzkuOTU4LDQuNzM2LDIwLjg4MSw3Ljc2LDMyLjM4Nyw4LjY4OFYyMzMuNTMzeiBNMjE4LjE2MSwxOTMuNzM2Yy0yNC4wNDUtMTMuMzU0LTQwLjM2MS0zOS4wMDUtNDAuMzYxLTY4LjQwNQ0KCQkJYzAtMjkuNCwxNi4zMTYtNTUuMDUxLDQwLjM2MS02OC40MDVWMTkzLjczNnogTTE3OS4yNTEsMTc4LjM3OWM2LjQxMiw5LjI0OSwxNC40NSwxNy4yODcsMjMuNjk5LDIzLjY5OWwtNy41OTEsMTMuMTQ4DQoJCQljLTExLjUxNi03Ljc5NC0yMS40NjMtMTcuNzQtMjkuMjU2LTI5LjI1NkwxNzkuMjUxLDE3OC4zNzl6IE0yMDAuNjAxLDIzNi4yMzFjMTEuNTE2LDcuNzk0LDIxLjQ2MywxNy43NCwyOS4yNTYsMjkuMjU2DQoJCQlsLTEzLjE0OCw3LjU5MWMtNi40MTItOS4yNDktMTQuNDUtMTcuMjg3LTIzLjY5OS0yMy42OTlMMjAwLjYwMSwyMzYuMjMxeiBNMjE2LjcxLDM3OS4xNzZsMTMuMTQ4LDcuNTkxDQoJCQljLTcuNzk0LDExLjUxNy0xNy43NCwyMS40NjMtMjkuMjU2LDI5LjI1NmwtNy41OTEtMTMuMTQ4QzIwMi4yNTksMzk2LjQ2NCwyMTAuMjk4LDM4OC40MjUsMjE2LjcxLDM3OS4xNzZ6IE0yMjQuMywzNjYuMDgyDQoJCQljNC43MzYtOS45NTgsNy43Ni0yMC44ODEsOC42ODgtMzIuMzg3aDE1LjE3NWMtMC45ODcsMTQuMjUzLTQuNzM3LDI3Ljc1NC0xMC43MjIsMzkuOTc1TDIyNC4zLDM2Ni4wODJ6IE0yNTYsMzY4LjcyOQ0KCQkJYzMuMzMyLDkuMDQ1LDcuNjk3LDE3LjU5MywxMi45NDQsMjUuNTA4aC0yNS44ODhDMjQ4LjMwMywzODYuMzIxLDI1Mi42NjgsMzc3Ljc3NCwyNTYsMzY4LjcyOXogTTI2My44MzYsMzMzLjY5NWgxNS4xNzUNCgkJCWMwLjkyNywxMS41MDYsMy45NTEsMjIuNDI5LDguNjg4LDMyLjM4N2wtMTMuMTQyLDcuNTg4QzI2OC41NzQsMzYxLjQ1LDI2NC44MjMsMzQ3Ljk0OCwyNjMuODM2LDMzMy42OTV6IE0yOTUuMjksMzc5LjE3Ng0KCQkJYzYuNDEyLDkuMjQ5LDE0LjQ1LDE3LjI4NywyMy42OTksMjMuNjk5bC03LjU5MSwxMy4xNDhjLTExLjUxNi03Ljc5NC0yMS40NjMtMTcuNzQtMjkuMjU2LTI5LjI1NkwyOTUuMjksMzc5LjE3NnoNCgkJCSBNMjkzLjgzOSwzMjYuMTI4YzAtMjkuNCwxNi4zMTYtNTUuMDUxLDQwLjM2MS02OC40MDV2MTM2LjgxQzMxMC4xNTUsMzgxLjE3OCwyOTMuODM5LDM1NS41MjgsMjkzLjgzOSwzMjYuMTI4eiBNMzMyLjA4NCw0MTAuNDY2DQoJCQljOS45NTgsNC43MzYsMjAuODgxLDcuNzYsMzIuMzg3LDguNjg4djE1LjE3NWMtMTQuMjUzLTAuOTg3LTI3Ljc1NC00LjczOC0zOS45NzUtMTAuNzIyTDMzMi4wODQsNDEwLjQ2NnogTTM2NC40NzEsMjE3LjkyNVYyMzMuMQ0KCQkJYy0xMS41MDYsMC45MjctMjIuNDI5LDMuOTUxLTMyLjM4Nyw4LjY4OGwtNy41ODctMTMuMTQyQzMzNi43MTYsMjIyLjY2MywzNTAuMjE4LDIxOC45MTIsMzY0LjQ3MSwyMTcuOTI1eiBNMzUzLjQ4LDE3Mi44NzMNCgkJCWwtMTMuMTQyLTcuNTg4YzQuNzM2LTkuOTU4LDcuNzYtMjAuODgxLDguNjg4LTMyLjM4N2gxNS4xNzVDMzYzLjIxNiwxNDcuMTUxLDM1OS40NjUsMTYwLjY1MywzNTMuNDgsMTcyLjg3M3ogTTM2NC4yMDIsMTE3Ljc2Mw0KCQkJaC0xNS4xNzVjLTAuOTI3LTExLjUwNi0zLjk1MS0yMi40MjktOC42ODgtMzIuMzg3bDEzLjE0Mi03LjU4OEMzNTkuNDY1LDkwLjAwOCwzNjMuMjE2LDEwMy41MSwzNjQuMjAyLDExNy43NjN6IE0zMTYuNjQsMzUuNDM0DQoJCQljMTEuNTE2LDcuNzk0LDIxLjQ2MywxNy43NCwyOS4yNTYsMjkuMjU2bC0xMy4xNDgsNy41OTFjLTYuNDEyLTkuMjQ5LTE0LjQ1LTE3LjI4Ny0yMy42OTktMjMuNjk5TDMxNi42NCwzNS40MzR6IE0yOTUuOTU2LDQwLjk5Mg0KCQkJYy05Ljk1OC00LjczNi0yMC44ODEtNy43Ni0zMi4zODctOC42ODhWMTcuMTI4YzE0LjI1MiwwLjk4NywyNy43NTQsNC43MzgsMzkuOTc0LDEwLjcyMkwyOTUuOTU2LDQwLjk5MnogTTI3OC43MDMsNTAuNTAzdjE0OS42NTUNCgkJCWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyYy03Ljg5NCwwLTE1LjUxNC0xLjE4Ny0yMi43MDMtMy4zNzJWNTAuNTAzYzcuMTg5LTIuMTg2LDE0LjgxLTMuMzcyLDIyLjcwMy0zLjM3Mg0KCQkJQzI2My44OTQsNDcuMTMxLDI3MS41MTQsNDguMzE3LDI3OC43MDMsNTAuNTAzeiBNMjQ4LjQzMiwxNy4xMjh2MTUuMTc1Yy0xMS41MDYsMC45MjctMjIuNDI5LDMuOTUxLTMyLjM4Nyw4LjY4OGwtNy41ODctMTMuMTQyDQoJCQlDMjIwLjY3OCwyMS44NjYsMjM0LjE4LDE4LjExNSwyNDguNDMyLDE3LjEyOHogTTE5NS4zNiwzNS40MzRsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OQ0KCQkJbC0xMy4xNDgtNy41OTFDMTczLjg5Nyw1My4xNzQsMTgzLjg0Myw0My4yMjgsMTk1LjM2LDM1LjQzNHogTTE1OC41Miw3Ny43ODhsMTMuMTQyLDcuNTg4Yy00LjczNiw5Ljk1OC03Ljc2LDIwLjg4MS04LjY4OCwzMi4zODcNCgkJCWgtMTUuMTc1QzE0OC43ODUsMTAzLjUxLDE1Mi41MzUsOTAuMDA4LDE1OC41Miw3Ny43ODh6IE0xNTguNTIsMTcyLjg3M2MtNS45ODQtMTIuMjItOS43MzUtMjUuNzIyLTEwLjcyMi0zOS45NzVoMTUuMTc1DQoJCQljMC45MjcsMTEuNTA2LDMuOTUxLDIyLjQyOSw4LjY4OCwzMi4zODdMMTU4LjUyLDE3Mi44NzN6IE0xODcuNTA0LDIyOC42NDdsLTcuNTg3LDEzLjE0MmMtOS45NTgtNC43MzYtMjAuODgxLTcuNzYtMzIuMzg3LTguNjg4DQoJCQl2LTE1LjE3NkMxNjEuNzgyLDIxOC45MTIsMTc1LjI4NCwyMjIuNjY0LDE4Ny41MDQsMjI4LjY0N3ogTTE2Mi42NjUsMjUxLjN2MTQ5LjY1NWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyDQoJCQljLTcuODk0LDAtMTUuNTE0LTEuMTg3LTIyLjcwMy0zLjM3MlYyNTEuM2M3LjE4OS0yLjE4NiwxNC44MS0zLjM3MiwyMi43MDMtMy4zNzJDMTQ3Ljg1NSwyNDcuOTI4LDE1NS40NzUsMjQ5LjExNCwxNjIuNjY1LDI1MS4zeg0KCQkJIE02MS43NjIsMzI2LjEyOGMwLTI5LjQsMTYuMzE2LTU1LjA1MSw0MC4zNjEtNjguNDA1djEzNi44MUM3OC4wNzgsMzgxLjE3OCw2MS43NjIsMzU1LjUyOCw2MS43NjIsMzI2LjEyOHogTTg2LjkxMyw0MDIuODc2DQoJCQlsLTcuNTkxLDEzLjE0OGMtMTEuNTE2LTcuNzk0LTIxLjQ2My0xNy43NC0yOS4yNTYtMjkuMjU2bDEzLjE0OC03LjU5MUM2OS42MjUsMzg4LjQyNSw3Ny42NjQsMzk2LjQ2NCw4Ni45MTMsNDAyLjg3NnoNCgkJCSBNMTAwLjAwNyw0MTAuNDY2YzkuOTU4LDQuNzM2LDIwLjg4MSw3Ljc2LDMyLjM4Nyw4LjY4OHYxNS4xNzVjLTE0LjI1My0wLjk4Ny0yNy43NTQtNC43MzgtMzkuOTc1LTEwLjcyMkwxMDAuMDA3LDQxMC40NjZ6DQoJCQkgTTEzMi4zOTQsMjE3LjkyNVYyMzMuMWMtMTEuNTA2LDAuOTI3LTIyLjQyOSwzLjk1MS0zMi4zODcsOC42ODhsLTcuNTg3LTEzLjE0MkMxMDQuNjM5LDIyMi42NjMsMTE4LjE0MSwyMTguOTEyLDEzMi4zOTQsMjE3LjkyNQ0KCQkJeiBNNzkuMzIyLDIzNi4yMzFsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OWwtMTMuMTQ4LTcuNTkxDQoJCQlDNTcuODU5LDI1My45NzEsNjcuODA1LDI0NC4wMjUsNzkuMzIyLDIzNi4yMzF6IE00Mi40ODEsMjc4LjU4NWwxMy4xNDIsNy41ODhjLTQuNzM2LDkuOTU4LTcuNzYsMjAuODgxLTguNjg4LDMyLjM4N0gzMS43NTkNCgkJCUMzMi43NDYsMzA0LjMwNywzNi40OTcsMjkwLjgwNSw0Mi40ODEsMjc4LjU4NXogTTMxLjc1OSwzMzMuNjk1aDE1LjE3NWMwLjkyNywxMS41MDYsMy45NTEsMjIuNDI5LDguNjg4LDMyLjM4N0w0Mi40OCwzNzMuNjcNCgkJCUMzNi40OTcsMzYxLjQ1LDMyLjc0NiwzNDcuOTQ4LDMxLjc1OSwzMzMuNjk1eiBNNDI2LjI3NCw0OTUuMTRsLTE1LjEzNS0yMC4xODFoLTc4LjJsLTE1LjEzNSwyMC4xODFIMTk0LjE5N2wtMTUuMTM1LTIwLjE4MQ0KCQkJaC03OC4yTDg1LjcyNiw0OTUuMTRIMTcuNTc1bDEyLjg2NS04NS43NjhoMTguMjNjMjIuNjIsMjQuNzg2LDU1LjE3MSw0MC4zNjEsOTEuMjkxLDQwLjM2MXM2OC42NzEtMTUuNTc1LDkxLjI5MS00MC4zNjFoNDkuNDk0DQoJCQljMjIuNjIsMjQuNzg2LDU1LjE3MSw0MC4zNjEsOTEuMjkxLDQwLjM2MXM2OC42NzEtMTUuNTc1LDkxLjI5MS00MC4zNjFoMTguMjNsMTIuODY1LDg1Ljc2OEg0MjYuMjc0eiIvPg0KICAgICAgICA8cmVjdCB4PSIzMDUuOTQ4IiB5PSIxMTYuNzU1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIxOTAuOTE5IiB5PSIxMTYuNzU1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSIxMTEuMjA1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSI2NS43OTkiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjI0OC40MzMiIHk9IjE3MS43NDciIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQyMS45ODYiIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjMwNi45NTciIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjMxMi4wMDIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjI2Ni41OTYiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjM3Mi41NDQiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjE4OS45MSIgeT0iMzE3LjU1MiIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iNzQuODgiIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjMxMi4wMDIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjI2Ni41OTYiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjM3Mi41NDQiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQ2MS4zODciIHk9IjQ3MC44ODEiIHRyYW5zZm9ybT0ibWF0cml4KDAuOTg4OSAtMC4xNDgzIDAuMTQ4MyAwLjk4ODkgLTY1Ljc3MiA3NC44NDExKSINCiAgICAgICAgICAgICAgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iNDU2LjIxIiB5PSI0MzEuOTM1IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjk4ODkgLTAuMTQ4MyAwLjE0ODMgMC45ODg5IC02MC43MTk5IDczLjY5MDMpIg0KICAgICAgICAgICAgICB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjI0LjE0NSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSI0NjQuODciIHdpZHRoPSI0NS40MDYiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjIxOC4xNjIiIHk9IjQ2NC44NyIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMjYzLjU2OSIgeT0iNDI0LjUwOSIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMjMzLjI5OCIgeT0iNDI0LjUwOSIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzYuMTI3IiB5PSI0MzYuNDYxIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjE0ODMgLTAuOTg4OSAwLjk4ODkgMC4xNDgzIC0zOTguMDY3NSA0MjUuODQyNykiDQogICAgICAgICAgICAgIHdpZHRoPSIyNC4xNDUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1LjQ2OCIgeT0iNDcwLjg2IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjE0ODMgLTAuOTg4OSAwLjk4ODkgMC4xNDgzIC00MzYuNDgzOCA0NTAuMDMyNSkiDQogICAgICAgICAgICAgIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",ONe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTYxLDIxSDNhMSwxLDAsMCwwLDAsMkg2MWExLDEsMCwwLDAsMC0yWiIvPg0KICAgICAgICA8cGF0aCBkPSJNNjEsMkg0OWExLDEsMCwwLDAtMSwxVjE3SDQ2di0uNzY0YTEwLjUzMywxMC41MzMsMCwwLDAtMS4xLTQuNjgzQTguNTIyLDguNTIyLDAsMCwxLDQ0LDcuNzY0VjNhMSwxLDAsMCwwLTEtMUgzOWExLDEsMCwwLDAtMSwxVjcuNzY0YTguNTIyLDguNTIyLDAsMCwxLS45LDMuNzg5Yy0uMDM5LjA4LS4wNjcuMTY1LS4xLjI0Ni0uMDM4LS4wODEtLjA2Ni0uMTY2LS4xLS4yNDZBOC41MjIsOC41MjIsMCwwLDEsMzYsNy43NjRWM2ExLDEsMCwwLDAtMS0xSDMxYTEsMSwwLDAsMC0xLDFWNy43NjRhOC41MjIsOC41MjIsMCwwLDEtLjg5NSwzLjc4OUExMC41MzMsMTAuNTMzLDAsMCwwLDI4LDE2LjIzNlYxN0gxOFYxMC40MTRhMi4zOTQsMi4zOTQsMCwwLDEsLjcwNy0xLjcwNkE0LjM4NSw0LjM4NSwwLDAsMCwyMCw1LjU4NlY0aDJWNS41ODZhNC4zODUsNC4zODUsMCwwLDAsMS4yOTMsMy4xMjJBMi4zOTQsMi4zOTQsMCwwLDEsMjQsMTAuNDE0VjE0YTEsMSwwLDAsMCwyLDBWMTAuNDE0YTQuMzg1LDQuMzg1LDAsMCwwLTEuMjkzLTMuMTIyQTIuMzk0LDIuMzk0LDAsMCwxLDI0LDUuNTg2VjNhMSwxLDAsMCwwLTEtMUgxOWExLDEsMCwwLDAtMSwxVjUuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDZBNC41MTUsNC41MTUsMCwwLDAsMTcsNy42NDlhNC41MTUsNC41MTUsMCwwLDAtLjI5My0uMzU3QTIuMzk0LDIuMzk0LDAsMCwxLDE2LDUuNTg2VjNhMSwxLDAsMCwwLTEtMUgxMWExLDEsMCwwLDAtMSwxVjUuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDZBNC4zODUsNC4zODUsMCwwLDAsOCwxMC40MTRWMTdIM2ExLDEsMCwwLDAsMCwySDYxYTEsMSwwLDAsMCwwLTJINTBWMTRINjBhMSwxLDAsMCwwLDIsMFYzQTEsMSwwLDAsMCw2MSwyWk00Miw0VjdINDBWNFpNMTAuNzA3LDguNzA4QTQuMzg1LDQuMzg1LDAsMCwwLDEyLDUuNTg2VjRoMlY1LjU4NmE0LjM4NSw0LjM4NSwwLDAsMCwxLjI5MywzLjEyMkEyLjM5NCwyLjM5NCwwLDAsMSwxNiwxMC40MTRWMTJIMTBWMTAuNDE0QTIuMzk0LDIuMzk0LDAsMCwxLDEwLjcwNyw4LjcwOFpNMTAsMTRoNnYzSDEwWm0yMCwyLjIzNmE4LjUyMiw4LjUyMiwwLDAsMSwuODk1LTMuNzg5QTEwLjUzMywxMC41MzMsMCwwLDAsMzIsNy43NjRWNGgyVjcuNzY0YTEwLjUzMywxMC41MzMsMCwwLDAsMS4xLDQuNjgzLDguNTIyLDguNTIyLDAsMCwxLC45LDMuNzg5VjE3SDMwWk0zOCwxN3YtLjc2NGE4LjUyMiw4LjUyMiwwLDAsMSwuOS0zLjc4OUExMC41NDEsMTAuNTQxLDAsMCwwLDM5LjkyNCw5aDIuMTUyYTEwLjU0MSwxMC41NDEsMCwwLDAsMS4wMjksMy40NDcsOC41MjIsOC41MjIsMCwwLDEsLjksMy43ODlWMTdaTTYwLDRWNkg1MFY0Wk01MCwxMlY4SDYwdjRaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik02MSw0NEgzYTEsMSwwLDAsMCwwLDJINjBWNjBINDZWNDlhMSwxLDAsMCwwLTIsMFY2MEg0MlY1M2ExLDEsMCwwLDAtMS0xSDI2YTEsMSwwLDAsMC0xLDF2N0gyMlY0OWExLDEsMCwwLDAtMS0xSDVhMSwxLDAsMCwwLTEsMVY2MEgzYTEsMSwwLDAsMCwwLDJINjFhMSwxLDAsMCwwLDEtMVY0NUExLDEsMCwwLDAsNjEsNDRaTTQwLDU2SDM3VjU0aDNabS01LDBIMzJWNTRoM1ptLTUtMnYySDI3VjU0Wk0yMCw1Mi4zODJhMy45NDcsMy45NDcsMCwwLDAtNiwwVjUwaDZaTTE5LDU1YTIsMiwwLDEsMS0yLTJBMiwyLDAsMCwxLDE5LDU1Wk02LDU0aDZ2Mkg2Wm02LTR2Mkg2VjUwWk02LDU4aDZ2Mkg2Wm04LDJWNTcuNjE4YTMuOTQ3LDMuOTQ3LDAsMCwwLDYsMFY2MFptMTMtMmgzdjJIMjdabTUsMGgzdjJIMzJabTUsMlY1OGgzdjJaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik01Nyw1NmExLDEsMCwwLDAsMS0xVjUxYTEsMSwwLDAsMC0xLTFINDlhMSwxLDAsMCwwLTEsMXY0YTEsMSwwLDAsMCwxLDFabS03LTRoNnYySDUwWiIvPg0KICAgICAgICA8cGF0aCBkPSJNNjAsMjkuMTg0VjI2YTEsMSwwLDAsMC0xLTFINTVhMSwxLDAsMCwwLTEsMXYzLjE4NEEzLDMsMCwwLDAsNTIsMzJ2N2EyLjk2NiwyLjk2NiwwLDAsMCwuMTg0LDFINDlWMzRhMSwxLDAsMCwwLDAtMkg0MWExLDEsMCwwLDAsMCwydjZIMzhWMzFhMSwxLDAsMCwwLTEtMUgyNWExLDEsMCwwLDAtMSwxdjlIMjJWMzlhMSwxLDAsMCwwLTIsMHYxSDE0VjMzLjQxNGEyLjM5NCwyLjM5NCwwLDAsMSwuNzA3LTEuNzA2QTQuMzg1LDQuMzg1LDAsMCwwLDE2LDI4LjU4NlYyN2gydjEuNTg2YTQuMzg1LDQuMzg1LDAsMCwwLDEuMjkzLDMuMTIyQTIuMzk0LDIuMzk0LDAsMCwxLDIwLDMzLjQxNFYzNWExLDEsMCwwLDAsMiwwVjMzLjQxNGE0LjM4NSw0LjM4NSwwLDAsMC0xLjI5My0zLjEyMkEyLjM5NCwyLjM5NCwwLDAsMSwyMCwyOC41ODZWMjZhMSwxLDAsMCwwLTEtMUgxNWExLDEsMCwwLDAtMSwxdjIuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDYsNC41MTUsNC41MTUsMCwwLDAtLjI5My4zNTcsNC41MTUsNC41MTUsMCwwLDAtLjI5My0uMzU3QTIuMzk0LDIuMzk0LDAsMCwxLDEyLDI4LjU4NlYyNmExLDEsMCwwLDAtMS0xSDdhMSwxLDAsMCwwLTEsMXYyLjU4NmEyLjM5NCwyLjM5NCwwLDAsMS0uNzA3LDEuNzA2QTQuMzg1LDQuMzg1LDAsMCwwLDQsMzMuNDE0VjQwSDNhMSwxLDAsMCwwLDAsMkg2MWExLDEsMCwwLDAsLjctMS43MTNBMi45NjQsMi45NjQsMCwwLDAsNjIsMzlWMzJBMywzLDAsMCwwLDYwLDI5LjE4NFpNNi43MDcsMzEuNzA4QTQuMzg1LDQuMzg1LDAsMCwwLDgsMjguNTg2VjI3aDJ2MS41ODZhNC4zODUsNC4zODUsMCwwLDAsMS4yOTMsMy4xMjJBMi4zOTQsMi4zOTQsMCwwLDEsMTIsMzMuNDE0VjM1SDZWMzMuNDE0QTIuMzk0LDIuMzk0LDAsMCwxLDYuNzA3LDMxLjcwOFpNNiwzN2g2djNINlpNNTYsMjdoMnYySDU2Wm0tMSw0aDRhMSwxLDAsMCwxLDEsMXYzSDU0VjMyQTEsMSwwLDAsMSw1NSwzMVpNMzYsMzZIMzJWMzJoNFptLTYtNHYySDI2VjMyWm0tNCw0aDR2NEgyNlptNiw0VjM4aDR2MlptMTEsMFYzNGg0djZabTEyLDBhMSwxLDAsMCwxLTEtMVYzN2g2djJhMSwxLDAsMCwxLTEsMVoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",ENe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0xMDggNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MDQgNDguMDE1NjI1aC00OTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOS04LTh2LTMyLjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQ5NmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4djMyLjAxNTYyNWMwIDQuNDI1NzgxLTMuNTc0MjE5IDgtOCA4em0tNDg4LTE2aDQ4MHYtMTYuMDE1NjI1aC00ODB6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTI0Ni43MTg3NWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0Ni43MTg3NWMwIDQuNDI1NzgyLTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NiAyOTYuMTYwMTU2Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04di0yNDYuNzE4NzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNDYuNzE4NzVjMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyOTYuMTYwMTU2aC0yNGMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDI0YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00OTYgMjk2LjE2MDE1NmgtMjRjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgyNGM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MC4xMTMyODFoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE4NC4xMjg5MDZoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNzEuOTg0Mzc1IDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0yMi4wNTg1OTQgMTcuOTM3NS00MCAzOS45OTIxODctNDAgNC40MjE4NzYgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI0IDgtOCA4LTEzLjIyMjY1NiAwLTIzLjk5MjE4NyAxMC43NjU2MjUtMjMuOTkyMTg3IDI0IDAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUyIDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yMzQzNzUtMTAuNzY5NTMxLTI0LTIzLjk5MjE4OC0yNC00LjQyMTg3NCAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzgxMjYtOCA4LTggMjIuMDU0Njg4IDAgMzkuOTkyMTg4IDE3Ljk0MTQwNiAzOS45OTIxODggNDAgMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im03OS45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0My45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgMTA0LjE0NDUzMWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtMjQuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQuMDE1NjI1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDgwLjEyODkwNmgtMzJjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTk2IDk2LjEyODkwNmgtMTYuMDE1NjI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDE1NjI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDMuOTY4NzUgOTYuMTI4OTA2aC0xNS45Njg3NWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDE1Ljk2ODc1YzQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjAuMDA3ODEyIDEyOC4xMjg5MDZoLTE2LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDMxMjVjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE3NS45ODQzNzUgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTIyLjA1ODU5NCAxNy45Mzc1LTQwIDM5Ljk5MjE4Ny00MCA0LjQyMTg3NiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzgxMjQgOC04IDgtMTMuMjIyNjU2IDAtMjMuOTkyMTg3IDEwLjc2NTYyNS0yMy45OTIxODcgMjQgMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTEzLjIzNDM3NS0xMC43Njk1MzEtMjQtMjMuOTkyMTg4LTI0LTQuNDIxODc0IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNi04IDgtOCAyMi4wNTQ2ODggMCAzOS45OTIxODggMTcuOTQxNDA2IDM5Ljk5MjE4OCA0MCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4My45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjAwIDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiA4MC4xMjg5MDZoLTMyYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMzJjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiAxMDQuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di0yNC4wMTU2MjVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNC4wMTU2MjVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDAgOTYuMTI4OTA2aC0xNi4wMTU2MjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMTU2MjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSA5Ni4xMjg5MDZoLTE1Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTUuOTY4NzVjNC40MjE4NzUgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNC4wMDc4MTIgMTI4LjEyODkwNmgtMTYuMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMzEyNWM0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTggOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2LjE2Nzk2OSAyODAuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtMTMuMjQyMTg3IDEwLjc3NzM0My0yNC4wMTU2MjUgMjQuMDE1NjI1LTI0LjAxNTYyNSA0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDgtNC40MjE4NzUgMC04LjAxNTYyNSAzLjU4OTg0NC04LjAxNTYyNSA4LjAxNTYyNSAwIDQuNDIxODc1LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjgwLjE0NDUzMWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04LTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCAxMy4yMzQzNzUgMCAyNCAxMC43NjU2MjUgMjQgMjQgMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzYuMTkxNDA2IDI5Ni4xNjAxNTZoLTgwLjAyMzQzN2MtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDgwLjAzMTI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU4MjAzMSA4LTguMDA3ODEzIDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjgzMjAzMSAyNjQuMTI4OTA2aC00OS4yOTY4NzVjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOGg0OS4yOTY4NzVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3Mi4xNjc5NjkgMjY0LjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtNDcuOTg0Mzc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2NDcuOTg0Mzc1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjE5OTIxOSAyNjQuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04di00OGMwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDh2NDhjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYuMTY3OTY5IDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTE2LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjk2LjE2MDE1NmMtNC40MjE4NzUgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOHYxNi4wMTU2MjVjMCA0LjQyNTc4Mi0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAuMTk5MjE5IDIxNi4xNDQ1MzFoLTQ4LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNDguMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyOC4xOTE0MDYgMjQwLjE0NDUzMWgtNjQuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNjQuMDIzNDM3YzQuNDI1NzgyIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjAuMTY3OTY5IDI4MC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yNDIxODcgMTAuNzc3MzQzLTI0LjAxNTYyNSAyNC4wMTU2MjUtMjQuMDE1NjI1IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOC00LjQyMTg3NSAwLTguMDE1NjI1IDMuNTg5ODQ0LTguMDE1NjI1IDguMDE1NjI1IDAgNC40MjE4NzUtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyODAuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04IDAtNC40MTc5NjktMy41ODIwMzEtOC04LTgtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDEzLjIzNDM3NSAwIDI0IDEwLjc2NTYyNSAyNCAyNCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0MC4xOTE0MDYgMjk2LjE2MDE1NmgtODAuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoODAuMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOC4wMDc4MTMgOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuODMyMDMxIDI2NC4xMjg5MDZoLTQ5LjI5Njg3NWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04aDQ5LjI5Njg3NWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjE2Nzk2OSAyNjQuMTI4OTA2Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Ny45ODQzNzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHY0Ny45ODQzNzVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuMTk5MjE5IDI2NC4xNDQ1MzFjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTh2LTQ4YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOHY0OGMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC4xNjc5NjkgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MTYuMDE1NjI1YzAgNC40MjU3ODItMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyOTYuMTYwMTU2Yy00LjQyMTg3NSAwLTgtMy41NzQyMTgtOC04di0xNi4wMTU2MjVjMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCA0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQyNC4xOTkyMTkgMjE2LjE0NDUzMWgtNDguMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg0OC4wMzEyNWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyLjE5MTQwNiAyNDAuMTQ0NTMxaC02NC4wMjM0MzdjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg2NC4wMjM0MzdjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",_Ne="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",fNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4yNzMgNTEyLjI3MyIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNTA3Ljg5MSAyMzguMzk5Yy02LjcyMy0zNS44ODEtMjEuODUzLTY2LjkwNS00My43NTUtODkuNzE4LTkuODQ1LTEwLjI1My0yMS40NTYtMTkuNzUtMzQuNTE0LTI4LjIyNy0xNC45NC05LjY5OS0zMi4xOTItMTguNDM4LTU0LjI5My0yNy41MDMtOS42ODQtMy45NzItMTkuMzc1LTcuNjM3LTI4LjQwNi0xMS4wMDUtMTQuNjQyLTUuNDYtMzAuMDY0LTEwLjk1OC00NS44NDMtMTYuMzM3LTUuNDI3LTEuODUxLTEwLjkyMS0zLjYwNi0xNi4yMzQtNS4zMDMtOC41MDUtMi43MTctMTcuMy01LjUyNy0yNS43NzEtOC43MjEtNS4yMjQtMS45Ny03LjQyNi0zLjQ2NC04LjMyMS00LjI1OC4wNDYtLjA1Ni4wOTYtLjExNS4xNTEtLjE3NyA0LjA0OC00LjYxNSAyNy42MDMtMjMuMTA1IDQxLjUwMS0zMy42NzcgMi41NjItMS45NDkgMy41OTUtNS4zMTUgMi41NjYtOC4zNjVzLTMuODg5LTUuMTA0LTcuMTA3LTUuMTA0bC0xNTQuMDUyLS4wMDRjLTEuMzIxIDAtMi42MTkuMzQ5LTMuNzYyIDEuMDEyLTE3LjI4MiAxMC4wMjEtMzEuNjIzIDI1Ljc5LTM5LjM0NiA0My4yNjItOC45NDYgMjAuMjQtOS4wMTYgNDEuNDI1LS4yMDIgNjEuMjYzIDEyLjA3IDI3LjE2NyAzNy41NjcgNDIuMjM3IDYwLjA2MyA1NS41MzMgNS44NyAzLjQ2OSAxMS40MTQgNi43NDYgMTYuNjU1IDEwLjE2NyAzLjA5NSAyLjAyIDYuMjczIDQuMDAzIDkuMzQ3IDUuOTIyIDExLjU0NSA3LjIwOCAyMi40NSAxNC4wMTYgMzEuMTY3IDIzLjYwNCA4Ljk4MSA5Ljg3NyAxMS42OTMgMjIuNTAxIDcuODQyIDM2LjUwNy04Ljk0OCAzMi41NDQtMzUuNTQ0IDYxLjc4MS01OS4wMDkgODcuNTc2LTQuMzQyIDQuNzczLTguNDQyIDkuMjgxLTEyLjQwOSAxMy43NzYtMTEuMTA3IDEyLjU4Ny0yNy4zOTMgMzAuODktNDQuNjM0IDUwLjI2Ny01Ni44NjkgNjMuOTE0LTk0LjQxNSAxMDYuMjI5LTk4IDExMS44NDYtMS40NzQgMi4zMDktMS41NzEgNS4yMzgtLjI1NCA3LjY0IDEuMzE2IDIuNDAyIDMuODM4IDMuODk1IDYuNTc3IDMuODk1bDQ0Ni4zMTYuMDAzaC4wMDFjMy4yNTEgMCA2LjEzMi0yLjA5NCA3LjEzNS01LjE4NyAxMS42NTktMzUuOTYgMjIuMjEyLTcyLjIzMiAzNS4yODMtMTIxLjI4MyAxNS41OTEtNTguNTE1IDE5LjE4NS0xMDUuMzU0IDExLjMwOC0xNDcuNDA0em0tMjUuODAzIDE0My41NDNjLTEyLjM3IDQ2LjQyLTIyLjQ2NCA4MS4zMDUtMzMuMzg1IDExNS4zMzFsLTI2Ljk0LS4wMDJjMS4yODgtMy45NDggMi41NzMtNy45MDMgMy44NjEtMTEuODQyIDExLjU4LTM1LjQxIDIyLjg3Ny03MC45MjUgMzIuNTA0LTEwNi44ODggMS41MzUtNS43NCAzLjEyMi0xMS42NzQgNC42Ny0xNy42NDUgMS4wNC00LjAwOS0xLjM2OC04LjEwMy01LjM3OC05LjE0Mi00LjAwOS0xLjAzOC04LjEwMiAxLjM2OS05LjE0MiA1LjM3OC0xLjUzMyA1LjkxNC0zLjExMyAxMS44Mi00LjY0MSAxNy41MzEtOS40MzkgMzUuMjc1LTIwLjc5NyA3MS4wMjUtMzIuMjcgMTA2LjEwNC0xLjc5NyA1LjQ5My0zLjU5NSAxMC45OTItNS4zODkgMTYuNTA0aC0xNTcuOTc4Yy0uNDMyLTEuODU4LTEuNTY3LTMuNTUzLTMuMzA5LTQuNjQ5LTMuNTA0LTIuMjA2LTguMTM2LTEuMTUyLTEwLjM0MiAyLjM1My0uNDk1Ljc4Ni0uOTczIDEuNTQyLTEuNDQ5IDIuMjk2aC0xNTYuMjM0YzI0LjQ3My0zMC41NTEgOTEuODk3LTExMi4wNzMgMTI0LjIzOC0xNDguNzI0IDE3LjI0LTE5LjUzNyAzMS4zNjgtMzguNzI2IDQxLjk5NC01Ny4wMzMgMTcuNTk4LTMwLjMxOSAyNC41NjctNTYuNzY1IDIwLjcxNi03OC42MDEtOC4yNzMtNDYuOTA5LTQ1LjEyNy02NS43NjQtNzcuNjQzLTgyLjM5OC0zLjQzOS0xLjc1OS02Ljk5NS0zLjU3OS0xMC40MDctNS4zNzVsLS42MDktLjMyMWMtMy42NjMtMS45MzMtOC4yLS41My0xMC4xMzMgMy4xMzNzLS41MyA4LjIgMy4xMzMgMTAuMTMzbC42MTYuMzI1YzMuNDk2IDEuODQgNy4wOTEgMy42OCAxMC41NjggNS40NTggMzIuMjU3IDE2LjUwMiA2Mi43MjYgMzIuMDkgNjkuNzAzIDcxLjY1IDMuMjIgMTguMjU2LTMuMTQ1IDQxLjI5MS0xOC45MTcgNjguNDY2LTkuOTg5IDE3LjIxLTIzLjkxNCAzNi4xMDQtNDAuMjY4IDU0LjYzOC0zNS4yODYgMzkuOTg4LTExNi4wOTggMTM3LjgzOC0xMzIuMDU2IDE1OC42NDhoLTMzLjg1YzE3Ljg4Mi0yMC43NTMgNTYuNzQ0LTY0LjQyOCA4Ni45ODEtOTguNDExIDE3LjI1Mi0xOS4zODkgMzMuNTQ3LTM3LjcwMiA0NC42NzUtNTAuMzEzIDMuODkyLTQuNDEgNy45NTYtOC44NzggMTIuMjU4LTEzLjYwNyAyNC41OTctMjcuMDQgNTIuNDc2LTU3LjY4OCA2Mi4zNzUtOTMuNjkzIDUuMjA3LTE4LjkzOSAxLjIyNy0zNi45LTExLjIwNy01MC41NzUtMTYuNDIzLTE4LjA2Mi0zOS44NjMtMzAuMjM3LTYwLjYzNS00Mi41MTQtMjEuNTY1LTEyLjc0Ni00My44NjQtMjUuOTI2LTUzLjk4Ny00OC43MS0xNS4wMjMtMzMuODE1IDQuMzY2LTY3LjcxOCAzMS42NjctODQuNDQ3aDEzLjYzOWMtMjAuNTU3IDE1LjA3NC0zMi41NjggMzAuMzA1LTM2LjQ5NCA0Ni4xOTUtMy4xODMgMTIuODgyLS44MTMgMjUuNzU2IDcuMDQ1IDM4LjI2NSA0LjMyNCA2Ljg4MyA5LjkwNCAxMy4xMTIgMTcuMDU4IDE5LjA0MiAzLjE4OCAyLjY0MyA3LjkxNiAyLjIwMSAxMC41NjEtLjk4OCAyLjY0My0zLjE4OSAyLjIwMS03LjkxNy0uOTg4LTEwLjU2MS01LjkwOS00Ljg5OC0xMC40NjUtOS45NTktMTMuOTI5LTE1LjQ3Mi01LjY4OC05LjA1Ni03LjM4NC0xNy43ODYtNS4xODUtMjYuNjg4IDMuOTc5LTE2LjEwMyAyMC41NjgtMzIuODUxIDQ5LjMxNC00OS43OTNoNTAuNzE1Yy0xMy4zMDYgMTAuNDc5LTI4LjEwNSAyNC43NzUtMjQuMDk1IDQyLjM1MyAzLjk3OSAxNy40NDEgMjQuMTc3IDI3LjE3OSAzOS4xNzggMzMuNDcyIDE5LjU1OCA4LjIwNSAzOS44MzUgMTQuNzIgNTkuNDQ1IDIxLjAyMSAzMi4wODggMTAuMzEgNjUuMjY5IDIwLjk3MSA5NS4wMDMgMzkuMTM3IDMzLjkzNCAyMC43MzEgNTUuNTE4IDUxLjE1OCA2Mi40MiA4Ny45ODkgNC40NzggMjMuODk2IDMuNDI2IDUwLjYzNC0zLjMxMSA4NC4xNTJsLS4xMDcuNTM2Yy0uODE0IDQuMDYyIDEuODE4IDguMDE0IDUuODggOC44MjguNDk4LjEuOTkzLjE0NyAxLjQ4MS4xNDcgMy41MDEgMCA2LjYzMi0yLjQ2NCA3LjM0Ni02LjAyOGwuMTA2LS41MzJjNy4xMjgtMzUuNDYyIDguMTkxLTY0LjAxOCAzLjM0OS04OS44NjctNy43MDctNDEuMTIzLTMxLjY4Ni03NS4wMi02OS4zNDQtOTguMDI2LTMxLjI2Mi0xOS4wOTktNjUuMzA5LTMwLjAzOS05OC4yMzQtNDAuNjE4LTE5LjMwNy02LjIwMy0zOS4yNzEtMTIuNjE4LTU4LjIzLTIwLjU3Mi01Ljc4Ny0yLjQyOS0xMC43MTItNC45MTItMTUuMDU3LTcuNTktNS40NjQtMy4zNjgtMTMuNzIxLTguNDU3LTE1LjMwMi0xNS4zODgtMi41NzktMTEuMzA5IDE0LjMzLTIzLjk5OCAyNS41Mi0zMi4zOTUgMy4yMTYtMi40MTQgNi4xMDYtNC41ODUgOC40NzMtNi42MTcgMCAwIDEzLjc4OSAwIDEzLjc4Ny4wMDItOS44OTIgNy43ODYtMzQuMTU2IDE5LjczMy0zMC4xNzQgMzUuNjUzIDEuOTk4IDcuOTg2IDEwLjY4OCAxMi4xOTEgMTguMDM1IDE0Ljk2MiAxMy45ODEgNS4yNzIgMjguMzI0IDkuMzY3IDQyLjQ1NiAxNC4xODYgMTUuNjQ0IDUuMzM1IDMwLjkzMyAxMC43ODMgNDUuNDQyIDE2LjE5NSA4LjkxMyAzLjMyNSAxOC40NyA2LjkzOCAyNy45NTcgMTAuODI5IDIxLjIxNCA4LjcwMSAzNy42NzkgMTcuMDI4IDUxLjgxNiAyNi4yMDYgMTIuMDk0IDcuODUyIDIyLjgxMyAxNi42MTEgMzEuODYxIDI2LjAzNSAxOS44NzUgMjAuNzAxIDMzLjY0OCA0OS4wODggMzkuODMxIDgyLjA5MSA3LjQ1MSAzOS43NzEgMy45MzcgODQuNTA1LTExLjA1OCAxNDAuNzgxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQ0LjM2NSAxOTkuNDA3YzEuNDYxIDIuMDczIDMuNzggMy4xOCA2LjEzOCAzLjE4IDEuNDkyIDAgMy0uNDQ0IDQuMzEzLTEuMzcgMy4zODYtMi4zODYgNC4xOTYtNy4wNjUgMS44MTEtMTAuNDUxLTQuMTA5LTUuODMxLTguODExLTExLjI5My0xMy45NzMtMTYuMjMzLTIuOTkzLTIuODY1LTcuNzQxLTIuNzYtMTAuNjA0LjIzMi0yLjg2NCAyLjk5My0yLjc2MSA3Ljc0LjIzMiAxMC42MDQgNC40NjUgNC4yNzQgOC41MzEgOC45OTcgMTIuMDgzIDE0LjAzOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1NS4wODMgMTIyLjUxOC0uNDczLS4yNDZjLTUuNzc2LTIuOTkzLTExLjU0NS01Ljk4My0xNy4zMzQtOC45NDUtMy42ODQtMS44ODMtOC4yMDYtLjQyNi0xMC4wOTMgMy4yNjItMS44ODYgMy42ODgtLjQyNiA4LjIwNiAzLjI2MiAxMC4wOTMgNS43NjUgMi45NDkgMTEuNTExIDUuOTI3IDE3LjI2MyA4LjkwOGwuNDczLjI0NWMxLjEwNC41NzIgMi4yODMuODQzIDMuNDQ1Ljg0MyAyLjcxMiAwIDUuMzMxLTEuNDc2IDYuNjY1LTQuMDUgMS45MDYtMy42NzguNDctOC4yMDQtMy4yMDgtMTAuMTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuNjgzIDU3LjU4NGMxLjc0NC01LjUxIDQuNzE5LTEwLjE5NiA4LjE2My0xMi44NTYgMy4yNzgtMi41MzIgMy44ODItNy4yNDIgMS4zNTEtMTAuNTItMi41MzQtMy4yNzktNy4yNDQtMy44ODItMTAuNTIxLTEuMzUxLTUuODg5IDQuNTQ5LTEwLjYxIDExLjcyNC0xMy4yOTMgMjAuMjAxLTEuMjUgMy45NDkuOTM4IDguMTY0IDQuODg3IDkuNDE0Ljc1My4yMzggMS41MTUuMzUyIDIuMjY1LjM1MiAzLjE4Mi0uMDAxIDYuMTM2LTIuMDQzIDcuMTQ4LTUuMjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDEuMTM2IDk1LjkwM2MtNi43NTEtMy4zMTQtMTEuNDI0LTYuMjY4LTE1LjE1Mi05LjU3Ni0zLjA5OC0yLjc1LTcuODM4LTIuNDY2LTEwLjU4OC42MzEtMi43NSAzLjA5OC0yLjQ2NyA3LjgzOC42MzEgMTAuNTg4IDQuNzc5IDQuMjQyIDEwLjQ4NCA3Ljg4OCAxOC40OTkgMTEuODIyIDEuMDYzLjUyMiAyLjE5Ljc2OSAzLjMuNzY5IDIuNzcgMCA1LjQzNS0xLjU0MiA2LjczOC00LjE5NiAxLjgyNS0zLjcxOC4yOS04LjIxMi0zLjQyOC0xMC4wMzh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNzUuODU1IDQ0MS4yNzZjLTMuNTUzLTIuMTI2LTguMTU5LS45NzItMTAuMjg3IDIuNTgzLTMuNDk0IDUuODM1LTYuOTQ5IDExLjU3Ni0xMC4zMDYgMTcuMTIyLTIuMTQ1IDMuNTQzLTEuMDExIDguMTU1IDIuNTMzIDEwLjI5OSAxLjIxNS43MzUgMi41NTQgMS4wODUgMy44NzcgMS4wODUgMi41MzcgMCA1LjAxNC0xLjI4OCA2LjQyMy0zLjYxOCAzLjM2OC01LjU2NSA2LjgzNy0xMS4zMjcgMTAuMzQzLTE3LjE4MyAyLjEyNy0zLjU1NC45NzEtOC4xNi0yLjU4My0xMC4yODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjQuODY0IDIyNC4xNTJjLTQuMDY3Ljc4Ni02LjcyNyA0LjcyLTUuOTQgOC43ODcuOTEgNC43MTMgMS4zNzIgOS40NjggMS4zNzIgMTQuMTMyIDAgLjM1OC0uMDAzLjcxNi0uMDA5IDEuMDktLjAxNS45NzYtLjA0NCAxLjk0Ny0uMDg3IDIuOTE1LS4xODcgNC4xMzggMy4wMTggNy42NDMgNy4xNTUgNy44MjkuMTE1LjAwNS4yMjkuMDA4LjM0My4wMDggMy45ODYgMCA3LjMwNi0zLjE0IDcuNDg2LTcuMTYzLjA1MS0xLjExNy4wODQtMi4yMzkuMTAxLTMuMzUuMDA4LS40NDMuMDExLS44ODcuMDExLTEuMzMgMC01LjYxNy0uNTU0LTExLjMzLTEuNjQ1LTE2Ljk3OC0uNzg3LTQuMDY3LTQuNzI4LTYuNzI1LTguNzg3LTUuOTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMDYuMjU0IDM4OS40ODFjLTMuNTgyLTIuMDczLTguMTcyLS44NTMtMTAuMjQ5IDIuNzMxLTMuMjMyIDUuNTgyLTYuNjA2IDExLjM3LTEwLjA2MiAxNy4yNjEtMi4wOTYgMy41NzMtLjg5NyA4LjE2OCAyLjY3NiAxMC4yNjQgMS4xOTIuNjk5IDIuNDk4IDEuMDMxIDMuNzg3IDEuMDMxIDIuNTc0IDAgNS4wOC0xLjMyNiA2LjQ3Ny0zLjcwNyAzLjQ2OS01LjkxNSA2Ljg1Ni0xMS43MjggMTAuMTAzLTE3LjMzMiAyLjA3Ni0zLjU4My44NTItOC4xNzEtMi43MzItMTAuMjQ4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzYxLjkyOSAyODMuMzE0Yy0zLjg4My0xLjQ0Ni04LjIwMS41My05LjY0NiA0LjQxMy0yLjA5MSA1LjYxOS00LjU5MiAxMS40MDQtNy42NDYgMTcuNjg2LTEuODExIDMuNzI1LS4yNTkgOC4yMTMgMy40NjYgMTAuMDI0IDEuMDU3LjUxNCAyLjE3NC43NTYgMy4yNzMuNzU2IDIuNzgxIDAgNS40NTQtMS41NTMgNi43NTEtNC4yMjMgMy4yNjYtNi43MTggNS45NTItMTIuOTM3IDguMjE0LTE5LjAxMSAxLjQ0NS0zLjg4Mi0uNTMtOC4yLTQuNDEyLTkuNjQ1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzM1LjkyIDMzNy4yNzVjLTMuNTg1LTIuMDc1LTguMTczLS44NTItMTAuMjQ5IDIuNzMzLTMuMTA5IDUuMzcyLTYuNjM0IDExLjQ2LTkuOTc1IDE3LjUxNy0yIDMuNjI3LS42ODIgOC4xODkgMi45NDUgMTAuMTkgMS4xNDguNjMzIDIuMzkxLjkzNCAzLjYxNS45MzQgMi42NDQgMCA1LjIwNy0xLjQwMSA2LjU3NC0zLjg3OSAzLjI2Ni01LjkyIDYuNzQ5LTExLjkzOCA5LjgyMi0xNy4yNDcgMi4wNzctMy41ODUuODUyLTguMTcyLTIuNzMyLTEwLjI0OHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMwOC4wMDEgMTUxLjQwMmMtMy4yMTgtMS44MzgtNi40NzQtMy43NjMtOS42MjEtNS42MjQtMi41MzEtMS40OTYtNS4wNTktMi45OS03LjYtNC40NjEtMy41ODYtMi4wNzUtOC4xNzQtLjg1Mi0xMC4yNDggMi43MzMtMi4wNzYgMy41ODQtLjg1MyA4LjE3MyAyLjczMiAxMC4yNDkgMi41MDEgMS40NDggNC45OSAyLjkxOSA3LjQ4MiA0LjM5MyAzLjE5NCAxLjg4OCA2LjQ5OCAzLjg0MSA5LjgxMyA1LjczNSAxLjE3NC42NyAyLjQ1Mi45ODkgMy43MTQuOTg5IDIuNjA0IDAgNS4xMzUtMS4zNTggNi41MTktMy43ODEgMi4wNTYtMy41OTcuODA2LTguMTc4LTIuNzkxLTEwLjIzM3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",SNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxyZWN0IHg9IjE4OC42MzIiIHk9IjI1NiIgd2lkdGg9IjM1LjkzIiBoZWlnaHQ9IjE3Ljk2NSIvPg0KICAgICAgICA8cGF0aCBkPSJNNDQxLjkxNyw0NzEuNTc5bDE2LjAzOS04OC4yMTljMC40ODItMi42MjMtMC4yMjgtNS4zMTYtMS45MzktNy4zNmMtMS43MDItMi4wNDQtNC4yMjgtMy4yMjgtNi44OTUtMy4yMjhoLTg5LjgyNQ0KCQkJYy0yLjY2NywwLTUuMTkzLDEuMTg0LTYuODk1LDMuMjI4Yy0xLjcxMSwyLjA0NC0yLjQyMSw0LjczNy0xLjkzOSw3LjM2bDE2LjAzOSw4OC4yMTlIMjYwLjQ5MVYzMS40MzkNCgkJCWMwLTQuOTY1LTQuMDE4LTguOTgyLTguOTgyLTguOTgySDUzLjg5NWMtNC45NjUsMC04Ljk4Miw0LjAxOC04Ljk4Miw4Ljk4MnY0NDAuMTRIMHYxNy45NjVoNTMuODk1aDE5Ny42MTRoMTI1Ljc1NGg1My44OTVINTEyDQoJCQl2LTE3Ljk2NUg0NDEuOTE3eiBNMjQyLjUyNiw0NzEuNTc5SDYyLjg3N1Y0MC40MjFoMTc5LjY0OVY0NzEuNTc5eiBNNDIzLjY1OCw0NzEuNTc5aC0zOC44OTVsLTE0LjcwMi04MC44NDJoNjguMjk4DQoJCQlMNDIzLjY1OCw0NzEuNTc5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDU4LjEwNSw3Ni4zNTFjLTI3LjQ1NiwwLTQ0LjQ4OSwxMi40OTYtNTMuODk1LDI1LjE5NWMtOS40MDgtMTIuNjk5LTI2LjQzOS0yNS4xOTUtNTMuODk1LTI1LjE5NQ0KCQkJYy00Ljk2NSwwLTguOTgyLDQuMDE4LTguOTgyLDguOTgyYzAsNC45NjUsNC4wMTgsOC45ODIsOC45ODIsOC45ODJjMzMuNzU0LDAsNDMuMjcyLDIzLjMwNyw0NC45MTIsMjguMjQ2djIzMi4yNDYNCgkJCWMwLDQuOTY1LDQuMDE4LDguOTgyLDguOTgyLDguOTgyczguOTgyLTQuMDE4LDguOTgyLTguOTgyVjEyMi41NzJjMS41NDQtNC42OCwxMC45ODctMjguMjU3LDQ0LjkxMi0yOC4yNTcNCgkJCWM0Ljk2NSwwLDguOTgyLTQuMDE4LDguOTgyLTguOTgyQzQ2Ny4wODgsODAuMzY4LDQ2My4wNyw3Ni4zNTEsNDU4LjEwNSw3Ni4zNTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNjUuODMzLDExOS4yNjNjLTE1LjU1My0xNS41NTMtMzYuODQyLTIyLjM3Ny01NS42NjctMTcuNzk4Yy0zLjI1NCwwLjc5OC01Ljc5OCwzLjM0Mi02LjU5Niw2LjU5Ng0KCQkJYy00LjU3OSwxOC43NzIsMi4yMzcsNDAuMDk3LDE3Ljc5OCw1NS42NjdjMTIuMzYsMTIuMzYsMjguMzYsMTkuMjAyLDQzLjgxNiwxOS4yMDJjNC4wMDksMCw3Ljk4Mi0wLjQ2NSwxMS44NTEtMS40MDQNCgkJCWMzLjI1NS0wLjc5OCw1Ljc5OC0zLjM0Miw2LjU5Ni02LjU5NkMzODguMjExLDE1Ni4xNTgsMzgxLjM5NSwxMzQuODMzLDM2NS44MzMsMTE5LjI2M3ogTTM2Ny4wMDksMTY0LjkwMw0KCQkJYy0xMS4xNTgsMC40MzktMjMuNTk2LTQuNTM1LTMyLjkzOS0xMy44NzdjLTkuMzQyLTkuMzUxLTE0LjQzOS0yMS43MzctMTMuODc3LTMyLjkzOWMxMS4xMjMtMC41NzksMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDE0MS4zMTYsMzY3LjU3LDE1My43MDIsMzY3LjAwOSwxNjQuOTAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjgzMywyMDAuMTA1Yy0xNS41NTMtMTUuNTUzLTM2Ljg0Mi0yMi4zNjktNTUuNjY3LTE3Ljc5OGMtMy4yNTQsMC43OTgtNS43OTgsMy4zNDItNi41OTYsNi41OTYNCgkJCWMtNC41NzksMTguNzcyLDIuMjM3LDQwLjA5NywxNy43OTgsNTUuNjY3YzEyLjM2LDEyLjM2LDI4LjM2LDE5LjIwMiw0My44MTYsMTkuMjAyYzQuMDA5LDAsNy45ODItMC40NjUsMTEuODUxLTEuNDA0DQoJCQljMy4yNTUtMC43OTgsNS43OTgtMy4zNDIsNi41OTYtNi41OTZDMzg4LjIxMSwyMzcsMzgxLjM5NSwyMTUuNjc2LDM2NS44MzMsMjAwLjEwNXogTTM2Ny4wMDksMjQ1Ljc0Ng0KCQkJYy0xMS4xNTgsMC40OTEtMjMuNTk2LTQuNTQ0LTMyLjkzOS0xMy44NzdjLTkuMzQyLTkuMzUxLTE0LjQzOS0yMS43MzctMTMuODc3LTMyLjkzOWMxMS4xMjMtMC41MzUsMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDIyMi4xNTgsMzY3LjU3LDIzNC41NDQsMzY3LjAwOSwyNDUuNzQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjgzMywyODAuOTQ3Yy0xNS41NTMtMTUuNTYxLTM2Ljg0Mi0yMi4zNjktNTUuNjY3LTE3Ljc5OGMtMy4yNTQsMC43OTgtNS43OTgsMy4zNDItNi41OTYsNi41OTYNCgkJCWMtNC41NzksMTguNzcyLDIuMjM3LDQwLjA5NywxNy43OTgsNTUuNjY3YzEyLjM2LDEyLjM2LDI4LjM2LDE5LjIwMiw0My44MTYsMTkuMjAyYzQuMDA5LDAsNy45ODItMC40NjUsMTEuODUxLTEuNDA0DQoJCQljMy4yNTUtMC43OTgsNS43OTgtMy4zNDIsNi41OTYtNi41OTZDMzg4LjIxMSwzMTcuODQyLDM4MS4zOTUsMjk2LjUxOCwzNjUuODMzLDI4MC45NDd6IE0zNjcuMDA5LDMyNi41ODgNCgkJCWMtMTEuMTU4LDAuNDQ3LTIzLjU5Ni00LjUzNS0zMi45MzktMTMuODc3Yy05LjM0Mi05LjM1MS0xNC40MzktMjEuNzM3LTEzLjg3Ny0zMi45MzljMTEuMTIzLTAuNTcsMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDMwMywzNjcuNTcsMzE1LjM4NiwzNjcuMDA5LDMyNi41ODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDkuMzg2LDEwOC4wNjFjLTAuNzk4LTMuMjU0LTMuMzQyLTUuNzk4LTYuNTk2LTYuNTk2Yy0xOC43ODktNC41Ny00MC4xMDUsMi4yMzctNTUuNjY3LDE3Ljc5OA0KCQkJYy0xNS41NjEsMTUuNTctMjIuMzc3LDM2Ljg5NS0xNy43OTgsNTUuNjY3YzAuNzk4LDMuMjU1LDMuMzQyLDUuNzk4LDYuNTk2LDYuNTk2YzMuODY4LDAuOTM5LDcuODMzLDEuNDA0LDExLjg0MiwxLjQwNA0KCQkJYzE1LjQ2NSwwLDMxLjQ2NS02Ljg0Miw0My44MjUtMTkuMjAyQzUwNy4xNDksMTQ4LjE1OCw1MTMuOTY1LDEyNi44MzMsNTA5LjM4NiwxMDguMDYxeiBNNDc4Ljg4NiwxNTEuMDI2DQoJCQljLTkuMzUxLDkuMzQyLTIxLjg3NywxNC4zMjUtMzIuOTM5LDEzLjg3N2MtMC41NjEtMTEuMjAyLDQuNTM1LTIzLjU4OCwxMy44NzctMzIuOTM5YzkuMzUxLTkuMzQyLDIxLjc5OC0xNC40NDcsMzIuOTM5LTEzLjg3Nw0KCQkJQzQ5My4zMjUsMTI5LjI4OSw0ODguMjI4LDE0MS42NzUsNDc4Ljg4NiwxNTEuMDI2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTA5LjM4NiwxODguOTAzYy0wLjc5OC0zLjI1NC0zLjM0Mi01Ljc5OC02LjU5Ni02LjU5NmMtMTguNzg5LTQuNTc5LTQwLjEwNSwyLjIzNy01NS42NjcsMTcuNzk4DQoJCQljLTE1LjU2MSwxNS41Ny0yMi4zNzcsMzYuODk1LTE3Ljc5OCw1NS42NjdjMC43OTgsMy4yNTUsMy4zNDIsNS43OTgsNi41OTYsNi41OTZjMy44NjksMC45MzksNy44MzMsMS40MDQsMTEuODQyLDEuNDA0DQoJCQljMTUuNDY1LDAsMzEuNDY1LTYuODQyLDQzLjgyNS0xOS4yMDJDNTA3LjE0OSwyMjksNTEzLjk2NSwyMDcuNjc2LDUwOS4zODYsMTg4LjkwM3ogTTQ3OC44ODYsMjMxLjg2OA0KCQkJYy05LjM1MSw5LjMzMy0yMS44NzcsMTQuMzY4LTMyLjkzOSwxMy44NzdjLTAuNTYxLTExLjIwMiw0LjUzNS0yMy41ODgsMTMuODc3LTMyLjkzOWM5LjM1MS05LjM0MiwyMS43OTgtMTQuNDAzLDMyLjkzOS0xMy44NzcNCgkJCUM0OTMuMzI1LDIxMC4xMzIsNDg4LjIyOCwyMjIuNTE3LDQ3OC44ODYsMjMxLjg2OHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwOS4zODYsMjY5Ljc0NmMtMC43OTgtMy4yNTQtMy4zNDItNS43OTgtNi41OTYtNi41OTZjLTE4Ljc4OS00LjU3OS00MC4xMDUsMi4yMzctNTUuNjY3LDE3Ljc5OA0KCQkJYy0xNS41NjEsMTUuNTctMjIuMzc3LDM2Ljg5NS0xNy43OTgsNTUuNjY3YzAuNzk4LDMuMjU1LDMuMzQyLDUuNzk4LDYuNTk2LDYuNTk2YzMuODY5LDAuOTM5LDcuODMzLDEuNDA0LDExLjg0MiwxLjQwNA0KCQkJYzE1LjQ2NSwwLDMxLjQ2NS02Ljg0Miw0My44MjUtMTkuMjAyQzUwNy4xNDksMzA5Ljg0Miw1MTMuOTY1LDI4OC41MTgsNTA5LjM4NiwyNjkuNzQ2eiBNNDc4Ljg4NiwzMTIuNzENCgkJCWMtOS4zNTEsOS4zNDItMjEuODc3LDE0LjMzMy0zMi45MzksMTMuODc3Yy0wLjU2MS0xMS4yMDIsNC41MzUtMjMuNTg4LDEzLjg3Ny0zMi45MzljOS4zNTEtOS4zNDIsMjEuNzk4LTE0LjQ0NywzMi45MzktMTMuODc3DQoJCQlDNDkzLjMyNSwyOTAuOTc0LDQ4OC4yMjgsMzAzLjM2LDQ3OC44ODYsMzEyLjcxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",xNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTEzOS45MzMgMjMwLjU2NmgyMzIuMTM1YzIyLjQwNSAwIDQwLjYzNC0xOC4yMjggNDAuNjM0LTQwLjYzM3YtMTQ5LjNjLS4wMDEtMjIuNDA1LTE4LjIyOS00MC42MzMtNDAuNjM1LTQwLjYzM2gtMjMyLjEzNGMtMjIuNDA1IDAtNDAuNjM0IDE4LjIyOC00MC42MzQgNDAuNjMzdjE0OS4yOTljMCAyMi40MDYgMTguMjI4IDQwLjYzNCA0MC42MzQgNDAuNjM0em0tMjUuNjM0LTE4OS45MzNjMC0xNC4xMzQgMTEuNDk5LTI1LjYzMyAyNS42MzQtMjUuNjMzaDIzMi4xMzVjMTQuMTM1IDAgMjUuNjM0IDExLjQ5OSAyNS42MzQgMjUuNjMzdjE0OS4yOTljMCAxNC4xMzQtMTEuNDk5IDI1LjYzMy0yNS42MzQgMjUuNjMzaC0yMzIuMTM1Yy0xNC4xMzUgMC0yNS42MzQtMTEuNDk5LTI1LjYzNC0yNS42MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzkuOTMzIDUwLjIwNGM0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41di00LjE0MmMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41cy03LjUgMy4zNTgtNy41IDcuNXY0LjE0MmMwIDQuMTQyIDMuMzU3IDcuNSA3LjUgNy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ1LjExIDE2NC44MTNjMTAuNDIzIDIuMDgxIDE4Ljg1IDEwLjE4IDIwLjk3IDIwLjE1NyAxLjUzNiA3LjIyMiA4LjAyMiAxMi40NjMgMTUuNDIyIDEyLjQ2M2gxNDguOTQ3YzcuNDggMCAxMy45OC01LjMxIDE1LjQ1NS0xMi42MjQgMi4xMTUtMTAuNDgyIDEwLjU3Ni0xOC45MzYgMjEuMDUyLTIxLjAzOCA3LjMwOC0xLjQ2NiAxMi42MTEtNy45NjUgMTIuNjExLTE1LjQ1NHYtNjYuMDY3YzAtNy40ODQtNS4zMTEtMTMuOTg1LTEyLjYyNy0xNS40NTctMTAuNDcyLTIuMTA3LTE4LjkyNS0xMC41NjMtMjEuMDM2LTIxLjA0MS0xLjQ3NS03LjMxMi03Ljk2Ny0xMi42MTgtMTUuNDM5LTEyLjYxOGgtMTQ4Ljk3MWMtNy4zOTUgMC0xMy44NzggNS4yNDItMTUuNDE0IDEyLjQ2NS0yLjExOCA5Ljk2OS0xMC41NCAxOC4wNjctMjAuOTU1IDIwLjE1My03LjM1NSAxLjQ3Mi0xMi42OTIgNy45NzktMTIuNjkyIDE1LjQ3djY4LjEyNWMwIDcuNDk0IDUuMzMxIDEzLjk5OSAxMi42NzcgMTUuNDY2em0yLjMyMy04My41OTJjMC0uMzc0LjI2Mi0uNjg3LjYzOC0uNzYyIDE2LjIwMy0zLjI0NCAyOS4zMzctMTYgMzIuNjgyLTMxLjc0MS4wNzMtLjM0NC4zNzgtLjU4NS43NDItLjU4NWgxNDguOTcyYy4zNTcgMCAuNjY2LjI0NS43MzMuNTgzIDMuMjkgMTYuMzI1IDE2LjQ2NCAyOS40OTkgMzIuNzgyIDMyLjc4Mi4zNC4wNjguNTg2LjM4NS41ODYuNzUydjY2LjA2N2MwIC4zNjEtLjI0MS42ODMtLjU2MS43NDctMTYuMzI2IDMuMjc0LTI5LjUxIDE2LjQ0Ny0zMi44MDYgMzIuNzc4LS4wNjkuMzQyLS4zODYuNTkxLS43NTIuNTkxaC0xNDguOTQ3Yy0uMzYyIDAtLjY3OC0uMjQ2LS43NS0uNTgyLTMuMzQ3LTE1Ljc1Mi0xNi40OS0yOC41MTEtMzIuNzA1LTMxLjc0OC0uMzU3LS4wNzEtLjYxNC0uMzg5LS42MTQtLjc1N3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3Mi4wNjcgNTAuMjA0YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTQuMTQyYzAtNC4xNDItMy4zNTctNy41LTcuNS03LjVzLTcuNSAzLjM1OC03LjUgNy41djQuMTQyYzAgNC4xNDIgMy4zNTggNy41IDcuNSA3LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzkuOTMzIDE5OS41MDNjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXYtNC4xNDJjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NC4xNDJjMCA0LjE0MyAzLjM1NyA3LjUgNy41IDcuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3Mi4wNjcgMTgwLjM2MmMtNC4xNDMgMC03LjUgMy4zNTgtNy41IDcuNXY0LjE0MmMwIDQuMTQyIDMuMzU3IDcuNSA3LjUgNy41czcuNS0zLjM1OCA3LjUtNy41di00LjE0MmMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg5LjczMyAxNjQuMWg0OS43YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTI1LjYzM2gxNy4zNWMyLjYgMCA1LjAxNC0xLjM0NiA2LjM4LTMuNTU3czEuNDkxLTQuOTcyLjMyOC03LjI5N2wtMjQuODUtNDkuN2MtMS4yNzEtMi41NDEtMy44NjctNC4xNDYtNi43MDgtNC4xNDZzLTUuNDM4IDEuNjA1LTYuNzA4IDQuMTQ2bC0xNC40OTMgMjguOTg3aC0yOC40OThjLTQuMTQzIDAtNy41IDMuMzU4LTcuNSA3LjV2NDkuN2MtLjAwMSA0LjE0MiAzLjM1NyA3LjUgNy40OTkgNy41em00OS43MDEtNzMuNTYzIDEyLjcxNSAyNS40M2gtMjUuNDN6bS00Mi4yMDEgMjMuODYzaDEzLjQ5OGwtMi44NTYgNS43MTNjLTEuMTYzIDIuMzI1LTEuMDM4IDUuMDg2LjMyOCA3LjI5N3MzLjc4IDMuNTU3IDYuMzggMy41NTdoMTcuMzUxdjE4LjEzM2gtMzQuN3YtMzQuN3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxMy45ODMgMTQ3LjUzM2MxNy44MzggMCAzMi4zNS0xNC41MTIgMzIuMzUtMzIuMzUgMC0xNy44MzctMTQuNTEyLTMyLjM1LTMyLjM1LTMyLjM1cy0zMi4zNTEgMTQuNTEyLTMyLjM1MSAzMi4zNWMuMDAxIDE3LjgzOCAxNC41MTQgMzIuMzUgMzIuMzUxIDMyLjM1em0wLTQ5LjY5OWM5LjU2NiAwIDE3LjM1IDcuNzgzIDE3LjM1IDE3LjM1cy03Ljc4MyAxNy4zNS0xNy4zNSAxNy4zNS0xNy4zNTEtNy43ODMtMTcuMzUxLTE3LjM1Yy4wMDEtOS41NjcgNy43ODQtMTcuMzUgMTcuMzUxLTE3LjM1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjMwLjg2NyAyNDguNWMtOC41NDcgMC0xNS41IDYuOTUzLTE1LjUgMTUuNXYxNy4xMzNjMCA4LjU0NyA2Ljk1MyAxNS41IDE1LjUgMTUuNWg1MC4yNjZjOC41NDcgMCAxNS41LTYuOTUzIDE1LjUtMTUuNXYtMTcuMTMzYzAtOC41NDctNi45NTMtMTUuNS0xNS41LTE1LjV6bTUwLjc2NiAxNS41djE3LjEzM2MwIC4yNzYtLjIyNS41LS41LjVoLTUwLjI2NmMtLjI3NSAwLS41LS4yMjQtLjUtLjV2LTE3LjEzM2MwLS4yNzYuMjI1LS41LjUtLjVoNTAuMjY2Yy4yNzUgMCAuNS4yMjQuNS41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDk2LjUgNDYzLjg2N2gtMTcuNjcyYy4wMTMtLjI2MS4wNC0uNTE5LjA0LS43ODN2LTguMjg0YzAtMTAuNjUyLTYuOTU5LTE5LjcwNC0xNi41NjctMjIuODY0di0xMzYuNTA1YzkuNjA4LTMuMTYgMTYuNTY3LTEyLjIxMiAxNi41NjctMjIuODY0di04LjI4NGMwLTguNzAzLTcuMDgxLTE1Ljc4My0xNS43ODQtMTUuNzgzaC0yLjU2MmMxLjE0My0yLjggMS43NzktNS44NiAxLjc3OS05LjA2NyAwLTEzLjI3LTEwLjc5Ni0yNC4wNjYtMjQuMDY2LTI0LjA2NnMtMjQuMDY2IDEwLjc5Ni0yNC4wNjYgMjQuMDY2YzAgMy4yMDcuNjM1IDYuMjY2IDEuNzc5IDkuMDY3aC0yLjU2M2MtOC43MDMgMC0xNS43ODMgNy4wODEtMTUuNzgzIDE1Ljc4M3Y4LjI4NGMwIDEwLjUxOCA2Ljc4NiAxOS40NzYgMTYuMjA3IDIyLjc0MS0xOC42MTYgMTguNDM4LTQwLjAzNyAzMy4zNTEtNjMuNzM0IDQ0LjMzNy0zLjc1OCAxLjc0Mi01LjM5MyA2LjIwMS0zLjY1IDkuOTU4IDEuMjcgMi43MzcgMy45NzggNC4zNDggNi44MSA0LjM0OCAxLjA1NiAwIDIuMTI5LS4yMjQgMy4xNDktLjY5OCAyMS4wNTgtOS43NjIgNDAuNDI3LTIyLjQzMiA1Ny43ODYtMzcuNzU0djIzLjcxMmMtNDUuNDEgMzUuNDk1LTEwMC4wMTQgNTQuMjQ3LTE1OC4xNjcgNTQuMjQ3LTU4LjE0OCAwLTExMi43NTYtMTguNzUzLTE1OC4xNjctNTQuMjQ5di0yMy42OWM0My43NjQgMzguNjkgOTkuMjggNTkuODA1IDE1OC4xNjcgNTkuODA1IDIzLjU5MiAwIDQ2LjkxMy0zLjQ0MSA2OS4zMTQtMTAuMjI4IDMuOTY0LTEuMjAxIDYuMjA0LTUuMzg4IDUuMDAzLTkuMzUzLTEuMjAxLTMuOTY0LTUuMzg5LTYuMjA3LTkuMzUzLTUuMDAzLTIwLjk4OSA2LjM1OS00Mi44NDcgOS41ODMtNjQuOTY0IDkuNTgzLTU5LjU3MiAwLTExNS40NjItMjMuMDctMTU3LjgwMi02NS4wMTggOS40MTktMy4yNjcgMTYuMjAyLTEyLjIyNCAxNi4yMDItMjIuNzR2LTguMjg0YzAtOC43MDMtNy4wOC0xNS43ODMtMTUuNzgzLTE1Ljc4M2gtMi41NjNjMS4xNDMtMi44IDEuNzc5LTUuODYgMS43NzktOS4wNjcgMC0xMy4yNy0xMC43OTYtMjQuMDY2LTI0LjA2Ni0yNC4wNjZzLTI0LjA3IDEwLjc5OC0yNC4wNyAyNC4wNjhjMCAzLjIwNy42MzYgNi4yNjYgMS43NzkgOS4wNjdoLTIuNTYyYy04LjcwMyAwLTE1Ljc4NCA3LjA4MS0xNS43ODQgMTUuNzgzdjguMjg0YzAgMTAuNjUyIDYuOTU5IDE5LjcwNCAxNi41NjcgMjIuODY0djEzNi41MDZjLTkuNjA4IDMuMTYtMTYuNTY3IDEyLjIxMi0xNi41NjcgMjIuODY0djguMjg0YzAgLjI2NC4wMjcuNTIyLjA0Ljc4M2gtMTcuNjczYy04LjU0NyAwLTE1LjUgNi45NTMtMTUuNSAxNS41djE3LjEzMmMwIDguNTQ3IDYuOTUzIDE1LjUgMTUuNSAxNS41aDU5LjgzM2M0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtNTkuODMzYy0uMjc1IDAtLjUtLjIyNC0uNS0uNXYtMTcuMTMzYzAtLjI3Ni4yMjUtLjUuNS0uNWg0ODFjLjI3NSAwIC41LjIyNC41LjV2MTcuMTMzYzAgLjI3Ni0uMjI1LjUtLjUuNWgtMzkxLjE2N2MtNC4xNDMgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgzOTEuMTY3YzguNTQ3IDAgMTUuNS02Ljk1MyAxNS41LTE1LjV2LTE3LjEzM2MwLTguNTQ3LTYuOTUzLTE1LjUtMTUuNS0xNS41em0tNjcuMzMzLTE2NC41NzdjLjE2MS0uODc4LjE1OC0xLjc3OC4wMDUtMi42NTZoMTguMTI4djE4LjEzM2gtMTguMTMzem0wIDQzLjkwNGMuMDEyLS4yMzkuMDEyLS40NzkgMC0uNzE5di0xMi43MDloMTguMTMzdjEwMC45NjdoLTE4LjEzM3ptMC0xMDMuNzYxYzAtNC45OTkgNC4wNjctOS4wNjYgOS4wNjYtOS4wNjZzOS4wNjYgNC4wNjcgOS4wNjYgOS4wNjYtNC4wNjcgOS4wNjctOS4wNjYgOS4wNjctOS4wNjYtNC4wNjctOS4wNjYtOS4wNjd6bS0xNi41NjcgMjQuODVjMC0uNDMyLjM1Mi0uNzgzLjc4My0uNzgzaDQ5LjdjLjQzMyAwIC43ODQuMzUyLjc4NC43ODN2OC4yODRjMCA0Ljk5OS00LjA2NyA5LjA2Ni05LjA2NyA5LjA2NmgtMzMuMTMzYy01IDAtOS4wNjctNC4wNjctOS4wNjctOS4wNjZ6bS0xNTYuNiAxNDQuMTc2YzU3LjY0OCAwIDExMi4wMDctMTcuNDIyIDE1OC4xNjctNTAuNTE0djczLjk5MWMtOS42MDggMy4xNi0xNi41NjcgMTIuMjEyLTE2LjU2NyAyMi44NjR2OC4yODRjMCAuMjY0LjAyNy41MjIuMDQuNzgzaC0yODMuMjc5Yy4wMTMtLjI2MS4wNC0uNTE5LjA0LS43ODN2LTguMjg0YzAtMTAuNjUyLTYuOTU5LTE5LjcwNC0xNi41NjctMjIuODY0di03My45OTJjNDYuMTYxIDMzLjA5MiAxMDAuNTIzIDUwLjUxNSAxNTguMTY2IDUwLjUxNXptLTE3My4xNjctMTEwLjc4OWMtLjAxMi4yNDctLjAxMi40OTUgMCAuNzQydjE2LjM1NWgtMTguMTMzdi0xOC4xMzNoMTguMTMzem0tMTguMTMzIDMyLjA5N2gxOC4xMzN2MTAwLjk2N2gtMTguMTMzem0wLTkwLjMzNGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY2LTkuMDY2czkuMDY2IDQuMDY3IDkuMDY2IDkuMDY2LTQuMDY3IDkuMDY3LTkuMDY2IDkuMDY3LTkuMDY2LTQuMDY3LTkuMDY2LTkuMDY3em0tMTYuNTY3IDI0Ljg1YzAtLjQzMi4zNTItLjc4My43ODQtLjc4M2g0OS43Yy40MzIgMCAuNzgzLjM1Mi43ODMuNzgzdjguMjg0YzAgNC45OTktNC4wNjcgOS4wNjYtOS4wNjcgOS4wNjZoLTMzLjEzM2MtNSAwLTkuMDY3LTQuMDY3LTkuMDY3LTkuMDY2em0uNzg0IDE5OS41ODRjLS40MzMgMC0uNzg0LS4zNTItLjc4NC0uNzgzdi04LjI4NGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY3LTkuMDY2aDMzLjEzM2M1IDAgOS4wNjcgNC4wNjcgOS4wNjcgOS4wNjZ2OC4yODRjMCAuNDMyLS4zNTIuNzgzLS43ODMuNzgzem0zNjQuNDY2IDBjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzgzdi04LjI4NGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY3LTkuMDY2aDMzLjEzM2M1IDAgOS4wNjcgNC4wNjcgOS4wNjcgOS4wNjZ2OC4yODRjMCAuNDMyLS4zNTIuNzgzLS43ODQuNzgzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",kNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzQuNjA4LDgwLjQzOWwtMjMyLTgwYy0xLjY5LTAuNTgzLTMuNTI2LTAuNTgzLTUuMjE2LDBsLTIzMiw4MEMyLjE2Niw4MS41NTEsMC4wMDEsODQuNTg3LDAsODcuOTk5djM4NA0KCQkJYzAsNC40MTgsMy41ODIsOCw4LDhoNDBjNC40MTgsMCw4LTMuNTgyLDgtOHYtMjQ4aDM2OHYyNDhjMCw0LjQxOCwzLjU4Miw4LDgsOGg0MGM0LjQxOCwwLDgtMy41ODIsOC04di0zODQNCgkJCUM0NzkuOTk5LDg0LjU4Nyw0NzcuODM0LDgxLjU1MSw0NzQuNjA4LDgwLjQzOXogTTQwLDIxNS45OTl2MjQ4SDE2di0zMDRoMjRWMjE1Ljk5OXogTTQyNCwyMDcuOTk5SDU2di0xNmgzNjhWMjA3Ljk5OXoNCgkJCSBNNDI0LDE3NS45OTlINTZ2LTE2aDM2OFYxNzUuOTk5eiBNNDY0LDQ2My45OTloLTI0di0zMDRoMjRWNDYzLjk5OXogTTQ2NCwxNDMuOTk5SDE2VjkzLjcwM2wyMjQtNzcuMjRsMjI0LDc3LjI0VjE0My45OTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zOTUuNTc2LDM0NC43OTlsLTI5LjYtMTQuOGwtMjYuNC01Mi44Yy00LjA2MS04LjEyNS0xMi4zODEtMTMuMjQyLTIxLjQ2NC0xMy4ySDE2MS44ODgNCgkJCWMtOS4wOTgtMC4wMy0xNy40MjEsNS4xMTQtMjEuNDY0LDEzLjI2NGwtMjYuNCw1Mi44bC0yOS42LDE0LjhjLTIuNzA1LDEuMzUyLTQuNDE2LDQuMTEyLTQuNDI0LDcuMTM2djExMmMwLDguODM3LDcuMTYzLDE2LDE2LDE2DQoJCQloMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMjRoMTkydjI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMTEyDQoJCQlDNDAwLjAxNywzNDguOTUyLDM5OC4zMDEsMzQ2LjE2LDM5NS41NzYsMzQ0Ljc5OXogTTE1NC43MzYsMjg0LjQyM2MxLjM0NS0yLjcxOCw0LjExOS00LjQzNCw3LjE1Mi00LjQyNGgxNTYuMjI0DQoJCQljMy4wMzMtMC4wMSw1LjgwNywxLjcwNiw3LjE1Miw0LjQyNGwyMS43OTIsNDMuNTc2SDEzMi45NDRMMTU0LjczNiwyODQuNDIzeiBNMTI4LDQ2My45OTlIOTZ2LTI0aDMyVjQ2My45OTl6IE0zODQsNDYzLjk5OWgtMzINCgkJCXYtMjRoMzJWNDYzLjk5OXogTTM4NCw0MjMuOTk5SDEzNkg5NnYtNjcuMDU2bDI1Ljg4OC0xMi45NDRoMjM2LjIyNEwzODQsMzU2Ljk0M1Y0MjMuOTk5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTUyLDM1OS45OTloLTI0Yy04LjgzNywwLTE2LDcuMTYzLTE2LDE2djE2YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMjRjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMTYNCgkJCUMxNjgsMzY3LjE2MiwxNjAuODM3LDM1OS45OTksMTUyLDM1OS45OTl6IE0xNTIsMzkxLjk5OWgtMjR2LTE2aDI0VjM5MS45OTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTIsMzU5Ljk5OWgtMjRjLTguODM3LDAtMTYsNy4xNjMtMTYsMTZ2MTZjMCw4LjgzNyw3LjE2MywxNiwxNiwxNmgyNGM4LjgzNywwLDE2LTcuMTYzLDE2LTE2di0xNg0KCQkJQzM2OCwzNjcuMTYyLDM2MC44MzcsMzU5Ljk5OSwzNTIsMzU5Ljk5OXogTTM1MiwzOTEuOTk5aC0yNHYtMTZoMjRWMzkxLjk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI4MCwzNTkuOTk5aC04MGMtOC44MzcsMC0xNiw3LjE2My0xNiwxNnYxNmMwLDguODM3LDcuMTYzLDE2LDE2LDE2aDgwYzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTE2DQoJCQlDMjk2LDM2Ny4xNjIsMjg4LjgzNywzNTkuOTk5LDI4MCwzNTkuOTk5eiBNMjgwLDM5MS45OTloLTgwdi0xNmg4MFYzOTEuOTk5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",YNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMS45NzggNTExLjk3OCIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTMwLjAwOSAyMjMuMjQ4YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTE2LjY5NmMwLTEyLjU1NyAxMC4yMTYtMjIuNzczIDIyLjc3Mi0yMi43NzNoMTUuMzkyYzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xNS4zOTJjLTIwLjgyOCAwLTM3Ljc3MiAxNi45NDUtMzcuNzcyIDM3Ljc3M3YxNi42OTZjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzMC4wMDkgMjgxLjE4N2M0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41di0yNC43NDZjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2MjQuNzQ2YzAgNC4xNDIgMy4zNTggNy41IDcuNSA3LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTcuODU2IDIwOC44NnYzNi4zMzljMCA0LjE0MiAzLjM1NyA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtMzYuMzM5YzAtMy4yOTQgMi43OTYtNi4wNzggNi4xMDUtNi4wNzhoMTMuMjM3YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xMy4yMzdjLTExLjYzNyAwLTIxLjEwNSA5LjQ1NS0yMS4xMDUgMjEuMDc4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjI4LjE4MSAyMTEuNDNjMi45NDIgMS45NjQgNi4zODIgMi45NjMgOS44ODkgMi45NjMgMi40NDIgMCA0LjkxOS0uNDg1IDcuMjgyLTEuNDY3bDI0Ljc2LTEwLjI1NSA2My41OTUgNC45MDYgNC42NjEgMTYuMTIxYzEuNjE5IDUuNjAxIDUuNTk2IDEwLjA3NCAxMS4xOTcgMTIuNTk1IDMuMTQ4IDEuNDE3IDYuNTkxIDIuMTI0IDEwLjA0MSAyLjEyNCAzLjY1MyAwIDcuMzE2LS43OTMgMTAuNjQ0LTIuMzc0bDExNy4yOTEtNTUuNzI5YzYuNDY5LTMuMDc0IDExLjQyNS05LjAxIDEzLjI1OC0xNS44OCAxLjU4Mi01LjkzMi42MjktMTEuODM1LTIuNjg0LTE2LjYxOWwtMjMuNjM5LTM0LjE2NGMxNy43NjMtMjAuNDYyIDIxLjk0MS00OS41OTUgMTAuMTI3LTc0LjQ2MS0xNi4yNzItMzQuMjAxLTU3LjMzMi00OC43OTctOTEuNTEtMzIuNTUtMjYuMTgxIDEyLjQzNS00MS41OTIgNDAuMDA4LTM4LjkxIDY4LjQ1OGwtMzMuNzY2IDE2LjA0MmMtLjAwMSAwLS4wMDEgMC0uMDAxIDAtMTAuNzI1IDUuMDk2LTE1LjM5MSAxNy4yODEtMTEuNjExIDMwLjMxNWw4Ljc0NSAzMC4yNDJoLTQ3LjE1N2wtMjUuMDU1LTEwLjM3N2MtNS43NjMtMi4zNzEtMTIuMTc5LTEuNzkzLTE3LjE2NyAxLjU0Ni00LjcxMyAzLjE1Ny03LjQxNiA4LjIyMS03LjQxNiAxMy44OTN2NDAuNzYxYy0uMDAyIDUuNjkxIDIuNzA2IDEwLjc2IDcuNDI2IDEzLjkxem0yNTcuNi01NS4wNzdjLjc5IDEuMTQuOTY2IDIuNTU4LjUyNCA0LjIxNC0uNjkyIDIuNTkzLTIuNzM0IDUuMDI2LTUuMjAyIDYuMTk5bC0xMTcuMjkxIDU1LjcyOGMtMi40NyAxLjE3My01LjY0NiAxLjIyMS04LjA5MS4xMi0xLjU2NS0uNzA0LTIuNTU2LTEuNzQxLTIuOTQzLTMuMDgzbC0yMi4zNzYtNzcuMzg1IDEwOS41NDItNTIuMDR6bS04Ni4yNTItMTM2LjE2MmMuMDAxIDAgLjAwMi0uMDAxLjAwMy0uMDAxIDI2LjcxNi0xMi43MDMgNTguODA2LTEuMjg4IDcxLjUyNCAyNS40NDIgOC42NjQgMTguMjM3IDYuMzMgMzkuNDE3LTUuNDYzIDU1LjE3M2wtLjAyNC0uMDI2LTI4LjAwMi00MC40N2MtNy43MjktMTEuMTYtMjAuMTM1LTE1LjI0MS0zMC44NjgtMTAuMTU3bC0zNy44MDMgMTcuOTU4LS4wMTIuMDAzYy4yMTctMjAuMTkgMTEuODk5LTM5LjAxOSAzMC42NDUtNDcuOTIyem0tNzIuNjc2IDg0LjQ5OCA4Ni4yNzMtNDAuOTg0YzQuNzUtMi4yNTEgOS40OTIgMS4zNjYgMTIuMTA3IDUuMTQzbDYuMDYyIDguNzYtMTA1LjExNSA0OS45MzctMi45NjctMTAuMjYyYy0xLjI3OC00LjQwNC0xLjA5LTEwLjM0NiAzLjY0LTEyLjU5NHptLTUwLjQ1MyA2Mi4wMDloNDUuNDc4bDcuMzY1IDI1LjQ5LTUyLjg0My00LjA3N3ptLTQwLjY0Ny05LjkzOGMwLS4zOTUuMDc5LS45NzIuNzY1LTEuNDMxLjIwNC0uMTM3Ljc3MS0uNDU1IDEuNjEzLS40NTUuNDI3IDAgLjkyNC4wODIgMS40OC4zMTFsMjEuNzg4IDkuMDI0djI1LjgzNGwtMjEuNzk3IDkuMDI3Yy0xLjY2NS42OTQtMi43OTIuMDg1LTMuMDk2LS4xMTgtLjY2OC0uNDQ2LS43NTQtLjk5OS0uNzU0LTEuNDMxdi00MC43NjF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTcuOTYgNDY0LjQ3OWMtMi45MjkgMi45MjktMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjEgMy4zNzEgMi4xOSA1LjI4MyAyLjE5IDEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOC03LjY3OC0yLjkyOC0xMC42MDcuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTkwLjkyIDQ2OC4yNzdjLTIuOTI5IDIuOTI5LTIuOTI5IDcuNjc4IDAgMTAuNjA2bC4wMjguMDI4YzEuNDYyIDEuNDYxIDMuMzcxIDIuMTkgNS4yODMgMi4xOSAxLjkyIDAgMy44NDItLjczNiA1LjMxLTIuMjA0IDIuOTI5LTIuOTI5IDIuOTE1LTcuNjkyLS4wMTQtMTAuNjIxLTIuOTMtMi45MjctNy42NzgtMi45MjctMTAuNjA3LjAwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMwNy45NTcgNDY0LjQ3OWMtMi45MjkgMi45MjktMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjEgMy4zNzEgMi4xOSA1LjI4MyAyLjE5IDEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOC03LjY3OC0yLjkyOC0xMC42MDcuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjIyMiA0ODEuMTAyYzEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOS03LjY3OC0yLjkyOS0xMC42MDcgMHMtMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjIgMy4zNzEgMi4xOTEgNS4yODMgMi4xOTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NzAuNzg0IDQwOS4zODVjMjIuNzEzLTIuMjc4IDQxLjE5MS0yMi43OTIgNDEuMTkxLTQ1LjcyOXYtMjguNzQzYzAtMy43MDktMS41NDktNy4yMzQtNC4yNDgtOS42NzEtMi42OTItMi40MzEtNi4zNTItMy42MDktMTAuMDEtMy4yMzNsLTI4LjgxIDIuODkyYy05LjkyMyAxLjAxLTE5LjAzNyA1LjUwMi0yNi4xNTEgMTIuMTUybC4wNjMtNS4xNTRjMC0yMi45MDMtMTguMzM3LTQzLjI2Ni00MS4wNTQtNDUuNTc4bC0yOC43ODMtMi44OWMtMy42ODctLjM3OS03LjMzNC44MDItMTAuMDI1IDMuMjMyLTIuNjk5IDIuNDM4LTQuMjQ4IDUuOTYyLTQuMjQ4IDkuNjcxdjI4Ljc0M2MwIDIyLjkwMyAxOC40NzMgNDMuNDE3IDQxLjE4NSA0NS43MjlsMjcuODYzIDIuODE0djUzLjk5NmgtNTQuNTE5Yy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDExOS4zMDRjMi40NDQgMCA0LjQzNCAxLjk3NiA0LjQzNCA0LjQwNXY0NS41MjNjMCAyLjQwMy0yLjAzIDQuNDM0LTQuNDM0IDQuNDM0aC00NzMuMTM0Yy0yLjM4OCAwLTQuNDA1LTIuMDMtNC40MDUtNC40MzR2LTQ1LjUyM2MwLTIuMzg4IDIuMDE4LTQuNDA1IDQuNDA1LTQuNDA1aDMxOS4xOTJjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTc1LjEyNnYtMTUuMzk3bDI4LjA1Ny0yLjgzM2MyMi43MTMtMi4yNzggNDEuMTktMjIuNzkyIDQxLjE5LTQ1LjcyOXYtMjguNzQzYzAtMy43MDUtMS41NTItNy4yMjktNC4yNTctOS42NjktMi43LTIuNDM1LTYuMzU5LTMuNjEyLTEwLjAwMS0zLjIzNWwtMjguODEgMi44OTJjLTkuOTM0IDEuMDExLTE5LjA1OCA1LjUwNy0yNi4xOCAxMi4xNjMgMCAwIC4xOTktNC40MjkuMTk5LTUuMDEzIDAtMjIuOTA3LTE4LjQ3NC00My40Mi00MS4xOS00NS43MjlsLTI4Ljc3Ni0yLjg5Yy0zLjY2Ni0uMzc1LTcuMzA4Ljc5Ni05Ljk5NyAzLjIyMi0yLjcwNCAyLjQzOS00LjI1NSA1Ljk2Ny00LjI1NSA5LjY4MXYyOC43NDNjMCAyMi45MDMgMTguNDc0IDQzLjQxNyA0MS4xODYgNDUuNzI5bDI3LjgzNCAyLjgxM3Y1My45OTZoLTE2NC4yNTN2LTE1LjM5OGwyOC4wMjYtMi44MzJjMjIuNzEzLTIuMjc0IDQxLjE5MS0yMi43ODkgNDEuMTkxLTQ1LjcyOXYtMjguNzQzYzAtMy43MTMtMS41NTEtNy4yNDItNC4yNTUtOS42ODEtMi42ODktMi40MjYtNi4zMzMtMy42MDQtOS45NzUtMy4yMjRsLTI4LjgxIDIuODkyYy05LjkzNCAxLjAxMS0xOS4wNTggNS41MDctMjYuMTc5IDEyLjE2MiAwIDAgLjE5OC00LjQzLjE5OC01LjAxMiAwLTIyLjkwMy0xOC40NzQtNDMuNDE3LTQxLjE5LTQ1LjcyOWwtMjguNzc2LTIuODljLTMuNjYtLjM3NC03LjMwNi43OTUtOS45OTcgMy4yMjItMi43MDQgMi40MzktNC4yNTUgNS45NjgtNC4yNTUgOS42ODF2MjguNzQzYzAgMjIuOTAzIDE4LjQ3NCA0My40MTcgNDEuMTg2IDQ1LjcyOWwyNy44MzUgMi44MTN2MzEuNzk1IDIyLjIwMWgtNDkuODEyYy0xMC43IDAtMTkuNDA1IDguNzA1LTE5LjQwNSAxOS40MDV2NDUuNTIzYzAgMTAuNzE2IDguNzA1IDE5LjQzNCAxOS40MDUgMTkuNDM0aDQ3My4xMzRjMTAuNzE2IDAgMTkuNDM0LTguNzE4IDE5LjQzNC0xOS40MzR2LTQ1LjUyM2MwLTEwLjctOC43MTgtMTkuNDA1LTE5LjQzNC0xOS40MDVoLTQ5Ljc4NXYtMTUuMzk4em0tMjguMDI4LTM4Ljc1NmMwLTE1LjE3MSAxMi42NzItMjkuMjc5IDI3LjY2LTMwLjgwNWwyNi41NTktMi42NjZ2MjYuNDk4YzAgMTUuMTkyLTEyLjY4IDI5LjI5OS0yNy42OTMgMzAuODA1bC0xNS40MTUgMS41NTggMTkuMDY5LTIxLjA5N2MyLjc3Ny0zLjA3MyAyLjUzNy03LjgxNi0uNTM1LTEwLjU5My0zLjA3Mi0yLjc3NS03LjgxNC0yLjUzOS0xMC41OTQuNTM1bC0xOS4wNTEgMjEuMDc3em0tMTUtMjMuNDU3LTE4Ljg4LTIwLjg4OGMtMi43NzktMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTItLjUzNSAxMC41OTNsMTkuMDY3IDIxLjA5Ni0xNS40MDgtMS41NTZjLTE1LjAxNC0xLjUyOC0yNy42OTgtMTUuNjM1LTI3LjY5OC0zMC44MDV2LTI2LjQ5N2wyNi41NDggMi42NjZjMTUuMDE1IDEuNTI4IDI3LjUgMTUuNjM1IDI3LjUgMzAuODA1em0tMTY0LjI4MiAyMy40NTdjMC0xNS4xNyAxMi42ODUtMjkuMjc3IDI3LjY4OC0zMC44MDVsMjYuNTU5LTIuNjY2djI2LjQ5OGMwIDE1LjE5Mi0xMi42NzkgMjkuMjk5LTI3LjY5MiAzMC44MDVsLTE1LjQxNCAxLjU1NyAxOS4wNjgtMjEuMDk2YzIuNzc3LTMuMDczIDIuNTM3LTcuODE2LS41MzUtMTAuNTkzLTMuMDcyLTIuNzc1LTcuODE0LTIuNTM5LTEwLjU5NC41MzVsLTE5LjA3OSAyMS4xMDh2LTE1LjM0M3ptLTQ0Ljk4LTM0LjI4NiAxOS4wNjkgMjEuMDk3LTE1LjQwOS0xLjU1N2MtMTUuMDE1LTEuNTI4LTI3LjY5OS0xNS42MzUtMjcuNjk5LTMwLjgwNXYtMjYuNDk1bDI2LjUyMSAyLjY2M2MxNS4wMTUgMS41MjYgMjcuNDk5IDE1LjYzMyAyNy40OTkgMzAuODA1djE1LjA5MWwtMTguODUyLTIwLjg1N2MtMi43NzgtMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTItLjUzNSAxMC41OTN6bS0xMzQuMjczIDM0LjI4NmMwLTE1LjE3IDEyLjY4NS0yOS4yNzcgMjcuNjg4LTMwLjgwNWwyNi41My0yLjY2M3YyNi40OTVjMCAxNS4xOTUtMTIuNjc5IDI5LjMwMS0yNy42OTIgMzAuODA1bC0xNS40MDUgMS41NTcgMTkuMDgzLTIxLjA5NGMyLjc3OS0zLjA3MiAyLjU0Mi03LjgxNC0uNTMtMTAuNTkzLTMuMDY4LTIuNzc4LTcuODEzLTIuNTQyLTEwLjU5My41M2wtMTkuMDgxIDIxLjA5MXptLTQ0Ljk4MS0zNC4yODYgMTkuMDY5IDIxLjA5Ny0xNS40MDktMS41NThjLTE1LjAxNS0xLjUyOC0yNy42OTktMTUuNjM1LTI3LjY5OS0zMC44MDV2LTI2LjQ5NWwyNi41MiAyLjY2M2MxNS4wMTUgMS41MjggMjcuNTAxIDE1LjYzNSAyNy41MDEgMzAuODA1djE1LjA5MmwtMTguODUzLTIwLjg1OGMtMi43NzktMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTIxLS41MzUgMTAuNTk0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",QNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTI2LjYyMiAxNTEuNzQxaDEwLjh2MzUuNjgxYzAgMTEuMTI1IDkuMDUxIDIwLjE3NSAyMC4xNzUgMjAuMTc1aDE0LjgxNGM0Ljc5OSAwIDkuMjA4LTEuNjkxIDEyLjY3NS00LjUgMy40NjcgMi44MDkgNy44NzUgNC41IDEyLjY3NSA0LjVoMTQuODE0YzExLjEyNCAwIDIwLjE3NS05LjA1IDIwLjE3NS0yMC4xNzV2LTM5Ljk0aDIwLjEzOXYxODUuMTE1aC0yMy40NTdjLTEwLjkzOCAwLTE5LjgzNyA4Ljg5OC0xOS44MzcgMTkuODM2djM3LjMyNGMwIDkuOTY4IDcuMzk4IDE4LjIxOSAxNi45ODggMTkuNjA4djg3LjU3NmMwIDguMzA0IDYuNzU1IDE1LjA1OSAxNS4wNTkgMTUuMDU5aDMwLjMzNWM4LjMwNCAwIDE1LjA1OS02Ljc1NSAxNS4wNTktMTUuMDU5di01My44NDRoNTEuNDY0YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41Yy05Ljc2NSAwLTg1Ljc4NSAwLTk2LjkxNyAwdi0xOC41MDNoMjI4LjgzNHYxOC41MDNjLTExLjEzNyAwLTg3LjIxNyAwLTk2LjkxNyAwLTQuMTQzIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTcgNy41IDcuNSA3LjVoNTEuNDY1djUzLjg0NGMwIDguMzA0IDYuNzU1IDE1LjA1OSAxNS4wNTkgMTUuMDU5aDMwLjMzNGM4LjMwNCAwIDE1LjA2LTYuNzU1IDE1LjA2LTE1LjA1OSAwLTEwLjE1NCAwLTc3LjAzNiAwLTg3LjU3NiA5LjU5LTEuMzg5IDE2Ljk4OC05LjY0IDE2Ljk4OC0xOS42MDh2LTM3LjMyNGMwLTEwLjkzOC04Ljg5OC0xOS44MzYtMTkuODM3LTE5LjgzNmgtMjMuNDU3di03NS4wNThjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NzUuMDU4aC0yNS4xNjRjMC0yMS43MTMgMC0xNjIuOTEyIDAtMTg1LjExNWgyNS4xNjR2NzUuMDU4YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTc1LjA1OGgyMC4xMzl2MzkuOTRjMCAxMS4xMjUgOS4wNTEgMjAuMTc1IDIwLjE3NSAyMC4xNzVoMTQuODE0YzQuNzk5IDAgOS4yMDgtMS42OTEgMTIuNjc1LTQuNSAzLjQ2NyAyLjgwOSA3Ljg3NSA0LjUgMTIuNjc0IDQuNWgxNC44MTVjMTEuMTI0IDAgMjAuMTc1LTkuMDUgMjAuMTc1LTIwLjE3NXYtMzUuNjgxaDEwLjhjMTEuMTI0IDAgMjAuMTc1LTkuMDUgMjAuMTc1LTIwLjE3NXYtMTQuODE0YzAtMTEuMTI1LTkuMDUxLTIwLjE3NS0yMC4xNzUtMjAuMTc1aC0xMC44di0zNS42ODFjMC0xMS4xMjQtOS4wNTEtMjAuMTc0LTIwLjE3NS0yMC4xNzRoLTE0LjgxNWMtNC43OTkgMC05LjIwNyAxLjY5MS0xMi42NzQgNC41LTMuNDY3LTIuODA5LTcuODc1LTQuNS0xMi42NzUtNC41aC0xNC44MTRjLTExLjEyNCAwLTIwLjE3NSA5LjA1LTIwLjE3NSAyMC4xNzR2MzkuOTQxaC0yMC4xMzl2LTgwLjY2M2MtLjAwMS0xMS4xMjQtOS4wNTEtMjAuMTc0LTIwLjE3NS0yMC4xNzRoLTE0LjgxNGMtMTEuMTI0IDAtMjAuMTc1IDkuMDUtMjAuMTc1IDIwLjE3NHY1MC41MzRoLTk1Ljg5NnYtNTAuNTM0YzAtMTEuMTI0LTkuMDUtMjAuMTc0LTIwLjE3NC0yMC4xNzRoLTE0LjgxNWMtMTEuMTI0IDAtMjAuMTc0IDkuMDUtMjAuMTc0IDIwLjE3NHY4MC42NjNoLTIwLjEzOXYtMzkuOTQxYzAtMTEuMTI0LTkuMDUxLTIwLjE3NC0yMC4xNzUtMjAuMTc0aC0xNC44MTRjLTQuNzk5IDAtOS4yMDggMS42OTEtMTIuNjc1IDQuNS0zLjQ2Ny0yLjgwOS03Ljg3NS00LjUtMTIuNjc1LTQuNWgtMTQuODE0Yy0xMS4xMjQgMC0yMC4xNzUgOS4wNS0yMC4xNzUgMjAuMTc0djM1LjY4MWgtMTAuOGMtMTEuMTI0IDAtMjAuMTc1IDkuMDUtMjAuMTc1IDIwLjE3NXYxNC44MTRjMCAxMS4xMjUgOS4wNTEgMjAuMTc1IDIwLjE3NSAyMC4xNzV6bTE0MS4yNjctNC4yNmgyNS4xNjN2MTg1LjExNWgtMjUuMTYzem00MC4xNjMgNjguNzEyaDk1Ljg5NnY3Ni45MDFoLTk1Ljg5NnptOTUuODk1LTE1aC05NS44OTZ2LTIzLjU4M2g5NS44OTZ6bS0xMzEuOTE5IDI0MS45MDQtLjA1MSA1My45MDMtMzAuMzkzLS4wMzljMC0uMDAxLS4wMDEtLjAwOC0uMDAxLS4wMnYtNTMuODQ0em0xOTguMzI5IDUzLjkwMy0zMC4zOTMtLjA1OXYtNTMuODQ0aDMwLjQ0NXptMTIuMjExLTE0OS40MDNjMi42NjcgMCA0LjgzNyAyLjE2OSA0LjgzNyA0LjgzNnYzNy4zMjRjMCAyLjY2Ny0yLjE3IDQuODM2LTQuODM3IDQuODM2LTEzLjIwMiAwLTI0MS4yNTYgMC0yNTMuMTM3IDAtMi42NjcgMC00LjgzNy0yLjE2OS00LjgzNy00LjgzNnYtMzcuMzI0YzAtMi42NjcgMi4xNy00LjgzNiA0LjgzNy00LjgzNnptLTE3NC41MTYtMTV2LTI0LjUwM2g5NS44OTZ2MjQuNTAzem05NS44OTUtMTY5Ljk4N2gtOTUuODk2di0xNS4xMjhoOTUuODk2em0tMTE1Ljk3Ny0zMC4xMjl2LTE2LjY0NWgxMzYuMDZ2MTYuNjQ1Yy00LjY1MyAwLTEzMC40MTEgMC0xMzYuMDYgMHptMjk3LjQwOC0yMC45MDRjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc1djE0LjgxNGMwIDIuODA1LTIuMzcgNS4xNzUtNS4xNzUgNS4xNzVoLTEwLjh2LTI1LjE2NHptLTQ1Ljc5LTU1Ljg1NWgxNC44MTVjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc0djEyNi41MjZjMCAyLjgwNS0yLjM3IDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTVjLTIuODA1IDAtNS4xNzQtMi4zNy01LjE3NC01LjE3NXYtMTI2LjUyNmMwLTIuODA1IDIuMzY5LTUuMTc0IDUuMTc0LTUuMTc0em0tNDUuMzM4IDUuMTc0YzAtMi44MDUgMi4zNy01LjE3NCA1LjE3NS01LjE3NGgxNC44MTRjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc0djEyNi41MjZjMCAyLjgwNS0yLjM3IDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODU0IDAtNS4xNzUtMi4zMjEtNS4xNzUtNS4xNzUgMC0yLjkwNCAwLTEyMi42MDIgMC0xMjYuNTI2em0tMTUgNzEuNTg1Yy0xMy40NjMgMC0yNS4xODYgMC00MC4yMjEgMHYtMTYuNjQ1aDQwLjIyMXptLTYwLjMwMy0xMTIuMzA3YzAtMi44MDUgMi4zNy01LjE3NCA1LjE3NS01LjE3NGgxNC44MTRjMi44NTQgMCA1LjE3NSAyLjMyMSA1LjE3NSA1LjE3NHY4MC42NjNjLTkuMTA2IDAtMTYuMDU4IDAtMjUuMTY0IDAgMC05LjM3MyAwLTcwLjg4NSAwLTgwLjY2M3ptLTE1IDY1LjUzNHYxNS4xMjhoLTk1Ljg5NnYtMTUuMTI4em0tMTM2LjA1OC02NS41MzRjMC0yLjgwNSAyLjM2OS01LjE3NCA1LjE3NC01LjE3NGgxNC44MTVjMi44MDUgMCA1LjE3NCAyLjM3IDUuMTc0IDUuMTc0djgwLjY2M2MtOS4xMDQgMC0xNi4wMzkgMC0yNS4xNjMgMHptNS4wODEgOTUuNjYzdjE2LjY0NWMtMTUuMjczIDAtMjYuNDYgMC00MC4yMiAwdi0xNi42NDV6bS03NS4yMDktNjAuMTE1aDE0LjgxNGMyLjgwNSAwIDUuMTc1IDIuMzcgNS4xNzUgNS4xNzR2MTI2LjUyNmMwIDIuODU0LTIuMzIxIDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODA1IDAtNS4xNzUtMi4zNy01LjE3NS01LjE3NXYtMTI2LjUyNmMwLTIuODA1IDIuMzctNS4xNzQgNS4xNzUtNS4xNzR6bS00NS4zMzkgNS4xNzRjMC0yLjgwNSAyLjM3LTUuMTc0IDUuMTc1LTUuMTc0aDE0LjgxNGMyLjgwNSAwIDUuMTc1IDIuMzcgNS4xNzUgNS4xNzR2MTI2LjUyNmMwIDIuODU0LTIuMzIxIDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODU0IDAtNS4xNzUtMi4zMjEtNS4xNzUtNS4xNzUgMC01LjY3OSAwLTEyMC44MjcgMC0xMjYuNTI2em0tMzAuOTc1IDU1Ljg1NmMwLTIuODU0IDIuMzIxLTUuMTc1IDUuMTc1LTUuMTc1aDEwLjh2MjUuMTY0aC0xMC44Yy0yLjg1NCAwLTUuMTc1LTIuMzIxLTUuMTc1LTUuMTc1eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",vNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIsMjgwaC0xNlYxNjYuNGMwLTEyLTkuNi0yMi40LTIyLjQtMjIuNGgtNGMtMTIsMC0yMi40LDkuNi0yMi40LDIyLjRWMjgwaC0yNHYtMTZjMC0xMy42LTEwLjQtMjQtMjQtMjRIMTIwDQoJCQljLTEzLjYsMC0yNCwxMC40LTI0LDI0djE2SDcyVjE2Ni40YzAtMTItOS42LTIyLjQtMjIuNC0yMi40aC0zLjJjLTEyLjgsMC0yMi40LDkuNi0yMi40LDIyLjRWMjgwSDhjLTQuOCwwLTgsMy4yLTgsOHMzLjIsOCw4LDhoOA0KCQkJdjE0NGMwLDQuOCwzLjIsOCw4LDhoOHY4YzAsNC44LDMuMiw4LDgsOHM4LTMuMiw4LTh2LThoMzg0djhjMCw0LjgsMy4yLDgsOCw4czgtMy4yLDgtOHYtOGg4YzQuOCwwLDgtMy4yLDgtOFYyOTZoOA0KCQkJYzQuOCwwLDgtMy4yLDgtOFM0NzYuOCwyODAsNDcyLDI4MHogTTQzMC40LDE2MGg0YzMuMiwwLDYuNCwyLjQsNi40LDYuNFYyODBoLTE2VjE2Ni40SDQyNEM0MjQsMTYzLjIsNDI2LjQsMTYwLDQzMC40LDE2MHoNCgkJCSBNMTEyLDI2NGMwLTQuOCwzLjItOCw4LThoMjQwYzQuOCwwLDgsMy4yLDgsOHYxNkgxMTJWMjY0eiBNNDAsMTY2LjRjMC00LDIuNC02LjQsNi40LTYuNGg0YzMuMiwwLDUuNiwyLjQsNS42LDYuNFYyODBINDBWMTY2LjR6DQoJCQkgTTIzMiw0MzJIMzJ2LTY0aDIwMFY0MzJ6IE00NDgsNDMySDI0OHYtNjRoMjAwVjQzMnogTTQ0OCwzNTJIMzJ2LTU2aDQxNlYzNTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMDgsMzg0Yy00LjgsMC04LDMuMi04LDh2MTZjMCw0LjgsMy4yLDgsOCw4czgtMy4yLDgtOHYtMTZDMjE2LDM4Ny4yLDIxMi44LDM4NCwyMDgsMzg0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjcyLDM4NGMtNC44LDAtOCwzLjItOCw4djE2YzAsNC44LDMuMiw4LDgsOHM4LTMuMiw4LTh2LTE2QzI4MCwzODcuMiwyNzYuOCwzODQsMjcyLDM4NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM4NCwxNkg5NmMtNC44LDAtOCwzLjItOCw4djE2MGMwLDQuOCwzLjIsOCw4LDhoMjg4YzQuOCwwLDgtMy4yLDgtOFYyNEMzOTIsMTkuMiwzODguOCwxNiwzODQsMTZ6IE0zNzYsMTc2SDEwNFYzMmgyNzINCgkJCVYxNzZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTIsMTQ0aC04Yy00LjgsMC04LDMuMi04LDhzMy4yLDgsOCw4aDhjNC44LDAsOC0zLjIsOC04UzM1Ni44LDE0NCwzNTIsMTQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTU3LjYsNTAuNGMtMy4yLTMuMi04LTMuMi0xMS4yLDBsLTI0LDI0Yy0zLjIsMy4yLTMuMiw4LDAsMTEuMmMzLjIsMy4yLDgsMy4yLDExLjIsMGwyNC0yNA0KCQkJQzE2MC44LDU4LjQsMTYwLjgsNTMuNiwxNTcuNiw1MC40eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTk3LjYsNTAuNGMtMy4yLTMuMi04LTMuMi0xMS4yLDBsLTU2LDU2Yy0zLjIsMy4yLTMuMiw4LDAsMTEuMmMzLjIsMy4yLDgsMy4yLDExLjIsMGw1Ni01Ng0KCQkJQzIwMC44LDU4LjQsMjAwLjgsNTMuNiwxOTcuNiw1MC40eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",UNe="PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgd2lkdGg9IjQ4MHB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00NzIgOTZoLTE0NGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHYxODRoLTE3NnYtMjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMjR2MTZoMTZ2MTZoLTMydi0zMmgtMTZ2MzJoLTMydi0xNmgxNnYtMTZoLTI0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djI0aC0yNGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHYxNzZjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg0NjRjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMzY4YzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS0xMzYgMTZoMTI4djk2aC0xMjh6bS0xNiAyMjRoLTE0NHYtMzJoMTQ0em0tMzA0LTMyaDE0NHYzMmgtMTQ0em0wIDQ4aDE0NHYxMTJoLTE0NHptMTYwIDBoNjR2MTEyaC02NHptODAgMGg2NHYxMTJoLTY0em04MCAxMTJ2LTI0MGgxMjh2MjQwem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1MiAxNDRoMTZ2MzJoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1MiAyNTZoMTZ2MzJoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDMyMGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04MCAzMjBjMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHMtOC0zLjU4MjAzMS04LTggMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTEyIDMyMGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDQgMzIwYzAgNC40MTc5NjktMy41ODIwMzEgOC04IDhzLTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04IDggMy41ODIwMzEgOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTggMTUyaDE2MGM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0yNGMwLTIuMTIxMDk0LS44NDM3NS00LjE1NjI1LTIuMzQzNzUtNS42NTYyNWwtMzItMzJjLTEuNS0xLjUtMy41MzUxNTYtMi4zNDM3NS01LjY1NjI1LTIuMzQzNzVoLTh2LTcyYzAtNC40MTc5NjktMy41ODIwMzEtOC04LThoLTY0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djcyaC04Yy0yLjEyMTA5NCAwLTQuMTU2MjUuODQzNzUtNS42NTYyNSAyLjM0Mzc1bC0zMiAzMmMtMS41IDEuNS0yLjM0Mzc1IDMuNTM1MTU2LTIuMzQzNzUgNS42NTYyNXYyNGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4em01Ni0xMzZoNDh2NjRoLTQ4em0tNDggMTA3LjMxMjUgMjcuMzEyNS0yNy4zMTI1aDg5LjM3NWwyNy4zMTI1IDI3LjMxMjV2MTIuNjg3NWgtMTQ0em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzNiAzNjhoLTk2Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djY0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoOTZjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOHptLTggNjRoLTgwdi00OGg4MHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzIgMzEyaDMydjE2aC0zMnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDggMzkyaDE2djMyaC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNzIgMzkyaDE2djMyaC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTIgMjAwaDQ4YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LThjLS4wNTQ2ODgtMTQuNTQ2ODc1LTkuOTE0MDYyLTI3LjIyNjU2Mi0yNC0zMC44NjMyODF2LTE1My4xMzY3MTloLTE2djE1My4xMzY3MTljLTE0LjA4NTkzOCAzLjYzNjcxOS0yMy45NDUzMTIgMTYuMzE2NDA2LTI0IDMwLjg2MzI4MXY4YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDh6bTI0LTMyYzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZoLTMyYzAtOC44MzU5MzggNy4xNjQwNjItMTYgMTYtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQ4IDEzNmg0OGM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di04Yy0uMDU0Njg4LTE0LjU0Njg3NS05LjkxNDA2Mi0yNy4yMjY1NjItMjQtMzAuODYzMjgxdi04OS4xMzY3MTloLTE2djg5LjEzNjcxOWMtMTQuMDg1OTM4IDMuNjM2NzE5LTIzLjk0NTMxMiAxNi4zMTY0MDYtMjQgMzAuODYzMjgxdjhjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOHptMjQtMzJjOC44MzU5MzggMCAxNiA3LjE2NDA2MiAxNiAxNmgtMzJjMC04LjgzNTkzOCA3LjE2NDA2Mi0xNiAxNi0xNnptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",bNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUxMC40MTcgMjMzLjIyNS01OC42NDQtMTE3LjI3OWMtMTUuOTM5LTMxLjg3Ny00Ny45NzgtNTEuNjgtODMuNjItNTEuNjgtOC41ODYgMC0xNi45ODQgMS4xODgtMjUuMDMyIDMuNDM3LjEwNS0xLjQ4OS4xNzgtMi45ODguMTc4LTQuNTAzIDAtMzQuODQ5LTI4LjM1MS02My4yLTYzLjItNjMuMnMtNjMuMiAyOC4zNTItNjMuMiA2My4yYzAgMzAuOTkzIDIyLjQzMiA1Ni44MjggNTEuOTA5IDYyLjE2OWwtNjEuMzY2IDYxLjQ3Yy02Ljg3NSA2Ljg4Ni0yMS44NzEgMjcuODItMTAuMzMzIDU0LjQ2LTEuNzA1LS4xOTEtMy40MjEtLjI5OS01LjE0NC0uMjk5LTIzLjA4NyAwLTQyLjMzNiAxNi42OS00Ni4zNTEgMzguNjM1LTcuNzQtNC4xNDQtMTYuNTczLTYuNTAxLTI1Ljk0OS02LjUwMS0zMC40MTkgMC01NS4xNjcgMjQuNzQ4LTU1LjE2NyA1NS4xNjcgMCA5LjA2MyAyLjIxMSAxNy42MTUgNi4xIDI1LjE2N2gtNDAuNTk4di0zMzguNDY4YzAtOC4yODQtNi43MTYtMTUtMTUtMTVzLTE1IDYuNzE2LTE1IDE1djQ4MmMwIDguMjg0IDYuNzE2IDE1IDE1IDE1czE1LTYuNzE2IDE1LTE1di00OS4yNjdoMzA2LjU2M2M4LjI4NCAwIDE1LTYuNzE2IDE1LTE1di02NC4yNjdjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtMzYuNDEyYzMuMjc0LTguMzk1IDMuMjE0LTE1LjI2MyAzLjIxNC0xOC4yIDI4LjQ2OSAwIDQ4LjItMjIuMDk4IDQ4LjItNDcuMTMzIDAtMjUuOTg5LTIxLjE0NC00Ny4xMzMtNDcuMTMzLTQ3LjEzM2gtMTIuMzA0bDU1LjkwNC01Ni4wODYgNTMuNzM2IDEwNi43NzctLjEwMyAyMDUuMzAxYy0uMDAyIDMuOTc5IDEuNTc4IDcuNzk2IDQuMzkxIDEwLjYxMSAyLjgxMyAyLjgxNCA2LjYzIDQuMzk2IDEwLjYwOSA0LjM5Nmg4MC4zMzVjOC4yODQgMCAxNS02LjcxNiAxNS0xNXYtMjU3LjA2NmMwLTIuMzI5LS41NDItNC42MjUtMS41ODMtNi43MDh6bS0yNjMuNTE3LTE3MC4wMjVjMC0xOC4zMDcgMTQuODk0LTMzLjIgMzMuMi0zMy4yczMzLjIgMTQuODk0IDMzLjIgMzMuMi0xNC44OTQgMzMuMi0zMy4yIDMzLjJjLTE4LjMwNyAwLTMzLjItMTQuODkzLTMzLjItMzMuMnptLTEyNy4yMzMgMjM5LjkzM2MxMy44NzcgMCAyNS4xNjcgMTEuMjkgMjUuMTY3IDI1LjE2N3MtMTEuMjkgMjUuMTY3LTI1LjE2NyAyNS4xNjctMjUuMTY3LTExLjI5LTI1LjE2Ny0yNS4xNjcgMTEuMjktMjUuMTY3IDI1LjE2Ny0yNS4xNjd6bTIwMS44OTYgODAuMzM0djM0LjI2N2gtMjkxLjU2M3YtMzQuMjY3em0tMTcuMTMtMTEyLjQ2N2M5LjQ0NyAwIDE3LjEzMyA3LjY4NiAxNy4xMzMgMTcuMTMzIDAgOS41ODMtNy44MTQgMTcuMTMzLTE3LjEzMyAxNy4xMzNoLTE2LjA2N2MtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXYxNi4wNjdjMCA5LjU4My03LjgxNCAxNy4xMzMtMTcuMTMzIDE3LjEzM2gtNjQuMjY3Yy05LjQ0NyAwLTE3LjEzMy03LjY4Ni0xNy4xMzMtMTcuMTMzdi00OC4yYzAtOS40NDcgNy42ODYtMTcuMTMzIDE3LjEzMy0xNy4xMzMgOS4yOTcgMCAxNy4xMzMgNy41MjYgMTcuMTMzIDE3LjEzM3YxNi4wNjdjMCA4LjI4NCA2LjcxNiAxNSAxNSAxNXMxNS02LjcxNiAxNS0xNXYtMTYuMDY3YzAtOS40MjkgNy42MTYtMTcuMTMzIDE3LjEzMy0xNy4xMzN6bTE3Ny41NjcgMjExaC01MC4zMjZsLjA5Ny0xOTMuODU5Yy4wMDEtMi4zNDQtLjU0Ny00LjY1Ni0xLjYwMS02Ljc1bC02NC42ODUtMTI4LjUzM2MtMi4xNjctNC4zMDUtNi4yNjktNy4zMDYtMTEuMDI3LTguMDY4LTQuNzYxLS43NjItOS41OTQuODEtMTIuOTk1IDQuMjIybC04Ni40NTggODYuNzM5Yy03LjI2MyA3LjI5MS0xOS4xMTUgNi44MDctMjYuMzA4LS4zODYtNy4zODEtNy4zODEtNy43MjgtMTkuNjExLS4wMjItMjcuMzI5bDk1LjI3LTk1LjQzMWMxMS43OTktMTEuODI1IDI3LjUtMTguMzM3IDQ0LjIxNy0xOC4zMzcgMjQuMTk5IDAgNDUuOTU1IDEzLjQ0OCA1Ni43NzkgMzUuMDk3bDU3LjA1OSAxMTQuMTA5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",$Ne="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNOTIuNTQ1LDE4NS4wOWM1MS4wMjksMCw5Mi41NDUtNDEuNTE2LDkyLjU0NS05Mi41NDVTMTQzLjU3NCwwLDkyLjU0NSwwUzAsNDEuNTE2LDAsOTIuNTQ1ICAgIFM0MS41MTYsMTg1LjA5LDkyLjU0NSwxODUuMDl6IE05Mi41NDUsMjBjNDAuMDAxLDAsNzIuNTQ1LDMyLjU0NCw3Mi41NDUsNzIuNTQ1cy0zMi41NDQsNzIuNTQ1LTcyLjU0NSw3Mi41NDUgICAgUzIwLDEzMi41NDYsMjAsOTIuNTQ1UzUyLjU0NCwyMCw5Mi41NDUsMjB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDAuNTAxLDExNC41MjZjMS45NTIsMS45NDUsNC41MDYsMi45MTcsNy4wNiwyLjkxN2MyLjU2NCwwLDUuMTMtMC45OCw3LjA4My0yLjk0ICAgIGMzLjg5OC0zLjkxMiwzLjg4OC0xMC4yNDQtMC4wMjMtMTQuMTQzbC0xMi4wMDgtMTEuOTY4VjQ0YzAtNS41MjItNC40NzgtMTAtMTAtMTBzLTEwLDQuNDc4LTEwLDEwdjQ4LjU0NSAgICBjMCwyLjY1OCwxLjA1OSw1LjIwNywyLjk0LDcuMDgzTDEwMC41MDEsMTE0LjUyNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMiwzMzJoLTYxLjU0N2MtOC40Ni0xMi4wMzQtMjEuMTcyLTIwLjU1OC0zNS42NzEtMjMuNzI4bC00My45NjQtOS42MTMgICAgYzE3Ljk5MS0xMi4xMzQsMjkuODQ3LTMyLjcwMiwyOS44NDctNTUuOTg4di0yNC40MTd2LTExLjI5N3YtMi41NDJjMC0zNy4yMTItMzAuMjc0LTY3LjQ4Ni02Ny40ODYtNjcuNDg2ICAgIHMtNjcuNDg2LDMwLjI3NC02Ny40ODYsNjcuNDg2djIuNTQydjExLjI5N3YyNC40MTdjMCwyMy4yNTYsMTEuODI1LDQzLjgwMywyOS43NzgsNTUuOTQzbC00My45MzYsOS42MzkgICAgYy0xLjg3NywwLjQxMi0zLjcyMiwwLjkxNy01LjUzNSwxLjUwMlYyMjdjMC01LjUyMi00LjQ3OC0xMC0xMC0xMGgtNjhjLTUuNTIyLDAtMTAsNC40NzgtMTAsMTBzNC40NzgsMTAsMTAsMTBoNTh2MTQwaC02OHYtNTAgICAgYzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMHMtMzAsMTMuNDU4LTMwLDMwdjUwSDIwVjIzN2g1OGM1LjUyMiwwLDEwLTQuNDc4LDEwLTEwcy00LjQ3OC0xMC0xMC0xMEgxMGMtNS41MjIsMC0xMCw0LjQ3OC0xMCwxMHYxNjAgICAgYzAsNS41MjIsNC40NzgsMTAsMTAsMTBoNzh2MTloLTFjLTE3LjA5NCwwLTMxLDEzLjkwNi0zMSwzMXY1SDEwYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjQwYzAsNS41MjIsNC40NzgsMTAsMTAsMTBoNDkyICAgIGM1LjUyMiwwLDEwLTQuNDc4LDEwLTEwdi00MHYtNDB2LTQwdi00MEM1MTIsMzM2LjQ3OCw1MDcuNTIyLDMzMiw1MDIsMzMyeiBNNDQxLjE3OSw0NTJIMzg0di0yMGgxMDh2MjBINDQxLjE3OXogTTQ5Miw0MTJIMzg0ICAgIHYtMjBoMTA4VjQxMnogTTQ5MiwzNzJIMzg0di0yMGg1MC44NzRjMC4wMywwLDAuMDYsMC4wMDYsMC4wODksMC4wMDZjMC4wMzEsMCwwLjA2My0wLjAwNiwwLjA5NC0wLjAwNkg0OTJWMzcyeiBNMjc1LjY5MiwyMDQuNDE2ICAgIGMwLTI2LjE4NCwyMS4zMDMtNDcuNDg2LDQ3LjQ4Ni00Ny40ODZjMjQuOTMzLDAsNDUuNDM5LDE5LjMxNCw0Ny4zNDIsNDMuNzY3bC0yMy4yNDYtMTMuNjU3ICAgIGMtNC4yMTEtMi40NzUtOS41OTMtMS41NDQtMTIuNzMsMi4xOTljLTEwLjEyNiwxMi4wODUtMjQuOTc3LDE5LjAxNy00MC43NDQsMTkuMDE3aC0xOC4xMDd2LTEuMjk3VjIwNC40MTZ6IE0yNzUuNjkyLDIyOC4yNTUgICAgSDI5My44YzE4LjgyNSwwLDM2LjctNy4xNzksNTAuMjA1LTE5Ljk0bDI2LjY2LDE1LjY2M3YxOC42OTRjMCwyNi4xODQtMjEuMzAzLDQ3LjQ4Ni00Ny40ODYsNDcuNDg2cy00Ny40ODYtMjEuMzAzLTQ3LjQ4Ni00Ny40ODYgICAgVjIyOC4yNTV6IE0zMzguODQ0LDMwOC4zMDNsLTE1LjgxNSw0Mi4yOTRsLTE1Ljg0NC00Mi4zN2M1LjEzLDEuMjUyLDEwLjQ4MywxLjkzMSwxNS45OTMsMS45MzEgICAgQzMyOC41NzIsMzEwLjE1OCwzMzMuODEzLDMwOS41MDQsMzM4Ljg0NCwzMDguMzAzeiBNMjI2LDM5N2M1LjUyMiwwLDEwLTQuNDc4LDEwLTEwdi01NS42MjNjMy4wODUtMS42MjYsNi4zNzQtMi44MzIsOS44Mi0zLjU4OCAgICBsNDMuNzQtOS41OTZsMjQuMTAzLDY0LjQ1N2MxLjQ2MSwzLjkwNyw1LjE5NCw2LjQ5Nyw5LjM2Niw2LjQ5N3M3LjkwNS0yLjU5LDkuMzY2LTYuNDk4bDI0LjEwNC02NC40NjFsNDQuMDExLDkuNjIzICAgIGMzLjg2MywwLjg0NCw3LjUyOSwyLjI3NCwxMC45MDIsNC4xODhIMzc0Yy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjQwdjQwdjMwSDIxNS4xNzl2LTU1SDIyNnogTTE5NS4xNzksMzk3djU1SDE4MHYtNSAgICBjMC0xNy4wOTQtMTMuOTA2LTMxLTMxLTMxaC0xdi0xOUgxOTUuMTc5eiBNMTA4LDMyN2MwLTUuNTE0LDQuNDg2LTEwLDEwLTEwczEwLDQuNDg2LDEwLDEwdjg5aC0yMFYzMjd6IE03Niw0NDcgICAgYzAtNi4wNjUsNC45MzUtMTEsMTEtMTFoMTFoNDBoMTFjNi4wNjUsMCwxMSw0LjkzNSwxMSwxMXY1SDc2VjQ0N3ogTTQ5Miw0OTJIMjB2LTIwaDQ3MlY0OTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTAuOTMsMjE5LjkzYy0xLjg2LDEuODYtMi45Myw0LjQ0LTIuOTMsNy4wN3MxLjA2OSw1LjIxLDIuOTMsNy4wNjljMS44NiwxLjg2LDQuNDQsMi45MzEsNy4wNywyLjkzMSAgICBzNS4yMS0xLjA3LDcuMDY5LTIuOTMxQzEyNi45MywyMzIuMjEsMTI4LDIyOS42MywxMjgsMjI3cy0xLjA3LTUuMjEtMi45MzEtNy4wN2MtMS44NTktMS44Ni00LjQzOS0yLjkzLTcuMDY5LTIuOTMgICAgUzExMi43OSwyMTguMDY5LDExMC45MywyMTkuOTN6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",PNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01NSwzNS45MzVjNC40OTMtLjU1NSw4LTQuOCw4LTkuOTM1LDAtNC44ODUtMy41MzUtMTktOS0xOXMtOSwxNC4xMTUtOSwxOWMwLDUuMTM4LDMuNTA3LDkuMzgsOCw5LjkzNVY0Mkg0OS45NDlhOS45NzgsOS45NzgsMCwwLDAtMTQuNDQxLTcuOTIybC0xLjYtMi41MTNMMzIuMzg4LDI3SDM2LjVhMS41LDEuNSwwLDAsMSwwLDNIMzZ2MmguNWEzLjUsMy41LDAsMCwwLDAtN0gzMWExLDEsMCwwLDAtLjk0OCwxLjMxNkwzMS42MTMsMzFIMjBWMjloM2ExLDEsMCwwLDAsMS0xLDUsNSwwLDAsMC0xMCwwLDEsMSwwLDAsMCwxLDFoM3YyLjY3NWwtMS45NjQsMi43YTkuOTkxLDkuOTkxLDAsMSwwLDQuNTEsMTEuNjA2LDMuOTg1LDMuOTg1LDAsMSwwLDYuNDI1LTQuNjM0bDUuNTIxLTguMjgzLDEuMzI5LDIuMDg5QTkuOTk1LDkuOTk1LDAsMSwwLDQ5Ljk0OSw0NEg2M1Y0Mkg1NVpNNDcsMjZjMC01LjA2NywzLjY2MS0xNyw3LTE3czcsMTEuOTMzLDcsMTdjMCw0LjAyMi0yLjYxNCw3LjM1MS02LDcuOTA5VjE4LjUzNWwyLjU1NS0xLjctMS4xMS0xLjY2NC0zLDJBMSwxLDAsMCwwLDUzLDE4djdsLTIuNC0xLjgtMS4yLDEuNkw1MywyNy41djYuNDA5QzQ5LjYxNCwzMy4zNTEsNDcsMzAuMDIyLDQ3LDI2Wk0xOSwyNWEzLjAwNiwzLjAwNiwwLDAsMSwyLjgyOSwySDE2LjE3MUEzLjAwNiwzLjAwNiwwLDAsMSwxOSwyNVptNSwxNWEzLjgzNiwzLjgzNiwwLDAsMC0uNTYuMDU3TDIwLjUsMzNoOS42MzJsLTQuODI1LDcuMjM3QTMuOTY4LDMuOTY4LDAsMCwwLDI0LDQwWk0xMSw1MWE4LDgsMCwxLDEsMy44NTctMTVsLTMuMDExLDQuMTRBMi45NiwyLjk2LDAsMCwwLDExLDQwYTMsMywwLDEsMCwyLjczOCw0LjIxNGw1LjEuMzkyQTguMDE0LDguMDE0LDAsMCwxLDExLDUxWm03Ljk4LTguMzg5LTUuMS0uMzkyYTMuMDA1LDMuMDA1LDAsMCwwLS40MTQtLjkxNmwzLTQuMTI1QTcuOTY5LDcuOTY5LDAsMCwxLDE4Ljk4LDQyLjYxMVpNMTIsNDNhMSwxLDAsMSwxLTEtMUExLDEsMCwwLDEsMTIsNDNabTguODc5LTEuNDcyYTkuOTY4LDkuOTY4LDAsMCwwLTMuMjI4LTUuOTc0bDEuMTExLTEuNTI3LDIuODMyLDYuOEE0LjAzMiw0LjAzMiwwLDAsMCwyMC44NzksNDEuNTI4Wk0yNCw0NmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNCw0NlptMTYsNWE4LDgsMCwwLDEtNS4xLTE0LjE1NmwyLjc0OCw0LjMxOUEyLjk2NiwyLjk2NiwwLDAsMCwzNyw0M2EzLDMsMCwxLDAsMy0zLDIuOTYzLDIuOTYzLDAsMCwwLS42NzEuMDgybC0yLjc0MS00LjMwN0E4LDgsMCwxLDEsNDAsNTFabTAtOWExLDEsMCwxLDEtMSwxQTEsMSwwLDAsMSw0MCw0MloiLz4NCiAgICAgICAgPHBhdGggZD0iTTcsMThhNCw0LDAsMCwwLDIuNzg4LTEuMTM5LDUuNjMzLDUuNjMzLDAsMCwwLDMuOTYxLS41NDVBMy45NTQsMy45NTQsMCwwLDAsMTcsMThhNCw0LDAsMSwwLS4wODMtOCw2LDYsMCwwLDAtMTEuOS41MzhBMy45OTIsMy45OTIsMCwwLDAsNywxOFptLS42NTMtNS44NzdhMSwxLDAsMCwwLC42Ny0uOTc3QS42LjYsMCwwLDAsNywxMWE0LDQsMCwwLDEsOC0uMDQxYzAsLjAzMy0uMDE4LjE1Mi0uMDIuMTg1YTEsMSwwLDAsMCwxLjMzOS45ODZBMS45NywxLjk3LDAsMCwxLDE3LDEyYTIsMiwwLDEsMS0xLjksMi41NzMsMSwxLDAsMCwwLTEuNTg5LS40ODcsMy44LDMuOCwwLDAsMS0zLjc1MS42OTMsMSwxLDAsMCwwLTEuMTI5LjM3MiwxLjk5NCwxLjk5NCwwLDEsMS0yLjI4Mi0zLjAyOFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMSIgeT0iNTUiIHdpZHRoPSI2MiIgaGVpZ2h0PSIyIi8+DQogICAgPC9nPg0KPC9zdmc+DQo=",WNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTE2OC45OTIgMjc3LjU5MWMwLTI2LjU1MS0yMS42MDEtNDguMTUxLTQ4LjE1MS00OC4xNTFzLTQ4LjE1MSAyMS42MDEtNDguMTUxIDQ4LjE1MSAyMS42MDEgNDguMTUgNDguMTUxIDQ4LjE1IDQ4LjE1MS0yMS42IDQ4LjE1MS00OC4xNXptLTgxLjMwMyAwYzAtMTguMjc5IDE0Ljg3Mi0zMy4xNTEgMzMuMTUxLTMzLjE1MXMzMy4xNTEgMTQuODcyIDMzLjE1MSAzMy4xNTEtMTQuODcyIDMzLjE1LTMzLjE1MSAzMy4xNS0zMy4xNTEtMTQuODcxLTMzLjE1MS0zMy4xNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ3OS4yNzIgNDYyaC0zNC4wNjJsLTM5LjE1OC0zNi42NjdjLTMuMDIzLTIuODMxLTcuNzctMi42NzUtMTAuNjAxLjM0OXMtMi42NzUgNy43Ny4zNDkgMTAuNjAxbDQxLjMyMSAzOC42OTJjMS4zOSAxLjMwMiAzLjIyMiAyLjAyNSA1LjEyNiAyLjAyNWgzNy4wMjRjOS43NzUgMCAxNy43MjggNy45NTMgMTcuNzI4IDE3LjcyOXYyLjI3MWgtNjAuODQ0Yy0yLjE0OCAwLTQuMjYxLS43MDMtNS45ODEtMS45ODZsLTE4OC40OTItMTc4LjkxNHYtMjQuMTMybDEzMi4yMDcgMTIzLjc5NmMzLjAyMyAyLjgzMSA3Ljc3IDIuNjc1IDEwLjYwMS0uMzQ5czIuNjc1LTcuNzctLjM0OS0xMC42MDFsLTE0Mi40NTktMTMzLjM5NnYtMi40NThjMC04LjI4NC02Ljc0LTE1LjAyNC0xNS4wMjUtMTUuMDI0aC0xMi41NDh2LTQyLjc4NmgxMS40MzhjNi41MzYgMCAxMi4zOC0zLjkwMSAxNC44ODYtOS45MzggMi41MDctNi4wMzcgMS4xNDUtMTIuOTMtMy40NzEtMTcuNTZsLTEwNC43MDYtMTA1LjAzNmMtMS4xNjgtMS4xNzItMi40ODctMi4xMzgtMy45MS0yLjg4OXYtMTAuODY5aDUwLjE0OGM4Ljk1OSAwIDE2LjI0OC03LjI4OSAxNi4yNDgtMTYuMjQ4di0yNS4yMTNjMC04Ljk1OS03LjI4OS0xNi4yNDgtMTYuMjQ4LTE2LjI0OGgtNTAuMTY2Yy0uMTg0LTMuOTc4LTMuNDU4LTcuMTQ5LTcuNDgyLTcuMTQ5LTQuMTQzIDAtNy41IDMuMzU3LTcuNSA3LjV2NjguMjIzYy0xLjQyNy43NTEtMi43NDkgMS43MTktMy45MiAyLjg5NGwtNDAuMDE1IDQwLjE0Yy0yLjkyNSAyLjkzNC0yLjkxNyA3LjY4Mi4wMTcgMTAuNjA2IDIuOTMzIDIuOTIzIDcuNjgxIDIuOTE3IDEwLjYwNi0uMDE3bDQwLjAxNi00MC4xNDFjLjI3MS0uMjcxLjU3OS0uMzI4Ljc5MS0uMzI4LjIxMSAwIC41MjEuMDU3Ljc5Mi4zMjlsMTA0LjcwNSAxMDUuMDM1Yy4xNTcuMTU4LjUyNy41MjkuMjQgMS4yMTktLjI4Ni42ODktLjgwOS42ODktMS4wMzIuNjg5aC0yMDkuNDFjLS4yMjQgMC0uNzQ3IDAtMS4wMzMtLjY4OXMuMDg0LTEuMDYxLjI0MS0xLjIxOWw0My41MjEtNDMuNjU4YzIuOTI1LTIuOTM0IDIuOTE3LTcuNjgzLS4wMTctMTAuNjA2LTIuOTM0LTIuOTI1LTcuNjgzLTIuOTE4LTEwLjYwNi4wMTdsLTQzLjUyMSA0My42NTdjLTQuNjE1IDQuNjMtNS45NzggMTEuNTIyLTMuNDcyIDE3LjU2MSAyLjUwNyA2LjAzNyA4LjM1IDkuOTM4IDE0Ljg4NyA5LjkzOGgxMS40Mzh2NjkuNDQ0YzAgNC4xNDMgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU3IDcuNS03LjV2LTY5LjQ0NGgxNTYuNTM1djEzMi44ODJoLTE1Ni41MzZ2LTMzLjQ1MmMwLTQuMTQzLTMuMzU3LTcuNS03LjUtNy41cy03LjUgMy4zNTctNy41IDcuNXYxODYuNDJoLTIwLjA3M2MtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWg0OTdjNC4xNDMgMCA3LjUtMy4zNTcgNy41LTcuNXYtOS43NzFjMC0xOC4wNDctMTQuNjgyLTMyLjcyOS0zMi43MjgtMzIuNzI5em0tMjk5LjUzLTQzOC42MDN2MjUuMjEzYzAgLjY4OC0uNTYgMS4yNDgtMS4yNDggMS4yNDhoLTUwLjE0OHYtMjcuNzA5aDUwLjE0OGMuNjg5IDAgMS4yNDguNTYgMS4yNDggMS4yNDh6bTE2Ny4xOTYgNDEzLjI5MSA2My41NDEgNjAuMzEyaC02My41NDF6bS0xNSA2MC4zMTJoLTYwLjgxMXYtMTMyLjI3bDYwLjgxMSA1Ny43MnptLTc1LjgxLTE0Ni41MDh2MTQ2LjUwOGgtNDIuMDJ2LTE1Ni45NDJoMTIuNTQ4YzQuOTM5IDAgOS4zMTYtMi40MDYgMTIuMDU2LTYuMDk2em0tMjkuNDQ2LTgxLjUzMi0uMDEyIDU2LjA5N3MtLjAwNC4wMDEtLjAxNC4wMDFoLTEyLjU0OHYtNTYuMTEzem0tMjcuNTc0IDIyOC4wNGgtMzcuMTV2LTEzNy45NjloMzcuMTV6bS0xMDQuMzg0LTYxLjQ4NGg1Mi4yMzR2MjEuNDM2aC01Mi4yMzR6bTUyLjIzNC0xNWgtNTIuMjM0di0yMS40MzZoNTIuMjM0em0tNTIuMjM0IDUxLjQzNWg1Mi4yMzR2MjUuMDQ5aC01Mi4yMzR6bTUyLjIzNC0xMTIuOTJ2MjUuMDQ5aC01Mi4yMzR2LTI1LjA0OXptLTEwNC4zODUgMGgzNy4xNXYxMzcuOTY5aC0zNy4xNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",RNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM2Ny4wNDMgMTcwLjQxNGMtMTAuNTE2LS4zNjUtMjAuMDE2LTUuMDQ3LTI2Ljc0OS0xMy4xODEtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC02LjczMyA4LjEzNS0xNi4yMzMgMTIuODE2LTI2Ljc0OSAxMy4xODItNC4xNC4xNDQtNy4zNzkgMy42MTYtNy4yMzQgNy43NTYuMTQ0IDQuMTQgMy41OTQgNy4zNzEgNy43NTYgNy4yMzUgMTMuNTY2LS40NzIgMjYuMzg2LTYuMzI4IDM1LjY0Ni0xNi4xODcgMjAuMjc2IDIxLjYyOSA1NC41NjkgMjEuNjU3IDc0Ljg3NS4wMDEgMjAuMjc4IDIxLjYyOSA1NC41NzEgMjEuNjU0IDc0Ljg3NC0uMDAxIDkuMjYyIDkuODU5IDIyLjA4IDE1LjcxNSAzNS42NDcgMTYuMTg3IDQuMTIxLjE0OSA3LjYxMy0zLjA5NSA3Ljc1Ni03LjIzNS4xNDUtNC4xNC0zLjA5NC03LjYxMi03LjIzNC03Ljc1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MC4yOTQgMjE4Ljc1N2MtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NiAxNy42MzYtNDEuNDYxIDE3LjYwNy01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTk2IDE3LjYzOS00MS40NjEgMTcuNjA2LTU2LjAzMS0uMDAxLTQuOTA0LTUuOTIyLTEzLjkyNy01LjkzOC0xOC44NDEuMDAxLTcuOTk0IDkuNjU4LTIwLjE4MiAxNC40ODQtMzIuNjEyIDEyLjkxNC00LjEtLjUxOS03Ljg2MSAyLjM4OS04LjM4MiA2LjQ5OS0uNTIxIDQuMTA5IDIuMzkgNy44NjIgNi40OTkgOC4zODIgMTYuNDgxIDIuMDg5IDMyLjY1OC0zLjc5NSA0My45MTYtMTUuODA4IDIwLjI3NyAyMS42MjggNTQuNTY4IDIxLjY1NCA3NC44NzMgMCAyMC4yNzYgMjEuNjI3IDU0LjU3IDIxLjY1NiA3NC44NzMgMCAxMS4yNTggMTIuMDEzIDI3LjQzNiAxNy44OTYgNDMuOTE1IDE1LjgwOCA0LjEwOS0uNTIgNy4wMi00LjI3MiA2LjQ5OS04LjM4MnMtNC4yODktNy4wMTktOC4zODItNi40OTljLTEyLjQzNSAxLjU2OS0yNC42MTgtMy4yNTUtMzIuNjExLTEyLjkxNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC43ODIgMTA3LjdjLTguMDgyLTEuNzAzLTE1LjE2Ny02LTIwLjQ4Ny0xMi40MjctNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC01LjMyIDYuNDI3LTEyLjQwNCAxMC43MjUtMjAuNDg2IDEyLjQyOC00LjA1NC44NTQtNi42NDcgNC44MzItNS43OTMgOC44ODVzNC44NCA2LjY0NyA4Ljg4NSA1Ljc5MmMxMC4zODMtMi4xODggMTkuNTkyLTcuMzkgMjYuODE2LTE1LjExNyAyMC4yODIgMjEuNjMxIDU0LjU3MiAyMS42NDggNzQuODcyLS4wMDEgMjAuMjc2IDIxLjYyNiA1NC41NjcgMjEuNjU2IDc0Ljg3MS4wMDIgNy4yMjYgNy43MjcgMTYuNDM2IDEyLjkzIDI2LjgxOCAxNS4xMTYgNC4wNDguODU1IDguMDMtMS43NCA4Ljg4NS01Ljc5My44NTMtNC4wNTMtMS43NDEtOC4wMzEtNS43OTMtOC44ODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01NC45ODUgNDI5LjI3M2gxNjkuNzMydjY5LjU3OWMwIDcuMjUgNS44OTggMTMuMTQ4IDEzLjE0OSAxMy4xNDhoMjUuMTkyYzcuMjUgMCAxMy4xNDgtNS44OTggMTMuMTQ4LTEzLjE0OHYtMS40NjRoNzQuMTk5djEuNDY0YzAgNy4yNSA1Ljg5OCAxMy4xNDggMTMuMTQ5IDEzLjE0OGgyNS4xOTJjNy4yNSAwIDEzLjE0OC01Ljg5OCAxMy4xNDgtMTMuMTQ4di02OS41NzloNTUuMTE5YzI0LjEyMSAwIDQzLjA4MS0yMC44ODYgNDAuNjU3LTQ0Ljk1Ni0uMDA0LS4wNC0uMDA4LS4wOC0uMDEzLS4xMmwtMTMuMDM1LTExMS41NjdjLS40ODEtNC4xMTQtNC4yMTUtNy4wNjItOC4zMTktNi41NzktNC4xMTQuNDgxLTcuMDYgNC4yMDYtNi41NzkgOC4zMmwxMy4wMyAxMTEuNTAzYzEuNDYgMTQuODMzLTEwLjA5NCAyOC4zOTgtMjUuNzM4IDI4LjM5OGgtNTUuMTE5di0xOS4wNThoNDQuOTM3YzkuNDcgMCAxNi44OC04LjE5MSAxNS45MzUtMTcuNjE2LS4wMDUtLjA0My0uMDEtLjA4Ni0uMDE1LS4xMjlsLTM4Ljc1Ni0zMjkuMDc0Yy0uODYxLTguMTc5LTcuNjk1LTE0LjMzNy0xNS45MjctMTQuMzM3aC0xMzQuNTcxYy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDEzNC41NzFjLjUyMyAwIC45NTcuMzkzIDEuMDEuOTE0LjAwNC4wNDIuMDA5LjA4My4wMTQuMTI1bDM4Ljc1IDMyOS4wMzRjLjAxOS4yNzUtLjA3NC41NDctLjI2Ljc1MS0uMTkxLjIxMi0uNDY2LjMzMy0uNzUyLjMzM2gtNDQuOTM3di0yMi44OTJjMC0zOS40NzctMzIuMjU2LTcwLjM0NC03MC4zNDUtNzAuMzQ0LTI2Ljc3OCAwLTUwLjk0NyAxNS4xODktNjIuODM5IDM4Ljc0NC0xMi4wMDgtMjMuNzcyLTM2LjcyNS0zOS4yNS02NC4yMDYtMzguNzMxLTM3LjcuNzA5LTY4Ljk4OCAzMS41OTMtNjguOTg4IDcwLjMzMnYyMi44OTJoLTcwLjM1MmMtLjI4NiAwLS41Ni0uMTIyLS43NTMtLjMzNS0uMTg1LS4yMDQtLjI3Ny0uNDc2LS4yNTktLjc1MWwzOC43NTItMzI5LjAzMmMuMDA1LS4wNDIuMDEtLjA4NC4wMTQtLjEyNy4wNTMtLjUyLjQ4Ni0uOTEyIDEuMDEtLjkxMmgxMzQuNTdjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEzNC41N2MtOC4yMzMgMC0xNS4wNjcgNi4xNi0xNS45MjcgMTQuMzM5bC0zOC43NTcgMzI5LjA3M2MtLjAwNS4wNDMtLjAxLjA4Ni0uMDE1LjEyOS0uOTQ2IDkuNDIyIDYuNDY0IDE3LjYxNiAxNS45MzUgMTcuNjE2aDE1OS41NTF2MTkuMDU4aC0xNjkuNzMyYy0xNC44NTIgMC0yNy4yNzktMTIuNzgyLTI1LjczOS0yOC4zOTlsNDAuNjA5LTM0Ny40ODNjLjAwNS0uMDQuMDA5LS4wOC4wMTMtLjExOSAxLjMzNi0xMy4yNjggMTIuMzk5LTIzLjI3MyAyNS43MzQtMjMuMjczaDMyMC43OThjMTMuMzM1IDAgMjQuMzk3IDEwLjAwNSAyNS43MzMgMjMuMjcyLjAwNC4wNC4wMDguMDguMDEzLjEybDIzLjQ4NyAyMDAuOTc5Yy40ODEgNC4xMTUgNC4yMTcgNy4wNjMgOC4zMTkgNi41NzkgNC4xMTQtLjQ4IDcuMDYtNC4yMDYgNi41NzktOC4zMmwtMjMuNDgtMjAwLjkyMmMtMi4xMzgtMjAuOTMyLTE5LjYwMy0zNi43MDgtNDAuNjUxLTM2LjcwOGgtMzIwLjc5OGMtMjEuMDQ5IDAtMzguNTE2IDE1Ljc3Ny00MC42NTIgMzYuNzFsLTQwLjYxIDM0Ny40ODhjLS4wMDUuMDQtLjAwOS4wOC0uMDEzLjEyLTIuNDE1IDIzLjk5OSAxNi40NjYgNDQuOTU1IDQwLjY1OCA0NC45NTV6bTI1Ny43MTMtNzEuMzAyYzAtMTAuMzI1IDguMTIyLTE5LjI4OSAxOC41LTE5LjQ4MyAxMC42ODItLjIwNCAxOS4yMDkgOC40OTEgMTkuMjA5IDE4LjgzNnYyMi44OTJoLTM3LjcwOXptLTM2LjQ5MSA3MS4zMDJoNzQuMTk5djE5LjA1OGgtNzQuMTk5em03OC4yMTUtMzQuMDU4YzUuNTY5IDAgMTAuMDE0IDQuODE4IDkuNDg0IDEwLjQzLS40NzMgNC44ODQtNC41OSA4LjYyNy05LjQ4NCA4LjYyN2gtNzguMjE1di0xOS4wNThjMjYuMTEyLjAwMSA1Mi4xNjcuMDAxIDc4LjIxNS4wMDF6bS03OC4yMTUgNjguMTE2aDc4LjIxNWM1LjUzNyAwIDEwLjAxNiA0Ljc5NiA5LjQ4NCAxMC40My0uNDcyIDQuODc0LTQuNTg3IDguNjI3LTkuNDg0IDguNjI3aC03OC4yMTV6bTExMC42OSAzMy42NjloLTIxLjQ5di0yLjIxM2MxOC4wMTQtOS4xMjcgMTguMDU0LTM0LjcwOCAwLTQzLjg1NXYtMjQuMjZjMTguMDk4LTkuMTcgMTcuOTY4LTM0Ljc1MiAwLTQzLjg1NXYtMjUuNDkzYzAtMjAuNDg2LTE4LjIwMi0zNi41MTctMzguNzk0LTMzLjQ5LTE2LjM1MyAyLjQtMjguOTE1IDE2LjUyNi0yOC45MTUgMzMuNDl2MjIuODkyaC0yMS40OXYtMjEuODM3YzAtMzAuNTUyIDI0LjQ2LTU2LjA5NCA1NC44MjItNTYuMzg2IDMxLjIxOC0uMjYyIDU1Ljg2NyAyNS4wNTggNTUuODY3IDU1LjMzMXptLTIzNi4zNzctMTE2Ljc4NXYtMjEuODM4YzAtMzIuMjI0IDI2LjY5Ni01Ny41ODMgNTcuNTg5LTU2LjM0MiAyOS40ODMgMS4yMDQgNTMuMDk5IDI1LjUwMyA1My4wOTkgNTUuMjg3djEzOS42NzdoLTIxLjQ5YzAtMTQuNDE4IDAtMTIxLjA2MyAwLTEzOS42NzcgMC0xNy45NS0xNC4wNjUtMzIuODA0LTMxLjkxNS0zMy43OTUtMTkuMjc2LTEuMDk2LTM1Ljc5MyAxNC4yNjEtMzUuNzkzIDMzLjc5NXYyMi44OTJoLTIxLjQ5em0zNi40OSAwdi0yMi4yNDVjMC05LjQyNSA2Ljc2Mi0xNy43MjQgMTUuODc3LTE5LjI0MyAxMS42MzktMS44NTIgMjEuODMgNy4yMzcgMjEuODMgMTguNTk2djIyLjg5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",JNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTYsMjUySDExNmMtNS41MSwwLTEwLDQuNDktMTAsMTBzNC40OSwxMCwxMCwxMGgxMDBjNS41MSwwLDEwLTQuNDksMTAtMTBTMjIxLjUxLDI1MiwyMTYsMjUyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1MmMtNS41MSwwLTEwLDQuNDktMTAsMTBzNC40OSwxMCwxMCwxMHMxMC00LjQ5LDEwLTEwUzI2MS41MSwyNTIsMjU2LDI1MnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM5NiwyNTJIMjk2Yy01LjUxLDAtMTAsNC40OS0xMCwxMHM0LjQ5LDEwLDEwLDEwaDEwMGM1LjUxLDAsMTAtNC40OSwxMC0xMFM0MDEuNTEsMjUyLDM5NiwyNTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yODYsMTA3aC02MGMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHY2MGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwaDYwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTB2LTYwDQoJCQlDMjk2LDExMS40NzcsMjkxLjUyMywxMDcsMjg2LDEwN3ogTTI3NiwxNjdoLTQwdi00MGg0MFYxNjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDIsNDkyaC0xM1YyMzNjMC02Mi4yMzctMjQuMjM2LTEyMC43NDgtNjguMjQ0LTE2NC43NTZDMzc2Ljc0OCwyNC4yMzYsMzE4LjIzNywwLDI1NiwwUzEzNS4yNTIsMjQuMjM2LDkxLjI0NCw2OC4yNDQNCgkJCVMyMywxNzAuNzYzLDIzLDIzM3YyNTlIMTBjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoNDkyYzUuNTIzLDAsMTAtNC40NzcsMTAtMTBTNTA3LjUyMyw0OTIsNTAyLDQ5MnogTTM4Niw0OTJIMTI2DQoJCQl2LTIwaDI2MFY0OTJ6IE0zODYsNDUySDEyNnYtMjBoMjYwVjQ1MnogTTM4Niw0MTJIMTI2di0yMGgyNjBWNDEyeiBNMzg2LDM3MkgxMjZ2LTIwaDI2MFYzNzJ6IE0zODYsMzMySDEyNnYtMjBoMjYwVjMzMnoNCgkJCSBNNDI5LDQ5MmgtMjNWMzAyYzAtNS41MjMtNC40NzctMTAtMTAtMTBIMTE2Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjE5MEg4M1YyMzNjMC05NS42NjgsNzcuMzgzLTE3My41LDE3Mi41LTE3My41DQoJCQlDMzUxLjE2OCw1OS41LDQyOSwxMzcuMzMyLDQyOSwyMzNWNDkyeiBNNDY5LDQ5MmgtMjBWMjMzYzAtMTA2LjY5Ni04Ni44MDQtMTkzLjUtMTkzLjUtMTkzLjUNCgkJCWMtNTEuNjM5LDAtMTAwLjA2MywyMC4xMzctMTM2LjM1Miw1Ni43MDJDODIuOTQsMTMyLjY4NCw2MywxODEuMjY3LDYzLDIzM3YyNTlINDNWMjMzYzAtMTE3LjQ0OSw5NS41NTEtMjEzLDIxMy0yMTMNCgkJCXMyMTMsOTUuNTUxLDIxMywyMTNWNDkyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",BNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUwOC41NDEgMjE4LjM4NC0xNjIuNTA3LTIwMy4xMzRjLTcuNzUzLTkuNjkyLTE5LjMxOC0xNS4yNS0zMS43MjktMTUuMjVoLTgzLjE1NWMtOC43MDMgMC0xNS43ODMgNy4wOC0xNS43ODMgMTUuNzgzdjE2LjU2N2MwIDguNzAzIDcuMDggMTUuNzgzIDE1Ljc4MyAxNS43ODNoMzMuOTE3djExNy41MzNoLTMwLjYzMmwtMTIwLjMzNC0xNTAuNDE2Yy03Ljc1My05LjY5MS0xOS4zMTgtMTUuMjUtMzEuNzI5LTE1LjI1aC02Ni41ODljLTguNzAzIDAtMTUuNzgzIDcuMDgtMTUuNzgzIDE1Ljc4M3YxNi41NjdjMCA4LjcwMyA3LjA4IDE1Ljc4MyAxNS43ODMgMTUuNzgzaDE3LjM1djExNy41MzNoLTE3LjM1Yy04LjcwMy4wMDEtMTUuNzgzIDcuMDgxLTE1Ljc4MyAxNS43ODR2MzA2LjQ4M2MwIDEzLjI3MSAxMC43OTYgMjQuMDY3IDI0LjA2NyAyNC4wNjdoNDcyLjE1YzguNzAzIDAgMTUuNzgzLTcuMDggMTUuNzgzLTE1Ljc4M3YtNzQuNTUtMTQzLjI4OS01MC4xMzRjMC0zLjU3MS0xLjIyOC03LjA3My0zLjQ1OS05Ljg2em0tNjIuMDI0IDE5NS43ODNjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzgzdi03NC41NS0xMjEuOTA4bDE4LjEzNCAyMi42Njd2MTc0LjU3NHptLTIzMS45MzQgMGMtLjQzMiAwLS43ODQtLjM1Mi0uNzg0LS43ODN2LTY3LjA1aDE4LjEzM3Y2Ny44MzN6bS02Ni4yNjYtODIuODM0Yy0uNDMyIDAtLjc4NC0uMzUyLS43ODQtLjc4NHYtNjcuMDQ5aDE4LjEzM3Y2Ny44MzN6bS02Ni4yNjctODIuODMzYy0uNDMyIDAtLjc4My0uMzUyLS43ODMtLjc4M3YtNjcuMDVoMTguMTMzdjY3LjgzM3ptODMuNjE2LTkxLjc0MXY4LjkwOGgtMTguMTMzdi0zMS41NzR6bTY2LjI2NyA4Mi44MzN2OC45MDhoLTE4LjEzM3YtMzEuNTc0em04MS4yNjcgOC4xMjV2LTE5Ni40MjhjLjA3Mi4wODQuMTUyLjE2LjIyMi4yNDdsMTcuOTExIDIyLjM4OXYxNzQuNTc1aC0xNy4zNWMtLjQzMSAwLS43ODMtLjM1Mi0uNzgzLS43ODN6bTExNy41MzMgNTAuNDgzaC0xOC4xMzN2LTEyMi42OTFsMTguMTM0IDIyLjY2N3YxMDAuMDI0em0tMTguMTMzIDE1aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptLTE1IDE4LjEzM2gtMTcuMzVjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzg0di03NC41NDktMTIxLjkwOGwxOC4xMzMgMjIuNjY2em0tMzMuMTMzLTExNS45NjZoLTE4LjEzNHYtMTIyLjY5MWwxOC4xMzQgMjIuNjY3em0tMTguMTM0IDE1aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptMTguMTM0IDMzLjEzM3Y2Ny4wNWMwIC4yNjQuMDI3LjUyMi4wNC43ODRoLTg0LjQ0di01Mi45NTUtMTQuODc5em0tOTkuNDAxIDE3LjUwOXYxMDAuMDI0aC0xOC4xMzN2LTEyMi42OTFsNS4wODYgNi4zNTd6bS0xNTAuNjY2LTE4OC4zMzMgMTguMTMzIDIyLjY2N3YxMDAuMDI0aC0xOC4xMzN6bTMzLjEzMyA4Ny45OTFoMTguMTMzdjY3LjgzM2gtMTguMTMzem0zMy4xMzMtNS4xNTggMTguMTMzIDIyLjY2N3YxMDAuMDI0aC0xOC4xMzN6bTMzLjEzNCA4Ny45OTFoMTguMTMzdjY3LjgzM2gtMTguMTMzem0tMTE0LjQtOTcuODMzaC0xOC4xMzN2LTExNC4zNzhjLjA3My4wODQuMTUyLjE2LjIyMi4yNDdsMTcuOTExIDIyLjM5em0xNSA2NC43aDE4LjEzM3YxOC4xMzNoLTE4LjEzM3ptNjYuMjY2IDgyLjgzM2gxOC4xMzR2MTguMTMzaC0xOC4xMzN2LTE4LjEzM3ptNjYuMjY3IDgyLjgzM2gxOC4xMzN2MTguMTMzaC0xOC4xMzN6bTMzLjEzMy00OS43aDE1MC42Njd2NjcuMDVjMCAuMjY0LjAyNy41MjIuMDQuNzgzaC0xNTAuNzA3em0yMDcuMzE2LTc3LjM0NiA5LjYxOCAxMi4wMjJ2MTAwLjAyNGgtMTguMTMzdi0xMjIuNjl6bS04LjUxNSAxMjcuMDQ2aDE4LjEzM3YxOC4xMzNoLTE4LjEzM3ptLTI0OC41LTM2My42ODN2LTE2LjU2N2MwLS40MzIuMzUyLS43ODMuNzgzLS43ODNoODMuMTU1YzcuODMgMCAxNS4xMjUgMy41MDYgMjAuMDE3IDkuNjJsMTYyLjUwNyAyMDMuMTM0YzAgLjAwMS4wMDEuMDAxLjAwMi4wMDIuMTA5LjEzNy4xNy4zMTEuMTcuNDg4djI4Ljc1M2wtMTcxLjg2Ni0yMTQuODMxYy00LjU5My01Ljc0LTExLjQ0Mi05LjAzMi0xOC43OTMtOS4wMzJoLS42NDItNzQuNTVjLS40MzItLjAwMS0uNzgzLS4zNTItLjc4My0uNzg0em02Ny44MzMgMTUuNzgzdjg0LjRoLTE4LjEzNHYtODQuNHptLTE4LjEzNCA5OS40aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptMTguMTM0IDMzLjEzNHY2Ny4wNWMwIC4yNjQuMDI3LjUyMi4wNC43ODNoLTE4LjE3NHYtMjAuMjU2YzAtMy41Ny0xLjIyOC03LjA3Mi0zLjQ1OC05Ljg1OSAwLS4wMDEgMC0uMDAxIDAtLjAwMWwtMzAuMTc0LTM3LjcxOGg1MS43NjZ6bS0yODMuMi0xNDguMzE3di0xNi41NjdjMC0uNDMxLjM1Mi0uNzgzLjc4My0uNzgzaDY2LjU4OGM3LjgzIDAgMTUuMTI1IDMuNTA2IDIwLjAxNiA5LjYybDE2Mi41MDggMjAzLjEzNGMuMTEuMTM4LjE3MS4zMTMuMTcxLjQ5djI4Ljc1NGwtMTcxLjg2NS0yMTQuODMyYy00LjU5Mi01Ljc0LTExLjQ0Mi05LjAzMy0xOC43OTMtOS4wMzNoLS42NDItNTcuOTgzYy0uNDMxIDAtLjc4My0uMzUxLS43ODMtLjc4M3ptNTEuMjY3IDE1Ljc4M3Y4NC40aC0xOC4xMzR2LTg0LjR6bS0xOC4xMzQgOTkuNGgxOC4xMzN2MTguMTMzaC0xOC4xMzN6bS0yNC4wNjYgMzQ5LjQ2N2MtNSAwLTkuMDY3LTQuMDY3LTkuMDY3LTkuMDY3di0zMDYuNDgzYzAtLjQzMi4zNTItLjc4NC43ODMtLjc4NGg1MC40ODN2NjcuMDVjMCA4LjcwMyA3LjA4IDE1Ljc4MyAxNS43ODMgMTUuNzgzaDUwLjQ4M3Y2Ny4wNWMwIDguNzAzIDcuMDgxIDE1Ljc4NCAxNS43ODQgMTUuNzg0aDUwLjQ4NHY2Ny4wNWMwIDguNzAzIDcuMDgxIDE1Ljc4MyAxNS43ODQgMTUuNzgzaDUwLjQ4M3Y2Ny4wNWMwIC40MzItLjM1Mi43ODMtLjc4My43ODNoLTI0MC4yMTd6bTQ3Mi45MzMtLjc4M2MwIC40MzItLjM1Mi43ODMtLjc4My43ODNoLTIxNi4xOWMuMDEzLS4yNjEuMDQtLjUxOS4wNC0uNzgzdi02Ny4wNWgyMTYuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",GNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTggNTExLjk5OCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS45OTgsMzAuNTk4aC0xNTJjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2NDAuMDAzYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMjAuMDAxdjc0Ljc5NGgtMTkwDQoJCQkJYy01LjUyMiwwLTEwLDQuNDc3LTEwLDEwdjQwLjAwMmMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwSDIwMHY3NC43OTZIMTBjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2NDAuMDAxYzAsNS41MjMsNC40NzcsMTAsMTAsMTANCgkJCQloMTMuOTk2VjQ3MS40YzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMTgxLjc2YzIuMjU2LDAsNC40NDUtMC43NjMsNi4yMTMtMi4xNjVsMjg2LjI0My0yMjYuOTcyDQoJCQkJYzIuMzkyLTEuODk2LDMuNzg2LTQuNzgyLDMuNzg2LTcuODM1VjgwLjYwMVY0MC41OThDNTExLjk5OCwzNS4wNzUsNTA3LjUyMiwzMC41OTgsNTAxLjk5OCwzMC41OTh6IE0xODkuOTk5LDIwNS4zOTd2LTIwLjAwMg0KCQkJCWgxODB2MjAuMDAySDE4OS45OTl6IE0yMCwzNDAuMTk0di0yMC4wMDFoMTgwdjIwLjAwMUgyMHogTTQ5MS45OTgsMTA5Ljg3OWgtNDEuMDM1Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwDQoJCQkJYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoNDEuMDM1djEwOS43MTVMMjEyLjI3MSw0NjEuNEg0My45OTZ2LTYyLjI1M2g0MS4wMzZjNS41MjIsMCwxMC00LjQ3NywxMC0xMHMtNC40NzgtMTAtMTAtMTBINDMuOTk2DQoJCQkJdi0xOC45NTNIMjEwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTB2LTQwLjAwMXYtODQuNzk2aDE1OS45OTljNS41MjMsMCwxMC00LjQ3NywxMC0xMHYtNDAuMDAyVjkwLjYwMWgxMDEuOTk5VjEwOS44Nzl6DQoJCQkJIE00OTEuOTk4LDcwLjYwMWgtMTMyVjUwLjU5OGgxMzJWNzAuNjAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTE0LDM3OS4xNDRoLTAuMjM2Yy01LjUyNCwwLTEwLDQuNDc3LTEwLDEwczQuNDc2LDEwLDEwLDEwSDExNGM1LjUyMiwwLDEwLTQuNDc3LDEwLTEwUzExOS41MjIsMzc5LjE0NCwxMTQsMzc5LjE0NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQyMS45OTgsMTI5Ljg4aDAuMjM1YzUuNTIyLDAsMTAtNC40NzcsMTAtMTBzLTQuNDc4LTEwLTEwLTEwaC0wLjIzNWMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMA0KCQkJCVM0MTYuNDc1LDEyOS44OCw0MjEuOTk4LDEyOS44OHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",FNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01LjUxOCA2NGgyLjk4NmMuNTUzIDAgMS0uNDQ3IDEtMXYtMi4wMjFoNDQuOTkydjIuMDIxYzAgLjU1My40NDcgMSAxIDFoM2MuNTUzIDAgMS0uNDQ3IDEtMXYtNjAuNWMwLTEuMzc4LTEuMTIxLTIuNS0yLjUtMi41cy0yLjUgMS4xMjItMi41IDIuNXYxNS41MDRoLTIuOTk4di0xMy45OTZjMC0uNTUyLS40NDctMS0xLTFoLTE1Ljk5NmMtLjU1MyAwLTEgLjQ0OC0xIDF2MTMuOTk1aC0zLjAwMnYtMTMuOTk1YzAtLjU1Mi0uNDQ3LTEtMS0xaC0xNS45OTZjLS41NTMgMC0xIC40NDgtMSAxdjEzLjk5NWgtM3YtMTUuNTAzYzAtMS4zNzgtMS4xMjEtMi41LTIuNS0yLjVzLTIuNSAxLjEyMi0yLjUgMi41bC4wMTQgNjAuNWMwIC41NTMuNDQ3IDEgMSAxem01MC45NzgtNjEuNWMwLS4yNzYuMjI1LS41LjUtLjVzLjUuMjI0LjUuNXY1OS41aC0xem0tMTQuOTk4IDIuNTA4aDIuMDAydjEuMDA4aC0yLjAwMnptLTUuOTk2IDBoMy45OTZ2Mi4wMDhjMCAuNTUyLjQ0NyAxIDEgMWg0LjAwMmMuNTUzIDAgMS0uNDQ4IDEtMXYtMi4wMDhoMy45OTh2MTIuOTk1aC0xMy45OTZ6bS0xNS4wMDIgMGgydjEuMDA4aC0yem0tNS45OTYgMGgzLjk5NnYyLjAwOGMwIC41NTIuNDQ3IDEgMSAxaDRjLjU1MyAwIDEtLjQ0OCAxLTF2LTIuMDA4aDR2MTIuOTk1aC0xMy45OTZ6bS01IDE0Ljk5NWg0IDE1Ljk5NiA1LjAwMiAxNS45OTYgMy45OTh2MWgtNDQuOTkyem0wIDNoNDQuOTkydjEzLjk3MWgtMi45OTZ2LTEwLjk5YzAtLjU1Mi0uNDQ3LTEtMS0xaC0zN2MtLjU1MyAwLTEgLjQ0OC0xIDF2MTAuOTkxaC0yLjk5NnptMTkuOTk2IDYuOTgxaDVjLjU1MyAwIDEtLjQ0OCAxLTF2LTJoMTR2OS45OTFoLTM1di05Ljk5MWgxNHYyYzAgLjU1Mi40NDcgMSAxIDF6bTEtMnYtMWgzdjF6bS0yMC45OTYgMTAuOTkxaDMuOTk2IDM3IDMuOTk2djEuMDAyaC00NC45OTJ6bTAgMy4wMDJoNDQuOTkydjE0aC0yLjk5NHYtMTEuOTljMC0uNTUzLS40NDctMS0xLTFoLTE0LjAwMmMtLjU1MyAwLTEgLjQ0Ny0xIDF2MTEuOTloLTIuOTk0di04Ljk4OGMwLS41NTMtLjQ0Ny0xLTEtMWgtNi45OTRjLS4wMDQgMC0uMDA2LS4wMDItLjAxLS4wMDJzLS4wMDYuMDAyLS4wMS4wMDJoLTMuOTgyYy0uMDA0IDAtLjAwNi0uMDAyLS4wMS0uMDAycy0uMDA2LjAwMi0uMDEuMDAyaC02Ljk4NmMtLjU1MyAwLTEgLjQ0Ny0xIDF2OC45ODhoLTN6bTMxLjk5NiA2LjAxN2g0LjAwMmMuNTUzIDAgMS0uNDQ3IDEtMXYtMi4wMDhoM3YxMC45OWgtMTIuMDAydi0xMC45OWgzdjIuMDA4YzAgLjU1My40NDcgMSAxIDF6bTEtMnYtMS4wMDhoMi4wMDJ2MS4wMDh6bS0yMiA1aDQuMDAyYy41NTMgMCAxLS40NDcgMS0xdi0yLjAwNmg1LjAwNHY3Ljk4OGgtMTYuMDAydi03Ljk4OGg0Ljk5NnYyLjAwNmMwIC41NTMuNDQ3IDEgMSAxem0xLTJ2LTEuMDA2aDIuMDAydjEuMDA2em0tMTEuOTk2IDguOTgzaDQgMTguMDAyIDQuOTk0IDE0LjAwMiAzLjk5NHYxLjAwMmgtNDQuOTkyem0tMi41LTU1Ljk3N2MuMjc1IDAgLjUuMjI0LjUuNXY1OS41aC0uOTg2bC0uMDE0LTU5LjVjMC0uMjc2LjIyNS0uNS41LS41eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",HNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MyAzdi0yaC0zMWMtLjU1MyAwLTEgLjQ0Ny0xIDF2OGMwIC41NTMuNDQ3IDEgMSAxaDF2NTBoLTMydjJoMzMgNCA4IDQgMTN2LTJoLTEydi01aDEydi0yaC0xMy00LTN2LTJoMjB2LTJoLTIxYy0uNTUzIDAtMSAuNDQ3LTEgMXY0YzAgLjU1My40NDcgMSAxIDFoM3Y1aC02di01MGgyNHYtMmgtMjUtNC0xdi02em0tMTYgNTNoMnY1aC0yem0tMTAtNDV2NTBoLTJ2LTUweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjEgMzJjMC0yLjExOC0uNTAxLTQuMjM4LTEuNDQ3LTYuMTMxbC0uNjU4LTEuMzE2Yy0uMzQtLjY3OC0xLjQ0OS0uNjc4LTEuNzg5IDBsLS42NTggMS4zMTZjLS45NDcgMS44OTMtMS40NDggNC4wMTMtMS40NDggNi4xMzEgMCAuMjQxLjAyOS40ODEuMDQyLjcyMi0uNjQ2LS40ODMtMS4zODMtLjgzNy0yLjE3Mi0xLjAzNGwtMi42MjgtLjY1N2MtLjMzOC0uMDg3LS43MDEuMDE1LS45NDkuMjYzcy0uMzQ5LjYwOC0uMjYzLjk0OWwuNjU3IDIuNjI5Yy4yNjkgMS4wNzMuODIzIDIuMDU1IDEuNjA1IDIuODM2Ljc4MS43ODIgMS43NjMgMS4zMzcgMi44MzYgMS42MDVoLjAwMWwuNjcyLjE2OC0xLjI1LjYyNS44OTUgMS43ODkgMi41NTQtMS4yNzd2Mi4zODJoLTdjLS41NTMgMC0xIC40NDctMSAxdjRjMCAuNTUzLjQ0NyAxIDEgMWgxLjA5NWwuOTEgOS4xYy4wNTEuNTEuNDgxLjkuOTk1LjloMTBjLjUxNCAwIC45NDQtLjM5Ljk5NS0uOWwuOTEtOS4xaDEuMDk1Yy41NTMgMCAxLS40NDcgMS0xdi00YzAtLjU1My0uNDQ3LTEtMS0xaC03di0yLjM4MmwyLjU1MyAxLjI3Ni44OTUtMS43ODktMS4yNS0uNjI1LjY3Mi0uMTY4aC4wMDFjMS4wNzMtLjI2OSAyLjA1NS0uODIzIDIuODM2LTEuNjA1Ljc4Mi0uNzgxIDEuMzM3LTEuNzYzIDEuNjA1LTIuODM3bC42NTctMi42MjhjLjA4Ni0uMzQxLS4wMTUtLjcwMS0uMjYzLS45NDlzLS42MDktLjM1LS45NDktLjI2M2wtMi42MjkuNjU3Yy0uNzg4LjE5Ny0xLjUyNS41NTEtMi4xNzEgMS4wMzQuMDE0LS4yNC4wNDMtLjQ4LjA0My0uNzIxem0xLjA5NSAyNWgtOC4xODlsLS44LThoOS43OXptMi45MDUtMTBoLTE0di0yaDE0em0tNy0xOS43MzRjLjY1NSAxLjQ4NSAxIDMuMTEgMSA0LjczNHMtLjM0NSAzLjI0OS0xIDQuNzM0Yy0uNjU1LTEuNDg1LTEtMy4xMS0xLTQuNzM0cy4zNDUtMy4yNDkgMS00LjczNHptLTUuMjkzIDkuMDI3Yy0uNTI1LS41MjUtLjg5OC0xLjE4Ni0xLjA4LTEuOTA3bC0uMjUyLTEuMDExIDEuMDEuMjUyYy43MjMuMTgyIDEuMzgzLjU1NSAxLjkwOCAxLjA4cy44OTggMS4xODYgMS4wOCAxLjkwN2wuMjUyIDEuMDExLTEuMDEtLjI1MmMtLjcyMi0uMTgyLTEuMzgzLS41NTUtMS45MDgtMS4wOHptMTAuOTA3LTIuNjY2IDEuMDExLS4yNTItLjI1MiAxLjAxYy0uMTgyLjcyMy0uNTU1IDEuMzgzLTEuMDggMS45MDhzLTEuMTg2Ljg5OC0xLjkwOCAxLjA4bC0xLjAxLjI1Mi4yNTItMS4wMWMuMTgyLS43MjMuNTU1LTEuMzgzIDEuMDgtMS45MDhzMS4xODYtLjg5OCAxLjkwNy0xLjA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNSAxNWgxM2MyLjc1NyAwIDUtMi4yNDMgNS01cy0yLjI0My01LTUtNWMtLjQzOCAwLS44NzcuMDYxLTEuMzAzLjE4LS43NjYtMi40NTUtMy4wMjMtNC4xOC01LjY5Ny00LjE4LTMuMzA5IDAtNiAyLjY5MS02IDYtMi4yMDYgMC00IDEuNzk0LTQgNHMxLjc5NCA0IDQgNHptMC02Yy4yNyAwIC41MzMuMDU0Ljc4My4xNi4zNTIuMTQ3Ljc1Ni4wODUgMS4wNDMtLjE2My4yODgtLjI0OC40MTEtLjYzOS4zMTctMS4wMDctLjA5OC0uMzc3LS4xNDMtLjY5Mi0uMTQzLS45OSAwLTIuMjA2IDEuNzk0LTQgNC00IDIuMDgxIDAgMy43ODQgMS41NzQgMy45NjEgMy42NjIuMDI4LjM0NS4yMzMuNjQ4LjU0LjgwNi4zMDguMTU4LjY3NS4xNDUuOTctLjAzMi40ODMtLjI5Ljk5Ny0uNDM2IDEuNTI5LS40MzYgMS42NTQgMCAzIDEuMzQ2IDMgM3MtMS4zNDYgMy0zIDNoLTEzYy0xLjEwMyAwLTItLjg5Ny0yLTJzLjg5Ny0yIDItMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",VNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MSw1N0g0OC40MTRsLS44NzktLjg3OWE4LjU4Nyw4LjU4NywwLDAsMS0yLjQ3MS01LjExMkM1MS4xNTMsNDguNTg3LDU1LjYwNyw0MS45MzQsNTUuOTU3LDM0SDU2YTEsMSwwLDAsMCwxLTFWMzBhMSwxLDAsMCwwLTEtMUg1Mi40NjRhMTkuNTgyLDE5LjU4MiwwLDAsMCwxLjY3My00SDU3YTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMS0xSDQ2Ljg0MUExMi43LDEyLjcsMCwwLDAsMzMuMTU5LDNIMjNhMSwxLDAsMCwwLTEsMVYyNGExLDEsMCwwLDAsMSwxaDIuODYzYTE5LjU4MiwxOS41ODIsMCwwLDAsMS42NzMsNEgyNGExLDEsMCwwLDAtMSwxdjNhMSwxLDAsMCwwLDEsMWguMDQzYy4zNSw3LjkzNCw0LjgsMTQuNTg3LDEwLjg5MywxNy4wMDlhOC41ODcsOC41ODcsMCwwLDEtMi40NzEsNS4xMTJMMzEuNTg2LDU3SDI5YTEsMSwwLDAsMC0xLDF2NGExLDEsMCwwLDAsMSwxSDUxYTEsMSwwLDAsMCwxLTFWNThBMSwxLDAsMCwwLDUxLDU3Wk01Niw1VjIzSDU0LjYxMUEyMS40NDcsMjEuNDQ3LDAsMCwwLDU1LDE5LDE5LjQ5MywxOS40OTMsMCwwLDAsNDkuNDA3LDVaTTI0LDIzVjVoNi41OTNBMTkuNDkzLDE5LjQ5MywwLDAsMCwyNSwxOWEyMS40NDcsMjEuNDQ3LDAsMCwwLC4zODksNFptMy00YzAtOC44MjIsNS44MzItMTYsMTMtMTZzMTMsNy4xNzgsMTMsMTZhMTguNDA3LDE4LjQwNywwLDAsMS0yLjg3MiwxMEg0Ny42ODJBMTYsMTYsMCwwLDAsNTEsMTljMC03LjcyLTQuOTM1LTE0LTExLTE0UzI5LDExLjI4LDI5LDE5YTE2LDE2LDAsMCwwLDMuMzE4LDEwSDI5Ljg3MkExOC40MDcsMTguNDA3LDAsMCwxLDI3LDE5Wm04LjA2MSwxMEExMy4zMDgsMTMuMzA4LDAsMCwxLDMxLDE5YzAtNi42MTcsNC4wMzctMTIsOS0xMnM5LDUuMzgzLDksMTJhMTMuMzA4LDEzLjMwOCwwLDAsMS00LjA2MSwxMFpNMjUsMzFINTV2MUgyNVptMS4wNDIsM0g1My45NThDNTMuNTI4LDQyLjkwOCw0Ny40NDIsNTAsNDAsNTBTMjYuNDcyLDQyLjkwOCwyNi4wNDIsMzRaTTM2Ljg2NCw1MS42MjlhMTMuNDQsMTMuNDQsMCwwLDAsNi4yNzIsMEExMC41MzksMTAuNTM5LDAsMCwwLDQ1LjYzNiw1N0gzNC4zNjRBMTAuNTM5LDEwLjUzOSwwLDAsMCwzNi44NjQsNTEuNjI5Wk01MCw2MUgzMFY1OUg1MFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzLDU3aC0uMDhBNy4wMSw3LjAxLDAsMCwwLDE5LDUxLjY4NVY0OGExLDEsMCwwLDAtMS0xSDE3VjI2LjgxNmEzLDMsMCwxLDAtMiwwVjQ3SDE0YTEsMSwwLDAsMC0xLDF2My42ODVBNy4wMSw3LjAxLDAsMCwwLDkuMDgsNTdIOWEzLDMsMCwwLDAsMCw2SDIzYTMsMywwLDAsMCwwLTZaTTE2LDIzYTEsMSwwLDEsMS0xLDFBMSwxLDAsMCwxLDE2LDIzWk0xNSw0OWgydjIuMDhhNi4yOSw2LjI5LDAsMCwwLTIsMFptMSw0YTUuMDA2LDUuMDA2LDAsMCwxLDUsNUgxMUE1LjAwNiw1LjAwNiwwLDAsMSwxNiw1M1ptNyw4SDlhMSwxLDAsMCwxLDAtMiwxLDEsMCwwLDAsMSwxSDIyYTEsMSwwLDAsMCwxLTEsMSwxLDAsMCwxLDAsMloiLz4NCiAgICAgICAgPHBhdGggZD0iTTgsMTVhMSwxLDAsMCwwLDEtMSw1LjAwNiw1LjAwNiwwLDAsMSw1LTUsMSwxLDAsMCwwLDAtMkE1LjAwNiw1LjAwNiwwLDAsMSw5LDIsMSwxLDAsMCwwLDcsMiw1LjAwNiw1LjAwNiwwLDAsMSwyLDcsMSwxLDAsMCwwLDIsOWE1LjAwNiw1LjAwNiwwLDAsMSw1LDVBMSwxLDAsMCwwLDgsMTVaTTUuNiw4QTcuMDY2LDcuMDY2LDAsMCwwLDgsNS42LDcuMDY2LDcuMDY2LDAsMCwwLDEwLjQsOCw3LjA2Niw3LjA2NiwwLDAsMCw4LDEwLjQsNy4wNjYsNy4wNjYsMCwwLDAsNS42LDhaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNCwxMWEzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMiwzLDMsMCwwLDEtMy0zLDEsMSwwLDAsMC0yLDBabTIsNGE1LjAxNyw1LjAxNywwLDAsMC0xLDEsNS4wMTcsNS4wMTcsMCwwLDAtMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEtMUE1LjAxNyw1LjAxNywwLDAsMCwxNiwxNVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTYyLDQ4YTMsMywwLDAsMS0zLTMsMSwxLDAsMCwwLTIsMCwzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMlptLTQsMmE1LjAxNyw1LjAxNywwLDAsMC0xLTEsNS4wMTcsNS4wMTcsMCwwLDAsMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEsMUE1LjAxNyw1LjAxNywwLDAsMCw1OCw1MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",ZNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUwOSA1MDkiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM1OS4yIDB2ODkuOGgtODkuODAxdjg5LjhoLTg5Ljh2ODkuOGgtODkuNzk5djg5LjhoLTg5Ljh2MTQ5LjhoNTA5di01MDl6bTExOS44IDQ3OWgtNDQ5di04OS44aDg5Ljh2LTg5LjhoODkuOHYtODkuOGg4OS44di04OS44aDg5Ljh2LTg5LjhoODkuOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTY4LjQ0OCAxNzYuOTU2IDk0LjA0MS05NC4wNC0zLjYyOSA0My4wNjYgMjkuODk1IDIuNTE5IDguNTYyLTEwMS42MjYtMTAxLjYyNyA4LjU2MiAyLjUxOCAyOS44OTQgNDMuMDY4LTMuNjI4LTk0LjA0MSA5NC4wNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",XNe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yMzguOTMzLDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjc2LjhjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzVjQyLjY2Nw0KCQkJQzI0Ny40NjcsMzcuOTU2LDI0My42NDQsMzQuMTMzLDIzOC45MzMsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDc3Ljg2NywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1Y3Ni44YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM1M0ODYuNCw4MS41MSw0ODYuNCw3Ni44VjQyLjY2Nw0KCQkJQzQ4Ni40LDM3Ljk1Niw0ODIuNTc3LDM0LjEzMyw0NzcuODY3LDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTE3OS4yLDBIOC41MzNDMy44MjMsMCwwLDMuODIzLDAsOC41MzN2NDk0LjkzM0MwLDUwOC4xNzcsMy44MjMsNTEyLDguNTMzLDUxMkgxNzkuMmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVY4LjUzM0MxODcuNzMzLDMuODIzLDE4My45MSwwLDE3OS4yLDB6IE0xNzAuNjY3LDQ5NC45MzNoLTE1My42VjE3LjA2N2gxNTMuNlY0OTQuOTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTAzLjQ2NywzNTguNEgxNzkuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjEzNi41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDMyNC4yNjcNCgkJCWM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzNWMzY2LjkzM0M1MTIsMzYyLjIyMyw1MDguMTc3LDM1OC40LDUwMy40NjcsMzU4LjR6IE00OTQuOTMzLDQ5NC45MzNoLTMwNy4yVjM3NS40NjdoMzA3LjINCgkJCVY0OTQuOTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTAzLjQ2NywwSDE3OS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MzQuMTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMjQuMjY3DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjguNTMzQzUxMiwzLjgyMyw1MDguMTc3LDAsNTAzLjQ2NywweiBNNDk0LjkzMywzNC4xMzNoLTMwNy4yVjE3LjA2N2gzMDcuMlYzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMzYuNTMzLDI0Ny40NjdoLTI1LjZjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gyNS42YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzMw0KCQkJUzE0MS4yNDQsMjQ3LjQ2NywxMzYuNTMzLDI0Ny40Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTAuOTMzLDI0Ny40NjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YyNS42YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1YyNTYNCgkJCUMxMTkuNDY3LDI1MS4yOSwxMTUuNjQ0LDI0Ny40NjcsMTEwLjkzMywyNDcuNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY2LjkzMyw0MTguMTMzaC01MS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoNTEuMmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVMzNzEuNjQ0LDQxOC4xMzMsMzY2LjkzMyw0MTguMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQxLjMzMyw0MTguMTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MTcuMDY3YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzMw0KCQkJdi0xNy4wNjdDMzQ5Ljg2Nyw0MjEuOTU2LDM0Ni4wNDQsNDE4LjEzMywzNDEuMzMzLDQxOC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTAuMTMzLDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDMjk4LjY2NywzNy45NTYsMjk0Ljg0NCwzNC4xMzMsMjkwLjEzMywzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTAuMTMzLDExOS40NjdjLTQ1LjkzNSwwLTc2LjgsMTcuMTQzLTc2LjgsNDIuNjY3VjE3OS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gxNy4wNjd2NzYuOA0KCQkJYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOGM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhIMzU4LjRjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjcNCgkJCUMzNjYuOTMzLDEzNi42MSwzMzYuMDY4LDExOS40NjcsMjkwLjEzMywxMTkuNDY3eiBNMzQ5Ljg2NywxNzAuNjY3SDMzMi44Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNWMjU2SDI1NnYtNzYuOA0KCQkJYzAtNC43MS0zLjgyMy04LjUzMy04LjUzMy04LjUzM0gyMzAuNHYtOC41MzNjMC0xMi40MDcsMjAuOTMyLTI1LjYsNTkuNzMzLTI1LjZzNTkuNzMzLDEzLjE5Myw1OS43MzMsMjUuNlYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQ5Ljg2NywxMTkuNDY3Yy0xMS4zNzUsMC0yMi4wNDIsMS4wNzUtMzEuNjkzLDMuMTkxYy0zLjkxNywwLjg2Mi02LjcwNyw0LjMyNi02LjcwNyw4LjMzNw0KCQkJYzAsNC4wMTEsMi43OSw3LjQ3NSw2LjcwNyw4LjMzN2MxOS4yNTEsNC4yMTUsMzEuNjkzLDEzLjE2NywzMS42OTMsMjIuODAxdjguNTMzSDMzMi44Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2ODUuMzMzDQoJCQljMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDU5LjczM2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhoMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDNDI2LjY2NywxMzYuNjEsMzk1LjgwMiwxMTkuNDY3LDM0OS44NjcsMTE5LjQ2N3ogTTQwOS42LDE3MC42NjdoLTE3LjA2N2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NmgtNDIuNjY3di02OC4yNjcNCgkJCUgzNTguNGM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTE3LjA2N2MwLTkuODEzLTQuNzM2LTE4LjU3Ny0xMy4zOC0yNS41NTdjMzYuNDM3LDAuODAyLDU2LjA0NywxMy41NDIsNTYuMDQ3LDI1LjU1Nw0KCQkJVjE3MC42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MDkuNiwxMTkuNDY3Yy0xMS4zNzUsMC0yMi4wNDIsMS4wNzUtMzEuNjkzLDMuMTkxYy0zLjkxNywwLjg2Mi02LjcwNyw0LjMyNi02LjcwNyw4LjMzNw0KCQkJYzAsNC4wMTEsMi43OSw3LjQ3NSw2LjcwNyw4LjMzN2MxOS4yNTEsNC4yMTUsMzEuNjkzLDEzLjE2NywzMS42OTMsMjIuODAxdjguNTMzaC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y4NS4zMzMNCgkJCWMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoNTkuNzMzYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNzYuOGgxNy4wNjdjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjcNCgkJCUM0ODYuNCwxMzYuNjEsNDU1LjUzNSwxMTkuNDY3LDQwOS42LDExOS40Njd6IE00NjkuMzMzLDE3MC42NjdoLTE3LjA2N2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NmgtNDIuNjY3di02OC4yNjcNCgkJCWgxNy4wNjdjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjdjMC05LjgxMy00LjczNi0xOC41NzctMTMuMzgtMjUuNTU3YzM2LjQzNywwLjgwMiw1Ni4wNDcsMTMuNTQyLDU2LjA0NywyNS41NTcNCgkJCVYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMyw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVMzMDQuMjQ3LDg1LjMzMywyOTAuMTMzLDg1LjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM1OC40LDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDMzY2LjkzMywzNy45NTYsMzYzLjExLDM0LjEzMywzNTguNCwzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTguNCw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVMzNzIuNTE0LDg1LjMzMywzNTguNCw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MjYuNjY3LDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDNDM1LjIsMzcuOTU2LDQzMS4zNzcsMzQuMTMzLDQyNi42NjcsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI2LjY2Nyw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVM0NDAuNzgxLDg1LjMzMyw0MjYuNjY3LDg1LjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ4Ni40LDMyNC4yNjdIMTc5LjJjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YzNC4xMzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDMwNy4yDQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjMzMi44QzQ5NC45MzMsMzI4LjA5LDQ5MS4xMSwzMjQuMjY3LDQ4Ni40LDMyNC4yNjd6IE00NzcuODY3LDM1OC40SDE4Ny43MzN2LTE3LjA2N2gyOTAuMTMzDQoJCQlWMzU4LjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NjkuMzMzLDM5Mi41MzNoLTI1NmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjY4LjI2N2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjU2DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi02OC4yNjdDNDc3Ljg2NywzOTYuMzU2LDQ3NC4wNDQsMzkyLjUzMyw0NjkuMzMzLDM5Mi41MzN6IE00NjAuOCw0NjAuOEgyMjEuODY3di01MS4ySDQ2MC44DQoJCQlWNDYwLjh6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",KNe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01NS43NTggNjEtMS41NjktNS41N2M0LjA1My0yLjIwNCA2LjgxMS02LjUwMSA2LjgxMS0xMS40M3YtMWMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0ydi0xMGMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0yaC0yNmMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJ2MTBjLTEuMTAzIDAtMiAuODk3LTIgMnYyYzAgMS4xMDMuODk3IDIgMiAydjFjMCA0LjkyOSAyLjc1OCA5LjIyNiA2LjgxMSAxMS40M2wtMS41NjkgNS41N2gtMTMuMzQzYy0uNDY1LTIuMjc5LTIuNDg0LTQtNC44OTktNGgtMXYtOS4wMDNjNC42OTMtMS45NjMgOC02LjYgOC0xMS45OTd2LTdoLTE4di00aDR2Mmgydi0yYzAtMS4xMDMtLjg5Ny0yLTItMmgtNi0xLTFjLTEuMTAzIDAtMiAuODk3LTIgMnY0aC0ydjdjMCA1LjM5NyAzLjMwNyAxMC4wMzQgOCAxMS45OTd2OS4wMDNoLTFjLTIuNDE0IDAtNC40MzQgMS43MjEtNC44OTkgNGgtNS4xMDF2Mmg2NHYtMnptLTIwLjc1OS0zOGgyNi4wMDF2MmgtMjZ6bTIuMDAxIDhoNHYtMmgtNHYtMmgyMnYxMGgtMjJ6bS0yLjAwMSA4aDI2LjAwMXYyaC0yNnptMi4wMDEgNXYtMWgyMnYxYzAgNi4wNjUtNC45MzUgMTEtMTEgMTFzLTExLTQuOTM1LTExLTExem02LjY2MSAxMi4yNGMxLjM2LjQ4MyAyLjgxNi43NiA0LjMzOS43NnMyLjk3OS0uMjc3IDQuMzM5LS43NmwxLjM0IDQuNzZoLTExLjM1OHptLTM2LjY2MS0zMS4yNGgxIDF2NGgtMnptMjAgNnYyaC0yMnYtMnptLTIyIDV2LTFoMjJ2MWMwIDYuMDY1LTQuOTM1IDExLTExIDExcy0xMS00LjkzNS0xMS0xMXptOCAxMi42MzdjLjk2NS4yMjkgMS45NjYuMzYzIDMgLjM2M3MyLjAzNS0uMTM0IDMtLjM2M3Y4LjM2M2gtNnptLTMgMTAuMzYzaDEyYzEuMzAyIDAgMi40MDIuODM5IDIuODE2IDJoLTE3LjYzMmMuNDE0LTEuMTYxIDEuNTE0LTIgMi44MTYtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQgMjFoMjRjMS42NTQgMCAzLTEuMzQ2IDMtM3YtMTRjMC0xLjY1NC0xLjM0Ni0zLTMtM2gtMjRjLTEuNjU0IDAtMyAxLjM0Ni0zIDN2MTRjMCAxLjY1NCAxLjM0NiAzIDMgM3ptLTEtMTdjMC0uNTUxLjQ0OC0xIDEtMWgyNGMuNTUyIDAgMSAuNDQ5IDEgMXYxNGMwIC41NTEtLjQ0OCAxLTEgMWgtMjRjLS41NTIgMC0xLS40NDktMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAgMi41MTVoMnYxNi45NzFoLTJ6IiB0cmFuc2Zvcm09Im1hdHJpeCguNzA3IC0uNzA3IC43MDcgLjcwNyAtNC41NTYgMTEpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMCAyLjUxNWgydjE2Ljk3MWgtMnoiIHRyYW5zZm9ybT0ibWF0cml4KC43MDcgLS43MDcgLjcwNyAuNzA3IC0xLjYyNyAxOC4wNzEpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNSA5aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1IDEzaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDExaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDExaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDNoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDUgN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQzIDVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTUgMTNoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTUgMTdoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMTVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTMgMTVoMnYyaC0yeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",qNe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MSw1N0g0OC40MTRsLS44NzktLjg3OWE4LjU4Nyw4LjU4NywwLDAsMS0yLjQ3MS01LjExMkM1MS4xNTMsNDguNTg3LDU1LjYwNyw0MS45MzQsNTUuOTU3LDM0SDU2YTEsMSwwLDAsMCwxLTFWMzBhMSwxLDAsMCwwLTEtMUg1Mi40NjRhMTkuNTgyLDE5LjU4MiwwLDAsMCwxLjY3My00SDU3YTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMS0xSDQ2Ljg0MUExMi43LDEyLjcsMCwwLDAsMzMuMTU5LDNIMjNhMSwxLDAsMCwwLTEsMVYyNGExLDEsMCwwLDAsMSwxaDIuODYzYTE5LjU4MiwxOS41ODIsMCwwLDAsMS42NzMsNEgyNGExLDEsMCwwLDAtMSwxdjNhMSwxLDAsMCwwLDEsMWguMDQzYy4zNSw3LjkzNCw0LjgsMTQuNTg3LDEwLjg5MywxNy4wMDlhOC41ODcsOC41ODcsMCwwLDEtMi40NzEsNS4xMTJMMzEuNTg2LDU3SDI5YTEsMSwwLDAsMC0xLDF2NGExLDEsMCwwLDAsMSwxSDUxYTEsMSwwLDAsMCwxLTFWNThBMSwxLDAsMCwwLDUxLDU3Wk01Niw1VjIzSDU0LjYxMUEyMS40NDcsMjEuNDQ3LDAsMCwwLDU1LDE5LDE5LjQ5MywxOS40OTMsMCwwLDAsNDkuNDA3LDVaTTI0LDIzVjVoNi41OTNBMTkuNDkzLDE5LjQ5MywwLDAsMCwyNSwxOWEyMS40NDcsMjEuNDQ3LDAsMCwwLC4zODksNFptMy00YzAtOC44MjIsNS44MzItMTYsMTMtMTZzMTMsNy4xNzgsMTMsMTZhMTguNDA3LDE4LjQwNywwLDAsMS0yLjg3MiwxMEg0Ny42ODJBMTYsMTYsMCwwLDAsNTEsMTljMC03LjcyLTQuOTM1LTE0LTExLTE0UzI5LDExLjI4LDI5LDE5YTE2LDE2LDAsMCwwLDMuMzE4LDEwSDI5Ljg3MkExOC40MDcsMTguNDA3LDAsMCwxLDI3LDE5Wm04LjA2MSwxMEExMy4zMDgsMTMuMzA4LDAsMCwxLDMxLDE5YzAtNi42MTcsNC4wMzctMTIsOS0xMnM5LDUuMzgzLDksMTJhMTMuMzA4LDEzLjMwOCwwLDAsMS00LjA2MSwxMFpNMjUsMzFINTV2MUgyNVptMS4wNDIsM0g1My45NThDNTMuNTI4LDQyLjkwOCw0Ny40NDIsNTAsNDAsNTBTMjYuNDcyLDQyLjkwOCwyNi4wNDIsMzRaTTM2Ljg2NCw1MS42MjlhMTMuNDQsMTMuNDQsMCwwLDAsNi4yNzIsMEExMC41MzksMTAuNTM5LDAsMCwwLDQ1LjYzNiw1N0gzNC4zNjRBMTAuNTM5LDEwLjUzOSwwLDAsMCwzNi44NjQsNTEuNjI5Wk01MCw2MUgzMFY1OUg1MFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzLDU3aC0uMDhBNy4wMSw3LjAxLDAsMCwwLDE5LDUxLjY4NVY0OGExLDEsMCwwLDAtMS0xSDE3VjI2LjgxNmEzLDMsMCwxLDAtMiwwVjQ3SDE0YTEsMSwwLDAsMC0xLDF2My42ODVBNy4wMSw3LjAxLDAsMCwwLDkuMDgsNTdIOWEzLDMsMCwwLDAsMCw2SDIzYTMsMywwLDAsMCwwLTZaTTE2LDIzYTEsMSwwLDEsMS0xLDFBMSwxLDAsMCwxLDE2LDIzWk0xNSw0OWgydjIuMDhhNi4yOSw2LjI5LDAsMCwwLTIsMFptMSw0YTUuMDA2LDUuMDA2LDAsMCwxLDUsNUgxMUE1LjAwNiw1LjAwNiwwLDAsMSwxNiw1M1ptNyw4SDlhMSwxLDAsMCwxLDAtMiwxLDEsMCwwLDAsMSwxSDIyYTEsMSwwLDAsMCwxLTEsMSwxLDAsMCwxLDAsMloiLz4NCiAgICAgICAgPHBhdGggZD0iTTgsMTVhMSwxLDAsMCwwLDEtMSw1LjAwNiw1LjAwNiwwLDAsMSw1LTUsMSwxLDAsMCwwLDAtMkE1LjAwNiw1LjAwNiwwLDAsMSw5LDIsMSwxLDAsMCwwLDcsMiw1LjAwNiw1LjAwNiwwLDAsMSwyLDcsMSwxLDAsMCwwLDIsOWE1LjAwNiw1LjAwNiwwLDAsMSw1LDVBMSwxLDAsMCwwLDgsMTVaTTUuNiw4QTcuMDY2LDcuMDY2LDAsMCwwLDgsNS42LDcuMDY2LDcuMDY2LDAsMCwwLDEwLjQsOCw3LjA2Niw3LjA2NiwwLDAsMCw4LDEwLjQsNy4wNjYsNy4wNjYsMCwwLDAsNS42LDhaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNCwxMWEzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMiwzLDMsMCwwLDEtMy0zLDEsMSwwLDAsMC0yLDBabTIsNGE1LjAxNyw1LjAxNywwLDAsMC0xLDEsNS4wMTcsNS4wMTcsMCwwLDAtMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEtMUE1LjAxNyw1LjAxNywwLDAsMCwxNiwxNVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTYyLDQ4YTMsMywwLDAsMS0zLTMsMSwxLDAsMCwwLTIsMCwzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMlptLTQsMmE1LjAxNyw1LjAxNywwLDAsMC0xLTEsNS4wMTcsNS4wMTcsMCwwLDAsMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEsMUE1LjAxNyw1LjAxNywwLDAsMCw1OCw1MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",e0e="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNMjM4LjkzMywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1Y3Ni44YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1Y0Mi42NjcNCgkJCUMyNDcuNDY3LDM3Ljk1NiwyNDMuNjQ0LDM0LjEzMywyMzguOTMzLDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ3Ny44NjcsMzQuMTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNWNzYuOGMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNTNDg2LjQsODEuNTEsNDg2LjQsNzYuOFY0Mi42NjcNCgkJCUM0ODYuNCwzNy45NTYsNDgyLjU3NywzNC4xMzMsNDc3Ljg2NywzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNzkuMiwwSDguNTMzQzMuODIzLDAsMCwzLjgyMywwLDguNTMzdjQ5NC45MzNDMCw1MDguMTc3LDMuODIzLDUxMiw4LjUzMyw1MTJIMTc5LjJjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzDQoJCQlWOC41MzNDMTg3LjczMywzLjgyMywxODMuOTEsMCwxNzkuMiwweiBNMTcwLjY2Nyw0OTQuOTMzaC0xNTMuNlYxNy4wNjdoMTUzLjZWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMy40NjcsMzU4LjRIMTc5LjJjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YxMzYuNTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMjQuMjY3DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjM2Ni45MzNDNTEyLDM2Mi4yMjMsNTA4LjE3NywzNTguNCw1MDMuNDY3LDM1OC40eiBNNDk0LjkzMyw0OTQuOTMzaC0zMDcuMlYzNzUuNDY3aDMwNy4yDQoJCQlWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMy40NjcsMEgxNzkuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjM0LjEzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMzI0LjI2Nw0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1Y4LjUzM0M1MTIsMy44MjMsNTA4LjE3NywwLDUwMy40NjcsMHogTTQ5NC45MzMsMzQuMTMzaC0zMDcuMlYxNy4wNjdoMzA3LjJWMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTM2LjUzMywyNDcuNDY3aC0yNS42Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjUuNmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVMxNDEuMjQ0LDI0Ny40NjcsMTM2LjUzMywyNDcuNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTEwLjkzMywyNDcuNDY3Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MjUuNmMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNzOC41MzMtMy44MjMsOC41MzMtOC41MzNWMjU2DQoJCQlDMTE5LjQ2NywyNTEuMjksMTE1LjY0NCwyNDcuNDY3LDExMC45MzMsMjQ3LjQ2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Ni45MzMsNDE4LjEzM2gtNTEuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzczMuODIzLDguNTMzLDguNTMzLDguNTMzaDUxLjJjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzDQoJCQlTMzcxLjY0NCw0MTguMTMzLDM2Ni45MzMsNDE4LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM0MS4zMzMsNDE4LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjE3LjA2N2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNzOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCXYtMTcuMDY3QzM0OS44NjcsNDIxLjk1NiwzNDYuMDQ0LDQxOC4xMzMsMzQxLjMzMyw0MTguMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzI5OC42NjcsMzcuOTU2LDI5NC44NDQsMzQuMTMzLDI5MC4xMzMsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMywxMTkuNDY3Yy00NS45MzUsMC03Ni44LDE3LjE0My03Ni44LDQyLjY2N1YxNzkuMmMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMTcuMDY3djc2LjgNCgkJCWMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNIMzMyLjhjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi03Ni44SDM1OC40YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDMzY2LjkzMywxMzYuNjEsMzM2LjA2OCwxMTkuNDY3LDI5MC4xMzMsMTE5LjQ2N3ogTTM0OS44NjcsMTcwLjY2N0gzMzIuOGMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NkgyNTZ2LTc2LjgNCgkJCWMwLTQuNzEtMy44MjMtOC41MzMtOC41MzMtOC41MzNIMjMwLjR2LTguNTMzYzAtMTIuNDA3LDIwLjkzMi0yNS42LDU5LjczMy0yNS42czU5LjczMywxMy4xOTMsNTkuNzMzLDI1LjZWMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM0OS44NjcsMTE5LjQ2N2MtMTEuMzc1LDAtMjIuMDQyLDEuMDc1LTMxLjY5MywzLjE5MWMtMy45MTcsMC44NjItNi43MDcsNC4zMjYtNi43MDcsOC4zMzcNCgkJCWMwLDQuMDExLDIuNzksNy40NzUsNi43MDcsOC4zMzdjMTkuMjUxLDQuMjE1LDMxLjY5MywxMy4xNjcsMzEuNjkzLDIyLjgwMXY4LjUzM0gzMzIuOGMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjg1LjMzMw0KCQkJYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzNjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi03Ni44aDE3LjA2N2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTE3LjA2Nw0KCQkJQzQyNi42NjcsMTM2LjYxLDM5NS44MDIsMTE5LjQ2NywzNDkuODY3LDExOS40Njd6IE00MDkuNiwxNzAuNjY3aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1YyNTZoLTQyLjY2N3YtNjguMjY3DQoJCQlIMzU4LjRjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjdjMC05LjgxMy00LjczNi0xOC41NzctMTMuMzgtMjUuNTU3YzM2LjQzNywwLjgwMiw1Ni4wNDcsMTMuNTQyLDU2LjA0NywyNS41NTcNCgkJCVYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDA5LjYsMTE5LjQ2N2MtMTEuMzc1LDAtMjIuMDQyLDEuMDc1LTMxLjY5MywzLjE5MWMtMy45MTcsMC44NjItNi43MDcsNC4zMjYtNi43MDcsOC4zMzcNCgkJCWMwLDQuMDExLDIuNzksNy40NzUsNi43MDcsOC4zMzdjMTkuMjUxLDQuMjE1LDMxLjY5MywxMy4xNjcsMzEuNjkzLDIyLjgwMXY4LjUzM2gtMTcuMDY3Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2ODUuMzMzDQoJCQljMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDU5LjczM2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhoMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDNDg2LjQsMTM2LjYxLDQ1NS41MzUsMTE5LjQ2Nyw0MDkuNiwxMTkuNDY3eiBNNDY5LjMzMywxNzAuNjY3aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1YyNTZoLTQyLjY2N3YtNjguMjY3DQoJCQloMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3YzAtOS44MTMtNC43MzYtMTguNTc3LTEzLjM4LTI1LjU1N2MzNi40MzcsMC44MDIsNTYuMDQ3LDEzLjU0Miw1Ni4wNDcsMjUuNTU3DQoJCQlWMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTI5MC4xMzMsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTMzA0LjI0Nyw4NS4zMzMsMjkwLjEzMyw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTguNCwzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzM2Ni45MzMsMzcuOTU2LDM2My4xMSwzNC4xMzMsMzU4LjQsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzU4LjQsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTMzcyLjUxNCw4NS4zMzMsMzU4LjQsODUuMzMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI2LjY2NywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzQzNS4yLDM3Ljk1Niw0MzEuMzc3LDM0LjEzMyw0MjYuNjY3LDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQyNi42NjcsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTNDQwLjc4MSw4NS4zMzMsNDI2LjY2Nyw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00ODYuNCwzMjQuMjY3SDE3OS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MzQuMTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMDcuMg0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1YzMzIuOEM0OTQuOTMzLDMyOC4wOSw0OTEuMTEsMzI0LjI2Nyw0ODYuNCwzMjQuMjY3eiBNNDc3Ljg2NywzNTguNEgxODcuNzMzdi0xNy4wNjdoMjkwLjEzMw0KCQkJVjM1OC40eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY5LjMzMywzOTIuNTMzaC0yNTZjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y2OC4yNjdjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDI1Ng0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNjguMjY3QzQ3Ny44NjcsMzk2LjM1Niw0NzQuMDQ0LDM5Mi41MzMsNDY5LjMzMywzOTIuNTMzeiBNNDYwLjgsNDYwLjhIMjIxLjg2N3YtNTEuMkg0NjAuOA0KCQkJVjQ2MC44eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",t0e="PHN2ZyB2aWV3Qm94PSIwIDAgMzAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTk0LjgzNiA1OGgtMTE5LjMyOGMtMjQuNDQ1IDAtNDQuMzM2IDE5Ljg4OS00NC4zMzYgNDQuMzM2djExOS4zMjhjMCAyNC40NDcgMTkuODkxIDQ0LjMzNiA0NC4zMzYgNDQuMzM2aDExOS4zMjhjMjQuNDQ1IDAgNDQuMzM2LTE5Ljg4OSA0NC4zMzYtNDQuMzM2di0xMTkuMzI4YzAtMjQuNDQ3LTE5Ljg5MS00NC4zMzYtNDQuMzM2LTQ0LjMzNnptMzYuMzM2IDE2My42NjRjMCAyMC4wMzUtMTYuMzAxIDM2LjMzNi0zNi4zMzYgMzYuMzM2aC0xMTkuMzI4Yy0yMC4wMzUgMC0zNi4zMzYtMTYuMzAxLTM2LjMzNi0zNi4zMzZ2LTExOS4zMjhjMC0yMC4wMzUgMTYuMzAxLTM2LjMzNiAzNi4zMzYtMzYuMzM2aDExOS4zMjhjMjAuMDM1IDAgMzYuMzM2IDE2LjMwMSAzNi4zMzYgMzYuMzM2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM1LjE3MiA3NGMtNDkuNjI1IDAtOTAgNDAuMzczLTkwIDkwczQwLjM3NSA5MCA5MCA5MCA5MC00MC4zNzMgOTAtOTAtNDAuMzc1LTkwLTkwLTkwem0wIDE3MmMtNDUuMjE1IDAtODItMzYuNzg1LTgyLTgyczM2Ljc4NS04MiA4Mi04MiA4MiAzNi43ODUgODIgODItMzYuNzg1IDgyLTgyIDgyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM1LjE3MiA5MGMtNDAuODA1IDAtNzQgMzMuMTk1LTc0IDc0czMzLjE5NSA3NCA3NCA3NCA3NC0zMy4xOTUgNzQtNzQtMzMuMTk1LTc0LTc0LTc0em0wIDE0MGMtMzYuMzkxIDAtNjYtMjkuNjA3LTY2LTY2czI5LjYwOS02NiA2Ni02NiA2NiAyOS42MDcgNjYgNjYtMjkuNjEgNjYtNjYgNjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im03OS4xNzIgMTM4djMyYzAgMi4yMDkgMS43ODkgNCA0IDRoMTA0YzIuMjExIDAgNC0xLjc5MSA0LTR2LTMyYzAtMi4yMDktMS43ODktNC00LTRoLTEwNGMtMi4yMTEgMC00IDEuNzkxLTQgNHptOCA0aDk2djI0aC05NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExNy4xNzIgMTI4LjUzYzIuNTAxIDAgNC41My0yLjAyOCA0LjUzLTQuNTNzLTIuMDI4LTQuNTMtNC41My00LjUzLTQuNTMgMi4wMjgtNC41MyA0LjUzYzAgMi41MDEgMi4wMjggNC41MyA0LjUzIDQuNTN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjkuMTcyIDEyOC41M2MyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzcy0yLjAyOC00LjUzLTQuNTMtNC41My00LjUzIDIuMDI4LTQuNTMgNC41M2MwIDIuNTAxIDIuMDI4IDQuNTMgNC41MyA0LjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ1LjE3MiAxNTEuNDdjLTIuNTAyIDAtNC41MyAyLjAyOC00LjUzIDQuNTMgMCAyLjUwMSAyLjAyOCA0LjUzIDQuNTMgNC41MyAyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzLS4wMDEtMi41MDItMi4wMjktNC41My00LjUzLTQuNTN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDEuMTcyIDEyOC41M2MyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzcy0yLjAyOC00LjUzLTQuNTMtNC41My00LjUzIDIuMDI4LTQuNTMgNC41M2MwIDIuNTAxIDIuMDI4IDQuNTMgNC41MyA0LjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUzLjE3MiAxMjguNTNjMi41MDEgMCA0LjUzLTIuMDI4IDQuNTMtNC41M3MtMi4wMjgtNC41My00LjUzLTQuNTMtNC41MyAyLjAyOC00LjUzIDQuNTNjMCAyLjUwMSAyLjAyOCA0LjUzIDQuNTMgNC41M3oiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iMTk5LjE3MiIgY3k9IjM4IiByPSI0Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzkuMTcyIDQ2Yy02LjYxNyAwLTEyIDUuMzgzLTEyIDEyczUuMzgzIDEyIDEyIDEyIDEyLTUuMzgzIDEyLTEyLTUuMzgzLTEyLTEyLTEyem0wIDE2Yy0yLjIwNyAwLTQtMS43OTUtNC00czEuNzkzLTQgNC00IDQgMS43OTUgNCA0LTEuNzkzIDQtNCA0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY0LjgyOCAxMTAgMi44MjgtMi44MjhjMS41NjItMS41NjIgMS41NjItNC4wOTQgMC01LjY1NnMtNC4wOTQtMS41NjItNS42NTYgMGwtMi44MjggMi44MjgtMi44MjgtMi44MjhjLTEuNTYyLTEuNTYyLTQuMDk0LTEuNTYyLTUuNjU2IDBzLTEuNTYyIDQuMDk0IDAgNS42NTZsMi44MjggMi44MjgtMi44MjggMi44MjhjLTEuNTYyIDEuNTYyLTEuNTYyIDQuMDk0IDAgNS42NTYuNzgxLjc4MSAxLjgwNSAxLjE3MiAyLjgyOCAxLjE3MnMyLjA0Ny0uMzkxIDIuODI4LTEuMTcybDIuODI4LTIuODI4IDIuODI4IDIuODI4Yy43ODEuNzgxIDEuODA1IDEuMTcyIDIuODI4IDEuMTcyczIuMDQ3LS4zOTEgMi44MjgtMS4xNzJjMS41NjItMS41NjIgMS41NjItNC4wOTQgMC01LjY1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzOS4xNzIgMTk0aC00LjkzNGw1Ljg1OS05Ljc2OGMxLjEzNy0xLjg5NS41MjMtNC4zNTItMS4zNzEtNS40ODgtMS44OTgtMS4xMzctNC4zNTItLjUyMS01LjQ4OCAxLjM3MWwtOS40OTYgMTUuODI2Yy0uNzQyIDEuMjM2LS43NjIgMi43NzUtLjA1MSA0LjAyOXMyLjAzOSAyLjAyOSAzLjQ4IDIuMDI5aDUuNTI3bC01LjEwNSAxMC4yMTFjLS45ODggMS45NzctLjE4OCA0LjM3OSAxLjc4OSA1LjM2Ny41NzQuMjg3IDEuMTg0LjQyMiAxLjc4NS40MjIgMS40NjkgMCAyLjg3OS0uODA5IDMuNTgyLTIuMjExbDgtMTZjLjYyMS0xLjI0LjU1NS0yLjcxMy0uMTc2LTMuODkzLS43MjktMS4xNzYtMi4wMTQtMS44OTUtMy40MDEtMS44OTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05NS4xNzIgMTQ2Yy0yLjIxMSAwLTQgMS43OTEtNCA0djhjMCAyLjIwOSAxLjc4OSA0IDQgNHM0LTEuNzkxIDQtNHYtOGMwLTIuMjA5LTEuNzg5LTQtNC00eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTA3LjE3MiAxNDZjLTIuMjExIDAtNCAxLjc5MS00IDR2OGMwIDIuMjA5IDEuNzg5IDQgNCA0czQtMS43OTEgNC00di04YzAtMi4yMDktMS43ODktNC00LTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTkuMTcyIDE0NmMtMi4yMTEgMC00IDEuNzkxLTQgNHY4YzAgMi4yMDkgMS43ODkgNCA0IDRzNC0xLjc5MSA0LTR2LThjMC0yLjIwOS0xLjc4OS00LTQtNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzMS4xNzIgMTQ2Yy0yLjIxMSAwLTQgMS43OTEtNCA0djhjMCAyLjIwOSAxLjc4OSA0IDQgNHM0LTEuNzkxIDQtNHYtOGMwLTIuMjA5LTEuNzg5LTQtNC00eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYzLjE3MiAxNDZjLTIuMjExIDAtNCAxLjc5MS00IDR2OGMwIDIuMjA5IDEuNzg5IDQgNCA0czQtMS43OTEgNC00di04YzAtMi4yMDktMS43ODktNC00LTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzUuMTcyIDE0NmMtMi4yMTEgMC00IDEuNzkxLTQgNHY4YzAgMi4yMDkgMS43ODkgNCA0IDRzNC0xLjc5MSA0LTR2LThjMC0yLjIwOS0xLjc4OS00LTQtNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",s0e="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMi41IDUxMi41IiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNC43NSw0MTguNWMtNC4xNDMsMC03LjUsMy4zNTgtNy41LDcuNXY3OC41YzAsOS42NzMsMTUsOS42NzMsMTUsMFY0MjZDNTEyLjI1LDQyMS44NTgsNTA4Ljg5Myw0MTguNSw1MDQuNzUsNDE4LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDQuNzUsMjQ5LjM1NWgtNTguODk0di0yNy4wNDNoMTguMDExYzEwLjk2NCwwLDE5Ljg4My04LjkxOSwxOS44ODMtMTkuODgzVjE5Ljg4NEM0ODMuNzUsOC45Miw0NzQuODMxLDAsNDYzLjg2NywwICAgSDE4NC4wNTljLTEwLjk2NCwwLTE5Ljg4Myw4LjkyLTE5Ljg4MywxOS44ODR2MjYuOTI5YzAsOS42NzMsMTUsOS42NzMsMTUsMFYxOS44ODRjMC0yLjY5MywyLjE5LTQuODg0LDQuODgzLTQuODg0aDI3OS44MDkgICBjMi42OTIsMCw0Ljg4MywyLjE5MSw0Ljg4Myw0Ljg4NHYxNDUuNDI5aC0yMi44OTRWODUuNDA2YzAtMi40NzUtMS4yMjEtNC43OS0zLjI2My02LjE4OGMtMi4wNDEtMS4zOTgtNC42NDEtMS42OTktNi45NDktMC44MDUgICBjLTEuOTYyLDAuNzYxLTQzLjM0LDE3LjY1OS01Mi4xNDYsODYuODk5SDE3OS4xNzZ2LTc5LjVjMC05LjY3My0xNS05LjY3My0xNSwwdjExNi42MTdjMCwxMC45NjQsOC45MTksMTkuODgzLDE5Ljg4MywxOS44ODMgICBoMTAwLjc0NnYyNy4wNDNIMTE0LjUxNmMxNi42MTItMTYuNTk0LDE4LjIzNC00Mi44NzEsMTguMjM0LTY0Ljk0OWMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41aC00MC41di0xNC4xNTkgICBjMjQuMDYsNS4xMTQsNTAuMjg4LTE0LjYxNiw0OS45NjctMzkuNjQ1Yy0wLjA0My0zLjM1Mi0wLjQ1OS02Ljc1OC0zLjU1Ni04LjgwM2MtMTQuMjQ2LTkuNDAzLTMzLjg2Ni01LjQ4NS00Ni40MTEsNC43ODN2LTEzLjUyOSAgIGMyMS40MzMtMTQuNzkzLDIzLjAyNS00OS42MjksMi40MjktNjUuODg5Yy0yLjA3NS0xLjYzOC00LjM3MS0zLjE5Ny02LjgzNC00LjIwMWMtMTAuNTcxLTQuMzE2LTIyLjE5MSwxNC41MTMtMjQuNzEsMjEuNzgxICAgYy01Ljk1MSwxNy4xNzQtMC41NjgsMzYuOTI2LDE0LjExNCw0Ny44MjR2MTMuOTMxYy05LjYyNy03LjgzMy0yMi4yLTExLjY5Ni0zNC40ODMtOS4yMzZjLTUuMDc2LDEuMDE3LTEzLjk3MSwzLjMxNC0xNS4wNzgsOS40NjcgICBjLTQuNzU4LDI2LjQ3NiwyNS4yMzUsNDguNjQzLDQ5LjU2Miw0My41Mzl2MTQuMTM3aC00My41Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41YzAsMjIuMDQ3LDEuMTk2LDQ4LjM1NywxNy44MDYsNjQuOTQ5SDcuNzUgICBjLTQuMTQzLDAtNy41LDMuMzU4LTcuNSw3LjVWNTA0LjVjMCw5LjY3MywxNSw5LjY3MywxNSwwdi0zNWgxMzUuNXYzNWMwLDkuNjczLDE1LDkuNjczLDE1LDB2LTE5MWgyNjUuMjE1ICAgYzAuMDM5LDIuNjEzLDAuMjg5LDE2LjY4OCwwLjMyLDIwLjkwNkgzMDQuMzU2Yy0yOS42NTEsMC01MS42Miw3LjcxOC02NS4yOTgsMjIuOTM5Yy0xNi40MjIsMTguMjc0LTE0LjI2LDQwLjQyNi0xNC4xNTksNDEuMzU5ICAgYzAuNDA4LDMuODExLDMuNjI0LDYuNzAxLDcuNDU3LDYuNzAxaDk2Ljg5NHYxMy41aC0yOS41Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoMjkuNVY0OTdoLTk2Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoMTAwLjgyNSAgIGMwLjgzMiwwLjMxOCwxLjczMSwwLjUsMi42NzUsMC41czEuODQzLTAuMTgyLDIuNjc1LTAuNUg0NDAuMjVjOS42NzMsMCw5LjY3My0xNSwwLTE1aC05NnYtOTEuNTk0aDUwLjEwNiAgIGMxNy4yMTgsMCwyOS42NjQtNC4xNTEsMzguMDUyLTEyLjY5YzE0LjY5OS0xNC45NjUsMTQuMjUxLTQwLjAyMiwxMy42ODQtNzEuNzQ3Yy0wLjA0NC0yLjQ1NC0wLjA4Ny00Ljk1LTAuMTI1LTcuNDdoNTEuMjgzVjM4NCAgIGMwLDkuNjczLDE1LDkuNjczLDE1LDBWMjU2Ljg1NUM1MTIuMjUsMjUyLjcxMyw1MDguODkzLDI0OS4zNTUsNTA0Ljc1LDI0OS4zNTV6IE05Ny4yNzYsMTI4LjQ5NiAgIGM5LjY1Mi02LjEyNCwxOC4wNDktNC42ODEsMjIuNDIxLTMuMTM3Yy0xLjMyLDE1LjU0Ny0yMC4yMjEsMjYuODYtMzQuNjY4LDIxLjk2M0M4NS42MzUsMTQyLjUxMSw4OC4wNzcsMTM0LjMzMiw5Ny4yNzYsMTI4LjQ5NnogICAgTTQ3LjQyNCwxNDQuMDk3Yy02LjM3Mi00LjA0My0xMS43OTItMTEuMDA1LTEyLjQ5My0xOC43NDJjMTUuMDItNS4yOCwzMi42ODMsNi40MTgsMzQuNjQsMjEuOTY3ICAgQzYyLjI4NiwxNDkuNzkyLDUzLjgxLDE0OC4xNDgsNDcuNDI0LDE0NC4wOTd6IE03Ny42MzcsNTEuMTY5YzEyLjU2LDkuNTU0LDExLjk5NywzMS4zNTktMC4wNDQsNDEuMDU0ICAgYy0zLjcxNS0zLjA1NS05LjMxOS05LjQ4MS05LjMxOS0yMC40NDFDNjguMjczLDYwLjM1Miw3My45OTEsNTQuMDM1LDc3LjYzNyw1MS4xNjl6IE0zMy44NTYsMTkxLjkwNmg4My43ODEgICBjLTEuMjcsNDAuNTE1LTEzLjM2Miw1Ni41LTQxLjg4OCw1Ni41QzQ2LjgzMiwyNDguNDA3LDM1LjA3MiwyMzIuOTM2LDMzLjg1NiwxOTEuOTA2eiBNNDIxLjcwNywzODIuMjA1ICAgYy01LjQyMSw1LjUxOS0xNC4zNjcsOC4yMDEtMjcuMzUxLDguMjAxSDI0MC4wMTNjMC42OTQtNS45ODgsMy4wMDYtMTUuMDI2LDEwLjIwMy0yMy4wMzUgICBjMTAuNzEyLTExLjkyMSwyOC45MjctMTcuOTY1LDU0LjE0MS0xNy45NjVoMTI2LjczNkM0MzAuNDczLDM2NC4xMDUsNDI4LjI1MSwzNzUuNTQzLDQyMS43MDcsMzgyLjIwNXogTTQ2OC43NSwxODAuMzEzdjIyLjExNyAgIGMwLDIuNjkzLTIuMTksNC44ODMtNC44ODMsNC44ODNoLTE4LjAxMXYtMjdINDY4Ljc1eiBNNDE5LjEyNiwxMTEuMzU4YzQuMDg0LTUuMzk1LDguMTktOS40MSwxMS43My0xMi4zMjJ2MTg3Ljg2MyAgIGMtMy41MjgtMy4wMjMtNy42MDQtNy4xNDYtMTEuNjU5LTEyLjYyMmMtMTQuNjE1LTE5LjczOS0yMi4zNDEtNDguMDQ5LTIyLjM0MS04MS44NzIgICBDMzk2Ljg1NiwxNTguNjMyLDQwNC41NTgsMTMwLjYwNiw0MTkuMTI2LDExMS4zNTh6IE0zODMuODczLDIyMi4zMTNjMS40MzIsMTAuMDk1LDMuNTUzLDE5LjA3Nyw2LjEzOCwyNy4wNDNoLTI2Ljg5di0yNy4wNDMgICBIMzgzLjg3M3ogTTE3OS4xNzYsMjAyLjQyOXYtMjIuMTE3aDIwMi45OTNjLTAuNDY5LDguOTkyLTAuNDE1LDE4LjAxNSwwLjE2OSwyN0gxODQuMDU5ICAgQzE4MS4zNjYsMjA3LjMxMywxNzkuMTc2LDIwNS4xMjIsMTc5LjE3NiwyMDIuNDI5eiBNMjk5LjgwNSwyMjIuMzEzaDQ4LjMxNnYyNy4wNDNoLTQ4LjMxNlYyMjIuMzEzeiBNMzk1LjkwMSwyNjQuMzU1ICAgYzcuODE1LDE2LjcsMTcuNTE2LDI3LjQ4OCwyNS4zNjUsMzQuMTQ1SDE1LjI1di0zNC4xNDVIMzk1LjkwMXogTTE1LjI1LDQ1NC41di02M2gxMzUuNXY2M0gxNS4yNXogTTE1MC43NSwzNzYuNUgxNS4yNXYtNjNoMTM1LjUgICBWMzc2LjV6IE00NDUuODU2LDI5OC41di0zNC4xNDVoNTEuMzk0VjI5OC41SDQ0NS44NTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01NC43NSwzNTIuNWg1N2M5LjY3MywwLDkuNjczLTE1LDAtMTVoLTU3QzQ1LjA3NywzMzcuNSw0NS4wNzcsMzUyLjUsNTQuNzUsMzUyLjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTEuNzUsNDE1LjVoLTU3Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoNTdDMTIxLjQyMyw0MzAuNSwxMjEuNDIzLDQxNS41LDExMS43NSw0MTUuNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",i0e={Anteroom:dNe,Attic:zNe,Balcony:hNe,Barn:INe,Basement:wNe,Bathroom:CNe,Bedroom:ANe,"Boiler Room":"PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSItMyAwIDQ4MCA0ODAiIHdpZHRoPSI0ODBwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMjM0Ljk2ODc1IDY0Yy0xMy4yNTM5MDYgMC0yNCAxMC43NDYwOTQtMjQgMjRzMTAuNzQ2MDk0IDI0IDI0IDI0IDI0LTEwLjc0NjA5NCAyNC0yNC0xMC43NDYwOTQtMjQtMjQtMjR6bTAgMzJjLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDgtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzA2Ljk2ODc1IDE2MGgtMTQ0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djY0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoMTQ0YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LTY0YzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS04IDY0aC0xMjh2LTQ4aDEyOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xODYuOTY4NzUgMTkyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMTguOTY4NzUgMTkyaDMydjE2aC0zMnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjYuOTY4NzUgMTkyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzguOTY4NzUgNzJ2MzJoMTZ2LTI0aDE2di0xNmgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDY2Ljk2ODc1IDBoLTMyYy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djE5MmMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4aC01NnYtNTZoMjRjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNDhjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMjR2LTE2Yy0uMDI3MzQ0LTIyLjA4MjAzMS0xNy45MjE4NzUtMzkuOTcyNjU2LTQwLTQwaC0xNnYtMTZoLTE2djE2aC0xNy43NjE3MTlsLTYuNDgwNDY5LTI1LjkzNzVjLS44ODY3MTgtMy41NjI1LTQuMDg1OTM3LTYuMDYyNS03Ljc1NzgxMi02LjA2MjVoLTQ4Yy0zLjY3MTg3NSAwLTYuODcxMDk0IDIuNS03Ljc2MTcxOSA2LjA2MjVsLTYuNDgwNDY5IDI1LjkzNzVoLTE3Ljc1NzgxMnYtMTZoLTE2djE2aC0xNmMtMjIuMDgyMDMxLjAyNzM0NC0zOS45NzI2NTYgMTcuOTE3OTY5LTQwIDQwdjU2aC0yNGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHY2NGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDI0djIyNGgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2MzJjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg5NmM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0zMmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04aC0yNHYtNDEuNzEwOTM4YzEyLjM3MTA5NCA2LjM3NSAyNi4wODIwMzEgOS43MDMxMjYgNDAgOS43MTA5MzhoOHYyNGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDQ4YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LTI0aDhjMTMuOTE0MDYyLS4wMDc4MTIgMjcuNjI4OTA2LTMuMzM1OTM4IDQwLTkuNzEwOTM4djQxLjcxMDkzOGgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2MzJjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg5NmM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0zMmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04aC0yNHYtMTc2aDU2YzMwLjkxMDE1Ni0uMDM5MDYyIDU1Ljk2MDkzOC0yNS4wODk4NDQgNTYtNTZ2LTE5MmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04em0tODggMTA0djMyaC0xNnYtMzJ6bS0xNjEuNzUzOTA2LTg4aDM1LjUwMzkwNmw0IDE2aC00My41MDM5MDZ6bS05NC4yNDYwOTQgNTZjMC0xMy4yNTM5MDYgMTAuNzQ2MDk0LTI0IDI0LTI0aDE3NmMxMy4yNTM5MDYgMCAyNCAxMC43NDYwOTQgMjQgMjR2NTZoLTIyNHptLTMyIDEyMHYtNDhoMTZ2NDh6bTgwIDI3MmgtODB2LTE2aDgwem0tMzItMzJoLTE2di02OS41NTg1OTRjNC41MzUxNTYgNi40ODQzNzUgOS45MTQwNjIgMTIuMzMyMDMyIDE2IDE3LjM5MDYyNXptMTEyLTE2aC0zMnYtMTZoMzJ6bTEyOCA0OGgtODB2LTE2aDgwem0tMzItMzJoLTE2di01Mi4xNjc5NjljNi4wODIwMzEtNS4wNTg1OTMgMTEuNDY0ODQ0LTEwLjkwNjI1IDE2LTE3LjM5MDYyNXptMC0xMjBjLS4wNDI5NjkgMzkuNzQ2MDk0LTMyLjI1MzkwNiA3MS45NTcwMzEtNzIgNzJoLTgwYy0zOS43NDYwOTQtLjA0Mjk2OS03MS45NTcwMzEtMzIuMjUzOTA2LTcyLTcydi0xNjhoMjI0em0xMTItMTEyYy0uMDI3MzQ0IDIyLjA4MjAzMS0xNy45MjE4NzUgMzkuOTcyNjU2LTQwIDQwaC01NnYtMTZoNTZjMTMuMjUzOTA2IDAgMjQtMTAuNzQ2MDk0IDI0LTI0di0xODRoMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNTYuNjI1IDUzLjY1NjI1IDEwLjM0Mzc1LTEwLjM0Mzc1IDE4LjM0Mzc1IDE4LjM0Mzc1IDExLjMxMjUtMTEuMzEyNS0yNC0yNGMtMy4xMjUtMy4xMjEwOTQtOC4xODc1LTMuMTIxMDk0LTExLjMxMjUgMGwtMTAuOTM3NSAxMC45Mzc1LTM0LjM5ODQzOC0yNy41MjczNDQtMTAuMDA3ODEyIDEyLjQ5MjE4OCA0MCAzMmMzLjE4MzU5NCAyLjU1MDc4MSA3Ljc3MzQzOCAyLjI5Mjk2OCAxMC42NTYyNS0uNTg5ODQ0em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTAgODcuNDMzNTk0IDQwIDE2YzIuOTcyNjU2IDEuMTgzNTk0IDYuMzYzMjgxLjQ4NDM3NSA4LjYyNS0xLjc3NzM0NGwxMS45MTc5NjktMTEuOTIxODc1IDI2Ljg0NzY1NiAxMy40NjQ4NDQgNy4xNTIzNDQtMTQuMzIwMzEzLTMyLTE2Yy0zLjA3ODEyNS0xLjUzNTE1Ni02Ljc5Njg3NS0uOTI5Njg3LTkuMjMwNDY5IDEuNTAzOTA2bC0xMi4yNzM0MzggMTIuMjI2NTYzLTM1LjEwMTU2Mi0xNC4wNDI5Njl6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Carport:mNe,Cellar:pNe,Chamber:ONe,Corridor:ENe,"Dining Area":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==","Dining Room":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Dining:_Ne,"Dressing Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Ny4wMDQgMjc2LjE2OWMwLTQuMTM5IDMuMzc0LTcuNTEyIDcuNTEyLTcuNTEyczcuNDgzIDMuMzczIDcuNDgzIDcuNTEydjEzNy4zNCAzOS45OTdjMCA0LjEzOS0zLjM0NSA3LjQ4My03LjQ4MyA3LjQ4M2gtNDk3LjAwNGMtNC4xMzkgMC03LjUxMi0zLjM0NS03LjUxMi03LjQ4MyAwLTEyNC43NTQgMC0yNDkuNTM2IDAtMzc0LjI5MSAwLTcuNzY3IDMuMTc1LTE0LjgyNSA4LjI3Ny0xOS45MjggNS4xMDMtNS4xMDMgMTIuMTYxLTguMjc3IDE5LjkyOC04LjI3N2gxMjQuMjQ0YzcuOTA5IDAgMTUuMzY0IDMuMzE2IDIwLjcyMiA5LjA5OSA1LjM1Ny01Ljc4MyAxMi44MTItOS4wOTkgMjAuNzIyLTkuMDk5aDEyNC4yNDNjNy44ODEgMCAxNS4zNjQgMy4zMTYgMjAuNjkzIDkuMDk5IDUuMzU4LTUuNzgzIDEyLjgxMy05LjA5OSAyMC43MjItOS4wOTloMTI0LjI0NGM3Ljc2NyAwIDE0LjgyNiAzLjE3NSAxOS45MjggOC4yNzcgNS4xMDIgNS4xMDMgOC4yNzcgMTIuMTYxIDguMjc3IDE5LjkyOHYyNS42MjUgMTM3LjM0YzAgNC4xMzktMy4zNDUgNy41MTItNy40ODMgNy41MTItNC4xMzkgMC03LjUxMi0zLjM3My03LjUxMi03LjUxMnYtMTI5Ljg1NWgtNjcuODM1djEyLjkyNmw0Ni44MyAyMy44MzljNC4xOTUgMi4xMjYgNy4xMTUgNS43NTUgOC40NDcgOS44OTQgMS4zNiA0LjEzOSAxLjEzNCA4Ljc4Ny0uOTkyIDEyLjk1NC0xLjQ0NiAyLjgzNS0zLjY1NyA1LjE1OS02LjI5MyA2Ljc3NS0yLjY2NCAxLjY0NC01LjcyNiAyLjUyMy04Ljg3MiAyLjUyM2gtMy4zNDV2OTUuNjEzYzAgNC4xMzktMy4zNDUgNy40ODQtNy40ODQgNy40ODRoLTcxLjE1Yy00LjEzOSAwLTcuNDgzLTMuMzQ1LTcuNDgzLTcuNDg0di0zNC41NTRjMC00LjE2NyAzLjM0NS03LjUxMiA3LjQ4My03LjUxMiA0LjEzOSAwIDcuNTEyIDMuMzQ1IDcuNTEyIDcuNTEydjI3LjA0M2g1Ni4xMjd2LTg4LjEwMmgtNTYuMTI3djI3LjA3MWMwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEycy03LjQ4My0zLjM3My03LjQ4My03LjUxMnYtMjcuMDcxaC0zLjM0NWMtNC43MDYgMC04Ljk1Ny0xLjg5OS0xMi4wMTktNC45ODktMy4wOS0zLjA2MS00Ljk4OS03LjMxMy00Ljk4OS0xMi4wMTkgMC0zLjM0NS45OTItNi41MiAyLjY5My05LjE1NiAxLjcyOS0yLjY2NCA0LjEzOS00LjgxOSA2Ljk3NC02LjE4bDQ2LjAzNS0yMy40NDN2LTEzLjEyNGgtNjcuODM0djI5My43MDFoMTUwLjY2M3YtMTI5Ljg1N3ptLTczLjg0My0xMzcuMTk5Yy0uODIyLS41MS0xLjY3Mi0uNTEtMi40OTUgMGwtNDUuNzIzIDIzLjMwMWMtLjkwNy4zNC0xLjQ3NC45MzYtMS40NzQgMS45NTYgMCAxLjEwNS45MDcgMi4wMTMgMi4wMTMgMi4wMTNoOTIuODA3Yy43OTMgMCAxLjQ0Ni0uMzk3IDEuNzg2LTEuMTA1LjUxLS45OTIuMTQyLTIuMTgzLS44NzgtMi42OTNsLTE1LjMzNi03LjgyM2MtOS4wNDMtNC41OTMtMTguMDU3LTkuMTU4LTMwLjctMTUuNjQ5em0tMTY1LjgtLjA4NWMtLjcwOS0uNDI1LTEuNDc0LS40MjUtMi4yNCAwbC00NS44NjUgMjMuMzg2Yy0uODc5LjM0LTEuNDQ2LjkzNi0xLjQ0NiAxLjk1NiAwIDEuMTA1LjkwNyAyLjAxMyAyLjAxMyAyLjAxM2g5Mi44MDdjLjc5NCAwIDEuNDQ2LS4zOTcgMS43ODYtMS4xMDUuNTEtLjk5Mi4xNDItMi4xODMtLjg3OS0yLjY5My0xNS4zOTItNy44MjQtMzAuODEyLTE1LjY0OC00Ni4xNzYtMjMuNTU3em0tMjExLjY2Ni0yNi41NmMtNC4xMzkgMC03LjUxMi0zLjM0NS03LjUxMi03LjQ4NHMzLjM3My03LjUxMiA3LjUxMi03LjUxMmg4OS4yOTJjNC4xMzggMCA3LjUxMiAzLjM3NCA3LjUxMiA3LjUxMiAwIDQuMTM5LTMuMzczIDcuNDg0LTcuNTEyIDcuNDg0em0wIDEwMS45MzRjLTQuMTM5IDAtNy41MTItMy4zNzMtNy41MTItNy41MTJzMy4zNzMtNy40ODMgNy41MTItNy40ODNoODkuMjkyYzQuMTM4IDAgNy41MTIgMy4zNDUgNy41MTIgNy40ODMgMCA0LjEzOS0zLjM3MyA3LjUxMi03LjUxMiA3LjUxMnptMC0zMy45ODhjLTQuMTM5IDAtNy41MTItMy4zNDUtNy41MTItNy40ODNzMy4zNzMtNy41MTIgNy41MTItNy41MTJoODkuMjkyYzQuMTM4IDAgNy41MTIgMy4zNzMgNy41MTIgNy41MTJzLTMuMzczIDcuNDgzLTcuNTEyIDcuNDgzem0wLTMzLjk1OWMtNC4xMzkgMC03LjUxMi0zLjM3My03LjUxMi03LjUxMnMzLjM3My03LjQ4MyA3LjUxMi03LjQ4M2g4OS4yOTJjNC4xMzggMCA3LjUxMiAzLjM0NSA3LjUxMiA3LjQ4MyAwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEyem0yMDIuODIyLTIwLjg2M3YtMTMuMTI0aC02Ny44MzR2MTI5Ljg1N2MwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEycy03LjUxMi0zLjM3My03LjUxMi03LjUxMnYtMTYyLjk2N2MwLTMuNjI4LTEuNDc0LTYuOTE3LTMuODgzLTkuMzI2LTIuMzgxLTIuMzgxLTUuNjk4LTMuODg0LTkuMzI2LTMuODg0aC0xMjQuMjQ0Yy0zLjYyOCAwLTYuOTE3IDEuNTAyLTkuMzI3IDMuODg0LTIuMzgxIDIuNDA5LTMuODgzIDUuNjk3LTMuODgzIDkuMzI2djE5Mi4zNjFoMTUuMzA4YzYuMDk0IDAgMTEuNTk0IDIuNDY2IDE1LjU5IDYuNDY0IDMuOTk3IDMuOTk3IDYuNDkyIDkuNTI1IDYuNDkyIDE1LjU5djIzLjMwMWMwIDYuMDY3LTIuNDk1IDExLjU5NC02LjQ5MiAxNS41OTFzLTkuNDk2IDYuNDYzLTE1LjU5IDYuNDYzaC0xNS4zMDh2MTA3LjAwOWgxNTAuNjYzdi0xNjkuODI1YzAtNC4xMzkgMy4zNzQtNy41MTIgNy41MTItNy41MTJzNy41MTIgMy4zNzMgNy41MTIgNy41MTJ2MTI5Ljg1NmgxNTAuNjYzdi0yOTMuN2gtNjcuODM0djEyLjkyNmw0Ni42MyAyMy43MjZjNC4xNjcgMi4xMjYgNy4yIDUuNTI4IDguNjQ2IDEwLjAwNyAyLjQ2NiA3LjU2OC0uNTM5IDE1LjU5LTcuMjg1IDE5LjcyOS0yLjY2NCAxLjY0NC01Ljc1NCAyLjUyMy04Ljg3MiAyLjUyM2gtOTIuODA3Yy00LjcwNiAwLTguOTU4LTEuODk5LTEyLjA0Ny00Ljk4OS0zLjA2MS0zLjA2MS00Ljk2LTcuMzEzLTQuOTYtMTIuMDE5IDAtMy4zNDUuOTkyLTYuNTIgMi42OTMtOS4xNTYgMS43MDEtMi42NjQgNC4xMS00LjgxOSA2Ljk3My02LjE4em0tMjMzLjUyMSAxNzIuMzJoNi4wOTRjNC4xMzkgMCA3LjUxMiAzLjM3MyA3LjUxMiA3LjUxMnMtMy4zNzMgNy41MTItNy41MTIgNy41MTJoLTYuMDk0djExLjE5OGgxNS4zMDhjMS45NTYgMCAzLjcxMy0uNzk0IDQuOTg5LTIuMDY5IDEuMjc2LTEuMzA1IDIuMDk4LTMuMDYxIDIuMDk4LTQuOTl2LTIzLjMwMmMwLTEuOTI4LS44MjItMy42ODUtMi4wOTgtNC45ODktMS4yNzUtMS4yNzYtMy4wMzMtMi4wNjktNC45ODktMi4wNjloLTE1LjMwOHptMzMxLjM0NS0yMTguNTU0djE4LjExM2gxNTAuNjYzdi0xOC4xMTNjMC0zLjYyOC0xLjQ3NC02LjkxNy0zLjg4My05LjMyNi0yLjQwOS0yLjM4MS01LjY5OC0zLjg4NC05LjMyNy0zLjg4NGgtMTI0LjI0M2MtMy42MjggMC02LjkxNyAxLjUwMi05LjMyNiAzLjg4NC0yLjQxIDIuNDEtMy44ODQgNS42OTgtMy44ODQgOS4zMjZ6bS0xNjUuNjU4IDE4LjExNGgxNTAuNjYzdi0xOC4xMTRjMC0zLjYyOC0xLjUwMi02LjkxNy0zLjg4My05LjMyNi0yLjQxLTIuMzgxLTUuNjk4LTMuODg0LTkuMzI3LTMuODg0aC0xMjQuMjQzYy0zLjYyOSAwLTYuOTQ1IDEuNTAyLTkuMzI3IDMuODg0LTIuNDEgMi40MDktMy44ODMgNS42OTctMy44ODMgOS4zMjZ6bTMxNi4zMjEgMzIzLjY5MmgtMzE2LjMyMXYyNC45NzNoMzE2LjMyMnYtMjQuOTczeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Driveway:fNe,Entrance:SNe,"Equipment Room":"PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC00IDUxMiA1MTIiIHdpZHRoPSI1MTJwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzAzLjA5Mzc1IDE3NC4yNWMzLjM5NDUzMSAyLjM3ODkwNiA4LjA3MDMxMiAxLjU1MDc4MSAxMC40NDUzMTItMS44Mzk4NDRsMTUuOTUzMTI2LTIyLjc4OTA2MmMyLjM3ODkwNi0zLjM5NDUzMiAxLjU1NDY4Ny04LjA3MDMxMy0xLjgzOTg0NC0xMC40NDUzMTMtMy4zOTQ1MzItMi4zNzUtOC4wNzAzMTMtMS41NTA3ODEtMTAuNDQ1MzEzIDEuODQzNzVsLTE1Ljk1NzAzMSAyMi43ODUxNTdjLTIuMzc1IDMuMzk0NTMxLTEuNTUwNzgxIDguMDcwMzEyIDEuODQzNzUgMTAuNDQ1MzEyem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MS42NzE4NzUgMTU1Ljk4NDM3NS01LjQxNzk2OSAyNy4yODUxNTZjLS45MTc5NjggNC42NDA2MjUgMi42MzI4MTMgOC45NjA5MzggNy4zNjcxODggOC45NjA5MzggMy41MDc4MTIgMCA2LjY0MDYyNS0yLjQ3MjY1NyA3LjM0NzY1Ni02LjAzOTA2M2w1LjQxNDA2Mi0yNy4yODkwNjJjLjgwODU5NC00LjA2MjUtMS44MzIwMzEtOC4wMTE3MTktNS44OTQ1MzEtOC44MTY0MDYtNC4wNjY0MDYtLjgwNDY4OC04LjAxMTcxOSAxLjgzMjAzMS04LjgxNjQwNiA1Ljg5ODQzN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMDkuNTg5ODQ0IDEyMS40NDkyMTljLTIuMTQ0NTMyLTMuNTQyOTY5LTYuNzU3ODEzLTQuNjcxODc1LTEwLjMwMDc4Mi0yLjUyNzM0NGwtMjMuNzg5MDYyIDE0LjQyMTg3NWMtMy41NDI5NjkgMi4xNDg0MzgtNC42NzE4NzUgNi43NjE3MTktMi41MjczNDQgMTAuMzA0Njg4IDIuMTUyMzQ0IDMuNTQyOTY4IDYuNzY1NjI1IDQuNjY3OTY4IDEwLjMwNDY4OCAyLjUyMzQzN2wyMy43ODkwNjItMTQuNDE3OTY5YzMuNTQyOTY5LTIuMTQ4NDM3IDQuNjcxODc1LTYuNzYxNzE4IDIuNTIzNDM4LTEwLjMwNDY4N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04My42NTIzNDQgMTUyLjE3OTY4OGMyLjc1NzgxMiAxLjM1OTM3NCA2LjExMzI4MSAxLjQwNjI1IDguOTY4NzUgMCA3LTMuNDUzMTI2IDI5LjgzNTkzNy0xNi41MDc4MTMgMjkuODM1OTM3LTM5LjQ2NDg0NCAwLTE4LjIwMzEyNS0yMS4yMTQ4NDMtMjcuMDY2NDA2LTM0LjMxMjUtMTYuMDc0MjE5LTUuMDYyNS00LjI2MTcxOS0xMS45NDE0MDYtNS44OTA2MjUtMTguNzUzOTA2LTQuMDg5ODQ0LTkuMzE2NDA2IDIuNDU3MDMxLTE1LjU3MDMxMyAxMC41NjI1LTE1LjU3MDMxMyAyMC4xNjQwNjMgMCAyMy4wMTU2MjUgMjIuODQzNzUgMzYuMDMxMjUgMjkuODMyMDMyIDM5LjQ2NDg0NHptLTMuNzc3MzQ0LTQyLjM2NzE4OGMxLjM5ODQzOCAyLjQ2ODc1IDQuNDY4NzUgNC42MjUgOC4wMjM0MzggNC43MTA5MzggMy41ODIwMzEuMTEzMjgxIDYuOTcyNjU2LTIuMDQ2ODc2IDguNDYwOTM3LTQuNjUyMzQ0IDMuMDU0Njg3LTUuMzU1NDY5IDExLjA5NzY1Ni0zLjE0NDUzMiAxMS4wOTc2NTYgMi44NDc2NTYgMCAxMi42OTE0MDYtMTMuMzk0NTMxIDIxLjU2NjQwNi0xOS4zMjQyMTkgMjQuODc1LTUuOTI5Njg3LTMuMjkyOTY5LTE5LjMxMjUtMTIuMTQ0NTMxLTE5LjMxMjUtMjQuODc1IDAtNi4wNDI5NjkgOC4wODU5MzgtOC4xMzI4MTIgMTEuMDU0Njg4LTIuOTA2MjV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQxLjE0MDYyNSAxMDMuNjE3MTg4aDI5LjYzNjcxOWM0LjE0NDUzMSAwIDcuNS0zLjM1NTQ2OSA3LjUtNy41IDAtNC4xNDA2MjYtMy4zNTU0NjktNy41LTcuNS03LjVoLTI5LjYzNjcxOWMtNC4xNDQ1MzEgMC03LjUgMy4zNTkzNzQtNy41IDcuNSAwIDQuMTQ0NTMxIDMuMzU1NDY5IDcuNSA3LjUgNy41em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0MS4xNDA2MjUgMTMwLjAyNzM0NGgyOS42MzY3MTljNC4xNDQ1MzEgMCA3LjUtMy4zNTU0NjkgNy41LTcuNSAwLTQuMTQ0NTMyLTMuMzU1NDY5LTcuNS03LjUtNy41aC0yOS42MzY3MTljLTQuMTQ0NTMxIDAtNy41IDMuMzU1NDY4LTcuNSA3LjUgMCA0LjE0MDYyNSAzLjM1NTQ2OSA3LjUgNy41IDcuNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDEuMTQwNjI1IDE1Ni40Mzc1aDI5LjYzNjcxOWM0LjE0NDUzMSAwIDcuNS0zLjM1NTQ2OSA3LjUtNy41cy0zLjM1NTQ2OS03LjUtNy41LTcuNWgtMjkuNjM2NzE5Yy00LjE0NDUzMSAwLTcuNSAzLjM1NTQ2OS03LjUgNy41czMuMzU1NDY5IDcuNSA3LjUgNy41em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NS43Njk1MzEgMTUuMDA3ODEyYzQuMTQ0NTMxIDAgNy41LTMuMzU1NDY4IDcuNS03LjUgMC00LjE0NDUzMS0zLjM1NTQ2OS03LjQ5OTk5OTUtNy41LTcuNDk5OTk5NWgtNzMuNzEwOTM3Yy0uMTE3MTg4IDAtLjIzMDQ2OS4wMTE3MTg3LS4zNDc2NTYuMDE1NjI1LTIuNDk2MDk0LS4xMjg5MDY1LTUgLjk4NDM3NDUtNi41MzkwNjMgMy4xODM1OTM1bC0yNS44OTA2MjUgMzYuOTcyNjU3LTMyLjgzOTg0NC0yMi45OTYwOTRjLTE3LjM3MTA5NC0xMi4xNjQwNjMtMzguOTAyMzQ0LTE2LjI4OTA2My01OS41OTM3NS0xMS41MzkwNjNsLTIuNTk3NjU2LTEuODIwMzEyYy05LjU4OTg0NC02LjcxMDkzOC0yMi44MTY0MDYtNC4zNDc2NTctMjkuNSA1LjE5OTIxOWwtNS45Njg3NSA4LjUyMzQzN2MtNi42OTUzMTIgOS41NjI1LTQuMzYzMjgxIDIyLjgwMDc4MSA1LjIwMzEyNSAyOS40OTYwOTRsMi4wNDY4NzUgMS40MzM1OTNjLTYuODU5Mzc1IDMwLjYxNzE4OCAyNi44NjMyODEgNTQuMDgyMDMyIDUzLjE3OTY4OCAzNy4yMzgyODJsNC4xOTE0MDYgMi45MzM1OTRjLTYuODUxNTYzIDMwLjU3MDMxMiAyNi44MDQ2ODcgNTQuMTE3MTg3IDUzLjE3NTc4MSAzNy4yMzgyODFsNC4xOTUzMTMgMi45MzM1OTNjLTYuODU5Mzc2IDMwLjYxNzE4OCAyNi44NjMyODEgNTQuMDc4MTI2IDUzLjE3NTc4MSAzNy4yMzQzNzZsMi4wNTQ2ODcgMS40NDE0MDZjOS41NjY0MDYgNi42OTUzMTIgMjIuODAwNzgyIDQuMzYzMjgxIDI5LjQ5NjA5NC01LjIwMzEyNWw1Ljk2ODc1LTguNTIzNDM4YzYuNjk1MzEyLTkuNTYyNSA0LjM2MzI4MS0yMi44MDA3ODEtNS4xOTkyMTktMjkuNDk2MDkzbC0zLjI3MzQzNy0yLjI5Mjk2OWMtMi42MTMyODItMjEuMDY2NDA3LTEzLjg1NTQ2OS0zOS44ODY3MTktMzEuMjI2NTYzLTUyLjA1NDY4OGwtMzAuMTk5MjE5LTIxLjE0MDYyNSAyMy42NTIzNDQtMzMuNzc3MzQ0em0tMjE1LjQ1NzAzMSA0My40NzI2NTcgMjQuNjIxMDk0IDE3LjI0MjE4N2MtMTEuNzk2ODc1IDIuNzkyOTY5LTIzLjIyMjY1Ni01LjIzNDM3NS0yNC42MjEwOTQtMTcuMjQyMTg3em01Ny4zNjcxODggNDAuMTY3OTY5IDI0LjYyNSAxNy4yNDIxODdjLTExLjc2OTUzMiAyLjc5Njg3NS0yMy4yMjI2NTctNS4yMDcwMzEtMjQuNjI1LTE3LjI0MjE4N3ptNTcuMzcxMDkzIDQwLjE3MTg3NGMxNC45MTc5NjkgMTAuNDQ1MzEzIDkuNzc3MzQ0IDYuODQzNzUgMjQuNjI1IDE3LjI0MjE4OC0xMS43NzM0MzcgMi43OTY4NzUtMjMuMjIyNjU2LTUuMjE0ODQ0LTI0LjYyNS0xNy4yNDIxODh6bTY0LjEyODkwNyA2LjM0Mzc1LTUuOTY4NzUgOC41MjM0MzhjLTEuOTUzMTI2IDIuNzg5MDYyLTUuODEyNSAzLjQ3MjY1Ni04LjYwNTQ2OSAxLjUxOTUzMS0yLjQxMDE1Ny0xLjY4NzUtMTY5Ljg1OTM3NS0xMTguOTQxNDA2LTE3Mi4wMTk1MzEtMTIwLjQ0OTIxOS0yLjc2OTUzMi0xLjk0MTQwNi0zLjQ1NzAzMi01LjgzMjAzMS0xLjUxNTYyNi04LjYwNTQ2OGw1Ljk2ODc1LTguNTIzNDM4YzEuOTQ5MjE5LTIuNzgxMjUgNS44NDM3NS0zLjQ0OTIxOCA4LjYwNTQ2OS0xLjUxNTYyNWwxNzIuMDE5NTMxIDEyMC40NDUzMTNjMi43NzM0MzggMS45NDE0MDYgMy40NTcwMzIgNS44MzU5MzcgMS41MTU2MjYgOC42MDU0Njh6bS0xNC45MDIzNDQtMzYuMjg5MDYyYy03Ljg5NDUzMi01LjUzMTI1LTEyNS4wNDY4NzUtODcuNTU4NTk0LTEyOC43MTA5MzgtOTAuMTI1IDExLjQ3MjY1Ni4zNTE1NjIgMjIuNjcxODc1IDQgMzIuMjczNDM4IDEwLjcyMjY1Nmw3NS4zMjQyMTggNTIuNzQyMTg4YzkuNTk3NjU3IDYuNzIyNjU2IDE2Ljg1OTM3NiAxNiAyMS4xMTMyODIgMjYuNjYwMTU2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5MC44MjAzMTIgMzEwLjUxNTYyNWgtMjE3LjMyMDMxMmMtNC4xNDQ1MzEgMC03LjUgMy4zNTkzNzUtNy41IDcuNSAwIDQuMTQ0NTMxIDMuMzU1NDY5IDcuNTAzOTA2IDcuNSA3LjUwMzkwNmgyMTcuMzIwMzEyYzMuNDA2MjUgMCA2LjE3OTY4OCAyLjc2OTUzMSA2LjE3OTY4OCA2LjE3NTc4MXYxMy42Nzk2ODhjMCAzLjQwNjI1LTIuNzczNDM4IDYuMTc5Njg4LTYuMTc5Njg4IDYuMTc5Njg4LTMuNDQ1MzEyIDAtNDYzLjYwOTM3NCAwLTQ2OS42NDA2MjQgMC0zLjQwNjI1IDAtNi4xNzk2ODgtMi43Njk1MzItNi4xNzk2ODgtNi4xNzk2ODh2LTEzLjY3OTY4OGMwLTMuNDA2MjUgMi43NzM0MzgtNi4xNzU3ODEgNi4xNzk2ODgtNi4xNzU3ODFoMjE3LjMyMDMxMmM0LjE0NDUzMSAwIDcuNS0zLjM1OTM3NSA3LjUtNy41MDM5MDYgMC00LjE0MDYyNS0zLjM1NTQ2OS03LjUtNy41LTcuNWgtODUuMzU1NDY5Yy41OTc2NTctMS45NTMxMjUuOTI1NzgxLTQuMDI3MzQ0LjkyNTc4MS02LjE3NTc4MXYtMTMuNjc5Njg4YzAtMTEuNjc5Njg3LTkuNS0yMS4xNzk2ODctMjEuMTc5Njg3LTIxLjE3OTY4N2gtMTExLjcxMDkzN2MtMTEuNjc5Njg4IDAtMjEuMTc5Njg4IDkuNS0yMS4xNzk2ODggMjEuMTc5Njg3djEzLjY3OTY4OGMwIDUuMjE0ODQ0IDEuOTAyMzQ0IDkuOTg0Mzc1IDUuMDM5MDYyIDEzLjY3OTY4Ny0zLjEzNjcxOCAzLjY5MTQwNy01LjAzOTA2MiA4LjQ2NDg0NC01LjAzOTA2MiAxMy42NzU3ODF2MTMuNjc5Njg4YzAgMTEuMzI4MTI1IDguOTQ1MzEyIDIwLjU3ODEyNSAyMC4xMzY3MTkgMjEuMTI4OTA2djYuNjA5Mzc1YzAgMTEuNjc5Njg4IDkuNTAzOTA2IDIxLjE3OTY4OCAyMS4xNzk2ODcgMjEuMTc5Njg4aDIwLjcxNDg0NHY5NS4xNDA2MjVjMCA3Ljg3ODkwNiA2LjQxMDE1NiAxNC4yODkwNjIgMTQuMjkyOTY5IDE0LjI4OTA2MmgxNC4xNTIzNDNjNy44Nzg5MDcgMCAxNC4yOTI5NjktNi40MTAxNTYgMTQuMjkyOTY5LTE0LjI4OTA2MnYtOTUuMTQwNjI1aDMwMi40NjA5Mzh2OTUuMTQwNjI1YzAgNy44Nzg5MDYgNi40MTAxNTYgMTQuMjg5MDYyIDE0LjI5Mjk2OSAxNC4yODkwNjJoMTQuMTUyMzQzYzcuODgyODEzIDAgMTQuMjkyOTY5LTYuNDEwMTU2IDE0LjI5Mjk2OS0xNC4yODkwNjJ2LTk1LjE0MDYyNWgyMC43MTA5MzhjMTEuNjc5Njg3IDAgMjEuMTc5Njg3LTkuNSAyMS4xNzk2ODctMjEuMTc5Njg4di02LjYwOTM3NWMxMS4xOTUzMTMtLjU1MDc4MSAyMC4xNDA2MjUtOS44MDA3ODEgMjAuMTQwNjI1LTIxLjEyODkwNnYtMTMuNjc5Njg4YzAtMTEuNjc1NzgxLTkuNS0yMS4xNzk2ODctMjEuMTc5Njg4LTIxLjE3OTY4N3ptLTQ3NS44MjAzMTItMTkuODU1NDY5YzAtMy40MDYyNSAyLjc3MzQzOC02LjE3OTY4NyA2LjE3OTY4OC02LjE3OTY4N2gxMTEuNzEwOTM3YzMuNDA2MjUgMCA2LjE3OTY4NyAyLjc3MzQzNyA2LjE3OTY4NyA2LjE3OTY4N3YxMy42Nzk2ODhjMCAzLjQwNjI1LTIuNzczNDM3IDYuMTc5Njg3LTYuMTc5Njg3IDYuMTc5Njg3aC0xMTEuNzEwOTM3Yy0zLjQwNjI1IDAtNi4xNzk2ODgtMi43NzM0MzctNi4xNzk2ODgtNi4xNzk2ODd6bTc0Ljc2NTYyNSAxOTguMDYyNWgtMTIuNzM0Mzc1di05NC40Mjk2ODdoMTIuNzM0Mzc1em0zNDUuMjAzMTI1IDBoLTEyLjczODI4MXYtOTQuNDI5Njg3aDEyLjczODI4MXptNDEuODkwNjI1LTExNS42MDkzNzVjMCAzLjQwNjI1LTIuNzY5NTMxIDYuMTc5Njg4LTYuMTc5Njg3IDYuMTc5Njg4LTEzLjcxNDg0NCAwLTQxNS4wMzUxNTcgMC00MjkuMzYzMjgyIDAtMy40MDYyNSAwLTYuMTc5Njg3LTIuNzczNDM4LTYuMTc5Njg3LTYuMTc5Njg4di02LjU1ODU5M2g0NDEuNzIyNjU2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyOC45NjA5MzggMTEyLjUyNzM0NGM0LjE0NDUzMSAwIDcuNS0zLjM1OTM3NSA3LjUtNy41di00MS4xMzY3MTljMC0xNi4zMTY0MDYtMTMuMjczNDM4LTI5LjU5Mzc1LTI5LjU4OTg0NC0yOS41OTM3NWgtMTc3LjI4MTI1Yy0xNi4zMTY0MDYgMC0yOS41ODk4NDQgMTMuMjczNDM3LTI5LjU4OTg0NCAyOS41OTM3NXYxMTcuMjc3MzQ0YzAgMTYuMzE2NDA2IDEzLjI3MzQzOCAyOS41ODk4NDMgMjkuNTg5ODQ0IDI5LjU4OTg0M2gxNzcuMjgxMjVjMTYuMzE2NDA2IDAgMjkuNTkzNzUtMTMuMjczNDM3IDI5LjU5Mzc1LTI5LjU4OTg0M3YtNDEuMTQwNjI1YzAtNC4xNDA2MjUtMy4zNTkzNzUtNy41LTcuNTAzOTA2LTcuNS00LjE0MDYyNiAwLTcuNSAzLjM1OTM3NS03LjUgNy41djQxLjE0MDYyNWMwIDguMDQyOTY5LTYuNTQ2ODc2IDE0LjU4OTg0My0xNC41ODk4NDQgMTQuNTg5ODQzaC0xNzcuMjgxMjVjLTguMDQyOTY5IDAtMTQuNTg5ODQ0LTYuNTQ2ODc0LTE0LjU4OTg0NC0xNC41ODk4NDN2LTExNy4yNzczNDRjMC04LjA0Njg3NSA2LjU0Njg3NS0xNC41OTM3NSAxNC41ODk4NDQtMTQuNTkzNzVoMTc3LjI4MTI1YzguMDQyOTY4IDAgMTQuNTg5ODQ0IDYuNTQ2ODc1IDE0LjU4OTg0NCAxNC41OTM3NXY0MS4xMzY3MTljMCA0LjE0MDYyNSAzLjM1OTM3NCA3LjUgNy41IDcuNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNC43NzM0MzggNjEuNTcwMzEyYy00LjE0NDUzMiAwLTcuNSAzLjM1OTM3Ni03LjUgNy41djEwNi45MTQwNjNjMCA0LjE0NDUzMSAzLjM1NTQ2OCA3LjUgNy41IDcuNWgxNjYuOTE0MDYyYzQuMTQ0NTMxIDAgNy41LTMuMzU1NDY5IDcuNS03LjV2LTEwNi45MTQwNjNjMC00LjE0MDYyNC0zLjM1NTQ2OS03LjUtNy41LTcuNXptMTU5LjQxNDA2MiAxMDYuOTE0MDYzaC0xNTEuOTE0MDYydi05MS45MTQwNjNoMTUxLjkxNDA2MnptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+","Front Yard":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjYuNDksMzYuOTQ3Yy0zMS41NzksMC01Ny4yNywyNS42OTEtNTcuMjcsNTcuMjdjMCwzMS41NzksMjUuNjkxLDU3LjI3LDU3LjI3LDU3LjI3YzMxLjU3OCwwLDU3LjI3LTI1LjY5MSw1Ny4yNy01Ny4yNw0KCQkJQzE4My43NjEsNjIuNjM4LDE1OC4wNywzNi45NDcsMTI2LjQ5LDM2Ljk0N3ogTTEyNi40OSwxMzEuNDg3Yy0yMC41NTEsMC0zNy4yNy0xNi43MTktMzcuMjctMzcuMjcNCgkJCWMwLTIwLjU1MSwxNi43MTktMzcuMjcsMzcuMjctMzcuMjdjMjAuNTUsMCwzNy4yNywxNi43MTksMzcuMjcsMzcuMjdDMTYzLjc2MSwxMTQuNzY4LDE0Ny4wNDIsMTMxLjQ4NywxMjYuNDksMTMxLjQ4N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyNi40OSwwYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjEyLjMzOGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwczEwLTQuNDc3LDEwLTEwVjEwQzEzNi40OSw0LjQ3NywxMzIuMDE0LDAsMTI2LjQ5LDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjYuNDksMTU2LjA5N2MtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHYxMi4zMzhjMCw1LjUyMyw0LjQ3NywxMCwxMCwxMHMxMC00LjQ3NywxMC0xMHYtMTIuMzM4DQoJCQlDMTM2LjQ5LDE2MC41NzQsMTMyLjAxNCwxNTYuMDk3LDEyNi40OSwxNTYuMDk3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEwLjcwOCw4NC4yMTdIMTk4LjM3Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwczQuNDc3LDEwLDEwLDEwaDEyLjMzOGM1LjUyMywwLDEwLTQuNDc3LDEwLTEwDQoJCQlTMjE2LjIzLDg0LjIxNywyMTAuNzA4LDg0LjIxN3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTU0LjYxLDg0LjIxN0g0Mi4yNzJjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoMTIuMzM5YzUuNTIzLDAsMTAtNC40NzcsOS45OTktMTANCgkJCUM2NC42MSw4OC42OTQsNjAuMTM0LDg0LjIxNyw1NC42MSw4NC4yMTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMDAuOTc3LDE5LjcyOWMtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MiwwbC05Ljg3Nyw5Ljg3N2MtMy45MDUsMy45MDYtMy45MDUsMTAuMjM4LDAsMTQuMTQzDQoJCQljMS45NTIsMS45NTMsNC41MTIsMi45MjksNy4wNzEsMi45MjljMi41NTksMCw1LjExOS0wLjk3Niw3LjA3MS0yLjkyOWw5Ljg3Ny05Ljg3N0MyMDQuODgzLDI5Ljk2NiwyMDQuODgzLDIzLjYzNCwyMDAuOTc3LDE5LjcyOQ0KCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNzYuMDIzLDE0NC42ODVjLTMuOTA2LTMuOTA1LTEwLjIzOC0zLjkwNS0xNC4xNDMsMGwtOS44NzcsOS44NzdjLTMuOTA1LDMuOTA2LTMuOTA1LDEwLjIzOCwwLDE0LjE0Mw0KCQkJYzEuOTUyLDEuOTUzLDQuNTEyLDIuOTI5LDcuMDcxLDIuOTI5czUuMTE5LTAuOTc2LDcuMDcyLTIuOTI5bDkuODc3LTkuODc3Qzc5LjkyOCwxNTQuOTIyLDc5LjkyOCwxNDguNTksNzYuMDIzLDE0NC42ODV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik03Ni4wMjEsMjkuNjA2bC05Ljg3Ny05Ljg3N2MtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MiwwYy0zLjkwNSwzLjkwNi0zLjkwNSwxMC4yMzgsMCwxNC4xNDNsOS44NzcsOS44NzcNCgkJCWMxLjk1MiwxLjk1Myw0LjUxMiwyLjkyOSw3LjA3MSwyLjkyOXM1LjExOS0wLjk3Niw3LjA3MS0yLjkyOUM3OS45MjcsMzkuODQzLDc5LjkyNywzMy41MTEsNzYuMDIxLDI5LjYwNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ1OS41NCw0NjguMzg5Yy0wLjEyOS0wLjY0LTAuMzItMS4yNy0wLjU3LTEuODdjLTAuMjUtMC42LTAuNTYtMS4xOC0wLjkyLTEuNzJjLTAuMzYtMC41NS0wLjc4LTEuMDYtMS4yNC0xLjUzDQoJCQljLTAuNDYtMC40Ni0wLjk3LTAuODctMS41Mi0xLjI0Yy0wLjU0LTAuMzYtMS4xMi0wLjY3LTEuNzMtMC45MmMtMC41OTktMC4yNS0xLjIyOS0wLjQ0LTEuODctMC41N2MtMS4yOS0wLjI2LTIuNjItMC4yNi0zLjkwOSwwDQoJCQljLTAuNjMxLDAuMTMtMS4yNjEsMC4zMi0xLjg3LDAuNTdjLTAuNjAxLDAuMjUtMS4xODEsMC41Ni0xLjcyMSwwLjkyYy0wLjU1LDAuMzctMS4wNiwwLjc4LTEuNTIsMS4yNA0KCQkJYy0wLjQ2LDAuNDctMC44OCwwLjk4LTEuMjUsMS41M2MtMC4zNiwwLjU0LTAuNjcsMS4xMi0wLjkyLDEuNzJjLTAuMjUsMC42LTAuNDQsMS4yMy0wLjU3LDEuODcNCgkJCWMtMC4xMywwLjY1MS0wLjE5LDEuMzAxLTAuMTksMS45NjFjMCwwLjY1LDAuMDYsMS4zMSwwLjE5LDEuOTVjMC4xMywwLjY0LDAuMzIsMS4yNywwLjU3LDEuODdjMC4yNSwwLjYsMC41NiwxLjE4LDAuOTIsMS43Mw0KCQkJYzAuMzcsMC41NCwwLjc5LDEuMDYsMS4yNSwxLjUyYzAuNDYsMC40NiwwLjk3LDAuODgsMS41MiwxLjI0YzAuNTQsMC4zNiwxLjEyLDAuNjcsMS43MjEsMC45MmMwLjYwOSwwLjI1LDEuMjM5LDAuNDQsMS44NywwLjU3DQoJCQljMC42NSwwLjEzLDEuMzEsMC4yLDEuOTYsMC4yYzAuNjUsMCwxLjMxLTAuMDcsMS45NDktMC4yYzAuNjQxLTAuMTMsMS4yNy0wLjMyLDEuODctMC41N2MwLjYxLTAuMjUsMS4xOS0wLjU2LDEuNzMtMC45Mg0KCQkJYzAuNTUtMC4zNiwxLjA2LTAuNzgsMS41Mi0xLjI0YzAuNDYtMC40NiwwLjg4LTAuOTgsMS4yNC0xLjUyYzAuMzYxLTAuNTUsMC42Ny0xLjEzLDAuOTItMS43M2MwLjI1LTAuNiwwLjQ0LTEuMjMsMC41Ny0xLjg3DQoJCQlzMC4yLTEuMywwLjItMS45NUM0NTkuNzQsNDY5LjY4OSw0NTkuNjcsNDY5LjAzOSw0NTkuNTQsNDY4LjM4OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQwOS43MzksNDYwLjM0Nkg2Mi4xMzhjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoMzQ3LjZjNS41MjMsMCwxMC00LjQ3NywxMC4wMDEtMTANCgkJCUM0MTkuNzM5LDQ2NC44MjMsNDE1LjI2MSw0NjAuMzQ2LDQwOS43MzksNDYwLjM0NnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMS41NjMsNDI3LjkzMWgtNi44MDljLTMuODA2LTIxLjMxMi0yMi40NzYtMzcuNTQtNDQuODY0LTM3LjU0Yy0zLjMsMC02LjU5MSwwLjM2Mi05LjgwMywxLjA2N1YyOTMuMjkNCgkJCWMzNi40ODItNC45MDIsNjQuNzA0LTM2LjIzNiw2NC43MDQtNzQuMDM3YzAtMTkuNzA5LTcuNzgxLTM4LjUzMS0yMS41MjQtNTIuNDY0YzAuMTg2LTEuODE0LDAuMjc4LTMuNjQxLDAuMjc4LTUuNDY4DQoJCQljMC0yOS40NzctMjMuOTgxLTUzLjQ1OC01My40NTgtNTMuNDU4Yy0yOS40NzcsMC01My40NTgsMjMuOTgyLTUzLjQ1OCw1My40NThjMCwxLjgyNywwLjA5MywzLjY1MywwLjI3Nyw1LjQ2Nw0KCQkJYy0xMy43NDEsMTMuOTM0LTIxLjUyMywzMi43NTYtMjEuNTIzLDUyLjQ2NWMwLDM3LjgwMiwyOC4yMjMsNjkuMTM2LDY0LjcwNCw3NC4wMzd2ODkuNjJjLTQuNjg1LTEuNjMyLTkuNzE2LTIuNTItMTQuOTUxLTIuNTINCgkJCWMtMjUuMTI5LDAtNDUuNTczLDIwLjQ0NC00NS41NzMsNDUuNTc0djEuOTY4aC04LjUwNnYtMzUuMTNoMC4wMDFjNS41MjIsMCwxMC00LjQ3NywxMC0xMHYtNDNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtMC4wMDENCgkJCXYtNDcuMzI5YzAtMi44NDQtMS4yMTEtNS41NTMtMy4zMy03LjQ1TDMxNi4yNywyNDYuODZjLTMuNzk3LTMuMzk5LTkuNTQzLTMuMzk5LTEzLjM0LDBsLTI0Ljc4NywyMi4xOTFsLTI0Ljc4OC0yMi4xOTENCgkJCWMtMy43OTctMy4zOTgtOS41NDMtMy4zOTgtMTMuMzQsMGwtMjQuNzg4LDIyLjE5MWwtMjQuNzg4LTIyLjE5MWMtMy43OTctMy4zOTktOS41NDMtMy4zOTktMTMuMzQsMC4wMDFsLTI0Ljc4NywyMi4xOTENCgkJCWwtMjQuNzg4LTIyLjE5MWMtMy43OTctMy4zOTgtOS41NDMtMy4zOTgtMTMuMzQsMEw4OS4zOTgsMjY5LjA1TDY0LjYxLDI0Ni44NTljLTMuNzk2LTMuMzk5LTkuNTQzLTMuMzk5LTEzLjM0LTAuMDAxDQoJCQlsLTMxLjQ1OCwyOC4xNjNjLTIuMTE5LDEuODk3LTMuMzMsNC42MDYtMy4zMyw3LjQ1MXY0Ny4zMjloLTAuMDAxYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjQzYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMC4wMDENCgkJCXYzNS4xM2gtNi4wNDRjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBWNTAyYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoNDkxLjEyM2M1LjUyMiwwLDEwLTQuNDc3LDEwLTEwdi02NC4wNjkNCgkJCUM1MTEuNTYzLDQzMi40MDgsNTA3LjA4NSw0MjcuOTMxLDUwMS41NjMsNDI3LjkzMXogTTQ0OS44OSw0MTAuMzkxYzExLjI5NiwwLDIwLjkwNSw3LjM2MiwyNC4yODEsMTcuNTRoLTIzLjQ2MnYtMS45NjgNCgkJCWMwLTUuNDQxLTAuOTU5LTEwLjY2Mi0yLjcxNi0xNS41MDRDNDQ4LjYyLDQxMC40MTQsNDQ5LjI1Myw0MTAuMzkxLDQ0OS44OSw0MTAuMzkxeiBNNDIwLjA4NywxODUuNTc0djMzLjExOGwtMTAuNDA3LTEwLjQwNw0KCQkJYy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBjLTMuOTA1LDMuOTA1LTMuOTA1LDEwLjIzNywwLDE0LjE0M2wyMy4yNTcsMjMuMjU3YzAuNDA3LDAuNDA2LDAuODM5LDAuNzcsMS4yOTMsMS4wOTENCgkJCXYyNi4yNjVjLTI1LjQwNS00LjcxMi00NC43MDQtMjcuMDM5LTQ0LjcwNC01My43ODljMC0xNS44MTYsNi44NDUtMzAuODU0LDE4Ljc3OC00MS4yNTZjMi43NC0yLjM4OCwzLjk2OS02LjA3NSwzLjIwOS05LjYyOQ0KCQkJYy0wLjQ5Mi0yLjI5OS0wLjc0MS00LjY3LTAuNzQxLTcuMDQ3YzAtMTguNDQ5LDE1LjAwOS0zMy40NTgsMzMuNDU4LTMzLjQ1OGMxOC40NDksMCwzMy40NTgsMTUuMDA5LDMzLjQ1OCwzMy40NTgNCgkJCWMwLDIuMzc4LTAuMjQ5LDQuNzQ4LTAuNzQxLDcuMDQ1Yy0wLjc2MiwzLjU1NSwwLjQ2Nyw3LjI0MywzLjIwOCw5LjYzMmMxMS45MzUsMTAuNDAzLDE4Ljc3OSwyNS40NCwxOC43NzksNDEuMjU2DQoJCQljMCwyNi43NS0xOS4yOTksNDkuMDc2LTQ0LjcwNCw1My43ODh2LTI2LjI2NWMwLjQ1My0wLjMyMiwwLjg4Ny0wLjY4NSwxLjI5My0xLjA5MWwyMy4yNTctMjMuMjU3DQoJCQljMy45MDUtMy45MDUsMy45MDUtMTAuMjM3LDAtMTQuMTQzYy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBsLTEwLjQwNywxMC40MDd2LTMzLjExOGMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwDQoJCQlDNDI0LjU2NCwxNzUuNTc0LDQyMC4wODcsMTgwLjA1MSw0MjAuMDg3LDE4NS41NzR6IE0zNzkuNTYzLDQyNS45NjNjMC0xNC4xMDIsMTEuNDcyLTI1LjU3NCwyNS41NzMtMjUuNTc0DQoJCQljMTQuMTAyLDAsMjUuNTczLDExLjQ3MiwyNS41NzMsMjUuNTc0djEuOTY4aC01MS4xNDZWNDI1Ljk2M3ogTTI4OC4xNDMsMjg2Ljk0MWwyMS40NTctMTkuMjFsMjEuNDU3LDE5LjIxVjMyOS44aC00Mi45MTRWMjg2Ljk0MQ0KCQkJeiBNMjI1LjIyNywyODYuOTQxbDIxLjQ1OC0xOS4yMWwyMS40NTcsMTkuMjFWMzI5LjhoLTQyLjkxNVYyODYuOTQxeiBNMTYyLjMxMywyODYuOTQxbDIxLjQ1Ny0xOS4yMWwyMS40NTgsMTkuMjFWMzI5LjhoLTQyLjkxNQ0KCQkJVjI4Ni45NDF6IE05OS4zOTgsMjg2Ljk0MWwyMS40NTctMTkuMjFsMjEuNDU4LDE5LjIxVjMyOS44SDk5LjM5OFYyODYuOTQxeiBNMzYuNDgzLDI4Ni45NDFsMjEuNDU3LTE5LjIxbDIxLjQ1NywxOS4yMVYzMjkuOA0KCQkJSDM2LjQ4M1YyODYuOTQxeiBNMjYuNDgyLDM0OS44MDFoMzE0LjU3NXYyM0gyNi40ODJWMzQ5LjgwMXogTTMzMS4wNTcsMzkyLjgwMXYzNS4xM2gtNDIuOTE0di0zNS4xM0gzMzEuMDU3eiBNMjY4LjE0MywzOTIuODAxDQoJCQl2MzUuMTNoLTQyLjkxNXYtMzUuMTNIMjY4LjE0M3ogTTIwNS4yMjcsMzkyLjgwMXYzNS4xM2gtNDIuOTE1di0zNS4xM0gyMDUuMjI3eiBNMTQyLjMxMywzOTIuODAxdjM1LjEzSDk5LjM5OHYtMzUuMTNIMTQyLjMxM3oNCgkJCSBNNzkuMzk4LDM5Mi44MDF2MzUuMTNIMzYuNDgzdi0zNS4xM0g3OS4zOTh6IE0yMC40MzgsNDkydi00NC4wNjloNDcxLjEyM1Y0OTJIMjAuNDM4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjc4LjQ4NywxMjcuODQzYy0wLjU1NiwwLTEuMTEyLDAuMDExLTEuNjY4LDAuMDMzYy03LjU0My0xNC40Mi0yMi41MTktMjMuOTIzLTM4Ljg5NC0yMy45MjMNCgkJCWMtMjAuNTg3LDAtMzguMDQ3LDE0LjY4My00Mi43NzMsMzQuMzQ2Yy0xOS43ODMsMS45My0zNS4zMDksMTkuMDAxLTM1LjMwOSwzOS43MDdjMCwyMS45OTQsMTcuNTE3LDM5Ljg4NywzOS4wNDgsMzkuODg3aDc5LjU5Ng0KCQkJYzI0LjI4NSwwLDQ0LjA0MS0yMC4xOTgsNDQuMDQxLTQ1LjAyNUMzMjIuNTI3LDE0OC4wNDEsMzAyLjc3MSwxMjcuODQzLDI3OC40ODcsMTI3Ljg0M3ogTTI3OC40ODcsMTk3Ljg5M2gtNzkuNTk2DQoJCQljLTEwLjUwMywwLTE5LjA0OC04LjkyMS0xOS4wNDgtMTkuODg3YzAtMTAuOTY3LDguNTQ1LTE5Ljg4OCwxOS4wNDgtMTkuODg4YzEuMDU2LDAsMi4xNDgsMC4wOTksMy4yNDQsMC4yOTYNCgkJCWMyLjg5MywwLjUxNiw1Ljg3LTAuMjY3LDguMTM1LTIuMTQxYzIuMjY1LTEuODc1LDMuNTktNC42NTIsMy42MjMtNy41OTJjMC4xNTMtMTMuNjM1LDEwLjkzMy0yNC43MjgsMjQuMDMyLTI0LjcyOA0KCQkJYzEwLjYzOCwwLDE5Ljg3Nyw3LjEwOCwyMi45ODgsMTcuNjg5YzEuNTExLDUuMTM1LDYuNzk0LDguMTczLDExLjk5NCw2Ljg4NmMxLjgzOC0wLjQ1NCwzLjcxNS0wLjY4NCw1LjU4LTAuNjg0DQoJCQljMTMuMjU2LDAsMjQuMDQxLDExLjIyNiwyNC4wNDEsMjUuMDI1QzMwMi41MjcsMTg2LjY2NywyOTEuNzQzLDE5Ny44OTMsMjc4LjQ4NywxOTcuODkzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Gallery:xNe,Garage:kNe,Garden:YNe,"Ground Floor":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAyIDUxMi4wMDIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIHN0cm9rZT0iIiBkPSJNNDc3LjQ0NCw0NzEuMDM0aC0zLjgzM2MtMy42NzktMTQuNDM1LTE1LjkyNi0yNS4zNTYtMzAuODU5LTI3LjI0MVYzMDguNTg3aDIuMTM4YzkuOTE3LDAsMTcuOTg1LTguMDY4LDE3Ljk4NS0xNy45ODYNCgkJCWMwLTkuOTE3LTguMDY4LTE3Ljk4NS0xNy45ODUtMTcuOTg1aC0yLjEzOFYxMjkuMzgyaDkuODE1YzcuMTk3LDAsMTMuMDUyLTUuODU1LDEzLjA1Mi0xMy4wNTJ2LTE0LjkwNA0KCQkJYzAtMC4wMzMtMC4wMDUtMC4wNjUtMC4wMDUtMC4wOThjLTAuMDAxLTAuMDk4LTAuMDA5LTAuMTk2LTAuMDE1LTAuMjk0Yy0wLjAwOS0wLjE3MS0wLjAyMS0wLjM0Mi0wLjA0Mi0wLjUxDQoJCQljLTAuMDExLTAuMDg5LTAuMDI2LTAuMTc3LTAuMDQxLTAuMjY2Yy0wLjAyOS0wLjE4My0wLjA2NS0wLjM2NC0wLjEwOC0wLjU0MmMtMC4wMS0wLjA0LTAuMDE0LTAuMDgxLTAuMDI0LTAuMTIxTDQ0Ni4xMjMsMjUuNDINCgkJCWMtMS41NzQtNi4wNi03LjA0Ny0xMC4yOTMtMTMuMzA3LTEwLjI5M2gtNDkuMTA1Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3czMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDQ4LjQ2OGwxNi43MzQsNjQuNDQNCgkJCUgzMzUuMzcyTDI5Mi4zNDcsMjkuN2g0NS44NjZjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N2MwLTQuMDI1LTMuMjYyLTcuMjg3LTcuMjg3LTcuMjg3aC01NS41OTZsLTAuOTI2LTEuMzg3DQoJCQlDMjc1Ljk0OCw1LjEzNywyNjYuMzQyLDAsMjU1Ljk5NywwYy0xMC4zNDUsMC0xOS45NSw1LjEzNi0yNS42OTQsMTMuNzM5bC0wLjkyNywxLjM4OEg3OS4xNzgNCgkJCWMtNi4yNjEsMC0xMS43MzMsNC4yMzItMTMuMzA3LDEwLjI5M0w0Ni42MDksOTkuNTk1Yy0wLjAxLDAuMDQtMC4wMTQsMC4wODEtMC4wMjQsMC4xMjFjLTAuMDQzLDAuMTc4LTAuMDc5LDAuMzU5LTAuMTA4LDAuNTQyDQoJCQljLTAuMDE0LDAuMDg5LTAuMDMsMC4xNzctMC4wNDEsMC4yNjZjLTAuMDIxLDAuMTY4LTAuMDMzLDAuMzM4LTAuMDQyLDAuNTFjLTAuMDA1LDAuMDk4LTAuMDE0LDAuMTk2LTAuMDE1LDAuMjk0DQoJCQljMCwwLjAzMy0wLjAwNSwwLjA2NS0wLjAwNSwwLjA5OHYxNC45MDRjMCw3LjE5Nyw1Ljg1NSwxMy4wNTIsMTMuMDUyLDEzLjA1Mmg5LjgxNXYxNDMuMjMzaC0yLjEzOA0KCQkJYy05LjkxNywwLTE3Ljk4NSw4LjA2OC0xNy45ODUsMTcuOTg1czguMDY4LDE3Ljk4NiwxNy45ODUsMTcuOTg2aDIuMTM4djQ2LjY5NmMwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQlzNy4yODctMy4yNjIsNy4yODctNy4yODd2LTQ2LjY5NmgzNDQuMzY0djEyOS4zMTFjLTAuMDU1LTAuMDMyLTAuMTEzLTAuMDYtMC4xNjktMC4wOTJjLTAuNzE0LTAuNDE1LTEuNDM5LTAuODEtMi4xNzYtMS4xODINCgkJCWMtMC4xNDQtMC4wNzMtMC4yOTEtMC4xMzktMC40MzUtMC4yMWMtMC42MTQtMC4zMDItMS4yMzUtMC41ODgtMS44NjMtMC44NTljLTAuMjEzLTAuMDkyLTAuNDI1LTAuMTgzLTAuNjM5LTAuMjcyDQoJCQljLTAuNzI3LTAuMy0xLjQ1OS0wLjU4NS0yLjIwMi0wLjg0NGMtMC4wNDQtMC4wMTUtMC4wODctMC4wMzMtMC4xMzEtMC4wNDljLTAuNzg0LTAuMjcxLTEuNTc4LTAuNTExLTIuMzc4LTAuNzM2DQoJCQljLTAuMjE5LTAuMDYyLTAuNDQtMC4xMTgtMC42Ni0wLjE3NmMtMC42NDItMC4xNjktMS4yODktMC4zMjMtMS45NC0wLjQ2MmMtMC4xODgtMC4wNC0wLjM3NS0wLjA4NS0wLjU2NC0wLjEyMw0KCQkJYy0wLjgxMi0wLjE2Mi0xLjYyOS0wLjMtMi40NTEtMC40MTRjLTAuMTc4LTAuMDI1LTAuMzU4LTAuMDQyLTAuNTM3LTAuMDY0Yy0wLjY3MS0wLjA4NC0xLjM0NS0wLjE1Mi0yLjAyMi0wLjIwNA0KCQkJYy0wLjIzNC0wLjAxOC0wLjQ2OC0wLjAzNi0wLjcwMi0wLjA1MWMtMC44NDItMC4wNTEtMS42ODUtMC4wODUtMi41MzMtMC4wODVjLTE1LjQ0NiwwLTI5LjY5OSw4LjYxLTM3LjA2MiwyMS45MTUNCgkJCWMtMC44NDYtMC4wMi0xLjY4NCwwLjAwMS0yLjUxNiwwLjA0NmMtMC4xOTUsMC4wMTEtMC4zODcsMC4wMzQtMC41ODEsMC4wNDhjLTAuNjM2LDAuMDQ3LTEuMjY4LDAuMTA3LTEuODk0LDAuMTkNCgkJCWMtMC4yMywwLjAzMS0wLjQ1OCwwLjA3MS0wLjY4NiwwLjEwN2MtMC41ODYsMC4wOTItMS4xNjgsMC4xOTctMS43NDQsMC4zMjFjLTAuMjM0LDAuMDUtMC40NjUsMC4xMDQtMC42OTcsMC4xNTkNCgkJCWMtMC41NzEsMC4xMzctMS4xMzUsMC4yODktMS42OTUsMC40NTdjLTAuMjE3LDAuMDY1LTAuNDM1LDAuMTI4LTAuNjUsMC4xOThjLTAuNTg4LDAuMTktMS4xNjcsMC40LTEuNzQsMC42MjQNCgkJCWMtMC4xNzEsMC4wNjctMC4zNDUsMC4xMjctMC41MTUsMC4xOTdjLTAuNzA1LDAuMjktMS4zOTksMC42MDItMi4wNzksMC45NDFjLTAuMDI4LDAuMDE0LTAuMDU4LDAuMDI2LTAuMDg2LDAuMDQNCgkJCWMtMC43MzMsMC4zNjktMS40NSwwLjc2Ni0yLjE1LDEuMTljLTAuMDY2LDAuMDQtMC4xMjksMC4wODYtMC4xOTUsMC4xMjdjLTAuNiwwLjM3LTEuMTg3LDAuNzU5LTEuNzYsMS4xNjkNCgkJCWMtMC4xODQsMC4xMzItMC4zNjEsMC4yNzItMC41NDIsMC40MDhjLTAuNDQ3LDAuMzM1LTAuODg4LDAuNjc3LTEuMzE2LDEuMDM2Yy0wLjIwNiwwLjE3Mi0wLjQwNywwLjM1MS0wLjYwOSwwLjUyOQ0KCQkJYy0wLjM5MSwwLjM0NS0wLjc3NCwwLjY5OC0xLjE0OCwxLjA2M2MtMC4yMDEsMC4xOTYtMC40MDEsMC4zOTQtMC41OTcsMC41OTZjLTAuMzY1LDAuMzc2LTAuNzE3LDAuNzYzLTEuMDY0LDEuMTU4DQoJCQljLTAuMTc4LDAuMjAzLTAuMzU5LDAuNDA0LTAuNTMzLDAuNjEyYy0wLjM2NywwLjQ0MS0wLjcxNywwLjg5Ny0xLjA2LDEuMzU5Yy0wLjEzMSwwLjE3Ni0wLjI2OSwwLjM0Ni0wLjM5NiwwLjUyNQ0KCQkJYy0wLjg4NSwxLjI0Ni0xLjY4OSwyLjU2LTIuMzkyLDMuOTQ0aC0zNS40NTdWMzQ2LjE4MWMwLTcuMTM1LTUuODA1LTEyLjkzOS0xMi45MzktMTIuOTM5aC03My4zNDkNCgkJCWMtNy4xMzUsMC0xMi45MzksNS44MDUtMTIuOTM5LDEyLjkzOXYxMjQuODUzaC02MC42MzljLTAuMTg4LTAuNDY5LTAuMzk5LTAuOTI1LTAuNjA1LTEuMzgzDQoJCQljLTAuMDg4LTAuMTk0LTAuMTY2LTAuMzk0LTAuMjU2LTAuNTg2Yy0wLjM1My0wLjc0OS0wLjcyOC0xLjQ4My0xLjEyOC0yLjIwMmMtMC4wNzUtMC4xMzUtMC4xNi0wLjI2My0wLjIzNi0wLjM5Nw0KCQkJYy0wLjMzMS0wLjU3Ny0wLjY3My0xLjE0Ny0xLjAzNC0xLjcwM2MtMC4xNTEtMC4yMzItMC4zMTEtMC40NTYtMC40NjctMC42ODVjLTAuMzA1LTAuNDQ4LTAuNjE2LTAuODkxLTAuOTQtMS4zMjQNCgkJCWMtMC4xODMtMC4yNDUtMC4zNzItMC40ODQtMC41NjItMC43MjRjLTAuMzItMC40MDUtMC42NDYtMC44MDMtMC45ODItMS4xOTNjLTAuMjAyLTAuMjM0LTAuNDA1LTAuNDY3LTAuNjEyLTAuNjk1DQoJCQljLTAuMzUyLTAuMzg4LTAuNzE0LTAuNzY2LTEuMDgxLTEuMTM4Yy0wLjIwNS0wLjIwNy0wLjQwNy0wLjQxNy0wLjYxNi0wLjYyYy0wLjQxOS0wLjQwNS0wLjg1Mi0wLjc5NC0xLjI5LTEuMTc4DQoJCQljLTAuMTcyLTAuMTUxLTAuMzM3LTAuMzA4LTAuNTExLTAuNDU1Yy0wLjYyMi0wLjUyNS0xLjI1OS0xLjAzMS0xLjkxNC0xLjUxM2MtMC4wNjctMC4wNDktMC4xMzctMC4wOTMtMC4yMDQtMC4xNDENCgkJCWMtMC41ODgtMC40MjYtMS4xODgtMC44MzYtMS44MDEtMS4yMjZjLTAuMjI1LTAuMTQ0LTAuNDU4LTAuMjc2LTAuNjg2LTAuNDE0Yy0wLjQ2Ny0wLjI4My0wLjkzOC0wLjU2Mi0xLjQxOC0wLjgyNA0KCQkJYy0wLjI3LTAuMTQ4LTAuNTQ1LTAuMjg3LTAuODE5LTAuNDI4Yy0wLjQ1Ni0wLjIzNC0wLjkxNi0wLjQ2MS0xLjM4My0wLjY3NmMtMC4yOS0wLjEzNC0wLjU4MS0wLjI2NC0wLjg3NS0wLjM5MQ0KCQkJYy0wLjQ3My0wLjIwMy0wLjk1My0wLjM5NC0xLjQzNi0wLjU3OGMtMC4yOTEtMC4xMS0wLjU3OS0wLjIyMy0wLjg3My0wLjMyNmMtMC41MjgtMC4xODYtMS4wNjUtMC4zNTMtMS42MDQtMC41MTQNCgkJCWMtMC4yNTYtMC4wNzctMC41MDgtMC4xNjItMC43NjYtMC4yMzNjLTAuOC0wLjIyMS0xLjYwOC0wLjQyMS0yLjQyOC0wLjU4OGMtMC41MjctMC43MTgtMS4wNzQtMS40MTgtMS42MzctMi4wOTkNCgkJCWMtMC4xOTMtMC4yMzMtMC4zOTgtMC40NTItMC41OTUtMC42ODFjLTAuMzc4LTAuNDQtMC43NTQtMC44ODItMS4xNDctMS4zMDZjLTAuMjQ2LTAuMjY1LTAuNTA1LTAuNTE0LTAuNzU3LTAuNzcyDQoJCQljLTAuMzYtMC4zNjktMC43MTYtMC43NDQtMS4wODctMS4xYy0wLjI3Ny0wLjI2NS0wLjU2Ni0wLjUxNC0wLjg0OS0wLjc3MmMtMC4zNjItMC4zMy0wLjcxOS0wLjY2NC0xLjA5MS0wLjk4MQ0KCQkJYy0wLjMwMS0wLjI1Ny0wLjYxNC0wLjQ5OC0wLjkyMS0wLjc0N2MtMC4zNjgtMC4yOTgtMC43MzItMC42LTEuMTA4LTAuODg2Yy0wLjMyMi0wLjI0NC0wLjY1NC0wLjQ3Mi0wLjk4MS0wLjcwNw0KCQkJYy0wLjM3Ni0wLjI3LTAuNzQ5LTAuNTQ0LTEuMTMzLTAuODAxYy0wLjMzOS0wLjIyNy0wLjY4Ny0wLjQzOS0xLjAzMS0wLjY1N2MtMC4zODctMC4yNDUtMC43NzEtMC40OTMtMS4xNjQtMC43MjUNCgkJCWMtMC4zNTMtMC4yMDktMC43MTUtMC40MDItMS4wNzQtMC42MDFjLTAuMzk3LTAuMjItMC43OTItMC40NDMtMS4xOTYtMC42NTFjLTAuMzY4LTAuMTktMC43NDItMC4zNjQtMS4xMTUtMC41NDQNCgkJCWMtMC40MDYtMC4xOTUtMC44MTEtMC4zOTMtMS4yMjQtMC41NzZjLTAuMzgtMC4xNjktMC43NjUtMC4zMjMtMS4xNS0wLjQ4MmMtMC40MTctMC4xNzEtMC44MzItMC4zNDQtMS4yNTUtMC41MDMNCgkJCWMtMC4zODktMC4xNDctMC43ODQtMC4yOC0xLjE3OC0wLjQxNmMtMC40MjctMC4xNDctMC44NTQtMC4yOTYtMS4yODYtMC40M2MtMC4zOTgtMC4xMjQtMC44MDEtMC4yMzYtMS4yMDQtMC4zNDkNCgkJCWMtMC40MzctMC4xMjMtMC44NzMtMC4yNDYtMS4zMTQtMC4zNTZjLTAuNDA3LTAuMTAxLTAuODE3LTAuMTkxLTEuMjI3LTAuMjgxYy0wLjQ0NS0wLjA5OC0wLjg5LTAuMTk0LTEuMzM4LTAuMjc5DQoJCQljLTAuNDE0LTAuMDc4LTAuODMxLTAuMTQ1LTEuMjQ4LTAuMjEyYy0wLjQ1My0wLjA3Mi0wLjkwNS0wLjE0My0xLjM2MS0wLjIwMmMtMC40Mi0wLjA1NC0wLjg0Mi0wLjA5OC0xLjI2NC0wLjE0MQ0KCQkJYy0wLjQ2LTAuMDQ3LTAuOTIxLTAuMDktMS4zODUtMC4xMjJjLTAuNDI0LTAuMDMtMC44NS0wLjA1MS0xLjI3Ni0wLjA2OWMtMC4yNjktMC4wMTItMC41MzQtMC4wMzYtMC44MDQtMC4wNDN2LTI5Ljg1MQ0KCQkJYzAtNC4wMjQtMy4yNjItNy4yODctNy4yODctNy4yODdjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODd2MzEuODU2Yy0xNy4wNTMsNS4yNzktMjkuODM5LDIwLjM1Ni0zMS43NSwzOC42MjNoLTIuOTQyDQoJCQljLTExLjI5NCwwLTIwLjQ4Myw5LjE4OS0yMC40ODMsMjAuNDgzczkuMTg5LDIwLjQ4MywyMC40ODMsMjAuNDgzaDQ0Mi44OTRjMTEuMjk0LDAsMjAuNDgzLTkuMTg5LDIwLjQ4My0yMC40ODMNCgkJCUM0OTcuOTI3LDQ4MC4yMjMsNDg4LjczOCw0NzEuMDM0LDQ3Ny40NDQsNDcxLjAzNHogTTIzOS4zMzMsMjYuNDZjMC0wLjAwMSwwLjAwMS0wLjAwMSwwLjAwMS0wLjAwMWwzLjA4OS00LjYyNw0KCQkJYzMuMDM0LTQuNTQ1LDguMTA5LTcuMjU4LDEzLjU3NC03LjI1OGM1LjQ2NSwwLDEwLjU0LDIuNzEzLDEzLjU3NCw3LjI1OWw0OC4yNzgsNzIuMzA4aC01LjIwMmwtNDYuMTAzLTY5LjA1Mw0KCQkJYy0yLjM1OC0zLjUzMS02LjMtNS42MzktMTAuNTQ2LTUuNjM5Yy00LjI0NiwwLTguMTg5LDIuMTA4LTEwLjU0Niw1LjYzOUwxOTkuMzQ3LDk0LjE0aC01LjIwMmw4Ljc3OC0xMy4xNDhMMjM5LjMzMywyNi40NnoNCgkJCSBNMjk1LjEyNCw5NC4xNEgyMTYuODdsMzkuMTI3LTU4LjYwNEwyOTUuMTI0LDk0LjE0eiBNNzkuODE2LDI5LjdoMTM5LjgzMUwyMDkuNTEsNDQuODgzTDE3Ni42MjIsOTQuMTRINjMuMDgxTDc5LjgxNiwyOS43eg0KCQkJIE02MC45NDgsMTE0LjgwOXYtNi4wOTZoMzkwLjA5OHY2LjA5Nkg2MC45NDh6IE00MjguMTc5LDEyOS4zODJ2MTQzLjIzM0g4My44MTVWMTI5LjM4Mkg0MjguMTc5eiBNNjcuMTA0LDI5NC4wMTQNCgkJCWMtMS44ODEsMC0zLjQxMi0xLjUzMS0zLjQxMi0zLjQxM2MwLTEuODgxLDEuNTMtMy40MTIsMy40MTItMy40MTJINDQ0Ljg5YzEuODgxLDAsMy40MTIsMS41MzEsMy40MTIsMy40MTINCgkJCWMwLDEuODgyLTEuNTMsMy40MTMtMy40MTIsMy40MTNINjcuMTA0eiBNMzYwLjQxNiw0NzAuODkzYzAuMzE3LTAuMTg3LDAuNjM4LTAuMzY4LDAuOTY3LTAuNTM1DQoJCQljMC4xNTYtMC4wNzksMC4zMTYtMC4xNDksMC40NzQtMC4yMjNjMC4yOC0wLjEzMSwwLjU2Mi0wLjI1NiwwLjg1LTAuMzcxYzAuMTgzLTAuMDczLDAuMzY4LTAuMTQyLDAuNTUzLTAuMjA4DQoJCQljMC4yNzItMC4wOTgsMC41NDctMC4xODcsMC44MjQtMC4yNzFjMC4yMDEtMC4wNiwwLjQwMi0wLjEyMSwwLjYwNS0wLjE3NGMwLjI3Ni0wLjA3MiwwLjU1Ni0wLjEzMiwwLjgzNi0wLjE5DQoJCQljMC4yMDctMC4wNDMsMC40MTEtMC4wOTEsMC42Mi0wLjEyNmMwLjM1Ni0wLjA2LDAuNzE4LTAuMTAyLDEuMDgxLTAuMTM5YzAuMTc2LTAuMDE4LDAuMzUyLTAuMDM5LDAuNTI5LTAuMDUyDQoJCQljMC40NDYtMC4wMzEsMC44OTYtMC4wNDcsMS4zNS0wLjA0M2MwLjMzNywwLjAwMywwLjY3OSwwLjAzMiwxLjAyLDAuMDU2YzAuMjM0LDAuMDE2LDAuNDY3LDAuMDIsMC43MDIsMC4wNDYNCgkJCWMwLjU3MiwwLjA2NSwxLjE0NiwwLjE1NSwxLjcxOSwwLjI3OWMzLjUwOSwwLjc1Niw3LjA0Ny0xLjE1NSw4LjMzNy00LjUwN2M0LjA5Mi0xMC42MzksMTQuNDk2LTE3Ljc4NywyNS44OTEtMTcuNzg3DQoJCQljNy45NSwwLDE1LjUzMywzLjQyOCwyMC44MDYsOS40MDZjMC4yMSwwLjIzOCwwLjQzMywwLjQ2LDAuNjY5LDAuNjY2YzAuMDEzLDAuMDExLDAuMDI4LDAuMDIsMC4wNDEsMC4wMzINCgkJCWMwLjkzMiwwLjgwNCwyLjA0MywxLjM1NSwzLjIzLDEuNjA4YzAuOTAzLDAuMTkzLDEuODQ4LDAuMjE2LDIuNzg3LDAuMDUxYzEwLjQxNi0xLjgzMSwxOS45NjQsMy44NjgsMjMuOTIyLDEyLjYyNGgtOTguMDYxDQoJCQlDMzYwLjI1LDQ3MC45ODUsMzYwLjMzNCw0NzAuOTQyLDM2MC40MTYsNDcwLjg5M3ogTTI5MS4wMzgsMzQ3LjgxNXYxMjMuMjE5aC03MC4wODJWMzQ3LjgxNUgyOTEuMDM4eiBNNzcuNzk3LDQ0NS4zNTINCgkJCWMwLjc2Ny0wLjEyMSwxLjUzNi0wLjIxNSwyLjMwNS0wLjI3OWMwLjA2Ni0wLjAwNSwwLjEzMi0wLjAwOSwwLjE5OC0wLjAxNGMwLjc4NC0wLjA2LDEuNTY3LTAuMDk2LDIuMzQzLTAuMDk2DQoJCQljMTAuNjg5LDAsMjAuNDY1LDUuNDI0LDI2LjE1LDE0LjUwOWMxLjE4OCwxLjg5OSwzLjE4NSwzLjE0Nyw1LjQxNCwzLjM4MWMwLjUyMywwLjA1NSwxLjAzOCwwLjEzNSwxLjU0OSwwLjIyNg0KCQkJYzAuMTE1LDAuMDIsMC4yMywwLjA0MSwwLjM0NSwwLjA2M2MwLjUsMC4wOTcsMC45OTUsMC4yMDgsMS40ODMsMC4zMzhjMC4wNjMsMC4wMTcsMC4xMjUsMC4wMzcsMC4xODksMC4wNTUNCgkJCWMwLjQ0NCwwLjEyMywwLjg4MSwwLjI2MSwxLjMxMywwLjQxMWMwLjA5OSwwLjAzNCwwLjE5OSwwLjA2NywwLjI5OCwwLjEwM2MwLjQ2NywwLjE2OSwwLjkyNywwLjM1MywxLjM3OSwwLjU1Mw0KCQkJYzAuMDg4LDAuMDM5LDAuMTc1LDAuMDgxLDAuMjYzLDAuMTIyYzAuNDAzLDAuMTg1LDAuOCwwLjM4LDEuMTksMC41ODhjMC4wNzQsMC4wMzksMC4xNDgsMC4wNzYsMC4yMjIsMC4xMTYNCgkJCWMwLjQzMSwwLjIzNiwwLjg1MiwwLjQ4OCwxLjI2NSwwLjc1MmMwLjA5NCwwLjA2LDAuMTg3LDAuMTIyLDAuMjgsMC4xODRjMC4zODgsMC4yNTcsMC43NjksMC41MjMsMS4xMzksMC44MDMNCgkJCWMwLjAzMiwwLjAyNCwwLjA2NiwwLjA0NywwLjA5OCwwLjA3MmMwLjM5MiwwLjMsMC43NywwLjYxNywxLjE0MSwwLjk0M2MwLjA4NywwLjA3NywwLjE3NCwwLjE1NCwwLjI2LDAuMjMyDQoJCQljMC4zNjUsMC4zMzEsMC43MjIsMC42NzEsMS4wNjQsMS4wMjdjMC4wMjksMC4wMywwLjA1NiwwLjA2MiwwLjA4NCwwLjA5MmMwLjMxOSwwLjMzNiwwLjYyNSwwLjY4MywwLjkyMywxLjAzOQ0KCQkJYzAuMDcyLDAuMDg2LDAuMTQ1LDAuMTcyLDAuMjE2LDAuMjZjMC4wNTMsMC4wNjYsMC4xMDEsMC4xMzYsMC4xNTQsMC4yMDJINTIuMTgxQzU0LjIyOSw0NTcuODY4LDY0LjY0Myw0NDcuNDM5LDc3Ljc5Nyw0NDUuMzUyeg0KCQkJIE00NzcuNDQ0LDQ5Ny40MjdIMzQuNTVjLTMuMjU5LDAtNS45MS0yLjY1MS01LjkxLTUuOTFjMC0zLjI1OSwyLjY1MS01LjkxLDUuOTEtNS45MWg0NDIuODk0YzMuMjU5LDAsNS45MSwyLjY1MSw1LjkxLDUuOTENCgkJCUM0ODMuMzU0LDQ5NC43NzYsNDgwLjcwMyw0OTcuNDI3LDQ3Ny40NDQsNDk3LjQyN3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgIGQ9Ik0xODYuMjEzLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzN2MtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4OCw3LjI4N2g4Ni43OWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkzLjUsMjM0LjgzNSwxOTAuMjM4LDIzMS41NzIsMTg2LjIxMywyMzEuNTcyeiBNMTY4LjMwMywyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIG9wYWNpdHk9IjAuMjUiICBkPSJNMjk5LjY2OCwyMzEuNTcyaC0zLjMzOHYtNjUuNzQ2YzAtNS43MjQtNC42NTctMTAuMzgtMTAuMzgtMTAuMzhoLTU5LjM1NWMtNS43MjQsMC0xMC4zOCw0LjY1Ny0xMC4zOCwxMC4zOHY2NS43NDYNCgkJCWgtMy4zMzhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMC4wMDEsNC4wMjQsMy4yNjMsNy4yODcsNy4yODcsNy4yODdoODYuNzkxYzQuMDI1LDAsNy4yODctMy4yNjIsNy4yODctNy4yODcNCgkJCUMzMDYuOTU1LDIzNC44MzUsMzAzLjY5MywyMzEuNTcyLDI5OS42NjgsMjMxLjU3MnogTTI4MS43NTgsMjMxLjU3M2gtNTAuOTd2LTYxLjU1NGg1MC45N1YyMzEuNTczeiIvPg0KICAgICAgICA8cGF0aCBvcGFjaXR5PSIwLjI1IiAgZD0iTTQxMi41NzIsMjMxLjU3MmgtMy4zMzh2LTY1Ljc0NmMwLTUuNzI0LTQuNjU3LTEwLjM4LTEwLjM3OS0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDg2Ljc5MWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDNDE5Ljg1OSwyMzQuODM1LDQxNi41OTcsMjMxLjU3Miw0MTIuNTcyLDIzMS41NzJ6IE0zOTQuNjYxLDIzMS41NzNoLTUwLjk3di02MS41NTRoNTAuOTdWMjMxLjU3M3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4Mi44MTMsNDEzLjgzM2gtMC41Mjh2LTYwLjA0NWMwLTUuNTY2LTQuNTI5LTEwLjA5NS0xMC4wOTUtMTAuMDk1aC01My44ODZjLTUuNTY2LDAtMTAuMDk1LDQuNTI5LTEwLjA5NSwxMC4wOTV2NjAuMDQ1DQoJCQloLTAuNTI4Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3YzAsNC4wMjUsMy4yNjIsNy4yODcsNy4yODcsNy4yODdoNy44MTRoNTkuNTA0aDcuODE0YzQuMDI1LDAsNy4yODctMy4yNjIsNy4yODctNy4yODcNCgkJCUMxOTAuMSw0MTcuMDk1LDE4Ni44MzgsNDEzLjgzMywxODIuODEzLDQxMy44MzN6IE0xNjcuNzEyLDQxMy44MzNoLTQ0LjkzMXYtNTUuNTY3aDQ0LjkzMVY0MTMuODMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDA0LjMxNCw0MTMuODMzaC0wLjUyOHYtNjAuMDQ1YzAtNS41NjYtNC41MjktMTAuMDk1LTEwLjA5NS0xMC4wOTVoLTUzLjg4NmMtNS41NjYsMC0xMC4wOTYsNC41MjktMTAuMDk2LDEwLjA5NXY2MC4wNDUNCgkJCWgtMC41MjhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMCw0LjAyNSwzLjI2Miw3LjI4Nyw3LjI4Nyw3LjI4N2g3LjgxNEgzOTYuNWg3LjgxNGM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDNDExLjYwMSw0MTcuMDk1LDQwOC4zMzksNDEzLjgzMyw0MDQuMzE0LDQxMy44MzN6IE0zODkuMjEzLDQxMy44MzNoLTQ0LjkzMnYtNTUuNTY3aDQ0LjkzMlY0MTMuODMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjc2LjU0NSw0MDUuMDg5Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3djEyLjYzYzAsNC4wMjQsMy4yNjIsNy4yODcsNy4yODcsNy4yODcNCgkJCWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3di0xMi42M0MyODMuODMyLDQwOC4zNTIsMjgwLjU3LDQwNS4wODksMjc2LjU0NSw0MDUuMDg5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Guest Bathroom":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02My42MTggNjItMi43MTgtNS40NDdhMSAxIDAgMCAwIC0uOS0uNTUzaC0xdi0zMGgzdi0yaC0zdi0xOWE1LjAwNiA1LjAwNiAwIDAgMCAtNS01aC0xNGE1LjAwNiA1LjAwNiAwIDAgMCAtNSA1djFhMyAzIDAgMCAwIC0zIDN2MWgtNWEzIDMgMCAwIDAgLTMgM3YyYTEgMSAwIDAgMCAxIDFoMTV2LTJoLTE0di0xYTEgMSAwIDAgMSAxLTFoMThhMSAxIDAgMCAxIDEgMXYxaC00djJoNWExIDEgMCAwIDAgMS0xdi0yYTMgMyAwIDAgMCAtMy0zaC01di0xYTMgMyAwIDAgMCAtMy0zdi0xYTMgMyAwIDAgMSAzLTNoMTRhMyAzIDAgMCAxIDMgM3YxOWgtNXYyaDV2MTRoLTN2LTJoLTJ2Nmgydi0yaDN2MTRoLTFhMSAxIDAgMCAwIC0uOS41NTNsLTIuNzE4IDUuNDQ3aC01Mi4zODJ2Mmg2NHYtMnptLTI1LjYxOC01M3YxaC00di0xYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxem0xOC42MTggNDloMi43NjRsMiA0aC02Ljc2NHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIgMzcuOTg3djE5LjAxM2ExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LTE5LjFsMi0uMDEzdjIuMTEzaDJ2LTZoLTJ2MS44ODJsLTE4LjAwNi4xMTguMDEyIDJ6bTIgMTIuMDEzaDEwdjFoLTEwem0wIDZ2LTNoMTB2M3ptMTAtOGgtMTB2LTEwLjAyNmwxMC0uMDY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAgMjljNC40ODYgMCA4LTUuMjcxIDgtMTJzLTMuNTE0LTEyLTgtMTItOCA1LjI3MS04IDEyIDMuNTE0IDEyIDggMTJ6bTAtMjJjMy4yNTIgMCA2IDQuNTc5IDYgMTBzLTIuNzQ4IDEwLTYgMTAtNi00LjU3OS02LTEwIDIuNzQ4LTEwIDYtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01LjA5NSAxMy41aDcuODF2MmgtNy44MXoiIHRyYW5zZm9ybT0ibWF0cml4KC43NjggLS42NCAuNjQgLjc2OCAtNy4xOTcgOS4xMjIpIi8+DQogICAgICAgIDxwYXRoIGQ9Im03LjA5NSAxOC41aDcuODF2MmgtNy44MXoiIHRyYW5zZm9ybT0ibWF0cml4KC43NjggLS42NCAuNjQgLjc2OCAtOS45MzQgMTEuNTYyKSIvPg0KICAgIDwvZz4NCjwvc3ZnPg==","Guest Room":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ1NiwzMjhhNDAuMDM3LDQwLjAzNywwLDAsMC04LC44MDQ5M1YxNDRhNy45NzUyMiw3Ljk3NTIyLDAsMCwwLTIuMzQzODEtNS42NTc0NywxNC42NDUzNSwxNC42NDUzNSwwLDAsMSwwLTIwLjY4NTA2QTcuOTc1MjIsNy45NzUyMiwwLDAsMCw0NDgsMTEyVjg4aDQwYTcuOTk5NDYsNy45OTk0NiwwLDAsMCw2Ljk0NTgtMTEuOTY4NzVsLTMyLTU2QTcuOTk4NjMsNy45OTg2MywwLDAsMCw0NTYsMTZIMzg0YTcuOTk4NjMsNy45OTg2MywwLDAsMC02Ljk0NTgsNC4wMzEyNWwtMzIsNTZBNy45OTk0Niw3Ljk5OTQ2LDAsMCwwLDM1Miw4OGg0MHYyNGE3Ljk3NTIyLDcuOTc1MjIsMCwwLDAsMi4zNDM4MSw1LjY1NzQ3LDE0LjY0NTM1LDE0LjY0NTM1LDAsMCwxLDAsMjAuNjg1MDZBNy45NzUyMiw3Ljk3NTIyLDAsMCwwLDM5MiwxNDRWMzIwSDMxMlYyODhoMjRhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgtOFYyNDhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLTgtOEgzMTJWMjE2aDQ4YTguMDAwMDgsOC4wMDAwOCwwLDAsMCw4LThWMTEyYTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThIMjA4YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LDh2OTZhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgsOGg0OHYyNEgyMDUuNDE2MDhsLTEzLjYwNTUzLTM0LjAxNDY1LTQuOTc0MTItMzkuNzkzQTU2LjUzMTQ4LDU2LjUzMTQ4LDAsMCwwLDE4NCwxNTQuMjZWODBBNjQsNjQsMCwwLDAsNTYsODB2NTIuODI4NjFBNTYuMDQxOTMsNTYuMDQxOTMsMCwwLDAsMzMuNTk0MjQsMTYxLjkxOWwtMTcuMTgzNiw1MS41NTA3OGE3Ljk5OCw3Ljk5OCwwLDAsMC0uMTcxODcsNC40NzA3bDUuNTkxMzcsMjIuMzY1NDhBNy45OTc0NSw3Ljk5NzQ1LDAsMCwwLDE2LDI0OFY0ODhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgsOEg0ODhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgtOFYzNjhBNDAuMDQ1NTIsNDAuMDQ1NTIsMCwwLDAsNDU2LDMyOFptMjQsNDB2NTZINDMyVjM2OGEyNCwyNCwwLDAsMSw0OCwwWk0yNjQsNDI0VjQwMGE4LjAwOTE3LDguMDA5MTcsMCwwLDEsOC04SDQwOGE4LjAwOTE3LDguMDA5MTcsMCwwLDEsOCw4djI0Wk05Niw0MjRWNDAwYTguMDA5MTcsOC4wMDkxNywwLDAsMSw4LThIMjQwYTguMDA5MTcsOC4wMDkxNywwLDAsMSw4LDh2MjRabTMyMC04MHYzMy4zNzYyMkEyMy44ODIxMiwyMy44ODIxMiwwLDAsMCw0MDgsMzc2SDI3MmEyMy45MDExMSwyMy45MDExMSwwLDAsMC0xNiw2LjEzMDg2QTIzLjkwMTExLDIzLjkwMTExLDAsMCwwLDI0MCwzNzZIMTA0YTIzLjg4MjEyLDIzLjg4MjEyLDAsMCwwLTgsMS4zNzYyMlYzNDRhOC4wMDkxNyw4LjAwOTE3LDAsMCwxLDgtOEg0MDhBOC4wMDkxNyw4LjAwOTE3LDAsMCwxLDQxNiwzNDRabTEwLjQ1MTcyLTIwOEg0MTMuNTQ4MjhhMzAuODQzNTEsMzAuODQzNTEsMCwwLDAsMC0xNmgxMi45MDM0NEEzMC44NDM1MSwzMC44NDM1MSwwLDAsMCw0MjYuNDUxNzIsMTM2Wk0zODguNjQyNTgsMzJoNjIuNzE0ODRsMjIuODU2OTQsNDBIMzY1Ljc4NTY0Wk00MzIsODh2MTZINDA4Vjg4Wm0tMjQsNjRoMjRWMzM2LjAyMmMtLjM2NjMzLjI3NTY0LS43MjQxOC41NjItMS4wODA2OS44NDk2MUEyNC4wNDM2OSwyNC4wNDM2OSwwLDAsMCw0MDgsMzIwWk0yOTYsMzIwSDEwNGEyNC4wNDM2OSwyNC4wNDM2OSwwLDAsMC0yMi45MTkzMSwxNi44NzE1OEEzOS45LDM5LjksMCwwLDAsMzIsMzM2LjAyMlYyODhIMjk2Wm0zMi00OEgzMlYyNTZIMzI4Wk03MiwyNDBINjRWMjI1LjU0MWw3LjMxNjg5LTE4LjI5Mkw3MiwyMDkuMjk3ODVabTg4LS4wMDAyNC4wMDAyNC4wMDAyNEgxNjBaTTIxNiwyMDBWMTIwSDM1MnY4MEgzMTJWMTY4YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThIMjY0YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LDh2MzJabTU2LTI0aDI0djY0SDI3MlpNMTIwLDMyYTQ4LjA1NCw0OC4wNTQsMCwwLDEsNDgsNDh2NTAuODUzNTJhNTYuNzI1NjIsNTYuNzI1NjIsMCwwLDAtNy45MTk5Mi01LjczNTM2bC0xMS40NDE2NS02Ljg2NUEzMS43OTQwNSwzMS43OTQwNSwwLDAsMCwxNTIsMTA0VjgwYTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThoLTYuMTExMzNhMjAuODMwNTMsMjAuODMwNTMsMCwwLDEtMTguNzMzNC0xMS41NzgxMiw4LjAwMDY0LDguMDAwNjQsMCwwLDAtMTIuODEyLTIuMDc5MTFsLTE2LDE2QTguMDAwNzYsOC4wMDA3NiwwLDAsMCw4OCw4MHYyNGEzMS44MDE4OCwzMS44MDE4OCwwLDAsMCwyLjc1NzUxLDEyLjk3MTE5TDcyLDEyNS4wMVY4MEE0OC4wNTQsNDguMDU0LDAsMCwxLDEyMCwzMlptMTYsNzJhMTYsMTYsMCwwLDEtMzIsMFY4My4zMTM0OGw2Ljk0Njc4LTYuOTQ2MjlBMzYuNjk4MTYsMzYuNjk4MTYsMCwwLDAsMTM2LDg3Ljk1MzEyWm0tMzQuNzcxOTEsMjUuODkyMDlhMzEuOTE2MTMsMzEuOTE2MTMsMCwwLDAsMzYuNzA0NDcuNTk3MTdsMS4yMzcxOC43NDI0M0wxMjAsMTU1LjE5MzM2bC0xOS44NjYyNy0yNC44MzIyOFpNNDguNzczLDE2Ni45Nzk0OUE0MC4wMzUzOCw0MC4wMzUzOCwwLDAsMSw3MC45NjM4NywxNDIuODYyM2wxMy45MTE2Mi01Ljk2MTkxLDI4Ljg3NzQ0LDM2LjA5NjY4YTcuOTk5NDMsNy45OTk0MywwLDAsMCwxMi40OTQxNCwwTDE1Mi45OSwxMzkuNTY4MzZhMzkuNzI3NzksMzkuNzI3NzksMCwwLDEsMTcuOTY5NDgsMjguNjA4NGw1LjEwMjU0LDQwLjgxNTQzYTcuOTgyODEsNy45ODI4MSwwLDAsMCwuNTEwMjYsMS45Nzg1MUwxODguMTgzNTksMjQwSDE4MGwtMjAtMjYuNjY3VjIwMS44MDY2NGE1MC44MjMzOCw1MC44MjMzOCwwLDAsMCwxLjkzMjYyLTM3LjMwNzYybC0yLjM0MzI2LTcuMDI5MjktMTUuMTc4NzIsNS4wNjA1NCwyLjM0MzI3LDcuMDI5M2EzNC45NTUxMywzNC45NTUxMywwLDAsMS0xLjkwOTE4LDI2Ljg2MjMxQTcuOTk5MzQsNy45OTkzNCwwLDAsMCwxNDQsMjAwdjQwSDg4VjIwOGE4LjAwNjQzLDguMDA2NDMsMCwwLDAtLjQxMDY0LTIuNTMwMjdsLTgtMjRhOC4wMDAwOSw4LjAwMDA5LDAsMCwwLTE1LjAxNzA5LS40NDA0M2wtMTYsNDBBNy45OTcyMyw3Ljk5NzIzLDAsMCwwLDQ4LDIyNHYxNkgzOC4yNDYwOWwtNS45MTk5Mi0yMy42ODA2NlpNMzIsMzY4YTI0LDI0LDAsMCwxLDQ4LDB2NTZIMzJaTTQ4MCw0ODBIMzJWNDQwSDQ4MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Gym:QNe,Hall:vNe,"Home Theater":"PHN2ZyBoZWlnaHQ9IjUxMXB0IiB2aWV3Qm94PSIxIC00NCA1MTEuOTk4OTkgNTExIiB3aWR0aD0iNTExcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICA8cGF0aCBkPSJtMjgyLjUxOTUzMSAzMzMuOTg4MjgxYy00LjE3MTg3NSAwLTcuNTQ2ODc1IDMuMzc4OTA3LTcuNTQ2ODc1IDcuNTQ2ODc1IDAgNC4xNjc5NjkgMy4zNzUgNy41NDY4NzUgNy41NDY4NzUgNy41NDY4NzVoMTE0LjMzOTg0NGM3LjA4MjAzMSAwIDEyLjg0Mzc1LTUuNzYxNzE5IDEyLjg0Mzc1LTEyLjg0NzY1NnYtMTkxLjkyOTY4N2MwLTcuMDgyMDMyLTUuNzYxNzE5LTEyLjg0NzY1Ny0xMi44NDM3NS0xMi44NDc2NTdoLTI4MS43MTg3NWMtNy4wODIwMzEgMC0xMi44NDM3NSA1Ljc2NTYyNS0xMi44NDM3NSAxMi44NDc2NTd2MTkxLjkyOTY4N2MwIDcuMDg1OTM3IDUuNzYxNzE5IDEyLjg0NzY1NiAxMi44NDM3NSAxMi44NDc2NTZoMTM3LjE5MTQwNmM0LjE2Nzk2OSAwIDcuNTQ2ODc1LTMuMzc4OTA2IDcuNTQ2ODc1LTcuNTQ2ODc1IDAtNC4xNjc5NjgtMy4zNzg5MDYtNy41NDY4NzUtNy41NDY4NzUtNy41NDY4NzVoLTEzNC45NDUzMTJ2LTE4Ny40Mzc1aDI3Ny4yMjY1NjJ2MTg3LjQzNzV6bTAgMCIvPg0KICAgIDxwYXRoIGQ9Im00OS4yNjE3MTkgODIuNzQyMTg4YzE1LjU4MjAzMSAwIDI4LjI2MTcxOS0xMi42Nzk2ODggMjguMjYxNzE5LTI4LjI1MzkwNyAwLTE1LjU4NTkzNy0xMi42Nzk2ODgtMjguMjYxNzE5LTI4LjI2MTcxOS0yOC4yNjE3MTktMTUuNTc4MTI1IDAtMjguMjUzOTA3IDEyLjY3NTc4Mi0yOC4yNTM5MDcgMjguMjYxNzE5IDAgMTUuNTc0MjE5IDEyLjY3NTc4MiAyOC4yNTM5MDcgMjguMjUzOTA3IDI4LjI1MzkwN3ptMC00MS40MjU3ODJjNy4yNjE3MTkgMCAxMy4xNjc5NjkgNS45MDYyNSAxMy4xNjc5NjkgMTMuMTcxODc1IDAgNy4yNTM5MDctNS45MDYyNSAxMy4xNjAxNTctMTMuMTY3OTY5IDEzLjE2MDE1Ny03LjI1MzkwNyAwLTEzLjE2MDE1Ny01LjkwNjI1LTEzLjE2MDE1Ny0xMy4xNjAxNTcgMC03LjI2NTYyNSA1LjkwNjI1LTEzLjE3MTg3NSAxMy4xNjAxNTctMTMuMTcxODc1em0wIDAiLz4NCiAgICA8cGF0aCBkPSJtNDYyLjczODI4MS41Yy0yNy4xNjQwNjIgMC00OS4yNjk1MzEgMjIuMTA1NDY5LTQ5LjI2OTUzMSA0OS4yNjk1MzF2NTYuMzA0Njg4Yy01LjY1MjM0NC0xLjM2NzE4OC02LjA0Mjk2OS0uNTM1MTU3LTU0LjMzMjAzMS0uNzc3MzQ0LTQuMTY0MDYzIDAtNy41NDI5NjkgMy4zODI4MTMtNy41NDI5NjkgNy41NDY4NzVzMy4zNzg5MDYgNy41NDY4NzUgNy41NDI5NjkgNy41NDY4NzVoNDcuNzIyNjU2YzcuNzMwNDY5IDAgMTMuOTE0MDYzIDYuMzA0Njg3IDEzLjkxNDA2MyAxMy45MTQwNjN2MjExLjkzMzU5M2MwIDcuNjY0MDYzLTYuMjQ2MDk0IDEzLjkxNDA2My0xMy45MTQwNjMgMTMuOTE0MDYzLTU5LjQxNzk2OSAwLTIzMS41NTQ2ODcgMC0zMDEuNzE4NzUgMC03LjY2Nzk2OSAwLTEzLjkxNDA2My02LjI1LTEzLjkxNDA2My0xMy45MTQwNjMgMC0xMC43NDYwOTMgMC0yMDQuNTg5ODQzIDAtMjExLjkzMzU5MyAwLTUuMjczNDM4IDIuOTU3MDMyLTkuODc4OTA3IDcuMzA0Njg4LTEyLjI0NjA5NCA1Ljg0Mzc1LTMuMTc1NzgyLTQuMjQyMTg4LTEuMDQ2ODc1IDIzMC40MjE4NzUtMS42Njc5NjkgNC4xNzU3ODEgMCA3LjU0Njg3NS0zLjM4MjgxMyA3LjU0Njg3NS03LjU0Njg3NXMtMy4zNzEwOTQtNy41NDY4NzUtNy41NDY4NzUtNy41NDY4NzVjLTIzNi4zNTE1NjMuMjczNDM3LTIyNC41NTA3ODEtLjY0NDUzMS0yMzAuNDIxODc1Ljc3NzM0NHYtNTYuMzA0Njg4YzAtMjcuMTY0MDYyLTIyLjEwNTQ2OS00OS4yNjk1MzEtNDkuMjY5NTMxLTQ5LjI2OTUzMS0yMi43Njk1MzEgMC00Mi40NDkyMTkgMTUuNDMzNTk0LTQ3Ljg2MzI4MSAzNy41MjczNDQtLjk4NDM3NiA0LjA1NDY4NyAxLjUgOC4xNDA2MjUgNS41NDI5NjggOS4xMjUgNC4wNDY4NzUuOTg4MjgxIDguMTI4OTA2LTEuNDg4MjgyIDkuMTI1LTUuNTMxMjUgMy43NDYwOTQtMTUuMzI0MjE5IDE3LjM5ODQzOC0yNi4wMzEyNSAzMy4xOTUzMTMtMjYuMDMxMjUgMTguODQzNzUgMCAzNC4xNzU3ODEgMTUuMzM1OTM3IDM0LjE3NTc4MSAzNC4xNzk2ODd2NjUuMzE2NDA3Yy0zLjExMzI4MSAzLjUxMTcxOC01LjM5MDYyNSA3Ljc3MzQzNy02LjUxMTcxOSAxMi40ODA0NjgtMi42NzE4NzUtMTIuODI0MjE4LTE0LjA1ODU5My0yMi40ODgyODEtMjcuNjY0MDYyLTIyLjQ4ODI4MS0xNS41NzgxMjUgMC0yOC4yNTM5MDcgMTIuNjc5Njg3LTI4LjI1MzkwNyAyOC4yNTc4MTMgMCAxNS41NzgxMjQgMTIuNjc1NzgyIDI4LjI1NzgxMiAyOC4yNTM5MDcgMjguMjU3ODEyIDEyLjUzNTE1NiAwIDIzLjE4NzUtOC4yMTA5MzggMjYuODcxMDkzLTE5LjUzMTI1djYxLjM5ODQzOGMtMy42ODM1OTMtMTEuMzIwMzEzLTE0LjMzNTkzNy0xOS41MjczNDQtMjYuODcxMDkzLTE5LjUyNzM0NC0xNS41NzgxMjUgMC0yOC4yNTM5MDcgMTIuNjc1NzgxLTI4LjI1MzkwNyAyOC4yNTM5MDYgMCAxNS41ODIwMzEgMTIuNjc1NzgyIDI4LjI1NzgxMiAyOC4yNTM5MDcgMjguMjU3ODEyIDEyLjUzNTE1NiAwIDIzLjE4NzUtOC4yMDcwMzEgMjYuODcxMDkzLTE5LjUzMTI1djYxLjQwMjM0NGMtMy42ODM1OTMtMTEuMzI0MjE4LTE0LjMzNTkzNy0xOS41MzEyNS0yNi44NzEwOTMtMTkuNTMxMjUtMTUuNTc4MTI1IDAtMjguMjUzOTA3IDEyLjY3NTc4Mi0yOC4yNTM5MDcgMjguMjUzOTA2IDAgMTUuNTgyMDMyIDEyLjY3NTc4MiAyOC4yNTc4MTMgMjguMjUzOTA3IDI4LjI1NzgxMyAxMi41MzUxNTYgMCAyMy4xODc1LTguMjA3MDMxIDI2Ljg3MTA5My0xOS41MzEyNXYxNy4wODk4NDRjLTIwLjEwNTQ2OCAyNS41MzEyNS02MS4wMzkwNjIgMTEuMTI1LTYxLjAzOTA2Mi0yMS4wOTc2NTd2LTIyNS44NDM3NWMwLTQuMTc1NzgxLTMuMzgyODEyLTcuNTQ2ODc0LTcuNTQ2ODc1LTcuNTQ2ODc0LTQuMTc1NzgxIDAtNy41NDY4NzUgMy4zNzEwOTMtNy41NDY4NzUgNy41NDY4NzR2MjI1Ljg0Mzc1YzAgMjQuNjAxNTYzIDE4LjEyMTA5NCA0NS4wNTA3ODIgNDEuNzE4NzUgNDguNjk1MzEzdjYyLjUyNzM0NGgtMTguOTY0ODQ0Yy00LjE2Nzk2OCAwLTcuNTQ2ODc1IDMuMzc4OTA2LTcuNTQ2ODc1IDcuNTQ2ODc1IDAgNC4xNjc5NjggMy4zNzg5MDcgNy41NDY4NzUgNy41NDY4NzUgNy41NDY4NzVoNTMuMDE5NTMyYzQuMTY3OTY4IDAgNy41NDY4NzQtMy4zNzg5MDcgNy41NDY4NzQtNy41NDY4NzUgMC00LjE2Nzk2OS0zLjM3ODkwNi03LjU0Njg3NS03LjU0Njg3NC03LjU0Njg3NWgtMTguOTY0ODQ0di02Mi41MzEyNWM3LjA0Mjk2OC0xLjA4NTkzOCAxMy41OTc2NTYtMy42Njc5NjkgMTkuMzI0MjE4LTcuNDEwMTU3djkuMTk5MjE5YzAgMTUuOTg0Mzc1IDEzLjAxOTUzMiAyOS4wMDM5MDcgMjkuMDA3ODEzIDI5LjAwMzkwN2g0NS44MjAzMTN2MzUuODk4NDM3YzAgNi4yODkwNjMgNS4xMDkzNzQgMTEuNDEwMTU2IDExLjM5ODQzNyAxMS40MTAxNTZoMjEuMTI4OTA2YzYuMjg5MDYzIDAgMTEuMzk4NDM4LTUuMTIxMDkzIDExLjM5ODQzOC0xMS40MTAxNTZ2LTM1Ljg5ODQzN2gxMjIuMjI2NTYydjM1Ljg5ODQzN2MwIDYuMjg5MDYzIDUuMTA5Mzc1IDExLjQxMDE1NiAxMS4zOTg0MzggMTEuNDEwMTU2aDIxLjEyODkwNmM2LjI4OTA2MyAwIDExLjM5ODQzNy01LjEyMTA5MyAxMS4zOTg0MzctMTEuNDEwMTU2di0zNS44OTg0MzdoNDUuODIwMzEzYzE1Ljk4ODI4MSAwIDI5LjAwNzgxMy0xMy4wMTk1MzIgMjkuMDA3ODEzLTI5LjAwMzkwN3YtOS4xOTkyMTljNS43MjY1NjIgMy43NDIxODggMTIuMjgxMjUgNi4zMjQyMTkgMTkuMzI0MjE4IDcuNDEwMTU3djYyLjUzMTI1aC0xOC45NjQ4NDRjLTQuMTY3OTY4IDAtNy41NDY4NzQgMy4zNzg5MDYtNy41NDY4NzQgNy41NDY4NzUgMCA0LjE2Nzk2OCAzLjM3ODkwNiA3LjU0Njg3NSA3LjU0Njg3NCA3LjU0Njg3NWg1My4wMTk1MzJjNC4xNjc5NjggMCA3LjU0Njg3NS0zLjM3ODkwNyA3LjU0Njg3NS03LjU0Njg3NSAwLTQuMTY3OTY5LTMuMzc4OTA3LTcuNTQ2ODc1LTcuNTQ2ODc1LTcuNTQ2ODc1aC0xOC45NjQ4NDR2LTYyLjUyNzM0NGMyMy41OTc2NTYtMy42NDQ1MzEgNDEuNzE4NzUtMjQuMDkzNzUgNDEuNzE4NzUtNDguNjk1MzEzdi0yNDUuOTg4MjgxYzAtMjcuMTY0MDYyLTIyLjA5Mzc1LTQ5LjI2OTUzMS00OS4yNjE3MTktNDkuMjY5NTMxem0tNDEzLjQ3NjU2MiAxNDZjLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2NDA2MiAwLTcuMjU3ODEzIDUuOTA2MjUtMTMuMTY0MDYzIDEzLjE2NDA2My0xMy4xNjQwNjMgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYzIDAgNy4yNTc4MTItNS45MDYyNSAxMy4xNjQwNjItMTMuMTY0MDYyIDEzLjE2NDA2MnptMCA3OC44NTU0NjljLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2Nzk2OSAwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2My0xMy4xNjQwNjIgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYyIDEzLjE2Nzk2OXptMCA3OC44NTE1NjJjLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2Nzk2OSAwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2My0xMy4xNjQwNjIgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYyIDEzLjE2Nzk2OXptMTMwLjUzNTE1NiAxMDMuMjUzOTA3aC0xMy43NDYwOTR2LTMyLjIxODc1aDEzLjc0NjA5NHptMTY2LjE1MjM0NCAwaC0xMy43NDYwOTR2LTMyLjIxODc1aDEzLjc0NjA5NHptMTUwLjk1NzAzMS0xMTEuNzAzMTI2YzAgMzIuMjM4MjgyLTQwLjk0MTQwNiA0Ni42MjEwOTQtNjEuMDM5MDYyIDIxLjA5NzY1N3YtMTcuMDg1OTM4YzMuNjgzNTkzIDExLjMyMDMxMyAxNC4zMzU5MzcgMTkuNTI3MzQ0IDI2Ljg3MTA5MyAxOS41MjczNDQgMTUuNTc4MTI1IDAgMjguMjUzOTA3LTEyLjY3NTc4MSAyOC4yNTM5MDctMjguMjU3ODEzIDAtMTUuNTc4MTI0LTEyLjY3NTc4Mi0yOC4yNTM5MDYtMjguMjUzOTA3LTI4LjI1MzkwNi0xMi41MzUxNTYgMC0yMy4xODM1OTMgOC4yMDcwMzItMjYuODcxMDkzIDE5LjUyNzM0NHYtNjEuMzk0NTMxYzMuNjgzNTkzIDExLjMyMDMxMiAxNC4zMzU5MzcgMTkuNTI3MzQzIDI2Ljg3MTA5MyAxOS41MjczNDMgMTUuNTc4MTI1IDAgMjguMjUzOTA3LTEyLjY3NTc4MSAyOC4yNTM5MDctMjguMjU3ODEyIDAtMTUuNTc4MTI1LTEyLjY3NTc4Mi0yOC4yNTM5MDYtMjguMjUzOTA3LTI4LjI1MzkwNi0xMi41MzUxNTYgMC0yMy4xODM1OTMgOC4yMDcwMzEtMjYuODcxMDkzIDE5LjUyNzM0NHYtNjEuMzk4NDM4YzMuNjgzNTkzIDExLjMyNDIxOSAxNC4zMzU5MzcgMTkuNTMxMjUgMjYuODcxMDkzIDE5LjUzMTI1IDE1LjU3ODEyNSAwIDI4LjI1MzkwNy0xMi42NzU3ODEgMjguMjUzOTA3LTI4LjI1NzgxMiAwLTE1LjU3ODEyNi0xMi42NzU3ODItMjguMjUzOTA3LTI4LjI1MzkwNy0yOC4yNTM5MDctMTMuNjA1NDY5IDAtMjQuOTkyMTg3IDkuNjYwMTU3LTI3LjY2NDA2MiAyMi40ODQzNzUtMS4xMjEwOTQtNC43MDcwMzEtMy4zOTg0MzgtOC45Njg3NS02LjUxMTcxOS0xMi40NzY1NjJ2LTY1LjMyMDMxM2MwLTE4Ljg0Mzc1IDE1LjMzMjAzMS0zNC4xNzk2ODcgMzQuMTc5Njg4LTM0LjE3OTY4NyAxOC44NDM3NSAwIDM0LjE2Nzk2OCAxNS4zMzU5MzcgMzQuMTY3OTY4IDM0LjE3OTY4N3YyNDUuOTg4Mjgxem0tNDcuMzMyMDMxLTQuNzE4NzVjMC03LjI1NzgxMiA1LjkwNjI1LTEzLjE2NDA2MiAxMy4xNjQwNjItMTMuMTY0MDYyIDcuMjU3ODEzIDAgMTMuMTY0MDYzIDUuOTA2MjUgMTMuMTY0MDYzIDEzLjE2NDA2MiAwIDcuMjYxNzE5LTUuOTA2MjUgMTMuMTY3OTY5LTEzLjE2NDA2MyAxMy4xNjc5NjktNy4yNTc4MTIgMC0xMy4xNjQwNjItNS45MDYyNS0xMy4xNjQwNjItMTMuMTY3OTY5em0wLTc4Ljg1MTU2MmMwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2Mi0xMy4xNjQwNjIgNy4yNTc4MTMgMCAxMy4xNjQwNjMgNS45MDYyNSAxMy4xNjQwNjMgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYzIDEzLjE2Nzk2OS03LjI1NzgxMiAwLTEzLjE2NDA2Mi01LjkwNjI1LTEzLjE2NDA2Mi0xMy4xNjc5Njl6bTAtNzguODUxNTYyYzAtNy4yNTc4MTMgNS45MDYyNS0xMy4xNjQwNjMgMTMuMTY0MDYyLTEzLjE2NDA2MyA3LjI1NzgxMyAwIDEzLjE2NDA2MyA1LjkwNjI1IDEzLjE2NDA2MyAxMy4xNjQwNjMgMCA3LjI1NzgxMi01LjkwNjI1IDEzLjE2NDA2Mi0xMy4xNjQwNjMgMTMuMTY0MDYyLTcuMjU3ODEyIDAtMTMuMTY0MDYyLTUuOTA2MjUtMTMuMTY0MDYyLTEzLjE2NDA2MnptMCAwIi8+DQogICAgPHBhdGggZD0ibTQ2Mi43MzgyODEgMjYuMjI2NTYyYy0xNS41ODIwMzEgMC0yOC4yNTc4MTIgMTIuNjc1NzgyLTI4LjI1NzgxMiAyOC4yNTc4MTMgMCAxNS41NzgxMjUgMTIuNjc1NzgxIDI4LjI1MzkwNiAyOC4yNTc4MTIgMjguMjUzOTA2IDE1LjU3ODEyNSAwIDI4LjI1MzkwNy0xMi42NzU3ODEgMjguMjUzOTA3LTI4LjI1MzkwNiAwLTE1LjU4MjAzMS0xMi42NzU3ODItMjguMjU3ODEzLTI4LjI1MzkwNy0yOC4yNTc4MTN6bTAgNDEuNDIxODc2Yy03LjI2MTcxOSAwLTEzLjE2Nzk2OS01LjkwNjI1LTEzLjE2Nzk2OS0xMy4xNjQwNjMgMC03LjI2MTcxOSA1LjkwNjI1LTEzLjE2NDA2MyAxMy4xNjc5NjktMTMuMTY0MDYzIDcuMjU3ODEzIDAgMTMuMTY0MDYzIDUuOTAyMzQ0IDEzLjE2NDA2MyAxMy4xNjQwNjMgMCA3LjI1NzgxMy01LjkwNjI1IDEzLjE2NDA2My0xMy4xNjQwNjMgMTMuMTY0MDYzem0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Kitchen:UNe,"Laundry Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MSAyaC01OGMtLjU1MiAwLTEgLjQ0OC0xIDF2NThjMCAuNTUyLjQ0OCAxIDEgMWg1OGMuNTUyIDAgMS0uNDQ4IDEtMXYtNThjMC0uNTUyLS40NDgtMS0xLTF6bS0xIDZoLTR2LTJjMC0uNTUyLS40NDgtMS0xLTFoLTZjLS41NTIgMC0xIC40NDgtMSAxdjJoLTNjLS41NTIgMC0xIC40NDgtMSAxdjloLTJ2LTE0aDE4em0tMTIuMTQyIDMxLTEuNjkyLTExaDkuNjY5bC0xLjY5MiAxMXptMS4xNDItMTNjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptOC43NTkuMzQ5Yy0uMTktLjIyMi0uNDY3LS4zNDktLjc1OS0uMzQ5aC0yYzAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0aC0yYy0uMjkyIDAtLjU2OS4xMjctLjc1OS4zNDlzLS4yNzQuNTE1LS4yMjkuODAzbDEuODIzIDExLjg0OGgtMy44MzV2LTE5aDE4djE5aC0zLjgzNWwxLjgyMy0xMS44NDhjLjA0NS0uMjg4LS4wMzktLjU4Mi0uMjI5LS44MDN6bS03Ljc1OS0xNy4zNDl2LTJoNHYxMWgtNHptLTIgOWgtMnYtOGgyem04IDB2LThoNHY4em0tMTYtMTR2MTRoLTJ2LTEwYzAtLjU1Mi0uNDQ4LTEtMS0xaC02Yy0uNTUyIDAtMSAuNDQ4LTEgMXYxMGgtMnYtN2MwLS4yNjUtLjEwNS0uNTItLjI5My0uNzA3bC0xLjcwNy0xLjcwN3YtMi41ODZjMC0uNTUyLS40NDgtMS0xLTFoLTRjLS41NTIgMC0xIC40NDgtMSAxdjIuNTg2bC0xLjcwNyAxLjcwN2MtLjE4OC4xODctLjI5My40NDItLjI5My43MDd2N2gtMnYtMTBjMC0uNTUyLS40NDgtMS0xLTFoLThjLS41NTIgMC0xIC40NDgtMSAxdjEwaC0ydi0xNHptLTQgMTRoLTR2LTloNHptLTExLjcwNy04LjI5MyAxLjcwNyAxLjcwN3Y2LjU4NmgtNnYtNi41ODZsMS43MDctMS43MDdjLjE4OC0uMTg3LjI5My0uNDQyLjI5My0uNzA3di0yaDJ2MmMwIC4yNjUuMTA1LjUyLjI5My43MDd6bS0xMC4yOTMgOC4yOTNoLTZ2LTloNnptLTEwIDJoMzZ2NDBoLTM2em00NSAyOGgtMnYtMWgyem0tMyAyaDQuNjQ5bDQuMzUxIDMuNDh2Ni41MmgtOXptMTEgMTB2LTdjMC0uMzA0LS4xMzgtLjU5MS0uMzc1LS43ODFsLTUtNGMtLjE3OC0uMTQyLS4zOTgtLjIxOS0uNjI1LS4yMTl2LTJjMC0uNTUyLS40NDgtMS0xLTFoLTRjLS41NTIgMC0xIC40NDgtMSAxdjJjLS41NTIgMC0xIC40NDgtMSAxdjExaC0ydi0xOWgxOHYxOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDIyaC0zMGMtLjU1MiAwLTEgLjQ0OC0xIDF2MzRjMCAuNTUyLjQ0OCAxIDEgMWgzMGMuNTUyIDAgMS0uNDQ4IDEtMXYtMzRjMC0uNTUyLS40NDgtMS0xLTF6bS0xIDJ2NWgtMjh2LTV6bS0yOCAzMnYtMjVoMjh2MjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMiAzM2MtNi4wNjUgMC0xMSA0LjkzNS0xMSAxMXM0LjkzNSAxMSAxMSAxMSAxMS00LjkzNSAxMS0xMS00LjkzNS0xMS0xMS0xMXptMCAyMGMtNC45NjIgMC05LTQuMDM4LTktOXM0LjAzOC05IDktOSA5IDQuMDM4IDkgOS00LjAzOCA5LTkgOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI2LjE5OSA0OC4yODYgMS4zOTkgMS40MjljLjY3Ny0uNjYzIDEuMjI2LTEuNDMyIDEuNjMxLTIuMjg2bC0xLjgwNy0uODU3Yy0uMzAzLjYzOS0uNzE0IDEuMjE2LTEuMjIzIDEuNzE0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjIgMzZ2MmMzLjMwOSAwIDYgMi42OTEgNiA2aDJjMC00LjQxMS0zLjU4OS04LTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwIDI1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0IDI1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDI1aDJ2MmgtMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Living Area":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5NC41IDI3Ny42NjdoLTUuNXYtMzYuNWMwLTE1LjE2NC0xMi4zMzYtMjcuNS0yNy41LTI3LjVoLTExMGMtNy44NzUgMC0xNC45ODIgMy4zMzItMjAgOC42NTUtNS4wMTgtNS4zMjItMTIuMTI1LTguNjU1LTIwLTguNjU1aC0xMTBjLTcuODc1IDAtMTQuOTgyIDMuMzMyLTIwIDguNjU1LTUuMDE4LTUuMzIyLTEyLjEyNS04LjY1NS0yMC04LjY1NWgtNDAuNWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWg0MC41YzYuODkzIDAgMTIuNSA1LjYwNyAxMi41IDEyLjV2NzcuMDE4Yy0zLjc1My0xLjkyNC04LTMuMDE4LTEyLjUtMy4wMThoLTEwMS41di0yMGMwLTkuNjQ5LTcuODUxLTE3LjUtMTcuNS0xNy41aC0zLjV2LTM2LjVjMC02Ljg5MyA1LjYwNy0xMi41IDEyLjUtMTIuNWgzNC41YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC0zNC41Yy0xNS4xNjQgMC0yNy41IDEyLjMzNi0yNy41IDI3LjV2MzYuNWgtNi41Yy05LjY0OSAwLTE3LjUgNy44NTEtMTcuNSAxNy41djQyLjVjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtNDIuNWMwLTEuMzc4IDEuMTIyLTIuNSAyLjUtMi41aDI1YzEuMzc4IDAgMi41IDEuMTIyIDIuNSAyLjV2MTQwLjVoLTI3LjVjLTEuMzc4IDAtMi41LTEuMTIyLTIuNS0yLjV2LTYwLjVjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NjAuNWMwIDkuNjQ5IDcuODUxIDE3LjUgMTcuNSAxNy41aDI3LjV2MTQuNjY3YzAgNi44OTMgNS42MDcgMTIuNSAxMi41IDEyLjVoMjVjNi44OTMgMCAxMi41LTUuNjA3IDEyLjUtMTIuNXYtMTQuNjY3aDMyMnYxNC42NjdjMCA2Ljg5MyA1LjYwNyAxMi41IDEyLjUgMTIuNWgyNWM2Ljg5MyAwIDEyLjUtNS42MDcgMTIuNS0xMi41di0xNC42NjdoMjcuNWM5LjY0OSAwIDE3LjUtNy44NTEgMTcuNS0xNy41di0xMzhjMC05LjY1LTcuODUxLTE3LjUtMTcuNS0xNy41em0tMTQzLTQ5aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41djM2LjVoLTQuNWMtOS42NDkgMC0xNy41IDcuODUxLTE3LjUgMTcuNXYyMGgtMTAwLjVjLTQuNSAwLTguNzQ3IDEuMDkzLTEyLjUgMy4wMTh2LTc3LjAxOGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41em0tMjkxLjUgMjA3di0xNWgzMjZjNC4xNDIgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjVoLTMyNnYtMTUuNWgxMDEuNWM3Ljg3NSAwIDE0Ljk4Mi0zLjMzMiAyMC04LjY1NSA1LjAxOCA1LjMyMiAxMi4xMjUgOC42NTUgMjAgOC42NTVoMTEwYzcuODc1IDAgMTQuOTgyLTMuMzMyIDIwLTguNjU1IDUuMDE4IDUuMzIyIDEyLjEyNSA4LjY1NSAyMCA4LjY1NWgxMDAuNXYxNS41aC0zMWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWgzMXYxNXptMzkyLTYwLjVoLTEwMC41Yy02Ljg5MyAwLTEyLjUtNS42MDctMTIuNS0xMi41di0yMGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41aDEwMC41em0tMTI4LTEyLjVjMCA2Ljg5My01LjYwNyAxMi41LTEyLjUgMTIuNWgtMTEwYy02Ljg5MyAwLTEyLjUtNS42MDctMTIuNS0xMi41di0yMGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41em0tMTIyLjUtMTM0aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41djc3LjAxOGMtMy43NTMtMS45MjQtOC0zLjAxOC0xMi41LTMuMDE4aC0xMTBjLTQuNSAwLTguNzQ3IDEuMDkzLTEyLjUgMy4wMTh2LTc3LjAxOGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41em0tNDAgMTAxLjVjNi44OTMgMCAxMi41IDUuNjA3IDEyLjUgMTIuNXYyMGMwIDYuODkzLTUuNjA3IDEyLjUtMTIuNSAxMi41aC0xMDEuNXYtNDV6bS04MS41IDEzMi42NjZoLTIwdi0xMi4xNjdoMjB6bTM1MiAwdi0xMi4xNjdoMjB2MTIuMTY3em02NS0yOS42NjZjMCAxLjM3OC0xLjEyMiAyLjUtMi41IDIuNWgtMjcuNXYtMTQwLjVjMC0xLjM3OCAxLjEyMi0yLjUgMi41LTIuNWgyNWMxLjM3OCAwIDIuNSAxLjEyMiAyLjUgMi41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjIgMTczLjY2N2g4OWM2Ljg5MyAwIDEyLjUtNS42MDcgMTIuNS0xMi41di01NmMwLTYuODkzLTUuNjA3LTEyLjUtMTIuNS0xMi41aC04OWMtNi44OTMgMC0xMi41IDUuNjA3LTEyLjUgMTIuNXY1NmMwIDYuODkyIDUuNjA3IDEyLjUgMTIuNSAxMi41em0yLjUtNjZoODR2NTFoLTg0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzYyIDE3My42NjdoODljNi44OTMgMCAxMi41LTUuNjA3IDEyLjUtMTIuNXYtNTZjMC02Ljg5My01LjYwNy0xMi41LTEyLjUtMTIuNWgtODljLTYuODkzIDAtMTIuNSA1LjYwNy0xMi41IDEyLjV2NTZjMCA2Ljg5MiA1LjYwNyAxMi41IDEyLjUgMTIuNXptMi41LTY2aDg0djUxaC04NHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMC40OSAxMzAuMTY3aDExMi4wMmM2Ljg4NyAwIDEyLjQ5LTUuNjAzIDEyLjQ5LTEyLjQ5di0xNi41NDljMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2MTQuMDM5aC0xMDd2LTY2aDEwN3YxNi45NjFjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtMTkuNDcyYzAtNi44ODctNS42MDMtMTIuNDktMTIuNDktMTIuNDloLTExMi4wMmMtNi44ODcgMC0xMi40OSA1LjYwMy0xMi40OSAxMi40OXY3MS4wMjFjMCA2Ljg4NiA1LjYwMyAxMi40OSAxMi40OSAxMi40OXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMS44ODEgMjc4LjEwMmM3LjM0OSA0LjgyOCAxMy41MjIgMTEuMDAyIDE4LjM1MSAxOC4zNTEgMS4zODcgMi4xMSAzLjc0MyAzLjM4MSA2LjI2OCAzLjM4MXM0Ljg4MS0xLjI3MSA2LjI2OC0zLjM4MWM0LjgyOC03LjM0OSAxMS4wMDItMTMuNTIyIDE4LjM1MS0xOC4zNTEgMi4xMS0xLjM4NyAzLjM4MS0zLjc0MyAzLjM4MS02LjI2OHMtMS4yNzEtNC44ODEtMy4zODEtNi4yNjhjLTcuMzQ5LTQuODI4LTEzLjUyMi0xMS4wMDItMTguMzUxLTE4LjM1MS0xLjM4Ny0yLjExLTMuNzQzLTMuMzgxLTYuMjY4LTMuMzgxcy00Ljg4MSAxLjI3MS02LjI2OCAzLjM4MWMtNC44MjggNy4zNDktMTEuMDAyIDEzLjUyMi0xOC4zNTEgMTguMzUxLTIuMTEgMS4zODctMy4zODEgMy43NDMtMy4zODEgNi4yNjhzMS4yNzEgNC44ODEgMy4zODEgNi4yNjh6bTI0LjYxOS0xNC4zNDVjMi40OTQgMi44ODcgNS4xODkgNS41ODMgOC4wNzYgOC4wNzYtMi44ODcgMi40OTQtNS41ODMgNS4xODktOC4wNzYgOC4wNzYtMi40OTQtMi44ODctNS4xODktNS41ODMtOC4wNzYtOC4wNzYgMi44ODctMi40OTMgNS41ODItNS4xODggOC4wNzYtOC4wNzZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zODEuODgxIDI3OC4xMDJjNy4zNDkgNC44MjggMTMuNTIyIDExLjAwMiAxOC4zNTEgMTguMzUxIDEuMzg3IDIuMTEgMy43NDMgMy4zODEgNi4yNjggMy4zODFzNC44ODEtMS4yNzEgNi4yNjgtMy4zODFjNC44MjgtNy4zNDkgMTEuMDAyLTEzLjUyMiAxOC4zNTEtMTguMzUxIDIuMTEtMS4zODcgMy4zODEtMy43NDMgMy4zODEtNi4yNjhzLTEuMjcxLTQuODgxLTMuMzgxLTYuMjY4Yy03LjM0OS00LjgyOC0xMy41MjItMTEuMDAyLTE4LjM1MS0xOC4zNTEtMS4zODctMi4xMS0zLjc0My0zLjM4MS02LjI2OC0zLjM4MXMtNC44ODEgMS4yNzEtNi4yNjggMy4zODFjLTQuODI4IDcuMzQ5LTExLjAwMiAxMy41MjItMTguMzUxIDE4LjM1MS0yLjExIDEuMzg3LTMuMzgxIDMuNzQzLTMuMzgxIDYuMjY4czEuMjcxIDQuODgxIDMuMzgxIDYuMjY4em0yNC42MTktMTQuMzQ1YzIuNDk0IDIuODg3IDUuMTg5IDUuNTgzIDguMDc2IDguMDc2LTIuODg3IDIuNDk0LTUuNTgzIDUuMTg5LTguMDc2IDguMDc2LTIuNDk0LTIuODg3LTUuMTg5LTUuNTgzLTguMDc2LTguMDc2IDIuODg3LTIuNDkzIDUuNTgyLTUuMTg4IDguMDc2LTguMDc2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAwLjIzMiAyNDcuMjE1Yy00LjgyOCA3LjM0OS0xMS4wMDIgMTMuNTIyLTE4LjM1MSAxOC4zNTEtMi4xMSAxLjM4Ny0zLjM4MSAzLjc0My0zLjM4MSA2LjI2OHMxLjI3MSA0Ljg4MSAzLjM4MSA2LjI2OGM3LjM0OSA0LjgyOCAxMy41MjIgMTEuMDAyIDE4LjM1MSAxOC4zNTEgMS4zODcgMi4xMSAzLjc0MyAzLjM4MSA2LjI2OCAzLjM4MXM0Ljg4MS0xLjI3MSA2LjI2OC0zLjM4MWM0LjgyOC03LjM0OSAxMS4wMDItMTMuNTIyIDE4LjM1MS0xOC4zNTEgMi4xMS0xLjM4NyAzLjM4MS0zLjc0MyAzLjM4MS02LjI2OHMtMS4yNzEtNC44ODEtMy4zODEtNi4yNjhjLTcuMzQ5LTQuODI4LTEzLjUyMi0xMS4wMDItMTguMzUxLTE4LjM1MS0xLjM4Ny0yLjExLTMuNzQzLTMuMzgxLTYuMjY4LTMuMzgxcy00Ljg4MSAxLjI3LTYuMjY4IDMuMzgxem0xNC4zNDQgMjQuNjE4Yy0yLjg4NyAyLjQ5NC01LjU4MyA1LjE4OS04LjA3NiA4LjA3Ni0yLjQ5NC0yLjg4Ny01LjE4OS01LjU4My04LjA3Ni04LjA3NiAyLjg4Ny0yLjQ5NCA1LjU4My01LjE4OSA4LjA3Ni04LjA3NiAyLjQ5NCAyLjg4OCA1LjE4OSA1LjU4MyA4LjA3NiA4LjA3NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Living Room":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ3MywzMzEuOTE2VjI3My42NDhBMzkuNzEsMzkuNzEsMCwwLDAsNDMzLjMyOCwyMzRIMzc2VjE3MGg0NC4wMDlhNi4yODksNi4yODksMCwwLDAsNS43NDctOC4wMkw0MDQuODMxLDkyLjI0OEE1Ljk3Niw1Ljk3NiwwLDAsMCwzOTkuMDg0LDg4SDM0MC45MTZhNS45MzIsNS45MzIsMCwwLDAtNS43NDcsNC4yTDMxNC4yNDQsMTYxLjkyYTYuMzcyLDYuMzcyLDAsMCwwLC45MzQsNS40ODMsNi4xNzYsNi4xNzYsMCwwLDAsNC44MTMsMi42SDM2NHY2NEg4OC42NzVBMzkuNzEzLDM5LjcxMywwLDAsMCw0OSwyNzMuNjQ4djU4LjI2OGEzOS40MTcsMzkuNDE3LDAsMCwwLTM3LDM5LjU1NlY0NjMuMWE1LjkxNSw1LjkxNSwwLDAsMCw2LDUuOUgzNXYzMGE2LjI0Niw2LjI0NiwwLDAsMCw2LjI4LDZoNjcuODY3QTUuODc3LDUuODc3LDAsMCwwLDExNSw0OTlWNDY5SDQwN3YzMGE1Ljg3OSw1Ljg3OSwwLDAsMCw1Ljg1NSw2aDY3Ljg2OUE2LjI0Myw2LjI0MywwLDAsMCw0ODcsNDk5VjQ2OWgxN2E1LjkxMyw1LjkxMywwLDAsMCw2LTUuOVYzNzEuNDcyQTM5LjQxNywzOS40MTcsMCwwLDAsNDczLDMzMS45MTZaTTM0NS4zODEsMTAwaDQ5LjIzOGwxNy4zMjYsNThoLTgzLjg5Wk04OC42NzUsMjQ2SDQzMy4zMjhBMjcuNywyNy43LDAsMCwxLDQ2MSwyNzMuNjQ4djU5LjNhMzkuODU0LDM5Ljg1NCwwLDAsMC0zMCwzOC41MjZWMzkwSDkxVjM3MS40NzJhMzkuODU0LDM5Ljg1NCwwLDAsMC0zMC0zOC41MjZ2LTU5LjNBMjcuNywyNy43LDAsMCwxLDg4LjY3NSwyNDZaTTEwMyw0OTNINDdWNDY5aDU2Wm0zNzIsMEg0MTlWNDY5aDU2Wm0yMy0zNkgyNFYzNzEuNDcyYTI3LjUsMjcuNSwwLDEsMSw1NSwwVjM5NS44YTYuNDQ4LDYuNDQ4LDAsMCwwLDYuMzEsNi4ySDQzNi42OTNBNi40NDUsNi40NDUsMCwwLDAsNDQzLDM5NS44VjM3MS40NzJhMjcuNSwyNy41LDAsMSwxLDU1LDBaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTQsMjAzLjIzOFY1Ni42MjZBNS42NCw1LjY0LDAsMCwwLDIwOC4wNjIsNTFoLTUzLjkyTDExMi4yNzIsOC45NDRhNS43MzcsNS43MzcsMCwwLDAtOC40ODQuMDQ3TDYxLjkxOSw1MUg4YTUuNjkzLDUuNjkzLDAsMCwwLTYsNS42MjZWMjAzLjIzOEE1LjgsNS44LDAsMCwwLDgsMjA5SDIwOC4wNjJBNS43NDksNS43NDksMCwwLDAsMjE0LDIwMy4yMzhaTTE3NCwxMzEuOGwtNDIuMjMsMTkuNjg2TDgwLjM2NSwxMTYuNDQzYTYuMjQ1LDYuMjQ1LDAsMCwwLTcuMTMxLjE2M0w0MSwxNDAuNjg2Vjg3SDE3NFpNNDEsMTU1LjY4OWwzNi4wNjItMjYuOTExLDUwLjg4NSwzNC41NDJhNi4xNyw2LjE3LDAsMCwwLDMuNDI3LDEuMDM5LDUuMTY5LDUuMTY5LDAsMCwwLDIuMzMyLS41NTdMMTc0LDE0NS4wMjVWMTczSDQxWk0xNzguMTU1LDc1SDM3LjY4OUwyMy4yNDMsNjNIMTkyLjVaTTI5LDg0LjA5MVYxNzYuMkwxNCwxODkuOTI4VjcwLjQ3M1pNMzcuNywxODVIMTc4LjE0bDEzLjc2NywxMkgyMy44MzVaTTE4NiwxNzYuMjFWODQuMDc4bDE2LTEzLjlWMTkwLjIyNlpNMTA4LjAzLDIxLjg1OSwxMzcuMTcyLDUxSDc4Ljg4OVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyOC4zNzQsMTMzLjJhMjAuMjE0LDIwLjIxNCwwLDEsMC0yMC4yMTQtMjAuMjE0QTIwLjIzNiwyMC4yMzYsMCwwLDAsMTI4LjM3NCwxMzMuMlptMC0yOC40MjdhOC4yMTQsOC4yMTQsMCwxLDEtOC4yMTQsOC4yMTNBOC4yMjMsOC4yMjMsMCwwLDEsMTI4LjM3NCwxMDQuNzY4WiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQ4Ljc4NywzMDguNDRhMjIuMDg3LDIyLjA4NywwLDAsMCwwLDIxLjY2MmwtOC40NzksOC40NzlhNiw2LDAsMSwwLDguNDg0LDguNDg1bDguNDc5LTguNDhhMjIuMDksMjIuMDksMCwwLDAsMjEuNjYyLDBsOC40NzgsOC40NzlhNiw2LDAsMCwwLDguNDg2LTguNDg1bC04LjQ4Ny04LjQ4OGEyMi4yMTEsMjIuMjExLDAsMCwwLDAtMjEuNjQ0bDguNDg3LTguNDg4YTYsNiwwLDAsMC04LjQ4Ni04LjQ4NWwtOC40NzgsOC40NzlhMjIuMDkyLDIyLjA5MiwwLDAsMC0yMS42NjEsMGwtOC40OC04LjQ3OWE2LDYsMCwxLDAtOC40ODQsOC40ODVabTE5LjMxNi42NzhhMTAuMTU2LDEwLjE1NiwwLDEsMS03LjE3OSwyLjk3NEExMC4wODMsMTAuMDgzLDAsMCwxLDM2OC4xLDMwOS4xMThaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMzguNzg3LDMwOC40NGEyMi4wODcsMjIuMDg3LDAsMCwwLDAsMjEuNjYybC04LjQ3OSw4LjQ3OWE2LDYsMCwxLDAsOC40ODQsOC40ODVsOC40NzktOC40OGEyMi4wOSwyMi4wOSwwLDAsMCwyMS42NjIsMGw4LjQ3OCw4LjQ3OWE2LDYsMCwwLDAsOC40ODYtOC40ODVsLTguNDg3LTguNDg4YTIyLjIxMSwyMi4yMTEsMCwwLDAsMC0yMS42NDRsOC40ODctOC40ODhhNiw2LDAsMCwwLTguNDg2LTguNDg1bC04LjQ3OCw4LjQ3OWEyMi4wOTIsMjIuMDkyLDAsMCwwLTIxLjY2MSwwbC04LjQ4LTguNDc5YTYsNiwwLDEsMC04LjQ4NCw4LjQ4NVptMTkuMzE2LjY3OGExMC4xNTYsMTAuMTU2LDAsMSwxLTcuMTc5LDIuOTc0QTEwLjA4MywxMC4wODMsMCwwLDEsMjU4LjEsMzA5LjExOFoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyOC43ODcsMzA4LjQ0YTIyLjA4NywyMi4wODcsMCwwLDAsMCwyMS42NjJsLTguNDc5LDguNDc5YTYsNiwwLDEsMCw4LjQ4NCw4LjQ4NWw4LjQ3OS04LjQ4YTIyLjA5LDIyLjA5LDAsMCwwLDIxLjY2MiwwbDguNDc4LDguNDc5YTYsNiwwLDAsMCw4LjQ4Ni04LjQ4NWwtOC40ODctOC40ODhhMjIuMjExLDIyLjIxMSwwLDAsMCwwLTIxLjY0NGw4LjQ4Ny04LjQ4OGE2LDYsMCwwLDAtOC40ODYtOC40ODVsLTguNDc4LDguNDc5YTIyLjA5MiwyMi4wOTIsMCwwLDAtMjEuNjYxLDBsLTguNDgtOC40NzlhNiw2LDAsMSwwLTguNDg0LDguNDg1Wm0xOS4zMTYuNjc4YTEwLjE1NiwxMC4xNTYsMCwxLDEtNy4xNzksMi45NzRBMTAuMDgzLDEwLjA4MywwLDAsMSwxNDguMSwzMDkuMTE4WiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Locker Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDYwIDYwIiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0yMyA0aC0xNWMtMi4yMDkxMzkgMC00IDEuNzkwODYxLTQgNHYzNGMwIDIuMjA5MTM5IDEuNzkwODYxIDQgNCA0aDZjLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTZjLTEuMTA0NTY5NSAwLTItLjg5NTQzMDUtMi0ydi0zNGMwLTEuMTA0NTY5NS44OTU0MzA1LTIgMi0yaDE1YzEuMTA0NTY5NSAwIDIgLjg5NTQzMDUgMiAydjEyLjA1YzAgLjU1MjI4NDcuNDQ3NzE1MyAxIDEgMXMxLS40NDc3MTUzIDEtMXYtMTIuMDVjMC0yLjIwOTEzOS0xLjc5MDg2MS00LTQtNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExIDEyaDljLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTljLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMSAxNmg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTFzLS40NDc3MTUzLTEtMS0xaC05Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjEgMTljMC0uNTUyMjg0Ny0uNDQ3NzE1My0xLTEtMWgtOWMtLjU1MjI4NDcgMC0xIC40NDc3MTUzLTEgMXMuNDQ3NzE1MyAxIDEgMWg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05IDM1Yy0uNTUyMjg0NzUgMC0xIC40NDc3MTUzLTEgMXY1YzAgLjU1MjI4NDcuNDQ3NzE1MjUgMSAxIDFoM2MuNTUyMjg0NyAwIDEtLjQ0NzcxNTMgMS0xcy0uNDQ3NzE1My0xLTEtMWgtMnYtNGMwLS41NTIyODQ3LS40NDc3MTUyNS0xLTEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUyIDBoLTE1Yy0yLjkxMjIxNDIuMDAxODA2OTEtNS41OTM0MDA4IDEuNTg2MDA1MTgtNyA0LjEzNi0xLjQwNjU5OTItMi41NDk5OTQ4Mi00LjA4Nzc4NTgtNC4xMzQxOTMwOS03LTQuMTM2aC0xNWMtNC40MTYyMjE5Mi4wMDQ5NTk4OC03Ljk5NTA0MDEyIDMuNTgzNzc4MDgtOCA4djM0Yy4wMDQ5NTk4OCA0LjQxNjIyMTkgMy41ODM3NzgwOCA3Ljk5NTA0MDEgOCA4aDZjLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTZjLTMuMzEyMzM3NTctLjAwMzMwNzQtNS45OTY2OTI2Mi0yLjY4NzY2MjQtNi02di0zNGMuMDAzMzA3MzgtMy4zMTIzMzc1NyAyLjY4NzY2MjQzLTUuOTk2NjkyNjIgNi02aDE1YzMuMzEyMzM3Ni4wMDMzMDczOCA1Ljk5NjY5MjYgMi42ODc2NjI0MyA2IDZ2MTJjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xdi0xMmMuMDAzMzA3NC0zLjMxMjMzNzU3IDIuNjg3NjYyNC01Ljk5NjY5MjYyIDYtNmgxNWMzLjMxMjMzNzYuMDAzMzA3MzggNS45OTY2OTI2IDIuNjg3NjYyNDMgNiA2djM0Yy0uMDAzMzA3NCAzLjMxMjMzNzYtMi42ODc2NjI0IDUuOTk2NjkyNi02IDZoLTZjLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDFoNmM0LjQxNjIyMTktLjAwNDk1OTkgNy45OTUwNDAxLTMuNTgzNzc4MSA4LTh2LTM0Yy0uMDA0OTU5OS00LjQxNjIyMTkyLTMuNTgzNzc4MS03Ljk5NTA0MDEyLTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ2IDQ2aDZjMi4yMDkxMzkgMCA0LTEuNzkwODYxIDQtNHYtMzRjMC0yLjIwOTEzOS0xLjc5MDg2MS00LTQtNGgtMTVjLTIuMjA5MTM5IDAtNCAxLjc5MDg2MS00IDR2MTIuMDVjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xdi0xMi4wNWMwLTEuMTA0NTY5NS44OTU0MzA1LTIgMi0yaDE1YzEuMTA0NTY5NSAwIDIgLjg5NTQzMDUgMiAydjM0YzAgMS4xMDQ1Njk1LS44OTU0MzA1IDItMiAyaC02Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMTJoOWMuNTUyMjg0NyAwIDEtLjQ0NzcxNTMgMS0xcy0uNDQ3NzE1My0xLTEtMWgtOWMtLjU1MjI4NDcgMC0xIC40NDc3MTUzLTEgMXMuNDQ3NzE1MyAxIDEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwIDE2aDljLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTljLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyMGg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTFzLS40NDc3MTUzLTEtMS0xaC05Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDkgMjd2M2MwIC41NTIyODQ3LjQ0NzcxNTMgMSAxIDFzMS0uNDQ3NzE1MyAxLTF2LTNjMC0uNTUyMjg0Ny0uNDQ3NzE1My0xLTEtMXMtMSAuNDQ3NzE1My0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNyAyM2MtMy44NjQxNjU3LjAwNDQwODYtNi45OTU1OTE0IDMuMTM1ODM0My03IDd2NmMtMS42NTY4NTQyIDAtMyAxLjM0MzE0NTgtMyAzdjE4YzAgMS42NTY4NTQyIDEuMzQzMTQ1OCAzIDMgM2gyMGMxLjY1Njg1NDIgMCAzLTEuMzQzMTQ1OCAzLTN2LTE4YzAtMS42NTY4NTQyLTEuMzQzMTQ1OC0zLTMtM3YtNmMtLjAwNDQwODYtMy44NjQxNjU3LTMuMTM1ODM0My02Ljk5NTU5MTQtNy03em0xNCAxNnYxOGMwIC41NTIyODQ3LS40NDc3MTUzIDEtMSAxaC0yMGMtLjU1MjI4NDcgMC0xLS40NDc3MTUzLTEtMXYtMThjMC0uNTUyMjg0Ny40NDc3MTUzLTEgMS0xaDIwYy41NTIyODQ3IDAgMSAuNDQ3NzE1MyAxIDF6bS03LTNoLTh2LTZjMC0uNTUyMjg0Ny40NDc3MTUzLTEgMS0xaDZjLjU1MjI4NDcgMCAxIC40NDc3MTUzIDEgMXptNC02djZoLTJ2LTZjMC0xLjY1Njg1NDItMS4zNDMxNDU4LTMtMy0zaC02Yy0xLjY1Njg1NDIgMC0zIDEuMzQzMTQ1OC0zIDN2NmgtMnYtNmMuMDAzMzA2MS0yLjc2MDA1MzIgMi4yMzk5NDY4LTQuOTk2NjkzOSA1LTVoNmMyLjc2MDA1MzIuMDAzMzA2MSA0Ljk5NjY5MzkgMi4yMzk5NDY4IDUgNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxLjIxMyA0MS4xNDRjLTEuNTA0MTcyLS4zNjkzNzI3LTMuMDk0NjQyNi0uMDI1NjA2OC00LjMxMi45MzItMS4yMTc4ODM0Ljk2MTgxMzQtMS45MjAxMjc1IDIuNDM0NjA4OS0xLjkwMDc0MDMgMy45ODYzNjU3LjAxOTM4NzEgMS41NTE3NTY4Ljc1ODIwNzYgMy4wMDY1NDgxIDEuOTk5NzQwMyAzLjkzNzYzNDN2M2MwIDEuNjU2ODU0MiAxLjM0MzE0NTggMyAzIDNzMy0xLjM0MzE0NTggMy0zdi0zYzEuNTQ0NTEwNy0xLjE1Njk1NDQgMi4yODUzNDkyLTMuMDk5NDU1NyAxLjkwMzUxOTEtNC45OTEwODUyLS4zODE4MzAxLTEuODkxNjI5Ni0xLjgxODE1ODctMy4zOTQ2NjQzLTMuNjkwNTE5MS0zLjg2MTkxNDh6bS41ODcgNy4yNTZjLS40OTcxNDc5LjM1NzYwNjYtLjc5NDI0MDEuOTMwNjIzMi0uOCAxLjU0M3YzLjA1N2MwIC41NTIyODQ3LS40NDc3MTUzIDEtMSAxcy0xLS40NDc3MTUzLTEtMXYtMy4wODFjLS4wMDU3MDgyLS42MDIwNTIyLS4yOTk0MjU5LTEuMTY0OTQ5Mi0uNzktMS41MTQtMS4wMzUwNTUzLS43NzE3ODcyLTEuNDYwMjE2NC0yLjExOTI1MDctMS4wNTU1MzY0LTMuMzQ1MzEzMXMxLjU0ODQyMS0yLjA1NTY4NjcgMi44Mzk1MzY0LTIuMDU5Njg2OWMuMjU1MDMwOS4wMDA1MDg1LjUwOTExNDQuMDMxMDUyMi43NTcuMDkxIDEuMDU1ODY4LjI2MzI0NjEgMS44ODI5MDcgMS4wODMzNzcyIDIuMTU1IDIuMTM3LjMxMzM3NDYgMS4xODM5Njk1LS4xMjQ0MTY1IDIuNDM5NTUxMi0xLjEwNiAzLjE3MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Nursery:bNe,Office:$Ne,Outdoors:PNe,Playroom:WNe,Pool:RNe,"Rear Wall":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MDMuNDY3LDguNTMzSDM4NGMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdWMjU2djUxLjJoLTY5LjczNWMwLjk0OC0yLjY3MSwxLjQ2OC01LjU0MiwxLjQ2OC04LjUzMw0KCQkJCWMwLTE0LjExNC0xMS40ODYtMjUuNi0yNS42LTI1LjZoLTE3LjA2N1YyNTZoODUuMzMzYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YxMTAuOTMzYzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzMNCgkJCQlIMTYyLjEzM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjEzNi41MzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g4NS4zMzN2MTcuMDY3SDIzMC40DQoJCQkJYy0xNC4xMTQsMC0yNS42LDExLjQ4Ni0yNS42LDI1LjZjMCwyLjk5MSwwLjUyMSw1Ljg2MiwxLjQ2OCw4LjUzM2gtNjkuNzM1VjI1NlYxMzYuNTMzVjE3LjA2N2MwLTQuNzE5LTMuODIzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJSDguNTMzQzMuODIzLDguNTMzLDAsMTIuMzQ4LDAsMTcuMDY3djExOS40NjdWMjU2djExOS40Njd2MTE5LjQ2N2MwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzSDEyOGgyNTZoMTE5LjQ2Nw0KCQkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMzc1LjQ2N1YyNTZWMTM2LjUzM1YxNy4wNjdDNTEyLDEyLjM0OCw1MDguMTc3LDguNTMzLDUwMy40NjcsOC41MzN6IE0xNzAuNjY3LDE1My42aDE3MC42NjcNCgkJCQl2NTEuMkgxNzAuNjY3VjE1My42eiBNMzQxLjMzMywxMTkuNDY3djE3LjA2N0gxNzAuNjY3di0xNy4wNjdIMzQxLjMzM3ogTTE3MC42NjcsMjIxLjg2N2gxNzAuNjY3djE3LjA2N0gxNzAuNjY3VjIyMS44Njd6DQoJCQkJIE0zNzUuNDY3LDQ4Ni40SDI2NC41MzN2LTkzLjg2N2g1MS4yaDU5LjczM1Y0ODYuNHogTTMwNy4yLDM3NS40NjdIMjA0LjhWMzU4LjRoMTAyLjRWMzc1LjQ2N3ogTTQ5NC45MzMsMjQ3LjQ2N2gtMTcuMDY3VjE3OS4yDQoJCQkJYzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzNoLTI1LjZoLTI1LjZjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y2OC4yNjdoLTE3LjA2N3YtMTAyLjRoMTAyLjRWMjQ3LjQ2N3oNCgkJCQkgTTQyNi42NjcsMjQ3LjQ2N3YtNTkuNzMzaDguNTMzdjU5LjczM0g0MjYuNjY3eiBNNDUyLjI2NywxODcuNzMzaDguNTMzdjU5LjczM2gtOC41MzNWMTg3LjczM3ogTTM5Mi41MzMsMzE1LjczM3YtNTEuMmgyNS42DQoJCQkJaDI1LjZoMjUuNmgyNS42djEwMi40aC0xMDIuNFYzMTUuNzMzeiBNMzkyLjUzMywyNS42aDEwMi40VjEyOGgtMTAyLjRWMjUuNnogTTIyMS44NjcsMjk4LjY2N2MwLTQuNzEsMy44MzEtOC41MzMsOC41MzMtOC41MzMNCgkJCQloNTEuMmM0LjcwMiwwLDguNTMzLDMuODIzLDguNTMzLDguNTMzcy0zLjgzMSw4LjUzMy04LjUzMyw4LjUzM2gtNTEuMkMyMjUuNjk4LDMwNy4yLDIyMS44NjcsMzAzLjM3NywyMjEuODY3LDI5OC42Njd6DQoJCQkJIE0yMzAuNCwzMjQuMjY3aDUxLjJoOTMuODY3djUxLjJoLTUxLjJWMzU4LjRjMC05LjQxMi03LjY1NC0xNy4wNjctMTcuMDY3LTE3LjA2N0gyMDQuOGMtOS40MTIsMC0xNy4wNjcsNy42NTQtMTcuMDY3LDE3LjA2Nw0KCQkJCXYxNy4wNjdoLTUxLjJ2LTUxLjJIMjMwLjR6IE01MS4yLDMzMi44aDM0LjEzM3Y4LjUzM0g1MS4yVjMzMi44eiBNODUuMzMzLDMxNS43MzNINTEuMlYzMDcuMmgzNC4xMzNWMzE1LjczM3ogTTUxLjIsMzU4LjQNCgkJCQloMzQuMTMzdjguNTMzSDUxLjJWMzU4LjR6IE0xMDIuNCwzNDkuODY3di0yNS42di0yNS42YzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzNoLTUxLjJjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzMw0KCQkJCXYyNS42djI1LjZ2MTcuMDY3SDE3LjA2N3YtMTAyLjRoMTAyLjR2NTEuMnY1MS4ySDEwMi40VjM0OS44Njd6IE01OS43MzMsMTEwLjkzM0g3Ni44VjEyOEg1OS43MzNWMTEwLjkzM3ogTTUxLjIsMTQ1LjA2N2gzNC4xMzMNCgkJCQloMzQuMTMzdjEwMi40aC0xMDIuNHYtMTAyLjRINTEuMnogTTE3LjA2NywyNS42aDEwMi40VjEyOGgtMjUuNnYtMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzMw0KCQkJCWMwLTQuNzE5LTMuODIzLTguNTMzLTguNTMzLTguNTMzaC04LjUzM0g1MS4yaC04LjUzM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzYzAsNC43MTksMy44MjMsOC41MzMsOC41MzMsOC41MzNWMTI4DQoJCQkJaC0yNS42VjI1LjZ6IE0xNy4wNjcsMzg0aDI1LjZoNTEuMmgyNS42djEwMi40aC0xMDIuNFYzODR6IE0xMzYuNTMzLDM5Mi41MzNoNTkuNzMzaDUxLjJWNDg2LjRIMTM2LjUzM1YzOTIuNTMzeiBNNDk0LjkzMyw0ODYuNA0KCQkJCWgtMTcuMDY3di02OC4yNjdjMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTguNTMzdi02OC4yNjcNCgkJCQljMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTguNTMzdi02OC4yNjdjMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzMw0KCQkJCXMtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTE3LjA2N1YzODRoMTAyLjRWNDg2LjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMjEuODY3LDQwOS42SDIwNC44Yy00LjcxLDAtOC41MzMsMy44MTQtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoOC41MzN2OC41MzMNCgkJCQljMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2M0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzN2LTE3LjA2N0MyMzAuNCw0MTMuNDE0LDIyNi41NzcsNDA5LjYsMjIxLjg2Nyw0MDkuNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwNy4yLDQwOS42aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM1Y0MzUuMmMwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODE0LDguNTMzLTguNTMzDQoJCQkJdi04LjUzM2g4LjUzM2M0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNTMzExLjkxLDQwOS42LDMwNy4yLDQwOS42eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Second Floor":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAyIDUxMi4wMDIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIHN0cm9rZT0iIiBkPSJNNDc3LjQ0NCw0NzEuMDM0aC0zLjgzM2MtMy42NzktMTQuNDM1LTE1LjkyNi0yNS4zNTYtMzAuODU5LTI3LjI0MVYzMDguNTg3aDIuMTM4YzkuOTE3LDAsMTcuOTg1LTguMDY4LDE3Ljk4NS0xNy45ODYNCgkJCWMwLTkuOTE3LTguMDY4LTE3Ljk4NS0xNy45ODUtMTcuOTg1aC0yLjEzOFYxMjkuMzgyaDkuODE1YzcuMTk3LDAsMTMuMDUyLTUuODU1LDEzLjA1Mi0xMy4wNTJ2LTE0LjkwNA0KCQkJYzAtMC4wMzMtMC4wMDUtMC4wNjUtMC4wMDUtMC4wOThjLTAuMDAxLTAuMDk4LTAuMDA5LTAuMTk2LTAuMDE1LTAuMjk0Yy0wLjAwOS0wLjE3MS0wLjAyMS0wLjM0Mi0wLjA0Mi0wLjUxDQoJCQljLTAuMDExLTAuMDg5LTAuMDI2LTAuMTc3LTAuMDQxLTAuMjY2Yy0wLjAyOS0wLjE4My0wLjA2NS0wLjM2NC0wLjEwOC0wLjU0MmMtMC4wMS0wLjA0LTAuMDE0LTAuMDgxLTAuMDI0LTAuMTIxTDQ0Ni4xMjMsMjUuNDINCgkJCWMtMS41NzQtNi4wNi03LjA0Ny0xMC4yOTMtMTMuMzA3LTEwLjI5M2gtNDkuMTA1Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3czMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDQ4LjQ2OGwxNi43MzQsNjQuNDQNCgkJCUgzMzUuMzcyTDI5Mi4zNDcsMjkuN2g0NS44NjZjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N2MwLTQuMDI1LTMuMjYyLTcuMjg3LTcuMjg3LTcuMjg3aC01NS41OTZsLTAuOTI2LTEuMzg3DQoJCQlDMjc1Ljk0OCw1LjEzNywyNjYuMzQyLDAsMjU1Ljk5NywwYy0xMC4zNDUsMC0xOS45NSw1LjEzNi0yNS42OTQsMTMuNzM5bC0wLjkyNywxLjM4OEg3OS4xNzgNCgkJCWMtNi4yNjEsMC0xMS43MzMsNC4yMzItMTMuMzA3LDEwLjI5M0w0Ni42MDksOTkuNTk1Yy0wLjAxLDAuMDQtMC4wMTQsMC4wODEtMC4wMjQsMC4xMjFjLTAuMDQzLDAuMTc4LTAuMDc5LDAuMzU5LTAuMTA4LDAuNTQyDQoJCQljLTAuMDE0LDAuMDg5LTAuMDMsMC4xNzctMC4wNDEsMC4yNjZjLTAuMDIxLDAuMTY4LTAuMDMzLDAuMzM4LTAuMDQyLDAuNTFjLTAuMDA1LDAuMDk4LTAuMDE0LDAuMTk2LTAuMDE1LDAuMjk0DQoJCQljMCwwLjAzMy0wLjAwNSwwLjA2NS0wLjAwNSwwLjA5OHYxNC45MDRjMCw3LjE5Nyw1Ljg1NSwxMy4wNTIsMTMuMDUyLDEzLjA1Mmg5LjgxNXYxNDMuMjMzaC0yLjEzOA0KCQkJYy05LjkxNywwLTE3Ljk4NSw4LjA2OC0xNy45ODUsMTcuOTg1czguMDY4LDE3Ljk4NiwxNy45ODUsMTcuOTg2aDIuMTM4djQ2LjY5NmMwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQlzNy4yODctMy4yNjIsNy4yODctNy4yODd2LTQ2LjY5NmgzNDQuMzY0djEyOS4zMTFjLTAuMDU1LTAuMDMyLTAuMTEzLTAuMDYtMC4xNjktMC4wOTJjLTAuNzE0LTAuNDE1LTEuNDM5LTAuODEtMi4xNzYtMS4xODINCgkJCWMtMC4xNDQtMC4wNzMtMC4yOTEtMC4xMzktMC40MzUtMC4yMWMtMC42MTQtMC4zMDItMS4yMzUtMC41ODgtMS44NjMtMC44NTljLTAuMjEzLTAuMDkyLTAuNDI1LTAuMTgzLTAuNjM5LTAuMjcyDQoJCQljLTAuNzI3LTAuMy0xLjQ1OS0wLjU4NS0yLjIwMi0wLjg0NGMtMC4wNDQtMC4wMTUtMC4wODctMC4wMzMtMC4xMzEtMC4wNDljLTAuNzg0LTAuMjcxLTEuNTc4LTAuNTExLTIuMzc4LTAuNzM2DQoJCQljLTAuMjE5LTAuMDYyLTAuNDQtMC4xMTgtMC42Ni0wLjE3NmMtMC42NDItMC4xNjktMS4yODktMC4zMjMtMS45NC0wLjQ2MmMtMC4xODgtMC4wNC0wLjM3NS0wLjA4NS0wLjU2NC0wLjEyMw0KCQkJYy0wLjgxMi0wLjE2Mi0xLjYyOS0wLjMtMi40NTEtMC40MTRjLTAuMTc4LTAuMDI1LTAuMzU4LTAuMDQyLTAuNTM3LTAuMDY0Yy0wLjY3MS0wLjA4NC0xLjM0NS0wLjE1Mi0yLjAyMi0wLjIwNA0KCQkJYy0wLjIzNC0wLjAxOC0wLjQ2OC0wLjAzNi0wLjcwMi0wLjA1MWMtMC44NDItMC4wNTEtMS42ODUtMC4wODUtMi41MzMtMC4wODVjLTE1LjQ0NiwwLTI5LjY5OSw4LjYxLTM3LjA2MiwyMS45MTUNCgkJCWMtMC44NDYtMC4wMi0xLjY4NCwwLjAwMS0yLjUxNiwwLjA0NmMtMC4xOTUsMC4wMTEtMC4zODcsMC4wMzQtMC41ODEsMC4wNDhjLTAuNjM2LDAuMDQ3LTEuMjY4LDAuMTA3LTEuODk0LDAuMTkNCgkJCWMtMC4yMywwLjAzMS0wLjQ1OCwwLjA3MS0wLjY4NiwwLjEwN2MtMC41ODYsMC4wOTItMS4xNjgsMC4xOTctMS43NDQsMC4zMjFjLTAuMjM0LDAuMDUtMC40NjUsMC4xMDQtMC42OTcsMC4xNTkNCgkJCWMtMC41NzEsMC4xMzctMS4xMzUsMC4yODktMS42OTUsMC40NTdjLTAuMjE3LDAuMDY1LTAuNDM1LDAuMTI4LTAuNjUsMC4xOThjLTAuNTg4LDAuMTktMS4xNjcsMC40LTEuNzQsMC42MjQNCgkJCWMtMC4xNzEsMC4wNjctMC4zNDUsMC4xMjctMC41MTUsMC4xOTdjLTAuNzA1LDAuMjktMS4zOTksMC42MDItMi4wNzksMC45NDFjLTAuMDI4LDAuMDE0LTAuMDU4LDAuMDI2LTAuMDg2LDAuMDQNCgkJCWMtMC43MzMsMC4zNjktMS40NSwwLjc2Ni0yLjE1LDEuMTljLTAuMDY2LDAuMDQtMC4xMjksMC4wODYtMC4xOTUsMC4xMjdjLTAuNiwwLjM3LTEuMTg3LDAuNzU5LTEuNzYsMS4xNjkNCgkJCWMtMC4xODQsMC4xMzItMC4zNjEsMC4yNzItMC41NDIsMC40MDhjLTAuNDQ3LDAuMzM1LTAuODg4LDAuNjc3LTEuMzE2LDEuMDM2Yy0wLjIwNiwwLjE3Mi0wLjQwNywwLjM1MS0wLjYwOSwwLjUyOQ0KCQkJYy0wLjM5MSwwLjM0NS0wLjc3NCwwLjY5OC0xLjE0OCwxLjA2M2MtMC4yMDEsMC4xOTYtMC40MDEsMC4zOTQtMC41OTcsMC41OTZjLTAuMzY1LDAuMzc2LTAuNzE3LDAuNzYzLTEuMDY0LDEuMTU4DQoJCQljLTAuMTc4LDAuMjAzLTAuMzU5LDAuNDA0LTAuNTMzLDAuNjEyYy0wLjM2NywwLjQ0MS0wLjcxNywwLjg5Ny0xLjA2LDEuMzU5Yy0wLjEzMSwwLjE3Ni0wLjI2OSwwLjM0Ni0wLjM5NiwwLjUyNQ0KCQkJYy0wLjg4NSwxLjI0Ni0xLjY4OSwyLjU2LTIuMzkyLDMuOTQ0aC0zNS40NTdWMzQ2LjE4MWMwLTcuMTM1LTUuODA1LTEyLjkzOS0xMi45MzktMTIuOTM5aC03My4zNDkNCgkJCWMtNy4xMzUsMC0xMi45MzksNS44MDUtMTIuOTM5LDEyLjkzOXYxMjQuODUzaC02MC42MzljLTAuMTg4LTAuNDY5LTAuMzk5LTAuOTI1LTAuNjA1LTEuMzgzDQoJCQljLTAuMDg4LTAuMTk0LTAuMTY2LTAuMzk0LTAuMjU2LTAuNTg2Yy0wLjM1My0wLjc0OS0wLjcyOC0xLjQ4My0xLjEyOC0yLjIwMmMtMC4wNzUtMC4xMzUtMC4xNi0wLjI2My0wLjIzNi0wLjM5Nw0KCQkJYy0wLjMzMS0wLjU3Ny0wLjY3My0xLjE0Ny0xLjAzNC0xLjcwM2MtMC4xNTEtMC4yMzItMC4zMTEtMC40NTYtMC40NjctMC42ODVjLTAuMzA1LTAuNDQ4LTAuNjE2LTAuODkxLTAuOTQtMS4zMjQNCgkJCWMtMC4xODMtMC4yNDUtMC4zNzItMC40ODQtMC41NjItMC43MjRjLTAuMzItMC40MDUtMC42NDYtMC44MDMtMC45ODItMS4xOTNjLTAuMjAyLTAuMjM0LTAuNDA1LTAuNDY3LTAuNjEyLTAuNjk1DQoJCQljLTAuMzUyLTAuMzg4LTAuNzE0LTAuNzY2LTEuMDgxLTEuMTM4Yy0wLjIwNS0wLjIwNy0wLjQwNy0wLjQxNy0wLjYxNi0wLjYyYy0wLjQxOS0wLjQwNS0wLjg1Mi0wLjc5NC0xLjI5LTEuMTc4DQoJCQljLTAuMTcyLTAuMTUxLTAuMzM3LTAuMzA4LTAuNTExLTAuNDU1Yy0wLjYyMi0wLjUyNS0xLjI1OS0xLjAzMS0xLjkxNC0xLjUxM2MtMC4wNjctMC4wNDktMC4xMzctMC4wOTMtMC4yMDQtMC4xNDENCgkJCWMtMC41ODgtMC40MjYtMS4xODgtMC44MzYtMS44MDEtMS4yMjZjLTAuMjI1LTAuMTQ0LTAuNDU4LTAuMjc2LTAuNjg2LTAuNDE0Yy0wLjQ2Ny0wLjI4My0wLjkzOC0wLjU2Mi0xLjQxOC0wLjgyNA0KCQkJYy0wLjI3LTAuMTQ4LTAuNTQ1LTAuMjg3LTAuODE5LTAuNDI4Yy0wLjQ1Ni0wLjIzNC0wLjkxNi0wLjQ2MS0xLjM4My0wLjY3NmMtMC4yOS0wLjEzNC0wLjU4MS0wLjI2NC0wLjg3NS0wLjM5MQ0KCQkJYy0wLjQ3My0wLjIwMy0wLjk1My0wLjM5NC0xLjQzNi0wLjU3OGMtMC4yOTEtMC4xMS0wLjU3OS0wLjIyMy0wLjg3My0wLjMyNmMtMC41MjgtMC4xODYtMS4wNjUtMC4zNTMtMS42MDQtMC41MTQNCgkJCWMtMC4yNTYtMC4wNzctMC41MDgtMC4xNjItMC43NjYtMC4yMzNjLTAuOC0wLjIyMS0xLjYwOC0wLjQyMS0yLjQyOC0wLjU4OGMtMC41MjctMC43MTgtMS4wNzQtMS40MTgtMS42MzctMi4wOTkNCgkJCWMtMC4xOTMtMC4yMzMtMC4zOTgtMC40NTItMC41OTUtMC42ODFjLTAuMzc4LTAuNDQtMC43NTQtMC44ODItMS4xNDctMS4zMDZjLTAuMjQ2LTAuMjY1LTAuNTA1LTAuNTE0LTAuNzU3LTAuNzcyDQoJCQljLTAuMzYtMC4zNjktMC43MTYtMC43NDQtMS4wODctMS4xYy0wLjI3Ny0wLjI2NS0wLjU2Ni0wLjUxNC0wLjg0OS0wLjc3MmMtMC4zNjItMC4zMy0wLjcxOS0wLjY2NC0xLjA5MS0wLjk4MQ0KCQkJYy0wLjMwMS0wLjI1Ny0wLjYxNC0wLjQ5OC0wLjkyMS0wLjc0N2MtMC4zNjgtMC4yOTgtMC43MzItMC42LTEuMTA4LTAuODg2Yy0wLjMyMi0wLjI0NC0wLjY1NC0wLjQ3Mi0wLjk4MS0wLjcwNw0KCQkJYy0wLjM3Ni0wLjI3LTAuNzQ5LTAuNTQ0LTEuMTMzLTAuODAxYy0wLjMzOS0wLjIyNy0wLjY4Ny0wLjQzOS0xLjAzMS0wLjY1N2MtMC4zODctMC4yNDUtMC43NzEtMC40OTMtMS4xNjQtMC43MjUNCgkJCWMtMC4zNTMtMC4yMDktMC43MTUtMC40MDItMS4wNzQtMC42MDFjLTAuMzk3LTAuMjItMC43OTItMC40NDMtMS4xOTYtMC42NTFjLTAuMzY4LTAuMTktMC43NDItMC4zNjQtMS4xMTUtMC41NDQNCgkJCWMtMC40MDYtMC4xOTUtMC44MTEtMC4zOTMtMS4yMjQtMC41NzZjLTAuMzgtMC4xNjktMC43NjUtMC4zMjMtMS4xNS0wLjQ4MmMtMC40MTctMC4xNzEtMC44MzItMC4zNDQtMS4yNTUtMC41MDMNCgkJCWMtMC4zODktMC4xNDctMC43ODQtMC4yOC0xLjE3OC0wLjQxNmMtMC40MjctMC4xNDctMC44NTQtMC4yOTYtMS4yODYtMC40M2MtMC4zOTgtMC4xMjQtMC44MDEtMC4yMzYtMS4yMDQtMC4zNDkNCgkJCWMtMC40MzctMC4xMjMtMC44NzMtMC4yNDYtMS4zMTQtMC4zNTZjLTAuNDA3LTAuMTAxLTAuODE3LTAuMTkxLTEuMjI3LTAuMjgxYy0wLjQ0NS0wLjA5OC0wLjg5LTAuMTk0LTEuMzM4LTAuMjc5DQoJCQljLTAuNDE0LTAuMDc4LTAuODMxLTAuMTQ1LTEuMjQ4LTAuMjEyYy0wLjQ1My0wLjA3Mi0wLjkwNS0wLjE0My0xLjM2MS0wLjIwMmMtMC40Mi0wLjA1NC0wLjg0Mi0wLjA5OC0xLjI2NC0wLjE0MQ0KCQkJYy0wLjQ2LTAuMDQ3LTAuOTIxLTAuMDktMS4zODUtMC4xMjJjLTAuNDI0LTAuMDMtMC44NS0wLjA1MS0xLjI3Ni0wLjA2OWMtMC4yNjktMC4wMTItMC41MzQtMC4wMzYtMC44MDQtMC4wNDN2LTI5Ljg1MQ0KCQkJYzAtNC4wMjQtMy4yNjItNy4yODctNy4yODctNy4yODdjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODd2MzEuODU2Yy0xNy4wNTMsNS4yNzktMjkuODM5LDIwLjM1Ni0zMS43NSwzOC42MjNoLTIuOTQyDQoJCQljLTExLjI5NCwwLTIwLjQ4Myw5LjE4OS0yMC40ODMsMjAuNDgzczkuMTg5LDIwLjQ4MywyMC40ODMsMjAuNDgzaDQ0Mi44OTRjMTEuMjk0LDAsMjAuNDgzLTkuMTg5LDIwLjQ4My0yMC40ODMNCgkJCUM0OTcuOTI3LDQ4MC4yMjMsNDg4LjczOCw0NzEuMDM0LDQ3Ny40NDQsNDcxLjAzNHogTTIzOS4zMzMsMjYuNDZjMC0wLjAwMSwwLjAwMS0wLjAwMSwwLjAwMS0wLjAwMWwzLjA4OS00LjYyNw0KCQkJYzMuMDM0LTQuNTQ1LDguMTA5LTcuMjU4LDEzLjU3NC03LjI1OGM1LjQ2NSwwLDEwLjU0LDIuNzEzLDEzLjU3NCw3LjI1OWw0OC4yNzgsNzIuMzA4aC01LjIwMmwtNDYuMTAzLTY5LjA1Mw0KCQkJYy0yLjM1OC0zLjUzMS02LjMtNS42MzktMTAuNTQ2LTUuNjM5Yy00LjI0NiwwLTguMTg5LDIuMTA4LTEwLjU0Niw1LjYzOUwxOTkuMzQ3LDk0LjE0aC01LjIwMmw4Ljc3OC0xMy4xNDhMMjM5LjMzMywyNi40NnoNCgkJCSBNMjk1LjEyNCw5NC4xNEgyMTYuODdsMzkuMTI3LTU4LjYwNEwyOTUuMTI0LDk0LjE0eiBNNzkuODE2LDI5LjdoMTM5LjgzMUwyMDkuNTEsNDQuODgzTDE3Ni42MjIsOTQuMTRINjMuMDgxTDc5LjgxNiwyOS43eg0KCQkJIE02MC45NDgsMTE0LjgwOXYtNi4wOTZoMzkwLjA5OHY2LjA5Nkg2MC45NDh6IE00MjguMTc5LDEyOS4zODJ2MTQzLjIzM0g4My44MTVWMTI5LjM4Mkg0MjguMTc5eiBNNjcuMTA0LDI5NC4wMTQNCgkJCWMtMS44ODEsMC0zLjQxMi0xLjUzMS0zLjQxMi0zLjQxM2MwLTEuODgxLDEuNTMtMy40MTIsMy40MTItMy40MTJINDQ0Ljg5YzEuODgxLDAsMy40MTIsMS41MzEsMy40MTIsMy40MTINCgkJCWMwLDEuODgyLTEuNTMsMy40MTMtMy40MTIsMy40MTNINjcuMTA0eiBNMzYwLjQxNiw0NzAuODkzYzAuMzE3LTAuMTg3LDAuNjM4LTAuMzY4LDAuOTY3LTAuNTM1DQoJCQljMC4xNTYtMC4wNzksMC4zMTYtMC4xNDksMC40NzQtMC4yMjNjMC4yOC0wLjEzMSwwLjU2Mi0wLjI1NiwwLjg1LTAuMzcxYzAuMTgzLTAuMDczLDAuMzY4LTAuMTQyLDAuNTUzLTAuMjA4DQoJCQljMC4yNzItMC4wOTgsMC41NDctMC4xODcsMC44MjQtMC4yNzFjMC4yMDEtMC4wNiwwLjQwMi0wLjEyMSwwLjYwNS0wLjE3NGMwLjI3Ni0wLjA3MiwwLjU1Ni0wLjEzMiwwLjgzNi0wLjE5DQoJCQljMC4yMDctMC4wNDMsMC40MTEtMC4wOTEsMC42Mi0wLjEyNmMwLjM1Ni0wLjA2LDAuNzE4LTAuMTAyLDEuMDgxLTAuMTM5YzAuMTc2LTAuMDE4LDAuMzUyLTAuMDM5LDAuNTI5LTAuMDUyDQoJCQljMC40NDYtMC4wMzEsMC44OTYtMC4wNDcsMS4zNS0wLjA0M2MwLjMzNywwLjAwMywwLjY3OSwwLjAzMiwxLjAyLDAuMDU2YzAuMjM0LDAuMDE2LDAuNDY3LDAuMDIsMC43MDIsMC4wNDYNCgkJCWMwLjU3MiwwLjA2NSwxLjE0NiwwLjE1NSwxLjcxOSwwLjI3OWMzLjUwOSwwLjc1Niw3LjA0Ny0xLjE1NSw4LjMzNy00LjUwN2M0LjA5Mi0xMC42MzksMTQuNDk2LTE3Ljc4NywyNS44OTEtMTcuNzg3DQoJCQljNy45NSwwLDE1LjUzMywzLjQyOCwyMC44MDYsOS40MDZjMC4yMSwwLjIzOCwwLjQzMywwLjQ2LDAuNjY5LDAuNjY2YzAuMDEzLDAuMDExLDAuMDI4LDAuMDIsMC4wNDEsMC4wMzINCgkJCWMwLjkzMiwwLjgwNCwyLjA0MywxLjM1NSwzLjIzLDEuNjA4YzAuOTAzLDAuMTkzLDEuODQ4LDAuMjE2LDIuNzg3LDAuMDUxYzEwLjQxNi0xLjgzMSwxOS45NjQsMy44NjgsMjMuOTIyLDEyLjYyNGgtOTguMDYxDQoJCQlDMzYwLjI1LDQ3MC45ODUsMzYwLjMzNCw0NzAuOTQyLDM2MC40MTYsNDcwLjg5M3ogTTI5MS4wMzgsMzQ3LjgxNXYxMjMuMjE5aC03MC4wODJWMzQ3LjgxNUgyOTEuMDM4eiBNNzcuNzk3LDQ0NS4zNTINCgkJCWMwLjc2Ny0wLjEyMSwxLjUzNi0wLjIxNSwyLjMwNS0wLjI3OWMwLjA2Ni0wLjAwNSwwLjEzMi0wLjAwOSwwLjE5OC0wLjAxNGMwLjc4NC0wLjA2LDEuNTY3LTAuMDk2LDIuMzQzLTAuMDk2DQoJCQljMTAuNjg5LDAsMjAuNDY1LDUuNDI0LDI2LjE1LDE0LjUwOWMxLjE4OCwxLjg5OSwzLjE4NSwzLjE0Nyw1LjQxNCwzLjM4MWMwLjUyMywwLjA1NSwxLjAzOCwwLjEzNSwxLjU0OSwwLjIyNg0KCQkJYzAuMTE1LDAuMDIsMC4yMywwLjA0MSwwLjM0NSwwLjA2M2MwLjUsMC4wOTcsMC45OTUsMC4yMDgsMS40ODMsMC4zMzhjMC4wNjMsMC4wMTcsMC4xMjUsMC4wMzcsMC4xODksMC4wNTUNCgkJCWMwLjQ0NCwwLjEyMywwLjg4MSwwLjI2MSwxLjMxMywwLjQxMWMwLjA5OSwwLjAzNCwwLjE5OSwwLjA2NywwLjI5OCwwLjEwM2MwLjQ2NywwLjE2OSwwLjkyNywwLjM1MywxLjM3OSwwLjU1Mw0KCQkJYzAuMDg4LDAuMDM5LDAuMTc1LDAuMDgxLDAuMjYzLDAuMTIyYzAuNDAzLDAuMTg1LDAuOCwwLjM4LDEuMTksMC41ODhjMC4wNzQsMC4wMzksMC4xNDgsMC4wNzYsMC4yMjIsMC4xMTYNCgkJCWMwLjQzMSwwLjIzNiwwLjg1MiwwLjQ4OCwxLjI2NSwwLjc1MmMwLjA5NCwwLjA2LDAuMTg3LDAuMTIyLDAuMjgsMC4xODRjMC4zODgsMC4yNTcsMC43NjksMC41MjMsMS4xMzksMC44MDMNCgkJCWMwLjAzMiwwLjAyNCwwLjA2NiwwLjA0NywwLjA5OCwwLjA3MmMwLjM5MiwwLjMsMC43NywwLjYxNywxLjE0MSwwLjk0M2MwLjA4NywwLjA3NywwLjE3NCwwLjE1NCwwLjI2LDAuMjMyDQoJCQljMC4zNjUsMC4zMzEsMC43MjIsMC42NzEsMS4wNjQsMS4wMjdjMC4wMjksMC4wMywwLjA1NiwwLjA2MiwwLjA4NCwwLjA5MmMwLjMxOSwwLjMzNiwwLjYyNSwwLjY4MywwLjkyMywxLjAzOQ0KCQkJYzAuMDcyLDAuMDg2LDAuMTQ1LDAuMTcyLDAuMjE2LDAuMjZjMC4wNTMsMC4wNjYsMC4xMDEsMC4xMzYsMC4xNTQsMC4yMDJINTIuMTgxQzU0LjIyOSw0NTcuODY4LDY0LjY0Myw0NDcuNDM5LDc3Ljc5Nyw0NDUuMzUyeg0KCQkJIE00NzcuNDQ0LDQ5Ny40MjdIMzQuNTVjLTMuMjU5LDAtNS45MS0yLjY1MS01LjkxLTUuOTFjMC0zLjI1OSwyLjY1MS01LjkxLDUuOTEtNS45MWg0NDIuODk0YzMuMjU5LDAsNS45MSwyLjY1MSw1LjkxLDUuOTENCgkJCUM0ODMuMzU0LDQ5NC43NzYsNDgwLjcwMyw0OTcuNDI3LDQ3Ny40NDQsNDk3LjQyN3oiLz4NCiAgICAgICAgPHBhdGggIGQ9Ik0xODYuMjEzLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzN2MtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4OCw3LjI4N2g4Ni43OWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkzLjUsMjM0LjgzNSwxOTAuMjM4LDIzMS41NzIsMTg2LjIxMywyMzEuNTcyeiBNMTY4LjMwMywyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTkuNjY4LDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU1Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4Nyw3LjI4N2g4Ni43OTFjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzMwNi45NTUsMjM0LjgzNSwzMDMuNjkzLDIzMS41NzIsMjk5LjY2OCwyMzEuNTcyeiBNMjgxLjc1OCwyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MTIuNTcyLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zNzktMTAuMzhoLTU5LjM1NmMtNS43MjQsMC0xMC4zOCw0LjY1Ny0xMC4zOCwxMC4zOHY2NS43NDYNCgkJCWgtMy4zMzhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMCw0LjAyNCwzLjI2Miw3LjI4Nyw3LjI4Nyw3LjI4N2g4Ni43OTFjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzQxOS44NTksMjM0LjgzNSw0MTYuNTk3LDIzMS41NzIsNDEyLjU3MiwyMzEuNTcyeiBNMzk0LjY2MSwyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIG9wYWNpdHk9IjAuMjUiIGQ9Ik0xODIuODEzLDQxMy44MzNoLTAuNTI4di02MC4wNDVjMC01LjU2Ni00LjUyOS0xMC4wOTUtMTAuMDk1LTEwLjA5NWgtNTMuODg2Yy01LjU2NiwwLTEwLjA5NSw0LjUyOS0xMC4wOTUsMTAuMDk1djYwLjA0NQ0KCQkJaC0wLjUyOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLDQuMDI1LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDcuODE0aDU5LjUwNGg3LjgxNGM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkwLjEsNDE3LjA5NSwxODYuODM4LDQxMy44MzMsMTgyLjgxMyw0MTMuODMzeiBNMTY3LjcxMiw0MTMuODMzaC00NC45MzF2LTU1LjU2N2g0NC45MzFWNDEzLjgzM3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgZD0iTTQwNC4zMTQsNDEzLjgzM2gtMC41Mjh2LTYwLjA0NWMwLTUuNTY2LTQuNTI5LTEwLjA5NS0xMC4wOTUtMTAuMDk1aC01My44ODZjLTUuNTY2LDAtMTAuMDk2LDQuNTI5LTEwLjA5NiwxMC4wOTV2NjAuMDQ1DQoJCQloLTAuNTI4Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3YzAsNC4wMjUsMy4yNjIsNy4yODcsNy4yODcsNy4yODdoNy44MTRIMzk2LjVoNy44MTRjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzQxMS42MDEsNDE3LjA5NSw0MDguMzM5LDQxMy44MzMsNDA0LjMxNCw0MTMuODMzeiBNMzg5LjIxMyw0MTMuODMzaC00NC45MzJ2LTU1LjU2N2g0NC45MzJWNDEzLjgzM3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgZD0iTTI3Ni41NDUsNDA1LjA4OWMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N3YxMi42M2MwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQljNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N3YtMTIuNjNDMjgzLjgzMiw0MDguMzUyLDI4MC41Nyw0MDUuMDg5LDI3Ni41NDUsNDA1LjA4OXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Shed:JNe,"Sleeping Area":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NTYsMjI0Yy0xNC4xMzMsMC0yNCw2LjMwMS0yNCwxNS4zMnYyNy41MDVDNDE5LjMzMywyNDEuNzkzLDM5OS44NSwyMjQsMzc2LDIyNEgxNTJjLTQuNDE3LTAuMDAxLTcuOTk5LDMuNTc5LTgsNy45OTYNCgkJCWMwLDAuMDAxLDAsMC4wMDMsMCwwLjAwNHY0OC4wNjdjMC4wNDUtMTMuMDUyLTUuMjAxLTI2LjA3NS0xNS41ODYtMzUuNTgzYy0xOS41NTItMTcuOTAyLTQ5LjkxNS0xNi41NjQtNjcuODE2LDIuOTg5DQoJCQljLTE2Ljc2NCwxOC4zMDktMTYuODAxLDQ2LjM4LTAuMDg2LDY0LjczNGMtNC42MTIsMC41MDgtOC45NjgsMi4zOC0xMi41MTIsNS4zNzVWMTE1LjE5OUM0OCwxMDQuNDM0LDM3LjQ2MSw5NiwyNCw5Ng0KCQkJcy0yNCw4LjQzNC0yNCwxOS4xOTl2MzQ1LjYwMkMwLDQ3MS41NjYsMTAuNTM5LDQ4MCwyNCw0ODBzMjQtOC40MzQsMjQtMTkuMTk5VjQwOGgzODR2NTYuNjhjMCw5LjAxOSw5Ljg2NywxNS4zMiwyNCwxNS4zMg0KCQkJczI0LTYuMzAxLDI0LTE1LjMyVjIzOS4zMkM0ODAsMjMwLjMwMSw0NzAuMTMzLDIyNCw0NTYsMjI0eiBNMzIsNDYwLjgwMWMtMC4wODYsMC42NTYtMi43NzMsMy4xOTktOCwzLjE5OQ0KCQkJYy01LjI1LDAtNy45MjItMi41NDMtOC0zLjE5OVYxMTUuMTk5YzAuMDc4LTAuNjU2LDIuNzUtMy4xOTksOC0zLjE5OWM1LjIyNywwLDcuOTE0LDIuNTQzLDgsMy4xOTlWNDYwLjgwMXogTTE2MCwyNDBoMjE2DQoJCQljMzAuMTcyLDAsNTMuMTcyLDQ0LjkyNiw1NS43NTgsODhIMTYwVjI0MHogTTE0NCwyODAuMDgzdjM4LjU2Yy0zLjQ1Mi0zLjM1My03Ljg0OC01LjU2Ni0xMi41OTctNi4zNDINCgkJCUMxMzkuNzkzLDMwMy4xMzcsMTQzLjk1NiwyOTEuNiwxNDQsMjgwLjA4M3ogTTk2LDI0OGMxNy42NzMsMCwzMiwxNC4zMjcsMzIsMzJjMCwxNy42NzMtMTQuMzI3LDMyLTMyLDMycy0zMi0xNC4zMjctMzItMzINCgkJCUM2NC4wMTksMjYyLjMzNSw3OC4zMzUsMjQ4LjAxOSw5NiwyNDh6IE00MzIsMzkySDQ4di00OC4wMjNjNC4xNjMtMC4zMjgsNy4zNzQtMy44MDEsNy4zNzUtNy45NzcNCgkJCWMtMC4wNzctNC4zMzEsMy4zNjQtNy45MDksNy42OTUtOGg2NC42MWM0LjMzMSwwLjA5MSw3Ljc3MiwzLjY2OSw3LjY5NSw4Yy0wLjAwMSw0LjQxNywzLjU3OSw3Ljk5OSw3Ljk5Niw4DQoJCQljMC4wMDEsMCwwLjAwMywwLDAuMDA0LDBINDMyVjM5MnogTTQ2NCw0NjIuNTk0Yy01LjE2OSwxLjg3NS0xMC44MzEsMS44NzUtMTYsMFYyNDEuNDA2YzUuMTY5LTEuODc1LDEwLjgzMS0xLjg3NSwxNiwwVjQ2Mi41OTR6Ig0KICAgICAgICAvPg0KICAgICAgICA8cGF0aCBkPSJNMTM3LjA3OCwxNzZsMjkuMDctMzQuODc5YzEuOTg2LTIuMzg2LDIuNDEzLTUuNzA1LDEuMDk0LTguNTE2Yy0xLjMxNi0yLjgxLTQuMTM5LTQuNjA1LTcuMjQyLTQuNjA1aC00OHYxNmgzMC45MjINCgkJCWwtMjkuMDcsMzQuODc5Yy0yLjgyNywzLjM5OC0yLjM2NCw4LjQ0NCwxLjAzNCwxMS4yN2MxLjQzNywxLjE5NSwzLjI0NiwxLjg1LDUuMTE0LDEuODUxaDQ4di0xNkgxMzcuMDc4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjI0LjM1OSwxMzZsNDUuOTUzLTU5LjA5YzEuODc3LTIuNDExLDIuMjE3LTUuNjgxLDAuODc1LTguNDI2Yy0xLjM0NC0yLjc0My00LjEzMi00LjQ4My03LjE4OC00LjQ4NGgtNjR2MTZoNDcuNjQxDQoJCQlsLTQ1Ljk1Myw1OS4wOWMtMi43MTQsMy40ODQtMi4wODksOC41MDksMS4zOTYsMTEuMjIzYzEuNDA1LDEuMDk0LDMuMTM2LDEuNjg4LDQuOTE3LDEuNjg4aDY0di0xNkgyMjQuMzU5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzI4LDk2bDYyLjM5OC04My4xOTljMi42NTItMy41MzMsMS45MzktOC41NDYtMS41OTQtMTEuMTk5QzM4Ny40MTksMC41NjIsMzg1LjczMywwLDM4NCwwaC03MnYxNmg1NmwtNjIuMzk4LDgzLjE5OQ0KCQkJYy0xLjgxOCwyLjQyNC0yLjExMiw1LjY2OC0wLjc1OCw4LjM3OUMzMDYuMiwxMTAuMjg4LDMwOC45NywxMTIsMzEyLDExMmg4MFY5NkgzMjh6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Stairway:BNe,Stairwell:GNe,Storeroom:FNe,"Summer House":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTkgNTExLjk5OSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTE3My44MzIsMjI1LjI2M2gtNDMuMDM5Yy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41djYwLjEzNGMwLDQuMTQyLDMuMzU3LDcuNSw3LjUsNy41aDQzLjAzOWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41DQoJCQl2LTYwLjEzNEMxODEuMzMyLDIyOC42MjIsMTc3Ljk3NCwyMjUuMjYzLDE3My44MzIsMjI1LjI2M3ogTTE2Ni4zMzEsMjg1LjM5N2gtMjguMDM4di00NS4xMzNoMjguMDM4VjI4NS4zOTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NTkuMTI3LDIwMS4xOTNjMy4zMTQsMi4yNzgsOC4wOTEsMS40NzEsMTAuNDMtMS45MzJjMCwwLDIzLjAwOS0zMy40NjksMjMuMDI5LTMzLjQ5OA0KCQkJYzIuMzE1LTMuMzY4LDEuNDI4LTguMTIxLTEuOTMyLTEwLjQzMUwyNzEuNzYzLDQuODYxYy05LjQyOS02LjQ4LTIyLjA5Ny02LjQ4MS0zMS41MjYsMGMwLDAtMTM5Ljc2Miw5Ni4wNzctMTQwLjI3Myw5Ni40MjgNCgkJCWMtNy45MTEsNS40MzgsMC40MjksMTcuOTEsOC40OTcsMTIuMzYzbDE0MC4yNzQtOTYuNDI5YzQuMzQ3LTIuOTg3LDEwLjE4Ny0yLjk4NywxNC41MzEtMC4wMDFsMjEyLjcwOSwxNDYuMjI0bC0xNC41MzEsMjEuMTM3DQoJCQljMCwwLTIwMS4xNDMtMTM4LjI3Mi0yMDEuMTk1LTEzOC4zMDhjLTIuNDk1LTEuNzE1LTUuOTk5LTEuNzE4LTguNDk4LTAuMDAxTDUwLjU1NywxODQuNTgzbC0xNC41My0yMS4xMzcNCgkJCWMwLDAsNDcuMTE3LTMyLjM5LDQ3LjI4OS0zMi41MDljNy44MDctNS4zNjYtMC40MTYtMTcuOTE3LTguNDk4LTEyLjM2MmMwLDAtNTMuMzAxLDM2LjY0LTUzLjQ3MSwzNi43NTcNCgkJCWMtMy4zNzQsMi4zMi00LjI0MSw3LjA3MS0xLjkzMywxMC40MzFsMjEuNzA5LDMxLjU3OXYzMDcuMTU2YzAsNC4xNDIsMy4zNTgsNy41LDcuNSw3LjVIMjU2YzQuMTQyLDAsNy41LTMuMzU4LDcuNS03LjVWMzk1Ljk3MQ0KCQkJSDQwMi42NHYxMDguNTI4YzAsNC4xNDIsMy4zNTgsNy41LDcuNTAxLDcuNWgzMC40ODhjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNVYzOTUuOTcxaDIzLjc2OWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41di0zMC40ODcNCgkJCWMwLTQuMTQzLTMuMzU4LTcuNS03LjUtNy41aC0yMy43Njl2LTU3LjI1OWgyMy43NjljNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNXYtMzAuNDg4YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTIzLjc2OXYtNTQuMTAzDQoJCQlMNDU5LjEyNywyMDEuMTkzeiBNNDE3LjY0MSwxODYuODc2aDE1LjQ4N3Y2MC44NThoLTE1LjQ4N1YxODYuODc2eiBNMjU2LDYxLjU1NmwzOS4wNzUsMjYuODYxaC03OC4xNDlMMjU2LDYxLjU1NnoNCgkJCSBNNTYuMTI1LDI3MC4zMzJoMzguMzk5djUzLjA1NWMwLDQuMTQxLDMuMzU4LDcuNSw3LjUsNy41SDIwMi42YzQuMTQyLDAsNy41MDEtMy4zNTgsNy41MDEtNy41di01My4wNTVoMzguMzk4djY4LjQ1Nkg1Ni4xMjUNCgkJCVYyNzAuMzMyeiBNMTA5LjUyNSwzMTUuODg2VjIwOS43NzdoODUuNTc1djEwNi4xMDlIMTA5LjUyNXogTTk0LjUyNCw0OTYuOTk4SDU2LjEyNXYtNTkuNzU0aDM4LjM5OVY0OTYuOTk4eiBNMTY2LjMzMSw0OTYuOTk3DQoJCQloLTI4LjAzOHYtODUuNzgzaDI4LjAzOFY0OTYuOTk3eiBNMTk1LjA5OSw0OTYuOTk3aC0xMy43Njd2LTkzLjI4M2MwLTQuMTQyLTMuMzU4LTcuNS03LjUtNy41aC00My4wMzkNCgkJCWMtNC4xNDIsMC03LjUwMSwzLjM1OC03LjUwMSw3LjV2OTMuMjgzaC0xMy43NjhWMzgwLjcyN2g4NS41NzVWNDk2Ljk5N3ogTTI0OC40OTksNDk2Ljk5OEgyMTAuMXYtNTkuNzU0aDM4LjM5OFY0OTYuOTk4eg0KCQkJIE0yNDguNSw0MjIuMjQ0aC0zOC4zOTl2LTQ5LjAxOGMtMC4wMDEtNC4xNDItMy4zNTktNy41LTcuNTAyLTcuNUgxMDIuMDI0Yy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41MDF2NDkuMDE4SDU2LjEyNXYtNjguNDU2DQoJCQlIMjQ4LjVWNDIyLjI0NHogTTI0OC41LDI1NS4yMjVjMCwwLjAwMywwLDAuMDA2LDAsMC4wMXYwLjA5NmgtMzguMzk5di01My4wNTVjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNUgxMDIuMDI0DQoJCQljLTQuMTQyLDAtNy41LDMuMzU4LTcuNSw3LjV2NTMuMDU1SDU2LjEyNXYtNTYuMzczbDE3LjY2My0xMi4xNDNjMC4yOTcsMC4wMzYsMC41OTcsMC4wNiwwLjkwNCwwLjA2SDI0OC41VjI1NS4yMjV6DQoJCQkgTTk1LjUyMywxNzEuODc1bDk5LjU4MS02OC40NTZoMTIxLjc5M2w5OS41ODEsNjguNDU2aC02LjMzNkg5NS41MjN6IE00MDIuNjQsMTg2Ljg3NnY2MC44NThIMjYzLjUwMXYtNjAuODU4SDQwMi42NHoNCgkJCSBNMjYzLjUwMSwyOTMuMjIzaDE1LjQ4NnY1Ny4yNTloLTE1LjQ4NlYyOTMuMjIzeiBNNDMzLjEyOCw0OTYuOTk4aC0xNS40ODdWMzk1Ljk3MWgxNS40ODdWNDk2Ljk5OHogTTQ2NC4zOTcsMzY1LjQ4NHYxNS40ODYNCgkJCUgyNjMuNTAxdi0xNS40ODZINDY0LjM5N3ogTTI5My45ODgsMzUwLjQ4MnYtNTcuMjU5aDE1LjQ4N3Y1Ny4yNTlIMjkzLjk4OHogTTMyNC40NzYsMzUwLjQ4MnYtNTcuMjU5aDE2LjMzN3Y1Ny4yNTlIMzI0LjQ3NnoNCgkJCSBNMzU1LjgxNCwzNTAuNDgydi01Ny4yNTloMTUuNDg3djU3LjI1OUgzNTUuODE0eiBNMzg2LjMwMiwzNTAuNDgydi01Ny4yNTloMTYuMzM3djU3LjI1OUgzODYuMzAyeiBNNDE3LjY0MSwzNTAuNDgydi01Ny4yNTkNCgkJCWgxNS40ODd2NTcuMjU5SDQxNy42NDF6IE00NjQuMzk3LDI2Mi43MzV2MTUuNDg3SDI2My41MDF2LTE1LjQ4N0g0NjQuMzk3eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Swimming Pool":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE4Ny43MzMgMTg3LjczMyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTE4Ny41OTksMTUxLjQ1OEwxNTMuNDY1LDMzLjE4NmMtMC40MjItMS40NjEtMS43NTgtMi40NjYtMy4yNzktMi40NjZIMzcuNTQ3Yy0xLjUyMSwwLTIuODU3LDEuMDA1LTMuMjc5LDIuNDY2DQoJCQlMMC4xMzUsMTUxLjQ1OEMwLjA0NCwxNTEuNzY1LDAsMTUyLjA4NSwwLDE1Mi40MDV2MjUuMDg4YzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNIMTg0LjMyDQoJCQljMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxM3YtMjUuMDg4QzE4Ny43MzMsMTUyLjA4NSwxODcuNjg3LDE1MS43NjUsMTg3LjU5OSwxNTEuNDU4eiBNMTgwLjkwNywxNzQuMDhINi44Mjd2LTIxLjE5Mg0KCQkJTDQwLjExNSwzNy41NDdIMTQ3LjYybDMzLjI4NywxMTUuMzQyVjE3NC4wOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTc4LjUwNyw2LjgyN2MtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3Y1MS4yYzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNzMy40MTMtMS41MjksMy40MTMtMy40MTN2LTUxLjINCgkJCUM4MS45Miw4LjM1Niw4MC4zOTEsNi44MjcsNzguNTA3LDYuODI3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA5LjIyNyw2LjgyN2MtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3Y1MS4yYzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJdi01MS4yQzExMi42NCw4LjM1NiwxMTEuMTExLDYuODI3LDEwOS4yMjcsNi44Mjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDkuMjI3LDE3LjA2N2gtMzAuNzJjLTEuODg0LDAtMy40MTMsMS41MjktMy40MTMsMy40MTNzMS41MjksMy40MTMsMy40MTMsMy40MTNoMzAuNzJjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJUzExMS4xMTEsMTcuMDY3LDEwOS4yMjcsMTcuMDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA5LjIyNywzMC43MmgtMzAuNzJjLTEuODg0LDAtMy40MTMsMS41MjktMy40MTMsMy40MTNzMS41MjksMy40MTMsMy40MTMsMy40MTNoMzAuNzJjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJUzExMS4xMTEsMzAuNzIsMTA5LjIyNywzMC43MnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEwOS4yMjcsNDQuMzczaC0zMC43MmMtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3MxLjUyOSwzLjQxMywzLjQxMywzLjQxM2gzMC43MmMxLjg4NCwwLDMuNDEzLTEuNTI5LDMuNDEzLTMuNDEzDQoJCQlTMTExLjExMSw0NC4zNzMsMTA5LjIyNyw0NC4zNzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNjMuNzg5LDE0Ni4xNzlsLTE3LjUxNi05OC45ODdjLTAuMjg4LTEuNjMtMS43MDUtMi44MTgtMy4zNi0yLjgxOEg0OC4zMjhjLTEuNjEzLDAtMy4wMDUsMS4xMjYtMy4zNCwyLjcwMw0KCQkJbC0yMS4wMTksOTguOTg3Yy0wLjIxMywxLjAwNywwLjAzOCwyLjA1NywwLjY4NiwyLjg1N2MwLjY0OSwwLjgsMS42MjEsMS4yNjUsMi42NTIsMS4yNjVoMTMzLjEyYzEuMDA5LDAsMS45NjYtMC40NDcsMi42MTYtMS4yMTkNCgkJCUMxNjMuNjkxLDE0OC4xOTUsMTYzLjk2NSwxNDcuMTc0LDE2My43ODksMTQ2LjE3OXogTTMxLjUyLDE0My4zNkw1MS4wODksNTEuMmg4OC45NThsMTYuMzA5LDkyLjE2SDMxLjUyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Terrace:HNe,Toilet:VNe,Upstairs:ZNe,Wardrobe:XNe,Washroom:KNe,Wc:qNe,Windscreen:e0e,Workshop:t0e,Workspace:s0e},r0e=[{_id:"hood",name:{en:"Hood",ru:"Вытяжка",de:"Abzugshaube",fr:"Capot",it:"Cappe",nl:"Hood",pl:"Okapy",pt:"Hood",es:"Campana","zh-cn":"抽油烟机"},icon:"Hoods.svg"},{_id:"alarm_system",name:{en:"Alarm System",ru:"Сигнализация",de:"Alarmanlage",fr:"Systèmes D'Alarme",it:"Sistemi Di Allarme",nl:"Alarm Systems",pl:"Systemy Alarmowe",pt:"Sistemas De Alarme",es:"Sistemas De Alarma","zh-cn":"报警系统"},icon:"Alarm Systems.svg"},{_id:"battery_status",name:{en:"Battery Status",ru:"Заряд батареи",de:"Batteriestatus",fr:"État De La Batterie",it:"Stato Della Batteria",nl:"Batterij Status",pl:"Stan Baterii",pt:"Estado Da Bateria",es:"Estado De La Batería","zh-cn":"电池状态"},icon:"Battery Status.svg"},{_id:"lighting",name:{en:"Lighting",ru:"Светильник",de:"Beleuchtung",fr:"Éclairages",it:"Illuminazione",nl:"Verlichting",pl:"Oprawy Oświetleniowe",pt:"Iluminações",es:"Iluminaciones","zh-cn":"照明"},icon:"Lightings.svg"},{_id:"shading",name:{en:"Shading",ru:"Затенение",de:"Beschattungen",fr:"Ombres",it:"Ombreggiatura",nl:"Shading",pl:"Zacienienie",pt:"Shading",es:"Sombreado","zh-cn":"底纹"},icon:"Shading.svg"},{_id:"irrigation",name:{en:"Irrigation",ru:"Орошение",de:"Bewässerung",fr:"Irrigation",it:"Irrigazione",nl:"Irrigatie",pl:"Nawadnianie",pt:"Irrigação",es:"Irrigación","zh-cn":"灌溉"},icon:"Irrigation.svg"},{_id:"iron",name:{en:"Iron",ru:"Утюг",de:"Bügeleisen",fr:"Le Fer",it:"Ferro",nl:"Ijzer",pl:"Żelazo",pt:"Ferro",es:"Hierro","zh-cn":"铁"},icon:"Iron.svg"},{_id:"computer",name:{en:"Computer",ru:"Компьютер",de:"Rechner",fr:"L'Ordinateur",it:"Computer",nl:"Computer",pl:"Komputer",pt:"Computador",es:"Ordenador","zh-cn":"电脑"},icon:"Computer.svg"},{_id:"ceiling_spotlight",name:{en:"Ceiling Spotlight",ru:"Потолочный прожектор",de:"Deckenspot",fr:"Plafond Spotlight",it:"Faretti A Soffitto",nl:"Plafond Spotlight",pl:"Reflektory Sufitowe",pt:"Tecto Foco",es:"Focos De Techo","zh-cn":"天花射灯"},icon:"Ceiling Spotlights.svg"},{_id:"printer",name:{en:"Printer",de:"Drucker",ru:"Принтер",pt:"Impressora",nl:"Printer",fr:"Imprimante",it:"Stampante",es:"Impresora",pl:"Drukarka","zh-cn":"打印机"},icon:"Printer.svg"},{_id:"power_consumption",name:{en:"Power Consumption",ru:"Потребляемая мощность",de:"Stromverbrauch",fr:"Consommation D'Énergie",it:"Consumo Di Energia",nl:"Energieverbruik",pl:"Pobór Energii",pt:"Consumo De Energia",es:"El Consumo De Energía","zh-cn":"能量消耗"},icon:"Power Consumption.svg"},{_id:"window",name:{en:"Window",ru:"Окно",de:"Fenster",fr:"La Fenêtre",it:"Finestra",nl:"Venster",pl:"Okno",pt:"Janela",es:"Ventana","zh-cn":"窗户"},icon:"Window.svg"},{_id:"garage_door",name:{en:"Garage Door",ru:"Гаражные Ворота",de:"Garagentor",fr:"Portes De Garage",it:"Garage Door",nl:"Garage Door",pl:"Bramy Garażowe",pt:"Portas De Garagem",es:"Las Puertas De Garaje","zh-cn":"车库门"},icon:"Garage Doors.svg"},{_id:"hairdryer",name:{en:"Hairdryer",ru:"Фен",de:"Haartrockner",fr:"Sèche-Cheveux",it:"Asciugacapelli",nl:"Haardroger",pl:"Suszarka Do Włosów",pt:"Secador De Cabelo",es:"Secador De Pelo","zh-cn":"电吹风"},icon:"Hairdryer.svg"},{_id:"hanging_lamp",name:{en:"Hanging Lamp",ru:"Подвесной светильник",de:"Hängelampe",fr:"Lampes Suspendues",it:"Lampade A Sospensione",nl:"Opknoping Lampen",pl:"Lampy Wiszące",pt:"Lâmpadas De Suspensão",es:"Lámparas Colgantes","zh-cn":"挂灯"},icon:"Hanging Lamps.svg"},{_id:"doorstep",name:{en:"Enterance",ru:"Входная дверь",de:"Haustür",fr:"Seuil De Porte",it:"Gradino Della Porta",nl:"Drempel",pl:"Próg",pt:"Porta",es:"Peldaño","zh-cn":"门阶"},icon:"Doorstep.svg"},{_id:"hot_water",name:{en:"Hot Water",ru:"Горячая вода",de:"Heißwasser",fr:"Eau Chaude",it:"Acqua Calda",nl:"Heet Water",pl:"Gorąca Woda",pt:"Água Quente",es:"Agua Caliente","zh-cn":"热水"},icon:"Hot Water.svg"},{_id:"heating",name:{en:"Heating",ru:"Отопление",de:"Heizung",fr:"Chauffe-Eau",it:"Riscaldatore",nl:"Verwarmer",pl:"Podgrzewacz",pt:"Aquecedor",es:"Calentador","zh-cn":"加热器"},icon:"Heater.svg"},{_id:"stove",name:{en:"Stove",ru:"Печь",de:"Herd",fr:"Le Fourneau",it:"Stufa",nl:"Fornuis",pl:"Kuchenka",pt:"Forno",es:"Cocina","zh-cn":"火炉"},icon:"Stove.svg"},{_id:"louvre",name:{en:"Louvre",ru:"Жалюзи",de:"Jalousie",fr:"Persienne",it:"Persiana Di Ventilazione",nl:"Louvre",pl:"Żaluzja",pt:"Trapeira",es:"Lumbrera","zh-cn":"卢浮宫"},icon:"Louvre.svg"},{_id:"coffee_maker",name:{en:"Coffee Maker",ru:"Кофеварка",de:"Kaffemaschine",fr:"Cafetière",it:"Macchine Da Caffè",nl:"Koffie Maker",pl:"Ekspresy Do Kawy",pt:"Cafeteira",es:"Cafetera","zh-cn":"咖啡壶"},icon:"Coffee Makers.svg"},{_id:"cold_water",name:{en:"Cold Water",ru:"Холодная вода",de:"Kaltwasser",fr:"Eau Froide",it:"Acqua Fredda",nl:"Koud Water",pl:"Zimna Woda",pt:"Água Fria",es:"Agua Fría","zh-cn":"冷水"},icon:"Cold Water.svg"},{_id:"climate",name:{en:"Climate",ru:"Климат",de:"Klima",fr:"Climat",it:"Clima",nl:"Klimaat",pl:"Klimat",pt:"Clima",es:"Clima","zh-cn":"气候"},icon:"Climate.svg"},{_id:"speaker",name:{en:"Speaker",ru:"Звуковая система",de:"Lautsprecher",fr:"Orateur",it:"Altoparlante",nl:"Spreker",pl:"Głośnik",pt:"Palestrante",es:"Altavoz","zh-cn":"扬声器"},icon:"Speaker.svg"},{_id:"led_strip",name:{en:"Led Strip",ru:"Светодиодная лента",de:"LED Leiste",fr:"Led Strip",it:"Led Strip",nl:"Loden Strip",pl:"Pasek Ledowy",pt:"Led Faixa",es:"Tira Llevada","zh-cn":"灯带"},icon:"Led Strip.svg"},{_id:"light",name:{en:"Light",ru:"Свет",de:"Licht",fr:"Lumière",it:"Leggero",nl:"Licht",pl:"Lekki",pt:"Luz",es:"Luz","zh-cn":"光"},icon:"Light.svg"},{_id:"fan",name:{en:"Fan",ru:"Вентилятор",de:"Lüfter",fr:"Ventilateur",it:"Fan",nl:"Ventilator",pl:"Wentylator",pt:"Ventilador",es:"Ventilador","zh-cn":"扇子"},icon:"Fan.svg"},{_id:"humidity",name:{en:"Humidity",ru:"Влажность",de:"Luftfeuchtigkeit",fr:"Humidité",it:"Umidità",nl:"Vochtigheid",pl:"Wilgotność",pt:"Umidade",es:"Humedad","zh-cn":"湿度"},icon:"Humidity.svg"},{_id:"ventilation",name:{en:"Ventilation",ru:"Вентиляция",de:"Lüftung",fr:"Ventilation",it:"Ventilazione",nl:"Ventilatie",pl:"Wentylacja",pt:"Ventilação",es:"Ventilación","zh-cn":"通风"},icon:"Ventilation.svg"},{_id:"chandelier",name:{en:"Chandelier",ru:"Люстра",de:"Kronleuchter",fr:"Lustre",it:"Lampadario",nl:"Kroonluchter",pl:"Żyrandol",pt:"Lustre",es:"Candelabro","zh-cn":"枝形吊灯"},icon:"Chandelier.svg"},{_id:"awning",name:{en:"Awning",ru:"Маркиза",de:"Markise",fr:"Auvents",it:"Tende",nl:"Luifels",pl:"Okrycia",pt:"Toldos",es:"Toldos","zh-cn":"遮阳篷"},icon:"Awnings.svg"},{_id:"music",name:{en:"Music",ru:"Музыка",de:"Musik",fr:"Musique",it:"Musica",nl:"Muziek",pl:"Muzyka",pt:"Música",es:"Música","zh-cn":"音乐"},icon:"Music.svg"},{_id:"people",name:{en:"People",ru:"Люди",de:"Personen",fr:"Gens",it:"Persone",nl:"Mensen",pl:"Ludzie",pt:"Pessoas",es:"Personas","zh-cn":"人们"},icon:"People.svg"},{_id:"pool",name:{en:"Pool",ru:"Бассейн",de:"Pool",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"水池"},icon:"Pool.svg"},{_id:"pump",name:{en:"Pump",ru:"Насос",de:"Pumpe",fr:"Pompe",it:"Pompa",nl:"Pomp",pl:"Pompa",pt:"Bombear",es:"Bomba","zh-cn":"泵"},icon:"Pump.svg"},{_id:"outdoor_blinds",name:{en:"Outdoor Blinds",ru:"Внещгте жалюзи",de:"Raffstore",fr:"Volets",it:"Tende Da Esterni",nl:"Outdoor Blinds",pl:"Rolety Zewnętrzne",pt:"Estores Exteriores",es:"Persianas Exteriores","zh-cn":"室外百叶窗"},icon:"Outdoor Blinds.svg"},{_id:"mowing_machine",name:{en:"Mowing Machine",ru:"Газонокосилка",de:"Rasenmäher",fr:"Machine De Fauchage",it:"Macchina Di Falciatura",nl:"Maaimachine",pl:"Kosiarka",pt:"Roçada Máquina",es:"Segadora","zh-cn":"割草机"},icon:"Mowing Machine.svg"},{_id:"receiver",name:{en:"Receiver",ru:"Приставка",de:"Receiver",fr:"Destinataire",it:"Ricevitore",nl:"Ontvanger",pl:"Odbiorca",pt:"Recebedor",es:"Receptor","zh-cn":"接收者"},icon:"Receiver.svg"},{_id:"shutters",name:{en:"Shutters",ru:"Ставни",de:"Rollladen",fr:"Volets",it:"Persiane",nl:"Shutters",pl:"Żaluzje",pt:"Persianas",es:"Persianas","zh-cn":"百叶窗"},icon:"Shutters.svg"},{_id:"smoke_detector",name:{en:"Smoke detector",de:"Rauchmelder",ru:"Детектор дыма",pt:"Detector de fumaça",nl:"Rookdetector",fr:"Détecteur de fumée",it:"Rilevatore di fumo",es:"Detector de humo",pl:"Wykrywacz dymu","zh-cn":"烟雾探测器"},icon:"SmokeDetector.svg"},{_id:"lock",name:{en:"Lock",ru:"Замок",de:"Schloß",fr:"Fermer À Clé",it:"Serratura",nl:"Slot",pl:"Zamek",pt:"Trancar",es:"Cerrar Con Llave","zh-cn":"锁"},icon:"Lock.svg"},{_id:"security",name:{en:"Security",ru:"Безопасность",de:"Sicherheit",fr:"Sécurité",it:"Sicurezza",nl:"Veiligheid",pl:"Bezpieczeństwo",pt:"Segurança",es:"Seguridad","zh-cn":"安全"},icon:"Security.svg"},{_id:"dishwasher",name:{en:"Dishwasher",ru:"Посудомоечная машина",de:"Spülmaschine",fr:"Lave-Vaisselles",it:"Lavastoviglie",nl:"Vaatwassers",pl:"Zmywarki",pt:"Máquinas De Lavar Louça",es:"Lavaplatos","zh-cn":"洗碗机"},icon:"Dishwashers.svg"},{_id:"vacuum_cleaner",name:{en:"Vacuum Cleaner",ru:"Пылесос",de:"Staubsauger",fr:"Aspirateur",it:"Aspirapolvere",nl:"Stofzuiger",pl:"Odkurzacz",pt:"Aspirador De Pó",es:"Aspiradora","zh-cn":"吸尘器"},icon:"Vacuum Cleaner.svg"},{_id:"socket",name:{en:"Socket",ru:"Розетка",de:"Steckdose",fr:"Prise",it:"Socket",nl:"Socket",pl:"Gniazdka",pt:"Tomada",es:"Zócalo","zh-cn":"套接字"},icon:"Sockets.svg"},{_id:"floor_lamp",name:{en:"Floor Lamp",ru:"Торшер",de:"Stehlampe",fr:"Lampes Pour Plancher",it:"Lampade A Stelo",nl:"Vloerlampen",pl:"Lampy Podłogowe",pt:"Lâmpadas Chão",es:"Lámparas De Pie","zh-cn":"落地灯"},icon:"Floor Lamps.svg"},{_id:"power_consumption",name:{en:"Power Consumption",ru:"Потребляемая мощность",de:"Stromverbrauch",fr:"Consommation D'Énergie",it:"Consumo Di Energia",nl:"Energieverbruik",pl:"Pobór Energii",pt:"Consumo De Energia",es:"El Consumo De Energía","zh-cn":"能量消耗"},icon:"Power Consumption.svg"},{_id:"temperature_sensor",name:{en:"Temperature Sensor",ru:"Температурный датчик",de:"Temperatur-Sensor",fr:"Capteur De Température",it:"Sensori Di Temperatura",nl:"Temperatuursensor",pl:"Czujniki Temperatury",pt:"Sensores De Temperatura",es:"Sensores De Temperatura","zh-cn":"温度传感器"},icon:"Temperature Sensors.svg"},{_id:"table_lamp",name:{en:"Table Lamp",ru:"Настольная лампа",de:"Tischlampe",fr:"Lampe De Chevet",it:"Lampade Da Tavolo",nl:"Tafellampen",pl:"Lampy Stołowe",pt:"Lâmpadas De Mesa",es:"Lámparas De Mesa","zh-cn":"台灯"},icon:"Table Lamps.svg"},{_id:"gate",name:{en:"Gate",ru:"Ворота",de:"Tor",fr:"Porte",it:"Gate",nl:"Gate",pl:"Bramy",pt:"Portões",es:"Puertas","zh-cn":"盖茨"},icon:"Gates.svg"},{_id:"dryer",name:{en:"Dryer",ru:"Сушилка",de:"Trockner",fr:"Séchoir",it:"Asciugatrice",nl:"Droger",pl:"Suszarka",pt:"Secador",es:"Secadora","zh-cn":"烘干机"},icon:"Dryer.svg"},{_id:"door",name:{en:"Door",ru:"Дверь",de:"Tür",fr:"Des Portes",it:"Porte",nl:"Deuren",pl:"Drzwi",pt:"Portas",es:"Puertas","zh-cn":"门"},icon:"Doors.svg"},{_id:"tv",name:{en:"Tv",ru:"Телевизор",de:"TV",fr:"La Télé",it:"Tv",nl:"Tv",pl:"Telewizja",pt:"Televisão",es:"Televisor","zh-cn":"电视"},icon:"Tv.svg"},{_id:"consumption",name:{en:"Consumption",ru:"Потребление",de:"Verbrauch",fr:"Consommation",it:"Consumo",nl:"Consumptie",pl:"Konsumpcja",pt:"Consumo",es:"Consumo","zh-cn":"消费"},icon:"Consumption.svg"},{_id:"amplifier",name:{en:"Amplifier",ru:"Усилитель звука",de:"Verstärker",fr:"Amplificateur",it:"Amplificatore",nl:"Versterker",pl:"Wzmacniacz",pt:"Amplificador",es:"Amplificador","zh-cn":"放大器"},icon:"Amplifier.svg"},{_id:"curtains",name:{en:"Curtains",ru:"Шторы",de:"Vorhänge",fr:"Des Rideaux",it:"Le Tende",nl:"Gordijnen",pl:"Zasłony",pt:"Cortinas",es:"Cortinas","zh-cn":"窗帘"},icon:"Curtains.svg"},{_id:"sconce",name:{en:"Sconce",ru:"Настенный светильник",de:"Wandlampe",fr:"Sconce",it:"Sconce",nl:"Sconce",pl:"Kinkiety",pt:"Arandelas",es:"Los Apliques","zh-cn":"壁灯"},icon:"Sconces.svg"},{_id:"washing_machine",name:{en:"Washing Machine",ru:"Стиральная машина",de:"Waschmaschine",fr:"Machines À Laver",it:"Lavatrici",nl:"Wasmachines",pl:"Pralki",pt:"Máquinas De Lavar Roupas",es:"Lavadoras","zh-cn":"洗衣机"},icon:"Washing Machines.svg"},{_id:"water",name:{en:"Water",ru:"Вода",de:"Wasser",fr:"L'Eau",it:"Acqua",nl:"Water",pl:"Woda",pt:"Água",es:"Agua","zh-cn":"水"},icon:"Water.svg"},{_id:"water_heater",name:{en:"Water Heater",ru:"Нагреватель воды",de:"Wasserkocher",fr:"Chauffe-Eau",it:"Scaldabagno",nl:"Waterkoker",pl:"Podgrzewacz Wody",pt:"Aquecedor De Água",es:"Calentador De Agua","zh-cn":"热水器"},icon:"Water Heater.svg"},{_id:"water_consumption",name:{en:"Water Consumption",ru:"Потребление воды",de:"Wasserverbrauch",fr:"Consommation D'Eau",it:"Consumo D'Acqua",nl:"Waterverbruik",pl:"Konsumpcja Wody",pt:"Consumo De Água",es:"Consumo De Agua","zh-cn":"耗水量"},icon:"Water Consumption.svg"},{_id:"weather",name:{en:"Weather",ru:"Погода",de:"Wetter",fr:"La Météo",it:"Tempo Metereologico",nl:"Weer",pl:"Pogoda",pt:"Clima",es:"Tiempo","zh-cn":"天气"},icon:"Weather.svg"}],o0e=[{_id:"storeroom",name:{en:"Storeroom",ru:"Кладовая",de:"Abstellraum",fr:"Débarras",it:"Dispensa",nl:"Bergplaats",pl:"Magazyn",pt:"Despensa",es:"Trastero","zh-cn":"库房"},icon:"Storeroom.svg"},{_id:"second_floor",name:{en:"Second floor",ru:"Второй этаж",de:"Erster OG",pt:"Primeiro andar",nl:"Eerste verdieping",fr:"Premier étage",it:"Primo piano",es:"Primer piso",pl:"Pierwsze piętro","zh-cn":"第一层"},icon:"Second Floor.svg"},{_id:"dressing_room",name:{en:"Dressing Room",ru:"Гардеробная",de:"Ankleide",fr:"Vestiaire",it:"Camerino",nl:"Kleedkamer",pl:"Przebieralnia",pt:"Provador",es:"Vestidor","zh-cn":"更衣室"},icon:"Dressing Room.svg"},{_id:"workspace",name:{en:"Workspace",ru:"Рабочая Среда",de:"Arbeitszimmer",fr:"Espace De Travail",it:"Area Di Lavoro",nl:"Workspace",pl:"Workspace",pt:"Área De Trabalho",es:"Espacio De Trabajo","zh-cn":"工作区"},icon:"Workspace.svg"},{_id:"driveway",name:{en:"Driveway",ru:"Дорога",de:"Auffahrt",fr:"Allée",it:"Viale",nl:"Pad",pl:"Podjazd",pt:"Entrada Da Garagem",es:"Entrada De Coches","zh-cn":"车道"},icon:"Driveway.svg"},{_id:"outdoors",name:{en:"Outdoors",ru:"На Улице",de:"Außenbereich",fr:"En Plein Air",it:"All'Aperto",nl:"Buitenshuis",pl:"Na Dworze",pt:"Ao Ar Livre",es:"Al Aire Libre","zh-cn":"户外"},icon:"Outdoors.svg"},{_id:"bathroom",name:{en:"Bathroom",ru:"Ванная Комната",de:"Badezimmer",fr:"Salle De Bains",it:"Bagno",nl:"Badkamer",pl:"Łazienka",pt:"Banheiro",es:"Baño","zh-cn":"浴室"},icon:"Bathroom.svg"},{_id:"balcony",name:{en:"Balcony",ru:"Балкон",de:"Balkon",fr:"Balcon",it:"Balcone",nl:"Balkon",pl:"Balkon",pt:"Sacada",es:"Balcón","zh-cn":"阳台"},icon:"Balcony.svg"},{_id:"office",name:{en:"Office",ru:"Офис",de:"Office",fr:"Bureau",it:"Ufficio",nl:"Kantoor",pl:"Gabinet",pt:"Escritório",es:"Oficina","zh-cn":"办公室"},icon:"Office.svg"},{_id:"carport",name:{en:"Carport",ru:"Навес",de:"Carport",fr:"Carport",it:"Posto Auto Coperto",nl:"Carport",pl:"Wiata",pt:"Telheiro",es:"Cochera","zh-cn":"车棚"},icon:"Carport.svg"},{_id:"attic",name:{en:"Attic",ru:"Чердак",de:"Dachgeschoss",fr:"Grenier",it:"Attico",nl:"Zolder",pl:"Poddasze",pt:"Sótão",es:"Ático","zh-cn":"阁楼"},icon:"Attic.svg"},{_id:"hall",name:{en:"Hall",ru:"Зал",de:"Diele",fr:"Salle",it:"Sala",nl:"Hal",pl:"Sala",pt:"Corredor",es:"Sala","zh-cn":"大厅"},icon:"Hall.svg"},{_id:"entrance",name:{en:"Entrance",ru:"Вход",de:"Eingang",fr:"Entrée",it:"Ingresso",nl:"Ingang",pl:"Wejście",pt:"Entrada",es:"Entrada","zh-cn":"入口"},icon:"Entrance.svg"},{_id:"ground_floor",name:{en:"Ground Floor",ru:"Первый Этаж",de:"Erdgeschoss",fr:"Rez-De-Chaussée",it:"Piano Terra",nl:"Begane Grond",pl:"Parter",pt:"Térreo",es:"Planta Baja","zh-cn":"一楼"},icon:"Ground Floor.svg"},{_id:"dining_area",name:{en:"Dining Area",ru:"Столовая",de:"Essbereich",fr:"Salle À Manger",it:"Zona Pranzo",nl:"Eethoek",pl:"Jadalnia",pt:"Área De Refeições",es:"Comedor","zh-cn":"用餐区"},icon:"Dining Area.svg"},{_id:"dining_room",name:{en:"Dining Room",ru:"Столовая",de:"Esszimmer",fr:"Salle À Manger",it:"Sala Da Pranzo",nl:"Eetkamer",pl:"Jadalnia",pt:"Sala De Jantar",es:"Comedor","zh-cn":"饭厅"},icon:"Dining Room.svg"},{_id:"gym",name:{en:"Gym",ru:"Спортзал",de:"Fitnessraum",fr:"Gym",it:"Palestra",nl:"Sportschool",pl:"Siłownia",pt:"Ginásio",es:"Gimnasio","zh-cn":"健身房"},icon:"Gym.svg"},{_id:"gallery",name:{en:"Gallery",ru:"Галерея",de:"Galerie",fr:"Galerie",it:"Galleria",nl:"Galerij",pl:"Galeria",pt:"Galeria",es:"Galería","zh-cn":"画廊"},icon:"Gallery.svg"},{_id:"garage",name:{en:"Garage",ru:"Гараж",de:"Garage",fr:"Garage",it:"Box Auto",nl:"Garage",pl:"Garaż",pt:"Garagem",es:"Garaje","zh-cn":"车库"},icon:"Garage.svg"},{_id:"wardrobe",name:{en:"Wardrobe",ru:"Гардероб",de:"Garderobe",fr:"Penderie",it:"Armadio",nl:"Garderobe",pl:"Szafa",pt:"Guarda Roupa",es:"Armario","zh-cn":"衣柜"},icon:"Wardrobe.svg"},{_id:"garden",name:{en:"Garden",ru:"Сад",de:"Garten",fr:"Jardin",it:"Giardino",nl:"Tuin",pl:"Ogród",pt:"Jardim",es:"Jardín","zh-cn":"花园"},icon:"Garden.svg"},{_id:"summer_house",name:{en:"Summer House",ru:"Дача",de:"Gartenhaus",fr:"Maison D'Été",it:"Casa Estiva",nl:"Zomerhuis",pl:"Domek Letniskowy",pt:"Summer House",es:"Casa De Verano","zh-cn":"凉亭"},icon:"Summer House.svg"},{_id:"guest_bathroom",name:{en:"Guest Bathroom",ru:"Гостевая Комната",de:"Gäste-WC",fr:"Salle De Bains Invité",it:"Guest Bathroom",nl:"Gastenbadkamer",pl:"Łazienka Gościnna",pt:"Banheiro De Hóspedes",es:"Baño De Visitas","zh-cn":"客用浴室"},icon:"Guest Bathroom.svg"},{_id:"guest_room",name:{en:"Guest Room",ru:"Гостевая Комната",de:"Gästezimmer",fr:"Chambre D'Amis",it:"Stanza Degli Ospiti",nl:"Guest Room",pl:"Pokój Gościnny",pt:"Quarto De Hóspedes",es:"Habitación De Huéspedes","zh-cn":"客房"},icon:"Guest Room.svg"},{_id:"laundry_room",name:{en:"Laundry Room",ru:"Прачечная",de:"Hauswirtschaftsraum",fr:"Buanderie",it:"Lavanderia",nl:"Wasruimte",pl:"Pralnia",pt:"Lavandaria",es:"Cuarto De Lavado","zh-cn":"洗衣房"},icon:"Laundry Room.svg"},{_id:"home_theater",name:{en:"Home Theater",ru:"Домашний Театр",de:"Heimkino",fr:"Cinéma Maison",it:"Home Theater",nl:"Thuisbioscoop",pl:"Kino Domowe",pt:"Cinema Em Casa",es:"Cine En Casa","zh-cn":"家庭电影院"},icon:"Home Theater.svg"},{_id:"boiler_room",name:{en:"Boiler Room",ru:"Бойлерная",de:"Heizungsraum",fr:"Chaufferie",it:"Locale Caldaia",nl:"Boiler Room",pl:"Kotłownia",pt:"Sala Da Caldeira",es:"Sala De Calderas","zh-cn":"锅炉房"},icon:"Boiler Room.svg"},{_id:"chamber",name:{en:"Chamber",ru:"Камера",de:"Kammer",fr:"Chambre",it:"Camera",nl:"Kamer",pl:"Izba",pt:"Câmara",es:"Cámara","zh-cn":"商会"},icon:"Chamber.svg"},{_id:"basement,_cellar",name:{en:"Basement, Cellar",ru:"Подвал, Погреб",de:"Keller",fr:"Sous-Sol, Cave",it:"Taverna, Cantina",nl:"Kelder, Kelder",pl:"Piwnica, Piwnica",pt:"Porão, Adega",es:"Sótano, Bodega","zh-cn":"地下室,地窖"},icon:"Basement.svg"},{_id:"nursery",name:{en:"Nursery",ru:"Питомник",de:"Kinderzimmer",fr:"Garderie",it:"Asilo",nl:"Kinderkamer",pl:"Żłobek",pt:"Berçário",es:"Guardería","zh-cn":"苗圃"},icon:"Nursery.svg"},{_id:"corridor",name:{en:"Corridor",ru:"Коридор",de:"Korridor",fr:"Couloir",it:"Corridoio",nl:"Gang",pl:"Korytarz",pt:"Corredor",es:"Corredor","zh-cn":"走廊"},icon:"Corridor.svg"},{_id:"kitchen",name:{en:"Kitchen",ru:"Кухня",de:"Küche",fr:"Cuisine",it:"Cucina",nl:"Keuken",pl:"Kuchnia",pt:"Cozinha",es:"Cocina","zh-cn":"厨房"},icon:"Kitchen.svg"},{_id:"upstairs",name:{en:"Upstairs",ru:"Вверх По Лестнице",de:"Obergeschoss",fr:"En Haut",it:"Di Sopra",nl:"Boven",pl:"Na Górę",pt:"Andar De Cima",es:"Piso Superior","zh-cn":"楼上"},icon:"Upstairs.svg"},{_id:"office",name:{en:"Office",ru:"Офис",de:"Office",fr:"Bureau",it:"Ufficio",nl:"Kantoor",pl:"Gabinet",pt:"Escritório",es:"Oficina","zh-cn":"办公室"},icon:"Office.svg"},{_id:"pool",name:{en:"Pool",ru:"Бассейн",de:"Pool",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"水池"},icon:"Pool.svg"},{_id:"rear_wall",name:{en:"Rear Wall",ru:"Задняя Стенка",de:"Rückwand",fr:"Paroi Arrière",it:"Parete Posteriore",nl:"Achterwand",pl:"Tylna Ściana",pt:"Parede Traseira",es:"Pared Posterior","zh-cn":"后墙"},icon:"Rear Wall.svg"},{_id:"barn",name:{en:"Barn",ru:"Амбар",de:"Scheune",fr:"Grange",it:"Fienile",nl:"Schuur",pl:"Stodoła",pt:"Celeiro",es:"Granero","zh-cn":"谷仓"},icon:"Barn.svg"},{_id:"sleeping_area",name:{en:"Sleeping Area",ru:"Спальное Место",de:"Schlafbereich",fr:"Coin Montagne",it:"Area Sleeping",nl:"Sleeping Area",pl:"Powierzchnia Spania",pt:"Sleeping Area",es:"Área De Dormir","zh-cn":"睡眠区"},icon:"Sleeping Area.svg"},{_id:"bedroom",name:{en:"Bedroom",ru:"Спальная Комната",de:"Schlafzimmer",fr:"Chambre",it:"Camera Da Letto",nl:"Slaapkamer",pl:"Sypialnia",pt:"Quarto",es:"Cuarto","zh-cn":"卧室"},icon:"Bedroom.svg"},{_id:"shed",name:{en:"Shed",ru:"Сбрасывать",de:"Schuppen",fr:"Hangar",it:"Capannone",nl:"Schuur",pl:"Budka",pt:"Cabana",es:"Cobertizo","zh-cn":"棚"},icon:"Shed.svg"},{_id:"swimming_pool",name:{en:"Swimming Pool",ru:"Плавательный Бассейн",de:"Schwimmbad",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"游泳池"},icon:"Swimming Pool.svg"},{_id:"dining",name:{en:"Dining",ru:"Обеденный",de:"Speis",fr:"À Manger",it:"Cenare",nl:"Dining",pl:"Jadalnia",pt:"Jantar",es:"Comida","zh-cn":"用餐"},icon:"Dining.svg"},{_id:"playroom",name:{en:"Playroom",ru:"Игровая Комната",de:"Spielzimmer",fr:"Salle De Jeux",it:"Stanza Dei Giochi",nl:"Speelkamer",pl:"Pokój Zabaw",pt:"Sala De Jogos",es:"Cuarto De Jugar","zh-cn":"游戏室"},icon:"Playroom.svg"},{_id:"stairway",name:{en:"Stairway",ru:"Лестница",de:"Treppe",fr:"Escalier",it:"Scala",nl:"Trap",pl:"Klatka Schodowa",pt:"Escada",es:"Escalera","zh-cn":"楼梯"},icon:"Stairway.svg"},{_id:"equipment_room",name:{en:"Equipment Room",ru:"Оборудование Номера",de:"Technikraum",fr:"Salle D'Équipement",it:"Stanza Degli Attrezzi",nl:"Technische Ruimte",pl:"Wyposażenie Pokoi",pt:"Sala De Equipamentos",es:"Cuarto De Equipos","zh-cn":"机房"},icon:"Equipment Room.svg"},{_id:"terrace",name:{en:"Terrace",ru:"Терраса",de:"Terrasse",fr:"Terrasse",it:"Terrazza",nl:"Terras",pl:"Taras",pt:"Terraço",es:"Terraza","zh-cn":"阳台"},icon:"Terrace.svg"},{_id:"toilet",name:{en:"Toilet",ru:"Туалет",de:"Toilette",fr:"Toilette",it:"Gabinetto",nl:"Toilet",pl:"Toaleta",pt:"Banheiro",es:"Inodoro","zh-cn":"洗手间"},icon:"Toilet.svg"},{_id:"stairwell",name:{en:"Stairwell",ru:"Лестничная клетка",de:"Treppenhaus",fr:"Cage D'Escalier",it:"Tromba Delle Scale",nl:"Trappenhuis",pl:"Klatka Schodowa",pt:"Caixa De Escada",es:"Hueco De Escalera","zh-cn":"楼梯间"},icon:"Stairwell.svg"},{_id:"locker_room",name:{en:"Locker Room",ru:"Камера Хранения",de:"Umkleideraum",fr:"Vestiaire",it:"Spogliatoio",nl:"Kleedkamer",pl:"Szatnia",pt:"Vestiário",es:"Vestuario","zh-cn":"更衣室"},icon:"Locker Room.svg"},{_id:"basement",name:{en:"Basement",ru:"Подвал",de:"Untergeschoss",fr:"Sous-Sol",it:"Seminterrato",nl:"Kelder",pl:"Piwnica",pt:"Porão",es:"Sótano","zh-cn":"地下室"},icon:"Basement.svg"},{_id:"front_yard",name:{en:"Front Yard",ru:"Передний Двор",de:"Vorgarten",fr:"Front Yard",it:"Cortile",nl:"Voortuin",pl:"Podwórko",pt:"Jardim Da Frente",es:"Patio Delantero","zh-cn":"前院"},icon:"Front Yard.svg"},{_id:"anteroom",name:{en:"Anteroom",ru:"Передняя",de:"Vorraum",fr:"Antichambre",it:"Anticamera",nl:"Voorkamer",pl:"Przedpokój",pt:"Ante-Sala",es:"Antesala","zh-cn":"接待室"},icon:"Anteroom.svg"},{_id:"washroom",name:{en:"Washroom",ru:"Уборная",de:"Waschraum",fr:"Toilettes",it:"Bagno",nl:"Waskamer",pl:"Umywalnia",pt:"Banheiro",es:"Baño","zh-cn":"卫生间"},icon:"Washroom.svg"},{_id:"wc",name:{en:"Wc",ru:"Туалет",de:"WC",fr:"Toilettes",it:"Bagno",nl:"Wc",pl:"Toaleta",pt:"Banheiro",es:"Wc","zh-cn":"厕所"},icon:"Wc.svg"},{_id:"workshop",name:{en:"Workshop",ru:"Мастерская",de:"Werkstatt",fr:"Atelier",it:"Laboratorio",nl:"Werkplaats",pl:"Warsztat",pt:"Oficina",es:"Taller","zh-cn":"作坊"},icon:"Workshop.svg"},{_id:"windscreen",name:{en:"Windscreen",ru:"Ветровое Стекло",de:"Windfang",fr:"Pare-Brise",it:"Parabrezza",nl:"Voorruit",pl:"Szyba Przednia",pt:"Pára-Brisas",es:"Parabrisas","zh-cn":"风档"},icon:"Windscreen.svg"},{_id:"living_area",name:{en:"Living Area",ru:"Жилая Площадь",de:"Wohnbereich",fr:"Salon",it:"Zona Giorno",nl:"Living Area",pl:"Powierzchnia Mieszkalna",pt:"Sala-De-Estar",es:"Sala De Estar","zh-cn":"生活区域"},icon:"Living Area.svg"},{_id:"living_room",name:{en:"Living Room",ru:"Гостинная",de:"Wohnzimmer",fr:"Le Salon",it:"Soggiorno",nl:"Woonkamer",pl:"Salon",pt:"Sala De Estar",es:"Sala De Estar","zh-cn":"客厅"},icon:"Living Room.svg"},{_id:"living_room",name:{en:"Living Room",ru:"Гостинная",de:"Wohnzimmer",fr:"Le Salon",it:"Soggiorno",nl:"Woonkamer",pl:"Salon",pt:"Sala De Estar",es:"Sala De Estar","zh-cn":"客厅"},icon:"Living Room.svg"}];class M0e extends ze{constructor(e){super(e),this.state={opened:!1,names:[],filter:"",icons:null,loading:!1,isAnyName:!1}}loadAllIcons(){this.state.loading||this.state.icons||this.setState({loading:!0},()=>{const e=[],t=[];if(this.props.icons){const s=this.props.icons.map((r,o)=>{let M;if(typeof r=="object"){if(M=r.icon||r.src||r.href||"",t[o]=typeof r.name=="object"?r.name[this.props.lang]||r.name.en||r._id||"":r.name||"",!t[o]){const a=M.split(".");a.pop(),t[o]=a[a.length-1]}}else M=r;return M?M.startsWith("data:")?(e[o]=M,Promise.resolve()):E.getSvg(M).then(a=>e[o]=a):Promise.resolve()});Promise.all(s).catch(r=>console.error(r)).then(()=>this.setState({icons:e,loading:!1,names:t,isAnyName:!!t.find(r=>r)}))}else{let s=this.props.onlyRooms||!this.props.onlyRooms&&!this.props.onlyDevices?o0e:null;if(s&&(s.forEach(r=>{r.name&&typeof r.name=="object"&&(r.name=r.name[this.props.lang]||r.name.en||r._id),r.name=r.name||r._id}),s=s.filter((r,o)=>!(s!=null&&s.find((M,a)=>o!==a&&M.icon===r.icon&&M.name===r.name))),s.forEach((r,o)=>{t[o]=r.name,e[o]=`data:image/svg+xml;base64,${i0e[r.icon.replace(/\.svg$/,"")]}`})),s=this.props.onlyDevices||!this.props.onlyRooms&&!this.props.onlyDevices?r0e:null,s){const r=e.length;s&&s.forEach(o=>{o.name&&typeof o.name=="object"&&(o.name=o.name[this.props.lang]||o.name.en||o._id),o.name=o.name||o._id}),s=s.filter((o,M)=>!(s!=null&&s.find((a,u)=>M!==u&&a.icon===o.icon&&a.name===o.name))),s.forEach((o,M)=>{t[M+r]=o.name,e[M+r]=`data:image/svg+xml;base64,${DNe[o.icon.replace(/\.svg$/,"")]}`})}this.setState({icons:e,loading:!1,names:t,isAnyName:!!t.find(r=>r)})}})}render(){return this.state.loading?n.createElement(er,null):n.createElement(n.Fragment,null,n.createElement(X,{color:"grey",variant:"outlined",title:this.props.t("ra_Select predefined icon"),onClick:()=>this.setState({opened:!0},()=>this.loadAllIcons()),style:{minWidth:40,marginRight:8}},"..."),this.state.opened?n.createElement(de,{onClose:()=>this.setState({opened:!1}),open:!0},n.createElement(Ie,null,this.props.t("ra_Select predefined icon"),this.state.isAnyName?n.createElement(le,{variant:"standard",margin:"dense",style:{marginLeft:20},value:this.state.filter,onChange:e=>this.setState({filter:e.target.value.toLowerCase()}),placeholder:this.props.t("ra_Filter"),slotProps:{input:{endAdornment:this.state.filter?n.createElement(P,{tabIndex:-1,size:"small",onClick:()=>this.setState({filter:""})},n.createElement(Va,null)):void 0}}}):null),n.createElement(Ae,null,n.createElement("div",{style:{width:"100%",textAlign:"center"}},this.state.icons&&this.state.icons.map((e,t)=>!this.state.filter||this.state.names[t]&&this.state.names[t].toLowerCase().includes(this.state.filter)?n.createElement(ae,{title:this.state.names[t]||"",key:t,slotProps:{popper:{sx:{pointerEvents:"none"}}}},n.createElement(P,{onClick:()=>this.setState({opened:!1},()=>{const s=this.props.onSelect||this.props.onChange;s&&s(e)}),size:"large"},n.createElement(xe,{src:e,alt:t.toString(),style:{width:32,height:32,borderRadius:5}}))):null))),n.createElement(me,null,n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.setState({opened:!1}),startIcon:n.createElement(ge,null)},this.props.t("ra_Close")))):null)}}const _t={formContainer:{display:"flex",justifyContent:"left",alignItems:"center"},formControl:{display:"flex",padding:24,flexGrow:1e3},divContainer:{width:64,height:32,whiteSpace:"nowrap",lineHeight:"32px",marginRight:8},dragField:{textAlign:"center",display:"table",minHeight:90,width:"calc(100% - 60px)",border:"2px dashed #777",borderRadius:10,padding:4},formIcon:{margin:10,opacity:.6},text:{display:"table-cell",verticalAlign:"middle"}};function ige(i){var a,u,l,N;const e=i.icon,t=i.onChange,s=Qt(c=>{const L=new FileReader;L.addEventListener("load",()=>t(L.result),!1),c[0]&&L.readAsDataURL(c[0])},[t]),{getRootProps:r,getInputProps:o,isDragActive:M}=lN({onDrop:s});return n.createElement("div",{style:_t.formContainer},e?n.createElement(e,{style:_t.formIcon}):null,n.createElement(wt,{variant:"standard",style:{..._t.formControl,padding:3}},n.createElement(As,{shrink:!0,sx:(a=i.customStyles)!=null&&a.label?{"&.MuiInputLabel-root":i.customStyles.label}:void 0,classes:{root:(u=i.customClasses)==null?void 0:u.label}},i.label),n.createElement("div",{style:_t.formContainer},i.value?n.createElement("div",{style:_t.divContainer},n.createElement(xe,{style:{...i.previewStyle,...((l=i.customStyles)==null?void 0:l.icon)||void 0},src:i.value,className:E.clsx(i.previewClassName,(N=i.customClasses)==null?void 0:N.icon)}),!i.disabled&&n.createElement(P,{style:{verticalAlign:"top"},title:D.t("ra_Clear icon"),size:"small",onClick:()=>i.onChange("")},n.createElement(Va,null))):!i.disabled&&n.createElement(M0e,{icons:i.icons,onlyRooms:i.onlyRooms,onlyDevices:i.onlyDevices,onSelect:c=>i.onChange(c),t:D.t,lang:D.getLanguage()}),!i.disabled&&n.createElement("div",{...r(),style:{..._t.dragField,...M?{backgroundColor:"rgba(0, 255, 0, 0.1)"}:{cursor:"pointer"}}},n.createElement("input",{...o()}),M?n.createElement("span",{style:_t.text},D.t("ra_Drop the files here...")):n.createElement("span",{style:_t.text},D.t("ra_Drag 'n' drop some files here, or click to select files"))))))}function n0e(i){const e=document.createElement("div");e.innerHTML=i;const t=e.firstElementChild;return t!=null&&t.remove?t.remove():t&&e.removeChild(t),e.remove(),t}function a0e(i){const e={};if(!i)return e;for(let t,s=0;so[1].toUpperCase()),e[t]=i[s].value}return e}class $i extends ze{svg;static REMOTE_SERVER=window.location.hostname.includes("iobroker.in");static REMOTE_PREFIX=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1);constructor(e){var t;super(e),this.state={svg:!!((t=this.props.src)!=null&&t.startsWith("data:")),created:!0,color:this.props.color||"",src:this.props.src||"",imgError:!1,showError:!!this.props.showError},this.svg=this.state.svg&&this.state.src?this.getSvgFromData(this.state.src):null}static getDerivedStateFromProps(e,t){var o;const s={};let r=!1;return e&&t&&e.src!==t.src&&(s.src=e.src,s.svg=(o=e.src)==null?void 0:o.startsWith("data:"),s.created=!1,r=!0),e&&t&&e.color!==t.color&&(s.color=e.color,s.created=!1,r=!0),e&&t&&e.showError!==t.showError&&(s.showError=e.showError,r=!0),r?s:null}getSvgFromData(e){const t="data:image/svg+xml;base64,";if(!e.startsWith(t))return null;e=e.substring(t.length);try{e=atob(e);const s=n0e(e),r=s.innerHTML,o=a0e(s.attributes);return s.remove(),n.createElement(W,{component:"svg",sx:this.props.sx,className:this.props.className,style:this.state.color?{color:this.state.color}:void 0,...o,dangerouslySetInnerHTML:{__html:r}})}catch{}return null}render(){if(this.state.svg)return this.state.created||setTimeout(()=>{this.svg=this.state.src?this.getSvgFromData(this.state.src):null,this.setState({created:!0})},50),this.svg;if(this.state.src){if(this.state.imgError||!this.state.src)return n.createElement(iM,{className:this.props.className});if($i.REMOTE_SERVER&&!this.state.src.startsWith("http://")&&!this.state.src.startsWith("https://")){let e=(this.props.imagePrefix||"")+this.state.src;return e.startsWith("./")?e=$i.REMOTE_PREFIX+e.substring(2):e.startsWith("/")||(e=$i.REMOTE_PREFIX+e),n.createElement(W,{component:"img",sx:this.props.sx,className:this.props.className,src:`https://remote-files.iobroker.in${e}`,alt:"",onError:()=>this.props.showError?this.setState({imgError:!0}):this.setState({src:""})})}return n.createElement(W,{component:"img",sx:this.props.sx,className:this.props.className,src:(this.props.imagePrefix||"")+this.state.src,alt:"",onError:()=>this.props.showError?this.setState({imgError:!0}):this.setState({src:""})})}return null}}var B={},Lr={},Ht={};Object.defineProperty(Ht,"__esModule",{value:!0});Ht.StateType=Ht.Types=void 0;var Jn;(function(i){i.unknown="unknown",i.airCondition="airCondition",i.blind="blind",i.blindButtons="blindButtons",i.button="button",i.buttonSensor="buttonSensor",i.camera="camera",i.chart="chart",i.cie="cie",i.ct="ct",i.dimmer="dimmer",i.door="door",i.fireAlarm="fireAlarm",i.floodAlarm="floodAlarm",i.gate="gate",i.hue="hue",i.humidity="humidity",i.illuminance="illuminance",i.image="image",i.info="info",i.instance="instance",i.light="light",i.location="location",i.locationOne="locationOne",i.lock="lock",i.media="media",i.motion="motion",i.percentage="percentage",i.rgb="rgb",i.rgbSingle="rgbSingle",i.rgbwSingle="rgbwSingle",i.slider="slider",i.socket="socket",i.temperature="temperature",i.thermostat="thermostat",i.vacuumCleaner="vacuumCleaner",i.volume="volume",i.volumeGroup="volumeGroup",i.warning="warning",i.weatherCurrent="weatherCurrent",i.weatherForecast="weatherForecast",i.window="window",i.windowTilt="windowTilt"})(Jn||(Ht.Types=Jn={}));var Bn;(function(i){i.Number="number",i.String="string",i.Boolean="boolean"})(Bn||(Ht.StateType=Bn={}));var Oe={};Object.defineProperty(Oe,"__esModule",{value:!0});Oe.checkEnum=tu;Oe.roleOrEnum=vs;Oe.roleOrEnumLight=c0e;Oe.roleOrEnumBlind=u0e;Oe.roleOrEnumGate=l0e;Oe.roleOrEnumWindow=N0e;Oe.roleOrEnumDoor=L0e;Oe.getEnums=j0e;Oe.getAllStatesInChannel=g0e;Oe.getAllStatesInDevice=T0e;Oe.getObjectsBelowId=uu;Oe.getFunctionEnums=y0e;Oe.getParentId=D0e;function tu(i,e){let t=!1;return i&&i.forEach(s=>{const r=s.lastIndexOf(".");r!==-1&&(s=s.substring(r+1));for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&e[o].find(M=>M.test(s)))return t=!0,!1}),t}function vs(i,e,t,s){return i.common.role&&(t!=null&&t.includes(i.common.role))?!0:tu(e,s)}const su={en:[/lights?/i,/lamps?/i,/ceilings?/i],de:[/licht(er)?/i,/lampen?/i,/beleuchtung(en)?/i],ru:[/свет/i,/ламп[аы]/i,/торшеры?/,/подсветк[аи]/i,/лампочк[аи]/i,/светильники?/i]},iu=["switch.light","dimmer","value.dimmer","level.dimmer","sensor.light","state.light"];function c0e(i,e){return vs(i,e,iu,su)}const Hi={en:[/blinds?/i,/windows?/i,/shutters?/i],de:[/rollladen?/i,/fenstern?/i,/beschattung(en)?/i,/jalousien?/i],ru:[/ставни/i,/рольставни/i,/окна|окно/,/жалюзи/i]},ru=["blind","level.blind","value.blind","action.stop","button.stop","button.stop.blind","button.open.blind","button.close.blind","level.tilt","value.tilt","button.tilt.open","button.tilt.close","button.tilt.stop"];function u0e(i,e){return vs(i,e,ru,Hi)}const ou={en:[/gates?/i],de:[/^toren$/i,/^tor$/i],ru:[/ворота/i]},Mu=["gate","value.gate","switch.gate","action.stop","button.stop"];function l0e(i,e){return vs(i,e,Mu,ou)}const nu=["window","state.window","sensor.window","value.window"];function N0e(i,e){return vs(i,e,nu,Hi)}const au={en:[/doors?/i,/gates?/i,/wickets?/i,/entry|entries/i],de:[/^türe?/i,/^tuere?/i,/^tore?$/i,/einfahrt(en)?/i,/pforten?/i],ru:[/двери|дверь/i,/ворота/i,/калитка|калитки/,/въезды?/i,/входы?/i]},cu=["door","state.door","sensor.door"];function L0e(i,e){return vs(i,e,cu,au)}function j0e(){return{door:{roles:cu,words:au},window:{roles:nu,words:Hi},blind:{roles:ru,words:Hi},gate:{roles:Mu,words:ou},light:{roles:iu,words:su}}}function g0e(i,e){const t=[],s=new RegExp(`^${e.replace(/([$^.)([\]{}])/g,"\\$1")}\\.[^.]+$`);return i.forEach(r=>s.test(r)&&t.push(r)),t}function T0e(i,e){const t=[],s=new RegExp(`^${e.replace(/([$^.)([\]{}])/g,"\\$1")}\\.[^.]+\\.[^.]+$`);return i.forEach(r=>s.test(r)&&t.push(r)),t}function uu(i,e){const t=[];e+=".";let s=0,r=i.length-1,o=-1;for(;s<=r;){const M=Math.floor((s+r)/2);i[M]=i.length)return t;for(let M=o;M{e[M].common.members.includes(t)&&o.push(M)}),!o.length&&((r=e[t])===null||r===void 0?void 0:r.type)==="state"){const M=(0,zt.getParentId)(t);e[M]&&(e[M].type==="channel"||e[M].type==="device")&&this.enums.forEach(a=>{e[a].common.members.includes(M)&&o.push(a)})}return o.length?o:null}static copyState(e,t){const s=t||JSON.parse(JSON.stringify(e));return s.original=e.original||e,"enums"in e&&e.enums&&(s.enums=e.enums),"role"in e&&e.role&&(s.role=e.role),"channelRole"in e&&e.channelRole&&(s.channelRole=e.channelRole),s}_testOneState(e){var t,s,r,o,M,a;const u=e.objects,l=e.pattern,N=e.state,c=e.channelStates,L=e.usedIds,j=e.usedInCurrentDevice,g=e.ignoreIndicators,y=e.ignoreEnums,d=e.sortedKeys;let I=e.result,m=!1;for(const w of c)if(!(N.name==="COVER"&&(I!=null&&I.states.find(O=>O.id&&O.name==="COVER")))){if(N.indicator&&g){const A=w.split(".").pop()||"";if(A&&g.includes(A))continue}if(!N.indicator){if(j.includes(w))continue;if(!N.notSingle){if(!e.detectAllPossibleDevices){if(L.includes(w))continue}}}if(this._applyPattern(u,w,N,y,d)){if(I||(I=JSON.parse(JSON.stringify(ft.patterns[l])),e.result=I,I==null||I.states.forEach((O,A)=>Be.copyState(ft.patterns[l].states[A],O))),I.states.find(({id:O})=>O===w))m=!0;else for(const O of I.states)if(O.name===N.name){if(O.id){let A;e.favorId&&(w===e.favorId?A=!0:O.id===e.favorId&&(A=!1));const h=(r=(s=(t=u[O.id])===null||t===void 0?void 0:t.common)===null||s===void 0?void 0:s.role)!==null&&r!==void 0?r:"",p=(a=(M=(o=u[w])===null||o===void 0?void 0:o.common)===null||M===void 0?void 0:M.role)!==null&&a!==void 0?a:"",S=O.defaultRole;if(S&&A===void 0&&(p===S?A=!0:h===S&&(A=!1)),A===void 0){const f=p.split("."),$=f.length,x=h.split("."),Z=x.length;p===""||f[0]==="state"&&x[0]!=="state"?A=!1:f[0]!=="state"&&x[0]==="state"||$>Z?A=!0:$1)){for(const O of c)if(O!==w&&(N.indicator||!j.includes(O)&&(N.notSingle||!L.includes(O)))&&this._applyPattern(u,O,N,y,d))if(N.indicator||j.push(O),Array.isArray(N)){const A=Be.copyState(N[0]);A.id=O,I.states.push(A)}else{const A=Be.copyState(N);A.id=O,I.states.push(A)}}}}return m}static findParentChannelOrDevice(e,t,s){if(!e[t])return;const r=t.split("."),o=t;if(e[t].type==="state"&&(r.pop(),t=r.join(".")),r.length<=2)return t;const M=e[t];if((M==null?void 0:M.type)==="device"||s&&(M==null?void 0:M.type)==="channel")return t;if(s)return;r.pop();const a=r.join("."),u=e[a];if(!u)return M?t:o;if(u.type==="device"||r.length<=2)return a;if((M==null?void 0:M.type)==="channel")return t;r.pop();const l=r.join("."),N=e[l];return!N||N.type!=="device"&&N.type!=="channel"?a:l}static getChannelOrDeviceStates(e,t,s,r=!1,o=!1){var M;const a=(M=e[t])===null||M===void 0?void 0:M.type;switch(a){case void 0:return[...(0,zt.getObjectsBelowId)(s,t)];case"state":case"channel":case"device":case"folder":if(r&&a!=="device"){const u=Be.findParentChannelOrDevice(e,t);return u&&u!==t?[...(0,zt.getObjectsBelowId)(s,u)]:[t]}if(a!=="state")return[...(0,zt.getObjectsBelowId)(s,t)];if(o){const u=Be.findParentChannelOrDevice(e,t,!0);return u&&u!==t?[...(0,zt.getObjectsBelowId)(s,u)]:[t]}return[t];default:return[t]}}static patternIsAllowed(e,t,s){if(!e)return!1;if(Array.isArray(e.type)){for(let r=0;r{const o=e.indexOf(s),M=e.indexOf(r);if(o===-1||M===-1)return;const a=e.splice(o,1);e.splice(M,0,...a)}),e}_detectNext(e){var t,s,r,o;const{objects:M,id:a,_usedIdsOptional:u=[],ignoreIndicators:l,prioritizedTypes:N,detectParent:c,detectOnlyChannel:L,allowedTypes:j,excludedTypes:g,_keysOptional:y,detectAllPossibleDevices:d}=e;let{_patternList:I}=e;e._usedIdsOptional=u;const m=Be.getChannelOrDeviceStates(M,a,y||[],c,L);if(!(!((t=M[a])===null||t===void 0)&&t.common)&&!m.length)return null;if((s=e._checkedPatterns)!==null&&s!==void 0||(e._checkedPatterns=[]),!I){const A=Object.keys(ft.patterns).filter(h=>Be.patternIsAllowed(ft.patterns[h],j,g));I=N?this.sortTypes(A,N):A,e._patternList=I}const w={objects:M,channelStates:m,usedIds:u,ignoreIndicators:l||[],pattern:"unknown",usedInCurrentDevice:[],state:{},ignoreEnums:!!e.ignoreEnums,sortedKeys:y,favorId:e.detectParent?void 0:a,detectAllPossibleDevices:d},O=(r=M[a])===null||r===void 0?void 0:r.type;for(const A of I){if(e._checkedPatterns.includes(A))continue;e._checkedPatterns.push(A),delete w.result,w.pattern=A,w.usedInCurrentDevice=[];for(const p of ft.patterns[A].states){let S=!1;if(w.state=p,this._testOneState(w)&&(S=!0),p.required&&!S){delete w.result;break}}if(!Be.allRequiredStatesFound(w))continue;w.usedInCurrentDevice.forEach(p=>u.push(p));let h;if(O!=="device"){const p=(o=Be.findParentChannelOrDevice(M,a))!==null&&o!==void 0?o:a;if(M[p]&&(M[p].type==="channel"||M[p].type==="device")){h=(0,zt.getObjectsBelowId)(y,p);for(const S of h)w.result.states.forEach((f,$)=>{!f.id&&(f.indicator||f.searchInParent)&&!f.noDeviceDetection&&this._applyPattern(M,S,f.original,!!e.ignoreEnums,w.sortedKeys)&&w.result&&(w.result.states[$].id=S)})}}if(w.result.states.forEach(p=>Be.cleanState(p,w.objects)),e.limitTypesToOneOf){for(const p of e.limitTypesToOneOf)if(p.includes(A))for(const S of p)S===A||e._checkedPatterns.includes(S)||e._checkedPatterns.push(S)}return w.result}return null}detect(e){var t;const{objects:s,id:r,ignoreCache:o,detectAllPossibleDevices:M}=e;let{_keysOptional:a,_usedIdsOptional:u}=e;if(!o&&this.cache[r]){const{allowedTypes:c=[],excludedTypes:L=[]}=e;if(!c.length&&!L.length)return this.cache[r];const j=this.cache[r].filter(({type:g})=>c.includes(g)&&!L.includes(g));if(j.length)return j}a?e._keysOptionalSorted||a.sort():(a=Object.keys(s),a.sort(),e._keysOptional=a),u&&!e.detectParent&&(u=[],e._usedIdsOptional=u),e.ignoreEnums===void 0&&((t=e.allowedTypes)===null||t===void 0?void 0:t.length)===1&&(e.ignoreEnums=!0),M&&(e.excludedTypes||(e.excludedTypes=[]),e.excludedTypes.includes(Mt.Types.info)||e.excludedTypes.push(Mt.Types.info)),e._checkedPatterns=[];const l=[];let N;for(;N=this._detectNext(e);)l.push(N),e.detectAllPossibleDevices&&(e._usedIdsOptional=[]);return l.sort((c,L)=>{if(c.type===Mt.Types.info&&L.type!==Mt.Types.info)return 1;if(L.type===Mt.Types.info&&c.type!==Mt.Types.info)return-1;const j=c.states.find(I=>I.id===r&&I.required)?1:0,g=L.states.find(I=>I.id===r&&I.required)?1:0;if(j!==g)return g-j;if(!j){const I=c.states.find(w=>w.id===r)?1:0,m=L.states.find(w=>w.id===r)?1:0;if(I!==m)return m-I}const y=c.states.filter(I=>I.id).length;return L.states.filter(I=>I.id).length-y}),this.cache[r]=l.length?l:null,this.cache[r]}static getPatterns(){const e={};return Object.keys(ft.patterns).forEach(t=>{const s=JSON.parse(JSON.stringify(ft.patterns[t]));s.states.forEach((r,o)=>{const M=ft.patterns[t].states[o];M.role&&(s.states[o].role=M.role.toString()),M.enums&&(s.states[o].enums=!0)}),e[t]=s}),e}}Lr.ChannelDetector=Be;Be.getEnums=zt.getEnums;(function(i){Object.defineProperty(i,"__esModule",{value:!0}),i.StateType=i.Types=i.roleOrEnumGate=i.roleOrEnumDoor=i.roleOrEnumWindow=i.roleOrEnumBlind=i.roleOrEnumLight=void 0;const e=Lr;var t=Oe;Object.defineProperty(i,"roleOrEnumLight",{enumerable:!0,get:function(){return t.roleOrEnumLight}}),Object.defineProperty(i,"roleOrEnumBlind",{enumerable:!0,get:function(){return t.roleOrEnumBlind}}),Object.defineProperty(i,"roleOrEnumWindow",{enumerable:!0,get:function(){return t.roleOrEnumWindow}}),Object.defineProperty(i,"roleOrEnumDoor",{enumerable:!0,get:function(){return t.roleOrEnumDoor}}),Object.defineProperty(i,"roleOrEnumGate",{enumerable:!0,get:function(){return t.roleOrEnumGate}}),i.default=e.ChannelDetector;var s=Ht;Object.defineProperty(i,"Types",{enumerable:!0,get:function(){return s.Types}}),Object.defineProperty(i,"StateType",{enumerable:!0,get:function(){return s.StateType}})})(B);var lu={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Gn=n.createContext&&n.createContext(lu),d0e=["attr","size","title"];function z0e(i,e){if(i==null)return{};var t,s,r=h0e(i,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(i);for(s=0;sn.createElement(e.tag,Zi({key:t},e.attr),Nu(e.child)))}function U(i){return e=>n.createElement(A0e,Vi({attr:Zi({},i.attr)},e),Nu(i.child))}function A0e(i){var e=t=>{var{attr:s,size:r,title:o}=i,M=z0e(i,d0e),a=r||t.size||"1em",u;return t.className&&(u=t.className),i.className&&(u=(u?u+" ":"")+i.className),n.createElement("svg",Vi({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,s,M,{className:u,style:Zi(Zi({color:i.color||t.color},t.style),i.style),height:a,width:a,xmlns:"http://www.w3.org/2000/svg"}),o&&n.createElement("title",null,o),i.children)};return Gn!==void 0?n.createElement(Gn.Consumer,null,t=>e(t)):e(lu)}function m0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z"},child:[]}]})(i)}function p0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"},child:[]}]})(i)}function O0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"},child:[]}]})(i)}function E0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z"},child:[]}]})(i)}function _0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z"},child:[]}]})(i)}function f0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z"},child:[]}]})(i)}function S0e(i){return U({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"},child:[]}]})(i)}function x0e(i){return U({attr:{t:"1569683928793",viewBox:"0 0 1024 1024",version:"1.1"},child:[{tag:"path",attr:{d:"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H212V212h200v200zM864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H612V212h200v200zM864 544H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z m-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"},child:[]}]})(i)}function k0e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M24 5.25v13a.75.75 0 0 1-1.136.643L16.5 15.075v2.175A1.75 1.75 0 0 1 14.75 19h-13A1.75 1.75 0 0 1 0 17.25v-11C0 5.284.784 4.5 1.75 4.5h13c.966 0 1.75.784 1.75 1.75v2.175l6.364-3.818A.75.75 0 0 1 24 5.25Zm-9 1a.25.25 0 0 0-.25-.25h-13a.25.25 0 0 0-.25.25v11c0 .138.112.25.25.25h13a.25.25 0 0 0 .25-.25v-11Zm1.5 7.075 6 3.6V6.575l-6 3.6Z"},child:[]}]})(i)}function Y0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"},child:[]}]})(i)}function Q0e(i){return U({attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z"},child:[]}]})(i)}function v0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"},child:[]}]})(i)}function U0e(i){return U({attr:{viewBox:"0 0 384 512"},child:[{tag:"path",attr:{d:"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"},child:[]}]})(i)}function Hn(i){return U({attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z"},child:[]}]})(i)}function b0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"},child:[]}]})(i)}function $0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"},child:[]}]})(i)}function P0e(i){return U({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"},child:[]}]})(i)}function Vn(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"},child:[]}]})(i)}function W0e(i){return U({attr:{viewBox:"0 0 416 512"},child:[{tag:"path",attr:{d:"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z"},child:[]}]})(i)}function R0e(i){return U({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"},child:[]}]})(i)}function J0e(i){return U({attr:{viewBox:"0 0 352 512"},child:[{tag:"path",attr:{d:"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"},child:[]}]})(i)}function B0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"},child:[]}]})(i)}function G0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"},child:[]}]})(i)}function F0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"},child:[]}]})(i)}function H0e(i){return U({attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"},child:[]}]})(i)}function V0e(i){return U({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"},child:[]}]})(i)}function Z0e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"},child:[]}]})(i)}function X0e(i){return U({attr:{viewBox:"0 0 352 512"},child:[{tag:"path",attr:{d:"M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"},child:[]}]})(i)}function K0e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"circle",attr:{cx:"12",cy:"19",r:"2"},child:[]},{tag:"path",attr:{d:"M10 3h4v12h-4z"},child:[]}]})(i)}function q0e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"m21.41 10.59-7.99-8c-.78-.78-2.05-.78-2.83 0l-8.01 8c-.78.78-.78 2.05 0 2.83l8.01 8c.78.78 2.05.78 2.83 0l7.99-8c.79-.79.79-2.05 0-2.83zM13.5 14.5V12H10v3H8v-4c0-.55.45-1 1-1h4.5V7.5L17 11l-3.5 3.5z"},child:[]}]})(i)}function e4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"m17 16-4-4V8.82C14.16 8.4 15 7.3 15 6c0-1.66-1.34-3-3-3S9 4.34 9 6c0 1.3.84 2.4 2 2.82V12l-4 4H3v5h5v-3.05l4-4.2 4 4.2V21h5v-5h-4z"},child:[]}]})(i)}function t4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M15 16v1.26l-6-3v-3.17L11.7 8H16V2h-6v4.9L7.3 10H3v6h5l7 3.5V22h6v-6z"},child:[]}]})(i)}function Zn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M16.56 8.94 7.62 0 6.21 1.41l2.38 2.38-5.15 5.15a1.49 1.49 0 0 0 0 2.12l5.5 5.5c.29.29.68.44 1.06.44s.77-.15 1.06-.44l5.5-5.5c.59-.58.59-1.53 0-2.12zM5.21 10 10 5.21 14.79 10H5.21zM19 11.5s-2 2.17-2 3.5c0 1.1.9 2 2 2s2-.9 2-2c0-1.33-2-3.5-2-3.5zM2 20h20v4H2v-4z"},child:[]}]})(i)}function s4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M8.4 18.2c.38.5.6 1.12.6 1.8 0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3c.44 0 .85.09 1.23.26l1.41-1.77a4.504 4.504 0 0 1-1.09-3.69l-2.03-.68A2.997 2.997 0 0 1 0 9.5c0-1.66 1.34-3 3-3s3 1.34 3 3c0 .07 0 .14-.01.21l2.03.68a4.468 4.468 0 0 1 3.22-2.32V5.91A3.018 3.018 0 0 1 9 3c0-1.66 1.34-3 3-3s3 1.34 3 3c0 1.4-.96 2.57-2.25 2.91v2.16c1.4.23 2.58 1.11 3.22 2.32L18 9.71V9.5c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3c-1.06 0-1.98-.55-2.52-1.37l-2.03.68a4.49 4.49 0 0 1-1.09 3.69l1.41 1.77c.38-.18.79-.27 1.23-.27 1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3c0-.68.22-1.3.6-1.8l-1.41-1.77c-1.35.75-3.01.76-4.37 0L8.4 18.2z"},child:[]}]})(i)}function Xn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"},child:[]}]})(i)}function i4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"},child:[]}]})(i)}function r4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3A8.994 8.994 0 0 0 13 3.06V1h-2v2.06A8.994 8.994 0 0 0 3.06 11H1v2h2.06A8.994 8.994 0 0 0 11 20.94V23h2v-2.06A8.994 8.994 0 0 0 20.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"},child:[]}]})(i)}function o4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M7 5h10v2h2V3c0-1.1-.9-1.99-2-1.99L7 1c-1.1 0-2 .9-2 2v4h2V5zm8.41 11.59L20 12l-4.59-4.59L14 8.83 17.17 12 14 15.17l1.41 1.42zM10 15.17 6.83 12 10 8.83 8.59 7.41 4 12l4.59 4.59L10 15.17zM17 19H7v-2H5v4c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2v-4h-2v2z"},child:[]}]})(i)}function Kn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4zM13 18h-2v-2h2v2zm0-4h-2V9h2v5z"},child:[]}]})(i)}function M4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M15.54 5.54 13.77 7.3 12 5.54 10.23 7.3 8.46 5.54 12 2zm2.92 10-1.76-1.77L18.46 12l-1.76-1.77 1.76-1.77L22 12zm-10 2.92 1.77-1.76L12 18.46l1.77-1.76 1.77 1.76L12 22zm-2.92-10 1.76 1.77L5.54 12l1.76 1.77-1.76 1.77L2 12z"},child:[]},{tag:"circle",attr:{cx:"12",cy:"12",r:"3"},child:[]}]})(i)}function qn(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h-4V4h4v2z"},child:[]}]})(i)}function n4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M11.07 12.85c.77-1.39 2.25-2.21 3.11-3.44.91-1.29.4-3.7-2.18-3.7-1.69 0-2.52 1.28-2.87 2.34L6.54 6.96C7.25 4.83 9.18 3 11.99 3c2.35 0 3.96 1.07 4.78 2.41.7 1.15 1.11 3.3.03 4.9-1.2 1.77-2.35 2.31-2.97 3.45-.25.46-.35.76-.35 2.24h-2.89c-.01-.78-.13-2.05.48-3.15zM14 20c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"},child:[]}]})(i)}function ea(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 3C6.95 3 3.15 4.85 0 7.23L12 22 24 7.25C20.85 4.87 17.05 3 12 3zm1 13h-2v-6h2v6zm-2-8V6h2v2h-2z"},child:[]}]})(i)}function a4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3A8.994 8.994 0 0 0 13 3.06V1h-2v2.06A8.994 8.994 0 0 0 3.06 11H1v2h2.06A8.994 8.994 0 0 0 11 20.94V23h2v-2.06A8.994 8.994 0 0 0 20.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"},child:[]}]})(i)}function c4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M9.91,19.56c0-0.85,0.2-1.64,0.59-2.38s0.94-1.35,1.65-1.84V5.42c0-0.8,0.27-1.48,0.82-2.03S14.2,2.55,15,2.55 - c0.81,0,1.49,0.28,2.04,0.83c0.55,0.56,0.83,1.23,0.83,2.03v9.92c0.71,0.49,1.25,1.11,1.64,1.84s0.58,1.53,0.58,2.38 - c0,0.92-0.23,1.78-0.68,2.56s-1.07,1.4-1.85,1.85s-1.63,0.68-2.56,0.68c-0.92,0-1.77-0.23-2.55-0.68s-1.4-1.07-1.86-1.85 - S9.91,20.48,9.91,19.56z M11.67,19.56c0,0.93,0.33,1.73,0.98,2.39c0.65,0.66,1.44,0.99,2.36,0.99c0.93,0,1.73-0.33,2.4-1 - s1.01-1.46,1.01-2.37c0-0.62-0.16-1.2-0.48-1.73c-0.32-0.53-0.76-0.94-1.32-1.23l-0.28-0.14c-0.1-0.04-0.15-0.14-0.15-0.29V5.42 - c0-0.32-0.11-0.59-0.34-0.81C15.62,4.4,15.34,4.29,15,4.29c-0.32,0-0.6,0.11-0.83,0.32c-0.23,0.21-0.34,0.48-0.34,0.81v10.74 - c0,0.15-0.05,0.25-0.14,0.29l-0.27,0.14c-0.55,0.29-0.98,0.7-1.29,1.23C11.82,18.35,11.67,18.92,11.67,19.56z M12.45,19.56 - c0,0.71,0.24,1.32,0.73,1.82s1.07,0.75,1.76,0.75s1.28-0.25,1.79-0.75c0.51-0.5,0.76-1.11,0.76-1.81c0-0.63-0.22-1.19-0.65-1.67 - c-0.43-0.48-0.96-0.77-1.58-0.85V9.69c0-0.06-0.03-0.13-0.1-0.19c-0.07-0.07-0.14-0.1-0.22-0.1c-0.09,0-0.16,0.03-0.21,0.08 - c-0.05,0.06-0.08,0.12-0.08,0.21v7.34c-0.61,0.09-1.13,0.37-1.56,0.85C12.66,18.37,12.45,18.92,12.45,19.56z`},child:[]}]})(i)}function u4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M6.34,12.48c0-0.94,0.3-1.78,0.89-2.52s1.34-1.21,2.25-1.41C9.73,7.43,10.3,6.5,11.2,5.78s1.92-1.08,3.08-1.08 - c1.12,0,2.13,0.35,3.02,1.05c0.89,0.7,1.46,1.6,1.73,2.69h0.27c1.12,0,2.08,0.39,2.88,1.18c0.79,0.78,1.19,1.74,1.19,2.85 - c0,0.6-0.12,1.17-0.37,1.7c-0.25,0.53-0.59,0.99-1.03,1.37v0.03c0,0.59-0.19,1.12-0.56,1.59c-0.37,0.47-0.84,0.76-1.4,0.89 - c-0.14,0.62-0.45,1.15-0.91,1.58c-0.46,0.43-1.01,0.7-1.63,0.8c0.29,0.34,0.43,0.72,0.43,1.13c0,0.48-0.17,0.89-0.51,1.24 - c-0.34,0.34-0.75,0.52-1.23,0.52c-0.48,0-0.89-0.17-1.23-0.52c-0.34-0.34-0.51-0.76-0.51-1.24c0-0.19,0.03-0.38,0.1-0.57h-0.1 - c-0.58,0-1.08-0.21-1.5-0.63c-0.42-0.42-0.63-0.92-0.63-1.5c0-0.4,0.1-0.76,0.3-1.07c-0.52-0.29-0.89-0.7-1.12-1.25h-1.28v-0.01 - c-1.07-0.07-1.98-0.49-2.73-1.27S6.34,13.56,6.34,12.48z M7.74,12.23c0,0.8,0.28,1.48,0.84,2.04s1.24,0.84,2.03,0.84 - c0.49,0,0.95-0.11,1.37-0.34c0.12,0.74,0.47,1.36,1.04,1.86s1.25,0.74,2.02,0.74c0.87,0,1.61-0.31,2.22-0.92 - c0.41,0.48,0.92,0.71,1.54,0.71c0.57,0,1.05-0.2,1.46-0.6c0.4-0.4,0.6-0.89,0.6-1.46c0.4-0.27,0.72-0.61,0.95-1.04 - c0.23-0.42,0.35-0.88,0.35-1.37c0-0.79-0.28-1.47-0.85-2.02c-0.57-0.55-1.25-0.83-2.05-0.83c-0.56,0-1.07,0.15-1.53,0.44 - c0.06-0.24,0.08-0.51,0.08-0.79c0-0.96-0.34-1.78-1.03-2.46c-0.69-0.68-1.52-1.01-2.49-1.01c-0.94,0-1.75,0.33-2.43,0.97 - s-1.04,1.44-1.07,2.37c-0.02,0-0.05,0-0.08,0c-0.04,0-0.07,0-0.09,0c-0.79,0-1.46,0.28-2.03,0.84S7.74,11.45,7.74,12.23z`},child:[]}]})(i)}function l4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M7.56,17.19c0-0.88,0.24-1.89,0.72-3.03s1.1-2.25,1.86-3.31c1.56-2.06,2.92-3.62,4.06-4.67l0.75-0.72 - c0.25,0.26,0.53,0.5,0.83,0.72c0.41,0.42,1.04,1.11,1.88,2.09s1.57,1.85,2.17,2.65c0.71,1.01,1.32,2.1,1.81,3.25 - s0.74,2.16,0.74,3.03c0,1-0.19,1.95-0.58,2.86c-0.39,0.91-0.91,1.7-1.57,2.36c-0.66,0.66-1.45,1.19-2.37,1.58 - c-0.92,0.39-1.89,0.59-2.91,0.59c-1,0-1.95-0.19-2.86-0.57c-0.91-0.38-1.7-0.89-2.36-1.55c-0.66-0.65-1.19-1.44-1.58-2.35 - S7.56,18.23,7.56,17.19z M9.82,14.26c0,0.83,0.17,1.49,0.52,1.99c0.35,0.49,0.88,0.74,1.59,0.74c0.72,0,1.25-0.25,1.61-0.74 - c0.35-0.49,0.53-1.15,0.54-1.99c-0.01-0.84-0.19-1.5-0.54-2c-0.35-0.49-0.89-0.74-1.61-0.74c-0.71,0-1.24,0.25-1.59,0.74 - C9.99,12.76,9.82,13.42,9.82,14.26z M11.39,14.26c0-0.15,0-0.27,0-0.35s0.01-0.19,0.02-0.33c0.01-0.14,0.02-0.25,0.05-0.32 - s0.05-0.16,0.09-0.24c0.04-0.08,0.09-0.15,0.15-0.18c0.07-0.04,0.14-0.06,0.23-0.06c0.14,0,0.25,0.04,0.33,0.12s0.14,0.21,0.17,0.38 - c0.03,0.18,0.05,0.32,0.06,0.45s0.01,0.3,0.01,0.52c0,0.23,0,0.4-0.01,0.52c-0.01,0.12-0.03,0.27-0.06,0.45 - c-0.03,0.17-0.09,0.3-0.17,0.38s-0.19,0.12-0.33,0.12c-0.09,0-0.16-0.02-0.23-0.06c-0.07-0.04-0.12-0.1-0.15-0.18 - c-0.04-0.08-0.07-0.17-0.09-0.24c-0.02-0.08-0.04-0.19-0.05-0.32c-0.01-0.14-0.02-0.25-0.02-0.32S11.39,14.41,11.39,14.26z - M11.98,22.01h1.32l4.99-10.74h-1.35L11.98,22.01z M16.28,19.02c0.01,0.84,0.2,1.5,0.55,2c0.35,0.49,0.89,0.74,1.6,0.74 - c0.72,0,1.25-0.25,1.6-0.74c0.35-0.49,0.52-1.16,0.53-2c-0.01-0.84-0.18-1.5-0.53-1.99c-0.35-0.49-0.88-0.74-1.6-0.74 - c-0.71,0-1.25,0.25-1.6,0.74C16.47,17.52,16.29,18.18,16.28,19.02z M17.85,19.02c0-0.23,0-0.4,0.01-0.52 - c0.01-0.12,0.03-0.27,0.06-0.45s0.09-0.3,0.17-0.38s0.19-0.12,0.33-0.12c0.09,0,0.17,0.02,0.24,0.06c0.07,0.04,0.12,0.1,0.16,0.19 - c0.04,0.09,0.07,0.17,0.1,0.24s0.04,0.18,0.05,0.32l0.01,0.32l0,0.34c0,0.16,0,0.28,0,0.35l-0.01,0.32l-0.05,0.32l-0.1,0.24 - l-0.16,0.19l-0.24,0.06c-0.14,0-0.25-0.04-0.33-0.12s-0.14-0.21-0.17-0.38c-0.03-0.18-0.05-0.33-0.06-0.45S17.85,19.25,17.85,19.02z - `},child:[]}]})(i)}function N4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M7.38,21.83c0-0.3,0.1-0.55,0.29-0.76c0.19-0.21,0.43-0.31,0.7-0.31v-0.02l13.16,0.04c0.06-0.01,0.1-0.02,0.1-0.02 - c0.27,0.01,0.51,0.12,0.7,0.33c0.19,0.21,0.29,0.47,0.28,0.77c0,0.3-0.1,0.55-0.29,0.76c-0.19,0.21-0.43,0.31-0.7,0.31v0.01 - L8.59,22.9c-0.1,0.01-0.17,0.02-0.22,0.02c-0.28-0.01-0.51-0.11-0.7-0.32C7.47,22.39,7.37,22.13,7.38,21.83z M8.2,16.37 - c-0.01-0.43,0.04-0.93,0.16-1.52c0.06-0.3,0.2-0.76,0.44-1.37c0.02-0.05,0.07-0.14,0.13-0.28c0.01,0.02,0.03,0.03,0.04,0.05 - s0.02,0.02,0.02,0.03c0.11,0.44,0.27,0.84,0.49,1.2c0.21,0.32,0.48,0.56,0.82,0.69c0.26,0.11,0.63,0.17,1.1,0.18 - c0.02,0,0.05,0,0.08,0c0.03,0,0.06,0,0.08,0c-0.33-0.33-0.59-0.67-0.79-1c-0.3-0.52-0.49-1.12-0.57-1.81 - c-0.06-0.54-0.03-1.19,0.09-1.96c0.02-0.15,0.12-0.49,0.29-1.01c0.15-0.47,0.36-0.9,0.64-1.28C11.54,7.8,12,7.3,12.61,6.78 - c0.37-0.31,0.89-0.67,1.56-1.07c0.07-0.04,0.18-0.11,0.35-0.19c0,0.02,0,0.04,0,0.05s0,0.03,0,0.04v0.02 - c-0.24,0.57-0.41,1.15-0.49,1.73c-0.06,0.53,0.02,1.02,0.24,1.48c0.17,0.36,0.48,0.75,0.92,1.15c0.09,0.09,0.29,0.29,0.6,0.58 - c0.3,0.29,0.54,0.52,0.7,0.68l0.25,0.25c0.26-0.38,0.41-0.83,0.44-1.35c0.04-0.55,0-1.15-0.14-1.8c0-0.01,0-0.04,0.01-0.11 - c0.02,0.02,0.13,0.1,0.3,0.24c0.56,0.5,0.98,0.95,1.28,1.34c0.48,0.62,0.83,1.21,1.06,1.74c0.19,0.46,0.31,0.92,0.38,1.4 - c0.06,0.42,0.08,0.77,0.07,1.05c-0.01,0.78-0.1,1.43-0.25,1.96c-0.07,0.21-0.13,0.38-0.19,0.52c0.25-0.07,0.47-0.16,0.65-0.26 - c0.25-0.16,0.45-0.37,0.6-0.66c0.16-0.29,0.29-0.62,0.38-0.98c0-0.01,0.01-0.03,0.03-0.05c0.01,0.02,0.02,0.05,0.05,0.09 - c0.02,0.04,0.04,0.07,0.05,0.1c0.13,0.31,0.22,0.63,0.27,0.97c0.08,0.38,0.1,0.75,0.08,1.13c-0.02,0.29-0.07,0.56-0.16,0.81 - c-0.08,0.24-0.16,0.43-0.22,0.58c-0.19,0.38-0.39,0.71-0.62,0.98c-0.06,0.07-0.11,0.13-0.14,0.16H9.67 - c-0.01-0.01-0.03-0.03-0.07-0.06s-0.06-0.05-0.08-0.07C9.26,18.98,8.98,18.6,8.7,18.1c-0.08-0.15-0.18-0.38-0.29-0.69 - C8.29,17.1,8.22,16.75,8.2,16.37z`},child:[]}]})(i)}function L4e(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M4.37,14.62c0-0.24,0.08-0.45,0.25-0.62c0.17-0.16,0.38-0.24,0.6-0.24h2.04c0.23,0,0.42,0.08,0.58,0.25 - c0.15,0.17,0.23,0.37,0.23,0.61S8,15.06,7.85,15.23c-0.15,0.17-0.35,0.25-0.58,0.25H5.23c-0.23,0-0.43-0.08-0.6-0.25 - C4.46,15.06,4.37,14.86,4.37,14.62z M7.23,21.55c0-0.23,0.08-0.43,0.23-0.61l1.47-1.43c0.15-0.16,0.35-0.23,0.59-0.23 - c0.24,0,0.44,0.08,0.6,0.23s0.24,0.34,0.24,0.57c0,0.24-0.08,0.46-0.24,0.64L8.7,22.14c-0.41,0.32-0.82,0.32-1.23,0 - C7.31,21.98,7.23,21.78,7.23,21.55z M7.23,7.71c0-0.23,0.08-0.43,0.23-0.61C7.66,6.93,7.87,6.85,8.1,6.85 - c0.22,0,0.42,0.08,0.59,0.24l1.43,1.47c0.16,0.15,0.24,0.35,0.24,0.59c0,0.24-0.08,0.44-0.24,0.6s-0.36,0.24-0.6,0.24 - c-0.24,0-0.44-0.08-0.59-0.24L7.47,8.32C7.31,8.16,7.23,7.95,7.23,7.71z M9.78,14.62c0-0.93,0.23-1.8,0.7-2.6s1.1-1.44,1.91-1.91 - s1.67-0.7,2.6-0.7c0.7,0,1.37,0.14,2.02,0.42c0.64,0.28,1.2,0.65,1.66,1.12c0.47,0.47,0.84,1.02,1.11,1.66 - c0.27,0.64,0.41,1.32,0.41,2.02c0,0.94-0.23,1.81-0.7,2.61c-0.47,0.8-1.1,1.43-1.9,1.9c-0.8,0.47-1.67,0.7-2.61,0.7 - s-1.81-0.23-2.61-0.7c-0.8-0.47-1.43-1.1-1.9-1.9C10.02,16.43,9.78,15.56,9.78,14.62z M11.48,14.62c0,0.98,0.34,1.81,1.03,2.5 - c0.68,0.69,1.51,1.04,2.49,1.04s1.81-0.35,2.5-1.04s1.04-1.52,1.04-2.5c0-0.96-0.35-1.78-1.04-2.47c-0.69-0.68-1.52-1.02-2.5-1.02 - c-0.97,0-1.8,0.34-2.48,1.02C11.82,12.84,11.48,13.66,11.48,14.62z M14.14,22.4c0-0.24,0.08-0.44,0.25-0.6s0.37-0.24,0.6-0.24 - c0.24,0,0.45,0.08,0.61,0.24s0.24,0.36,0.24,0.6v1.99c0,0.24-0.08,0.45-0.25,0.62c-0.17,0.17-0.37,0.25-0.6,0.25 - s-0.44-0.08-0.6-0.25c-0.17-0.17-0.25-0.38-0.25-0.62V22.4z M14.14,6.9V4.86c0-0.23,0.08-0.43,0.25-0.6C14.56,4.09,14.76,4,15,4 - s0.43,0.08,0.6,0.25c0.17,0.17,0.25,0.37,0.25,0.6V6.9c0,0.23-0.08,0.42-0.25,0.58S15.23,7.71,15,7.71s-0.44-0.08-0.6-0.23 - S14.14,7.13,14.14,6.9z M19.66,20.08c0-0.23,0.08-0.42,0.23-0.56c0.15-0.16,0.34-0.23,0.56-0.23c0.24,0,0.44,0.08,0.6,0.23 - l1.46,1.43c0.16,0.17,0.24,0.38,0.24,0.61c0,0.23-0.08,0.43-0.24,0.59c-0.4,0.31-0.8,0.31-1.2,0l-1.42-1.42 - C19.74,20.55,19.66,20.34,19.66,20.08z M19.66,9.16c0-0.25,0.08-0.45,0.23-0.59l1.42-1.47c0.17-0.16,0.37-0.24,0.59-0.24 - c0.24,0,0.44,0.08,0.6,0.25c0.17,0.17,0.25,0.37,0.25,0.6c0,0.25-0.08,0.46-0.24,0.62l-1.46,1.43c-0.18,0.16-0.38,0.24-0.6,0.24 - c-0.23,0-0.41-0.08-0.56-0.24S19.66,9.4,19.66,9.16z M21.92,14.62c0-0.24,0.08-0.44,0.24-0.62c0.16-0.16,0.35-0.24,0.57-0.24h2.02 - c0.23,0,0.43,0.09,0.6,0.26c0.17,0.17,0.26,0.37,0.26,0.6s-0.09,0.43-0.26,0.6c-0.17,0.17-0.37,0.25-0.6,0.25h-2.02 - c-0.23,0-0.43-0.08-0.58-0.25S21.92,14.86,21.92,14.62z`},child:[]}]})(i)}function ta(i){return U({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M3.89,17.6c0-0.99,0.31-1.88,0.93-2.65s1.41-1.27,2.38-1.49c0.26-1.17,0.85-2.14,1.78-2.88c0.93-0.75,2-1.12,3.22-1.12 - c1.18,0,2.24,0.36,3.16,1.09c0.93,0.73,1.53,1.66,1.8,2.8h0.27c1.18,0,2.18,0.41,3.01,1.24s1.25,1.83,1.25,3 - c0,1.18-0.42,2.18-1.25,3.01s-1.83,1.25-3.01,1.25H8.16c-0.58,0-1.13-0.11-1.65-0.34S5.52,21,5.14,20.62 - c-0.38-0.38-0.68-0.84-0.91-1.36S3.89,18.17,3.89,17.6z M5.34,17.6c0,0.76,0.28,1.42,0.82,1.96s1.21,0.82,1.99,0.82h9.28 - c0.77,0,1.44-0.27,1.99-0.82c0.55-0.55,0.83-1.2,0.83-1.96c0-0.76-0.27-1.42-0.83-1.96c-0.55-0.54-1.21-0.82-1.99-0.82h-1.39 - c-0.1,0-0.15-0.05-0.15-0.15l-0.07-0.49c-0.1-0.94-0.5-1.73-1.19-2.35s-1.51-0.93-2.45-0.93c-0.94,0-1.76,0.31-2.46,0.94 - c-0.7,0.62-1.09,1.41-1.18,2.34l-0.07,0.42c0,0.1-0.05,0.15-0.16,0.15l-0.45,0.07c-0.72,0.06-1.32,0.36-1.81,0.89 - C5.59,16.24,5.34,16.87,5.34,17.6z M14.19,8.88c-0.1,0.09-0.08,0.16,0.07,0.21c0.43,0.19,0.79,0.37,1.08,0.55 - c0.11,0.03,0.19,0.02,0.22-0.03c0.61-0.57,1.31-0.86,2.12-0.86c0.81,0,1.5,0.27,2.1,0.81c0.59,0.54,0.92,1.21,0.99,2l0.09,0.64h1.42 - c0.65,0,1.21,0.23,1.68,0.7c0.47,0.47,0.7,1.02,0.7,1.66c0,0.6-0.21,1.12-0.62,1.57s-0.92,0.7-1.53,0.77c-0.1,0-0.15,0.05-0.15,0.16 - v1.13c0,0.11,0.05,0.16,0.15,0.16c1.01-0.06,1.86-0.46,2.55-1.19s1.04-1.6,1.04-2.6c0-1.06-0.37-1.96-1.12-2.7 - c-0.75-0.75-1.65-1.12-2.7-1.12h-0.15c-0.26-1-0.81-1.82-1.65-2.47c-0.83-0.65-1.77-0.97-2.8-0.97C16.28,7.29,15.11,7.82,14.19,8.88 - z`},child:[]}]})(i)}function sa(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352 146.4c-34.4-48.6-67.5-78.5-90.8-96.6-3.1-2.4-7.3-2.4-10.4-.1-23 17.1-56.1 48.4-90.5 96.5-37.3 52-63 108.4-64.2 170.9 0 1.2-.1 2.5-.1 3.7 0 18.4 3.9 35.9 10.9 52.1 4.1 9.3 9.2 18.1 15.2 26.3 28.5 39 77.8 64.8 133.8 64.8 88.4 0 160.1-64.1 160.1-143.2 0-63.7-27-122.2-64-174.4zm-86 264.3h-.5c-9.9 0-12-14.1-2.6-17.1 45.1-14.2 69.6-38.5 86.4-80.8 3.5-8.9 16.7-6.5 16.8 3.1v1.4c-.1 51.6-44.9 93.4-100.1 93.4z"},child:[]}]})(i)}function j4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 76c48.1 0 93.3 18.7 127.3 52.7S436 207.9 436 256s-18.7 93.3-52.7 127.3S304.1 436 256 436c-48.1 0-93.3-18.7-127.3-52.7S76 304.1 76 256s18.7-93.3 52.7-127.3S207.9 76 256 76m0-28C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48z"},child:[]},{tag:"path",attr:{d:"M363.5 148.5C334.8 119.8 296.6 104 256 104c-40.6 0-78.8 15.8-107.5 44.5C119.8 177.2 104 215.4 104 256s15.8 78.8 44.5 107.5C177.2 392.2 215.4 408 256 408c40.6 0 78.8-15.8 107.5-44.5C392.2 334.8 408 296.6 408 256s-15.8-78.8-44.5-107.5z"},child:[]}]})(i)}function g4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M430.1 347.9c-6.6-6.1-16.3-7.6-24.6-9-11.5-1.9-15.9-4-22.6-10-14.3-12.7-14.3-31.1 0-43.8l30.3-26.9c46.4-41 46.4-108.2 0-149.2-34.2-30.1-80.1-45-127.8-45-55.7 0-113.9 20.3-158.8 60.1-83.5 73.8-83.5 194.7 0 268.5 41.5 36.7 97.5 55 152.9 55.4h1.7c55.4 0 110-17.9 148.8-52.4 14.4-12.7 12-36.6.1-47.7zM120 216c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm40 126c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-161c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm72 219c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm24-208c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"},child:[]}]})(i)}function T4e(i){return U({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M8 12a4 4 0 0 0 4 4m0 -8a4 4 0 0 0 -4 4"},child:[]},{tag:"path",attr:{d:"M3 12h1"},child:[]},{tag:"path",attr:{d:"M12 3v1"},child:[]},{tag:"path",attr:{d:"M12 20v1"},child:[]},{tag:"path",attr:{d:"M5.6 5.6l.7 .7"},child:[]},{tag:"path",attr:{d:"M6.3 17.7l-.7 .7"},child:[]},{tag:"path",attr:{d:"M20 7l-3 5h4l-3 5"},child:[]}]})(i)}function y4e(i){return U({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M224,127.17a96.48,96.48,0,0,1-2.39,22.18A24,24,0,0,1,198.21,168H152a24,24,0,0,0-24,24,24,24,0,0,1-32,22.61C58.73,201.44,32,169.81,32,128a96,96,0,0,1,95-96C179.84,31.47,223.55,74.35,224,127.17Z",opacity:"0.2"},child:[]},{tag:"path",attr:{d:"M200.77,53.89A103.27,103.27,0,0,0,128,24h-1.07A104,104,0,0,0,24,128c0,43,26.58,79.06,69.36,94.17A32,32,0,0,0,136,192a16,16,0,0,1,16-16h46.21a31.81,31.81,0,0,0,31.2-24.88,104.43,104.43,0,0,0,2.59-24A103.28,103.28,0,0,0,200.77,53.89Zm13,93.71A15.89,15.89,0,0,1,198.21,160H152a32,32,0,0,0-32,32,16,16,0,0,1-21.31,15.07C62.49,194.3,40,164,40,128a88,88,0,0,1,87.09-88h.9a88.35,88.35,0,0,1,88,87.25A88.86,88.86,0,0,1,213.81,147.6ZM140,76a12,12,0,1,1-12-12A12,12,0,0,1,140,76ZM96,100A12,12,0,1,1,84,88,12,12,0,0,1,96,100Zm0,56a12,12,0,1,1-12-12A12,12,0,0,1,96,156Zm88-56a12,12,0,1,1-12-12A12,12,0,0,1,184,100Z"},child:[]}]})(i)}function D4e(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"M296,320H216a24,24,0,0,0,0,48h80a24,24,0,0,0,0-48Zm0,32H216a8,8,0,0,1,0-16h80a8,8,0,0,1,0,16Z"}),n.createElement("path",{d:"M68.071,123.492c22.578-13.918,52.2-25.229,85.674-32.71l-3.49-15.615c-35.688,7.977-66.163,19.653-90.58,34.705-17.914,11.043-32.041,23.643-41.99,37.451l12.98,9.354C39.376,144.588,51.961,133.423,68.071,123.492Z"}),n.createElement("path",{d:"M435.533,137.112C409.439,121.027,374,108.967,332.845,102.144,322.474,87,288.213,80,256,80s-66.474,7-76.845,22.144C138,108.967,102.561,121.027,76.467,137.112,47.376,155.045,32,176.792,32,200v96c0,29,24.155,55.7,68.016,75.193C141.813,389.77,197.209,400,256,400s114.187-10.23,155.984-28.807C455.845,351.7,480,325,480,296V200C480,176.792,464.624,155.045,435.533,137.112ZM177.64,151.23C185.676,168.192,221.98,176,256,176s70.324-7.808,78.36-24.77c21.862,4.212,41.832,10.19,58.13,17.44C422.343,181.941,432,195.509,432,200s-9.657,18.059-39.51,31.33C357.224,247.008,307.475,256,256,256s-101.224-8.992-136.49-24.67C89.657,218.059,80,204.491,80,200s9.657-18.059,39.512-31.331C135.808,161.42,155.778,155.442,177.64,151.23Zm14.36-19c15.6,8,40.35,11.773,64,11.773s48.4-3.775,64-11.773V144c0,.687-2.715,5.08-15.618,9.381C291.577,157.649,274.4,160,256,160s-35.577-2.351-48.382-6.619C194.715,149.08,192,144.687,192,144Zm15.618-29.608C220.423,98.351,237.605,96,256,96s35.577,2.351,48.382,6.619C317.285,106.92,320,111.313,320,112s-2.715,5.08-15.618,9.381C291.577,125.649,274.4,128,256,128s-35.577-2.351-48.382-6.619C194.715,117.08,192,112.687,192,112S194.715,106.92,207.618,102.619ZM176,118.937v16.319c-23.589,4.453-45.254,10.9-62.99,18.794C82.779,167.489,64,185.1,64,200s18.779,32.511,49.01,45.95C150.249,262.505,202.367,272,256,272s105.751-9.5,142.99-26.05C429.221,232.511,448,214.9,448,200s-18.779-32.511-49.008-45.95c-17.738-7.89-39.4-14.341-62.992-18.794V118.937C411.852,132.7,464,165.41,464,200c0,21.967-21.328,44.044-58.516,60.572C365.688,278.259,312.6,288,256,288s-109.688-9.741-149.484-27.428C69.328,244.044,48,221.967,48,200,48,165.41,100.148,132.7,176,118.937ZM464,296c0,21.967-21.327,44.044-58.514,60.572C365.689,374.259,312.6,384,256,384s-109.689-9.741-149.486-27.428C69.327,340.044,48,317.967,48,296V239.371c11.522,13.444,29.066,25.621,52.018,35.822C141.814,293.77,197.211,304,256,304s114.186-10.23,155.982-28.807c22.952-10.2,40.5-22.378,52.018-35.822Z"}),n.createElement("path",{d:"M418.482,385.814C374.684,405.28,316.979,416,256,416a488.01,488.01,0,0,1-78.705-6.23l-2.59,15.789A504.064,504.064,0,0,0,256,432c63.169,0,123.181-11.21,168.981-31.565q1.3-.576,2.572-1.16l-6.655-14.55Q419.7,385.274,418.482,385.814Z"}),n.createElement("path",{d:"M436.123,377.062l7.754,14c5.883-3.259,11.492-6.728,16.674-10.31l-9.1-13.161C446.7,370.871,441.546,374.059,436.123,377.062Z"}),n.createElement("rect",{x:"248",y:"192",width:"16",height:"16"}),n.createElement("rect",{x:"280",y:"192",width:"16",height:"16"}),n.createElement("rect",{x:"216",y:"192",width:"16",height:"16"})))}function rge(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M448 490.667h-32v-480C416 4.779 411.221 0 405.333 0H106.667C100.779 0 96 4.779 96 10.667v480H64c-5.888 0-10.667 4.779-10.667 10.667C53.333 507.221 58.112 512 64 512h384c5.888 0 10.667-4.779 10.667-10.667s-4.779-10.666-10.667-10.666zm-53.333 0H117.333V21.333h277.333v469.334z"}),n.createElement("path",{fill:"currentColor",d:"M341.333 277.333c17.643 0 32-14.357 32-32s-14.357-32-32-32-32 14.357-32 32 14.358 32 32 32zm0-42.666c5.888 0 10.667 4.779 10.667 10.667S347.221 256 341.333 256s-10.667-4.779-10.667-10.667 4.779-10.666 10.667-10.666z"}))}function d4e(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M298.667 298.667c17.643 0 32-14.357 32-32s-14.357-32-32-32-32 14.357-32 32c0 17.642 14.357 32 32 32zm0-42.667c5.867 0 10.667 4.779 10.667 10.667s-4.8 10.667-10.667 10.667S288 272.555 288 266.667 292.8 256 298.667 256z"}),n.createElement("path",{fill:"currentColor",d:"M448 490.667h-32v-480C416 4.779 411.221 0 405.333 0H106.667c-.597 0-1.131.256-1.707.341-.555.085-1.088.149-1.621.32-.939.32-1.749.789-2.56 1.344-.32.213-.704.277-1.003.533-.107.085-.149.213-.256.32-.768.704-1.365 1.579-1.899 2.496-.213.341-.512.619-.661.981-.597 1.345-.96 2.774-.96 4.332v480H64c-5.888 0-10.667 4.779-10.667 10.667C53.333 507.221 58.112 512 64 512h42.667c.576 0 1.173-.043 1.749-.149l256-42.667a10.672 10.672 0 0 0 8.917-10.517V53.333c0-5.227-3.776-9.664-8.917-10.517L235.541 21.333h159.125v480c0 5.888 4.779 10.667 10.667 10.667H448c5.888 0 10.667-4.779 10.667-10.667s-4.779-10.666-10.667-10.666zm-96-428.31v387.264l-234.667 39.125V23.253L352 62.357z"}))}function oge(i){return n.createElement("svg",{viewBox:"0 0 452.498 452.498",...i},n.createElement("path",{fill:"currentColor",d:"M301.317 295.155c-51.157-10.946-87.714-56.144-87.723-108.459a112.981 112.981 0 0 1 2.304-23.381 107.145 107.145 0 0 1 8.533-23.723 8.53 8.53 0 0 0-.427-8.533c-21.845-35.413-48.213-74.752-84.48-103.68a151.775 151.775 0 0 0-13.653-9.899 79.82 79.82 0 0 0-13.653-7.083 8.535 8.535 0 0 0-11.691 9.728l1.024 4.523c1.109 4.864 2.219 9.728 3.072 14.763a151.95 151.95 0 0 1 2.475 22.613v5.973a160.68 160.68 0 0 1-51.2 117.077 187.752 187.752 0 0 0-40.619 49.323 140.292 140.292 0 0 0-6.485 112.555C28.65 398.37 74.79 435.008 129.37 442.696h1.28a8.629 8.629 0 0 0 2.56-17.066 67.41 67.41 0 0 1-43.776-39.339 61.78 61.78 0 0 1 2.731-49.493 91.4 91.4 0 0 1 19.029-22.784 98.216 98.216 0 0 0 31.317-71.851v-3.669-5.12a86.72 86.72 0 0 1 17.067 19.029 80.214 80.214 0 0 1 12.885 42.667v.683a80.558 80.558 0 0 1-14.592 46.336 8.534 8.534 0 0 0 2.816 12.288 29.268 29.268 0 0 0 29.525 1.28 50.175 50.175 0 0 0 21.333-27.477 59.734 59.734 0 0 1 12.715 36.011c-.579 27.882-18.718 52.352-45.227 61.013a8.534 8.534 0 0 0 4.266 16.469c70.656-12.715 121.941-69.717 124.757-137.984a8.53 8.53 0 0 0-6.739-8.534zm-72.022 111.104a79.103 79.103 0 0 0 12.117-41.899 84.48 84.48 0 0 0-28.416-60.245 8.535 8.535 0 0 0-14.507 5.376c-.939 11.435-7.68 26.624-16.213 31.317a11.012 11.012 0 0 1-4.181 1.28 97.453 97.453 0 0 0 11.52-46.08v-1.024a97.279 97.279 0 0 0-15.616-52.053 105.562 105.562 0 0 0-39.509-35.925 8.535 8.535 0 0 0-12.117 10.155 78.449 78.449 0 0 1 3.755 22.016v2.731a81.32 81.32 0 0 1-26.027 59.733 105.478 105.478 0 0 0-22.443 27.477 80.723 80.723 0 0 0-8.533 35.499 79.108 79.108 0 0 0 13.397 43.947 131.416 131.416 0 0 1-57.941-67.669 123.223 123.223 0 0 1 5.717-98.901 170.67 170.67 0 0 1 37.205-44.629 177.58 177.58 0 0 0 56.405-129.451v-6.571a167.053 167.053 0 0 0-2.731-24.917V34.89a100.687 100.687 0 0 1 7.509 5.717c32.939 26.197 57.685 62.72 78.251 95.488a123.351 123.351 0 0 0-7.509 23.211 129.741 129.741 0 0 0-2.901 27.392c-.012 57.557 38.394 108.044 93.867 123.392a129.706 129.706 0 0 1-61.099 96.169z"}),n.createElement("path",{fill:"currentColor",d:"M324.527 58.697c-49.399.039-94.366 28.501-115.541 73.131a123.96 123.96 0 0 0-9.557 27.477 129.741 129.741 0 0 0-2.901 27.392 127.147 127.147 0 0 0 48.896 100.608 128.002 128.002 0 0 0 79.104 27.392 126.807 126.807 0 0 0 79.104-27.392 128.001 128.001 0 0 0 48.867-100.579c.015-70.693-57.279-128.013-127.972-128.029zm0 238.933a110.91 110.91 0 0 1-23.211-2.475c-51.157-10.946-87.714-56.144-87.723-108.459a112.938 112.938 0 0 1 2.219-23.723 107.639 107.639 0 0 1 8.533-23.808c18.353-38.703 57.347-63.382 100.181-63.403 61.267 0 110.933 49.667 110.933 110.933S385.794 297.63 324.527 297.63z"}),n.createElement("path",{fill:"currentColor",d:"M354.565 106.91a16.212 16.212 0 0 0-11.947-5.205h-36.267a16.216 16.216 0 0 0-11.947 5.205 15.19 15.19 0 0 0-4.011 11.52l6.4 79.616c.837 8.16 7.755 14.338 15.957 14.251h23.552c8.086.105 14.958-5.885 15.957-13.909l6.4-79.957a15.187 15.187 0 0 0-4.094-11.521zm-19.115 88.32h-21.675l-6.315-76.8h34.133l-6.143 76.8zM328.965 229.363h-8.96c-11.621.047-21.031 9.456-21.077 21.077v9.045c.047 11.621 9.456 21.031 21.077 21.077h9.045c11.654-.047 21.077-9.508 21.077-21.163v-8.96c-.047-11.653-9.508-21.076-21.162-21.076zm4.096 30.038a4.097 4.097 0 0 1-4.011 4.011h-8.96a4.097 4.097 0 0 1-4.011-4.011v-8.96a4.097 4.097 0 0 1 4.011-4.011h8.96a4.097 4.097 0 0 1 4.011 4.011v8.96z"}))}function ia(i){return n.createElement("svg",{viewBox:"0 0 512.006 512.006",...i},n.createElement("path",{d:"M502.379 211.249c0 74.656-60.52 135.176-135.176 135.176-6.469.01-12.919-.473-19.311-1.448-66.487-9.598-115.837-66.555-115.866-133.728-.019-67.212 49.349-124.227 115.866-133.825a142.128 142.128 0 0 1 19.311-1.352c74.656 0 135.176 60.521 135.176 135.177z",fill:"#c52828"}),n.createElement("path",{d:"M463.757 211.249c-.029 67.173-49.378 124.131-115.865 133.728-66.487-9.598-115.837-66.555-115.866-133.728-.019-67.212 49.349-124.227 115.866-133.825 66.516 9.598 115.875 66.613 115.865 133.825z",fill:"#f44335"}),n.createElement("g",{fill:"#fdd834"},n.createElement("path",{d:"M380.527 230.56h-26.649a8.208 8.208 0 0 1-8.4-7.242l-7.242-90.472c-.212-4.47 3.235-8.275 7.705-8.497.232-.01.463-.01.695 0h41.036a8.105 8.105 0 0 1 8.4 7.802c.01.232.01.463 0 .695l-7.242 90.472c-.501 4.181-4.093 7.319-8.303 7.242zM362.085 269.181h10.235c7.84 0 14.194 6.353 14.194 14.194v10.235c0 7.84-6.353 14.194-14.194 14.194h-10.235c-7.84 0-14.194-6.353-14.194-14.194v-10.235c.001-7.84 6.354-14.194 14.194-14.194z"})),n.createElement("path",{d:"M308.015 332.714a132.057 132.057 0 0 1-24.332-15.256 138.367 138.367 0 0 1-25.587-26.456 134.123 134.123 0 0 1-26.07-79.754 136.453 136.453 0 0 1 3.09-28.966 129.801 129.801 0 0 1 9.655-28.966c-24.428-39.201-50.691-78.113-85.547-108.334-2.607-2.221-5.214-4.442-7.917-6.566a161.051 161.051 0 0 0-14.387-10.621 80.965 80.965 0 0 0-13.807-7.145c1.641 7.338 3.476 14.773 4.731 22.208a180.355 180.355 0 0 1 2.993 26.939v7.145a192.012 192.012 0 0 1-60.829 139.521 202.647 202.647 0 0 0-43.836 52.719 149.063 149.063 0 0 0-6.566 120.017 152.006 152.006 0 0 0 22.208 40.167 164.926 164.926 0 0 0 106.21 61.891 86.874 86.874 0 0 1-44.801-32.249 51.315 51.315 0 0 1-3.669-5.6 77.46 77.46 0 0 1-6.469-13.325 79.464 79.464 0 0 1 3.766-63.726 111.914 111.914 0 0 1 23.463-28.387 101.983 101.983 0 0 0 32.442-74.25v-3.862a97.875 97.875 0 0 0-4.731-27.132 112.539 112.539 0 0 1 10.911 6.566 108.053 108.053 0 0 1 30.222 30.801 100.963 100.963 0 0 1 15.835 46.443v8.4a100.92 100.92 0 0 1-18.249 57.933c22.98 13.035 38.622-8.593 44.994-28.966a60.067 60.067 0 0 0 2.51-12.842 88.458 88.458 0 0 1 28.966 61.312v5.214c-2.704 33.678-25.346 62.451-57.45 72.995 73.353-11.789 128.717-72.889 133.245-147.053a131.977 131.977 0 0 1-30.994-10.815z",fill:"#f57c00"}),n.createElement("path",{d:"M263.117 417.489v-5.214a88.462 88.462 0 0 0-28.966-61.312 60.129 60.129 0 0 1-2.51 12.842c-5.986 20.47-22.014 42.098-44.994 28.966a100.923 100.923 0 0 0 18.249-57.933v-.966-7.338a100.971 100.971 0 0 0-15.835-46.443 108.027 108.027 0 0 0-30.222-30.801 108.949 108.949 0 0 0-39.877-35.532 97.838 97.838 0 0 1 4.731 27.132v3.862a101.988 101.988 0 0 1-32.442 74.25 111.924 111.924 0 0 0-23.366 28.387 79.491 79.491 0 0 0-3.573 63.726 83.948 83.948 0 0 0 35.436 42.291 51.315 51.315 0 0 0 3.669 5.6 86.886 86.886 0 0 0 44.415 32.249 164.927 164.927 0 0 1-106.21-61.892 152.082 152.082 0 0 1-22.014-40.167 149.055 149.055 0 0 1 6.564-120.015 202.714 202.714 0 0 1 44.029-53.202A192.012 192.012 0 0 0 131.03 76.458v-7.145a180.486 180.486 0 0 0-2.993-26.939c-1.255-7.435-3.09-14.869-4.731-22.208a80.965 80.965 0 0 1 13.807 7.145 159.446 159.446 0 0 1 14.773 10.718c2.704 2.124 5.311 4.345 7.917 6.566 34.856 30.222 61.119 69.133 85.547 108.334a129.75 129.75 0 0 0-9.655 28.966 136.634 136.634 0 0 0-3.669 29.353 134.116 134.116 0 0 0 26.07 79.754 138.396 138.396 0 0 0 25.587 26.456 132.164 132.164 0 0 0 24.332 15.256 152.203 152.203 0 0 1-44.898 84.775z",fill:"#ff9801"}),n.createElement("path",{d:"M147.831 500.912h-1.448c-61.756-8.7-113.963-50.15-136.432-108.334a158.725 158.725 0 0 1 7.338-127.355 212.528 212.528 0 0 1 45.96-55.809 181.787 181.787 0 0 0 57.933-132.473v-6.759a171.298 171.298 0 0 0-2.8-25.587c-.966-5.697-2.221-11.2-3.476-16.704l-1.159-5.117c-1.178-5.204 2.076-10.37 7.28-11.548a9.663 9.663 0 0 1 5.948.541 89.473 89.473 0 0 1 15.449 8.014 172.47 172.47 0 0 1 15.449 11.2c41.036 32.732 70.871 77.244 95.589 117.314a9.673 9.673 0 0 1 .483 9.655 121.056 121.056 0 0 0-9.655 26.842 128.158 128.158 0 0 0-2.607 26.456c.01 59.198 41.374 110.333 99.258 122.721a9.655 9.655 0 0 1 7.628 9.655c-3.186 77.244-61.216 141.742-141.163 156.129-5.253.927-10.254-2.588-11.181-7.84a9.65 9.65 0 0 1 6.353-10.795c29.99-9.8 50.517-37.492 51.174-69.037a67.618 67.618 0 0 0-14.387-40.746 56.78 56.78 0 0 1-24.139 31.091 33.122 33.122 0 0 1-33.408-1.448c-4.644-2.626-6.276-8.516-3.659-13.16.145-.261.299-.502.473-.743a91.187 91.187 0 0 0 16.511-52.429v-.772a90.743 90.743 0 0 0-14.58-48.277 98.107 98.107 0 0 0-19.311-21.532v9.945a111.13 111.13 0 0 1-35.436 81.299 103.445 103.445 0 0 0-21.532 25.78 69.873 69.873 0 0 0-3.09 56.002 76.304 76.304 0 0 0 49.533 44.512c5.33.801 9.009 5.774 8.207 11.104-.801 5.328-5.774 8.997-11.103 8.205zM137.113 39.478v1.738a188.136 188.136 0 0 1 3.09 28.194v7.435A200.926 200.926 0 0 1 76.38 223.318a192.998 192.998 0 0 0-42.098 50.498 139.414 139.414 0 0 0-6.469 111.907 148.682 148.682 0 0 0 65.561 76.568 89.522 89.522 0 0 1-15.159-49.726 91.25 91.25 0 0 1 9.655-40.167 119.46 119.46 0 0 1 25.394-31.091 92.026 92.026 0 0 0 29.449-67.588v-3.09a88.799 88.799 0 0 0-4.248-24.911 9.653 9.653 0 0 1 6.237-12.147 9.638 9.638 0 0 1 7.473.657 119.392 119.392 0 0 1 44.705 40.649 110.062 110.062 0 0 1 17.669 58.898v1.159a110.343 110.343 0 0 1-13.035 52.139 12.555 12.555 0 0 0 4.731-1.448c9.655-5.31 17.283-22.497 18.345-35.436.434-5.31 5.088-9.269 10.409-8.844a9.61 9.61 0 0 1 6.006 2.761 95.586 95.586 0 0 1 32.153 68.168 89.528 89.528 0 0 1-13.711 47.408 146.774 146.774 0 0 0 69.133-108.817c-62.77-17.37-106.22-74.492-106.21-139.618a146.655 146.655 0 0 1 3.283-30.994 139.876 139.876 0 0 1 8.497-26.263c-23.27-37.077-51.27-78.402-88.541-108.045a113.049 113.049 0 0 0-8.496-6.467z"}),n.createElement("path",{d:"M367.203 356.081a144.841 144.841 0 0 1-89.506-30.994 143.882 143.882 0 0 1-55.326-113.838 146.655 146.655 0 0 1 3.283-30.994 140.652 140.652 0 0 1 10.814-31.091c23.965-50.498 74.839-82.699 130.735-82.747 79.986.019 144.813 64.875 144.803 144.861a144.848 144.848 0 0 1-55.297 113.809 143.543 143.543 0 0 1-89.506 30.994zm0-270.353c-48.47.019-92.586 27.943-113.355 71.74a121.83 121.83 0 0 0-9.655 26.939 127.805 127.805 0 0 0-2.51 26.842c.01 59.198 41.374 110.333 99.258 122.721a125.763 125.763 0 0 0 26.263 2.8c69.326 0 125.521-56.195 125.521-125.521S436.519 85.728 367.203 85.728z"}),n.createElement("path",{d:"M380.527 240.215h-26.649c-9.279.097-17.109-6.894-18.056-16.125l-7.242-90.085a17.201 17.201 0 0 1 4.538-13.035 18.38 18.38 0 0 1 13.518-5.89h41.036a18.375 18.375 0 0 1 13.518 5.89 17.204 17.204 0 0 1 4.635 13.035l-7.242 90.472c-1.139 9.076-8.912 15.854-18.056 15.738zm-25.49-19.311h24.525l6.952-86.899h-38.622l7.145 86.899zM372.32 317.459h-10.235c-13.151-.048-23.801-10.698-23.849-23.849v-10.235c.048-13.151 10.698-23.801 23.849-23.849h10.138c13.189 0 23.888 10.66 23.946 23.849v10.138c0 13.18-10.669 23.888-23.849 23.946zm-10.138-38.622a4.635 4.635 0 0 0-4.538 4.538v10.138a4.635 4.635 0 0 0 4.538 4.538h10.138a4.635 4.635 0 0 0 4.538-4.538v-10.138a4.635 4.635 0 0 0-4.538-4.538h-10.138z"}))}function Mge(i){return n.createElement("svg",{viewBox:"0 0 512.224 512.224",...i},n.createElement("path",{fill:"currentColor",d:"M321.71 427.573c-42.239-16.782-69.968-57.632-69.973-103.083.012-7.976.87-15.928 2.56-23.723a107.066 107.066 0 0 1 10.752-28.757 8.534 8.534 0 0 0-2.304-10.923 98.766 98.766 0 0 1-9.216-7.851 92.567 92.567 0 0 1-20.053-28.843 89.437 89.437 0 0 1-7.339-35.413 87.726 87.726 0 0 1 10.069-40.107c2.219-4.096 4.437-8.107 6.997-12.117a8.536 8.536 0 0 0 0-9.387l-17.835-28.416-17.067-27.392a24.148 24.148 0 0 0-7.906-7.906c-11.358-6.992-26.233-3.452-33.225 7.906l-50.176 80.64c-11.264 18.091-22.869 36.779-34.901 54.784l-3.413 5.035A698.15 698.15 0 0 0 39 275.935a158.81 158.81 0 0 0-17.664 72.96 160.509 160.509 0 0 0 13.056 63.659 165.287 165.287 0 0 0 88.661 86.784 167.511 167.511 0 0 0 64.683 12.885 167.509 167.509 0 0 0 64.683-12.8 164.36 164.36 0 0 0 52.907-34.901 162.072 162.072 0 0 0 20.309-24.149 8.532 8.532 0 0 0-3.925-12.8zm-28.331 24.917a147.644 147.644 0 0 1-47.445 31.147 152.92 152.92 0 0 1-116.395 0 148.222 148.222 0 0 1-79.445-77.824 143.623 143.623 0 0 1-11.691-56.917 141.656 141.656 0 0 1 15.701-65.195 688.246 688.246 0 0 1 38.741-62.293l3.413-5.035c12.203-18.176 23.893-37.035 35.243-55.211l50.176-80.725a6.995 6.995 0 0 1 6.059-3.413 7.082 7.082 0 0 1 6.144 3.84l17.067 27.392 14.933 24.064c-1.621 2.56-3.243 5.461-4.864 8.533a104.964 104.964 0 0 0-11.776 48.299 106.408 106.408 0 0 0 8.533 42.155 109.907 109.907 0 0 0 23.808 34.133 136.402 136.402 0 0 0 5.205 4.693 124.263 124.263 0 0 0-9.216 26.965 129.873 129.873 0 0 0-2.901 27.392c.04 48.518 27.402 92.877 70.741 114.688a143.263 143.263 0 0 1-12.031 13.312z"}),n.createElement("path",{fill:"currentColor",d:"M100.014 442.592c-.058 0-.114-.008-.172-.009-.057.001-.113.009-.17.009h.342z"}),n.createElement("path",{fill:"currentColor",d:"M105.646 428a112.632 112.632 0 0 1-24.576-35.755 109.311 109.311 0 0 1-8.533-43.349 107.531 107.531 0 0 1 11.861-49.408 8.533 8.533 0 0 0-3.889-12.306 8.533 8.533 0 0 0-11.216 4.455 124.582 124.582 0 0 0-13.824 57.259 126.296 126.296 0 0 0 10.24 50.091 129.715 129.715 0 0 0 28.331 41.131 8.535 8.535 0 0 0 5.802 2.466 8.527 8.527 0 0 0 5.853-2.515 8.534 8.534 0 0 0-.049-12.069zM419.161 140.597a456.86 456.86 0 0 0-26.453-42.155l-1.707-2.475C381.443 82.4 372.91 68.149 364.377 54.41L335.79 8.757a18.69 18.69 0 0 0-5.896-5.896c-8.742-5.486-20.277-2.846-25.763 5.896L275.63 54.41c-8.533 14.08-17.408 27.989-26.453 41.899-6.997 10.155-14.08 20.565-20.395 31.232-2.56 4.096-5.12 8.448-7.68 13.312a104.964 104.964 0 0 0-11.776 48.299 106.408 106.408 0 0 0 8.533 42.155 109.918 109.918 0 0 0 23.808 34.133 115.197 115.197 0 0 0 10.752 9.216 8.533 8.533 0 0 0 5.12 1.707l1.877-.256a8.532 8.532 0 0 0 5.717-4.267 110.25 110.25 0 0 1 42.155-43.435 112.64 112.64 0 0 1 106.581-2.389 8.533 8.533 0 0 0 12.117-4.95 105.041 105.041 0 0 0-6.825-80.469zm-7.083 65.707a129.795 129.795 0 0 0-113.408 7.253 127.305 127.305 0 0 0-43.349 41.387l-1.792-1.707a92.567 92.567 0 0 1-20.053-28.843 89.437 89.437 0 0 1-7.339-35.413 87.734 87.734 0 0 1 9.813-40.363c2.219-3.84 4.523-8.192 7.168-12.373 6.144-10.411 13.141-20.651 20.053-30.72 9.387-13.824 18.432-28.16 26.965-42.069l28.501-45.397a1.536 1.536 0 0 1 1.365-.768 1.535 1.535 0 0 1 1.365.768l27.904 45.312c8.619 13.909 17.579 28.245 26.965 42.069l1.707 2.475a443.768 443.768 0 0 1 25.6 40.533 87.883 87.883 0 0 1 8.535 57.856z"}),n.createElement("path",{fill:"currentColor",d:"M277.337 228.746a58.176 58.176 0 0 1-12.629-18.091 54.768 54.768 0 0 1-4.437-21.675 53.425 53.425 0 0 1 5.973-24.576c1.707-3.157 3.499-6.4 5.632-9.728l.512-.853a8.533 8.533 0 0 0-2.894-12.242 8.533 8.533 0 0 0-11.613 3.282l-.512.768c-2.219 3.584-4.352 7.253-6.229 10.837a70.656 70.656 0 0 0-7.936 32.512 71.854 71.854 0 0 0 5.888 28.501 75.615 75.615 0 0 0 16.299 23.467 8.531 8.531 0 0 0 5.973 2.389v.085a8.533 8.533 0 0 0 5.973-14.676z"}),n.createElement("path",{fill:"currentColor",d:"M421.721 210.826a129.961 129.961 0 0 0-123.051 2.731 127.233 127.233 0 0 0-48.64 50.176 124.24 124.24 0 0 0-12.459 33.365 129.873 129.873 0 0 0-2.901 27.392c0 70.692 57.308 128 128 128 47.899.071 91.829-26.606 113.855-69.14 32.508-62.775 7.971-140.016-54.804-172.524zM362.67 435.424c-61.267 0-110.933-49.667-110.933-110.933.006-8.004.864-15.985 2.56-23.808a107.209 107.209 0 0 1 10.752-28.843c19.355-35.894 56.842-58.275 97.621-58.283 61.267 0 110.933 49.666 110.933 110.933S423.937 435.424 362.67 435.424z"}),n.createElement("path",{fill:"currentColor",d:"M392.707 244.704a16.296 16.296 0 0 0-11.947-5.205h-36.267a16.296 16.296 0 0 0-11.947 5.205 15.274 15.274 0 0 0-4.011 11.52l6.4 79.531c.796 8.194 7.725 14.419 15.957 14.336h23.552c8.086.105 14.958-5.885 15.957-13.909l6.4-79.957a15.26 15.26 0 0 0-4.094-11.521zm-19.114 88.32h-21.675l-6.315-76.8h34.133l-6.143 76.8zM367.107 367.157h-8.96c-11.621.047-21.031 9.456-21.077 21.077v9.045c.047 11.621 9.456 21.031 21.077 21.077h9.045c11.654-.047 21.077-9.508 21.077-21.163v-8.96c-.046-11.653-9.507-21.076-21.162-21.076zm4.096 30.037a4.097 4.097 0 0 1-4.011 4.011h-8.96a4.097 4.097 0 0 1-4.011-4.011v-8.96a4.097 4.097 0 0 1 4.011-4.011h8.96a4.097 4.097 0 0 1 4.011 4.011v8.96z"}))}function ra(i){return n.createElement("svg",{viewBox:"0 0 512.002 512.002",...i},n.createElement("path",{d:"M481.929 324.35c0 65.951-53.464 119.415-119.415 119.415a111.938 111.938 0 0 1-17.059-1.279c-58.735-8.478-102.33-58.795-102.356-118.135-.017-59.375 43.595-109.742 102.356-118.221a125.333 125.333 0 0 1 17.059-1.194c65.951-.001 119.415 53.462 119.415 119.414z",fill:"#c52828"}),n.createElement("path",{d:"M447.81 324.35c-.026 59.341-43.621 109.657-102.356 118.135-58.735-8.478-102.33-58.795-102.356-118.135-.017-59.375 43.595-109.742 102.356-118.221 58.77 8.487 102.373 58.846 102.356 118.221z",fill:"#f44335"}),n.createElement("g",{fill:"#fdd834"},n.createElement("path",{d:"M374.285 341.409h-23.542a7.251 7.251 0 0 1-7.421-6.397l-6.397-79.923a7.174 7.174 0 0 1 6.807-7.506c.205-.009.409-.009.614 0h36.251a7.16 7.16 0 0 1 7.421 6.892c.009.205.009.409 0 .614l-6.397 79.923a7.249 7.249 0 0 1-7.336 6.397zM357.993 375.527h9.041c6.926 0 12.539 5.612 12.539 12.539v9.041c0 6.926-5.612 12.539-12.539 12.539h-9.041c-6.926 0-12.539-5.612-12.539-12.539v-9.041c0-6.926 5.621-12.539 12.539-12.539z"})),n.createElement("path",{d:"M318.415 435.235a153.553 153.553 0 0 1-19.192 22.859 157.081 157.081 0 0 1-50.154 33.095 159.575 159.575 0 0 1-61.413 12.283 149.268 149.268 0 0 1-20.556-1.365 155.17 155.17 0 0 1-40.857-10.833 156.698 156.698 0 0 1-84.017-82.311 152.753 152.753 0 0 1-12.368-60.219 150.27 150.27 0 0 1 17.059-69.005 752.602 752.602 0 0 1 42.648-68.237c15.268-22.774 29.513-46.145 44.013-69.346l34.119-54.504 7.335-11.771c4.504-7.353 14.117-9.656 21.469-5.143a15.525 15.525 0 0 1 5.143 5.143l34.716 55.869c-2.644 4.18-5.032 8.53-7.335 12.709a96.424 96.424 0 0 0-11.515 44.439 98.026 98.026 0 0 0 8.018 38.725 100.313 100.313 0 0 0 21.921 31.56 106.83 106.83 0 0 0 9.98 8.53 115.344 115.344 0 0 0-11.6 31.048 120.546 120.546 0 0 0-2.729 25.589c.041 48.9 29.878 92.828 75.315 110.885z",fill:"#0377bc"}),n.createElement("path",{d:"M277.217 435.235a153.553 153.553 0 0 1-19.192 22.859 157.081 157.081 0 0 1-50.154 33.095 158.847 158.847 0 0 1-40.772 10.833 155.17 155.17 0 0 1-40.857-10.833 156.698 156.698 0 0 1-84.017-82.311 152.657 152.657 0 0 1-12.368-60.134 150.27 150.27 0 0 1 17.059-69.005 752.602 752.602 0 0 1 42.648-68.237c15.268-22.774 29.513-46.145 44.013-69.346l34.119-54.504c9.212 14.671 18.339 29.427 27.465 44.098-2.644 4.18-5.032 8.53-7.335 12.709a96.502 96.502 0 0 0-10.833 44.354 98.026 98.026 0 0 0 8.018 38.725 100.313 100.313 0 0 0 21.921 31.56 106.83 106.83 0 0 0 9.98 8.53 115.323 115.323 0 0 0-12.283 31.133 120.546 120.546 0 0 0-2.729 25.589c.043 48.9 29.88 92.828 75.317 110.885z",fill:"#02a9f4"}),n.createElement("path",{d:"M411.388 144.545a477.911 477.911 0 0 0-27.636-43.842c-9.894-14.586-19.192-29.598-28.489-44.525L328.395 13.53c-3.037-4.708-9.323-6.065-14.031-3.028a10.259 10.259 0 0 0-3.028 3.028l-12.794 20.215-14.074 22.433c-9.297 14.927-18.595 29.939-28.489 44.525-6.994 10.236-13.989 20.471-20.301 31.133-2.644 4.18-5.032 8.53-7.335 12.709a96.502 96.502 0 0 0-10.833 44.354 98.758 98.758 0 0 0 29.939 70.284 106.83 106.83 0 0 0 9.98 8.53 119.423 119.423 0 0 1 84.017-60.902 114.9 114.9 0 0 1 21.068-1.877c5.186.009 10.372.324 15.524.938a119.369 119.369 0 0 1 39.578 12.539 96.462 96.462 0 0 0-6.228-73.866z",fill:"#0377bc"}),n.createElement("path",{d:"M379.573 188.899a93.046 93.046 0 0 1-1.535 17.059 131.537 131.537 0 0 0-15.524-1.024 114.797 114.797 0 0 0-21.068 1.877 119.425 119.425 0 0 0-84.017 60.902 106.96 106.96 0 0 1-9.98-8.53c-31.099-29.743-38.878-76.417-19.106-114.638 2.303-4.35 4.691-8.53 7.335-12.709 6.312-10.662 13.306-20.898 20.301-31.133 9.894-14.586 19.192-29.598 28.489-44.525l14.074-22.433 14.074 22.433c9.297 14.927 18.595 29.939 28.489 44.525a477.911 477.911 0 0 1 27.636 43.842 96.401 96.401 0 0 1 10.832 44.354z",fill:"#02a9f4"}),n.createElement("path",{d:"M187.656 512.002a167.398 167.398 0 0 1-64.655-12.88 165.226 165.226 0 0 1-88.623-86.746 160.466 160.466 0 0 1-13.05-63.631 158.81 158.81 0 0 1 17.656-72.928 698.388 698.388 0 0 1 39.663-63.887l3.412-5.032c12.027-17.998 23.627-36.677 34.886-54.76L167.1 71.531c6.986-11.353 21.861-14.893 33.214-7.898a24.1 24.1 0 0 1 7.898 7.898l17.059 27.38 17.827 28.404a8.521 8.521 0 0 1 0 9.383c-2.559 4.009-4.777 8.018-6.994 12.112a87.69 87.69 0 0 0-10.065 40.089 89.456 89.456 0 0 0 7.335 35.398 92.438 92.438 0 0 0 20.045 28.83 99.608 99.608 0 0 0 9.212 7.847 8.534 8.534 0 0 1 2.303 10.918 106.955 106.955 0 0 0-10.747 28.745 112.483 112.483 0 0 0-2.559 23.712c.009 45.429 27.721 86.26 69.943 103.038 4.393 1.706 6.559 6.653 4.853 11.046a8.584 8.584 0 0 1-.93 1.749 162.407 162.407 0 0 1-20.301 24.139 164.29 164.29 0 0 1-52.884 34.886 167.489 167.489 0 0 1-64.653 12.795zm0-435.012a6.99 6.99 0 0 0-6.056 3.412l-50.154 80.69c-11.344 18.168-23.03 37.019-35.227 55.187l-3.412 5.032a687.543 687.543 0 0 0-38.725 62.266 141.613 141.613 0 0 0-15.695 65.166 143.56 143.56 0 0 0 11.686 56.893 148.16 148.16 0 0 0 79.411 77.79 152.855 152.855 0 0 0 116.344 0 147.616 147.616 0 0 0 47.425-31.133 143.446 143.446 0 0 0 12.027-13.306c-43.322-21.802-70.668-66.139-70.711-114.638a129.576 129.576 0 0 1 2.9-27.38 124.357 124.357 0 0 1 9.212-26.954 136.293 136.293 0 0 1-5.203-4.691 109.87 109.87 0 0 1-23.798-34.119 106.411 106.411 0 0 1-8.53-42.136c0-16.803 4.035-33.359 11.771-48.278 1.621-3.071 3.241-5.971 4.862-8.53l-14.927-24.054-17.059-27.38a7.087 7.087 0 0 0-6.141-3.837z"}),n.createElement("path",{d:"M99.971 442.4A8.521 8.521 0 0 1 94 439.926a129.631 129.631 0 0 1-28.318-41.113 126.28 126.28 0 0 1-10.236-50.069 124.503 124.503 0 0 1 13.818-57.234c1.868-4.325 6.883-6.32 11.208-4.452s6.32 6.883 4.452 11.208c-.162.375-.35.742-.563 1.092a107.494 107.494 0 0 0-11.856 49.387 109.211 109.211 0 0 0 8.53 43.331 112.626 112.626 0 0 0 24.565 35.739c3.344 3.318 3.369 8.717.051 12.061a8.549 8.549 0 0 1-6.022 2.525l.342-.001zM257.428 276.242a8.526 8.526 0 0 1-5.118-1.706 115.222 115.222 0 0 1-10.747-9.212 109.87 109.87 0 0 1-23.798-34.119 106.411 106.411 0 0 1-8.53-42.136c0-16.803 4.035-33.359 11.771-48.278 2.559-4.862 5.118-9.212 7.677-13.306 6.312-10.662 13.392-21.068 20.386-31.218 9.041-13.903 17.912-27.807 26.442-41.881L304 8.753c5.485-8.734 17.017-11.379 25.751-5.894a18.698 18.698 0 0 1 5.894 5.894l28.574 45.634c8.53 13.733 17.059 27.977 26.612 41.539l1.706 2.474a457.473 457.473 0 0 1 26.442 42.136 104.968 104.968 0 0 1 6.824 80.434c-1.433 4.487-6.235 6.969-10.722 5.536a8.282 8.282 0 0 1-1.39-.589 112.612 112.612 0 0 0-106.535 2.388 110.28 110.28 0 0 0-42.136 43.416 8.52 8.52 0 0 1-5.715 4.265l-1.877.256zm62.437-258.959a1.541 1.541 0 0 0-1.365.768l-28.489 45.378c-8.53 13.903-17.571 28.233-26.954 42.051-6.909 10.065-13.903 20.301-20.045 30.707-2.644 4.18-4.947 8.53-7.165 12.368a87.722 87.722 0 0 0-9.809 40.345 89.456 89.456 0 0 0 7.335 35.398 92.438 92.438 0 0 0 20.045 28.83l1.791 1.706a127.216 127.216 0 0 1 43.331-41.369 129.73 129.73 0 0 1 113.359-7.25 87.904 87.904 0 0 0-8.53-57.831 444.102 444.102 0 0 0-25.589-40.516l-1.706-2.474c-9.383-13.818-18.339-28.148-26.954-42.051L321.23 18.05a1.532 1.532 0 0 0-1.365-.767z"}),n.createElement("path",{d:"M271.246 243.233a8.519 8.519 0 0 1-5.971-2.388 75.502 75.502 0 0 1-16.292-23.456 71.923 71.923 0 0 1-5.885-28.489 70.537 70.537 0 0 1 7.933-32.498c1.877-3.582 4.009-7.25 6.227-10.833l.512-.768a8.538 8.538 0 0 1 11.609-3.284 8.538 8.538 0 0 1 3.284 11.609 6.997 6.997 0 0 1-.392.631l-.512.853c-2.132 3.327-3.924 6.568-5.63 9.724a53.307 53.307 0 0 0-5.971 24.565 54.816 54.816 0 0 0 4.435 21.665 58.198 58.198 0 0 0 12.624 18.083c3.395 3.267 3.489 8.666.222 12.061a8.518 8.518 0 0 1-6.193 2.61v-.085z"}),n.createElement("path",{d:"M362.514 452.294c-70.66 0-127.945-57.285-127.945-127.945a129.576 129.576 0 0 1 2.9-27.38 123.98 123.98 0 0 1 12.453-33.351 127.15 127.15 0 0 1 48.619-50.154c37.94-21.495 84.136-22.518 122.997-2.729 62.744 32.489 87.275 109.7 54.777 172.452-22.005 42.512-65.916 69.184-113.801 69.107zm0-238.83c-40.763.009-78.234 22.382-97.579 58.257a107.238 107.238 0 0 0-10.747 28.83 112.818 112.818 0 0 0-2.559 23.798c0 61.243 49.643 110.885 110.885 110.885s110.885-49.642 110.885-110.885-49.643-110.885-110.885-110.885z"}),n.createElement("path",{d:"M374.285 349.939h-23.542c-8.231.085-15.157-6.141-15.95-14.33l-6.397-79.496a15.26 15.26 0 0 1 4.009-11.515 16.312 16.312 0 0 1 11.942-5.203h36.251a16.31 16.31 0 0 1 11.941 5.203 15.27 15.27 0 0 1 4.094 11.515l-6.397 79.923c-.999 8.026-7.865 14.013-15.951 13.903zm-22.519-17.06h21.665l6.141-76.767h-34.119l6.313 76.767zM367.034 418.176h-9.041c-11.617-.043-21.026-9.451-21.068-21.068v-9.041c.043-11.617 9.451-21.026 21.068-21.068h8.956c11.651 0 21.102 9.417 21.153 21.068v8.956c.001 11.651-9.416 21.11-21.068 21.153zm-8.956-34.119a4.095 4.095 0 0 0-4.009 4.009v8.956a4.095 4.095 0 0 0 4.009 4.009h8.956a4.095 4.095 0 0 0 4.009-4.009v-8.956a4.095 4.095 0 0 0-4.009-4.009h-8.956z"}))}function z4e(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M462,226c-5.52,0-10,4.48-10,10s4.48,10,10,10c5.52,0,10-4.48,10-10S467.52,226,462,226z"}),n.createElement("path",{fill:"currentColor",d:"M50,226c-5.52,0-10,4.48-10,10s4.48,10,10,10s10-4.48,10-10S55.52,226,50,226z"}),n.createElement("path",{fill:"currentColor",d:`M502,126h-0.027C508.265,117.637,512,107.248,512,96c0-27.57-22.43-50-50-50s-50,22.43-50,50 - c0,11.248,3.735,21.637,10.027,30H422c-5.522,0-10,4.478-10,10v50.03c-7.399,0.025-17.158,0.065-23,0.113V166.63 - c0-5.522-4.478-10-10-10c-5.522,0-10,4.478-10,10v12.435c-0.931-0.964-1.899-2.045-2.923-3.258 - c-10.745-12.754-24.515-23.761-40.077-32.106V121.83c0-5.522-4.478-10-10-10c-5.522,0-10,4.478-10,10v12.983 - c-12.92-4.643-26.438-7.5-40-8.448V96c0-5.522-4.478-10-10-10c-5.522,0-10,4.478-10,10v30.365 - c-13.565,0.948-27.084,3.807-40,8.452V120.17c0-5.522-4.477-10-10-10s-10,4.478-10,10v23.542 - c-15.764,8.457-29.695,19.652-40.55,32.652c-0.758,0.908-1.587,1.755-2.45,2.566v-12.3c0-5.522-4.477-10-10-10s-10,4.478-10,10 - v20.385c-4.189,0.067-14.913,0.05-23,0.024V136c0-5.522-4.477-10-10-10h-0.027C96.265,117.637,100,107.248,100,96 - c0-27.57-22.43-50-50-50S0,68.43,0,96c0,11.248,3.735,21.637,10.027,30H10c-5.523,0-10,4.478-10,10v320c0,5.522,4.477,10,10,10h80 - c5.523,0,10-4.478,10-10v-11h312v11c0,5.522,4.478,10,10,10h80c5.522,0,10-4.478,10-10V136C512,130.478,507.522,126,502,126z - M80,446H20V146h20v50c0,5.522,4.477,10,10,10s10-4.478,10-10v-50h20V446z M50,126c-16.542,0-30-13.458-30-30s13.458-30,30-30 - s30,13.458,30,30S66.542,126,50,126z M123,425h-23v-19h23V425z M123,386h-23V247h23V386z M123,227h-23v-19.959 - c3.808,0.011,8.197,0.022,12.244,0.022c4.378,0,8.351-0.012,10.756-0.046V227z M186,425h-43v-19h43V425z M186,276v40v70h-43 - V244.817c16.149-3.513,31.29-11.046,43-21.321V276z M186,194.605c-2.373,2.327-4.659,4.785-6.815,7.365 - c-8.521,10.2-21.771,18.214-36.185,22.224v-21.525c6.846-3.098,13.007-7.736,17.806-13.49c7.006-8.391,15.56-15.917,25.194-22.232 - V194.605z M206,156.285c12.757-5.415,26.344-8.765,40-9.871v20.099c-14.162,1.416-27.777,5.83-40,12.895V156.285z M206,203.562 - c11.538-9.26,25.37-15.088,40-16.922V266h-40V203.562z M246,425h-40v-19h40V425z M246,386h-40v-60h40V386z M306,425h-40v-19h40 - V425z M306,386h-40v-60h40V386z M306,306H206v-20h100V306z M306,266h-40v-79.359c14.617,1.835,28.449,7.664,40,16.924V266z - M306,179.418c-12.232-7.071-25.847-11.487-40-12.904v-20.1c13.651,1.106,27.238,4.454,40,9.865V179.418z M369,425h-43v-19h43V425 - z M369,386h-43v-70v-40v-52.635c11.722,10.137,26.674,17.329,43,20.634V386z M369,223.458 - c-14.663-3.788-27.83-11.575-36.517-21.887c-2.039-2.417-4.216-4.742-6.483-6.965v-27.672c9.465,6.201,17.88,13.567,24.789,21.767 - c4.64,5.496,10.324,11.234,18.211,14.57V223.458z M412,425h-23v-19h23V425z M412,386h-23V246h23V386z M412,226h-23v-19.856 - c5.683-0.048,15.526-0.088,23-0.113V226z M492,446h-60V146h20v50c0,5.522,4.478,10,10,10c5.522,0,10-4.478,10-10v-50h20V446z - M462,126c-16.542,0-30-13.458-30-30s13.458-30,30-30s30,13.458,30,30S478.542,126,462,126z`}))}function nge(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M391,362h77.417L440.989,58.467C438.075,26.229,409.37,0,377,0H135c-32.37,0-61.075,26.229-63.989,58.467L43.583,362H121v30 H91v120h330V392h-30V362z M135,30h242c16.963,0,32.584,14.273,34.11,31.167L416.427,120H95.573l5.316-58.833 C102.416,44.273,118.037,30,135,30z M92.862,150h326.275l16.446,182H76.416L92.862,150z M151,362h210v30H151V362z M241,422v60h-45 v-60H241z M271,422h45v60h-45V422z M121,422h45v60h-45V422z M391,482h-45v-60h45V482z"}))}function age(i){return n.createElement("svg",{width:170,height:170,viewBox:"-20 -20 190 190",...i},n.createElement("path",{className:"path stOff",d:"M0 109v36.3c0 5.3 3.7 9.7 8.3 9.7h50.1v-23h37v23H153V84H0l28.4-29V13h18.1v24l30-37 66.2 69",fill:"none"}))}function h4e(i){return n.createElement("svg",{viewBox:"0 0 511.448 511.448",...i},n.createElement("path",{d:"M344.556 112.216C318.38 78.84 291.34 44.344 269.516 7.32c-5.76-9.76-21.824-9.76-27.552 0-21.856 37.024-48.896 71.52-75.072 104.896-53.056 67.68-103.168 131.616-103.168 207.232 0 105.888 86.112 192 192 192s192-86.112 192-192c0-75.616-50.112-139.552-103.168-207.232z",fill:"#2196f3"}),n.createElement("g",{fill:"#fafafa"},n.createElement("path",{d:"M207.724 287.448c-26.464 0-48-21.536-48-48s21.536-48 48-48 48 21.536 48 48-21.536 48-48 48zm0-64c-8.832 0-16 7.168-16 16s7.168 16 16 16 16-7.168 16-16-7.168-16-16-16zM303.724 447.448c-26.464 0-48-21.536-48-48s21.536-48 48-48 48 21.536 48 48-21.536 48-48 48zm0-64c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zM175.724 415.448a16.07 16.07 0 0 1-11.328-4.672c-6.24-6.24-6.24-16.384 0-22.624l160-160c6.24-6.24 16.384-6.24 22.624 0s6.24 16.384 0 22.624l-160 160a15.943 15.943 0 0 1-11.296 4.672z"})))}function cge(i){return n.createElement("svg",{viewBox:"-20 -20 190 190",...i},n.createElement("defs",null,n.createElement("filter",{id:"glow",x:"-5000%",y:"-5000%",width:"10000%",height:"10000%"},n.createElement("feFlood",{result:"flood",floodColor:"#70C5FF",floodOpacity:"1"}),n.createElement("feComposite",{in:"flood",result:"mask",in2:"SourceGraphic",operator:"in"}),n.createElement("feMorphology",{in:"mask",result:"dilated",operator:"dilate",radius:"2"}),n.createElement("feGaussianBlur",{in:"dilated",result:"blurred",stdDeviation:"5"}),n.createElement("feMerge",null,n.createElement("feMergeNode",{in:"blurred"}),n.createElement("feMergeNode",{in:"SourceGraphic"})))),n.createElement("path",{style:{stroke:"currentColor",fill:"none",strokeWidth:12,strokeLinejoin:"round",strokeMiterlimit:10},filter:i.isOn?"url(#glow)":"",className:"path",d:"M0,109v36.3c0,5.3,3.7,9.7,8.3,9.7h50.1v-23h37v23H153V84H0l28.4-29V13h18.1v24L76.5,0l66.2,69"}))}function oa(i){return n.createElement("svg",{viewBox:"0 0 508.16 508.16",...i},n.createElement("path",{d:"M504.18 13.67a3.924 3.924 0 0 0-.42.02H4a4 4 0 0 0-4 4v47.28a4 4 0 0 0 4 4h19.72l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.16a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h479.8a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.64-42.08h9.84a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h19.72a4 4 0 0 0 4-4V17.69a4 4 0 0 0-3.98-4.02zM99.08 486.49H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm26.8 378.24h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm.16-47.28h-18.96V68.97h18.96v39.28zm247.84 378.24h-240v-39.28h240v39.28zm-240-47.28v-39.28h239.68v39.28H133.88zm240-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm-240-47.28V68.97h239.84v39.28H133.88zm266.64 378.24h-18.64l-.32-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm.32-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm-18.96-47.28V68.97h18.8v39.28h-18.8zm63.56 8v39.28h-36.92v-39.28h36.92zm-36.76-8V68.97h36.92v39.28h-36.92zm36.76 55.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.76l-.16-39.28h36.92zm42.68 181.12h-79.44v-39.28h66.96l12.48 39.28zm0-47.28h-79.44v-39.28h66.96l12.48 39.28zm0-47.28h-79.44v-39.28h36.92v17.44a4 4 0 0 0 8 0v-17.44h22.04l12.48 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6V68.97h22.04l12.56 39.28zm11.56-47.28H8V21.69h491.76l-.08 39.28z",fill:"currentColor"}),n.createElement("path",{d:"M454.32 37.33h-13.76a4 4 0 0 0 0 8h13.76a4 4 0 0 0 0-8zM414.84 37.33h-96a4 4 0 0 0 0 8h96a4 4 0 0 0 0-8z",fill:"currentColor"}))}function uge(i){return n.createElement("svg",{viewBox:"0 0 230 230",...i},n.createElement("ellipse",{fill:"#2979ff",stroke:"#2979ff",strokeWidth:"1.5",cx:"112.9",cy:"114",rx:"112",ry:"112"}),n.createElement("ellipse",{fill:"#40c4ff",strokeWidth:"1.5",cx:"112.900006",cy:"113.999995",rx:"73.684216",ry:"73.684216",stroke:"#40c4ff"}),n.createElement("ellipse",{fill:"#ffffff",strokeWidth:"1.5",cx:"112.900003",cy:"114",rx:"33.578948",ry:"33.578948",stroke:"#ffffff"}))}function lge(i){return n.createElement("svg",{viewBox:"0 0 24.986 24.986",...i},n.createElement("g",{fill:"currentColor"},n.createElement("path",{fill:"currentColor",d:"M17.548 17.961l-.771-.769s-1.225 1.305-1.304 1.305c-.081 0-1.308-1.305-1.308-1.305l-.771.769s1.306 1.198 1.306 1.308c0 .106-1.306 1.308-1.306 1.308l.771.767s1.217-1.305 1.308-1.305c.089 0 1.304 1.305 1.304 1.305l.771-.767s-1.307-1.218-1.307-1.308c.001-.092 1.307-1.308 1.307-1.308z"}),n.createElement("path",{fill:"currentColor",d:"M15.472 14.435a4.832 4.832 0 0 0 0 9.661 4.83 4.83 0 0 0 0-9.661zm0 8.913a4.083 4.083 0 0 1-4.081-4.082 4.079 4.079 0 0 1 4.081-4.081 4.083 4.083 0 0 1 0 8.163z"}),n.createElement("circle",{fill:"currentColor",cx:10.06,cy:2.207,r:2.207}),n.createElement("path",{fill:"currentColor",d:"M10.2 20.476v3.26l.009.009a1.25 1.25 0 0 0 1.251 1.238c.643 0 1.167-.487 1.236-1.11-.083-.052-.173-.093-.253-.146a5.425 5.425 0 0 1-2.243-3.251z"}),n.createElement("path",{fill:"currentColor",d:"M12.455 14.724c.08-.057.168-.097.253-.146l-.002-6.687h.606V12.945c0 .516.417.932.932.932a.931.931 0 0 0 .933-.932V7.51c-.206-2.42-3.013-2.385-3.013-2.385H7.74c-3.168.06-3.055 2.385-3.055 2.385l-.001 5.428h.003c-.002.014-.002.025-.002.04a.932.932 0 1 0 1.861 0l-.001-.04h.001V7.914h.584l-.007 15.811c0 .693.562 1.261 1.257 1.261s1.257-.565 1.257-1.261V13.523h.562v4.457a5.414 5.414 0 0 1 2.256-3.256z"})))}function I4e(i){return n.createElement("svg",{viewBox:"0 0 63.907 63.907",fill:"currentColor",...i},n.createElement("circle",{fill:"currentColor",cx:30.515,cy:6.136,r:6.136}),n.createElement("path",{fill:"currentColor",d:"M47.399 27.455C42.346 24.53 38.2 20.579 34.71 15.931c-2.193-3.084-7.991-2.923-10.347-.097-3.584 3.487-6.625 7.081-9.037 10.677a3.209 3.209 0 0 0 5.329 3.573 54.205 54.205 0 0 1 3.59-4.734c-.051 3.333.116 9.347.2 12.05.028.9-.177 1.78-.595 2.579-3.308 6.317-5.424 12.294-7.572 19.606a3.37 3.37 0 1 0 6.465 1.901c1.982-6.742 3.897-12.201 6.884-17.981.152.006.304.006.458-.001 1.907 5.69 3.815 11.383 5.725 17.073 1.387 4.147 7.822 1.993 6.431-2.155-2.087-6.221-4.171-12.439-6.251-18.659-.121-.357-.414-1.755-.455-2.211-.344-3.832-.469-7.652-.432-11.477a51.027 51.027 0 0 0 9.782 7.328c3.597 2.088 6.063-3.891 2.514-5.948z"}))}function w4e(i){return n.createElement("svg",{viewBox:"0 0 285 285",...i},n.createElement("g",null,n.createElement("path",{fill:"currentColor",d:`M88.4,87.996c2.525-2.146,2.832-5.933,0.687-8.458C82.801,72.144,79.34,62.719,79.34,53c0-22.607,18.393-41,41-41 - c22.607,0,41,18.393,41,41c0,9.729-3.467,19.161-9.761,26.557c-2.148,2.523-1.843,6.311,0.681,8.458 - c1.129,0.961,2.511,1.431,3.886,1.431c1.698,0,3.386-0.717,4.572-2.111C168.858,77.77,173.34,65.576,173.34,53 - c0-29.225-23.775-53-53-53c-29.225,0-53,23.775-53,53c0,12.563,4.476,24.748,12.602,34.31C82.089,89.835,85.873,90.141,88.4,87.996 - z`}),n.createElement("path",{fill:"currentColor",d:`M120.186,41.201c13.228,0,23.812,8.105,27.313,19.879c0.761-2.562,1.176-5.271,1.176-8.08 - c0-15.649-12.685-28.335-28.335-28.335c-15.648,0-28.334,12.686-28.334,28.335c0,2.623,0.364,5.16,1.031,7.571 - C96.691,49.076,107.152,41.201,120.186,41.201z`}),n.createElement("path",{fill:"currentColor",d:`M234.21,169.856c-3.769-22.452-19.597-26.04-27.034-26.462c-2.342-0.133-4.516-1.32-5.801-3.282 - c-5.388-8.225-12.609-10.4-18.742-10.4c-4.405,0-8.249,1.122-10.449,1.932c-0.275,0.102-0.559,0.15-0.837,0.15 - c-0.87,0-1.701-0.47-2.163-1.262c-5.472-9.387-13.252-11.809-19.822-11.809c-3.824,0-7.237,0.82-9.548,1.564 - c-0.241,0.077-0.764,0.114-1.001,0.114c-1.256,0-2.637-1.03-2.637-2.376V69.753c0-11.035-8.224-16.552-16.5-16.552 - c-8.276,0-16.5,5.517-16.5,16.552v84.912c0,4.989-3.811,8.074-7.918,8.074c-2.495,0-4.899-1.138-6.552-3.678l-7.937-12.281 - c-3.508-5.788-8.576-8.188-13.625-8.189c-11.412-0.001-22.574,12.258-14.644,25.344l62.491,119.692 - c0.408,0.782,1.225,1.373,2.108,1.373h87.757c1.253,0,2.289-1.075,2.365-2.325l2.196-35.816c0.025-0.413,0.162-0.84,0.39-1.186 - C231.591,212.679,237.828,191.414,234.21,169.856z`})))}function Nge(i){return n.createElement("svg",{viewBox:"0 0 384.754 384.754",...i},n.createElement("path",{fill:"currentColor",d:`M214.86,374.508c0,4.971-4.029,9-9,9h-65.01c-4.971,0-9.223-3.57-9.223-8.541V288.87c0-4.971,4.252-9.361,9.223-9.361 - h99.585c4.971,0,9,4.029,9,9s-4.029,9-9,9h-90.808v68h56.232C210.83,365.508,214.86,369.538,214.86,374.508z M136.65,115.508h10 - c4.971,0,9-4.029,9-9s-4.029-9-9-9h-10c-4.971,0-9,4.029-9,9S131.679,115.508,136.65,115.508z M180.947,115.508h10 - c4.97,0,9-4.029,9-9s-4.029-9-9-9h-10c-4.971,0-9,4.029-9,9S175.976,115.508,180.947,115.508z M152.056,142.508c0,4.971,4.029,9,9,9 - h5c4.971,0,9-4.029,9-9s-4.029-9-9-9h-5C156.086,133.508,152.056,137.538,152.056,142.508z M127.875,220.987 - c6.952,11.05,21.072,18.33,36.689,18.33c15.619,0,29.74-7.282,36.691-18.332c12.326,0.961,24.51,6.008,33.264,13.909 - c3.69,3.329,9.381,3.038,12.712-0.651c3.33-3.69,3.038-9.536-0.651-12.866c-12.984-11.718-31.526-18.868-49.6-18.868h-1.237 - c-3.845,0-7.265,2.597-8.513,6.232c-2.119,6.173-10.584,12.499-22.666,12.499c-12.08,0-20.546-6.366-22.667-12.539 - c-1.249-3.636-4.668-6.193-8.512-6.193h-1.236c-30.601,0-59.207,19.216-65.123,43.549L40.6,354.841 - c-0.119,0.442-0.205,0.936-0.255,1.402c-0.124,1.119-0.033,2.244,0.243,3.289c0.245,0.932,0.635,1.814,1.145,2.602 - c1.056,1.635,2.77,2.936,4.713,3.615c0.342,0.119,0.181,0.45,1.181,0.528v0.23c0,0-0.258,0-0.257,0c0.646,0,1.293,0.107,1.93,0.107 - c0.089,0,0.177-0.107,0.266-0.107h54.025c4.971,0,9-4.029,9-9s-4.029-9-9-9H60.743l23.773-97.92 - C88.17,235.565,107.472,222.596,127.875,220.987z M189.97,248.508c-4.971,0-9,4.029-9,9s4.029,9,9,9h31.78c4.971,0,9-4.029,9-9 - s-4.029-9-9-9H189.97z M74.842,100.475c-0.417-4.952,3.259-9.306,8.212-9.723c1.519-0.126,2.98,0.13,4.292,0.692 - c1.424-6.374,3.641-12.519,6.628-18.336c-0.344-0.283-0.681-0.594-0.982-0.93c-0.329-0.366-0.648-0.756-0.91-1.164 - c-0.819-1.275-1.455-2.772-1.455-4.38c0-0.002,0-0.005,0-0.008s0-0.007,0-0.01c0-0.218,0-0.437,0-0.656c0-0.003,0-0.006,0-0.009 - c0-0.001,0-0.003,0-0.004c0-0.301,0.07-0.51,0.105-0.802C94.772,27.947,126.077,0,163.556,0c34.778,0,64.202,23.508,71.492,57.508 - h24.149c4.971,0,9,4.029,9,9s-4.029,9-9,9h-25.056c2.481,5,4.362,10.481,5.62,16.11c1.31-0.562,2.771-0.992,4.293-0.866 - c4.953,0.417,8.631,4.77,8.215,9.723l-1.17,13.92c-0.417,4.952-4.763,8.622-9.723,8.215c-0.326-0.027-0.646-0.072-0.961-0.133 - c-6.549,36.481-38.522,64.25-76.86,64.25c-38.337,0-70.31-27.769-76.858-64.25c-0.314,0.061-0.635,0.104-0.961,0.133 - c-4.945,0.421-9.306-3.261-9.723-8.215L74.842,100.475z M110.646,57.508h105.822c-6.838-23-28.063-39.334-52.912-39.334 - C138.708,18.174,117.483,34.508,110.646,57.508z M103.471,108.857c0,33.132,26.955,59.957,60.086,59.957 - c33.132,0,60.087-26.868,60.087-60c0-12.091-3.508-23.305-10.183-33.305h-99.809C106.977,85.508,103.471,96.765,103.471,108.857z - M344.428,256.584c-0.107-1.239-0.475-2.471-1.114-3.609c-0.174-0.312-0.367-0.614-0.579-0.905l-8.921-12.739 - c-2.851-4.072-8.461-5.063-12.534-2.21c-4.071,2.851-5.062,8.463-2.21,12.534l6.039,8.625l-5.512,11.819 - c-0.003,0.008-0.007,0.015-0.01,0.022l-5.523,12.046l-13.016,1.341c-0.002,0-0.004,0-0.006,0l-13.012,0.936l-7.494-10.805 - c-0.004-0.005-0.007-0.059-0.011-0.064l-7.484-10.715l11.044-23.697l10.49-0.924c4.952-0.434,8.615-4.802,8.182-9.753 - c-0.434-4.952-4.813-8.609-9.75-8.183l-15.495,1.356c-0.355,0.024-0.708,0.069-1.057,0.135c-1.297,0.243-2.487,0.761-3.515,1.485 - c-1.014,0.713-1.893,1.644-2.556,2.764c-0.182,0.306-0.345,0.621-0.49,0.947l-15.289,32.79c-0.16,0.328-0.3,0.664-0.419,1.006 - c-0.43,1.233-0.575,2.51-0.465,3.749c0.108,1.236,0.474,2.463,1.11,3.599c0.176,0.314,0.37,0.62,0.583,0.912l10.376,14.817 - c0.005,0.007,0.01,0.014,0.015,0.021l7.479,10.685l-36.083,77.381c-2.101,4.505-0.151,9.86,4.354,11.961 - c1.23,0.573,2.524,0.845,3.798,0.845c3.39,0,6.636-1.924,8.163-5.198l36.082-77.146l13.012-0.902c0.002,0,0.004,0,0.006,0 - l18.021-1.813c0.358-0.024,0.714-0.188,1.064-0.256c1.292-0.243,2.477-0.817,3.501-1.539c1.014-0.711,1.891-1.669,2.555-2.786 - c0.185-0.309,0.351-0.644,0.497-0.975l7.644-16.398c0.001-0.002,0.002-0.008,0.003-0.009l7.644-16.396 - c0.159-0.326,0.299-0.66,0.417-1.001C344.392,259.102,344.538,257.825,344.428,256.584z`}))}function kr(i){return n.createElement("svg",{viewBox:"1 -10 511.99999 511",...i},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"M 405.5 150 C 405.5 232.566406 338.566406 299.5 256 299.5 C 173.433594 299.5 106.5 232.566406 106.5 150 C 106.5 67.433594 173.433594 0.5 256 0.5 C 338.566406 0.5 405.5 67.433594 405.5 150 Z M 405.5 150 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(25.882353%,75.294118%,88.627451%)",fillOpacity:1}}),n.createElement("path",{d:"M 512 342.921875 C 512 425.488281 445.066406 492.421875 362.5 492.421875 C 279.933594 492.421875 213 425.488281 213 342.921875 C 213 260.355469 279.933594 193.421875 362.5 193.421875 C 445.066406 193.421875 512 260.355469 512 342.921875 Z M 512 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(100%,81.568627%,38.039216%)",fillOpacity:1}}),n.createElement("path",{d:"M 220.746094 295.308594 C 232.050781 298.039062 243.855469 299.5 256 299.5 C 321.917969 299.5 377.871094 256.835938 397.753906 197.613281 C 386.449219 194.878906 374.644531 193.421875 362.5 193.421875 C 296.582031 193.421875 240.628906 236.085938 220.746094 295.308594 Z M 220.746094 295.308594 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(28.627451%,74.117647%,56.470588%)",fillOpacity:1}}),n.createElement("path",{d:"M 299 342.921875 C 299 425.488281 232.066406 492.421875 149.5 492.421875 C 66.933594 492.421875 0 425.488281 0 342.921875 C 0 260.355469 66.933594 193.421875 149.5 193.421875 C 232.066406 193.421875 299 260.355469 299 342.921875 Z M 299 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(98.039216%,43.921569%,69.803922%)",fillOpacity:1}}),n.createElement("path",{d:"M 114.246094 197.613281 C 134.128906 256.835938 190.082031 299.5 256 299.5 C 268.144531 299.5 279.949219 298.039062 291.253906 295.308594 C 271.371094 236.085938 215.417969 193.421875 149.5 193.421875 C 137.355469 193.421875 125.550781 194.878906 114.246094 197.613281 Z M 114.246094 197.613281 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(68.627451%,48.235294%,77.647059%)",fillOpacity:1}}),n.createElement("path",{d:"M 213 342.921875 C 213 383.800781 229.414062 420.839844 256 447.828125 C 282.585938 420.839844 299 383.800781 299 342.921875 C 299 302.042969 282.585938 265.003906 256 238.015625 C 229.414062 265.003906 213 302.042969 213 342.921875 Z M 213 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(93.72549%,38.039216%,13.333333%)",fillOpacity:1}}),n.createElement("path",{d:"M 291.253906 295.320312 C 279.949219 298.046875 268.140625 299.5 256 299.5 C 243.859375 299.5 232.050781 298.046875 220.746094 295.320312 C 228.058594 273.542969 240.242188 254.015625 256 238.015625 C 271.757812 254.015625 283.941406 273.542969 291.253906 295.320312 Z M 291.253906 295.320312 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(100%,100%,100%)",fillOpacity:1}})))}function C4e(i){return n.createElement("svg",{width:32,height:32,viewBox:"0 0 365.445 365.445",...i},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"M146.7 162.775h-26.8a6.655 6.655 0 0 0-6.647 6.647v26.602a6.653 6.653 0 0 0 6.647 6.646h26.8a6.654 6.654 0 0 0 6.647-6.646v-26.602a6.655 6.655 0 0 0-6.647-6.647zM245.547 162.775h-26.801a6.653 6.653 0 0 0-6.646 6.647v26.602a6.652 6.652 0 0 0 6.646 6.646h26.801a6.654 6.654 0 0 0 6.646-6.646v-26.602a6.655 6.655 0 0 0-6.646-6.647z"})),n.createElement("path",{d:"M345.445 1.204H20c-11.046 0-20 8.954-20 20v323.037c0 11.045 8.954 20 20 20h325.445c11.045 0 20-8.955 20-20V21.204c0-11.045-8.953-20-20-20zM182.723 287.66c-57.955 0-104.937-46.981-104.937-104.937 0-57.957 46.982-104.938 104.937-104.938S287.66 124.767 287.66 182.723 240.678 287.66 182.723 287.66z",fill:"currentColor"}))}function A4e(i){return n.createElement("svg",{width:32,height:32,viewBox:"0 0 45.659 45.659",...i},n.createElement("path",{fill:"currentColor",d:"M30.619 27.309V7.781C30.619 3.49 27.124 0 22.833 0c-4.29 0-7.785 3.491-7.785 7.78v19.528a10.722 10.722 0 0 0-3.05 7.522c0 5.972 4.857 10.828 10.829 10.828 5.97 0 10.834-4.856 10.834-10.828 0-2.918-1.141-5.572-3.042-7.521zM22.825 42.66c-4.316 0-7.824-3.512-7.824-7.828 0-2.527 1.174-4.779 3.077-6.211V16.237h3.372c.552 0 1-.47 1-1.022 0-.553-.448-1.021-1-1.021h-3.372v-2.466h3.372c.552 0 1-.434 1-.986a.989.989 0 0 0-1-.986h-3.372V7.78c0-2.636 2.119-4.78 4.754-4.78 2.637 0 4.756 2.144 4.756 4.781v20.871c1.903 1.434 3.047 3.671 3.047 6.18 0 4.316-3.494 7.828-7.81 7.828z"}),n.createElement("path",{fill:"currentColor",d:"M25.334 30.463V18.632h-5.002v11.831a4.973 4.973 0 0 0-2.537 4.369 5.038 5.038 0 0 0 5.038 5.046 5.034 5.034 0 0 0 5.034-5.046c0-1.866-.982-3.495-2.533-4.369z"}))}function Lge(i){return n.createElement("svg",{viewBox:"0 0 512 512",...i},n.createElement("path",{fill:"currentColor",d:"M341.333 288.593V85.333C341.333 38.205 303.128 0 256 0s-85.333 38.205-85.333 85.333v203.259C144.48 312.03 128 346.091 128 384c0 70.693 57.308 128 128 128s128-57.307 128-128c0-37.909-16.48-71.97-42.667-95.407zM256 469.333c-47.128 0-85.333-38.205-85.333-85.333 0-24.637 10.441-47.492 28.455-63.615l14.212-12.72V85.333c0-23.564 19.103-42.667 42.667-42.667s42.667 19.102 42.667 42.667v222.332l14.212 12.72c18.014 16.123 28.455 38.977 28.455 63.615-.002 47.128-38.207 85.333-85.335 85.333z"}),n.createElement("path",{fill:"currentColor",d:"M234.667 170.667h42.667v256h-42.667z"}),n.createElement("circle",{fill:"currentColor",cx:256,cy:384,r:64}))}function m4e(i){return n.createElement("svg",{viewBox:"0 0 297 297",...i},n.createElement("g",null,n.createElement("path",{fill:"currentColor",d:"m243.404,138.042c-5.775,0-10.458,4.683-10.458,10.458 0,46.564-37.883,84.446-84.446,84.446s-84.446-37.882-84.446-84.446 37.883-84.446 84.446-84.446c5.775,0 10.458-4.683 10.458-10.458s-4.683-10.457-10.458-10.457c-58.097,0-105.361,47.265-105.361,105.361s47.264,105.361 105.361,105.361 105.361-47.264 105.361-105.361c0-5.775-4.681-10.458-10.457-10.458z"}),n.createElement("path",{fill:"currentColor",d:"m142.963,121.344l-20.272-30.41c-3.203-4.807-9.695-6.104-14.502-2.9-4.805,3.202-6.104,9.695-2.9,14.502l20.279,30.422c-3.015,4.436-4.78,9.787-4.78,15.543 0,15.281 12.432,27.713 27.713,27.713 15.281,0 27.713-12.432 27.713-27.713 0-15.281-12.432-27.713-27.713-27.713-1.897-0.001-3.749,0.191-5.538,0.556zm12.335,27.156c0,3.748-3.05,6.798-6.798,6.798s-6.798-3.05-6.798-6.798 3.05-6.798 6.798-6.798 6.798,3.05 6.798,6.798z"}),n.createElement("path",{fill:"currentColor",d:"M148.5,0C66.617,0,0,66.617,0,148.5S66.617,297,148.5,297S297,230.383,297,148.5S230.383,0,148.5,0z M158.958,275.653 v-6.366c0-5.775-4.683-10.458-10.458-10.458c-5.775,0-10.458,4.683-10.458,10.458v6.366 c-62.027-5.056-111.64-54.668-116.695-116.695h6.366c5.775,0,10.458-4.683,10.458-10.458s-4.683-10.458-10.458-10.458h-6.366 c5.056-62.027,54.668-111.64,116.695-116.695v6.366c0,5.775,4.683,10.458,10.458,10.458c5.775,0,10.458-4.683,10.458-10.458v-6.366 c62.027,5.056,111.64,54.668,116.695,116.695h-6.366c-5.775,0-10.458,4.683-10.458,10.458s4.683,10.458,10.458,10.458h6.366 C270.598,220.985,220.985,270.598,158.958,275.653z"})))}function jge(i){return n.createElement("svg",{viewBox:"0 0 480 480",...i},n.createElement("g",null,n.createElement("path",{fill:"currentColor",d:`M472,304h-80v-8c0-4.418-3.582-8-8-8h-32c-4.418,0-8,3.582-8,8v8h-48v-48c0-4.418-3.582-8-8-8h-8v-24c0-4.418-3.582-8-8-8 - h-8v-16h8c4.418,0,8-3.582,8-8v-32c0-4.418-3.582-8-8-8h-8v-24h44.28c5.382-0.016,10.547,2.121,14.344,5.936l7.44,7.44 - c14.167,14.169,37.138,14.171,51.308,0.004c6.806-6.805,10.629-16.036,10.628-25.66V92.28 - c0.002-20.037-16.239-36.282-36.276-36.284c-9.625-0.001-18.855,3.822-25.66,10.628l-7.44,7.44 - c-3.797,3.815-8.962,5.952-14.344,5.936H264V56c0-4.418-3.582-8-8-8h-32c-4.418,0-8,3.582-8,8v24h-52.28 - c-5.382,0.016-10.547-2.121-14.344-5.936l-7.44-7.44c-14.167-14.169-37.138-14.171-51.308-0.004 - C83.822,73.425,79.999,82.655,80,92.28v23.44c-0.002,20.037,16.239,36.282,36.276,36.284c9.625,0.001,18.855-3.822,25.66-10.628 - l7.44-7.44c3.797-3.815,8.962-5.952,14.344-5.936H216v24h-8c-4.418,0-8,3.582-8,8v32c0,4.418,3.582,8,8,8h8v16h-8 - c-4.418,0-8,3.582-8,8v24h-8c-4.418,0-8,3.582-8,8v48h-48v-8c0-4.418-3.582-8-8-8H96c-4.418,0-8,3.582-8,8v8H8 - c-4.418,0-8,3.582-8,8v104c0,4.418,3.582,8,8,8h80c0,4.418,3.582,8,8,8h32c4.418,0,8-3.582,8-8v-8h208v8c0,4.418,3.582,8,8,8h32 - c4.418,0,8-3.582,8-8v-8h80c4.418,0,8-3.582,8-8v-96C480,307.582,476.418,304,472,304z M88,408H16v-88h72V408z M120,416h-16V304 - h16V416z M232,64h16v16h-16V64z M163.72,112c-9.628-0.028-18.866,3.798-25.656,10.624l-7.44,7.44 - c-7.928,7.918-20.774,7.909-28.692-0.02c-3.796-3.801-5.929-8.953-5.932-14.324V92.28c0.006-11.205,9.095-20.283,20.3-20.276 - c5.372,0.003,10.523,2.137,14.324,5.932l7.44,7.44c6.79,6.826,16.028,10.652,25.656,10.624h144.56 - c9.628,0.028,18.866-3.798,25.656-10.624l7.44-7.44c7.928-7.918,20.774-7.909,28.692,0.02c3.796,3.801,5.929,8.953,5.932,14.324 - v23.44c-0.006,11.205-9.095,20.283-20.3,20.276c-5.372-0.003-10.523-2.136-14.324-5.932l-7.44-7.44 - c-6.79-6.826-16.028-10.652-25.656-10.624H163.72z M248,128v24h-16v-24H248z M216,168h48v16h-48V168z M248,200v16h-16v-16H248z - M216,232h48v16h-48V232z M344,400H136v-80h56c4.418,0,8-3.582,8-8v-48h80v48c0,4.418,3.582,8,8,8h56V400z M376,416h-16V304h16 - V416z M464,400h-72v-80h72V400z`})))}function gge(i){return n.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...i},n.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M258.5 185.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H258.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),n.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}))}function p4e(i){return n.createElement("svg",{viewBox:"0 0 361 361",...i},n.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M228.5 205.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H228.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),n.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M232.826 280.905c-.339 3.356-18.813-.782-20.919-1.06l-45.073-5.94-45.074-5.94-14.507-1.912c-1.456-.192-6.201-.055-6.412-2.147-.621-6.157 0-12.699 0-18.878v-43.5-82.076-5.13c0-2.551 5.184-1.015 6.412-.853l35.438 4.67 83.723 11.035c1.457.192 6.201.055 6.412 2.147.169 1.673 0 3.451 0 5.13v144.454c0 6.448 10 6.448 10 0V136.451v-5.13c0-7.619-6.137-10.793-12.673-11.655l-28.531-3.76-88.411-11.652-9.897-1.304c-6.555-.864-12.473 4.9-12.473 11.38v144.832c0 2.023-.071 4.04.132 6.053.717 7.111 6.606 9.563 12.759 10.374l76.827 10.125 39.896 5.259 9.697 1.278c7.063.931 12.011-4.778 12.673-11.346.648-6.415-9.358-6.352-9.999 0z",fill:"currentColor"}))}function Lu(i){return n.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...i},n.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9zM265.732 265.178c.584 2.887-1.629 5.228-4.942 5.228H103.457c-3.313 0-6.474-2.341-7.058-5.228L75.24 130.633c-.584-2.887 1.628-5.228 4.942-5.228h157.333c3.313 0 6.474 2.34 7.058 5.228l21.159 134.545z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),n.createElement("path",{d:"M247.194 199.667h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5h-6.639c-2.726 0-5 2.274-5 5s2.275 5 5 5z",fill:"currentColor"}))}const O4e={"type-Device type":"Device type","type-airCondition":"Air conditioner","type-blind":"Blinds","type-blindButtons":"Blind controlled by buttons","type-button":"Button","type-buttonSensor":"Button with feedback","type-camera":"Camera","type-chart":"Chart","type-cie":"CIE color light","type-ct":"Color temperature","type-dimmer":"Dimmer","type-door":"Door","type-fireAlarm":"Fire alarm","type-floodAlarm":"Flood alarm","type-gate":"Gate","type-hue":"HUE light","type-humidity":"Humidity","type-illuminance":"Illuminance","type-image":"Image","type-info":"Information","type-instance":"Instance","type-light":"Light","type-location":"Position","type-locationOne":"Position as one state","type-lock":"Lock","type-media":"Media-player","type-motion":"Motion sensor","type-percentage":"Percentage","type-rgb":"RGB light","type-rgbSingle":"R,G,B light - single states","type-rgbwSingle":"R,G,B,W light - single states","type-slider":"Slider","type-socket":"Socket","type-temperature":"Temperature","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Vacuum cleaner","type-valve":"Valve","type-volume":"Volume","type-volumeGroup":"Volume group","type-warning":"Warning","type-weatherCurrent":"Current weather","type-weatherForecast":"Weather forecast","type-window":"Window sensor","type-windowTilt":"Window tilt sensor"},E4e={"type-Device type":"Gerätetyp","type-airCondition":"Klimaanlage","type-blind":"Jalousien","type-blindButtons":"Jalousie über Tasten gesteuert","type-button":"Taste","type-buttonSensor":"Taste mit Rückmeldung","type-camera":"Kamera","type-chart":"Diagramm","type-cie":"CIE Farblicht","type-ct":"Farbtemperatur","type-dimmer":"Dimmer","type-door":"Türsensor","type-fireAlarm":"Feueralarm","type-floodAlarm":"Wasseralarm","type-gate":"Tor-Steuerung","type-hue":"HUE-Licht","type-humidity":"Feuchtigkeit","type-illuminance":"Beleuchtungsstärke","type-image":"Bild","type-info":"Information","type-instance":"Instanz","type-light":"Licht","type-location":"Position","type-locationOne":"Position als ein Zustand","type-lock":"Schloss","type-media":"Mediaplayer","type-motion":"Bewegungssensor","type-percentage":"Prozentsatz","type-rgb":"RGB-Licht","type-rgbSingle":"R,G,B-Licht Einzelwerte","type-rgbwSingle":"R,G,B,W-Licht Einzelwerte","type-slider":"Schieberegler","type-socket":"Steckdose","type-temperature":"Temperatur","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Staubsauger","type-valve":"Ventil","type-volume":"Lautstärke","type-volumeGroup":"Lautstärke-Gruppe","type-warning":"Warnung","type-weatherCurrent":"Aktuelle Wetterlage","type-weatherForecast":"Wettervorhersage","type-window":"Fenstersensor","type-windowTilt":"Fensterkippung-Sensor"},_4e={"type-Device type":"Тип устройства","type-airCondition":"Кондиционер","type-blind":"Рольставни/Жалюзи","type-blindButtons":"Жалюзи управляющиеся кнопками","type-button":"Кнопка","type-buttonSensor":"Кнопка с обратной связью","type-camera":"Камера","type-chart":"Диаграмма","type-cie":"CIE свет","type-ct":"Цветовая температура","type-dimmer":"Диммер","type-door":"Датчик положения двери","type-fireAlarm":"Датчик дыма","type-floodAlarm":"Датчик затопления","type-gate":"Ворота","type-hue":"HUE свет","type-humidity":"Влажность","type-illuminance":"Освещенность","type-image":"Изображение","type-info":"Информация","type-instance":"Инстанция","type-light":"Свет","type-location":"Местоположение","type-locationOne":"Позиция в одном состоянии","type-lock":"Замок","type-media":"Медиа-плейер","type-motion":"Датчик движения","type-percentage":"Проценты","type-rgb":"RGB свет","type-rgbSingle":"R,G,B как отдельные значение","type-rgbwSingle":"R,G,B,W как отдельные значение","type-slider":"Ползунок","type-socket":"Розетка","type-temperature":"Температура","type-thermostat":"Термостат","type-url":"URL","type-vacuumCleaner":"Пылесос","type-valve":"Вентиль","type-volume":"Громкость","type-volumeGroup":"Группа громкости","type-warning":"Предупреждение","type-weatherCurrent":"Актуальная погода","type-weatherForecast":"Прогноз погоды","type-window":"Датчик открытия окна","type-windowTilt":"Датчик наклона окна"},f4e={"type-Device type":"Tipo de dispositivo","type-airCondition":"Ar condicionado","type-blind":"persianas","type-blindButtons":"Persiana controlada por botões","type-button":"botão","type-buttonSensor":"Sensor de botão","type-camera":"câmera","type-chart":"Gráfico","type-cie":"Luz colorida CIE","type-ct":"Temperatura de cor","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"alarme de incêndio","type-floodAlarm":"alarme de inundação","type-gate":"portão","type-hue":"Luz HUE","type-humidity":"umidade","type-illuminance":"Iluminância","type-image":"imagem","type-info":"informação","type-instance":"exemplo","type-light":"luz","type-location":"localização","type-locationOne":"Posição como um estado","type-lock":"trancar","type-media":"mídia","type-motion":"movimento","type-percentage":"Percentagem","type-rgb":"Luz RGB","type-rgbSingle":"Luz RGB única","type-rgbwSingle":"RGBW como valor único","type-slider":"controle deslizante","type-socket":"soquete","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirador de pó","type-valve":"válvula","type-volume":"volume","type-volumeGroup":"grupo de volume","type-warning":"aviso","type-weatherCurrent":"clima atual","type-weatherForecast":"previsão do tempo","type-window":"janela","type-windowTilt":"inclinação da janela"},S4e={"type-Device type":"Typ urządzenia","type-airCondition":"Klimatyzator","type-blind":"żaluzje","type-blindButtons":"Roleta sterowana przyciskami","type-button":"przycisk","type-buttonSensor":"Czujnik przycisku","type-camera":"kamera","type-chart":"Wykres","type-cie":"Światło kolorowe CIE","type-ct":"Temperatura barwowa","type-dimmer":"opornik","type-door":"drzwi","type-fireAlarm":"alarm pożarowy","type-floodAlarm":"alarm przeciwpowodziowy","type-gate":"brama","type-hue":"Światło HUE","type-humidity":"wilgotność","type-illuminance":"Natężenie oświetlenia","type-image":"obraz","type-info":"Informacje","type-instance":"przykład","type-light":"światło","type-location":"lokalizacja","type-locationOne":"Pozycja jako państwa","type-lock":"zamek","type-media":"głoska bezdźwięczna","type-motion":"ruch","type-percentage":"Procent","type-rgb":"Światło RGB","type-rgbSingle":"Pojedyncze światło RGB","type-rgbwSingle":"RGBW jako pojedyncza wartość","type-slider":"suwak","type-socket":"gniazdo","type-temperature":"temperatura","type-thermostat":"termostat","type-url":"Adres URL","type-vacuumCleaner":"Odkurzacz","type-valve":"zawór","type-volume":"tom","type-volumeGroup":"grupa woluminów","type-warning":"ostrzeżenie","type-weatherCurrent":"aktualna pogoda","type-weatherForecast":"prognoza pogody","type-window":"okno","type-windowTilt":"pochylenie okna"},x4e={"type-Device type":"Type d'appareil","type-airCondition":"Climatiseur","type-blind":"stores","type-blindButtons":"Store commandé par boutons","type-button":"bouton","type-buttonSensor":"Capteur de bouton","type-camera":"caméra","type-chart":"Graphique","type-cie":"lumière colorée CIE","type-ct":"Température de couleur","type-dimmer":"variateur","type-door":"porte","type-fireAlarm":"alarme incendie","type-floodAlarm":"alarme d'inondation","type-gate":"grille","type-hue":"Lumière HUE","type-humidity":"humidité","type-illuminance":"Éclairement","type-image":"image","type-info":"informations","type-instance":"exemple","type-light":"lumière","type-location":"emplacement","type-locationOne":"Position en tant qu'État","type-lock":"verrouillage","type-media":"médias","type-motion":"mouvement","type-percentage":"Pourcentage","type-rgb":"lumière RVB","type-rgbSingle":"Lumière RVB simple","type-rgbwSingle":"RGBW comme valeur unique","type-slider":"curseur","type-socket":"douille","type-temperature":"température","type-thermostat":"thermostat","type-url":"URL","type-vacuumCleaner":"Aspirateur","type-valve":"soupape","type-volume":"volume","type-volumeGroup":"groupe de volumes","type-warning":"avertissement","type-weatherCurrent":"météo actuelle","type-weatherForecast":"prévisions météorologiques","type-window":"fenêtre","type-windowTilt":"inclinaison de la fenêtre"},k4e={"type-Device type":"Tipo di dispositivo","type-airCondition":"Condizionatore d'aria","type-blind":"tende","type-blindButtons":"Tenda controllata da pulsanti","type-button":"pulsante","type-buttonSensor":"Sensore del pulsante","type-camera":"telecamera","type-chart":"Grafico","type-cie":"Luce colorata CIE","type-ct":"Temperatura del colore","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"allarme antincendio","type-floodAlarm":"allarme allagamento","type-gate":"cancello","type-hue":"Luce HUE","type-humidity":"umidità","type-illuminance":"Illuminamento","type-image":"immagine","type-info":"informazioni","type-instance":"esempio","type-light":"leggero","type-location":"posizione","type-locationOne":"Posizione come stato","type-lock":"serratura","type-media":"media","type-motion":"movimento","type-percentage":"Percentuale","type-rgb":"luce RGB","type-rgbSingle":"Luce RGB singola","type-rgbwSingle":"RGBW come valore singolo","type-slider":"cursore","type-socket":"PRESA","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirapolvere","type-valve":"valvola","type-volume":"volume","type-volumeGroup":"gruppo di volumi","type-warning":"avvertimento","type-weatherCurrent":"meteo attuale","type-weatherForecast":"previsioni del tempo","type-window":"finestra","type-windowTilt":"inclinazione della finestra"},Y4e={"type-Device type":"Apparaattype","type-airCondition":"Airconditioner","type-blind":"jaloezieën","type-blindButtons":"Jaloezie bediend door knoppen","type-button":"knop","type-buttonSensor":"Knopsensor","type-camera":"camera","type-chart":"Grafiek","type-cie":"CIE-kleurenlicht","type-ct":"Kleurtemperatuur","type-dimmer":"dimmer","type-door":"deur","type-fireAlarm":"brandalarm","type-floodAlarm":"overstromingsalarm","type-gate":"hek","type-hue":"HUE-licht","type-humidity":"vochtigheid","type-illuminance":"Verlichtingssterkte","type-image":"afbeelding","type-info":"informatie","type-instance":"aanleg","type-light":"licht","type-location":"locatie","type-locationOne":"Positie als staat","type-lock":"slot","type-media":"media","type-motion":"beweging","type-percentage":"Percentage","type-rgb":"RGB-licht","type-rgbSingle":"RGB-licht enkel","type-rgbwSingle":"RGBW als enkele waarde","type-slider":"schuifregelaar","type-socket":"stopcontact","type-temperature":"temperatuur","type-thermostat":"thermostaat","type-url":"URL","type-vacuumCleaner":"Stofzuiger","type-valve":"ventiel","type-volume":"volume","type-volumeGroup":"volumegroep","type-warning":"waarschuwing","type-weatherCurrent":"huidige weersomstandigheden","type-weatherForecast":"weersvoorspelling","type-window":"raam","type-windowTilt":"raamkanteling"},Q4e={"type-Device type":"Тип пристрою","type-airCondition":"Кондиціонер","type-blind":"жалюзі","type-blindButtons":"Штора керується кнопками","type-button":"кнопку","type-buttonSensor":"Датчик кнопки","type-camera":"камера","type-chart":"Діаграма","type-cie":"Кольорове світло CIE","type-ct":"Колірна температура","type-dimmer":"диммер","type-door":"двері","type-fireAlarm":"пожежна сигналізація","type-floodAlarm":"сигналізація про повінь","type-gate":"ворота","type-hue":"світло HUE","type-humidity":"вологість","type-illuminance":"Освітленість","type-image":"зображення","type-info":"інформація","type-instance":"екземпляр","type-light":"світло","type-location":"розташування","type-locationOne":"Позиція як держави","type-lock":"замок","type-media":"ЗМІ","type-motion":"руху","type-percentage":"Відсоток","type-rgb":"RGB світло","type-rgbSingle":"Одиночне світло RGB","type-rgbwSingle":"RGBW як одне значення","type-slider":"повзунок","type-socket":"гніздо","type-temperature":"температура","type-thermostat":"термостат","type-url":"URL","type-vacuumCleaner":"Пилосос","type-valve":"клапан","type-volume":"обсяг","type-volumeGroup":"група обсягів","type-warning":"УВАГА","type-weatherCurrent":"поточна погода","type-weatherForecast":"прогноз погоди","type-window":"вікно","type-windowTilt":"нахил вікна"},v4e={"type-Device type":"设备类型","type-airCondition":"空调","type-blind":"百叶窗","type-blindButtons":"按钮控制百叶窗","type-button":"按钮","type-buttonSensor":"按钮传感器","type-camera":"相机","type-chart":"图表","type-cie":"CIE色光","type-ct":"色温","type-dimmer":"调光器","type-door":"门","type-fireAlarm":"火灾报警","type-floodAlarm":"洪水警报","type-gate":"门","type-hue":"色调灯","type-humidity":"湿度","type-illuminance":"照度","type-image":"图像","type-info":"信息","type-instance":"实例","type-light":"光","type-location":"地点","type-locationOne":"作为一个国家的地位","type-lock":"锁","type-media":"媒体","type-motion":"运动","type-percentage":"百分比","type-rgb":"RGB灯","type-rgbSingle":"RGB灯单","type-rgbwSingle":"RGBW 作为单一值","type-slider":"滑块","type-socket":"插座","type-temperature":"温度","type-thermostat":"恒温器","type-url":"网址","type-vacuumCleaner":"吸尘器","type-valve":"阀门","type-volume":"体积","type-volumeGroup":"卷组","type-warning":"警告","type-weatherCurrent":"当前天气","type-weatherForecast":"天气预报","type-window":"窗户","type-windowTilt":"窗户倾斜"};let Ma=!1;function ju(){Ma||(Ma=!0,D.extendTranslations({en:O4e,de:E4e,ru:_4e,pt:f4e,pl:S4e,fr:x4e,it:k4e,nl:Y4e,uk:Q4e,"zh-cn":v4e}))}const na={[B.Types.airCondition]:F0e,[B.Types.blind]:oa,[B.Types.blindButtons]:oa,[B.Types.button]:w4e,[B.Types.buttonSensor]:j4e,[B.Types.camera]:k0e,[B.Types.chart]:_0e,[B.Types.image]:G0e,[B.Types.dimmer]:X0e,[B.Types.door]:d4e,[B.Types.fireAlarm]:ia,"sensor.alarm.fire":ia,[B.Types.floodAlarm]:ra,"sensor.alarm.flood":ra,[B.Types.gate]:z4e,[B.Types.humidity]:h4e,[B.Types.illuminance]:T4e,[B.Types.info]:B0e,[B.Types.light]:J0e,[B.Types.lock]:R0e,[B.Types.location]:$0e,[B.Types.locationOne]:a4e,[B.Types.media]:P0e,[B.Types.motion]:I4e,[B.Types.ct]:Zn,[B.Types.percentage]:Vn,[B.Types.rgb]:kr,[B.Types.rgbSingle]:kr,[B.Types.rgbwSingle]:y4e,[B.Types.hue]:Zn,[B.Types.cie]:kr,[B.Types.slider]:Vn,[B.Types.socket]:C4e,[B.Types.temperature]:A4e,[B.Types.thermostat]:m4e,[B.Types.vacuumCleaner]:D4e,[B.Types.volume]:U0e,[B.Types.volumeGroup]:Q0e,[B.Types.window]:p4e,[B.Types.windowTilt]:Lu,[B.Types.weatherCurrent]:ta,[B.Types.weatherForecast]:ta,[B.Types.warning]:Xn,[B.Types.unknown]:n4e,[B.Types.instance]:Y0e,invalid:Xn,hub3:e4e,node:t4e,hub5:s4e,controller:M4e},Oi={width:32,height:32};function U4e(i){const[e,t]=n.useState(!1);if(ye(()=>{i.title&&!e&&(ju(),t(!0))},[i.title,e]),!e&&i.title)return n.createElement(W,{style:{...Oi,...i.style||void 0},className:i.className,sx:i.sx});const s=i.type||(i.src?Object.keys(na).find(M=>i.src===M):void 0);if(!s&&i.src)return n.createElement(xe,{style:Oi,...i,title:i.title===!0?void 0:i.title,src:i.src});const r=s&&na[s];if(!r)return s?n.createElement("span",{style:{...Oi,...i.style||void 0}},s[0].toUpperCase()):null;const o=n.createElement(r,{style:{...Oi,...i.style||void 0},onClick:i.onClick,className:i.className,sx:i.sx});return i.title?n.createElement(ae,{slotProps:{popper:{sx:{pointerEvents:"none"}}},title:i.title===!0?D.t(`type-${s}`):i.title},n.createElement("div",{style:{display:"flex"}},o)):o}const St={itemChildrenWrapper:{display:"flex",width:"100%",justifyContent:"space-between"},type:{marginTop:10},selectIcon:{paddingRight:8,verticalAlign:"middle",width:20,height:20},selectText:{verticalAlign:"middle"},iconWrapper:{display:"flex",alignItems:"center"},iconStyle:{width:16,height:16,margin:"0 3px"},emptyIcon:{width:16,height:16,margin:"0 3px"}};function Tge(i){const[e,t]=n.useState({}),[s,r]=n.useState([]);return ye(()=>{const o={};Object.keys(B.Types).filter(a=>{var u,l;return(!i.supportedDevices||((u=i.supportedDevices)==null?void 0:u.includes(a)))&&!((l=i.unsupportedDevices)!=null&&l.includes(a))}).forEach(a=>o[a]=D.t(`type-${B.Types[a]}`));const M=Object.keys(o);M.sort((a,u)=>o[a]===o[u]?0:o[a].localeCompare(o[u],"de")),ju(),r(M),t(o)},[i.supportedDevices,i.unsupportedDevices]),s?n.createElement(wt,{style:{...St.type,...i.style},sx:i.sx,variant:"standard",error:!!i.error},n.createElement(As,null,i.label||D.t("type-Device type")),n.createElement(Xe,{variant:"standard",disabled:!!i.disabled,value:i.value,onChange:o=>i.onChange(o.target.value)},s.map(o=>{var M;return n.createElement(te,{key:B.Types[o],value:B.Types[o]},n.createElement("div",{style:St.itemChildrenWrapper},n.createElement("div",null,n.createElement(U4e,{type:B.Types[o],style:{...St.selectIcon,color:i.themeType==="dark"?"#FFFFFF":"#000"}}),n.createElement("span",{style:St.selectText},e[o])),(M=i.showApplications)!=null&&M.TYPE_OPTIONS[o]?n.createElement("div",{style:St.iconWrapper},Object.keys(i.showApplications.TYPE_OPTIONS[o]).map(a=>i.showApplications.TYPE_OPTIONS[o][a]?n.createElement(xe,{key:a,style:St.iconStyle,src:i.showApplications.ICONS_TYPE[a]}):n.createElement("div",{key:a,style:St.emptyIcon}))):null))}))):n.createElement(W,{style:{...St.type,...i.style},sx:i.sx})}function b4e(i){return U({attr:{version:"1",viewBox:"0 0 48 48",enableBackground:"new 0 0 48 48"},child:[{tag:"circle",attr:{fill:"#B2EBF2",cx:"32",cy:"24",r:"9"},child:[]},{tag:"path",attr:{fill:"#4DD0E1",d:"M32,12c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C44,17.4,38.6,12,32,12z M32,32 c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S36.4,32,32,32z"},child:[]},{tag:"g",attr:{fill:"#3F51B5"},child:[{tag:"polygon",attr:{points:"25.4,22 19.8,5.1 13.6,27.7 11.4,22 4,22 4,26 8.6,26 14.4,40.3 20.2,18.9 22.6,26 30,26 30,22"},child:[]},{tag:"circle",attr:{cx:"32",cy:"24",r:"4"},child:[]}]}]})(i)}function $4e(i){return U({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M4.428 2.727l3.335 3.335c-.486.07-.903.276-1.32.624L.886 12.383c-1.181 1.18-1.181 3.194 0 4.375a2.41 2.41 0 0 0 1.598.834l17.088 3.681-3.335-3.333c.486-.07.903-.278 1.32-.626l5.557-5.695c1.181-1.181 1.181-3.196 0-4.377a2.411 2.411 0 0 0-1.598-.833zM11.653 6.2c.694 0 1.25.486 1.25 1.18 0 .695-.486 1.251-1.181 1.251-.695 0-1.25-.485-1.25-1.18s.555-1.251 1.18-1.251zm1.51 3.792c.049-.006.088.046.088.098-.139.694-.695 1.181-1.39 1.181-.694 0-1.32-.487-1.46-1.112 0 0 .002-.07.071 0 .487.278.972.348 1.32.278.346 0 .833-.07 1.32-.416a.092.092 0 0 1 .05-.029zm.723 2.511c.058.013.06.106.06.158-.209.903-.973 1.666-1.946 1.666a2.167 2.167 0 0 1-2.084-1.528c-.07-.07 0-.138.138-.138.695.347 1.39.416 1.877.416.486 0 1.18-.14 1.875-.556.035-.017.06-.022.08-.018zm.597 3.018c.049-.013.087.09.087.195-.278 1.181-1.25 2.085-2.5 2.155-1.251 0-2.293-.835-2.57-1.946 0-.139.068-.278.207-.209.834.486 1.737.556 2.362.556s1.529-.208 2.362-.694c.018-.035.036-.053.052-.057z"},child:[]}]})(i)}function P4e(i){return U({attr:{version:"1.2",baseProfile:"tiny",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13 5l.855 3.42 3.389-.971 1.501 2.6-2.535 2.449 2.535 2.451-1.5 2.6-3.39-.971-.855 3.422h-3l-.855-3.422-3.39.971-1.501-2.6 2.535-2.451-2.534-2.449 1.5-2.6 3.39.971.855-3.42h3m0-2h-3c-.918 0-1.718.625-1.939 1.516l-.354 1.412-1.4-.4c-.184-.053-.369-.078-.552-.078-.7 0-1.368.37-1.731 1l-1.5 2.6c-.459.796-.317 1.802.342 2.438l1.047 1.011-1.048 1.015c-.66.637-.802 1.643-.343 2.438l1.502 2.6c.363.631 1.031 1 1.731 1 .183 0 .368-.025.552-.076l1.399-.401.354 1.415c.222.885 1.022 1.51 1.94 1.51h3c.918 0 1.718-.625 1.939-1.516l.354-1.414 1.399.4c.184.053.369.077.552.077.7 0 1.368-.37 1.731-1l1.5-2.6c.459-.796.317-1.8-.342-2.438l-1.047-1.013 1.047-1.013c.66-.637.801-1.644.342-2.438l-1.5-2.6c-.365-.631-1.031-1-1.732-1-.184 0-.368.025-.551.076l-1.4.401-.354-1.413c-.22-.884-1.02-1.509-1.938-1.509zM11.5 10.5c1.104 0 2 .895 2 2 0 1.104-.896 2-2 2s-2-.896-2-2c0-1.105.896-2 2-2m0-1c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3z"},child:[]}]})(i)}function W4e(i){return U({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M7.707 17.707 13.414 12 7.707 6.293 6.293 7.707 10.586 12l-4.293 4.293zM15 6h2v12h-2z"},child:[]}]})(i)}function R4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M327.467 19.992c.748 14.94 2.317 51.268 2.59 98.76 3.474-.286 6.557-.381 9.72 1.08 18.04 8.345 27.243 29.326 27.026 50.506-.217 21.18-11.283 44.136-36.104 54.307a41.62 41.62 0 0 1-2.486.923c-3.408 80.504-12.307 166.37-33.754 225.5-6.876 15.831-17.029 29.217-26.828 40.94l55.27.422c20.676-12.19 32.041-27.395 36.32-46.407l17.558 3.954c-3.67 16.312-11.99 30.662-24.511 42.677l143.052 1.094c-5.13-14.524-16.16-46.501-20.357-70.217C451.89 293.171 450.15 45 450.025 19.992zM18.279 38.984l.881 18.725c17.856 12.047 32.035 23.91 45.969 35.527 12.887-11.156 2.404-29.725-5.82-39.091-13.668-5.346-27.335-10.467-41.03-15.16zM86.723 65.13c4.77 14.56 3.347 29.656-7.477 39.746 24.105 19.479 50.832 38.151 97.1 55.635 13.836-22.588 12.08-43.852-3.338-60.739-29.03-10.9-57.703-22.997-86.285-34.642zm-31.721 42.988V400h17.996V122.723c-6.187-4.856-12.114-9.73-17.996-14.606zm145.264 1.434c3.253 8.283 4.54 16.754 3.982 25.043-.765 11.35-4.673 22.135-10.545 32.095 16.926 5.691 36.192 11.248 58.451 16.655l2.604.633 1.834 1.953c9.223 9.826 22.535 17.206 35.469 21.006 12.933 3.8 25.473 3.655 31.814 1.056 18.024-7.385 24.773-22.363 24.932-37.84.152-14.822-7.069-28.554-15.479-33.306-45.88-1.699-89.948-12.607-133.062-27.295zm-33.264 66.476V400h17.996V182.605a502.784 502.784 0 0 1-17.996-6.578zM32 419.002v17.996h176v-17.996z"},child:[]}]})(i)}function J4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.7 21.04l-194.4.41L21.04 159.3l.41 194.4L159.3 491l194.4-.4L491 352.7l-.4-194.4L352.7 21.04zm-8 19.66l126.2 125.7.4 178.3-123.1 123.6-2.6 2.6-178.3.4L41.08 345.6l-.38-178.3L166.4 41.08l178.3-.38zm-7.5 18.01l-163.3.34L58.71 174.8l.34 163.3L174.8 453.3l163.3-.3 115.2-115.8-.3-163.3L337.2 58.71zM108.4 210.4c5.3 0 10.8.5 16.4 1.3 5.7.8 11.5 2 17.5 3.6v20.5c-5.3-2.4-10.5-4.2-15.6-5.4-5.1-1.2-9.9-1.8-14.4-1.8-6 0-10.4.8-13.25 2.5-2.87 1.6-4.3 4.2-4.3 7.7 0 2.6.96 4.6 2.87 6.1 1.95 1.4 5.48 2.7 10.58 3.7l10.6 2.1c10.8 2.2 18.5 5.5 23.1 9.9 4.5 4.5 6.8 10.8 6.8 18.9 0 10.7-3.2 18.7-9.5 24-6.4 5.2-16.1 7.8-29.2 7.8-6.1 0-12.3-.6-18.51-1.8-6.2-1.1-12.41-2.9-18.61-5.2v-21.1c6.2 3.3 12.19 5.8 17.96 7.5 5.82 1.6 11.46 2.4 16.76 2.4 5.5 0 9.7-.9 12.6-2.7 2.9-1.8 4.4-4.4 4.4-7.8 0-3.1-1-5.4-3-7.1-2-1.6-5.9-3.1-11.8-4.4l-9.7-2.1c-9.73-2.1-16.85-5.4-21.37-10-4.47-4.5-6.7-10.7-6.7-18.4 0-9.7 3.12-17.1 9.37-22.3 6.25-5.3 15.24-7.9 27-7.9zm187.7 0c15.6 0 27.8 4.5 36.7 13.5 8.9 8.9 13.3 21.2 13.3 37 0 15.7-4.4 28-13.3 37-8.9 8.9-21.1 13.4-36.7 13.4-15.6 0-27.8-4.5-36.7-13.4-8.9-9-13.3-21.3-13.3-37 0-15.8 4.4-28.1 13.3-37 8.9-9 21.1-13.5 36.7-13.5zm-141.9 1.8h89.6v18.9h-32.2v78.3h-25.1v-78.3h-32.3v-18.9zm205.8 0h41.6c12.3 0 21.8 2.8 28.4 8.3 6.7 5.4 10 13.2 10 23.4s-3.3 18.1-10 23.6c-6.6 5.4-16.1 8.2-28.4 8.2H385v33.7h-25v-97.2zm-63.9 16.4c-7.7 0-13.6 2.8-17.8 8.5-4.2 5.6-6.3 13.6-6.3 23.8 0 10.2 2.1 18.1 6.3 23.8 4.2 5.6 10.1 8.4 17.8 8.4 7.7 0 13.6-2.8 17.8-8.4 4.2-5.7 6.3-13.6 6.3-23.8 0-10.2-2.1-18.2-6.3-23.8-4.2-5.7-10.1-8.5-17.8-8.5zm88.9 1.8v27.1h13.9c4.9 0 8.6-1.2 11.3-3.5 2.6-2.4 3.9-5.8 3.9-10.1s-1.3-7.7-3.9-10c-2.7-2.4-6.4-3.5-11.3-3.5H385z"},child:[]}]})(i)}function B4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 54.28c-124.603 0-226 101.398-226 226 0 47.864 14.975 92.293 40.465 128.876l29.79-19.86c-17.188-24.545-28.708-53.362-32.696-84.577H96v-18H66.115c-.07-2.14-.115-4.284-.115-6.44 0-45.378 15.816-86.97 42.236-119.598l17.4 17.4 12.727-12.727-18.133-18.132C152.735 114.057 197.335 92.8 247 90.498v29.22h18V90.5c49.665 2.302 94.265 23.56 126.77 56.725l-18.133 18.132 12.726 12.727 17.4-17.4c26.42 32.63 42.237 74.22 42.237 119.6 0 2.154-.044 4.3-.115 6.437H416v18h28.44c-3.987 31.214-15.507 60.03-32.694 84.575l29.79 19.86C467.025 372.574 482 328.146 482 280.282c0-124.602-101.397-226-226-226zm15.83 66.23a144 160 0 0 1 74.608 100.062l49.966-17.568a160 160 0 0 0-4.3-7.012l-5.135 5.153-30.368-30.29-5.76-5.746 7.85-7.874a160 160 0 0 0-86.862-36.726zm156.15 89.844l-175.332 60.6C240.505 272.618 231 283.155 231 295.72c0 13.7 11.3 25 25 25 6.77 0 12.95-2.764 17.473-7.208L427.98 210.354zm-16.513 32.322l-60.713 40.72a144 160 0 0 1-56.6 108.323h76.057a160 160 0 0 0 39.763-68.572H398.48v-52.515h17.022a160 160 0 0 0-4.035-27.957zM128 421.72v36h256v-36H128z"},child:[]}]})(i)}function aa(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M140 29.92c-31.4 0-59.89 3.25-79.89 8.25-9.9 2.5-17.8 5.51-22.4 8.25-3.2 1.87-4.1 3.15-4.5 3.58.4.43 1.3 1.71 4.5 3.58 4.6 2.74 12.5 5.75 22.4 8.25 20 5 48.49 8.25 79.89 8.25h5.7c5.3-2 11.1-3.78 17.6-5.4 20.3-5.08 46.5-8.42 75.8-9.36 1.2-.57 2.3-1.14 3.2-1.7 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zm232 0c-31.4 0-59.9 3.25-79.8 8.25-10 2.5-17.9 5.51-22.5 8.25-3.1 1.87-4.1 3.15-4.5 3.58.4.43 1.4 1.71 4.5 3.58.9.56 2 1.13 3.2 1.7 29.3.94 55.5 4.28 75.8 9.36 6.5 1.62 12.3 3.4 17.6 5.4h5.7c31.4 0 59.9-3.25 79.8-8.25 10-2.5 17.9-5.51 22.5-8.25 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zM33.01 71.44V369.9c0 4.3 1.8 8 6.8 12.3 5 4.3 13.1 8.5 23.3 11.9 15.3 5.1 35 8.5 55.89 9.8V278.3l-16.5 28.6-7.79-4.5c-27.4-15.9-44.3-45.3-44.4-77v-9h52.59c-.6 2.6-.9 5.3-.9 8.1 0 13.1 6.8 24.8 17 31.7v-63.4c-1.9 1.3-3.6 2.7-5.2 4.2l-25.99-45.1 7.8-4.5c7.49-4.2 15.29-7.3 23.39-9.3V87.61c-24.19-1.08-45.99-4.01-63.19-8.32-8.9-2.21-16.5-4.76-22.8-7.85zm445.99 0c-6.3 3.09-14 5.63-22.8 7.84-17.2 4.31-39 7.24-63.2 8.32v50.6c8.1 2 16 5.1 23.4 9.3l7.7 4.5-4.4 7.8-21.5 37.2c-1.6-1.5-3.3-2.9-5.2-4.2v63.4c10.2-6.9 17-18.6 17-31.7 0-2.8-.3-5.5-.9-8.1h50.8v9c0 31.8-17 61.1-44.4 77l-7.8 4.5-14.7-25.5v122.5c20.9-1.3 40.7-4.7 55.9-9.8 10.2-3.4 18.3-7.6 23.3-11.9 5-4.3 6.8-8 6.8-12.3zM256 73c-34.7 0-66.2 3.57-88.3 9.1-11.1 2.77-19.8 6.09-25.1 9.19-4.3 2.58-5.3 4.42-5.5 4.71.2.29 1.2 2.12 5.5 4.7 5.3 3.1 14 6.4 25.1 9.2 22.1 5.5 53.6 9.1 88.3 9.1 34.7 0 66.2-3.6 88.3-9.1 11.1-2.8 19.8-6.1 25.1-9.2 4.3-2.58 5.3-4.41 5.5-4.7-.2-.29-1.2-2.13-5.5-4.71-5.3-3.1-14-6.42-25.1-9.19-22.1-5.53-53.6-9.1-88.3-9.1zm118.9 23c.1.1.1.1.1 0s0-.1-.1 0zm-237.8 0c-.1-.1-.1-.1-.1 0s0 .1.1 0zm-.1 22.1V448c0 5 2.2 9.3 7.9 14.2 5.6 4.8 14.7 9.5 25.9 13.3 22.6 7.5 54 11.5 85.2 11.5 31.2 0 62.6-4 85.2-11.5 11.2-3.8 20.3-8.5 25.9-13.3 5.7-4.9 7.9-9.2 7.9-14.2V118.1c-7.2 3.7-16 6.6-26.3 9.3-24.2 6-56.7 9.6-92.7 9.6s-68.5-3.6-92.7-9.6c-10.3-2.7-19.1-5.6-26.3-9.3zM256 191c16.8 0 33.5 4.4 48.5 13l7.8 4.5-4.5 7.8-24.1 41.6c-7.3-6.7-17-10.9-27.7-10.9s-20.4 4.2-27.7 10.9l-28.6-49.4 7.8-4.5c15-8.7 31.7-13 48.5-13zm0 74c12.8 0 23 10.2 23 23s-10.2 23-23 23-23-10.2-23-23 10.2-23 23-23zm-98 15h57.8c-.5 2.6-.8 5.3-.8 8 0 18.1 12 33.7 28.5 39l-29.2 50.5-7.8-4.5c-30-17.3-48.5-49.4-48.5-84zm138.2 0H352v9c0 34.6-18.5 66.7-48.5 84l-7.8 4.5-28.8-50c17.3-4.8 30.1-20.8 30.1-39.5 0-2.7-.3-5.4-.8-8z"},child:[]}]})(i)}function G4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M288.3 13.4c-12.3-.01-23 6.49-27.3 15.31l-2.9 5.95-6.6-1.01c-5.5-.85-11.3-1.32-17.1-1.32-18.8 0-35.7 4.5-47.3 11.14-11.5 6.64-16.9 14.59-16.9 22 0 7.42 5.4 15.37 16.9 22 11.6 6.64 28.5 11.13 47.3 11.13 7.5-.02 14.9-.74 21.8-2.13l6.3-1.23 3.2 5.46c5.6 9.2 23.7 18.2 44.7 18.2 13.9 0 26.4-3.6 34.8-8.8 8.4-5.2 12.2-11.23 12.2-16.9 0-5.09-3-10.48-10-15.44-6.9-4.97-17.6-8.87-30-9.95l-18.3-1.59 12.5-13.49c4.1-4.41 6.1-9.6 6.1-14.87 0-12.88-12.4-24.46-29.4-24.46zM152.2 65.46C84.8 102.3 39 173.9 39 256c0 32.1 7 62.6 19.54 90 5.95-7.9 10.48-13.4 12.67-16C62.05 307.2 57 282.2 57 256c0-74 40.27-138.5 100.1-172.78-3.1-5.39-4.9-11.34-4.9-17.74v-.02zm210.7 1.75c7.5 6.93 12.5 15.9 12.5 25.99 0 1.14-.1 2.27-.2 3.38C423.7 132.9 455 190.7 455 256c0 23.7-4.2 46.5-11.8 67.6l18.3 2.2c7.4-21.9 11.5-45.4 11.5-69.8 0-80.8-44.4-151.5-110.1-188.79zm58.6 270.49c-11.1.2-23 1.1-35.9 3.1l-.5.1-.5.1c-25.8 7.3-37.1 15.2-46.4 24.7l-2.2 2.2-.3 3.1c-3.4 29.6-5.8 60 0 91.8l1.3 6.8 6.8.6c30.6 2.6 58.7 1.4 86.2 0l1-.1.9-.2c18.5-5.2 34.4-12.8 46.4-24.6l1.7-1.6.6-2.2c10-33.4 3.4-63.8.4-92.7l-.8-7.4-7.3-.7c-16.2-1.5-32.8-3.2-51.4-3zM79.62 348.2c-4.94 6.1-11.43 14.5-18.58 25.6-12.29 18.9-22.53 42.4-20.51 54.9 1.43 8.8 6.97 19.6 14.51 27.6 7.54 7.9 16.69 12.8 24.58 12.8 7.87 0 17.03-4.9 24.58-12.8 7.5-8 13.1-18.8 14.5-27.6 2-12.5-8.2-36-20.5-54.9-7.15-11-13.64-19.5-18.58-25.6zM427 355.7c1.7 0 3.3 0 5 .1 5.4.1 10.7.4 16 .8-5.9 3.4-12.1 6.8-19.5 9.9l-2.4.2c-19.5 1.4-37.7.3-55.4-2 4.7-2 10.5-4 18.3-6.2 13.8-2.2 26.3-2.9 38-2.8zm38 11.6c2.8 22.9 5 44.5-1 66.6-7 6.3-16 11.4-27 15.4 3-22.5 2-44.8-.5-66.6 11.3-5 20.2-10.2 28.5-15.4zm-112.2 13.1c20.7 3.2 42.3 5.4 65.8 4.5 2.5 23 3.5 45.6-.4 67.8-21.5 1-43.1 1.5-65.8-.1-3.5-24-2.2-47.9.4-72.2zm-216.4 34.7c.9 5.5 1 11 .1 16.4-.3 1.6-.6 3.3-1 4.9C170 459.5 211.4 473 256 473c21.6 0 42.5-3.2 62.3-9.1l-2-18.2c-19 6-39.3 9.3-60.3 9.3-44.9 0-86.3-14.8-119.6-39.9z"},child:[]}]})(i)}function F4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M33.125 19.406L135.5 128.22l81-23.157 18.72-5.344-7.564 17.936-46.125 109.78 134.282-70 26.157-13.655L328.436 170 256.5 309.25l91.25-57.125 22.97-14.375-9.22 25.47-34.625 95.624 71-36.375 21.188-10.845L410.906 334l-33.937 93.063 45.124-6.688 4.53-.656 3.313 3.155 64.313 61.47-30.5-80.5 23.313-46.908-72.5 39.532 51.062-141.158-91.188 47.47 72.344-142.813-128.217 82.81L421.875 70.063 239.03 168.69l30.44-99.563-103.845 25.25-132.5-74.97zM18.155 30.78l77.876 108.25-31.124 75.532 94.125-46.78-98.905 166.812 190.25-99.656-101.03 185.406 140.25-79.063-46.94 102.22 106.5-53-45.655 92.28 86.5-14.467 93.47 31.562-63.158-60.344-56.125 8.314-15.53 2.312 5.374-14.75 31.158-85.437-70.907 36.31-21.124 10.814 8.094-22.313 33.47-92.436-97.22 60.875-28.938 18.092L224.22 331l74.06-143.344-131.06 68.313-22.97 12 10.03-23.908 48.626-115.687-67.75 19.375-5.5 1.563-3.875-4.157L18.157 30.78z"},child:[]}]})(i)}function H4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M20.127 52.803v58.986L250.46 245.153c26.367-28.823 70.087-36.533 105.313-16.195 35.29 20.374 50.465 62.207 38.567 99.503l101.648 58.855-64.728-74.65 35.638-37.352-57.27-7.687 84.72-86.92-125.71 33.186 12.995-120.208-66.578 96.363-27.448-80.593-16.353 88.77L20.127 52.803zm0 105.12l-.008.018.007.005v-.02zm0 .022l-.002 87.582 155.344 89.95-89.94 33.287h135.493l-63.658 99.87 116.22-70.083 15.77 85.852 38.543-80.01 63.66 87.018-5.853-87.047 90.54 17.268-102.4-59.198c-26.546 26.964-68.89 33.744-103.183 13.945-34.322-19.816-49.62-59.928-39.49-96.424L20.127 157.945zm316.6 119.442c-.938-.003-1.874.027-2.805.092-12.42.86-24.164 7.707-30.9 19.375-10.78 18.67-4.455 42.27 14.214 53.047 18.67 10.78 42.27 4.455 53.047-14.214 10.78-18.67 4.454-42.27-14.215-53.047-6.125-3.536-12.78-5.23-19.34-5.253z"},child:[]}]})(i)}function V4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 32l-64 96 80 16-16 80 64-96-80-16 16-80zm-96 217c-1.9 0-9.8 3-15.8 6.7-2.8 1.7-5.3 3.5-7.2 4.8v119c1.9 1.3 4.4 3.1 7.2 4.8 6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 5.9-3.7 10.6-7.3 10.6-7.3l2.5-2H201V265h-12.1l-2.5-2s-4.7-3.6-10.6-7.3c-6-3.7-13.9-6.7-15.8-6.7zm192 0c-1.9 0-9.8 3-15.8 6.7-5.9 3.7-10.6 7.3-10.6 7.3l-2.5 2H311v110h12.1l2.5 2s4.7 3.6 10.6 7.3c6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 2.8-1.7 5.3-3.5 7.2-4.8v-119c-1.9-1.3-4.4-3.1-7.2-4.8-6-3.7-13.9-6.7-15.8-6.7zm-133 16v110h14V265h-14zm32 0v110h42V265h-42zM95.5 311c-18.8 0-36.6 9.2-49.94 22.7C32.22 347.1 23 365 23 384v106h18V384c0-13 6.78-27.1 17.32-37.7C68.85 335.8 82.8 329 95.5 329H119v-18H95.5zm297.5 0v18h22.9c13.1 0 27.1 6.8 37.7 17.4C464.2 357 471 371 471 384v106h18V384c0-19-9.2-37-22.7-50.4-13.4-13.4-31.4-22.6-50.4-22.6H393z"},child:[]}]})(i)}function Z4e(i){return U({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M376 211H256V16L136 301h120v195z"},child:[]}]})(i)}function X4e(i){return U({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M18.36 6.64a9 9 0 1 1-12.73 0"},child:[]},{tag:"line",attr:{x1:"12",y1:"2",x2:"12",y2:"12"},child:[]}]})(i)}function K4e(i){return U({attr:{fill:"none",viewBox:"0 0 24 24",strokeWidth:"2",stroke:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},child:[]}]})(i)}function q4e(i){return U({attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M6 0l-6 8h6l-4 8 14-10h-8l6-6z"},child:[]}]})(i)}const yge={SET:x0e,WORKING:qn,UNREACH:ea,LOWBAT:Kn,MAINTAIN:K0e,ERROR:i4e,DIRECTION:q0e,CONNECTED:ea,ACTUAL:P4e,SECOND:W4e,PRESS_LONG:Z0e,PRESS:V0e,MUTE:v0e,ACCURACY:H4e,RADIUS:O0e,ELEVATION:S0e,LATITUDE:f0e,LONGITUDE:p0e,GPS:r4e,ON_ACTUAL:Hn,ON_SET:Hn,OPEN:H0e,STOP:J4e,WATER_ALARM:sa,WASTE_ALARM:aa,PAUSE:m0e,STATE:G4e,BATTERY:Kn,WASTE:aa,WATER:sa,WORK_MODE:qn,MODE:o4e,POWER:E0e,BOOST:$4e,HUMIDITY:l4e,TEMPERATURE:c4e,BRIGHTNESS:L4e,MOTION:W0e,FIRE:N4e,WINDOW:Lu,SMOKE:u4e,SWING:R4e,SPEED:B4e,DIMMER:K4e,ON:X4e,COLOR_TEMP:b0e,ELECTRIC_POWER:q4e,CURRENT:Z4e,VOLTAGE:V4e,CONSUMPTION:b4e,FREQUENCY:F4e,HUE:g4e};class gu extends n.Component{static generateFile(e,t){const s=window.document.createElement("a");s.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),s.setAttribute("download",e),s.style.display="none",window.document.body.appendChild(s),s.click(),window.document.body.removeChild(s)}handleFileSelect=e=>{const t=e.target,s=t==null?void 0:t.files;if(!s||!s.length){console.error("No files found. Please report to developers");return}const r=s[0];if(r){const o=new window.FileReader;o.onload=()=>{var a;const M=((a=o.result)==null?void 0:a.toString())||"";try{const u=JSON.parse(M);u.native&&u.common?u.common.name!==this.props.common.name?this.props.onError&&this.props.onError(D.t("ra_otherConfig",u.common.name)):this.props.onLoad&&this.props.onLoad(u.native):this.props.onError&&this.props.onError(D.t("ra_invalidConfig"))}catch(u){this.props.onError&&this.props.onError(u==null?void 0:u.toString())}},o.readAsText(r)}else alert("Failed to open JSON File")};download(){const e={_id:`system.adapter.${this.props.common.name}.${this.props.instance}`,common:JSON.parse(JSON.stringify(this.props.common)),native:this.props.native};e.common.news&&delete e.common.news,e.common.titleLang&&delete e.common.titleLang,e.common.desc&&delete e.common.desc,gu.generateFile(`${e._id}.json`,e)}upload(){const e=window.document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",this.handleFileSelect,!1),e.click()}render(){return n.createElement("div",{className:this.props.className,style:this.props.style},this.props.common.icon?n.createElement(xe,{src:this.props.common.icon,style:{padding:8,width:64},alt:"logo"}):null,this.props.common.readme?n.createElement(Ct,{size:"small",color:"primary","aria-label":"Help",style:{marginRight:5,marginTop:5,float:"right"},onClick:()=>{const e=window.open(this.props.common.readme,"_blank");e==null||e.focus()}},n.createElement(Sl,null)):null,n.createElement(Ct,{size:"small",color:"primary","aria-label":"Load config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Load configuration from file"),onClick:()=>this.upload()},n.createElement(xl,null)),n.createElement(Ct,{size:"small",color:"primary","aria-label":"Save config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Save configuration to file"),onClick:()=>this.download()},n.createElement(kl,null)))}}class Tu{static text2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static getTitle(e){const t=Tu.extractHeader(e);let s=t.body;const r=t.header;if(!r.title){s=s.replace(/{[^}]*}/g,""),s=s.trim();const o=s.replace(/\r/g,"").split(` -`);for(let M=0;M{if(!M.trim())return;const a=M.indexOf(":");if(a!==-1){const u=M.substring(0,a).trim();let l=M.substring(a+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[u]=!0:l==="false"?t[u]=!1:parseFloat(l).toString()===l?t[u]=parseFloat(l):t[u]=l}else t[M.trim()]=!0}),e=e.substring(s+7))}return{header:t,body:e}}static removeDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(s=>e=e.replace(s,"")),e}static onCopy(e,t){Hc(t),e&&e.stopPropagation(),e&&e.preventDefault()}}function eLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function yu(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 320 320",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("g",{fill:"currentColor"},n.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"248",cx:"160",fill:"none",strokeWidth:"15"}),n.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function Ts(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"}))}function Du(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 320 320",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("g",{fill:"currentColor"},n.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),n.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("rect",{height:"27",width:"50",y:"140.83068",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),n.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"251",cx:"241",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),n.createElement("line",{y2:"200.94531",x2:"240.5",y1:"45.94531",x1:"240.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("rect",{height:"27",width:"50",y:"78.7979",x:"214.5",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),n.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"84",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),n.createElement("line",{y2:"201.94531",x2:"83.5",y1:"46.94531",x1:"83.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),n.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"57.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function tLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",onClick:e=>i.onClick&&i.onClick(e),width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}))}function sLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}),n.createElement("path",{fill:"currentColor",stroke:"null",d:"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z"}))}function iLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function Xs(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 320 320",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("rect",{fill:"none",rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor"}),n.createElement("ellipse",{fill:"none",ry:"54",rx:"54",cy:"160",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor"}))}function rLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 24 24",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",stroke:"currentColor",d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"}))}const Yr={root:{width:"100%",height:"100%"},overflowHidden:{overflow:"hidden"},container:{height:"100%"}};function oLe(i){var e;return n.createElement(Ja,{elevation:Number.isNaN(i.elevation)?1:i.elevation,style:{...Yr.root,...((e=i.styles)==null?void 0:e.root)||void 0,...i.overflow!=="visible"?Yr.overflowHidden:void 0},onKeyDown:i.onKeyDown,tabIndex:i.tabIndex},n.createElement(Ut,{container:!0,direction:"column",wrap:"nowrap",sx:Yr.container},i.children))}const ca={root:{height:"100%",overflow:"hidden"},overflowAuto:{overflow:"auto"}},MLe=n.forwardRef(function(e,t){return n.createElement(Ut,{sx:{...ca.root,...(e==null?void 0:e.style)||void 0,...e.overflow==="auto"?ca.overflowAuto:void 0},ref:t},e.children)});function nLe(i){return n.createElement(Ut,{container:!0,alignItems:"center"},i.children)}const Is=24,Ye=32,du=i=>i==="dark"?"#62ff25":"#37c400",zu=i=>i==="dark"?"#ee56ff":"#a204b4",aLe=i=>i==="dark"?"#fff46e":"#b89101",hu=i=>"#ff6d69",Iu=i=>"#5773ff",cLe=["0_userdata.0.","alias.0."],bt={headerCellInput:{width:"calc(100% - 5px)",height:Ye,pt:0,"& .itemIcon":{verticalAlign:"middle",width:Is,height:Is,display:"inline-block"}},headerCellSelectItem:{"& .itemIcon":{width:Is,height:Is,mr:"5px",display:"inline-block"}},selectNone:{opacity:.5},selectClearButton:{position:"absolute",top:0,right:0,borderRadius:5,backgroundColor:"background.default"},cellIdTooltipLink:{color:"#7ec2fd","&:hover":{color:"#7ec2fd"},"&:visited":{color:"#7ec2fd"}},cellIdTooltip:{fontSize:14}};function uLe(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 436 436",style:i==null?void 0:i.style,width:"24",height:"24",className:"admin-button"},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),n.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function ua(i){i=(i||"").toString();const e=i[0]==="*",t=i[i.length-1]==="*";return i=i.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+i+(t?"":"$")}function lLe(i,e){const t=[];for(let s=0;s{if(r==null)return;const M=typeof r=="object";if(t&&M&&typeof r.en=="string"&&typeof r.de=="string"){s[o]=r.en;return}s[o]=M?jo(r,e,t):r}):NLe(i,(s,r,o)=>{if(r==null||e.includes(o))return;const M=typeof r=="object";if(t&&M&&typeof r.en=="string"&&typeof r.de=="string"){s[o]=r.en;return}s[o]=M?jo(r,e,t):r})}function la(i,e,t){const s=document.createElement("a"),r=[];t.excludeSystemRepositories&&r.push("system.repositories");const o=r.length>0||t.excludeTranslations?jo(e,r,t.excludeTranslations):e,M=t.beautify?JSON.stringify(o,null,2):JSON.stringify(o);s.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(M)}`),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}class LLe extends ze{hasIcons;timer=null;constructor(e){var t;super(e),this.state={value:e.initialValue||[]},this.hasIcons=!!((t=e.values)!=null&&t.find(s=>s.icon))}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){var e;return n.createElement("div",{style:{position:"relative"}},n.createElement(Xe,{variant:"standard",key:this.props.name,sx:bt.headerCellInput,className:"no-underline",multiple:!0,renderValue:t=>t!=null&&t.length?t.map(s=>{const r=this.props.values.find(u=>typeof u=="object"?u.value===s:u===s);let o,M,a;return typeof r=="object"?(o=r.value,M=r.name,a=r.icon):(o=r,M=r),n.createElement(W,{component:"span",sx:bt.headerCellSelectItem,key:o},a||(this.hasIcons?n.createElement("div",{className:"itemIcon"}):null),M)}):this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:t=>{let s=t.target.value;if(this.state.value[0]==="_"&&s.includes("_")&&s.length>1){const r=s.indexOf("_");r!==-1&&s.splice(r,1)}else this.state.value[0]!=="_"&&s.includes("_")&&(s=["_"]);s.includes("")&&(s=[]),this.setState({value:s},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,s)},400)})},onClose:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},inputProps:{name:this.props.name,id:this.props.name},displayEmpty:!0},n.createElement(te,{key:"empty",value:""},n.createElement("span",{style:bt.selectNone},this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`])),(e=this.props.values)==null?void 0:e.map(t=>{let s,r,o;return typeof t=="object"?(s=t.value,r=t.name,o=t.icon):(s=t,r=t),n.createElement(te,{sx:bt.headerCellSelectItem,key:s,value:s},o||(this.hasIcons?n.createElement("div",{className:"itemIcon"}):null),r)})),this.state.value.length?n.createElement(W,{component:"div",sx:bt.selectClearButton},n.createElement(P,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:[]},()=>this.props.onChange(this.props.name,void 0))}},n.createElement(ge,null))):null)}}class jLe extends ze{timer=null;constructor(e){super(e),this.state={value:e.initialValue||""}}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){return n.createElement(wt,{sx:this.props.styles,key:this.props.name,title:this.props.t("ra_You can use * as wildcard"),margin:"dense"},n.createElement(vt,{classes:{underline:"no-underline"},id:this.props.name,placeholder:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:e=>{const t=e.target.value;this.setState({value:t},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,t)},400)})},onBlur:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},autoComplete:"off"}),this.state.value?n.createElement("div",{style:{position:"absolute",right:0}},n.createElement(P,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:""},()=>this.props.onChange(this.props.name,void 0))}},n.createElement(ge,null))):null)}}function oi(i,e,t,s){if(t||=0,s===void 0&&(s=i.length-1,!s))return i[0]===e;const r=Math.floor((t+s)/2);return e===i[r]?!0:s-1===t?i[t]===e||i[s]===e:e>i[r]?oi(i,e,r,s):ek.toLowerCase())),(L=e.custom)!=null&&L.length&&(r.custom=e.custom.map(k=>k.toLowerCase())),(j=e.role)!=null&&j.length&&(r.role=e.role.map(k=>k.toLowerCase())),(g=e.room)!=null&&g.length&&(r.room=[],e.room.forEach(k=>{var Y,J;r.room=r.room.concat(((J=(Y=s[k])==null?void 0:Y.common)==null?void 0:J.members)||[])})),(y=e.func)!=null&&y.length&&(r.func=[],e.func.forEach(k=>{var Y,J;r.func=r.func.concat(((J=(Y=s[k])==null?void 0:Y.common)==null?void 0:J.members)||[])}))}const N=i.data;if(N!=null&&N.id){const k=(d=N.obj)==null?void 0:d.common;if(M){if(M.type&&(typeof M.type=="string"?(!N.obj||M.type!==N.obj.type)&&(l=!0):Array.isArray(M.type)&&(!N.obj||!M.type.includes(N.obj.type))&&(l=!0)),!l&&((I=M.common)!=null&&I.type)&&(k!=null&&k.type?typeof M.common.type=="string"?M.common.type!==k.type&&(l=!0):Array.isArray(M.common.type)&&(M.common.type.includes(k.type)||(l=!0)):l=!0),!l&&((m=M.common)!=null&&m.role)&&(k!=null&&k.role?typeof M.common.role=="string"?k.role.startsWith(M.common.role)&&(l=!0):Array.isArray(M.common.role)&&(M.common.role.find(Y=>k.role.startsWith(Y))||(l=!0)):l=!0),!l&&((w=M.common)==null?void 0:w.custom)==="_"&&(k!=null&&k.custom))l=!0;else if(!l&&((O=M.common)!=null&&O.custom)&&((A=M.common)==null?void 0:A.custom)!=="_"){const Y=M.common.custom;if(!(k!=null&&k.custom))l=!0;else if(Y==="_dataSources")Object.keys(k.custom).find(J=>J.startsWith("history.")||J.startsWith("sql.")||J.startsWith("influxdb."))||(l=!0);else if(Array.isArray(Y)){const J=Object.keys(k.custom);Y.find(Le=>J.find(Je=>Je.startsWith(Le)))&&(l=!0)}else Y!==!0&&!Object.keys(k.custom).find(J=>J.startsWith(Y))&&(l=!0)}}!l&&!e.expertMode&&(l=N.id==="system"||N.id==="enum"||N.id.startsWith("system.")||N.id.startsWith("enum.")||N.id.startsWith("_design/")||N.id.endsWith(".admin")||!!(k!=null&&k.expert)),!l&&r.id&&(N.fID===void 0&&(N.fID=N.id.toLowerCase()),l=!N.fID.includes(r.id)),!l&&r.idRx&&(l=!r.idRx.test(N.id)),!l&&r.name&&(k?(N.fName===void 0&&(N.fName=Re(k.name,t)||"",N.fName=N.fName.toLowerCase()),l=!N.fName.includes(r.name)):l=!0),!l&&r.nameRx&&k&&(N.fName===void 0&&(N.fName=Re(k.name,t)||"",N.fName=N.fName.toLowerCase()),l=!r.nameRx.test(N.fName)),!l&&((h=e.role)!=null&&h.length)&&k&&(l=!(typeof k.role=="string"&&r.role.find(Y=>k.role.startsWith(Y)))),!l&&((p=r.room)!=null&&p.length)&&(l=!r.room.find(Y=>Y===N.id||N.id.startsWith(`${Y}.`))),!l&&((S=r.func)!=null&&S.length)&&(l=!r.func.find(Y=>Y===N.id||N.id.startsWith(`${Y}.`))),!l&&((f=r.type)!=null&&f.length)&&(l=!(($=N.obj)!=null&&$.type&&r.type.includes(N.obj.type))),!l&&a&&(l=!((x=N.obj)!=null&&x.type&&a.includes(N.obj.type))),!l&&((Z=r.custom)!=null&&Z.length)&&(k?r.custom[0]==="_"?l=!!k.custom:k.custom?l=!r.custom.find(Y=>k.custom[Y]):l=!0:l=r.custom[0]!=="_")}return N.visible=!l,N.hasVisibleChildren=!1,i.children&&u<20&&i.children.forEach(k=>{go(k,e,t,s,r,o,M,a,u+1)&&(N.hasVisibleChildren=!0)}),N.sumVisibility=N.visible||N.hasVisibleChildren,o&&N.sumVisibility&&o.count++,N.id&&N.sumVisibility&&i.children&&i.children.forEach(k=>k.data.hasVisibleParent=!0),N.visible||N.hasVisibleChildren}function wu(i,e,t,s){var o;s||=[];const r=i.data;return r.sumVisibility&&(r.id&&t[r.id]&&t[r.id].type===e&&s.push(r.id),(o=i.children)==null||o.forEach(M=>wu(M,e,t,s))),s}function Na(i,e,t,s,r,o){let M;return e==="alias"||e==="alias.0"?M=n.createElement(Za,{className:"iconOwn",style:{color:zu(s)}}):e==="0_userdata"||e==="0_userdata.0"?M=n.createElement(Yl,{className:"iconOwn",style:{color:du(s)}}):e.startsWith("_design/")||e==="system"?M=n.createElement(Wi,{className:"iconOwn",style:{color:hu(s)}}):e==="system.adapter"?M=n.createElement(Wi,{className:"iconOwn",style:{color:Iu(s)}}):e==="system.group"?M=n.createElement(vo,{className:"iconOwn"}):e==="system.user"?M=n.createElement(Uo,{className:"iconOwn"}):e==="system.host"?M=n.createElement(bo,{className:"iconOwn"}):e.endsWith(".connection")||e.endsWith(".connected")?M=n.createElement(zs,{className:"iconOwn"}):e.endsWith(".info")?M=n.createElement($o,{className:"iconOwn"}):i[e]&&i[e].type==="meta"?M=n.createElement(tr,{className:"iconOwn"}):t<2&&i[`system.adapter.${e}`]&&(M=Xi(i,`system.adapter.${e}`,r,o)),M||null}function Cu(i,e){var t,s;return(s=(t=i==null?void 0:i.obj)==null?void 0:t.common)!=null&&s.desc&&Re(i.obj.common.desc,e)||null}function gLe(i,e){const t=Cu(i,e);return t!=null&&t.startsWith("http")?n.createElement(W,{component:"a",sx:bt.cellIdTooltipLink,href:t,target:"_blank",rel:"noreferrer"},t):n.createElement("span",{style:bt.cellIdTooltip},t||i.id||"")}function La(i,e){var N,c,L,j,g,y,d,I,m,w;const t=e.imagePrefix||".";let s=Object.keys(i);s.sort((O,A)=>O===A?0:(O=O.replace(/\./g,"!!!"),A=A.replace(/\./g,"!!!"),O>A?1:-1)),e.root&&(s=s.filter(O=>O===e.root||O.startsWith(`${e.root}.`)));let r=[],o="",M=0;const a={data:{name:"",id:""},children:[]},u={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:i,customs:["_"],enums:[],hasSomeCustoms:!1,aliasesMap:{}};let l=a;for(let O=0;Ox.role===$)?typeof $!="string"?console.warn(`Invalid role type "${typeof $}" in "${h._id}"`):u.roles.push({role:$,type:f.type}):A.startsWith("enum.rooms.")?(u.roomEnums.push(A),u.enums.push(A)):A.startsWith("enum.functions.")?(u.funcEnums.push(A),u.enums.push(A)):h.type==="enum"?u.enums.push(A):h.type==="instance"&&f&&(f.supportCustoms||(N=f.adminUI)!=null&&N.custom)&&(u.hasSomeCustoms=!0,u.customs.push(A.substring(15))),A.startsWith("alias.")&&((c=h.common.alias)!=null&&c.id))if(typeof h.common.alias.id=="string"){const x=h.common.alias.id;u.aliasesMap[x]?u.aliasesMap[x].includes(A)||u.aliasesMap[x].push(A):u.aliasesMap[x]=[A]}else{const x=h.common.alias.id.read;x&&(u.aliasesMap[x]?u.aliasesMap[x].includes(A)||u.aliasesMap[x].push(A):u.aliasesMap[x]=[A]);const Z=h.common.alias.id.write;Z&&(u.aliasesMap[Z]?u.aliasesMap[Z].includes(A)||u.aliasesMap[Z].push(A):u.aliasesMap[Z]=[A])}}u.ids.push(A);let S;do if(S=!1,!o||A.startsWith(`${o}.`)){if(p.length-M>1){let $=o;for(let x=M;xZ.data.name===p[x]));else{const Z={data:{name:p[x],parent:l,id:$,obj:i[$],level:x,icon:Na(i,$,x,e.themeType,e.lang,t),generated:!0}};l.children||=[],l.children.push(Z),l=Z,u.ids.push($)}}const f={data:{name:p[p.length-1],title:Re((L=h==null?void 0:h.common)==null?void 0:L.name,e.lang),obj:h,parent:l,icon:Xi(i,A,e.lang,t)||Na(i,A,0,e.themeType,e.lang,t),id:A,hasCustoms:!!((j=h.common)!=null&&j.custom&&Object.keys(h.common.custom).length),level:p.length-1,generated:!1,button:h.type==="state"&&!!((g=h.common)!=null&&g.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("button")&&((y=h.common)==null?void 0:y.write)!==!1,switch:h.type==="state"&&((d=h.common)==null?void 0:d.type)==="boolean"&&((I=h.common)==null?void 0:I.write)!==!1&&((m=h.common)==null?void 0:m.read)!==!1,url:!!((w=h.common)!=null&&w.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("url")}};l.children||=[],l.children.push(f),l=f,M=p.length,r=p,o=A}else{let f=0;for(;r[f]===p[f];)f++;if(f>0){let $=r.length;for(r=r.splice(0,f),M=f,o=r.join(".");$>f;)l.data.parent?l=l.data.parent:console.error(`Parent is null for ${A} ${o} ${r.join(".")}`),$--}else l=a,r=[],o="",M=0;S=!0}while(S)}return u.roomEnums.sort((O,A)=>{var S,f,$,x;const h=Re((f=(S=i[O])==null?void 0:S.common)==null?void 0:f.name,e.lang)||O.split(".").pop(),p=Re((x=($=i[A])==null?void 0:$.common)==null?void 0:x.name,e.lang)||A.split(".").pop();return h>p?1:h{var S,f,$,x;const h=Re((f=(S=i[O])==null?void 0:S.common)==null?void 0:f.name,e.lang)||O.split(".").pop(),p=Re((x=($=i[A])==null?void 0:$.common)==null?void 0:x.name,e.lang)||A.split(".").pop();return h>p?1:hO.role.localeCompare(A.role)),u.types.sort(),{info:u,root:a}}function Au(i,e,t,s,r){if(i.data.id===e)return i;if(t||(t=e.split("."),r=0,s=t[r]),!i.children&&i.data.id!==e)return null;let o;if(i.children)for(let M=0;Ms)break}return o?(r||=0,Au(o,e,t,`${s}.${t[r+1]}`,r+1)):null}function mu(i,e,t,s){var M,a;if(!e)return{rooms:[],per:!1};s||=[];for(const u of i.roomEnums){const l=(M=i.objects[u])==null?void 0:M.common;if(!l)continue;const N=Re(l.name,t);(a=l.members)!=null&&a.includes(e)&&!s.includes(N)&&s.push(N)}let r;const o=e.split(".");return o.pop(),e=o.join("."),i.objects[e]&&(r=s.length,mu(i,e,t,s)),{rooms:s,per:!r}}function ys(i,e,t,s){var r,o;if(!e)return[];s||=[];for(let M=0;M946681200&&l<9466812e5&&(l*=1e3),l=l&&new Date(l).toString();else if(a!=null&&a.role&&typeof a.role=="string"&&a.role.match(/^value\.duration/)){if(typeof l=="number"&&l>=0){const g=Math.floor(l/3600),y=Math.floor(l%3600/60),d=Math.floor(l%60);l=`${g.toString().padStart(2,"0")}:${y.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}`}else if(typeof l=="string"&&E.isStringInteger(l)){const g=parseInt(l,10);if(g>=0){const y=Math.floor(g/3600),d=Math.floor(g%3600/60),I=Math.floor(g%60);l=`${y.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}:${I.toString().padStart(2,"0")}`}}}else N==="number"?Number.isInteger(l)||(l=Math.round(l*1e8)/1e8,s&&(l=l.toString().replace(".",","))):N==="object"?l=JSON.stringify(l):N!=="string"?l=l.toString():l.startsWith("data:image/")&&(u="image"),typeof l!="string"&&(l=l.toString());const c={v:l};M&&M[l]!==void 0&&l!==M[l]&&(c.s=l,l=M[l],c.v=l),((j=c.v)==null?void 0:j.length)>40&&(c.c=c.v,c.v=`${c.v.substring(0,40)}...`),a!=null&&a.unit&&(c.u=a.unit);let L;if(i.full&&(typeof l=="string"&&l.length>100?L=[{t:r.value,v:`${l.substring(0,100)}...`}]:L=[{t:r.value,v:l}],t)){if(t.ack!==void 0&&t.ack!==null&&L.push({t:r.ack,v:t.ack.toString()}),t.ts&&L.push({t:r.ts,v:t.ts?E.formatDate(new Date(t.ts),e):""}),t.lc&&L.push({t:r.lc,v:t.lc?E.formatDate(new Date(t.lc),e):""}),t.from){let g=t.from.toString();g.startsWith("system.adapter.")&&(g=g.substring(15)),L.push({t:r.from,v:g})}if(t.user){let g=t.user.toString();g.startsWith("system.user.")&&(g=g.substring(12)),L.push({t:r.user,v:g})}t.c&&L.push({t:r.c,v:t.c}),L.push({t:r.quality,v:E.quality2text(t.q||0).join(", "),nbr:!0})}return{valText:c,valFull:L,fileViewer:u}}function TLe(i){const{state:e}=i;return{color:e!=null&&e.ack?e.q?"#ffa500":"":i.nonAckColor||"#ff2222c9"}}function yLe(i,e){let t=e,s=1;const r=[];for(;s=t)r.push(0);else if(s1){const s=e.path;let r;const o=i;if(o[s[0]]&&typeof o[s[0]]=="object")return s.length===2?r=o[s[0]][s[1]]:s.length===3?r=o[s[0]][s[1]]&&typeof o[s[0]][s[1]]=="object"?o[s[0]][s[1]][s[2]]:null:s.length===4?r=o[s[0]][s[1]]&&typeof o[s[0]][s[1]]=="object"&&o[s[0]][s[1]][s[2]]?o[s[0]][s[1]][s[2]][s[3]]:null:s.length===5?r=o[s[0]][s[1]]&&typeof o[s[0]][s[1]]=="object"&&o[s[0]][s[1]][s[2]]&&o[s[0]][s[1]][s[2]][s[3]]?o[s[0]][s[1]][s[2]][s[3]][s[4]]:null:s.length===6&&(r=o[s[0]][s[1]]&&typeof o[s[0]][s[1]]=="object"&&o[s[0]][s[1]][s[2]]&&o[s[0]][s[1]][s[2]][s[3]]&&o[s[0]][s[1]][s[2]][s[3]][s[4]]?o[s[0]][s[1]][s[2]][s[3]][s[4]][s[5]]:null),r??null}return null}function DLe(i,e,t){var s;if((s=i==null?void 0:i._id)!=null&&s.startsWith(`${e.adapter}.`)&&e.path.length>1){const r=e.path,o=i;if(o[r[0]]&&typeof o[r[0]]=="object"){if(r.length===2)return o[r[0]][r[1]]=t,!0;if(r.length===3){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object")return o[r[0]][r[1]][r[2]]=t,!0}else if(r.length===4){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object")return o[r[0]][r[1]][r[2]][r[3]]=t,!0}else if(r.length===5){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]]=t,!0}else if(r.length===6&&o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object"&&o[r[0]][r[1]][r[2]][r[3]][r[4]]&&typeof o[r[0]][r[1]][r[2]][r[3]][r[4]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]][r[5]]=t,!0}}return!1}function ga(i){return!!cLe.find(e=>i.startsWith(e))}const dLe=16,Te=20,Ou="#ff413c",Eu="#86211f",To="#57ff45",yo="#098c04",Do="#f3ad11",zo="#6c5008",C={toolbar:{minHeight:38},toolbarButtons:{padding:4,marginLeft:4},switchColumnAuto:{marginLeft:16},dialogColumns:{transition:"opacity 1s"},dialogColumnsLabel:{fontSize:12,paddingTop:8},columnCustom:{width:"100%",display:"inline-block"},columnCustomEditable:{cursor:"text"},columnCustom_center:{textAlign:"center"},columnCustom_left:{textAlign:"left"},columnCustom_right:{textAlign:"right"},width100:{width:"100%"},transparent_10:{opacity:.1},transparent_20:{opacity:.2},transparent_30:{opacity:.3},transparent_40:{opacity:.4},transparent_50:{opacity:.5},transparent_60:{opacity:.6},transparent_70:{opacity:.7},transparent_80:{opacity:.8},transparent_90:{opacity:.9},transparent_100:{opacity:1},headerRow:{paddingLeft:8,height:38,whiteSpace:"nowrap",userSelect:"none"},buttonClearFilter:{position:"relative",float:"right",padding:0},buttonClearFilterIcon:{zIndex:2,position:"absolute",top:0,left:0,color:"#FF0000",opacity:.7},tableDiv:{paddingTop:0,paddingLeft:0,width:"calc(100% - 8px)",height:"calc(100% - 38px)",overflow:"auto"},tableRow:i=>({pl:1,height:Ye,lineHeight:`${Ye}px`,verticalAlign:"top",userSelect:"none",position:"relative",width:"100%","&:hover":{background:`${i.palette.mode==="dark"?i.palette.primary.dark:i.palette.primary.light} !important`,color:E.invertColor(i.palette.primary.main,!0)},whiteSpace:"nowrap",flexWrap:"nowrap"}),tableRowLines:i=>({borderBottom:`1px solid ${i.palette.mode==="dark","#8888882e"}`,"& > div":{borderRight:`1px solid ${i.palette.mode==="dark","#8888882e"}`}}),tableRowNoDragging:{cursor:"pointer"},tableRowAlias:{height:Ye+10},tableRowAliasReadWrite:{height:Ye+22},tableRowFocused:i=>({"&:after":{content:'""',position:"absolute",top:1,left:1,right:1,bottom:1,border:i.palette.mode?"1px dotted #000":"1px dotted #FFF"}}),checkBox:{padding:0},cellId:{position:"relative",fontSize:"1rem",overflow:"hidden",textOverflow:"ellipsis","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"},"& .iconOwn":{display:"block",width:Ye-4,height:Ye-4,mt:"2px",float:"right"},"&:hover .iconOwn":{display:"none"},"& *":{width:"initial"}},cellIdSpan:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},cellIdIconFolder:i=>({marginRight:8,width:Ye-4,height:Ye-4,cursor:"pointer",color:i.palette.secondary.main||"#fbff7d",verticalAlign:"top"}),cellIdIconDocument:{verticalAlign:"middle",marginLeft:(Ye-Te)/2,marginRight:8,width:Te,height:Te},cellIdIconOwn:{},cellCopyButton:{width:Te,height:Te,top:(Ye-Te)/2,opacity:.8,position:"absolute",right:3},cellCopyButtonInDetails:{width:Te,height:Te,top:(Ye-Te)/2,opacity:.8},cellEditButton:{width:Te,height:Te,color:"white",position:"absolute",top:(Ye-Te)/2,right:Te+3,opacity:.7,"&:hover":{opacity:1}},cellName:{display:"inline-block",verticalAlign:"top",fontSize:14,ml:"5px",overflow:"hidden",textOverflow:"ellipsis",position:"relative","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellNameWithDesc:{lineHeight:"normal"},cellNameDivDiv:{},cellDescription:{fontSize:10,opacity:.5,fontStyle:"italic"},cellIdAlias:i=>({fontStyle:"italic",fontSize:12,opacity:.7,"&:hover":{color:i.palette.mode==="dark"?"#009900":"#007700"}}),cellIdAliasReadWriteDiv:{height:24,marginTop:-5},cellIdAliasAlone:{lineHeight:0},cellIdAliasReadWrite:{lineHeight:"12px"},cellType:{display:"inline-block",verticalAlign:"top","& .itemIcon":{verticalAlign:"middle",width:Is,height:Is,display:"inline-block"},"& .itemIconFolder":{marginLeft:3}},cellRole:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellRoom:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellEnumParent:{opacity:.4},cellFunc:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValue:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValueButton:{marginTop:5},cellValueButtonFalse:{opacity:.3},cellAdapter:{display:"inline-block",verticalAlign:"top"},cellValueTooltip:{fontSize:12},cellValueText:{width:"100%",height:Ye,fontSize:16,display:"flex",overflow:"hidden",textOverflow:"ellipsis",position:"relative",verticalAlign:"top","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellValueFile:{color:"#2837b9"},cellValueTooltipTitle:{fontStyle:"italic",width:100,display:"inline-block"},cellValueTooltipValue:{width:120,display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis"},cellValueTooltipImage:{width:100,height:"auto"},cellValueTooltipBoth:{width:220,display:"inline-block",whiteSpace:"nowrap"},cellValueTooltipBox:{width:250,overflow:"hidden",pointerEvents:"none"},tooltip:{pointerEvents:"none"},cellValueTextUnit:{marginLeft:4,opacity:.8,display:"inline-block"},cellValueTextState:{opacity:.7},cellValueTooltipCopy:{position:"absolute",bottom:3,right:3},cellValueTooltipEdit:{position:"absolute",bottom:3,right:15},cellButtons:{display:"inline-block",verticalAlign:"top"},cellButtonsButton:{display:"inline-block",opacity:.5,width:Te+4,height:Te+4,"&:hover":{opacity:1},p:0,mt:"-2px"},cellButtonsEmptyButton:{fontSize:12},cellButtonMinWidth:{minWidth:40},cellButtonsButtonAlone:{ml:`${Te+6}px`,pt:0,mt:"-2px"},cellButtonsButtonWithCustoms:i=>({color:i.palette.mode==="dark"?i.palette.primary.main:i.palette.secondary.main}),cellButtonsButtonWithoutCustoms:{opacity:.2},cellButtonsValueButton:i=>({position:"absolute",top:Te/2-2,opacity:.7,width:Te-2,height:Te-2,color:i.palette.action.active,"&:hover":{opacity:1}}),cellButtonsValueButtonCopy:{right:8,cursor:"pointer"},cellButtonsValueButtonEdit:{right:Te/2+16},cellDetailsLine:{display:"flex",alignItems:"center",width:"100%",height:32,fontSize:16},cellDetailsName:{fontWeight:"bold",marginRight:8,minWidth:80},filteredOut:{opacity:.5},filteredParentOut:{opacity:.3},filterInput:{mt:0,mb:0},selectIcon:{width:24,height:24,marginRight:4},itemSelected:i=>({background:`${i.palette.primary.main} !important`,color:`${E.invertColor(i.palette.primary.main,!0)} !important`}),header:{width:"100%"},headerCell:{display:"inline-block",verticalAlign:"top"},headerCellValue:{paddingTop:4,fontSize:16},visibleButtons:{color:"#2196f3",opacity:.7},grow:{flexGrow:1},enumIconDiv:{marginRight:8,width:32,height:32,borderRadius:8,background:"#FFFFFF"},enumIcon:{marginTop:4,marginLeft:4,width:24,height:24},enumDialog:{overflow:"hidden"},enumList:{minWidth:250,height:"calc(100% - 50px)",overflow:"auto"},enumCheckbox:{minWidth:0},buttonDiv:{display:"flex",height:"100%",alignItems:"center"},aclText:{fontSize:13,marginTop:6},rightsObject:{color:"#55ff55",paddingLeft:3},rightsState:{color:"#86b6ff",paddingLeft:3},textCenter:{padding:12,textAlign:"center"},tooltipAccessControl:{display:"flex",flexDirection:"column"},fontSizeTitle:{"@media screen and (max-width: 465px)":{"& *":{fontSize:12}}},draggable:{cursor:"copy"},nonDraggable:{cursor:"no-drop"},iconDeviceConnected:i=>({color:i.palette.mode==="dark"?To:yo,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceDisconnected:i=>({color:i.palette.mode==="dark"?Do:zo,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceError:i=>({color:i.palette.mode==="dark"?Ou:Eu,opacity:.8,position:"absolute",top:4,right:50,width:20}),resizeHandle:{display:"block",position:"absolute",cursor:"col-resize",width:7,top:2,bottom:2,zIndex:1},resizeHandleRight:{right:3,borderRight:"2px dotted #888","&:hover":{borderColor:"#ccc",borderRightStyle:"solid"},"&.active":{borderColor:"#517ea5",borderRightStyle:"solid"}},invertedBackground:i=>({backgroundColor:i.palette.mode==="dark"?"#9a9a9a":"#565656",padding:"0 3px",borderRadius:"2px 0 0 2px"}),invertedBackgroundFlex:i=>({backgroundColor:i.palette.mode==="dark"?"#9a9a9a":"#565656",borderRadius:"0 2px 2px 0"}),contextMenuEdit:i=>({color:i.palette.mode==="dark"?"#ffee48":"#cbb801"}),contextMenuEditValue:i=>({color:i.palette.mode==="dark"?"#5dff45":"#1cd301"}),contextMenuView:i=>({color:i.palette.mode==="dark"?"#FFF":"#000"}),contextMenuCustom:i=>({color:i.palette.mode==="dark"?"#42eaff":"#01bbc2"}),contextMenuACL:i=>({color:i.palette.mode==="dark"?"#e079ff":"#500070"}),contextMenuRoom:i=>({color:i.palette.mode==="dark"?"#ff9a33":"#642a00"}),contextMenuRole:i=>({color:i.palette.mode==="dark"?"#ffdb43":"#562d00"}),contextMenuDelete:i=>({color:i.palette.mode==="dark"?"#ff4f4f":"#cf0000"}),contextMenuKeys:{marginLeft:8,opacity:.7,fontSize:"smaller"},contextMenuWithSubMenu:{display:"flex"},...bt},Ta={state:n.createElement(Xs,{className:"itemIcon",style:{verticalAlign:"middle"}}),channel:n.createElement(yu,{className:"itemIcon",style:{verticalAlign:"middle"}}),device:n.createElement(Du,{className:"itemIcon",style:{verticalAlign:"middle"}}),adapter:n.createElement(eLe,{className:"itemIcon",style:{verticalAlign:"middle"}}),meta:n.createElement(tr,{className:"itemIcon",style:{verticalAlign:"middle"}}),instance:n.createElement(iLe,{className:"itemIcon",style:{color:"#7da7ff",verticalAlign:"middle"}}),enum:n.createElement(Kl,{className:"itemIcon",style:{verticalAlign:"middle"}}),chart:n.createElement(Xl,{className:"itemIcon",style:{verticalAlign:"middle"}}),config:n.createElement(Hr,{className:"itemIcon",style:{verticalAlign:"middle"}}),group:n.createElement(vo,{className:"itemIcon",style:{verticalAlign:"middle"}}),user:n.createElement(Uo,{className:"itemIcon",style:{verticalAlign:"middle"}}),host:n.createElement(bo,{className:"itemIcon",style:{verticalAlign:"middle"}}),schedule:n.createElement(Zl,{className:"itemIcon",style:{verticalAlign:"middle"}}),script:n.createElement(Wo,{className:"itemIcon",style:{verticalAlign:"middle"}}),folder:n.createElement(ms,{className:"itemIcon itemIconFolder",style:{verticalAlign:"middle"}})},je={xs:{idWidth:"100%",fields:[],widths:{}},sm:{idWidth:300,fields:["room","val"],widths:{room:100,val:200}},md:{idWidth:300,fields:["room","func","val","buttons"],widths:{name:200,room:150,func:150,val:120,buttons:120}},lg:{idWidth:300,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:300,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:165,lastChange:165}},xl:{idWidth:550,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:400,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:170,lastChange:170}}};let ya=!1;const Ds={id:"",name:"",room:[],func:[],role:[],type:[],custom:[],expertMode:!1};class Ki extends ze{info={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:{},customs:[],enums:[],hasSomeCustoms:!1,aliasesMap:{}};localStorage=window._localStorage||window.localStorage;tableRef;pausedSubscribes=!1;selectFirst;root=null;states={};subscribes=[];unsubscribeTimer=null;statesUpdateTimer=null;objectsUpdateTimer=null;visibleCols;texts;possibleCols;imagePrefix;adapterColumns=[];styleTheme="";edit={id:"",val:"",q:0,ack:!1};levelPadding;customWidth=!1;resizeTimeout=null;resizerNextName=null;resizerActiveName=null;resizerCurrentWidths={};resizeLeft=!1;resizerOldWidth=0;resizerMin=0;resizerNextMin=0;resizerOldWidthNext=0;resizerPosition=0;resizerActiveDiv=null;resizerNextDiv=null;storedWidths=null;systemConfig;objects;defaultHistory="";ctrlPressed=!1;columnsVisibility={};changedIds=null;contextMenu=null;recordStates=[];styles={};expertMode=!1;customColumnDialog=null;constructor(e){super(e);const t=this.localStorage.getItem(`${e.dialogName||"App"}.objectSelected`)||"";if(this.selectFirst="",this.expertMode=!!this.props.expertMode,t.startsWith("["))try{const d=JSON.parse(t);this.selectFirst=d[0]||""}catch{}else this.selectFirst=t;let s;const r=this.localStorage.getItem(`${e.dialogName||"App"}.objectExpanded`)||"[]";try{s=JSON.parse(r)}catch{s=[]}let o;const M=e.defaultFilters?"":this.localStorage.getItem(`${e.dialogName||"App"}.objectFilter`)||"";if(M)try{o=JSON.parse(M)}catch{o={...Ds}}else e.defaultFilters&&typeof e.defaultFilters=="object"?o={...e.defaultFilters}:o={...Ds};if(typeof o.room=="string"&&o.room&&(o.room=[o.room].filter(d=>d),o.room.length||delete o.room),typeof o.func=="string"&&o.func&&(o.func=[o.func].filter(d=>d),o.func.length||delete o.func),typeof o.role=="string"&&o.role&&(o.role=[o.role].filter(d=>d),o.role.length||delete o.role),typeof o.type=="string"&&(o.type=[o.type].filter(d=>d),o.type.length||delete o.type),typeof o.custom=="string"&&(o.custom=[o.custom].filter(d=>d),o.custom.length||delete o.custom),o.expertMode=e.expertMode!==void 0?e.expertMode:(window._sessionStorage||window.sessionStorage).getItem("App.expertMode")==="true",this.tableRef=Pa(),this.visibleCols=e.columns||je[e.width||"lg"].fields,e.types&&e.types.length===1){const d=this.visibleCols.indexOf("type");d!==-1&&this.visibleCols.splice(d,1)}this.possibleCols=je.xl.fields;let a=null;if(e.router){const d=e.router.getLocation();d.id&&d.dialog==="customs"&&(a=[d.id],this.pauseSubscribe(!0))}let u;Array.isArray(e.selected)?u=e.selected:u=[e.selected||""],u=u.map(d=>d.replace(/["']/g,"")).filter(d=>d),this.selectFirst=u.length&&u[0]?u[0]:this.selectFirst;const l=this.localStorage.getItem(`${e.dialogName||"App"}.columns`);let N;try{N=l?JSON.parse(l):null}catch{N=null}let c=null;try{c=c?JSON.parse(c):{}}catch{c={}}this.imagePrefix=e.imagePrefix||".";let L;const j=this.localStorage.getItem(`${e.dialogName||"App"}.foldersFirst`);j==="false"?L=!1:j==="true"?L=!0:L=e.foldersFirst===void 0?!0:e.foldersFirst;let g=!1;try{g=this.props.objectStatesView&&JSON.parse(this.localStorage.getItem(`${e.dialogName||"App"}.objectStatesView`)||"")||!1}catch{}this.state={aliasMenu:"",beautifyJsonExport:!0,columns:N,columnsAuto:this.localStorage.getItem(`${e.dialogName||"App"}.columnsAuto`)!=="false",columnsDialogTransparent:100,columnsEditCustomDialog:null,columnsForAdmin:null,columnsSelectorShow:!1,columnsWidths:c,customColumnDialogValueChanged:!1,customDialog:a,depth:0,editObjectAlias:!1,editObjectDialog:"",enumDialog:null,excludeSystemRepositoriesFromExport:!0,excludeTranslations:!1,expandAllVisible:!1,expanded:s,filter:o,filterKey:0,focused:this.localStorage.getItem(`${e.dialogName||"App"}.focused`)||"",foldersFirst:L,linesEnabled:this.localStorage.getItem(`${e.dialogName||"App"}.lines`)==="true",loaded:!1,noStatesByExportImport:!1,roleDialog:null,scrollBarWidth:16,selected:u,selectedNonObject:this.localStorage.getItem(`${e.dialogName||"App"}.selectedNonObject`)||"",showAliasEditor:"",showAllExportOptions:!1,showContextMenu:null,showDescription:this.localStorage.getItem(`${e.dialogName||"App"}.desc`)!=="false",showExportDialog:!1,showImportDialog:!1,showImportMenu:null,showRenameDialog:null,statesView:g,toast:"",tooltipInfo:null,viewFileDialog:""},this.texts={name:e.t("ra_Name"),categories:e.t("ra_Categories"),value:e.t("ra_tooltip_value"),ack:e.t("ra_tooltip_ack"),ts:e.t("ra_tooltip_ts"),lc:e.t("ra_tooltip_lc"),from:e.t("ra_tooltip_from"),user:e.t("ra_tooltip_user"),c:e.t("ra_tooltip_comment"),quality:e.t("ra_tooltip_quality"),editObject:e.t("ra_tooltip_editObject"),deleteObject:e.t("ra_tooltip_deleteObject"),customConfig:e.t("ra_tooltip_customConfig"),copyState:e.t("ra_tooltip_copyState"),editState:e.t("ra_tooltip_editState"),ctrlForLink:e.t("ra_tooltip_ctrlForLink"),close:e.t("ra_Close"),filter_id:e.t("ra_filter_id"),filter_name:e.t("ra_filter_name"),filter_type:e.t("ra_filter_type"),filter_role:e.t("ra_filter_role"),filter_room:e.t("ra_filter_room"),filter_func:e.t("ra_filter_func"),filter_custom:e.t("ra_filter_customs"),filterCustomsWithout:e.t("ra_filter_customs_without"),objectChangedByUser:e.t("ra_object_changed_by_user"),objectChangedBy:e.t("ra_object_changed_by"),objectChangedFrom:e.t("ra_state_changed_from"),stateChangedBy:e.t("ra_state_changed_by"),stateChangedFrom:e.t("ra_state_changed_from"),ownerGroup:e.t("ra_Owner group"),ownerUser:e.t("ra_Owner user"),showAll:e.t("ra_show_all"),deviceError:e.t("ra_Error"),deviceDisconnected:e.t("ra_Disconnected"),deviceConnected:e.t("ra_Connected"),aclOwner_read_object:e.t("ra_aclOwner_read_object"),aclOwner_read_state:e.t("ra_aclOwner_read_state"),aclOwner_write_object:e.t("ra_aclOwner_write_object"),aclOwner_write_state:e.t("ra_aclOwner_write_state"),aclGroup_read_object:e.t("ra_aclGroup_read_object"),aclGroup_read_state:e.t("ra_aclGroup_read_state"),aclGroup_write_object:e.t("ra_aclGroup_write_object"),aclGroup_write_state:e.t("ra_aclGroup_write_state"),aclEveryone_read_object:e.t("ra_aclEveryone_read_object"),aclEveryone_read_state:e.t("ra_aclEveryone_read_state"),aclEveryone_write_object:e.t("ra_aclEveryone_write_object"),aclEveryone_write_state:e.t("ra_aclEveryone_write_state"),create:e.t("ra_Create"),createBooleanState:e.t("ra_create_boolean_state"),createNumberState:e.t("ra_create_number_state"),createStringState:e.t("ra_create_string_state"),createState:e.t("ra_create_state"),createChannel:e.t("ra_create_channel"),createDevice:e.t("ra_create_device"),createFolder:e.t("ra_Create folder")},this.levelPadding=e.levelPadding||dLe;const y=this.localStorage.getItem(`${this.props.dialogName||"App"}.table`);if(y)try{const d=JSON.parse(y),I=this.props.width||"lg";this.storedWidths=JSON.parse(JSON.stringify(je[I])),Object.keys(d).forEach(m=>{m==="id"?je[I].idWidth=d.id:m==="nameHeader"?je[I].widths.name=d[m]:je[I].widths[m]!==void 0&&(je[I].widths[m]=d[m])}),this.customWidth=!0}catch{}this.calculateColumnsVisibility()}async loadAllObjects(e){var s;const t=this.props;try{await new Promise(l=>{this.setState({updating:!0},()=>l())});const r=(t.objectsWorker?await t.objectsWorker.getObjects(e):await t.socket.getObjects(e,!0))||{};if(t.types&&Ee.isWeb())for(let l=0;l{try{if(l(r[N]))this.objects[N]=r[N];else{const c=r[N]&&r[N].type;c&&(c==="channel"||c==="device"||c==="folder"||c==="adapter"||c==="instance")&&(this.objects[N]=r[N])}}catch(c){console.log(`Error by filtering of "${N}": ${c}`)}})}else if(t.types){this.objects={};const l=t.types;Object.keys(r).forEach(N=>{var L;const c=(L=r[N])==null?void 0:L.type;c&&(c==="channel"||c==="device"||c==="enum"||c==="folder"||c==="adapter"||c==="instance"||l.includes(c))&&(this.objects[N]=r[N])})}else this.objects=r;t.setObjectsReference&&t.setObjectsReference(this.objects),this.defaultHistory=this.systemConfig.common.defaultHistory,this.defaultHistory&&t.socket.getState(`system.adapter.${this.defaultHistory}.alive`).then(l=>{l!=null&&l.val||(this.defaultHistory="")}).catch(l=>window.alert(`Cannot get state: ${l}`));const o=await this.getAdditionalColumns();this.calculateColumnsVisibility(null,null,o);const{info:M,root:a}=La(this.objects,{imagePrefix:t.imagePrefix,root:t.root,lang:t.lang,themeType:t.themeType});this.root=a,this.info=M;const u=((s=this.state.selected)==null?void 0:s.length)&&Au(this.root,this.state.selected[0]);u&&!go(u,this.state.filter,t.lang,this.objects,void 0,void 0,t.customFilter,t.types)?this.setState({filter:{...Ds},columnsForAdmin:o},()=>{this.doFilter(),this.setState({loaded:!0,updating:!1},()=>this.expandAllSelected(()=>this.onAfterSelect()))}):(this.doFilter(),this.setState({loaded:!0,updating:!1,columnsForAdmin:o},()=>this.expandAllSelected(()=>this.onAfterSelect())))}catch(r){this.showError(r)}}expandAllSelected(e){const t=[...this.state.expanded];let s=!1;this.state.selected.forEach(r=>{const o=r.split("."),M=[];for(let a=0;a!this.objects[N]))&&((u=(a=this.props).onSelect)==null||u.call(a,this.state.selected,null,e))}else this.localStorage.removeItem(`${this.props.dialogName||"App"}.objectSelected`),this.state.selected.length?this.setState({selected:[]},()=>{this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}):this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}static getDerivedStateFromProps(e,t){const s={};let r=!1;return e.expertMode!==void 0&&e.expertMode!==t.filter.expertMode&&(r=!0,s.filter={...t.filter},s.filter.expertMode=e.expertMode),r?s:null}async componentDidMount(){await this.loadAllObjects(!ya),this.props.objectsWorker?this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker):await this.props.socket.subscribeObject("*",this.onObjectChange),ya=!0,window.addEventListener("contextmenu",this.onContextMenu,!0),window.addEventListener("keydown",this.onKeyPress,!0),window.addEventListener("keyup",this.onKeyPress,!0),this.props.onAllLoaded&&setTimeout(()=>{var e,t;(t=(e=this.props).onAllLoaded)==null||t.call(e)},100)}onKeyPress=e=>{e.type==="keydown"&&e.ctrlKey&&!this.ctrlPressed?(this.ctrlPressed=!0,this.tableRef.current&&(this.tableRef.current.className="highlight-link")):e.type==="keyup"&&!e.ctrlKey&&this.ctrlPressed&&(this.ctrlPressed=!1,this.tableRef.current&&(this.tableRef.current.className=""))};componentWillUnmount(){window.removeEventListener("contextmenu",this.onContextMenu,!0),window.removeEventListener("keydown",this.onKeyPress,!0),window.removeEventListener("keyup",this.onKeyPress,!0),this.props.objectsWorker?this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker,!0):this.props.socket.unsubscribeObject("*",this.onObjectChange).catch(e=>console.error(`Cannot unsubscribe *: ${e}`)),this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.objects={}}showDeleteDialog(e){var u,l,N,c;const{id:t,obj:s,item:r}=e,o=Object.keys(this.objects);o.sort();let M=0;const a=`${t}.`;for(let L=0;La)break;(c=(N=this.props).onObjectDelete)==null||c.call(N,t,!!((u=r.children)!=null&&u.length),!((l=s.common)!=null&&l.dontDelete),M+1)}onContextMenu=e=>{this.contextMenu&&Date.now()-this.contextMenu.ts<2e3?(e.preventDefault(),this.setState({showContextMenu:{item:this.contextMenu.item,position:{left:e.clientX+2,top:e.clientY-6}}})):this.state.showContextMenu&&(e.preventDefault(),this.setState({showContextMenu:null})),this.contextMenu=null};refreshComponent(){this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.loadAllObjects(!0).then(()=>console.log("updated!")).catch(e=>this.showError(e))}renderErrorDialog(){return this.state.error?n.createElement(de,{open:!0,maxWidth:"sm",fullWidth:!0,onClose:()=>this.setState({error:""}),"aria-labelledby":"error-dialog-title","aria-describedby":"error-dialog-description"},n.createElement(Ie,{id:"alert-dialog-title"},this.props.t("ra_Error")),n.createElement(Ae,null,n.createElement(Jt,{id:"alert-dialog-description"},this.state.error)),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.setState({error:""}),color:"primary",autoFocus:!0,startIcon:n.createElement(ve,null)},this.props.t("ra_Ok")))):null}showError(e){this.setState({error:typeof e=="object"?e&&typeof e.toString=="function"?e.toString():JSON.stringify(e):e})}onSelect(e,t,s){if(this.localStorage.setItem(`${this.props.dialogName||"App"}.focused`,e),!this.props.multiSelect)this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))?(this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`),this.state.selected[0]!==e?this.setState({selected:[e],selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),s&&s()}):t&&this.props.onSelect&&this.onAfterSelect(t)):(this.localStorage.setItem(`${this.props.dialogName||"App"}.selectedNonObject`,e),this.setState({selected:[],selectedNonObject:e,focused:e},()=>{this.onAfterSelect(),s&&s()}));else if(this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))){this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`);const r=[...this.state.selected],o=r.indexOf(e);o===-1?(r.push(e),r.sort()):t||r.splice(o,1),this.setState({selected:r,selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),s&&s()})}}_renderDefinedList(e){const t=[...this.possibleCols];if(t.unshift("id"),this.props.columns&&!this.props.columns.includes("buttons")){const s=t.indexOf("buttons");s!==-1&&t.splice(s,1)}return t.filter(s=>e&&(s==="val"||s==="buttons")||!e&&s!=="val"&&s!=="buttons").map(s=>{var r;return n.createElement(wM,{onClick:()=>{if(!this.state.columnsAuto&&s!=="id"){const o=[...this.state.columns||[]],M=o.indexOf(s);M===-1?(o.push(s),o.sort()):o.splice(M,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.calculateColumnsVisibility(null,o),this.setState({columns:o})}},key:s},n.createElement(ne,{edge:"start",disabled:s==="id"||this.state.columnsAuto,checked:s==="id"||!!(this.state.columnsAuto?this.visibleCols.includes(s):(r=this.state.columns)!=null&&r.includes(s)),disableRipple:!0}),n.createElement(nt,{primary:this.texts[`filter_${s}`]||this.props.t(`ra_${s}`)}))})}renderColumnsSelectorDialog(){return this.state.columnsSelectorShow?n.createElement(de,{onClose:()=>this.setState({columnsSelectorShow:!1}),open:!0,sx:{"& .MuiPaper-root":E.getStyle(this.props.theme,C.dialogColumns,C[`transparent_${this.state.columnsDialogTransparent}`])}},n.createElement(Ie,{sx:C.fontSizeTitle},this.props.t("ra_Configure")),n.createElement(Ae,{sx:C.fontSizeTitle},n.createElement(H,{style:C.switchColumnAuto,control:n.createElement(Di,{checked:this.state.foldersFirst,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.foldersFirst`,this.state.foldersFirst?"false":"true"),this.setState({foldersFirst:!this.state.foldersFirst})}}),label:this.props.t("ra_Folders always first")}),n.createElement(H,{style:C.switchColumnAuto,control:n.createElement(Di,{checked:this.state.linesEnabled,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.lines`,this.state.linesEnabled?"false":"true"),this.setState({linesEnabled:!this.state.linesEnabled})}}),label:this.props.t("ra_Show lines between rows")}),n.createElement(H,{style:C.switchColumnAuto,control:n.createElement(Di,{checked:this.state.columnsAuto,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.columnsAuto`,this.state.columnsAuto?"false":"true"),this.state.columnsAuto?this.state.columns?(this.calculateColumnsVisibility(!1),this.setState({columnsAuto:!1})):(this.calculateColumnsVisibility(!1,[...this.visibleCols]),this.setState({columnsAuto:!1,columns:[...this.visibleCols]})):(this.calculateColumnsVisibility(!0),this.setState({columnsAuto:!0}))}}),label:this.props.t("ra_Auto (no custom columns)")}),n.createElement(CM,null,this._renderDefinedList(!1),this.state.columnsForAdmin&&Object.keys(this.state.columnsForAdmin).sort().map(e=>{var t;return(t=this.state.columnsForAdmin)==null?void 0:t[e].map(s=>{var r;return n.createElement(wM,{onClick:()=>{if(!this.state.columnsAuto){const o=[...this.state.columns||[]],M=`_${e}_${s.path}`,a=o.indexOf(M);a===-1?(o.push(M),o.sort()):o.splice(a,1),this.calculateColumnsVisibility(null,o),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.setState({columns:o})}},key:`${e}_${s.name}`},n.createElement(Yt,null,n.createElement(ne,{disabled:this.state.columnsAuto,edge:"start",checked:!this.state.columnsAuto&&((r=this.state.columns)==null?void 0:r.includes(`_${e}_${s.path}`)),disableRipple:!0})),n.createElement(nt,{primary:`${s.name} (${e})`}))})}),this._renderDefinedList(!0))),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.setState({columnsSelectorShow:!1}),color:"primary",startIcon:n.createElement(ge,null)},this.texts.close))):null}async getAdditionalColumns(){try{const e=await this.props.socket.getAdapters();let t=null;return e.forEach(s=>t=this.parseObjectForAdmins(t,s)),t}catch(e){return console.error(`Cannot get adapters: ${e}`),null}}checkUnsubscribes(){for(let e=this.subscribes.length-1;e>=0;e--)this.recordStates.includes(this.subscribes[e])||this.unsubscribe(this.subscribes[e]);this.recordStates=[]}findItem(e,t,s,r){if(t||=e.split("."),s||=this.root,!s||!t.length)return null;if(r=(r?`${r}.`:"")+t.shift(),s.children){const o=s.children.find(M=>M.data.id===r);if(o){if(o.data.id===e)return o;if(t.length)return this.findItem(e,t,o,r)}else return null}return null}onStateChange=(e,t)=>{if(this.states[e]){const s=this.findItem(e);s!=null&&s.data.state&&(s.data.state=void 0)}t?this.states[e]=t:delete this.states[e],this.pausedSubscribes?this.statesUpdateTimer&&(clearTimeout(this.statesUpdateTimer),this.statesUpdateTimer=null):this.statesUpdateTimer||(this.statesUpdateTimer=setTimeout(()=>{this.statesUpdateTimer=null,this.forceUpdate()},300))};parseObjectForAdmins(e,t){var s;if((s=t.common)!=null&&s.adminColumns&&t.common.name){const r=t.common.adminColumns;let o;r&&typeof r!="object"?o=[r]:r&&(o=r);let M;r?M=o.map(a=>{if(typeof a!="object")return{path:a,name:a.split(".").pop()};const u=a;return u.objTypes&&typeof u.objTypes!="object"?u.objTypes=[u.objTypes]:u.objTypes||(u.objTypes=void 0),!u.name&&u.path?{path:u.path,name:u.path.split(".").pop(),width:u.width,edit:!!u.edit,type:u.type,objTypes:u.objTypes}:u.path?{path:u.path,name:Re(u.name||"",this.props.lang),width:u.width,edit:!!u.edit,type:u.type,objTypes:u.objTypes}:(console.warn(`Admin columns for ${t._id} ignored, because path not found`),null)}).filter(a=>a):M=null,M!=null&&M.length&&(e||={},e[t.common.name]=M.sort((a,u)=>a.path>u.path?-1:a.path{if(Array.isArray(e)){let t=null;e.forEach(s=>{const{newInnerState:r,filtered:o}=this.processOnObjectChangeElement(s.id,s.obj);o||(r&&t?Object.assign(t,r):t=r)}),t&&this.setState(t),this.afterObjectUpdated()}};onObjectChange=(e,t)=>{const{newInnerState:s,filtered:r}=this.processOnObjectChangeElement(e,t);r||(s&&this.setState(s),this.afterObjectUpdated())};afterObjectUpdated(){!this.objectsUpdateTimer&&this.objects&&(this.objectsUpdateTimer=setTimeout(()=>{this.objectsUpdateTimer=null;const{info:e,root:t}=La(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=t,this.info=e,this.pausedSubscribes||this.doFilter()},500))}updateAliases(e){var s,r,o;if(!this.objects||!((s=this.info)!=null&&s.aliasesMap)||!(e!=null&&e.startsWith("alias.")))return;const t=Object.keys(this.objects).filter(M=>M.startsWith("alias.0"));this.info.aliasesMap={};for(const M of t){const a=this.objects[M];if((o=(r=a==null?void 0:a.common)==null?void 0:r.alias)!=null&&o.id)if(typeof a.common.alias.id=="string"){const u=a.common.alias.id;this.info.aliasesMap[u]?this.info.aliasesMap[u].includes(M)||this.info.aliasesMap[u].push(M):this.info.aliasesMap[u]=[M]}else{const u=a.common.alias.id.read;u&&(this.info.aliasesMap[u]?this.info.aliasesMap[u].includes(M)||this.info.aliasesMap[u].push(M):this.info.aliasesMap[u]=[M]);const l=a.common.alias.id.write;l&&(this.info.aliasesMap[l]?this.info.aliasesMap[l].includes(M)||this.info.aliasesMap[l].push(M):this.info.aliasesMap[l]=[M])}}}processOnObjectChangeElement(e,t){const s=t==null?void 0:t.type;if(t&&typeof this.props.filterFunc=="function"&&!this.props.filterFunc(t)&&s!=="channel"&&s!=="device"&&s!=="folder"&&s!=="adapter"&&s!=="instance")return{newInnerState:null,filtered:!0};let r=null;if(e.startsWith("system.adapter.")&&(t==null?void 0:t.type)==="adapter"){const o=JSON.parse(JSON.stringify(this.state.columnsForAdmin));this.parseObjectForAdmins(o,t),JSON.stringify(this.state.columnsForAdmin)!==JSON.stringify(o)&&(r={columnsForAdmin:o})}return this.objects||={},t?this.objects[e]=t:this.objects[e]&&delete this.objects[e],this.updateAliases(e),{newInnerState:r,filtered:!1}}subscribe(e){this.subscribes.includes(e)||(this.subscribes.push(e),this.pausedSubscribes||this.props.socket.subscribeState(e,this.onStateChange).catch(t=>console.error(`Cannot subscribe on state ${e}: ${t}`)))}unsubscribe(e){const t=this.subscribes.indexOf(e);t!==-1&&(this.subscribes.splice(t,1),this.states[e]&&delete this.states[e],this.props.socket.unsubscribeState(e,this.onStateChange),this.pausedSubscribes&&console.warn("Unsubscribe during pause?"))}pauseSubscribe(e){!this.pausedSubscribes&&e?(this.pausedSubscribes=!0,this.subscribes.forEach(t=>this.props.socket.unsubscribeState(t,this.onStateChange))):this.pausedSubscribes&&!e&&(this.pausedSubscribes=!1,this.subscribes.forEach(t=>this.props.socket.subscribeState(t,this.onStateChange)))}clearFilter(){JSON.stringify(this.state.filter)!==JSON.stringify(Ds)&&this.setState({filter:{...Ds},filterKey:this.state.filterKey+1},()=>{var e,t;this.doFilter(),(t=(e=this.props).onFilterChanged)==null||t.call(e,{...Ds})})}isFilterEmpty(){var e,t,s,r,o;return!!this.state.filter.id||!!this.state.filter.name||!!((e=this.state.filter.room)!=null&&e.length)||!!((t=this.state.filter.func)!=null&&t.length)||!!((s=this.state.filter.role)!=null&&s.length)||!!((r=this.state.filter.type)!=null&&r.length)||!!((o=this.state.filter.custom)!=null&&o.length)}getFilterInput(e){return n.createElement(jLe,{key:`${e}_${this.state.filterKey}`,styles:this.styles.filterInput,name:e,texts:this.texts,t:this.props.t,initialValue:this.state.filter[e],onChange:(t,s)=>{const r={...this.state.filter};s===void 0?delete r[t]:r[t]=s,this.setState({filter:r},()=>{var o,M;this.doFilter(),(M=(o=this.props).onFilterChanged)==null||M.call(o,r)})}})}getFilterSelect(e,t){return n.createElement(LLe,{key:`${e}_${this.state.filterKey}`,name:e,texts:this.texts,initialValue:this.state.filter[e]||[],values:t,onChange:(s,r)=>{const o={...this.state.filter};r===void 0?delete o[s]:o[s]=r,this.setState({filter:o},()=>{var M,a;this.doFilter(),(a=(M=this.props).onFilterChanged)==null||a.call(M,o)})}})}getFilterSelectRole(){return this.getFilterSelect("role",this.info.roles.map(e=>e.role))}getFilterSelectRoom(){const e=this.info.roomEnums.map(t=>{var s,r,o,M;return{name:Re((r=(s=this.objects[t])==null?void 0:s.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:n.createElement(xe,{src:((M=(o=this.objects[t])==null?void 0:o.common)==null?void 0:M.icon)||"",style:C.selectIcon})}});return this.getFilterSelect("room",e)}getFilterSelectFunction(){const e=this.info.funcEnums.map(t=>{var s,r,o,M;return{name:Re((r=(s=this.objects[t])==null?void 0:s.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:n.createElement(xe,{src:((M=(o=this.objects[t])==null?void 0:o.common)==null?void 0:M.icon)||"",style:C.selectIcon})}});return this.getFilterSelect("func",e)}getFilterSelectType(){const e=this.info.types.map(t=>({name:t,value:t,icon:Ta[t]||null}));return this.getFilterSelect("type",e)}getFilterSelectCustoms(){if(this.info.customs.length>1){const e=this.info.customs.map(t=>({name:t==="_"?this.texts.filterCustomsWithout:t,value:t,icon:t==="_"?null:n.createElement(xe,{src:Xi(this.objects,t,this.props.lang,this.imagePrefix)||"",style:C.selectIcon})}));return this.getFilterSelect("custom",e)}return null}onExpandAll(e,t){var r;const s=e||this.root;t||=[],(r=s==null?void 0:s.children)==null||r.forEach(o=>{o.data.sumVisibility&&(t.push(o.data.id),this.onExpandAll(o,t))}),s===this.root&&(t.sort(),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t}))}onCollapseAll(){this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify([])),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,"[]"),this.setState({expanded:[],depth:0,selected:[]},()=>this.onAfterSelect())}expandDepth(e,t,s){var r;e||=this.root,t>0&&((r=e.children)==null||r.forEach(o=>{o.data.sumVisibility&&(oi(s,o.data.id)||(s.push(o.data.id),s.sort()),t-1>0&&this.expandDepth(o,t-1,s))}))}static collapseDepth(e,t){return t.filter(s=>s.split(".").length<=e)}onExpandVisible(){if(this.state.depth<9){const e=this.state.depth+1,t=[...this.state.expanded];this.root&&this.expandDepth(this.root,e,t),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}onStatesViewVisible(){const e=!this.state.statesView;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectStatesView`,JSON.stringify(e)),this.setState({statesView:e})}onCollapseVisible(){if(this.state.depth>0){const e=this.state.depth-1,t=Ki.collapseDepth(e,this.state.expanded);this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}getEnumsForId=e=>{const t=[];return this.info.enums.forEach(s=>{var r,o,M;if((M=(o=(r=this.objects[s])==null?void 0:r.common)==null?void 0:o.members)!=null&&M.includes(e)){const a={_id:this.objects[s]._id,common:JSON.parse(JSON.stringify(this.objects[s].common)),native:this.objects[s].native,type:"enum"};a.common&&(delete a.common.members,delete a.common.custom,delete a.common.mobile),t.push(a)}}),t.length?t:void 0};_createAllEnums=async(e,t)=>{var s,r;for(let o=0;or)break}return e}return[]}async _exportObjects(e){var o;if(e.isAll){la("allObjects.json",this.objects,e);return}if(!(this.state.selected.length||this.state.selectedNonObject)){window.alert(this.props.t("ra_Save of objects-tree is not possible"));return}const t={},s=this.state.selected[0]||this.state.selectedNonObject,r=this._getSelectedIdsForExport();for(const M of r){if(t[M]=JSON.parse(JSON.stringify(this.objects[M])),((o=t[M])==null?void 0:o.type)==="state"&&!e.noStatesByExportImport){const a=await this.props.socket.getState(M);a&&(t[M].val=a.val,t[M].ack=a.ack)}if(t[M].common){const a=this.getEnumsForId(M);a&&(t[M].common.enums=a)}}la(`${s}.json`,t,e)}renderExportDialog(){return this.state.showExportDialog===!1?null:n.createElement(de,{open:!0,maxWidth:"lg"},n.createElement(Ie,null,this.props.t("ra_Select type of export")),n.createElement(Ae,null,n.createElement(Jt,null,this.state.filter.expertMode||this.state.showAllExportOptions?n.createElement(n.Fragment,null,this.props.t("ra_You can export all objects or just the selected branch."),n.createElement("br",null),this.props.t("ra_Selected %s object(s)",this.state.showExportDialog),n.createElement("br",null),n.createElement(H,{control:n.createElement(ne,{checked:this.state.noStatesByExportImport,onChange:e=>this.setState({noStatesByExportImport:e.target.checked})}),label:this.props.t("ra_Do not export values of states")}),n.createElement("br",null),this.props.t("These options can reduce the size of the export file:"),n.createElement(H,{control:n.createElement(ne,{checked:this.state.beautifyJsonExport,onChange:e=>this.setState({beautifyJsonExport:e.target.checked})}),label:this.props.t("Beautify JSON output")}),n.createElement("br",null),n.createElement(H,{control:n.createElement(ne,{checked:this.state.excludeSystemRepositoriesFromExport,onChange:e=>this.setState({excludeSystemRepositoriesFromExport:e.target.checked})}),label:this.props.t("Exclude system repositories from export JSON")}),n.createElement(H,{control:n.createElement(ne,{checked:this.state.excludeTranslations,onChange:e=>this.setState({excludeTranslations:e.target.checked})}),label:this.props.t("Exclude translations (except english) from export JSON")})):null)),n.createElement(me,null,this.state.filter.expertMode||this.state.showAllExportOptions?n.createElement(X,{color:"grey",variant:"outlined",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!0,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},n.createElement("span",{style:{marginRight:8}},this.props.t("ra_All objects")),"(",Object.keys(this.objects).length,")"):n.createElement(X,{color:"grey",variant:"outlined",startIcon:n.createElement(No,null),onClick:()=>this.setState({showAllExportOptions:!0})},this.props.t("ra_Advanced options")),n.createElement(X,{color:"primary",variant:"contained",autoFocus:!0,onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!1,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},n.createElement("span",{style:{marginRight:8}},this.props.t("ra_Only selected")),"(",this.state.showExportDialog,")"),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1}),startIcon:n.createElement(ge,null)},this.props.t("ra_Cancel"))))}renderRenameDialog(){var t;if(!this.state.showRenameDialog)return null;const e=this.props.objectMoveRenameDialog;return n.createElement(e,{expertMode:this.props.expertMode,onClose:()=>this.setState({showRenameDialog:null}),id:this.state.showRenameDialog.id,childrenIds:this.state.showRenameDialog.childrenIds,theme:this.props.theme,socket:this.props.socket,t:this.props.t,objectType:(t=this.objects[this.state.showRenameDialog.id])==null?void 0:t.type})}async parseJsonFile(e){try{const t=JSON.parse(e),s=Object.keys(t).length,r=t._id;if(r===void 0&&s)await this.loadObjects(t),window.alert(this.props.t("ra_%s object(s) processed",s));else{if(!r)return window.alert(this.props.t("ra_Invalid structure"));try{let o,M,a;if(t.common.enums&&(o=t.common.enums,delete t.common.enums),t.val&&(M=t.val,delete t.val),t.ack!==void 0&&(a=t.ack,delete t.ack),await this.props.socket.setObject(t._id,t),t.type==="state")if(M!=null)await this.props.socket.setState(t._id,M,a===void 0?!0:a);else{const u=await this.props.socket.getState(t._id);(!u||u.val===null||u.val===void 0)&&await this.props.socket.setState(t._id,t.common.def===void 0?null:t.common.def,!0)}o&&await this._createAllEnums(o,t._id),window.alert(this.props.t("ra_%s was imported",t._id))}catch(o){window.alert(o)}}}catch(t){window.alert(t)}}handleJsonUpload(e){var r;const t=e.target,s=((r=t.files)==null?void 0:r.length)&&t.files[0];if(s){const o=new FileReader;o.onload=M=>{var a;return this.parseJsonFile((a=M.target)==null?void 0:a.result),null},o.readAsText(s)}else window.alert(this.props.t("ra_Failed to open JSON File"))}toolTipObjectCreating=()=>{var s,r;const{t:e}=this.props;let t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:2},e("ra_Folder → State")),n.createElement("div",{key:3},e("ra_Folder → Channel → State")),n.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),n.createElement("div",{key:5},e("ra_Device → Channel → State")),n.createElement("div",{key:6},e("ra_Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];if(this.state.selected.length||this.state.selectedNonObject){const o=this.state.selected[0]||this.state.selectedNonObject;if(!(o.split(".").length<2||this.objects[o]&&((s=this.objects[o])==null?void 0:s.type)==="state"))if(this.state.filter.expertMode)switch((r=this.objects[o])==null?void 0:r.type){case"device":t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:5},e("ra_Device → Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"folder":t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:2},e("ra_Folder → State")),n.createElement("div",{key:3},e("ra_Folder → Channel → State")),n.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"channel":t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:1},e("ra_Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break}else(o.startsWith("alias.0")||o.startsWith("0_userdata"))&&(t=[n.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),n.createElement("div",{key:2},e("ra_Folder → State")),n.createElement("div",{key:3},e("ra_Folder → Channel → State")),n.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),n.createElement("div",{key:5},e("ra_Device → Channel → State")),n.createElement("div",{key:6},e("ra_Channel → State")),n.createElement("div",{key:7,style:{height:10}}),n.createElement("div",{key:7},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),n.createElement("div",{key:8},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))])}return t.length?t:e("ra_Add new child object to selected parent")};onOpenFile(){const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",t=>this.handleJsonUpload(t),!1),e.click()}renderInputJsonDialog(){const e=this.props.objectBrowserInsertJsonObjects;return this.state.showImportDialog?n.createElement(e,{onClose:t=>{this.setState({showImportDialog:!1}),t&&this.parseJsonFile(t)},themeName:this.props.themeName,themeType:this.props.themeType,t:this.props.t}):null}getToolbar(){let e=!1;if(this.state.selected.length||this.state.selectedNonObject){const t=this.state.selected[0]||this.state.selectedNonObject;t.split(".").length<2||this.objects[t]&&this.objects[t].type==="state"?e=!1:(this.state.filter.expertMode||t.startsWith("alias.0")||t.startsWith("0_userdata"))&&(e=!0)}return n.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center",overflowX:"auto"}},n.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},n.createElement(ae,{title:this.props.t("ra_Refresh tree"),slotProps:{popper:{sx:C.tooltip}}},n.createElement("div",null,n.createElement(P,{onClick:()=>this.refreshComponent(),disabled:this.state.updating,size:"large"},n.createElement(Fa,null)))),this.props.showExpertButton&&!this.props.expertMode&&n.createElement(ae,{title:this.props.t("ra_expertMode"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"expertMode",color:this.state.filter.expertMode?"secondary":"default",onClick:()=>{const t={...this.state.filter};t.expertMode=!t.expertMode,this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(t)),this.setState({filter:t})},size:"large"},n.createElement(No,null))),!this.props.disableColumnSelector&&this.props.width!=="xs"&&n.createElement(ae,{title:this.props.t("ra_Configure"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"columnSelector",color:this.state.columnsAuto?"primary":"default",onClick:()=>this.setState({columnsSelectorShow:!0}),size:"large"},n.createElement(Ql,null))),this.props.width!=="xs"&&this.state.expandAllVisible&&n.createElement(ae,{title:this.props.t("ra_Expand all nodes"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"expandAll",onClick:()=>this.onExpandAll(),size:"large"},n.createElement(bi,null))),n.createElement(ae,{title:this.props.t("ra_Collapse all nodes"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"collapseAll",onClick:()=>this.onCollapseAll(),size:"large"},n.createElement(ms,null))),this.props.width!=="xs"&&n.createElement(ae,{title:this.props.t("ra_Expand one step node"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"expandVisible",color:"primary",onClick:()=>this.onExpandVisible(),size:"large"},n.createElement(AM,{badgeContent:this.state.depth,color:"secondary",sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}})},n.createElement(bi,null)))),this.props.width!=="xs"&&n.createElement(ae,{title:this.props.t("ra_Collapse one step node"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{key:"collapseVisible",color:"primary",onClick:()=>this.onCollapseVisible(),size:"large"},n.createElement(AM,{sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}}),badgeContent:this.state.depth,color:"secondary"},n.createElement(ms,null)))),this.props.objectStatesView&&n.createElement(ae,{title:this.props.t("ra_Toggle the states view"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:()=>this.onStatesViewVisible(),size:"large"},n.createElement(vl,{color:this.state.statesView?"primary":"inherit"}))),n.createElement(ae,{title:this.props.t("ra_Show/Hide object descriptions"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.desc`,this.state.showDescription?"false":"true"),this.setState({showDescription:!this.state.showDescription})},size:"large"},n.createElement(Ul,{color:this.state.showDescription?"primary":"inherit"}))),this.props.objectAddBoolean?n.createElement(ae,{title:this.toolTipObjectCreating(),slotProps:{popper:{sx:C.tooltip}}},n.createElement("div",null,n.createElement(P,{disabled:!e,onClick:()=>this.setState({modalNewObj:{id:this.state.selected[0]||this.state.selectedNonObject}}),size:"large"},n.createElement(Fr,null)))):null,this.props.objectImportExport&&n.createElement(ae,{title:this.props.t("ra_Add objects tree from JSON file"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:t=>{this.props.objectBrowserInsertJsonObjects?this.setState({showImportMenu:t.currentTarget}):this.onOpenFile()},size:"large"},n.createElement(Ri,null))),this.props.objectBrowserInsertJsonObjects?n.createElement(ss,{anchorEl:this.state.showImportMenu,open:!!this.state.showImportMenu,onClose:()=>this.setState({showImportMenu:null})},n.createElement(te,{onClick:()=>this.setState({showImportMenu:null},()=>this.onOpenFile())},n.createElement(Yt,null,n.createElement(bl,null)),n.createElement(nt,null,this.props.t("ra_From file"))),n.createElement(te,{onClick:()=>this.setState({showImportMenu:null,showImportDialog:!0})},n.createElement(Yt,null,n.createElement($l,null)),n.createElement(nt,null,this.props.t("ra_From text")))):null,this.props.objectImportExport&&(!!this.state.selected.length||this.state.selectedNonObject)&&n.createElement(ae,{title:this.props.t("ra_Save objects tree as JSON file"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:()=>this.setState({showExportDialog:this._getSelectedIdsForExport().length}),size:"large"},n.createElement(Ri,{style:{transform:"rotate(180deg)"}})))),!!this.props.objectBrowserEditObject&&this.props.width!=="xs"&&n.createElement("div",{style:{display:"flex",whiteSpace:"nowrap"}},`${this.props.t("ra_Objects")}: ${Object.keys(this.info.objects).length}, ${this.props.t("ra_States")}: ${Object.keys(this.info.objects).filter(t=>this.info.objects[t].type==="state").length}`),this.props.objectEditBoolean&&n.createElement(ae,{title:this.props.t("ra_Edit custom config"),slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{onClick:()=>{var s;const t=this.root?wu(this.root,"state",this.objects):[];t.length?(this.pauseSubscribe(!0),t.length===1&&(this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,this.state.selected[0]),(s=this.props.router)==null||s.doNavigate(null,"custom",this.state.selected[0])),this.setState({customDialog:t,customDialogAll:!0})):this.setState({toast:this.props.t("ra_please select object")})},size:"large"},n.createElement(Pl,null))))}toggleExpanded(e){const t=JSON.parse(JSON.stringify(this.state.expanded)),s=t.indexOf(e);s===-1?(t.push(e),t.sort()):t.splice(s,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t})}onCopy(e,t){e.stopPropagation(),e.preventDefault(),t&&(E.copyToClipboard(t),t.length<50?this.setState({toast:this.props.t("ra_Copied %s",t)}):this.setState({toast:this.props.t("ra_Copied")}))}renderTooltipAccessControl=e=>{if(!e)return null;const t=[{value:"0x400",valueNum:1024,title:"read",group:"Owner"},{value:"0x200",valueNum:512,title:"write",group:"Owner"},{value:"0x40",valueNum:64,title:"read",group:"Group"},{value:"0x20",valueNum:32,title:"write",group:"Group"},{value:"0x4",valueNum:4,title:"read",group:"Everyone"},{value:"0x2",valueNum:2,title:"write",group:"Everyone"}],s=[],r=o=>{const M=e[o];t.forEach((a,u)=>{M&a.valueNum&&s.push(n.createElement("span",{key:o+u},this.texts[`acl${a.group}_${a.title}_${o}`],",",n.createElement("span",{style:o==="object"?C.rightsObject:C.rightsState},a.value)))})};return s.push(n.createElement("span",{key:"group"},`${this.texts.ownerGroup}: ${(e.ownerGroup||"").replace("system.group.","")}`)),s.push(n.createElement("span",{key:"owner"},`${this.texts.ownerUser}: ${(e.owner||"").replace("system.user.","")}`)),r("object"),e.state&&r("state"),s.length?n.createElement("span",{style:C.tooltipAccessControl},s.map(o=>o)):null};renderColumnButtons(e,t){var M,a,u,l;if(!t.data.obj)return this.props.onObjectDelete||this.props.objectEditOfAccessControl?n.createElement("div",{style:C.buttonDiv},this.state.filter.expertMode&&this.props.objectEditOfAccessControl?n.createElement(P,{sx:{...C.cellButtonsButton,...C.cellButtonsEmptyButton,...C.cellButtonMinWidth},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},n.createElement("div",{style:{height:15}},"---")):null,this.props.onObjectDelete&&((M=t.children)!=null&&M.length)?n.createElement(P,{sx:{...C.cellButtonsButton,...C.cellButtonsButtonAlone},size:"small","aria-label":"delete",title:this.texts.deleteObject,onClick:()=>{var j;const N=Object.keys(this.objects);N.sort();let c=0;const L=`${e}.`;for(let g=0;gL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((j=t.children)!=null&&j.length),!1,c+1)}},n.createElement(ut,{style:C.cellButtonsButtonIcon})):null):null;t.data.aclTooltip=t.data.aclTooltip||this.renderTooltipAccessControl(t.data.obj.acl);const s=t.data.obj.acl?t.data.obj.type==="state"?t.data.obj.acl.state:t.data.obj.acl.object:0,r=t.data.obj.acl&&(t.data.obj.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object),o=this.state.filter.expertMode||ga(t.data.id);return[this.state.filter.expertMode&&this.props.objectEditOfAccessControl?n.createElement(ae,{key:"acl",title:t.data.aclTooltip,slotProps:{popper:{sx:C.tooltip}}},n.createElement(P,{sx:{...C.cellButtonsButton,...C.cellButtonMinWidth,opacity:1},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},n.createElement("div",{style:C.aclText},Number.isNaN(Number(s))?Number(r).toString(16):Number(s).toString(16)))):n.createElement("div",{key:"aclEmpty",style:C.cellButtonMinWidth}),o?n.createElement(P,{key:"edit",sx:{marginRight:"2px",...C.cellButtonsButton},size:"small","aria-label":"edit",title:this.texts.editObject,onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.setState({editObjectDialog:e,editObjectAlias:!1})}},n.createElement(Ks,{style:C.cellButtonsButtonIcon})):n.createElement(W,{component:"div",key:"editDisabled",sx:C.cellButtonsButton}),this.props.onObjectDelete&&((a=t.children)!=null&&a.length||!((u=t.data.obj.common)!=null&&u.dontDelete))?n.createElement(P,{key:"delete",sx:C.cellButtonsButton,size:"small","aria-label":"delete",onClick:()=>{var j,g,y;const N=Object.keys(this.objects);N.sort();let c=0;const L=`${e}.`;for(let d=0;dL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((j=t.children)!=null&&j.length),!((y=(g=t.data.obj)==null?void 0:g.common)!=null&&y.dontDelete),c)},title:this.texts.deleteObject},n.createElement(ut,{style:C.cellButtonsButtonIcon})):null,this.props.objectCustomDialog&&this.info.hasSomeCustoms&&t.data.obj.type==="state"&&((l=t.data.obj.common)==null?void 0:l.type)!=="file"?n.createElement(P,{sx:{...C.cellButtonsButton,...t.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:C.cellButtonsButtonWithoutCustoms},key:"custom",size:"small","aria-label":"config",title:this.texts.customConfig,onClick:()=>{var N;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.pauseSubscribe(!0),(N=this.props.router)==null||N.doNavigate(null,"customs",e),this.setState({customDialog:[e],customDialogAll:!1})}},n.createElement(Hr,{style:C.cellButtonsButtonIcon})):null]}readHistory(e){var t,s;if(window.sparkline&&this.defaultHistory&&((s=(t=this.objects[e])==null?void 0:t.common)!=null&&s.custom)&&this.objects[e].common.custom[this.defaultHistory]){const r=new Date;r.setHours(r.getHours()-24),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0);const o=r.getTime();this.props.socket.getHistory(e,{instance:this.defaultHistory,start:o,end:Date.now(),step:36e5,from:!1,ack:!1,q:!1,addId:!1,aggregate:"minmax"}).then(M=>{const a=window.document.getElementsByClassName("sparkline");for(let u=0;uconsole.warn(`Cannot read history: ${M}`))}}getTooltipInfo(e,t){var l,N,c;const s=this.objects[e],r=this.states[e],{valFull:o,fileViewer:M}=Qr({state:r,obj:s,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,full:!0}),a=[];o==null||o.forEach(L=>{L.t===this.texts.quality&&r.q?(a.push(n.createElement("div",{style:C.cellValueTooltipBoth,key:L.t},L.t,": ",L.v)),L.nbr||a.push(n.createElement("br",{key:`${L.t}_br`}))):(a.push(n.createElement("div",{style:C.cellValueTooltipTitle,key:L.t},L.t,": ")),a.push(n.createElement("div",{style:C.cellValueTooltipValue,key:`${L.t}_v`},L.v)),L.nbr||a.push(n.createElement("br",{key:`${L.t}_br`})))});const u=((l=s==null?void 0:s.common)==null?void 0:l.role)||"";M==="image"?a.push(n.createElement("img",{style:C.cellValueTooltipImage,src:r.val,alt:e})):u==="url"||s.common.role==="url.self"||s.common.role==="url.blank"?a.unshift(n.createElement("div",{key:"ctrl",style:{textDecoration:"underline",fontWeight:"bold"}},this.texts.ctrlForLink)):this.defaultHistory&&((c=(N=s==null?void 0:s.common)==null?void 0:N.custom)!=null&&c[this.defaultHistory])&&a.push(n.createElement("svg",{key:"sparkline",className:"sparkline","data-id":e,style:{fill:"#3d85de"},width:"200",height:"30",strokeWidth:"3"})),this.setState({tooltipInfo:{el:a,id:e}},()=>t&&t())}renderColumnValue(e,t,s){var u,l;const r=t.data.obj;if(!r||!this.states)return null;if(((u=r.common)==null?void 0:u.type)==="file")return n.createElement(W,{component:"div",sx:{...C.cellValueText,...C.cellValueFile}},"[file]");if(!this.states[e])return r.type==="state"&&(this.recordStates.includes(e)||this.recordStates.push(e),this.states[e]={val:null},this.subscribe(e)),null;this.recordStates.includes(e)||this.recordStates.push(e);const o=this.states[e];let M=t.data.state;if(!M){const{valText:N}=Qr({state:o,obj:r,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma}),c=[];if(t.data.state={valTextRx:c},c.push(n.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}valText`,style:{whiteSpace:"nowrap",display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}},N.v.toString())),N.u&&c.push(n.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,style:C.cellValueTextUnit,key:`${N.v.toString()}unit`},N.u)),N.s!==void 0&&c.push(n.createElement("span",{style:C.cellValueTextState,className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}states`},"(",N.s,")")),!s){const L=N.c!==void 0?N.c:N.v||"";c.push(n.createElement(Ts,{className:"copyButton",style:this.styles.iconCopy,onClick:j=>this.onCopy(j,L),key:"cc"}))}M=t.data.state}M.style=TLe({state:o,isExpertMode:this.state.filter.expertMode,isButton:t.data.button,nonAckColor:this.props.theme.palette.nonAck});let a=M.valTextRx;return this.state.filter.expertMode||(t.data.button?a=[n.createElement(uLe,{key:"button",style:{color:M.style.color,...C.cellValueButton}})]:t.data.switch&&(a=[n.createElement(Di,{key:"switch",sx:{"& .MuiSwitch-thumb":{color:M.style.color},"& .MuiSwitch-track":{backgroundColor:this.states[e].val&&this.state.selected.includes(e)?this.props.themeType==="dark"?"#FFF !important":"#111 !important":void 0}},checked:!!this.states[e].val})])),n.createElement(ae,{key:"value",title:(l=this.state.tooltipInfo)==null?void 0:l.el,slotProps:{popper:{sx:C.cellValueTooltipBox},tooltip:{sx:C.cellValueTooltip}},onOpen:()=>this.getTooltipInfo(e,()=>this.readHistory(e)),onClose:()=>{var N;return((N=this.state.tooltipInfo)==null?void 0:N.id)===e&&this.setState({tooltipInfo:null})}},n.createElement(W,{component:"div",style:M.style,className:t.data.url?"iob-link":void 0,sx:{...C.cellValueText,height:s?void 0:Ye,"& .admin-button:active":{transform:"translate(0, 2px)"}}},a))}_syncEnum(e,t,s,r){var a,u,l;if(!(t!=null&&t.length)){r&&r();return}const o=t.pop()||"",M=[];if((a=this.info.objects[o])!=null&&a.common){if((u=this.info.objects[o].common.members)!=null&&u.length){const N=this.info.objects[o].common.members.indexOf(e);if(N!==-1&&!s.includes(o)){const c=JSON.parse(JSON.stringify(this.info.objects[o]));c.common.members.splice(N,1),M.push(this.props.socket.setObject(o,c).then(()=>this.info.objects[o]=c).catch(L=>this.showError(L)))}}if(s.includes(o)&&!((l=this.info.objects[o].common.members)!=null&&l.includes(e))){const N=JSON.parse(JSON.stringify(this.info.objects[o]));N.common.members||=[],N.common.members.push(e),N.common.members.sort(),M.push(this.props.socket.setObject(o,N).then(()=>this.info.objects[o]=N).catch(c=>this.showError(c)))}}Promise.all(M).then(()=>{setTimeout(()=>this._syncEnum(e,t,s,r),0)})}syncEnum(e,t,s){const r=[...this.info[t==="func"?"funcEnums":"roomEnums"]];return new Promise(o=>{this._syncEnum(e,r,s,()=>{o()})})}renderEnumDialog(){if(!this.state.enumDialog)return null;const e=this.state.enumDialog.type,t=this.state.enumDialog.item,s=this.state.enumDialogEnums,r=this.state.enumDialog.enumsOriginal,o=(e==="room"?this.info.roomEnums:this.info.funcEnums).map(M=>{var a,u;return{name:Re(((u=(a=this.objects[M])==null?void 0:a.common)==null?void 0:u.name)||M.split(".").pop()||"",this.props.lang),value:M,icon:Xi(this.objects,M,this.props.lang,this.imagePrefix)}}).sort((M,a)=>M.name>a.name?1:-1);return o.forEach(M=>{M.icon&&typeof M.icon=="string"&&(M.icon=n.createElement(W,{style:C.enumIconDiv},n.createElement("img",{src:M.icon,style:C.enumIcon,alt:M.name})))}),n.createElement(de,{sx:{"& .MuiPaper-root":C.enumDialog},onClose:()=>this.setState({enumDialog:null}),"aria-labelledby":"enum-dialog-title",open:!0},n.createElement(Ie,{id:"enum-dialog-title",style:{display:"flex",justifyContent:"space-between",width:"100%",flexWrap:"nowrap",gap:8,paddingRight:12}},e==="func"?this.props.t("ra_Define functions"):this.props.t("ra_Define rooms"),n.createElement(Ct,{color:"primary",disabled:r===JSON.stringify(s),size:"small",onClick:()=>this.syncEnum(t.data.id,e,s).then(()=>this.setState({enumDialog:null,enumDialogEnums:null}))},n.createElement(ve,null))),n.createElement(CM,{sx:{"&.MuiList-root":C.enumList}},o.map(M=>{let a,u,l;typeof M=="object"?(a=M.value,u=M.name,l=M.icon):(a=M,u=M);const N=`checkbox-list-label-${a}`;return n.createElement(ul,{sx:C.headerCellSelectItem,key:a,onClick:()=>{const c=s.indexOf(a),L=JSON.parse(JSON.stringify(this.state.enumDialogEnums));c===-1?(L.push(a),L.sort()):L.splice(c,1),this.setState({enumDialogEnums:L})},secondaryAction:l},n.createElement(Yt,{sx:{"&.MuiListItemIcon-root":C.enumCheckbox}},n.createElement(ne,{edge:"start",checked:s.includes(a),tabIndex:-1,disableRipple:!0,slotProps:{input:{"aria-labelledby":N}}})),n.createElement(nt,{id:N},u))})))}renderEditRoleDialog(){var e,t;if(!this.state.roleDialog||!this.props.objectBrowserEditRole)return null;if(this.state.roleDialog&&this.props.objectBrowserEditRole){const s=this.props.objectBrowserEditRole;return n.createElement(s,{key:"objectBrowserEditRole",id:this.state.roleDialog,socket:this.props.socket,t:this.props.t,roleArray:this.info.roles,commonType:(t=(e=this.info.objects[this.state.roleDialog])==null?void 0:e.common)==null?void 0:t.type,onClose:r=>{r&&(this.info.objects[this.state.roleDialog]=r),this.setState({roleDialog:null})}})}return null}onColumnsEditCustomDialogClose(e){var s,r;const t=this.customColumnDialog;if(e){let o=t.value;t.type==="boolean"?o=o==="true"||o===!0:t.type==="number"&&(o=parseFloat(o)),this.customColumnDialog=null,this.props.socket.getObject(((r=(s=this.state.columnsEditCustomDialog)==null?void 0:s.obj)==null?void 0:r._id)||"").then(M=>{var a;if(M&&DLe(M,(a=this.state.columnsEditCustomDialog)==null?void 0:a.it,o))return this.props.socket.setObject(M._id,M);throw new Error(this.props.t("ra_Cannot update attribute, because not found in the object"))}).then(()=>this.setState({columnsEditCustomDialog:null})).catch(M=>this.showError(M))}else this.customColumnDialog=null,this.setState({columnsEditCustomDialog:null})}renderColumnsEditCustomDialog(){if(!this.state.columnsEditCustomDialog)return null;if(!this.customColumnDialog){const e=ja(this.state.columnsEditCustomDialog.obj,this.state.columnsEditCustomDialog.it);this.customColumnDialog={type:this.state.columnsEditCustomDialog.it.type||typeof e,initValue:(e??"").toString(),value:(e??"").toString()}}return n.createElement(de,{onClose:()=>this.setState({columnsEditCustomDialog:null}),maxWidth:"md","aria-labelledby":"custom-dialog-title",open:!0},n.createElement(Ie,{id:"custom-dialog-title"},`${this.props.t("ra_Edit object field")}: ${this.state.columnsEditCustomDialog.obj._id}`),n.createElement(Ae,null,n.createElement(Jt,{id:"alert-dialog-description"},this.customColumnDialog.type==="boolean"?n.createElement(H,{control:n.createElement(ne,{onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),defaultChecked:this.customColumnDialog.value==="true",onChange:e=>{const t=this.customColumnDialog;t.value=e.target.checked.toString();const s=t.value!==t.initValue;s===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:s})}}),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}):n.createElement(le,{variant:"standard",defaultValue:this.customColumnDialog.value,fullWidth:!0,onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`,onChange:e=>{const t=this.customColumnDialog;t.value=e.target.value;const s=t.value!==t.initValue;s===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:s})},autoFocus:!0}))),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(!0),disabled:!this.state.customColumnDialogValueChanged,color:"primary",startIcon:n.createElement(ve,null)},this.props.t("ra_Update")),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(),startIcon:n.createElement(ge,null)},this.props.t("ra_Cancel"))))}renderCustomValue(e,t,s){const r=ja(e,t);return r!=null?t.edit&&!this.props.notEditable&&(!t.objTypes||t.objTypes.includes(e.type))?n.createElement(W,{component:"div",style:{...C.columnCustom,...C.columnCustomEditable,...C[`columnCustom_${t.align}`]},onClick:()=>this.setState({columnsEditCustomDialog:{item:s,it:t,obj:e},customColumnDialogValueChanged:!1})},r):n.createElement(W,{component:"div",style:{...C.columnCustom,...C[`columnCustom_${t.align}`]}},r):null}renderAliasLink(e,t,s){const r=t||0,o=this.objects[this.info.aliasesMap[e][r]].common.alias.id;return o?n.createElement(W,{component:"div",onClick:M=>{M.stopPropagation(),M.preventDefault();const a=this.info.aliasesMap[e][r];this.info.aliasesMap[e].length>1&&this.setState({aliasMenu:""}),this.onSelect(a),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(a)),100)},sx:s||this.styles.aliasAlone},n.createElement("span",{className:"admin-browser-arrow"},typeof o=="string"||o.read===e&&o.write===e?"↔":o.read===e?"→":"←"),this.info.aliasesMap[e][r]):null}renderLeaf(e,t,s){var Us,bs,$s,Ti,yi,lM,NM,LM,jM,gM,TM,yM,DM,dM;const r=e.data.id;s.count++,t=t===void 0?this.state.expanded.includes(r):t;let o;const M=e.data.obj,a=M==null?void 0:M.type;e.children||a==="folder"||a==="device"||a==="channel"||a==="meta"?o=t?n.createElement(bi,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):n.createElement(ms,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):M&&M.common&&M.common.write===!1&&M.type==="state"?o=n.createElement(sLe,{style:this.styles.cellIdIconDocument}):o=n.createElement(tLe,{style:this.styles.cellIdIconDocument});let u=null;e.data.icon&&(typeof e.data.icon=="string"?e.data.icon.length<3?u=n.createElement("span",{className:"iconOwn",style:C.cellIdIconOwn},e.data.icon):u=n.createElement(xe,{style:C.cellIdIconOwn,className:"iconOwn",src:e.data.icon,alt:""}):u=e.data.icon);const l=M==null?void 0:M.common,N=(M==null?void 0:M.type)&&Ta[M.type]||n.createElement("div",{className:"itemIcon"}),c=this.levelPadding*(e.data.level||0);if(e.data.lang!==this.props.lang){const{rooms:Q,per:q}=mu(this.info,r,this.props.lang);e.data.rooms=Q.join(", "),e.data.per=q;const{funcs:Ue,pef:we}=pu(this.info,r,this.props.lang);e.data.funcs=Ue.join(", "),e.data.pef=we,e.data.lang=this.props.lang}const L=this.props.multiSelect&&this.objects[r]&&(!this.props.types||this.props.types.includes(this.objects[r].type))?n.createElement(ne,{style:C.checkBox,checked:this.state.selected.includes(r)}):null;let j=!this.props.notEditable&&a==="state"&&(this.state.filter.expertMode||(l==null?void 0:l.write)!==!1);this.props.objectBrowserViewFile&&(l==null?void 0:l.type)==="file"&&(j=!0);const g=!this.props.notEditable&&this.objects[r]&&(this.state.filter.expertMode||a==="state"||a==="channel"||a==="device"),y=this.state.statesView&&(a==="state"||a==="channel"||a==="device");let d="";const I=[];if(y&&(d=(Us=this.states[r])==null?void 0:Us.from,d===void 0?d=" ":(d=d?d.replace(/^system\.adapter\.|^system\./,""):"",I.push(`${this.texts.stateChangedFrom} ${d}`)),M!=null&&M.user)){const Q=M.user.replace("system.user.","");d+=`/${Q}`,I.push(`${this.texts.stateChangedBy} ${Q}`)}M&&(M.from&&I.push(`${this.texts.objectChangedFrom} ${M.from.replace(/^system\.adapter\.|^system\./,"")}`),M.user&&I.push(`${this.texts.objectChangedBy} ${M.user.replace(/^system\.user\./,"")}`),M.ts&&I.push(`${this.texts.objectChangedByUser} ${E.formatDate(new Date(M.ts),this.props.dateFormat||this.systemConfig.common.dateFormat)}`));let m=!1,w=null;r.startsWith("alias.")&&((bs=l==null?void 0:l.alias)!=null&&bs.id)?(m=typeof l.alias.id=="object",m?w=n.createElement("div",{style:C.cellIdAliasReadWriteDiv},l.alias.id.read?n.createElement(W,{component:"div",onClick:Q=>{Q.stopPropagation(),Q.preventDefault(),this.onSelect(l.alias.id.read),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.read)),100)},sx:this.styles.aliasReadWrite},"←",l.alias.id.read):null,l.alias.id.write?n.createElement(W,{component:"div",onClick:Q=>{Q.stopPropagation(),Q.preventDefault(),this.onSelect(l.alias.id.write),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.write)),100)},sx:this.styles.aliasReadWrite},"→",l.alias.id.write):null):w=n.createElement(W,{component:"div",onClick:Q=>{Q.stopPropagation(),Q.preventDefault(),this.onSelect(l.alias.id),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id)),100)},sx:this.styles.aliasAlone},"→",l.alias.id)):this.info.aliasesMap[r]&&(this.info.aliasesMap[r].length>1?w=n.createElement(W,{component:"div",id:`alias_${r}`,onClick:Q=>{Q.stopPropagation(),Q.preventDefault(),this.setState({aliasMenu:r})},sx:this.styles.aliasAlone},this.props.t("ra_%s links from aliases",this.info.aliasesMap[r].length)):w=this.renderAliasLink(r,0));let O=l==null?void 0:l.color,A;if(O&&!this.state.selected.includes(r)){const Q=this.props.themeName==="dark"?"#1f1f1f":this.props.themeName==="blue"?"#222a2e":"#FFFFFF";E.colorDistance(O,Q)<1e3&&(A=this.props.themeType==="dark"?"#9a9a9a":"#565656")}let h=!1;r==="0_userdata"?(O=du(this.props.themeType),h=!0):r==="alias"?(O=zu(this.props.themeType),h=!0):r==="javascript"?(O=aLe(this.props.themeType),h=!0):r==="system"?(O=hu(this.props.themeType),h=!0):r==="system.adapter"?O=Iu(this.props.themeType):(!O||this.state.selected.includes(r))&&(O="inherit");const p=[];if(l!=null&&l.statusStates){const Q={};Object.keys(l.statusStates).forEach(Ue=>{var it;let we=l.statusStates[Ue];we.split(".").length<3&&(we=`${r}.${we}`),Q[Ue]=we,this.states[we]?this.recordStates.includes(we)||this.recordStates.push(we):((it=this.objects[we])==null?void 0:it.type)==="state"&&(this.recordStates.includes(we)||this.recordStates.push(we),this.states[we]={val:null},this.subscribe(we))});let q=!1;l.statusStates.errorId&&this.states[Q.errorId]&&this.states[Q.errorId].val&&(O=this.props.themeType==="dark"?Ou:Eu,q=!0,p.push(n.createElement(Wl,{key:"error",style:this.styles.iconDeviceError}))),Q.onlineId&&this.states[Q.onlineId]?q?this.states[Q.onlineId].val?p.push(n.createElement(zs,{key:"conn",style:this.styles.iconDeviceConnected})):p.push(n.createElement(di,{key:"disc",style:this.styles.iconDeviceDisconnected})):this.states[Q.onlineId].val?(O=this.props.themeType==="dark"?To:yo,p.push(n.createElement(zs,{key:"conn",style:this.styles.iconDeviceConnected}))):(O=this.props.themeType==="dark"?Do:zo,p.push(n.createElement(di,{key:"disc",style:this.styles.iconDeviceDisconnected}))):Q.offlineId&&this.states[Q.offlineId]&&(q?this.states[Q.offlineId].val?p.push(n.createElement(di,{key:"disc",style:this.styles.iconDeviceDisconnected})):p.push(n.createElement(zs,{key:"conn",style:this.styles.iconDeviceConnected})):this.states[Q.offlineId].val?(O=this.props.themeType==="dark"?Do:zo,p.push(n.createElement(di,{key:"disc",style:this.styles.iconDeviceDisconnected}))):(O=this.props.themeType==="dark"?To:yo,p.push(n.createElement(zs,{key:"conn",style:this.styles.iconDeviceConnected}))))}const S=y?E.quality2text((($s=this.states[r])==null?void 0:$s.q)||0).join(", "):null;let f=((Ti=e.data)==null?void 0:Ti.title)||"",$=!1;if(this.state.showDescription){const Q=Cu(e.data,this.props.lang);Q&&(f=[n.createElement("div",{key:"name",style:C.cellNameDivDiv},f),n.createElement("div",{key:"desc",style:C.cellDescription},Q)],$=!!Q)}const x=this.props.width==="xs"&&this.state.focused===r,Z=n.createElement(Ut,{container:!0,wrap:"nowrap",direction:"row",sx:C.cellId,style:{width:this.columnsVisibility.id,paddingLeft:c}},n.createElement(Ut,{container:!0,alignItems:"center"},L,o),n.createElement(Ut,{style:{...C.cellIdSpan,...A?this.styles.invertedBackground:void 0,color:O,fontWeight:h?"bold":void 0}},n.createElement(ae,{title:gLe(e.data,this.props.lang),slotProps:{popper:{sx:C.tooltip}}},n.createElement("div",null,e.data.name)),w,p),n.createElement("div",{style:{...C.grow,...A?this.styles.invertedBackgroundFlex:{}}}),n.createElement(Ut,{container:!0,alignItems:"center"},u),this.props.width!=="xs"?n.createElement("div",null,n.createElement(Ts,{className:x?"":"copyButton",style:C.cellCopyButton,onClick:Q=>this.onCopy(Q,r)})):null);let k=x&&f||this.columnsVisibility.name?n.createElement(W,{component:"div",sx:{...C.cellName,...$?C.cellNameWithDesc:void 0,width:this.props.width!=="xs"?this.columnsVisibility.name:void 0,ml:x?0:"5px"}},f,!x&&((yi=e.data)!=null&&yi.title)?n.createElement(W,{style:{color:O}},n.createElement(Ts,{className:"copyButton",style:C.cellCopyButton,onClick:Q=>{var q;return this.onCopy(Q,(q=e.data)==null?void 0:q.title)}})):null):null,Y;this.state.statesView?Y=[x&&y&&((lM=this.states[r])!=null&&lM.from)||this.columnsVisibility.changedFrom?{el:n.createElement("div",{key:"from",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.changedFrom:void 0},title:I.join(` -`)},y&&((NM=this.states[r])!=null&&NM.from)?d:null),type:"from"}:null,x&&S||this.columnsVisibility.qualityCode?{el:n.createElement("div",{key:"q",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.qualityCode:void 0},title:S||""},S),type:"quality"}:null,x&&y&&((LM=this.states[r])!=null&&LM.ts)||this.columnsVisibility.timestamp?{el:n.createElement("div",{key:"ts",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.timestamp:void 0}},y&&((jM=this.states[r])!=null&&jM.ts)?E.formatDate(new Date(this.states[r].ts),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"ts"}:null,x&&y&&((gM=this.states[r])!=null&&gM.lc)||this.columnsVisibility.lastChange?{el:n.createElement("div",{key:"lc",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.lastChange:void 0}},y&&((TM=this.states[r])!=null&&TM.lc)?E.formatDate(new Date(this.states[r].lc),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"lc"}:null]:Y=[x&&(M!=null&&M.type)||this.columnsVisibility.type?{el:n.createElement("div",{key:"type",style:{...C.cellType,width:this.props.width!=="xs"?this.columnsVisibility.type:void 0}},N," ",M==null?void 0:M.type),type:"filter_type"}:null,x&&l||this.columnsVisibility.role?{el:n.createElement("div",{key:"role",style:{...C.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.role:"100%",cursor:this.state.filter.expertMode&&g&&this.props.objectBrowserEditRole?"text":"default"},onClick:!x&&this.state.filter.expertMode&&g&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0},l==null?void 0:l.role),type:"filter_role",onClick:x&&this.state.filter.expertMode&&g&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0}:null,x&&l||this.columnsVisibility.room?{el:n.createElement("div",{key:"room",style:{...C.cellRoom,...e.data.per?C.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.room:"100%",cursor:g?"text":"default"},onClick:!x&&g?()=>{const Q=ys(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:Q,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(Q)}})}:void 0},e.data.rooms),type:"filter_room",onClick:x&&g?()=>{const Q=ys(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:Q,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(Q)}})}:void 0}:null,x&&l||this.columnsVisibility.func?{el:n.createElement("div",{key:"func",style:{...C.cellFunc,...e.data.pef?C.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.func:"100%",cursor:g?"text":"default"},onClick:!x&&g?()=>{const Q=ys(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:Q,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(Q)}})}:void 0},e.data.funcs),type:"filter_func",onClick:x&&g?()=>{const Q=ys(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:Q,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(Q)}})}:void 0}:null];let J=((yM=this.adapterColumns)==null?void 0:yM.map(Q=>n.createElement("div",{style:{...C.cellAdapter,width:this.props.width!=="xs"?this.columnsVisibility[Q.id]:void 0},key:Q.id,title:`${Q.adapter} => ${Q.pathText}`},M?this.renderCustomValue(M,Q,e):null)))||null;const Le=x||this.columnsVisibility.val?this.renderColumnValue(r,e,x):null;let Je=x&&Le||this.columnsVisibility.val?n.createElement("div",{style:{...C.cellValue,width:this.props.width!=="xs"?this.columnsVisibility.val:"calc(100% - 100px)",cursor:j?(l==null?void 0:l.type)==="file"?"zoom-in":e.data.button?"grab":"text":"default"},onClick:Q=>{var q,Ue,we;if(j){if(!(!M||!this.states))if((l==null?void 0:l.type)==="file")this.setState({viewFileDialog:r});else if(e.data.url&&Q.ctrlKey){if((q=this.states[r])!=null&&q.val&&typeof this.states[r].val=="string")if((l==null?void 0:l.role)==="url.self")window.location.href=this.states[r].val;else{const it=window.open(this.states[r].val,"_blank");it==null||it.focus()}}else!this.state.filter.expertMode&&e.data.button?this.props.socket.setState(r,!0).catch(it=>window.alert(`Cannot write state "${r}": ${it}`)):!this.state.filter.expertMode&&e.data.switch?this.props.socket.setState(r,!this.states[r].val).catch(it=>window.alert(`Cannot write state "${r}": ${it}`)):(this.edit={val:this.states[r]?this.states[r].val:"",q:this.states[r]&&this.states[r].q||0,ack:!1,id:r},this.setState({updateOpened:!0}))}else(l==null?void 0:l.role)==="url"||(l==null?void 0:l.role)==="url.blank"&&Q.ctrlKey?(Ue=this.states[r])!=null&&Ue.val&&typeof this.states[r].val=="string"&&window.open(this.states[r].val,"_blank"):(l==null?void 0:l.role)==="url.self"&&Q.ctrlKey&&(we=this.states[r])!=null&&we.val&&typeof this.states[r].val=="string"&&(window.location.href=this.states[r].val)}},Le):null,qe=x||this.columnsVisibility.buttons?n.createElement("div",{style:{...C.cellButtons,width:this.props.width!=="xs"?this.columnsVisibility.buttons:void 0}},this.renderColumnButtons(r,e)):null,us=null;if(this.props.width==="xs"&&this.state.focused===r){Y=Y.filter(q=>q);let Q;Y.length?Q=Y.map(q=>q?n.createElement("div",{key:q.type,style:C.cellDetailsLine},n.createElement("span",{style:C.cellDetailsName},this.texts[q.type],":"),q.el,n.createElement("div",{style:{flexGrow:1}}),q.onClick?n.createElement(Ks,{style:C.cellCopyButtonInDetails,onClick:()=>{q!=null&&q.onClick&&q.onClick()}}):null):null):Q=null,J.length||(J=null),us=n.createElement(Ja,{style:{width:"100%",display:"flex",flexDirection:"column",padding:10,backgroundColor:this.props.theme.palette.mode==="dark"?"#333":"#ccc"}},n.createElement("div",{style:C.cellDetailsLine},n.createElement("div",{style:{flexGrow:1}}),n.createElement(Ts,{style:C.cellCopyButtonInDetails,onClick:q=>this.onCopy(q,r)})),k&&n.createElement("div",{style:C.cellDetailsLine},n.createElement("span",{style:C.cellDetailsName},this.texts.name,":"),k,n.createElement("div",{style:{flexGrow:1}}),(DM=e.data)!=null&&DM.title?n.createElement(Ts,{className:"copyButton",style:C.cellCopyButtonInDetails,onClick:q=>{var Ue;return this.onCopy(q,(Ue=e.data)==null?void 0:Ue.title)}}):null),Q,J&&n.createElement("div",{style:C.cellDetailsLine},J),((dM=this.objects[r])==null?void 0:dM.type)==="state"&&n.createElement("div",{style:C.cellDetailsLine},n.createElement("span",{style:C.cellDetailsName},this.texts.value,":"),Je,n.createElement("div",{style:{flexGrow:1}}),n.createElement(Ts,{className:"copyButton",style:C.cellCopyButtonInDetails,onClick:q=>{const{valText:Ue}=Qr({state:this.states[r],obj:this.objects[r],texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma});this.onCopy(q,Ue.c!==void 0?Ue.c:Ue.v.toString())},key:"cc"})),qe&&n.createElement("div",{style:{...C.cellDetailsLine,justifyContent:"right"}},qe)),k=null,Y=null,J=null,Je=null,qe=null}return{row:n.createElement(Ut,{container:!0,direction:"row",wrap:"nowrap",sx:E.getStyle(this.props.theme,C.tableRow,this.state.linesEnabled&&C.tableRowLines,!this.props.dragEnabled&&C.tableRowNoDragging,w&&C.tableRowAlias,m&&C.tableRowAliasReadWrite,this.state.focused===r&&this.props.multiSelect&&C.tableRowFocused,!e.data.visible&&C.filteredOut,e.data.hasVisibleParent&&!e.data.visible&&!e.data.hasVisibleChildren&&C.filteredParentOut,this.state.selected.includes(r)&&C.itemSelected,this.state.selectedNonObject===r&&C.itemSelected),key:r,id:r,onMouseDown:Q=>{this.onSelect(r);let q;"which"in Q?q=Q.which===3:"button"in Q&&(q=Q.button===2),q?this.contextMenu={item:e,ts:Date.now()}:this.contextMenu=null},onDoubleClick:()=>{e.children?this.toggleExpanded(r):this.onSelect(r,!0)}},Z,k,Y==null?void 0:Y.map(Q=>Q==null?void 0:Q.el),J,Je,qe),details:us}}renderItem(e,t,s){const r=[];s=s||{count:0};const o=this.renderLeaf(e,t,s);let M;const a=this.props.DragWrapper;return this.props.dragEnabled&&a?e.data.sumVisibility?M=n.createElement(a,{key:e.data.id,item:e,style:C.draggable},o.row):M=n.createElement("div",{key:e.data.id,style:C.nonDraggable},o.row):M=o.row,e.data.id&&M&&r.push(M),o.details&&r.push(o.details),t=t===void 0?oi(this.state.expanded,e.data.id):t,(!e.data.id||t)&&(this.state.foldersFirst?e.children&&(r.push(e.children.map(u=>u.children&&(!this.state.columnsSelectorShow||s.count<15)&&u.data.sumVisibility?this.renderItem(u,void 0,s):null)),r.push(e.children.map(u=>!u.children&&(!this.state.columnsSelectorShow||s.count<15)&&u.data.sumVisibility?this.renderItem(u,void 0,s):null))):e.children&&r.push(e.children.map(u=>(!this.state.columnsSelectorShow||s.count<15)&&u.data.sumVisibility?this.renderItem(u,void 0,s):null))),r}calculateColumnsVisibility(e,t,s,r){let o=r||this.state.columnsWidths;const M=s||this.state.columnsForAdmin,a=t||this.state.columns||[],u=typeof e!="boolean"?this.state.columnsAuto:e;o=JSON.parse(JSON.stringify(o)),Object.keys(o).forEach(N=>{o[N]&&(o[N]=parseInt(o[N],10)||0)}),this.adapterColumns=[];const l=je[this.props.width||"lg"].widths;if(u){if(this.columnsVisibility={id:je[this.props.width||"lg"].idWidth,name:this.visibleCols.includes("name")&&l.name||0,nameHeader:this.visibleCols.includes("name")&&l.name||0,type:this.visibleCols.includes("type")&&l.type||0,role:this.visibleCols.includes("role")&&l.role||0,room:this.visibleCols.includes("room")&&l.room||0,func:this.visibleCols.includes("func")&&l.func||0,changedFrom:this.visibleCols.includes("changedFrom")&&l.changedFrom||0,qualityCode:this.visibleCols.includes("qualityCode")&&l.qualityCode||0,timestamp:this.visibleCols.includes("timestamp")&&l.timestamp||0,lastChange:this.visibleCols.includes("lastChange")&&l.lastChange||0,val:this.visibleCols.includes("val")&&l.val||0,buttons:this.visibleCols.includes("buttons")&&l.buttons||0},this.columnsVisibility.name&&!this.customWidth){let N=this.columnsVisibility.id||0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.name=`calc(100% - ${N+5}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${N+5+this.state.scrollBarWidth}px)`}else if(!this.customWidth){let N=0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.id=`calc(100% - ${N+5}px)`}}else{const N=this.props.width||"lg";this.columnsVisibility={id:o.id||je[N].idWidth,name:a.includes("name")&&(o.name||l.name||je[N].widths.name)||0,type:a.includes("type")&&(o.type||l.type||je[N].widths.type)||0,role:a.includes("role")&&(o.role||l.role||je[N].widths.role)||0,room:a.includes("room")&&(o.room||l.room||je[N].widths.room)||0,func:a.includes("func")&&(o.func||l.func||je[N].widths.func)||0};let c=this.columnsVisibility.id;if(this.columnsVisibility.name&&(c+=this.columnsVisibility.type||0,c+=this.columnsVisibility.role||0,c+=this.columnsVisibility.room||0,c+=this.columnsVisibility.func||0),M&&a&&Object.keys(M).sort().forEach(L=>M[L].forEach(j=>{const g=`_${L}_${j.path}`;if(a.includes(g)){const y={adapter:L,id:`_${L}_${j.path}`,name:j.name,path:j.path.split("."),pathText:j.path};j.edit&&(y.edit=!0,j.type&&(y.type=j.type),j.objTypes&&(y.objTypes=j.objTypes)),this.adapterColumns.push(y),this.columnsVisibility[g]=o[y.id]||j.width||je[N].widths.func||je.xl.widths.func||0,c+=this.columnsVisibility[g]}else this.columnsVisibility[g]=0})),this.adapterColumns.sort((L,j)=>L.id>j.id?-1:L.idg==="id"||typeof this.columnsVisibility[g]=="string"||!this.columnsVisibility[g]?j:j+this.columnsVisibility[g],0);this.columnsVisibility.id=`calc(100% - ${L}px)`}}}resizerMouseMove=e=>{if(this.resizerActiveDiv){let t,s;this.resizeLeft?(t=this.resizerOldWidth-e.clientX+this.resizerPosition,s=this.resizerOldWidthNext+e.clientX-this.resizerPosition):(t=this.resizerOldWidth+e.clientX-this.resizerPosition,s=this.resizerOldWidthNext-e.clientX+this.resizerPosition),this.resizerActiveName&&this.resizerNextName&&(!this.resizerMin||t>this.resizerMin)&&(!this.resizerNextMin||s>this.resizerNextMin)&&(this.resizerCurrentWidths[this.resizerActiveName]=t,this.resizerCurrentWidths[this.resizerNextName]=s,this.resizerActiveDiv.style.width=`${t}px`,this.resizerNextDiv&&(this.resizerNextDiv.style.width=`${s}px`),this.columnsVisibility[this.resizerActiveName]=t,this.columnsVisibility[this.resizerNextName]=s,this.resizerNextName==="nameHeader"?(this.columnsVisibility.name=s-this.state.scrollBarWidth,this.resizerCurrentWidths.name=s-this.state.scrollBarWidth):this.resizerActiveName==="nameHeader"&&(this.columnsVisibility.name=t-this.state.scrollBarWidth,this.resizerCurrentWidths.name=t-this.state.scrollBarWidth),this.customWidth=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=null,this.forceUpdate()},200))}};resizerMouseUp=()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveName=null,this.resizerNextName=null,this.resizerActiveDiv=null,this.resizerNextDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{if(this.storedWidths||=JSON.parse(JSON.stringify(je[this.props.width||"lg"])),this.resizerCurrentWidths||={},this.resizerActiveDiv=e.target.parentNode,this.resizerActiveName=this.resizerActiveDiv.dataset.name||null,this.resizerActiveName){let t=0;if(e.target.dataset.left==="true"){this.resizeLeft=!0,this.resizerNextDiv=this.resizerActiveDiv.previousElementSibling;let s=this.resizerNextDiv.querySelector(".iob-ob-resize-handler");for(;this.resizerNextDiv&&!s&&t<10;)this.resizerNextDiv=this.resizerNextDiv.previousElementSibling,s=this.resizerNextDiv.querySelector(".iob-ob-resize-handler"),t++;(s==null?void 0:s.dataset.left)!=="true"&&(this.resizerNextDiv=this.resizerNextDiv.nextElementSibling)}else this.resizeLeft=!1,this.resizerNextDiv=this.resizerActiveDiv.nextElementSibling;this.resizerNextName=this.resizerNextDiv.dataset.name||null,this.resizerMin=parseInt(this.resizerActiveDiv.dataset.min,10)||0,this.resizerNextMin=parseInt(this.resizerNextDiv.dataset.min,10)||0,this.resizerPosition=e.clientX,this.resizerCurrentWidths[this.resizerActiveName]=this.resizerActiveDiv.offsetWidth,this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveName],this.resizerNextName&&(this.resizerCurrentWidths[this.resizerNextName]=this.resizerNextDiv.offsetWidth,this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerNextName]),window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};navigateKeyPress(e){var s,r;const t=this.state.selectedNonObject||this.state.selected[0];if(t){if(e.code==="ArrowUp"||e.code==="ArrowDown"){e.preventDefault();const o=[];(s=this.tableRef.current)==null||s.childNodes.forEach(l=>o.push(l.id));const M=o.indexOf(t),a=e.code==="ArrowDown"?M+1:M-1,u=o[a]||t;this.onSelect(u),this.scrollToItem(u)}if((e.code==="ArrowRight"||e.code==="ArrowLeft")&&this.toggleExpanded(t),e.code==="Delete"&&this.root&&t){const o=Ki.getItemFromRoot(this.root,t);if(o){const{obj:M}=o.data;M&&!((r=M.common)!=null&&r.dontDelete)&&this.showDeleteDialog({id:t,obj:M,item:o})}}}}static getItemFromRoot(e,t){const s=t.split(".");let r="",o=e;for(let M=0;M{this.customWidth=!1,je[this.props.width||"lg"]=JSON.parse(JSON.stringify(this.storedWidths)),this.calculateColumnsVisibility(),this.localStorage.removeItem(`${this.props.dialogName||"App"}.table`),this.forceUpdate()};renderHandleRight(){return n.createElement(W,{component:"div",className:"iob-ob-resize-handler",sx:{...C.resizeHandle,...C.resizeHandleRight},onMouseDown:this.resizerMouseDown,onDoubleClick:this.resizerReset,title:this.props.t("ra_Double click to reset table layout")})}renderHeader(){let e=null;return!this.columnsVisibility.buttons&&!this.isFilterEmpty()&&(e=n.createElement(P,{onClick:()=>this.clearFilter(),style:C.buttonClearFilter,title:this.props.t("ra_Clear filter"),size:"large"},n.createElement(rLe,null),n.createElement(ge,{style:C.buttonClearFilterIcon}))),this.props.width==="xs"?n.createElement("div",{style:C.headerRow},n.createElement("div",{style:{...C.headerCell,width:"100%"}},this.getFilterInput("id"))):n.createElement("div",{style:C.headerRow},n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.id,position:"relative"},"data-min":240,"data-name":"id"},this.getFilterInput("id"),this.renderHandleRight()),this.columnsVisibility.name?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.nameHeader,position:"relative"},"data-min":100,"data-name":"nameHeader"},this.getFilterInput("name"),this.renderHandleRight()):null,!this.state.statesView&&n.createElement(n.Fragment,null,this.columnsVisibility.type?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.type,position:"relative"},"data-min":100,"data-name":"type"},this.getFilterSelectType(),this.renderHandleRight()):null,this.columnsVisibility.role?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.role,position:"relative"},"data-min":100,"data-name":"role"},this.getFilterSelectRole(),this.renderHandleRight()):null,this.columnsVisibility.room?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.room,position:"relative"},"data-min":100,"data-name":"room"},this.getFilterSelectRoom(),this.renderHandleRight()):null,this.columnsVisibility.func?n.createElement("div",{style:{...C.headerCell,width:this.columnsVisibility.func,position:"relative"},"data-min":100,"data-name":"func"},this.getFilterSelectFunction(),this.renderHandleRight()):null),this.state.statesView&&n.createElement(n.Fragment,null,n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.changedFrom,position:"relative"},"data-min":100,"data-name":"changedFrom"},this.props.t("ra_Changed from"),this.renderHandleRight()),n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.qualityCode,position:"relative"},"data-min":100,"data-name":"qualityCode"},this.props.t("ra_Quality code"),this.renderHandleRight()),n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.timestamp,position:"relative"},"data-min":100,"data-name":"timestamp"},this.props.t("ra_Timestamp"),this.renderHandleRight()),n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.lastChange,position:"relative"},"data-min":100,"data-name":"lastChange"},this.props.t("ra_Last change"),this.renderHandleRight())),this.adapterColumns.map(t=>n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility[t.id]},title:t.adapter,key:t.id,"data-min":100,"data-name":t.id},t.name)),this.columnsVisibility.val?n.createElement("div",{style:{...C.headerCell,...C.headerCellValue,width:this.columnsVisibility.val,position:"relative"},"data-min":120,"data-name":"val"},this.props.t("ra_Value"),e):null,this.columnsVisibility.buttons?n.createElement("div",{title:this.texts.filter_custom,style:{...C.headerCell,width:this.columnsVisibility.buttons}}," ",this.getFilterSelectCustoms()):null)}renderToast(){return n.createElement(Br,{open:!!this.state.toast,autoHideDuration:3e3,onClick:()=>this.setState({toast:""}),onClose:()=>this.setState({toast:""}),message:this.state.toast,action:n.createElement(P,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({toast:""})},n.createElement(ge,{fontSize:"small"}))})}componentDidUpdate(){if(this.tableRef.current){const e=this.tableRef.current.offsetWidth-this.tableRef.current.clientWidth;this.state.scrollBarWidth!==e?setTimeout(()=>this.setState({scrollBarWidth:e}),100):this.selectFirst&&this.scrollToItem(this.selectFirst)}}scrollToItem(e){this.selectFirst="";const t=window.document.getElementById(e);t==null||t.scrollIntoView({behavior:"auto",block:"center",inline:"center"})}renderCustomDialog(){if(this.state.customDialog&&this.props.objectCustomDialog){const e=this.props.objectCustomDialog;return n.createElement(e,{reportChangedIds:t=>this.changedIds=[...t],objectIDs:this.state.customDialog,allVisibleObjects:!!this.state.customDialogAll,expertMode:this.state.filter.expertMode,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,t:this.props.t,lang:this.props.lang,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,objects:this.objects,customsInstances:this.info.customs,onClose:()=>{var t;this.pauseSubscribe(!1),this.setState({customDialog:null}),this.changedIds&&(this.changedIds=null,this.forceUpdate()),(t=this.props.router)==null||t.doNavigate("tab-objects")},systemConfig:this.systemConfig})}return null}onUpdate(e){this.props.socket.setState(this.edit.id,{val:e.val,ack:e.ack,q:e.q||0,expire:e.expire||void 0}).catch(t=>this.showError(`Cannot write value: ${t}`))}renderEditObjectDialog(){if(!this.state.editObjectDialog||!this.props.objectBrowserEditObject)return null;const e=this.props.objectBrowserEditObject;return n.createElement(e,{key:this.state.editObjectDialog,obj:this.objects[this.state.editObjectDialog],roleArray:this.info.roles,objects:this.objects,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,dialogName:this.props.dialogName,aliasTab:this.state.editObjectAlias,t:this.props.t,expertMode:!!this.state.filter.expertMode,onNewObject:t=>this.props.socket.setObject(t._id,t).then(()=>this.setState({editObjectDialog:t._id,editObjectAlias:!1},()=>this.onSelect(t._id))).catch(s=>this.showError(`Cannot write object: ${s}`)),onClose:t=>{var s,r;if(t){let o;this.state.editObjectDialog.startsWith("alias.")&&JSON.stringify((s=this.objects[this.state.editObjectDialog].common)==null?void 0:s.alias)!==JSON.stringify((r=t.common)==null?void 0:r.alias)&&(o=this.state.editObjectDialog),this.props.socket.setObject(t._id,t).then(()=>{o&&this.subscribes.includes(o)&&(this.unsubscribe(o),setTimeout(()=>this.subscribe(o),100))}).catch(M=>this.showError(`Cannot write object: ${M}`))}this.setState({editObjectDialog:"",editObjectAlias:!1})},width:this.props.width})}renderViewObjectFileDialog(){if(!this.state.viewFileDialog||!this.props.objectBrowserViewFile)return null;const e=this.props.objectBrowserViewFile;return n.createElement(e,{key:"viewFile",obj:this.objects[this.state.viewFileDialog],socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({viewFileDialog:""})})}renderAliasEditorDialog(){if(!this.props.objectBrowserAliasEditor||!this.state.showAliasEditor)return null;const e=this.props.objectBrowserAliasEditor;return n.createElement(e,{key:"editAlias",obj:this.objects[this.state.showAliasEditor],roleArray:this.info.roles,objects:this.objects,socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({showAliasEditor:""}),onRedirect:(t,s)=>setTimeout(()=>this.onSelect(t,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(t),setTimeout(()=>this.setState({editObjectDialog:t,showAliasEditor:"",editObjectAlias:!0}),300)})),s||0)})}showAddDataPointDialog(e,t,s){this.setState({showContextMenu:null,modalNewObj:{id:e,initialType:t,initialStateType:s}})}renderAliasMenu(){return this.state.aliasMenu?n.createElement(ss,{key:"aliasmenu",open:!0,anchorEl:window.document.getElementById(`alias_${this.state.aliasMenu}`),onClose:()=>this.setState({aliasMenu:""})},this.info.aliasesMap[this.state.aliasMenu].map((e,t)=>n.createElement(te,{key:e,onClick:()=>this.onSelect(e)},n.createElement(nt,null,this.renderAliasLink(this.state.aliasMenu,t,{"& .admin-browser-arrow":{mr:"8px"}}))))):null}renderContextMenu(){var L,j,g,y,d,I,m;if(!this.state.showContextMenu)return null;const e=this.state.showContextMenu.item,t=e.data.id,s=[],r=e.data.obj;let o="";if(this.props.objectEditOfAccessControl&&this.state.filter.expertMode)if(!r)o="---";else{const w=r.acl?r.type==="state"?r.acl.state:r.acl.object:0,O=r.acl&&(r.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object);o=Number.isNaN(Number(w))?Number(O).toString(16):Number(w).toString(16)}const M=!this.props.notEditable&&r&&(this.state.filter.expertMode||r.type==="state"||r.type==="channel"||r.type==="device"),a=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="channel"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",u=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",l=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",N=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",c={EDIT:{key:"0",visibility:!!(this.props.objectBrowserEditObject&&r&&(this.state.filter.expertMode||ga(t))),icon:n.createElement(Ks,{fontSize:"small",style:this.styles.contextMenuEdit}),label:this.texts.editObject,onClick:()=>this.setState({editObjectDialog:e.data.id,showContextMenu:null,editObjectAlias:!1})},EDIT_VALUE:{key:"1",visibility:!!(this.states&&!this.props.notEditable&&r&&r.type==="state"&&((L=r.common)==null?void 0:L.type)!=="file"&&(this.state.filter.expertMode||r.common.write!==!1)),icon:n.createElement(Hl,{fontSize:"small",style:this.styles.contextMenuEditValue}),label:this.props.t("ra_Edit value"),onClick:()=>{var w;this.edit={val:this.states[t]?this.states[t].val:"",q:((w=this.states[t])==null?void 0:w.q)||0,ack:!1,id:t},this.setState({updateOpened:!0,showContextMenu:null})}},VIEW:{visibility:!!this.props.objectBrowserViewFile&&(r==null?void 0:r.type)==="state"&&((j=r.common)==null?void 0:j.type)==="file",icon:n.createElement(Fl,{fontSize:"small",style:this.styles.contextMenuView}),label:this.props.t("ra_View file"),onClick:()=>this.setState({viewFileDialog:(r==null?void 0:r._id)||"",showContextMenu:null})},CUSTOM:{key:"2",visibility:!(this.props.objectCustomDialog&&this.info.hasSomeCustoms&&r&&r.type==="state"&&((g=r.common)==null?void 0:g.type)!=="file"),icon:n.createElement(Hr,{fontSize:"small",style:e.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:C.cellButtonsButtonWithoutCustoms}),style:this.styles.contextMenuCustom,label:this.texts.customConfig,onClick:()=>{var w;this.pauseSubscribe(!0),(w=this.props.router)==null||w.doNavigate(null,"customs",t),this.setState({customDialog:[t],showContextMenu:null})}},ACL:{key:"3",visibility:!!o,icon:o,iconStyle:{fontSize:"smaller"},listItemIconStyle:this.styles.contextMenuACL,style:this.styles.contextMenuACL,label:this.props.t("ra_Edit ACL"),onClick:()=>this.setState({showContextMenu:null,modalEditOfAccess:!0,modalEditOfAccessObjData:e.data})},ROLE:{key:"4",visibility:!!(this.state.filter.expertMode&&M&&this.props.objectBrowserEditRole),icon:n.createElement(Gl,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit role"),onClick:()=>this.setState({roleDialog:e.data.id,showContextMenu:null})},FUNCTION:{key:"5",visibility:!!M,icon:n.createElement(Bl,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit function"),onClick:()=>{const w=ys(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ROOM:{key:"6",visibility:!!M,icon:n.createElement(Jl,{fontSize:"small",style:this.styles.contextMenuRoom}),label:this.props.t("ra_Edit room"),onClick:()=>{const w=ys(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ALIAS:{key:"7",visibility:!!(!this.props.notEditable&&this.props.objectBrowserAliasEditor&&this.props.objectBrowserEditObject&&(r==null?void 0:r.type)==="state"&&((y=r.common)==null?void 0:y.type)!=="file"),icon:n.createElement(Za,{style:(d=r==null?void 0:r.common)!=null&&d.alias?this.styles.cellButtonsButtonWithCustoms:C.cellButtonsButtonWithoutCustoms}),label:this.info.aliasesMap[e.data.id]||e.data.id.startsWith("alias.0.")?this.props.t("ra_Edit alias"):this.props.t("ra_Create alias"),onClick:()=>{var w;(w=r==null?void 0:r.common)!=null&&w.alias?this.setState({showContextMenu:null,editObjectDialog:e.data.id,editObjectAlias:!0}):this.setState({showContextMenu:null,showAliasEditor:e.data.id})}},CREATE:{key:"+",visibility:(e.data.id.startsWith("0_userdata.0")||e.data.id.startsWith("javascript."))&&(a||u||l||N),icon:n.createElement(Fr,{fontSize:"small",style:this.styles.cellButtonsButtonWithCustoms}),style:C.contextMenuWithSubMenu,label:this.texts.create,subMenu:[{label:this.texts.createBooleanState,visibility:a,icon:n.createElement(Xs,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","boolean")},{label:this.texts.createNumberState,visibility:a,icon:n.createElement(Xs,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","number")},{label:this.texts.createStringState,visibility:a,icon:n.createElement(Xs,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","string")},{label:this.texts.createState,visibility:a,icon:n.createElement(Xs,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state")},{label:this.texts.createChannel,visibility:u,icon:n.createElement(yu,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"channel")},{label:this.texts.createDevice,visibility:l,icon:n.createElement(Du,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"device")},{label:this.texts.createFolder,icon:n.createElement(Ha,{fontSize:"small"}),visibility:N,onClick:()=>this.showAddDataPointDialog(e.data.id,"folder")}]},RENAME:{key:"8",visibility:!!(!this.props.notEditable&&this.props.objectMoveRenameDialog&&!e.data.id.startsWith("system.")&&e.data.id.split(".").length>2&&(this.props.expertMode||e.data.id.startsWith("javascript.0.")||e.data.id.startsWith("0_userdata.0."))),icon:n.createElement(Rl,null),label:this.props.t("ra_Rename_Move_Copy"),onClick:()=>{const w=Object.keys(this.objects),O=`${e.data.id}.`;this.setState({showContextMenu:null,showRenameDialog:{id:e.data.id,childrenIds:w.filter(A=>A.startsWith(O))}})}},DELETE:{key:"Delete",visibility:!!(this.props.onObjectDelete&&((I=e.children)!=null&&I.length||r&&!((m=r.common)!=null&&m.dontDelete))),icon:n.createElement(ut,{fontSize:"small",style:this.styles.contextMenuDelete}),style:this.styles.contextMenuDelete,label:this.texts.deleteObject,onClick:()=>this.setState({showContextMenu:null},()=>this.showDeleteDialog({id:t,obj:r||{},item:e}))}};return Object.keys(c).forEach(w=>{var O,A;c[w].visibility&&(c[w].subMenu?(s.push(n.createElement(te,{key:w,href:"",onClick:h=>this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position,subItem:w,subAnchor:h.target}}),style:c[w].style},n.createElement(Yt,{style:{...c[w].iconStyle,...c[w].listItemIconStyle}},c[w].icon),n.createElement(nt,null,c[w].label,"..."),n.createElement("div",{style:{...C.contextMenuKeys,opacity:1}},n.createElement(Vl,null)))),((O=this.state.showContextMenu)==null?void 0:O.subItem)===w&&s.push(n.createElement(ss,{key:"subContextMenu",open:!0,anchorEl:this.state.showContextMenu.subAnchor,onClose:()=>{this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position}}),this.contextMenu=null}},(A=c[w].subMenu)==null?void 0:A.map(h=>h.visibility?n.createElement(te,{key:h.label,onClick:h.onClick,style:h.style},n.createElement(Yt,{style:{...h.iconStyle,...h.listItemIconStyle||void 0}},h.icon),n.createElement(nt,null,h.label)):null)))):s.push(n.createElement(te,{key:w,onClick:c[w].onClick,sx:c[w].style},n.createElement(Yt,{style:{...c[w].iconStyle,...c[w].listItemIconStyle}},c[w].icon),n.createElement(nt,null,c[w].label),c[w].key?n.createElement("div",{style:C.contextMenuKeys},`Alt+${c[w].key==="Delete"?this.props.t("ra_Del"):c[w].key}`):null)))}),s.length?n.createElement(ss,{key:"contextMenu",open:!0,onKeyUp:w=>{w.preventDefault(),w.altKey&&Object.keys(c).forEach(O=>{w.key===c[O].key&&c[O].onClick&&c[O].onClick()})},anchorReference:"anchorPosition",anchorPosition:this.state.showContextMenu.position,onClose:()=>{this.setState({showContextMenu:null}),this.contextMenu=null}},s):(setTimeout(()=>this.setState({showContextMenu:null}),100),null)}renderEditValueDialog(){var r;if(!this.state.updateOpened||!this.props.objectBrowserValue)return null;if(!this.edit.id)return console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`),null;if(!this.objects[this.edit.id])return console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`),null;const e=(r=this.objects[this.edit.id].common)!=null&&r.type?this.objects[this.edit.id].common.type:typeof this.edit.val,t=this.objects[this.edit.id].common.role,s=this.props.objectBrowserValue;return n.createElement(s,{t:this.props.t,lang:this.props.lang,type:e,role:t||"",states:E.getStates(this.objects[this.edit.id]),themeType:this.props.themeType,theme:this.props.theme,expertMode:!!this.state.filter.expertMode,value:this.edit.val,socket:this.props.socket,object:this.objects[this.edit.id],defaultHistory:this.defaultHistory,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,onClose:o=>{this.setState({updateOpened:!1}),o&&this.onUpdate(o)},width:this.props.width})}doFilter(e){if(!this.objects||!this.root)return;e||this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(this.state.filter));const t={count:0};go(this.root,this.state.filter,this.props.lang,this.objects,void 0,t,this.props.customFilter,this.props.types),t.count<500&&!this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!0})):t.count>=500&&this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!1})):this.forceUpdate()}render(){if(this.recordStates=[],this.unsubscribeTimer&&clearTimeout(this.unsubscribeTimer),this.styleTheme!==this.props.themeType&&(this.styles={cellIdIconFolder:E.getStyle(this.props.theme,C.cellIdIconFolder),cellIdIconDocument:E.getStyle(this.props.theme,C.cellIdIconDocument),iconDeviceError:E.getStyle(this.props.theme,C.iconDeviceError),iconDeviceConnected:E.getStyle(this.props.theme,C.iconDeviceConnected),iconDeviceDisconnected:E.getStyle(this.props.theme,C.iconDeviceDisconnected),cellButtonsButtonWithCustoms:E.getStyle(this.props.theme,C.cellButtonsButtonWithCustoms),invertedBackground:E.getStyle(this.props.theme,C.invertedBackground),invertedBackgroundFlex:E.getStyle(this.props.theme,C.invertedBackgroundFlex),contextMenuEdit:E.getStyle(this.props.theme,C.contextMenuEdit),contextMenuEditValue:E.getStyle(this.props.theme,C.contextMenuEditValue),contextMenuView:E.getStyle(this.props.theme,C.contextMenuView),contextMenuCustom:E.getStyle(this.props.theme,C.contextMenuCustom),contextMenuACL:E.getStyle(this.props.theme,C.contextMenuACL),contextMenuRoom:E.getStyle(this.props.theme,C.contextMenuRoom),contextMenuRole:E.getStyle(this.props.theme,C.contextMenuRole),contextMenuDelete:E.getStyle(this.props.theme,C.contextMenuDelete),filterInput:E.getStyle(this.props.theme,C.headerCellInput,C.filterInput),iconCopy:E.getStyle(this.props.theme,C.cellButtonsValueButton,C.cellButtonsValueButtonCopy),aliasReadWrite:E.getStyle(this.props.theme,C.cellIdAlias,C.cellIdAliasReadWrite),aliasAlone:E.getStyle(this.props.theme,C.cellIdAlias,C.cellIdAliasAlone)},this.styleTheme=this.props.themeType),this.unsubscribeTimer=setTimeout(()=>{this.unsubscribeTimer=null,this.checkUnsubscribes()},200),this.expertMode!==!!this.state.filter.expertMode&&(this.expertMode=!!this.state.filter.expertMode,this.doFilter(!0)),!this.state.loaded)return n.createElement(er,{key:`${this.props.dialogName}_c`});const e=this.root?this.renderItem(this.root,void 0):null;return n.createElement(oLe,{key:this.props.dialogName},n.createElement("style",null,` -@keyframes newValueAnimation-light { - 0% { - color: #00f900; - } - 80% { - color: #008000; - } - 100% { - color: #000; - } -} -@keyframes newValueAnimation-dark { - 0% { - color: #00f900; - } - 80% { - color: #008000; - } - 100% { - color: #fff; - } -} -.newValueBrowser-dark { - animation: newValueAnimation-dark 2s ease-in-out; -} -.newValueBrowser-light { - animation: newValueAnimation-light 2s ease-in-out; -} -.highlight-link .iob-link { - text-decoration: underline; - cursor: pointer; -} -`),n.createElement(nLe,null,this.getToolbar()),n.createElement(MLe,null,this.renderHeader(),n.createElement(W,{style:C.tableDiv,ref:this.tableRef,onKeyDown:t=>this.navigateKeyPress(t)},e)),this.renderContextMenu(),this.renderAliasMenu(),this.renderToast(),this.renderColumnsEditCustomDialog(),this.renderColumnsSelectorDialog(),this.renderCustomDialog(),this.renderEditValueDialog(),this.renderEditObjectDialog(),this.renderViewObjectFileDialog(),this.renderAliasEditorDialog(),this.renderEditRoleDialog(),this.renderEnumDialog(),this.renderErrorDialog(),this.renderExportDialog(),this.renderRenameDialog(),this.renderInputJsonDialog(),this.state.modalNewObj&&this.props.modalNewObject&&this.props.modalNewObject(this),this.state.modalEditOfAccess&&this.state.modalEditOfAccessObjData&&this.props.modalEditOfAccessControl&&this.props.modalEditOfAccessControl(this,this.state.modalEditOfAccessObjData))}}const zLe=Nr()(Ki);class Dge extends n.Component{refTypo;height;width;constructor(e){super(e),this.state={closed:this.props.storeId?window.localStorage.getItem(this.props.storeId)==="true":!1},this.height=0,this.width=0,this.refTypo=n.createRef()}componentDidMount(){this.detectHeight()}onClick(){this.props.storeId&&this.props.closed===void 0&&(this.state.closed?window.localStorage.removeItem(this.props.storeId):window.localStorage.setItem(this.props.storeId,"true")),this.props.closed===void 0?this.setState({closed:!this.state.closed},()=>{this.props.onClose&&this.props.onClose(this.state.closed)}):this.props.onClose&&this.props.onClose(!this.props.closed)}detectHeight(){const e=this.props.closed!==void 0?this.props.closed:this.state.closed;this.props.closeable&&!e&&this.refTypo.current&&window.requestAnimationFrame(()=>{(this.props.closed!==void 0?this.props.closed:this.state.closed)||this.refTypo.current&&(!this.height||this.width!==this.refTypo.current.clientWidth)&&(this.height=this.refTypo.current.clientHeight,this.width=this.refTypo.current.clientWidth,this.forceUpdate())})}componentDidUpdate(){this.detectHeight()}render(){const e=this.props.closed!==void 0?this.props.closed:this.state.closed,t=e?eN:ge;return n.createElement(W,{className:"iom-info-box",style:{whiteSpace:"preserve",display:"flex",gap:8,alignItems:e||this.props.iconPosition==="top"?"flex-start":"center",borderWidth:1,borderStyle:"solid",padding:4,borderRadius:5,marginBottom:8,maxWidth:"100%",transition:"height 0.5s",height:this.props.closeable?e?30:this.height||void 0:void 0,overflow:this.props.closeable?"hidden":void 0,position:"relative",...this.props.style},sx:{borderColor:s=>this.props.type==="ok"?s.palette.info.main:s.palette[this.props.type].main}},this.props.type==="ok"?n.createElement(ve,{style:{color:"#0F0"}}):this.props.type==="info"?n.createElement($o,{color:"primary"}):n.createElement(ql,{color:this.props.type}),n.createElement(ll,{ref:this.refTypo},this.props.children),this.props.closeable?n.createElement(t,{sx:{color:s=>s.palette.mode==="dark"?"lightgray":"gray",cursor:"pointer",position:"absolute",top:4,right:4},onClick:()=>this.onClick()}):null,this.props.closeable?n.createElement("div",{style:{width:22}}):null,e?n.createElement(W,{component:"div",sx:s=>{const r=s.palette[this.props.type==="ok"?"info":this.props.type].main;return{background:`linear-gradient(${r}00 0%, ${r}10 60%, ${r}90 100%)`}},style:{bottom:0,position:"absolute",left:0,right:0,height:10}}):null)}}const _={hr:{border:0,borderTop:"1px solid gray"},scrollWindow:{width:"100%",overflow:"auto",height:"calc(100% - 22px)"},rowDiv:{width:"100%"},modeDiv:{width:200,display:"inline-block",verticalAlign:"top"},settingsDiv:{display:"inline-block",verticalAlign:"top"},inputTime:{width:90,marginTop:0,marginLeft:5},inputDate:{width:140,marginTop:0,marginLeft:5},inputEvery:{width:40,marginLeft:5,marginRight:5},inputRadio:{padding:"4px 12px",verticalAlign:"top"},inputGroup:{maxWidth:400,display:"inline-block"},inputGroupElement:{width:120},inputDateDay:{width:60},inputDateDayCheck:{padding:4},inputSmallCheck:{padding:0},rowOnce:{},rowDays:i=>({background:i.palette.mode!=="dark"?"#ddeaff":"#4b5057"}),rowDows:i=>({background:i.palette.mode!=="dark"?"#DDFFDD":"#52646c"}),rowMonths:i=>({background:i.palette.mode!=="dark"?"#DDFFFF":"#1f5557"}),rowMonthsDates:i=>({background:i.palette.mode!=="dark"?"#EEFFFF":"#3c5737",maxWidth:600}),rowYears:i=>({background:i.palette.mode!=="dark"?"#fbffdd":"#574b33"}),rowDowsDows:i=>({background:i.palette.mode!=="dark"?"#EEFFEE":"#3d4c54",pl:"10px",pb:"10px"})},vr=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Ei=["January","February","March","April","May","June","July","August","September","October","November","December"],Ur={minutes:"minutes",hours:"hours"},Rs=["sunrise","sunriseEnd","goldenHourEnd","solarNoon","goldenHour","sunsetStart","sunset","dusk","nauticalDusk","night","nightEnd","nauticalDawn","dawn","nadir"];function yt(i){return i<10?`0${i}`:`${i}`}const Da={time:{exactTime:!1,start:"00:00",end:"23:59",mode:"hours",interval:1},period:{once:"",days:1,dows:"",dates:"",weeks:0,months:"",years:0,yearMonth:0,yearDate:0},valid:{from:"",to:""}};function br(i){const e=i.split(".");return e.length===3?`${e[2]}-${e[1]}-${e[0]}`:""}class Ce extends ze{refFrom;refTo;refOnce;timerOnce=null;timerFrom=null;timerTo=null;constructor(e){super(e);let t;if(this.props.schedule&&typeof this.props.schedule=="string"&&this.props.schedule[0]==="{")try{t=JSON.parse(this.props.schedule)}catch{}else typeof this.props.schedule=="object"&&(t=this.props.schedule);(!t||!Object.keys(t).length)&&(setTimeout(()=>this.onChange(this.state.schedule,!0),200),t=Da),t={...Da,...t},t.valid.from||=Ce.now2string(),this.refFrom=n.createRef(),this.refTo=n.createRef(),this.refOnce=n.createRef(),this.state={schedule:t,desc:Ce.state2text(t)},JSON.stringify(t)!==this.props.schedule&&setTimeout(()=>{var s,r;return(r=(s=this.props).onChange)==null?void 0:r.call(s,JSON.stringify(t))},100)}componentWillUnmount(){this.timerOnce&&(clearTimeout(this.timerOnce),this.timerOnce=null),this.timerFrom&&(clearTimeout(this.timerFrom),this.timerFrom=null),this.timerTo&&(clearTimeout(this.timerTo),this.timerTo=null)}onChange(e,t){var r,o;const s=JSON.stringify(e)!==JSON.stringify(this.state.schedule);if(t||s){s&&this.setState({schedule:e,desc:Ce.state2text(e)});const M=JSON.parse(JSON.stringify(e));if(M.period.once){const a=M.period.once;delete M.period,M.period={once:a},delete M.valid}else if(M.period.days){const a=M.period.days,u=M.period.dows;delete M.period,M.period={days:a},u&&u!=="[]"&&(M.period.dows=u)}else if(M.period.weeks){const a=M.period.weeks,u=M.period.dows;delete M.period,M.period={weeks:a},u&&u!=="[]"&&(M.period.dows=u)}else if(M.period.months){const a=M.period.months,u=M.period.dates;delete M.period,M.period={months:a},u&&u!=="[]"&&(M.period.dates=u)}else if(M.period.years){const a=M.period.years,u=M.period.yearMonth,l=M.period.yearDate;delete M.period,M.period={years:a,yearDate:l},u&&(M.period.yearMonth=u)}if(M.time.exactTime?(delete M.time.end,delete M.time.mode,delete M.time.interval):delete M.time.exactTime,M.valid){if(M.valid.to||delete M.valid.to,M.period.days===1||M.period.weeks===1||M.period.months===1||M.period.years===1){const a=Ce.string2date(M.valid.from),u=new Date;u.setHours(0),u.setMinutes(0),u.setSeconds(0),u.setMilliseconds(0),a<=u&&delete M.valid.from}!M.valid.from&&!M.valid.to&&delete M.valid}(o=(r=this.props).onChange)==null||o.call(r,JSON.stringify(M),Ce.state2text(e))}}static state2text(e){if(typeof e=="string")try{e=JSON.parse(e)}catch{return""}const t=[],s=Ce.string2date(e.valid.from);if(e.period.once){const r=Ce.string2date(e.period.once),o=new Date;if(o.setMilliseconds(0),o.setSeconds(0),o.setMinutes(0),o.setHours(0),rD.t(vr[M]));if(o.length===1)t.push(D.t("sch_desc_onWeekday",o[0]));else if(o.length===7)t.push(D.t("sch_desc_everyDay"));else{const M=o.pop();t.push(D.t("sch_desc_onWeekdays",o.join(", "),M))}}}else t.push(D.t("sch_desc_everyDay"));else t.push(D.t("sch_desc_everyNDay",e.period.days.toString()));else if(e.period.weeks)if(e.period.weeks===1?t.push(D.t("sch_desc_everyWeek")):t.push(D.t("sch_desc_everyNWeeks",e.period.weeks.toString())),e.period.dows){const r=JSON.parse(e.period.dows);if(r.length===2&&r[0]===0&&r[1]===6)t.push(D.t("sch_desc_onWeekends"));else if(r.length===5&&r[0]===1&&r[1]===2&&r[2]===3&&r[3]===4&&r[4]===5)t.push(D.t("sch_desc_onWorkdays"));else{const o=r.map(M=>D.t(vr[M]));if(o.length===1)t.push(D.t("sch_desc_onWeekday",o[0]));else if(o.length===7)t.push(D.t("sch_desc_everyDay"));else{const M=o.pop();t.push(D.t("sch_desc_onWeekdays",o.join(", "),M))}}}else return D.t("sch_desc_never");else if(e.period.months){if(e.period.dates){const r=JSON.parse(e.period.dates);if(r.length===1)t.push(D.t("sch_desc_onDate",r[0]));else if(r.length===31)t.push(D.t("sch_desc_onEveryDate"));else if(r.length){const o=r.pop();t.push(D.t("sch_desc_onDates",r.join(", "),o))}else return D.t("sch_desc_never")}else t.push(D.t("sch_desc_onEveryDate"));if(e.period.months===1)t.push(D.t("sch_desc_everyMonth"));else if(typeof e.period.months=="number")t.push(D.t("sch_desc_everyNMonths",e.period.months.toString()));else{const o=JSON.parse(e.period.months).map(M=>D.t(Ei[M-1]));if(!o.length)return D.t("sch_desc_never");if(o.length===1)t.push(D.t("sch_desc_onMonth",o[0]));else if(o.length===12)t.push(D.t("sch_desc_everyMonth"));else{const M=o.pop();t.push(D.t("sch_desc_onMonths",o.join(", "),M))}}}else e.period.years&&(e.period.years===1?t.push(D.t("sch_desc_everyYear")):t.push(D.t("sch_desc_everyNYears",e.period.years.toString())),t.push(D.t("sch_desc_onDate",e.period.yearDate.toString(),e.period.yearMonth?D.t(Ei[e.period.yearMonth-1]):D.t("sch_desc_everyMonth"))));if(e.time.exactTime)Rs.includes(e.time.start)?t.push(D.t("sch_desc_atTime",D.t(`sch_astro_${e.time.start}`))):t.push(D.t("sch_desc_atTime",e.time.start));else{e.time.mode===Ur.minutes?e.time.interval===1?t.push(D.t("sch_desc_everyMinute")):t.push(D.t("sch_desc_everyNMinutes",e.time.interval.toString())):e.time.interval===1?t.push(D.t("sch_desc_everyHour")):t.push(D.t("sch_desc_everyNHours",e.time.interval.toString()));const r=Rs.indexOf(e.time.start)!==-1?D.t(`sch_astro_${e.time.start}`):e.time.start,o=Rs.indexOf(e.time.end)!==-1?D.t(`sch_astro_${e.time.end}`):e.time.end;(r!=="00:00"||o!=="24:00"&&o!=="23:59")&&t.push(D.t("sch_desc_intervalFromTo",r,o))}return e.period.once||(s.getTime()>Date.now()&&e.valid.to?t.push(D.t("sch_desc_validFromTo",e.valid.from,e.valid.to)):s.getTime()>Date.now()?t.push(D.t("sch_desc_validFrom",e.valid.from)):e.valid.to&&t.push(D.t("sch_desc_validTo",e.valid.to))),t.join(" ")}getTimePeriodElements(){const e=this.state.schedule;let t=!1,s=!1,r=!1,o=!0;return e.time.start==="00:00"&&e.time.end==="24:00"?(t=!0,o=!1):e.time.start==="sunrise"?(s=!0,o=!1):e.time.start==="sunset"&&(r=!0,o=!1),n.createElement("div",{key:"timePeriod",style:_.rowDiv},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!e.time.exactTime,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.exactTime=!1,this.onChange(M)}}),label:D.t("sch_intervalTime")})),n.createElement("div",{style:_.settingsDiv},n.createElement("div",{style:_.settingsDiv},!e.time.exactTime&&n.createElement("div",null,n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!o,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start="00:00",M.time.end="23:59",this.onChange(M)}}),label:o?"":D.t("sch_fromTo")}),o&&[n.createElement(le,{variant:"standard",style:{..._.inputTime,marginRight:10},key:"exactTimeFrom",type:"time",sx:M=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:M.palette.mode==="dark"?"invert(80%)":void 0}}),value:this.state.schedule.time.start,onChange:M=>{const a=JSON.parse(JSON.stringify(this.state.schedule));a.time.start=M.target.value,this.onChange(a)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_from"),margin:"normal"}),n.createElement(le,{variant:"standard",style:_.inputTime,key:"exactTimeTo",type:"time",sx:M=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:M.palette.mode==="dark"?"invert(80%)":void 0}}),value:this.state.schedule.time.end,onChange:M=>{const a=JSON.parse(JSON.stringify(this.state.schedule));a.time.end=M.target.value,this.onChange(a)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_to"),margin:"normal"})])),!e.time.exactTime&&n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!t,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start="00:00",M.time.end="24:00",this.onChange(M)}}),label:D.t("sch_wholeDay")})),!e.time.exactTime&&n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!s,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start="sunrise",M.time.end="sunset",this.onChange(M)}}),label:D.t("sch_astroDay")})),!e.time.exactTime&&n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!r,onClick:()=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start="sunset",M.time.end="sunrise",this.onChange(M)}}),label:D.t("sch_astroNight")}))),!e.time.exactTime&&this.getPeriodSettingsMinutes(o)))}getTimeExactElements(){const e=Rs.includes(this.state.schedule.time.start);return n.createElement("div",{key:"timeExact",style:_.rowDiv},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!this.state.schedule.time.exactTime,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.exactTime=!0,this.onChange(t)}}),label:D.t("sch_exactTime")})),this.state.schedule.time.exactTime&&n.createElement(Xe,{variant:"standard",value:e?this.state.schedule.time.start:"00:00",onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.time.start=t.target.value,this.onChange(s)}},n.createElement(te,{key:"specific",value:"00:00"},D.t("sch_specificTime")),Rs.map(t=>n.createElement(te,{key:t,value:t},D.t(`sch_astro_${t}`)))),this.state.schedule.time.exactTime&&!e&&n.createElement("div",{style:_.settingsDiv},n.createElement(le,{variant:"standard",style:_.inputTime,key:"exactTimeValue",value:this.state.schedule.time.start,type:"time",sx:t=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:t.palette.mode==="dark"?"invert(80%)":void 0}}),onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.time.start=t.target.value,this.onChange(s)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"})))}static getDivider(){return n.createElement("hr",{style:_.hr})}getPeriodModes(){const e=this.state.schedule,t=!e.period.dows&&!e.period.months&&!e.period.dates&&!e.period.years&&!e.period.days&&!e.period.weeks;return t&&!e.period.once&&(e.period.once=Ce.now2string(!0)),[n.createElement("div",{key:"once",style:{..._.rowDiv,..._.rowOnce}},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!t,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.once||=Ce.now2string(!0),s.period.dows="",s.period.months="",s.period.dates="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.weeks=0,s.period.days=0,this.onChange(s)}}),label:D.t("sch_periodOnce")})),t&&n.createElement("div",{style:_.settingsDiv},n.createElement(le,{variant:"standard",style:_.inputDate,type:"date",ref:this.refOnce,key:"exactDateAt",defaultValue:br(e.period.once),onChange:s=>{this.timerOnce&&clearTimeout(this.timerOnce),this.refOnce.current&&(this.refOnce.current.style.background="#ff000030"),this.timerOnce=setTimeout(r=>{this.timerOnce=null,this.refOnce.current&&(this.refOnce.current.style.background="");const o=JSON.parse(JSON.stringify(this.state.schedule)),M=Ce.string2date(r);M.toString()!=="Invalid Date"&&(o.period.once=`${yt(M.getDate())}.${yt(M.getMonth()+1)}.${M.getFullYear()}`,this.onChange(o))},1500,s.target.value)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_at"),margin:"normal"}))),n.createElement(W,{component:"div",key:"days",sx:E.getStyle(this.props.theme,_.rowDiv,_.rowDays)},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!e.period.days,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.days=1,s.period.dows="",s.period.months="",s.period.dates="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.weeks=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodDaily")})),n.createElement("div",{style:_.settingsDiv},this.getPeriodSettingsDaily(),e.period.days?this.getPeriodSettingsWeekdays():null)),n.createElement(W,{component:"div",key:"weeks",sx:E.getStyle(this.props.theme,_.rowDiv,_.rowDows)},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!e.period.weeks,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.weeks=e.period.weeks?0:1,s.period.dows||="[0]",s.period.months="",s.period.dates="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.days=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodWeekly")})),n.createElement(W,{component:"div",style:_.settingsDiv},n.createElement("div",{style:_.settingsDiv},this.getPeriodSettingsWeekly()),n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,_.settingsDiv,_.rowDowsDows)},this.state.schedule.period.weeks?this.getPeriodSettingsWeekdays():null))),n.createElement(W,{component:"div",key:"months",sx:E.getStyle(this.props.theme,_.rowDiv,_.rowMonths)},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!e.period.months,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months=1,s.period.dows="",s.period.dates="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.weeks=0,s.period.days=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodMonthly")})),n.createElement("div",{style:_.settingsDiv},this.getPeriodSettingsMonthly(),e.period.months?n.createElement(W,null,n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,_.settingsDiv,_.rowMonthsDates)},n.createElement(H,{control:n.createElement(ne,{style:_.inputRadio,checked:!!e.period.dates,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months||=1;const r=[];for(let o=1;o<=31;o++)r.push(o);s.period.dates||=JSON.stringify(r),s.period.dows="",s.period.years=0,s.period.yearDate=0,s.period.yearMonth=0,s.period.weeks=0,s.period.days=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodDates")})),n.createElement(W,{component:"div",sx:E.getStyle(this.props.theme,_.settingsDiv,_.rowMonthsDates)},this.getPeriodSettingsDates())):null)),n.createElement(W,{component:"div",key:"years",sx:E.getStyle(this.props.theme,_.rowDiv,_.rowYears)},n.createElement("div",{style:_.modeDiv},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:!!e.period.years,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.years=1,s.period.yearDate=1,s.period.yearMonth=1,s.period.dows="",s.period.months=0,s.period.dates="",s.period.weeks=0,s.period.days=0,s.period.once="",this.onChange(s)}}),label:D.t("sch_periodYearly")})),n.createElement("div",{style:_.settingsDiv},n.createElement("div",{style:_.settingsDiv},this.getPeriodSettingsYearly()),!!e.period.years&&n.createElement("div",{style:_.settingsDiv},n.createElement("span",null,D.t("sch_on")),n.createElement(vt,{key:"input",value:this.state.schedule.period.yearDate,style:_.inputEvery,type:"number",inputProps:{min:1,max:31},onChange:s=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.yearDate=parseInt(s.target.value,10),r.period.yearDate<1&&(r.period.yearDate=31),r.period.yearDate>31&&(r.period.yearDate=1),this.onChange(r)}}),n.createElement(Xe,{variant:"standard",value:e.period.yearMonth,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.yearMonth=s.target.value,this.onChange(r)}},n.createElement(te,{key:"every",value:0},D.t("sch_yearEveryMonth")),Ei.map((s,r)=>n.createElement(te,{key:s,value:r+1},D.t(s)))))))]}getPeriodSettingsMinutes(e){return n.createElement("div",{style:{display:"inline-block",marginTop:e?15:"inherit"}},n.createElement("label",{style:{marginLeft:4,marginRight:4}},D.t("sch_every")),n.createElement(vt,{value:this.state.schedule.time.interval,style:{..._.inputEvery,verticalAlign:"bottom"},type:"number",inputProps:{min:1},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.time.interval=parseInt(t.target.value,10),this.onChange(s)}}),n.createElement(Xe,{variant:"standard",value:this.state.schedule.time.mode,onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.time.mode=t.target.value,this.onChange(s)}},n.createElement(te,{value:Ur.minutes},D.t("sch_periodMinutes")),n.createElement(te,{value:Ur.hours},D.t("sch_periodHours"))))}getPeriodSettingsWeekdays(){const e=this.state.schedule,t=e.period.dows&&e.period.dows!=="[1, 2, 3, 4, 5]"&&e.period.dows!=="[0, 6]";return[n.createElement("div",{key:"workdays"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.dows==="[1, 2, 3, 4, 5]",onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.dows="[1, 2, 3, 4, 5]",s.period.days&&(s.period.days=1),this.onChange(s)}}),label:D.t("sch_periodWorkdays")})),n.createElement("div",{key:"weekend"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.dows==="[0, 6]",onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.dows="[0, 6]",s.period.days&&(s.period.days=1),this.onChange(s)}}),label:D.t("sch_periodWeekend")})),n.createElement("div",{key:"specific",style:{verticalAlign:"top"}},n.createElement(H,{style:{verticalAlign:"top"},control:n.createElement(Me,{style:_.inputRadio,checked:!!t,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.dows="[0, 1, 2, 3, 4, 5, 6]",s.period.days&&(s.period.days=1),this.onChange(s)}}),label:D.t("sch_periodWeekdays")}),t&&(e.period.days===1||e.period.weeks)&&n.createElement(Dr,{row:!0,style:{..._.inputGroup,width:150}},[1,2,3,4,5,6,0].map(s=>n.createElement(H,{key:`specific_${s}`,style:_.inputGroupElement,control:n.createElement(ne,{style:_.inputSmallCheck,checked:e.period.dows.includes(s.toString()),onChange:r=>{const o=JSON.parse(JSON.stringify(this.state.schedule));let M;try{M=JSON.parse(o.period.dows)}catch{M=[]}r.target.checked&&!M.includes(s)?M.push(s):!r.target.checked&&M.includes(s)&&M.splice(M.indexOf(s),1),M.sort((a,u)=>a-u),o.period.dows=JSON.stringify(M),o.period.days&&(o.period.days=1),this.onChange(o)}}),label:D.t(vr[s])}))))]}getPeriodSettingsDaily(){if(!this.state.schedule.period.days)return null;const e=this.state.schedule;return[n.createElement("div",{key:"every_day"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.days===1&&!e.period.dows,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=1,t.period.dows="",this.onChange(t)}}),label:D.t("sch_periodEveryDay")})),n.createElement("div",{key:"everyN_day"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.days>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=2,t.period.dows="",this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.days>1&&[n.createElement(vt,{key:"input",value:this.state.schedule.period.days,style:_.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.days=parseInt(t.target.value,10),s.period.dows="",this.onChange(s)}}),n.createElement("span",{key:"span",style:{paddingRight:10}},D.t("sch_periodDay"))])]}getPeriodSettingsWeekly(){if(!this.state.schedule.period.weeks)return null;const e=this.state.schedule;return[n.createElement("div",{key:"radios",style:{display:"inline-block",verticalAlign:"top"}},n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.weeks===1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=1,this.onChange(t)}}),label:D.t("sch_periodEveryWeek")})),n.createElement("div",null,n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.weeks>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=2,this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.weeks>1&&[n.createElement(vt,{key:"input",value:this.state.schedule.period.weeks,style:_.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.weeks=parseInt(t.target.value,10),this.onChange(s)}}),n.createElement("span",{key:"text"},D.t("sch_periodWeek"))]))]}getPeriodSettingsDates(){if(!this.state.schedule.period.dates)return null;const e=this.state.schedule,t=[];for(let r=1;r<=31;r++)t.push(r);const s=JSON.parse(e.period.dates);return n.createElement(Dr,{row:!0,style:{..._.inputGroup,maxWidth:620}},n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:s.length===31,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule)),o=[];for(let M=1;M<=31;M++)o.push(M);r.period.dates=JSON.stringify(o),this.onChange(r)}}),label:D.t("sch_all")}),n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:!s.length,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.dates="[]",this.onChange(r)}}),label:D.t("sch_no_one")}),s.length!==31&&!!s.length&&n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:!1,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule)),o=[],M=JSON.parse(r.period.dates);for(let a=1;a<=31;a++)M.includes(a)||o.push(a);o.sort((a,u)=>a-u),r.period.dates=JSON.stringify(o),this.onChange(r)}}),label:D.t("sch_invert")}),n.createElement("div",null),t.map(r=>n.createElement(H,{key:`date_${r}`,style:r?_.inputDateDay:{..._.inputDateDay,opacity:0,cursor:"default",userSelect:"none",pointerEvents:"none"},control:n.createElement(ne,{style:_.inputDateDayCheck,checked:JSON.parse(e.period.dates).includes(r),onChange:o=>{const M=JSON.parse(JSON.stringify(this.state.schedule));let a;try{a=JSON.parse(M.period.dates)}catch{a=[]}o.target.checked&&!a.includes(r)?a.push(r):!o.target.checked&&a.includes(r)&&a.splice(a.indexOf(r),1),a.sort((u,l)=>u-l),M.period.dates=JSON.stringify(a),this.onChange(M)}}),label:r<10?[n.createElement("span",{key:"0",style:{opacity:0}},"0"),n.createElement("span",{key:"num"},r)]:r})))}getPeriodSettingsMonthly(){if(!this.state.schedule.period.months)return null;const e=this.state.schedule,t=typeof e.period.months=="string"?JSON.parse(e.period.months):[];return[n.createElement("div",{key:"every"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:typeof e.period.months=="number"&&e.period.months===1,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months=1,this.onChange(e)}}),label:D.t("sch_periodEveryMonth")})),n.createElement("div",{key:"everyN"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:typeof e.period.months=="number"&&e.period.months>1,onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months=2,this.onChange(s)}}),label:D.t("sch_periodEvery")}),typeof e.period.months=="number"&&e.period.months>1&&[n.createElement(vt,{key:"input",value:e.period.months,style:_.inputEvery,type:"number",inputProps:{min:2},onChange:s=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.months=parseInt(s.target.value,10),r.period.months<1&&(r.period.months=1),this.onChange(r)}}),n.createElement("span",{key:"text"},D.t("sch_periodMonth"))]),n.createElement("div",{key:"specific",style:{verticalAlign:"top"}},n.createElement(H,{style:{verticalAlign:"top"},control:n.createElement(Me,{style:_.inputRadio,checked:typeof e.period.months=="string",onClick:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months="[1,2,3,4,5,6,7,8,9,10,11,12]",this.onChange(s)}}),label:D.t("sch_periodSpecificMonths")}),typeof e.period.months=="string"&&n.createElement(Dr,{row:!0,style:_.inputGroup},n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:t.length===12,onChange:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule)),r=[];for(let o=1;o<=12;o++)r.push(o);s.period.months=JSON.stringify(r),this.onChange(s)}}),label:D.t("sch_all")}),n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:!t.length,onChange:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.months="[]",this.onChange(s)}}),label:D.t("sch_no_one")}),t.length!==12&&!!t.length&&n.createElement(H,{style:_.inputDateDay,control:n.createElement(ne,{style:_.inputDateDayCheck,checked:!1,onChange:()=>{const s=JSON.parse(JSON.stringify(this.state.schedule)),r=[],o=JSON.parse(s.period.months);for(let M=1;M<=12;M++)o.includes(M)||r.push(M);r.sort((M,a)=>M-a),s.period.months=JSON.stringify(r),this.onChange(s)}}),label:D.t("sch_invert")}),n.createElement("div",null),Ei.map((s,r)=>n.createElement(H,{key:`month_${r}`,style:_.inputGroupElement,control:n.createElement(ne,{style:_.inputSmallCheck,checked:typeof e.period.months=="string"?JSON.parse(e.period.months).includes(r+1):e.period.months===r,onChange:o=>{const M=JSON.parse(JSON.stringify(this.state.schedule));let a;try{a=JSON.parse(M.period.months)}catch{a=[]}o.target.checked&&!a.includes(r+1)?a.push(r+1):!o.target.checked&&a.includes(r+1)&&a.splice(a.indexOf(r+1),1),a.sort((u,l)=>u-l),M.period.months=JSON.stringify(a),this.onChange(M)}}),label:D.t(s)}))))]}getPeriodSettingsYearly(){if(!this.state.schedule.period.years)return null;const e=this.state.schedule;return[n.createElement("div",{key:"year"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.years===1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=1,this.onChange(t)}}),label:D.t("sch_periodEveryYear")})),n.createElement("div",{key:"every"},n.createElement(H,{control:n.createElement(Me,{style:_.inputRadio,checked:e.period.years>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=2,this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.years>1&&[n.createElement(vt,{key:"input",value:this.state.schedule.period.years,style:_.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.schedule));s.period.years=parseInt(t.target.value,10),s.period.years<1&&(s.period.years=1),this.onChange(s)}}),n.createElement("span",{key:"text"},D.t("sch_periodYear"))])]}static now2string(e){const t=new Date;return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),e&&(t.setDate(t.getDate()+2),t.setMilliseconds(t.getMilliseconds()-1)),`${yt(t.getDate())}.${yt(t.getMonth()+1)}.${yt(t.getFullYear())}`}static string2date(e){let t=e.split(".");return t.length===1?(t=e.split("-"),new Date(parseInt(t[0],10),parseInt(t[1],10)-1,parseInt(t[2],10))):new Date(parseInt(t[2],10),parseInt(t[1],10)-1,parseInt(t[0],10))}getValidSettings(){const e=this.state.schedule;return n.createElement("div",{style:_.rowDiv},n.createElement("div",{style:{..._.modeDiv,verticalAlign:"middle"}},n.createElement("span",{style:{fontWeight:"bold",paddingRight:10}},D.t("sch_valid")),n.createElement("span",null,D.t("sch_validFrom"))),n.createElement("div",{style:_.settingsDiv},n.createElement(le,{variant:"standard",style:{..._.inputDate,marginRight:10},key:"exactTimeFrom",inputRef:this.refFrom,defaultValue:br(e.valid.from),type:"date",onChange:t=>{this.timerFrom&&clearTimeout(this.timerFrom),this.refFrom.current&&(this.refFrom.current.style.background="#ff000030"),this.timerFrom=setTimeout(s=>{this.timerFrom=null,this.refFrom.current&&(this.refFrom.current.style.background="");const r=JSON.parse(JSON.stringify(this.state.schedule)),o=Ce.string2date(s);o.toString()!=="Invalid Date"&&(r.valid.from=`${yt(o.getDate())}.${yt(o.getMonth()+1)}.${o.getFullYear()}`,this.onChange(r))},1500,t.target.value)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"}),n.createElement(H,{control:n.createElement(ne,{style:_.inputRadio,checked:!!e.valid.to,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.valid.to=t.valid.to?"":Ce.now2string(!0),this.onChange(t)}}),label:D.t("sch_validTo")}),!!e.valid.to&&n.createElement(le,{variant:"standard",inputRef:this.refTo,style:{..._.inputDate,marginRight:10},key:"exactTimeFrom",type:"date",defaultValue:br(e.valid.to),onChange:t=>{this.timerTo&&clearTimeout(this.timerTo),this.refTo.current&&(this.refTo.current.style.background="#ff000030"),this.timerTo=setTimeout(s=>{this.timerTo=null,this.refTo.current&&(this.refTo.current.style.background="");const r=JSON.parse(JSON.stringify(this.state.schedule)),o=Ce.string2date(s);o.toString()!=="Invalid Date"&&(r.valid.to=`${yt(o.getDate())}.${yt(o.getMonth()+1)}.${o.getFullYear()}`,this.onChange(r))},1500,t.target.value)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"})))}render(){return n.createElement("div",{style:{height:"calc(100% - 48px)",width:"100%",overflow:"hidden"}},n.createElement("div",null,this.state.desc),n.createElement("div",{style:_.scrollWindow},n.createElement("h5",null,D.t("sch_time")),this.getTimePeriodElements(),this.getTimeExactElements(),Ce.getDivider(),n.createElement("h5",null,D.t("sch_period")),this.getPeriodModes(),!this.state.schedule.period.once&&Ce.getDivider(),!this.state.schedule.period.once&&this.getValidSettings()))}}const _i={different:{opacity:.5},icon:{width:16,height:16,marginRight:8}};class dge extends ze{wordDifferent;timeout=null;constructor(e){super(e),e.different&&(this.wordDifferent=e.t("ra___different__"));let t;Array.isArray(e.list)?t=e.list.filter(s=>(s==null?void 0:s._id)&&s.common).map(s=>{var r,o;return{name:E.getObjectNameFromObj(s,e.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:s._id,icon:(r=s.common)==null?void 0:r.icon,color:(o=s.common)==null?void 0:o.color}}):t=Object.values(e.list).filter(s=>(s==null?void 0:s._id)&&s.common).map(s=>{var r,o;return{name:E.getObjectNameFromObj(s,e.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:s._id,icon:(r=s.common)==null?void 0:r.icon,color:(o=s.common)==null?void 0:o.color}}),e.different&&e.value===e.different&&t.unshift({value:e.different,name:this.wordDifferent||""}),e.allowNone&&t.unshift({value:"",name:D.t("ra_none")}),this.state={list:t}}render(){this.props.allowNone&&!this.state.list.find(r=>r.value==="")?this.timeout=this.timeout||setTimeout(()=>{this.timeout=null;const r=JSON.parse(JSON.stringify(this.state.list));r.unshift({value:"",name:D.t("ra_none")}),this.setState({list:r})},100):!this.props.allowNone&&this.state.list.find(r=>r.value==="")&&(this.timeout=this.timeout||setTimeout(()=>{this.timeout=null;const r=JSON.parse(JSON.stringify(this.state.list)),o=this.state.list.findIndex(M=>M.value==="");r.splice(o,1),this.setState({list:r})},100));const e=this.state.list.find(r=>r.value===this.props.value||this.props.removePrefix&&r.value.replace(this.props.removePrefix,"")===this.props.value),t=this.props.value===this.props.different?{}:{color:(e==null?void 0:e.color)||void 0,backgroundColor:E.getInvertedColor((e==null?void 0:e.color)||"",this.props.themeType)};this.props.dense&&this.props.style&&Object.assign(t,this.props.style);const s=n.createElement(Xe,{variant:"standard",disabled:this.props.disabled,value:this.props.value,slotProps:{input:this.props.inputProps},renderValue:()=>n.createElement("span",null,e!=null&&e.icon?n.createElement(xe,{src:e==null?void 0:e.icon,style:_i.icon}):null,e==null?void 0:e.name),sx:{"&.MuiSelect-root":this.props.value===this.props.different?_i.different:{}},classes:{root:this.props.dense?this.props.className:""},style:t,onChange:r=>{if(this.props.different&&r.target.value!==this.props.different){let o=null;for(let M=0;Mthis.props.onChange(r.target.value));return}}this.props.onChange(this.props.removePrefix?r.target.value.replace(this.props.removePrefix,""):r.target.value)}},this.state.list.map(r=>n.createElement(te,{style:this.props.different&&r.value===this.props.different?_i.different:{color:r.color||void 0,backgroundColor:E.getInvertedColor(r.color||"",this.props.themeType)},key:r.value,value:r.value},r.icon?n.createElement(xe,{src:r.icon,style:_i.icon}):null,r.name)));return this.props.dense?s:n.createElement(wt,{variant:"standard",fullWidth:!!this.props.fullWidth,style:this.props.style,className:this.props.className},n.createElement(As,null,this.props.label),s)}}class zge extends ze{resizerRefTable;resizerActiveIndex;resizerActiveDiv;resizerCurrentWidths;widthFilled=!1;installTimeout=null;resizerMin=0;resizerMinNext=0;resizerPosition=0;resizerOldWidth=0;resizerOldWidthNext=0;constructor(e){super(e),this.resizerRefTable=n.createRef(),this.resizerActiveIndex=null,this.resizerActiveDiv=null,this.resizerCurrentWidths=[]}componentDidMount(){this.resizerInstall()}componentWillUnmount(){this.resizerUninstall()}resizerInstall(){if(this.resizerRefTable.current&&!this.resizerRefTable.current._installed){this.resizerRefTable.current._installed=!0;const e=this.resizerRefTable.current.querySelectorAll("th"),t=(window._localStorage||window.localStorage).getItem(`App.${this.props.name||"history"}.table`);if(this.widthFilled=!1,t)try{this.resizerCurrentWidths=JSON.parse(t),this.widthFilled=!0}catch{}if(this.widthFilled)if(this.resizerCurrentWidths.length!==e.length)this.resizerCurrentWidths=[],this.widthFilled=!1;else{const s=this.resizerRefTable.current.offsetWidth;let r=0;for(let o=0;o20&&(this.resizerCurrentWidths=[],this.widthFilled=!1)}for(let s=0;s{this.installTimeout=null,this.resizerInstall()},100)}resizerReset=()=>{for(let e=0;e{if(this.resizerActiveDiv&&this.resizerActiveIndex!==null){const t=this.resizerOldWidth+e.clientX-this.resizerPosition,s=this.resizerOldWidthNext-e.clientX+this.resizerPosition;(!this.resizerMin||t>this.resizerMin)&&(!this.resizerMinNext||s>this.resizerMinNext)&&(this.resizerCurrentWidths[this.resizerActiveIndex]=t,this.resizerCurrentWidths[this.resizerActiveIndex+1]=s,this.resizerApplyWidths())}};resizerMouseUp=()=>{(window._localStorage||window.localStorage).setItem(`App.${this.props.name||"history"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveIndex=null,this.resizerActiveDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{var t,s,r,o;if(this.resizerActiveIndex===null||this.resizerActiveIndex===void 0){console.log(`Mouse down ${(t=e.target)==null?void 0:t.dataset.index}`),this.resizerActiveIndex=parseInt(((s=e.target)==null?void 0:s.dataset.index)||"0",10),this.resizerActiveDiv=e.target,this.resizerMin=this.props.minWidths?this.props.minWidths[this.resizerActiveIndex]:0,this.resizerMinNext=this.props.minWidths?this.props.minWidths[this.resizerActiveIndex+1]:0,this.resizerPosition=e.clientX;let M;this.resizerCurrentWidths[this.resizerActiveIndex]==="auto"&&(M=(r=this.resizerRefTable.current)==null?void 0:r.querySelectorAll("th"),M&&(this.resizerCurrentWidths[this.resizerActiveIndex]=M[this.resizerActiveIndex].offsetWidth)),this.resizerCurrentWidths[this.resizerActiveIndex+1]==="auto"&&(M=M||((o=this.resizerRefTable.current)==null?void 0:o.querySelectorAll("th")),M&&(this.resizerCurrentWidths[this.resizerActiveIndex+1]=M[this.resizerActiveIndex+1].offsetWidth)),this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveIndex],this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerActiveIndex+1],window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};render(){if(this.props.ready===!1)return n.createElement(Nl,null);const e={gridTemplateColumns:this.resizerApplyWidths()};return n.createElement(Ba,{stickyHeader:this.props.stickyHeader,size:this.props.size||"small",className:this.props.className,sx:this.props.sx,ref:this.resizerRefTable,style:{...this.props.style||void 0,...e}},this.props.children)}}const $r={div:{borderRadius:3,padding:"0 3px",lineHeight:"20px",whiteSpace:"nowrap",overflow:"hidden",display:"flex",alignItems:"center"},icon:{width:16,height:16,marginRight:8,verticalAlign:"middle"},text:{display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}};function hge(i){var o,M,a,u,l,N,c,L,j;const e=i.value;let t;const s=i.removePrefix||"";if(typeof e=="string"){const g=i.list;if(g)if(Array.isArray(g)){const y=g.find(d=>(d==null?void 0:d._id)===s+e);y?t={name:E.getObjectNameFromObj(y,i.lang).replace("system.group.",""),value:y._id,icon:i.icon||((o=y.common)==null?void 0:o.icon),color:i.color||((M=y.common)==null?void 0:M.color)}:t={name:e,value:s+e}}else if(g[s+e]){const y=g[s+e];t={name:E.getObjectNameFromObj(y,i.lang).replace("system.group.",""),value:y._id,icon:i.icon||((a=y.common)==null?void 0:a.icon),color:i.color||((u=y.common)==null?void 0:u.color)}}else t={name:e,value:s+e,icon:i.icon,color:i.color};else t={name:e,value:s+e,icon:i.icon,color:i.color}}else if(!e||typeof e!="object")t={name:"",value:"",icon:i.icon,color:i.color};else{const g=e;t={name:E.getObjectNameFromObj(g,i.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:g._id,icon:i.icon||((l=g.common)==null?void 0:l.icon),color:i.color||((N=g.common)==null?void 0:N.color)}}const r=t!=null&&t.color?{border:`1px solid ${E.invertColor(t==null?void 0:t.color)}`,color:E.getInvertedColor(t==null?void 0:t.color,i.themeType||"light",!0)||void 0,backgroundColor:t==null?void 0:t.color}:{};return n.createElement("div",{style:{...i.style||void 0,...$r.div,...r||void 0},className:E.clsx(i.className,(c=i.moreClasses)==null?void 0:c.root),title:i.title||t.value},t!=null&&t.icon?n.createElement(xe,{src:t==null?void 0:t.icon,className:(L=i.moreClasses)==null?void 0:L.icon,style:$r.icon}):null,n.createElement("div",{style:$r.text,className:(j=i.moreClasses)==null?void 0:j.text},t==null?void 0:t.name))}function Ige({themeName:i,toggleTheme:e,t,className:s,style:r,size:o}){return n.createElement("div",{className:s||void 0,style:r||void 0},n.createElement(ae,{title:t("ra_Change color theme"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},n.createElement(P,{onClick:()=>e(),size:o||"medium"},i==="dark"&&n.createElement(tN,{className:s}),i==="blue"&&n.createElement(sN,{className:s}),i==="colored"&&n.createElement(Po,{className:s}),i!=="dark"&&i!=="blue"&&i!=="colored"&&n.createElement(iN,{className:s}))))}function gr(){return(gr=Object.assign||function(i){for(var e=1;e=0||(r[t]=i[t]);return r}function ho(i){var e=Fe(i),t=Fe(function(s){e.current&&e.current(s)});return e.current=i,t.current}var Mi=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),i>t?t:i0:d.buttons>0)&&r.current?o(da(r.current,d,a.current)):y(!1)},g=function(){return y(!1)};function y(d){var I=u.current,m=Io(r.current),w=d?m.addEventListener:m.removeEventListener;w(I?"touchmove":"mousemove",j),w(I?"touchend":"mouseup",g)}return[function(d){var I=d.nativeEvent,m=r.current;if(m&&(za(I),!(function(O,A){return A&&!ei(O)})(I,u.current)&&m)){if(ei(I)){u.current=!0;var w=I.changedTouches||[];w.length&&(a.current=w[0].identifier)}m.focus(),o(da(m,I,a.current)),y(!0)}},function(d){var I=d.which||d.keyCode;I<37||I>40||(d.preventDefault(),M({left:I===39?.05:I===37?-.05:0,top:I===40?.05:I===38?-.05:0}))},y]},[M,o]),N=l[0],c=l[1],L=l[2];return ye(function(){return L},[L]),n.createElement("div",gr({},s,{onTouchStart:N,onMouseDown:N,className:"react-colorful__interactive",ref:r,onKeyDown:c,tabIndex:0,role:"slider"}))}),oM=function(i){return i.filter(Boolean).join(" ")},Su=function(i){var e=i.color,t=i.left,s=i.top,r=s===void 0?.5:s,o=oM(["react-colorful__pointer",i.className]);return n.createElement("div",{className:o,style:{top:100*r+"%",left:100*t+"%"}},n.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:e}}))},pe=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*i)/t},hLe=function(i){return mLe(wo(i))},wo=function(i){return i[0]==="#"&&(i=i.substring(1)),i.length<6?{r:parseInt(i[0]+i[0],16),g:parseInt(i[1]+i[1],16),b:parseInt(i[2]+i[2],16),a:i.length===4?pe(parseInt(i[3]+i[3],16)/255,2):1}:{r:parseInt(i.substring(0,2),16),g:parseInt(i.substring(2,4),16),b:parseInt(i.substring(4,6),16),a:i.length===8?pe(parseInt(i.substring(6,8),16)/255,2):1}},ILe=function(i){return ALe(CLe(i))},wLe=function(i){var e=i.s,t=i.v,s=i.a,r=(200-e)*t/100;return{h:pe(i.h),s:pe(r>0&&r<200?e*t/100/(r<=100?r:200-r)*100:0),l:pe(r/2),a:pe(s,2)}},Co=function(i){var e=wLe(i);return"hsl("+e.h+", "+e.s+"%, "+e.l+"%)"},CLe=function(i){var e=i.h,t=i.s,s=i.v,r=i.a;e=e/360*6,t/=100,s/=100;var o=Math.floor(e),M=s*(1-t),a=s*(1-(e-o)*t),u=s*(1-(1-e+o)*t),l=o%6;return{r:pe(255*[s,a,M,M,u,s][l]),g:pe(255*[u,s,s,a,M,M][l]),b:pe(255*[M,M,u,s,s,a][l]),a:pe(r,2)}},fi=function(i){var e=i.toString(16);return e.length<2?"0"+e:e},ALe=function(i){var e=i.r,t=i.g,s=i.b,r=i.a,o=r<1?fi(pe(255*r)):"";return"#"+fi(e)+fi(t)+fi(s)+o},mLe=function(i){var e=i.r,t=i.g,s=i.b,r=i.a,o=Math.max(e,t,s),M=o-Math.min(e,t,s),a=M?o===e?(t-s)/M:o===t?2+(s-e)/M:4+(e-t)/M:0;return{h:pe(60*(a<0?a+6:a)),s:pe(o?M/o*100:0),v:pe(o/255*100),a:r}},pLe=n.memo(function(i){var e=i.hue,t=i.onChange,s=oM(["react-colorful__hue",i.className]);return n.createElement("div",{className:s},n.createElement(fu,{onMove:function(r){t({h:360*r.left})},onKey:function(r){t({h:Mi(e+360*r.left,0,360)})},"aria-label":"Hue","aria-valuenow":pe(e),"aria-valuemax":"360","aria-valuemin":"0"},n.createElement(Su,{className:"react-colorful__hue-pointer",left:e/360,color:Co({h:e,s:100,v:100,a:1})})))}),OLe=n.memo(function(i){var e=i.hsva,t=i.onChange,s={backgroundColor:Co({h:e.h,s:100,v:100,a:1})};return n.createElement("div",{className:"react-colorful__saturation",style:s},n.createElement(fu,{onMove:function(r){t({s:100*r.left,v:100-100*r.top})},onKey:function(r){t({s:Mi(e.s+100*r.left,0,100),v:Mi(e.v-100*r.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+pe(e.s)+"%, Brightness "+pe(e.v)+"%"},n.createElement(Su,{className:"react-colorful__saturation-pointer",top:1-e.v/100,left:e.s/100,color:Co(e)})))}),xu=function(i,e){if(i===e)return!0;for(var t in i)if(i[t]!==e[t])return!1;return!0},ELe=function(i,e){return i.toLowerCase()===e.toLowerCase()||xu(wo(i),wo(e))};function _Le(i,e,t){var s=ho(t),r=Qo(function(){return i.toHsva(e)}),o=r[0],M=r[1],a=Fe({color:e,hsva:o});ye(function(){if(!i.equal(e,a.current.color)){var l=i.toHsva(e);a.current={hsva:l,color:e},M(l)}},[e,i]),ye(function(){var l;xu(o,a.current.hsva)||i.equal(l=i.fromHsva(o),a.current.color)||(a.current={hsva:o,color:l},s(l))},[o,i,s]);var u=Qt(function(l){M(function(N){return Object.assign({},N,l)})},[]);return[o,u]}var fLe=typeof window<"u"?il:ye,SLe=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},ha=new Map,xLe=function(i){fLe(function(){var e=i.current?i.current.ownerDocument:document;if(e!==void 0&&!ha.has(e)){var t=e.createElement("style");t.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,ha.set(e,t);var s=SLe();s&&t.setAttribute("nonce",s),e.head.appendChild(t)}},[])},kLe=function(i){var e=i.className,t=i.colorModel,s=i.color,r=s===void 0?t.defaultColor:s,o=i.onChange,M=_u(i,["className","colorModel","color","onChange"]),a=Fe(null);xLe(a);var u=_Le(t,r,o),l=u[0],N=u[1],c=oM(["react-colorful",e]);return n.createElement("div",gr({},M,{ref:a,className:c}),n.createElement(OLe,{hsva:l,onChange:N}),n.createElement(pLe,{hue:l.h,onChange:N,className:"react-colorful__last-control"}))},YLe={defaultColor:"000",toHsva:hLe,fromHsva:function(i){return ILe({h:i.h,s:i.s,v:i.v,a:1})},equal:ELe},QLe=function(i){return n.createElement(kLe,gr({},i,{colorModel:YLe}))};class vLe extends ze{dialogName;filters;filterFunc;constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName=`SelectID.${this.dialogName}`;const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch{this.filters={}}e.filters&&(this.filters={...this.filters,...e.filters||{}});let s=this.props.selected||[];if(Array.isArray(s)||(s=[s]),s=s.filter(r=>r),e.filterFunc)if(typeof e.filterFunc=="string")try{this.filterFunc=new Function("obj",e.filterFunc)}catch{console.error(`Cannot parse filter function: "obj => ${e.filterFunc}"`),this.filterFunc=void 0}else this.filterFunc=e.filterFunc;this.state={selected:s,name:"",selectionBlocked:!1}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect?this.state.selected:this.state.selected[0]||"",this.state.name),this.props.onClose()}render(){let e;return this.state.name||this.state.selected.length?this.state.selected.length===1?e=[n.createElement("span",{key:"selected"},D.t("ra_Selected")," "),n.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},(this.state.name||this.state.selected[0])+(this.state.name?` [${this.state.selected[0]}]`:""))]:e=[n.createElement("span",{key:"selected"},D.t("ra_Selected")," "),n.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},D.t("%s items",this.state.selected.length.toString()))]:e=this.props.title||D.t("ra_Please select object ID..."),n.createElement(de,{onClose:()=>{},maxWidth:!1,style:{zIndex:this.props.zIndex||void 0},sx:{"& .MuiDialog-paper":{height:"95%",p:"4px",width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)"}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectid_title"},n.createElement(Ie,{id:"ar_dialog_selectid_title",style:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}},e),n.createElement(Ae,{style:{height:"100%",overflow:"hidden",padding:"8px 4px"}},n.createElement(zLe,{foldersFirst:this.props.foldersFirst,imagePrefix:this.props.imagePrefix||this.props.prefix,dateFormat:this.props.dateFormat,defaultFilters:this.filters,dialogName:this.dialogName,isFloatComma:this.props.isFloatComma,showExpertButton:this.props.showExpertButton!==void 0?this.props.showExpertButton:!0,expertMode:this.props.expertMode,columns:this.props.columns||["name","type","role","room","func","val"],types:this.props.types?Array.isArray(this.props.types)?this.props.types:[this.props.types]:["state"],root:this.props.root,t:D.t,lang:this.props.lang||D.getLanguage(),socket:this.props.socket,selected:this.state.selected,multiSelect:this.props.multiSelect,notEditable:this.props.notEditable===void 0?!0:this.props.notEditable,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,customFilter:this.props.customFilter,allowNonObjects:this.props.allowNonObjects,onFilterChanged:t=>{this.filters=t,(window._localStorage||window.localStorage).setItem(this.dialogName,JSON.stringify(t))},onSelect:async(t,s,r)=>{let o;if(Array.isArray(t)?o=t:o=[t],JSON.stringify(o)!==JSON.stringify(this.state.selected)){let M=!0;if(this.props.onSelectConfirm){const a={};for(const u of o)try{a[u]=await this.props.socket.getObject(u)}catch{}M=await this.props.onSelectConfirm(o,a)}this.setState({selected:o,name:s,selectionBlocked:!M},()=>r&&this.handleOk())}else r&&this.handleOk()},filterFunc:this.filterFunc,title:"",onAllLoaded:()=>this.setState({allLoaded:!0})})),n.createElement(me,null,n.createElement(X,{id:`ar_dialog_selectid_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),startIcon:n.createElement(ve,null),disabled:!this.state.allLoaded||!this.state.selected.length||this.state.selectionBlocked,color:"primary"},this.props.ok||D.t("ra_Ok")),n.createElement(X,{id:`ar_dialog_selectid_cancel_${this.props.dialogName||""}`,color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}function $t(i,e,t){if(typeof e=="string"&&(e=e.split(".")),!i)return null;if(e.length===1)return t&&t[i[e[0]]]?t[i[e[0]]]:i[e[0]];const s=e.shift();return $t(i[s],e)}function ku(i,e,t){if(typeof e=="string"&&(e=e.split(".")),e.length===1)return i[e[0]]=t;const s=e.shift();return(i[s]===null||i[s]===void 0)&&(i[s]={}),ku(i[s],e,t)}const R={tableContainer:{width:"100%",height:"100%",overflow:"auto"},table:{width:"100%",minWidth:800,maxWidth:1920},cell:{paddingTop:0,paddingBottom:0,paddingLeft:4,paddingRight:4},rowMainWithChildren:{},rowMainWithoutChildren:{},rowNoEdit:{opacity:.3},cellExpand:{width:30},cellButton:{width:30},cellHeader:{fontWeight:"bold",background:i=>(i.palette.mode==="dark","#888"),color:i=>i.palette.mode==="dark"?"#EEE":"#111",height:48,wordBreak:"break-word",whiteSpace:"pre"},width_name_nicknames:{maxWidth:150},width_ioType:{maxWidth:100},width_type:{maxWidth:100},width_displayTraits:{maxWidth:100},width_roomHint:{maxWidth:100},rowSecondary:{fontStyle:"italic"},cellSecondary:{fontSize:10},visuallyHidden:{border:0,clip:"rect(0 0 0 0)",height:1,margin:-1,overflow:"hidden",padding:0,position:"absolute",top:20,width:1},fieldEditWithButton:{width:"calc(100% - 33px)",display:"inline-block"},fieldEdit:{width:"100%",display:"inline-block",lineHeight:"50px",verticalAlign:"middle"},fieldButton:{width:30,display:"inline-block"},colorDialog:{overflow:"hidden",padding:15},subText:{fontSize:10,fontStyle:"italic"},glow:{animation:"glow 0.2s 2 alternate"}};function Ia(i,e,t,s){const r=$t(i,t,s)||"",o=$t(e,t,s)||"";return or?1:0}function ULe(i,e,t){return i==="desc"?(s,r)=>Ia(s,r,e,t):(s,r)=>-Ia(s,r,e,t)}function bLe(i,e){const t=i.map((s,r)=>({e:s,i:r}));return t.sort((s,r)=>{const o=e(s.e,r.e);return o||s.i-r.i}),t.map(s=>s.e)}class Ao extends ze{selectCallback=null;updateTimeout=null;constructor(e){super(e);let t=(window._localStorage||window.localStorage).getItem(this.props.name||"iob-table")||"[]";try{t=JSON.parse(t)||[]}catch{t=[]}Array.isArray(t)||(t=[]),this.state={opened:t,editMode:!1,deleteMode:!1,editData:null,order:"asc",update:null,orderBy:this.props.columns[0].field,showSelectColor:!1}}componentWillUnmount(){this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null)}static getDerivedStateFromProps(e,t){if(e.glowOnChange){const s=[];let r=0;return e.data&&t.data&&e.data.forEach(o=>{var a;r++;const M=(a=t.data)==null?void 0:a.find(u=>u.id===o.id);M?JSON.stringify(M)!==JSON.stringify(o)&&s.push(o.id):s.push(o.id)}),s.length&&s.length!==r?{data:e.data,update:s}:{data:e.data}}return{data:e.data}}renderCellEdit(e,t){let s=$t(e,t.field);return Array.isArray(s)&&(s=s[0]),t.lookup?this.renderCellEditSelect(t,s):t.editComponent?this.renderCellEditCustom(t,s,e):t.type==="boolean"||!t.type&&typeof s=="boolean"?this.renderCellEditBoolean(t,s):t.type==="color"?this.renderCellEditColor(t,s):t.type==="oid"?this.renderCellEditObjectID(t,s):t.type==="numeric"?this.renderCellEditNumber(t,s):this.renderCellEditString(t,s)}onChange(e,t,s){const r=this.state.editData?{...this.state.editData}:{};s===t?delete r[e.field]:r[e.field]=s,this.setState({editData:r})}renderCellEditSelect(e,t){return n.createElement(Xe,{variant:"standard",onChange:s=>this.onChange(e,t,s.target.value),value:this.state.editData&&this.state.editData[e.field]||t},e.lookup&&Object.keys(e.lookup).map((s,r)=>{var o;return n.createElement(te,{key:r,value:s},(o=e.lookup)==null?void 0:o[s])}))}renderCellEditString(e,t){return n.createElement(le,{variant:"standard",style:R.fieldEdit,fullWidth:!0,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:s=>this.onChange(e,t,s.target.value)})}renderCellEditNumber(e,t){return n.createElement(le,{variant:"standard",style:R.fieldEdit,type:"number",fullWidth:!0,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:s=>this.onChange(e,t,s.target.value)})}renderCellEditCustom(e,t,s){const r=e.editComponent;return this.state.editData&&this.state.editData[e.field]!==void 0&&(t=this.state.editData[e.field],s=JSON.parse(JSON.stringify(s)),s[e.field]=t),r?n.createElement(r,{value:t,rowData:s,onChange:o=>this.onChange(e,t,o)}):null}renderCellEditBoolean(e,t){return n.createElement(ne,{checked:this.state.editData&&this.state.editData[e.field]!==void 0?!!this.state.editData[e.field]:!!t,onChange:s=>this.onChange(e,!!t,s.target.checked),inputProps:{"aria-label":"checkbox"}})}renderSelectColorDialog(){return n.createElement(de,{sx:{"& .MuiPaper-root":R.root,"& .MuiPaper-paper":R.paper},onClose:()=>{this.selectCallback=null,this.setState({showSelectColor:!1})},open:this.state.showSelectColor},n.createElement(QLe,{color:this.state.selectIdValue,onChange:e=>this.setState({selectIdValue:e},()=>{this.selectCallback&&this.selectCallback(e)})}))}renderCellEditColor(e,t){const s=this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t;return n.createElement("div",{style:R.fieldEdit},n.createElement(le,{variant:"standard",fullWidth:!0,style:R.fieldEditWithButton,value:s,inputProps:{style:{backgroundColor:s,color:E.isUseBright(s)?"#FFF":"#000"}},onChange:r=>this.onChange(e,!!t,r.target.value)}),n.createElement(P,{style:R.fieldButton,onClick:()=>{this.selectCallback=r=>this.onChange(e,t,r),this.setState({showSelectColor:!0,selectIdValue:t})},size:"large"},n.createElement(rN,null)))}renderSelectIdDialog(){return this.state.showSelectId&&this.props.socket?n.createElement(vLe,{key:"tableSelect",imagePrefix:"../..",dialogName:this.props.adapterName,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,selected:this.state.selectIdValue,onClose:()=>this.setState({showSelectId:!1}),onOk:e=>{this.setState({showSelectId:!1,selectIdValue:null});const t=Array.isArray(e)?e[0]:e;t&&this.selectCallback&&(this.selectCallback&&this.selectCallback(t),this.selectCallback=null)}}):null}renderCellEditObjectID(e,t){return n.createElement("div",{style:R.fieldEdit},n.createElement(le,{variant:"standard",fullWidth:!0,style:R.fieldEditWithButton,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:s=>this.onChange(e,t,s.target.value)}),n.createElement(P,{style:R.fieldButton,onClick:()=>{this.selectCallback=s=>this.onChange(e,t,s),this.setState({showSelectId:!0,selectIdValue:t})},size:"large"},n.createElement(oN,null)))}static renderCellNonEdit(e,t){let s=$t(e,t.field,t.lookup);return Array.isArray(s)&&(s=s[0]),t.type==="boolean"?n.createElement(ne,{checked:!!s,disabled:!0,inputProps:{"aria-label":"checkbox"}}):s}renderCell(e,t,s,r){return this.state.editMode===r&&t.editable!=="never"&&t.editable!==!1?n.createElement(Ve,{key:t.field,style:{...R.cell,...s?R.cellSecondary:void 0,...t.cellStyle},component:"th"},this.renderCellEdit(e,t)):n.createElement(Ve,{key:t.field,style:{...R.cell,...s?R.cellSecondary:void 0,...t.cellStyle},component:"th"},Ao.renderCellNonEdit(e,t))}static renderCellWithSubField(e,t){const s=$t(e,t.field,t.lookup);if(t.subField){const r=$t(e,t.subField,t.subLookup);return n.createElement("div",null,n.createElement("div",{style:R.mainText},s),n.createElement("div",{style:{...R.subText,...t.subStyle||void 0}},r))}return n.createElement("div",null,n.createElement("div",{style:R.mainText},s))}renderLine(e,t){const s=this.props.levelShift===void 0?24:this.props.levelShift;t=t||0;const r=this.props.data.indexOf(e);if(!e||!t&&e.parentId||t&&!e.parentId)return null;const o=this.state.opened.includes(e.id),M=this.props.data.filter(u=>u.parentId===e.id),a=n.createElement(mM,{key:e.id,className:`table-row-${(e.id||"").toString().replace(/[.$]/g,"_")}`,style:{...this.state.update&&this.state.update.includes(e.id)&&R.glow||void 0,...R.row,...t?R.rowSecondary:void 0,...!t&&M.length?R.rowMainWithChildren:void 0,...!t&&!M.length?R.rowMainWithoutChildren:void 0,...this.state.editMode!==!1&&this.state.editMode!==r?R.rowNoEdit:void 0,...this.state.deleteMode!==!1&&this.state.deleteMode!==r?R.rowNoEdit:void 0}},n.createElement(Ve,{style:{...R.cell,...R.cellExpand,...t?R.cellSecondary:void 0}},M.length?n.createElement(P,{onClick:()=>{const u=[...this.state.opened],l=u.indexOf(e.id);l===-1?(u.push(e.id),u.sort()):u.splice(l,1),(window._localStorage||window.localStorage).setItem(this.props.name||"iob-table",JSON.stringify(u)),this.setState({opened:u})},size:"small"},o?n.createElement(MN,null):n.createElement(nN,null)):null),n.createElement(Ve,{scope:"row",style:{...R.cell,...t?R.cellSecondary:void 0,...this.props.columns[0].cellStyle,paddingLeft:s*t}},this.props.columns[0].subField?Ao.renderCellWithSubField(e,this.props.columns[0]):$t(e,this.props.columns[0].field,this.props.columns[0].lookup)),this.props.columns.map((u,l)=>!l&&!u.hidden?null:this.renderCell(e,u,t,r)),this.props.onUpdate?n.createElement(Ve,{style:{...R.cell,...R.cellButton}},this.state.editMode===r||this.state.deleteMode===r?n.createElement(P,{disabled:this.state.editMode!==!1&&(!this.state.editData||!Object.keys(this.state.editData).length),onClick:()=>{if(this.state.editMode!==!1){const u=JSON.parse(JSON.stringify(e));this.state.editData&&Object.keys(this.state.editData).forEach(l=>{var N;return ku(u,l,(N=this.state.editData)==null?void 0:N[l])}),this.setState({editMode:!1},()=>this.props.onUpdate&&this.props.onUpdate(u,e))}else this.setState({deleteMode:!1},()=>this.props.onDelete&&this.props.onDelete(e))},size:"large"},n.createElement(ve,null)):n.createElement(P,{disabled:this.state.editMode!==!1,onClick:()=>this.setState({editMode:r,editData:null}),size:"large"},n.createElement(Ks,null))):null,this.props.onDelete&&!this.props.onUpdate?n.createElement(Ve,{style:{...R.cell,...R.cellButton}},this.state.deleteMode===r?n.createElement(P,{disabled:this.state.editMode!==!1&&(!this.state.editData||!Object.keys(this.state.editData).length),onClick:()=>this.setState({deleteMode:!1},()=>this.props.onDelete&&this.props.onDelete(e)),size:"large"},n.createElement(ve,null)):null):null,this.props.onUpdate||this.props.onDelete?n.createElement(Ve,{style:{...R.cell,...R.cellButton}},this.state.editMode===r||this.state.deleteMode===r?n.createElement(P,{onClick:()=>this.setState({editMode:!1,deleteMode:!1}),size:"large"},n.createElement(ge,null)):this.props.onDelete?n.createElement(P,{disabled:this.state.deleteMode!==!1,onClick:()=>this.setState({deleteMode:r}),size:"large"},n.createElement(ut,null)):null):null);if(!t&&o){const u=M.map(l=>this.renderLine(l,t+1));return u.unshift(a),u}return a}handleRequestSort(e){const t=this.state.orderBy===e&&this.state.order==="asc";this.setState({order:t?"desc":"asc",orderBy:e})}renderHead(){return n.createElement(Ll,null,n.createElement(mM,{key:"headerRow"},n.createElement(Ve,{component:"th",sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R.cellExpand)}),n.createElement(Ve,{component:"th",sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R[`width_${this.props.columns[0].field.replace(/\./g,"_")}`]),style:this.props.columns[0].headerStyle||this.props.columns[0].cellStyle,sortDirection:this.props.noSort?!1:this.state.orderBy===this.props.columns[0].field?this.state.order:!1},this.props.noSort?null:n.createElement(pM,{active:this.state.orderBy===this.props.columns[0].field,direction:this.state.orderBy===this.props.columns[0].field?this.state.order:"asc",onClick:()=>this.handleRequestSort(this.props.columns[0].field)},this.props.columns[0].title||this.props.columns[0].field,this.state.orderBy===this.props.columns[0].field?n.createElement("span",{style:R.visuallyHidden},this.state.order==="desc"?"sorted descending":"sorted ascending"):null)),this.props.columns.map((e,t)=>!t&&!e.hidden?null:n.createElement(Ve,{key:e.field,sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R[`width_${e.field.replace(/\./g,"_")}`]),style:e.headerStyle||e.cellStyle,component:"th"},this.props.noSort?null:n.createElement(pM,{active:this.state.orderBy===e.field,direction:this.state.orderBy===e.field?this.state.order:"asc",onClick:()=>this.handleRequestSort(e.field)},e.title||e.field,this.state.orderBy===e.field?n.createElement("span",{style:R.visuallyHidden},this.state.order==="desc"?"sorted descending":"sorted ascending"):null))),this.props.onUpdate?n.createElement(Ve,{component:"th",sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R.cellButton)},this.props.noAdd?null:n.createElement(Ct,{color:"primary",size:"small",disabled:this.state.editMode!==!1,onClick:()=>this.props.onUpdate&&this.props.onUpdate(!0)},n.createElement(Fr,null))):null,this.props.onDelete||this.props.onUpdate?n.createElement(Ve,{component:"th",sx:E.getStyle(this.props.theme,R.cell,R.cellHeader,R.cellButton)}):null))}render(){const e=this.props.columns.find(t=>t.field===this.state.orderBy);if(e){const t=e.lookup,s=bLe(this.props.data,ULe(this.state.order,this.state.orderBy,t));return this.state.update&&this.state.update.length&&(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null,this.setState({update:null})},500)),n.createElement("div",{style:R.tableContainer,className:this.props.className},n.createElement(Ba,{style:R.table,"aria-label":"simple table",size:"small",stickyHeader:!0},this.renderHead(),n.createElement(jl,null,s.map(r=>this.renderLine(r)))),this.renderSelectIdDialog(),this.renderSelectColorDialog())}return null}}function wa(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);e&&(s=s.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),t.push.apply(t,s)}return t}function Yu(i){for(var e=1;ei.length)&&(e=i.length);for(var t=0,s=new Array(e);t
',ije=Number.isNaN||Nt.isNaN;function K(i){return typeof i=="number"&&!ije(i)}var Qa=function(e){return e>0&&e<1/0};function Pr(i){return typeof i>"u"}function Ms(i){return mo(i)==="object"&&i!==null}var rje=Object.prototype.hasOwnProperty;function ws(i){if(!Ms(i))return!1;try{var e=i.constructor,t=e.prototype;return e&&t&&rje.call(t,"isPrototypeOf")}catch{return!1}}function Pe(i){return typeof i=="function"}var oje=Array.prototype.slice;function Bu(i){return Array.from?Array.from(i):oje.call(i)}function De(i,e){return i&&Pe(e)&&(Array.isArray(i)||K(i.length)?Bu(i).forEach(function(t,s){e.call(i,t,s,i)}):Ms(i)&&Object.keys(i).forEach(function(t){e.call(i,i[t],t,i)})),i}var ue=Object.assign||function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r0&&s.forEach(function(o){Ms(o)&&Object.keys(o).forEach(function(M){e[M]=o[M]})}),e},Mje=/\.\d*(?:0|9){12}\d*$/;function ps(i){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return Mje.test(i)?Math.round(i*e)/e:i}var nje=/^width|height|left|top|marginLeft|marginTop$/;function Wt(i,e){var t=i.style;De(e,function(s,r){nje.test(r)&&K(s)&&(s="".concat(s,"px")),t[r]=s})}function aje(i,e){return i.classList?i.classList.contains(e):i.className.indexOf(e)>-1}function he(i,e){if(e){if(K(i.length)){De(i,function(s){he(s,e)});return}if(i.classList){i.classList.add(e);return}var t=i.className.trim();t?t.indexOf(e)<0&&(i.className="".concat(t," ").concat(e)):i.className=e}}function lt(i,e){if(e){if(K(i.length)){De(i,function(t){lt(t,e)});return}if(i.classList){i.classList.remove(e);return}i.className.indexOf(e)>=0&&(i.className=i.className.replace(e,""))}}function Cs(i,e,t){if(e){if(K(i.length)){De(i,function(s){Cs(s,e,t)});return}t?he(i,e):lt(i,e)}}var cje=/([a-z\d])([A-Z])/g;function uM(i){return i.replace(cje,"$1-$2").toLowerCase()}function Yo(i,e){return Ms(i[e])?i[e]:i.dataset?i.dataset[e]:i.getAttribute("data-".concat(uM(e)))}function ai(i,e,t){Ms(t)?i[e]=t:i.dataset?i.dataset[e]=t:i.setAttribute("data-".concat(uM(e)),t)}function uje(i,e){if(Ms(i[e]))try{delete i[e]}catch{i[e]=void 0}else if(i.dataset)try{delete i.dataset[e]}catch{i.dataset[e]=void 0}else i.removeAttribute("data-".concat(uM(e)))}var Gu=/\s\s*/,Fu=(function(){var i=!1;if(Tr){var e=!1,t=function(){},s=Object.defineProperty({},"once",{get:function(){return i=!0,e},set:function(o){e=o}});Nt.addEventListener("test",t,s),Nt.removeEventListener("test",t,s)}return i})();function tt(i,e,t){var s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=t;e.trim().split(Gu).forEach(function(o){if(!Fu){var M=i.listeners;M&&M[o]&&M[o][t]&&(r=M[o][t],delete M[o][t],Object.keys(M[o]).length===0&&delete M[o],Object.keys(M).length===0&&delete i.listeners)}i.removeEventListener(o,r,s)})}function Ze(i,e,t){var s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=t;e.trim().split(Gu).forEach(function(o){if(s.once&&!Fu){var M=i.listeners,a=M===void 0?{}:M;r=function(){delete a[o][t],i.removeEventListener(o,r,s);for(var l=arguments.length,N=new Array(l),c=0;cMath.abs(t)&&(t=L)})}),t}function xi(i,e){var t=i.pageX,s=i.pageY,r={endX:t,endY:s};return e?r:Yu({startX:t,startY:s},r)}function Lje(i){var e=0,t=0,s=0;return De(i,function(r){var o=r.startX,M=r.startY;e+=o,t+=M,s+=1}),e/=s,t/=s,{pageX:e,pageY:t}}function Rt(i){var e=i.aspectRatio,t=i.height,s=i.width,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",o=Qa(s),M=Qa(t);if(o&&M){var a=t*e;r==="contain"&&a>s||r==="cover"&&a90?{width:u,height:a}:{width:a,height:u}}function gje(i,e,t,s){var r=e.aspectRatio,o=e.naturalWidth,M=e.naturalHeight,a=e.rotate,u=a===void 0?0:a,l=e.scaleX,N=l===void 0?1:l,c=e.scaleY,L=c===void 0?1:c,j=t.aspectRatio,g=t.naturalWidth,y=t.naturalHeight,d=s.fillColor,I=d===void 0?"transparent":d,m=s.imageSmoothingEnabled,w=m===void 0?!0:m,O=s.imageSmoothingQuality,A=O===void 0?"low":O,h=s.maxWidth,p=h===void 0?1/0:h,S=s.maxHeight,f=S===void 0?1/0:S,$=s.minWidth,x=$===void 0?0:$,Z=s.minHeight,k=Z===void 0?0:Z,Y=document.createElement("canvas"),J=Y.getContext("2d"),Le=Rt({aspectRatio:j,width:p,height:f}),Je=Rt({aspectRatio:j,width:x,height:k},"cover"),qe=Math.min(Le.width,Math.max(Je.width,g)),us=Math.min(Le.height,Math.max(Je.height,y)),yr=Rt({aspectRatio:r,width:p,height:f}),Us=Rt({aspectRatio:r,width:x,height:k},"cover"),bs=Math.min(yr.width,Math.max(Us.width,o)),$s=Math.min(yr.height,Math.max(Us.height,M)),Ti=[-bs/2,-$s/2,bs,$s];return Y.width=ps(qe),Y.height=ps(us),J.fillStyle=I,J.fillRect(0,0,qe,us),J.save(),J.translate(qe/2,us/2),J.rotate(u*Math.PI/180),J.scale(N,L),J.imageSmoothingEnabled=w,J.imageSmoothingQuality=A,J.drawImage.apply(J,[i].concat(vu(Ti.map(function(yi){return Math.floor(ps(yi))})))),J.restore(),Y}var Vu=String.fromCharCode;function Tje(i,e,t){var s="";t+=e;for(var r=e;r0;)t.push(Vu.apply(null,Bu(r.subarray(0,s)))),r=r.subarray(s);return"data:".concat(e,";base64,").concat(btoa(t.join("")))}function zje(i){var e=new DataView(i),t;try{var s,r,o;if(e.getUint8(0)===255&&e.getUint8(1)===216)for(var M=e.byteLength,a=2;a+1=8&&(o=l+c)}}}if(o){var L=e.getUint16(o,s),j,g;for(g=0;g=0?o:Ru),height:Math.max(s.offsetHeight,M>=0?M:Ju)};this.containerData=a,Wt(r,{width:a.width,height:a.height}),he(e,We),lt(r,We)},initCanvas:function(){var e=this.containerData,t=this.imageData,s=this.options.viewMode,r=Math.abs(t.rotate)%180===90,o=r?t.naturalHeight:t.naturalWidth,M=r?t.naturalWidth:t.naturalHeight,a=o/M,u=e.width,l=e.height;e.height*a>e.width?s===3?u=e.height*a:l=e.width/a:s===3?l=e.width/a:u=e.height*a;var N={aspectRatio:a,naturalWidth:o,naturalHeight:M,width:u,height:l};this.canvasData=N,this.limited=s===1||s===2,this.limitCanvas(!0,!0),N.width=Math.min(Math.max(N.width,N.minWidth),N.maxWidth),N.height=Math.min(Math.max(N.height,N.minHeight),N.maxHeight),N.left=(e.width-N.width)/2,N.top=(e.height-N.height)/2,N.oldLeft=N.left,N.oldTop=N.top,this.initialCanvasData=ue({},N)},limitCanvas:function(e,t){var s=this.options,r=this.containerData,o=this.canvasData,M=this.cropBoxData,a=s.viewMode,u=o.aspectRatio,l=this.cropped&&M;if(e){var N=Number(s.minCanvasWidth)||0,c=Number(s.minCanvasHeight)||0;a>1?(N=Math.max(N,r.width),c=Math.max(c,r.height),a===3&&(c*u>N?N=c*u:c=N/u)):a>0&&(N?N=Math.max(N,l?M.width:0):c?c=Math.max(c,l?M.height:0):l&&(N=M.width,c=M.height,c*u>N?N=c*u:c=N/u));var L=Rt({aspectRatio:u,width:N,height:c});N=L.width,c=L.height,o.minWidth=N,o.minHeight=c,o.maxWidth=1/0,o.maxHeight=1/0}if(t)if(a>(l?0:1)){var j=r.width-o.width,g=r.height-o.height;o.minLeft=Math.min(0,j),o.minTop=Math.min(0,g),o.maxLeft=Math.max(0,j),o.maxTop=Math.max(0,g),l&&this.limited&&(o.minLeft=Math.min(M.left,M.left+(M.width-o.width)),o.minTop=Math.min(M.top,M.top+(M.height-o.height)),o.maxLeft=M.left,o.maxTop=M.top,a===2&&(o.width>=r.width&&(o.minLeft=Math.min(0,j),o.maxLeft=Math.max(0,j)),o.height>=r.height&&(o.minTop=Math.min(0,g),o.maxTop=Math.max(0,g))))}else o.minLeft=-o.width,o.minTop=-o.height,o.maxLeft=r.width,o.maxTop=r.height},renderCanvas:function(e,t){var s=this.canvasData,r=this.imageData;if(t){var o=jje({width:r.naturalWidth*Math.abs(r.scaleX||1),height:r.naturalHeight*Math.abs(r.scaleY||1),degree:r.rotate||0}),M=o.width,a=o.height,u=s.width*(M/s.naturalWidth),l=s.height*(a/s.naturalHeight);s.left-=(u-s.width)/2,s.top-=(l-s.height)/2,s.width=u,s.height=l,s.aspectRatio=M/a,s.naturalWidth=M,s.naturalHeight=a,this.limitCanvas(!0,!1)}(s.width>s.maxWidth||s.widths.maxHeight||s.heightt.width?o.height=o.width/s:o.width=o.height*s),this.cropBoxData=o,this.limitCropBox(!0,!0),o.width=Math.min(Math.max(o.width,o.minWidth),o.maxWidth),o.height=Math.min(Math.max(o.height,o.minHeight),o.maxHeight),o.width=Math.max(o.minWidth,o.width*r),o.height=Math.max(o.minHeight,o.height*r),o.left=t.left+(t.width-o.width)/2,o.top=t.top+(t.height-o.height)/2,o.oldLeft=o.left,o.oldTop=o.top,this.initialCropBoxData=ue({},o)},limitCropBox:function(e,t){var s=this.options,r=this.containerData,o=this.canvasData,M=this.cropBoxData,a=this.limited,u=s.aspectRatio;if(e){var l=Number(s.minCropBoxWidth)||0,N=Number(s.minCropBoxHeight)||0,c=a?Math.min(r.width,o.width,o.width+o.left,r.width-o.left):r.width,L=a?Math.min(r.height,o.height,o.height+o.top,r.height-o.top):r.height;l=Math.min(l,r.width),N=Math.min(N,r.height),u&&(l&&N?N*u>l?N=l/u:l=N*u:l?N=l/u:N&&(l=N*u),L*u>c?L=c/u:c=L*u),M.minWidth=Math.min(l,c),M.minHeight=Math.min(N,L),M.maxWidth=c,M.maxHeight=L}t&&(a?(M.minLeft=Math.max(0,o.left),M.minTop=Math.max(0,o.top),M.maxLeft=Math.min(r.width,o.left+o.width)-M.width,M.maxTop=Math.min(r.height,o.top+o.height)-M.height):(M.minLeft=0,M.minTop=0,M.maxLeft=r.width-M.width,M.maxTop=r.height-M.height))},renderCropBox:function(){var e=this.options,t=this.containerData,s=this.cropBoxData;(s.width>s.maxWidth||s.widths.maxHeight||s.height=t.width&&s.height>=t.height?bu:aM),Wt(this.cropBox,ue({width:s.width,height:s.height},ti({translateX:s.left,translateY:s.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),Os(this.element,_o,this.getData())}},wje={initPreview:function(){var e=this.element,t=this.crossOrigin,s=this.options.preview,r=t?this.crossOriginUrl:this.url,o=e.alt||"The image to preview",M=document.createElement("img");if(t&&(M.crossOrigin=t),M.src=r,M.alt=o,this.viewBox.appendChild(M),this.viewBoxImage=M,!!s){var a=s;typeof s=="string"?a=e.ownerDocument.querySelectorAll(s):s.querySelector&&(a=[s]),this.previews=a,De(a,function(u){var l=document.createElement("img");ai(u,Si,{width:u.offsetWidth,height:u.offsetHeight,html:u.innerHTML}),t&&(l.crossOrigin=t),l.src=r,l.alt=o,l.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',u.innerHTML="",u.appendChild(l)})}},resetPreview:function(){De(this.previews,function(e){var t=Yo(e,Si);Wt(e,{width:t.width,height:t.height}),e.innerHTML=t.html,uje(e,Si)})},preview:function(){var e=this.imageData,t=this.canvasData,s=this.cropBoxData,r=s.width,o=s.height,M=e.width,a=e.height,u=s.left-t.left-e.left,l=s.top-t.top-e.top;!this.cropped||this.disabled||(Wt(this.viewBoxImage,ue({width:M,height:a},ti(ue({translateX:-u,translateY:-l},e)))),De(this.previews,function(N){var c=Yo(N,Si),L=c.width,j=c.height,g=L,y=j,d=1;r&&(d=L/r,y=o*d),o&&y>j&&(d=j/o,g=r*d,y=j),Wt(N,{width:g,height:y}),Wt(N.getElementsByTagName("img")[0],ue({width:M*d,height:a*d},ti(ue({translateX:-u*d,translateY:-l*d},e))))}))}},Cje={bind:function(){var e=this.element,t=this.options,s=this.cropper;Pe(t.cropstart)&&Ze(e,xo,t.cropstart),Pe(t.cropmove)&&Ze(e,So,t.cropmove),Pe(t.cropend)&&Ze(e,fo,t.cropend),Pe(t.crop)&&Ze(e,_o,t.crop),Pe(t.zoom)&&Ze(e,ko,t.zoom),Ze(s,Oa,this.onCropStart=this.cropStart.bind(this)),t.zoomable&&t.zoomOnWheel&&Ze(s,xa,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),t.toggleDragModeOnDblclick&&Ze(s,pa,this.onDblclick=this.dblclick.bind(this)),Ze(e.ownerDocument,Ea,this.onCropMove=this.cropMove.bind(this)),Ze(e.ownerDocument,_a,this.onCropEnd=this.cropEnd.bind(this)),t.responsive&&Ze(window,Sa,this.onResize=this.resize.bind(this))},unbind:function(){var e=this.element,t=this.options,s=this.cropper;Pe(t.cropstart)&&tt(e,xo,t.cropstart),Pe(t.cropmove)&&tt(e,So,t.cropmove),Pe(t.cropend)&&tt(e,fo,t.cropend),Pe(t.crop)&&tt(e,_o,t.crop),Pe(t.zoom)&&tt(e,ko,t.zoom),tt(s,Oa,this.onCropStart),t.zoomable&&t.zoomOnWheel&&tt(s,xa,this.onWheel,{passive:!1,capture:!0}),t.toggleDragModeOnDblclick&&tt(s,pa,this.onDblclick),tt(e.ownerDocument,Ea,this.onCropMove),tt(e.ownerDocument,_a,this.onCropEnd),t.responsive&&tt(window,Sa,this.onResize)}},Aje={resize:function(){if(!this.disabled){var e=this.options,t=this.container,s=this.containerData,r=t.offsetWidth/s.width,o=t.offsetHeight/s.height,M=Math.abs(r-1)>Math.abs(o-1)?r:o;if(M!==1){var a,u;e.restore&&(a=this.getCanvasData(),u=this.getCropBoxData()),this.render(),e.restore&&(this.setCanvasData(De(a,function(l,N){a[N]=l*M})),this.setCropBoxData(De(u,function(l,N){u[N]=l*M})))}}},dblclick:function(){this.disabled||this.options.dragMode===Wu||this.setDragMode(aje(this.dragBox,Oo)?Pu:cM)},wheel:function(e){var t=this,s=Number(this.options.wheelZoomRatio)||.1,r=1;this.disabled||(e.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){t.wheeling=!1},50),e.deltaY?r=e.deltaY>0?1:-1:e.wheelDelta?r=-e.wheelDelta/120:e.detail&&(r=e.detail>0?1:-1),this.zoom(-r*s,e)))},cropStart:function(e){var t=e.buttons,s=e.button;if(!(this.disabled||(e.type==="mousedown"||e.type==="pointerdown"&&e.pointerType==="mouse")&&(K(t)&&t!==1||K(s)&&s!==0||e.ctrlKey))){var r=this.options,o=this.pointers,M;e.changedTouches?De(e.changedTouches,function(a){o[a.identifier]=xi(a)}):o[e.pointerId||0]=xi(e),Object.keys(o).length>1&&r.zoomable&&r.zoomOnTouch?M=$u:M=Yo(e.target,ni),KLe.test(M)&&Os(this.element,xo,{originalEvent:e,action:M})!==!1&&(e.preventDefault(),this.action=M,this.cropping=!1,M===Uu&&(this.cropping=!0,he(this.dragBox,qi)))}},cropMove:function(e){var t=this.action;if(!(this.disabled||!t)){var s=this.pointers;e.preventDefault(),Os(this.element,So,{originalEvent:e,action:t})!==!1&&(e.changedTouches?De(e.changedTouches,function(r){ue(s[r.identifier]||{},xi(r,!0))}):ue(s[e.pointerId||0]||{},xi(e,!0)),this.change(e))}},cropEnd:function(e){if(!this.disabled){var t=this.action,s=this.pointers;e.changedTouches?De(e.changedTouches,function(r){delete s[r.identifier]}):delete s[e.pointerId||0],t&&(e.preventDefault(),Object.keys(s).length||(this.action=""),this.cropping&&(this.cropping=!1,Cs(this.dragBox,qi,this.cropped&&this.options.modal)),Os(this.element,fo,{originalEvent:e,action:t}))}}},mje={change:function(e){var t=this.options,s=this.canvasData,r=this.containerData,o=this.cropBoxData,M=this.pointers,a=this.action,u=t.aspectRatio,l=o.left,N=o.top,c=o.width,L=o.height,j=l+c,g=N+L,y=0,d=0,I=r.width,m=r.height,w=!0,O;!u&&e.shiftKey&&(u=c&&L?c/L:1),this.limited&&(y=o.minLeft,d=o.minTop,I=y+Math.min(r.width,s.width,s.left+s.width),m=d+Math.min(r.height,s.height,s.top+s.height));var A=M[Object.keys(M)[0]],h={x:A.endX-A.startX,y:A.endY-A.startY},p=function(f){switch(f){case Zt:j+h.x>I&&(h.x=I-j);break;case Xt:l+h.xm&&(h.y=m-g);break}};switch(a){case aM:l+=h.x,N+=h.y;break;case Zt:if(h.x>=0&&(j>=I||u&&(N<=d||g>=m))){w=!1;break}p(Zt),c+=h.x,c<0&&(a=Xt,c=-c,l-=c),u&&(L=c/u,N+=(o.height-L)/2);break;case xt:if(h.y<=0&&(N<=d||u&&(l<=y||j>=I))){w=!1;break}p(xt),L-=h.y,N+=h.y,L<0&&(a=ds,L=-L,N-=L),u&&(c=L*u,l+=(o.width-c)/2);break;case Xt:if(h.x<=0&&(l<=y||u&&(N<=d||g>=m))){w=!1;break}p(Xt),c-=h.x,l+=h.x,c<0&&(a=Zt,c=-c,l-=c),u&&(L=c/u,N+=(o.height-L)/2);break;case ds:if(h.y>=0&&(g>=m||u&&(l<=y||j>=I))){w=!1;break}p(ds),L+=h.y,L<0&&(a=xt,L=-L,N-=L),u&&(c=L*u,l+=(o.width-c)/2);break;case Js:if(u){if(h.y<=0&&(N<=d||j>=I)){w=!1;break}p(xt),L-=h.y,N+=h.y,c=L*u}else p(xt),p(Zt),h.x>=0?jd&&(L-=h.y,N+=h.y):(L-=h.y,N+=h.y);c<0&&L<0?(a=Fs,L=-L,c=-c,N-=L,l-=c):c<0?(a=Bs,c=-c,l-=c):L<0&&(a=Gs,L=-L,N-=L);break;case Bs:if(u){if(h.y<=0&&(N<=d||l<=y)){w=!1;break}p(xt),L-=h.y,N+=h.y,c=L*u,l+=o.width-c}else p(xt),p(Xt),h.x<=0?l>y?(c-=h.x,l+=h.x):h.y<=0&&N<=d&&(w=!1):(c-=h.x,l+=h.x),h.y<=0?N>d&&(L-=h.y,N+=h.y):(L-=h.y,N+=h.y);c<0&&L<0?(a=Gs,L=-L,c=-c,N-=L,l-=c):c<0?(a=Js,c=-c,l-=c):L<0&&(a=Fs,L=-L,N-=L);break;case Fs:if(u){if(h.x<=0&&(l<=y||g>=m)){w=!1;break}p(Xt),c-=h.x,l+=h.x,L=c/u}else p(ds),p(Xt),h.x<=0?l>y?(c-=h.x,l+=h.x):h.y>=0&&g>=m&&(w=!1):(c-=h.x,l+=h.x),h.y>=0?g=0&&(j>=I||g>=m)){w=!1;break}p(Zt),c+=h.x,L=c/u}else p(ds),p(Zt),h.x>=0?j=0&&g>=m&&(w=!1):c+=h.x,h.y>=0?g0?a=h.y>0?Gs:Js:h.x<0&&(l-=c,a=h.y>0?Fs:Bs),h.y<0&&(N-=L),this.cropped||(lt(this.cropBox,We),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}w&&(o.width=c,o.height=L,o.left=l,o.top=N,this.action=a,this.renderCropBox()),De(M,function(S){S.startX=S.endX,S.startY=S.endY})}},pje={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&he(this.dragBox,qi),lt(this.cropBox,We),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=ue({},this.initialImageData),this.canvasData=ue({},this.initialCanvasData),this.cropBoxData=ue({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(ue(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),lt(this.dragBox,qi),he(this.cropBox,We)),this},replace:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&e&&(this.isImg&&(this.element.src=e),t?(this.url=e,this.image.src=e,this.ready&&(this.viewBoxImage.src=e,De(this.previews,function(s){s.getElementsByTagName("img")[0].src=e}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(e))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,lt(this.cropper,Aa)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,he(this.cropper,Aa)),this},destroy:function(){var e=this.element;return e[ce]?(e[ce]=void 0,this.isImg&&this.replaced&&(e.src=this.originalUrl),this.uncreate(),this):this},move:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,s=this.canvasData,r=s.left,o=s.top;return this.moveTo(Pr(e)?e:r+Number(e),Pr(t)?t:o+Number(t))},moveTo:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,s=this.canvasData,r=!1;return e=Number(e),t=Number(t),this.ready&&!this.disabled&&this.options.movable&&(K(e)&&(s.left=e,r=!0),K(t)&&(s.top=t,r=!0),r&&this.renderCanvas(!0)),this},zoom:function(e,t){var s=this.canvasData;return e=Number(e),e<0?e=1/(1-e):e=1+e,this.zoomTo(s.width*e/s.naturalWidth,null,t)},zoomTo:function(e,t,s){var r=this.options,o=this.canvasData,M=o.width,a=o.height,u=o.naturalWidth,l=o.naturalHeight;if(e=Number(e),e>=0&&this.ready&&!this.disabled&&r.zoomable){var N=u*e,c=l*e;if(Os(this.element,ko,{ratio:e,oldRatio:M/u,originalEvent:s})===!1)return this;if(s){var L=this.pointers,j=Hu(this.cropper),g=L&&Object.keys(L).length?Lje(L):{pageX:s.pageX,pageY:s.pageY};o.left-=(N-M)*((g.pageX-j.left-o.left)/M),o.top-=(c-a)*((g.pageY-j.top-o.top)/a)}else ws(t)&&K(t.x)&&K(t.y)?(o.left-=(N-M)*((t.x-o.left)/M),o.top-=(c-a)*((t.y-o.top)/a)):(o.left-=(N-M)/2,o.top-=(c-a)/2);o.width=N,o.height=c,this.renderCanvas(!0)}return this},rotate:function(e){return this.rotateTo((this.imageData.rotate||0)+Number(e))},rotateTo:function(e){return e=Number(e),K(e)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=e%360,this.renderCanvas(!0,!0)),this},scaleX:function(e){var t=this.imageData.scaleY;return this.scale(e,K(t)?t:1)},scaleY:function(e){var t=this.imageData.scaleX;return this.scale(K(t)?t:1,e)},scale:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,s=this.imageData,r=!1;return e=Number(e),t=Number(t),this.ready&&!this.disabled&&this.options.scalable&&(K(e)&&(s.scaleX=e,r=!0),K(t)&&(s.scaleY=t,r=!0),r&&this.renderCanvas(!0,!0)),this},getData:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.options,s=this.imageData,r=this.canvasData,o=this.cropBoxData,M;if(this.ready&&this.cropped){M={x:o.left-r.left,y:o.top-r.top,width:o.width,height:o.height};var a=s.width/s.naturalWidth;if(De(M,function(N,c){M[c]=N/a}),e){var u=Math.round(M.y+M.height),l=Math.round(M.x+M.width);M.x=Math.round(M.x),M.y=Math.round(M.y),M.width=l-M.x,M.height=u-M.y}}else M={x:0,y:0,width:0,height:0};return t.rotatable&&(M.rotate=s.rotate||0),t.scalable&&(M.scaleX=s.scaleX||1,M.scaleY=s.scaleY||1),M},setData:function(e){var t=this.options,s=this.imageData,r=this.canvasData,o={};if(this.ready&&!this.disabled&&ws(e)){var M=!1;t.rotatable&&K(e.rotate)&&e.rotate!==s.rotate&&(s.rotate=e.rotate,M=!0),t.scalable&&(K(e.scaleX)&&e.scaleX!==s.scaleX&&(s.scaleX=e.scaleX,M=!0),K(e.scaleY)&&e.scaleY!==s.scaleY&&(s.scaleY=e.scaleY,M=!0)),M&&this.renderCanvas(!0,!0);var a=s.width/s.naturalWidth;K(e.x)&&(o.left=e.x*a+r.left),K(e.y)&&(o.top=e.y*a+r.top),K(e.width)&&(o.width=e.width*a),K(e.height)&&(o.height=e.height*a),this.setCropBoxData(o)}return this},getContainerData:function(){return this.ready?ue({},this.containerData):{}},getImageData:function(){return this.sized?ue({},this.imageData):{}},getCanvasData:function(){var e=this.canvasData,t={};return this.ready&&De(["left","top","width","height","naturalWidth","naturalHeight"],function(s){t[s]=e[s]}),t},setCanvasData:function(e){var t=this.canvasData,s=t.aspectRatio;return this.ready&&!this.disabled&&ws(e)&&(K(e.left)&&(t.left=e.left),K(e.top)&&(t.top=e.top),K(e.width)?(t.width=e.width,t.height=e.width/s):K(e.height)&&(t.height=e.height,t.width=e.height*s),this.renderCanvas(!0)),this},getCropBoxData:function(){var e=this.cropBoxData,t;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(e){var t=this.cropBoxData,s=this.options.aspectRatio,r,o;return this.ready&&this.cropped&&!this.disabled&&ws(e)&&(K(e.left)&&(t.left=e.left),K(e.top)&&(t.top=e.top),K(e.width)&&e.width!==t.width&&(r=!0,t.width=e.width),K(e.height)&&e.height!==t.height&&(o=!0,t.height=e.height),s&&(r?t.height=t.width/s:o&&(t.width=t.height*s)),this.renderCropBox()),this},getCroppedCanvas:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var t=this.canvasData,s=gje(this.image,this.imageData,t,e);if(!this.cropped)return s;var r=this.getData(e.rounded),o=r.x,M=r.y,a=r.width,u=r.height,l=s.width/Math.floor(t.naturalWidth);l!==1&&(o*=l,M*=l,a*=l,u*=l);var N=a/u,c=Rt({aspectRatio:N,width:e.maxWidth||1/0,height:e.maxHeight||1/0}),L=Rt({aspectRatio:N,width:e.minWidth||0,height:e.minHeight||0},"cover"),j=Rt({aspectRatio:N,width:e.width||(l!==1?s.width:a),height:e.height||(l!==1?s.height:u)}),g=j.width,y=j.height;g=Math.min(c.width,Math.max(L.width,g)),y=Math.min(c.height,Math.max(L.height,y));var d=document.createElement("canvas"),I=d.getContext("2d");d.width=ps(g),d.height=ps(y),I.fillStyle=e.fillColor||"transparent",I.fillRect(0,0,g,y);var m=e.imageSmoothingEnabled,w=m===void 0?!0:m,O=e.imageSmoothingQuality;I.imageSmoothingEnabled=w,O&&(I.imageSmoothingQuality=O);var A=s.width,h=s.height,p=o,S=M,f,$,x,Z,k,Y;p<=-a||p>A?(p=0,f=0,x=0,k=0):p<=0?(x=-p,p=0,f=Math.min(A,a+p),k=f):p<=A&&(x=0,f=Math.min(a,A-p),k=f),f<=0||S<=-u||S>h?(S=0,$=0,Z=0,Y=0):S<=0?(Z=-S,S=0,$=Math.min(h,u+S),Y=$):S<=h&&(Z=0,$=Math.min(u,h-S),Y=$);var J=[p,S,f,$];if(k>0&&Y>0){var Le=g/a;J.push(x*Le,Z*Le,k*Le,Y*Le)}return I.drawImage.apply(I,[s].concat(vu(J.map(function(Je){return Math.floor(ps(Je))})))),d},setAspectRatio:function(e){var t=this.options;return!this.disabled&&!Pr(e)&&(t.aspectRatio=Math.max(0,e)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(e){var t=this.options,s=this.dragBox,r=this.face;if(this.ready&&!this.disabled){var o=e===cM,M=t.movable&&e===Pu;e=o||M?e:Wu,t.dragMode=e,ai(s,ni,e),Cs(s,Oo,o),Cs(s,Eo,M),t.cropBoxMovable||(ai(r,ni,e),Cs(r,Oo,o),Cs(r,Eo,M))}return this}},Oje=Nt.Cropper,Zu=(function(){function i(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(PLe(this,i),!e||!tje.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=ue({},Ya,ws(t)&&t),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return WLe(i,[{key:"init",value:function(){var t=this.element,s=t.tagName.toLowerCase(),r;if(!t[ce]){if(t[ce]=this,s==="img"){if(this.isImg=!0,r=t.getAttribute("src")||"",this.originalUrl=r,!r)return;r=t.src}else s==="canvas"&&window.HTMLCanvasElement&&(r=t.toDataURL());this.load(r)}}},{key:"load",value:function(t){var s=this;if(t){this.url=t,this.imageData={};var r=this.element,o=this.options;if(!o.rotatable&&!o.scalable&&(o.checkOrientation=!1),!o.checkOrientation||!window.ArrayBuffer){this.clone();return}if(qLe.test(t)){eje.test(t)?this.read(Dje(t)):this.clone();return}var M=new XMLHttpRequest,a=this.clone.bind(this);this.reloading=!0,this.xhr=M,M.onabort=a,M.onerror=a,M.ontimeout=a,M.onprogress=function(){M.getResponseHeader("content-type")!==ka&&M.abort()},M.onload=function(){s.read(M.response)},M.onloadend=function(){s.reloading=!1,s.xhr=null},o.checkCrossOrigin&&va(t)&&r.crossOrigin&&(t=Ua(t)),M.open("GET",t,!0),M.responseType="arraybuffer",M.withCredentials=r.crossOrigin==="use-credentials",M.send()}}},{key:"read",value:function(t){var s=this.options,r=this.imageData,o=zje(t),M=0,a=1,u=1;if(o>1){this.url=dje(t,ka);var l=hje(o);M=l.rotate,a=l.scaleX,u=l.scaleY}s.rotatable&&(r.rotate=M),s.scalable&&(r.scaleX=a,r.scaleY=u),this.clone()}},{key:"clone",value:function(){var t=this.element,s=this.url,r=t.crossOrigin,o=s;this.options.checkCrossOrigin&&va(s)&&(r||(r="anonymous"),o=Ua(s)),this.crossOrigin=r,this.crossOriginUrl=o;var M=document.createElement("img");r&&(M.crossOrigin=r),M.src=o||s,M.alt=t.alt||"The image to crop",this.image=M,M.onload=this.start.bind(this),M.onerror=this.stop.bind(this),he(M,ma),t.parentNode.insertBefore(M,t.nextSibling)}},{key:"start",value:function(){var t=this,s=this.image;s.onload=null,s.onerror=null,this.sizing=!0;var r=Nt.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(Nt.navigator.userAgent),o=function(l,N){ue(t.imageData,{naturalWidth:l,naturalHeight:N,aspectRatio:l/N}),t.initialImageData=ue({},t.imageData),t.sizing=!1,t.sized=!0,t.build()};if(s.naturalWidth&&!r){o(s.naturalWidth,s.naturalHeight);return}var M=document.createElement("img"),a=document.body||document.documentElement;this.sizingImage=M,M.onload=function(){o(M.width,M.height),r||a.removeChild(M)},M.src=s.src,r||(M.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",a.appendChild(M))}},{key:"stop",value:function(){var t=this.image;t.onload=null,t.onerror=null,t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var t=this.element,s=this.options,r=this.image,o=t.parentNode,M=document.createElement("div");M.innerHTML=sje;var a=M.querySelector(".".concat(ce,"-container")),u=a.querySelector(".".concat(ce,"-canvas")),l=a.querySelector(".".concat(ce,"-drag-box")),N=a.querySelector(".".concat(ce,"-crop-box")),c=N.querySelector(".".concat(ce,"-face"));this.container=o,this.cropper=a,this.canvas=u,this.dragBox=l,this.cropBox=N,this.viewBox=a.querySelector(".".concat(ce,"-view-box")),this.face=c,u.appendChild(r),he(t,We),o.insertBefore(a,t.nextSibling),lt(r,ma),this.initPreview(),this.bind(),s.initialAspectRatio=Math.max(0,s.initialAspectRatio)||NaN,s.aspectRatio=Math.max(0,s.aspectRatio)||NaN,s.viewMode=Math.max(0,Math.min(3,Math.round(s.viewMode)))||0,he(N,We),s.guides||he(N.getElementsByClassName("".concat(ce,"-dashed")),We),s.center||he(N.getElementsByClassName("".concat(ce,"-center")),We),s.background&&he(a,"".concat(ce,"-bg")),s.highlight||he(c,HLe),s.cropBoxMovable&&(he(c,Eo),ai(c,ni,aM)),s.cropBoxResizable||(he(N.getElementsByClassName("".concat(ce,"-line")),We),he(N.getElementsByClassName("".concat(ce,"-point")),We)),this.render(),this.ready=!0,this.setDragMode(s.dragMode),s.autoCrop&&this.crop(),this.setData(s.data),Pe(s.ready)&&Ze(t,fa,s.ready,{once:!0}),Os(t,fa)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var t=this.cropper.parentNode;t&&t.removeChild(this.cropper),lt(this.element,We)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=Oje,i}},{key:"setDefaults",value:function(t){ue(Ya,ws(t)&&t)}}])})();ue(Zu.prototype,Ije,wje,Cje,Aje,mje,pje);var ts=function(){return ts=Object.assign||function(i){for(var e,t=1,s=arguments.length;t0&&S.zoomTo(Je)})(p.currentTarget.cropper,w),d&&d(p)}}));I&&I(h)}return function(){var p,S;(S=(p=O.current)===null||p===void 0?void 0:p.cropper)===null||S===void 0||S.destroy()}}),[O]);var A=(function(h){return Eje.reduce((function(p,S){var f=p,$=S;return f[$],Rr(f,[typeof $=="symbol"?$:$+""])}),h)})(ts(ts({},m),{crossOrigin:u,src:o,alt:y}));return n.createElement("div",{style:M,className:a},n.createElement("img",ts({},A,{style:_je,ref:O})))}));const Sje=` -/*! - * Cropper.js v1.5.12 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2021-06-12T08:00:11.623Z - */ - -.cropper-container { - direction: ltr; - font-size: 0; - line-height: 0; - position: relative; - -ms-touch-action: none; - touch-action: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.cropper-container img { - display: block; - height: 100%; - image-orientation: 0deg; - max-height: none !important; - max-width: none !important; - min-height: 0 !important; - min-width: 0 !important; - width: 100%; -} - -.cropper-wrap-box, -.cropper-canvas, -.cropper-drag-box, -.cropper-crop-box, -.cropper-modal { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; -} - -.cropper-wrap-box, -.cropper-canvas { - overflow: hidden; -} - -.cropper-drag-box { - background-color: #fff; - opacity: 0; -} - -.cropper-modal { - background-color: #000; - opacity: 0.5; -} - -.cropper-view-box { - display: block; - height: 100%; - outline: 1px solid #39f; - outline-color: rgba(51, 153, 255, 0.75); - overflow: hidden; - width: 100%; -} - -.cropper-dashed { - border: 0 dashed #eee; - display: block; - opacity: 0.5; - position: absolute; -} - -.cropper-dashed.dashed-h { - border-bottom-width: 1px; - border-top-width: 1px; - height: calc(100% / 3); - left: 0; - top: calc(100% / 3); - width: 100%; -} - -.cropper-dashed.dashed-v { - border-left-width: 1px; - border-right-width: 1px; - height: 100%; - left: calc(100% / 3); - top: 0; - width: calc(100% / 3); -} - -.cropper-center { - display: block; - height: 0; - left: 50%; - opacity: 0.75; - position: absolute; - top: 50%; - width: 0; -} - -.cropper-center::before, -.cropper-center::after { - background-color: #eee; - content: ' '; - display: block; - position: absolute; -} - -.cropper-center::before { - height: 1px; - left: -3px; - top: 0; - width: 7px; -} - -.cropper-center::after { - height: 7px; - left: 0; - top: -3px; - width: 1px; -} - -.cropper-face, -.cropper-line, -.cropper-point { - display: block; - height: 100%; - opacity: 0.1; - position: absolute; - width: 100%; -} - -.cropper-face { - background-color: #fff; - left: 0; - top: 0; -} - -.cropper-line { - background-color: #39f; -} - -.cropper-line.line-e { - cursor: ew-resize; - right: -3px; - top: 0; - width: 5px; -} - -.cropper-line.line-n { - cursor: ns-resize; - height: 5px; - left: 0; - top: -3px; -} - -.cropper-line.line-w { - cursor: ew-resize; - left: -3px; - top: 0; - width: 5px; -} - -.cropper-line.line-s { - bottom: -3px; - cursor: ns-resize; - height: 5px; - left: 0; -} - -.cropper-point { - background-color: #39f; - height: 5px; - opacity: 0.75; - width: 5px; -} - -.cropper-point.point-e { - cursor: ew-resize; - margin-top: -3px; - right: -3px; - top: 50%; -} - -.cropper-point.point-n { - cursor: ns-resize; - left: 50%; - margin-left: -3px; - top: -3px; -} - -.cropper-point.point-w { - cursor: ew-resize; - left: -3px; - margin-top: -3px; - top: 50%; -} - -.cropper-point.point-s { - bottom: -3px; - cursor: s-resize; - left: 50%; - margin-left: -3px; -} - -.cropper-point.point-ne { - cursor: nesw-resize; - right: -3px; - top: -3px; -} - -.cropper-point.point-nw { - cursor: nwse-resize; - left: -3px; - top: -3px; -} - -.cropper-point.point-sw { - bottom: -3px; - cursor: nesw-resize; - left: -3px; -} - -.cropper-point.point-se { - bottom: -3px; - cursor: nwse-resize; - height: 20px; - opacity: 1; - right: -3px; - width: 20px; -} - -@media (min-width: 768px) { - .cropper-point.point-se { - height: 15px; - width: 15px; - } -} - -@media (min-width: 992px) { - .cropper-point.point-se { - height: 10px; - width: 10px; - } -} - -@media (min-width: 1200px) { - .cropper-point.point-se { - height: 5px; - opacity: 0.75; - width: 5px; - } -} - -.cropper-point.point-se::before { - background-color: #39f; - bottom: -50%; - content: ' '; - display: block; - height: 200%; - opacity: 0; - position: absolute; - right: -50%; - width: 200%; -} - -.cropper-invisible { - opacity: 0; -} - -.cropper-bg { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC'); -} - -.cropper-hide { - display: block; - height: 0; - position: absolute; - width: 0; -} - -.cropper-hidden { - display: none !important; -} - -.cropper-move { - cursor: move; -} - -.cropper-crop { - cursor: crosshair; -} - -.cropper-disabled .cropper-drag-box, -.cropper-disabled .cropper-face, -.cropper-disabled .cropper-line, -.cropper-disabled .cropper-point { - cursor: not-allowed; -} -`,$e={dropZone:{width:"100%",height:100,position:"relative"},dropZoneEmpty:{},image:{objectFit:"contain",margin:"auto",display:"flex",width:"100%",height:"100%"},uploadDiv:{position:"relative",width:"100%",height:300,opacity:.9,marginTop:30,cursor:"pointer",outline:"none"},uploadDivDragging:{opacity:1,background:"rgba(128,255,128,0.1)"},uploadCenterDiv:{margin:5,border:"3px dashed grey",borderRadius:5,width:"calc(100% - 10px)",height:"calc(100% - 10px)",position:"relative",display:"flex"},uploadCenterIcon:{paddingTop:10,width:48,height:48},uploadCenterText:{fontSize:16},uploadCenterTextAndIcon:{textAlign:"center",position:"absolute",top:0,bottom:0,left:0,right:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},disabledOpacity:{opacity:.3,cursor:"default"},buttonRemoveWrapper:{position:"absolute",zIndex:222,right:0},buttonCropWrapper:{position:"absolute",zIndex:222,right:0,top:50},error:{border:"2px solid red",boxSizing:"border-box"}};class wge extends ze{cropperRef;constructor(e){if(super(e),this.state={uploadFile:!1,anchorEl:null,cropHandler:!1},this.cropperRef=Pa(),!window.document.getElementById("cropper-style-json-component")){const t=window.document.createElement("style");t.setAttribute("id","cropper-style-json-component"),t.innerHTML=Sje,window.document.head.appendChild(t)}}onDrop(e){const t=this.props.onChange,s=this.props.maxSize||10*1024,r=e[0],o=new FileReader;o.onabort=()=>console.log("file reading was aborted"),o.onerror=()=>console.log("file reading has failed"),o.onload=()=>{var u,l;if(!r||!r.name)return;const M=(u=r.name)==null?void 0:u.split(".");let a=M!=null&&M.length?`image/${(l=M.pop())==null?void 0:l.toLowerCase()}`:"image/jpeg";if(a==="image/jpg"?a="image/jpeg":a.includes("svg")&&(a="image/svg+xml"),r.size>s)window.alert(D.t("ra_File is too big. Max %sk allowed. Try use SVG.",Math.round(s/1024)));else{const N=`data:${a};base64,${btoa(new Uint8Array(o.result).reduce((c,L)=>c+String.fromCharCode(L),""))}`;t?t(N):console.log(N)}},o.readAsArrayBuffer(r)}render(){const{disabled:e,icon:t,removeIconFunc:s,error:r,crop:o,onChange:M}=this.props,a=this.props.maxSize||10*1024;let u=this.props.accept||{"image/*":[]};const{uploadFile:l,anchorEl:N,cropHandler:c}=this.state;if(typeof u=="string")u={[u]:[]};else if(Array.isArray(u)){const L={};u.forEach(j=>{L[j]=[]}),u=L}return n.createElement(Xa,{disabled:!!e||c,key:"dropzone",multiple:!1,accept:u,maxSize:a,onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:(L,j)=>{var g,y,d;this.setState({uploadFile:!1}),L.length?this.onDrop(L):window.alert(((d=(y=(g=j==null?void 0:j[0])==null?void 0:g.errors)==null?void 0:y[0])==null?void 0:d.message)||D.t("ra_Cannot upload"))}},({getRootProps:L,getInputProps:j})=>n.createElement("div",{style:{...$e.uploadDiv,...l==="dragging"?$e.uploadDivDragging:void 0,...$e.dropZone,...e?$e.disabledOpacity:void 0,...t?void 0:$e.dropZoneEmpty},...L()},n.createElement("input",{...j()}),n.createElement("div",{style:{...$e.uploadCenterDiv,...r?$e.error:void 0}},t?s&&!c&&n.createElement("div",{style:$e.buttonRemoveWrapper},n.createElement(ae,{title:D.t("ra_Clear"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},n.createElement(P,{size:"large",onClick:g=>{s&&s(),g.stopPropagation()}},n.createElement(ge,null)))):n.createElement("div",{style:$e.uploadCenterTextAndIcon},n.createElement(aN,{style:$e.uploadCenterIcon}),n.createElement("div",{style:$e.uploadCenterText},l==="dragging"?D.t("ra_Drop file here"):D.t("ra_Place your files here or click here to open the browse dialog"))),t&&o&&n.createElement("div",{style:$e.buttonCropWrapper},n.createElement(ae,{title:D.t("ra_Crop"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},n.createElement(P,{size:"large",onClick:g=>{c?this.setState({anchorEl:g.currentTarget}):this.setState({cropHandler:!0}),g.stopPropagation()}},n.createElement(cN,{color:c?"primary":"inherit"}))),n.createElement(ss,{anchorEl:N,keepMounted:!0,open:!!N,onClose:()=>this.setState({anchorEl:null})},n.createElement(te,{onClick:()=>this.setState({anchorEl:null,cropHandler:!1},()=>{var y,d;const g=(d=(y=this.cropperRef)==null?void 0:y.current)==null?void 0:d.cropper;g&&(M?M(g.getCroppedCanvas().toDataURL()):console.log(g.getCroppedCanvas().toDataURL()))})},D.t("ra_Save")),n.createElement(te,{onClick:()=>this.setState({anchorEl:null,cropHandler:!1})},D.t("ra_Close")))),t&&!c?n.createElement(xe,{src:t,style:$e.image,alt:"icon"}):null,t&&o&&c?n.createElement(fje,{ref:this.cropperRef,style:$e.image,src:t,initialAspectRatio:1,viewMode:1,guides:!1,minCropBoxHeight:10,minCropBoxWidth:10,background:!1,checkOrientation:!1}):null)))}}const kt={mainDiv:{width:"100%",height:"100%",overflow:"auto"},formControl:{margin:0,minWidth:120},formControlMarginRight:{marginRight:5},formControlPaddingTop:{paddingTop:6.2}},xje={once:"once"},fe={seconds:"seconds",minutes:"minutes"},ba=["ra_Sunday","ra_Monday","ra_Tuesday","ra_Wednesday","ra_Thursday","ra_Friday","ra_Saturday","ra_Sunday"];function ct(i){return i<10?`0${i}`:`${i}`}const kje={mode:"interval",interval:{period:1,unit:fe.minutes}};function Pi(i){if(i==="*")return[0,1,2,3,4,5,6];const e=i.split(","),t=[];return e.forEach(s=>{const r=s.split("-");if(r.length===2){const o=parseInt(r[0],10),M=parseInt(r[1],10);for(let a=o;a<=M;a++)t.includes(a===7?0:a)||t.push(a===7?0:a)}else{s==="7"&&(s="0");const o=parseInt(s,10);t.includes(o)||t.push(o)}}),t.sort(),t}function Xu(i,e){i=i.replace(/['"]/g,"").trim();const t=i.split(" ");let s,r=null;return t.length===6?s={seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",date:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:s={seconds:null,minutes:t[0]||"*",hours:t[1]||"*",date:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},s.seconds===null&&s.minutes==="*"&&s.hours==="*"&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)&&(r={mode:"interval",interval:{period:1,unit:fe.minutes}}),s.seconds==="*"&&s.minutes==="*"&&s.hours==="*"&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"interval",interval:{period:1,unit:fe.seconds}}:s.seconds===null&&s.minutes.includes("/")&&s.hours==="*"&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"interval",interval:{period:parseInt(s.minutes.split("/")[1],10),unit:fe.minutes}}:s.seconds!==null&&s.seconds.includes("/")&&s.minutes==="*"&&s.hours==="*"&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"interval",interval:{period:parseInt(s.seconds.split("/")[1],10),unit:fe.seconds}}:s.seconds!==null&&s.seconds.includes("/")&&s.minutes==="*"&&s.hours.includes("-")&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"intervalBetween",intervalBetween:{period:parseInt(s.seconds.split("/")[1],10),unit:fe.seconds,timeFrom:parseInt(s.hours.split("-")[0],10),timeTo:parseInt(s.hours.split("-")[1],10),weekdays:Pi(s.dow)}}:s.seconds===null&&s.minutes.includes("/")&&s.hours.includes("-")&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"intervalBetween",intervalBetween:{period:parseInt(s.minutes.split("/")[1],10),unit:fe.minutes,timeFrom:parseInt(s.hours.split("-")[0],10),timeTo:parseInt(s.hours.split("-")[1],10),weekdays:Pi(s.dow)}}:s.seconds===null&&parseInt(s.minutes,10).toString()===s.minutes&&parseInt(s.hours,10).toString()===s.hours&&s.date==="*"&&s.months==="*"&&(s.dow==="*"||e)?r={mode:"specific",specific:{time:`${ct(parseInt(s.hours,10))}:${ct(parseInt(s.minutes,10))}`,weekdays:Pi(s.dow)}}:s.seconds===null&&parseInt(s.minutes,10).toString()===s.minutes&&parseInt(s.hours,10).toString()===s.hours&&parseInt(s.date,10).toString()===s.date&&parseInt(s.months,10).toString()===s.months&&(s.dow==="*"||e)&&(r={mode:"once",once:{time:`${ct(parseInt(s.hours,10))}:${ct(parseInt(s.minutes,10))}`,date:`${ct(parseInt(s.date,10))}.${ct(parseInt(s.months,10))}`}}),r}class ci extends n.Component{constructor(e){super(e);let t=typeof e.cronExpression=="string"?e.cronExpression.replace(/^["']/,"").replace(/["']\n?$/,""):"";t[0]==="{"&&(t="");const s=Xu(t||"* * * * *",!0)||kje;this.state={extended:!1,cron:ci.state2cron(s),mode:"interval",once:{time:"00:00",date:""},interval:{period:1,unit:fe.minutes},intervalBetween:{period:1,unit:fe.minutes,timeFrom:0,timeTo:23,weekdays:[0,1,2,3,4,5,6]},specific:{time:"00:00",weekdays:[0,1,2,3,4,5,6]}},Object.assign(this.state,s),this.state.cron!==e.cronExpression&&setTimeout(()=>e.onChange&&e.onChange(this.state.cron),100)}static periodArray2text(e,t=7){if(t=t||7,e.length===t)return"*";const s=[];let r=null,o=null;if(!e.length)return"_";for(let M=0;M60&&(s.period=60),s.period!==void 0&&s.period<1&&(s.period=1),s.minutes!==void 0&&s.minutes!==null&&s.minutes>60&&(s.minutes=60),s.minutes!==void 0&&s.minutes!==null&&s.minutes<1&&(s.minutes=1),s.hours!==void 0&&s.hours!==null&&s.hours>24&&(s.hours=24),s.hours!==void 0&&s.hours!==null&&s.hours<1&&(s.hours=1),e.extended)t=`${s.minutes!==void 0&&s.minutes!==null&&s.minutes>1?`*/${s.minutes}`:"*"} ${s.hours!==void 0&&s.hours!==null&&s.hours>1?`*/${s.hours}`:"*"} * * *`;else switch(s.unit){case fe.seconds:t=`${s.period>1?`*/${s.period}`:"*"} * * * * *`;break;case fe.minutes:t=`${s.period>1?`*/${s.period}`:"*"} * * * *`;break}}else if(e.mode==="intervalBetween"){const s=e.intervalBetween||{period:1,unit:fe.minutes,timeFrom:0,timeTo:24,weekdays:[0,1,2,3,4,5,6]};let r;switch(s.timeFrom=s.timeFrom||0,s.timeTo=s.timeTo===void 0?24:s.timeTo,s.timeFrom!==0&&s.timeTo===24&&(s.timeTo=23),s.timeFrom===0&&s.timeTo===24?r="*":r=s.timeFrom!==s.timeTo?`${s.timeFrom}-${s.timeTo}`:"*",s.period>60&&(s.period=60),s.period<1&&(s.period=1),s.unit=s.unit||fe.minutes,s.unit){case fe.seconds:t=`${s.period>1?`*/${s.period}`:"*"} * ${r} * * ${this.periodArray2text(s.weekdays)}`;break;case fe.minutes:t=`${s.period>1?`*/${s.period}`:"*"} ${r} * * ${this.periodArray2text(s.weekdays)}`;break}}else if(e.mode==="specific"){const s=e.specific||{time:"00:00",weekdays:[0,1,2,3,4,5,6]},r=(s.time||"00:00").split(":");let o=parseInt(r[1],10)||0;o>59&&(o=59),o<0&&(o=0);let M=parseInt(r[0],10)||0;M>23&&(M=23),M<0&&(M=0),t=`${o} ${M} * * ${this.periodArray2text(s.weekdays||[])}`}else if(e.mode==="once"){const s=e.once||{time:"00:00",date:""};s.date||(s.date=`${new Date().getDate()}.${ct(new Date().getMonth()+1)}`);const r=(s.time||"00:00").split(":"),o=s.date.split(".");let M=parseInt(r[1],10)||0;M>59&&(M=59),M<0&&(M=0);let a=parseInt(r[0],10)||0;a>23&&(a=23),a<0&&(a=0);let u=parseInt(o[0],10)||1;u>31&&(u=31),u<1&&(u=1);let l=parseInt(o[1],10)||1;l>12&&(l=12),l<1&&(l=1),t=`${M} ${a} ${u} ${l} *`}return t}recalcCron(){this.onChange(ci.state2cron(this.state))}getControlsWeekdaysElements(e){const t=e==="intervalBetween"?this.state.intervalBetween:this.state.specific;return n.createElement("div",{key:"weekdays",style:{paddingLeft:8,width:"calc(100% - 8px)",maxWidth:600}},n.createElement("h5",null,D.t("ra_On weekdays")),[1,2,3,4,5,6,0].map(s=>n.createElement(H,{key:ba[s],control:n.createElement(ne,{checked:t.weekdays.includes(s),onChange:r=>{const o=JSON.parse(JSON.stringify(this.state[e])),M=o.weekdays.indexOf(s);r.target.checked?M===-1&&o.weekdays.push(s):M!==-1&&o.weekdays.splice(M,1),o.weekdays.sort(),e==="intervalBetween"?this.setState({intervalBetween:o},()=>this.recalcCron()):this.setState({specific:o},()=>this.recalcCron())},value:s.toString()}),label:D.t(ba[s])})))}getControlsPeriodElements(e){const t=e==="interval"?this.state.interval:this.state.intervalBetween;return this.state.extended?n.createElement("div",{key:"period",style:{paddingLeft:8,display:"inline-block"}},n.createElement("h5",{style:{marginBottom:5}},D.t("sc_period")),n.createElement(le,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_minutes"),value:t.minutes,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.minutes=parseInt(s.target.value,10),r.minutes<1&&(r.minutes=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:60},inputLabel:{shrink:!0}},type:"number",margin:"normal"}),n.createElement(le,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_hours"),value:t.hours,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.hours=parseInt(s.target.value,10),r.hours<1&&(r.hours=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:24},inputLabel:{shrink:!0}},type:"number",margin:"normal"})):n.createElement("div",{key:"period",style:{paddingLeft:8,display:"inline-block"}},n.createElement("h5",{style:{marginBottom:5}},D.t("sc_period")),n.createElement(le,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_every"),value:t.period,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.period=parseInt(s.target.value,10),r.period<1&&(r.period=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:60},inputLabel:{shrink:!0}},type:"number",margin:"normal"}),n.createElement(Xe,{variant:"standard",style:{verticalAlign:"bottom"},value:t.unit,onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.unit=s.target.value,e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())}},n.createElement(te,{value:"seconds"},D.t("sc_seconds")),")",n.createElement(te,{value:"minutes"},D.t("sc_minutes")),")"))}getControlsTime(e){const t=e==="once"?this.state.once:this.state.specific;return n.createElement(wt,{variant:"standard",sx:{...kt.formControl,"&.MuiFormControl-root":kt.formControlMarginRight}},n.createElement(le,{variant:"standard",key:"at",label:D.t("sc_time"),value:t.time,type:"time",sx:s=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:s.palette.mode==="dark"?"invert(80%)":void 0}}),onChange:s=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.time=s.target.value,e==="once"?this.setState({once:r},()=>this.recalcCron()):this.setState({specific:r},()=>this.recalcCron())},slotProps:{inputLabel:{shrink:!0}},margin:"normal"}))}getControlsDate(){const e=this.state.once;if(!e.date){const t=new Date;e.date=`${t.getDate()}.${ct(t.getMonth()+1)}`}return n.createElement(wt,{variant:"standard",style:kt.formControl},n.createElement(le,{variant:"standard",key:"date",label:D.t("sc_date"),value:e.date,type:"text",slotProps:{htmlInput:{style:kt.formControlPaddingTop},inputLabel:{shrink:!0}},onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.once));s.date=t.target.value,this.setState({once:s},()=>this.recalcCron())},margin:"normal"}))}getOnceElements(){return n.createElement("div",{style:{marginLeft:8}},this.getControlsTime("once"),this.getControlsDate())}getIntervalElements(){return this.getControlsPeriodElements("interval")}getIntervalBetweenElements(){const e=this.state.intervalBetween;return[this.getControlsPeriodElements("intervalBetween"),n.createElement("div",{key:"between",style:{paddingLeft:8,display:"inline-block",verticalAlign:"top"}},n.createElement("h5",{style:{marginBottom:5}},D.t("sc_hours")),n.createElement(wt,{variant:"standard",style:kt.formControl},n.createElement(As,{shrink:!0,htmlFor:"age-label-placeholder"},D.t("sc_from")),n.createElement(Xe,{variant:"standard",style:{width:100},value:e.timeFrom,onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.intervalBetween));s.timeFrom=parseInt(t.target.value,10),s.timeTo===24&&(s.timeTo=23),this.setState({intervalBetween:s},()=>this.recalcCron())}},[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23].map(t=>n.createElement(te,{key:`B_${t}`,value:t},`${ct(t)}:00`)))),n.createElement(wt,{variant:"standard",style:kt.formControl},n.createElement(As,{shrink:!0,htmlFor:"age-label-placeholder"},D.t("sc_to")),n.createElement(Xe,{variant:"standard",style:{width:100},value:e.timeTo,onChange:t=>{const s=JSON.parse(JSON.stringify(this.state.intervalBetween));s.timeTo=parseInt(t.target.value,10),this.setState({intervalBetween:s},()=>this.recalcCron())}},[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23].map(t=>n.createElement(te,{key:`A_${t}`,value:t},`${ct(t)}:00`)),!e.timeFrom&&n.createElement(te,{value:24},"00:00")))),this.getControlsWeekdaysElements("intervalBetween")]}getSpecificTimeElements(){return[n.createElement("div",{key:"time",style:{marginLeft:8}},this.getControlsTime("specific")),this.getControlsWeekdaysElements("specific")]}onModeChange(e){e!==this.state.mode&&this.setState({mode:e},()=>this.recalcCron())}onChange(e){e!==this.state.cron&&(this.setState({cron:e}),this.props.onChange&&this.props.onChange(e))}render(){return n.createElement("div",{style:kt.mainDiv},n.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)"}},n.createElement(le,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0,error:this.state.cron.includes("_")})),n.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)",height:60}},this.state.cron.includes("_")?D.t("sc_invalid_cron"):Xc(this.state.cron,this.props.language||"en")),n.createElement("div",null,n.createElement(wt,{variant:"standard",style:{...kt.formControl,marginLeft:8,marginTop:8}},n.createElement(As,null,D.t("ra_Repeat")),n.createElement(Xe,{variant:"standard",value:this.state.mode,onChange:e=>this.onModeChange(e.target.value),inputProps:{name:"mode",id:"mode"}},n.createElement(te,{value:"once"},D.t("sc_once")),n.createElement(te,{value:"interval"},D.t("sc_interval")),n.createElement(te,{value:"intervalBetween"},D.t("sc_intervalBetween")),n.createElement(te,{value:"specific"},D.t("sc_specific"))))),this.state.mode===xje.once&&this.getOnceElements(),this.state.mode==="interval"&&this.getIntervalElements(),this.state.mode==="intervalBetween"&&this.getIntervalBetweenElements(),this.state.mode==="specific"&&this.getSpecificTimeElements())}}function Cge(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 436 436",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("g",{fill:"currentColor"},n.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),n.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function Age(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 95 95",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:`M93.779,63.676c-0.981-1.082-2.24-1.653-3.639-1.653c-1.145,0-3.953,0.396-5.318,4.062 - c-0.344,0.922-0.443,1.413-0.907,1.363c-0.786-0.078-3.845-3.346-4.845-8.145l-2.482-11.6c1.961-3.177,3.977-5.629,5.988-7.292 - c1.08-0.882,2.314-1.349,3.808-1.43c3.815-0.26,5.203-0.74,6.14-1.399c1.547-1.115,2.397-2.728,2.397-4.542 - c0-1.596-0.604-3.019-1.75-4.115c-1.106-1.059-2.581-1.618-4.26-1.618c-2.468,0-5.239,1.142-8.474,3.49 - c-1.91,1.388-3.935,3.406-6.121,6.111c-0.711-2.653-1.319-3.889-1.771-4.628c-1.396-2.303-3.664-2.303-4.41-2.303l-0.813,0.013 - l-23.045,0.544l1.297-5.506c0.828-3.593,1.915-6.436,3.226-8.45c0.638-0.98,1.614-2.148,2.638-2.148 - c0.387,0,1.152,0.063,2.582,0.36c3.978,0.86,5.465,0.959,6.239,0.959c1.708,0,3.21-0.571,4.347-1.651 - c1.176-1.119,1.797-2.583,1.797-4.233c0-1.29-0.424-3.156-2.445-4.722c-1.396-1.081-3.311-1.629-5.691-1.629 - c-3.568,0-7.349,1.141-11.241,3.39c-3.862,2.232-7.038,5.317-9.438,9.171c-2.105,3.379-3.929,8.124-5.555,14.459H21.877 - l-2.238,8.831h10.186l-7.74,31.116c-1.603,6.443-2.777,8.028-3.098,8.361c-0.875,0.904-2.68,1.094-4.04,1.094 - c-1.683,0-3.477-0.121-5.349-0.361c-1.286-0.157-2.265-0.234-2.991-0.234c-1.878,0-3.423,0.488-4.59,1.448 - C0.716,81.858,0,83.403,0,85.14c0,1.357,0.44,3.309,2.539,4.895c1.434,1.08,3.389,1.628,5.813,1.628 - c6.069,0,11.725-2.411,16.813-7.165c4.947-4.624,8.571-11.413,10.773-20.195l6.119-24.935l20.87,0.354l2.244,9.64l-4.573,6.748 - c-0.824,1.209-2.051,2.701-3.658,4.441c-0.84,0.92-1.398,1.426-1.721,1.689c-1.316-1.608-2.809-2.424-4.432-2.424 - c-1.525,0-2.91,0.625-4.002,1.804c-1.036,1.116-1.583,2.514-1.583,4.038c0,1.83,0.783,3.459,2.264,4.709 - c1.357,1.146,3.034,1.728,4.981,1.728c2.414,0,4.884-0.921,7.344-2.737c2.053-1.519,4.697-4.526,8.074-9.189 - c2.17,6.24,5.248,10.252,6.714,11.927c2.313,2.644,6.049,4.22,9.993,4.22c3.348,0,5.244-1.402,6.916-2.641l0.148-0.109 - c2.926-2.164,3.54-4.545,3.54-6.166C95.174,65.965,94.691,64.679,93.779,63.676z`}))}function mge(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 512 512",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M510.371,226.513c-1.088-2.603-2.645-4.971-4.629-6.955l-63.979-63.979c-8.341-8.32-21.824-8.32-30.165,0 c-8.341,8.341-8.341,21.845,0,30.165l27.584,27.584H320.013c-11.797,0-21.333,9.557-21.333,21.333s9.536,21.333,21.333,21.333 h119.168l-27.584,27.584c-8.341,8.341-8.341,21.845,0,30.165c4.16,4.181,9.621,6.251,15.083,6.251s10.923-2.069,15.083-6.251 l63.979-63.979c1.984-1.963,3.541-4.331,4.629-6.955C512.525,237.606,512.525,231.718,510.371,226.513z"}),n.createElement("path",{fill:"currentColor",d:`M362.68,298.667c-11.797,0-21.333,9.557-21.333,21.333v106.667h-85.333V85.333c0-9.408-6.187-17.728-15.211-20.437 - l-74.091-22.229h174.635v106.667c0,11.776,9.536,21.333,21.333,21.333s21.333-9.557,21.333-21.333v-128 - C384.013,9.557,374.477,0,362.68,0H21.347c-0.768,0-1.451,0.32-2.197,0.405c-1.003,0.107-1.92,0.277-2.88,0.512 - c-2.24,0.576-4.267,1.451-6.165,2.645c-0.469,0.299-1.045,0.32-1.493,0.661C8.44,4.352,8.376,4.587,8.205,4.715 - C5.88,6.549,3.939,8.789,2.531,11.456c-0.299,0.576-0.363,1.195-0.597,1.792c-0.683,1.621-1.429,3.2-1.685,4.992 - c-0.107,0.64,0.085,1.237,0.064,1.856c-0.021,0.427-0.299,0.811-0.299,1.237V448c0,10.176,7.189,18.923,17.152,20.907 - l213.333,42.667c1.387,0.299,2.795,0.427,4.181,0.427c4.885,0,9.685-1.685,13.525-4.843c4.928-4.053,7.808-10.091,7.808-16.491 - v-21.333H362.68c11.797,0,21.333-9.557,21.333-21.333V320C384.013,308.224,374.477,298.667,362.68,298.667z`}))}function pge(i){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>i.onClick&&i.onClick(e),viewBox:"0 0 339 339",width:i.width||(i.fontSize==="small"?16:20),height:i.height||i.width||(i.fontSize==="small"?16:20),className:i.className,style:i.style},n.createElement("path",{fill:"currentColor",d:"M 318.371 88.485 C 332.371 114.538 339.207 142.418 338.881 172.125 C 338.874 172.605 338.631 172.845 338.151 172.845 L 335.411 172.845 C 335.077 172.845 334.911 173.012 334.911 173.345 L 334.911 181.215 C 334.911 181.635 335.121 181.845 335.541 181.845 L 337.711 181.845 C 338.157 181.845 338.364 182.068 338.331 182.515 C 331.921 264.525 267.321 330.135 185.931 337.995 C 89.911 347.265 6.491 275.385 0.301 179.465 C 0.274 179.052 0.467 178.845 0.881 178.845 L 2.381 178.845 C 2.741 178.845 2.921 178.665 2.921 178.305 L 2.911 171.465 C 2.904 171.052 2.694 170.845 2.281 170.845 L 0.441 170.845 C 0.147 170.845 0.001 170.698 0.001 170.405 C -0.289 83.535 64.591 10.095 151.421 0.955 C 211.511 -5.375 269.171 20.055 305.341 68.135 C 305.538 68.391 305.938 68.338 306.062 68.039 C 306.065 68.031 306.068 68.023 306.071 68.015 L 311.541 51.395 C 311.63 51.125 311.924 50.977 312.201 51.065 L 316.881 52.625 C 317.274 52.758 317.407 53.022 317.281 53.415 L 310.271 74.305 C 310.157 74.645 310.197 74.968 310.391 75.275 L 314.011 80.905 C 314.204 81.205 314.481 81.378 314.841 81.425 L 336.771 84.365 C 337.124 84.412 337.277 84.612 337.231 84.965 L 336.601 89.775 C 336.547 90.182 336.321 90.358 335.921 90.305 L 318.721 87.975 C 318.267 87.915 318.151 88.085 318.371 88.485 Z M 200.701 172.615 C 170.541 200.245 121.671 181.975 117.251 140.865 C 117.211 140.518 117.017 140.345 116.671 140.345 L 8.941 140.345 C 8.68 140.346 8.46 140.532 8.421 140.785 C -10.469 249.095 80.901 345.385 189.421 331.625 C 265.701 321.955 325.741 260.435 332.311 183.415 C 343.611 50.895 200.811 -38.365 85.961 28.845 C 47.041 51.625 20.601 89.335 9.791 133.265 C 9.611 133.985 9.891 134.345 10.631 134.345 L 116.371 134.345 C 116.664 134.345 116.824 134.202 116.851 133.915 C 118.397 116.288 126.001 103.005 139.661 94.065 C 172.821 72.345 214.571 95.715 216.891 133.845 C 216.911 134.178 217.087 134.345 217.421 134.345 L 330.342 134.345 C 330.842 134.345 331.092 134.595 331.092 135.095 L 331.092 139.595 C 331.092 140.095 330.842 140.345 330.342 140.345 L 217.161 140.345 C 216.827 140.345 216.641 140.512 216.601 140.845 C 215.141 153.652 209.841 164.242 200.701 172.615 Z M 210.861 135.845 C 210.861 111.572 191.183 91.895 166.911 91.895 C 142.638 91.895 122.961 111.572 122.961 135.845 C 122.961 160.118 142.638 179.795 166.911 179.795 C 191.183 179.795 210.861 160.118 210.861 135.845 Z",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"}),n.createElement("path",{fill:"currentColor",d:"M 222.771 42.215 C 224.237 43.708 223.741 45.092 221.281 46.365 C 220.5 46.768 219.574 46.779 218.781 46.395 C 183.761 29.182 149.014 29.638 114.541 47.765 C 113.252 48.444 111.662 47.8 111.211 46.415 C 110.891 45.435 110.867 44.465 111.141 43.505 C 111.234 43.158 111.437 42.898 111.751 42.725 C 145.631 23.545 186.631 23.045 221.051 41.045 C 221.831 41.452 222.404 41.842 222.771 42.215 Z",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"}),n.createElement("text",{style:{whiteSpace:"pre",fontFamily:"Arial, sans-serif",fontSize:16},x:"139.395",y:"288.084",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"},"vacuum"))}const Yje={dialogPaper:{height:"calc(100% - 96px)"}};class Oge extends n.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={showWarning:"",cron:t}}handleCancel(){this.props.onClose()}handleOk(e){if(!e){const t=Pt.cron2state(this.state.cron);if(t.seconds==="*"||t.seconds==="*/1"){this.setState({showWarning:"everySecond"});return}if(t.minutes==="*"||t.minutes==="*/1"){this.setState({showWarning:"everyMinute"});return}}this.props.onOk(this.state.cron),this.props.onClose()}renderWarningDialog(){return this.state.showWarning?n.createElement(Vc,{title:D.t("ra_Please confirm"),text:D.t(this.state.showWarning==="everySecond"?"ra_The schedule will be executed every second. Are you sure?":"ra_The schedule will be executed every minute. Are you sure?"),onClose:e=>this.setState({showWarning:""},()=>{e&&this.handleOk(!0)})}):null}handleClear(){this.props.onOk(!1),this.props.onClose()}render(){return n.createElement(de,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":Yje.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},this.renderWarningDialog(),n.createElement(Ie,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define schedule...")),n.createElement(Ae,{style:{height:"100%",overflow:"hidden"}},n.createElement(Pt,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),n.createElement(me,null,!!this.props.clearButton&&n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.handleClear(),startIcon:n.createElement(ut,null)},this.props.clear||D.t("ra_Clear")),n.createElement(X,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:n.createElement(ve,null)},this.props.ok||D.t("ra_Ok")),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}const Qje={dialogPaper:{height:"calc(100% - 96px)"}};class Ege extends n.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={cron:t,mode:this.props.simple?"simple":this.props.complex?"complex":(typeof t=="object"||t[0]==="{")&&!this.props.noWizard?"wizard":Xu(this.props.cron||"* * * * *")?"simple":"complex"}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.state.cron),this.props.onClose()}setMode(e){this.setState({mode:e})}render(){return n.createElement(de,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":Qje.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},n.createElement(Ie,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define schedule...")),n.createElement(Ae,{style:{height:"100%",overflow:"hidden"}},this.props.simple&&this.props.complex||!this.props.simple&&!this.props.complex?n.createElement("div",null,!this.props.simple&&!this.props.complex&&!this.props.noWizard&&n.createElement(n.Fragment,null,n.createElement(Me,{key:"wizard",checked:this.state.mode==="wizard",onChange:()=>this.setMode("wizard")}),n.createElement("label",{onClick:()=>this.setMode("wizard"),style:this.state.mode!=="wizard"?{color:"lightgrey"}:{}},D.t("sc_wizard"))),(!this.props.simple&&!this.props.complex||this.props.simple)&&n.createElement(n.Fragment,null,n.createElement(Me,{key:"simple",checked:this.state.mode==="simple",onChange:()=>this.setMode("simple")}),n.createElement("label",{onClick:()=>this.setMode("simple"),style:this.state.mode!=="simple"?{color:"lightgrey"}:{}},D.t("sc_simple"))),(!this.props.simple&&!this.props.complex||this.props.complex)&&n.createElement(n.Fragment,null,n.createElement(Me,{key:"complex",checked:this.state.mode==="complex",onChange:()=>this.setMode("complex")}),n.createElement("label",{onClick:()=>this.setMode("complex"),style:this.state.mode!=="complex"?{color:"lightgrey"}:{}},D.t("sc_cron")))):null,this.state.mode==="simple"&&n.createElement(ci,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()}),this.state.mode==="wizard"&&n.createElement(Ce,{theme:this.props.theme,schedule:this.state.cron,onChange:e=>this.setState({cron:e})}),this.state.mode==="complex"&&n.createElement(Pt,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:n.createElement(ve,null)},this.props.ok||D.t("ra_Ok")),n.createElement(X,{variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}class _ge extends ze{handleOk(){this.props.onClose&&this.props.onClose()}render(){return n.createElement(de,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"ar_dialog_message_title","aria-describedby":"ar_dialog_message_description"},n.createElement(Ie,{id:"ar_dialog_message_title"},this.props.title||D.t("ra_Message")),n.createElement(Ae,null,n.createElement(Jt,{id:"ar_dialog_message_description"},n.createElement("span",{style:{marginRight:this.props.icon?8:0}},this.props.icon||null),this.props.text)),n.createElement(me,null,n.createElement(X,{id:"ar_dialog_message_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:n.createElement(ge,null)},this.props.ok||D.t("ra_Close"))))}}const Kt={headerID:{fontWeight:"bold",fontStyle:"italic"},dialog:{height:"95%"},dialogMobile:{padding:"4px",width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)",height:"100%"},content:{height:"100%",overflow:"hidden"},contentMobile:{padding:"8px 4px"},titleRoot:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}};class fge extends n.Component{dialogName;filters;constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName=`SelectFile.${this.dialogName}`;const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch{this.filters={}}e.filters&&(this.filters={...this.filters,...e.filters});let s=this.props.selected||[];typeof s!="object"?s=[s]:s=[...s],s=s.filter(r=>r),this.state={selected:s}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect||!Array.isArray(this.state.selected)?this.state.selected:this.state.selected[0]||""),this.props.onClose()}render(){let e;return this.state.selected.length?!Array.isArray(this.state.selected)||this.state.selected.length===1?e=[n.createElement("span",{key:"selected"},D.t("ra_Selected")," "),n.createElement("span",{key:"id",style:Kt.headerID},this.state.selected)]:e=[n.createElement("span",{key:"selected"},D.t("ra_Selected")," "),n.createElement("span",{key:"id",style:Kt.headerID},D.t("%s items",this.state.selected.length))]:e=this.props.title||D.t("ra_Please select file..."),n.createElement(de,{onClose:()=>{},maxWidth:!1,style:{zIndex:this.props.zIndex||void 0},sx:{"& .MuiDialog-paper":{...Kt.dialog,...Kt.dialogMobile}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectfile_title"},n.createElement(Ie,{id:"ar_dialog_selectfile_title",sx:{"&.MuiDialogTitle-root":Kt.titleRoot}},e),n.createElement(Ae,{style:{...Kt.content,...Kt.contentMobile}},n.createElement(Ole,{ready:!0,imagePrefix:this.props.imagePrefix||this.props.prefix||"../",allowUpload:!!this.props.allowUpload,allowDownload:this.props.allowDownload!==!1,allowCreateFolder:!!this.props.allowCreateFolder,allowDelete:!!this.props.allowDelete,allowView:this.props.allowView!==!1,showViewTypeButton:this.props.showViewTypeButton!==!1,showToolbar:this.props.showToolbar!==!1,limitPath:this.props.limitPath,filterFiles:this.props.filterFiles,filterByType:this.props.filterByType,selected:this.props.selected,restrictToFolder:this.props.restrictToFolder,allowNonRestricted:this.props.allowNonRestricted,onSelect:(t,s,r)=>{this.setState({selected:Array.isArray(t)?t:[t]},()=>s&&(!this.props.selectOnlyFolders||r)&&this.handleOk())},t:this.props.t||D.t,lang:this.props.lang||D.getLanguage(),socket:this.props.socket,themeType:this.props.themeType,themeName:this.props.themeName,theme:this.props.theme,showExpertButton:this.props.showExpertButton,expertMode:this.props.expertMode,showTypeSelector:this.props.showTypeSelector})),n.createElement(me,null,n.createElement(X,{variant:"contained",onClick:()=>this.handleOk(),startIcon:n.createElement(ve,null),disabled:!this.state.selected.length,color:"primary"},this.props.ok||D.t("ra_Ok")),n.createElement(X,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}const vje={dialogPaper:{height:"calc(100% - 96px)"}};class Sge extends n.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={cron:t}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.state.cron),this.props.onClose()}render(){return n.createElement(de,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":vje.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},n.createElement(Ie,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define CRON...")),n.createElement(Ae,{style:{height:"100%",overflow:"hidden"}},n.createElement(ci,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),n.createElement(me,null,n.createElement(X,{variant:"contained",disabled:!this.state.cron||this.state.cron.includes("_"),onClick:()=>this.handleOk(),color:"primary",startIcon:n.createElement(ve,null)},this.props.ok||D.t("ra_Ok")),n.createElement(X,{variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:n.createElement(ui,null)},this.props.cancel||D.t("ra_Cancel"))))}}const Dt={CONNECTING:0,CONNECTED:1,OBJECTS_LOADED:2,STATES_LOADED:3,READY:4},dt="permissionError",b="notConnectedError";function $a(i){i=(i||"").toString();const e=i[0]==="*",t=i[i.length-1]==="*";return i=i.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+i+(t?"":"$")}class F{_socket;_authTimer;systemLang="en";_waitForFirstConnection;_waitForFirstConnectionResolve=null;_promises={};_instanceSubscriptions;props;doNotLoadAllObjects;doNotLoadACL;states={};objects=null;scriptLoadCounter;acl=null;firstConnect=!0;waitForRestart=!1;connected=!1;statesSubscribes={};objectsSubscribes={};filesSubscribes={};onConnectionHandlers=[];onLogHandlers=[];onProgress;onError;loaded=!1;loadTimer=null;loadCounter=0;ignoreState="";simStates={};autoSubscribes;autoSubscribeLog;subscribed;isSecure;onCmdStdoutHandler;onCmdStderrHandler;onCmdExitHandler;systemConfig=null;objectViewCached;constructor(e){e||={protocol:window.location.protocol,host:window.location.hostname},this.props=e,this.autoSubscribes=this.props.autoSubscribes||[],this.autoSubscribeLog=this.props.autoSubscribeLog||!1,this.props.protocol||=window.location.protocol,this.props.host||=window.location.hostname,this.props.port||=window.location.port==="3000"?F.isWeb()?8082:8081:window.location.port,this.props.ioTimeout=Math.max(this.props.ioTimeout||2e4,2e4),this.props.cmdTimeout=Math.max(this.props.cmdTimeout||5e3,5e3),this._instanceSubscriptions={},this.doNotLoadAllObjects=this.props.doNotLoadAllObjects===void 0?!0:this.props.doNotLoadAllObjects,this.doNotLoadACL=this.props.doNotLoadACL===void 0?!0:this.props.doNotLoadACL,this.states={},this._waitForFirstConnection=new Promise(t=>{this._waitForFirstConnectionResolve=t}),this.onProgress=this.props.onProgress||(()=>{}),this.onError=this.props.onError||(t=>console.error(t)),this.startSocket()}static isWeb(){const e=window.adapterName;return e==="material"||e==="vis"||(e==null?void 0:e.startsWith("vis-"))||e==="echarts-show"||window.socketUrl!==void 0}startSocket(){if(typeof window.io>"u"&&typeof window.iob>"u"){if(typeof window.registerSocketOnLoad!="function"){if(this.scriptLoadCounter||=0,this.scriptLoadCounter++,this.scriptLoadCounter<30){setTimeout(()=>this.startSocket(),100);return}window.alert("Cannot load socket.io.js!")}else window.registerSocketOnLoad(()=>this.startSocket());return}if(this._socket)return;let e=this.props.host,t=this.props.port,s=this.props.protocol.replace(":",""),r=window.location.pathname;if(window.location.hostname==="iobroker.net"||window.location.hostname==="iobroker.pro")r="";else{if(window.socketUrl){const a=new URL(window.socketUrl);e=a.hostname,t=a.port,s=a.protocol.replace(":","")}const M=r.lastIndexOf("/");if(M!==-1&&(r=r.substring(0,M+1)),F.isWeb()){const a=r.split("/");a.length>2&&(a.pop(),a[a.length-1].match(/\d+\.\d+\.\d+/)&&a.pop(),a.pop(),r=a.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?`${s}://${e}:${t}${r}`:`${s}://${e}${r}`;this._socket=(window.io||window.iob).connect(o,{path:r.endsWith("/")?`${r}socket.io`:`${r}/socket.io`,query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid}),this._socket.on("connect",M=>{M!==!0?setTimeout(()=>this.getVersion().then(a=>{const[u,l,N]=a.version.split(".");parseInt(u,10)*1e4+parseInt(l,10)*100+parseInt(N,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",(L,j)=>this.onPreConnect(L,j))}),500):this._socket.emit("authenticate",(a,u)=>this.onPreConnect(a,u))}),this._socket.on("reconnect",()=>{this.onProgress(Dt.READY),this.connected=!0,this.waitForRestart?window.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach(M=>M(!0)))}),this._socket.on("disconnect",()=>{this.connected=!1,this.subscribed=!1,this.onProgress(Dt.CONNECTING),this.onConnectionHandlers.forEach(M=>M(!1))}),this._socket.on("reauthenticate",()=>F.authenticate()),this._socket.on("log",M=>{var a,u;(u=(a=this.props).onLog)==null||u.call(a,M),this.onLogHandlers.forEach(l=>l(M))}),this._socket.on("error",M=>{let a=M||"";typeof a.toString!="function"&&(a=JSON.stringify(a),console.error(`Received strange error: ${a}`)),a=a.toString(),a.includes("User not authorized")?F.authenticate():window.alert(`Socket Error: ${M}`)}),this._socket.on("connect_error",M=>console.error(`Connect error: ${M}`)),this._socket.on("permissionError",M=>this.onError({message:"no permission",operation:M.operation,type:M.type,id:M.id||""})),this._socket.on("objectChange",(M,a)=>setTimeout(()=>this.objectChange(M,a),0)),this._socket.on("stateChange",(M,a)=>setTimeout(()=>this.stateChange(M,a),0)),this._socket.on("im",(M,a,u)=>setTimeout(()=>this.instanceMessage(M,a,u),0)),this._socket.on("fileChange",(M,a,u)=>setTimeout(()=>this.fileChange(M,a,u),0)),this._socket.on("cmdStdout",(M,a)=>{var u;return(u=this.onCmdStdoutHandler)==null?void 0:u.call(this,M,a)}),this._socket.on("cmdStderr",(M,a)=>{var u;return(u=this.onCmdStderrHandler)==null?void 0:u.call(this,M,a)}),this._socket.on("cmdExit",(M,a)=>{var u;return(u=this.onCmdExitHandler)==null?void 0:u.call(this,M,a)})}onPreConnect(e,t){this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?window.location.reload():(this.firstConnect?(this.loadTimer=setTimeout(()=>{this.loadTimer=null,this.loadCounter++,this.loadCounter<10&&this.onConnect().catch(s=>this.onError(s))},1e3),this.loaded||this.onConnect().catch(s=>this.onError(s))):this.onProgress(Dt.READY),this._subscribe(!0),this.onConnectionHandlers.forEach(s=>s(!0))),this._waitForFirstConnectionResolve&&(this._waitForFirstConnectionResolve(),this._waitForFirstConnectionResolve=null)}static isCloud(){return window.location.hostname.includes("amazonaws.com")||window.location.hostname.includes("iobroker.in")?!0:typeof window.socketUrl>"u"?!1:window.socketUrl.includes("iobroker.in")||window.socketUrl.includes("amazonaws")}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnection}async _getUserPermissions(){return this.doNotLoadACL?null:new Promise((e,t)=>{this._socket.emit("getUserPermissions",(s,r)=>s?t(new Error(s)):e(r))})}async onConnect(){var s,r,o,M,a;let e;try{e=await this._getUserPermissions()}catch(u){const l=u;this.onError(`Cannot read user permissions: ${l.message}`);return}if(!this.doNotLoadACL){if(this.loaded)return;this.loaded=!0,this.loadTimer&&(clearTimeout(this.loadTimer),this.loadTimer=null),this.onProgress(Dt.CONNECTED),this.firstConnect=!1,this.acl=e}let t;try{if(t=await this.getSystemConfig(),this.doNotLoadACL){if(this.loaded)return;this.loaded=!0,this.loadTimer&&(clearTimeout(this.loadTimer),this.loadTimer=null),this.onProgress(Dt.CONNECTED),this.firstConnect=!1}this.systemConfig=t,(s=this.systemConfig)!=null&&s.common?this.systemLang=this.systemConfig.common.language:(this.systemLang=window.navigator.userLanguage||window.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substr(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en")),(o=(r=this.props).onLanguage)==null||o.call(r,this.systemLang),this.doNotLoadAllObjects?(this.objects={"system.config":t},this.onProgress(Dt.READY),(a=(M=this.props).onReady)==null||a.call(M,this.objects)):(await this.getObjects(),this.onProgress(Dt.READY),this.props.onReady&&this.objects&&this.props.onReady(this.objects))}catch(u){this.onError(`Cannot read system config: ${u}`)}}static authenticate(){window.location.search.includes("&href=")?window.location.href=`${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`:window.location.href=`${window.location.protocol}//${window.location.host}${window.location.pathname}?login&href=${window.location.search}${window.location.hash}`}async subscribeState(e,t,s){typeof t=="function"&&(s=t,t=!1);let r;if(Array.isArray(e)?r=e:r=[e],!s)return console.error("No callback found for subscribeState"),Promise.reject(new Error("No callback found for subscribeState"));const o=[];for(let M=0;M{this._socket.emit(F.isWeb()?"getStates":"getForeignStates",r,(u,l)=>{u?(console.error(`Cannot getForeignStates "${e}": ${JSON.stringify(u)}`),a(new Error(u))):(l&&Object.keys(l).forEach(N=>s(N,l[N])),M())})})}subscribeStateAsync(e,t){let s;Array.isArray(e)?s=e:s=[e];const r=[];for(let o=0;o{typeof t=="function"&&this.connected?this._socket.emit(F.isWeb()?"getStates":"getForeignStates",e,(a,u)=>{a&&console.error(`Cannot getForeignStates "${e}": ${JSON.stringify(a)}`),u&&Object.keys(u).forEach(l=>t(l,u[l])),u?o():M(new Error(`Cannot getForeignStates "${e}": ${JSON.stringify(a)}`))}):this.connected?M(new Error("callback is not a function")):M(new Error("not connected"))})}unsubscribeState(e,t){let s;Array.isArray(e)?s=e:s=[e];const r=[];for(let o=0;o{(o===e||this.objectsSubscribes[o].reg.test(e))&&this.objectsSubscribes[o].cbs.forEach(M=>{try{M(e,t,s)}catch(a){console.error(`Error by callback of objectChange: ${a}`)}})}),r&&this.props.onObjectChange&&this.props.onObjectChange(e,t)}stateChange(e,t){for(const s in this.statesSubscribes)Object.prototype.hasOwnProperty.call(this.statesSubscribes,s)&&this.statesSubscribes[s].reg.test(e)&&this.statesSubscribes[s].cbs.forEach(r=>{try{r(e,t)}catch(o){const M=o;console.error(`Error by callback of stateChange: ${M==null?void 0:M.message}`)}})}instanceMessage(e,t,s){this._instanceSubscriptions[t]&&this._instanceSubscriptions[t].forEach(r=>{r.messageType===e&&r.callback(s,t,e)})}getStates(e,t){return this.connected?(typeof e=="boolean"&&(t=e,e=void 0),new Promise((s,r)=>{this._socket.emit("getStates",e,(o,M)=>{this.states=M,!t&&this.onProgress(Dt.STATES_LOADED),o?r(new Error(o)):s(this.states)})})):Promise.reject(new Error(b))}getState(e){return this.connected?e&&e===this.ignoreState?Promise.resolve(this.simStates[e]||{val:null,ack:!0}):new Promise((t,s)=>{this._socket.emit("getState",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}getBinaryState(e){return this.connected?new Promise((t,s)=>{this._socket.emit("getBinaryState",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}setBinaryState(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("setBinaryState",e,t,o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}setState(e,t,s){if(!this.connected)return Promise.reject(new Error(b));if(e&&e===this.ignoreState){let r;if(typeof s=="boolean"||typeof t=="object"&&t.val!==void 0?r=t:r={val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=r,this.statesSubscribes[e])for(const o of this.statesSubscribes[e].cbs)try{o(e,r)}catch(M){console.error(`Error by callback of stateChanged: ${M}`)}return Promise.resolve()}return new Promise((r,o)=>{this._socket.emit("setState",e,t,M=>M?o(new Error(M)):r())})}getObjects(e,t){return this.connected?new Promise((s,r)=>{!e&&this.objects?s(this.objects):this._socket.emit(F.isWeb()?"getObjects":"getAllObjects",(o,M)=>{this.objects=M,t&&this.onProgress(Dt.OBJECTS_LOADED),o?r(new Error(o)):s(this.objects)})}):Promise.reject(new Error(b))}getObjectsById(e){return this.connected?new Promise((t,s)=>{this._socket.emit("getObjects",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}_subscribe(e){if(e&&!this.subscribed){this.subscribed=!0,this.autoSubscribes.forEach(s=>this._socket.emit("subscribeObjects",s)),Object.keys(this.objectsSubscribes).forEach(s=>this._socket.emit("subscribeObjects",s)),this.autoSubscribeLog&&this._socket.emit("requireLog",!0);const t=Object.keys(this.statesSubscribes);t.forEach(s=>this._socket.emit("subscribe",s)),t.length&&this._socket.emit(F.isWeb()?"getStates":"getForeignStates",t,(s,r)=>{s&&console.error(`Cannot getForeignStates: ${JSON.stringify(s)}`),r&&Object.keys(r).forEach(o=>this.stateChange(o,r[o]))})}else!e&&this.subscribed&&(this.subscribed=!1,this.autoSubscribes.forEach(t=>this._socket.emit("unsubscribeObjects",t)),Object.keys(this.objectsSubscribes).forEach(t=>this._socket.emit("unsubscribeObjects",t)),this.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach(t=>this._socket.emit("unsubscribe",t)))}requireLog(e){return this.connected?new Promise((t,s)=>{this._socket.emit("requireLog",e,r=>r?s(new Error(r)):t())}):Promise.reject(new Error(b))}delObject(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("delObject",e,{maintenance:!!t},o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}delObjects(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("delObjects",e,{maintenance:!!t},o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}setObject(e,t){return this.connected?t?(t=JSON.parse(JSON.stringify(t)),Object.prototype.hasOwnProperty.call(t,"from")&&delete t.from,Object.prototype.hasOwnProperty.call(t,"user")&&delete t.user,Object.prototype.hasOwnProperty.call(t,"ts")&&delete t.ts,new Promise((s,r)=>{this._socket.emit("setObject",e,t,o=>o?r(new Error(o)):s())})):Promise.reject(new Error("Null object is not allowed")):Promise.reject(new Error(b))}getObject(e){return this.connected?e&&e===this.ignoreState?Promise.resolve({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed",read:!0,write:!0,role:"state"},native:{}}):new Promise((t,s)=>{this._socket.emit("getObject",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}getAdapterInstances(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",!t&&this._promises[`instances_${e}`]instanceof Promise?this._promises[`instances_${e}`]:this.connected?(this._promises[`instances_${e}`]=new Promise((s,r)=>{this._socket.emit("getAdapterInstances",e,(o,M)=>o?r(new Error(o)):s(M))}),this._promises[`instances_${e}`]):Promise.reject(new Error(b))}getAdapters(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(typeof e=="boolean"&&(t=e,e=""),e||="",!t&&this._promises[`adapter_${e}`]instanceof Promise?this._promises[`adapter_${e}`]:this.connected?(this._promises[`adapter_${e}`]=new Promise((s,r)=>{this._socket.emit("getAdapters",e,(o,M)=>{o?r(new Error(o)):s(M)})}),this._promises[`adapter_${e}`]):Promise.reject(new Error(b)))}_renameGroups(e,t){if(!(e!=null&&e.length))t==null||t(null);else{const s=e.pop();if(!s){setTimeout(()=>this._renameGroups(e,t),0);return}const r=s._id;s._id=s.newId,delete s.newId,this.setObject(s._id,s).then(()=>this.delObject(r)).then(()=>setTimeout(()=>this._renameGroups(e,t),0)).catch(o=>t==null?void 0:t(o))}}async renameGroup(e,t,s){if(F.isWeb())return Promise.reject(new Error("Allowed only in admin"));const r=await this.getGroups(!0);if(r.length){const o=r.filter(a=>a._id.startsWith(`${e}.`));o.forEach(a=>{a.newId=t+a._id.substring(e.length)}),await new Promise((a,u)=>{this._renameGroups(o,l=>l?u(new Error(l)):a(null))});const M=r.find(a=>a._id===e);if(M)return M._id=t,s!==void 0&&(M.common||={},M.common.name=s),this.setObject(M._id,M).then(()=>this.delObject(e))}return Promise.resolve()}sendTo(e,t,s){return this.connected?new Promise(r=>{this._socket.emit("sendTo",e,t,s,o=>r(o))}):Promise.reject(new Error(b))}extendObject(e,t){return this.connected?(t=JSON.parse(JSON.stringify(t)),Object.prototype.hasOwnProperty.call(t,"from")&&delete t.from,Object.prototype.hasOwnProperty.call(t,"user")&&delete t.user,Object.prototype.hasOwnProperty.call(t,"ts")&&delete t.ts,new Promise((s,r)=>{this._socket.emit("extendObject",e,t,o=>o?r(new Error(o)):s())})):Promise.reject(new Error(b))}registerLogHandler(e){!this.onLogHandlers.includes(e)&&this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);t!==-1&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){!this.onConnectionHandlers.includes(e)&&this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);t!==-1&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return!t&&this._promises[`enums_${e||"all"}`]instanceof Promise?this._promises[`enums_${e||"all"}`]:this.connected?(this._promises[`enums_${e||"all"}`]=new Promise((s,r)=>{this._socket.emit("getObjectView","system","enum",{startkey:`enum.${e||""}`,endkey:`enum.${e?`${e}.`:""}香`},(o,M)=>{if(!o&&M){const a={};for(let u=0;u{this._socket.emit("getObjectView",e,t,{startkey:s,endkey:r},(a,u)=>{if(a)M(new Error(a));else{const l={};if(u&&u.rows)for(let N=0;N{const s=[];return t&&t.native&&t.native.certificates&&Object.keys(t.native.certificates).forEach(r=>{const o=t.native.certificates[r];if(!o)return;const M={name:r,type:""};o.length<700&&(o.includes("/")||o.includes("\\"))?(r.toLowerCase().includes("private")||o.toLowerCase().includes("private")?M.type="private":(r.toLowerCase().includes("public")||o.toLowerCase().includes("public"))&&(M.type="public"),s.push(M)):(M.type=o.substring(0,26)==="-----BEGIN RSA PRIVATE KEY"||o.substring(0,22)==="-----BEGIN PRIVATE KEY"?"private":"public",M.type==="public"&&o.split("-----END CERTIFICATE-----").filter(u=>u.replace(/\r\n|\r|\n/,"").trim()).length>1&&(M.type="chained"),s.push(M))}),s}),this._promises.cert):Promise.reject(new Error(b))}getLogs(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(s=>{this._socket.emit("sendToHost",e,"getLogs",t||200,r=>s(r))}):Promise.reject(new Error(b))}getLogsFiles(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,s)=>{this._socket.emit("readLogs",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}delLogs(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,s)=>{this._socket.emit("sendToHost",e,"delLogs",null,r=>r?s(new Error(r)):t())}):Promise.reject(new Error(b))}readMetaItems(){return this.connected?new Promise((e,t)=>{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"香"},(s,r)=>s?t(new Error(s)):e(r.rows&&r.rows.map(o=>o.value)))}):Promise.reject(new Error(b))}readDir(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("readDir",e,t,(o,M)=>o?r(new Error(o)):s(M))}):Promise.reject(new Error(b))}readFile(e,t,s){return this.connected?new Promise((r,o)=>{s?this._socket.emit("readFile64",e,t,s,(M,a)=>M?o(new Error(M)):r(a)):this._socket.emit("readFile",e,t,(M,a,u)=>{M?o(new Error(M)):r({data:a,type:u})})}):Promise.reject(new Error(b))}writeFile64(e,t,s){return this.connected?new Promise((r,o)=>{if(typeof s=="string")this._socket.emit("writeFile",e,t,s,M=>M?o(new Error(M)):r());else{const M=btoa(new Uint8Array(s).reduce((a,u)=>a+String.fromCharCode(u),""));this._socket.emit("writeFile64",e,t,M,a=>a?o(new Error(a)):r())}}):Promise.reject(new Error(b))}deleteFile(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("unlink",e,t,o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}deleteFolder(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("deleteFolder",e,t,o=>o?r(new Error(o)):s())}):Promise.reject(new Error(b))}getHosts(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.hosts instanceof Promise?this._promises.hosts:this.connected?(this._promises.hosts=new Promise((t,s)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.香"},(r,o)=>{r?s(new Error(r)):t(o.rows.map(M=>M.value))})}),this._promises.hosts):Promise.reject(new Error(b))}getUsers(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.users instanceof Promise?this._promises.users:this.connected?(this._promises.users=new Promise((t,s)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.香"},(r,o)=>{r?s(new Error(r)):t(o.rows.map(M=>M.value))})}),this._promises.users):Promise.reject(new Error(b))}getGroups(e){return!e&&this._promises.groups instanceof Promise?this._promises.groups:this.connected?(this._promises.groups=new Promise((t,s)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.香"},(r,o)=>{r?s(new Error(r)):t(o.rows.map(M=>M.value))})}),this._promises.groups):Promise.reject(new Error(b))}getHostInfo(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e+=`system.host.${e}`),!t&&this._promises[`hostInfo_${e}`]instanceof Promise?this._promises[`hostInfo_${e}`]:this.connected?(this._promises[`hostInfo_${e}`]=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("getHostInfo timeout")))},s||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getHostInfo",null,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getHostInfo"')):!a||typeof a!="object"?o(new Error('Cannot read "getHostInfo"')):r(a))})}),this._promises[`hostInfo_${e}`]):Promise.reject(new Error(b)))}getHostInfoShort(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e+=`system.host.${e}`),!t&&this._promises[`hostInfoShort_${e}`]instanceof Promise?this._promises[`hostInfoShort_${e}`]:this.connected?(this._promises[`hostInfoShort_${e}`]=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("hostInfoShort timeout")))},s||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getHostInfoShort",null,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getHostInfoShort"')):!a||typeof a!="object"?o(new Error('Cannot read "getHostInfoShort"')):r(a))})}),this._promises[`hostInfoShort_${e}`]):Promise.reject(new Error(b)))}getRepository(e,t,s,r){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!s&&this._promises.repo instanceof Promise?this._promises.repo:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.repo=new Promise((o,M)=>{let a=setTimeout(()=>{a&&(a=null,M(new Error("getRepository timeout")))},r||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getRepository",t,u=>{a&&(clearTimeout(a),a=null,u===dt?M(new Error('May not read "getRepository"')):!u||typeof u!="object"?M(new Error('Cannot read "getRepository"')):o(u))})}),this._promises.repo):Promise.reject(new Error(b))}getInstalled(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(this._promises.installed=this._promises.installed||{},!t&&this._promises.installed[e]instanceof Promise?this._promises.installed[e]:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.installed[e]=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("getInstalled timeout")))},s||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getInstalled",null,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getInstalled"')):!a||typeof a!="object"?o(new Error('Cannot read "getInstalled"')):r(a))})}),this._promises.installed[e]):Promise.reject(new Error(b)))}rename(e,t,s){return this.connected?new Promise((r,o)=>{this._socket.emit("rename",e,t,s,M=>M?o(new Error(M)):r())}):Promise.reject(new Error(b))}renameFile(e,t,s){return this.connected?new Promise((r,o)=>{this._socket.emit("renameFile",e,t,s,M=>M?o(new Error(M)):r())}):Promise.reject(new Error(b))}cmdExec(e,t,s,r){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?(e.startsWith(e)||(e+=`system.host.${e}`),new Promise((o,M)=>{let a=r?setTimeout(()=>{a&&(a=null,M(new Error("cmdExec timeout")))},r):null;this._socket.emit("cmdExec",e,s,t,null,u=>{(!r||a)&&(a&&clearTimeout(a),a=null,u?M(new Error(u)):o())})})):Promise.reject(new Error(b))}checkFeatureSupported(e,t){return!t&&this._promises[`supportedFeatures_${e}`]instanceof Promise?this._promises[`supportedFeatures_${e}`]:this.connected?(this._promises[`supportedFeatures_${e}`]=new Promise((s,r)=>{this._socket.emit("checkFeatureSupported",e,(o,M)=>o?r(new Error(o)):s(M))}),this._promises[`supportedFeatures_${e}`]):Promise.reject(new Error(b))}async readBaseSettings(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):await this.checkFeatureSupported("CONTROLLER_READWRITE_BASE_SETTINGS")?this.connected?new Promise((s,r)=>{let o=setTimeout(()=>{o&&(o=null,r(new Error("readBaseSettings timeout")))},this.props.cmdTimeout);e.startsWith("system.host.")&&(e=e.replace(/^system\.host\./,"")),this._socket.emit("sendToHost",e,"readBaseSettings",null,M=>{o&&(clearTimeout(o),o=null,M===dt?r(new Error('May not read "BaseSettings"')):!M||typeof M!="object"?r(new Error('Cannot read "BaseSettings"')):s(M))})}):Promise.reject(new Error(b)):Promise.reject(new Error("Not supported"))}writeBaseSettings(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.checkFeatureSupported("CONTROLLER_READWRITE_BASE_SETTINGS").then(s=>s?this.connected?new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("writeBaseSettings timeout")))},this.props.cmdTimeout);this._socket.emit("sendToHost",e,"writeBaseSettings",t,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not write "BaseSettings"')):a?r(a):o(new Error('Cannot write "BaseSettings"')))})}):Promise.reject(new Error(b)):Promise.reject(new Error("Not supported")))}restartController(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((t,s)=>{this._socket.emit("sendToHost",e,"restartController",null,r=>{r?s(new Error(r)):t(!0)})})}getDiagData(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise(s=>{this._socket.emit("sendToHost",e,"getDiagData",t,r=>s(r))})}getForeignStates(e){return this.connected?F.isWeb()?new Promise((t,s)=>{this._socket.emit("getStates",e||"*",(r,o)=>r?s(new Error(r)):t(o))}):new Promise((t,s)=>{this._socket.emit("getForeignStates",e||"*",(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}getForeignObjects(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((s,r)=>{this._socket.emit("getForeignObjects",e||"*",t,(o,M)=>o?r(new Error(o)):s(M))}):Promise.reject(new Error(b))}getSystemConfig(e){return!e&&this._promises.systemConfig instanceof Promise?this._promises.systemConfig:this.connected?(this._promises.systemConfig=this.getObject("system.config").then(t=>{const s=t||{};return s.common||={},s.native||={},s}),this._promises.systemConfig):Promise.reject(new Error(b))}setSystemConfig(e){return this.setObject("system.config",e).then(()=>this._promises.systemConfig=Promise.resolve(e))}getRawSocket(){return this._socket}getHistory(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("getHistory",e,t,(o,M)=>o?r(new Error(o)):s(M))}):Promise.reject(new Error(b))}getHistoryEx(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("getHistory",e,t,(o,M,a,u)=>o?r(new Error(o)):s({values:M,sessionId:u,step:a}))}):Promise.reject(new Error(b))}changePassword(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((s,r)=>{this._socket.emit("changePassword",e,t,o=>o?r(new Error(o)):s())})}getIpAddresses(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e=`system.host.${e}`),!t&&this._promises[`IPs_${e}`]instanceof Promise?this._promises[`IPs_${e}`]:(this._promises[`IPs_${e}`]=this.getObject(e).then(s=>s!=null&&s.common?s.common.address||[]:[]),this._promises[`IPs_${e}`]))}getHostByIp(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")&&(e=e.replace(/^system\.host\./,"")),!t&&this._promises[`rIPs_${e}`]instanceof Promise?this._promises[`rIPs_${e}`]:(this._promises[`rIPs_${e}`]=new Promise(s=>{this._socket.emit("getHostByIp",e,(r,o)=>{var u,l;const M=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],a=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if((l=(u=o==null?void 0:o.native)==null?void 0:u.hardware)!=null&&l.networkInterfaces){for(const N in o.native.hardware.networkInterfaces)if(Object.prototype.hasOwnProperty.call(o.native.hardware.networkInterfaces,N))for(let c=0;c{this._socket.emit("encrypt",e,(r,o)=>r?s(new Error(r)):t(o))})}decrypt(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((t,s)=>{this._socket.emit("decrypt",e,(r,o)=>r?s(new Error(r)):t(o))})}getVersion(e){return!e&&this._promises.version instanceof Promise?this._promises.version:(this._promises.version=new Promise((t,s)=>{this._socket.emit("getVersion",(r,o,M)=>{r&&!o&&typeof r=="string"&&r.match(/\d+\.\d+\.\d+/)?t({version:r,serverName:"socketio"}):r?s(new Error(r)):t({version:o,serverName:M})})}),this._promises.version)}getWebServerName(){return this._promises.webName instanceof Promise?this._promises.webName:(this._promises.webName=new Promise((e,t)=>{this._socket.emit("getAdapterName",(s,r)=>s?t(new Error(s)):e(r))}),this._promises.webName)}getAdminVersion(){return console.log("Deprecated: use getVersion"),this.getVersion()}chmodFile(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((r,o)=>{this._socket.emit("chmodFile",e,t,s,(M,a,u)=>M?o(new Error(M)):r({entries:a,id:u}))}):Promise.reject(new Error(b))}chownFile(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((r,o)=>{this._socket.emit("chownFile",e,t,s,(M,a,u)=>M?o(new Error(M)):r({entries:a,id:u}))}):Promise.reject(new Error(b))}fileExists(e,t){return this.connected?new Promise((s,r)=>{this._socket.emit("fileExists",e,t,(o,M)=>o?r(new Error(o)):s(M))}):Promise.reject(new Error(b))}getNotifications(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(s=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},r=>s(r))}):Promise.reject(new Error(b))}clearNotifications(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(s=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},r=>s(r))}):Promise.reject(new Error(b))}getIsEasyModeStrict(){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((e,t)=>{this._socket.emit("getIsEasyModeStrict",(s,r)=>s?t(new Error(s)):e(r))}):Promise.reject(new Error(b))}getEasyMode(){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((e,t)=>{this._socket.emit("getEasyMode",(s,r)=>s?t(new Error(s)):e(r))}):Promise.reject(new Error(b))}getCurrentUser(){return this.connected?new Promise(e=>{this._socket.emit("authEnabled",(t,s)=>e(s))}):Promise.reject(new Error(b))}getCurrentSession(e){return this.connected?new Promise((t,s)=>{const r=new AbortController;let o=setTimeout(()=>{o&&(o=null,r.abort(),s(new Error("getCurrentSession timeout")))},e||5e3);fetch("./session",{signal:r.signal}).then(M=>M.json()).then(M=>{o&&(clearTimeout(o),o=null,t(M))}).catch(M=>s(new Error(`getCurrentSession: ${M}`)))}):Promise.reject(new Error(b))}getRatings(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,s)=>{this._socket.emit("getRatings",e,(r,o)=>r?s(new Error(r)):t(o))}):Promise.reject(new Error(b))}getCurrentInstance(){return this.connected?this._promises.currentInstance instanceof Promise?this._promises.currentInstance:(this._promises.currentInstance=new Promise((e,t)=>{this._socket.emit("getCurrentInstance",(s,r)=>s?t(new Error(s)):e(r))}),this._promises.currentInstance):Promise.reject(new Error(b))}getCompactAdapters(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.compactAdapters instanceof Promise?this._promises.compactAdapters:this.connected?(this._promises.compactAdapters=new Promise((t,s)=>{this._socket.emit("getCompactAdapters",(r,o)=>r?s(new Error(r)):t(o))}),this._promises.compactAdapters):Promise.reject(new Error(b))}getAdaptersResetCache(e){e||="",delete this._promises.compactAdapters,delete this._promises[`adapter_${e}`]}getCompactInstances(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.compactInstances instanceof Promise?this._promises.compactInstances:this.connected?(this._promises.compactInstances=new Promise((t,s)=>{this._socket.emit("getCompactInstances",(r,o)=>r?s(new Error(r)):t(o))}),this._promises.compactInstances):Promise.reject(new Error(b))}getAdapternInstancesResetCache(e){e||="",delete this._promises.compactInstances,delete this._promises[`instances_${e}`]}getCompactInstalled(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):(this._promises.installedCompact||={},!t&&this._promises.installedCompact[e]instanceof Promise?this._promises.installedCompact[e]:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.installedCompact[e]=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("getCompactInstalled timeout")))},s||this.props.cmdTimeout);this._socket.emit("getCompactInstalled",e,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getCompactInstalled"')):!a||typeof a!="object"?o(new Error('Cannot read "getCompactInstalled"')):r(a))})}),this._promises.installedCompact[e]):Promise.reject(new Error(b)))}getCompactSystemRepositories(e,t){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.getCompactSystemRepositories instanceof Promise?this._promises.getCompactSystemRepositories:this.connected?(this._promises.getCompactSystemRepositories=new Promise((s,r)=>{let o=setTimeout(()=>{o&&(o=null,r(new Error("getCompactSystemRepositories timeout")))},t||this.props.cmdTimeout);this._socket.emit("getCompactSystemRepositories",M=>{o&&(clearTimeout(o),o=null,M===dt?r(new Error('May not read "getCompactSystemRepositories"')):!M||typeof M!="object"?r(new Error('Cannot read "getCompactSystemRepositories"')):s(M))})}),this._promises.getCompactSystemRepositories):Promise.reject(new Error(b))}getCompactSystemConfig(e){return!e&&this._promises.systemConfigPromise instanceof Promise?this._promises.systemConfigPromise:this.connected?(this._promises.systemConfigPromise=new Promise((t,s)=>{this._socket.emit("getCompactSystemConfig",(r,o)=>r?s(new Error(r)):t(o))}),this._promises.systemConfigPromise):Promise.reject(new Error(b))}getCompactRepository(e,t,s){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!t&&this._promises.repoCompact instanceof Promise?this._promises.repoCompact:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.repoCompact=new Promise((r,o)=>{let M=setTimeout(()=>{M&&(M=null,o(new Error("getCompactRepository timeout")))},s||this.props.cmdTimeout);this._socket.emit("getCompactRepository",e,a=>{M&&(clearTimeout(M),M=null,a===dt?o(new Error('May not read "getCompactRepository"')):a?r(a):o(new Error('Cannot read "getCompactRepository"')))})}),this._promises.repoCompact):Promise.reject(new Error(b))}getInstalledResetCache(){delete this._promises.repoCompact,delete this._promises.repo}getCompactHosts(e){return F.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.hostsCompact instanceof Promise?this._promises.hostsCompact:this.connected?(this._promises.hostsCompact=new Promise((t,s)=>{this._socket.emit("getCompactHosts",(r,o)=>r?s(new Error(r)):t(o))}),this._promises.hostsCompact):Promise.reject(new Error(b))}getUuid(){return this._promises.uuid instanceof Promise?this._promises.uuid:this.connected?(this._promises.uuid=this.getObject("system.meta.uuid").then(e=>{var t;return(t=e==null?void 0:e.native)==null?void 0:t.uuid}),this._promises.uuid):Promise.reject(new Error(b))}subscribeOnInstance(e,t,s,r){return this.connected?new Promise((o,M)=>{this._socket.emit("clientSubscribe",e,t,s,(a,u)=>{a?M(new Error(a)):u!=null&&u.error?M(new Error(u.error)):(e.startsWith("system.adapter.")||(e=`system.adapter.${e}`),this._instanceSubscriptions[e]||=[],this._instanceSubscriptions[e].find(l=>l.messageType===t&&l.callback===r)||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(u))})}):Promise.reject(new Error(b))}unsubscribeFromInstance(e,t,s){var M;e.startsWith("system.adapter.")||(e=`system.adapter.${e}`);let r;const o=[];do{r=!1;const a=(M=this._instanceSubscriptions[e])==null?void 0:M.findIndex(u=>(!t||u.messageType===t)&&(!s||u.callback===s));if(a!=null&&a!==-1){r=!0;const u=this._instanceSubscriptions[e][a].messageType;this._instanceSubscriptions[e].splice(a,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e],this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find(N=>N.messageType===u)||o.push(new Promise((N,c)=>{this._socket.emit("clientUnsubscribe",e,t,(L,j)=>{L?c(new Error(L)):N(j)})}))}}while(r&&(!s||!t));return o.length?Promise.all(o).then(a=>a.find(u=>u)||!1):Promise.resolve(!1)}log(e,t){e&&this._socket.emit("log",e,t||"debug")}logout(){return this.connected?new Promise((e,t)=>{this._socket.emit("logout",s=>s?t(new Error(s)):e())}):Promise.reject(new Error(b))}setStateToIgnore(e){this.ignoreState=e||""}}function xge(i){var e;return i.type==="object"?`iobobject://${i.address}/${i.path||""}`:i.type==="state"?`iobstate://${i.address}`:i.type==="file"?`iobfile://${i.address}/${i.path||""}`:i.type==="http"?i.address:(e=i.path)!=null&&e.includes("/")?`iobfile://${i.address}/${i.path}`:i.path?`iobobject://${i.address}/${i.path}`:`iobstate://${i.address}`}function Uje(i){const e={type:"object",address:""};if(i.startsWith("iobobject://")){e.type="object",i=i.replace("iobobject://","");const t=i.split("/");e.address=t[0],e.path=t[1]}else if(i.startsWith("iobstate://")){e.type="state",i=i.replace("iobstate://","");const t=i.split("/");e.address=t[0],e.path=t[1]}else if(i.startsWith("iobfile://")){e.type="file",i=i.replace("iobfile://","");const t=i.split("/");e.address=t.shift(),e.path=t.join("/")}else if(i.startsWith("http://")||i.startsWith("https://"))e.type="http",e.address=i;else if(i.startsWith("data:"))e.type="base64",e.address=i;else{const t=i.split("/");if(t.length===2)if(e.address=t[0],e.path=t[1],e.path.includes("."))e.type="object";else if(e.path)if(e.path==="val"||e.path==="q"||e.path==="ack"||e.path==="ts"||e.path==="lc"||e.path==="from"||e.path==="user"||e.path==="expire"||e.path==="c")e.type="state";else if(e.path==="common"||e.path==="native"||e.path==="from"||e.path==="acl"||e.path==="type")e.type="object";else throw new Error(`Unknown path: ${e.path}`);else e.type="state";else t.length===1?(e.address=t[0],e.type="state"):(e.address=t.shift(),e.type="file",e.path=t.join("/"))}return e}function Ku(i,e,t){if(t||=0,i==null||!e)return i;if(e.length-1===t)return i[e[t]];if(typeof i=="object")return Ku(i[e[t]],e,t+1)}function bje(i,e,t,s){if(s||=0,i==null||!e)return t;if(e.length-1===s)return i[e[s]]=t,i;if(typeof i=="object")return bje(i[e[s]],e,t,s+1)}async function kge(i,e){var t;if(typeof i=="string"&&(i=Uje(i)),i.type==="object"){const s=await e.getObject(i.address);return Ku(s,(t=i.path)==null?void 0:t.split("."))}if(i.type==="state"){const s=await e.getState(i.address);return i.path?s==null?void 0:s[i.path]:s}if(i.type==="file")return await e.readFile(i.address,i.path,!0);if(i.type==="http")return fetch(i.address).then(s=>s.text()).then(s=>{if(s.startsWith("{")&&s.endsWith("}")||s.startsWith("[")&&s.endsWith("]"))try{return JSON.parse(s)}catch{}return s});throw new Error(`Unknown type: ${i.type}`)}const Jr=i=>{const e={};return i.forEach(t=>{e[t]={requiredVersion:"*",singleton:!0}}),e};function Yge(i){const e=["@emotion/react","@emotion/styled","@iobroker/adapter-react-v5","@iobroker/json-config","@iobroker/dm-gui-components","@mui/icons-material","@mui/material","@mui/x-date-pickers","date-fns","date-fns/locale","leaflet","leaflet-geosearch","react","react-ace","react-dom","react-dropzone","semver"];return Array.isArray(i)?Jr(e.filter(t=>i.includes(t))):i&&(i.dependencies||i.devDependencies)?Jr(e.filter(t=>{var s,r;return((s=i.dependencies)==null?void 0:s[t])||((r=i.devDependencies)==null?void 0:r[t])})):Jr(e)}export{qje as AdminConnection,D4e as Cleaner,Vs as ColorPicker,Pt as ComplexCron,Oge as ComplexCronDialog,Vc as Confirm,Ee as Connection,Ege as Cron,ege as CustomModal,U4e as DeviceTypeIcon,Tge as DeviceTypeSelector,Oge as DialogComplexCron,Vc as DialogConfirm,Ege as DialogCron,Zc as DialogError,_ge as DialogMessage,fge as DialogSelectFile,vLe as DialogSelectID,Sge as DialogSimpleCron,ile as DialogTextInput,rge as DoorClosed,d4e as DoorOpened,Se as ERRORS,_e as EXTENSIONS,Zc as Error,Ole as FileBrowser,rM as FileBrowserClass,ple as FileViewer,mle as FileViewerClass,oge as FireOff,ia as FireOn,Mge as FloodOff,ra as FloodOn,z4e as Gate,qt as GenericApp,nge as HeatValve,age as Home,h4e as Humidity,D as I18n,Ta as ITEM_IMAGES,xe as Icon,eLe as IconAdapter,Cle as IconAlias,Cge as IconButtonImage,yu as IconChannel,rLe as IconClearFilter,ms as IconClosed,Ts as IconCopy,Du as IconDevice,tLe as IconDocument,sLe as IconDocumentReadOnly,No as IconExpert,Age as IconFx,cge as IconHome,iLe as IconInstance,mge as IconLogout,iM as IconNoIcon,bi as IconOpen,ige as IconPicker,M0e as IconSelector,Xs as IconState,pge as IconVacuum,$i as Image,Dge as InfoBox,oa as Jalousie,F as LegacyConnection,Eg as Loader,Og as LoaderHA,dg as LoaderMV,zg as LoaderNW,mg as LoaderPT,Ig as LoaderVendor,gu as Logo,Tu as MDUtils,uge as Material,_ge as Message,lge as MotionOff,I4e as MotionOn,zLe as ObjectBrowser,Ki as ObjectBrowserClass,Kje as PERMISSION_ERROR,at as PROGRESS,w4e as PushButton,kr as RGB,Nge as RepairExpert,qs as Router,yge as STATES_NAME_ICONS,Yg as SaveCloseButtons,Ce as Schedule,fge as SelectFile,vLe as SelectID,dge as SelectWithIcon,ci as SimpleCron,Sge as SimpleCronDialog,C4e as Socket,oLe as TabContainer,MLe as TabContent,nLe as TabHeader,zge as TableResize,ile as TextInput,hge as TextWithIcon,TN as Theme,A4e as Thermometer,Lge as ThermometerSimple,m4e as Thermostat,Ige as ToggleThemeMenu,Ao as TreeTable,wge as UploadImage,E as Utils,jge as Valve,gge as WindowClosed,p4e as WindowOpened,Lu as WindowTilted,Xc as convertCronToText,Hc as copy,Xu as cron2state,bue as dictionary,ju as extendDeviceTypeTranslation,Ku as getAttrInObject,sge as getSelectIdIcon,Xi as getSelectIdIconFromObjects,tge as getSystemIcon,Uje as iobUriParse,kge as iobUriRead,xge as iobUriToString,Yge as moduleFederationShared,$a as pattern2RegEx,Dg as printPrompt,bje as setAttrInObject,Nr as withWidth}; diff --git a/admin/custom/assets/localSharedImportMap-BeObsVNc.js b/admin/custom/assets/localSharedImportMap-B6r0yoWl.js similarity index 93% rename from admin/custom/assets/localSharedImportMap-BeObsVNc.js rename to admin/custom/assets/localSharedImportMap-B6r0yoWl.js index 34249d871..d8eadcc0d 100644 --- a/admin/custom/assets/localSharedImportMap-BeObsVNc.js +++ b/admin/custom/assets/localSharedImportMap-B6r0yoWl.js @@ -1 +1 @@ -import"./virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BcRVut8U.js";const a={"@emotion/react":async()=>await import("./emotion-react.browser.esm-chZAeh_-.js"),"@emotion/styled":async()=>await import("./emotion-styled.browser.esm-Yi13plpH.js"),"@iobroker/adapter-react-v5":async()=>await import("./index-qs6J40Tp.js"),"@iobroker/json-config":async()=>await import("./index-CS_GBN2m.js"),"@mui/icons-material":async()=>await import("./index-17vbGv00.js"),"@mui/material":async()=>await import("./index-FTmk0JJx.js"),"@mui/x-date-pickers":async()=>await import("./index-DV76KW3-.js"),"date-fns":async()=>await import("./index-Bvwv5H7k.js"),leaflet:async()=>await import("./leaflet-src-B472P7Y1.js").then(r=>r.l),react:async()=>await import("./index-DpJ18x6R.js").then(r=>r.i),"react-dom":async()=>await import("./index-DlQbqHom.js").then(r=>r.i)},n={"@emotion/react":{name:"@emotion/react",version:"11.14.0",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@emotion/react"].loaded=!0;const{"@emotion/react":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@emotion/styled":{name:"@emotion/styled",version:"11.14.1",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@emotion/styled"].loaded=!0;const{"@emotion/styled":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.2.6",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/json-config":{name:"@iobroker/json-config",version:"8.4.3",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@iobroker/json-config"].loaded=!0;const{"@iobroker/json-config":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/icons-material":{name:"@mui/icons-material",version:"6.5.0",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@mui/icons-material"].loaded=!0;const{"@mui/icons-material":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/material":{name:"@mui/material",version:"6.5.0",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@mui/material"].loaded=!0;const{"@mui/material":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/x-date-pickers":{name:"@mui/x-date-pickers",version:"7.29.4",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@mui/x-date-pickers"].loaded=!0;const{"@mui/x-date-pickers":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"date-fns":{name:"date-fns",version:"4.1.0",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["date-fns"].loaded=!0;const{"date-fns":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},leaflet:{name:"leaflet",version:"1.9.4",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n.leaflet.loaded=!0;const{leaflet:e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n.react.loaded=!0;const{react:e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dom":{name:"react-dom",version:"18.3.1",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["react-dom"].loaded=!0;const{"react-dom":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}}},u=[];export{u as usedRemotes,n as usedShared}; +import"./virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-CocegHDZ.js";const a={"@emotion/react":async()=>await import("./emotion-react.browser.esm-chZAeh_-.js"),"@emotion/styled":async()=>await import("./emotion-styled.browser.esm-Yi13plpH.js"),"@iobroker/adapter-react-v5":async()=>await import("./index-DywM1y0D.js"),"@iobroker/json-config":async()=>await import("./index-COK-bTGj.js"),"@mui/icons-material":async()=>await import("./index-17vbGv00.js"),"@mui/material":async()=>await import("./index-FTmk0JJx.js"),"@mui/x-date-pickers":async()=>await import("./index-DV76KW3-.js"),"date-fns":async()=>await import("./index-Bvwv5H7k.js"),leaflet:async()=>await import("./leaflet-src-B472P7Y1.js").then(r=>r.l),react:async()=>await import("./index-DpJ18x6R.js").then(r=>r.i),"react-dom":async()=>await import("./index-DlQbqHom.js").then(r=>r.i)},n={"@emotion/react":{name:"@emotion/react",version:"11.14.0",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@emotion/react"].loaded=!0;const{"@emotion/react":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@emotion/styled":{name:"@emotion/styled",version:"11.14.1",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@emotion/styled"].loaded=!0;const{"@emotion/styled":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.2.7",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@iobroker/json-config":{name:"@iobroker/json-config",version:"8.4.7",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@iobroker/json-config"].loaded=!0;const{"@iobroker/json-config":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/icons-material":{name:"@mui/icons-material",version:"6.5.0",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@mui/icons-material"].loaded=!0;const{"@mui/icons-material":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/material":{name:"@mui/material",version:"6.5.0",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@mui/material"].loaded=!0;const{"@mui/material":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/x-date-pickers":{name:"@mui/x-date-pickers",version:"7.29.4",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["@mui/x-date-pickers"].loaded=!0;const{"@mui/x-date-pickers":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"date-fns":{name:"date-fns",version:"4.1.0",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["date-fns"].loaded=!0;const{"date-fns":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},leaflet:{name:"leaflet",version:"1.9.4",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n.leaflet.loaded=!0;const{leaflet:e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n.react.loaded=!0;const{react:e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dom":{name:"react-dom",version:"18.3.1",scope:["default"],loaded:!1,from:"ConfigCustomJavascriptSet",async get(){n["react-dom"].loaded=!0;const{"react-dom":e}=a,t={...await e()};return Object.defineProperty(t,"__esModule",{value:!0,enumerable:!1}),function(){return t}},shareConfig:{singleton:!0,requiredVersion:"*"}}},u=[];export{u as usedRemotes,n as usedShared}; diff --git a/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BcRVut8U.js b/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-CocegHDZ.js similarity index 99% rename from admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BcRVut8U.js rename to admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-CocegHDZ.js index 9aeb987d0..024ab55f0 100644 --- a/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BcRVut8U.js +++ b/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-CocegHDZ.js @@ -1,8 +1,8 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./localSharedImportMap-BeObsVNc.js","./preload-helper-BDBacUwf.js","./virtualExposes-wYe_Np-4.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./localSharedImportMap-B6r0yoWl.js","./preload-helper-BDBacUwf.js","./virtualExposes-wYe_Np-4.js"])))=>i.map(i=>d[i]); import{_ as sr}from"./preload-helper-BDBacUwf.js";var ir={},ar={},Tt={},M={},D={},P={};const ln="federation-manifest.json",cn=".json",un="FEDERATION_DEBUG",j={AT:"@",HYPHEN:"-",SLASH:"/"},De={[j.AT]:"scope_",[j.HYPHEN]:"_",[j.SLASH]:"__"},fn={[De[j.AT]]:j.AT,[De[j.HYPHEN]]:j.HYPHEN,[De[j.SLASH]]:j.SLASH},dn=":",hn="mf-manifest.json",mn="mf-stats.json",_n={NPM:"npm",APP:"app"},gn="__MF_DEVTOOLS_MODULE_INFO__",pn="ENCODE_NAME_PREFIX",yn=".federation",En={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};let Sn=(function(e){return e[e.UNKNOWN=1]="UNKNOWN",e[e.CALCULATED=2]="CALCULATED",e[e.NO_USE=0]="NO_USE",e})({});P.BROWSER_LOG_KEY=un;P.ENCODE_NAME_PREFIX=pn;P.EncodedNameTransformMap=fn;P.FederationModuleManifest=ln;P.MANIFEST_EXT=cn;P.MFModuleType=_n;P.MFPrefetchCommon=En;P.MODULE_DEVTOOL_IDENTIFIER=gn;P.ManifestFileName=hn;P.NameTransformMap=De;P.NameTransformSymbol=j;P.SEPARATOR=dn;P.StatsFileName=mn;P.TEMP_DIR=yn;P.TreeShakingStatus=Sn;var lr={},re={},Ot=Object.defineProperty,bn=(e,t)=>{let r={};for(var n in e)Ot(r,n,{get:e[n],enumerable:!0});return t||Ot(r,Symbol.toStringTag,{value:"Module"}),r};re.__exportAll=bn;(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ContainerPlugin_exports",{enumerable:!0,get:function(){return r}})})(lr);var cr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ContainerReferencePlugin_exports",{enumerable:!0,get:function(){return r}})})(cr);var ur={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ModuleFederationPlugin_exports",{enumerable:!0,get:function(){return r}})})(ur);var fr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"SharePlugin_exports",{enumerable:!0,get:function(){return r}})})(fr);var dr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ConsumeSharedPlugin_exports",{enumerable:!0,get:function(){return r}})})(dr);var hr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ProvideSharedPlugin_exports",{enumerable:!0,get:function(){return r}})})(hr);var J={},be={};const Rn=P,mr=!0;function _r(){return mr}function Tn(){return typeof navigator<"u"&&(navigator==null?void 0:navigator.product)==="ReactNative"}function In(){try{if(_r()&&window.localStorage)return!!localStorage.getItem(Rn.BROWSER_LOG_KEY)}catch{return!1}return!1}function $n(){return typeof process<"u"&&be&&be.FEDERATION_DEBUG?!!be.FEDERATION_DEBUG:typeof FEDERATION_DEBUG<"u"&&FEDERATION_DEBUG?!0:In()}const Nn=function(){return typeof process<"u"&&be?be:{}};J.getProcessEnv=Nn;J.isBrowserEnv=_r;J.isBrowserEnvValue=mr;J.isDebugMode=$n;J.isReactNativeEnv=Tn;var H={};const S=P,dt=J,gr="[ Federation Runtime ]",Mn=(e,t,r=S.SEPARATOR)=>{const n=e.split(r),o=dt.getProcessEnv().NODE_ENV==="development"&&t,s="*",i=a=>a.startsWith("http")||a.includes(S.MANIFEST_EXT);if(n.length>=2){let[a,...c]=n;e.startsWith(r)&&(a=n.slice(0,2).join(r),c=[o||n.slice(2).join(r)]);let l=o||c.join(r);return i(l)?{name:a,entry:l}:{name:a,version:l||s}}else if(n.length===1){const[a]=n;return o&&i(o)?{name:a,entry:o}:{name:a,version:o||s}}else throw`Invalid entry value: ${e}`},Pn=function(...e){return e.length?e.reduce((t,r)=>r?t?`${t}${S.SEPARATOR}${r}`:r:t,""):""},It=function(e,t="",r=!1){try{const n=r?".js":"";return`${t}${e.replace(new RegExp(`${S.NameTransformSymbol.AT}`,"g"),S.NameTransformMap[S.NameTransformSymbol.AT]).replace(new RegExp(`${S.NameTransformSymbol.HYPHEN}`,"g"),S.NameTransformMap[S.NameTransformSymbol.HYPHEN]).replace(new RegExp(`${S.NameTransformSymbol.SLASH}`,"g"),S.NameTransformMap[S.NameTransformSymbol.SLASH])}${n}`}catch(n){throw n}},vn=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(new RegExp(t,"g"),"")}return n=n.replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.AT]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.AT]]).replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.SLASH]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.SLASH]]).replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.HYPHEN]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(n){throw n}},An=(e,t)=>{if(!e)return"";let r=e;return r==="."&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),It(r,"__federation_expose_",t)},On=(e,t)=>e?It(e,"__federation_shared_",t):"",kn=(e,t)=>{if("getPublicPath"in e){let r;return e.getPublicPath.startsWith("function")?r=new Function("return "+e.getPublicPath)()():r=new Function(e.getPublicPath)(),`${r}${t}`}else return"publicPath"in e?!dt.isBrowserEnv()&&!dt.isReactNativeEnv()&&"ssrPublicPath"in e&&typeof e.ssrPublicPath=="string"?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},wn=(e,t)=>{e||pr(t)},pr=e=>{throw new Error(`${gr}: ${e}`)},Fn=e=>{console.warn(`${gr}: ${e}`)};function Ln(e){try{return JSON.stringify(e,null,2)}catch{return""}}const Dn=/^([\d^=v<>~]|[*xX]$)/;function Hn(e){return Dn.test(e)}H.assert=wn;H.composeKeyWithSeparator=Pn;H.decodeName=vn;H.encodeName=It;H.error=pr;H.generateExposeFilename=An;H.generateShareFilename=On;H.getResourceUrl=kn;H.isRequiredVersion=Hn;H.parseEntry=Mn;H.safeToString=Ln;H.warn=Fn;var ue={};const ye=P,Q=(e,t)=>{if(!e)return t;const n=(o=>{if(o===".")return"";if(o.startsWith("./"))return o.replace("./","");if(o.startsWith("/")){const s=o.slice(1);return s.endsWith("/")?s.slice(0,-1):s}return o})(e);return n?n.endsWith("/")?`${n}${t}`:`${n}/${t}`:t};function yr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function Cn(e,t={}){var E,I,k;const{remotes:r={},overrides:n={},version:o}=t;let s;const i=()=>"publicPath"in e.metaData?(e.metaData.publicPath==="auto"||e.metaData.publicPath==="")&&o?yr(o):e.metaData.publicPath:e.metaData.getPublicPath,a=Object.keys(n);let c={};Object.keys(r).length||(c=((E=e.remotes)==null?void 0:E.reduce((y,N)=>{let R;const v=N.federationContainerName;return a.includes(v)?R=n[v]:"version"in N?R=N.version:R=N.entry,y[v]={matchedVersion:R},y},{}))||{}),Object.keys(r).forEach(y=>c[y]={matchedVersion:a.includes(y)?n[y]:r[y]});const{remoteEntry:{path:l,name:u,type:d},types:f={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:h},globalName:m,ssrRemoteEntry:_}=e.metaData,{exposes:g}=e;let p={version:o||"",buildVersion:h,globalName:m,remoteEntry:Q(l,u),remoteEntryType:d,remoteTypes:Q(f.path,f.name),remoteTypesZip:f.zip||"",remoteTypesAPI:f.api||"",remotesInfo:c,shared:e==null?void 0:e.shared.map(y=>({assets:y.assets,sharedName:y.name,version:y.version,usedExports:y.referenceExports||[]})),modules:g==null?void 0:g.map(y=>({moduleName:y.name,modulePath:y.path,assets:y.assets}))};if((I=e.metaData)!=null&&I.prefetchInterface){const y=e.metaData.prefetchInterface;p={...p,prefetchInterface:y}}if((k=e.metaData)!=null&&k.prefetchEntry){const{path:y,name:N,type:R}=e.metaData.prefetchEntry;p={...p,prefetchEntry:Q(y,N),prefetchEntryType:R}}if("publicPath"in e.metaData?(s={...p,publicPath:i()},typeof e.metaData.ssrPublicPath=="string"&&(s.ssrPublicPath=e.metaData.ssrPublicPath)):s={...p,getPublicPath:i()},_){const y=Q(_.path,_.name);s.ssrRemoteEntry=y,s.ssrRemoteEntryType=_.type||"commonjs-module"}return s}function qn(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(ye.MANIFEST_EXT))}function Gn(e){if(!e)return{statsFileName:ye.StatsFileName,manifestFileName:ye.ManifestFileName};let t=typeof e=="boolean"?"":e.filePath||"",r=typeof e=="boolean"?"":e.fileName||"";const n=".json",o=a=>a.endsWith(n)?a:`${a}${n}`,s=(a,c)=>a.replace(n,`${c}${n}`),i=r?o(r):ye.ManifestFileName;return{statsFileName:Q(t,r?s(i,"-stats"):ye.StatsFileName),manifestFileName:Q(t,i)}}ue.generateSnapshotFromManifest=Cn;ue.getManifestFileName=Gn;ue.inferAutoPublicPath=yr;ue.isManifestProvider=qn;ue.simpleJoinRemoteEntry=Q;var fe={};const kt=J,Er="[ Module Federation ]",ge=console,Un=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function Wn(){try{const e=new Error().stack;if(!e)return;const[,...t]=e.split(` `),r=t.filter(n=>!Un.some(o=>n.includes(o)));return r.length?`Stack trace: ${r.slice(0,5).join(` `)}`:void 0}catch{return}}var Sr=class{constructor(e,t=ge){this.prefix=e,this.delegate=t??ge}setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??ge}emit(e,t){const r=this.delegate,n=kt.isDebugMode()?Wn():void 0,o=n?[...t,n]:t,s=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(const i of s){const a=r[i];if(typeof a=="function"){a.call(r,this.prefix,...o);return}}for(const i of s){const a=ge[i];if(typeof a=="function"){a.call(ge,this.prefix,...o);return}}}log(...e){this.emit("log",e)}warn(...e){this.emit("warn",e)}error(...e){this.emit("error",e)}success(...e){this.emit("info",e)}info(...e){this.emit("info",e)}ready(...e){this.emit("info",e)}debug(...e){kt.isDebugMode()&&this.emit("debug",e)}};function br(e){return new Sr(e)}function Rr(e){const t=new Sr(e);return Object.defineProperty(t,"__mf_infrastructure_logger__",{value:!0,enumerable:!1,configurable:!1}),t}function Bn(e,t,r){if(e.__mf_infrastructure_logger__&&t!=null&&t.getInfrastructureLogger)try{const n=t.getInfrastructureLogger(r);n&&typeof n=="object"&&(typeof n.log=="function"||typeof n.info=="function"||typeof n.warn=="function"||typeof n.error=="function")&&e.setDelegate(n)}catch{e.setDelegate(void 0)}}const jn=br(Er),Vn=Rr(Er);fe.bindLoggerToCompiler=Bn;fe.createInfrastructureLogger=Rr;fe.createLogger=br;fe.infrastructureLogger=Vn;fe.logger=jn;var de={};const Xn=H;async function $t(e,t){try{return await e()}catch(r){!t&&Xn.warn(r);return}}function Ue(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function Tr(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("script");for(let l=0;l{t&&(d==="async"||d==="defer"?t[d]=l[d]:t.getAttribute(d)||t.setAttribute(d,l[d]))})}let i=null;const a=typeof window<"u"?l=>{if(l.filename&&Ue(l.filename,e.url)){const u=new Error(`ScriptExecutionError: Script "${e.url}" loaded but threw a runtime error during execution: ${l.message} (${l.filename}:${l.lineno}:${l.colno})`);u.name="ScriptExecutionError",i=u}}:null;a&&window.addEventListener("error",a);const c=async(l,u)=>{clearTimeout(o),a&&window.removeEventListener("error",a);const d=()=>{if((u==null?void 0:u.type)==="error"){const f=new Error(`ScriptNetworkError: Failed to load script "${e.url}" - the script URL is unreachable or the server returned an error (network failure, 404, CORS, etc.)`);f.name="ScriptNetworkError",e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(f))}else i?e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(i)):e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,$t(()=>{const{needDeleteScript:f=!0}=e;f&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),l&&typeof l=="function")){const f=l(u);if(f instanceof Promise){const h=await f;return d(),h}return d(),f}d()};return t.onerror=c.bind(null,t.onerror),t.onload=c.bind(null,t.onload),o=setTimeout(()=>{c(null,new Error(`Remote script "${e.url}" time-outed.`))},n),{script:t,needAttach:r}}function xn(e){let t=null,r=!0;const n=document.getElementsByTagName("link");for(let s=0;s{t&&!t.getAttribute(a)&&t.setAttribute(a,i[a])})}const o=(s,i)=>{const a=()=>{(i==null?void 0:i.type)==="error"?e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(i)):e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,$t(()=>{const{needDeleteLink:c=!0}=e;c&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),s)){const c=s(i);return a(),c}a()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function Kn(e,t){const{attrs:r={},createScriptHook:n}=t;return new Promise((o,s)=>{const{script:i,needAttach:a}=Tr({url:e,cb:o,onErrorCallback:s,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}de.createLink=xn;de.createScript=Tr;de.isStaticResourcesEqual=Ue;de.loadScript=Kn;de.safeWrapper=$t;var Nt={};const Yn=(e,t,r,n)=>{t(new Error("createScriptNode is disabled in non-Node.js environment"))},zn=(e,t)=>{throw new Error("loadScriptNode is disabled in non-Node.js environment")};Nt.createScriptNode=Yn;Nt.loadScriptNode=zn;var Ir={};function Jn(e,t,r){return function(n){if(n===!1)return!1;if(typeof n>"u")return e?t:!1;if(n===!0)return t;if(n&&typeof n=="object")return{...t,...n};throw new Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}Ir.normalizeOptions=Jn;var $r={};const Zn=e=>e;$r.createModuleFederationConfig=Zn;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=P,r=lr,n=cr,o=ur,s=fr,i=dr,a=hr,c=J,l=H,u=ue,d=fe,f=de,h=Nt,m=Ir,_=$r;e.BROWSER_LOG_KEY=t.BROWSER_LOG_KEY,e.ENCODE_NAME_PREFIX=t.ENCODE_NAME_PREFIX,e.EncodedNameTransformMap=t.EncodedNameTransformMap,e.FederationModuleManifest=t.FederationModuleManifest,e.MANIFEST_EXT=t.MANIFEST_EXT,e.MFModuleType=t.MFModuleType,e.MFPrefetchCommon=t.MFPrefetchCommon,e.MODULE_DEVTOOL_IDENTIFIER=t.MODULE_DEVTOOL_IDENTIFIER,e.ManifestFileName=t.ManifestFileName,e.NameTransformMap=t.NameTransformMap,e.NameTransformSymbol=t.NameTransformSymbol,e.SEPARATOR=t.SEPARATOR,e.StatsFileName=t.StatsFileName,e.TEMP_DIR=t.TEMP_DIR,e.TreeShakingStatus=t.TreeShakingStatus,e.assert=l.assert,e.bindLoggerToCompiler=d.bindLoggerToCompiler,e.composeKeyWithSeparator=l.composeKeyWithSeparator,Object.defineProperty(e,"consumeSharedPlugin",{enumerable:!0,get:function(){return i.ConsumeSharedPlugin_exports}}),Object.defineProperty(e,"containerPlugin",{enumerable:!0,get:function(){return r.ContainerPlugin_exports}}),Object.defineProperty(e,"containerReferencePlugin",{enumerable:!0,get:function(){return n.ContainerReferencePlugin_exports}}),e.createInfrastructureLogger=d.createInfrastructureLogger,e.createLink=f.createLink,e.createLogger=d.createLogger,e.createModuleFederationConfig=_.createModuleFederationConfig,e.createScript=f.createScript,e.createScriptNode=h.createScriptNode,e.decodeName=l.decodeName,e.encodeName=l.encodeName,e.error=l.error,e.generateExposeFilename=l.generateExposeFilename,e.generateShareFilename=l.generateShareFilename,e.generateSnapshotFromManifest=u.generateSnapshotFromManifest,e.getManifestFileName=u.getManifestFileName,e.getProcessEnv=c.getProcessEnv,e.getResourceUrl=l.getResourceUrl,e.inferAutoPublicPath=u.inferAutoPublicPath,e.infrastructureLogger=d.infrastructureLogger,e.isBrowserEnv=c.isBrowserEnv,e.isBrowserEnvValue=c.isBrowserEnvValue,e.isDebugMode=c.isDebugMode,e.isManifestProvider=u.isManifestProvider,e.isReactNativeEnv=c.isReactNativeEnv,e.isRequiredVersion=l.isRequiredVersion,e.isStaticResourcesEqual=f.isStaticResourcesEqual,e.loadScript=f.loadScript,e.loadScriptNode=h.loadScriptNode,e.logger=d.logger,Object.defineProperty(e,"moduleFederationPlugin",{enumerable:!0,get:function(){return o.ModuleFederationPlugin_exports}}),e.normalizeOptions=m.normalizeOptions,e.parseEntry=l.parseEntry,Object.defineProperty(e,"provideSharedPlugin",{enumerable:!0,get:function(){return a.ProvideSharedPlugin_exports}}),e.safeToString=l.safeToString,e.safeWrapper=f.safeWrapper,Object.defineProperty(e,"sharePlugin",{enumerable:!0,get:function(){return s.SharePlugin_exports}}),e.simpleJoinRemoteEntry=u.simpleJoinRemoteEntry,e.warn=l.warn})(D);var Nr={},Mt={};const Qn=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split("-")[0].toLowerCase()}#${e.toLowerCase()}`,eo=(e,t,r,n)=>{const o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(Qn(e)),n&&o.push(`Original Error Message: ${n}`),o.join(` `)};Mt.getShortErrorMsg=eo;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Mt;function r(n,o,s,i,a,c){return i(t.getShortErrorMsg(n,o,s,a))}e.logAndReport=r})(Nr);let to=D,ro=Nr;const ee="[ Federation Runtime ]",ht=(0,to.createLogger)(ee);function no(e,t,r,n,o){e||(r!==void 0?mt(t,r,n,void 0,o):mt(t))}function mt(e,t,r,n,o){if(t!==void 0)return(0,ro.logAndReport)(e,t,r??{},i=>{throw new Error(`${ee}: ${i}`)},n,o);const s=e;throw s instanceof Error?(s.message.startsWith(ee)||(s.message=`${ee}: ${s.message}`),s):new Error(`${ee}: ${s}`)}function oo(e){e instanceof Error&&(e.message.startsWith(ee)||(e.message=`${ee}: ${e.message}`)),ht.warn(e)}M.assert=no;M.error=mt;M.logger=ht;M.warn=oo;var $={};const so=M;let wt=D;function io(e,t){return e.findIndex(r=>r===t)===-1&&e.push(t),e}function ao(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function lo(e){return typeof e.entry<"u"}function co(e){return!e.entry.includes(".json")}async function uo(e,t){try{return await e()}catch(r){!t&&so.warn(r);return}}function fo(e){return e&&typeof e=="object"}const Mr=Object.prototype.toString;function ho(e){return Mr.call(e)==="[object Object]"}function mo(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function _o(e){return Array.isArray(e)?e:[e]}function go(e){const t={url:"",type:"global",globalName:""};return wt.isBrowserEnvValue||(0,wt.isReactNativeEnv)()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}const po=(e,t)=>{let r;return e.endsWith("/")?r=e.slice(0,-1):r=e,t.startsWith(".")&&(t=t.slice(1)),r=r+t,r};$.addUniqueItem=io;$.arrayOptions=_o;$.getFMId=ao;$.getRemoteEntryInfoFromSnapshot=go;$.isObject=fo;$.isPlainObject=ho;$.isPureRemoteEntry=co;$.isRemoteInfoWithEntry=lo;$.isStaticResourcesEqual=mo;$.objectToString=Mr;$.processModuleAlias=po;$.safeWrapper=uo;var b={};const Pr=M,_t=$;let yo=D;const O=typeof globalThis=="object"?globalThis:window,C=(()=>{try{return document.defaultView}catch{return O}})(),Eo=C;function He(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function Ce(e,t){return Object.hasOwnProperty.call(e,t)}Ce(O,"__GLOBAL_LOADING_REMOTE_ENTRY__")||He(O,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});const gt=O.__GLOBAL_LOADING_REMOTE_ENTRY__;function vr(e){Ce(e,"__VMOK__")&&!Ce(e,"__FEDERATION__")&&He(e,"__FEDERATION__",e.__VMOK__),Ce(e,"__FEDERATION__")||(He(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),He(e,"__VMOK__",e.__FEDERATION__)),e.__FEDERATION__.__GLOBAL_PLUGIN__??=[],e.__FEDERATION__.__INSTANCES__??=[],e.__FEDERATION__.moduleInfo??={},e.__FEDERATION__.__SHARE__??={},e.__FEDERATION__.__MANIFEST_LOADING__??={},e.__FEDERATION__.__PRELOADED_MAP__??=new Map}vr(O);vr(C);function So(){O.__FEDERATION__.__GLOBAL_PLUGIN__=[],O.__FEDERATION__.__INSTANCES__=[],O.__FEDERATION__.moduleInfo={},O.__FEDERATION__.__SHARE__={},O.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(gt).forEach(e=>{delete gt[e]})}function bo(e){O.__FEDERATION__.__INSTANCES__.push(e)}function Ro(){return O.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function To(e,t=(0,yo.isDebugMode)()){t&&(O.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,O.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="2.2.2")}function pt(e,t){if(typeof t=="string"){if(e[t])return{value:e[t],key:t};{const r=Object.keys(e);for(const n of r){const[o,s]=n.split(":"),i=`${o}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}}else Pr.error(`getInfoWithoutType: "key" must be a string, got ${typeof t} (${JSON.stringify(t)}).`)}const Io=()=>C.__FEDERATION__.moduleInfo,Ar=(e,t)=>{const r=pt(t,_t.getFMId(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){const{version:n,...o}=e,s=_t.getFMId(o),i=pt(C.__FEDERATION__.moduleInfo,s).value;if((i==null?void 0:i.version)===n)return i}},$o=e=>Ar(e,C.__FEDERATION__.moduleInfo),No=(e,t)=>{const r=_t.getFMId(e);return C.__FEDERATION__.moduleInfo[r]=t,C.__FEDERATION__.moduleInfo},Mo=e=>(C.__FEDERATION__.moduleInfo={...C.__FEDERATION__.moduleInfo,...e},()=>{const t=Object.keys(e);for(const r of t)delete C.__FEDERATION__.moduleInfo[r]}),Po=(e,t)=>{const r=t||`__FEDERATION_${e}:custom__`;return{remoteEntryKey:r,entryExports:O[r]}},vo=e=>{const{__GLOBAL_PLUGIN__:t}=C.__FEDERATION__;e.forEach(r=>{t.findIndex(n=>n.name===r.name)===-1?t.push(r):Pr.warn(`The plugin ${r.name} has been registered.`)})},Ao=()=>C.__FEDERATION__.__GLOBAL_PLUGIN__,Oo=e=>O.__FEDERATION__.__PRELOADED_MAP__.get(e),ko=e=>O.__FEDERATION__.__PRELOADED_MAP__.set(e,!0);b.CurrentGlobal=O;b.Global=Eo;b.addGlobalSnapshot=Mo;b.getGlobalFederationConstructor=Ro;b.getGlobalHostPlugins=Ao;b.getGlobalSnapshot=Io;b.getGlobalSnapshotInfoByModuleInfo=$o;b.getInfoWithoutType=pt;b.getPreloaded=Oo;b.getRemoteEntryExports=Po;b.getTargetSnapshotInfoByModuleInfo=Ar;b.globalLoading=gt;b.nativeGlobal=C;b.registerGlobalPlugins=vo;b.resetFederationGlobalInfo=So;b.setGlobalFederationConstructor=To;b.setGlobalFederationInstance=bo;b.setGlobalSnapshotInfoByModuleInfo=No;b.setPreloaded=ko;var Pt={},ne={},W={};const Ft="[0-9A-Za-z-]+",vt=`(?:\\+(${Ft}(?:\\.${Ft})*))`,Re="0|[1-9]\\d*",qe="[0-9]+",Or="\\d*[a-zA-Z-][a-zA-Z0-9-]*",Lt=`(?:${qe}|${Or})`,wo=`(?:-?(${Lt}(?:\\.${Lt})*))`,Dt=`(?:${Re}|${Or})`,kr=`(?:-(${Dt}(?:\\.${Dt})*))`,ze=`${Re}|x|X|\\*`,ce=`[v=\\s]*(${ze})(?:\\.(${ze})(?:\\.(${ze})(?:${kr})?${vt}?)?)?`,Fo=`^\\s*(${ce})\\s+-\\s+(${ce})\\s*$`,Lo=`[v=\\s]*${`(${qe})\\.(${qe})\\.(${qe})`}${wo}?${vt}?`,At="((?:<|>)?=?)",Do=`(\\s*)${At}\\s*(${Lo}|${ce})`,wr="(?:~>?)",Ho=`(\\s*)${wr}\\s+`,Fr="(?:\\^)",Co=`(\\s*)${Fr}\\s+`,qo="(<|>)?=?\\s*\\*",Go=`^${Fr}${ce}$`,Uo=`v?${`(${Re})\\.(${Re})\\.(${Re})`}${kr}?${vt}?`,Wo=`^${wr}${ce}$`,Bo=`^${At}\\s*${ce}$`,jo=`^${At}\\s*(${Uo})$|^$`,Vo="^\\s*>=\\s*0.0.0\\s*$";W.caret=Go;W.caretTrim=Co;W.comparator=jo;W.comparatorTrim=Do;W.gte0=Vo;W.hyphenRange=Fo;W.star=qo;W.tilde=Wo;W.tildeTrim=Ho;W.xRange=Bo;const Xo=W;function Lr(e){return new RegExp(e)}function xo(e){return!e||e.toLowerCase()==="x"||e==="*"}function Ko(...e){return t=>e.reduce((r,n)=>n(r),t)}function Yo(e){return e.match(Lr(Xo.comparator))}function zo(e,t,r,n){const o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}ne.combineVersion=zo;ne.extractComparator=Yo;ne.isXVersion=xo;ne.parseRegex=Lr;ne.pipe=Ko;var V={};const x=W,T=ne;function Jo(e){return e.replace(T.parseRegex(x.hyphenRange),(t,r,n,o,s,i,a,c,l,u,d,f)=>(T.isXVersion(n)?r="":T.isXVersion(o)?r=`>=${n}.0.0`:T.isXVersion(s)?r=`>=${n}.${o}.0`:r=`>=${r}`,T.isXVersion(l)?c="":T.isXVersion(u)?c=`<${Number(l)+1}.0.0-0`:T.isXVersion(d)?c=`<${l}.${Number(u)+1}.0-0`:f?c=`<=${l}.${u}.${d}-${f}`:c=`<=${c}`,`${r} ${c}`.trim()))}function Zo(e){return e.replace(T.parseRegex(x.comparatorTrim),"$1$2$3")}function Qo(e){return e.replace(T.parseRegex(x.tildeTrim),"$1~")}function es(e){return e.replace(T.parseRegex(x.caretTrim),"$1^")}function ts(e){return e.trim().split(/\s+/).map(t=>t.replace(T.parseRegex(x.caret),(r,n,o,s,i)=>T.isXVersion(n)?"":T.isXVersion(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:T.isXVersion(s)?n==="0"?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.0 <${Number(n)+1}.0.0-0`:i?n==="0"?o==="0"?`>=${n}.${o}.${s}-${i} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s}-${i} <${Number(n)+1}.0.0-0`:n==="0"?o==="0"?`>=${n}.${o}.${s} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${Number(n)+1}.0.0-0`)).join(" ")}function rs(e){return e.trim().split(/\s+/).map(t=>t.replace(T.parseRegex(x.tilde),(r,n,o,s,i)=>T.isXVersion(n)?"":T.isXVersion(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:T.isXVersion(s)?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:i?`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`)).join(" ")}function ns(e){return e.split(/\s+/).map(t=>t.trim().replace(T.parseRegex(x.xRange),(r,n,o,s,i,a)=>{const c=T.isXVersion(o),l=c||T.isXVersion(s),u=l||T.isXVersion(i);return n==="="&&u&&(n=""),a="",c?n===">"||n==="<"?"<0.0.0-0":"*":n&&u?(l&&(s=0),i=0,n===">"?(n=">=",l?(o=Number(o)+1,s=0,i=0):(s=Number(s)+1,i=0)):n==="<="&&(n="<",l?o=Number(o)+1:s=Number(s)+1),n==="<"&&(a="-0"),`${n+o}.${s}.${i}${a}`):l?`>=${o}.0.0${a} <${Number(o)+1}.0.0-0`:u?`>=${o}.${s}.0${a} <${o}.${Number(s)+1}.0-0`:r})).join(" ")}function os(e){return e.trim().replace(T.parseRegex(x.star),"")}function ss(e){return e.trim().replace(T.parseRegex(x.gte0),"")}V.parseCaretTrim=es;V.parseCarets=ts;V.parseComparatorTrim=Zo;V.parseGTE0=ss;V.parseHyphen=Jo;V.parseStar=os;V.parseTildeTrim=Qo;V.parseTildes=rs;V.parseXRanges=ns;var Dr={};function Ge(e,t){return e=Number(e)||e,t=Number(t)||t,e>t?1:e===t?0:-1}function is(e,t){const{preRelease:r}=e,{preRelease:n}=t;if(r===void 0&&n)return 1;if(r&&n===void 0)return-1;if(r===void 0&&n===void 0)return 0;for(let o=0,s=r.length;o<=s;o++){const i=r[o],a=n[o];if(i!==a)return i===void 0&&a===void 0?0:i?a?Ge(i,a):-1:1}return 0}function ke(e,t){return Ge(e.major,t.major)||Ge(e.minor,t.minor)||Ge(e.patch,t.patch)||is(e,t)}function Je(e,t){return e.version===t.version}function as(e,t){switch(e.operator){case"":case"=":return Je(e,t);case">":return ke(e,t)<0;case">=":return Je(e,t)||ke(e,t)<0;case"<":return ke(e,t)>0;case"<=":return Je(e,t)||ke(e,t)>0;case void 0:return!0;default:return!1}}Dr.compare=as;const ae=ne,X=V,ls=Dr;function cs(e){return ae.pipe(X.parseCarets,X.parseTildes,X.parseXRanges,X.parseStar)(e)}function us(e){return ae.pipe(X.parseHyphen,X.parseComparatorTrim,X.parseTildeTrim,X.parseCaretTrim)(e.trim()).split(/\s+/).join(" ")}function fs(e,t){if(!e)return!1;const r=ae.extractComparator(e);if(!r)return!1;const[,n,,o,s,i,a]=r,c={operator:n,version:ae.combineVersion(o,s,i,a),major:o,minor:s,patch:i,preRelease:a==null?void 0:a.split(".")},l=t.split("||");for(const u of l){const d=u.trim();if(!d||d==="*"||d==="x")return!0;try{const f=us(d);if(!f.trim())return!0;const h=f.split(" ").map(g=>cs(g)).join(" ");if(!h.trim())return!0;const m=h.split(/\s+/).map(g=>X.parseGTE0(g)).filter(Boolean);if(m.length===0)continue;let _=!0;for(const g of m){const p=ae.extractComparator(g);if(!p){_=!1;break}const[,E,,I,k,y,N]=p;if(!ls.compare({operator:E,version:ae.combineVersion(I,k,y,N),major:I,minor:k,patch:y,preRelease:N==null?void 0:N.split(".")},c)){_=!1;break}}if(_)return!0}catch(f){console.error(`[semver] Error processing range part "${d}":`,f);continue}}return!1}Pt.satisfy=fs;var q={},oe={};const ds="default",hs="global";oe.DEFAULT_REMOTE_TYPE=hs;oe.DEFAULT_SCOPE=ds;const We=M,Hr=$,Cr=b,ms=oe,Ee=Pt;let yt=D;function _s(e,t,r,n){var s,i;let o;return"get"in e?o=e.get:"lib"in e?o=()=>Promise.resolve(e.lib):o=()=>Promise.resolve(()=>{We.error(`Cannot get shared "${r}" from "${t}": neither "get" nor "lib" is provided in the share config.`)}),(s=e.shareConfig)!=null&&s.eager&&((i=e.treeShaking)!=null&&i.mode)&&We.error(`Invalid shared config for "${r}" from "${t}": cannot use both "eager: true" and "treeShaking.mode" simultaneously. Choose one strategy.`),{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:o,loaded:e!=null&&e.loaded||"lib"in e?!0:void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??yt.TreeShakingStatus.UNKNOWN,useIn:[]}:void 0}}function gs(e,t){const r=t.shared||{},n=t.name,o=Object.keys(r).reduce((i,a)=>{const c=Hr.arrayOptions(r[a]);return i[a]=i[a]||[],c.forEach(l=>{i[a].push(_s(l,n,a,t.shareStrategy))}),i},{}),s={...e.shared};return Object.keys(o).forEach(i=>{s[i]?o[i].forEach(a=>{s[i].find(c=>c.version===a.version)||s[i].push(a)}):s[i]=o[i]}),{allShareInfos:s,newShareInfos:o}}function Te(e,t){if(!e)return!1;const{status:r,mode:n}=e;return r===yt.TreeShakingStatus.NO_USE?!1:r===yt.TreeShakingStatus.CALCULATED?!0:n==="runtime-infer"?t?ys(e,t):!0:!1}function te(e,t){const r=n=>{if(!Number.isNaN(Number(n))){const o=n.split(".");let s=n;for(let i=0;i<3-o.length;i++)s+=".0";return s}return n};return!!Ee.satisfy(r(e),`<=${r(t)}`)}const Ie=(e,t)=>{const r=t||function(n,o){return te(n,o)};return Object.keys(e).reduce((n,o)=>!n||r(n,o)||n==="0"?o:n,0)},Be=e=>!!e.loaded||typeof e.lib=="function",ps=e=>!!e.loading,ys=(e,t)=>{if(!e||!t)return!1;const{usedExports:r}=e;return r?!!t.every(n=>r.includes(n)):!1};function Es(e,t,r,n){const o=e[t][r];let s="",i=Te(n);const a=function(c,l){return i?o[c].treeShaking?o[l].treeShaking?!Be(o[c].treeShaking)&&te(c,l):!1:!0:!Be(o[c])&&te(c,l)};if(i){if(s=Ie(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:Ie(e[t][r],a),useTreesShaking:i}}const se=e=>Be(e)||ps(e);function Ss(e,t,r,n){const o=e[t][r];let s="",i=Te(n);const a=function(c,l){if(i){if(!o[c].treeShaking)return!0;if(!o[l].treeShaking)return!1;if(se(o[l].treeShaking))return se(o[c].treeShaking)?!!te(c,l):!0;if(se(o[c].treeShaking))return!1}return se(o[l])?se(o[c])?!!te(c,l):!0:se(o[c])?!1:te(c,l)};if(i){if(s=Ie(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:Ie(e[t][r],a),useTreesShaking:i}}function bs(e){return e==="loaded-first"?Ss:Es}function Rs(e,t,r,n){if(!e)return;const{shareConfig:o,scope:s=ms.DEFAULT_SCOPE,strategy:i,treeShaking:a}=r,c=Array.isArray(s)?s:[s];for(const l of c)if(o&&e[l]&&e[l][t]){const{requiredVersion:u}=o,{version:d,useTreesShaking:f}=bs(i)(e,l,t,a),h=()=>{const _=e[l][t][d];if(o.singleton){if(typeof u=="string"&&!Ee.satisfy(d,u)){const g=`Version ${d} from ${d&&_.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${u})`;o.strictVersion?We.error(g):We.warn(g)}return{shared:_,useTreesShaking:f}}else{if(u===!1||u==="*")return{shared:_,useTreesShaking:f};if(Ee.satisfy(d,u))return{shared:_,useTreesShaking:f};const g=Te(a);if(g){for(const[p,E]of Object.entries(e[l][t]))if(Te(E.treeShaking,a==null?void 0:a.usedExports)&&Ee.satisfy(p,u))return{shared:E,useTreesShaking:g}}for(const[p,E]of Object.entries(e[l][t]))if(Ee.satisfy(p,u))return{shared:E,useTreesShaking:!1}}},m={shareScopeMap:e,scope:l,pkgName:t,version:d,GlobalFederation:Cr.Global.__FEDERATION__,shareInfo:r,resolver:h};return(n.emit(m)||m).resolver()}}function Ts(){return Cr.Global.__FEDERATION__.__SHARE__}function Is(e){const{pkgName:t,extraOptions:r,shareInfos:n}=e,o=c=>{if(!c)return;const l={};return c.forEach(d=>{l[d.version]=d}),l[Ie(l,function(d,f){return!Be(l[d])&&te(d,f)})]},s=(r==null?void 0:r.resolver)??o,i=c=>c!==null&&typeof c=="object"&&!Array.isArray(c),a=(...c)=>{const l={};for(const u of c)if(u)for(const[d,f]of Object.entries(u)){const h=l[d];i(h)&&i(f)?l[d]=a(h,f):f!==void 0&&(l[d]=f)}return l};return a(s(n[t]),r==null?void 0:r.customShareInfo)}const $s=(e,t)=>{e.useIn||(e.useIn=[]),Hr.addUniqueItem(e.useIn,t)};function Ns(e,t){return t&&e.treeShaking?e.treeShaking:e}q.addUseIn=$s;q.directShare=Ns;q.formatShareConfigs=gs;q.getGlobalShareScope=Ts;q.getRegisteredShare=Rs;q.getTargetSharedOptions=Is;q.shouldUseTreeShaking=Te;var he={};function Ms(e,t){for(const r of e){const n=t.startsWith(r.name);let o=t.replace(r.name,"");if(n){if(o.startsWith("/")){const a=r.name;return o=`.${o}`,{pkgNameOrAlias:a,expose:o,remote:r}}else if(o==="")return{pkgNameOrAlias:r.name,expose:".",remote:r}}const s=r.alias&&t.startsWith(r.alias);let i=r.alias&&t.replace(r.alias,"");if(r.alias&&s){if(i&&i.startsWith("/")){const a=r.alias;return i=`.${i}`,{pkgNameOrAlias:a,expose:i,remote:r}}else if(i==="")return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function Ps(e,t){for(const r of e)if(t===r.name||r.alias&&t===r.alias)return r}he.matchRemote=Ps;he.matchRemoteWithNameAndExpose=Ms;var K={},Y={},F={};const vs="RUNTIME-001",As="RUNTIME-002",Os="RUNTIME-003",ks="RUNTIME-004",ws="RUNTIME-005",Fs="RUNTIME-006",Ls="RUNTIME-007",Ds="RUNTIME-008",Hs="RUNTIME-009",Cs="RUNTIME-010",qs="RUNTIME-011",Gs="TYPE-001",Us="BUILD-001",Ws="BUILD-002";F.BUILD_001=Us;F.BUILD_002=Ws;F.RUNTIME_001=vs;F.RUNTIME_002=As;F.RUNTIME_003=Os;F.RUNTIME_004=ks;F.RUNTIME_005=ws;F.RUNTIME_006=Fs;F.RUNTIME_007=Ls;F.RUNTIME_008=Ds;F.RUNTIME_009=Hs;F.RUNTIME_010=Cs;F.RUNTIME_011=qs;F.TYPE_001=Gs;var Me={};const L=F,qr={[L.RUNTIME_001]:"Failed to get remoteEntry exports.",[L.RUNTIME_002]:'The remote entry interface does not contain "init"',[L.RUNTIME_003]:"Failed to get manifest.",[L.RUNTIME_004]:"Failed to locate remote.",[L.RUNTIME_005]:"Invalid loadShareSync function call from bundler runtime",[L.RUNTIME_006]:"Invalid loadShareSync function call from runtime",[L.RUNTIME_007]:"Failed to get remote snapshot.",[L.RUNTIME_008]:"Failed to load script resources.",[L.RUNTIME_009]:"Please call createInstance first.",[L.RUNTIME_010]:'The name option cannot be changed after initialization. If you want to create a new instance with a different name, please use "createInstance" api.',[L.RUNTIME_011]:"The remoteEntry URL is missing from the remote snapshot."},Gr={[L.TYPE_001]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},Ur={[L.BUILD_001]:"Failed to find expose module.",[L.BUILD_002]:"PublicPath is required in prod mode."},Bs={...qr,...Gr,...Ur};Me.buildDescMap=Ur;Me.errorDescMap=Bs;Me.runtimeDescMap=qr;Me.typeDescMap=Gr;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=F,r=Mt,n=Me;e.BUILD_001=t.BUILD_001,e.BUILD_002=t.BUILD_002,e.RUNTIME_001=t.RUNTIME_001,e.RUNTIME_002=t.RUNTIME_002,e.RUNTIME_003=t.RUNTIME_003,e.RUNTIME_004=t.RUNTIME_004,e.RUNTIME_005=t.RUNTIME_005,e.RUNTIME_006=t.RUNTIME_006,e.RUNTIME_007=t.RUNTIME_007,e.RUNTIME_008=t.RUNTIME_008,e.RUNTIME_009=t.RUNTIME_009,e.RUNTIME_010=t.RUNTIME_010,e.RUNTIME_011=t.RUNTIME_011,e.TYPE_001=t.TYPE_001,e.buildDescMap=n.buildDescMap,e.errorDescMap=n.errorDescMap,e.getShortErrorMsg=r.getShortErrorMsg,e.runtimeDescMap=n.runtimeDescMap,e.typeDescMap=n.typeDescMap})(Y);const Ve=M,le=b,Ht=oe;let Wr=D,$e=Y;const Br=".then(callbacks[0]).catch(callbacks[1])";async function js({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof FEDERATION_ALLOW_NEW_FUNCTION<"u"?new Function("callbacks",`import("${e}")${Br}`)([r,n]):import(e).then(r).catch(n)}catch(o){Ve.error(`Failed to load ESM entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}async function Vs({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof __system_context__>"u"?System.import(e).then(r).catch(n):new Function("callbacks",`System.import("${e}")${Br}`)([r,n])}catch(o){Ve.error(`Failed to load SystemJS entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}function Xs(e,t,r){const{remoteEntryKey:n,entryExports:o}=le.getRemoteEntryExports(e,t);return o||Ve.error($e.RUNTIME_001,$e.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n}),o}async function xs({name:e,globalName:t,entry:r,loaderHook:n,getEntryUrl:o}){const{entryExports:s}=le.getRemoteEntryExports(e,t);if(s)return s;const i=o?o(r):r;return(0,Wr.loadScript)(i,{attrs:{},createScriptHook:(a,c)=>{const l=n.lifecycle.createScript.emit({url:a,attrs:c});if(l&&(l instanceof HTMLScriptElement||"script"in l||"timeout"in l))return l}}).then(()=>Xs(e,t,r),a=>{const c=a instanceof Error?a.message:String(a);Ve.error($e.RUNTIME_008,$e.runtimeDescMap,{remoteName:e,resourceUrl:i},c)})}async function Ks({remoteInfo:e,remoteEntryExports:t,loaderHook:r,getEntryUrl:n}){const{entry:o,entryGlobalName:s,name:i,type:a}=e;switch(a){case"esm":case"module":return js({entry:o,remoteEntryExports:t});case"system":return Vs({entry:o,remoteEntryExports:t});default:return xs({entry:o,globalName:s,name:i,loaderHook:r,getEntryUrl:n})}}function Et(e){const{entry:t,name:r}=e;return(0,Wr.composeKeyWithSeparator)(r,t)}async function jr(e){const{origin:t,remoteEntryExports:r,remoteInfo:n,getEntryUrl:o,_inErrorHandling:s=!1}=e,i=Et(n);if(r)return r;if(!le.globalLoading[i]){const a=t.remoteHandler.hooks.lifecycle.loadEntry,c=t.loaderHook;le.globalLoading[i]=a.emit({loaderHook:c,remoteInfo:n,remoteEntryExports:r}).then(l=>l||Ks({remoteInfo:n,remoteEntryExports:r,loaderHook:c,getEntryUrl:o})).catch(async l=>{const u=Et(n),d=l instanceof Error&&l.message.includes("ScriptExecutionError");if(l instanceof Error&&l.message.includes($e.RUNTIME_008)&&!d&&!s){const f=m=>jr({...m,_inErrorHandling:!0}),h=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:f,origin:t,remoteInfo:n,remoteEntryExports:r,globalLoading:le.globalLoading,uniqueKey:u});if(h)return h}throw l})}return le.globalLoading[i]}function Ys(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||Ht.DEFAULT_REMOTE_TYPE,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||Ht.DEFAULT_SCOPE}}K.getRemoteEntry=jr;K.getRemoteEntryUniqueKey=Et;K.getRemoteInfo=Ys;var Vr={};function zs(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}Vr.getBuilderId=zs;var Xr={};const Js=b;function Zs(e,t){const r=Js.getGlobalHostPlugins(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(o=>{e!=null&&e.find(s=>s.name!==o.name)&&e.push(o)}),e&&e.length>0&&e.forEach(o=>{n.forEach(s=>{s.applyPlugin(o,t)})}),e}Xr.registerPlugins=Zs;var Pe={};function Qs(e){return{name:e.name,alias:e.alias,entry:"entry"in e?e.entry:void 0,version:"version"in e?e.version:void 0,type:e.type,entryGlobalName:e.entryGlobalName,shareScope:e.shareScope}}function ei(e){var r,n,o,s,i,a;const t={};for(const[c,l]of Object.entries(e.shared)){const u=l[0];u&&(t[c]={version:u.version,singleton:(r=u.shareConfig)==null?void 0:r.singleton,requiredVersion:((n=u.shareConfig)==null?void 0:n.requiredVersion)===!1?!1:(o=u.shareConfig)==null?void 0:o.requiredVersion,eager:u.eager,strictVersion:(s=u.shareConfig)==null?void 0:s.strictVersion})}return{project:{name:e.name,mfRole:((i=e.remotes)==null?void 0:i.length)>0?"host":"unknown"},mfConfig:{name:e.name,remotes:((a=e.remotes)==null?void 0:a.map(Qs))??[],shared:t}}}Pe.optionsToMFContext=ei;var xr={},Z={};const ti=M,ri=he,Ct=K;let Se=D;function Kr(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function ni(e,t){return t.map(r=>{const n=ri.matchRemote(e,r.nameOrAlias);return ti.assert(n,`Unable to preload ${r.nameOrAlias} as it is not included in ${!n&&(0,Se.safeToString)({remoteInfo:n,remotes:e})}`),{remote:n,preloadConfig:Kr(r)}})}function oi(e){return e?e.map(t=>t==="."?t:t.startsWith("./")?t.replace("./",""):t):[]}function si(e,t,r,n=!0){const{cssAssets:o,jsAssetsWithoutEntry:s,entryAssets:i}=r;if(t.options.inBrowser){if(i.forEach(a=>{const{moduleInfo:c}=a,l=t.moduleCache.get(e.name);l?Ct.getRemoteEntry({origin:t,remoteInfo:c,remoteEntryExports:l.remoteEntryExports}):Ct.getRemoteEntry({origin:t,remoteInfo:c,remoteEntryExports:void 0})}),n){const a={rel:"preload",as:"style"};o.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h}});u&&document.head.appendChild(l)})}else{const a={rel:"stylesheet",type:"text/css"};o.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h},needDeleteLink:!1});u&&document.head.appendChild(l)})}if(n){const a={rel:"preload",as:"script"};s.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h}});u&&document.head.appendChild(l)})}else{const a={fetchpriority:"high",type:(e==null?void 0:e.type)==="module"?"module":"text/javascript"};s.forEach(c=>{const{script:l,needAttach:u}=(0,Se.createScript)({url:c,cb:()=>{},attrs:a,createScriptHook:(d,f)=>{const h=t.loaderHook.lifecycle.createScript.emit({url:d,attrs:f});if(h instanceof HTMLScriptElement)return h},needDeleteScript:!0});u&&document.head.appendChild(l)})}}}Z.defaultPreloadArgs=Kr;Z.formatPreloadArgs=ni;Z.normalizePreloadExposes=oi;Z.preloadAssets=si;const w=b,qt=q,ii=he,ai=K,li=Z,ci={getRegisteredShare:qt.getRegisteredShare,getGlobalShareScope:qt.getGlobalShareScope},ui={Global:w.Global,nativeGlobal:w.nativeGlobal,resetFederationGlobalInfo:w.resetFederationGlobalInfo,setGlobalFederationInstance:w.setGlobalFederationInstance,getGlobalFederationConstructor:w.getGlobalFederationConstructor,setGlobalFederationConstructor:w.setGlobalFederationConstructor,getInfoWithoutType:w.getInfoWithoutType,getGlobalSnapshot:w.getGlobalSnapshot,getTargetSnapshotInfoByModuleInfo:w.getTargetSnapshotInfoByModuleInfo,getGlobalSnapshotInfoByModuleInfo:w.getGlobalSnapshotInfoByModuleInfo,setGlobalSnapshotInfoByModuleInfo:w.setGlobalSnapshotInfoByModuleInfo,addGlobalSnapshot:w.addGlobalSnapshot,getRemoteEntryExports:w.getRemoteEntryExports,registerGlobalPlugins:w.registerGlobalPlugins,getGlobalHostPlugins:w.getGlobalHostPlugins,getPreloaded:w.getPreloaded,setPreloaded:w.setPreloaded};var fi={global:ui,share:ci,utils:{matchRemoteWithNameAndExpose:ii.matchRemoteWithNameAndExpose,preloadAssets:li.preloadAssets,getRemoteInfo:ai.getRemoteInfo}};xr.default=fi;var Xe={};const Ze=M,Gt=$,di=K,hi=Pe;let mi=D,Ut=Y;function _i(e,t,r){const n=t,o=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];o.length||o.push("default"),o.forEach(i=>{n[i]||(n[i]={})});const s={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?o:e.shareScope||"default"};return Object.defineProperty(s,"shareScopeMap",{value:n,enumerable:!1}),{remoteEntryInitOptions:s,shareScope:n[o[0]],initScope:r??[]}}var gi=class{constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;const e=await di.getRemoteEntry({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return Ze.assert(e,`remoteEntryExports is undefined - ${(0,mi.safeToString)(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t,r){const n=await this.getEntry();if(this.inited)return n;if(this.initPromise)return await this.initPromise,n;this.initing=!0,this.initPromise=(async()=>{const{remoteEntryInitOptions:o,shareScope:s,initScope:i}=_i(this.remoteInfo,this.host.shareScopeMap,r),a=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:s,remoteEntryInitOptions:o,initScope:i,remoteInfo:this.remoteInfo,origin:this.host});typeof(n==null?void 0:n.init)>"u"&&Ze.error(Ut.RUNTIME_002,Ut.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,hi.optionsToMFContext(this.host.options)),await n.init(a.shareScope,a.initScope,a.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...a,id:e,remoteSnapshot:t,remoteEntryExports:n}),this.inited=!0})();try{await this.initPromise}finally{this.initing=!1,this.initPromise=void 0}return n}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n);this.lib=s;let i;i=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo}),i||(i=await s.get(t)),Ze.assert(i,`${Gt.getFMId(this.remoteInfo)} remote don't export ${t}.`);const a=Gt.processModuleAlias(this.remoteInfo.name,t),c=this.wraperFactory(i,a);return o?await c():c}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return e instanceof Promise?async()=>{const n=await e();return r(n,t),n}:()=>{const n=e();return r(n,t),n}}};Xe.Module=gi;var Yr={},me={},pi=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{t=r(...e)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}};me.SyncHook=pi;var ve={};const yi=me;var Ei=class extends yi.SyncHook{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n0){let r=0;const n=s=>(et.warn(s),this.onerror(s),e),o=s=>{if(Ii.checkReturnData(e,s)){if(e=s,r{const s=e[o];s&&this.lifecycle[o].on(s)}))}removePlugin(e){we.assert(e,"A name is required.");const t=this.registerPlugins[e];we.assert(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(r=>{r!=="name"&&this.lifecycle[r].remove(t[r])})}};Oe.PluginSystem=Mi;var xe={};const Pi=M,St=$,vi=Z;let Wt=D,Bt=Y;function Zr(e,t){const r=St.getRemoteEntryInfoFromSnapshot(t);r.url||Pi.error(Bt.RUNTIME_011,Bt.runtimeDescMap,{remoteName:e.name});let n=(0,Wt.getResourceUrl)(t,r.url);!Wt.isBrowserEnvValue&&!n.startsWith("http")&&(n=`https:${n}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function Ai(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!St.isRemoteInfoWithEntry(t)||!St.isPureRemoteEntry(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:i});Zr(s,a);const l={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},u=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:l,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});return u&&vi.preloadAssets(s,o,u,!1),{...e,remoteSnapshot:a}}return e}}}xe.assignRemoteInfo=Zr;xe.snapshotPlugin=Ai;var Qr={};const Ne=$,bt=b,Oi=q,jt=Z,ki=xe;let je=D;function wi(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function en(e,t,r,n,o={},s){const{value:i}=bt.getInfoWithoutType(e,Ne.getFMId(t)),a=s||i;if(a&&!(0,je.isManifestProvider)(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const u=wi(l),d=a.remotesInfo[l];en(e,{name:u.name,version:d.matchedVersion},r,!1,o,void 0)}}}const tt=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function Fi(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:u}=e,{preloadConfig:d}=t,{depsRemote:f}=d;if(en(n,r,(m,_,g)=>{var N;let p;if(g)p=d;else if(Array.isArray(f)){const R=f.find(v=>v.nameOrAlias===_.name||v.nameOrAlias===_.alias);if(!R)return;p=jt.defaultPreloadArgs(R)}else if(f===!0)p=d;else return;const E=(0,je.getResourceUrl)(m,Ne.getRemoteEntryInfoFromSnapshot(m).url);E&&a.push({name:_.name,moduleInfo:{name:_.name,entry:E,type:"remoteEntryType"in m?m.remoteEntryType:"global",entryGlobalName:"globalName"in m?m.globalName:_.name,shareScope:"",version:"version"in m?m.version:void 0},url:E});let I="modules"in m?m.modules:[];const k=jt.normalizePreloadExposes(p.exposes);k.length&&"modules"in m&&(I=(N=m==null?void 0:m.modules)==null?void 0:N.reduce((R,v)=>((k==null?void 0:k.indexOf(v.moduleName))!==-1&&R.push(v),R),[]));function y(R){const v=R.map(B=>(0,je.getResourceUrl)(m,B));return p.filter?v.filter(p.filter):v}if(I){const R=I.length;for(let v=0;v0){const m=(_,g)=>{const{shared:p}=Oi.getRegisteredShare(e.shareScopeMap,g.sharedName,_,e.sharedHandler.hooks.lifecycle.resolveShare)||{};p&&typeof p.lib=="function"&&(g.assets.js.sync.forEach(E=>{c.add(E)}),g.assets.css.sync.forEach(E=>{l.add(E)}))};o.shared.forEach(_=>{var E;const g=(E=u.shared)==null?void 0:E[_.sharedName];if(!g)return;const p=_.version?g.find(I=>I.version===_.version):g;p&&Ne.arrayOptions(p).forEach(I=>{m(I,_)})})}const h=i.filter(m=>!c.has(m)&&!tt("script",m));return{cssAssets:s.filter(m=>!l.has(m)&&!tt("link",m)),jsAssetsWithoutEntry:h,entryAssets:a.filter(m=>!tt("script",m.url))}}const Li=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return je.isBrowserEnvValue?Ne.isRemoteInfoWithEntry(o)&&Ne.isPureRemoteEntry(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(ki.assignRemoteInfo(n,i),Fi(t,r,n,s,i)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};Qr.generatePreloadAssetsPlugin=Li;var Ke={};const rt=M,Di=$,U=b,Vt=Pe,Hi=ve,nt=Ae,Ci=Oe;let ot=D,Fe=Y;function tn(e,t){const r=U.getGlobalSnapshotInfoByModuleInfo({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&U.getInfoWithoutType(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:"version"in e?e.version:void 0})}}var qi=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new Ci.PluginSystem({beforeLoadRemoteSnapshot:new Hi.AsyncHook("beforeLoadRemoteSnapshot"),loadSnapshot:new nt.AsyncWaterfallHook("loadGlobalSnapshot"),loadRemoteSnapshot:new nt.AsyncWaterfallHook("loadRemoteSnapshot"),afterLoadSnapshot:new nt.AsyncWaterfallHook("afterLoadSnapshot")}),this.manifestLoading=U.Global.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,expose:r}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e});let o=U.getGlobalSnapshotInfoByModuleInfo({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},U.addGlobalSnapshot({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!U.getInfoWithoutType(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let u,d;if(c)if((0,ot.isManifestProvider)(c)){const f=ot.isBrowserEnvValue?c.remoteEntry:c.ssrRemoteEntry||c.remoteEntry||"",h=await this.getManifestJson(f,e,{}),m=U.setGlobalSnapshotInfoByModuleInfo({...e,entry:f},h);u=h,d=m}else{const{remoteSnapshot:f}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});u=f,d=l}else if(Di.isRemoteInfoWithEntry(e)){const f=await this.getManifestJson(e.entry,e,{}),h=U.setGlobalSnapshotInfoByModuleInfo(e,f),{remoteSnapshot:m}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:f,from:"global"});u=m,d=h}else rt.error(Fe.RUNTIME_007,Fe.runtimeDescMap,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,Vt.optionsToMFContext(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:u}),{remoteSnapshot:u,globalSnapshot:d}}getGlobalRemoteInfo(e){return tn(e,this.HostInstance)}async getManifestJson(e,t,r){const n=async()=>{let s=this.manifestCache.get(e);if(s)return s;try{let i=await this.loaderHook.lifecycle.fetch.emit(e,{});(!i||!(i instanceof Response))&&(i=await fetch(e,{})),s=await i.json()}catch(i){s=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}),s||(delete this.manifestLoading[e],rt.error(Fe.RUNTIME_003,Fe.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${i}`,Vt.optionsToMFContext(this.HostInstance.options)))}return rt.assert(s.metaData&&s.exposes&&s.shared,`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${[!s.metaData&&"metaData",!s.exposes&&"exposes",!s.shared&&"shared"].filter(Boolean).join(", ")}.`),this.manifestCache.set(e,s),s},o=async()=>{const s=await n(),i=(0,ot.generateSnapshotFromManifest)(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}};Ke.SnapshotHandler=qi;Ke.getGlobalRemoteInfo=tn;var rn={};const st=M,Gi=oe,A=q,Xt=Pe,Ui=ve,it=_e,xt=Ae,Wi=Oe;let pe=Y;var Bi=class{constructor(e){this.hooks=new Wi.PluginSystem({beforeRegisterShare:new it.SyncWaterfallHook("beforeRegisterShare"),afterResolve:new xt.AsyncWaterfallHook("afterResolve"),beforeLoadShare:new xt.AsyncWaterfallHook("beforeLoadShare"),loadShare:new Ui.AsyncHook,resolveShare:new it.SyncWaterfallHook("resolveShare"),initContainerShareScopeMap:new it.SyncWaterfallHook("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=A.formatShareConfigs(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var a;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s}),(a=this.shareScopeMap[i])!=null&&a[o]||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&await Promise.all(n.scope.map(async a=>{await Promise.all(this.initializeSharing(a,{strategy:n.strategy}))}));const{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});st.assert(o,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const{shared:s,useTreesShaking:i}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(s){const a=A.directShare(s,i);if(a.lib)return A.addUseIn(a,r.options.name),a.lib;if(a.loading&&!a.loaded){const c=await a.loading;return a.loaded=!0,a.lib||(a.lib=c),A.addUseIn(a,r.options.name),c}else{const l=(async()=>{const u=await a.get();return A.addUseIn(a,r.options.name),a.loaded=!0,a.lib=u,u})();return this.setShared({pkgName:e,loaded:!1,shared:s,from:r.options.name,lib:null,loading:l,treeShaking:i?a:void 0}),l}}else{if(t!=null&&t.customShareInfo)return!1;const a=A.shouldUseTreeShaking(o.treeShaking),c=A.directShare(o,a),u=(async()=>{const d=await c.get();c.lib=d,c.loaded=!0,A.addUseIn(c,r.options.name);const{shared:f,useTreesShaking:h}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(f){const m=A.directShare(f,h);m.lib=d,m.loaded=!0,f.from=o.from}return d})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:u,treeShaking:a?c:void 0}),u}}initializeSharing(e=Gi.DEFAULT_SCOPE,t){const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy;let s=t==null?void 0:t.initScope;const i=[];if(n!=="build"){const{initTokens:f}=this;s||(s=[]);let h=f[e];if(h||(h=f[e]={from:this.host.name}),s.indexOf(h)>=0)return i;s.push(h)}const a=this.shareScopeMap,c=r.options.name;a[e]||(a[e]={});const l=a[e],u=(f,h)=>{var I;const{version:m,eager:_}=h;l[f]=l[f]||{};const g=l[f],p=g[m]&&A.directShare(g[m]),E=!!(p&&("eager"in p&&p.eager||"shareConfig"in p&&((I=p.shareConfig)!=null&&I.eager)));(!p||p.strategy!=="loaded-first"&&!p.loaded&&(!_!=!E?_:c>g[m].from))&&(g[m]=h)},d=async f=>{const{module:h}=await r.remoteHandler.getRemoteModuleAndOptions({id:f});let m;try{m=await h.getEntry()}catch(_){if(m=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:f,error:_,from:"runtime",lifecycle:"beforeLoadShare",origin:r}),!m)return}finally{m!=null&&m.init&&!h.initing&&(h.remoteEntryExports=m,await h.init(void 0,void 0,s))}};return Object.keys(r.options.shared).forEach(f=>{r.options.shared[f].forEach(h=>{h.scope.includes(e)&&u(f,h)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(f=>{f.shareScope===e&&i.push(d(f.name))}),i}loadShareSync(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&n.scope.forEach(i=>{this.initializeSharing(i,{strategy:n.strategy})});const{shared:o,useTreesShaking:s}=A.getRegisteredShare(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(o){if(typeof o.lib=="function")return A.addUseIn(o,r.options.name),o.loaded||(o.loaded=!0,o.from===r.options.name&&(n.loaded=!0)),o.lib;if(typeof o.get=="function"){const i=o.get();if(!(i instanceof Promise))return A.addUseIn(o,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:o}),i}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){const i=n.get();return i instanceof Promise&&st.error((t==null?void 0:t.from)==="build"?pe.RUNTIME_005:pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options)),n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}st.error(pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options))}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...u}=t,d=Array.isArray(l)?l:[l],f=h=>{const m=(g,p,E)=>{E&&!g[p]&&(g[p]=E)},_=a?h.treeShaking:h;m(_,"loaded",s),m(_,"loading",o),m(_,"get",i)};d.forEach(h=>{this.shareScopeMap[h]||(this.shareScopeMap[h]={}),this.shareScopeMap[h][e]||(this.shareScopeMap[h][e]={}),this.shareScopeMap[h][e][c]||(this.shareScopeMap[h][e][c]={version:c,scope:[h],...u,lib:n});const m=this.shareScopeMap[h][e][c];f(m),r&&m.from!==r&&(m.from=r)})}_setGlobalShareScopeMap(e){const t=A.getGlobalShareScope(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}};rn.SharedHandler=Bi;var nn={};const Le=M,G=b,Kt=oe,ji=q,Vi=he,at=K,Xi=Pe,Yt=Z,xi=Xe,Ki=me,ie=ve,zt=_e,Yi=Ae,zi=Oe,Ji=Ke;let lt=D,Jt=Y;var Zi=class{constructor(e){this.hooks=new zi.PluginSystem({beforeRegisterRemote:new zt.SyncWaterfallHook("beforeRegisterRemote"),registerRemote:new zt.SyncWaterfallHook("registerRemote"),beforeRequest:new Yi.AsyncWaterfallHook("beforeRequest"),onLoad:new ie.AsyncHook("onLoad"),handlePreloadModule:new Ki.SyncHook("handlePreloadModule"),errorLoadRemote:new ie.AsyncHook("errorLoadRemote"),beforePreloadRemote:new ie.AsyncHook("beforePreloadRemote"),generatePreloadAssets:new ie.AsyncHook("generatePreloadAssets"),afterPreloadRemote:new ie.AsyncHook,loadEntry:new ie.AsyncHook}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this;try{const{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:s,remoteMatchInfo:i}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:a,remote:c,expose:l,id:u,remoteSnapshot:d}=i,f=await o.get(u,l,t,d),h=await this.hooks.lifecycle.onLoad.emit({id:u,pkgNameOrAlias:a,expose:l,exposeModule:n?f:void 0,exposeModuleFactory:n?void 0:f,remote:c,options:s,moduleInstance:o,origin:r});return this.setIdToRemoteMap(e,i),typeof h=="function"?h:f}catch(n){const{from:o="runtime"}=t||{from:"runtime"},s=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:o,lifecycle:"onLoad",origin:r});if(!s)throw n;return s}}async preloadRemote(e){const{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const r=Yt.formatPreloadArgs(t.options.remotes,e);await Promise.all(r.map(async n=>{const{remote:o}=n,s=at.getRemoteInfo(o),{globalSnapshot:i,remoteSnapshot:a}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:o}),c=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:n,remote:o,remoteInfo:s,globalSnapshot:i,remoteSnapshot:a});c&&Yt.preloadAssets(s,t,c)}))}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(h){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:h,lifecycle:"beforeRequest"}),!n)throw h}const{id:o}=n,s=Vi.matchRemoteWithNameAndExpose(t.options.remotes,o);s||Le.error(Jt.RUNTIME_004,Jt.runtimeDescMap,{hostName:t.options.name,requestId:o},void 0,Xi.optionsToMFContext(t.options));const{remote:i}=s,a=at.getRemoteInfo(i),c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:u}=c;Le.assert(l&&u,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let d=t.moduleCache.get(l.name);const f={host:t,remoteInfo:a};return d||(d=new xi.Module(f),t.moduleCache.set(l.name,d)),{module:d,moduleOptions:f,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});Le.assert(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&<.isBrowserEnvValue&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=Kt.DEFAULT_SCOPE),e.type||(e.type=Kt.DEFAULT_REMOTE_TYPE)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),(0,lt.warn)(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(i=>i.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=r.moduleCache.get(e.name);if(s){const i=s.remoteInfo,a=i.entryGlobalName;G.CurrentGlobal[a]&&((t=Object.getOwnPropertyDescriptor(G.CurrentGlobal,a))!=null&&t.configurable?delete G.CurrentGlobal[a]:G.CurrentGlobal[a]=void 0);const c=at.getRemoteEntryUniqueKey(s.remoteInfo);G.globalLoading[c]&&delete G.globalLoading[c],r.snapshotHandler.manifestCache.delete(i.entry);let l=i.buildVersion?(0,lt.composeKeyWithSeparator)(i.name,i.buildVersion):i.name;const u=G.CurrentGlobal.__FEDERATION__.__INSTANCES__.findIndex(f=>i.buildVersion?f.options.id===l:f.name===l);if(u!==-1){const f=G.CurrentGlobal.__FEDERATION__.__INSTANCES__[u];l=f.options.id||l;const h=ji.getGlobalShareScope();let m=!0;const _=[];Object.keys(h).forEach(g=>{const p=h[g];p&&Object.keys(p).forEach(E=>{const I=p[E];I&&Object.keys(I).forEach(k=>{const y=I[k];y&&Object.keys(y).forEach(N=>{const R=y[N];R&&typeof R=="object"&&R.from===i.name&&(R.loaded||R.loading?(R.useIn=R.useIn.filter(v=>v!==i.name),R.useIn.length?m=!1:_.push([g,E,k,N])):_.push([g,E,k,N]))})})})}),m&&(f.shareScopeMap={},delete h[l]),_.forEach(([g,p,E,I])=>{var k,y,N;(N=(y=(k=h[g])==null?void 0:k[p])==null?void 0:y[E])==null||delete N[I]}),G.CurrentGlobal.__FEDERATION__.__INSTANCES__.splice(u,1)}const{hostGlobalSnapshot:d}=Ji.getGlobalRemoteInfo(e,r);if(d){const f=d&&"remotesInfo"in d&&d.remotesInfo&&G.getInfoWithoutType(d.remotesInfo,e.name).key;f&&(delete d.remotesInfo[f],G.Global.__FEDERATION__.__MANIFEST_LOADING__[f]&&delete G.Global.__FEDERATION__.__MANIFEST_LOADING__[f])}r.moduleCache.delete(e.name)}}catch(r){Le.logger.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};nn.RemoteHandler=Zi;const Qi=M,ea=oe,ta=q,ra=Vr,na=Xr,oa=K,sa=Xe,z=me,ct=ve,ia=_e,Zt=Ae,ut=Oe,aa=xe,la=Qr,ca=Ke,ua=rn,fa=nn;let da=D,ft=Y;const ha=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0;var ma=class{constructor(e){this.hooks=new ut.PluginSystem({beforeInit:new ia.SyncWaterfallHook("beforeInit"),init:new z.SyncHook,beforeInitContainer:new Zt.AsyncWaterfallHook("beforeInitContainer"),initContainer:new Zt.AsyncWaterfallHook("initContainer")}),this.version="2.2.2",this.moduleCache=new Map,this.loaderHook=new ut.PluginSystem({getModuleInfo:new z.SyncHook,createScript:new z.SyncHook,createLink:new z.SyncHook,fetch:new ct.AsyncHook,loadEntryError:new ct.AsyncHook,getModuleFactory:new ct.AsyncHook}),this.bridgeHook=new ut.PluginSystem({beforeBridgeRender:new z.SyncHook,afterBridgeRender:new z.SyncHook,beforeBridgeDestroy:new z.SyncHook,afterBridgeDestroy:new z.SyncHook});const t=ha?[aa.snapshotPlugin(),la.generatePreloadAssetsPlugin()]:[],r={id:ra.getBuilderId(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:da.isBrowserEnvValue};this.name=e.name,this.options=r,this.snapshotHandler=new ca.SnapshotHandler(this),this.sharedHandler=new ua.SharedHandler(this),this.remoteHandler=new fa.RemoteHandler(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&Qi.error((0,ft.getShortErrorMsg)(ft.RUNTIME_010,ft.runtimeDescMap)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=ea.DEFAULT_SCOPE,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){const n=oa.getRemoteInfo({name:e,entry:t}),o=new sa.Module({host:this,remoteInfo:n});return o.remoteEntryExports=r,this.moduleCache.set(e,o),o}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const{allShareInfos:r}=ta.formatShareConfigs(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){const t=na.registerPlugins(e,this);this.options.plugins=this.options.plugins.reduce((r,n)=>(n&&r&&!r.find(o=>o.name===n.name)&&r.push(n),r),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};Yr.ModuleFederation=ma;var on={},sn={},Qt=Object.defineProperty,_a=(e,t)=>{let r={};for(var n in e)Qt(r,n,{get:e[n],enumerable:!0});return t||Qt(r,Symbol.toStringTag,{value:"Module"}),r};sn.__exportAll=_a;(function(e){var r=sn.__exportAll({});Object.defineProperty(e,"type_exports",{enumerable:!0,get:function(){return r}})})(on);(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=M,r=$,n=b,o=Pt,s=q,i=he,a=K,c=xr,l=Xe,u=Yr,d=on;let f=D;const h=c.default;e.CurrentGlobal=n.CurrentGlobal,e.Global=n.Global,e.Module=l.Module,e.ModuleFederation=u.ModuleFederation,e.addGlobalSnapshot=n.addGlobalSnapshot,e.assert=t.assert,e.error=t.error,e.getGlobalFederationConstructor=n.getGlobalFederationConstructor,e.getGlobalSnapshot=n.getGlobalSnapshot,e.getInfoWithoutType=n.getInfoWithoutType,e.getRegisteredShare=s.getRegisteredShare,e.getRemoteEntry=a.getRemoteEntry,e.getRemoteInfo=a.getRemoteInfo,e.helpers=h,e.isStaticResourcesEqual=r.isStaticResourcesEqual,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return f.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return f.loadScriptNode}}),e.matchRemoteWithNameAndExpose=i.matchRemoteWithNameAndExpose,e.registerGlobalPlugins=n.registerGlobalPlugins,e.resetFederationGlobalInfo=n.resetFederationGlobalInfo,e.safeWrapper=r.safeWrapper,e.satisfy=o.satisfy,e.setGlobalFederationConstructor=n.setGlobalFederationConstructor,e.setGlobalFederationInstance=n.setGlobalFederationInstance,Object.defineProperty(e,"types",{enumerable:!0,get:function(){return d.type_exports}})})(Tt);let ga=Tt;function pa(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function ya(e,t){const r=pa();return ga.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(n=>!!(r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&t&&n.options.version===t))}ar.getGlobalFederationInstance=ya;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ar;let r=Tt,n=Y;function o(_){const g=new((0,r.getGlobalFederationConstructor)()||r.ModuleFederation)(_);return(0,r.setGlobalFederationInstance)(g),g}let s=null;function i(_){const g=t.getGlobalFederationInstance(_.name,_.version);return g?(g.initOptions(_),s||(s=g),g):(s=o(_),s)}function a(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadRemote.apply(s,_)}function c(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShare.apply(s,_)}function l(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShareSync.apply(s,_)}function u(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.preloadRemote.apply(s,_)}function d(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerRemotes.apply(s,_)}function f(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerPlugins.apply(s,_)}function h(){return s}function m(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerShared.apply(s,_)}(0,r.setGlobalFederationConstructor)(r.ModuleFederation),Object.defineProperty(e,"Module",{enumerable:!0,get:function(){return r.Module}}),e.ModuleFederation=r.ModuleFederation,e.createInstance=o,e.getInstance=h,Object.defineProperty(e,"getRemoteEntry",{enumerable:!0,get:function(){return r.getRemoteEntry}}),Object.defineProperty(e,"getRemoteInfo",{enumerable:!0,get:function(){return r.getRemoteInfo}}),e.init=i,e.loadRemote=a,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return r.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return r.loadScriptNode}}),e.loadShare=c,e.loadShareSync=l,e.preloadRemote=u,Object.defineProperty(e,"registerGlobalPlugins",{enumerable:!0,get:function(){return r.registerGlobalPlugins}}),e.registerPlugins=f,e.registerRemotes=d,e.registerShared=m})(ir);const an="__mf_init____mf__virtual/ConfigCustomJavascriptSet__mf_v__runtimeInit__mf_v__.js__";let Rt=globalThis[an];if(!Rt){let e,t;const r=new Promise((n,o)=>{e=n,t=o});Rt=globalThis[an]={initPromise:r,initResolve:e,initReject:t},typeof window>"u"&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}const Ea=Rt.initResolve,er={},tr="default",rr="ConfigCustomJavascriptSet";let nr,or;async function Sa(){return nr??=sr(()=>import("./localSharedImportMap-BeObsVNc.js"),__vite__mapDeps([0,1]),import.meta.url),nr}async function ba(){return or??=sr(()=>import("./virtualExposes-wYe_Np-4.js"),__vite__mapDeps([2,1]),import.meta.url).then(e=>e.default??e),or}async function Ta(e={},t=[]){const{usedShared:r,usedRemotes:n}=await Sa(),o=ir.init({name:rr,remotes:n,shared:r,plugins:[],shareStrategy:"version-first"});var s=er[tr];if(s||(s=er[tr]={from:rr}),!(t.indexOf(s)>=0)){t.push(s),o.initShareScopeMap("default",e),Ea(o);try{await Promise.all(await o.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(i){console.error(i)}return o}}async function Ia(e){const t=await ba();if(!(e in t))throw new Error(`Module ${e} does not exist in container.`);return t[e]().then(r=>()=>r)}export{ir as d,Ia as g,Ta as i}; + ${(0,mi.safeToString)(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t,r){const n=await this.getEntry();if(this.inited)return n;if(this.initPromise)return await this.initPromise,n;this.initing=!0,this.initPromise=(async()=>{const{remoteEntryInitOptions:o,shareScope:s,initScope:i}=_i(this.remoteInfo,this.host.shareScopeMap,r),a=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:s,remoteEntryInitOptions:o,initScope:i,remoteInfo:this.remoteInfo,origin:this.host});typeof(n==null?void 0:n.init)>"u"&&Ze.error(Ut.RUNTIME_002,Ut.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,hi.optionsToMFContext(this.host.options)),await n.init(a.shareScope,a.initScope,a.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...a,id:e,remoteSnapshot:t,remoteEntryExports:n}),this.inited=!0})();try{await this.initPromise}finally{this.initing=!1,this.initPromise=void 0}return n}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n);this.lib=s;let i;i=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo}),i||(i=await s.get(t)),Ze.assert(i,`${Gt.getFMId(this.remoteInfo)} remote don't export ${t}.`);const a=Gt.processModuleAlias(this.remoteInfo.name,t),c=this.wraperFactory(i,a);return o?await c():c}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return e instanceof Promise?async()=>{const n=await e();return r(n,t),n}:()=>{const n=e();return r(n,t),n}}};Xe.Module=gi;var Yr={},me={},pi=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{t=r(...e)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}};me.SyncHook=pi;var ve={};const yi=me;var Ei=class extends yi.SyncHook{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n0){let r=0;const n=s=>(et.warn(s),this.onerror(s),e),o=s=>{if(Ii.checkReturnData(e,s)){if(e=s,r{const s=e[o];s&&this.lifecycle[o].on(s)}))}removePlugin(e){we.assert(e,"A name is required.");const t=this.registerPlugins[e];we.assert(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(r=>{r!=="name"&&this.lifecycle[r].remove(t[r])})}};Oe.PluginSystem=Mi;var xe={};const Pi=M,St=$,vi=Z;let Wt=D,Bt=Y;function Zr(e,t){const r=St.getRemoteEntryInfoFromSnapshot(t);r.url||Pi.error(Bt.RUNTIME_011,Bt.runtimeDescMap,{remoteName:e.name});let n=(0,Wt.getResourceUrl)(t,r.url);!Wt.isBrowserEnvValue&&!n.startsWith("http")&&(n=`https:${n}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function Ai(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!St.isRemoteInfoWithEntry(t)||!St.isPureRemoteEntry(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:i});Zr(s,a);const l={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},u=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:l,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});return u&&vi.preloadAssets(s,o,u,!1),{...e,remoteSnapshot:a}}return e}}}xe.assignRemoteInfo=Zr;xe.snapshotPlugin=Ai;var Qr={};const Ne=$,bt=b,Oi=q,jt=Z,ki=xe;let je=D;function wi(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function en(e,t,r,n,o={},s){const{value:i}=bt.getInfoWithoutType(e,Ne.getFMId(t)),a=s||i;if(a&&!(0,je.isManifestProvider)(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const u=wi(l),d=a.remotesInfo[l];en(e,{name:u.name,version:d.matchedVersion},r,!1,o,void 0)}}}const tt=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function Fi(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:u}=e,{preloadConfig:d}=t,{depsRemote:f}=d;if(en(n,r,(m,_,g)=>{var N;let p;if(g)p=d;else if(Array.isArray(f)){const R=f.find(v=>v.nameOrAlias===_.name||v.nameOrAlias===_.alias);if(!R)return;p=jt.defaultPreloadArgs(R)}else if(f===!0)p=d;else return;const E=(0,je.getResourceUrl)(m,Ne.getRemoteEntryInfoFromSnapshot(m).url);E&&a.push({name:_.name,moduleInfo:{name:_.name,entry:E,type:"remoteEntryType"in m?m.remoteEntryType:"global",entryGlobalName:"globalName"in m?m.globalName:_.name,shareScope:"",version:"version"in m?m.version:void 0},url:E});let I="modules"in m?m.modules:[];const k=jt.normalizePreloadExposes(p.exposes);k.length&&"modules"in m&&(I=(N=m==null?void 0:m.modules)==null?void 0:N.reduce((R,v)=>((k==null?void 0:k.indexOf(v.moduleName))!==-1&&R.push(v),R),[]));function y(R){const v=R.map(B=>(0,je.getResourceUrl)(m,B));return p.filter?v.filter(p.filter):v}if(I){const R=I.length;for(let v=0;v0){const m=(_,g)=>{const{shared:p}=Oi.getRegisteredShare(e.shareScopeMap,g.sharedName,_,e.sharedHandler.hooks.lifecycle.resolveShare)||{};p&&typeof p.lib=="function"&&(g.assets.js.sync.forEach(E=>{c.add(E)}),g.assets.css.sync.forEach(E=>{l.add(E)}))};o.shared.forEach(_=>{var E;const g=(E=u.shared)==null?void 0:E[_.sharedName];if(!g)return;const p=_.version?g.find(I=>I.version===_.version):g;p&&Ne.arrayOptions(p).forEach(I=>{m(I,_)})})}const h=i.filter(m=>!c.has(m)&&!tt("script",m));return{cssAssets:s.filter(m=>!l.has(m)&&!tt("link",m)),jsAssetsWithoutEntry:h,entryAssets:a.filter(m=>!tt("script",m.url))}}const Li=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return je.isBrowserEnvValue?Ne.isRemoteInfoWithEntry(o)&&Ne.isPureRemoteEntry(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(ki.assignRemoteInfo(n,i),Fi(t,r,n,s,i)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};Qr.generatePreloadAssetsPlugin=Li;var Ke={};const rt=M,Di=$,U=b,Vt=Pe,Hi=ve,nt=Ae,Ci=Oe;let ot=D,Fe=Y;function tn(e,t){const r=U.getGlobalSnapshotInfoByModuleInfo({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&U.getInfoWithoutType(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:"version"in e?e.version:void 0})}}var qi=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new Ci.PluginSystem({beforeLoadRemoteSnapshot:new Hi.AsyncHook("beforeLoadRemoteSnapshot"),loadSnapshot:new nt.AsyncWaterfallHook("loadGlobalSnapshot"),loadRemoteSnapshot:new nt.AsyncWaterfallHook("loadRemoteSnapshot"),afterLoadSnapshot:new nt.AsyncWaterfallHook("afterLoadSnapshot")}),this.manifestLoading=U.Global.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,expose:r}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e});let o=U.getGlobalSnapshotInfoByModuleInfo({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},U.addGlobalSnapshot({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!U.getInfoWithoutType(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let u,d;if(c)if((0,ot.isManifestProvider)(c)){const f=ot.isBrowserEnvValue?c.remoteEntry:c.ssrRemoteEntry||c.remoteEntry||"",h=await this.getManifestJson(f,e,{}),m=U.setGlobalSnapshotInfoByModuleInfo({...e,entry:f},h);u=h,d=m}else{const{remoteSnapshot:f}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});u=f,d=l}else if(Di.isRemoteInfoWithEntry(e)){const f=await this.getManifestJson(e.entry,e,{}),h=U.setGlobalSnapshotInfoByModuleInfo(e,f),{remoteSnapshot:m}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:f,from:"global"});u=m,d=h}else rt.error(Fe.RUNTIME_007,Fe.runtimeDescMap,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,Vt.optionsToMFContext(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:u}),{remoteSnapshot:u,globalSnapshot:d}}getGlobalRemoteInfo(e){return tn(e,this.HostInstance)}async getManifestJson(e,t,r){const n=async()=>{let s=this.manifestCache.get(e);if(s)return s;try{let i=await this.loaderHook.lifecycle.fetch.emit(e,{});(!i||!(i instanceof Response))&&(i=await fetch(e,{})),s=await i.json()}catch(i){s=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}),s||(delete this.manifestLoading[e],rt.error(Fe.RUNTIME_003,Fe.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${i}`,Vt.optionsToMFContext(this.HostInstance.options)))}return rt.assert(s.metaData&&s.exposes&&s.shared,`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${[!s.metaData&&"metaData",!s.exposes&&"exposes",!s.shared&&"shared"].filter(Boolean).join(", ")}.`),this.manifestCache.set(e,s),s},o=async()=>{const s=await n(),i=(0,ot.generateSnapshotFromManifest)(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}};Ke.SnapshotHandler=qi;Ke.getGlobalRemoteInfo=tn;var rn={};const st=M,Gi=oe,A=q,Xt=Pe,Ui=ve,it=_e,xt=Ae,Wi=Oe;let pe=Y;var Bi=class{constructor(e){this.hooks=new Wi.PluginSystem({beforeRegisterShare:new it.SyncWaterfallHook("beforeRegisterShare"),afterResolve:new xt.AsyncWaterfallHook("afterResolve"),beforeLoadShare:new xt.AsyncWaterfallHook("beforeLoadShare"),loadShare:new Ui.AsyncHook,resolveShare:new it.SyncWaterfallHook("resolveShare"),initContainerShareScopeMap:new it.SyncWaterfallHook("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=A.formatShareConfigs(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var a;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s}),(a=this.shareScopeMap[i])!=null&&a[o]||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&await Promise.all(n.scope.map(async a=>{await Promise.all(this.initializeSharing(a,{strategy:n.strategy}))}));const{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});st.assert(o,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const{shared:s,useTreesShaking:i}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(s){const a=A.directShare(s,i);if(a.lib)return A.addUseIn(a,r.options.name),a.lib;if(a.loading&&!a.loaded){const c=await a.loading;return a.loaded=!0,a.lib||(a.lib=c),A.addUseIn(a,r.options.name),c}else{const l=(async()=>{const u=await a.get();return A.addUseIn(a,r.options.name),a.loaded=!0,a.lib=u,u})();return this.setShared({pkgName:e,loaded:!1,shared:s,from:r.options.name,lib:null,loading:l,treeShaking:i?a:void 0}),l}}else{if(t!=null&&t.customShareInfo)return!1;const a=A.shouldUseTreeShaking(o.treeShaking),c=A.directShare(o,a),u=(async()=>{const d=await c.get();c.lib=d,c.loaded=!0,A.addUseIn(c,r.options.name);const{shared:f,useTreesShaking:h}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(f){const m=A.directShare(f,h);m.lib=d,m.loaded=!0,f.from=o.from}return d})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:u,treeShaking:a?c:void 0}),u}}initializeSharing(e=Gi.DEFAULT_SCOPE,t){const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy;let s=t==null?void 0:t.initScope;const i=[];if(n!=="build"){const{initTokens:f}=this;s||(s=[]);let h=f[e];if(h||(h=f[e]={from:this.host.name}),s.indexOf(h)>=0)return i;s.push(h)}const a=this.shareScopeMap,c=r.options.name;a[e]||(a[e]={});const l=a[e],u=(f,h)=>{var I;const{version:m,eager:_}=h;l[f]=l[f]||{};const g=l[f],p=g[m]&&A.directShare(g[m]),E=!!(p&&("eager"in p&&p.eager||"shareConfig"in p&&((I=p.shareConfig)!=null&&I.eager)));(!p||p.strategy!=="loaded-first"&&!p.loaded&&(!_!=!E?_:c>g[m].from))&&(g[m]=h)},d=async f=>{const{module:h}=await r.remoteHandler.getRemoteModuleAndOptions({id:f});let m;try{m=await h.getEntry()}catch(_){if(m=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:f,error:_,from:"runtime",lifecycle:"beforeLoadShare",origin:r}),!m)return}finally{m!=null&&m.init&&!h.initing&&(h.remoteEntryExports=m,await h.init(void 0,void 0,s))}};return Object.keys(r.options.shared).forEach(f=>{r.options.shared[f].forEach(h=>{h.scope.includes(e)&&u(f,h)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(f=>{f.shareScope===e&&i.push(d(f.name))}),i}loadShareSync(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&n.scope.forEach(i=>{this.initializeSharing(i,{strategy:n.strategy})});const{shared:o,useTreesShaking:s}=A.getRegisteredShare(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(o){if(typeof o.lib=="function")return A.addUseIn(o,r.options.name),o.loaded||(o.loaded=!0,o.from===r.options.name&&(n.loaded=!0)),o.lib;if(typeof o.get=="function"){const i=o.get();if(!(i instanceof Promise))return A.addUseIn(o,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:o}),i}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){const i=n.get();return i instanceof Promise&&st.error((t==null?void 0:t.from)==="build"?pe.RUNTIME_005:pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options)),n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}st.error(pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options))}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...u}=t,d=Array.isArray(l)?l:[l],f=h=>{const m=(g,p,E)=>{E&&!g[p]&&(g[p]=E)},_=a?h.treeShaking:h;m(_,"loaded",s),m(_,"loading",o),m(_,"get",i)};d.forEach(h=>{this.shareScopeMap[h]||(this.shareScopeMap[h]={}),this.shareScopeMap[h][e]||(this.shareScopeMap[h][e]={}),this.shareScopeMap[h][e][c]||(this.shareScopeMap[h][e][c]={version:c,scope:[h],...u,lib:n});const m=this.shareScopeMap[h][e][c];f(m),r&&m.from!==r&&(m.from=r)})}_setGlobalShareScopeMap(e){const t=A.getGlobalShareScope(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}};rn.SharedHandler=Bi;var nn={};const Le=M,G=b,Kt=oe,ji=q,Vi=he,at=K,Xi=Pe,Yt=Z,xi=Xe,Ki=me,ie=ve,zt=_e,Yi=Ae,zi=Oe,Ji=Ke;let lt=D,Jt=Y;var Zi=class{constructor(e){this.hooks=new zi.PluginSystem({beforeRegisterRemote:new zt.SyncWaterfallHook("beforeRegisterRemote"),registerRemote:new zt.SyncWaterfallHook("registerRemote"),beforeRequest:new Yi.AsyncWaterfallHook("beforeRequest"),onLoad:new ie.AsyncHook("onLoad"),handlePreloadModule:new Ki.SyncHook("handlePreloadModule"),errorLoadRemote:new ie.AsyncHook("errorLoadRemote"),beforePreloadRemote:new ie.AsyncHook("beforePreloadRemote"),generatePreloadAssets:new ie.AsyncHook("generatePreloadAssets"),afterPreloadRemote:new ie.AsyncHook,loadEntry:new ie.AsyncHook}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this;try{const{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:s,remoteMatchInfo:i}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:a,remote:c,expose:l,id:u,remoteSnapshot:d}=i,f=await o.get(u,l,t,d),h=await this.hooks.lifecycle.onLoad.emit({id:u,pkgNameOrAlias:a,expose:l,exposeModule:n?f:void 0,exposeModuleFactory:n?void 0:f,remote:c,options:s,moduleInstance:o,origin:r});return this.setIdToRemoteMap(e,i),typeof h=="function"?h:f}catch(n){const{from:o="runtime"}=t||{from:"runtime"},s=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:o,lifecycle:"onLoad",origin:r});if(!s)throw n;return s}}async preloadRemote(e){const{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const r=Yt.formatPreloadArgs(t.options.remotes,e);await Promise.all(r.map(async n=>{const{remote:o}=n,s=at.getRemoteInfo(o),{globalSnapshot:i,remoteSnapshot:a}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:o}),c=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:n,remote:o,remoteInfo:s,globalSnapshot:i,remoteSnapshot:a});c&&Yt.preloadAssets(s,t,c)}))}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(h){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:h,lifecycle:"beforeRequest"}),!n)throw h}const{id:o}=n,s=Vi.matchRemoteWithNameAndExpose(t.options.remotes,o);s||Le.error(Jt.RUNTIME_004,Jt.runtimeDescMap,{hostName:t.options.name,requestId:o},void 0,Xi.optionsToMFContext(t.options));const{remote:i}=s,a=at.getRemoteInfo(i),c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:u}=c;Le.assert(l&&u,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let d=t.moduleCache.get(l.name);const f={host:t,remoteInfo:a};return d||(d=new xi.Module(f),t.moduleCache.set(l.name,d)),{module:d,moduleOptions:f,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});Le.assert(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&<.isBrowserEnvValue&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=Kt.DEFAULT_SCOPE),e.type||(e.type=Kt.DEFAULT_REMOTE_TYPE)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),(0,lt.warn)(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(i=>i.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=r.moduleCache.get(e.name);if(s){const i=s.remoteInfo,a=i.entryGlobalName;G.CurrentGlobal[a]&&((t=Object.getOwnPropertyDescriptor(G.CurrentGlobal,a))!=null&&t.configurable?delete G.CurrentGlobal[a]:G.CurrentGlobal[a]=void 0);const c=at.getRemoteEntryUniqueKey(s.remoteInfo);G.globalLoading[c]&&delete G.globalLoading[c],r.snapshotHandler.manifestCache.delete(i.entry);let l=i.buildVersion?(0,lt.composeKeyWithSeparator)(i.name,i.buildVersion):i.name;const u=G.CurrentGlobal.__FEDERATION__.__INSTANCES__.findIndex(f=>i.buildVersion?f.options.id===l:f.name===l);if(u!==-1){const f=G.CurrentGlobal.__FEDERATION__.__INSTANCES__[u];l=f.options.id||l;const h=ji.getGlobalShareScope();let m=!0;const _=[];Object.keys(h).forEach(g=>{const p=h[g];p&&Object.keys(p).forEach(E=>{const I=p[E];I&&Object.keys(I).forEach(k=>{const y=I[k];y&&Object.keys(y).forEach(N=>{const R=y[N];R&&typeof R=="object"&&R.from===i.name&&(R.loaded||R.loading?(R.useIn=R.useIn.filter(v=>v!==i.name),R.useIn.length?m=!1:_.push([g,E,k,N])):_.push([g,E,k,N]))})})})}),m&&(f.shareScopeMap={},delete h[l]),_.forEach(([g,p,E,I])=>{var k,y,N;(N=(y=(k=h[g])==null?void 0:k[p])==null?void 0:y[E])==null||delete N[I]}),G.CurrentGlobal.__FEDERATION__.__INSTANCES__.splice(u,1)}const{hostGlobalSnapshot:d}=Ji.getGlobalRemoteInfo(e,r);if(d){const f=d&&"remotesInfo"in d&&d.remotesInfo&&G.getInfoWithoutType(d.remotesInfo,e.name).key;f&&(delete d.remotesInfo[f],G.Global.__FEDERATION__.__MANIFEST_LOADING__[f]&&delete G.Global.__FEDERATION__.__MANIFEST_LOADING__[f])}r.moduleCache.delete(e.name)}}catch(r){Le.logger.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};nn.RemoteHandler=Zi;const Qi=M,ea=oe,ta=q,ra=Vr,na=Xr,oa=K,sa=Xe,z=me,ct=ve,ia=_e,Zt=Ae,ut=Oe,aa=xe,la=Qr,ca=Ke,ua=rn,fa=nn;let da=D,ft=Y;const ha=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0;var ma=class{constructor(e){this.hooks=new ut.PluginSystem({beforeInit:new ia.SyncWaterfallHook("beforeInit"),init:new z.SyncHook,beforeInitContainer:new Zt.AsyncWaterfallHook("beforeInitContainer"),initContainer:new Zt.AsyncWaterfallHook("initContainer")}),this.version="2.2.2",this.moduleCache=new Map,this.loaderHook=new ut.PluginSystem({getModuleInfo:new z.SyncHook,createScript:new z.SyncHook,createLink:new z.SyncHook,fetch:new ct.AsyncHook,loadEntryError:new ct.AsyncHook,getModuleFactory:new ct.AsyncHook}),this.bridgeHook=new ut.PluginSystem({beforeBridgeRender:new z.SyncHook,afterBridgeRender:new z.SyncHook,beforeBridgeDestroy:new z.SyncHook,afterBridgeDestroy:new z.SyncHook});const t=ha?[aa.snapshotPlugin(),la.generatePreloadAssetsPlugin()]:[],r={id:ra.getBuilderId(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:da.isBrowserEnvValue};this.name=e.name,this.options=r,this.snapshotHandler=new ca.SnapshotHandler(this),this.sharedHandler=new ua.SharedHandler(this),this.remoteHandler=new fa.RemoteHandler(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&Qi.error((0,ft.getShortErrorMsg)(ft.RUNTIME_010,ft.runtimeDescMap)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=ea.DEFAULT_SCOPE,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){const n=oa.getRemoteInfo({name:e,entry:t}),o=new sa.Module({host:this,remoteInfo:n});return o.remoteEntryExports=r,this.moduleCache.set(e,o),o}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const{allShareInfos:r}=ta.formatShareConfigs(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){const t=na.registerPlugins(e,this);this.options.plugins=this.options.plugins.reduce((r,n)=>(n&&r&&!r.find(o=>o.name===n.name)&&r.push(n),r),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};Yr.ModuleFederation=ma;var on={},sn={},Qt=Object.defineProperty,_a=(e,t)=>{let r={};for(var n in e)Qt(r,n,{get:e[n],enumerable:!0});return t||Qt(r,Symbol.toStringTag,{value:"Module"}),r};sn.__exportAll=_a;(function(e){var r=sn.__exportAll({});Object.defineProperty(e,"type_exports",{enumerable:!0,get:function(){return r}})})(on);(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=M,r=$,n=b,o=Pt,s=q,i=he,a=K,c=xr,l=Xe,u=Yr,d=on;let f=D;const h=c.default;e.CurrentGlobal=n.CurrentGlobal,e.Global=n.Global,e.Module=l.Module,e.ModuleFederation=u.ModuleFederation,e.addGlobalSnapshot=n.addGlobalSnapshot,e.assert=t.assert,e.error=t.error,e.getGlobalFederationConstructor=n.getGlobalFederationConstructor,e.getGlobalSnapshot=n.getGlobalSnapshot,e.getInfoWithoutType=n.getInfoWithoutType,e.getRegisteredShare=s.getRegisteredShare,e.getRemoteEntry=a.getRemoteEntry,e.getRemoteInfo=a.getRemoteInfo,e.helpers=h,e.isStaticResourcesEqual=r.isStaticResourcesEqual,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return f.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return f.loadScriptNode}}),e.matchRemoteWithNameAndExpose=i.matchRemoteWithNameAndExpose,e.registerGlobalPlugins=n.registerGlobalPlugins,e.resetFederationGlobalInfo=n.resetFederationGlobalInfo,e.safeWrapper=r.safeWrapper,e.satisfy=o.satisfy,e.setGlobalFederationConstructor=n.setGlobalFederationConstructor,e.setGlobalFederationInstance=n.setGlobalFederationInstance,Object.defineProperty(e,"types",{enumerable:!0,get:function(){return d.type_exports}})})(Tt);let ga=Tt;function pa(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function ya(e,t){const r=pa();return ga.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(n=>!!(r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&t&&n.options.version===t))}ar.getGlobalFederationInstance=ya;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ar;let r=Tt,n=Y;function o(_){const g=new((0,r.getGlobalFederationConstructor)()||r.ModuleFederation)(_);return(0,r.setGlobalFederationInstance)(g),g}let s=null;function i(_){const g=t.getGlobalFederationInstance(_.name,_.version);return g?(g.initOptions(_),s||(s=g),g):(s=o(_),s)}function a(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadRemote.apply(s,_)}function c(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShare.apply(s,_)}function l(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShareSync.apply(s,_)}function u(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.preloadRemote.apply(s,_)}function d(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerRemotes.apply(s,_)}function f(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerPlugins.apply(s,_)}function h(){return s}function m(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerShared.apply(s,_)}(0,r.setGlobalFederationConstructor)(r.ModuleFederation),Object.defineProperty(e,"Module",{enumerable:!0,get:function(){return r.Module}}),e.ModuleFederation=r.ModuleFederation,e.createInstance=o,e.getInstance=h,Object.defineProperty(e,"getRemoteEntry",{enumerable:!0,get:function(){return r.getRemoteEntry}}),Object.defineProperty(e,"getRemoteInfo",{enumerable:!0,get:function(){return r.getRemoteInfo}}),e.init=i,e.loadRemote=a,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return r.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return r.loadScriptNode}}),e.loadShare=c,e.loadShareSync=l,e.preloadRemote=u,Object.defineProperty(e,"registerGlobalPlugins",{enumerable:!0,get:function(){return r.registerGlobalPlugins}}),e.registerPlugins=f,e.registerRemotes=d,e.registerShared=m})(ir);const an="__mf_init____mf__virtual/ConfigCustomJavascriptSet__mf_v__runtimeInit__mf_v__.js__";let Rt=globalThis[an];if(!Rt){let e,t;const r=new Promise((n,o)=>{e=n,t=o});Rt=globalThis[an]={initPromise:r,initResolve:e,initReject:t},typeof window>"u"&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}const Ea=Rt.initResolve,er={},tr="default",rr="ConfigCustomJavascriptSet";let nr,or;async function Sa(){return nr??=sr(()=>import("./localSharedImportMap-B6r0yoWl.js"),__vite__mapDeps([0,1]),import.meta.url),nr}async function ba(){return or??=sr(()=>import("./virtualExposes-wYe_Np-4.js"),__vite__mapDeps([2,1]),import.meta.url).then(e=>e.default??e),or}async function Ta(e={},t=[]){const{usedShared:r,usedRemotes:n}=await Sa(),o=ir.init({name:rr,remotes:n,shared:r,plugins:[],shareStrategy:"version-first"});var s=er[tr];if(s||(s=er[tr]={from:rr}),!(t.indexOf(s)>=0)){t.push(s),o.initShareScopeMap("default",e),Ea(o);try{await Promise.all(await o.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(i){console.error(i)}return o}}async function Ia(e){const t=await ba();if(!(e in t))throw new Error(`Module ${e} does not exist in container.`);return t[e]().then(r=>()=>r)}export{ir as d,Ia as g,Ta as i}; diff --git a/admin/custom/customComponents.js b/admin/custom/customComponents.js index 94bbe9fd7..090713306 100644 --- a/admin/custom/customComponents.js +++ b/admin/custom/customComponents.js @@ -1 +1 @@ -import"./assets/preload-helper-BDBacUwf.js";import{g as r,i as a}from"./assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BcRVut8U.js";export{r as get,a as init}; +import"./assets/preload-helper-BDBacUwf.js";import{g as r,i as a}from"./assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-CocegHDZ.js";export{r as get,a as init}; diff --git a/admin/i18n/de.json b/admin/i18n/de.json index 578ba86d1..25f5fff25 100644 --- a/admin/i18n/de.json +++ b/admin/i18n/de.json @@ -71,6 +71,14 @@ "Custom API key help": "Nur nötig wenn der Anbieter Authentifizierung erfordert", "AI settings": "KI-Einstellungen", "AI settings description": "Wenn Sie die KI-Codegenerierung nutzen möchten, können Sie hier die API-Schlüssel für die entsprechenden Anbieter hinterlegen. Es wird nur der Schlüssel für den verwendeten Anbieter benötigt.", + "Credentials type": "Anmeldedaten-Typ", + "System credentials": "Systemanmeldedaten", + "Manual": "Manuell", + "ChatGPT credential": "ChatGPT-Anmeldedaten", + "Anthropic credential": "Anthropic-Anmeldedaten", + "Gemini credential": "Gemini-Anmeldedaten", + "DeepSeek credential": "DeepSeek-Anmeldedaten", + "Custom API credential": "Benutzerdefinierte API-Anmeldedaten", "ChatGPT API key": "ChatGPT API-Schlüssel", "Anthropic API key": "Anthropic API-Schlüssel", "Gemini API key": "Gemini API-Schlüssel", diff --git a/admin/i18n/en.json b/admin/i18n/en.json index 91a567213..9449a5131 100644 --- a/admin/i18n/en.json +++ b/admin/i18n/en.json @@ -71,6 +71,14 @@ "Custom API key help": "Only needed if your provider requires authentication", "AI settings": "AI settings", "AI settings description": "If you want to use AI code generation, you can define API keys for the corresponding providers here. Only the key for the provider you use is required.", + "Credentials type": "Credentials type", + "System credentials": "System credentials", + "Manual": "Manual", + "ChatGPT credential": "ChatGPT credential", + "Anthropic credential": "Anthropic credential", + "Gemini credential": "Gemini credential", + "DeepSeek credential": "DeepSeek credential", + "Custom API credential": "Custom API credential", "ChatGPT API key": "ChatGPT API key", "Anthropic API key": "Anthropic API key", "Gemini API key": "Gemini API key", diff --git a/admin/jsonConfig.json b/admin/jsonConfig.json index 9bf2546c6..746f5762f 100644 --- a/admin/jsonConfig.json +++ b/admin/jsonConfig.json @@ -152,26 +152,37 @@ { "label": "Manual", "value": "manual" } ], "label": "Credentials type", - "hidden": "!data.useCredentials", - "default": "manual" + "default": "manual", + "xs": 12, + "sm": 6 }, "gptKey": { "newLine": true, "type": "password", "label": "ChatGPT API key", + "hidden": "data.credentialType === 'manager'", "xs": 12, "sm": 9, "help": "platform.openai.com", "helpLink": "https://platform.openai.com/api-keys" }, + "credentialIdGptKey": { + "newLine": true, + "type": "credential", + "credentialType": "ai", + "label": "ChatGPT credential", + "hidden": "data.credentialType !== 'manager'", + "xs": 12, + "sm": 9 + }, "_testOpenAi": { "type": "sendTo", "label": "Test OpenAI", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDUuNTggMiAxMGMwIDIuMjQgMS4xMiA0LjI3IDIuOTMgNS43Mkw0IDIwbDQuMzUtMi4xOEM5LjUgMTguMjcgMTAuNzIgMTguNSAxMiAxOC41YzUuNTIgMCAxMC0zLjU4IDEwLThTMTcuNTIgMiAxMiAyem0tMSAxMUg4di0yaDNWOGgydjNoM3YyaC0zdjNoLTJ2LTN6Ii8+PC9zdmc+", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.gptKey}\", \"provider\": \"openai\", \"credentialType\": \"${data.credentialType}\", \"credentialIdGptKey\": \"${data.credentialIdGptKey}\"}", + "jsonData": "{\"apiKey\": \"${data.gptKey}\", \"provider\": \"openai\", \"credentialType\": \"${data.credentialType}\", \"credentialId\": \"${data.credentialIdGptKey}\"}", "variant": "outlined", - "disabled": "!data.gptKey", + "disabled": "data.credentialType === 'manager' ? !data.credentialIdGptKey : !data.gptKey", "xs": 12, "sm": 3, "showProcess": true @@ -180,19 +191,29 @@ "newLine": true, "type": "password", "label": "Anthropic API key", + "hidden": "data.credentialType === 'manager'", "xs": 12, "sm": 9, "help": "console.anthropic.com", "helpLink": "https://console.anthropic.com/settings/keys" }, + "credentialIdClaudeKey": { + "newLine": true, + "type": "credential", + "credentialType": "ai", + "label": "Anthropic credential", + "hidden": "data.credentialType !== 'manager'", + "xs": 12, + "sm": 9 + }, "_testClaude": { "type": "sendTo", "label": "Test Anthropic", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMiAyTDMgMjBoNGwxLjUtNGg3bDEuNSA0aDRMMTIgMnptMCA2bDIuNSA3aC01TDEyIDh6Ii8+PC9zdmc+", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.claudeKey}\", \"provider\": \"anthropic\", \"credentialType\": \"${data.credentialType}\", \"credentialIdClaudeKey\": \"${data.credentialIdClaudeKey}\"}", + "jsonData": "{\"apiKey\": \"${data.claudeKey}\", \"provider\": \"anthropic\", \"credentialType\": \"${data.credentialType}\", \"credentialId\": \"${data.credentialIdClaudeKey}\"}", "variant": "outlined", - "disabled": "!data.claudeKey", + "disabled": "data.credentialType === 'manager' ? !data.credentialIdClaudeKey : !data.claudeKey", "xs": 12, "sm": 3, "showProcess": true @@ -201,19 +222,29 @@ "newLine": true, "type": "password", "label": "Gemini API key", + "hidden": "data.credentialType === 'manager'", "xs": 12, "sm": 9, "help": "aistudio.google.com", "helpLink": "https://aistudio.google.com/apikey" }, + "credentialIdGeminiKey": { + "newLine": true, + "type": "credential", + "credentialType": "ai", + "label": "Gemini credential", + "hidden": "data.credentialType !== 'manager'", + "xs": 12, + "sm": 9 + }, "_testGemini": { "type": "sendTo", "label": "Test Gemini", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMiAxbDMgN2g3bC01LjUgNC41TDE4LjUgMjAgMTIgMTUuNSA1LjUgMjBsMi03LjVMMiA4aDd6Ii8+PC9zdmc+", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.geminiKey}\", \"provider\": \"gemini\", \"credentialType\": \"${data.credentialType}\", \"credentialIdGeminiKey\": \"${data.credentialIdGeminiKey}\"}", + "jsonData": "{\"apiKey\": \"${data.geminiKey}\", \"provider\": \"gemini\", \"credentialType\": \"${data.credentialType}\", \"credentialId\": \"${data.credentialIdGeminiKey}\"}", "variant": "outlined", - "disabled": "!data.geminiKey", + "disabled": "data.credentialType === 'manager' ? !data.credentialIdGeminiKey : !data.geminiKey", "xs": 12, "sm": 3, "showProcess": true @@ -222,19 +253,29 @@ "newLine": true, "type": "password", "label": "DeepSeek API key", + "hidden": "data.credentialType === 'manager'", "xs": 12, "sm": 9, "help": "platform.deepseek.com", "helpLink": "https://platform.deepseek.com/api_keys" }, + "credentialIdDeepseekKey": { + "newLine": true, + "type": "credential", + "credentialType": "ai", + "label": "DeepSeek credential", + "hidden": "data.credentialType !== 'manager'", + "xs": 12, + "sm": 9 + }, "_testDeepseek": { "type": "sendTo", "label": "Test DeepSeek", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMCAyYTggOCAwIDAgMSA2LjMyIDEyLjkxbDQuMzkgNC4zOC0xLjQyIDEuNDItNC4zOC00LjM5QTggOCAwIDEgMSAxMCAyem0wIDJhNiA2IDAgMSAwIDAgMTIgNiA2IDAgMCAwIDAtMTJ6Ii8+PC9zdmc+", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.deepseekKey}\", \"provider\": \"deepseek\", \"credentialType\": \"${data.credentialType}\", \"credentialIdDeepseekKey\": \"${data.credentialIdDeepseekKey}\"}", + "jsonData": "{\"apiKey\": \"${data.deepseekKey}\", \"provider\": \"deepseek\", \"credentialType\": \"${data.credentialType}\", \"credentialId\": \"${data.credentialIdDeepseekKey}\"}", "variant": "outlined", - "disabled": "!data.deepseekKey", + "disabled": "data.credentialType === 'manager' ? !data.credentialIdDeepseekKey : !data.deepseekKey", "xs": 12, "sm": 3, "showProcess": true @@ -251,17 +292,26 @@ "gptBaseUrlKey": { "type": "text", "label": "Custom API key", + "hidden": "data.credentialType === 'manager'", "xs": 12, "sm": 4, "help": "Custom API key help", "placeholder": "optional" }, + "credentialIdGptBaseUrlKey": { + "type": "credential", + "credentialType": "ai", + "label": "Custom API credential", + "hidden": "data.credentialType !== 'manager'", + "xs": 12, + "sm": 4 + }, "_testCustom": { "type": "sendTo", "label": "Test Custom API", "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik00IDFoMTZ2NUg0VjF6bTEgMXYzaDE0VjJINXptLTEgNmgxNnY1SDRWOHptMSAxdjNoMTRWOUg1em0tMSA2aDE2djVINHYtNXptMSAxdjNoMTR2LTNINXptMi0xMmgydjFIN1Yzem0wIDZoMnYxSDdWOXptMCA2aDJ2MUg3di0xeiIvPjwvc3ZnPg==", "command": "testApiConnection", - "jsonData": "{\"apiKey\": \"${data.gptBaseUrlKey}\", \"baseUrl\": \"${data.gptBaseUrl}\", \"provider\": \"openai\", \"credentialType\": \"${data.credentialType}\", \"credentialIdGptBaseUrlKey\": \"${data.credentialIdGptBaseUrlKey}\"}", + "jsonData": "{\"apiKey\": \"${data.gptBaseUrlKey}\", \"baseUrl\": \"${data.gptBaseUrl}\", \"provider\": \"openai\", \"credentialType\": \"${data.credentialType}\", \"credentialId\": \"${data.credentialIdGptBaseUrlKey}\"}", "variant": "outlined", "disabled": "!data.gptBaseUrl", "xs": 12, diff --git a/admin/mf-manifest.json b/admin/mf-manifest.json index fb7a7bb4f..68ac8f099 100644 --- a/admin/mf-manifest.json +++ b/admin/mf-manifest.json @@ -1 +1 @@ -{"id":"iobroker_javascript","name":"iobroker_javascript","metaData":{"name":"iobroker_javascript","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_javascript"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_javascript","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_javascript:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Dsh1HfIY.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-BkyLyaYT.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-dN73sbyQ.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:prop-types","name":"prop-types","version":"15.8.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CVZSzCXy.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.6","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-AOxv_cZq.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]} \ No newline at end of file +{"id":"iobroker_javascript","name":"iobroker_javascript","metaData":{"name":"iobroker_javascript","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_javascript"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_javascript","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_javascript:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Dsh1HfIY.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-BkyLyaYT.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-dN73sbyQ.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:prop-types","name":"prop-types","version":"15.8.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CVZSzCXy.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.7","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Be9Zg6aF.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]} \ No newline at end of file diff --git a/admin/remoteEntry.js b/admin/remoteEntry.js index cf4dd65d7..042ea084d 100644 --- a/admin/remoteEntry.js +++ b/admin/remoteEntry.js @@ -1 +1 @@ -import"./assets/preload-helper-BDBacUwf.js";import{g as r,i as a}from"./assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DiXVqr03.js";export{r as get,a as init}; +import"./assets/preload-helper-BDBacUwf.js";import{g as r,i as a}from"./assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";export{r as get,a as init}; diff --git a/admin/tab.html b/admin/tab.html index 918bb5b98..5690bfbac 100644 --- a/admin/tab.html +++ b/admin/tab.html @@ -115,9 +115,9 @@ type="text/javascript" src="google-blockly/own/blocks_object.js" > - + - + diff --git a/build/lib/aiProviderResolver.js b/build/lib/aiProviderResolver.js index 4dab2d802..6165d1c02 100644 --- a/build/lib/aiProviderResolver.js +++ b/build/lib/aiProviderResolver.js @@ -10,7 +10,8 @@ * These functions are extracted so they can be unit-tested in isolation. */ Object.defineProperty(exports, "__esModule", { value: true }); -exports.PROVIDER_KEY_FIELD = void 0; +exports.PROVIDER_CREDENTIAL_ID_FIELD = exports.PROVIDER_KEY_FIELD = void 0; +exports.getProviderCredentialId = getProviderCredentialId; exports.resolveProviderCredentials = resolveProviderCredentials; exports.resolveTestCredentials = resolveTestCredentials; exports.listAvailableProviders = listAvailableProviders; @@ -22,6 +23,26 @@ exports.PROVIDER_KEY_FIELD = { deepseek: 'deepseekKey', custom: 'gptBaseUrlKey', }; +/** + * Maps each provider to the adapter-config field holding the ID of its credential + * in the central credential store (used in `manager` mode). + */ +exports.PROVIDER_CREDENTIAL_ID_FIELD = { + openai: 'credentialIdGptKey', + anthropic: 'credentialIdClaudeKey', + gemini: 'credentialIdGeminiKey', + deepseek: 'credentialIdDeepseekKey', + custom: 'credentialIdGptBaseUrlKey', +}; +/** + * Returns the configured credential ID (e.g. `system.credentials.anthropic`) for a provider + * in `manager` mode, or an empty string if none/unknown provider. + */ +function getProviderCredentialId(config, provider) { + const cfg = config || {}; + const field = exports.PROVIDER_CREDENTIAL_ID_FIELD[provider]; + return field ? (cfg[field] || '').toString().trim() : ''; +} /** * Resolve API key and base URL for a provider from adapter config. * Optional `messageBaseUrl` takes precedence over the stored `gptBaseUrl` @@ -60,18 +81,24 @@ function resolveTestCredentials(config, provider, messageApiKey, messageBaseUrl) function listAvailableProviders(config) { const cfg = config || {}; const providers = []; - if ((cfg.gptKey || '').trim()) { + const manager = cfg.credentialType === 'manager'; + // A key-based provider is "available" if it has a stored key (manual mode) + // or a selected credential ID (manager mode). + const has = (provider, key) => manager ? !!getProviderCredentialId(cfg, provider) : !!(key || '').trim(); + if (has('openai', cfg.gptKey)) { providers.push({ provider: 'openai' }); } - if ((cfg.claudeKey || '').trim()) { + if (has('anthropic', cfg.claudeKey)) { providers.push({ provider: 'anthropic' }); } - if ((cfg.geminiKey || '').trim()) { + if (has('gemini', cfg.geminiKey)) { providers.push({ provider: 'gemini' }); } - if ((cfg.deepseekKey || '').trim()) { + if (has('deepseek', cfg.deepseekKey)) { providers.push({ provider: 'deepseek' }); } + // The custom/OpenAI-compatible endpoint is identified by its base URL (the key is optional, + // e.g. local Ollama), so its availability does not depend on the credential mode. if ((cfg.gptBaseUrl || '').trim()) { providers.push({ provider: 'custom', baseUrl: cfg.gptBaseUrl }); } diff --git a/build/lib/aiProviderResolver.js.map b/build/lib/aiProviderResolver.js.map index 63c6dce08..4c018692e 100644 --- a/build/lib/aiProviderResolver.js.map +++ b/build/lib/aiProviderResolver.js.map @@ -1 +1 @@ -{"version":3,"file":"aiProviderResolver.js","sourceRoot":"","sources":["../../src/lib/aiProviderResolver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AA6BH,gEAgBC;AAMD,wDAYC;AAOD,wDAqBC;AA7ED,0EAA0E;AAC7D,QAAA,kBAAkB,GAA4C;IACvE,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,eAAe;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,0BAA0B,CACtC,MAAwC,EACxC,QAAgB,EAChB,cAAuB;IAEvB,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,0BAAkB,CAAC,QAAsB,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,2FAA2F;IAC3F,kGAAkG;IAClG,4FAA4F;IAC5F,MAAM,OAAO,GACT,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ;QAC1C,CAAC,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAC5D,CAAC,CAAC,EAAE,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAClC,MAAwC,EACxC,QAAgB,EAChB,aAAsB,EACtB,cAAuB;IAEvB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5D,OAAO;QACH,MAAM,EAAE,WAAW,IAAI,QAAQ,CAAC,MAAM;QACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC5B,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAClC,MAAwC;IAExC,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;IACzB,MAAM,SAAS,GAAiD,EAAE,CAAC;IACnE,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC","sourcesContent":["/**\n * Helpers for resolving AI provider credentials in sendTo handlers.\n *\n * Keys are stored as `encryptedNative` + `protectedNative` in io-package.json —\n * they are never sent from the frontend. The backend looks them up in `this.config`\n * based on the `provider` name sent along with each `chatCompletion` or\n * `testApiConnection` request.\n *\n * These functions are extracted so they can be unit-tested in isolation.\n */\n\n/** Configuration subset that carries AI credentials. */\nexport interface AiConfigSlice {\n gptKey?: string;\n gptBaseUrl?: string;\n gptBaseUrlKey?: string;\n claudeKey?: string;\n geminiKey?: string;\n deepseekKey?: string;\n}\n\nexport type AiProvider = 'openai' | 'anthropic' | 'gemini' | 'deepseek' | 'custom';\n\n/** Maps each provider to the adapter-config field holding its API key. */\nexport const PROVIDER_KEY_FIELD: Record = {\n openai: 'gptKey',\n anthropic: 'claudeKey',\n gemini: 'geminiKey',\n deepseek: 'deepseekKey',\n custom: 'gptBaseUrlKey',\n};\n\n/**\n * Resolve API key and base URL for a provider from adapter config.\n * Optional `messageBaseUrl` takes precedence over the stored `gptBaseUrl`\n * (used by the settings-dialog Test button where the user's form value\n * should win over the persisted value).\n */\nexport function resolveProviderCredentials(\n config: AiConfigSlice | undefined | null,\n provider: string,\n messageBaseUrl?: string,\n): { apiKey: string; baseUrl: string } {\n const cfg = config || {};\n const keyField = PROVIDER_KEY_FIELD[provider as AiProvider];\n const apiKey = keyField ? (cfg[keyField] || '').toString().trim() : '';\n // baseUrl only applies to openai-compatible providers (custom / openai endpoint override).\n // An empty/whitespace messageBaseUrl counts as \"not provided\" and falls back to the stored value,\n // so the frontend can safely send `baseUrl: ''` without overriding a configured custom URL.\n const baseUrl =\n provider === 'custom' || provider === 'openai'\n ? (messageBaseUrl || cfg.gptBaseUrl || '').toString().trim()\n : '';\n return { apiKey, baseUrl };\n}\n\n/**\n * For the testApiConnection sendTo command: if the caller supplied an apiKey\n * (settings-dialog form value), use it; otherwise fall back to the stored key.\n */\nexport function resolveTestCredentials(\n config: AiConfigSlice | undefined | null,\n provider: string,\n messageApiKey?: string,\n messageBaseUrl?: string,\n): { apiKey: string; baseUrl: string } {\n const fallback = resolveProviderCredentials(config, provider, messageBaseUrl);\n const explicitKey = (messageApiKey || '').toString().trim();\n return {\n apiKey: explicitKey || fallback.apiKey,\n baseUrl: fallback.baseUrl,\n };\n}\n\n/**\n * List of providers that have credentials configured in this.config.\n * Used by the `getAvailableAiProviders` sendTo command so the frontend\n * knows which provider icons/models to show without ever seeing a key.\n */\nexport function listAvailableProviders(\n config: AiConfigSlice | undefined | null,\n): { provider: AiProvider; baseUrl?: string }[] {\n const cfg = config || {};\n const providers: { provider: AiProvider; baseUrl?: string }[] = [];\n if ((cfg.gptKey || '').trim()) {\n providers.push({ provider: 'openai' });\n }\n if ((cfg.claudeKey || '').trim()) {\n providers.push({ provider: 'anthropic' });\n }\n if ((cfg.geminiKey || '').trim()) {\n providers.push({ provider: 'gemini' });\n }\n if ((cfg.deepseekKey || '').trim()) {\n providers.push({ provider: 'deepseek' });\n }\n if ((cfg.gptBaseUrl || '').trim()) {\n providers.push({ provider: 'custom', baseUrl: cfg.gptBaseUrl });\n }\n return providers;\n}\n"]} \ No newline at end of file +{"version":3,"file":"aiProviderResolver.js","sourceRoot":"","sources":["../../src/lib/aiProviderResolver.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Helpers for resolving AI provider credentials in sendTo handlers.\n *\n * Keys are stored as `encryptedNative` + `protectedNative` in io-package.json —\n * they are never sent from the frontend. The backend looks them up in `this.config`\n * based on the `provider` name sent along with each `chatCompletion` or\n * `testApiConnection` request.\n *\n * These functions are extracted so they can be unit-tested in isolation.\n */\n\n/** Configuration subset that carries AI credentials. */\nexport interface AiConfigSlice {\n gptKey?: string;\n gptBaseUrl?: string;\n gptBaseUrlKey?: string;\n claudeKey?: string;\n geminiKey?: string;\n deepseekKey?: string;\n /**\n * Where the API keys come from:\n * - `manual`: keys are stored directly in the adapter config (encryptedNative)\n * - `manager`: the config only stores the ID of a credential in the central\n * ioBroker credential store (`system.credentials.*`), resolved at runtime\n */\n credentialType?: 'manual' | 'manager';\n credentialIdGptKey?: string;\n credentialIdClaudeKey?: string;\n credentialIdGeminiKey?: string;\n credentialIdDeepseekKey?: string;\n credentialIdGptBaseUrlKey?: string;\n}\n\nexport type AiProvider = 'openai' | 'anthropic' | 'gemini' | 'deepseek' | 'custom';\n\n/** Maps each provider to the adapter-config field holding its API key. */\nexport const PROVIDER_KEY_FIELD: Record = {\n openai: 'gptKey',\n anthropic: 'claudeKey',\n gemini: 'geminiKey',\n deepseek: 'deepseekKey',\n custom: 'gptBaseUrlKey',\n};\n\n/**\n * Maps each provider to the adapter-config field holding the ID of its credential\n * in the central credential store (used in `manager` mode).\n */\nexport const PROVIDER_CREDENTIAL_ID_FIELD: Record = {\n openai: 'credentialIdGptKey',\n anthropic: 'credentialIdClaudeKey',\n gemini: 'credentialIdGeminiKey',\n deepseek: 'credentialIdDeepseekKey',\n custom: 'credentialIdGptBaseUrlKey',\n};\n\n/**\n * Returns the configured credential ID (e.g. `system.credentials.anthropic`) for a provider\n * in `manager` mode, or an empty string if none/unknown provider.\n */\nexport function getProviderCredentialId(config: AiConfigSlice | undefined | null, provider: string): string {\n const cfg = config || {};\n const field = PROVIDER_CREDENTIAL_ID_FIELD[provider as AiProvider];\n return field ? (cfg[field] || '').toString().trim() : '';\n}\n\n/**\n * Resolve API key and base URL for a provider from adapter config.\n * Optional `messageBaseUrl` takes precedence over the stored `gptBaseUrl`\n * (used by the settings-dialog Test button where the user's form value\n * should win over the persisted value).\n */\nexport function resolveProviderCredentials(\n config: AiConfigSlice | undefined | null,\n provider: string,\n messageBaseUrl?: string,\n): { apiKey: string; baseUrl: string } {\n const cfg = config || {};\n const keyField = PROVIDER_KEY_FIELD[provider as AiProvider];\n const apiKey = keyField ? (cfg[keyField] || '').toString().trim() : '';\n // baseUrl only applies to openai-compatible providers (custom / openai endpoint override).\n // An empty/whitespace messageBaseUrl counts as \"not provided\" and falls back to the stored value,\n // so the frontend can safely send `baseUrl: ''` without overriding a configured custom URL.\n const baseUrl =\n provider === 'custom' || provider === 'openai'\n ? (messageBaseUrl || cfg.gptBaseUrl || '').toString().trim()\n : '';\n return { apiKey, baseUrl };\n}\n\n/**\n * For the testApiConnection sendTo command: if the caller supplied an apiKey\n * (settings-dialog form value), use it; otherwise fall back to the stored key.\n */\nexport function resolveTestCredentials(\n config: AiConfigSlice | undefined | null,\n provider: string,\n messageApiKey?: string,\n messageBaseUrl?: string,\n): { apiKey: string; baseUrl: string } {\n const fallback = resolveProviderCredentials(config, provider, messageBaseUrl);\n const explicitKey = (messageApiKey || '').toString().trim();\n return {\n apiKey: explicitKey || fallback.apiKey,\n baseUrl: fallback.baseUrl,\n };\n}\n\n/**\n * List of providers that have credentials configured in this.config.\n * Used by the `getAvailableAiProviders` sendTo command so the frontend\n * knows which provider icons/models to show without ever seeing a key.\n */\nexport function listAvailableProviders(\n config: AiConfigSlice | undefined | null,\n): { provider: AiProvider; baseUrl?: string }[] {\n const cfg = config || {};\n const providers: { provider: AiProvider; baseUrl?: string }[] = [];\n const manager = cfg.credentialType === 'manager';\n // A key-based provider is \"available\" if it has a stored key (manual mode)\n // or a selected credential ID (manager mode).\n const has = (provider: AiProvider, key: string | undefined | null): boolean =>\n manager ? !!getProviderCredentialId(cfg, provider) : !!(key || '').trim();\n if (has('openai', cfg.gptKey)) {\n providers.push({ provider: 'openai' });\n }\n if (has('anthropic', cfg.claudeKey)) {\n providers.push({ provider: 'anthropic' });\n }\n if (has('gemini', cfg.geminiKey)) {\n providers.push({ provider: 'gemini' });\n }\n if (has('deepseek', cfg.deepseekKey)) {\n providers.push({ provider: 'deepseek' });\n }\n // The custom/OpenAI-compatible endpoint is identified by its base URL (the key is optional,\n // e.g. local Ollama), so its availability does not depend on the credential mode.\n if ((cfg.gptBaseUrl || '').trim()) {\n providers.push({ provider: 'custom', baseUrl: cfg.gptBaseUrl });\n }\n return providers;\n}\n"]} \ No newline at end of file diff --git a/build/lib/sandbox.js.map b/build/lib/sandbox.js.map index edb3e6e2c..f558512ce 100644 --- a/build/lib/sandbox.js.map +++ b/build/lib/sandbox.js.map @@ -1 +1 @@ -{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/lib/sandbox.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChildProcess, ExecOptions } from 'node:child_process';\nimport * as jsonataMod from 'jsonata';\nimport type { SendMailOptions } from 'nodemailer';\nimport type { AxiosError, AxiosHeaderValue, AxiosResponse, ResponseType } from 'axios';\n\nimport { commonTools } from '@iobroker/adapter-core';\n\nimport { isObject, isArray, promisify, getHttpRequestConfig } from './tools';\nimport type {\n JavaScriptAdapterConfig,\n AstroRule,\n ChangeType,\n CommonAlias,\n FileSubscriptionResult,\n IobSchedule,\n JavascriptContext,\n JsScript,\n LogMessage,\n Pattern,\n PushoverOptions,\n SandboxType,\n Selector,\n SubscribeObject,\n SubscriptionResult,\n TimeRule,\n} from '../types';\nimport * as constsMod from './consts';\nimport * as wordsMod from './words';\nimport * as eventObjMod from './eventObj';\nimport {\n patternCompareFunctions as patternCompareFunctionsMod,\n type PatternEventCompareFunction,\n} from './patternCompareFunctions';\nimport type { ScheduleName, SchedulerRule } from './scheduler';\nimport type { EventObj } from './eventObj';\nimport type { AstroEvent } from './consts';\n\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nconst pattern2RegEx = commonTools.pattern2RegEx;\n\n// Pre-compiled RegExp constants for formatTimeDiff – avoids recompiling on every call\nconst FTD_TEST_D = /(?();\n\n/** Monotonically increasing handler-ID counter – avoids Date.now()+random collisions */\nlet _handlerIdCounter = 1;\n\nexport function sandBox(\n script: JsScript,\n name: string,\n verbose: boolean | undefined,\n debug: boolean | undefined,\n context: JavascriptContext,\n): SandboxType {\n const consts = constsMod;\n const words = wordsMod;\n const eventObj = eventObjMod;\n const patternCompareFunctions = patternCompareFunctionsMod;\n const jsonata = jsonataMod.default;\n\n const adapter: ioBroker.Adapter = context.adapter;\n const mods = context.mods;\n const states = context.states;\n const objects = context.objects;\n const timers = context.timers;\n const enums = context.enums;\n const debugMode = context.debugMode;\n\n // eslint-disable-next-line prefer-const\n let sandbox: SandboxType;\n\n function errorInCallback(e: Error): void {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'errorInCallback',\n });\n context.logError(name, 'Error in callback:', e);\n context.debugMode && console.log(`error$$${name}$$Exception in callback: ${e}`, Date.now());\n }\n\n function subscribePattern(script: JsScript, pattern: string): void {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (!script.subscribes[pattern]) {\n script.subscribes[pattern] = 1;\n } else {\n script.subscribes[pattern]++;\n }\n\n if (!context.subscribedPatterns[pattern]) {\n context.subscribedPatterns[pattern] = 1;\n\n if (sandbox.verbose) {\n sandbox.log(`subscribePattern(pattern=${pattern})`, 'info');\n }\n adapter.subscribeForeignStates(pattern);\n\n // request current value to deliver old value on change.\n if (typeof pattern === 'string' && !pattern.includes('*')) {\n void adapter.getForeignState(pattern, (_err, state) => {\n if (state) {\n states[pattern] = state;\n }\n });\n } else {\n // IO-3: Object.assign instead of Object.keys().forEach() – no temporary keys array\n adapter.getForeignStates(pattern, (_err, _states) => _states && Object.assign(states, _states));\n }\n } else {\n context.subscribedPatterns[pattern]++;\n }\n }\n }\n\n function unsubscribePattern(script: JsScript, pattern: string): void {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (script.subscribes[pattern]) {\n script.subscribes[pattern]--;\n if (!script.subscribes[pattern]) {\n delete script.subscribes[pattern];\n }\n }\n\n if (context.subscribedPatterns[pattern]) {\n context.subscribedPatterns[pattern]--;\n if (!context.subscribedPatterns[pattern]) {\n adapter.unsubscribeForeignStates(pattern);\n delete context.subscribedPatterns[pattern];\n\n // if the pattern was regex or with * some states will stay in RAM, but it is OK.\n if (states[pattern]) {\n delete states[pattern];\n }\n }\n }\n }\n }\n\n function subscribeFile(script: JsScript, id: string, fileNamePattern: string): void {\n const key = `${id}$%$${fileNamePattern}`;\n if (!script.subscribesFile[key]) {\n script.subscribesFile[key] = 1;\n } else {\n script.subscribesFile[key]++;\n }\n\n if (!context.subscribedPatternsFile[key]) {\n context.subscribedPatternsFile[key] = 1;\n void adapter.subscribeForeignFiles(id, fileNamePattern);\n } else {\n context.subscribedPatternsFile[key]++;\n }\n }\n\n function unsubscribeFile(script: JsScript, id: string, fileNamePattern: string): void {\n const key = `${id}$%$${fileNamePattern}`;\n if (script.subscribesFile[key]) {\n script.subscribesFile[key]--;\n if (!script.subscribesFile[key]) {\n delete script.subscribesFile[key];\n }\n }\n\n if (context.subscribedPatternsFile[key]) {\n context.subscribedPatternsFile[key]--;\n if (!context.subscribedPatternsFile[key]) {\n void adapter.unsubscribeForeignFiles(id, fileNamePattern);\n delete context.subscribedPatternsFile[key];\n }\n }\n }\n\n /** Returns true when patId is a plain exact state-ID (no wildcards, no RegExp notation). */\n function _isExactId(patId: unknown): patId is string {\n return (\n !!patId &&\n typeof patId === 'string' &&\n !patId.includes('*') &&\n !patId.includes('?') &&\n !patId.startsWith('/')\n );\n }\n\n /** Removes a subscription from the O(1) dispatch index (subscriptionsMap / subscriptionsWildcard). */\n function _removeFromDispatchIndex(ctx: JavascriptContext, sub: SubscriptionResult): void {\n const patId = sub.pattern?.id;\n if (_isExactId(patId)) {\n const bucket = ctx.subscriptionsMap.get(patId);\n if (bucket) {\n const pos = bucket.indexOf(sub);\n if (pos !== -1) {\n bucket.splice(pos, 1);\n }\n if (bucket.length === 0) {\n ctx.subscriptionsMap.delete(patId);\n }\n }\n } else {\n const wPos = ctx.subscriptionsWildcard.indexOf(sub);\n if (wPos !== -1) {\n ctx.subscriptionsWildcard.splice(wPos, 1);\n }\n }\n }\n\n function getPatternCompareFunctions(pattern: Pattern): PatternEventCompareFunction[] & { logic?: 'and' | 'or' } {\n let func: PatternEventCompareFunction;\n const functions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' } = [];\n functions.logic = pattern.logic || 'and';\n\n for (const key in pattern) {\n if (!Object.prototype.hasOwnProperty.call(pattern, key)) {\n continue;\n }\n if (key === 'logic') {\n continue;\n }\n if (key === 'change' && pattern.change === 'any') {\n continue;\n }\n const _func: (pattern: Pattern) => PatternEventCompareFunction = (\n patternCompareFunctions as unknown as Record PatternEventCompareFunction>\n )[key];\n if (!_func) {\n continue;\n }\n func = _func(pattern);\n if (typeof func !== 'function') {\n continue;\n }\n functions.push(func);\n }\n return functions;\n }\n\n /**\n * Splits a selector string into attribute and value\n *\n * @param selector The selector string to split\n */\n function splitSelectorString(selector: string): Selector {\n const parts = selector.split('=', 2);\n if (parts[1] && parts[1][0] === '\"') {\n parts[1] = parts[1].substring(1);\n const len = parts[1].length;\n if (parts[1] && parts[1][len - 1] === '\"') {\n parts[1] = parts[1].substring(0, len - 1);\n }\n }\n if (parts[1] && parts[1][0] === \"'\") {\n parts[1] = parts[1].substring(1);\n const len = parts[1].length;\n if (parts[1] && parts[1][len - 1] === \"'\") {\n parts[1] = parts[1].substring(0, len - 1);\n }\n }\n\n if (parts[1]) {\n parts[1] = parts[1].trim();\n }\n parts[0] = parts[0].trim();\n\n return { attr: parts[0], value: parts[1] };\n }\n\n /**\n * Transforms a selector string with wildcards into a regular expression\n *\n * @param str The selector string to transform into a regular expression\n */\n function selectorStringToRegExp(str: string): RegExp {\n const cached = _selectorRegExpCache.get(str);\n if (cached) {\n return cached;\n }\n const startsWithWildcard = str[0] === '*';\n const endsWithWildcard = str[str.length - 1] === '*';\n // eslint-disable-next-line no-useless-escape\n const escaped = str.replace(/[-\\/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n const re = new RegExp((startsWithWildcard ? '' : '^') + escaped + (endsWithWildcard ? '' : '$'));\n\n // FIFO eviction: drop the oldest entry once the cache exceeds its limit\n if (_selectorRegExpCache.size >= _SELECTOR_REGEXP_CACHE_MAX) {\n const oldestKey = _selectorRegExpCache.keys().next().value;\n if (oldestKey !== undefined) {\n _selectorRegExpCache.delete(oldestKey);\n }\n }\n\n _selectorRegExpCache.set(str, re);\n return re;\n }\n\n /**\n * Adds a regular expression for selectors targeting the state ID\n *\n * @param selector The selector to apply the transform to\n */\n function addRegExpToIdAttrSelectors(selector: Selector): Selector {\n if ((selector.attr === 'id' || selector.attr === 'state.id') && !selector.idRegExp && selector.value) {\n return {\n attr: selector.attr,\n value: selector.value,\n idRegExp: selectorStringToRegExp(selector.value),\n };\n }\n return selector;\n }\n\n /**\n * Tests if a value loosely equals (==) the reference string.\n * In contrast to the equality operator, this treats true == \"true\" as well\n * so we can test common and native attributes for boolean values\n *\n * @param value The value to compare with the reference\n * @param reference The reference to compare the value to\n */\n function looselyEqualsString(value: string | number | boolean | undefined, reference: string): boolean {\n // For booleans, compare the string representation\n // For other types do a loose comparison\n return typeof value === 'boolean'\n ? (value && reference === 'true') || (!value && reference === 'false')\n : value == reference;\n }\n\n /**\n * Returns the `common.type` for a given variable\n */\n function getCommonTypeOf(value: any): ioBroker.CommonType {\n return isArray(value) ? 'array' : isObject(value) ? 'object' : (typeof value as ioBroker.CommonType);\n }\n\n /**\n * Returns if an id is in an allowed namespace for automatic object creations\n *\n * @param id id to check\n */\n function validIdForAutomaticFolderCreation(id: string): boolean {\n return id.startsWith('javascript.') || id.startsWith('0_userdata.0.') || id.startsWith('alias.0.');\n }\n\n /**\n * Iterate through object structure to create missing folder objects\n */\n async function ensureObjectStructure(id: string): Promise {\n if (!validIdForAutomaticFolderCreation(id)) {\n return;\n }\n if (context.folderCreationVerifiedObjects[id] === true) {\n return;\n }\n const idArr = id.split('.');\n idArr.pop(); // the last is created as an object in any way\n if (idArr.length < 3) {\n return; // Nothing to do\n }\n // We just create sublevel projects\n let idToCheck = idArr.splice(0, 2).join('.');\n\n context.folderCreationVerifiedObjects[id] = true;\n for (const part of idArr) {\n idToCheck += `.${part}`;\n if (context.folderCreationVerifiedObjects[idToCheck] === true || objects[idToCheck]) {\n continue;\n }\n context.folderCreationVerifiedObjects[idToCheck] = true;\n let obj: ioBroker.Object | null | undefined;\n try {\n obj = await adapter.getForeignObjectAsync(idToCheck);\n } catch {\n // ignore\n }\n if (!obj?.common) {\n sandbox.log(`Create folder object for ${idToCheck}`, 'debug');\n try {\n await adapter.setForeignObjectAsync(idToCheck, {\n _id: idToCheck,\n type: 'folder',\n common: {\n name: part,\n },\n native: {\n autocreated: 'by automatic ensure logic',\n },\n } as ioBroker.FolderObject);\n } catch (err: any) {\n sandbox.log(`Could not automatically create folder object ${idToCheck}: ${err.message}`, 'info');\n }\n } else {\n //sandbox.log(` already existing \"${idToCheck}\": ${JSON.stringify(obj)}`, 'debug');\n }\n }\n }\n\n function setStateHelper(\n sandbox: SandboxType,\n isCreate: boolean,\n isChanged: boolean,\n id: string,\n state: null | ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | 'true' | 'false' | undefined | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void,\n ): void {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n\n let stateNotNull: ioBroker.SettableState | ioBroker.StateValue;\n\n if (isAck === true || isAck === false || isAck === 'true' || isAck === 'false') {\n if (state && typeof state === 'object' && state.val !== undefined) {\n stateNotNull = state;\n // we assume that we were given a state object if\n // state is an object that contains a `val` property\n if (!Object.prototype.hasOwnProperty.call(state, 'ack')) {\n stateNotNull.ack = isAck === true || isAck === 'true';\n }\n } else if (state === null) {\n stateNotNull = { val: null, ack: isAck === true || isAck === 'true' };\n } else {\n // otherwise, assume that the given state is the value to be set\n stateNotNull = { val: state as ioBroker.StateValue, ack: isAck === true || isAck === 'true' };\n }\n } else if (state === null) {\n stateNotNull = { val: null };\n } else {\n stateNotNull = state;\n }\n\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (isCreate) {\n if (id.match(/^javascript\\.\\d+\\.scriptEnabled/)) {\n sandbox.log(\n `Own states (${id}) should not be used in javascript.X.scriptEnabled.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n } else if (id.match(/^javascript\\.\\d+\\.scriptProblem/)) {\n sandbox.log(\n `Own states (${id}) should not be used in javascript.X.scriptProblem.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n }\n }\n\n const common = objects[id] ? objects[id].common : null;\n if (common?.type && common.type !== 'mixed' && common.type !== 'json') {\n // Find out which type the value has\n let actualCommonType: ioBroker.CommonType | undefined;\n if (typeof stateNotNull === 'object') {\n if (stateNotNull && stateNotNull.val !== undefined && stateNotNull.val !== null) {\n actualCommonType = getCommonTypeOf(stateNotNull.val);\n }\n } else if (stateNotNull !== null && stateNotNull !== undefined) {\n actualCommonType = getCommonTypeOf(stateNotNull);\n }\n // If this is not the expected one, issue a warning\n if (actualCommonType && actualCommonType !== common.type) {\n context.logWithLineInfo(\n `You are assigning a ${actualCommonType} to the state \"${id}\" which expects a ${common.type}. ` +\n `Please fix your code to use a ${common.type} or change the state type to ${actualCommonType}. ` +\n `This warning might become an error in future versions.`,\n );\n }\n\n if (actualCommonType === 'array' || actualCommonType === 'object') {\n try {\n if (typeof stateNotNull === 'object' && typeof stateNotNull.val !== 'undefined') {\n stateNotNull.val = JSON.stringify(stateNotNull.val);\n } else {\n stateNotNull = JSON.stringify(stateNotNull);\n }\n } catch (err: any) {\n context.logWithLineInfo(\n `Could not stringify value for type ${actualCommonType} and id ${id}: ${err.message}`,\n );\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error(\n `Could not stringify value for type ${actualCommonType} and id ${id}: ${err.message}`,\n ),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n }\n }\n }\n // Check min and max of value\n if (typeof stateNotNull === 'object') {\n if (common && typeof stateNotNull.val === 'number') {\n const num: number = stateNotNull.val;\n if (common.min !== undefined && num < common.min) {\n stateNotNull.val = common.min;\n } else if (common.max !== undefined && num > common.max) {\n stateNotNull.val = common.max;\n }\n }\n } else if (common && typeof stateNotNull === 'number') {\n const num: number = stateNotNull;\n if (common.min !== undefined && num < common.min) {\n stateNotNull = common.min;\n }\n if (common.max !== undefined && num > common.max) {\n stateNotNull = common.max;\n }\n }\n\n let stateAsObject: ioBroker.State;\n // modify state here, to make it available in callback\n if (\n stateNotNull === null ||\n typeof stateNotNull !== 'object' ||\n (stateNotNull as ioBroker.SettableState).val === undefined\n ) {\n stateAsObject = context.prepareStateObject(id, {\n val: stateNotNull as ioBroker.StateValue,\n ack: isAck === true || isAck === 'true',\n });\n } else {\n stateAsObject = context.prepareStateObject(id, stateNotNull as ioBroker.SettableState);\n }\n\n // set as comment: from which script this state was set.\n stateAsObject.c = sandbox.scriptName;\n\n if (objects[id]) {\n script.setStatePerMinuteCounter++;\n if (sandbox.verbose) {\n sandbox.log(`setForeignState(id=${id}, state=${JSON.stringify(stateAsObject)})`, 'info');\n }\n\n if (debug) {\n sandbox.log(\n `setForeignState(id=${id}, state=${JSON.stringify(stateAsObject)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n } else {\n if (!(adapter.config as JavaScriptAdapterConfig).subscribe) {\n // store actual state to make possible to process value in callback\n // risk that there will be an error on setState is very low,\n // but we will not store new state if the setStateChanged is called\n if (!isChanged) {\n context.interimStateValues[id] = stateAsObject;\n }\n }\n const errHandler = (err: Error | null | undefined, funcId: string): void => {\n err && sandbox.log(`${funcId}: ${err}`, 'error');\n // If adapter holds all states\n if (err && !(adapter.config as JavaScriptAdapterConfig).subscribe) {\n delete context.interimStateValues[id];\n }\n\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n };\n if (isChanged) {\n if (!(adapter.config as JavaScriptAdapterConfig).subscribe && context.interimStateValues[id]) {\n // if the state is changed, we will compare it with interimStateValues\n const oldState = context.interimStateValues[id];\n // IO-1: for…in instead of Object.keys().filter().every() – no temporary array per call\n let stateHasChanged = false;\n for (const attr in stateAsObject) {\n if (attr === 'ts') {\n continue;\n }\n if ((stateAsObject as Record)[attr] === undefined) {\n continue;\n }\n if (\n (stateAsObject as Record)[attr] !== (oldState as Record)[attr]\n ) {\n stateHasChanged = true;\n break;\n }\n }\n if (stateHasChanged) {\n // state is changed for sure, and we will call setForeignState\n // and store new state to interimStateValues\n context.interimStateValues[id] = stateAsObject;\n adapter.setForeignState(id, stateAsObject, err => errHandler(err, 'setForeignState'));\n } else {\n // otherwise - do nothing as we have cached state, except callback\n errHandler(null, 'setForeignStateCached');\n }\n } else {\n // adapter doesn't hold all states, or it has not cached then we will simply call setForeignStateChanged\n adapter.setForeignStateChanged(id, { ...stateAsObject, ts: undefined }, err =>\n errHandler(err, 'setForeignStateChanged'),\n );\n }\n } else {\n adapter.setForeignState(id, stateAsObject, err => errHandler(err, 'setForeignState'));\n }\n }\n } else {\n context.logWithLineInfo(`State \"${id}\" not found`);\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox, new Error(`State \"${id}\" not found`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n }\n }\n\n sandbox = {\n mods,\n _id: script._id,\n // @deprecated use scriptName\n name,\n scriptName: name,\n instance: adapter.instance || 0,\n defaultDataDir: context.getAbsoluteDefaultDataDir(),\n verbose,\n exports: {}, // Polyfill for the export object in TypeScript modules\n require: function (md: string): any {\n if (typeof md === 'string' && md.startsWith('node:')) {\n md = md.replace(/^node:/, '');\n }\n\n if (md === 'request') {\n if (!sandbox.__engine.__deprecatedWarnings.includes(md)) {\n sandbox.log(\n `request package is deprecated - please use httpGet (or a stable lib like axios) instead!`,\n 'warn',\n );\n sandbox.__engine.__deprecatedWarnings.push(md);\n }\n }\n\n if (mods[md]) {\n return mods[md];\n }\n\n let error: Error | undefined;\n\n try {\n mods[md] = require(\n adapter.getAdapterScopedPackageIdentifier ? adapter.getAdapterScopedPackageIdentifier(md) : md,\n );\n return mods[md];\n } catch (e: any) {\n error = e as Error;\n }\n\n try {\n // the user requires a module which is not specified in the additional node modules\n // for backward compatibility we check if the module can simply be required directly before we fail (e.g., direct dependencies of JavaScript adapter)\n adapter.log.debug(`Try direct require of \"${md}\" as not specified in the additional dependencies`);\n mods[md] = require(md);\n\n return mods[md];\n } catch (e: any) {\n context.logError(name, `Error by loading module \"${md}\":`, error || e, 6);\n\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'require',\n });\n }\n },\n Buffer: Buffer,\n __engine: {\n __deprecatedWarnings: [],\n __subscriptionsObject: 0,\n __subscriptions: 0,\n __subscriptionsMessage: 0,\n __subscriptionsFile: 0,\n __subscriptionsLog: 0,\n __schedules: 0,\n },\n\n $: function (selector: string): iobJS.QueryResult {\n // following is supported\n // 'type[commonAttr=something]', 'id[commonAttr=something]', id(enumName=\"something\")', id{nativeName=\"something\"}\n // Type can be state, channel or device\n // Attr can be any of the common attributes and can have wildcards *\n // E.g. \"state[id='hm-rpc.0.*]\" or \"hm-rpc.0.*\" returns all states of adapter instance hm-rpc.0\n // channel(room=\"Living room\") => all states in room \"Living room\"\n // channel{TYPE=BLIND}[state.id=*.LEVEL]\n // Switch all states with .STATE of channels with role \"switch\" in \"Wohnzimmer\" to false\n // $('channel[role=switch][state.id=*.STATE](rooms=Wohnzimmer)').setState(false);\n //\n // Following functions are possible, setValue, getValue (only from first), on, each\n\n // Todo CACHE!!!\n\n const result: iobJS.QueryResult = {} as iobJS.QueryResult;\n\n let name = '';\n const commonStrings: string[] = [];\n const enumStrings: string[] = [];\n const nativeStrings: string[] = [];\n let isInsideName = true;\n let isInsideCommonString = false;\n let isInsideEnumString = false;\n let isInsideNativeString = false;\n let currentCommonString = '';\n let currentNativeString = '';\n let currentEnumString = '';\n\n // parse string\n let selectorHasInvalidType = false;\n if (typeof selector === 'string') {\n for (let i = 0; i < selector.length; i++) {\n if (selector[i] === '{') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideNativeString = true;\n } else if (selector[i] === '}') {\n isInsideNativeString = false;\n nativeStrings.push(currentNativeString);\n currentNativeString = '';\n } else if (selector[i] === '[') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideCommonString = true;\n } else if (selector[i] === ']') {\n isInsideCommonString = false;\n commonStrings.push(currentCommonString);\n currentCommonString = '';\n } else if (selector[i] === '(') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideEnumString = true;\n } else if (selector[i] === ')') {\n isInsideEnumString = false;\n enumStrings.push(currentEnumString);\n currentEnumString = '';\n } else if (isInsideName) {\n name += selector[i];\n } else if (isInsideCommonString) {\n currentCommonString += selector[i];\n } else if (isInsideEnumString) {\n currentEnumString += selector[i];\n } else if (isInsideNativeString) {\n currentNativeString += selector[i];\n } //else {\n // some error\n //}\n }\n } else {\n selectorHasInvalidType = true;\n }\n\n // If some error in the selector\n if (selectorHasInvalidType || isInsideEnumString || isInsideCommonString || isInsideNativeString) {\n result.length = 0;\n result.toArray = function () {\n return [];\n };\n result.each = function () {\n return this;\n };\n result.getState = function () {\n return null;\n };\n result.setState = function () {\n return this;\n };\n result.on = function () {\n return this;\n };\n }\n\n if (isInsideEnumString) {\n sandbox.log(`Invalid selector: enum close bracket \")\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: enum close bracket \")\" cannot be found';\n return result;\n } else if (isInsideCommonString) {\n sandbox.log(`Invalid selector: common close bracket \"]\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: common close bracket \"]\" cannot be found';\n return result;\n } else if (isInsideNativeString) {\n sandbox.log(`Invalid selector: native close bracket \"}\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: native close bracket \"}\" cannot be found';\n return result;\n } else if (selectorHasInvalidType) {\n const message = `Invalid selector: selector must be a string but is of type ${typeof selector}`;\n sandbox.log(message, 'warn');\n result.error = message;\n return result;\n }\n\n let commonSelectors: Selector[] = commonStrings.map(selector => splitSelectorString(selector));\n let nativeSelectors: Selector[] = nativeStrings.map(selector => splitSelectorString(selector));\n const enumSelectorObjects: Selector[] = enumStrings.map(_enum => splitSelectorString(_enum));\n const allSelectors: Selector[] = commonSelectors.concat(nativeSelectors, enumSelectorObjects);\n\n // These selectors match the state or object ID and don't belong in the common/native selectors\n // Also use RegExp for the ID matching\n const stateIdSelectors: Selector[] = allSelectors\n .filter(selector => selector.attr === 'state.id')\n .map(selector => addRegExpToIdAttrSelectors(selector));\n const objectIdSelectors: Selector[] = allSelectors\n .filter(selector => selector.attr === 'id')\n .map(selector => addRegExpToIdAttrSelectors(selector));\n commonSelectors = commonSelectors.filter(\n selector => selector.attr !== 'state.id' && selector.attr !== 'id',\n );\n nativeSelectors = nativeSelectors.filter(\n selector => selector.attr !== 'state.id' && selector.attr !== 'id',\n );\n const enumSelectors: string[] = enumSelectorObjects\n .filter(selector => selector.attr !== 'state.id' && selector.attr !== 'id')\n // enums are filtered by their enum id, so transform the selector into that\n .map(selector => `enum.${selector.attr}.${selector.value}`);\n\n name = name.trim();\n\n if (name === 'channel' || name === 'device') {\n // Fill the channels and devices objects with the IDs of all their states,\n // so we can loop over them afterward\n if (!context.channels || !context.devices) {\n context.channels = {};\n context.devices = {};\n for (const _id of Object.keys(objects)) {\n if (objects[_id].type === 'state') {\n const parts = _id.split('.');\n parts.pop();\n const chn = parts.join('.');\n\n parts.pop();\n const dev = parts.join('.');\n\n context.devices[dev] = context.devices[dev] || new Set();\n context.devices[dev].add(_id);\n\n context.channels[chn] = context.channels[chn] || new Set();\n context.channels[chn].add(_id);\n }\n }\n }\n }\n\n if (name === 'schedule') {\n if (!context.schedules) {\n context.schedules = [];\n for (const _id of Object.keys(objects)) {\n if (objects[_id].type === 'schedule') {\n context.schedules.push(_id);\n }\n }\n }\n }\n\n /**\n * applies all selectors targeting an object or state ID\n */\n function applyIDSelectors(objId: string, selectors: Selector[]): boolean {\n // Only keep the ID if it matches every ID selector\n return selectors.every(selector => !selector.idRegExp || selector.idRegExp.test(objId));\n }\n\n /**\n * Applies all selectors targeting the Object common properties\n *\n * @param objId - The ID of the object in question\n */\n function applyCommonSelectors(objId: string): boolean {\n const obj = objects[objId];\n if (!obj?.common) {\n return false;\n }\n const objCommon = obj.common;\n\n // make sure this object satisfies all selectors\n return commonSelectors.every(\n selector =>\n // ensure a property exists\n (selector.value === undefined && objCommon[selector.attr] !== undefined) ||\n // or match exact values\n looselyEqualsString(objCommon[selector.attr], selector.value),\n );\n }\n\n /**\n * Applies all selectors targeting the Object native properties\n *\n * @param objId - The ID of the object in question\n */\n function applyNativeSelectors(objId: string): boolean {\n const obj = objects[objId];\n if (!obj || !obj.native) {\n return false;\n }\n const objNative = obj.native;\n // make sure this object satisfies all selectors\n return nativeSelectors.every(\n selector =>\n // ensure a property exists\n (selector.value === undefined && objNative[selector.attr] !== undefined) ||\n // or match exact values\n looselyEqualsString(objNative[selector.attr], selector.value),\n );\n }\n\n /**\n * Applies all selectors targeting the Objects enums\n *\n * @param objId - The ID of the object in question\n */\n function applyEnumSelectors(objId: string): boolean {\n const enumIds: string[] = [];\n eventObj.getObjectEnumsSync(context, objId, enumIds);\n // make sure this object satisfies all selectors\n return enumSelectors.every(_enum => enumIds.includes(_enum));\n }\n\n let res: string[];\n\n if (name === 'schedule') {\n res = context.schedules || [];\n if (objectIdSelectors.length) {\n res = res.filter(channelId => applyIDSelectors(channelId, objectIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(id => applyCommonSelectors(id));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(id => applyNativeSelectors(id));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(channelId => applyEnumSelectors(channelId));\n }\n } else if (name === 'channel') {\n if (!context.channels) {\n // TODO: fill the channels and maintain them on all places where context.stateIds will be changed\n }\n const channels = context.channels || {};\n\n // go through all channels\n res = Object.keys(channels);\n // filter out those that don't match every ID selector for the channel ID\n if (objectIdSelectors.length) {\n res = res.filter(channelId => applyIDSelectors(channelId, objectIdSelectors));\n }\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(channelId => applyCommonSelectors(channelId));\n }\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(channelId => applyNativeSelectors(channelId));\n }\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(channelId => applyEnumSelectors(channelId));\n }\n\n // retrieve the state ID collection for all remaining channels\n res = res\n .map(id => [...(channels[id] || [])])\n // and flatten the array to get only the state IDs\n .reduce((acc, next) => acc.concat(next), []);\n\n // now filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(stateId => applyIDSelectors(stateId, stateIdSelectors));\n }\n } else if (name === 'device') {\n if (!context.devices) {\n // TODO: fill the devices and maintain them on all places where context.stateIds will be changed\n }\n\n const devices = context.devices || {};\n\n // go through all devices\n res = Object.keys(devices);\n // filter out those that don't match every ID selector for the channel ID\n if (objectIdSelectors.length) {\n res = res.filter(deviceId => applyIDSelectors(deviceId, objectIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(deviceId => applyCommonSelectors(deviceId));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(deviceId => applyNativeSelectors(deviceId));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(deviceId => applyEnumSelectors(deviceId));\n }\n\n // retrieve the state ID collection for all remaining devices\n res = res\n .map(id => [...(devices[id] || [])])\n // and flatten the array to get only the state IDs\n .reduce((acc, next) => acc.concat(next), []);\n\n // now filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(stateId => applyIDSelectors(stateId, stateIdSelectors));\n }\n } else {\n // go through all states\n res = context.stateIds;\n // if the \"name\" is not state, then we filter for the ID as well\n if (name && name !== 'state') {\n const r = new RegExp(`^${name.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*')}$`);\n res = res.filter(id => r.test(id));\n }\n\n // filter out those that don't match every ID selector for the object ID or the state ID\n if (objectIdSelectors.length) {\n res = res.filter(id => applyIDSelectors(id, objectIdSelectors));\n }\n\n // filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(id => applyIDSelectors(id, stateIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(id => applyCommonSelectors(id));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(id => applyNativeSelectors(id));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(id => applyEnumSelectors(id));\n }\n }\n\n // IO-2: O(1) deduplication via Set instead of O(n²) resUnique.includes()\n const resUnique: string[] = [...new Set(res)];\n\n for (let i = 0; i < resUnique.length; i++) {\n result[i] = resUnique[i];\n }\n result.length = resUnique.length;\n\n // Implementing the Symbol.iterator contract makes the query result iterable\n result[Symbol.iterator] = function* () {\n for (let i = 0; i < result.length; i++) {\n yield result[i];\n }\n };\n result.toArray = function (): string[] {\n return [...resUnique];\n };\n result.each = function (callback: (id: string, index: number) => void | false): iobJS.QueryResult {\n if (typeof callback === 'function') {\n let r: boolean | void;\n for (let i = 0; i < this.length; i++) {\n r = callback(result[i], i);\n if (r === false) {\n break;\n }\n }\n }\n return this;\n };\n // @ts-expect-error fix later\n result.getState = function (\n callback?: iobJS.GetStateCallback,\n ): void | null | undefined | iobJS.TypedState | iobJS.AbsentState {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (typeof callback !== 'function') {\n sandbox.log('You cannot use this function synchronous', 'error');\n } else {\n void adapter.getForeignState(\n this[0],\n (err: Error | null | undefined, state?: ioBroker.State | null): void => {\n void callback(\n err,\n context.convertBackStringifiedValues(this[0], state) as\n | iobJS.TypedState\n | iobJS.AbsentState,\n );\n },\n );\n }\n } else {\n if (!this[0]) {\n return null;\n }\n if (context.interimStateValues[this[0]] !== undefined) {\n return context.convertBackStringifiedValues(this[0], context.interimStateValues[this[0]]) as\n | iobJS.TypedState\n | iobJS.AbsentState;\n }\n return context.convertBackStringifiedValues(this[0], states[this[0]]) as\n | iobJS.TypedState\n | iobJS.AbsentState;\n }\n };\n result.getStateAsync = async function (): Promise<\n iobJS.TypedState | iobJS.AbsentState | null | undefined\n > {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n const state = await adapter.getForeignStateAsync(this[0]);\n return context.convertBackStringifiedValues(this[0], state) as\n | iobJS.TypedState\n | iobJS.AbsentState\n | null;\n }\n if (!this[0]) {\n return null;\n }\n if (context.interimStateValues[this[0]] !== undefined) {\n return context.convertBackStringifiedValues(this[0], context.interimStateValues[this[0]]) as\n | iobJS.TypedState\n | iobJS.AbsentState\n | null;\n }\n return context.convertBackStringifiedValues(this[0], states[this[0]]) as\n | iobJS.TypedState\n | iobJS.AbsentState\n | null;\n };\n result.setState = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | 'false' | 'true' | null | iobJS.SetStateCallback,\n callback?: iobJS.SetStateCallback,\n ) {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n void result\n .setStateAsync(state, isAck as boolean | 'false' | 'true')\n .then(() => typeof callback === 'function' && callback());\n return this;\n };\n result.setStateAsync = async function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n for (let i = 0; i < this.length; i++) {\n await sandbox.setStateAsync(this[i], state, isAck);\n }\n };\n result.setStateChanged = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n callback?: () => void,\n ) {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n void result.setStateChangedAsync(state, isAck).then(() => typeof callback === 'function' && callback());\n return this;\n };\n result.setStateChangedAsync = async function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n for (let i = 0; i < this.length; i++) {\n await sandbox.setStateChangedAsync(this[i], state, isAck);\n }\n };\n result.setStateDelayed = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | number | undefined,\n delay?: number | boolean,\n clearRunning?: boolean | (() => void),\n callback?: () => void,\n ) {\n if (typeof isAck !== 'boolean') {\n callback = clearRunning as () => void;\n clearRunning = delay as boolean;\n delay = isAck as number;\n isAck = undefined;\n }\n if (typeof delay !== 'number') {\n callback = clearRunning as () => void;\n clearRunning = delay;\n delay = 0;\n }\n if (typeof clearRunning !== 'boolean') {\n callback = clearRunning;\n clearRunning = true;\n }\n let count = this.length;\n for (let i = 0; i < this.length; i++) {\n sandbox.setStateDelayed(this[i], state, isAck as boolean, delay, clearRunning, () => {\n if (!--count && typeof callback === 'function') {\n callback();\n }\n });\n }\n return this;\n };\n result.on = function (callbackOrId: string | ((data: any) => void), value?: any) {\n for (let i = 0; i < this.length; i++) {\n sandbox.subscribe(this[i], callbackOrId, value);\n }\n return this;\n };\n return result;\n },\n log: function (msg: string, severity?: ioBroker.LogLevel): void {\n severity = severity || 'info';\n\n // disable log in log handler (prevent endless loops)\n if (sandbox.logHandler && (sandbox.logHandler === severity || sandbox.logHandler === '*')) {\n return;\n }\n\n if (!adapter.log[severity]) {\n msg = `Unknown severity level \"${severity}\" by log of [${msg}]`;\n severity = 'warn';\n }\n\n if (msg && typeof msg !== 'string') {\n msg = mods.util.format(msg);\n }\n\n if (debugMode) {\n console.log(`${severity}$$${name}$$${msg}`, Date.now());\n } else {\n adapter.log[severity](`${name}: ${msg}`);\n }\n },\n onLog: function (severity: ioBroker.LogLevel, callback: (info: LogMessage) => void): number {\n if (!['info', 'error', 'debug', 'silly', 'warn', '*'].includes(severity)) {\n sandbox.log(`Unknown severity \"${severity}\"`, 'warn');\n return 0;\n }\n if (typeof callback !== 'function') {\n sandbox.log(`Invalid callback for onLog`, 'warn');\n return 0;\n }\n\n const handler = { id: _handlerIdCounter++, cb: callback, sandbox, severity };\n context.logSubscriptions[sandbox.scriptName] = context.logSubscriptions[sandbox.scriptName] || [];\n context.logSubscriptions[sandbox.scriptName].push(handler);\n context.updateLogSubscriptions();\n\n sandbox.__engine.__subscriptionsLog += 1;\n\n sandbox.verbose &&\n sandbox.log(\n `onLog(severity=${severity}, id=${handler.id}) - logSubscriptions=${sandbox.__engine.__subscriptionsLog}`,\n 'info',\n );\n\n if (\n sandbox.__engine.__subscriptionsLog %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsLog} log subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n return handler.id;\n },\n onLogUnregister: function (\n idOrCallbackOrSeverity: number | ioBroker.LogLevel | ((info: LogMessage) => void),\n ): boolean {\n let found = false;\n\n if (context.logSubscriptions?.[sandbox.scriptName]) {\n sandbox.verbose &&\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}) - logSubscriptions=${sandbox.__engine.__subscriptionsLog}`,\n 'info',\n );\n\n for (let i = 0; i < context.logSubscriptions[sandbox.scriptName].length; i++) {\n if (\n context.logSubscriptions[sandbox.scriptName][i].cb === idOrCallbackOrSeverity ||\n context.logSubscriptions[sandbox.scriptName][i].id === idOrCallbackOrSeverity ||\n context.logSubscriptions[sandbox.scriptName][i].severity === idOrCallbackOrSeverity\n ) {\n sandbox.verbose &&\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}, removing id=${context.logSubscriptions[sandbox.scriptName][i].id})`,\n 'info',\n );\n\n context.logSubscriptions[sandbox.scriptName].splice(i, 1);\n i--;\n sandbox.__engine.__subscriptionsLog--;\n\n found = true;\n\n // if deletion via ID\n if (typeof idOrCallbackOrSeverity === 'number') {\n break;\n }\n } else {\n sandbox.verbose &&\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}) NOT = ${JSON.stringify(context.logSubscriptions[sandbox.scriptName][i])}`,\n 'info',\n );\n }\n }\n }\n\n context.updateLogSubscriptions();\n\n return found;\n },\n exec: function (\n cmd: string,\n options?: ExecOptions | ((error: Error | null | string, stdout?: string, stderr?: string) => void),\n callback?: (error: Error | null | string, stdout?: string, stderr?: string) => void,\n ): undefined | ChildProcess {\n if (typeof options === 'function') {\n callback = options as (error: Error | null | string, stdout?: string, stderr?: string) => void;\n options = {};\n }\n if (!(adapter.config as JavaScriptAdapterConfig).enableExec) {\n const error = 'exec is not available. Please enable \"Enable Exec\" option in instance settings';\n sandbox.log(error, 'error');\n\n if (typeof callback === 'function') {\n setImmediate(callback, error, undefined, undefined);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`exec(cmd=${cmd})`, 'info');\n }\n\n if (debug) {\n sandbox.log(words._('Command %s was not executed, while debug mode is active', cmd), 'warn');\n if (typeof callback === 'function') {\n setImmediate(function () {\n callback(null, '', '');\n });\n }\n } else {\n return mods.child_process.exec(\n cmd,\n options,\n (error: Error | null, stdout: string, stderr: string): void => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, error, stdout, stderr);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n );\n }\n }\n },\n email: function (msg: string | SendMailOptions): void {\n if (sandbox.verbose) {\n sandbox.log(`email(msg=${JSON.stringify(msg)})`, 'info');\n }\n sandbox.log(`email(msg=${JSON.stringify(msg)}) is deprecated. Please use sendTo instead!`, 'warn');\n adapter.sendTo('email', msg);\n },\n pushover: function (msg: string | PushoverOptions): void {\n if (sandbox.verbose) {\n sandbox.log(`pushover(msg=${JSON.stringify(msg)})`, 'info');\n }\n sandbox.log(`pushover(msg=${JSON.stringify(msg)}) is deprecated. Please use sendTo instead!`, 'warn');\n adapter.sendTo('pushover', msg);\n },\n httpGet: function (\n url: string,\n options:\n | {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n }\n | ((\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void),\n callback?: (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void,\n ): void {\n if (typeof options === 'function') {\n callback = options as (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void;\n options = {};\n }\n\n const config = {\n ...getHttpRequestConfig(url, options, context.allowSelfSignedCerts),\n method: 'get',\n };\n\n if (sandbox.verbose) {\n sandbox.log(`httpGet(config=${JSON.stringify(config)})`, 'info');\n }\n\n const startTime = Date.now();\n\n mods.axios\n .default(config)\n .then((response: AxiosResponse) => {\n const responseTime = Date.now() - startTime;\n\n if (sandbox.verbose) {\n sandbox.log(`httpGet(url=${url}, responseTime=${responseTime}ms)`, 'info');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, {\n statusCode: response.status,\n data: response.data,\n headers: response.headers as Record,\n responseTime,\n });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n })\n .catch((error: any) => {\n const responseTime = Date.now() - startTime;\n\n sandbox.log(`httpGet(url=${url}, error=${error.message})`, 'error');\n\n if (typeof callback === 'function') {\n let result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n } = {\n statusCode: null,\n data: null,\n headers: {},\n responseTime,\n };\n\n if (error.response) {\n result = {\n statusCode: error.response.status,\n data: error.response.data,\n headers: error.response.headers,\n responseTime,\n };\n }\n\n try {\n callback.call(sandbox, error.message, result);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n },\n httpPost: function (\n url: string,\n data: any,\n options:\n | {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n }\n | ((\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void),\n callback?: (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void,\n ): void {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n const config = {\n ...getHttpRequestConfig(\n url,\n options as {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n context.allowSelfSignedCerts,\n ),\n method: 'post',\n data,\n };\n\n if (sandbox.verbose) {\n sandbox.log(`httpPost(config=${JSON.stringify(config)}, data=${data})`, 'info');\n }\n\n const startTime = Date.now();\n\n mods.axios\n .default(config)\n .then((response: AxiosResponse) => {\n const responseTime = Date.now() - startTime;\n\n if (sandbox.verbose) {\n sandbox.log(`httpPost(url=${url}, responseTime=${responseTime}ms)`, 'info');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, {\n statusCode: response.status,\n data: response.data,\n headers: response.headers,\n responseTime,\n });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n })\n .catch((error: unknown) => {\n const responseTime = Date.now() - startTime;\n\n sandbox.log(`httpPost(url=${url}, error=${(error as Error).message})`, 'error');\n\n if (typeof callback === 'function') {\n let result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n } = {\n statusCode: null,\n data: null,\n headers: {},\n responseTime,\n };\n const response: AxiosResponse | undefined = (error as AxiosError).response;\n\n if (response) {\n result = {\n statusCode: response.status,\n data: response.data,\n headers: response.headers,\n responseTime,\n };\n }\n\n try {\n callback.call(sandbox, new Error((error as AxiosError).message), result);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n },\n createTempFile: function (fileName: string, data: Buffer | string): undefined | string {\n const os = mods.os;\n const path = mods.path;\n const fs = mods.fs;\n\n let tempDirPath = context.tempDirectories?.[sandbox.scriptName];\n\n if (!tempDirPath) {\n // create temp directory\n tempDirPath = fs.mkdtempSync(\n path.join(os.tmpdir(), `${sandbox.scriptName.substring(SCRIPT_CODE_MARKER.length)}-`),\n );\n context.tempDirectories[sandbox.scriptName] = tempDirPath;\n\n sandbox.verbose &&\n sandbox.log(\n `createTempFile(fileName=${fileName}, tempDirPath=${tempDirPath}) created temp directory in ${os.tmpdir()}`,\n 'info',\n );\n }\n\n const filePath = path.join(tempDirPath, fileName);\n\n // is sub dir?\n const fileDir = path.dirname(filePath);\n if (!fs.existsSync(fileDir)) {\n fs.mkdirSync(fileDir, { recursive: true });\n }\n\n if (typeof data === 'undefined') {\n sandbox.log(\n `createTempFile(fileName=${fileName}, fileDir=${fileDir}, filePath=${filePath}) data is undefined, file not created!`,\n 'error',\n );\n\n return undefined;\n }\n\n fs.writeFileSync(filePath, data);\n sandbox.verbose &&\n sandbox.log(`createTempFile(fileName=${fileName}, fileDir=${fileDir}, filePath=${filePath})`, 'info');\n\n return filePath;\n },\n subscribe: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n callbackOrChangeTypeOrId: string | ChangeType | ((event?: EventObj) => void),\n value?: any,\n ):\n | SubscriptionResult\n | IobSchedule\n | string\n | null\n | undefined\n | (SubscriptionResult | IobSchedule | string | null | undefined)[] {\n // If a schedule object is given\n if (\n (typeof pattern === 'string' && pattern[0] === '{') ||\n (typeof pattern === 'object' && (pattern as SchedulerRule).period)\n ) {\n return sandbox.schedule(pattern as SchedulerRule, callbackOrChangeTypeOrId as () => void);\n }\n // If an array of schedules is given\n if (pattern && Array.isArray(pattern)) {\n const result: (IobSchedule | string | null | undefined)[] = [];\n for (const p of pattern) {\n result.push(\n sandbox.subscribe(p as SchedulerRule | string, callbackOrChangeTypeOrId, value) as\n | IobSchedule\n | string\n | null\n | undefined,\n );\n }\n return result;\n }\n\n // detect subscribe('id', 'any', (obj) => {})\n let oPattern: Pattern;\n if (\n (typeof pattern === 'string' || pattern instanceof RegExp) &&\n typeof callbackOrChangeTypeOrId === 'string' &&\n typeof value === 'function'\n ) {\n oPattern = { id: pattern, change: callbackOrChangeTypeOrId as ChangeType };\n callbackOrChangeTypeOrId = value;\n value = undefined;\n } else {\n oPattern = pattern as Pattern;\n }\n\n if (oPattern?.id && Array.isArray(oPattern.id)) {\n const result: (IobSchedule | string | null | undefined)[] = [];\n for (let t = 0; t < oPattern.id.length; t++) {\n // IO-4: Spread instead of JSON.parse(JSON.stringify()) – no deep clone needed (only primitive fields)\n const pa: Pattern = { ...oPattern, id: oPattern.id[t] };\n result.push(\n sandbox.subscribe(pa, callbackOrChangeTypeOrId, value) as\n | IobSchedule\n | string\n | null\n | undefined,\n );\n }\n return result;\n }\n\n // try to detect astro or cron (by spaces)\n if (isObject(pattern) || (typeof pattern === 'string' && pattern.match(/[,/\\d*]+\\s[,/\\d*]+\\s[,/\\d*]+/))) {\n if ((pattern as AstroRule).astro) {\n return sandbox.schedule(pattern as AstroRule, callbackOrChangeTypeOrId as () => void);\n } else if ((pattern as TimeRule).time) {\n return sandbox.schedule(\n (pattern as TimeRule).time as string,\n callbackOrChangeTypeOrId as () => void,\n );\n }\n }\n\n let callback: undefined | ((obj: EventObj) => void);\n\n // source is set by regexp if defined as /regexp/\n if (!isObject(pattern) || pattern instanceof RegExp || (pattern as RegExp).source) {\n oPattern = { id: pattern as string | RegExp, change: 'ne' };\n }\n\n if (oPattern.id !== undefined && !oPattern.id) {\n sandbox.log(`Error by subscription (trigger): empty ID defined. All states matched.`, 'error');\n return;\n } else if (typeof oPattern.id === 'boolean' || typeof oPattern.id === 'number') {\n sandbox.log(`Error by subscription (trigger): Wrong ID of type boolean or number.`, 'error');\n return;\n }\n\n sandbox.__engine.__subscriptions += 1;\n\n if (\n sandbox.__engine.__subscriptions % (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptions} subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n if (oPattern.q === undefined) {\n oPattern.q = 0;\n }\n\n // add adapter namespace if nothing given\n if (oPattern.id && typeof oPattern.id === 'string' && !oPattern.id.includes('.')) {\n oPattern.id = `${adapter.namespace}.${oPattern.id}`;\n }\n\n if (typeof callbackOrChangeTypeOrId === 'function') {\n callback = callbackOrChangeTypeOrId;\n } else {\n if (typeof value === 'undefined') {\n callback = function (obj: EventObj) {\n sandbox.setState(callbackOrChangeTypeOrId, obj.newState.val);\n };\n } else {\n callback = function (/* obj */) {\n sandbox.setState(callbackOrChangeTypeOrId, value);\n };\n }\n }\n\n const subs: SubscriptionResult = {\n pattern: oPattern,\n callback: (obj: EventObj) => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, obj);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n name,\n };\n\n // try to extract adapter\n if (oPattern.id && typeof oPattern.id === 'string') {\n const parts = oPattern.id.split('.');\n const a = `${parts[0]}.${parts[1]}`;\n const _adapter = `system.adapter.${a}`;\n\n if (objects[_adapter] && objects[_adapter].common && objects[_adapter].common.subscribable) {\n const alive = `system.adapter.${a}.alive`;\n context.adapterSubs[alive] = context.adapterSubs[alive] || new Set();\n\n // Set.has() is O(1) and automatically prevents duplicates\n const subExists = context.adapterSubs[alive].has(oPattern.id);\n\n if (!subExists) {\n context.adapterSubs[alive].add(oPattern.id);\n adapter.sendTo(a, 'subscribe', oPattern.id);\n }\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`subscribe: ${JSON.stringify(subs)}`, 'info');\n }\n\n subscribePattern(script, oPattern.id as string);\n\n subs.patternCompareFunctions = getPatternCompareFunctions(oPattern);\n context.subscriptions.push(subs);\n\n // O(1) dispatch index: exact string IDs go into the map, everything else into the wildcard array\n if (_isExactId(oPattern.id)) {\n if (!context.subscriptionsMap.has(oPattern.id)) {\n context.subscriptionsMap.set(oPattern.id, []);\n }\n context.subscriptionsMap.get(oPattern.id)!.push(subs);\n } else {\n context.subscriptionsWildcard.push(subs);\n }\n\n if (oPattern.enumName || oPattern.enumId) {\n context.isEnums = true;\n }\n return subs;\n },\n getSubscriptions: function (): Record {\n const result: Record = {};\n // Iterate over the O(1) dispatch index instead of the flat array\n for (const [id, bucket] of context.subscriptionsMap) {\n result[id] = bucket.map(s => ({ name: s.name, pattern: s.pattern }));\n }\n for (const s of context.subscriptionsWildcard) {\n const key = s.pattern.id as string;\n (result[key] ??= []).push({ name: s.name, pattern: s.pattern });\n }\n if (sandbox.verbose) {\n sandbox.log(`getSubscriptions() => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n },\n getFileSubscriptions: function (): Record {\n const result: Record = {};\n for (let s = 0; s < context.subscriptionsFile.length; s++) {\n const key = `${context.subscriptionsFile[s].id}$%$${context.subscriptionsFile[s].fileNamePattern}`;\n result[key] = result[key] || [];\n result[key].push({\n name: context.subscriptionsFile[s].name,\n id: context.subscriptionsFile[s].id,\n fileNamePattern: context.subscriptionsFile[s].fileNamePattern,\n });\n }\n if (sandbox.verbose) {\n sandbox.log(`getFileSubscriptions() => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n },\n adapterSubscribe: function (id: string): void {\n if (typeof id !== 'string') {\n sandbox.log(`adapterSubscribe: invalid type of id ${typeof id}`, 'error');\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n context.adapterSubs[alive] = context.adapterSubs[alive] || new Set();\n context.adapterSubs[alive].add(id);\n if (sandbox.verbose) {\n sandbox.log(`adapterSubscribe: ${a} - ${id}`, 'info');\n }\n adapter.sendTo(a, 'subscribe', id);\n }\n },\n adapterUnsubscribe: function (\n idOrObject: string | SubscriptionResult | (string | SubscriptionResult)[],\n ): boolean | boolean[] {\n // todo: BF - it could be an error\n return sandbox.unsubscribe(idOrObject);\n },\n unsubscribe: function (\n idOrObject: string | SubscriptionResult | (string | SubscriptionResult)[],\n ): boolean | boolean[] {\n if (idOrObject && Array.isArray(idOrObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < idOrObject.length; t++) {\n result.push(sandbox.unsubscribe(idOrObject[t]) as boolean);\n }\n return result;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`adapterUnsubscribe(id=${JSON.stringify(idOrObject)})`, 'info');\n }\n\n if (isObject(idOrObject)) {\n for (let i = context.subscriptions.length - 1; i >= 0; i--) {\n if (context.subscriptions[i] === idOrObject) {\n const sub = context.subscriptions[i];\n unsubscribePattern(script, sub.pattern.id as string);\n context.subscriptions.splice(i, 1);\n // Remove from O(1) dispatch structures\n _removeFromDispatchIndex(context, sub);\n sandbox.__engine.__subscriptions--;\n return true;\n }\n }\n return false;\n }\n let deleted = 0;\n for (let i = context.subscriptions.length - 1; i >= 0; i--) {\n if (context.subscriptions[i].name === name && context.subscriptions[i].pattern.id === idOrObject) {\n deleted++;\n const sub = context.subscriptions[i];\n unsubscribePattern(script, sub.pattern.id as string);\n context.subscriptions.splice(i, 1);\n // Remove from O(1) dispatch structures\n _removeFromDispatchIndex(context, sub);\n sandbox.__engine.__subscriptions--;\n }\n }\n return !!deleted;\n },\n on: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n callbackOrChangeTypeOrId: string | ChangeType | ((event?: EventObj) => void),\n value?: any,\n ):\n | SubscriptionResult\n | IobSchedule\n | string\n | null\n | undefined\n | (SubscriptionResult | IobSchedule | string | null | undefined)[] {\n return sandbox.subscribe(pattern, callbackOrChangeTypeOrId, value);\n },\n onEnumMembers: function (enumId: string, callback: (event?: EventObj) => void): void {\n if (enums.has(enumId)) {\n const subscriptions: Record = {};\n\n const init = (): void => {\n const obj: ioBroker.EnumObject = objects[enumId] as ioBroker.EnumObject;\n const common: ioBroker.EnumCommon = obj?.common ?? {};\n const members: string[] = common?.members ?? [];\n\n // Remove old subscriptions\n for (const [objId, subscription] of Object.entries(subscriptions)) {\n if (!members.includes(objId)) {\n sandbox.unsubscribe(subscription);\n delete subscriptions[objId];\n }\n }\n\n // Subscribe to all members of enum\n for (const objId of members) {\n // IO-6: `in` operator instead of Object.keys().includes() – O(1) instead of O(n)\n if (!(objId in subscriptions)) {\n if (objects?.[objId]?.type === 'state') {\n // Just subscribe to states\n subscriptions[objId] = sandbox.subscribe(objId, callback) as\n | string\n | SubscriptionResult; // TODO: more features\n }\n }\n }\n\n sandbox.verbose &&\n sandbox.log(\n `onEnumMembers(id=${enumId}, members=${JSON.stringify(Object.keys(subscriptions))})`,\n 'info',\n );\n };\n\n init();\n\n sandbox.subscribeObject(enumId, obj => obj && init());\n } else {\n sandbox.log(`onEnumMembers: enum with id \"${enumId}\" doesn't exists`, 'error');\n }\n },\n onFile: function (\n id: string,\n fileNamePattern: string | string[],\n withFileOrCallback:\n | boolean\n | ((id: string, fileName: string, size: number, file?: string | Buffer, mimeType?: string) => void),\n callback?: (\n id: string,\n fileName: string,\n size: number | null,\n file?: string | Buffer,\n mimeType?: string,\n ) => void,\n ): undefined | FileSubscriptionResult | (undefined | FileSubscriptionResult)[] {\n if (typeof withFileOrCallback === 'function') {\n callback = withFileOrCallback as (\n id: string,\n fileName: string,\n size: number | null,\n file?: string | Buffer,\n mimeType?: string,\n ) => void;\n withFileOrCallback = false;\n }\n\n if (!adapter.subscribeForeignFiles) {\n sandbox.log(\n 'onFile: your js-controller does not support yet onFile subscribes. Please update to js-controller@4.1.x or newer',\n 'warn',\n );\n return;\n }\n if (!id || !fileNamePattern) {\n sandbox.log(\n 'onFile: invalid parameters. Usage: onFile(\"vis.0\", \"main/*\", true, (id, fileName, size, file, mimeType) => {});',\n 'error',\n );\n return;\n }\n if (typeof callback !== 'function') {\n sandbox.offFile(id, fileNamePattern);\n return;\n }\n\n if (Array.isArray(fileNamePattern)) {\n return fileNamePattern.map(\n filePattern =>\n sandbox.onFile(id, filePattern, withFileOrCallback, callback) as\n | undefined\n | FileSubscriptionResult,\n );\n }\n\n sandbox.__engine.__subscriptionsFile += 1;\n\n sandbox.verbose &&\n sandbox.log(\n `onFile(id=${id}, fileNamePattern=${fileNamePattern}) - fileSubscriptions=${sandbox.__engine.__subscriptionsFile}`,\n 'info',\n );\n\n if (\n sandbox.__engine.__subscriptionsFile %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsFile} file subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n let idRegEx: RegExp | undefined;\n let fileRegEx: RegExp | undefined;\n if (id.includes('*')) {\n idRegEx = new RegExp(pattern2RegEx(id));\n }\n if (fileNamePattern.includes('*')) {\n fileRegEx = new RegExp(pattern2RegEx(fileNamePattern));\n }\n\n const subs: FileSubscriptionResult = {\n id,\n fileNamePattern,\n withFile: withFileOrCallback,\n idRegEx,\n fileRegEx,\n callback: (id: string, fileName: string, size: number | null, withFile: boolean): void => {\n try {\n sandbox.verbose &&\n sandbox.log(`onFile changed(id=${id}, fileName=${fileName}, size=${size})`, 'info');\n\n if (withFile && (size || 0) > 0) {\n adapter\n .readFileAsync(id, fileName)\n .then(data => {\n try {\n callback.call(sandbox, id, fileName, size, data.file, data.mimeType);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n })\n .catch(error => errorInCallback(error));\n } else {\n callback.call(sandbox, id, fileName, size);\n }\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n },\n name,\n };\n\n context.subscriptionsFile.push(subs);\n subscribeFile(script, id, fileNamePattern);\n return subs;\n },\n offFile: function (\n idOrObject: FileSubscriptionResult | string | (FileSubscriptionResult | string)[],\n fileNamePattern?: string | string[],\n ): boolean | boolean[] {\n if (!adapter.unsubscribeForeignFiles) {\n sandbox.log(\n 'offFile: your js-controller does not support yet file unsubscribes. Please update to js-controller@4.1.x or newer',\n 'warn',\n );\n return false;\n }\n\n sandbox.verbose &&\n sandbox.log(\n `offFile(idOrObject=${JSON.stringify(idOrObject)}, fileNamePattern=${JSON.stringify(fileNamePattern)}) - fileSubscriptions=${sandbox.__engine.__subscriptionsFile}`,\n 'info',\n );\n\n if (idOrObject && typeof idOrObject === 'object') {\n if (Array.isArray(idOrObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < idOrObject.length; t++) {\n result.push(sandbox.offFile(idOrObject[t]) as boolean);\n }\n return result;\n }\n for (let i = context.subscriptionsFile.length - 1; i >= 0; i--) {\n if (context.subscriptionsFile[i] === idOrObject) {\n unsubscribeFile(\n script,\n context.subscriptionsFile[i].id,\n context.subscriptionsFile[i].fileNamePattern,\n );\n\n sandbox.verbose &&\n sandbox.log(\n `offFile(type=object, fileNamePattern=${JSON.stringify(fileNamePattern)}, removing id=${context.subscriptionsFile[i].id})`,\n 'info',\n );\n\n context.subscriptionsFile.splice(i, 1);\n sandbox.__engine.__subscriptionsFile--;\n return true;\n }\n }\n return false;\n }\n\n if (fileNamePattern && Array.isArray(fileNamePattern)) {\n const result: boolean[] = [];\n for (let t = 0; t < fileNamePattern.length; t++) {\n result.push(sandbox.offFile(idOrObject, fileNamePattern[t]) as boolean);\n }\n return result;\n }\n\n let deleted = 0;\n for (let i = context.subscriptionsFile.length - 1; i >= 0; i--) {\n if (\n context.subscriptionsFile[i].id === idOrObject &&\n context.subscriptionsFile[i].fileNamePattern === fileNamePattern\n ) {\n deleted++;\n unsubscribeFile(\n script,\n context.subscriptionsFile[i].id,\n context.subscriptionsFile[i].fileNamePattern,\n );\n\n sandbox.verbose &&\n sandbox.log(\n `offFile(type=string, fileNamePattern=${fileNamePattern}, removing id=${context.subscriptionsFile[i].id})`,\n 'info',\n );\n\n context.subscriptionsFile.splice(i, 1);\n sandbox.__engine.__subscriptionsFile--;\n }\n }\n return !!deleted;\n },\n /** Registers a one-time subscription which automatically unsubscribes after the first invocation */\n once: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n callback?: (event?: EventObj) => void,\n ): string | SubscriptionResult | Promise {\n function _once(cb: (obj?: EventObj) => void): string | SubscriptionResult {\n // eslint-disable-next-line prefer-const\n let subscription: string | SubscriptionResult;\n const handler = (obj?: EventObj): void => {\n subscription && sandbox.unsubscribe(subscription);\n typeof cb === 'function' && cb(obj);\n };\n subscription = sandbox.subscribe(pattern, handler) as string | SubscriptionResult;\n return subscription;\n }\n\n if (typeof callback === 'function') {\n // Callback-style: once(\"id\", (obj) => { ... })\n return _once(callback);\n }\n\n // Promise-style: once(\"id\").then(obj => { ... })\n return new Promise(resolve => _once(resolve));\n },\n schedule: function (\n pattern: SchedulerRule | AstroRule | Date | string,\n callback: () => void,\n ): IobSchedule | string | null | undefined {\n if (typeof callback !== 'function') {\n sandbox.log(`schedule callback missing`, 'error');\n return null;\n }\n\n if (\n (typeof pattern === 'string' && pattern[0] === '{') ||\n (typeof pattern === 'object' && (pattern as SchedulerRule).period)\n ) {\n sandbox.verbose &&\n sandbox.log(\n `schedule(wizard=${typeof pattern === 'object' ? JSON.stringify(pattern) : pattern})`,\n 'info',\n );\n\n if (!context.scheduler) {\n sandbox.log(\n `Cannot schedule \"${typeof pattern === 'object' ? JSON.stringify(pattern) : pattern}\" because scheduler is not available`,\n 'error',\n );\n return null;\n }\n\n const schedule: string | null = context.scheduler.add(\n pattern as SchedulerRule | string,\n sandbox.scriptName,\n callback,\n );\n if (schedule) {\n script.wizards.push(schedule);\n sandbox.__engine.__schedules += 1;\n\n if (\n sandbox.__engine.__schedules %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n }\n\n return schedule;\n }\n\n const adapterConfig: JavaScriptAdapterConfig = adapter.config as JavaScriptAdapterConfig;\n\n if (typeof pattern === 'object' && (pattern as AstroRule).astro) {\n const astroPattern = pattern as AstroRule;\n const nowDate = new Date();\n\n if (\n adapterConfig.latitude === undefined ||\n adapterConfig.longitude === undefined ||\n adapterConfig.latitude === null ||\n adapterConfig.longitude === null\n ) {\n sandbox.log('Longitude or latitude does not set. Cannot use astro.', 'error');\n return null;\n }\n\n // ensure events are calculated independent of current time\n // TODO: use getAstroStartOfDay of adapter?\n const todayNoon = new Date(nowDate);\n todayNoon.setHours(12, 0, 0, 0);\n let ts = mods.suncalc.getTimes(todayNoon, adapterConfig.latitude, adapterConfig.longitude)[\n astroPattern.astro\n ];\n\n // event on the next day, correct or force recalculation at midnight\n if (todayNoon.getDate() !== ts.getDate()) {\n todayNoon.setDate(todayNoon.getDate() - 1);\n ts = mods.suncalc.getTimes(todayNoon, adapterConfig.latitude, adapterConfig.longitude)[\n astroPattern.astro\n ];\n }\n\n if (ts.getTime().toString() === 'NaN') {\n sandbox.log(\n `Cannot calculate \"${astroPattern.astro}\" for ${adapterConfig.latitude}, ${adapterConfig.longitude}`,\n 'warn',\n );\n ts = new Date(nowDate.getTime());\n\n if (\n astroPattern.astro === 'sunriseEnd' ||\n astroPattern.astro === 'goldenHourEnd' ||\n astroPattern.astro === 'sunset' ||\n astroPattern.astro === 'nightEnd' ||\n astroPattern.astro === 'nauticalDusk'\n ) {\n ts.setHours(23);\n ts.setMinutes(59);\n ts.setSeconds(59);\n } else {\n ts.setHours(23);\n ts.setMinutes(59);\n ts.setSeconds(58);\n }\n }\n\n if (ts && astroPattern.shift) {\n ts = new Date(ts.getTime() + astroPattern.shift * 60000);\n }\n\n if (!ts || ts < nowDate) {\n const date = new Date(nowDate);\n // Event doesn't occur today - try again tomorrow\n // Calculate time till 24:00 (local, NOT UTC) and set timeout\n date.setDate(date.getDate() + 1);\n date.setMinutes(0); // Sometimes timer fires at 23:59:59\n date.setHours(0);\n date.setSeconds(1);\n date.setMilliseconds(0);\n\n sandbox.__engine.__schedules += 1;\n\n if (sandbox.__engine.__schedules % adapterConfig.maxTriggersPerScript === 0) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n sandbox.verbose &&\n sandbox.log(\n `schedule(astro=${astroPattern.astro}, offset=${astroPattern.shift}) is tomorrow, waiting until ${date.toISOString()}`,\n 'info',\n );\n\n // Calculate new schedule in the next day\n sandbox.setTimeout(() => {\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n sandbox.schedule(astroPattern, callback);\n }, date.getTime() - Date.now());\n\n return;\n }\n\n sandbox.__engine.__schedules += 1;\n\n if (sandbox.__engine.__schedules % adapterConfig.maxTriggersPerScript === 0) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n sandbox.setTimeout(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n // Reschedule in 2 seconds\n sandbox.setTimeout(() => {\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n sandbox.schedule(astroPattern, callback);\n }, 2000);\n }, ts.getTime() - Date.now());\n\n sandbox.verbose &&\n sandbox.log(\n `schedule(astro=${astroPattern.astro}, offset=${astroPattern.shift}) is today, waiting until ${ts.toISOString()}`,\n 'info',\n );\n } else {\n // fix a problem with sunday and 7\n if (typeof pattern === 'string') {\n // this could be a CRON\n const parts = pattern.replace(/\\s+/g, ' ').split(' ');\n if (parts.length >= 5 && parseInt(parts[5], 10) >= 7) {\n parts[5] = '0';\n }\n pattern = parts.join(' ');\n }\n // created in VM the date object: pattern instanceof Date => false\n // so fix it\n if (typeof pattern === 'object' && (pattern as Date).getDate) {\n pattern = new Date(pattern as Date);\n }\n\n const schedule: IobSchedule = mods.nodeSchedule.scheduleJob(pattern, (): void => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n if (schedule) {\n sandbox.__engine.__schedules += 1;\n\n if (\n sandbox.__engine.__schedules %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n schedule._ioBroker = {\n type: 'cron',\n pattern: pattern as string | Date,\n scriptName: sandbox.scriptName,\n id: `cron_${Date.now()}_${Math.round(Math.random() * 100000)}`,\n };\n\n script.schedules.push(schedule);\n } else {\n sandbox.log(`schedule(cron=${JSON.stringify(pattern)}): cannot create schedule`, 'error');\n }\n\n if (sandbox.verbose) {\n sandbox.log(`schedule(cron=${JSON.stringify(pattern)})`, 'info');\n }\n\n return schedule;\n }\n },\n scheduleById: function (id: string, ack: boolean | (() => void) | undefined, callback?: () => void): void {\n let scheduleId: IobSchedule | string | null | undefined = null;\n let currentExp: string | null = null; // current cron expression\n\n if (typeof ack === 'function') {\n callback = ack;\n ack = undefined;\n }\n\n const rhms = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9]):([0-5]?[0-9])$/; // hh:mm:ss\n const rhm = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$/; // hh:mm\n\n const init = (time: string): void => {\n if (typeof time === 'string') {\n let h: number | undefined = undefined;\n let m: number | undefined = undefined;\n let s: number | undefined = undefined;\n\n let isValid = false;\n\n let result = time.match(rhms);\n if (result) {\n [, h, m, s] = result.map(v => parseInt(v));\n isValid = true;\n } else {\n result = time.match(rhm);\n if (result) {\n [, h, m] = result.map(v => parseInt(v));\n isValid = true;\n }\n }\n\n if (isValid) {\n const cronExp = `${s ?? '0'} ${m ?? '0'} ${h ?? '0'} * * *`;\n\n if (cronExp !== currentExp) {\n sandbox.verbose &&\n sandbox.log(\n `scheduleById(id=${id}): Init with expression ${cronExp} from ${time}`,\n 'info',\n );\n currentExp = cronExp;\n\n if (scheduleId) {\n sandbox.clearSchedule(scheduleId);\n scheduleId = null;\n }\n\n scheduleId = sandbox.schedule(cronExp, () => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n }\n } else {\n sandbox.log(\n `scheduleById(id=${id},time=${time}): cannot create schedule - invalid format (HH:MM:SS or H:M:S required)`,\n 'error',\n );\n }\n } else {\n sandbox.log(\n `scheduleById(id=${id}): cannot create schedule - invalid var type (no string)`,\n 'error',\n );\n }\n };\n\n sandbox.getState(id, (err, state) => {\n if (!err && state?.val) {\n if (sandbox.verbose) {\n sandbox.log(`scheduleById(id=${id}): Init with value ${state.val}`, 'info');\n }\n init(state.val.toString());\n }\n });\n\n const triggerDef: Pattern = { id, change: 'any' };\n if (ack !== undefined) {\n triggerDef.ack = ack;\n }\n\n sandbox.on(triggerDef, obj => {\n if (obj?.state?.val) {\n sandbox.verbose &&\n sandbox.log(`scheduleById(id=${id}): Update with value ${obj.state.val}`, 'info');\n init(obj.state.val.toString());\n }\n });\n },\n getAstroDate: function (pattern: AstroEvent, date?: Date | number, offsetMinutes?: number): Date | undefined {\n if (date === undefined) {\n date = new Date();\n }\n if (typeof date === 'number') {\n date = new Date(date);\n } else {\n date = new Date(date.getTime());\n }\n\n if (!consts.astroList.includes(pattern)) {\n const pos = consts.astroListLow.indexOf(pattern.toLowerCase());\n if (pos !== -1) {\n pattern = consts.astroList[pos];\n }\n }\n\n if (\n (!(adapter.config as JavaScriptAdapterConfig).latitude &&\n ((adapter.config as JavaScriptAdapterConfig).latitude as unknown as number) !== 0) ||\n (!(adapter.config as JavaScriptAdapterConfig).longitude &&\n ((adapter.config as JavaScriptAdapterConfig).longitude as unknown as number) !== 0)\n ) {\n sandbox.log('Longitude or latitude does not set. Cannot use astro.', 'error');\n return;\n }\n\n // ensure events are calculated independent of current time\n date.setHours(12, 0, 0, 0);\n let ts = mods.suncalc.getTimes(\n date,\n (adapter.config as JavaScriptAdapterConfig).latitude,\n (adapter.config as JavaScriptAdapterConfig).longitude,\n )[pattern];\n\n if (ts === undefined || ts.getTime().toString() === 'NaN') {\n sandbox.log(\n `Cannot calculate astro date \"${pattern}\" for ${(adapter.config as JavaScriptAdapterConfig).latitude}, ${(adapter.config as JavaScriptAdapterConfig).longitude}`,\n 'warn',\n );\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getAstroDate(pattern=${pattern}, date=${date.toString()}) => ${ts}`, 'info');\n }\n\n if (offsetMinutes !== undefined) {\n ts = new Date(ts.getTime() + offsetMinutes * 60000);\n }\n return ts;\n },\n isAstroDay: function (): boolean | undefined {\n const nowDate = new Date();\n const dayBegin = sandbox.getAstroDate('sunrise');\n const dayEnd = sandbox.getAstroDate('sunset');\n\n if (dayBegin === undefined || dayEnd === undefined) {\n return;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`isAstroDay() => ${nowDate >= dayBegin && nowDate <= dayEnd}`, 'info');\n }\n\n return nowDate >= dayBegin && nowDate <= dayEnd;\n },\n clearSchedule: function (schedule: IobSchedule | ScheduleName | string): boolean {\n if (context.scheduler?.get(schedule as string | ScheduleName)) {\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => wizard cleared', 'info');\n }\n const pos = script.wizards.indexOf(schedule as string);\n if (pos !== -1) {\n script.wizards.splice(pos, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n }\n context.scheduler.remove(schedule as string | ScheduleName);\n return true;\n }\n for (let i = 0; i < script.schedules.length; i++) {\n // Support both full IobSchedule objects (with nested _ioBroker) and\n // bare _ioBroker metadata objects as returned by getSchedules()\n const ioBrokerMeta =\n schedule && typeof schedule === 'object'\n ? (schedule as IobSchedule)._ioBroker || (schedule as { type?: string; id?: string })\n : undefined;\n if (ioBrokerMeta?.type === 'cron') {\n if (script.schedules[i]._ioBroker.id === ioBrokerMeta.id) {\n if (!mods.nodeSchedule.cancelJob(script.schedules[i])) {\n sandbox.log('Error by canceling scheduled job', 'error');\n }\n script.schedules.splice(i, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => cleared', 'info');\n }\n return true;\n }\n } else if (script.schedules[i] === schedule) {\n if (!mods.nodeSchedule.cancelJob(script.schedules[i])) {\n sandbox.log('Error by canceling scheduled job', 'error');\n }\n script.schedules.splice(i, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => cleared', 'info');\n }\n return true;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => invalid handler', 'warn');\n }\n return false;\n },\n getSchedules: function (allScripts?: boolean): ScheduleName[] {\n const schedules = context.scheduler?.getList() || [];\n if (allScripts) {\n Object.keys(context.scripts).forEach(\n name =>\n context.scripts[name].schedules &&\n // IO-8: Spread instead of JSON.parse(JSON.stringify()) – _ioBroker has only primitive fields\n context.scripts[name].schedules.forEach(s =>\n schedules.push({ ...s._ioBroker } as unknown as ScheduleName),\n ),\n );\n } else {\n script.schedules &&\n // IO-8: Spread instead of JSON.parse(JSON.stringify())\n script.schedules.forEach(s => schedules.push({ ...s._ioBroker } as unknown as ScheduleName));\n }\n return schedules;\n },\n setState: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | 'true' | 'false' | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return setStateHelper(sandbox, false, false, id, state, isAck, callback);\n },\n setStateChanged: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return setStateHelper(sandbox, false, true, id, state, isAck, callback);\n },\n setStateDelayed: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | number | undefined,\n delay?: number | boolean,\n clearRunning?: boolean | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): number | null {\n // find arguments\n if (typeof isAck !== 'boolean') {\n callback = clearRunning as (err?: Error | null) => void;\n clearRunning = delay as boolean;\n delay = isAck as number;\n isAck = undefined;\n }\n if (typeof delay !== 'number') {\n callback = clearRunning as (err?: Error | null) => void;\n clearRunning = delay as boolean;\n delay = 0;\n }\n if (typeof clearRunning !== 'boolean') {\n callback = clearRunning;\n clearRunning = true;\n }\n\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n sandbox.verbose &&\n sandbox.log(\n `setStateDelayed(id=${id}, state=${JSON.stringify(state)}, isAck=${isAck}, delay=${delay}, clearRunning=${clearRunning})`,\n 'info',\n );\n\n if (clearRunning) {\n if (timers[id]) {\n sandbox.verbose &&\n sandbox.log(`setStateDelayed: clear ${timers[id].length} running timers`, 'info');\n\n // collect affected scriptNames before deleting\n const affectedScripts = new Set(timers[id].map(e => e.scriptName));\n for (let i = 0; i < timers[id].length; i++) {\n clearTimeout(timers[id][i].t);\n }\n delete timers[id];\n // update timersByScript reverse-index for all affected scripts\n for (const scriptName of affectedScripts) {\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log('setStateDelayed: no running timers', 'info');\n }\n }\n }\n // If no delay => starts immediately\n if (!delay) {\n sandbox.setState(id, state, isAck, callback);\n return null;\n }\n // If delay\n timers[id] = timers[id] || [];\n\n // calculate timerId\n context.timerId++;\n if (context.timerId > 0xfffffffe) {\n context.timerId = 0;\n }\n\n // Start timeout\n const timer = setTimeout(\n function (_timerId, _id, _state, _isAck) {\n sandbox.setState(_id, _state, _isAck, callback);\n // delete timer handler\n if (timers[_id]) {\n // optimisation\n if (timers[_id].length === 1) {\n const scriptName = timers[_id][0].scriptName;\n delete timers[_id];\n // update timersByScript reverse-index\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(_id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n } else {\n for (let t = 0; t < timers[_id].length; t++) {\n if (timers[_id][t].id === _timerId) {\n const scriptName = timers[_id][t].scriptName;\n timers[_id].splice(t, 1);\n if (!timers[_id].length) {\n delete timers[_id];\n // update timersByScript reverse-index\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(_id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n break;\n }\n }\n }\n }\n },\n delay,\n context.timerId,\n id,\n state,\n isAck,\n );\n\n // add timer handler\n timers[id].push({\n t: timer,\n id: context.timerId,\n ts: Date.now(),\n delay: delay,\n val:\n isObject(state) && (state as ioBroker.SettableState).val !== undefined\n ? ((state as ioBroker.SettableState).val as ioBroker.StateValue)\n : (state as ioBroker.StateValue),\n ack:\n isObject(state) &&\n (state as ioBroker.SettableState).val !== undefined &&\n (state as ioBroker.SettableState).ack !== undefined\n ? (state as ioBroker.SettableState).ack\n : isAck,\n scriptName: name,\n });\n // Keep reverse-index in sync for O(1) cleanup in stopScript\n if (!context.timersByScript.has(name)) {\n context.timersByScript.set(name, new Set());\n }\n context.timersByScript.get(name)!.add(id);\n\n return context.timerId;\n },\n clearStateDelayed: function (id: string, timerId: number): boolean {\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`clearStateDelayed(id=${id}, timerId=${timerId})`, 'info');\n }\n\n if (timers[id]) {\n // collect scriptNames of entries that will be removed\n const removedScripts = new Set();\n for (let i = timers[id].length - 1; i >= 0; i--) {\n if (timerId === undefined || timers[id][i].id === timerId) {\n const clearedTimerId = timers[id][i].id;\n removedScripts.add(timers[id][i].scriptName);\n clearTimeout(timers[id][i].t);\n if (timerId !== undefined) {\n timers[id].splice(i, 1);\n }\n if (sandbox.verbose) {\n sandbox.log(`clearStateDelayed: clear timer ${clearedTimerId}`, 'info');\n }\n }\n }\n if (timerId === undefined) {\n delete timers[id];\n } else {\n if (!timers[id].length) {\n delete timers[id];\n }\n }\n // IO-7: keep the timersByScript reverse-index in sync. For every script whose\n // timer(s) we just removed, drop `id` from its set – unless that script still has\n // another timer for this state (other scripts' timers may keep timers[id] alive).\n if (removedScripts.size) {\n const remaining = timers[id]; // undefined if the whole entry was deleted\n for (const scriptName of removedScripts) {\n const stateIds = context.timersByScript.get(scriptName);\n if (!stateIds) {\n continue;\n }\n if (remaining?.some(e => e.scriptName === scriptName)) {\n continue;\n }\n stateIds.delete(id);\n if (!stateIds.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n return true;\n }\n return false;\n },\n getStateDelayed: function (\n id: string | number,\n ):\n | null\n | { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }\n | { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n | Record<\n string,\n { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n > {\n const now = Date.now();\n if (id) {\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n // If timerId given\n if (typeof id === 'number') {\n for (const _id_ in timers) {\n if (Object.prototype.hasOwnProperty.call(timers, _id_)) {\n for (let ttt = 0; ttt < timers[_id_].length; ttt++) {\n if (timers[_id_][ttt].id === id) {\n return {\n timerId: id,\n left: timers[_id_][ttt].delay - (now - timers[_id_][ttt].ts),\n delay: timers[_id_][ttt].delay,\n val: timers[_id_][ttt].val,\n ack: timers[_id_][ttt].ack,\n };\n }\n }\n }\n }\n return null;\n }\n\n const result: {\n timerId: number;\n left: number;\n delay: number;\n val: ioBroker.StateValue;\n ack?: boolean;\n }[] = [];\n if (Object.prototype.hasOwnProperty.call(timers, id) && timers[id] && timers[id].length) {\n for (let tt = 0; tt < timers[id].length; tt++) {\n result.push({\n timerId: timers[id][tt].id,\n left: timers[id][tt].delay - (now - timers[id][tt].ts),\n delay: timers[id][tt].delay,\n val: timers[id][tt].val,\n ack: timers[id][tt].ack,\n });\n }\n }\n return result;\n }\n const result: Record<\n string,\n { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n > = {};\n for (const _id in timers) {\n if (Object.prototype.hasOwnProperty.call(timers, _id) && timers[_id] && timers[_id].length) {\n result[_id] = [];\n for (let t = 0; t < timers[_id].length; t++) {\n result[_id].push({\n timerId: timers[_id][t].id,\n left: timers[_id][t].delay - (now - timers[_id][t].ts),\n delay: timers[_id][t].delay,\n val: timers[_id][t].val,\n ack: timers[_id][t].ack,\n });\n }\n }\n }\n return result;\n },\n getStateAsync: async function (id: string): Promise {\n let state: ioBroker.State | null | undefined;\n if (id.includes('.')) {\n state = await adapter.getForeignStateAsync(id);\n } else {\n state = await adapter.getStateAsync(id);\n }\n return context.convertBackStringifiedValues(id, state);\n },\n setStateAsync: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n return new Promise((resolve, reject) =>\n setStateHelper(sandbox, false, false, id, state, isAck, err => (err ? reject(err) : resolve())),\n );\n },\n setStateChangedAsync: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n return new Promise((resolve, reject) =>\n setStateHelper(sandbox, false, true, id, state, isAck, err => (err ? reject(err) : resolve())),\n );\n },\n getState: function (\n id: string,\n callback?: (err: Error | null | undefined, state?: ioBroker.State | null) => void,\n ): undefined | void | (ioBroker.State & { notExist?: true }) | null {\n if (typeof id !== 'string') {\n sandbox.log(`getState has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return undefined;\n }\n\n if (typeof callback === 'function') {\n if (!id.includes('.')) {\n adapter.getState(id, (err, state) =>\n callback(err, context.convertBackStringifiedValues(id, state)),\n );\n } else {\n void adapter.getForeignState(id, (err, state) =>\n callback(err, context.convertBackStringifiedValues(id, state)),\n );\n }\n } else {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n sandbox.log(\n 'The \"getState\" method cannot be used synchronously, because the adapter setting \"Do not subscribe to all states on start\" is enabled.',\n 'error',\n );\n sandbox.log(\n `Please disable that setting or use \"getState\" with a callback, e.g.: getState('${id}', (err, state) => { ... });`,\n 'error',\n );\n } else {\n if (states[id]) {\n sandbox.verbose &&\n sandbox.log(\n `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[id])}`,\n 'info',\n );\n if (context.interimStateValues[id] !== undefined) {\n return context.convertBackStringifiedValues(id, context.interimStateValues[id]);\n }\n return context.convertBackStringifiedValues(id, states[id]);\n } else if (states[`${adapter.namespace}.${id}`]) {\n sandbox.verbose &&\n sandbox.log(\n `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[`${adapter.namespace}.${id}`])}`,\n 'info',\n );\n if (context.interimStateValues[`${adapter.namespace}.${id}`] !== undefined) {\n return context.convertBackStringifiedValues(\n id,\n context.interimStateValues[`${adapter.namespace}.${id}`],\n );\n }\n return context.convertBackStringifiedValues(id, states[`${adapter.namespace}.${id}`]);\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => not found`, 'info');\n }\n\n context.logWithLineInfo(\n `getState \"${id}\" not found (3)${states[id] !== undefined ? ` states[id]=${JSON.stringify(states[id])}` : ''}`,\n ); ///xxx\n return { val: null, notExist: true } as ioBroker.State & { notExist?: true };\n }\n }\n },\n existsState: function (\n id: string,\n callback?: (err: Error | null | undefined, stateExists?: boolean) => void,\n ): void | boolean {\n if (typeof id !== 'string') {\n sandbox.log(`existsState has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return false;\n }\n\n if (typeof callback === 'function') {\n void adapter.getForeignObject(id, (err, obj) => {\n if (!obj || obj.type !== 'state') {\n callback(err, false);\n return;\n }\n\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n void adapter.getForeignState(id, (err, state) => {\n callback(err, !!state);\n });\n } else {\n callback(err, !!states[id]);\n }\n });\n } else {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n sandbox.log(\n 'The \"existsState\" method cannot be used synchronously, because the adapter setting \"Do not subscribe to all states on start\" is enabled.',\n 'error',\n );\n sandbox.log(\n `Please disable that setting or use \"existsState\" with a callback, e.g.: existsState('${id}', (err, stateExists) => { ... });`,\n 'error',\n );\n } else {\n return !!states[id];\n }\n }\n },\n existsObject: function (\n id: string,\n callback?: (err: Error | null | undefined, objectExists?: boolean) => void,\n ): void | boolean {\n if (typeof id !== 'string') {\n sandbox.log(\n `existsObject has been called with id of type \"${typeof id}\" but expects a string`,\n 'error',\n );\n return false;\n }\n\n if (typeof callback === 'function') {\n void adapter.getForeignObject(id, (err, obj) => callback(err, !!obj));\n } else {\n return !!objects[id];\n }\n },\n getIdByName: function (name: string, alwaysArray?: boolean): string | string[] | null {\n sandbox.verbose &&\n sandbox.log(\n `getIdByName(name=${name}, alwaysArray=${alwaysArray}) => ${JSON.stringify(context.names[name])}`,\n 'info',\n );\n if (Object.prototype.hasOwnProperty.call(context.names, name)) {\n if (alwaysArray) {\n return !Array.isArray(context.names[name]) ? [context.names[name]] : context.names[name];\n }\n return context.names[name];\n }\n if (alwaysArray) {\n return [];\n }\n return null;\n },\n getObject: function (\n id: string,\n enumName: null | string | ((err: Error | null | undefined, obj?: ioBroker.Object | null) => void),\n cb?: (err: Error | null | undefined, obj?: ioBroker.Object | null) => void,\n ): void | ioBroker.Object | null {\n if (typeof id !== 'string') {\n sandbox.log(`getObject has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return null;\n }\n\n if (typeof enumName === 'function') {\n cb = enumName;\n enumName = null;\n }\n // with callback\n if (typeof cb === 'function') {\n void adapter.getForeignObject(id, (err, obj) => {\n if (obj) {\n objects[id] = obj;\n } else if (objects[id]) {\n delete objects[id];\n }\n let result: ioBroker.Object | null | undefined;\n try {\n result = objects[id] ? structuredClone(objects[id]) : undefined;\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n return cb(null, null);\n }\n sandbox.verbose &&\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n cb(err, result);\n });\n } else {\n if (!objects[id]) {\n sandbox.verbose &&\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => does not exist`, 'info');\n sandbox.log(`Object \"${id}\" does not exist`, 'warn');\n return null;\n }\n if (enumName) {\n const e = eventObj.getObjectEnumsSync(context, id);\n const obj = structuredClone(objects[id]) as ioBroker.Object & {\n enumIds: string[];\n enumNames: string[];\n };\n obj.enumIds = structuredClone(e.enumIds);\n obj.enumNames = structuredClone(e.enumNames);\n if (typeof enumName === 'string') {\n const r = new RegExp(`^enum\\\\.${enumName}\\\\.`);\n for (let i = obj.enumIds.length - 1; i >= 0; i--) {\n if (!r.test(obj.enumIds[i])) {\n obj.enumIds.splice(i, 1);\n obj.enumNames.splice(i, 1);\n }\n }\n }\n sandbox.verbose &&\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(obj)}`, 'info');\n\n return obj;\n }\n let result: ioBroker.Object | null | undefined;\n try {\n result = structuredClone(objects[id]);\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n return null;\n }\n sandbox.verbose &&\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n return result;\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n setObject: function (\n _id: string,\n _obj: ioBroker.Object,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n sandbox.log('Function \"setObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"setObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n extendObject: function (\n _id: string,\n _obj: Partial,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n sandbox.log('Function \"extendObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"extendObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n deleteObject: function (\n _id: string,\n _isRecursive?: boolean | ioBroker.ErrorCallback,\n callback?: ioBroker.ErrorCallback,\n ): void {\n if (typeof _isRecursive === 'function') {\n callback = _isRecursive;\n }\n sandbox.log('Function \"deleteObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"deleteObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n getEnums: function (enumName?: string): { id: string; members: string[]; name: ioBroker.StringOrTranslated }[] {\n const result: { id: string; members: string[]; name: ioBroker.StringOrTranslated }[] = [];\n const r = enumName ? new RegExp(`^enum\\\\.${enumName}\\\\.`) : false;\n for (const enumId of enums) {\n if (!r || r.test(enumId)) {\n const common: ioBroker.EnumCommon =\n (objects[enumId] as ioBroker.EnumObject).common || ({} as ioBroker.EnumCommon);\n result.push({\n id: enumId,\n members: common.members || [],\n name: common.name || '',\n });\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`getEnums(enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n }\n return structuredClone(result);\n },\n createAlias: function (\n name: string,\n alias: string | CommonAlias,\n forceCreation: boolean | Partial | ((err: Error | null) => void) | undefined,\n common?: Partial | Record | ((err: Error | null) => void),\n native?: Record | ((err: Error | null) => void),\n callback?: (err: Error | null) => void,\n ) {\n if (typeof native === 'function') {\n callback = native as (err: Error | null) => void;\n native = {};\n }\n if (typeof common === 'function') {\n callback = common as (err: Error | null) => void;\n common = undefined;\n }\n if (typeof forceCreation === 'function') {\n callback = forceCreation as (err: Error | null) => void;\n forceCreation = undefined;\n }\n if (isObject(forceCreation)) {\n native = common;\n common = forceCreation as Partial;\n forceCreation = undefined;\n }\n\n if (typeof name !== 'string') {\n const err = `Wrong type of name \"${typeof name}\". Expected \"string\".`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name) {\n const err = 'Empty ID is not allowed.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name.startsWith('alias.0.')) {\n name = `alias.0.${name}`;\n }\n\n const _common: Partial = (common as Partial) || {};\n if (isObject(_common.alias)) {\n // alias already in common, use this\n } else if (\n isObject(alias) &&\n (typeof (alias as CommonAlias).id === 'string' || isObject((alias as CommonAlias).id))\n ) {\n _common.alias = alias as CommonAlias;\n } else if (typeof alias === 'string') {\n _common.alias = { id: alias };\n } else {\n const err = 'Source ID needs to be provided as string or object with id property.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n let aliasSourceId = '';\n if (_common.alias) {\n aliasSourceId = isObject(_common.alias.id)\n ? (_common.alias.id as { read: string; write: string }).read\n : (_common.alias.id as string);\n if (!objects[aliasSourceId] && objects[`${adapter.namespace}.${aliasSourceId}`]) {\n aliasSourceId = `${adapter.namespace}.${aliasSourceId}`;\n if (isObject(_common.alias.id)) {\n (_common.alias.id as { read: string; write: string }).read = aliasSourceId;\n } else {\n _common.alias.id = aliasSourceId;\n }\n }\n if (\n isObject(_common.alias.id) &&\n (_common.alias.id as { read: string; write: string }).write &&\n !objects[(_common.alias.id as { read: string; write: string }).write] &&\n objects[`${adapter.namespace}.${(_common.alias.id as { read: string; write: string }).write}`]\n ) {\n (_common.alias.id as { read: string; write: string }).write =\n `${adapter.namespace}.${(_common.alias.id as { read: string; write: string }).write}`;\n }\n }\n const obj = objects[aliasSourceId];\n if (!obj) {\n const err = `Alias source object \"${aliasSourceId}\" does not exist.`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (obj.type !== 'state') {\n const err = `Alias source object \"${aliasSourceId}\" must be a state object.`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (_common.name === undefined) {\n _common.name = obj.common.name || name;\n }\n if (_common.type === undefined && obj.common.type !== undefined) {\n _common.type = obj.common.type;\n }\n if (_common.role === undefined && obj.common.role !== undefined) {\n _common.role = obj.common.role;\n }\n if (_common.min === undefined && obj.common.min !== undefined) {\n _common.min = obj.common.min;\n }\n if (_common.max === undefined && obj.common.max !== undefined) {\n _common.max = obj.common.max;\n }\n if (_common.step === undefined && obj.common.step !== undefined) {\n _common.step = obj.common.step;\n }\n if (_common.unit === undefined && obj.common.unit !== undefined) {\n _common.unit = obj.common.unit;\n }\n if (_common.desc === undefined && obj.common.desc !== undefined) {\n _common.desc = obj.common.desc;\n }\n\n return sandbox.createState(\n name,\n undefined,\n forceCreation as boolean,\n _common,\n native,\n callback as (err?: Error | null) => void,\n );\n },\n createState: async function (\n name: string,\n initValue: undefined | ioBroker.StateValue | ioBroker.State,\n forceCreation:\n | boolean\n | undefined\n | Record\n | Partial\n | ((err: Error | null) => void),\n common?: Partial | ((err: Error | null) => void),\n native?: Record | ((err: Error | null) => void),\n callback?: (error: Error | null | undefined, id?: string) => void,\n ) {\n if (typeof native === 'function') {\n callback = native as (err?: Error | null) => void;\n native = {};\n }\n if (typeof common === 'function') {\n callback = common as (err?: Error | null) => void;\n common = undefined;\n }\n if (typeof initValue === 'function') {\n callback = initValue as (err?: Error | null) => void;\n initValue = undefined;\n }\n if (typeof forceCreation === 'function') {\n callback = forceCreation as (err?: Error | null) => void;\n forceCreation = undefined;\n }\n if (isObject(initValue)) {\n common = initValue as Partial;\n native = forceCreation as Record;\n forceCreation = undefined;\n initValue = undefined;\n }\n if (isObject(forceCreation)) {\n native = common as Record;\n common = forceCreation as Partial;\n forceCreation = undefined;\n }\n\n if (typeof name !== 'string') {\n const err = `Wrong type of name \"${typeof name}\". Expected \"string\".`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name) {\n const err = 'Empty ID is not allowed.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n const isAlias = name.startsWith('alias.0.');\n\n const _common: ioBroker.StateCommon = (common || {}) as ioBroker.StateCommon;\n _common.name = _common.name || name;\n _common.role = _common.role || 'state';\n _common.type = _common.type || 'mixed';\n if (!isAlias && initValue === undefined) {\n initValue = _common.def;\n }\n\n native = native || {};\n\n // Check min, max and def values for number\n if (_common.type !== undefined && _common.type === 'number') {\n let min = 0;\n let max = 0;\n let def = 0;\n let err: string | undefined;\n if (_common.min !== undefined) {\n min = _common.min;\n if (typeof min !== 'number') {\n min = parseFloat(min);\n if (isNaN(min)) {\n err = `Wrong type of ${name}.common.min`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.min = min;\n }\n }\n if (_common.max !== undefined) {\n max = _common.max;\n if (typeof max !== 'number') {\n max = parseFloat(max);\n if (isNaN(max)) {\n err = `Wrong type of ${name}.common.max`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.max = max;\n }\n }\n\n if (_common.def !== undefined) {\n if (isAlias) {\n delete _common.def;\n } else {\n def = _common.def;\n if (typeof def !== 'number') {\n def = parseFloat(def);\n if (isNaN(def)) {\n err = `Wrong type of ${name}.common.def`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.def = def;\n }\n }\n }\n\n if (_common.min !== undefined && _common.max !== undefined && min > max) {\n _common.max = min;\n _common.min = max;\n }\n if (_common.def !== undefined && _common.min !== undefined && def < min) {\n _common.def = min;\n }\n if (_common.def !== undefined && _common.max !== undefined && def > max) {\n _common.def = max;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `createState(name=${name}, initValue=${JSON.stringify(initValue)}, forceCreation=${JSON.stringify(forceCreation)}, common=${JSON.stringify(common)}, native=${JSON.stringify(native)}, isAlias=${isAlias})`,\n 'debug',\n );\n }\n\n let id = `${adapter.namespace}.${name}`;\n if (name.match(/^javascript\\.\\d+\\./) || name.startsWith('0_userdata.0.') || isAlias) {\n id = name;\n }\n if (id.match(/^javascript\\.\\d+\\.scriptEnabled/)) {\n sandbox.log(\n `Own states (${id}) should not be created in javascript.X.scriptEnabled.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n } else if (id.match(/^javascript\\.\\d+\\.scriptProblem/)) {\n sandbox.log(\n `Own states (${id}) should not be created in javascript.X.scriptProblem.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n }\n\n // User can create aliases by two ways:\n // - id is starting with \"alias.0.\" and common.alias.id is set, so the state defined in common.alias.id will be created automatically if not exists\n // - id is not starting with \"alias.0.\", but common.alias is set, so the state defined in common.alias will be created automatically if not exists\n if (!isAlias && _common.alias) {\n // check and create if not exists the alias\n let alias: CommonAlias;\n if (typeof _common.alias === 'string') {\n alias = {\n id: _common.alias,\n };\n } else if (typeof _common.alias === 'boolean') {\n const parts = id.split('.');\n parts[0] = 'alias';\n parts[1] = '0';\n\n alias = {\n id: parts.join('.'),\n };\n } else {\n alias = _common.alias;\n }\n delete _common.alias;\n\n if (!(alias.id as string).startsWith('alias.0.')) {\n alias.id = `alias.0.${alias.id as string}`;\n }\n\n let aObj: ioBroker.StateObject | null | undefined;\n try {\n aObj = (await adapter.getForeignObjectAsync(alias.id as string)) as\n | ioBroker.StateObject\n | null\n | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n const _obj: ioBroker.StateObject = {\n _id: alias.id as string,\n type: 'state',\n common: {\n name: `Alias to ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n alias: {\n id,\n read: alias.read,\n write: alias.write,\n },\n },\n native: {},\n };\n\n await adapter.setForeignObjectAsync(alias.id as string, _obj);\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${alias.id as string}\": ${err as Error}`, 'error');\n }\n }\n } else if (isAlias && _common.alias) {\n if (typeof _common.alias === 'string') {\n _common.alias = {\n id: _common.alias,\n };\n }\n const readId = typeof _common.alias.id === 'string' ? _common.alias.id : _common.alias.id.read;\n let writeId: string | undefined =\n typeof _common.alias.id === 'string' ? _common.alias.id : _common.alias.id.write;\n if (writeId === readId) {\n writeId = undefined;\n }\n // try to create the linked states\n let aObj: ioBroker.StateObject | null | undefined;\n try {\n aObj = (await adapter.getForeignObjectAsync(readId)) as ioBroker.StateObject | null | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n await adapter.setForeignObjectAsync(readId, {\n type: 'state',\n common: {\n name: `State for ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n },\n native: {},\n });\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${readId}\": ${err as Error}`, 'error');\n }\n }\n if (writeId && _common.write !== false) {\n try {\n aObj = (await adapter.getForeignObjectAsync(writeId)) as\n | ioBroker.StateObject\n | null\n | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n await adapter.setForeignObjectAsync(writeId, {\n type: 'state',\n common: {\n name: `Write state for ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n },\n native: {},\n });\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${writeId}\": ${err as Error}`, 'error');\n }\n }\n }\n }\n\n let obj: ioBroker.Object | null | undefined;\n try {\n obj = await adapter.getForeignObjectAsync(id);\n } catch {\n // ignore\n }\n\n if (\n obj?._id &&\n validIdForAutomaticFolderCreation(obj._id) &&\n obj.type === 'folder' &&\n obj.native &&\n obj.native.autocreated === 'by automatic ensure logic'\n ) {\n // ignore a default created object because we now have a better defined one\n obj = null;\n }\n\n if (!obj || forceCreation) {\n // create new one\n const newObj: ioBroker.StateObject = {\n _id: id,\n common: _common,\n native,\n type: 'state',\n };\n try {\n await adapter.setForeignObjectAsync(id, newObj);\n } catch (err: unknown) {\n sandbox.log(`Cannot set object \"${id}\": ${err as Error}`, 'warn');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err as Error);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n // Update meta objects\n context.updateObjectContext(id, newObj);\n\n if (!isAlias && initValue !== undefined) {\n if (isObject(initValue) && (initValue as ioBroker.State).ack !== undefined) {\n setStateHelper(sandbox, true, false, id, initValue, callback);\n } else {\n setStateHelper(sandbox, true, false, id, initValue, true, callback);\n }\n } else if (!isAlias && !forceCreation) {\n setStateHelper(sandbox, true, false, id, null, callback);\n } else if (isAlias) {\n try {\n const state = await adapter.getForeignStateAsync(id);\n if (state) {\n states[id] = state;\n }\n } catch {\n // ignore\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n } else if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n await ensureObjectStructure(id);\n } else {\n // state yet exists\n if (\n !(adapter.config as JavaScriptAdapterConfig).subscribe &&\n !states[id] &&\n states[`${adapter.namespace}.${id}`] === undefined\n ) {\n states[id] = {\n val: null,\n ack: true,\n lc: Date.now(),\n ts: Date.now(),\n q: 0,\n from: `system.adapter.${adapter.namespace}`,\n };\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n\n await ensureObjectStructure(id);\n }\n },\n deleteState: function (id: string, callback?: (err: Error | null | undefined, found?: boolean) => void): void {\n // todo: check rights\n // todo: also remove from \"names\"\n\n if (sandbox.verbose) {\n sandbox.log(`deleteState(id=${id})`, 'debug');\n }\n\n let found = false;\n if ((id.startsWith('0_userdata.0.') || id.startsWith(adapter.namespace)) && objects[id]) {\n found = true;\n delete objects[id];\n if (states[id]) {\n delete states[id];\n }\n\n adapter.delForeignObject(id, function (err) {\n err && sandbox.log(`Object for state \"${id}\" does not exist: ${err}`, 'warn');\n\n adapter.delForeignState(id, function (err) {\n err && sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n });\n } else if (objects[`${adapter.namespace}.${id}`]) {\n delete objects[`${adapter.namespace}.${id}`];\n found = true;\n if (states[`${adapter.namespace}.${id}`]) {\n delete states[`${adapter.namespace}.${id}`];\n }\n\n adapter.delObject(id, function (err) {\n err && sandbox.log(`Object for state \"${id}\" does not exist: ${err}`, 'warn');\n\n adapter.delState(id, function (err) {\n err && sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n });\n } else {\n const err = 'Not found';\n sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err), found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n }\n },\n sendTo: function (\n _adapter: string,\n cmd: string,\n msg?: any,\n options?: Record | ((result: any, options: Record, _adapter: string) => void),\n callback?: (result: any, options: Record, _adapter: string) => void,\n ): void {\n const defaultTimeout = 20000;\n\n if (typeof options === 'function') {\n callback = options as (result: any, options: Record, _adapter: string) => void;\n options = { timeout: defaultTimeout };\n }\n\n let timeout: NodeJS.Timeout | null = null;\n if (typeof callback === 'function') {\n const timeoutDuration = parseInt(options?.timeout, 10) || defaultTimeout;\n\n timeout = setTimeout(() => {\n timeout = null;\n\n if (sandbox.verbose) {\n sandbox.log(`sendTo => timeout: ${timeoutDuration}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, { error: 'timeout' }, options as Record, _adapter);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutDuration);\n }\n\n let cbFunc: undefined | ((result: any) => void);\n if (timeout) {\n cbFunc = function (result: any): void {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n if (sandbox.verbose && result) {\n sandbox.log(`sendTo => ${JSON.stringify(result)}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, result, options as Record, _adapter);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n };\n }\n\n // If specific instance\n if (_adapter.match(/\\.[0-9]+$/)) {\n sandbox.verbose &&\n sandbox.log(\n `sendTo(instance=${_adapter}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'})`,\n 'info',\n );\n\n adapter.sendTo(_adapter, cmd, msg, cbFunc, options);\n } else {\n // IO-9: Cache sendTo broadcast instance list – avoid repeated getObjectView DB calls\n const cached = context.sendToInstanceCache.get(_adapter);\n if (cached) {\n cached.forEach(instance => {\n sandbox.verbose &&\n sandbox.log(\n `sendTo(instance=${instance}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'}) [cached]`,\n 'info',\n );\n adapter.sendTo(instance, cmd, msg, cbFunc, options);\n });\n } else {\n // Send it to all instances\n context.adapter.getObjectView(\n 'system',\n 'instance',\n { startkey: `system.adapter.${_adapter}.`, endkey: `system.adapter.${_adapter}.\\u9999` },\n options,\n (err, res) => {\n if (err || !res) {\n sandbox.log(`sendTo failed: ${err?.message}`, 'error');\n return;\n }\n\n const instances = res.rows.map(item => item.id.substring('system.adapter.'.length));\n // Store in cache for subsequent calls (invalidated on system.adapter.* object change).\n // LRU eviction: keep the map bounded to avoid unbounded memory growth.\n if (context.sendToInstanceCache.size >= 200) {\n const firstKey = context.sendToInstanceCache.keys().next().value;\n if (firstKey !== undefined) {\n context.sendToInstanceCache.delete(firstKey);\n }\n }\n context.sendToInstanceCache.set(_adapter, instances);\n\n instances.forEach(instance => {\n sandbox.verbose &&\n sandbox.log(\n `sendTo(instance=${instance}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'})`,\n 'info',\n );\n adapter.sendTo(instance, cmd, msg, cbFunc, options);\n });\n },\n );\n }\n }\n },\n sendto: function (\n _adapter: string,\n cmd: string,\n msg: any,\n callback?: (result: any, options: Record, _adapter: string) => void,\n ): void {\n return sandbox.sendTo(_adapter, cmd, msg, callback);\n },\n sendToAsync: function (_adapter: string, cmd: string, msg?: any, options?: Record): Promise {\n return new Promise((resolve, reject) => {\n sandbox.sendTo(_adapter, cmd, msg, options, res => {\n if (!res || res.error) {\n reject(res ? new Error(res.error) : new Error('Unknown error'));\n } else {\n resolve(res);\n }\n });\n });\n },\n sendToHost: function (host: string, cmd: string, msg?: any, callback?: (result: any) => void): void {\n if (!(adapter.config as JavaScriptAdapterConfig).enableSendToHost) {\n const error =\n 'sendToHost is not available. Please enable \"Enable SendToHost\" option in instance settings';\n sandbox.log(error, 'error');\n\n if (typeof callback === 'function') {\n // leave it as a normal function and not as a lambda, to hide the \"this\" object\n setImmediate(function () {\n callback(error);\n });\n }\n } else {\n sandbox.verbose &&\n sandbox.log(`sendToHost(adapter=${host}, cmd=${cmd}, msg=${JSON.stringify(msg)})`, 'info');\n adapter.sendToHost(host, cmd, msg, callback);\n }\n },\n sendToHostAsync: function (host: string, cmd: string, msg?: any): Promise {\n return new Promise((resolve, reject) => {\n sandbox.sendToHost(host, cmd, msg, res => {\n if (!res || res.error) {\n reject(res ? new Error(res.error) : new Error('Unknown error'));\n } else {\n resolve(res);\n }\n });\n });\n },\n registerNotification: function (msg: string, isAlert?: boolean): void {\n const category = !isAlert ? 'scriptMessage' : 'scriptAlert';\n\n if (sandbox.verbose) {\n sandbox.log(`registerNotification(msg=${msg}, category=${category})`, 'info');\n }\n\n void adapter.registerNotification('javascript', category, msg);\n },\n setInterval: function (callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout | null {\n if (typeof callback === 'function') {\n const int: NodeJS.Timeout = setInterval(() => {\n try {\n callback.call(sandbox, ...args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, ms);\n // IO-10: Set.add() – O(1) instead of Array.push()\n script.intervals.add(int);\n\n if (sandbox.verbose) {\n sandbox.log(`setInterval(ms=${ms})`, 'info');\n }\n return int;\n }\n sandbox.log(`Invalid callback for setInterval! - ${typeof callback}`, 'error');\n return null;\n },\n clearInterval: function (id: NodeJS.Timeout): void {\n // IO-10: Set.has/delete – O(1) instead of Array.indexOf+splice O(n)\n if (script.intervals.has(id)) {\n if (sandbox.verbose) {\n sandbox.log('clearInterval() => cleared', 'info');\n }\n clearInterval(id);\n script.intervals.delete(id);\n } else {\n if (sandbox.verbose) {\n sandbox.log('clearInterval() => not found', 'warn');\n }\n }\n },\n setTimeout: function (callback: (args?: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout | null {\n if (typeof callback === 'function') {\n const to = setTimeout(() => {\n // IO-10: Set.delete – O(1) instead of Array.indexOf+splice O(n)\n script.timeouts.delete(to);\n\n try {\n callback.call(sandbox, ...args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, ms);\n if (sandbox.verbose) {\n sandbox.log(`setTimeout(ms=${ms})`, 'info');\n }\n // IO-10: Set.add – O(1) instead of Array.push\n script.timeouts.add(to);\n return to;\n }\n sandbox.log(`Invalid callback for setTimeout! - ${typeof callback}`, 'error');\n return null;\n },\n clearTimeout: function (id: NodeJS.Timeout): void {\n // IO-10: Set.has/delete – O(1) instead of Array.indexOf+splice O(n)\n if (script.timeouts.has(id)) {\n if (sandbox.verbose) {\n sandbox.log('clearTimeout() => cleared', 'info');\n }\n clearTimeout(id);\n script.timeouts.delete(id);\n } else {\n if (sandbox.verbose) {\n sandbox.log('clearTimeout() => not found', 'warn');\n }\n }\n },\n setImmediate: function (callback: (..._args: any[]) => void, ...args: any[]): void {\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.apply(sandbox, args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n if (sandbox.verbose) {\n sandbox.log('setImmediate()', 'info');\n }\n } else {\n sandbox.log(`Invalid callback for setImmediate! - ${typeof callback}`, 'error');\n }\n },\n cb: function (callback: (..._args: any[]) => void): (...args: any[]) => void {\n return function (args: any[]) {\n if (context.scripts[name]?._id === sandbox._id) {\n if (typeof callback === 'function') {\n try {\n callback.apply(sandbox, args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n } else {\n sandbox.log(`Callback for old version of script: ${name}`, 'warn');\n }\n };\n },\n compareTime: function (\n startTime: iobJS.AstroDate | string | Date | number,\n endTime: iobJS.AstroDate | string | Date | number | null,\n operation: 'between' | 'not between' | '<' | '<=' | '>' | '>=' | '==' | '<>' | '!=',\n time?: iobJS.AstroDate | string | Date | number,\n ): boolean {\n if (startTime && typeof startTime === 'string') {\n const pos = consts.astroListLow.indexOf(startTime.toLowerCase());\n if (pos !== -1) {\n const aTime = sandbox.getAstroDate(consts.astroList[pos]);\n if (aTime) {\n startTime = aTime.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n } else {\n startTime = 0;\n }\n }\n } else if (startTime && isObject(startTime) && (startTime as iobJS.AstroDate).astro) {\n const aTime = sandbox.getAstroDate(\n (startTime as iobJS.AstroDate).astro,\n (startTime as iobJS.AstroDate).date || new Date(),\n (startTime as iobJS.AstroDate).offset || 0,\n );\n if (aTime) {\n startTime = aTime.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n } else {\n startTime = 0;\n }\n }\n\n if (endTime && typeof endTime === 'string') {\n const pos = consts.astroListLow.indexOf(endTime.toLowerCase());\n if (pos !== -1) {\n const aTime = sandbox.getAstroDate(consts.astroList[pos]);\n endTime =\n aTime?.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }) || 0;\n }\n } else if (endTime && isObject(endTime) && (endTime as iobJS.AstroDate).astro) {\n const aTime = sandbox.getAstroDate(\n (endTime as iobJS.AstroDate).astro,\n (endTime as iobJS.AstroDate).date || new Date(),\n (endTime as iobJS.AstroDate).offset || 0,\n );\n endTime =\n aTime?.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }) || 0;\n }\n\n // --- Convert \"time\" to number\n let nTime: number | undefined;\n // maybe it is astro date like 'sunrise' or 'sunset'\n if (time && typeof time === 'string') {\n const pos = consts.astroListLow.indexOf(time.toLowerCase());\n if (pos !== -1) {\n nTime = sandbox.getAstroDate(consts.astroList[pos])?.getTime() || 0;\n }\n } else if (time && isObject(time) && (time as iobJS.AstroDate).astro) {\n nTime =\n sandbox\n .getAstroDate(\n (time as iobJS.AstroDate).astro,\n (time as iobJS.AstroDate).date || new Date(),\n (time as iobJS.AstroDate).offset || 0,\n )\n ?.getTime() || 0;\n }\n\n let daily = true;\n if (time) {\n daily = false;\n }\n // if not astro date\n if (!nTime) {\n if (time && !isObject(time)) {\n if (typeof time === 'string' && !time.includes(' ') && !time.includes('T')) {\n const parts = time.split(':');\n const oTime = new Date();\n oTime.setHours(parseInt(parts[0], 10));\n oTime.setMinutes(parseInt(parts[1], 10));\n oTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n oTime.setSeconds(parseInt(parts[2], 10));\n } else {\n oTime.setSeconds(0);\n }\n nTime = oTime.getTime();\n } else {\n nTime = new Date(time as string | number).getTime();\n }\n } else if (!time) {\n const oTime = new Date();\n oTime.setMilliseconds(0);\n nTime = oTime.getTime();\n } else {\n // If Date\n nTime = (time as Date).getTime();\n }\n }\n // --- End of conversion \"time\" to number\n if (typeof startTime === 'string') {\n if (!startTime.includes(' ') && !startTime.includes('T')) {\n const parts = startTime.split(':');\n startTime = new Date();\n startTime.setHours(parseInt(parts[0], 10));\n startTime.setMinutes(parseInt(parts[1], 10));\n startTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n startTime.setSeconds(parseInt(parts[2], 10));\n } else {\n startTime.setSeconds(0);\n }\n } else {\n daily = false;\n startTime = new Date(startTime);\n }\n } else {\n daily = false;\n startTime = new Date(startTime as number | Date);\n }\n const nStartTime = startTime.getTime();\n\n let nEndTime: number | null;\n if (endTime && typeof endTime === 'string') {\n if (!endTime.includes(' ') && !endTime.includes('T')) {\n const parts = endTime.split(':');\n endTime = new Date();\n endTime.setHours(parseInt(parts[0], 10));\n endTime.setMinutes(parseInt(parts[1], 10));\n endTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n endTime.setSeconds(parseInt(parts[2], 10));\n } else {\n endTime.setSeconds(0);\n }\n } else {\n daily = false;\n endTime = new Date(endTime);\n }\n } else if (endTime) {\n daily = false;\n endTime = new Date(endTime as number | Date);\n } else {\n endTime = null;\n }\n\n if (endTime) {\n nEndTime = endTime.getTime();\n } else {\n nEndTime = null;\n }\n\n if (operation === 'between') {\n if (nEndTime) {\n if (nStartTime > nEndTime && daily) {\n return !(nTime >= nEndTime && nTime < nStartTime);\n }\n return nTime >= nStartTime && nTime < nEndTime;\n }\n sandbox.log(`missing or unrecognized endTime expression: ${JSON.stringify(endTime)}`, 'warn');\n return false;\n }\n\n if (operation === 'not between') {\n if (nEndTime) {\n if (nStartTime > nEndTime && daily) {\n return nTime >= nEndTime && nTime < nStartTime;\n }\n return !(nTime >= nStartTime && nTime < nEndTime);\n }\n sandbox.log(`missing or unrecognized endTime expression: ${JSON.stringify(endTime)}`, 'warn');\n return false;\n }\n\n if (operation === '>') {\n return nTime > nStartTime;\n }\n if (operation === '>=') {\n return nTime >= nStartTime;\n }\n if (operation === '<') {\n return nTime < nStartTime;\n }\n if (operation === '<=') {\n return nTime <= nStartTime;\n }\n if (operation === '==') {\n return nTime === nStartTime;\n }\n if (operation === '<>' || operation === '!=') {\n return nTime !== nStartTime;\n }\n sandbox.log(`Invalid operator: ${operation as string}`, 'warn');\n return false;\n },\n onStop: function (cb: () => void, timeout?: number): void {\n if (sandbox.verbose) {\n sandbox.log(`onStop(timeout=${timeout})`, 'info');\n }\n\n script.onStopCb = cb;\n script.onStopTimeout = timeout || 1000;\n },\n formatValue: function (value: number | string, decimals: number | string, format?: string): string {\n if (typeof decimals === 'string') {\n format = decimals;\n decimals = 0;\n }\n if (!format) {\n if (adapter.isFloatComma !== undefined) {\n format = adapter.isFloatComma ? '.,' : ',.';\n } else if (objects['system.config'] && objects['system.config'].common) {\n format = objects['system.config'].common.isFloatComma ? '.,' : ',.';\n }\n }\n return adapter.formatValue(value, decimals, format);\n },\n formatDate: function (\n date: Date | string | number | iobJS.AstroDate,\n format?: string,\n language?: ioBroker.Languages,\n ): string {\n if (!format) {\n if (adapter.dateFormat) {\n format = adapter.dateFormat;\n } else {\n format =\n objects['system.config'] && objects['system.config'].common\n ? objects['system.config'].common.dateFormat || 'DD.MM.YYYY'\n : 'DD.MM.YYYY';\n }\n format = format || 'DD.MM.YYYY';\n }\n // maybe it is astro date like 'sunrise' or 'sunset'\n if (date && typeof date === 'string') {\n const pos = consts.astroListLow.indexOf(date.toLowerCase());\n if (pos !== -1) {\n date = sandbox.getAstroDate(consts.astroList[pos])?.getTime() || 0;\n }\n } else if (date && isObject(date) && (date as iobJS.AstroDate).astro) {\n date =\n sandbox\n .getAstroDate(\n (date as iobJS.AstroDate).astro,\n (date as iobJS.AstroDate).date || new Date(),\n (date as iobJS.AstroDate).offset || 0,\n )\n ?.getTime() || 0;\n }\n\n if (format.match(/[WНOО]+/)) {\n let text: string = adapter.formatDate(date as Date | string | number, format);\n if (!language || !consts.dayOfWeeksFull[language]) {\n language =\n adapter.language ||\n (objects['system.config'] &&\n objects['system.config'].common &&\n objects['system.config'].common.language) ||\n 'en';\n if (!consts.dayOfWeeksFull[language as ioBroker.Languages]) {\n language = 'en';\n }\n }\n if (typeof date === 'number' || typeof date === 'string') {\n date = new Date(date);\n } else if (typeof (date as Date).getMonth !== 'function') {\n sandbox.log(`Invalid date object provided: ${JSON.stringify(date)}`, 'error');\n return 'Invalid date';\n }\n const d: number = (date as Date).getDay();\n text = text.replace('НН', consts.dayOfWeeksFull[language as ioBroker.Languages][d]);\n let initialText = text;\n text = text.replace('WW', consts.dayOfWeeksFull[language as ioBroker.Languages][d]);\n\n if (initialText === text) {\n text = text.replace('W', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n }\n\n text = text.replace('Н', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n text = text.replace('Н', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n const m: number = (date as Date).getMonth();\n initialText = text;\n text = text.replace('OOO', consts.monthFullGen[language as ioBroker.Languages][m]);\n text = text.replace('ООО', consts.monthFullGen[language as ioBroker.Languages][m]);\n text = text.replace('OO', consts.monthFull[language as ioBroker.Languages][m]);\n text = text.replace('ОО', consts.monthFull[language as ioBroker.Languages][m]);\n\n if (initialText === text) {\n text = text.replace('O', consts.monthShort[language as ioBroker.Languages][m]);\n }\n return text;\n }\n return adapter.formatDate(date as string | number | Date, format);\n },\n formatTimeDiff: function (diff: number, format?: string): string {\n if (!format) {\n format = 'hh:mm:ss';\n }\n\n let text = format;\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, diff=${diff})`, 'debug');\n }\n\n const second = 1000;\n const minute = 60 * second;\n const hour = 60 * minute;\n const day = 24 * hour;\n const neg = diff < 0;\n diff = Math.abs(diff);\n\n if (FTD_TEST_D.test(text)) {\n const days = Math.floor(diff / day);\n\n text = text.replace(FTD_REPL_DD, days.toString().padStart(2, '0')).replace(FTD_REPL_D, days.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, days=${days})`, 'debug');\n }\n\n diff -= days * day;\n }\n\n if (FTD_TEST_H.test(text)) {\n const hours = Math.floor(diff / hour);\n\n text = text\n .replace(FTD_REPL_HH, hours.toString().padStart(2, '0'))\n .replace(FTD_REPL_H, hours.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, hours=${hours})`, 'debug');\n }\n\n diff -= hours * hour;\n }\n\n if (FTD_TEST_M.test(text)) {\n const minutes = Math.floor(diff / minute);\n\n text = text\n .replace(FTD_REPL_MM, minutes.toString().padStart(2, '0'))\n .replace(FTD_REPL_M, minutes.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, minutes=${minutes})`, 'debug');\n }\n\n diff -= minutes * minute;\n }\n\n if (FTD_TEST_S.test(text)) {\n const seconds = Math.floor(diff / second);\n\n text = text\n .replace(FTD_REPL_SS, seconds.toString().padStart(2, '0'))\n .replace(FTD_REPL_S, seconds.toString());\n\n sandbox.verbose &&\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, seconds=${seconds})`, 'debug');\n }\n\n for (const [pattern, replacement] of FTD_UNESCAPE) {\n text = text.replace(pattern, replacement);\n }\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text})`, 'debug');\n }\n\n return neg ? `-${text}` : text;\n },\n getDateObject: function (date: Date | number | string): Date {\n if (isObject(date)) {\n return date as Date;\n }\n if (typeof date === 'undefined') {\n return new Date();\n }\n if (typeof date !== 'string') {\n return new Date(date);\n }\n\n // If only hours: 20, 2\n if (date.match(/^\\d?\\d$/)) {\n const _now = new Date();\n date = `${_now.getFullYear()}-${_now.getMonth() + 1}-${_now.getDate()} ${date}:00`;\n } else if (date.match(/^\\d?\\d:\\d\\d(:\\d\\d)?$/)) {\n // 20:00, 2:00, 20:00:00, 2:00:00\n const now = new Date();\n date = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${date}`;\n }\n\n return new Date(date);\n },\n writeFile: function (\n _adapter: string,\n fileName: string,\n data: string | Buffer | ((err: Error) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n if (typeof data === 'function' || !data) {\n callback = data as (err?: Error | null) => void;\n data = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `writeFile(adapter=${_adapter}, fileName=${fileName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function (): void {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`writeFile(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n if (callback) {\n adapter.writeFile(_adapter, fileName, data, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.writeFile(_adapter, fileName, data);\n }\n }\n },\n readFile: function (\n _adapter: string,\n fileName: string | ((err: Error | null | undefined, data?: Buffer | string, mimeType?: string) => void),\n callback?: (err: Error | null | undefined, data?: Buffer | string, mimeType?: string) => void,\n ): void {\n if (typeof fileName === 'function') {\n callback = fileName as (\n err: Error | null | undefined,\n data?: Buffer | string,\n mimeType?: string,\n ) => void;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n if (typeof callback !== 'function') {\n sandbox.log(`readFile(adapter=${_adapter}, fileName=${fileName}): no callback`, 'error');\n return;\n }\n _adapter = _adapter || '0_userdata.0';\n if (sandbox.verbose) {\n sandbox.log(`readFile(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n\n adapter.fileExists(_adapter, fileName, (error: Error | null | undefined, result?: boolean): void => {\n if (error) {\n callback(error);\n } else if (!result) {\n callback(new Error('Not exists'));\n } else {\n adapter.readFile(_adapter, fileName, callback);\n }\n });\n },\n unlink: function (\n _adapter: string,\n fileName: string | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n if (typeof fileName === 'function') {\n callback = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `unlink(adapter=${_adapter}, fileName=${fileName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function (): void {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`unlink(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n if (callback) {\n adapter.unlink(_adapter, fileName, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.unlink(_adapter, fileName);\n }\n }\n },\n delFile: function (\n _adapter: string,\n fileName: string | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return sandbox.unlink(_adapter, fileName as string, callback);\n },\n rename: function (\n _adapter: string,\n oldName: string,\n newName: string,\n callback?: (err?: Error | null) => void,\n ): void {\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `rename(adapter=${_adapter}, oldName=${oldName}, newName=${newName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n sandbox.verbose &&\n sandbox.log(`rename(adapter=${_adapter}, oldName=${oldName}, newName=${newName})`, 'info');\n if (callback) {\n adapter.rename(_adapter, oldName, newName, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.rename(_adapter, oldName, newName);\n }\n }\n },\n renameFile: function (\n _adapter: string,\n oldName: string,\n newName: string,\n callback?: (err?: Error | null) => void,\n ): void {\n return sandbox.rename(_adapter, oldName, newName, callback);\n },\n getHistory: function (\n instance: string | (ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }),\n options:\n | (ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string })\n | ((\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void),\n callback?: (\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void,\n ): void {\n if (isObject(instance)) {\n callback = options as (\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void;\n options = instance as ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string };\n instance = '';\n }\n\n if (typeof callback !== 'function') {\n return sandbox.log('No callback found!', 'error');\n }\n if (!isObject(options)) {\n return sandbox.log('No options found!', 'error');\n }\n if (!(options as ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string }).id) {\n return sandbox.log('No ID found!', 'error');\n }\n const timeoutMs =\n parseInt(\n (options as ioBroker.GetHistoryOptions & { id?: string; timeout?: number })\n ?.timeout as unknown as string,\n 10,\n ) || 20000;\n\n if (!instance) {\n // @ts-expect-error defaultHistory is private attribute of adapter. Fix later\n if (adapter.defaultHistory) {\n // @ts-expect-error defaultHistory is private attribute of adapter. Fix later\n instance = adapter.defaultHistory;\n } else {\n instance = objects['system.config']?.common?.defaultHistory || null;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getHistory(instance=${instance as string}, options=${JSON.stringify(options)})`, 'info');\n }\n\n if (!instance) {\n sandbox.log('No default history instance found!', 'error');\n try {\n callback.call(sandbox, new Error('No default history instance found!'));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n return;\n }\n if ((instance as string).startsWith('system.adapter.')) {\n instance = (instance as string).substring('system.adapter.'.length);\n }\n\n if (!objects[`system.adapter.${instance as string}`]) {\n sandbox.log(`Instance \"${instance as string}\" not found!`, 'error');\n try {\n callback.call(sandbox, new Error(`Instance \"${instance as string}\" not found!`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n return;\n }\n\n let _timeout: NodeJS.Timeout | null = setTimeout(() => {\n _timeout = null;\n if (sandbox.verbose) {\n sandbox.log('getHistory => timeout', 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Timeout'),\n null,\n options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance as string,\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutMs);\n\n adapter.sendTo(\n instance as string,\n 'getHistory',\n {\n id: (options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }).id,\n options,\n },\n (res: any): void => {\n if (_timeout) {\n clearTimeout(_timeout);\n _timeout = null;\n }\n const result: {\n error?: string;\n result?: ioBroker.GetHistoryResult;\n step?: number;\n sessionId?: string;\n } = res;\n\n if (sandbox.verbose && result?.error) {\n sandbox.log(`getHistory => ${result.error}`, 'error');\n }\n if (sandbox.verbose && result?.result) {\n sandbox.log(`getHistory => ${result.result.length} items`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n result.error ? new Error(result.error) : null,\n result.result,\n options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance as string,\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n },\n );\n },\n runScript: function (scriptName: string, callback?: (err?: Error | null) => void): boolean {\n scriptName = scriptName || name;\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n // start another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot start \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `runScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n typeof callback === 'function' && callback();\n return true;\n }\n if (objects[scriptName].common.enabled) {\n objects[scriptName].common.enabled = false;\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, (/* err, obj */) => {\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err),\n );\n });\n return true;\n }\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err),\n );\n return true;\n },\n runScriptAsync: function (scriptName: string): Promise {\n let done = false;\n return new Promise((resolve, reject) => {\n const result = sandbox.runScript(scriptName, err => {\n if (err) {\n reject(err);\n done = true;\n } else {\n resolve();\n }\n });\n if (result === false && !done) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n startScript: function (\n scriptName: string,\n ignoreIfStarted?: boolean | ((err: Error | null | undefined, started: boolean) => void),\n callback?: (err: Error | null | undefined, started: boolean) => void,\n ): boolean {\n if (typeof ignoreIfStarted === 'function') {\n callback = ignoreIfStarted as (err: Error | null | undefined, started: boolean) => void;\n ignoreIfStarted = false;\n }\n scriptName ||= name;\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n // start another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot start \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `startScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n typeof callback === 'function' && callback(null, false);\n return true;\n }\n if (objects[scriptName].common.enabled) {\n if (!ignoreIfStarted) {\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, () => {\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err, true),\n );\n });\n } else if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n }\n adapter.extendForeignObject(scriptName, { common: { enabled: true } }, err => {\n typeof callback === 'function' && callback(err, true);\n });\n return true;\n },\n startScriptAsync: function (scriptName: string, ignoreIfStarted?: boolean): Promise {\n return new Promise((resolve, reject) => {\n const result = sandbox.startScript(\n scriptName,\n !!ignoreIfStarted,\n (err: Error | null | undefined, started: boolean): void => {\n if (err) {\n reject(err);\n } else {\n resolve(started);\n }\n },\n );\n if (result === false) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n stopScript: function (\n scriptName: string,\n callback?: (err: Error | null | undefined, stopped: boolean) => void,\n ): boolean {\n scriptName = scriptName || name;\n\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n\n // stop another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot stop \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `stopScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n }\n if (objects[scriptName].common.enabled) {\n objects[scriptName].common.enabled = false;\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, err => {\n if (typeof callback === 'function') {\n callback(err, true);\n }\n });\n } else if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n },\n stopScriptAsync: function (scriptName: string): Promise {\n return new Promise((resolve, reject) => {\n const result = sandbox.stopScript(\n scriptName,\n (err: Error | null | undefined, stopped: boolean): void => {\n if (err) {\n reject(err);\n } else {\n resolve(stopped);\n }\n },\n );\n if (result === false) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n isScriptActive: function (scriptName: string): boolean {\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log('Script does not exist', 'error');\n return false;\n }\n return objects[scriptName].common.enabled;\n },\n startInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && !instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, { common: { enabled: true } });\n\n if (sandbox.verbose) {\n sandbox.log(`startInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot start instance \"${instanceName}\", because already running`, 'warn');\n } else {\n sandbox.log(`Cannot start instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n restartInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, {});\n\n if (sandbox.verbose) {\n sandbox.log(`restartInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot restart instance \"${instanceName}\", because not running`, 'warn');\n } else {\n sandbox.log(`Cannot restart instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n stopInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, { common: { enabled: false } });\n\n if (sandbox.verbose) {\n sandbox.log(`stopInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot stop instance \"${instanceName}\", because not running`, 'warn');\n } else {\n sandbox.log(`Cannot stop instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toInt: function (val: boolean | string | number | 'true' | 'false'): number {\n if (val === true || val === 'true') {\n val = 1;\n }\n if (val === false || val === 'false') {\n val = 0;\n }\n val = parseInt(val as unknown as string) || 0;\n return val;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toFloat: function (val: boolean | string | number | 'true' | 'false'): number {\n if (val === true || val === 'true') {\n val = 1;\n }\n if (val === false || val === 'false') {\n val = 0;\n }\n val = parseFloat(val as unknown as string) || 0;\n return val;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toBoolean: function (val: boolean | string | number | 'true' | 'false'): boolean {\n if (val === '1' || val === 'true') {\n val = true;\n }\n if (val === '0' || val === 'false') {\n val = false;\n }\n return !!val;\n },\n getAttr: function (obj: string | Record, path: string | string[]): any {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n if (typeof obj === 'string') {\n try {\n obj = JSON.parse(obj);\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getAttr',\n });\n sandbox.log(`Cannot parse \"${obj.substring(0, 30)}\": ${err as Error}`, 'error');\n\n return null;\n }\n }\n\n const attr: string = path.shift() || '';\n try {\n obj = (obj as Record)[attr];\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getAttr',\n });\n sandbox.log(`Cannot get ${attr} of \"${JSON.stringify(obj)}\": ${err as Error}`, 'error');\n\n return null;\n }\n\n if (!path.length) {\n return obj;\n }\n const type = typeof obj;\n if (obj === null || obj === undefined || type === 'boolean' || type === 'number') {\n return null;\n }\n return sandbox.getAttr(obj, path);\n },\n messageTo: function (\n target: string | { instance: string | null | number; script: string | null; message: string },\n data: any,\n options: { timeout?: number | string } | ((result: any, options: { timeout?: number | string }) => void),\n callback?: (result: any, options: { timeout?: number | string }, instance: string | number | null) => void,\n ) {\n const defaultTimeout = 5000;\n\n if (typeof target !== 'object') {\n target = { instance: null, script: null, message: target };\n }\n if (typeof options === 'function') {\n callback = options;\n options = { timeout: defaultTimeout };\n }\n\n let timeout: NodeJS.Timeout | null = null;\n if (typeof callback === 'function') {\n const timeoutDuration = parseInt(options?.timeout as unknown as string, 10) || defaultTimeout;\n\n timeout = setTimeout(() => {\n timeout = null;\n\n if (sandbox.verbose) {\n sandbox.log(`messageTo => timeout: ${timeoutDuration}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, { error: 'timeout' }, options, target.instance);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutDuration);\n }\n let cbFunc: undefined | ((result: any) => void);\n if (timeout) {\n cbFunc = function (res: any) {\n timeout && clearTimeout(timeout);\n const result: { result?: any; error?: string | null } = res;\n\n if (sandbox.verbose && result?.result) {\n sandbox.log(`messageTo => ${JSON.stringify(result)}`, 'debug');\n }\n if (sandbox.verbose && result?.error) {\n sandbox.log(`messageTo => ${result.error}`, 'error');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, result, options, target.instance);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n };\n }\n\n if (target.instance || target.instance === 0) {\n if (\n typeof target.instance === 'string' &&\n target.instance &&\n target.instance.startsWith('system.adapter.')\n ) {\n target.instance = target.instance.substring('system.adapter.'.length);\n } else if (typeof target.instance === 'number') {\n target.instance = `javascript.${target.instance}`;\n }\n\n adapter.sendTo(\n target.instance,\n 'jsMessageBus',\n { message: target.message, script: target.script, data },\n cbFunc,\n );\n } else {\n // Send it to all instances\n context.adapter.getObjectView(\n 'system',\n 'instance',\n { startkey: 'system.adapter.javascript.', endkey: 'system.adapter.javascript.\\u9999' },\n options,\n (err: Error | null | undefined, res): void => {\n if (err || !res) {\n sandbox.log(`messageTo failed: ${err?.message}`, 'error');\n return;\n }\n const len = 'system.adapter.'.length;\n const instances = res.rows.map(item => item.id.substring(len));\n\n instances.forEach(instance => {\n adapter.sendTo(\n instance,\n 'jsMessageBus',\n { message: target.message, script: target.script, data },\n cbFunc,\n );\n });\n },\n );\n }\n },\n messageToAsync: function (\n target: string | { instance: string | null | number; script: string | null; message: string },\n data: any,\n options?: { timeout?: number | string },\n ): Promise {\n return new Promise((resolve, reject) => {\n sandbox.messageTo(target, data, options, (res: any): void => {\n const result: { error?: string } = res;\n if (sandbox.verbose) {\n sandbox.log(`messageTo result => ${JSON.stringify(res)}`, 'debug');\n }\n if (!res || result.error) {\n reject(result ? new Error(result.error) : new Error('Unknown error'));\n } else {\n resolve(result);\n }\n });\n });\n },\n onMessage: function (\n messageName: string,\n callback: (data: any, cb: (result: any) => void) => void,\n ): null | number {\n if (typeof callback !== 'function') {\n sandbox.log('onMessage callback is not a function', 'error');\n\n return null;\n }\n context.messageBusHandlers[sandbox.scriptName] = context.messageBusHandlers[sandbox.scriptName] || {};\n context.messageBusHandlers[sandbox.scriptName][messageName] =\n context.messageBusHandlers[sandbox.scriptName][messageName] || [];\n\n const handler = { id: _handlerIdCounter++, cb: callback, sandbox };\n context.messageBusHandlers[sandbox.scriptName][messageName].push(handler);\n\n sandbox.__engine.__subscriptionsMessage += 1;\n\n if (\n sandbox.__engine.__subscriptionsMessage %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsMessage} message subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n return handler.id;\n },\n onMessageUnregister: function (idOrName: number | string): boolean {\n const ctx = context.messageBusHandlers[sandbox.scriptName];\n let found = false;\n if (ctx) {\n if (typeof idOrName === 'number') {\n outer: for (const messageName of Object.keys(ctx)) {\n for (let i = 0; i < ctx[messageName].length; i++) {\n if (ctx[messageName][i].id === idOrName) {\n ctx[messageName].splice(i, 1);\n if (!ctx[messageName].length) {\n delete ctx[messageName];\n sandbox.__engine.__subscriptionsMessage--;\n }\n found = true;\n break outer;\n }\n }\n }\n } else if (idOrName && ctx[idOrName]) {\n delete ctx[idOrName];\n sandbox.__engine.__subscriptionsMessage--;\n found = true;\n }\n }\n return found;\n },\n console: {\n log: function (msg: string): void {\n sandbox.log(msg, 'info');\n },\n error: function (msg: string): void {\n sandbox.log(msg, 'error');\n },\n warn: function (msg: string): void {\n sandbox.log(msg, 'warn');\n },\n info: function (msg: string): void {\n sandbox.log(msg, 'info');\n },\n debug: function (msg: string): void {\n sandbox.log(msg, 'debug');\n },\n },\n jsonataExpression: function (data: any, expression: string): Promise {\n return jsonata(expression).evaluate(data);\n },\n wait: function (ms: number): Promise {\n return new Promise((resolve: () => void): void => {\n sandbox.setTimeout(resolve, ms);\n });\n },\n sleep: function (ms: number): Promise {\n return sandbox.wait(ms);\n },\n onObject: function (\n pattern: string | string[],\n callback: (id: string, obj?: ioBroker.Object | null) => void,\n ): SubscribeObject | SubscribeObject[] | null {\n return sandbox.subscribeObject(pattern, callback);\n },\n subscribeObject: function (\n pattern: string | string[],\n callback: (id: string, obj?: ioBroker.Object | null) => void,\n ): SubscribeObject | SubscribeObject[] | null {\n if (Array.isArray(pattern)) {\n const result: {\n name: string;\n pattern: string;\n callback: (id: string, obj?: ioBroker.Object | null) => void;\n }[] = [];\n for (let p = 0; p < pattern.length; p++) {\n result.push(\n sandbox.subscribeObject(pattern[p], callback) as {\n name: string;\n pattern: string;\n callback: (id: string, obj?: ioBroker.Object | null) => void;\n },\n );\n }\n return result;\n }\n\n sandbox.__engine.__subscriptionsObject += 1;\n\n if (\n sandbox.__engine.__subscriptionsObject %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsObject} object subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n // source is set by regexp if defined as /regexp/\n if (!pattern || typeof pattern !== 'string') {\n sandbox.log('Error by subscribeObject: pattern can be only string or array of strings.', 'error');\n return null;\n }\n\n if (typeof callback !== 'function') {\n sandbox.log('Error by subscribeObject: callback is not a function', 'error');\n return null;\n }\n\n const subs: SubscribeObject = { pattern, callback, name };\n if (sandbox.verbose) {\n sandbox.log(`subscribeObject: ${JSON.stringify(subs)}`, 'info');\n }\n\n adapter.subscribeForeignObjects(pattern);\n\n context.subscriptionsObject.push(subs);\n // Keep O(1) dispatch map in sync\n if (!context.subscriptionsObjectMap.has(pattern)) {\n context.subscriptionsObjectMap.set(pattern, []);\n }\n context.subscriptionsObjectMap.get(pattern)!.push(subs);\n\n return subs;\n },\n unsubscribeObject: function (subObject: SubscribeObject | SubscribeObject[]): boolean | boolean[] {\n if (subObject && Array.isArray(subObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < subObject.length; t++) {\n result.push(sandbox.unsubscribeObject(subObject[t]) as boolean);\n }\n return result;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`adapterUnsubscribeObject(id=${JSON.stringify(subObject)})`, 'info');\n }\n\n for (let i = context.subscriptionsObject.length - 1; i >= 0; i--) {\n if (context.subscriptionsObject[i] === subObject) {\n adapter.unsubscribeForeignObjects(subObject.pattern);\n context.subscriptionsObject.splice(i, 1);\n // Keep O(1) dispatch map in sync\n const mapSubs = context.subscriptionsObjectMap.get(subObject.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(subObject);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n context.subscriptionsObjectMap.delete(subObject.pattern);\n }\n }\n sandbox.__engine.__subscriptionsObject--;\n return true;\n }\n }\n let deleted = 0;\n for (let i = context.subscriptionsObject.length - 1; i >= 0; i--) {\n if (\n context.subscriptionsObject[i].name &&\n context.subscriptionsObject[i].pattern === subObject.pattern\n ) {\n deleted++;\n adapter.unsubscribeForeignObjects(subObject.pattern);\n // Keep O(1) dispatch map in sync\n const mapSubsP = context.subscriptionsObjectMap.get(subObject.pattern);\n if (mapSubsP) {\n const pos = mapSubsP.indexOf(context.subscriptionsObject[i]);\n if (pos !== -1) {\n mapSubsP.splice(pos, 1);\n }\n if (!mapSubsP.length) {\n context.subscriptionsObjectMap.delete(subObject.pattern);\n }\n }\n context.subscriptionsObject.splice(i, 1);\n sandbox.__engine.__subscriptionsObject--;\n }\n }\n return !!deleted;\n },\n // internal function to send the block debugging info to the front-end\n _sendToFrontEnd: function (blockId: string, data: any): void {\n if (context.rulesOpened === sandbox.scriptName) {\n void adapter.setState(\n 'debug.rules',\n JSON.stringify({ ruleId: sandbox.scriptName, blockId, data, ts: Date.now() }),\n true,\n );\n }\n },\n existsStateAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n existsObjectAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n getObjectAsync: function (_id: string, _enumName: null | string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n setObjectAsync: function (_id: string, _obj: ioBroker.Object): Promise<{ id: string }> {\n return Promise.reject(new Error('Not implemented'));\n },\n extendObjectAsync: function (_id: string, _obj: Partial): Promise<{ id: string }> {\n return Promise.reject(new Error('Not implemented'));\n },\n deleteObjectAsync: function (_id: string, _isRecursive?: boolean): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n createStateAsync: function (\n _name: string,\n _initValue: undefined | ioBroker.StateValue | ioBroker.State,\n _forceCreation:\n | boolean\n | undefined\n | Record\n | Partial\n | ((err: Error | null) => void),\n _common?: Partial | ((err: Error | null) => void),\n _native?: Record | ((err: Error | null) => void),\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n createAliasAsync: function (\n _name: string,\n _alias: string | CommonAlias,\n _forceCreation: boolean | Partial | undefined,\n _common?: Partial | Record,\n _native?: Record,\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n deleteStateAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n writeFileAsync: function (\n _adapter: string,\n _fileName: string | Buffer,\n _data?: string | Buffer,\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n readFileAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n unlinkAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n delFileAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n renameAsync: function (_adapter: string, _oldName: string, _newName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n renameFileAsync: function (_adapter: string, _oldName: string, _newName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n getHistoryAsync: function (\n _instance: string | (ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }),\n _options?: ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string },\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n httpGetAsync: function (\n _url: string,\n _options?: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n ): Promise<{\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n }> {\n return Promise.reject(new Error('Not implemented'));\n },\n httpPostAsync: function (\n _url: string,\n _data: any,\n _options: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n ): Promise<{\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n }> {\n return Promise.reject(new Error('Not implemented'));\n },\n };\n\n // Create advanced functions that can modify objects\n if ((adapter.config as JavaScriptAdapterConfig).enableSetObject) {\n sandbox.setObject = function (\n id: string,\n obj: ioBroker.Object,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n if (id && typeof id === 'string' && id.startsWith('system.adapter.')) {\n sandbox.log(\n `Using setObject on system object ${id} can be dangerous (protected instance attributes may be lost)`,\n 'info',\n );\n }\n if (debug) {\n sandbox.log(\n `setObject(id=${id}, obj=${JSON.stringify(obj)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setImmediate(function () {\n try {\n callback.call(sandbox, null, { id });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`setObject(id=${id}, obj=${JSON.stringify(obj)})`, 'info');\n }\n adapter.setForeignObject(id, obj, (err, res) => {\n if (!err) {\n // Update meta object data\n context.updateObjectContext(id, obj);\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, res);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n }\n };\n sandbox.extendObject = function (\n id: string,\n obj: Partial,\n callback?: (err?: Error | null, obj?: { id: string }) => void,\n ): void {\n if (debug) {\n sandbox.log(\n `extendObject(id=${id}, obj=${JSON.stringify(obj)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox, null, { id });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`extendObject(id=${id}, obj=${JSON.stringify(obj)})`, 'info');\n }\n if (callback) {\n adapter.extendForeignObject(id, structuredClone(obj), callback);\n } else {\n void adapter.extendForeignObject(id, structuredClone(obj));\n }\n }\n };\n sandbox.deleteObject = function (id: string, isRecursive?: boolean, callback?: ioBroker.ErrorCallback): void {\n if (typeof isRecursive === 'function') {\n callback = isRecursive;\n isRecursive = false;\n }\n if (debug) {\n sandbox.log(\n `deleteObject(id=${id}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`deleteObject(id=${id})`, 'info');\n }\n adapter.delForeignObject(id, { recursive: isRecursive }, callback);\n }\n };\n }\n\n // promisify methods on the sandbox\n sandbox.existsStateAsync = promisify(sandbox.existsState);\n sandbox.existsObjectAsync = promisify(sandbox.existsObject);\n sandbox.getObjectAsync = promisify(sandbox.getObject);\n sandbox.setObjectAsync = promisify(sandbox.setObject);\n sandbox.extendObjectAsync = promisify(sandbox.extendObject);\n sandbox.deleteObjectAsync = promisify(sandbox.deleteObject);\n sandbox.createStateAsync = promisify(sandbox.createState);\n sandbox.createAliasAsync = promisify(sandbox.createAlias);\n sandbox.deleteStateAsync = promisify(sandbox.deleteState);\n sandbox.writeFileAsync = promisify(sandbox.writeFile);\n sandbox.readFileAsync = promisify(sandbox.readFile);\n sandbox.unlinkAsync = promisify(sandbox.unlink);\n sandbox.delFileAsync = promisify(sandbox.delFile);\n sandbox.renameAsync = promisify(sandbox.rename);\n sandbox.renameFileAsync = promisify(sandbox.renameFile);\n sandbox.getHistoryAsync = promisify(sandbox.getHistory);\n sandbox.httpGetAsync = promisify(sandbox.httpGet);\n sandbox.httpPostAsync = promisify(sandbox.httpPost);\n\n // Make all predefined properties and methods readonly so scripts cannot overwrite them\n for (const prop of Object.keys(sandbox)) {\n Object.defineProperty(sandbox, prop, {\n configurable: false,\n writable: false,\n });\n }\n\n // Shallow-freeze the console object exposed to scripts to prevent its methods from being overwritten\n // Note: __engine must NOT be frozen because its counter properties are mutated at runtime\n if (sandbox.console && typeof sandbox.console === 'object') {\n Object.freeze(sandbox.console);\n }\n\n return sandbox;\n}\n\n"]} \ No newline at end of file +{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/lib/sandbox.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChildProcess, ExecOptions } from 'node:child_process';\nimport * as jsonataMod from 'jsonata';\nimport type { SendMailOptions } from 'nodemailer';\nimport type { AxiosError, AxiosHeaderValue, AxiosResponse, ResponseType } from 'axios';\n\nimport { commonTools } from '@iobroker/adapter-core';\n\nimport { isObject, isArray, promisify, getHttpRequestConfig } from './tools';\nimport type {\n JavaScriptAdapterConfig,\n AstroRule,\n ChangeType,\n CommonAlias,\n FileSubscriptionResult,\n IobSchedule,\n JavascriptContext,\n JsScript,\n LogMessage,\n Pattern,\n PushoverOptions,\n SandboxType,\n Selector,\n SubscribeObject,\n SubscriptionResult,\n TimeRule,\n} from '../types';\nimport * as constsMod from './consts';\nimport * as wordsMod from './words';\nimport * as eventObjMod from './eventObj';\nimport {\n patternCompareFunctions as patternCompareFunctionsMod,\n type PatternEventCompareFunction,\n} from './patternCompareFunctions';\nimport type { ScheduleName, SchedulerRule } from './scheduler';\nimport type { EventObj } from './eventObj';\nimport type { AstroEvent } from './consts';\n\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nconst pattern2RegEx = commonTools.pattern2RegEx;\n\n// Pre-compiled RegExp constants for formatTimeDiff – avoids recompiling on every call\nconst FTD_TEST_D = /(?();\n\n/** Monotonically increasing handler-ID counter – avoids Date.now()+random collisions */\nlet _handlerIdCounter = 1;\n\nexport function sandBox(\n script: JsScript,\n name: string,\n verbose: boolean | undefined,\n debug: boolean | undefined,\n context: JavascriptContext,\n): SandboxType {\n const consts = constsMod;\n const words = wordsMod;\n const eventObj = eventObjMod;\n const patternCompareFunctions = patternCompareFunctionsMod;\n const jsonata = jsonataMod.default;\n\n const adapter: ioBroker.Adapter = context.adapter;\n const mods = context.mods;\n const states = context.states;\n const objects = context.objects;\n const timers = context.timers;\n const enums = context.enums;\n const debugMode = context.debugMode;\n\n // eslint-disable-next-line prefer-const\n let sandbox: SandboxType;\n\n function errorInCallback(e: Error): void {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'errorInCallback',\n });\n context.logError(name, 'Error in callback:', e);\n context.debugMode && console.log(`error$$${name}$$Exception in callback: ${e}`, Date.now());\n }\n\n function subscribePattern(script: JsScript, pattern: string): void {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (!script.subscribes[pattern]) {\n script.subscribes[pattern] = 1;\n } else {\n script.subscribes[pattern]++;\n }\n\n if (!context.subscribedPatterns[pattern]) {\n context.subscribedPatterns[pattern] = 1;\n\n if (sandbox.verbose) {\n sandbox.log(`subscribePattern(pattern=${pattern})`, 'info');\n }\n adapter.subscribeForeignStates(pattern);\n\n // request current value to deliver old value on change.\n if (typeof pattern === 'string' && !pattern.includes('*')) {\n void adapter.getForeignState(pattern, (_err, state) => {\n if (state) {\n states[pattern] = state;\n }\n });\n } else {\n // IO-3: Object.assign instead of Object.keys().forEach() – no temporary keys array\n adapter.getForeignStates(pattern, (_err, _states) => _states && Object.assign(states, _states));\n }\n } else {\n context.subscribedPatterns[pattern]++;\n }\n }\n }\n\n function unsubscribePattern(script: JsScript, pattern: string): void {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (script.subscribes[pattern]) {\n script.subscribes[pattern]--;\n if (!script.subscribes[pattern]) {\n delete script.subscribes[pattern];\n }\n }\n\n if (context.subscribedPatterns[pattern]) {\n context.subscribedPatterns[pattern]--;\n if (!context.subscribedPatterns[pattern]) {\n adapter.unsubscribeForeignStates(pattern);\n delete context.subscribedPatterns[pattern];\n\n // if the pattern was regex or with * some states will stay in RAM, but it is OK.\n if (states[pattern]) {\n delete states[pattern];\n }\n }\n }\n }\n }\n\n function subscribeFile(script: JsScript, id: string, fileNamePattern: string): void {\n const key = `${id}$%$${fileNamePattern}`;\n if (!script.subscribesFile[key]) {\n script.subscribesFile[key] = 1;\n } else {\n script.subscribesFile[key]++;\n }\n\n if (!context.subscribedPatternsFile[key]) {\n context.subscribedPatternsFile[key] = 1;\n void adapter.subscribeForeignFiles(id, fileNamePattern);\n } else {\n context.subscribedPatternsFile[key]++;\n }\n }\n\n function unsubscribeFile(script: JsScript, id: string, fileNamePattern: string): void {\n const key = `${id}$%$${fileNamePattern}`;\n if (script.subscribesFile[key]) {\n script.subscribesFile[key]--;\n if (!script.subscribesFile[key]) {\n delete script.subscribesFile[key];\n }\n }\n\n if (context.subscribedPatternsFile[key]) {\n context.subscribedPatternsFile[key]--;\n if (!context.subscribedPatternsFile[key]) {\n void adapter.unsubscribeForeignFiles(id, fileNamePattern);\n delete context.subscribedPatternsFile[key];\n }\n }\n }\n\n /** Returns true when patId is a plain exact state-ID (no wildcards, no RegExp notation). */\n function _isExactId(patId: unknown): patId is string {\n return (\n !!patId &&\n typeof patId === 'string' &&\n !patId.includes('*') &&\n !patId.includes('?') &&\n !patId.startsWith('/')\n );\n }\n\n /** Removes a subscription from the O(1) dispatch index (subscriptionsMap / subscriptionsWildcard). */\n function _removeFromDispatchIndex(ctx: JavascriptContext, sub: SubscriptionResult): void {\n const patId = sub.pattern?.id;\n if (_isExactId(patId)) {\n const bucket = ctx.subscriptionsMap.get(patId);\n if (bucket) {\n const pos = bucket.indexOf(sub);\n if (pos !== -1) {\n bucket.splice(pos, 1);\n }\n if (bucket.length === 0) {\n ctx.subscriptionsMap.delete(patId);\n }\n }\n } else {\n const wPos = ctx.subscriptionsWildcard.indexOf(sub);\n if (wPos !== -1) {\n ctx.subscriptionsWildcard.splice(wPos, 1);\n }\n }\n }\n\n function getPatternCompareFunctions(pattern: Pattern): PatternEventCompareFunction[] & { logic?: 'and' | 'or' } {\n let func: PatternEventCompareFunction;\n const functions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' } = [];\n functions.logic = pattern.logic || 'and';\n\n for (const key in pattern) {\n if (!Object.prototype.hasOwnProperty.call(pattern, key)) {\n continue;\n }\n if (key === 'logic') {\n continue;\n }\n if (key === 'change' && pattern.change === 'any') {\n continue;\n }\n const _func: (pattern: Pattern) => PatternEventCompareFunction = (\n patternCompareFunctions as unknown as Record PatternEventCompareFunction>\n )[key];\n if (!_func) {\n continue;\n }\n func = _func(pattern);\n if (typeof func !== 'function') {\n continue;\n }\n functions.push(func);\n }\n return functions;\n }\n\n /**\n * Splits a selector string into attribute and value\n *\n * @param selector The selector string to split\n */\n function splitSelectorString(selector: string): Selector {\n const parts = selector.split('=', 2);\n if (parts[1] && parts[1][0] === '\"') {\n parts[1] = parts[1].substring(1);\n const len = parts[1].length;\n if (parts[1] && parts[1][len - 1] === '\"') {\n parts[1] = parts[1].substring(0, len - 1);\n }\n }\n if (parts[1] && parts[1][0] === \"'\") {\n parts[1] = parts[1].substring(1);\n const len = parts[1].length;\n if (parts[1] && parts[1][len - 1] === \"'\") {\n parts[1] = parts[1].substring(0, len - 1);\n }\n }\n\n if (parts[1]) {\n parts[1] = parts[1].trim();\n }\n parts[0] = parts[0].trim();\n\n return { attr: parts[0], value: parts[1] };\n }\n\n /**\n * Transforms a selector string with wildcards into a regular expression\n *\n * @param str The selector string to transform into a regular expression\n */\n function selectorStringToRegExp(str: string): RegExp {\n const cached = _selectorRegExpCache.get(str);\n if (cached) {\n return cached;\n }\n const startsWithWildcard = str[0] === '*';\n const endsWithWildcard = str[str.length - 1] === '*';\n // eslint-disable-next-line no-useless-escape\n const escaped = str.replace(/[-\\/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n const re = new RegExp((startsWithWildcard ? '' : '^') + escaped + (endsWithWildcard ? '' : '$'));\n\n // FIFO eviction: drop the oldest entry once the cache exceeds its limit\n if (_selectorRegExpCache.size >= _SELECTOR_REGEXP_CACHE_MAX) {\n const oldestKey = _selectorRegExpCache.keys().next().value;\n if (oldestKey !== undefined) {\n _selectorRegExpCache.delete(oldestKey);\n }\n }\n\n _selectorRegExpCache.set(str, re);\n return re;\n }\n\n /**\n * Adds a regular expression for selectors targeting the state ID\n *\n * @param selector The selector to apply the transform to\n */\n function addRegExpToIdAttrSelectors(selector: Selector): Selector {\n if ((selector.attr === 'id' || selector.attr === 'state.id') && !selector.idRegExp && selector.value) {\n return {\n attr: selector.attr,\n value: selector.value,\n idRegExp: selectorStringToRegExp(selector.value),\n };\n }\n return selector;\n }\n\n /**\n * Tests if a value loosely equals (==) the reference string.\n * In contrast to the equality operator, this treats true == \"true\" as well\n * so we can test common and native attributes for boolean values\n *\n * @param value The value to compare with the reference\n * @param reference The reference to compare the value to\n */\n function looselyEqualsString(value: string | number | boolean | undefined, reference: string): boolean {\n // For booleans, compare the string representation\n // For other types do a loose comparison\n return typeof value === 'boolean'\n ? (value && reference === 'true') || (!value && reference === 'false')\n : value == reference;\n }\n\n /**\n * Returns the `common.type` for a given variable\n */\n function getCommonTypeOf(value: any): ioBroker.CommonType {\n return isArray(value) ? 'array' : isObject(value) ? 'object' : (typeof value as ioBroker.CommonType);\n }\n\n /**\n * Returns if an id is in an allowed namespace for automatic object creations\n *\n * @param id id to check\n */\n function validIdForAutomaticFolderCreation(id: string): boolean {\n return id.startsWith('javascript.') || id.startsWith('0_userdata.0.') || id.startsWith('alias.0.');\n }\n\n /**\n * Iterate through object structure to create missing folder objects\n */\n async function ensureObjectStructure(id: string): Promise {\n if (!validIdForAutomaticFolderCreation(id)) {\n return;\n }\n if (context.folderCreationVerifiedObjects[id] === true) {\n return;\n }\n const idArr = id.split('.');\n idArr.pop(); // the last is created as an object in any way\n if (idArr.length < 3) {\n return; // Nothing to do\n }\n // We just create sublevel projects\n let idToCheck = idArr.splice(0, 2).join('.');\n\n context.folderCreationVerifiedObjects[id] = true;\n for (const part of idArr) {\n idToCheck += `.${part}`;\n if (context.folderCreationVerifiedObjects[idToCheck] === true || objects[idToCheck]) {\n continue;\n }\n context.folderCreationVerifiedObjects[idToCheck] = true;\n let obj: ioBroker.Object | null | undefined;\n try {\n obj = await adapter.getForeignObjectAsync(idToCheck);\n } catch {\n // ignore\n }\n if (!obj?.common) {\n sandbox.log(`Create folder object for ${idToCheck}`, 'debug');\n try {\n await adapter.setForeignObjectAsync(idToCheck, {\n _id: idToCheck,\n type: 'folder',\n common: {\n name: part,\n },\n native: {\n autocreated: 'by automatic ensure logic',\n },\n } as ioBroker.FolderObject);\n } catch (err: any) {\n sandbox.log(`Could not automatically create folder object ${idToCheck}: ${err.message}`, 'info');\n }\n } else {\n //sandbox.log(` already existing \"${idToCheck}\": ${JSON.stringify(obj)}`, 'debug');\n }\n }\n }\n\n function setStateHelper(\n sandbox: SandboxType,\n isCreate: boolean,\n isChanged: boolean,\n id: string,\n state: null | ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | 'true' | 'false' | undefined | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void,\n ): void {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n\n let stateNotNull: ioBroker.SettableState | ioBroker.StateValue;\n\n if (isAck === true || isAck === false || isAck === 'true' || isAck === 'false') {\n if (state && typeof state === 'object' && state.val !== undefined) {\n stateNotNull = state;\n // we assume that we were given a state object if\n // state is an object that contains a `val` property\n if (!Object.prototype.hasOwnProperty.call(state, 'ack')) {\n stateNotNull.ack = isAck === true || isAck === 'true';\n }\n } else if (state === null) {\n stateNotNull = { val: null, ack: isAck === true || isAck === 'true' };\n } else {\n // otherwise, assume that the given state is the value to be set\n stateNotNull = { val: state as ioBroker.StateValue, ack: isAck === true || isAck === 'true' };\n }\n } else if (state === null) {\n stateNotNull = { val: null };\n } else {\n stateNotNull = state;\n }\n\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (isCreate) {\n if (id.match(/^javascript\\.\\d+\\.scriptEnabled/)) {\n sandbox.log(\n `Own states (${id}) should not be used in javascript.X.scriptEnabled.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n } else if (id.match(/^javascript\\.\\d+\\.scriptProblem/)) {\n sandbox.log(\n `Own states (${id}) should not be used in javascript.X.scriptProblem.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n }\n }\n\n const common = objects[id] ? objects[id].common : null;\n if (common?.type && common.type !== 'mixed' && common.type !== 'json') {\n // Find out which type the value has\n let actualCommonType: ioBroker.CommonType | undefined;\n if (typeof stateNotNull === 'object') {\n if (stateNotNull && stateNotNull.val !== undefined && stateNotNull.val !== null) {\n actualCommonType = getCommonTypeOf(stateNotNull.val);\n }\n } else if (stateNotNull !== null && stateNotNull !== undefined) {\n actualCommonType = getCommonTypeOf(stateNotNull);\n }\n // If this is not the expected one, issue a warning\n if (actualCommonType && actualCommonType !== common.type) {\n context.logWithLineInfo(\n `You are assigning a ${actualCommonType} to the state \"${id}\" which expects a ${common.type}. ` +\n `Please fix your code to use a ${common.type} or change the state type to ${actualCommonType}. ` +\n `This warning might become an error in future versions.`,\n );\n }\n\n if (actualCommonType === 'array' || actualCommonType === 'object') {\n try {\n if (typeof stateNotNull === 'object' && typeof stateNotNull.val !== 'undefined') {\n stateNotNull.val = JSON.stringify(stateNotNull.val);\n } else {\n stateNotNull = JSON.stringify(stateNotNull);\n }\n } catch (err: any) {\n context.logWithLineInfo(\n `Could not stringify value for type ${actualCommonType} and id ${id}: ${err.message}`,\n );\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error(\n `Could not stringify value for type ${actualCommonType} and id ${id}: ${err.message}`,\n ),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n }\n }\n }\n // Check min and max of value\n if (typeof stateNotNull === 'object') {\n if (common && typeof stateNotNull.val === 'number') {\n const num: number = stateNotNull.val;\n if (common.min !== undefined && num < common.min) {\n stateNotNull.val = common.min;\n } else if (common.max !== undefined && num > common.max) {\n stateNotNull.val = common.max;\n }\n }\n } else if (common && typeof stateNotNull === 'number') {\n const num: number = stateNotNull;\n if (common.min !== undefined && num < common.min) {\n stateNotNull = common.min;\n }\n if (common.max !== undefined && num > common.max) {\n stateNotNull = common.max;\n }\n }\n\n let stateAsObject: ioBroker.State;\n // modify state here, to make it available in callback\n if (\n stateNotNull === null ||\n typeof stateNotNull !== 'object' ||\n (stateNotNull as ioBroker.SettableState).val === undefined\n ) {\n stateAsObject = context.prepareStateObject(id, {\n val: stateNotNull as ioBroker.StateValue,\n ack: isAck === true || isAck === 'true',\n });\n } else {\n stateAsObject = context.prepareStateObject(id, stateNotNull as ioBroker.SettableState);\n }\n\n // set as comment: from which script this state was set.\n stateAsObject.c = sandbox.scriptName;\n\n if (objects[id]) {\n script.setStatePerMinuteCounter++;\n if (sandbox.verbose) {\n sandbox.log(`setForeignState(id=${id}, state=${JSON.stringify(stateAsObject)})`, 'info');\n }\n\n if (debug) {\n sandbox.log(\n `setForeignState(id=${id}, state=${JSON.stringify(stateAsObject)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n } else {\n if (!(adapter.config as JavaScriptAdapterConfig).subscribe) {\n // store actual state to make possible to process value in callback\n // risk that there will be an error on setState is very low,\n // but we will not store new state if the setStateChanged is called\n if (!isChanged) {\n context.interimStateValues[id] = stateAsObject;\n }\n }\n const errHandler = (err: Error | null | undefined, funcId: string): void => {\n err && sandbox.log(`${funcId}: ${err}`, 'error');\n // If adapter holds all states\n if (err && !(adapter.config as JavaScriptAdapterConfig).subscribe) {\n delete context.interimStateValues[id];\n }\n\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n };\n if (isChanged) {\n if (!(adapter.config as JavaScriptAdapterConfig).subscribe && context.interimStateValues[id]) {\n // if the state is changed, we will compare it with interimStateValues\n const oldState = context.interimStateValues[id];\n // IO-1: for…in instead of Object.keys().filter().every() – no temporary array per call\n let stateHasChanged = false;\n for (const attr in stateAsObject) {\n if (attr === 'ts') {\n continue;\n }\n if ((stateAsObject as Record)[attr] === undefined) {\n continue;\n }\n if (\n (stateAsObject as Record)[attr] !== (oldState as Record)[attr]\n ) {\n stateHasChanged = true;\n break;\n }\n }\n if (stateHasChanged) {\n // state is changed for sure, and we will call setForeignState\n // and store new state to interimStateValues\n context.interimStateValues[id] = stateAsObject;\n adapter.setForeignState(id, stateAsObject, err => errHandler(err, 'setForeignState'));\n } else {\n // otherwise - do nothing as we have cached state, except callback\n errHandler(null, 'setForeignStateCached');\n }\n } else {\n // adapter doesn't hold all states, or it has not cached then we will simply call setForeignStateChanged\n adapter.setForeignStateChanged(id, { ...stateAsObject, ts: undefined }, err =>\n errHandler(err, 'setForeignStateChanged'),\n );\n }\n } else {\n adapter.setForeignState(id, stateAsObject, err => errHandler(err, 'setForeignState'));\n }\n }\n } else {\n context.logWithLineInfo(`State \"${id}\" not found`);\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox, new Error(`State \"${id}\" not found`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n }\n }\n\n sandbox = {\n mods,\n _id: script._id,\n // @deprecated use scriptName\n name,\n scriptName: name,\n instance: adapter.instance || 0,\n defaultDataDir: context.getAbsoluteDefaultDataDir(),\n verbose,\n exports: {}, // Polyfill for the export object in TypeScript modules\n require: function (md: string): any {\n if (typeof md === 'string' && md.startsWith('node:')) {\n md = md.replace(/^node:/, '');\n }\n\n if (md === 'request') {\n if (!sandbox.__engine.__deprecatedWarnings.includes(md)) {\n sandbox.log(\n `request package is deprecated - please use httpGet (or a stable lib like axios) instead!`,\n 'warn',\n );\n sandbox.__engine.__deprecatedWarnings.push(md);\n }\n }\n\n if (mods[md]) {\n return mods[md];\n }\n\n let error: Error | undefined;\n\n try {\n mods[md] = require(\n adapter.getAdapterScopedPackageIdentifier ? adapter.getAdapterScopedPackageIdentifier(md) : md,\n );\n return mods[md];\n } catch (e: any) {\n error = e as Error;\n }\n\n try {\n // the user requires a module which is not specified in the additional node modules\n // for backward compatibility we check if the module can simply be required directly before we fail (e.g., direct dependencies of JavaScript adapter)\n adapter.log.debug(`Try direct require of \"${md}\" as not specified in the additional dependencies`);\n mods[md] = require(md);\n\n return mods[md];\n } catch (e: any) {\n context.logError(name, `Error by loading module \"${md}\":`, error || e, 6);\n\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'require',\n });\n }\n },\n Buffer: Buffer,\n __engine: {\n __deprecatedWarnings: [],\n __subscriptionsObject: 0,\n __subscriptions: 0,\n __subscriptionsMessage: 0,\n __subscriptionsFile: 0,\n __subscriptionsLog: 0,\n __schedules: 0,\n },\n\n $: function (selector: string): iobJS.QueryResult {\n // following is supported\n // 'type[commonAttr=something]', 'id[commonAttr=something]', id(enumName=\"something\")', id{nativeName=\"something\"}\n // Type can be state, channel or device\n // Attr can be any of the common attributes and can have wildcards *\n // E.g. \"state[id='hm-rpc.0.*]\" or \"hm-rpc.0.*\" returns all states of adapter instance hm-rpc.0\n // channel(room=\"Living room\") => all states in room \"Living room\"\n // channel{TYPE=BLIND}[state.id=*.LEVEL]\n // Switch all states with .STATE of channels with role \"switch\" in \"Wohnzimmer\" to false\n // $('channel[role=switch][state.id=*.STATE](rooms=Wohnzimmer)').setState(false);\n //\n // Following functions are possible, setValue, getValue (only from first), on, each\n\n // Todo CACHE!!!\n\n const result: iobJS.QueryResult = {} as iobJS.QueryResult;\n\n let name = '';\n const commonStrings: string[] = [];\n const enumStrings: string[] = [];\n const nativeStrings: string[] = [];\n let isInsideName = true;\n let isInsideCommonString = false;\n let isInsideEnumString = false;\n let isInsideNativeString = false;\n let currentCommonString = '';\n let currentNativeString = '';\n let currentEnumString = '';\n\n // parse string\n let selectorHasInvalidType = false;\n if (typeof selector === 'string') {\n for (let i = 0; i < selector.length; i++) {\n if (selector[i] === '{') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideNativeString = true;\n } else if (selector[i] === '}') {\n isInsideNativeString = false;\n nativeStrings.push(currentNativeString);\n currentNativeString = '';\n } else if (selector[i] === '[') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideCommonString = true;\n } else if (selector[i] === ']') {\n isInsideCommonString = false;\n commonStrings.push(currentCommonString);\n currentCommonString = '';\n } else if (selector[i] === '(') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideEnumString = true;\n } else if (selector[i] === ')') {\n isInsideEnumString = false;\n enumStrings.push(currentEnumString);\n currentEnumString = '';\n } else if (isInsideName) {\n name += selector[i];\n } else if (isInsideCommonString) {\n currentCommonString += selector[i];\n } else if (isInsideEnumString) {\n currentEnumString += selector[i];\n } else if (isInsideNativeString) {\n currentNativeString += selector[i];\n } //else {\n // some error\n //}\n }\n } else {\n selectorHasInvalidType = true;\n }\n\n // If some error in the selector\n if (selectorHasInvalidType || isInsideEnumString || isInsideCommonString || isInsideNativeString) {\n result.length = 0;\n result.toArray = function () {\n return [];\n };\n result.each = function () {\n return this;\n };\n result.getState = function () {\n return null;\n };\n result.setState = function () {\n return this;\n };\n result.on = function () {\n return this;\n };\n }\n\n if (isInsideEnumString) {\n sandbox.log(`Invalid selector: enum close bracket \")\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: enum close bracket \")\" cannot be found';\n return result;\n } else if (isInsideCommonString) {\n sandbox.log(`Invalid selector: common close bracket \"]\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: common close bracket \"]\" cannot be found';\n return result;\n } else if (isInsideNativeString) {\n sandbox.log(`Invalid selector: native close bracket \"}\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: native close bracket \"}\" cannot be found';\n return result;\n } else if (selectorHasInvalidType) {\n const message = `Invalid selector: selector must be a string but is of type ${typeof selector}`;\n sandbox.log(message, 'warn');\n result.error = message;\n return result;\n }\n\n let commonSelectors: Selector[] = commonStrings.map(selector => splitSelectorString(selector));\n let nativeSelectors: Selector[] = nativeStrings.map(selector => splitSelectorString(selector));\n const enumSelectorObjects: Selector[] = enumStrings.map(_enum => splitSelectorString(_enum));\n const allSelectors: Selector[] = commonSelectors.concat(nativeSelectors, enumSelectorObjects);\n\n // These selectors match the state or object ID and don't belong in the common/native selectors\n // Also use RegExp for the ID matching\n const stateIdSelectors: Selector[] = allSelectors\n .filter(selector => selector.attr === 'state.id')\n .map(selector => addRegExpToIdAttrSelectors(selector));\n const objectIdSelectors: Selector[] = allSelectors\n .filter(selector => selector.attr === 'id')\n .map(selector => addRegExpToIdAttrSelectors(selector));\n commonSelectors = commonSelectors.filter(\n selector => selector.attr !== 'state.id' && selector.attr !== 'id',\n );\n nativeSelectors = nativeSelectors.filter(\n selector => selector.attr !== 'state.id' && selector.attr !== 'id',\n );\n const enumSelectors: string[] = enumSelectorObjects\n .filter(selector => selector.attr !== 'state.id' && selector.attr !== 'id')\n // enums are filtered by their enum id, so transform the selector into that\n .map(selector => `enum.${selector.attr}.${selector.value}`);\n\n name = name.trim();\n\n if (name === 'channel' || name === 'device') {\n // Fill the channels and devices objects with the IDs of all their states,\n // so we can loop over them afterward\n if (!context.channels || !context.devices) {\n context.channels = {};\n context.devices = {};\n for (const _id of Object.keys(objects)) {\n if (objects[_id].type === 'state') {\n const parts = _id.split('.');\n parts.pop();\n const chn = parts.join('.');\n\n parts.pop();\n const dev = parts.join('.');\n\n context.devices[dev] = context.devices[dev] || new Set();\n context.devices[dev].add(_id);\n\n context.channels[chn] = context.channels[chn] || new Set();\n context.channels[chn].add(_id);\n }\n }\n }\n }\n\n if (name === 'schedule') {\n if (!context.schedules) {\n context.schedules = [];\n for (const _id of Object.keys(objects)) {\n if (objects[_id].type === 'schedule') {\n context.schedules.push(_id);\n }\n }\n }\n }\n\n /**\n * applies all selectors targeting an object or state ID\n */\n function applyIDSelectors(objId: string, selectors: Selector[]): boolean {\n // Only keep the ID if it matches every ID selector\n return selectors.every(selector => !selector.idRegExp || selector.idRegExp.test(objId));\n }\n\n /**\n * Applies all selectors targeting the Object common properties\n *\n * @param objId - The ID of the object in question\n */\n function applyCommonSelectors(objId: string): boolean {\n const obj = objects[objId];\n if (!obj?.common) {\n return false;\n }\n const objCommon = obj.common;\n\n // make sure this object satisfies all selectors\n return commonSelectors.every(\n selector =>\n // ensure a property exists\n (selector.value === undefined && objCommon[selector.attr] !== undefined) ||\n // or match exact values\n looselyEqualsString(objCommon[selector.attr], selector.value),\n );\n }\n\n /**\n * Applies all selectors targeting the Object native properties\n *\n * @param objId - The ID of the object in question\n */\n function applyNativeSelectors(objId: string): boolean {\n const obj = objects[objId];\n if (!obj || !obj.native) {\n return false;\n }\n const objNative = obj.native;\n // make sure this object satisfies all selectors\n return nativeSelectors.every(\n selector =>\n // ensure a property exists\n (selector.value === undefined && objNative[selector.attr] !== undefined) ||\n // or match exact values\n looselyEqualsString(objNative[selector.attr], selector.value),\n );\n }\n\n /**\n * Applies all selectors targeting the Objects enums\n *\n * @param objId - The ID of the object in question\n */\n function applyEnumSelectors(objId: string): boolean {\n const enumIds: string[] = [];\n eventObj.getObjectEnumsSync(context, objId, enumIds);\n // make sure this object satisfies all selectors\n return enumSelectors.every(_enum => enumIds.includes(_enum));\n }\n\n let res: string[];\n\n if (name === 'schedule') {\n res = context.schedules || [];\n if (objectIdSelectors.length) {\n res = res.filter(channelId => applyIDSelectors(channelId, objectIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(id => applyCommonSelectors(id));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(id => applyNativeSelectors(id));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(channelId => applyEnumSelectors(channelId));\n }\n } else if (name === 'channel') {\n if (!context.channels) {\n // TODO: fill the channels and maintain them on all places where context.stateIds will be changed\n }\n const channels = context.channels || {};\n\n // go through all channels\n res = Object.keys(channels);\n // filter out those that don't match every ID selector for the channel ID\n if (objectIdSelectors.length) {\n res = res.filter(channelId => applyIDSelectors(channelId, objectIdSelectors));\n }\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(channelId => applyCommonSelectors(channelId));\n }\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(channelId => applyNativeSelectors(channelId));\n }\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(channelId => applyEnumSelectors(channelId));\n }\n\n // retrieve the state ID collection for all remaining channels\n res = res\n .map(id => [...(channels[id] || [])])\n // and flatten the array to get only the state IDs\n .reduce((acc, next) => acc.concat(next), []);\n\n // now filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(stateId => applyIDSelectors(stateId, stateIdSelectors));\n }\n } else if (name === 'device') {\n if (!context.devices) {\n // TODO: fill the devices and maintain them on all places where context.stateIds will be changed\n }\n\n const devices = context.devices || {};\n\n // go through all devices\n res = Object.keys(devices);\n // filter out those that don't match every ID selector for the channel ID\n if (objectIdSelectors.length) {\n res = res.filter(deviceId => applyIDSelectors(deviceId, objectIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(deviceId => applyCommonSelectors(deviceId));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(deviceId => applyNativeSelectors(deviceId));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(deviceId => applyEnumSelectors(deviceId));\n }\n\n // retrieve the state ID collection for all remaining devices\n res = res\n .map(id => [...(devices[id] || [])])\n // and flatten the array to get only the state IDs\n .reduce((acc, next) => acc.concat(next), []);\n\n // now filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(stateId => applyIDSelectors(stateId, stateIdSelectors));\n }\n } else {\n // go through all states\n res = context.stateIds;\n // if the \"name\" is not state, then we filter for the ID as well\n if (name && name !== 'state') {\n const r = new RegExp(`^${name.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*')}$`);\n res = res.filter(id => r.test(id));\n }\n\n // filter out those that don't match every ID selector for the object ID or the state ID\n if (objectIdSelectors.length) {\n res = res.filter(id => applyIDSelectors(id, objectIdSelectors));\n }\n\n // filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(id => applyIDSelectors(id, stateIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(id => applyCommonSelectors(id));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(id => applyNativeSelectors(id));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(id => applyEnumSelectors(id));\n }\n }\n\n // IO-2: O(1) deduplication via Set instead of O(n²) resUnique.includes()\n const resUnique: string[] = [...new Set(res)];\n\n for (let i = 0; i < resUnique.length; i++) {\n result[i] = resUnique[i];\n }\n result.length = resUnique.length;\n\n // Implementing the Symbol.iterator contract makes the query result iterable\n result[Symbol.iterator] = function* () {\n for (let i = 0; i < result.length; i++) {\n yield result[i];\n }\n };\n result.toArray = function (): string[] {\n return [...resUnique];\n };\n result.each = function (callback: (id: string, index: number) => void | false): iobJS.QueryResult {\n if (typeof callback === 'function') {\n let r: boolean | void;\n for (let i = 0; i < this.length; i++) {\n r = callback(result[i], i);\n if (r === false) {\n break;\n }\n }\n }\n return this;\n };\n // @ts-expect-error fix later\n result.getState = function (\n callback?: iobJS.GetStateCallback,\n ): void | null | undefined | iobJS.TypedState | iobJS.AbsentState {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (typeof callback !== 'function') {\n sandbox.log('You cannot use this function synchronous', 'error');\n } else {\n void adapter.getForeignState(\n this[0],\n (err: Error | null | undefined, state?: ioBroker.State | null): void => {\n void callback(\n err,\n context.convertBackStringifiedValues(this[0], state) as\n | iobJS.TypedState\n | iobJS.AbsentState,\n );\n },\n );\n }\n } else {\n if (!this[0]) {\n return null;\n }\n if (context.interimStateValues[this[0]] !== undefined) {\n return context.convertBackStringifiedValues(this[0], context.interimStateValues[this[0]]) as\n | iobJS.TypedState\n | iobJS.AbsentState;\n }\n return context.convertBackStringifiedValues(this[0], states[this[0]]) as\n | iobJS.TypedState\n | iobJS.AbsentState;\n }\n };\n result.getStateAsync = async function (): Promise<\n iobJS.TypedState | iobJS.AbsentState | null | undefined\n > {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n const state = await adapter.getForeignStateAsync(this[0]);\n return context.convertBackStringifiedValues(this[0], state) as\n | iobJS.TypedState\n | iobJS.AbsentState\n | null;\n }\n if (!this[0]) {\n return null;\n }\n if (context.interimStateValues[this[0]] !== undefined) {\n return context.convertBackStringifiedValues(this[0], context.interimStateValues[this[0]]) as\n | iobJS.TypedState\n | iobJS.AbsentState\n | null;\n }\n return context.convertBackStringifiedValues(this[0], states[this[0]]) as\n | iobJS.TypedState\n | iobJS.AbsentState\n | null;\n };\n result.setState = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | 'false' | 'true' | null | iobJS.SetStateCallback,\n callback?: iobJS.SetStateCallback,\n ) {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n void result\n .setStateAsync(state, isAck as boolean | 'false' | 'true')\n .then(() => typeof callback === 'function' && callback());\n return this;\n };\n result.setStateAsync = async function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n for (let i = 0; i < this.length; i++) {\n await sandbox.setStateAsync(this[i], state, isAck);\n }\n };\n result.setStateChanged = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n callback?: () => void,\n ) {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n void result.setStateChangedAsync(state, isAck).then(() => typeof callback === 'function' && callback());\n return this;\n };\n result.setStateChangedAsync = async function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n for (let i = 0; i < this.length; i++) {\n await sandbox.setStateChangedAsync(this[i], state, isAck);\n }\n };\n result.setStateDelayed = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | number | undefined,\n delay?: number | boolean,\n clearRunning?: boolean | (() => void),\n callback?: () => void,\n ) {\n if (typeof isAck !== 'boolean') {\n callback = clearRunning as () => void;\n clearRunning = delay as boolean;\n delay = isAck as number;\n isAck = undefined;\n }\n if (typeof delay !== 'number') {\n callback = clearRunning as () => void;\n clearRunning = delay;\n delay = 0;\n }\n if (typeof clearRunning !== 'boolean') {\n callback = clearRunning;\n clearRunning = true;\n }\n let count = this.length;\n for (let i = 0; i < this.length; i++) {\n sandbox.setStateDelayed(this[i], state, isAck as boolean, delay, clearRunning, () => {\n if (!--count && typeof callback === 'function') {\n callback();\n }\n });\n }\n return this;\n };\n result.on = function (callbackOrId: string | ((data: any) => void), value?: any) {\n for (let i = 0; i < this.length; i++) {\n sandbox.subscribe(this[i], callbackOrId, value);\n }\n return this;\n };\n return result;\n },\n log: function (msg: string, severity?: ioBroker.LogLevel): void {\n severity = severity || 'info';\n\n // disable log in log handler (prevent endless loops)\n if (sandbox.logHandler && (sandbox.logHandler === severity || sandbox.logHandler === '*')) {\n return;\n }\n\n if (!adapter.log[severity]) {\n msg = `Unknown severity level \"${severity}\" by log of [${msg}]`;\n severity = 'warn';\n }\n\n if (msg && typeof msg !== 'string') {\n msg = mods.util.format(msg);\n }\n\n if (debugMode) {\n console.log(`${severity}$$${name}$$${msg}`, Date.now());\n } else {\n adapter.log[severity](`${name}: ${msg}`);\n }\n },\n onLog: function (severity: ioBroker.LogLevel, callback: (info: LogMessage) => void): number {\n if (!['info', 'error', 'debug', 'silly', 'warn', '*'].includes(severity)) {\n sandbox.log(`Unknown severity \"${severity}\"`, 'warn');\n return 0;\n }\n if (typeof callback !== 'function') {\n sandbox.log(`Invalid callback for onLog`, 'warn');\n return 0;\n }\n\n const handler = { id: _handlerIdCounter++, cb: callback, sandbox, severity };\n context.logSubscriptions[sandbox.scriptName] = context.logSubscriptions[sandbox.scriptName] || [];\n context.logSubscriptions[sandbox.scriptName].push(handler);\n context.updateLogSubscriptions();\n\n sandbox.__engine.__subscriptionsLog += 1;\n\n sandbox.verbose &&\n sandbox.log(\n `onLog(severity=${severity}, id=${handler.id}) - logSubscriptions=${sandbox.__engine.__subscriptionsLog}`,\n 'info',\n );\n\n if (\n sandbox.__engine.__subscriptionsLog %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsLog} log subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n return handler.id;\n },\n onLogUnregister: function (\n idOrCallbackOrSeverity: number | ioBroker.LogLevel | ((info: LogMessage) => void),\n ): boolean {\n let found = false;\n\n if (context.logSubscriptions?.[sandbox.scriptName]) {\n sandbox.verbose &&\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}) - logSubscriptions=${sandbox.__engine.__subscriptionsLog}`,\n 'info',\n );\n\n for (let i = 0; i < context.logSubscriptions[sandbox.scriptName].length; i++) {\n if (\n context.logSubscriptions[sandbox.scriptName][i].cb === idOrCallbackOrSeverity ||\n context.logSubscriptions[sandbox.scriptName][i].id === idOrCallbackOrSeverity ||\n context.logSubscriptions[sandbox.scriptName][i].severity === idOrCallbackOrSeverity\n ) {\n sandbox.verbose &&\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}, removing id=${context.logSubscriptions[sandbox.scriptName][i].id})`,\n 'info',\n );\n\n context.logSubscriptions[sandbox.scriptName].splice(i, 1);\n i--;\n sandbox.__engine.__subscriptionsLog--;\n\n found = true;\n\n // if deletion via ID\n if (typeof idOrCallbackOrSeverity === 'number') {\n break;\n }\n } else {\n sandbox.verbose &&\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}) NOT = ${JSON.stringify(context.logSubscriptions[sandbox.scriptName][i])}`,\n 'info',\n );\n }\n }\n }\n\n context.updateLogSubscriptions();\n\n return found;\n },\n exec: function (\n cmd: string,\n options?: ExecOptions | ((error: Error | null | string, stdout?: string, stderr?: string) => void),\n callback?: (error: Error | null | string, stdout?: string, stderr?: string) => void,\n ): undefined | ChildProcess {\n if (typeof options === 'function') {\n callback = options as (error: Error | null | string, stdout?: string, stderr?: string) => void;\n options = {};\n }\n if (!(adapter.config as JavaScriptAdapterConfig).enableExec) {\n const error = 'exec is not available. Please enable \"Enable Exec\" option in instance settings';\n sandbox.log(error, 'error');\n\n if (typeof callback === 'function') {\n setImmediate(callback, error, undefined, undefined);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`exec(cmd=${cmd})`, 'info');\n }\n\n if (debug) {\n sandbox.log(words._('Command %s was not executed, while debug mode is active', cmd), 'warn');\n if (typeof callback === 'function') {\n setImmediate(function () {\n callback(null, '', '');\n });\n }\n } else {\n return mods.child_process.exec(\n cmd,\n options,\n (error: Error | null, stdout: string, stderr: string): void => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, error, stdout, stderr);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n );\n }\n }\n },\n email: function (msg: string | SendMailOptions): void {\n if (sandbox.verbose) {\n sandbox.log(`email(msg=${JSON.stringify(msg)})`, 'info');\n }\n sandbox.log(`email(msg=${JSON.stringify(msg)}) is deprecated. Please use sendTo instead!`, 'warn');\n adapter.sendTo('email', msg);\n },\n pushover: function (msg: string | PushoverOptions): void {\n if (sandbox.verbose) {\n sandbox.log(`pushover(msg=${JSON.stringify(msg)})`, 'info');\n }\n sandbox.log(`pushover(msg=${JSON.stringify(msg)}) is deprecated. Please use sendTo instead!`, 'warn');\n adapter.sendTo('pushover', msg);\n },\n httpGet: function (\n url: string,\n options:\n | {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n }\n | ((\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void),\n callback?: (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void,\n ): void {\n if (typeof options === 'function') {\n callback = options as (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void;\n options = {};\n }\n\n const config = {\n ...getHttpRequestConfig(url, options, context.allowSelfSignedCerts),\n method: 'get',\n };\n\n if (sandbox.verbose) {\n sandbox.log(`httpGet(config=${JSON.stringify(config)})`, 'info');\n }\n\n const startTime = Date.now();\n\n mods.axios\n .default(config)\n .then((response: AxiosResponse) => {\n const responseTime = Date.now() - startTime;\n\n if (sandbox.verbose) {\n sandbox.log(`httpGet(url=${url}, responseTime=${responseTime}ms)`, 'info');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, {\n statusCode: response.status,\n data: response.data,\n headers: response.headers as Record,\n responseTime,\n });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n })\n .catch((error: any) => {\n const responseTime = Date.now() - startTime;\n\n sandbox.log(`httpGet(url=${url}, error=${error.message})`, 'error');\n\n if (typeof callback === 'function') {\n let result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n } = {\n statusCode: null,\n data: null,\n headers: {},\n responseTime,\n };\n\n if (error.response) {\n result = {\n statusCode: error.response.status,\n data: error.response.data,\n headers: error.response.headers,\n responseTime,\n };\n }\n\n try {\n callback.call(sandbox, error.message, result);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n },\n httpPost: function (\n url: string,\n data: any,\n options:\n | {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n }\n | ((\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void),\n callback?: (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void,\n ): void {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n const config = {\n ...getHttpRequestConfig(\n url,\n options as {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n context.allowSelfSignedCerts,\n ),\n method: 'post',\n data,\n };\n\n if (sandbox.verbose) {\n sandbox.log(`httpPost(config=${JSON.stringify(config)}, data=${data})`, 'info');\n }\n\n const startTime = Date.now();\n\n mods.axios\n .default(config)\n .then((response: AxiosResponse) => {\n const responseTime = Date.now() - startTime;\n\n if (sandbox.verbose) {\n sandbox.log(`httpPost(url=${url}, responseTime=${responseTime}ms)`, 'info');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, {\n statusCode: response.status,\n data: response.data,\n headers: response.headers,\n responseTime,\n });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n })\n .catch((error: unknown) => {\n const responseTime = Date.now() - startTime;\n\n sandbox.log(`httpPost(url=${url}, error=${(error as Error).message})`, 'error');\n\n if (typeof callback === 'function') {\n let result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n } = {\n statusCode: null,\n data: null,\n headers: {},\n responseTime,\n };\n const response: AxiosResponse | undefined = (error as AxiosError).response;\n\n if (response) {\n result = {\n statusCode: response.status,\n data: response.data,\n headers: response.headers,\n responseTime,\n };\n }\n\n try {\n callback.call(sandbox, new Error((error as AxiosError).message), result);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n },\n createTempFile: function (fileName: string, data: Buffer | string): undefined | string {\n const os = mods.os;\n const path = mods.path;\n const fs = mods.fs;\n\n let tempDirPath = context.tempDirectories?.[sandbox.scriptName];\n\n if (!tempDirPath) {\n // create temp directory\n tempDirPath = fs.mkdtempSync(\n path.join(os.tmpdir(), `${sandbox.scriptName.substring(SCRIPT_CODE_MARKER.length)}-`),\n );\n context.tempDirectories[sandbox.scriptName] = tempDirPath;\n\n sandbox.verbose &&\n sandbox.log(\n `createTempFile(fileName=${fileName}, tempDirPath=${tempDirPath}) created temp directory in ${os.tmpdir()}`,\n 'info',\n );\n }\n\n const filePath = path.join(tempDirPath, fileName);\n\n // is sub dir?\n const fileDir = path.dirname(filePath);\n if (!fs.existsSync(fileDir)) {\n fs.mkdirSync(fileDir, { recursive: true });\n }\n\n if (typeof data === 'undefined') {\n sandbox.log(\n `createTempFile(fileName=${fileName}, fileDir=${fileDir}, filePath=${filePath}) data is undefined, file not created!`,\n 'error',\n );\n\n return undefined;\n }\n\n fs.writeFileSync(filePath, data);\n sandbox.verbose &&\n sandbox.log(`createTempFile(fileName=${fileName}, fileDir=${fileDir}, filePath=${filePath})`, 'info');\n\n return filePath;\n },\n subscribe: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n callbackOrChangeTypeOrId: string | ChangeType | ((event?: EventObj) => void),\n value?: any,\n ):\n | SubscriptionResult\n | IobSchedule\n | string\n | null\n | undefined\n | (SubscriptionResult | IobSchedule | string | null | undefined)[] {\n // If a schedule object is given\n if (\n (typeof pattern === 'string' && pattern[0] === '{') ||\n (typeof pattern === 'object' && (pattern as SchedulerRule).period)\n ) {\n return sandbox.schedule(pattern as SchedulerRule, callbackOrChangeTypeOrId as () => void);\n }\n // If an array of schedules is given\n if (pattern && Array.isArray(pattern)) {\n const result: (IobSchedule | string | null | undefined)[] = [];\n for (const p of pattern) {\n result.push(\n sandbox.subscribe(p as SchedulerRule | string, callbackOrChangeTypeOrId, value) as\n | IobSchedule\n | string\n | null\n | undefined,\n );\n }\n return result;\n }\n\n // detect subscribe('id', 'any', (obj) => {})\n let oPattern: Pattern;\n if (\n (typeof pattern === 'string' || pattern instanceof RegExp) &&\n typeof callbackOrChangeTypeOrId === 'string' &&\n typeof value === 'function'\n ) {\n oPattern = { id: pattern, change: callbackOrChangeTypeOrId as ChangeType };\n callbackOrChangeTypeOrId = value;\n value = undefined;\n } else {\n oPattern = pattern as Pattern;\n }\n\n if (oPattern?.id && Array.isArray(oPattern.id)) {\n const result: (IobSchedule | string | null | undefined)[] = [];\n for (let t = 0; t < oPattern.id.length; t++) {\n // IO-4: Spread instead of JSON.parse(JSON.stringify()) – no deep clone needed (only primitive fields)\n const pa: Pattern = { ...oPattern, id: oPattern.id[t] };\n result.push(\n sandbox.subscribe(pa, callbackOrChangeTypeOrId, value) as\n | IobSchedule\n | string\n | null\n | undefined,\n );\n }\n return result;\n }\n\n // try to detect astro or cron (by spaces)\n if (isObject(pattern) || (typeof pattern === 'string' && pattern.match(/[,/\\d*]+\\s[,/\\d*]+\\s[,/\\d*]+/))) {\n if ((pattern as AstroRule).astro) {\n return sandbox.schedule(pattern as AstroRule, callbackOrChangeTypeOrId as () => void);\n } else if ((pattern as TimeRule).time) {\n return sandbox.schedule(\n (pattern as TimeRule).time as string,\n callbackOrChangeTypeOrId as () => void,\n );\n }\n }\n\n let callback: undefined | ((obj: EventObj) => void);\n\n // source is set by regexp if defined as /regexp/\n if (!isObject(pattern) || pattern instanceof RegExp || (pattern as RegExp).source) {\n oPattern = { id: pattern as string | RegExp, change: 'ne' };\n }\n\n if (oPattern.id !== undefined && !oPattern.id) {\n sandbox.log(`Error by subscription (trigger): empty ID defined. All states matched.`, 'error');\n return;\n } else if (typeof oPattern.id === 'boolean' || typeof oPattern.id === 'number') {\n sandbox.log(`Error by subscription (trigger): Wrong ID of type boolean or number.`, 'error');\n return;\n }\n\n sandbox.__engine.__subscriptions += 1;\n\n if (\n sandbox.__engine.__subscriptions % (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptions} subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n if (oPattern.q === undefined) {\n oPattern.q = 0;\n }\n\n // add adapter namespace if nothing given\n if (oPattern.id && typeof oPattern.id === 'string' && !oPattern.id.includes('.')) {\n oPattern.id = `${adapter.namespace}.${oPattern.id}`;\n }\n\n if (typeof callbackOrChangeTypeOrId === 'function') {\n callback = callbackOrChangeTypeOrId;\n } else {\n if (typeof value === 'undefined') {\n callback = function (obj: EventObj) {\n sandbox.setState(callbackOrChangeTypeOrId, obj.newState.val);\n };\n } else {\n callback = function (/* obj */) {\n sandbox.setState(callbackOrChangeTypeOrId, value);\n };\n }\n }\n\n const subs: SubscriptionResult = {\n pattern: oPattern,\n callback: (obj: EventObj) => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, obj);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n name,\n };\n\n // try to extract adapter\n if (oPattern.id && typeof oPattern.id === 'string') {\n const parts = oPattern.id.split('.');\n const a = `${parts[0]}.${parts[1]}`;\n const _adapter = `system.adapter.${a}`;\n\n if (objects[_adapter] && objects[_adapter].common && objects[_adapter].common.subscribable) {\n const alive = `system.adapter.${a}.alive`;\n context.adapterSubs[alive] = context.adapterSubs[alive] || new Set();\n\n // Set.has() is O(1) and automatically prevents duplicates\n const subExists = context.adapterSubs[alive].has(oPattern.id);\n\n if (!subExists) {\n context.adapterSubs[alive].add(oPattern.id);\n adapter.sendTo(a, 'subscribe', oPattern.id);\n }\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`subscribe: ${JSON.stringify(subs)}`, 'info');\n }\n\n subscribePattern(script, oPattern.id as string);\n\n subs.patternCompareFunctions = getPatternCompareFunctions(oPattern);\n context.subscriptions.push(subs);\n\n // O(1) dispatch index: exact string IDs go into the map, everything else into the wildcard array\n if (_isExactId(oPattern.id)) {\n if (!context.subscriptionsMap.has(oPattern.id)) {\n context.subscriptionsMap.set(oPattern.id, []);\n }\n context.subscriptionsMap.get(oPattern.id)!.push(subs);\n } else {\n context.subscriptionsWildcard.push(subs);\n }\n\n if (oPattern.enumName || oPattern.enumId) {\n context.isEnums = true;\n }\n return subs;\n },\n getSubscriptions: function (): Record {\n const result: Record = {};\n // Iterate over the O(1) dispatch index instead of the flat array\n for (const [id, bucket] of context.subscriptionsMap) {\n result[id] = bucket.map(s => ({ name: s.name, pattern: s.pattern }));\n }\n for (const s of context.subscriptionsWildcard) {\n const key = s.pattern.id as string;\n (result[key] ??= []).push({ name: s.name, pattern: s.pattern });\n }\n if (sandbox.verbose) {\n sandbox.log(`getSubscriptions() => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n },\n getFileSubscriptions: function (): Record {\n const result: Record = {};\n for (let s = 0; s < context.subscriptionsFile.length; s++) {\n const key = `${context.subscriptionsFile[s].id}$%$${context.subscriptionsFile[s].fileNamePattern}`;\n result[key] = result[key] || [];\n result[key].push({\n name: context.subscriptionsFile[s].name,\n id: context.subscriptionsFile[s].id,\n fileNamePattern: context.subscriptionsFile[s].fileNamePattern,\n });\n }\n if (sandbox.verbose) {\n sandbox.log(`getFileSubscriptions() => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n },\n adapterSubscribe: function (id: string): void {\n if (typeof id !== 'string') {\n sandbox.log(`adapterSubscribe: invalid type of id ${typeof id}`, 'error');\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n context.adapterSubs[alive] = context.adapterSubs[alive] || new Set();\n context.adapterSubs[alive].add(id);\n if (sandbox.verbose) {\n sandbox.log(`adapterSubscribe: ${a} - ${id}`, 'info');\n }\n adapter.sendTo(a, 'subscribe', id);\n }\n },\n adapterUnsubscribe: function (\n idOrObject: string | SubscriptionResult | (string | SubscriptionResult)[],\n ): boolean | boolean[] {\n // todo: BF - it could be an error\n return sandbox.unsubscribe(idOrObject);\n },\n unsubscribe: function (\n idOrObject: string | SubscriptionResult | (string | SubscriptionResult)[],\n ): boolean | boolean[] {\n if (idOrObject && Array.isArray(idOrObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < idOrObject.length; t++) {\n result.push(sandbox.unsubscribe(idOrObject[t]) as boolean);\n }\n return result;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`adapterUnsubscribe(id=${JSON.stringify(idOrObject)})`, 'info');\n }\n\n if (isObject(idOrObject)) {\n for (let i = context.subscriptions.length - 1; i >= 0; i--) {\n if (context.subscriptions[i] === idOrObject) {\n const sub = context.subscriptions[i];\n unsubscribePattern(script, sub.pattern.id as string);\n context.subscriptions.splice(i, 1);\n // Remove from O(1) dispatch structures\n _removeFromDispatchIndex(context, sub);\n sandbox.__engine.__subscriptions--;\n return true;\n }\n }\n return false;\n }\n let deleted = 0;\n for (let i = context.subscriptions.length - 1; i >= 0; i--) {\n if (context.subscriptions[i].name === name && context.subscriptions[i].pattern.id === idOrObject) {\n deleted++;\n const sub = context.subscriptions[i];\n unsubscribePattern(script, sub.pattern.id as string);\n context.subscriptions.splice(i, 1);\n // Remove from O(1) dispatch structures\n _removeFromDispatchIndex(context, sub);\n sandbox.__engine.__subscriptions--;\n }\n }\n return !!deleted;\n },\n on: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n callbackOrChangeTypeOrId: string | ChangeType | ((event?: EventObj) => void),\n value?: any,\n ):\n | SubscriptionResult\n | IobSchedule\n | string\n | null\n | undefined\n | (SubscriptionResult | IobSchedule | string | null | undefined)[] {\n return sandbox.subscribe(pattern, callbackOrChangeTypeOrId, value);\n },\n onEnumMembers: function (enumId: string, callback: (event?: EventObj) => void): void {\n if (enums.has(enumId)) {\n const subscriptions: Record = {};\n\n const init = (): void => {\n const obj: ioBroker.EnumObject = objects[enumId] as ioBroker.EnumObject;\n const common: ioBroker.EnumCommon = obj?.common ?? {};\n const members: string[] = common?.members ?? [];\n\n // Remove old subscriptions\n for (const [objId, subscription] of Object.entries(subscriptions)) {\n if (!members.includes(objId)) {\n sandbox.unsubscribe(subscription);\n delete subscriptions[objId];\n }\n }\n\n // Subscribe to all members of enum\n for (const objId of members) {\n // IO-6: `in` operator instead of Object.keys().includes() – O(1) instead of O(n)\n if (!(objId in subscriptions)) {\n if (objects?.[objId]?.type === 'state') {\n // Just subscribe to states\n subscriptions[objId] = sandbox.subscribe(objId, callback) as\n | string\n | SubscriptionResult; // TODO: more features\n }\n }\n }\n\n sandbox.verbose &&\n sandbox.log(\n `onEnumMembers(id=${enumId}, members=${JSON.stringify(Object.keys(subscriptions))})`,\n 'info',\n );\n };\n\n init();\n\n sandbox.subscribeObject(enumId, obj => obj && init());\n } else {\n sandbox.log(`onEnumMembers: enum with id \"${enumId}\" doesn't exists`, 'error');\n }\n },\n onFile: function (\n id: string,\n fileNamePattern: string | string[],\n withFileOrCallback:\n | boolean\n | ((id: string, fileName: string, size: number, file?: string | Buffer, mimeType?: string) => void),\n callback?: (\n id: string,\n fileName: string,\n size: number | null,\n file?: string | Buffer,\n mimeType?: string,\n ) => void,\n ): undefined | FileSubscriptionResult | (undefined | FileSubscriptionResult)[] {\n if (typeof withFileOrCallback === 'function') {\n callback = withFileOrCallback as (\n id: string,\n fileName: string,\n size: number | null,\n file?: string | Buffer,\n mimeType?: string,\n ) => void;\n withFileOrCallback = false;\n }\n\n if (!adapter.subscribeForeignFiles) {\n sandbox.log(\n 'onFile: your js-controller does not support yet onFile subscribes. Please update to js-controller@4.1.x or newer',\n 'warn',\n );\n return;\n }\n if (!id || !fileNamePattern) {\n sandbox.log(\n 'onFile: invalid parameters. Usage: onFile(\"vis.0\", \"main/*\", true, (id, fileName, size, file, mimeType) => {});',\n 'error',\n );\n return;\n }\n if (typeof callback !== 'function') {\n sandbox.offFile(id, fileNamePattern);\n return;\n }\n\n if (Array.isArray(fileNamePattern)) {\n return fileNamePattern.map(\n filePattern =>\n sandbox.onFile(id, filePattern, withFileOrCallback, callback) as\n | undefined\n | FileSubscriptionResult,\n );\n }\n\n sandbox.__engine.__subscriptionsFile += 1;\n\n sandbox.verbose &&\n sandbox.log(\n `onFile(id=${id}, fileNamePattern=${fileNamePattern}) - fileSubscriptions=${sandbox.__engine.__subscriptionsFile}`,\n 'info',\n );\n\n if (\n sandbox.__engine.__subscriptionsFile %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsFile} file subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n let idRegEx: RegExp | undefined;\n let fileRegEx: RegExp | undefined;\n if (id.includes('*')) {\n idRegEx = new RegExp(pattern2RegEx(id));\n }\n if (fileNamePattern.includes('*')) {\n fileRegEx = new RegExp(pattern2RegEx(fileNamePattern));\n }\n\n const subs: FileSubscriptionResult = {\n id,\n fileNamePattern,\n withFile: withFileOrCallback,\n idRegEx,\n fileRegEx,\n callback: (id: string, fileName: string, size: number | null, withFile: boolean): void => {\n try {\n sandbox.verbose &&\n sandbox.log(`onFile changed(id=${id}, fileName=${fileName}, size=${size})`, 'info');\n\n if (withFile && (size || 0) > 0) {\n adapter\n .readFileAsync(id, fileName)\n .then(data => {\n try {\n callback.call(sandbox, id, fileName, size, data.file, data.mimeType);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n })\n .catch(error => errorInCallback(error));\n } else {\n callback.call(sandbox, id, fileName, size);\n }\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n },\n name,\n };\n\n context.subscriptionsFile.push(subs);\n subscribeFile(script, id, fileNamePattern);\n return subs;\n },\n offFile: function (\n idOrObject: FileSubscriptionResult | string | (FileSubscriptionResult | string)[],\n fileNamePattern?: string | string[],\n ): boolean | boolean[] {\n if (!adapter.unsubscribeForeignFiles) {\n sandbox.log(\n 'offFile: your js-controller does not support yet file unsubscribes. Please update to js-controller@4.1.x or newer',\n 'warn',\n );\n return false;\n }\n\n sandbox.verbose &&\n sandbox.log(\n `offFile(idOrObject=${JSON.stringify(idOrObject)}, fileNamePattern=${JSON.stringify(fileNamePattern)}) - fileSubscriptions=${sandbox.__engine.__subscriptionsFile}`,\n 'info',\n );\n\n if (idOrObject && typeof idOrObject === 'object') {\n if (Array.isArray(idOrObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < idOrObject.length; t++) {\n result.push(sandbox.offFile(idOrObject[t]) as boolean);\n }\n return result;\n }\n for (let i = context.subscriptionsFile.length - 1; i >= 0; i--) {\n if (context.subscriptionsFile[i] === idOrObject) {\n unsubscribeFile(\n script,\n context.subscriptionsFile[i].id,\n context.subscriptionsFile[i].fileNamePattern,\n );\n\n sandbox.verbose &&\n sandbox.log(\n `offFile(type=object, fileNamePattern=${JSON.stringify(fileNamePattern)}, removing id=${context.subscriptionsFile[i].id})`,\n 'info',\n );\n\n context.subscriptionsFile.splice(i, 1);\n sandbox.__engine.__subscriptionsFile--;\n return true;\n }\n }\n return false;\n }\n\n if (fileNamePattern && Array.isArray(fileNamePattern)) {\n const result: boolean[] = [];\n for (let t = 0; t < fileNamePattern.length; t++) {\n result.push(sandbox.offFile(idOrObject, fileNamePattern[t]) as boolean);\n }\n return result;\n }\n\n let deleted = 0;\n for (let i = context.subscriptionsFile.length - 1; i >= 0; i--) {\n if (\n context.subscriptionsFile[i].id === idOrObject &&\n context.subscriptionsFile[i].fileNamePattern === fileNamePattern\n ) {\n deleted++;\n unsubscribeFile(\n script,\n context.subscriptionsFile[i].id,\n context.subscriptionsFile[i].fileNamePattern,\n );\n\n sandbox.verbose &&\n sandbox.log(\n `offFile(type=string, fileNamePattern=${fileNamePattern}, removing id=${context.subscriptionsFile[i].id})`,\n 'info',\n );\n\n context.subscriptionsFile.splice(i, 1);\n sandbox.__engine.__subscriptionsFile--;\n }\n }\n return !!deleted;\n },\n /** Registers a one-time subscription which automatically unsubscribes after the first invocation */\n once: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n callback?: (event?: EventObj) => void,\n ): string | SubscriptionResult | Promise {\n function _once(cb: (obj?: EventObj) => void): string | SubscriptionResult {\n // eslint-disable-next-line prefer-const\n let subscription: string | SubscriptionResult;\n const handler = (obj?: EventObj): void => {\n subscription && sandbox.unsubscribe(subscription);\n typeof cb === 'function' && cb(obj);\n };\n subscription = sandbox.subscribe(pattern, handler) as string | SubscriptionResult;\n return subscription;\n }\n\n if (typeof callback === 'function') {\n // Callback-style: once(\"id\", (obj) => { ... })\n return _once(callback);\n }\n\n // Promise-style: once(\"id\").then(obj => { ... })\n return new Promise(resolve => _once(resolve));\n },\n schedule: function (\n pattern: SchedulerRule | AstroRule | Date | string,\n callback: () => void,\n ): IobSchedule | string | null | undefined {\n if (typeof callback !== 'function') {\n sandbox.log(`schedule callback missing`, 'error');\n return null;\n }\n\n if (\n (typeof pattern === 'string' && pattern[0] === '{') ||\n (typeof pattern === 'object' && (pattern as SchedulerRule).period)\n ) {\n sandbox.verbose &&\n sandbox.log(\n `schedule(wizard=${typeof pattern === 'object' ? JSON.stringify(pattern) : pattern})`,\n 'info',\n );\n\n if (!context.scheduler) {\n sandbox.log(\n `Cannot schedule \"${typeof pattern === 'object' ? JSON.stringify(pattern) : pattern}\" because scheduler is not available`,\n 'error',\n );\n return null;\n }\n\n const schedule: string | null = context.scheduler.add(\n pattern as SchedulerRule | string,\n sandbox.scriptName,\n callback,\n );\n if (schedule) {\n script.wizards.push(schedule);\n sandbox.__engine.__schedules += 1;\n\n if (\n sandbox.__engine.__schedules %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n }\n\n return schedule;\n }\n\n const adapterConfig: JavaScriptAdapterConfig = adapter.config as JavaScriptAdapterConfig;\n\n if (typeof pattern === 'object' && (pattern as AstroRule).astro) {\n const astroPattern = pattern as AstroRule;\n const nowDate = new Date();\n\n if (\n adapterConfig.latitude === undefined ||\n adapterConfig.longitude === undefined ||\n adapterConfig.latitude === null ||\n adapterConfig.longitude === null\n ) {\n sandbox.log('Longitude or latitude does not set. Cannot use astro.', 'error');\n return null;\n }\n\n // ensure events are calculated independent of current time\n // TODO: use getAstroStartOfDay of adapter?\n const todayNoon = new Date(nowDate);\n todayNoon.setHours(12, 0, 0, 0);\n let ts = mods.suncalc.getTimes(todayNoon, adapterConfig.latitude, adapterConfig.longitude)[\n astroPattern.astro\n ];\n\n // event on the next day, correct or force recalculation at midnight\n if (todayNoon.getDate() !== ts.getDate()) {\n todayNoon.setDate(todayNoon.getDate() - 1);\n ts = mods.suncalc.getTimes(todayNoon, adapterConfig.latitude, adapterConfig.longitude)[\n astroPattern.astro\n ];\n }\n\n if (ts.getTime().toString() === 'NaN') {\n sandbox.log(\n `Cannot calculate \"${astroPattern.astro}\" for ${adapterConfig.latitude}, ${adapterConfig.longitude}`,\n 'warn',\n );\n ts = new Date(nowDate.getTime());\n\n if (\n astroPattern.astro === 'sunriseEnd' ||\n astroPattern.astro === 'goldenHourEnd' ||\n astroPattern.astro === 'sunset' ||\n astroPattern.astro === 'nightEnd' ||\n astroPattern.astro === 'nauticalDusk'\n ) {\n ts.setHours(23);\n ts.setMinutes(59);\n ts.setSeconds(59);\n } else {\n ts.setHours(23);\n ts.setMinutes(59);\n ts.setSeconds(58);\n }\n }\n\n if (ts && astroPattern.shift) {\n ts = new Date(ts.getTime() + astroPattern.shift * 60000);\n }\n\n if (!ts || ts < nowDate) {\n const date = new Date(nowDate);\n // Event doesn't occur today - try again tomorrow\n // Calculate time till 24:00 (local, NOT UTC) and set timeout\n date.setDate(date.getDate() + 1);\n date.setMinutes(0); // Sometimes timer fires at 23:59:59\n date.setHours(0);\n date.setSeconds(1);\n date.setMilliseconds(0);\n\n sandbox.__engine.__schedules += 1;\n\n if (sandbox.__engine.__schedules % adapterConfig.maxTriggersPerScript === 0) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n sandbox.verbose &&\n sandbox.log(\n `schedule(astro=${astroPattern.astro}, offset=${astroPattern.shift}) is tomorrow, waiting until ${date.toISOString()}`,\n 'info',\n );\n\n // Calculate new schedule in the next day\n sandbox.setTimeout(() => {\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n sandbox.schedule(astroPattern, callback);\n }, date.getTime() - Date.now());\n\n return;\n }\n\n sandbox.__engine.__schedules += 1;\n\n if (sandbox.__engine.__schedules % adapterConfig.maxTriggersPerScript === 0) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n sandbox.setTimeout(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n // Reschedule in 2 seconds\n sandbox.setTimeout(() => {\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n sandbox.schedule(astroPattern, callback);\n }, 2000);\n }, ts.getTime() - Date.now());\n\n sandbox.verbose &&\n sandbox.log(\n `schedule(astro=${astroPattern.astro}, offset=${astroPattern.shift}) is today, waiting until ${ts.toISOString()}`,\n 'info',\n );\n } else {\n // fix a problem with sunday and 7\n if (typeof pattern === 'string') {\n // this could be a CRON\n const parts = pattern.replace(/\\s+/g, ' ').split(' ');\n if (parts.length >= 5 && parseInt(parts[5], 10) >= 7) {\n parts[5] = '0';\n }\n pattern = parts.join(' ');\n }\n // created in VM the date object: pattern instanceof Date => false\n // so fix it\n if (typeof pattern === 'object' && (pattern as Date).getDate) {\n pattern = new Date(pattern as Date);\n }\n\n const schedule: IobSchedule = mods.nodeSchedule.scheduleJob(pattern, (): void => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n if (schedule) {\n sandbox.__engine.__schedules += 1;\n\n if (\n sandbox.__engine.__schedules %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n schedule._ioBroker = {\n type: 'cron',\n pattern: pattern as string | Date,\n scriptName: sandbox.scriptName,\n id: `cron_${Date.now()}_${Math.round(Math.random() * 100000)}`,\n };\n\n script.schedules.push(schedule);\n } else {\n sandbox.log(`schedule(cron=${JSON.stringify(pattern)}): cannot create schedule`, 'error');\n }\n\n if (sandbox.verbose) {\n sandbox.log(`schedule(cron=${JSON.stringify(pattern)})`, 'info');\n }\n\n return schedule;\n }\n },\n scheduleById: function (id: string, ack: boolean | (() => void) | undefined, callback?: () => void): void {\n let scheduleId: IobSchedule | string | null | undefined = null;\n let currentExp: string | null = null; // current cron expression\n\n if (typeof ack === 'function') {\n callback = ack;\n ack = undefined;\n }\n\n const rhms = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9]):([0-5]?[0-9])$/; // hh:mm:ss\n const rhm = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$/; // hh:mm\n\n const init = (time: string): void => {\n if (typeof time === 'string') {\n let h: number | undefined = undefined;\n let m: number | undefined = undefined;\n let s: number | undefined = undefined;\n\n let isValid = false;\n\n let result = time.match(rhms);\n if (result) {\n [, h, m, s] = result.map(v => parseInt(v));\n isValid = true;\n } else {\n result = time.match(rhm);\n if (result) {\n [, h, m] = result.map(v => parseInt(v));\n isValid = true;\n }\n }\n\n if (isValid) {\n const cronExp = `${s ?? '0'} ${m ?? '0'} ${h ?? '0'} * * *`;\n\n if (cronExp !== currentExp) {\n sandbox.verbose &&\n sandbox.log(\n `scheduleById(id=${id}): Init with expression ${cronExp} from ${time}`,\n 'info',\n );\n currentExp = cronExp;\n\n if (scheduleId) {\n sandbox.clearSchedule(scheduleId);\n scheduleId = null;\n }\n\n scheduleId = sandbox.schedule(cronExp, () => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n }\n } else {\n sandbox.log(\n `scheduleById(id=${id},time=${time}): cannot create schedule - invalid format (HH:MM:SS or H:M:S required)`,\n 'error',\n );\n }\n } else {\n sandbox.log(\n `scheduleById(id=${id}): cannot create schedule - invalid var type (no string)`,\n 'error',\n );\n }\n };\n\n sandbox.getState(id, (err, state) => {\n if (!err && state?.val) {\n if (sandbox.verbose) {\n sandbox.log(`scheduleById(id=${id}): Init with value ${state.val}`, 'info');\n }\n init(state.val.toString());\n }\n });\n\n const triggerDef: Pattern = { id, change: 'any' };\n if (ack !== undefined) {\n triggerDef.ack = ack;\n }\n\n sandbox.on(triggerDef, obj => {\n if (obj?.state?.val) {\n sandbox.verbose &&\n sandbox.log(`scheduleById(id=${id}): Update with value ${obj.state.val}`, 'info');\n init(obj.state.val.toString());\n }\n });\n },\n getAstroDate: function (pattern: AstroEvent, date?: Date | number, offsetMinutes?: number): Date | undefined {\n if (date === undefined) {\n date = new Date();\n }\n if (typeof date === 'number') {\n date = new Date(date);\n } else {\n date = new Date(date.getTime());\n }\n\n if (!consts.astroList.includes(pattern)) {\n const pos = consts.astroListLow.indexOf(pattern.toLowerCase());\n if (pos !== -1) {\n pattern = consts.astroList[pos];\n }\n }\n\n if (\n (!(adapter.config as JavaScriptAdapterConfig).latitude &&\n ((adapter.config as JavaScriptAdapterConfig).latitude as unknown as number) !== 0) ||\n (!(adapter.config as JavaScriptAdapterConfig).longitude &&\n ((adapter.config as JavaScriptAdapterConfig).longitude as unknown as number) !== 0)\n ) {\n sandbox.log('Longitude or latitude does not set. Cannot use astro.', 'error');\n return;\n }\n\n // ensure events are calculated independent of current time\n date.setHours(12, 0, 0, 0);\n let ts = mods.suncalc.getTimes(\n date,\n (adapter.config as JavaScriptAdapterConfig).latitude,\n (adapter.config as JavaScriptAdapterConfig).longitude,\n )[pattern];\n\n if (ts === undefined || ts.getTime().toString() === 'NaN') {\n sandbox.log(\n `Cannot calculate astro date \"${pattern}\" for ${(adapter.config as JavaScriptAdapterConfig).latitude}, ${(adapter.config as JavaScriptAdapterConfig).longitude}`,\n 'warn',\n );\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getAstroDate(pattern=${pattern}, date=${date.toString()}) => ${ts}`, 'info');\n }\n\n if (offsetMinutes !== undefined) {\n ts = new Date(ts.getTime() + offsetMinutes * 60000);\n }\n return ts;\n },\n isAstroDay: function (): boolean | undefined {\n const nowDate = new Date();\n const dayBegin = sandbox.getAstroDate('sunrise');\n const dayEnd = sandbox.getAstroDate('sunset');\n\n if (dayBegin === undefined || dayEnd === undefined) {\n return;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`isAstroDay() => ${nowDate >= dayBegin && nowDate <= dayEnd}`, 'info');\n }\n\n return nowDate >= dayBegin && nowDate <= dayEnd;\n },\n clearSchedule: function (schedule: IobSchedule | ScheduleName | string): boolean {\n if (context.scheduler?.get(schedule as string | ScheduleName)) {\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => wizard cleared', 'info');\n }\n const pos = script.wizards.indexOf(schedule as string);\n if (pos !== -1) {\n script.wizards.splice(pos, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n }\n context.scheduler.remove(schedule as string | ScheduleName);\n return true;\n }\n for (let i = 0; i < script.schedules.length; i++) {\n // Support both full IobSchedule objects (with nested _ioBroker) and\n // bare _ioBroker metadata objects as returned by getSchedules()\n const ioBrokerMeta =\n schedule && typeof schedule === 'object'\n ? (schedule as IobSchedule)._ioBroker || (schedule as { type?: string; id?: string })\n : undefined;\n if (ioBrokerMeta?.type === 'cron') {\n if (script.schedules[i]._ioBroker.id === ioBrokerMeta.id) {\n if (!mods.nodeSchedule.cancelJob(script.schedules[i])) {\n sandbox.log('Error by canceling scheduled job', 'error');\n }\n script.schedules.splice(i, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => cleared', 'info');\n }\n return true;\n }\n } else if (script.schedules[i] === schedule) {\n if (!mods.nodeSchedule.cancelJob(script.schedules[i])) {\n sandbox.log('Error by canceling scheduled job', 'error');\n }\n script.schedules.splice(i, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => cleared', 'info');\n }\n return true;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => invalid handler', 'warn');\n }\n return false;\n },\n getSchedules: function (allScripts?: boolean): ScheduleName[] {\n const schedules = context.scheduler?.getList() || [];\n if (allScripts) {\n Object.keys(context.scripts).forEach(\n name =>\n context.scripts[name].schedules &&\n // IO-8: Spread instead of JSON.parse(JSON.stringify()) – _ioBroker has only primitive fields\n context.scripts[name].schedules.forEach(s =>\n schedules.push({ ...s._ioBroker } as unknown as ScheduleName),\n ),\n );\n } else {\n script.schedules &&\n // IO-8: Spread instead of JSON.parse(JSON.stringify())\n script.schedules.forEach(s => schedules.push({ ...s._ioBroker } as unknown as ScheduleName));\n }\n return schedules;\n },\n setState: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | 'true' | 'false' | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return setStateHelper(sandbox, false, false, id, state, isAck, callback);\n },\n setStateChanged: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return setStateHelper(sandbox, false, true, id, state, isAck, callback);\n },\n setStateDelayed: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | number | undefined,\n delay?: number | boolean,\n clearRunning?: boolean | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): number | null {\n // find arguments\n if (typeof isAck !== 'boolean') {\n callback = clearRunning as (err?: Error | null) => void;\n clearRunning = delay as boolean;\n delay = isAck as number;\n isAck = undefined;\n }\n if (typeof delay !== 'number') {\n callback = clearRunning as (err?: Error | null) => void;\n clearRunning = delay as boolean;\n delay = 0;\n }\n if (typeof clearRunning !== 'boolean') {\n callback = clearRunning;\n clearRunning = true;\n }\n\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n sandbox.verbose &&\n sandbox.log(\n `setStateDelayed(id=${id}, state=${JSON.stringify(state)}, isAck=${isAck}, delay=${delay}, clearRunning=${clearRunning})`,\n 'info',\n );\n\n if (clearRunning) {\n if (timers[id]) {\n sandbox.verbose &&\n sandbox.log(`setStateDelayed: clear ${timers[id].length} running timers`, 'info');\n\n // collect affected scriptNames before deleting\n const affectedScripts = new Set(timers[id].map(e => e.scriptName));\n for (let i = 0; i < timers[id].length; i++) {\n clearTimeout(timers[id][i].t);\n }\n delete timers[id];\n // update timersByScript reverse-index for all affected scripts\n for (const scriptName of affectedScripts) {\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log('setStateDelayed: no running timers', 'info');\n }\n }\n }\n // If no delay => starts immediately\n if (!delay) {\n sandbox.setState(id, state, isAck, callback);\n return null;\n }\n // If delay\n timers[id] = timers[id] || [];\n\n // calculate timerId\n context.timerId++;\n if (context.timerId > 0xfffffffe) {\n context.timerId = 0;\n }\n\n // Start timeout\n const timer = setTimeout(\n function (_timerId, _id, _state, _isAck) {\n sandbox.setState(_id, _state, _isAck, callback);\n // delete timer handler\n if (timers[_id]) {\n // optimisation\n if (timers[_id].length === 1) {\n const scriptName = timers[_id][0].scriptName;\n delete timers[_id];\n // update timersByScript reverse-index\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(_id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n } else {\n for (let t = 0; t < timers[_id].length; t++) {\n if (timers[_id][t].id === _timerId) {\n const scriptName = timers[_id][t].scriptName;\n timers[_id].splice(t, 1);\n if (!timers[_id].length) {\n delete timers[_id];\n // update timersByScript reverse-index\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(_id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n break;\n }\n }\n }\n }\n },\n delay,\n context.timerId,\n id,\n state,\n isAck,\n );\n\n // add timer handler\n timers[id].push({\n t: timer,\n id: context.timerId,\n ts: Date.now(),\n delay: delay,\n val:\n isObject(state) && (state as ioBroker.SettableState).val !== undefined\n ? ((state as ioBroker.SettableState).val as ioBroker.StateValue)\n : (state as ioBroker.StateValue),\n ack:\n isObject(state) &&\n (state as ioBroker.SettableState).val !== undefined &&\n (state as ioBroker.SettableState).ack !== undefined\n ? (state as ioBroker.SettableState).ack\n : isAck,\n scriptName: name,\n });\n // Keep reverse-index in sync for O(1) cleanup in stopScript\n if (!context.timersByScript.has(name)) {\n context.timersByScript.set(name, new Set());\n }\n context.timersByScript.get(name)!.add(id);\n\n return context.timerId;\n },\n clearStateDelayed: function (id: string, timerId: number): boolean {\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`clearStateDelayed(id=${id}, timerId=${timerId})`, 'info');\n }\n\n if (timers[id]) {\n // collect scriptNames of entries that will be removed\n const removedScripts = new Set();\n for (let i = timers[id].length - 1; i >= 0; i--) {\n if (timerId === undefined || timers[id][i].id === timerId) {\n const clearedTimerId = timers[id][i].id;\n removedScripts.add(timers[id][i].scriptName);\n clearTimeout(timers[id][i].t);\n if (timerId !== undefined) {\n timers[id].splice(i, 1);\n }\n if (sandbox.verbose) {\n sandbox.log(`clearStateDelayed: clear timer ${clearedTimerId}`, 'info');\n }\n }\n }\n if (timerId === undefined) {\n delete timers[id];\n } else {\n if (!timers[id].length) {\n delete timers[id];\n }\n }\n // IO-7: keep the timersByScript reverse-index in sync. For every script whose\n // timer(s) we just removed, drop `id` from its set – unless that script still has\n // another timer for this state (other scripts' timers may keep timers[id] alive).\n if (removedScripts.size) {\n const remaining = timers[id]; // undefined if the whole entry was deleted\n for (const scriptName of removedScripts) {\n const stateIds = context.timersByScript.get(scriptName);\n if (!stateIds) {\n continue;\n }\n if (remaining?.some(e => e.scriptName === scriptName)) {\n continue;\n }\n stateIds.delete(id);\n if (!stateIds.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n return true;\n }\n return false;\n },\n getStateDelayed: function (\n id: string | number,\n ):\n | null\n | { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }\n | { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n | Record<\n string,\n { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n > {\n const now = Date.now();\n if (id) {\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n // If timerId given\n if (typeof id === 'number') {\n for (const _id_ in timers) {\n if (Object.prototype.hasOwnProperty.call(timers, _id_)) {\n for (let ttt = 0; ttt < timers[_id_].length; ttt++) {\n if (timers[_id_][ttt].id === id) {\n return {\n timerId: id,\n left: timers[_id_][ttt].delay - (now - timers[_id_][ttt].ts),\n delay: timers[_id_][ttt].delay,\n val: timers[_id_][ttt].val,\n ack: timers[_id_][ttt].ack,\n };\n }\n }\n }\n }\n return null;\n }\n\n const result: {\n timerId: number;\n left: number;\n delay: number;\n val: ioBroker.StateValue;\n ack?: boolean;\n }[] = [];\n if (Object.prototype.hasOwnProperty.call(timers, id) && timers[id] && timers[id].length) {\n for (let tt = 0; tt < timers[id].length; tt++) {\n result.push({\n timerId: timers[id][tt].id,\n left: timers[id][tt].delay - (now - timers[id][tt].ts),\n delay: timers[id][tt].delay,\n val: timers[id][tt].val,\n ack: timers[id][tt].ack,\n });\n }\n }\n return result;\n }\n const result: Record<\n string,\n { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n > = {};\n for (const _id in timers) {\n if (Object.prototype.hasOwnProperty.call(timers, _id) && timers[_id] && timers[_id].length) {\n result[_id] = [];\n for (let t = 0; t < timers[_id].length; t++) {\n result[_id].push({\n timerId: timers[_id][t].id,\n left: timers[_id][t].delay - (now - timers[_id][t].ts),\n delay: timers[_id][t].delay,\n val: timers[_id][t].val,\n ack: timers[_id][t].ack,\n });\n }\n }\n }\n return result;\n },\n getStateAsync: async function (id: string): Promise {\n let state: ioBroker.State | null | undefined;\n if (id.includes('.')) {\n state = await adapter.getForeignStateAsync(id);\n } else {\n state = await adapter.getStateAsync(id);\n }\n return context.convertBackStringifiedValues(id, state);\n },\n setStateAsync: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n return new Promise((resolve, reject) =>\n setStateHelper(sandbox, false, false, id, state, isAck, err => (err ? reject(err) : resolve())),\n );\n },\n setStateChangedAsync: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n return new Promise((resolve, reject) =>\n setStateHelper(sandbox, false, true, id, state, isAck, err => (err ? reject(err) : resolve())),\n );\n },\n getState: function (\n id: string,\n callback?: (err: Error | null | undefined, state?: ioBroker.State | null) => void,\n ): undefined | void | (ioBroker.State & { notExist?: true }) | null {\n if (typeof id !== 'string') {\n sandbox.log(`getState has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return undefined;\n }\n\n if (typeof callback === 'function') {\n if (!id.includes('.')) {\n adapter.getState(id, (err, state) =>\n callback(err, context.convertBackStringifiedValues(id, state)),\n );\n } else {\n void adapter.getForeignState(id, (err, state) =>\n callback(err, context.convertBackStringifiedValues(id, state)),\n );\n }\n } else {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n sandbox.log(\n 'The \"getState\" method cannot be used synchronously, because the adapter setting \"Do not subscribe to all states on start\" is enabled.',\n 'error',\n );\n sandbox.log(\n `Please disable that setting or use \"getState\" with a callback, e.g.: getState('${id}', (err, state) => { ... });`,\n 'error',\n );\n } else {\n if (states[id]) {\n sandbox.verbose &&\n sandbox.log(\n `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[id])}`,\n 'info',\n );\n if (context.interimStateValues[id] !== undefined) {\n return context.convertBackStringifiedValues(id, context.interimStateValues[id]);\n }\n return context.convertBackStringifiedValues(id, states[id]);\n } else if (states[`${adapter.namespace}.${id}`]) {\n sandbox.verbose &&\n sandbox.log(\n `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[`${adapter.namespace}.${id}`])}`,\n 'info',\n );\n if (context.interimStateValues[`${adapter.namespace}.${id}`] !== undefined) {\n return context.convertBackStringifiedValues(\n id,\n context.interimStateValues[`${adapter.namespace}.${id}`],\n );\n }\n return context.convertBackStringifiedValues(id, states[`${adapter.namespace}.${id}`]);\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => not found`, 'info');\n }\n\n context.logWithLineInfo(\n `getState \"${id}\" not found (3)${states[id] !== undefined ? ` states[id]=${JSON.stringify(states[id])}` : ''}`,\n ); ///xxx\n return { val: null, notExist: true } as ioBroker.State & { notExist?: true };\n }\n }\n },\n existsState: function (\n id: string,\n callback?: (err: Error | null | undefined, stateExists?: boolean) => void,\n ): void | boolean {\n if (typeof id !== 'string') {\n sandbox.log(`existsState has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return false;\n }\n\n if (typeof callback === 'function') {\n void adapter.getForeignObject(id, (err, obj) => {\n if (!obj || obj.type !== 'state') {\n callback(err, false);\n return;\n }\n\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n void adapter.getForeignState(id, (err, state) => {\n callback(err, !!state);\n });\n } else {\n callback(err, !!states[id]);\n }\n });\n } else {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n sandbox.log(\n 'The \"existsState\" method cannot be used synchronously, because the adapter setting \"Do not subscribe to all states on start\" is enabled.',\n 'error',\n );\n sandbox.log(\n `Please disable that setting or use \"existsState\" with a callback, e.g.: existsState('${id}', (err, stateExists) => { ... });`,\n 'error',\n );\n } else {\n return !!states[id];\n }\n }\n },\n existsObject: function (\n id: string,\n callback?: (err: Error | null | undefined, objectExists?: boolean) => void,\n ): void | boolean {\n if (typeof id !== 'string') {\n sandbox.log(\n `existsObject has been called with id of type \"${typeof id}\" but expects a string`,\n 'error',\n );\n return false;\n }\n\n if (typeof callback === 'function') {\n void adapter.getForeignObject(id, (err, obj) => callback(err, !!obj));\n } else {\n return !!objects[id];\n }\n },\n getIdByName: function (name: string, alwaysArray?: boolean): string | string[] | null {\n sandbox.verbose &&\n sandbox.log(\n `getIdByName(name=${name}, alwaysArray=${alwaysArray}) => ${JSON.stringify(context.names[name])}`,\n 'info',\n );\n if (Object.prototype.hasOwnProperty.call(context.names, name)) {\n if (alwaysArray) {\n return !Array.isArray(context.names[name]) ? [context.names[name]] : context.names[name];\n }\n return context.names[name];\n }\n if (alwaysArray) {\n return [];\n }\n return null;\n },\n getObject: function (\n id: string,\n enumName: null | string | ((err: Error | null | undefined, obj?: ioBroker.Object | null) => void),\n cb?: (err: Error | null | undefined, obj?: ioBroker.Object | null) => void,\n ): void | ioBroker.Object | null {\n if (typeof id !== 'string') {\n sandbox.log(`getObject has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return null;\n }\n\n if (typeof enumName === 'function') {\n cb = enumName;\n enumName = null;\n }\n // with callback\n if (typeof cb === 'function') {\n void adapter.getForeignObject(id, (err, obj) => {\n if (obj) {\n objects[id] = obj;\n } else if (objects[id]) {\n delete objects[id];\n }\n let result: ioBroker.Object | null | undefined;\n try {\n result = objects[id] ? structuredClone(objects[id]) : undefined;\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n return cb(null, null);\n }\n sandbox.verbose &&\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n cb(err, result);\n });\n } else {\n if (!objects[id]) {\n sandbox.verbose &&\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => does not exist`, 'info');\n sandbox.log(`Object \"${id}\" does not exist`, 'warn');\n return null;\n }\n if (enumName) {\n const e = eventObj.getObjectEnumsSync(context, id);\n const obj = structuredClone(objects[id]) as ioBroker.Object & {\n enumIds: string[];\n enumNames: string[];\n };\n obj.enumIds = structuredClone(e.enumIds);\n obj.enumNames = structuredClone(e.enumNames);\n if (typeof enumName === 'string') {\n const r = new RegExp(`^enum\\\\.${enumName}\\\\.`);\n for (let i = obj.enumIds.length - 1; i >= 0; i--) {\n if (!r.test(obj.enumIds[i])) {\n obj.enumIds.splice(i, 1);\n obj.enumNames.splice(i, 1);\n }\n }\n }\n sandbox.verbose &&\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(obj)}`, 'info');\n\n return obj;\n }\n let result: ioBroker.Object | null | undefined;\n try {\n result = structuredClone(objects[id]);\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n return null;\n }\n sandbox.verbose &&\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n return result;\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n setObject: function (\n _id: string,\n _obj: ioBroker.Object,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n sandbox.log('Function \"setObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"setObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n extendObject: function (\n _id: string,\n _obj: Partial,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n sandbox.log('Function \"extendObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"extendObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n deleteObject: function (\n _id: string,\n _isRecursive?: boolean | ioBroker.ErrorCallback,\n callback?: ioBroker.ErrorCallback,\n ): void {\n if (typeof _isRecursive === 'function') {\n callback = _isRecursive;\n }\n sandbox.log('Function \"deleteObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"deleteObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n getEnums: function (enumName?: string): { id: string; members: string[]; name: ioBroker.StringOrTranslated }[] {\n const result: { id: string; members: string[]; name: ioBroker.StringOrTranslated }[] = [];\n const r = enumName ? new RegExp(`^enum\\\\.${enumName}\\\\.`) : false;\n for (const enumId of enums) {\n if (!r || r.test(enumId)) {\n const common: ioBroker.EnumCommon =\n (objects[enumId] as ioBroker.EnumObject).common || ({} as ioBroker.EnumCommon);\n result.push({\n id: enumId,\n members: common.members || [],\n name: common.name || '',\n });\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`getEnums(enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n }\n return structuredClone(result);\n },\n createAlias: function (\n name: string,\n alias: string | CommonAlias,\n forceCreation: boolean | Partial | ((err: Error | null) => void) | undefined,\n common?: Partial | Record | ((err: Error | null) => void),\n native?: Record | ((err: Error | null) => void),\n callback?: (err: Error | null) => void,\n ) {\n if (typeof native === 'function') {\n callback = native as (err: Error | null) => void;\n native = {};\n }\n if (typeof common === 'function') {\n callback = common as (err: Error | null) => void;\n common = undefined;\n }\n if (typeof forceCreation === 'function') {\n callback = forceCreation as (err: Error | null) => void;\n forceCreation = undefined;\n }\n if (isObject(forceCreation)) {\n native = common;\n common = forceCreation as Partial;\n forceCreation = undefined;\n }\n\n if (typeof name !== 'string') {\n const err = `Wrong type of name \"${typeof name}\". Expected \"string\".`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name) {\n const err = 'Empty ID is not allowed.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name.startsWith('alias.0.')) {\n name = `alias.0.${name}`;\n }\n\n const _common: Partial = (common as Partial) || {};\n if (isObject(_common.alias)) {\n // alias already in common, use this\n } else if (\n isObject(alias) &&\n (typeof (alias as CommonAlias).id === 'string' || isObject((alias as CommonAlias).id))\n ) {\n _common.alias = alias as CommonAlias;\n } else if (typeof alias === 'string') {\n _common.alias = { id: alias };\n } else {\n const err = 'Source ID needs to be provided as string or object with id property.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n let aliasSourceId = '';\n if (_common.alias) {\n aliasSourceId = isObject(_common.alias.id)\n ? (_common.alias.id as { read: string; write: string }).read\n : (_common.alias.id as string);\n if (!objects[aliasSourceId] && objects[`${adapter.namespace}.${aliasSourceId}`]) {\n aliasSourceId = `${adapter.namespace}.${aliasSourceId}`;\n if (isObject(_common.alias.id)) {\n (_common.alias.id as { read: string; write: string }).read = aliasSourceId;\n } else {\n _common.alias.id = aliasSourceId;\n }\n }\n if (\n isObject(_common.alias.id) &&\n (_common.alias.id as { read: string; write: string }).write &&\n !objects[(_common.alias.id as { read: string; write: string }).write] &&\n objects[`${adapter.namespace}.${(_common.alias.id as { read: string; write: string }).write}`]\n ) {\n (_common.alias.id as { read: string; write: string }).write =\n `${adapter.namespace}.${(_common.alias.id as { read: string; write: string }).write}`;\n }\n }\n const obj = objects[aliasSourceId];\n if (!obj) {\n const err = `Alias source object \"${aliasSourceId}\" does not exist.`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (obj.type !== 'state') {\n const err = `Alias source object \"${aliasSourceId}\" must be a state object.`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (_common.name === undefined) {\n _common.name = obj.common.name || name;\n }\n if (_common.type === undefined && obj.common.type !== undefined) {\n _common.type = obj.common.type;\n }\n if (_common.role === undefined && obj.common.role !== undefined) {\n _common.role = obj.common.role;\n }\n if (_common.min === undefined && obj.common.min !== undefined) {\n _common.min = obj.common.min;\n }\n if (_common.max === undefined && obj.common.max !== undefined) {\n _common.max = obj.common.max;\n }\n if (_common.step === undefined && obj.common.step !== undefined) {\n _common.step = obj.common.step;\n }\n if (_common.unit === undefined && obj.common.unit !== undefined) {\n _common.unit = obj.common.unit;\n }\n if (_common.desc === undefined && obj.common.desc !== undefined) {\n _common.desc = obj.common.desc;\n }\n\n return sandbox.createState(\n name,\n undefined,\n forceCreation as boolean,\n _common,\n native,\n callback as (err?: Error | null) => void,\n );\n },\n createState: async function (\n name: string,\n initValue: undefined | ioBroker.StateValue | ioBroker.State,\n forceCreation:\n | boolean\n | undefined\n | Record\n | Partial\n | ((err: Error | null) => void),\n common?: Partial | ((err: Error | null) => void),\n native?: Record | ((err: Error | null) => void),\n callback?: (error: Error | null | undefined, id?: string) => void,\n ) {\n if (typeof native === 'function') {\n callback = native as (err?: Error | null) => void;\n native = {};\n }\n if (typeof common === 'function') {\n callback = common as (err?: Error | null) => void;\n common = undefined;\n }\n if (typeof initValue === 'function') {\n callback = initValue as (err?: Error | null) => void;\n initValue = undefined;\n }\n if (typeof forceCreation === 'function') {\n callback = forceCreation as (err?: Error | null) => void;\n forceCreation = undefined;\n }\n if (isObject(initValue)) {\n common = initValue as Partial;\n native = forceCreation as Record;\n forceCreation = undefined;\n initValue = undefined;\n }\n if (isObject(forceCreation)) {\n native = common as Record;\n common = forceCreation as Partial;\n forceCreation = undefined;\n }\n\n if (typeof name !== 'string') {\n const err = `Wrong type of name \"${typeof name}\". Expected \"string\".`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name) {\n const err = 'Empty ID is not allowed.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n const isAlias = name.startsWith('alias.0.');\n\n const _common: ioBroker.StateCommon = (common || {}) as ioBroker.StateCommon;\n _common.name = _common.name || name;\n _common.role = _common.role || 'state';\n _common.type = _common.type || 'mixed';\n if (!isAlias && initValue === undefined) {\n initValue = _common.def;\n }\n\n native = native || {};\n\n // Check min, max and def values for number\n if (_common.type !== undefined && _common.type === 'number') {\n let min = 0;\n let max = 0;\n let def = 0;\n let err: string | undefined;\n if (_common.min !== undefined) {\n min = _common.min;\n if (typeof min !== 'number') {\n min = parseFloat(min);\n if (isNaN(min)) {\n err = `Wrong type of ${name}.common.min`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.min = min;\n }\n }\n if (_common.max !== undefined) {\n max = _common.max;\n if (typeof max !== 'number') {\n max = parseFloat(max);\n if (isNaN(max)) {\n err = `Wrong type of ${name}.common.max`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.max = max;\n }\n }\n\n if (_common.def !== undefined) {\n if (isAlias) {\n delete _common.def;\n } else {\n def = _common.def;\n if (typeof def !== 'number') {\n def = parseFloat(def);\n if (isNaN(def)) {\n err = `Wrong type of ${name}.common.def`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.def = def;\n }\n }\n }\n\n if (_common.min !== undefined && _common.max !== undefined && min > max) {\n _common.max = min;\n _common.min = max;\n }\n if (_common.def !== undefined && _common.min !== undefined && def < min) {\n _common.def = min;\n }\n if (_common.def !== undefined && _common.max !== undefined && def > max) {\n _common.def = max;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `createState(name=${name}, initValue=${JSON.stringify(initValue)}, forceCreation=${JSON.stringify(forceCreation)}, common=${JSON.stringify(common)}, native=${JSON.stringify(native)}, isAlias=${isAlias})`,\n 'debug',\n );\n }\n\n let id = `${adapter.namespace}.${name}`;\n if (name.match(/^javascript\\.\\d+\\./) || name.startsWith('0_userdata.0.') || isAlias) {\n id = name;\n }\n if (id.match(/^javascript\\.\\d+\\.scriptEnabled/)) {\n sandbox.log(\n `Own states (${id}) should not be created in javascript.X.scriptEnabled.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n } else if (id.match(/^javascript\\.\\d+\\.scriptProblem/)) {\n sandbox.log(\n `Own states (${id}) should not be created in javascript.X.scriptProblem.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n }\n\n // User can create aliases by two ways:\n // - id is starting with \"alias.0.\" and common.alias.id is set, so the state defined in common.alias.id will be created automatically if not exists\n // - id is not starting with \"alias.0.\", but common.alias is set, so the state defined in common.alias will be created automatically if not exists\n if (!isAlias && _common.alias) {\n // check and create if not exists the alias\n let alias: CommonAlias;\n if (typeof _common.alias === 'string') {\n alias = {\n id: _common.alias,\n };\n } else if (typeof _common.alias === 'boolean') {\n const parts = id.split('.');\n parts[0] = 'alias';\n parts[1] = '0';\n\n alias = {\n id: parts.join('.'),\n };\n } else {\n alias = _common.alias;\n }\n delete _common.alias;\n\n if (!(alias.id as string).startsWith('alias.0.')) {\n alias.id = `alias.0.${alias.id as string}`;\n }\n\n let aObj: ioBroker.StateObject | null | undefined;\n try {\n aObj = (await adapter.getForeignObjectAsync(alias.id as string)) as\n | ioBroker.StateObject\n | null\n | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n const _obj: ioBroker.StateObject = {\n _id: alias.id as string,\n type: 'state',\n common: {\n name: `Alias to ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n alias: {\n id,\n read: alias.read,\n write: alias.write,\n },\n },\n native: {},\n };\n\n await adapter.setForeignObjectAsync(alias.id as string, _obj);\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${alias.id as string}\": ${err as Error}`, 'error');\n }\n }\n } else if (isAlias && _common.alias) {\n if (typeof _common.alias === 'string') {\n _common.alias = {\n id: _common.alias,\n };\n }\n const readId = typeof _common.alias.id === 'string' ? _common.alias.id : _common.alias.id.read;\n let writeId: string | undefined =\n typeof _common.alias.id === 'string' ? _common.alias.id : _common.alias.id.write;\n if (writeId === readId) {\n writeId = undefined;\n }\n // try to create the linked states\n let aObj: ioBroker.StateObject | null | undefined;\n try {\n aObj = (await adapter.getForeignObjectAsync(readId)) as ioBroker.StateObject | null | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n await adapter.setForeignObjectAsync(readId, {\n type: 'state',\n common: {\n name: `State for ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n },\n native: {},\n });\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${readId}\": ${err as Error}`, 'error');\n }\n }\n if (writeId && _common.write !== false) {\n try {\n aObj = (await adapter.getForeignObjectAsync(writeId)) as\n | ioBroker.StateObject\n | null\n | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n await adapter.setForeignObjectAsync(writeId, {\n type: 'state',\n common: {\n name: `Write state for ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n },\n native: {},\n });\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${writeId}\": ${err as Error}`, 'error');\n }\n }\n }\n }\n\n let obj: ioBroker.Object | null | undefined;\n try {\n obj = await adapter.getForeignObjectAsync(id);\n } catch {\n // ignore\n }\n\n if (\n obj?._id &&\n validIdForAutomaticFolderCreation(obj._id) &&\n obj.type === 'folder' &&\n obj.native &&\n obj.native.autocreated === 'by automatic ensure logic'\n ) {\n // ignore a default created object because we now have a better defined one\n obj = null;\n }\n\n if (!obj || forceCreation) {\n // create new one\n const newObj: ioBroker.StateObject = {\n _id: id,\n common: _common,\n native,\n type: 'state',\n };\n try {\n await adapter.setForeignObjectAsync(id, newObj);\n } catch (err: unknown) {\n sandbox.log(`Cannot set object \"${id}\": ${err as Error}`, 'warn');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err as Error);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n // Update meta objects\n context.updateObjectContext(id, newObj);\n\n if (!isAlias && initValue !== undefined) {\n if (isObject(initValue) && (initValue as ioBroker.State).ack !== undefined) {\n setStateHelper(sandbox, true, false, id, initValue, callback);\n } else {\n setStateHelper(sandbox, true, false, id, initValue, true, callback);\n }\n } else if (!isAlias && !forceCreation) {\n setStateHelper(sandbox, true, false, id, null, callback);\n } else if (isAlias) {\n try {\n const state = await adapter.getForeignStateAsync(id);\n if (state) {\n states[id] = state;\n }\n } catch {\n // ignore\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n } else if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n await ensureObjectStructure(id);\n } else {\n // state yet exists\n if (\n !(adapter.config as JavaScriptAdapterConfig).subscribe &&\n !states[id] &&\n states[`${adapter.namespace}.${id}`] === undefined\n ) {\n states[id] = {\n val: null,\n ack: true,\n lc: Date.now(),\n ts: Date.now(),\n q: 0,\n from: `system.adapter.${adapter.namespace}`,\n };\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n\n await ensureObjectStructure(id);\n }\n },\n deleteState: function (id: string, callback?: (err: Error | null | undefined, found?: boolean) => void): void {\n // todo: check rights\n // todo: also remove from \"names\"\n\n if (sandbox.verbose) {\n sandbox.log(`deleteState(id=${id})`, 'debug');\n }\n\n let found = false;\n if ((id.startsWith('0_userdata.0.') || id.startsWith(adapter.namespace)) && objects[id]) {\n found = true;\n delete objects[id];\n if (states[id]) {\n delete states[id];\n }\n\n adapter.delForeignObject(id, function (err) {\n err && sandbox.log(`Object for state \"${id}\" does not exist: ${err}`, 'warn');\n\n adapter.delForeignState(id, function (err) {\n err && sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n });\n } else if (objects[`${adapter.namespace}.${id}`]) {\n delete objects[`${adapter.namespace}.${id}`];\n found = true;\n if (states[`${adapter.namespace}.${id}`]) {\n delete states[`${adapter.namespace}.${id}`];\n }\n\n adapter.delObject(id, function (err) {\n err && sandbox.log(`Object for state \"${id}\" does not exist: ${err}`, 'warn');\n\n adapter.delState(id, function (err) {\n err && sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n });\n } else {\n const err = 'Not found';\n sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err), found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n }\n },\n sendTo: function (\n _adapter: string,\n cmd: string,\n msg?: any,\n options?: Record | ((result: any, options: Record, _adapter: string) => void),\n callback?: (result: any, options: Record, _adapter: string) => void,\n ): void {\n const defaultTimeout = 20000;\n\n if (typeof options === 'function') {\n callback = options as (result: any, options: Record, _adapter: string) => void;\n options = { timeout: defaultTimeout };\n }\n\n let timeout: NodeJS.Timeout | null = null;\n if (typeof callback === 'function') {\n const timeoutDuration = parseInt(options?.timeout, 10) || defaultTimeout;\n\n timeout = setTimeout(() => {\n timeout = null;\n\n if (sandbox.verbose) {\n sandbox.log(`sendTo => timeout: ${timeoutDuration}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, { error: 'timeout' }, options as Record, _adapter);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutDuration);\n }\n\n let cbFunc: undefined | ((result: any) => void);\n if (timeout) {\n cbFunc = function (result: any): void {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n if (sandbox.verbose && result) {\n sandbox.log(`sendTo => ${JSON.stringify(result)}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, result, options as Record, _adapter);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n };\n }\n\n // If specific instance\n if (_adapter.match(/\\.[0-9]+$/)) {\n sandbox.verbose &&\n sandbox.log(\n `sendTo(instance=${_adapter}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'})`,\n 'info',\n );\n\n adapter.sendTo(_adapter, cmd, msg, cbFunc, options);\n } else {\n // IO-9: Cache sendTo broadcast instance list – avoid repeated getObjectView DB calls\n const cached = context.sendToInstanceCache.get(_adapter);\n if (cached) {\n cached.forEach(instance => {\n sandbox.verbose &&\n sandbox.log(\n `sendTo(instance=${instance}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'}) [cached]`,\n 'info',\n );\n adapter.sendTo(instance, cmd, msg, cbFunc, options);\n });\n } else {\n // Send it to all instances\n context.adapter.getObjectView(\n 'system',\n 'instance',\n { startkey: `system.adapter.${_adapter}.`, endkey: `system.adapter.${_adapter}.\\u9999` },\n options,\n (err, res) => {\n if (err || !res) {\n sandbox.log(`sendTo failed: ${err?.message}`, 'error');\n return;\n }\n\n const instances = res.rows.map(item => item.id.substring('system.adapter.'.length));\n // Store in cache for subsequent calls (invalidated on system.adapter.* object change).\n // LRU eviction: keep the map bounded to avoid unbounded memory growth.\n if (context.sendToInstanceCache.size >= 200) {\n const firstKey = context.sendToInstanceCache.keys().next().value;\n if (firstKey !== undefined) {\n context.sendToInstanceCache.delete(firstKey);\n }\n }\n context.sendToInstanceCache.set(_adapter, instances);\n\n instances.forEach(instance => {\n sandbox.verbose &&\n sandbox.log(\n `sendTo(instance=${instance}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'})`,\n 'info',\n );\n adapter.sendTo(instance, cmd, msg, cbFunc, options);\n });\n },\n );\n }\n }\n },\n sendto: function (\n _adapter: string,\n cmd: string,\n msg: any,\n callback?: (result: any, options: Record, _adapter: string) => void,\n ): void {\n return sandbox.sendTo(_adapter, cmd, msg, callback);\n },\n sendToAsync: function (_adapter: string, cmd: string, msg?: any, options?: Record): Promise {\n return new Promise((resolve, reject) => {\n sandbox.sendTo(_adapter, cmd, msg, options, res => {\n if (!res || res.error) {\n reject(res ? new Error(res.error) : new Error('Unknown error'));\n } else {\n resolve(res);\n }\n });\n });\n },\n sendToHost: function (host: string, cmd: string, msg?: any, callback?: (result: any) => void): void {\n if (!(adapter.config as JavaScriptAdapterConfig).enableSendToHost) {\n const error =\n 'sendToHost is not available. Please enable \"Enable SendToHost\" option in instance settings';\n sandbox.log(error, 'error');\n\n if (typeof callback === 'function') {\n // leave it as a normal function and not as a lambda, to hide the \"this\" object\n setImmediate(function () {\n callback(error);\n });\n }\n } else {\n sandbox.verbose &&\n sandbox.log(`sendToHost(adapter=${host}, cmd=${cmd}, msg=${JSON.stringify(msg)})`, 'info');\n adapter.sendToHost(host, cmd, msg, callback);\n }\n },\n sendToHostAsync: function (host: string, cmd: string, msg?: any): Promise {\n return new Promise((resolve, reject) => {\n sandbox.sendToHost(host, cmd, msg, res => {\n if (!res || res.error) {\n reject(res ? new Error(res.error) : new Error('Unknown error'));\n } else {\n resolve(res);\n }\n });\n });\n },\n registerNotification: function (msg: string, isAlert?: boolean): void {\n const category = !isAlert ? 'scriptMessage' : 'scriptAlert';\n\n if (sandbox.verbose) {\n sandbox.log(`registerNotification(msg=${msg}, category=${category})`, 'info');\n }\n\n void adapter.registerNotification('javascript', category, msg);\n },\n setInterval: function (callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout | null {\n if (typeof callback === 'function') {\n const int: NodeJS.Timeout = setInterval(() => {\n try {\n callback.call(sandbox, ...args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, ms);\n // IO-10: Set.add() – O(1) instead of Array.push()\n script.intervals.add(int);\n\n if (sandbox.verbose) {\n sandbox.log(`setInterval(ms=${ms})`, 'info');\n }\n return int;\n }\n sandbox.log(`Invalid callback for setInterval! - ${typeof callback}`, 'error');\n return null;\n },\n clearInterval: function (id: NodeJS.Timeout): void {\n // IO-10: Set.has/delete – O(1) instead of Array.indexOf+splice O(n)\n if (script.intervals.has(id)) {\n if (sandbox.verbose) {\n sandbox.log('clearInterval() => cleared', 'info');\n }\n clearInterval(id);\n script.intervals.delete(id);\n } else {\n if (sandbox.verbose) {\n sandbox.log('clearInterval() => not found', 'warn');\n }\n }\n },\n setTimeout: function (callback: (args?: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout | null {\n if (typeof callback === 'function') {\n const to = setTimeout(() => {\n // IO-10: Set.delete – O(1) instead of Array.indexOf+splice O(n)\n script.timeouts.delete(to);\n\n try {\n callback.call(sandbox, ...args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, ms);\n if (sandbox.verbose) {\n sandbox.log(`setTimeout(ms=${ms})`, 'info');\n }\n // IO-10: Set.add – O(1) instead of Array.push\n script.timeouts.add(to);\n return to;\n }\n sandbox.log(`Invalid callback for setTimeout! - ${typeof callback}`, 'error');\n return null;\n },\n clearTimeout: function (id: NodeJS.Timeout): void {\n // IO-10: Set.has/delete – O(1) instead of Array.indexOf+splice O(n)\n if (script.timeouts.has(id)) {\n if (sandbox.verbose) {\n sandbox.log('clearTimeout() => cleared', 'info');\n }\n clearTimeout(id);\n script.timeouts.delete(id);\n } else {\n if (sandbox.verbose) {\n sandbox.log('clearTimeout() => not found', 'warn');\n }\n }\n },\n setImmediate: function (callback: (..._args: any[]) => void, ...args: any[]): void {\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.apply(sandbox, args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n if (sandbox.verbose) {\n sandbox.log('setImmediate()', 'info');\n }\n } else {\n sandbox.log(`Invalid callback for setImmediate! - ${typeof callback}`, 'error');\n }\n },\n cb: function (callback: (..._args: any[]) => void): (...args: any[]) => void {\n return function (args: any[]) {\n if (context.scripts[name]?._id === sandbox._id) {\n if (typeof callback === 'function') {\n try {\n callback.apply(sandbox, args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n } else {\n sandbox.log(`Callback for old version of script: ${name}`, 'warn');\n }\n };\n },\n compareTime: function (\n startTime: iobJS.AstroDate | string | Date | number,\n endTime: iobJS.AstroDate | string | Date | number | null,\n operation: 'between' | 'not between' | '<' | '<=' | '>' | '>=' | '==' | '<>' | '!=',\n time?: iobJS.AstroDate | string | Date | number,\n ): boolean {\n if (startTime && typeof startTime === 'string') {\n const pos = consts.astroListLow.indexOf(startTime.toLowerCase());\n if (pos !== -1) {\n const aTime = sandbox.getAstroDate(consts.astroList[pos]);\n if (aTime) {\n startTime = aTime.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n } else {\n startTime = 0;\n }\n }\n } else if (startTime && isObject(startTime) && (startTime as iobJS.AstroDate).astro) {\n const aTime = sandbox.getAstroDate(\n (startTime as iobJS.AstroDate).astro,\n (startTime as iobJS.AstroDate).date || new Date(),\n (startTime as iobJS.AstroDate).offset || 0,\n );\n if (aTime) {\n startTime = aTime.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n } else {\n startTime = 0;\n }\n }\n\n if (endTime && typeof endTime === 'string') {\n const pos = consts.astroListLow.indexOf(endTime.toLowerCase());\n if (pos !== -1) {\n const aTime = sandbox.getAstroDate(consts.astroList[pos]);\n endTime =\n aTime?.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }) || 0;\n }\n } else if (endTime && isObject(endTime) && (endTime as iobJS.AstroDate).astro) {\n const aTime = sandbox.getAstroDate(\n (endTime as iobJS.AstroDate).astro,\n (endTime as iobJS.AstroDate).date || new Date(),\n (endTime as iobJS.AstroDate).offset || 0,\n );\n endTime =\n aTime?.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }) || 0;\n }\n\n // --- Convert \"time\" to number\n let nTime: number | undefined;\n // maybe it is astro date like 'sunrise' or 'sunset'\n if (time && typeof time === 'string') {\n const pos = consts.astroListLow.indexOf(time.toLowerCase());\n if (pos !== -1) {\n nTime = sandbox.getAstroDate(consts.astroList[pos])?.getTime() || 0;\n }\n } else if (time && isObject(time) && (time as iobJS.AstroDate).astro) {\n nTime =\n sandbox\n .getAstroDate(\n (time as iobJS.AstroDate).astro,\n (time as iobJS.AstroDate).date || new Date(),\n (time as iobJS.AstroDate).offset || 0,\n )\n ?.getTime() || 0;\n }\n\n let daily = true;\n if (time) {\n daily = false;\n }\n // if not astro date\n if (!nTime) {\n if (time && !isObject(time)) {\n if (typeof time === 'string' && !time.includes(' ') && !time.includes('T')) {\n const parts = time.split(':');\n const oTime = new Date();\n oTime.setHours(parseInt(parts[0], 10));\n oTime.setMinutes(parseInt(parts[1], 10));\n oTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n oTime.setSeconds(parseInt(parts[2], 10));\n } else {\n oTime.setSeconds(0);\n }\n nTime = oTime.getTime();\n } else {\n nTime = new Date(time as string | number).getTime();\n }\n } else if (!time) {\n const oTime = new Date();\n oTime.setMilliseconds(0);\n nTime = oTime.getTime();\n } else {\n // If Date\n nTime = (time as Date).getTime();\n }\n }\n // --- End of conversion \"time\" to number\n if (typeof startTime === 'string') {\n if (!startTime.includes(' ') && !startTime.includes('T')) {\n const parts = startTime.split(':');\n startTime = new Date();\n startTime.setHours(parseInt(parts[0], 10));\n startTime.setMinutes(parseInt(parts[1], 10));\n startTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n startTime.setSeconds(parseInt(parts[2], 10));\n } else {\n startTime.setSeconds(0);\n }\n } else {\n daily = false;\n startTime = new Date(startTime);\n }\n } else {\n daily = false;\n startTime = new Date(startTime as number | Date);\n }\n const nStartTime = startTime.getTime();\n\n let nEndTime: number | null;\n if (endTime && typeof endTime === 'string') {\n if (!endTime.includes(' ') && !endTime.includes('T')) {\n const parts = endTime.split(':');\n endTime = new Date();\n endTime.setHours(parseInt(parts[0], 10));\n endTime.setMinutes(parseInt(parts[1], 10));\n endTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n endTime.setSeconds(parseInt(parts[2], 10));\n } else {\n endTime.setSeconds(0);\n }\n } else {\n daily = false;\n endTime = new Date(endTime);\n }\n } else if (endTime) {\n daily = false;\n endTime = new Date(endTime as number | Date);\n } else {\n endTime = null;\n }\n\n if (endTime) {\n nEndTime = endTime.getTime();\n } else {\n nEndTime = null;\n }\n\n if (operation === 'between') {\n if (nEndTime) {\n if (nStartTime > nEndTime && daily) {\n return !(nTime >= nEndTime && nTime < nStartTime);\n }\n return nTime >= nStartTime && nTime < nEndTime;\n }\n sandbox.log(`missing or unrecognized endTime expression: ${JSON.stringify(endTime)}`, 'warn');\n return false;\n }\n\n if (operation === 'not between') {\n if (nEndTime) {\n if (nStartTime > nEndTime && daily) {\n return nTime >= nEndTime && nTime < nStartTime;\n }\n return !(nTime >= nStartTime && nTime < nEndTime);\n }\n sandbox.log(`missing or unrecognized endTime expression: ${JSON.stringify(endTime)}`, 'warn');\n return false;\n }\n\n if (operation === '>') {\n return nTime > nStartTime;\n }\n if (operation === '>=') {\n return nTime >= nStartTime;\n }\n if (operation === '<') {\n return nTime < nStartTime;\n }\n if (operation === '<=') {\n return nTime <= nStartTime;\n }\n if (operation === '==') {\n return nTime === nStartTime;\n }\n if (operation === '<>' || operation === '!=') {\n return nTime !== nStartTime;\n }\n sandbox.log(`Invalid operator: ${operation as string}`, 'warn');\n return false;\n },\n onStop: function (cb: () => void, timeout?: number): void {\n if (sandbox.verbose) {\n sandbox.log(`onStop(timeout=${timeout})`, 'info');\n }\n\n script.onStopCb = cb;\n script.onStopTimeout = timeout || 1000;\n },\n formatValue: function (value: number | string, decimals: number | string, format?: string): string {\n if (typeof decimals === 'string') {\n format = decimals;\n decimals = 0;\n }\n if (!format) {\n if (adapter.isFloatComma !== undefined) {\n format = adapter.isFloatComma ? '.,' : ',.';\n } else if (objects['system.config'] && objects['system.config'].common) {\n format = objects['system.config'].common.isFloatComma ? '.,' : ',.';\n }\n }\n return adapter.formatValue(value, decimals, format);\n },\n formatDate: function (\n date: Date | string | number | iobJS.AstroDate,\n format?: string,\n language?: ioBroker.Languages,\n ): string {\n if (!format) {\n if (adapter.dateFormat) {\n format = adapter.dateFormat;\n } else {\n format =\n objects['system.config'] && objects['system.config'].common\n ? objects['system.config'].common.dateFormat || 'DD.MM.YYYY'\n : 'DD.MM.YYYY';\n }\n format = format || 'DD.MM.YYYY';\n }\n // maybe it is astro date like 'sunrise' or 'sunset'\n if (date && typeof date === 'string') {\n const pos = consts.astroListLow.indexOf(date.toLowerCase());\n if (pos !== -1) {\n date = sandbox.getAstroDate(consts.astroList[pos])?.getTime() || 0;\n }\n } else if (date && isObject(date) && (date as iobJS.AstroDate).astro) {\n date =\n sandbox\n .getAstroDate(\n (date as iobJS.AstroDate).astro,\n (date as iobJS.AstroDate).date || new Date(),\n (date as iobJS.AstroDate).offset || 0,\n )\n ?.getTime() || 0;\n }\n\n if (format.match(/[WНOО]+/)) {\n let text: string = adapter.formatDate(date as Date | string | number, format);\n if (!language || !consts.dayOfWeeksFull[language]) {\n language =\n adapter.language ||\n (objects['system.config'] &&\n objects['system.config'].common &&\n objects['system.config'].common.language) ||\n 'en';\n if (!consts.dayOfWeeksFull[language as ioBroker.Languages]) {\n language = 'en';\n }\n }\n if (typeof date === 'number' || typeof date === 'string') {\n date = new Date(date);\n } else if (typeof (date as Date).getMonth !== 'function') {\n sandbox.log(`Invalid date object provided: ${JSON.stringify(date)}`, 'error');\n return 'Invalid date';\n }\n const d: number = (date as Date).getDay();\n text = text.replace('НН', consts.dayOfWeeksFull[language as ioBroker.Languages][d]);\n let initialText = text;\n text = text.replace('WW', consts.dayOfWeeksFull[language as ioBroker.Languages][d]);\n\n if (initialText === text) {\n text = text.replace('W', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n }\n\n text = text.replace('Н', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n text = text.replace('Н', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n const m: number = (date as Date).getMonth();\n initialText = text;\n text = text.replace('OOO', consts.monthFullGen[language as ioBroker.Languages][m]);\n text = text.replace('ООО', consts.monthFullGen[language as ioBroker.Languages][m]);\n text = text.replace('OO', consts.monthFull[language as ioBroker.Languages][m]);\n text = text.replace('ОО', consts.monthFull[language as ioBroker.Languages][m]);\n\n if (initialText === text) {\n text = text.replace('O', consts.monthShort[language as ioBroker.Languages][m]);\n }\n return text;\n }\n return adapter.formatDate(date as string | number | Date, format);\n },\n formatTimeDiff: function (diff: number, format?: string): string {\n if (!format) {\n format = 'hh:mm:ss';\n }\n\n let text = format;\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, diff=${diff})`, 'debug');\n }\n\n const second = 1000;\n const minute = 60 * second;\n const hour = 60 * minute;\n const day = 24 * hour;\n const neg = diff < 0;\n diff = Math.abs(diff);\n\n if (FTD_TEST_D.test(text)) {\n const days = Math.floor(diff / day);\n\n text = text.replace(FTD_REPL_DD, days.toString().padStart(2, '0')).replace(FTD_REPL_D, days.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, days=${days})`, 'debug');\n }\n\n diff -= days * day;\n }\n\n if (FTD_TEST_H.test(text)) {\n const hours = Math.floor(diff / hour);\n\n text = text\n .replace(FTD_REPL_HH, hours.toString().padStart(2, '0'))\n .replace(FTD_REPL_H, hours.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, hours=${hours})`, 'debug');\n }\n\n diff -= hours * hour;\n }\n\n if (FTD_TEST_M.test(text)) {\n const minutes = Math.floor(diff / minute);\n\n text = text\n .replace(FTD_REPL_MM, minutes.toString().padStart(2, '0'))\n .replace(FTD_REPL_M, minutes.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, minutes=${minutes})`, 'debug');\n }\n\n diff -= minutes * minute;\n }\n\n if (FTD_TEST_S.test(text)) {\n const seconds = Math.floor(diff / second);\n\n text = text\n .replace(FTD_REPL_SS, seconds.toString().padStart(2, '0'))\n .replace(FTD_REPL_S, seconds.toString());\n\n sandbox.verbose &&\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, seconds=${seconds})`, 'debug');\n }\n\n for (const [pattern, replacement] of FTD_UNESCAPE) {\n text = text.replace(pattern, replacement);\n }\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text})`, 'debug');\n }\n\n return neg ? `-${text}` : text;\n },\n getDateObject: function (date: Date | number | string): Date {\n if (isObject(date)) {\n return date as Date;\n }\n if (typeof date === 'undefined') {\n return new Date();\n }\n if (typeof date !== 'string') {\n return new Date(date);\n }\n\n // If only hours: 20, 2\n if (date.match(/^\\d?\\d$/)) {\n const _now = new Date();\n date = `${_now.getFullYear()}-${_now.getMonth() + 1}-${_now.getDate()} ${date}:00`;\n } else if (date.match(/^\\d?\\d:\\d\\d(:\\d\\d)?$/)) {\n // 20:00, 2:00, 20:00:00, 2:00:00\n const now = new Date();\n date = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${date}`;\n }\n\n return new Date(date);\n },\n writeFile: function (\n _adapter: string,\n fileName: string,\n data: string | Buffer | ((err: Error) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n if (typeof data === 'function' || !data) {\n callback = data as (err?: Error | null) => void;\n data = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `writeFile(adapter=${_adapter}, fileName=${fileName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function (): void {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`writeFile(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n if (callback) {\n adapter.writeFile(_adapter, fileName, data, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.writeFile(_adapter, fileName, data);\n }\n }\n },\n readFile: function (\n _adapter: string,\n fileName: string | ((err: Error | null | undefined, data?: Buffer | string, mimeType?: string) => void),\n callback?: (err: Error | null | undefined, data?: Buffer | string, mimeType?: string) => void,\n ): void {\n if (typeof fileName === 'function') {\n callback = fileName as (\n err: Error | null | undefined,\n data?: Buffer | string,\n mimeType?: string,\n ) => void;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n if (typeof callback !== 'function') {\n sandbox.log(`readFile(adapter=${_adapter}, fileName=${fileName}): no callback`, 'error');\n return;\n }\n _adapter = _adapter || '0_userdata.0';\n if (sandbox.verbose) {\n sandbox.log(`readFile(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n\n adapter.fileExists(_adapter, fileName, (error: Error | null | undefined, result?: boolean): void => {\n if (error) {\n callback(error);\n } else if (!result) {\n callback(new Error('Not exists'));\n } else {\n adapter.readFile(_adapter, fileName, callback);\n }\n });\n },\n unlink: function (\n _adapter: string,\n fileName: string | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n if (typeof fileName === 'function') {\n callback = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `unlink(adapter=${_adapter}, fileName=${fileName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function (): void {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`unlink(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n if (callback) {\n adapter.unlink(_adapter, fileName, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.unlink(_adapter, fileName);\n }\n }\n },\n delFile: function (\n _adapter: string,\n fileName: string | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return sandbox.unlink(_adapter, fileName as string, callback);\n },\n rename: function (\n _adapter: string,\n oldName: string,\n newName: string,\n callback?: (err?: Error | null) => void,\n ): void {\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `rename(adapter=${_adapter}, oldName=${oldName}, newName=${newName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n sandbox.verbose &&\n sandbox.log(`rename(adapter=${_adapter}, oldName=${oldName}, newName=${newName})`, 'info');\n if (callback) {\n adapter.rename(_adapter, oldName, newName, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.rename(_adapter, oldName, newName);\n }\n }\n },\n renameFile: function (\n _adapter: string,\n oldName: string,\n newName: string,\n callback?: (err?: Error | null) => void,\n ): void {\n return sandbox.rename(_adapter, oldName, newName, callback);\n },\n getHistory: function (\n instance: string | (ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }),\n options:\n | (ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string })\n | ((\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void),\n callback?: (\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void,\n ): void {\n if (isObject(instance)) {\n callback = options as (\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void;\n options = instance as ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string };\n instance = '';\n }\n\n if (typeof callback !== 'function') {\n return sandbox.log('No callback found!', 'error');\n }\n if (!isObject(options)) {\n return sandbox.log('No options found!', 'error');\n }\n if (!(options as ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string }).id) {\n return sandbox.log('No ID found!', 'error');\n }\n const timeoutMs =\n parseInt(\n (options as ioBroker.GetHistoryOptions & { id?: string; timeout?: number })\n ?.timeout as unknown as string,\n 10,\n ) || 20000;\n\n if (!instance) {\n // @ts-expect-error defaultHistory is private attribute of adapter. Fix later\n if (adapter.defaultHistory) {\n // @ts-expect-error defaultHistory is private attribute of adapter. Fix later\n instance = adapter.defaultHistory;\n } else {\n instance = objects['system.config']?.common?.defaultHistory || null;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getHistory(instance=${instance as string}, options=${JSON.stringify(options)})`, 'info');\n }\n\n if (!instance) {\n sandbox.log('No default history instance found!', 'error');\n try {\n callback.call(sandbox, new Error('No default history instance found!'));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n return;\n }\n if ((instance as string).startsWith('system.adapter.')) {\n instance = (instance as string).substring('system.adapter.'.length);\n }\n\n if (!objects[`system.adapter.${instance as string}`]) {\n sandbox.log(`Instance \"${instance as string}\" not found!`, 'error');\n try {\n callback.call(sandbox, new Error(`Instance \"${instance as string}\" not found!`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n return;\n }\n\n let _timeout: NodeJS.Timeout | null = setTimeout(() => {\n _timeout = null;\n if (sandbox.verbose) {\n sandbox.log('getHistory => timeout', 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Timeout'),\n null,\n options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance as string,\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutMs);\n\n adapter.sendTo(\n instance as string,\n 'getHistory',\n {\n id: (options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }).id,\n options,\n },\n (res: any): void => {\n if (_timeout) {\n clearTimeout(_timeout);\n _timeout = null;\n }\n const result: {\n error?: string;\n result?: ioBroker.GetHistoryResult;\n step?: number;\n sessionId?: string;\n } = res;\n\n if (sandbox.verbose && result?.error) {\n sandbox.log(`getHistory => ${result.error}`, 'error');\n }\n if (sandbox.verbose && result?.result) {\n sandbox.log(`getHistory => ${result.result.length} items`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n result.error ? new Error(result.error) : null,\n result.result,\n options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance as string,\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n },\n );\n },\n runScript: function (scriptName: string, callback?: (err?: Error | null) => void): boolean {\n scriptName = scriptName || name;\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n // start another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot start \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `runScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n typeof callback === 'function' && callback();\n return true;\n }\n if (objects[scriptName].common.enabled) {\n objects[scriptName].common.enabled = false;\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, (/* err, obj */) => {\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err),\n );\n });\n return true;\n }\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err),\n );\n return true;\n },\n runScriptAsync: function (scriptName: string): Promise {\n let done = false;\n return new Promise((resolve, reject) => {\n const result = sandbox.runScript(scriptName, err => {\n if (err) {\n reject(err);\n done = true;\n } else {\n resolve();\n }\n });\n if (result === false && !done) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n startScript: function (\n scriptName: string,\n ignoreIfStarted?: boolean | ((err: Error | null | undefined, started: boolean) => void),\n callback?: (err: Error | null | undefined, started: boolean) => void,\n ): boolean {\n if (typeof ignoreIfStarted === 'function') {\n callback = ignoreIfStarted as (err: Error | null | undefined, started: boolean) => void;\n ignoreIfStarted = false;\n }\n scriptName ||= name;\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n // start another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot start \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `startScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n typeof callback === 'function' && callback(null, false);\n return true;\n }\n if (objects[scriptName].common.enabled) {\n if (!ignoreIfStarted) {\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, () => {\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err, true),\n );\n });\n } else if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n }\n adapter.extendForeignObject(scriptName, { common: { enabled: true } }, err => {\n typeof callback === 'function' && callback(err, true);\n });\n return true;\n },\n startScriptAsync: function (scriptName: string, ignoreIfStarted?: boolean): Promise {\n return new Promise((resolve, reject) => {\n const result = sandbox.startScript(\n scriptName,\n !!ignoreIfStarted,\n (err: Error | null | undefined, started: boolean): void => {\n if (err) {\n reject(err);\n } else {\n resolve(started);\n }\n },\n );\n if (result === false) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n stopScript: function (\n scriptName: string,\n callback?: (err: Error | null | undefined, stopped: boolean) => void,\n ): boolean {\n scriptName = scriptName || name;\n\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n\n // stop another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot stop \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `stopScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n }\n if (objects[scriptName].common.enabled) {\n objects[scriptName].common.enabled = false;\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, err => {\n if (typeof callback === 'function') {\n callback(err, true);\n }\n });\n } else if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n },\n stopScriptAsync: function (scriptName: string): Promise {\n return new Promise((resolve, reject) => {\n const result = sandbox.stopScript(\n scriptName,\n (err: Error | null | undefined, stopped: boolean): void => {\n if (err) {\n reject(err);\n } else {\n resolve(stopped);\n }\n },\n );\n if (result === false) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n isScriptActive: function (scriptName: string): boolean {\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log('Script does not exist', 'error');\n return false;\n }\n return objects[scriptName].common.enabled;\n },\n startInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && !instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, { common: { enabled: true } });\n\n if (sandbox.verbose) {\n sandbox.log(`startInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot start instance \"${instanceName}\", because already running`, 'warn');\n } else {\n sandbox.log(`Cannot start instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n restartInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, {});\n\n if (sandbox.verbose) {\n sandbox.log(`restartInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot restart instance \"${instanceName}\", because not running`, 'warn');\n } else {\n sandbox.log(`Cannot restart instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n stopInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, { common: { enabled: false } });\n\n if (sandbox.verbose) {\n sandbox.log(`stopInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot stop instance \"${instanceName}\", because not running`, 'warn');\n } else {\n sandbox.log(`Cannot stop instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toInt: function (val: boolean | string | number | 'true' | 'false'): number {\n if (val === true || val === 'true') {\n val = 1;\n }\n if (val === false || val === 'false') {\n val = 0;\n }\n val = parseInt(val as unknown as string) || 0;\n return val;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toFloat: function (val: boolean | string | number | 'true' | 'false'): number {\n if (val === true || val === 'true') {\n val = 1;\n }\n if (val === false || val === 'false') {\n val = 0;\n }\n val = parseFloat(val as unknown as string) || 0;\n return val;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toBoolean: function (val: boolean | string | number | 'true' | 'false'): boolean {\n if (val === '1' || val === 'true') {\n val = true;\n }\n if (val === '0' || val === 'false') {\n val = false;\n }\n return !!val;\n },\n getAttr: function (obj: string | Record, path: string | string[]): any {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n if (typeof obj === 'string') {\n try {\n obj = JSON.parse(obj);\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getAttr',\n });\n sandbox.log(`Cannot parse \"${obj.substring(0, 30)}\": ${err as Error}`, 'error');\n\n return null;\n }\n }\n\n const attr: string = path.shift() || '';\n try {\n obj = (obj as Record)[attr];\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getAttr',\n });\n sandbox.log(`Cannot get ${attr} of \"${JSON.stringify(obj)}\": ${err as Error}`, 'error');\n\n return null;\n }\n\n if (!path.length) {\n return obj;\n }\n const type = typeof obj;\n if (obj === null || obj === undefined || type === 'boolean' || type === 'number') {\n return null;\n }\n return sandbox.getAttr(obj, path);\n },\n messageTo: function (\n target: string | { instance: string | null | number; script: string | null; message: string },\n data: any,\n options: { timeout?: number | string } | ((result: any, options: { timeout?: number | string }) => void),\n callback?: (result: any, options: { timeout?: number | string }, instance: string | number | null) => void,\n ) {\n const defaultTimeout = 5000;\n\n if (typeof target !== 'object') {\n target = { instance: null, script: null, message: target };\n }\n if (typeof options === 'function') {\n callback = options;\n options = { timeout: defaultTimeout };\n }\n\n let timeout: NodeJS.Timeout | null = null;\n if (typeof callback === 'function') {\n const timeoutDuration = parseInt(options?.timeout as unknown as string, 10) || defaultTimeout;\n\n timeout = setTimeout(() => {\n timeout = null;\n\n if (sandbox.verbose) {\n sandbox.log(`messageTo => timeout: ${timeoutDuration}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, { error: 'timeout' }, options, target.instance);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutDuration);\n }\n let cbFunc: undefined | ((result: any) => void);\n if (timeout) {\n cbFunc = function (res: any) {\n timeout && clearTimeout(timeout);\n const result: { result?: any; error?: string | null } = res;\n\n if (sandbox.verbose && result?.result) {\n sandbox.log(`messageTo => ${JSON.stringify(result)}`, 'debug');\n }\n if (sandbox.verbose && result?.error) {\n sandbox.log(`messageTo => ${result.error}`, 'error');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, result, options, target.instance);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n };\n }\n\n if (target.instance || target.instance === 0) {\n if (\n typeof target.instance === 'string' &&\n target.instance &&\n target.instance.startsWith('system.adapter.')\n ) {\n target.instance = target.instance.substring('system.adapter.'.length);\n } else if (typeof target.instance === 'number') {\n target.instance = `javascript.${target.instance}`;\n }\n\n adapter.sendTo(\n target.instance,\n 'jsMessageBus',\n { message: target.message, script: target.script, data },\n cbFunc,\n );\n } else {\n // Send it to all instances\n context.adapter.getObjectView(\n 'system',\n 'instance',\n { startkey: 'system.adapter.javascript.', endkey: 'system.adapter.javascript.\\u9999' },\n options,\n (err: Error | null | undefined, res): void => {\n if (err || !res) {\n sandbox.log(`messageTo failed: ${err?.message}`, 'error');\n return;\n }\n const len = 'system.adapter.'.length;\n const instances = res.rows.map(item => item.id.substring(len));\n\n instances.forEach(instance => {\n adapter.sendTo(\n instance,\n 'jsMessageBus',\n { message: target.message, script: target.script, data },\n cbFunc,\n );\n });\n },\n );\n }\n },\n messageToAsync: function (\n target: string | { instance: string | null | number; script: string | null; message: string },\n data: any,\n options?: { timeout?: number | string },\n ): Promise {\n return new Promise((resolve, reject) => {\n sandbox.messageTo(target, data, options, (res: any): void => {\n const result: { error?: string } = res;\n if (sandbox.verbose) {\n sandbox.log(`messageTo result => ${JSON.stringify(res)}`, 'debug');\n }\n if (!res || result.error) {\n reject(result ? new Error(result.error) : new Error('Unknown error'));\n } else {\n resolve(result);\n }\n });\n });\n },\n onMessage: function (\n messageName: string,\n callback: (data: any, cb: (result: any) => void) => void,\n ): null | number {\n if (typeof callback !== 'function') {\n sandbox.log('onMessage callback is not a function', 'error');\n\n return null;\n }\n context.messageBusHandlers[sandbox.scriptName] = context.messageBusHandlers[sandbox.scriptName] || {};\n context.messageBusHandlers[sandbox.scriptName][messageName] =\n context.messageBusHandlers[sandbox.scriptName][messageName] || [];\n\n const handler = { id: _handlerIdCounter++, cb: callback, sandbox };\n context.messageBusHandlers[sandbox.scriptName][messageName].push(handler);\n\n sandbox.__engine.__subscriptionsMessage += 1;\n\n if (\n sandbox.__engine.__subscriptionsMessage %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsMessage} message subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n return handler.id;\n },\n onMessageUnregister: function (idOrName: number | string): boolean {\n const ctx = context.messageBusHandlers[sandbox.scriptName];\n let found = false;\n if (ctx) {\n if (typeof idOrName === 'number') {\n outer: for (const messageName of Object.keys(ctx)) {\n for (let i = 0; i < ctx[messageName].length; i++) {\n if (ctx[messageName][i].id === idOrName) {\n ctx[messageName].splice(i, 1);\n if (!ctx[messageName].length) {\n delete ctx[messageName];\n sandbox.__engine.__subscriptionsMessage--;\n }\n found = true;\n break outer;\n }\n }\n }\n } else if (idOrName && ctx[idOrName]) {\n delete ctx[idOrName];\n sandbox.__engine.__subscriptionsMessage--;\n found = true;\n }\n }\n return found;\n },\n console: {\n log: function (msg: string): void {\n sandbox.log(msg, 'info');\n },\n error: function (msg: string): void {\n sandbox.log(msg, 'error');\n },\n warn: function (msg: string): void {\n sandbox.log(msg, 'warn');\n },\n info: function (msg: string): void {\n sandbox.log(msg, 'info');\n },\n debug: function (msg: string): void {\n sandbox.log(msg, 'debug');\n },\n },\n jsonataExpression: function (data: any, expression: string): Promise {\n return jsonata(expression).evaluate(data);\n },\n wait: function (ms: number): Promise {\n return new Promise((resolve: () => void): void => {\n sandbox.setTimeout(resolve, ms);\n });\n },\n sleep: function (ms: number): Promise {\n return sandbox.wait(ms);\n },\n onObject: function (\n pattern: string | string[],\n callback: (id: string, obj?: ioBroker.Object | null) => void,\n ): SubscribeObject | SubscribeObject[] | null {\n return sandbox.subscribeObject(pattern, callback);\n },\n subscribeObject: function (\n pattern: string | string[],\n callback: (id: string, obj?: ioBroker.Object | null) => void,\n ): SubscribeObject | SubscribeObject[] | null {\n if (Array.isArray(pattern)) {\n const result: {\n name: string;\n pattern: string;\n callback: (id: string, obj?: ioBroker.Object | null) => void;\n }[] = [];\n for (let p = 0; p < pattern.length; p++) {\n result.push(\n sandbox.subscribeObject(pattern[p], callback) as {\n name: string;\n pattern: string;\n callback: (id: string, obj?: ioBroker.Object | null) => void;\n },\n );\n }\n return result;\n }\n\n sandbox.__engine.__subscriptionsObject += 1;\n\n if (\n sandbox.__engine.__subscriptionsObject %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsObject} object subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n // source is set by regexp if defined as /regexp/\n if (!pattern || typeof pattern !== 'string') {\n sandbox.log('Error by subscribeObject: pattern can be only string or array of strings.', 'error');\n return null;\n }\n\n if (typeof callback !== 'function') {\n sandbox.log('Error by subscribeObject: callback is not a function', 'error');\n return null;\n }\n\n const subs: SubscribeObject = { pattern, callback, name };\n if (sandbox.verbose) {\n sandbox.log(`subscribeObject: ${JSON.stringify(subs)}`, 'info');\n }\n\n adapter.subscribeForeignObjects(pattern);\n\n context.subscriptionsObject.push(subs);\n // Keep O(1) dispatch map in sync\n if (!context.subscriptionsObjectMap.has(pattern)) {\n context.subscriptionsObjectMap.set(pattern, []);\n }\n context.subscriptionsObjectMap.get(pattern)!.push(subs);\n\n return subs;\n },\n unsubscribeObject: function (subObject: SubscribeObject | SubscribeObject[]): boolean | boolean[] {\n if (subObject && Array.isArray(subObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < subObject.length; t++) {\n result.push(sandbox.unsubscribeObject(subObject[t]) as boolean);\n }\n return result;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`adapterUnsubscribeObject(id=${JSON.stringify(subObject)})`, 'info');\n }\n\n for (let i = context.subscriptionsObject.length - 1; i >= 0; i--) {\n if (context.subscriptionsObject[i] === subObject) {\n adapter.unsubscribeForeignObjects(subObject.pattern);\n context.subscriptionsObject.splice(i, 1);\n // Keep O(1) dispatch map in sync\n const mapSubs = context.subscriptionsObjectMap.get(subObject.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(subObject);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n context.subscriptionsObjectMap.delete(subObject.pattern);\n }\n }\n sandbox.__engine.__subscriptionsObject--;\n return true;\n }\n }\n let deleted = 0;\n for (let i = context.subscriptionsObject.length - 1; i >= 0; i--) {\n if (\n context.subscriptionsObject[i].name &&\n context.subscriptionsObject[i].pattern === subObject.pattern\n ) {\n deleted++;\n adapter.unsubscribeForeignObjects(subObject.pattern);\n // Keep O(1) dispatch map in sync\n const mapSubsP = context.subscriptionsObjectMap.get(subObject.pattern);\n if (mapSubsP) {\n const pos = mapSubsP.indexOf(context.subscriptionsObject[i]);\n if (pos !== -1) {\n mapSubsP.splice(pos, 1);\n }\n if (!mapSubsP.length) {\n context.subscriptionsObjectMap.delete(subObject.pattern);\n }\n }\n context.subscriptionsObject.splice(i, 1);\n sandbox.__engine.__subscriptionsObject--;\n }\n }\n return !!deleted;\n },\n // internal function to send the block debugging info to the front-end\n _sendToFrontEnd: function (blockId: string, data: any): void {\n if (context.rulesOpened === sandbox.scriptName) {\n void adapter.setState(\n 'debug.rules',\n JSON.stringify({ ruleId: sandbox.scriptName, blockId, data, ts: Date.now() }),\n true,\n );\n }\n },\n existsStateAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n existsObjectAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n getObjectAsync: function (_id: string, _enumName: null | string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n setObjectAsync: function (_id: string, _obj: ioBroker.Object): Promise<{ id: string }> {\n return Promise.reject(new Error('Not implemented'));\n },\n extendObjectAsync: function (_id: string, _obj: Partial): Promise<{ id: string }> {\n return Promise.reject(new Error('Not implemented'));\n },\n deleteObjectAsync: function (_id: string, _isRecursive?: boolean): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n createStateAsync: function (\n _name: string,\n _initValue: undefined | ioBroker.StateValue | ioBroker.State,\n _forceCreation:\n | boolean\n | undefined\n | Record\n | Partial\n | ((err: Error | null) => void),\n _common?: Partial | ((err: Error | null) => void),\n _native?: Record | ((err: Error | null) => void),\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n createAliasAsync: function (\n _name: string,\n _alias: string | CommonAlias,\n _forceCreation: boolean | Partial | undefined,\n _common?: Partial | Record,\n _native?: Record,\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n deleteStateAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n writeFileAsync: function (\n _adapter: string,\n _fileName: string | Buffer,\n _data?: string | Buffer,\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n readFileAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n unlinkAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n delFileAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n renameAsync: function (_adapter: string, _oldName: string, _newName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n renameFileAsync: function (_adapter: string, _oldName: string, _newName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n getHistoryAsync: function (\n _instance: string | (ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }),\n _options?: ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string },\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n httpGetAsync: function (\n _url: string,\n _options?: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n ): Promise<{\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n }> {\n return Promise.reject(new Error('Not implemented'));\n },\n httpPostAsync: function (\n _url: string,\n _data: any,\n _options: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n ): Promise<{\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n }> {\n return Promise.reject(new Error('Not implemented'));\n },\n };\n\n // Create advanced functions that can modify objects\n if ((adapter.config as JavaScriptAdapterConfig).enableSetObject) {\n sandbox.setObject = function (\n id: string,\n obj: ioBroker.Object,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n if (id && typeof id === 'string' && id.startsWith('system.adapter.')) {\n sandbox.log(\n `Using setObject on system object ${id} can be dangerous (protected instance attributes may be lost)`,\n 'info',\n );\n }\n if (debug) {\n sandbox.log(\n `setObject(id=${id}, obj=${JSON.stringify(obj)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setImmediate(function () {\n try {\n callback.call(sandbox, null, { id });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`setObject(id=${id}, obj=${JSON.stringify(obj)})`, 'info');\n }\n adapter.setForeignObject(id, obj, (err, res) => {\n if (!err) {\n // Update meta object data\n context.updateObjectContext(id, obj);\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, res);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n }\n };\n sandbox.extendObject = function (\n id: string,\n obj: Partial,\n callback?: (err?: Error | null, obj?: { id: string }) => void,\n ): void {\n if (debug) {\n sandbox.log(\n `extendObject(id=${id}, obj=${JSON.stringify(obj)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox, null, { id });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`extendObject(id=${id}, obj=${JSON.stringify(obj)})`, 'info');\n }\n if (callback) {\n adapter.extendForeignObject(id, structuredClone(obj), callback);\n } else {\n void adapter.extendForeignObject(id, structuredClone(obj));\n }\n }\n };\n sandbox.deleteObject = function (id: string, isRecursive?: boolean, callback?: ioBroker.ErrorCallback): void {\n if (typeof isRecursive === 'function') {\n callback = isRecursive;\n isRecursive = false;\n }\n if (debug) {\n sandbox.log(\n `deleteObject(id=${id}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`deleteObject(id=${id})`, 'info');\n }\n adapter.delForeignObject(id, { recursive: isRecursive }, callback);\n }\n };\n }\n\n // promisify methods on the sandbox\n sandbox.existsStateAsync = promisify(sandbox.existsState);\n sandbox.existsObjectAsync = promisify(sandbox.existsObject);\n sandbox.getObjectAsync = promisify(sandbox.getObject);\n sandbox.setObjectAsync = promisify(sandbox.setObject);\n sandbox.extendObjectAsync = promisify(sandbox.extendObject);\n sandbox.deleteObjectAsync = promisify(sandbox.deleteObject);\n sandbox.createStateAsync = promisify(sandbox.createState);\n sandbox.createAliasAsync = promisify(sandbox.createAlias);\n sandbox.deleteStateAsync = promisify(sandbox.deleteState);\n sandbox.writeFileAsync = promisify(sandbox.writeFile);\n sandbox.readFileAsync = promisify(sandbox.readFile);\n sandbox.unlinkAsync = promisify(sandbox.unlink);\n sandbox.delFileAsync = promisify(sandbox.delFile);\n sandbox.renameAsync = promisify(sandbox.rename);\n sandbox.renameFileAsync = promisify(sandbox.renameFile);\n sandbox.getHistoryAsync = promisify(sandbox.getHistory);\n sandbox.httpGetAsync = promisify(sandbox.httpGet);\n sandbox.httpPostAsync = promisify(sandbox.httpPost);\n\n // Make all predefined properties and methods readonly so scripts cannot overwrite them\n for (const prop of Object.keys(sandbox)) {\n Object.defineProperty(sandbox, prop, {\n configurable: false,\n writable: false,\n });\n }\n\n // Shallow-freeze the console object exposed to scripts to prevent its methods from being overwritten\n // Note: __engine must NOT be frozen because its counter properties are mutated at runtime\n if (sandbox.console && typeof sandbox.console === 'object') {\n Object.freeze(sandbox.console);\n }\n\n return sandbox;\n}\n"]} \ No newline at end of file diff --git a/build/main.js b/build/main.js index f9f35197a..38146124a 100644 --- a/build/main.js +++ b/build/main.js @@ -316,6 +316,14 @@ class JavaScript extends adapter_core_1.Adapter { mirror; stopCounters = {}; setStateCountCheckInterval = null; + /** + * Decrypted AI API keys cached from the central credential store (manager mode), + * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the + * subscriptions set up in `subscribeAiCredentials`. + */ + aiCredentialCache = new Map(); + /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */ + aiCredentialUnsubscribers = []; globalScript = ''; /** Generated declarations for global TypeScripts */ globalDeclarations = ''; @@ -761,6 +769,7 @@ class JavaScript extends adapter_core_1.Adapter { clearInterval(this.setStateCountCheckInterval); this.setStateCountCheckInterval = null; } + await this.unsubscribeAiCredentials(); await this.stopAllScripts(); } catch (err) { @@ -810,6 +819,108 @@ class JavaScript extends adapter_core_1.Adapter { } await this.main(); } + /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */ + async readAiCredentialKey(id) { + try { + const cred = await adapter_core_1.Credentials.getCredentials(this, id); + return (cred?.values?.key || '').trim(); + } + catch (e) { + this.log.warn(`Cannot read AI credential "${id}": ${e instanceof Error ? e.message : String(e)}`); + return ''; + } + } + /** + * Resolve the API key (and base URL) for an AI provider. + * + * In `manual` mode the key comes from the encryptedNative adapter config. + * In `manager` mode the config only stores the ID of a credential in the central + * ioBroker credential store (`system.credentials.*`); the actual key is taken from the + * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are + * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly. + * + * The settings-dialog Test button may pass form values that are not saved yet + * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config. + */ + async resolveAiCredentials(provider, opts = {}) { + const mode = opts.credentialType || this.config.credentialType || 'manual'; + if (mode === 'manager') { + // The base URL is not a secret and is resolved the same way in both modes. + const { baseUrl } = (0, aiProviderResolver_1.resolveProviderCredentials)(this.config, provider, opts.messageBaseUrl); + const id = (opts.messageCredentialId || (0, aiProviderResolver_1.getProviderCredentialId)(this.config, provider)).trim(); + if (!id) { + return { apiKey: '', baseUrl }; + } + // Prefer the cached value kept fresh by the credential subscription. + const cached = this.aiCredentialCache.get(id); + const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id); + return { apiKey, baseUrl }; + } + // Manual mode. The Test button sends the current form key (maybe empty) — let it win. + if (opts.messageApiKey !== undefined) { + return (0, aiProviderResolver_1.resolveTestCredentials)(this.config, provider, opts.messageApiKey, opts.messageBaseUrl); + } + return (0, aiProviderResolver_1.resolveProviderCredentials)(this.config, provider, opts.messageBaseUrl); + } + /** + * In `manager` mode, subscribe to all configured AI credentials so that edits made in the + * admin credential manager (Settings → Credentials) are picked up live, without restarting + * the adapter (the `system.credentials.*` objects are global, not part of the instance config). + * The decrypted keys are cached and kept fresh by the subscription handlers. + */ + async subscribeAiCredentials() { + // Always start from a clean state (idempotent — also used to re-subscribe). + await this.unsubscribeAiCredentials(); + if (this.config.credentialType !== 'manager') { + return; + } + // Collect the distinct credential IDs configured across all AI providers. + const ids = new Set(); + for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom']) { + const id = (0, aiProviderResolver_1.getProviderCredentialId)(this.config, provider); + if (id) { + ids.add(id); + } + } + for (const id of ids) { + try { + const unsubscribe = await adapter_core_1.Credentials.subscribeCredentials(this, id, (changedId, cred) => { + if (cred) { + this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim()); + this.log.debug(`AI credential "${changedId}" updated`); + } + else { + // The credential was deleted + this.aiCredentialCache.delete(changedId); + this.log.debug(`AI credential "${changedId}" was deleted`); + } + }); + this.aiCredentialUnsubscribers.push(unsubscribe); + // Prime the cache with the current value (the handler may only fire on later changes). + this.aiCredentialCache.set(id, await this.readAiCredentialKey(id)); + } + catch (e) { + this.log.warn(`Cannot subscribe to AI credential "${id}": ${e instanceof Error ? e.message : String(e)}`); + } + } + if (this.aiCredentialUnsubscribers.length) { + this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`); + } + } + /** Tear down all AI credential subscriptions and clear the cache. */ + async unsubscribeAiCredentials() { + const unsubscribers = this.aiCredentialUnsubscribers; + this.aiCredentialUnsubscribers = []; + this.aiCredentialCache.clear(); + for (const unsubscribe of unsubscribers) { + try { + await unsubscribe(); + } + catch (e) { + this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`); + } + } + } onMessage(obj) { switch (obj?.command) { // process messageTo commands @@ -999,23 +1110,28 @@ class JavaScript extends adapter_core_1.Adapter { } case 'chatCompletion': { // Proxy chat completion requests to an OpenAI-compatible API endpoint. - // API keys are resolved server-side from encryptedNative config — they never - // leave the adapter (frontend only sends `provider`, not the key). - if (obj.callback) { + // API keys are resolved server-side from the encryptedNative config or the central + // credentials manager — they never leave the adapter (frontend only sends `provider`). + void (async () => { + if (!obj.callback) { + return; + } const chatModel = (obj.message?.model || '').trim(); const messages = obj.message?.messages; const tools = obj.message?.tools; const provider = (obj.message?.provider || 'openai').trim(); - const { apiKey, baseUrl } = (0, aiProviderResolver_1.resolveProviderCredentials)(this.config, provider, obj.message?.baseUrl); + const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, { + messageBaseUrl: obj.message?.baseUrl, + }); // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL if (!apiKey && (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)) { this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback); - break; + return; } if (!chatModel || !messages) { this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback); - break; + return; } let url; const chatHeaders = { @@ -1070,7 +1186,7 @@ class JavaScript extends adapter_core_1.Adapter { const resolved = resolveRequestModule(url); if (!resolved) { this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback); - break; + return; } const { module: requestModule, isHttps } = resolved; try { @@ -1143,21 +1259,29 @@ class JavaScript extends adapter_core_1.Adapter { catch (error) { this.sendTo(obj.from, obj.command, { error: `Connection failed: ${error.toString()}` }, obj.callback); } - } + })(); break; } case 'testApiConnection': { // Test connection to an OpenAI-compatible API endpoint. // The settings-dialog Test button sends the current form value as `apiKey` // (so users can test before saving); otherwise we fall back to the stored key. - if (obj.callback) { + void (async () => { + if (!obj.callback) { + return; + } const provider = (obj.message?.provider || 'openai').trim(); - const { apiKey, baseUrl } = (0, aiProviderResolver_1.resolveTestCredentials)(this.config, provider, obj.message?.apiKey, obj.message?.baseUrl); + const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, { + messageApiKey: obj.message?.apiKey, + messageBaseUrl: obj.message?.baseUrl, + messageCredentialId: obj.message?.credentialId, + credentialType: obj.message?.credentialType, + }); // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL if (!apiKey && (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)) { this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback); - break; + return; } let url; const testHeaders = { @@ -1187,7 +1311,7 @@ class JavaScript extends adapter_core_1.Adapter { const resolved = resolveRequestModule(url); if (!resolved) { this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback); - break; + return; } const { module: requestModule, isHttps } = resolved; try { @@ -1248,7 +1372,7 @@ class JavaScript extends adapter_core_1.Adapter { catch (error) { this.sendTo(obj.from, obj.command, { error: `Connection failed: ${error.toString()}` }, obj.callback); } - } + })(); break; } case 'getAvailableAiProviders': { @@ -1419,6 +1543,9 @@ class JavaScript extends adapter_core_1.Adapter { // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode) this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts; + // In `manager` credential mode, subscribe to the configured AI credentials so changes in the + // central credential store are picked up live (the keys are cached for the AI sendTo handlers). + await this.subscribeAiCredentials(); const doc = await this.getObjectViewAsync('script', 'javascript', {}); if (doc?.rows?.length) { // sort global scripts if configured diff --git a/build/main.js.map b/build/main.js.map index eafd48139..10e11aa86 100644 --- a/build/main.js.map +++ b/build/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Javascript adapter\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2024 bluefox ,\n *\n * Copyright (c) 2014 hobbyquaker\n */\n\nimport { Script, type ScriptOptions } from 'node:vm';\nimport { readFileSync, existsSync, statSync, writeFileSync, type Stats } from 'node:fs';\nimport { join, sep, normalize } from 'node:path';\nimport { fork, type ForkOptions } from 'node:child_process';\nimport { setTypeScriptResolveOptions, Server } from 'virtual-tsc';\nimport { isDeepStrictEqual } from 'node:util';\nimport prettier from 'prettier';\n\nimport * as dgram from 'node:dgram';\nimport * as crypto from 'node:crypto';\nimport * as dns from 'node:dns';\nimport * as events from 'node:events';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport * as http2 from 'node:http2';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport * as util from 'node:util';\nimport * as child_process from 'node:child_process';\nimport * as stream from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n// @ts-expect-error no types available\nimport * as suncalc from 'suncalc2';\nimport * as axios from 'axios';\n// @ts-expect-error no types available\nimport * as wake_on_lan from 'wake_on_lan';\nimport * as nodeSchedule from 'node-schedule';\n\nimport { getAbsoluteDefaultDataDir, Adapter, EXIT_CODES, type AdapterOptions } from '@iobroker/adapter-core';\nimport type SentryPlugin from '@iobroker/plugin-sentry';\nimport type { GetTimesResult } from 'suncalc';\nimport type { CompileResult } from 'virtual-tsc/build/util';\n\nimport { Mirror } from './lib/mirror';\nimport ProtectFs from './lib/protectFs';\nimport { setLanguage, getLanguage } from './lib/words';\nimport { sandBox } from './lib/sandbox';\nimport { requestModuleNameByUrl } from './lib/nodeModulesManagement';\nimport { resolveProviderCredentials, resolveTestCredentials, listAvailableProviders } from './lib/aiProviderResolver';\nimport {\n translateToolsToAnthropic,\n translateMessagesToAnthropic,\n translateAnthropicResponseToOpenAI,\n} from './lib/anthropicAdapter';\nimport { createEventObject, type EventObj } from './lib/eventObj';\nimport { type AstroEventName, Scheduler } from './lib/scheduler';\nimport { targetTsLib, tsCompilerOptions, jsDeclarationCompilerOptions } from './lib/typescriptSettings';\nimport { hashSource } from './lib/tools';\nimport {\n resolveTypescriptLibs,\n resolveTypings,\n scriptIdToTSFilename,\n transformScriptBeforeCompilation,\n transformGlobalDeclarations,\n} from './lib/typescriptTools';\nimport type {\n FileSubscriptionResult,\n JavascriptContext,\n JavaScriptAdapterConfig,\n JsScript,\n ScriptType,\n SubscriptionResult,\n SubscribeObject,\n JavascriptTimer,\n SandboxType,\n LogMessage,\n DebugState,\n} from './types';\nimport type { PatternEventCompareFunction } from './lib/patternCompareFunctions';\nimport { decryptText } from './lib/crypto';\n\ntype MODULES = {\n fs: ProtectFs;\n 'fs/promises': ProtectFs['promises'];\n dgram: typeof dgram;\n crypto: typeof crypto;\n dns: typeof dns;\n events: typeof events;\n http: typeof http;\n https: typeof https;\n http2: typeof http2;\n net: typeof net;\n os: typeof os;\n path: typeof path;\n util: typeof util;\n child_process: typeof child_process;\n stream: typeof stream;\n zlib: typeof zlib;\n suncalc: typeof suncalc;\n axios: typeof axios;\n wake_on_lan: typeof wake_on_lan;\n nodeSchedule: typeof nodeSchedule;\n};\n\n/**\n * List of forbidden Locations for a mirror directory\n * relative to the default data directory\n * ATTENTION: the same list is also located in index_m.html!!\n */\nconst forbiddenMirrorLocations: string[] = [\n 'backup-objects',\n 'files',\n 'backitup',\n '../backups',\n '../node_modules',\n '../log',\n];\n\nconst packageJson: Record = JSON.parse(readFileSync(`${__dirname}/../package.json`).toString());\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nlet webstormDebug: string | undefined;\n\nconst isCI = !!process.env.CI;\n\n// ambient declarations for typescript\nlet tsAmbient: Record;\n\n// TypeScript's scripts are only recompiled if their source hash changes.\n// If an adapter update fixes the compilation bugs, a user won't notice until the changes and re-save the script.\n// To avoid that, we also include the\n// adapter version and TypeScript version in the hash\nconst tsSourceHashBase = `versions:adapter=${packageJson.version},typescript=${packageJson.dependencies.typescript}`;\n\n// taken from here: https://stackoverflow.com/questions/11887934/how-to-check-if-dst-daylight-saving-time-is-in-effect-and-if-so-the-offset\nfunction dstOffsetAtDate(dateInput: Date): number {\n const fullYear: number = dateInput.getFullYear() | 0;\n // \"Leap Years are any year that can be exactly divided by 4 (2012, 2016, etc.)\n // except if it can be exactly divided by 100, then it isn't (2100, 2200, etc.)\n // except if it can be exactly divided by 400, then it is (2000, 2400)\"\n // (https://www.mathsisfun.com/leap-years.html).\n const isLeapYear: 1 | 0 = ((fullYear & 3) | ((fullYear / 100) & 3)) === 0 ? 1 : 0;\n // (fullYear & 3) = (fullYear % 4), but faster\n //Alternative:var isLeapYear=(new Date(currentYear,1,29,12)).getDate()===29?1:0\n const fullMonth: number = dateInput.getMonth() | 0;\n return (\n // 1. We know what the time since the Epoch really is\n +dateInput - // same as the dateInput.getTime() method\n // 2. We know what the time since the Epoch at the start of the year is\n +new Date(fullYear, 0) - // day defaults to 1 if not explicitly zeroed\n // 3. Now, subtract what we would expect the time to be if daylight savings\n // did not exist. This yields the time-offset due to daylight savings.\n // Calculate the day of the year in the Gregorian calendar\n // The code below works based upon the facts of signed right shifts\n // • (x) >> n: shifts n and fills in the n highest bits with 0s\n // • (-x) >> n: shifts n and fills in the n highest bits with 1s\n // (This assumes that x is a positive integer)\n ((((-1 + // the first day in the year is day 1\n (31 & (-fullMonth >> 4)) + // January // (-11)>>4 = -1\n ((28 + isLeapYear) & ((1 - fullMonth) >> 4)) + // February\n (31 & ((2 - fullMonth) >> 4)) + // March\n (30 & ((3 - fullMonth) >> 4)) + // April\n (31 & ((4 - fullMonth) >> 4)) + // May\n (30 & ((5 - fullMonth) >> 4)) + // June\n (31 & ((6 - fullMonth) >> 4)) + // July\n (31 & ((7 - fullMonth) >> 4)) + // August\n (30 & ((8 - fullMonth) >> 4)) + // September\n (31 & ((9 - fullMonth) >> 4)) + // October\n (30 & ((10 - fullMonth) >> 4)) + // November\n // There are no months past December: the year rolls into the next.\n // Thus, \"fullMonth\" is 0-based, so it will never be 12 in JavaScript\n\n (dateInput.getDate() | 0)) & // get day of the month\n 0xffff) *\n 24 *\n 60 + // 24 hours in a day, 60 minutes in an hour\n (dateInput.getHours() & 0xff) * 60 + // 60 minutes in an hour\n (dateInput.getMinutes() & 0xff)) |\n 0) *\n 60 *\n 1000 - // 60 seconds in a minute * 1000 milliseconds in a second\n (dateInput.getSeconds() & 0xff) * 1000 - // 1000 milliseconds in a second\n dateInput.getMilliseconds()\n );\n}\n\nconst regExGlobalOld = /_global$/;\nconst regExGlobalNew = /script\\.js\\.global\\./;\n\nfunction checkIsGlobal(obj: ioBroker.ScriptObject): boolean {\n return obj?.common && (regExGlobalOld.test(obj.common.name) || regExGlobalNew.test(obj._id));\n}\n\nfunction fileMatching(sub: FileSubscriptionResult, id: string, fileName: string): boolean {\n if (sub.idRegEx) {\n if (!sub.idRegEx.test(id)) {\n return false;\n }\n } else {\n if (sub.id !== id) {\n return false;\n }\n }\n if (sub.fileRegEx) {\n if (!sub.fileRegEx.test(fileName)) {\n return false;\n }\n } else {\n if (sub.fileNamePattern !== fileName) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNextTimeEvent(time: string, useNextDay?: boolean): Date {\n const now: Date = getAstroStartOfDay();\n const [timeHours, timeMinutes] = time.split(':');\n const nTimeHours = parseInt(timeHours, 10);\n const nTimeMinutes = parseInt(timeMinutes, 10);\n if (\n useNextDay &&\n (now.getHours() > nTimeHours || (now.getHours() === nTimeHours && now.getMinutes() > nTimeMinutes))\n ) {\n now.setDate(now.getDate() + 1);\n }\n\n now.setHours(nTimeHours);\n now.setMinutes(nTimeMinutes);\n\n return now;\n}\n\nfunction getAstroStartOfDay(): Date {\n const d = new Date();\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n d.setUTCHours(0);\n\n return d;\n}\n\nfunction formatHoursMinutesSeconds(date: Date): string {\n const h = String(date.getHours());\n const m = String(date.getMinutes());\n const s = String(date.getSeconds());\n\n return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`;\n}\n\n// Due to a npm bug, virtual-tsc may be hoisted to the top level node_modules, but\n// TypeScript may still be in the adapter level (https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794),\n// so we need to tell virtual-tsc where TypeScript is\nsetTypeScriptResolveOptions({\n paths: [require.resolve('typescript')],\n});\n\n// compiler instance for global JS declarations\nconst jsDeclarationServer: Server = new Server(jsDeclarationCompilerOptions, isCI ? false : undefined);\n/**\n * Stores the IDs of script objects whose change should be ignored because\n * the compiled source was just updated\n */\n\nconst HTTP_STATUS_TEXTS: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 429: 'Too Many Requests / Rate Limit',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\nfunction httpStatusText(code: number): string {\n return HTTP_STATUS_TEXTS[code] ?? `Error ${code}`;\n}\n\n/**\n * Resolves the correct http/https module based on the URL string.\n * Returns null if the URL is invalid.\n */\nfunction resolveRequestModule(url: string): { module: typeof https | typeof http; isHttps: boolean } | null {\n try {\n const { protocol } = new URL(url);\n const isHttps = protocol === 'https:';\n return { module: isHttps ? https : http, isHttps };\n } catch {\n return null;\n }\n}\n\nclass JavaScript extends Adapter {\n declare public config: JavaScriptAdapterConfig;\n\n private readonly context: JavascriptContext;\n\n private errorLogFunction: {\n error: (msg: string) => void;\n warn: (msg: string) => void;\n info: (msg: string) => void;\n debug: (msg: string) => void;\n silly: (msg: string) => void;\n } = {\n error: (msg: string) => console.error(msg),\n warn: (msg: string) => console.warn(msg),\n info: (msg: string) => console.log(msg),\n debug: (msg: string) => console.debug(msg),\n silly: (msg: string) => console.debug(msg),\n };\n\n private readonly mods: MODULES;\n\n private objectsInitDone = false;\n private statesInitDone = false;\n\n private objects: Record = {};\n private states: Record = {};\n private readonly interimStateValues: Record = {};\n private readonly stateIds: string[] = [];\n /** Fast O(1) lookup set – always kept in sync with stateIds */\n private readonly stateIdSet: Set = new Set();\n\n private readonly subscriptions: SubscriptionResult[] = [];\n /**\n * O(1) dispatch map for subscriptions with exact (non-wildcard) string IDs.\n * Always kept in sync with `subscriptions`.\n */\n private readonly subscriptionsMap: Map = new Map();\n /**\n * Subscriptions whose pattern.id is a RegExp, contains wildcards (*,?), or is undefined.\n * These must still be checked linearly on every state change.\n */\n private readonly subscriptionsWildcard: SubscriptionResult[] = [];\n private readonly subscriptionsFile: FileSubscriptionResult[] = [];\n private readonly subscriptionsObject: SubscribeObject[] = [];\n /** O(1) dispatch map for subscriptionsObject – pattern → subscribers */\n private readonly subscriptionsObjectMap: Map = new Map();\n /** IO-9: Cache for sendTo broadcast – adapterName → instance list, invalidated on object change */\n private readonly sendToInstanceCache: Map = new Map();\n private readonly subscribedPatterns: Record = {};\n private readonly subscribedPatternsFile: Record = {};\n private readonly adapterSubs: Record> = {};\n private readonly timers: { [scriptName: string]: JavascriptTimer[] } = {};\n /** Reverse-index: scriptName → Set of stateIds that have timers for this script – O(1) cleanup */\n private readonly timersByScript: Map> = new Map();\n /** O(1) Set for enum-id lookups – replaces sorted string[] array */\n private readonly _enums: Set = new Set();\n private readonly names: { [name: string]: string | string[] } = {}; // name: id\n /** Reverse map: id → name for O(1) getName() lookups */\n private readonly nameById: Map = new Map();\n private readonly scripts: Record = {};\n private password: string = '';\n private readonly messageBusHandlers: Record<\n string,\n Record void }[]>\n > = {};\n private readonly logSubscriptions: Record<\n string,\n {\n sandbox: SandboxType;\n cb: (info: LogMessage) => void;\n id: number;\n severity: ioBroker.LogLevel | '*';\n }[]\n > = {};\n private readonly tempDirectories: { [scriptName: string]: string } = {}; // name: path\n private readonly folderCreationVerifiedObjects: Record = {};\n\n /** if logs are subscribed or not */\n private logSubscribed = false;\n\n private timeSettings: {\n format12: boolean;\n leadingZeros: boolean;\n } = { format12: false, leadingZeros: true };\n\n private dayScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n private sunScheduleTimer: NodeJS.Timeout | null = null; // schedule for sun moment times\n private timeScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n\n private activeStr = ''; // enabled state prefix\n\n private mirror: Mirror | undefined;\n\n private stopCounters: Record = {};\n\n private setStateCountCheckInterval: NodeJS.Timeout | null = null;\n\n private globalScript = '';\n /** Generated declarations for global TypeScripts */\n private globalDeclarations = '';\n // Remember which definitions the global scripts\n // have access to, because it depends on the compilation order\n private knownGlobalDeclarationsByScript: Record = {};\n private globalScriptLines = 0;\n // compiler instance for typescript\n private tsServer: Server;\n\n private readonly ignoreObjectChange: Set = new Set();\n\n private debugState: DebugState = {\n scriptName: '',\n child: null,\n promiseOnEnd: null,\n paused: false,\n started: 0,\n running: false,\n };\n\n constructor(options: Partial = {}) {\n options = {\n ...options,\n name: 'javascript', // adapter name\n useFormatDate: true,\n /**\n * If the JS-Controller catches an unhandled error, this will be called,\n * so we have a chance to handle it ourselves.\n */\n error: (err: Error): boolean => {\n // Identify unhandled errors originating from callbacks in scripts\n // These are not caught by wrapping the execution code in try-catch\n if (err && typeof err.stack === 'string') {\n const scriptCodeMarkerIndex = err.stack.indexOf(SCRIPT_CODE_MARKER);\n if (scriptCodeMarkerIndex > -1) {\n // This is a script error\n let scriptName = err.stack.substring(scriptCodeMarkerIndex);\n scriptName = scriptName.substring(0, scriptName.indexOf(':'));\n this.logError(scriptName, 'Error:', err);\n\n // Leave the script running for now\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n // check if a path contains adaptername but not own node_module\n // this regex matched \"iobroker.javascript/\" if NOT followed by \"node_modules\"\n if (!err.stack.match(/iobroker\\.javascript[/\\\\](?!.*node_modules).*/g)) {\n // This is an error without any info on origin (mostly async errors like connection errors)\n // also consider it as being from a script\n this.log.error(\n 'An error happened which is most likely from one of your scripts, but the originating script could not be detected.',\n );\n this.log.error(`Error: ${err.message}`);\n this.log.error(err.stack);\n\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n }\n\n return false;\n },\n };\n\n super(options as AdapterOptions);\n\n this.on('objectChange', this.onObjectChange.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('ready', this.onReady.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.on('fileChange', this.onFileChange.bind(this));\n this.on('log', this.onLog.bind(this));\n\n this.mods = {\n fs: {} as ProtectFs,\n 'fs/promises': {} as ProtectFs['promises'],\n dgram,\n crypto,\n dns,\n events,\n http,\n https,\n http2,\n net,\n os,\n path,\n util,\n child_process,\n stream,\n zlib,\n\n suncalc,\n axios,\n wake_on_lan,\n nodeSchedule,\n };\n\n // check the webstorm debug and just debug modes\n let debugMode: string | undefined;\n if (process.argv) {\n for (let a = 1; a < process.argv.length; a++) {\n if (process.argv[a].startsWith('--webstorm')) {\n webstormDebug = process.argv[a].replace(/^(.*?=\\s*)/, '');\n }\n if (process.argv[a] === '--debugScript') {\n if (!process.argv[a + 1]) {\n console.log('No script name provided');\n process.exit(300);\n } else {\n debugMode = process.argv[a + 1];\n }\n }\n }\n }\n\n this.context = {\n mods: this.mods,\n objects: this.objects,\n states: this.states,\n interimStateValues: this.interimStateValues,\n stateIds: this.stateIds,\n errorLogFunction: this.errorLogFunction,\n subscriptions: this.subscriptions,\n subscriptionsMap: this.subscriptionsMap,\n subscriptionsWildcard: this.subscriptionsWildcard,\n subscriptionsFile: this.subscriptionsFile,\n subscriptionsObject: this.subscriptionsObject,\n subscriptionsObjectMap: this.subscriptionsObjectMap,\n sendToInstanceCache: this.sendToInstanceCache,\n subscribedPatterns: this.subscribedPatterns,\n subscribedPatternsFile: this.subscribedPatternsFile,\n adapterSubs: this.adapterSubs,\n cacheObjectEnums: {},\n timers: this.timers,\n timersByScript: this.timersByScript,\n enums: this._enums,\n names: this.names,\n scripts: this.scripts,\n messageBusHandlers: this.messageBusHandlers,\n logSubscriptions: this.logSubscriptions,\n tempDirectories: this.tempDirectories,\n folderCreationVerifiedObjects: this.folderCreationVerifiedObjects,\n\n isEnums: false, // If some subscription wants enum\n channels: null,\n devices: null,\n logWithLineInfo: this.logWithLineInfo.bind(this),\n scheduler: null,\n timerId: 0,\n rulesOpened: null, // opened rules\n language: this.language || 'en',\n\n updateLogSubscriptions: this.updateLogSubscriptions.bind(this),\n convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),\n updateObjectContext: this.updateObjectContext.bind(this),\n prepareStateObject: this.prepareStateObject.bind(this),\n debugMode,\n getAbsoluteDefaultDataDir,\n adapter: this as unknown as ioBroker.Adapter,\n logError: this.logError.bind(this),\n allowSelfSignedCerts: false,\n };\n\n this.tsServer = new Server(tsCompilerOptions, this.tsLog);\n }\n\n async onObjectChange(id: string, obj?: ioBroker.Object | null): Promise {\n // Check if we should ignore this change (once!) because we just updated the compiled sources\n if (this.ignoreObjectChange.has(id)) {\n // Update the cached script object and do nothing more\n this.objects[id] = obj as ioBroker.Object;\n this.ignoreObjectChange.delete(id);\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.objectsInitDone) {\n if (obj) {\n this.objects[id] = obj;\n }\n return;\n }\n\n if (id.startsWith('enum.')) {\n // clear cache\n this.context.cacheObjectEnums = {};\n\n // update this._enums Set\n if (obj) {\n this._enums.add(id);\n } else {\n this._enums.delete(id);\n }\n }\n\n // IO-9: Invalidate sendTo instance-cache when adapter instances change\n if (id.startsWith('system.adapter.')) {\n const parts = id.split('.');\n if (parts.length >= 3) {\n const adapterName = parts[2]; // e.g. \"zigbee\" from \"system.adapter.zigbee.0\"\n this.sendToInstanceCache.delete(adapterName);\n }\n }\n\n if (id === 'system.config' && obj?.common?.language) {\n // set language for debug messages\n setLanguage(obj.common.language);\n this.language = obj.common.language;\n this.context.language = this.language as ioBroker.Languages;\n }\n\n // update stored time format for variables.dayTime\n if (id === `${this.namespace}.variables.dayTime` && obj?.native) {\n this.timeSettings.format12 = obj.native.format12 || false;\n this.timeSettings.leadingZeros = obj.native.leadingZeros === undefined ? true : obj.native.leadingZeros;\n }\n\n // send changes to the disk mirror\n this.mirror?.onObjectChange(id, obj as ioBroker.ScriptObject | null);\n\n const formerObj = this.objects[id];\n\n this.updateObjectContext(id, obj); // Update all Meta object data\n\n // for the alias object changes on the state objects, we need to manually update the\n // state cache value, because the new value is only published on the next change\n if (obj?.type === 'state' && id.startsWith('alias.0.')) {\n // execute async for speed\n this.getForeignStateAsync(id)\n .then(state => {\n if (state) {\n this.states[id] = state;\n } else if (this.states[id] !== undefined) {\n delete this.states[id];\n }\n })\n .catch(() => {\n /* ignore */\n });\n }\n\n // O(1) dispatch via pattern map instead of O(n) forEach\n const objSubs = this.subscriptionsObjectMap.get(id);\n if (objSubs) {\n for (const sub of objSubs) {\n try {\n sub.callback(id, obj);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n\n // handle Script object updates\n if (!obj && formerObj?.type === 'script') {\n // Object Deleted just now\n if (checkIsGlobal(formerObj)) {\n // it was a global Script, and it was enabled and is now deleted => restart adapter\n if (formerObj.common.enabled) {\n this.log.info(`Active global Script ${id} deleted. Restart instance.`);\n this.restart();\n }\n } else if (formerObj.common?.engine === `system.adapter.${this.namespace}`) {\n // It was a non-global Script and deleted => stop and remove it\n await this.stopScript(id);\n\n // delete scriptEnabled.blabla variable\n const idActive = `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idActive);\n await this.delObjectAsync(idActive);\n\n // delete scriptProblem.blabla variable\n const idProblem = `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idProblem);\n await this.delObjectAsync(idProblem);\n }\n } else if (!formerObj && obj?.type === 'script') {\n // New script that does not exist before\n if (checkIsGlobal(obj)) {\n // new global script added => restart adapter\n if (obj.common.enabled) {\n this.log.info(`Active global Script ${id} created. Restart instance.`);\n this.restart();\n }\n } else if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // new non-global script - create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n if (obj.common.enabled) {\n // if enabled => Start a script\n await this.loadScriptById(id);\n }\n }\n } else if (obj?.type === 'script' && formerObj?.common) {\n // Script changed ...\n if (checkIsGlobal(obj)) {\n if (obj.common.enabled || formerObj.common.enabled) {\n this.log.info(`Global Script ${id} updated. Restart instance.`);\n this.restart();\n }\n } else {\n // No global script\n if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n }\n\n if (\n (formerObj.common.enabled && !obj.common.enabled) ||\n (formerObj.common.engine === `system.adapter.${this.namespace}` &&\n obj.common.engine !== `system.adapter.${this.namespace}`)\n ) {\n // Script disabled\n if (formerObj.common.enabled && formerObj.common.engine === `system.adapter.${this.namespace}`) {\n // Remove it from executing\n await this.stopScript(id);\n }\n } else if (\n (!formerObj.common.enabled && obj.common.enabled) ||\n (formerObj.common.engine !== `system.adapter.${this.namespace}` &&\n obj.common.engine === `system.adapter.${this.namespace}`)\n ) {\n // Script enabled\n\n if (obj.common.enabled && obj.common.engine === `system.adapter.${this.namespace}`) {\n // Start script\n await this.loadScriptById(id);\n }\n } else if (\n obj.common.engine === `system.adapter.${this.namespace}` ||\n formerObj.common.engine === `system.adapter.${this.namespace}`\n ) {\n // Source changed => restart the script (only on the relevant instance)\n this.stopCounters[id] = this.stopCounters[id] ? this.stopCounters[id] + 1 : 1;\n void this.stopScript(id).then(() => {\n // only start again after stop when \"last\" object change to prevent problems on\n // multiple changes in fast frequency\n if (!--this.stopCounters[id]) {\n void this.loadScriptById(id);\n }\n });\n }\n }\n }\n }\n\n onStateChange(id: string, state?: ioBroker.State | null): void {\n if (this.interimStateValues[id] !== undefined) {\n // any update invalidates the remembered interim value\n delete this.interimStateValues[id];\n }\n if (!id || id.startsWith('messagebox.') || id.startsWith('log.')) {\n return;\n }\n\n if (id === `${this.namespace}.debug.to` && state && !state.ack) {\n if (!this.context.debugMode) {\n this.debugSendToInspector(state.val);\n }\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.statesInitDone) {\n if (state) {\n this.states[id] = state;\n }\n return;\n }\n\n const oldState: ioBroker.State | null | undefined = this.states[id];\n if (state) {\n if (oldState) {\n // enable or disable script\n if (!state.ack && id.startsWith(this.activeStr) && this.objects[id]?.native?.script) {\n void this.extendForeignObject(this.objects[id].native.script, {\n common: { enabled: state.val },\n });\n }\n\n // monitor if the adapter is alive and send all subscriptions once more, after the adapter goes online\n if (/*oldState && */ oldState.val === false && state.val && id.endsWith('.alive')) {\n if (this.adapterSubs[id]) {\n const parts = id.split('.');\n const a = `${parts[2]}.${parts[3]}`;\n for (const sub of this.adapterSubs[id]) {\n this.log.info(`Detected coming adapter \"${a}\". Send subscribe: ${sub}`);\n this.sendTo(a, 'subscribe', sub);\n }\n }\n }\n } else if (/*!oldState && */ !this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n this.states[id] = state;\n } else {\n if (oldState) {\n delete this.states[id];\n }\n state = {} as ioBroker.State;\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n }\n\n // Collect matching subscriptions:\n // 1. O(1) exact-id map lookup – only buckets for this specific state id\n // 2. Linear scan over wildcard/regex subscriptions (unavoidable)\n // EventObj is created lazily – only when at least one subscription must be dispatched.\n const exactSubs = this.subscriptionsMap.get(id);\n const wildcardSubs = this.subscriptionsWildcard;\n const hasWork = (exactSubs && exactSubs.length > 0) || wildcardSubs.length > 0;\n\n if (!hasWork) {\n return;\n }\n\n let _eventObj: EventObj | null = null;\n const getEvent = (): EventObj => {\n if (!_eventObj) {\n _eventObj = createEventObject(\n this.context,\n id,\n this.convertBackStringifiedValues(id, state),\n this.convertBackStringifiedValues(id, oldState),\n );\n }\n return _eventObj;\n };\n\n if (exactSubs) {\n for (let i = 0, l = exactSubs.length; i < l; i++) {\n const sub = exactSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n // if this state matches any subscriptions\n for (let i = 0, l = wildcardSubs.length; i < l; i++) {\n const sub = wildcardSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n onFileChange(id: string, fileName: string, size: number | null): void {\n // if this file matches any subscriptions\n for (let i = 0, l = this.subscriptionsFile.length; i < l; i++) {\n const sub = this.subscriptionsFile[i];\n if (sub && fileMatching(sub, id, fileName)) {\n try {\n sub.callback(id, fileName, size, sub.withFile);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n async onUnload(callback: () => void): Promise {\n try {\n await this.debugStop();\n this.stopTimeSchedules();\n if (this.setStateCountCheckInterval) {\n clearInterval(this.setStateCountCheckInterval);\n this.setStateCountCheckInterval = null;\n }\n await this.stopAllScripts();\n } catch (err: unknown) {\n this.log.error(`Error during unload: ${(err as Error).message}`);\n } finally {\n if (typeof callback === 'function') {\n callback();\n }\n }\n }\n\n async onReady(): Promise {\n this.errorLogFunction = this.log;\n this.context.errorLogFunction = this.log;\n this.config.maxSetStatePerMinute = parseInt(this.config.maxSetStatePerMinute as unknown as string, 10) || 1000;\n this.config.maxTriggersPerScript = parseInt(this.config.maxTriggersPerScript as unknown as string, 10) || 100;\n\n if (this.supportsFeature?.('PLUGINS')) {\n const sentryInstance: InstanceType = this.getPluginInstance('sentry') as InstanceType<\n typeof SentryPlugin\n >;\n if (sentryInstance) {\n const Sentry = sentryInstance.getSentryObject();\n Sentry?.withScope(scope => {\n scope.addEventProcessor((event, _hint) => {\n if (event.exception?.values?.[0]) {\n const eventData = event.exception.values[0];\n if (\n eventData.stacktrace?.frames &&\n Array.isArray(eventData.stacktrace.frames) &&\n eventData.stacktrace.frames.length\n ) {\n // Exclude event if script Marker is included\n if (\n eventData.stacktrace.frames.find(frame =>\n frame.filename?.includes(SCRIPT_CODE_MARKER),\n )\n ) {\n return null;\n }\n // Exclude event if own directory is included but not inside own node_modules\n const ownNodeModulesDir = join(__dirname, 'node_modules');\n if (\n !eventData.stacktrace.frames.find(\n frame =>\n frame.filename?.includes(__dirname) &&\n !frame.filename.includes(ownNodeModulesDir),\n )\n ) {\n return null;\n }\n // We have exception data and did not sort it out, so report it\n return event;\n }\n }\n\n // No exception in it ... do not report\n return null;\n });\n });\n }\n }\n\n await this.main();\n }\n\n onMessage(obj: ioBroker.Message): void {\n switch (obj?.command) {\n // process messageTo commands\n case 'toScript':\n case 'jsMessageBus':\n if (\n obj.message &&\n (obj.message.instance === null ||\n obj.message.instance === undefined ||\n `javascript.${obj.message.instance}` === this.namespace ||\n obj.message.instance === this.namespace)\n ) {\n Object.keys(this.messageBusHandlers).forEach(name => {\n // the script name could be script.js.xxx or only xxx\n if (\n (!obj.message.script || obj.message.script === name) &&\n this.messageBusHandlers[name][obj.message.message]\n ) {\n this.messageBusHandlers[name][obj.message.message].forEach(handler => {\n const sandbox = handler.sandbox;\n\n sandbox.verbose && sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');\n\n try {\n if (obj.callback) {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n\n this.sendTo(obj.from, obj.command, result, obj.callback);\n });\n } else {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n sandbox.verbose &&\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n });\n }\n } catch (err: unknown) {\n void this.setState(\n `scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`,\n true,\n true,\n );\n this.logError(name, 'Error in callback:', err as Error);\n }\n });\n }\n });\n }\n break;\n\n case 'loadTypings': {\n // Load typings for the editor\n const typings: Record = {};\n\n // try to load TypeScript lib files from disk\n try {\n const typescriptLibs = resolveTypescriptLibs(targetTsLib);\n Object.assign(typings, typescriptLibs);\n } catch {\n /* ok, no lib then */\n }\n\n // provide the already-loaded ioBroker typings and global script declarations\n Object.assign(typings, tsAmbient);\n\n // also provide the known global declarations for each global script\n for (const globalScriptPaths of Object.keys(this.knownGlobalDeclarationsByScript)) {\n typings[`${globalScriptPaths}.d.ts`] = this.knownGlobalDeclarationsByScript[globalScriptPaths];\n }\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { typings }, obj.callback);\n }\n break;\n }\n\n case 'calcAstroAll': {\n if (obj.message) {\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n let astroEvents: GetTimesResult & { nextSunrise: Date; nextSunset: Date } = {} as GetTimesResult & {\n nextSunrise: Date;\n nextSunset: Date;\n };\n try {\n astroEvents = this.mods.suncalc.getTimes(today, latitude, longitude);\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n if (astroEvents) {\n try {\n astroEvents.nextSunrise = this.getAstroEvent(\n today,\n obj.message.sunriseEvent || this.config.sunriseEvent,\n obj.message.sunriseLimitStart || this.config.sunriseLimitStart,\n obj.message.sunriseLimitEnd || this.config.sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n astroEvents.nextSunset = this.getAstroEvent(\n today,\n obj.message.sunsetEvent || this.config.sunsetEvent,\n obj.message.sunsetLimitStart || this.config.sunsetLimitStart,\n obj.message.sunsetLimitEnd || this.config.sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n }\n\n const result: Record = {};\n const keys = Object.keys(astroEvents).sort(\n (a, b) =>\n (astroEvents as unknown as Record)[a] -\n (astroEvents as unknown as Record)[b],\n );\n keys.forEach(key => {\n const validDate =\n (astroEvents as unknown as Record)[key] !== null &&\n !isNaN((astroEvents as unknown as Record)[key].getTime());\n\n result[key] = {\n isValidDate: validDate,\n serverTime: validDate\n ? formatHoursMinutesSeconds((astroEvents as unknown as Record)[key])\n : 'n/a',\n date: validDate\n ? (astroEvents as unknown as Record)[key].toISOString()\n : 'n/a',\n };\n });\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, result, obj.callback);\n }\n }\n break;\n }\n\n case 'calcAstro': {\n if (obj.message) {\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n\n const sunriseEvent = obj.message?.sunriseEvent || this.config.sunriseEvent;\n const sunriseLimitStart = obj.message?.sunriseLimitStart || this.config.sunriseLimitStart;\n const sunriseLimitEnd = obj.message?.sunriseLimitEnd || this.config.sunriseLimitEnd;\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const nextSunrise = this.getAstroEvent(\n today,\n sunriseEvent,\n sunriseLimitStart,\n sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n\n const sunsetEvent = obj.message?.sunsetEvent || this.config.sunsetEvent;\n const sunsetLimitStart = obj.message?.sunsetLimitStart || this.config.sunsetLimitStart;\n const sunsetLimitEnd = obj.message?.sunsetLimitEnd || this.config.sunsetLimitEnd;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const nextSunset = this.getAstroEvent(\n today,\n sunsetEvent,\n sunsetLimitStart,\n sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n\n const validDateSunrise = nextSunrise !== null && !isNaN(nextSunrise.getTime());\n const validDateSunset = nextSunset !== null && !isNaN(nextSunset.getTime());\n\n this.log.debug(\n `calcAstro sunrise: ${sunriseEvent} -> start ${sunriseLimitStart}, end: ${sunriseLimitEnd}, offset: ${sunriseOffset} - ${validDateSunrise ? nextSunrise.toISOString() : 'n/a'}`,\n );\n this.log.debug(\n `calcAstro sunset: ${sunsetEvent} -> start ${sunsetLimitStart}, end: ${sunsetLimitEnd}, offset: ${sunsetOffset} - ${validDateSunset ? nextSunset.toISOString() : 'n/a'}`,\n );\n\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n nextSunrise: {\n isValidDate: validDateSunrise,\n serverTime: validDateSunrise ? formatHoursMinutesSeconds(nextSunrise) : 'n/a',\n date: nextSunrise.toISOString(),\n },\n nextSunset: {\n isValidDate: validDateSunset,\n serverTime: validDateSunset ? formatHoursMinutesSeconds(nextSunset) : 'n/a',\n date: nextSunset.toISOString(),\n },\n },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'debug': {\n if (!this.context.debugMode) {\n this.debugStart(obj.message);\n }\n break;\n }\n\n case 'debugStop': {\n if (!this.context.debugMode) {\n void this.debugStop().then(() => console.log('stopped'));\n }\n break;\n }\n\n case 'rulesOn': {\n this.context.rulesOpened = obj.message;\n console.log(`Enable messaging for ${this.context.rulesOpened}`);\n break;\n }\n\n case 'rulesOff': {\n // maybe if (context.rulesOpened === obj.message)\n console.log(`Disable messaging for ${this.context.rulesOpened}`);\n this.context.rulesOpened = null;\n break;\n }\n\n case 'getIoBrokerDataDir': {\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n dataDir: getAbsoluteDefaultDataDir(),\n sep,\n },\n obj.callback,\n );\n }\n break;\n }\n\n case 'chatCompletion': {\n // Proxy chat completion requests to an OpenAI-compatible API endpoint.\n // API keys are resolved server-side from encryptedNative config — they never\n // leave the adapter (frontend only sends `provider`, not the key).\n if (obj.callback) {\n const chatModel = (obj.message?.model || '').trim();\n const messages = obj.message?.messages;\n const tools = obj.message?.tools;\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = resolveProviderCredentials(this.config, provider, obj.message?.baseUrl);\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n break;\n }\n if (!chatModel || !messages) {\n this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback);\n break;\n }\n\n let url: string;\n const chatHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n let bodyObj: Record;\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/messages';\n chatHeaders['x-api-key'] = apiKey;\n chatHeaders['anthropic-version'] = '2023-06-01';\n // Translate OpenAI-format messages/tools into Anthropic's content-block format.\n const { system: systemText, messages: anthropicMessages } =\n translateMessagesToAnthropic(messages);\n const anthropicTools = tools?.length ? translateToolsToAnthropic(tools) : [];\n bodyObj = {\n model: chatModel,\n max_tokens: 8192,\n stream: false,\n ...(systemText ? { system: systemText } : {}),\n messages: anthropicMessages,\n ...(anthropicTools.length ? { tools: anthropicTools } : {}),\n };\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions';\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/chat/completions';\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/chat/completions`;\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = {\n model: chatModel,\n messages,\n stream: false,\n ...(tools?.length ? { tools } : {}),\n // Disable thinking/reasoning for local models to save context and speed\n ...(baseUrl ? { reasoning_effort: 'none' } : {}),\n };\n }\n\n const body = JSON.stringify(bodyObj);\n const bodyBuffer = Buffer.from(body, 'utf8');\n chatHeaders['Content-Length'] = bodyBuffer.length;\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n break;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'POST',\n headers: chatHeaders,\n timeout: 600000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n let content: string;\n let tool_calls: unknown;\n if (provider === 'anthropic') {\n const translated = translateAnthropicResponseToOpenAI(parsed);\n content = translated.content;\n tool_calls = translated.tool_calls;\n } else {\n const message = parsed.choices?.[0]?.message;\n content = message?.content || '';\n tool_calls = message?.tool_calls;\n }\n if (!content && !(tool_calls as unknown[] | undefined)?.length) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Empty response from API' },\n obj.callback,\n );\n } else {\n this.sendTo(\n obj.from,\n obj.command,\n {\n success: true,\n content,\n ...(tool_calls ? { tool_calls } : {}),\n },\n obj.callback,\n );\n }\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else {\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (600s)' }, obj.callback);\n });\n\n req.write(bodyBuffer);\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'testApiConnection': {\n // Test connection to an OpenAI-compatible API endpoint.\n // The settings-dialog Test button sends the current form value as `apiKey`\n // (so users can test before saving); otherwise we fall back to the stored key.\n if (obj.callback) {\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = resolveTestCredentials(\n this.config,\n provider,\n obj.message?.apiKey,\n obj.message?.baseUrl,\n );\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n break;\n }\n\n let url: string;\n const testHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/models';\n testHeaders['x-api-key'] = apiKey;\n testHeaders['anthropic-version'] = '2023-06-01';\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/models';\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/models';\n testHeaders.Authorization = `Bearer ${apiKey}`;\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/models`;\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n break;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'GET',\n headers: testHeaders,\n timeout: 10000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n const models: string[] = (parsed.data || [])\n .map((m: { id: string }) =>\n m.id.startsWith('models/') ? m.id.substring(7) : m.id,\n )\n .sort();\n this.sendTo(\n obj.from,\n obj.command,\n { success: true, models, count: models.length },\n obj.callback,\n );\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else if (res.statusCode === 401) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid API key (401)' },\n obj.callback,\n );\n } else if (res.statusCode === 403) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Access denied (403)' },\n obj.callback,\n );\n } else {\n // Include response body for debugging\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (10s)' }, obj.callback);\n });\n\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'getAvailableAiProviders': {\n // Reports which AI providers have stored credentials (keys never leave the backend).\n if (obj.callback) {\n const providers = listAvailableProviders(this.config);\n this.sendTo(obj.from, obj.command, { providers }, obj.callback);\n }\n break;\n }\n\n case 'prettier': {\n // Format the code with Prettier\n if (obj.message && typeof obj.message.code === 'string') {\n try {\n prettier\n .format(obj.message.code, {\n parser: obj.message.type === 'typescript' ? 'babel-ts' : 'babel',\n printWidth: 120,\n semi: true,\n tabWidth: 4,\n useTabs: false,\n trailingComma: 'all',\n singleQuote: true,\n singleAttributePerLine: true,\n endOfLine: 'lf',\n bracketSpacing: true,\n arrowParens: 'avoid',\n quoteProps: 'as-needed',\n })\n .then(formattedCode => {\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { code: formattedCode }, obj.callback);\n } else {\n this.logWithLineInfo(`Formatted code:\\n${formattedCode}`);\n }\n })\n .catch(e => {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n });\n } catch (e) {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n }\n } else {\n this.sendTo(obj.from, obj.command, { error: 'No code provided' }, obj.callback);\n }\n break;\n }\n }\n }\n\n onLog(msg: any): void {\n for (const name of Object.keys(this.logSubscriptions)) {\n for (const handler of this.logSubscriptions[name]) {\n if (\n typeof handler.cb === 'function' &&\n (handler.severity === '*' || handler.severity === msg.severity)\n ) {\n handler.sandbox.logHandler = handler.severity || '*';\n handler.cb.call(handler.sandbox, msg);\n handler.sandbox.logHandler = undefined;\n }\n }\n }\n }\n\n logError(scriptName: string, msg: string, e: Error, offs?: number): void {\n const stack = e.stack ? e.stack.toString().split('\\n') : e ? e.toString() : '';\n if (!msg.includes('\\n')) {\n msg = msg.replace(/[: ]*$/, ': ');\n }\n if (!msg.endsWith(' ')) {\n msg += ':';\n }\n if (!scriptName.startsWith(SCRIPT_CODE_MARKER)) {\n scriptName = SCRIPT_CODE_MARKER + scriptName;\n }\n\n this.errorLogFunction.error(`${scriptName}: ${msg}${this.fixLineNo(stack[0])}`);\n for (let i = offs || 1; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.error(`${scriptName}: ${this.fixLineNo(stack[i])}`);\n }\n }\n\n logWithLineInfo(msg: string): void {\n this.errorLogFunction.warn(msg);\n\n // get current error stack\n const stack = new Error().stack?.split('\\n');\n\n if (stack) {\n for (let i = 3; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInContext|runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.warn(this.fixLineNo(stack[i]));\n }\n }\n }\n\n async main(): Promise {\n // Patch the font as it sometimes is wrong\n if (!this.context.debugMode) {\n if (await this.patchFont()) {\n this.log.debug('Font patched');\n }\n }\n\n this.log.debug(`config.subscribe (Do not subscribe all states on start): ${this.config.subscribe}`);\n\n // correct jsonConfig for admin\n const instObj: ioBroker.InstanceObject | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (instObj?.common) {\n if (instObj.common.adminUI?.config !== 'json') {\n if (instObj.common.adminUI) {\n instObj.common.adminUI.config = 'json';\n } else {\n instObj.common.adminUI = { config: 'json' };\n }\n void this.setForeignObject(instObj._id, instObj);\n }\n }\n\n if (webstormDebug) {\n this.errorLogFunction = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n debug: console.log,\n silly: console.log,\n };\n this.context.errorLogFunction = this.errorLogFunction;\n }\n this.activeStr = `${this.namespace}.scriptEnabled.`;\n\n this.mods.fs = new ProtectFs(this.log, getAbsoluteDefaultDataDir());\n this.mods['fs/promises'] = this.mods.fs.promises; // to avoid require('fs/promises');\n\n // try to read TS declarations\n try {\n tsAmbient = {\n 'javascript.d.ts': readFileSync(this.mods.path.join(__dirname, 'lib/javascript.d.ts'), 'utf8'),\n };\n this.tsServer.provideAmbientDeclarations(tsAmbient);\n jsDeclarationServer.provideAmbientDeclarations(tsAmbient);\n } catch (err: unknown) {\n this.log.warn(`Could not read TypeScript ambient declarations: ${err as Error}`);\n // This should not happen, so send an error report to Sentry\n if (this.supportsFeature && this.supportsFeature('PLUGINS')) {\n const sentryInstance = this.getPluginInstance('sentry');\n if (sentryInstance) {\n const sentryObject = sentryInstance.getSentryObject();\n sentryObject?.captureException(err as Error);\n }\n }\n // Keep the adapter from crashing when the included typings cannot be read\n tsAmbient = {};\n }\n\n await this.installLibraries();\n // Load the TS declarations for Node.js and all 3rd party modules\n this.loadTypeScriptDeclarations();\n\n await this.getData();\n this.context.scheduler = new Scheduler(\n this.log,\n Date,\n this.mods.suncalc,\n this.config.latitude,\n this.config.longitude,\n );\n await this.dayTimeSchedules();\n await this.sunTimeSchedules();\n await this.timeSchedule();\n\n // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it\n // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode)\n this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts;\n\n const doc = await this.getObjectViewAsync('script', 'javascript', {});\n if (doc?.rows?.length) {\n // sort global scripts if configured\n if (this.config.sortGlobalScriptsAlphabetically) {\n doc.rows.sort((a, b) => a.value._id.localeCompare(b.value._id));\n }\n // assemble global script\n for (let g = 0; g < doc.rows.length; g++) {\n const obj = doc.rows[g].value;\n if (checkIsGlobal(obj)) {\n if (obj && obj.common) {\n const engineType = (obj.common.engineType || '').toLowerCase();\n\n if (obj.common.enabled) {\n if (engineType.startsWith('typescript')) {\n // TypeScript\n this.log.info(`${obj._id}: compiling TypeScript source...`);\n // In order to compile global TypeScript, we need to do some transformations\n // 1. For top-level-await, some statements must be wrapped in an immediately-invoked async function\n // 2. If any global script uses `import`, the declarations are no longer visible if they are not exported with `declare global`\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, true);\n // The source code must be transformed in order to support top level await\n // Global scripts must not be treated as a module, otherwise their methods\n // cannot be found by the normal scripts\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash: string = hashSource(\n tsSourceHashBase + this.globalDeclarations + transformedSource,\n );\n\n let compiled: string | undefined;\n let declarations: string | undefined;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n declarations = obj.common.declarations;\n this.log.info(\n `${obj._id}: source code did not change, using cached compilation result...`,\n );\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n continue;\n }\n\n const errors = tsCompiled.diagnostics\n .map(diag => `${diag.annotatedSource}\\n`)\n .join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(\n `${obj._id}: TypeScript compilation completed with errors:\\n${errors}`,\n );\n } else {\n this.log.info(`${obj._id}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result;\n // Global scripts that have been transformed to support `import` need to have their declarations transformed aswell\n declarations = transformGlobalDeclarations(tsCompiled.declarations || '');\n\n const newCommon: {\n compiled: string | undefined;\n declarations?: string;\n sourceHash: string;\n } = {\n sourceHash,\n compiled,\n };\n if (declarations) {\n newCommon.declarations = declarations;\n }\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(obj._id); // ignore the next change and don't restart scripts\n void this.extendForeignObject(obj._id, {\n common: newCommon,\n });\n } else {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${errors}`);\n continue;\n }\n }\n this.globalScript += `${compiled}\\n`;\n // if declarations were generated, remember them\n if (declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, declarations);\n }\n } else {\n // javascript\n const sourceCode = obj.common.source;\n this.globalScript += `${sourceCode}\\n`;\n\n // try to compile the declarations so TypeScripts can use\n // functions defined in global JavaScripts\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = jsDeclarationServer.compile(filename, sourceCode);\n } catch (err: unknown) {\n this.log.warn(\n `${obj._id}: Error while generating type declarations, skipping:\\n${err as Error}`,\n );\n continue;\n }\n // if declarations were generated, remember them\n if (tsCompiled.success && tsCompiled.declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, tsCompiled.declarations);\n }\n }\n }\n }\n }\n }\n }\n\n this.globalScript = this.globalScript.replace(/\\r\\n/g, '\\n');\n this.globalScriptLines = this.globalScript.split(/\\n/g).length - 1;\n\n if (doc?.rows?.length) {\n // load all scripts\n for (let i = 0; i < doc.rows.length; i++) {\n if (!checkIsGlobal(doc.rows[i].value)) {\n void this.loadScript(doc.rows[i].value);\n }\n }\n }\n\n if (this.config.mirrorPath?.trim()) {\n this.config.mirrorInstance = parseInt(this.config.mirrorInstance as unknown as string, 10) || 0;\n if (this.instance === this.config.mirrorInstance) {\n const ioBDataDir = getAbsoluteDefaultDataDir() + sep;\n this.config.mirrorPath = normalize(this.config.mirrorPath);\n let mirrorForbidden = false;\n for (let dir of forbiddenMirrorLocations) {\n dir = join(ioBDataDir, dir) + sep;\n if (dir.includes(this.config.mirrorPath) || this.config.mirrorPath.startsWith(dir)) {\n this.log.error(`The Mirror directory is not allowed to be a central ioBroker directory!`);\n this.log.error(`Directory ${this.config.mirrorPath} is not allowed to mirror files!`);\n mirrorForbidden = true;\n break;\n }\n }\n if (!mirrorForbidden) {\n this.mirror = new Mirror({\n adapter: this,\n log: this.log,\n diskRoot: this.config.mirrorPath,\n });\n }\n }\n }\n\n // Check setState counter per minute and stop a script if too high\n this.setStateCountCheckInterval = setInterval(() => {\n for (const id of Object.keys(this.scripts)) {\n if (!this.scripts[id]) {\n continue;\n }\n const currentSetStatePerMinuteCounter = this.scripts[id].setStatePerMinuteCounter;\n this.scripts[id].setStatePerMinuteCounter = 0;\n if (currentSetStatePerMinuteCounter > this.config.maxSetStatePerMinute) {\n this.scripts[id].setStatePerMinuteProblemCounter++;\n this.log.debug(\n `${id}: Script has reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute in ${this.scripts[id].setStatePerMinuteProblemCounter} consecutive minutes`,\n );\n // Allow \"too high counters\" for 1 minute for script starts or such and only\n // stop the script when lasts longer\n if (this.scripts[id].setStatePerMinuteProblemCounter > 1) {\n this.log.error(\n `${id}: Script is calling setState more than ${this.config.maxSetStatePerMinute} times per minute! Stopping Script now! Please check your script!`,\n );\n void this.stopScript(id);\n }\n } else if (this.scripts[id].setStatePerMinuteProblemCounter > 0) {\n this.scripts[id].setStatePerMinuteProblemCounter--;\n this.log.debug(\n `Script ${id} has NOT reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute. Decrease problem counter to ${this.scripts[id].setStatePerMinuteProblemCounter}`,\n );\n }\n }\n }, 60_000).unref();\n }\n\n private loadTypeScriptDeclarations(): void {\n // try to load the typings on disk for all 3rd party modules\n const packages = [\n 'node', // this provides auto-completion for most builtins\n '@iobroker/types', // this provides auto-completion for most builtins\n ];\n // Also include user-selected libraries (but only those that are also installed)\n if (typeof this.config?.libraries === 'string' && typeof this.config.libraryTypings === 'string') {\n const installedLibs = this.config.libraries\n .split(/[,;\\s]+/)\n .map(s => s.trim().split('@')[0])\n .filter(s => !!s);\n\n const wantsTypings = this.config.libraryTypings\n .split(/[,;\\s]+/)\n .map(s => s.trim())\n .filter(s => !!s);\n\n // O(1) lookups – avoids O(n²) Array.includes inside loops\n const installedSet = new Set(installedLibs);\n const wantsSet = new Set(wantsTypings);\n const packagesSet = new Set(packages);\n\n // Add all installed libraries the user has requested typings for to the list of packages\n for (const lib of installedLibs) {\n if (wantsSet.has(lib) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n // Some packages have submodules (e.g., rxjs/operators) that are not exposed through the main entry point\n // If typings are requested for them, also add them if the base module is installed\n for (const lib of wantsTypings) {\n // Extract the package name and check if we need to add it\n if (!lib.includes('/')) {\n continue;\n }\n const pkgName = lib.substring(0, lib.indexOf('/'));\n\n if (installedSet.has(pkgName) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n }\n for (const pkg of packages) {\n let pkgTypings = resolveTypings(\n pkg,\n this.getAdapterScopedPackageIdentifier ? this.getAdapterScopedPackageIdentifier(pkg) : pkg,\n // node needs ambient typings, so we don't wrap it in declare module\n pkg !== 'node',\n );\n if (!pkgTypings) {\n // Create the empty dummy declarations so users don't get the \"not found\" error\n // for installed packages\n if (pkg.includes('/')) {\n pkgTypings = {\n [`node_modules/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n } else {\n pkgTypings = {\n [`node_modules/@types/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n }\n }\n this.log.debug(`Loaded TypeScript definitions for \"${pkg}\": ${JSON.stringify(Object.keys(pkgTypings))}`);\n // remember the declarations for the editor\n Object.assign(tsAmbient, pkgTypings);\n // and give the language servers access to them\n this.tsServer.provideAmbientDeclarations(pkgTypings);\n jsDeclarationServer.provideAmbientDeclarations(pkgTypings);\n }\n }\n\n updateObjectContext(id: string, obj: ioBroker.Object | null | undefined): void {\n if (obj) {\n // add state to state ID's list\n if (obj.type === 'state') {\n if (!this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn] ||= new Set();\n this.context.channels[chn].add(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev] ||= new Set();\n this.context.devices[dev].add(id);\n }\n }\n } else {\n // delete object from state ID's list\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn]?.delete(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev]?.delete(id);\n }\n\n delete this.folderCreationVerifiedObjects[id];\n }\n\n if (!obj && this.objects[id]) {\n // objects were deleted\n this.removeFromNames(id);\n delete this.objects[id];\n } else if (obj && !this.objects[id]) {\n // object was added\n this.objects[id] = obj;\n this.addToNames(obj);\n } else if (obj && this.objects[id].common) {\n // Object just changed\n this.objects[id] = obj;\n\n const n = this.getName(id);\n let nn = this.objects[id].common ? this.objects[id].common.name : '';\n\n if (nn && typeof nn === 'object') {\n nn = nn[getLanguage()] || nn.en;\n }\n\n if (n !== nn) {\n if (n) {\n this.removeFromNames(id);\n }\n if (nn) {\n this.addToNames(obj);\n }\n }\n }\n }\n\n async stopAllScripts(): Promise {\n const scripts = Object.keys(this.scripts);\n const promises: Promise[] = [];\n for (let i = 0; i < scripts.length; i++) {\n promises.push(this.stopScript(scripts[i]));\n }\n return Promise.all(promises).then(() => {});\n }\n\n convertBackStringifiedValues(\n id: string,\n state: ioBroker.State | null | undefined,\n ): ioBroker.State | null | undefined {\n if (\n state &&\n typeof state.val === 'string' &&\n this.objects[id]?.common &&\n (this.objects[id].common.type === 'array' || this.objects[id].common.type === 'object')\n ) {\n try {\n state.val = JSON.parse(state.val);\n } catch (err: any) {\n if (id.startsWith('javascript.') || id.startsWith('0_userdata.0')) {\n this.log.info(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n } else {\n this.log.debug(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n }\n }\n }\n return state;\n }\n\n prepareStateObjectSimple(id: string, state: ioBroker.StateValue, isAck: boolean): ioBroker.State {\n // otherwise, assume that the given state is the value to be set\n const oState: ioBroker.State = { val: state, ack: isAck } as ioBroker.State;\n\n return this.prepareStateObject(id, oState);\n }\n\n prepareStateObject(id: string, state: ioBroker.SettableState | null): ioBroker.State {\n let oState: ioBroker.State;\n\n if (state && typeof state === 'object') {\n oState = state as ioBroker.State;\n } else {\n oState = { val: null } as ioBroker.State;\n }\n\n if (this.config.subscribe) {\n return oState;\n }\n // set other values to have a full state object\n // mirrors logic from statesInRedis\n if (oState.ts === undefined) {\n oState.ts = Date.now();\n }\n\n if (oState.q === undefined) {\n oState.q = 0;\n }\n\n oState.from =\n typeof oState.from === 'string' && oState.from !== '' ? oState.from : `system.adapter.${this.namespace}`;\n\n if (oState.lc === undefined) {\n const formerStateValue = this.interimStateValues[id] || this.states[id];\n if (!formerStateValue) {\n oState.lc = oState.ts;\n } else {\n // isDeepStrictEqual works on objects and primitive values\n const hasChanged = !isDeepStrictEqual(formerStateValue.val, oState.val);\n if (!formerStateValue.lc || hasChanged) {\n oState.lc = oState.ts;\n } else {\n oState.lc = formerStateValue.lc;\n }\n }\n }\n\n return oState;\n }\n\n async getData(): Promise {\n await this.subscribeForeignObjectsAsync('*');\n\n if (!this.config.subscribe) {\n await this.subscribeForeignStatesAsync('*');\n } else {\n await this.subscribeStatesAsync('debug.to');\n await this.subscribeStatesAsync('scriptEnabled.*');\n }\n\n this.log.info('requesting all states');\n\n const statesPromise = this.getForeignStatesAsync('*')\n .then(res => {\n if (!res) {\n this.log.error(`Could not initialize states: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n if (!this.config.subscribe) {\n this.states = Object.assign(res, this.states);\n this.context.states = this.states;\n\n this.addGetProperty(this.states);\n }\n\n // remember all IDs – sort once to guarantee the sorted invariant\n // required by binaryIndexOf() / sortedInsert() used later\n const keys = Object.keys(res).sort();\n for (const id of keys) {\n this.stateIds.push(id);\n this.stateIdSet.add(id);\n }\n this.statesInitDone = true;\n this.log.info('received all states');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize states: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n this.log.info('requesting all objects');\n\n const objectsPromise = this.getObjectListAsync({ include_docs: true })\n .then(res => {\n if (!res?.rows) {\n this.log.error(`Could not initialize objects: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n this.objects = {};\n this.context.objects = this.objects;\n for (let i = 0; i < res.rows.length; i++) {\n const doc = res.rows[i]?.doc;\n if (!doc) {\n this.log.debug(`Got empty object for index ${i} (${res.rows[i].id})`);\n continue;\n }\n if (this.objects[doc._id] === undefined) {\n // If was already there, ignore\n this.objects[doc._id] = doc;\n }\n doc.type === 'enum' && this._enums.add(doc._id);\n\n // Collect all names\n this.addToNames(this.objects[doc._id]);\n }\n this.addGetProperty(this.objects);\n\n const systemConfig = this.objects['system.config'];\n this.password = systemConfig?.native?.javascriptPassword\n ? this.decrypt(systemConfig?.native.javascriptPassword)\n : '';\n\n // set language for debug messages\n if (systemConfig?.common?.language) {\n setLanguage(systemConfig.common.language);\n this.language = systemConfig.common.language;\n this.context.language = this.language as ioBroker.Languages;\n } else if (this.language) {\n setLanguage(this.language);\n this.context.language = this.language;\n }\n\n // try to use system coordinates\n if (this.config.useSystemGPS) {\n if (systemConfig?.common?.latitude || systemConfig?.common?.longitude) {\n this.config.latitude = systemConfig.common.latitude;\n this.config.longitude = systemConfig.common.longitude;\n } else if (this.latitude && this.longitude) {\n this.config.latitude = this.latitude;\n this.config.longitude = this.longitude;\n }\n }\n this.config.latitude = parseFloat(this.config.latitude as unknown as string);\n this.config.longitude = parseFloat(this.config.longitude as unknown as string);\n\n if (isNaN(this.config.latitude)) {\n this.log.warn(`Configured latitude is not a number - check (instance/system) configuration`);\n } else if (this.config.latitude < -90 || this.config.latitude > 90) {\n this.log.warn(\n `Configured latitude \"${this.config.latitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n if (isNaN(this.config.longitude)) {\n this.log.warn(`Configured longitude is not a number - check (instance/system) configuration`);\n } else if (this.config.longitude < -180 || this.config.longitude > 180) {\n this.log.warn(\n `Configured longitude \"${this.config.longitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n this.config.sunriseEvent ||= 'nightEnd';\n this.config.sunriseOffset ||= 0;\n this.config.sunriseLimitStart ||= '06:00';\n this.config.sunriseLimitEnd ||= '12:00';\n\n this.config.sunsetEvent ||= 'dusk';\n this.config.sunsetOffset ||= 0;\n this.config.sunsetLimitStart ||= '18:00';\n this.config.sunsetLimitEnd ||= '23:00';\n\n this.objectsInitDone = true;\n this.log.info('received all objects');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize objects: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n return Promise.all([statesPromise, objectsPromise]).then(() => {});\n }\n\n async createActiveObject(id: string, enabled: boolean): Promise {\n const idActive = `${this.namespace}.scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idActive]) {\n this.objects[idActive] = {\n _id: idActive,\n common: {\n name: `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'controls script activity',\n type: 'boolean',\n write: true,\n read: true,\n role: 'switch.active',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idActive, this.objects[idActive]);\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idActive);\n if (state && state.val !== enabled) {\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n }\n }\n }\n\n async createProblemObject(id: string): Promise {\n const idProblem = `${this.namespace}.scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idProblem]) {\n this.objects[idProblem] = {\n _id: idProblem,\n common: {\n name: `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'Script has a problem',\n type: 'boolean',\n expert: true,\n write: false,\n read: true,\n role: 'indicator.error',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idProblem, this.objects[idProblem]);\n await this.setForeignStateAsync(idProblem, false, true);\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idProblem);\n if (state && state.val !== false) {\n await this.setForeignStateAsync(idProblem, false, true);\n }\n }\n }\n\n addToNames(obj: ioBroker.Object): void {\n const id = obj._id;\n\n if (obj.common?.name) {\n let name = obj.common.name;\n if (name && typeof name === 'object') {\n name = name[getLanguage()] || name.en;\n }\n if (!name || typeof name !== 'string') {\n // TODO, take name in current language\n return;\n }\n\n if (!this.names[name]) {\n this.names[name] = id;\n } else {\n // convert to array\n if (!Array.isArray(this.names[name])) {\n this.names[name] = [this.names[name] as string];\n }\n\n (this.names[name] as string[]).push(id);\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.set(id, name);\n }\n }\n\n removeFromNames(id: string): void {\n const n = this.getName(id);\n\n if (n) {\n if (Array.isArray(this.names[n])) {\n const arr = this.names[n];\n const pos = arr.indexOf(id);\n if (pos > -1) {\n arr.splice(pos, 1);\n if (arr.length === 1) {\n this.names[n] = arr[0];\n }\n }\n } else {\n delete this.names[n];\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.delete(id);\n }\n }\n\n getName(id: string): string | null {\n return this.nameById.get(id) ?? null;\n }\n\n async installNpm(npmLib: string): Promise {\n return new Promise((resolve, reject) => {\n const path = __dirname;\n\n // Also, set the working directory (cwd) of the process instead of using --prefix\n // because that has ugly bugs on Windows\n const cmd = `npm install ${npmLib} --omit=dev`;\n this.log.info(`Installing ${npmLib} into ${__dirname} - cmd: ${cmd}`);\n\n // System call used for update of js-controller itself,\n // because during the installation the npm packet will be deleted too, but some files must be loaded even during the installation process.\n const child = this.mods.child_process.exec(cmd, {\n windowsHide: true,\n cwd: path,\n timeout: 120_000, // 2 minutes max – prevents infinite blocking\n });\n\n child.stdout?.on('data', buf => this.log.info(buf.toString('utf8')));\n\n child.stderr?.on('data', buf => this.log.error(buf.toString('utf8')));\n\n child.on('err', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n child.on('error', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n\n child.on('exit', (code: number /* , signal */) => {\n if (code) {\n this.log.error(`Cannot install ${npmLib}: ${code}`);\n reject(new Error(`Cannot install ${npmLib}: ${code}`));\n }\n // command succeeded\n resolve(code);\n });\n });\n }\n\n async installLibraries(): Promise {\n if (typeof this.config?.libraries !== 'string') {\n this.config.libraries = '';\n }\n\n const libraries: string[] = this.config.libraries\n .split(/[,;\\s]+/)\n .map(d => d.trim())\n .filter(d => d);\n\n this.log.debug(`Custom libraries in config: \"${this.config.libraries}\": ${JSON.stringify(libraries)}`);\n\n let installedNodeModules: string[] = [];\n const keepModules: string[] = [];\n\n // js-controller >= 6.x\n if (typeof this.listInstalledNodeModules === 'function') {\n installedNodeModules = await this.listInstalledNodeModules();\n\n this.log.debug(`Found installed libraries: ${JSON.stringify(installedNodeModules)}`);\n }\n\n for (const lib of libraries) {\n let depName = lib;\n let version = 'latest';\n\n if (depName.includes('@') && depName.lastIndexOf('@') > 0) {\n const parts = depName.split('@');\n version = parts.pop() ?? 'latest';\n depName = parts.join('@');\n }\n\n /** The real module name, because the dependency can be a URL too */\n let moduleName = depName;\n\n if (URL.canParse(depName)) {\n moduleName = await requestModuleNameByUrl(depName);\n\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\" (from ${depName})`);\n } else {\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\"`);\n }\n\n keepModules.push(moduleName);\n\n // js-controller >= 6.x\n if (typeof this.installNodeModule === 'function') {\n try {\n const result = await this.installNodeModule(depName, { version });\n if (result.success) {\n this.log.debug(`Installed custom library: \"${moduleName}@${version}\"`);\n\n const importedModule: any = await this.importNodeModule(moduleName);\n (this.mods as Record)[moduleName] = importedModule.default ?? importedModule;\n } else {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\"`);\n }\n } catch (err: unknown) {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\": ${err as Error}`);\n }\n } else if (!existsSync(`${__dirname}/node_modules/${depName}/package.json`)) {\n // js-controller < 6.x\n this.log.info(`Installing custom library (legacy mode): \"${lib}\"`);\n\n try {\n await this.installNpm(lib);\n this.log.info(`Installed custom npm package (legacy mode): \"${lib}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot install custom npm package \"${lib}\" (legacy mode): ${err.toString()}`);\n }\n }\n }\n\n // js-controller >= 6.x\n if (typeof this.uninstallNodeModule === 'function') {\n for (const installedNodeModule of installedNodeModules) {\n if (!keepModules.includes(installedNodeModule)) {\n try {\n await this.uninstallNodeModule(installedNodeModule);\n\n this.log.info(`Removed custom npm package: \"${installedNodeModule}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot remove custom npm package ${installedNodeModule}: ${err.toString()}`);\n }\n }\n }\n }\n }\n\n createVM(source: string, name: string, wrapAsync: boolean): false | JsScript {\n if (this.context.debugMode && name !== this.context.debugMode) {\n return false;\n }\n\n if (!this.context.debugMode) {\n const logSubscriptionsText =\n \"\\n;\\nlog(`registered ${__engine.__subscriptions} subscription${__engine.__subscriptions === 1 ? '' : 's'},\" +\n \" ${__engine.__schedules} schedule${__engine.__schedules === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsMessage} message${__engine.__subscriptionsMessage === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsLog} log${__engine.__subscriptionsLog === 1 ? '' : 's'}\" +\n \" and ${__engine.__subscriptionsFile} file subscription${__engine.__subscriptionsFile === 1 ? '' : 's'}`);\\n\";\n\n if (wrapAsync) {\n source = `(async () => {\\n${source}\\n${logSubscriptionsText}\\n})();`;\n } else {\n if (source.endsWith('export {};\\n')) {\n // If the source ends with \"export {};\" place the log subscriptions before it\n source = source.slice(0, -11); // remove \"export {};\\n\"\n source = `${source}\\n${logSubscriptionsText}\\nexport {};\\n`;\n } else {\n source = `${source}\\n${logSubscriptionsText}`;\n }\n }\n } else {\n if (wrapAsync) {\n source = `(async () => {debugger;\\n${source}\\n})();`;\n } else {\n source = `debugger;${source}`;\n }\n }\n\n try {\n const options: ScriptOptions = {\n filename: name,\n // displayErrors: true,\n // lineOffset: this.globalScriptLines\n };\n return {\n script: new Script(source, options),\n } as JsScript;\n } catch (err: unknown) {\n this.logError(name, `compile failed at`, err as Error);\n return false;\n }\n }\n\n execute(script: JsScript, name: string, engineType: ScriptType, verbose: boolean, debug: boolean): void {\n script.intervals = new Set();\n script.timeouts = new Set();\n script.schedules = [];\n script.wizards = [];\n script.name = name;\n script.engineType = engineType;\n script._id = Math.floor(Math.random() * 0xffffffff);\n script.subscribes = {};\n script.subscribesFile = {};\n script.setStatePerMinuteCounter = 0;\n script.setStatePerMinuteProblemCounter = 0;\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: false,\n ack: true,\n expire: 1000,\n });\n\n const sandbox = sandBox(script, name, verbose, debug, this.context);\n\n try {\n script.script.runInNewContext(sandbox, {\n filename: name,\n displayErrors: true,\n // lineOffset: this.globalScriptLines\n });\n } catch (err: unknown) {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'execute',\n });\n this.logError(name, 'Error by run:', err as Error);\n }\n }\n\n /**\n * Finds the index of `id` in a sorted array using binary search – O(log n).\n * Returns -1 if not found. Used instead of Array.indexOf on stateIds.\n */\n private binaryIndexOf(arr: string[], id: string): number {\n let lo = 0;\n let hi = arr.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n if (arr[mid] === id) {\n return mid;\n } else if (arr[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return -1;\n }\n\n /**\n * Inserts `id` into the sorted `stateIds` array using binary search – O(log n).\n * Much faster than push() + sort() which is O(n log n) on every insertion.\n */\n private sortedInsert(id: string): void {\n let lo = 0;\n let hi = this.stateIds.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (this.stateIds[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (this.stateIds[lo] !== id) {\n this.stateIds.splice(lo, 0, id);\n }\n }\n\n unsubscribe(id: string | RegExp | string[]): void {\n if (!id) {\n this.log.warn('unsubscribe: empty name');\n return;\n }\n\n if (Array.isArray(id)) {\n id.forEach(sub => this.unsubscribe(sub));\n return;\n }\n\n if (id.constructor && id.constructor.name === 'RegExp') {\n // adapter.log.warn('unsubscribe: todo - process regexp');\n return;\n }\n\n if (typeof id !== 'string') {\n this.log.error(`unsubscribe: invalid type of id - ${typeof id}`);\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (this.objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n if (this.adapterSubs[alive]) {\n this.adapterSubs[alive].delete(id);\n if (!this.adapterSubs[alive].size) {\n delete this.adapterSubs[alive];\n }\n }\n this.sendTo(a, 'unsubscribe', id);\n }\n }\n\n // Analyze if logs are still required or not\n updateLogSubscriptions(): void {\n let found = false;\n // go through all scripts and check if some script still requires logs\n Object.keys(this.logSubscriptions).forEach(scriptName => {\n if (!this.logSubscriptions?.[scriptName] || !this.logSubscriptions[scriptName].length) {\n delete this.logSubscriptions[scriptName];\n } else {\n found = true;\n }\n });\n\n if (this.requireLog) {\n if (found && !this.logSubscribed) {\n this.logSubscribed = true;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Subscribed to log messages (found logSubscriptions)`);\n } else if (!found && this.logSubscribed) {\n this.logSubscribed = false;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Unsubscribed from log messages (not found logSubscriptions)`);\n }\n }\n }\n\n async stopScript(name: string): Promise {\n if (!this.scripts[name]) {\n return false;\n }\n\n this.log.info(`${name}: Stopping script`);\n\n await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true);\n\n if (this.messageBusHandlers[name]) {\n delete this.messageBusHandlers[name];\n }\n\n if (this.tempDirectories[name]) {\n try {\n this.mods.fs.rmSync(this.tempDirectories[name], { recursive: true });\n\n this.log.debug(`${name}: Removed temp directory: ${this.tempDirectories[name]}`);\n } catch {\n this.log.warn(`${name}: Unable to remove temp directory: ${this.tempDirectories[name]}`);\n }\n\n delete this.tempDirectories[name];\n }\n\n if (this.logSubscriptions[name]) {\n delete this.logSubscriptions[name];\n this.updateLogSubscriptions();\n }\n\n if (this.scripts[name]) {\n // Remove from subscriptions\n this.context.isEnums = false;\n if (this.config.subscribe) {\n // check all subscribed IDs\n Object.keys(this.scripts[name].subscribes).forEach(id => {\n if (this.subscribedPatterns[id]) {\n this.subscribedPatterns[id] -= this.scripts[name].subscribes[id];\n if (this.subscribedPatterns[id] <= 0) {\n this.unsubscribeForeignStates(id);\n delete this.subscribedPatterns[id];\n if (this.states[id]) {\n delete this.states[id];\n }\n }\n }\n });\n }\n\n for (let i = this.subscriptions.length - 1; i >= 0; i--) {\n if (this.subscriptions[i].name === name) {\n const sub = this.subscriptions.splice(i, 1)[0];\n // Also remove from O(1) dispatch structures\n if (\n sub?.pattern.id &&\n typeof sub.pattern.id === 'string' &&\n !sub.pattern.id.includes('*') &&\n !sub.pattern.id.includes('?')\n ) {\n const bucket = this.subscriptionsMap.get(sub.pattern.id);\n if (bucket) {\n const pos = bucket.indexOf(sub);\n if (pos !== -1) {\n bucket.splice(pos, 1);\n }\n if (bucket.length === 0) {\n this.subscriptionsMap.delete(sub.pattern.id);\n }\n }\n } else {\n const wPos = this.subscriptionsWildcard.indexOf(sub);\n if (wPos !== -1) {\n this.subscriptionsWildcard.splice(wPos, 1);\n }\n }\n if (sub?.pattern.id) {\n this.unsubscribe(sub.pattern.id);\n }\n } else {\n if (\n (!this.context.isEnums && this.subscriptions[i].pattern.enumName) ||\n this.subscriptions[i].pattern.enumId\n ) {\n this.context.isEnums = true;\n }\n }\n }\n\n // check all subscribed files\n Object.keys(this.scripts[name].subscribesFile).forEach(key => {\n if (this.subscribedPatternsFile[key]) {\n this.subscribedPatternsFile[key] -= this.scripts[name].subscribesFile[key];\n if (this.subscribedPatternsFile[key] <= 0) {\n const [id, file] = key.split('$%$');\n void this.unsubscribeForeignFiles(id, file);\n delete this.subscribedPatternsFile[key];\n }\n }\n });\n for (let i = this.subscriptionsFile.length - 1; i >= 0; i--) {\n if (this.subscriptionsFile[i].name === name) {\n this.subscriptionsFile.splice(i, 1);\n }\n }\n\n for (let i = this.subscriptionsObject.length - 1; i >= 0; i--) {\n if (this.subscriptionsObject[i].name === name) {\n const sub = this.subscriptionsObject.splice(i, 1)[0];\n if (sub) {\n // Remove from O(1) dispatch map\n const mapSubs = this.subscriptionsObjectMap.get(sub.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(sub);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n this.subscriptionsObjectMap.delete(sub.pattern);\n }\n }\n this.unsubscribeForeignObjects(sub.pattern);\n }\n }\n }\n\n // Stop all timeouts\n for (const t of this.scripts[name].timeouts) {\n clearTimeout(t);\n }\n // Stop all intervals\n for (const t of this.scripts[name].intervals) {\n clearInterval(t);\n }\n // Stop all delayed states (setStateDelayed timers) – O(1) via reverse-index\n const scriptStateIds = this.timersByScript.get(name);\n if (scriptStateIds) {\n for (const stateId of scriptStateIds) {\n if (this.timers[stateId]) {\n for (let i = this.timers[stateId].length - 1; i >= 0; i--) {\n if (this.timers[stateId][i].scriptName === name) {\n clearTimeout(this.timers[stateId][i].t);\n this.timers[stateId].splice(i, 1);\n }\n }\n if (!this.timers[stateId].length) {\n delete this.timers[stateId];\n }\n }\n }\n this.timersByScript.delete(name);\n }\n // Stop all scheduled jobs\n for (let i = 0; i < this.scripts[name].schedules.length; i++) {\n if (this.scripts[name].schedules[i]) {\n const _name = this.scripts[name].schedules[i].name;\n if (!this.mods.nodeSchedule.cancelJob(this.scripts[name].schedules[i])) {\n this.log.error(`${name}: Error by canceling scheduled job \"${_name}\"`);\n }\n }\n }\n\n // Stop all time wizards jobs\n if (this.context.scheduler) {\n for (let i = 0; i < this.scripts[name].wizards.length; i++) {\n if (this.scripts[name].wizards[i]) {\n this.context.scheduler.remove(this.scripts[name].wizards[i]);\n }\n }\n }\n\n // if callback for on stop\n if (typeof this.scripts[name].onStopCb === 'function') {\n this.scripts[name].onStopTimeout =\n parseInt(this.scripts[name].onStopTimeout as unknown as string, 10) || 1000;\n\n await new Promise(resolve => {\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n if (timeout) {\n timeout = null;\n resolve(true);\n }\n }, this.scripts[name].onStopTimeout);\n\n try {\n this.scripts[name].onStopCb(() => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(true);\n }\n });\n } catch (err: unknown) {\n this.log.error(`${name}: error in onStop callback: ${err as Error}`);\n }\n });\n }\n\n delete this.scripts[name];\n return true;\n }\n return false;\n }\n\n async prepareScript(obj: ioBroker.ScriptObject): Promise {\n if (obj?.common?.enabled && this.debugState.scriptName === obj._id) {\n const id = obj._id;\n await this.debugStop();\n this.log.info(`${id}: Debugging was stopped, because started in normal mode`);\n return this.prepareScript(obj);\n }\n\n if (\n obj?.common?.source &&\n (obj.common.enabled || this.context.debugMode === obj._id) &&\n obj.common.engine === `system.adapter.${this.namespace}`\n ) {\n const name = obj._id;\n\n if (this.password && obj.native?.protected) {\n obj.common.source = decryptText(this.password, obj.common.source);\n }\n\n const nameId = name.substring(SCRIPT_CODE_MARKER.length);\n if (!nameId.length || nameId.endsWith('.')) {\n this.log.error(`${name}: Script name \"${name}\" is invalid!`);\n return false;\n }\n const idActive = `scriptEnabled.${nameId}`;\n if (!this.config.subscribe) {\n this.interimStateValues[idActive] = this.prepareStateObjectSimple(\n `${this.namespace}.${idActive}`,\n true,\n true,\n );\n }\n await this.setState(idActive, true, true);\n obj.common.engineType ||= '' as 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';\n\n if (\n (obj.common.engineType as ScriptType).toLowerCase().startsWith('javascript') ||\n (obj.common.engineType as ScriptType) === 'Blockly' ||\n (obj.common.engineType as ScriptType) === 'Rules'\n ) {\n // Javascript\n this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);\n\n let sourceFn = name;\n if (webstormDebug) {\n const fn = name.replace(/^script\\.js\\./, '').replace(/\\./g, '/');\n sourceFn = this.mods.path.join(webstormDebug, `${fn}.js`);\n }\n const createdScript = this.createVM(`${this.globalScript}\\n${obj.common.source}`, sourceFn, true);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n sourceFn,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n if (obj.common.engineType.toLowerCase().startsWith('typescript')) {\n // TypeScript\n this.log.info(`${name}: Compiling TypeScript source`);\n // The source code must be transformed in order to support top level await\n // and to force TypeScript to compile the code as a module\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, false);\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash = hashSource(tsSourceHashBase + this.globalDeclarations + transformedSource);\n\n let compiled: string;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n this.log.info(`${name}: source code did not change, using cached compilation result...`);\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n return false;\n }\n\n const errors = tsCompiled.diagnostics.map(diag => `${diag.annotatedSource}\\n`).join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(`${name}: TypeScript compilation had errors:\\n${errors}`);\n } else {\n this.log.info(`${name}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result || '';\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(name); // ignore the next change and don't restart scripts\n await this.extendForeignObjectAsync(name, {\n common: {\n sourceHash,\n compiled,\n },\n });\n } else {\n this.log.error(`${name}: TypeScript compilation failed:\\n${errors}`);\n return false;\n }\n }\n const createdScript: JsScript | false = this.createVM(`${this.globalScript}\\n${compiled}`, name, false);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n name,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n this.log.warn(`${obj._id}: Unknown engine type: ${obj.common.engineType}`);\n return false;\n }\n\n let _name: string;\n if (obj?._id) {\n _name = obj._id;\n const scriptIdName = _name.substring(SCRIPT_CODE_MARKER.length);\n\n if (!scriptIdName.length || scriptIdName.endsWith('.')) {\n this.log.error(`${obj._id}: Script name \"${_name}\" is invalid!`);\n return false;\n }\n await this.setState(`scriptEnabled.${scriptIdName}`, false, true);\n }\n if (!obj) {\n this.log.error('Invalid script');\n }\n return false;\n }\n\n async loadScriptById(id: string): Promise {\n let obj: ioBroker.ScriptObject | null | undefined;\n try {\n obj = (await this.getForeignObjectAsync(id)) as ioBroker.ScriptObject | null | undefined;\n } catch (err: any) {\n this.log.error(`${id}: Invalid script: ${err}`);\n }\n if (!obj) {\n return false;\n }\n return this.loadScript(obj);\n }\n\n async loadScript(nameOrObject: ioBroker.ScriptObject): Promise {\n // create states for scripts\n await this.createActiveObject(nameOrObject._id, !!nameOrObject?.common?.enabled);\n await this.createProblemObject(nameOrObject._id);\n return this.prepareScript(nameOrObject);\n }\n\n getAstroEvent(\n date: Date,\n astroEvent: AstroEventName,\n start: string,\n end: string,\n offsetMinutes: number | string,\n isDayEnd: boolean,\n latitude: number,\n longitude: number,\n useNextDay?: boolean,\n ): Date {\n let ts: Date = this.mods.suncalc.getTimes(date, latitude, longitude)[astroEvent];\n\n if (!ts || ts.getTime().toString() === 'NaN') {\n ts = isDayEnd ? getNextTimeEvent(end, useNextDay) : getNextTimeEvent(start, useNextDay);\n }\n ts.setMilliseconds(0);\n ts.setMinutes(ts.getMinutes() + (parseInt(offsetMinutes as unknown as string, 10) || 0));\n\n const [timeHoursStart, timeMinutesStart] = start.split(':');\n const nTimeHoursStart = parseInt(timeHoursStart, 10);\n const nTimeMinutesStart = parseInt(timeMinutesStart, 10) || 0;\n\n if (\n ts.getHours() < nTimeHoursStart ||\n (ts.getHours() === nTimeHoursStart && ts.getMinutes() < nTimeMinutesStart)\n ) {\n ts = getNextTimeEvent(start, useNextDay);\n ts.setSeconds(0);\n }\n\n const [timeHoursEnd, timeMinutesEnd] = end.split(':');\n const nTimeHoursEnd = parseInt(timeHoursEnd, 10);\n const nTimeMinutesEnd = parseInt(timeMinutesEnd, 10) || 0;\n\n if (ts.getHours() > nTimeHoursEnd || (ts.getHours() === nTimeHoursEnd && ts.getMinutes() > nTimeMinutesEnd)) {\n ts = getNextTimeEvent(end, useNextDay);\n ts.setSeconds(0);\n }\n\n // if event in the past\n if (date > ts && useNextDay) {\n // take the next day\n ts.setDate(ts.getDate() + 1);\n }\n return ts;\n }\n\n async timeSchedule(): Promise {\n const now = new Date();\n let hours = now.getHours();\n const minutes = now.getMinutes();\n if (this.timeSettings.format12) {\n if (hours > 12) {\n hours -= 12;\n }\n }\n let sHours: string;\n if (this.timeSettings.leadingZeros) {\n sHours = hours.toString().padStart(2, '0');\n } else {\n sHours = hours.toString();\n }\n\n await this.setState('variables.dayTime', {\n val: `${sHours}:${minutes.toString().padStart(2, '0')}`,\n ack: true,\n });\n\n now.setMinutes(now.getMinutes() + 1);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const interval = now.getTime() - Date.now();\n this.timeScheduleTimer = setTimeout(() => this.timeSchedule(), interval);\n }\n\n async dayTimeSchedules(): Promise {\n // Always clear any existing timer to prevent memory leaks on rapid re-scheduling\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n\n // get astrological event\n if (\n this.config.latitude === undefined ||\n this.config.longitude === undefined ||\n (this.config.latitude as unknown as string) === '' ||\n (this.config.longitude as unknown as string) === '' ||\n this.config.latitude === null ||\n this.config.longitude === null\n ) {\n this.log.error('Longitude or latitude does not set. Cannot use astro.');\n return;\n }\n\n // Calculate the next event today\n const todayDate = getAstroStartOfDay();\n const nowDate = new Date();\n\n const todaySunrise = this.getAstroEvent(\n todayDate,\n this.config.sunriseEvent,\n this.config.sunriseLimitStart,\n this.config.sunriseLimitEnd,\n this.config.sunriseOffset,\n false,\n this.config.latitude,\n this.config.longitude,\n );\n const todaySunset = this.getAstroEvent(\n todayDate,\n this.config.sunsetEvent,\n this.config.sunsetLimitStart,\n this.config.sunsetLimitEnd,\n this.config.sunsetOffset,\n true,\n this.config.latitude,\n this.config.longitude,\n );\n\n // Sunrise\n let sunriseTimeout = todaySunrise.getTime() - nowDate.getTime();\n if (sunriseTimeout < 0 || sunriseTimeout > 3600000) {\n sunriseTimeout = 3600000;\n }\n\n // Sunset\n let sunsetTimeout = todaySunset.getTime() - nowDate.getTime();\n if (sunsetTimeout < 0 || sunsetTimeout > 3600000) {\n sunsetTimeout = 3600000;\n }\n\n const isDayTime: ioBroker.State | null | undefined = await this.getStateAsync('variables.isDayTime');\n let isDay: boolean;\n if (sunriseTimeout < 5000) {\n isDay = true;\n } else if (sunsetTimeout < 5000) {\n isDay = false;\n } else {\n // check if in between\n isDay = nowDate.getTime() > todaySunrise.getTime() - 60000 && nowDate <= todaySunset;\n }\n\n const valDayTime = isDayTime ? !!isDayTime.val : false;\n if (valDayTime !== isDay || isDayTime === null) {\n await this.setState('variables.isDayTime', isDay, true);\n }\n\n const dayLightSaving: ioBroker.State | null | undefined =\n await this.getStateAsync('variables.isDaylightSaving');\n const isDayLightSaving = dstOffsetAtDate(nowDate) !== 0;\n const val = dayLightSaving ? !!dayLightSaving.val : false;\n\n if (val !== isDayLightSaving || dayLightSaving === null) {\n await this.setState('variables.isDaylightSaving', isDayLightSaving, true);\n }\n\n let nextTimeout = sunriseTimeout;\n if (sunriseTimeout > sunsetTimeout) {\n nextTimeout = sunsetTimeout;\n }\n nextTimeout = nextTimeout - 3000;\n if (nextTimeout < 3000) {\n nextTimeout = 3000;\n }\n\n this.dayScheduleTimer = setTimeout(() => this.dayTimeSchedules(), nextTimeout);\n }\n\n stopTimeSchedules(): void {\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n if (this.sunScheduleTimer) {\n clearTimeout(this.sunScheduleTimer);\n this.sunScheduleTimer = null;\n }\n if (this.timeScheduleTimer) {\n clearTimeout(this.timeScheduleTimer);\n this.timeScheduleTimer = null;\n }\n }\n\n async patchFont(): Promise {\n let stat: Stats | undefined;\n let dbFile: Buffer | undefined;\n let fileName = `${__dirname}/../admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n let jsonFileName = `${__dirname}/../admin/vsFont/codicon.json`;\n try {\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n if (!stat) {\n jsonFileName = `${__dirname}/admin/vsFont/codicon.json`;\n fileName = `${__dirname}/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n }\n const _dbFile = await this.readFileAsync(\n 'javascript.admin',\n `vs/base/browser/ui/codicons/codicon/codicon.ttf`,\n );\n if (_dbFile?.file) {\n dbFile = _dbFile.file as Buffer;\n }\n } catch {\n // ignore\n }\n\n if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {\n try {\n const buffer = Buffer.from(JSON.parse(readFileSync(jsonFileName).toString()), 'base64');\n\n const jszip = await import('jszip');\n const zip = await jszip.loadAsync(buffer);\n let data: ArrayBuffer | undefined;\n if (zip) {\n data = await zip.file('codicon.ttf')?.async('arraybuffer');\n if (data?.byteLength !== 73452) {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n } else {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n writeFileSync(fileName, Buffer.from(data));\n // upload this file\n await this.writeFileAsync(\n 'javascript.admin',\n 'vs/base/browser/ui/codicons/codicon/codicon.ttf',\n Buffer.from(data),\n );\n return true;\n } catch (err: unknown) {\n this.log.error(`Cannot patch font: ${err as Error}`);\n return false;\n }\n }\n return false;\n }\n\n async sunTimeSchedules(): Promise {\n if (this.config.createAstroStates) {\n if (!isNaN(this.config.longitude) && !isNaN(this.config.longitude)) {\n const calcDate = getAstroStartOfDay();\n\n const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);\n\n this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);\n\n for (const t in times) {\n try {\n const objId = `variables.astro.${t}`;\n\n await this.setObjectNotExistsAsync(objId, {\n type: 'state',\n common: {\n name: `Astro ${t}`,\n type: 'string',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (times[t] !== null && !isNaN(times[t].getTime())) {\n const timeFormatted = formatHoursMinutesSeconds(times[t]);\n await this.setState(objId, {\n val: timeFormatted,\n c: times[t].toISOString(),\n ack: true,\n });\n } else {\n await this.setState(objId, { val: null, c: 'n/a', ack: true, q: 0x01 });\n }\n } catch (err: unknown) {\n this.log.error(\n `[sunTimeSchedules] Unable to set state for astro time \"${t}\" (${times[t].getTime()}): ${err as Error}`,\n );\n }\n }\n\n const todayDate = new Date();\n todayDate.setHours(0);\n todayDate.setMinutes(0);\n todayDate.setSeconds(1);\n todayDate.setMilliseconds(0);\n todayDate.setDate(todayDate.getDate() + 1);\n\n this.log.debug(`[sunTimeSchedules] Next: ${todayDate.toISOString()}`);\n this.sunScheduleTimer = setTimeout(() => this.sunTimeSchedules(), todayDate.getTime() - Date.now());\n }\n } else {\n // remove astro states if disabled\n this.delObject('variables.astro', { recursive: true });\n }\n }\n\n /**\n * Redirects the virtual-tsc log output to the ioBroker log\n */\n tsLog = (message: string, severity?: ioBroker.LogLevel): void => {\n // shift the severities around, we don't care about the small details\n if (!severity || severity === 'info') {\n severity = 'debug';\n } else if (severity === 'debug') {\n // Don't spam build logs on Travis\n if (isCI) {\n return;\n }\n severity = 'silly';\n }\n\n if (this?.log) {\n this.log[severity](message);\n } else {\n console.log(`[${severity.toUpperCase()}] ${message}`);\n }\n };\n\n addGetProperty(object: Record): void {\n try {\n Object.defineProperty(object, 'get', {\n value: function (id: string): any {\n return this[id] || this[`${this.namespace}.${id}`];\n },\n enumerable: false,\n });\n } catch {\n console.error('Cannot install get property');\n }\n }\n\n /**\n * Add declarations for global scripts\n *\n * @param scriptID - The current script the declarations were generated from\n * @param declarations - Declarations from a script\n */\n provideDeclarationsForGlobalScript(scriptID: string, declarations: string): void {\n // Remember which declarations this global script had access to;\n // we need this so the editor doesn't show a duplicate identifier error\n if (this.globalDeclarations != null && this.globalDeclarations !== '') {\n this.knownGlobalDeclarationsByScript[scriptID] = this.globalDeclarations;\n }\n // and concatenate the global declarations for the next scripts\n this.globalDeclarations += `${declarations}\\n`;\n // remember all previously generated global declarations,\n // so global scripts can reference each other\n const globalDeclarationPath = 'global.d.ts';\n tsAmbient[globalDeclarationPath] = this.globalDeclarations;\n // make sure the next script compilation has access to the updated declarations\n this.tsServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n jsDeclarationServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n }\n\n fixLineNo(line: string): string {\n if (line.includes('javascript.js:')) {\n return line;\n }\n if (!/scripts?\\.js[.\\\\/]/.test(line)) {\n return line;\n }\n if (/:(\\d+):/.test(line)) {\n line = line.replace(\n /:(\\d+):/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}:`,\n ); // one line for 'async function ()'\n } else {\n line = line.replace(\n /:(\\d+)$/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}`,\n ); // one line for 'async function ()'\n }\n return line;\n }\n\n async debugStop(): Promise {\n if (this.debugState.child) {\n this.debugSendToInspector({ cmd: 'end' });\n this.debugState.endTimeout = setTimeout(() => {\n this.debugState.endTimeout = null;\n this.debugState.child?.kill('SIGTERM');\n }, 500);\n this.debugState.promiseOnEnd ||= Promise.resolve(0);\n } else {\n this.debugState.promiseOnEnd = Promise.resolve(0);\n }\n\n await this.debugState.promiseOnEnd;\n\n this.debugState.child = null;\n this.debugState.running = false;\n this.debugState.scriptName = '';\n if (this.debugState.endTimeout) {\n clearTimeout(this.debugState.endTimeout);\n this.debugState.endTimeout = null;\n }\n }\n\n async debugDisableScript(id: string | undefined): Promise {\n if (id) {\n const obj = this.objects[id];\n if (obj?.common?.enabled) {\n await this.extendForeignObjectAsync(obj._id, { common: { enabled: false } });\n }\n }\n }\n\n debugSendToInspector(message: any): void {\n if (this.debugState.child) {\n try {\n this.log.info(`send to debugger: ${message}`);\n this.debugState.child.send(message);\n } catch {\n void this.debugStop().then(() =>\n this.log.info(\n `${this.debugState.scriptName}: Debugging was stopped, because started in normal mode`,\n ),\n );\n }\n } else {\n this.log.error(`${this.debugState.scriptName}: Cannot send command to terminated inspector`);\n void this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `Cannot send command to terminated inspector`, id: 1 }),\n true,\n );\n }\n }\n\n debugStart(data: { breakOnStart?: boolean; scriptName?: string; adapter?: string }): void {\n if (Date.now() - this.debugState.started < 1000) {\n console.log('Start ignored');\n return;\n }\n\n this.debugState.started = Date.now();\n // stop the script if it's running\n void this.debugDisableScript(data.scriptName)\n .then(() => this.debugStop())\n .then(() => {\n if (data.adapter) {\n this.debugState.adapterInstance = data.adapter;\n this.debugState.scriptName = '';\n } else {\n this.debugState.adapterInstance = '';\n this.debugState.scriptName = data.scriptName as string;\n }\n\n this.debugState.breakOnStart = data.breakOnStart;\n\n this.debugState.promiseOnEnd = new Promise(resolve => {\n const options: ForkOptions = {\n stdio: ['ignore', 'inherit', 'inherit', 'ipc'],\n //stdio: ['pipe', 'pipe', 'pipe', 'ipc']\n };\n const args: string[] = [];\n if (this.debugState.adapterInstance) {\n args.push('--breakOnStart');\n }\n\n this.debugState.child = fork(`${__dirname}/lib/inspect.js`, args, options);\n\n /*debugState.child.stdout.setEncoding('utf8');\n debugState.child.stderr.setEncoding('utf8');\n debugState.child.stdout.on('data', childPrint);\n debugState.child.stderr.on('data', childPrint);*/\n\n this.debugState.child?.on(\n 'message',\n (\n message:\n | string\n | {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n },\n ) => {\n let oMessage: {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n };\n if (typeof message === 'string') {\n try {\n oMessage = JSON.parse(message);\n } catch {\n return this.log.error(`Cannot parse message from inspector: ${message}`);\n }\n } else {\n oMessage = message;\n }\n\n if (oMessage.cmd !== 'ready') {\n void this.setState('debug.from', JSON.stringify(oMessage), true);\n }\n\n switch (oMessage.cmd) {\n case 'ready': {\n this.debugSendToInspector({\n cmd: 'start',\n scriptName: this.debugState.scriptName,\n adapterInstance: this.debugState.adapterInstance,\n instance: this.instance,\n });\n break;\n }\n\n case 'watched': {\n //console.log(`WATCHED: ${JSON.stringify(oMessage)}`);\n break;\n }\n\n case 'paused': {\n this.debugState.paused = true;\n console.log(`host: PAUSED`);\n break;\n }\n\n case 'resumed': {\n this.debugState.paused = false;\n //console.log(`STARTED`);\n break;\n }\n\n case 'log': {\n console.log(`[${oMessage.severity}] ${oMessage.text}`);\n break;\n }\n\n case 'readyToDebug': {\n console.log(\n `host: readyToDebug (set breakpoints): [${oMessage.scriptId}] ${oMessage.script}`,\n );\n break;\n }\n }\n },\n );\n this.debugState.child?.on('error', error => {\n this.log.error(`Cannot start inspector: ${error}`);\n void this.setState('debug.from', JSON.stringify({ cmd: 'error', error }), true);\n });\n\n this.debugState.child?.on('exit', async (code: number): Promise => {\n if (code) {\n await this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `invalid response code: ${code}` }),\n true,\n );\n }\n await this.setState('debug.from', JSON.stringify({ cmd: 'debugStopped', code }), true);\n this.debugState.child = null;\n resolve(code);\n });\n });\n });\n }\n}\n\nfunction patternMatching(\n event: EventObj,\n patternFunctions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' },\n): boolean {\n const logic = patternFunctions.logic ?? 'and';\n for (let i = 0, len = patternFunctions.length; i < len; i++) {\n const result = patternFunctions[i](event);\n if (logic === 'and' && !result) {\n return false; // short-circuit AND – one false is enough\n }\n if (logic === 'or' && result) {\n return true; // short-circuit OR – one true is enough\n }\n }\n // AND: all passed → true; OR: none matched → false\n return logic === 'and';\n}\n\n// If started as allInOne mode => return function to create an instance\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new JavaScript(options);\n} else {\n // otherwise start the instance directly\n (() => new JavaScript())();\n}\n"]} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Javascript adapter\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2024 bluefox ,\n *\n * Copyright (c) 2014 hobbyquaker\n */\n\nimport { Script, type ScriptOptions } from 'node:vm';\nimport { readFileSync, existsSync, statSync, writeFileSync, type Stats } from 'node:fs';\nimport { join, sep, normalize } from 'node:path';\nimport { fork, type ForkOptions } from 'node:child_process';\nimport { setTypeScriptResolveOptions, Server } from 'virtual-tsc';\nimport { isDeepStrictEqual } from 'node:util';\nimport prettier from 'prettier';\n\nimport * as dgram from 'node:dgram';\nimport * as crypto from 'node:crypto';\nimport * as dns from 'node:dns';\nimport * as events from 'node:events';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport * as http2 from 'node:http2';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport * as util from 'node:util';\nimport * as child_process from 'node:child_process';\nimport * as stream from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n// @ts-expect-error no types available\nimport * as suncalc from 'suncalc2';\nimport * as axios from 'axios';\n// @ts-expect-error no types available\nimport * as wake_on_lan from 'wake_on_lan';\nimport * as nodeSchedule from 'node-schedule';\n\nimport {\n getAbsoluteDefaultDataDir,\n Adapter,\n Credentials,\n EXIT_CODES,\n type AdapterOptions,\n} from '@iobroker/adapter-core';\nimport type SentryPlugin from '@iobroker/plugin-sentry';\nimport type { GetTimesResult } from 'suncalc';\nimport type { CompileResult } from 'virtual-tsc/build/util';\n\nimport { Mirror } from './lib/mirror';\nimport ProtectFs from './lib/protectFs';\nimport { setLanguage, getLanguage } from './lib/words';\nimport { sandBox } from './lib/sandbox';\nimport { requestModuleNameByUrl } from './lib/nodeModulesManagement';\nimport {\n resolveProviderCredentials,\n resolveTestCredentials,\n listAvailableProviders,\n getProviderCredentialId,\n} from './lib/aiProviderResolver';\nimport {\n translateToolsToAnthropic,\n translateMessagesToAnthropic,\n translateAnthropicResponseToOpenAI,\n} from './lib/anthropicAdapter';\nimport { createEventObject, type EventObj } from './lib/eventObj';\nimport { type AstroEventName, Scheduler } from './lib/scheduler';\nimport { targetTsLib, tsCompilerOptions, jsDeclarationCompilerOptions } from './lib/typescriptSettings';\nimport { hashSource } from './lib/tools';\nimport {\n resolveTypescriptLibs,\n resolveTypings,\n scriptIdToTSFilename,\n transformScriptBeforeCompilation,\n transformGlobalDeclarations,\n} from './lib/typescriptTools';\nimport type {\n FileSubscriptionResult,\n JavascriptContext,\n JavaScriptAdapterConfig,\n JsScript,\n ScriptType,\n SubscriptionResult,\n SubscribeObject,\n JavascriptTimer,\n SandboxType,\n LogMessage,\n DebugState,\n} from './types';\nimport type { PatternEventCompareFunction } from './lib/patternCompareFunctions';\nimport { decryptText } from './lib/crypto';\n\ntype MODULES = {\n fs: ProtectFs;\n 'fs/promises': ProtectFs['promises'];\n dgram: typeof dgram;\n crypto: typeof crypto;\n dns: typeof dns;\n events: typeof events;\n http: typeof http;\n https: typeof https;\n http2: typeof http2;\n net: typeof net;\n os: typeof os;\n path: typeof path;\n util: typeof util;\n child_process: typeof child_process;\n stream: typeof stream;\n zlib: typeof zlib;\n suncalc: typeof suncalc;\n axios: typeof axios;\n wake_on_lan: typeof wake_on_lan;\n nodeSchedule: typeof nodeSchedule;\n};\n\n/**\n * List of forbidden Locations for a mirror directory\n * relative to the default data directory\n * ATTENTION: the same list is also located in index_m.html!!\n */\nconst forbiddenMirrorLocations: string[] = [\n 'backup-objects',\n 'files',\n 'backitup',\n '../backups',\n '../node_modules',\n '../log',\n];\n\nconst packageJson: Record = JSON.parse(readFileSync(`${__dirname}/../package.json`).toString());\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nlet webstormDebug: string | undefined;\n\nconst isCI = !!process.env.CI;\n\n// ambient declarations for typescript\nlet tsAmbient: Record;\n\n// TypeScript's scripts are only recompiled if their source hash changes.\n// If an adapter update fixes the compilation bugs, a user won't notice until the changes and re-save the script.\n// To avoid that, we also include the\n// adapter version and TypeScript version in the hash\nconst tsSourceHashBase = `versions:adapter=${packageJson.version},typescript=${packageJson.dependencies.typescript}`;\n\n// taken from here: https://stackoverflow.com/questions/11887934/how-to-check-if-dst-daylight-saving-time-is-in-effect-and-if-so-the-offset\nfunction dstOffsetAtDate(dateInput: Date): number {\n const fullYear: number = dateInput.getFullYear() | 0;\n // \"Leap Years are any year that can be exactly divided by 4 (2012, 2016, etc.)\n // except if it can be exactly divided by 100, then it isn't (2100, 2200, etc.)\n // except if it can be exactly divided by 400, then it is (2000, 2400)\"\n // (https://www.mathsisfun.com/leap-years.html).\n const isLeapYear: 1 | 0 = ((fullYear & 3) | ((fullYear / 100) & 3)) === 0 ? 1 : 0;\n // (fullYear & 3) = (fullYear % 4), but faster\n //Alternative:var isLeapYear=(new Date(currentYear,1,29,12)).getDate()===29?1:0\n const fullMonth: number = dateInput.getMonth() | 0;\n return (\n // 1. We know what the time since the Epoch really is\n +dateInput - // same as the dateInput.getTime() method\n // 2. We know what the time since the Epoch at the start of the year is\n +new Date(fullYear, 0) - // day defaults to 1 if not explicitly zeroed\n // 3. Now, subtract what we would expect the time to be if daylight savings\n // did not exist. This yields the time-offset due to daylight savings.\n // Calculate the day of the year in the Gregorian calendar\n // The code below works based upon the facts of signed right shifts\n // • (x) >> n: shifts n and fills in the n highest bits with 0s\n // • (-x) >> n: shifts n and fills in the n highest bits with 1s\n // (This assumes that x is a positive integer)\n ((((-1 + // the first day in the year is day 1\n (31 & (-fullMonth >> 4)) + // January // (-11)>>4 = -1\n ((28 + isLeapYear) & ((1 - fullMonth) >> 4)) + // February\n (31 & ((2 - fullMonth) >> 4)) + // March\n (30 & ((3 - fullMonth) >> 4)) + // April\n (31 & ((4 - fullMonth) >> 4)) + // May\n (30 & ((5 - fullMonth) >> 4)) + // June\n (31 & ((6 - fullMonth) >> 4)) + // July\n (31 & ((7 - fullMonth) >> 4)) + // August\n (30 & ((8 - fullMonth) >> 4)) + // September\n (31 & ((9 - fullMonth) >> 4)) + // October\n (30 & ((10 - fullMonth) >> 4)) + // November\n // There are no months past December: the year rolls into the next.\n // Thus, \"fullMonth\" is 0-based, so it will never be 12 in JavaScript\n\n (dateInput.getDate() | 0)) & // get day of the month\n 0xffff) *\n 24 *\n 60 + // 24 hours in a day, 60 minutes in an hour\n (dateInput.getHours() & 0xff) * 60 + // 60 minutes in an hour\n (dateInput.getMinutes() & 0xff)) |\n 0) *\n 60 *\n 1000 - // 60 seconds in a minute * 1000 milliseconds in a second\n (dateInput.getSeconds() & 0xff) * 1000 - // 1000 milliseconds in a second\n dateInput.getMilliseconds()\n );\n}\n\nconst regExGlobalOld = /_global$/;\nconst regExGlobalNew = /script\\.js\\.global\\./;\n\nfunction checkIsGlobal(obj: ioBroker.ScriptObject): boolean {\n return obj?.common && (regExGlobalOld.test(obj.common.name) || regExGlobalNew.test(obj._id));\n}\n\nfunction fileMatching(sub: FileSubscriptionResult, id: string, fileName: string): boolean {\n if (sub.idRegEx) {\n if (!sub.idRegEx.test(id)) {\n return false;\n }\n } else {\n if (sub.id !== id) {\n return false;\n }\n }\n if (sub.fileRegEx) {\n if (!sub.fileRegEx.test(fileName)) {\n return false;\n }\n } else {\n if (sub.fileNamePattern !== fileName) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNextTimeEvent(time: string, useNextDay?: boolean): Date {\n const now: Date = getAstroStartOfDay();\n const [timeHours, timeMinutes] = time.split(':');\n const nTimeHours = parseInt(timeHours, 10);\n const nTimeMinutes = parseInt(timeMinutes, 10);\n if (\n useNextDay &&\n (now.getHours() > nTimeHours || (now.getHours() === nTimeHours && now.getMinutes() > nTimeMinutes))\n ) {\n now.setDate(now.getDate() + 1);\n }\n\n now.setHours(nTimeHours);\n now.setMinutes(nTimeMinutes);\n\n return now;\n}\n\nfunction getAstroStartOfDay(): Date {\n const d = new Date();\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n d.setUTCHours(0);\n\n return d;\n}\n\nfunction formatHoursMinutesSeconds(date: Date): string {\n const h = String(date.getHours());\n const m = String(date.getMinutes());\n const s = String(date.getSeconds());\n\n return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`;\n}\n\n// Due to a npm bug, virtual-tsc may be hoisted to the top level node_modules, but\n// TypeScript may still be in the adapter level (https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794),\n// so we need to tell virtual-tsc where TypeScript is\nsetTypeScriptResolveOptions({\n paths: [require.resolve('typescript')],\n});\n\n// compiler instance for global JS declarations\nconst jsDeclarationServer: Server = new Server(jsDeclarationCompilerOptions, isCI ? false : undefined);\n/**\n * Stores the IDs of script objects whose change should be ignored because\n * the compiled source was just updated\n */\n\nconst HTTP_STATUS_TEXTS: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 429: 'Too Many Requests / Rate Limit',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\nfunction httpStatusText(code: number): string {\n return HTTP_STATUS_TEXTS[code] ?? `Error ${code}`;\n}\n\n/**\n * Resolves the correct http/https module based on the URL string.\n * Returns null if the URL is invalid.\n */\nfunction resolveRequestModule(url: string): { module: typeof https | typeof http; isHttps: boolean } | null {\n try {\n const { protocol } = new URL(url);\n const isHttps = protocol === 'https:';\n return { module: isHttps ? https : http, isHttps };\n } catch {\n return null;\n }\n}\n\nclass JavaScript extends Adapter {\n declare public config: JavaScriptAdapterConfig;\n\n private readonly context: JavascriptContext;\n\n private errorLogFunction: {\n error: (msg: string) => void;\n warn: (msg: string) => void;\n info: (msg: string) => void;\n debug: (msg: string) => void;\n silly: (msg: string) => void;\n } = {\n error: (msg: string) => console.error(msg),\n warn: (msg: string) => console.warn(msg),\n info: (msg: string) => console.log(msg),\n debug: (msg: string) => console.debug(msg),\n silly: (msg: string) => console.debug(msg),\n };\n\n private readonly mods: MODULES;\n\n private objectsInitDone = false;\n private statesInitDone = false;\n\n private objects: Record = {};\n private states: Record = {};\n private readonly interimStateValues: Record = {};\n private readonly stateIds: string[] = [];\n /** Fast O(1) lookup set – always kept in sync with stateIds */\n private readonly stateIdSet: Set = new Set();\n\n private readonly subscriptions: SubscriptionResult[] = [];\n /**\n * O(1) dispatch map for subscriptions with exact (non-wildcard) string IDs.\n * Always kept in sync with `subscriptions`.\n */\n private readonly subscriptionsMap: Map = new Map();\n /**\n * Subscriptions whose pattern.id is a RegExp, contains wildcards (*,?), or is undefined.\n * These must still be checked linearly on every state change.\n */\n private readonly subscriptionsWildcard: SubscriptionResult[] = [];\n private readonly subscriptionsFile: FileSubscriptionResult[] = [];\n private readonly subscriptionsObject: SubscribeObject[] = [];\n /** O(1) dispatch map for subscriptionsObject – pattern → subscribers */\n private readonly subscriptionsObjectMap: Map = new Map();\n /** IO-9: Cache for sendTo broadcast – adapterName → instance list, invalidated on object change */\n private readonly sendToInstanceCache: Map = new Map();\n private readonly subscribedPatterns: Record = {};\n private readonly subscribedPatternsFile: Record = {};\n private readonly adapterSubs: Record> = {};\n private readonly timers: { [scriptName: string]: JavascriptTimer[] } = {};\n /** Reverse-index: scriptName → Set of stateIds that have timers for this script – O(1) cleanup */\n private readonly timersByScript: Map> = new Map();\n /** O(1) Set for enum-id lookups – replaces sorted string[] array */\n private readonly _enums: Set = new Set();\n private readonly names: { [name: string]: string | string[] } = {}; // name: id\n /** Reverse map: id → name for O(1) getName() lookups */\n private readonly nameById: Map = new Map();\n private readonly scripts: Record = {};\n private password: string = '';\n private readonly messageBusHandlers: Record<\n string,\n Record void }[]>\n > = {};\n private readonly logSubscriptions: Record<\n string,\n {\n sandbox: SandboxType;\n cb: (info: LogMessage) => void;\n id: number;\n severity: ioBroker.LogLevel | '*';\n }[]\n > = {};\n private readonly tempDirectories: { [scriptName: string]: string } = {}; // name: path\n private readonly folderCreationVerifiedObjects: Record = {};\n\n /** if logs are subscribed or not */\n private logSubscribed = false;\n\n private timeSettings: {\n format12: boolean;\n leadingZeros: boolean;\n } = { format12: false, leadingZeros: true };\n\n private dayScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n private sunScheduleTimer: NodeJS.Timeout | null = null; // schedule for sun moment times\n private timeScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n\n private activeStr = ''; // enabled state prefix\n\n private mirror: Mirror | undefined;\n\n private stopCounters: Record = {};\n\n private setStateCountCheckInterval: NodeJS.Timeout | null = null;\n\n /**\n * Decrypted AI API keys cached from the central credential store (manager mode),\n * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the\n * subscriptions set up in `subscribeAiCredentials`.\n */\n private readonly aiCredentialCache: Map = new Map();\n /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */\n private aiCredentialUnsubscribers: (() => Promise)[] = [];\n\n private globalScript = '';\n /** Generated declarations for global TypeScripts */\n private globalDeclarations = '';\n // Remember which definitions the global scripts\n // have access to, because it depends on the compilation order\n private knownGlobalDeclarationsByScript: Record = {};\n private globalScriptLines = 0;\n // compiler instance for typescript\n private tsServer: Server;\n\n private readonly ignoreObjectChange: Set = new Set();\n\n private debugState: DebugState = {\n scriptName: '',\n child: null,\n promiseOnEnd: null,\n paused: false,\n started: 0,\n running: false,\n };\n\n constructor(options: Partial = {}) {\n options = {\n ...options,\n name: 'javascript', // adapter name\n useFormatDate: true,\n /**\n * If the JS-Controller catches an unhandled error, this will be called,\n * so we have a chance to handle it ourselves.\n */\n error: (err: Error): boolean => {\n // Identify unhandled errors originating from callbacks in scripts\n // These are not caught by wrapping the execution code in try-catch\n if (err && typeof err.stack === 'string') {\n const scriptCodeMarkerIndex = err.stack.indexOf(SCRIPT_CODE_MARKER);\n if (scriptCodeMarkerIndex > -1) {\n // This is a script error\n let scriptName = err.stack.substring(scriptCodeMarkerIndex);\n scriptName = scriptName.substring(0, scriptName.indexOf(':'));\n this.logError(scriptName, 'Error:', err);\n\n // Leave the script running for now\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n // check if a path contains adaptername but not own node_module\n // this regex matched \"iobroker.javascript/\" if NOT followed by \"node_modules\"\n if (!err.stack.match(/iobroker\\.javascript[/\\\\](?!.*node_modules).*/g)) {\n // This is an error without any info on origin (mostly async errors like connection errors)\n // also consider it as being from a script\n this.log.error(\n 'An error happened which is most likely from one of your scripts, but the originating script could not be detected.',\n );\n this.log.error(`Error: ${err.message}`);\n this.log.error(err.stack);\n\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n }\n\n return false;\n },\n };\n\n super(options as AdapterOptions);\n\n this.on('objectChange', this.onObjectChange.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('ready', this.onReady.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.on('fileChange', this.onFileChange.bind(this));\n this.on('log', this.onLog.bind(this));\n\n this.mods = {\n fs: {} as ProtectFs,\n 'fs/promises': {} as ProtectFs['promises'],\n dgram,\n crypto,\n dns,\n events,\n http,\n https,\n http2,\n net,\n os,\n path,\n util,\n child_process,\n stream,\n zlib,\n\n suncalc,\n axios,\n wake_on_lan,\n nodeSchedule,\n };\n\n // check the webstorm debug and just debug modes\n let debugMode: string | undefined;\n if (process.argv) {\n for (let a = 1; a < process.argv.length; a++) {\n if (process.argv[a].startsWith('--webstorm')) {\n webstormDebug = process.argv[a].replace(/^(.*?=\\s*)/, '');\n }\n if (process.argv[a] === '--debugScript') {\n if (!process.argv[a + 1]) {\n console.log('No script name provided');\n process.exit(300);\n } else {\n debugMode = process.argv[a + 1];\n }\n }\n }\n }\n\n this.context = {\n mods: this.mods,\n objects: this.objects,\n states: this.states,\n interimStateValues: this.interimStateValues,\n stateIds: this.stateIds,\n errorLogFunction: this.errorLogFunction,\n subscriptions: this.subscriptions,\n subscriptionsMap: this.subscriptionsMap,\n subscriptionsWildcard: this.subscriptionsWildcard,\n subscriptionsFile: this.subscriptionsFile,\n subscriptionsObject: this.subscriptionsObject,\n subscriptionsObjectMap: this.subscriptionsObjectMap,\n sendToInstanceCache: this.sendToInstanceCache,\n subscribedPatterns: this.subscribedPatterns,\n subscribedPatternsFile: this.subscribedPatternsFile,\n adapterSubs: this.adapterSubs,\n cacheObjectEnums: {},\n timers: this.timers,\n timersByScript: this.timersByScript,\n enums: this._enums,\n names: this.names,\n scripts: this.scripts,\n messageBusHandlers: this.messageBusHandlers,\n logSubscriptions: this.logSubscriptions,\n tempDirectories: this.tempDirectories,\n folderCreationVerifiedObjects: this.folderCreationVerifiedObjects,\n\n isEnums: false, // If some subscription wants enum\n channels: null,\n devices: null,\n logWithLineInfo: this.logWithLineInfo.bind(this),\n scheduler: null,\n timerId: 0,\n rulesOpened: null, // opened rules\n language: this.language || 'en',\n\n updateLogSubscriptions: this.updateLogSubscriptions.bind(this),\n convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),\n updateObjectContext: this.updateObjectContext.bind(this),\n prepareStateObject: this.prepareStateObject.bind(this),\n debugMode,\n getAbsoluteDefaultDataDir,\n adapter: this as unknown as ioBroker.Adapter,\n logError: this.logError.bind(this),\n allowSelfSignedCerts: false,\n };\n\n this.tsServer = new Server(tsCompilerOptions, this.tsLog);\n }\n\n async onObjectChange(id: string, obj?: ioBroker.Object | null): Promise {\n // Check if we should ignore this change (once!) because we just updated the compiled sources\n if (this.ignoreObjectChange.has(id)) {\n // Update the cached script object and do nothing more\n this.objects[id] = obj as ioBroker.Object;\n this.ignoreObjectChange.delete(id);\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.objectsInitDone) {\n if (obj) {\n this.objects[id] = obj;\n }\n return;\n }\n\n if (id.startsWith('enum.')) {\n // clear cache\n this.context.cacheObjectEnums = {};\n\n // update this._enums Set\n if (obj) {\n this._enums.add(id);\n } else {\n this._enums.delete(id);\n }\n }\n\n // IO-9: Invalidate sendTo instance-cache when adapter instances change\n if (id.startsWith('system.adapter.')) {\n const parts = id.split('.');\n if (parts.length >= 3) {\n const adapterName = parts[2]; // e.g. \"zigbee\" from \"system.adapter.zigbee.0\"\n this.sendToInstanceCache.delete(adapterName);\n }\n }\n\n if (id === 'system.config' && obj?.common?.language) {\n // set language for debug messages\n setLanguage(obj.common.language);\n this.language = obj.common.language;\n this.context.language = this.language as ioBroker.Languages;\n }\n\n // update stored time format for variables.dayTime\n if (id === `${this.namespace}.variables.dayTime` && obj?.native) {\n this.timeSettings.format12 = obj.native.format12 || false;\n this.timeSettings.leadingZeros = obj.native.leadingZeros === undefined ? true : obj.native.leadingZeros;\n }\n\n // send changes to the disk mirror\n this.mirror?.onObjectChange(id, obj as ioBroker.ScriptObject | null);\n\n const formerObj = this.objects[id];\n\n this.updateObjectContext(id, obj); // Update all Meta object data\n\n // for the alias object changes on the state objects, we need to manually update the\n // state cache value, because the new value is only published on the next change\n if (obj?.type === 'state' && id.startsWith('alias.0.')) {\n // execute async for speed\n this.getForeignStateAsync(id)\n .then(state => {\n if (state) {\n this.states[id] = state;\n } else if (this.states[id] !== undefined) {\n delete this.states[id];\n }\n })\n .catch(() => {\n /* ignore */\n });\n }\n\n // O(1) dispatch via pattern map instead of O(n) forEach\n const objSubs = this.subscriptionsObjectMap.get(id);\n if (objSubs) {\n for (const sub of objSubs) {\n try {\n sub.callback(id, obj);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n\n // handle Script object updates\n if (!obj && formerObj?.type === 'script') {\n // Object Deleted just now\n if (checkIsGlobal(formerObj)) {\n // it was a global Script, and it was enabled and is now deleted => restart adapter\n if (formerObj.common.enabled) {\n this.log.info(`Active global Script ${id} deleted. Restart instance.`);\n this.restart();\n }\n } else if (formerObj.common?.engine === `system.adapter.${this.namespace}`) {\n // It was a non-global Script and deleted => stop and remove it\n await this.stopScript(id);\n\n // delete scriptEnabled.blabla variable\n const idActive = `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idActive);\n await this.delObjectAsync(idActive);\n\n // delete scriptProblem.blabla variable\n const idProblem = `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idProblem);\n await this.delObjectAsync(idProblem);\n }\n } else if (!formerObj && obj?.type === 'script') {\n // New script that does not exist before\n if (checkIsGlobal(obj)) {\n // new global script added => restart adapter\n if (obj.common.enabled) {\n this.log.info(`Active global Script ${id} created. Restart instance.`);\n this.restart();\n }\n } else if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // new non-global script - create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n if (obj.common.enabled) {\n // if enabled => Start a script\n await this.loadScriptById(id);\n }\n }\n } else if (obj?.type === 'script' && formerObj?.common) {\n // Script changed ...\n if (checkIsGlobal(obj)) {\n if (obj.common.enabled || formerObj.common.enabled) {\n this.log.info(`Global Script ${id} updated. Restart instance.`);\n this.restart();\n }\n } else {\n // No global script\n if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n }\n\n if (\n (formerObj.common.enabled && !obj.common.enabled) ||\n (formerObj.common.engine === `system.adapter.${this.namespace}` &&\n obj.common.engine !== `system.adapter.${this.namespace}`)\n ) {\n // Script disabled\n if (formerObj.common.enabled && formerObj.common.engine === `system.adapter.${this.namespace}`) {\n // Remove it from executing\n await this.stopScript(id);\n }\n } else if (\n (!formerObj.common.enabled && obj.common.enabled) ||\n (formerObj.common.engine !== `system.adapter.${this.namespace}` &&\n obj.common.engine === `system.adapter.${this.namespace}`)\n ) {\n // Script enabled\n\n if (obj.common.enabled && obj.common.engine === `system.adapter.${this.namespace}`) {\n // Start script\n await this.loadScriptById(id);\n }\n } else if (\n obj.common.engine === `system.adapter.${this.namespace}` ||\n formerObj.common.engine === `system.adapter.${this.namespace}`\n ) {\n // Source changed => restart the script (only on the relevant instance)\n this.stopCounters[id] = this.stopCounters[id] ? this.stopCounters[id] + 1 : 1;\n void this.stopScript(id).then(() => {\n // only start again after stop when \"last\" object change to prevent problems on\n // multiple changes in fast frequency\n if (!--this.stopCounters[id]) {\n void this.loadScriptById(id);\n }\n });\n }\n }\n }\n }\n\n onStateChange(id: string, state?: ioBroker.State | null): void {\n if (this.interimStateValues[id] !== undefined) {\n // any update invalidates the remembered interim value\n delete this.interimStateValues[id];\n }\n if (!id || id.startsWith('messagebox.') || id.startsWith('log.')) {\n return;\n }\n\n if (id === `${this.namespace}.debug.to` && state && !state.ack) {\n if (!this.context.debugMode) {\n this.debugSendToInspector(state.val);\n }\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.statesInitDone) {\n if (state) {\n this.states[id] = state;\n }\n return;\n }\n\n const oldState: ioBroker.State | null | undefined = this.states[id];\n if (state) {\n if (oldState) {\n // enable or disable script\n if (!state.ack && id.startsWith(this.activeStr) && this.objects[id]?.native?.script) {\n void this.extendForeignObject(this.objects[id].native.script, {\n common: { enabled: state.val },\n });\n }\n\n // monitor if the adapter is alive and send all subscriptions once more, after the adapter goes online\n if (/*oldState && */ oldState.val === false && state.val && id.endsWith('.alive')) {\n if (this.adapterSubs[id]) {\n const parts = id.split('.');\n const a = `${parts[2]}.${parts[3]}`;\n for (const sub of this.adapterSubs[id]) {\n this.log.info(`Detected coming adapter \"${a}\". Send subscribe: ${sub}`);\n this.sendTo(a, 'subscribe', sub);\n }\n }\n }\n } else if (/*!oldState && */ !this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n this.states[id] = state;\n } else {\n if (oldState) {\n delete this.states[id];\n }\n state = {} as ioBroker.State;\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n }\n\n // Collect matching subscriptions:\n // 1. O(1) exact-id map lookup – only buckets for this specific state id\n // 2. Linear scan over wildcard/regex subscriptions (unavoidable)\n // EventObj is created lazily – only when at least one subscription must be dispatched.\n const exactSubs = this.subscriptionsMap.get(id);\n const wildcardSubs = this.subscriptionsWildcard;\n const hasWork = (exactSubs && exactSubs.length > 0) || wildcardSubs.length > 0;\n\n if (!hasWork) {\n return;\n }\n\n let _eventObj: EventObj | null = null;\n const getEvent = (): EventObj => {\n if (!_eventObj) {\n _eventObj = createEventObject(\n this.context,\n id,\n this.convertBackStringifiedValues(id, state),\n this.convertBackStringifiedValues(id, oldState),\n );\n }\n return _eventObj;\n };\n\n if (exactSubs) {\n for (let i = 0, l = exactSubs.length; i < l; i++) {\n const sub = exactSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n // if this state matches any subscriptions\n for (let i = 0, l = wildcardSubs.length; i < l; i++) {\n const sub = wildcardSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n onFileChange(id: string, fileName: string, size: number | null): void {\n // if this file matches any subscriptions\n for (let i = 0, l = this.subscriptionsFile.length; i < l; i++) {\n const sub = this.subscriptionsFile[i];\n if (sub && fileMatching(sub, id, fileName)) {\n try {\n sub.callback(id, fileName, size, sub.withFile);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n async onUnload(callback: () => void): Promise {\n try {\n await this.debugStop();\n this.stopTimeSchedules();\n if (this.setStateCountCheckInterval) {\n clearInterval(this.setStateCountCheckInterval);\n this.setStateCountCheckInterval = null;\n }\n await this.unsubscribeAiCredentials();\n await this.stopAllScripts();\n } catch (err: unknown) {\n this.log.error(`Error during unload: ${(err as Error).message}`);\n } finally {\n if (typeof callback === 'function') {\n callback();\n }\n }\n }\n\n async onReady(): Promise {\n this.errorLogFunction = this.log;\n this.context.errorLogFunction = this.log;\n this.config.maxSetStatePerMinute = parseInt(this.config.maxSetStatePerMinute as unknown as string, 10) || 1000;\n this.config.maxTriggersPerScript = parseInt(this.config.maxTriggersPerScript as unknown as string, 10) || 100;\n\n if (this.supportsFeature?.('PLUGINS')) {\n const sentryInstance: InstanceType = this.getPluginInstance('sentry') as InstanceType<\n typeof SentryPlugin\n >;\n if (sentryInstance) {\n const Sentry = sentryInstance.getSentryObject();\n Sentry?.withScope(scope => {\n scope.addEventProcessor((event, _hint) => {\n if (event.exception?.values?.[0]) {\n const eventData = event.exception.values[0];\n if (\n eventData.stacktrace?.frames &&\n Array.isArray(eventData.stacktrace.frames) &&\n eventData.stacktrace.frames.length\n ) {\n // Exclude event if script Marker is included\n if (\n eventData.stacktrace.frames.find(frame =>\n frame.filename?.includes(SCRIPT_CODE_MARKER),\n )\n ) {\n return null;\n }\n // Exclude event if own directory is included but not inside own node_modules\n const ownNodeModulesDir = join(__dirname, 'node_modules');\n if (\n !eventData.stacktrace.frames.find(\n frame =>\n frame.filename?.includes(__dirname) &&\n !frame.filename.includes(ownNodeModulesDir),\n )\n ) {\n return null;\n }\n // We have exception data and did not sort it out, so report it\n return event;\n }\n }\n\n // No exception in it ... do not report\n return null;\n });\n });\n }\n }\n\n await this.main();\n }\n\n /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */\n private async readAiCredentialKey(id: string): Promise {\n try {\n const cred = await Credentials.getCredentials(this, id);\n return (cred?.values?.key || '').trim();\n } catch (e) {\n this.log.warn(`Cannot read AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`);\n return '';\n }\n }\n\n /**\n * Resolve the API key (and base URL) for an AI provider.\n *\n * In `manual` mode the key comes from the encryptedNative adapter config.\n * In `manager` mode the config only stores the ID of a credential in the central\n * ioBroker credential store (`system.credentials.*`); the actual key is taken from the\n * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are\n * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly.\n *\n * The settings-dialog Test button may pass form values that are not saved yet\n * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config.\n */\n private async resolveAiCredentials(\n provider: string,\n opts: {\n messageBaseUrl?: string;\n messageApiKey?: string;\n messageCredentialId?: string;\n credentialType?: 'manual' | 'manager';\n } = {},\n ): Promise<{ apiKey: string; baseUrl: string }> {\n const mode = opts.credentialType || this.config.credentialType || 'manual';\n if (mode === 'manager') {\n // The base URL is not a secret and is resolved the same way in both modes.\n const { baseUrl } = resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n const id = (opts.messageCredentialId || getProviderCredentialId(this.config, provider)).trim();\n if (!id) {\n return { apiKey: '', baseUrl };\n }\n // Prefer the cached value kept fresh by the credential subscription.\n const cached = this.aiCredentialCache.get(id);\n const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id);\n return { apiKey, baseUrl };\n }\n // Manual mode. The Test button sends the current form key (maybe empty) — let it win.\n if (opts.messageApiKey !== undefined) {\n return resolveTestCredentials(this.config, provider, opts.messageApiKey, opts.messageBaseUrl);\n }\n return resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n }\n\n /**\n * In `manager` mode, subscribe to all configured AI credentials so that edits made in the\n * admin credential manager (Settings → Credentials) are picked up live, without restarting\n * the adapter (the `system.credentials.*` objects are global, not part of the instance config).\n * The decrypted keys are cached and kept fresh by the subscription handlers.\n */\n private async subscribeAiCredentials(): Promise {\n // Always start from a clean state (idempotent — also used to re-subscribe).\n await this.unsubscribeAiCredentials();\n if (this.config.credentialType !== 'manager') {\n return;\n }\n // Collect the distinct credential IDs configured across all AI providers.\n const ids = new Set();\n for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) {\n const id = getProviderCredentialId(this.config, provider);\n if (id) {\n ids.add(id);\n }\n }\n for (const id of ids) {\n try {\n const unsubscribe = await Credentials.subscribeCredentials(\n this,\n id,\n (changedId, cred) => {\n if (cred) {\n this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim());\n this.log.debug(`AI credential \"${changedId}\" updated`);\n } else {\n // The credential was deleted\n this.aiCredentialCache.delete(changedId);\n this.log.debug(`AI credential \"${changedId}\" was deleted`);\n }\n },\n );\n this.aiCredentialUnsubscribers.push(unsubscribe);\n // Prime the cache with the current value (the handler may only fire on later changes).\n this.aiCredentialCache.set(id, await this.readAiCredentialKey(id));\n } catch (e) {\n this.log.warn(\n `Cannot subscribe to AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n if (this.aiCredentialUnsubscribers.length) {\n this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`);\n }\n }\n\n /** Tear down all AI credential subscriptions and clear the cache. */\n private async unsubscribeAiCredentials(): Promise {\n const unsubscribers = this.aiCredentialUnsubscribers;\n this.aiCredentialUnsubscribers = [];\n this.aiCredentialCache.clear();\n for (const unsubscribe of unsubscribers) {\n try {\n await unsubscribe();\n } catch (e) {\n this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n switch (obj?.command) {\n // process messageTo commands\n case 'toScript':\n case 'jsMessageBus':\n if (\n obj.message &&\n (obj.message.instance === null ||\n obj.message.instance === undefined ||\n `javascript.${obj.message.instance}` === this.namespace ||\n obj.message.instance === this.namespace)\n ) {\n Object.keys(this.messageBusHandlers).forEach(name => {\n // the script name could be script.js.xxx or only xxx\n if (\n (!obj.message.script || obj.message.script === name) &&\n this.messageBusHandlers[name][obj.message.message]\n ) {\n this.messageBusHandlers[name][obj.message.message].forEach(handler => {\n const sandbox = handler.sandbox;\n\n sandbox.verbose && sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');\n\n try {\n if (obj.callback) {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n\n this.sendTo(obj.from, obj.command, result, obj.callback);\n });\n } else {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n sandbox.verbose &&\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n });\n }\n } catch (err: unknown) {\n void this.setState(\n `scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`,\n true,\n true,\n );\n this.logError(name, 'Error in callback:', err as Error);\n }\n });\n }\n });\n }\n break;\n\n case 'loadTypings': {\n // Load typings for the editor\n const typings: Record = {};\n\n // try to load TypeScript lib files from disk\n try {\n const typescriptLibs = resolveTypescriptLibs(targetTsLib);\n Object.assign(typings, typescriptLibs);\n } catch {\n /* ok, no lib then */\n }\n\n // provide the already-loaded ioBroker typings and global script declarations\n Object.assign(typings, tsAmbient);\n\n // also provide the known global declarations for each global script\n for (const globalScriptPaths of Object.keys(this.knownGlobalDeclarationsByScript)) {\n typings[`${globalScriptPaths}.d.ts`] = this.knownGlobalDeclarationsByScript[globalScriptPaths];\n }\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { typings }, obj.callback);\n }\n break;\n }\n\n case 'calcAstroAll': {\n if (obj.message) {\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n let astroEvents: GetTimesResult & { nextSunrise: Date; nextSunset: Date } = {} as GetTimesResult & {\n nextSunrise: Date;\n nextSunset: Date;\n };\n try {\n astroEvents = this.mods.suncalc.getTimes(today, latitude, longitude);\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n if (astroEvents) {\n try {\n astroEvents.nextSunrise = this.getAstroEvent(\n today,\n obj.message.sunriseEvent || this.config.sunriseEvent,\n obj.message.sunriseLimitStart || this.config.sunriseLimitStart,\n obj.message.sunriseLimitEnd || this.config.sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n astroEvents.nextSunset = this.getAstroEvent(\n today,\n obj.message.sunsetEvent || this.config.sunsetEvent,\n obj.message.sunsetLimitStart || this.config.sunsetLimitStart,\n obj.message.sunsetLimitEnd || this.config.sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n }\n\n const result: Record = {};\n const keys = Object.keys(astroEvents).sort(\n (a, b) =>\n (astroEvents as unknown as Record)[a] -\n (astroEvents as unknown as Record)[b],\n );\n keys.forEach(key => {\n const validDate =\n (astroEvents as unknown as Record)[key] !== null &&\n !isNaN((astroEvents as unknown as Record)[key].getTime());\n\n result[key] = {\n isValidDate: validDate,\n serverTime: validDate\n ? formatHoursMinutesSeconds((astroEvents as unknown as Record)[key])\n : 'n/a',\n date: validDate\n ? (astroEvents as unknown as Record)[key].toISOString()\n : 'n/a',\n };\n });\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, result, obj.callback);\n }\n }\n break;\n }\n\n case 'calcAstro': {\n if (obj.message) {\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n\n const sunriseEvent = obj.message?.sunriseEvent || this.config.sunriseEvent;\n const sunriseLimitStart = obj.message?.sunriseLimitStart || this.config.sunriseLimitStart;\n const sunriseLimitEnd = obj.message?.sunriseLimitEnd || this.config.sunriseLimitEnd;\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const nextSunrise = this.getAstroEvent(\n today,\n sunriseEvent,\n sunriseLimitStart,\n sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n\n const sunsetEvent = obj.message?.sunsetEvent || this.config.sunsetEvent;\n const sunsetLimitStart = obj.message?.sunsetLimitStart || this.config.sunsetLimitStart;\n const sunsetLimitEnd = obj.message?.sunsetLimitEnd || this.config.sunsetLimitEnd;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const nextSunset = this.getAstroEvent(\n today,\n sunsetEvent,\n sunsetLimitStart,\n sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n\n const validDateSunrise = nextSunrise !== null && !isNaN(nextSunrise.getTime());\n const validDateSunset = nextSunset !== null && !isNaN(nextSunset.getTime());\n\n this.log.debug(\n `calcAstro sunrise: ${sunriseEvent} -> start ${sunriseLimitStart}, end: ${sunriseLimitEnd}, offset: ${sunriseOffset} - ${validDateSunrise ? nextSunrise.toISOString() : 'n/a'}`,\n );\n this.log.debug(\n `calcAstro sunset: ${sunsetEvent} -> start ${sunsetLimitStart}, end: ${sunsetLimitEnd}, offset: ${sunsetOffset} - ${validDateSunset ? nextSunset.toISOString() : 'n/a'}`,\n );\n\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n nextSunrise: {\n isValidDate: validDateSunrise,\n serverTime: validDateSunrise ? formatHoursMinutesSeconds(nextSunrise) : 'n/a',\n date: nextSunrise.toISOString(),\n },\n nextSunset: {\n isValidDate: validDateSunset,\n serverTime: validDateSunset ? formatHoursMinutesSeconds(nextSunset) : 'n/a',\n date: nextSunset.toISOString(),\n },\n },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'debug': {\n if (!this.context.debugMode) {\n this.debugStart(obj.message);\n }\n break;\n }\n\n case 'debugStop': {\n if (!this.context.debugMode) {\n void this.debugStop().then(() => console.log('stopped'));\n }\n break;\n }\n\n case 'rulesOn': {\n this.context.rulesOpened = obj.message;\n console.log(`Enable messaging for ${this.context.rulesOpened}`);\n break;\n }\n\n case 'rulesOff': {\n // maybe if (context.rulesOpened === obj.message)\n console.log(`Disable messaging for ${this.context.rulesOpened}`);\n this.context.rulesOpened = null;\n break;\n }\n\n case 'getIoBrokerDataDir': {\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n dataDir: getAbsoluteDefaultDataDir(),\n sep,\n },\n obj.callback,\n );\n }\n break;\n }\n\n case 'chatCompletion': {\n // Proxy chat completion requests to an OpenAI-compatible API endpoint.\n // API keys are resolved server-side from the encryptedNative config or the central\n // credentials manager — they never leave the adapter (frontend only sends `provider`).\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const chatModel = (obj.message?.model || '').trim();\n const messages = obj.message?.messages;\n const tools = obj.message?.tools;\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageBaseUrl: obj.message?.baseUrl,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n if (!chatModel || !messages) {\n this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback);\n return;\n }\n\n let url: string;\n const chatHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n let bodyObj: Record;\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/messages';\n chatHeaders['x-api-key'] = apiKey;\n chatHeaders['anthropic-version'] = '2023-06-01';\n // Translate OpenAI-format messages/tools into Anthropic's content-block format.\n const { system: systemText, messages: anthropicMessages } =\n translateMessagesToAnthropic(messages);\n const anthropicTools = tools?.length ? translateToolsToAnthropic(tools) : [];\n bodyObj = {\n model: chatModel,\n max_tokens: 8192,\n stream: false,\n ...(systemText ? { system: systemText } : {}),\n messages: anthropicMessages,\n ...(anthropicTools.length ? { tools: anthropicTools } : {}),\n };\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions';\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/chat/completions';\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/chat/completions`;\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = {\n model: chatModel,\n messages,\n stream: false,\n ...(tools?.length ? { tools } : {}),\n // Disable thinking/reasoning for local models to save context and speed\n ...(baseUrl ? { reasoning_effort: 'none' } : {}),\n };\n }\n\n const body = JSON.stringify(bodyObj);\n const bodyBuffer = Buffer.from(body, 'utf8');\n chatHeaders['Content-Length'] = bodyBuffer.length;\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'POST',\n headers: chatHeaders,\n timeout: 600000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n let content: string;\n let tool_calls: unknown;\n if (provider === 'anthropic') {\n const translated = translateAnthropicResponseToOpenAI(parsed);\n content = translated.content;\n tool_calls = translated.tool_calls;\n } else {\n const message = parsed.choices?.[0]?.message;\n content = message?.content || '';\n tool_calls = message?.tool_calls;\n }\n if (!content && !(tool_calls as unknown[] | undefined)?.length) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Empty response from API' },\n obj.callback,\n );\n } else {\n this.sendTo(\n obj.from,\n obj.command,\n {\n success: true,\n content,\n ...(tool_calls ? { tool_calls } : {}),\n },\n obj.callback,\n );\n }\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else {\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (600s)' }, obj.callback);\n });\n\n req.write(bodyBuffer);\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'testApiConnection': {\n // Test connection to an OpenAI-compatible API endpoint.\n // The settings-dialog Test button sends the current form value as `apiKey`\n // (so users can test before saving); otherwise we fall back to the stored key.\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageApiKey: obj.message?.apiKey,\n messageBaseUrl: obj.message?.baseUrl,\n messageCredentialId: obj.message?.credentialId,\n credentialType: obj.message?.credentialType,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n\n let url: string;\n const testHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/models';\n testHeaders['x-api-key'] = apiKey;\n testHeaders['anthropic-version'] = '2023-06-01';\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/models';\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/models';\n testHeaders.Authorization = `Bearer ${apiKey}`;\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/models`;\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'GET',\n headers: testHeaders,\n timeout: 10000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n const models: string[] = (parsed.data || [])\n .map((m: { id: string }) =>\n m.id.startsWith('models/') ? m.id.substring(7) : m.id,\n )\n .sort();\n this.sendTo(\n obj.from,\n obj.command,\n { success: true, models, count: models.length },\n obj.callback,\n );\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else if (res.statusCode === 401) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid API key (401)' },\n obj.callback,\n );\n } else if (res.statusCode === 403) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Access denied (403)' },\n obj.callback,\n );\n } else {\n // Include response body for debugging\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (10s)' }, obj.callback);\n });\n\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'getAvailableAiProviders': {\n // Reports which AI providers have stored credentials (keys never leave the backend).\n if (obj.callback) {\n const providers = listAvailableProviders(this.config);\n this.sendTo(obj.from, obj.command, { providers }, obj.callback);\n }\n break;\n }\n\n case 'prettier': {\n // Format the code with Prettier\n if (obj.message && typeof obj.message.code === 'string') {\n try {\n prettier\n .format(obj.message.code, {\n parser: obj.message.type === 'typescript' ? 'babel-ts' : 'babel',\n printWidth: 120,\n semi: true,\n tabWidth: 4,\n useTabs: false,\n trailingComma: 'all',\n singleQuote: true,\n singleAttributePerLine: true,\n endOfLine: 'lf',\n bracketSpacing: true,\n arrowParens: 'avoid',\n quoteProps: 'as-needed',\n })\n .then(formattedCode => {\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { code: formattedCode }, obj.callback);\n } else {\n this.logWithLineInfo(`Formatted code:\\n${formattedCode}`);\n }\n })\n .catch(e => {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n });\n } catch (e) {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n }\n } else {\n this.sendTo(obj.from, obj.command, { error: 'No code provided' }, obj.callback);\n }\n break;\n }\n }\n }\n\n onLog(msg: any): void {\n for (const name of Object.keys(this.logSubscriptions)) {\n for (const handler of this.logSubscriptions[name]) {\n if (\n typeof handler.cb === 'function' &&\n (handler.severity === '*' || handler.severity === msg.severity)\n ) {\n handler.sandbox.logHandler = handler.severity || '*';\n handler.cb.call(handler.sandbox, msg);\n handler.sandbox.logHandler = undefined;\n }\n }\n }\n }\n\n logError(scriptName: string, msg: string, e: Error, offs?: number): void {\n const stack = e.stack ? e.stack.toString().split('\\n') : e ? e.toString() : '';\n if (!msg.includes('\\n')) {\n msg = msg.replace(/[: ]*$/, ': ');\n }\n if (!msg.endsWith(' ')) {\n msg += ':';\n }\n if (!scriptName.startsWith(SCRIPT_CODE_MARKER)) {\n scriptName = SCRIPT_CODE_MARKER + scriptName;\n }\n\n this.errorLogFunction.error(`${scriptName}: ${msg}${this.fixLineNo(stack[0])}`);\n for (let i = offs || 1; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.error(`${scriptName}: ${this.fixLineNo(stack[i])}`);\n }\n }\n\n logWithLineInfo(msg: string): void {\n this.errorLogFunction.warn(msg);\n\n // get current error stack\n const stack = new Error().stack?.split('\\n');\n\n if (stack) {\n for (let i = 3; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInContext|runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.warn(this.fixLineNo(stack[i]));\n }\n }\n }\n\n async main(): Promise {\n // Patch the font as it sometimes is wrong\n if (!this.context.debugMode) {\n if (await this.patchFont()) {\n this.log.debug('Font patched');\n }\n }\n\n this.log.debug(`config.subscribe (Do not subscribe all states on start): ${this.config.subscribe}`);\n\n // correct jsonConfig for admin\n const instObj: ioBroker.InstanceObject | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (instObj?.common) {\n if (instObj.common.adminUI?.config !== 'json') {\n if (instObj.common.adminUI) {\n instObj.common.adminUI.config = 'json';\n } else {\n instObj.common.adminUI = { config: 'json' };\n }\n void this.setForeignObject(instObj._id, instObj);\n }\n }\n\n if (webstormDebug) {\n this.errorLogFunction = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n debug: console.log,\n silly: console.log,\n };\n this.context.errorLogFunction = this.errorLogFunction;\n }\n this.activeStr = `${this.namespace}.scriptEnabled.`;\n\n this.mods.fs = new ProtectFs(this.log, getAbsoluteDefaultDataDir());\n this.mods['fs/promises'] = this.mods.fs.promises; // to avoid require('fs/promises');\n\n // try to read TS declarations\n try {\n tsAmbient = {\n 'javascript.d.ts': readFileSync(this.mods.path.join(__dirname, 'lib/javascript.d.ts'), 'utf8'),\n };\n this.tsServer.provideAmbientDeclarations(tsAmbient);\n jsDeclarationServer.provideAmbientDeclarations(tsAmbient);\n } catch (err: unknown) {\n this.log.warn(`Could not read TypeScript ambient declarations: ${err as Error}`);\n // This should not happen, so send an error report to Sentry\n if (this.supportsFeature && this.supportsFeature('PLUGINS')) {\n const sentryInstance = this.getPluginInstance('sentry');\n if (sentryInstance) {\n const sentryObject = sentryInstance.getSentryObject();\n sentryObject?.captureException(err as Error);\n }\n }\n // Keep the adapter from crashing when the included typings cannot be read\n tsAmbient = {};\n }\n\n await this.installLibraries();\n // Load the TS declarations for Node.js and all 3rd party modules\n this.loadTypeScriptDeclarations();\n\n await this.getData();\n this.context.scheduler = new Scheduler(\n this.log,\n Date,\n this.mods.suncalc,\n this.config.latitude,\n this.config.longitude,\n );\n await this.dayTimeSchedules();\n await this.sunTimeSchedules();\n await this.timeSchedule();\n\n // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it\n // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode)\n this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts;\n\n // In `manager` credential mode, subscribe to the configured AI credentials so changes in the\n // central credential store are picked up live (the keys are cached for the AI sendTo handlers).\n await this.subscribeAiCredentials();\n\n const doc = await this.getObjectViewAsync('script', 'javascript', {});\n if (doc?.rows?.length) {\n // sort global scripts if configured\n if (this.config.sortGlobalScriptsAlphabetically) {\n doc.rows.sort((a, b) => a.value._id.localeCompare(b.value._id));\n }\n // assemble global script\n for (let g = 0; g < doc.rows.length; g++) {\n const obj = doc.rows[g].value;\n if (checkIsGlobal(obj)) {\n if (obj && obj.common) {\n const engineType = (obj.common.engineType || '').toLowerCase();\n\n if (obj.common.enabled) {\n if (engineType.startsWith('typescript')) {\n // TypeScript\n this.log.info(`${obj._id}: compiling TypeScript source...`);\n // In order to compile global TypeScript, we need to do some transformations\n // 1. For top-level-await, some statements must be wrapped in an immediately-invoked async function\n // 2. If any global script uses `import`, the declarations are no longer visible if they are not exported with `declare global`\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, true);\n // The source code must be transformed in order to support top level await\n // Global scripts must not be treated as a module, otherwise their methods\n // cannot be found by the normal scripts\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash: string = hashSource(\n tsSourceHashBase + this.globalDeclarations + transformedSource,\n );\n\n let compiled: string | undefined;\n let declarations: string | undefined;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n declarations = obj.common.declarations;\n this.log.info(\n `${obj._id}: source code did not change, using cached compilation result...`,\n );\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n continue;\n }\n\n const errors = tsCompiled.diagnostics\n .map(diag => `${diag.annotatedSource}\\n`)\n .join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(\n `${obj._id}: TypeScript compilation completed with errors:\\n${errors}`,\n );\n } else {\n this.log.info(`${obj._id}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result;\n // Global scripts that have been transformed to support `import` need to have their declarations transformed aswell\n declarations = transformGlobalDeclarations(tsCompiled.declarations || '');\n\n const newCommon: {\n compiled: string | undefined;\n declarations?: string;\n sourceHash: string;\n } = {\n sourceHash,\n compiled,\n };\n if (declarations) {\n newCommon.declarations = declarations;\n }\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(obj._id); // ignore the next change and don't restart scripts\n void this.extendForeignObject(obj._id, {\n common: newCommon,\n });\n } else {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${errors}`);\n continue;\n }\n }\n this.globalScript += `${compiled}\\n`;\n // if declarations were generated, remember them\n if (declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, declarations);\n }\n } else {\n // javascript\n const sourceCode = obj.common.source;\n this.globalScript += `${sourceCode}\\n`;\n\n // try to compile the declarations so TypeScripts can use\n // functions defined in global JavaScripts\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = jsDeclarationServer.compile(filename, sourceCode);\n } catch (err: unknown) {\n this.log.warn(\n `${obj._id}: Error while generating type declarations, skipping:\\n${err as Error}`,\n );\n continue;\n }\n // if declarations were generated, remember them\n if (tsCompiled.success && tsCompiled.declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, tsCompiled.declarations);\n }\n }\n }\n }\n }\n }\n }\n\n this.globalScript = this.globalScript.replace(/\\r\\n/g, '\\n');\n this.globalScriptLines = this.globalScript.split(/\\n/g).length - 1;\n\n if (doc?.rows?.length) {\n // load all scripts\n for (let i = 0; i < doc.rows.length; i++) {\n if (!checkIsGlobal(doc.rows[i].value)) {\n void this.loadScript(doc.rows[i].value);\n }\n }\n }\n\n if (this.config.mirrorPath?.trim()) {\n this.config.mirrorInstance = parseInt(this.config.mirrorInstance as unknown as string, 10) || 0;\n if (this.instance === this.config.mirrorInstance) {\n const ioBDataDir = getAbsoluteDefaultDataDir() + sep;\n this.config.mirrorPath = normalize(this.config.mirrorPath);\n let mirrorForbidden = false;\n for (let dir of forbiddenMirrorLocations) {\n dir = join(ioBDataDir, dir) + sep;\n if (dir.includes(this.config.mirrorPath) || this.config.mirrorPath.startsWith(dir)) {\n this.log.error(`The Mirror directory is not allowed to be a central ioBroker directory!`);\n this.log.error(`Directory ${this.config.mirrorPath} is not allowed to mirror files!`);\n mirrorForbidden = true;\n break;\n }\n }\n if (!mirrorForbidden) {\n this.mirror = new Mirror({\n adapter: this,\n log: this.log,\n diskRoot: this.config.mirrorPath,\n });\n }\n }\n }\n\n // Check setState counter per minute and stop a script if too high\n this.setStateCountCheckInterval = setInterval(() => {\n for (const id of Object.keys(this.scripts)) {\n if (!this.scripts[id]) {\n continue;\n }\n const currentSetStatePerMinuteCounter = this.scripts[id].setStatePerMinuteCounter;\n this.scripts[id].setStatePerMinuteCounter = 0;\n if (currentSetStatePerMinuteCounter > this.config.maxSetStatePerMinute) {\n this.scripts[id].setStatePerMinuteProblemCounter++;\n this.log.debug(\n `${id}: Script has reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute in ${this.scripts[id].setStatePerMinuteProblemCounter} consecutive minutes`,\n );\n // Allow \"too high counters\" for 1 minute for script starts or such and only\n // stop the script when lasts longer\n if (this.scripts[id].setStatePerMinuteProblemCounter > 1) {\n this.log.error(\n `${id}: Script is calling setState more than ${this.config.maxSetStatePerMinute} times per minute! Stopping Script now! Please check your script!`,\n );\n void this.stopScript(id);\n }\n } else if (this.scripts[id].setStatePerMinuteProblemCounter > 0) {\n this.scripts[id].setStatePerMinuteProblemCounter--;\n this.log.debug(\n `Script ${id} has NOT reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute. Decrease problem counter to ${this.scripts[id].setStatePerMinuteProblemCounter}`,\n );\n }\n }\n }, 60_000).unref();\n }\n\n private loadTypeScriptDeclarations(): void {\n // try to load the typings on disk for all 3rd party modules\n const packages = [\n 'node', // this provides auto-completion for most builtins\n '@iobroker/types', // this provides auto-completion for most builtins\n ];\n // Also include user-selected libraries (but only those that are also installed)\n if (typeof this.config?.libraries === 'string' && typeof this.config.libraryTypings === 'string') {\n const installedLibs = this.config.libraries\n .split(/[,;\\s]+/)\n .map(s => s.trim().split('@')[0])\n .filter(s => !!s);\n\n const wantsTypings = this.config.libraryTypings\n .split(/[,;\\s]+/)\n .map(s => s.trim())\n .filter(s => !!s);\n\n // O(1) lookups – avoids O(n²) Array.includes inside loops\n const installedSet = new Set(installedLibs);\n const wantsSet = new Set(wantsTypings);\n const packagesSet = new Set(packages);\n\n // Add all installed libraries the user has requested typings for to the list of packages\n for (const lib of installedLibs) {\n if (wantsSet.has(lib) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n // Some packages have submodules (e.g., rxjs/operators) that are not exposed through the main entry point\n // If typings are requested for them, also add them if the base module is installed\n for (const lib of wantsTypings) {\n // Extract the package name and check if we need to add it\n if (!lib.includes('/')) {\n continue;\n }\n const pkgName = lib.substring(0, lib.indexOf('/'));\n\n if (installedSet.has(pkgName) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n }\n for (const pkg of packages) {\n let pkgTypings = resolveTypings(\n pkg,\n this.getAdapterScopedPackageIdentifier ? this.getAdapterScopedPackageIdentifier(pkg) : pkg,\n // node needs ambient typings, so we don't wrap it in declare module\n pkg !== 'node',\n );\n if (!pkgTypings) {\n // Create the empty dummy declarations so users don't get the \"not found\" error\n // for installed packages\n if (pkg.includes('/')) {\n pkgTypings = {\n [`node_modules/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n } else {\n pkgTypings = {\n [`node_modules/@types/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n }\n }\n this.log.debug(`Loaded TypeScript definitions for \"${pkg}\": ${JSON.stringify(Object.keys(pkgTypings))}`);\n // remember the declarations for the editor\n Object.assign(tsAmbient, pkgTypings);\n // and give the language servers access to them\n this.tsServer.provideAmbientDeclarations(pkgTypings);\n jsDeclarationServer.provideAmbientDeclarations(pkgTypings);\n }\n }\n\n updateObjectContext(id: string, obj: ioBroker.Object | null | undefined): void {\n if (obj) {\n // add state to state ID's list\n if (obj.type === 'state') {\n if (!this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn] ||= new Set();\n this.context.channels[chn].add(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev] ||= new Set();\n this.context.devices[dev].add(id);\n }\n }\n } else {\n // delete object from state ID's list\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn]?.delete(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev]?.delete(id);\n }\n\n delete this.folderCreationVerifiedObjects[id];\n }\n\n if (!obj && this.objects[id]) {\n // objects were deleted\n this.removeFromNames(id);\n delete this.objects[id];\n } else if (obj && !this.objects[id]) {\n // object was added\n this.objects[id] = obj;\n this.addToNames(obj);\n } else if (obj && this.objects[id].common) {\n // Object just changed\n this.objects[id] = obj;\n\n const n = this.getName(id);\n let nn = this.objects[id].common ? this.objects[id].common.name : '';\n\n if (nn && typeof nn === 'object') {\n nn = nn[getLanguage()] || nn.en;\n }\n\n if (n !== nn) {\n if (n) {\n this.removeFromNames(id);\n }\n if (nn) {\n this.addToNames(obj);\n }\n }\n }\n }\n\n async stopAllScripts(): Promise {\n const scripts = Object.keys(this.scripts);\n const promises: Promise[] = [];\n for (let i = 0; i < scripts.length; i++) {\n promises.push(this.stopScript(scripts[i]));\n }\n return Promise.all(promises).then(() => {});\n }\n\n convertBackStringifiedValues(\n id: string,\n state: ioBroker.State | null | undefined,\n ): ioBroker.State | null | undefined {\n if (\n state &&\n typeof state.val === 'string' &&\n this.objects[id]?.common &&\n (this.objects[id].common.type === 'array' || this.objects[id].common.type === 'object')\n ) {\n try {\n state.val = JSON.parse(state.val);\n } catch (err: any) {\n if (id.startsWith('javascript.') || id.startsWith('0_userdata.0')) {\n this.log.info(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n } else {\n this.log.debug(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n }\n }\n }\n return state;\n }\n\n prepareStateObjectSimple(id: string, state: ioBroker.StateValue, isAck: boolean): ioBroker.State {\n // otherwise, assume that the given state is the value to be set\n const oState: ioBroker.State = { val: state, ack: isAck } as ioBroker.State;\n\n return this.prepareStateObject(id, oState);\n }\n\n prepareStateObject(id: string, state: ioBroker.SettableState | null): ioBroker.State {\n let oState: ioBroker.State;\n\n if (state && typeof state === 'object') {\n oState = state as ioBroker.State;\n } else {\n oState = { val: null } as ioBroker.State;\n }\n\n if (this.config.subscribe) {\n return oState;\n }\n // set other values to have a full state object\n // mirrors logic from statesInRedis\n if (oState.ts === undefined) {\n oState.ts = Date.now();\n }\n\n if (oState.q === undefined) {\n oState.q = 0;\n }\n\n oState.from =\n typeof oState.from === 'string' && oState.from !== '' ? oState.from : `system.adapter.${this.namespace}`;\n\n if (oState.lc === undefined) {\n const formerStateValue = this.interimStateValues[id] || this.states[id];\n if (!formerStateValue) {\n oState.lc = oState.ts;\n } else {\n // isDeepStrictEqual works on objects and primitive values\n const hasChanged = !isDeepStrictEqual(formerStateValue.val, oState.val);\n if (!formerStateValue.lc || hasChanged) {\n oState.lc = oState.ts;\n } else {\n oState.lc = formerStateValue.lc;\n }\n }\n }\n\n return oState;\n }\n\n async getData(): Promise {\n await this.subscribeForeignObjectsAsync('*');\n\n if (!this.config.subscribe) {\n await this.subscribeForeignStatesAsync('*');\n } else {\n await this.subscribeStatesAsync('debug.to');\n await this.subscribeStatesAsync('scriptEnabled.*');\n }\n\n this.log.info('requesting all states');\n\n const statesPromise = this.getForeignStatesAsync('*')\n .then(res => {\n if (!res) {\n this.log.error(`Could not initialize states: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n if (!this.config.subscribe) {\n this.states = Object.assign(res, this.states);\n this.context.states = this.states;\n\n this.addGetProperty(this.states);\n }\n\n // remember all IDs – sort once to guarantee the sorted invariant\n // required by binaryIndexOf() / sortedInsert() used later\n const keys = Object.keys(res).sort();\n for (const id of keys) {\n this.stateIds.push(id);\n this.stateIdSet.add(id);\n }\n this.statesInitDone = true;\n this.log.info('received all states');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize states: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n this.log.info('requesting all objects');\n\n const objectsPromise = this.getObjectListAsync({ include_docs: true })\n .then(res => {\n if (!res?.rows) {\n this.log.error(`Could not initialize objects: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n this.objects = {};\n this.context.objects = this.objects;\n for (let i = 0; i < res.rows.length; i++) {\n const doc = res.rows[i]?.doc;\n if (!doc) {\n this.log.debug(`Got empty object for index ${i} (${res.rows[i].id})`);\n continue;\n }\n if (this.objects[doc._id] === undefined) {\n // If was already there, ignore\n this.objects[doc._id] = doc;\n }\n doc.type === 'enum' && this._enums.add(doc._id);\n\n // Collect all names\n this.addToNames(this.objects[doc._id]);\n }\n this.addGetProperty(this.objects);\n\n const systemConfig = this.objects['system.config'];\n this.password = systemConfig?.native?.javascriptPassword\n ? this.decrypt(systemConfig?.native.javascriptPassword)\n : '';\n\n // set language for debug messages\n if (systemConfig?.common?.language) {\n setLanguage(systemConfig.common.language);\n this.language = systemConfig.common.language;\n this.context.language = this.language as ioBroker.Languages;\n } else if (this.language) {\n setLanguage(this.language);\n this.context.language = this.language;\n }\n\n // try to use system coordinates\n if (this.config.useSystemGPS) {\n if (systemConfig?.common?.latitude || systemConfig?.common?.longitude) {\n this.config.latitude = systemConfig.common.latitude;\n this.config.longitude = systemConfig.common.longitude;\n } else if (this.latitude && this.longitude) {\n this.config.latitude = this.latitude;\n this.config.longitude = this.longitude;\n }\n }\n this.config.latitude = parseFloat(this.config.latitude as unknown as string);\n this.config.longitude = parseFloat(this.config.longitude as unknown as string);\n\n if (isNaN(this.config.latitude)) {\n this.log.warn(`Configured latitude is not a number - check (instance/system) configuration`);\n } else if (this.config.latitude < -90 || this.config.latitude > 90) {\n this.log.warn(\n `Configured latitude \"${this.config.latitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n if (isNaN(this.config.longitude)) {\n this.log.warn(`Configured longitude is not a number - check (instance/system) configuration`);\n } else if (this.config.longitude < -180 || this.config.longitude > 180) {\n this.log.warn(\n `Configured longitude \"${this.config.longitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n this.config.sunriseEvent ||= 'nightEnd';\n this.config.sunriseOffset ||= 0;\n this.config.sunriseLimitStart ||= '06:00';\n this.config.sunriseLimitEnd ||= '12:00';\n\n this.config.sunsetEvent ||= 'dusk';\n this.config.sunsetOffset ||= 0;\n this.config.sunsetLimitStart ||= '18:00';\n this.config.sunsetLimitEnd ||= '23:00';\n\n this.objectsInitDone = true;\n this.log.info('received all objects');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize objects: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n return Promise.all([statesPromise, objectsPromise]).then(() => {});\n }\n\n async createActiveObject(id: string, enabled: boolean): Promise {\n const idActive = `${this.namespace}.scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idActive]) {\n this.objects[idActive] = {\n _id: idActive,\n common: {\n name: `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'controls script activity',\n type: 'boolean',\n write: true,\n read: true,\n role: 'switch.active',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idActive, this.objects[idActive]);\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idActive);\n if (state && state.val !== enabled) {\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n }\n }\n }\n\n async createProblemObject(id: string): Promise {\n const idProblem = `${this.namespace}.scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idProblem]) {\n this.objects[idProblem] = {\n _id: idProblem,\n common: {\n name: `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'Script has a problem',\n type: 'boolean',\n expert: true,\n write: false,\n read: true,\n role: 'indicator.error',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idProblem, this.objects[idProblem]);\n await this.setForeignStateAsync(idProblem, false, true);\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idProblem);\n if (state && state.val !== false) {\n await this.setForeignStateAsync(idProblem, false, true);\n }\n }\n }\n\n addToNames(obj: ioBroker.Object): void {\n const id = obj._id;\n\n if (obj.common?.name) {\n let name = obj.common.name;\n if (name && typeof name === 'object') {\n name = name[getLanguage()] || name.en;\n }\n if (!name || typeof name !== 'string') {\n // TODO, take name in current language\n return;\n }\n\n if (!this.names[name]) {\n this.names[name] = id;\n } else {\n // convert to array\n if (!Array.isArray(this.names[name])) {\n this.names[name] = [this.names[name] as string];\n }\n\n (this.names[name] as string[]).push(id);\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.set(id, name);\n }\n }\n\n removeFromNames(id: string): void {\n const n = this.getName(id);\n\n if (n) {\n if (Array.isArray(this.names[n])) {\n const arr = this.names[n];\n const pos = arr.indexOf(id);\n if (pos > -1) {\n arr.splice(pos, 1);\n if (arr.length === 1) {\n this.names[n] = arr[0];\n }\n }\n } else {\n delete this.names[n];\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.delete(id);\n }\n }\n\n getName(id: string): string | null {\n return this.nameById.get(id) ?? null;\n }\n\n async installNpm(npmLib: string): Promise {\n return new Promise((resolve, reject) => {\n const path = __dirname;\n\n // Also, set the working directory (cwd) of the process instead of using --prefix\n // because that has ugly bugs on Windows\n const cmd = `npm install ${npmLib} --omit=dev`;\n this.log.info(`Installing ${npmLib} into ${__dirname} - cmd: ${cmd}`);\n\n // System call used for update of js-controller itself,\n // because during the installation the npm packet will be deleted too, but some files must be loaded even during the installation process.\n const child = this.mods.child_process.exec(cmd, {\n windowsHide: true,\n cwd: path,\n timeout: 120_000, // 2 minutes max – prevents infinite blocking\n });\n\n child.stdout?.on('data', buf => this.log.info(buf.toString('utf8')));\n\n child.stderr?.on('data', buf => this.log.error(buf.toString('utf8')));\n\n child.on('err', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n child.on('error', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n\n child.on('exit', (code: number /* , signal */) => {\n if (code) {\n this.log.error(`Cannot install ${npmLib}: ${code}`);\n reject(new Error(`Cannot install ${npmLib}: ${code}`));\n }\n // command succeeded\n resolve(code);\n });\n });\n }\n\n async installLibraries(): Promise {\n if (typeof this.config?.libraries !== 'string') {\n this.config.libraries = '';\n }\n\n const libraries: string[] = this.config.libraries\n .split(/[,;\\s]+/)\n .map(d => d.trim())\n .filter(d => d);\n\n this.log.debug(`Custom libraries in config: \"${this.config.libraries}\": ${JSON.stringify(libraries)}`);\n\n let installedNodeModules: string[] = [];\n const keepModules: string[] = [];\n\n // js-controller >= 6.x\n if (typeof this.listInstalledNodeModules === 'function') {\n installedNodeModules = await this.listInstalledNodeModules();\n\n this.log.debug(`Found installed libraries: ${JSON.stringify(installedNodeModules)}`);\n }\n\n for (const lib of libraries) {\n let depName = lib;\n let version = 'latest';\n\n if (depName.includes('@') && depName.lastIndexOf('@') > 0) {\n const parts = depName.split('@');\n version = parts.pop() ?? 'latest';\n depName = parts.join('@');\n }\n\n /** The real module name, because the dependency can be a URL too */\n let moduleName = depName;\n\n if (URL.canParse(depName)) {\n moduleName = await requestModuleNameByUrl(depName);\n\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\" (from ${depName})`);\n } else {\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\"`);\n }\n\n keepModules.push(moduleName);\n\n // js-controller >= 6.x\n if (typeof this.installNodeModule === 'function') {\n try {\n const result = await this.installNodeModule(depName, { version });\n if (result.success) {\n this.log.debug(`Installed custom library: \"${moduleName}@${version}\"`);\n\n const importedModule: any = await this.importNodeModule(moduleName);\n (this.mods as Record)[moduleName] = importedModule.default ?? importedModule;\n } else {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\"`);\n }\n } catch (err: unknown) {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\": ${err as Error}`);\n }\n } else if (!existsSync(`${__dirname}/node_modules/${depName}/package.json`)) {\n // js-controller < 6.x\n this.log.info(`Installing custom library (legacy mode): \"${lib}\"`);\n\n try {\n await this.installNpm(lib);\n this.log.info(`Installed custom npm package (legacy mode): \"${lib}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot install custom npm package \"${lib}\" (legacy mode): ${err.toString()}`);\n }\n }\n }\n\n // js-controller >= 6.x\n if (typeof this.uninstallNodeModule === 'function') {\n for (const installedNodeModule of installedNodeModules) {\n if (!keepModules.includes(installedNodeModule)) {\n try {\n await this.uninstallNodeModule(installedNodeModule);\n\n this.log.info(`Removed custom npm package: \"${installedNodeModule}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot remove custom npm package ${installedNodeModule}: ${err.toString()}`);\n }\n }\n }\n }\n }\n\n createVM(source: string, name: string, wrapAsync: boolean): false | JsScript {\n if (this.context.debugMode && name !== this.context.debugMode) {\n return false;\n }\n\n if (!this.context.debugMode) {\n const logSubscriptionsText =\n \"\\n;\\nlog(`registered ${__engine.__subscriptions} subscription${__engine.__subscriptions === 1 ? '' : 's'},\" +\n \" ${__engine.__schedules} schedule${__engine.__schedules === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsMessage} message${__engine.__subscriptionsMessage === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsLog} log${__engine.__subscriptionsLog === 1 ? '' : 's'}\" +\n \" and ${__engine.__subscriptionsFile} file subscription${__engine.__subscriptionsFile === 1 ? '' : 's'}`);\\n\";\n\n if (wrapAsync) {\n source = `(async () => {\\n${source}\\n${logSubscriptionsText}\\n})();`;\n } else {\n if (source.endsWith('export {};\\n')) {\n // If the source ends with \"export {};\" place the log subscriptions before it\n source = source.slice(0, -11); // remove \"export {};\\n\"\n source = `${source}\\n${logSubscriptionsText}\\nexport {};\\n`;\n } else {\n source = `${source}\\n${logSubscriptionsText}`;\n }\n }\n } else {\n if (wrapAsync) {\n source = `(async () => {debugger;\\n${source}\\n})();`;\n } else {\n source = `debugger;${source}`;\n }\n }\n\n try {\n const options: ScriptOptions = {\n filename: name,\n // displayErrors: true,\n // lineOffset: this.globalScriptLines\n };\n return {\n script: new Script(source, options),\n } as JsScript;\n } catch (err: unknown) {\n this.logError(name, `compile failed at`, err as Error);\n return false;\n }\n }\n\n execute(script: JsScript, name: string, engineType: ScriptType, verbose: boolean, debug: boolean): void {\n script.intervals = new Set();\n script.timeouts = new Set();\n script.schedules = [];\n script.wizards = [];\n script.name = name;\n script.engineType = engineType;\n script._id = Math.floor(Math.random() * 0xffffffff);\n script.subscribes = {};\n script.subscribesFile = {};\n script.setStatePerMinuteCounter = 0;\n script.setStatePerMinuteProblemCounter = 0;\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: false,\n ack: true,\n expire: 1000,\n });\n\n const sandbox = sandBox(script, name, verbose, debug, this.context);\n\n try {\n script.script.runInNewContext(sandbox, {\n filename: name,\n displayErrors: true,\n // lineOffset: this.globalScriptLines\n });\n } catch (err: unknown) {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'execute',\n });\n this.logError(name, 'Error by run:', err as Error);\n }\n }\n\n /**\n * Finds the index of `id` in a sorted array using binary search – O(log n).\n * Returns -1 if not found. Used instead of Array.indexOf on stateIds.\n */\n private binaryIndexOf(arr: string[], id: string): number {\n let lo = 0;\n let hi = arr.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n if (arr[mid] === id) {\n return mid;\n } else if (arr[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return -1;\n }\n\n /**\n * Inserts `id` into the sorted `stateIds` array using binary search – O(log n).\n * Much faster than push() + sort() which is O(n log n) on every insertion.\n */\n private sortedInsert(id: string): void {\n let lo = 0;\n let hi = this.stateIds.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (this.stateIds[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (this.stateIds[lo] !== id) {\n this.stateIds.splice(lo, 0, id);\n }\n }\n\n unsubscribe(id: string | RegExp | string[]): void {\n if (!id) {\n this.log.warn('unsubscribe: empty name');\n return;\n }\n\n if (Array.isArray(id)) {\n id.forEach(sub => this.unsubscribe(sub));\n return;\n }\n\n if (id.constructor && id.constructor.name === 'RegExp') {\n // adapter.log.warn('unsubscribe: todo - process regexp');\n return;\n }\n\n if (typeof id !== 'string') {\n this.log.error(`unsubscribe: invalid type of id - ${typeof id}`);\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (this.objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n if (this.adapterSubs[alive]) {\n this.adapterSubs[alive].delete(id);\n if (!this.adapterSubs[alive].size) {\n delete this.adapterSubs[alive];\n }\n }\n this.sendTo(a, 'unsubscribe', id);\n }\n }\n\n // Analyze if logs are still required or not\n updateLogSubscriptions(): void {\n let found = false;\n // go through all scripts and check if some script still requires logs\n Object.keys(this.logSubscriptions).forEach(scriptName => {\n if (!this.logSubscriptions?.[scriptName] || !this.logSubscriptions[scriptName].length) {\n delete this.logSubscriptions[scriptName];\n } else {\n found = true;\n }\n });\n\n if (this.requireLog) {\n if (found && !this.logSubscribed) {\n this.logSubscribed = true;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Subscribed to log messages (found logSubscriptions)`);\n } else if (!found && this.logSubscribed) {\n this.logSubscribed = false;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Unsubscribed from log messages (not found logSubscriptions)`);\n }\n }\n }\n\n async stopScript(name: string): Promise {\n if (!this.scripts[name]) {\n return false;\n }\n\n this.log.info(`${name}: Stopping script`);\n\n await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true);\n\n if (this.messageBusHandlers[name]) {\n delete this.messageBusHandlers[name];\n }\n\n if (this.tempDirectories[name]) {\n try {\n this.mods.fs.rmSync(this.tempDirectories[name], { recursive: true });\n\n this.log.debug(`${name}: Removed temp directory: ${this.tempDirectories[name]}`);\n } catch {\n this.log.warn(`${name}: Unable to remove temp directory: ${this.tempDirectories[name]}`);\n }\n\n delete this.tempDirectories[name];\n }\n\n if (this.logSubscriptions[name]) {\n delete this.logSubscriptions[name];\n this.updateLogSubscriptions();\n }\n\n if (this.scripts[name]) {\n // Remove from subscriptions\n this.context.isEnums = false;\n if (this.config.subscribe) {\n // check all subscribed IDs\n Object.keys(this.scripts[name].subscribes).forEach(id => {\n if (this.subscribedPatterns[id]) {\n this.subscribedPatterns[id] -= this.scripts[name].subscribes[id];\n if (this.subscribedPatterns[id] <= 0) {\n this.unsubscribeForeignStates(id);\n delete this.subscribedPatterns[id];\n if (this.states[id]) {\n delete this.states[id];\n }\n }\n }\n });\n }\n\n for (let i = this.subscriptions.length - 1; i >= 0; i--) {\n if (this.subscriptions[i].name === name) {\n const sub = this.subscriptions.splice(i, 1)[0];\n // Also remove from O(1) dispatch structures\n if (\n sub?.pattern.id &&\n typeof sub.pattern.id === 'string' &&\n !sub.pattern.id.includes('*') &&\n !sub.pattern.id.includes('?')\n ) {\n const bucket = this.subscriptionsMap.get(sub.pattern.id);\n if (bucket) {\n const pos = bucket.indexOf(sub);\n if (pos !== -1) {\n bucket.splice(pos, 1);\n }\n if (bucket.length === 0) {\n this.subscriptionsMap.delete(sub.pattern.id);\n }\n }\n } else {\n const wPos = this.subscriptionsWildcard.indexOf(sub);\n if (wPos !== -1) {\n this.subscriptionsWildcard.splice(wPos, 1);\n }\n }\n if (sub?.pattern.id) {\n this.unsubscribe(sub.pattern.id);\n }\n } else {\n if (\n (!this.context.isEnums && this.subscriptions[i].pattern.enumName) ||\n this.subscriptions[i].pattern.enumId\n ) {\n this.context.isEnums = true;\n }\n }\n }\n\n // check all subscribed files\n Object.keys(this.scripts[name].subscribesFile).forEach(key => {\n if (this.subscribedPatternsFile[key]) {\n this.subscribedPatternsFile[key] -= this.scripts[name].subscribesFile[key];\n if (this.subscribedPatternsFile[key] <= 0) {\n const [id, file] = key.split('$%$');\n void this.unsubscribeForeignFiles(id, file);\n delete this.subscribedPatternsFile[key];\n }\n }\n });\n for (let i = this.subscriptionsFile.length - 1; i >= 0; i--) {\n if (this.subscriptionsFile[i].name === name) {\n this.subscriptionsFile.splice(i, 1);\n }\n }\n\n for (let i = this.subscriptionsObject.length - 1; i >= 0; i--) {\n if (this.subscriptionsObject[i].name === name) {\n const sub = this.subscriptionsObject.splice(i, 1)[0];\n if (sub) {\n // Remove from O(1) dispatch map\n const mapSubs = this.subscriptionsObjectMap.get(sub.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(sub);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n this.subscriptionsObjectMap.delete(sub.pattern);\n }\n }\n this.unsubscribeForeignObjects(sub.pattern);\n }\n }\n }\n\n // Stop all timeouts\n for (const t of this.scripts[name].timeouts) {\n clearTimeout(t);\n }\n // Stop all intervals\n for (const t of this.scripts[name].intervals) {\n clearInterval(t);\n }\n // Stop all delayed states (setStateDelayed timers) – O(1) via reverse-index\n const scriptStateIds = this.timersByScript.get(name);\n if (scriptStateIds) {\n for (const stateId of scriptStateIds) {\n if (this.timers[stateId]) {\n for (let i = this.timers[stateId].length - 1; i >= 0; i--) {\n if (this.timers[stateId][i].scriptName === name) {\n clearTimeout(this.timers[stateId][i].t);\n this.timers[stateId].splice(i, 1);\n }\n }\n if (!this.timers[stateId].length) {\n delete this.timers[stateId];\n }\n }\n }\n this.timersByScript.delete(name);\n }\n // Stop all scheduled jobs\n for (let i = 0; i < this.scripts[name].schedules.length; i++) {\n if (this.scripts[name].schedules[i]) {\n const _name = this.scripts[name].schedules[i].name;\n if (!this.mods.nodeSchedule.cancelJob(this.scripts[name].schedules[i])) {\n this.log.error(`${name}: Error by canceling scheduled job \"${_name}\"`);\n }\n }\n }\n\n // Stop all time wizards jobs\n if (this.context.scheduler) {\n for (let i = 0; i < this.scripts[name].wizards.length; i++) {\n if (this.scripts[name].wizards[i]) {\n this.context.scheduler.remove(this.scripts[name].wizards[i]);\n }\n }\n }\n\n // if callback for on stop\n if (typeof this.scripts[name].onStopCb === 'function') {\n this.scripts[name].onStopTimeout =\n parseInt(this.scripts[name].onStopTimeout as unknown as string, 10) || 1000;\n\n await new Promise(resolve => {\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n if (timeout) {\n timeout = null;\n resolve(true);\n }\n }, this.scripts[name].onStopTimeout);\n\n try {\n this.scripts[name].onStopCb(() => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(true);\n }\n });\n } catch (err: unknown) {\n this.log.error(`${name}: error in onStop callback: ${err as Error}`);\n }\n });\n }\n\n delete this.scripts[name];\n return true;\n }\n return false;\n }\n\n async prepareScript(obj: ioBroker.ScriptObject): Promise {\n if (obj?.common?.enabled && this.debugState.scriptName === obj._id) {\n const id = obj._id;\n await this.debugStop();\n this.log.info(`${id}: Debugging was stopped, because started in normal mode`);\n return this.prepareScript(obj);\n }\n\n if (\n obj?.common?.source &&\n (obj.common.enabled || this.context.debugMode === obj._id) &&\n obj.common.engine === `system.adapter.${this.namespace}`\n ) {\n const name = obj._id;\n\n if (this.password && obj.native?.protected) {\n obj.common.source = decryptText(this.password, obj.common.source);\n }\n\n const nameId = name.substring(SCRIPT_CODE_MARKER.length);\n if (!nameId.length || nameId.endsWith('.')) {\n this.log.error(`${name}: Script name \"${name}\" is invalid!`);\n return false;\n }\n const idActive = `scriptEnabled.${nameId}`;\n if (!this.config.subscribe) {\n this.interimStateValues[idActive] = this.prepareStateObjectSimple(\n `${this.namespace}.${idActive}`,\n true,\n true,\n );\n }\n await this.setState(idActive, true, true);\n obj.common.engineType ||= '' as 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';\n\n if (\n (obj.common.engineType as ScriptType).toLowerCase().startsWith('javascript') ||\n (obj.common.engineType as ScriptType) === 'Blockly' ||\n (obj.common.engineType as ScriptType) === 'Rules'\n ) {\n // Javascript\n this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);\n\n let sourceFn = name;\n if (webstormDebug) {\n const fn = name.replace(/^script\\.js\\./, '').replace(/\\./g, '/');\n sourceFn = this.mods.path.join(webstormDebug, `${fn}.js`);\n }\n const createdScript = this.createVM(`${this.globalScript}\\n${obj.common.source}`, sourceFn, true);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n sourceFn,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n if (obj.common.engineType.toLowerCase().startsWith('typescript')) {\n // TypeScript\n this.log.info(`${name}: Compiling TypeScript source`);\n // The source code must be transformed in order to support top level await\n // and to force TypeScript to compile the code as a module\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, false);\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash = hashSource(tsSourceHashBase + this.globalDeclarations + transformedSource);\n\n let compiled: string;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n this.log.info(`${name}: source code did not change, using cached compilation result...`);\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n return false;\n }\n\n const errors = tsCompiled.diagnostics.map(diag => `${diag.annotatedSource}\\n`).join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(`${name}: TypeScript compilation had errors:\\n${errors}`);\n } else {\n this.log.info(`${name}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result || '';\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(name); // ignore the next change and don't restart scripts\n await this.extendForeignObjectAsync(name, {\n common: {\n sourceHash,\n compiled,\n },\n });\n } else {\n this.log.error(`${name}: TypeScript compilation failed:\\n${errors}`);\n return false;\n }\n }\n const createdScript: JsScript | false = this.createVM(`${this.globalScript}\\n${compiled}`, name, false);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n name,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n this.log.warn(`${obj._id}: Unknown engine type: ${obj.common.engineType}`);\n return false;\n }\n\n let _name: string;\n if (obj?._id) {\n _name = obj._id;\n const scriptIdName = _name.substring(SCRIPT_CODE_MARKER.length);\n\n if (!scriptIdName.length || scriptIdName.endsWith('.')) {\n this.log.error(`${obj._id}: Script name \"${_name}\" is invalid!`);\n return false;\n }\n await this.setState(`scriptEnabled.${scriptIdName}`, false, true);\n }\n if (!obj) {\n this.log.error('Invalid script');\n }\n return false;\n }\n\n async loadScriptById(id: string): Promise {\n let obj: ioBroker.ScriptObject | null | undefined;\n try {\n obj = (await this.getForeignObjectAsync(id)) as ioBroker.ScriptObject | null | undefined;\n } catch (err: any) {\n this.log.error(`${id}: Invalid script: ${err}`);\n }\n if (!obj) {\n return false;\n }\n return this.loadScript(obj);\n }\n\n async loadScript(nameOrObject: ioBroker.ScriptObject): Promise {\n // create states for scripts\n await this.createActiveObject(nameOrObject._id, !!nameOrObject?.common?.enabled);\n await this.createProblemObject(nameOrObject._id);\n return this.prepareScript(nameOrObject);\n }\n\n getAstroEvent(\n date: Date,\n astroEvent: AstroEventName,\n start: string,\n end: string,\n offsetMinutes: number | string,\n isDayEnd: boolean,\n latitude: number,\n longitude: number,\n useNextDay?: boolean,\n ): Date {\n let ts: Date = this.mods.suncalc.getTimes(date, latitude, longitude)[astroEvent];\n\n if (!ts || ts.getTime().toString() === 'NaN') {\n ts = isDayEnd ? getNextTimeEvent(end, useNextDay) : getNextTimeEvent(start, useNextDay);\n }\n ts.setMilliseconds(0);\n ts.setMinutes(ts.getMinutes() + (parseInt(offsetMinutes as unknown as string, 10) || 0));\n\n const [timeHoursStart, timeMinutesStart] = start.split(':');\n const nTimeHoursStart = parseInt(timeHoursStart, 10);\n const nTimeMinutesStart = parseInt(timeMinutesStart, 10) || 0;\n\n if (\n ts.getHours() < nTimeHoursStart ||\n (ts.getHours() === nTimeHoursStart && ts.getMinutes() < nTimeMinutesStart)\n ) {\n ts = getNextTimeEvent(start, useNextDay);\n ts.setSeconds(0);\n }\n\n const [timeHoursEnd, timeMinutesEnd] = end.split(':');\n const nTimeHoursEnd = parseInt(timeHoursEnd, 10);\n const nTimeMinutesEnd = parseInt(timeMinutesEnd, 10) || 0;\n\n if (ts.getHours() > nTimeHoursEnd || (ts.getHours() === nTimeHoursEnd && ts.getMinutes() > nTimeMinutesEnd)) {\n ts = getNextTimeEvent(end, useNextDay);\n ts.setSeconds(0);\n }\n\n // if event in the past\n if (date > ts && useNextDay) {\n // take the next day\n ts.setDate(ts.getDate() + 1);\n }\n return ts;\n }\n\n async timeSchedule(): Promise {\n const now = new Date();\n let hours = now.getHours();\n const minutes = now.getMinutes();\n if (this.timeSettings.format12) {\n if (hours > 12) {\n hours -= 12;\n }\n }\n let sHours: string;\n if (this.timeSettings.leadingZeros) {\n sHours = hours.toString().padStart(2, '0');\n } else {\n sHours = hours.toString();\n }\n\n await this.setState('variables.dayTime', {\n val: `${sHours}:${minutes.toString().padStart(2, '0')}`,\n ack: true,\n });\n\n now.setMinutes(now.getMinutes() + 1);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const interval = now.getTime() - Date.now();\n this.timeScheduleTimer = setTimeout(() => this.timeSchedule(), interval);\n }\n\n async dayTimeSchedules(): Promise {\n // Always clear any existing timer to prevent memory leaks on rapid re-scheduling\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n\n // get astrological event\n if (\n this.config.latitude === undefined ||\n this.config.longitude === undefined ||\n (this.config.latitude as unknown as string) === '' ||\n (this.config.longitude as unknown as string) === '' ||\n this.config.latitude === null ||\n this.config.longitude === null\n ) {\n this.log.error('Longitude or latitude does not set. Cannot use astro.');\n return;\n }\n\n // Calculate the next event today\n const todayDate = getAstroStartOfDay();\n const nowDate = new Date();\n\n const todaySunrise = this.getAstroEvent(\n todayDate,\n this.config.sunriseEvent,\n this.config.sunriseLimitStart,\n this.config.sunriseLimitEnd,\n this.config.sunriseOffset,\n false,\n this.config.latitude,\n this.config.longitude,\n );\n const todaySunset = this.getAstroEvent(\n todayDate,\n this.config.sunsetEvent,\n this.config.sunsetLimitStart,\n this.config.sunsetLimitEnd,\n this.config.sunsetOffset,\n true,\n this.config.latitude,\n this.config.longitude,\n );\n\n // Sunrise\n let sunriseTimeout = todaySunrise.getTime() - nowDate.getTime();\n if (sunriseTimeout < 0 || sunriseTimeout > 3600000) {\n sunriseTimeout = 3600000;\n }\n\n // Sunset\n let sunsetTimeout = todaySunset.getTime() - nowDate.getTime();\n if (sunsetTimeout < 0 || sunsetTimeout > 3600000) {\n sunsetTimeout = 3600000;\n }\n\n const isDayTime: ioBroker.State | null | undefined = await this.getStateAsync('variables.isDayTime');\n let isDay: boolean;\n if (sunriseTimeout < 5000) {\n isDay = true;\n } else if (sunsetTimeout < 5000) {\n isDay = false;\n } else {\n // check if in between\n isDay = nowDate.getTime() > todaySunrise.getTime() - 60000 && nowDate <= todaySunset;\n }\n\n const valDayTime = isDayTime ? !!isDayTime.val : false;\n if (valDayTime !== isDay || isDayTime === null) {\n await this.setState('variables.isDayTime', isDay, true);\n }\n\n const dayLightSaving: ioBroker.State | null | undefined =\n await this.getStateAsync('variables.isDaylightSaving');\n const isDayLightSaving = dstOffsetAtDate(nowDate) !== 0;\n const val = dayLightSaving ? !!dayLightSaving.val : false;\n\n if (val !== isDayLightSaving || dayLightSaving === null) {\n await this.setState('variables.isDaylightSaving', isDayLightSaving, true);\n }\n\n let nextTimeout = sunriseTimeout;\n if (sunriseTimeout > sunsetTimeout) {\n nextTimeout = sunsetTimeout;\n }\n nextTimeout = nextTimeout - 3000;\n if (nextTimeout < 3000) {\n nextTimeout = 3000;\n }\n\n this.dayScheduleTimer = setTimeout(() => this.dayTimeSchedules(), nextTimeout);\n }\n\n stopTimeSchedules(): void {\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n if (this.sunScheduleTimer) {\n clearTimeout(this.sunScheduleTimer);\n this.sunScheduleTimer = null;\n }\n if (this.timeScheduleTimer) {\n clearTimeout(this.timeScheduleTimer);\n this.timeScheduleTimer = null;\n }\n }\n\n async patchFont(): Promise {\n let stat: Stats | undefined;\n let dbFile: Buffer | undefined;\n let fileName = `${__dirname}/../admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n let jsonFileName = `${__dirname}/../admin/vsFont/codicon.json`;\n try {\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n if (!stat) {\n jsonFileName = `${__dirname}/admin/vsFont/codicon.json`;\n fileName = `${__dirname}/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n }\n const _dbFile = await this.readFileAsync(\n 'javascript.admin',\n `vs/base/browser/ui/codicons/codicon/codicon.ttf`,\n );\n if (_dbFile?.file) {\n dbFile = _dbFile.file as Buffer;\n }\n } catch {\n // ignore\n }\n\n if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {\n try {\n const buffer = Buffer.from(JSON.parse(readFileSync(jsonFileName).toString()), 'base64');\n\n const jszip = await import('jszip');\n const zip = await jszip.loadAsync(buffer);\n let data: ArrayBuffer | undefined;\n if (zip) {\n data = await zip.file('codicon.ttf')?.async('arraybuffer');\n if (data?.byteLength !== 73452) {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n } else {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n writeFileSync(fileName, Buffer.from(data));\n // upload this file\n await this.writeFileAsync(\n 'javascript.admin',\n 'vs/base/browser/ui/codicons/codicon/codicon.ttf',\n Buffer.from(data),\n );\n return true;\n } catch (err: unknown) {\n this.log.error(`Cannot patch font: ${err as Error}`);\n return false;\n }\n }\n return false;\n }\n\n async sunTimeSchedules(): Promise {\n if (this.config.createAstroStates) {\n if (!isNaN(this.config.longitude) && !isNaN(this.config.longitude)) {\n const calcDate = getAstroStartOfDay();\n\n const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);\n\n this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);\n\n for (const t in times) {\n try {\n const objId = `variables.astro.${t}`;\n\n await this.setObjectNotExistsAsync(objId, {\n type: 'state',\n common: {\n name: `Astro ${t}`,\n type: 'string',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (times[t] !== null && !isNaN(times[t].getTime())) {\n const timeFormatted = formatHoursMinutesSeconds(times[t]);\n await this.setState(objId, {\n val: timeFormatted,\n c: times[t].toISOString(),\n ack: true,\n });\n } else {\n await this.setState(objId, { val: null, c: 'n/a', ack: true, q: 0x01 });\n }\n } catch (err: unknown) {\n this.log.error(\n `[sunTimeSchedules] Unable to set state for astro time \"${t}\" (${times[t].getTime()}): ${err as Error}`,\n );\n }\n }\n\n const todayDate = new Date();\n todayDate.setHours(0);\n todayDate.setMinutes(0);\n todayDate.setSeconds(1);\n todayDate.setMilliseconds(0);\n todayDate.setDate(todayDate.getDate() + 1);\n\n this.log.debug(`[sunTimeSchedules] Next: ${todayDate.toISOString()}`);\n this.sunScheduleTimer = setTimeout(() => this.sunTimeSchedules(), todayDate.getTime() - Date.now());\n }\n } else {\n // remove astro states if disabled\n this.delObject('variables.astro', { recursive: true });\n }\n }\n\n /**\n * Redirects the virtual-tsc log output to the ioBroker log\n */\n tsLog = (message: string, severity?: ioBroker.LogLevel): void => {\n // shift the severities around, we don't care about the small details\n if (!severity || severity === 'info') {\n severity = 'debug';\n } else if (severity === 'debug') {\n // Don't spam build logs on Travis\n if (isCI) {\n return;\n }\n severity = 'silly';\n }\n\n if (this?.log) {\n this.log[severity](message);\n } else {\n console.log(`[${severity.toUpperCase()}] ${message}`);\n }\n };\n\n addGetProperty(object: Record): void {\n try {\n Object.defineProperty(object, 'get', {\n value: function (id: string): any {\n return this[id] || this[`${this.namespace}.${id}`];\n },\n enumerable: false,\n });\n } catch {\n console.error('Cannot install get property');\n }\n }\n\n /**\n * Add declarations for global scripts\n *\n * @param scriptID - The current script the declarations were generated from\n * @param declarations - Declarations from a script\n */\n provideDeclarationsForGlobalScript(scriptID: string, declarations: string): void {\n // Remember which declarations this global script had access to;\n // we need this so the editor doesn't show a duplicate identifier error\n if (this.globalDeclarations != null && this.globalDeclarations !== '') {\n this.knownGlobalDeclarationsByScript[scriptID] = this.globalDeclarations;\n }\n // and concatenate the global declarations for the next scripts\n this.globalDeclarations += `${declarations}\\n`;\n // remember all previously generated global declarations,\n // so global scripts can reference each other\n const globalDeclarationPath = 'global.d.ts';\n tsAmbient[globalDeclarationPath] = this.globalDeclarations;\n // make sure the next script compilation has access to the updated declarations\n this.tsServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n jsDeclarationServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n }\n\n fixLineNo(line: string): string {\n if (line.includes('javascript.js:')) {\n return line;\n }\n if (!/scripts?\\.js[.\\\\/]/.test(line)) {\n return line;\n }\n if (/:(\\d+):/.test(line)) {\n line = line.replace(\n /:(\\d+):/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}:`,\n ); // one line for 'async function ()'\n } else {\n line = line.replace(\n /:(\\d+)$/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}`,\n ); // one line for 'async function ()'\n }\n return line;\n }\n\n async debugStop(): Promise {\n if (this.debugState.child) {\n this.debugSendToInspector({ cmd: 'end' });\n this.debugState.endTimeout = setTimeout(() => {\n this.debugState.endTimeout = null;\n this.debugState.child?.kill('SIGTERM');\n }, 500);\n this.debugState.promiseOnEnd ||= Promise.resolve(0);\n } else {\n this.debugState.promiseOnEnd = Promise.resolve(0);\n }\n\n await this.debugState.promiseOnEnd;\n\n this.debugState.child = null;\n this.debugState.running = false;\n this.debugState.scriptName = '';\n if (this.debugState.endTimeout) {\n clearTimeout(this.debugState.endTimeout);\n this.debugState.endTimeout = null;\n }\n }\n\n async debugDisableScript(id: string | undefined): Promise {\n if (id) {\n const obj = this.objects[id];\n if (obj?.common?.enabled) {\n await this.extendForeignObjectAsync(obj._id, { common: { enabled: false } });\n }\n }\n }\n\n debugSendToInspector(message: any): void {\n if (this.debugState.child) {\n try {\n this.log.info(`send to debugger: ${message}`);\n this.debugState.child.send(message);\n } catch {\n void this.debugStop().then(() =>\n this.log.info(\n `${this.debugState.scriptName}: Debugging was stopped, because started in normal mode`,\n ),\n );\n }\n } else {\n this.log.error(`${this.debugState.scriptName}: Cannot send command to terminated inspector`);\n void this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `Cannot send command to terminated inspector`, id: 1 }),\n true,\n );\n }\n }\n\n debugStart(data: { breakOnStart?: boolean; scriptName?: string; adapter?: string }): void {\n if (Date.now() - this.debugState.started < 1000) {\n console.log('Start ignored');\n return;\n }\n\n this.debugState.started = Date.now();\n // stop the script if it's running\n void this.debugDisableScript(data.scriptName)\n .then(() => this.debugStop())\n .then(() => {\n if (data.adapter) {\n this.debugState.adapterInstance = data.adapter;\n this.debugState.scriptName = '';\n } else {\n this.debugState.adapterInstance = '';\n this.debugState.scriptName = data.scriptName as string;\n }\n\n this.debugState.breakOnStart = data.breakOnStart;\n\n this.debugState.promiseOnEnd = new Promise(resolve => {\n const options: ForkOptions = {\n stdio: ['ignore', 'inherit', 'inherit', 'ipc'],\n //stdio: ['pipe', 'pipe', 'pipe', 'ipc']\n };\n const args: string[] = [];\n if (this.debugState.adapterInstance) {\n args.push('--breakOnStart');\n }\n\n this.debugState.child = fork(`${__dirname}/lib/inspect.js`, args, options);\n\n /*debugState.child.stdout.setEncoding('utf8');\n debugState.child.stderr.setEncoding('utf8');\n debugState.child.stdout.on('data', childPrint);\n debugState.child.stderr.on('data', childPrint);*/\n\n this.debugState.child?.on(\n 'message',\n (\n message:\n | string\n | {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n },\n ) => {\n let oMessage: {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n };\n if (typeof message === 'string') {\n try {\n oMessage = JSON.parse(message);\n } catch {\n return this.log.error(`Cannot parse message from inspector: ${message}`);\n }\n } else {\n oMessage = message;\n }\n\n if (oMessage.cmd !== 'ready') {\n void this.setState('debug.from', JSON.stringify(oMessage), true);\n }\n\n switch (oMessage.cmd) {\n case 'ready': {\n this.debugSendToInspector({\n cmd: 'start',\n scriptName: this.debugState.scriptName,\n adapterInstance: this.debugState.adapterInstance,\n instance: this.instance,\n });\n break;\n }\n\n case 'watched': {\n //console.log(`WATCHED: ${JSON.stringify(oMessage)}`);\n break;\n }\n\n case 'paused': {\n this.debugState.paused = true;\n console.log(`host: PAUSED`);\n break;\n }\n\n case 'resumed': {\n this.debugState.paused = false;\n //console.log(`STARTED`);\n break;\n }\n\n case 'log': {\n console.log(`[${oMessage.severity}] ${oMessage.text}`);\n break;\n }\n\n case 'readyToDebug': {\n console.log(\n `host: readyToDebug (set breakpoints): [${oMessage.scriptId}] ${oMessage.script}`,\n );\n break;\n }\n }\n },\n );\n this.debugState.child?.on('error', error => {\n this.log.error(`Cannot start inspector: ${error}`);\n void this.setState('debug.from', JSON.stringify({ cmd: 'error', error }), true);\n });\n\n this.debugState.child?.on('exit', async (code: number): Promise => {\n if (code) {\n await this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `invalid response code: ${code}` }),\n true,\n );\n }\n await this.setState('debug.from', JSON.stringify({ cmd: 'debugStopped', code }), true);\n this.debugState.child = null;\n resolve(code);\n });\n });\n });\n }\n}\n\nfunction patternMatching(\n event: EventObj,\n patternFunctions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' },\n): boolean {\n const logic = patternFunctions.logic ?? 'and';\n for (let i = 0, len = patternFunctions.length; i < len; i++) {\n const result = patternFunctions[i](event);\n if (logic === 'and' && !result) {\n return false; // short-circuit AND – one false is enough\n }\n if (logic === 'or' && result) {\n return true; // short-circuit OR – one true is enough\n }\n }\n // AND: all passed → true; OR: none matched → false\n return logic === 'and';\n}\n\n// If started as allInOne mode => return function to create an instance\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new JavaScript(options);\n} else {\n // otherwise start the instance directly\n (() => new JavaScript())();\n}\n"]} \ No newline at end of file diff --git a/build/types.d.ts b/build/types.d.ts index c1ff150bb..1d07ca0a4 100644 --- a/build/types.d.ts +++ b/build/types.d.ts @@ -40,6 +40,12 @@ export interface JavaScriptAdapterConfig { geminiKey: string; deepseekKey: string; password?: string; + credentialType?: 'manual' | 'manager'; + credentialIdGptKey?: string; + credentialIdClaudeKey?: string; + credentialIdGeminiKey?: string; + credentialIdDeepseekKey?: string; + credentialIdGptBaseUrlKey?: string; } export type CommonAlias = { diff --git a/package-lock.json b/package-lock.json index 9234941af..144eeaa14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10273 +1,10076 @@ { - "name": "iobroker.javascript", - "version": "9.2.3", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "iobroker.javascript", - "version": "9.2.3", - "license": "MIT", - "dependencies": { - "@iobroker/adapter-core": "^3.3.2", - "@iobroker/types": "^7.1.1", - "@types/node": "^25.6.0", - "axios": "^1.15.0", - "jsonata": "^2.1.0", - "jszip": "^3.10.1", - "node-inspect": "^2.0.0", - "node-schedule": "2.1.1", - "nodemailer": "^8.0.5", - "prettier": "^3.8.2", - "promisify-child-process": "^5.0.1", - "semver": "^7.7.4", - "suncalc2": "^1.8.1", - "typescript": "5.9.3", - "virtual-tsc": "^0.6.2", - "wake_on_lan": "^1.0.0" - }, - "devDependencies": { - "@alcalzone/release-script": "^5.2.0", - "@alcalzone/release-script-plugin-iobroker": "^5.2.0", - "@alcalzone/release-script-plugin-license": "^5.2.0", - "@iobroker/adapter-dev": "^1.5.0", - "@iobroker/build-tools": "^3.0.1", - "@iobroker/eslint-config": "^2.2.0", - "@iobroker/plugin-sentry": "^3.0.4", - "@iobroker/testing": "^5.2.2", - "@iobroker/vis-2-widgets-react-dev": "^4.0.4", - "@types/node-schedule": "^2.1.8", - "@types/nodemailer": "^7.0.11", - "@types/request": "^2.48.13", - "@types/suncalc": "^1.9.2", - "alcalzone-shared": "^5.0.0", - "timekeeper": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/esbuild-register": { - "version": "2.5.1-1", - "resolved": "https://registry.npmjs.org/@alcalzone/esbuild-register/-/esbuild-register-2.5.1-1.tgz", - "integrity": "sha512-u19/K/ZaiWQhYIQZeF2FImUeJDiMD4i2h7qPdU0HVFCxoQynye59N4oy6EvjxeXaxLnGkppcb5KKeiYD4cT1iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.11.5", - "jsonc-parser": "^3.0.0" - } - }, - "node_modules/@alcalzone/esbuild-register/node_modules/esbuild": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.23.tgz", - "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - } - }, - "node_modules/@alcalzone/pak": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.12.0.tgz", - "integrity": "sha512-9r0zM5JAVTuPma1M/nMXiIlihQ07bWnxiYdqQrRsqFcWfm/p2hATbMtDMBXonkKZZGuOQxEMzTk7kpzGgnEJEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ky": "^1.14.3", - "nano-spawn": "^2.0.0", - "semver": "^7.7.4", - "tiny-glob": "^0.2.9" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@alcalzone/release-script": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-5.2.1.tgz", - "integrity": "sha512-d7aeYU/c1fKcBRkZGpfLLAK6zjpOPV00NzdsYKap9uTdlBqrC5d/OlY7n9Jet0eKTzygKsz7mtPlV8t5GNPGPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "@alcalzone/release-script-plugin-changelog": "5.2.1", - "@alcalzone/release-script-plugin-exec": "5.2.0", - "@alcalzone/release-script-plugin-git": "5.2.0", - "@alcalzone/release-script-plugin-package": "5.2.0", - "@alcalzone/release-script-plugin-version": "5.2.0", - "alcalzone-shared": "^5.0.0", - "enquirer": "^2.3.6", - "picocolors": "1.0.0", - "semver": "^7.7.2", - "source-map-support": "^0.5.21", - "yargs": "^17.4.1" - }, - "bin": { - "release-script": "bin/release.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-core/-/release-script-core-5.2.0.tgz", - "integrity": "sha512-xR09iP7pr9hpkdjvSQBxFTyV1MEvUQ+4ar5p0RUl5ogPqVqTF+r4GYkrOvZsxSFfTrU/Fm0TVC29mJ0UkmFrOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-changelog": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-changelog/-/release-script-plugin-changelog-5.2.1.tgz", - "integrity": "sha512-IUbwNQW6r5O40FUKGz3yHumnca6o8Xct/d4+7wslkcjnBMbUR5CMlt0/QCi/Xs9jNhumvLV9w7pNkku2WCz/xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-exec": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-exec/-/release-script-plugin-exec-5.2.0.tgz", - "integrity": "sha512-YCLHx+W0MqYYR54scElkjcF3E16iqoh8j5aanmNMhoYTQYkBLX162zgIF/Ivx9kxVe47RNZhwdfg7sJd18ftKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-git": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-5.2.0.tgz", - "integrity": "sha512-CDR1gVIKXp2RyYSKhOHxma2m7AH5p8Ont+Mlq2W5rWxCyhvxkKhSP363QoElWCTRIvYWLkwsR6Tf0KAyXf/mBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-iobroker": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-iobroker/-/release-script-plugin-iobroker-5.2.0.tgz", - "integrity": "sha512-xBjEXvleAd3vencWmwLt1BtI8ibueZWWD5Trzf2AyyIpN0LTSAa6oz+MCN9xafgBFYueaKXDmA1OARiKaiupSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0", - "ky": "^1.7.5", - "semver": "^7.7.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-license": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-license/-/release-script-plugin-license-5.2.0.tgz", - "integrity": "sha512-DeawSM2g9rWF355iQRBIrO69/Yct0Og6yhgFJjFCSGc3WNBq22l0GzalO1yIL84Ln12tnBhT7n9I+aOuJSnUNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "tiny-glob": "^0.2.9" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-package": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-5.2.0.tgz", - "integrity": "sha512-lgvd33pKJ2dCxEe8aVzNHTc7AIfv195URBmfu57NioWQhFAOISdNRMPzOWAqsDyOumYXGMGPBIPjUkCTGgYyKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/pak": "^0.12.0", - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0", - "semver": "^7.7.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-version": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-5.2.0.tgz", - "integrity": "sha512-OeM4lpzou7SVtTdD1Jmfj+kq3LgLr9ed2EphoWfCeJe/ES5+ARhcqbTibfDX8K98lehil9Uc5l1T9NlrdlkzZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0", - "semver": "^7.7.2", - "tiny-glob": "^0.2.9" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emotion/cache": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", - "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@emotion/memoize": "^0.9.0", - "@emotion/sheet": "^1.4.0", - "@emotion/utils": "^1.4.2", - "@emotion/weak-memoize": "^0.4.0", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", - "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@emotion/memoize": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", - "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@emotion/serialize": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", - "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@emotion/hash": "^0.9.2", - "@emotion/memoize": "^0.9.0", - "@emotion/unitless": "^0.10.0", - "@emotion/utils": "^1.4.2", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/sheet": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", - "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@emotion/unitless": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@emotion/utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", - "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.56.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.56.0.tgz", - "integrity": "sha512-c6EW+aA1w2rjqOMjbL93nZlwxp6c1Ln06vTYs5FjRRhmJXK8V/OrSXdT+pUr4aRYgjCgu8/OkiZr0tzeVrRSbw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "^1.0.8", - "@typescript-eslint/types": "^8.42.0", - "comment-parser": "1.4.1", - "esquery": "^1.6.0", - "jsdoc-type-pratt-parser": "~5.1.0" - }, - "engines": { - "node": ">=20.11.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", - "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", - "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", - "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", - "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", - "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", - "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", - "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", - "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", - "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", - "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", - "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", - "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", - "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", - "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", - "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", - "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", - "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", - "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", - "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", - "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", - "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", - "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", - "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", - "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", - "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", - "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers/node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", - "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@esm2cjs/execa": { - "version": "6.1.1-cjs.1", - "resolved": "https://registry.npmjs.org/@esm2cjs/execa/-/execa-6.1.1-cjs.1.tgz", - "integrity": "sha512-FHxfnmuDIjY1VS/BLzDkL8EkbcFvi8s6x1nYQ1Nyu0An0n88EJcGhDBcRWLFwt3C3nT7xwI+MwHRH1TZcAFW2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@esm2cjs/human-signals": "^3.0.1", - "@esm2cjs/is-stream": "^3.0.0", - "@esm2cjs/npm-run-path": "^5.1.1-cjs.0", - "@esm2cjs/onetime": "^6.0.1-cjs.0", - "@esm2cjs/strip-final-newline": "^3.0.1-cjs.0", - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "merge-stream": "^2.0.0", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@esm2cjs/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-QZme4eF/PwTpeSbMB4AaWGQ4VSygzE30jI+Oas1NPTtZQAgcHwWVDOQpIW8FUmtzn5Q+2cS7AjnTzbtqtc5P6g==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.20.0" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-qcBscHlJpZFOD5nnmMHkzOrq2xyvsp9fbVreQLS8x2LOs8N3CrNi3fqvFY0GVJR+YSOHscwhG9T5t4Ck7R7QGw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-LIIAjcpjLr4rcbYmRQ+eRu55Upy/MMB78seIlwqbnyiA+cTa1/pxWnJ1NHJQrw6tx2wMQmlYoJj+wf16NjWH6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/npm-run-path": { - "version": "5.1.1-cjs.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/npm-run-path/-/npm-run-path-5.1.1-cjs.0.tgz", - "integrity": "sha512-CWeAIyE8iNSCgP2ItPE8iPgS+lACqgH+MuFRaWOIl2T7hnHqPFfhAJJ/LcLJJ/RMIxNMeenjFMwc91HW7NWr1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@esm2cjs/path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/onetime": { - "version": "6.0.1-cjs.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/onetime/-/onetime-6.0.1-cjs.0.tgz", - "integrity": "sha512-MkZMZSxrSC/6yUuAw6Azc56XOgwHQQIsNDlO/zgFmOcycJBhRwRuc/gdYUUOFNZIh7y+f0JSIxkNdJPFvJ5W0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@esm2cjs/mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-fKzZ3uIIP4j+7WfyG0MEkomGHL0hUXWCx1kY2Zct3GTdl4pyY+3k5lCUxjgdDa2Ld1BCjMNorXnRHiBP6jW6CQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/strip-final-newline": { - "version": "3.0.1-cjs.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/strip-final-newline/-/strip-final-newline-3.0.1-cjs.0.tgz", - "integrity": "sha512-o41riCGPiOEStayoikBCAqwa6igbv9L9rP+k5UCfQ24EJD/wGrdDs/KTNwkHG5JzDK3T60D5dMkWkLKEPy8gjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@fastify/otel": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@fastify/otel/-/otel-0.17.1.tgz", - "integrity": "sha512-K4wyxfUZx2ux5o+b6BtTqouYFVILohLZmSbA2tKUueJstNcBnoGPVhllCaOvbQ3ZrXdUxUC/fyrSWSCqHhdOPg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.212.0", - "@opentelemetry/semantic-conventions": "^1.28.0", - "minimatch": "^10.2.4" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0" - } - }, - "node_modules/@fastify/otel/node_modules/@opentelemetry/api-logs": { - "version": "0.212.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.212.0.tgz", - "integrity": "sha512-TEEVrLbNROUkYY51sBJGk7lO/OLjuepch8+hmpM6ffMJQ2z/KVCjdHuCFX6fJj8OkJP2zckPjrJzQtXU3IAsFg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation": { - "version": "0.212.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.212.0.tgz", - "integrity": "sha512-IyXmpNnifNouMOe0I/gX7ENfv2ZCNdYTF0FpCsoBcpbIHzk81Ww9rQTYTnvghszCg7qGrIhNvWC8dhEifgX9Jg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.212.0", - "import-in-the-middle": "^2.0.6", - "require-in-the-middle": "^8.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@fastify/otel/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@fastify/otel/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@fastify/otel/node_modules/import-in-the-middle": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.6.tgz", - "integrity": "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.15.0", - "acorn-import-attributes": "^1.9.5", - "cjs-module-lexer": "^2.2.0", - "module-details-from-path": "^1.0.4" - } - }, - "node_modules/@fastify/otel/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@google-cloud/common": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-6.0.0.tgz", - "integrity": "sha512-IXh04DlkLMxWgYLIUYuHHKXKOUwPDzDgke1ykkkJPe48cGIS9kkL2U/o0pm4ankHLlvzLF/ma1eO86n/bkumIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "^4.0.0", - "arrify": "^2.0.0", - "duplexify": "^4.1.3", - "extend": "^3.0.2", - "google-auth-library": "^10.0.0-rc.1", - "html-entities": "^2.5.2", - "retry-request": "^8.0.0", - "teeny-request": "^10.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@google-cloud/common/node_modules/@google-cloud/promisify": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.1.0.tgz", - "integrity": "sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-5.0.0.tgz", - "integrity": "sha512-N8qS6dlORGHwk7WjGXKOSsLjIjNINCPicsOX6gyyLiYk7mq3MtII96NZ9N2ahwA2vnkLmZODOIH9rlNniYWvCQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@google-cloud/translate": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@google-cloud/translate/-/translate-9.2.1.tgz", - "integrity": "sha512-7/RWxkMd4fKX88Pzzhr2ly8yOjEepCW4ro4ZsdAUsf2Wo2ZLgp75yNZaQGKBBetgOc8yPVl8djr/2XFIHnWS3w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/common": "^6.0.0", - "@google-cloud/promisify": "^5.0.0", - "arrify": "^2.0.0", - "extend": "^3.0.2", - "google-gax": "^5.0.0", - "is-html": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.0.tgz", - "integrity": "sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.8.0", - "@js-sdsl/ordered-map": "^4.4.2" - }, - "engines": { - "node": ">=12.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", - "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.5.3", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@iobroker/adapter-core": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.3.2.tgz", - "integrity": "sha512-knuCX6F1JUTnY1OdHzDhwNtOoe9/RZgBziDKSzCO3E4koteY/KRqZ7gtzmoavcAokejG68S5osbEnIb4MYT3VA==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@iobroker/types": ">=6.0.11" - } - }, - "node_modules/@iobroker/adapter-dev": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-dev/-/adapter-dev-1.5.0.tgz", - "integrity": "sha512-L1FhO7oxaz4hNMobvgbanSGyn2LaCESGKqPPJhXWU00vVEw5Cc166xdnU63Dk+JDnV5zl/HzOcFANGisETAWIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@esm2cjs/execa": "^6.1.1-cjs.1", - "@google-cloud/translate": "^9.2.0", - "ansi-colors": "^4.1.3", - "axios": "^1.11.0", - "deepl-node": "^1.19.0", - "esbuild": "^0.25.9", - "fs-extra": "^11.3.1", - "rimraf": "^5.0.10", - "tiny-glob": "^0.2.9", - "yargs": "^18.0.0" - }, - "bin": { - "build-adapter": "bin/build-adapter.js", - "clean-dir": "bin/clean-dir.js", - "translate-adapter": "bin/translate-adapter.js" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/cliui": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@iobroker/adapter-dev/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/yargs": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^9.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "string-width": "^7.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^22.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/yargs-parser": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/@iobroker/build-tools": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@iobroker/build-tools/-/build-tools-3.0.1.tgz", - "integrity": "sha512-i5PsBOHNscMAqmdYrdYxJUplyFCkTwPUVJVL5iQozbG7+e79bHTHXuLCHwslaN/m5ACfr0KmtpoMram8gzGnPg==", - "dev": true, - "dependencies": { - "glob": "^13.0.1" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@iobroker/build-tools/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@iobroker/build-tools/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@iobroker/build-tools/node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@iobroker/build-tools/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@iobroker/build-tools/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@iobroker/build-tools/node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@iobroker/eslint-config": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@iobroker/eslint-config/-/eslint-config-2.2.0.tgz", - "integrity": "sha512-89U2d81BUrReVgVFUJwjxYsHSbvjAt8w8OoKavtNp//wkG7JU4n/VnISMEvQqaQt7i0sWc/xSx27TYDx9FXAYg==", - "dev": true, - "peerDependencies": { - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "^9.34.0", - "@typescript-eslint/eslint-plugin": "^8.40.0", - "@typescript-eslint/parser": "^8.40.0", - "eslint": ">=9.32.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-import": "^2.30.0", - "eslint-plugin-jsdoc": "^54.1.1", - "eslint-plugin-prettier": "^5.5.4", - "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-unicorn": "^60.0.0", - "globals": "^16.3.0", - "prettier": ">=3.6.2", - "typescript-eslint": "^8.40.0" - } - }, - "node_modules/@iobroker/plugin-base": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@iobroker/plugin-base/-/plugin-base-3.0.3.tgz", - "integrity": "sha512-pUKOz9/ZqIDxPQo9E97UdCF6p8NyO+x9REAQYPQNmwkElWq0bka9tgphx+RTUj8inZoYbUd50o9YnotV5C/Jpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@iobroker/plugin-sentry": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/plugin-sentry/-/plugin-sentry-3.0.4.tgz", - "integrity": "sha512-VCHQ9zo5TKyO+A1xpWD8xXe/nW6/BYbEKFxAqHvfDM4U2R0wERZtbH6Ztg3lfV+JRwUn5TgqVRNXvHkvolgPHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@iobroker/plugin-base": "^3.0.3", - "@sentry/integrations": "^7.114.0", - "@sentry/node": "^10.32.1", - "source-map-support": "^0.5.21" - } - }, - "node_modules/@iobroker/testing": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-5.2.2.tgz", - "integrity": "sha512-AiYi9qziPLiNDcwZJa3tcgdSjIq9lq7z4QFvWY9w099chmKOWyvUgWzDy3S/R3L7lJ0yviOeNEdpOHtX4wTf6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/esbuild-register": "^2.5.1-1", - "@types/chai": "^4.3.20", - "@types/chai-as-promised": "^7.1.8", - "@types/mocha": "^10.0.10", - "@types/sinon": "^17.0.4", - "@types/sinon-chai": "^3.2.12", - "alcalzone-shared": "~5.0.0", - "chai": "^4.5.0", - "chai-as-promised": "^7.1.2", - "debug": "^4.4.3", - "fs-extra": "^11.3.2", - "json5": "^2.2.3", - "mocha": "^11.7.3", - "sinon": "^21.0.0", - "sinon-chai": "^3.7.0" - } - }, - "node_modules/@iobroker/testing/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@iobroker/testing/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@iobroker/types": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.1.1.tgz", - "integrity": "sha512-M4gfaJL2jaW12qjMzBg65wcR/9bzqpjxRr01NAdXhkYXVVCORvrYE9r8dnLeWpX5miBdT+tjBJD68wPEA03CZQ==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@iobroker/vis-2-widgets-react-dev": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@iobroker/vis-2-widgets-react-dev/-/vis-2-widgets-react-dev-4.0.4.tgz", - "integrity": "sha512-l7jOrzwE9gxLtQCYyF/BXPMaFpT6fZHq6BoH9BAm/GhmoGzkh708zSx5jHfo0E6Dj4XnY/lgil+77tbDZeR6Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mui/icons-material": "^6.1.8", - "@mui/material": "^6.1.8", - "@sentry/browser": "^8.40.0", - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "acorn-jsx-walk": "^2.0.0", - "acorn-walk": "^8.3.4", - "node-dir": "^0.1.17" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/@mui/core-downloads-tracker": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.5.0.tgz", - "integrity": "sha512-LGb8t8i6M2ZtS3Drn3GbTI1DVhDY6FJ9crEey2lZ0aN2EMZo8IZBZj9wRf4vqbZHaWjsYgtbOnJw5V8UWbmK2Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - } - }, - "node_modules/@mui/icons-material": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.5.0.tgz", - "integrity": "sha512-VPuPqXqbBPlcVSA0BmnoE4knW4/xG6Thazo8vCLWkOKusko6DtwFV6B665MMWJ9j0KFohTIf3yx2zYtYacvG1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@mui/material": "^6.5.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/material": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.5.0.tgz", - "integrity": "sha512-yjvtXoFcrPLGtgKRxFaH6OQPtcLPhkloC0BML6rBG5UeldR0nPULR/2E2BfXdo5JNV7j7lOzrrLX2Qf/iSidow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/core-downloads-tracker": "^6.5.0", - "@mui/system": "^6.5.0", - "@mui/types": "~7.2.24", - "@mui/utils": "^6.4.9", - "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.12", - "clsx": "^2.1.1", - "csstype": "^3.1.3", - "prop-types": "^15.8.1", - "react-is": "^19.0.0", - "react-transition-group": "^4.4.5" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^6.5.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@mui/material-pigment-css": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/private-theming": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.9.tgz", - "integrity": "sha512-LktcVmI5X17/Q5SkwjCcdOLBzt1hXuc14jYa7NPShog0GBDCDvKtcnP0V7a2s6EiVRlv7BzbWEJzH6+l/zaCxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/utils": "^6.4.9", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/styled-engine": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.5.0.tgz", - "integrity": "sha512-8woC2zAqF4qUDSPIBZ8v3sakj+WgweolpyM/FXf8jAx6FMls+IE4Y8VDZc+zS805J7PRz31vz73n2SovKGaYgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@emotion/cache": "^11.13.5", - "@emotion/serialize": "^1.3.3", - "@emotion/sheet": "^1.4.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } - } - }, - "node_modules/@mui/system": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.5.0.tgz", - "integrity": "sha512-XcbBYxDS+h/lgsoGe78ExXFZXtuIlSBpn/KsZq8PtZcIkUNJInkuDqcLd2rVBQrDC1u+rvVovdaWPf2FHKJf3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/private-theming": "^6.4.9", - "@mui/styled-engine": "^6.5.0", - "@mui/types": "~7.2.24", - "@mui/utils": "^6.4.9", - "clsx": "^2.1.1", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/types": { - "version": "7.2.24", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz", - "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/utils": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.9.tgz", - "integrity": "sha512-Y12Q9hbK9g+ZY0T3Rxrx9m2m10gaphDuUMgWxyV5kNJevVxXYCLclYUCC9vXaIk1/NdNDTcW2Yfr2OGvNFNmHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/types": "~7.2.24", - "@types/prop-types": "^15.7.14", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^19.0.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.213.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz", - "integrity": "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.6.0.tgz", - "integrity": "sha512-L8UyDwqpTcbkIK5cgwDRDYDoEhQoj8wp8BwsO19w3LB1Z41yEQm2VJyNfAi9DrLP/YTqXqWpKHyZfR9/tFYo1Q==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.6.0.tgz", - "integrity": "sha512-HLM1v2cbZ4TgYN6KEOj+Bbj8rAKriOdkF9Ed3tG25FoprSiQl7kYc+RRT6fUZGOvx0oMi5U67GoFdT+XUn8zEg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.213.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.213.0.tgz", - "integrity": "sha512-3i9NdkET/KvQomeh7UaR/F4r9P25Rx6ooALlWXPIjypcEOUxksCmVu0zA70NBJWlrMW1rPr/LRidFAflLI+s/w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.213.0", - "import-in-the-middle": "^3.0.0", - "require-in-the-middle": "^8.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-amqplib": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.60.0.tgz", - "integrity": "sha512-q/B2IvoVXRm1M00MvhnzpMN6rKYOszPXVsALi6u0ss4AYHe+TidZEtLW9N1ZhrobI1dSriHnBqqtAOZVAv07sg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.33.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-connect": { - "version": "0.56.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.56.0.tgz", - "integrity": "sha512-PKp+sSZ7AfzMvGgO3VCyo1inwNu+q7A1k9X88WK4PQ+S6Hp7eFk8pie+sWHDTaARovmqq5V2osav3lQej2B0nw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/connect": "3.4.38" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-dataloader": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.30.0.tgz", - "integrity": "sha512-MXHP2Q38cd2OhzEBKAIXUi9uBlPEYzF6BNJbyjUXBQ6kLaf93kRC41vNMIz0Nl5mnuwK7fDvKT+/lpx7BXRwdg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-express": { - "version": "0.61.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.61.0.tgz", - "integrity": "sha512-Xdmqo9RZuZlL29Flg8QdwrrX7eW1CZ7wFQPKHyXljNymgKhN1MCsYuqQ/7uxavhSKwAl7WxkTzKhnqpUApLMvQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-fs": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.32.0.tgz", - "integrity": "sha512-koR6apx0g0wX6RRiPpjA4AFQUQUbXrK16kq4/SZjVp7u5cffJhNkY4TnITxcGA4acGSPYAfx3NHRIv4Khn1axQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-generic-pool": { - "version": "0.56.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.56.0.tgz", - "integrity": "sha512-fg+Jffs6fqrf0uQS0hom7qBFKsbtpBiBl8+Vkc63Gx8xh6pVh+FhagmiO6oM0m3vyb683t1lP7yGYq22SiDnqg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-graphql": { - "version": "0.61.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.61.0.tgz", - "integrity": "sha512-pUiVASv6nh2XrerTvlbVHh7vKFzscpgwiQ/xvnZuAIzQ5lRjWVdRPUuXbvZJ/Yq79QsE81TZdJ7z9YsXiss1ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-hapi": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.59.0.tgz", - "integrity": "sha512-33wa4mEr+9+ztwdgLor1SeBu4Opz4IsmpcLETXAd3VmBrOjez8uQtrsOhPCa5Vhbm5gzDlMYTgFRLQzf8/YHFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.213.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.213.0.tgz", - "integrity": "sha512-B978Xsm5XEPGhm1P07grDoaOFLHapJPkOG9h016cJsyWWxmiLnPu2M/4Nrm7UCkHSiLnkXgC+zVGUAIahy8EEA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.6.0", - "@opentelemetry/instrumentation": "0.213.0", - "@opentelemetry/semantic-conventions": "^1.29.0", - "forwarded-parse": "2.1.2" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-ioredis": { - "version": "0.61.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.61.0.tgz", - "integrity": "sha512-hsHDadUtAFbws1YSDc1XW0svGFKiUbqv2td1Cby+UAiwvojm1NyBo/taifH0t8CuFZ0x/2SDm0iuTwrM5pnVOg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/redis-common": "^0.38.2", - "@opentelemetry/semantic-conventions": "^1.33.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-kafkajs": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.22.0.tgz", - "integrity": "sha512-wJU4IBQMUikdJAcTChLFqK5lo+flo7pahqd8DSLv7uMxsdOdAHj6RzKYAm8pPfUS6ItKYutYyuicwKaFwQKsoA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.30.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-knex": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.57.0.tgz", - "integrity": "sha512-vMCSh8kolEm5rRsc+FZeTZymWmIJwc40hjIKnXH4O0Dv/gAkJJIRXCsPX5cPbe0c0j/34+PsENd0HqKruwhVYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.33.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-koa": { - "version": "0.61.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.61.0.tgz", - "integrity": "sha512-lvrfWe9ShK/D2X4brmx8ZqqeWPfRl8xekU0FCn7C1dHm5k6+rTOOi36+4fnaHAP8lig9Ux6XQ1D4RNIpPCt1WQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.36.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0" - } - }, - "node_modules/@opentelemetry/instrumentation-lru-memoizer": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.57.0.tgz", - "integrity": "sha512-cEqpUocSKJfwDtLYTTJehRLWzkZ2eoePCxfVIgGkGkb83fMB71O+y4MvRHJPbeV2bdoWdOVrl8uO0+EynWhTEA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mongodb": { - "version": "0.66.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.66.0.tgz", - "integrity": "sha512-d7m9QnAY+4TCWI4q1QRkfrc6fo/92VwssaB1DzQfXNRvu51b78P+HJlWP7Qg6N6nkwdb9faMZNBCZJfftmszkw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.33.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mongoose": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.59.0.tgz", - "integrity": "sha512-6/jWU+c1NgznkVLDU/2y0bXV2nJo3o9FWZ9mZ9nN6T/JBNRoMnVXZl2FdBmgH+a5MwaWLs5kmRJTP5oUVGIkPw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.33.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.59.0.tgz", - "integrity": "sha512-r+V/Fh0sm7Ga8/zk/TI5H5FQRAjwr0RrpfPf8kNIehlsKf12XnvIaZi8ViZkpX0gyPEpLXqzqWD6QHlgObgzZw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.33.0", - "@types/mysql": "2.15.27" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql2": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.59.0.tgz", - "integrity": "sha512-n9/xrVCRBfG9egVbffnlU1uhr+HX0vF4GgtAB/Bvm48wpFgRidqD8msBMiym1kRYzmpWvJqTxNT47u1MkgBEdw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.33.0", - "@opentelemetry/sql-common": "^0.41.2" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-pg": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.65.0.tgz", - "integrity": "sha512-W0zpHEIEuyZ8zvb3njaX9AAbHgPYOsSWVOoWmv1sjVRSF6ZpBqtlxBWbU+6hhq1TFWBeWJOXZ8nZS/PUFpLJYQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.34.0", - "@opentelemetry/sql-common": "^0.41.2", - "@types/pg": "8.15.6", - "@types/pg-pool": "2.0.7" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-redis": { - "version": "0.61.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.61.0.tgz", - "integrity": "sha512-JnPexA034/0UJRsvH96B0erQoNOqKJZjE2ZRSw9hiTSC23LzE0nJE/u6D+xqOhgUhRnhhcPHq4MdYtmUdYTF+Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/redis-common": "^0.38.2", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-tedious": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.32.0.tgz", - "integrity": "sha512-BQS6gG8RJ1foEqfEZ+wxoqlwfCAzb1ZVG0ad8Gfe4x8T658HJCLGLd4E4NaoQd8EvPfLqOXgzGaE/2U4ytDSWA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.33.0", - "@types/tedious": "^4.0.14" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-undici": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.23.0.tgz", - "integrity": "sha512-LL0VySzKVR2cJSFVZaTYpZl1XTpBGnfzoQPe2W7McS2267ldsaEIqtQY6VXs2KCXN0poFjze5110PIpxHDaDGg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/semantic-conventions": "^1.24.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.7.0" - } - }, - "node_modules/@opentelemetry/redis-common": { - "version": "0.38.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.38.2.tgz", - "integrity": "sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.19.0 || >=20.6.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.6.0.tgz", - "integrity": "sha512-D4y/+OGe3JSuYUCBxtH5T9DSAWNcvCb/nQWIga8HNtXTVPQn59j0nTBAgaAXxUVBDl40mG3Tc76b46wPlZaiJQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.6.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.6.0.tgz", - "integrity": "sha512-g/OZVkqlxllgFM7qMKqbPV9c1DUPhQ7d4n3pgZFcrnrNft9eJXZM2TNHTPYREJBrtNdRytYyvwjgL5geDKl3EQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.6.0", - "@opentelemetry/resources": "2.6.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz", - "integrity": "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/sql-common": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.41.2.tgz", - "integrity": "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^2.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@prisma/instrumentation": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-7.4.2.tgz", - "integrity": "sha512-r9JfchJF1Ae6yAxcaLu/V1TGqBhAuSDe3mRNOssBfx1rMzfZ4fdNvrgUBwyb/TNTGXFxlH9AZix5P257x07nrg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.207.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.8" - } - }, - "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": { - "version": "0.207.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.207.0.tgz", - "integrity": "sha512-lAb0jQRVyleQQGiuuvCOTDVspc14nx6XJjP4FspJ1sNARo3Regq4ZZbrc3rN4b1TYSuUCvgH+UXUPug4SLOqEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { - "version": "0.207.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.207.0.tgz", - "integrity": "sha512-y6eeli9+TLKnznrR8AZlQMSJT7wILpXH+6EYq5Vf/4Ao+huI7EedxQHwRgVUOMLFbe7VFDvHJrX9/f4lcwnJsA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.207.0", - "import-in-the-middle": "^2.0.0", - "require-in-the-middle": "^8.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@prisma/instrumentation/node_modules/import-in-the-middle": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.6.tgz", - "integrity": "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.15.0", - "acorn-import-attributes": "^1.9.5", - "cjs-module-lexer": "^2.2.0", - "module-details-from-path": "^1.0.4" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@sentry-internal/browser-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz", - "integrity": "sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/core": "8.55.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/feedback": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.55.0.tgz", - "integrity": "sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/core": "8.55.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/replay": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.55.0.tgz", - "integrity": "sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "8.55.0", - "@sentry/core": "8.55.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz", - "integrity": "sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry-internal/replay": "8.55.0", - "@sentry/core": "8.55.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/browser": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.55.0.tgz", - "integrity": "sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "8.55.0", - "@sentry-internal/feedback": "8.55.0", - "@sentry-internal/replay": "8.55.0", - "@sentry-internal/replay-canvas": "8.55.0", - "@sentry/core": "8.55.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/core": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz", - "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/integrations": { - "version": "7.114.0", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.114.0.tgz", - "integrity": "sha512-BJIBWXGKeIH0ifd7goxOS29fBA8BkEgVVCahs6xIOXBjX1IRS6PmX0zYx/GP23nQTfhJiubv2XPzoYOlZZmDxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/core": "7.114.0", - "@sentry/types": "7.114.0", - "@sentry/utils": "7.114.0", - "localforage": "^1.8.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/integrations/node_modules/@sentry/core": { - "version": "7.114.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.114.0.tgz", - "integrity": "sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/types": "7.114.0", - "@sentry/utils": "7.114.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/node": { - "version": "10.44.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.44.0.tgz", - "integrity": "sha512-q+/WR9ZeF9Af8uyehOj2tQQOa7LH07mJfOuDus5X6G6cLuugdRUGUBB5Qhw+J/ULSxbzGADBZv6AYOyoGaNx7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fastify/otel": "0.17.1", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^2.6.0", - "@opentelemetry/core": "^2.6.0", - "@opentelemetry/instrumentation": "^0.213.0", - "@opentelemetry/instrumentation-amqplib": "0.60.0", - "@opentelemetry/instrumentation-connect": "0.56.0", - "@opentelemetry/instrumentation-dataloader": "0.30.0", - "@opentelemetry/instrumentation-express": "0.61.0", - "@opentelemetry/instrumentation-fs": "0.32.0", - "@opentelemetry/instrumentation-generic-pool": "0.56.0", - "@opentelemetry/instrumentation-graphql": "0.61.0", - "@opentelemetry/instrumentation-hapi": "0.59.0", - "@opentelemetry/instrumentation-http": "0.213.0", - "@opentelemetry/instrumentation-ioredis": "0.61.0", - "@opentelemetry/instrumentation-kafkajs": "0.22.0", - "@opentelemetry/instrumentation-knex": "0.57.0", - "@opentelemetry/instrumentation-koa": "0.61.0", - "@opentelemetry/instrumentation-lru-memoizer": "0.57.0", - "@opentelemetry/instrumentation-mongodb": "0.66.0", - "@opentelemetry/instrumentation-mongoose": "0.59.0", - "@opentelemetry/instrumentation-mysql": "0.59.0", - "@opentelemetry/instrumentation-mysql2": "0.59.0", - "@opentelemetry/instrumentation-pg": "0.65.0", - "@opentelemetry/instrumentation-redis": "0.61.0", - "@opentelemetry/instrumentation-tedious": "0.32.0", - "@opentelemetry/instrumentation-undici": "0.23.0", - "@opentelemetry/resources": "^2.6.0", - "@opentelemetry/sdk-trace-base": "^2.6.0", - "@opentelemetry/semantic-conventions": "^1.40.0", - "@prisma/instrumentation": "7.4.2", - "@sentry/core": "10.44.0", - "@sentry/node-core": "10.44.0", - "@sentry/opentelemetry": "10.44.0", - "import-in-the-middle": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/node-core": { - "version": "10.44.0", - "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.44.0.tgz", - "integrity": "sha512-jUGsadMrvZ08UMbqJBfjFFMk1k3VbyxfUypf0iDGGgyLmuHotYQPo/5aND+o2KxMDXR60LwcQrMoZFpanK6jXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/core": "10.44.0", - "@sentry/opentelemetry": "10.44.0", - "import-in-the-middle": "^3.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", - "@opentelemetry/core": "^1.30.1 || ^2.1.0", - "@opentelemetry/instrumentation": ">=0.57.1 <1", - "@opentelemetry/resources": "^1.30.1 || ^2.1.0", - "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", - "@opentelemetry/semantic-conventions": "^1.39.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@opentelemetry/context-async-hooks": { - "optional": true - }, - "@opentelemetry/core": { - "optional": true - }, - "@opentelemetry/instrumentation": { - "optional": true - }, - "@opentelemetry/resources": { - "optional": true - }, - "@opentelemetry/sdk-trace-base": { - "optional": true - }, - "@opentelemetry/semantic-conventions": { - "optional": true - } - } - }, - "node_modules/@sentry/node-core/node_modules/@sentry/core": { - "version": "10.44.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.44.0.tgz", - "integrity": "sha512-aa7CiDaNFZvHpqd97LJhuskolfJ/4IH5xyuVVLnv7l6B0v9KTwskPUxb0tH1ej3FxuzfH+i8iTiTFuqpfHS3QA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/node/node_modules/@sentry/core": { - "version": "10.44.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.44.0.tgz", - "integrity": "sha512-aa7CiDaNFZvHpqd97LJhuskolfJ/4IH5xyuVVLnv7l6B0v9KTwskPUxb0tH1ej3FxuzfH+i8iTiTFuqpfHS3QA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/opentelemetry": { - "version": "10.44.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.44.0.tgz", - "integrity": "sha512-zP4vP8tBxjlmxQ4VcWOwZ0b3lPUxlYPg9FqJwANm9SRJN+7V5psm8TIaAtu9uqtIcJMRHdXkOM4cAggNiLk0KA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/core": "10.44.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", - "@opentelemetry/core": "^1.30.1 || ^2.1.0", - "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", - "@opentelemetry/semantic-conventions": "^1.39.0" - } - }, - "node_modules/@sentry/opentelemetry/node_modules/@sentry/core": { - "version": "10.44.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.44.0.tgz", - "integrity": "sha512-aa7CiDaNFZvHpqd97LJhuskolfJ/4IH5xyuVVLnv7l6B0v9KTwskPUxb0tH1ej3FxuzfH+i8iTiTFuqpfHS3QA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/types": { - "version": "7.114.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.114.0.tgz", - "integrity": "sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/utils": { - "version": "7.114.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.114.0.tgz", - "integrity": "sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/types": "7.114.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/commons/node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", - "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "type-detect": "^4.1.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai-as-promised": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", - "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mysql": { - "version": "2.15.27", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", - "integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "25.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", - "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.19.0" - } - }, - "node_modules/@types/node-schedule": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@types/node-schedule/-/node-schedule-2.1.8.tgz", - "integrity": "sha512-k00g6Yj/oUg/CDC+MeLHUzu0+OFxWbIqrFfDiLi6OPKxTujvpv29mHGM8GtKr7B+9Vv92FcK/8mRqi1DK5f3hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/nodemailer": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-7.0.11.tgz", - "integrity": "sha512-E+U4RzR2dKrx+u3N4DlsmLaDC6mMZOM/TPROxA0UAPiTgI0y4CEFBmZE+coGWTjakDriRsXG368lNk1u9Q0a2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/pg": { - "version": "8.15.6", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.6.tgz", - "integrity": "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "pg-protocol": "*", - "pg-types": "^2.2.0" - } - }, - "node_modules/@types/pg-pool": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.7.tgz", - "integrity": "sha512-U4CwmGVQcbEuqpyju8/ptOKg6gEC+Tqsvj2xS9o1g71bUh8twxnC6ZL5rZKCsGN0iyH0CwgUyc9VR5owNQF9Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/pg": "*" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "19.2.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", - "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", - "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/request": { - "version": "2.48.13", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz", - "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.5" - } - }, - "node_modules/@types/sinon": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", - "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/@types/sinon-chai": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", - "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "*", - "@types/sinon": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz", - "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/suncalc": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@types/suncalc/-/suncalc-1.9.2.tgz", - "integrity": "sha512-ATAGBHHfA1TlE2tjfidLyTcysjoT2JHHEAmWRULh73SU9UTn++j5fqHEW16X6Y/2Li87jEQXzgu4R/OOdlDqzw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tedious": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", - "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz", - "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/type-utils": "8.46.2", - "@typescript-eslint/utils": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.46.2", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.2.tgz", - "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.2.tgz", - "integrity": "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.2", - "@typescript-eslint/types": "^8.46.2", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.2.tgz", - "integrity": "sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz", - "integrity": "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.2.tgz", - "integrity": "sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/utils": "8.46.2", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.2.tgz", - "integrity": "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz", - "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/project-service": "8.46.2", - "@typescript-eslint/tsconfig-utils": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.2.tgz", - "integrity": "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", - "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "8.46.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-jsx-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/acorn-jsx-walk/-/acorn-jsx-walk-2.0.0.tgz", - "integrity": "sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==", - "dev": true, - "license": "MIT" - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adm-zip": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", - "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/alcalzone-shared": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/alcalzone-shared/-/alcalzone-shared-5.0.0.tgz", - "integrity": "sha512-X73hgVWcrIKUUB6jZgHj5flRbTft8AAoJ2MqRKEcAX1whW3OeGkxsQ6ol4nd4/rKxd1eoCRXUGW3cIhXrXU4Sg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", - "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.8.21", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.21.tgz", - "integrity": "sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" - }, - "node_modules/browserslist": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", - "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", - "update-browserslist-db": "^1.1.4" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/builtin-modules": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", - "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0", - "peer": true - }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", - "dev": true, - "license": "WTFPL", - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/change-case": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", - "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/clean-regexp/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-js-compat": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", - "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "browserslist": "^4.26.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cron-parser": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", - "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", - "license": "MIT", - "dependencies": { - "luxon": "^3.2.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/deepl-node": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/deepl-node/-/deepl-node-1.20.0.tgz", - "integrity": "sha512-2MNJgJgQQWHAieaKYJyxYe1g21P8MYOtMbcS7ApyBHT8856c6EYO9RRNevodGaIf0oiKMzwyenJ59O7B0NQyGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": ">=12.0", - "adm-zip": "^0.5.16", - "axios": "^1.7.4", - "form-data": "^3.0.0", - "loglevel": ">=1.6.2", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/deepl-node/node_modules/form-data": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", - "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.243", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.243.tgz", - "integrity": "sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", - "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.11", - "@esbuild/android-arm": "0.25.11", - "@esbuild/android-arm64": "0.25.11", - "@esbuild/android-x64": "0.25.11", - "@esbuild/darwin-arm64": "0.25.11", - "@esbuild/darwin-x64": "0.25.11", - "@esbuild/freebsd-arm64": "0.25.11", - "@esbuild/freebsd-x64": "0.25.11", - "@esbuild/linux-arm": "0.25.11", - "@esbuild/linux-arm64": "0.25.11", - "@esbuild/linux-ia32": "0.25.11", - "@esbuild/linux-loong64": "0.25.11", - "@esbuild/linux-mips64el": "0.25.11", - "@esbuild/linux-ppc64": "0.25.11", - "@esbuild/linux-riscv64": "0.25.11", - "@esbuild/linux-s390x": "0.25.11", - "@esbuild/linux-x64": "0.25.11", - "@esbuild/netbsd-arm64": "0.25.11", - "@esbuild/netbsd-x64": "0.25.11", - "@esbuild/openbsd-arm64": "0.25.11", - "@esbuild/openbsd-x64": "0.25.11", - "@esbuild/openharmony-arm64": "0.25.11", - "@esbuild/sunos-x64": "0.25.11", - "@esbuild/win32-arm64": "0.25.11", - "@esbuild/win32-ia32": "0.25.11", - "@esbuild/win32-x64": "0.25.11" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", - "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.1", - "@eslint/core": "^0.16.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.38.0", - "@eslint/plugin-kit": "^0.4.0", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "54.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-54.7.0.tgz", - "integrity": "sha512-u5Na4he2+6kY1rWqxzbQaAwJL3/tDCuT5ElDRc5UJ9stOeQeQ5L1JJ1kRRu7ldYMlOHMCJLsY8Mg/Tu3ExdZiQ==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@es-joy/jsdoccomment": "~0.56.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.4.1", - "escape-string-regexp": "^4.0.0", - "espree": "^10.4.0", - "esquery": "^1.6.0", - "parse-imports-exports": "^0.2.4", - "semver": "^7.7.2", - "spdx-expression-parse": "^4.0.0" - }, - "engines": { - "node": ">=20.11.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-unicorn": { - "version": "60.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz", - "integrity": "sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "@eslint-community/eslint-utils": "^4.7.0", - "@eslint/plugin-kit": "^0.3.3", - "change-case": "^5.4.4", - "ci-info": "^4.3.0", - "clean-regexp": "^1.0.0", - "core-js-compat": "^3.44.0", - "esquery": "^1.6.0", - "find-up-simple": "^1.0.1", - "globals": "^16.3.0", - "indent-string": "^5.0.0", - "is-builtin-module": "^5.0.0", - "jsesc": "^3.1.0", - "pluralize": "^8.0.0", - "regexp-tree": "^0.1.27", - "regjsparser": "^0.12.0", - "semver": "^7.7.2", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": "^20.10.0 || >=21.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" - }, - "peerDependencies": { - "eslint": ">=9.29.0" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@eslint/core": "^0.15.2", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0", - "peer": true - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", - "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", - "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.35", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/forwarded-parse": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", - "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gaxios": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.2.tgz", - "integrity": "sha512-/Szrn8nr+2TsQT1Gp8iIe/BEytJmbyfrbFh419DfGQSkEgNEhbPi7JRJuughjkTzPWgU9gBQf5AVu3DbHt0OXA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/gcp-metadata": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.1.tgz", - "integrity": "sha512-dTCcAe9fRQf06ELwel6lWWFrEbstwjUBYEhr5VRGoC+iPDZQucHppCowaIp8b8v92tU1G4X4H3b/Y6zXZxkMsQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "gaxios": "^7.0.0", - "google-logging-utils": "^1.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", - "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true, - "license": "MIT" - }, - "node_modules/google-auth-library": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.4.2.tgz", - "integrity": "sha512-EKiQasw6aEdxSovPEf1oBxCEvxjFamZ6MPaVOSPXZMnqKFLo+rrYjHyjKlFfZcXiKi9qAH6cutr5WRqqa1jKhg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^7.0.0", - "gcp-metadata": "^8.0.0", - "google-logging-utils": "^1.0.0", - "gtoken": "^8.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/google-gax": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-5.0.4.tgz", - "integrity": "sha512-HmQ6zIYBs2EikTk+kjeHmtHprNTEpsnVaKONw9cwZZwUNCkUb+D5RYrJpCxyjdvIDvJp3wLbVReolJLRZRms1g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@grpc/grpc-js": "^1.12.6", - "@grpc/proto-loader": "^0.8.0", - "duplexify": "^4.1.3", - "google-auth-library": "^10.1.0", - "google-logging-utils": "^1.1.1", - "node-fetch": "^3.3.2", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^3.0.0", - "protobufjs": "^7.5.3", - "retry-request": "^8.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/google-logging-utils": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.1.tgz", - "integrity": "sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/gtoken": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz", - "integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "gaxios": "^7.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-in-the-middle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.0.0.tgz", - "integrity": "sha512-OnGy+eYT7wVejH2XWgLRgbmzujhhVIATQH0ztIeRilwHBjTeG3pD+XnH3PKX0r9gJ0BuJmJ68q/oh9qgXnNDQg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.15.0", - "acorn-import-attributes": "^1.9.5", - "cjs-module-lexer": "^2.2.0", - "module-details-from-path": "^1.0.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-builtin-module": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", - "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "builtin-modules": "^5.0.0" - }, - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-html": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-2.0.0.tgz", - "integrity": "sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "html-tags": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-5.1.1.tgz", - "integrity": "sha512-DYYlVP1fe4QBMh2xTIs20/YeTz2GYVbWAEZweHSZD+qQ/Cx2d5RShuhhsdk64eTjNq0FeVnteP/qVOgaywSRbg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonata": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.1.0.tgz", - "integrity": "sha512-OCzaRMK8HobtX8fp37uIVmL8CY1IGc/a6gLsDqz3quExFR09/U78HUzWYr7T31UEB6+Eu0/8dkVD5fFDOl9a8w==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/jszip/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/jszip/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/jszip/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jwa": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/ky": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", - "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "lie": "3.1.1" - } - }, - "node_modules/localforage/node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/loglevel": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", - "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/long": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/luxon": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", - "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mocha": { - "version": "11.7.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.4.tgz", - "integrity": "sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-stdout": "^1.3.1", - "chokidar": "^4.0.1", - "debug": "^4.3.5", - "diff": "^7.0.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^10.4.5", - "he": "^1.2.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^9.0.5", - "ms": "^2.1.3", - "picocolors": "^1.1.1", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^9.2.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/module-details-from-path": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", - "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", - "dev": true, - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/nano-spawn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.1.0.tgz", - "integrity": "sha512-yTW+2okrElHiH4fsiz/+/zc0EDo9BDDoC3iKk8dpv1GeRc9nUWzUZHx6TofMWErchhUQR8hY9/Eu1Uja9x1nqA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/node-dir": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.10.5" - } - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-inspect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-inspect/-/node-inspect-2.0.0.tgz", - "integrity": "sha512-vaDNU6Fa/vt8gv/PV+QoeSIPhcBnHMiNOtInxcojfagspQg5KP9HloUDGJWIacamT8Agiu51eF+fuBjrE25a6w==", - "deprecated": "This module is part of Node.js core and does not need to be installed separately. It is now unmaintained.", - "license": "MIT", - "bin": { - "node-inspect": "cli.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/node-schedule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", - "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", - "license": "MIT", - "dependencies": { - "cron-parser": "^4.2.0", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/nodemailer": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-8.0.5.tgz", - "integrity": "sha512-0PF8Yb1yZuQfQbq+5/pZJrtF6WQcjTd5/S4JOHs9PGFxuTqoB/icwuB44pOdURHJbRKX1PPoJZtY7R4VUoCC8w==", - "license": "MIT-0", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "license": "(MIT AND Zlib)" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-imports-exports": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", - "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "parse-statements": "1.0.11" - } - }, - "node_modules/parse-statements": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", - "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", - "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", - "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.2.tgz", - "integrity": "sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==", - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/promisify-child-process": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-5.0.1.tgz", - "integrity": "sha512-jP2Aw1acio5NYIgCEpW9Ay2OhWlcbKTZp4aY6iivx75K2yXizJBt6Wz7sQrHloXKIfrjhbUfdH9m6UZrus4tmA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/proto3-json-serializer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-3.0.3.tgz", - "integrity": "sha512-iUi7jGLuECChuoUwtvf6eXBDcFXTHAt5GM6ckvtD3RqD+j2wW0GW6WndPOu9IWeUk7n933lzrskcNMHJy2tFSw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "protobufjs": "^7.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/protobufjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", - "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", - "dev": true, - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "scheduler": "^0.27.0" - }, - "peerDependencies": { - "react": "^19.2.0" - } - }, - "node_modules/react-is": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.0.tgz", - "integrity": "sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp-tree": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", - "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "regexp-tree": "bin/regexp-tree" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-in-the-middle": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz", - "integrity": "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "module-details-from-path": "^1.0.3" - }, - "engines": { - "node": ">=9.3.0 || >=8.10.0 <9.0.0" - } - }, - "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/retry-request": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-8.0.2.tgz", - "integrity": "sha512-JzFPAfklk1kjR1w76f0QOIhoDkNkSqW8wYKT08n9yysTmZfB+RQ2QoXoTAeOi1HD9ZipTyTAZg3c4pM/jeqgSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "extend": "^3.0.2", - "teeny-request": "^10.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/sinon": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.0.tgz", - "integrity": "sha512-TOgRcwFPbfGtpqvZw+hyqJDvqfapr1qUlOizROIk4bBLjlsjlB00Pg6wMFXNtJRpu+eCZuVOaLatG7M8105kAw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.5", - "@sinonjs/samsam": "^8.0.1", - "diff": "^7.0.0", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon-chai": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", - "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", - "dev": true, - "license": "(BSD-2-Clause OR WTFPL)", - "peerDependencies": { - "chai": "^4.0.0", - "sinon": ">=4.0.0" - } - }, - "node_modules/sorted-array-functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", - "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0", - "peer": true - }, - "node_modules/spdx-expression-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", - "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "dev": true, - "license": "CC0-1.0", - "peer": true - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "dev": true, - "license": "MIT", - "dependencies": { - "stubs": "^3.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", - "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/suncalc2": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/suncalc2/-/suncalc2-1.8.1.tgz", - "integrity": "sha512-tNoAni1LqWzBzJRX3NRCsD50gVsuejH1jd9Y+XyKO3WkpPIU+QNyWF4Zf2JnUQKW2LKLWIBgVDQCrgsQwqs0tA==" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/teeny-request": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-10.1.0.tgz", - "integrity": "sha512-3ZnLvgWF29jikg1sAQ1g0o+lr5JX6sVgYvfUJazn7ZjJroDBUTWp44/+cFVX0bULjv4vci+rBD+oGVAkWqhUbw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^3.3.2", - "stream-events": "^1.0.5" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/teeny-request/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/teeny-request/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/timekeeper": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/timekeeper/-/timekeeper-2.3.1.tgz", - "integrity": "sha512-LeQRS7/4JcC0PgdSFnfUiStQEdiuySlCj/5SJ18D+T1n9BoY7PxKFfCwLulpHXoLUFr67HxBddQdEX47lDGx1g==", - "dev": true, - "license": "MIT" - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.2.tgz", - "integrity": "sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.46.2", - "@typescript-eslint/parser": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/utils": "8.46.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", - "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "name": "iobroker.javascript", + "version": "9.2.3", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "iobroker.javascript", + "version": "9.2.3", + "license": "MIT", + "dependencies": { + "@iobroker/adapter-core": "^3.4.1", + "@iobroker/types": "^7.1.2", + "@types/node": "^18.19.130", + "axios": "^1.17.0", + "jsonata": "^2.2.1", + "jszip": "^3.10.1", + "node-inspect": "^2.0.0", + "node-schedule": "2.1.1", + "nodemailer": "^8.0.11", + "prettier": "^3.8.4", + "promisify-child-process": "^5.0.1", + "semver": "^7.8.4", + "suncalc2": "^1.8.1", + "typescript": "5.9.3", + "virtual-tsc": "^0.6.2", + "wake_on_lan": "^1.0.0" + }, + "devDependencies": { + "@alcalzone/release-script": "^5.2.1", + "@alcalzone/release-script-plugin-iobroker": "^5.2.0", + "@alcalzone/release-script-plugin-license": "^5.2.0", + "@iobroker/adapter-dev": "^1.5.0", + "@iobroker/build-tools": "^3.0.1", + "@iobroker/eslint-config": "^2.2.0", + "@iobroker/plugin-sentry": "^3.0.4", + "@iobroker/testing": "^5.2.2", + "@iobroker/vis-2-widgets-react-dev": "^4.0.4", + "@types/node-schedule": "^2.1.8", + "@types/nodemailer": "^7.0.12", + "@types/request": "^2.48.13", + "@types/suncalc": "^1.9.2", + "alcalzone-shared": "^5.0.0", + "timekeeper": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/esbuild-register": { + "version": "2.5.1-1", + "resolved": "https://registry.npmjs.org/@alcalzone/esbuild-register/-/esbuild-register-2.5.1-1.tgz", + "integrity": "sha512-u19/K/ZaiWQhYIQZeF2FImUeJDiMD4i2h7qPdU0HVFCxoQynye59N4oy6EvjxeXaxLnGkppcb5KKeiYD4cT1iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.11.5", + "jsonc-parser": "^3.0.0" + } + }, + "node_modules/@alcalzone/esbuild-register/node_modules/esbuild": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.23.tgz", + "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + } + }, + "node_modules/@alcalzone/pak": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.12.0.tgz", + "integrity": "sha512-9r0zM5JAVTuPma1M/nMXiIlihQ07bWnxiYdqQrRsqFcWfm/p2hATbMtDMBXonkKZZGuOQxEMzTk7kpzGgnEJEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ky": "^1.14.3", + "nano-spawn": "^2.0.0", + "semver": "^7.7.4", + "tiny-glob": "^0.2.9" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@alcalzone/release-script": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script/-/release-script-5.2.1.tgz", + "integrity": "sha512-d7aeYU/c1fKcBRkZGpfLLAK6zjpOPV00NzdsYKap9uTdlBqrC5d/OlY7n9Jet0eKTzygKsz7mtPlV8t5GNPGPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "@alcalzone/release-script-plugin-changelog": "5.2.1", + "@alcalzone/release-script-plugin-exec": "5.2.0", + "@alcalzone/release-script-plugin-git": "5.2.0", + "@alcalzone/release-script-plugin-package": "5.2.0", + "@alcalzone/release-script-plugin-version": "5.2.0", + "alcalzone-shared": "^5.0.0", + "enquirer": "^2.3.6", + "picocolors": "1.0.0", + "semver": "^7.7.2", + "source-map-support": "^0.5.21", + "yargs": "^17.4.1" + }, + "bin": { + "release-script": "bin/release.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-core": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-core/-/release-script-core-5.2.0.tgz", + "integrity": "sha512-xR09iP7pr9hpkdjvSQBxFTyV1MEvUQ+4ar5p0RUl5ogPqVqTF+r4GYkrOvZsxSFfTrU/Fm0TVC29mJ0UkmFrOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-changelog": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-changelog/-/release-script-plugin-changelog-5.2.1.tgz", + "integrity": "sha512-IUbwNQW6r5O40FUKGz3yHumnca6o8Xct/d4+7wslkcjnBMbUR5CMlt0/QCi/Xs9jNhumvLV9w7pNkku2WCz/xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-exec": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-exec/-/release-script-plugin-exec-5.2.0.tgz", + "integrity": "sha512-YCLHx+W0MqYYR54scElkjcF3E16iqoh8j5aanmNMhoYTQYkBLX162zgIF/Ivx9kxVe47RNZhwdfg7sJd18ftKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-git": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-git/-/release-script-plugin-git-5.2.0.tgz", + "integrity": "sha512-CDR1gVIKXp2RyYSKhOHxma2m7AH5p8Ont+Mlq2W5rWxCyhvxkKhSP363QoElWCTRIvYWLkwsR6Tf0KAyXf/mBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-iobroker": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-iobroker/-/release-script-plugin-iobroker-5.2.0.tgz", + "integrity": "sha512-xBjEXvleAd3vencWmwLt1BtI8ibueZWWD5Trzf2AyyIpN0LTSAa6oz+MCN9xafgBFYueaKXDmA1OARiKaiupSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0", + "ky": "^1.7.5", + "semver": "^7.7.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-license": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-license/-/release-script-plugin-license-5.2.0.tgz", + "integrity": "sha512-DeawSM2g9rWF355iQRBIrO69/Yct0Og6yhgFJjFCSGc3WNBq22l0GzalO1yIL84Ln12tnBhT7n9I+aOuJSnUNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "tiny-glob": "^0.2.9" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-package": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-package/-/release-script-plugin-package-5.2.0.tgz", + "integrity": "sha512-lgvd33pKJ2dCxEe8aVzNHTc7AIfv195URBmfu57NioWQhFAOISdNRMPzOWAqsDyOumYXGMGPBIPjUkCTGgYyKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/pak": "^0.12.0", + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0", + "semver": "^7.7.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-version": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-version/-/release-script-plugin-version-5.2.0.tgz", + "integrity": "sha512-OeM4lpzou7SVtTdD1Jmfj+kq3LgLr9ed2EphoWfCeJe/ES5+ARhcqbTibfDX8K98lehil9Uc5l1T9NlrdlkzZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0", + "semver": "^7.7.2", + "tiny-glob": "^0.2.9" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.56.0.tgz", + "integrity": "sha512-c6EW+aA1w2rjqOMjbL93nZlwxp6c1Ln06vTYs5FjRRhmJXK8V/OrSXdT+pUr4aRYgjCgu8/OkiZr0tzeVrRSbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@typescript-eslint/types": "^8.42.0", + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~5.1.0" + }, + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@esm2cjs/execa": { + "version": "6.1.1-cjs.1", + "resolved": "https://registry.npmjs.org/@esm2cjs/execa/-/execa-6.1.1-cjs.1.tgz", + "integrity": "sha512-FHxfnmuDIjY1VS/BLzDkL8EkbcFvi8s6x1nYQ1Nyu0An0n88EJcGhDBcRWLFwt3C3nT7xwI+MwHRH1TZcAFW2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@esm2cjs/human-signals": "^3.0.1", + "@esm2cjs/is-stream": "^3.0.0", + "@esm2cjs/npm-run-path": "^5.1.1-cjs.0", + "@esm2cjs/onetime": "^6.0.1-cjs.0", + "@esm2cjs/strip-final-newline": "^3.0.1-cjs.0", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "merge-stream": "^2.0.0", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@esm2cjs/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-QZme4eF/PwTpeSbMB4AaWGQ4VSygzE30jI+Oas1NPTtZQAgcHwWVDOQpIW8FUmtzn5Q+2cS7AjnTzbtqtc5P6g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.20.0" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-qcBscHlJpZFOD5nnmMHkzOrq2xyvsp9fbVreQLS8x2LOs8N3CrNi3fqvFY0GVJR+YSOHscwhG9T5t4Ck7R7QGw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-LIIAjcpjLr4rcbYmRQ+eRu55Upy/MMB78seIlwqbnyiA+cTa1/pxWnJ1NHJQrw6tx2wMQmlYoJj+wf16NjWH6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/npm-run-path": { + "version": "5.1.1-cjs.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/npm-run-path/-/npm-run-path-5.1.1-cjs.0.tgz", + "integrity": "sha512-CWeAIyE8iNSCgP2ItPE8iPgS+lACqgH+MuFRaWOIl2T7hnHqPFfhAJJ/LcLJJ/RMIxNMeenjFMwc91HW7NWr1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@esm2cjs/path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/onetime": { + "version": "6.0.1-cjs.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/onetime/-/onetime-6.0.1-cjs.0.tgz", + "integrity": "sha512-MkZMZSxrSC/6yUuAw6Azc56XOgwHQQIsNDlO/zgFmOcycJBhRwRuc/gdYUUOFNZIh7y+f0JSIxkNdJPFvJ5W0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@esm2cjs/mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-fKzZ3uIIP4j+7WfyG0MEkomGHL0hUXWCx1kY2Zct3GTdl4pyY+3k5lCUxjgdDa2Ld1BCjMNorXnRHiBP6jW6CQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/strip-final-newline": { + "version": "3.0.1-cjs.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/strip-final-newline/-/strip-final-newline-3.0.1-cjs.0.tgz", + "integrity": "sha512-o41riCGPiOEStayoikBCAqwa6igbv9L9rP+k5UCfQ24EJD/wGrdDs/KTNwkHG5JzDK3T60D5dMkWkLKEPy8gjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@fastify/otel": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@fastify/otel/-/otel-0.17.1.tgz", + "integrity": "sha512-K4wyxfUZx2ux5o+b6BtTqouYFVILohLZmSbA2tKUueJstNcBnoGPVhllCaOvbQ3ZrXdUxUC/fyrSWSCqHhdOPg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.212.0", + "@opentelemetry/semantic-conventions": "^1.28.0", + "minimatch": "^10.2.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" + } + }, + "node_modules/@fastify/otel/node_modules/@opentelemetry/api-logs": { + "version": "0.212.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.212.0.tgz", + "integrity": "sha512-TEEVrLbNROUkYY51sBJGk7lO/OLjuepch8+hmpM6ffMJQ2z/KVCjdHuCFX6fJj8OkJP2zckPjrJzQtXU3IAsFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation": { + "version": "0.212.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.212.0.tgz", + "integrity": "sha512-IyXmpNnifNouMOe0I/gX7ENfv2ZCNdYTF0FpCsoBcpbIHzk81Ww9rQTYTnvghszCg7qGrIhNvWC8dhEifgX9Jg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.212.0", + "import-in-the-middle": "^2.0.6", + "require-in-the-middle": "^8.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@fastify/otel/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@fastify/otel/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@fastify/otel/node_modules/import-in-the-middle": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.6.tgz", + "integrity": "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.15.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^2.2.0", + "module-details-from-path": "^1.0.4" + } + }, + "node_modules/@fastify/otel/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@google-cloud/common": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-6.0.0.tgz", + "integrity": "sha512-IXh04DlkLMxWgYLIUYuHHKXKOUwPDzDgke1ykkkJPe48cGIS9kkL2U/o0pm4ankHLlvzLF/ma1eO86n/bkumIA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "arrify": "^2.0.0", + "duplexify": "^4.1.3", + "extend": "^3.0.2", + "google-auth-library": "^10.0.0-rc.1", + "html-entities": "^2.5.2", + "retry-request": "^8.0.0", + "teeny-request": "^10.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@google-cloud/common/node_modules/@google-cloud/promisify": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.1.0.tgz", + "integrity": "sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-5.0.0.tgz", + "integrity": "sha512-N8qS6dlORGHwk7WjGXKOSsLjIjNINCPicsOX6gyyLiYk7mq3MtII96NZ9N2ahwA2vnkLmZODOIH9rlNniYWvCQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@google-cloud/translate": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@google-cloud/translate/-/translate-9.2.1.tgz", + "integrity": "sha512-7/RWxkMd4fKX88Pzzhr2ly8yOjEepCW4ro4ZsdAUsf2Wo2ZLgp75yNZaQGKBBetgOc8yPVl8djr/2XFIHnWS3w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@google-cloud/common": "^6.0.0", + "@google-cloud/promisify": "^5.0.0", + "arrify": "^2.0.0", + "extend": "^3.0.2", + "google-gax": "^5.0.0", + "is-html": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.0.tgz", + "integrity": "sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.8.0", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", + "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.5.3", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@iobroker/adapter-core": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.4.1.tgz", + "integrity": "sha512-0Rwpq1fkoOWe4sGunLSdJrD1zNUHYQPZd7pJMOnCpaO6q2dpSatfgxURyM8dw5z6NZNmZrqP7XyUOIPUObICpg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@iobroker/types": ">=6.0.11" + } + }, + "node_modules/@iobroker/adapter-dev": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-dev/-/adapter-dev-1.5.0.tgz", + "integrity": "sha512-L1FhO7oxaz4hNMobvgbanSGyn2LaCESGKqPPJhXWU00vVEw5Cc166xdnU63Dk+JDnV5zl/HzOcFANGisETAWIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@esm2cjs/execa": "^6.1.1-cjs.1", + "@google-cloud/translate": "^9.2.0", + "ansi-colors": "^4.1.3", + "axios": "^1.11.0", + "deepl-node": "^1.19.0", + "esbuild": "^0.25.9", + "fs-extra": "^11.3.1", + "rimraf": "^5.0.10", + "tiny-glob": "^0.2.9", + "yargs": "^18.0.0" + }, + "bin": { + "build-adapter": "bin/build-adapter.js", + "clean-dir": "bin/clean-dir.js", + "translate-adapter": "bin/translate-adapter.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iobroker/adapter-dev/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/@iobroker/build-tools": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@iobroker/build-tools/-/build-tools-3.0.1.tgz", + "integrity": "sha512-i5PsBOHNscMAqmdYrdYxJUplyFCkTwPUVJVL5iQozbG7+e79bHTHXuLCHwslaN/m5ACfr0KmtpoMram8gzGnPg==", + "dev": true, + "dependencies": { + "glob": "^13.0.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@iobroker/build-tools/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@iobroker/build-tools/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@iobroker/build-tools/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@iobroker/build-tools/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@iobroker/build-tools/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@iobroker/build-tools/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@iobroker/eslint-config": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@iobroker/eslint-config/-/eslint-config-2.2.0.tgz", + "integrity": "sha512-89U2d81BUrReVgVFUJwjxYsHSbvjAt8w8OoKavtNp//wkG7JU4n/VnISMEvQqaQt7i0sWc/xSx27TYDx9FXAYg==", + "dev": true, + "peerDependencies": { + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.34.0", + "@typescript-eslint/eslint-plugin": "^8.40.0", + "@typescript-eslint/parser": "^8.40.0", + "eslint": ">=9.32.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-import": "^2.30.0", + "eslint-plugin-jsdoc": "^54.1.1", + "eslint-plugin-prettier": "^5.5.4", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-unicorn": "^60.0.0", + "globals": "^16.3.0", + "prettier": ">=3.6.2", + "typescript-eslint": "^8.40.0" + } + }, + "node_modules/@iobroker/plugin-base": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@iobroker/plugin-base/-/plugin-base-3.0.3.tgz", + "integrity": "sha512-pUKOz9/ZqIDxPQo9E97UdCF6p8NyO+x9REAQYPQNmwkElWq0bka9tgphx+RTUj8inZoYbUd50o9YnotV5C/Jpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iobroker/plugin-sentry": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/plugin-sentry/-/plugin-sentry-3.0.4.tgz", + "integrity": "sha512-VCHQ9zo5TKyO+A1xpWD8xXe/nW6/BYbEKFxAqHvfDM4U2R0wERZtbH6Ztg3lfV+JRwUn5TgqVRNXvHkvolgPHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iobroker/plugin-base": "^3.0.3", + "@sentry/integrations": "^7.114.0", + "@sentry/node": "^10.32.1", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@iobroker/testing": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-5.2.2.tgz", + "integrity": "sha512-AiYi9qziPLiNDcwZJa3tcgdSjIq9lq7z4QFvWY9w099chmKOWyvUgWzDy3S/R3L7lJ0yviOeNEdpOHtX4wTf6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/esbuild-register": "^2.5.1-1", + "@types/chai": "^4.3.20", + "@types/chai-as-promised": "^7.1.8", + "@types/mocha": "^10.0.10", + "@types/sinon": "^17.0.4", + "@types/sinon-chai": "^3.2.12", + "alcalzone-shared": "~5.0.0", + "chai": "^4.5.0", + "chai-as-promised": "^7.1.2", + "debug": "^4.4.3", + "fs-extra": "^11.3.2", + "json5": "^2.2.3", + "mocha": "^11.7.3", + "sinon": "^21.0.0", + "sinon-chai": "^3.7.0" + } + }, + "node_modules/@iobroker/testing/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@iobroker/testing/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@iobroker/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.1.2.tgz", + "integrity": "sha512-6ci2ow3cHoIDIQEQh48lCG08MzgUdH8SGL5ks3kl2UBA2yAfSn5lEWs3BPoGiJS9wYTsBfKMas2fUHmTU1/A4g==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@iobroker/vis-2-widgets-react-dev": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@iobroker/vis-2-widgets-react-dev/-/vis-2-widgets-react-dev-4.0.4.tgz", + "integrity": "sha512-l7jOrzwE9gxLtQCYyF/BXPMaFpT6fZHq6BoH9BAm/GhmoGzkh708zSx5jHfo0E6Dj4XnY/lgil+77tbDZeR6Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mui/icons-material": "^6.1.8", + "@mui/material": "^6.1.8", + "@sentry/browser": "^8.40.0", + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "acorn-jsx-walk": "^2.0.0", + "acorn-walk": "^8.3.4", + "node-dir": "^0.1.17" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.5.0.tgz", + "integrity": "sha512-LGb8t8i6M2ZtS3Drn3GbTI1DVhDY6FJ9crEey2lZ0aN2EMZo8IZBZj9wRf4vqbZHaWjsYgtbOnJw5V8UWbmK2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.5.0.tgz", + "integrity": "sha512-VPuPqXqbBPlcVSA0BmnoE4knW4/xG6Thazo8vCLWkOKusko6DtwFV6B665MMWJ9j0KFohTIf3yx2zYtYacvG1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^6.5.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.5.0.tgz", + "integrity": "sha512-yjvtXoFcrPLGtgKRxFaH6OQPtcLPhkloC0BML6rBG5UeldR0nPULR/2E2BfXdo5JNV7j7lOzrrLX2Qf/iSidow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/core-downloads-tracker": "^6.5.0", + "@mui/system": "^6.5.0", + "@mui/types": "~7.2.24", + "@mui/utils": "^6.4.9", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^19.0.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^6.5.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.9.tgz", + "integrity": "sha512-LktcVmI5X17/Q5SkwjCcdOLBzt1hXuc14jYa7NPShog0GBDCDvKtcnP0V7a2s6EiVRlv7BzbWEJzH6+l/zaCxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/utils": "^6.4.9", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.5.0.tgz", + "integrity": "sha512-8woC2zAqF4qUDSPIBZ8v3sakj+WgweolpyM/FXf8jAx6FMls+IE4Y8VDZc+zS805J7PRz31vz73n2SovKGaYgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.5.0.tgz", + "integrity": "sha512-XcbBYxDS+h/lgsoGe78ExXFZXtuIlSBpn/KsZq8PtZcIkUNJInkuDqcLd2rVBQrDC1u+rvVovdaWPf2FHKJf3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/private-theming": "^6.4.9", + "@mui/styled-engine": "^6.5.0", + "@mui/types": "~7.2.24", + "@mui/utils": "^6.4.9", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.24", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz", + "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.9.tgz", + "integrity": "sha512-Y12Q9hbK9g+ZY0T3Rxrx9m2m10gaphDuUMgWxyV5kNJevVxXYCLclYUCC9vXaIk1/NdNDTcW2Yfr2OGvNFNmHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/types": "~7.2.24", + "@types/prop-types": "^15.7.14", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.213.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz", + "integrity": "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.6.0.tgz", + "integrity": "sha512-L8UyDwqpTcbkIK5cgwDRDYDoEhQoj8wp8BwsO19w3LB1Z41yEQm2VJyNfAi9DrLP/YTqXqWpKHyZfR9/tFYo1Q==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.6.0.tgz", + "integrity": "sha512-HLM1v2cbZ4TgYN6KEOj+Bbj8rAKriOdkF9Ed3tG25FoprSiQl7kYc+RRT6fUZGOvx0oMi5U67GoFdT+XUn8zEg==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.213.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.213.0.tgz", + "integrity": "sha512-3i9NdkET/KvQomeh7UaR/F4r9P25Rx6ooALlWXPIjypcEOUxksCmVu0zA70NBJWlrMW1rPr/LRidFAflLI+s/w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.213.0", + "import-in-the-middle": "^3.0.0", + "require-in-the-middle": "^8.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-amqplib": { + "version": "0.60.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.60.0.tgz", + "integrity": "sha512-q/B2IvoVXRm1M00MvhnzpMN6rKYOszPXVsALi6u0ss4AYHe+TidZEtLW9N1ZhrobI1dSriHnBqqtAOZVAv07sg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.33.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-connect": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.56.0.tgz", + "integrity": "sha512-PKp+sSZ7AfzMvGgO3VCyo1inwNu+q7A1k9X88WK4PQ+S6Hp7eFk8pie+sWHDTaARovmqq5V2osav3lQej2B0nw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/connect": "3.4.38" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-dataloader": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.30.0.tgz", + "integrity": "sha512-MXHP2Q38cd2OhzEBKAIXUi9uBlPEYzF6BNJbyjUXBQ6kLaf93kRC41vNMIz0Nl5mnuwK7fDvKT+/lpx7BXRwdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-express": { + "version": "0.61.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.61.0.tgz", + "integrity": "sha512-Xdmqo9RZuZlL29Flg8QdwrrX7eW1CZ7wFQPKHyXljNymgKhN1MCsYuqQ/7uxavhSKwAl7WxkTzKhnqpUApLMvQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fs": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.32.0.tgz", + "integrity": "sha512-koR6apx0g0wX6RRiPpjA4AFQUQUbXrK16kq4/SZjVp7u5cffJhNkY4TnITxcGA4acGSPYAfx3NHRIv4Khn1axQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-generic-pool": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.56.0.tgz", + "integrity": "sha512-fg+Jffs6fqrf0uQS0hom7qBFKsbtpBiBl8+Vkc63Gx8xh6pVh+FhagmiO6oM0m3vyb683t1lP7yGYq22SiDnqg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-graphql": { + "version": "0.61.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.61.0.tgz", + "integrity": "sha512-pUiVASv6nh2XrerTvlbVHh7vKFzscpgwiQ/xvnZuAIzQ5lRjWVdRPUuXbvZJ/Yq79QsE81TZdJ7z9YsXiss1ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.59.0.tgz", + "integrity": "sha512-33wa4mEr+9+ztwdgLor1SeBu4Opz4IsmpcLETXAd3VmBrOjez8uQtrsOhPCa5Vhbm5gzDlMYTgFRLQzf8/YHFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http": { + "version": "0.213.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.213.0.tgz", + "integrity": "sha512-B978Xsm5XEPGhm1P07grDoaOFLHapJPkOG9h016cJsyWWxmiLnPu2M/4Nrm7UCkHSiLnkXgC+zVGUAIahy8EEA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.6.0", + "@opentelemetry/instrumentation": "0.213.0", + "@opentelemetry/semantic-conventions": "^1.29.0", + "forwarded-parse": "2.1.2" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-ioredis": { + "version": "0.61.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.61.0.tgz", + "integrity": "sha512-hsHDadUtAFbws1YSDc1XW0svGFKiUbqv2td1Cby+UAiwvojm1NyBo/taifH0t8CuFZ0x/2SDm0iuTwrM5pnVOg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/redis-common": "^0.38.2", + "@opentelemetry/semantic-conventions": "^1.33.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-kafkajs": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.22.0.tgz", + "integrity": "sha512-wJU4IBQMUikdJAcTChLFqK5lo+flo7pahqd8DSLv7uMxsdOdAHj6RzKYAm8pPfUS6ItKYutYyuicwKaFwQKsoA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.30.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-knex": { + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.57.0.tgz", + "integrity": "sha512-vMCSh8kolEm5rRsc+FZeTZymWmIJwc40hjIKnXH4O0Dv/gAkJJIRXCsPX5cPbe0c0j/34+PsENd0HqKruwhVYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.33.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-koa": { + "version": "0.61.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.61.0.tgz", + "integrity": "sha512-lvrfWe9ShK/D2X4brmx8ZqqeWPfRl8xekU0FCn7C1dHm5k6+rTOOi36+4fnaHAP8lig9Ux6XQ1D4RNIpPCt1WQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.36.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" + } + }, + "node_modules/@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.57.0.tgz", + "integrity": "sha512-cEqpUocSKJfwDtLYTTJehRLWzkZ2eoePCxfVIgGkGkb83fMB71O+y4MvRHJPbeV2bdoWdOVrl8uO0+EynWhTEA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongodb": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.66.0.tgz", + "integrity": "sha512-d7m9QnAY+4TCWI4q1QRkfrc6fo/92VwssaB1DzQfXNRvu51b78P+HJlWP7Qg6N6nkwdb9faMZNBCZJfftmszkw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.33.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.59.0.tgz", + "integrity": "sha512-6/jWU+c1NgznkVLDU/2y0bXV2nJo3o9FWZ9mZ9nN6T/JBNRoMnVXZl2FdBmgH+a5MwaWLs5kmRJTP5oUVGIkPw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.33.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.59.0.tgz", + "integrity": "sha512-r+V/Fh0sm7Ga8/zk/TI5H5FQRAjwr0RrpfPf8kNIehlsKf12XnvIaZi8ViZkpX0gyPEpLXqzqWD6QHlgObgzZw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.33.0", + "@types/mysql": "2.15.27" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql2": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.59.0.tgz", + "integrity": "sha512-n9/xrVCRBfG9egVbffnlU1uhr+HX0vF4GgtAB/Bvm48wpFgRidqD8msBMiym1kRYzmpWvJqTxNT47u1MkgBEdw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.33.0", + "@opentelemetry/sql-common": "^0.41.2" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pg": { + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.65.0.tgz", + "integrity": "sha512-W0zpHEIEuyZ8zvb3njaX9AAbHgPYOsSWVOoWmv1sjVRSF6ZpBqtlxBWbU+6hhq1TFWBeWJOXZ8nZS/PUFpLJYQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@opentelemetry/sql-common": "^0.41.2", + "@types/pg": "8.15.6", + "@types/pg-pool": "2.0.7" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-redis": { + "version": "0.61.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.61.0.tgz", + "integrity": "sha512-JnPexA034/0UJRsvH96B0erQoNOqKJZjE2ZRSw9hiTSC23LzE0nJE/u6D+xqOhgUhRnhhcPHq4MdYtmUdYTF+Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/redis-common": "^0.38.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-tedious": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.32.0.tgz", + "integrity": "sha512-BQS6gG8RJ1foEqfEZ+wxoqlwfCAzb1ZVG0ad8Gfe4x8T658HJCLGLd4E4NaoQd8EvPfLqOXgzGaE/2U4ytDSWA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.33.0", + "@types/tedious": "^4.0.14" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.23.0.tgz", + "integrity": "sha512-LL0VySzKVR2cJSFVZaTYpZl1XTpBGnfzoQPe2W7McS2267ldsaEIqtQY6VXs2KCXN0poFjze5110PIpxHDaDGg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/semantic-conventions": "^1.24.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + } + }, + "node_modules/@opentelemetry/redis-common": { + "version": "0.38.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.38.2.tgz", + "integrity": "sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.6.0.tgz", + "integrity": "sha512-D4y/+OGe3JSuYUCBxtH5T9DSAWNcvCb/nQWIga8HNtXTVPQn59j0nTBAgaAXxUVBDl40mG3Tc76b46wPlZaiJQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/core": "2.6.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.6.0.tgz", + "integrity": "sha512-g/OZVkqlxllgFM7qMKqbPV9c1DUPhQ7d4n3pgZFcrnrNft9eJXZM2TNHTPYREJBrtNdRytYyvwjgL5geDKl3EQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@opentelemetry/core": "2.6.0", + "@opentelemetry/resources": "2.6.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz", + "integrity": "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sql-common": { + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.41.2.tgz", + "integrity": "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@prisma/instrumentation": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-7.4.2.tgz", + "integrity": "sha512-r9JfchJF1Ae6yAxcaLu/V1TGqBhAuSDe3mRNOssBfx1rMzfZ4fdNvrgUBwyb/TNTGXFxlH9AZix5P257x07nrg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.207.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.8" + } + }, + "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": { + "version": "0.207.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.207.0.tgz", + "integrity": "sha512-lAb0jQRVyleQQGiuuvCOTDVspc14nx6XJjP4FspJ1sNARo3Regq4ZZbrc3rN4b1TYSuUCvgH+UXUPug4SLOqEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { + "version": "0.207.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.207.0.tgz", + "integrity": "sha512-y6eeli9+TLKnznrR8AZlQMSJT7wILpXH+6EYq5Vf/4Ao+huI7EedxQHwRgVUOMLFbe7VFDvHJrX9/f4lcwnJsA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.207.0", + "import-in-the-middle": "^2.0.0", + "require-in-the-middle": "^8.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@prisma/instrumentation/node_modules/import-in-the-middle": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.6.tgz", + "integrity": "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.15.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^2.2.0", + "module-details-from-path": "^1.0.4" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sentry-internal/browser-utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz", + "integrity": "sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/core": "8.55.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/feedback": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.55.0.tgz", + "integrity": "sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/core": "8.55.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/replay": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.55.0.tgz", + "integrity": "sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "8.55.0", + "@sentry/core": "8.55.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry-internal/replay-canvas": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz", + "integrity": "sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry-internal/replay": "8.55.0", + "@sentry/core": "8.55.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/browser": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.55.0.tgz", + "integrity": "sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry-internal/browser-utils": "8.55.0", + "@sentry-internal/feedback": "8.55.0", + "@sentry-internal/replay": "8.55.0", + "@sentry-internal/replay-canvas": "8.55.0", + "@sentry/core": "8.55.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/core": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz", + "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.18" + } + }, + "node_modules/@sentry/integrations": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.114.0.tgz", + "integrity": "sha512-BJIBWXGKeIH0ifd7goxOS29fBA8BkEgVVCahs6xIOXBjX1IRS6PmX0zYx/GP23nQTfhJiubv2XPzoYOlZZmDxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/core": "7.114.0", + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0", + "localforage": "^1.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/integrations/node_modules/@sentry/core": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.114.0.tgz", + "integrity": "sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/node": { + "version": "10.44.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.44.0.tgz", + "integrity": "sha512-q+/WR9ZeF9Af8uyehOj2tQQOa7LH07mJfOuDus5X6G6cLuugdRUGUBB5Qhw+J/ULSxbzGADBZv6AYOyoGaNx7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/otel": "0.17.1", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^2.6.0", + "@opentelemetry/core": "^2.6.0", + "@opentelemetry/instrumentation": "^0.213.0", + "@opentelemetry/instrumentation-amqplib": "0.60.0", + "@opentelemetry/instrumentation-connect": "0.56.0", + "@opentelemetry/instrumentation-dataloader": "0.30.0", + "@opentelemetry/instrumentation-express": "0.61.0", + "@opentelemetry/instrumentation-fs": "0.32.0", + "@opentelemetry/instrumentation-generic-pool": "0.56.0", + "@opentelemetry/instrumentation-graphql": "0.61.0", + "@opentelemetry/instrumentation-hapi": "0.59.0", + "@opentelemetry/instrumentation-http": "0.213.0", + "@opentelemetry/instrumentation-ioredis": "0.61.0", + "@opentelemetry/instrumentation-kafkajs": "0.22.0", + "@opentelemetry/instrumentation-knex": "0.57.0", + "@opentelemetry/instrumentation-koa": "0.61.0", + "@opentelemetry/instrumentation-lru-memoizer": "0.57.0", + "@opentelemetry/instrumentation-mongodb": "0.66.0", + "@opentelemetry/instrumentation-mongoose": "0.59.0", + "@opentelemetry/instrumentation-mysql": "0.59.0", + "@opentelemetry/instrumentation-mysql2": "0.59.0", + "@opentelemetry/instrumentation-pg": "0.65.0", + "@opentelemetry/instrumentation-redis": "0.61.0", + "@opentelemetry/instrumentation-tedious": "0.32.0", + "@opentelemetry/instrumentation-undici": "0.23.0", + "@opentelemetry/resources": "^2.6.0", + "@opentelemetry/sdk-trace-base": "^2.6.0", + "@opentelemetry/semantic-conventions": "^1.40.0", + "@prisma/instrumentation": "7.4.2", + "@sentry/core": "10.44.0", + "@sentry/node-core": "10.44.0", + "@sentry/opentelemetry": "10.44.0", + "import-in-the-middle": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/node-core": { + "version": "10.44.0", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.44.0.tgz", + "integrity": "sha512-jUGsadMrvZ08UMbqJBfjFFMk1k3VbyxfUypf0iDGGgyLmuHotYQPo/5aND+o2KxMDXR60LwcQrMoZFpanK6jXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/core": "10.44.0", + "@sentry/opentelemetry": "10.44.0", + "import-in-the-middle": "^3.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", + "@opentelemetry/core": "^1.30.1 || ^2.1.0", + "@opentelemetry/instrumentation": ">=0.57.1 <1", + "@opentelemetry/resources": "^1.30.1 || ^2.1.0", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", + "@opentelemetry/semantic-conventions": "^1.39.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@opentelemetry/context-async-hooks": { + "optional": true + }, + "@opentelemetry/core": { + "optional": true + }, + "@opentelemetry/instrumentation": { + "optional": true + }, + "@opentelemetry/resources": { + "optional": true + }, + "@opentelemetry/sdk-trace-base": { + "optional": true + }, + "@opentelemetry/semantic-conventions": { + "optional": true + } + } + }, + "node_modules/@sentry/node-core/node_modules/@sentry/core": { + "version": "10.44.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.44.0.tgz", + "integrity": "sha512-aa7CiDaNFZvHpqd97LJhuskolfJ/4IH5xyuVVLnv7l6B0v9KTwskPUxb0tH1ej3FxuzfH+i8iTiTFuqpfHS3QA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/node/node_modules/@sentry/core": { + "version": "10.44.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.44.0.tgz", + "integrity": "sha512-aa7CiDaNFZvHpqd97LJhuskolfJ/4IH5xyuVVLnv7l6B0v9KTwskPUxb0tH1ej3FxuzfH+i8iTiTFuqpfHS3QA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/opentelemetry": { + "version": "10.44.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.44.0.tgz", + "integrity": "sha512-zP4vP8tBxjlmxQ4VcWOwZ0b3lPUxlYPg9FqJwANm9SRJN+7V5psm8TIaAtu9uqtIcJMRHdXkOM4cAggNiLk0KA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/core": "10.44.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", + "@opentelemetry/core": "^1.30.1 || ^2.1.0", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", + "@opentelemetry/semantic-conventions": "^1.39.0" + } + }, + "node_modules/@sentry/opentelemetry/node_modules/@sentry/core": { + "version": "10.44.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.44.0.tgz", + "integrity": "sha512-aa7CiDaNFZvHpqd97LJhuskolfJ/4IH5xyuVVLnv7l6B0v9KTwskPUxb0tH1ej3FxuzfH+i8iTiTFuqpfHS3QA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/types": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.114.0.tgz", + "integrity": "sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.114.0.tgz", + "integrity": "sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/types": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/commons/node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mysql": { + "version": "2.15.27", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", + "integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "18.19.130", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-schedule": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@types/node-schedule/-/node-schedule-2.1.8.tgz", + "integrity": "sha512-k00g6Yj/oUg/CDC+MeLHUzu0+OFxWbIqrFfDiLi6OPKxTujvpv29mHGM8GtKr7B+9Vv92FcK/8mRqi1DK5f3hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/nodemailer": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-7.0.12.tgz", + "integrity": "sha512-80vKwiIsVSyFA1rRovH59jNPLBOuc6dRZIHEu40gXTkBkZnQv8vog1xSGEb9j5q/tdMAs5ivvDR2pLTU0hGHXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/pg": { + "version": "8.15.6", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.6.tgz", + "integrity": "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "node_modules/@types/pg-pool": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.7.tgz", + "integrity": "sha512-U4CwmGVQcbEuqpyju8/ptOKg6gEC+Tqsvj2xS9o1g71bUh8twxnC6ZL5rZKCsGN0iyH0CwgUyc9VR5owNQF9Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/pg": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", + "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/request": { + "version": "2.48.13", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz", + "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.5" + } + }, + "node_modules/@types/sinon": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", + "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinon-chai": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", + "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz", + "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/suncalc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@types/suncalc/-/suncalc-1.9.2.tgz", + "integrity": "sha512-ATAGBHHfA1TlE2tjfidLyTcysjoT2JHHEAmWRULh73SU9UTn++j5fqHEW16X6Y/2Li87jEQXzgu4R/OOdlDqzw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tedious": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz", + "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/type-utils": "8.46.2", + "@typescript-eslint/utils": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.46.2", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.2.tgz", + "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.2.tgz", + "integrity": "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.2.tgz", + "integrity": "sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz", + "integrity": "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.2.tgz", + "integrity": "sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/utils": "8.46.2", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.2.tgz", + "integrity": "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz", + "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.46.2", + "@typescript-eslint/tsconfig-utils": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.2.tgz", + "integrity": "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", + "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-jsx-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/acorn-jsx-walk/-/acorn-jsx-walk-2.0.0.tgz", + "integrity": "sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/alcalzone-shared": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/alcalzone-shared/-/alcalzone-shared-5.0.0.tgz", + "integrity": "sha512-X73hgVWcrIKUUB6jZgHj5flRbTft8AAoJ2MqRKEcAX1whW3OeGkxsQ6ol4nd4/rKxd1eoCRXUGW3cIhXrXU4Sg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.16.0", + "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/axios/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/axios/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.21", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.21.tgz", + "integrity": "sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", + "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.8.19", + "caniuse-lite": "^1.0.30001751", + "electron-to-chromium": "^1.5.238", + "node-releases": "^2.0.26", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", + "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001751", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", + "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", + "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.26.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "license": "MIT", + "dependencies": { + "luxon": "^3.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepl-node": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/deepl-node/-/deepl-node-1.20.0.tgz", + "integrity": "sha512-2MNJgJgQQWHAieaKYJyxYe1g21P8MYOtMbcS7ApyBHT8856c6EYO9RRNevodGaIf0oiKMzwyenJ59O7B0NQyGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": ">=12.0", + "adm-zip": "^0.5.16", + "axios": "^1.7.4", + "form-data": "^3.0.0", + "loglevel": ">=1.6.2", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/deepl-node/node_modules/form-data": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.243", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.243.tgz", + "integrity": "sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.11", + "@esbuild/android-arm": "0.25.11", + "@esbuild/android-arm64": "0.25.11", + "@esbuild/android-x64": "0.25.11", + "@esbuild/darwin-arm64": "0.25.11", + "@esbuild/darwin-x64": "0.25.11", + "@esbuild/freebsd-arm64": "0.25.11", + "@esbuild/freebsd-x64": "0.25.11", + "@esbuild/linux-arm": "0.25.11", + "@esbuild/linux-arm64": "0.25.11", + "@esbuild/linux-ia32": "0.25.11", + "@esbuild/linux-loong64": "0.25.11", + "@esbuild/linux-mips64el": "0.25.11", + "@esbuild/linux-ppc64": "0.25.11", + "@esbuild/linux-riscv64": "0.25.11", + "@esbuild/linux-s390x": "0.25.11", + "@esbuild/linux-x64": "0.25.11", + "@esbuild/netbsd-arm64": "0.25.11", + "@esbuild/netbsd-x64": "0.25.11", + "@esbuild/openbsd-arm64": "0.25.11", + "@esbuild/openbsd-x64": "0.25.11", + "@esbuild/openharmony-arm64": "0.25.11", + "@esbuild/sunos-x64": "0.25.11", + "@esbuild/win32-arm64": "0.25.11", + "@esbuild/win32-ia32": "0.25.11", + "@esbuild/win32-x64": "0.25.11" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", + "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.1", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.38.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "54.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-54.7.0.tgz", + "integrity": "sha512-u5Na4he2+6kY1rWqxzbQaAwJL3/tDCuT5ElDRc5UJ9stOeQeQ5L1JJ1kRRu7ldYMlOHMCJLsY8Mg/Tu3ExdZiQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.56.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.4.1", + "escape-string-regexp": "^4.0.0", + "espree": "^10.4.0", + "esquery": "^1.6.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.2", + "spdx-expression-parse": "^4.0.0" + }, + "engines": { + "node": ">=20.11.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "60.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz", + "integrity": "sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "@eslint-community/eslint-utils": "^4.7.0", + "@eslint/plugin-kit": "^0.3.3", + "change-case": "^5.4.4", + "ci-info": "^4.3.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.44.0", + "esquery": "^1.6.0", + "find-up-simple": "^1.0.1", + "globals": "^16.3.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^5.0.0", + "jsesc": "^3.1.0", + "pluralize": "^8.0.0", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.12.0", + "semver": "^7.7.2", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": "^20.10.0 || >=21.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=9.29.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", + "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.2.tgz", + "integrity": "sha512-/Szrn8nr+2TsQT1Gp8iIe/BEytJmbyfrbFh419DfGQSkEgNEhbPi7JRJuughjkTzPWgU9gBQf5AVu3DbHt0OXA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/gcp-metadata": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.1.tgz", + "integrity": "sha512-dTCcAe9fRQf06ELwel6lWWFrEbstwjUBYEhr5VRGoC+iPDZQucHppCowaIp8b8v92tU1G4X4H3b/Y6zXZxkMsQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^7.0.0", + "google-logging-utils": "^1.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/google-auth-library": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.4.2.tgz", + "integrity": "sha512-EKiQasw6aEdxSovPEf1oBxCEvxjFamZ6MPaVOSPXZMnqKFLo+rrYjHyjKlFfZcXiKi9qAH6cutr5WRqqa1jKhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^7.0.0", + "gcp-metadata": "^8.0.0", + "google-logging-utils": "^1.0.0", + "gtoken": "^8.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/google-gax": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-5.0.4.tgz", + "integrity": "sha512-HmQ6zIYBs2EikTk+kjeHmtHprNTEpsnVaKONw9cwZZwUNCkUb+D5RYrJpCxyjdvIDvJp3wLbVReolJLRZRms1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.12.6", + "@grpc/proto-loader": "^0.8.0", + "duplexify": "^4.1.3", + "google-auth-library": "^10.1.0", + "google-logging-utils": "^1.1.1", + "node-fetch": "^3.3.2", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^3.0.0", + "protobufjs": "^7.5.3", + "retry-request": "^8.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/google-logging-utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.1.tgz", + "integrity": "sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/gtoken": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz", + "integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "gaxios": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-in-the-middle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.0.0.tgz", + "integrity": "sha512-OnGy+eYT7wVejH2XWgLRgbmzujhhVIATQH0ztIeRilwHBjTeG3pD+XnH3PKX0r9gJ0BuJmJ68q/oh9qgXnNDQg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.15.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^2.2.0", + "module-details-from-path": "^1.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", + "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^5.0.0" + }, + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-html": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-2.0.0.tgz", + "integrity": "sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "html-tags": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-5.1.1.tgz", + "integrity": "sha512-DYYlVP1fe4QBMh2xTIs20/YeTz2GYVbWAEZweHSZD+qQ/Cx2d5RShuhhsdk64eTjNq0FeVnteP/qVOgaywSRbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonata": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.2.1.tgz", + "integrity": "sha512-xd1uwUrKeIcJbsWhaoS3qAX4Ea8m0Mw0G5nlnAQvPT7TbZ5qaPdzBVTQia9KfyuyQm+nenfyjvzUDTRYHsC2sw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/ky": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", + "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/localforage/node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mocha": { + "version": "11.7.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.4.tgz", + "integrity": "sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^7.0.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^9.0.5", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nano-spawn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.1.0.tgz", + "integrity": "sha512-yTW+2okrElHiH4fsiz/+/zc0EDo9BDDoC3iKk8dpv1GeRc9nUWzUZHx6TofMWErchhUQR8hY9/Eu1Uja9x1nqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-inspect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-inspect/-/node-inspect-2.0.0.tgz", + "integrity": "sha512-vaDNU6Fa/vt8gv/PV+QoeSIPhcBnHMiNOtInxcojfagspQg5KP9HloUDGJWIacamT8Agiu51eF+fuBjrE25a6w==", + "deprecated": "This module is part of Node.js core and does not need to be installed separately. It is now unmaintained.", + "license": "MIT", + "bin": { + "node-inspect": "cli.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-schedule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", + "license": "MIT", + "dependencies": { + "cron-parser": "^4.2.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/nodemailer": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-8.0.11.tgz", + "integrity": "sha512-nrO/pDAUKl+wXX+lx16tDLbnm0fW6sK/x8mgohaCpg+CdCEl482bD4tCuAZk2DyliruiNTIZxRCoWkDqJEnAiA==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" + } + }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.4.tgz", + "integrity": "sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==", + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promisify-child-process": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-5.0.1.tgz", + "integrity": "sha512-jP2Aw1acio5NYIgCEpW9Ay2OhWlcbKTZp4aY6iivx75K2yXizJBt6Wz7sQrHloXKIfrjhbUfdH9m6UZrus4tmA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/proto3-json-serializer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-3.0.3.tgz", + "integrity": "sha512-iUi7jGLuECChuoUwtvf6eXBDcFXTHAt5GM6ckvtD3RqD+j2wW0GW6WndPOu9IWeUk7n933lzrskcNMHJy2tFSw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "protobufjs": "^7.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/protobufjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "dev": true, + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/react-is": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.0.tgz", + "integrity": "sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz", + "integrity": "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3" + }, + "engines": { + "node": ">=9.3.0 || >=8.10.0 <9.0.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/retry-request": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-8.0.2.tgz", + "integrity": "sha512-JzFPAfklk1kjR1w76f0QOIhoDkNkSqW8wYKT08n9yysTmZfB+RQ2QoXoTAeOi1HD9ZipTyTAZg3c4pM/jeqgSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend": "^3.0.2", + "teeny-request": "^10.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sinon": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.0.tgz", + "integrity": "sha512-TOgRcwFPbfGtpqvZw+hyqJDvqfapr1qUlOizROIk4bBLjlsjlB00Pg6wMFXNtJRpu+eCZuVOaLatG7M8105kAw==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.5", + "@sinonjs/samsam": "^8.0.1", + "diff": "^7.0.0", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon-chai": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", + "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", + "dev": true, + "license": "(BSD-2-Clause OR WTFPL)", + "peerDependencies": { + "chai": "^4.0.0", + "sinon": ">=4.0.0" + } + }, + "node_modules/sorted-array-functions": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", + "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "license": "MIT", + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", + "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/suncalc2": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/suncalc2/-/suncalc2-1.8.1.tgz", + "integrity": "sha512-tNoAni1LqWzBzJRX3NRCsD50gVsuejH1jd9Y+XyKO3WkpPIU+QNyWF4Zf2JnUQKW2LKLWIBgVDQCrgsQwqs0tA==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/teeny-request": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-10.1.0.tgz", + "integrity": "sha512-3ZnLvgWF29jikg1sAQ1g0o+lr5JX6sVgYvfUJazn7ZjJroDBUTWp44/+cFVX0bULjv4vci+rBD+oGVAkWqhUbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^3.3.2", + "stream-events": "^1.0.5" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/timekeeper": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/timekeeper/-/timekeeper-2.3.1.tgz", + "integrity": "sha512-LeQRS7/4JcC0PgdSFnfUiStQEdiuySlCj/5SJ18D+T1n9BoY7PxKFfCwLulpHXoLUFr67HxBddQdEX47lDGx1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.2.tgz", + "integrity": "sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.46.2", + "@typescript-eslint/parser": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/utils": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-browserslist-db/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/virtual-tsc": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/virtual-tsc/-/virtual-tsc-0.6.2.tgz", + "integrity": "sha512-NeCuRFla3ASmhn24Da00UzEQX2FoLrOWX7P3K0IK0kK2WX//joUOLbOYkQEQg+FqYf75lw9jBI++iGszvospjg==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.3", + "picocolors": "1.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "typescript": ">=2.0.0" + } + }, + "node_modules/wake_on_lan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wake_on_lan/-/wake_on_lan-1.0.0.tgz", + "integrity": "sha512-0QSpxny0QmsssshI6kePj6cobQPK+i8r5shfj58ZfQIUH9fUTyAaYPqZO3W/Ai7mN4vQVdTdsSGIr20M81UL6Q==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "wake": "wake" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-browserslist-db/node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/virtual-tsc": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/virtual-tsc/-/virtual-tsc-0.6.2.tgz", - "integrity": "sha512-NeCuRFla3ASmhn24Da00UzEQX2FoLrOWX7P3K0IK0kK2WX//joUOLbOYkQEQg+FqYf75lw9jBI++iGszvospjg==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.3", - "picocolors": "1.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "typescript": ">=2.0.0" - } - }, - "node_modules/wake_on_lan": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wake_on_lan/-/wake_on_lan-1.0.0.tgz", - "integrity": "sha512-0QSpxny0QmsssshI6kePj6cobQPK+i8r5shfj58ZfQIUH9fUTyAaYPqZO3W/Ai7mN4vQVdTdsSGIr20M81UL6Q==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "wake": "wake" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", - "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } - } } diff --git a/package.json b/package.json index cd49667fd..b9b7b3208 100644 --- a/package.json +++ b/package.json @@ -1,122 +1,122 @@ { - "name": "iobroker.javascript", - "version": "9.2.3", - "description": "Rules Engine for ioBroker", - "author": "bluefox ", - "contributors": [ - { - "name": "hobbyquaker", - "email": "hq@ccu.io" + "name": "iobroker.javascript", + "version": "9.2.3", + "description": "Rules Engine for ioBroker", + "author": "bluefox ", + "contributors": [ + { + "name": "hobbyquaker", + "email": "hq@ccu.io" + }, + { + "name": "Apollon77", + "email": "ingo@fischer-ka.de" + }, + { + "name": "AlCalzone", + "email": "d.griesel@gmx.net" + }, + { + "name": "Matthias Kleine", + "email": "info@haus-automatisierung.com" + } + ], + "homepage": "https://github.com/ioBroker/ioBroker.javascript", + "license": "MIT", + "keywords": [ + "ioBroker", + "javascript", + "script", + "engine", + "home automation" + ], + "repository": { + "type": "git", + "url": "https://github.com/ioBroker/ioBroker.javascript" }, - { - "name": "Apollon77", - "email": "ingo@fischer-ka.de" + "engines": { + "node": ">=18" }, - { - "name": "AlCalzone", - "email": "d.griesel@gmx.net" + "depsComment": { + "@types/node": "should match the lowest MAJOR version of Node.js we support." }, - { - "name": "Matthias Kleine", - "email": "info@haus-automatisierung.com" + "dependencies": { + "@iobroker/adapter-core": "^3.4.1", + "@iobroker/types": "^7.1.2", + "@types/node": "^18.19.130", + "axios": "^1.17.0", + "jsonata": "^2.2.1", + "jszip": "^3.10.1", + "node-inspect": "^2.0.0", + "node-schedule": "2.1.1", + "nodemailer": "^8.0.11", + "prettier": "^3.8.4", + "promisify-child-process": "^5.0.1", + "semver": "^7.8.4", + "suncalc2": "^1.8.1", + "typescript": "5.9.3", + "virtual-tsc": "^0.6.2", + "wake_on_lan": "^1.0.0" + }, + "devDependencies": { + "@alcalzone/release-script": "^5.2.1", + "@alcalzone/release-script-plugin-iobroker": "^5.2.0", + "@alcalzone/release-script-plugin-license": "^5.2.0", + "@iobroker/adapter-dev": "^1.5.0", + "@iobroker/build-tools": "^3.0.1", + "@iobroker/eslint-config": "^2.2.0", + "@iobroker/plugin-sentry": "^3.0.4", + "@iobroker/testing": "^5.2.2", + "@iobroker/vis-2-widgets-react-dev": "^4.0.4", + "@types/node-schedule": "^2.1.8", + "@types/nodemailer": "^7.0.12", + "@types/request": "^2.48.13", + "@types/suncalc": "^1.9.2", + "alcalzone-shared": "^5.0.0", + "timekeeper": "^2.3.1" + }, + "bugs": { + "url": "https://github.com/ioBroker/ioBroker.javascript/issues" + }, + "main": "build/main.js", + "files": [ + "admin/", + "build/", + "docs/", + "install/", + "io-package.json", + "LICENSE", + "admin/vsFont/codicon.json" + ], + "scripts": { + "test:declarations": "tsc -p test/lib/TS/tsconfig.json && tsc -p test/lib/JS/tsconfig.json", + "test:integration": "mocha --exit", + "test:package": "mocha test/testPackageFiles.js --exit", + "test:scheduler": "mocha test/testScheduler.js --exit", + "test": "npm run test:declarations && npm run test:integration", + "translate": "translate-adapter", + "//postinstall": "node ./install/installTypings.js", + "build": "npm run build-backend && node tasks", + "build-backend": "tsc -p tsconfig.build.json && node tasks --copy-types", + "release": "release-script --noPush -y --all", + "update-packages": "npx -y npm-check-updates --upgrade && cd src-editor && npx -y npm-check-updates --upgrade && cd ../src-admin && npx -y npm-check-updates --upgrade", + "npm": "npm i && cd src-editor && npm i -f && cd ../src-admin && npm i", + "lint": "eslint -c eslint.config.mjs", + "lint-all": "eslint -c eslint.config.mjs && cd src-editor && eslint -c eslint.config.mjs && cd ../src-admin && eslint -c eslint.config.mjs", + "admin-0-clean": "node tasks.js --admin-0-clean", + "admin-1-npm": "node tasks.js --admin-1-npm", + "admin-2-compile": "node tasks.js --admin-2-compile", + "admin-3-copy": "node tasks.js --admin-3-copy", + "admin-build": "node tasks.js --admin-build", + "0-clean": "node tasks.js --0-clean", + "1-npm": "node tasks.js --1-npm", + "2-build": "node tasks.js --2-build", + "3-copy": "node tasks.js --3-copy", + "4-patch": "node tasks.js --4-patch", + "build-editor": "node tasks.js --build", + "blocklyJson2words": "node tasks.js --blocklyJson2words", + "blocklyWords2json": "node tasks.js --blocklyWords2json", + "monaco-update": "node tasks.js --monaco-update", + "monaco-typescript": "node tasks.js --monaco-typescript" } - ], - "homepage": "https://github.com/ioBroker/ioBroker.javascript", - "license": "MIT", - "keywords": [ - "ioBroker", - "javascript", - "script", - "engine", - "home automation" - ], - "repository": { - "type": "git", - "url": "https://github.com/ioBroker/ioBroker.javascript" - }, - "engines": { - "node": ">=18" - }, - "depsComment": { - "@types/node": "should match the lowest MAJOR version of Node.js we support." - }, - "dependencies": { - "@iobroker/adapter-core": "^3.3.2", - "@iobroker/types": "^7.1.1", - "@types/node": "^25.6.0", - "axios": "^1.15.0", - "jsonata": "^2.1.0", - "jszip": "^3.10.1", - "node-inspect": "^2.0.0", - "node-schedule": "2.1.1", - "nodemailer": "^8.0.5", - "prettier": "^3.8.2", - "promisify-child-process": "^5.0.1", - "semver": "^7.7.4", - "suncalc2": "^1.8.1", - "typescript": "5.9.3", - "virtual-tsc": "^0.6.2", - "wake_on_lan": "^1.0.0" - }, - "devDependencies": { - "@alcalzone/release-script": "^5.2.0", - "@alcalzone/release-script-plugin-iobroker": "^5.2.0", - "@alcalzone/release-script-plugin-license": "^5.2.0", - "@iobroker/adapter-dev": "^1.5.0", - "@iobroker/build-tools": "^3.0.1", - "@iobroker/eslint-config": "^2.2.0", - "@iobroker/plugin-sentry": "^3.0.4", - "@iobroker/testing": "^5.2.2", - "@iobroker/vis-2-widgets-react-dev": "^4.0.4", - "@types/node-schedule": "^2.1.8", - "@types/nodemailer": "^7.0.11", - "@types/request": "^2.48.13", - "@types/suncalc": "^1.9.2", - "alcalzone-shared": "^5.0.0", - "timekeeper": "^2.3.1" - }, - "bugs": { - "url": "https://github.com/ioBroker/ioBroker.javascript/issues" - }, - "main": "build/main.js", - "files": [ - "admin/", - "build/", - "docs/", - "install/", - "io-package.json", - "LICENSE", - "admin/vsFont/codicon.json" - ], - "scripts": { - "test:declarations": "tsc -p test/lib/TS/tsconfig.json && tsc -p test/lib/JS/tsconfig.json", - "test:integration": "mocha --exit", - "test:package": "mocha test/testPackageFiles.js --exit", - "test:scheduler": "mocha test/testScheduler.js --exit", - "test": "npm run test:declarations && npm run test:integration", - "translate": "translate-adapter", - "//postinstall": "node ./install/installTypings.js", - "build": "npm run build-backend && node tasks", - "build-backend": "tsc -p tsconfig.build.json && node tasks --copy-types", - "release": "release-script --noPush -y --all", - "update-packages": "npx -y npm-check-updates --upgrade && cd src-editor && npx -y npm-check-updates --upgrade && cd ../src-admin && npx -y npm-check-updates --upgrade", - "npm": "npm i && cd src-editor && npm i -f && cd ../src-admin && npm i", - "lint": "eslint -c eslint.config.mjs", - "lint-all": "eslint -c eslint.config.mjs && cd src-editor && eslint -c eslint.config.mjs && cd ../src-admin && eslint -c eslint.config.mjs", - "admin-0-clean": "node tasks.js --admin-0-clean", - "admin-1-npm": "node tasks.js --admin-1-npm", - "admin-2-compile": "node tasks.js --admin-2-compile", - "admin-3-copy": "node tasks.js --admin-3-copy", - "admin-build": "node tasks.js --admin-build", - "0-clean": "node tasks.js --0-clean", - "1-npm": "node tasks.js --1-npm", - "2-build": "node tasks.js --2-build", - "3-copy": "node tasks.js --3-copy", - "4-patch": "node tasks.js --4-patch", - "build-editor": "node tasks.js --build", - "blocklyJson2words": "node tasks.js --blocklyJson2words", - "blocklyWords2json": "node tasks.js --blocklyWords2json", - "monaco-update": "node tasks.js --monaco-update", - "monaco-typescript": "node tasks.js --monaco-typescript" - } } diff --git a/src-admin/.mf/diagnostics/latest.json b/src-admin/.mf/diagnostics/latest.json index d3a45654c..992bc1cb9 100644 --- a/src-admin/.mf/diagnostics/latest.json +++ b/src-admin/.mf/diagnostics/latest.json @@ -1,10 +1,10 @@ { "latestErrorEvent": { "code": "TYPE-001", - "message": "Failed to generate type declaration. Execute the below cmd to reproduce and fix the error. #TYPE-001\nargs: {\"cmd\":\"npx tsc --project j:\\\\source\\\\ioBroker_sourcen\\\\iobroker.javascript\\\\src-admin\\\\node_modules\\\\.federation\\\\tsconfig.a069227a671c5aaba9de321bcdeb4f35.json\"}\nView the docs to see how to solve: https://module-federation.io/guide/troubleshooting/type#type-001", + "message": "Failed to generate type declaration. Execute the below cmd to reproduce and fix the error. #TYPE-001\nargs: {\"cmd\":\"npx tsc --project C:\\\\pWork\\\\ioBroker.javascript\\\\src-admin\\\\node_modules\\\\.federation\\\\tsconfig.3123b20b11f31dbb699ad541e33270a9.json\"}\nView the docs to see how to solve: https://module-federation.io/guide/troubleshooting/type#type-001", "args": { - "cmd": "npx tsc --project j:\\source\\ioBroker_sourcen\\iobroker.javascript\\src-admin\\node_modules\\.federation\\tsconfig.a069227a671c5aaba9de321bcdeb4f35.json" + "cmd": "npx tsc --project C:\\pWork\\ioBroker.javascript\\src-admin\\node_modules\\.federation\\tsconfig.3123b20b11f31dbb699ad541e33270a9.json" }, - "timestamp": 1780561089963 + "timestamp": 1781165772744 } } \ No newline at end of file diff --git a/src-admin/package-lock.json b/src-admin/package-lock.json index 41e9c9651..233968dfd 100644 --- a/src-admin/package-lock.json +++ b/src-admin/package-lock.json @@ -10,8 +10,8 @@ "devDependencies": { "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@iobroker/adapter-react-v5": "^8.2.6", - "@iobroker/json-config": "^8.4.3", + "@iobroker/adapter-react-v5": "^8.2.7", + "@iobroker/json-config": "^8.4.7", "@module-federation/runtime": "^2.2.3", "@module-federation/vite": "^1.13.1", "@mui/icons-material": "^6.5.0", @@ -135,6 +135,7 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -524,6 +525,7 @@ "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -570,6 +572,7 @@ "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -1072,9 +1075,9 @@ } }, "node_modules/@iobroker/adapter-react-v5": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-react-v5/-/adapter-react-v5-8.2.6.tgz", - "integrity": "sha512-tp6KsxF8WlMFem31eM0F6l+6nGKaHqDO2lxM0R+iTJsUzdV6TNwkP+LiqaWSi18HMpl5jnnPYHA7DgWeW4QJiA==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-react-v5/-/adapter-react-v5-8.2.7.tgz", + "integrity": "sha512-kzapXA20Pvwqhgivdzuc0epMe1BeG77n6qbzA38ve2crkzeqMQzCrhdLtXie2Kp6eX7bcYAzgY//4ztM0gqPxw==", "dev": true, "license": "MIT", "dependencies": { @@ -1271,9 +1274,9 @@ } }, "node_modules/@iobroker/json-config": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@iobroker/json-config/-/json-config-8.4.3.tgz", - "integrity": "sha512-9pH0rri2oMTQFhFCZXzXMumA3EGRcu4Mg/gY3mOu52ouY9y+sJDdj1ol1vtVdv7V52hKKzX7IMHV/VAV13LTLQ==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@iobroker/json-config/-/json-config-8.4.7.tgz", + "integrity": "sha512-QcOgOXuQic6aw5e87D7xy3sgWwUxeHCuWrAOBeN3QciQRp2cABHS/ustYJsI10d1aErXh6QGhTtkj2uIj4JXog==", "dev": true, "license": "MIT", "dependencies": { @@ -1665,6 +1668,7 @@ "integrity": "sha512-VPuPqXqbBPlcVSA0BmnoE4knW4/xG6Thazo8vCLWkOKusko6DtwFV6B665MMWJ9j0KFohTIf3yx2zYtYacvG1g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.26.0" }, @@ -1692,6 +1696,7 @@ "integrity": "sha512-yjvtXoFcrPLGtgKRxFaH6OQPtcLPhkloC0BML6rBG5UeldR0nPULR/2E2BfXdo5JNV7j7lOzrrLX2Qf/iSidow==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.26.0", "@mui/core-downloads-tracker": "^6.5.0", @@ -1846,7 +1851,6 @@ "integrity": "sha512-OJM+9nj5JIyPUvsZ5ZjaeC9PfktmK+W5YaVLToLR8L0lB/DGmv1gcKE43ssNLSvpoW71Hct0necfade6+kW3zQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4", "@mui/utils": "^7.3.3", @@ -1875,7 +1879,6 @@ "integrity": "sha512-8vVje9rdEr1rY8oIkYgP+Su5Kwl6ik7O3jQ0wl78JGSmiZhRHV+vkjooGdKD8pbtZbutXFVTWQYshu2b3sG9zw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4" }, @@ -1894,7 +1897,6 @@ "integrity": "sha512-kwNAUh7bLZ7mRz9JZ+6qfRnnxbE4Zuc+RzXnhSpRSxjTlSTj7b4JxRLXpG+MVtPVtqks5k/XC8No1Vs3x4Z2gg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4", "@mui/types": "^7.4.7", @@ -1926,7 +1928,6 @@ "integrity": "sha512-CmFxvRJIBCEaWdilhXMw/5wFJ1+FT9f3xt+m2pPXhHPeVIbBg9MnMvNSJjdALvnQJMPw8jLhrUtXmN7QAZV2fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4", "@emotion/cache": "^11.14.0", @@ -1962,7 +1963,6 @@ "integrity": "sha512-Lqq3emZr5IzRLKaHPuMaLBDVaGvxoh6z7HMWd1RPKawBM5uMRaQ4ImsmmgXWtwJdfZux5eugfDhXJUo2mliS8Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4", "@mui/private-theming": "^7.3.3", @@ -2004,7 +2004,6 @@ "integrity": "sha512-8vVje9rdEr1rY8oIkYgP+Su5Kwl6ik7O3jQ0wl78JGSmiZhRHV+vkjooGdKD8pbtZbutXFVTWQYshu2b3sG9zw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4" }, @@ -2023,7 +2022,6 @@ "integrity": "sha512-kwNAUh7bLZ7mRz9JZ+6qfRnnxbE4Zuc+RzXnhSpRSxjTlSTj7b4JxRLXpG+MVtPVtqks5k/XC8No1Vs3x4Z2gg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4", "@mui/types": "^7.4.7", @@ -3015,6 +3013,7 @@ "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" @@ -3263,6 +3262,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -3591,6 +3591,7 @@ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "dev": true, "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -4757,7 +4758,8 @@ "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", "dev": true, - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "peer": true }, "node_modules/lie": { "version": "3.3.0", @@ -5478,6 +5480,7 @@ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -5552,6 +5555,7 @@ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -5826,6 +5830,7 @@ "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -6366,6 +6371,7 @@ "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -6512,6 +6518,7 @@ "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.8", @@ -6641,6 +6648,7 @@ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, diff --git a/src-admin/package.json b/src-admin/package.json index eab8ffd03..3a7c9eb21 100644 --- a/src-admin/package.json +++ b/src-admin/package.json @@ -13,8 +13,8 @@ "devDependencies": { "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@iobroker/adapter-react-v5": "^8.2.6", - "@iobroker/json-config": "^8.4.3", + "@iobroker/adapter-react-v5": "^8.2.7", + "@iobroker/json-config": "^8.4.7", "@module-federation/runtime": "^2.2.3", "@module-federation/vite": "^1.13.1", "@mui/icons-material": "^6.5.0", diff --git a/src-editor/package-lock.json b/src-editor/package-lock.json index c6399f982..a772904fd 100644 --- a/src-editor/package-lock.json +++ b/src-editor/package-lock.json @@ -14,7 +14,7 @@ "@devbookhq/splitter": "^1.4.2", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@iobroker/adapter-react-v5": "^8.2.6", + "@iobroker/adapter-react-v5": "^8.2.7", "@iobroker/javascript-rules-dev": "^0.0.6", "@iobroker/type-detector": "^5.0.13", "@iobroker/types": "^7.1.2", @@ -34,7 +34,7 @@ "jszip": "^3.10.1", "moment": "^2.30.1", "monaco-editor": "~0.55.1", - "openai": "^6.39.0", + "openai": "^6.42.0", "react": "^18.3.1", "react-bem-helper": "^1.4.1", "react-dnd": "^16.0.1", @@ -197,6 +197,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -611,6 +612,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -659,6 +661,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" } @@ -761,6 +764,7 @@ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -804,6 +808,7 @@ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -1293,9 +1298,9 @@ } }, "node_modules/@iobroker/adapter-react-v5": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-react-v5/-/adapter-react-v5-8.2.6.tgz", - "integrity": "sha512-tp6KsxF8WlMFem31eM0F6l+6nGKaHqDO2lxM0R+iTJsUzdV6TNwkP+LiqaWSi18HMpl5jnnPYHA7DgWeW4QJiA==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-react-v5/-/adapter-react-v5-8.2.7.tgz", + "integrity": "sha512-kzapXA20Pvwqhgivdzuc0epMe1BeG77n6qbzA38ve2crkzeqMQzCrhdLtXie2Kp6eX7bcYAzgY//4ztM0gqPxw==", "license": "MIT", "dependencies": { "@iobroker/js-controller-common": "^7.1.2-alpha.0-20260409-feacb179d", @@ -1626,26 +1631,6 @@ "node": ">=10" } }, - "node_modules/@module-federation/dts-plugin/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/@module-federation/dts-plugin/node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -1713,26 +1698,6 @@ "node": ">=10" } }, - "node_modules/@module-federation/managers/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/@module-federation/runtime": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.2.3.tgz", @@ -1768,26 +1733,6 @@ } } }, - "node_modules/@module-federation/runtime-core/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/@module-federation/runtime/node_modules/@module-federation/sdk": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.2.3.tgz", @@ -1802,26 +1747,6 @@ } } }, - "node_modules/@module-federation/runtime/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/@module-federation/third-party-dts-extractor": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.2.2.tgz", @@ -1934,26 +1859,6 @@ "@types/estree": "^1.0.0" } }, - "node_modules/@module-federation/vite/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/@mui/core-downloads-tracker": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.5.0.tgz", @@ -1969,6 +1874,7 @@ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.5.0.tgz", "integrity": "sha512-VPuPqXqbBPlcVSA0BmnoE4knW4/xG6Thazo8vCLWkOKusko6DtwFV6B665MMWJ9j0KFohTIf3yx2zYtYacvG1g==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.26.0" }, @@ -1995,6 +1901,7 @@ "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.5.0.tgz", "integrity": "sha512-yjvtXoFcrPLGtgKRxFaH6OQPtcLPhkloC0BML6rBG5UeldR0nPULR/2E2BfXdo5JNV7j7lOzrrLX2Qf/iSidow==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.26.0", "@mui/core-downloads-tracker": "^6.5.0", @@ -2151,7 +2058,6 @@ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.9.tgz", "integrity": "sha512-ErIyRQvsiQEq7Yvcvfw9UDHngaqjMy9P3JDPnRAaKG5qhpl2C4tX/W1S4zJvpu+feihmZJStjIyvnv6KDbIrlw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6", "@mui/utils": "^7.3.9", @@ -2179,7 +2085,6 @@ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.12.tgz", "integrity": "sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6" }, @@ -2197,7 +2102,6 @@ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.9.tgz", "integrity": "sha512-U6SdZaGbfb65fqTsH3V5oJdFj9uYwyLE2WVuNvmbggTSDBb8QHrFsqY8BN3taK9t3yJ8/BPHD/kNvLNyjwM7Yw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6", "@mui/types": "^7.4.12", @@ -2227,15 +2131,13 @@ "version": "19.2.4", "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@mui/styled-engine": { "version": "7.3.9", "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.9.tgz", "integrity": "sha512-JqujWt5bX4okjUPGpVof/7pvgClqh7HvIbsIBIOOlCh2u3wG/Bwp4+E1bc1dXSwkrkp9WUAoNdI5HEC+5HKvMw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6", "@emotion/cache": "^11.14.0", @@ -2270,7 +2172,6 @@ "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.9.tgz", "integrity": "sha512-aL1q9am8XpRrSabv9qWf5RHhJICJql34wnrc1nz0MuOglPRYF/liN+c8VqZdTvUn9qg+ZjRVbKf4sJVFfIDtmg==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6", "@mui/private-theming": "^7.3.9", @@ -2311,7 +2212,6 @@ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.12.tgz", "integrity": "sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6" }, @@ -2329,7 +2229,6 @@ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.9.tgz", "integrity": "sha512-U6SdZaGbfb65fqTsH3V5oJdFj9uYwyLE2WVuNvmbggTSDBb8QHrFsqY8BN3taK9t3yJ8/BPHD/kNvLNyjwM7Yw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.6", "@mui/types": "^7.4.12", @@ -2359,8 +2258,7 @@ "version": "19.2.4", "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@mui/types": { "version": "7.2.24", @@ -3611,6 +3509,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" @@ -3993,6 +3892,7 @@ "resolved": "https://registry.npmjs.org/blockly/-/blockly-11.2.2.tgz", "integrity": "sha512-YJW9jMz4qoBXzOOUqxWBOHL35QhOOTAg2a6sVAFJh+/uNTXW0z506JS7qkqZI4PQ9fnUhDqmhF8a0qWSTL1tjg==", "license": "Apache-2.0", + "peer": true, "dependencies": { "jsdom": "25.0.1" }, @@ -4181,6 +4081,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -4678,6 +4579,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -4700,6 +4602,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -4728,7 +4631,6 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 12" } @@ -5228,7 +5130,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -5379,7 +5280,6 @@ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "fetch-blob": "^3.1.2" }, @@ -6416,6 +6316,7 @@ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.55.1.tgz", "integrity": "sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==", "license": "MIT", + "peer": true, "dependencies": { "dompurify": "3.2.7", "marked": "14.0.0" @@ -6486,7 +6387,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=10.5.0" } @@ -6647,13 +6547,10 @@ } }, "node_modules/openai": { - "version": "6.39.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-6.39.0.tgz", - "integrity": "sha512-O61LIsimY3acVabwvomwFhwrnN36yvHY2quIfy9keEcFytGgWeV35yLHQ6NVMLSBxRpHmcg2yuhCnlu2HT4pLQ==", + "version": "6.42.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.42.0.tgz", + "integrity": "sha512-1WFEt/uXMXOLhYRNkgJWo08Y2YNvNwpVU72K7ibrWgWpNOXd4VojXLbe6SQ4bLiUQ3Y8jz4IiyVkylJCL1DtZg==", "license": "Apache-2.0", - "bin": { - "openai": "bin/cli" - }, "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" @@ -6857,6 +6754,7 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6921,6 +6819,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -7055,6 +6954,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -7504,6 +7404,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -7609,6 +7510,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.100.0.tgz", "integrity": "sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ==", "license": "MIT", + "peer": true, "dependencies": { "chokidar": "^5.0.0", "immutable": "^5.1.5", @@ -7876,6 +7778,7 @@ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.4.2.tgz", "integrity": "sha512-xZBhBJsMtGqb+aKcwKgaT+BtuFums9VynX2JRvXJGTx5UfZzN12rk5r4nVdhXYvRw+hE7yiYxVrOqJZaK2+Txg==", "license": "MIT", + "peer": true, "dependencies": { "@emotion/is-prop-valid": "1.4.0", "css-to-react-native": "3.2.0", @@ -8324,6 +8227,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -8568,7 +8472,6 @@ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 8" } @@ -8658,6 +8561,7 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", "license": "MIT", + "peer": true, "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.8", @@ -8779,6 +8683,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, diff --git a/src-editor/package.json b/src-editor/package.json index 3d7d0fab1..c31a09376 100644 --- a/src-editor/package.json +++ b/src-editor/package.json @@ -10,7 +10,7 @@ "@devbookhq/splitter": "^1.4.2", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@iobroker/adapter-react-v5": "^8.2.6", + "@iobroker/adapter-react-v5": "^8.2.7", "@iobroker/javascript-rules-dev": "^0.0.6", "@iobroker/type-detector": "^5.0.13", "@iobroker/types": "^7.1.2", @@ -30,7 +30,7 @@ "jszip": "^3.10.1", "moment": "^2.30.1", "monaco-editor": "~0.55.1", - "openai": "^6.39.0", + "openai": "^6.42.0", "react": "^18.3.1", "react-bem-helper": "^1.4.1", "react-dnd": "^16.0.1", diff --git a/src/lib/aiProviderResolver.ts b/src/lib/aiProviderResolver.ts index 33fb8364a..15ded4373 100644 --- a/src/lib/aiProviderResolver.ts +++ b/src/lib/aiProviderResolver.ts @@ -17,6 +17,18 @@ export interface AiConfigSlice { claudeKey?: string; geminiKey?: string; deepseekKey?: string; + /** + * Where the API keys come from: + * - `manual`: keys are stored directly in the adapter config (encryptedNative) + * - `manager`: the config only stores the ID of a credential in the central + * ioBroker credential store (`system.credentials.*`), resolved at runtime + */ + credentialType?: 'manual' | 'manager'; + credentialIdGptKey?: string; + credentialIdClaudeKey?: string; + credentialIdGeminiKey?: string; + credentialIdDeepseekKey?: string; + credentialIdGptBaseUrlKey?: string; } export type AiProvider = 'openai' | 'anthropic' | 'gemini' | 'deepseek' | 'custom'; @@ -30,6 +42,28 @@ export const PROVIDER_KEY_FIELD: Record = { custom: 'gptBaseUrlKey', }; +/** + * Maps each provider to the adapter-config field holding the ID of its credential + * in the central credential store (used in `manager` mode). + */ +export const PROVIDER_CREDENTIAL_ID_FIELD: Record = { + openai: 'credentialIdGptKey', + anthropic: 'credentialIdClaudeKey', + gemini: 'credentialIdGeminiKey', + deepseek: 'credentialIdDeepseekKey', + custom: 'credentialIdGptBaseUrlKey', +}; + +/** + * Returns the configured credential ID (e.g. `system.credentials.anthropic`) for a provider + * in `manager` mode, or an empty string if none/unknown provider. + */ +export function getProviderCredentialId(config: AiConfigSlice | undefined | null, provider: string): string { + const cfg = config || {}; + const field = PROVIDER_CREDENTIAL_ID_FIELD[provider as AiProvider]; + return field ? (cfg[field] || '').toString().trim() : ''; +} + /** * Resolve API key and base URL for a provider from adapter config. * Optional `messageBaseUrl` takes precedence over the stored `gptBaseUrl` @@ -82,18 +116,25 @@ export function listAvailableProviders( ): { provider: AiProvider; baseUrl?: string }[] { const cfg = config || {}; const providers: { provider: AiProvider; baseUrl?: string }[] = []; - if ((cfg.gptKey || '').trim()) { + const manager = cfg.credentialType === 'manager'; + // A key-based provider is "available" if it has a stored key (manual mode) + // or a selected credential ID (manager mode). + const has = (provider: AiProvider, key: string | undefined | null): boolean => + manager ? !!getProviderCredentialId(cfg, provider) : !!(key || '').trim(); + if (has('openai', cfg.gptKey)) { providers.push({ provider: 'openai' }); } - if ((cfg.claudeKey || '').trim()) { + if (has('anthropic', cfg.claudeKey)) { providers.push({ provider: 'anthropic' }); } - if ((cfg.geminiKey || '').trim()) { + if (has('gemini', cfg.geminiKey)) { providers.push({ provider: 'gemini' }); } - if ((cfg.deepseekKey || '').trim()) { + if (has('deepseek', cfg.deepseekKey)) { providers.push({ provider: 'deepseek' }); } + // The custom/OpenAI-compatible endpoint is identified by its base URL (the key is optional, + // e.g. local Ollama), so its availability does not depend on the credential mode. if ((cfg.gptBaseUrl || '').trim()) { providers.push({ provider: 'custom', baseUrl: cfg.gptBaseUrl }); } diff --git a/src/main.ts b/src/main.ts index 31fa49a0e..5155479ba 100644 --- a/src/main.ts +++ b/src/main.ts @@ -38,7 +38,13 @@ import * as axios from 'axios'; import * as wake_on_lan from 'wake_on_lan'; import * as nodeSchedule from 'node-schedule'; -import { getAbsoluteDefaultDataDir, Adapter, EXIT_CODES, type AdapterOptions } from '@iobroker/adapter-core'; +import { + getAbsoluteDefaultDataDir, + Adapter, + Credentials, + EXIT_CODES, + type AdapterOptions, +} from '@iobroker/adapter-core'; import type SentryPlugin from '@iobroker/plugin-sentry'; import type { GetTimesResult } from 'suncalc'; import type { CompileResult } from 'virtual-tsc/build/util'; @@ -48,7 +54,12 @@ import ProtectFs from './lib/protectFs'; import { setLanguage, getLanguage } from './lib/words'; import { sandBox } from './lib/sandbox'; import { requestModuleNameByUrl } from './lib/nodeModulesManagement'; -import { resolveProviderCredentials, resolveTestCredentials, listAvailableProviders } from './lib/aiProviderResolver'; +import { + resolveProviderCredentials, + resolveTestCredentials, + listAvailableProviders, + getProviderCredentialId, +} from './lib/aiProviderResolver'; import { translateToolsToAnthropic, translateMessagesToAnthropic, @@ -393,6 +404,15 @@ class JavaScript extends Adapter { private setStateCountCheckInterval: NodeJS.Timeout | null = null; + /** + * Decrypted AI API keys cached from the central credential store (manager mode), + * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the + * subscriptions set up in `subscribeAiCredentials`. + */ + private readonly aiCredentialCache: Map = new Map(); + /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */ + private aiCredentialUnsubscribers: (() => Promise)[] = []; + private globalScript = ''; /** Generated declarations for global TypeScripts */ private globalDeclarations = ''; @@ -879,6 +899,7 @@ class JavaScript extends Adapter { clearInterval(this.setStateCountCheckInterval); this.setStateCountCheckInterval = null; } + await this.unsubscribeAiCredentials(); await this.stopAllScripts(); } catch (err: unknown) { this.log.error(`Error during unload: ${(err as Error).message}`); @@ -944,6 +965,122 @@ class JavaScript extends Adapter { await this.main(); } + /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */ + private async readAiCredentialKey(id: string): Promise { + try { + const cred = await Credentials.getCredentials(this, id); + return (cred?.values?.key || '').trim(); + } catch (e) { + this.log.warn(`Cannot read AI credential "${id}": ${e instanceof Error ? e.message : String(e)}`); + return ''; + } + } + + /** + * Resolve the API key (and base URL) for an AI provider. + * + * In `manual` mode the key comes from the encryptedNative adapter config. + * In `manager` mode the config only stores the ID of a credential in the central + * ioBroker credential store (`system.credentials.*`); the actual key is taken from the + * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are + * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly. + * + * The settings-dialog Test button may pass form values that are not saved yet + * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config. + */ + private async resolveAiCredentials( + provider: string, + opts: { + messageBaseUrl?: string; + messageApiKey?: string; + messageCredentialId?: string; + credentialType?: 'manual' | 'manager'; + } = {}, + ): Promise<{ apiKey: string; baseUrl: string }> { + const mode = opts.credentialType || this.config.credentialType || 'manual'; + if (mode === 'manager') { + // The base URL is not a secret and is resolved the same way in both modes. + const { baseUrl } = resolveProviderCredentials(this.config, provider, opts.messageBaseUrl); + const id = (opts.messageCredentialId || getProviderCredentialId(this.config, provider)).trim(); + if (!id) { + return { apiKey: '', baseUrl }; + } + // Prefer the cached value kept fresh by the credential subscription. + const cached = this.aiCredentialCache.get(id); + const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id); + return { apiKey, baseUrl }; + } + // Manual mode. The Test button sends the current form key (maybe empty) — let it win. + if (opts.messageApiKey !== undefined) { + return resolveTestCredentials(this.config, provider, opts.messageApiKey, opts.messageBaseUrl); + } + return resolveProviderCredentials(this.config, provider, opts.messageBaseUrl); + } + + /** + * In `manager` mode, subscribe to all configured AI credentials so that edits made in the + * admin credential manager (Settings → Credentials) are picked up live, without restarting + * the adapter (the `system.credentials.*` objects are global, not part of the instance config). + * The decrypted keys are cached and kept fresh by the subscription handlers. + */ + private async subscribeAiCredentials(): Promise { + // Always start from a clean state (idempotent — also used to re-subscribe). + await this.unsubscribeAiCredentials(); + if (this.config.credentialType !== 'manager') { + return; + } + // Collect the distinct credential IDs configured across all AI providers. + const ids = new Set(); + for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) { + const id = getProviderCredentialId(this.config, provider); + if (id) { + ids.add(id); + } + } + for (const id of ids) { + try { + const unsubscribe = await Credentials.subscribeCredentials( + this, + id, + (changedId, cred) => { + if (cred) { + this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim()); + this.log.debug(`AI credential "${changedId}" updated`); + } else { + // The credential was deleted + this.aiCredentialCache.delete(changedId); + this.log.debug(`AI credential "${changedId}" was deleted`); + } + }, + ); + this.aiCredentialUnsubscribers.push(unsubscribe); + // Prime the cache with the current value (the handler may only fire on later changes). + this.aiCredentialCache.set(id, await this.readAiCredentialKey(id)); + } catch (e) { + this.log.warn( + `Cannot subscribe to AI credential "${id}": ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + if (this.aiCredentialUnsubscribers.length) { + this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`); + } + } + + /** Tear down all AI credential subscriptions and clear the cache. */ + private async unsubscribeAiCredentials(): Promise { + const unsubscribers = this.aiCredentialUnsubscribers; + this.aiCredentialUnsubscribers = []; + this.aiCredentialCache.clear(); + for (const unsubscribe of unsubscribers) { + try { + await unsubscribe(); + } catch (e) { + this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`); + } + } + } + onMessage(obj: ioBroker.Message): void { switch (obj?.command) { // process messageTo commands @@ -1245,25 +1382,30 @@ class JavaScript extends Adapter { case 'chatCompletion': { // Proxy chat completion requests to an OpenAI-compatible API endpoint. - // API keys are resolved server-side from encryptedNative config — they never - // leave the adapter (frontend only sends `provider`, not the key). - if (obj.callback) { + // API keys are resolved server-side from the encryptedNative config or the central + // credentials manager — they never leave the adapter (frontend only sends `provider`). + void (async () => { + if (!obj.callback) { + return; + } const chatModel = (obj.message?.model || '').trim(); const messages = obj.message?.messages; const tools = obj.message?.tools; const provider = (obj.message?.provider || 'openai').trim(); - const { apiKey, baseUrl } = resolveProviderCredentials(this.config, provider, obj.message?.baseUrl); + const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, { + messageBaseUrl: obj.message?.baseUrl, + }); // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL if ( !apiKey && (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl) ) { this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback); - break; + return; } if (!chatModel || !messages) { this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback); - break; + return; } let url: string; @@ -1320,7 +1462,7 @@ class JavaScript extends Adapter { const resolved = resolveRequestModule(url); if (!resolved) { this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback); - break; + return; } const { module: requestModule, isHttps } = resolved; @@ -1425,7 +1567,7 @@ class JavaScript extends Adapter { obj.callback, ); } - } + })(); break; } @@ -1433,21 +1575,24 @@ class JavaScript extends Adapter { // Test connection to an OpenAI-compatible API endpoint. // The settings-dialog Test button sends the current form value as `apiKey` // (so users can test before saving); otherwise we fall back to the stored key. - if (obj.callback) { + void (async () => { + if (!obj.callback) { + return; + } const provider = (obj.message?.provider || 'openai').trim(); - const { apiKey, baseUrl } = resolveTestCredentials( - this.config, - provider, - obj.message?.apiKey, - obj.message?.baseUrl, - ); + const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, { + messageApiKey: obj.message?.apiKey, + messageBaseUrl: obj.message?.baseUrl, + messageCredentialId: obj.message?.credentialId, + credentialType: obj.message?.credentialType, + }); // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL if ( !apiKey && (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl) ) { this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback); - break; + return; } let url: string; @@ -1477,7 +1622,7 @@ class JavaScript extends Adapter { const resolved = resolveRequestModule(url); if (!resolved) { this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback); - break; + return; } const { module: requestModule, isHttps } = resolved; @@ -1577,7 +1722,7 @@ class JavaScript extends Adapter { obj.callback, ); } - } + })(); break; } @@ -1771,6 +1916,10 @@ class JavaScript extends Adapter { // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode) this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts; + // In `manager` credential mode, subscribe to the configured AI credentials so changes in the + // central credential store are picked up live (the keys are cached for the AI sendTo handlers). + await this.subscribeAiCredentials(); + const doc = await this.getObjectViewAsync('script', 'javascript', {}); if (doc?.rows?.length) { // sort global scripts if configured diff --git a/test/testAiProviderResolver.js b/test/testAiProviderResolver.js index d88bb5a4e..ba2115a25 100644 --- a/test/testAiProviderResolver.js +++ b/test/testAiProviderResolver.js @@ -1,6 +1,8 @@ const assert = require('node:assert').strict; const { PROVIDER_KEY_FIELD, + PROVIDER_CREDENTIAL_ID_FIELD, + getProviderCredentialId, resolveProviderCredentials, resolveTestCredentials, listAvailableProviders, @@ -17,6 +19,48 @@ describe('Test AI Provider Resolver', function () { }); }); + describe('PROVIDER_CREDENTIAL_ID_FIELD', function () { + it('maps every supported provider to its credential-id field', function () { + assert.equal(PROVIDER_CREDENTIAL_ID_FIELD.openai, 'credentialIdGptKey'); + assert.equal(PROVIDER_CREDENTIAL_ID_FIELD.anthropic, 'credentialIdClaudeKey'); + assert.equal(PROVIDER_CREDENTIAL_ID_FIELD.gemini, 'credentialIdGeminiKey'); + assert.equal(PROVIDER_CREDENTIAL_ID_FIELD.deepseek, 'credentialIdDeepseekKey'); + assert.equal(PROVIDER_CREDENTIAL_ID_FIELD.custom, 'credentialIdGptBaseUrlKey'); + }); + }); + + describe('getProviderCredentialId', function () { + const cfg = { + credentialIdGptKey: 'system.credentials.openai', + credentialIdClaudeKey: 'system.credentials.anthropic', + credentialIdGeminiKey: 'system.credentials.gemini', + credentialIdDeepseekKey: 'system.credentials.deepseek', + credentialIdGptBaseUrlKey: 'system.credentials.custom', + }; + + it('returns the configured credential ID per provider', function () { + assert.equal(getProviderCredentialId(cfg, 'openai'), 'system.credentials.openai'); + assert.equal(getProviderCredentialId(cfg, 'anthropic'), 'system.credentials.anthropic'); + assert.equal(getProviderCredentialId(cfg, 'gemini'), 'system.credentials.gemini'); + assert.equal(getProviderCredentialId(cfg, 'deepseek'), 'system.credentials.deepseek'); + assert.equal(getProviderCredentialId(cfg, 'custom'), 'system.credentials.custom'); + }); + + it('returns empty string for unknown provider', function () { + assert.equal(getProviderCredentialId(cfg, 'unknown'), ''); + }); + + it('handles missing/empty config gracefully', function () { + assert.equal(getProviderCredentialId(undefined, 'openai'), ''); + assert.equal(getProviderCredentialId(null, 'openai'), ''); + assert.equal(getProviderCredentialId({}, 'openai'), ''); + }); + + it('trims whitespace from the configured ID', function () { + assert.equal(getProviderCredentialId({ credentialIdGptKey: ' system.credentials.openai \n' }, 'openai'), 'system.credentials.openai'); + }); + }); + describe('resolveProviderCredentials', function () { const fullConfig = { gptKey: 'sk-openai-abc', @@ -232,5 +276,44 @@ describe('Test AI Provider Resolver', function () { assert.ok(!serialized.includes('sk-should-never-appear')); assert.ok(!serialized.includes('SECRET')); }); + + describe('manager mode (credentialType=manager)', function () { + it('lists providers by selected credential ID, ignoring manual keys', function () { + const res = listAvailableProviders({ + credentialType: 'manager', + // manual keys are present but must be ignored in manager mode + gptKey: 'sk-ignored', + claudeKey: 'sk-ignored', + credentialIdGptKey: 'system.credentials.openai', + credentialIdGeminiKey: 'system.credentials.gemini', + }); + assert.deepEqual(res, [{ provider: 'openai' }, { provider: 'gemini' }]); + }); + + it('does not list a provider whose manual key is set but credential ID is empty', function () { + const res = listAvailableProviders({ + credentialType: 'manager', + claudeKey: 'sk-ant-set-but-ignored', + credentialIdClaudeKey: '', + }); + assert.deepEqual(res, []); + }); + + it('custom provider still depends only on the base URL (key optional)', function () { + const res = listAvailableProviders({ + credentialType: 'manager', + gptBaseUrl: 'http://localhost:11434/v1', + }); + assert.deepEqual(res, [{ provider: 'custom', baseUrl: 'http://localhost:11434/v1' }]); + }); + + it('does not include the credential ID secrets are never resolved here', function () { + const res = listAvailableProviders({ + credentialType: 'manager', + credentialIdGptKey: 'system.credentials.openai', + }); + assert.deepEqual(res, [{ provider: 'openai' }]); + }); + }); }); }); From a1648aaf7a1516938c003a3a7016ad5c75cf6c71 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Fri, 12 Jun 2026 20:54:05 +0200 Subject: [PATCH 3/6] Added the possiblilty to execute scripts from AI agent --- README.md | 1 + build/main.js | 177 ++++++++++++-- build/main.js.map | 2 +- src-editor/src/AiChat/AiToolExecutor.ts | 90 +++++++ .../src/AiChat/__tests__/editorTools.test.ts | 63 +++++ src-editor/src/AiChat/useAiChat.ts | 4 +- src/main.ts | 221 ++++++++++++++++-- 7 files changed, 526 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index f5878f23b..27e9cea3f 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Executes Javascript, Typescript Scripts. ## Changelog ### **WORK IN PROGRESS** * (@GermanBluefox) Implemented the support for credentials manager in the configuration +* (@GermanBluefox) Added the possiblilty to execute scripts from AI agent ### 9.2.4 (2026-06-08) * (arteck) Performance optimizations part 2 diff --git a/build/main.js b/build/main.js index d05ea128a..329727620 100644 --- a/build/main.js +++ b/build/main.js @@ -331,6 +331,8 @@ class JavaScript extends adapter_core_1.Adapter { // have access to, because it depends on the compilation order knownGlobalDeclarationsByScript = {}; globalScriptLines = 0; + /** Running counter to build unique names for ad-hoc scripts started via the "execute" message */ + executeCounter = 0; // compiler instance for typescript tsServer; ignoreObjectChange = new Set(); @@ -1425,6 +1427,19 @@ class JavaScript extends adapter_core_1.Adapter { } break; } + case 'execute': { + if (obj.callback) { + void this.executeScript(obj.message) + .then(result => this.sendTo(obj.from, obj.command, result, obj.callback)) + .catch(err => this.sendTo(obj.from, obj.command, { + ok: false, + error: `Internal error: ${err}`, + logs: [], + output: '', + }, obj.callback)); + } + break; + } } } onLog(msg) { @@ -2321,7 +2336,14 @@ class JavaScript extends adapter_core_1.Adapter { return false; } } - execute(script, name, engineType, verbose, debug) { + execute(script, name, engineType, verbose, debug, + /** + * Optional sink for the "execute" message API. When provided, the script runs in an + * ephemeral diagnostic mode: every log line (the script's own `log()`/`console.*` output + * AND all verbose internal operations) is forwarded to this collector instead of the + * adapter log, and no `scriptProblem` state is written. + */ + logCollector) { script.intervals = new Set(); script.timeouts = new Set(); script.schedules = []; @@ -2333,12 +2355,26 @@ class JavaScript extends adapter_core_1.Adapter { script.subscribesFile = {}; script.setStatePerMinuteCounter = 0; script.setStatePerMinuteProblemCounter = 0; - void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, { - val: false, - ack: true, - expire: 1000, - }); + if (!logCollector) { + void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, { + val: false, + ack: true, + expire: 1000, + }); + } const sandbox = (0, sandbox_1.sandBox)(script, name, verbose, debug, this.context); + // Redirect every log line into the collector. As `console.*`, the global `log()` and all + // `sandbox.verbose && sandbox.log(...)` calls go through `sandbox.log`, this captures the + // full picture for the caller while keeping the adapter log clean. + if (logCollector) { + sandbox.log = (msg, severity) => { + let text = msg; + if (text && typeof text !== 'string') { + text = util.format(text); + } + logCollector(severity || 'info', text); + }; + } try { script.script.runInNewContext(sandbox, { filename: name, @@ -2347,14 +2383,121 @@ class JavaScript extends adapter_core_1.Adapter { }); } catch (err) { - void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, { - val: true, - ack: true, - c: 'execute', - }); - this.logError(name, 'Error by run:', err); + if (logCollector) { + const e = err; + const stack = (e?.stack ? e.stack.toString() : String(err)) + .split('\n') + .map(line => this.fixLineNo(line)) + .join('\n'); + logCollector('error', `Error by run: ${stack}`); + } + else { + void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, { + val: true, + ack: true, + c: 'execute', + }); + this.logError(name, 'Error by run:', err); + } } } + /** + * Run an ad-hoc script sent via the `execute` message and return everything it logged. + * + * The script is compiled (JavaScript or TypeScript), executed with the same sandbox API as a + * regular script (verbose by default, so internal operations like setState/subscribe are logged + * too), left running for `timeout` ms to collect asynchronous output, and afterwards stopped and + * fully cleaned up (timers, subscriptions, schedules). It is ephemeral: no script object or + * states are created. + * + * Expected `message`: + * - `source` / `code` (string, required) – the script source + * - `engineType` (string, optional) – `TypeScript/ts` to compile as TypeScript, otherwise JavaScript + * - `verbose` (boolean, optional, default `true`) – log internal sandbox operations + * - `logLevel` (silly|debug|info|warn|error, optional, default `silly`) – minimum severity to return + * - `timeout` (number ms, optional, default 5000, clamped to 0…60000) – collection window + * - `maxLogs` (number, optional, default 5000) – cap on returned log lines + */ + async executeScript(message) { + const LEVELS = ['silly', 'debug', 'info', 'warn', 'error']; + const source = message?.source ?? message?.code; + const engineTypeStr = (message?.engineType || '').toString().toLowerCase(); + const isTypeScript = engineTypeStr.startsWith('typescript') || engineTypeStr === 'ts'; + const engineType = isTypeScript ? 'TypeScript/ts' : 'Javascript/js'; + const empty = (error) => ({ ok: false, error, engineType, runtime: 0, truncated: false, logs: [], output: '' }); + if (typeof source !== 'string' || !source.trim()) { + return empty('No source code provided'); + } + if (this.context.debugMode) { + return empty('Cannot execute a script while a debug session is active'); + } + let timeout = parseInt(message?.timeout, 10); + if (isNaN(timeout)) { + timeout = 5000; + } + timeout = Math.max(0, Math.min(timeout, 60000)); + const verbose = message?.verbose !== false; + const minLevel = LEVELS.includes(message?.logLevel) ? message.logLevel : 'silly'; + let maxLogs = parseInt(message?.maxLogs, 10); + if (isNaN(maxLogs) || maxLogs <= 0) { + maxLogs = 5000; + } + const name = `${SCRIPT_CODE_MARKER}__execute_${++this.executeCounter}`; + // Compile the source the same way regular scripts are compiled + let createdScript; + if (isTypeScript) { + const transformedSource = (0, typescriptTools_1.transformScriptBeforeCompilation)(source, false); + const filename = (0, typescriptTools_1.scriptIdToTSFilename)(name); + let tsCompiled; + try { + tsCompiled = this.tsServer.compile(filename, transformedSource); + } + catch (err) { + return empty(`TypeScript compilation failed: ${err}`); + } + if (!tsCompiled.success) { + const errors = tsCompiled.diagnostics.map(diag => diag.annotatedSource).join('\n'); + return empty(`TypeScript compilation failed:\n${errors}`); + } + createdScript = this.createVM(`${this.globalScript}\n${tsCompiled.result || ''}`, name, false); + } + else { + createdScript = this.createVM(`${this.globalScript}\n${source}`, name, true); + } + if (!createdScript) { + return empty('Compilation failed'); + } + const logs = []; + let truncated = false; + const collector = (severity, msg) => { + if (logs.length >= maxLogs) { + truncated = true; + return; + } + logs.push({ ts: Date.now(), severity, message: msg }); + }; + this.scripts[name] = createdScript; + this.execute(createdScript, name, engineType, verbose, false, collector); + // Let asynchronous output (timeouts, awaited code, triggered subscriptions) accumulate + if (timeout) { + await new Promise(resolve => setTimeout(resolve, timeout)); + } + // Stop and clean up the ephemeral script (timers, subscriptions, schedules, …) + await this.stopScript(name, true); + const minIdx = LEVELS.indexOf(minLevel); + const filtered = logs.filter(entry => { + const idx = LEVELS.indexOf(entry.severity); + return idx < 0 || idx >= minIdx; + }); + return { + ok: true, + engineType, + runtime: timeout, + truncated, + logs: filtered, + output: filtered.map(entry => `[${entry.severity}] ${entry.message}`).join('\n'), + }; + } /** * Finds the index of `id` in a sorted array using binary search – O(log n). * Returns -1 if not found. Used instead of Array.indexOf on stateIds. @@ -2452,12 +2595,16 @@ class JavaScript extends adapter_core_1.Adapter { } } } - async stopScript(name) { + async stopScript(name, silent) { if (!this.scripts[name]) { return false; } - this.log.info(`${name}: Stopping script`); - await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true); + // `silent` is used for ephemeral scripts started via the "execute" message – they have no + // `scriptEnabled` state and should not appear in the adapter log. + if (!silent) { + this.log.info(`${name}: Stopping script`); + await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true); + } if (this.messageBusHandlers[name]) { delete this.messageBusHandlers[name]; } diff --git a/build/main.js.map b/build/main.js.map index 7b448f458..2a428e4cc 100644 --- a/build/main.js.map +++ b/build/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Javascript adapter\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2024 bluefox ,\n *\n * Copyright (c) 2014 hobbyquaker\n */\n\nimport { Script, type ScriptOptions } from 'node:vm';\nimport { readFileSync, existsSync, statSync, writeFileSync, type Stats } from 'node:fs';\nimport { join, sep, normalize } from 'node:path';\nimport { fork, type ForkOptions } from 'node:child_process';\nimport { setTypeScriptResolveOptions, Server } from 'virtual-tsc';\nimport { isDeepStrictEqual } from 'node:util';\nimport prettier from 'prettier';\n\nimport * as dgram from 'node:dgram';\nimport * as crypto from 'node:crypto';\nimport * as dns from 'node:dns';\nimport * as events from 'node:events';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport * as http2 from 'node:http2';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport * as util from 'node:util';\nimport * as child_process from 'node:child_process';\nimport * as stream from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n// @ts-expect-error no types available\nimport * as suncalc from 'suncalc2';\nimport * as axios from 'axios';\n// @ts-expect-error no types available\nimport * as wake_on_lan from 'wake_on_lan';\nimport * as nodeSchedule from 'node-schedule';\n\nimport {\n getAbsoluteDefaultDataDir,\n Adapter,\n Credentials,\n EXIT_CODES,\n type AdapterOptions,\n} from '@iobroker/adapter-core';\nimport type SentryPlugin from '@iobroker/plugin-sentry';\nimport type { GetTimesResult } from 'suncalc';\nimport type { CompileResult } from 'virtual-tsc/build/util';\n\nimport { Mirror } from './lib/mirror';\nimport ProtectFs from './lib/protectFs';\nimport { setLanguage, getLanguage } from './lib/words';\nimport { sandBox, removeFromDispatchIndex } from './lib/sandbox';\nimport { requestModuleNameByUrl } from './lib/nodeModulesManagement';\nimport {\n resolveProviderCredentials,\n resolveTestCredentials,\n listAvailableProviders,\n getProviderCredentialId,\n} from './lib/aiProviderResolver';\nimport {\n translateToolsToAnthropic,\n translateMessagesToAnthropic,\n translateAnthropicResponseToOpenAI,\n} from './lib/anthropicAdapter';\nimport { createEventObject, type EventObj } from './lib/eventObj';\nimport { type AstroEventName, Scheduler } from './lib/scheduler';\nimport { targetTsLib, tsCompilerOptions, jsDeclarationCompilerOptions } from './lib/typescriptSettings';\nimport { hashSource } from './lib/tools';\nimport {\n resolveTypescriptLibs,\n resolveTypings,\n scriptIdToTSFilename,\n transformScriptBeforeCompilation,\n transformGlobalDeclarations,\n} from './lib/typescriptTools';\nimport type {\n FileSubscriptionResult,\n JavascriptContext,\n JavaScriptAdapterConfig,\n JsScript,\n ScriptType,\n SubscriptionResult,\n SubscribeObject,\n JavascriptTimer,\n SandboxType,\n LogMessage,\n DebugState,\n} from './types';\nimport type { PatternEventCompareFunction } from './lib/patternCompareFunctions';\nimport { decryptText } from './lib/crypto';\n\ntype MODULES = {\n fs: ProtectFs;\n 'fs/promises': ProtectFs['promises'];\n dgram: typeof dgram;\n crypto: typeof crypto;\n dns: typeof dns;\n events: typeof events;\n http: typeof http;\n https: typeof https;\n http2: typeof http2;\n net: typeof net;\n os: typeof os;\n path: typeof path;\n util: typeof util;\n child_process: typeof child_process;\n stream: typeof stream;\n zlib: typeof zlib;\n suncalc: typeof suncalc;\n axios: typeof axios;\n wake_on_lan: typeof wake_on_lan;\n nodeSchedule: typeof nodeSchedule;\n};\n\n/**\n * List of forbidden Locations for a mirror directory\n * relative to the default data directory\n * ATTENTION: the same list is also located in index_m.html!!\n */\nconst forbiddenMirrorLocations: string[] = [\n 'backup-objects',\n 'files',\n 'backitup',\n '../backups',\n '../node_modules',\n '../log',\n];\n\nconst packageJson: Record = JSON.parse(readFileSync(`${__dirname}/../package.json`).toString());\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nlet webstormDebug: string | undefined;\n\nconst isCI = !!process.env.CI;\n\n// ambient declarations for typescript\nlet tsAmbient: Record;\n\n// TypeScript's scripts are only recompiled if their source hash changes.\n// If an adapter update fixes the compilation bugs, a user won't notice until the changes and re-save the script.\n// To avoid that, we also include the\n// adapter version and TypeScript version in the hash\nconst tsSourceHashBase = `versions:adapter=${packageJson.version},typescript=${packageJson.dependencies.typescript}`;\n\n// taken from here: https://stackoverflow.com/questions/11887934/how-to-check-if-dst-daylight-saving-time-is-in-effect-and-if-so-the-offset\nfunction dstOffsetAtDate(dateInput: Date): number {\n const fullYear: number = dateInput.getFullYear() | 0;\n // \"Leap Years are any year that can be exactly divided by 4 (2012, 2016, etc.)\n // except if it can be exactly divided by 100, then it isn't (2100, 2200, etc.)\n // except if it can be exactly divided by 400, then it is (2000, 2400)\"\n // (https://www.mathsisfun.com/leap-years.html).\n const isLeapYear: 1 | 0 = ((fullYear & 3) | ((fullYear / 100) & 3)) === 0 ? 1 : 0;\n // (fullYear & 3) = (fullYear % 4), but faster\n //Alternative:var isLeapYear=(new Date(currentYear,1,29,12)).getDate()===29?1:0\n const fullMonth: number = dateInput.getMonth() | 0;\n return (\n // 1. We know what the time since the Epoch really is\n +dateInput - // same as the dateInput.getTime() method\n // 2. We know what the time since the Epoch at the start of the year is\n +new Date(fullYear, 0) - // day defaults to 1 if not explicitly zeroed\n // 3. Now, subtract what we would expect the time to be if daylight savings\n // did not exist. This yields the time-offset due to daylight savings.\n // Calculate the day of the year in the Gregorian calendar\n // The code below works based upon the facts of signed right shifts\n // • (x) >> n: shifts n and fills in the n highest bits with 0s\n // • (-x) >> n: shifts n and fills in the n highest bits with 1s\n // (This assumes that x is a positive integer)\n ((((-1 + // the first day in the year is day 1\n (31 & (-fullMonth >> 4)) + // January // (-11)>>4 = -1\n ((28 + isLeapYear) & ((1 - fullMonth) >> 4)) + // February\n (31 & ((2 - fullMonth) >> 4)) + // March\n (30 & ((3 - fullMonth) >> 4)) + // April\n (31 & ((4 - fullMonth) >> 4)) + // May\n (30 & ((5 - fullMonth) >> 4)) + // June\n (31 & ((6 - fullMonth) >> 4)) + // July\n (31 & ((7 - fullMonth) >> 4)) + // August\n (30 & ((8 - fullMonth) >> 4)) + // September\n (31 & ((9 - fullMonth) >> 4)) + // October\n (30 & ((10 - fullMonth) >> 4)) + // November\n // There are no months past December: the year rolls into the next.\n // Thus, \"fullMonth\" is 0-based, so it will never be 12 in JavaScript\n\n (dateInput.getDate() | 0)) & // get day of the month\n 0xffff) *\n 24 *\n 60 + // 24 hours in a day, 60 minutes in an hour\n (dateInput.getHours() & 0xff) * 60 + // 60 minutes in an hour\n (dateInput.getMinutes() & 0xff)) |\n 0) *\n 60 *\n 1000 - // 60 seconds in a minute * 1000 milliseconds in a second\n (dateInput.getSeconds() & 0xff) * 1000 - // 1000 milliseconds in a second\n dateInput.getMilliseconds()\n );\n}\n\nconst regExGlobalOld = /_global$/;\nconst regExGlobalNew = /script\\.js\\.global\\./;\n\nfunction checkIsGlobal(obj: ioBroker.ScriptObject): boolean {\n return obj?.common && (regExGlobalOld.test(obj.common.name) || regExGlobalNew.test(obj._id));\n}\n\nfunction fileMatching(sub: FileSubscriptionResult, id: string, fileName: string): boolean {\n if (sub.idRegEx) {\n if (!sub.idRegEx.test(id)) {\n return false;\n }\n } else {\n if (sub.id !== id) {\n return false;\n }\n }\n if (sub.fileRegEx) {\n if (!sub.fileRegEx.test(fileName)) {\n return false;\n }\n } else {\n if (sub.fileNamePattern !== fileName) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNextTimeEvent(time: string, useNextDay?: boolean): Date {\n const now: Date = getAstroStartOfDay();\n const [timeHours, timeMinutes] = time.split(':');\n const nTimeHours = parseInt(timeHours, 10);\n const nTimeMinutes = parseInt(timeMinutes, 10);\n if (\n useNextDay &&\n (now.getHours() > nTimeHours || (now.getHours() === nTimeHours && now.getMinutes() > nTimeMinutes))\n ) {\n now.setDate(now.getDate() + 1);\n }\n\n now.setHours(nTimeHours);\n now.setMinutes(nTimeMinutes);\n\n return now;\n}\n\nfunction getAstroStartOfDay(): Date {\n const d = new Date();\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n d.setUTCHours(0);\n\n return d;\n}\n\nfunction formatHoursMinutesSeconds(date: Date): string {\n const h = String(date.getHours());\n const m = String(date.getMinutes());\n const s = String(date.getSeconds());\n\n return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`;\n}\n\n// Due to a npm bug, virtual-tsc may be hoisted to the top level node_modules, but\n// TypeScript may still be in the adapter level (https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794),\n// so we need to tell virtual-tsc where TypeScript is\nsetTypeScriptResolveOptions({\n paths: [require.resolve('typescript')],\n});\n\n// compiler instance for global JS declarations\nconst jsDeclarationServer: Server = new Server(jsDeclarationCompilerOptions, isCI ? false : undefined);\n/**\n * Stores the IDs of script objects whose change should be ignored because\n * the compiled source was just updated\n */\n\nconst HTTP_STATUS_TEXTS: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 429: 'Too Many Requests / Rate Limit',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\nfunction httpStatusText(code: number): string {\n return HTTP_STATUS_TEXTS[code] ?? `Error ${code}`;\n}\n\n/**\n * Resolves the correct http/https module based on the URL string.\n * Returns null if the URL is invalid.\n */\nfunction resolveRequestModule(url: string): { module: typeof https | typeof http; isHttps: boolean } | null {\n try {\n const { protocol } = new URL(url);\n const isHttps = protocol === 'https:';\n return { module: isHttps ? https : http, isHttps };\n } catch {\n return null;\n }\n}\n\nclass JavaScript extends Adapter {\n declare public config: JavaScriptAdapterConfig;\n\n private readonly context: JavascriptContext;\n\n private errorLogFunction: {\n error: (msg: string) => void;\n warn: (msg: string) => void;\n info: (msg: string) => void;\n debug: (msg: string) => void;\n silly: (msg: string) => void;\n } = {\n error: (msg: string) => console.error(msg),\n warn: (msg: string) => console.warn(msg),\n info: (msg: string) => console.log(msg),\n debug: (msg: string) => console.debug(msg),\n silly: (msg: string) => console.debug(msg),\n };\n\n private readonly mods: MODULES;\n\n private objectsInitDone = false;\n private statesInitDone = false;\n\n private objects: Record = {};\n private states: Record = {};\n private readonly interimStateValues: Record = {};\n private readonly stateIds: string[] = [];\n /** Fast O(1) lookup set – always kept in sync with stateIds */\n private readonly stateIdSet: Set = new Set();\n\n private readonly subscriptions: SubscriptionResult[] = [];\n /**\n * O(1) dispatch map for subscriptions with exact (non-wildcard) string IDs.\n * Always kept in sync with `subscriptions`.\n */\n private readonly subscriptionsMap: Map = new Map();\n /**\n * Subscriptions whose pattern.id is a RegExp, contains wildcards (*,?), or is undefined.\n * These must still be checked linearly on every state change.\n */\n private readonly subscriptionsWildcard: SubscriptionResult[] = [];\n private readonly subscriptionsFile: FileSubscriptionResult[] = [];\n private readonly subscriptionsObject: SubscribeObject[] = [];\n /** O(1) dispatch map for subscriptionsObject – pattern → subscribers */\n private readonly subscriptionsObjectMap: Map = new Map();\n /** IO-9: Cache for sendTo broadcast – adapterName → instance list, invalidated on object change */\n private readonly sendToInstanceCache: Map = new Map();\n private readonly subscribedPatterns: Record = {};\n private readonly subscribedPatternsFile: Record = {};\n private readonly adapterSubs: Record> = {};\n private readonly timers: { [scriptName: string]: JavascriptTimer[] } = {};\n /** Reverse-index: scriptName → Set of stateIds that have timers for this script – O(1) cleanup */\n private readonly timersByScript: Map> = new Map();\n /** O(1) Set for enum-id lookups – replaces sorted string[] array */\n private readonly _enums: Set = new Set();\n private readonly names: { [name: string]: string | string[] } = {}; // name: id\n /** Reverse map: id → name for O(1) getName() lookups */\n private readonly nameById: Map = new Map();\n private readonly scripts: Record = {};\n private password: string = '';\n private readonly messageBusHandlers: Record<\n string,\n Record void }[]>\n > = {};\n private readonly logSubscriptions: Record<\n string,\n {\n sandbox: SandboxType;\n cb: (info: LogMessage) => void;\n id: number;\n severity: ioBroker.LogLevel | '*';\n }[]\n > = {};\n private readonly tempDirectories: { [scriptName: string]: string } = {}; // name: path\n private readonly folderCreationVerifiedObjects: Record = {};\n\n /** if logs are subscribed or not */\n private logSubscribed = false;\n\n private timeSettings: {\n format12: boolean;\n leadingZeros: boolean;\n } = { format12: false, leadingZeros: true };\n\n private dayScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n private sunScheduleTimer: NodeJS.Timeout | null = null; // schedule for sun moment times\n private timeScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n\n private activeStr = ''; // enabled state prefix\n\n private mirror: Mirror | undefined;\n\n private stopCounters: Record = {};\n\n private setStateCountCheckInterval: NodeJS.Timeout | null = null;\n\n /**\n * Decrypted AI API keys cached from the central credential store (manager mode),\n * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the\n * subscriptions set up in `subscribeAiCredentials`.\n */\n private readonly aiCredentialCache: Map = new Map();\n /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */\n private aiCredentialUnsubscribers: (() => Promise)[] = [];\n\n private globalScript = '';\n /** Generated declarations for global TypeScripts */\n private globalDeclarations = '';\n // Remember which definitions the global scripts\n // have access to, because it depends on the compilation order\n private knownGlobalDeclarationsByScript: Record = {};\n private globalScriptLines = 0;\n // compiler instance for typescript\n private tsServer: Server;\n\n private readonly ignoreObjectChange: Set = new Set();\n\n private debugState: DebugState = {\n scriptName: '',\n child: null,\n promiseOnEnd: null,\n paused: false,\n started: 0,\n running: false,\n };\n\n constructor(options: Partial = {}) {\n options = {\n ...options,\n name: 'javascript', // adapter name\n useFormatDate: true,\n /**\n * If the JS-Controller catches an unhandled error, this will be called,\n * so we have a chance to handle it ourselves.\n */\n error: (err: Error): boolean => {\n // Identify unhandled errors originating from callbacks in scripts\n // These are not caught by wrapping the execution code in try-catch\n if (err && typeof err.stack === 'string') {\n const scriptCodeMarkerIndex = err.stack.indexOf(SCRIPT_CODE_MARKER);\n if (scriptCodeMarkerIndex > -1) {\n // This is a script error\n let scriptName = err.stack.substring(scriptCodeMarkerIndex);\n scriptName = scriptName.substring(0, scriptName.indexOf(':'));\n this.logError(scriptName, 'Error:', err);\n\n // Leave the script running for now\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n // check if a path contains adaptername but not own node_module\n // this regex matched \"iobroker.javascript/\" if NOT followed by \"node_modules\"\n if (!err.stack.match(/iobroker\\.javascript[/\\\\](?!.*node_modules).*/g)) {\n // This is an error without any info on origin (mostly async errors like connection errors)\n // also consider it as being from a script\n this.log.error(\n 'An error happened which is most likely from one of your scripts, but the originating script could not be detected.',\n );\n this.log.error(`Error: ${err.message}`);\n this.log.error(err.stack);\n\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n }\n\n return false;\n },\n };\n\n super(options as AdapterOptions);\n\n this.on('objectChange', this.onObjectChange.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('ready', this.onReady.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.on('fileChange', this.onFileChange.bind(this));\n this.on('log', this.onLog.bind(this));\n\n this.mods = {\n fs: {} as ProtectFs,\n 'fs/promises': {} as ProtectFs['promises'],\n dgram,\n crypto,\n dns,\n events,\n http,\n https,\n http2,\n net,\n os,\n path,\n util,\n child_process,\n stream,\n zlib,\n\n suncalc,\n axios,\n wake_on_lan,\n nodeSchedule,\n };\n\n // check the webstorm debug and just debug modes\n let debugMode: string | undefined;\n if (process.argv) {\n for (let a = 1; a < process.argv.length; a++) {\n if (process.argv[a].startsWith('--webstorm')) {\n webstormDebug = process.argv[a].replace(/^(.*?=\\s*)/, '');\n }\n if (process.argv[a] === '--debugScript') {\n if (!process.argv[a + 1]) {\n console.log('No script name provided');\n process.exit(300);\n } else {\n debugMode = process.argv[a + 1];\n }\n }\n }\n }\n\n this.context = {\n mods: this.mods,\n objects: this.objects,\n states: this.states,\n interimStateValues: this.interimStateValues,\n stateIds: this.stateIds,\n errorLogFunction: this.errorLogFunction,\n subscriptions: this.subscriptions,\n subscriptionsMap: this.subscriptionsMap,\n subscriptionsWildcard: this.subscriptionsWildcard,\n subscriptionsFile: this.subscriptionsFile,\n subscriptionsObject: this.subscriptionsObject,\n subscriptionsObjectMap: this.subscriptionsObjectMap,\n sendToInstanceCache: this.sendToInstanceCache,\n subscribedPatterns: this.subscribedPatterns,\n subscribedPatternsFile: this.subscribedPatternsFile,\n adapterSubs: this.adapterSubs,\n cacheObjectEnums: {},\n timers: this.timers,\n timersByScript: this.timersByScript,\n enums: this._enums,\n names: this.names,\n scripts: this.scripts,\n messageBusHandlers: this.messageBusHandlers,\n logSubscriptions: this.logSubscriptions,\n tempDirectories: this.tempDirectories,\n folderCreationVerifiedObjects: this.folderCreationVerifiedObjects,\n\n isEnums: false, // If some subscription wants enum\n channels: null,\n devices: null,\n logWithLineInfo: this.logWithLineInfo.bind(this),\n scheduler: null,\n timerId: 0,\n rulesOpened: null, // opened rules\n language: this.language || 'en',\n\n updateLogSubscriptions: this.updateLogSubscriptions.bind(this),\n convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),\n updateObjectContext: this.updateObjectContext.bind(this),\n prepareStateObject: this.prepareStateObject.bind(this),\n debugMode,\n getAbsoluteDefaultDataDir,\n adapter: this as unknown as ioBroker.Adapter,\n logError: this.logError.bind(this),\n allowSelfSignedCerts: false,\n };\n\n this.tsServer = new Server(tsCompilerOptions, this.tsLog);\n }\n\n async onObjectChange(id: string, obj?: ioBroker.Object | null): Promise {\n // Check if we should ignore this change (once!) because we just updated the compiled sources\n if (this.ignoreObjectChange.has(id)) {\n // Update the cached script object and do nothing more\n this.objects[id] = obj as ioBroker.Object;\n this.ignoreObjectChange.delete(id);\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.objectsInitDone) {\n if (obj) {\n this.objects[id] = obj;\n }\n return;\n }\n\n if (id.startsWith('enum.')) {\n // clear cache\n this.context.cacheObjectEnums = {};\n\n // update this._enums Set\n if (obj) {\n this._enums.add(id);\n } else {\n this._enums.delete(id);\n }\n }\n\n // IO-9: Invalidate sendTo instance-cache when adapter instances change\n if (id.startsWith('system.adapter.')) {\n const parts = id.split('.');\n if (parts.length >= 3) {\n const adapterName = parts[2]; // e.g. \"zigbee\" from \"system.adapter.zigbee.0\"\n this.sendToInstanceCache.delete(adapterName);\n }\n }\n\n if (id === 'system.config' && obj?.common?.language) {\n // set language for debug messages\n setLanguage(obj.common.language);\n this.language = obj.common.language;\n this.context.language = this.language as ioBroker.Languages;\n }\n\n // update stored time format for variables.dayTime\n if (id === `${this.namespace}.variables.dayTime` && obj?.native) {\n this.timeSettings.format12 = obj.native.format12 || false;\n this.timeSettings.leadingZeros = obj.native.leadingZeros === undefined ? true : obj.native.leadingZeros;\n }\n\n // send changes to the disk mirror\n this.mirror?.onObjectChange(id, obj as ioBroker.ScriptObject | null);\n\n const formerObj = this.objects[id];\n\n this.updateObjectContext(id, obj); // Update all Meta object data\n\n // for the alias object changes on the state objects, we need to manually update the\n // state cache value, because the new value is only published on the next change\n if (obj?.type === 'state' && id.startsWith('alias.0.')) {\n // execute async for speed\n this.getForeignStateAsync(id)\n .then(state => {\n if (state) {\n this.states[id] = state;\n } else if (this.states[id] !== undefined) {\n delete this.states[id];\n }\n })\n .catch(() => {\n /* ignore */\n });\n }\n\n // O(1) dispatch via pattern map instead of O(n) forEach\n const objSubs = this.subscriptionsObjectMap.get(id);\n if (objSubs) {\n for (const sub of objSubs) {\n try {\n sub.callback(id, obj);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n\n // handle Script object updates\n if (!obj && formerObj?.type === 'script') {\n // Object Deleted just now\n if (checkIsGlobal(formerObj)) {\n // it was a global Script, and it was enabled and is now deleted => restart adapter\n if (formerObj.common.enabled) {\n this.log.info(`Active global Script ${id} deleted. Restart instance.`);\n this.restart();\n }\n } else if (formerObj.common?.engine === `system.adapter.${this.namespace}`) {\n // It was a non-global Script and deleted => stop and remove it\n await this.stopScript(id);\n\n // delete scriptEnabled.blabla variable\n const idActive = `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idActive);\n await this.delObjectAsync(idActive);\n\n // delete scriptProblem.blabla variable\n const idProblem = `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idProblem);\n await this.delObjectAsync(idProblem);\n }\n } else if (!formerObj && obj?.type === 'script') {\n // New script that does not exist before\n if (checkIsGlobal(obj)) {\n // new global script added => restart adapter\n if (obj.common.enabled) {\n this.log.info(`Active global Script ${id} created. Restart instance.`);\n this.restart();\n }\n } else if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // new non-global script - create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n if (obj.common.enabled) {\n // if enabled => Start a script\n await this.loadScriptById(id);\n }\n }\n } else if (obj?.type === 'script' && formerObj?.common) {\n // Script changed ...\n if (checkIsGlobal(obj)) {\n if (obj.common.enabled || formerObj.common.enabled) {\n this.log.info(`Global Script ${id} updated. Restart instance.`);\n this.restart();\n }\n } else {\n // No global script\n if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n }\n\n if (\n (formerObj.common.enabled && !obj.common.enabled) ||\n (formerObj.common.engine === `system.adapter.${this.namespace}` &&\n obj.common.engine !== `system.adapter.${this.namespace}`)\n ) {\n // Script disabled\n if (formerObj.common.enabled && formerObj.common.engine === `system.adapter.${this.namespace}`) {\n // Remove it from executing\n await this.stopScript(id);\n }\n } else if (\n (!formerObj.common.enabled && obj.common.enabled) ||\n (formerObj.common.engine !== `system.adapter.${this.namespace}` &&\n obj.common.engine === `system.adapter.${this.namespace}`)\n ) {\n // Script enabled\n\n if (obj.common.enabled && obj.common.engine === `system.adapter.${this.namespace}`) {\n // Start script\n await this.loadScriptById(id);\n }\n } else if (\n obj.common.engine === `system.adapter.${this.namespace}` ||\n formerObj.common.engine === `system.adapter.${this.namespace}`\n ) {\n // Source changed => restart the script (only on the relevant instance)\n this.stopCounters[id] = this.stopCounters[id] ? this.stopCounters[id] + 1 : 1;\n void this.stopScript(id).then(() => {\n // only start again after stop when \"last\" object change to prevent problems on\n // multiple changes in fast frequency\n if (!--this.stopCounters[id]) {\n void this.loadScriptById(id);\n }\n });\n }\n }\n }\n }\n\n onStateChange(id: string, state?: ioBroker.State | null): void {\n if (this.interimStateValues[id] !== undefined) {\n // any update invalidates the remembered interim value\n delete this.interimStateValues[id];\n }\n if (!id || id.startsWith('messagebox.') || id.startsWith('log.')) {\n return;\n }\n\n if (id === `${this.namespace}.debug.to` && state && !state.ack) {\n if (!this.context.debugMode) {\n this.debugSendToInspector(state.val);\n }\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.statesInitDone) {\n if (state) {\n this.states[id] = state;\n }\n return;\n }\n\n const oldState: ioBroker.State | null | undefined = this.states[id];\n if (state) {\n if (oldState) {\n // enable or disable script\n if (!state.ack && id.startsWith(this.activeStr) && this.objects[id]?.native?.script) {\n void this.extendForeignObject(this.objects[id].native.script, {\n common: { enabled: state.val },\n });\n }\n\n // monitor if the adapter is alive and send all subscriptions once more, after the adapter goes online\n if (/*oldState && */ oldState.val === false && state.val && id.endsWith('.alive')) {\n if (this.adapterSubs[id]) {\n const parts = id.split('.');\n const a = `${parts[2]}.${parts[3]}`;\n for (const sub of this.adapterSubs[id]) {\n this.log.info(`Detected coming adapter \"${a}\". Send subscribe: ${sub}`);\n this.sendTo(a, 'subscribe', sub);\n }\n }\n }\n } else if (/*!oldState && */ !this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n this.states[id] = state;\n } else {\n if (oldState) {\n delete this.states[id];\n }\n state = {} as ioBroker.State;\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n }\n\n // Collect matching subscriptions:\n // 1. O(1) exact-id map lookup – only buckets for this specific state id\n // 2. Linear scan over wildcard/regex subscriptions (unavoidable)\n // EventObj is created lazily – only when at least one subscription must be dispatched.\n const exactSubs = this.subscriptionsMap.get(id);\n const wildcardSubs = this.subscriptionsWildcard;\n const hasWork = (exactSubs && exactSubs.length > 0) || wildcardSubs.length > 0;\n\n if (!hasWork) {\n return;\n }\n\n let _eventObj: EventObj | null = null;\n const getEvent = (): EventObj => {\n if (!_eventObj) {\n _eventObj = createEventObject(\n this.context,\n id,\n this.convertBackStringifiedValues(id, state),\n this.convertBackStringifiedValues(id, oldState),\n );\n }\n return _eventObj;\n };\n\n if (exactSubs) {\n for (let i = 0, l = exactSubs.length; i < l; i++) {\n const sub = exactSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n // if this state matches any subscriptions\n for (let i = 0, l = wildcardSubs.length; i < l; i++) {\n const sub = wildcardSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n onFileChange(id: string, fileName: string, size: number | null): void {\n // if this file matches any subscriptions\n for (let i = 0, l = this.subscriptionsFile.length; i < l; i++) {\n const sub = this.subscriptionsFile[i];\n if (sub && fileMatching(sub, id, fileName)) {\n try {\n sub.callback(id, fileName, size, sub.withFile);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n async onUnload(callback: () => void): Promise {\n try {\n await this.debugStop();\n this.stopTimeSchedules();\n if (this.setStateCountCheckInterval) {\n clearInterval(this.setStateCountCheckInterval);\n this.setStateCountCheckInterval = null;\n }\n await this.unsubscribeAiCredentials();\n await this.stopAllScripts();\n } catch (err: unknown) {\n this.log.error(`Error during unload: ${(err as Error).message}`);\n } finally {\n if (typeof callback === 'function') {\n callback();\n }\n }\n }\n\n async onReady(): Promise {\n this.errorLogFunction = this.log;\n this.context.errorLogFunction = this.log;\n this.config.maxSetStatePerMinute = parseInt(this.config.maxSetStatePerMinute as unknown as string, 10) || 1000;\n this.config.maxTriggersPerScript = parseInt(this.config.maxTriggersPerScript as unknown as string, 10) || 100;\n\n if (this.supportsFeature?.('PLUGINS')) {\n const sentryInstance: InstanceType = this.getPluginInstance('sentry') as InstanceType<\n typeof SentryPlugin\n >;\n if (sentryInstance) {\n const Sentry = sentryInstance.getSentryObject();\n Sentry?.withScope(scope => {\n scope.addEventProcessor((event, _hint) => {\n if (event.exception?.values?.[0]) {\n const eventData = event.exception.values[0];\n if (\n eventData.stacktrace?.frames &&\n Array.isArray(eventData.stacktrace.frames) &&\n eventData.stacktrace.frames.length\n ) {\n // Exclude event if script Marker is included\n if (\n eventData.stacktrace.frames.find(frame =>\n frame.filename?.includes(SCRIPT_CODE_MARKER),\n )\n ) {\n return null;\n }\n // Exclude event if own directory is included but not inside own node_modules\n const ownNodeModulesDir = join(__dirname, 'node_modules');\n if (\n !eventData.stacktrace.frames.find(\n frame =>\n frame.filename?.includes(__dirname) &&\n !frame.filename.includes(ownNodeModulesDir),\n )\n ) {\n return null;\n }\n // We have exception data and did not sort it out, so report it\n return event;\n }\n }\n\n // No exception in it ... do not report\n return null;\n });\n });\n }\n }\n\n await this.main();\n }\n\n /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */\n private async readAiCredentialKey(id: string): Promise {\n try {\n const cred = await Credentials.getCredentials(this, id);\n return (cred?.values?.key || '').trim();\n } catch (e) {\n this.log.warn(`Cannot read AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`);\n return '';\n }\n }\n\n /**\n * Resolve the API key (and base URL) for an AI provider.\n *\n * In `manual` mode the key comes from the encryptedNative adapter config.\n * In `manager` mode the config only stores the ID of a credential in the central\n * ioBroker credential store (`system.credentials.*`); the actual key is taken from the\n * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are\n * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly.\n *\n * The settings-dialog Test button may pass form values that are not saved yet\n * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config.\n */\n private async resolveAiCredentials(\n provider: string,\n opts: {\n messageBaseUrl?: string;\n messageApiKey?: string;\n messageCredentialId?: string;\n credentialType?: 'manual' | 'manager';\n } = {},\n ): Promise<{ apiKey: string; baseUrl: string }> {\n const mode = opts.credentialType || this.config.credentialType || 'manual';\n if (mode === 'manager') {\n // The base URL is not a secret and is resolved the same way in both modes.\n const { baseUrl } = resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n const id = (opts.messageCredentialId || getProviderCredentialId(this.config, provider)).trim();\n if (!id) {\n return { apiKey: '', baseUrl };\n }\n // Prefer the cached value kept fresh by the credential subscription.\n const cached = this.aiCredentialCache.get(id);\n const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id);\n return { apiKey, baseUrl };\n }\n // Manual mode. The Test button sends the current form key (maybe empty) — let it win.\n if (opts.messageApiKey !== undefined) {\n return resolveTestCredentials(this.config, provider, opts.messageApiKey, opts.messageBaseUrl);\n }\n return resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n }\n\n /**\n * In `manager` mode, subscribe to all configured AI credentials so that edits made in the\n * admin credential manager (Settings → Credentials) are picked up live, without restarting\n * the adapter (the `system.credentials.*` objects are global, not part of the instance config).\n * The decrypted keys are cached and kept fresh by the subscription handlers.\n */\n private async subscribeAiCredentials(): Promise {\n // Always start from a clean state (idempotent — also used to re-subscribe).\n await this.unsubscribeAiCredentials();\n if (this.config.credentialType !== 'manager') {\n return;\n }\n // Collect the distinct credential IDs configured across all AI providers.\n const ids = new Set();\n for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) {\n const id = getProviderCredentialId(this.config, provider);\n if (id) {\n ids.add(id);\n }\n }\n for (const id of ids) {\n try {\n const unsubscribe = await Credentials.subscribeCredentials(\n this,\n id,\n (changedId, cred) => {\n if (cred) {\n this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim());\n this.log.debug(`AI credential \"${changedId}\" updated`);\n } else {\n // The credential was deleted\n this.aiCredentialCache.delete(changedId);\n this.log.debug(`AI credential \"${changedId}\" was deleted`);\n }\n },\n );\n this.aiCredentialUnsubscribers.push(unsubscribe);\n // Prime the cache with the current value (the handler may only fire on later changes).\n this.aiCredentialCache.set(id, await this.readAiCredentialKey(id));\n } catch (e) {\n this.log.warn(\n `Cannot subscribe to AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n if (this.aiCredentialUnsubscribers.length) {\n this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`);\n }\n }\n\n /** Tear down all AI credential subscriptions and clear the cache. */\n private async unsubscribeAiCredentials(): Promise {\n const unsubscribers = this.aiCredentialUnsubscribers;\n this.aiCredentialUnsubscribers = [];\n this.aiCredentialCache.clear();\n for (const unsubscribe of unsubscribers) {\n try {\n await unsubscribe();\n } catch (e) {\n this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n switch (obj?.command) {\n // process messageTo commands\n case 'toScript':\n case 'jsMessageBus':\n if (\n obj.message &&\n (obj.message.instance === null ||\n obj.message.instance === undefined ||\n `javascript.${obj.message.instance}` === this.namespace ||\n obj.message.instance === this.namespace)\n ) {\n Object.keys(this.messageBusHandlers).forEach(name => {\n // the script name could be script.js.xxx or only xxx\n if (\n (!obj.message.script || obj.message.script === name) &&\n this.messageBusHandlers[name][obj.message.message]\n ) {\n this.messageBusHandlers[name][obj.message.message].forEach(handler => {\n const sandbox = handler.sandbox;\n\n sandbox.verbose && sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');\n\n try {\n if (obj.callback) {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n\n this.sendTo(obj.from, obj.command, result, obj.callback);\n });\n } else {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n sandbox.verbose &&\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n });\n }\n } catch (err: unknown) {\n void this.setState(\n `scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`,\n true,\n true,\n );\n this.logError(name, 'Error in callback:', err as Error);\n }\n });\n }\n });\n }\n break;\n\n case 'loadTypings': {\n // Load typings for the editor\n const typings: Record = {};\n\n // try to load TypeScript lib files from disk\n try {\n const typescriptLibs = resolveTypescriptLibs(targetTsLib);\n Object.assign(typings, typescriptLibs);\n } catch {\n /* ok, no lib then */\n }\n\n // provide the already-loaded ioBroker typings and global script declarations\n Object.assign(typings, tsAmbient);\n\n // also provide the known global declarations for each global script\n for (const globalScriptPaths of Object.keys(this.knownGlobalDeclarationsByScript)) {\n typings[`${globalScriptPaths}.d.ts`] = this.knownGlobalDeclarationsByScript[globalScriptPaths];\n }\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { typings }, obj.callback);\n }\n break;\n }\n\n case 'calcAstroAll': {\n if (obj.message) {\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n let astroEvents: GetTimesResult & { nextSunrise: Date; nextSunset: Date } = {} as GetTimesResult & {\n nextSunrise: Date;\n nextSunset: Date;\n };\n try {\n astroEvents = this.mods.suncalc.getTimes(today, latitude, longitude);\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n if (astroEvents) {\n try {\n astroEvents.nextSunrise = this.getAstroEvent(\n today,\n obj.message.sunriseEvent || this.config.sunriseEvent,\n obj.message.sunriseLimitStart || this.config.sunriseLimitStart,\n obj.message.sunriseLimitEnd || this.config.sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n astroEvents.nextSunset = this.getAstroEvent(\n today,\n obj.message.sunsetEvent || this.config.sunsetEvent,\n obj.message.sunsetLimitStart || this.config.sunsetLimitStart,\n obj.message.sunsetLimitEnd || this.config.sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n }\n\n const result: Record = {};\n const keys = Object.keys(astroEvents).sort(\n (a, b) =>\n (astroEvents as unknown as Record)[a] -\n (astroEvents as unknown as Record)[b],\n );\n keys.forEach(key => {\n const validDate =\n (astroEvents as unknown as Record)[key] !== null &&\n !isNaN((astroEvents as unknown as Record)[key].getTime());\n\n result[key] = {\n isValidDate: validDate,\n serverTime: validDate\n ? formatHoursMinutesSeconds((astroEvents as unknown as Record)[key])\n : 'n/a',\n date: validDate\n ? (astroEvents as unknown as Record)[key].toISOString()\n : 'n/a',\n };\n });\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, result, obj.callback);\n }\n }\n break;\n }\n\n case 'calcAstro': {\n if (obj.message) {\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n\n const sunriseEvent = obj.message?.sunriseEvent || this.config.sunriseEvent;\n const sunriseLimitStart = obj.message?.sunriseLimitStart || this.config.sunriseLimitStart;\n const sunriseLimitEnd = obj.message?.sunriseLimitEnd || this.config.sunriseLimitEnd;\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const nextSunrise = this.getAstroEvent(\n today,\n sunriseEvent,\n sunriseLimitStart,\n sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n\n const sunsetEvent = obj.message?.sunsetEvent || this.config.sunsetEvent;\n const sunsetLimitStart = obj.message?.sunsetLimitStart || this.config.sunsetLimitStart;\n const sunsetLimitEnd = obj.message?.sunsetLimitEnd || this.config.sunsetLimitEnd;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const nextSunset = this.getAstroEvent(\n today,\n sunsetEvent,\n sunsetLimitStart,\n sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n\n const validDateSunrise = nextSunrise !== null && !isNaN(nextSunrise.getTime());\n const validDateSunset = nextSunset !== null && !isNaN(nextSunset.getTime());\n\n this.log.debug(\n `calcAstro sunrise: ${sunriseEvent} -> start ${sunriseLimitStart}, end: ${sunriseLimitEnd}, offset: ${sunriseOffset} - ${validDateSunrise ? nextSunrise.toISOString() : 'n/a'}`,\n );\n this.log.debug(\n `calcAstro sunset: ${sunsetEvent} -> start ${sunsetLimitStart}, end: ${sunsetLimitEnd}, offset: ${sunsetOffset} - ${validDateSunset ? nextSunset.toISOString() : 'n/a'}`,\n );\n\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n nextSunrise: {\n isValidDate: validDateSunrise,\n serverTime: validDateSunrise ? formatHoursMinutesSeconds(nextSunrise) : 'n/a',\n date: nextSunrise.toISOString(),\n },\n nextSunset: {\n isValidDate: validDateSunset,\n serverTime: validDateSunset ? formatHoursMinutesSeconds(nextSunset) : 'n/a',\n date: nextSunset.toISOString(),\n },\n },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'debug': {\n if (!this.context.debugMode) {\n this.debugStart(obj.message);\n }\n break;\n }\n\n case 'debugStop': {\n if (!this.context.debugMode) {\n void this.debugStop().then(() => console.log('stopped'));\n }\n break;\n }\n\n case 'rulesOn': {\n this.context.rulesOpened = obj.message;\n console.log(`Enable messaging for ${this.context.rulesOpened}`);\n break;\n }\n\n case 'rulesOff': {\n // maybe if (context.rulesOpened === obj.message)\n console.log(`Disable messaging for ${this.context.rulesOpened}`);\n this.context.rulesOpened = null;\n break;\n }\n\n case 'getIoBrokerDataDir': {\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n dataDir: getAbsoluteDefaultDataDir(),\n sep,\n },\n obj.callback,\n );\n }\n break;\n }\n\n case 'chatCompletion': {\n // Proxy chat completion requests to an OpenAI-compatible API endpoint.\n // API keys are resolved server-side from the encryptedNative config or the central\n // credentials manager — they never leave the adapter (frontend only sends `provider`).\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const chatModel = (obj.message?.model || '').trim();\n const messages = obj.message?.messages;\n const tools = obj.message?.tools;\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageBaseUrl: obj.message?.baseUrl,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n if (!chatModel || !messages) {\n this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback);\n return;\n }\n\n let url: string;\n const chatHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n let bodyObj: Record;\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/messages';\n chatHeaders['x-api-key'] = apiKey;\n chatHeaders['anthropic-version'] = '2023-06-01';\n // Translate OpenAI-format messages/tools into Anthropic's content-block format.\n const { system: systemText, messages: anthropicMessages } =\n translateMessagesToAnthropic(messages);\n const anthropicTools = tools?.length ? translateToolsToAnthropic(tools) : [];\n bodyObj = {\n model: chatModel,\n max_tokens: 8192,\n stream: false,\n ...(systemText ? { system: systemText } : {}),\n messages: anthropicMessages,\n ...(anthropicTools.length ? { tools: anthropicTools } : {}),\n };\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions';\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/chat/completions';\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/chat/completions`;\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = {\n model: chatModel,\n messages,\n stream: false,\n ...(tools?.length ? { tools } : {}),\n // Disable thinking/reasoning for local models to save context and speed\n ...(baseUrl ? { reasoning_effort: 'none' } : {}),\n };\n }\n\n const body = JSON.stringify(bodyObj);\n const bodyBuffer = Buffer.from(body, 'utf8');\n chatHeaders['Content-Length'] = bodyBuffer.length;\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'POST',\n headers: chatHeaders,\n timeout: 600000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n let content: string;\n let tool_calls: unknown;\n if (provider === 'anthropic') {\n const translated = translateAnthropicResponseToOpenAI(parsed);\n content = translated.content;\n tool_calls = translated.tool_calls;\n } else {\n const message = parsed.choices?.[0]?.message;\n content = message?.content || '';\n tool_calls = message?.tool_calls;\n }\n if (!content && !(tool_calls as unknown[] | undefined)?.length) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Empty response from API' },\n obj.callback,\n );\n } else {\n this.sendTo(\n obj.from,\n obj.command,\n {\n success: true,\n content,\n ...(tool_calls ? { tool_calls } : {}),\n },\n obj.callback,\n );\n }\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else {\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (600s)' }, obj.callback);\n });\n\n req.write(bodyBuffer);\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'testApiConnection': {\n // Test connection to an OpenAI-compatible API endpoint.\n // The settings-dialog Test button sends the current form value as `apiKey`\n // (so users can test before saving); otherwise we fall back to the stored key.\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageApiKey: obj.message?.apiKey,\n messageBaseUrl: obj.message?.baseUrl,\n messageCredentialId: obj.message?.credentialId,\n credentialType: obj.message?.credentialType,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n\n let url: string;\n const testHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/models';\n testHeaders['x-api-key'] = apiKey;\n testHeaders['anthropic-version'] = '2023-06-01';\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/models';\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/models';\n testHeaders.Authorization = `Bearer ${apiKey}`;\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/models`;\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'GET',\n headers: testHeaders,\n timeout: 10000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n const models: string[] = (parsed.data || [])\n .map((m: { id: string }) =>\n m.id.startsWith('models/') ? m.id.substring(7) : m.id,\n )\n .sort();\n this.sendTo(\n obj.from,\n obj.command,\n { success: true, models, count: models.length },\n obj.callback,\n );\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else if (res.statusCode === 401) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid API key (401)' },\n obj.callback,\n );\n } else if (res.statusCode === 403) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Access denied (403)' },\n obj.callback,\n );\n } else {\n // Include response body for debugging\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (10s)' }, obj.callback);\n });\n\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'getAvailableAiProviders': {\n // Reports which AI providers have stored credentials (keys never leave the backend).\n if (obj.callback) {\n const providers = listAvailableProviders(this.config);\n this.sendTo(obj.from, obj.command, { providers }, obj.callback);\n }\n break;\n }\n\n case 'prettier': {\n // Format the code with Prettier\n if (obj.message && typeof obj.message.code === 'string') {\n try {\n prettier\n .format(obj.message.code, {\n parser: obj.message.type === 'typescript' ? 'babel-ts' : 'babel',\n printWidth: 120,\n semi: true,\n tabWidth: 4,\n useTabs: false,\n trailingComma: 'all',\n singleQuote: true,\n singleAttributePerLine: true,\n endOfLine: 'lf',\n bracketSpacing: true,\n arrowParens: 'avoid',\n quoteProps: 'as-needed',\n })\n .then(formattedCode => {\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { code: formattedCode }, obj.callback);\n } else {\n this.logWithLineInfo(`Formatted code:\\n${formattedCode}`);\n }\n })\n .catch(e => {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n });\n } catch (e) {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n }\n } else {\n this.sendTo(obj.from, obj.command, { error: 'No code provided' }, obj.callback);\n }\n break;\n }\n }\n }\n\n onLog(msg: any): void {\n for (const name of Object.keys(this.logSubscriptions)) {\n for (const handler of this.logSubscriptions[name]) {\n if (\n typeof handler.cb === 'function' &&\n (handler.severity === '*' || handler.severity === msg.severity)\n ) {\n handler.sandbox.logHandler = handler.severity || '*';\n handler.cb.call(handler.sandbox, msg);\n handler.sandbox.logHandler = undefined;\n }\n }\n }\n }\n\n logError(scriptName: string, msg: string, e: Error, offs?: number): void {\n const stack = e.stack ? e.stack.toString().split('\\n') : e ? e.toString() : '';\n if (!msg.includes('\\n')) {\n msg = msg.replace(/[: ]*$/, ': ');\n }\n if (!msg.endsWith(' ')) {\n msg += ':';\n }\n if (!scriptName.startsWith(SCRIPT_CODE_MARKER)) {\n scriptName = SCRIPT_CODE_MARKER + scriptName;\n }\n\n this.errorLogFunction.error(`${scriptName}: ${msg}${this.fixLineNo(stack[0])}`);\n for (let i = offs || 1; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.error(`${scriptName}: ${this.fixLineNo(stack[i])}`);\n }\n }\n\n logWithLineInfo(msg: string): void {\n this.errorLogFunction.warn(msg);\n\n // get current error stack\n const stack = new Error().stack?.split('\\n');\n\n if (stack) {\n for (let i = 3; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInContext|runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.warn(this.fixLineNo(stack[i]));\n }\n }\n }\n\n async main(): Promise {\n // Patch the font as it sometimes is wrong\n if (!this.context.debugMode) {\n if (await this.patchFont()) {\n this.log.debug('Font patched');\n }\n }\n\n this.log.debug(`config.subscribe (Do not subscribe all states on start): ${this.config.subscribe}`);\n\n // correct jsonConfig for admin\n const instObj: ioBroker.InstanceObject | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (instObj?.common) {\n if (instObj.common.adminUI?.config !== 'json') {\n if (instObj.common.adminUI) {\n instObj.common.adminUI.config = 'json';\n } else {\n instObj.common.adminUI = { config: 'json' };\n }\n void this.setForeignObject(instObj._id, instObj);\n }\n }\n\n if (webstormDebug) {\n this.errorLogFunction = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n debug: console.log,\n silly: console.log,\n };\n this.context.errorLogFunction = this.errorLogFunction;\n }\n this.activeStr = `${this.namespace}.scriptEnabled.`;\n\n this.mods.fs = new ProtectFs(this.log, getAbsoluteDefaultDataDir());\n this.mods['fs/promises'] = this.mods.fs.promises; // to avoid require('fs/promises');\n\n // try to read TS declarations\n try {\n tsAmbient = {\n 'javascript.d.ts': readFileSync(this.mods.path.join(__dirname, 'lib/javascript.d.ts'), 'utf8'),\n };\n this.tsServer.provideAmbientDeclarations(tsAmbient);\n jsDeclarationServer.provideAmbientDeclarations(tsAmbient);\n } catch (err: unknown) {\n this.log.warn(`Could not read TypeScript ambient declarations: ${err as Error}`);\n // This should not happen, so send an error report to Sentry\n if (this.supportsFeature && this.supportsFeature('PLUGINS')) {\n const sentryInstance = this.getPluginInstance('sentry');\n if (sentryInstance) {\n const sentryObject = sentryInstance.getSentryObject();\n sentryObject?.captureException(err as Error);\n }\n }\n // Keep the adapter from crashing when the included typings cannot be read\n tsAmbient = {};\n }\n\n await this.installLibraries();\n // Load the TS declarations for Node.js and all 3rd party modules\n this.loadTypeScriptDeclarations();\n\n await this.getData();\n this.context.scheduler = new Scheduler(\n this.log,\n Date,\n this.mods.suncalc,\n this.config.latitude,\n this.config.longitude,\n );\n await this.dayTimeSchedules();\n await this.sunTimeSchedules();\n await this.timeSchedule();\n\n // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it\n // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode)\n this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts;\n\n // In `manager` credential mode, subscribe to the configured AI credentials so changes in the\n // central credential store are picked up live (the keys are cached for the AI sendTo handlers).\n await this.subscribeAiCredentials();\n\n const doc = await this.getObjectViewAsync('script', 'javascript', {});\n if (doc?.rows?.length) {\n // sort global scripts if configured\n if (this.config.sortGlobalScriptsAlphabetically) {\n doc.rows.sort((a, b) => a.value._id.localeCompare(b.value._id));\n }\n // assemble global script\n for (let g = 0; g < doc.rows.length; g++) {\n const obj = doc.rows[g].value;\n if (checkIsGlobal(obj)) {\n if (obj && obj.common) {\n const engineType = (obj.common.engineType || '').toLowerCase();\n\n if (obj.common.enabled) {\n if (engineType.startsWith('typescript')) {\n // TypeScript\n this.log.info(`${obj._id}: compiling TypeScript source...`);\n // In order to compile global TypeScript, we need to do some transformations\n // 1. For top-level-await, some statements must be wrapped in an immediately-invoked async function\n // 2. If any global script uses `import`, the declarations are no longer visible if they are not exported with `declare global`\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, true);\n // The source code must be transformed in order to support top level await\n // Global scripts must not be treated as a module, otherwise their methods\n // cannot be found by the normal scripts\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash: string = hashSource(\n tsSourceHashBase + this.globalDeclarations + transformedSource,\n );\n\n let compiled: string | undefined;\n let declarations: string | undefined;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n declarations = obj.common.declarations;\n this.log.info(\n `${obj._id}: source code did not change, using cached compilation result...`,\n );\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n continue;\n }\n\n const errors = tsCompiled.diagnostics\n .map(diag => `${diag.annotatedSource}\\n`)\n .join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(\n `${obj._id}: TypeScript compilation completed with errors:\\n${errors}`,\n );\n } else {\n this.log.info(`${obj._id}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result;\n // Global scripts that have been transformed to support `import` need to have their declarations transformed aswell\n declarations = transformGlobalDeclarations(tsCompiled.declarations || '');\n\n const newCommon: {\n compiled: string | undefined;\n declarations?: string;\n sourceHash: string;\n } = {\n sourceHash,\n compiled,\n };\n if (declarations) {\n newCommon.declarations = declarations;\n }\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(obj._id); // ignore the next change and don't restart scripts\n void this.extendForeignObject(obj._id, {\n common: newCommon,\n });\n } else {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${errors}`);\n continue;\n }\n }\n this.globalScript += `${compiled}\\n`;\n // if declarations were generated, remember them\n if (declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, declarations);\n }\n } else {\n // javascript\n const sourceCode = obj.common.source;\n this.globalScript += `${sourceCode}\\n`;\n\n // try to compile the declarations so TypeScripts can use\n // functions defined in global JavaScripts\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = jsDeclarationServer.compile(filename, sourceCode);\n } catch (err: unknown) {\n this.log.warn(\n `${obj._id}: Error while generating type declarations, skipping:\\n${err as Error}`,\n );\n continue;\n }\n // if declarations were generated, remember them\n if (tsCompiled.success && tsCompiled.declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, tsCompiled.declarations);\n }\n }\n }\n }\n }\n }\n }\n\n this.globalScript = this.globalScript.replace(/\\r\\n/g, '\\n');\n this.globalScriptLines = this.globalScript.split(/\\n/g).length - 1;\n\n if (doc?.rows?.length) {\n // load all scripts\n for (let i = 0; i < doc.rows.length; i++) {\n if (!checkIsGlobal(doc.rows[i].value)) {\n void this.loadScript(doc.rows[i].value);\n }\n }\n }\n\n if (this.config.mirrorPath?.trim()) {\n this.config.mirrorInstance = parseInt(this.config.mirrorInstance as unknown as string, 10) || 0;\n if (this.instance === this.config.mirrorInstance) {\n const ioBDataDir = getAbsoluteDefaultDataDir() + sep;\n this.config.mirrorPath = normalize(this.config.mirrorPath);\n let mirrorForbidden = false;\n for (let dir of forbiddenMirrorLocations) {\n dir = join(ioBDataDir, dir) + sep;\n if (dir.includes(this.config.mirrorPath) || this.config.mirrorPath.startsWith(dir)) {\n this.log.error(`The Mirror directory is not allowed to be a central ioBroker directory!`);\n this.log.error(`Directory ${this.config.mirrorPath} is not allowed to mirror files!`);\n mirrorForbidden = true;\n break;\n }\n }\n if (!mirrorForbidden) {\n this.mirror = new Mirror({\n adapter: this,\n log: this.log,\n diskRoot: this.config.mirrorPath,\n });\n }\n }\n }\n\n // Check setState counter per minute and stop a script if too high\n this.setStateCountCheckInterval = setInterval(() => {\n for (const id of Object.keys(this.scripts)) {\n if (!this.scripts[id]) {\n continue;\n }\n const currentSetStatePerMinuteCounter = this.scripts[id].setStatePerMinuteCounter;\n this.scripts[id].setStatePerMinuteCounter = 0;\n if (currentSetStatePerMinuteCounter > this.config.maxSetStatePerMinute) {\n this.scripts[id].setStatePerMinuteProblemCounter++;\n this.log.debug(\n `${id}: Script has reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute in ${this.scripts[id].setStatePerMinuteProblemCounter} consecutive minutes`,\n );\n // Allow \"too high counters\" for 1 minute for script starts or such and only\n // stop the script when lasts longer\n if (this.scripts[id].setStatePerMinuteProblemCounter > 1) {\n this.log.error(\n `${id}: Script is calling setState more than ${this.config.maxSetStatePerMinute} times per minute! Stopping Script now! Please check your script!`,\n );\n void this.stopScript(id);\n }\n } else if (this.scripts[id].setStatePerMinuteProblemCounter > 0) {\n this.scripts[id].setStatePerMinuteProblemCounter--;\n this.log.debug(\n `Script ${id} has NOT reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute. Decrease problem counter to ${this.scripts[id].setStatePerMinuteProblemCounter}`,\n );\n }\n }\n }, 60_000).unref();\n }\n\n private loadTypeScriptDeclarations(): void {\n // try to load the typings on disk for all 3rd party modules\n const packages = [\n 'node', // this provides auto-completion for most builtins\n '@iobroker/types', // this provides auto-completion for most builtins\n ];\n // Also include user-selected libraries (but only those that are also installed)\n if (typeof this.config?.libraries === 'string' && typeof this.config.libraryTypings === 'string') {\n const installedLibs = this.config.libraries\n .split(/[,;\\s]+/)\n .map(s => s.trim().split('@')[0])\n .filter(s => !!s);\n\n const wantsTypings = this.config.libraryTypings\n .split(/[,;\\s]+/)\n .map(s => s.trim())\n .filter(s => !!s);\n\n // O(1) lookups – avoids O(n²) Array.includes inside loops\n const installedSet = new Set(installedLibs);\n const wantsSet = new Set(wantsTypings);\n const packagesSet = new Set(packages);\n\n // Add all installed libraries the user has requested typings for to the list of packages\n for (const lib of installedLibs) {\n if (wantsSet.has(lib) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n // Some packages have submodules (e.g., rxjs/operators) that are not exposed through the main entry point\n // If typings are requested for them, also add them if the base module is installed\n for (const lib of wantsTypings) {\n // Extract the package name and check if we need to add it\n if (!lib.includes('/')) {\n continue;\n }\n const pkgName = lib.substring(0, lib.indexOf('/'));\n\n if (installedSet.has(pkgName) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n }\n for (const pkg of packages) {\n let pkgTypings = resolveTypings(\n pkg,\n this.getAdapterScopedPackageIdentifier ? this.getAdapterScopedPackageIdentifier(pkg) : pkg,\n // node needs ambient typings, so we don't wrap it in declare module\n pkg !== 'node',\n );\n if (!pkgTypings) {\n // Create the empty dummy declarations so users don't get the \"not found\" error\n // for installed packages\n if (pkg.includes('/')) {\n pkgTypings = {\n [`node_modules/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n } else {\n pkgTypings = {\n [`node_modules/@types/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n }\n }\n this.log.debug(`Loaded TypeScript definitions for \"${pkg}\": ${JSON.stringify(Object.keys(pkgTypings))}`);\n // remember the declarations for the editor\n Object.assign(tsAmbient, pkgTypings);\n // and give the language servers access to them\n this.tsServer.provideAmbientDeclarations(pkgTypings);\n jsDeclarationServer.provideAmbientDeclarations(pkgTypings);\n }\n }\n\n updateObjectContext(id: string, obj: ioBroker.Object | null | undefined): void {\n if (obj) {\n // add state to state ID's list\n if (obj.type === 'state') {\n if (!this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn] ||= new Set();\n this.context.channels[chn].add(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev] ||= new Set();\n this.context.devices[dev].add(id);\n }\n }\n } else {\n // delete object from state ID's list\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn]?.delete(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev]?.delete(id);\n }\n\n delete this.folderCreationVerifiedObjects[id];\n }\n\n if (!obj && this.objects[id]) {\n // objects were deleted\n this.removeFromNames(id);\n delete this.objects[id];\n } else if (obj && !this.objects[id]) {\n // object was added\n this.objects[id] = obj;\n this.addToNames(obj);\n } else if (obj && this.objects[id].common) {\n // Object just changed\n this.objects[id] = obj;\n\n const n = this.getName(id);\n let nn = this.objects[id].common ? this.objects[id].common.name : '';\n\n if (nn && typeof nn === 'object') {\n nn = nn[getLanguage()] || nn.en;\n }\n\n if (n !== nn) {\n if (n) {\n this.removeFromNames(id);\n }\n if (nn) {\n this.addToNames(obj);\n }\n }\n }\n }\n\n async stopAllScripts(): Promise {\n const scripts = Object.keys(this.scripts);\n const promises: Promise[] = [];\n for (let i = 0; i < scripts.length; i++) {\n promises.push(this.stopScript(scripts[i]));\n }\n return Promise.all(promises).then(() => {});\n }\n\n convertBackStringifiedValues(\n id: string,\n state: ioBroker.State | null | undefined,\n ): ioBroker.State | null | undefined {\n if (\n state &&\n typeof state.val === 'string' &&\n this.objects[id]?.common &&\n (this.objects[id].common.type === 'array' || this.objects[id].common.type === 'object')\n ) {\n try {\n state.val = JSON.parse(state.val);\n } catch (err: any) {\n if (id.startsWith('javascript.') || id.startsWith('0_userdata.0')) {\n this.log.info(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n } else {\n this.log.debug(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n }\n }\n }\n return state;\n }\n\n prepareStateObjectSimple(id: string, state: ioBroker.StateValue, isAck: boolean): ioBroker.State {\n // otherwise, assume that the given state is the value to be set\n const oState: ioBroker.State = { val: state, ack: isAck } as ioBroker.State;\n\n return this.prepareStateObject(id, oState);\n }\n\n prepareStateObject(id: string, state: ioBroker.SettableState | null): ioBroker.State {\n let oState: ioBroker.State;\n\n if (state && typeof state === 'object') {\n oState = state as ioBroker.State;\n } else {\n oState = { val: null } as ioBroker.State;\n }\n\n if (this.config.subscribe) {\n return oState;\n }\n // set other values to have a full state object\n // mirrors logic from statesInRedis\n if (oState.ts === undefined) {\n oState.ts = Date.now();\n }\n\n if (oState.q === undefined) {\n oState.q = 0;\n }\n\n oState.from =\n typeof oState.from === 'string' && oState.from !== '' ? oState.from : `system.adapter.${this.namespace}`;\n\n if (oState.lc === undefined) {\n const formerStateValue = this.interimStateValues[id] || this.states[id];\n if (!formerStateValue) {\n oState.lc = oState.ts;\n } else {\n // isDeepStrictEqual works on objects and primitive values\n const hasChanged = !isDeepStrictEqual(formerStateValue.val, oState.val);\n if (!formerStateValue.lc || hasChanged) {\n oState.lc = oState.ts;\n } else {\n oState.lc = formerStateValue.lc;\n }\n }\n }\n\n return oState;\n }\n\n async getData(): Promise {\n await this.subscribeForeignObjectsAsync('*');\n\n if (!this.config.subscribe) {\n await this.subscribeForeignStatesAsync('*');\n } else {\n await this.subscribeStatesAsync('debug.to');\n await this.subscribeStatesAsync('scriptEnabled.*');\n }\n\n this.log.info('requesting all states');\n\n const statesPromise = this.getForeignStatesAsync('*')\n .then(res => {\n if (!res) {\n this.log.error(`Could not initialize states: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n if (!this.config.subscribe) {\n this.states = Object.assign(res, this.states);\n this.context.states = this.states;\n\n this.addGetProperty(this.states);\n }\n\n // remember all IDs – sort once to guarantee the sorted invariant\n // required by binaryIndexOf() / sortedInsert() used later\n const keys = Object.keys(res).sort();\n for (const id of keys) {\n this.stateIds.push(id);\n this.stateIdSet.add(id);\n }\n this.statesInitDone = true;\n this.log.info('received all states');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize states: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n this.log.info('requesting all objects');\n\n const objectsPromise = this.getObjectListAsync({ include_docs: true })\n .then(res => {\n if (!res?.rows) {\n this.log.error(`Could not initialize objects: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n this.objects = {};\n this.context.objects = this.objects;\n for (let i = 0; i < res.rows.length; i++) {\n const doc = res.rows[i]?.doc;\n if (!doc) {\n this.log.debug(`Got empty object for index ${i} (${res.rows[i].id})`);\n continue;\n }\n if (this.objects[doc._id] === undefined) {\n // If was already there, ignore\n this.objects[doc._id] = doc;\n }\n doc.type === 'enum' && this._enums.add(doc._id);\n\n // Collect all names\n this.addToNames(this.objects[doc._id]);\n }\n this.addGetProperty(this.objects);\n\n const systemConfig = this.objects['system.config'];\n this.password = systemConfig?.native?.javascriptPassword\n ? this.decrypt(systemConfig?.native.javascriptPassword)\n : '';\n\n // set language for debug messages\n if (systemConfig?.common?.language) {\n setLanguage(systemConfig.common.language);\n this.language = systemConfig.common.language;\n this.context.language = this.language as ioBroker.Languages;\n } else if (this.language) {\n setLanguage(this.language);\n this.context.language = this.language;\n }\n\n // try to use system coordinates\n if (this.config.useSystemGPS) {\n if (systemConfig?.common?.latitude || systemConfig?.common?.longitude) {\n this.config.latitude = systemConfig.common.latitude;\n this.config.longitude = systemConfig.common.longitude;\n } else if (this.latitude && this.longitude) {\n this.config.latitude = this.latitude;\n this.config.longitude = this.longitude;\n }\n }\n this.config.latitude = parseFloat(this.config.latitude as unknown as string);\n this.config.longitude = parseFloat(this.config.longitude as unknown as string);\n\n if (isNaN(this.config.latitude)) {\n this.log.warn(`Configured latitude is not a number - check (instance/system) configuration`);\n } else if (this.config.latitude < -90 || this.config.latitude > 90) {\n this.log.warn(\n `Configured latitude \"${this.config.latitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n if (isNaN(this.config.longitude)) {\n this.log.warn(`Configured longitude is not a number - check (instance/system) configuration`);\n } else if (this.config.longitude < -180 || this.config.longitude > 180) {\n this.log.warn(\n `Configured longitude \"${this.config.longitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n this.config.sunriseEvent ||= 'nightEnd';\n this.config.sunriseOffset ||= 0;\n this.config.sunriseLimitStart ||= '06:00';\n this.config.sunriseLimitEnd ||= '12:00';\n\n this.config.sunsetEvent ||= 'dusk';\n this.config.sunsetOffset ||= 0;\n this.config.sunsetLimitStart ||= '18:00';\n this.config.sunsetLimitEnd ||= '23:00';\n\n this.objectsInitDone = true;\n this.log.info('received all objects');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize objects: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n return Promise.all([statesPromise, objectsPromise]).then(() => {});\n }\n\n async createActiveObject(id: string, enabled: boolean): Promise {\n const idActive = `${this.namespace}.scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idActive]) {\n this.objects[idActive] = {\n _id: idActive,\n common: {\n name: `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'controls script activity',\n type: 'boolean',\n write: true,\n read: true,\n role: 'switch.active',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idActive, this.objects[idActive]);\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idActive);\n if (state && state.val !== enabled) {\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n }\n }\n }\n\n async createProblemObject(id: string): Promise {\n const idProblem = `${this.namespace}.scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idProblem]) {\n this.objects[idProblem] = {\n _id: idProblem,\n common: {\n name: `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'Script has a problem',\n type: 'boolean',\n expert: true,\n write: false,\n read: true,\n role: 'indicator.error',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idProblem, this.objects[idProblem]);\n await this.setForeignStateAsync(idProblem, false, true);\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idProblem);\n if (state && state.val !== false) {\n await this.setForeignStateAsync(idProblem, false, true);\n }\n }\n }\n\n addToNames(obj: ioBroker.Object): void {\n const id = obj._id;\n\n if (obj.common?.name) {\n let name = obj.common.name;\n if (name && typeof name === 'object') {\n name = name[getLanguage()] || name.en;\n }\n if (!name || typeof name !== 'string') {\n // TODO, take name in current language\n return;\n }\n\n if (!this.names[name]) {\n this.names[name] = id;\n } else {\n // convert to array\n if (!Array.isArray(this.names[name])) {\n this.names[name] = [this.names[name] as string];\n }\n\n (this.names[name] as string[]).push(id);\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.set(id, name);\n }\n }\n\n removeFromNames(id: string): void {\n const n = this.getName(id);\n\n if (n) {\n if (Array.isArray(this.names[n])) {\n const arr = this.names[n];\n const pos = arr.indexOf(id);\n if (pos > -1) {\n arr.splice(pos, 1);\n if (arr.length === 1) {\n this.names[n] = arr[0];\n }\n }\n } else {\n delete this.names[n];\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.delete(id);\n }\n }\n\n getName(id: string): string | null {\n return this.nameById.get(id) ?? null;\n }\n\n async installNpm(npmLib: string): Promise {\n return new Promise((resolve, reject) => {\n const path = __dirname;\n\n // Also, set the working directory (cwd) of the process instead of using --prefix\n // because that has ugly bugs on Windows\n const cmd = `npm install ${npmLib} --omit=dev`;\n this.log.info(`Installing ${npmLib} into ${__dirname} - cmd: ${cmd}`);\n\n // System call used for update of js-controller itself,\n // because during the installation the npm packet will be deleted too, but some files must be loaded even during the installation process.\n const child = this.mods.child_process.exec(cmd, {\n windowsHide: true,\n cwd: path,\n timeout: 120_000, // 2 minutes max – prevents infinite blocking\n });\n\n child.stdout?.on('data', buf => this.log.info(buf.toString('utf8')));\n\n child.stderr?.on('data', buf => this.log.error(buf.toString('utf8')));\n\n child.on('err', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n child.on('error', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n\n child.on('exit', (code: number /* , signal */) => {\n if (code) {\n this.log.error(`Cannot install ${npmLib}: ${code}`);\n reject(new Error(`Cannot install ${npmLib}: ${code}`));\n }\n // command succeeded\n resolve(code);\n });\n });\n }\n\n async installLibraries(): Promise {\n if (typeof this.config?.libraries !== 'string') {\n this.config.libraries = '';\n }\n\n const libraries: string[] = this.config.libraries\n .split(/[,;\\s]+/)\n .map(d => d.trim())\n .filter(d => d);\n\n this.log.debug(`Custom libraries in config: \"${this.config.libraries}\": ${JSON.stringify(libraries)}`);\n\n let installedNodeModules: string[] = [];\n const keepModules: string[] = [];\n\n // js-controller >= 6.x\n if (typeof this.listInstalledNodeModules === 'function') {\n installedNodeModules = await this.listInstalledNodeModules();\n\n this.log.debug(`Found installed libraries: ${JSON.stringify(installedNodeModules)}`);\n }\n\n for (const lib of libraries) {\n let depName = lib;\n let version = 'latest';\n\n if (depName.includes('@') && depName.lastIndexOf('@') > 0) {\n const parts = depName.split('@');\n version = parts.pop() ?? 'latest';\n depName = parts.join('@');\n }\n\n /** The real module name, because the dependency can be a URL too */\n let moduleName = depName;\n\n if (URL.canParse(depName)) {\n moduleName = await requestModuleNameByUrl(depName);\n\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\" (from ${depName})`);\n } else {\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\"`);\n }\n\n keepModules.push(moduleName);\n\n // js-controller >= 6.x\n if (typeof this.installNodeModule === 'function') {\n try {\n const result = await this.installNodeModule(depName, { version });\n if (result.success) {\n this.log.debug(`Installed custom library: \"${moduleName}@${version}\"`);\n\n const importedModule: any = await this.importNodeModule(moduleName);\n (this.mods as Record)[moduleName] = importedModule.default ?? importedModule;\n } else {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\"`);\n }\n } catch (err: unknown) {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\": ${err as Error}`);\n }\n } else if (!existsSync(`${__dirname}/node_modules/${depName}/package.json`)) {\n // js-controller < 6.x\n this.log.info(`Installing custom library (legacy mode): \"${lib}\"`);\n\n try {\n await this.installNpm(lib);\n this.log.info(`Installed custom npm package (legacy mode): \"${lib}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot install custom npm package \"${lib}\" (legacy mode): ${err.toString()}`);\n }\n }\n }\n\n // js-controller >= 6.x\n if (typeof this.uninstallNodeModule === 'function') {\n for (const installedNodeModule of installedNodeModules) {\n if (!keepModules.includes(installedNodeModule)) {\n try {\n await this.uninstallNodeModule(installedNodeModule);\n\n this.log.info(`Removed custom npm package: \"${installedNodeModule}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot remove custom npm package ${installedNodeModule}: ${err.toString()}`);\n }\n }\n }\n }\n }\n\n createVM(source: string, name: string, wrapAsync: boolean): false | JsScript {\n if (this.context.debugMode && name !== this.context.debugMode) {\n return false;\n }\n\n if (!this.context.debugMode) {\n const logSubscriptionsText =\n \"\\n;\\nlog(`registered ${__engine.__subscriptions} subscription${__engine.__subscriptions === 1 ? '' : 's'},\" +\n \" ${__engine.__schedules} schedule${__engine.__schedules === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsMessage} message${__engine.__subscriptionsMessage === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsLog} log${__engine.__subscriptionsLog === 1 ? '' : 's'}\" +\n \" and ${__engine.__subscriptionsFile} file subscription${__engine.__subscriptionsFile === 1 ? '' : 's'}`);\\n\";\n\n if (wrapAsync) {\n source = `(async () => {\\n${source}\\n${logSubscriptionsText}\\n})();`;\n } else {\n if (source.endsWith('export {};\\n')) {\n // If the source ends with \"export {};\" place the log subscriptions before it\n source = source.slice(0, -11); // remove \"export {};\\n\"\n source = `${source}\\n${logSubscriptionsText}\\nexport {};\\n`;\n } else {\n source = `${source}\\n${logSubscriptionsText}`;\n }\n }\n } else {\n if (wrapAsync) {\n source = `(async () => {debugger;\\n${source}\\n})();`;\n } else {\n source = `debugger;${source}`;\n }\n }\n\n try {\n const options: ScriptOptions = {\n filename: name,\n // displayErrors: true,\n // lineOffset: this.globalScriptLines\n };\n return {\n script: new Script(source, options),\n } as JsScript;\n } catch (err: unknown) {\n this.logError(name, `compile failed at`, err as Error);\n return false;\n }\n }\n\n execute(script: JsScript, name: string, engineType: ScriptType, verbose: boolean, debug: boolean): void {\n script.intervals = new Set();\n script.timeouts = new Set();\n script.schedules = [];\n script.wizards = [];\n script.name = name;\n script.engineType = engineType;\n script._id = Math.floor(Math.random() * 0xffffffff);\n script.subscribes = {};\n script.subscribesFile = {};\n script.setStatePerMinuteCounter = 0;\n script.setStatePerMinuteProblemCounter = 0;\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: false,\n ack: true,\n expire: 1000,\n });\n\n const sandbox = sandBox(script, name, verbose, debug, this.context);\n\n try {\n script.script.runInNewContext(sandbox, {\n filename: name,\n displayErrors: true,\n // lineOffset: this.globalScriptLines\n });\n } catch (err: unknown) {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'execute',\n });\n this.logError(name, 'Error by run:', err as Error);\n }\n }\n\n /**\n * Finds the index of `id` in a sorted array using binary search – O(log n).\n * Returns -1 if not found. Used instead of Array.indexOf on stateIds.\n */\n private binaryIndexOf(arr: string[], id: string): number {\n let lo = 0;\n let hi = arr.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n if (arr[mid] === id) {\n return mid;\n } else if (arr[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return -1;\n }\n\n /**\n * Inserts `id` into the sorted `stateIds` array using binary search – O(log n).\n * Much faster than push() + sort() which is O(n log n) on every insertion.\n */\n private sortedInsert(id: string): void {\n let lo = 0;\n let hi = this.stateIds.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (this.stateIds[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (this.stateIds[lo] !== id) {\n this.stateIds.splice(lo, 0, id);\n }\n }\n\n unsubscribe(id: string | RegExp | string[]): void {\n if (!id) {\n this.log.warn('unsubscribe: empty name');\n return;\n }\n\n if (Array.isArray(id)) {\n id.forEach(sub => this.unsubscribe(sub));\n return;\n }\n\n if (id.constructor && id.constructor.name === 'RegExp') {\n // adapter.log.warn('unsubscribe: todo - process regexp');\n return;\n }\n\n if (typeof id !== 'string') {\n this.log.error(`unsubscribe: invalid type of id - ${typeof id}`);\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (this.objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n if (this.adapterSubs[alive]) {\n this.adapterSubs[alive].delete(id);\n if (!this.adapterSubs[alive].size) {\n delete this.adapterSubs[alive];\n }\n }\n this.sendTo(a, 'unsubscribe', id);\n }\n }\n\n // Analyze if logs are still required or not\n updateLogSubscriptions(): void {\n let found = false;\n // go through all scripts and check if some script still requires logs\n Object.keys(this.logSubscriptions).forEach(scriptName => {\n if (!this.logSubscriptions?.[scriptName] || !this.logSubscriptions[scriptName].length) {\n delete this.logSubscriptions[scriptName];\n } else {\n found = true;\n }\n });\n\n if (this.requireLog) {\n if (found && !this.logSubscribed) {\n this.logSubscribed = true;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Subscribed to log messages (found logSubscriptions)`);\n } else if (!found && this.logSubscribed) {\n this.logSubscribed = false;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Unsubscribed from log messages (not found logSubscriptions)`);\n }\n }\n }\n\n async stopScript(name: string): Promise {\n if (!this.scripts[name]) {\n return false;\n }\n\n this.log.info(`${name}: Stopping script`);\n\n await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true);\n\n if (this.messageBusHandlers[name]) {\n delete this.messageBusHandlers[name];\n }\n\n if (this.tempDirectories[name]) {\n try {\n this.mods.fs.rmSync(this.tempDirectories[name], { recursive: true });\n\n this.log.debug(`${name}: Removed temp directory: ${this.tempDirectories[name]}`);\n } catch {\n this.log.warn(`${name}: Unable to remove temp directory: ${this.tempDirectories[name]}`);\n }\n\n delete this.tempDirectories[name];\n }\n\n if (this.logSubscriptions[name]) {\n delete this.logSubscriptions[name];\n this.updateLogSubscriptions();\n }\n\n if (this.scripts[name]) {\n // Remove from subscriptions\n this.context.isEnums = false;\n if (this.config.subscribe) {\n // check all subscribed IDs\n Object.keys(this.scripts[name].subscribes).forEach(id => {\n if (this.subscribedPatterns[id]) {\n this.subscribedPatterns[id] -= this.scripts[name].subscribes[id];\n if (this.subscribedPatterns[id] <= 0) {\n this.unsubscribeForeignStates(id);\n delete this.subscribedPatterns[id];\n if (this.states[id]) {\n delete this.states[id];\n }\n }\n }\n });\n }\n\n for (let i = this.subscriptions.length - 1; i >= 0; i--) {\n if (this.subscriptions[i].name === name) {\n const sub = this.subscriptions.splice(i, 1)[0];\n // Also remove from the O(1) dispatch structures – shared helper to keep the\n // exact-id classification identical to the subscribe side in sandbox.ts\n if (sub) {\n removeFromDispatchIndex(this.context, sub);\n }\n if (sub?.pattern.id) {\n this.unsubscribe(sub.pattern.id);\n }\n } else {\n if (\n (!this.context.isEnums && this.subscriptions[i].pattern.enumName) ||\n this.subscriptions[i].pattern.enumId\n ) {\n this.context.isEnums = true;\n }\n }\n }\n\n // check all subscribed files\n Object.keys(this.scripts[name].subscribesFile).forEach(key => {\n if (this.subscribedPatternsFile[key]) {\n this.subscribedPatternsFile[key] -= this.scripts[name].subscribesFile[key];\n if (this.subscribedPatternsFile[key] <= 0) {\n const [id, file] = key.split('$%$');\n void this.unsubscribeForeignFiles(id, file);\n delete this.subscribedPatternsFile[key];\n }\n }\n });\n for (let i = this.subscriptionsFile.length - 1; i >= 0; i--) {\n if (this.subscriptionsFile[i].name === name) {\n this.subscriptionsFile.splice(i, 1);\n }\n }\n\n for (let i = this.subscriptionsObject.length - 1; i >= 0; i--) {\n if (this.subscriptionsObject[i].name === name) {\n const sub = this.subscriptionsObject.splice(i, 1)[0];\n if (sub) {\n // Remove from O(1) dispatch map\n const mapSubs = this.subscriptionsObjectMap.get(sub.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(sub);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n this.subscriptionsObjectMap.delete(sub.pattern);\n }\n }\n this.unsubscribeForeignObjects(sub.pattern);\n }\n }\n }\n\n // Stop all timeouts\n for (const t of this.scripts[name].timeouts) {\n clearTimeout(t);\n }\n // Stop all intervals\n for (const t of this.scripts[name].intervals) {\n clearInterval(t);\n }\n // Stop all delayed states (setStateDelayed timers) – O(1) via reverse-index\n const scriptStateIds = this.timersByScript.get(name);\n if (scriptStateIds) {\n for (const stateId of scriptStateIds) {\n if (this.timers[stateId]) {\n for (let i = this.timers[stateId].length - 1; i >= 0; i--) {\n if (this.timers[stateId][i].scriptName === name) {\n clearTimeout(this.timers[stateId][i].t);\n this.timers[stateId].splice(i, 1);\n }\n }\n if (!this.timers[stateId].length) {\n delete this.timers[stateId];\n }\n }\n }\n this.timersByScript.delete(name);\n }\n // Stop all scheduled jobs\n for (let i = 0; i < this.scripts[name].schedules.length; i++) {\n if (this.scripts[name].schedules[i]) {\n const _name = this.scripts[name].schedules[i].name;\n if (!this.mods.nodeSchedule.cancelJob(this.scripts[name].schedules[i])) {\n this.log.error(`${name}: Error by canceling scheduled job \"${_name}\"`);\n }\n }\n }\n\n // Stop all time wizards jobs\n if (this.context.scheduler) {\n for (let i = 0; i < this.scripts[name].wizards.length; i++) {\n if (this.scripts[name].wizards[i]) {\n this.context.scheduler.remove(this.scripts[name].wizards[i]);\n }\n }\n }\n\n // if callback for on stop\n if (typeof this.scripts[name].onStopCb === 'function') {\n this.scripts[name].onStopTimeout =\n parseInt(this.scripts[name].onStopTimeout as unknown as string, 10) || 1000;\n\n await new Promise(resolve => {\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n if (timeout) {\n timeout = null;\n resolve(true);\n }\n }, this.scripts[name].onStopTimeout);\n\n try {\n this.scripts[name].onStopCb(() => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(true);\n }\n });\n } catch (err: unknown) {\n this.log.error(`${name}: error in onStop callback: ${err as Error}`);\n }\n });\n }\n\n delete this.scripts[name];\n return true;\n }\n return false;\n }\n\n async prepareScript(obj: ioBroker.ScriptObject): Promise {\n if (obj?.common?.enabled && this.debugState.scriptName === obj._id) {\n const id = obj._id;\n await this.debugStop();\n this.log.info(`${id}: Debugging was stopped, because started in normal mode`);\n return this.prepareScript(obj);\n }\n\n if (\n obj?.common?.source &&\n (obj.common.enabled || this.context.debugMode === obj._id) &&\n obj.common.engine === `system.adapter.${this.namespace}`\n ) {\n const name = obj._id;\n\n if (this.password && obj.native?.protected) {\n obj.common.source = decryptText(this.password, obj.common.source);\n }\n\n const nameId = name.substring(SCRIPT_CODE_MARKER.length);\n if (!nameId.length || nameId.endsWith('.')) {\n this.log.error(`${name}: Script name \"${name}\" is invalid!`);\n return false;\n }\n const idActive = `scriptEnabled.${nameId}`;\n if (!this.config.subscribe) {\n this.interimStateValues[idActive] = this.prepareStateObjectSimple(\n `${this.namespace}.${idActive}`,\n true,\n true,\n );\n }\n await this.setState(idActive, true, true);\n obj.common.engineType ||= '' as 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';\n\n if (\n (obj.common.engineType as ScriptType).toLowerCase().startsWith('javascript') ||\n (obj.common.engineType as ScriptType) === 'Blockly' ||\n (obj.common.engineType as ScriptType) === 'Rules'\n ) {\n // Javascript\n this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);\n\n let sourceFn = name;\n if (webstormDebug) {\n const fn = name.replace(/^script\\.js\\./, '').replace(/\\./g, '/');\n sourceFn = this.mods.path.join(webstormDebug, `${fn}.js`);\n }\n const createdScript = this.createVM(`${this.globalScript}\\n${obj.common.source}`, sourceFn, true);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n sourceFn,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n if (obj.common.engineType.toLowerCase().startsWith('typescript')) {\n // TypeScript\n this.log.info(`${name}: Compiling TypeScript source`);\n // The source code must be transformed in order to support top level await\n // and to force TypeScript to compile the code as a module\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, false);\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash = hashSource(tsSourceHashBase + this.globalDeclarations + transformedSource);\n\n let compiled: string;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n this.log.info(`${name}: source code did not change, using cached compilation result...`);\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n return false;\n }\n\n const errors = tsCompiled.diagnostics.map(diag => `${diag.annotatedSource}\\n`).join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(`${name}: TypeScript compilation had errors:\\n${errors}`);\n } else {\n this.log.info(`${name}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result || '';\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(name); // ignore the next change and don't restart scripts\n await this.extendForeignObjectAsync(name, {\n common: {\n sourceHash,\n compiled,\n },\n });\n } else {\n this.log.error(`${name}: TypeScript compilation failed:\\n${errors}`);\n return false;\n }\n }\n const createdScript: JsScript | false = this.createVM(`${this.globalScript}\\n${compiled}`, name, false);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n name,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n this.log.warn(`${obj._id}: Unknown engine type: ${obj.common.engineType}`);\n return false;\n }\n\n let _name: string;\n if (obj?._id) {\n _name = obj._id;\n const scriptIdName = _name.substring(SCRIPT_CODE_MARKER.length);\n\n if (!scriptIdName.length || scriptIdName.endsWith('.')) {\n this.log.error(`${obj._id}: Script name \"${_name}\" is invalid!`);\n return false;\n }\n await this.setState(`scriptEnabled.${scriptIdName}`, false, true);\n }\n if (!obj) {\n this.log.error('Invalid script');\n }\n return false;\n }\n\n async loadScriptById(id: string): Promise {\n let obj: ioBroker.ScriptObject | null | undefined;\n try {\n obj = (await this.getForeignObjectAsync(id)) as ioBroker.ScriptObject | null | undefined;\n } catch (err: any) {\n this.log.error(`${id}: Invalid script: ${err}`);\n }\n if (!obj) {\n return false;\n }\n return this.loadScript(obj);\n }\n\n async loadScript(nameOrObject: ioBroker.ScriptObject): Promise {\n // create states for scripts\n await this.createActiveObject(nameOrObject._id, !!nameOrObject?.common?.enabled);\n await this.createProblemObject(nameOrObject._id);\n return this.prepareScript(nameOrObject);\n }\n\n getAstroEvent(\n date: Date,\n astroEvent: AstroEventName,\n start: string,\n end: string,\n offsetMinutes: number | string,\n isDayEnd: boolean,\n latitude: number,\n longitude: number,\n useNextDay?: boolean,\n ): Date {\n let ts: Date = this.mods.suncalc.getTimes(date, latitude, longitude)[astroEvent];\n\n if (!ts || ts.getTime().toString() === 'NaN') {\n ts = isDayEnd ? getNextTimeEvent(end, useNextDay) : getNextTimeEvent(start, useNextDay);\n }\n ts.setMilliseconds(0);\n ts.setMinutes(ts.getMinutes() + (parseInt(offsetMinutes as unknown as string, 10) || 0));\n\n const [timeHoursStart, timeMinutesStart] = start.split(':');\n const nTimeHoursStart = parseInt(timeHoursStart, 10);\n const nTimeMinutesStart = parseInt(timeMinutesStart, 10) || 0;\n\n if (\n ts.getHours() < nTimeHoursStart ||\n (ts.getHours() === nTimeHoursStart && ts.getMinutes() < nTimeMinutesStart)\n ) {\n ts = getNextTimeEvent(start, useNextDay);\n ts.setSeconds(0);\n }\n\n const [timeHoursEnd, timeMinutesEnd] = end.split(':');\n const nTimeHoursEnd = parseInt(timeHoursEnd, 10);\n const nTimeMinutesEnd = parseInt(timeMinutesEnd, 10) || 0;\n\n if (ts.getHours() > nTimeHoursEnd || (ts.getHours() === nTimeHoursEnd && ts.getMinutes() > nTimeMinutesEnd)) {\n ts = getNextTimeEvent(end, useNextDay);\n ts.setSeconds(0);\n }\n\n // if event in the past\n if (date > ts && useNextDay) {\n // take the next day\n ts.setDate(ts.getDate() + 1);\n }\n return ts;\n }\n\n async timeSchedule(): Promise {\n const now = new Date();\n let hours = now.getHours();\n const minutes = now.getMinutes();\n if (this.timeSettings.format12) {\n if (hours > 12) {\n hours -= 12;\n }\n }\n let sHours: string;\n if (this.timeSettings.leadingZeros) {\n sHours = hours.toString().padStart(2, '0');\n } else {\n sHours = hours.toString();\n }\n\n await this.setState('variables.dayTime', {\n val: `${sHours}:${minutes.toString().padStart(2, '0')}`,\n ack: true,\n });\n\n now.setMinutes(now.getMinutes() + 1);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const interval = now.getTime() - Date.now();\n this.timeScheduleTimer = setTimeout(() => this.timeSchedule(), interval);\n }\n\n async dayTimeSchedules(): Promise {\n // Always clear any existing timer to prevent memory leaks on rapid re-scheduling\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n\n // get astrological event\n if (\n this.config.latitude === undefined ||\n this.config.longitude === undefined ||\n (this.config.latitude as unknown as string) === '' ||\n (this.config.longitude as unknown as string) === '' ||\n this.config.latitude === null ||\n this.config.longitude === null\n ) {\n this.log.error('Longitude or latitude does not set. Cannot use astro.');\n return;\n }\n\n // Calculate the next event today\n const todayDate = getAstroStartOfDay();\n const nowDate = new Date();\n\n const todaySunrise = this.getAstroEvent(\n todayDate,\n this.config.sunriseEvent,\n this.config.sunriseLimitStart,\n this.config.sunriseLimitEnd,\n this.config.sunriseOffset,\n false,\n this.config.latitude,\n this.config.longitude,\n );\n const todaySunset = this.getAstroEvent(\n todayDate,\n this.config.sunsetEvent,\n this.config.sunsetLimitStart,\n this.config.sunsetLimitEnd,\n this.config.sunsetOffset,\n true,\n this.config.latitude,\n this.config.longitude,\n );\n\n // Sunrise\n let sunriseTimeout = todaySunrise.getTime() - nowDate.getTime();\n if (sunriseTimeout < 0 || sunriseTimeout > 3600000) {\n sunriseTimeout = 3600000;\n }\n\n // Sunset\n let sunsetTimeout = todaySunset.getTime() - nowDate.getTime();\n if (sunsetTimeout < 0 || sunsetTimeout > 3600000) {\n sunsetTimeout = 3600000;\n }\n\n const isDayTime: ioBroker.State | null | undefined = await this.getStateAsync('variables.isDayTime');\n let isDay: boolean;\n if (sunriseTimeout < 5000) {\n isDay = true;\n } else if (sunsetTimeout < 5000) {\n isDay = false;\n } else {\n // check if in between\n isDay = nowDate.getTime() > todaySunrise.getTime() - 60000 && nowDate <= todaySunset;\n }\n\n const valDayTime = isDayTime ? !!isDayTime.val : false;\n if (valDayTime !== isDay || isDayTime === null) {\n await this.setState('variables.isDayTime', isDay, true);\n }\n\n const dayLightSaving: ioBroker.State | null | undefined =\n await this.getStateAsync('variables.isDaylightSaving');\n const isDayLightSaving = dstOffsetAtDate(nowDate) !== 0;\n const val = dayLightSaving ? !!dayLightSaving.val : false;\n\n if (val !== isDayLightSaving || dayLightSaving === null) {\n await this.setState('variables.isDaylightSaving', isDayLightSaving, true);\n }\n\n let nextTimeout = sunriseTimeout;\n if (sunriseTimeout > sunsetTimeout) {\n nextTimeout = sunsetTimeout;\n }\n nextTimeout = nextTimeout - 3000;\n if (nextTimeout < 3000) {\n nextTimeout = 3000;\n }\n\n this.dayScheduleTimer = setTimeout(() => this.dayTimeSchedules(), nextTimeout);\n }\n\n stopTimeSchedules(): void {\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n if (this.sunScheduleTimer) {\n clearTimeout(this.sunScheduleTimer);\n this.sunScheduleTimer = null;\n }\n if (this.timeScheduleTimer) {\n clearTimeout(this.timeScheduleTimer);\n this.timeScheduleTimer = null;\n }\n }\n\n async patchFont(): Promise {\n let stat: Stats | undefined;\n let dbFile: Buffer | undefined;\n let fileName = `${__dirname}/../admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n let jsonFileName = `${__dirname}/../admin/vsFont/codicon.json`;\n try {\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n if (!stat) {\n jsonFileName = `${__dirname}/admin/vsFont/codicon.json`;\n fileName = `${__dirname}/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n }\n const _dbFile = await this.readFileAsync(\n 'javascript.admin',\n `vs/base/browser/ui/codicons/codicon/codicon.ttf`,\n );\n if (_dbFile?.file) {\n dbFile = _dbFile.file as Buffer;\n }\n } catch {\n // ignore\n }\n\n if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {\n try {\n const buffer = Buffer.from(JSON.parse(readFileSync(jsonFileName).toString()), 'base64');\n\n const jszip = await import('jszip');\n const zip = await jszip.loadAsync(buffer);\n let data: ArrayBuffer | undefined;\n if (zip) {\n data = await zip.file('codicon.ttf')?.async('arraybuffer');\n if (data?.byteLength !== 73452) {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n } else {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n writeFileSync(fileName, Buffer.from(data));\n // upload this file\n await this.writeFileAsync(\n 'javascript.admin',\n 'vs/base/browser/ui/codicons/codicon/codicon.ttf',\n Buffer.from(data),\n );\n return true;\n } catch (err: unknown) {\n this.log.error(`Cannot patch font: ${err as Error}`);\n return false;\n }\n }\n return false;\n }\n\n async sunTimeSchedules(): Promise {\n if (this.config.createAstroStates) {\n if (!isNaN(this.config.longitude) && !isNaN(this.config.longitude)) {\n const calcDate = getAstroStartOfDay();\n\n const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);\n\n this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);\n\n for (const t in times) {\n try {\n const objId = `variables.astro.${t}`;\n\n await this.setObjectNotExistsAsync(objId, {\n type: 'state',\n common: {\n name: `Astro ${t}`,\n type: 'string',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (times[t] !== null && !isNaN(times[t].getTime())) {\n const timeFormatted = formatHoursMinutesSeconds(times[t]);\n await this.setState(objId, {\n val: timeFormatted,\n c: times[t].toISOString(),\n ack: true,\n });\n } else {\n await this.setState(objId, { val: null, c: 'n/a', ack: true, q: 0x01 });\n }\n } catch (err: unknown) {\n this.log.error(\n `[sunTimeSchedules] Unable to set state for astro time \"${t}\" (${times[t].getTime()}): ${err as Error}`,\n );\n }\n }\n\n const todayDate = new Date();\n todayDate.setHours(0);\n todayDate.setMinutes(0);\n todayDate.setSeconds(1);\n todayDate.setMilliseconds(0);\n todayDate.setDate(todayDate.getDate() + 1);\n\n this.log.debug(`[sunTimeSchedules] Next: ${todayDate.toISOString()}`);\n this.sunScheduleTimer = setTimeout(() => this.sunTimeSchedules(), todayDate.getTime() - Date.now());\n }\n } else {\n // remove astro states if disabled\n this.delObject('variables.astro', { recursive: true });\n }\n }\n\n /**\n * Redirects the virtual-tsc log output to the ioBroker log\n */\n tsLog = (message: string, severity?: ioBroker.LogLevel): void => {\n // shift the severities around, we don't care about the small details\n if (!severity || severity === 'info') {\n severity = 'debug';\n } else if (severity === 'debug') {\n // Don't spam build logs on Travis\n if (isCI) {\n return;\n }\n severity = 'silly';\n }\n\n if (this?.log) {\n this.log[severity](message);\n } else {\n console.log(`[${severity.toUpperCase()}] ${message}`);\n }\n };\n\n addGetProperty(object: Record): void {\n try {\n Object.defineProperty(object, 'get', {\n value: function (id: string): any {\n return this[id] || this[`${this.namespace}.${id}`];\n },\n enumerable: false,\n });\n } catch {\n console.error('Cannot install get property');\n }\n }\n\n /**\n * Add declarations for global scripts\n *\n * @param scriptID - The current script the declarations were generated from\n * @param declarations - Declarations from a script\n */\n provideDeclarationsForGlobalScript(scriptID: string, declarations: string): void {\n // Remember which declarations this global script had access to;\n // we need this so the editor doesn't show a duplicate identifier error\n if (this.globalDeclarations != null && this.globalDeclarations !== '') {\n this.knownGlobalDeclarationsByScript[scriptID] = this.globalDeclarations;\n }\n // and concatenate the global declarations for the next scripts\n this.globalDeclarations += `${declarations}\\n`;\n // remember all previously generated global declarations,\n // so global scripts can reference each other\n const globalDeclarationPath = 'global.d.ts';\n tsAmbient[globalDeclarationPath] = this.globalDeclarations;\n // make sure the next script compilation has access to the updated declarations\n this.tsServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n jsDeclarationServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n }\n\n fixLineNo(line: string): string {\n if (line.includes('javascript.js:')) {\n return line;\n }\n if (!/scripts?\\.js[.\\\\/]/.test(line)) {\n return line;\n }\n if (/:(\\d+):/.test(line)) {\n line = line.replace(\n /:(\\d+):/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}:`,\n ); // one line for 'async function ()'\n } else {\n line = line.replace(\n /:(\\d+)$/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}`,\n ); // one line for 'async function ()'\n }\n return line;\n }\n\n async debugStop(): Promise {\n if (this.debugState.child) {\n this.debugSendToInspector({ cmd: 'end' });\n this.debugState.endTimeout = setTimeout(() => {\n this.debugState.endTimeout = null;\n this.debugState.child?.kill('SIGTERM');\n }, 500);\n this.debugState.promiseOnEnd ||= Promise.resolve(0);\n } else {\n this.debugState.promiseOnEnd = Promise.resolve(0);\n }\n\n await this.debugState.promiseOnEnd;\n\n this.debugState.child = null;\n this.debugState.running = false;\n this.debugState.scriptName = '';\n if (this.debugState.endTimeout) {\n clearTimeout(this.debugState.endTimeout);\n this.debugState.endTimeout = null;\n }\n }\n\n async debugDisableScript(id: string | undefined): Promise {\n if (id) {\n const obj = this.objects[id];\n if (obj?.common?.enabled) {\n await this.extendForeignObjectAsync(obj._id, { common: { enabled: false } });\n }\n }\n }\n\n debugSendToInspector(message: any): void {\n if (this.debugState.child) {\n try {\n this.log.info(`send to debugger: ${message}`);\n this.debugState.child.send(message);\n } catch {\n void this.debugStop().then(() =>\n this.log.info(\n `${this.debugState.scriptName}: Debugging was stopped, because started in normal mode`,\n ),\n );\n }\n } else {\n this.log.error(`${this.debugState.scriptName}: Cannot send command to terminated inspector`);\n void this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `Cannot send command to terminated inspector`, id: 1 }),\n true,\n );\n }\n }\n\n debugStart(data: { breakOnStart?: boolean; scriptName?: string; adapter?: string }): void {\n if (Date.now() - this.debugState.started < 1000) {\n console.log('Start ignored');\n return;\n }\n\n this.debugState.started = Date.now();\n // stop the script if it's running\n void this.debugDisableScript(data.scriptName)\n .then(() => this.debugStop())\n .then(() => {\n if (data.adapter) {\n this.debugState.adapterInstance = data.adapter;\n this.debugState.scriptName = '';\n } else {\n this.debugState.adapterInstance = '';\n this.debugState.scriptName = data.scriptName as string;\n }\n\n this.debugState.breakOnStart = data.breakOnStart;\n\n this.debugState.promiseOnEnd = new Promise(resolve => {\n const options: ForkOptions = {\n stdio: ['ignore', 'inherit', 'inherit', 'ipc'],\n //stdio: ['pipe', 'pipe', 'pipe', 'ipc']\n };\n const args: string[] = [];\n if (this.debugState.adapterInstance) {\n args.push('--breakOnStart');\n }\n\n this.debugState.child = fork(`${__dirname}/lib/inspect.js`, args, options);\n\n /*debugState.child.stdout.setEncoding('utf8');\n debugState.child.stderr.setEncoding('utf8');\n debugState.child.stdout.on('data', childPrint);\n debugState.child.stderr.on('data', childPrint);*/\n\n this.debugState.child?.on(\n 'message',\n (\n message:\n | string\n | {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n },\n ) => {\n let oMessage: {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n };\n if (typeof message === 'string') {\n try {\n oMessage = JSON.parse(message);\n } catch {\n return this.log.error(`Cannot parse message from inspector: ${message}`);\n }\n } else {\n oMessage = message;\n }\n\n if (oMessage.cmd !== 'ready') {\n void this.setState('debug.from', JSON.stringify(oMessage), true);\n }\n\n switch (oMessage.cmd) {\n case 'ready': {\n this.debugSendToInspector({\n cmd: 'start',\n scriptName: this.debugState.scriptName,\n adapterInstance: this.debugState.adapterInstance,\n instance: this.instance,\n });\n break;\n }\n\n case 'watched': {\n //console.log(`WATCHED: ${JSON.stringify(oMessage)}`);\n break;\n }\n\n case 'paused': {\n this.debugState.paused = true;\n console.log(`host: PAUSED`);\n break;\n }\n\n case 'resumed': {\n this.debugState.paused = false;\n //console.log(`STARTED`);\n break;\n }\n\n case 'log': {\n console.log(`[${oMessage.severity}] ${oMessage.text}`);\n break;\n }\n\n case 'readyToDebug': {\n console.log(\n `host: readyToDebug (set breakpoints): [${oMessage.scriptId}] ${oMessage.script}`,\n );\n break;\n }\n }\n },\n );\n this.debugState.child?.on('error', error => {\n this.log.error(`Cannot start inspector: ${error}`);\n void this.setState('debug.from', JSON.stringify({ cmd: 'error', error }), true);\n });\n\n this.debugState.child?.on('exit', async (code: number): Promise => {\n if (code) {\n await this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `invalid response code: ${code}` }),\n true,\n );\n }\n await this.setState('debug.from', JSON.stringify({ cmd: 'debugStopped', code }), true);\n this.debugState.child = null;\n resolve(code);\n });\n });\n });\n }\n}\n\nfunction patternMatching(\n event: EventObj,\n patternFunctions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' },\n): boolean {\n const logic = patternFunctions.logic ?? 'and';\n for (let i = 0, len = patternFunctions.length; i < len; i++) {\n const result = patternFunctions[i](event);\n if (logic === 'and' && !result) {\n return false; // short-circuit AND – one false is enough\n }\n if (logic === 'or' && result) {\n return true; // short-circuit OR – one true is enough\n }\n }\n // AND: all passed → true; OR: none matched → false\n return logic === 'and';\n}\n\n// If started as allInOne mode => return function to create an instance\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new JavaScript(options);\n} else {\n // otherwise start the instance directly\n (() => new JavaScript())();\n}\n"]} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qCAAqD;AACrD,qCAAwF;AACxF,yCAAiD;AACjD,2DAA4D;AAC5D,6CAAkE;AAClE,yCAA8C;AAC9C,wDAAgC;AAEhC,kDAAoC;AACpC,oDAAsC;AACtC,8CAAgC;AAChC,oDAAsC;AACtC,gDAAkC;AAClC,kDAAoC;AACpC,kDAAoC;AACpC,8CAAgC;AAChC,4CAA8B;AAC9B,gDAAkC;AAClC,gDAAkC;AAClC,kEAAoD;AACpD,oDAAsC;AACtC,gDAAkC;AAElC,sCAAsC;AACtC,kDAAoC;AACpC,6CAA+B;AAC/B,sCAAsC;AACtC,yDAA2C;AAC3C,4DAA8C;AAE9C,yDAMgC;AAKhC,yCAAsC;AACtC,gEAAwC;AACxC,uCAAuD;AACvD,2CAAiE;AACjE,uEAAqE;AACrE,iEAKkC;AAClC,6DAIgC;AAChC,6CAAkE;AAClE,+CAAiE;AACjE,iEAAwG;AACxG,uCAAyC;AACzC,2DAM+B;AAe/B,yCAA2C;AAyB3C;;;;GAIG;AACH,MAAM,wBAAwB,GAAa;IACvC,gBAAgB;IAChB,OAAO;IACP,UAAU;IACV,YAAY;IACZ,iBAAiB;IACjB,QAAQ;CACX,CAAC;AAEF,MAAM,WAAW,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7G,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAExC,IAAI,aAAiC,CAAC;AAEtC,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AAE9B,sCAAsC;AACtC,IAAI,SAAiC,CAAC;AAEtC,yEAAyE;AACzE,iHAAiH;AACjH,qCAAqC;AACrC,qDAAqD;AACrD,MAAM,gBAAgB,GAAG,oBAAoB,WAAW,CAAC,OAAO,eAAe,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;AAErH,2IAA2I;AAC3I,SAAS,eAAe,CAAC,SAAe;IACpC,MAAM,QAAQ,GAAW,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACrD,+EAA+E;IAC/E,iFAAiF;IACjF,0EAA0E;IAC1E,gDAAgD;IAChD,MAAM,UAAU,GAAU,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,8CAA8C;IAC9C,+EAA+E;IAC/E,MAAM,SAAS,GAAW,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO;IACH,qDAAqD;IACrD,CAAC,SAAS,GAAG,yCAAyC;QACtD,uEAAuE;QACvE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,6CAA6C;QACtE,2EAA2E;QAC3E,2EAA2E;QAC3E,0DAA0D;QAC1D,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,8CAA8C;QAC9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,qCAAqC;YAC1C,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,GAAG,2BAA2B;YACtD,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW;YAC1D,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ;YACxC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ;YACxC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;YACtC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO;YACvC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO;YACvC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS;YACzC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY;YAC5C,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU;YAC1C,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW;YAC5C,mEAAmE;YACnE,qEAAqE;YAErE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,uBAAuB;YACpD,MAAM,CAAC;YACP,EAAE;YACF,EAAE,GAAG,2CAA2C;YAChD,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,wBAAwB;YAC7D,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;YAChC,CAAC,CAAC;YACF,EAAE;YACF,IAAI,GAAG,yDAAyD;QACpE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,gCAAgC;QACzE,SAAS,CAAC,eAAe,EAAE,CAC9B,CAAC;AACN,CAAC;AAED,MAAM,cAAc,GAAG,UAAU,CAAC;AAClC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAE9C,SAAS,aAAa,CAAC,GAA0B;IAC7C,OAAO,GAAG,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,YAAY,CAAC,GAA2B,EAAE,EAAU,EAAE,QAAgB;IAC3E,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,UAAoB;IACxD,MAAM,GAAG,GAAS,kBAAkB,EAAE,CAAC;IACvC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC/C,IACI,UAAU;QACV,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,UAAU,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,EACrG,CAAC;QACC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzB,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAE7B,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB;IACvB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAEjB,OAAO,CAAC,CAAC;AACb,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAU;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAEpC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,kFAAkF;AAClF,sIAAsI;AACtI,qDAAqD;AACrD,IAAA,yCAA2B,EAAC;IACxB,KAAK,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;CACzC,CAAC,CAAC;AAEH,+CAA+C;AAC/C,MAAM,mBAAmB,GAAW,IAAI,oBAAM,CAAC,iDAA4B,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACvG;;;GAGG;AAEH,MAAM,iBAAiB,GAA2B;IAC9C,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,gCAAgC;IACrC,GAAG,EAAE,uBAAuB;IAC5B,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,qBAAqB;CAC7B,CAAC;AAEF,SAAS,cAAc,CAAC,IAAY;IAChC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,SAAS,IAAI,EAAE,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,GAAW;IACrC,IAAI,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,QAAQ,KAAK,QAAQ,CAAC;QACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,UAAW,SAAQ,sBAAO;IAGX,OAAO,CAAoB;IAEpC,gBAAgB,GAMpB;QACA,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1C,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACxC,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QACvC,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1C,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;KAC7C,CAAC;IAEe,IAAI,CAAU;IAEvB,eAAe,GAAG,KAAK,CAAC;IACxB,cAAc,GAAG,KAAK,CAAC;IAEvB,OAAO,GAAoC,EAAE,CAAC;IAC9C,MAAM,GAAmC,EAAE,CAAC;IACnC,kBAAkB,GAAmC,EAAE,CAAC;IACxD,QAAQ,GAAa,EAAE,CAAC;IACzC,+DAA+D;IAC9C,UAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;IAEpC,aAAa,GAAyB,EAAE,CAAC;IAC1D;;;OAGG;IACc,gBAAgB,GAAsC,IAAI,GAAG,EAAE,CAAC;IACjF;;;OAGG;IACc,qBAAqB,GAAyB,EAAE,CAAC;IACjD,iBAAiB,GAA6B,EAAE,CAAC;IACjD,mBAAmB,GAAsB,EAAE,CAAC;IAC7D,wEAAwE;IACvD,sBAAsB,GAAmC,IAAI,GAAG,EAAE,CAAC;IACpF,mGAAmG;IAClF,mBAAmB,GAA0B,IAAI,GAAG,EAAE,CAAC;IACvD,kBAAkB,GAA2B,EAAE,CAAC;IAChD,sBAAsB,GAA2B,EAAE,CAAC;IACpD,WAAW,GAAgC,EAAE,CAAC;IAC9C,MAAM,GAAgD,EAAE,CAAC;IAC1E,kGAAkG;IACjF,cAAc,GAA6B,IAAI,GAAG,EAAE,CAAC;IACtE,oEAAoE;IACnD,MAAM,GAAgB,IAAI,GAAG,EAAE,CAAC;IAChC,KAAK,GAA0C,EAAE,CAAC,CAAC,WAAW;IAC/E,wDAAwD;IACvC,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC1C,OAAO,GAA6B,EAAE,CAAC;IAChD,QAAQ,GAAW,EAAE,CAAC;IACb,kBAAkB,GAG/B,EAAE,CAAC;IACU,gBAAgB,GAQ7B,EAAE,CAAC;IACU,eAAe,GAAqC,EAAE,CAAC,CAAC,aAAa;IACrE,6BAA6B,GAA4B,EAAE,CAAC;IAE7E,oCAAoC;IAC5B,aAAa,GAAG,KAAK,CAAC;IAEtB,YAAY,GAGhB,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAEpC,gBAAgB,GAA0B,IAAI,CAAC,CAAC,gCAAgC;IAChF,gBAAgB,GAA0B,IAAI,CAAC,CAAC,gCAAgC;IAChF,iBAAiB,GAA0B,IAAI,CAAC,CAAC,gCAAgC;IAEjF,SAAS,GAAG,EAAE,CAAC,CAAC,uBAAuB;IAEvC,MAAM,CAAqB;IAE3B,YAAY,GAA2B,EAAE,CAAC;IAE1C,0BAA0B,GAA0B,IAAI,CAAC;IAEjE;;;;OAIG;IACc,iBAAiB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACpE,gFAAgF;IACxE,yBAAyB,GAA4B,EAAE,CAAC;IAExD,YAAY,GAAG,EAAE,CAAC;IAC1B,oDAAoD;IAC5C,kBAAkB,GAAG,EAAE,CAAC;IAChC,gDAAgD;IAChD,8DAA8D;IACtD,+BAA+B,GAA2B,EAAE,CAAC;IAC7D,iBAAiB,GAAG,CAAC,CAAC;IAC9B,iGAAiG;IACzF,cAAc,GAAG,CAAC,CAAC;IAC3B,mCAAmC;IAC3B,QAAQ,CAAS;IAER,kBAAkB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAErD,UAAU,GAAe;QAC7B,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,KAAK;KACjB,CAAC;IAEF,YAAY,UAAmC,EAAE;QAC7C,OAAO,GAAG;YACN,GAAG,OAAO;YACV,IAAI,EAAE,YAAY,EAAE,eAAe;YACnC,aAAa,EAAE,IAAI;YACnB;;;eAGG;YACH,KAAK,EAAE,CAAC,GAAU,EAAW,EAAE;gBAC3B,kEAAkE;gBAClE,mEAAmE;gBACnE,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACvC,MAAM,qBAAqB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBACpE,IAAI,qBAAqB,GAAG,CAAC,CAAC,EAAE,CAAC;wBAC7B,yBAAyB;wBACzB,IAAI,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;wBAC5D,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC9D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;wBAEzC,mCAAmC;wBACnC,kEAAkE;wBAClE,OAAO,IAAI,CAAC;oBAChB,CAAC;oBACD,+DAA+D;oBAC/D,8EAA8E;oBAC9E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,EAAE,CAAC;wBACrE,2FAA2F;wBAC3F,0CAA0C;wBAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,oHAAoH,CACvH,CAAC;wBACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;wBACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAE1B,kEAAkE;wBAClE,OAAO,IAAI,CAAC;oBAChB,CAAC;gBACL,CAAC;gBAED,OAAO,KAAK,CAAC;YACjB,CAAC;SACJ,CAAC;QAEF,KAAK,CAAC,OAAyB,CAAC,CAAC;QAEjC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,IAAI,GAAG;YACR,EAAE,EAAE,EAAe;YACnB,aAAa,EAAE,EAA2B;YAC1C,KAAK;YACL,MAAM;YACN,GAAG;YACH,MAAM;YACN,IAAI;YACJ,KAAK;YACL,KAAK;YACL,GAAG;YACH,EAAE;YACF,IAAI;YACJ,IAAI;YACJ,aAAa;YACb,MAAM;YACN,IAAI;YAEJ,OAAO;YACP,KAAK;YACL,WAAW;YACX,YAAY;SACf,CAAC;QAEF,gDAAgD;QAChD,IAAI,SAA6B,CAAC;QAClC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC3C,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC;oBACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACvC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBACJ,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACpC,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,GAAG;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,6BAA6B,EAAE,IAAI,CAAC,6BAA6B;YAEjE,OAAO,EAAE,KAAK,EAAE,kCAAkC;YAClD,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,IAAI,EAAE,eAAe;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAE/B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,4BAA4B,EAAE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1E,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,SAAS;YACT,yBAAyB,EAAzB,wCAAyB;YACzB,OAAO,EAAE,IAAmC;YAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,oBAAoB,EAAE,KAAK;SAC9B,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAM,CAAC,sCAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,GAA4B;QACzD,6FAA6F;QAC7F,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,sDAAsD;YACtD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAsB,CAAC;YAC1C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnC,OAAO;QACX,CAAC;QAED,+DAA+D;QAC/D,gDAAgD;QAChD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,GAAG,EAAE,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YAC3B,CAAC;YACD,OAAO;QACX,CAAC;QAED,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,cAAc;YACd,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAEnC,yBAAyB;YACzB,IAAI,GAAG,EAAE,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,uEAAuE;QACvE,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACpB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;gBAC7E,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QAED,IAAI,EAAE,KAAK,eAAe,IAAI,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAClD,kCAAkC;YAClC,IAAA,mBAAW,EAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAA8B,CAAC;QAChE,CAAC;QAED,kDAAkD;QAClD,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,oBAAoB,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QAC5G,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,GAAmC,CAAC,CAAC;QAErE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,8BAA8B;QAEjE,oFAAoF;QACpF,gFAAgF;QAChF,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,0BAA0B;YAC1B,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;iBACxB,IAAI,CAAC,KAAK,CAAC,EAAE;gBACV,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;gBAC5B,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACR,YAAY;YAChB,CAAC,CAAC,CAAC;QACX,CAAC;QAED,wDAAwD;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACD,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC1B,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvC,0BAA0B;YAC1B,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,mFAAmF;gBACnF,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;oBACvE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;YACL,CAAC;iBAAM,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;gBACzE,+DAA+D;gBAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAE1B,uCAAuC;gBACvC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAEpC,uCAAuC;gBACvC,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBACpC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,wCAAwC;YACxC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,6CAA6C;gBAC7C,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;oBACvE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;YACL,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;gBACnE,oDAAoD;gBACpD,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACrB,+BAA+B;oBAC/B,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;gBAClC,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;YACrD,qBAAqB;YACrB,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;oBAChE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,mBAAmB;gBACnB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;oBAC5D,4BAA4B;oBAC5B,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACxD,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;gBAED,IACI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;oBACjD,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE;wBAC3D,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,CAAC,EAC/D,CAAC;oBACC,kBAAkB;oBAClB,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;wBAC7F,2BAA2B;wBAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC9B,CAAC;gBACL,CAAC;qBAAM,IACH,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;oBACjD,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE;wBAC3D,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,CAAC,EAC/D,CAAC;oBACC,iBAAiB;oBAEjB,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;wBACjF,eAAe;wBACf,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBAClC,CAAC;gBACL,CAAC;qBAAM,IACH,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE;oBACxD,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,EAChE,CAAC;oBACC,uEAAuE;oBACvE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9E,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC/B,+EAA+E;wBAC/E,qCAAqC;wBACrC,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC3B,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;wBACjC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,aAAa,CAAC,EAAU,EAAE,KAA6B;QACnD,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5C,sDAAsD;YACtD,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,OAAO;QACX,CAAC;QAED,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,WAAW,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,CAAC;YACD,OAAO;QACX,CAAC;QAED,+DAA+D;QAC/D,gDAAgD;QAChD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YAC5B,CAAC;YACD,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAsC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,QAAQ,EAAE,CAAC;gBACX,2BAA2B;gBAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;oBAClF,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;wBAC1D,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE;qBACjC,CAAC,CAAC;gBACP,CAAC;gBAED,sGAAsG;gBACtG,KAAI,gBAAiB,QAAQ,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChF,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;wBACvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC5B,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;4BACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;4BACxE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;wBACrC,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,KAAI,iBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,GAAG,EAAoB,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC;QAED,kCAAkC;QAClC,wEAAwE;QACxE,iEAAiE;QACjE,uFAAuF;QACvF,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAE/E,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,IAAI,SAAS,GAAoB,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,GAAa,EAAE;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,SAAS,GAAG,IAAA,4BAAiB,EACzB,IAAI,CAAC,OAAO,EACZ,EAAE,EACF,IAAI,CAAC,4BAA4B,CAAC,EAAE,EAAE,KAAK,CAAC,EAC5C,IAAI,CAAC,4BAA4B,CAAC,EAAE,EAAE,QAAQ,CAAC,CAClD,CAAC;YACN,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,GAAG,EAAE,uBAAuB,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAC3F,IAAI,CAAC;wBACD,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC7B,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC3D,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,EAAE,uBAAuB,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC3F,IAAI,CAAC;oBACD,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,YAAY,CAAC,EAAU,EAAE,QAAgB,EAAE,IAAmB;QAC1D,yCAAyC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACD,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACnD,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAoB;QAC/B,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAC/C,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;YAC3C,CAAC;YACD,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAyB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;gBAAS,CAAC;YACP,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACjC,QAAQ,EAAE,CAAC;YACf,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAyC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;QAC/G,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAyC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;QAE9G,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,MAAM,cAAc,GAAsC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAExF,CAAC;YACF,IAAI,cAAc,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;gBAChD,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE;oBACtB,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBACrC,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;4BAC5C,IACI,SAAS,CAAC,UAAU,EAAE,MAAM;gCAC5B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;gCAC1C,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EACpC,CAAC;gCACC,6CAA6C;gCAC7C,IACI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACrC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAC/C,EACH,CAAC;oCACC,OAAO,IAAI,CAAC;gCAChB,CAAC;gCACD,6EAA6E;gCAC7E,MAAM,iBAAiB,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gCAC1D,IACI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAC7B,KAAK,CAAC,EAAE,CACJ,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC;oCACnC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAClD,EACH,CAAC;oCACC,OAAO,IAAI,CAAC;gCAChB,CAAC;gCACD,+DAA+D;gCAC/D,OAAO,KAAK,CAAC;4BACjB,CAAC;wBACL,CAAC;wBAED,uCAAuC;wBACvC,OAAO,IAAI,CAAC;oBAChB,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,4GAA4G;IACpG,KAAK,CAAC,mBAAmB,CAAC,EAAU;QACxC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,0BAAW,CAAC,cAAc,CAA6B,IAAI,EAAE,EAAE,CAAC,CAAC;YACpF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClG,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACK,KAAK,CAAC,oBAAoB,CAC9B,QAAgB,EAChB,OAKI,EAAE;QAEN,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,QAAQ,CAAC;QAC3E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,2EAA2E;YAC3E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,+CAA0B,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3F,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAA,4CAAuB,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/F,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;YACnC,CAAC;YACD,qEAAqE;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAClF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC;QACD,sFAAsF;QACtF,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,IAAA,2CAAsB,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,IAAA,+CAA0B,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,sBAAsB;QAChC,4EAA4E;QAC5E,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO;QACX,CAAC;QACD,0EAA0E;QAC1E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,QAAQ,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAU,EAAE,CAAC;YACtF,MAAM,EAAE,GAAG,IAAA,4CAAuB,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,EAAE,EAAE,CAAC;gBACL,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,0BAAW,CAAC,oBAAoB,CACtD,IAAI,EACJ,EAAE,EACF,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;oBAChB,IAAI,IAAI,EAAE,CAAC;wBACP,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;wBACvE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,SAAS,WAAW,CAAC,CAAC;oBAC3D,CAAC;yBAAM,CAAC;wBACJ,6BAA6B;wBAC7B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,SAAS,eAAe,CAAC,CAAC;oBAC/D,CAAC;gBACL,CAAC,CACJ,CAAC;gBACF,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjD,uFAAuF;gBACvF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,sCAAsC,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7F,CAAC;YACN,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,yBAAyB,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;IAED,qEAAqE;IAC7D,KAAK,CAAC,wBAAwB;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACrD,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC;gBACD,MAAM,WAAW,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1G,CAAC;QACL,CAAC;IACL,CAAC;IAED,SAAS,CAAC,GAAqB;QAC3B,QAAQ,GAAG,EAAE,OAAO,EAAE,CAAC;YACnB,6BAA6B;YAC7B,KAAK,UAAU,CAAC;YAChB,KAAK,cAAc;gBACf,IACI,GAAG,CAAC,OAAO;oBACX,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI;wBAC1B,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;wBAClC,cAAc,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS;wBACvD,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,EAC9C,CAAC;oBACC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBAChD,qDAAqD;wBACrD,IACI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;4BACpD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EACpD,CAAC;4BACC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gCACjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gCAEhC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gCAEpF,IAAI,CAAC;oCACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;wCACf,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAW,EAAE,EAAE;4CACvD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gDAClB,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;4CACvE,CAAC;4CAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wCAC7D,CAAC,CAAC,CAAC;oCACP,CAAC;yCAAM,CAAC;wCACJ,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAW,EAAE,EAAE;4CACvD,OAAO,CAAC,OAAO;gDACX,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;wCAC3E,CAAC,CAAC,CAAC;oCACP,CAAC;gCACL,CAAC;gCAAC,OAAO,GAAY,EAAE,CAAC;oCACpB,KAAK,IAAI,CAAC,QAAQ,CACd,iBAAiB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC5D,IAAI,EACJ,IAAI,CACP,CAAC;oCACF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAY,CAAC,CAAC;gCAC5D,CAAC;4BACL,CAAC,CAAC,CAAC;wBACP,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,MAAM;YAEV,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,8BAA8B;gBAC9B,MAAM,OAAO,GAA2B,EAAE,CAAC;gBAE3C,6CAA6C;gBAC7C,IAAI,CAAC;oBACD,MAAM,cAAc,GAAG,IAAA,uCAAqB,EAAC,gCAAW,CAAC,CAAC;oBAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACL,qBAAqB;gBACzB,CAAC;gBAED,6EAA6E;gBAC7E,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAElC,oEAAoE;gBACpE,KAAK,MAAM,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC;oBAChF,OAAO,CAAC,GAAG,iBAAiB,OAAO,CAAC,GAAG,IAAI,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,CAAC;gBACnG,CAAC;gBAED,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAClE,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBACd,MAAM,aAAa,GACf,QAAQ,CACJ,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;wBACnC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa;wBAC3B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAC/B,EAAE,CACL,IAAI,CAAC,CAAC;oBACX,MAAM,YAAY,GACd,QAAQ,CACJ,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;wBAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;wBAC1B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAC9B,EAAE,CACL,IAAI,CAAC,CAAC;oBACX,MAAM,SAAS,GACX,UAAU,CACN,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CACtF,IAAI,CAAC,CAAC;oBACX,MAAM,QAAQ,GACV,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;wBAC5F,CAAC,CAAC;oBACN,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;oBACnC,IAAI,WAAW,GAA6D,EAG3E,CAAC;oBACF,IAAI,CAAC;wBACD,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACzE,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAY,EAAE,CAAC,CAAC;oBACnE,CAAC;oBACD,IAAI,WAAW,EAAE,CAAC;wBACd,IAAI,CAAC;4BACD,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CACxC,KAAK,EACL,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EACpD,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC9D,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAC1D,aAAa,EACb,KAAK,EACL,QAAQ,EACR,SAAS,EACT,IAAI,CACP,CAAC;4BACF,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CACvC,KAAK,EACL,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAClD,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5D,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EACxD,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,IAAI,CACP,CAAC;wBACN,CAAC;wBAAC,OAAO,GAAY,EAAE,CAAC;4BACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAY,EAAE,CAAC,CAAC;wBACnE,CAAC;oBACL,CAAC;oBAED,MAAM,MAAM,GAA+E,EAAE,CAAC;oBAC9F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACJ,WAAiD,CAAC,CAAC,CAAC;wBACpD,WAAiD,CAAC,CAAC,CAAC,CAC5D,CAAC;oBACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACf,MAAM,SAAS,GACV,WAAwD,CAAC,GAAG,CAAC,KAAK,IAAI;4BACvE,CAAC,KAAK,CAAE,WAA+C,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;wBAE5E,MAAM,CAAC,GAAG,CAAC,GAAG;4BACV,WAAW,EAAE,SAAS;4BACtB,UAAU,EAAE,SAAS;gCACjB,CAAC,CAAC,yBAAyB,CAAE,WAA+C,CAAC,GAAG,CAAC,CAAC;gCAClF,CAAC,CAAC,KAAK;4BACX,IAAI,EAAE,SAAS;gCACX,CAAC,CAAE,WAA+C,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;gCACrE,CAAC,CAAC,KAAK;yBACd,CAAC;oBACN,CAAC,CAAC,CAAC;oBAEH,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;wBACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC7D,CAAC;gBACL,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACf,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBACd,MAAM,SAAS,GACX,UAAU,CACN,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CACtF,IAAI,CAAC,CAAC;oBACX,MAAM,QAAQ,GACV,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;wBAC5F,CAAC,CAAC;oBACN,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;oBAEnC,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;oBAC3E,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,EAAE,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;oBAC1F,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;oBACpF,MAAM,aAAa,GACf,QAAQ,CACJ,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;wBACnC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa;wBAC3B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAC/B,EAAE,CACL,IAAI,CAAC,CAAC;oBACX,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAClC,KAAK,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,KAAK,EACL,QAAQ,EACR,SAAS,EACT,IAAI,CACP,CAAC;oBAEF,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBACxE,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,EAAE,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBACvF,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;oBACjF,MAAM,YAAY,GACd,QAAQ,CACJ,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;wBAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;wBAC1B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAC9B,EAAE,CACL,IAAI,CAAC,CAAC;oBACX,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CACjC,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,IAAI,CACP,CAAC;oBAEF,MAAM,gBAAgB,GAAG,WAAW,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/E,MAAM,eAAe,GAAG,UAAU,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;oBAE5E,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,sBAAsB,YAAY,aAAa,iBAAiB,UAAU,eAAe,aAAa,aAAa,MAAM,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAClL,CAAC;oBACF,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,sBAAsB,WAAW,aAAa,gBAAgB,UAAU,cAAc,aAAa,YAAY,MAAM,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAC5K,CAAC;oBAEF,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;wBACf,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX;4BACI,WAAW,EAAE;gCACT,WAAW,EAAE,gBAAgB;gCAC7B,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK;gCAC7E,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE;6BAClC;4BACD,UAAU,EAAE;gCACR,WAAW,EAAE,eAAe;gCAC5B,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK;gCAC3E,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE;6BACjC;yBACJ,EACD,GAAG,CAAC,QAAQ,CACf,CAAC;oBACN,CAAC;gBACL,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC1B,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChE,MAAM;YACV,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,iDAAiD;gBACjD,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;gBAChC,MAAM;YACV,CAAC;YAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBACxB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX;wBACI,OAAO,EAAE,IAAA,wCAAyB,GAAE;wBACpC,GAAG,EAAH,eAAG;qBACN,EACD,GAAG,CAAC,QAAQ,CACf,CAAC;gBACN,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACpB,uEAAuE;gBACvE,mFAAmF;gBACnF,uFAAuF;gBACvF,KAAK,CAAC,KAAK,IAAI,EAAE;oBACb,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;wBAChB,OAAO;oBACX,CAAC;oBACD,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACvC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;oBACjC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;wBAClE,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO;qBACvC,CAAC,CAAC;oBACH,qHAAqH;oBACrH,IACI,CAAC,MAAM;wBACP,CAAC,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,EAC5F,CAAC;wBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACnF,OAAO;oBACX,CAAC;oBACD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC/F,OAAO;oBACX,CAAC;oBAED,IAAI,GAAW,CAAC;oBAChB,MAAM,WAAW,GAAoC;wBACjD,cAAc,EAAE,kBAAkB;qBACrC,CAAC;oBACF,IAAI,OAAgC,CAAC;oBAErC,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;wBAC3B,GAAG,GAAG,uCAAuC,CAAC;wBAC9C,WAAW,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;wBAClC,WAAW,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;wBAChD,gFAAgF;wBAChF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GACrD,IAAA,+CAA4B,EAAC,QAAQ,CAAC,CAAC;wBAC3C,MAAM,cAAc,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAA,4CAAyB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7E,OAAO,GAAG;4BACN,KAAK,EAAE,SAAS;4BAChB,UAAU,EAAE,IAAI;4BAChB,MAAM,EAAE,KAAK;4BACb,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC7C,QAAQ,EAAE,iBAAiB;4BAC3B,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC9D,CAAC;oBACN,CAAC;yBAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBAC/B,GAAG,GAAG,0EAA0E,CAAC;wBACjF,IAAI,MAAM,EAAE,CAAC;4BACT,WAAW,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;wBACnD,CAAC;wBACD,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjG,CAAC;yBAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;wBACjC,GAAG,GAAG,2CAA2C,CAAC;wBAClD,WAAW,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;wBAC/C,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjG,CAAC;yBAAM,CAAC;wBACJ,GAAG,GAAG,GAAG,OAAO,IAAI,2BAA2B,mBAAmB,CAAC;wBACnE,IAAI,MAAM,EAAE,CAAC;4BACT,WAAW,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;wBACnD,CAAC;wBACD,OAAO,GAAG;4BACN,KAAK,EAAE,SAAS;4BAChB,QAAQ;4BACR,MAAM,EAAE,KAAK;4BACb,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACnC,wEAAwE;4BACxE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACnD,CAAC;oBACN,CAAC;oBAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACrC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC7C,WAAW,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;oBAElD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;oBAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,oBAAoB,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACvF,OAAO;oBACX,CAAC;oBACD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;oBAEpD,IAAI,CAAC;wBACD,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAC7B,GAAG,EACH;4BACI,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE,WAAW;4BACpB,OAAO,EAAE,MAAM;4BACf,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACxF,EACD,GAAG,CAAC,EAAE;4BACF,IAAI,IAAI,GAAG,EAAE,CAAC;4BACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gCAC7B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;4BAC7B,CAAC,CAAC,CAAC;4BACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gCACf,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oCACzB,IAAI,CAAC;wCACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wCAChC,IAAI,OAAe,CAAC;wCACpB,IAAI,UAAmB,CAAC;wCACxB,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;4CAC3B,MAAM,UAAU,GAAG,IAAA,qDAAkC,EAAC,MAAM,CAAC,CAAC;4CAC9D,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;4CAC7B,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;wCACvC,CAAC;6CAAM,CAAC;4CACJ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;4CAC7C,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;4CACjC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;wCACrC,CAAC;wCACD,IAAI,CAAC,OAAO,IAAI,CAAE,UAAoC,EAAE,MAAM,EAAE,CAAC;4CAC7D,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,yBAAyB,EAAE,EACpC,GAAG,CAAC,QAAQ,CACf,CAAC;wCACN,CAAC;6CAAM,CAAC;4CACJ,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX;gDACI,OAAO,EAAE,IAAI;gDACb,OAAO;gDACP,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;6CACxC,EACD,GAAG,CAAC,QAAQ,CACf,CAAC;wCACN,CAAC;oCACL,CAAC;oCAAC,MAAM,CAAC;wCACL,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAC3C,GAAG,CAAC,QAAQ,CACf,CAAC;oCACN,CAAC;gCACL,CAAC;qCAAM,CAAC;oCACJ,IAAI,MAAM,GAAG,EAAE,CAAC;oCAChB,IAAI,CAAC;wCACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wCACnC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oCAChE,CAAC;oCAAC,MAAM,CAAC;wCACL,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oCACpC,CAAC;oCACD,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX;wCACI,KAAK,EAAE,GAAG,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,GAAG;qCAChF,EACD,GAAG,CAAC,QAAQ,CACf,CAAC;gCACN,CAAC;4BACL,CAAC,CAAC,CAAC;wBACP,CAAC,CACJ,CAAC;wBAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;4BAC3B,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,sBAAsB,GAAG,CAAC,OAAO,EAAE,EAAE,EAC9C,GAAG,CAAC,QAAQ,CACf,CAAC;wBACN,CAAC,CAAC,CAAC;wBAEH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;4BACnB,GAAG,CAAC,OAAO,EAAE,CAAC;4BACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC7F,CAAC,CAAC,CAAC;wBAEH,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBACtB,GAAG,CAAC,GAAG,EAAE,CAAC;oBACd,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,sBAAuB,KAAe,CAAC,QAAQ,EAAE,EAAE,EAAE,EAC9D,GAAG,CAAC,QAAQ,CACf,CAAC;oBACN,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;gBACL,MAAM;YACV,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACvB,wDAAwD;gBACxD,2EAA2E;gBAC3E,+EAA+E;gBAC/E,KAAK,CAAC,KAAK,IAAI,EAAE;oBACb,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;wBAChB,OAAO;oBACX,CAAC;oBACD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;wBAClE,aAAa,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM;wBAClC,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO;wBACpC,mBAAmB,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY;wBAC9C,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,cAAc;qBAC9C,CAAC,CAAC;oBACH,qHAAqH;oBACrH,IACI,CAAC,MAAM;wBACP,CAAC,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,EAC5F,CAAC;wBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACnF,OAAO;oBACX,CAAC;oBAED,IAAI,GAAW,CAAC;oBAChB,MAAM,WAAW,GAA2B;wBACxC,cAAc,EAAE,kBAAkB;qBACrC,CAAC;oBAEF,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;wBAC3B,GAAG,GAAG,qCAAqC,CAAC;wBAC5C,WAAW,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;wBAClC,WAAW,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;oBACpD,CAAC;yBAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBAC/B,GAAG,GAAG,gEAAgE,CAAC;wBACvE,IAAI,MAAM,EAAE,CAAC;4BACT,WAAW,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;wBACnD,CAAC;oBACL,CAAC;yBAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;wBACjC,GAAG,GAAG,iCAAiC,CAAC;wBACxC,WAAW,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;oBACnD,CAAC;yBAAM,CAAC;wBACJ,GAAG,GAAG,GAAG,OAAO,IAAI,2BAA2B,SAAS,CAAC;wBACzD,IAAI,MAAM,EAAE,CAAC;4BACT,WAAW,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;wBACnD,CAAC;oBACL,CAAC;oBAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;oBAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,oBAAoB,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACvF,OAAO;oBACX,CAAC;oBACD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;oBAEpD,IAAI,CAAC;wBACD,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAC7B,GAAG,EACH;4BACI,MAAM,EAAE,KAAK;4BACb,OAAO,EAAE,WAAW;4BACpB,OAAO,EAAE,KAAK;4BACd,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACxF,EACD,GAAG,CAAC,EAAE;4BACF,IAAI,IAAI,GAAG,EAAE,CAAC;4BACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gCAC7B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;4BAC7B,CAAC,CAAC,CAAC;4BACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gCACf,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oCACzB,IAAI,CAAC;wCACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wCAChC,MAAM,MAAM,GAAa,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;6CACvC,GAAG,CAAC,CAAC,CAAiB,EAAE,EAAE,CACvB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CACxD;6CACA,IAAI,EAAE,CAAC;wCACZ,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAC/C,GAAG,CAAC,QAAQ,CACf,CAAC;oCACN,CAAC;oCAAC,MAAM,CAAC;wCACL,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAC3C,GAAG,CAAC,QAAQ,CACf,CAAC;oCACN,CAAC;gCACL,CAAC;qCAAM,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oCAChC,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAClC,GAAG,CAAC,QAAQ,CACf,CAAC;gCACN,CAAC;qCAAM,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oCAChC,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAChC,GAAG,CAAC,QAAQ,CACf,CAAC;gCACN,CAAC;qCAAM,CAAC;oCACJ,sCAAsC;oCACtC,IAAI,MAAM,GAAG,EAAE,CAAC;oCAChB,IAAI,CAAC;wCACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wCACnC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oCAChE,CAAC;oCAAC,MAAM,CAAC;wCACL,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oCACpC,CAAC;oCACD,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX;wCACI,KAAK,EAAE,GAAG,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,GAAG;qCAChF,EACD,GAAG,CAAC,QAAQ,CACf,CAAC;gCACN,CAAC;4BACL,CAAC,CAAC,CAAC;wBACP,CAAC,CACJ,CAAC;wBAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;4BAC3B,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,sBAAsB,GAAG,CAAC,OAAO,EAAE,EAAE,EAC9C,GAAG,CAAC,QAAQ,CACf,CAAC;wBACN,CAAC,CAAC,CAAC;wBAEH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;4BACnB,GAAG,CAAC,OAAO,EAAE,CAAC;4BACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC5F,CAAC,CAAC,CAAC;wBAEH,GAAG,CAAC,GAAG,EAAE,CAAC;oBACd,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,EAAE,KAAK,EAAE,sBAAuB,KAAe,CAAC,QAAQ,EAAE,EAAE,EAAE,EAC9D,GAAG,CAAC,QAAQ,CACf,CAAC;oBACN,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;gBACL,MAAM;YACV,CAAC;YAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;gBAC7B,qFAAqF;gBACrF,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACf,MAAM,SAAS,GAAG,IAAA,2CAAsB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpE,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,gCAAgC;gBAChC,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtD,IAAI,CAAC;wBACD,kBAAQ;6BACH,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;4BACtB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;4BAChE,UAAU,EAAE,GAAG;4BACf,IAAI,EAAE,IAAI;4BACV,QAAQ,EAAE,CAAC;4BACX,OAAO,EAAE,KAAK;4BACd,aAAa,EAAE,KAAK;4BACpB,WAAW,EAAE,IAAI;4BACjB,sBAAsB,EAAE,IAAI;4BAC5B,SAAS,EAAE,IAAI;4BACf,cAAc,EAAE,IAAI;4BACpB,WAAW,EAAE,OAAO;4BACpB,UAAU,EAAE,WAAW;yBAC1B,CAAC;6BACD,IAAI,CAAC,aAAa,CAAC,EAAE;4BAClB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gCACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;4BAC9E,CAAC;iCAAM,CAAC;gCACJ,IAAI,CAAC,eAAe,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;4BAC9D,CAAC;wBACL,CAAC,CAAC;6BACD,KAAK,CAAC,CAAC,CAAC,EAAE;4BACP,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAU,CAAC,CAAC;4BAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAG,CAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACzF,CAAC,CAAC,CAAC;oBACX,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAU,CAAC,CAAC;wBAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAG,CAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACzF,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpF,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACb,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACf,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;yBAC/B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;yBACxE,KAAK,CAAC,GAAG,CAAC,EAAE,CACT,IAAI,CAAC,MAAM,CACP,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX;wBACI,EAAE,EAAE,KAAK;wBACT,KAAK,EAAE,mBAAmB,GAAY,EAAE;wBACxC,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;qBACb,EACD,GAAG,CAAC,QAAQ,CACf,CACJ,CAAC;gBACV,CAAC;gBACD,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAQ;QACV,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,IACI,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU;oBAChC,CAAC,OAAO,CAAC,QAAQ,KAAK,GAAG,IAAI,OAAO,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC,EACjE,CAAC;oBACC,OAAO,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;oBACrD,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACtC,OAAO,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC3C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,UAAkB,EAAE,GAAW,EAAE,CAAQ,EAAE,IAAa;QAC7D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,IAAI,GAAG,CAAC;QACf,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC7C,UAAU,GAAG,kBAAkB,GAAG,UAAU,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,UAAU,KAAK,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACZ,SAAS;YACb,CAAC;YACD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC;gBACpD,MAAM;YACV,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAED,eAAe,CAAC,GAAW;QACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhC,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACZ,SAAS;gBACb,CAAC;gBACD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,8CAA8C,CAAC,EAAE,CAAC;oBACjE,MAAM;gBACV,CAAC;gBACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACN,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4DAA4D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAEpG,+BAA+B;QAC/B,MAAM,OAAO,GAA+C,MAAM,IAAI,CAAC,qBAAqB,CACxF,kBAAkB,IAAI,CAAC,SAAS,EAAE,CACrC,CAAC;QACF,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5C,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBAChD,CAAC;gBACD,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,IAAI,CAAC,gBAAgB,GAAG;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,GAAG;gBAClB,KAAK,EAAE,OAAO,CAAC,GAAG;aACrB,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,iBAAiB,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAA,wCAAyB,GAAE,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,mCAAmC;QAErF,8BAA8B;QAC9B,IAAI,CAAC;YACD,SAAS,GAAG;gBACR,iBAAiB,EAAE,IAAA,sBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC;aACjG,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;YACpD,mBAAmB,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,GAAY,EAAE,CAAC,CAAC;YACjF,4DAA4D;YAC5D,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBACxD,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,YAAY,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;oBACtD,YAAY,EAAE,gBAAgB,CAAC,GAAY,CAAC,CAAC;gBACjD,CAAC;YACL,CAAC;YACD,0EAA0E;YAC1E,SAAS,GAAG,EAAE,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,iEAAiE;QACjE,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,qBAAS,CAClC,IAAI,CAAC,GAAG,EACR,IAAI,EACJ,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CACxB,CAAC;QACF,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,kFAAkF;QAClF,mHAAmH;QACnH,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAErE,6FAA6F;QAC7F,gGAAgG;QAChG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACpB,oCAAoC;YACpC,IAAI,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE,CAAC;gBAC9C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,yBAAyB;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;wBACpB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;wBAE/D,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BACrB,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gCACtC,aAAa;gCACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,kCAAkC,CAAC,CAAC;gCAC5D,4EAA4E;gCAC5E,mGAAmG;gCACnG,+HAA+H;gCAC/H,MAAM,iBAAiB,GAAG,IAAA,kDAAgC,EAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gCACpF,0EAA0E;gCAC1E,0EAA0E;gCAC1E,wCAAwC;gCACxC,oEAAoE;gCACpE,mFAAmF;gCACnF,MAAM,UAAU,GAAW,IAAA,kBAAU,EACjC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CACjE,CAAC;gCAEF,IAAI,QAA4B,CAAC;gCACjC,IAAI,YAAgC,CAAC;gCACrC,8EAA8E;gCAC9E,2EAA2E;gCAC3E,iCAAiC;gCACjC,IACI,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;oCACvC,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ;oCACzC,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,EACtC,CAAC;oCACC,iCAAiC;oCACjC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;oCAC/B,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;oCACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,GAAG,GAAG,CAAC,GAAG,kEAAkE,CAC/E,CAAC;gCACN,CAAC;qCAAM,CAAC;oCACJ,iFAAiF;oCACjF,MAAM,QAAQ,GAAG,IAAA,sCAAoB,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oCAC/C,IAAI,UAAyB,CAAC;oCAC9B,IAAI,CAAC;wCACD,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;oCACpE,CAAC;oCAAC,OAAO,GAAY,EAAE,CAAC;wCACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,qCAAqC,GAAY,EAAE,CAAC,CAAC;wCAC9E,SAAS;oCACb,CAAC;oCAED,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW;yCAChC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC;yCACxC,IAAI,CAAC,IAAI,CAAC,CAAC;oCAEhB,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;wCACrB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4CACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,GAAG,GAAG,CAAC,GAAG,oDAAoD,MAAM,EAAE,CACzE,CAAC;wCACN,CAAC;6CAAM,CAAC;4CACJ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,qCAAqC,CAAC,CAAC;wCACnE,CAAC;wCACD,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;wCAC7B,mHAAmH;wCACnH,YAAY,GAAG,IAAA,6CAA2B,EAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;wCAE1E,MAAM,SAAS,GAIX;4CACA,UAAU;4CACV,QAAQ;yCACX,CAAC;wCACF,IAAI,YAAY,EAAE,CAAC;4CACf,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;wCAC1C,CAAC;wCAED,0GAA0G;wCAC1G,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,mDAAmD;wCACzF,KAAK,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE;4CACnC,MAAM,EAAE,SAAS;yCACpB,CAAC,CAAC;oCACP,CAAC;yCAAM,CAAC;wCACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,qCAAqC,MAAM,EAAE,CAAC,CAAC;wCACxE,SAAS;oCACb,CAAC;gCACL,CAAC;gCACD,IAAI,CAAC,YAAY,IAAI,GAAG,QAAQ,IAAI,CAAC;gCACrC,gDAAgD;gCAChD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;oCACvB,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gCACnE,CAAC;4BACL,CAAC;iCAAM,CAAC;gCACJ,aAAa;gCACb,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;gCACrC,IAAI,CAAC,YAAY,IAAI,GAAG,UAAU,IAAI,CAAC;gCAEvC,yDAAyD;gCACzD,0CAA0C;gCAC1C,MAAM,QAAQ,GAAG,IAAA,sCAAoB,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gCAC/C,IAAI,UAAyB,CAAC;gCAC9B,IAAI,CAAC;oCACD,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gCACnE,CAAC;gCAAC,OAAO,GAAY,EAAE,CAAC;oCACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,GAAG,GAAG,CAAC,GAAG,0DAA0D,GAAY,EAAE,CACrF,CAAC;oCACF,SAAS;gCACb,CAAC;gCACD,gDAAgD;gCAChD,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;oCACxD,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;gCAC9E,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEnE,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACpB,mBAAmB;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAmC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAChG,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC/C,MAAM,UAAU,GAAG,IAAA,wCAAyB,GAAE,GAAG,eAAG,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAA,qBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC3D,IAAI,eAAe,GAAG,KAAK,CAAC;gBAC5B,KAAK,IAAI,GAAG,IAAI,wBAAwB,EAAE,CAAC;oBACvC,GAAG,GAAG,IAAA,gBAAI,EAAC,UAAU,EAAE,GAAG,CAAC,GAAG,eAAG,CAAC;oBAClC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACjF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;wBAC1F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,UAAU,kCAAkC,CAAC,CAAC;wBACtF,eAAe,GAAG,IAAI,CAAC;wBACvB,MAAM;oBACV,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,eAAe,EAAE,CAAC;oBACnB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC;wBACrB,OAAO,EAAE,IAAI;wBACb,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;qBACnC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QAED,kEAAkE;QAClE,IAAI,CAAC,0BAA0B,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/C,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;oBACpB,SAAS;gBACb,CAAC;gBACD,MAAM,+BAA+B,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC;gBAClF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wBAAwB,GAAG,CAAC,CAAC;gBAC9C,IAAI,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;oBACrE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,+BAA+B,EAAE,CAAC;oBACnD,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,GAAG,EAAE,uCAAuC,IAAI,CAAC,MAAM,CAAC,oBAAoB,iCAAiC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,+BAA+B,sBAAsB,CACtL,CAAC;oBACF,4EAA4E;oBAC5E,oCAAoC;oBACpC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,+BAA+B,GAAG,CAAC,EAAE,CAAC;wBACvD,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,GAAG,EAAE,0CAA0C,IAAI,CAAC,MAAM,CAAC,oBAAoB,mEAAmE,CACrJ,CAAC;wBACF,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC7B,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,+BAA+B,GAAG,CAAC,EAAE,CAAC;oBAC9D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,+BAA+B,EAAE,CAAC;oBACnD,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,UAAU,EAAE,mCAAmC,IAAI,CAAC,MAAM,CAAC,oBAAoB,2DAA2D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,+BAA+B,EAAE,CAC/L,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEO,0BAA0B;QAC9B,4DAA4D;QAC5D,MAAM,QAAQ,GAAG;YACb,MAAM,EAAE,kDAAkD;YAC1D,iBAAiB,EAAE,kDAAkD;SACxE,CAAC;QACF,gFAAgF;QAChF,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;YAC/F,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;iBACtC,KAAK,CAAC,SAAS,CAAC;iBAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc;iBAC1C,KAAK,CAAC,SAAS,CAAC;iBAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtB,0DAA0D;YAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtC,yFAAyF;YACzF,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YACD,yGAAyG;YACzG,mFAAmF;YACnF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC7B,0DAA0D;gBAC1D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,SAAS;gBACb,CAAC;gBACD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAEnD,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;QACL,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,UAAU,GAAG,IAAA,gCAAc,EAC3B,GAAG,EACH,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;YAC1F,oEAAoE;YACpE,GAAG,KAAK,MAAM,CACjB,CAAC;YACF,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,+EAA+E;gBAC/E,yBAAyB;gBACzB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,UAAU,GAAG;wBACT,CAAC,gBAAgB,GAAG,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI;qBACjE,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,UAAU,GAAG;wBACT,CAAC,uBAAuB,GAAG,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI;qBACxE,CAAC;gBACN,CAAC;YACL,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;YACzG,2CAA2C;YAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACrC,+CAA+C;YAC/C,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;YACrD,mBAAmB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAED,mBAAmB,CAAC,EAAU,EAAE,GAAuC;QACnE,IAAI,GAAG,EAAE,CAAC;YACN,+BAA+B;YAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAChD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5B,KAAK,CAAC,GAAG,EAAE,CAAC;oBACZ,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;oBACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAEnC,KAAK,CAAC,GAAG,EAAE,CAAC;oBACZ,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,qCAAqC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5B,KAAK,CAAC,GAAG,EAAE,CAAC;gBACZ,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAEvC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACZ,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;YAED,OAAO,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,uBAAuB;YACvB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,mBAAmB;YACnB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YACxC,sBAAsB;YACtB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YAEvB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAErE,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC/B,EAAE,GAAG,EAAE,CAAC,IAAA,mBAAW,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpC,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACX,IAAI,CAAC,EAAE,CAAC;oBACJ,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC;gBACD,IAAI,EAAE,EAAE,CAAC;oBACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,4BAA4B,CACxB,EAAU,EACV,KAAwC;QAExC,IACI,KAAK;YACL,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;YAC7B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM;YACxB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EACzF,CAAC;YACC,IAAI,CAAC;gBACD,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAChB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;oBAChE,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,iCAAiC,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CACjG,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,iCAAiC,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CACjG,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,wBAAwB,CAAC,EAAU,EAAE,KAA0B,EAAE,KAAc;QAC3E,gEAAgE;QAChE,MAAM,MAAM,GAAmB,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAoB,CAAC;QAE5E,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB,CAAC,EAAU,EAAE,KAAoC;QAC/D,IAAI,MAAsB,CAAC;QAE3B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,GAAG,KAAuB,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,EAAoB,CAAC;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,+CAA+C;QAC/C,mCAAmC;QACnC,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,CAAC,IAAI;YACP,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,SAAS,EAAE,CAAC;QAE7G,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,0DAA0D;gBAC1D,MAAM,UAAU,GAAG,CAAC,IAAA,6BAAiB,EAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxE,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC;oBACrC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;gBACpC,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEvC,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;aAChD,IAAI,CAAC,GAAG,CAAC,EAAE;YACR,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACzD,IAAI,CAAC,SAAS,CAAC,yBAAU,CAAC,4BAA4B,CAAC,CAAC;gBACxD,OAAO;YACX,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAElC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;YAED,iEAAiE;YACjE,0DAA0D;YAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,SAAS,CAAC,yBAAU,CAAC,4BAA4B,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAExC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;aACjE,IAAI,CAAC,GAAG,CAAC,EAAE;YACR,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC1D,IAAI,CAAC,SAAS,CAAC,yBAAU,CAAC,4BAA4B,CAAC,CAAC;gBACxD,OAAO;YACX,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;oBACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACtE,SAAS;gBACb,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBACtC,+BAA+B;oBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAChC,CAAC;gBACD,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEhD,oBAAoB;gBACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAElC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,YAAY,EAAE,MAAM,EAAE,kBAAkB;gBACpD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,kBAAkB,CAAC;gBACvD,CAAC,CAAC,EAAE,CAAC;YAET,kCAAkC;YAClC,IAAI,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;gBACjC,IAAA,mBAAW,EAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1C,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAA8B,CAAC;YAChE,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACvB,IAAA,mBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC1C,CAAC;YAED,gCAAgC;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC3B,IAAI,YAAY,EAAE,MAAM,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACpD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC1D,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACrC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC3C,CAAC;YACL,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAA6B,CAAC,CAAC;YAC7E,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAA8B,CAAC,CAAC;YAE/E,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;YACjG,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,EAAE,CAAC;gBACjE,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,wBAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,sDAAsD,CACrG,CAAC;YACN,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;YAClG,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;gBACrE,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,yBAAyB,IAAI,CAAC,MAAM,CAAC,SAAS,sDAAsD,CACvG,CAAC;YACN,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,UAAU,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,OAAO,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,OAAO,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,OAAO,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,OAAO,CAAC;YAEvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,SAAS,CAAC,yBAAU,CAAC,4BAA4B,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEP,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EAAU,EAAE,OAAgB;QACjD,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAE9F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBACrB,GAAG,EAAE,QAAQ;gBACb,MAAM,EAAE;oBACJ,IAAI,EAAE,iBAAiB,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;oBAChE,IAAI,EAAE,0BAA0B;oBAChC,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,eAAe;iBACxB;gBACD,MAAM,EAAE;oBACJ,MAAM,EAAE,EAAE;iBACb;gBACD,IAAI,EAAE,OAAO;aAChB,CAAC;YACF,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnE,MAAM,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBACtF,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBACzD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,sBAAsB,CAAC;gBAC/D,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACjC,MAAM,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBACtF,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBACzD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,sBAAsB,CAAC;gBAC/D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAU;QAChC,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAE/F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG;gBACtB,GAAG,EAAE,SAAS;gBACd,MAAM,EAAE;oBACJ,IAAI,EAAE,iBAAiB,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;oBAChE,IAAI,EAAE,sBAAsB;oBAC5B,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,iBAAiB;iBAC1B;gBACD,MAAM,EAAE;oBACJ,MAAM,EAAE,EAAE;iBACb;gBACD,IAAI,EAAE,OAAO;aAChB,CAAC;YACF,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBACrE,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;IACL,CAAC;IAED,UAAU,CAAC,GAAoB;QAC3B,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;QAEnB,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YACnB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,GAAG,IAAI,CAAC,IAAA,mBAAW,GAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,sCAAsC;gBACtC,OAAO;YACX,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,mBAAmB;gBACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAW,CAAC,CAAC;gBACpD,CAAC;gBAEA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;YAED,iDAAiD;YACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,EAAU;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC,EAAE,CAAC;YACJ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC5B,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;oBACX,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACnB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC3B,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YAED,iDAAiD;YACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,OAAO,CAAC,EAAU;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,SAAS,CAAC;YAEvB,iFAAiF;YACjF,wCAAwC;YACxC,MAAM,GAAG,GAAG,eAAe,MAAM,aAAa,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,MAAM,SAAS,SAAS,WAAW,GAAG,EAAE,CAAC,CAAC;YAEtE,uDAAuD;YACvD,0IAA0I;YAC1I,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5C,WAAW,EAAE,IAAI;gBACjB,GAAG,EAAE,IAAI;gBACT,OAAO,EAAE,OAAO,EAAE,6CAA6C;aAClE,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAErE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAEtE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;gBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,CAAC,cAAc,EAAE,EAAE;gBAC7C,IAAI,IAAI,EAAE,CAAC;oBACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;oBACpD,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBACD,oBAAoB;gBACpB,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QAC/B,CAAC;QAED,MAAM,SAAS,GAAa,IAAI,CAAC,MAAM,CAAC,SAAS;aAC5C,KAAK,CAAC,SAAS,CAAC;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEvG,IAAI,oBAAoB,GAAa,EAAE,CAAC;QACxC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,uBAAuB;QACvB,IAAI,OAAO,IAAI,CAAC,wBAAwB,KAAK,UAAU,EAAE,CAAC;YACtD,oBAAoB,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAE7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,OAAO,GAAG,GAAG,CAAC;YAClB,IAAI,OAAO,GAAG,QAAQ,CAAC;YAEvB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;gBAClC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;YAED,oEAAoE;YACpE,IAAI,UAAU,GAAG,OAAO,CAAC;YAEzB,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,UAAU,GAAG,MAAM,IAAA,8CAAsB,EAAC,OAAO,CAAC,CAAC;gBAEnD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,UAAU,IAAI,OAAO,WAAW,OAAO,GAAG,CAAC,CAAC;YACnG,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,UAAU,IAAI,OAAO,GAAG,CAAC,CAAC;YACjF,CAAC;YAED,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7B,uBAAuB;YACvB,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;oBAClE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,UAAU,IAAI,OAAO,GAAG,CAAC,CAAC;wBAEvE,MAAM,cAAc,GAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;wBACnE,IAAI,CAAC,IAA4B,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC;oBAC9F,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,UAAU,IAAI,OAAO,GAAG,CAAC,CAAC;oBAClF,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,UAAU,IAAI,OAAO,MAAM,GAAY,EAAE,CAAC,CAAC;gBACnG,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,SAAS,iBAAiB,OAAO,eAAe,CAAC,EAAE,CAAC;gBAC1E,sBAAsB;gBACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6CAA6C,GAAG,GAAG,CAAC,CAAC;gBAEnE,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAgD,GAAG,GAAG,CAAC,CAAC;gBAC1E,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,GAAG,oBAAoB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACjG,CAAC;YACL,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,UAAU,EAAE,CAAC;YACjD,KAAK,MAAM,mBAAmB,IAAI,oBAAoB,EAAE,CAAC;gBACrD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC;wBACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;wBAEpD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,mBAAmB,GAAG,CAAC,CAAC;oBAC1E,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,mBAAmB,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAChG,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,IAAY,EAAE,SAAkB;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,oBAAoB,GACtB,4GAA4G;gBAC5G,4EAA4E;gBAC5E,iGAAiG;gBACjG,oFAAoF;gBACpF,6GAA6G,CAAC;YAElH,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,GAAG,mBAAmB,MAAM,KAAK,oBAAoB,SAAS,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACJ,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAClC,6EAA6E;oBAC7E,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB;oBACvD,MAAM,GAAG,GAAG,MAAM,KAAK,oBAAoB,gBAAgB,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACJ,MAAM,GAAG,GAAG,MAAM,KAAK,oBAAoB,EAAE,CAAC;gBAClD,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,GAAG,4BAA4B,MAAM,SAAS,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,YAAY,MAAM,EAAE,CAAC;YAClC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,OAAO,GAAkB;gBAC3B,QAAQ,EAAE,IAAI;gBACd,uBAAuB;gBACvB,qCAAqC;aACxC,CAAC;YACF,OAAO;gBACH,MAAM,EAAE,IAAI,gBAAM,CAAC,MAAM,EAAE,OAAO,CAAC;aAC1B,CAAC;QAClB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAY,CAAC,CAAC;YACvD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,CACH,MAAgB,EAChB,IAAY,EACZ,UAAsB,EACtB,OAAgB,EAChB,KAAc;IACd;;;;;OAKG;IACH,YAA8E;QAE9E,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QACvB,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,+BAA+B,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE;gBAC7E,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE,IAAI;gBACT,MAAM,EAAE,IAAI;aACf,CAAC,CAAC;QACP,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,iBAAO,EAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpE,yFAAyF;QACzF,0FAA0F;QAC1F,mEAAmE;QACnE,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,GAAG,CAAC,GAAW,EAAE,QAA4B,EAAQ,EAAE;gBAC9D,IAAI,IAAI,GAAY,GAAG,CAAC;gBACxB,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACnC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;gBACD,YAAY,CAAC,QAAQ,IAAI,MAAM,EAAE,IAAc,CAAC,CAAC;YACrD,CAAC,CAAC;QACN,CAAC;QAED,IAAI,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;gBACnC,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,qCAAqC;aACxC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,IAAI,YAAY,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,GAAY,CAAC;gBACvB,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBACtD,KAAK,CAAC,IAAI,CAAC;qBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;qBACjC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,YAAY,CAAC,OAAO,EAAE,iBAAiB,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACJ,KAAK,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE;oBAC7E,GAAG,EAAE,IAAI;oBACT,GAAG,EAAE,IAAI;oBACT,CAAC,EAAE,SAAS;iBACf,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,GAAY,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,aAAa,CAAC,OAAY;QAS5B,MAAM,MAAM,GAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAY,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,IAAI,CAAC;QACzD,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3E,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,aAAa,KAAK,IAAI,CAAC;QACtF,MAAM,UAAU,GAAsC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC;QAEvG,MAAM,KAAK,GAAG,CAAC,KAAa,EAQ1B,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAE5F,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAiB,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC;QAC3C,MAAM,QAAQ,GAAsB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QACpG,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAiB,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,kBAAkB,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAEvE,+DAA+D;QAC/D,IAAI,aAA+B,CAAC;QACpC,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,iBAAiB,GAAG,IAAA,kDAAgC,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,IAAA,sCAAoB,EAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,UAAyB,CAAC;YAC9B,IAAI,CAAC;gBACD,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YACpE,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,kCAAkC,GAAY,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnF,OAAO,KAAK,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACnG,CAAC;aAAM,CAAC;YACJ,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,GAAmE,EAAE,CAAC;QAChF,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,SAAS,GAAG,CAAC,QAA2B,EAAE,GAAW,EAAQ,EAAE;YACjE,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;gBACzB,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACX,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAEzE,uFAAuF;QACvF,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,+EAA+E;QAC/E,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3C,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,EAAE,EAAE,IAAI;YACR,UAAU;YACV,OAAO,EAAE,OAAO;YAChB,SAAS;YACT,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SACnF,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,aAAa,CAAC,GAAa,EAAE,EAAU;QAC3C,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;gBAClB,OAAO,GAAG,CAAC;YACf,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;gBACvB,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACJ,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,EAAU;QAC3B,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC1B,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACJ,EAAE,GAAG,GAAG,CAAC;YACb,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,EAA8B;QACtC,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACzC,OAAO;QACX,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,OAAO;QACX,CAAC;QAED,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,0DAA0D;YAC1D,OAAO;QACX,CAAC;QAED,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,OAAO,EAAE,EAAE,CAAC,CAAC;YACjE,OAAO;QACX,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,kBAAkB,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC;YAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,sBAAsB;QAClB,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,sEAAsE;QACtE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;gBACpF,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACJ,KAAK,GAAG,IAAI,CAAC;YACjB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;iBAAM,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YACjF,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,MAAgB;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,0FAA0F;QAC1F,kEAAkE;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;YAE1C,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACnG,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAErE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,6BAA6B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrF,CAAC;YAAC,MAAM,CAAC;gBACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,sCAAsC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7F,CAAC;YAED,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,4BAA4B;YAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACxB,2BAA2B;gBAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACpD,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC9B,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;wBACjE,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;4BACnC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;4BAClC,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;4BACnC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gCAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BAC3B,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtD,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/C,4EAA4E;oBAC5E,wEAAwE;oBACxE,IAAI,GAAG,EAAE,CAAC;wBACN,IAAA,iCAAuB,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC/C,CAAC;oBACD,IAAI,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;wBAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACrC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IACI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACjE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EACtC,CAAC;wBACC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;oBAChC,CAAC;gBACL,CAAC;YACL,CAAC;YAED,6BAA6B;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACzD,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;oBAC3E,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACpC,KAAK,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBAC5C,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;oBAC5C,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1D,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC1C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxC,CAAC;YACL,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5D,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrD,IAAI,GAAG,EAAE,CAAC;wBACN,gCAAgC;wBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE,CAAC;4BACV,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;4BACjC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gCACb,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BAC3B,CAAC;4BACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gCAClB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;4BACpD,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAChD,CAAC;gBACL,CAAC;YACL,CAAC;YAED,oBAAoB;YACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC1C,YAAY,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,qBAAqB;YACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC3C,aAAa,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,4EAA4E;YAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,cAAc,EAAE,CAAC;gBACjB,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;wBACvB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;4BACxD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gCAC9C,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACxC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BACtC,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;4BAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAChC,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,0BAA0B;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,uCAAuC,KAAK,GAAG,CAAC,CAAC;oBAC3E,CAAC;gBACL,CAAC;YACL,CAAC;YAED,6BAA6B;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjE,CAAC;gBACL,CAAC;YACL,CAAC;YAED,0BAA0B;YAC1B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa;oBAC5B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAkC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;gBAEhF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;oBACxB,IAAI,OAAO,GAA0B,UAAU,CAAC,GAAG,EAAE;wBACjD,IAAI,OAAO,EAAE,CAAC;4BACV,OAAO,GAAG,IAAI,CAAC;4BACf,OAAO,CAAC,IAAI,CAAC,CAAC;wBAClB,CAAC;oBACL,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;oBAErC,IAAI,CAAC;wBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;4BAC7B,IAAI,OAAO,EAAE,CAAC;gCACV,YAAY,CAAC,OAAO,CAAC,CAAC;gCACtB,OAAO,GAAG,IAAI,CAAC;gCACf,OAAO,CAAC,IAAI,CAAC,CAAC;4BAClB,CAAC;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,+BAA+B,GAAY,EAAE,CAAC,CAAC;oBACzE,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAA0B;QAC1C,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;YACjE,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,yDAAyD,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,IACI,GAAG,EAAE,MAAM,EAAE,MAAM;YACnB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC;YAC1D,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,SAAS,EAAE,EAC1D,CAAC;YACC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;YAErB,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;gBACzC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,kBAAkB,IAAI,eAAe,CAAC,CAAC;gBAC7D,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,QAAQ,GAAG,iBAAiB,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAC7D,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,EAC/B,IAAI,EACJ,IAAI,CACP,CAAC;YACN,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,EAA6D,CAAC;YAExF,IACK,GAAG,CAAC,MAAM,CAAC,UAAyB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC3E,GAAG,CAAC,MAAM,CAAC,UAAyB,KAAK,SAAS;gBAClD,GAAG,CAAC,MAAM,CAAC,UAAyB,KAAK,OAAO,EACnD,CAAC;gBACC,aAAa;gBACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,uBAAuB,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;gBAEtE,IAAI,QAAQ,GAAG,IAAI,CAAC;gBACpB,IAAI,aAAa,EAAE,CAAC;oBAChB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACjE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAClG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACjB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;gBACnC,IAAI,CAAC,OAAO,CACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAClB,QAAQ,EACR,GAAG,CAAC,MAAM,CAAC,UAAwB,EACnC,GAAG,CAAC,MAAM,CAAC,OAAO,EAClB,GAAG,CAAC,MAAM,CAAC,KAAK,CACnB,CAAC;gBACF,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/D,aAAa;gBACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,+BAA+B,CAAC,CAAC;gBACtD,0EAA0E;gBAC1E,0DAA0D;gBAC1D,MAAM,iBAAiB,GAAG,IAAA,kDAAgC,EAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACrF,oEAAoE;gBACpE,mFAAmF;gBACnF,MAAM,UAAU,GAAG,IAAA,kBAAU,EAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,CAAC;gBAE9F,IAAI,QAAgB,CAAC;gBACrB,8EAA8E;gBAC9E,2EAA2E;gBAC3E,iCAAiC;gBACjC,IACI,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;oBACvC,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ;oBACzC,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,EACtC,CAAC;oBACC,iCAAiC;oBACjC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,kEAAkE,CAAC,CAAC;gBAC7F,CAAC;qBAAM,CAAC;oBACJ,iFAAiF;oBACjF,MAAM,QAAQ,GAAG,IAAA,sCAAoB,EAAC,IAAI,CAAC,CAAC;oBAC5C,IAAI,UAAyB,CAAC;oBAC9B,IAAI,CAAC;wBACD,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;oBACpE,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,qCAAqC,GAAY,EAAE,CAAC,CAAC;wBAC9E,OAAO,KAAK,CAAC;oBACjB,CAAC;oBAED,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAE1F,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;wBACrB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,yCAAyC,MAAM,EAAE,CAAC,CAAC;wBAC5E,CAAC;6BAAM,CAAC;4BACJ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,qCAAqC,CAAC,CAAC;wBAChE,CAAC;wBACD,QAAQ,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;wBAEnC,0GAA0G;wBAC1G,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,mDAAmD;wBACtF,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE;4BACtC,MAAM,EAAE;gCACJ,UAAU;gCACV,QAAQ;6BACX;yBACJ,CAAC,CAAC;oBACP,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,qCAAqC,MAAM,EAAE,CAAC,CAAC;wBACrE,OAAO,KAAK,CAAC;oBACjB,CAAC;gBACL,CAAC;gBACD,MAAM,aAAa,GAAqB,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACxG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACjB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;gBACnC,IAAI,CAAC,OAAO,CACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAClB,IAAI,EACJ,GAAG,CAAC,MAAM,CAAC,UAAwB,EACnC,GAAG,CAAC,MAAM,CAAC,OAAO,EAClB,GAAG,CAAC,MAAM,CAAC,KAAK,CACnB,CAAC;gBACF,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,0BAA0B,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,KAAa,CAAC;QAClB,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;YACX,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;YAChB,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAEhE,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,kBAAkB,KAAK,eAAe,CAAC,CAAC;gBACjE,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC3B,IAAI,GAA6C,CAAC;QAClD,IAAI,CAAC;YACD,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAA6C,CAAC;QAC7F,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,qBAAqB,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,YAAmC;QAChD,4BAA4B;QAC5B,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACjF,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CACT,IAAU,EACV,UAA0B,EAC1B,KAAa,EACb,GAAW,EACX,aAA8B,EAC9B,QAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,UAAoB;QAEpB,IAAI,EAAE,GAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;QAEjF,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE,CAAC;YAC3C,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5F,CAAC;QACD,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACtB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,aAAkC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzF,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAE9D,IACI,EAAE,CAAC,QAAQ,EAAE,GAAG,eAAe;YAC/B,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,eAAe,IAAI,EAAE,CAAC,UAAU,EAAE,GAAG,iBAAiB,CAAC,EAC5E,CAAC;YACC,EAAE,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACzC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,aAAa,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,aAAa,IAAI,EAAE,CAAC,UAAU,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC;YAC1G,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACvC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;YAC1B,oBAAoB;YACpB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY;QACd,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;gBACb,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC;QACL,CAAC;QACD,IAAI,MAAc,CAAC;QACnB,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;YACrC,GAAG,EAAE,GAAG,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACvD,GAAG,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QACrC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,iFAAiF;QACjF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,yBAAyB;QACzB,IACI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;YAClC,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;YAClC,IAAI,CAAC,MAAM,CAAC,QAA8B,KAAK,EAAE;YACjD,IAAI,CAAC,MAAM,CAAC,SAA+B,KAAK,EAAE;YACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI;YAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,EAChC,CAAC;YACC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACxE,OAAO;QACX,CAAC;QAED,iCAAiC;QACjC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CACnC,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC7B,IAAI,CAAC,MAAM,CAAC,eAAe,EAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,EACzB,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CACxB,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAClC,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,cAAc,EAC1B,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,IAAI,EACJ,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CACxB,CAAC;QAEF,UAAU;QACV,IAAI,cAAc,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAChE,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,OAAO,EAAE,CAAC;YACjD,cAAc,GAAG,OAAO,CAAC;QAC7B,CAAC;QAED,SAAS;QACT,IAAI,aAAa,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9D,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,OAAO,EAAE,CAAC;YAC/C,aAAa,GAAG,OAAO,CAAC;QAC5B,CAAC;QAED,MAAM,SAAS,GAAsC,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACrG,IAAI,KAAc,CAAC;QACnB,IAAI,cAAc,GAAG,IAAI,EAAE,CAAC;YACxB,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,aAAa,GAAG,IAAI,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,sBAAsB;YACtB,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,OAAO,IAAI,WAAW,CAAC;QACzF,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,IAAI,UAAU,KAAK,KAAK,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,cAAc,GAChB,MAAM,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAE1D,IAAI,GAAG,KAAK,gBAAgB,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,WAAW,GAAG,cAAc,CAAC;QACjC,IAAI,cAAc,GAAG,aAAa,EAAE,CAAC;YACjC,WAAW,GAAG,aAAa,CAAC;QAChC,CAAC;QACD,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;QACjC,IAAI,WAAW,GAAG,IAAI,EAAE,CAAC;YACrB,WAAW,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,CAAC,CAAC;IACnF,CAAC;IAED,iBAAiB;QACb,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;QACX,IAAI,IAAuB,CAAC;QAC5B,IAAI,MAA0B,CAAC;QAC/B,IAAI,QAAQ,GAAG,GAAG,SAAS,2DAA2D,CAAC;QACvF,IAAI,YAAY,GAAG,GAAG,SAAS,+BAA+B,CAAC;QAC/D,IAAI,CAAC;YACD,IAAI,IAAA,oBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,IAAI,GAAG,IAAA,kBAAQ,EAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,YAAY,GAAG,GAAG,SAAS,4BAA4B,CAAC;gBACxD,QAAQ,GAAG,GAAG,SAAS,wDAAwD,CAAC;gBAChF,IAAI,IAAA,oBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;oBACvB,IAAI,GAAG,IAAA,kBAAQ,EAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CACpC,kBAAkB,EAClB,iDAAiD,CACpD,CAAC;YACF,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;gBAChB,MAAM,GAAG,OAAO,CAAC,IAAc,CAAC;YACpC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,SAAS;QACb,CAAC;QAED,IAAI,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,MAAM,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;YACvD,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAExF,MAAM,KAAK,GAAG,wDAAa,OAAO,GAAC,CAAC;gBACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,IAA6B,CAAC;gBAClC,IAAI,GAAG,EAAE,CAAC;oBACN,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;oBAC3D,IAAI,IAAI,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;wBAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;wBACxD,OAAO,KAAK,CAAC;oBACjB,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;oBACxD,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,IAAA,uBAAa,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3C,mBAAmB;gBACnB,MAAM,IAAI,CAAC,cAAc,CACrB,kBAAkB,EAClB,iDAAiD,EACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CACpB,CAAC;gBACF,OAAO,IAAI,CAAC;YAChB,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAY,EAAE,CAAC,CAAC;gBACrD,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjE,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;gBAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAEhG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAErE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACpB,IAAI,CAAC;wBACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,CAAC;wBAErC,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;4BACtC,IAAI,EAAE,OAAO;4BACb,MAAM,EAAE;gCACJ,IAAI,EAAE,SAAS,CAAC,EAAE;gCAClB,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,OAAO;gCACb,IAAI,EAAE,IAAI;gCACV,KAAK,EAAE,KAAK;6BACf;4BACD,MAAM,EAAE,EAAE;yBACb,CAAC,CAAC;wBAEH,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;4BAClD,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC1D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;gCACvB,GAAG,EAAE,aAAa;gCAClB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gCACzB,GAAG,EAAE,IAAI;6BACZ,CAAC,CAAC;wBACP,CAAC;6BAAM,CAAC;4BACJ,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC5E,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,0DAA0D,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,GAAY,EAAE,CAC1G,CAAC;oBACN,CAAC;gBACL,CAAC;gBAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC7B,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACtB,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACxB,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACxB,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBAE3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACtE,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,kCAAkC;YAClC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,GAAG,CAAC,OAAe,EAAE,QAA4B,EAAQ,EAAE;QAC5D,qEAAqE;QACrE,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACnC,QAAQ,GAAG,OAAO,CAAC;QACvB,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC9B,kCAAkC;YAClC,IAAI,IAAI,EAAE,CAAC;gBACP,OAAO;YACX,CAAC;YACD,QAAQ,GAAG,OAAO,CAAC;QACvB,CAAC;QAED,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC,CAAC;IAEF,cAAc,CAAC,MAA2B;QACtC,IAAI,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;gBACjC,KAAK,EAAE,UAAU,EAAU;oBACvB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvD,CAAC;gBACD,UAAU,EAAE,KAAK;aACpB,CAAC,CAAC;QACP,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,kCAAkC,CAAC,QAAgB,EAAE,YAAoB;QACrE,gEAAgE;QAChE,uEAAuE;QACvE,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,KAAK,EAAE,EAAE,CAAC;YACpE,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC7E,CAAC;QACD,+DAA+D;QAC/D,IAAI,CAAC,kBAAkB,IAAI,GAAG,YAAY,IAAI,CAAC;QAC/C,yDAAyD;QACzD,6CAA6C;QAC7C,MAAM,qBAAqB,GAAG,aAAa,CAAC;QAC5C,SAAS,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC3D,+EAA+E;QAC/E,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACrC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,kBAAkB;SACnD,CAAC,CAAC;QACH,mBAAmB,CAAC,0BAA0B,CAAC;YAC3C,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,kBAAkB;SACnD,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,IAAY;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,OAAO,CACf,SAAS,EACT,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAC7F,CAAC,CAAC,mCAAmC;QAC1C,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,IAAI,CAAC,OAAO,CACf,SAAS,EACT,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5F,CAAC,CAAC,mCAAmC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS;QACX,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAEnC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QACtC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EAAsB;QAC3C,IAAI,EAAE,EAAE,CAAC;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACjF,CAAC;QACL,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,OAAY;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACL,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,yDAAyD,CACzF,CACJ,CAAC;YACN,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,+CAA+C,CAAC,CAAC;YAC7F,KAAK,IAAI,CAAC,QAAQ,CACd,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,6CAA6C,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAC7F,IAAI,CACP,CAAC;QACN,CAAC;IACL,CAAC;IAED,UAAU,CAAC,IAAuE;QAC9E,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrC,kCAAkC;QAClC,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;aAC5B,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC/C,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,EAAE,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAoB,CAAC;YAC3D,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAEjD,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBACjD,MAAM,OAAO,GAAgB;oBACzB,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;oBAC9C,wCAAwC;iBAC3C,CAAC;gBACF,MAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAChC,CAAC;gBAED,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAA,yBAAI,EAAC,GAAG,SAAS,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE3E;;;iEAGiD;gBAEjD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CACrB,SAAS,EACT,CACI,OAQO,EACT,EAAE;oBACA,IAAI,QAMH,CAAC;oBACF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;wBAC9B,IAAI,CAAC;4BACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACnC,CAAC;wBAAC,MAAM,CAAC;4BACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;wBAC7E,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,QAAQ,GAAG,OAAO,CAAC;oBACvB,CAAC;oBAED,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;wBAC3B,KAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;oBACrE,CAAC;oBAED,QAAQ,QAAQ,CAAC,GAAG,EAAE,CAAC;wBACnB,KAAK,OAAO,CAAC,CAAC,CAAC;4BACX,IAAI,CAAC,oBAAoB,CAAC;gCACtB,GAAG,EAAE,OAAO;gCACZ,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU;gCACtC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;gCAChD,QAAQ,EAAE,IAAI,CAAC,QAAQ;6BAC1B,CAAC,CAAC;4BACH,MAAM;wBACV,CAAC;wBAED,KAAK,SAAS,CAAC,CAAC,CAAC;4BACb,sDAAsD;4BACtD,MAAM;wBACV,CAAC;wBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;4BACZ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;4BAC9B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;4BAC5B,MAAM;wBACV,CAAC;wBAED,KAAK,SAAS,CAAC,CAAC,CAAC;4BACb,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;4BAC/B,yBAAyB;4BACzB,MAAM;wBACV,CAAC;wBAED,KAAK,KAAK,CAAC,CAAC,CAAC;4BACT,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;4BACvD,MAAM;wBACV,CAAC;wBAED,KAAK,cAAc,CAAC,CAAC,CAAC;4BAClB,OAAO,CAAC,GAAG,CACP,0CAA0C,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,EAAE,CACpF,CAAC;4BACF,MAAM;wBACV,CAAC;oBACL,CAAC;gBACL,CAAC,CACJ,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;oBACvC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;oBACnD,KAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACpF,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAY,EAAiB,EAAE;oBACpE,IAAI,IAAI,EAAE,CAAC;wBACP,MAAM,IAAI,CAAC,QAAQ,CACf,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,IAAI,EAAE,EAAE,CAAC,EACzE,IAAI,CACP,CAAC;oBACN,CAAC;oBACD,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;oBACvF,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;oBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACX,CAAC;CACJ;AAED,SAAS,eAAe,CACpB,KAAe,EACf,gBAA0E;IAE1E,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,IAAI,KAAK,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,CAAC,0CAA0C;QAC5D,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,CAAC,wCAAwC;QACzD,CAAC;IACL,CAAC;IACD,mDAAmD;IACnD,OAAO,KAAK,KAAK,KAAK,CAAC;AAC3B,CAAC;AAED,uEAAuE;AACvE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC1B,yCAAyC;IACzC,MAAM,CAAC,OAAO,GAAG,CAAC,OAA4C,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/F,CAAC;KAAM,CAAC;IACJ,wCAAwC;IACxC,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,CAAC;AAC/B,CAAC","sourcesContent":["/*\n * Javascript adapter\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2024 bluefox ,\n *\n * Copyright (c) 2014 hobbyquaker\n */\n\nimport { Script, type ScriptOptions } from 'node:vm';\nimport { readFileSync, existsSync, statSync, writeFileSync, type Stats } from 'node:fs';\nimport { join, sep, normalize } from 'node:path';\nimport { fork, type ForkOptions } from 'node:child_process';\nimport { setTypeScriptResolveOptions, Server } from 'virtual-tsc';\nimport { isDeepStrictEqual } from 'node:util';\nimport prettier from 'prettier';\n\nimport * as dgram from 'node:dgram';\nimport * as crypto from 'node:crypto';\nimport * as dns from 'node:dns';\nimport * as events from 'node:events';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport * as http2 from 'node:http2';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport * as util from 'node:util';\nimport * as child_process from 'node:child_process';\nimport * as stream from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n// @ts-expect-error no types available\nimport * as suncalc from 'suncalc2';\nimport * as axios from 'axios';\n// @ts-expect-error no types available\nimport * as wake_on_lan from 'wake_on_lan';\nimport * as nodeSchedule from 'node-schedule';\n\nimport {\n getAbsoluteDefaultDataDir,\n Adapter,\n Credentials,\n EXIT_CODES,\n type AdapterOptions,\n} from '@iobroker/adapter-core';\nimport type SentryPlugin from '@iobroker/plugin-sentry';\nimport type { GetTimesResult } from 'suncalc';\nimport type { CompileResult } from 'virtual-tsc/build/util';\n\nimport { Mirror } from './lib/mirror';\nimport ProtectFs from './lib/protectFs';\nimport { setLanguage, getLanguage } from './lib/words';\nimport { sandBox, removeFromDispatchIndex } from './lib/sandbox';\nimport { requestModuleNameByUrl } from './lib/nodeModulesManagement';\nimport {\n resolveProviderCredentials,\n resolveTestCredentials,\n listAvailableProviders,\n getProviderCredentialId,\n} from './lib/aiProviderResolver';\nimport {\n translateToolsToAnthropic,\n translateMessagesToAnthropic,\n translateAnthropicResponseToOpenAI,\n} from './lib/anthropicAdapter';\nimport { createEventObject, type EventObj } from './lib/eventObj';\nimport { type AstroEventName, Scheduler } from './lib/scheduler';\nimport { targetTsLib, tsCompilerOptions, jsDeclarationCompilerOptions } from './lib/typescriptSettings';\nimport { hashSource } from './lib/tools';\nimport {\n resolveTypescriptLibs,\n resolveTypings,\n scriptIdToTSFilename,\n transformScriptBeforeCompilation,\n transformGlobalDeclarations,\n} from './lib/typescriptTools';\nimport type {\n FileSubscriptionResult,\n JavascriptContext,\n JavaScriptAdapterConfig,\n JsScript,\n ScriptType,\n SubscriptionResult,\n SubscribeObject,\n JavascriptTimer,\n SandboxType,\n LogMessage,\n DebugState,\n} from './types';\nimport type { PatternEventCompareFunction } from './lib/patternCompareFunctions';\nimport { decryptText } from './lib/crypto';\n\ntype MODULES = {\n fs: ProtectFs;\n 'fs/promises': ProtectFs['promises'];\n dgram: typeof dgram;\n crypto: typeof crypto;\n dns: typeof dns;\n events: typeof events;\n http: typeof http;\n https: typeof https;\n http2: typeof http2;\n net: typeof net;\n os: typeof os;\n path: typeof path;\n util: typeof util;\n child_process: typeof child_process;\n stream: typeof stream;\n zlib: typeof zlib;\n suncalc: typeof suncalc;\n axios: typeof axios;\n wake_on_lan: typeof wake_on_lan;\n nodeSchedule: typeof nodeSchedule;\n};\n\n/**\n * List of forbidden Locations for a mirror directory\n * relative to the default data directory\n * ATTENTION: the same list is also located in index_m.html!!\n */\nconst forbiddenMirrorLocations: string[] = [\n 'backup-objects',\n 'files',\n 'backitup',\n '../backups',\n '../node_modules',\n '../log',\n];\n\nconst packageJson: Record = JSON.parse(readFileSync(`${__dirname}/../package.json`).toString());\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nlet webstormDebug: string | undefined;\n\nconst isCI = !!process.env.CI;\n\n// ambient declarations for typescript\nlet tsAmbient: Record;\n\n// TypeScript's scripts are only recompiled if their source hash changes.\n// If an adapter update fixes the compilation bugs, a user won't notice until the changes and re-save the script.\n// To avoid that, we also include the\n// adapter version and TypeScript version in the hash\nconst tsSourceHashBase = `versions:adapter=${packageJson.version},typescript=${packageJson.dependencies.typescript}`;\n\n// taken from here: https://stackoverflow.com/questions/11887934/how-to-check-if-dst-daylight-saving-time-is-in-effect-and-if-so-the-offset\nfunction dstOffsetAtDate(dateInput: Date): number {\n const fullYear: number = dateInput.getFullYear() | 0;\n // \"Leap Years are any year that can be exactly divided by 4 (2012, 2016, etc.)\n // except if it can be exactly divided by 100, then it isn't (2100, 2200, etc.)\n // except if it can be exactly divided by 400, then it is (2000, 2400)\"\n // (https://www.mathsisfun.com/leap-years.html).\n const isLeapYear: 1 | 0 = ((fullYear & 3) | ((fullYear / 100) & 3)) === 0 ? 1 : 0;\n // (fullYear & 3) = (fullYear % 4), but faster\n //Alternative:var isLeapYear=(new Date(currentYear,1,29,12)).getDate()===29?1:0\n const fullMonth: number = dateInput.getMonth() | 0;\n return (\n // 1. We know what the time since the Epoch really is\n +dateInput - // same as the dateInput.getTime() method\n // 2. We know what the time since the Epoch at the start of the year is\n +new Date(fullYear, 0) - // day defaults to 1 if not explicitly zeroed\n // 3. Now, subtract what we would expect the time to be if daylight savings\n // did not exist. This yields the time-offset due to daylight savings.\n // Calculate the day of the year in the Gregorian calendar\n // The code below works based upon the facts of signed right shifts\n // • (x) >> n: shifts n and fills in the n highest bits with 0s\n // • (-x) >> n: shifts n and fills in the n highest bits with 1s\n // (This assumes that x is a positive integer)\n ((((-1 + // the first day in the year is day 1\n (31 & (-fullMonth >> 4)) + // January // (-11)>>4 = -1\n ((28 + isLeapYear) & ((1 - fullMonth) >> 4)) + // February\n (31 & ((2 - fullMonth) >> 4)) + // March\n (30 & ((3 - fullMonth) >> 4)) + // April\n (31 & ((4 - fullMonth) >> 4)) + // May\n (30 & ((5 - fullMonth) >> 4)) + // June\n (31 & ((6 - fullMonth) >> 4)) + // July\n (31 & ((7 - fullMonth) >> 4)) + // August\n (30 & ((8 - fullMonth) >> 4)) + // September\n (31 & ((9 - fullMonth) >> 4)) + // October\n (30 & ((10 - fullMonth) >> 4)) + // November\n // There are no months past December: the year rolls into the next.\n // Thus, \"fullMonth\" is 0-based, so it will never be 12 in JavaScript\n\n (dateInput.getDate() | 0)) & // get day of the month\n 0xffff) *\n 24 *\n 60 + // 24 hours in a day, 60 minutes in an hour\n (dateInput.getHours() & 0xff) * 60 + // 60 minutes in an hour\n (dateInput.getMinutes() & 0xff)) |\n 0) *\n 60 *\n 1000 - // 60 seconds in a minute * 1000 milliseconds in a second\n (dateInput.getSeconds() & 0xff) * 1000 - // 1000 milliseconds in a second\n dateInput.getMilliseconds()\n );\n}\n\nconst regExGlobalOld = /_global$/;\nconst regExGlobalNew = /script\\.js\\.global\\./;\n\nfunction checkIsGlobal(obj: ioBroker.ScriptObject): boolean {\n return obj?.common && (regExGlobalOld.test(obj.common.name) || regExGlobalNew.test(obj._id));\n}\n\nfunction fileMatching(sub: FileSubscriptionResult, id: string, fileName: string): boolean {\n if (sub.idRegEx) {\n if (!sub.idRegEx.test(id)) {\n return false;\n }\n } else {\n if (sub.id !== id) {\n return false;\n }\n }\n if (sub.fileRegEx) {\n if (!sub.fileRegEx.test(fileName)) {\n return false;\n }\n } else {\n if (sub.fileNamePattern !== fileName) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNextTimeEvent(time: string, useNextDay?: boolean): Date {\n const now: Date = getAstroStartOfDay();\n const [timeHours, timeMinutes] = time.split(':');\n const nTimeHours = parseInt(timeHours, 10);\n const nTimeMinutes = parseInt(timeMinutes, 10);\n if (\n useNextDay &&\n (now.getHours() > nTimeHours || (now.getHours() === nTimeHours && now.getMinutes() > nTimeMinutes))\n ) {\n now.setDate(now.getDate() + 1);\n }\n\n now.setHours(nTimeHours);\n now.setMinutes(nTimeMinutes);\n\n return now;\n}\n\nfunction getAstroStartOfDay(): Date {\n const d = new Date();\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n d.setUTCHours(0);\n\n return d;\n}\n\nfunction formatHoursMinutesSeconds(date: Date): string {\n const h = String(date.getHours());\n const m = String(date.getMinutes());\n const s = String(date.getSeconds());\n\n return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`;\n}\n\n// Due to a npm bug, virtual-tsc may be hoisted to the top level node_modules, but\n// TypeScript may still be in the adapter level (https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794),\n// so we need to tell virtual-tsc where TypeScript is\nsetTypeScriptResolveOptions({\n paths: [require.resolve('typescript')],\n});\n\n// compiler instance for global JS declarations\nconst jsDeclarationServer: Server = new Server(jsDeclarationCompilerOptions, isCI ? false : undefined);\n/**\n * Stores the IDs of script objects whose change should be ignored because\n * the compiled source was just updated\n */\n\nconst HTTP_STATUS_TEXTS: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 429: 'Too Many Requests / Rate Limit',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\nfunction httpStatusText(code: number): string {\n return HTTP_STATUS_TEXTS[code] ?? `Error ${code}`;\n}\n\n/**\n * Resolves the correct http/https module based on the URL string.\n * Returns null if the URL is invalid.\n */\nfunction resolveRequestModule(url: string): { module: typeof https | typeof http; isHttps: boolean } | null {\n try {\n const { protocol } = new URL(url);\n const isHttps = protocol === 'https:';\n return { module: isHttps ? https : http, isHttps };\n } catch {\n return null;\n }\n}\n\nclass JavaScript extends Adapter {\n declare public config: JavaScriptAdapterConfig;\n\n private readonly context: JavascriptContext;\n\n private errorLogFunction: {\n error: (msg: string) => void;\n warn: (msg: string) => void;\n info: (msg: string) => void;\n debug: (msg: string) => void;\n silly: (msg: string) => void;\n } = {\n error: (msg: string) => console.error(msg),\n warn: (msg: string) => console.warn(msg),\n info: (msg: string) => console.log(msg),\n debug: (msg: string) => console.debug(msg),\n silly: (msg: string) => console.debug(msg),\n };\n\n private readonly mods: MODULES;\n\n private objectsInitDone = false;\n private statesInitDone = false;\n\n private objects: Record = {};\n private states: Record = {};\n private readonly interimStateValues: Record = {};\n private readonly stateIds: string[] = [];\n /** Fast O(1) lookup set – always kept in sync with stateIds */\n private readonly stateIdSet: Set = new Set();\n\n private readonly subscriptions: SubscriptionResult[] = [];\n /**\n * O(1) dispatch map for subscriptions with exact (non-wildcard) string IDs.\n * Always kept in sync with `subscriptions`.\n */\n private readonly subscriptionsMap: Map = new Map();\n /**\n * Subscriptions whose pattern.id is a RegExp, contains wildcards (*,?), or is undefined.\n * These must still be checked linearly on every state change.\n */\n private readonly subscriptionsWildcard: SubscriptionResult[] = [];\n private readonly subscriptionsFile: FileSubscriptionResult[] = [];\n private readonly subscriptionsObject: SubscribeObject[] = [];\n /** O(1) dispatch map for subscriptionsObject – pattern → subscribers */\n private readonly subscriptionsObjectMap: Map = new Map();\n /** IO-9: Cache for sendTo broadcast – adapterName → instance list, invalidated on object change */\n private readonly sendToInstanceCache: Map = new Map();\n private readonly subscribedPatterns: Record = {};\n private readonly subscribedPatternsFile: Record = {};\n private readonly adapterSubs: Record> = {};\n private readonly timers: { [scriptName: string]: JavascriptTimer[] } = {};\n /** Reverse-index: scriptName → Set of stateIds that have timers for this script – O(1) cleanup */\n private readonly timersByScript: Map> = new Map();\n /** O(1) Set for enum-id lookups – replaces sorted string[] array */\n private readonly _enums: Set = new Set();\n private readonly names: { [name: string]: string | string[] } = {}; // name: id\n /** Reverse map: id → name for O(1) getName() lookups */\n private readonly nameById: Map = new Map();\n private readonly scripts: Record = {};\n private password: string = '';\n private readonly messageBusHandlers: Record<\n string,\n Record void }[]>\n > = {};\n private readonly logSubscriptions: Record<\n string,\n {\n sandbox: SandboxType;\n cb: (info: LogMessage) => void;\n id: number;\n severity: ioBroker.LogLevel | '*';\n }[]\n > = {};\n private readonly tempDirectories: { [scriptName: string]: string } = {}; // name: path\n private readonly folderCreationVerifiedObjects: Record = {};\n\n /** if logs are subscribed or not */\n private logSubscribed = false;\n\n private timeSettings: {\n format12: boolean;\n leadingZeros: boolean;\n } = { format12: false, leadingZeros: true };\n\n private dayScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n private sunScheduleTimer: NodeJS.Timeout | null = null; // schedule for sun moment times\n private timeScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n\n private activeStr = ''; // enabled state prefix\n\n private mirror: Mirror | undefined;\n\n private stopCounters: Record = {};\n\n private setStateCountCheckInterval: NodeJS.Timeout | null = null;\n\n /**\n * Decrypted AI API keys cached from the central credential store (manager mode),\n * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the\n * subscriptions set up in `subscribeAiCredentials`.\n */\n private readonly aiCredentialCache: Map = new Map();\n /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */\n private aiCredentialUnsubscribers: (() => Promise)[] = [];\n\n private globalScript = '';\n /** Generated declarations for global TypeScripts */\n private globalDeclarations = '';\n // Remember which definitions the global scripts\n // have access to, because it depends on the compilation order\n private knownGlobalDeclarationsByScript: Record = {};\n private globalScriptLines = 0;\n /** Running counter to build unique names for ad-hoc scripts started via the \"execute\" message */\n private executeCounter = 0;\n // compiler instance for typescript\n private tsServer: Server;\n\n private readonly ignoreObjectChange: Set = new Set();\n\n private debugState: DebugState = {\n scriptName: '',\n child: null,\n promiseOnEnd: null,\n paused: false,\n started: 0,\n running: false,\n };\n\n constructor(options: Partial = {}) {\n options = {\n ...options,\n name: 'javascript', // adapter name\n useFormatDate: true,\n /**\n * If the JS-Controller catches an unhandled error, this will be called,\n * so we have a chance to handle it ourselves.\n */\n error: (err: Error): boolean => {\n // Identify unhandled errors originating from callbacks in scripts\n // These are not caught by wrapping the execution code in try-catch\n if (err && typeof err.stack === 'string') {\n const scriptCodeMarkerIndex = err.stack.indexOf(SCRIPT_CODE_MARKER);\n if (scriptCodeMarkerIndex > -1) {\n // This is a script error\n let scriptName = err.stack.substring(scriptCodeMarkerIndex);\n scriptName = scriptName.substring(0, scriptName.indexOf(':'));\n this.logError(scriptName, 'Error:', err);\n\n // Leave the script running for now\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n // check if a path contains adaptername but not own node_module\n // this regex matched \"iobroker.javascript/\" if NOT followed by \"node_modules\"\n if (!err.stack.match(/iobroker\\.javascript[/\\\\](?!.*node_modules).*/g)) {\n // This is an error without any info on origin (mostly async errors like connection errors)\n // also consider it as being from a script\n this.log.error(\n 'An error happened which is most likely from one of your scripts, but the originating script could not be detected.',\n );\n this.log.error(`Error: ${err.message}`);\n this.log.error(err.stack);\n\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n }\n\n return false;\n },\n };\n\n super(options as AdapterOptions);\n\n this.on('objectChange', this.onObjectChange.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('ready', this.onReady.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.on('fileChange', this.onFileChange.bind(this));\n this.on('log', this.onLog.bind(this));\n\n this.mods = {\n fs: {} as ProtectFs,\n 'fs/promises': {} as ProtectFs['promises'],\n dgram,\n crypto,\n dns,\n events,\n http,\n https,\n http2,\n net,\n os,\n path,\n util,\n child_process,\n stream,\n zlib,\n\n suncalc,\n axios,\n wake_on_lan,\n nodeSchedule,\n };\n\n // check the webstorm debug and just debug modes\n let debugMode: string | undefined;\n if (process.argv) {\n for (let a = 1; a < process.argv.length; a++) {\n if (process.argv[a].startsWith('--webstorm')) {\n webstormDebug = process.argv[a].replace(/^(.*?=\\s*)/, '');\n }\n if (process.argv[a] === '--debugScript') {\n if (!process.argv[a + 1]) {\n console.log('No script name provided');\n process.exit(300);\n } else {\n debugMode = process.argv[a + 1];\n }\n }\n }\n }\n\n this.context = {\n mods: this.mods,\n objects: this.objects,\n states: this.states,\n interimStateValues: this.interimStateValues,\n stateIds: this.stateIds,\n errorLogFunction: this.errorLogFunction,\n subscriptions: this.subscriptions,\n subscriptionsMap: this.subscriptionsMap,\n subscriptionsWildcard: this.subscriptionsWildcard,\n subscriptionsFile: this.subscriptionsFile,\n subscriptionsObject: this.subscriptionsObject,\n subscriptionsObjectMap: this.subscriptionsObjectMap,\n sendToInstanceCache: this.sendToInstanceCache,\n subscribedPatterns: this.subscribedPatterns,\n subscribedPatternsFile: this.subscribedPatternsFile,\n adapterSubs: this.adapterSubs,\n cacheObjectEnums: {},\n timers: this.timers,\n timersByScript: this.timersByScript,\n enums: this._enums,\n names: this.names,\n scripts: this.scripts,\n messageBusHandlers: this.messageBusHandlers,\n logSubscriptions: this.logSubscriptions,\n tempDirectories: this.tempDirectories,\n folderCreationVerifiedObjects: this.folderCreationVerifiedObjects,\n\n isEnums: false, // If some subscription wants enum\n channels: null,\n devices: null,\n logWithLineInfo: this.logWithLineInfo.bind(this),\n scheduler: null,\n timerId: 0,\n rulesOpened: null, // opened rules\n language: this.language || 'en',\n\n updateLogSubscriptions: this.updateLogSubscriptions.bind(this),\n convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),\n updateObjectContext: this.updateObjectContext.bind(this),\n prepareStateObject: this.prepareStateObject.bind(this),\n debugMode,\n getAbsoluteDefaultDataDir,\n adapter: this as unknown as ioBroker.Adapter,\n logError: this.logError.bind(this),\n allowSelfSignedCerts: false,\n };\n\n this.tsServer = new Server(tsCompilerOptions, this.tsLog);\n }\n\n async onObjectChange(id: string, obj?: ioBroker.Object | null): Promise {\n // Check if we should ignore this change (once!) because we just updated the compiled sources\n if (this.ignoreObjectChange.has(id)) {\n // Update the cached script object and do nothing more\n this.objects[id] = obj as ioBroker.Object;\n this.ignoreObjectChange.delete(id);\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.objectsInitDone) {\n if (obj) {\n this.objects[id] = obj;\n }\n return;\n }\n\n if (id.startsWith('enum.')) {\n // clear cache\n this.context.cacheObjectEnums = {};\n\n // update this._enums Set\n if (obj) {\n this._enums.add(id);\n } else {\n this._enums.delete(id);\n }\n }\n\n // IO-9: Invalidate sendTo instance-cache when adapter instances change\n if (id.startsWith('system.adapter.')) {\n const parts = id.split('.');\n if (parts.length >= 3) {\n const adapterName = parts[2]; // e.g. \"zigbee\" from \"system.adapter.zigbee.0\"\n this.sendToInstanceCache.delete(adapterName);\n }\n }\n\n if (id === 'system.config' && obj?.common?.language) {\n // set language for debug messages\n setLanguage(obj.common.language);\n this.language = obj.common.language;\n this.context.language = this.language as ioBroker.Languages;\n }\n\n // update stored time format for variables.dayTime\n if (id === `${this.namespace}.variables.dayTime` && obj?.native) {\n this.timeSettings.format12 = obj.native.format12 || false;\n this.timeSettings.leadingZeros = obj.native.leadingZeros === undefined ? true : obj.native.leadingZeros;\n }\n\n // send changes to the disk mirror\n this.mirror?.onObjectChange(id, obj as ioBroker.ScriptObject | null);\n\n const formerObj = this.objects[id];\n\n this.updateObjectContext(id, obj); // Update all Meta object data\n\n // for the alias object changes on the state objects, we need to manually update the\n // state cache value, because the new value is only published on the next change\n if (obj?.type === 'state' && id.startsWith('alias.0.')) {\n // execute async for speed\n this.getForeignStateAsync(id)\n .then(state => {\n if (state) {\n this.states[id] = state;\n } else if (this.states[id] !== undefined) {\n delete this.states[id];\n }\n })\n .catch(() => {\n /* ignore */\n });\n }\n\n // O(1) dispatch via pattern map instead of O(n) forEach\n const objSubs = this.subscriptionsObjectMap.get(id);\n if (objSubs) {\n for (const sub of objSubs) {\n try {\n sub.callback(id, obj);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n\n // handle Script object updates\n if (!obj && formerObj?.type === 'script') {\n // Object Deleted just now\n if (checkIsGlobal(formerObj)) {\n // it was a global Script, and it was enabled and is now deleted => restart adapter\n if (formerObj.common.enabled) {\n this.log.info(`Active global Script ${id} deleted. Restart instance.`);\n this.restart();\n }\n } else if (formerObj.common?.engine === `system.adapter.${this.namespace}`) {\n // It was a non-global Script and deleted => stop and remove it\n await this.stopScript(id);\n\n // delete scriptEnabled.blabla variable\n const idActive = `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idActive);\n await this.delObjectAsync(idActive);\n\n // delete scriptProblem.blabla variable\n const idProblem = `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idProblem);\n await this.delObjectAsync(idProblem);\n }\n } else if (!formerObj && obj?.type === 'script') {\n // New script that does not exist before\n if (checkIsGlobal(obj)) {\n // new global script added => restart adapter\n if (obj.common.enabled) {\n this.log.info(`Active global Script ${id} created. Restart instance.`);\n this.restart();\n }\n } else if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // new non-global script - create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n if (obj.common.enabled) {\n // if enabled => Start a script\n await this.loadScriptById(id);\n }\n }\n } else if (obj?.type === 'script' && formerObj?.common) {\n // Script changed ...\n if (checkIsGlobal(obj)) {\n if (obj.common.enabled || formerObj.common.enabled) {\n this.log.info(`Global Script ${id} updated. Restart instance.`);\n this.restart();\n }\n } else {\n // No global script\n if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n }\n\n if (\n (formerObj.common.enabled && !obj.common.enabled) ||\n (formerObj.common.engine === `system.adapter.${this.namespace}` &&\n obj.common.engine !== `system.adapter.${this.namespace}`)\n ) {\n // Script disabled\n if (formerObj.common.enabled && formerObj.common.engine === `system.adapter.${this.namespace}`) {\n // Remove it from executing\n await this.stopScript(id);\n }\n } else if (\n (!formerObj.common.enabled && obj.common.enabled) ||\n (formerObj.common.engine !== `system.adapter.${this.namespace}` &&\n obj.common.engine === `system.adapter.${this.namespace}`)\n ) {\n // Script enabled\n\n if (obj.common.enabled && obj.common.engine === `system.adapter.${this.namespace}`) {\n // Start script\n await this.loadScriptById(id);\n }\n } else if (\n obj.common.engine === `system.adapter.${this.namespace}` ||\n formerObj.common.engine === `system.adapter.${this.namespace}`\n ) {\n // Source changed => restart the script (only on the relevant instance)\n this.stopCounters[id] = this.stopCounters[id] ? this.stopCounters[id] + 1 : 1;\n void this.stopScript(id).then(() => {\n // only start again after stop when \"last\" object change to prevent problems on\n // multiple changes in fast frequency\n if (!--this.stopCounters[id]) {\n void this.loadScriptById(id);\n }\n });\n }\n }\n }\n }\n\n onStateChange(id: string, state?: ioBroker.State | null): void {\n if (this.interimStateValues[id] !== undefined) {\n // any update invalidates the remembered interim value\n delete this.interimStateValues[id];\n }\n if (!id || id.startsWith('messagebox.') || id.startsWith('log.')) {\n return;\n }\n\n if (id === `${this.namespace}.debug.to` && state && !state.ack) {\n if (!this.context.debugMode) {\n this.debugSendToInspector(state.val);\n }\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.statesInitDone) {\n if (state) {\n this.states[id] = state;\n }\n return;\n }\n\n const oldState: ioBroker.State | null | undefined = this.states[id];\n if (state) {\n if (oldState) {\n // enable or disable script\n if (!state.ack && id.startsWith(this.activeStr) && this.objects[id]?.native?.script) {\n void this.extendForeignObject(this.objects[id].native.script, {\n common: { enabled: state.val },\n });\n }\n\n // monitor if the adapter is alive and send all subscriptions once more, after the adapter goes online\n if (/*oldState && */ oldState.val === false && state.val && id.endsWith('.alive')) {\n if (this.adapterSubs[id]) {\n const parts = id.split('.');\n const a = `${parts[2]}.${parts[3]}`;\n for (const sub of this.adapterSubs[id]) {\n this.log.info(`Detected coming adapter \"${a}\". Send subscribe: ${sub}`);\n this.sendTo(a, 'subscribe', sub);\n }\n }\n }\n } else if (/*!oldState && */ !this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n this.states[id] = state;\n } else {\n if (oldState) {\n delete this.states[id];\n }\n state = {} as ioBroker.State;\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n }\n\n // Collect matching subscriptions:\n // 1. O(1) exact-id map lookup – only buckets for this specific state id\n // 2. Linear scan over wildcard/regex subscriptions (unavoidable)\n // EventObj is created lazily – only when at least one subscription must be dispatched.\n const exactSubs = this.subscriptionsMap.get(id);\n const wildcardSubs = this.subscriptionsWildcard;\n const hasWork = (exactSubs && exactSubs.length > 0) || wildcardSubs.length > 0;\n\n if (!hasWork) {\n return;\n }\n\n let _eventObj: EventObj | null = null;\n const getEvent = (): EventObj => {\n if (!_eventObj) {\n _eventObj = createEventObject(\n this.context,\n id,\n this.convertBackStringifiedValues(id, state),\n this.convertBackStringifiedValues(id, oldState),\n );\n }\n return _eventObj;\n };\n\n if (exactSubs) {\n for (let i = 0, l = exactSubs.length; i < l; i++) {\n const sub = exactSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n // if this state matches any subscriptions\n for (let i = 0, l = wildcardSubs.length; i < l; i++) {\n const sub = wildcardSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n onFileChange(id: string, fileName: string, size: number | null): void {\n // if this file matches any subscriptions\n for (let i = 0, l = this.subscriptionsFile.length; i < l; i++) {\n const sub = this.subscriptionsFile[i];\n if (sub && fileMatching(sub, id, fileName)) {\n try {\n sub.callback(id, fileName, size, sub.withFile);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n async onUnload(callback: () => void): Promise {\n try {\n await this.debugStop();\n this.stopTimeSchedules();\n if (this.setStateCountCheckInterval) {\n clearInterval(this.setStateCountCheckInterval);\n this.setStateCountCheckInterval = null;\n }\n await this.unsubscribeAiCredentials();\n await this.stopAllScripts();\n } catch (err: unknown) {\n this.log.error(`Error during unload: ${(err as Error).message}`);\n } finally {\n if (typeof callback === 'function') {\n callback();\n }\n }\n }\n\n async onReady(): Promise {\n this.errorLogFunction = this.log;\n this.context.errorLogFunction = this.log;\n this.config.maxSetStatePerMinute = parseInt(this.config.maxSetStatePerMinute as unknown as string, 10) || 1000;\n this.config.maxTriggersPerScript = parseInt(this.config.maxTriggersPerScript as unknown as string, 10) || 100;\n\n if (this.supportsFeature?.('PLUGINS')) {\n const sentryInstance: InstanceType = this.getPluginInstance('sentry') as InstanceType<\n typeof SentryPlugin\n >;\n if (sentryInstance) {\n const Sentry = sentryInstance.getSentryObject();\n Sentry?.withScope(scope => {\n scope.addEventProcessor((event, _hint) => {\n if (event.exception?.values?.[0]) {\n const eventData = event.exception.values[0];\n if (\n eventData.stacktrace?.frames &&\n Array.isArray(eventData.stacktrace.frames) &&\n eventData.stacktrace.frames.length\n ) {\n // Exclude event if script Marker is included\n if (\n eventData.stacktrace.frames.find(frame =>\n frame.filename?.includes(SCRIPT_CODE_MARKER),\n )\n ) {\n return null;\n }\n // Exclude event if own directory is included but not inside own node_modules\n const ownNodeModulesDir = join(__dirname, 'node_modules');\n if (\n !eventData.stacktrace.frames.find(\n frame =>\n frame.filename?.includes(__dirname) &&\n !frame.filename.includes(ownNodeModulesDir),\n )\n ) {\n return null;\n }\n // We have exception data and did not sort it out, so report it\n return event;\n }\n }\n\n // No exception in it ... do not report\n return null;\n });\n });\n }\n }\n\n await this.main();\n }\n\n /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */\n private async readAiCredentialKey(id: string): Promise {\n try {\n const cred = await Credentials.getCredentials(this, id);\n return (cred?.values?.key || '').trim();\n } catch (e) {\n this.log.warn(`Cannot read AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`);\n return '';\n }\n }\n\n /**\n * Resolve the API key (and base URL) for an AI provider.\n *\n * In `manual` mode the key comes from the encryptedNative adapter config.\n * In `manager` mode the config only stores the ID of a credential in the central\n * ioBroker credential store (`system.credentials.*`); the actual key is taken from the\n * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are\n * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly.\n *\n * The settings-dialog Test button may pass form values that are not saved yet\n * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config.\n */\n private async resolveAiCredentials(\n provider: string,\n opts: {\n messageBaseUrl?: string;\n messageApiKey?: string;\n messageCredentialId?: string;\n credentialType?: 'manual' | 'manager';\n } = {},\n ): Promise<{ apiKey: string; baseUrl: string }> {\n const mode = opts.credentialType || this.config.credentialType || 'manual';\n if (mode === 'manager') {\n // The base URL is not a secret and is resolved the same way in both modes.\n const { baseUrl } = resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n const id = (opts.messageCredentialId || getProviderCredentialId(this.config, provider)).trim();\n if (!id) {\n return { apiKey: '', baseUrl };\n }\n // Prefer the cached value kept fresh by the credential subscription.\n const cached = this.aiCredentialCache.get(id);\n const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id);\n return { apiKey, baseUrl };\n }\n // Manual mode. The Test button sends the current form key (maybe empty) — let it win.\n if (opts.messageApiKey !== undefined) {\n return resolveTestCredentials(this.config, provider, opts.messageApiKey, opts.messageBaseUrl);\n }\n return resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n }\n\n /**\n * In `manager` mode, subscribe to all configured AI credentials so that edits made in the\n * admin credential manager (Settings → Credentials) are picked up live, without restarting\n * the adapter (the `system.credentials.*` objects are global, not part of the instance config).\n * The decrypted keys are cached and kept fresh by the subscription handlers.\n */\n private async subscribeAiCredentials(): Promise {\n // Always start from a clean state (idempotent — also used to re-subscribe).\n await this.unsubscribeAiCredentials();\n if (this.config.credentialType !== 'manager') {\n return;\n }\n // Collect the distinct credential IDs configured across all AI providers.\n const ids = new Set();\n for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) {\n const id = getProviderCredentialId(this.config, provider);\n if (id) {\n ids.add(id);\n }\n }\n for (const id of ids) {\n try {\n const unsubscribe = await Credentials.subscribeCredentials(\n this,\n id,\n (changedId, cred) => {\n if (cred) {\n this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim());\n this.log.debug(`AI credential \"${changedId}\" updated`);\n } else {\n // The credential was deleted\n this.aiCredentialCache.delete(changedId);\n this.log.debug(`AI credential \"${changedId}\" was deleted`);\n }\n },\n );\n this.aiCredentialUnsubscribers.push(unsubscribe);\n // Prime the cache with the current value (the handler may only fire on later changes).\n this.aiCredentialCache.set(id, await this.readAiCredentialKey(id));\n } catch (e) {\n this.log.warn(\n `Cannot subscribe to AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n if (this.aiCredentialUnsubscribers.length) {\n this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`);\n }\n }\n\n /** Tear down all AI credential subscriptions and clear the cache. */\n private async unsubscribeAiCredentials(): Promise {\n const unsubscribers = this.aiCredentialUnsubscribers;\n this.aiCredentialUnsubscribers = [];\n this.aiCredentialCache.clear();\n for (const unsubscribe of unsubscribers) {\n try {\n await unsubscribe();\n } catch (e) {\n this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n switch (obj?.command) {\n // process messageTo commands\n case 'toScript':\n case 'jsMessageBus':\n if (\n obj.message &&\n (obj.message.instance === null ||\n obj.message.instance === undefined ||\n `javascript.${obj.message.instance}` === this.namespace ||\n obj.message.instance === this.namespace)\n ) {\n Object.keys(this.messageBusHandlers).forEach(name => {\n // the script name could be script.js.xxx or only xxx\n if (\n (!obj.message.script || obj.message.script === name) &&\n this.messageBusHandlers[name][obj.message.message]\n ) {\n this.messageBusHandlers[name][obj.message.message].forEach(handler => {\n const sandbox = handler.sandbox;\n\n sandbox.verbose && sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');\n\n try {\n if (obj.callback) {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n\n this.sendTo(obj.from, obj.command, result, obj.callback);\n });\n } else {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n sandbox.verbose &&\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n });\n }\n } catch (err: unknown) {\n void this.setState(\n `scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`,\n true,\n true,\n );\n this.logError(name, 'Error in callback:', err as Error);\n }\n });\n }\n });\n }\n break;\n\n case 'loadTypings': {\n // Load typings for the editor\n const typings: Record = {};\n\n // try to load TypeScript lib files from disk\n try {\n const typescriptLibs = resolveTypescriptLibs(targetTsLib);\n Object.assign(typings, typescriptLibs);\n } catch {\n /* ok, no lib then */\n }\n\n // provide the already-loaded ioBroker typings and global script declarations\n Object.assign(typings, tsAmbient);\n\n // also provide the known global declarations for each global script\n for (const globalScriptPaths of Object.keys(this.knownGlobalDeclarationsByScript)) {\n typings[`${globalScriptPaths}.d.ts`] = this.knownGlobalDeclarationsByScript[globalScriptPaths];\n }\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { typings }, obj.callback);\n }\n break;\n }\n\n case 'calcAstroAll': {\n if (obj.message) {\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n let astroEvents: GetTimesResult & { nextSunrise: Date; nextSunset: Date } = {} as GetTimesResult & {\n nextSunrise: Date;\n nextSunset: Date;\n };\n try {\n astroEvents = this.mods.suncalc.getTimes(today, latitude, longitude);\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n if (astroEvents) {\n try {\n astroEvents.nextSunrise = this.getAstroEvent(\n today,\n obj.message.sunriseEvent || this.config.sunriseEvent,\n obj.message.sunriseLimitStart || this.config.sunriseLimitStart,\n obj.message.sunriseLimitEnd || this.config.sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n astroEvents.nextSunset = this.getAstroEvent(\n today,\n obj.message.sunsetEvent || this.config.sunsetEvent,\n obj.message.sunsetLimitStart || this.config.sunsetLimitStart,\n obj.message.sunsetLimitEnd || this.config.sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n }\n\n const result: Record = {};\n const keys = Object.keys(astroEvents).sort(\n (a, b) =>\n (astroEvents as unknown as Record)[a] -\n (astroEvents as unknown as Record)[b],\n );\n keys.forEach(key => {\n const validDate =\n (astroEvents as unknown as Record)[key] !== null &&\n !isNaN((astroEvents as unknown as Record)[key].getTime());\n\n result[key] = {\n isValidDate: validDate,\n serverTime: validDate\n ? formatHoursMinutesSeconds((astroEvents as unknown as Record)[key])\n : 'n/a',\n date: validDate\n ? (astroEvents as unknown as Record)[key].toISOString()\n : 'n/a',\n };\n });\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, result, obj.callback);\n }\n }\n break;\n }\n\n case 'calcAstro': {\n if (obj.message) {\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n\n const sunriseEvent = obj.message?.sunriseEvent || this.config.sunriseEvent;\n const sunriseLimitStart = obj.message?.sunriseLimitStart || this.config.sunriseLimitStart;\n const sunriseLimitEnd = obj.message?.sunriseLimitEnd || this.config.sunriseLimitEnd;\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const nextSunrise = this.getAstroEvent(\n today,\n sunriseEvent,\n sunriseLimitStart,\n sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n\n const sunsetEvent = obj.message?.sunsetEvent || this.config.sunsetEvent;\n const sunsetLimitStart = obj.message?.sunsetLimitStart || this.config.sunsetLimitStart;\n const sunsetLimitEnd = obj.message?.sunsetLimitEnd || this.config.sunsetLimitEnd;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const nextSunset = this.getAstroEvent(\n today,\n sunsetEvent,\n sunsetLimitStart,\n sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n\n const validDateSunrise = nextSunrise !== null && !isNaN(nextSunrise.getTime());\n const validDateSunset = nextSunset !== null && !isNaN(nextSunset.getTime());\n\n this.log.debug(\n `calcAstro sunrise: ${sunriseEvent} -> start ${sunriseLimitStart}, end: ${sunriseLimitEnd}, offset: ${sunriseOffset} - ${validDateSunrise ? nextSunrise.toISOString() : 'n/a'}`,\n );\n this.log.debug(\n `calcAstro sunset: ${sunsetEvent} -> start ${sunsetLimitStart}, end: ${sunsetLimitEnd}, offset: ${sunsetOffset} - ${validDateSunset ? nextSunset.toISOString() : 'n/a'}`,\n );\n\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n nextSunrise: {\n isValidDate: validDateSunrise,\n serverTime: validDateSunrise ? formatHoursMinutesSeconds(nextSunrise) : 'n/a',\n date: nextSunrise.toISOString(),\n },\n nextSunset: {\n isValidDate: validDateSunset,\n serverTime: validDateSunset ? formatHoursMinutesSeconds(nextSunset) : 'n/a',\n date: nextSunset.toISOString(),\n },\n },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'debug': {\n if (!this.context.debugMode) {\n this.debugStart(obj.message);\n }\n break;\n }\n\n case 'debugStop': {\n if (!this.context.debugMode) {\n void this.debugStop().then(() => console.log('stopped'));\n }\n break;\n }\n\n case 'rulesOn': {\n this.context.rulesOpened = obj.message;\n console.log(`Enable messaging for ${this.context.rulesOpened}`);\n break;\n }\n\n case 'rulesOff': {\n // maybe if (context.rulesOpened === obj.message)\n console.log(`Disable messaging for ${this.context.rulesOpened}`);\n this.context.rulesOpened = null;\n break;\n }\n\n case 'getIoBrokerDataDir': {\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n dataDir: getAbsoluteDefaultDataDir(),\n sep,\n },\n obj.callback,\n );\n }\n break;\n }\n\n case 'chatCompletion': {\n // Proxy chat completion requests to an OpenAI-compatible API endpoint.\n // API keys are resolved server-side from the encryptedNative config or the central\n // credentials manager — they never leave the adapter (frontend only sends `provider`).\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const chatModel = (obj.message?.model || '').trim();\n const messages = obj.message?.messages;\n const tools = obj.message?.tools;\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageBaseUrl: obj.message?.baseUrl,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n if (!chatModel || !messages) {\n this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback);\n return;\n }\n\n let url: string;\n const chatHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n let bodyObj: Record;\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/messages';\n chatHeaders['x-api-key'] = apiKey;\n chatHeaders['anthropic-version'] = '2023-06-01';\n // Translate OpenAI-format messages/tools into Anthropic's content-block format.\n const { system: systemText, messages: anthropicMessages } =\n translateMessagesToAnthropic(messages);\n const anthropicTools = tools?.length ? translateToolsToAnthropic(tools) : [];\n bodyObj = {\n model: chatModel,\n max_tokens: 8192,\n stream: false,\n ...(systemText ? { system: systemText } : {}),\n messages: anthropicMessages,\n ...(anthropicTools.length ? { tools: anthropicTools } : {}),\n };\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions';\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/chat/completions';\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/chat/completions`;\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = {\n model: chatModel,\n messages,\n stream: false,\n ...(tools?.length ? { tools } : {}),\n // Disable thinking/reasoning for local models to save context and speed\n ...(baseUrl ? { reasoning_effort: 'none' } : {}),\n };\n }\n\n const body = JSON.stringify(bodyObj);\n const bodyBuffer = Buffer.from(body, 'utf8');\n chatHeaders['Content-Length'] = bodyBuffer.length;\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'POST',\n headers: chatHeaders,\n timeout: 600000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n let content: string;\n let tool_calls: unknown;\n if (provider === 'anthropic') {\n const translated = translateAnthropicResponseToOpenAI(parsed);\n content = translated.content;\n tool_calls = translated.tool_calls;\n } else {\n const message = parsed.choices?.[0]?.message;\n content = message?.content || '';\n tool_calls = message?.tool_calls;\n }\n if (!content && !(tool_calls as unknown[] | undefined)?.length) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Empty response from API' },\n obj.callback,\n );\n } else {\n this.sendTo(\n obj.from,\n obj.command,\n {\n success: true,\n content,\n ...(tool_calls ? { tool_calls } : {}),\n },\n obj.callback,\n );\n }\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else {\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (600s)' }, obj.callback);\n });\n\n req.write(bodyBuffer);\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'testApiConnection': {\n // Test connection to an OpenAI-compatible API endpoint.\n // The settings-dialog Test button sends the current form value as `apiKey`\n // (so users can test before saving); otherwise we fall back to the stored key.\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageApiKey: obj.message?.apiKey,\n messageBaseUrl: obj.message?.baseUrl,\n messageCredentialId: obj.message?.credentialId,\n credentialType: obj.message?.credentialType,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n\n let url: string;\n const testHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/models';\n testHeaders['x-api-key'] = apiKey;\n testHeaders['anthropic-version'] = '2023-06-01';\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/models';\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/models';\n testHeaders.Authorization = `Bearer ${apiKey}`;\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/models`;\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'GET',\n headers: testHeaders,\n timeout: 10000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n const models: string[] = (parsed.data || [])\n .map((m: { id: string }) =>\n m.id.startsWith('models/') ? m.id.substring(7) : m.id,\n )\n .sort();\n this.sendTo(\n obj.from,\n obj.command,\n { success: true, models, count: models.length },\n obj.callback,\n );\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else if (res.statusCode === 401) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid API key (401)' },\n obj.callback,\n );\n } else if (res.statusCode === 403) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Access denied (403)' },\n obj.callback,\n );\n } else {\n // Include response body for debugging\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (10s)' }, obj.callback);\n });\n\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'getAvailableAiProviders': {\n // Reports which AI providers have stored credentials (keys never leave the backend).\n if (obj.callback) {\n const providers = listAvailableProviders(this.config);\n this.sendTo(obj.from, obj.command, { providers }, obj.callback);\n }\n break;\n }\n\n case 'prettier': {\n // Format the code with Prettier\n if (obj.message && typeof obj.message.code === 'string') {\n try {\n prettier\n .format(obj.message.code, {\n parser: obj.message.type === 'typescript' ? 'babel-ts' : 'babel',\n printWidth: 120,\n semi: true,\n tabWidth: 4,\n useTabs: false,\n trailingComma: 'all',\n singleQuote: true,\n singleAttributePerLine: true,\n endOfLine: 'lf',\n bracketSpacing: true,\n arrowParens: 'avoid',\n quoteProps: 'as-needed',\n })\n .then(formattedCode => {\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { code: formattedCode }, obj.callback);\n } else {\n this.logWithLineInfo(`Formatted code:\\n${formattedCode}`);\n }\n })\n .catch(e => {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n });\n } catch (e) {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n }\n } else {\n this.sendTo(obj.from, obj.command, { error: 'No code provided' }, obj.callback);\n }\n break;\n }\n\n case 'execute': {\n if (obj.callback) {\n void this.executeScript(obj.message)\n .then(result => this.sendTo(obj.from, obj.command, result, obj.callback))\n .catch(err =>\n this.sendTo(\n obj.from,\n obj.command,\n {\n ok: false,\n error: `Internal error: ${err as Error}`,\n logs: [],\n output: '',\n },\n obj.callback,\n ),\n );\n }\n break;\n }\n }\n }\n\n onLog(msg: any): void {\n for (const name of Object.keys(this.logSubscriptions)) {\n for (const handler of this.logSubscriptions[name]) {\n if (\n typeof handler.cb === 'function' &&\n (handler.severity === '*' || handler.severity === msg.severity)\n ) {\n handler.sandbox.logHandler = handler.severity || '*';\n handler.cb.call(handler.sandbox, msg);\n handler.sandbox.logHandler = undefined;\n }\n }\n }\n }\n\n logError(scriptName: string, msg: string, e: Error, offs?: number): void {\n const stack = e.stack ? e.stack.toString().split('\\n') : e ? e.toString() : '';\n if (!msg.includes('\\n')) {\n msg = msg.replace(/[: ]*$/, ': ');\n }\n if (!msg.endsWith(' ')) {\n msg += ':';\n }\n if (!scriptName.startsWith(SCRIPT_CODE_MARKER)) {\n scriptName = SCRIPT_CODE_MARKER + scriptName;\n }\n\n this.errorLogFunction.error(`${scriptName}: ${msg}${this.fixLineNo(stack[0])}`);\n for (let i = offs || 1; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.error(`${scriptName}: ${this.fixLineNo(stack[i])}`);\n }\n }\n\n logWithLineInfo(msg: string): void {\n this.errorLogFunction.warn(msg);\n\n // get current error stack\n const stack = new Error().stack?.split('\\n');\n\n if (stack) {\n for (let i = 3; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInContext|runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.warn(this.fixLineNo(stack[i]));\n }\n }\n }\n\n async main(): Promise {\n // Patch the font as it sometimes is wrong\n if (!this.context.debugMode) {\n if (await this.patchFont()) {\n this.log.debug('Font patched');\n }\n }\n\n this.log.debug(`config.subscribe (Do not subscribe all states on start): ${this.config.subscribe}`);\n\n // correct jsonConfig for admin\n const instObj: ioBroker.InstanceObject | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (instObj?.common) {\n if (instObj.common.adminUI?.config !== 'json') {\n if (instObj.common.adminUI) {\n instObj.common.adminUI.config = 'json';\n } else {\n instObj.common.adminUI = { config: 'json' };\n }\n void this.setForeignObject(instObj._id, instObj);\n }\n }\n\n if (webstormDebug) {\n this.errorLogFunction = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n debug: console.log,\n silly: console.log,\n };\n this.context.errorLogFunction = this.errorLogFunction;\n }\n this.activeStr = `${this.namespace}.scriptEnabled.`;\n\n this.mods.fs = new ProtectFs(this.log, getAbsoluteDefaultDataDir());\n this.mods['fs/promises'] = this.mods.fs.promises; // to avoid require('fs/promises');\n\n // try to read TS declarations\n try {\n tsAmbient = {\n 'javascript.d.ts': readFileSync(this.mods.path.join(__dirname, 'lib/javascript.d.ts'), 'utf8'),\n };\n this.tsServer.provideAmbientDeclarations(tsAmbient);\n jsDeclarationServer.provideAmbientDeclarations(tsAmbient);\n } catch (err: unknown) {\n this.log.warn(`Could not read TypeScript ambient declarations: ${err as Error}`);\n // This should not happen, so send an error report to Sentry\n if (this.supportsFeature && this.supportsFeature('PLUGINS')) {\n const sentryInstance = this.getPluginInstance('sentry');\n if (sentryInstance) {\n const sentryObject = sentryInstance.getSentryObject();\n sentryObject?.captureException(err as Error);\n }\n }\n // Keep the adapter from crashing when the included typings cannot be read\n tsAmbient = {};\n }\n\n await this.installLibraries();\n // Load the TS declarations for Node.js and all 3rd party modules\n this.loadTypeScriptDeclarations();\n\n await this.getData();\n this.context.scheduler = new Scheduler(\n this.log,\n Date,\n this.mods.suncalc,\n this.config.latitude,\n this.config.longitude,\n );\n await this.dayTimeSchedules();\n await this.sunTimeSchedules();\n await this.timeSchedule();\n\n // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it\n // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode)\n this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts;\n\n // In `manager` credential mode, subscribe to the configured AI credentials so changes in the\n // central credential store are picked up live (the keys are cached for the AI sendTo handlers).\n await this.subscribeAiCredentials();\n\n const doc = await this.getObjectViewAsync('script', 'javascript', {});\n if (doc?.rows?.length) {\n // sort global scripts if configured\n if (this.config.sortGlobalScriptsAlphabetically) {\n doc.rows.sort((a, b) => a.value._id.localeCompare(b.value._id));\n }\n // assemble global script\n for (let g = 0; g < doc.rows.length; g++) {\n const obj = doc.rows[g].value;\n if (checkIsGlobal(obj)) {\n if (obj && obj.common) {\n const engineType = (obj.common.engineType || '').toLowerCase();\n\n if (obj.common.enabled) {\n if (engineType.startsWith('typescript')) {\n // TypeScript\n this.log.info(`${obj._id}: compiling TypeScript source...`);\n // In order to compile global TypeScript, we need to do some transformations\n // 1. For top-level-await, some statements must be wrapped in an immediately-invoked async function\n // 2. If any global script uses `import`, the declarations are no longer visible if they are not exported with `declare global`\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, true);\n // The source code must be transformed in order to support top level await\n // Global scripts must not be treated as a module, otherwise their methods\n // cannot be found by the normal scripts\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash: string = hashSource(\n tsSourceHashBase + this.globalDeclarations + transformedSource,\n );\n\n let compiled: string | undefined;\n let declarations: string | undefined;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n declarations = obj.common.declarations;\n this.log.info(\n `${obj._id}: source code did not change, using cached compilation result...`,\n );\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n continue;\n }\n\n const errors = tsCompiled.diagnostics\n .map(diag => `${diag.annotatedSource}\\n`)\n .join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(\n `${obj._id}: TypeScript compilation completed with errors:\\n${errors}`,\n );\n } else {\n this.log.info(`${obj._id}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result;\n // Global scripts that have been transformed to support `import` need to have their declarations transformed aswell\n declarations = transformGlobalDeclarations(tsCompiled.declarations || '');\n\n const newCommon: {\n compiled: string | undefined;\n declarations?: string;\n sourceHash: string;\n } = {\n sourceHash,\n compiled,\n };\n if (declarations) {\n newCommon.declarations = declarations;\n }\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(obj._id); // ignore the next change and don't restart scripts\n void this.extendForeignObject(obj._id, {\n common: newCommon,\n });\n } else {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${errors}`);\n continue;\n }\n }\n this.globalScript += `${compiled}\\n`;\n // if declarations were generated, remember them\n if (declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, declarations);\n }\n } else {\n // javascript\n const sourceCode = obj.common.source;\n this.globalScript += `${sourceCode}\\n`;\n\n // try to compile the declarations so TypeScripts can use\n // functions defined in global JavaScripts\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = jsDeclarationServer.compile(filename, sourceCode);\n } catch (err: unknown) {\n this.log.warn(\n `${obj._id}: Error while generating type declarations, skipping:\\n${err as Error}`,\n );\n continue;\n }\n // if declarations were generated, remember them\n if (tsCompiled.success && tsCompiled.declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, tsCompiled.declarations);\n }\n }\n }\n }\n }\n }\n }\n\n this.globalScript = this.globalScript.replace(/\\r\\n/g, '\\n');\n this.globalScriptLines = this.globalScript.split(/\\n/g).length - 1;\n\n if (doc?.rows?.length) {\n // load all scripts\n for (let i = 0; i < doc.rows.length; i++) {\n if (!checkIsGlobal(doc.rows[i].value)) {\n void this.loadScript(doc.rows[i].value);\n }\n }\n }\n\n if (this.config.mirrorPath?.trim()) {\n this.config.mirrorInstance = parseInt(this.config.mirrorInstance as unknown as string, 10) || 0;\n if (this.instance === this.config.mirrorInstance) {\n const ioBDataDir = getAbsoluteDefaultDataDir() + sep;\n this.config.mirrorPath = normalize(this.config.mirrorPath);\n let mirrorForbidden = false;\n for (let dir of forbiddenMirrorLocations) {\n dir = join(ioBDataDir, dir) + sep;\n if (dir.includes(this.config.mirrorPath) || this.config.mirrorPath.startsWith(dir)) {\n this.log.error(`The Mirror directory is not allowed to be a central ioBroker directory!`);\n this.log.error(`Directory ${this.config.mirrorPath} is not allowed to mirror files!`);\n mirrorForbidden = true;\n break;\n }\n }\n if (!mirrorForbidden) {\n this.mirror = new Mirror({\n adapter: this,\n log: this.log,\n diskRoot: this.config.mirrorPath,\n });\n }\n }\n }\n\n // Check setState counter per minute and stop a script if too high\n this.setStateCountCheckInterval = setInterval(() => {\n for (const id of Object.keys(this.scripts)) {\n if (!this.scripts[id]) {\n continue;\n }\n const currentSetStatePerMinuteCounter = this.scripts[id].setStatePerMinuteCounter;\n this.scripts[id].setStatePerMinuteCounter = 0;\n if (currentSetStatePerMinuteCounter > this.config.maxSetStatePerMinute) {\n this.scripts[id].setStatePerMinuteProblemCounter++;\n this.log.debug(\n `${id}: Script has reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute in ${this.scripts[id].setStatePerMinuteProblemCounter} consecutive minutes`,\n );\n // Allow \"too high counters\" for 1 minute for script starts or such and only\n // stop the script when lasts longer\n if (this.scripts[id].setStatePerMinuteProblemCounter > 1) {\n this.log.error(\n `${id}: Script is calling setState more than ${this.config.maxSetStatePerMinute} times per minute! Stopping Script now! Please check your script!`,\n );\n void this.stopScript(id);\n }\n } else if (this.scripts[id].setStatePerMinuteProblemCounter > 0) {\n this.scripts[id].setStatePerMinuteProblemCounter--;\n this.log.debug(\n `Script ${id} has NOT reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute. Decrease problem counter to ${this.scripts[id].setStatePerMinuteProblemCounter}`,\n );\n }\n }\n }, 60_000).unref();\n }\n\n private loadTypeScriptDeclarations(): void {\n // try to load the typings on disk for all 3rd party modules\n const packages = [\n 'node', // this provides auto-completion for most builtins\n '@iobroker/types', // this provides auto-completion for most builtins\n ];\n // Also include user-selected libraries (but only those that are also installed)\n if (typeof this.config?.libraries === 'string' && typeof this.config.libraryTypings === 'string') {\n const installedLibs = this.config.libraries\n .split(/[,;\\s]+/)\n .map(s => s.trim().split('@')[0])\n .filter(s => !!s);\n\n const wantsTypings = this.config.libraryTypings\n .split(/[,;\\s]+/)\n .map(s => s.trim())\n .filter(s => !!s);\n\n // O(1) lookups – avoids O(n²) Array.includes inside loops\n const installedSet = new Set(installedLibs);\n const wantsSet = new Set(wantsTypings);\n const packagesSet = new Set(packages);\n\n // Add all installed libraries the user has requested typings for to the list of packages\n for (const lib of installedLibs) {\n if (wantsSet.has(lib) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n // Some packages have submodules (e.g., rxjs/operators) that are not exposed through the main entry point\n // If typings are requested for them, also add them if the base module is installed\n for (const lib of wantsTypings) {\n // Extract the package name and check if we need to add it\n if (!lib.includes('/')) {\n continue;\n }\n const pkgName = lib.substring(0, lib.indexOf('/'));\n\n if (installedSet.has(pkgName) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n }\n for (const pkg of packages) {\n let pkgTypings = resolveTypings(\n pkg,\n this.getAdapterScopedPackageIdentifier ? this.getAdapterScopedPackageIdentifier(pkg) : pkg,\n // node needs ambient typings, so we don't wrap it in declare module\n pkg !== 'node',\n );\n if (!pkgTypings) {\n // Create the empty dummy declarations so users don't get the \"not found\" error\n // for installed packages\n if (pkg.includes('/')) {\n pkgTypings = {\n [`node_modules/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n } else {\n pkgTypings = {\n [`node_modules/@types/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n }\n }\n this.log.debug(`Loaded TypeScript definitions for \"${pkg}\": ${JSON.stringify(Object.keys(pkgTypings))}`);\n // remember the declarations for the editor\n Object.assign(tsAmbient, pkgTypings);\n // and give the language servers access to them\n this.tsServer.provideAmbientDeclarations(pkgTypings);\n jsDeclarationServer.provideAmbientDeclarations(pkgTypings);\n }\n }\n\n updateObjectContext(id: string, obj: ioBroker.Object | null | undefined): void {\n if (obj) {\n // add state to state ID's list\n if (obj.type === 'state') {\n if (!this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn] ||= new Set();\n this.context.channels[chn].add(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev] ||= new Set();\n this.context.devices[dev].add(id);\n }\n }\n } else {\n // delete object from state ID's list\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn]?.delete(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev]?.delete(id);\n }\n\n delete this.folderCreationVerifiedObjects[id];\n }\n\n if (!obj && this.objects[id]) {\n // objects were deleted\n this.removeFromNames(id);\n delete this.objects[id];\n } else if (obj && !this.objects[id]) {\n // object was added\n this.objects[id] = obj;\n this.addToNames(obj);\n } else if (obj && this.objects[id].common) {\n // Object just changed\n this.objects[id] = obj;\n\n const n = this.getName(id);\n let nn = this.objects[id].common ? this.objects[id].common.name : '';\n\n if (nn && typeof nn === 'object') {\n nn = nn[getLanguage()] || nn.en;\n }\n\n if (n !== nn) {\n if (n) {\n this.removeFromNames(id);\n }\n if (nn) {\n this.addToNames(obj);\n }\n }\n }\n }\n\n async stopAllScripts(): Promise {\n const scripts = Object.keys(this.scripts);\n const promises: Promise[] = [];\n for (let i = 0; i < scripts.length; i++) {\n promises.push(this.stopScript(scripts[i]));\n }\n return Promise.all(promises).then(() => {});\n }\n\n convertBackStringifiedValues(\n id: string,\n state: ioBroker.State | null | undefined,\n ): ioBroker.State | null | undefined {\n if (\n state &&\n typeof state.val === 'string' &&\n this.objects[id]?.common &&\n (this.objects[id].common.type === 'array' || this.objects[id].common.type === 'object')\n ) {\n try {\n state.val = JSON.parse(state.val);\n } catch (err: any) {\n if (id.startsWith('javascript.') || id.startsWith('0_userdata.0')) {\n this.log.info(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n } else {\n this.log.debug(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n }\n }\n }\n return state;\n }\n\n prepareStateObjectSimple(id: string, state: ioBroker.StateValue, isAck: boolean): ioBroker.State {\n // otherwise, assume that the given state is the value to be set\n const oState: ioBroker.State = { val: state, ack: isAck } as ioBroker.State;\n\n return this.prepareStateObject(id, oState);\n }\n\n prepareStateObject(id: string, state: ioBroker.SettableState | null): ioBroker.State {\n let oState: ioBroker.State;\n\n if (state && typeof state === 'object') {\n oState = state as ioBroker.State;\n } else {\n oState = { val: null } as ioBroker.State;\n }\n\n if (this.config.subscribe) {\n return oState;\n }\n // set other values to have a full state object\n // mirrors logic from statesInRedis\n if (oState.ts === undefined) {\n oState.ts = Date.now();\n }\n\n if (oState.q === undefined) {\n oState.q = 0;\n }\n\n oState.from =\n typeof oState.from === 'string' && oState.from !== '' ? oState.from : `system.adapter.${this.namespace}`;\n\n if (oState.lc === undefined) {\n const formerStateValue = this.interimStateValues[id] || this.states[id];\n if (!formerStateValue) {\n oState.lc = oState.ts;\n } else {\n // isDeepStrictEqual works on objects and primitive values\n const hasChanged = !isDeepStrictEqual(formerStateValue.val, oState.val);\n if (!formerStateValue.lc || hasChanged) {\n oState.lc = oState.ts;\n } else {\n oState.lc = formerStateValue.lc;\n }\n }\n }\n\n return oState;\n }\n\n async getData(): Promise {\n await this.subscribeForeignObjectsAsync('*');\n\n if (!this.config.subscribe) {\n await this.subscribeForeignStatesAsync('*');\n } else {\n await this.subscribeStatesAsync('debug.to');\n await this.subscribeStatesAsync('scriptEnabled.*');\n }\n\n this.log.info('requesting all states');\n\n const statesPromise = this.getForeignStatesAsync('*')\n .then(res => {\n if (!res) {\n this.log.error(`Could not initialize states: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n if (!this.config.subscribe) {\n this.states = Object.assign(res, this.states);\n this.context.states = this.states;\n\n this.addGetProperty(this.states);\n }\n\n // remember all IDs – sort once to guarantee the sorted invariant\n // required by binaryIndexOf() / sortedInsert() used later\n const keys = Object.keys(res).sort();\n for (const id of keys) {\n this.stateIds.push(id);\n this.stateIdSet.add(id);\n }\n this.statesInitDone = true;\n this.log.info('received all states');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize states: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n this.log.info('requesting all objects');\n\n const objectsPromise = this.getObjectListAsync({ include_docs: true })\n .then(res => {\n if (!res?.rows) {\n this.log.error(`Could not initialize objects: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n this.objects = {};\n this.context.objects = this.objects;\n for (let i = 0; i < res.rows.length; i++) {\n const doc = res.rows[i]?.doc;\n if (!doc) {\n this.log.debug(`Got empty object for index ${i} (${res.rows[i].id})`);\n continue;\n }\n if (this.objects[doc._id] === undefined) {\n // If was already there, ignore\n this.objects[doc._id] = doc;\n }\n doc.type === 'enum' && this._enums.add(doc._id);\n\n // Collect all names\n this.addToNames(this.objects[doc._id]);\n }\n this.addGetProperty(this.objects);\n\n const systemConfig = this.objects['system.config'];\n this.password = systemConfig?.native?.javascriptPassword\n ? this.decrypt(systemConfig?.native.javascriptPassword)\n : '';\n\n // set language for debug messages\n if (systemConfig?.common?.language) {\n setLanguage(systemConfig.common.language);\n this.language = systemConfig.common.language;\n this.context.language = this.language as ioBroker.Languages;\n } else if (this.language) {\n setLanguage(this.language);\n this.context.language = this.language;\n }\n\n // try to use system coordinates\n if (this.config.useSystemGPS) {\n if (systemConfig?.common?.latitude || systemConfig?.common?.longitude) {\n this.config.latitude = systemConfig.common.latitude;\n this.config.longitude = systemConfig.common.longitude;\n } else if (this.latitude && this.longitude) {\n this.config.latitude = this.latitude;\n this.config.longitude = this.longitude;\n }\n }\n this.config.latitude = parseFloat(this.config.latitude as unknown as string);\n this.config.longitude = parseFloat(this.config.longitude as unknown as string);\n\n if (isNaN(this.config.latitude)) {\n this.log.warn(`Configured latitude is not a number - check (instance/system) configuration`);\n } else if (this.config.latitude < -90 || this.config.latitude > 90) {\n this.log.warn(\n `Configured latitude \"${this.config.latitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n if (isNaN(this.config.longitude)) {\n this.log.warn(`Configured longitude is not a number - check (instance/system) configuration`);\n } else if (this.config.longitude < -180 || this.config.longitude > 180) {\n this.log.warn(\n `Configured longitude \"${this.config.longitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n this.config.sunriseEvent ||= 'nightEnd';\n this.config.sunriseOffset ||= 0;\n this.config.sunriseLimitStart ||= '06:00';\n this.config.sunriseLimitEnd ||= '12:00';\n\n this.config.sunsetEvent ||= 'dusk';\n this.config.sunsetOffset ||= 0;\n this.config.sunsetLimitStart ||= '18:00';\n this.config.sunsetLimitEnd ||= '23:00';\n\n this.objectsInitDone = true;\n this.log.info('received all objects');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize objects: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n return Promise.all([statesPromise, objectsPromise]).then(() => {});\n }\n\n async createActiveObject(id: string, enabled: boolean): Promise {\n const idActive = `${this.namespace}.scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idActive]) {\n this.objects[idActive] = {\n _id: idActive,\n common: {\n name: `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'controls script activity',\n type: 'boolean',\n write: true,\n read: true,\n role: 'switch.active',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idActive, this.objects[idActive]);\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idActive);\n if (state && state.val !== enabled) {\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n }\n }\n }\n\n async createProblemObject(id: string): Promise {\n const idProblem = `${this.namespace}.scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idProblem]) {\n this.objects[idProblem] = {\n _id: idProblem,\n common: {\n name: `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'Script has a problem',\n type: 'boolean',\n expert: true,\n write: false,\n read: true,\n role: 'indicator.error',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idProblem, this.objects[idProblem]);\n await this.setForeignStateAsync(idProblem, false, true);\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idProblem);\n if (state && state.val !== false) {\n await this.setForeignStateAsync(idProblem, false, true);\n }\n }\n }\n\n addToNames(obj: ioBroker.Object): void {\n const id = obj._id;\n\n if (obj.common?.name) {\n let name = obj.common.name;\n if (name && typeof name === 'object') {\n name = name[getLanguage()] || name.en;\n }\n if (!name || typeof name !== 'string') {\n // TODO, take name in current language\n return;\n }\n\n if (!this.names[name]) {\n this.names[name] = id;\n } else {\n // convert to array\n if (!Array.isArray(this.names[name])) {\n this.names[name] = [this.names[name] as string];\n }\n\n (this.names[name] as string[]).push(id);\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.set(id, name);\n }\n }\n\n removeFromNames(id: string): void {\n const n = this.getName(id);\n\n if (n) {\n if (Array.isArray(this.names[n])) {\n const arr = this.names[n];\n const pos = arr.indexOf(id);\n if (pos > -1) {\n arr.splice(pos, 1);\n if (arr.length === 1) {\n this.names[n] = arr[0];\n }\n }\n } else {\n delete this.names[n];\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.delete(id);\n }\n }\n\n getName(id: string): string | null {\n return this.nameById.get(id) ?? null;\n }\n\n async installNpm(npmLib: string): Promise {\n return new Promise((resolve, reject) => {\n const path = __dirname;\n\n // Also, set the working directory (cwd) of the process instead of using --prefix\n // because that has ugly bugs on Windows\n const cmd = `npm install ${npmLib} --omit=dev`;\n this.log.info(`Installing ${npmLib} into ${__dirname} - cmd: ${cmd}`);\n\n // System call used for update of js-controller itself,\n // because during the installation the npm packet will be deleted too, but some files must be loaded even during the installation process.\n const child = this.mods.child_process.exec(cmd, {\n windowsHide: true,\n cwd: path,\n timeout: 120_000, // 2 minutes max – prevents infinite blocking\n });\n\n child.stdout?.on('data', buf => this.log.info(buf.toString('utf8')));\n\n child.stderr?.on('data', buf => this.log.error(buf.toString('utf8')));\n\n child.on('err', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n child.on('error', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n\n child.on('exit', (code: number /* , signal */) => {\n if (code) {\n this.log.error(`Cannot install ${npmLib}: ${code}`);\n reject(new Error(`Cannot install ${npmLib}: ${code}`));\n }\n // command succeeded\n resolve(code);\n });\n });\n }\n\n async installLibraries(): Promise {\n if (typeof this.config?.libraries !== 'string') {\n this.config.libraries = '';\n }\n\n const libraries: string[] = this.config.libraries\n .split(/[,;\\s]+/)\n .map(d => d.trim())\n .filter(d => d);\n\n this.log.debug(`Custom libraries in config: \"${this.config.libraries}\": ${JSON.stringify(libraries)}`);\n\n let installedNodeModules: string[] = [];\n const keepModules: string[] = [];\n\n // js-controller >= 6.x\n if (typeof this.listInstalledNodeModules === 'function') {\n installedNodeModules = await this.listInstalledNodeModules();\n\n this.log.debug(`Found installed libraries: ${JSON.stringify(installedNodeModules)}`);\n }\n\n for (const lib of libraries) {\n let depName = lib;\n let version = 'latest';\n\n if (depName.includes('@') && depName.lastIndexOf('@') > 0) {\n const parts = depName.split('@');\n version = parts.pop() ?? 'latest';\n depName = parts.join('@');\n }\n\n /** The real module name, because the dependency can be a URL too */\n let moduleName = depName;\n\n if (URL.canParse(depName)) {\n moduleName = await requestModuleNameByUrl(depName);\n\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\" (from ${depName})`);\n } else {\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\"`);\n }\n\n keepModules.push(moduleName);\n\n // js-controller >= 6.x\n if (typeof this.installNodeModule === 'function') {\n try {\n const result = await this.installNodeModule(depName, { version });\n if (result.success) {\n this.log.debug(`Installed custom library: \"${moduleName}@${version}\"`);\n\n const importedModule: any = await this.importNodeModule(moduleName);\n (this.mods as Record)[moduleName] = importedModule.default ?? importedModule;\n } else {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\"`);\n }\n } catch (err: unknown) {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\": ${err as Error}`);\n }\n } else if (!existsSync(`${__dirname}/node_modules/${depName}/package.json`)) {\n // js-controller < 6.x\n this.log.info(`Installing custom library (legacy mode): \"${lib}\"`);\n\n try {\n await this.installNpm(lib);\n this.log.info(`Installed custom npm package (legacy mode): \"${lib}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot install custom npm package \"${lib}\" (legacy mode): ${err.toString()}`);\n }\n }\n }\n\n // js-controller >= 6.x\n if (typeof this.uninstallNodeModule === 'function') {\n for (const installedNodeModule of installedNodeModules) {\n if (!keepModules.includes(installedNodeModule)) {\n try {\n await this.uninstallNodeModule(installedNodeModule);\n\n this.log.info(`Removed custom npm package: \"${installedNodeModule}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot remove custom npm package ${installedNodeModule}: ${err.toString()}`);\n }\n }\n }\n }\n }\n\n createVM(source: string, name: string, wrapAsync: boolean): false | JsScript {\n if (this.context.debugMode && name !== this.context.debugMode) {\n return false;\n }\n\n if (!this.context.debugMode) {\n const logSubscriptionsText =\n \"\\n;\\nlog(`registered ${__engine.__subscriptions} subscription${__engine.__subscriptions === 1 ? '' : 's'},\" +\n \" ${__engine.__schedules} schedule${__engine.__schedules === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsMessage} message${__engine.__subscriptionsMessage === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsLog} log${__engine.__subscriptionsLog === 1 ? '' : 's'}\" +\n \" and ${__engine.__subscriptionsFile} file subscription${__engine.__subscriptionsFile === 1 ? '' : 's'}`);\\n\";\n\n if (wrapAsync) {\n source = `(async () => {\\n${source}\\n${logSubscriptionsText}\\n})();`;\n } else {\n if (source.endsWith('export {};\\n')) {\n // If the source ends with \"export {};\" place the log subscriptions before it\n source = source.slice(0, -11); // remove \"export {};\\n\"\n source = `${source}\\n${logSubscriptionsText}\\nexport {};\\n`;\n } else {\n source = `${source}\\n${logSubscriptionsText}`;\n }\n }\n } else {\n if (wrapAsync) {\n source = `(async () => {debugger;\\n${source}\\n})();`;\n } else {\n source = `debugger;${source}`;\n }\n }\n\n try {\n const options: ScriptOptions = {\n filename: name,\n // displayErrors: true,\n // lineOffset: this.globalScriptLines\n };\n return {\n script: new Script(source, options),\n } as JsScript;\n } catch (err: unknown) {\n this.logError(name, `compile failed at`, err as Error);\n return false;\n }\n }\n\n execute(\n script: JsScript,\n name: string,\n engineType: ScriptType,\n verbose: boolean,\n debug: boolean,\n /**\n * Optional sink for the \"execute\" message API. When provided, the script runs in an\n * ephemeral diagnostic mode: every log line (the script's own `log()`/`console.*` output\n * AND all verbose internal operations) is forwarded to this collector instead of the\n * adapter log, and no `scriptProblem` state is written.\n */\n logCollector?: ((severity: ioBroker.LogLevel, message: string) => void) | null,\n ): void {\n script.intervals = new Set();\n script.timeouts = new Set();\n script.schedules = [];\n script.wizards = [];\n script.name = name;\n script.engineType = engineType;\n script._id = Math.floor(Math.random() * 0xffffffff);\n script.subscribes = {};\n script.subscribesFile = {};\n script.setStatePerMinuteCounter = 0;\n script.setStatePerMinuteProblemCounter = 0;\n if (!logCollector) {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: false,\n ack: true,\n expire: 1000,\n });\n }\n\n const sandbox = sandBox(script, name, verbose, debug, this.context);\n\n // Redirect every log line into the collector. As `console.*`, the global `log()` and all\n // `sandbox.verbose && sandbox.log(...)` calls go through `sandbox.log`, this captures the\n // full picture for the caller while keeping the adapter log clean.\n if (logCollector) {\n sandbox.log = (msg: string, severity?: ioBroker.LogLevel): void => {\n let text: unknown = msg;\n if (text && typeof text !== 'string') {\n text = util.format(text);\n }\n logCollector(severity || 'info', text as string);\n };\n }\n\n try {\n script.script.runInNewContext(sandbox, {\n filename: name,\n displayErrors: true,\n // lineOffset: this.globalScriptLines\n });\n } catch (err: unknown) {\n if (logCollector) {\n const e = err as Error;\n const stack = (e?.stack ? e.stack.toString() : String(err))\n .split('\\n')\n .map(line => this.fixLineNo(line))\n .join('\\n');\n logCollector('error', `Error by run: ${stack}`);\n } else {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'execute',\n });\n this.logError(name, 'Error by run:', err as Error);\n }\n }\n }\n\n /**\n * Run an ad-hoc script sent via the `execute` message and return everything it logged.\n *\n * The script is compiled (JavaScript or TypeScript), executed with the same sandbox API as a\n * regular script (verbose by default, so internal operations like setState/subscribe are logged\n * too), left running for `timeout` ms to collect asynchronous output, and afterwards stopped and\n * fully cleaned up (timers, subscriptions, schedules). It is ephemeral: no script object or\n * states are created.\n *\n * Expected `message`:\n * - `source` / `code` (string, required) – the script source\n * - `engineType` (string, optional) – `TypeScript/ts` to compile as TypeScript, otherwise JavaScript\n * - `verbose` (boolean, optional, default `true`) – log internal sandbox operations\n * - `logLevel` (silly|debug|info|warn|error, optional, default `silly`) – minimum severity to return\n * - `timeout` (number ms, optional, default 5000, clamped to 0…60000) – collection window\n * - `maxLogs` (number, optional, default 5000) – cap on returned log lines\n */\n async executeScript(message: any): Promise<{\n ok: boolean;\n error?: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n }> {\n const LEVELS: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error'];\n\n const source: unknown = message?.source ?? message?.code;\n const engineTypeStr = (message?.engineType || '').toString().toLowerCase();\n const isTypeScript = engineTypeStr.startsWith('typescript') || engineTypeStr === 'ts';\n const engineType: 'Javascript/js' | 'TypeScript/ts' = isTypeScript ? 'TypeScript/ts' : 'Javascript/js';\n\n const empty = (error: string): {\n ok: boolean;\n error: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n } => ({ ok: false, error, engineType, runtime: 0, truncated: false, logs: [], output: '' });\n\n if (typeof source !== 'string' || !source.trim()) {\n return empty('No source code provided');\n }\n\n if (this.context.debugMode) {\n return empty('Cannot execute a script while a debug session is active');\n }\n\n let timeout = parseInt(message?.timeout as string, 10);\n if (isNaN(timeout)) {\n timeout = 5000;\n }\n timeout = Math.max(0, Math.min(timeout, 60000));\n\n const verbose = message?.verbose !== false;\n const minLevel: ioBroker.LogLevel = LEVELS.includes(message?.logLevel) ? message.logLevel : 'silly';\n let maxLogs = parseInt(message?.maxLogs as string, 10);\n if (isNaN(maxLogs) || maxLogs <= 0) {\n maxLogs = 5000;\n }\n\n const name = `${SCRIPT_CODE_MARKER}__execute_${++this.executeCounter}`;\n\n // Compile the source the same way regular scripts are compiled\n let createdScript: JsScript | false;\n if (isTypeScript) {\n const transformedSource = transformScriptBeforeCompilation(source, false);\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n return empty(`TypeScript compilation failed: ${err as Error}`);\n }\n if (!tsCompiled.success) {\n const errors = tsCompiled.diagnostics.map(diag => diag.annotatedSource).join('\\n');\n return empty(`TypeScript compilation failed:\\n${errors}`);\n }\n createdScript = this.createVM(`${this.globalScript}\\n${tsCompiled.result || ''}`, name, false);\n } else {\n createdScript = this.createVM(`${this.globalScript}\\n${source}`, name, true);\n }\n\n if (!createdScript) {\n return empty('Compilation failed');\n }\n\n const logs: { ts: number; severity: ioBroker.LogLevel; message: string }[] = [];\n let truncated = false;\n const collector = (severity: ioBroker.LogLevel, msg: string): void => {\n if (logs.length >= maxLogs) {\n truncated = true;\n return;\n }\n logs.push({ ts: Date.now(), severity, message: msg });\n };\n\n this.scripts[name] = createdScript;\n this.execute(createdScript, name, engineType, verbose, false, collector);\n\n // Let asynchronous output (timeouts, awaited code, triggered subscriptions) accumulate\n if (timeout) {\n await new Promise(resolve => setTimeout(resolve, timeout));\n }\n\n // Stop and clean up the ephemeral script (timers, subscriptions, schedules, …)\n await this.stopScript(name, true);\n\n const minIdx = LEVELS.indexOf(minLevel);\n const filtered = logs.filter(entry => {\n const idx = LEVELS.indexOf(entry.severity);\n return idx < 0 || idx >= minIdx;\n });\n\n return {\n ok: true,\n engineType,\n runtime: timeout,\n truncated,\n logs: filtered,\n output: filtered.map(entry => `[${entry.severity}] ${entry.message}`).join('\\n'),\n };\n }\n\n /**\n * Finds the index of `id` in a sorted array using binary search – O(log n).\n * Returns -1 if not found. Used instead of Array.indexOf on stateIds.\n */\n private binaryIndexOf(arr: string[], id: string): number {\n let lo = 0;\n let hi = arr.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n if (arr[mid] === id) {\n return mid;\n } else if (arr[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return -1;\n }\n\n /**\n * Inserts `id` into the sorted `stateIds` array using binary search – O(log n).\n * Much faster than push() + sort() which is O(n log n) on every insertion.\n */\n private sortedInsert(id: string): void {\n let lo = 0;\n let hi = this.stateIds.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (this.stateIds[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (this.stateIds[lo] !== id) {\n this.stateIds.splice(lo, 0, id);\n }\n }\n\n unsubscribe(id: string | RegExp | string[]): void {\n if (!id) {\n this.log.warn('unsubscribe: empty name');\n return;\n }\n\n if (Array.isArray(id)) {\n id.forEach(sub => this.unsubscribe(sub));\n return;\n }\n\n if (id.constructor && id.constructor.name === 'RegExp') {\n // adapter.log.warn('unsubscribe: todo - process regexp');\n return;\n }\n\n if (typeof id !== 'string') {\n this.log.error(`unsubscribe: invalid type of id - ${typeof id}`);\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (this.objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n if (this.adapterSubs[alive]) {\n this.adapterSubs[alive].delete(id);\n if (!this.adapterSubs[alive].size) {\n delete this.adapterSubs[alive];\n }\n }\n this.sendTo(a, 'unsubscribe', id);\n }\n }\n\n // Analyze if logs are still required or not\n updateLogSubscriptions(): void {\n let found = false;\n // go through all scripts and check if some script still requires logs\n Object.keys(this.logSubscriptions).forEach(scriptName => {\n if (!this.logSubscriptions?.[scriptName] || !this.logSubscriptions[scriptName].length) {\n delete this.logSubscriptions[scriptName];\n } else {\n found = true;\n }\n });\n\n if (this.requireLog) {\n if (found && !this.logSubscribed) {\n this.logSubscribed = true;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Subscribed to log messages (found logSubscriptions)`);\n } else if (!found && this.logSubscribed) {\n this.logSubscribed = false;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Unsubscribed from log messages (not found logSubscriptions)`);\n }\n }\n }\n\n async stopScript(name: string, silent?: boolean): Promise {\n if (!this.scripts[name]) {\n return false;\n }\n\n // `silent` is used for ephemeral scripts started via the \"execute\" message – they have no\n // `scriptEnabled` state and should not appear in the adapter log.\n if (!silent) {\n this.log.info(`${name}: Stopping script`);\n\n await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true);\n }\n\n if (this.messageBusHandlers[name]) {\n delete this.messageBusHandlers[name];\n }\n\n if (this.tempDirectories[name]) {\n try {\n this.mods.fs.rmSync(this.tempDirectories[name], { recursive: true });\n\n this.log.debug(`${name}: Removed temp directory: ${this.tempDirectories[name]}`);\n } catch {\n this.log.warn(`${name}: Unable to remove temp directory: ${this.tempDirectories[name]}`);\n }\n\n delete this.tempDirectories[name];\n }\n\n if (this.logSubscriptions[name]) {\n delete this.logSubscriptions[name];\n this.updateLogSubscriptions();\n }\n\n if (this.scripts[name]) {\n // Remove from subscriptions\n this.context.isEnums = false;\n if (this.config.subscribe) {\n // check all subscribed IDs\n Object.keys(this.scripts[name].subscribes).forEach(id => {\n if (this.subscribedPatterns[id]) {\n this.subscribedPatterns[id] -= this.scripts[name].subscribes[id];\n if (this.subscribedPatterns[id] <= 0) {\n this.unsubscribeForeignStates(id);\n delete this.subscribedPatterns[id];\n if (this.states[id]) {\n delete this.states[id];\n }\n }\n }\n });\n }\n\n for (let i = this.subscriptions.length - 1; i >= 0; i--) {\n if (this.subscriptions[i].name === name) {\n const sub = this.subscriptions.splice(i, 1)[0];\n // Also remove from the O(1) dispatch structures – shared helper to keep the\n // exact-id classification identical to the subscribe side in sandbox.ts\n if (sub) {\n removeFromDispatchIndex(this.context, sub);\n }\n if (sub?.pattern.id) {\n this.unsubscribe(sub.pattern.id);\n }\n } else {\n if (\n (!this.context.isEnums && this.subscriptions[i].pattern.enumName) ||\n this.subscriptions[i].pattern.enumId\n ) {\n this.context.isEnums = true;\n }\n }\n }\n\n // check all subscribed files\n Object.keys(this.scripts[name].subscribesFile).forEach(key => {\n if (this.subscribedPatternsFile[key]) {\n this.subscribedPatternsFile[key] -= this.scripts[name].subscribesFile[key];\n if (this.subscribedPatternsFile[key] <= 0) {\n const [id, file] = key.split('$%$');\n void this.unsubscribeForeignFiles(id, file);\n delete this.subscribedPatternsFile[key];\n }\n }\n });\n for (let i = this.subscriptionsFile.length - 1; i >= 0; i--) {\n if (this.subscriptionsFile[i].name === name) {\n this.subscriptionsFile.splice(i, 1);\n }\n }\n\n for (let i = this.subscriptionsObject.length - 1; i >= 0; i--) {\n if (this.subscriptionsObject[i].name === name) {\n const sub = this.subscriptionsObject.splice(i, 1)[0];\n if (sub) {\n // Remove from O(1) dispatch map\n const mapSubs = this.subscriptionsObjectMap.get(sub.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(sub);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n this.subscriptionsObjectMap.delete(sub.pattern);\n }\n }\n this.unsubscribeForeignObjects(sub.pattern);\n }\n }\n }\n\n // Stop all timeouts\n for (const t of this.scripts[name].timeouts) {\n clearTimeout(t);\n }\n // Stop all intervals\n for (const t of this.scripts[name].intervals) {\n clearInterval(t);\n }\n // Stop all delayed states (setStateDelayed timers) – O(1) via reverse-index\n const scriptStateIds = this.timersByScript.get(name);\n if (scriptStateIds) {\n for (const stateId of scriptStateIds) {\n if (this.timers[stateId]) {\n for (let i = this.timers[stateId].length - 1; i >= 0; i--) {\n if (this.timers[stateId][i].scriptName === name) {\n clearTimeout(this.timers[stateId][i].t);\n this.timers[stateId].splice(i, 1);\n }\n }\n if (!this.timers[stateId].length) {\n delete this.timers[stateId];\n }\n }\n }\n this.timersByScript.delete(name);\n }\n // Stop all scheduled jobs\n for (let i = 0; i < this.scripts[name].schedules.length; i++) {\n if (this.scripts[name].schedules[i]) {\n const _name = this.scripts[name].schedules[i].name;\n if (!this.mods.nodeSchedule.cancelJob(this.scripts[name].schedules[i])) {\n this.log.error(`${name}: Error by canceling scheduled job \"${_name}\"`);\n }\n }\n }\n\n // Stop all time wizards jobs\n if (this.context.scheduler) {\n for (let i = 0; i < this.scripts[name].wizards.length; i++) {\n if (this.scripts[name].wizards[i]) {\n this.context.scheduler.remove(this.scripts[name].wizards[i]);\n }\n }\n }\n\n // if callback for on stop\n if (typeof this.scripts[name].onStopCb === 'function') {\n this.scripts[name].onStopTimeout =\n parseInt(this.scripts[name].onStopTimeout as unknown as string, 10) || 1000;\n\n await new Promise(resolve => {\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n if (timeout) {\n timeout = null;\n resolve(true);\n }\n }, this.scripts[name].onStopTimeout);\n\n try {\n this.scripts[name].onStopCb(() => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(true);\n }\n });\n } catch (err: unknown) {\n this.log.error(`${name}: error in onStop callback: ${err as Error}`);\n }\n });\n }\n\n delete this.scripts[name];\n return true;\n }\n return false;\n }\n\n async prepareScript(obj: ioBroker.ScriptObject): Promise {\n if (obj?.common?.enabled && this.debugState.scriptName === obj._id) {\n const id = obj._id;\n await this.debugStop();\n this.log.info(`${id}: Debugging was stopped, because started in normal mode`);\n return this.prepareScript(obj);\n }\n\n if (\n obj?.common?.source &&\n (obj.common.enabled || this.context.debugMode === obj._id) &&\n obj.common.engine === `system.adapter.${this.namespace}`\n ) {\n const name = obj._id;\n\n if (this.password && obj.native?.protected) {\n obj.common.source = decryptText(this.password, obj.common.source);\n }\n\n const nameId = name.substring(SCRIPT_CODE_MARKER.length);\n if (!nameId.length || nameId.endsWith('.')) {\n this.log.error(`${name}: Script name \"${name}\" is invalid!`);\n return false;\n }\n const idActive = `scriptEnabled.${nameId}`;\n if (!this.config.subscribe) {\n this.interimStateValues[idActive] = this.prepareStateObjectSimple(\n `${this.namespace}.${idActive}`,\n true,\n true,\n );\n }\n await this.setState(idActive, true, true);\n obj.common.engineType ||= '' as 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';\n\n if (\n (obj.common.engineType as ScriptType).toLowerCase().startsWith('javascript') ||\n (obj.common.engineType as ScriptType) === 'Blockly' ||\n (obj.common.engineType as ScriptType) === 'Rules'\n ) {\n // Javascript\n this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);\n\n let sourceFn = name;\n if (webstormDebug) {\n const fn = name.replace(/^script\\.js\\./, '').replace(/\\./g, '/');\n sourceFn = this.mods.path.join(webstormDebug, `${fn}.js`);\n }\n const createdScript = this.createVM(`${this.globalScript}\\n${obj.common.source}`, sourceFn, true);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n sourceFn,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n if (obj.common.engineType.toLowerCase().startsWith('typescript')) {\n // TypeScript\n this.log.info(`${name}: Compiling TypeScript source`);\n // The source code must be transformed in order to support top level await\n // and to force TypeScript to compile the code as a module\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, false);\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash = hashSource(tsSourceHashBase + this.globalDeclarations + transformedSource);\n\n let compiled: string;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n this.log.info(`${name}: source code did not change, using cached compilation result...`);\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n return false;\n }\n\n const errors = tsCompiled.diagnostics.map(diag => `${diag.annotatedSource}\\n`).join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(`${name}: TypeScript compilation had errors:\\n${errors}`);\n } else {\n this.log.info(`${name}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result || '';\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(name); // ignore the next change and don't restart scripts\n await this.extendForeignObjectAsync(name, {\n common: {\n sourceHash,\n compiled,\n },\n });\n } else {\n this.log.error(`${name}: TypeScript compilation failed:\\n${errors}`);\n return false;\n }\n }\n const createdScript: JsScript | false = this.createVM(`${this.globalScript}\\n${compiled}`, name, false);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n name,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n this.log.warn(`${obj._id}: Unknown engine type: ${obj.common.engineType}`);\n return false;\n }\n\n let _name: string;\n if (obj?._id) {\n _name = obj._id;\n const scriptIdName = _name.substring(SCRIPT_CODE_MARKER.length);\n\n if (!scriptIdName.length || scriptIdName.endsWith('.')) {\n this.log.error(`${obj._id}: Script name \"${_name}\" is invalid!`);\n return false;\n }\n await this.setState(`scriptEnabled.${scriptIdName}`, false, true);\n }\n if (!obj) {\n this.log.error('Invalid script');\n }\n return false;\n }\n\n async loadScriptById(id: string): Promise {\n let obj: ioBroker.ScriptObject | null | undefined;\n try {\n obj = (await this.getForeignObjectAsync(id)) as ioBroker.ScriptObject | null | undefined;\n } catch (err: any) {\n this.log.error(`${id}: Invalid script: ${err}`);\n }\n if (!obj) {\n return false;\n }\n return this.loadScript(obj);\n }\n\n async loadScript(nameOrObject: ioBroker.ScriptObject): Promise {\n // create states for scripts\n await this.createActiveObject(nameOrObject._id, !!nameOrObject?.common?.enabled);\n await this.createProblemObject(nameOrObject._id);\n return this.prepareScript(nameOrObject);\n }\n\n getAstroEvent(\n date: Date,\n astroEvent: AstroEventName,\n start: string,\n end: string,\n offsetMinutes: number | string,\n isDayEnd: boolean,\n latitude: number,\n longitude: number,\n useNextDay?: boolean,\n ): Date {\n let ts: Date = this.mods.suncalc.getTimes(date, latitude, longitude)[astroEvent];\n\n if (!ts || ts.getTime().toString() === 'NaN') {\n ts = isDayEnd ? getNextTimeEvent(end, useNextDay) : getNextTimeEvent(start, useNextDay);\n }\n ts.setMilliseconds(0);\n ts.setMinutes(ts.getMinutes() + (parseInt(offsetMinutes as unknown as string, 10) || 0));\n\n const [timeHoursStart, timeMinutesStart] = start.split(':');\n const nTimeHoursStart = parseInt(timeHoursStart, 10);\n const nTimeMinutesStart = parseInt(timeMinutesStart, 10) || 0;\n\n if (\n ts.getHours() < nTimeHoursStart ||\n (ts.getHours() === nTimeHoursStart && ts.getMinutes() < nTimeMinutesStart)\n ) {\n ts = getNextTimeEvent(start, useNextDay);\n ts.setSeconds(0);\n }\n\n const [timeHoursEnd, timeMinutesEnd] = end.split(':');\n const nTimeHoursEnd = parseInt(timeHoursEnd, 10);\n const nTimeMinutesEnd = parseInt(timeMinutesEnd, 10) || 0;\n\n if (ts.getHours() > nTimeHoursEnd || (ts.getHours() === nTimeHoursEnd && ts.getMinutes() > nTimeMinutesEnd)) {\n ts = getNextTimeEvent(end, useNextDay);\n ts.setSeconds(0);\n }\n\n // if event in the past\n if (date > ts && useNextDay) {\n // take the next day\n ts.setDate(ts.getDate() + 1);\n }\n return ts;\n }\n\n async timeSchedule(): Promise {\n const now = new Date();\n let hours = now.getHours();\n const minutes = now.getMinutes();\n if (this.timeSettings.format12) {\n if (hours > 12) {\n hours -= 12;\n }\n }\n let sHours: string;\n if (this.timeSettings.leadingZeros) {\n sHours = hours.toString().padStart(2, '0');\n } else {\n sHours = hours.toString();\n }\n\n await this.setState('variables.dayTime', {\n val: `${sHours}:${minutes.toString().padStart(2, '0')}`,\n ack: true,\n });\n\n now.setMinutes(now.getMinutes() + 1);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const interval = now.getTime() - Date.now();\n this.timeScheduleTimer = setTimeout(() => this.timeSchedule(), interval);\n }\n\n async dayTimeSchedules(): Promise {\n // Always clear any existing timer to prevent memory leaks on rapid re-scheduling\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n\n // get astrological event\n if (\n this.config.latitude === undefined ||\n this.config.longitude === undefined ||\n (this.config.latitude as unknown as string) === '' ||\n (this.config.longitude as unknown as string) === '' ||\n this.config.latitude === null ||\n this.config.longitude === null\n ) {\n this.log.error('Longitude or latitude does not set. Cannot use astro.');\n return;\n }\n\n // Calculate the next event today\n const todayDate = getAstroStartOfDay();\n const nowDate = new Date();\n\n const todaySunrise = this.getAstroEvent(\n todayDate,\n this.config.sunriseEvent,\n this.config.sunriseLimitStart,\n this.config.sunriseLimitEnd,\n this.config.sunriseOffset,\n false,\n this.config.latitude,\n this.config.longitude,\n );\n const todaySunset = this.getAstroEvent(\n todayDate,\n this.config.sunsetEvent,\n this.config.sunsetLimitStart,\n this.config.sunsetLimitEnd,\n this.config.sunsetOffset,\n true,\n this.config.latitude,\n this.config.longitude,\n );\n\n // Sunrise\n let sunriseTimeout = todaySunrise.getTime() - nowDate.getTime();\n if (sunriseTimeout < 0 || sunriseTimeout > 3600000) {\n sunriseTimeout = 3600000;\n }\n\n // Sunset\n let sunsetTimeout = todaySunset.getTime() - nowDate.getTime();\n if (sunsetTimeout < 0 || sunsetTimeout > 3600000) {\n sunsetTimeout = 3600000;\n }\n\n const isDayTime: ioBroker.State | null | undefined = await this.getStateAsync('variables.isDayTime');\n let isDay: boolean;\n if (sunriseTimeout < 5000) {\n isDay = true;\n } else if (sunsetTimeout < 5000) {\n isDay = false;\n } else {\n // check if in between\n isDay = nowDate.getTime() > todaySunrise.getTime() - 60000 && nowDate <= todaySunset;\n }\n\n const valDayTime = isDayTime ? !!isDayTime.val : false;\n if (valDayTime !== isDay || isDayTime === null) {\n await this.setState('variables.isDayTime', isDay, true);\n }\n\n const dayLightSaving: ioBroker.State | null | undefined =\n await this.getStateAsync('variables.isDaylightSaving');\n const isDayLightSaving = dstOffsetAtDate(nowDate) !== 0;\n const val = dayLightSaving ? !!dayLightSaving.val : false;\n\n if (val !== isDayLightSaving || dayLightSaving === null) {\n await this.setState('variables.isDaylightSaving', isDayLightSaving, true);\n }\n\n let nextTimeout = sunriseTimeout;\n if (sunriseTimeout > sunsetTimeout) {\n nextTimeout = sunsetTimeout;\n }\n nextTimeout = nextTimeout - 3000;\n if (nextTimeout < 3000) {\n nextTimeout = 3000;\n }\n\n this.dayScheduleTimer = setTimeout(() => this.dayTimeSchedules(), nextTimeout);\n }\n\n stopTimeSchedules(): void {\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n if (this.sunScheduleTimer) {\n clearTimeout(this.sunScheduleTimer);\n this.sunScheduleTimer = null;\n }\n if (this.timeScheduleTimer) {\n clearTimeout(this.timeScheduleTimer);\n this.timeScheduleTimer = null;\n }\n }\n\n async patchFont(): Promise {\n let stat: Stats | undefined;\n let dbFile: Buffer | undefined;\n let fileName = `${__dirname}/../admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n let jsonFileName = `${__dirname}/../admin/vsFont/codicon.json`;\n try {\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n if (!stat) {\n jsonFileName = `${__dirname}/admin/vsFont/codicon.json`;\n fileName = `${__dirname}/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n }\n const _dbFile = await this.readFileAsync(\n 'javascript.admin',\n `vs/base/browser/ui/codicons/codicon/codicon.ttf`,\n );\n if (_dbFile?.file) {\n dbFile = _dbFile.file as Buffer;\n }\n } catch {\n // ignore\n }\n\n if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {\n try {\n const buffer = Buffer.from(JSON.parse(readFileSync(jsonFileName).toString()), 'base64');\n\n const jszip = await import('jszip');\n const zip = await jszip.loadAsync(buffer);\n let data: ArrayBuffer | undefined;\n if (zip) {\n data = await zip.file('codicon.ttf')?.async('arraybuffer');\n if (data?.byteLength !== 73452) {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n } else {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n writeFileSync(fileName, Buffer.from(data));\n // upload this file\n await this.writeFileAsync(\n 'javascript.admin',\n 'vs/base/browser/ui/codicons/codicon/codicon.ttf',\n Buffer.from(data),\n );\n return true;\n } catch (err: unknown) {\n this.log.error(`Cannot patch font: ${err as Error}`);\n return false;\n }\n }\n return false;\n }\n\n async sunTimeSchedules(): Promise {\n if (this.config.createAstroStates) {\n if (!isNaN(this.config.longitude) && !isNaN(this.config.longitude)) {\n const calcDate = getAstroStartOfDay();\n\n const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);\n\n this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);\n\n for (const t in times) {\n try {\n const objId = `variables.astro.${t}`;\n\n await this.setObjectNotExistsAsync(objId, {\n type: 'state',\n common: {\n name: `Astro ${t}`,\n type: 'string',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (times[t] !== null && !isNaN(times[t].getTime())) {\n const timeFormatted = formatHoursMinutesSeconds(times[t]);\n await this.setState(objId, {\n val: timeFormatted,\n c: times[t].toISOString(),\n ack: true,\n });\n } else {\n await this.setState(objId, { val: null, c: 'n/a', ack: true, q: 0x01 });\n }\n } catch (err: unknown) {\n this.log.error(\n `[sunTimeSchedules] Unable to set state for astro time \"${t}\" (${times[t].getTime()}): ${err as Error}`,\n );\n }\n }\n\n const todayDate = new Date();\n todayDate.setHours(0);\n todayDate.setMinutes(0);\n todayDate.setSeconds(1);\n todayDate.setMilliseconds(0);\n todayDate.setDate(todayDate.getDate() + 1);\n\n this.log.debug(`[sunTimeSchedules] Next: ${todayDate.toISOString()}`);\n this.sunScheduleTimer = setTimeout(() => this.sunTimeSchedules(), todayDate.getTime() - Date.now());\n }\n } else {\n // remove astro states if disabled\n this.delObject('variables.astro', { recursive: true });\n }\n }\n\n /**\n * Redirects the virtual-tsc log output to the ioBroker log\n */\n tsLog = (message: string, severity?: ioBroker.LogLevel): void => {\n // shift the severities around, we don't care about the small details\n if (!severity || severity === 'info') {\n severity = 'debug';\n } else if (severity === 'debug') {\n // Don't spam build logs on Travis\n if (isCI) {\n return;\n }\n severity = 'silly';\n }\n\n if (this?.log) {\n this.log[severity](message);\n } else {\n console.log(`[${severity.toUpperCase()}] ${message}`);\n }\n };\n\n addGetProperty(object: Record): void {\n try {\n Object.defineProperty(object, 'get', {\n value: function (id: string): any {\n return this[id] || this[`${this.namespace}.${id}`];\n },\n enumerable: false,\n });\n } catch {\n console.error('Cannot install get property');\n }\n }\n\n /**\n * Add declarations for global scripts\n *\n * @param scriptID - The current script the declarations were generated from\n * @param declarations - Declarations from a script\n */\n provideDeclarationsForGlobalScript(scriptID: string, declarations: string): void {\n // Remember which declarations this global script had access to;\n // we need this so the editor doesn't show a duplicate identifier error\n if (this.globalDeclarations != null && this.globalDeclarations !== '') {\n this.knownGlobalDeclarationsByScript[scriptID] = this.globalDeclarations;\n }\n // and concatenate the global declarations for the next scripts\n this.globalDeclarations += `${declarations}\\n`;\n // remember all previously generated global declarations,\n // so global scripts can reference each other\n const globalDeclarationPath = 'global.d.ts';\n tsAmbient[globalDeclarationPath] = this.globalDeclarations;\n // make sure the next script compilation has access to the updated declarations\n this.tsServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n jsDeclarationServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n }\n\n fixLineNo(line: string): string {\n if (line.includes('javascript.js:')) {\n return line;\n }\n if (!/scripts?\\.js[.\\\\/]/.test(line)) {\n return line;\n }\n if (/:(\\d+):/.test(line)) {\n line = line.replace(\n /:(\\d+):/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}:`,\n ); // one line for 'async function ()'\n } else {\n line = line.replace(\n /:(\\d+)$/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}`,\n ); // one line for 'async function ()'\n }\n return line;\n }\n\n async debugStop(): Promise {\n if (this.debugState.child) {\n this.debugSendToInspector({ cmd: 'end' });\n this.debugState.endTimeout = setTimeout(() => {\n this.debugState.endTimeout = null;\n this.debugState.child?.kill('SIGTERM');\n }, 500);\n this.debugState.promiseOnEnd ||= Promise.resolve(0);\n } else {\n this.debugState.promiseOnEnd = Promise.resolve(0);\n }\n\n await this.debugState.promiseOnEnd;\n\n this.debugState.child = null;\n this.debugState.running = false;\n this.debugState.scriptName = '';\n if (this.debugState.endTimeout) {\n clearTimeout(this.debugState.endTimeout);\n this.debugState.endTimeout = null;\n }\n }\n\n async debugDisableScript(id: string | undefined): Promise {\n if (id) {\n const obj = this.objects[id];\n if (obj?.common?.enabled) {\n await this.extendForeignObjectAsync(obj._id, { common: { enabled: false } });\n }\n }\n }\n\n debugSendToInspector(message: any): void {\n if (this.debugState.child) {\n try {\n this.log.info(`send to debugger: ${message}`);\n this.debugState.child.send(message);\n } catch {\n void this.debugStop().then(() =>\n this.log.info(\n `${this.debugState.scriptName}: Debugging was stopped, because started in normal mode`,\n ),\n );\n }\n } else {\n this.log.error(`${this.debugState.scriptName}: Cannot send command to terminated inspector`);\n void this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `Cannot send command to terminated inspector`, id: 1 }),\n true,\n );\n }\n }\n\n debugStart(data: { breakOnStart?: boolean; scriptName?: string; adapter?: string }): void {\n if (Date.now() - this.debugState.started < 1000) {\n console.log('Start ignored');\n return;\n }\n\n this.debugState.started = Date.now();\n // stop the script if it's running\n void this.debugDisableScript(data.scriptName)\n .then(() => this.debugStop())\n .then(() => {\n if (data.adapter) {\n this.debugState.adapterInstance = data.adapter;\n this.debugState.scriptName = '';\n } else {\n this.debugState.adapterInstance = '';\n this.debugState.scriptName = data.scriptName as string;\n }\n\n this.debugState.breakOnStart = data.breakOnStart;\n\n this.debugState.promiseOnEnd = new Promise(resolve => {\n const options: ForkOptions = {\n stdio: ['ignore', 'inherit', 'inherit', 'ipc'],\n //stdio: ['pipe', 'pipe', 'pipe', 'ipc']\n };\n const args: string[] = [];\n if (this.debugState.adapterInstance) {\n args.push('--breakOnStart');\n }\n\n this.debugState.child = fork(`${__dirname}/lib/inspect.js`, args, options);\n\n /*debugState.child.stdout.setEncoding('utf8');\n debugState.child.stderr.setEncoding('utf8');\n debugState.child.stdout.on('data', childPrint);\n debugState.child.stderr.on('data', childPrint);*/\n\n this.debugState.child?.on(\n 'message',\n (\n message:\n | string\n | {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n },\n ) => {\n let oMessage: {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n };\n if (typeof message === 'string') {\n try {\n oMessage = JSON.parse(message);\n } catch {\n return this.log.error(`Cannot parse message from inspector: ${message}`);\n }\n } else {\n oMessage = message;\n }\n\n if (oMessage.cmd !== 'ready') {\n void this.setState('debug.from', JSON.stringify(oMessage), true);\n }\n\n switch (oMessage.cmd) {\n case 'ready': {\n this.debugSendToInspector({\n cmd: 'start',\n scriptName: this.debugState.scriptName,\n adapterInstance: this.debugState.adapterInstance,\n instance: this.instance,\n });\n break;\n }\n\n case 'watched': {\n //console.log(`WATCHED: ${JSON.stringify(oMessage)}`);\n break;\n }\n\n case 'paused': {\n this.debugState.paused = true;\n console.log(`host: PAUSED`);\n break;\n }\n\n case 'resumed': {\n this.debugState.paused = false;\n //console.log(`STARTED`);\n break;\n }\n\n case 'log': {\n console.log(`[${oMessage.severity}] ${oMessage.text}`);\n break;\n }\n\n case 'readyToDebug': {\n console.log(\n `host: readyToDebug (set breakpoints): [${oMessage.scriptId}] ${oMessage.script}`,\n );\n break;\n }\n }\n },\n );\n this.debugState.child?.on('error', error => {\n this.log.error(`Cannot start inspector: ${error}`);\n void this.setState('debug.from', JSON.stringify({ cmd: 'error', error }), true);\n });\n\n this.debugState.child?.on('exit', async (code: number): Promise => {\n if (code) {\n await this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `invalid response code: ${code}` }),\n true,\n );\n }\n await this.setState('debug.from', JSON.stringify({ cmd: 'debugStopped', code }), true);\n this.debugState.child = null;\n resolve(code);\n });\n });\n });\n }\n}\n\nfunction patternMatching(\n event: EventObj,\n patternFunctions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' },\n): boolean {\n const logic = patternFunctions.logic ?? 'and';\n for (let i = 0, len = patternFunctions.length; i < len; i++) {\n const result = patternFunctions[i](event);\n if (logic === 'and' && !result) {\n return false; // short-circuit AND – one false is enough\n }\n if (logic === 'or' && result) {\n return true; // short-circuit OR – one true is enough\n }\n }\n // AND: all passed → true; OR: none matched → false\n return logic === 'and';\n}\n\n// If started as allInOne mode => return function to create an instance\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new JavaScript(options);\n} else {\n // otherwise start the instance directly\n (() => new JavaScript())();\n}\n"]} \ No newline at end of file diff --git a/src-editor/src/AiChat/AiToolExecutor.ts b/src-editor/src/AiChat/AiToolExecutor.ts index 18ac76250..6607c98e5 100644 --- a/src-editor/src/AiChat/AiToolExecutor.ts +++ b/src-editor/src/AiChat/AiToolExecutor.ts @@ -124,6 +124,39 @@ export const IOBROKER_TOOLS = [ }, }, }, + { + type: 'function' as const, + function: { + name: 'run_script', + description: + 'Execute a JavaScript or TypeScript snippet in the live ioBroker javascript engine and get back everything it logged. The code runs with the full script API (log, console.*, setState, getState, on, schedule, $, exec, httpGet, …) in VERBOSE mode, so internal operations (setState/getState/subscribe/…) are logged too — ideal for diagnosing behaviour or inspecting values. The snippet runs for a short window and is then automatically STOPPED and fully cleaned up (timers, subscriptions, schedules removed); it does NOT create a persistent script. Use `log(...)` or `console.log(...)` in the code to surface the values you want to inspect. WARNING: side effects are real (e.g. setState changes actual devices) — prefer read-only diagnostics unless the user explicitly asked to change something.', + parameters: { + type: 'object', + properties: { + source: { + type: 'string', + description: + 'The JavaScript (or TypeScript) source to execute. Log the values you want to inspect via log(...) / console.log(...). Top-level await is supported.', + }, + engineType: { + type: 'string', + description: 'Optional. "TypeScript/ts" to run the code as TypeScript. Defaults to JavaScript.', + }, + timeout: { + type: 'number', + description: + 'Optional. Milliseconds to keep the script alive to collect asynchronous logs before it is stopped (default 5000, max 60000). Increase when waiting for timers, subscriptions or HTTP responses.', + }, + logLevel: { + type: 'string', + description: + 'Optional minimum severity to return: silly, debug, info, warn, error. Default silly (everything).', + }, + }, + required: ['source'], + }, + }, + }, // ─── Monaco editor interaction ────────────────────────────────────────── { @@ -592,12 +625,67 @@ function editorApiMissing(): string { }); } +interface ExecuteResult { + ok: boolean; + error?: string; + engineType?: string; + runtime?: number; + truncated?: boolean; + logs?: { ts: number; severity: string; message: string }[]; + output?: string; +} + +/** + * Run an ad-hoc script in the live javascript engine via the adapter's "execute" message and + * return the collected logs. The script is ephemeral – the backend stops and cleans it up after + * the collection window. + */ +async function runScript( + socket: AdminConnection, + instanceId: string | undefined, + args: Record, +): Promise { + if (!instanceId) { + return JSON.stringify({ error: 'No running javascript instance found to execute the script.' }); + } + const source = args.source; + if (!source || typeof source !== 'string') { + return JSON.stringify({ error: 'No source code provided.' }); + } + try { + const result = (await socket.sendTo(instanceId, 'execute', { + source, + engineType: args.engineType, + timeout: args.timeout, + logLevel: args.logLevel, + })) as ExecuteResult | null; + + if (!result || result.ok === false) { + return JSON.stringify({ + error: result?.error || 'Execution failed', + logs: result?.logs || [], + }); + } + return JSON.stringify({ + engineType: result.engineType, + runtime: result.runtime, + truncated: result.truncated || false, + logCount: result.logs?.length || 0, + logs: result.logs || [], + output: result.output || '', + }); + } catch (e) { + return JSON.stringify({ error: `Failed to execute script: ${e instanceof Error ? e.message : String(e)}` }); + } +} + /** Execute a tool call and return the result as a string. */ export async function executeToolCall( socket: AdminConnection, toolCall: ToolCall, scripts?: ScriptInfo[], editorApi?: EditorApi, + instanceId?: string, ): Promise { let args: Record; try { @@ -625,6 +713,8 @@ export async function executeToolCall( return readScript(scripts || [], args.id as string); case 'list_scripts': return listScripts(scripts || []); + case 'run_script': + return runScript(socket, instanceId, args); // ── Monaco editor tools (editorApi may be undefined if the editor isn't mounted) ── case 'get_editor_selection': { diff --git a/src-editor/src/AiChat/__tests__/editorTools.test.ts b/src-editor/src/AiChat/__tests__/editorTools.test.ts index 2d682ed2f..d2f0e0ea9 100644 --- a/src-editor/src/AiChat/__tests__/editorTools.test.ts +++ b/src-editor/src/AiChat/__tests__/editorTools.test.ts @@ -207,6 +207,69 @@ describe('editor tool handlers', () => { }); }); + describe('run_script', () => { + it('sends an "execute" message to the instance and returns the collected logs', async () => { + const sendTo = vi.fn().mockResolvedValue({ + ok: true, + engineType: 'Javascript/js', + runtime: 5000, + truncated: false, + logs: [{ ts: 1, severity: 'info', message: 'hello' }], + output: '[info] hello', + }); + const socket = { sendTo } as any; + const res = JSON.parse( + await executeToolCall( + socket, + toolCall('run_script', { source: 'log("hello");' }), + [], + undefined, + 'javascript.0', + ), + ); + expect(sendTo).toHaveBeenCalledWith('javascript.0', 'execute', { + source: 'log("hello");', + engineType: undefined, + timeout: undefined, + logLevel: undefined, + }); + expect(res.logCount).toBe(1); + expect(res.output).toBe('[info] hello'); + expect(res.logs[0].message).toBe('hello'); + }); + + it('reports an error when no instance is available', async () => { + const res = JSON.parse( + await executeToolCall(stubSocket, toolCall('run_script', { source: 'log(1);' }), [], undefined), + ); + expect(res.error).toContain('No running javascript instance'); + }); + + it('reports an error when no source is provided', async () => { + const socket = { sendTo: vi.fn() } as any; + const res = JSON.parse( + await executeToolCall(socket, toolCall('run_script', {}), [], undefined, 'javascript.0'), + ); + expect(res.error).toContain('No source code'); + }); + + it('surfaces a backend execution error', async () => { + const socket = { + sendTo: vi.fn().mockResolvedValue({ ok: false, error: 'TypeScript compilation failed', logs: [] }), + } as any; + const res = JSON.parse( + await executeToolCall( + socket, + toolCall('run_script', { source: 'const x: =' }), + [], + undefined, + 'javascript.0', + ), + ); + expect(res.error).toContain('TypeScript compilation failed'); + }); + }); + describe('backward compatibility', () => { it('existing ioBroker tools still work without editorApi', async () => { const res = JSON.parse(await executeToolCall(stubSocket, toolCall('unknown_tool_name'), [])); diff --git a/src-editor/src/AiChat/useAiChat.ts b/src-editor/src/AiChat/useAiChat.ts index 6a4b77f84..4165d1e50 100644 --- a/src-editor/src/AiChat/useAiChat.ts +++ b/src-editor/src/AiChat/useAiChat.ts @@ -317,6 +317,8 @@ ioBroker object hierarchy: adapter.instance.device.channel.state - The channel/device often has the human-readable name (e.g. "Living Room Sensor") When looking up info about a datapoint, ALWAYS also check its parent channel/device for the device name and context. Use get_object_info which returns the full parent hierarchy automatically. +To verify code or diagnose runtime behaviour, you can use the run_script tool: it executes a JavaScript/TypeScript snippet in the live engine (verbose mode) and returns everything it logged, then auto-stops it. Log the values you want to inspect via log(...) / console.log(...). It runs against the live system, so prefer read-only diagnostics (getState, $, getObject) and only call setState when the user explicitly asked to change something. + Available API and syntax rules: ${docsRef.current}`; @@ -761,7 +763,7 @@ ${docsRef.current}`; // Execute each tool call and add results for (const toolCall of result.tool_calls) { - const toolResult = await executeToolCall(socket, toolCall, allScripts, editorApi); + const toolResult = await executeToolCall(socket, toolCall, allScripts, editorApi, instanceId); currentMessages.push({ role: 'tool', tool_call_id: toolCall.id, diff --git a/src/main.ts b/src/main.ts index 2689923df..a0784078c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -420,6 +420,8 @@ class JavaScript extends Adapter { // have access to, because it depends on the compilation order private knownGlobalDeclarationsByScript: Record = {}; private globalScriptLines = 0; + /** Running counter to build unique names for ad-hoc scripts started via the "execute" message */ + private executeCounter = 0; // compiler instance for typescript private tsServer: Server; @@ -1774,6 +1776,27 @@ class JavaScript extends Adapter { } break; } + + case 'execute': { + if (obj.callback) { + void this.executeScript(obj.message) + .then(result => this.sendTo(obj.from, obj.command, result, obj.callback)) + .catch(err => + this.sendTo( + obj.from, + obj.command, + { + ok: false, + error: `Internal error: ${err as Error}`, + logs: [], + output: '', + }, + obj.callback, + ), + ); + } + break; + } } } @@ -2789,7 +2812,20 @@ class JavaScript extends Adapter { } } - execute(script: JsScript, name: string, engineType: ScriptType, verbose: boolean, debug: boolean): void { + execute( + script: JsScript, + name: string, + engineType: ScriptType, + verbose: boolean, + debug: boolean, + /** + * Optional sink for the "execute" message API. When provided, the script runs in an + * ephemeral diagnostic mode: every log line (the script's own `log()`/`console.*` output + * AND all verbose internal operations) is forwarded to this collector instead of the + * adapter log, and no `scriptProblem` state is written. + */ + logCollector?: ((severity: ioBroker.LogLevel, message: string) => void) | null, + ): void { script.intervals = new Set(); script.timeouts = new Set(); script.schedules = []; @@ -2801,14 +2837,29 @@ class JavaScript extends Adapter { script.subscribesFile = {}; script.setStatePerMinuteCounter = 0; script.setStatePerMinuteProblemCounter = 0; - void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, { - val: false, - ack: true, - expire: 1000, - }); + if (!logCollector) { + void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, { + val: false, + ack: true, + expire: 1000, + }); + } const sandbox = sandBox(script, name, verbose, debug, this.context); + // Redirect every log line into the collector. As `console.*`, the global `log()` and all + // `sandbox.verbose && sandbox.log(...)` calls go through `sandbox.log`, this captures the + // full picture for the caller while keeping the adapter log clean. + if (logCollector) { + sandbox.log = (msg: string, severity?: ioBroker.LogLevel): void => { + let text: unknown = msg; + if (text && typeof text !== 'string') { + text = util.format(text); + } + logCollector(severity || 'info', text as string); + }; + } + try { script.script.runInNewContext(sandbox, { filename: name, @@ -2816,15 +2867,151 @@ class JavaScript extends Adapter { // lineOffset: this.globalScriptLines }); } catch (err: unknown) { - void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, { - val: true, - ack: true, - c: 'execute', - }); - this.logError(name, 'Error by run:', err as Error); + if (logCollector) { + const e = err as Error; + const stack = (e?.stack ? e.stack.toString() : String(err)) + .split('\n') + .map(line => this.fixLineNo(line)) + .join('\n'); + logCollector('error', `Error by run: ${stack}`); + } else { + void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, { + val: true, + ack: true, + c: 'execute', + }); + this.logError(name, 'Error by run:', err as Error); + } } } + /** + * Run an ad-hoc script sent via the `execute` message and return everything it logged. + * + * The script is compiled (JavaScript or TypeScript), executed with the same sandbox API as a + * regular script (verbose by default, so internal operations like setState/subscribe are logged + * too), left running for `timeout` ms to collect asynchronous output, and afterwards stopped and + * fully cleaned up (timers, subscriptions, schedules). It is ephemeral: no script object or + * states are created. + * + * Expected `message`: + * - `source` / `code` (string, required) – the script source + * - `engineType` (string, optional) – `TypeScript/ts` to compile as TypeScript, otherwise JavaScript + * - `verbose` (boolean, optional, default `true`) – log internal sandbox operations + * - `logLevel` (silly|debug|info|warn|error, optional, default `silly`) – minimum severity to return + * - `timeout` (number ms, optional, default 5000, clamped to 0…60000) – collection window + * - `maxLogs` (number, optional, default 5000) – cap on returned log lines + */ + async executeScript(message: any): Promise<{ + ok: boolean; + error?: string; + engineType: 'Javascript/js' | 'TypeScript/ts'; + runtime: number; + truncated: boolean; + logs: { ts: number; severity: ioBroker.LogLevel; message: string }[]; + output: string; + }> { + const LEVELS: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error']; + + const source: unknown = message?.source ?? message?.code; + const engineTypeStr = (message?.engineType || '').toString().toLowerCase(); + const isTypeScript = engineTypeStr.startsWith('typescript') || engineTypeStr === 'ts'; + const engineType: 'Javascript/js' | 'TypeScript/ts' = isTypeScript ? 'TypeScript/ts' : 'Javascript/js'; + + const empty = (error: string): { + ok: boolean; + error: string; + engineType: 'Javascript/js' | 'TypeScript/ts'; + runtime: number; + truncated: boolean; + logs: { ts: number; severity: ioBroker.LogLevel; message: string }[]; + output: string; + } => ({ ok: false, error, engineType, runtime: 0, truncated: false, logs: [], output: '' }); + + if (typeof source !== 'string' || !source.trim()) { + return empty('No source code provided'); + } + + if (this.context.debugMode) { + return empty('Cannot execute a script while a debug session is active'); + } + + let timeout = parseInt(message?.timeout as string, 10); + if (isNaN(timeout)) { + timeout = 5000; + } + timeout = Math.max(0, Math.min(timeout, 60000)); + + const verbose = message?.verbose !== false; + const minLevel: ioBroker.LogLevel = LEVELS.includes(message?.logLevel) ? message.logLevel : 'silly'; + let maxLogs = parseInt(message?.maxLogs as string, 10); + if (isNaN(maxLogs) || maxLogs <= 0) { + maxLogs = 5000; + } + + const name = `${SCRIPT_CODE_MARKER}__execute_${++this.executeCounter}`; + + // Compile the source the same way regular scripts are compiled + let createdScript: JsScript | false; + if (isTypeScript) { + const transformedSource = transformScriptBeforeCompilation(source, false); + const filename = scriptIdToTSFilename(name); + let tsCompiled: CompileResult; + try { + tsCompiled = this.tsServer.compile(filename, transformedSource); + } catch (err: unknown) { + return empty(`TypeScript compilation failed: ${err as Error}`); + } + if (!tsCompiled.success) { + const errors = tsCompiled.diagnostics.map(diag => diag.annotatedSource).join('\n'); + return empty(`TypeScript compilation failed:\n${errors}`); + } + createdScript = this.createVM(`${this.globalScript}\n${tsCompiled.result || ''}`, name, false); + } else { + createdScript = this.createVM(`${this.globalScript}\n${source}`, name, true); + } + + if (!createdScript) { + return empty('Compilation failed'); + } + + const logs: { ts: number; severity: ioBroker.LogLevel; message: string }[] = []; + let truncated = false; + const collector = (severity: ioBroker.LogLevel, msg: string): void => { + if (logs.length >= maxLogs) { + truncated = true; + return; + } + logs.push({ ts: Date.now(), severity, message: msg }); + }; + + this.scripts[name] = createdScript; + this.execute(createdScript, name, engineType, verbose, false, collector); + + // Let asynchronous output (timeouts, awaited code, triggered subscriptions) accumulate + if (timeout) { + await new Promise(resolve => setTimeout(resolve, timeout)); + } + + // Stop and clean up the ephemeral script (timers, subscriptions, schedules, …) + await this.stopScript(name, true); + + const minIdx = LEVELS.indexOf(minLevel); + const filtered = logs.filter(entry => { + const idx = LEVELS.indexOf(entry.severity); + return idx < 0 || idx >= minIdx; + }); + + return { + ok: true, + engineType, + runtime: timeout, + truncated, + logs: filtered, + output: filtered.map(entry => `[${entry.severity}] ${entry.message}`).join('\n'), + }; + } + /** * Finds the index of `id` in a sorted array using binary search – O(log n). * Returns -1 if not found. Used instead of Array.indexOf on stateIds. @@ -2925,14 +3112,18 @@ class JavaScript extends Adapter { } } - async stopScript(name: string): Promise { + async stopScript(name: string, silent?: boolean): Promise { if (!this.scripts[name]) { return false; } - this.log.info(`${name}: Stopping script`); + // `silent` is used for ephemeral scripts started via the "execute" message – they have no + // `scriptEnabled` state and should not appear in the adapter log. + if (!silent) { + this.log.info(`${name}: Stopping script`); - await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true); + await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true); + } if (this.messageBusHandlers[name]) { delete this.messageBusHandlers[name]; From e68f1a46e06f7c8baa26dbc8d6b8ba5da09bd5d3 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Fri, 12 Jun 2026 20:55:52 +0200 Subject: [PATCH 4/6] Added the possiblilty to execute scripts from AI agent --- admin/assets/AiChatPanel-BPOsmX0I.js | 315 ----------------- admin/assets/AiChatPanel-CZ2o6xnT.js | 317 ++++++++++++++++++ ...r-Bw-7a_d8.js => ScriptEditor-B5mD7l8c.js} | 2 +- ... => ScriptEditorVanillaMonaco-CKnJEdpA.js} | 4 +- .../{index-qzAcc6X1.js => index-B0Khg-uY.js} | 2 +- .../{index-MJuwtgsO.js => index-Be9Zg6aF.js} | 76 ++--- .../{index-AD-ewMW2.js => index-Blu2oA9H.js} | 6 +- .../{index-D0ssxjfN.js => index-CtxgOnw1.js} | 2 +- ...7e.js => localSharedImportMap-Cs4ibnCv.js} | 2 +- ...2kWx.js => stateHoverProvider-wXU4aBfD.js} | 2 +- ...er_javascript__remoteEntry_js-Dus28I2g.js} | 4 +- admin/mf-manifest.json | 2 +- admin/remoteEntry.js | 2 +- admin/tab.html | 4 +- 14 files changed, 371 insertions(+), 369 deletions(-) delete mode 100644 admin/assets/AiChatPanel-BPOsmX0I.js create mode 100644 admin/assets/AiChatPanel-CZ2o6xnT.js rename admin/assets/{ScriptEditor-Bw-7a_d8.js => ScriptEditor-B5mD7l8c.js} (91%) rename admin/assets/{ScriptEditorVanillaMonaco-B-wy1I-G.js => ScriptEditorVanillaMonaco-CKnJEdpA.js} (97%) rename admin/assets/{index-qzAcc6X1.js => index-B0Khg-uY.js} (99%) rename admin/assets/{index-MJuwtgsO.js => index-Be9Zg6aF.js} (50%) rename admin/assets/{index-AD-ewMW2.js => index-Blu2oA9H.js} (99%) rename admin/assets/{index-D0ssxjfN.js => index-CtxgOnw1.js} (99%) rename admin/assets/{localSharedImportMap-z2-feH7e.js => localSharedImportMap-Cs4ibnCv.js} (94%) rename admin/assets/{stateHoverProvider-BMnu2kWx.js => stateHoverProvider-wXU4aBfD.js} (99%) rename admin/assets/{virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js => virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js} (99%) diff --git a/admin/assets/AiChatPanel-BPOsmX0I.js b/admin/assets/AiChatPanel-BPOsmX0I.js deleted file mode 100644 index f8d8b42fb..000000000 --- a/admin/assets/AiChatPanel-BPOsmX0I.js +++ /dev/null @@ -1,315 +0,0 @@ -import{c as Se,j as i}from"./createSvgIcon-DYs_tNrE.js";import{k as A,j as te,b as ne,c as xe,l as Ue}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{z as $,P as ve,o as we,a0 as ct,a1 as lt,i as We,J as dt,r as ut,s as mt,u as pt,a2 as Fe,c as ft,f as He,g as ze,a3 as Oe,a4 as Ve,a5 as ht}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as u}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{_ as Ze}from"./preload-helper-BDBacUwf.js";import{C as gt,b as yt,I as bt,R as xt}from"./index-45IwpC7_.js";import{i as vt,k as qe,l as wt,n as St}from"./index-AD-ewMW2.js";import{g as kt,c as jt}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const et=Se(i.jsx("path",{d:"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8"}),"AddCircleOutline"),_t=Se(i.jsx("path",{d:"M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4zM17 11h-4v4h-2v-4H7V9h4V5h2v4h4z"}),"AddComment"),Ct=Se(i.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10h5v-2h-5c-4.34 0-8-3.66-8-8s3.66-8 8-8 8 3.66 8 8v1.43c0 .79-.71 1.57-1.5 1.57s-1.5-.78-1.5-1.57V12c0-2.76-2.24-5-5-5s-5 2.24-5 5 2.24 5 5 5c1.38 0 2.64-.56 3.54-1.47.65.89 1.77 1.47 2.96 1.47 1.97 0 3.5-1.6 3.5-3.57V12c0-5.52-4.48-10-10-10m0 13c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3"}),"AlternateEmail"),It=Se(i.jsx("path",{d:"M9.01 14H2v2h7.01v3L13 15l-3.99-4zm5.98-1v-3H22V8h-7.01V5L11 9z"}),"CompareArrows"),Tt=Se(i.jsx("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"Person"),Ot=Se(i.jsx("path",{d:"M3 10h11v2H3zm0-4h11v2H3zm0 8h7v2H3zm17.59-2.07-4.25 4.24-2.12-2.12-1.41 1.41L16.34 19 22 13.34z"}),"PlaylistAddCheck"),Et=Se(i.jsx("path",{d:"M2.01 21 23 12 2.01 3 2 10l15 2-15 2z"}),"Send"),Rt=Se(i.jsx("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3M7.5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S9.83 13 9 13s-1.5-.67-1.5-1.5M16 17H8v-2h8zm-1-4c-.83 0-1.5-.67-1.5-1.5S14.17 10 15 10s1.5.67 1.5 1.5S15.83 13 15 13"}),"SmartToy"),Nt=Ze(()=>import("./docs-compact-CKNGiYh2.js"),[],import.meta.url),$t={openai:"img/openai.svg",anthropic:"img/anthropic.svg",gemini:"img/gemini.svg",deepseek:"img/deepseek.svg",custom:"img/custom.svg"},Lt={width:16,height:16,flexShrink:0,opacity:.7},Mt={ru:"Russian",en:"English",de:"German",es:"Spanish",fr:"French",it:"Italian",pl:"Polish",nl:"Dutch",pt:"Portuguese",uk:"Ukrainian","zh-cn":"Chinese"};let $e=null,Ae=null,Le=null,Me=null;function Dt(){$e=null,Ae=null,Le=null,Me=null}async function De(r,e){if($e)return $e;const n=Object.keys(e)[0];if(!n)return null;const t=await r.sendTo(n,"getAvailableAiProviders",{}),o=((t==null?void 0:t.providers)||[]).map(d=>d.provider),s=((t==null?void 0:t.providers)||[]).find(d=>d.provider==="custom");return o.length?($e={providers:o,gptBaseUrl:s==null?void 0:s.baseUrl},$e):null}const Bt=["embedding","text-embedding","textembedding","embeddinggemma","embed-","-embed","bge-","mxbai-embed","nomic-embed","arctic-embed","snowflake-arctic-embed","all-minilm","multilingual-e5","jina-embed","voyage-","gecko","paraphrase-multilingual","dall-e","gpt-image","image-edit","-image-preview","-image-latest","flash-image","nano-banana","stable-diffusion","sdxl","midjourney","flux-","imagen","sora","veo-","cogvideo","runway-","lumiere","lyria","whisper","tts-","-tts","speech-","audio-preview","mini-tts","mini-transcribe","-transcribe","native-audio","flash-live","gpt-audio","realtime","bark-","xtts","voicebox","moderation","omni-moderation","llama-guard","shieldgemma","prompt-guard","-guardian","safeguard","rerank","reranker","babbage-","davinci-","curie-","text-ada-","text-davinci","text-curie","text-babbage","instructgpt","code-davinci","code-cushman","-turbo-instruct","-search-preview","-search-api","code-search","text-search","similarity-","computer-use-preview","deep-research","robotics","aqa","reader-lm","-nsql","minicheck"];function zt(r){const e=r.toLowerCase();return!(Bt.some(n=>e.includes(n))||e.startsWith("claude-1")||e.startsWith("claude-instant"))}async function Pt(r,e){const n=await De(r,e);if(!n)return{models:[],providerMap:{},errors:["No API keys configured"]};const t=Object.keys(e)[0];if(!t)return{models:[],providerMap:{},errors:[u.I18n.t("No running javascript instance found")]};const o=[],s={},d=[],m=(a,y)=>{for(const l of a)zt(l)&&(s[l]||(o.push(l),s[l]=y))},c=[],p=(a,y)=>{c.push(r.sendTo(t,"testApiConnection",{provider:a==="custom"?"openai":a}).then(l=>{l.models?m(l.models,a):l.error&&d.push(`${y||a}: ${l.error}`)}).catch(l=>{d.push(`${y||a}: ${String(l)}`)}))},g={openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",deepseek:"DeepSeek",custom:"Custom"};for(const a of n.providers)p(a,g[a]);return await Promise.all(c),o.sort(),{models:o,providerMap:s,errors:d}}async function Re(r,e,n){var o;return await r.sendTo(e,"chatCompletion",{timeout:n.timeout||6e5,model:n.model,provider:n.provider,messages:n.messages,...n.baseUrl?{baseUrl:n.baseUrl}:{},...(o=n.tools)!=null&&o.length?{tools:n.tools}:{}})}async function tt(r){if(Me)return Me;const e=await r.getObjectViewSystem("state","","香"),n=await r.getObjectViewSystem("channel","","香"),t=await r.getObjectViewSystem("device","","香"),o=await r.getObjectViewSystem("folder","","香"),s=await r.getObjectViewSystem("enum","","香");return Me=Object.assign(e,n,t,o,s),Me}async function nt(r){return tt(r)}function Ie(r,e){return r&&typeof r=="object"?r[e]||r.en:r||""}async function Ye(r){var S,b,v,H;if(Ae)return Ae;const e=u.I18n.getLanguage(),n=await tt(r),t=Object.keys(n).sort(),o=new gt,s=[],d=["UNREACH_STICKY"],m=[yt.Types.info],c=[],p=[],g=[],a=[];t.forEach(E=>{var I,x,w;((I=n[E])==null?void 0:I.type)==="enum"?c.push(E):(w=(x=n[E])==null?void 0:x.common)!=null&&w.smartName&&a.push(E)}),c.forEach(E=>{E.startsWith("enum.rooms.")?p.push(E):E.startsWith("enum.functions.")&&g.push(E);const I=n[E].common.members;I!=null&&I.length&&I.forEach(x=>{n[x]&&!a.includes(x)&&a.push(x)})});const y={id:"",objects:n,_keysOptional:t,_usedIdsOptional:s,ignoreIndicators:d,excludedTypes:m},l=[];a.forEach(E=>{y.id=E;const I=o.detect(y);I&&I.forEach(x=>{var de;const w=(de=x.states.find(T=>T.id))==null?void 0:de.id;if(!w||l.find(T=>T.id===w))return;const M=n[w],re={id:w,name:Ie(M.common.name,e),type:M.type,deviceType:x.type,states:x.states.filter(T=>T.id).map(T=>({id:T.id,name:T.name,role:T.defaultRole,type:n[T.id].common.type,unit:n[T.id].common.unit,read:n[T.id].common.read??!0,write:n[T.id].common.write??!0}))},Y=w.split(".");let _,G;(M.type==="channel"||M.type==="state")&&(Y.pop(),_=Y.join("."),n[_]&&(n[_].type==="channel"||n[_].type==="folder")?(Y.pop(),G=Y.join("."),(!n[G]||n[G].type!=="device"&&n[_].type!=="folder")&&(G=void 0)):_=void 0);const le=p.find(T=>{var U,X,Q;return(U=n[T].common.members)!=null&&U.includes(w)||_&&((X=n[T].common.members)!=null&&X.includes(_))?!0:G&&((Q=n[T].common.members)==null?void 0:Q.includes(G))});le&&(re.room=Ie(n[le].common.name,e));const K=g.find(T=>{var U,X,Q;return(U=n[T].common.members)!=null&&U.includes(w)||_&&((X=n[T].common.members)!=null&&X.includes(_))?!0:G&&((Q=n[T].common.members)==null?void 0:Q.includes(G))});K&&(re.function=Ie(n[K].common.name,e)),l.push(re)})});for(let E=0;E { - // obj.state.val = the new value (boolean or number) - // obj.id = the state ID that changed - setState('zigbee.0.lamp.state', obj.state.val); - log('Changed to ' + obj.state.val); -}); - -// CORRECT: on() with filter -on({id: /zigbee\\.0\\..*\\.state$/, change: 'ne'}, (obj) => { - if (obj.state.val === true) { - setState('zigbee.0.other.state', true); - } -}); - -// Other correct examples: -setState('id', true); -setState('id', 50); -const val = getState('id').val; -schedule('0 7 * * *', () => { log('runs daily at 07:00'); }); -schedule('0 22 * * *', () => { setState('id', false); }); - -// CORRECT Telegram: always use sendTo, NEVER setState on telegram -sendTo('telegram.0', 'send', {text: 'Alert: ' + someValue}); - -// CORRECT httpGet: res.data is a STRING, parse JSON with JSON.parse -httpGet('https://api.example.com/data', (err, res) => { - const data = JSON.parse(res.data); - log('Temperature: ' + data.main.temp); -}); - -$('state[state.id=*.state](rooms=Room)').each((id) => { setState(id, false); }); -createState('name', 0, {type: 'number', name: 'Name'}); -// CORRECT: one-time delayed action (turn off after 5 minutes = 300000ms) -setStateDelayed('zigbee.0.lamp.state', false, false, 5 * 60 * 1000); -log(formatDate(new Date(), 'DD.MM.YYYY hh:mm')); - -WRONG: on('id', (id, state) => {}) CORRECT: on('id', (obj) => {}) -WRONG: set('id', true) CORRECT: setState('id', true) -WRONG: adapter.setState('id', true) CORRECT: setState('id', true) -WRONG: obj.val or newState.val CORRECT: obj.state.val -WRONG: on('change', {id: 'x'}, cb) CORRECT: on({id: 'x', change: 'ne'}, cb) -WRONG: setState('telegram.0', text) CORRECT: sendTo('telegram.0', 'send', {text: text}) -WRONG: res.body.main.temp CORRECT: JSON.parse(res.data).main.temp -WRONG: function myFunc() {} CORRECT: write code directly, no function definitions -WRONG: setTimeout(fn, ms) CORRECT: setStateDelayed(id, val, false, ms) for one-time delay -WRONG: schedule('*/5 * * * *', fn) for one-time delay. schedule() is ONLY for recurring tasks -Values are boolean (true/false) or numbers, NEVER strings like 'ON'/'OFF'. -NEVER use: function keyword, require, import, setInterval, setTimeout, console.log, debug(). - -All available functions (use syntax from examples above): -on(pattern, (obj)=>{}) | once(pattern, (obj)=>{}) | unsubscribe(handler) -setState(id, val) | getState(id).val | setStateChanged(id, val) | setStateDelayed(id, val, ack, ms) | clearStateDelayed(id) -existsState(id) | existsObject(id) | getObject(id) | setObject(id, obj) | extendObject(id, obj) | deleteObject(id) -createState(name, initVal, {type,name,role}) | deleteState(name) | createAlias(name, alias) -schedule(cron, ()=>{}) | clearSchedule(obj) | scheduleById(id, (obj)=>{}) | getSchedules() -sendTo(adapter, cmd, msg) | sendToHost(host, cmd, msg) -$('selector').each((id)=>{}) | $('selector').setState(val) | $('selector').getState() -log(text) | formatDate(date, 'DD.MM.YYYY hh:mm') | formatTimeDiff(ms) | formatValue(val, decimals) -getDateObject(str) | getAstroDate(pattern) | isAstroDay() | compareTime(start, end, op) -exec(cmd, (err,stdout,stderr)=>{}) | httpGet(url, (err,res)=>{}) | httpPost(url, data, (err,res)=>{}) -readFile(adapter, name, (err,data)=>{}) | writeFile(adapter, name, data, cb) | delFile(adapter, name, cb) -onFile(id, name, withFile, cb) | offFile(id, name) | onStop(cb, timeout) -getHistory(inst, {id,start,end,aggregate,count}, cb) | getEnums(name) | getIdByName(name) -wait(ms) | toInt(val) | toFloat(val) | toBoolean(val) -messageTo(target, data) | onMessage(name, cb) | onLog(severity, cb) -runScript(name) | startScript(name) | stopScript(name) | isScriptActive(name) - -Write comments in ${r}. Put code in a \`\`\`javascript code block.`}function Xe(r){return`You generate ioBroker Blockly XML blocks. Return Blockly XML in a \`\`\`xml code block. -Use EXACT state IDs from the plan. Write text/comments in ${r}. - -IMPORTANT RULES: -- Return ONLY the inner blocks (no wrapper needed) -- Use the exact block types shown below -- State IDs must be full paths like "zigbee2mqtt.0.0x1234.state" -- Values are boolean (true/false) or numbers, NEVER strings like "ON"/"OFF" -- For Telegram use sendto_custom block, NEVER setState on telegram - -## Block Templates - -### Trigger: on_ext (react to state changes) - - - ne - - - STATE_ID_HERE - - - - - - -### Schedule: schedule (cron-based) - - 0 7 * * * - - - - - -### Set State: control - - - STATE_ID_HERE - FALSE - - TRUE - - - -### Get State Value: get_value - - val - STATE_ID_HERE - - -### Log: debug - - log - - Message here - - - -### SendTo (Telegram): sendto_custom - - - telegram.0 - send - - - Message text - - - text - - - -### Timeout: timeouts_settimeout - - timeout1 - 5000 - ms - - - - - -### If/Else: controls_if - - - - - EQ - valSTATE_ID - TRUE - - - - - - -### Number value -0 - -### Text value -hello - -### Boolean value -TRUE - -### Comparison: logic_compare - - EQ - - - - - -## Common Patterns - -### Turn on light when sensor triggers: - - - ne - - - zigbee2mqtt.0.0xSENSOR.occupancy - - - - - - EQ - valzigbee2mqtt.0.0xSENSOR.occupancy - TRUE - - - - - - zigbee2mqtt.0.0xLAMP.state - FALSE - TRUE - - - - - - -Write comments in ${r}. Put blocks in a \`\`\`xml code block.`}function Pe(r){let e=r;return e=e.replace(/[\s\S]*?<\/think>/gi,""),e=e.replace(/<\|endoftext\|>/g,""),e=e.replace(/<\|im_start\|>[\s\S]*?<\|im_end\|>/g,""),e=e.replace(/<\|im_start\|>[\s\S]*/g,""),e.trim()}const Jt=[{type:"function",function:{name:"search_datapoints",description:'Search ALL ioBroker objects by ID, name, or role — includes states, channels, devices, folders, enums (rooms/functions), adapters, instances, scripts, meta, etc. Returns matching IDs with object type, name, role, unit, and a hasChildren hint for containers. IMPORTANT: Aliases and physical device groupings are usually CHANNELS containing multiple state children (e.g. a motion sensor is often a channel alias.0.Floor.Room.MotionSensor with states ACTUAL, BATTERY, STATE under it). If a channel/device/folder matches your query, call get_object_info on its ID to list its state children. Role-based queries work too: "sensor.motion", "switch.light", "value.temperature".',parameters:{type:"object",properties:{query:{type:"string",description:'Search pattern (case-insensitive substring) - matches against object ID, name, and role. Examples: "bewegungsmelder", "temperature", "sensor.motion", "alias.0", "küche", "zigbee2mqtt.0.lamp".'},max_results:{type:"number",description:"Maximum number of results to return (default: 20)."},object_type:{type:"string",description:'Optional filter by object type: "state", "channel", "device", "folder", "enum", "adapter", "instance", "script", "meta", etc. Omit to search every type.'}},required:["query"]}}},{type:"function",function:{name:"get_state_value",description:"Get the current value of an ioBroker state/datapoint. Returns value, timestamp, and acknowledgment flag.",parameters:{type:"object",properties:{id:{type:"string",description:'The full state ID, e.g. "zigbee2mqtt.0.sensor.temperature"'}},required:["id"]}}},{type:"function",function:{name:"get_object_info",description:"Get detailed info about ANY ioBroker object + its full parent hierarchy + direct children. Works for every object type: state, channel, device, folder, adapter, instance, enum, meta, script. Returns: the object itself, parent chain (all non-state ancestors up to the adapter), and — if the object is a container (channel/device/folder/enum/instance/adapter/meta) — the list of direct children with their types, names, roles and units. Use this to navigate the object tree: start from a channel found by search_datapoints, read its children to see the actual state IDs underneath.",parameters:{type:"object",properties:{id:{type:"string",description:'The full object ID, e.g. "zigbee2mqtt.0.0x1234.state", "alias.0.Room.MotionSensor", or "enum.rooms.kitchen".'}},required:["id"]}}},{type:"function",function:{name:"search_scripts",description:"Search through all ioBroker JavaScript/Blockly/Rules scripts. Can search by script name/path OR by content (e.g. find all scripts that use a specific datapoint ID). Returns matching script names, paths, and matching lines.",parameters:{type:"object",properties:{query:{type:"string",description:'Search term - matches against script name, path, AND source code content. Examples: "carport", "zigbee2mqtt.0.lamp.state", "telegram"'},max_results:{type:"number",description:"Maximum number of scripts to return (default: 10)"}},required:["query"]}}},{type:"function",function:{name:"read_script",description:"Read the full source code of a specific ioBroker script by its ID or path. Use search_scripts first to find the script ID, then read_script to see its complete code.",parameters:{type:"object",properties:{id:{type:"string",description:'The script ID (e.g. "script.js.common.Licht.Carport") or path (e.g. "common/Licht/Carport")'}},required:["id"]}}},{type:"function",function:{name:"list_scripts",description:"List ALL available ioBroker scripts with their names, paths, types (JavaScript/Blockly/TypeScript), and enabled status. Use this to get an overview of all scripts before searching or reading specific ones.",parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"get_editor_selection",description:'Read what the user has currently selected in the script editor. Returns the selected text and its line/column range, or a message if nothing is selected. Use this when the user refers to "this", "das hier", "the selection", or asks about a specific piece of code they highlighted.',parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"get_editor_content",description:"Read the full current content of the script editor (may differ from the initial script version if the user has made edits). Use this when you need the live editor state rather than the saved script.",parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"get_cursor_position",description:"Read the current cursor position (line and column, 1-based) in the script editor.",parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"highlight_text_in_editor",description:"Search for a literal text in the script editor and select + scroll to it. Returns how many occurrences were found. Use this to draw the user's attention to a specific snippet you are discussing.",parameters:{type:"object",properties:{text:{type:"string",description:"Exact substring to search for (case-sensitive)."}},required:["text"]}}},{type:"function",function:{name:"highlight_line_range",description:"Select and scroll to a range of lines in the editor. Both line numbers are 1-based and inclusive. Use this to show the user which block of code you are referring to.",parameters:{type:"object",properties:{start_line:{type:"number",description:"First line (1-based, inclusive)."},end_line:{type:"number",description:"Last line (1-based, inclusive)."}},required:["start_line","end_line"]}}},{type:"function",function:{name:"go_to_line",description:"Move the cursor to a specific line (and optional column) and scroll that line into view. Use this to navigate the user to a relevant spot.",parameters:{type:"object",properties:{line:{type:"number",description:"1-based line number."},column:{type:"number",description:"1-based column (optional, default 1)."}},required:["line"]}}},{type:"function",function:{name:"insert_text_at_cursor",description:"Insert text at the current cursor position in the editor (or replace the current selection if one exists). Use sparingly — prefer returning code in a fenced markdown block so the user can review and smart-apply it. Only use direct insertion when the user explicitly asked you to write something into the editor.",parameters:{type:"object",properties:{text:{type:"string",description:"Text to insert."}},required:["text"]}}},{type:"function",function:{name:"replace_selection",description:"Replace the currently selected text in the editor with new text. Fails if nothing is selected. Use this to refactor or rewrite a specific highlighted snippet.",parameters:{type:"object",properties:{text:{type:"string",description:"Replacement text."}},required:["text"]}}},{type:"function",function:{name:"get_diagnostics",description:"Read all active Monaco diagnostics (errors, warnings, info, hints) from the current editor model — this is what shows up as red/yellow squiggles. Use this to find syntax errors, unused variables, missing types, or other editor-reported issues the user might be asking about.",parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"get_document_symbols",description:"Get the document outline of the current script: all top-level functions, classes, constants, and variables with their line numbers. Use this to understand the structure of a long script or to find where a specific function is defined.",parameters:{type:"object",properties:{}}}}];function Je(r){return r&&typeof r=="object"?r.en||r.de||"":r||""}function Wt(r,e,n){const t=(n||"").toLowerCase();if(!t)return!1;if(r.toLowerCase().includes(t))return!0;const o=e==null?void 0:e.common;if(!o)return!1;const s=Je(o.name).toLowerCase();if(s&&s.includes(t))return!0;const d=(o.role||"").toLowerCase();return!!(d&&d.includes(t))}async function Ft(r,e,n=20,t){const o=await nt(r),s=t==null?void 0:t.toLowerCase(),d=[],m=Object.keys(o),c=new Set;for(const p of m){const g=p.lastIndexOf(".");g>0&&c.add(p.substring(0,g))}for(const p of m){const g=o[p],a=g==null?void 0:g.type;if(!a||s&&a!==s||!Wt(p,g,e))continue;const y=g.common,l={id:p,type:a,name:Je(y==null?void 0:y.name)};if(y!=null&&y.role&&(l.role=y.role),a==="state"?(l.stateType=(y==null?void 0:y.type)||"",y!=null&&y.unit&&(l.unit=y.unit)):c.has(p)&&(l.hasChildren=!0),d.push(l),d.length>=n)break}return d.length===0?JSON.stringify({message:`No objects found matching "${e}". Hint: try a role like "sensor.motion" or a partial path.`}):JSON.stringify(d)}async function Ht(r,e){try{const n=await r.getState(e);return JSON.stringify(n?{val:n.val,ts:n.ts?new Date(n.ts).toISOString():null,ack:n.ack,from:n.from}:{error:`State '${e}' not found`})}catch{return JSON.stringify({error:`Failed to read state '${e}'`})}}const Vt=new Set(["channel","device","folder","adapter","instance","enum","meta"]),Ke=50;async function qt(r,e){var n;try{const t=await r.getObject(e);if(!t)return JSON.stringify({error:`Object '${e}' not found`});const o={id:t._id,type:t.type,common:t.common},s=e.split("."),d=[];for(let m=s.length-1;m>=2;m--){const c=s.slice(0,m).join(".");try{const p=await r.getObject(c);p&&p.type!=="state"&&d.push({id:p._id,type:p.type,name:Je((n=p.common)==null?void 0:n.name),common:p.common})}catch{}}if(d.length>0&&(o.parents=d),Vt.has(t.type)){const m=await nt(r),c=[],p=`${e}.`;let g=!1;for(const a of Object.keys(m))if(a.startsWith(p)&&!a.substring(p.length).includes(".")){const y=m[a],l=y==null?void 0:y.common,S={id:a,name:Je(l==null?void 0:l.name),type:(y==null?void 0:y.type)||""};if(l!=null&&l.role&&(S.role=l.role),(y==null?void 0:y.type)==="state"&&(l!=null&&l.unit)&&(S.unit=l.unit),c.push(S),c.length>=Ke){g=!0;break}}c.length>0&&(o.children=c,g&&(o.childrenTruncated=!0,o.childrenHint=`Only the first ${Ke} children are shown. Use search_datapoints with a more specific query or the object_type filter to narrow down.`))}return JSON.stringify(o)}catch{return JSON.stringify({error:`Failed to read object '${e}'`})}}function st(r){return vt(r)||r}function Yt(r,e,n=10){const t=e.toLowerCase(),o=[];for(const s of r){const d=s.id.toLowerCase(),m=s.name.toLowerCase(),c=s.id.replace(/^script\.js\./,"").replace(/\./g,"/"),p=s.engineType==="Blockly"||s.engineType==="Rules",g=d.includes(t)||m.includes(t),a=p?st(s.source):s.source,y=a.toLowerCase().includes(t);if(g||y){const l={id:s.id,path:c,name:s.name,type:p?"Blockly":s.engineType.includes("TypeScript")?"TypeScript":"JavaScript",enabled:s.enabled};if(y){const S=a.split(` -`),b=[];for(let v=0;v=5));v++);b.length>0&&(l.matchingLines=b)}if(o.push(l),o.length>=n)break}}return o.length===0?JSON.stringify({message:`No scripts found matching "${e}"`}):JSON.stringify(o)}function Gt(r,e){const n=e.replace(/\//g,".").toLowerCase(),t=r.find(m=>{const c=m.id.toLowerCase();return c===n||c===`script.js.${n}`||c.endsWith(`.${n}`)});if(!t)return JSON.stringify({error:`Script '${e}' not found. Use search_scripts to find available scripts.`});const o=t.engineType==="Blockly"||t.engineType==="Rules",s=o?st(t.source):t.source,d=t.id.replace(/^script\.js\./,"").replace(/\./g,"/");return JSON.stringify({id:t.id,path:d,name:t.name,type:o?"Blockly":t.engineType.includes("TypeScript")?"TypeScript":"JavaScript",enabled:t.enabled,source:s})}function Xt(r){const e=r.map(n=>({id:n.id,path:n.id.replace(/^script\.js\./,"").replace(/\./g,"/"),name:n.name,type:n.engineType==="Blockly"||n.engineType==="Rules"?"Blockly":n.engineType.includes("TypeScript")?"TypeScript":"JavaScript",enabled:n.enabled}));return JSON.stringify(e)}function he(){return JSON.stringify({error:"Editor is not available. This tool requires the script editor to be open."})}async function Kt(r,e,n,t){let o;try{o=JSON.parse(e.function.arguments)}catch{return JSON.stringify({error:`Invalid arguments: ${e.function.arguments}`})}switch(e.function.name){case"search_datapoints":return Ft(r,o.query,o.max_results||20,o.object_type);case"get_state_value":return Ht(r,o.id);case"get_object_info":return qt(r,o.id);case"search_scripts":return Yt(n||[],o.query,o.max_results||10);case"read_script":return Gt(n||[],o.id);case"list_scripts":return Xt(n||[]);case"get_editor_selection":{if(!(t!=null&&t.getSelection))return he();const s=t.getSelection();return JSON.stringify(s||{message:"No text is currently selected in the editor."})}case"get_editor_content":return t!=null&&t.getContent?JSON.stringify({content:t.getContent()}):he();case"get_cursor_position":{if(!(t!=null&&t.getCursorPosition))return he();const s=t.getCursorPosition();return JSON.stringify(s||{message:"Editor has no cursor position (not focused)."})}case"highlight_text_in_editor":{if(!(t!=null&&t.highlightText))return he();const s=t.highlightText(o.text);return JSON.stringify({matches:s,message:s===0?`Text "${o.text}" was not found in the editor.`:`Highlighted ${s} occurrence(s) of "${o.text}".`})}case"highlight_line_range":{if(!(t!=null&&t.highlightLineRange))return he();const s=t.highlightLineRange(o.start_line,o.end_line);return JSON.stringify({success:s,message:s?`Selected lines ${o.start_line}-${o.end_line}.`:"Could not select the requested line range."})}case"go_to_line":{if(!(t!=null&&t.goToLine))return he();const s=t.goToLine(o.line,o.column);return JSON.stringify({success:s,message:s?`Cursor moved to line ${o.line}.`:"Could not move the cursor."})}case"insert_text_at_cursor":{if(!(t!=null&&t.insertTextAtCursor))return he();const s=t.insertTextAtCursor(o.text);return JSON.stringify({success:s,message:s?"Text inserted at cursor.":"Editor rejected the insertion."})}case"replace_selection":{if(!(t!=null&&t.replaceSelection))return he();const s=t.replaceSelection(o.text);return JSON.stringify({success:s,message:s?"Selection replaced.":"No text was selected to replace."})}case"get_diagnostics":{if(!(t!=null&&t.getDiagnostics))return he();const s=t.getDiagnostics();return JSON.stringify({count:s.length,diagnostics:s})}case"get_document_symbols":{if(!(t!=null&&t.getSymbols))return he();const s=await t.getSymbols();return JSON.stringify({count:s.length,symbols:s})}default:return JSON.stringify({error:`Unknown tool: ${e.function.name}`})}}let Qt=0;function Ne(){return`msg_${Date.now()}_${++Qt}`}function Zt(r){const{socket:e,runningInstances:n,currentCode:t,currentLanguage:o,allScripts:s,editorApi:d,currentScriptId:m}=r,c=A((f,O,R)=>f==="none"||!R?null:{range:O,scriptId:m||"",scriptVersion:(t||"").length,kind:f,originalText:R},[m,t]),[p,g]=te(()=>{try{const f=window.localStorage.getItem("Editor.aiChatMessages");return f?JSON.parse(f):[]}catch{return[]}}),a=A(f=>{g(O=>{const R=typeof f=="function"?f(O):f,L=R.length>100?R.slice(-100):R;try{window.localStorage.setItem("Editor.aiChatMessages",JSON.stringify(L))}catch{try{const W=L.slice(-20);window.localStorage.setItem("Editor.aiChatMessages",JSON.stringify(W))}catch{}}return L})},[]),[y,l]=te(!1),[S,b]=te(null),[v,H]=te(window.localStorage.getItem("Editor.aiChatMode")||"agent"),E=A(f=>{H(f),window.localStorage.setItem("Editor.aiChatMode",f)},[]),[I,x]=te(null),[w,M]=te(window.localStorage.getItem("openai-model")||""),[re,Y]=te([]),[_,G]=te({}),[le,K]=te(!0),[de,T]=te(null),U=ne(null),X=ne(null),Q=ne(null),h=ne(null),C=A(f=>{M(f),window.localStorage.setItem("openai-model",f)},[]),k=A(async()=>{K(!0),T(null);try{const f=await Pt(e,n);if(Y(f.models),G(f.providerMap),f.models.length>0){const O=window.localStorage.getItem("openai-model");O&&f.models.includes(O)?M(O):M(f.models[0])}f.errors.length>0&&T(f.errors.join("; "))}catch(f){T(String(f))}K(!1)},[e,n]);xe(()=>{k()},[k]);const z=A(f=>{let O=!1,R=!1;const L=[];let W=!1;const ge=/@([\w/äöüÄÖÜß-]+)/g;let D;for(;(D=ge.exec(f))!==null;){const B=D[1].toLowerCase();if(B==="alle"||B==="all")O=!0;else if(B==="geräte"||B==="devices"||B==="geraete")R=!0;else if(W=!0,s&&s.length>0){const V=D[1].replace(/\//g,".").toLowerCase(),oe=V.split("."),ie=s.find(ye=>{const me=ye.id.toLowerCase(),Z=me.replace(/^script\.js\./,"");if(Z===V||Z.endsWith(`.${V}`)||me===`script.js.${V}`)return!0;let _e=0;for(const pe of oe){const Ce=Z.indexOf(pe,_e);if(Ce===-1)return!1;_e=Ce+pe.length}return!0});if(ie)L.push(ie.id);else for(const ye of oe){if(ye.length<3)continue;const me=s.filter(Z=>Z.id.toLowerCase().includes(`.${ye}`)||Z.name.toLowerCase().includes(ye));for(const Z of me)L.includes(Z.id)||L.push(Z.id)}}}return W&&L.length===0&&(O=!0),{cleanMessage:f.replace(/@[\w/äöüÄÖÜß]+\s*/g,"").trim(),mentionedScriptIds:L,includeAll:O,includeDevices:R}},[s]),se=A(async(f,O,R)=>{h.current||(h.current=await At()),U.current||(U.current=await De(e,n));const L=Ge(),W=o==="blockly",ge=f||R.length>0;let D=`You are an AI assistant for ioBroker JavaScript adapter scripting. Help the user write, debug, and understand ioBroker scripts. Write comments in ${L}. Use the ioBroker JavaScript API correctly. - -ioBroker object hierarchy: adapter.instance.device.channel.state -- A "state" is a single datapoint (e.g. zigbee2mqtt.0.0x1234.temperature) -- A "channel" groups related states (e.g. zigbee2mqtt.0.0x1234 contains temperature, humidity, battery) -- A "device" groups channels (e.g. zigbee2mqtt.0.0x1234) -- The channel/device often has the human-readable name (e.g. "Living Room Sensor") -When looking up info about a datapoint, ALWAYS also check its parent channel/device for the device name and context. Use get_object_info which returns the full parent hierarchy automatically. - -Available API and syntax rules: -${h.current}`;if(W&&(D+="\n\nThe user is working in the Blockly visual editor. When asked to create or modify code, respond with Blockly XML in a ```xml code block instead of JavaScript."),(O||f)&&(Q.current||(Q.current=await Ye(e)),D+=` - -Available smart home devices: -${JSON.stringify(Q.current,null,0)}`),!ge&&t)if(W){const F="%%BLOCKLY_XML%%",B=t.indexOf(F),V=B!==-1?t.substring(0,B).trim():t,oe=B!==-1?t.substring(B+F.length).trim():"";D+=` - -The user is working on this Blockly script (currently open in the editor). - -Generated JavaScript (shows the logic): -\`\`\`javascript -${V} -\`\`\``,oe&&(D+=` - -Blockly XML (use for modifications): -\`\`\`xml -${oe} -\`\`\``)}else D+=` - -The user's question is about this script (currently open in the editor, ${o||"javascript"}): -\`\`\`${o||"javascript"} -${t} -\`\`\``;if(f&&s&&s.length>0)D+=` - -The user requested ALL scripts. Search through all of them to answer the question. Always identify WHICH script you describe by its full ID. Scripts may reference datapoint IDs via variables. - -${qe(s,!0)}`;else if(R.length>0&&s){const F=s.filter(B=>R.includes(B.id));F.length>0&&(D+=` - -IMPORTANT: The user is asking about the following script(s). Answer ONLY about these scripts, NOT about the currently open editor tab. Analyze the source code below carefully: - -${qe(F,!0)}`)}return W&&(D+=` - -${Xe(L)}`),[{role:"system",content:D}]},[e,n,t,o,s]),ke=A(async f=>{if(!f.trim()||y)return;const O=_[w];if(!O){x(u.I18n.t("Please select a valid model"));return}const R=U.current||await De(e,n);if(U.current=R,!R){x(u.I18n.t("No API keys configured"));return}const L=Object.keys(n)[0];if(!L){x(u.I18n.t("No running javascript instance found"));return}const W=O==="custom"&&R.gptBaseUrl||"",ge={id:Ne(),role:"user",content:f,timestamp:Date.now()},D={id:Ne(),role:"assistant",content:`⏳ ${u.I18n.t("Generating plan...")}`,timestamp:Date.now()};a(F=>[...F,ge,D]),l(!0),x(null);try{const F=Ge();Q.current||(Q.current=await Ye(e));const B=Q.current||[],V=`Devices in my smart home: -${JSON.stringify(B)} - -I need a plan for this task: ${f} - -Answer with max 6 lines. Use FULL device IDs from the list above (e.g. zigbee2mqtt.0.0xa4c1383f5ef5fb07.state). No explanation. No reasoning. -1. IDs: -2. Trigger: -3. Condition: -4. Actions: -5. Else: -6. Extra: -Values are boolean (true/false) or numbers, not strings. Use .state not .state_toggle.`,oe=await Re(e,L,{messages:[{role:"user",content:V}],model:w,provider:O,baseUrl:W});if(oe.error){x(oe.error),a(ae=>ae.slice(0,-2)),l(!1);return}const ie=Pe(oe.content||"");a(ae=>{const j=[...ae],P=j[j.length-1];return(P==null?void 0:P.role)==="assistant"&&(j[j.length-1]={...P,content:`📋 **${u.I18n.t("Plan")}:** -${ie}`}),j});const ye={id:Ne(),role:"assistant",content:`⏳ ${u.I18n.t("Generating code...")}`,timestamp:Date.now()};a(ae=>[...ae,ye]);const me=o==="blockly",Z=me?`TASK: ${f} - -PLAN: -${ie} - -Generate Blockly XML blocks for this ioBroker automation. Use the exact state IDs from the plan. If the plan contains TODO_DEVICE_ID, keep it as a placeholder. Write comments in ${F}. Put the blocks in a \`\`\`xml code block. You may add a short explanation before or after the XML.`:`TASK: ${f} - -PLAN: -${ie} - -Write the ioBroker script. Use the exact state IDs from the plan. If the plan contains TODO_DEVICE_ID, keep it as a placeholder with a comment so the user can fill in the correct ID. Write comments in ${F}. Put the code in a \`\`\`javascript code block. You may add a short explanation before or after the code.`,_e=me?Xe(F):Ut(F),pe=await Re(e,L,{messages:[{role:"system",content:_e},{role:"user",content:Z}],model:w,provider:O,baseUrl:W});if(pe.error){x(pe.error),a(ae=>ae.slice(0,-1)),l(!1);return}const Ce=Pe(pe.content||"");a(ae=>{const j=[...ae],P=j[j.length-1];return(P==null?void 0:P.role)==="assistant"&&(j[j.length-1]={...P,content:Ce}),j}),b(`${u.I18n.t("devices")}: ${B.length}`)}catch(F){x(String(F)),a(B=>B.slice(0,-1))}l(!1)},[w,_,y,e,n,o,a]),J=A(async f=>{var ae;if(v==="code")return ke(f);if(!f.trim()||y)return;const O=_[w];if(!O){x(u.I18n.t("Please select a valid model"));return}const R=U.current||await De(e,n);if(U.current=R,!R){x(u.I18n.t("No API keys configured"));return}const L=Object.keys(n)[0];if(!L){x(u.I18n.t("No running javascript instance found"));return}let W=X.current;if(X.current=null,!W)try{const j=(ae=d==null?void 0:d.getSelection)==null?void 0:ae.call(d);j&&j.text&&(W=c("selection",j.range,j.text))}catch{}const ge={id:Ne(),role:"user",content:f,timestamp:Date.now(),sourceRange:W},D={id:Ne(),role:"assistant",content:"",timestamp:Date.now(),sourceRange:W};a(j=>[...j,ge,D]),l(!0),x(null);const{cleanMessage:F,mentionedScriptIds:B,includeAll:V,includeDevices:oe}=z(f),ie=[];if(V)ie.push(`${u.I18n.t("all scripts")} (${(s==null?void 0:s.length)||0})`);else if(B.length>0){const j=B.map(P=>P.replace(/^script\.js\./,""));ie.push(j.join(", "))}else ie.push(u.I18n.t("current script"));oe&&ie.push(u.I18n.t("devices")),b(`${u.I18n.t("Context")}: ${ie.join(" + ")}`);const ye=await se(V,oe,B),me=O==="custom"&&R.gptBaseUrl||"";let Z=F||f;if(s&&s.length>0){const j=Z.match(/\b[\w-]+\.\d+\.[\w.-]+/g);if(j){const P=[];for(const ee of new Set(j)){const be=wt(s,ee);be.length>0&&P.push(`Datapoint "${ee}" is used in: -${be.map(je=>` - ${je.scriptName} (${je.scriptId}) line ${je.lineNumber}: ${je.usageType} → ${je.line}`).join(` -`)}`)}P.length>0&&(Z+=` - -[Automatic analysis results] -${P.join(` - -`)}`)}}const _e=[...ye,...p.filter(j=>j.role!=="system").map(j=>({role:j.role,content:j.content})),{role:"user",content:Z}],pe=v==="agent",Ce=5;try{const j=[..._e];for(let P=0;PN.slice(0,-1));else{const N=Pe(q.content||"");a(ce=>{const fe=[...ce],Be=fe[fe.length-1];return(Be==null?void 0:Be.role)==="assistant"&&(fe[fe.length-1]={...Be,content:N}),fe})}break}x(ee.error),a(q=>q.slice(0,-1));break}let be=ee.tool_calls;if((!be||be.length===0)&&pe&&ee.content){const q=ee.content.trim();try{const N=JSON.parse(q);N.name&&N.arguments&&(be=[{id:`text_tool_${Date.now()}`,type:"function",function:{name:N.name,arguments:JSON.stringify(N.arguments)}}])}catch{}}if(!be||be.length===0){const q=Pe(ee.content||"");a(N=>{const ce=[...N],fe=ce[ce.length-1];return(fe==null?void 0:fe.role)==="assistant"&&(ce[ce.length-1]={...fe,content:q}),ce});break}ee.tool_calls=be;const je=ee.tool_calls.map(q=>{let N={};try{N=JSON.parse(q.function.arguments)}catch{}switch(q.function.name){case"search_datapoints":return`🔍 ${u.I18n.t("Searching datapoints")}: "${String(N.query||"")}"`;case"get_state_value":return`📊 ${u.I18n.t("Reading value")}: ${String(N.id||"")}`;case"get_object_info":return`📋 ${u.I18n.t("Loading object info")}: ${String(N.id||"")}`;case"search_scripts":return`🔍 ${u.I18n.t("Searching scripts")}: "${String(N.query||"")}"`;case"read_script":return`📖 ${u.I18n.t("Reading script")}: ${String(N.id||"")}`;case"list_scripts":return`📂 ${u.I18n.t("Loading script list")}`;default:return`⚙️ ${q.function.name}`}});a(q=>{const N=[...q],ce=N[N.length-1];return(ce==null?void 0:ce.role)==="assistant"&&(N[N.length-1]={...ce,content:je.join(` -`)}),N}),j.push({role:"assistant",content:ee.content||"",tool_calls:ee.tool_calls});for(const q of ee.tool_calls){const N=await Kt(e,q,s,d);j.push({role:"tool",tool_call_id:q.id,content:N})}}}catch(j){x(String(j)),a(P=>P.slice(0,-1))}l(!1)},[w,_,p,y,e,n,se,z,s,v,ke,a,c,d]),ue=A(()=>{a([]),x(null),l(!1),b(null),Dt(),window.localStorage.removeItem("Editor.aiChatHistory")},[a]),it=A(async(f,O)=>{const R=_[w];if(!R)return`Error: ${u.I18n.t("Please select a valid model")}`;const L=U.current||await De(e,n);if(U.current=L,!L)return`Error: ${u.I18n.t("No API keys configured")}`;const W=Object.keys(n)[0];if(!W)return`Error: ${u.I18n.t("No running javascript instance found")}`;const ge=R==="custom"&&L.gptBaseUrl||"",D=o||"javascript",F=`You are an assistant for writing ioBroker ${D} scripts. The user will ask a question about a snippet of their code. Match your answer to the question: -- If they ask for an explanation, description, or "what does this do?", reply with clear prose (a few sentences). Do NOT repeat the code unchanged. -- If they explicitly ask for a change, refactor, fix, or rewrite, reply with a single fenced \`\`\`${D==="blockly"?"xml":D}\`\`\` code block containing the full replacement for the selection. You may add one short sentence before or after the block. -- If they ask something ambiguous or meta (e.g. "is this correct?"), reply in prose first and only include code if proposing a change. -ioBroker globals available in scripts: on, setState, getState, schedule, sendTo, log, createState, setStateDelayed, existsState, httpGet, httpPost.`,B=O?`Code from my editor: - -\`\`\`${D==="blockly"?"xml":D} -${O} -\`\`\` - -${f}`:f;try{const V=await Re(e,W,{messages:[{role:"system",content:F},{role:"user",content:B}],model:w,provider:R,baseUrl:ge});return V.error?`Error: ${V.error}`:V.content||""}catch(V){return`Error: ${V.message||String(V)}`}},[w,_,n,e,o]),at=A(f=>{f.range&&f.code?X.current=c(f.kind||"codelens",f.range,f.code):X.current=null,Ze(async()=>{const{buildActionPrompt:O}=await Promise.resolve().then(()=>ln);return{buildActionPrompt:O}},void 0,import.meta.url).then(({buildActionPrompt:O})=>{const R=O({action:f.action,code:f.code,language:o||"javascript",diagnostic:f.diagnostic,question:f.question,rangeLabel:f.rangeLabel});R?J(R):X.current=null}).catch(()=>{X.current=null,x(u.I18n.t("Failed to build AI action prompt"))})},[J,o,c]);return{messages:p,isLoading:y,error:I,model:w,availableModels:re,modelProviderMap:_,modelsLoading:le,modelsError:de,lastContextInfo:S,mode:v,setMode:E,setModel:C,sendMessage:J,triggerAiAction:at,askInline:it,clearChat:ue,retryLoadModels:k}}const en=({code:r,language:e,themeType:n,onInsertCode:t,onShowDiff:o,sourceRange:s})=>{const d=ne(null);xe(()=>{var g;const c=window.monaco;if(!d.current||!((g=c==null?void 0:c.editor)!=null&&g.colorize))return;const p=e==="ts"||e==="typescript"?"typescript":e||"javascript";c.editor.colorize(r,p,{theme:n==="dark"?"vs-dark":"vs"}).then(a=>{d.current&&(d.current.innerHTML=a)})},[r,e,n]);const m=A(()=>{navigator.clipboard.writeText(r)},[r]);return i.jsxs($,{sx:{position:"relative",my:1,borderRadius:1,overflow:"hidden",border:"1px solid",borderColor:"divider"},children:[i.jsxs($,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",px:1,py:.5,bgcolor:"action.hover",borderBottom:"1px solid",borderColor:"divider"},children:[i.jsx($,{sx:{fontSize:"0.75rem",color:"text.secondary",textTransform:"uppercase"},children:e||"javascript"}),i.jsxs($,{children:[i.jsx(ve,{title:u.I18n.t("Copy"),children:i.jsx(we,{size:"small",onClick:m,children:i.jsx(kt,{sx:{fontSize:16}})})}),t&&i.jsx(ve,{title:u.I18n.t("Insert into editor"),children:i.jsx(we,{size:"small",onClick:()=>t(r),children:i.jsx(et,{sx:{fontSize:16}})})}),o&&i.jsx(ve,{title:u.I18n.t("Show as diff"),children:i.jsx(we,{size:"small",onClick:()=>o(r,s),children:i.jsx(It,{sx:{fontSize:16}})})})]})]}),i.jsx("pre",{ref:d,style:{margin:0,padding:"8px 12px",overflow:"auto",maxHeight:400,fontSize:"13px",fontFamily:"'Cascadia Code', 'Fira Code', 'Consolas', monospace",backgroundColor:n==="dark"?"#1e1e1e":"#f8f8f8",color:n==="dark"?"#d4d4d4":"#333"},children:r})]})},tn=({xml:r,themeType:e})=>{const n=ne(null),t=ne(null),[o,s]=te(60),d=ne(!1);return xe(()=>{d.current&&(d.current=!1,requestAnimationFrame(()=>{const m=window.Blockly,c=t.current;m&&c&&(m.svgResize(c),c.scrollCenter())}))},[o]),xe(()=>{const m=window.Blockly;if(!(!m||!n.current)){t.current&&(t.current.dispose(),t.current=null);try{const c=m.inject(n.current,{readOnly:!0,toolbox:null,trashcan:!1,zoom:{controls:!1,wheel:!1,startScale:1},move:{scrollbars:!1,drag:!1,wheel:!1},sounds:!1,renderer:"thrasos",theme:e==="dark"?St:"classic",media:"google-blockly/media/"});t.current=c;let p=r.trim();p.startsWith("${p}`);const g=m.utils.xml.textToDom(p);let a=10;const y=Array.from(g.querySelectorAll(":scope > block"));for(const b of y)b.setAttribute("x","10"),b.setAttribute("y",String(a)),a+=200;m.Xml.domToWorkspace(g,c);const l=c.getTopBlocks(!1);if(l.length>1){let b=10;for(const v of l){const H=v.getRelativeToSurfaceXY();v.moveBy(10-H.x,b-H.y),b+=v.getHeightWidth().height+20}}const S=c.getBlocksBoundingBox();if(S){const b=S.bottom-S.top+20,v=Math.max(60,Math.ceil(b));d.current=!0,s(v)}}catch{}return()=>{t.current&&(t.current.dispose(),t.current=null)}}},[r,e]),i.jsx($,{ref:n,sx:{width:"100%",height:o,minHeight:60,borderRadius:1,overflow:"hidden",border:"1px solid",borderColor:"divider"}})};function nn(r){const e=[],n=/```(\w*)\n?([\s\S]*?)```/g;let t=0,o;for(;(o=n.exec(r))!==null;){if(o.index>t){const s=r.substring(t,o.index).trim();s&&e.push({type:"text",content:s})}e.push({type:"code",content:o[2].trim(),language:o[1]||"javascript"}),t=o.index+o[0].length}if(tt&&e.push(r.substring(t,o.index)),o[2]?e.push(i.jsx("strong",{children:o[2]},s++)):o[3]?e.push(i.jsx("em",{children:o[3]},s++)):o[4]&&e.push(i.jsx("code",{className:"ai-chat-inline-code",style:{padding:"2px 6px",borderRadius:4,fontSize:"0.85em",fontFamily:"'Cascadia Code', 'Fira Code', 'Consolas', monospace"},children:o[4]},s++)),t=o.index+o[0].length;return tm.trim().replace(/^\||\|$/g,"").split("|").map(c=>c.trim()),s=o(r[0]),d=r.slice(2).map(o);return i.jsx($,{sx:{overflowX:"auto",my:1},children:i.jsxs("table",{style:{borderCollapse:"collapse",width:"100%",fontSize:"0.8rem",color:e.palette.text.primary},children:[i.jsx("thead",{children:i.jsx("tr",{children:s.map((m,c)=>i.jsx("th",{style:{border:`1px solid ${e.palette.divider}`,padding:"6px 10px",backgroundColor:t?e.palette.grey[800]:e.palette.grey[100],color:e.palette.text.primary,fontWeight:600,textAlign:"left"},children:Ee(m)},c))})}),i.jsx("tbody",{children:d.map((m,c)=>i.jsx("tr",{style:{backgroundColor:c%2===1?t?e.palette.grey[900]:e.palette.grey[50]:void 0},children:m.map((p,g)=>i.jsx("td",{style:{border:`1px solid ${e.palette.divider}`,padding:"6px 10px",color:e.palette.text.primary},children:Ee(p)},g))},c))})]})},n)}function on(r,e){const n=r.split(` -`),t=[];let o=0,s=0;for(;si.jsx("li",{children:Ee(g)},a))},o++));continue}if(/^\d+[.)]\s/.test(m)){const p=[];for(;si.jsx("li",{children:Ee(g)},a))},o++));continue}t.push(i.jsx("div",{children:Ee(m)},o++)),s++}return t}const an=({message:r,themeType:e,currentLanguage:n,onInsertCode:t,onShowDiff:o,onApplyCode:s})=>{const d=r.role==="user",m=ct(),c=d?e==="dark"?m.palette.primary.dark:m.palette.primary.main:e==="dark"?m.palette.secondary.dark:m.palette.secondary.main,p=m.palette.getContrastText(c),g=Ue(()=>nn(r.content),[r.content]),a=(b,v)=>!!(b==="xml"||b==="blockly"||n==="blockly"&&v&&/b.type==="code"?a(b.language,b.content)?i.jsxs($,{sx:{my:1},children:[i.jsx(tn,{xml:b.content,themeType:e}),i.jsxs($,{sx:{display:"flex",gap:.5,mt:.5},children:[s&&i.jsx(We,{size:"small",variant:"contained",color:"primary",startIcon:i.jsx(Ot,{sx:{fontSize:14}}),onClick:()=>s(b.content),sx:{textTransform:"none",fontSize:"0.75rem"},children:u.I18n.t("Apply blocks")}),t&&i.jsx(We,{size:"small",variant:"outlined",startIcon:i.jsx(et,{sx:{fontSize:14}}),onClick:()=>t(b.content),sx:{textTransform:"none",fontSize:"0.75rem"},children:u.I18n.t("Insert blocks")})]})]},v):i.jsx(en,{code:b.content,language:b.language||"javascript",themeType:e,onInsertCode:t,onShowDiff:o,sourceRange:r.sourceRange||null},v):i.jsx($,{sx:{wordBreak:"break-word",color:m.palette.text.primary},children:on(b.content,m)},v))})]})};function cn(r){const e=(r||"").toLowerCase();return e.includes("blockly")||e.includes("rules")?"blockly":e.includes("typescript")?"typescript":"javascript"}function Te(r,e){return`\`\`\`${e==="blockly"?"xml":e} -${r} -\`\`\``}function rt(r){const e=(r.code||"").trim(),n=cn(r.language),t=r.rangeLabel?` (${r.rangeLabel})`:"";switch(r.action){case"explain":return e?[`Please explain what this ioBroker ${n} code does${t}.`,"Focus on: which datapoints it reads/writes, which triggers fire it, and any side-effects.","",Te(e,n)].join(` -`):null;case"refactor":return e?[`Refactor this ioBroker ${n} code${t} to be cleaner and more idiomatic.`,"Preserve behavior exactly. Keep ioBroker APIs (on, setState, getState, schedule, sendTo, log).",`Return the full refactored block inside a \`\`\`${n==="blockly"?"xml":n}\`\`\` code block so it can be smart-applied.`,"",Te(e,n)].join(` -`):null;case"comment":return e?[`Add clear, concise inline comments to this ioBroker ${n} code${t}.`,"Only add comments where they add real value (non-obvious logic, tricky edge cases, business rules).","Do not over-comment trivial lines. Return the commented version in a code block.","",Te(e,n)].join(` -`):null;case"fix":{if(!e)return null;const o=(r.diagnostic||"").trim(),s=o?` -Reported problem: ${o}`:"";return[`This ioBroker ${n} code has an issue${t}. Please fix it and return the corrected code.${s}`,"Keep the fix minimal — do not rewrite unrelated parts.","",Te(e,n)].join(` -`)}case"tests":return e?[`Suggest how to test this ioBroker ${n} script manually inside the ioBroker admin UI${t}.`,"","ioBroker scripts run inside the adapter sandbox and CANNOT be unit-tested with Jest, Mocha, or any external test framework. Do NOT propose Jest/Mocha tests, do NOT propose extracting the code into a separate Node.js project, do NOT write `describe` / `test` blocks.","","Instead, propose a short list of manual test cases. For each case describe:",' • Setup — which ioBroker datapoints to prepare and to which values (via the objects tree "Values" tab)'," • Action — what to trigger: set a state with setState, wait for a schedule, change a sensor value, etc."," • Expected — what should happen afterwards: which states should change, what should appear in the adapter log (javascript.0), which side effects are visible","","Keep it concise: 3-6 cases covering the happy path, typical edge cases, and any guard conditions the script has.","",Te(e,n)].join(` -`):null;case"ask":{const o=(r.question||"").trim();return o?e?[`Regarding this ioBroker ${n} code${t}:`,"",Te(e,n),"",o].join(` -`):o:null}default:return null}}function ot(r){const e=(r||"").trimStart();if(!e.startsWith("/"))return null;const n=e.match(/^\/(\w+)(?:\s+([\s\S]*))?$/);if(!n)return null;const t=n[1].toLowerCase(),o=(n[2]||"").trim(),d={explain:"explain",erklaere:"explain",erklaeren:"explain",refactor:"refactor",refaktor:"refactor",refaktoriere:"refactor",comment:"comment",comments:"comment",kommentar:"comment",kommentiere:"comment",fix:"fix",fixme:"fix",tests:"tests",test:"tests",ask:"ask",frag:"ask",frage:"ask"}[t];return d?{action:d,rest:o}:null}const ln=Object.freeze(Object.defineProperty({__proto__:null,buildActionPrompt:rt,parseSlashCommand:ot},Symbol.toStringTag,{value:"Module"}));function dn(){return[{id:"@all",label:u.I18n.t("mention @all"),descriptionKey:"All scripts"},{id:"@devices",label:u.I18n.t("mention @devices"),descriptionKey:"Smart home devices"}]}function un({provider:r,isDark:e}){return $t[r]?i.jsx("img",{src:`./img/${r}.svg`,alt:r,style:{...Lt,...e?{filter:"invert(0.85)"}:{}},onError:t=>{t.target.style.display="none"}}):null}function mn(){try{const r=window.localStorage.getItem("Editor.aiChatHistory");return r?JSON.parse(r):[]}catch{return[]}}const pn=({onSend:r,disabled:e,themeType:n,hasSelection:t,selectionText:o,allScripts:s,model:d,availableModels:m,modelProviderMap:c,modelsLoading:p,onModelChange:g,mode:a,onModeChange:y,currentLanguage:l})=>{const[S,b]=te(""),[v,H]=te(!1),[E,I]=te(""),[x,w]=te(0),M=ne(null),re=ne(-1),Y=ne(mn()),_=ne(-1),G=ne(""),le=Ue(()=>{const C=dn().map(k=>({...k,description:u.I18n.t(k.descriptionKey)}));if(s)for(const k of s){const z=k.id.replace(/^script\.js\./,"").replace(/\./g,"/");C.push({id:`@${z}`,label:`@${z}`,description:`${k.name} [${k.enabled?"active":"inactive"}]`})}return C},[s]),K=Ue(()=>{if(!E)return le;const h=E.toLowerCase();return le.filter(C=>C.id.toLowerCase().includes(h)||C.description.toLowerCase().includes(h))},[le,E]);xe(()=>{w(0)},[E]);const de=A(()=>{const h=S.trim();if(!h||e)return;let C=h;const k=ot(h);if(k){const z=t&&o?o:"",se=rt({action:k.action,code:z,language:l||"javascript",question:k.action==="ask"?k.rest:void 0,diagnostic:k.action==="fix"&&k.rest||void 0});se&&(C=se)}else t&&o&&(C=`[Selected code in editor] -\`\`\` -${o} -\`\`\` - -${h}`);Y.current.push(h),_.current=-1,G.current="";try{const z=Y.current.slice(-50);window.localStorage.setItem("Editor.aiChatHistory",JSON.stringify(z))}catch{}r(C),b(""),H(!1),requestAnimationFrame(()=>{var z;return(z=M.current)==null?void 0:z.focus()})},[S,e,r,t,o,l]),T=A(h=>{const C=re.current,k=M.current;if(C<0){const ue=S?`${S}${h} `:`${h} `;b(ue),H(!1),I(""),setTimeout(()=>{k&&(k.focus(),k.setSelectionRange(ue.length,ue.length))},0);return}const z=S.substring(0,C),se=(k==null?void 0:k.selectionStart)??S.length,ke=S.substring(se),J=`${z}${h} ${ke}`;b(J),H(!1),I(""),re.current=-1,setTimeout(()=>{if(k){const ue=z.length+h.length+1;k.focus(),k.setSelectionRange(ue,ue)}},0)},[S]),U=A(()=>{re.current=-1,I(""),H(h=>!h)},[]),X=A(h=>{const C=h.target.value;b(C);const k=h.target.selectionStart??C.length,se=C.substring(0,k).match(/@([\w/äöüÄÖÜß]*)$/);se?(re.current=k-se[0].length,I(se[1]),H(!0)):(H(!1),I(""))},[]),Q=A(h=>{if(v&&K.length>0){if(h.key==="ArrowDown"){h.preventDefault(),w(C=>(C+1)%K.length);return}if(h.key==="ArrowUp"){h.preventDefault(),w(C=>(C-1+K.length)%K.length);return}if(h.key==="Enter"||h.key==="Tab"){h.preventDefault(),T(K[x].id);return}if(h.key==="Escape"){h.preventDefault(),H(!1);return}}if(h.key==="ArrowUp"&&!v&&Y.current.length>0){const C=M.current,k=!C||C.selectionStart===0,z=!S.includes(` -`);if(k&&z){h.preventDefault(),_.current===-1?(G.current=S,_.current=Y.current.length-1):_.current>0&&_.current--,b(Y.current[_.current]);return}}if(h.key==="ArrowDown"&&!v&&_.current>=0){const C=M.current,k=!C||C.selectionStart===S.length,z=!S.includes(` -`);if(k&&z){h.preventDefault(),_.current0&&i.jsx(dt,{elevation:4,sx:{position:"absolute",bottom:"100%",left:8,right:8,maxHeight:200,overflow:"auto",zIndex:10,mb:.5},children:i.jsx(ut,{dense:!0,disablePadding:!0,children:K.slice(0,15).map((h,C)=>i.jsx(mt,{selected:C===x,onClick:()=>T(h.id),sx:{py:.25,minHeight:32},children:i.jsx(pt,{primary:h.label,secondary:h.description,primaryTypographyProps:{fontSize:"0.8rem",fontWeight:500},secondaryTypographyProps:{fontSize:"0.7rem"}})},h.id))})}),a==="code"&&i.jsx(Fe,{label:`${u.I18n.t("mention @devices")} — ${u.I18n.t("Smart home devices")}`,size:"small",variant:"outlined",sx:{mx:1,mt:.5,maxWidth:"calc(100% - 16px)"}}),t&&o&&i.jsx(Fe,{icon:i.jsx(bt,{sx:{fontSize:14}}),label:u.I18n.t("Selected code as context"),size:"small",variant:"outlined",sx:{mx:1,mt:.5,maxWidth:"calc(100% - 16px)"}}),i.jsxs($,{sx:{mx:1,mt:.5,mb:.5,border:"1px solid",borderColor:"divider",borderRadius:1.5,overflow:"hidden","&:focus-within":{borderColor:"primary.main"}},children:[i.jsx(ft,{inputRef:M,fullWidth:!0,multiline:!0,maxRows:6,placeholder:u.I18n.t("Ask about your script..."),value:S,onChange:X,onKeyDown:Q,disabled:e,onBlur:()=>{setTimeout(()=>H(!1),200)},variant:"standard",slotProps:{input:{disableUnderline:!0}},sx:{px:1.5,pt:1,pb:.5,"& .MuiInputBase-root":{fontSize:"0.875rem"}}}),i.jsxs($,{sx:{display:"flex",alignItems:"center",gap:.75,px:1,pb:.5},children:[i.jsx(ve,{title:i.jsxs($,{sx:{fontSize:"0.8rem",lineHeight:1.5,maxWidth:360},children:[i.jsx($,{sx:{fontWeight:600,mb:.75},children:u.I18n.t("AI chat mode")}),i.jsxs($,{sx:{mb:.75},children:[i.jsxs("strong",{children:["💬 ",u.I18n.t("Chat")]})," —"," ",u.I18n.t("Plain conversation. Use for questions, explanations, syntax help. Does not read or modify your scripts.")]}),i.jsxs($,{sx:{mb:.75},children:[i.jsxs("strong",{children:["🤖 ",u.I18n.t("Agent")]})," —"," ",u.I18n.t('For larger models with tool support. The AI can read, create, and edit scripts, look up datapoints, and browse the object tree — useful for "create a script that...", "which scripts use this state?" or "analyze my light script".')]}),i.jsxs($,{children:[i.jsxs("strong",{children:["💻 ",u.I18n.t("Code")]})," —"," ",u.I18n.t('For smaller models without tool support. Two-step script generator (plan then code) — useful for "create a script that..." or "write a Blockly rule for...". Output goes into the editor for smart-apply.')]})]}),enterDelay:400,placement:"left",children:i.jsxs(He,{value:a,onChange:h=>y(h.target.value),size:"small",variant:"standard",disableUnderline:!0,sx:{fontSize:"0.7rem",color:"text.secondary",border:"1px solid",borderColor:"text.secondary",borderRadius:3,bgcolor:"action.hover",px:.75,"&:hover":{borderColor:"text.disabled",bgcolor:"action.hover"},"& .MuiSelect-select":{py:"2px",pr:"18px !important",display:"flex",alignItems:"center",gap:.5}},children:[i.jsx(ze,{value:"chat",sx:{fontSize:"0.75rem"},title:u.I18n.t("Plain conversation. Best for: general questions, syntax help, concept explanations."),children:"💬 Chat"}),i.jsx(ze,{value:"agent",sx:{fontSize:"0.75rem"},title:u.I18n.t("For larger models with tool support. Best for: creating, editing, or analyzing scripts; finding datapoint usages; inspecting the object tree."),children:"🤖 Agent"}),i.jsx(ze,{value:"code",sx:{fontSize:"0.75rem"},title:u.I18n.t("For smaller models without tool support. Best for: creating new JavaScript/TypeScript or Blockly scripts from a description."),children:"💻 Code"})]})}),i.jsx(He,{value:d,onChange:h=>g(h.target.value),size:"small",disabled:p||m.length===0,variant:"standard",disableUnderline:!0,sx:{fontSize:"0.7rem",color:"text.secondary",border:"1px solid",borderColor:"text.secondary",borderRadius:3,bgcolor:"action.hover",px:.75,"&:hover":{borderColor:"text.disabled",bgcolor:"action.hover"},"& .MuiSelect-select":{py:"2px",pr:"18px !important",display:"flex",alignItems:"center",gap:.5}},children:m.map(h=>i.jsxs(ze,{value:h,sx:{fontSize:"0.75rem",display:"flex",gap:.5},children:[i.jsx(un,{provider:c[h],isDark:n==="dark"}),h]},h))}),i.jsx(ve,{title:u.I18n.t("Mention scripts as context for the AI. Use @all for all scripts or @scriptName for a specific one."),enterDelay:500,children:i.jsx(we,{size:"small",onClick:U,sx:{p:"3px",color:v?"primary.main":"text.secondary",border:"1px solid",borderColor:v?"primary.main":"text.secondary",bgcolor:v?void 0:"action.hover",borderRadius:3,"&:hover":{borderColor:"text.disabled",bgcolor:"action.hover"}},children:i.jsx(Ct,{sx:{fontSize:16}})})}),i.jsx($,{sx:{flex:1}}),i.jsxs(Oe,{variant:"caption",sx:{color:"text.disabled",fontSize:"0.65rem",mr:.5,whiteSpace:"nowrap"},children:["Enter ",u.I18n.t("to send")]}),i.jsx(ve,{title:`${u.I18n.t("Send")} (Enter)`,children:i.jsx("span",{children:i.jsx(we,{color:"primary",onClick:de,disabled:e||!S.trim(),size:"small",sx:{p:.25},children:i.jsx(Et,{sx:{fontSize:18}})})})})]})]})]})},Tn=({socket:r,runningInstances:e,themeType:n,currentCode:t,currentLanguage:o,selectedCode:s,allScripts:d,editorApi:m,aiActionRequest:c,onAiActionConsumed:p,onRegisterInlineAsk:g,onInsertCode:a,onShowDiff:y,onApplyCode:l,currentScriptId:S,onClose:b})=>{var ke;const v=ne(null),H=Ue(()=>({socket:r,runningInstances:e,currentCode:t,currentLanguage:o,allScripts:d,editorApi:m,currentScriptId:S}),[r,e,t,o,d,m,S]),{messages:E,isLoading:I,error:x,model:w,availableModels:M,modelProviderMap:re,modelsLoading:Y,modelsError:_,lastContextInfo:G,mode:le,setMode:K,setModel:de,sendMessage:T,triggerAiAction:U,askInline:X,clearChat:Q,retryLoadModels:h}=Zt(H);xe(()=>(g==null||g(X),()=>g==null?void 0:g(null)),[X,g]);const C=ne(null);xe(()=>{!c||C.current===c||(C.current=c,U(c),p==null||p())},[c,U,p]),xe(()=>{var J;(J=v.current)==null||J.scrollIntoView({behavior:"smooth"})},[E]);const k=A(J=>{a==null||a(J)},[a]),z=A((J,ue)=>{y==null||y(J,ue)},[y]),se=A(J=>{l==null||l(J)},[l]);return i.jsxs($,{sx:{display:"flex",flexDirection:"column",height:"100%",bgcolor:"background.default","& .ai-chat-inline-code":{backgroundColor:"action.selected",color:"text.primary",border:"1px solid",borderColor:"divider"}},children:[i.jsxs($,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,borderBottom:"1px solid",borderColor:"divider",bgcolor:n==="dark"?"grey.900":"grey.100",flexShrink:0},children:[i.jsx(Oe,{variant:"subtitle2",sx:{fontWeight:600,flex:1,color:"text.primary"},children:u.I18n.t("AI Chat")}),Y&&i.jsx(Ve,{size:16}),i.jsx(ve,{title:u.I18n.t("New chat"),children:i.jsx(we,{size:"small",onClick:Q,children:i.jsx(_t,{sx:{fontSize:18}})})}),i.jsx(ve,{title:u.I18n.t("Close"),children:i.jsx(we,{size:"small",onClick:b,children:i.jsx(jt,{sx:{fontSize:18}})})})]}),(x||_)&&i.jsx(ht,{severity:"error",sx:{m:1,py:0},action:_?i.jsx(we,{size:"small",onClick:h,children:i.jsx(xt,{sx:{fontSize:16}})}):void 0,children:x||_}),G&&i.jsx(Oe,{variant:"caption",sx:{px:1.5,py:.25,color:"text.secondary",fontSize:"0.7rem",bgcolor:"action.hover",borderBottom:"1px solid",borderColor:"divider",flexShrink:0},children:G}),i.jsxs($,{sx:{flex:1,overflow:"auto",py:1},children:[E.length===0&&!I&&i.jsxs($,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",color:"text.secondary",px:3,textAlign:"center"},children:[i.jsx(Oe,{variant:"body2",sx:{mb:1},children:u.I18n.t("Ask questions about your script, request changes, or generate new code.")}),i.jsxs(Oe,{variant:"caption",color:"text.disabled",children:["Enter ",u.I18n.t("to send"),", Shift+Enter ",u.I18n.t("for new line")]})]}),E.filter(J=>J.role!=="system").map(J=>i.jsx(an,{message:J,themeType:n,currentLanguage:o,onInsertCode:k,onShowDiff:z,onApplyCode:se},J.id)),I&&((ke=E[E.length-1])==null?void 0:ke.content)===""&&i.jsxs($,{sx:{display:"flex",alignItems:"center",gap:1,px:2,py:1},children:[i.jsx(Ve,{size:16}),i.jsx(Oe,{variant:"caption",color:"text.secondary",children:u.I18n.t("Thinking...")})]}),i.jsx("div",{ref:v})]}),i.jsx(pn,{onSend:T,disabled:I||M.length===0,themeType:n,hasSelection:!!s,selectionText:s,allScripts:d,model:w,availableModels:M,modelProviderMap:re,modelsLoading:Y,onModelChange:de,mode:le,onModeChange:K,currentLanguage:o})]})};export{Tn as default}; diff --git a/admin/assets/AiChatPanel-CZ2o6xnT.js b/admin/assets/AiChatPanel-CZ2o6xnT.js new file mode 100644 index 000000000..25ac9cbe4 --- /dev/null +++ b/admin/assets/AiChatPanel-CZ2o6xnT.js @@ -0,0 +1,317 @@ +import{c as Se,j as o}from"./createSvgIcon-DYs_tNrE.js";import{k as J,j as te,b as ne,c as xe,l as Ae}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{z as L,P as ve,o as we,a0 as ct,a1 as lt,i as We,J as dt,r as ut,s as pt,u as mt,a2 as Fe,c as ft,f as He,g as ze,a3 as Oe,a4 as Ve,a5 as ht}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as u}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{_ as Ze}from"./preload-helper-BDBacUwf.js";import{C as gt,b as yt,I as bt,R as xt}from"./index-45IwpC7_.js";import{i as vt,k as qe,l as wt,n as St}from"./index-Blu2oA9H.js";import{g as kt,c as jt}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const et=Se(o.jsx("path",{d:"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8"}),"AddCircleOutline"),_t=Se(o.jsx("path",{d:"M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4zM17 11h-4v4h-2v-4H7V9h4V5h2v4h4z"}),"AddComment"),Tt=Se(o.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10h5v-2h-5c-4.34 0-8-3.66-8-8s3.66-8 8-8 8 3.66 8 8v1.43c0 .79-.71 1.57-1.5 1.57s-1.5-.78-1.5-1.57V12c0-2.76-2.24-5-5-5s-5 2.24-5 5 2.24 5 5 5c1.38 0 2.64-.56 3.54-1.47.65.89 1.77 1.47 2.96 1.47 1.97 0 3.5-1.6 3.5-3.57V12c0-5.52-4.48-10-10-10m0 13c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3"}),"AlternateEmail"),Ct=Se(o.jsx("path",{d:"M9.01 14H2v2h7.01v3L13 15l-3.99-4zm5.98-1v-3H22V8h-7.01V5L11 9z"}),"CompareArrows"),It=Se(o.jsx("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"Person"),Ot=Se(o.jsx("path",{d:"M3 10h11v2H3zm0-4h11v2H3zm0 8h7v2H3zm17.59-2.07-4.25 4.24-2.12-2.12-1.41 1.41L16.34 19 22 13.34z"}),"PlaylistAddCheck"),Et=Se(o.jsx("path",{d:"M2.01 21 23 12 2.01 3 2 10l15 2-15 2z"}),"Send"),Nt=Se(o.jsx("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3M7.5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S9.83 13 9 13s-1.5-.67-1.5-1.5M16 17H8v-2h8zm-1-4c-.83 0-1.5-.67-1.5-1.5S14.17 10 15 10s1.5.67 1.5 1.5S15.83 13 15 13"}),"SmartToy"),Rt=Ze(()=>import("./docs-compact-CKNGiYh2.js"),[],import.meta.url),$t={openai:"img/openai.svg",anthropic:"img/anthropic.svg",gemini:"img/gemini.svg",deepseek:"img/deepseek.svg",custom:"img/custom.svg"},Lt={width:16,height:16,flexShrink:0,opacity:.7},Mt={ru:"Russian",en:"English",de:"German",es:"Spanish",fr:"French",it:"Italian",pl:"Polish",nl:"Dutch",pt:"Portuguese",uk:"Ukrainian","zh-cn":"Chinese"};let $e=null,Je=null,Le=null,Me=null;function Dt(){$e=null,Je=null,Le=null,Me=null}async function De(r,e){if($e)return $e;const n=Object.keys(e)[0];if(!n)return null;const t=await r.sendTo(n,"getAvailableAiProviders",{}),i=((t==null?void 0:t.providers)||[]).map(a=>a.provider),s=((t==null?void 0:t.providers)||[]).find(a=>a.provider==="custom");return i.length?($e={providers:i,gptBaseUrl:s==null?void 0:s.baseUrl},$e):null}const Bt=["embedding","text-embedding","textembedding","embeddinggemma","embed-","-embed","bge-","mxbai-embed","nomic-embed","arctic-embed","snowflake-arctic-embed","all-minilm","multilingual-e5","jina-embed","voyage-","gecko","paraphrase-multilingual","dall-e","gpt-image","image-edit","-image-preview","-image-latest","flash-image","nano-banana","stable-diffusion","sdxl","midjourney","flux-","imagen","sora","veo-","cogvideo","runway-","lumiere","lyria","whisper","tts-","-tts","speech-","audio-preview","mini-tts","mini-transcribe","-transcribe","native-audio","flash-live","gpt-audio","realtime","bark-","xtts","voicebox","moderation","omni-moderation","llama-guard","shieldgemma","prompt-guard","-guardian","safeguard","rerank","reranker","babbage-","davinci-","curie-","text-ada-","text-davinci","text-curie","text-babbage","instructgpt","code-davinci","code-cushman","-turbo-instruct","-search-preview","-search-api","code-search","text-search","similarity-","computer-use-preview","deep-research","robotics","aqa","reader-lm","-nsql","minicheck"];function zt(r){const e=r.toLowerCase();return!(Bt.some(n=>e.includes(n))||e.startsWith("claude-1")||e.startsWith("claude-instant"))}async function Pt(r,e){const n=await De(r,e);if(!n)return{models:[],providerMap:{},errors:["No API keys configured"]};const t=Object.keys(e)[0];if(!t)return{models:[],providerMap:{},errors:[u.I18n.t("No running javascript instance found")]};const i=[],s={},a=[],p=(c,y)=>{for(const d of c)zt(d)&&(s[d]||(i.push(d),s[d]=y))},l=[],m=(c,y)=>{l.push(r.sendTo(t,"testApiConnection",{provider:c==="custom"?"openai":c}).then(d=>{d.models?p(d.models,c):d.error&&a.push(`${y||c}: ${d.error}`)}).catch(d=>{a.push(`${y||c}: ${String(d)}`)}))},g={openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",deepseek:"DeepSeek",custom:"Custom"};for(const c of n.providers)m(c,g[c]);return await Promise.all(l),i.sort(),{models:i,providerMap:s,errors:a}}async function Ne(r,e,n){var i;return await r.sendTo(e,"chatCompletion",{timeout:n.timeout||6e5,model:n.model,provider:n.provider,messages:n.messages,...n.baseUrl?{baseUrl:n.baseUrl}:{},...(i=n.tools)!=null&&i.length?{tools:n.tools}:{}})}async function tt(r){if(Me)return Me;const e=await r.getObjectViewSystem("state","","香"),n=await r.getObjectViewSystem("channel","","香"),t=await r.getObjectViewSystem("device","","香"),i=await r.getObjectViewSystem("folder","","香"),s=await r.getObjectViewSystem("enum","","香");return Me=Object.assign(e,n,t,i,s),Me}async function nt(r){return tt(r)}function Ce(r,e){return r&&typeof r=="object"?r[e]||r.en:r||""}async function Ge(r){var S,b,v,H;if(Je)return Je;const e=u.I18n.getLanguage(),n=await tt(r),t=Object.keys(n).sort(),i=new gt,s=[],a=["UNREACH_STICKY"],p=[yt.Types.info],l=[],m=[],g=[],c=[];t.forEach(E=>{var C,x,w;((C=n[E])==null?void 0:C.type)==="enum"?l.push(E):(w=(x=n[E])==null?void 0:x.common)!=null&&w.smartName&&c.push(E)}),l.forEach(E=>{E.startsWith("enum.rooms.")?m.push(E):E.startsWith("enum.functions.")&&g.push(E);const C=n[E].common.members;C!=null&&C.length&&C.forEach(x=>{n[x]&&!c.includes(x)&&c.push(x)})});const y={id:"",objects:n,_keysOptional:t,_usedIdsOptional:s,ignoreIndicators:a,excludedTypes:p},d=[];c.forEach(E=>{y.id=E;const C=i.detect(y);C&&C.forEach(x=>{var de;const w=(de=x.states.find(I=>I.id))==null?void 0:de.id;if(!w||d.find(I=>I.id===w))return;const M=n[w],re={id:w,name:Ce(M.common.name,e),type:M.type,deviceType:x.type,states:x.states.filter(I=>I.id).map(I=>({id:I.id,name:I.name,role:I.defaultRole,type:n[I.id].common.type,unit:n[I.id].common.unit,read:n[I.id].common.read??!0,write:n[I.id].common.write??!0}))},G=w.split(".");let _,Y;(M.type==="channel"||M.type==="state")&&(G.pop(),_=G.join("."),n[_]&&(n[_].type==="channel"||n[_].type==="folder")?(G.pop(),Y=G.join("."),(!n[Y]||n[Y].type!=="device"&&n[_].type!=="folder")&&(Y=void 0)):_=void 0);const le=m.find(I=>{var A,X,Q;return(A=n[I].common.members)!=null&&A.includes(w)||_&&((X=n[I].common.members)!=null&&X.includes(_))?!0:Y&&((Q=n[I].common.members)==null?void 0:Q.includes(Y))});le&&(re.room=Ce(n[le].common.name,e));const K=g.find(I=>{var A,X,Q;return(A=n[I].common.members)!=null&&A.includes(w)||_&&((X=n[I].common.members)!=null&&X.includes(_))?!0:Y&&((Q=n[I].common.members)==null?void 0:Q.includes(Y))});K&&(re.function=Ce(n[K].common.name,e)),d.push(re)})});for(let E=0;E { + // obj.state.val = the new value (boolean or number) + // obj.id = the state ID that changed + setState('zigbee.0.lamp.state', obj.state.val); + log('Changed to ' + obj.state.val); +}); + +// CORRECT: on() with filter +on({id: /zigbee\\.0\\..*\\.state$/, change: 'ne'}, (obj) => { + if (obj.state.val === true) { + setState('zigbee.0.other.state', true); + } +}); + +// Other correct examples: +setState('id', true); +setState('id', 50); +const val = getState('id').val; +schedule('0 7 * * *', () => { log('runs daily at 07:00'); }); +schedule('0 22 * * *', () => { setState('id', false); }); + +// CORRECT Telegram: always use sendTo, NEVER setState on telegram +sendTo('telegram.0', 'send', {text: 'Alert: ' + someValue}); + +// CORRECT httpGet: res.data is a STRING, parse JSON with JSON.parse +httpGet('https://api.example.com/data', (err, res) => { + const data = JSON.parse(res.data); + log('Temperature: ' + data.main.temp); +}); + +$('state[state.id=*.state](rooms=Room)').each((id) => { setState(id, false); }); +createState('name', 0, {type: 'number', name: 'Name'}); +// CORRECT: one-time delayed action (turn off after 5 minutes = 300000ms) +setStateDelayed('zigbee.0.lamp.state', false, false, 5 * 60 * 1000); +log(formatDate(new Date(), 'DD.MM.YYYY hh:mm')); + +WRONG: on('id', (id, state) => {}) CORRECT: on('id', (obj) => {}) +WRONG: set('id', true) CORRECT: setState('id', true) +WRONG: adapter.setState('id', true) CORRECT: setState('id', true) +WRONG: obj.val or newState.val CORRECT: obj.state.val +WRONG: on('change', {id: 'x'}, cb) CORRECT: on({id: 'x', change: 'ne'}, cb) +WRONG: setState('telegram.0', text) CORRECT: sendTo('telegram.0', 'send', {text: text}) +WRONG: res.body.main.temp CORRECT: JSON.parse(res.data).main.temp +WRONG: function myFunc() {} CORRECT: write code directly, no function definitions +WRONG: setTimeout(fn, ms) CORRECT: setStateDelayed(id, val, false, ms) for one-time delay +WRONG: schedule('*/5 * * * *', fn) for one-time delay. schedule() is ONLY for recurring tasks +Values are boolean (true/false) or numbers, NEVER strings like 'ON'/'OFF'. +NEVER use: function keyword, require, import, setInterval, setTimeout, console.log, debug(). + +All available functions (use syntax from examples above): +on(pattern, (obj)=>{}) | once(pattern, (obj)=>{}) | unsubscribe(handler) +setState(id, val) | getState(id).val | setStateChanged(id, val) | setStateDelayed(id, val, ack, ms) | clearStateDelayed(id) +existsState(id) | existsObject(id) | getObject(id) | setObject(id, obj) | extendObject(id, obj) | deleteObject(id) +createState(name, initVal, {type,name,role}) | deleteState(name) | createAlias(name, alias) +schedule(cron, ()=>{}) | clearSchedule(obj) | scheduleById(id, (obj)=>{}) | getSchedules() +sendTo(adapter, cmd, msg) | sendToHost(host, cmd, msg) +$('selector').each((id)=>{}) | $('selector').setState(val) | $('selector').getState() +log(text) | formatDate(date, 'DD.MM.YYYY hh:mm') | formatTimeDiff(ms) | formatValue(val, decimals) +getDateObject(str) | getAstroDate(pattern) | isAstroDay() | compareTime(start, end, op) +exec(cmd, (err,stdout,stderr)=>{}) | httpGet(url, (err,res)=>{}) | httpPost(url, data, (err,res)=>{}) +readFile(adapter, name, (err,data)=>{}) | writeFile(adapter, name, data, cb) | delFile(adapter, name, cb) +onFile(id, name, withFile, cb) | offFile(id, name) | onStop(cb, timeout) +getHistory(inst, {id,start,end,aggregate,count}, cb) | getEnums(name) | getIdByName(name) +wait(ms) | toInt(val) | toFloat(val) | toBoolean(val) +messageTo(target, data) | onMessage(name, cb) | onLog(severity, cb) +runScript(name) | startScript(name) | stopScript(name) | isScriptActive(name) + +Write comments in ${r}. Put code in a \`\`\`javascript code block.`}function Xe(r){return`You generate ioBroker Blockly XML blocks. Return Blockly XML in a \`\`\`xml code block. +Use EXACT state IDs from the plan. Write text/comments in ${r}. + +IMPORTANT RULES: +- Return ONLY the inner blocks (no wrapper needed) +- Use the exact block types shown below +- State IDs must be full paths like "zigbee2mqtt.0.0x1234.state" +- Values are boolean (true/false) or numbers, NEVER strings like "ON"/"OFF" +- For Telegram use sendto_custom block, NEVER setState on telegram + +## Block Templates + +### Trigger: on_ext (react to state changes) + + + ne + + + STATE_ID_HERE + + + + + + +### Schedule: schedule (cron-based) + + 0 7 * * * + + + + + +### Set State: control + + + STATE_ID_HERE + FALSE + + TRUE + + + +### Get State Value: get_value + + val + STATE_ID_HERE + + +### Log: debug + + log + + Message here + + + +### SendTo (Telegram): sendto_custom + + + telegram.0 + send + + + Message text + + + text + + + +### Timeout: timeouts_settimeout + + timeout1 + 5000 + ms + + + + + +### If/Else: controls_if + + + + + EQ + valSTATE_ID + TRUE + + + + + + +### Number value +0 + +### Text value +hello + +### Boolean value +TRUE + +### Comparison: logic_compare + + EQ + + + + + +## Common Patterns + +### Turn on light when sensor triggers: + + + ne + + + zigbee2mqtt.0.0xSENSOR.occupancy + + + + + + EQ + valzigbee2mqtt.0.0xSENSOR.occupancy + TRUE + + + + + + zigbee2mqtt.0.0xLAMP.state + FALSE + TRUE + + + + + + +Write comments in ${r}. Put blocks in a \`\`\`xml code block.`}function Pe(r){let e=r;return e=e.replace(/[\s\S]*?<\/think>/gi,""),e=e.replace(/<\|endoftext\|>/g,""),e=e.replace(/<\|im_start\|>[\s\S]*?<\|im_end\|>/g,""),e=e.replace(/<\|im_start\|>[\s\S]*/g,""),e.trim()}const Ut=[{type:"function",function:{name:"search_datapoints",description:'Search ALL ioBroker objects by ID, name, or role — includes states, channels, devices, folders, enums (rooms/functions), adapters, instances, scripts, meta, etc. Returns matching IDs with object type, name, role, unit, and a hasChildren hint for containers. IMPORTANT: Aliases and physical device groupings are usually CHANNELS containing multiple state children (e.g. a motion sensor is often a channel alias.0.Floor.Room.MotionSensor with states ACTUAL, BATTERY, STATE under it). If a channel/device/folder matches your query, call get_object_info on its ID to list its state children. Role-based queries work too: "sensor.motion", "switch.light", "value.temperature".',parameters:{type:"object",properties:{query:{type:"string",description:'Search pattern (case-insensitive substring) - matches against object ID, name, and role. Examples: "bewegungsmelder", "temperature", "sensor.motion", "alias.0", "küche", "zigbee2mqtt.0.lamp".'},max_results:{type:"number",description:"Maximum number of results to return (default: 20)."},object_type:{type:"string",description:'Optional filter by object type: "state", "channel", "device", "folder", "enum", "adapter", "instance", "script", "meta", etc. Omit to search every type.'}},required:["query"]}}},{type:"function",function:{name:"get_state_value",description:"Get the current value of an ioBroker state/datapoint. Returns value, timestamp, and acknowledgment flag.",parameters:{type:"object",properties:{id:{type:"string",description:'The full state ID, e.g. "zigbee2mqtt.0.sensor.temperature"'}},required:["id"]}}},{type:"function",function:{name:"get_object_info",description:"Get detailed info about ANY ioBroker object + its full parent hierarchy + direct children. Works for every object type: state, channel, device, folder, adapter, instance, enum, meta, script. Returns: the object itself, parent chain (all non-state ancestors up to the adapter), and — if the object is a container (channel/device/folder/enum/instance/adapter/meta) — the list of direct children with their types, names, roles and units. Use this to navigate the object tree: start from a channel found by search_datapoints, read its children to see the actual state IDs underneath.",parameters:{type:"object",properties:{id:{type:"string",description:'The full object ID, e.g. "zigbee2mqtt.0.0x1234.state", "alias.0.Room.MotionSensor", or "enum.rooms.kitchen".'}},required:["id"]}}},{type:"function",function:{name:"search_scripts",description:"Search through all ioBroker JavaScript/Blockly/Rules scripts. Can search by script name/path OR by content (e.g. find all scripts that use a specific datapoint ID). Returns matching script names, paths, and matching lines.",parameters:{type:"object",properties:{query:{type:"string",description:'Search term - matches against script name, path, AND source code content. Examples: "carport", "zigbee2mqtt.0.lamp.state", "telegram"'},max_results:{type:"number",description:"Maximum number of scripts to return (default: 10)"}},required:["query"]}}},{type:"function",function:{name:"read_script",description:"Read the full source code of a specific ioBroker script by its ID or path. Use search_scripts first to find the script ID, then read_script to see its complete code.",parameters:{type:"object",properties:{id:{type:"string",description:'The script ID (e.g. "script.js.common.Licht.Carport") or path (e.g. "common/Licht/Carport")'}},required:["id"]}}},{type:"function",function:{name:"list_scripts",description:"List ALL available ioBroker scripts with their names, paths, types (JavaScript/Blockly/TypeScript), and enabled status. Use this to get an overview of all scripts before searching or reading specific ones.",parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"run_script",description:"Execute a JavaScript or TypeScript snippet in the live ioBroker javascript engine and get back everything it logged. The code runs with the full script API (log, console.*, setState, getState, on, schedule, $, exec, httpGet, …) in VERBOSE mode, so internal operations (setState/getState/subscribe/…) are logged too — ideal for diagnosing behaviour or inspecting values. The snippet runs for a short window and is then automatically STOPPED and fully cleaned up (timers, subscriptions, schedules removed); it does NOT create a persistent script. Use `log(...)` or `console.log(...)` in the code to surface the values you want to inspect. WARNING: side effects are real (e.g. setState changes actual devices) — prefer read-only diagnostics unless the user explicitly asked to change something.",parameters:{type:"object",properties:{source:{type:"string",description:"The JavaScript (or TypeScript) source to execute. Log the values you want to inspect via log(...) / console.log(...). Top-level await is supported."},engineType:{type:"string",description:'Optional. "TypeScript/ts" to run the code as TypeScript. Defaults to JavaScript.'},timeout:{type:"number",description:"Optional. Milliseconds to keep the script alive to collect asynchronous logs before it is stopped (default 5000, max 60000). Increase when waiting for timers, subscriptions or HTTP responses."},logLevel:{type:"string",description:"Optional minimum severity to return: silly, debug, info, warn, error. Default silly (everything)."}},required:["source"]}}},{type:"function",function:{name:"get_editor_selection",description:'Read what the user has currently selected in the script editor. Returns the selected text and its line/column range, or a message if nothing is selected. Use this when the user refers to "this", "das hier", "the selection", or asks about a specific piece of code they highlighted.',parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"get_editor_content",description:"Read the full current content of the script editor (may differ from the initial script version if the user has made edits). Use this when you need the live editor state rather than the saved script.",parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"get_cursor_position",description:"Read the current cursor position (line and column, 1-based) in the script editor.",parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"highlight_text_in_editor",description:"Search for a literal text in the script editor and select + scroll to it. Returns how many occurrences were found. Use this to draw the user's attention to a specific snippet you are discussing.",parameters:{type:"object",properties:{text:{type:"string",description:"Exact substring to search for (case-sensitive)."}},required:["text"]}}},{type:"function",function:{name:"highlight_line_range",description:"Select and scroll to a range of lines in the editor. Both line numbers are 1-based and inclusive. Use this to show the user which block of code you are referring to.",parameters:{type:"object",properties:{start_line:{type:"number",description:"First line (1-based, inclusive)."},end_line:{type:"number",description:"Last line (1-based, inclusive)."}},required:["start_line","end_line"]}}},{type:"function",function:{name:"go_to_line",description:"Move the cursor to a specific line (and optional column) and scroll that line into view. Use this to navigate the user to a relevant spot.",parameters:{type:"object",properties:{line:{type:"number",description:"1-based line number."},column:{type:"number",description:"1-based column (optional, default 1)."}},required:["line"]}}},{type:"function",function:{name:"insert_text_at_cursor",description:"Insert text at the current cursor position in the editor (or replace the current selection if one exists). Use sparingly — prefer returning code in a fenced markdown block so the user can review and smart-apply it. Only use direct insertion when the user explicitly asked you to write something into the editor.",parameters:{type:"object",properties:{text:{type:"string",description:"Text to insert."}},required:["text"]}}},{type:"function",function:{name:"replace_selection",description:"Replace the currently selected text in the editor with new text. Fails if nothing is selected. Use this to refactor or rewrite a specific highlighted snippet.",parameters:{type:"object",properties:{text:{type:"string",description:"Replacement text."}},required:["text"]}}},{type:"function",function:{name:"get_diagnostics",description:"Read all active Monaco diagnostics (errors, warnings, info, hints) from the current editor model — this is what shows up as red/yellow squiggles. Use this to find syntax errors, unused variables, missing types, or other editor-reported issues the user might be asking about.",parameters:{type:"object",properties:{}}}},{type:"function",function:{name:"get_document_symbols",description:"Get the document outline of the current script: all top-level functions, classes, constants, and variables with their line numbers. Use this to understand the structure of a long script or to find where a specific function is defined.",parameters:{type:"object",properties:{}}}}];function Ue(r){return r&&typeof r=="object"?r.en||r.de||"":r||""}function Wt(r,e,n){const t=(n||"").toLowerCase();if(!t)return!1;if(r.toLowerCase().includes(t))return!0;const i=e==null?void 0:e.common;if(!i)return!1;const s=Ue(i.name).toLowerCase();if(s&&s.includes(t))return!0;const a=(i.role||"").toLowerCase();return!!(a&&a.includes(t))}async function Ft(r,e,n=20,t){const i=await nt(r),s=t==null?void 0:t.toLowerCase(),a=[],p=Object.keys(i),l=new Set;for(const m of p){const g=m.lastIndexOf(".");g>0&&l.add(m.substring(0,g))}for(const m of p){const g=i[m],c=g==null?void 0:g.type;if(!c||s&&c!==s||!Wt(m,g,e))continue;const y=g.common,d={id:m,type:c,name:Ue(y==null?void 0:y.name)};if(y!=null&&y.role&&(d.role=y.role),c==="state"?(d.stateType=(y==null?void 0:y.type)||"",y!=null&&y.unit&&(d.unit=y.unit)):l.has(m)&&(d.hasChildren=!0),a.push(d),a.length>=n)break}return a.length===0?JSON.stringify({message:`No objects found matching "${e}". Hint: try a role like "sensor.motion" or a partial path.`}):JSON.stringify(a)}async function Ht(r,e){try{const n=await r.getState(e);return JSON.stringify(n?{val:n.val,ts:n.ts?new Date(n.ts).toISOString():null,ack:n.ack,from:n.from}:{error:`State '${e}' not found`})}catch{return JSON.stringify({error:`Failed to read state '${e}'`})}}const Vt=new Set(["channel","device","folder","adapter","instance","enum","meta"]),Ke=50;async function qt(r,e){var n;try{const t=await r.getObject(e);if(!t)return JSON.stringify({error:`Object '${e}' not found`});const i={id:t._id,type:t.type,common:t.common},s=e.split("."),a=[];for(let p=s.length-1;p>=2;p--){const l=s.slice(0,p).join(".");try{const m=await r.getObject(l);m&&m.type!=="state"&&a.push({id:m._id,type:m.type,name:Ue((n=m.common)==null?void 0:n.name),common:m.common})}catch{}}if(a.length>0&&(i.parents=a),Vt.has(t.type)){const p=await nt(r),l=[],m=`${e}.`;let g=!1;for(const c of Object.keys(p))if(c.startsWith(m)&&!c.substring(m.length).includes(".")){const y=p[c],d=y==null?void 0:y.common,S={id:c,name:Ue(d==null?void 0:d.name),type:(y==null?void 0:y.type)||""};if(d!=null&&d.role&&(S.role=d.role),(y==null?void 0:y.type)==="state"&&(d!=null&&d.unit)&&(S.unit=d.unit),l.push(S),l.length>=Ke){g=!0;break}}l.length>0&&(i.children=l,g&&(i.childrenTruncated=!0,i.childrenHint=`Only the first ${Ke} children are shown. Use search_datapoints with a more specific query or the object_type filter to narrow down.`))}return JSON.stringify(i)}catch{return JSON.stringify({error:`Failed to read object '${e}'`})}}function st(r){return vt(r)||r}function Gt(r,e,n=10){const t=e.toLowerCase(),i=[];for(const s of r){const a=s.id.toLowerCase(),p=s.name.toLowerCase(),l=s.id.replace(/^script\.js\./,"").replace(/\./g,"/"),m=s.engineType==="Blockly"||s.engineType==="Rules",g=a.includes(t)||p.includes(t),c=m?st(s.source):s.source,y=c.toLowerCase().includes(t);if(g||y){const d={id:s.id,path:l,name:s.name,type:m?"Blockly":s.engineType.includes("TypeScript")?"TypeScript":"JavaScript",enabled:s.enabled};if(y){const S=c.split(` +`),b=[];for(let v=0;v=5));v++);b.length>0&&(d.matchingLines=b)}if(i.push(d),i.length>=n)break}}return i.length===0?JSON.stringify({message:`No scripts found matching "${e}"`}):JSON.stringify(i)}function Yt(r,e){const n=e.replace(/\//g,".").toLowerCase(),t=r.find(p=>{const l=p.id.toLowerCase();return l===n||l===`script.js.${n}`||l.endsWith(`.${n}`)});if(!t)return JSON.stringify({error:`Script '${e}' not found. Use search_scripts to find available scripts.`});const i=t.engineType==="Blockly"||t.engineType==="Rules",s=i?st(t.source):t.source,a=t.id.replace(/^script\.js\./,"").replace(/\./g,"/");return JSON.stringify({id:t.id,path:a,name:t.name,type:i?"Blockly":t.engineType.includes("TypeScript")?"TypeScript":"JavaScript",enabled:t.enabled,source:s})}function Xt(r){const e=r.map(n=>({id:n.id,path:n.id.replace(/^script\.js\./,"").replace(/\./g,"/"),name:n.name,type:n.engineType==="Blockly"||n.engineType==="Rules"?"Blockly":n.engineType.includes("TypeScript")?"TypeScript":"JavaScript",enabled:n.enabled}));return JSON.stringify(e)}function he(){return JSON.stringify({error:"Editor is not available. This tool requires the script editor to be open."})}async function Kt(r,e,n){var i;if(!e)return JSON.stringify({error:"No running javascript instance found to execute the script."});const t=n.source;if(!t||typeof t!="string")return JSON.stringify({error:"No source code provided."});try{const s=await r.sendTo(e,"execute",{source:t,engineType:n.engineType,timeout:n.timeout,logLevel:n.logLevel});return!s||s.ok===!1?JSON.stringify({error:(s==null?void 0:s.error)||"Execution failed",logs:(s==null?void 0:s.logs)||[]}):JSON.stringify({engineType:s.engineType,runtime:s.runtime,truncated:s.truncated||!1,logCount:((i=s.logs)==null?void 0:i.length)||0,logs:s.logs||[],output:s.output||""})}catch(s){return JSON.stringify({error:`Failed to execute script: ${s instanceof Error?s.message:String(s)}`})}}async function Qt(r,e,n,t,i){let s;try{s=JSON.parse(e.function.arguments)}catch{return JSON.stringify({error:`Invalid arguments: ${e.function.arguments}`})}switch(e.function.name){case"search_datapoints":return Ft(r,s.query,s.max_results||20,s.object_type);case"get_state_value":return Ht(r,s.id);case"get_object_info":return qt(r,s.id);case"search_scripts":return Gt(n||[],s.query,s.max_results||10);case"read_script":return Yt(n||[],s.id);case"list_scripts":return Xt(n||[]);case"run_script":return Kt(r,i,s);case"get_editor_selection":{if(!(t!=null&&t.getSelection))return he();const a=t.getSelection();return JSON.stringify(a||{message:"No text is currently selected in the editor."})}case"get_editor_content":return t!=null&&t.getContent?JSON.stringify({content:t.getContent()}):he();case"get_cursor_position":{if(!(t!=null&&t.getCursorPosition))return he();const a=t.getCursorPosition();return JSON.stringify(a||{message:"Editor has no cursor position (not focused)."})}case"highlight_text_in_editor":{if(!(t!=null&&t.highlightText))return he();const a=t.highlightText(s.text);return JSON.stringify({matches:a,message:a===0?`Text "${s.text}" was not found in the editor.`:`Highlighted ${a} occurrence(s) of "${s.text}".`})}case"highlight_line_range":{if(!(t!=null&&t.highlightLineRange))return he();const a=t.highlightLineRange(s.start_line,s.end_line);return JSON.stringify({success:a,message:a?`Selected lines ${s.start_line}-${s.end_line}.`:"Could not select the requested line range."})}case"go_to_line":{if(!(t!=null&&t.goToLine))return he();const a=t.goToLine(s.line,s.column);return JSON.stringify({success:a,message:a?`Cursor moved to line ${s.line}.`:"Could not move the cursor."})}case"insert_text_at_cursor":{if(!(t!=null&&t.insertTextAtCursor))return he();const a=t.insertTextAtCursor(s.text);return JSON.stringify({success:a,message:a?"Text inserted at cursor.":"Editor rejected the insertion."})}case"replace_selection":{if(!(t!=null&&t.replaceSelection))return he();const a=t.replaceSelection(s.text);return JSON.stringify({success:a,message:a?"Selection replaced.":"No text was selected to replace."})}case"get_diagnostics":{if(!(t!=null&&t.getDiagnostics))return he();const a=t.getDiagnostics();return JSON.stringify({count:a.length,diagnostics:a})}case"get_document_symbols":{if(!(t!=null&&t.getSymbols))return he();const a=await t.getSymbols();return JSON.stringify({count:a.length,symbols:a})}default:return JSON.stringify({error:`Unknown tool: ${e.function.name}`})}}let Zt=0;function Re(){return`msg_${Date.now()}_${++Zt}`}function en(r){const{socket:e,runningInstances:n,currentCode:t,currentLanguage:i,allScripts:s,editorApi:a,currentScriptId:p}=r,l=J((f,O,N)=>f==="none"||!N?null:{range:O,scriptId:p||"",scriptVersion:(t||"").length,kind:f,originalText:N},[p,t]),[m,g]=te(()=>{try{const f=window.localStorage.getItem("Editor.aiChatMessages");return f?JSON.parse(f):[]}catch{return[]}}),c=J(f=>{g(O=>{const N=typeof f=="function"?f(O):f,R=N.length>100?N.slice(-100):N;try{window.localStorage.setItem("Editor.aiChatMessages",JSON.stringify(R))}catch{try{const W=R.slice(-20);window.localStorage.setItem("Editor.aiChatMessages",JSON.stringify(W))}catch{}}return R})},[]),[y,d]=te(!1),[S,b]=te(null),[v,H]=te(window.localStorage.getItem("Editor.aiChatMode")||"agent"),E=J(f=>{H(f),window.localStorage.setItem("Editor.aiChatMode",f)},[]),[C,x]=te(null),[w,M]=te(window.localStorage.getItem("openai-model")||""),[re,G]=te([]),[_,Y]=te({}),[le,K]=te(!0),[de,I]=te(null),A=ne(null),X=ne(null),Q=ne(null),h=ne(null),T=J(f=>{M(f),window.localStorage.setItem("openai-model",f)},[]),k=J(async()=>{K(!0),I(null);try{const f=await Pt(e,n);if(G(f.models),Y(f.providerMap),f.models.length>0){const O=window.localStorage.getItem("openai-model");O&&f.models.includes(O)?M(O):M(f.models[0])}f.errors.length>0&&I(f.errors.join("; "))}catch(f){I(String(f))}K(!1)},[e,n]);xe(()=>{k()},[k]);const z=J(f=>{let O=!1,N=!1;const R=[];let W=!1;const ge=/@([\w/äöüÄÖÜß-]+)/g;let D;for(;(D=ge.exec(f))!==null;){const B=D[1].toLowerCase();if(B==="alle"||B==="all")O=!0;else if(B==="geräte"||B==="devices"||B==="geraete")N=!0;else if(W=!0,s&&s.length>0){const V=D[1].replace(/\//g,".").toLowerCase(),oe=V.split("."),ie=s.find(ye=>{const pe=ye.id.toLowerCase(),Z=pe.replace(/^script\.js\./,"");if(Z===V||Z.endsWith(`.${V}`)||pe===`script.js.${V}`)return!0;let _e=0;for(const me of oe){const Te=Z.indexOf(me,_e);if(Te===-1)return!1;_e=Te+me.length}return!0});if(ie)R.push(ie.id);else for(const ye of oe){if(ye.length<3)continue;const pe=s.filter(Z=>Z.id.toLowerCase().includes(`.${ye}`)||Z.name.toLowerCase().includes(ye));for(const Z of pe)R.includes(Z.id)||R.push(Z.id)}}}return W&&R.length===0&&(O=!0),{cleanMessage:f.replace(/@[\w/äöüÄÖÜß]+\s*/g,"").trim(),mentionedScriptIds:R,includeAll:O,includeDevices:N}},[s]),se=J(async(f,O,N)=>{h.current||(h.current=await Jt()),A.current||(A.current=await De(e,n));const R=Ye(),W=i==="blockly",ge=f||N.length>0;let D=`You are an AI assistant for ioBroker JavaScript adapter scripting. Help the user write, debug, and understand ioBroker scripts. Write comments in ${R}. Use the ioBroker JavaScript API correctly. + +ioBroker object hierarchy: adapter.instance.device.channel.state +- A "state" is a single datapoint (e.g. zigbee2mqtt.0.0x1234.temperature) +- A "channel" groups related states (e.g. zigbee2mqtt.0.0x1234 contains temperature, humidity, battery) +- A "device" groups channels (e.g. zigbee2mqtt.0.0x1234) +- The channel/device often has the human-readable name (e.g. "Living Room Sensor") +When looking up info about a datapoint, ALWAYS also check its parent channel/device for the device name and context. Use get_object_info which returns the full parent hierarchy automatically. + +To verify code or diagnose runtime behaviour, you can use the run_script tool: it executes a JavaScript/TypeScript snippet in the live engine (verbose mode) and returns everything it logged, then auto-stops it. Log the values you want to inspect via log(...) / console.log(...). It runs against the live system, so prefer read-only diagnostics (getState, $, getObject) and only call setState when the user explicitly asked to change something. + +Available API and syntax rules: +${h.current}`;if(W&&(D+="\n\nThe user is working in the Blockly visual editor. When asked to create or modify code, respond with Blockly XML in a ```xml code block instead of JavaScript."),(O||f)&&(Q.current||(Q.current=await Ge(e)),D+=` + +Available smart home devices: +${JSON.stringify(Q.current,null,0)}`),!ge&&t)if(W){const F="%%BLOCKLY_XML%%",B=t.indexOf(F),V=B!==-1?t.substring(0,B).trim():t,oe=B!==-1?t.substring(B+F.length).trim():"";D+=` + +The user is working on this Blockly script (currently open in the editor). + +Generated JavaScript (shows the logic): +\`\`\`javascript +${V} +\`\`\``,oe&&(D+=` + +Blockly XML (use for modifications): +\`\`\`xml +${oe} +\`\`\``)}else D+=` + +The user's question is about this script (currently open in the editor, ${i||"javascript"}): +\`\`\`${i||"javascript"} +${t} +\`\`\``;if(f&&s&&s.length>0)D+=` + +The user requested ALL scripts. Search through all of them to answer the question. Always identify WHICH script you describe by its full ID. Scripts may reference datapoint IDs via variables. + +${qe(s,!0)}`;else if(N.length>0&&s){const F=s.filter(B=>N.includes(B.id));F.length>0&&(D+=` + +IMPORTANT: The user is asking about the following script(s). Answer ONLY about these scripts, NOT about the currently open editor tab. Analyze the source code below carefully: + +${qe(F,!0)}`)}return W&&(D+=` + +${Xe(R)}`),[{role:"system",content:D}]},[e,n,t,i,s]),ke=J(async f=>{if(!f.trim()||y)return;const O=_[w];if(!O){x(u.I18n.t("Please select a valid model"));return}const N=A.current||await De(e,n);if(A.current=N,!N){x(u.I18n.t("No API keys configured"));return}const R=Object.keys(n)[0];if(!R){x(u.I18n.t("No running javascript instance found"));return}const W=O==="custom"&&N.gptBaseUrl||"",ge={id:Re(),role:"user",content:f,timestamp:Date.now()},D={id:Re(),role:"assistant",content:`⏳ ${u.I18n.t("Generating plan...")}`,timestamp:Date.now()};c(F=>[...F,ge,D]),d(!0),x(null);try{const F=Ye();Q.current||(Q.current=await Ge(e));const B=Q.current||[],V=`Devices in my smart home: +${JSON.stringify(B)} + +I need a plan for this task: ${f} + +Answer with max 6 lines. Use FULL device IDs from the list above (e.g. zigbee2mqtt.0.0xa4c1383f5ef5fb07.state). No explanation. No reasoning. +1. IDs: +2. Trigger: +3. Condition: +4. Actions: +5. Else: +6. Extra: +Values are boolean (true/false) or numbers, not strings. Use .state not .state_toggle.`,oe=await Ne(e,R,{messages:[{role:"user",content:V}],model:w,provider:O,baseUrl:W});if(oe.error){x(oe.error),c(ae=>ae.slice(0,-2)),d(!1);return}const ie=Pe(oe.content||"");c(ae=>{const j=[...ae],P=j[j.length-1];return(P==null?void 0:P.role)==="assistant"&&(j[j.length-1]={...P,content:`📋 **${u.I18n.t("Plan")}:** +${ie}`}),j});const ye={id:Re(),role:"assistant",content:`⏳ ${u.I18n.t("Generating code...")}`,timestamp:Date.now()};c(ae=>[...ae,ye]);const pe=i==="blockly",Z=pe?`TASK: ${f} + +PLAN: +${ie} + +Generate Blockly XML blocks for this ioBroker automation. Use the exact state IDs from the plan. If the plan contains TODO_DEVICE_ID, keep it as a placeholder. Write comments in ${F}. Put the blocks in a \`\`\`xml code block. You may add a short explanation before or after the XML.`:`TASK: ${f} + +PLAN: +${ie} + +Write the ioBroker script. Use the exact state IDs from the plan. If the plan contains TODO_DEVICE_ID, keep it as a placeholder with a comment so the user can fill in the correct ID. Write comments in ${F}. Put the code in a \`\`\`javascript code block. You may add a short explanation before or after the code.`,_e=pe?Xe(F):At(F),me=await Ne(e,R,{messages:[{role:"system",content:_e},{role:"user",content:Z}],model:w,provider:O,baseUrl:W});if(me.error){x(me.error),c(ae=>ae.slice(0,-1)),d(!1);return}const Te=Pe(me.content||"");c(ae=>{const j=[...ae],P=j[j.length-1];return(P==null?void 0:P.role)==="assistant"&&(j[j.length-1]={...P,content:Te}),j}),b(`${u.I18n.t("devices")}: ${B.length}`)}catch(F){x(String(F)),c(B=>B.slice(0,-1))}d(!1)},[w,_,y,e,n,i,c]),U=J(async f=>{var ae;if(v==="code")return ke(f);if(!f.trim()||y)return;const O=_[w];if(!O){x(u.I18n.t("Please select a valid model"));return}const N=A.current||await De(e,n);if(A.current=N,!N){x(u.I18n.t("No API keys configured"));return}const R=Object.keys(n)[0];if(!R){x(u.I18n.t("No running javascript instance found"));return}let W=X.current;if(X.current=null,!W)try{const j=(ae=a==null?void 0:a.getSelection)==null?void 0:ae.call(a);j&&j.text&&(W=l("selection",j.range,j.text))}catch{}const ge={id:Re(),role:"user",content:f,timestamp:Date.now(),sourceRange:W},D={id:Re(),role:"assistant",content:"",timestamp:Date.now(),sourceRange:W};c(j=>[...j,ge,D]),d(!0),x(null);const{cleanMessage:F,mentionedScriptIds:B,includeAll:V,includeDevices:oe}=z(f),ie=[];if(V)ie.push(`${u.I18n.t("all scripts")} (${(s==null?void 0:s.length)||0})`);else if(B.length>0){const j=B.map(P=>P.replace(/^script\.js\./,""));ie.push(j.join(", "))}else ie.push(u.I18n.t("current script"));oe&&ie.push(u.I18n.t("devices")),b(`${u.I18n.t("Context")}: ${ie.join(" + ")}`);const ye=await se(V,oe,B),pe=O==="custom"&&N.gptBaseUrl||"";let Z=F||f;if(s&&s.length>0){const j=Z.match(/\b[\w-]+\.\d+\.[\w.-]+/g);if(j){const P=[];for(const ee of new Set(j)){const be=wt(s,ee);be.length>0&&P.push(`Datapoint "${ee}" is used in: +${be.map(je=>` - ${je.scriptName} (${je.scriptId}) line ${je.lineNumber}: ${je.usageType} → ${je.line}`).join(` +`)}`)}P.length>0&&(Z+=` + +[Automatic analysis results] +${P.join(` + +`)}`)}}const _e=[...ye,...m.filter(j=>j.role!=="system").map(j=>({role:j.role,content:j.content})),{role:"user",content:Z}],me=v==="agent",Te=5;try{const j=[..._e];for(let P=0;P$.slice(0,-1));else{const $=Pe(q.content||"");c(ce=>{const fe=[...ce],Be=fe[fe.length-1];return(Be==null?void 0:Be.role)==="assistant"&&(fe[fe.length-1]={...Be,content:$}),fe})}break}x(ee.error),c(q=>q.slice(0,-1));break}let be=ee.tool_calls;if((!be||be.length===0)&&me&&ee.content){const q=ee.content.trim();try{const $=JSON.parse(q);$.name&&$.arguments&&(be=[{id:`text_tool_${Date.now()}`,type:"function",function:{name:$.name,arguments:JSON.stringify($.arguments)}}])}catch{}}if(!be||be.length===0){const q=Pe(ee.content||"");c($=>{const ce=[...$],fe=ce[ce.length-1];return(fe==null?void 0:fe.role)==="assistant"&&(ce[ce.length-1]={...fe,content:q}),ce});break}ee.tool_calls=be;const je=ee.tool_calls.map(q=>{let $={};try{$=JSON.parse(q.function.arguments)}catch{}switch(q.function.name){case"search_datapoints":return`🔍 ${u.I18n.t("Searching datapoints")}: "${String($.query||"")}"`;case"get_state_value":return`📊 ${u.I18n.t("Reading value")}: ${String($.id||"")}`;case"get_object_info":return`📋 ${u.I18n.t("Loading object info")}: ${String($.id||"")}`;case"search_scripts":return`🔍 ${u.I18n.t("Searching scripts")}: "${String($.query||"")}"`;case"read_script":return`📖 ${u.I18n.t("Reading script")}: ${String($.id||"")}`;case"list_scripts":return`📂 ${u.I18n.t("Loading script list")}`;default:return`⚙️ ${q.function.name}`}});c(q=>{const $=[...q],ce=$[$.length-1];return(ce==null?void 0:ce.role)==="assistant"&&($[$.length-1]={...ce,content:je.join(` +`)}),$}),j.push({role:"assistant",content:ee.content||"",tool_calls:ee.tool_calls});for(const q of ee.tool_calls){const $=await Qt(e,q,s,a,R);j.push({role:"tool",tool_call_id:q.id,content:$})}}}catch(j){x(String(j)),c(P=>P.slice(0,-1))}d(!1)},[w,_,m,y,e,n,se,z,s,v,ke,c,l,a]),ue=J(()=>{c([]),x(null),d(!1),b(null),Dt(),window.localStorage.removeItem("Editor.aiChatHistory")},[c]),it=J(async(f,O)=>{const N=_[w];if(!N)return`Error: ${u.I18n.t("Please select a valid model")}`;const R=A.current||await De(e,n);if(A.current=R,!R)return`Error: ${u.I18n.t("No API keys configured")}`;const W=Object.keys(n)[0];if(!W)return`Error: ${u.I18n.t("No running javascript instance found")}`;const ge=N==="custom"&&R.gptBaseUrl||"",D=i||"javascript",F=`You are an assistant for writing ioBroker ${D} scripts. The user will ask a question about a snippet of their code. Match your answer to the question: +- If they ask for an explanation, description, or "what does this do?", reply with clear prose (a few sentences). Do NOT repeat the code unchanged. +- If they explicitly ask for a change, refactor, fix, or rewrite, reply with a single fenced \`\`\`${D==="blockly"?"xml":D}\`\`\` code block containing the full replacement for the selection. You may add one short sentence before or after the block. +- If they ask something ambiguous or meta (e.g. "is this correct?"), reply in prose first and only include code if proposing a change. +ioBroker globals available in scripts: on, setState, getState, schedule, sendTo, log, createState, setStateDelayed, existsState, httpGet, httpPost.`,B=O?`Code from my editor: + +\`\`\`${D==="blockly"?"xml":D} +${O} +\`\`\` + +${f}`:f;try{const V=await Ne(e,W,{messages:[{role:"system",content:F},{role:"user",content:B}],model:w,provider:N,baseUrl:ge});return V.error?`Error: ${V.error}`:V.content||""}catch(V){return`Error: ${V.message||String(V)}`}},[w,_,n,e,i]),at=J(f=>{f.range&&f.code?X.current=l(f.kind||"codelens",f.range,f.code):X.current=null,Ze(async()=>{const{buildActionPrompt:O}=await Promise.resolve().then(()=>dn);return{buildActionPrompt:O}},void 0,import.meta.url).then(({buildActionPrompt:O})=>{const N=O({action:f.action,code:f.code,language:i||"javascript",diagnostic:f.diagnostic,question:f.question,rangeLabel:f.rangeLabel});N?U(N):X.current=null}).catch(()=>{X.current=null,x(u.I18n.t("Failed to build AI action prompt"))})},[U,i,l]);return{messages:m,isLoading:y,error:C,model:w,availableModels:re,modelProviderMap:_,modelsLoading:le,modelsError:de,lastContextInfo:S,mode:v,setMode:E,setModel:T,sendMessage:U,triggerAiAction:at,askInline:it,clearChat:ue,retryLoadModels:k}}const tn=({code:r,language:e,themeType:n,onInsertCode:t,onShowDiff:i,sourceRange:s})=>{const a=ne(null);xe(()=>{var g;const l=window.monaco;if(!a.current||!((g=l==null?void 0:l.editor)!=null&&g.colorize))return;const m=e==="ts"||e==="typescript"?"typescript":e||"javascript";l.editor.colorize(r,m,{theme:n==="dark"?"vs-dark":"vs"}).then(c=>{a.current&&(a.current.innerHTML=c)})},[r,e,n]);const p=J(()=>{navigator.clipboard.writeText(r)},[r]);return o.jsxs(L,{sx:{position:"relative",my:1,borderRadius:1,overflow:"hidden",border:"1px solid",borderColor:"divider"},children:[o.jsxs(L,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",px:1,py:.5,bgcolor:"action.hover",borderBottom:"1px solid",borderColor:"divider"},children:[o.jsx(L,{sx:{fontSize:"0.75rem",color:"text.secondary",textTransform:"uppercase"},children:e||"javascript"}),o.jsxs(L,{children:[o.jsx(ve,{title:u.I18n.t("Copy"),children:o.jsx(we,{size:"small",onClick:p,children:o.jsx(kt,{sx:{fontSize:16}})})}),t&&o.jsx(ve,{title:u.I18n.t("Insert into editor"),children:o.jsx(we,{size:"small",onClick:()=>t(r),children:o.jsx(et,{sx:{fontSize:16}})})}),i&&o.jsx(ve,{title:u.I18n.t("Show as diff"),children:o.jsx(we,{size:"small",onClick:()=>i(r,s),children:o.jsx(Ct,{sx:{fontSize:16}})})})]})]}),o.jsx("pre",{ref:a,style:{margin:0,padding:"8px 12px",overflow:"auto",maxHeight:400,fontSize:"13px",fontFamily:"'Cascadia Code', 'Fira Code', 'Consolas', monospace",backgroundColor:n==="dark"?"#1e1e1e":"#f8f8f8",color:n==="dark"?"#d4d4d4":"#333"},children:r})]})},nn=({xml:r,themeType:e})=>{const n=ne(null),t=ne(null),[i,s]=te(60),a=ne(!1);return xe(()=>{a.current&&(a.current=!1,requestAnimationFrame(()=>{const p=window.Blockly,l=t.current;p&&l&&(p.svgResize(l),l.scrollCenter())}))},[i]),xe(()=>{const p=window.Blockly;if(!(!p||!n.current)){t.current&&(t.current.dispose(),t.current=null);try{const l=p.inject(n.current,{readOnly:!0,toolbox:null,trashcan:!1,zoom:{controls:!1,wheel:!1,startScale:1},move:{scrollbars:!1,drag:!1,wheel:!1},sounds:!1,renderer:"thrasos",theme:e==="dark"?St:"classic",media:"google-blockly/media/"});t.current=l;let m=r.trim();m.startsWith("${m}`);const g=p.utils.xml.textToDom(m);let c=10;const y=Array.from(g.querySelectorAll(":scope > block"));for(const b of y)b.setAttribute("x","10"),b.setAttribute("y",String(c)),c+=200;p.Xml.domToWorkspace(g,l);const d=l.getTopBlocks(!1);if(d.length>1){let b=10;for(const v of d){const H=v.getRelativeToSurfaceXY();v.moveBy(10-H.x,b-H.y),b+=v.getHeightWidth().height+20}}const S=l.getBlocksBoundingBox();if(S){const b=S.bottom-S.top+20,v=Math.max(60,Math.ceil(b));a.current=!0,s(v)}}catch{}return()=>{t.current&&(t.current.dispose(),t.current=null)}}},[r,e]),o.jsx(L,{ref:n,sx:{width:"100%",height:i,minHeight:60,borderRadius:1,overflow:"hidden",border:"1px solid",borderColor:"divider"}})};function sn(r){const e=[],n=/```(\w*)\n?([\s\S]*?)```/g;let t=0,i;for(;(i=n.exec(r))!==null;){if(i.index>t){const s=r.substring(t,i.index).trim();s&&e.push({type:"text",content:s})}e.push({type:"code",content:i[2].trim(),language:i[1]||"javascript"}),t=i.index+i[0].length}if(tt&&e.push(r.substring(t,i.index)),i[2]?e.push(o.jsx("strong",{children:i[2]},s++)):i[3]?e.push(o.jsx("em",{children:i[3]},s++)):i[4]&&e.push(o.jsx("code",{className:"ai-chat-inline-code",style:{padding:"2px 6px",borderRadius:4,fontSize:"0.85em",fontFamily:"'Cascadia Code', 'Fira Code', 'Consolas', monospace"},children:i[4]},s++)),t=i.index+i[0].length;return tp.trim().replace(/^\||\|$/g,"").split("|").map(l=>l.trim()),s=i(r[0]),a=r.slice(2).map(i);return o.jsx(L,{sx:{overflowX:"auto",my:1},children:o.jsxs("table",{style:{borderCollapse:"collapse",width:"100%",fontSize:"0.8rem",color:e.palette.text.primary},children:[o.jsx("thead",{children:o.jsx("tr",{children:s.map((p,l)=>o.jsx("th",{style:{border:`1px solid ${e.palette.divider}`,padding:"6px 10px",backgroundColor:t?e.palette.grey[800]:e.palette.grey[100],color:e.palette.text.primary,fontWeight:600,textAlign:"left"},children:Ee(p)},l))})}),o.jsx("tbody",{children:a.map((p,l)=>o.jsx("tr",{style:{backgroundColor:l%2===1?t?e.palette.grey[900]:e.palette.grey[50]:void 0},children:p.map((m,g)=>o.jsx("td",{style:{border:`1px solid ${e.palette.divider}`,padding:"6px 10px",color:e.palette.text.primary},children:Ee(m)},g))},l))})]})},n)}function an(r,e){const n=r.split(` +`),t=[];let i=0,s=0;for(;so.jsx("li",{children:Ee(g)},c))},i++));continue}if(/^\d+[.)]\s/.test(p)){const m=[];for(;so.jsx("li",{children:Ee(g)},c))},i++));continue}t.push(o.jsx("div",{children:Ee(p)},i++)),s++}return t}const cn=({message:r,themeType:e,currentLanguage:n,onInsertCode:t,onShowDiff:i,onApplyCode:s})=>{const a=r.role==="user",p=ct(),l=a?e==="dark"?p.palette.primary.dark:p.palette.primary.main:e==="dark"?p.palette.secondary.dark:p.palette.secondary.main,m=p.palette.getContrastText(l),g=Ae(()=>sn(r.content),[r.content]),c=(b,v)=>!!(b==="xml"||b==="blockly"||n==="blockly"&&v&&/b.type==="code"?c(b.language,b.content)?o.jsxs(L,{sx:{my:1},children:[o.jsx(nn,{xml:b.content,themeType:e}),o.jsxs(L,{sx:{display:"flex",gap:.5,mt:.5},children:[s&&o.jsx(We,{size:"small",variant:"contained",color:"primary",startIcon:o.jsx(Ot,{sx:{fontSize:14}}),onClick:()=>s(b.content),sx:{textTransform:"none",fontSize:"0.75rem"},children:u.I18n.t("Apply blocks")}),t&&o.jsx(We,{size:"small",variant:"outlined",startIcon:o.jsx(et,{sx:{fontSize:14}}),onClick:()=>t(b.content),sx:{textTransform:"none",fontSize:"0.75rem"},children:u.I18n.t("Insert blocks")})]})]},v):o.jsx(tn,{code:b.content,language:b.language||"javascript",themeType:e,onInsertCode:t,onShowDiff:i,sourceRange:r.sourceRange||null},v):o.jsx(L,{sx:{wordBreak:"break-word",color:p.palette.text.primary},children:an(b.content,p)},v))})]})};function ln(r){const e=(r||"").toLowerCase();return e.includes("blockly")||e.includes("rules")?"blockly":e.includes("typescript")?"typescript":"javascript"}function Ie(r,e){return`\`\`\`${e==="blockly"?"xml":e} +${r} +\`\`\``}function rt(r){const e=(r.code||"").trim(),n=ln(r.language),t=r.rangeLabel?` (${r.rangeLabel})`:"";switch(r.action){case"explain":return e?[`Please explain what this ioBroker ${n} code does${t}.`,"Focus on: which datapoints it reads/writes, which triggers fire it, and any side-effects.","",Ie(e,n)].join(` +`):null;case"refactor":return e?[`Refactor this ioBroker ${n} code${t} to be cleaner and more idiomatic.`,"Preserve behavior exactly. Keep ioBroker APIs (on, setState, getState, schedule, sendTo, log).",`Return the full refactored block inside a \`\`\`${n==="blockly"?"xml":n}\`\`\` code block so it can be smart-applied.`,"",Ie(e,n)].join(` +`):null;case"comment":return e?[`Add clear, concise inline comments to this ioBroker ${n} code${t}.`,"Only add comments where they add real value (non-obvious logic, tricky edge cases, business rules).","Do not over-comment trivial lines. Return the commented version in a code block.","",Ie(e,n)].join(` +`):null;case"fix":{if(!e)return null;const i=(r.diagnostic||"").trim(),s=i?` +Reported problem: ${i}`:"";return[`This ioBroker ${n} code has an issue${t}. Please fix it and return the corrected code.${s}`,"Keep the fix minimal — do not rewrite unrelated parts.","",Ie(e,n)].join(` +`)}case"tests":return e?[`Suggest how to test this ioBroker ${n} script manually inside the ioBroker admin UI${t}.`,"","ioBroker scripts run inside the adapter sandbox and CANNOT be unit-tested with Jest, Mocha, or any external test framework. Do NOT propose Jest/Mocha tests, do NOT propose extracting the code into a separate Node.js project, do NOT write `describe` / `test` blocks.","","Instead, propose a short list of manual test cases. For each case describe:",' • Setup — which ioBroker datapoints to prepare and to which values (via the objects tree "Values" tab)'," • Action — what to trigger: set a state with setState, wait for a schedule, change a sensor value, etc."," • Expected — what should happen afterwards: which states should change, what should appear in the adapter log (javascript.0), which side effects are visible","","Keep it concise: 3-6 cases covering the happy path, typical edge cases, and any guard conditions the script has.","",Ie(e,n)].join(` +`):null;case"ask":{const i=(r.question||"").trim();return i?e?[`Regarding this ioBroker ${n} code${t}:`,"",Ie(e,n),"",i].join(` +`):i:null}default:return null}}function ot(r){const e=(r||"").trimStart();if(!e.startsWith("/"))return null;const n=e.match(/^\/(\w+)(?:\s+([\s\S]*))?$/);if(!n)return null;const t=n[1].toLowerCase(),i=(n[2]||"").trim(),a={explain:"explain",erklaere:"explain",erklaeren:"explain",refactor:"refactor",refaktor:"refactor",refaktoriere:"refactor",comment:"comment",comments:"comment",kommentar:"comment",kommentiere:"comment",fix:"fix",fixme:"fix",tests:"tests",test:"tests",ask:"ask",frag:"ask",frage:"ask"}[t];return a?{action:a,rest:i}:null}const dn=Object.freeze(Object.defineProperty({__proto__:null,buildActionPrompt:rt,parseSlashCommand:ot},Symbol.toStringTag,{value:"Module"}));function un(){return[{id:"@all",label:u.I18n.t("mention @all"),descriptionKey:"All scripts"},{id:"@devices",label:u.I18n.t("mention @devices"),descriptionKey:"Smart home devices"}]}function pn({provider:r,isDark:e}){return $t[r]?o.jsx("img",{src:`./img/${r}.svg`,alt:r,style:{...Lt,...e?{filter:"invert(0.85)"}:{}},onError:t=>{t.target.style.display="none"}}):null}function mn(){try{const r=window.localStorage.getItem("Editor.aiChatHistory");return r?JSON.parse(r):[]}catch{return[]}}const fn=({onSend:r,disabled:e,themeType:n,hasSelection:t,selectionText:i,allScripts:s,model:a,availableModels:p,modelProviderMap:l,modelsLoading:m,onModelChange:g,mode:c,onModeChange:y,currentLanguage:d})=>{const[S,b]=te(""),[v,H]=te(!1),[E,C]=te(""),[x,w]=te(0),M=ne(null),re=ne(-1),G=ne(mn()),_=ne(-1),Y=ne(""),le=Ae(()=>{const T=un().map(k=>({...k,description:u.I18n.t(k.descriptionKey)}));if(s)for(const k of s){const z=k.id.replace(/^script\.js\./,"").replace(/\./g,"/");T.push({id:`@${z}`,label:`@${z}`,description:`${k.name} [${k.enabled?"active":"inactive"}]`})}return T},[s]),K=Ae(()=>{if(!E)return le;const h=E.toLowerCase();return le.filter(T=>T.id.toLowerCase().includes(h)||T.description.toLowerCase().includes(h))},[le,E]);xe(()=>{w(0)},[E]);const de=J(()=>{const h=S.trim();if(!h||e)return;let T=h;const k=ot(h);if(k){const z=t&&i?i:"",se=rt({action:k.action,code:z,language:d||"javascript",question:k.action==="ask"?k.rest:void 0,diagnostic:k.action==="fix"&&k.rest||void 0});se&&(T=se)}else t&&i&&(T=`[Selected code in editor] +\`\`\` +${i} +\`\`\` + +${h}`);G.current.push(h),_.current=-1,Y.current="";try{const z=G.current.slice(-50);window.localStorage.setItem("Editor.aiChatHistory",JSON.stringify(z))}catch{}r(T),b(""),H(!1),requestAnimationFrame(()=>{var z;return(z=M.current)==null?void 0:z.focus()})},[S,e,r,t,i,d]),I=J(h=>{const T=re.current,k=M.current;if(T<0){const ue=S?`${S}${h} `:`${h} `;b(ue),H(!1),C(""),setTimeout(()=>{k&&(k.focus(),k.setSelectionRange(ue.length,ue.length))},0);return}const z=S.substring(0,T),se=(k==null?void 0:k.selectionStart)??S.length,ke=S.substring(se),U=`${z}${h} ${ke}`;b(U),H(!1),C(""),re.current=-1,setTimeout(()=>{if(k){const ue=z.length+h.length+1;k.focus(),k.setSelectionRange(ue,ue)}},0)},[S]),A=J(()=>{re.current=-1,C(""),H(h=>!h)},[]),X=J(h=>{const T=h.target.value;b(T);const k=h.target.selectionStart??T.length,se=T.substring(0,k).match(/@([\w/äöüÄÖÜß]*)$/);se?(re.current=k-se[0].length,C(se[1]),H(!0)):(H(!1),C(""))},[]),Q=J(h=>{if(v&&K.length>0){if(h.key==="ArrowDown"){h.preventDefault(),w(T=>(T+1)%K.length);return}if(h.key==="ArrowUp"){h.preventDefault(),w(T=>(T-1+K.length)%K.length);return}if(h.key==="Enter"||h.key==="Tab"){h.preventDefault(),I(K[x].id);return}if(h.key==="Escape"){h.preventDefault(),H(!1);return}}if(h.key==="ArrowUp"&&!v&&G.current.length>0){const T=M.current,k=!T||T.selectionStart===0,z=!S.includes(` +`);if(k&&z){h.preventDefault(),_.current===-1?(Y.current=S,_.current=G.current.length-1):_.current>0&&_.current--,b(G.current[_.current]);return}}if(h.key==="ArrowDown"&&!v&&_.current>=0){const T=M.current,k=!T||T.selectionStart===S.length,z=!S.includes(` +`);if(k&&z){h.preventDefault(),_.current0&&o.jsx(dt,{elevation:4,sx:{position:"absolute",bottom:"100%",left:8,right:8,maxHeight:200,overflow:"auto",zIndex:10,mb:.5},children:o.jsx(ut,{dense:!0,disablePadding:!0,children:K.slice(0,15).map((h,T)=>o.jsx(pt,{selected:T===x,onClick:()=>I(h.id),sx:{py:.25,minHeight:32},children:o.jsx(mt,{primary:h.label,secondary:h.description,primaryTypographyProps:{fontSize:"0.8rem",fontWeight:500},secondaryTypographyProps:{fontSize:"0.7rem"}})},h.id))})}),c==="code"&&o.jsx(Fe,{label:`${u.I18n.t("mention @devices")} — ${u.I18n.t("Smart home devices")}`,size:"small",variant:"outlined",sx:{mx:1,mt:.5,maxWidth:"calc(100% - 16px)"}}),t&&i&&o.jsx(Fe,{icon:o.jsx(bt,{sx:{fontSize:14}}),label:u.I18n.t("Selected code as context"),size:"small",variant:"outlined",sx:{mx:1,mt:.5,maxWidth:"calc(100% - 16px)"}}),o.jsxs(L,{sx:{mx:1,mt:.5,mb:.5,border:"1px solid",borderColor:"divider",borderRadius:1.5,overflow:"hidden","&:focus-within":{borderColor:"primary.main"}},children:[o.jsx(ft,{inputRef:M,fullWidth:!0,multiline:!0,maxRows:6,placeholder:u.I18n.t("Ask about your script..."),value:S,onChange:X,onKeyDown:Q,disabled:e,onBlur:()=>{setTimeout(()=>H(!1),200)},variant:"standard",slotProps:{input:{disableUnderline:!0}},sx:{px:1.5,pt:1,pb:.5,"& .MuiInputBase-root":{fontSize:"0.875rem"}}}),o.jsxs(L,{sx:{display:"flex",alignItems:"center",gap:.75,px:1,pb:.5},children:[o.jsx(ve,{title:o.jsxs(L,{sx:{fontSize:"0.8rem",lineHeight:1.5,maxWidth:360},children:[o.jsx(L,{sx:{fontWeight:600,mb:.75},children:u.I18n.t("AI chat mode")}),o.jsxs(L,{sx:{mb:.75},children:[o.jsxs("strong",{children:["💬 ",u.I18n.t("Chat")]})," —"," ",u.I18n.t("Plain conversation. Use for questions, explanations, syntax help. Does not read or modify your scripts.")]}),o.jsxs(L,{sx:{mb:.75},children:[o.jsxs("strong",{children:["🤖 ",u.I18n.t("Agent")]})," —"," ",u.I18n.t('For larger models with tool support. The AI can read, create, and edit scripts, look up datapoints, and browse the object tree — useful for "create a script that...", "which scripts use this state?" or "analyze my light script".')]}),o.jsxs(L,{children:[o.jsxs("strong",{children:["💻 ",u.I18n.t("Code")]})," —"," ",u.I18n.t('For smaller models without tool support. Two-step script generator (plan then code) — useful for "create a script that..." or "write a Blockly rule for...". Output goes into the editor for smart-apply.')]})]}),enterDelay:400,placement:"left",children:o.jsxs(He,{value:c,onChange:h=>y(h.target.value),size:"small",variant:"standard",disableUnderline:!0,sx:{fontSize:"0.7rem",color:"text.secondary",border:"1px solid",borderColor:"text.secondary",borderRadius:3,bgcolor:"action.hover",px:.75,"&:hover":{borderColor:"text.disabled",bgcolor:"action.hover"},"& .MuiSelect-select":{py:"2px",pr:"18px !important",display:"flex",alignItems:"center",gap:.5}},children:[o.jsx(ze,{value:"chat",sx:{fontSize:"0.75rem"},title:u.I18n.t("Plain conversation. Best for: general questions, syntax help, concept explanations."),children:"💬 Chat"}),o.jsx(ze,{value:"agent",sx:{fontSize:"0.75rem"},title:u.I18n.t("For larger models with tool support. Best for: creating, editing, or analyzing scripts; finding datapoint usages; inspecting the object tree."),children:"🤖 Agent"}),o.jsx(ze,{value:"code",sx:{fontSize:"0.75rem"},title:u.I18n.t("For smaller models without tool support. Best for: creating new JavaScript/TypeScript or Blockly scripts from a description."),children:"💻 Code"})]})}),o.jsx(He,{value:a,onChange:h=>g(h.target.value),size:"small",disabled:m||p.length===0,variant:"standard",disableUnderline:!0,sx:{fontSize:"0.7rem",color:"text.secondary",border:"1px solid",borderColor:"text.secondary",borderRadius:3,bgcolor:"action.hover",px:.75,"&:hover":{borderColor:"text.disabled",bgcolor:"action.hover"},"& .MuiSelect-select":{py:"2px",pr:"18px !important",display:"flex",alignItems:"center",gap:.5}},children:p.map(h=>o.jsxs(ze,{value:h,sx:{fontSize:"0.75rem",display:"flex",gap:.5},children:[o.jsx(pn,{provider:l[h],isDark:n==="dark"}),h]},h))}),o.jsx(ve,{title:u.I18n.t("Mention scripts as context for the AI. Use @all for all scripts or @scriptName for a specific one."),enterDelay:500,children:o.jsx(we,{size:"small",onClick:A,sx:{p:"3px",color:v?"primary.main":"text.secondary",border:"1px solid",borderColor:v?"primary.main":"text.secondary",bgcolor:v?void 0:"action.hover",borderRadius:3,"&:hover":{borderColor:"text.disabled",bgcolor:"action.hover"}},children:o.jsx(Tt,{sx:{fontSize:16}})})}),o.jsx(L,{sx:{flex:1}}),o.jsxs(Oe,{variant:"caption",sx:{color:"text.disabled",fontSize:"0.65rem",mr:.5,whiteSpace:"nowrap"},children:["Enter ",u.I18n.t("to send")]}),o.jsx(ve,{title:`${u.I18n.t("Send")} (Enter)`,children:o.jsx("span",{children:o.jsx(we,{color:"primary",onClick:de,disabled:e||!S.trim(),size:"small",sx:{p:.25},children:o.jsx(Et,{sx:{fontSize:18}})})})})]})]})]})},On=({socket:r,runningInstances:e,themeType:n,currentCode:t,currentLanguage:i,selectedCode:s,allScripts:a,editorApi:p,aiActionRequest:l,onAiActionConsumed:m,onRegisterInlineAsk:g,onInsertCode:c,onShowDiff:y,onApplyCode:d,currentScriptId:S,onClose:b})=>{var ke;const v=ne(null),H=Ae(()=>({socket:r,runningInstances:e,currentCode:t,currentLanguage:i,allScripts:a,editorApi:p,currentScriptId:S}),[r,e,t,i,a,p,S]),{messages:E,isLoading:C,error:x,model:w,availableModels:M,modelProviderMap:re,modelsLoading:G,modelsError:_,lastContextInfo:Y,mode:le,setMode:K,setModel:de,sendMessage:I,triggerAiAction:A,askInline:X,clearChat:Q,retryLoadModels:h}=en(H);xe(()=>(g==null||g(X),()=>g==null?void 0:g(null)),[X,g]);const T=ne(null);xe(()=>{!l||T.current===l||(T.current=l,A(l),m==null||m())},[l,A,m]),xe(()=>{var U;(U=v.current)==null||U.scrollIntoView({behavior:"smooth"})},[E]);const k=J(U=>{c==null||c(U)},[c]),z=J((U,ue)=>{y==null||y(U,ue)},[y]),se=J(U=>{d==null||d(U)},[d]);return o.jsxs(L,{sx:{display:"flex",flexDirection:"column",height:"100%",bgcolor:"background.default","& .ai-chat-inline-code":{backgroundColor:"action.selected",color:"text.primary",border:"1px solid",borderColor:"divider"}},children:[o.jsxs(L,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,borderBottom:"1px solid",borderColor:"divider",bgcolor:n==="dark"?"grey.900":"grey.100",flexShrink:0},children:[o.jsx(Oe,{variant:"subtitle2",sx:{fontWeight:600,flex:1,color:"text.primary"},children:u.I18n.t("AI Chat")}),G&&o.jsx(Ve,{size:16}),o.jsx(ve,{title:u.I18n.t("New chat"),children:o.jsx(we,{size:"small",onClick:Q,children:o.jsx(_t,{sx:{fontSize:18}})})}),o.jsx(ve,{title:u.I18n.t("Close"),children:o.jsx(we,{size:"small",onClick:b,children:o.jsx(jt,{sx:{fontSize:18}})})})]}),(x||_)&&o.jsx(ht,{severity:"error",sx:{m:1,py:0},action:_?o.jsx(we,{size:"small",onClick:h,children:o.jsx(xt,{sx:{fontSize:16}})}):void 0,children:x||_}),Y&&o.jsx(Oe,{variant:"caption",sx:{px:1.5,py:.25,color:"text.secondary",fontSize:"0.7rem",bgcolor:"action.hover",borderBottom:"1px solid",borderColor:"divider",flexShrink:0},children:Y}),o.jsxs(L,{sx:{flex:1,overflow:"auto",py:1},children:[E.length===0&&!C&&o.jsxs(L,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",color:"text.secondary",px:3,textAlign:"center"},children:[o.jsx(Oe,{variant:"body2",sx:{mb:1},children:u.I18n.t("Ask questions about your script, request changes, or generate new code.")}),o.jsxs(Oe,{variant:"caption",color:"text.disabled",children:["Enter ",u.I18n.t("to send"),", Shift+Enter ",u.I18n.t("for new line")]})]}),E.filter(U=>U.role!=="system").map(U=>o.jsx(cn,{message:U,themeType:n,currentLanguage:i,onInsertCode:k,onShowDiff:z,onApplyCode:se},U.id)),C&&((ke=E[E.length-1])==null?void 0:ke.content)===""&&o.jsxs(L,{sx:{display:"flex",alignItems:"center",gap:1,px:2,py:1},children:[o.jsx(Ve,{size:16}),o.jsx(Oe,{variant:"caption",color:"text.secondary",children:u.I18n.t("Thinking...")})]}),o.jsx("div",{ref:v})]}),o.jsx(fn,{onSend:I,disabled:C||M.length===0,themeType:n,hasSelection:!!s,selectionText:s,allScripts:a,model:w,availableModels:M,modelProviderMap:re,modelsLoading:G,onModelChange:de,mode:le,onModeChange:K,currentLanguage:i})]})};export{On as default}; diff --git a/admin/assets/ScriptEditor-Bw-7a_d8.js b/admin/assets/ScriptEditor-B5mD7l8c.js similarity index 91% rename from admin/assets/ScriptEditor-Bw-7a_d8.js rename to admin/assets/ScriptEditor-B5mD7l8c.js index 8e720bb50..820c4ae7e 100644 --- a/admin/assets/ScriptEditor-Bw-7a_d8.js +++ b/admin/assets/ScriptEditor-B5mD7l8c.js @@ -1,2 +1,2 @@ -import{j as t}from"./createSvgIcon-DYs_tNrE.js";import{a as n}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as l,a as c,b as h,z as a,h as d,i}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as o}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import p from"./ScriptEditorVanillaMonaco-B-wy1I-G.js";import{S as m}from"./Save-CkuNSiWL.js";import{a as g}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./preload-helper-BDBacUwf.js";import"./index-AD-ewMW2.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const s={textArea:{width:"calc(100% - 10px)",resize:"none"},dialog:{height:"95%"},fullHeight:{height:"100%",overflow:"hidden"},args:r=>({color:r.palette.mode==="dark"?"white":"black",height:30,width:"100%",fontSize:16}),argsTitle:r=>({color:r.palette.mode==="dark"?"white":"black",fontWeight:"bold"})};class D extends n.Component{constructor(e){super(e),this.state={changed:!1,source:!e.source&&e.isReturn?` +import{j as t}from"./createSvgIcon-DYs_tNrE.js";import{a as n}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as l,a as c,b as h,z as a,h as d,i}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as o}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import p from"./ScriptEditorVanillaMonaco-CKnJEdpA.js";import{S as m}from"./Save-CkuNSiWL.js";import{a as g}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./preload-helper-BDBacUwf.js";import"./index-Blu2oA9H.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const s={textArea:{width:"calc(100% - 10px)",resize:"none"},dialog:{height:"95%"},fullHeight:{height:"100%",overflow:"hidden"},args:r=>({color:r.palette.mode==="dark"?"white":"black",height:30,width:"100%",fontSize:16}),argsTitle:r=>({color:r.palette.mode==="dark"?"white":"black",fontWeight:"bold"})};class D extends n.Component{constructor(e){super(e),this.state={changed:!1,source:!e.source&&e.isReturn?` return false`:e.source}}componentDidMount(){setTimeout(()=>{var e;try{(e=window.document.getElementById("source-text-area"))==null||e.focus()}catch{}},100)}handleCancel(){this.props.onClose(!1)}handleOk(){(!this.props.isReturn||this.state.source.includes("return "))&&this.props.onClose(this.state.source)}onChange(e){this.setState({changed:!0,source:e})}render(){return t.jsxs(l,{onClose:()=>!1,maxWidth:"lg",sx:{"& .MuiDialog-paper":s.dialog},fullWidth:!0,open:!0,"aria-labelledby":"source-dialog-title",children:[t.jsx(c,{id:"source-dialog-title",children:o.I18n.t("Function editor")}),t.jsxs(h,{style:s.fullHeight,children:[this.props.args&&t.jsxs(a,{sx:s.args,children:[t.jsx(a,{component:"span",sx:s.argsTitle,children:o.I18n.t("function (")}),this.props.args,t.jsx(a,{component:"span",sx:s.argsTitle,children:")"})]},"arguments"),t.jsx(p,{triggerPrettier:1,adapterName:this.props.adapterName,runningInstances:this.props.runningInstances,style:{...s.textArea,height:this.props.args?"calc(100% - 30px)":"100%"},name:"blockly",socket:this.props.socket,readOnly:!1,checkJs:!1,changed:this.state.changed,code:this.state.source,isDark:this.props.themeType==="dark",onChange:e=>this.onChange(e),language:"javascript"},"scriptEditor")]}),t.jsxs(d,{children:[t.jsx(i,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:t.jsx(m,{}),children:o.I18n.t("Save")}),t.jsx(i,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:t.jsx(g,{}),children:o.I18n.t("Cancel")})]})]})}}export{D as default}; diff --git a/admin/assets/ScriptEditorVanillaMonaco-B-wy1I-G.js b/admin/assets/ScriptEditorVanillaMonaco-CKnJEdpA.js similarity index 97% rename from admin/assets/ScriptEditorVanillaMonaco-B-wy1I-G.js rename to admin/assets/ScriptEditorVanillaMonaco-CKnJEdpA.js index ad5d0fe97..7449c2880 100644 --- a/admin/assets/ScriptEditorVanillaMonaco-B-wy1I-G.js +++ b/admin/assets/ScriptEditorVanillaMonaco-CKnJEdpA.js @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./stateHoverProvider-BMnu2kWx.js","./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js","./index-AD-ewMW2.js","./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js","./preload-helper-BDBacUwf.js","./createSvgIcon-DYs_tNrE.js","./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js","./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js","./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js","./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js","./index-wHNMOf-c.js","./inheritsLoose-CIXm_zPk.js","./index-BTsjunTt.css","./cronHoverProvider-Bg0Vz-1E.js","./inlineDiffController-DBLpPOe2.js","./applyCodeEdit-BdRnbz2g.js","./inlineChatWidget-Cu6rb4Ar.js"])))=>i.map(i=>d[i]); -import{_ as g}from"./preload-helper-BDBacUwf.js";import{j as m}from"./createSvgIcon-DYs_tNrE.js";import{a as k}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as T,a as N,b as M,h as A,i as S,Q as O,o as x,$ as j}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{n as _,Z as R}from"./index-wHNMOf-c.js";import{_ as p}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{h as V}from"./index-AD-ewMW2.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";function K(v){return/^script\.js\.global\./.test(v)}let P=0;function W(v){const t=/\x1b\[[0-9;]*m/g;return v.replace(t,"")}class tt extends k.Component{monacoDiv=null;editor=null;monaco=window.monaco;get monacoTS(){var t,e;return(e=(t=this.monaco)==null?void 0:t.languages)==null?void 0:e.typescript}insert="";originalCode;runningInstancesStr;monacoCounter=0;location;breakpoints;lastSearch="";typings={};decorations=[];datapointProviderDisposable=null;inlineProviderDisposable=null;stateHoverDisposable=null;showStateValueDisposable=null;cronHoverDisposable=null;codeLensDisposable=null;inlineChatWidgetInstance=null;inlineDiffInstance=null;inlineDiffCssInjected=!1;triggerPrettier;contentChangeDisposable=null;mouseDownDisposable=null;constructor(t){super(t),this.state={name:"current",isDark:t.isDark||!1,language:t.language||"javascript",readOnly:t.readOnly||!1,alive:!0,check:!1,searchText:this.props.searchText||"",typingsLoaded:!1,showError:null},this.triggerPrettier=t.triggerPrettier,this.runningInstancesStr=JSON.stringify(this.props.runningInstances),this.originalCode=t.code||"",this.monacoDiv=k.createRef()}waitForMonaco(t){var i,o,n,r;let e=!!((o=(i=this.monacoTS)==null?void 0:i.typescriptDefaults)!=null&&o.getCompilerOptions);if(!e||!this.props.runningInstances){if(this.monaco=window.monaco,e=!!((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.getCompilerOptions),this.monacoCounter++,!e&&this.monacoCounter<20){console.log("wait for monaco loaded"),setTimeout(()=>this.waitForMonaco(t),200);return}this.monacoCounter>=20&&console.error("Cannot load monaco!")}else t&&t()}loadTypings(t){if(!this.editor)return;t||=this.props.runningInstances;const e=t&&Object.keys(t).find(i=>t==null?void 0:t[i]);e&&this.props.socket.sendTo(e.replace("system.adapter.",""),"loadTypings",null).then(i=>{this.setState({alive:!0,check:!0,typingsLoaded:!0}),this.setTypeCheck(!0),i.typings?(this.typings=i.typings,this.setEditorTypings(this.state.name)):console.error(`failed to load typings: ${i.error}`)})}componentDidMount(){var i,o,n,r,s,u,c,d;this.undo,this.redo,this.showInlineDiff,this.getEditorSelection,this.getEditorContent,this.getCursorPosition,this.highlightLineRange,this.goToLine,this.replaceSelection,this.getDiagnostics,this.getDocumentSymbols;let t=!!((o=(i=this.monacoTS)==null?void 0:i.typescriptDefaults)!=null&&o.getCompilerOptions);if((!t||!this.props.runningInstances)&&(this.monaco=window.monaco,t=!!((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.getCompilerOptions),!t)){console.log("wait for monaco loaded..."),this.waitForMonaco(()=>this.componentDidMount());return}if(!this.editor&&t&&this.monaco){console.log("Init editor"),(u=(s=this.props).onRegisterSelect)==null||u.call(s,()=>{var a;if(this.editor){const h=this.editor.getSelection();if(h)return(a=this.editor.getModel())==null?void 0:a.getValueInRange(h)}});const l=this.monacoTS.typescriptDefaults.getCompilerOptions();l.allowJs=!0,l.checkJs=this.props.checkJs!==!1,l.noLib=!0,l.lib=[],l.useUnknownInCatchVariables=!1,l.moduleResolution=this.monacoTS.ModuleResolutionKind.NodeJs,l.target=this.monacoTS.ScriptTarget.ESNext,l.module=this.monacoTS.ModuleKind.ESNext,l.allowNonTsExtensions=!0,this.monacoTS.typescriptDefaults.setCompilerOptions(l),this.setTypeCheck(!1),(c=this.monacoDiv)!=null&&c.current&&(this.editor=this.monaco.editor.create((d=this.monacoDiv)==null?void 0:d.current,{lineNumbers:"on",scrollBeyondLastLine:!1,automaticLayout:!0,glyphMargin:!!this.props.breakpoints,colorDecorators:!0,hover:{enabled:!0,delay:200,sticky:!0},fixedOverflowWidgets:!0}),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()),this.monaco&&!this.datapointProviderDisposable&&g(async()=>{const{registerDatapointProvider:a}=await import("./AiDatapointProvider-B0i3I5Fm.js");return{registerDatapointProvider:a}},[],import.meta.url).then(({registerDatapointProvider:a})=>{this.monaco&&(this.datapointProviderDisposable=a(this.monaco,this.props.socket))}).catch(()=>{}),this.monaco&&!this.stateHoverDisposable&&g(async()=>{const{registerStateHoverProvider:a,registerShowStateValueAction:h}=await import("./stateHoverProvider-BMnu2kWx.js");return{registerStateHoverProvider:a,registerShowStateValueAction:h}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url).then(({registerStateHoverProvider:a,registerShowStateValueAction:h})=>{this.monaco&&(this.stateHoverDisposable=a(this.monaco,this.props.socket)),this.monaco&&this.editor&&!this.showStateValueDisposable&&(this.showStateValueDisposable=h(this.editor,this.monaco,p.I18n.t("Show ioBroker state value")))}).catch(()=>{}),this.monaco&&!this.cronHoverDisposable&&g(async()=>{const{registerCronHoverProvider:a}=await import("./cronHoverProvider-Bg0Vz-1E.js");return{registerCronHoverProvider:a}},__vite__mapDeps([15,1]),import.meta.url).then(({registerCronHoverProvider:a})=>{this.monaco&&(this.cronHoverDisposable=a(this.monaco))}).catch(()=>{}),this.props.aiCompletionsEnabled&&this.monaco&&!this.inlineProviderDisposable&&g(async()=>{const{registerAiInlineProvider:a}=await import("./AiInlineProvider-DkgjVSFQ.js");return{registerAiInlineProvider:a}},[],import.meta.url).then(({registerAiInlineProvider:a})=>{this.monaco&&(this.inlineProviderDisposable=a(this.monaco,this.props.socket,this.props.runningInstances))}).catch(()=>{}),this.loadTypings(),this.props.onForceSave&&this.editor.addCommand(this.monaco.KeyMod.CtrlCmd|this.monaco.KeyCode.KeyS,()=>this.props.onForceSave&&this.props.onForceSave()),this.registerAiActions(),this.monaco&&this.editor&&this.props.onAiAction&&!this.codeLensDisposable&&g(async()=>{const{registerAiCodeLensProvider:a}=await import("./index-AD-ewMW2.js").then(h=>h.p);return{registerAiCodeLensProvider:a}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,1,12,13,14]),import.meta.url).then(({registerAiCodeLensProvider:a})=>{this.monaco&&this.editor&&this.props.onAiAction&&(this.codeLensDisposable=a(this.monaco,this.editor,(h,y,f,b,D)=>{var L,w,I;const C=(L=this.editor)==null?void 0:L.getModel(),E=C?C.getLineMaxColumn(Math.min(D,C.getLineCount())):1;(I=(w=this.props).onAiAction)==null||I.call(w,{action:h,code:y,rangeLabel:f,range:{startLine:b,startColumn:1,endLine:D,endColumn:E},kind:"codelens"})}))}).catch(()=>{}),setTimeout(()=>{this.highlightText(this.state.searchText),this.location=this.props.location||void 0,this.breakpoints=this.props.breakpoints,this.showDecorators()}))}const e={selectOnLineNumbers:!0,scrollBeyondLastLine:!1,automaticLayout:!0,readOnly:this.state.readOnly,language:this.state.language,isDark:this.state.isDark};this.setEditorOptions(e),this.editor&&(this.editor.focus(),this.editor.setValue(this.originalCode),this.props.onToggleBreakpoint&&(this.mouseDownDisposable=this.editor.onMouseDown(l=>{var h;const a=l.target;this.props.onToggleBreakpoint&&((h=a.detail)==null?void 0:h.glyphMarginLeft)!==void 0&&a.position&&this.props.onToggleBreakpoint(a.position.lineNumber-1)})))}setEditorOptions(t){var e;t&&(t.language&&this.setEditorLanguage(t.language),this.editor&&(t.readOnly!==void 0&&this.editor.updateOptions({readOnly:t.readOnly}),t.lineWrap!==void 0&&this.editor.updateOptions({wordWrap:t.lineWrap?"on":"off"})),t.typeCheck!==void 0&&this.setTypeCheck(t.typeCheck),t.isDark!==void 0&&((e=this.monaco)==null||e.editor.setTheme(t.isDark?"vs-dark":"vs")))}componentWillUnmount(){var t,e,i,o,n,r,s,u,c,d,l;(t=this.contentChangeDisposable)==null||t.dispose(),this.contentChangeDisposable=null,(e=this.mouseDownDisposable)==null||e.dispose(),this.mouseDownDisposable=null,(i=this.datapointProviderDisposable)==null||i.dispose(),this.datapointProviderDisposable=null,g(async()=>{const{clearDatapointCache:a}=await import("./AiDatapointProvider-B0i3I5Fm.js");return{clearDatapointCache:a}},[],import.meta.url).then(({clearDatapointCache:a})=>a()).catch(()=>{}),(o=this.inlineProviderDisposable)==null||o.dispose(),this.inlineProviderDisposable=null,(n=this.stateHoverDisposable)==null||n.dispose(),this.stateHoverDisposable=null,(r=this.showStateValueDisposable)==null||r.dispose(),this.showStateValueDisposable=null,g(async()=>{const{clearStateHoverCache:a}=await import("./stateHoverProvider-BMnu2kWx.js");return{clearStateHoverCache:a}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url).then(({clearStateHoverCache:a})=>a()).catch(()=>{}),(s=this.cronHoverDisposable)==null||s.dispose(),this.cronHoverDisposable=null,(u=this.codeLensDisposable)==null||u.dispose(),this.codeLensDisposable=null,(c=this.inlineChatWidgetInstance)==null||c.dispose(),this.inlineChatWidgetInstance=null,this.hideInlineDiff(),this.editor&&((l=(d=this.props).onRegisterSelect)==null||l.call(d,null),this.editor.dispose(),this.editor=null)}async doPrettier(){var i,o,n,r;const t=this.props.runningInstances&&Object.keys(this.props.runningInstances).find(s=>{var u;return(u=this.props.runningInstances)==null?void 0:u[s]});if(!t){window.alert(p.I18n.t("No script adapter instance found to format the code"));return}const e=await this.props.socket.sendTo(t.replace("system.adapter.",""),"prettier",{code:(i=this.editor)==null?void 0:i.getValue(),type:this.state.language});e.error?this.setState({showError:{title:p.I18n.t("Error formatting code"),message:W(e.error)}}):e.code&&((o=this.editor)==null||o.setValue(e.code),(r=(n=this.props).onChange)==null||r.call(n,e.code),this.showDecorators())}setEditorLanguage(t){var i,o;if(!this.editor)return;const e=this.editor.getModel();if(e){const n=e.getValue(),r=e.uri.path,s=typeof r=="string"&&r.includes(".")?r.substring(0,r.lastIndexOf(".")):"index",u=t==="javascript"?"js":t==="typescript"?"ts":t;e.dispose();const c=t==="javascript"||t==="typescript"?"typescript":t,d=(i=this.monaco)==null?void 0:i.editor.createModel(n,c,this.monaco.Uri.from({scheme:window.location.protocol.replace(":",""),path:`${s}${P++}.${u}`}));d&&(this.editor.setModel(d),(o=this.contentChangeDisposable)==null||o.dispose(),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()))}}setTypeCheck(t){var i,o;const e={noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive};(i=this.monacoTS)==null||i.typescriptDefaults.setDiagnosticsOptions(e),(o=this.monacoTS)==null||o.javascriptDefaults.setDiagnosticsOptions({noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive})}setEditorTypings(t=""){var n,r,s,u;const e=K(t),i=`${t}.d.ts`,o=[];for(const c of Object.keys(this.typings))e&&(c==="global.d.ts"||c.startsWith("script.js.global")&&c!==i)||o.push({filePath:c,content:this.typings[c]});if((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.setExtraLibs)this.monacoTS.typescriptDefaults.setExtraLibs(o);else if((u=(s=this.monacoTS)==null?void 0:s.typescriptDefaults)!=null&&u.addExtraLib){const c=this.monacoTS.typescriptDefaults.getExtraLibs();o.forEach(d=>{!c[d.filePath]&&this.monaco&&this.monacoTS.typescriptDefaults.addExtraLib(d.content,d.filePath)})}}undo(){var t;(t=this.editor)==null||t.trigger("toolbar","undo",null)}redo(){var t;(t=this.editor)==null||t.trigger("toolbar","redo",null)}insertTextIntoEditor(t){if(!this.editor||!this.monaco)return;const e=this.editor.getSelection();if(e){const i=new this.monaco.Range(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);this.editor.executeEdits("",[{range:i,text:t,forceMoveMarkers:!0}])}this.editor.focus()}highlightText(t){var o;if(!this.editor||!this.monaco)return 0;const e=t?(o=this.editor.getModel())==null?void 0:o.findMatches(t,!0,!1,!1,null,!0):void 0;if(e!=null&&e.length)return e.forEach(n=>{var r;return(r=this.editor)==null?void 0:r.setSelection(n.range)}),this.editor.revealLine(e[0].range.startLineNumber),e.length;const i=this.editor.getPosition();if(i){const n=i.lineNumber,r=i.column;this.editor.setSelection(new this.monaco.Range(n,r,n,r))}return 0}showInlineDiff(t){if(!this.editor||!this.monaco)return;const e=this.editor,i=this.monaco;this.hideInlineDiff(),g(async()=>{const{InlineDiffController:o,INLINE_DIFF_CSS:n}=await import("./inlineDiffController-DBLpPOe2.js");return{InlineDiffController:o,INLINE_DIFF_CSS:n}},__vite__mapDeps([16,1,17]),import.meta.url).then(({InlineDiffController:o,INLINE_DIFF_CSS:n})=>{if(!this.inlineDiffCssInjected){const s=document.createElement("style");s.textContent=n,s.setAttribute("data-iob-aichat","inline-diff"),document.head.appendChild(s),this.inlineDiffCssInjected=!0}const r=new o(e,i,{range:t.range,originalText:t.originalText,modifiedText:t.modifiedText,onAccepted:()=>{var s;this.inlineDiffInstance=null,(s=t.onAccepted)==null||s.call(t)},onRejected:()=>{var s;this.inlineDiffInstance=null,(s=t.onRejected)==null||s.call(t)}});this.inlineDiffInstance=r,r.show()}).catch(()=>{})}hideInlineDiff(){if(this.inlineDiffInstance){try{this.inlineDiffInstance.dispose()}catch{}this.inlineDiffInstance=null}}showInlineChatWidget(){if(!this.editor||!this.monaco||!this.props.onInlineAsk)return;if(this.inlineChatWidgetInstance){this.inlineChatWidgetInstance.show();return}const t=this.editor,e=this.monaco,i=this.props.onInlineAsk,o=this.props.onAiAction;g(async()=>{const{InlineChatWidget:n}=await import("./inlineChatWidget-Cu6rb4Ar.js");return{InlineChatWidget:n}},__vite__mapDeps([18,1,17]),import.meta.url).then(({InlineChatWidget:n})=>{const r=new n(t,e,{onSubmit:async s=>i({question:s.question,selectedCode:s.selectedCode}),onEscalateToChat:s=>{o&&o({action:"ask",code:s.selectedCode,question:s.question,rangeLabel:s.range?`lines ${s.range.startLineNumber}-${s.range.endLineNumber}`:"whole file"})}});this.inlineChatWidgetInstance=r,r.show()}).catch(()=>{})}registerAiActions(){if(!this.editor||!this.monaco||!this.props.onAiAction)return;const t=this.monaco,e=(o,n={})=>{if(!this.editor||!this.props.onAiAction)return;const r=this.editor.getModel();if(!r)return;const s=this.editor.getSelection(),u=s&&!s.isEmpty();let c,d,l,a="selection";if(u)c=r.getValueInRange(s),d=s.startLineNumber===s.endLineNumber?`line ${s.startLineNumber}`:`lines ${s.startLineNumber}-${s.endLineNumber}`,l={startLine:s.startLineNumber,startColumn:s.startColumn,endLine:s.endLineNumber,endColumn:s.endColumn},a="selection";else{const h=this.editor.getPosition();let y=null;if(h)try{y=V(r.getValue(),h.lineNumber)}catch{}if(y){const f=y.startLine,b=y.endLine,D=r.getLineMaxColumn(b),C=new t.Range(f,1,b,D);c=r.getValueInRange(C),d=f===b?`line ${f}`:`lines ${f}-${b}`,l={startLine:f,startColumn:1,endLine:b,endColumn:D},a="codelens"}else c=r.getValue(),d="whole file",a="none"}this.props.onAiAction({action:o,code:c,rangeLabel:d,range:l,kind:a,...n})},i=[{id:"iobroker.ai.inline",label:`🤖 ${p.I18n.t("AI: Inline chat…")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyI],order:1,run:()=>{if(this.props.onInlineAsk)this.showInlineChatWidget();else{const o=window.prompt(p.I18n.t("Ask the AI about the selected code:"));o&&o.trim()&&e("ask",{question:o.trim()})}}},{id:"iobroker.ai.explain",label:`💡 ${p.I18n.t("AI: Explain")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyE],order:2,run:()=>e("explain")},{id:"iobroker.ai.refactor",label:`🔧 ${p.I18n.t("AI: Refactor")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyR],order:3,run:()=>e("refactor")},{id:"iobroker.ai.comment",label:`💬 ${p.I18n.t("AI: Add comments")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyC],order:4,run:()=>e("comment")},{id:"iobroker.ai.fix",label:`🛠️ ${p.I18n.t("AI: Fix problem")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyF],order:5,run:()=>{var n,r;let o;try{const s=(n=this.editor)==null?void 0:n.getModel(),u=(r=this.editor)==null?void 0:r.getPosition();if(s&&u){const d=t.editor.getModelMarkers({resource:s.uri}).find(l=>u.lineNumber>=l.startLineNumber&&u.lineNumber<=l.endLineNumber);d&&(o=d.message)}}catch{}e("fix",{diagnostic:o})}},{id:"iobroker.ai.tests",label:`✅ ${p.I18n.t("AI: Suggest tests")}`,order:6,run:()=>e("tests")}];for(const o of i)try{this.editor.addAction({id:o.id,label:o.label,contextMenuGroupId:"aichat",contextMenuOrder:o.order,keybindings:o.keybindings,run:()=>o.run()})}catch{}}getEditorSelection(){if(!this.editor)return null;const t=this.editor.getSelection();if(!t||t.isEmpty())return null;const e=this.editor.getModel();return e?{text:e.getValueInRange(t),range:{startLine:t.startLineNumber,startColumn:t.startColumn,endLine:t.endLineNumber,endColumn:t.endColumn}}:null}getEditorContent(){var t,e;return((e=(t=this.editor)==null?void 0:t.getModel())==null?void 0:e.getValue())??""}getCursorPosition(){var e;const t=(e=this.editor)==null?void 0:e.getPosition();return t?{line:t.lineNumber,column:t.column}:null}highlightLineRange(t,e){if(!this.editor||!this.monaco)return!1;const i=this.editor.getModel();if(!i)return!1;const o=i.getLineCount(),n=Math.max(1,Math.min(t,o)),r=Math.max(n,Math.min(e,o)),s=i.getLineMaxColumn(r);return this.editor.setSelection(new this.monaco.Range(n,1,r,s)),this.editor.revealLineInCenter(n),!0}goToLine(t,e=1){if(!this.editor||!this.monaco)return!1;const i=this.editor.getModel();if(!i)return!1;const o=i.getLineCount(),n=Math.max(1,Math.min(t,o));return this.editor.setPosition({lineNumber:n,column:e}),this.editor.revealLineInCenter(n),this.editor.focus(),!0}replaceSelection(t){if(!this.editor||!this.monaco)return!1;const e=this.editor.getSelection();if(!e)return!1;const i=new this.monaco.Range(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);return this.editor.executeEdits("",[{range:i,text:t,forceMoveMarkers:!0}]),this.editor.focus(),!0}getDiagnostics(){if(!this.editor||!this.monaco)return[];const t=this.editor.getModel();if(!t)return[];const e=this.monaco.editor.getModelMarkers({resource:t.uri}),i={8:"error",4:"warning",2:"info",1:"hint"};return e.map(o=>({line:o.startLineNumber,column:o.startColumn,endLine:o.endLineNumber,endColumn:o.endColumn,severity:i[o.severity]||"info",message:o.message,...o.source?{source:o.source}:{}}))}async getDocumentSymbols(){var i;if(!this.editor||!this.monaco)return[];const t=this.editor.getModel();if(!t)return[];const e=[];try{const o=this.monaco.languages,n=(i=o.getDocumentSymbolProviders)==null?void 0:i.call(o,t);if(n!=null&&n.length){const r={0:"file",1:"module",2:"namespace",3:"package",4:"class",5:"method",6:"property",7:"field",8:"constructor",9:"enum",10:"interface",11:"function",12:"variable",13:"constant",14:"string",15:"number",16:"boolean",17:"array",18:"object",19:"key",20:"null",21:"enum-member",22:"struct",23:"event",24:"operator",25:"type-parameter"};for(const s of n){const u={isCancellationRequested:!1},c=await s.provideDocumentSymbols(t,u);if(!c)continue;const d=l=>{var a;for(const h of l)e.push({name:h.name,kind:r[h.kind]||String(h.kind),line:h.range.startLineNumber,endLine:h.range.endLineNumber,...h.detail?{detail:h.detail}:{}}),(a=h.children)!=null&&a.length&&d(h.children)};if(d(c),e.length)break}}}catch{}if(e.length===0){const n=t.getValue().split(` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./stateHoverProvider-wXU4aBfD.js","./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js","./index-Blu2oA9H.js","./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js","./preload-helper-BDBacUwf.js","./createSvgIcon-DYs_tNrE.js","./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js","./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js","./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js","./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js","./index-wHNMOf-c.js","./inheritsLoose-CIXm_zPk.js","./index-BTsjunTt.css","./cronHoverProvider-Bg0Vz-1E.js","./inlineDiffController-DBLpPOe2.js","./applyCodeEdit-BdRnbz2g.js","./inlineChatWidget-Cu6rb4Ar.js"])))=>i.map(i=>d[i]); +import{_ as g}from"./preload-helper-BDBacUwf.js";import{j as m}from"./createSvgIcon-DYs_tNrE.js";import{a as k}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as T,a as N,b as M,h as A,i as S,Q as O,o as x,$ as j}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{n as _,Z as R}from"./index-wHNMOf-c.js";import{_ as p}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{h as V}from"./index-Blu2oA9H.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";function K(v){return/^script\.js\.global\./.test(v)}let P=0;function W(v){const t=/\x1b\[[0-9;]*m/g;return v.replace(t,"")}class tt extends k.Component{monacoDiv=null;editor=null;monaco=window.monaco;get monacoTS(){var t,e;return(e=(t=this.monaco)==null?void 0:t.languages)==null?void 0:e.typescript}insert="";originalCode;runningInstancesStr;monacoCounter=0;location;breakpoints;lastSearch="";typings={};decorations=[];datapointProviderDisposable=null;inlineProviderDisposable=null;stateHoverDisposable=null;showStateValueDisposable=null;cronHoverDisposable=null;codeLensDisposable=null;inlineChatWidgetInstance=null;inlineDiffInstance=null;inlineDiffCssInjected=!1;triggerPrettier;contentChangeDisposable=null;mouseDownDisposable=null;constructor(t){super(t),this.state={name:"current",isDark:t.isDark||!1,language:t.language||"javascript",readOnly:t.readOnly||!1,alive:!0,check:!1,searchText:this.props.searchText||"",typingsLoaded:!1,showError:null},this.triggerPrettier=t.triggerPrettier,this.runningInstancesStr=JSON.stringify(this.props.runningInstances),this.originalCode=t.code||"",this.monacoDiv=k.createRef()}waitForMonaco(t){var i,o,n,r;let e=!!((o=(i=this.monacoTS)==null?void 0:i.typescriptDefaults)!=null&&o.getCompilerOptions);if(!e||!this.props.runningInstances){if(this.monaco=window.monaco,e=!!((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.getCompilerOptions),this.monacoCounter++,!e&&this.monacoCounter<20){console.log("wait for monaco loaded"),setTimeout(()=>this.waitForMonaco(t),200);return}this.monacoCounter>=20&&console.error("Cannot load monaco!")}else t&&t()}loadTypings(t){if(!this.editor)return;t||=this.props.runningInstances;const e=t&&Object.keys(t).find(i=>t==null?void 0:t[i]);e&&this.props.socket.sendTo(e.replace("system.adapter.",""),"loadTypings",null).then(i=>{this.setState({alive:!0,check:!0,typingsLoaded:!0}),this.setTypeCheck(!0),i.typings?(this.typings=i.typings,this.setEditorTypings(this.state.name)):console.error(`failed to load typings: ${i.error}`)})}componentDidMount(){var i,o,n,r,s,u,c,d;this.undo,this.redo,this.showInlineDiff,this.getEditorSelection,this.getEditorContent,this.getCursorPosition,this.highlightLineRange,this.goToLine,this.replaceSelection,this.getDiagnostics,this.getDocumentSymbols;let t=!!((o=(i=this.monacoTS)==null?void 0:i.typescriptDefaults)!=null&&o.getCompilerOptions);if((!t||!this.props.runningInstances)&&(this.monaco=window.monaco,t=!!((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.getCompilerOptions),!t)){console.log("wait for monaco loaded..."),this.waitForMonaco(()=>this.componentDidMount());return}if(!this.editor&&t&&this.monaco){console.log("Init editor"),(u=(s=this.props).onRegisterSelect)==null||u.call(s,()=>{var a;if(this.editor){const h=this.editor.getSelection();if(h)return(a=this.editor.getModel())==null?void 0:a.getValueInRange(h)}});const l=this.monacoTS.typescriptDefaults.getCompilerOptions();l.allowJs=!0,l.checkJs=this.props.checkJs!==!1,l.noLib=!0,l.lib=[],l.useUnknownInCatchVariables=!1,l.moduleResolution=this.monacoTS.ModuleResolutionKind.NodeJs,l.target=this.monacoTS.ScriptTarget.ESNext,l.module=this.monacoTS.ModuleKind.ESNext,l.allowNonTsExtensions=!0,this.monacoTS.typescriptDefaults.setCompilerOptions(l),this.setTypeCheck(!1),(c=this.monacoDiv)!=null&&c.current&&(this.editor=this.monaco.editor.create((d=this.monacoDiv)==null?void 0:d.current,{lineNumbers:"on",scrollBeyondLastLine:!1,automaticLayout:!0,glyphMargin:!!this.props.breakpoints,colorDecorators:!0,hover:{enabled:!0,delay:200,sticky:!0},fixedOverflowWidgets:!0}),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()),this.monaco&&!this.datapointProviderDisposable&&g(async()=>{const{registerDatapointProvider:a}=await import("./AiDatapointProvider-B0i3I5Fm.js");return{registerDatapointProvider:a}},[],import.meta.url).then(({registerDatapointProvider:a})=>{this.monaco&&(this.datapointProviderDisposable=a(this.monaco,this.props.socket))}).catch(()=>{}),this.monaco&&!this.stateHoverDisposable&&g(async()=>{const{registerStateHoverProvider:a,registerShowStateValueAction:h}=await import("./stateHoverProvider-wXU4aBfD.js");return{registerStateHoverProvider:a,registerShowStateValueAction:h}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url).then(({registerStateHoverProvider:a,registerShowStateValueAction:h})=>{this.monaco&&(this.stateHoverDisposable=a(this.monaco,this.props.socket)),this.monaco&&this.editor&&!this.showStateValueDisposable&&(this.showStateValueDisposable=h(this.editor,this.monaco,p.I18n.t("Show ioBroker state value")))}).catch(()=>{}),this.monaco&&!this.cronHoverDisposable&&g(async()=>{const{registerCronHoverProvider:a}=await import("./cronHoverProvider-Bg0Vz-1E.js");return{registerCronHoverProvider:a}},__vite__mapDeps([15,1]),import.meta.url).then(({registerCronHoverProvider:a})=>{this.monaco&&(this.cronHoverDisposable=a(this.monaco))}).catch(()=>{}),this.props.aiCompletionsEnabled&&this.monaco&&!this.inlineProviderDisposable&&g(async()=>{const{registerAiInlineProvider:a}=await import("./AiInlineProvider-DkgjVSFQ.js");return{registerAiInlineProvider:a}},[],import.meta.url).then(({registerAiInlineProvider:a})=>{this.monaco&&(this.inlineProviderDisposable=a(this.monaco,this.props.socket,this.props.runningInstances))}).catch(()=>{}),this.loadTypings(),this.props.onForceSave&&this.editor.addCommand(this.monaco.KeyMod.CtrlCmd|this.monaco.KeyCode.KeyS,()=>this.props.onForceSave&&this.props.onForceSave()),this.registerAiActions(),this.monaco&&this.editor&&this.props.onAiAction&&!this.codeLensDisposable&&g(async()=>{const{registerAiCodeLensProvider:a}=await import("./index-Blu2oA9H.js").then(h=>h.p);return{registerAiCodeLensProvider:a}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,1,12,13,14]),import.meta.url).then(({registerAiCodeLensProvider:a})=>{this.monaco&&this.editor&&this.props.onAiAction&&(this.codeLensDisposable=a(this.monaco,this.editor,(h,y,f,b,D)=>{var L,w,I;const C=(L=this.editor)==null?void 0:L.getModel(),E=C?C.getLineMaxColumn(Math.min(D,C.getLineCount())):1;(I=(w=this.props).onAiAction)==null||I.call(w,{action:h,code:y,rangeLabel:f,range:{startLine:b,startColumn:1,endLine:D,endColumn:E},kind:"codelens"})}))}).catch(()=>{}),setTimeout(()=>{this.highlightText(this.state.searchText),this.location=this.props.location||void 0,this.breakpoints=this.props.breakpoints,this.showDecorators()}))}const e={selectOnLineNumbers:!0,scrollBeyondLastLine:!1,automaticLayout:!0,readOnly:this.state.readOnly,language:this.state.language,isDark:this.state.isDark};this.setEditorOptions(e),this.editor&&(this.editor.focus(),this.editor.setValue(this.originalCode),this.props.onToggleBreakpoint&&(this.mouseDownDisposable=this.editor.onMouseDown(l=>{var h;const a=l.target;this.props.onToggleBreakpoint&&((h=a.detail)==null?void 0:h.glyphMarginLeft)!==void 0&&a.position&&this.props.onToggleBreakpoint(a.position.lineNumber-1)})))}setEditorOptions(t){var e;t&&(t.language&&this.setEditorLanguage(t.language),this.editor&&(t.readOnly!==void 0&&this.editor.updateOptions({readOnly:t.readOnly}),t.lineWrap!==void 0&&this.editor.updateOptions({wordWrap:t.lineWrap?"on":"off"})),t.typeCheck!==void 0&&this.setTypeCheck(t.typeCheck),t.isDark!==void 0&&((e=this.monaco)==null||e.editor.setTheme(t.isDark?"vs-dark":"vs")))}componentWillUnmount(){var t,e,i,o,n,r,s,u,c,d,l;(t=this.contentChangeDisposable)==null||t.dispose(),this.contentChangeDisposable=null,(e=this.mouseDownDisposable)==null||e.dispose(),this.mouseDownDisposable=null,(i=this.datapointProviderDisposable)==null||i.dispose(),this.datapointProviderDisposable=null,g(async()=>{const{clearDatapointCache:a}=await import("./AiDatapointProvider-B0i3I5Fm.js");return{clearDatapointCache:a}},[],import.meta.url).then(({clearDatapointCache:a})=>a()).catch(()=>{}),(o=this.inlineProviderDisposable)==null||o.dispose(),this.inlineProviderDisposable=null,(n=this.stateHoverDisposable)==null||n.dispose(),this.stateHoverDisposable=null,(r=this.showStateValueDisposable)==null||r.dispose(),this.showStateValueDisposable=null,g(async()=>{const{clearStateHoverCache:a}=await import("./stateHoverProvider-wXU4aBfD.js");return{clearStateHoverCache:a}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url).then(({clearStateHoverCache:a})=>a()).catch(()=>{}),(s=this.cronHoverDisposable)==null||s.dispose(),this.cronHoverDisposable=null,(u=this.codeLensDisposable)==null||u.dispose(),this.codeLensDisposable=null,(c=this.inlineChatWidgetInstance)==null||c.dispose(),this.inlineChatWidgetInstance=null,this.hideInlineDiff(),this.editor&&((l=(d=this.props).onRegisterSelect)==null||l.call(d,null),this.editor.dispose(),this.editor=null)}async doPrettier(){var i,o,n,r;const t=this.props.runningInstances&&Object.keys(this.props.runningInstances).find(s=>{var u;return(u=this.props.runningInstances)==null?void 0:u[s]});if(!t){window.alert(p.I18n.t("No script adapter instance found to format the code"));return}const e=await this.props.socket.sendTo(t.replace("system.adapter.",""),"prettier",{code:(i=this.editor)==null?void 0:i.getValue(),type:this.state.language});e.error?this.setState({showError:{title:p.I18n.t("Error formatting code"),message:W(e.error)}}):e.code&&((o=this.editor)==null||o.setValue(e.code),(r=(n=this.props).onChange)==null||r.call(n,e.code),this.showDecorators())}setEditorLanguage(t){var i,o;if(!this.editor)return;const e=this.editor.getModel();if(e){const n=e.getValue(),r=e.uri.path,s=typeof r=="string"&&r.includes(".")?r.substring(0,r.lastIndexOf(".")):"index",u=t==="javascript"?"js":t==="typescript"?"ts":t;e.dispose();const c=t==="javascript"||t==="typescript"?"typescript":t,d=(i=this.monaco)==null?void 0:i.editor.createModel(n,c,this.monaco.Uri.from({scheme:window.location.protocol.replace(":",""),path:`${s}${P++}.${u}`}));d&&(this.editor.setModel(d),(o=this.contentChangeDisposable)==null||o.dispose(),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()))}}setTypeCheck(t){var i,o;const e={noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive};(i=this.monacoTS)==null||i.typescriptDefaults.setDiagnosticsOptions(e),(o=this.monacoTS)==null||o.javascriptDefaults.setDiagnosticsOptions({noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive})}setEditorTypings(t=""){var n,r,s,u;const e=K(t),i=`${t}.d.ts`,o=[];for(const c of Object.keys(this.typings))e&&(c==="global.d.ts"||c.startsWith("script.js.global")&&c!==i)||o.push({filePath:c,content:this.typings[c]});if((r=(n=this.monacoTS)==null?void 0:n.typescriptDefaults)!=null&&r.setExtraLibs)this.monacoTS.typescriptDefaults.setExtraLibs(o);else if((u=(s=this.monacoTS)==null?void 0:s.typescriptDefaults)!=null&&u.addExtraLib){const c=this.monacoTS.typescriptDefaults.getExtraLibs();o.forEach(d=>{!c[d.filePath]&&this.monaco&&this.monacoTS.typescriptDefaults.addExtraLib(d.content,d.filePath)})}}undo(){var t;(t=this.editor)==null||t.trigger("toolbar","undo",null)}redo(){var t;(t=this.editor)==null||t.trigger("toolbar","redo",null)}insertTextIntoEditor(t){if(!this.editor||!this.monaco)return;const e=this.editor.getSelection();if(e){const i=new this.monaco.Range(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);this.editor.executeEdits("",[{range:i,text:t,forceMoveMarkers:!0}])}this.editor.focus()}highlightText(t){var o;if(!this.editor||!this.monaco)return 0;const e=t?(o=this.editor.getModel())==null?void 0:o.findMatches(t,!0,!1,!1,null,!0):void 0;if(e!=null&&e.length)return e.forEach(n=>{var r;return(r=this.editor)==null?void 0:r.setSelection(n.range)}),this.editor.revealLine(e[0].range.startLineNumber),e.length;const i=this.editor.getPosition();if(i){const n=i.lineNumber,r=i.column;this.editor.setSelection(new this.monaco.Range(n,r,n,r))}return 0}showInlineDiff(t){if(!this.editor||!this.monaco)return;const e=this.editor,i=this.monaco;this.hideInlineDiff(),g(async()=>{const{InlineDiffController:o,INLINE_DIFF_CSS:n}=await import("./inlineDiffController-DBLpPOe2.js");return{InlineDiffController:o,INLINE_DIFF_CSS:n}},__vite__mapDeps([16,1,17]),import.meta.url).then(({InlineDiffController:o,INLINE_DIFF_CSS:n})=>{if(!this.inlineDiffCssInjected){const s=document.createElement("style");s.textContent=n,s.setAttribute("data-iob-aichat","inline-diff"),document.head.appendChild(s),this.inlineDiffCssInjected=!0}const r=new o(e,i,{range:t.range,originalText:t.originalText,modifiedText:t.modifiedText,onAccepted:()=>{var s;this.inlineDiffInstance=null,(s=t.onAccepted)==null||s.call(t)},onRejected:()=>{var s;this.inlineDiffInstance=null,(s=t.onRejected)==null||s.call(t)}});this.inlineDiffInstance=r,r.show()}).catch(()=>{})}hideInlineDiff(){if(this.inlineDiffInstance){try{this.inlineDiffInstance.dispose()}catch{}this.inlineDiffInstance=null}}showInlineChatWidget(){if(!this.editor||!this.monaco||!this.props.onInlineAsk)return;if(this.inlineChatWidgetInstance){this.inlineChatWidgetInstance.show();return}const t=this.editor,e=this.monaco,i=this.props.onInlineAsk,o=this.props.onAiAction;g(async()=>{const{InlineChatWidget:n}=await import("./inlineChatWidget-Cu6rb4Ar.js");return{InlineChatWidget:n}},__vite__mapDeps([18,1,17]),import.meta.url).then(({InlineChatWidget:n})=>{const r=new n(t,e,{onSubmit:async s=>i({question:s.question,selectedCode:s.selectedCode}),onEscalateToChat:s=>{o&&o({action:"ask",code:s.selectedCode,question:s.question,rangeLabel:s.range?`lines ${s.range.startLineNumber}-${s.range.endLineNumber}`:"whole file"})}});this.inlineChatWidgetInstance=r,r.show()}).catch(()=>{})}registerAiActions(){if(!this.editor||!this.monaco||!this.props.onAiAction)return;const t=this.monaco,e=(o,n={})=>{if(!this.editor||!this.props.onAiAction)return;const r=this.editor.getModel();if(!r)return;const s=this.editor.getSelection(),u=s&&!s.isEmpty();let c,d,l,a="selection";if(u)c=r.getValueInRange(s),d=s.startLineNumber===s.endLineNumber?`line ${s.startLineNumber}`:`lines ${s.startLineNumber}-${s.endLineNumber}`,l={startLine:s.startLineNumber,startColumn:s.startColumn,endLine:s.endLineNumber,endColumn:s.endColumn},a="selection";else{const h=this.editor.getPosition();let y=null;if(h)try{y=V(r.getValue(),h.lineNumber)}catch{}if(y){const f=y.startLine,b=y.endLine,D=r.getLineMaxColumn(b),C=new t.Range(f,1,b,D);c=r.getValueInRange(C),d=f===b?`line ${f}`:`lines ${f}-${b}`,l={startLine:f,startColumn:1,endLine:b,endColumn:D},a="codelens"}else c=r.getValue(),d="whole file",a="none"}this.props.onAiAction({action:o,code:c,rangeLabel:d,range:l,kind:a,...n})},i=[{id:"iobroker.ai.inline",label:`🤖 ${p.I18n.t("AI: Inline chat…")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyI],order:1,run:()=>{if(this.props.onInlineAsk)this.showInlineChatWidget();else{const o=window.prompt(p.I18n.t("Ask the AI about the selected code:"));o&&o.trim()&&e("ask",{question:o.trim()})}}},{id:"iobroker.ai.explain",label:`💡 ${p.I18n.t("AI: Explain")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyE],order:2,run:()=>e("explain")},{id:"iobroker.ai.refactor",label:`🔧 ${p.I18n.t("AI: Refactor")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyR],order:3,run:()=>e("refactor")},{id:"iobroker.ai.comment",label:`💬 ${p.I18n.t("AI: Add comments")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyC],order:4,run:()=>e("comment")},{id:"iobroker.ai.fix",label:`🛠️ ${p.I18n.t("AI: Fix problem")}`,keybindings:[t.KeyMod.CtrlCmd|t.KeyMod.Alt|t.KeyCode.KeyF],order:5,run:()=>{var n,r;let o;try{const s=(n=this.editor)==null?void 0:n.getModel(),u=(r=this.editor)==null?void 0:r.getPosition();if(s&&u){const d=t.editor.getModelMarkers({resource:s.uri}).find(l=>u.lineNumber>=l.startLineNumber&&u.lineNumber<=l.endLineNumber);d&&(o=d.message)}}catch{}e("fix",{diagnostic:o})}},{id:"iobroker.ai.tests",label:`✅ ${p.I18n.t("AI: Suggest tests")}`,order:6,run:()=>e("tests")}];for(const o of i)try{this.editor.addAction({id:o.id,label:o.label,contextMenuGroupId:"aichat",contextMenuOrder:o.order,keybindings:o.keybindings,run:()=>o.run()})}catch{}}getEditorSelection(){if(!this.editor)return null;const t=this.editor.getSelection();if(!t||t.isEmpty())return null;const e=this.editor.getModel();return e?{text:e.getValueInRange(t),range:{startLine:t.startLineNumber,startColumn:t.startColumn,endLine:t.endLineNumber,endColumn:t.endColumn}}:null}getEditorContent(){var t,e;return((e=(t=this.editor)==null?void 0:t.getModel())==null?void 0:e.getValue())??""}getCursorPosition(){var e;const t=(e=this.editor)==null?void 0:e.getPosition();return t?{line:t.lineNumber,column:t.column}:null}highlightLineRange(t,e){if(!this.editor||!this.monaco)return!1;const i=this.editor.getModel();if(!i)return!1;const o=i.getLineCount(),n=Math.max(1,Math.min(t,o)),r=Math.max(n,Math.min(e,o)),s=i.getLineMaxColumn(r);return this.editor.setSelection(new this.monaco.Range(n,1,r,s)),this.editor.revealLineInCenter(n),!0}goToLine(t,e=1){if(!this.editor||!this.monaco)return!1;const i=this.editor.getModel();if(!i)return!1;const o=i.getLineCount(),n=Math.max(1,Math.min(t,o));return this.editor.setPosition({lineNumber:n,column:e}),this.editor.revealLineInCenter(n),this.editor.focus(),!0}replaceSelection(t){if(!this.editor||!this.monaco)return!1;const e=this.editor.getSelection();if(!e)return!1;const i=new this.monaco.Range(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);return this.editor.executeEdits("",[{range:i,text:t,forceMoveMarkers:!0}]),this.editor.focus(),!0}getDiagnostics(){if(!this.editor||!this.monaco)return[];const t=this.editor.getModel();if(!t)return[];const e=this.monaco.editor.getModelMarkers({resource:t.uri}),i={8:"error",4:"warning",2:"info",1:"hint"};return e.map(o=>({line:o.startLineNumber,column:o.startColumn,endLine:o.endLineNumber,endColumn:o.endColumn,severity:i[o.severity]||"info",message:o.message,...o.source?{source:o.source}:{}}))}async getDocumentSymbols(){var i;if(!this.editor||!this.monaco)return[];const t=this.editor.getModel();if(!t)return[];const e=[];try{const o=this.monaco.languages,n=(i=o.getDocumentSymbolProviders)==null?void 0:i.call(o,t);if(n!=null&&n.length){const r={0:"file",1:"module",2:"namespace",3:"package",4:"class",5:"method",6:"property",7:"field",8:"constructor",9:"enum",10:"interface",11:"function",12:"variable",13:"constant",14:"string",15:"number",16:"boolean",17:"array",18:"object",19:"key",20:"null",21:"enum-member",22:"struct",23:"event",24:"operator",25:"type-parameter"};for(const s of n){const u={isCancellationRequested:!1},c=await s.provideDocumentSymbols(t,u);if(!c)continue;const d=l=>{var a;for(const h of l)e.push({name:h.name,kind:r[h.kind]||String(h.kind),line:h.range.startLineNumber,endLine:h.range.endLineNumber,...h.detail?{detail:h.detail}:{}}),(a=h.children)!=null&&a.length&&d(h.children)};if(d(c),e.length)break}}}catch{}if(e.length===0){const n=t.getValue().split(` `),r=[{re:/^(?:export\s+)?(?:async\s+)?function\s+(\w+)/,kind:"function"},{re:/^(?:export\s+)?class\s+(\w+)/,kind:"class"},{re:/^(?:export\s+)?(?:const|let|var)\s+(\w+)/,kind:"variable"}];for(let s=0;s{this.monaco&&t.push({range:new this.monaco.Range(i.location.lineNumber+1,0,i.location.lineNumber+1,100),options:{isWholeLine:!0,glyphMarginClassName:this.props.isDark?"monacoBreakPointDark":"monacoBreakPoint"}})}),this.editor){const i=this.editor.getModel();i&&(this.decorations=i.deltaDecorations(this.decorations,t))}}initNewScript(t,e){var i;this.setState({name:t}),this.originalCode=e||"",(i=this.editor)==null||i.setValue(e||""),this.highlightText(this.lastSearch),this.showDecorators(),this.setEditorTypings(t)}scrollToLineIfNeeded(t){if(this.editor){const e=this.editor.getVisibleRanges();(!e||!e[0]||e[0].startLineNumber>t||t>e[0].endLineNumber)&&this.editor.revealLineInCenter(t)}}UNSAFE_componentWillReceiveProps(t){const e={};this.state.name!==t.name&&this.initNewScript(t.name,t.code),JSON.stringify(t.runningInstances)!==this.runningInstancesStr&&(this.runningInstancesStr=JSON.stringify(t.runningInstances),this.state.typingsLoaded||this.loadTypings(t.runningInstances)),this.editor&&!t.changed&&(t.code!==this.originalCode||t.code!==this.editor.getValue())&&(this.originalCode=t.code||"",this.editor.setValue(this.originalCode),this.showDecorators(),this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)),t.searchText!==this.lastSearch&&(this.lastSearch=t.searchText||"",this.highlightText(this.lastSearch)),JSON.stringify(t.location)!==JSON.stringify(this.location)&&JSON.stringify(t.breakpoints)!==JSON.stringify(this.breakpoints)?(this.location=t.location||void 0,this.breakpoints=t.breakpoints,this.showDecorators(),this.editor&&this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)):JSON.stringify(t.breakpoints)!==JSON.stringify(this.breakpoints)?(this.breakpoints=t.breakpoints,this.showDecorators()):JSON.stringify(t.location)!==JSON.stringify(this.location)&&(this.location=t.location||void 0,this.showDecorators(),this.editor&&this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)),this.state.language!==(t.language||"javascript")?(this.setState({language:t.language||"javascript"}),e.language=t.language||"javascript"):this.state.readOnly!==(t.readOnly||!1)?(this.setState({readOnly:t.readOnly||!1}),e.readOnly=t.readOnly):this.state.isDark!==(t.isDark||!1)&&(this.setState({isDark:t.isDark||!1}),e.isDark=t.isDark),this.setEditorOptions(e),t.aiCompletionsEnabled!==this.props.aiCompletionsEnabled&&(t.aiCompletionsEnabled&&this.monaco&&!this.inlineProviderDisposable?g(async()=>{const{registerAiInlineProvider:i}=await import("./AiInlineProvider-DkgjVSFQ.js");return{registerAiInlineProvider:i}},[],import.meta.url).then(({registerAiInlineProvider:i})=>{this.monaco&&(this.inlineProviderDisposable=i(this.monaco,this.props.socket,this.props.runningInstances))}).catch(()=>{}):!t.aiCompletionsEnabled&&this.inlineProviderDisposable&&(this.inlineProviderDisposable.dispose(),this.inlineProviderDisposable=null)),this.insert!==t.insert&&(this.insert=t.insert||"",this.insert&&(console.log(`Insert text: ${this.insert}`),setTimeout(i=>{this.insertTextIntoEditor(i),setTimeout(()=>this.props.onInserted&&this.props.onInserted(),100)},100,this.insert)))}onChange(){var t,e;!this.props.readOnly&&this.editor&&((e=(t=this.props).onChange)==null||e.call(t,this.editor.getValue()))}renderErrorDialog(){return this.state.showError?this.state.showError.full?m.jsxs(T,{open:!0,maxWidth:"md",onClose:()=>this.setState({showError:null}),children:[m.jsx(N,{children:this.state.showError.title||p.I18n.t("Error")}),m.jsx(M,{children:m.jsx("pre",{children:m.jsx("code",{children:this.state.showError.message})})}),m.jsx(A,{children:m.jsxs(S,{variant:"contained",startIcon:m.jsx(_,{}),onClick:()=>this.setState({showError:null}),children:[p.I18n.t("Close")," "]})})]}):m.jsx(O,{open:!0,autoHideDuration:5e3,onClose:()=>this.setState({showError:null}),message:this.state.showError.title,action:m.jsxs(k.Fragment,{children:[m.jsx(S,{color:"secondary",size:"small",onClick:()=>this.setState({showError:{...this.state.showError,full:!0}}),children:p.I18n.t("More")}),m.jsx(x,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({showError:null}),children:m.jsx(_,{fontSize:"small"})})]})}):null}render(){var t;return!((t=this.monacoTS)!=null&&t.typescriptDefaults)||!this.props.runningInstances?(setTimeout(()=>{this.monaco=window.monaco,this.forceUpdate()},200),null):(this.props.triggerPrettier!==this.triggerPrettier&&(this.triggerPrettier=this.props.triggerPrettier,setTimeout(()=>this.doPrettier().catch(e=>console.error("Error formatting code:",e)),50)),m.jsxs("div",{ref:this.monacoDiv,style:{...this.props.style,width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:[this.renderErrorDialog(),!this.state.check&&m.jsx(j,{size:"small",title:p.I18n.t("Check is not active, because javascript adapter is disabled"),style:{bottom:10,right:10,opacity:.5,position:"absolute",zIndex:1,background:"red",color:"white"},color:"secondary",children:m.jsx(R,{})})]}))}}export{tt as default}; diff --git a/admin/assets/index-qzAcc6X1.js b/admin/assets/index-B0Khg-uY.js similarity index 99% rename from admin/assets/index-qzAcc6X1.js rename to admin/assets/index-B0Khg-uY.js index 36ef022bc..c022facd0 100644 --- a/admin/assets/index-qzAcc6X1.js +++ b/admin/assets/index-B0Khg-uY.js @@ -1,4 +1,4 @@ -import{j as M}from"./createSvgIcon-DYs_tNrE.js";import{a as ft}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{m as Rt,z as Bt,g as Ut}from"./index-AD-ewMW2.js";import{z as Xe,o as Te,v as Nt,w as Mt,s as Lt,u as Vt,r as zt,_ as Ht,a as Gt,C as Pt,D as _t,F as Yt,G as wt,H as Qt}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{M as Xt,k as Zt,l as ea,Q as Tt,U as ta,L as aa,n as ra,t as na,v as sa,u as oa,V as ia,W as la,X as ca,Y as ua}from"./index-wHNMOf-c.js";import{_ as we}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import pa from"./ScriptEditorVanillaMonaco-B-wy1I-G.js";import{r as fa}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function da(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";import"./preload-helper-BDBacUwf.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const ba={editorDiv:{height:"100%",width:"100%",overflow:"hidden",position:"relative"}};class ha extends ft.Component{constructor(v){super(v),this.state={lines:(this.props.script||"").split(/\r\n|\n/)}}render(){return M.jsx("div",{style:ba.editorDiv,children:M.jsx(pa,{triggerPrettier:1,name:this.props.scriptName,adapterName:this.props.adapterName,readOnly:!0,code:this.props.script||"",isDark:this.props.themeType==="dark",socket:this.props.socket,runningInstances:this.props.runningInstances,language:"javascript",breakpoints:this.props.breakpoints,location:this.props.paused?this.props.location:null,onToggleBreakpoint:v=>this.props.onToggleBreakpoint(v)},"scriptEditor2")},"scriptEditorDiv2")}}const Dt=34,Ke={logBox:{width:"100%",height:"100%",position:"relative",overflow:"hidden"},logBoxInner:X=>({display:"inline-block",color:X.palette.mode==="dark"?"white":"black",width:`calc(100% - ${Dt}px)`,height:"100%",overflow:"auto",position:"relative",verticalAlign:"top"}),info:X=>({background:X.palette.mode==="dark"?"darkgrey":"lightgrey",color:(X.palette.mode==="dark","black")}),error:X=>({background:"#FF0000",color:X.palette.mode==="dark"?"black":"white"}),warn:X=>({background:"#FF8000",color:X.palette.mode==="dark"?"black":"white"}),debug:X=>({background:"gray",opacity:.8,color:X.palette.mode==="dark"?"black":"white"}),silly:X=>({background:"gray",opacity:.6,color:X.palette.mode==="dark"?"black":"white"}),table:{fontFamily:"monospace",width:"100%"},toolbox:{width:Dt,height:"100%",boxShadow:"2px 0px 4px -1px rgba(0, 0, 0, 0.2), 4px 0px 5px 0px rgba(0, 0, 0, 0.14), 1px 0px 10px 0px rgba(0, 0, 0, 0.12)",display:"inline-block",verticalAlign:"top",overflow:"hidden"},trTime:{width:90},trSeverity:{width:40,fontWeight:"bold"},iconButtons:{width:32,height:32,padding:4}};function ma(X){let v,g=X.getHours();return g<10&&(g=`0${g.toString()}`),v=`${g}:`,g=X.getMinutes(),g<10&&(g=`0${g.toString()}`),v+=`${g}:`,g=X.getSeconds(),g<10&&(g=`0${g.toString()}`),v+=`${g}.`,g=X.getMilliseconds(),g<10?g=`00${g.toString()}`:g<100&&(g=`0${g.toString()}`),v+=g,v}class Ct extends ft.Component{messagesEnd;constructor(v){super(v),this.state={goBottom:!0},this.messagesEnd=ft.createRef()}static generateLine(v){return M.jsxs(Xe,{component:"tr",sx:Ke[v.severity],children:[M.jsx("td",{style:Ke.trTime,children:ma(new Date(v.ts))}),M.jsx("td",{style:Ke.trSeverity,children:v.severity}),M.jsx("td",{children:v.text})]},`tr_${v.ts}_${v.text.substring(v.text.length-10,v.text.length)}`)}renderLogList(v){return v!=null&&v.length?M.jsxs(Xe,{sx:Ke.logBoxInner,children:[M.jsx("table",{style:Ke.table,children:M.jsx("tbody",{children:v.map(g=>Ct.generateLine(g))})},"logTable"),M.jsx("div",{ref:this.messagesEnd,style:{float:"left",clear:"both"}},"logScrollPoint")]},"logList"):M.jsx(Xe,{sx:Ke.logBoxInner,style:{paddingLeft:10},children:we.I18n.t("Log outputs")},"logList")}onCopy(){we.Utils.copyToClipboard(this.props.console.join(` +import{j as M}from"./createSvgIcon-DYs_tNrE.js";import{a as ft}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{m as Rt,z as Bt,g as Ut}from"./index-Blu2oA9H.js";import{z as Xe,o as Te,v as Nt,w as Mt,s as Lt,u as Vt,r as zt,_ as Ht,a as Gt,C as Pt,D as _t,F as Yt,G as wt,H as Qt}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{M as Xt,k as Zt,l as ea,Q as Tt,U as ta,L as aa,n as ra,t as na,v as sa,u as oa,V as ia,W as la,X as ca,Y as ua}from"./index-wHNMOf-c.js";import{_ as we}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import pa from"./ScriptEditorVanillaMonaco-CKnJEdpA.js";import{r as fa}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function da(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./preload-helper-BDBacUwf.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";const ba={editorDiv:{height:"100%",width:"100%",overflow:"hidden",position:"relative"}};class ha extends ft.Component{constructor(v){super(v),this.state={lines:(this.props.script||"").split(/\r\n|\n/)}}render(){return M.jsx("div",{style:ba.editorDiv,children:M.jsx(pa,{triggerPrettier:1,name:this.props.scriptName,adapterName:this.props.adapterName,readOnly:!0,code:this.props.script||"",isDark:this.props.themeType==="dark",socket:this.props.socket,runningInstances:this.props.runningInstances,language:"javascript",breakpoints:this.props.breakpoints,location:this.props.paused?this.props.location:null,onToggleBreakpoint:v=>this.props.onToggleBreakpoint(v)},"scriptEditor2")},"scriptEditorDiv2")}}const Dt=34,Ke={logBox:{width:"100%",height:"100%",position:"relative",overflow:"hidden"},logBoxInner:X=>({display:"inline-block",color:X.palette.mode==="dark"?"white":"black",width:`calc(100% - ${Dt}px)`,height:"100%",overflow:"auto",position:"relative",verticalAlign:"top"}),info:X=>({background:X.palette.mode==="dark"?"darkgrey":"lightgrey",color:(X.palette.mode==="dark","black")}),error:X=>({background:"#FF0000",color:X.palette.mode==="dark"?"black":"white"}),warn:X=>({background:"#FF8000",color:X.palette.mode==="dark"?"black":"white"}),debug:X=>({background:"gray",opacity:.8,color:X.palette.mode==="dark"?"black":"white"}),silly:X=>({background:"gray",opacity:.6,color:X.palette.mode==="dark"?"black":"white"}),table:{fontFamily:"monospace",width:"100%"},toolbox:{width:Dt,height:"100%",boxShadow:"2px 0px 4px -1px rgba(0, 0, 0, 0.2), 4px 0px 5px 0px rgba(0, 0, 0, 0.14), 1px 0px 10px 0px rgba(0, 0, 0, 0.12)",display:"inline-block",verticalAlign:"top",overflow:"hidden"},trTime:{width:90},trSeverity:{width:40,fontWeight:"bold"},iconButtons:{width:32,height:32,padding:4}};function ma(X){let v,g=X.getHours();return g<10&&(g=`0${g.toString()}`),v=`${g}:`,g=X.getMinutes(),g<10&&(g=`0${g.toString()}`),v+=`${g}:`,g=X.getSeconds(),g<10&&(g=`0${g.toString()}`),v+=`${g}.`,g=X.getMilliseconds(),g<10?g=`00${g.toString()}`:g<100&&(g=`0${g.toString()}`),v+=g,v}class Ct extends ft.Component{messagesEnd;constructor(v){super(v),this.state={goBottom:!0},this.messagesEnd=ft.createRef()}static generateLine(v){return M.jsxs(Xe,{component:"tr",sx:Ke[v.severity],children:[M.jsx("td",{style:Ke.trTime,children:ma(new Date(v.ts))}),M.jsx("td",{style:Ke.trSeverity,children:v.severity}),M.jsx("td",{children:v.text})]},`tr_${v.ts}_${v.text.substring(v.text.length-10,v.text.length)}`)}renderLogList(v){return v!=null&&v.length?M.jsxs(Xe,{sx:Ke.logBoxInner,children:[M.jsx("table",{style:Ke.table,children:M.jsx("tbody",{children:v.map(g=>Ct.generateLine(g))})},"logTable"),M.jsx("div",{ref:this.messagesEnd,style:{float:"left",clear:"both"}},"logScrollPoint")]},"logList"):M.jsx(Xe,{sx:Ke.logBoxInner,style:{paddingLeft:10},children:we.I18n.t("Log outputs")},"logList")}onCopy(){we.Utils.copyToClipboard(this.props.console.join(` `))}scrollToBottom(){var v,g;(g=(v=this.messagesEnd)==null?void 0:v.current)==null||g.scrollIntoView({behavior:"smooth"})}componentDidUpdate(){this.state.goBottom&&this.scrollToBottom()}render(){const v=this.props.console;return M.jsxs("div",{style:Ke.logBox,children:[M.jsxs("div",{style:Ke.toolbox,children:[M.jsx(Te,{style:Ke.iconButtons,onClick:()=>this.setState({goBottom:!this.state.goBottom}),color:this.state.goBottom?"secondary":void 0,size:"medium",children:M.jsx(Xt,{})}),v!=null&&v.length?M.jsx(Te,{style:Ke.iconButtons,onClick:()=>this.props.onClearAllLogs(),size:"medium",children:M.jsx(Zt,{})}):null,v!=null&&v.length?M.jsx(Te,{style:Ke.iconButtons,onClick:()=>this.onCopy(),size:"medium",children:M.jsx(ea,{})}):null]},"toolbox"),this.renderLogList(v)]})}}var It={exports:{}},va=It.exports;(function(X,v){(function(g,a){X.exports=a(fa)})(va,(function(g){return(function(a){var t={};function e(s){if(t[s])return t[s].exports;var c=t[s]={i:s,l:!1,exports:{}};return a[s].call(c.exports,c,c.exports,e),c.l=!0,c.exports}return e.m=a,e.c=t,e.d=function(s,c,d){e.o(s,c)||Object.defineProperty(s,c,{enumerable:!0,get:d})},e.r=function(s){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})},e.t=function(s,c){if(1&c&&(s=e(s)),8&c||4&c&&typeof s=="object"&&s&&s.__esModule)return s;var d=Object.create(null);if(e.r(d),Object.defineProperty(d,"default",{enumerable:!0,value:s}),2&c&&typeof s!="string")for(var p in s)e.d(d,p,function(f){return s[f]}.bind(null,p));return d},e.n=function(s){var c=s&&s.__esModule?function(){return s.default}:function(){return s};return e.d(c,"a",c),c},e.o=function(s,c){return Object.prototype.hasOwnProperty.call(s,c)},e.p="",e(e.s=48)})([function(a,t){a.exports=g},function(a,t){var e=a.exports={version:"2.6.12"};typeof __e=="number"&&(__e=e)},function(a,t,e){var s=e(26)("wks"),c=e(17),d=e(3).Symbol,p=typeof d=="function";(a.exports=function(f){return s[f]||(s[f]=p&&d[f]||(p?d:c)("Symbol."+f))}).store=s},function(a,t){var e=a.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=e)},function(a,t,e){a.exports=!e(8)((function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7}))},function(a,t){var e={}.hasOwnProperty;a.exports=function(s,c){return e.call(s,c)}},function(a,t,e){var s=e(7),c=e(16);a.exports=e(4)?function(d,p,f){return s.f(d,p,c(1,f))}:function(d,p,f){return d[p]=f,d}},function(a,t,e){var s=e(10),c=e(35),d=e(23),p=Object.defineProperty;t.f=e(4)?Object.defineProperty:function(f,h,S){if(s(f),h=d(h,!0),s(S),c)try{return p(f,h,S)}catch{}if("get"in S||"set"in S)throw TypeError("Accessors not supported!");return"value"in S&&(f[h]=S.value),f}},function(a,t){a.exports=function(e){try{return!!e()}catch{return!0}}},function(a,t,e){var s=e(40),c=e(22);a.exports=function(d){return s(c(d))}},function(a,t,e){var s=e(11);a.exports=function(c){if(!s(c))throw TypeError(c+" is not an object!");return c}},function(a,t){a.exports=function(e){return typeof e=="object"?e!==null:typeof e=="function"}},function(a,t){a.exports={}},function(a,t,e){var s=e(39),c=e(27);a.exports=Object.keys||function(d){return s(d,c)}},function(a,t){a.exports=!0},function(a,t,e){var s=e(3),c=e(1),d=e(53),p=e(6),f=e(5),h=function(S,b,w){var I,R,H,L=S&h.F,Z=S&h.G,r=S&h.S,D=S&h.P,V=S&h.B,z=S&h.W,q=Z?c:c[b]||(c[b]={}),k=q.prototype,A=Z?s:r?s[b]:(s[b]||{}).prototype;for(I in Z&&(w=b),w)(R=!L&&A&&A[I]!==void 0)&&f(q,I)||(H=R?A[I]:w[I],q[I]=Z&&typeof A[I]!="function"?w[I]:V&&R?d(H,s):z&&A[I]==H?(function(T){var W=function(E,ee,J){if(this instanceof T){switch(arguments.length){case 0:return new T;case 1:return new T(E);case 2:return new T(E,ee)}return new T(E,ee,J)}return T.apply(this,arguments)};return W.prototype=T.prototype,W})(H):D&&typeof H=="function"?d(Function.call,H):H,D&&((q.virtual||(q.virtual={}))[I]=H,S&h.R&&k&&!k[I]&&p(k,I,H)))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,a.exports=h},function(a,t){a.exports=function(e,s){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:s}}},function(a,t){var e=0,s=Math.random();a.exports=function(c){return"Symbol(".concat(c===void 0?"":c,")_",(++e+s).toString(36))}},function(a,t,e){var s=e(22);a.exports=function(c){return Object(s(c))}},function(a,t){t.f={}.propertyIsEnumerable},function(a,t,e){var s=e(52)(!0);e(34)(String,"String",(function(c){this._t=String(c),this._i=0}),(function(){var c,d=this._t,p=this._i;return p>=d.length?{value:void 0,done:!0}:(c=s(d,p),this._i+=c.length,{value:c,done:!1})}))},function(a,t){var e=Math.ceil,s=Math.floor;a.exports=function(c){return isNaN(c=+c)?0:(c>0?s:e)(c)}},function(a,t){a.exports=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e}},function(a,t,e){var s=e(11);a.exports=function(c,d){if(!s(c))return c;var p,f;if(d&&typeof(p=c.toString)=="function"&&!s(f=p.call(c))||typeof(p=c.valueOf)=="function"&&!s(f=p.call(c))||!d&&typeof(p=c.toString)=="function"&&!s(f=p.call(c)))return f;throw TypeError("Can't convert object to primitive value")}},function(a,t){var e={}.toString;a.exports=function(s){return e.call(s).slice(8,-1)}},function(a,t,e){var s=e(26)("keys"),c=e(17);a.exports=function(d){return s[d]||(s[d]=c(d))}},function(a,t,e){var s=e(1),c=e(3),d=c["__core-js_shared__"]||(c["__core-js_shared__"]={});(a.exports=function(p,f){return d[p]||(d[p]=f!==void 0?f:{})})("versions",[]).push({version:s.version,mode:e(14)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(a,t){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(a,t,e){var s=e(7).f,c=e(5),d=e(2)("toStringTag");a.exports=function(p,f,h){p&&!c(p=h?p:p.prototype,d)&&s(p,d,{configurable:!0,value:f})}},function(a,t,e){e(62);for(var s=e(3),c=e(6),d=e(12),p=e(2)("toStringTag"),f="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),h=0;hdocument.F=Object<\/script>"),S.close(),h=S.F;w--;)delete h.prototype[d[w]];return h()};a.exports=Object.create||function(S,b){var w;return S!==null?(f.prototype=s(S),w=new f,f.prototype=null,w[p]=S):w=h(),b===void 0?w:c(w,b)}},function(a,t,e){var s=e(5),c=e(9),d=e(57)(!1),p=e(25)("IE_PROTO");a.exports=function(f,h){var S,b=c(f),w=0,I=[];for(S in b)S!=p&&s(b,S)&&I.push(S);for(;h.length>w;)s(b,S=h[w++])&&(~d(I,S)||I.push(S));return I}},function(a,t,e){var s=e(24);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(c){return s(c)=="String"?c.split(""):Object(c)}},function(a,t,e){var s=e(39),c=e(27).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(d){return s(d,c)}},function(a,t,e){var s=e(24),c=e(2)("toStringTag"),d=s((function(){return arguments})())=="Arguments";a.exports=function(p){var f,h,S;return p===void 0?"Undefined":p===null?"Null":typeof(h=(function(b,w){try{return b[w]}catch{}})(f=Object(p),c))=="string"?h:d?s(f):(S=s(f))=="Object"&&typeof f.callee=="function"?"Arguments":S}},function(a,t){var e;e=(function(){return this})();try{e=e||new Function("return this")()}catch{typeof window=="object"&&(e=window)}a.exports=e},function(a,t){var e=/-?\d+(\.\d+)?%?/g;a.exports=function(s){return s.match(e)}},function(a,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.getBase16Theme=t.createStyling=t.invertTheme=void 0;var s=R(e(49)),c=R(e(76)),d=R(e(81)),p=R(e(89)),f=R(e(93)),h=(function(k){if(k&&k.__esModule)return k;var A={};if(k!=null)for(var T in k)Object.prototype.hasOwnProperty.call(k,T)&&(A[T]=k[T]);return A.default=k,A})(e(94)),S=R(e(132)),b=R(e(133)),w=R(e(138)),I=e(139);function R(k){return k&&k.__esModule?k:{default:k}}var H=h.default,L=(0,p.default)(H),Z=(0,w.default)(b.default,I.rgb2yuv,(function(k){var A,T=(0,d.default)(k,3),W=T[0],E=T[1],ee=T[2];return[(A=W,A<.25?1:A<.5?.9-A:1.1-A),E,ee]}),I.yuv2rgb,S.default),r=function(k){return function(A){return{className:[A.className,k.className].filter(Boolean).join(" "),style:(0,c.default)({},A.style||{},k.style||{})}}},D=function(k,A){var T=(0,p.default)(A);for(var W in k)T.indexOf(W)===-1&&T.push(W);return T.reduce((function(E,ee){return E[ee]=(function(J,C){if(J===void 0)return C;if(C===void 0)return J;var Y=J===void 0?"undefined":(0,s.default)(J),be=C===void 0?"undefined":(0,s.default)(C);switch(Y){case"string":switch(be){case"string":return[C,J].filter(Boolean).join(" ");case"object":return r({className:J,style:C});case"function":return function(ce){for(var U=arguments.length,le=Array(U>1?U-1:0),Q=1;Q1?U-1:0),Q=1;Q1?U-1:0),Q=1;Q1?U-1:0),Q=1;Q1?U-1:0),Q=1;Q2?T-2:0),E=2;E3?A-3:0),W=3;W1&&arguments[1]!==void 0?arguments[1]:{},ee=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},J=E.defaultBase16,C=J===void 0?H:J,Y=E.base16Themes,be=Y===void 0?null:Y,ce=q(ee,be);ce&&(ee=(0,c.default)({},ce,ee));var U=L.reduce((function(ve,Ne){return ve[Ne]=ee[Ne]||C[Ne],ve}),{}),le=(0,p.default)(ee).reduce((function(ve,Ne){return L.indexOf(Ne)===-1&&(ve[Ne]=ee[Ne]),ve}),{}),Q=k(U),he=D(le,Q);return(0,f.default)(V,2).apply(void 0,[he].concat(T))}),3),t.getBase16Theme=function(k,A){if(k&&k.extend&&(k=k.extend),typeof k=="string"){var T=k.split(":"),W=(0,d.default)(T,2),E=W[0],ee=W[1];k=(A||{})[E]||h[E],ee==="inverted"&&(k=z(k))}return k&&k.hasOwnProperty("base00")?k:void 0})},function(a,t,e){var s,c=typeof Reflect=="object"?Reflect:null,d=c&&typeof c.apply=="function"?c.apply:function(r,D,V){return Function.prototype.apply.call(r,D,V)};s=c&&typeof c.ownKeys=="function"?c.ownKeys:Object.getOwnPropertySymbols?function(r){return Object.getOwnPropertyNames(r).concat(Object.getOwnPropertySymbols(r))}:function(r){return Object.getOwnPropertyNames(r)};var p=Number.isNaN||function(r){return r!=r};function f(){f.init.call(this)}a.exports=f,a.exports.once=function(r,D){return new Promise((function(V,z){function q(){k!==void 0&&r.removeListener("error",k),V([].slice.call(arguments))}var k;D!=="error"&&(k=function(A){r.removeListener(D,q),z(A)},r.once("error",k)),r.once(D,q)}))},f.EventEmitter=f,f.prototype._events=void 0,f.prototype._eventsCount=0,f.prototype._maxListeners=void 0;var h=10;function S(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}function b(r){return r._maxListeners===void 0?f.defaultMaxListeners:r._maxListeners}function w(r,D,V,z){var q,k,A,T;if(S(V),(k=r._events)===void 0?(k=r._events=Object.create(null),r._eventsCount=0):(k.newListener!==void 0&&(r.emit("newListener",D,V.listener?V.listener:V),k=r._events),A=k[D]),A===void 0)A=k[D]=V,++r._eventsCount;else if(typeof A=="function"?A=k[D]=z?[V,A]:[A,V]:z?A.unshift(V):A.push(V),(q=b(r))>0&&A.length>q&&!A.warned){A.warned=!0;var W=new Error("Possible EventEmitter memory leak detected. "+A.length+" "+String(D)+" listeners added. Use emitter.setMaxListeners() to increase limit");W.name="MaxListenersExceededWarning",W.emitter=r,W.type=D,W.count=A.length,T=W,console&&console.warn&&console.warn(T)}return r}function I(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function R(r,D,V){var z={fired:!1,wrapFn:void 0,target:r,type:D,listener:V},q=I.bind(z);return q.listener=V,z.wrapFn=q,q}function H(r,D,V){var z=r._events;if(z===void 0)return[];var q=z[D];return q===void 0?[]:typeof q=="function"?V?[q.listener||q]:[q]:V?(function(k){for(var A=new Array(k.length),T=0;T0&&(k=D[0]),k instanceof Error)throw k;var A=new Error("Unhandled error."+(k?" ("+k.message+")":""));throw A.context=k,A}var T=q[r];if(T===void 0)return!1;if(typeof T=="function")d(T,this,D);else{var W=T.length,E=Z(T,W);for(V=0;V=0;k--)if(V[k]===D||V[k].listener===D){A=V[k].listener,q=k;break}if(q<0)return this;q===0?V.shift():(function(T,W){for(;W+1=0;z--)this.removeListener(r,D[z]);return this},f.prototype.listeners=function(r){return H(this,r,!0)},f.prototype.rawListeners=function(r){return H(this,r,!1)},f.listenerCount=function(r,D){return typeof r.listenerCount=="function"?r.listenerCount(D):L.call(r,D)},f.prototype.listenerCount=L,f.prototype.eventNames=function(){return this._eventsCount>0?s(this._events):[]}},function(a,t,e){a.exports.Dispatcher=e(140)},function(a,t,e){a.exports=e(142)},function(a,t,e){t.__esModule=!0;var s=p(e(50)),c=p(e(65)),d=typeof c.default=="function"&&typeof s.default=="symbol"?function(f){return typeof f}:function(f){return f&&typeof c.default=="function"&&f.constructor===c.default&&f!==c.default.prototype?"symbol":typeof f};function p(f){return f&&f.__esModule?f:{default:f}}t.default=typeof c.default=="function"&&d(s.default)==="symbol"?function(f){return f===void 0?"undefined":d(f)}:function(f){return f&&typeof c.default=="function"&&f.constructor===c.default&&f!==c.default.prototype?"symbol":f===void 0?"undefined":d(f)}},function(a,t,e){a.exports={default:e(51),__esModule:!0}},function(a,t,e){e(20),e(29),a.exports=e(30).f("iterator")},function(a,t,e){var s=e(21),c=e(22);a.exports=function(d){return function(p,f){var h,S,b=String(c(p)),w=s(f),I=b.length;return w<0||w>=I?d?"":void 0:(h=b.charCodeAt(w))<55296||h>56319||w+1===I||(S=b.charCodeAt(w+1))<56320||S>57343?d?b.charAt(w):h:d?b.slice(w,w+2):S-56320+(h-55296<<10)+65536}}},function(a,t,e){var s=e(54);a.exports=function(c,d,p){if(s(c),d===void 0)return c;switch(p){case 1:return function(f){return c.call(d,f)};case 2:return function(f,h){return c.call(d,f,h)};case 3:return function(f,h,S){return c.call(d,f,h,S)}}return function(){return c.apply(d,arguments)}}},function(a,t){a.exports=function(e){if(typeof e!="function")throw TypeError(e+" is not a function!");return e}},function(a,t,e){var s=e(38),c=e(16),d=e(28),p={};e(6)(p,e(2)("iterator"),(function(){return this})),a.exports=function(f,h,S){f.prototype=s(p,{next:c(1,S)}),d(f,h+" Iterator")}},function(a,t,e){var s=e(7),c=e(10),d=e(13);a.exports=e(4)?Object.defineProperties:function(p,f){c(p);for(var h,S=d(f),b=S.length,w=0;b>w;)s.f(p,h=S[w++],f[h]);return p}},function(a,t,e){var s=e(9),c=e(58),d=e(59);a.exports=function(p){return function(f,h,S){var b,w=s(f),I=c(w.length),R=d(S,I);if(p&&h!=h){for(;I>R;)if((b=w[R++])!=b)return!0}else for(;I>R;R++)if((p||R in w)&&w[R]===h)return p||R||0;return!p&&-1}}},function(a,t,e){var s=e(21),c=Math.min;a.exports=function(d){return d>0?c(s(d),9007199254740991):0}},function(a,t,e){var s=e(21),c=Math.max,d=Math.min;a.exports=function(p,f){return(p=s(p))<0?c(p+f,0):d(p,f)}},function(a,t,e){var s=e(3).document;a.exports=s&&s.documentElement},function(a,t,e){var s=e(5),c=e(18),d=e(25)("IE_PROTO"),p=Object.prototype;a.exports=Object.getPrototypeOf||function(f){return f=c(f),s(f,d)?f[d]:typeof f.constructor=="function"&&f instanceof f.constructor?f.constructor.prototype:f instanceof Object?p:null}},function(a,t,e){var s=e(63),c=e(64),d=e(12),p=e(9);a.exports=e(34)(Array,"Array",(function(f,h){this._t=p(f),this._i=0,this._k=h}),(function(){var f=this._t,h=this._k,S=this._i++;return!f||S>=f.length?(this._t=void 0,c(1)):c(0,h=="keys"?S:h=="values"?f[S]:[S,f[S]])}),"values"),d.Arguments=d.Array,s("keys"),s("values"),s("entries")},function(a,t){a.exports=function(){}},function(a,t){a.exports=function(e,s){return{value:s,done:!!e}}},function(a,t,e){a.exports={default:e(66),__esModule:!0}},function(a,t,e){e(67),e(73),e(74),e(75),a.exports=e(1).Symbol},function(a,t,e){var s=e(3),c=e(5),d=e(4),p=e(15),f=e(37),h=e(68).KEY,S=e(8),b=e(26),w=e(28),I=e(17),R=e(2),H=e(30),L=e(31),Z=e(69),r=e(70),D=e(10),V=e(11),z=e(18),q=e(9),k=e(23),A=e(16),T=e(38),W=e(71),E=e(72),ee=e(32),J=e(7),C=e(13),Y=E.f,be=J.f,ce=W.f,U=s.Symbol,le=s.JSON,Q=le&&le.stringify,he=R("_hidden"),ve=R("toPrimitive"),Ne={}.propertyIsEnumerable,Ee=b("symbol-registry"),Oe=b("symbols"),fe=b("op-symbols"),ge=Object.prototype,De=typeof U=="function"&&!!ee.f,Ue=s.QObject,Ze=!Ue||!Ue.prototype||!Ue.prototype.findChild,et=d&&S((function(){return T(be({},"a",{get:function(){return be(this,"a",{value:7}).a}})).a!=7}))?function(j,N,B){var K=Y(ge,N);K&&delete ge[N],be(j,N,B),K&&j!==ge&&be(ge,N,K)}:be,tt=function(j){var N=Oe[j]=T(U.prototype);return N._k=j,N},at=De&&typeof U.iterator=="symbol"?function(j){return typeof j=="symbol"}:function(j){return j instanceof U},He=function(j,N,B){return j===ge&&He(fe,N,B),D(j),N=k(N,!0),D(B),c(Oe,N)?(B.enumerable?(c(j,he)&&j[he][N]&&(j[he][N]=!1),B=T(B,{enumerable:A(0,!1)})):(c(j,he)||be(j,he,A(1,{})),j[he][N]=!0),et(j,N,B)):be(j,N,B)},st=function(j,N){D(j);for(var B,K=Z(N=q(N)),re=0,te=K.length;te>re;)He(j,B=K[re++],N[B]);return j},ot=function(j){var N=Ne.call(this,j=k(j,!0));return!(this===ge&&c(Oe,j)&&!c(fe,j))&&(!(N||!c(this,j)||!c(Oe,j)||c(this,he)&&this[he][j])||N)},rt=function(j,N){if(j=q(j),N=k(N,!0),j!==ge||!c(Oe,N)||c(fe,N)){var B=Y(j,N);return!B||!c(Oe,N)||c(j,he)&&j[he][N]||(B.enumerable=!0),B}},it=function(j){for(var N,B=ce(q(j)),K=[],re=0;B.length>re;)c(Oe,N=B[re++])||N==he||N==h||K.push(N);return K},Ge=function(j){for(var N,B=j===ge,K=ce(B?fe:q(j)),re=[],te=0;K.length>te;)!c(Oe,N=K[te++])||B&&!c(ge,N)||re.push(Oe[N]);return re};De||(f((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor!");var j=I(arguments.length>0?arguments[0]:void 0),N=function(B){this===ge&&N.call(fe,B),c(this,he)&&c(this[he],j)&&(this[he][j]=!1),et(this,j,A(1,B))};return d&&Ze&&et(ge,j,{configurable:!0,set:N}),tt(j)}).prototype,"toString",(function(){return this._k})),E.f=rt,J.f=He,e(41).f=W.f=it,e(19).f=ot,ee.f=Ge,d&&!e(14)&&f(ge,"propertyIsEnumerable",ot,!0),H.f=function(j){return tt(R(j))}),p(p.G+p.W+p.F*!De,{Symbol:U});for(var Ve="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Ce=0;Ve.length>Ce;)R(Ve[Ce++]);for(var nt=C(R.store),F=0;nt.length>F;)L(nt[F++]);p(p.S+p.F*!De,"Symbol",{for:function(j){return c(Ee,j+="")?Ee[j]:Ee[j]=U(j)},keyFor:function(j){if(!at(j))throw TypeError(j+" is not a symbol!");for(var N in Ee)if(Ee[N]===j)return N},useSetter:function(){Ze=!0},useSimple:function(){Ze=!1}}),p(p.S+p.F*!De,"Object",{create:function(j,N){return N===void 0?T(j):st(T(j),N)},defineProperty:He,defineProperties:st,getOwnPropertyDescriptor:rt,getOwnPropertyNames:it,getOwnPropertySymbols:Ge});var x=S((function(){ee.f(1)}));p(p.S+p.F*x,"Object",{getOwnPropertySymbols:function(j){return ee.f(z(j))}}),le&&p(p.S+p.F*(!De||S((function(){var j=U();return Q([j])!="[null]"||Q({a:j})!="{}"||Q(Object(j))!="{}"}))),"JSON",{stringify:function(j){for(var N,B,K=[j],re=1;arguments.length>re;)K.push(arguments[re++]);if(B=N=K[1],(V(N)||j!==void 0)&&!at(j))return r(N)||(N=function(te,ue){if(typeof B=="function"&&(ue=B.call(this,te,ue)),!at(ue))return ue}),K[1]=N,Q.apply(le,K)}}),U.prototype[ve]||e(6)(U.prototype,ve,U.prototype.valueOf),w(U,"Symbol"),w(Math,"Math",!0),w(s.JSON,"JSON",!0)},function(a,t,e){var s=e(17)("meta"),c=e(11),d=e(5),p=e(7).f,f=0,h=Object.isExtensible||function(){return!0},S=!e(8)((function(){return h(Object.preventExtensions({}))})),b=function(I){p(I,s,{value:{i:"O"+ ++f,w:{}}})},w=a.exports={KEY:s,NEED:!1,fastKey:function(I,R){if(!c(I))return typeof I=="symbol"?I:(typeof I=="string"?"S":"P")+I;if(!d(I,s)){if(!h(I))return"F";if(!R)return"E";b(I)}return I[s].i},getWeak:function(I,R){if(!d(I,s)){if(!h(I))return!0;if(!R)return!1;b(I)}return I[s].w},onFreeze:function(I){return S&&w.NEED&&h(I)&&!d(I,s)&&b(I),I}}},function(a,t,e){var s=e(13),c=e(32),d=e(19);a.exports=function(p){var f=s(p),h=c.f;if(h)for(var S,b=h(p),w=d.f,I=0;b.length>I;)w.call(p,S=b[I++])&&f.push(S);return f}},function(a,t,e){var s=e(24);a.exports=Array.isArray||function(c){return s(c)=="Array"}},function(a,t,e){var s=e(9),c=e(41).f,d={}.toString,p=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];a.exports.f=function(f){return p&&d.call(f)=="[object Window]"?(function(h){try{return c(h)}catch{return p.slice()}})(f):c(s(f))}},function(a,t,e){var s=e(19),c=e(16),d=e(9),p=e(23),f=e(5),h=e(35),S=Object.getOwnPropertyDescriptor;t.f=e(4)?S:function(b,w){if(b=d(b),w=p(w,!0),h)try{return S(b,w)}catch{}if(f(b,w))return c(!s.f.call(b,w),b[w])}},function(a,t){},function(a,t,e){e(31)("asyncIterator")},function(a,t,e){e(31)("observable")},function(a,t,e){t.__esModule=!0;var s,c=e(77),d=(s=c)&&s.__esModule?s:{default:s};t.default=d.default||function(p){for(var f=1;fH;)for(var r,D=h(arguments[H++]),V=L?c(D).concat(L(D)):c(D),z=V.length,q=0;z>q;)r=V[q++],s&&!Z.call(D,r)||(I[r]=D[r]);return I}:S},function(a,t,e){t.__esModule=!0;var s=d(e(82)),c=d(e(85));function d(p){return p&&p.__esModule?p:{default:p}}t.default=function(p,f){if(Array.isArray(p))return p;if((0,s.default)(Object(p)))return(function(h,S){var b=[],w=!0,I=!1,R=void 0;try{for(var H,L=(0,c.default)(h);!(w=(H=L.next()).done)&&(b.push(H.value),!S||b.length!==S);w=!0);}catch(Z){I=!0,R=Z}finally{try{!w&&L.return&&L.return()}finally{if(I)throw R}}return b})(p,f);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(a,t,e){a.exports={default:e(83),__esModule:!0}},function(a,t,e){e(29),e(20),a.exports=e(84)},function(a,t,e){var s=e(42),c=e(2)("iterator"),d=e(12);a.exports=e(1).isIterable=function(p){var f=Object(p);return f[c]!==void 0||"@@iterator"in f||d.hasOwnProperty(s(f))}},function(a,t,e){a.exports={default:e(86),__esModule:!0}},function(a,t,e){e(29),e(20),a.exports=e(87)},function(a,t,e){var s=e(10),c=e(88);a.exports=e(1).getIterator=function(d){var p=c(d);if(typeof p!="function")throw TypeError(d+" is not iterable!");return s(p.call(d))}},function(a,t,e){var s=e(42),c=e(2)("iterator"),d=e(12);a.exports=e(1).getIteratorMethod=function(p){if(p!=null)return p[c]||p["@@iterator"]||d[s(p)]}},function(a,t,e){a.exports={default:e(90),__esModule:!0}},function(a,t,e){e(91),a.exports=e(1).Object.keys},function(a,t,e){var s=e(18),c=e(13);e(92)("keys",(function(){return function(d){return c(s(d))}}))},function(a,t,e){var s=e(15),c=e(1),d=e(8);a.exports=function(p,f){var h=(c.Object||{})[p]||Object[p],S={};S[p]=f(h),s(s.S+s.F*d((function(){h(1)})),"Object",S)}},function(a,t,e){(function(s){var c=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],d=/^\s+|\s+$/g,p=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,f=/\{\n\/\* \[wrapped with (.+)\] \*/,h=/,? & /,S=/^[-+]0x[0-9a-f]+$/i,b=/^0b[01]+$/i,w=/^\[object .+?Constructor\]$/,I=/^0o[0-7]+$/i,R=/^(?:0|[1-9]\d*)$/,H=parseInt,L=typeof s=="object"&&s&&s.Object===Object&&s,Z=typeof self=="object"&&self&&self.Object===Object&&self,r=L||Z||Function("return this")();function D(F,x,j){switch(j.length){case 0:return F.call(x);case 1:return F.call(x,j[0]);case 2:return F.call(x,j[0],j[1]);case 3:return F.call(x,j[0],j[1],j[2])}return F.apply(x,j)}function V(F,x){return!!(F&&F.length)&&(function(j,N,B){if(N!=N)return(function(te,ue,ye,xe){for(var Ie=te.length,me=ye+-1;++me-1}function z(F){return F!=F}function q(F,x){for(var j=F.length,N=0;j--;)F[j]===x&&N++;return N}function k(F,x){for(var j=-1,N=F.length,B=0,K=[];++j2?T:void 0);function Ne(F){return Ve(F)?le(F):{}}function Ee(F){return!(!Ve(F)||(function(x){return!!C&&C in x})(F))&&((function(x){var j=Ve(x)?ce.call(x):"";return j=="[object Function]"||j=="[object GeneratorFunction]"})(F)||(function(x){var j=!1;if(x!=null&&typeof x.toString!="function")try{j=!!(x+"")}catch{}return j})(F)?U:w).test((function(x){if(x!=null){try{return Y.call(x)}catch{}try{return x+""}catch{}}return""})(F))}function Oe(F,x,j,N){for(var B=-1,K=F.length,re=j.length,te=-1,ue=x.length,ye=Q(K-re,0),xe=Array(ue+ye),Ie=!N;++te1&&se.reverse(),xe&&ue1?"& ":"")+x[N],x=x.join(j>2?", ":" "),F.replace(p,`{ /* [wrapped with `+x+`] */ `)}function st(F,x){return!!(x=x??9007199254740991)&&(typeof F=="number"||R.test(F))&&F>-1&&F%1==0&&F1&&d--,f=6*d<1?s+6*(c-s)*d:2*d<1?c:3*d<2?s+(c-s)*(2/3-d)*6:s,p[w]=255*f;return p}},function(a,t,e){(function(s){var c=typeof s=="object"&&s&&s.Object===Object&&s,d=typeof self=="object"&&self&&self.Object===Object&&self,p=c||d||Function("return this")();function f(k,A,T){switch(T.length){case 0:return k.call(A);case 1:return k.call(A,T[0]);case 2:return k.call(A,T[0],T[1]);case 3:return k.call(A,T[0],T[1],T[2])}return k.apply(A,T)}function h(k,A){for(var T=-1,W=A.length,E=k.length;++T-1&&E%1==0&&E<=9007199254740991})(W.length)&&!(function(E){var ee=(function(J){var C=typeof J;return!!J&&(C=="object"||C=="function")})(E)?w.call(E):"";return ee=="[object Function]"||ee=="[object GeneratorFunction]"})(W)})(T)})(A)&&b.call(A,"callee")&&(!R.call(A,"callee")||w.call(A)=="[object Arguments]")})(k)||!!(H&&k&&k[H])}var r=Array.isArray,D,V,z,q=(V=function(k){var A=(k=(function(E,ee,J,C,Y){var be=-1,ce=E.length;for(J||(J=Z),Y||(Y=[]);++be2?d-2:0),f=2;f"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch{return!1}})();return function(){var n,o=w(l);if(u){var i=w(this).constructor;n=Reflect.construct(o,arguments,i)}else n=o.apply(this,arguments);return H(this,n)}}e.r(t);var Z=e(0),r=e.n(Z);function D(){var l=this.constructor.getDerivedStateFromProps(this.props,this.state);l!=null&&this.setState(l)}function V(l){this.setState(function(u){var n=this.constructor.getDerivedStateFromProps(l,u);return n??null}.bind(this))}function z(l,u){try{var n=this.props,o=this.state;this.props=l,this.state=u,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,o)}finally{this.props=n,this.state=o}}function q(l){var u=l.prototype;if(!u||!u.isReactComponent)throw new Error("Can only polyfill class components");if(typeof l.getDerivedStateFromProps!="function"&&typeof u.getSnapshotBeforeUpdate!="function")return l;var n=null,o=null,i=null;if(typeof u.componentWillMount=="function"?n="componentWillMount":typeof u.UNSAFE_componentWillMount=="function"&&(n="UNSAFE_componentWillMount"),typeof u.componentWillReceiveProps=="function"?o="componentWillReceiveProps":typeof u.UNSAFE_componentWillReceiveProps=="function"&&(o="UNSAFE_componentWillReceiveProps"),typeof u.componentWillUpdate=="function"?i="componentWillUpdate":typeof u.UNSAFE_componentWillUpdate=="function"&&(i="UNSAFE_componentWillUpdate"),n!==null||o!==null||i!==null){var y=l.displayName||l.name,O=typeof l.getDerivedStateFromProps=="function"?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error(`Unsafe legacy lifecycles will not be called for components using new component APIs. diff --git a/admin/assets/index-MJuwtgsO.js b/admin/assets/index-Be9Zg6aF.js similarity index 50% rename from admin/assets/index-MJuwtgsO.js rename to admin/assets/index-Be9Zg6aF.js index e687c63ed..f240cdd3b 100644 --- a/admin/assets/index-MJuwtgsO.js +++ b/admin/assets/index-Be9Zg6aF.js @@ -1,25 +1,25 @@ -import{c as P,j as $,o as st,a as Oc,b as Ec,d as _c}from"./createSvgIcon-DYs_tNrE.js";import{a,c as Ce,r as De,e as CN,p as hr,j as qa,q as Ug,_ as $g,b as et,k as Kt,f as Pg,s as pN,i as Wg,l as Jg}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{a4 as ko,F as AN,$ as bt,_ as Ae,a as fe,b as _e,p as as,V,E as ue,h as xe,i as q,Q as Xn,o as W,z as J,c as Te,y as ws,f as nt,g as re,Z as Bg,C as Rg,D as Us,a0 as Fg,a6 as mN,P as Le,t as Xt,u as dt,a7 as Gg,v as qt,H as Hg,d as Qt,e as yi,J as fN,q as ts,s as xc,W as br,r as Sc,G as kc,x as Vg,a3 as Zg,a8 as Me,a9 as Ln,aa as Xg,K as ON,N as it,M as vc,L as Kg,ab as Yc,O as qg}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{S as Kn}from"./Save-CkuNSiWL.js";import{c as we,I as We,b as wt,O as ej,g as tj,j as or,i as EN,K as _N,C as xN,$ as sj,a0 as te,a1 as ij,a2 as rj,a3 as oj,a4 as nj,Y as Qc,a5 as aj,a6 as Mj,a7 as cj,a8 as uj,a9 as bc,aa as Uc,ab as lj,ac as Nj,ad as Lj,ae as gj,af as jj,ag as yj,ah as Tj,ai as Dj,aj as dj,ak as hj,al as zj,am as wj,an as $c,ao as Pc,ap as Ij,aq as Wc,s as Cj,ar as pj,as as Aj,at as mj,au as Jc,av as fj,aw as Oj,ax as Ej,P as _j,h as qn,a as zr}from"./index-wHNMOf-c.js";import{c as Ur,r as vo}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function xj(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{P as _}from"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import{u as Sj}from"./useTheme-DuTJsNQ-.js";import{I as eM,R as SN,b as G}from"./index-45IwpC7_.js";const kj=P($.jsx("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"}),"ArrowBack"),vj=P($.jsx("path",{d:"m10 17 5-5-5-5z"}),"ArrowRight"),Yj=P($.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 11h-3v3.75c0 1.24-1.01 2.25-2.25 2.25S8.5 17.99 8.5 16.75s1.01-2.25 2.25-2.25c.46 0 .89.14 1.25.38V11h4zm-3-4V3.5L18.5 9z"}),"AudioFile"),Qj=P([$.jsx("path",{d:"M16.5 12h-9c-.55 0-1 .45-1 1v1h11v-1c0-.55-.45-1-1-1M7.25 8.5h4v2h-4zm5.5 0h4v2h-4z"},"0"),$.jsx("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-1 15h-1.5v-1.5h-11V17H5v-3.83c0-.66.25-1.26.65-1.72V9c0-1.1.9-2 2-2H11c.37 0 .72.12 1 .32.28-.2.63-.32 1-.32h3.35c1.1 0 2 .9 2 2v2.45c.4.46.65 1.06.65 1.72z"},"1")],"BedroomParent"),bj=P($.jsx("path",{d:"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2"}),"Bookmark"),Uj=P($.jsx("path",{d:"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2m0 15-5-2.18L7 18V5h10z"}),"BookmarkBorder"),$j=P($.jsx("path",{d:"M22 24H2v-4h20zM13.06 5.19l3.75 3.75L7.75 18H4v-3.75zm4.82 2.68-3.75-3.75 1.83-1.83c.39-.39 1.02-.39 1.41 0l2.34 2.34c.39.39.39 1.02 0 1.41z"}),"BorderColor"),Pj=P($.jsx("path",{d:"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6c3.31 0 6 2.69 6 6s-2.69 6-6 6"}),"Brightness4"),Wj=P($.jsx("path",{d:"M20 15.31 23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6"}),"Brightness5"),tM=P($.jsx("path",{d:"M20 15.31 23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20zM12 18V6c3.31 0 6 2.69 6 6s-2.69 6-6 6"}),"Brightness6"),Jj=P($.jsx("path",{d:"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6m0-10c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4"}),"Brightness7"),Bj=P($.jsx("path",{d:"m22.7 19-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4"}),"Build"),Rj=P($.jsx("path",{d:"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 18H4V8h16z"}),"CalendarToday"),Fj=P($.jsx("path",{d:"m20.71 5.63-2.34-2.34a.996.996 0 0 0-1.41 0l-3.12 3.12-1.93-1.91-1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92-8.92 1.42 1.42 1.41-1.41-1.92-1.92 3.12-3.12c.4-.4.4-1.03.01-1.42M6.92 19 5 17.08l8.06-8.06 1.92 1.92z"}),"Colorize"),Gj=P($.jsx("path",{d:"m13.7826 15.1719 2.1213-2.1213 5.9963 5.9962-2.1213 2.1213zM17.5 10c1.93 0 3.5-1.57 3.5-3.5 0-.58-.16-1.12-.41-1.6l-2.7 2.7-1.49-1.49 2.7-2.7c-.48-.25-1.02-.41-1.6-.41C15.57 3 14 4.57 14 6.5c0 .41.08.8.21 1.16l-1.85 1.85-1.78-1.78.71-.71-1.41-1.41L12 3.49c-1.17-1.17-3.07-1.17-4.24 0L4.22 7.03l1.41 1.41H2.81l-.71.71 3.54 3.54.71-.71V9.15l1.41 1.41.71-.71 1.78 1.78-7.41 7.41 2.12 2.12L16.34 9.79c.36.13.75.21 1.16.21"}),"Construction"),Hj=P($.jsx("path",{d:"M19 2h-4.18C14.4.84 13.3 0 12 0S9.6.84 9.18 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1m7 18H5V4h2v3h10V4h2z"}),"ContentPaste"),Vj=P($.jsx("path",{d:"M17 15h2V7c0-1.1-.9-2-2-2H9v2h8zM7 17V1H5v4H1v2h4v10c0 1.1.9 2 2 2h10v4h2v-4h4v-2z"}),"Crop"),Zj=P($.jsx("path",{d:"M4 7v2c0 .55-.45 1-1 1H2v4h1c.55 0 1 .45 1 1v2c0 1.65 1.35 3 3 3h3v-2H7c-.55 0-1-.45-1-1v-2c0-1.3-.84-2.42-2-2.83v-.34C5.16 11.42 6 10.3 6 9V7c0-.55.45-1 1-1h3V4H7C5.35 4 4 5.35 4 7m17 3c-.55 0-1-.45-1-1V7c0-1.65-1.35-3-3-3h-3v2h3c.55 0 1 .45 1 1v2c0 1.3.84 2.42 2 2.83v.34c-1.16.41-2 1.52-2 2.83v2c0 .55-.45 1-1 1h-3v2h3c1.65 0 3-1.35 3-3v-2c0-.55.45-1 1-1h1v-4z"}),"DataObject"),Yo=P($.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 16H8v-2h8zm0-4H8v-2h8zm-3-5V3.5L18.5 9z"}),"Description"),Xj=P($.jsx("path",{d:"M18.41 5.8 17.2 4.59c-.78-.78-2.05-.78-2.83 0l-2.68 2.68L3 15.96V20h4.04l8.74-8.74 2.63-2.63c.79-.78.79-2.05 0-2.83M6.21 18H5v-1.21l8.66-8.66 1.21 1.21zM11 20l4-4h6v4z"}),"DriveFileRenameOutline"),Kj=P($.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error"),qj=P($.jsx("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore"),ey=P($.jsx("path",{d:"M20 19.59V8l-6-6H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c.45 0 .85-.15 1.19-.4l-4.43-4.43c-.8.52-1.74.83-2.76.83-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5c0 1.02-.31 1.96-.83 2.75zM9 13c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3-3 1.34-3 3"}),"FindInPage"),ty=P($.jsx("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"}),"FolderOpen"),sy=P($.jsx("path",{d:"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m-2.06 11L15 15.28 12.06 17l.78-3.33-2.59-2.24 3.41-.29L15 8l1.34 3.14 3.41.29-2.59 2.24z"}),"FolderSpecial"),iy=P($.jsx("path",{d:"M9.93 13.5h4.14L12 7.98zM20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-4.05 16.5-1.14-3H9.17l-1.12 3H5.96l5.11-13h1.86l5.11 13z"}),"FontDownload"),ry=P($.jsx("path",{d:"M10 4v3h2.21l-3.42 8H6v3h8v-3h-2.21l3.42-8H18V4z"}),"FormatItalic"),oy=P($.jsx("path",{d:"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2M8.5 13.5l2.5 3.01L14.5 12l4.5 6H5z"}),"Image"),sM=P($.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info"),kN=P($.jsx("path",{d:"M6 2c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm7 7V3.5L18.5 9z"}),"InsertDriveFile"),ny=P($.jsx("path",{d:"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"}),"KeyboardReturn"),vN=P($.jsx("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5"}),"Link"),ay=P($.jsx("path",{d:"M3 13h2v-2H3zm0 4h2v-2H3zm0-8h2V7H3zm4 4h14v-2H7zm0 4h14v-2H7zM7 7v2h14V7z"}),"List"),My=P($.jsx("path",{d:"M19 5v14H5V5zm1.1-2H3.9c-.5 0-.9.4-.9.9v16.2c0 .4.4.9.9.9h16.2c.4 0 .9-.5.9-.9V3.9c0-.5-.5-.9-.9-.9M11 7h6v2h-6zm0 4h6v2h-6zm0 4h6v2h-6zM7 7h2v2H7zm0 4h2v2H7zm0 4h2v2H7z"}),"ListAlt"),cy=P($.jsx("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-5 14h-2V9h-2V7h4z"}),"LooksOne"),uy=P($.jsx("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3z"}),"MusicNote"),ly=P($.jsx("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"NavigateNext"),iM=P($.jsx("path",{d:"M12 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0 10c2.7 0 5.8 1.29 6 2H6c.23-.72 3.31-2 6-2m0-12C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4m0 10c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"PersonOutlined"),Ny=P($.jsx("path",{d:"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2M8.5 13.5l2.5 3.01L14.5 12l4.5 6H5z"}),"Photo"),go=P($.jsx("path",{d:"M5 4v2h14V4zm0 10h4v6h6v-6h4l-7-7z"}),"Publish"),rM=P($.jsx("path",{d:"m20.2 5.9.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2s3 .6 4.2 1.7m-.9.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4l.8.8c.7-.7 1.6-1 2.5-1s1.8.3 2.5 1zM19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2M8 18H6v-2h2zm3.5 0h-2v-2h2zm3.5 0h-2v-2h2z"}),"Router"),Ly=P($.jsx("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7zm-6 .67 2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),ea=P($.jsx("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings"),jo=P($.jsx("path",{d:"M12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m7-7H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2m-1.75 9c0 .23-.02.46-.05.68l1.48 1.16c.13.11.17.3.08.45l-1.4 2.42c-.09.15-.27.21-.43.15l-1.74-.7c-.36.28-.76.51-1.18.69l-.26 1.85c-.03.17-.18.3-.35.3h-2.8c-.17 0-.32-.13-.35-.29l-.26-1.85c-.43-.18-.82-.41-1.18-.69l-1.74.7c-.16.06-.34 0-.43-.15l-1.4-2.42c-.09-.15-.05-.34.08-.45l1.48-1.16c-.03-.23-.05-.46-.05-.69s.02-.46.05-.68l-1.48-1.16c-.13-.11-.17-.3-.08-.45l1.4-2.42c.09-.15.27-.21.43-.15l1.74.7c.36-.28.76-.51 1.18-.69l.26-1.85c.03-.17.18-.3.35-.3h2.8c.17 0 .32.13.35.29l.26 1.85c.43.18.82.41 1.18.69l1.74-.7c.16-.06.34 0 .43.15l1.4 2.42c.09.15.05.34-.08.45l-1.48 1.16c.03.23.05.46.05.69"}),"SettingsApplications"),gy=P($.jsx("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"}),"ShowChart"),oM=P($.jsx("path",{d:"M11.99 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10m3.61 6.34c1.07 0 1.93.86 1.93 1.93s-.86 1.93-1.93 1.93-1.93-.86-1.93-1.93c-.01-1.07.86-1.93 1.93-1.93m-6-1.58c1.3 0 2.36 1.06 2.36 2.36s-1.06 2.36-2.36 2.36-2.36-1.06-2.36-2.36c0-1.31 1.05-2.36 2.36-2.36m0 9.13v3.75c-2.4-.75-4.3-2.6-5.14-4.96 1.05-1.12 3.67-1.69 5.14-1.69.53 0 1.2.08 1.9.22-1.64.87-1.9 2.02-1.9 2.68M11.99 20c-.27 0-.53-.01-.79-.04v-4.07c0-1.42 2.94-2.13 4.4-2.13 1.07 0 2.92.39 3.84 1.15-1.17 2.97-4.06 5.09-7.45 5.09"}),"SupervisedUserCircle"),jy=P($.jsx("path",{d:"M2.5 4v3h5v12h3V7h5V4zm19 5h-9v3h3v7h3v-7h3z"}),"TextFields"),yy=P($.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z"}),"UploadFile"),Ty=P($.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z"}),"UploadFileOutlined"),Dy=P($.jsx("path",{d:"M16 13h-3V3h-2v10H8l4 4zM4 19v2h16v-2z"}),"VerticalAlignBottom"),dy=P($.jsx("path",{d:"M8 11h3v10h2V11h3l-4-4zM4 3v2h16V3z"}),"VerticalAlignTop"),hy=P($.jsx("path",{d:"M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11z"}),"Videocam"),zy=P($.jsx("path",{d:"M14.67 5v14H9.33V5zm1 14H21V5h-5.33zm-7.34 0V5H3v14z"}),"ViewColumn"),wy=P($.jsx("path",{d:"M4 15h16v-2H4zm0 4h16v-2H4zm0-8h16V9H4zm0-6v2h16V5z"}),"ViewHeadline"),Iy=P($.jsx("path",{d:"M14.67 5v6.5H9.33V5zm1 6.5H21V5h-5.33zm-1 7.5v-6.5H9.33V19zm1-6.5V19H21v-6.5zm-7.34 0H3V19h5.33zm0-1V5H3v6.5z"}),"ViewModule"),Cy=P($.jsx("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility"),py=P($.jsx("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning"),li=P($.jsx("path",{d:"m1 9 2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9m8 8 3 3 3-3c-1.65-1.66-4.34-1.66-6 0m-4-4 2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13"}),"Wifi"),$r=P($.jsx("path",{d:"M22.99 9C19.15 5.16 13.8 3.76 8.84 4.78l2.52 2.52c3.47-.17 6.99 1.05 9.63 3.7zm-4 4c-1.29-1.29-2.84-2.13-4.49-2.56l3.53 3.53zM2 3.05 5.07 6.1C3.6 6.82 2.22 7.78 1 9l1.99 2c1.24-1.24 2.67-2.16 4.2-2.77l2.24 2.24C7.81 10.89 6.27 11.73 5 13v.01L6.99 15c1.36-1.36 3.14-2.04 4.92-2.06L18.98 20l1.27-1.26L3.29 1.79zM9 17l3 3 3-3c-1.65-1.66-4.34-1.66-6 0"}),"WifiOff"),gn=11/23/100;function Bc(s){const e={r:0,g:0,b:0};if(s.length===7)e.r=parseInt(s.substring(1,3),16),e.g=parseInt(s.substring(3,5),16),e.b=parseInt(s.substring(5,7),16);else if(s.length===4){const t=s[1],i=s[2],r=s[3];e.r=parseInt(t+t,16),e.g=parseInt(i+i,16),e.b=parseInt(r+r,16)}return e}function Ay(s){return`#${Math.round(s.r).toString(16).padStart(2,"0")}${Math.round(s.g).toString(16).padStart(2,"0")}${Math.round(s.b).toString(16).padStart(2,"0")}`}function my(s,e,t){const i=Bc(s),r=Bc(e);return i.r+=r.r*(.05+gn*(t-1)),i.g+=r.g*(.05+gn*(t-1)),i.b+=r.b*(.05+gn*(t-1)),Ay(i)}function Pr(s,e){const t={};for(let i=1;i<=24;i++)t[`elevation${i}`]={backgroundColor:my(s,e,i)};return t}function fy(s,e){var n,M,c,l,N,u,L,g,j,y,T;let t,i;s==="dark"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[200],"&:hover":{color:st[100]}}},MuiPaper:Pr("#121212","#fff")},t={name:s,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):s==="blue"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#3399CC"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[400],"&:hover":{color:st[300]}}}},t={name:s,palette:{mode:"dark",background:{paper:"#151d21",default:"#151d21"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):s==="colored"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#2a3135"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[200],"&:hover":{color:st[100]}}},MuiPaper:Pr("#151d21","#fff")},t={name:s,palette:{mode:"light",primary:{main:"#3399CC"},secondary:{main:"#164477"},expert:"#96fc96"}}):s==="PT"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#0F99DE"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[400],"&:hover":{color:st[300]}}}},t={name:s,palette:{mode:"light",primary:{main:"#0F99DE"},secondary:{main:"#88A536"},expert:"#BD1B24"}}):s==="NW"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[400],"&:hover":{color:st[300]}}},MuiPaper:Pr("#121212","#fff")},t={name:s,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#00af78"},secondary:{main:"#005a40"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):s==="HA"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:"#db0a33","&:hover":{color:"#FF0a33"}}},MuiPaper:Pr("#121212","#fff")},t={name:s,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#970720"},secondary:{main:"#db0a33"},expert:"#db0a33",nonAck:"#ffe96a",text:{primary:"#ffffff",secondary:"#ffffff"}}}):(i={MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[400],"&:hover":{color:st[300]}}}},t={name:s,palette:{mode:"light",primary:{main:"#3399CC",dark:"#256c97",light:"#76d0fd"},secondary:{main:"#164477"},expert:"#14bb00"}}),t.toolbar={height:48},t.saveToolbar={background:(M=(n=t.palette)==null?void 0:n.primary)==null?void 0:M.main,button:{borderRadius:3,height:32}},t.palette&&(t.palette.grey={main:Oc[300],dark:Oc[400]});const r=Ec(t),o=r.palette;return Ec(r,{...e||void 0,components:{...i,MuiButton:{variants:[{props:{variant:"contained",color:"grey"},style:{backgroundColor:(c=o.grey)==null?void 0:c[300],color:o.getContrastText&&((l=o.grey)!=null&&l[300])?o.getContrastText(o.grey[300]):void 0}},{props:{variant:"outlined",color:"grey"},style:{color:(N=o.text)==null?void 0:N.primary,borderColor:o.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)","&.Mui-disabled":{border:`1px solid ${(u=o.action)==null?void 0:u.disabledBackground}`},"&:hover":{borderColor:o.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)",backgroundColor:_c(((L=o.text)==null?void 0:L.primary)||"",((g=o.action)==null?void 0:g.hoverOpacity)||.04)}}},{props:{variant:"text",color:"grey"},style:{color:(j=o.text)==null?void 0:j.primary,"&:hover":{backgroundColor:_c(((y=o.text)==null?void 0:y.primary)||"",((T=o.action)==null?void 0:T.hoverOpacity)||.04)}}}]},...(e==null?void 0:e.components)||void 0}})}function Oy(){let s,e;const t=new Promise((i,r)=>{s=i,e=r});return t.resolve=s,t.reject=e,t}function ta(s){return(s==null?void 0:s.rows.map(e=>e.value).filter(e=>!!e))??[]}function vt(s){return s!=null&&s.startsWith("system.host.")||(s=`system.host.${s}`),s}function Pi(s){return s!=null&&s.startsWith("system.host.")&&(s=s.substring(12)),s}function Rc(s){return new Promise(e=>{setTimeout(e,s)})}function Wr(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}typeof globalThis.process<"u"&&(globalThis.location||={href:"http://localhost:8081/",protocol:"http:",host:"localhost:8081",pathname:"/",hostname:"localhost",reload:()=>{}},globalThis.localStorage||={_keys:{},setItem:(s,e)=>{globalThis.localStorage._keys[s]=e},getItem:s=>s in globalThis.localStorage._keys?globalThis.localStorage._keys[s]:null,removeItem:s=>{s in globalThis.localStorage._keys&&delete globalThis.localStorage._keys[s]}},globalThis.sessionStorage||=globalThis.localStorage,globalThis.navigator||={language:"en"});var ht;(function(s){s[s.CONNECTING=0]="CONNECTING",s[s.CONNECTED=1]="CONNECTED",s[s.OBJECTS_LOADED=2]="OBJECTS_LOADED",s[s.READY=3]="READY"})(ht||(ht={}));var Qe;(function(s){s.PERMISSION_ERROR="permissionError",s.NOT_CONNECTED="notConnectedError",s.TIMEOUT="timeout",s.NOT_ADMIN="Allowed only in admin",s.NOT_SUPPORTED="Not supported"})(Qe||(Qe={}));const Ive=Qe.PERMISSION_ERROR;Qe.NOT_CONNECTED;const Ey=["material","echarts","vis"];class ke{props;connId;lastAccessToken=null;ignoreState="";connected=!1;subscribed=!1;firstConnect=!0;waitForRestart=!1;loaded=!1;simStates={};objectViewCached;constructor(e){this.props=this.applyDefaultProps(e),this.connId=`${this.props.name?`${this.props.name}-`:""}${Math.round(Math.random()*1e6).toString().padStart(6,"0")}`,this.waitForSocketLib().then(()=>this.startSocket()).catch(t=>{alert(`Socket connection could not be initialized: ${t}`)})}applyDefaultProps(e){return{...e,protocol:e.protocol||globalThis.location.protocol,host:e.host||globalThis.location.hostname,port:e.port||(globalThis.location.port==="3000"?8081:globalThis.location.port),ioTimeout:Math.max(e.ioTimeout||2e4,2e4),cmdTimeout:Math.max(e.cmdTimeout||5e3,5e3),admin5only:e.admin5only||!1,autoSubscribes:e.autoSubscribes??[],autoSubscribeLog:e.autoSubscribeLog??!1,doNotLoadACL:e.doNotLoadACL??!0,doNotLoadAllObjects:e.doNotLoadAllObjects??!0}}statesSubscribes={};filesSubscribes={};objectsSubscribes={};objects={};states={};acl=null;isSecure=!1;onReadyDone=!1;onConnectionHandlers=[];onLogHandlers=[];onCmdStdoutHandler;onCmdStderrHandler;onCmdExitHandler;onError(e){(this.props.onError??console.error)(e)}_socket;_waitForSocketPromise;_waitForFirstConnectionPromise=Oy();_instanceSubscriptions={};_promises={};_authTimer=null;_refreshTimer=null;_systemConfig;get systemConfig(){return this._systemConfig}systemLang="en";static isWeb(){return globalThis.socketUrl!==void 0}waitForSocketLib(){return this._waitForSocketPromise?this._waitForSocketPromise:(this._waitForSocketPromise=new Promise(async(e,t)=>{if(this.props.connect){e();return}if(typeof globalThis.io>"u"&&typeof globalThis.iob>"u")if(typeof globalThis.registerSocketOnLoad=="function")globalThis.registerSocketOnLoad(()=>e());else{for(let i=1;i<=30;i++){if(globalThis.io||globalThis.iob)return e();await Rc(100)}t(new Error("Socket library could not be loaded!"))}else e()}),this._waitForSocketPromise)}async startSocket(){if(this._socket)return;let e=this.props.host,t=this.props.port,i=(this.props.protocol||globalThis.location.protocol).replace(":",""),r=globalThis.location.pathname;if(globalThis.location.hostname==="iobroker.net"||globalThis.location.hostname==="iobroker.pro")r="";else{if(globalThis.socketUrl){const c=new globalThis.URL(globalThis.socketUrl);e=c.hostname,t=c.port,i=c.protocol.replace(":","")}const M=r.lastIndexOf("/");if(M!==-1&&(r=r.substring(0,M+1)),ke.isWeb()){const c=r.split("/");c.length>2&&(c.pop(),c.pop(),Ey.includes(c[c.length-1])&&c.pop(),r=c.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?`${i}://${e}:${t}`:`${i}://${e}`,n=this.props.connect||(globalThis.io||globalThis.iob).connect;return this._socket=n(o,{path:r.endsWith("/")?`${r}socket.io`:`${r}/socket.io`,query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid,token:this.props.token}),this._socket.on("connect",M=>{var l;(l=globalThis.addEventListener)==null||l.call(globalThis,"storage",this.onAccessTokenUpdated);const c=ke.readTokens();if(c&&!c.owner){const N=Date.now();this.saveTokens({access_token:c.access_token,refresh_token:c.refresh_token,expires_in:Math.round((c.expires_in.getTime()-N)/1e3),refresh_token_expires_in:Math.round((c.refresh_token_expires_in.getTime()-N)/1e3),token_type:"Bearer"},c.stayLoggedIn)}this.onReadyDone=!1,M!==!0?(this.connected=!0,setTimeout(()=>this.getVersion().then(N=>{const[u,L,g]=N.version.split(".");parseInt(u,10)*1e4+parseInt(L,10)*100+parseInt(g,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",(y,T)=>this.onPreConnect(y,T))}).catch(N=>this.onError({message:N.toString(),operation:"getVersion"})),500)):this._socket.emit("authenticate",(N,u)=>{this.onPreConnect(N,u)})}),this._socket.on("reconnect",()=>{var M,c;this.onReadyDone=!1,(c=(M=this.props).onProgress)==null||c.call(M,ht.READY),this.connected=!0,this.waitForRestart?globalThis.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach(l=>l(!0)))}),this._socket.on("disconnect",()=>{var M,c;this.onReadyDone=!1,this.connected=!1,this.subscribed=!1,(c=(M=this.props).onProgress)==null||c.call(M,ht.CONNECTING),this.onConnectionHandlers.forEach(l=>l(!1))}),this._socket.on("reauthenticate",()=>this.authenticate()),this._socket.on("log",M=>{var c,l;(l=(c=this.props).onLog)==null||l.call(c,M),this.onLogHandlers.forEach(N=>N(M))}),this._socket.on("error",M=>{let c;M==null?c="":typeof M.toString=="function"?c=M.toString():(c=JSON.stringify(M),console.error(`Received strange error: ${c}`)),c.includes("User not authorized")?this.authenticate():c.includes("websocket error")?(console.error(`Socket Error => reload: ${M}`),globalThis.location.reload()):console.error(`Socket Error: ${M}`)}),this._socket.on("connect_error",M=>console.error(`Connect error: ${M}`)),this._socket.on("permissionError",M=>this.onError({message:"no permission",operation:M.operation,type:M.type,id:M.id||""})),this._socket.on("objectChange",(M,c)=>{setTimeout(()=>this.objectChange(M,c),0)}),this._socket.on("stateChange",(M,c)=>{setTimeout(()=>this.stateChange(M,c),0)}),this._socket.on("im",(M,c,l)=>{setTimeout(()=>this.instanceMessage(M,c,l),0)}),this._socket.on("fileChange",(M,c,l)=>{setTimeout(()=>this.fileChange(M,c,l),0)}),this._socket.on("cmdStdout",(M,c)=>{var l;(l=this.onCmdStdoutHandler)==null||l.call(this,M,c)}),this._socket.on("cmdStderr",(M,c)=>{var l;(l=this.onCmdStderrHandler)==null||l.call(this,M,c)}),this._socket.on("cmdExit",(M,c)=>{var l;(l=this.onCmdExitHandler)==null||l.call(this,M,c)}),Promise.resolve()}onPreConnect(e,t){var i,r;this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?globalThis.location.reload():(this.firstConnect?this.loadData().catch(o=>{console.error(`Cannot load data: ${o}`)}):(r=(i=this.props).onProgress)==null||r.call(i,ht.READY),this._subscribe(!0),this.onConnectionHandlers.forEach(o=>o(!0)),this.checkAccessTokenExpire()),this._waitForFirstConnectionPromise.resolve()}static readTokens(){let e=globalThis.sessionStorage.getItem("iob_tokens");const t=!e;if(e||(e=globalThis.localStorage.getItem("iob_tokens")),!e)return null;const[i,r,o,n,M]=e.split(";"),c=new Date(r);return c.getTime(){if(e.key==="iob_tokens"){const t=ke.readTokens();t&&(console.log(`Tab ${this.connId} received updated token: ${t.access_token}`),this.updateTokenExpiration(t.access_token))}};updateTokenExpiration(e){this.lastAccessToken!==e&&(this.lastAccessToken=e,this._socket.emit("updateTokenExpiration",e,(t,i)=>{t?(console.error(`[UPDATE/${new Date().toISOString()}] cannot say to server about new token: ${t}`),globalThis.location.reload()):i?console.log(`[UPDATE/${new Date().toISOString()}] server accepted new token: ${e}`):(console.error(`[UPDATE/${new Date().toISOString()}] cannot say to server about new token`),globalThis.location.reload())})),this.checkAccessTokenExpire()}refreshTokens(e,t){if(!e){console.log(`[REFRESH/${new Date().toISOString()}] No token structure found => reloading the page`),setTimeout(()=>globalThis.location.reload(),500);return}t||!e.owner||e.owner===this.connId?(console.log(`[REFRESH/${new Date().toISOString()}] claim ownership of the token`),this.acquireTokenLock()?(console.log(`[REFRESH/${new Date().toISOString()}] refreshing token`),fetch("./oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`grant_type=refresh_token&refresh_token=${e.refresh_token}&client_id=ioBroker&stayloggedin=${e.stayLoggedIn}`}).then(i=>{if(i.ok)return i.json();throw new Error("Cannot refresh access token")}).then(i=>{if(i.access_token)console.log(`[REFRESH/${new Date().toISOString()}] received new token: ${i.access_token}`),this.saveTokens(i,e.stayLoggedIn),this.releaseTokenLock(),this.updateTokenExpiration(i.access_token);else throw new Error("Cannot get access token")}).catch(i=>{console.warn(`[REFRESH/${new Date().toISOString()}] cannot refresh token: ${i}`),this.releaseTokenLock(),this.deleteTokens(e.stayLoggedIn),console.error(i),globalThis.location.reload()})):(console.log(`[REFRESH/${new Date().toISOString()}] Someone else is updating the token, so wait for the next check`),this.checkAccessTokenExpire())):this.lastAccessToken!==e.access_token&&this.updateTokenExpiration(e.access_token)}acquireTokenLock(){const e=Date.now(),t=globalThis.localStorage.getItem("iob_token_semaphore");if(t)try{const r=JSON.parse(t);if(e{r?(console.log(`[TOKEN/${new Date().toISOString()}] Token will be prolonged`),this.refreshTokens(e,i)):(console.log(`[TOKEN/${new Date().toISOString()}] Token will not be prolonged. Reloading the page`),setTimeout(()=>globalThis.location.reload(),Date.now()>t?500:t-Date.now()))})):(console.log(`[TOKEN/${new Date().toISOString()}] No tokenTimeoutHandler defined. Prolonging the token`),this.refreshTokens(e,i))):this.lastAccessToken!==e.access_token?(console.log(`[TOKEN/${new Date().toISOString()}] We are not the owner of the token, but we will inform the server about new token`),this.refreshTokens(e)):(console.log(`[TOKEN/${new Date().toISOString()}] We are not the owner of the token and the token did not change. Check in 3 seconds if the owner updated the token`),this._refreshTimer=setTimeout(()=>{this._refreshTimer=null,this.checkAccessTokenExpire()},3e3)):(console.log(`[TOKEN/${new Date().toISOString()}] We do not have a refresh token, so we need to reauthenticate`),setTimeout(()=>globalThis.location.reload(),Date.now()>t?500:t-Date.now()))}else this._refreshTimer=setTimeout(()=>{this._refreshTimer=null,this.checkAccessTokenExpire()},t-Date.now()-3e4>12e4?12e4:t-Date.now()-3e4)}}}static isCloud(){return globalThis.location.hostname.includes("amazonaws.com")||globalThis.location.hostname.includes("iobroker.in")?!0:typeof globalThis.socketUrl>"u"?!1:globalThis.socketUrl.includes("iobroker.in")||globalThis.socketUrl.includes("amazonaws")}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnectionPromise}async getUserPermissions(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getUserPermissions",(i,r)=>{i?t(i):e(r||null)})}})}async loadData(){if(this.loaded)return;const e=10;for(let t=1;t<=e;t++){if(this.doLoadData().catch(i=>console.error(`Cannot load data: ${i}`)),this.loaded)return;await Rc(ke.isCloud()?5e3:1e3)}}async doLoadData(){var e,t,i,r,o,n,M,c,l;if(!this.loaded){if(!this.props.doNotLoadACL)try{this.acl=await this.getUserPermissions()}catch(N){this.onError(`Cannot read user permissions: ${N}`);return}try{this.props.admin5only&&!ke.isWeb()&&(!globalThis.vendorPrefix||globalThis.vendorPrefix==="@@vendorPrefix@@")?this._systemConfig=await this.getCompactSystemConfig():this._systemConfig=await this.getSystemConfig()}catch(N){this.onError(`Cannot read system config: ${N}`);return}this._systemConfig&&(this.systemLang=(e=this._systemConfig.common)==null?void 0:e.language,this.systemLang||(this.systemLang=globalThis.navigator.userLanguage||globalThis.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substring(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en"),this._systemConfig.common.language=this.systemLang)),(i=(t=this.props).onLanguage)==null||i.call(t,this.systemLang),this.loaded=!0,(o=(r=this.props).onProgress)==null||o.call(r,ht.CONNECTED),this.firstConnect=!1,this.props.doNotLoadAllObjects?this.props.admin5only?this.objects={}:this.objects={"system.config":this._systemConfig}:this.objects=await this.getObjects(),(M=(n=this.props).onProgress)==null||M.call(n,ht.READY),this.onReadyDone||(this.onReadyDone=!0,(l=(c=this.props).onReady)==null||l.call(c,this.objects))}}authenticate(){globalThis.location.search.includes("&href=")?globalThis.location.href=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname}${globalThis.location.search}`:globalThis.location.href=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname}?login&href=${encodeURIComponent(globalThis.location.search+globalThis.location.hash)}`}async subscribeState(...e){let t,i,r;e.length===3?[t,i,r]=e:([t,r]=e,i=!1);let o;if(Array.isArray(t)?o=t:o=[t],typeof r!="function")throw new Error("The state change handler must be a function!");const n=[];for(let M=0;MM.includes("*"))){let M;for(let c=0;cconsole.error(`Cannot call state change handler: ${L}`))}}}else try{const M=await(ke.isWeb()?this.getStates(o):this.getForeignStates(o));if(M)for(const[c,l]of Object.entries(M)){const N=r(c,l);N instanceof Promise&&N.catch(u=>console.error(`Cannot call state change handler: ${u}`))}}catch(M){console.error(`Cannot getState "${o.join(", ")}": ${M.message}`);return}}async subscribeStateAsync(e,t){return this.subscribeState(e,t)}unsubscribeState(e,t){var o;let i;Array.isArray(e)?i=e:i=[e];const r=[];for(let n=0;n{try{const N=l(e,t,i);N instanceof Promise&&N.catch(u=>console.error(`Cannot call object change handler: ${u}`))}catch(N){console.error(`Error by callback of objectChange: ${N}`)}});if(r){const M=(n=(o=this.props).onObjectChange)==null?void 0:n.call(o,e,t);M instanceof Promise&&M.catch(c=>console.error(`Cannot call object change handler: ${c}`))}}stateChange(e,t){for(const i of Object.values(this.statesSubscribes))if(i.reg.test(e))for(const r of i.cbs)try{const o=r(e,t??null);o instanceof Promise&&o.catch(n=>console.error(`Cannot call state change handler: ${n}`))}catch(o){console.error(`Error by callback of stateChanged: ${o}`)}}instanceMessage(e,t,i){var r;(r=this._instanceSubscriptions[t])==null||r.forEach(o=>{if(o.messageType===e){const n=o.callback(i,t,e);n instanceof Promise&&n.catch(M=>console.error(`Cannot call instance message handler: ${M}`))}})}fileChange(e,t,i){for(const r of Object.values(this.filesSubscribes))if(r.regId.test(e)&&r.regFilePattern.test(t))for(const o of r.cbs)try{o(e,t,i)}catch(n){console.error(`Error by callback of fileChange: ${n}`)}}async subscribeFiles(e,t,i){if(typeof i!="function")throw new Error("The state change handler must be a function!");let r;Array.isArray(t)?r=t:r=[t];const o=[];for(let n=0;n{const u={elapsed:!1,clearTimeout:()=>{}};let L;i!==!1&&(L=setTimeout(()=>{u.elapsed=!0,r==null||r(),e&&this._promises[e]instanceof Promise&&delete this._promises[e],N(new Error(Qe.TIMEOUT))},i??this.props.cmdTimeout),u.clearTimeout=()=>{clearTimeout(L)});try{await M(l,N,u)}catch(g){e&&this._promises[e]instanceof Promise&&delete this._promises[e],N(new Error(g.toString()))}});return e&&(this._promises[e]=c),c}resetCache(e,t){t?Object.keys(this._promises).filter(i=>i.startsWith(e)).forEach(i=>{delete this._promises[i]}):delete this._promises[e]}getStates(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getStates",e,(r,o)=>{this.states=o??{},r?i(r):t(this.states)})}})}getState(e){return this.request({commandTimeout:!1,executor:(t,i)=>{if(e&&e===this.ignoreState){t(this.simStates[e]||{val:null,ack:!0});return}this._socket.emit("getState",e,(r,o)=>{r?i(r):t(o)})}})}getBinaryState(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getBinaryState",e,(r,o)=>{r?i(r):t(o)})}})}setBinaryState(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("setBinaryState",e,t,o=>{o?r(o):i()})}})}setState(e,t,i){return typeof i=="boolean"&&(t={val:t,ack:i}),this.request({commandTimeout:!1,executor:(r,o)=>{if(e&&e===this.ignoreState){let n;if(typeof i=="boolean"||typeof t=="object"&&t.val!==void 0?n=t:n={val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=n,this.statesSubscribes[e])for(const M of this.statesSubscribes[e].cbs)try{const c=M(e,n);c instanceof Promise&&c.catch(l=>console.error(`Cannot call state change handler: ${l}`))}catch(c){console.error(`Error by callback of stateChanged: ${c}`)}r();return}this._socket.emit("setState",e,t,n=>{n?o(n):r()})}})}getObjects(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{if(!e&&this.objects){i(this.objects);return}this._socket.emit(ke.isWeb()?"getObjects":"getAllObjects",(o,n)=>{var M,c;t||(c=(M=this.props).onProgress)==null||c.call(M,ht.OBJECTS_LOADED),o?r(o):(this.objects=n??{},i(this.objects))})}})}getObjectsById(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getObjects",e,(r,o)=>{r?i(r):t(o)})}})}_subscribe(e){var t,i;if(e&&!this.subscribed){this.subscribed=!0,(t=this.props.autoSubscribes)!=null&&t.length&&this._socket.emit("subscribeObjects",this.props.autoSubscribes);const r=Object.keys(this.objectsSubscribes);r.length&&this._socket.emit("subscribeObjects",r),Object.keys(this.objectsSubscribes).forEach(o=>this._socket.emit("subscribeObjects",o)),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!0),Object.keys(this.statesSubscribes).forEach(o=>this._socket.emit("subscribe",o)),Object.keys(this.filesSubscribes).forEach(o=>{const[n,M]=o.split("$%$");this._socket.emit("subscribeFiles",n,M)})}else if(!e&&this.subscribed){this.subscribed=!1,(i=this.props.autoSubscribes)!=null&&i.length&&this._socket.emit("unsubscribeObjects",this.props.autoSubscribes);const r=Object.keys(this.objectsSubscribes);r.length&&this._socket.emit("unsubscribeObjects",r),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach(o=>this._socket.emit("unsubscribe",o)),Object.keys(this.filesSubscribes).forEach(o=>{const[n,M]=o.split("$%$");this._socket.emit("unsubscribeFiles",n,M)})}}requireLog(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("requireLog",e,r=>{r?i(r):t()})}})}delObject(e,t=!1){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("delObject",e,{maintenance:t},o=>{o?r(o):i()})}})}delObjects(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("delObjects",e,{maintenance:t},o=>{o?r(o):i()})}})}setObject(e,t){return t?(t=JSON.parse(JSON.stringify(t)),delete t.from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("setObject",e,t,o=>{o?r(o):i()})}})):Promise.reject(new Error("Null object is not allowed"))}getObject(e){return this.request({commandTimeout:!1,executor:(t,i)=>{if(e&&e===this.ignoreState){t({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed"}});return}this._socket.emit("getObject",e,(r,o)=>{r?i(r):t(o)})}})}sendTo(e,t,i){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendTo",e,t,i,o=>{r(o)})}})}extendObject(e,t){return t?(t=JSON.parse(JSON.stringify(t)),delete t.from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("extendObject",e,t,o=>{o?r(o):i()})}})):Promise.reject(new Error("Null object is not allowed"))}registerLogHandler(e){this.onLogHandlers.includes(e)||this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);t!==-1&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){this.onConnectionHandlers.includes(e)||this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);t!==-1&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return this.request({cacheKey:`enums_${e||"all"}`,forceUpdate:t,commandTimeout:!1,executor:(i,r)=>{this._socket.emit("getObjectView","system","enum",{startkey:`enum.${e||""}`,endkey:e?`enum.${e}.香`:"enum.香"},(o,n)=>{if(o)r(o);else{const M={};if(n)for(let c=0;c{i||="",r||="香",this._socket.emit("getObjectView",e,t,{startkey:i,endkey:r},(M,c)=>{if(M)n(M);else{const l={};if(c&&c.rows)for(let N=0;N{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"香"},(i,r)=>{var o;i?t(i):e((o=r.rows)==null?void 0:o.map(n=>n.value).filter(n=>!!n))})}})}readDir(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("readDir",e,t,(o,n)=>{o?r(o):i(n)})}})}readFile(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit(i?"readFile64":"readFile",e,t,(n,M,c)=>{n?o(n):r({file:M,mimeType:c})})}})}writeFile64(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{if(typeof i=="string")this._socket.emit("writeFile",e,t,i,n=>{n?o(n):r()});else{const n=btoa(new Uint8Array(i).reduce((M,c)=>M+String.fromCharCode(c),""));this._socket.emit("writeFile64",e,t,n,M=>{M?o(M):r()})}}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("deleteFile",e,t,o=>{o?r(o):i()})}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("deleteFolder",e,t,o=>{o?r(o):i()})}})}rename(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,i,n=>{n?o(n):r()})}})}renameFile(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,i,n=>{n?o(n):r()})}})}cmdExec(e,t,i,r){return this.request({commandTimeout:r,executor:(o,n,M)=>{e=vt(e),this._socket.emit("cmdExec",e,i,t,c=>{M.elapsed||(M.clearTimeout(),c?n(c):o())})}})}getSystemConfig(e){return this.request({cacheKey:"systemConfig",forceUpdate:e,commandTimeout:!1,executor:async t=>{let i=await this.getObject("system.config");i??={},i.common??={},i.native??={},t(i)}})}getCompactSystemConfig(e){return this.request({cacheKey:"systemConfigCommon",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getCompactSystemConfig",(r,o)=>{r?i(r):(o??={},o.common??={},o.native??={},t(o))})}})}getForeignStates(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getForeignStates",e||"*",(r,o)=>{r?i(r):t(o??{})})}})}getForeignObjects(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("getForeignObjects",e||"*",t,(o,n)=>{o?r(o):i(n)})}})}setSystemConfig(e){return this.setObject("system.config",e)}getRawSocket(){return this._socket}getHistory(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("getHistory",e,t,(o,n)=>{o?r(o):i(n)})}})}getHistoryEx(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("getHistory",e,t,(o,n,M,c)=>{o?r(o):i({values:n,sessionId:c,step:M})})}})}getIpAddresses(e,t){return e=vt(e),this.request({cacheKey:`IPs_${e}`,forceUpdate:t,commandTimeout:!1,executor:async i=>{const r=await this.getObject(e);i((r==null?void 0:r.common.address)??[])}})}getVersion(e){return this.request({cacheKey:"version",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getVersion",(r,o,n)=>{r&&!o&&typeof r=="string"&&r.match(/\d+\.\d+\.\d+/)?t({version:r,serverName:"socketio"}):r?i(r):t({version:o,serverName:n})})}})}getWebServerName(){return this.request({cacheKey:"webName",commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getAdapterName",(i,r)=>{i?t(i):e(r)})}})}fileExists(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("fileExists",e,t,(o,n)=>{o?r(o):i(!!n)})}})}getCurrentUser(){return this.request({commandTimeout:!1,executor:e=>{this._socket.emit("authEnabled",(t,i)=>{e(i)})}})}getUuid(){return this.request({cacheKey:"uuid",commandTimeout:!1,executor:async e=>{var i;const t=await this.getObject("system.meta.uuid");e((i=t==null?void 0:t.native)==null?void 0:i.uuid)}})}checkFeatureSupported(e,t){return this.request({cacheKey:`supportedFeatures_${e}`,forceUpdate:t,commandTimeout:!1,executor:(i,r)=>{this._socket.emit("checkFeatureSupported",e,(o,n)=>{o?r(o):i(n)})}})}getAdapterInstances(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",this.request({cacheKey:`instances_${e}`,forceUpdate:t,commandTimeout:!1,executor:async i=>{const r=e?`system.adapter.${e}.`:"system.adapter.",o=`${r}香`,n=await this.getObjectViewSystem("instance",r,o),M=Object.values(n);i(e?M.filter(c=>c.common.name===e):M)}})}getAdapters(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",this.request({cacheKey:`adapter_${e}`,forceUpdate:t,commandTimeout:!1,executor:async i=>{const r=await this.getObjectViewSystem("adapter",`system.adapter.${e||""}`,`system.adapter.${e||"香"}`),o=Object.values(r);i(e?o.filter(n=>n.common.name===e):o)}})}getGroups(e){return this.request({cacheKey:"groups",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.香"},(r,o)=>{r?i(r):t(ta(o))})}})}logout(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("logout",i=>{i?t(i):e(null)})}})}subscribeOnInstance(e,t,i,r){return this.request({commandTimeout:!1,executor:(o,n)=>{this._socket.emit("clientSubscribe",e,t,i,(M,c)=>{M?n(M):c&&(c.error?n(c.error):(e.startsWith("system.adapter.")||(e=`system.adapter.${e}`),this._instanceSubscriptions[e]=this._instanceSubscriptions[e]||[],this._instanceSubscriptions[e].find(l=>l.messageType===t&&l.callback===r)||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(c)))})}})}unsubscribeFromInstance(e,t,i){var n;e.startsWith("system.adapter.")||(e=`system.adapter.${e}`);let r;const o=[];do{r=!1;const M=(n=this._instanceSubscriptions[e])==null?void 0:n.findIndex(c=>(!t||c.messageType===t)&&(!i||c.callback===i));if(M!=null&&M!==-1){r=!0;const c=this._instanceSubscriptions[e][M].messageType;this._instanceSubscriptions[e].splice(M,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e],this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find(N=>N.messageType===c)||o.push(this.request({commandTimeout:!1,executor:(N,u)=>{this._socket.emit("clientUnsubscribe",e,t,(L,g)=>L?u(L):N(g))}}))}}while(r&&(!i||!t));return o.length?Promise.all(o).then(M=>!!M.find(c=>c)):Promise.resolve(!1)}log(e,t){return e?this.request({commandTimeout:!1,executor:i=>(this._socket.emit("log",e,t),i(null))}):Promise.resolve(null)}setStateToIgnore(e){this.ignoreState=e}destroy(){var e;if(this._socket){const t=this._socket;try{typeof t.destroy=="function"?t.destroy():typeof t.close=="function"&&t.close(!0)}catch{}}(e=globalThis.removeEventListener)==null||e.call(globalThis,"storage",this.onAccessTokenUpdated),this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this._refreshTimer&&(clearTimeout(this._refreshTimer),this._refreshTimer=null),this.onConnectionHandlers.length=0,this.onLogHandlers.length=0;for(const t of Object.keys(this.statesSubscribes))delete this.statesSubscribes[t];for(const t of Object.keys(this.objectsSubscribes))delete this.objectsSubscribes[t];for(const t of Object.keys(this.filesSubscribes))delete this.filesSubscribes[t];this._instanceSubscriptions={},this.connected=!1,this.onReadyDone=!1}}function _y(s,e){if(!e)return;let t;if(e.length<700&&(e.indexOf("/")!==-1||e.indexOf("\\")!==-1))if(s.toLowerCase().includes("private"))t="private";else if(e.toLowerCase().includes("private"))t="private";else if(s.toLowerCase().includes("public"))t="public";else if(e.toLowerCase().includes("public"))t="public";else if(s.toLowerCase().includes("chain"))t="chained";else if(e.toLowerCase().includes("chain"))t="chained";else return;else t=e.substring(0,26)==="-----BEGIN RSA PRIVATE KEY"||e.substring(0,22)==="-----BEGIN PRIVATE KEY"?"private":"public",t==="public"&&e.split("-----END CERTIFICATE-----").filter(r=>r.replace(/\r\n|\r|\n/,"").trim()).length>1&&(t="chained");return{name:s,type:t}}function xy(s){var i,r,o,n;const e=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],t=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if((r=(i=s.native)==null?void 0:i.hardware)!=null&&r.networkInterfaces){const M=(n=(o=s.native)==null?void 0:o.hardware)==null?void 0:n.networkInterfaces;Object.keys(M).forEach(c=>{var l;(l=M[c])==null||l.forEach(N=>{N.family!=="IPv6"?e.push({name:`[${N.family}] ${N.address} - ${c}`,address:N.address,family:"ipv4"}):t.push({name:`[${N.family}] ${N.address} - ${c}`,address:N.address,family:"ipv6"})})})}return{IPs4:e,IPs6:t}}class Cve extends ke{constructor(e){super(e)}request(e){return super.request({requireAdmin:!0,...e})}getCertificates(e){return this.request({cacheKey:"cert",forceUpdate:e,commandTimeout:!1,executor:async t=>{var r;const i=await this.getObject("system.certificates");(r=i==null?void 0:i.native)!=null&&r.certificates?t(Object.entries(i.native.certificates).map(([o,n])=>_y(o,n)).filter(o=>!!o)):t([])}})}getLogs(e,t=200){return this.request({commandTimeout:!1,executor:i=>{this._socket.emit("sendToHost",e,"getLogs",t||200,r=>{i(r)})}})}upgradeAdapterWithWebserver(e,t){return this.request({commandTimeout:!1,executor:i=>{this._socket.emit("sendToHost",e,"upgradeAdapterWithWebserver",t,r=>{i(r)})}})}upgradeController(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("sendToHost",e,"upgradeController",{version:t,adminInstance:i},n=>{const M=n;M.error?o(M.error):r(M.result)})}})}updateLicenses(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("updateLicenses",e,t,(o,n)=>{o?r(o):i(n)})}})}upgradeOsPackages(e,t,i){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendToHost",e,"upgradeOsPackages",{packages:t,restart:!!i},o=>{r(o)})}})}getLogsFiles(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("readLogs",e,(r,o)=>{r&&i(r),t(o)})}})}delLogs(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("sendToHost",e,"delLogs",null,r=>{r&&i(r),t()})}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("deleteFile",e,t,o=>{o&&r(o),i()})}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("deleteFolder",e,t,o=>{o&&r(o),i()})}})}rename(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,i,n=>{n&&o(n),r()})}})}renameFile(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,i,n=>{n&&o(n),r()})}})}getHosts(e){return this.request({cacheKey:"hosts",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.香"},(r,o)=>{r?i(r):t(ta(o))})}})}getUsers(e){return this.request({cacheKey:"users",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.香"},(r,o)=>{r?i(r):t(ta(o))})}})}renameGroup(e,t,i){return this.request({commandTimeout:!1,executor:async r=>{const o=await this.getGroups(!0),n=o.filter(c=>c._id.startsWith(`${e}.`));for(const c of n){const l=c._id,N=t+c._id.substring(e.length);c._id=N,await this.setObject(N,c),await this.delObject(l)}const M=o.find(c=>c._id===e);if(M){const c=M._id;M._id=t,i!==void 0&&(M.common??={},M.common.name=i),await this.setObject(t,M),await this.delObject(c)}r()}})}getHostInfo(e,t,i){return e=vt(e),this.request({cacheKey:`hostInfo_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("sendToHost",e,"getHostInfo",null,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getHostInfo"'):M?r(M):o('Cannot read "getHostInfo"'))})}})}getHostInfoShort(e,t,i){return e=vt(e),this.request({cacheKey:`hostInfoShort_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("sendToHost",e,"getHostInfoShort",null,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getHostInfoShort"'):M?r(M):o('Cannot read "getHostInfoShort"'))})}})}getRepository(e,t,i,r){return this.request({cacheKey:`repository_${e}`,forceUpdate:i,commandTimeout:r,executor:(o,n,M)=>{this._socket.emit("sendToHost",e,"getRepository",t,c=>{M.elapsed||(M.clearTimeout(),c===Qe.PERMISSION_ERROR?n('May not read "getRepository"'):c?o(c):n('Cannot read "getRepository"'))})}})}getInstalled(e,t,i){return e=vt(e),this.request({cacheKey:`installed_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("sendToHost",e,"getInstalled",null,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getInstalled"'):M?r(M):o('Cannot read "getInstalled"'))})}})}cmdExec(e,t,i,r){return this.request({commandTimeout:r,executor:(o,n,M)=>{e=vt(e),this._socket.emit("cmdExec",e,i,t,c=>{M.elapsed||(M.clearTimeout(),c&&n(c),o())})}})}readBaseSettings(e){return e=Pi(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(t,i,r)=>{this._socket.emit("sendToHost",e,"readBaseSettings",null,o=>{r.elapsed||(r.clearTimeout(),o===Qe.PERMISSION_ERROR?i('May not read "BaseSettings"'):o?o.error?i(new Error(o.error)):t(o):i('Cannot read "BaseSettings"'))})}})}writeBaseSettings(e,t){return e=Pi(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(i,r,o)=>{this._socket.emit("sendToHost",e,"writeBaseSettings",t,n=>{o.elapsed||(o.clearTimeout(),n===Qe.PERMISSION_ERROR?r('May not write "BaseSettings"'):n?i(n):r('Cannot write "BaseSettings"'))})}})}restartController(e){return e=Pi(e),this.request({executor:(t,i,r)=>{this._socket.emit("sendToHost",e,"restartController",null,()=>{r.elapsed||(r.clearTimeout(),t(!0))})}})}getDiagData(e,t){return e=Pi(e),this.request({executor:(i,r,o)=>{this._socket.emit("sendToHost",e,"getDiagData",t,n=>{o.elapsed||(o.clearTimeout(),i(n||null))})}})}changePassword(e,t){return this.request({executor:(i,r,o)=>{this._socket.emit("changePassword",e,t,n=>{o.elapsed||(o.clearTimeout(),n&&r(n),i())})}})}getIpAddresses(e,t){return e=vt(e),this.request({cacheKey:`IPs_${e}`,forceUpdate:t,commandTimeout:!1,executor:async i=>{const r=await this.getObject(e);i((r==null?void 0:r.common.address)??[])}})}getHostByIp(e,t){return e=Pi(e),this.request({cacheKey:`rIPs_${e}`,forceUpdate:t,executor:(i,r,o)=>{this._socket.emit("getHostByIp",e,(n,M)=>{if(o.elapsed)return;o.clearTimeout();const{IPs4:c,IPs6:l}=xy(M);i([...c,...l])})}})}encrypt(e){return this.request({executor:(t,i,r)=>{this._socket.emit("encrypt",e,(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}decrypt(e){return this.request({executor:(t,i,r)=>{this._socket.emit("decrypt",e,(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}chmodFile(e,t,i){return this.request({executor:(r,o,n)=>{this._socket.emit("chmodFile",e,t,i,(M,c)=>{n.elapsed||(n.clearTimeout(),M&&o(M),r(c))})}})}chownFile(e,t,i){return this.request({executor:(r,o,n)=>{this._socket.emit("chownFile",e,t,i,(M,c)=>{n.elapsed||(n.clearTimeout(),M&&o(M),r(c))})}})}getNotifications(e,t){return this.request({executor:(i,r,o)=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},n=>{o.elapsed||(o.clearTimeout(),i(n))})}})}clearNotifications(e,t){return this.request({executor:(i,r,o)=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},n=>{o.elapsed||(o.clearTimeout(),i(n))})}})}getIsEasyModeStrict(){return this.request({executor:(e,t,i)=>{this._socket.emit("getIsEasyModeStrict",(r,o)=>{i.elapsed||(i.clearTimeout(),r&&t(r),e(!!o))})}})}getEasyMode(){return this.request({executor:(e,t,i)=>{this._socket.emit("getEasyMode",(r,o)=>{i.elapsed||(i.clearTimeout(),r?t(new Error(r)):e(o))})}})}getRatings(e){return this.request({executor:(t,i,r)=>{this._socket.emit("getRatings",!!e,(o,n)=>{r.elapsed||(r.clearTimeout(),o?i(new Error(o)):t(n))})}})}getCurrentSession(e){const t=new AbortController;return this.request({commandTimeout:e||5e3,onTimeout:()=>{t.abort()},executor:async(i,r,o)=>{try{const n=await fetch("./session",{signal:t.signal});if(o.elapsed)return;o.clearTimeout();const M=await n.json();i(M)}catch(n){r(`getCurrentSession: ${n}`)}}})}getCurrentInstance(){return this.request({cacheKey:"currentInstance",executor:(e,t,i)=>{this._socket.emit("getCurrentInstance",(r,o)=>{i.elapsed||(i.clearTimeout(),r?t(r):e(o))})}})}getAdapterInstances(e,t){let i;return typeof e=="boolean"?(t=e,i=""):i=e||"",this.request({cacheKey:`instances_${i}`,forceUpdate:t,executor:(r,o,n)=>{this._socket.emit("getAdapterInstances",i,(M,c)=>{n.elapsed||(n.clearTimeout(),M&&o(M),r(c))})}})}getAdapters(e,t){let i;return typeof e=="boolean"?(t=e,i=""):i=e||"",this.request({cacheKey:`adapter_${i}`,forceUpdate:t,executor:(r,o,n)=>{this._socket.emit("getAdapters",i,(M,c)=>{n.elapsed||(n.clearTimeout(),M&&o(M),r(c))})}})}getCompactAdapters(e){return this.request({cacheKey:"compactAdapters",forceUpdate:e,executor:(t,i,r)=>{this._socket.emit("getCompactAdapters",(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}getAdaptersResetCache(e){e=e??"",this.resetCache(`adapter_${e}`),this.resetCache("compactAdapters")}getCompactInstances(e){return this.request({cacheKey:"compactInstances",forceUpdate:e,executor:(t,i,r)=>{this._socket.emit("getCompactInstances",(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}getAdapterInstancesResetCache(e){e=e??"",this.resetCache(`instances_${e}`),this.resetCache("compactInstances")}getCompactInstalled(e,t,i){return e=vt(e),this.request({cacheKey:`installedCompact_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("getCompactInstalled",e,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getCompactInstalled"'):M?r(M):o('Cannot read "getCompactInstalled"'))})}})}getInstalledResetCache(e){e?(this.resetCache(`installedCompact_${e}`),this.resetCache(`installed_${e}`)):(this.resetCache("installedCompact_",!0),this.resetCache("installed_",!0))}getCompactRepository(e,t,i){return e=vt(e),this.request({cacheKey:`repositoryCompact_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("getCompactRepository",e,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getCompactRepository"'):M?r(M):o('Cannot read "getCompactRepository"'))})}})}getRepositoryResetCache(e){e?(this.resetCache(`repositoryCompact_${e}`),this.resetCache(`repository_${e}`)):(this.resetCache("repositoryCompact_",!0),this.resetCache("repository_",!0))}getCompactHosts(e){return this.request({cacheKey:"hostsCompact",forceUpdate:e,executor:(t,i,r)=>{this._socket.emit("getCompactHosts",(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}getCompactSystemRepositories(e){return this.request({cacheKey:"repositoriesCompact",forceUpdate:e,executor:(t,i,r)=>{this._socket.emit("getCompactSystemRepositories",(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}}const X=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,ae=globalThis,Is="10.48.0";function Qo(){return bo(ae),ae}function bo(s){const e=s.__SENTRY__=s.__SENTRY__||{};return e.version=e.version||Is,e[Is]=e[Is]||{}}function Ci(s,e,t=ae){const i=t.__SENTRY__=t.__SENTRY__||{},r=i[Is]=i[Is]||{};return r[s]||(r[s]=e())}const Sy=["debug","info","warn","error","log","assert","trace"],ky="Sentry Logger ",yo={};function pi(s){if(!("console"in ae))return s();const e=ae.console,t={},i=Object.keys(yo);i.forEach(r=>{const o=yo[r];t[r]=e[r],e[r]=o});try{return s()}finally{i.forEach(r=>{e[r]=t[r]})}}function vy(){aM().enabled=!0}function Yy(){aM().enabled=!1}function YN(){return aM().enabled}function Qy(...s){nM("log",...s)}function by(...s){nM("warn",...s)}function Uy(...s){nM("error",...s)}function nM(s,...e){X&&YN()&&pi(()=>{ae.console[s](`${ky}[${s}]:`,...e)})}function aM(){return X?Ci("loggerSettings",()=>({enabled:!1})):{enabled:!1}}const F={enable:vy,disable:Yy,isEnabled:YN,log:Qy,warn:by,error:Uy},QN=50,Cs="?",Fc=/\(error: (.*)\)/,Gc=/captureMessage|captureException/;function bN(...s){const e=s.sort((t,i)=>t[0]-i[0]).map(t=>t[1]);return(t,i=0,r=0)=>{const o=[],n=t.split(` -`);for(let M=i;M1024&&(c=c.slice(0,1024));const l=Fc.test(c)?c.replace(Fc,"$1"):c;if(!l.includes("Error: ")){for(const N of e){const u=N(l);if(u){o.push(u);break}}if(o.length>=QN+r)break}}return Py(o.slice(r))}}function $y(s){return Array.isArray(s)?bN(...s):s}function Py(s){if(!s.length)return[];const e=Array.from(s);return/sentryWrapped/.test(Jr(e).function||"")&&e.pop(),e.reverse(),Gc.test(Jr(e).function||"")&&(e.pop(),Gc.test(Jr(e).function||"")&&e.pop()),e.slice(0,QN).map(t=>({...t,filename:t.filename||Jr(e).filename,function:t.function||Cs}))}function Jr(s){return s[s.length-1]||{}}const jn="";function Ms(s){try{return!s||typeof s!="function"?jn:s.name||jn}catch{return jn}}function Hc(s){const e=s.exception;if(e){const t=[];try{return e.values.forEach(i=>{i.stacktrace.frames&&t.push(...i.stacktrace.frames)}),t}catch{return}}}function UN(s){return"__v_isVNode"in s&&s.__v_isVNode?"[VueVNode]":"[VueViewModel]"}const oo={},Vc={};function fs(s,e){oo[s]=oo[s]||[],oo[s].push(e)}function Os(s,e){if(!Vc[s]){Vc[s]=!0;try{e()}catch(t){X&&F.error(`Error while instrumenting ${s}`,t)}}}function gt(s,e){const t=s&&oo[s];if(t)for(const i of t)try{i(e)}catch(r){X&&F.error(`Error while triggering instrumentation handler. +import{c as P,j as $,o as st,a as fc,b as Oc,d as Ec}from"./createSvgIcon-DYs_tNrE.js";import{a,c as Ce,r as De,e as wN,p as hr,j as Ka,q as bg,_ as Ug,b as et,k as Kt,f as $g,s as IN,i as Pg,l as Wg}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{a4 as ko,F as CN,$ as bt,_ as Ae,a as fe,b as _e,p as as,V,E as ue,h as xe,i as q,Q as Zn,o as W,z as J,c as Te,y as ws,f as nt,g as re,Z as Jg,C as Bg,D as Us,a0 as Rg,a6 as pN,P as Le,t as Xt,u as dt,a7 as Fg,v as qt,H as Gg,d as Qt,e as yi,J as AN,q as ts,s as _c,W as br,r as xc,G as Sc,x as Hg,a3 as Vg,a8 as Me,a9 as Ln,aa as Zg,K as mN,N as it,M as kc,L as Xg,ab as vc,O as Kg}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{S as Xn}from"./Save-CkuNSiWL.js";import{c as we,I as We,b as wt,O as qg,g as ej,j as or,i as fN,K as ON,C as EN,$ as tj,a0 as te,a1 as sj,a2 as ij,a3 as rj,a4 as oj,Y as Yc,a5 as nj,a6 as aj,a7 as Mj,a8 as cj,a9 as Qc,aa as bc,ab as uj,ac as lj,ad as Nj,ae as Lj,af as gj,ag as jj,ah as yj,ai as Tj,aj as Dj,ak as dj,al as hj,am as zj,an as Uc,ao as $c,ap as wj,aq as Pc,s as Ij,ar as Cj,as as pj,at as Aj,au as Wc,av as mj,aw as fj,ax as Oj,P as Ej,h as Kn,a as zr}from"./index-wHNMOf-c.js";import{c as Ur,r as vo}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function _j(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{P as _}from"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import{u as xj}from"./useTheme-DuTJsNQ-.js";import{I as qa,R as _N,b as G}from"./index-45IwpC7_.js";const Sj=P($.jsx("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"}),"ArrowBack"),kj=P($.jsx("path",{d:"m10 17 5-5-5-5z"}),"ArrowRight"),vj=P($.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 11h-3v3.75c0 1.24-1.01 2.25-2.25 2.25S8.5 17.99 8.5 16.75s1.01-2.25 2.25-2.25c.46 0 .89.14 1.25.38V11h4zm-3-4V3.5L18.5 9z"}),"AudioFile"),Yj=P([$.jsx("path",{d:"M16.5 12h-9c-.55 0-1 .45-1 1v1h11v-1c0-.55-.45-1-1-1M7.25 8.5h4v2h-4zm5.5 0h4v2h-4z"},"0"),$.jsx("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-1 15h-1.5v-1.5h-11V17H5v-3.83c0-.66.25-1.26.65-1.72V9c0-1.1.9-2 2-2H11c.37 0 .72.12 1 .32.28-.2.63-.32 1-.32h3.35c1.1 0 2 .9 2 2v2.45c.4.46.65 1.06.65 1.72z"},"1")],"BedroomParent"),Qj=P($.jsx("path",{d:"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2"}),"Bookmark"),bj=P($.jsx("path",{d:"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2m0 15-5-2.18L7 18V5h10z"}),"BookmarkBorder"),Uj=P($.jsx("path",{d:"M22 24H2v-4h20zM13.06 5.19l3.75 3.75L7.75 18H4v-3.75zm4.82 2.68-3.75-3.75 1.83-1.83c.39-.39 1.02-.39 1.41 0l2.34 2.34c.39.39.39 1.02 0 1.41z"}),"BorderColor"),$j=P($.jsx("path",{d:"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6c3.31 0 6 2.69 6 6s-2.69 6-6 6"}),"Brightness4"),Pj=P($.jsx("path",{d:"M20 15.31 23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6"}),"Brightness5"),eM=P($.jsx("path",{d:"M20 15.31 23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20zM12 18V6c3.31 0 6 2.69 6 6s-2.69 6-6 6"}),"Brightness6"),Wj=P($.jsx("path",{d:"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6m0-10c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4"}),"Brightness7"),Jj=P($.jsx("path",{d:"m22.7 19-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4"}),"Build"),Bj=P($.jsx("path",{d:"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 18H4V8h16z"}),"CalendarToday"),Rj=P($.jsx("path",{d:"m20.71 5.63-2.34-2.34a.996.996 0 0 0-1.41 0l-3.12 3.12-1.93-1.91-1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92-8.92 1.42 1.42 1.41-1.41-1.92-1.92 3.12-3.12c.4-.4.4-1.03.01-1.42M6.92 19 5 17.08l8.06-8.06 1.92 1.92z"}),"Colorize"),Fj=P($.jsx("path",{d:"m13.7826 15.1719 2.1213-2.1213 5.9963 5.9962-2.1213 2.1213zM17.5 10c1.93 0 3.5-1.57 3.5-3.5 0-.58-.16-1.12-.41-1.6l-2.7 2.7-1.49-1.49 2.7-2.7c-.48-.25-1.02-.41-1.6-.41C15.57 3 14 4.57 14 6.5c0 .41.08.8.21 1.16l-1.85 1.85-1.78-1.78.71-.71-1.41-1.41L12 3.49c-1.17-1.17-3.07-1.17-4.24 0L4.22 7.03l1.41 1.41H2.81l-.71.71 3.54 3.54.71-.71V9.15l1.41 1.41.71-.71 1.78 1.78-7.41 7.41 2.12 2.12L16.34 9.79c.36.13.75.21 1.16.21"}),"Construction"),Gj=P($.jsx("path",{d:"M19 2h-4.18C14.4.84 13.3 0 12 0S9.6.84 9.18 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1m7 18H5V4h2v3h10V4h2z"}),"ContentPaste"),Hj=P($.jsx("path",{d:"M17 15h2V7c0-1.1-.9-2-2-2H9v2h8zM7 17V1H5v4H1v2h4v10c0 1.1.9 2 2 2h10v4h2v-4h4v-2z"}),"Crop"),Vj=P($.jsx("path",{d:"M4 7v2c0 .55-.45 1-1 1H2v4h1c.55 0 1 .45 1 1v2c0 1.65 1.35 3 3 3h3v-2H7c-.55 0-1-.45-1-1v-2c0-1.3-.84-2.42-2-2.83v-.34C5.16 11.42 6 10.3 6 9V7c0-.55.45-1 1-1h3V4H7C5.35 4 4 5.35 4 7m17 3c-.55 0-1-.45-1-1V7c0-1.65-1.35-3-3-3h-3v2h3c.55 0 1 .45 1 1v2c0 1.3.84 2.42 2 2.83v.34c-1.16.41-2 1.52-2 2.83v2c0 .55-.45 1-1 1h-3v2h3c1.65 0 3-1.35 3-3v-2c0-.55.45-1 1-1h1v-4z"}),"DataObject"),Yo=P($.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 16H8v-2h8zm0-4H8v-2h8zm-3-5V3.5L18.5 9z"}),"Description"),Zj=P($.jsx("path",{d:"M18.41 5.8 17.2 4.59c-.78-.78-2.05-.78-2.83 0l-2.68 2.68L3 15.96V20h4.04l8.74-8.74 2.63-2.63c.79-.78.79-2.05 0-2.83M6.21 18H5v-1.21l8.66-8.66 1.21 1.21zM11 20l4-4h6v4z"}),"DriveFileRenameOutline"),Xj=P($.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error"),Kj=P($.jsx("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore"),qj=P($.jsx("path",{d:"M20 19.59V8l-6-6H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c.45 0 .85-.15 1.19-.4l-4.43-4.43c-.8.52-1.74.83-2.76.83-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5c0 1.02-.31 1.96-.83 2.75zM9 13c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3-3 1.34-3 3"}),"FindInPage"),ey=P($.jsx("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"}),"FolderOpen"),ty=P($.jsx("path",{d:"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m-2.06 11L15 15.28 12.06 17l.78-3.33-2.59-2.24 3.41-.29L15 8l1.34 3.14 3.41.29-2.59 2.24z"}),"FolderSpecial"),sy=P($.jsx("path",{d:"M9.93 13.5h4.14L12 7.98zM20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-4.05 16.5-1.14-3H9.17l-1.12 3H5.96l5.11-13h1.86l5.11 13z"}),"FontDownload"),iy=P($.jsx("path",{d:"M10 4v3h2.21l-3.42 8H6v3h8v-3h-2.21l3.42-8H18V4z"}),"FormatItalic"),ry=P($.jsx("path",{d:"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2M8.5 13.5l2.5 3.01L14.5 12l4.5 6H5z"}),"Image"),tM=P($.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info"),xN=P($.jsx("path",{d:"M6 2c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm7 7V3.5L18.5 9z"}),"InsertDriveFile"),oy=P($.jsx("path",{d:"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"}),"KeyboardReturn"),SN=P($.jsx("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5"}),"Link"),ny=P($.jsx("path",{d:"M3 13h2v-2H3zm0 4h2v-2H3zm0-8h2V7H3zm4 4h14v-2H7zm0 4h14v-2H7zM7 7v2h14V7z"}),"List"),ay=P($.jsx("path",{d:"M19 5v14H5V5zm1.1-2H3.9c-.5 0-.9.4-.9.9v16.2c0 .4.4.9.9.9h16.2c.4 0 .9-.5.9-.9V3.9c0-.5-.5-.9-.9-.9M11 7h6v2h-6zm0 4h6v2h-6zm0 4h6v2h-6zM7 7h2v2H7zm0 4h2v2H7zm0 4h2v2H7z"}),"ListAlt"),My=P($.jsx("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-5 14h-2V9h-2V7h4z"}),"LooksOne"),cy=P($.jsx("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3z"}),"MusicNote"),uy=P($.jsx("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"NavigateNext"),sM=P($.jsx("path",{d:"M12 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0 10c2.7 0 5.8 1.29 6 2H6c.23-.72 3.31-2 6-2m0-12C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4m0 10c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"PersonOutlined"),ly=P($.jsx("path",{d:"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2M8.5 13.5l2.5 3.01L14.5 12l4.5 6H5z"}),"Photo"),go=P($.jsx("path",{d:"M5 4v2h14V4zm0 10h4v6h6v-6h4l-7-7z"}),"Publish"),iM=P($.jsx("path",{d:"m20.2 5.9.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2s3 .6 4.2 1.7m-.9.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4l.8.8c.7-.7 1.6-1 2.5-1s1.8.3 2.5 1zM19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2M8 18H6v-2h2zm3.5 0h-2v-2h2zm3.5 0h-2v-2h2z"}),"Router"),Ny=P($.jsx("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7zm-6 .67 2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),qn=P($.jsx("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings"),jo=P($.jsx("path",{d:"M12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m7-7H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2m-1.75 9c0 .23-.02.46-.05.68l1.48 1.16c.13.11.17.3.08.45l-1.4 2.42c-.09.15-.27.21-.43.15l-1.74-.7c-.36.28-.76.51-1.18.69l-.26 1.85c-.03.17-.18.3-.35.3h-2.8c-.17 0-.32-.13-.35-.29l-.26-1.85c-.43-.18-.82-.41-1.18-.69l-1.74.7c-.16.06-.34 0-.43-.15l-1.4-2.42c-.09-.15-.05-.34.08-.45l1.48-1.16c-.03-.23-.05-.46-.05-.69s.02-.46.05-.68l-1.48-1.16c-.13-.11-.17-.3-.08-.45l1.4-2.42c.09-.15.27-.21.43-.15l1.74.7c.36-.28.76-.51 1.18-.69l.26-1.85c.03-.17.18-.3.35-.3h2.8c.17 0 .32.13.35.29l.26 1.85c.43.18.82.41 1.18.69l1.74-.7c.16-.06.34 0 .43.15l1.4 2.42c.09.15.05.34-.08.45l-1.48 1.16c.03.23.05.46.05.69"}),"SettingsApplications"),Ly=P($.jsx("path",{d:"m3.5 18.49 6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z"}),"ShowChart"),rM=P($.jsx("path",{d:"M11.99 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10m3.61 6.34c1.07 0 1.93.86 1.93 1.93s-.86 1.93-1.93 1.93-1.93-.86-1.93-1.93c-.01-1.07.86-1.93 1.93-1.93m-6-1.58c1.3 0 2.36 1.06 2.36 2.36s-1.06 2.36-2.36 2.36-2.36-1.06-2.36-2.36c0-1.31 1.05-2.36 2.36-2.36m0 9.13v3.75c-2.4-.75-4.3-2.6-5.14-4.96 1.05-1.12 3.67-1.69 5.14-1.69.53 0 1.2.08 1.9.22-1.64.87-1.9 2.02-1.9 2.68M11.99 20c-.27 0-.53-.01-.79-.04v-4.07c0-1.42 2.94-2.13 4.4-2.13 1.07 0 2.92.39 3.84 1.15-1.17 2.97-4.06 5.09-7.45 5.09"}),"SupervisedUserCircle"),gy=P($.jsx("path",{d:"M2.5 4v3h5v12h3V7h5V4zm19 5h-9v3h3v7h3v-7h3z"}),"TextFields"),jy=P($.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z"}),"UploadFile"),yy=P($.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z"}),"UploadFileOutlined"),Ty=P($.jsx("path",{d:"M16 13h-3V3h-2v10H8l4 4zM4 19v2h16v-2z"}),"VerticalAlignBottom"),Dy=P($.jsx("path",{d:"M8 11h3v10h2V11h3l-4-4zM4 3v2h16V3z"}),"VerticalAlignTop"),dy=P($.jsx("path",{d:"M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11z"}),"Videocam"),hy=P($.jsx("path",{d:"M14.67 5v14H9.33V5zm1 14H21V5h-5.33zm-7.34 0V5H3v14z"}),"ViewColumn"),zy=P($.jsx("path",{d:"M4 15h16v-2H4zm0 4h16v-2H4zm0-8h16V9H4zm0-6v2h16V5z"}),"ViewHeadline"),wy=P($.jsx("path",{d:"M14.67 5v6.5H9.33V5zm1 6.5H21V5h-5.33zm-1 7.5v-6.5H9.33V19zm1-6.5V19H21v-6.5zm-7.34 0H3V19h5.33zm0-1V5H3v6.5z"}),"ViewModule"),Iy=P($.jsx("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility"),Cy=P($.jsx("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning"),li=P($.jsx("path",{d:"m1 9 2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9m8 8 3 3 3-3c-1.65-1.66-4.34-1.66-6 0m-4-4 2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13"}),"Wifi"),$r=P($.jsx("path",{d:"M22.99 9C19.15 5.16 13.8 3.76 8.84 4.78l2.52 2.52c3.47-.17 6.99 1.05 9.63 3.7zm-4 4c-1.29-1.29-2.84-2.13-4.49-2.56l3.53 3.53zM2 3.05 5.07 6.1C3.6 6.82 2.22 7.78 1 9l1.99 2c1.24-1.24 2.67-2.16 4.2-2.77l2.24 2.24C7.81 10.89 6.27 11.73 5 13v.01L6.99 15c1.36-1.36 3.14-2.04 4.92-2.06L18.98 20l1.27-1.26L3.29 1.79zM9 17l3 3 3-3c-1.65-1.66-4.34-1.66-6 0"}),"WifiOff"),gn=11/23/100;function Jc(s){const e={r:0,g:0,b:0};if(s.length===7)e.r=parseInt(s.substring(1,3),16),e.g=parseInt(s.substring(3,5),16),e.b=parseInt(s.substring(5,7),16);else if(s.length===4){const t=s[1],i=s[2],r=s[3];e.r=parseInt(t+t,16),e.g=parseInt(i+i,16),e.b=parseInt(r+r,16)}return e}function py(s){return`#${Math.round(s.r).toString(16).padStart(2,"0")}${Math.round(s.g).toString(16).padStart(2,"0")}${Math.round(s.b).toString(16).padStart(2,"0")}`}function Ay(s,e,t){const i=Jc(s),r=Jc(e);return i.r+=r.r*(.05+gn*(t-1)),i.g+=r.g*(.05+gn*(t-1)),i.b+=r.b*(.05+gn*(t-1)),py(i)}function Pr(s,e){const t={};for(let i=1;i<=24;i++)t[`elevation${i}`]={backgroundColor:Ay(s,e,i)};return t}function my(s,e){var n,M,c,l,N,u,L,g,j,y,T;let t,i;s==="dark"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[200],"&:hover":{color:st[100]}}},MuiPaper:Pr("#121212","#fff")},t={name:s,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):s==="blue"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#3399CC"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[400],"&:hover":{color:st[300]}}}},t={name:s,palette:{mode:"dark",background:{paper:"#151d21",default:"#151d21"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):s==="colored"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#2a3135"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[200],"&:hover":{color:st[100]}}},MuiPaper:Pr("#151d21","#fff")},t={name:s,palette:{mode:"light",primary:{main:"#3399CC"},secondary:{main:"#164477"},expert:"#96fc96"}}):s==="PT"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#0F99DE"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[400],"&:hover":{color:st[300]}}}},t={name:s,palette:{mode:"light",primary:{main:"#0F99DE"},secondary:{main:"#88A536"},expert:"#BD1B24"}}):s==="NW"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[400],"&:hover":{color:st[300]}}},MuiPaper:Pr("#121212","#fff")},t={name:s,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#00af78"},secondary:{main:"#005a40"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}}}):s==="HA"?(i={MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:"#db0a33","&:hover":{color:"#FF0a33"}}},MuiPaper:Pr("#121212","#fff")},t={name:s,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#970720"},secondary:{main:"#db0a33"},expert:"#db0a33",nonAck:"#ffe96a",text:{primary:"#ffffff",secondary:"#ffffff"}}}):(i={MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:st[400],"&:hover":{color:st[300]}}}},t={name:s,palette:{mode:"light",primary:{main:"#3399CC",dark:"#256c97",light:"#76d0fd"},secondary:{main:"#164477"},expert:"#14bb00"}}),t.toolbar={height:48},t.saveToolbar={background:(M=(n=t.palette)==null?void 0:n.primary)==null?void 0:M.main,button:{borderRadius:3,height:32}},t.palette&&(t.palette.grey={main:fc[300],dark:fc[400]});const r=Oc(t),o=r.palette;return Oc(r,{...e||void 0,components:{...i,MuiButton:{variants:[{props:{variant:"contained",color:"grey"},style:{backgroundColor:(c=o.grey)==null?void 0:c[300],color:o.getContrastText&&((l=o.grey)!=null&&l[300])?o.getContrastText(o.grey[300]):void 0}},{props:{variant:"outlined",color:"grey"},style:{color:(N=o.text)==null?void 0:N.primary,borderColor:o.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)","&.Mui-disabled":{border:`1px solid ${(u=o.action)==null?void 0:u.disabledBackground}`},"&:hover":{borderColor:o.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)",backgroundColor:Ec(((L=o.text)==null?void 0:L.primary)||"",((g=o.action)==null?void 0:g.hoverOpacity)||.04)}}},{props:{variant:"text",color:"grey"},style:{color:(j=o.text)==null?void 0:j.primary,"&:hover":{backgroundColor:Ec(((y=o.text)==null?void 0:y.primary)||"",((T=o.action)==null?void 0:T.hoverOpacity)||.04)}}}]},...(e==null?void 0:e.components)||void 0}})}function fy(){let s,e;const t=new Promise((i,r)=>{s=i,e=r});return t.resolve=s,t.reject=e,t}function ea(s){return(s==null?void 0:s.rows.map(e=>e.value).filter(e=>!!e))??[]}function vt(s){return s!=null&&s.startsWith("system.host.")||(s=`system.host.${s}`),s}function Pi(s){return s!=null&&s.startsWith("system.host.")&&(s=s.substring(12)),s}function Bc(s){return new Promise(e=>{setTimeout(e,s)})}function Wr(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}typeof globalThis.process<"u"&&(globalThis.location||={href:"http://localhost:8081/",protocol:"http:",host:"localhost:8081",pathname:"/",hostname:"localhost",reload:()=>{}},globalThis.localStorage||={_keys:{},setItem:(s,e)=>{globalThis.localStorage._keys[s]=e},getItem:s=>s in globalThis.localStorage._keys?globalThis.localStorage._keys[s]:null,removeItem:s=>{s in globalThis.localStorage._keys&&delete globalThis.localStorage._keys[s]}},globalThis.sessionStorage||=globalThis.localStorage,globalThis.navigator||={language:"en"});var ht;(function(s){s[s.CONNECTING=0]="CONNECTING",s[s.CONNECTED=1]="CONNECTED",s[s.OBJECTS_LOADED=2]="OBJECTS_LOADED",s[s.READY=3]="READY"})(ht||(ht={}));var Qe;(function(s){s.PERMISSION_ERROR="permissionError",s.NOT_CONNECTED="notConnectedError",s.TIMEOUT="timeout",s.NOT_ADMIN="Allowed only in admin",s.NOT_SUPPORTED="Not supported"})(Qe||(Qe={}));const zve=Qe.PERMISSION_ERROR;Qe.NOT_CONNECTED;const Oy=["material","echarts","vis"];class ke{props;connId;lastAccessToken=null;ignoreState="";connected=!1;subscribed=!1;firstConnect=!0;waitForRestart=!1;loaded=!1;simStates={};objectViewCached;constructor(e){this.props=this.applyDefaultProps(e),this.connId=`${this.props.name?`${this.props.name}-`:""}${Math.round(Math.random()*1e6).toString().padStart(6,"0")}`,this.waitForSocketLib().then(()=>this.startSocket()).catch(t=>{alert(`Socket connection could not be initialized: ${t}`)})}applyDefaultProps(e){return{...e,protocol:e.protocol||globalThis.location.protocol,host:e.host||globalThis.location.hostname,port:e.port||(globalThis.location.port==="3000"?8081:globalThis.location.port),ioTimeout:Math.max(e.ioTimeout||2e4,2e4),cmdTimeout:Math.max(e.cmdTimeout||5e3,5e3),admin5only:e.admin5only||!1,autoSubscribes:e.autoSubscribes??[],autoSubscribeLog:e.autoSubscribeLog??!1,doNotLoadACL:e.doNotLoadACL??!0,doNotLoadAllObjects:e.doNotLoadAllObjects??!0}}statesSubscribes={};filesSubscribes={};objectsSubscribes={};objects={};states={};acl=null;isSecure=!1;onReadyDone=!1;onConnectionHandlers=[];onLogHandlers=[];onCmdStdoutHandler;onCmdStderrHandler;onCmdExitHandler;onError(e){(this.props.onError??console.error)(e)}_socket;_waitForSocketPromise;_waitForFirstConnectionPromise=fy();_instanceSubscriptions={};_promises={};_authTimer=null;_refreshTimer=null;_systemConfig;get systemConfig(){return this._systemConfig}systemLang="en";static isWeb(){return globalThis.socketUrl!==void 0}waitForSocketLib(){return this._waitForSocketPromise?this._waitForSocketPromise:(this._waitForSocketPromise=new Promise(async(e,t)=>{if(this.props.connect){e();return}if(typeof globalThis.io>"u"&&typeof globalThis.iob>"u")if(typeof globalThis.registerSocketOnLoad=="function")globalThis.registerSocketOnLoad(()=>e());else{for(let i=1;i<=30;i++){if(globalThis.io||globalThis.iob)return e();await Bc(100)}t(new Error("Socket library could not be loaded!"))}else e()}),this._waitForSocketPromise)}async startSocket(){if(this._socket)return;let e=this.props.host,t=this.props.port,i=(this.props.protocol||globalThis.location.protocol).replace(":",""),r=globalThis.location.pathname;if(globalThis.location.hostname==="iobroker.net"||globalThis.location.hostname==="iobroker.pro")r="";else{if(globalThis.socketUrl){const c=new globalThis.URL(globalThis.socketUrl);e=c.hostname,t=c.port,i=c.protocol.replace(":","")}const M=r.lastIndexOf("/");if(M!==-1&&(r=r.substring(0,M+1)),ke.isWeb()){const c=r.split("/");c.length>2&&(c.pop(),c.pop(),Oy.includes(c[c.length-1])&&c.pop(),r=c.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?`${i}://${e}:${t}`:`${i}://${e}`,n=this.props.connect||(globalThis.io||globalThis.iob).connect;return this._socket=n(o,{path:r.endsWith("/")?`${r}socket.io`:`${r}/socket.io`,query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid,token:this.props.token}),this._socket.on("connect",M=>{var l;(l=globalThis.addEventListener)==null||l.call(globalThis,"storage",this.onAccessTokenUpdated);const c=ke.readTokens();if(c&&!c.owner){const N=Date.now();this.saveTokens({access_token:c.access_token,refresh_token:c.refresh_token,expires_in:Math.round((c.expires_in.getTime()-N)/1e3),refresh_token_expires_in:Math.round((c.refresh_token_expires_in.getTime()-N)/1e3),token_type:"Bearer"},c.stayLoggedIn)}this.onReadyDone=!1,M!==!0?(this.connected=!0,setTimeout(()=>this.getVersion().then(N=>{const[u,L,g]=N.version.split(".");parseInt(u,10)*1e4+parseInt(L,10)*100+parseInt(g,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",(y,T)=>this.onPreConnect(y,T))}).catch(N=>this.onError({message:N.toString(),operation:"getVersion"})),500)):this._socket.emit("authenticate",(N,u)=>{this.onPreConnect(N,u)})}),this._socket.on("reconnect",()=>{var M,c;this.onReadyDone=!1,(c=(M=this.props).onProgress)==null||c.call(M,ht.READY),this.connected=!0,this.waitForRestart?globalThis.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach(l=>l(!0)))}),this._socket.on("disconnect",()=>{var M,c;this.onReadyDone=!1,this.connected=!1,this.subscribed=!1,(c=(M=this.props).onProgress)==null||c.call(M,ht.CONNECTING),this.onConnectionHandlers.forEach(l=>l(!1))}),this._socket.on("reauthenticate",()=>this.authenticate()),this._socket.on("log",M=>{var c,l;(l=(c=this.props).onLog)==null||l.call(c,M),this.onLogHandlers.forEach(N=>N(M))}),this._socket.on("error",M=>{let c;M==null?c="":typeof M.toString=="function"?c=M.toString():(c=JSON.stringify(M),console.error(`Received strange error: ${c}`)),c.includes("User not authorized")?this.authenticate():c.includes("websocket error")?(console.error(`Socket Error => reload: ${M}`),globalThis.location.reload()):console.error(`Socket Error: ${M}`)}),this._socket.on("connect_error",M=>console.error(`Connect error: ${M}`)),this._socket.on("permissionError",M=>this.onError({message:"no permission",operation:M.operation,type:M.type,id:M.id||""})),this._socket.on("objectChange",(M,c)=>{setTimeout(()=>this.objectChange(M,c),0)}),this._socket.on("stateChange",(M,c)=>{setTimeout(()=>this.stateChange(M,c),0)}),this._socket.on("im",(M,c,l)=>{setTimeout(()=>this.instanceMessage(M,c,l),0)}),this._socket.on("fileChange",(M,c,l)=>{setTimeout(()=>this.fileChange(M,c,l),0)}),this._socket.on("cmdStdout",(M,c)=>{var l;(l=this.onCmdStdoutHandler)==null||l.call(this,M,c)}),this._socket.on("cmdStderr",(M,c)=>{var l;(l=this.onCmdStderrHandler)==null||l.call(this,M,c)}),this._socket.on("cmdExit",(M,c)=>{var l;(l=this.onCmdExitHandler)==null||l.call(this,M,c)}),Promise.resolve()}onPreConnect(e,t){var i,r;this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?globalThis.location.reload():(this.firstConnect?this.loadData().catch(o=>{console.error(`Cannot load data: ${o}`)}):(r=(i=this.props).onProgress)==null||r.call(i,ht.READY),this._subscribe(!0),this.onConnectionHandlers.forEach(o=>o(!0)),this.checkAccessTokenExpire()),this._waitForFirstConnectionPromise.resolve()}static readTokens(){let e=globalThis.sessionStorage.getItem("iob_tokens");const t=!e;if(e||(e=globalThis.localStorage.getItem("iob_tokens")),!e)return null;const[i,r,o,n,M]=e.split(";"),c=new Date(r);return c.getTime(){if(e.key==="iob_tokens"){const t=ke.readTokens();t&&(console.log(`Tab ${this.connId} received updated token: ${t.access_token}`),this.updateTokenExpiration(t.access_token))}};updateTokenExpiration(e){this.lastAccessToken!==e&&(this.lastAccessToken=e,this._socket.emit("updateTokenExpiration",e,(t,i)=>{t?(console.error(`[UPDATE/${new Date().toISOString()}] cannot say to server about new token: ${t}`),globalThis.location.reload()):i?console.log(`[UPDATE/${new Date().toISOString()}] server accepted new token: ${e}`):(console.error(`[UPDATE/${new Date().toISOString()}] cannot say to server about new token`),globalThis.location.reload())})),this.checkAccessTokenExpire()}refreshTokens(e,t){if(!e){console.log(`[REFRESH/${new Date().toISOString()}] No token structure found => reloading the page`),setTimeout(()=>globalThis.location.reload(),500);return}t||!e.owner||e.owner===this.connId?(console.log(`[REFRESH/${new Date().toISOString()}] claim ownership of the token`),this.acquireTokenLock()?(console.log(`[REFRESH/${new Date().toISOString()}] refreshing token`),fetch("./oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`grant_type=refresh_token&refresh_token=${e.refresh_token}&client_id=ioBroker&stayloggedin=${e.stayLoggedIn}`}).then(i=>{if(i.ok)return i.json();throw new Error("Cannot refresh access token")}).then(i=>{if(i.access_token)console.log(`[REFRESH/${new Date().toISOString()}] received new token: ${i.access_token}`),this.saveTokens(i,e.stayLoggedIn),this.releaseTokenLock(),this.updateTokenExpiration(i.access_token);else throw new Error("Cannot get access token")}).catch(i=>{console.warn(`[REFRESH/${new Date().toISOString()}] cannot refresh token: ${i}`),this.releaseTokenLock(),this.deleteTokens(e.stayLoggedIn),console.error(i),globalThis.location.reload()})):(console.log(`[REFRESH/${new Date().toISOString()}] Someone else is updating the token, so wait for the next check`),this.checkAccessTokenExpire())):this.lastAccessToken!==e.access_token&&this.updateTokenExpiration(e.access_token)}acquireTokenLock(){const e=Date.now(),t=globalThis.localStorage.getItem("iob_token_semaphore");if(t)try{const r=JSON.parse(t);if(e{r?(console.log(`[TOKEN/${new Date().toISOString()}] Token will be prolonged`),this.refreshTokens(e,i)):(console.log(`[TOKEN/${new Date().toISOString()}] Token will not be prolonged. Reloading the page`),setTimeout(()=>globalThis.location.reload(),Date.now()>t?500:t-Date.now()))})):(console.log(`[TOKEN/${new Date().toISOString()}] No tokenTimeoutHandler defined. Prolonging the token`),this.refreshTokens(e,i))):this.lastAccessToken!==e.access_token?(console.log(`[TOKEN/${new Date().toISOString()}] We are not the owner of the token, but we will inform the server about new token`),this.refreshTokens(e)):(console.log(`[TOKEN/${new Date().toISOString()}] We are not the owner of the token and the token did not change. Check in 3 seconds if the owner updated the token`),this._refreshTimer=setTimeout(()=>{this._refreshTimer=null,this.checkAccessTokenExpire()},3e3)):(console.log(`[TOKEN/${new Date().toISOString()}] We do not have a refresh token, so we need to reauthenticate`),setTimeout(()=>globalThis.location.reload(),Date.now()>t?500:t-Date.now()))}else this._refreshTimer=setTimeout(()=>{this._refreshTimer=null,this.checkAccessTokenExpire()},t-Date.now()-3e4>12e4?12e4:t-Date.now()-3e4)}}}static isCloud(){return globalThis.location.hostname.includes("amazonaws.com")||globalThis.location.hostname.includes("iobroker.in")?!0:typeof globalThis.socketUrl>"u"?!1:globalThis.socketUrl.includes("iobroker.in")||globalThis.socketUrl.includes("amazonaws")}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnectionPromise}async getUserPermissions(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getUserPermissions",(i,r)=>{i?t(i):e(r||null)})}})}async loadData(){if(this.loaded)return;const e=10;for(let t=1;t<=e;t++){if(this.doLoadData().catch(i=>console.error(`Cannot load data: ${i}`)),this.loaded)return;await Bc(ke.isCloud()?5e3:1e3)}}async doLoadData(){var e,t,i,r,o,n,M,c,l;if(!this.loaded){if(!this.props.doNotLoadACL)try{this.acl=await this.getUserPermissions()}catch(N){this.onError(`Cannot read user permissions: ${N}`);return}try{this.props.admin5only&&!ke.isWeb()&&(!globalThis.vendorPrefix||globalThis.vendorPrefix==="@@vendorPrefix@@")?this._systemConfig=await this.getCompactSystemConfig():this._systemConfig=await this.getSystemConfig()}catch(N){this.onError(`Cannot read system config: ${N}`);return}this._systemConfig&&(this.systemLang=(e=this._systemConfig.common)==null?void 0:e.language,this.systemLang||(this.systemLang=globalThis.navigator.userLanguage||globalThis.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substring(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en"),this._systemConfig.common.language=this.systemLang)),(i=(t=this.props).onLanguage)==null||i.call(t,this.systemLang),this.loaded=!0,(o=(r=this.props).onProgress)==null||o.call(r,ht.CONNECTED),this.firstConnect=!1,this.props.doNotLoadAllObjects?this.props.admin5only?this.objects={}:this.objects={"system.config":this._systemConfig}:this.objects=await this.getObjects(),(M=(n=this.props).onProgress)==null||M.call(n,ht.READY),this.onReadyDone||(this.onReadyDone=!0,(l=(c=this.props).onReady)==null||l.call(c,this.objects))}}authenticate(){globalThis.location.search.includes("&href=")?globalThis.location.href=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname}${globalThis.location.search}`:globalThis.location.href=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname}?login&href=${encodeURIComponent(globalThis.location.search+globalThis.location.hash)}`}async subscribeState(...e){let t,i,r;e.length===3?[t,i,r]=e:([t,r]=e,i=!1);let o;if(Array.isArray(t)?o=t:o=[t],typeof r!="function")throw new Error("The state change handler must be a function!");const n=[];for(let M=0;MM.includes("*"))){let M;for(let c=0;cconsole.error(`Cannot call state change handler: ${L}`))}}}else try{const M=await(ke.isWeb()?this.getStates(o):this.getForeignStates(o));if(M)for(const[c,l]of Object.entries(M)){const N=r(c,l);N instanceof Promise&&N.catch(u=>console.error(`Cannot call state change handler: ${u}`))}}catch(M){console.error(`Cannot getState "${o.join(", ")}": ${M.message}`);return}}async subscribeStateAsync(e,t){return this.subscribeState(e,t)}unsubscribeState(e,t){var o;let i;Array.isArray(e)?i=e:i=[e];const r=[];for(let n=0;n{try{const N=l(e,t,i);N instanceof Promise&&N.catch(u=>console.error(`Cannot call object change handler: ${u}`))}catch(N){console.error(`Error by callback of objectChange: ${N}`)}});if(r){const M=(n=(o=this.props).onObjectChange)==null?void 0:n.call(o,e,t);M instanceof Promise&&M.catch(c=>console.error(`Cannot call object change handler: ${c}`))}}stateChange(e,t){for(const i of Object.values(this.statesSubscribes))if(i.reg.test(e))for(const r of i.cbs)try{const o=r(e,t??null);o instanceof Promise&&o.catch(n=>console.error(`Cannot call state change handler: ${n}`))}catch(o){console.error(`Error by callback of stateChanged: ${o}`)}}instanceMessage(e,t,i){var r;(r=this._instanceSubscriptions[t])==null||r.forEach(o=>{if(o.messageType===e){const n=o.callback(i,t,e);n instanceof Promise&&n.catch(M=>console.error(`Cannot call instance message handler: ${M}`))}})}fileChange(e,t,i){for(const r of Object.values(this.filesSubscribes))if(r.regId.test(e)&&r.regFilePattern.test(t))for(const o of r.cbs)try{o(e,t,i)}catch(n){console.error(`Error by callback of fileChange: ${n}`)}}async subscribeFiles(e,t,i){if(typeof i!="function")throw new Error("The state change handler must be a function!");let r;Array.isArray(t)?r=t:r=[t];const o=[];for(let n=0;n{const u={elapsed:!1,clearTimeout:()=>{}};let L;i!==!1&&(L=setTimeout(()=>{u.elapsed=!0,r==null||r(),e&&this._promises[e]instanceof Promise&&delete this._promises[e],N(new Error(Qe.TIMEOUT))},i??this.props.cmdTimeout),u.clearTimeout=()=>{clearTimeout(L)});try{await M(l,N,u)}catch(g){e&&this._promises[e]instanceof Promise&&delete this._promises[e],N(new Error(g.toString()))}});return e&&(this._promises[e]=c),c}resetCache(e,t){t?Object.keys(this._promises).filter(i=>i.startsWith(e)).forEach(i=>{delete this._promises[i]}):delete this._promises[e]}getStates(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getStates",e,(r,o)=>{this.states=o??{},r?i(r):t(this.states)})}})}getState(e){return this.request({commandTimeout:!1,executor:(t,i)=>{if(e&&e===this.ignoreState){t(this.simStates[e]||{val:null,ack:!0});return}this._socket.emit("getState",e,(r,o)=>{r?i(r):t(o)})}})}getBinaryState(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getBinaryState",e,(r,o)=>{r?i(r):t(o)})}})}setBinaryState(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("setBinaryState",e,t,o=>{o?r(o):i()})}})}setState(e,t,i){return typeof i=="boolean"&&(t={val:t,ack:i}),this.request({commandTimeout:!1,executor:(r,o)=>{if(e&&e===this.ignoreState){let n;if(typeof i=="boolean"||typeof t=="object"&&t.val!==void 0?n=t:n={val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=n,this.statesSubscribes[e])for(const M of this.statesSubscribes[e].cbs)try{const c=M(e,n);c instanceof Promise&&c.catch(l=>console.error(`Cannot call state change handler: ${l}`))}catch(c){console.error(`Error by callback of stateChanged: ${c}`)}r();return}this._socket.emit("setState",e,t,n=>{n?o(n):r()})}})}getObjects(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{if(!e&&this.objects){i(this.objects);return}this._socket.emit(ke.isWeb()?"getObjects":"getAllObjects",(o,n)=>{var M,c;t||(c=(M=this.props).onProgress)==null||c.call(M,ht.OBJECTS_LOADED),o?r(o):(this.objects=n??{},i(this.objects))})}})}getObjectsById(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getObjects",e,(r,o)=>{r?i(r):t(o)})}})}_subscribe(e){var t,i;if(e&&!this.subscribed){this.subscribed=!0,(t=this.props.autoSubscribes)!=null&&t.length&&this._socket.emit("subscribeObjects",this.props.autoSubscribes);const r=Object.keys(this.objectsSubscribes);r.length&&this._socket.emit("subscribeObjects",r),Object.keys(this.objectsSubscribes).forEach(o=>this._socket.emit("subscribeObjects",o)),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!0),Object.keys(this.statesSubscribes).forEach(o=>this._socket.emit("subscribe",o)),Object.keys(this.filesSubscribes).forEach(o=>{const[n,M]=o.split("$%$");this._socket.emit("subscribeFiles",n,M)})}else if(!e&&this.subscribed){this.subscribed=!1,(i=this.props.autoSubscribes)!=null&&i.length&&this._socket.emit("unsubscribeObjects",this.props.autoSubscribes);const r=Object.keys(this.objectsSubscribes);r.length&&this._socket.emit("unsubscribeObjects",r),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach(o=>this._socket.emit("unsubscribe",o)),Object.keys(this.filesSubscribes).forEach(o=>{const[n,M]=o.split("$%$");this._socket.emit("unsubscribeFiles",n,M)})}}requireLog(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("requireLog",e,r=>{r?i(r):t()})}})}delObject(e,t=!1){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("delObject",e,{maintenance:t},o=>{o?r(o):i()})}})}delObjects(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("delObjects",e,{maintenance:t},o=>{o?r(o):i()})}})}setObject(e,t){return t?(t=JSON.parse(JSON.stringify(t)),delete t.from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("setObject",e,t,o=>{o?r(o):i()})}})):Promise.reject(new Error("Null object is not allowed"))}getObject(e){return this.request({commandTimeout:!1,executor:(t,i)=>{if(e&&e===this.ignoreState){t({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed"}});return}this._socket.emit("getObject",e,(r,o)=>{r?i(r):t(o)})}})}sendTo(e,t,i){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendTo",e,t,i,o=>{r(o)})}})}extendObject(e,t){return t?(t=JSON.parse(JSON.stringify(t)),delete t.from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("extendObject",e,t,o=>{o?r(o):i()})}})):Promise.reject(new Error("Null object is not allowed"))}registerLogHandler(e){this.onLogHandlers.includes(e)||this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);t!==-1&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){this.onConnectionHandlers.includes(e)||this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);t!==-1&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return this.request({cacheKey:`enums_${e||"all"}`,forceUpdate:t,commandTimeout:!1,executor:(i,r)=>{this._socket.emit("getObjectView","system","enum",{startkey:`enum.${e||""}`,endkey:e?`enum.${e}.香`:"enum.香"},(o,n)=>{if(o)r(o);else{const M={};if(n)for(let c=0;c{i||="",r||="香",this._socket.emit("getObjectView",e,t,{startkey:i,endkey:r},(M,c)=>{if(M)n(M);else{const l={};if(c&&c.rows)for(let N=0;N{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"香"},(i,r)=>{var o;i?t(i):e((o=r.rows)==null?void 0:o.map(n=>n.value).filter(n=>!!n))})}})}readDir(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("readDir",e,t,(o,n)=>{o?r(o):i(n)})}})}readFile(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit(i?"readFile64":"readFile",e,t,(n,M,c)=>{n?o(n):r({file:M,mimeType:c})})}})}writeFile64(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{if(typeof i=="string")this._socket.emit("writeFile",e,t,i,n=>{n?o(n):r()});else{const n=btoa(new Uint8Array(i).reduce((M,c)=>M+String.fromCharCode(c),""));this._socket.emit("writeFile64",e,t,n,M=>{M?o(M):r()})}}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("deleteFile",e,t,o=>{o?r(o):i()})}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("deleteFolder",e,t,o=>{o?r(o):i()})}})}rename(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,i,n=>{n?o(n):r()})}})}renameFile(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,i,n=>{n?o(n):r()})}})}cmdExec(e,t,i,r){return this.request({commandTimeout:r,executor:(o,n,M)=>{e=vt(e),this._socket.emit("cmdExec",e,i,t,c=>{M.elapsed||(M.clearTimeout(),c?n(c):o())})}})}getSystemConfig(e){return this.request({cacheKey:"systemConfig",forceUpdate:e,commandTimeout:!1,executor:async t=>{let i=await this.getObject("system.config");i??={},i.common??={},i.native??={},t(i)}})}getCompactSystemConfig(e){return this.request({cacheKey:"systemConfigCommon",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getCompactSystemConfig",(r,o)=>{r?i(r):(o??={},o.common??={},o.native??={},t(o))})}})}getForeignStates(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getForeignStates",e||"*",(r,o)=>{r?i(r):t(o??{})})}})}getForeignObjects(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("getForeignObjects",e||"*",t,(o,n)=>{o?r(o):i(n)})}})}setSystemConfig(e){return this.setObject("system.config",e)}getRawSocket(){return this._socket}getHistory(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("getHistory",e,t,(o,n)=>{o?r(o):i(n)})}})}getHistoryEx(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("getHistory",e,t,(o,n,M,c)=>{o?r(o):i({values:n,sessionId:c,step:M})})}})}getIpAddresses(e,t){return e=vt(e),this.request({cacheKey:`IPs_${e}`,forceUpdate:t,commandTimeout:!1,executor:async i=>{const r=await this.getObject(e);i((r==null?void 0:r.common.address)??[])}})}getVersion(e){return this.request({cacheKey:"version",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getVersion",(r,o,n)=>{r&&!o&&typeof r=="string"&&r.match(/\d+\.\d+\.\d+/)?t({version:r,serverName:"socketio"}):r?i(r):t({version:o,serverName:n})})}})}getWebServerName(){return this.request({cacheKey:"webName",commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getAdapterName",(i,r)=>{i?t(i):e(r)})}})}fileExists(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("fileExists",e,t,(o,n)=>{o?r(o):i(!!n)})}})}getCurrentUser(){return this.request({commandTimeout:!1,executor:e=>{this._socket.emit("authEnabled",(t,i)=>{e(i)})}})}getUuid(){return this.request({cacheKey:"uuid",commandTimeout:!1,executor:async e=>{var i;const t=await this.getObject("system.meta.uuid");e((i=t==null?void 0:t.native)==null?void 0:i.uuid)}})}checkFeatureSupported(e,t){return this.request({cacheKey:`supportedFeatures_${e}`,forceUpdate:t,commandTimeout:!1,executor:(i,r)=>{this._socket.emit("checkFeatureSupported",e,(o,n)=>{o?r(o):i(n)})}})}getAdapterInstances(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",this.request({cacheKey:`instances_${e}`,forceUpdate:t,commandTimeout:!1,executor:async i=>{const r=e?`system.adapter.${e}.`:"system.adapter.",o=`${r}香`,n=await this.getObjectViewSystem("instance",r,o),M=Object.values(n);i(e?M.filter(c=>c.common.name===e):M)}})}getAdapters(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",this.request({cacheKey:`adapter_${e}`,forceUpdate:t,commandTimeout:!1,executor:async i=>{const r=await this.getObjectViewSystem("adapter",`system.adapter.${e||""}`,`system.adapter.${e||"香"}`),o=Object.values(r);i(e?o.filter(n=>n.common.name===e):o)}})}getGroups(e){return this.request({cacheKey:"groups",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.香"},(r,o)=>{r?i(r):t(ea(o))})}})}logout(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("logout",i=>{i?t(i):e(null)})}})}subscribeOnInstance(e,t,i,r){return this.request({commandTimeout:!1,executor:(o,n)=>{this._socket.emit("clientSubscribe",e,t,i,(M,c)=>{M?n(M):c&&(c.error?n(c.error):(e.startsWith("system.adapter.")||(e=`system.adapter.${e}`),this._instanceSubscriptions[e]=this._instanceSubscriptions[e]||[],this._instanceSubscriptions[e].find(l=>l.messageType===t&&l.callback===r)||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(c)))})}})}unsubscribeFromInstance(e,t,i){var n;e.startsWith("system.adapter.")||(e=`system.adapter.${e}`);let r;const o=[];do{r=!1;const M=(n=this._instanceSubscriptions[e])==null?void 0:n.findIndex(c=>(!t||c.messageType===t)&&(!i||c.callback===i));if(M!=null&&M!==-1){r=!0;const c=this._instanceSubscriptions[e][M].messageType;this._instanceSubscriptions[e].splice(M,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e],this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find(N=>N.messageType===c)||o.push(this.request({commandTimeout:!1,executor:(N,u)=>{this._socket.emit("clientUnsubscribe",e,t,(L,g)=>L?u(L):N(g))}}))}}while(r&&(!i||!t));return o.length?Promise.all(o).then(M=>!!M.find(c=>c)):Promise.resolve(!1)}log(e,t){return e?this.request({commandTimeout:!1,executor:i=>(this._socket.emit("log",e,t),i(null))}):Promise.resolve(null)}setStateToIgnore(e){this.ignoreState=e}destroy(){var e;if(this._socket){const t=this._socket;try{typeof t.destroy=="function"?t.destroy():typeof t.close=="function"&&t.close(!0)}catch{}}(e=globalThis.removeEventListener)==null||e.call(globalThis,"storage",this.onAccessTokenUpdated),this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this._refreshTimer&&(clearTimeout(this._refreshTimer),this._refreshTimer=null),this.onConnectionHandlers.length=0,this.onLogHandlers.length=0;for(const t of Object.keys(this.statesSubscribes))delete this.statesSubscribes[t];for(const t of Object.keys(this.objectsSubscribes))delete this.objectsSubscribes[t];for(const t of Object.keys(this.filesSubscribes))delete this.filesSubscribes[t];this._instanceSubscriptions={},this.connected=!1,this.onReadyDone=!1}}function Ey(s,e){if(!e)return;let t;if(e.length<700&&(e.indexOf("/")!==-1||e.indexOf("\\")!==-1))if(s.toLowerCase().includes("private"))t="private";else if(e.toLowerCase().includes("private"))t="private";else if(s.toLowerCase().includes("public"))t="public";else if(e.toLowerCase().includes("public"))t="public";else if(s.toLowerCase().includes("chain"))t="chained";else if(e.toLowerCase().includes("chain"))t="chained";else return;else t=e.substring(0,26)==="-----BEGIN RSA PRIVATE KEY"||e.substring(0,22)==="-----BEGIN PRIVATE KEY"?"private":"public",t==="public"&&e.split("-----END CERTIFICATE-----").filter(r=>r.replace(/\r\n|\r|\n/,"").trim()).length>1&&(t="chained");return{name:s,type:t}}function _y(s){var i,r,o,n;const e=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],t=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if((r=(i=s.native)==null?void 0:i.hardware)!=null&&r.networkInterfaces){const M=(n=(o=s.native)==null?void 0:o.hardware)==null?void 0:n.networkInterfaces;Object.keys(M).forEach(c=>{var l;(l=M[c])==null||l.forEach(N=>{N.family!=="IPv6"?e.push({name:`[${N.family}] ${N.address} - ${c}`,address:N.address,family:"ipv4"}):t.push({name:`[${N.family}] ${N.address} - ${c}`,address:N.address,family:"ipv6"})})})}return{IPs4:e,IPs6:t}}class wve extends ke{constructor(e){super(e)}request(e){return super.request({requireAdmin:!0,...e})}getCertificates(e){return this.request({cacheKey:"cert",forceUpdate:e,commandTimeout:!1,executor:async t=>{var r;const i=await this.getObject("system.certificates");(r=i==null?void 0:i.native)!=null&&r.certificates?t(Object.entries(i.native.certificates).map(([o,n])=>Ey(o,n)).filter(o=>!!o)):t([])}})}getLogs(e,t=200){return this.request({commandTimeout:!1,executor:i=>{this._socket.emit("sendToHost",e,"getLogs",t||200,r=>{i(r)})}})}upgradeAdapterWithWebserver(e,t){return this.request({commandTimeout:!1,executor:i=>{this._socket.emit("sendToHost",e,"upgradeAdapterWithWebserver",t,r=>{i(r)})}})}upgradeController(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("sendToHost",e,"upgradeController",{version:t,adminInstance:i},n=>{const M=n;M.error?o(M.error):r(M.result)})}})}updateLicenses(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("updateLicenses",e,t,(o,n)=>{o?r(o):i(n)})}})}upgradeOsPackages(e,t,i){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendToHost",e,"upgradeOsPackages",{packages:t,restart:!!i},o=>{r(o)})}})}getLogsFiles(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("readLogs",e,(r,o)=>{r&&i(r),t(o)})}})}delLogs(e){return this.request({commandTimeout:!1,executor:(t,i)=>{this._socket.emit("sendToHost",e,"delLogs",null,r=>{r&&i(r),t()})}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("deleteFile",e,t,o=>{o&&r(o),i()})}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(i,r)=>{this._socket.emit("deleteFolder",e,t,o=>{o&&r(o),i()})}})}rename(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,i,n=>{n&&o(n),r()})}})}renameFile(e,t,i){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,i,n=>{n&&o(n),r()})}})}getHosts(e){return this.request({cacheKey:"hosts",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.香"},(r,o)=>{r?i(r):t(ea(o))})}})}getUsers(e){return this.request({cacheKey:"users",forceUpdate:e,commandTimeout:!1,executor:(t,i)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.香"},(r,o)=>{r?i(r):t(ea(o))})}})}renameGroup(e,t,i){return this.request({commandTimeout:!1,executor:async r=>{const o=await this.getGroups(!0),n=o.filter(c=>c._id.startsWith(`${e}.`));for(const c of n){const l=c._id,N=t+c._id.substring(e.length);c._id=N,await this.setObject(N,c),await this.delObject(l)}const M=o.find(c=>c._id===e);if(M){const c=M._id;M._id=t,i!==void 0&&(M.common??={},M.common.name=i),await this.setObject(t,M),await this.delObject(c)}r()}})}getHostInfo(e,t,i){return e=vt(e),this.request({cacheKey:`hostInfo_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("sendToHost",e,"getHostInfo",null,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getHostInfo"'):M?r(M):o('Cannot read "getHostInfo"'))})}})}getHostInfoShort(e,t,i){return e=vt(e),this.request({cacheKey:`hostInfoShort_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("sendToHost",e,"getHostInfoShort",null,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getHostInfoShort"'):M?r(M):o('Cannot read "getHostInfoShort"'))})}})}getRepository(e,t,i,r){return this.request({cacheKey:`repository_${e}`,forceUpdate:i,commandTimeout:r,executor:(o,n,M)=>{this._socket.emit("sendToHost",e,"getRepository",t,c=>{M.elapsed||(M.clearTimeout(),c===Qe.PERMISSION_ERROR?n('May not read "getRepository"'):c?o(c):n('Cannot read "getRepository"'))})}})}getInstalled(e,t,i){return e=vt(e),this.request({cacheKey:`installed_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("sendToHost",e,"getInstalled",null,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getInstalled"'):M?r(M):o('Cannot read "getInstalled"'))})}})}cmdExec(e,t,i,r){return this.request({commandTimeout:r,executor:(o,n,M)=>{e=vt(e),this._socket.emit("cmdExec",e,i,t,c=>{M.elapsed||(M.clearTimeout(),c&&n(c),o())})}})}readBaseSettings(e){return e=Pi(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(t,i,r)=>{this._socket.emit("sendToHost",e,"readBaseSettings",null,o=>{r.elapsed||(r.clearTimeout(),o===Qe.PERMISSION_ERROR?i('May not read "BaseSettings"'):o?o.error?i(new Error(o.error)):t(o):i('Cannot read "BaseSettings"'))})}})}writeBaseSettings(e,t){return e=Pi(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(i,r,o)=>{this._socket.emit("sendToHost",e,"writeBaseSettings",t,n=>{o.elapsed||(o.clearTimeout(),n===Qe.PERMISSION_ERROR?r('May not write "BaseSettings"'):n?i(n):r('Cannot write "BaseSettings"'))})}})}restartController(e){return e=Pi(e),this.request({executor:(t,i,r)=>{this._socket.emit("sendToHost",e,"restartController",null,()=>{r.elapsed||(r.clearTimeout(),t(!0))})}})}getDiagData(e,t){return e=Pi(e),this.request({executor:(i,r,o)=>{this._socket.emit("sendToHost",e,"getDiagData",t,n=>{o.elapsed||(o.clearTimeout(),i(n||null))})}})}changePassword(e,t){return this.request({executor:(i,r,o)=>{this._socket.emit("changePassword",e,t,n=>{o.elapsed||(o.clearTimeout(),n&&r(n),i())})}})}getIpAddresses(e,t){return e=vt(e),this.request({cacheKey:`IPs_${e}`,forceUpdate:t,commandTimeout:!1,executor:async i=>{const r=await this.getObject(e);i((r==null?void 0:r.common.address)??[])}})}getHostByIp(e,t){return e=Pi(e),this.request({cacheKey:`rIPs_${e}`,forceUpdate:t,executor:(i,r,o)=>{this._socket.emit("getHostByIp",e,(n,M)=>{if(o.elapsed)return;o.clearTimeout();const{IPs4:c,IPs6:l}=_y(M);i([...c,...l])})}})}encrypt(e){return this.request({executor:(t,i,r)=>{this._socket.emit("encrypt",e,(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}decrypt(e){return this.request({executor:(t,i,r)=>{this._socket.emit("decrypt",e,(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}chmodFile(e,t,i){return this.request({executor:(r,o,n)=>{this._socket.emit("chmodFile",e,t,i,(M,c)=>{n.elapsed||(n.clearTimeout(),M&&o(M),r(c))})}})}chownFile(e,t,i){return this.request({executor:(r,o,n)=>{this._socket.emit("chownFile",e,t,i,(M,c)=>{n.elapsed||(n.clearTimeout(),M&&o(M),r(c))})}})}getNotifications(e,t){return this.request({executor:(i,r,o)=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},n=>{o.elapsed||(o.clearTimeout(),i(n))})}})}clearNotifications(e,t){return this.request({executor:(i,r,o)=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},n=>{o.elapsed||(o.clearTimeout(),i(n))})}})}getIsEasyModeStrict(){return this.request({executor:(e,t,i)=>{this._socket.emit("getIsEasyModeStrict",(r,o)=>{i.elapsed||(i.clearTimeout(),r&&t(r),e(!!o))})}})}getEasyMode(){return this.request({executor:(e,t,i)=>{this._socket.emit("getEasyMode",(r,o)=>{i.elapsed||(i.clearTimeout(),r?t(new Error(r)):e(o))})}})}getRatings(e){return this.request({executor:(t,i,r)=>{this._socket.emit("getRatings",!!e,(o,n)=>{r.elapsed||(r.clearTimeout(),o?i(new Error(o)):t(n))})}})}getCurrentSession(e){const t=new AbortController;return this.request({commandTimeout:e||5e3,onTimeout:()=>{t.abort()},executor:async(i,r,o)=>{try{const n=await fetch("./session",{signal:t.signal});if(o.elapsed)return;o.clearTimeout();const M=await n.json();i(M)}catch(n){r(`getCurrentSession: ${n}`)}}})}getCurrentInstance(){return this.request({cacheKey:"currentInstance",executor:(e,t,i)=>{this._socket.emit("getCurrentInstance",(r,o)=>{i.elapsed||(i.clearTimeout(),r?t(r):e(o))})}})}getAdapterInstances(e,t){let i;return typeof e=="boolean"?(t=e,i=""):i=e||"",this.request({cacheKey:`instances_${i}`,forceUpdate:t,executor:(r,o,n)=>{this._socket.emit("getAdapterInstances",i,(M,c)=>{n.elapsed||(n.clearTimeout(),M&&o(M),r(c))})}})}getAdapters(e,t){let i;return typeof e=="boolean"?(t=e,i=""):i=e||"",this.request({cacheKey:`adapter_${i}`,forceUpdate:t,executor:(r,o,n)=>{this._socket.emit("getAdapters",i,(M,c)=>{n.elapsed||(n.clearTimeout(),M&&o(M),r(c))})}})}getCompactAdapters(e){return this.request({cacheKey:"compactAdapters",forceUpdate:e,executor:(t,i,r)=>{this._socket.emit("getCompactAdapters",(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}getAdaptersResetCache(e){e=e??"",this.resetCache(`adapter_${e}`),this.resetCache("compactAdapters")}getCompactInstances(e){return this.request({cacheKey:"compactInstances",forceUpdate:e,executor:(t,i,r)=>{this._socket.emit("getCompactInstances",(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}getAdapterInstancesResetCache(e){e=e??"",this.resetCache(`instances_${e}`),this.resetCache("compactInstances")}getCompactInstalled(e,t,i){return e=vt(e),this.request({cacheKey:`installedCompact_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("getCompactInstalled",e,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getCompactInstalled"'):M?r(M):o('Cannot read "getCompactInstalled"'))})}})}getInstalledResetCache(e){e?(this.resetCache(`installedCompact_${e}`),this.resetCache(`installed_${e}`)):(this.resetCache("installedCompact_",!0),this.resetCache("installed_",!0))}getCompactRepository(e,t,i){return e=vt(e),this.request({cacheKey:`repositoryCompact_${e}`,forceUpdate:t,commandTimeout:i,executor:(r,o,n)=>{this._socket.emit("getCompactRepository",e,M=>{n.elapsed||(n.clearTimeout(),M===Qe.PERMISSION_ERROR?o('May not read "getCompactRepository"'):M?r(M):o('Cannot read "getCompactRepository"'))})}})}getRepositoryResetCache(e){e?(this.resetCache(`repositoryCompact_${e}`),this.resetCache(`repository_${e}`)):(this.resetCache("repositoryCompact_",!0),this.resetCache("repository_",!0))}getCompactHosts(e){return this.request({cacheKey:"hostsCompact",forceUpdate:e,executor:(t,i,r)=>{this._socket.emit("getCompactHosts",(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}getCompactSystemRepositories(e){return this.request({cacheKey:"repositoriesCompact",forceUpdate:e,executor:(t,i,r)=>{this._socket.emit("getCompactSystemRepositories",(o,n)=>{r.elapsed||(r.clearTimeout(),o&&i(o),t(n))})}})}}const X=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,ae=globalThis,Is="10.48.0";function Qo(){return bo(ae),ae}function bo(s){const e=s.__SENTRY__=s.__SENTRY__||{};return e.version=e.version||Is,e[Is]=e[Is]||{}}function Ci(s,e,t=ae){const i=t.__SENTRY__=t.__SENTRY__||{},r=i[Is]=i[Is]||{};return r[s]||(r[s]=e())}const xy=["debug","info","warn","error","log","assert","trace"],Sy="Sentry Logger ",yo={};function pi(s){if(!("console"in ae))return s();const e=ae.console,t={},i=Object.keys(yo);i.forEach(r=>{const o=yo[r];t[r]=e[r],e[r]=o});try{return s()}finally{i.forEach(r=>{e[r]=t[r]})}}function ky(){nM().enabled=!0}function vy(){nM().enabled=!1}function kN(){return nM().enabled}function Yy(...s){oM("log",...s)}function Qy(...s){oM("warn",...s)}function by(...s){oM("error",...s)}function oM(s,...e){X&&kN()&&pi(()=>{ae.console[s](`${Sy}[${s}]:`,...e)})}function nM(){return X?Ci("loggerSettings",()=>({enabled:!1})):{enabled:!1}}const F={enable:ky,disable:vy,isEnabled:kN,log:Yy,warn:Qy,error:by},vN=50,Cs="?",Rc=/\(error: (.*)\)/,Fc=/captureMessage|captureException/;function YN(...s){const e=s.sort((t,i)=>t[0]-i[0]).map(t=>t[1]);return(t,i=0,r=0)=>{const o=[],n=t.split(` +`);for(let M=i;M1024&&(c=c.slice(0,1024));const l=Rc.test(c)?c.replace(Rc,"$1"):c;if(!l.includes("Error: ")){for(const N of e){const u=N(l);if(u){o.push(u);break}}if(o.length>=vN+r)break}}return $y(o.slice(r))}}function Uy(s){return Array.isArray(s)?YN(...s):s}function $y(s){if(!s.length)return[];const e=Array.from(s);return/sentryWrapped/.test(Jr(e).function||"")&&e.pop(),e.reverse(),Fc.test(Jr(e).function||"")&&(e.pop(),Fc.test(Jr(e).function||"")&&e.pop()),e.slice(0,vN).map(t=>({...t,filename:t.filename||Jr(e).filename,function:t.function||Cs}))}function Jr(s){return s[s.length-1]||{}}const jn="";function Ms(s){try{return!s||typeof s!="function"?jn:s.name||jn}catch{return jn}}function Gc(s){const e=s.exception;if(e){const t=[];try{return e.values.forEach(i=>{i.stacktrace.frames&&t.push(...i.stacktrace.frames)}),t}catch{return}}}function QN(s){return"__v_isVNode"in s&&s.__v_isVNode?"[VueVNode]":"[VueViewModel]"}const oo={},Hc={};function fs(s,e){oo[s]=oo[s]||[],oo[s].push(e)}function Os(s,e){if(!Hc[s]){Hc[s]=!0;try{e()}catch(t){X&&F.error(`Error while instrumenting ${s}`,t)}}}function gt(s,e){const t=s&&oo[s];if(t)for(const i of t)try{i(e)}catch(r){X&&F.error(`Error while triggering instrumentation handler. Type: ${s} Name: ${Ms(i)} -Error:`,r)}}let yn=null;function Wy(s){const e="error";fs(e,s),Os(e,Jy)}function Jy(){yn=ae.onerror,ae.onerror=function(s,e,t,i,r){return gt("error",{column:i,error:r,line:t,msg:s,url:e}),yn?yn.apply(this,arguments):!1},ae.onerror.__SENTRY_INSTRUMENTED__=!0}let Tn=null;function By(s){const e="unhandledrejection";fs(e,s),Os(e,Ry)}function Ry(){Tn=ae.onunhandledrejection,ae.onunhandledrejection=function(s){return gt("unhandledrejection",s),Tn?Tn.apply(this,arguments):!0},ae.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}const $N=Object.prototype.toString;function Uo(s){switch($N.call(s)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return cs(s,Error)}}function Ai(s,e){return $N.call(s)===`[object ${e}]`}function PN(s){return Ai(s,"ErrorEvent")}function Zc(s){return Ai(s,"DOMError")}function Fy(s){return Ai(s,"DOMException")}function Ut(s){return Ai(s,"String")}function MM(s){return typeof s=="object"&&s!==null&&"__sentry_template_string__"in s&&"__sentry_template_values__"in s}function $o(s){return s===null||MM(s)||typeof s!="object"&&typeof s!="function"}function ur(s){return Ai(s,"Object")}function Po(s){return typeof Event<"u"&&cs(s,Event)}function Gy(s){return typeof Element<"u"&&cs(s,Element)}function Hy(s){return Ai(s,"RegExp")}function wr(s){return!!(s!=null&&s.then&&typeof s.then=="function")}function Vy(s){return ur(s)&&"nativeEvent"in s&&"preventDefault"in s&&"stopPropagation"in s}function cs(s,e){try{return s instanceof e}catch{return!1}}function WN(s){return!!(typeof s=="object"&&s!==null&&(s.__isVue||s._isVue||s.__v_isVNode))}function JN(s){return typeof Request<"u"&&cs(s,Request)}const cM=ae,Zy=80;function BN(s,e={}){if(!s)return"";try{let t=s;const i=5,r=[];let o=0,n=0;const M=" > ",c=M.length;let l;const N=Array.isArray(e)?e:e.keyAttrs,u=!Array.isArray(e)&&e.maxStringLength||Zy;for(;t&&o++1&&n+r.length*c+l.length>=u));)r.push(l),n+=l.length,t=t.parentNode;return r.reverse().join(M)}catch{return""}}function Xy(s,e){const t=s,i=[];if(!(t!=null&&t.tagName))return"";if(cM.HTMLElement&&t instanceof HTMLElement&&t.dataset){if(t.dataset.sentryComponent)return t.dataset.sentryComponent;if(t.dataset.sentryElement)return t.dataset.sentryElement}i.push(t.tagName.toLowerCase());const r=e!=null&&e.length?e.filter(o=>t.getAttribute(o)).map(o=>[o,t.getAttribute(o)]):null;if(r!=null&&r.length)r.forEach(o=>{i.push(`[${o[0]}="${o[1]}"]`)});else{t.id&&i.push(`#${t.id}`);const o=t.className;if(o&&Ut(o)){const n=o.split(/\s+/);for(const M of n)i.push(`.${M}`)}}for(const o of["aria-label","type","name","title","alt"]){const n=t.getAttribute(o);n&&i.push(`[${o}="${n}"]`)}return i.join("")}function uM(){try{return cM.document.location.href}catch{return""}}function Ky(s){if(!cM.HTMLElement)return null;let e=s;const t=5;for(let i=0;i"}}function Kc(s){return typeof s=="object"&&s!==null?Object.fromEntries(Object.entries(s)):{}}function qy(s){const e=Object.keys(FN(s));return e.sort(),e[0]?e.join(", "):"[object has no keys]"}let $s;function Wo(s){if($s!==void 0)return $s?$s(s):s();const e=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),t=ae;return e in t&&typeof t[e]=="function"?($s=t[e],$s(s)):($s=null,s())}function To(){return Wo(()=>Math.random())}function Jo(){return Wo(()=>Date.now())}function sa(s,e=0){return typeof s!="string"||e===0||s.length<=e?s:`${s.slice(0,e)}...`}function qc(s,e){if(!Array.isArray(s))return"";const t=[];for(let i=0;ino(s,i,t))}function eT(){const s=ae;return s.crypto||s.msCrypto}let Dn;function tT(){return To()*16}function at(s=eT()){try{if(s!=null&&s.randomUUID)return Wo(()=>s.randomUUID()).replace(/-/g,"")}catch{}return Dn||(Dn="10000000100040008000"+1e11),Dn.replace(/[018]/g,e=>(e^(tT()&15)>>e/4).toString(16))}function GN(s){var e,t;return(t=(e=s.exception)==null?void 0:e.values)==null?void 0:t[0]}function hs(s){const{message:e,event_id:t}=s;if(e)return e;const i=GN(s);return i?i.type&&i.value?`${i.type}: ${i.value}`:i.type||i.value||t||"":t||""}function ia(s,e,t){const i=s.exception=s.exception||{},r=i.values=i.values||[],o=r[0]=r[0]||{};o.value||(o.value=e||""),o.type||(o.type="Error")}function hi(s,e){const t=GN(s);if(!t)return;const i={type:"generic",handled:!0},r=t.mechanism;if(t.mechanism={...i,...r,...e},e&&"data"in e){const o={...r==null?void 0:r.data,...e.data};t.mechanism.data=o}}function eu(s){if(sT(s))return!0;try{us(s,"__sentry_captured__",!0)}catch{}return!1}function sT(s){try{return s.__sentry_captured__}catch{}}const HN=1e3;function Ir(){return Jo()/HN}function iT(){const{performance:s}=ae;if(!(s!=null&&s.now)||!s.timeOrigin)return Ir;const e=s.timeOrigin;return()=>(e+Wo(()=>s.now()))/HN}let tu;function $t(){return(tu??(tu=iT()))()}function rT(s){const e=$t(),t={sid:at(),init:!0,timestamp:e,started:e,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>nT(t)};return s&&zi(t,s),t}function zi(s,e={}){if(e.user&&(!s.ipAddress&&e.user.ip_address&&(s.ipAddress=e.user.ip_address),!s.did&&!e.did&&(s.did=e.user.id||e.user.email||e.user.username)),s.timestamp=e.timestamp||$t(),e.abnormal_mechanism&&(s.abnormal_mechanism=e.abnormal_mechanism),e.ignoreDuration&&(s.ignoreDuration=e.ignoreDuration),e.sid&&(s.sid=e.sid.length===32?e.sid:at()),e.init!==void 0&&(s.init=e.init),!s.did&&e.did&&(s.did=`${e.did}`),typeof e.started=="number"&&(s.started=e.started),s.ignoreDuration)s.duration=void 0;else if(typeof e.duration=="number")s.duration=e.duration;else{const t=s.timestamp-s.started;s.duration=t>=0?t:0}e.release&&(s.release=e.release),e.environment&&(s.environment=e.environment),!s.ipAddress&&e.ipAddress&&(s.ipAddress=e.ipAddress),!s.userAgent&&e.userAgent&&(s.userAgent=e.userAgent),typeof e.errors=="number"&&(s.errors=e.errors),e.status&&(s.status=e.status)}function oT(s,e){let t={};s.status==="ok"&&(t={status:"exited"}),zi(s,t)}function nT(s){return{sid:`${s.sid}`,init:s.init,started:new Date(s.started*1e3).toISOString(),timestamp:new Date(s.timestamp*1e3).toISOString(),status:s.status,errors:s.errors,did:typeof s.did=="number"||typeof s.did=="string"?`${s.did}`:void 0,duration:s.duration,abnormal_mechanism:s.abnormal_mechanism,attrs:{release:s.release,environment:s.environment,ip_address:s.ipAddress,user_agent:s.userAgent}}}function Cr(s,e,t=2){if(!e||typeof e!="object"||t<=0)return e;if(s&&Object.keys(e).length===0)return s;const i={...s};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[r]=Cr(i[r],e[r],t-1));return i}function su(){return at()}function VN(){return at().substring(16)}const ra="_sentrySpan";function iu(s,e){e?us(s,ra,e):delete s[ra]}function ru(s){return s[ra]}const aT=100;class Pt{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:su(),sampleRand:To()}}clone(){const e=new Pt;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._attributes={...this._attributes},e._extra={...this._extra},e._contexts={...this._contexts},this._contexts.flags&&(e._contexts.flags={values:[...this._contexts.flags.values]}),e._user=this._user,e._level=this._level,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e._lastEventId=this._lastEventId,e._conversationId=this._conversationId,iu(e,ru(this)),e}setClient(e){this._client=e}setLastEventId(e){this._lastEventId=e}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&zi(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}setConversationId(e){return this._conversationId=e||void 0,this._notifyScopeListeners(),this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this.setTags({[e]:t})}setAttributes(e){return this._attributes={...this._attributes,...e},this._notifyScopeListeners(),this}setAttribute(e,t){return this.setAttributes({[e]:t})}removeAttribute(e){return e in this._attributes&&(delete this._attributes[e],this._notifyScopeListeners()),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return t===null?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;const t=typeof e=="function"?e(this):e,i=t instanceof Pt?t.getScopeData():ur(t)?e:void 0,{tags:r,attributes:o,extra:n,user:M,contexts:c,level:l,fingerprint:N=[],propagationContext:u,conversationId:L}=i||{};return this._tags={...this._tags,...r},this._attributes={...this._attributes,...o},this._extra={...this._extra,...n},this._contexts={...this._contexts,...c},M&&Object.keys(M).length&&(this._user=M),l&&(this._level=l),N.length&&(this._fingerprint=N),u&&(this._propagationContext=u),L&&(this._conversationId=L),this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,this._conversationId=void 0,iu(this,void 0),this._attachments=[],this.setPropagationContext({traceId:su(),sampleRand:To()}),this._notifyScopeListeners(),this}addBreadcrumb(e,t){var o;const i=typeof t=="number"?t:aT;if(i<=0)return this;const r={timestamp:Ir(),...e,message:e.message?sa(e.message,2048):e.message};return this._breadcrumbs.push(r),this._breadcrumbs.length>i&&(this._breadcrumbs=this._breadcrumbs.slice(-i),(o=this._client)==null||o.recordDroppedEvent("buffer_overflow","log_item")),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:ru(this),conversationId:this._conversationId}}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata=Cr(this._sdkProcessingMetadata,e,2),this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){const i=(t==null?void 0:t.event_id)||at();if(!this._client)return X&&F.warn("No client configured on scope - will not capture exception!"),i;const r=new Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:r,...t,event_id:i},this),i}captureMessage(e,t,i){const r=(i==null?void 0:i.event_id)||at();if(!this._client)return X&&F.warn("No client configured on scope - will not capture message!"),r;const o=(i==null?void 0:i.syntheticException)??new Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:o,...i,event_id:r},this),r}captureEvent(e,t){const i=e.event_id||(t==null?void 0:t.event_id)||at();return this._client?(this._client.captureEvent(e,{...t,event_id:i},this),i):(X&&F.warn("No client configured on scope - will not capture event!"),i)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}}function MT(){return Ci("defaultCurrentScope",()=>new Pt)}function cT(){return Ci("defaultIsolationScope",()=>new Pt)}const ou=s=>s instanceof Promise&&!s[ZN],ZN=Symbol("chained PromiseLike"),uT=(s,e,t)=>{const i=s.then(r=>(e(r),r),r=>{throw t(r),r});return ou(i)&&ou(s)?i:lT(s,i)},lT=(s,e)=>{let t=!1;for(const i in s){if(i in e)continue;t=!0;const r=s[i];typeof r=="function"?Object.defineProperty(e,i,{value:(...o)=>r.apply(s,o),enumerable:!0,configurable:!0,writable:!0}):e[i]=r}return t&&Object.assign(e,{[ZN]:!0}),e};class NT{constructor(e,t){let i;e?i=e:i=new Pt;let r;t?r=t:r=new Pt,this._stack=[{scope:i}],this._isolationScope=r}withScope(e){const t=this._pushScope();let i;try{i=e(t)}catch(r){throw this._popScope(),r}return wr(i)?uT(i,()=>this._popScope(),()=>this._popScope()):(this._popScope(),i)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const e=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:e}),e}_popScope(){return this._stack.length<=1?!1:!!this._stack.pop()}}function wi(){const s=Qo(),e=bo(s);return e.stack=e.stack||new NT(MT(),cT())}function LT(s){return wi().withScope(s)}function gT(s,e){const t=wi();return t.withScope(()=>(t.getStackTop().scope=s,e(s)))}function nu(s){return wi().withScope(()=>s(wi().getIsolationScope()))}function jT(){return{withIsolationScope:nu,withScope:LT,withSetScope:gT,withSetIsolationScope:(s,e)=>nu(e),getCurrentScope:()=>wi().getScope(),getIsolationScope:()=>wi().getIsolationScope()}}function NM(s){const e=bo(s);return e.acs?e.acs:jT()}function At(){const s=Qo();return NM(s).getCurrentScope()}function Es(){const s=Qo();return NM(s).getIsolationScope()}function yT(){return Ci("globalScope",()=>new Pt)}function TT(...s){const e=Qo(),t=NM(e);if(s.length===2){const[i,r]=s;return i?t.withSetScope(i,r):t.withScope(r)}return t.withScope(s[0])}function Ue(){return At().getClient()}function DT(s){const e=s.getPropagationContext(),{traceId:t,parentSpanId:i,propagationSpanId:r}=e,o={trace_id:t,span_id:r||VN()};return i&&(o.parent_span_id=i),o}const dT="sentry.source",hT="sentry.sample_rate",zT="sentry.previous_trace_sample_rate",wT="sentry.op",IT="sentry.origin",XN="sentry.profile_id",KN="sentry.exclusive_time",CT="gen_ai.conversation.id",pT=0,AT=1,mT="_sentryScope",fT="_sentryIsolationScope";function OT(s){if(s){if(typeof s=="object"&&"deref"in s&&typeof s.deref=="function")try{return s.deref()}catch{return}return s}}function qN(s){const e=s;return{scope:e[mT],isolationScope:OT(e[fT])}}const au="sentry-";function ET(s){const e=_T(s);if(!e)return;const t=Object.entries(e).reduce((i,[r,o])=>{if(r.startsWith(au)){const n=r.slice(au.length);i[n]=o}return i},{});if(Object.keys(t).length>0)return t}function _T(s){if(!(!s||!Ut(s)&&!Array.isArray(s)))return Array.isArray(s)?s.reduce((e,t)=>{const i=Mu(t);return Object.entries(i).forEach(([r,o])=>{e[r]=o}),e},{}):Mu(s)}function Mu(s){return s.split(",").map(e=>{const t=e.indexOf("=");if(t===-1)return[];const i=e.slice(0,t),r=e.slice(t+1);return[i,r].map(o=>{try{return decodeURIComponent(o.trim())}catch{return}})}).reduce((e,[t,i])=>(t&&i&&(e[t]=i),e),{})}const xT=/^o(\d+)\./,ST=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function kT(s){return s==="http"||s==="https"}function pr(s,e=!1){const{host:t,path:i,pass:r,port:o,projectId:n,protocol:M,publicKey:c}=s;return`${M}://${c}${e&&r?`:${r}`:""}@${t}${o?`:${o}`:""}/${i&&`${i}/`}${n}`}function vT(s){const e=ST.exec(s);if(!e){pi(()=>{console.error(`Invalid Sentry Dsn: ${s}`)});return}const[t,i,r="",o="",n="",M=""]=e.slice(1);let c="",l=M;const N=l.split("/");if(N.length>1&&(c=N.slice(0,-1).join("/"),l=N.pop()),l){const u=l.match(/^\d+/);u&&(l=u[0])}return e4({host:o,pass:r,path:c,projectId:l,port:n,protocol:t,publicKey:i})}function e4(s){return{protocol:s.protocol,publicKey:s.publicKey||"",pass:s.pass||"",host:s.host,port:s.port||"",path:s.path||"",projectId:s.projectId}}function YT(s){if(!X)return!0;const{port:e,projectId:t,protocol:i}=s;return["protocol","publicKey","host","projectId"].find(n=>s[n]?!1:(F.error(`Invalid Sentry Dsn: ${n} missing`),!0))?!1:t.match(/^\d+$/)?kT(i)?e&&isNaN(parseInt(e,10))?(F.error(`Invalid Sentry Dsn: Invalid port ${e}`),!1):!0:(F.error(`Invalid Sentry Dsn: Invalid protocol ${i}`),!1):(F.error(`Invalid Sentry Dsn: Invalid projectId ${t}`),!1)}function QT(s){const e=s.match(xT);return e==null?void 0:e[1]}function bT(s){const e=s.getOptions(),{host:t}=s.getDsn()||{};let i;return e.orgId?i=String(e.orgId):t&&(i=QT(t)),i}function UT(s){const e=typeof s=="string"?vT(s):e4(s);if(!(!e||!YT(e)))return e}function $T(s){if(typeof s=="boolean")return Number(s);const e=typeof s=="string"?parseFloat(s):s;if(!(typeof e!="number"||isNaN(e)||e<0||e>1))return e}const t4=1;let cu=!1;function PT(s){const{spanId:e,traceId:t,isRemote:i}=s.spanContext(),r=i?e:LM(s).parent_span_id,o=qN(s).scope,n=i?(o==null?void 0:o.getPropagationContext().propagationSpanId)||VN():e;return{parent_span_id:r,span_id:n,trace_id:t}}function WT(s){if(s&&s.length>0)return s.map(({context:{spanId:e,traceId:t,traceFlags:i,...r},attributes:o})=>({span_id:e,trace_id:t,sampled:i===t4,attributes:o,...r}))}function uu(s){return typeof s=="number"?lu(s):Array.isArray(s)?s[0]+s[1]/1e9:s instanceof Date?lu(s.getTime()):$t()}function lu(s){return s>9999999999?s/1e3:s}function LM(s){if(RT(s))return s.getSpanJSON();const{spanId:e,traceId:t}=s.spanContext();if(BT(s)){const{attributes:i,startTime:r,name:o,endTime:n,status:M,links:c}=s;return{span_id:e,trace_id:t,data:i,description:o,parent_span_id:JT(s),start_timestamp:uu(r),timestamp:uu(n)||void 0,status:GT(M),op:i[wT],origin:i[IT],links:WT(c)}}return{span_id:e,trace_id:t,start_timestamp:0,data:{}}}function JT(s){var e;return"parentSpanId"in s?s.parentSpanId:"parentSpanContext"in s?(e=s.parentSpanContext)==null?void 0:e.spanId:void 0}function BT(s){const e=s;return!!e.attributes&&!!e.startTime&&!!e.name&&!!e.endTime&&!!e.status}function RT(s){return typeof s.getSpanJSON=="function"}function FT(s){const{traceFlags:e}=s.spanContext();return e===t4}function GT(s){if(!(!s||s.code===pT))return s.code===AT?"ok":s.message||"internal_error"}const HT="_sentryRootSpan",s4=VT;function VT(s){return s[HT]||s}function Nu(){cu||(pi(()=>{console.warn("[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.")}),cu=!0)}function ZT(s){var t;if(typeof __SENTRY_TRACING__=="boolean"&&!__SENTRY_TRACING__)return!1;const e=(t=Ue())==null?void 0:t.getOptions();return!!e&&(e.tracesSampleRate!=null||!!e.tracesSampler)}function Lu(s){F.log(`Ignoring span ${s.op} - ${s.description} because it matches \`ignoreSpans\`.`)}function gu(s,e){if(!(e!=null&&e.length)||!s.description)return!1;for(const t of e){if(KT(t)){if(no(s.description,t))return X&&Lu(s),!0;continue}if(!t.name&&!t.op)continue;const i=t.name?no(s.description,t.name):!0,r=t.op?s.op&&no(s.op,t.op):!0;if(i&&r)return X&&Lu(s),!0}return!1}function XT(s,e){const t=e.parent_span_id,i=e.span_id;if(t)for(const r of s)r.parent_span_id===i&&(r.parent_span_id=t)}function KT(s){return typeof s=="string"||s instanceof RegExp}const gM="production",qT="_frozenDsc";function i4(s,e){const t=e.getOptions(),{publicKey:i}=e.getDsn()||{},r={environment:t.environment||gM,release:t.release,public_key:i,trace_id:s,org_id:bT(e)};return e.emit("createDsc",r),r}function eD(s,e){const t=e.getPropagationContext();return t.dsc||i4(t.traceId,s)}function tD(s){var j;const e=Ue();if(!e)return{};const t=s4(s),i=LM(t),r=i.data,o=t.spanContext().traceState,n=(o==null?void 0:o.get("sentry.sample_rate"))??r[hT]??r[zT];function M(y){return(typeof n=="number"||typeof n=="string")&&(y.sample_rate=`${n}`),y}const c=t[qT];if(c)return M(c);const l=o==null?void 0:o.get("sentry.dsc"),N=l&&ET(l);if(N)return M(N);const u=i4(s.spanContext().traceId,e),L=r[dT]??r["sentry.span.source"],g=i.description;return L!=="url"&&g&&(u.transaction=g),ZT()&&(u.sampled=String(FT(t)),u.sample_rand=(o==null?void 0:o.get("sentry.sample_rand"))??((j=qN(t).scope)==null?void 0:j.getPropagationContext().sampleRand.toString())),M(u),e.emit("createDsc",u,t),u}function sD(s){return!!s&&typeof s=="function"&&"_streamed"in s&&!!s._streamed}function Yt(s,e=100,t=1/0){try{return oa("",s,e,t)}catch(i){return{ERROR:`**non-serializable** (${i})`}}}function r4(s,e=3,t=100*1024){const i=Yt(s,e);return nD(i)>t?r4(s,e-1,t):i}function oa(s,e,t=1/0,i=1/0,r=aD()){const[o,n]=r;if(e==null||["boolean","string"].includes(typeof e)||typeof e=="number"&&Number.isFinite(e))return e;const M=iD(s,e);if(!M.startsWith("[object "))return M;if(e.__sentry_skip_normalization__)return e;const c=typeof e.__sentry_override_normalization_depth__=="number"?e.__sentry_override_normalization_depth__:t;if(c===0)return M.replace("object ","");if(o(e))return"[Circular ~]";const l=e;if(l&&typeof l.toJSON=="function")try{const g=l.toJSON();return oa("",g,c-1,i,r)}catch{}const N=Array.isArray(e)?[]:{};let u=0;const L=FN(e);for(const g in L){if(!Object.prototype.hasOwnProperty.call(L,g))continue;if(u>=i){N[g]="[MaxProperties ~]";break}const j=L[g];N[g]=oa(g,j,c-1,i,r),u++}return n(e),N}function iD(s,e){try{if(s==="domain"&&e&&typeof e=="object"&&e._events)return"[Domain]";if(s==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&e===global)return"[Global]";if(typeof window<"u"&&e===window)return"[Window]";if(typeof document<"u"&&e===document)return"[Document]";if(WN(e))return UN(e);if(Vy(e))return"[SyntheticEvent]";if(typeof e=="number"&&!Number.isFinite(e))return`[${e}]`;if(typeof e=="function")return`[Function: ${Ms(e)}]`;if(typeof e=="symbol")return`[${String(e)}]`;if(typeof e=="bigint")return`[BigInt: ${String(e)}]`;const t=rD(e);return/^HTML(\w*)Element$/.test(t)?`[HTMLElement: ${t}]`:`[object ${t}]`}catch(t){return`**non-serializable** (${t})`}}function rD(s){const e=Object.getPrototypeOf(s);return e!=null&&e.constructor?e.constructor.name:"null prototype"}function oD(s){return~-encodeURI(s).split(/%..|./).length}function nD(s){return oD(JSON.stringify(s))}function aD(){const s=new WeakSet;function e(i){return s.has(i)?!0:(s.add(i),!1)}function t(i){s.delete(i)}return[e,t]}function mi(s,e=[]){return[s,e]}function MD(s,e){const[t,i]=s;return[t,[...i,e]]}function na(s,e){const t=s[1];for(const i of t){const r=i[0].type;if(e(i,r))return!0}return!1}function cD(s,e){return na(s,(t,i)=>e.includes(i))}function aa(s){const e=bo(ae);return e.encodePolyfill?e.encodePolyfill(s):new TextEncoder().encode(s)}function uD(s){const[e,t]=s;let i=JSON.stringify(e);function r(o){typeof i=="string"?i=typeof o=="string"?i+o:[aa(i),o]:i.push(typeof o=="string"?aa(o):o)}for(const o of t){const[n,M]=o;if(r(` +Error:`,r)}}let yn=null;function Py(s){const e="error";fs(e,s),Os(e,Wy)}function Wy(){yn=ae.onerror,ae.onerror=function(s,e,t,i,r){return gt("error",{column:i,error:r,line:t,msg:s,url:e}),yn?yn.apply(this,arguments):!1},ae.onerror.__SENTRY_INSTRUMENTED__=!0}let Tn=null;function Jy(s){const e="unhandledrejection";fs(e,s),Os(e,By)}function By(){Tn=ae.onunhandledrejection,ae.onunhandledrejection=function(s){return gt("unhandledrejection",s),Tn?Tn.apply(this,arguments):!0},ae.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}const bN=Object.prototype.toString;function Uo(s){switch(bN.call(s)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return cs(s,Error)}}function Ai(s,e){return bN.call(s)===`[object ${e}]`}function UN(s){return Ai(s,"ErrorEvent")}function Vc(s){return Ai(s,"DOMError")}function Ry(s){return Ai(s,"DOMException")}function Ut(s){return Ai(s,"String")}function aM(s){return typeof s=="object"&&s!==null&&"__sentry_template_string__"in s&&"__sentry_template_values__"in s}function $o(s){return s===null||aM(s)||typeof s!="object"&&typeof s!="function"}function ur(s){return Ai(s,"Object")}function Po(s){return typeof Event<"u"&&cs(s,Event)}function Fy(s){return typeof Element<"u"&&cs(s,Element)}function Gy(s){return Ai(s,"RegExp")}function wr(s){return!!(s!=null&&s.then&&typeof s.then=="function")}function Hy(s){return ur(s)&&"nativeEvent"in s&&"preventDefault"in s&&"stopPropagation"in s}function cs(s,e){try{return s instanceof e}catch{return!1}}function $N(s){return!!(typeof s=="object"&&s!==null&&(s.__isVue||s._isVue||s.__v_isVNode))}function PN(s){return typeof Request<"u"&&cs(s,Request)}const MM=ae,Vy=80;function WN(s,e={}){if(!s)return"";try{let t=s;const i=5,r=[];let o=0,n=0;const M=" > ",c=M.length;let l;const N=Array.isArray(e)?e:e.keyAttrs,u=!Array.isArray(e)&&e.maxStringLength||Vy;for(;t&&o++1&&n+r.length*c+l.length>=u));)r.push(l),n+=l.length,t=t.parentNode;return r.reverse().join(M)}catch{return""}}function Zy(s,e){const t=s,i=[];if(!(t!=null&&t.tagName))return"";if(MM.HTMLElement&&t instanceof HTMLElement&&t.dataset){if(t.dataset.sentryComponent)return t.dataset.sentryComponent;if(t.dataset.sentryElement)return t.dataset.sentryElement}i.push(t.tagName.toLowerCase());const r=e!=null&&e.length?e.filter(o=>t.getAttribute(o)).map(o=>[o,t.getAttribute(o)]):null;if(r!=null&&r.length)r.forEach(o=>{i.push(`[${o[0]}="${o[1]}"]`)});else{t.id&&i.push(`#${t.id}`);const o=t.className;if(o&&Ut(o)){const n=o.split(/\s+/);for(const M of n)i.push(`.${M}`)}}for(const o of["aria-label","type","name","title","alt"]){const n=t.getAttribute(o);n&&i.push(`[${o}="${n}"]`)}return i.join("")}function cM(){try{return MM.document.location.href}catch{return""}}function Xy(s){if(!MM.HTMLElement)return null;let e=s;const t=5;for(let i=0;i"}}function Xc(s){return typeof s=="object"&&s!==null?Object.fromEntries(Object.entries(s)):{}}function Ky(s){const e=Object.keys(BN(s));return e.sort(),e[0]?e.join(", "):"[object has no keys]"}let $s;function Wo(s){if($s!==void 0)return $s?$s(s):s();const e=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),t=ae;return e in t&&typeof t[e]=="function"?($s=t[e],$s(s)):($s=null,s())}function To(){return Wo(()=>Math.random())}function Jo(){return Wo(()=>Date.now())}function ta(s,e=0){return typeof s!="string"||e===0||s.length<=e?s:`${s.slice(0,e)}...`}function Kc(s,e){if(!Array.isArray(s))return"";const t=[];for(let i=0;ino(s,i,t))}function qy(){const s=ae;return s.crypto||s.msCrypto}let Dn;function eT(){return To()*16}function at(s=qy()){try{if(s!=null&&s.randomUUID)return Wo(()=>s.randomUUID()).replace(/-/g,"")}catch{}return Dn||(Dn="10000000100040008000"+1e11),Dn.replace(/[018]/g,e=>(e^(eT()&15)>>e/4).toString(16))}function RN(s){var e,t;return(t=(e=s.exception)==null?void 0:e.values)==null?void 0:t[0]}function hs(s){const{message:e,event_id:t}=s;if(e)return e;const i=RN(s);return i?i.type&&i.value?`${i.type}: ${i.value}`:i.type||i.value||t||"":t||""}function sa(s,e,t){const i=s.exception=s.exception||{},r=i.values=i.values||[],o=r[0]=r[0]||{};o.value||(o.value=e||""),o.type||(o.type="Error")}function hi(s,e){const t=RN(s);if(!t)return;const i={type:"generic",handled:!0},r=t.mechanism;if(t.mechanism={...i,...r,...e},e&&"data"in e){const o={...r==null?void 0:r.data,...e.data};t.mechanism.data=o}}function qc(s){if(tT(s))return!0;try{us(s,"__sentry_captured__",!0)}catch{}return!1}function tT(s){try{return s.__sentry_captured__}catch{}}const FN=1e3;function Ir(){return Jo()/FN}function sT(){const{performance:s}=ae;if(!(s!=null&&s.now)||!s.timeOrigin)return Ir;const e=s.timeOrigin;return()=>(e+Wo(()=>s.now()))/FN}let eu;function $t(){return(eu??(eu=sT()))()}function iT(s){const e=$t(),t={sid:at(),init:!0,timestamp:e,started:e,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>oT(t)};return s&&zi(t,s),t}function zi(s,e={}){if(e.user&&(!s.ipAddress&&e.user.ip_address&&(s.ipAddress=e.user.ip_address),!s.did&&!e.did&&(s.did=e.user.id||e.user.email||e.user.username)),s.timestamp=e.timestamp||$t(),e.abnormal_mechanism&&(s.abnormal_mechanism=e.abnormal_mechanism),e.ignoreDuration&&(s.ignoreDuration=e.ignoreDuration),e.sid&&(s.sid=e.sid.length===32?e.sid:at()),e.init!==void 0&&(s.init=e.init),!s.did&&e.did&&(s.did=`${e.did}`),typeof e.started=="number"&&(s.started=e.started),s.ignoreDuration)s.duration=void 0;else if(typeof e.duration=="number")s.duration=e.duration;else{const t=s.timestamp-s.started;s.duration=t>=0?t:0}e.release&&(s.release=e.release),e.environment&&(s.environment=e.environment),!s.ipAddress&&e.ipAddress&&(s.ipAddress=e.ipAddress),!s.userAgent&&e.userAgent&&(s.userAgent=e.userAgent),typeof e.errors=="number"&&(s.errors=e.errors),e.status&&(s.status=e.status)}function rT(s,e){let t={};s.status==="ok"&&(t={status:"exited"}),zi(s,t)}function oT(s){return{sid:`${s.sid}`,init:s.init,started:new Date(s.started*1e3).toISOString(),timestamp:new Date(s.timestamp*1e3).toISOString(),status:s.status,errors:s.errors,did:typeof s.did=="number"||typeof s.did=="string"?`${s.did}`:void 0,duration:s.duration,abnormal_mechanism:s.abnormal_mechanism,attrs:{release:s.release,environment:s.environment,ip_address:s.ipAddress,user_agent:s.userAgent}}}function Cr(s,e,t=2){if(!e||typeof e!="object"||t<=0)return e;if(s&&Object.keys(e).length===0)return s;const i={...s};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[r]=Cr(i[r],e[r],t-1));return i}function tu(){return at()}function GN(){return at().substring(16)}const ia="_sentrySpan";function su(s,e){e?us(s,ia,e):delete s[ia]}function iu(s){return s[ia]}const nT=100;class Pt{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:tu(),sampleRand:To()}}clone(){const e=new Pt;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._attributes={...this._attributes},e._extra={...this._extra},e._contexts={...this._contexts},this._contexts.flags&&(e._contexts.flags={values:[...this._contexts.flags.values]}),e._user=this._user,e._level=this._level,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e._lastEventId=this._lastEventId,e._conversationId=this._conversationId,su(e,iu(this)),e}setClient(e){this._client=e}setLastEventId(e){this._lastEventId=e}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&zi(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}setConversationId(e){return this._conversationId=e||void 0,this._notifyScopeListeners(),this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this.setTags({[e]:t})}setAttributes(e){return this._attributes={...this._attributes,...e},this._notifyScopeListeners(),this}setAttribute(e,t){return this.setAttributes({[e]:t})}removeAttribute(e){return e in this._attributes&&(delete this._attributes[e],this._notifyScopeListeners()),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return t===null?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;const t=typeof e=="function"?e(this):e,i=t instanceof Pt?t.getScopeData():ur(t)?e:void 0,{tags:r,attributes:o,extra:n,user:M,contexts:c,level:l,fingerprint:N=[],propagationContext:u,conversationId:L}=i||{};return this._tags={...this._tags,...r},this._attributes={...this._attributes,...o},this._extra={...this._extra,...n},this._contexts={...this._contexts,...c},M&&Object.keys(M).length&&(this._user=M),l&&(this._level=l),N.length&&(this._fingerprint=N),u&&(this._propagationContext=u),L&&(this._conversationId=L),this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,this._conversationId=void 0,su(this,void 0),this._attachments=[],this.setPropagationContext({traceId:tu(),sampleRand:To()}),this._notifyScopeListeners(),this}addBreadcrumb(e,t){var o;const i=typeof t=="number"?t:nT;if(i<=0)return this;const r={timestamp:Ir(),...e,message:e.message?ta(e.message,2048):e.message};return this._breadcrumbs.push(r),this._breadcrumbs.length>i&&(this._breadcrumbs=this._breadcrumbs.slice(-i),(o=this._client)==null||o.recordDroppedEvent("buffer_overflow","log_item")),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:iu(this),conversationId:this._conversationId}}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata=Cr(this._sdkProcessingMetadata,e,2),this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){const i=(t==null?void 0:t.event_id)||at();if(!this._client)return X&&F.warn("No client configured on scope - will not capture exception!"),i;const r=new Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:r,...t,event_id:i},this),i}captureMessage(e,t,i){const r=(i==null?void 0:i.event_id)||at();if(!this._client)return X&&F.warn("No client configured on scope - will not capture message!"),r;const o=(i==null?void 0:i.syntheticException)??new Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:o,...i,event_id:r},this),r}captureEvent(e,t){const i=e.event_id||(t==null?void 0:t.event_id)||at();return this._client?(this._client.captureEvent(e,{...t,event_id:i},this),i):(X&&F.warn("No client configured on scope - will not capture event!"),i)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}}function aT(){return Ci("defaultCurrentScope",()=>new Pt)}function MT(){return Ci("defaultIsolationScope",()=>new Pt)}const ru=s=>s instanceof Promise&&!s[HN],HN=Symbol("chained PromiseLike"),cT=(s,e,t)=>{const i=s.then(r=>(e(r),r),r=>{throw t(r),r});return ru(i)&&ru(s)?i:uT(s,i)},uT=(s,e)=>{let t=!1;for(const i in s){if(i in e)continue;t=!0;const r=s[i];typeof r=="function"?Object.defineProperty(e,i,{value:(...o)=>r.apply(s,o),enumerable:!0,configurable:!0,writable:!0}):e[i]=r}return t&&Object.assign(e,{[HN]:!0}),e};class lT{constructor(e,t){let i;e?i=e:i=new Pt;let r;t?r=t:r=new Pt,this._stack=[{scope:i}],this._isolationScope=r}withScope(e){const t=this._pushScope();let i;try{i=e(t)}catch(r){throw this._popScope(),r}return wr(i)?cT(i,()=>this._popScope(),()=>this._popScope()):(this._popScope(),i)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const e=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:e}),e}_popScope(){return this._stack.length<=1?!1:!!this._stack.pop()}}function wi(){const s=Qo(),e=bo(s);return e.stack=e.stack||new lT(aT(),MT())}function NT(s){return wi().withScope(s)}function LT(s,e){const t=wi();return t.withScope(()=>(t.getStackTop().scope=s,e(s)))}function ou(s){return wi().withScope(()=>s(wi().getIsolationScope()))}function gT(){return{withIsolationScope:ou,withScope:NT,withSetScope:LT,withSetIsolationScope:(s,e)=>ou(e),getCurrentScope:()=>wi().getScope(),getIsolationScope:()=>wi().getIsolationScope()}}function lM(s){const e=bo(s);return e.acs?e.acs:gT()}function At(){const s=Qo();return lM(s).getCurrentScope()}function Es(){const s=Qo();return lM(s).getIsolationScope()}function jT(){return Ci("globalScope",()=>new Pt)}function yT(...s){const e=Qo(),t=lM(e);if(s.length===2){const[i,r]=s;return i?t.withSetScope(i,r):t.withScope(r)}return t.withScope(s[0])}function Ue(){return At().getClient()}function TT(s){const e=s.getPropagationContext(),{traceId:t,parentSpanId:i,propagationSpanId:r}=e,o={trace_id:t,span_id:r||GN()};return i&&(o.parent_span_id=i),o}const DT="sentry.source",dT="sentry.sample_rate",hT="sentry.previous_trace_sample_rate",zT="sentry.op",wT="sentry.origin",VN="sentry.profile_id",ZN="sentry.exclusive_time",IT="gen_ai.conversation.id",CT=0,pT=1,AT="_sentryScope",mT="_sentryIsolationScope";function fT(s){if(s){if(typeof s=="object"&&"deref"in s&&typeof s.deref=="function")try{return s.deref()}catch{return}return s}}function XN(s){const e=s;return{scope:e[AT],isolationScope:fT(e[mT])}}const nu="sentry-";function OT(s){const e=ET(s);if(!e)return;const t=Object.entries(e).reduce((i,[r,o])=>{if(r.startsWith(nu)){const n=r.slice(nu.length);i[n]=o}return i},{});if(Object.keys(t).length>0)return t}function ET(s){if(!(!s||!Ut(s)&&!Array.isArray(s)))return Array.isArray(s)?s.reduce((e,t)=>{const i=au(t);return Object.entries(i).forEach(([r,o])=>{e[r]=o}),e},{}):au(s)}function au(s){return s.split(",").map(e=>{const t=e.indexOf("=");if(t===-1)return[];const i=e.slice(0,t),r=e.slice(t+1);return[i,r].map(o=>{try{return decodeURIComponent(o.trim())}catch{return}})}).reduce((e,[t,i])=>(t&&i&&(e[t]=i),e),{})}const _T=/^o(\d+)\./,xT=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function ST(s){return s==="http"||s==="https"}function pr(s,e=!1){const{host:t,path:i,pass:r,port:o,projectId:n,protocol:M,publicKey:c}=s;return`${M}://${c}${e&&r?`:${r}`:""}@${t}${o?`:${o}`:""}/${i&&`${i}/`}${n}`}function kT(s){const e=xT.exec(s);if(!e){pi(()=>{console.error(`Invalid Sentry Dsn: ${s}`)});return}const[t,i,r="",o="",n="",M=""]=e.slice(1);let c="",l=M;const N=l.split("/");if(N.length>1&&(c=N.slice(0,-1).join("/"),l=N.pop()),l){const u=l.match(/^\d+/);u&&(l=u[0])}return KN({host:o,pass:r,path:c,projectId:l,port:n,protocol:t,publicKey:i})}function KN(s){return{protocol:s.protocol,publicKey:s.publicKey||"",pass:s.pass||"",host:s.host,port:s.port||"",path:s.path||"",projectId:s.projectId}}function vT(s){if(!X)return!0;const{port:e,projectId:t,protocol:i}=s;return["protocol","publicKey","host","projectId"].find(n=>s[n]?!1:(F.error(`Invalid Sentry Dsn: ${n} missing`),!0))?!1:t.match(/^\d+$/)?ST(i)?e&&isNaN(parseInt(e,10))?(F.error(`Invalid Sentry Dsn: Invalid port ${e}`),!1):!0:(F.error(`Invalid Sentry Dsn: Invalid protocol ${i}`),!1):(F.error(`Invalid Sentry Dsn: Invalid projectId ${t}`),!1)}function YT(s){const e=s.match(_T);return e==null?void 0:e[1]}function QT(s){const e=s.getOptions(),{host:t}=s.getDsn()||{};let i;return e.orgId?i=String(e.orgId):t&&(i=YT(t)),i}function bT(s){const e=typeof s=="string"?kT(s):KN(s);if(!(!e||!vT(e)))return e}function UT(s){if(typeof s=="boolean")return Number(s);const e=typeof s=="string"?parseFloat(s):s;if(!(typeof e!="number"||isNaN(e)||e<0||e>1))return e}const qN=1;let Mu=!1;function $T(s){const{spanId:e,traceId:t,isRemote:i}=s.spanContext(),r=i?e:NM(s).parent_span_id,o=XN(s).scope,n=i?(o==null?void 0:o.getPropagationContext().propagationSpanId)||GN():e;return{parent_span_id:r,span_id:n,trace_id:t}}function PT(s){if(s&&s.length>0)return s.map(({context:{spanId:e,traceId:t,traceFlags:i,...r},attributes:o})=>({span_id:e,trace_id:t,sampled:i===qN,attributes:o,...r}))}function cu(s){return typeof s=="number"?uu(s):Array.isArray(s)?s[0]+s[1]/1e9:s instanceof Date?uu(s.getTime()):$t()}function uu(s){return s>9999999999?s/1e3:s}function NM(s){if(BT(s))return s.getSpanJSON();const{spanId:e,traceId:t}=s.spanContext();if(JT(s)){const{attributes:i,startTime:r,name:o,endTime:n,status:M,links:c}=s;return{span_id:e,trace_id:t,data:i,description:o,parent_span_id:WT(s),start_timestamp:cu(r),timestamp:cu(n)||void 0,status:FT(M),op:i[zT],origin:i[wT],links:PT(c)}}return{span_id:e,trace_id:t,start_timestamp:0,data:{}}}function WT(s){var e;return"parentSpanId"in s?s.parentSpanId:"parentSpanContext"in s?(e=s.parentSpanContext)==null?void 0:e.spanId:void 0}function JT(s){const e=s;return!!e.attributes&&!!e.startTime&&!!e.name&&!!e.endTime&&!!e.status}function BT(s){return typeof s.getSpanJSON=="function"}function RT(s){const{traceFlags:e}=s.spanContext();return e===qN}function FT(s){if(!(!s||s.code===CT))return s.code===pT?"ok":s.message||"internal_error"}const GT="_sentryRootSpan",e4=HT;function HT(s){return s[GT]||s}function lu(){Mu||(pi(()=>{console.warn("[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.")}),Mu=!0)}function VT(s){var t;if(typeof __SENTRY_TRACING__=="boolean"&&!__SENTRY_TRACING__)return!1;const e=(t=Ue())==null?void 0:t.getOptions();return!!e&&(e.tracesSampleRate!=null||!!e.tracesSampler)}function Nu(s){F.log(`Ignoring span ${s.op} - ${s.description} because it matches \`ignoreSpans\`.`)}function Lu(s,e){if(!(e!=null&&e.length)||!s.description)return!1;for(const t of e){if(XT(t)){if(no(s.description,t))return X&&Nu(s),!0;continue}if(!t.name&&!t.op)continue;const i=t.name?no(s.description,t.name):!0,r=t.op?s.op&&no(s.op,t.op):!0;if(i&&r)return X&&Nu(s),!0}return!1}function ZT(s,e){const t=e.parent_span_id,i=e.span_id;if(t)for(const r of s)r.parent_span_id===i&&(r.parent_span_id=t)}function XT(s){return typeof s=="string"||s instanceof RegExp}const LM="production",KT="_frozenDsc";function t4(s,e){const t=e.getOptions(),{publicKey:i}=e.getDsn()||{},r={environment:t.environment||LM,release:t.release,public_key:i,trace_id:s,org_id:QT(e)};return e.emit("createDsc",r),r}function qT(s,e){const t=e.getPropagationContext();return t.dsc||t4(t.traceId,s)}function eD(s){var j;const e=Ue();if(!e)return{};const t=e4(s),i=NM(t),r=i.data,o=t.spanContext().traceState,n=(o==null?void 0:o.get("sentry.sample_rate"))??r[dT]??r[hT];function M(y){return(typeof n=="number"||typeof n=="string")&&(y.sample_rate=`${n}`),y}const c=t[KT];if(c)return M(c);const l=o==null?void 0:o.get("sentry.dsc"),N=l&&OT(l);if(N)return M(N);const u=t4(s.spanContext().traceId,e),L=r[DT]??r["sentry.span.source"],g=i.description;return L!=="url"&&g&&(u.transaction=g),VT()&&(u.sampled=String(RT(t)),u.sample_rand=(o==null?void 0:o.get("sentry.sample_rand"))??((j=XN(t).scope)==null?void 0:j.getPropagationContext().sampleRand.toString())),M(u),e.emit("createDsc",u,t),u}function tD(s){return!!s&&typeof s=="function"&&"_streamed"in s&&!!s._streamed}function Yt(s,e=100,t=1/0){try{return ra("",s,e,t)}catch(i){return{ERROR:`**non-serializable** (${i})`}}}function s4(s,e=3,t=100*1024){const i=Yt(s,e);return oD(i)>t?s4(s,e-1,t):i}function ra(s,e,t=1/0,i=1/0,r=nD()){const[o,n]=r;if(e==null||["boolean","string"].includes(typeof e)||typeof e=="number"&&Number.isFinite(e))return e;const M=sD(s,e);if(!M.startsWith("[object "))return M;if(e.__sentry_skip_normalization__)return e;const c=typeof e.__sentry_override_normalization_depth__=="number"?e.__sentry_override_normalization_depth__:t;if(c===0)return M.replace("object ","");if(o(e))return"[Circular ~]";const l=e;if(l&&typeof l.toJSON=="function")try{const g=l.toJSON();return ra("",g,c-1,i,r)}catch{}const N=Array.isArray(e)?[]:{};let u=0;const L=BN(e);for(const g in L){if(!Object.prototype.hasOwnProperty.call(L,g))continue;if(u>=i){N[g]="[MaxProperties ~]";break}const j=L[g];N[g]=ra(g,j,c-1,i,r),u++}return n(e),N}function sD(s,e){try{if(s==="domain"&&e&&typeof e=="object"&&e._events)return"[Domain]";if(s==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&e===global)return"[Global]";if(typeof window<"u"&&e===window)return"[Window]";if(typeof document<"u"&&e===document)return"[Document]";if($N(e))return QN(e);if(Hy(e))return"[SyntheticEvent]";if(typeof e=="number"&&!Number.isFinite(e))return`[${e}]`;if(typeof e=="function")return`[Function: ${Ms(e)}]`;if(typeof e=="symbol")return`[${String(e)}]`;if(typeof e=="bigint")return`[BigInt: ${String(e)}]`;const t=iD(e);return/^HTML(\w*)Element$/.test(t)?`[HTMLElement: ${t}]`:`[object ${t}]`}catch(t){return`**non-serializable** (${t})`}}function iD(s){const e=Object.getPrototypeOf(s);return e!=null&&e.constructor?e.constructor.name:"null prototype"}function rD(s){return~-encodeURI(s).split(/%..|./).length}function oD(s){return rD(JSON.stringify(s))}function nD(){const s=new WeakSet;function e(i){return s.has(i)?!0:(s.add(i),!1)}function t(i){s.delete(i)}return[e,t]}function mi(s,e=[]){return[s,e]}function aD(s,e){const[t,i]=s;return[t,[...i,e]]}function oa(s,e){const t=s[1];for(const i of t){const r=i[0].type;if(e(i,r))return!0}return!1}function MD(s,e){return oa(s,(t,i)=>e.includes(i))}function na(s){const e=bo(ae);return e.encodePolyfill?e.encodePolyfill(s):new TextEncoder().encode(s)}function cD(s){const[e,t]=s;let i=JSON.stringify(e);function r(o){typeof i=="string"?i=typeof o=="string"?i+o:[na(i),o]:i.push(typeof o=="string"?na(o):o)}for(const o of t){const[n,M]=o;if(r(` ${JSON.stringify(n)} -`),typeof M=="string"||M instanceof Uint8Array)r(M);else{let c;try{c=JSON.stringify(M)}catch{c=JSON.stringify(Yt(M))}r(c)}}return typeof i=="string"?i:lD(i)}function lD(s){const e=s.reduce((r,o)=>r+o.length,0),t=new Uint8Array(e);let i=0;for(const r of s)t.set(r,i),i+=r.length;return t}function ND(s){const e=typeof s.data=="string"?aa(s.data):s.data;return[{type:"attachment",length:e.length,filename:s.filename,content_type:s.contentType,attachment_type:s.attachmentType},e]}const o4={sessions:"session",event:"error",client_report:"internal",user_report:"default",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",raw_security:"security",log:"log_item",trace_metric:"metric"};function LD(s){return s in o4}function ju(s){return LD(s)?o4[s]:s}function n4(s){if(!(s!=null&&s.sdk))return;const{name:e,version:t}=s.sdk;return{name:e,version:t}}function gD(s,e,t,i){var o;const r=(o=s.sdkProcessingMetadata)==null?void 0:o.dynamicSamplingContext;return{event_id:s.event_id,sent_at:new Date().toISOString(),...e&&{sdk:e},...!!t&&i&&{dsn:pr(i)},...r&&{trace:r}}}function jD(s,e){var i,r,o,n;if(!e)return s;const t=s.sdk||{};return s.sdk={...t,name:t.name||e.name,version:t.version||e.version,integrations:[...((i=s.sdk)==null?void 0:i.integrations)||[],...e.integrations||[]],packages:[...((r=s.sdk)==null?void 0:r.packages)||[],...e.packages||[]],settings:(o=s.sdk)!=null&&o.settings||e.settings?{...(n=s.sdk)==null?void 0:n.settings,...e.settings}:void 0},s}function yD(s,e,t,i){const r=n4(t),o={sent_at:new Date().toISOString(),...r&&{sdk:r},...!!i&&e&&{dsn:pr(e)}},n="aggregates"in s?[{type:"sessions"},s]:[{type:"session"},s.toJSON()];return mi(o,[n])}function TD(s,e,t,i){const r=n4(t),o=s.type&&s.type!=="replay_event"?s.type:"event";jD(s,t==null?void 0:t.sdk);const n=gD(s,r,i,e);return delete s.sdkProcessingMetadata,mi(n,[[{type:o},s]])}function DD(s,e){const{fingerprint:t,span:i,breadcrumbs:r,sdkProcessingMetadata:o}=e;dD(s,e),i&&wD(s,i),ID(s,t),hD(s,r),zD(s,o)}function yu(s,e){const{extra:t,tags:i,attributes:r,user:o,contexts:n,level:M,sdkProcessingMetadata:c,breadcrumbs:l,fingerprint:N,eventProcessors:u,attachments:L,propagationContext:g,transactionName:j,span:y}=e;Wi(s,"extra",t),Wi(s,"tags",i),Wi(s,"attributes",r),Wi(s,"user",o),Wi(s,"contexts",n),s.sdkProcessingMetadata=Cr(s.sdkProcessingMetadata,c,2),M&&(s.level=M),j&&(s.transactionName=j),y&&(s.span=y),l.length&&(s.breadcrumbs=[...s.breadcrumbs,...l]),N.length&&(s.fingerprint=[...s.fingerprint,...N]),u.length&&(s.eventProcessors=[...s.eventProcessors,...u]),L.length&&(s.attachments=[...s.attachments,...L]),s.propagationContext={...s.propagationContext,...g}}function Wi(s,e,t){s[e]=Cr(s[e],t,1)}function a4(s,e){const t=yT().getScopeData();return s&&yu(t,s.getScopeData()),e&&yu(t,e.getScopeData()),t}function dD(s,e){const{extra:t,tags:i,user:r,contexts:o,level:n,transactionName:M}=e;Object.keys(t).length&&(s.extra={...t,...s.extra}),Object.keys(i).length&&(s.tags={...i,...s.tags}),Object.keys(r).length&&(s.user={...r,...s.user}),Object.keys(o).length&&(s.contexts={...o,...s.contexts}),n&&(s.level=n),M&&s.type!=="transaction"&&(s.transaction=M)}function hD(s,e){const t=[...s.breadcrumbs||[],...e];s.breadcrumbs=t.length?t:void 0}function zD(s,e){s.sdkProcessingMetadata={...s.sdkProcessingMetadata,...e}}function wD(s,e){s.contexts={trace:PT(e),...s.contexts},s.sdkProcessingMetadata={dynamicSamplingContext:tD(e),...s.sdkProcessingMetadata};const t=s4(e),i=LM(t).description;i&&!s.transaction&&s.type==="transaction"&&(s.transaction=i)}function ID(s,e){s.fingerprint=s.fingerprint?Array.isArray(s.fingerprint)?s.fingerprint:[s.fingerprint]:[],e&&(s.fingerprint=s.fingerprint.concat(e)),s.fingerprint.length||delete s.fingerprint}const dn=0,Tu=1,Du=2;function Ar(s){return new lr(e=>{e(s)})}function jM(s){return new lr((e,t)=>{t(s)})}class lr{constructor(e){this._state=dn,this._handlers=[],this._runExecutor(e)}then(e,t){return new lr((i,r)=>{this._handlers.push([!1,o=>{if(!e)i(o);else try{i(e(o))}catch(n){r(n)}},o=>{if(!t)r(o);else try{i(t(o))}catch(n){r(n)}}]),this._executeHandlers()})}catch(e){return this.then(t=>t,e)}finally(e){return new lr((t,i)=>{let r,o;return this.then(n=>{o=!1,r=n,e&&e()},n=>{o=!0,r=n,e&&e()}).then(()=>{if(o){i(r);return}t(r)})})}_executeHandlers(){if(this._state===dn)return;const e=this._handlers.slice();this._handlers=[],e.forEach(t=>{t[0]||(this._state===Tu&&t[1](this._value),this._state===Du&&t[2](this._value),t[0]=!0)})}_runExecutor(e){const t=(o,n)=>{if(this._state===dn){if(wr(n)){n.then(i,r);return}this._state=o,this._value=n,this._executeHandlers()}},i=o=>{t(Tu,o)},r=o=>{t(Du,o)};try{e(i,r)}catch(o){r(o)}}}function CD(s,e,t,i=0){try{const r=Ma(e,t,s,i);return wr(r)?r:Ar(r)}catch(r){return jM(r)}}function Ma(s,e,t,i){const r=t[i];if(!s||!r)return s;const o=r({...s},e);return X&&o===null&&F.log(`Event processor "${r.id||"?"}" dropped event`),wr(o)?o.then(n=>Ma(n,e,t,i+1)):Ma(o,e,t,i+1)}let Ot,du,hu,Rt;function pD(s){const e=ae._sentryDebugIds,t=ae._debugIds;if(!e&&!t)return{};const i=e?Object.keys(e):[],r=t?Object.keys(t):[];if(Rt&&i.length===du&&r.length===hu)return Rt;du=i.length,hu=r.length,Rt={},Ot||(Ot={});const o=(n,M)=>{for(const c of n){const l=M[c],N=Ot==null?void 0:Ot[c];if(N&&Rt&&l)Rt[N[0]]=l,Ot&&(Ot[c]=[N[0],l]);else if(l){const u=s(c);for(let L=u.length-1;L>=0;L--){const g=u[L],j=g==null?void 0:g.filename;if(j&&Rt&&Ot){Rt[j]=l,Ot[c]=[j,l];break}}}}};return e&&o(i,e),t&&o(r,t),Rt}function AD(s,e,t,i,r,o){const{normalizeDepth:n=3,normalizeMaxBreadth:M=1e3}=s,c={...e,event_id:e.event_id||t.event_id||at(),timestamp:e.timestamp||Ir()},l=t.integrations||s.integrations.map(d=>d.name);mD(c,s),ED(c,l),r&&r.emit("applyFrameMetadata",e),e.type===void 0&&fD(c,s.stackParser);const N=xD(i,t.captureContext);t.mechanism&&hi(c,t.mechanism);const u=r?r.getEventProcessors():[],L=a4(o,N),g=[...t.attachments||[],...L.attachments];g.length&&(t.attachments=g),DD(c,L);const j=[...u,...L.eventProcessors];return(t.data&&t.data.__sentry__===!0?Ar(c):CD(j,c,t)).then(d=>(d&&OD(d),typeof n=="number"&&n>0?_D(d,n,M):d))}function mD(s,e){var M,c;const{environment:t,release:i,dist:r,maxValueLength:o}=e;s.environment=s.environment||t||gM,!s.release&&i&&(s.release=i),!s.dist&&r&&(s.dist=r);const n=s.request;n!=null&&n.url&&o&&(n.url=sa(n.url,o)),o&&((c=(M=s.exception)==null?void 0:M.values)==null||c.forEach(l=>{l.value&&(l.value=sa(l.value,o))}))}function fD(s,e){var i,r;const t=pD(e);(r=(i=s.exception)==null?void 0:i.values)==null||r.forEach(o=>{var n,M;(M=(n=o.stacktrace)==null?void 0:n.frames)==null||M.forEach(c=>{c.filename&&(c.debug_id=t[c.filename])})})}function OD(s){var i,r;const e={};if((r=(i=s.exception)==null?void 0:i.values)==null||r.forEach(o=>{var n,M;(M=(n=o.stacktrace)==null?void 0:n.frames)==null||M.forEach(c=>{c.debug_id&&(c.abs_path?e[c.abs_path]=c.debug_id:c.filename&&(e[c.filename]=c.debug_id),delete c.debug_id)})}),Object.keys(e).length===0)return;s.debug_meta=s.debug_meta||{},s.debug_meta.images=s.debug_meta.images||[];const t=s.debug_meta.images;Object.entries(e).forEach(([o,n])=>{t.push({type:"sourcemap",code_file:o,debug_id:n})})}function ED(s,e){e.length>0&&(s.sdk=s.sdk||{},s.sdk.integrations=[...s.sdk.integrations||[],...e])}function _D(s,e,t){var r,o;if(!s)return null;const i={...s,...s.breadcrumbs&&{breadcrumbs:s.breadcrumbs.map(n=>({...n,...n.data&&{data:Yt(n.data,e,t)}}))},...s.user&&{user:Yt(s.user,e,t)},...s.contexts&&{contexts:Yt(s.contexts,e,t)},...s.extra&&{extra:Yt(s.extra,e,t)}};return(r=s.contexts)!=null&&r.trace&&i.contexts&&(i.contexts.trace=s.contexts.trace,s.contexts.trace.data&&(i.contexts.trace.data=Yt(s.contexts.trace.data,e,t))),s.spans&&(i.spans=s.spans.map(n=>({...n,...n.data&&{data:Yt(n.data,e,t)}}))),(o=s.contexts)!=null&&o.flags&&i.contexts&&(i.contexts.flags=Yt(s.contexts.flags,3,t)),i}function xD(s,e){if(!e)return s;const t=s?s.clone():new Pt;return t.update(e),t}function SD(s,e){return At().captureException(s,void 0)}function M4(s,e){return At().captureEvent(s,e)}function zu(s){const e=Es(),{user:t}=a4(e,At()),{userAgent:i}=ae.navigator||{},r=rT({user:t,...i&&{userAgent:i},...s}),o=e.getSession();return(o==null?void 0:o.status)==="ok"&&zi(o,{status:"exited"}),c4(),e.setSession(r),r}function c4(){const s=Es(),t=At().getSession()||s.getSession();t&&oT(t),u4(),s.setSession()}function u4(){const s=Es(),e=Ue(),t=s.getSession();t&&e&&e.captureSession(t)}function hn(s=!1){if(s){c4();return}u4()}const kD="7";function vD(s){const e=s.protocol?`${s.protocol}:`:"",t=s.port?`:${s.port}`:"";return`${e}//${s.host}${t}${s.path?`/${s.path}`:""}/api/`}function YD(s){return`${vD(s)}${s.projectId}/envelope/`}function QD(s,e){const t={sentry_version:kD};return s.publicKey&&(t.sentry_key=s.publicKey),e&&(t.sentry_client=`${e.name}/${e.version}`),new URLSearchParams(t).toString()}function bD(s,e,t){return e||`${YD(s)}?${QD(s,t)}`}const wu=[];function UD(s){const e={};return s.forEach(t=>{const{name:i}=t,r=e[i];r&&!r.isDefaultInstance&&t.isDefaultInstance||(e[i]=t)}),Object.values(e)}function $D(s){const e=s.defaultIntegrations||[],t=s.integrations;e.forEach(r=>{r.isDefaultInstance=!0});let i;if(Array.isArray(t))i=[...e,...t];else if(typeof t=="function"){const r=t(e);i=Array.isArray(r)?r:[r]}else i=e;return UD(i)}function PD(s,e){const t={};return e.forEach(i=>{i!=null&&i.beforeSetup&&i.beforeSetup(s)}),e.forEach(i=>{i&&l4(s,i,t)}),t}function Iu(s,e){for(const t of e)t!=null&&t.afterAllSetup&&t.afterAllSetup(s)}function l4(s,e,t){if(t[e.name]){X&&F.log(`Integration skipped because it was already installed: ${e.name}`);return}if(t[e.name]=e,!wu.includes(e.name)&&typeof e.setupOnce=="function"&&(e.setupOnce(),wu.push(e.name)),e.setup&&typeof e.setup=="function"&&e.setup(s),typeof e.preprocessEvent=="function"){const i=e.preprocessEvent.bind(e);s.on("preprocessEvent",(r,o)=>i(r,o,s))}if(typeof e.processEvent=="function"){const i=e.processEvent.bind(e),r=Object.assign((o,n)=>i(o,n,s),{id:e.name});s.addEventProcessor(r)}X&&F.log(`Integration installed: ${e.name}`)}function WD(s){return[{type:"log",item_count:s.length,content_type:"application/vnd.sentry.items.log+json"},{items:s}]}function JD(s,e,t,i){const r={};return e!=null&&e.sdk&&(r.sdk={name:e.sdk.name,version:e.sdk.version}),t&&i&&(r.dsn=pr(i)),mi(r,[WD(s)])}function ca(s,e){const t=e??BD(s)??[];if(t.length===0)return;const i=s.getOptions(),r=JD(t,i._metadata,i.tunnel,s.getDsn());N4().set(s,[]),s.emit("flushLogs"),s.sendEnvelope(r)}function BD(s){return N4().get(s)}function N4(){return Ci("clientToLogBufferMap",()=>new WeakMap)}function RD(s){return[{type:"trace_metric",item_count:s.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:s}]}function FD(s,e,t,i){const r={};return e!=null&&e.sdk&&(r.sdk={name:e.sdk.name,version:e.sdk.version}),t&&i&&(r.dsn=pr(i)),mi(r,[RD(s)])}function L4(s,e){const t=e??GD(s)??[];if(t.length===0)return;const i=s.getOptions(),r=FD(t,i._metadata,i.tunnel,s.getDsn());g4().set(s,[]),s.emit("flushMetrics"),s.sendEnvelope(r)}function GD(s){return g4().get(s)}function g4(){return Ci("clientToMetricBufferMap",()=>new WeakMap)}function j4(s){return typeof s=="object"&&typeof s.unref=="function"&&s.unref(),s}const yM=Symbol.for("SentryBufferFullError");function TM(s=100){const e=new Set;function t(){return e.sizei(M),()=>i(M)),M}function o(n){if(!e.size)return Ar(!0);const M=Promise.allSettled(Array.from(e)).then(()=>!0);if(!n)return M;const c=[M,new Promise(l=>j4(setTimeout(()=>l(!1),n)))];return Promise.race(c)}return{get $(){return Array.from(e)},add:r,drain:o}}const HD=60*1e3;function VD(s,e=Jo()){const t=parseInt(`${s}`,10);if(!isNaN(t))return t*1e3;const i=Date.parse(`${s}`);return isNaN(i)?HD:i-e}function ZD(s,e){return s[e]||s.all||0}function XD(s,e,t=Jo()){return ZD(s,e)>t}function KD(s,{statusCode:e,headers:t},i=Jo()){const r={...s},o=t==null?void 0:t["x-sentry-rate-limits"],n=t==null?void 0:t["retry-after"];if(o)for(const M of o.trim().split(",")){const[c,l,,,N]=M.split(":",5),u=parseInt(c,10),L=(isNaN(u)?60:u)*1e3;if(!l)r.all=i+L;else for(const g of l.split(";"))g==="metric_bucket"?(!N||N.split(";").includes("custom"))&&(r[g]=i+L):r[g]=i+L}else n?r.all=i+VD(n,i):e===429&&(r.all=i+60*1e3);return r}const y4=64;function qD(s,e,t=TM(s.bufferSize||y4)){let i={};const r=n=>t.drain(n);function o(n){const M=[];if(na(n,(u,L)=>{const g=ju(L);XD(i,g)?s.recordDroppedEvent("ratelimit_backoff",g):M.push(u)}),M.length===0)return Promise.resolve({});const c=mi(n[0],M),l=u=>{if(cD(c,["client_report"])){X&&F.warn(`Dropping client report. Will not send outcomes (reason: ${u}).`);return}na(c,(L,g)=>{s.recordDroppedEvent(u,ju(g))})},N=()=>e({body:uD(c)}).then(u=>u.statusCode===413?(X&&F.error("Sentry responded with status code 413. Envelope was discarded due to exceeding size limits."),l("send_error"),u):(X&&u.statusCode!==void 0&&(u.statusCode<200||u.statusCode>=300)&&F.warn(`Sentry responded with status code ${u.statusCode} to sent event.`),i=KD(i,u),u),u=>{throw l("network_error"),X&&F.error("Encountered error running transport request:",u),u});return t.add(N).then(u=>u,u=>{if(u===yM)return X&&F.error("Skipped sending event because buffer is full."),l("queue_overflow"),Promise.resolve({});throw u})}return{send:o,flush:r}}function ed(s,e,t){const i=[{type:"client_report"},{timestamp:Ir(),discarded_events:s}];return mi(e?{dsn:e}:{},[i])}function T4(s){const e=[];s.message&&e.push(s.message);try{const t=s.exception.values[s.exception.values.length-1];t!=null&&t.value&&(e.push(t.value),t.type&&e.push(`${t.type}: ${t.value}`))}catch{}return e}function td(s){var c;const{trace_id:e,parent_span_id:t,span_id:i,status:r,origin:o,data:n,op:M}=((c=s.contexts)==null?void 0:c.trace)??{};return{data:n??{},description:s.transaction,op:M,parent_span_id:t,span_id:i??"",start_timestamp:s.start_timestamp??0,status:r,timestamp:s.timestamp,trace_id:e??"",origin:o,profile_id:n==null?void 0:n[XN],exclusive_time:n==null?void 0:n[KN],measurements:s.measurements,is_segment:!0}}function sd(s){return{type:"transaction",timestamp:s.timestamp,start_timestamp:s.start_timestamp,transaction:s.description,contexts:{trace:{trace_id:s.trace_id,span_id:s.span_id,parent_span_id:s.parent_span_id,op:s.op,status:s.status,origin:s.origin,data:{...s.data,...s.profile_id&&{[XN]:s.profile_id},...s.exclusive_time&&{[KN]:s.exclusive_time}}}},measurements:s.measurements}}const Cu="Not capturing exception because it's already been captured.",pu="Discarded session because of missing or non-string release",D4=Symbol.for("SentryInternalError"),d4=Symbol.for("SentryDoNotSendEventError"),id=5e3;function ao(s){return{message:s,[D4]:!0}}function zn(s){return{message:s,[d4]:!0}}function Au(s){return!!s&&typeof s=="object"&&D4 in s}function mu(s){return!!s&&typeof s=="object"&&d4 in s}function fu(s,e,t,i,r){let o=0,n,M=!1;s.on(t,()=>{o=0,clearTimeout(n),M=!1}),s.on(e,c=>{o+=i(c),o>=8e5?r(s):M||(M=!0,n=j4(setTimeout(()=>{r(s)},id)))}),s.on("flush",()=>{r(s)})}class rd{constructor(e){var i,r,o;if(this._options=e,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=TM(((i=e.transportOptions)==null?void 0:i.bufferSize)??y4),e.dsn?this._dsn=UT(e.dsn):X&&F.warn("No DSN provided, client will not send events."),this._dsn){const n=bD(this._dsn,e.tunnel,e._metadata?e._metadata.sdk:void 0);this._transport=e.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:n})}this._options.enableLogs=this._options.enableLogs??((r=this._options._experiments)==null?void 0:r.enableLogs),this._options.enableLogs&&fu(this,"afterCaptureLog","flushLogs",Md,ca),(this._options.enableMetrics??((o=this._options._experiments)==null?void 0:o.enableMetrics)??!0)&&fu(this,"afterCaptureMetric","flushMetrics",ad,L4)}captureException(e,t,i){const r=at();if(eu(e))return X&&F.log(Cu),r;const o={event_id:r,...t};return this._process(()=>this.eventFromException(e,o).then(n=>this._captureEvent(n,o,i)).then(n=>n),"error"),o.event_id}captureMessage(e,t,i,r){const o={event_id:at(),...i},n=MM(e)?e:String(e),M=$o(e),c=M?this.eventFromMessage(n,t,o):this.eventFromException(e,o);return this._process(()=>c.then(l=>this._captureEvent(l,o,r)),M?"unknown":"error"),o.event_id}captureEvent(e,t,i){const r=at();if(t!=null&&t.originalException&&eu(t.originalException))return X&&F.log(Cu),r;const o={event_id:r,...t},n=e.sdkProcessingMetadata||{},M=n.capturedSpanScope,c=n.capturedSpanIsolationScope,l=Ou(e.type);return this._process(()=>this._captureEvent(e,o,M||i,c),l),o.event_id}captureSession(e){this.sendSession(e),zi(e,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(e){const t=this._transport;if(!t)return!0;this.emit("flush");const i=await this._isClientDoneProcessing(e),r=await t.flush(e);return i&&r}async close(e){ca(this);const t=await this.flush(e);return this.getOptions().enabled=!1,this.emit("close"),t}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}init(){(this._isEnabled()||this._options.integrations.some(({name:e})=>e.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(e){return this._integrations[e]}addIntegration(e){const t=this._integrations[e.name];!t&&e.beforeSetup&&e.beforeSetup(this),l4(this,e,this._integrations),t||Iu(this,[e])}sendEvent(e,t={}){this.emit("beforeSendEvent",e,t);let i=TD(e,this._dsn,this._options._metadata,this._options.tunnel);for(const r of t.attachments||[])i=MD(i,ND(r));this.sendEnvelope(i).then(r=>this.emit("afterSendEvent",e,r))}sendSession(e){const{release:t,environment:i=gM}=this._options;if("aggregates"in e){const o=e.attrs||{};if(!o.release&&!t){X&&F.warn(pu);return}o.release=o.release||t,o.environment=o.environment||i,e.attrs=o}else{if(!e.release&&!t){X&&F.warn(pu);return}e.release=e.release||t,e.environment=e.environment||i}this.emit("beforeSendSession",e);const r=yD(e,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(r)}recordDroppedEvent(e,t,i=1){if(this._options.sendClientReports){const r=`${e}:${t}`;X&&F.log(`Recording outcome: "${r}"${i>1?` (${i} times)`:""}`),this._outcomes[r]=(this._outcomes[r]||0)+i}}on(e,t){const i=this._hooks[e]=this._hooks[e]||new Set,r=(...o)=>t(...o);return i.add(r),()=>{i.delete(r)}}emit(e,...t){const i=this._hooks[e];i&&i.forEach(r=>r(...t))}async sendEnvelope(e){if(this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport)try{return await this._transport.send(e)}catch(t){return X&&F.error("Error while sending envelope:",t),{}}return X&&F.error("Transport disabled"),{}}dispose(){}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=PD(this,e),Iu(this,e)}_updateSessionFromEvent(e,t){var c,l;let i=t.level==="fatal",r=!1;const o=(c=t.exception)==null?void 0:c.values;if(o){r=!0,i=!1;for(const N of o)if(((l=N.mechanism)==null?void 0:l.handled)===!1){i=!0;break}}const n=e.status==="ok";(n&&e.errors===0||n&&i)&&(zi(e,{...i&&{status:"crashed"},errors:e.errors||Number(r||i)}),this.captureSession(e))}async _isClientDoneProcessing(e){let t=0;for(;!e||tsetTimeout(i,1)),!this._numProcessing)return!0;t++}return!1}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(e,t,i,r){const o=this.getOptions(),n=Object.keys(this._integrations);return!t.integrations&&(n!=null&&n.length)&&(t.integrations=n),this.emit("preprocessEvent",e,t),e.type||r.setLastEventId(e.event_id||t.event_id),AD(o,e,t,i,this,r).then(M=>{var l;if(M===null)return M;this.emit("postprocessEvent",M,t),M.contexts={trace:{...(l=M.contexts)==null?void 0:l.trace,...DT(i)},...M.contexts};const c=eD(this,i);return M.sdkProcessingMetadata={dynamicSamplingContext:c,...M.sdkProcessingMetadata},M})}_captureEvent(e,t={},i=At(),r=Es()){return X&&ua(e)&&F.log(`Captured error event \`${T4(e)[0]||""}\``),this._processEvent(e,t,i,r).then(o=>o.event_id,o=>{X&&(mu(o)?F.log(o.message):Au(o)?F.warn(o.message):F.warn(o))})}_processEvent(e,t,i,r){const o=this.getOptions(),{sampleRate:n}=o,M=h4(e),c=ua(e),N=`before send for type \`${e.type||"error"}\``,u=typeof n>"u"?void 0:$T(n);if(c&&typeof u=="number"&&To()>u)return this.recordDroppedEvent("sample_rate","error"),jM(zn(`Discarding event because it's not included in the random sample (sampling rate = ${n})`));const L=Ou(e.type);return this._prepareEvent(e,t,i,r).then(g=>{var T;if(g===null)throw this.recordDroppedEvent("event_processor",L),zn("An event processor returned `null`, will not send event.");if(((T=t.data)==null?void 0:T.__sentry__)===!0)return g;const y=nd(this,o,g,t);return od(y,N)}).then(g=>{var T;if(g===null){if(this.recordDroppedEvent("before_send",L),M){const I=1+(e.spans||[]).length;this.recordDroppedEvent("before_send","span",I)}throw zn(`${N} returned \`null\`, will not send event.`)}const j=i.getSession()||r.getSession();if(c&&j&&this._updateSessionFromEvent(j,g),M){const d=((T=g.sdkProcessingMetadata)==null?void 0:T.spanCountBeforeProcessing)||0,I=g.spans?g.spans.length:0,w=d-I;w>0&&this.recordDroppedEvent("before_send","span",w)}const y=g.transaction_info;if(M&&y&&g.transaction!==e.transaction){const d="custom";g.transaction_info={...y,source:d}}return this.sendEvent(g,t),g}).then(null,g=>{throw mu(g)||Au(g)?g:(this.captureException(g,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:g}),ao(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. -Reason: ${g}`))})}_process(e,t){this._numProcessing++,this._promiseBuffer.add(e).then(i=>(this._numProcessing--,i),i=>(this._numProcessing--,i===yM&&this.recordDroppedEvent("queue_overflow",t),i))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([t,i])=>{const[r,o]=t.split(":");return{reason:r,category:o,quantity:i}})}_flushOutcomes(){X&&F.log("Flushing outcomes...");const e=this._clearOutcomes();if(e.length===0){X&&F.log("No outcomes to send");return}if(!this._dsn){X&&F.log("No dsn provided, will not send outcomes");return}X&&F.log("Sending outcomes:",e);const t=ed(e,this._options.tunnel&&pr(this._dsn));this.sendEnvelope(t)}}function Ou(s){return s==="replay_event"?"replay":s||"error"}function od(s,e){const t=`${e} must return \`null\` or a valid event.`;if(wr(s))return s.then(i=>{if(!ur(i)&&i!==null)throw ao(t);return i},i=>{throw ao(`${e} rejected with ${i}`)});if(!ur(s)&&s!==null)throw ao(t);return s}function nd(s,e,t,i){const{beforeSend:r,beforeSendTransaction:o,ignoreSpans:n}=e,M=!sD(e.beforeSendSpan)&&e.beforeSendSpan;let c=t;if(ua(c)&&r)return r(c,i);if(h4(c)){if(M||n){const l=td(c);if(n!=null&&n.length&&gu(l,n))return null;if(M){const N=M(l);N?c=Cr(t,sd(N)):Nu()}if(c.spans){const N=[],u=c.spans;for(const g of u){if(n!=null&&n.length&&gu(g,n)){XT(u,g);continue}if(M){const j=M(g);j?N.push(j):(Nu(),N.push(g))}else N.push(g)}const L=c.spans.length-N.length;L&&s.recordDroppedEvent("before_send","span",L),c.spans=N}}if(o){if(c.spans){const l=c.spans.length;c.sdkProcessingMetadata={...t.sdkProcessingMetadata,spanCountBeforeProcessing:l}}return o(c,i)}}return c}function ua(s){return s.type===void 0}function h4(s){return s.type==="transaction"}function ad(s){let e=0;return s.name&&(e+=s.name.length*2),e+=8,e+z4(s.attributes)}function Md(s){let e=0;return s.message&&(e+=s.message.length*2),e+z4(s.attributes)}function z4(s){if(!s)return 0;let e=0;return Object.values(s).forEach(t=>{Array.isArray(t)?e+=t.length*Eu(t[0]):$o(t)?e+=Eu(t):e+=100}),e}function Eu(s){return typeof s=="string"?s.length*2:typeof s=="number"?8:typeof s=="boolean"?4:0}function cd(s){return Uo(s)&&"__sentry_fetch_url_host__"in s&&typeof s.__sentry_fetch_url_host__=="string"}function _u(s){return cd(s)?`${s.message} (${s.__sentry_fetch_url_host__})`:s.message}function ud(s,e){e.debug===!0&&(X?F.enable():pi(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),At().update(e.initialScope);const i=new s(e);return ld(i),i.init(),i}function ld(s){At().setClient(s)}function wn(s){if(!s)return{};const e=s.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!e)return{};const t=e[6]||"",i=e[8]||"";return{host:e[4],path:e[5],protocol:e[2],search:t,hash:i,relative:e[5]+t+i}}function Nd(s,e=!0){if(s.startsWith("data:")){const t=s.match(/^data:([^;,]+)/),i=t?t[1]:"text/plain",r=s.includes(";base64,"),o=s.indexOf(",");let n="";if(e&&o!==-1){const M=s.slice(o+1);n=M.length>10?`${M.slice(0,10)}... [truncated]`:M}return`data:${i}${r?",base64":""}${n?`,${n}`:""}`}return s}function Ld(s){var e;"aggregates"in s?((e=s.attrs)==null?void 0:e.ip_address)===void 0&&(s.attrs={...s.attrs,ip_address:"{{auto}}"}):s.ipAddress===void 0&&(s.ipAddress="{{auto}}")}function gd(s,e,t=[e],i="npm"){const r=(s._metadata=s._metadata||{}).sdk=s._metadata.sdk||{};r.name||(r.name=`sentry.javascript.${e}`,r.packages=t.map(o=>({name:`${i}:@sentry/${o}`,version:Is})),r.version=Is)}const jd=100;function ps(s,e){const t=Ue(),i=Es();if(!t)return;const{beforeBreadcrumb:r=null,maxBreadcrumbs:o=jd}=t.getOptions();if(o<=0)return;const M={timestamp:Ir(),...s},c=r?pi(()=>r(M,e)):M;c!==null&&(t.emit&&t.emit("beforeAddBreadcrumb",c,e),i.addBreadcrumb(c,o))}let xu;const yd="FunctionToString",Su=new WeakMap,Td=(()=>({name:yd,setupOnce(){xu=Function.prototype.toString;try{Function.prototype.toString=function(...s){const e=lM(this),t=Su.has(Ue())&&e!==void 0?e:this;return xu.apply(t,s)}}catch{}},setup(s){Su.set(s,!0)}})),Dd=Td,dd=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,/can't redefine non-configurable property "solana"/,/vv\(\)\.getRestrictions is not a function/,/Can't find variable: _AutofillCallbackHandler/,/Object Not Found Matching Id:\d+, MethodName:simulateEvent/,/^Java exception was raised during method invocation$/],hd="EventFilters",zd=(s={})=>{let e;return{name:hd,setup(t){const i=t.getOptions();e=ku(s,i)},processEvent(t,i,r){if(!e){const o=r.getOptions();e=ku(s,o)}return Id(t,e)?null:t}}},wd=((s={})=>({...zd(s),name:"InboundFilters"}));function ku(s={},e={}){return{allowUrls:[...s.allowUrls||[],...e.allowUrls||[]],denyUrls:[...s.denyUrls||[],...e.denyUrls||[]],ignoreErrors:[...s.ignoreErrors||[],...e.ignoreErrors||[],...s.disableErrorDefaults?[]:dd],ignoreTransactions:[...s.ignoreTransactions||[],...e.ignoreTransactions||[]]}}function Id(s,e){if(s.type){if(s.type==="transaction"&&pd(s,e.ignoreTransactions))return X&&F.warn(`Event dropped due to being matched by \`ignoreTransactions\` option. -Event: ${hs(s)}`),!0}else{if(Cd(s,e.ignoreErrors))return X&&F.warn(`Event dropped due to being matched by \`ignoreErrors\` option. -Event: ${hs(s)}`),!0;if(Od(s))return X&&F.warn(`Event dropped due to not having an error message, error type or stacktrace. -Event: ${hs(s)}`),!0;if(Ad(s,e.denyUrls))return X&&F.warn(`Event dropped due to being matched by \`denyUrls\` option. +`),typeof M=="string"||M instanceof Uint8Array)r(M);else{let c;try{c=JSON.stringify(M)}catch{c=JSON.stringify(Yt(M))}r(c)}}return typeof i=="string"?i:uD(i)}function uD(s){const e=s.reduce((r,o)=>r+o.length,0),t=new Uint8Array(e);let i=0;for(const r of s)t.set(r,i),i+=r.length;return t}function lD(s){const e=typeof s.data=="string"?na(s.data):s.data;return[{type:"attachment",length:e.length,filename:s.filename,content_type:s.contentType,attachment_type:s.attachmentType},e]}const i4={sessions:"session",event:"error",client_report:"internal",user_report:"default",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",raw_security:"security",log:"log_item",trace_metric:"metric"};function ND(s){return s in i4}function gu(s){return ND(s)?i4[s]:s}function r4(s){if(!(s!=null&&s.sdk))return;const{name:e,version:t}=s.sdk;return{name:e,version:t}}function LD(s,e,t,i){var o;const r=(o=s.sdkProcessingMetadata)==null?void 0:o.dynamicSamplingContext;return{event_id:s.event_id,sent_at:new Date().toISOString(),...e&&{sdk:e},...!!t&&i&&{dsn:pr(i)},...r&&{trace:r}}}function gD(s,e){var i,r,o,n;if(!e)return s;const t=s.sdk||{};return s.sdk={...t,name:t.name||e.name,version:t.version||e.version,integrations:[...((i=s.sdk)==null?void 0:i.integrations)||[],...e.integrations||[]],packages:[...((r=s.sdk)==null?void 0:r.packages)||[],...e.packages||[]],settings:(o=s.sdk)!=null&&o.settings||e.settings?{...(n=s.sdk)==null?void 0:n.settings,...e.settings}:void 0},s}function jD(s,e,t,i){const r=r4(t),o={sent_at:new Date().toISOString(),...r&&{sdk:r},...!!i&&e&&{dsn:pr(e)}},n="aggregates"in s?[{type:"sessions"},s]:[{type:"session"},s.toJSON()];return mi(o,[n])}function yD(s,e,t,i){const r=r4(t),o=s.type&&s.type!=="replay_event"?s.type:"event";gD(s,t==null?void 0:t.sdk);const n=LD(s,r,i,e);return delete s.sdkProcessingMetadata,mi(n,[[{type:o},s]])}function TD(s,e){const{fingerprint:t,span:i,breadcrumbs:r,sdkProcessingMetadata:o}=e;DD(s,e),i&&zD(s,i),wD(s,t),dD(s,r),hD(s,o)}function ju(s,e){const{extra:t,tags:i,attributes:r,user:o,contexts:n,level:M,sdkProcessingMetadata:c,breadcrumbs:l,fingerprint:N,eventProcessors:u,attachments:L,propagationContext:g,transactionName:j,span:y}=e;Wi(s,"extra",t),Wi(s,"tags",i),Wi(s,"attributes",r),Wi(s,"user",o),Wi(s,"contexts",n),s.sdkProcessingMetadata=Cr(s.sdkProcessingMetadata,c,2),M&&(s.level=M),j&&(s.transactionName=j),y&&(s.span=y),l.length&&(s.breadcrumbs=[...s.breadcrumbs,...l]),N.length&&(s.fingerprint=[...s.fingerprint,...N]),u.length&&(s.eventProcessors=[...s.eventProcessors,...u]),L.length&&(s.attachments=[...s.attachments,...L]),s.propagationContext={...s.propagationContext,...g}}function Wi(s,e,t){s[e]=Cr(s[e],t,1)}function o4(s,e){const t=jT().getScopeData();return s&&ju(t,s.getScopeData()),e&&ju(t,e.getScopeData()),t}function DD(s,e){const{extra:t,tags:i,user:r,contexts:o,level:n,transactionName:M}=e;Object.keys(t).length&&(s.extra={...t,...s.extra}),Object.keys(i).length&&(s.tags={...i,...s.tags}),Object.keys(r).length&&(s.user={...r,...s.user}),Object.keys(o).length&&(s.contexts={...o,...s.contexts}),n&&(s.level=n),M&&s.type!=="transaction"&&(s.transaction=M)}function dD(s,e){const t=[...s.breadcrumbs||[],...e];s.breadcrumbs=t.length?t:void 0}function hD(s,e){s.sdkProcessingMetadata={...s.sdkProcessingMetadata,...e}}function zD(s,e){s.contexts={trace:$T(e),...s.contexts},s.sdkProcessingMetadata={dynamicSamplingContext:eD(e),...s.sdkProcessingMetadata};const t=e4(e),i=NM(t).description;i&&!s.transaction&&s.type==="transaction"&&(s.transaction=i)}function wD(s,e){s.fingerprint=s.fingerprint?Array.isArray(s.fingerprint)?s.fingerprint:[s.fingerprint]:[],e&&(s.fingerprint=s.fingerprint.concat(e)),s.fingerprint.length||delete s.fingerprint}const dn=0,yu=1,Tu=2;function Ar(s){return new lr(e=>{e(s)})}function gM(s){return new lr((e,t)=>{t(s)})}class lr{constructor(e){this._state=dn,this._handlers=[],this._runExecutor(e)}then(e,t){return new lr((i,r)=>{this._handlers.push([!1,o=>{if(!e)i(o);else try{i(e(o))}catch(n){r(n)}},o=>{if(!t)r(o);else try{i(t(o))}catch(n){r(n)}}]),this._executeHandlers()})}catch(e){return this.then(t=>t,e)}finally(e){return new lr((t,i)=>{let r,o;return this.then(n=>{o=!1,r=n,e&&e()},n=>{o=!0,r=n,e&&e()}).then(()=>{if(o){i(r);return}t(r)})})}_executeHandlers(){if(this._state===dn)return;const e=this._handlers.slice();this._handlers=[],e.forEach(t=>{t[0]||(this._state===yu&&t[1](this._value),this._state===Tu&&t[2](this._value),t[0]=!0)})}_runExecutor(e){const t=(o,n)=>{if(this._state===dn){if(wr(n)){n.then(i,r);return}this._state=o,this._value=n,this._executeHandlers()}},i=o=>{t(yu,o)},r=o=>{t(Tu,o)};try{e(i,r)}catch(o){r(o)}}}function ID(s,e,t,i=0){try{const r=aa(e,t,s,i);return wr(r)?r:Ar(r)}catch(r){return gM(r)}}function aa(s,e,t,i){const r=t[i];if(!s||!r)return s;const o=r({...s},e);return X&&o===null&&F.log(`Event processor "${r.id||"?"}" dropped event`),wr(o)?o.then(n=>aa(n,e,t,i+1)):aa(o,e,t,i+1)}let Ot,Du,du,Rt;function CD(s){const e=ae._sentryDebugIds,t=ae._debugIds;if(!e&&!t)return{};const i=e?Object.keys(e):[],r=t?Object.keys(t):[];if(Rt&&i.length===Du&&r.length===du)return Rt;Du=i.length,du=r.length,Rt={},Ot||(Ot={});const o=(n,M)=>{for(const c of n){const l=M[c],N=Ot==null?void 0:Ot[c];if(N&&Rt&&l)Rt[N[0]]=l,Ot&&(Ot[c]=[N[0],l]);else if(l){const u=s(c);for(let L=u.length-1;L>=0;L--){const g=u[L],j=g==null?void 0:g.filename;if(j&&Rt&&Ot){Rt[j]=l,Ot[c]=[j,l];break}}}}};return e&&o(i,e),t&&o(r,t),Rt}function pD(s,e,t,i,r,o){const{normalizeDepth:n=3,normalizeMaxBreadth:M=1e3}=s,c={...e,event_id:e.event_id||t.event_id||at(),timestamp:e.timestamp||Ir()},l=t.integrations||s.integrations.map(d=>d.name);AD(c,s),OD(c,l),r&&r.emit("applyFrameMetadata",e),e.type===void 0&&mD(c,s.stackParser);const N=_D(i,t.captureContext);t.mechanism&&hi(c,t.mechanism);const u=r?r.getEventProcessors():[],L=o4(o,N),g=[...t.attachments||[],...L.attachments];g.length&&(t.attachments=g),TD(c,L);const j=[...u,...L.eventProcessors];return(t.data&&t.data.__sentry__===!0?Ar(c):ID(j,c,t)).then(d=>(d&&fD(d),typeof n=="number"&&n>0?ED(d,n,M):d))}function AD(s,e){var M,c;const{environment:t,release:i,dist:r,maxValueLength:o}=e;s.environment=s.environment||t||LM,!s.release&&i&&(s.release=i),!s.dist&&r&&(s.dist=r);const n=s.request;n!=null&&n.url&&o&&(n.url=ta(n.url,o)),o&&((c=(M=s.exception)==null?void 0:M.values)==null||c.forEach(l=>{l.value&&(l.value=ta(l.value,o))}))}function mD(s,e){var i,r;const t=CD(e);(r=(i=s.exception)==null?void 0:i.values)==null||r.forEach(o=>{var n,M;(M=(n=o.stacktrace)==null?void 0:n.frames)==null||M.forEach(c=>{c.filename&&(c.debug_id=t[c.filename])})})}function fD(s){var i,r;const e={};if((r=(i=s.exception)==null?void 0:i.values)==null||r.forEach(o=>{var n,M;(M=(n=o.stacktrace)==null?void 0:n.frames)==null||M.forEach(c=>{c.debug_id&&(c.abs_path?e[c.abs_path]=c.debug_id:c.filename&&(e[c.filename]=c.debug_id),delete c.debug_id)})}),Object.keys(e).length===0)return;s.debug_meta=s.debug_meta||{},s.debug_meta.images=s.debug_meta.images||[];const t=s.debug_meta.images;Object.entries(e).forEach(([o,n])=>{t.push({type:"sourcemap",code_file:o,debug_id:n})})}function OD(s,e){e.length>0&&(s.sdk=s.sdk||{},s.sdk.integrations=[...s.sdk.integrations||[],...e])}function ED(s,e,t){var r,o;if(!s)return null;const i={...s,...s.breadcrumbs&&{breadcrumbs:s.breadcrumbs.map(n=>({...n,...n.data&&{data:Yt(n.data,e,t)}}))},...s.user&&{user:Yt(s.user,e,t)},...s.contexts&&{contexts:Yt(s.contexts,e,t)},...s.extra&&{extra:Yt(s.extra,e,t)}};return(r=s.contexts)!=null&&r.trace&&i.contexts&&(i.contexts.trace=s.contexts.trace,s.contexts.trace.data&&(i.contexts.trace.data=Yt(s.contexts.trace.data,e,t))),s.spans&&(i.spans=s.spans.map(n=>({...n,...n.data&&{data:Yt(n.data,e,t)}}))),(o=s.contexts)!=null&&o.flags&&i.contexts&&(i.contexts.flags=Yt(s.contexts.flags,3,t)),i}function _D(s,e){if(!e)return s;const t=s?s.clone():new Pt;return t.update(e),t}function xD(s,e){return At().captureException(s,void 0)}function n4(s,e){return At().captureEvent(s,e)}function hu(s){const e=Es(),{user:t}=o4(e,At()),{userAgent:i}=ae.navigator||{},r=iT({user:t,...i&&{userAgent:i},...s}),o=e.getSession();return(o==null?void 0:o.status)==="ok"&&zi(o,{status:"exited"}),a4(),e.setSession(r),r}function a4(){const s=Es(),t=At().getSession()||s.getSession();t&&rT(t),M4(),s.setSession()}function M4(){const s=Es(),e=Ue(),t=s.getSession();t&&e&&e.captureSession(t)}function hn(s=!1){if(s){a4();return}M4()}const SD="7";function kD(s){const e=s.protocol?`${s.protocol}:`:"",t=s.port?`:${s.port}`:"";return`${e}//${s.host}${t}${s.path?`/${s.path}`:""}/api/`}function vD(s){return`${kD(s)}${s.projectId}/envelope/`}function YD(s,e){const t={sentry_version:SD};return s.publicKey&&(t.sentry_key=s.publicKey),e&&(t.sentry_client=`${e.name}/${e.version}`),new URLSearchParams(t).toString()}function QD(s,e,t){return e||`${vD(s)}?${YD(s,t)}`}const zu=[];function bD(s){const e={};return s.forEach(t=>{const{name:i}=t,r=e[i];r&&!r.isDefaultInstance&&t.isDefaultInstance||(e[i]=t)}),Object.values(e)}function UD(s){const e=s.defaultIntegrations||[],t=s.integrations;e.forEach(r=>{r.isDefaultInstance=!0});let i;if(Array.isArray(t))i=[...e,...t];else if(typeof t=="function"){const r=t(e);i=Array.isArray(r)?r:[r]}else i=e;return bD(i)}function $D(s,e){const t={};return e.forEach(i=>{i!=null&&i.beforeSetup&&i.beforeSetup(s)}),e.forEach(i=>{i&&c4(s,i,t)}),t}function wu(s,e){for(const t of e)t!=null&&t.afterAllSetup&&t.afterAllSetup(s)}function c4(s,e,t){if(t[e.name]){X&&F.log(`Integration skipped because it was already installed: ${e.name}`);return}if(t[e.name]=e,!zu.includes(e.name)&&typeof e.setupOnce=="function"&&(e.setupOnce(),zu.push(e.name)),e.setup&&typeof e.setup=="function"&&e.setup(s),typeof e.preprocessEvent=="function"){const i=e.preprocessEvent.bind(e);s.on("preprocessEvent",(r,o)=>i(r,o,s))}if(typeof e.processEvent=="function"){const i=e.processEvent.bind(e),r=Object.assign((o,n)=>i(o,n,s),{id:e.name});s.addEventProcessor(r)}X&&F.log(`Integration installed: ${e.name}`)}function PD(s){return[{type:"log",item_count:s.length,content_type:"application/vnd.sentry.items.log+json"},{items:s}]}function WD(s,e,t,i){const r={};return e!=null&&e.sdk&&(r.sdk={name:e.sdk.name,version:e.sdk.version}),t&&i&&(r.dsn=pr(i)),mi(r,[PD(s)])}function Ma(s,e){const t=e??JD(s)??[];if(t.length===0)return;const i=s.getOptions(),r=WD(t,i._metadata,i.tunnel,s.getDsn());u4().set(s,[]),s.emit("flushLogs"),s.sendEnvelope(r)}function JD(s){return u4().get(s)}function u4(){return Ci("clientToLogBufferMap",()=>new WeakMap)}function BD(s){return[{type:"trace_metric",item_count:s.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:s}]}function RD(s,e,t,i){const r={};return e!=null&&e.sdk&&(r.sdk={name:e.sdk.name,version:e.sdk.version}),t&&i&&(r.dsn=pr(i)),mi(r,[BD(s)])}function l4(s,e){const t=e??FD(s)??[];if(t.length===0)return;const i=s.getOptions(),r=RD(t,i._metadata,i.tunnel,s.getDsn());N4().set(s,[]),s.emit("flushMetrics"),s.sendEnvelope(r)}function FD(s){return N4().get(s)}function N4(){return Ci("clientToMetricBufferMap",()=>new WeakMap)}function L4(s){return typeof s=="object"&&typeof s.unref=="function"&&s.unref(),s}const jM=Symbol.for("SentryBufferFullError");function yM(s=100){const e=new Set;function t(){return e.sizei(M),()=>i(M)),M}function o(n){if(!e.size)return Ar(!0);const M=Promise.allSettled(Array.from(e)).then(()=>!0);if(!n)return M;const c=[M,new Promise(l=>L4(setTimeout(()=>l(!1),n)))];return Promise.race(c)}return{get $(){return Array.from(e)},add:r,drain:o}}const GD=60*1e3;function HD(s,e=Jo()){const t=parseInt(`${s}`,10);if(!isNaN(t))return t*1e3;const i=Date.parse(`${s}`);return isNaN(i)?GD:i-e}function VD(s,e){return s[e]||s.all||0}function ZD(s,e,t=Jo()){return VD(s,e)>t}function XD(s,{statusCode:e,headers:t},i=Jo()){const r={...s},o=t==null?void 0:t["x-sentry-rate-limits"],n=t==null?void 0:t["retry-after"];if(o)for(const M of o.trim().split(",")){const[c,l,,,N]=M.split(":",5),u=parseInt(c,10),L=(isNaN(u)?60:u)*1e3;if(!l)r.all=i+L;else for(const g of l.split(";"))g==="metric_bucket"?(!N||N.split(";").includes("custom"))&&(r[g]=i+L):r[g]=i+L}else n?r.all=i+HD(n,i):e===429&&(r.all=i+60*1e3);return r}const g4=64;function KD(s,e,t=yM(s.bufferSize||g4)){let i={};const r=n=>t.drain(n);function o(n){const M=[];if(oa(n,(u,L)=>{const g=gu(L);ZD(i,g)?s.recordDroppedEvent("ratelimit_backoff",g):M.push(u)}),M.length===0)return Promise.resolve({});const c=mi(n[0],M),l=u=>{if(MD(c,["client_report"])){X&&F.warn(`Dropping client report. Will not send outcomes (reason: ${u}).`);return}oa(c,(L,g)=>{s.recordDroppedEvent(u,gu(g))})},N=()=>e({body:cD(c)}).then(u=>u.statusCode===413?(X&&F.error("Sentry responded with status code 413. Envelope was discarded due to exceeding size limits."),l("send_error"),u):(X&&u.statusCode!==void 0&&(u.statusCode<200||u.statusCode>=300)&&F.warn(`Sentry responded with status code ${u.statusCode} to sent event.`),i=XD(i,u),u),u=>{throw l("network_error"),X&&F.error("Encountered error running transport request:",u),u});return t.add(N).then(u=>u,u=>{if(u===jM)return X&&F.error("Skipped sending event because buffer is full."),l("queue_overflow"),Promise.resolve({});throw u})}return{send:o,flush:r}}function qD(s,e,t){const i=[{type:"client_report"},{timestamp:Ir(),discarded_events:s}];return mi(e?{dsn:e}:{},[i])}function j4(s){const e=[];s.message&&e.push(s.message);try{const t=s.exception.values[s.exception.values.length-1];t!=null&&t.value&&(e.push(t.value),t.type&&e.push(`${t.type}: ${t.value}`))}catch{}return e}function ed(s){var c;const{trace_id:e,parent_span_id:t,span_id:i,status:r,origin:o,data:n,op:M}=((c=s.contexts)==null?void 0:c.trace)??{};return{data:n??{},description:s.transaction,op:M,parent_span_id:t,span_id:i??"",start_timestamp:s.start_timestamp??0,status:r,timestamp:s.timestamp,trace_id:e??"",origin:o,profile_id:n==null?void 0:n[VN],exclusive_time:n==null?void 0:n[ZN],measurements:s.measurements,is_segment:!0}}function td(s){return{type:"transaction",timestamp:s.timestamp,start_timestamp:s.start_timestamp,transaction:s.description,contexts:{trace:{trace_id:s.trace_id,span_id:s.span_id,parent_span_id:s.parent_span_id,op:s.op,status:s.status,origin:s.origin,data:{...s.data,...s.profile_id&&{[VN]:s.profile_id},...s.exclusive_time&&{[ZN]:s.exclusive_time}}}},measurements:s.measurements}}const Iu="Not capturing exception because it's already been captured.",Cu="Discarded session because of missing or non-string release",y4=Symbol.for("SentryInternalError"),T4=Symbol.for("SentryDoNotSendEventError"),sd=5e3;function ao(s){return{message:s,[y4]:!0}}function zn(s){return{message:s,[T4]:!0}}function pu(s){return!!s&&typeof s=="object"&&y4 in s}function Au(s){return!!s&&typeof s=="object"&&T4 in s}function mu(s,e,t,i,r){let o=0,n,M=!1;s.on(t,()=>{o=0,clearTimeout(n),M=!1}),s.on(e,c=>{o+=i(c),o>=8e5?r(s):M||(M=!0,n=L4(setTimeout(()=>{r(s)},sd)))}),s.on("flush",()=>{r(s)})}class id{constructor(e){var i,r,o;if(this._options=e,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=yM(((i=e.transportOptions)==null?void 0:i.bufferSize)??g4),e.dsn?this._dsn=bT(e.dsn):X&&F.warn("No DSN provided, client will not send events."),this._dsn){const n=QD(this._dsn,e.tunnel,e._metadata?e._metadata.sdk:void 0);this._transport=e.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:n})}this._options.enableLogs=this._options.enableLogs??((r=this._options._experiments)==null?void 0:r.enableLogs),this._options.enableLogs&&mu(this,"afterCaptureLog","flushLogs",ad,Ma),(this._options.enableMetrics??((o=this._options._experiments)==null?void 0:o.enableMetrics)??!0)&&mu(this,"afterCaptureMetric","flushMetrics",nd,l4)}captureException(e,t,i){const r=at();if(qc(e))return X&&F.log(Iu),r;const o={event_id:r,...t};return this._process(()=>this.eventFromException(e,o).then(n=>this._captureEvent(n,o,i)).then(n=>n),"error"),o.event_id}captureMessage(e,t,i,r){const o={event_id:at(),...i},n=aM(e)?e:String(e),M=$o(e),c=M?this.eventFromMessage(n,t,o):this.eventFromException(e,o);return this._process(()=>c.then(l=>this._captureEvent(l,o,r)),M?"unknown":"error"),o.event_id}captureEvent(e,t,i){const r=at();if(t!=null&&t.originalException&&qc(t.originalException))return X&&F.log(Iu),r;const o={event_id:r,...t},n=e.sdkProcessingMetadata||{},M=n.capturedSpanScope,c=n.capturedSpanIsolationScope,l=fu(e.type);return this._process(()=>this._captureEvent(e,o,M||i,c),l),o.event_id}captureSession(e){this.sendSession(e),zi(e,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(e){const t=this._transport;if(!t)return!0;this.emit("flush");const i=await this._isClientDoneProcessing(e),r=await t.flush(e);return i&&r}async close(e){Ma(this);const t=await this.flush(e);return this.getOptions().enabled=!1,this.emit("close"),t}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}init(){(this._isEnabled()||this._options.integrations.some(({name:e})=>e.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(e){return this._integrations[e]}addIntegration(e){const t=this._integrations[e.name];!t&&e.beforeSetup&&e.beforeSetup(this),c4(this,e,this._integrations),t||wu(this,[e])}sendEvent(e,t={}){this.emit("beforeSendEvent",e,t);let i=yD(e,this._dsn,this._options._metadata,this._options.tunnel);for(const r of t.attachments||[])i=aD(i,lD(r));this.sendEnvelope(i).then(r=>this.emit("afterSendEvent",e,r))}sendSession(e){const{release:t,environment:i=LM}=this._options;if("aggregates"in e){const o=e.attrs||{};if(!o.release&&!t){X&&F.warn(Cu);return}o.release=o.release||t,o.environment=o.environment||i,e.attrs=o}else{if(!e.release&&!t){X&&F.warn(Cu);return}e.release=e.release||t,e.environment=e.environment||i}this.emit("beforeSendSession",e);const r=jD(e,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(r)}recordDroppedEvent(e,t,i=1){if(this._options.sendClientReports){const r=`${e}:${t}`;X&&F.log(`Recording outcome: "${r}"${i>1?` (${i} times)`:""}`),this._outcomes[r]=(this._outcomes[r]||0)+i}}on(e,t){const i=this._hooks[e]=this._hooks[e]||new Set,r=(...o)=>t(...o);return i.add(r),()=>{i.delete(r)}}emit(e,...t){const i=this._hooks[e];i&&i.forEach(r=>r(...t))}async sendEnvelope(e){if(this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport)try{return await this._transport.send(e)}catch(t){return X&&F.error("Error while sending envelope:",t),{}}return X&&F.error("Transport disabled"),{}}dispose(){}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=$D(this,e),wu(this,e)}_updateSessionFromEvent(e,t){var c,l;let i=t.level==="fatal",r=!1;const o=(c=t.exception)==null?void 0:c.values;if(o){r=!0,i=!1;for(const N of o)if(((l=N.mechanism)==null?void 0:l.handled)===!1){i=!0;break}}const n=e.status==="ok";(n&&e.errors===0||n&&i)&&(zi(e,{...i&&{status:"crashed"},errors:e.errors||Number(r||i)}),this.captureSession(e))}async _isClientDoneProcessing(e){let t=0;for(;!e||tsetTimeout(i,1)),!this._numProcessing)return!0;t++}return!1}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(e,t,i,r){const o=this.getOptions(),n=Object.keys(this._integrations);return!t.integrations&&(n!=null&&n.length)&&(t.integrations=n),this.emit("preprocessEvent",e,t),e.type||r.setLastEventId(e.event_id||t.event_id),pD(o,e,t,i,this,r).then(M=>{var l;if(M===null)return M;this.emit("postprocessEvent",M,t),M.contexts={trace:{...(l=M.contexts)==null?void 0:l.trace,...TT(i)},...M.contexts};const c=qT(this,i);return M.sdkProcessingMetadata={dynamicSamplingContext:c,...M.sdkProcessingMetadata},M})}_captureEvent(e,t={},i=At(),r=Es()){return X&&ca(e)&&F.log(`Captured error event \`${j4(e)[0]||""}\``),this._processEvent(e,t,i,r).then(o=>o.event_id,o=>{X&&(Au(o)?F.log(o.message):pu(o)?F.warn(o.message):F.warn(o))})}_processEvent(e,t,i,r){const o=this.getOptions(),{sampleRate:n}=o,M=D4(e),c=ca(e),N=`before send for type \`${e.type||"error"}\``,u=typeof n>"u"?void 0:UT(n);if(c&&typeof u=="number"&&To()>u)return this.recordDroppedEvent("sample_rate","error"),gM(zn(`Discarding event because it's not included in the random sample (sampling rate = ${n})`));const L=fu(e.type);return this._prepareEvent(e,t,i,r).then(g=>{var T;if(g===null)throw this.recordDroppedEvent("event_processor",L),zn("An event processor returned `null`, will not send event.");if(((T=t.data)==null?void 0:T.__sentry__)===!0)return g;const y=od(this,o,g,t);return rd(y,N)}).then(g=>{var T;if(g===null){if(this.recordDroppedEvent("before_send",L),M){const I=1+(e.spans||[]).length;this.recordDroppedEvent("before_send","span",I)}throw zn(`${N} returned \`null\`, will not send event.`)}const j=i.getSession()||r.getSession();if(c&&j&&this._updateSessionFromEvent(j,g),M){const d=((T=g.sdkProcessingMetadata)==null?void 0:T.spanCountBeforeProcessing)||0,I=g.spans?g.spans.length:0,w=d-I;w>0&&this.recordDroppedEvent("before_send","span",w)}const y=g.transaction_info;if(M&&y&&g.transaction!==e.transaction){const d="custom";g.transaction_info={...y,source:d}}return this.sendEvent(g,t),g}).then(null,g=>{throw Au(g)||pu(g)?g:(this.captureException(g,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:g}),ao(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. +Reason: ${g}`))})}_process(e,t){this._numProcessing++,this._promiseBuffer.add(e).then(i=>(this._numProcessing--,i),i=>(this._numProcessing--,i===jM&&this.recordDroppedEvent("queue_overflow",t),i))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([t,i])=>{const[r,o]=t.split(":");return{reason:r,category:o,quantity:i}})}_flushOutcomes(){X&&F.log("Flushing outcomes...");const e=this._clearOutcomes();if(e.length===0){X&&F.log("No outcomes to send");return}if(!this._dsn){X&&F.log("No dsn provided, will not send outcomes");return}X&&F.log("Sending outcomes:",e);const t=qD(e,this._options.tunnel&&pr(this._dsn));this.sendEnvelope(t)}}function fu(s){return s==="replay_event"?"replay":s||"error"}function rd(s,e){const t=`${e} must return \`null\` or a valid event.`;if(wr(s))return s.then(i=>{if(!ur(i)&&i!==null)throw ao(t);return i},i=>{throw ao(`${e} rejected with ${i}`)});if(!ur(s)&&s!==null)throw ao(t);return s}function od(s,e,t,i){const{beforeSend:r,beforeSendTransaction:o,ignoreSpans:n}=e,M=!tD(e.beforeSendSpan)&&e.beforeSendSpan;let c=t;if(ca(c)&&r)return r(c,i);if(D4(c)){if(M||n){const l=ed(c);if(n!=null&&n.length&&Lu(l,n))return null;if(M){const N=M(l);N?c=Cr(t,td(N)):lu()}if(c.spans){const N=[],u=c.spans;for(const g of u){if(n!=null&&n.length&&Lu(g,n)){ZT(u,g);continue}if(M){const j=M(g);j?N.push(j):(lu(),N.push(g))}else N.push(g)}const L=c.spans.length-N.length;L&&s.recordDroppedEvent("before_send","span",L),c.spans=N}}if(o){if(c.spans){const l=c.spans.length;c.sdkProcessingMetadata={...t.sdkProcessingMetadata,spanCountBeforeProcessing:l}}return o(c,i)}}return c}function ca(s){return s.type===void 0}function D4(s){return s.type==="transaction"}function nd(s){let e=0;return s.name&&(e+=s.name.length*2),e+=8,e+d4(s.attributes)}function ad(s){let e=0;return s.message&&(e+=s.message.length*2),e+d4(s.attributes)}function d4(s){if(!s)return 0;let e=0;return Object.values(s).forEach(t=>{Array.isArray(t)?e+=t.length*Ou(t[0]):$o(t)?e+=Ou(t):e+=100}),e}function Ou(s){return typeof s=="string"?s.length*2:typeof s=="number"?8:typeof s=="boolean"?4:0}function Md(s){return Uo(s)&&"__sentry_fetch_url_host__"in s&&typeof s.__sentry_fetch_url_host__=="string"}function Eu(s){return Md(s)?`${s.message} (${s.__sentry_fetch_url_host__})`:s.message}function cd(s,e){e.debug===!0&&(X?F.enable():pi(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),At().update(e.initialScope);const i=new s(e);return ud(i),i.init(),i}function ud(s){At().setClient(s)}function wn(s){if(!s)return{};const e=s.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!e)return{};const t=e[6]||"",i=e[8]||"";return{host:e[4],path:e[5],protocol:e[2],search:t,hash:i,relative:e[5]+t+i}}function ld(s,e=!0){if(s.startsWith("data:")){const t=s.match(/^data:([^;,]+)/),i=t?t[1]:"text/plain",r=s.includes(";base64,"),o=s.indexOf(",");let n="";if(e&&o!==-1){const M=s.slice(o+1);n=M.length>10?`${M.slice(0,10)}... [truncated]`:M}return`data:${i}${r?",base64":""}${n?`,${n}`:""}`}return s}function Nd(s){var e;"aggregates"in s?((e=s.attrs)==null?void 0:e.ip_address)===void 0&&(s.attrs={...s.attrs,ip_address:"{{auto}}"}):s.ipAddress===void 0&&(s.ipAddress="{{auto}}")}function Ld(s,e,t=[e],i="npm"){const r=(s._metadata=s._metadata||{}).sdk=s._metadata.sdk||{};r.name||(r.name=`sentry.javascript.${e}`,r.packages=t.map(o=>({name:`${i}:@sentry/${o}`,version:Is})),r.version=Is)}const gd=100;function ps(s,e){const t=Ue(),i=Es();if(!t)return;const{beforeBreadcrumb:r=null,maxBreadcrumbs:o=gd}=t.getOptions();if(o<=0)return;const M={timestamp:Ir(),...s},c=r?pi(()=>r(M,e)):M;c!==null&&(t.emit&&t.emit("beforeAddBreadcrumb",c,e),i.addBreadcrumb(c,o))}let _u;const jd="FunctionToString",xu=new WeakMap,yd=(()=>({name:jd,setupOnce(){_u=Function.prototype.toString;try{Function.prototype.toString=function(...s){const e=uM(this),t=xu.has(Ue())&&e!==void 0?e:this;return _u.apply(t,s)}}catch{}},setup(s){xu.set(s,!0)}})),Td=yd,Dd=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,/can't redefine non-configurable property "solana"/,/vv\(\)\.getRestrictions is not a function/,/Can't find variable: _AutofillCallbackHandler/,/Object Not Found Matching Id:\d+, MethodName:simulateEvent/,/^Java exception was raised during method invocation$/],dd="EventFilters",hd=(s={})=>{let e;return{name:dd,setup(t){const i=t.getOptions();e=Su(s,i)},processEvent(t,i,r){if(!e){const o=r.getOptions();e=Su(s,o)}return wd(t,e)?null:t}}},zd=((s={})=>({...hd(s),name:"InboundFilters"}));function Su(s={},e={}){return{allowUrls:[...s.allowUrls||[],...e.allowUrls||[]],denyUrls:[...s.denyUrls||[],...e.denyUrls||[]],ignoreErrors:[...s.ignoreErrors||[],...e.ignoreErrors||[],...s.disableErrorDefaults?[]:Dd],ignoreTransactions:[...s.ignoreTransactions||[],...e.ignoreTransactions||[]]}}function wd(s,e){if(s.type){if(s.type==="transaction"&&Cd(s,e.ignoreTransactions))return X&&F.warn(`Event dropped due to being matched by \`ignoreTransactions\` option. +Event: ${hs(s)}`),!0}else{if(Id(s,e.ignoreErrors))return X&&F.warn(`Event dropped due to being matched by \`ignoreErrors\` option. +Event: ${hs(s)}`),!0;if(fd(s))return X&&F.warn(`Event dropped due to not having an error message, error type or stacktrace. +Event: ${hs(s)}`),!0;if(pd(s,e.denyUrls))return X&&F.warn(`Event dropped due to being matched by \`denyUrls\` option. Event: ${hs(s)}. -Url: ${Do(s)}`),!0;if(!md(s,e.allowUrls))return X&&F.warn(`Event dropped due to not being matched by \`allowUrls\` option. +Url: ${Do(s)}`),!0;if(!Ad(s,e.allowUrls))return X&&F.warn(`Event dropped due to not being matched by \`allowUrls\` option. Event: ${hs(s)}. -Url: ${Do(s)}`),!0}return!1}function Cd(s,e){return e!=null&&e.length?T4(s).some(t=>Bo(t,e)):!1}function pd(s,e){if(!(e!=null&&e.length))return!1;const t=s.transaction;return t?Bo(t,e):!1}function Ad(s,e){if(!(e!=null&&e.length))return!1;const t=Do(s);return t?Bo(t,e):!1}function md(s,e){if(!(e!=null&&e.length))return!0;const t=Do(s);return t?Bo(t,e):!0}function fd(s=[]){for(let e=s.length-1;e>=0;e--){const t=s[e];if(t&&t.filename!==""&&t.filename!=="[native code]")return t.filename||null}return null}function Do(s){var e,t;try{const i=[...((e=s.exception)==null?void 0:e.values)??[]].reverse().find(o=>{var n,M,c;return((n=o.mechanism)==null?void 0:n.parent_id)===void 0&&((c=(M=o.stacktrace)==null?void 0:M.frames)==null?void 0:c.length)}),r=(t=i==null?void 0:i.stacktrace)==null?void 0:t.frames;return r?fd(r):null}catch{return X&&F.error(`Cannot extract url for event ${hs(s)}`),null}}function Od(s){var e,t;return(t=(e=s.exception)==null?void 0:e.values)!=null&&t.length?!s.message&&!s.exception.values.some(i=>i.stacktrace||i.type&&i.type!=="Error"||i.value):!1}function Ed(s,e,t,i,r,o){var M;if(!((M=r.exception)!=null&&M.values)||!o||!cs(o.originalException,Error))return;const n=r.exception.values.length>0?r.exception.values[r.exception.values.length-1]:void 0;n&&(r.exception.values=la(s,e,i,o.originalException,t,r.exception.values,n,0))}function la(s,e,t,i,r,o,n,M){if(o.length>=t+1)return o;let c=[...o];if(cs(i[r],Error)){vu(n,M,i);const l=s(e,i[r]),N=c.length;Yu(l,r,N,M),c=la(s,e,t,i[r],r,[l,...c],l,N)}return w4(i)&&i.errors.forEach((l,N)=>{if(cs(l,Error)){vu(n,M,i);const u=s(e,l),L=c.length;Yu(u,`errors[${N}]`,L,M),c=la(s,e,t,l,r,[u,...c],u,L)}}),c}function w4(s){return Array.isArray(s.errors)}function vu(s,e,t){s.mechanism={handled:!0,type:"auto.core.linked_errors",...w4(t)&&{is_exception_group:!0},...s.mechanism,exception_id:e}}function Yu(s,e,t,i){s.mechanism={handled:!0,...s.mechanism,type:"chained",source:e,exception_id:t,parent_id:i}}function _d(s){const e="console";fs(e,s),Os(e,xd)}function xd(){"console"in ae&&Sy.forEach(function(s){s in ae.console&&qe(ae.console,s,function(e){return yo[s]=e,function(...t){gt("console",{args:t,level:s});const r=yo[s];r==null||r.apply(ae.console,t)}})})}function Sd(s){return s==="warn"?"warning":["fatal","error","warning","log","info","debug"].includes(s)?s:"log"}const kd="Dedupe",vd=(()=>{let s;return{name:kd,processEvent(e){if(e.type)return e;try{if(Yd(e,s))return X&&F.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return s=e}}}),I4=vd;function Yd(s,e){return e?!!(Qd(s,e)||bd(s,e)):!1}function Qd(s,e){const t=s.message,i=e.message;return!(!t&&!i||t&&!i||!t&&i||t!==i||!p4(s,e)||!C4(s,e))}function bd(s,e){const t=Qu(e),i=Qu(s);return!(!t||!i||t.type!==i.type||t.value!==i.value||!p4(s,e)||!C4(s,e))}function C4(s,e){let t=Hc(s),i=Hc(e);if(!t&&!i)return!0;if(t&&!i||!t&&i||(t=t,i=i,i.length!==t.length))return!1;for(let r=0;r({name:Ud,setup(s){s.on("spanStart",e=>{const t=At().getScopeData(),i=Es().getScopeData(),r=t.conversationId||i.conversationId;r&&e.setAttribute(CT,r)})}})),Pd=$d;function A4(s){if(s!==void 0)return s>=400&&s<500?"warning":s>=500?"error":void 0}const Nr=ae;function Wd(){return"history"in Nr&&!!Nr.history}function Jd(){if(!("fetch"in Nr))return!1;try{return new Headers,new Request("data:,"),new Response,!0}catch{return!1}}function Na(s){return s&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(s.toString())}function Bd(){var t;if(typeof EdgeRuntime=="string")return!0;if(!Jd())return!1;if(Na(Nr.fetch))return!0;let s=!1;const e=Nr.document;if(e&&typeof e.createElement=="function")try{const i=e.createElement("iframe");i.hidden=!0,e.head.appendChild(i),(t=i.contentWindow)!=null&&t.fetch&&(s=Na(i.contentWindow.fetch)),e.head.removeChild(i)}catch(i){X&&F.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",i)}return s}function Rd(s,e){const t="fetch";fs(t,s),Os(t,()=>Fd(void 0,e))}function Fd(s,e=!1){e&&!Bd()||qe(ae,"fetch",function(t){return function(...i){const r=new Error,{method:o,url:n}=Gd(i),M={args:i,fetchData:{method:o,url:n},startTimestamp:$t()*1e3,virtualError:r,headers:Hd(i)};return gt("fetch",{...M}),t.apply(ae,i).then(async c=>(gt("fetch",{...M,endTimestamp:$t()*1e3,response:c}),c),c=>{gt("fetch",{...M,endTimestamp:$t()*1e3,error:c}),Uo(c)&&c.stack===void 0&&(c.stack=r.stack,us(c,"framesToPop",1));const l=Ue(),N=(l==null?void 0:l.getOptions().enhanceFetchErrorMessages)??"always";if(N!==!1&&c instanceof TypeError&&(c.message==="Failed to fetch"||c.message==="Load failed"||c.message==="NetworkError when attempting to fetch resource."))try{const g=new URL(M.fetchData.url).host;N==="always"?c.message=`${c.message} (${g})`:us(c,"__sentry_fetch_url_host__",g)}catch{}throw c})}})}function Mo(s,e){return!!s&&typeof s=="object"&&!!s[e]}function bu(s){return typeof s=="string"?s:s?Mo(s,"url")?s.url:s.toString?s.toString():"":""}function Gd(s){if(s.length===0)return{method:"GET",url:""};if(s.length===2){const[t,i]=s;return{url:bu(t),method:Mo(i,"method")?String(i.method).toUpperCase():JN(t)&&Mo(t,"method")?String(t.method).toUpperCase():"GET"}}const e=s[0];return{url:bu(e),method:Mo(e,"method")?String(e.method).toUpperCase():"GET"}}function Hd(s){const[e,t]=s;try{if(typeof t=="object"&&t!==null&&"headers"in t&&t.headers)return new Headers(t.headers);if(JN(e))return new Headers(e.headers)}catch{}}function Vd(){return"npm"}const de=ae;let La=0;function m4(){return La>0}function Zd(){La++,setTimeout(()=>{La--})}function Ii(s,e={}){function t(r){return typeof r=="function"}if(!t(s))return s;try{const r=s.__sentry_wrapped__;if(r)return typeof r=="function"?r:s;if(lM(s))return s}catch{return s}const i=function(...r){try{const o=r.map(n=>Ii(n,e));return s.apply(this,o)}catch(o){throw Zd(),TT(n=>{n.addEventProcessor(M=>(e.mechanism&&(ia(M,void 0),hi(M,e.mechanism)),M.extra={...M.extra,arguments:r},M)),SD(o)}),o}};try{for(const r in s)Object.prototype.hasOwnProperty.call(s,r)&&(i[r]=s[r])}catch{}RN(i,s),us(s,"__sentry_wrapped__",i);try{Object.getOwnPropertyDescriptor(i,"name").configurable&&Object.defineProperty(i,"name",{get(){return s.name}})}catch{}return i}function Xd(){const s=uM(),{referrer:e}=de.document||{},{userAgent:t}=de.navigator||{},i={...e&&{Referer:e},...t&&{"User-Agent":t}};return{url:s,headers:i}}function DM(s,e){const t=dM(s,e),i={type:s1(e),value:i1(e)};return t.length&&(i.stacktrace={frames:t}),i.type===void 0&&i.value===""&&(i.value="Unrecoverable error caught"),i}function Kd(s,e,t,i){const r=Ue(),o=r==null?void 0:r.getOptions().normalizeDepth,n=M1(e),M={__serialized__:r4(e,o)};if(n)return{exception:{values:[DM(s,n)]},extra:M};const c={exception:{values:[{type:Po(e)?e.constructor.name:i?"UnhandledRejection":"Error",value:n1(e,{isUnhandledRejection:i})}]},extra:M};if(t){const l=dM(s,t);l.length&&(c.exception.values[0].stacktrace={frames:l})}return c}function In(s,e){return{exception:{values:[DM(s,e)]}}}function dM(s,e){const t=e.stacktrace||e.stack||"",i=e1(e),r=t1(e);try{return s(t,i,r)}catch{}return[]}const qd=/Minified React error #\d+;/i;function e1(s){return s&&qd.test(s.message)?1:0}function t1(s){return typeof s.framesToPop=="number"?s.framesToPop:0}function f4(s){return typeof WebAssembly<"u"&&typeof WebAssembly.Exception<"u"?s instanceof WebAssembly.Exception:!1}function s1(s){const e=s==null?void 0:s.name;return!e&&f4(s)?s.message&&Array.isArray(s.message)&&s.message.length==2?s.message[0]:"WebAssembly.Exception":e}function i1(s){const e=s==null?void 0:s.message;return f4(s)?Array.isArray(s.message)&&s.message.length==2?s.message[1]:"wasm exception":e?e.error&&typeof e.error.message=="string"?_u(e.error):_u(s):"No error message"}function r1(s,e,t,i){const r=(t==null?void 0:t.syntheticException)||void 0,o=hM(s,e,r,i);return hi(o),o.level="error",t!=null&&t.event_id&&(o.event_id=t.event_id),Ar(o)}function o1(s,e,t="info",i,r){const o=(i==null?void 0:i.syntheticException)||void 0,n=ga(s,e,o,r);return n.level=t,i!=null&&i.event_id&&(n.event_id=i.event_id),Ar(n)}function hM(s,e,t,i,r){let o;if(PN(e)&&e.error)return In(s,e.error);if(Zc(e)||Fy(e)){const n=e;if("stack"in e)o=In(s,e);else{const M=n.name||(Zc(n)?"DOMError":"DOMException"),c=n.message?`${M}: ${n.message}`:M;o=ga(s,c,t,i),ia(o,c)}return"code"in n&&(o.tags={...o.tags,"DOMException.code":`${n.code}`}),o}return Uo(e)?In(s,e):ur(e)||Po(e)?(o=Kd(s,e,t,r),hi(o,{synthetic:!0}),o):(o=ga(s,e,t,i),ia(o,`${e}`),hi(o,{synthetic:!0}),o)}function ga(s,e,t,i){const r={};if(i&&t){const o=dM(s,t);o.length&&(r.exception={values:[{value:e,stacktrace:{frames:o}}]}),hi(r,{synthetic:!0})}if(MM(e)){const{__sentry_template_string__:o,__sentry_template_values__:n}=e;return r.logentry={message:o,params:n},r}return r.message=e,r}function n1(s,{isUnhandledRejection:e}){const t=qy(s),i=e?"promise rejection":"exception";return PN(s)?`Event \`ErrorEvent\` captured as ${i} with message \`${s.message}\``:Po(s)?`Event \`${a1(s)}\` (type=${s.type}) captured as ${i}`:`Object captured as ${i} with keys: ${t}`}function a1(s){try{const e=Object.getPrototypeOf(s);return e?e.constructor.name:void 0}catch{}}function M1(s){return Object.values(s).find(e=>e instanceof Error)}class c1 extends rd{constructor(e){var N;const t=u1(e),i=de.SENTRY_SDK_SOURCE||Vd();gd(t,"browser",["browser"],i),(N=t._metadata)!=null&&N.sdk&&(t._metadata.sdk.settings={infer_ip:t.sendDefaultPii?"auto":"never",...t._metadata.sdk.settings}),super(t);const{sendDefaultPii:r,sendClientReports:o,enableLogs:n,_experiments:M,enableMetrics:c}=this._options,l=c??(M==null?void 0:M.enableMetrics)??!0;de.document&&(o||n||l)&&de.document.addEventListener("visibilitychange",()=>{de.document.visibilityState==="hidden"&&(o&&this._flushOutcomes(),n&&ca(this),l&&L4(this))}),r&&this.on("beforeSendSession",Ld)}eventFromException(e,t){return r1(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e,t="info",i){return o1(this._options.stackParser,e,t,i,this._options.attachStacktrace)}_prepareEvent(e,t,i,r){return e.platform=e.platform||"javascript",super._prepareEvent(e,t,i,r)}}function u1(s){var e;return{release:typeof __SENTRY_RELEASE__=="string"?__SENTRY_RELEASE__:(e=de.SENTRY_RELEASE)==null?void 0:e.id,sendClientReports:!0,parentSpanIsAlwaysRootSpan:!0,...s}}const l1=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,Pe=ae,N1=1e3;let Uu,ja,ya;function L1(s){fs("dom",s),Os("dom",g1)}function g1(){if(!Pe.document)return;const s=gt.bind(null,"dom"),e=$u(s,!0);Pe.document.addEventListener("click",e,!1),Pe.document.addEventListener("keypress",e,!1),["EventTarget","Node"].forEach(t=>{var o,n;const r=(o=Pe[t])==null?void 0:o.prototype;(n=r==null?void 0:r.hasOwnProperty)!=null&&n.call(r,"addEventListener")&&(qe(r,"addEventListener",function(M){return function(c,l,N){if(c==="click"||c=="keypress")try{const u=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},L=u[c]=u[c]||{refCount:0};if(!L.handler){const g=$u(s);L.handler=g,M.call(this,c,g,N)}L.refCount++}catch{}return M.call(this,c,l,N)}}),qe(r,"removeEventListener",function(M){return function(c,l,N){if(c==="click"||c=="keypress")try{const u=this.__sentry_instrumentation_handlers__||{},L=u[c];L&&(L.refCount--,L.refCount<=0&&(M.call(this,c,L.handler,N),L.handler=void 0,delete u[c]),Object.keys(u).length===0&&delete this.__sentry_instrumentation_handlers__)}catch{}return M.call(this,c,l,N)}}))})}function j1(s){if(s.type!==ja)return!1;try{if(!s.target||s.target._sentryId!==ya)return!1}catch{}return!0}function y1(s,e){return s!=="keypress"?!1:e!=null&&e.tagName?!(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable):!0}function $u(s,e=!1){return t=>{if(!t||t._sentryCaptured)return;const i=T1(t);if(y1(t.type,i))return;us(t,"_sentryCaptured",!0),i&&!i._sentryId&&us(i,"_sentryId",at());const r=t.type==="keypress"?"input":t.type;j1(t)||(s({event:t,name:r,global:e}),ja=t.type,ya=i?i._sentryId:void 0),clearTimeout(Uu),Uu=Pe.setTimeout(()=>{ya=void 0,ja=void 0},N1)}}function T1(s){try{return s.target}catch{return null}}let Br;function O4(s){const e="history";fs(e,s),Os(e,D1)}function D1(){if(Pe.addEventListener("popstate",()=>{const e=Pe.location.href,t=Br;if(Br=e,t===e)return;gt("history",{from:t,to:e})}),!Wd())return;function s(e){return function(...t){const i=t.length>2?t[2]:void 0;if(i){const r=Br,o=d1(String(i));if(Br=o,r===o)return e.apply(this,t);gt("history",{from:r,to:o})}return e.apply(this,t)}}qe(Pe.history,"pushState",s),qe(Pe.history,"replaceState",s)}function d1(s){try{return new URL(s,Pe.location.origin).toString()}catch{return s}}const co={};function h1(s){const e=co[s];if(e)return e;let t=Pe[s];if(Na(t))return co[s]=t.bind(Pe);const i=Pe.document;if(i&&typeof i.createElement=="function")try{const r=i.createElement("iframe");r.hidden=!0,i.head.appendChild(r);const o=r.contentWindow;o!=null&&o[s]&&(t=o[s]),i.head.removeChild(r)}catch(r){l1&&F.warn(`Could not create sandbox iframe for ${s} check, bailing to window.${s}: `,r)}return t&&(co[s]=t.bind(Pe))}function z1(s){co[s]=void 0}const Ki="__sentry_xhr_v3__";function w1(s){fs("xhr",s),Os("xhr",I1)}function I1(){if(!Pe.XMLHttpRequest)return;const s=XMLHttpRequest.prototype;s.open=new Proxy(s.open,{apply(e,t,i){const r=new Error,o=$t()*1e3,n=Ut(i[0])?i[0].toUpperCase():void 0,M=C1(i[1]);if(!n||!M)return e.apply(t,i);t[Ki]={method:n,url:M,request_headers:{}},n==="POST"&&M.match(/sentry_key/)&&(t.__sentry_own_request__=!0);const c=()=>{const l=t[Ki];if(l&&t.readyState===4){try{l.status_code=t.status}catch{}const N={endTimestamp:$t()*1e3,startTimestamp:o,xhr:t,virtualError:r};gt("xhr",N)}};return"onreadystatechange"in t&&typeof t.onreadystatechange=="function"?t.onreadystatechange=new Proxy(t.onreadystatechange,{apply(l,N,u){return c(),l.apply(N,u)}}):t.addEventListener("readystatechange",c),t.setRequestHeader=new Proxy(t.setRequestHeader,{apply(l,N,u){const[L,g]=u,j=N[Ki];return j&&Ut(L)&&Ut(g)&&(j.request_headers[L.toLowerCase()]=g),l.apply(N,u)}}),e.apply(t,i)}}),s.send=new Proxy(s.send,{apply(e,t,i){const r=t[Ki];if(!r)return e.apply(t,i);i[0]!==void 0&&(r.body=i[0]);const o={startTimestamp:$t()*1e3,xhr:t};return gt("xhr",o),e.apply(t,i)}})}function C1(s){if(Ut(s))return s;try{return s.toString()}catch{}}const p1=40;function A1(s,e=h1("fetch")){let t=0,i=0;async function r(o){const n=o.body.length;t+=n,i++;const M={body:o.body,method:"POST",referrerPolicy:"strict-origin",headers:s.headers,keepalive:t<=6e4&&i<15,...s.fetchOptions};try{const c=await e(s.url,M);return{statusCode:c.status,headers:{"x-sentry-rate-limits":c.headers.get("X-Sentry-Rate-Limits"),"retry-after":c.headers.get("Retry-After")}}}catch(c){throw z1("fetch"),c}finally{t-=n,i--}}return qD(s,r,TM(s.bufferSize||p1))}const Ro=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,m1=30,f1=50;function Ta(s,e,t,i){const r={filename:s,function:e===""?Cs:e,in_app:!0};return t!==void 0&&(r.lineno=t),i!==void 0&&(r.colno=i),r}const O1=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,E1=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,_1=/\((\S*)(?::(\d+))(?::(\d+))\)/,x1=/at (.+?) ?\(data:(.+?),/,S1=s=>{var r;const e=s.match(x1);if(e)return{filename:``,function:e[1]};const t=O1.exec(s);if(t){const[,o,n,M]=t;return Ta(o,Cs,+n,+M)}const i=E1.exec(s);if(i){if(((r=i[2])==null?void 0:r.indexOf("eval"))===0){const c=_1.exec(i[2]);c&&(i[2]=c[1],i[3]=c[2],i[4]=c[3])}const[n,M]=E4(i[1]||Cs,i[2]);return Ta(M,n,i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}},k1=[m1,S1],v1=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Y1=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Q1=s=>{const e=v1.exec(s);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const o=Y1.exec(e[3]);o&&(e[1]=e[1]||"eval",e[3]=o[1],e[4]=o[2],e[5]="")}let i=e[3],r=e[1]||Cs;return[r,i]=E4(r,i),Ta(i,r,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}},b1=[f1,Q1],U1=[k1,b1],$1=bN(...U1),E4=(s,e)=>{const t=s.indexOf("safari-extension")!==-1,i=s.indexOf("safari-web-extension")!==-1;return t||i?[s.indexOf("@")!==-1?s.split("@")[0]:Cs,t?`safari-extension:${e}`:`safari-web-extension:${e}`]:[s,e]},Rr=1024,P1="Breadcrumbs",W1=((s={})=>{const e={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...s};return{name:P1,setup(t){e.console&&_d(F1(t)),e.dom&&L1(R1(t,e.dom)),e.xhr&&w1(G1(t)),e.fetch&&Rd(H1(t)),e.history&&O4(V1(t)),e.sentry&&t.on("beforeSendEvent",B1(t))}}}),J1=W1;function B1(s){return function(t){Ue()===s&&ps({category:`sentry.${t.type==="transaction"?"transaction":"event"}`,event_id:t.event_id,level:t.level,message:hs(t)},{event:t})}}function R1(s,e){return function(i){if(Ue()!==s)return;let r,o,n=typeof e=="object"?e.serializeAttribute:void 0,M=typeof e=="object"&&typeof e.maxStringLength=="number"?e.maxStringLength:void 0;M&&M>Rr&&(Ro&&F.warn(`\`dom.maxStringLength\` cannot exceed ${Rr}, but a value of ${M} was configured. Sentry will use ${Rr} instead.`),M=Rr),typeof n=="string"&&(n=[n]);try{const l=i.event,N=Z1(l)?l.target:l;r=BN(N,{keyAttrs:n,maxStringLength:M}),o=Ky(N)}catch{r=""}if(r.length===0)return;const c={category:`ui.${i.name}`,message:r};o&&(c.data={"ui.component_name":o}),ps(c,{event:i.event,name:i.name,global:i.global})}}function F1(s){return function(t){if(Ue()!==s)return;const i={category:"console",data:{arguments:t.args,logger:"console"},level:Sd(t.level),message:qc(t.args," ")};if(t.level==="assert")if(t.args[0]===!1)i.message=`Assertion failed: ${qc(t.args.slice(1)," ")||"console.assert"}`,i.data.arguments=t.args.slice(1);else return;ps(i,{input:t.args,level:t.level})}}function G1(s){return function(t){if(Ue()!==s)return;const{startTimestamp:i,endTimestamp:r}=t,o=t.xhr[Ki];if(!i||!r||!o)return;const{method:n,url:M,status_code:c,body:l}=o,N={method:n,url:M,status_code:c},u={xhr:t.xhr,input:l,startTimestamp:i,endTimestamp:r},L={category:"xhr",data:N,type:"http",level:A4(c)};s.emit("beforeOutgoingRequestBreadcrumb",L,u),ps(L,u)}}function H1(s){return function(t){if(Ue()!==s)return;const{startTimestamp:i,endTimestamp:r}=t;if(r&&!(t.fetchData.url.match(/sentry_key/)&&t.fetchData.method==="POST"))if(t.error){const o={data:t.error,input:t.args,startTimestamp:i,endTimestamp:r},n={category:"fetch",data:t.fetchData,level:"error",type:"http"};s.emit("beforeOutgoingRequestBreadcrumb",n,o),ps(n,o)}else{const o=t.response,n={...t.fetchData,status_code:o==null?void 0:o.status},M={input:t.args,response:o,startTimestamp:i,endTimestamp:r},c={category:"fetch",data:n,type:"http",level:A4(n.status_code)};s.emit("beforeOutgoingRequestBreadcrumb",c,M),ps(c,M)}}}function V1(s){return function(t){if(Ue()!==s)return;let i=t.from,r=t.to;const o=wn(de.location.href);let n=i?wn(i):void 0;const M=wn(r);n!=null&&n.path||(n=o),o.protocol===M.protocol&&o.host===M.host&&(r=M.relative),o.protocol===n.protocol&&o.host===n.host&&(i=n.relative),ps({category:"navigation",data:{from:i,to:r}})}}function Z1(s){return!!s&&!!s.target}const X1="EventTarget,Window,Node,ApplicationCache,AudioTrackList,BroadcastChannel,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(","),K1="BrowserApiErrors",q1=((s={})=>{const e={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...s};return{name:K1,setupOnce(){e.setTimeout&&qe(de,"setTimeout",Pu),e.setInterval&&qe(de,"setInterval",Pu),e.requestAnimationFrame&&qe(de,"requestAnimationFrame",th),e.XMLHttpRequest&&"XMLHttpRequest"in de&&qe(XMLHttpRequest.prototype,"send",sh);const t=e.eventTarget;t&&(Array.isArray(t)?t:X1).forEach(r=>ih(r,e))}}}),eh=q1;function Pu(s){return function(...e){const t=e[0];return e[0]=Ii(t,{mechanism:{handled:!1,type:`auto.browser.browserapierrors.${Ms(s)}`}}),s.apply(this,e)}}function th(s){return function(e){return s.apply(this,[Ii(e,{mechanism:{data:{handler:Ms(s)},handled:!1,type:"auto.browser.browserapierrors.requestAnimationFrame"}})])}}function sh(s){return function(...e){const t=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(r=>{r in t&&typeof t[r]=="function"&&qe(t,r,function(o){const n={mechanism:{data:{handler:Ms(o)},handled:!1,type:`auto.browser.browserapierrors.xhr.${r}`}},M=lM(o);return M&&(n.mechanism.data.handler=Ms(M)),Ii(o,n)})}),s.apply(this,e)}}function ih(s,e){var r,o;const i=(r=de[s])==null?void 0:r.prototype;(o=i==null?void 0:i.hasOwnProperty)!=null&&o.call(i,"addEventListener")&&(qe(i,"addEventListener",function(n){return function(M,c,l){try{rh(c)&&(c.handleEvent=Ii(c.handleEvent,{mechanism:{data:{handler:Ms(c),target:s},handled:!1,type:"auto.browser.browserapierrors.handleEvent"}}))}catch{}return e.unregisterOriginalCallbacks&&oh(this,M,c),n.apply(this,[M,Ii(c,{mechanism:{data:{handler:Ms(c),target:s},handled:!1,type:"auto.browser.browserapierrors.addEventListener"}}),l])}}),qe(i,"removeEventListener",function(n){return function(M,c,l){try{const N=c.__sentry_wrapped__;N&&n.call(this,M,N,l)}catch{}return n.call(this,M,c,l)}}))}function rh(s){return typeof s.handleEvent=="function"}function oh(s,e,t){s&&typeof s=="object"&&"removeEventListener"in s&&typeof s.removeEventListener=="function"&&s.removeEventListener(e,t)}const nh=(s={})=>{const e=s.lifecycle??"route";return{name:"BrowserSession",setupOnce(){if(typeof de.document>"u"){Ro&&F.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.");return}zu({ignoreDuration:!0}),hn();const t=Es();let i=t.getUser();t.addScopeListener(r=>{const o=r.getUser();((i==null?void 0:i.id)!==(o==null?void 0:o.id)||(i==null?void 0:i.ip_address)!==(o==null?void 0:o.ip_address))&&(hn(),i=o)}),e==="route"&&O4(({from:r,to:o})=>{r!==o&&(zu({ignoreDuration:!0}),hn())})}}},ah="CultureContext",Mh=(()=>({name:ah,preprocessEvent(s){var t;const e=uh();e&&(s.contexts={...s.contexts,culture:{...e,...(t=s.contexts)==null?void 0:t.culture}})}})),ch=Mh;function uh(){try{const s=de.Intl;if(!s)return;const e=s.DateTimeFormat().resolvedOptions();return{locale:e.locale,timezone:e.timeZone,calendar:e.calendar}}catch{return}}const lh="GlobalHandlers",Nh=((s={})=>{const e={onerror:!0,onunhandledrejection:!0,...s};return{name:lh,setupOnce(){Error.stackTraceLimit=50},setup(t){e.onerror&&(gh(t),Wu("onerror")),e.onunhandledrejection&&(jh(t),Wu("onunhandledrejection"))}}}),Lh=Nh;function gh(s){Wy(e=>{const{stackParser:t,attachStacktrace:i}=_4();if(Ue()!==s||m4())return;const{msg:r,url:o,line:n,column:M,error:c}=e,l=Dh(hM(t,c||r,void 0,i,!1),o,n,M);l.level="error",M4(l,{originalException:c,mechanism:{handled:!1,type:"auto.browser.global_handlers.onerror"}})})}function jh(s){By(e=>{const{stackParser:t,attachStacktrace:i}=_4();if(Ue()!==s||m4())return;const r=yh(e),o=$o(r)?Th(r):hM(t,r,void 0,i,!0);o.level="error",M4(o,{originalException:r,mechanism:{handled:!1,type:"auto.browser.global_handlers.onunhandledrejection"}})})}function yh(s){if($o(s))return s;try{if("reason"in s)return s.reason;if("detail"in s&&"reason"in s.detail)return s.detail.reason}catch{}return s}function Th(s){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(s)}`}]}}}function Dh(s,e,t,i){const r=s.exception=s.exception||{},o=r.values=r.values||[],n=o[0]=o[0]||{},M=n.stacktrace=n.stacktrace||{},c=M.frames=M.frames||[];return c.length===0&&c.push({colno:i,lineno:t,filename:dh(e)??uM(),function:Cs,in_app:!0}),s}function Wu(s){Ro&&F.log(`Global Handler attached: ${s}`)}function _4(){const s=Ue();return(s==null?void 0:s.getOptions())||{stackParser:()=>[],attachStacktrace:!1}}function dh(s){if(!(!Ut(s)||s.length===0))return s.startsWith("data:")?`<${Nd(s,!1)}>`:s}const hh=()=>({name:"HttpContext",preprocessEvent(s){var i;if(!de.navigator&&!de.location&&!de.document)return;const e=Xd(),t={...e.headers,...(i=s.request)==null?void 0:i.headers};s.request={...e,...s.request,headers:t}}}),zh="cause",wh=5,Ih="LinkedErrors",Ch=((s={})=>{const e=s.limit||wh,t=s.key||zh;return{name:Ih,preprocessEvent(i,r,o){const n=o.getOptions();Ed(DM,n.stackParser,t,e,i,r)}}}),ph=Ch;function Ah(){return mh()?(Ro&&pi(()=>{console.error("[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/")}),!0):!1}function mh(){var r;if(typeof de.window>"u")return!1;const s=de;if(s.nw)return!1;const e=s.chrome||s.browser;if(!((r=e==null?void 0:e.runtime)!=null&&r.id))return!1;const t=uM();return!(de===de.top&&/^(?:chrome-extension|moz-extension|ms-browser-extension|safari-web-extension):\/\//.test(t))}function fh(s){return[wd(),Dd(),Pd(),eh(),J1(),Lh(),ph(),I4(),hh(),ch(),nh()]}function Oh(s={}){const e=!s.skipBrowserExtensionCheck&&Ah();let t=s.defaultIntegrations==null?fh():s.defaultIntegrations;const i={...s,enabled:e?!1:s.enabled,stackParser:$y(s.stackParser||$1),integrations:$D({integrations:s.integrations,defaultIntegrations:t}),transport:s.transport||A1};return ud(c1,i)}function Eh(){console.log(` +Url: ${Do(s)}`),!0}return!1}function Id(s,e){return e!=null&&e.length?j4(s).some(t=>Bo(t,e)):!1}function Cd(s,e){if(!(e!=null&&e.length))return!1;const t=s.transaction;return t?Bo(t,e):!1}function pd(s,e){if(!(e!=null&&e.length))return!1;const t=Do(s);return t?Bo(t,e):!1}function Ad(s,e){if(!(e!=null&&e.length))return!0;const t=Do(s);return t?Bo(t,e):!0}function md(s=[]){for(let e=s.length-1;e>=0;e--){const t=s[e];if(t&&t.filename!==""&&t.filename!=="[native code]")return t.filename||null}return null}function Do(s){var e,t;try{const i=[...((e=s.exception)==null?void 0:e.values)??[]].reverse().find(o=>{var n,M,c;return((n=o.mechanism)==null?void 0:n.parent_id)===void 0&&((c=(M=o.stacktrace)==null?void 0:M.frames)==null?void 0:c.length)}),r=(t=i==null?void 0:i.stacktrace)==null?void 0:t.frames;return r?md(r):null}catch{return X&&F.error(`Cannot extract url for event ${hs(s)}`),null}}function fd(s){var e,t;return(t=(e=s.exception)==null?void 0:e.values)!=null&&t.length?!s.message&&!s.exception.values.some(i=>i.stacktrace||i.type&&i.type!=="Error"||i.value):!1}function Od(s,e,t,i,r,o){var M;if(!((M=r.exception)!=null&&M.values)||!o||!cs(o.originalException,Error))return;const n=r.exception.values.length>0?r.exception.values[r.exception.values.length-1]:void 0;n&&(r.exception.values=ua(s,e,i,o.originalException,t,r.exception.values,n,0))}function ua(s,e,t,i,r,o,n,M){if(o.length>=t+1)return o;let c=[...o];if(cs(i[r],Error)){ku(n,M,i);const l=s(e,i[r]),N=c.length;vu(l,r,N,M),c=ua(s,e,t,i[r],r,[l,...c],l,N)}return h4(i)&&i.errors.forEach((l,N)=>{if(cs(l,Error)){ku(n,M,i);const u=s(e,l),L=c.length;vu(u,`errors[${N}]`,L,M),c=ua(s,e,t,l,r,[u,...c],u,L)}}),c}function h4(s){return Array.isArray(s.errors)}function ku(s,e,t){s.mechanism={handled:!0,type:"auto.core.linked_errors",...h4(t)&&{is_exception_group:!0},...s.mechanism,exception_id:e}}function vu(s,e,t,i){s.mechanism={handled:!0,...s.mechanism,type:"chained",source:e,exception_id:t,parent_id:i}}function Ed(s){const e="console";fs(e,s),Os(e,_d)}function _d(){"console"in ae&&xy.forEach(function(s){s in ae.console&&qe(ae.console,s,function(e){return yo[s]=e,function(...t){gt("console",{args:t,level:s});const r=yo[s];r==null||r.apply(ae.console,t)}})})}function xd(s){return s==="warn"?"warning":["fatal","error","warning","log","info","debug"].includes(s)?s:"log"}const Sd="Dedupe",kd=(()=>{let s;return{name:Sd,processEvent(e){if(e.type)return e;try{if(vd(e,s))return X&&F.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return s=e}}}),z4=kd;function vd(s,e){return e?!!(Yd(s,e)||Qd(s,e)):!1}function Yd(s,e){const t=s.message,i=e.message;return!(!t&&!i||t&&!i||!t&&i||t!==i||!I4(s,e)||!w4(s,e))}function Qd(s,e){const t=Yu(e),i=Yu(s);return!(!t||!i||t.type!==i.type||t.value!==i.value||!I4(s,e)||!w4(s,e))}function w4(s,e){let t=Gc(s),i=Gc(e);if(!t&&!i)return!0;if(t&&!i||!t&&i||(t=t,i=i,i.length!==t.length))return!1;for(let r=0;r({name:bd,setup(s){s.on("spanStart",e=>{const t=At().getScopeData(),i=Es().getScopeData(),r=t.conversationId||i.conversationId;r&&e.setAttribute(IT,r)})}})),$d=Ud;function C4(s){if(s!==void 0)return s>=400&&s<500?"warning":s>=500?"error":void 0}const Nr=ae;function Pd(){return"history"in Nr&&!!Nr.history}function Wd(){if(!("fetch"in Nr))return!1;try{return new Headers,new Request("data:,"),new Response,!0}catch{return!1}}function la(s){return s&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(s.toString())}function Jd(){var t;if(typeof EdgeRuntime=="string")return!0;if(!Wd())return!1;if(la(Nr.fetch))return!0;let s=!1;const e=Nr.document;if(e&&typeof e.createElement=="function")try{const i=e.createElement("iframe");i.hidden=!0,e.head.appendChild(i),(t=i.contentWindow)!=null&&t.fetch&&(s=la(i.contentWindow.fetch)),e.head.removeChild(i)}catch(i){X&&F.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",i)}return s}function Bd(s,e){const t="fetch";fs(t,s),Os(t,()=>Rd(void 0,e))}function Rd(s,e=!1){e&&!Jd()||qe(ae,"fetch",function(t){return function(...i){const r=new Error,{method:o,url:n}=Fd(i),M={args:i,fetchData:{method:o,url:n},startTimestamp:$t()*1e3,virtualError:r,headers:Gd(i)};return gt("fetch",{...M}),t.apply(ae,i).then(async c=>(gt("fetch",{...M,endTimestamp:$t()*1e3,response:c}),c),c=>{gt("fetch",{...M,endTimestamp:$t()*1e3,error:c}),Uo(c)&&c.stack===void 0&&(c.stack=r.stack,us(c,"framesToPop",1));const l=Ue(),N=(l==null?void 0:l.getOptions().enhanceFetchErrorMessages)??"always";if(N!==!1&&c instanceof TypeError&&(c.message==="Failed to fetch"||c.message==="Load failed"||c.message==="NetworkError when attempting to fetch resource."))try{const g=new URL(M.fetchData.url).host;N==="always"?c.message=`${c.message} (${g})`:us(c,"__sentry_fetch_url_host__",g)}catch{}throw c})}})}function Mo(s,e){return!!s&&typeof s=="object"&&!!s[e]}function Qu(s){return typeof s=="string"?s:s?Mo(s,"url")?s.url:s.toString?s.toString():"":""}function Fd(s){if(s.length===0)return{method:"GET",url:""};if(s.length===2){const[t,i]=s;return{url:Qu(t),method:Mo(i,"method")?String(i.method).toUpperCase():PN(t)&&Mo(t,"method")?String(t.method).toUpperCase():"GET"}}const e=s[0];return{url:Qu(e),method:Mo(e,"method")?String(e.method).toUpperCase():"GET"}}function Gd(s){const[e,t]=s;try{if(typeof t=="object"&&t!==null&&"headers"in t&&t.headers)return new Headers(t.headers);if(PN(e))return new Headers(e.headers)}catch{}}function Hd(){return"npm"}const de=ae;let Na=0;function p4(){return Na>0}function Vd(){Na++,setTimeout(()=>{Na--})}function Ii(s,e={}){function t(r){return typeof r=="function"}if(!t(s))return s;try{const r=s.__sentry_wrapped__;if(r)return typeof r=="function"?r:s;if(uM(s))return s}catch{return s}const i=function(...r){try{const o=r.map(n=>Ii(n,e));return s.apply(this,o)}catch(o){throw Vd(),yT(n=>{n.addEventProcessor(M=>(e.mechanism&&(sa(M,void 0),hi(M,e.mechanism)),M.extra={...M.extra,arguments:r},M)),xD(o)}),o}};try{for(const r in s)Object.prototype.hasOwnProperty.call(s,r)&&(i[r]=s[r])}catch{}JN(i,s),us(s,"__sentry_wrapped__",i);try{Object.getOwnPropertyDescriptor(i,"name").configurable&&Object.defineProperty(i,"name",{get(){return s.name}})}catch{}return i}function Zd(){const s=cM(),{referrer:e}=de.document||{},{userAgent:t}=de.navigator||{},i={...e&&{Referer:e},...t&&{"User-Agent":t}};return{url:s,headers:i}}function TM(s,e){const t=DM(s,e),i={type:t1(e),value:s1(e)};return t.length&&(i.stacktrace={frames:t}),i.type===void 0&&i.value===""&&(i.value="Unrecoverable error caught"),i}function Xd(s,e,t,i){const r=Ue(),o=r==null?void 0:r.getOptions().normalizeDepth,n=a1(e),M={__serialized__:s4(e,o)};if(n)return{exception:{values:[TM(s,n)]},extra:M};const c={exception:{values:[{type:Po(e)?e.constructor.name:i?"UnhandledRejection":"Error",value:o1(e,{isUnhandledRejection:i})}]},extra:M};if(t){const l=DM(s,t);l.length&&(c.exception.values[0].stacktrace={frames:l})}return c}function In(s,e){return{exception:{values:[TM(s,e)]}}}function DM(s,e){const t=e.stacktrace||e.stack||"",i=qd(e),r=e1(e);try{return s(t,i,r)}catch{}return[]}const Kd=/Minified React error #\d+;/i;function qd(s){return s&&Kd.test(s.message)?1:0}function e1(s){return typeof s.framesToPop=="number"?s.framesToPop:0}function A4(s){return typeof WebAssembly<"u"&&typeof WebAssembly.Exception<"u"?s instanceof WebAssembly.Exception:!1}function t1(s){const e=s==null?void 0:s.name;return!e&&A4(s)?s.message&&Array.isArray(s.message)&&s.message.length==2?s.message[0]:"WebAssembly.Exception":e}function s1(s){const e=s==null?void 0:s.message;return A4(s)?Array.isArray(s.message)&&s.message.length==2?s.message[1]:"wasm exception":e?e.error&&typeof e.error.message=="string"?Eu(e.error):Eu(s):"No error message"}function i1(s,e,t,i){const r=(t==null?void 0:t.syntheticException)||void 0,o=dM(s,e,r,i);return hi(o),o.level="error",t!=null&&t.event_id&&(o.event_id=t.event_id),Ar(o)}function r1(s,e,t="info",i,r){const o=(i==null?void 0:i.syntheticException)||void 0,n=La(s,e,o,r);return n.level=t,i!=null&&i.event_id&&(n.event_id=i.event_id),Ar(n)}function dM(s,e,t,i,r){let o;if(UN(e)&&e.error)return In(s,e.error);if(Vc(e)||Ry(e)){const n=e;if("stack"in e)o=In(s,e);else{const M=n.name||(Vc(n)?"DOMError":"DOMException"),c=n.message?`${M}: ${n.message}`:M;o=La(s,c,t,i),sa(o,c)}return"code"in n&&(o.tags={...o.tags,"DOMException.code":`${n.code}`}),o}return Uo(e)?In(s,e):ur(e)||Po(e)?(o=Xd(s,e,t,r),hi(o,{synthetic:!0}),o):(o=La(s,e,t,i),sa(o,`${e}`),hi(o,{synthetic:!0}),o)}function La(s,e,t,i){const r={};if(i&&t){const o=DM(s,t);o.length&&(r.exception={values:[{value:e,stacktrace:{frames:o}}]}),hi(r,{synthetic:!0})}if(aM(e)){const{__sentry_template_string__:o,__sentry_template_values__:n}=e;return r.logentry={message:o,params:n},r}return r.message=e,r}function o1(s,{isUnhandledRejection:e}){const t=Ky(s),i=e?"promise rejection":"exception";return UN(s)?`Event \`ErrorEvent\` captured as ${i} with message \`${s.message}\``:Po(s)?`Event \`${n1(s)}\` (type=${s.type}) captured as ${i}`:`Object captured as ${i} with keys: ${t}`}function n1(s){try{const e=Object.getPrototypeOf(s);return e?e.constructor.name:void 0}catch{}}function a1(s){return Object.values(s).find(e=>e instanceof Error)}class M1 extends id{constructor(e){var N;const t=c1(e),i=de.SENTRY_SDK_SOURCE||Hd();Ld(t,"browser",["browser"],i),(N=t._metadata)!=null&&N.sdk&&(t._metadata.sdk.settings={infer_ip:t.sendDefaultPii?"auto":"never",...t._metadata.sdk.settings}),super(t);const{sendDefaultPii:r,sendClientReports:o,enableLogs:n,_experiments:M,enableMetrics:c}=this._options,l=c??(M==null?void 0:M.enableMetrics)??!0;de.document&&(o||n||l)&&de.document.addEventListener("visibilitychange",()=>{de.document.visibilityState==="hidden"&&(o&&this._flushOutcomes(),n&&Ma(this),l&&l4(this))}),r&&this.on("beforeSendSession",Nd)}eventFromException(e,t){return i1(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e,t="info",i){return r1(this._options.stackParser,e,t,i,this._options.attachStacktrace)}_prepareEvent(e,t,i,r){return e.platform=e.platform||"javascript",super._prepareEvent(e,t,i,r)}}function c1(s){var e;return{release:typeof __SENTRY_RELEASE__=="string"?__SENTRY_RELEASE__:(e=de.SENTRY_RELEASE)==null?void 0:e.id,sendClientReports:!0,parentSpanIsAlwaysRootSpan:!0,...s}}const u1=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,Pe=ae,l1=1e3;let bu,ga,ja;function N1(s){fs("dom",s),Os("dom",L1)}function L1(){if(!Pe.document)return;const s=gt.bind(null,"dom"),e=Uu(s,!0);Pe.document.addEventListener("click",e,!1),Pe.document.addEventListener("keypress",e,!1),["EventTarget","Node"].forEach(t=>{var o,n;const r=(o=Pe[t])==null?void 0:o.prototype;(n=r==null?void 0:r.hasOwnProperty)!=null&&n.call(r,"addEventListener")&&(qe(r,"addEventListener",function(M){return function(c,l,N){if(c==="click"||c=="keypress")try{const u=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},L=u[c]=u[c]||{refCount:0};if(!L.handler){const g=Uu(s);L.handler=g,M.call(this,c,g,N)}L.refCount++}catch{}return M.call(this,c,l,N)}}),qe(r,"removeEventListener",function(M){return function(c,l,N){if(c==="click"||c=="keypress")try{const u=this.__sentry_instrumentation_handlers__||{},L=u[c];L&&(L.refCount--,L.refCount<=0&&(M.call(this,c,L.handler,N),L.handler=void 0,delete u[c]),Object.keys(u).length===0&&delete this.__sentry_instrumentation_handlers__)}catch{}return M.call(this,c,l,N)}}))})}function g1(s){if(s.type!==ga)return!1;try{if(!s.target||s.target._sentryId!==ja)return!1}catch{}return!0}function j1(s,e){return s!=="keypress"?!1:e!=null&&e.tagName?!(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable):!0}function Uu(s,e=!1){return t=>{if(!t||t._sentryCaptured)return;const i=y1(t);if(j1(t.type,i))return;us(t,"_sentryCaptured",!0),i&&!i._sentryId&&us(i,"_sentryId",at());const r=t.type==="keypress"?"input":t.type;g1(t)||(s({event:t,name:r,global:e}),ga=t.type,ja=i?i._sentryId:void 0),clearTimeout(bu),bu=Pe.setTimeout(()=>{ja=void 0,ga=void 0},l1)}}function y1(s){try{return s.target}catch{return null}}let Br;function m4(s){const e="history";fs(e,s),Os(e,T1)}function T1(){if(Pe.addEventListener("popstate",()=>{const e=Pe.location.href,t=Br;if(Br=e,t===e)return;gt("history",{from:t,to:e})}),!Pd())return;function s(e){return function(...t){const i=t.length>2?t[2]:void 0;if(i){const r=Br,o=D1(String(i));if(Br=o,r===o)return e.apply(this,t);gt("history",{from:r,to:o})}return e.apply(this,t)}}qe(Pe.history,"pushState",s),qe(Pe.history,"replaceState",s)}function D1(s){try{return new URL(s,Pe.location.origin).toString()}catch{return s}}const co={};function d1(s){const e=co[s];if(e)return e;let t=Pe[s];if(la(t))return co[s]=t.bind(Pe);const i=Pe.document;if(i&&typeof i.createElement=="function")try{const r=i.createElement("iframe");r.hidden=!0,i.head.appendChild(r);const o=r.contentWindow;o!=null&&o[s]&&(t=o[s]),i.head.removeChild(r)}catch(r){u1&&F.warn(`Could not create sandbox iframe for ${s} check, bailing to window.${s}: `,r)}return t&&(co[s]=t.bind(Pe))}function h1(s){co[s]=void 0}const Ki="__sentry_xhr_v3__";function z1(s){fs("xhr",s),Os("xhr",w1)}function w1(){if(!Pe.XMLHttpRequest)return;const s=XMLHttpRequest.prototype;s.open=new Proxy(s.open,{apply(e,t,i){const r=new Error,o=$t()*1e3,n=Ut(i[0])?i[0].toUpperCase():void 0,M=I1(i[1]);if(!n||!M)return e.apply(t,i);t[Ki]={method:n,url:M,request_headers:{}},n==="POST"&&M.match(/sentry_key/)&&(t.__sentry_own_request__=!0);const c=()=>{const l=t[Ki];if(l&&t.readyState===4){try{l.status_code=t.status}catch{}const N={endTimestamp:$t()*1e3,startTimestamp:o,xhr:t,virtualError:r};gt("xhr",N)}};return"onreadystatechange"in t&&typeof t.onreadystatechange=="function"?t.onreadystatechange=new Proxy(t.onreadystatechange,{apply(l,N,u){return c(),l.apply(N,u)}}):t.addEventListener("readystatechange",c),t.setRequestHeader=new Proxy(t.setRequestHeader,{apply(l,N,u){const[L,g]=u,j=N[Ki];return j&&Ut(L)&&Ut(g)&&(j.request_headers[L.toLowerCase()]=g),l.apply(N,u)}}),e.apply(t,i)}}),s.send=new Proxy(s.send,{apply(e,t,i){const r=t[Ki];if(!r)return e.apply(t,i);i[0]!==void 0&&(r.body=i[0]);const o={startTimestamp:$t()*1e3,xhr:t};return gt("xhr",o),e.apply(t,i)}})}function I1(s){if(Ut(s))return s;try{return s.toString()}catch{}}const C1=40;function p1(s,e=d1("fetch")){let t=0,i=0;async function r(o){const n=o.body.length;t+=n,i++;const M={body:o.body,method:"POST",referrerPolicy:"strict-origin",headers:s.headers,keepalive:t<=6e4&&i<15,...s.fetchOptions};try{const c=await e(s.url,M);return{statusCode:c.status,headers:{"x-sentry-rate-limits":c.headers.get("X-Sentry-Rate-Limits"),"retry-after":c.headers.get("Retry-After")}}}catch(c){throw h1("fetch"),c}finally{t-=n,i--}}return KD(s,r,yM(s.bufferSize||C1))}const Ro=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,A1=30,m1=50;function ya(s,e,t,i){const r={filename:s,function:e===""?Cs:e,in_app:!0};return t!==void 0&&(r.lineno=t),i!==void 0&&(r.colno=i),r}const f1=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,O1=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,E1=/\((\S*)(?::(\d+))(?::(\d+))\)/,_1=/at (.+?) ?\(data:(.+?),/,x1=s=>{var r;const e=s.match(_1);if(e)return{filename:``,function:e[1]};const t=f1.exec(s);if(t){const[,o,n,M]=t;return ya(o,Cs,+n,+M)}const i=O1.exec(s);if(i){if(((r=i[2])==null?void 0:r.indexOf("eval"))===0){const c=E1.exec(i[2]);c&&(i[2]=c[1],i[3]=c[2],i[4]=c[3])}const[n,M]=f4(i[1]||Cs,i[2]);return ya(M,n,i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}},S1=[A1,x1],k1=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,v1=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Y1=s=>{const e=k1.exec(s);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const o=v1.exec(e[3]);o&&(e[1]=e[1]||"eval",e[3]=o[1],e[4]=o[2],e[5]="")}let i=e[3],r=e[1]||Cs;return[r,i]=f4(r,i),ya(i,r,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}},Q1=[m1,Y1],b1=[S1,Q1],U1=YN(...b1),f4=(s,e)=>{const t=s.indexOf("safari-extension")!==-1,i=s.indexOf("safari-web-extension")!==-1;return t||i?[s.indexOf("@")!==-1?s.split("@")[0]:Cs,t?`safari-extension:${e}`:`safari-web-extension:${e}`]:[s,e]},Rr=1024,$1="Breadcrumbs",P1=((s={})=>{const e={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...s};return{name:$1,setup(t){e.console&&Ed(R1(t)),e.dom&&N1(B1(t,e.dom)),e.xhr&&z1(F1(t)),e.fetch&&Bd(G1(t)),e.history&&m4(H1(t)),e.sentry&&t.on("beforeSendEvent",J1(t))}}}),W1=P1;function J1(s){return function(t){Ue()===s&&ps({category:`sentry.${t.type==="transaction"?"transaction":"event"}`,event_id:t.event_id,level:t.level,message:hs(t)},{event:t})}}function B1(s,e){return function(i){if(Ue()!==s)return;let r,o,n=typeof e=="object"?e.serializeAttribute:void 0,M=typeof e=="object"&&typeof e.maxStringLength=="number"?e.maxStringLength:void 0;M&&M>Rr&&(Ro&&F.warn(`\`dom.maxStringLength\` cannot exceed ${Rr}, but a value of ${M} was configured. Sentry will use ${Rr} instead.`),M=Rr),typeof n=="string"&&(n=[n]);try{const l=i.event,N=V1(l)?l.target:l;r=WN(N,{keyAttrs:n,maxStringLength:M}),o=Xy(N)}catch{r=""}if(r.length===0)return;const c={category:`ui.${i.name}`,message:r};o&&(c.data={"ui.component_name":o}),ps(c,{event:i.event,name:i.name,global:i.global})}}function R1(s){return function(t){if(Ue()!==s)return;const i={category:"console",data:{arguments:t.args,logger:"console"},level:xd(t.level),message:Kc(t.args," ")};if(t.level==="assert")if(t.args[0]===!1)i.message=`Assertion failed: ${Kc(t.args.slice(1)," ")||"console.assert"}`,i.data.arguments=t.args.slice(1);else return;ps(i,{input:t.args,level:t.level})}}function F1(s){return function(t){if(Ue()!==s)return;const{startTimestamp:i,endTimestamp:r}=t,o=t.xhr[Ki];if(!i||!r||!o)return;const{method:n,url:M,status_code:c,body:l}=o,N={method:n,url:M,status_code:c},u={xhr:t.xhr,input:l,startTimestamp:i,endTimestamp:r},L={category:"xhr",data:N,type:"http",level:C4(c)};s.emit("beforeOutgoingRequestBreadcrumb",L,u),ps(L,u)}}function G1(s){return function(t){if(Ue()!==s)return;const{startTimestamp:i,endTimestamp:r}=t;if(r&&!(t.fetchData.url.match(/sentry_key/)&&t.fetchData.method==="POST"))if(t.error){const o={data:t.error,input:t.args,startTimestamp:i,endTimestamp:r},n={category:"fetch",data:t.fetchData,level:"error",type:"http"};s.emit("beforeOutgoingRequestBreadcrumb",n,o),ps(n,o)}else{const o=t.response,n={...t.fetchData,status_code:o==null?void 0:o.status},M={input:t.args,response:o,startTimestamp:i,endTimestamp:r},c={category:"fetch",data:n,type:"http",level:C4(n.status_code)};s.emit("beforeOutgoingRequestBreadcrumb",c,M),ps(c,M)}}}function H1(s){return function(t){if(Ue()!==s)return;let i=t.from,r=t.to;const o=wn(de.location.href);let n=i?wn(i):void 0;const M=wn(r);n!=null&&n.path||(n=o),o.protocol===M.protocol&&o.host===M.host&&(r=M.relative),o.protocol===n.protocol&&o.host===n.host&&(i=n.relative),ps({category:"navigation",data:{from:i,to:r}})}}function V1(s){return!!s&&!!s.target}const Z1="EventTarget,Window,Node,ApplicationCache,AudioTrackList,BroadcastChannel,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(","),X1="BrowserApiErrors",K1=((s={})=>{const e={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...s};return{name:X1,setupOnce(){e.setTimeout&&qe(de,"setTimeout",$u),e.setInterval&&qe(de,"setInterval",$u),e.requestAnimationFrame&&qe(de,"requestAnimationFrame",eh),e.XMLHttpRequest&&"XMLHttpRequest"in de&&qe(XMLHttpRequest.prototype,"send",th);const t=e.eventTarget;t&&(Array.isArray(t)?t:Z1).forEach(r=>sh(r,e))}}}),q1=K1;function $u(s){return function(...e){const t=e[0];return e[0]=Ii(t,{mechanism:{handled:!1,type:`auto.browser.browserapierrors.${Ms(s)}`}}),s.apply(this,e)}}function eh(s){return function(e){return s.apply(this,[Ii(e,{mechanism:{data:{handler:Ms(s)},handled:!1,type:"auto.browser.browserapierrors.requestAnimationFrame"}})])}}function th(s){return function(...e){const t=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(r=>{r in t&&typeof t[r]=="function"&&qe(t,r,function(o){const n={mechanism:{data:{handler:Ms(o)},handled:!1,type:`auto.browser.browserapierrors.xhr.${r}`}},M=uM(o);return M&&(n.mechanism.data.handler=Ms(M)),Ii(o,n)})}),s.apply(this,e)}}function sh(s,e){var r,o;const i=(r=de[s])==null?void 0:r.prototype;(o=i==null?void 0:i.hasOwnProperty)!=null&&o.call(i,"addEventListener")&&(qe(i,"addEventListener",function(n){return function(M,c,l){try{ih(c)&&(c.handleEvent=Ii(c.handleEvent,{mechanism:{data:{handler:Ms(c),target:s},handled:!1,type:"auto.browser.browserapierrors.handleEvent"}}))}catch{}return e.unregisterOriginalCallbacks&&rh(this,M,c),n.apply(this,[M,Ii(c,{mechanism:{data:{handler:Ms(c),target:s},handled:!1,type:"auto.browser.browserapierrors.addEventListener"}}),l])}}),qe(i,"removeEventListener",function(n){return function(M,c,l){try{const N=c.__sentry_wrapped__;N&&n.call(this,M,N,l)}catch{}return n.call(this,M,c,l)}}))}function ih(s){return typeof s.handleEvent=="function"}function rh(s,e,t){s&&typeof s=="object"&&"removeEventListener"in s&&typeof s.removeEventListener=="function"&&s.removeEventListener(e,t)}const oh=(s={})=>{const e=s.lifecycle??"route";return{name:"BrowserSession",setupOnce(){if(typeof de.document>"u"){Ro&&F.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.");return}hu({ignoreDuration:!0}),hn();const t=Es();let i=t.getUser();t.addScopeListener(r=>{const o=r.getUser();((i==null?void 0:i.id)!==(o==null?void 0:o.id)||(i==null?void 0:i.ip_address)!==(o==null?void 0:o.ip_address))&&(hn(),i=o)}),e==="route"&&m4(({from:r,to:o})=>{r!==o&&(hu({ignoreDuration:!0}),hn())})}}},nh="CultureContext",ah=(()=>({name:nh,preprocessEvent(s){var t;const e=ch();e&&(s.contexts={...s.contexts,culture:{...e,...(t=s.contexts)==null?void 0:t.culture}})}})),Mh=ah;function ch(){try{const s=de.Intl;if(!s)return;const e=s.DateTimeFormat().resolvedOptions();return{locale:e.locale,timezone:e.timeZone,calendar:e.calendar}}catch{return}}const uh="GlobalHandlers",lh=((s={})=>{const e={onerror:!0,onunhandledrejection:!0,...s};return{name:uh,setupOnce(){Error.stackTraceLimit=50},setup(t){e.onerror&&(Lh(t),Pu("onerror")),e.onunhandledrejection&&(gh(t),Pu("onunhandledrejection"))}}}),Nh=lh;function Lh(s){Py(e=>{const{stackParser:t,attachStacktrace:i}=O4();if(Ue()!==s||p4())return;const{msg:r,url:o,line:n,column:M,error:c}=e,l=Th(dM(t,c||r,void 0,i,!1),o,n,M);l.level="error",n4(l,{originalException:c,mechanism:{handled:!1,type:"auto.browser.global_handlers.onerror"}})})}function gh(s){Jy(e=>{const{stackParser:t,attachStacktrace:i}=O4();if(Ue()!==s||p4())return;const r=jh(e),o=$o(r)?yh(r):dM(t,r,void 0,i,!0);o.level="error",n4(o,{originalException:r,mechanism:{handled:!1,type:"auto.browser.global_handlers.onunhandledrejection"}})})}function jh(s){if($o(s))return s;try{if("reason"in s)return s.reason;if("detail"in s&&"reason"in s.detail)return s.detail.reason}catch{}return s}function yh(s){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(s)}`}]}}}function Th(s,e,t,i){const r=s.exception=s.exception||{},o=r.values=r.values||[],n=o[0]=o[0]||{},M=n.stacktrace=n.stacktrace||{},c=M.frames=M.frames||[];return c.length===0&&c.push({colno:i,lineno:t,filename:Dh(e)??cM(),function:Cs,in_app:!0}),s}function Pu(s){Ro&&F.log(`Global Handler attached: ${s}`)}function O4(){const s=Ue();return(s==null?void 0:s.getOptions())||{stackParser:()=>[],attachStacktrace:!1}}function Dh(s){if(!(!Ut(s)||s.length===0))return s.startsWith("data:")?`<${ld(s,!1)}>`:s}const dh=()=>({name:"HttpContext",preprocessEvent(s){var i;if(!de.navigator&&!de.location&&!de.document)return;const e=Zd(),t={...e.headers,...(i=s.request)==null?void 0:i.headers};s.request={...e,...s.request,headers:t}}}),hh="cause",zh=5,wh="LinkedErrors",Ih=((s={})=>{const e=s.limit||zh,t=s.key||hh;return{name:wh,preprocessEvent(i,r,o){const n=o.getOptions();Od(TM,n.stackParser,t,e,i,r)}}}),Ch=Ih;function ph(){return Ah()?(Ro&&pi(()=>{console.error("[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/")}),!0):!1}function Ah(){var r;if(typeof de.window>"u")return!1;const s=de;if(s.nw)return!1;const e=s.chrome||s.browser;if(!((r=e==null?void 0:e.runtime)!=null&&r.id))return!1;const t=cM();return!(de===de.top&&/^(?:chrome-extension|moz-extension|ms-browser-extension|safari-web-extension):\/\//.test(t))}function mh(s){return[zd(),Td(),$d(),q1(),W1(),Nh(),Ch(),z4(),dh(),Mh(),oh()]}function fh(s={}){const e=!s.skipBrowserExtensionCheck&&ph();let t=s.defaultIntegrations==null?mh():s.defaultIntegrations;const i={...s,enabled:e?!1:s.enabled,stackParser:Uy(s.stackParser||U1),integrations:UD({integrations:s.integrations,defaultIntegrations:t}),transport:s.transport||p1};return cd(M1,i)}function Oh(){console.log(` ██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗ ██║██╔═══██╗██╔══██╗██╔══██╗██╔═══██╗██║ ██╔╝██╔════╝██╔══██╗ ██║██║ ██║██████╔╝██████╔╝██║ ██║█████╔╝ █████╗ ██████╔╝ ██║██║ ██║██╔══██╗██╔══██╗██║ ██║██╔═██╗ ██╔══╝ ██╔══██╗ ██║╚██████╔╝██████╔╝██║ ██║╚██████╔╝██║ ██╗███████╗██║ ██║ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ -`),console.log("Nice to see you here! :) Join our dev community here https://github.com/ioBroker/ioBroker or here https://github.com/iobroker-community-adapters"),console.log("Help us to create open source project with reactJS!"),console.log("See you :)")}function _h(s){const e=s.themeType||"light",t=s.size||300;return a.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{width:t,height:t,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:2}},a.createElement("svg",{viewBox:"0 0 500 500",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%"},a.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"200"}),a.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"133"}),a.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"83"}),a.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"66"}),a.createElement("circle",{strokeWidth:"15",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"15"}),a.createElement("g",null,a.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),a.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),a.createElement("g",{transform:"rotate(60, 250, 250)"},a.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),a.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),a.createElement("g",{transform:"rotate(120, 250, 250)"},a.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),a.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),[0,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345].map(i=>a.createElement("line",{key:i,transform:`rotate(${i}, 250, 250)`,y2:"250",x2:"115",y1:"240",x1:"135",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),a.createElement("animateTransform",{attributeType:"xml",attributeName:"transform",type:"rotate",from:"0 250 250",to:"360 250 250",dur:"10s",additive:"sum",repeatCount:"indefinite"})),a.createElement("path",{d:"M 56.089 160.250 C 55.077 162.588, 46.037 182.950, 36 205.500 C 25.963 228.050, 16.923 248.412, 15.911 250.750 L 14.071 255 28.286 254.976 L 42.500 254.952 47.931 242.226 C 50.918 235.227, 54.366 227.250, 55.592 224.500 L 57.822 219.500 66.383 237.250 L 74.945 255 88.973 255 C 96.688 255, 103 254.841, 103 254.646 C 103 254.452, 100.043 248.071, 96.430 240.466 L 89.859 226.638 91.603 222.771 C 92.563 220.644, 93.660 218.710, 94.043 218.473 C 94.426 218.237, 108.609 246.609, 125.562 281.522 L 156.384 345 166.071 345 C 175.705 345, 175.763 344.985, 176.856 342.250 C 179.911 334.602, 208 260.765, 208 260.383 C 208 260.138, 202.546 260.065, 195.879 260.219 L 183.759 260.500 174.629 285.244 C 169.608 298.853, 165.254 309.990, 164.952 309.994 C 164.651 309.997, 148.901 277.389, 129.952 237.532 C 111.004 197.674, 95.275 165.057, 95 165.049 C 94.725 165.041, 90.685 172.415, 86.022 181.435 C 81.358 190.455, 77.308 197.689, 77.022 197.510 C 76.735 197.331, 72.675 187.920, 68 176.598 C 63.325 165.275, 59.147 156.008, 58.714 156.005 C 58.282 156.002, 57.101 157.912, 56.089 160.250 M 55.294 168.694 C 52.241 175.842, 52.166 176.323, 53.718 178.692 L 55.349 181.182 56.706 178.591 C 57.453 177.166, 58.406 176, 58.825 176 C 59.244 176, 60.777 178.363, 62.232 181.250 C 64.829 186.403, 64.879 186.440, 64.939 183.250 C 64.973 181.463, 65.422 180, 65.937 180 C 66.724 180, 60.176 162.824, 58.920 161.596 C 58.689 161.370, 57.057 164.564, 55.294 168.694 M 91.698 175.542 C 89.205 180.626, 89.099 181.308, 90.410 183.792 L 91.840 186.500 92.926 183.669 C 94.349 179.961, 96.024 180.653, 98.588 186.009 L 100.676 190.370 101.324 187.132 C 101.832 184.592, 101.217 182.395, 98.473 176.947 C 96.549 173.126, 94.849 170, 94.696 170 C 94.542 170, 93.193 172.494, 91.698 175.542 M 157.005 192.607 C 143.168 197.636, 134.999 209.202, 135.001 223.761 C 135.002 232.756, 138.710 240.755, 145.856 247.180 C 152.159 252.848, 158.121 255, 167.518 255 C 173.509 255, 175.684 254.499, 180.811 251.936 C 200.823 241.936, 205.088 216.155, 189.337 200.403 C 181.479 192.546, 166.868 189.022, 157.005 192.607 M 206 223 L 206 255 215.472 255 L 224.944 255 225.222 241.419 L 225.500 227.837 230.500 234.660 C 233.250 238.412, 238.002 244.636, 241.060 248.491 L 246.620 255.500 253.810 255.168 L 261 254.836 261 222.918 L 261 191 251.528 191 L 242.056 191 241.778 204.552 L 241.500 218.104 231.111 204.552 L 220.722 191 213.361 191 L 206 191 206 223 M 285.821 192.331 C 276.229 195.045, 270.010 202.130, 270.004 210.349 C 269.995 221.957, 275.913 226.925, 295.801 232.006 C 300.753 233.271, 302.228 235.609, 299.412 237.730 C 296.739 239.746, 288.369 238.774, 281.563 235.657 L 276.132 233.171 272.469 239.320 C 268.119 246.621, 268.341 247.287, 276.524 251.500 C 281.399 254.010, 283.761 254.556, 290.977 254.842 C 302.365 255.294, 307.420 253.846, 312.603 248.649 C 317.383 243.855, 319.463 236.989, 318.043 230.693 C 316.210 222.562, 311.258 218.610, 297.878 214.599 C 288.025 211.645, 285.443 209.631, 288.538 207.315 C 291.104 205.394, 302.270 205.946, 306.769 208.217 L 310.039 209.866 313.104 203.794 C 316.516 197.035, 316.622 197.304, 309.167 193.844 C 303.663 191.289, 292.140 190.542, 285.821 192.331 M 322 199 L 322 207 330 207 L 338 207 338 231 L 338 255 347.500 255 L 357 255 357 231.044 L 357 207.088 364.250 206.794 L 371.500 206.500 371.792 198.750 L 372.084 191 347.042 191 L 322 191 322 199 M 379 223 L 379 255 401 255 L 423 255 423 247.500 L 423 240 409.500 240 L 396 240 396 235 L 396 230 407.500 230 L 419 230 419 222 L 419 214 407.500 214 L 396 214 396 210.529 L 396 207.058 409.250 206.779 L 422.500 206.500 422.792 198.750 L 423.084 191 401.042 191 L 379 191 379 223 M 433 223 L 433 255 442 255 L 451 255 451 247 L 451 239 454.800 239 C 458.555 239, 458.645 239.092, 462.469 246.937 L 466.339 254.874 476.172 255.187 C 481.580 255.359, 486.003 255.111, 486.002 254.636 C 486.001 254.160, 483.277 249.264, 479.949 243.754 C 473.914 233.765, 473.903 233.732, 475.836 231.619 C 480.222 226.824, 482.359 220.791, 482.431 213 C 482.512 204.192, 480.272 198.822, 475.031 195.260 C 469.795 191.703, 465.527 191.012, 448.750 191.006 L 433 191 433 223 M 448.210 213.250 L 448.500 221.500 455.338 221.500 C 461.319 221.500, 462.417 221.204, 464.088 219.139 C 465.995 216.785, 466.556 212.613, 465.379 209.545 C 464.356 206.879, 459.449 205, 453.509 205 L 447.919 205 448.210 213.250 M 163.169 209.017 C 156.337 210.583, 151.176 218.533, 152.339 225.701 C 154.672 240.077, 175.040 242.355, 180.446 228.844 C 184.978 217.516, 175.176 206.267, 163.169 209.017 M 216.676 271.715 C 216.037 272.750, 188 344.021, 188 344.612 C 188 344.863, 192.811 344.940, 198.691 344.784 L 209.381 344.500 211.894 336.750 L 214.406 329 226.550 329 L 238.694 329 242.097 336.992 L 245.500 344.983 255.250 344.992 C 262.399 344.998, 264.994 344.667, 264.979 343.750 C 264.968 343.063, 258.477 326.525, 250.555 307 L 236.150 271.500 226.656 271.215 C 221.434 271.058, 216.943 271.283, 216.676 271.715 M 273 307 C 273 326.800, 272.887 343.337, 272.750 343.750 C 272.613 344.163, 277.102 344.628, 282.727 344.785 L 292.954 345.069 293.227 327.379 L 293.500 309.689 307 327.336 L 320.500 344.982 328.262 344.991 L 336.025 345 335.762 308.250 L 335.500 271.500 326.750 271.211 L 318 270.922 317.882 286.711 C 317.816 295.395, 317.816 302.837, 317.882 303.250 C 317.947 303.663, 317.808 304, 317.574 304 C 317.340 304, 310.809 296.575, 303.060 287.500 L 288.971 271 280.985 271 L 273 271 273 307 M 223.254 303.048 L 220.078 312 226.539 312 C 230.093 312, 233 311.861, 233 311.691 C 233 311.257, 226.886 294.553, 226.636 294.302 C 226.522 294.189, 225.001 298.125, 223.254 303.048",stroke:"none",fill:s.themeType==="dark"?"#EEE":"#111",fillRule:"evenodd"}))))}function xh(s){const e=s.themeType||"dark",t=s.size||300;return a.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{width:t,height:t,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:2}},a.createElement("svg",{viewBox:"0 0 2000 1728",style:{fillRule:"evenodd",clipRule:"evenodd",fill:"#00af78"}},a.createElement("style",null,` +`),console.log("Nice to see you here! :) Join our dev community here https://github.com/ioBroker/ioBroker or here https://github.com/iobroker-community-adapters"),console.log("Help us to create open source project with reactJS!"),console.log("See you :)")}function Eh(s){const e=s.themeType||"light",t=s.size||300;return a.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{width:t,height:t,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:2}},a.createElement("svg",{viewBox:"0 0 500 500",xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%"},a.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"200"}),a.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"133"}),a.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"83"}),a.createElement("circle",{strokeWidth:"5",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"66"}),a.createElement("circle",{strokeWidth:"15",fill:"none",stroke:"#01BBF5",cx:"250",cy:"250",r:"15"}),a.createElement("g",null,a.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),a.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),a.createElement("g",{transform:"rotate(60, 250, 250)"},a.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),a.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),a.createElement("g",{transform:"rotate(120, 250, 250)"},a.createElement("line",{y2:"185",x2:"250",y1:"240",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"}),a.createElement("line",{y2:"315",x2:"250",y1:"260",x1:"250",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),[0,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345].map(i=>a.createElement("line",{key:i,transform:`rotate(${i}, 250, 250)`,y2:"250",x2:"115",y1:"240",x1:"135",strokeWidth:"5",stroke:"#01BBF5",fill:"none"})),a.createElement("animateTransform",{attributeType:"xml",attributeName:"transform",type:"rotate",from:"0 250 250",to:"360 250 250",dur:"10s",additive:"sum",repeatCount:"indefinite"})),a.createElement("path",{d:"M 56.089 160.250 C 55.077 162.588, 46.037 182.950, 36 205.500 C 25.963 228.050, 16.923 248.412, 15.911 250.750 L 14.071 255 28.286 254.976 L 42.500 254.952 47.931 242.226 C 50.918 235.227, 54.366 227.250, 55.592 224.500 L 57.822 219.500 66.383 237.250 L 74.945 255 88.973 255 C 96.688 255, 103 254.841, 103 254.646 C 103 254.452, 100.043 248.071, 96.430 240.466 L 89.859 226.638 91.603 222.771 C 92.563 220.644, 93.660 218.710, 94.043 218.473 C 94.426 218.237, 108.609 246.609, 125.562 281.522 L 156.384 345 166.071 345 C 175.705 345, 175.763 344.985, 176.856 342.250 C 179.911 334.602, 208 260.765, 208 260.383 C 208 260.138, 202.546 260.065, 195.879 260.219 L 183.759 260.500 174.629 285.244 C 169.608 298.853, 165.254 309.990, 164.952 309.994 C 164.651 309.997, 148.901 277.389, 129.952 237.532 C 111.004 197.674, 95.275 165.057, 95 165.049 C 94.725 165.041, 90.685 172.415, 86.022 181.435 C 81.358 190.455, 77.308 197.689, 77.022 197.510 C 76.735 197.331, 72.675 187.920, 68 176.598 C 63.325 165.275, 59.147 156.008, 58.714 156.005 C 58.282 156.002, 57.101 157.912, 56.089 160.250 M 55.294 168.694 C 52.241 175.842, 52.166 176.323, 53.718 178.692 L 55.349 181.182 56.706 178.591 C 57.453 177.166, 58.406 176, 58.825 176 C 59.244 176, 60.777 178.363, 62.232 181.250 C 64.829 186.403, 64.879 186.440, 64.939 183.250 C 64.973 181.463, 65.422 180, 65.937 180 C 66.724 180, 60.176 162.824, 58.920 161.596 C 58.689 161.370, 57.057 164.564, 55.294 168.694 M 91.698 175.542 C 89.205 180.626, 89.099 181.308, 90.410 183.792 L 91.840 186.500 92.926 183.669 C 94.349 179.961, 96.024 180.653, 98.588 186.009 L 100.676 190.370 101.324 187.132 C 101.832 184.592, 101.217 182.395, 98.473 176.947 C 96.549 173.126, 94.849 170, 94.696 170 C 94.542 170, 93.193 172.494, 91.698 175.542 M 157.005 192.607 C 143.168 197.636, 134.999 209.202, 135.001 223.761 C 135.002 232.756, 138.710 240.755, 145.856 247.180 C 152.159 252.848, 158.121 255, 167.518 255 C 173.509 255, 175.684 254.499, 180.811 251.936 C 200.823 241.936, 205.088 216.155, 189.337 200.403 C 181.479 192.546, 166.868 189.022, 157.005 192.607 M 206 223 L 206 255 215.472 255 L 224.944 255 225.222 241.419 L 225.500 227.837 230.500 234.660 C 233.250 238.412, 238.002 244.636, 241.060 248.491 L 246.620 255.500 253.810 255.168 L 261 254.836 261 222.918 L 261 191 251.528 191 L 242.056 191 241.778 204.552 L 241.500 218.104 231.111 204.552 L 220.722 191 213.361 191 L 206 191 206 223 M 285.821 192.331 C 276.229 195.045, 270.010 202.130, 270.004 210.349 C 269.995 221.957, 275.913 226.925, 295.801 232.006 C 300.753 233.271, 302.228 235.609, 299.412 237.730 C 296.739 239.746, 288.369 238.774, 281.563 235.657 L 276.132 233.171 272.469 239.320 C 268.119 246.621, 268.341 247.287, 276.524 251.500 C 281.399 254.010, 283.761 254.556, 290.977 254.842 C 302.365 255.294, 307.420 253.846, 312.603 248.649 C 317.383 243.855, 319.463 236.989, 318.043 230.693 C 316.210 222.562, 311.258 218.610, 297.878 214.599 C 288.025 211.645, 285.443 209.631, 288.538 207.315 C 291.104 205.394, 302.270 205.946, 306.769 208.217 L 310.039 209.866 313.104 203.794 C 316.516 197.035, 316.622 197.304, 309.167 193.844 C 303.663 191.289, 292.140 190.542, 285.821 192.331 M 322 199 L 322 207 330 207 L 338 207 338 231 L 338 255 347.500 255 L 357 255 357 231.044 L 357 207.088 364.250 206.794 L 371.500 206.500 371.792 198.750 L 372.084 191 347.042 191 L 322 191 322 199 M 379 223 L 379 255 401 255 L 423 255 423 247.500 L 423 240 409.500 240 L 396 240 396 235 L 396 230 407.500 230 L 419 230 419 222 L 419 214 407.500 214 L 396 214 396 210.529 L 396 207.058 409.250 206.779 L 422.500 206.500 422.792 198.750 L 423.084 191 401.042 191 L 379 191 379 223 M 433 223 L 433 255 442 255 L 451 255 451 247 L 451 239 454.800 239 C 458.555 239, 458.645 239.092, 462.469 246.937 L 466.339 254.874 476.172 255.187 C 481.580 255.359, 486.003 255.111, 486.002 254.636 C 486.001 254.160, 483.277 249.264, 479.949 243.754 C 473.914 233.765, 473.903 233.732, 475.836 231.619 C 480.222 226.824, 482.359 220.791, 482.431 213 C 482.512 204.192, 480.272 198.822, 475.031 195.260 C 469.795 191.703, 465.527 191.012, 448.750 191.006 L 433 191 433 223 M 448.210 213.250 L 448.500 221.500 455.338 221.500 C 461.319 221.500, 462.417 221.204, 464.088 219.139 C 465.995 216.785, 466.556 212.613, 465.379 209.545 C 464.356 206.879, 459.449 205, 453.509 205 L 447.919 205 448.210 213.250 M 163.169 209.017 C 156.337 210.583, 151.176 218.533, 152.339 225.701 C 154.672 240.077, 175.040 242.355, 180.446 228.844 C 184.978 217.516, 175.176 206.267, 163.169 209.017 M 216.676 271.715 C 216.037 272.750, 188 344.021, 188 344.612 C 188 344.863, 192.811 344.940, 198.691 344.784 L 209.381 344.500 211.894 336.750 L 214.406 329 226.550 329 L 238.694 329 242.097 336.992 L 245.500 344.983 255.250 344.992 C 262.399 344.998, 264.994 344.667, 264.979 343.750 C 264.968 343.063, 258.477 326.525, 250.555 307 L 236.150 271.500 226.656 271.215 C 221.434 271.058, 216.943 271.283, 216.676 271.715 M 273 307 C 273 326.800, 272.887 343.337, 272.750 343.750 C 272.613 344.163, 277.102 344.628, 282.727 344.785 L 292.954 345.069 293.227 327.379 L 293.500 309.689 307 327.336 L 320.500 344.982 328.262 344.991 L 336.025 345 335.762 308.250 L 335.500 271.500 326.750 271.211 L 318 270.922 317.882 286.711 C 317.816 295.395, 317.816 302.837, 317.882 303.250 C 317.947 303.663, 317.808 304, 317.574 304 C 317.340 304, 310.809 296.575, 303.060 287.500 L 288.971 271 280.985 271 L 273 271 273 307 M 223.254 303.048 L 220.078 312 226.539 312 C 230.093 312, 233 311.861, 233 311.691 C 233 311.257, 226.886 294.553, 226.636 294.302 C 226.522 294.189, 225.001 298.125, 223.254 303.048",stroke:"none",fill:s.themeType==="dark"?"#EEE":"#111",fillRule:"evenodd"}))))}function _h(s){const e=s.themeType||"dark",t=s.size||300;return a.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{width:t,height:t,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:2}},a.createElement("svg",{viewBox:"0 0 2000 1728",style:{fillRule:"evenodd",clipRule:"evenodd",fill:"#00af78"}},a.createElement("style",null,` @keyframes jump { 0% { fill: #00af78; } 25% { fill: #00af78; } @@ -31,14 +31,14 @@ Url: ${Do(s)}`),!0}return!1}function Cd(s,e){return e!=null&&e.length?T4(s).some .bar.bar2 { animation-delay: 0.5s; } .bar.bar3 { animation-delay: 1s; } .bar.bar4 { animation-delay: 1.5s; } - `),a.createElement("path",{d:"M944.5 76.5a852 852 0 0 1 129 6.5 598 598 0 0 1 51 9c19.36 5.344 38.69 10.677 58 16a834 834 0 0 1 117 52 698 698 0 0 1 95 69c2.67 2 5.33 2 8 0a410 410 0 0 1 37-28 18.4 18.4 0 0 1 6-.5q.495 10.51 4.5 20a3200 3200 0 0 0 18 73 3553 3553 0 0 0 19 66 48.8 48.8 0 0 0 2.5 11 4.94 4.94 0 0 1-1 2.5c-2.33.667-4.67.667-7 0a19 19 0 0 0-5-3 209 209 0 0 0-24-7 292 292 0 0 0-20-8c-8.68-2.341-17.34-4.674-26-7a221 221 0 0 0-21-8 337 337 0 0 1-34-11 1272 1272 0 0 1-43-13q-2.91-3.23-1.5-7.5a671 671 0 0 0 42.5-35l-1.5-3a289 289 0 0 0-21.5-18.5c-9.31-6.637-18.65-13.304-28-20a731 731 0 0 1-44-26 175 175 0 0 1-30-15 568 568 0 0 0-50-20 1038 1038 0 0 1-53-16 1070 1070 0 0 0-48-10 1087 1087 0 0 1-55-6 1379 1379 0 0 0-99 1 203.5 203.5 0 0 1-35 5Q629.152 192.558 494 414.5a132 132 0 0 1-10 17 1277 1277 0 0 0-21 43l-11 27a637 637 0 0 1-14 41 8191 8191 0 0 1-16 67 50.7 50.7 0 0 0-1 15 11.3 11.3 0 0 0 1.5 3.5 327 327 0 0 1 40 8q62.273 18.89 115 56 70.252 53.736 113.5 130.5 59.461 114.478 41 243c-.667 1.33-1.333 2.67-2 4a335 335 0 0 1-3 18 507 507 0 0 1-20 53 309 309 0 0 1-10 17c-1.699.91-3.533 1.24-5.5 1 .377-40.1-3.456-79.77-11.5-119l-3-6a154.4 154.4 0 0 0-7-27Q629.1 886.514 525.5 812a44.5 44.5 0 0 1-9.5-5.5l-1.5.5q69.98 79.772 110.5 177.5a684 684 0 0 1 21 74c.389 8.51 1.722 16.84 4 25q1.302 30.765 2.5 61.5-2.217 6.885.5 13.5l17.5 13.5a1597 1597 0 0 0 61 36 3333 3333 0 0 1 61 26q25.04 7.53 50 15a771 771 0 0 0 51 10 526.7 526.7 0 0 0 120 5c15.24-2.5 30.57-4.17 46-5 154.49-25.8 278.99-100.96 373.5-225.5 36-49.308 63.67-102.974 83-161 .29-5.821 1.96-11.154 5-16q7.2-33.086 15-66a343 343 0 0 1 4-30c-5.29 5.217-9.62 11.217-13 18-26.71 37.032-60.54 65.866-101.5 86.5a471 471 0 0 1-27 11 50.1 50.1 0 0 0-17 5q-13.77 1.158-27 5-33 2.977-66 0a153 153 0 0 0-29-5c-52.38-14.072-96.21-41.572-131.5-82.5q-58.935-72.777-58.5-167.5.345-16.269 1.5-32.5 10.89-72.278 57-128c66.33-75.505 149.5-104.339 249.5-86.5a700 700 0 0 1 48 16c4.24 2.853 8.57 5.52 13 8l6 2c20.5 12.068 38.84 26.735 55 44q2.37 1.06 4.5 2.5a442 442 0 0 0 25.5-24.5c2.59-1.601 5.26-1.767 8-.5a1168 1168 0 0 0 25.5 55 1221 1221 0 0 0 16 45c.41 6.057 2.08 11.724 5 17 .58 6.637 2.24 12.97 5 19a778 778 0 0 1 10 55c18.69 162.392-18.64 309.725-112 442-15.67 19-31.33 38-47 57-34.61 35.92-72.44 68.42-113.5 97.5q-16.53 10.545-33 21a516 516 0 0 1-35 18l-3 3c-14.49 6.96-29.16 13.63-44 20-26.02 9.5-52.35 18.17-79 26q-132.478 31.62-267 9a1979 1979 0 0 0-61-14 421 421 0 0 1-25-9c-3.333-.67-6.667-1.33-10-2-20.636-8.65-41.303-17.32-62-26-124.377-64.5-220.21-158.33-287.5-281.5a1010 1010 0 0 1-17-39l-3-4a395 395 0 0 0-15-41 374 374 0 0 1-11-36l-9-39a366 366 0 0 0-6-36 1642 1642 0 0 1-5.5-92.5q5.24-279.871 211-466 61.788-53.755 135-91a1492 1492 0 0 1 47-21l28-10 37-11a1956 1956 0 0 1 46-10 1145 1145 0 0 1 87-10.5m367 359c12.69-.014 25.35.486 38 1.5a399 399 0 0 1 39 10c56.18 22.509 95.34 62.009 117.5 118.5 21.9 63.822 14.57 123.822-22 180-20.98 28.71-47.15 51.21-78.5 67.5-37.69 16.585-77.02 21.585-118 15-69.62-14.983-118.78-54.816-147.5-119.5a284 284 0 0 1-11-39q-15.24-126.17 85.5-201.5c29.7-18.676 62.04-29.509 97-32.5"}),a.createElement("path",{d:"M899.5 258.5a2829 2829 0 0 0 135 0c5.33.53 10.66 1.03 16 1.5l1.5 1.5q.255 125.792 1.5 251.5c-.56 6.766-2.73 12.932-6.5 18.5a587 587 0 0 0-9.5 25.5 71.8 71.8 0 0 1-5.5 20.5 575 575 0 0 0-5.5 52.5 587 587 0 0 0 5.5 55.5 515 515 0 0 0 18.5 58.5c-.24.873-.57 1.707-1 2.5a4183 4183 0 0 1-152 .5 11.3 11.3 0 0 1-1.5-3.5 58052 58052 0 0 1 0-482 30 30 0 0 1 3.5-3"}),a.createElement("path",{d:"M717.5 423.5q71.002-.25 142 .5l1.5 1.5q.713 154.588.5 309 .27 6.043-2 11.5a2513 2513 0 0 1-141 1 6.98 6.98 0 0 1-3.5-2.5 37080 37080 0 0 1-1.5-314.5q-.099-4.63 4-6.5"}),a.createElement("path",{d:"M1360.5 487.5c2.13-.353 3.47.48 4 2.5-.74 4.181-1.57 8.348-2.5 12.5a13569 13569 0 0 1-34 102 27.2 27.2 0 0 0-1 8c1.33 1.838 3.16 2.838 5.5 3a937 937 0 0 1 86 0 4.95 4.95 0 0 1-.5 3 820 820 0 0 0-27 29q-50.445 59.205-100.5 119-5.535 6.54-12 12a3.6 3.6 0 0 1-1.5-1q-1.005-3 0-6a1048 1048 0 0 0 16-61c2.94-5.581 4.6-11.581 5-18l3-6a156.5 156.5 0 0 1 5-24 11.3 11.3 0 0 0-3.5-1.5l-90-1a3.6 3.6 0 0 1-1-1.5c49.72-57.045 99.38-114.045 149-171"},a.createElement("animate",{attributeName:"fill",values:`#00af78;${e==="dark"?"#ffffff":"#00785A"};#00af78`,dur:"2s",repeatCount:"indefinite"})),a.createElement("path",{className:"bar bar1",d:"M544.5 537.5q68.283-.426 136.5 1a2379 2379 0 0 1 1.5 96.5l-.5 92.5q-.918 3.798-4.5 2.5-50.249-64.14-122-103-8.75-1.76-14.5-8.5-1-39 0-78a30 30 0 0 1 3.5-3M721.5 777.5q60.628-.732 121 1.5 37.233 79.24 74.5 158.5 1 2 0 4a3116 3116 0 0 1-136.5.5 417 417 0 0 1-8.5-38.5 962 962 0 0 1-15-47 713 713 0 0 0-21-46 732 732 0 0 1-16-27q-1.122-3.51 1.5-6"}),a.createElement("path",{className:"bar bar2",d:"M879.5 777.5q93-.25 186 .5c18.83 33.513 43.5 62.179 74 86a144.6 144.6 0 0 1 23 16q13.5 5.88 25.5 14.5a574 574 0 0 1 22.5 45c-.33 1-.67 2-1 3-84.63-.161-169.3.006-254 .5q-3.752-3.208-6.5-7.5a2804 2804 0 0 1-8-20 252 252 0 0 1-13-24 3463 3463 0 0 0-23-53 1506 1506 0 0 1-27-55q-1.122-3.51 1.5-6"}),a.createElement("path",{className:"bar bar3",d:"M786.5 971.5q68.56.08 137 0a29.2 29.2 0 0 1 7 2.5 9467 9467 0 0 0 68.5 141.5c4 11.67 9.34 22.67 16 33 1.47 4.53-.2 6.87-5 7-86.772-.2-173.606-.37-260.5-.5-1.754-4.38-.921-8.22 2.5-11.5a411 411 0 0 1 10-25 578 578 0 0 0 10-32 99.6 99.6 0 0 1 5-22q2.12-21.06 5-42l1-48q1.478-1.971 3.5-3"}),a.createElement("path",{className:"bar bar4",d:"M970.5 971.5c83.58.74 167.25.74 251 0 2.73.182 5.39.682 8 1.5 18.09 35.51 36.26 71.01 54.5 106.5 7.67 13.67 15.33 27.33 23 41 2.16 3.76 2.82 7.76 2 12-10.9 7.75-22.4 14.59-34.5 20.5-2.92.99-5.92 1.65-9 2-68.48.48-136.82.65-205 .5-4.11-.08-7.28-1.74-9.5-5a3780 3780 0 0 0-67-140 71388 71388 0 0 1-12-28q-5.977-4.855-1.5-11"}),a.createElement("path",{d:"M83.5 1377.5a332.5 332.5 0 0 0 50.5 0c3.056.58 6.056 1.24 9 2a31209 31209 0 0 1 126.5 194 3.6 3.6 0 0 0 1.5-1c.652-63.71.652-127.37 0-191 .51-2.76 2.177-4.09 5-4a279.4 279.4 0 0 0 47 0c2.145-.1 3.979.56 5.5 2 .529 54.71.862 109.54 1 164.5l-.5 116.5c-.575 3.3-2.575 4.96-6 5a490 490 0 0 0-52 0q-5.74-1.74-10-6a14653 14653 0 0 0-125.5-193q-2.01 1.785-2 4.5a6168 6168 0 0 1 .5 191.5q-2.794 3.675-7.5 3a219.4 219.4 0 0 0-41 0q-5.057-.81-5.5-6c-.667-93.33-.667-186.67 0-280a19.2 19.2 0 0 0 3.5-2"}),a.createElement("path",{d:"M986.5 1377.5c17.32 1.09 34.66 1.25 52 .5 3.23 1.94 5.4 4.78 6.5 8.5 9.36 38.7 18.7 77.37 28 116 3.05 6.64 4.72 13.64 5 21 2.95 5.96 4.62 12.29 5 19 4.15 16.12 8.49 32.12 13 48 2.04-1.08 3.38-2.75 4-5 4.23-19.04 8.56-38.04 13-57 4.55-15.3 8.88-30.64 13-46 .76-4.32 1.43-8.65 2-13 4.33-15.33 8.66-30.66 13-46 2.08-12.15 4.75-24.15 8-36 .85-3.2 2.35-6.03 4.5-8.5 19.85-.22 39.68-.72 59.5-1.5 2.3-.01 4.47.49 6.5 1.5 6.53 21.92 12.37 44.09 17.5 66.5 2.94 6.32 4.61 12.99 5 20 3.56 15.24 7.89 30.24 13 45 2.47 11.74 5.14 23.41 8 35a7.4 7.4 0 0 0 2 3c2.38 11.75 5.04 23.41 8 35 1.33 3.33 3.16 6.33 5.5 9a2872 2872 0 0 1 27.5-111c.39-7.01 2.06-13.68 5-20 .39-7.01 2.06-13.68 5-20 .57-4.35 1.24-8.68 2-13 4.34-16 8.67-32 13-48l1.5-1.5c16.17-.29 32.34-.79 48.5-1.5q5.385-.045 10.5 1.5c.58.89.91 1.89 1 3-2.02 4.57-3.18 9.4-3.5 14.5-2.84 6-4.5 12.34-5 19a351 351 0 0 0-8 25c-2.97 11.6-5.63 23.27-8 35-2.56 8.31-5.23 16.65-8 25-.39 6.38-2.06 12.38-5 18a8809 8809 0 0 1-38 144q-4.725 2.91-10.5 3a410 410 0 0 0-56.5 0c-3.08-.44-5.91-1.44-8.5-3-8.05-31.19-16.88-62.19-26.5-93-.67-4-1.33-8-2-12-9.67-32.85-18.5-65.85-26.5-99-3.92 8.2-6.42 16.87-7.5 26-.72 2.45-1.72 4.78-3 7a2343 2343 0 0 1-28 109c-.72 2.45-1.72 4.78-3 7-4.17 18.07-8.51 36.07-13 54-4.52 3.47-9.69 4.8-15.5 4a685 685 0 0 0-55.5 0c-1.63-.38-3.13-1.04-4.5-2q-6-17.88-10.5-36c-10.91-43.39-21.91-86.73-33-130-2.88-5.97-4.54-12.31-5-19a32 32 0 0 1-3-7 4792 4792 0 0 0-18-75c-3.031-5.25-4.031-10.92-3-17 .995-.57 1.828-1.23 2.5-2"}),a.createElement("path",{d:"M1648.5 1406.5c16.35.64 32.68 1.3 49 2 1.4 1.35 2.06 3.02 2 5a255 255 0 0 0-.5 38c.5 1.17 1.33 2 2.5 2.5 16.33.33 32.67.67 49 1 .92.37 1.75.87 2.5 1.5.82 13.58.66 27.08-.5 40.5-17 .33-34 .67-51 1-1.17.5-2 1.33-2.5 2.5-.67 31.33-.67 62.67 0 94 2.29 23.73 15.12 33.23 38.5 28.5 4.85-3.25 10.02-4.08 15.5-2.5.64 13.67.98 27.34 1 41a11.4 11.4 0 0 1-4.5 3.5c-22.63 5.41-45.29 5.75-68 1-13.91-4.18-24.08-12.68-30.5-25.5-4.8-11.14-7.13-22.81-7-35-.65-34.59-.65-69.25 0-104-.32-1.56-1.15-2.73-2.5-3.5-9-.33-18-.67-27-1-.92-.37-1.75-.87-2.5-1.5-.21-11.69-.71-23.36-1.5-35 .19-3.23 1.85-5.06 5-5.5 9-.33 18-.67 27-1l1.5-1.5c.33-14.33.67-28.67 1-43 .98-1.31 2.15-2.31 3.5-3M1807.5 1406.5c9.18.78 18.35.78 27.5 0 7.6.35 15.1 1.18 22.5 2.5a980 980 0 0 1 1.5 43.5l1.5 1.5c15 .33 30 .67 45 1 1.17.5 2 1.33 2.5 2.5-.77 11.49-.61 22.99.5 34.5a23 23 0 0 1-2 5c-15 .33-30 .67-45 1-.92.37-1.75.87-2.5 1.5-.67 32.67-.67 65.33 0 98 1.84 19.84 12.68 28.67 32.5 26.5 4.83-.18 9.33-1.35 13.5-3.5 1.44.06 2.77.39 4 1a673 673 0 0 0 3.5 36c.38 2.82-.62 4.99-3 6.5-23.81 6.5-47.81 7.17-72 2-12.46-5.13-21.63-13.63-27.5-25.5-1.1-4.87-2.77-9.54-5-14-.33-3.33-.67-6.67-1-10-.33-39-.67-78-1-117l-1.5-1.5c-10.43-.05-20.77-.71-31-2-.66-6.59-.99-13.26-1-20 .01-6.74.34-13.41 1-20 10.26-1.26 20.59-1.93 31-2l1.5-1.5c.33-14 .67-28 1-42 .69-1.85 1.86-3.18 3.5-4"}),a.createElement("path",{d:"M878.5 1446.5c27.433-1.66 52.433 5.01 75 20 21.826 18.58 34.326 42.24 37.5 71 3.595 25.23 1.262 49.9-7 74-16.274 34.06-43.107 53.89-80.5 59.5q-48.019 5.13-88-21-30.077-28.71-35.5-70.5a400 400 0 0 1 0-40q13.828-84.585 98.5-93m1 47c25.457-.37 42.623 11.3 51.5 35q9.63 36.765-4 72-17.011 26.355-48.5 22.5a61.5 61.5 0 0 0-14-5c-7.087-4.96-12.92-11.13-17.5-18.5a28.9 28.9 0 0 0-5-11c-3.333-19.33-3.333-38.67 0-58 4.098-14.4 12.598-25.23 25.5-32.5q6.626-1.05 12-4.5"}),a.createElement("path",{d:"M447.5 1447.5c21.766-2.21 42.766.62 63 8.5 21.067 11.41 35.234 28.57 42.5 51.5q1.39 10.62 4 21a229.3 229.3 0 0 1 1 40c-1.171 1.39-2.671 2.23-4.5 2.5q-65.505.255-131 1.5c-2.062 4.18-2.229 8.51-.5 13 2.366 8.1 5.7 15.77 10 23 15.264 15.93 33.764 20.77 55.5 14.5 3.87-2.52 7.87-4.85 12-7 3.262-2.59 5.762-5.76 7.5-9.5a39.7 39.7 0 0 1 8-7 965 965 0 0 0 21.5 8.5q10.12 1.62 18.5 7.5c.667 1.67.667 3.33 0 5q-9.276 20.79-27.5 34.5c-23.698 14.22-49.365 19.55-77 16-51.283-10.29-80.116-41.45-86.5-93.5-.894-14.71-.56-29.37 1-44a86 86 0 0 0 4-18 125.3 125.3 0 0 1 10.5-23c7.797-11.96 17.464-22.13 29-30.5 12.242-7.13 25.242-11.96 39-14.5m14 42c25.166 1.33 39.166 14.5 42 39.5q-1.824 2.61-5 3a719 719 0 0 1-75-1q2.218-22.395 21-36a123 123 0 0 1 17-5.5"}),a.createElement("path",{d:"M1482.5 1447.5c14.73-.22 29.39.61 44 2.5 37.88 7.55 57.72 30.72 59.5 69.5.33 38 .67 76 1 114 1.99 9.92 2.66 19.92 2 30-.75.63-1.58 1.13-2.5 1.5-15.66-.53-31.33-.53-47 0-2.44-2.29-3.94-5.13-4.5-8.5-1.06-4.6-1.73-9.27-2-14a7.2 7.2 0 0 0-2.5-2c-4.34 5.21-9.01 10.04-14 14.5-26.31 16.05-54.31 19.72-84 11q-44.205-19.29-37.5-67.5a124 124 0 0 0 5-17c8.22-13.88 19.38-24.72 33.5-32.5 9.71-4.13 19.71-7.46 30-10 21.1-4.3 42.44-6.63 64-7 1.8-.64 3.14-1.8 4-3.5-1.04-7.84-2.88-15.5-5.5-23a34.4 34.4 0 0 1-6.5-7.5 31.4 31.4 0 0 1-8-5c-6.73-.84-13.4-2.01-20-3.5-5.98 1.27-11.98 2.44-18 3.5q-3.72 4.11-9 6c-1.8 3.1-3.97 5.94-6.5 8.5-1.37 5.77-3.7 11.1-7 16-.8 1.3-1.97 1.97-3.5 2a426 426 0 0 0-34-13.5c-3.12-1.97-6.28-3.81-9.5-5.5-.65-3.09-.32-6.09 1-9 9.52-23.19 26.36-38.35 50.5-45.5a221 221 0 0 1 27-4.5m28 122c6.92-.31 13.76.02 20.5 1 2.47 19.95-4.37 35.78-20.5 47.5-4.04.9-7.7 2.57-11 5q-16.545 4.515-33 0c-16.58-9.72-18.91-22.05-7-37 2.29-1.29 4.29-2.96 6-5 14.59-5.91 29.59-9.74 45-11.5"}),a.createElement("path",{d:"M578.5 1454.5q29.139-.72 58 1.5c1.167 1.17 2.333 2.33 3.5 3.5a800 800 0 0 0 34 54c1.667-1.33 3.333-2.67 5-4a337 337 0 0 1 18-30 182 182 0 0 0 16.5-23.5 222 222 0 0 1 29-1.5c8.667.17 17.333.33 26 .5q3.726 3.42.5 7.5a2217 2217 0 0 0-63.5 93.5 103.5 103.5 0 0 0 8.5 15.5 5919 5919 0 0 1 59 85c2.155 3.04 1.988 5.87-.5 8.5a457 457 0 0 0-51 .5q-3.55-.51-7-1.5a728 728 0 0 1-40-60.5c-2.341-1.21-4.507-.88-6.5 1a926 926 0 0 1-28 45 120 120 0 0 1-11.5 14.5l-7.5 1.5c-16.734-.89-33.4-1.23-50-1q-.411-4.725 2-9a2463 2463 0 0 0 67.5-97.5 9.6 9.6 0 0 0-1.5-4.5 1263 1263 0 0 1-46-69l-18-24q-1.615-5.115 3.5-6"}))))}const Sh=` + `),a.createElement("path",{d:"M944.5 76.5a852 852 0 0 1 129 6.5 598 598 0 0 1 51 9c19.36 5.344 38.69 10.677 58 16a834 834 0 0 1 117 52 698 698 0 0 1 95 69c2.67 2 5.33 2 8 0a410 410 0 0 1 37-28 18.4 18.4 0 0 1 6-.5q.495 10.51 4.5 20a3200 3200 0 0 0 18 73 3553 3553 0 0 0 19 66 48.8 48.8 0 0 0 2.5 11 4.94 4.94 0 0 1-1 2.5c-2.33.667-4.67.667-7 0a19 19 0 0 0-5-3 209 209 0 0 0-24-7 292 292 0 0 0-20-8c-8.68-2.341-17.34-4.674-26-7a221 221 0 0 0-21-8 337 337 0 0 1-34-11 1272 1272 0 0 1-43-13q-2.91-3.23-1.5-7.5a671 671 0 0 0 42.5-35l-1.5-3a289 289 0 0 0-21.5-18.5c-9.31-6.637-18.65-13.304-28-20a731 731 0 0 1-44-26 175 175 0 0 1-30-15 568 568 0 0 0-50-20 1038 1038 0 0 1-53-16 1070 1070 0 0 0-48-10 1087 1087 0 0 1-55-6 1379 1379 0 0 0-99 1 203.5 203.5 0 0 1-35 5Q629.152 192.558 494 414.5a132 132 0 0 1-10 17 1277 1277 0 0 0-21 43l-11 27a637 637 0 0 1-14 41 8191 8191 0 0 1-16 67 50.7 50.7 0 0 0-1 15 11.3 11.3 0 0 0 1.5 3.5 327 327 0 0 1 40 8q62.273 18.89 115 56 70.252 53.736 113.5 130.5 59.461 114.478 41 243c-.667 1.33-1.333 2.67-2 4a335 335 0 0 1-3 18 507 507 0 0 1-20 53 309 309 0 0 1-10 17c-1.699.91-3.533 1.24-5.5 1 .377-40.1-3.456-79.77-11.5-119l-3-6a154.4 154.4 0 0 0-7-27Q629.1 886.514 525.5 812a44.5 44.5 0 0 1-9.5-5.5l-1.5.5q69.98 79.772 110.5 177.5a684 684 0 0 1 21 74c.389 8.51 1.722 16.84 4 25q1.302 30.765 2.5 61.5-2.217 6.885.5 13.5l17.5 13.5a1597 1597 0 0 0 61 36 3333 3333 0 0 1 61 26q25.04 7.53 50 15a771 771 0 0 0 51 10 526.7 526.7 0 0 0 120 5c15.24-2.5 30.57-4.17 46-5 154.49-25.8 278.99-100.96 373.5-225.5 36-49.308 63.67-102.974 83-161 .29-5.821 1.96-11.154 5-16q7.2-33.086 15-66a343 343 0 0 1 4-30c-5.29 5.217-9.62 11.217-13 18-26.71 37.032-60.54 65.866-101.5 86.5a471 471 0 0 1-27 11 50.1 50.1 0 0 0-17 5q-13.77 1.158-27 5-33 2.977-66 0a153 153 0 0 0-29-5c-52.38-14.072-96.21-41.572-131.5-82.5q-58.935-72.777-58.5-167.5.345-16.269 1.5-32.5 10.89-72.278 57-128c66.33-75.505 149.5-104.339 249.5-86.5a700 700 0 0 1 48 16c4.24 2.853 8.57 5.52 13 8l6 2c20.5 12.068 38.84 26.735 55 44q2.37 1.06 4.5 2.5a442 442 0 0 0 25.5-24.5c2.59-1.601 5.26-1.767 8-.5a1168 1168 0 0 0 25.5 55 1221 1221 0 0 0 16 45c.41 6.057 2.08 11.724 5 17 .58 6.637 2.24 12.97 5 19a778 778 0 0 1 10 55c18.69 162.392-18.64 309.725-112 442-15.67 19-31.33 38-47 57-34.61 35.92-72.44 68.42-113.5 97.5q-16.53 10.545-33 21a516 516 0 0 1-35 18l-3 3c-14.49 6.96-29.16 13.63-44 20-26.02 9.5-52.35 18.17-79 26q-132.478 31.62-267 9a1979 1979 0 0 0-61-14 421 421 0 0 1-25-9c-3.333-.67-6.667-1.33-10-2-20.636-8.65-41.303-17.32-62-26-124.377-64.5-220.21-158.33-287.5-281.5a1010 1010 0 0 1-17-39l-3-4a395 395 0 0 0-15-41 374 374 0 0 1-11-36l-9-39a366 366 0 0 0-6-36 1642 1642 0 0 1-5.5-92.5q5.24-279.871 211-466 61.788-53.755 135-91a1492 1492 0 0 1 47-21l28-10 37-11a1956 1956 0 0 1 46-10 1145 1145 0 0 1 87-10.5m367 359c12.69-.014 25.35.486 38 1.5a399 399 0 0 1 39 10c56.18 22.509 95.34 62.009 117.5 118.5 21.9 63.822 14.57 123.822-22 180-20.98 28.71-47.15 51.21-78.5 67.5-37.69 16.585-77.02 21.585-118 15-69.62-14.983-118.78-54.816-147.5-119.5a284 284 0 0 1-11-39q-15.24-126.17 85.5-201.5c29.7-18.676 62.04-29.509 97-32.5"}),a.createElement("path",{d:"M899.5 258.5a2829 2829 0 0 0 135 0c5.33.53 10.66 1.03 16 1.5l1.5 1.5q.255 125.792 1.5 251.5c-.56 6.766-2.73 12.932-6.5 18.5a587 587 0 0 0-9.5 25.5 71.8 71.8 0 0 1-5.5 20.5 575 575 0 0 0-5.5 52.5 587 587 0 0 0 5.5 55.5 515 515 0 0 0 18.5 58.5c-.24.873-.57 1.707-1 2.5a4183 4183 0 0 1-152 .5 11.3 11.3 0 0 1-1.5-3.5 58052 58052 0 0 1 0-482 30 30 0 0 1 3.5-3"}),a.createElement("path",{d:"M717.5 423.5q71.002-.25 142 .5l1.5 1.5q.713 154.588.5 309 .27 6.043-2 11.5a2513 2513 0 0 1-141 1 6.98 6.98 0 0 1-3.5-2.5 37080 37080 0 0 1-1.5-314.5q-.099-4.63 4-6.5"}),a.createElement("path",{d:"M1360.5 487.5c2.13-.353 3.47.48 4 2.5-.74 4.181-1.57 8.348-2.5 12.5a13569 13569 0 0 1-34 102 27.2 27.2 0 0 0-1 8c1.33 1.838 3.16 2.838 5.5 3a937 937 0 0 1 86 0 4.95 4.95 0 0 1-.5 3 820 820 0 0 0-27 29q-50.445 59.205-100.5 119-5.535 6.54-12 12a3.6 3.6 0 0 1-1.5-1q-1.005-3 0-6a1048 1048 0 0 0 16-61c2.94-5.581 4.6-11.581 5-18l3-6a156.5 156.5 0 0 1 5-24 11.3 11.3 0 0 0-3.5-1.5l-90-1a3.6 3.6 0 0 1-1-1.5c49.72-57.045 99.38-114.045 149-171"},a.createElement("animate",{attributeName:"fill",values:`#00af78;${e==="dark"?"#ffffff":"#00785A"};#00af78`,dur:"2s",repeatCount:"indefinite"})),a.createElement("path",{className:"bar bar1",d:"M544.5 537.5q68.283-.426 136.5 1a2379 2379 0 0 1 1.5 96.5l-.5 92.5q-.918 3.798-4.5 2.5-50.249-64.14-122-103-8.75-1.76-14.5-8.5-1-39 0-78a30 30 0 0 1 3.5-3M721.5 777.5q60.628-.732 121 1.5 37.233 79.24 74.5 158.5 1 2 0 4a3116 3116 0 0 1-136.5.5 417 417 0 0 1-8.5-38.5 962 962 0 0 1-15-47 713 713 0 0 0-21-46 732 732 0 0 1-16-27q-1.122-3.51 1.5-6"}),a.createElement("path",{className:"bar bar2",d:"M879.5 777.5q93-.25 186 .5c18.83 33.513 43.5 62.179 74 86a144.6 144.6 0 0 1 23 16q13.5 5.88 25.5 14.5a574 574 0 0 1 22.5 45c-.33 1-.67 2-1 3-84.63-.161-169.3.006-254 .5q-3.752-3.208-6.5-7.5a2804 2804 0 0 1-8-20 252 252 0 0 1-13-24 3463 3463 0 0 0-23-53 1506 1506 0 0 1-27-55q-1.122-3.51 1.5-6"}),a.createElement("path",{className:"bar bar3",d:"M786.5 971.5q68.56.08 137 0a29.2 29.2 0 0 1 7 2.5 9467 9467 0 0 0 68.5 141.5c4 11.67 9.34 22.67 16 33 1.47 4.53-.2 6.87-5 7-86.772-.2-173.606-.37-260.5-.5-1.754-4.38-.921-8.22 2.5-11.5a411 411 0 0 1 10-25 578 578 0 0 0 10-32 99.6 99.6 0 0 1 5-22q2.12-21.06 5-42l1-48q1.478-1.971 3.5-3"}),a.createElement("path",{className:"bar bar4",d:"M970.5 971.5c83.58.74 167.25.74 251 0 2.73.182 5.39.682 8 1.5 18.09 35.51 36.26 71.01 54.5 106.5 7.67 13.67 15.33 27.33 23 41 2.16 3.76 2.82 7.76 2 12-10.9 7.75-22.4 14.59-34.5 20.5-2.92.99-5.92 1.65-9 2-68.48.48-136.82.65-205 .5-4.11-.08-7.28-1.74-9.5-5a3780 3780 0 0 0-67-140 71388 71388 0 0 1-12-28q-5.977-4.855-1.5-11"}),a.createElement("path",{d:"M83.5 1377.5a332.5 332.5 0 0 0 50.5 0c3.056.58 6.056 1.24 9 2a31209 31209 0 0 1 126.5 194 3.6 3.6 0 0 0 1.5-1c.652-63.71.652-127.37 0-191 .51-2.76 2.177-4.09 5-4a279.4 279.4 0 0 0 47 0c2.145-.1 3.979.56 5.5 2 .529 54.71.862 109.54 1 164.5l-.5 116.5c-.575 3.3-2.575 4.96-6 5a490 490 0 0 0-52 0q-5.74-1.74-10-6a14653 14653 0 0 0-125.5-193q-2.01 1.785-2 4.5a6168 6168 0 0 1 .5 191.5q-2.794 3.675-7.5 3a219.4 219.4 0 0 0-41 0q-5.057-.81-5.5-6c-.667-93.33-.667-186.67 0-280a19.2 19.2 0 0 0 3.5-2"}),a.createElement("path",{d:"M986.5 1377.5c17.32 1.09 34.66 1.25 52 .5 3.23 1.94 5.4 4.78 6.5 8.5 9.36 38.7 18.7 77.37 28 116 3.05 6.64 4.72 13.64 5 21 2.95 5.96 4.62 12.29 5 19 4.15 16.12 8.49 32.12 13 48 2.04-1.08 3.38-2.75 4-5 4.23-19.04 8.56-38.04 13-57 4.55-15.3 8.88-30.64 13-46 .76-4.32 1.43-8.65 2-13 4.33-15.33 8.66-30.66 13-46 2.08-12.15 4.75-24.15 8-36 .85-3.2 2.35-6.03 4.5-8.5 19.85-.22 39.68-.72 59.5-1.5 2.3-.01 4.47.49 6.5 1.5 6.53 21.92 12.37 44.09 17.5 66.5 2.94 6.32 4.61 12.99 5 20 3.56 15.24 7.89 30.24 13 45 2.47 11.74 5.14 23.41 8 35a7.4 7.4 0 0 0 2 3c2.38 11.75 5.04 23.41 8 35 1.33 3.33 3.16 6.33 5.5 9a2872 2872 0 0 1 27.5-111c.39-7.01 2.06-13.68 5-20 .39-7.01 2.06-13.68 5-20 .57-4.35 1.24-8.68 2-13 4.34-16 8.67-32 13-48l1.5-1.5c16.17-.29 32.34-.79 48.5-1.5q5.385-.045 10.5 1.5c.58.89.91 1.89 1 3-2.02 4.57-3.18 9.4-3.5 14.5-2.84 6-4.5 12.34-5 19a351 351 0 0 0-8 25c-2.97 11.6-5.63 23.27-8 35-2.56 8.31-5.23 16.65-8 25-.39 6.38-2.06 12.38-5 18a8809 8809 0 0 1-38 144q-4.725 2.91-10.5 3a410 410 0 0 0-56.5 0c-3.08-.44-5.91-1.44-8.5-3-8.05-31.19-16.88-62.19-26.5-93-.67-4-1.33-8-2-12-9.67-32.85-18.5-65.85-26.5-99-3.92 8.2-6.42 16.87-7.5 26-.72 2.45-1.72 4.78-3 7a2343 2343 0 0 1-28 109c-.72 2.45-1.72 4.78-3 7-4.17 18.07-8.51 36.07-13 54-4.52 3.47-9.69 4.8-15.5 4a685 685 0 0 0-55.5 0c-1.63-.38-3.13-1.04-4.5-2q-6-17.88-10.5-36c-10.91-43.39-21.91-86.73-33-130-2.88-5.97-4.54-12.31-5-19a32 32 0 0 1-3-7 4792 4792 0 0 0-18-75c-3.031-5.25-4.031-10.92-3-17 .995-.57 1.828-1.23 2.5-2"}),a.createElement("path",{d:"M1648.5 1406.5c16.35.64 32.68 1.3 49 2 1.4 1.35 2.06 3.02 2 5a255 255 0 0 0-.5 38c.5 1.17 1.33 2 2.5 2.5 16.33.33 32.67.67 49 1 .92.37 1.75.87 2.5 1.5.82 13.58.66 27.08-.5 40.5-17 .33-34 .67-51 1-1.17.5-2 1.33-2.5 2.5-.67 31.33-.67 62.67 0 94 2.29 23.73 15.12 33.23 38.5 28.5 4.85-3.25 10.02-4.08 15.5-2.5.64 13.67.98 27.34 1 41a11.4 11.4 0 0 1-4.5 3.5c-22.63 5.41-45.29 5.75-68 1-13.91-4.18-24.08-12.68-30.5-25.5-4.8-11.14-7.13-22.81-7-35-.65-34.59-.65-69.25 0-104-.32-1.56-1.15-2.73-2.5-3.5-9-.33-18-.67-27-1-.92-.37-1.75-.87-2.5-1.5-.21-11.69-.71-23.36-1.5-35 .19-3.23 1.85-5.06 5-5.5 9-.33 18-.67 27-1l1.5-1.5c.33-14.33.67-28.67 1-43 .98-1.31 2.15-2.31 3.5-3M1807.5 1406.5c9.18.78 18.35.78 27.5 0 7.6.35 15.1 1.18 22.5 2.5a980 980 0 0 1 1.5 43.5l1.5 1.5c15 .33 30 .67 45 1 1.17.5 2 1.33 2.5 2.5-.77 11.49-.61 22.99.5 34.5a23 23 0 0 1-2 5c-15 .33-30 .67-45 1-.92.37-1.75.87-2.5 1.5-.67 32.67-.67 65.33 0 98 1.84 19.84 12.68 28.67 32.5 26.5 4.83-.18 9.33-1.35 13.5-3.5 1.44.06 2.77.39 4 1a673 673 0 0 0 3.5 36c.38 2.82-.62 4.99-3 6.5-23.81 6.5-47.81 7.17-72 2-12.46-5.13-21.63-13.63-27.5-25.5-1.1-4.87-2.77-9.54-5-14-.33-3.33-.67-6.67-1-10-.33-39-.67-78-1-117l-1.5-1.5c-10.43-.05-20.77-.71-31-2-.66-6.59-.99-13.26-1-20 .01-6.74.34-13.41 1-20 10.26-1.26 20.59-1.93 31-2l1.5-1.5c.33-14 .67-28 1-42 .69-1.85 1.86-3.18 3.5-4"}),a.createElement("path",{d:"M878.5 1446.5c27.433-1.66 52.433 5.01 75 20 21.826 18.58 34.326 42.24 37.5 71 3.595 25.23 1.262 49.9-7 74-16.274 34.06-43.107 53.89-80.5 59.5q-48.019 5.13-88-21-30.077-28.71-35.5-70.5a400 400 0 0 1 0-40q13.828-84.585 98.5-93m1 47c25.457-.37 42.623 11.3 51.5 35q9.63 36.765-4 72-17.011 26.355-48.5 22.5a61.5 61.5 0 0 0-14-5c-7.087-4.96-12.92-11.13-17.5-18.5a28.9 28.9 0 0 0-5-11c-3.333-19.33-3.333-38.67 0-58 4.098-14.4 12.598-25.23 25.5-32.5q6.626-1.05 12-4.5"}),a.createElement("path",{d:"M447.5 1447.5c21.766-2.21 42.766.62 63 8.5 21.067 11.41 35.234 28.57 42.5 51.5q1.39 10.62 4 21a229.3 229.3 0 0 1 1 40c-1.171 1.39-2.671 2.23-4.5 2.5q-65.505.255-131 1.5c-2.062 4.18-2.229 8.51-.5 13 2.366 8.1 5.7 15.77 10 23 15.264 15.93 33.764 20.77 55.5 14.5 3.87-2.52 7.87-4.85 12-7 3.262-2.59 5.762-5.76 7.5-9.5a39.7 39.7 0 0 1 8-7 965 965 0 0 0 21.5 8.5q10.12 1.62 18.5 7.5c.667 1.67.667 3.33 0 5q-9.276 20.79-27.5 34.5c-23.698 14.22-49.365 19.55-77 16-51.283-10.29-80.116-41.45-86.5-93.5-.894-14.71-.56-29.37 1-44a86 86 0 0 0 4-18 125.3 125.3 0 0 1 10.5-23c7.797-11.96 17.464-22.13 29-30.5 12.242-7.13 25.242-11.96 39-14.5m14 42c25.166 1.33 39.166 14.5 42 39.5q-1.824 2.61-5 3a719 719 0 0 1-75-1q2.218-22.395 21-36a123 123 0 0 1 17-5.5"}),a.createElement("path",{d:"M1482.5 1447.5c14.73-.22 29.39.61 44 2.5 37.88 7.55 57.72 30.72 59.5 69.5.33 38 .67 76 1 114 1.99 9.92 2.66 19.92 2 30-.75.63-1.58 1.13-2.5 1.5-15.66-.53-31.33-.53-47 0-2.44-2.29-3.94-5.13-4.5-8.5-1.06-4.6-1.73-9.27-2-14a7.2 7.2 0 0 0-2.5-2c-4.34 5.21-9.01 10.04-14 14.5-26.31 16.05-54.31 19.72-84 11q-44.205-19.29-37.5-67.5a124 124 0 0 0 5-17c8.22-13.88 19.38-24.72 33.5-32.5 9.71-4.13 19.71-7.46 30-10 21.1-4.3 42.44-6.63 64-7 1.8-.64 3.14-1.8 4-3.5-1.04-7.84-2.88-15.5-5.5-23a34.4 34.4 0 0 1-6.5-7.5 31.4 31.4 0 0 1-8-5c-6.73-.84-13.4-2.01-20-3.5-5.98 1.27-11.98 2.44-18 3.5q-3.72 4.11-9 6c-1.8 3.1-3.97 5.94-6.5 8.5-1.37 5.77-3.7 11.1-7 16-.8 1.3-1.97 1.97-3.5 2a426 426 0 0 0-34-13.5c-3.12-1.97-6.28-3.81-9.5-5.5-.65-3.09-.32-6.09 1-9 9.52-23.19 26.36-38.35 50.5-45.5a221 221 0 0 1 27-4.5m28 122c6.92-.31 13.76.02 20.5 1 2.47 19.95-4.37 35.78-20.5 47.5-4.04.9-7.7 2.57-11 5q-16.545 4.515-33 0c-16.58-9.72-18.91-22.05-7-37 2.29-1.29 4.29-2.96 6-5 14.59-5.91 29.59-9.74 45-11.5"}),a.createElement("path",{d:"M578.5 1454.5q29.139-.72 58 1.5c1.167 1.17 2.333 2.33 3.5 3.5a800 800 0 0 0 34 54c1.667-1.33 3.333-2.67 5-4a337 337 0 0 1 18-30 182 182 0 0 0 16.5-23.5 222 222 0 0 1 29-1.5c8.667.17 17.333.33 26 .5q3.726 3.42.5 7.5a2217 2217 0 0 0-63.5 93.5 103.5 103.5 0 0 0 8.5 15.5 5919 5919 0 0 1 59 85c2.155 3.04 1.988 5.87-.5 8.5a457 457 0 0 0-51 .5q-3.55-.51-7-1.5a728 728 0 0 1-40-60.5c-2.341-1.21-4.507-.88-6.5 1a926 926 0 0 1-28 45 120 120 0 0 1-11.5 14.5l-7.5 1.5c-16.734-.89-33.4-1.23-50-1q-.411-4.725 2-9a2463 2463 0 0 0 67.5-97.5 9.6 9.6 0 0 0-1.5-4.5 1263 1263 0 0 1-46-69l-18-24q-1.615-5.115 3.5-6"}))))}const xh=` .logo-background-light, .logo-background-colored { background: white; } .logo-background-dark, .logo-background-blue { background: black; } -`;function kh(s){Ce(()=>{if(!window.document.getElementById("vendor-iobroker-component")){const t=window.document.createElement("style");t.setAttribute("id","vendor-iobroker-component"),t.innerHTML=Sh,window.document.head.appendChild(t)}},[]);const e=s.themeType||s.themeName||"light";return a.createElement("div",{className:`vendor-logo-back logo-background-${e}`,style:{display:"flex",flexDirection:"column",height:"100%",width:"10%",margin:"auto",backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:s.themeType==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{flexGrow:1}}),a.createElement(ko,{color:"secondary",size:s.size||200,thickness:5}),a.createElement("div",{style:{flexGrow:1}}))}const vh=` +`;function Sh(s){Ce(()=>{if(!window.document.getElementById("vendor-iobroker-component")){const t=window.document.createElement("style");t.setAttribute("id","vendor-iobroker-component"),t.innerHTML=xh,window.document.head.appendChild(t)}},[]);const e=s.themeType||s.themeName||"light";return a.createElement("div",{className:`vendor-logo-back logo-background-${e}`,style:{display:"flex",flexDirection:"column",height:"100%",width:"10%",margin:"auto",backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:s.themeType==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{flexGrow:1}}),a.createElement(ko,{color:"secondary",size:s.size||200,thickness:5}),a.createElement("div",{style:{flexGrow:1}}))}const kh=` /** * Copyright 2018-2024 Denis Haev (bluefox) * @@ -261,7 +261,7 @@ Url: ${Do(s)}`),!0}return!1}function Cd(s,e){return e!=null&&e.length?T4(s).some .logo-animate-color-outside-blue { animation: logo-color-outside-blue 1.5s; } -`;function Yh(s){Ce(()=>{if(!window.document.getElementById("loader-iobroker-component")){const i=window.document.createElement("style");i.setAttribute("id","loader-iobroker-component"),i.innerHTML=vh,window.document.head.appendChild(i)}},[]);const e=s.size||234,t=s.themeName||s.theme||s.themeType||"light";return a.createElement("div",{className:`logo-back logo-background-${t}`,style:{backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:void 0,backgroundSize:"cover"}},window.loadingHideLogo==="true"?null:a.createElement(a.Fragment,null,a.createElement("div",{className:"logo-div",style:{width:e,height:e}},a.createElement("div",{className:`logo-top logo-background-${t}`,style:{left:"37%"}}),a.createElement("div",{className:`logo-top logo-background-${t}`,style:{left:"57%"}}),a.createElement("div",{className:`logo-border logo-background-${t} logo-animate-wait`,style:{borderWidth:e*.132}}),a.createElement("div",{className:`logo-i logo-animate-color-inside-${t}`}),a.createElement("div",{className:`logo-i-top logo-animate-color-inside-${t}`,style:{top:"18%"}}),a.createElement("div",{className:`logo-i-top logo-animate-color-inside-${t}`,style:{bottom:"18%"}})),a.createElement("div",{className:`logo-animate-grow logo-animate-grow-${t}`,style:{width:e+11,height:e+11}})))}const Qh=` +`;function vh(s){Ce(()=>{if(!window.document.getElementById("loader-iobroker-component")){const i=window.document.createElement("style");i.setAttribute("id","loader-iobroker-component"),i.innerHTML=kh,window.document.head.appendChild(i)}},[]);const e=s.size||234,t=s.themeName||s.theme||s.themeType||"light";return a.createElement("div",{className:`logo-back logo-background-${t}`,style:{backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:void 0,backgroundSize:"cover"}},window.loadingHideLogo==="true"?null:a.createElement(a.Fragment,null,a.createElement("div",{className:"logo-div",style:{width:e,height:e}},a.createElement("div",{className:`logo-top logo-background-${t}`,style:{left:"37%"}}),a.createElement("div",{className:`logo-top logo-background-${t}`,style:{left:"57%"}}),a.createElement("div",{className:`logo-border logo-background-${t} logo-animate-wait`,style:{borderWidth:e*.132}}),a.createElement("div",{className:`logo-i logo-animate-color-inside-${t}`}),a.createElement("div",{className:`logo-i-top logo-animate-color-inside-${t}`,style:{top:"18%"}}),a.createElement("div",{className:`logo-i-top logo-animate-color-inside-${t}`,style:{bottom:"18%"}})),a.createElement("div",{className:`logo-animate-grow logo-animate-grow-${t}`,style:{width:e+11,height:e+11}})))}const Yh=` .logo-background-light, .logo-background-colored { background: white; } @@ -364,14 +364,14 @@ Url: ${Do(s)}`),!0}return!1}function Cd(s,e){return e!=null&&e.length?T4(s).some transform: rotate(165deg); } } -`;function bh(s){const e=s.size||200;Ce(()=>{if(!window.document.getElementById("pt-iobroker-component")){const i=window.document.createElement("style");i.setAttribute("id","pt-iobroker-component"),i.innerHTML=Qh,window.document.head.appendChild(i)}},[]);const t=s.themeType||s.themeName||"light";return a.createElement("div",{className:`pt-logo-back logo-background-${t}`,style:{backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:s.themeType==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{className:"pt-logo-div",style:{width:e,height:e}},a.createElement("div",{style:{width:200,height:200}},a.createElement("div",{className:"pt-loader-blue pt-loader-block"}),a.createElement("div",{className:"pt-loader-green pt-loader-block"}),a.createElement("div",{className:"pt-loader-red pt-loader-block"}))))}const Ju="loader-ha-spin-keyframes",Uh=` +`;function Qh(s){const e=s.size||200;Ce(()=>{if(!window.document.getElementById("pt-iobroker-component")){const i=window.document.createElement("style");i.setAttribute("id","pt-iobroker-component"),i.innerHTML=Yh,window.document.head.appendChild(i)}},[]);const t=s.themeType||s.themeName||"light";return a.createElement("div",{className:`pt-logo-back logo-background-${t}`,style:{backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:s.themeType==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{className:"pt-logo-div",style:{width:e,height:e}},a.createElement("div",{style:{width:200,height:200}},a.createElement("div",{className:"pt-loader-blue pt-loader-block"}),a.createElement("div",{className:"pt-loader-green pt-loader-block"}),a.createElement("div",{className:"pt-loader-red pt-loader-block"}))))}const Wu="loader-ha-spin-keyframes",bh=` @keyframes loaderHA-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } -}`;function $h(s){const e=s.themeType||"dark",t=s.size||270,i=t*1.5,r=t*14/270,o=t*280/270;return a.useEffect(()=>{if(!window.document.getElementById(Ju)){const n=window.document.createElement("style");n.setAttribute("id",Ju),n.innerHTML=Uh,window.document.head.appendChild(n)}},[]),a.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{position:"relative",width:i,height:i,display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("div",{style:{position:"absolute",top:-r,left:-r,right:-r,bottom:-r,border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.50)`,borderRadius:"50%",animation:"loaderHA-spin 3.6s linear infinite"}}),a.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.75)`,borderRadius:"50%",animation:"loaderHA-spin 2.2s linear infinite"}}),a.createElement("div",{style:{width:t,height:t,zIndex:1,display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 69.6 148.1",style:{width:"100%",height:"100%"}},a.createElement("path",{fill:"#db0a33",d:"M69.5,100.6c0-.4,0-.8-.2-1.1v-.7c-.2-.4-.3-.8-.5-1.2,0-.2-.2-.5-.3-.7,0,0,0-.2,0-.2,0-.2,0-.3-.2-.5l-.4-.7-.4-.6c-1-1.6-2.4-3-4.2-4.3-.3-.2-.6-.4-.9-.6,0,0-.2,0-.3-.2-.3-.2-.6-.3-.9-.5-.2,0-.3-.2-.5-.3-.3-.2-.6-.3-.9-.5,0,0-.2,0-.3-.2-1-2.7-2.4-4.9-3.8-6.7h0c2.5,0,6.6-.3,7.5-3,3.5-3,2.5-9.7,2.5-10,0-.6-.2-1.1-.4-1.7h0v-.3c.5-3-.4-7.1-.5-7.7h0l-.3-1.1c0-.3-.2-.7-.4-1,0-.4-.3-.7-.4-1,0-.3-.3-.7-.5-1s-.4-.7-.6-1c-.2-.3-.4-.6-.6-.9l-.4-.4-.4-.4-.4-.4c0,0-.3-.3-.5-.4-.3-.2-.6-.4-1-.6-.2,0-.4-.2-.5-.2-.2,0-.4,0-.6-.2-.2,0-.4,0-.6,0h-1.8c-.4,0-.8,0-1.1.2-.4,0-.7.2-1.1.4h0c-1.6-.2-2.6-1-3.1-1.7h0c2-.9,3.5-1.9,4.6-3,2.6-2.2,4-5.1,4.7-7.2,3.4-1.1,5.4-4,5.4-4h0c4.6-5.3,1.2-15.1,1.2-15.1,0,0-.8,4.2-4,5.5,0-.3-.2-.6-.3-1.1s-.3-1.1-.6-1.7c-.2-.7-.5-1.4-.9-2.2-.4-.8-.8-1.6-1.4-2.4-.5-.8-1.2-1.7-1.9-2.5h0C59.2,6.6,49.2.3,49.2.3c0,0,3.3,5.8,1.3,9.9,0,0-3.5-.8-5.7-.8s-2.4.1-3.5.3c-.5.1-1.1.2-1.6.3-.3,0-.5.1-.8.2-.2,0-.5.1-.7.2-.5.1-.9.2-1.3.4-.4.1-.8.3-1.2.4-.4.1-.7.2-1,.3s-.6.2-.9.3h-.2c-2-2.8-3.7-7.5,1.8-11.9,0,0-13,5.3-8.2,17,0,0,0,.2-.1.4h0c-.3.3-.6.7-1,1.3-.3.6-.7,1.3-.9,2.1-.1.4-.2.8-.2,1.3v1.5c-.2-.1-.5-.2-.9-.4-1.7-.8-1.7-2.8-1.7-2.8-1.1,8.3,4.2,13.3,5.2,14.1,0,.4,0,.7-.2,1v.4c-.2,0-.3.3-.4.5-.1.4-.2.7-.3,1.1-.1.7-.1,1.5,0,2.2s.3,1.4.5,2c.3.6.6,1.2.9,1.7,0,0,0,0,.1.2.4.6,1,1.4,2,2h.1c.2,0,.8.5,1.7.7.2.2,1.5,1.7,3.1,2.1-.2,1.1-1,2.8-3.4,3.7,0,0-14.2-.4-13.2,13.5-6.6,8.7-3.8,13.4-3.8,13.4-.9.6-.9,1.9-.5,3,0,0,0,.3.2.5,0,0,0,0,.3.4.3.4.6.7,1,.8,1.1.7,3.1,1.5,6.4,1.1.2.3,1.3,1.8,1.3,2.2.5,2.3,1.2,4.5,1.3,6.8l.2,1.3c-2.2-.2-11-.2-16.6,9.1,0,0-.2.2-.2.4l-.5.9-.6,1.2h0c-.3.7-.7,1.7-1.1,2.8-.5.4-1.2,0-1.7-.3-.4-.4-.7-.7-.9-1.1,0,0,0-.2,0-.3v-.2s0-.2-.2-.2h0c0,0,0,0-.2-.2h-.4s-.2,0-.2,0c-.2,0-.2.2-.3.3,0,0-.1.2-.2.2,0,.2-.2.3-.2.5-.2.6-.4,1.2-.6,1.8-.6,2.4-.6,4.9-.1,7.3.2,1.2.6,2.4,1.1,3.5.5,1.1,1.2,2.1,2,3.1.8.9,1.7,1.8,2.7,2.5s2,1.3,3.1,1.8h0l.6.4-.3-.7c-.2-.4-.3-.9-.5-1.3-.1-.4-.2-.9-.3-1.3-.1-.9-.2-1.8,0-2.7,0-.4.2-.8.4-1.2.2-.4.4-.7.7-1.1.6-.8,1-1.6,1.5-2.5.4-.9.8-1.8,1.1-2.7.1-.5.3-1,.3-1.5v-.9h0c.1-2.3-1.9-3-3-2.9-.9,0-1.7.2-2,.2.7-1.3,1.3-2.4,2-3.4h0c.2-.4.4-.6.6-.9.4-.5.8-1,1.2-1.5.1,0,.2-.3.3-.4h0c.1,0,.2-.2.3-.4.1,0,.2-.3.4-.4,6.5-6.5,12.5-2.9,12.5-2.9,0,0,1.1,3.7,1.6,4.6h0c1,2.3,2.7,4.6,4.1,6.9h0c0,0,0,4.8,2.2,7.2.5.6,1.1,1.3,1.7,2.2.3.5.5,1,.7,1.4.2.3.3.6.4.9.3.4.5.8.8,1.3s.6,1,.8,1.6c.2.5.4,1,.6,1.5,0,0,1,5.1.7,7.4-3.3.9-5.5,2.4-7.4,3.2-1,.3-3.4,2-5.5,1.9h-.5c0,.1-3.6.3-2.7,3.1,0,0,.2,3.6,5.8,2.9,1.8-.1,7.5-.5,9.1-.3,1.6.2,2.8.2,3.7.1,1.3,0,3.8,0,5.3-.4.4,1.8,3.2,2.4,6,1.5,3.6,1.6,13.5,2,15.6-1.6,2.4-4.1-2.4-8.6-4.1-12.6-3.8-9.3-.8-14-1.6-16.8,0-.7-.2-1.8-.4-3.2.8-.4,1.5-.8,2.2-1.3,1-.7,1.7-1.4,2.3-2.1l.2-.2c0,0,.2-.3.3-.4l.6-.9.6-1.2.4-1.1.3-1.2v-.8c0-.3,0-.5,0-.7h0v-2.4h.2ZM52.6,131.9c-.3.4-.7.9-1.2,1.6-1-.6-2.7-2.2-3.3-4.3,0-.2,0-.3-.2-.5-1.1-6.9-2.6-9.7-3.2-10.6-1-3.7-1.7-7.4-1.3-9.6,0,0,3.6,8.2,6.4,10,0,0,3.7,8.5,4.5,9.9.6,1-.9,2.3-1.7,3.5ZM63.6,102.7h0v.2h0v.9c0,0-.3.4-.3.4,0,0,0,.2,0,.3v.2h0v.2h0l-.2.2c-.3.6-.8,1.1-1.3,1.5h0c-.3-2.4-.6-5.1-.8-8.2.2-.5.3-1.1.4-1.7l.2.2c.2.2.4.4.5.6.2.2.3.4.5.7,0,.2.3.4.4.7h0c0,.3.2.5.3.7,0,.2.2.5.2.7h0v.3c0,.2,0,.4,0,.6v.7h0v.7h0Z"}))),a.createElement("div",{style:{position:"absolute",width:o,zIndex:2,top:"57.5%",left:"50%",transform:"translate(-50%, -155%)"}},a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 7152 512",width:"100%",height:"auto"},a.createElement("path",{fill:"#fff",d:"M4566 0h1053v5h25c2 5 2 5 1 8h16q3 3 2 7l3 1 4 1 2 7h2l12 1q3 1 2 6v3h7q3 4 2 10v6h3l4 1 1 8 3-1 5 2 1 7 7 1 1 14v2h3q3 0 5 2l1 9v22l3 1 4 1 1 7v41q0 3-3 5l-5 1v26q1 3-2 5h-8l1 2v8l-1 8h-8v16q-3 3-7 2l-1 3-2 5h-6v6l-1 11h-7l-1 8-10 1h-6l-1 3-1 4-7 2v3l-2 4h-16l1 2-2 6h-15v3l-3 6-10 1h-11l-10 2q1 3-2 5l-8 1h-796l-4-1-2-7h-2q-7 0-14-2v-8h-8l-1-7h-3l-4-1q-2-5-2-10v-62l2-6 7-1v-3l2-4h7v-8l5-1h3v-3l1-5q3-2 8-1h57l140-1h602v-3l2-4h7l1-8 8-1v-31l-7-1q-2-2-2-5v-2l-3-1q-5 0-6-4v-5h-3l-11 1-2-2v-7h-917l-1 8-23 1h-14l-5-1v7l-9 3h-7l-1 3-1 4-9 1h-6l-1 3-2 5h-6v3q0 3-2 5l-6 1v3q0 3-4 5h-5v15l-2 2h-7v16h-8v110h8v24h6l3 3v5l3 1q4 0 6 4l-1 5 9 2v6h3q3 0 5 2l1 6h2l5 1q2 4 0 8h2q12-3 23 1l1 5v3l2-1h1069l9 1 1 8h18l7 2 1 6h3q3 0 5 4l1 5h3q3 0 5 4v12l3 1 5 2v21l1 17v3l-1 8-5 3-3 1v8l-2 7h-8l1 2-1 6h-16v5H4571v-5h-42v-8h-16q-2-3-2-7h-7l-4-1q-3 1-5-2v-7l-2 1h-8q-4 0-7-2l-1-8-3 1h-3q-2-1-2-6v-3h-3q-5 1-6-2l1-6h-3l-6-2-1-6h-3q-3 0-5-4v-6l-3 1h-3q-3-4-3-10v-7l-8-1 1-8h-9l-1-7v-2l1-8h-7q-2-3-2-8v-18l-2 1-6-2-1-9v-23h-2q-3 1-5-2V186l1-3h7v-32q3-4 8-3v-19q0-4 3-6h6l-1-2q-1-8 3-14h7v-7q3-2 7-2v-9c1-6 1-6 3-8h6v-3l1-5 7-1 1-3q1-5 3-5l6-1v-3q-1-3 2-5h6v-3q-1-3 2-5l6-1v-2l2-5 7-2 1-6 6-2 2 1v-3q-1-4 2-6l7-1h7v-3l2-4h16V5h34l-1-4zM1620 0h1065v5h23l3 1v6l15 1 2 6-1 2h7q3 3 3 8h3l5 3v7h3l5 1v7h3l5 1v7h3q4 0 6 2l1 6 3 1 5 2v15l8 2v24h7q3 4 2 10v395h-130V169l-7-2q-2-4-2-9v-6l-3-1-5-2v-15l-11 1-2-1-4-2v-7l-3 1h-17l-5-1v-8h-900v7c-4 4-14 2-19 2h-18l-5-1v3q1 5-2 6l-15 1h-4l-5-1v7q-3 3-7 2l-1 3-2 5h-7l1 3-2 5h-8v8l-4 1h-3v9c-1 6-1 6-3 8h-6v21l-1 3-7 1v83l7 1 1 3v22h3l5 1 1 15h3l4 2v7h7q3 4 2 9l9 2v6h3q3-1 5 2l1 6h11q3 0 5 2l1 6h4l12 2 1 7h714l8 2 1 5-1 2h18l8 2-1 6 9 1 1 9 7-1 1 9v3l1 6v7h3l4 2v33l-6 2-2-1v22l-2 4-7 1v3l-1 4h-8v5h-784v-5h-41c-2-5-2-5-1-8h-16q-2-3-2-7h-7l-4-1q-3 0-5-2v-7l-2 1h-4l-3-6v-3h-10q-3 0-7-2v-7h-3l-5-1-1-7h-3q-3 1-5-2l1-6-8-1q-2-5-2-11v-6h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-6-3-1q-5-1-5-3-2-8 0-14h-7q-2-5-2-10v-7l-2 1-4-1q-4-3-3-7v-18h-2q-3 1-5-2v-41h-7q-2-3-2-8V193q4-2 9-2v-41l5-1h3v-21l1-4 7-1v-10l2-6h7l-1-2q-1-7 2-15l8-1v-3l1-5h7V66q3-4 8-3v-3l3-5 6-1v-3l2-4h7v-7l6-2 2 1v-3q0-5 2-6l10-1h6l-1-2 1-4q4-3 9-2h7v-3q0-3 2-5h15l-1-3 3-5 7-1h25zM4137 0h130v392q1 3-2 5l-6 1v20l-1 4-7 2v2q1 7-2 13l-7 1v4c0 10 0 10-3 13h-6v3q1 3-2 5l-6 1v3l-2 4h-7v3l-2 6h-7v3q1 4-2 6h-6v3q1 3-2 5h-24v3l-1 5h-24l1 2v2q-3 2-6 1H3057v-5h-24l-2-6 1-2h-16l-1-5v-3h-9c-6 0-6 0-8-2l-1-7-3 1-5-3v-7l-2 1-6-2v-7h-7l-2-6 1-2h-3q-4 1-6-2v-6h-3l-4-1q-2-5-2-10v-7h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-7v-16h-3q-5-1-5-3l-1-7v-17l-2 1-6-2v-77c0-6 0-6 2-8h6v-27q-1-4 2-7l7-1v-11q-1-3 2-5l6-1v-7l1-4 1-5h7v-15q3-4 8-3l1-3 1-4 8-1v-3l1-5h7v-3q-1-4 2-6l6 1v-3q0-4 2-6l6-2v-2l3-5h15v-3q-1-3 2-5h15l-1-2 1-4 3-3h21l1-3q1-5 3-5l14-1h638v-2l2-6h148q3 0 5 2l1 6h13c7 0 7 0 11 2l2 7 7 1v8h7q3 5 2 12v66l-1 8-8 1v7q-3 3-7 2l-1 3-1 4-7 1h-211l-230 1h-333v3l-2 4h-24v7l-6 3q-4 3-4 7l-7 1v3q1 3-2 5h-7v3l-1 5h-7l1 49 6 1 1 5v3h8l1 6v3l-1 7h11q4-1 7 3v6l3-1 12 1q3 2 2 6v3l3-1h993l5 1v-3q-1-4 2-6l6-1v-3q0-3 4-5h6l-1-2 2-6h7v-3l2-14h5zM0 0h126l1 8v144l-1 5h932l106-1 7 1h4q3 0 5 2l2 6h52l5 2v7h9l8 1q2 4 1 8h2q7-2 14 1l1 7h11l5 1q2 4 1 8l3-1 5 3v7h8v16h7l4 8h2l5 3v23h3q3 0 5 2v24h7q3 7 2 14v137l-1 32v16q1 6-2 7h-5v7l-1 3-1 6h-16l1 3-1 2h-79v-4h-7l-3-1-6-1-1-8v-7h-6q-2-4-2-10V338h-3q-3 1-5-2l-1-9v-6h-3l-5-2v-16h-16l-2-6 1-2h-16l-1-1v-7H126l1 2v188c0 11 0 11-3 14h-7v15l-4 1h-12v5H22l-1-3 1-2h-3q-5 1-6-2v-5h-3l-5-2v-7H0zM6537 0h606v5l8 1 1 16v82l-3 4-8 1h-6v3l-1 4q-5 2-10 1h-509v3l-1 5q-13 2-24 0v3q1 5-2 6l-6 1h-4l-5-1v3l-1 5-7 2v8q0 6-2 7l-7 1v210c0 7 0 7-2 10h-7v32q-3 3-8 2v15q-2 3-5 2h-3v2q1 8-2 15l-7 1v7l-1 3-1 6h-7v7l-6 2-2-1v3q1 5-2 6l-9 2h-6v5q-4 3-9 2v3q1 3-2 5h-15l1 3-2 5h-33l1 3-1 2h-589v-5h-8v-8h-7l-3-10v-6l-3-1-4-1-1-7v-48l2-5 7-1v-10q-1-3 2-5 2-2 6-2l1-3 2-5h32v-7q6-3 12-2h498l8 1v-3q0-3 2-5l7-2h8l2-7 7-1v-11q0-3 2-5h6V167l1-8q4-4 8-3v-44l1-5h8V84l1-3h7V66l8-4v-2l3-5 6-1v-9l1-6h8v-8q8-3 15-2l1-3 3-5h6v-3q-1-3 2-5h15v-3q-1-3 2-5h24z"})))))}function Ph(s){const e=window.vendorPrefix;return e==="PT"?a.createElement(bh,{themeType:s.themeType}):e==="MV"?a.createElement(_h,{themeType:s.themeType}):e==="NW"?a.createElement(xh,{themeType:"dark"}):e==="HA"?a.createElement($h,{themeType:"dark"}):e&&e!=="@@vendorPrefix@@"?a.createElement(kh,{themeType:s.themeType}):a.createElement(Yh,{themeType:s.themeType})}class nr extends De{onHashChangedBound;constructor(e){super(e),this.onHashChangedBound=this.onHashChanged.bind(this)}componentDidMount(){window.addEventListener("hashchange",this.onHashChangedBound)}componentWillUnmount(){window.removeEventListener("hashchange",this.onHashChangedBound)}onHashChanged(){}static getLocation(){let e=window.location.hash;e=e.replace(/^#/,"");const t=e.split("/").map(i=>{try{return i?decodeURIComponent(i):""}catch{return console.error(`Router: Cannot decode ${i}`),i}});return{tab:t[0]||"",dialog:t[1]||"",id:t[2]||"",arg:t[3]||""}}static doNavigate(e,t,i,r){let o="";const n=nr.getLocation();r!==void 0&&!i&&(i=n.id),i&&!t&&(t=n.dialog),(t&&!e||e===null)&&(e=n.tab),e&&(o=`#${e}`,t&&(o+=`/${t}`,i&&(o+=`/${i}`,r!==void 0&&(o+=`/${r}`)))),window.location.hash!==o&&(window.location.hash=o)}}function Wh(){const s=document.getSelection();if(!(s!=null&&s.rangeCount))return()=>{};let e=document.activeElement;const t=[];for(let i=0;i{s.type==="Caret"&&s.removeAllRanges(),s.rangeCount||t.forEach(i=>s.addRange(i)),e&&e.focus()}}const Bu={"text/plain":"Text","text/html":"Url",default:"Text"},Jh="Copy to clipboard: #{key}, Enter";function Bh(s){const e=`${/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl"}+C`;return s.replace(/#{\s*key\s*}/g,e)}function x4(s,e){let t,i,r,o,n=!1;e=e||{};const M=e.debug||!1;try{if(t=Wh(),i=document.createRange(),r=document.getSelection(),o=document.createElement("span"),o.textContent=s,o.ariaHidden="true",o.style.all="unset",o.style.position="fixed",o.style.top="0px",o.style.clip="rect(0, 0, 0, 0)",o.style.whiteSpace="pre",o.style.userSelect="text",o.addEventListener("copy",l=>{var N,u,L,g;if(l.stopPropagation(),e!=null&&e.format)if(l.preventDefault(),typeof l.clipboardData>"u"){M&&console.warn("unable to use e.clipboardData"),M&&console.warn("trying IE specific stuff"),(N=window.clipboardData)==null||N.clearData();const j=Bu[e.format]||Bu.default;(u=window.clipboardData)==null||u.setData(j,s)}else(L=l.clipboardData)==null||L.clearData(),(g=l.clipboardData)==null||g.setData(e.format,s)}),document.body.appendChild(o),i.selectNodeContents(o),r==null||r.addRange(i),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");n=!0}catch(c){M&&console.error("unable to copy using execCommand: ",c),M&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",s),n=!0}catch(l){M&&console.error("unable to copy using clipboardData: ",l),M&&console.error("falling back to prompt");const N=Bh("message"in e?e.message||"":Jh);window.prompt(N,s)}}finally{r&&(i&&typeof r.removeRange=="function"?r.removeRange(i):r.removeAllRanges()),o&&document.body.removeChild(o),t&&t()}return n}class D{static translations={};static unknownTranslations=[];static lang=window.sysLang||"en";static _disableWarning=!1;static setLanguage(e){e&&(D.lang=e)}static extendTranslations(e,t){if(e.prefix){const i=e;if(typeof i.prefix=="string"){const r=i.prefix;delete i.prefix,Object.keys(i).forEach(o=>{const n=o,M={},c=i[n];Object.keys(c).forEach(l=>{l&&c&&(l.startsWith(r)?M[l]=c[l]:M[`${r}${l}`]=c[l])}),e[n]=M})}else console.warn("Found prefix in translations, but it is not a string")}try{if(!t)e.en&&e.de&&e.ru?Object.keys(e).forEach(i=>{const r=i;D.translations[r]||={},Object.assign(D.translations[r],e[r])}):Object.keys(e).forEach(i=>{const r=e[i];Object.keys(r).forEach(o=>{const n=o,M=D.translations[n];M?M[i]?M[i]!==r[n]&&console.warn(`Translation for word "${i}" in "${n}" was ignored: existing = "${M[i]}", new = ${r[n]}`):M[i]=r[n]:console.warn(`Used unknown language: ${n}`)})});else{D.translations[t]||console.warn(`Used unknown language: ${t}`),D.translations[t]||={};const i=D.translations[t];Object.keys(e).forEach(r=>{i[r]?i[r]!==e[r]&&console.warn(`Translation for word "${r}" in "${t}" was ignored: existing = "${i[r]}", new = ${e[r]}`):i[r]=e[r]})}}catch(i){console.error(`Cannot apply translations: ${i}`)}}static setTranslations(e){e&&(D.translations=e)}static getLanguage(){return D.lang}static t(e,...t){const i=D.translations[D.lang];if(i){const r=i[e];if(r)e=r;else if(D.unknownTranslations.includes(e)||(D.unknownTranslations.push(e),!D._disableWarning&&console.log(`Translate: ${e}`)),D.lang!=="en"&&D.translations.en){const o=D.translations.en[e];o&&(e=o)}}for(const r of t)e=e.replace("%s",r);return e}static i18nShow(e){const t={};e?typeof e=="string"?(D.unknownTranslations.forEach(i=>{i.startsWith(e)&&(t[i]=i.replace(e,""))}),console.log(JSON.stringify(t,null,2))):e&&typeof e=="object"&&(D.unknownTranslations.forEach(i=>{e.test(i)&&(t[i]=i)}),console.log(JSON.stringify(t,null,2))):(D.unknownTranslations.forEach(i=>t[i]=i),console.log(JSON.stringify(t,null,2)))}static disableWarning(e){D._disableWarning=!!e}}window.i18nShow=D.i18nShow;window.i18nDisableWarning=D.disableWarning;const Dt="material",Rh=["Su","Mo","Tu","We","Th","Fr","Sa"],Fh=["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Cn={0:"0x00 - good",1:"0x01 - general problem",2:"0x02 - no connection problem",16:"0x10 - substitute value from controller",32:"0x20 - substitute initial value",64:"0x40 - substitute value from device or instance",128:"0x80 - substitute value from sensor",17:"0x11 - general problem by instance",65:"0x41 - general problem by device",129:"0x81 - general problem by sensor",18:"0x12 - instance not connected",66:"0x42 - device not connected",130:"0x82 - sensor not connected",68:"0x44 - device reports error",132:"0x84 - sensor reports error"},Ru={JVBERi0:"pdf",R0lGODdh:"gif",R0lGODlh:"gif",iVBORw0KGgo:"png","/9j/":"jpg",PHN2Zw:"svg",Qk1:"bmp",AAABAA:"ico"};class m{static namespace=Dt;static INSTANCES="instances";static dateFormat=["DD","MM"];static FORBIDDEN_CHARS=/[^._\-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu;static CapitalWords(e){return(e||"").split(/[\s_]/).filter(t=>t).map(t=>t?t[0].toUpperCase()+t.substring(1).toLowerCase():"").join(" ")}static formatSeconds(e){const t=Math.floor(e/86400);e%=3600*24;const i=Math.floor(e/3600).toString().padStart(2,"0");e%=3600;const r=Math.floor(e/60).toString().padStart(2,"0");e%=60;const o=Math.floor(e).toString().padStart(2,"0");let n="";return t&&(n+=`${t} ${D.t("ra_daysShortText")} `),n+=`${i}:${r}:${o}`,n}static getObjectName(e,t,i,r,o){var c;const n=e[t];let M;if(typeof i=="string"&&!r&&(r={language:i},i=null),r=r||{},r.language||(r.language=e["system.config"]&&e["system.config"].common&&e["system.config"].common.language||window.sysLang||"en"),i!=null&&i.name){const l=i.name;typeof l=="object"?M=r.language&&l[r.language]||l.en:M=l}else if(o&&((c=n==null?void 0:n.common)!=null&&c.desc)){const l=n.common.desc;typeof l=="object"?M=r.language&&l[r.language]||l.en||l.de||l.ru||"":M=l,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else if(!o&&(n!=null&&n.common)){const l=n.common.name||n.common.desc;l&&typeof l=="object"?M=r.language&&l[r.language]||l.en||l.de||l.ru||"":M=l,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else{const l=t.lastIndexOf(".");M=t.substring(l+1).replace(/[_.]/g," "),M=m.CapitalWords(M)}return(M==null?void 0:M.trim())||""}static getObjectNameFromObj(e,t,i,r,o){var c,l;const n=e;let M=(e==null?void 0:e._id)||"";if(typeof t=="string"&&!i&&(i={language:t},t=null),i=i||{},t!=null&&t.name){const N=t.name;typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N}else if(r&&((c=n==null?void 0:n.common)!=null&&c.desc)){const N=n.common.desc;typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else if(!r&&((l=n==null?void 0:n.common)!=null&&l.name)){let N=n.common.name;!N&&n.common.desc&&(N=n.common.desc),typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}return o?M:M.trim()}static getSettingsOrder(e,t,i){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[Dt];const n=i.user||"admin";if(o&&o[n]){if(t){if(o[n].subOrder&&o[n].subOrder[t])return JSON.parse(JSON.stringify(o[n].subOrder[t]))}else if(o[n].order)return JSON.parse(JSON.stringify(o[n].order))}}return null}static getSettingsCustomURLs(e,t,i){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[Dt];const n=i.user||"admin";if(o&&o[n]){if(t){if(o[n].subURLs&&o[n].subURLs[t])return JSON.parse(JSON.stringify(o[n].subURLs[t]))}else if(o[n].URLs)return JSON.parse(JSON.stringify(o[n].URLs))}}return null}static reorder(e,t,i){const r=Array.from(e),[o]=r.splice(t,1);return r.splice(i,0,o),r}static getSettings(e,t,i){let r;const o=(e==null?void 0:e._id)||(t==null?void 0:t.id);let n;if(e&&Object.prototype.hasOwnProperty.call(e,"common")?n=e.common:n=e,n!=null&&n.custom?(r=n.custom,r=r[Dt]&&r[Dt][t.user||"admin"]?JSON.parse(JSON.stringify(r[Dt][t.user||"admin"])):{enabled:!0}):r={enabled:i===void 0?!0:i,useCustom:!1},Object.prototype.hasOwnProperty.call(r,"enabled")||(r.enabled=i===void 0?!0:i),t&&(!r.name&&t.name&&(r.name=t.name),!r.icon&&t.icon&&(r.icon=t.icon),!r.color&&t.color&&(r.color=t.color)),n&&(!r.color&&n.color&&(r.color=n.color),!r.icon&&n.icon&&(r.icon=n.icon),!r.name&&n.name&&(r.name=n.name)),typeof r.name=="object"&&(r.name=t.language&&r.name[t.language]||r.name.en,r.name=(r.name||"").toString().replace(/_/g," "),r.name===r.name.toUpperCase()&&(r.name=r.name[0]+r.name.substring(1).toLowerCase())),!r.name&&o){const M=o.lastIndexOf(".");r.name=o.substring(M+1).replace(/[_.]/g," "),r.name=(r.name||"").toString().replace(/_/g," "),r.name=m.CapitalWords(r.name)}return r}static setSettings(e,t,i){if(e){e.common=e.common||{},e.common.custom=e.common.custom||{},e.common.custom[Dt]=e.common.custom[Dt]||{},e.common.custom[Dt][i.user||"admin"]=t;const r=e.common.custom[Dt][i.user||"admin"];return r.useCommon&&(r.color!==void 0&&(e.common.color=r.color,delete r.color),r.icon!==void 0&&(e.common.icon=r.icon,delete r.icon),r.name!==void 0&&(typeof e.common.name!="object"&&i.language?e.common.name={[i.language]:r.name}:typeof e.common.name=="object"&&i.language&&(e.common.name[i.language]=r.name),delete r.name)),!0}return!1}static getIcon(e,t){return e!=null&&e.icon?e.icon.length<=2?a.createElement("span",{style:t||{}},e.icon):e.icon.startsWith("data:image")?a.createElement("img",{alt:e.name,src:e.icon,style:t||{}}):a.createElement("img",{alt:e.name,src:(e.prefix||"")+e.icon,style:t}):null}static getObjectIcon(e,t){var i;if(typeof e=="object"&&(t=e,e=t==null?void 0:t._id),(i=t==null?void 0:t.common)!=null&&i.icon){let r=t.common.icon;if(typeof r=="string"&&r.length<=2||r.startsWith("data:image"))return r;const o=e.split(".");return o[0]==="system"?r=`adapter/${o[2]}${r.startsWith("/")?"":"/"}${r}`:r=`adapter/${o[0]}${r.startsWith("/")?"":"/"}${r}`,window.location.pathname.match(/adapter\/[^/]+\/[^/]+\.html/)?r=`../../${r}`:window.location.pathname.match(/material\/[.\d]+/)?r=`../../${r}`:window.location.pathname.match(/material\//)&&(r=`../${r}`),r}return null}static splitCamelCase(e){return e?m.CapitalWords(e):""}static isUseBright(e,t){if(!e)return t===void 0?!0:t;e=e.toString(),e.startsWith("#")&&(e=e.slice(1));let i,r,o;const n=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(n&&n.length===4)i=parseInt(n[1],10),r=parseInt(n[2],10),o=parseInt(n[3],10);else{if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===8)e=e.substring(0,6);else if(e.length!==6)return!1;i=parseInt(e.slice(0,2),16),r=parseInt(e.slice(2,4),16),o=parseInt(e.slice(4,6),16)}return i*.299+r*.587+o*.114<=186}static getTimeString(e){if(e=parseFloat(e),Number.isNaN(e))return"--:--";const t=Math.floor(e/3600),i=Math.floor(e%3600/60).toString().padStart(2,"0"),r=(e%60).toString().padStart(2,"0");return t?`${t}:${i}:${r}`:`${i}:${r}`}static getWindDirection(e){return e>=0&&e<11.25?"N":e>=11.25&&e<33.75?"NNE":e>=33.75&&e<56.25?"NE":e>=56.25&&e<78.75?"ENE":e>=78.75&&e<101.25?"E":e>=101.25&&e<123.75?"ESE":e>=123.75&&e<146.25?"SE":e>=146.25&&e<168.75?"SSE":e>=168.75&&e<191.25?"S":e>=191.25&&e<213.75?"SSW":e>=213.75&&e<236.25?"SW":e>=236.25&&e<258.75?"WSW":e>=258.75&&e<281.25?"W":e>=281.25&&e<303.75?"WNW":e>=303.75&&e<326.25?"NW":e>=326.25&&e<348.75?"NNW":"N"}static padding(e){return typeof e=="string"?e.length<2?`0${e}`:e:e<10?`0${e}`:e.toString()}static setDataFormat(e){e&&(m.dateFormat=e.toUpperCase().split(/[.-/]/),m.dateFormat.splice(m.dateFormat.indexOf("YYYY"),1))}static date2string(e){if(typeof e=="string"){if(e=e.trim(),!e)return"";if(e.match(/^[\w\s]+$/))return e;const i=e.match(/(\d{1,4})[-./](\d{1,2})[-./](\d{1,4})/);if(i){const r=[parseInt(i[1],10),parseInt(i[2],10),parseInt(i[3],10)],o=r.find(n=>n>31);if(o!==void 0){r.splice(r.indexOf(o),1);const n=r.find(M=>M>12);n?(r.splice(r.indexOf(n),1),e=new Date(o,r[0]-1,n)):m.dateFormat[0][0]==="M"&&m.dateFormat[1][0]==="D"?(e=new Date(o,r[0]-1,r[1]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[1]-1,r[0]))):m.dateFormat[0][0]==="D"&&m.dateFormat[1][0]==="M"?(e=new Date(o,r[1]-1,r[0]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[0]-1,r[1]))):e=new Date(e)}else e=new Date(e)}else e=new Date(e)}else e=new Date(e);let t=D.t(`ra_dow_${Rh[e.getDay()]}`).replace("ra_dow_","");return t+=`. ${e.getDate()} ${D.t(`ra_month_${Fh[e.getMonth()]}`).replace("ra_month_","")}`,t}static renderTextWithA(e){let t=e.match(/
||[^<]+<\/b>|[^<]+<\/i>/);if(t){const i=[];let r=1;do{const o=e.substring(0,t.index);if(e=e.substring((t.index||0)+t[0].length),o&&i.push(a.createElement("span",{key:`a${r++}`},o)),t[0].startsWith(""))i.push(a.createElement("b",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith(""))i.push(a.createElement("i",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith("([^<]*)||[^<]+<\/b>|[^<]+<\/i>/):null,!t&&e&&i.push(a.createElement("span",{key:`a${r++}`},e))}while(t);return i}return e}static getSmartName(e,t,i,r){var n,M;if(!t){if(!r)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const c=e;return(n=c==null?void 0:c.common)!=null&&n.custom&&c.common.custom[i]?c.common.custom[i].smartName:void 0}if(!r)return e[t].common.smartName;const o=e[t];return(M=o==null?void 0:o.common)!=null&&M.custom&&o.common.custom[i]&&o.common.custom[i].smartName||null}static getSmartNameFromObj(e,t,i){var o,n;if(!i)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const r=(n=(o=e==null?void 0:e.common)==null?void 0:o.custom)==null?void 0:n[t];return r?r.smartName:void 0}static enableSmartName(e,t,i){const r=e;i?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName={}):r.common.smartName={}}static removeSmartName(e,t,i){var o,n;const r=e;i?(n=(o=r==null?void 0:r.common)==null?void 0:o.custom)!=null&&n[t]&&(r.common.custom[t]=null):r.common.smartName=null}static updateSmartName(e,t,i,r,o,n){var l,N;const M=D.getLanguage(),c=e;if(typeof c.common.smartName=="string"){const u=c.common.smartName;c.common.smartName={},c.common.smartName[M]=u}if((l=c.native)!=null&&l.byON){delete c.native.byON;let u=c.common.smartName;u&&typeof u!="object"&&(u={en:u,[M]:u}),c.common.smartName=u}if(r!==void 0&&(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},r?c.common.custom[o].smartName.smartType=r:delete c.common.custom[o].smartName.smartType):(c.common.smartName||={},r?c.common.smartName.smartType=r:delete c.common.smartName.smartType)),i!==void 0&&(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},c.common.custom[o].smartName.byON=i):(c.common.smartName||={},c.common.smartName.byON=i)),t!==void 0){let u;if(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},u=c.common.custom[o].smartName):(c.common.smartName||={},u=c.common.smartName),u[M]=t,u&&(!u[M]||u[M]===c.common.name&&!c.common.role)){delete u[M];let L=!0;for(const g in u)if(Object.prototype.hasOwnProperty.call(u,g)){L=!1;break}if(L)if(n&&((N=c.common.custom)!=null&&N[o]))c.common.custom[o].smartName.byON===void 0?delete c.common.custom[o]:(delete c.common.custom[o].en,delete c.common.custom[o].de,delete c.common.custom[o].ru,delete c.common.custom[o].nl,delete c.common.custom[o].pl,delete c.common.custom[o].it,delete c.common.custom[o].fr,delete c.common.custom[o].pt,delete c.common.custom[o].es,delete c.common.custom[o].uk,delete c.common.custom[o]["zh-cn"]);else if(c.common.smartName&&c.common.smartName.byON!==void 0){const g=c.common.smartName;delete g.en,delete g.de,delete g.ru,delete g.nl,delete g.pl,delete g.it,delete g.fr,delete g.pt,delete g.es,delete g.uk,delete g["zh-cn"]}else c.common.smartName=null}}}static updateSmartNameEx(e,t){var o,n,M,c;const i=D.getLanguage(),r=e;if(typeof r.common.smartName=="string"){const l=r.common.smartName;r.common.smartName={},r.common.smartName[i]=l}if((o=r.native)!=null&&o.byON){delete r.native.byON;let l=r.common.smartName;l&&typeof l!="object"&&(l={en:l,[i]:l}),r.common.smartName=l}if(t.smartType!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},t.smartType?r.common.custom[t.instanceId].smartName.smartType=t.smartType:delete r.common.custom[t.instanceId].smartName.smartType):(r.common.smartName||={},t.smartType?r.common.smartName.smartType=t.smartType:delete r.common.smartName.smartType)),t.byON!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.byON=t.byON):(r.common.smartName||={},r.common.smartName.byON=t.byON)),t.noAutoDetect!==void 0&&(t.noCommon?t.noAutoDetect?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.noAutoDetect=t.noAutoDetect):(M=(n=r.common.custom)==null?void 0:n[t.instanceId])!=null&&M.smartName&&delete r.common.custom[t.instanceId].smartName.noAutoDetect:!t.noAutoDetect&&r.common.smartName?delete r.common.smartName.noAutoDetect:(r.common.smartName||={},r.common.smartName.noAutoDetect=t.noAutoDetect)),t.smartName!==void 0){let l;if(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},l=r.common.custom[t.instanceId].smartName):(r.common.smartName||={},l=r.common.smartName),l[i]=t.smartName,l&&(!l[i]||l[i]===r.common.name&&!r.common.role)){delete l[i];let N=!0;for(const u in l)if(Object.prototype.hasOwnProperty.call(l,u)){N=!1;break}if(N)if(t.noCommon&&((c=r.common.custom)!=null&&c[t.instanceId]))r.common.custom[t.instanceId].smartName.byON===void 0?delete r.common.custom[t.instanceId]:(delete r.common.custom[t.instanceId].en,delete r.common.custom[t.instanceId].de,delete r.common.custom[t.instanceId].ru,delete r.common.custom[t.instanceId].nl,delete r.common.custom[t.instanceId].pl,delete r.common.custom[t.instanceId].it,delete r.common.custom[t.instanceId].fr,delete r.common.custom[t.instanceId].pt,delete r.common.custom[t.instanceId].es,delete r.common.custom[t.instanceId].uk,delete r.common.custom[t.instanceId]["zh-cn"]);else if(r.common.smartName&&r.common.smartName.byON!==void 0){const u=r.common.smartName;delete u.en,delete u.de,delete u.ru,delete u.nl,delete u.pl,delete u.it,delete u.fr,delete u.pt,delete u.es,delete u.uk,delete u["zh-cn"]}else r.common.smartName=null}}}static disableSmartName(e,t,i){const r=e;i?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName=!1):r.common.smartName=!1}static copyToClipboard(e,t){return t&&(t.stopPropagation(),t.preventDefault()),x4(e)}static getFileExtension(e){const t=(e||"").lastIndexOf(".");return t!==-1?e.substring(t+1).toLowerCase():null}static formatBytes(e){if(Math.abs(e)<1024)return`${e} B`;const t=["KB","MB","GB"];let i=-1;do e/=1024,++i;while(Math.abs(e)>=1024&&i186?`#000000${i||""}`:`#FFFFFF${i||""}`;const M=(255-r).toString(16),c=(255-o).toString(16),l=(255-n).toString(16);return`#${M.padStart(2,"0")}${c.padStart(2,"0")}${l.padStart(2,"0")}${i||""}`}static color2rgb(e){if(e==null||e===""||typeof e!="string")return!1;if(e.startsWith("rgba")){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),\s*([.\d]+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else if(e.startsWith("rgb")){const t=e.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else e.startsWith("#")&&(e=e.slice(1));return e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length!==6&&e.length!==8?(console.warn(`Cannot invert color: ${e}`),!1):[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}static rgb2lab(e){let t=e[0]/255,i=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=(t*.4124+i*.3576+r*.1805)/.95047,n=t*.2126+i*.7152+r*.0722,M=(t*.0193+i*.1192+r*.9505)/1.08883;return o=o>.008856?o**.33333333:7.787*o+.137931,n=n>.008856?n**.33333333:7.787*n+.137931,M=M>.008856?M**.33333333:7.787*M+.137931,[116*n-16,500*(o-n),200*(n-M)]}static colorDistance(e,t){const i=m.color2rgb(e),r=m.color2rgb(t);if(!i||!r)return 0;const o=m.rgb2lab(i),n=m.rgb2lab(r),M=o[0]-n[0],c=o[1]-n[1],l=o[2]-n[2],N=Math.sqrt(o[1]*o[1]+o[2]*o[2]),u=Math.sqrt(n[1]*n[1]+n[2]*n[2]),L=N-u;let g=c*c+l*l-L*L;g=g<0?0:Math.sqrt(g);const j=1+.045*N,y=1+.015*N,T=M,d=L/j,I=g/y,w=T*T+d*d+I*I;return w<0?0:w}static _toVal(e){let t,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e))for(let r=0;r{if(i=i.trim(),i){const r=i.split("="),o=decodeURIComponent(r[0]).trim();if(r.length>1){const n=decodeURIComponent(r[1]);if(n==="true")t[o]=!0;else if(n==="false")t[o]=!1;else{const M=parseFloat(n);M.toString()===n?t[o]=M:t[o]=n}}else t[o]=!0}}),t}static getParentId(e){const t=(e||"").toString().split(".");return t.length>1?(t.pop(),t.join(".")):null}static formatDate(e,t){if(!e)return"";let i;const r=(e.getMonth()+1).toString().padStart(2,"0"),o=e.getDate().toString().padStart(2,"0");return t==="MM/DD/YYYY"?i=`${r}/${o}/${e.getFullYear()}`:i=`${e.getFullYear()}-${r}-${o}`,i+=` ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`,i}static formatTime(e){if(e){e=Math.round(e);const t=Math.floor(e/(3600*24)),i=Math.floor(e%(3600*24)/3600),r=Math.floor(e%3600/60),o=e%60;return t?`${t}.${i.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:i?`${i}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`0:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}return"0:00:00"}static MDtext2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static MDgetTitle(e){var o;const t=m.MDextractHeader(e),i=t.header;let r=t.body;if(!i.title){r=r.replace(/{[^}]*}/g,""),r=r.trim();const n=r.replace(/\r/g,"").split(` +}`;function Uh(s){const e=s.themeType||"dark",t=s.size||270,i=t*1.5,r=t*14/270,o=t*280/270;return a.useEffect(()=>{if(!window.document.getElementById(Wu)){const n=window.document.createElement("style");n.setAttribute("id",Wu),n.innerHTML=bh,window.document.head.appendChild(n)}},[]),a.createElement("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundImage:s.backgroundImage&&s.backgroundImage!=="@@loginBackgroundImage@@"?s.backgroundImage:window.loadingBackgroundImage&&window.loadingBackgroundImage!=="@@loginBackgroundImage@@"?`url(${window.loadingBackgroundImage})`:void 0,backgroundColor:s.backgroundColor&&s.backgroundColor!=="@@loginBackgroundColor@@"?s.backgroundColor:window.loadingBackgroundColor&&window.loadingBackgroundColor!=="@@loginBackgroundColor@@"?window.loadingBackgroundColor:e==="dark"?"#000":"#FFF",backgroundSize:"cover"}},a.createElement("div",{style:{position:"relative",width:i,height:i,display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("div",{style:{position:"absolute",top:-r,left:-r,right:-r,bottom:-r,border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.50)`,borderRadius:"50%",animation:"loaderHA-spin 3.6s linear infinite"}}),a.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",border:`${r}px solid transparent`,borderTop:`${r}px solid rgba(219, 10, 51, 0.75)`,borderRadius:"50%",animation:"loaderHA-spin 2.2s linear infinite"}}),a.createElement("div",{style:{width:t,height:t,zIndex:1,display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 69.6 148.1",style:{width:"100%",height:"100%"}},a.createElement("path",{fill:"#db0a33",d:"M69.5,100.6c0-.4,0-.8-.2-1.1v-.7c-.2-.4-.3-.8-.5-1.2,0-.2-.2-.5-.3-.7,0,0,0-.2,0-.2,0-.2,0-.3-.2-.5l-.4-.7-.4-.6c-1-1.6-2.4-3-4.2-4.3-.3-.2-.6-.4-.9-.6,0,0-.2,0-.3-.2-.3-.2-.6-.3-.9-.5-.2,0-.3-.2-.5-.3-.3-.2-.6-.3-.9-.5,0,0-.2,0-.3-.2-1-2.7-2.4-4.9-3.8-6.7h0c2.5,0,6.6-.3,7.5-3,3.5-3,2.5-9.7,2.5-10,0-.6-.2-1.1-.4-1.7h0v-.3c.5-3-.4-7.1-.5-7.7h0l-.3-1.1c0-.3-.2-.7-.4-1,0-.4-.3-.7-.4-1,0-.3-.3-.7-.5-1s-.4-.7-.6-1c-.2-.3-.4-.6-.6-.9l-.4-.4-.4-.4-.4-.4c0,0-.3-.3-.5-.4-.3-.2-.6-.4-1-.6-.2,0-.4-.2-.5-.2-.2,0-.4,0-.6-.2-.2,0-.4,0-.6,0h-1.8c-.4,0-.8,0-1.1.2-.4,0-.7.2-1.1.4h0c-1.6-.2-2.6-1-3.1-1.7h0c2-.9,3.5-1.9,4.6-3,2.6-2.2,4-5.1,4.7-7.2,3.4-1.1,5.4-4,5.4-4h0c4.6-5.3,1.2-15.1,1.2-15.1,0,0-.8,4.2-4,5.5,0-.3-.2-.6-.3-1.1s-.3-1.1-.6-1.7c-.2-.7-.5-1.4-.9-2.2-.4-.8-.8-1.6-1.4-2.4-.5-.8-1.2-1.7-1.9-2.5h0C59.2,6.6,49.2.3,49.2.3c0,0,3.3,5.8,1.3,9.9,0,0-3.5-.8-5.7-.8s-2.4.1-3.5.3c-.5.1-1.1.2-1.6.3-.3,0-.5.1-.8.2-.2,0-.5.1-.7.2-.5.1-.9.2-1.3.4-.4.1-.8.3-1.2.4-.4.1-.7.2-1,.3s-.6.2-.9.3h-.2c-2-2.8-3.7-7.5,1.8-11.9,0,0-13,5.3-8.2,17,0,0,0,.2-.1.4h0c-.3.3-.6.7-1,1.3-.3.6-.7,1.3-.9,2.1-.1.4-.2.8-.2,1.3v1.5c-.2-.1-.5-.2-.9-.4-1.7-.8-1.7-2.8-1.7-2.8-1.1,8.3,4.2,13.3,5.2,14.1,0,.4,0,.7-.2,1v.4c-.2,0-.3.3-.4.5-.1.4-.2.7-.3,1.1-.1.7-.1,1.5,0,2.2s.3,1.4.5,2c.3.6.6,1.2.9,1.7,0,0,0,0,.1.2.4.6,1,1.4,2,2h.1c.2,0,.8.5,1.7.7.2.2,1.5,1.7,3.1,2.1-.2,1.1-1,2.8-3.4,3.7,0,0-14.2-.4-13.2,13.5-6.6,8.7-3.8,13.4-3.8,13.4-.9.6-.9,1.9-.5,3,0,0,0,.3.2.5,0,0,0,0,.3.4.3.4.6.7,1,.8,1.1.7,3.1,1.5,6.4,1.1.2.3,1.3,1.8,1.3,2.2.5,2.3,1.2,4.5,1.3,6.8l.2,1.3c-2.2-.2-11-.2-16.6,9.1,0,0-.2.2-.2.4l-.5.9-.6,1.2h0c-.3.7-.7,1.7-1.1,2.8-.5.4-1.2,0-1.7-.3-.4-.4-.7-.7-.9-1.1,0,0,0-.2,0-.3v-.2s0-.2-.2-.2h0c0,0,0,0-.2-.2h-.4s-.2,0-.2,0c-.2,0-.2.2-.3.3,0,0-.1.2-.2.2,0,.2-.2.3-.2.5-.2.6-.4,1.2-.6,1.8-.6,2.4-.6,4.9-.1,7.3.2,1.2.6,2.4,1.1,3.5.5,1.1,1.2,2.1,2,3.1.8.9,1.7,1.8,2.7,2.5s2,1.3,3.1,1.8h0l.6.4-.3-.7c-.2-.4-.3-.9-.5-1.3-.1-.4-.2-.9-.3-1.3-.1-.9-.2-1.8,0-2.7,0-.4.2-.8.4-1.2.2-.4.4-.7.7-1.1.6-.8,1-1.6,1.5-2.5.4-.9.8-1.8,1.1-2.7.1-.5.3-1,.3-1.5v-.9h0c.1-2.3-1.9-3-3-2.9-.9,0-1.7.2-2,.2.7-1.3,1.3-2.4,2-3.4h0c.2-.4.4-.6.6-.9.4-.5.8-1,1.2-1.5.1,0,.2-.3.3-.4h0c.1,0,.2-.2.3-.4.1,0,.2-.3.4-.4,6.5-6.5,12.5-2.9,12.5-2.9,0,0,1.1,3.7,1.6,4.6h0c1,2.3,2.7,4.6,4.1,6.9h0c0,0,0,4.8,2.2,7.2.5.6,1.1,1.3,1.7,2.2.3.5.5,1,.7,1.4.2.3.3.6.4.9.3.4.5.8.8,1.3s.6,1,.8,1.6c.2.5.4,1,.6,1.5,0,0,1,5.1.7,7.4-3.3.9-5.5,2.4-7.4,3.2-1,.3-3.4,2-5.5,1.9h-.5c0,.1-3.6.3-2.7,3.1,0,0,.2,3.6,5.8,2.9,1.8-.1,7.5-.5,9.1-.3,1.6.2,2.8.2,3.7.1,1.3,0,3.8,0,5.3-.4.4,1.8,3.2,2.4,6,1.5,3.6,1.6,13.5,2,15.6-1.6,2.4-4.1-2.4-8.6-4.1-12.6-3.8-9.3-.8-14-1.6-16.8,0-.7-.2-1.8-.4-3.2.8-.4,1.5-.8,2.2-1.3,1-.7,1.7-1.4,2.3-2.1l.2-.2c0,0,.2-.3.3-.4l.6-.9.6-1.2.4-1.1.3-1.2v-.8c0-.3,0-.5,0-.7h0v-2.4h.2ZM52.6,131.9c-.3.4-.7.9-1.2,1.6-1-.6-2.7-2.2-3.3-4.3,0-.2,0-.3-.2-.5-1.1-6.9-2.6-9.7-3.2-10.6-1-3.7-1.7-7.4-1.3-9.6,0,0,3.6,8.2,6.4,10,0,0,3.7,8.5,4.5,9.9.6,1-.9,2.3-1.7,3.5ZM63.6,102.7h0v.2h0v.9c0,0-.3.4-.3.4,0,0,0,.2,0,.3v.2h0v.2h0l-.2.2c-.3.6-.8,1.1-1.3,1.5h0c-.3-2.4-.6-5.1-.8-8.2.2-.5.3-1.1.4-1.7l.2.2c.2.2.4.4.5.6.2.2.3.4.5.7,0,.2.3.4.4.7h0c0,.3.2.5.3.7,0,.2.2.5.2.7h0v.3c0,.2,0,.4,0,.6v.7h0v.7h0Z"}))),a.createElement("div",{style:{position:"absolute",width:o,zIndex:2,top:"57.5%",left:"50%",transform:"translate(-50%, -155%)"}},a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 7152 512",width:"100%",height:"auto"},a.createElement("path",{fill:"#fff",d:"M4566 0h1053v5h25c2 5 2 5 1 8h16q3 3 2 7l3 1 4 1 2 7h2l12 1q3 1 2 6v3h7q3 4 2 10v6h3l4 1 1 8 3-1 5 2 1 7 7 1 1 14v2h3q3 0 5 2l1 9v22l3 1 4 1 1 7v41q0 3-3 5l-5 1v26q1 3-2 5h-8l1 2v8l-1 8h-8v16q-3 3-7 2l-1 3-2 5h-6v6l-1 11h-7l-1 8-10 1h-6l-1 3-1 4-7 2v3l-2 4h-16l1 2-2 6h-15v3l-3 6-10 1h-11l-10 2q1 3-2 5l-8 1h-796l-4-1-2-7h-2q-7 0-14-2v-8h-8l-1-7h-3l-4-1q-2-5-2-10v-62l2-6 7-1v-3l2-4h7v-8l5-1h3v-3l1-5q3-2 8-1h57l140-1h602v-3l2-4h7l1-8 8-1v-31l-7-1q-2-2-2-5v-2l-3-1q-5 0-6-4v-5h-3l-11 1-2-2v-7h-917l-1 8-23 1h-14l-5-1v7l-9 3h-7l-1 3-1 4-9 1h-6l-1 3-2 5h-6v3q0 3-2 5l-6 1v3q0 3-4 5h-5v15l-2 2h-7v16h-8v110h8v24h6l3 3v5l3 1q4 0 6 4l-1 5 9 2v6h3q3 0 5 2l1 6h2l5 1q2 4 0 8h2q12-3 23 1l1 5v3l2-1h1069l9 1 1 8h18l7 2 1 6h3q3 0 5 4l1 5h3q3 0 5 4v12l3 1 5 2v21l1 17v3l-1 8-5 3-3 1v8l-2 7h-8l1 2-1 6h-16v5H4571v-5h-42v-8h-16q-2-3-2-7h-7l-4-1q-3 1-5-2v-7l-2 1h-8q-4 0-7-2l-1-8-3 1h-3q-2-1-2-6v-3h-3q-5 1-6-2l1-6h-3l-6-2-1-6h-3q-3 0-5-4v-6l-3 1h-3q-3-4-3-10v-7l-8-1 1-8h-9l-1-7v-2l1-8h-7q-2-3-2-8v-18l-2 1-6-2-1-9v-23h-2q-3 1-5-2V186l1-3h7v-32q3-4 8-3v-19q0-4 3-6h6l-1-2q-1-8 3-14h7v-7q3-2 7-2v-9c1-6 1-6 3-8h6v-3l1-5 7-1 1-3q1-5 3-5l6-1v-3q-1-3 2-5h6v-3q-1-3 2-5l6-1v-2l2-5 7-2 1-6 6-2 2 1v-3q-1-4 2-6l7-1h7v-3l2-4h16V5h34l-1-4zM1620 0h1065v5h23l3 1v6l15 1 2 6-1 2h7q3 3 3 8h3l5 3v7h3l5 1v7h3l5 1v7h3q4 0 6 2l1 6 3 1 5 2v15l8 2v24h7q3 4 2 10v395h-130V169l-7-2q-2-4-2-9v-6l-3-1-5-2v-15l-11 1-2-1-4-2v-7l-3 1h-17l-5-1v-8h-900v7c-4 4-14 2-19 2h-18l-5-1v3q1 5-2 6l-15 1h-4l-5-1v7q-3 3-7 2l-1 3-2 5h-7l1 3-2 5h-8v8l-4 1h-3v9c-1 6-1 6-3 8h-6v21l-1 3-7 1v83l7 1 1 3v22h3l5 1 1 15h3l4 2v7h7q3 4 2 9l9 2v6h3q3-1 5 2l1 6h11q3 0 5 2l1 6h4l12 2 1 7h714l8 2 1 5-1 2h18l8 2-1 6 9 1 1 9 7-1 1 9v3l1 6v7h3l4 2v33l-6 2-2-1v22l-2 4-7 1v3l-1 4h-8v5h-784v-5h-41c-2-5-2-5-1-8h-16q-2-3-2-7h-7l-4-1q-3 0-5-2v-7l-2 1h-4l-3-6v-3h-10q-3 0-7-2v-7h-3l-5-1-1-7h-3q-3 1-5-2l1-6-8-1q-2-5-2-11v-6h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-6-3-1q-5-1-5-3-2-8 0-14h-7q-2-5-2-10v-7l-2 1-4-1q-4-3-3-7v-18h-2q-3 1-5-2v-41h-7q-2-3-2-8V193q4-2 9-2v-41l5-1h3v-21l1-4 7-1v-10l2-6h7l-1-2q-1-7 2-15l8-1v-3l1-5h7V66q3-4 8-3v-3l3-5 6-1v-3l2-4h7v-7l6-2 2 1v-3q0-5 2-6l10-1h6l-1-2 1-4q4-3 9-2h7v-3q0-3 2-5h15l-1-3 3-5 7-1h25zM4137 0h130v392q1 3-2 5l-6 1v20l-1 4-7 2v2q1 7-2 13l-7 1v4c0 10 0 10-3 13h-6v3q1 3-2 5l-6 1v3l-2 4h-7v3l-2 6h-7v3q1 4-2 6h-6v3q1 3-2 5h-24v3l-1 5h-24l1 2v2q-3 2-6 1H3057v-5h-24l-2-6 1-2h-16l-1-5v-3h-9c-6 0-6 0-8-2l-1-7-3 1-5-3v-7l-2 1-6-2v-7h-7l-2-6 1-2h-3q-4 1-6-2v-6h-3l-4-1q-2-5-2-10v-7h-3q-3 1-5-2v-6h-3q-3 1-5-2l-1-7v-16h-3q-5-1-5-3l-1-7v-17l-2 1-6-2v-77c0-6 0-6 2-8h6v-27q-1-4 2-7l7-1v-11q-1-3 2-5l6-1v-7l1-4 1-5h7v-15q3-4 8-3l1-3 1-4 8-1v-3l1-5h7v-3q-1-4 2-6l6 1v-3q0-4 2-6l6-2v-2l3-5h15v-3q-1-3 2-5h15l-1-2 1-4 3-3h21l1-3q1-5 3-5l14-1h638v-2l2-6h148q3 0 5 2l1 6h13c7 0 7 0 11 2l2 7 7 1v8h7q3 5 2 12v66l-1 8-8 1v7q-3 3-7 2l-1 3-1 4-7 1h-211l-230 1h-333v3l-2 4h-24v7l-6 3q-4 3-4 7l-7 1v3q1 3-2 5h-7v3l-1 5h-7l1 49 6 1 1 5v3h8l1 6v3l-1 7h11q4-1 7 3v6l3-1 12 1q3 2 2 6v3l3-1h993l5 1v-3q-1-4 2-6l6-1v-3q0-3 4-5h6l-1-2 2-6h7v-3l2-14h5zM0 0h126l1 8v144l-1 5h932l106-1 7 1h4q3 0 5 2l2 6h52l5 2v7h9l8 1q2 4 1 8h2q7-2 14 1l1 7h11l5 1q2 4 1 8l3-1 5 3v7h8v16h7l4 8h2l5 3v23h3q3 0 5 2v24h7q3 7 2 14v137l-1 32v16q1 6-2 7h-5v7l-1 3-1 6h-16l1 3-1 2h-79v-4h-7l-3-1-6-1-1-8v-7h-6q-2-4-2-10V338h-3q-3 1-5-2l-1-9v-6h-3l-5-2v-16h-16l-2-6 1-2h-16l-1-1v-7H126l1 2v188c0 11 0 11-3 14h-7v15l-4 1h-12v5H22l-1-3 1-2h-3q-5 1-6-2v-5h-3l-5-2v-7H0zM6537 0h606v5l8 1 1 16v82l-3 4-8 1h-6v3l-1 4q-5 2-10 1h-509v3l-1 5q-13 2-24 0v3q1 5-2 6l-6 1h-4l-5-1v3l-1 5-7 2v8q0 6-2 7l-7 1v210c0 7 0 7-2 10h-7v32q-3 3-8 2v15q-2 3-5 2h-3v2q1 8-2 15l-7 1v7l-1 3-1 6h-7v7l-6 2-2-1v3q1 5-2 6l-9 2h-6v5q-4 3-9 2v3q1 3-2 5h-15l1 3-2 5h-33l1 3-1 2h-589v-5h-8v-8h-7l-3-10v-6l-3-1-4-1-1-7v-48l2-5 7-1v-10q-1-3 2-5 2-2 6-2l1-3 2-5h32v-7q6-3 12-2h498l8 1v-3q0-3 2-5l7-2h8l2-7 7-1v-11q0-3 2-5h6V167l1-8q4-4 8-3v-44l1-5h8V84l1-3h7V66l8-4v-2l3-5 6-1v-9l1-6h8v-8q8-3 15-2l1-3 3-5h6v-3q-1-3 2-5h15v-3q-1-3 2-5h24z"})))))}function $h(s){const e=window.vendorPrefix;return e==="PT"?a.createElement(Qh,{themeType:s.themeType}):e==="MV"?a.createElement(Eh,{themeType:s.themeType}):e==="NW"?a.createElement(_h,{themeType:"dark"}):e==="HA"?a.createElement(Uh,{themeType:"dark"}):e&&e!=="@@vendorPrefix@@"?a.createElement(Sh,{themeType:s.themeType}):a.createElement(vh,{themeType:s.themeType})}class nr extends De{onHashChangedBound;constructor(e){super(e),this.onHashChangedBound=this.onHashChanged.bind(this)}componentDidMount(){window.addEventListener("hashchange",this.onHashChangedBound)}componentWillUnmount(){window.removeEventListener("hashchange",this.onHashChangedBound)}onHashChanged(){}static getLocation(){let e=window.location.hash;e=e.replace(/^#/,"");const t=e.split("/").map(i=>{try{return i?decodeURIComponent(i):""}catch{return console.error(`Router: Cannot decode ${i}`),i}});return{tab:t[0]||"",dialog:t[1]||"",id:t[2]||"",arg:t[3]||""}}static doNavigate(e,t,i,r){let o="";const n=nr.getLocation();r!==void 0&&!i&&(i=n.id),i&&!t&&(t=n.dialog),(t&&!e||e===null)&&(e=n.tab),e&&(o=`#${e}`,t&&(o+=`/${t}`,i&&(o+=`/${i}`,r!==void 0&&(o+=`/${r}`)))),window.location.hash!==o&&(window.location.hash=o)}}function Ph(){const s=document.getSelection();if(!(s!=null&&s.rangeCount))return()=>{};let e=document.activeElement;const t=[];for(let i=0;i{s.type==="Caret"&&s.removeAllRanges(),s.rangeCount||t.forEach(i=>s.addRange(i)),e&&e.focus()}}const Ju={"text/plain":"Text","text/html":"Url",default:"Text"},Wh="Copy to clipboard: #{key}, Enter";function Jh(s){const e=`${/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl"}+C`;return s.replace(/#{\s*key\s*}/g,e)}function E4(s,e){let t,i,r,o,n=!1;e=e||{};const M=e.debug||!1;try{if(t=Ph(),i=document.createRange(),r=document.getSelection(),o=document.createElement("span"),o.textContent=s,o.ariaHidden="true",o.style.all="unset",o.style.position="fixed",o.style.top="0px",o.style.clip="rect(0, 0, 0, 0)",o.style.whiteSpace="pre",o.style.userSelect="text",o.addEventListener("copy",l=>{var N,u,L,g;if(l.stopPropagation(),e!=null&&e.format)if(l.preventDefault(),typeof l.clipboardData>"u"){M&&console.warn("unable to use e.clipboardData"),M&&console.warn("trying IE specific stuff"),(N=window.clipboardData)==null||N.clearData();const j=Ju[e.format]||Ju.default;(u=window.clipboardData)==null||u.setData(j,s)}else(L=l.clipboardData)==null||L.clearData(),(g=l.clipboardData)==null||g.setData(e.format,s)}),document.body.appendChild(o),i.selectNodeContents(o),r==null||r.addRange(i),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");n=!0}catch(c){M&&console.error("unable to copy using execCommand: ",c),M&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",s),n=!0}catch(l){M&&console.error("unable to copy using clipboardData: ",l),M&&console.error("falling back to prompt");const N=Jh("message"in e?e.message||"":Wh);window.prompt(N,s)}}finally{r&&(i&&typeof r.removeRange=="function"?r.removeRange(i):r.removeAllRanges()),o&&document.body.removeChild(o),t&&t()}return n}class D{static translations={};static unknownTranslations=[];static lang=window.sysLang||"en";static _disableWarning=!1;static setLanguage(e){e&&(D.lang=e)}static extendTranslations(e,t){if(e.prefix){const i=e;if(typeof i.prefix=="string"){const r=i.prefix;delete i.prefix,Object.keys(i).forEach(o=>{const n=o,M={},c=i[n];Object.keys(c).forEach(l=>{l&&c&&(l.startsWith(r)?M[l]=c[l]:M[`${r}${l}`]=c[l])}),e[n]=M})}else console.warn("Found prefix in translations, but it is not a string")}try{if(!t)e.en&&e.de&&e.ru?Object.keys(e).forEach(i=>{const r=i;D.translations[r]||={},Object.assign(D.translations[r],e[r])}):Object.keys(e).forEach(i=>{const r=e[i];Object.keys(r).forEach(o=>{const n=o,M=D.translations[n];M?M[i]?M[i]!==r[n]&&console.warn(`Translation for word "${i}" in "${n}" was ignored: existing = "${M[i]}", new = ${r[n]}`):M[i]=r[n]:console.warn(`Used unknown language: ${n}`)})});else{D.translations[t]||console.warn(`Used unknown language: ${t}`),D.translations[t]||={};const i=D.translations[t];Object.keys(e).forEach(r=>{i[r]?i[r]!==e[r]&&console.warn(`Translation for word "${r}" in "${t}" was ignored: existing = "${i[r]}", new = ${e[r]}`):i[r]=e[r]})}}catch(i){console.error(`Cannot apply translations: ${i}`)}}static setTranslations(e){e&&(D.translations=e)}static getLanguage(){return D.lang}static t(e,...t){const i=D.translations[D.lang];if(i){const r=i[e];if(r)e=r;else if(D.unknownTranslations.includes(e)||(D.unknownTranslations.push(e),!D._disableWarning&&console.log(`Translate: ${e}`)),D.lang!=="en"&&D.translations.en){const o=D.translations.en[e];o&&(e=o)}}for(const r of t)e=e.replace("%s",r);return e}static i18nShow(e){const t={};e?typeof e=="string"?(D.unknownTranslations.forEach(i=>{i.startsWith(e)&&(t[i]=i.replace(e,""))}),console.log(JSON.stringify(t,null,2))):e&&typeof e=="object"&&(D.unknownTranslations.forEach(i=>{e.test(i)&&(t[i]=i)}),console.log(JSON.stringify(t,null,2))):(D.unknownTranslations.forEach(i=>t[i]=i),console.log(JSON.stringify(t,null,2)))}static disableWarning(e){D._disableWarning=!!e}}window.i18nShow=D.i18nShow;window.i18nDisableWarning=D.disableWarning;const Dt="material",Bh=["Su","Mo","Tu","We","Th","Fr","Sa"],Rh=["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Cn={0:"0x00 - good",1:"0x01 - general problem",2:"0x02 - no connection problem",16:"0x10 - substitute value from controller",32:"0x20 - substitute initial value",64:"0x40 - substitute value from device or instance",128:"0x80 - substitute value from sensor",17:"0x11 - general problem by instance",65:"0x41 - general problem by device",129:"0x81 - general problem by sensor",18:"0x12 - instance not connected",66:"0x42 - device not connected",130:"0x82 - sensor not connected",68:"0x44 - device reports error",132:"0x84 - sensor reports error"},Bu={JVBERi0:"pdf",R0lGODdh:"gif",R0lGODlh:"gif",iVBORw0KGgo:"png","/9j/":"jpg",PHN2Zw:"svg",Qk1:"bmp",AAABAA:"ico"};class m{static namespace=Dt;static INSTANCES="instances";static dateFormat=["DD","MM"];static FORBIDDEN_CHARS=/[^._\-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu;static CapitalWords(e){return(e||"").split(/[\s_]/).filter(t=>t).map(t=>t?t[0].toUpperCase()+t.substring(1).toLowerCase():"").join(" ")}static formatSeconds(e){const t=Math.floor(e/86400);e%=3600*24;const i=Math.floor(e/3600).toString().padStart(2,"0");e%=3600;const r=Math.floor(e/60).toString().padStart(2,"0");e%=60;const o=Math.floor(e).toString().padStart(2,"0");let n="";return t&&(n+=`${t} ${D.t("ra_daysShortText")} `),n+=`${i}:${r}:${o}`,n}static getObjectName(e,t,i,r,o){var c;const n=e[t];let M;if(typeof i=="string"&&!r&&(r={language:i},i=null),r=r||{},r.language||(r.language=e["system.config"]&&e["system.config"].common&&e["system.config"].common.language||window.sysLang||"en"),i!=null&&i.name){const l=i.name;typeof l=="object"?M=r.language&&l[r.language]||l.en:M=l}else if(o&&((c=n==null?void 0:n.common)!=null&&c.desc)){const l=n.common.desc;typeof l=="object"?M=r.language&&l[r.language]||l.en||l.de||l.ru||"":M=l,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else if(!o&&(n!=null&&n.common)){const l=n.common.name||n.common.desc;l&&typeof l=="object"?M=r.language&&l[r.language]||l.en||l.de||l.ru||"":M=l,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else{const l=t.lastIndexOf(".");M=t.substring(l+1).replace(/[_.]/g," "),M=m.CapitalWords(M)}return(M==null?void 0:M.trim())||""}static getObjectNameFromObj(e,t,i,r,o){var c,l;const n=e;let M=(e==null?void 0:e._id)||"";if(typeof t=="string"&&!i&&(i={language:t},t=null),i=i||{},t!=null&&t.name){const N=t.name;typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N}else if(r&&((c=n==null?void 0:n.common)!=null&&c.desc)){const N=n.common.desc;typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}else if(!r&&((l=n==null?void 0:n.common)!=null&&l.name)){let N=n.common.name;!N&&n.common.desc&&(N=n.common.desc),typeof N=="object"?M=i.language&&N[i.language]||N.en:M=N,M=(M||"").toString().replace(/[_.]/g," "),M===M.toUpperCase()&&(M=M[0]+M.substring(1).toLowerCase())}return o?M:M.trim()}static getSettingsOrder(e,t,i){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[Dt];const n=i.user||"admin";if(o&&o[n]){if(t){if(o[n].subOrder&&o[n].subOrder[t])return JSON.parse(JSON.stringify(o[n].subOrder[t]))}else if(o[n].order)return JSON.parse(JSON.stringify(o[n].order))}}return null}static getSettingsCustomURLs(e,t,i){let r;e&&Object.prototype.hasOwnProperty.call(e,"common")?r=e.common:r=e;let o;if(r!=null&&r.custom){o=r.custom[Dt];const n=i.user||"admin";if(o&&o[n]){if(t){if(o[n].subURLs&&o[n].subURLs[t])return JSON.parse(JSON.stringify(o[n].subURLs[t]))}else if(o[n].URLs)return JSON.parse(JSON.stringify(o[n].URLs))}}return null}static reorder(e,t,i){const r=Array.from(e),[o]=r.splice(t,1);return r.splice(i,0,o),r}static getSettings(e,t,i){let r;const o=(e==null?void 0:e._id)||(t==null?void 0:t.id);let n;if(e&&Object.prototype.hasOwnProperty.call(e,"common")?n=e.common:n=e,n!=null&&n.custom?(r=n.custom,r=r[Dt]&&r[Dt][t.user||"admin"]?JSON.parse(JSON.stringify(r[Dt][t.user||"admin"])):{enabled:!0}):r={enabled:i===void 0?!0:i,useCustom:!1},Object.prototype.hasOwnProperty.call(r,"enabled")||(r.enabled=i===void 0?!0:i),t&&(!r.name&&t.name&&(r.name=t.name),!r.icon&&t.icon&&(r.icon=t.icon),!r.color&&t.color&&(r.color=t.color)),n&&(!r.color&&n.color&&(r.color=n.color),!r.icon&&n.icon&&(r.icon=n.icon),!r.name&&n.name&&(r.name=n.name)),typeof r.name=="object"&&(r.name=t.language&&r.name[t.language]||r.name.en,r.name=(r.name||"").toString().replace(/_/g," "),r.name===r.name.toUpperCase()&&(r.name=r.name[0]+r.name.substring(1).toLowerCase())),!r.name&&o){const M=o.lastIndexOf(".");r.name=o.substring(M+1).replace(/[_.]/g," "),r.name=(r.name||"").toString().replace(/_/g," "),r.name=m.CapitalWords(r.name)}return r}static setSettings(e,t,i){if(e){e.common=e.common||{},e.common.custom=e.common.custom||{},e.common.custom[Dt]=e.common.custom[Dt]||{},e.common.custom[Dt][i.user||"admin"]=t;const r=e.common.custom[Dt][i.user||"admin"];return r.useCommon&&(r.color!==void 0&&(e.common.color=r.color,delete r.color),r.icon!==void 0&&(e.common.icon=r.icon,delete r.icon),r.name!==void 0&&(typeof e.common.name!="object"&&i.language?e.common.name={[i.language]:r.name}:typeof e.common.name=="object"&&i.language&&(e.common.name[i.language]=r.name),delete r.name)),!0}return!1}static getIcon(e,t){return e!=null&&e.icon?e.icon.length<=2?a.createElement("span",{style:t||{}},e.icon):e.icon.startsWith("data:image")?a.createElement("img",{alt:e.name,src:e.icon,style:t||{}}):a.createElement("img",{alt:e.name,src:(e.prefix||"")+e.icon,style:t}):null}static getObjectIcon(e,t){var i;if(typeof e=="object"&&(t=e,e=t==null?void 0:t._id),(i=t==null?void 0:t.common)!=null&&i.icon){let r=t.common.icon;if(typeof r=="string"&&r.length<=2||r.startsWith("data:image"))return r;const o=e.split(".");return o[0]==="system"?r=`adapter/${o[2]}${r.startsWith("/")?"":"/"}${r}`:r=`adapter/${o[0]}${r.startsWith("/")?"":"/"}${r}`,window.location.pathname.match(/adapter\/[^/]+\/[^/]+\.html/)?r=`../../${r}`:window.location.pathname.match(/material\/[.\d]+/)?r=`../../${r}`:window.location.pathname.match(/material\//)&&(r=`../${r}`),r}return null}static splitCamelCase(e){return e?m.CapitalWords(e):""}static isUseBright(e,t){if(!e)return t===void 0?!0:t;e=e.toString(),e.startsWith("#")&&(e=e.slice(1));let i,r,o;const n=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(n&&n.length===4)i=parseInt(n[1],10),r=parseInt(n[2],10),o=parseInt(n[3],10);else{if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===8)e=e.substring(0,6);else if(e.length!==6)return!1;i=parseInt(e.slice(0,2),16),r=parseInt(e.slice(2,4),16),o=parseInt(e.slice(4,6),16)}return i*.299+r*.587+o*.114<=186}static getTimeString(e){if(e=parseFloat(e),Number.isNaN(e))return"--:--";const t=Math.floor(e/3600),i=Math.floor(e%3600/60).toString().padStart(2,"0"),r=(e%60).toString().padStart(2,"0");return t?`${t}:${i}:${r}`:`${i}:${r}`}static getWindDirection(e){return e>=0&&e<11.25?"N":e>=11.25&&e<33.75?"NNE":e>=33.75&&e<56.25?"NE":e>=56.25&&e<78.75?"ENE":e>=78.75&&e<101.25?"E":e>=101.25&&e<123.75?"ESE":e>=123.75&&e<146.25?"SE":e>=146.25&&e<168.75?"SSE":e>=168.75&&e<191.25?"S":e>=191.25&&e<213.75?"SSW":e>=213.75&&e<236.25?"SW":e>=236.25&&e<258.75?"WSW":e>=258.75&&e<281.25?"W":e>=281.25&&e<303.75?"WNW":e>=303.75&&e<326.25?"NW":e>=326.25&&e<348.75?"NNW":"N"}static padding(e){return typeof e=="string"?e.length<2?`0${e}`:e:e<10?`0${e}`:e.toString()}static setDataFormat(e){e&&(m.dateFormat=e.toUpperCase().split(/[.-/]/),m.dateFormat.splice(m.dateFormat.indexOf("YYYY"),1))}static date2string(e){if(typeof e=="string"){if(e=e.trim(),!e)return"";if(e.match(/^[\w\s]+$/))return e;const i=e.match(/(\d{1,4})[-./](\d{1,2})[-./](\d{1,4})/);if(i){const r=[parseInt(i[1],10),parseInt(i[2],10),parseInt(i[3],10)],o=r.find(n=>n>31);if(o!==void 0){r.splice(r.indexOf(o),1);const n=r.find(M=>M>12);n?(r.splice(r.indexOf(n),1),e=new Date(o,r[0]-1,n)):m.dateFormat[0][0]==="M"&&m.dateFormat[1][0]==="D"?(e=new Date(o,r[0]-1,r[1]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[1]-1,r[0]))):m.dateFormat[0][0]==="D"&&m.dateFormat[1][0]==="M"?(e=new Date(o,r[1]-1,r[0]),Math.abs(e.getTime()-Date.now())>36e5*24*10&&(e=new Date(o,r[0]-1,r[1]))):e=new Date(e)}else e=new Date(e)}else e=new Date(e)}else e=new Date(e);let t=D.t(`ra_dow_${Bh[e.getDay()]}`).replace("ra_dow_","");return t+=`. ${e.getDate()} ${D.t(`ra_month_${Rh[e.getMonth()]}`).replace("ra_month_","")}`,t}static renderTextWithA(e){let t=e.match(/||[^<]+<\/b>|[^<]+<\/i>/);if(t){const i=[];let r=1;do{const o=e.substring(0,t.index);if(e=e.substring((t.index||0)+t[0].length),o&&i.push(a.createElement("span",{key:`a${r++}`},o)),t[0].startsWith(""))i.push(a.createElement("b",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith(""))i.push(a.createElement("i",{key:`a${r++}`},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith("([^<]*)||[^<]+<\/b>|[^<]+<\/i>/):null,!t&&e&&i.push(a.createElement("span",{key:`a${r++}`},e))}while(t);return i}return e}static getSmartName(e,t,i,r){var n,M;if(!t){if(!r)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const c=e;return(n=c==null?void 0:c.common)!=null&&n.custom&&c.common.custom[i]?c.common.custom[i].smartName:void 0}if(!r)return e[t].common.smartName;const o=e[t];return(M=o==null?void 0:o.common)!=null&&M.custom&&o.common.custom[i]&&o.common.custom[i].smartName||null}static getSmartNameFromObj(e,t,i){var o,n;if(!i)return!e.common||e&&!e.common?e.smartName:e.common.smartName;if(e&&!e.common)return e.smartName;const r=(n=(o=e==null?void 0:e.common)==null?void 0:o.custom)==null?void 0:n[t];return r?r.smartName:void 0}static enableSmartName(e,t,i){const r=e;i?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName={}):r.common.smartName={}}static removeSmartName(e,t,i){var o,n;const r=e;i?(n=(o=r==null?void 0:r.common)==null?void 0:o.custom)!=null&&n[t]&&(r.common.custom[t]=null):r.common.smartName=null}static updateSmartName(e,t,i,r,o,n){var l,N;const M=D.getLanguage(),c=e;if(typeof c.common.smartName=="string"){const u=c.common.smartName;c.common.smartName={},c.common.smartName[M]=u}if((l=c.native)!=null&&l.byON){delete c.native.byON;let u=c.common.smartName;u&&typeof u!="object"&&(u={en:u,[M]:u}),c.common.smartName=u}if(r!==void 0&&(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},r?c.common.custom[o].smartName.smartType=r:delete c.common.custom[o].smartName.smartType):(c.common.smartName||={},r?c.common.smartName.smartType=r:delete c.common.smartName.smartType)),i!==void 0&&(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},c.common.custom[o].smartName.byON=i):(c.common.smartName||={},c.common.smartName.byON=i)),t!==void 0){let u;if(n?(c.common.custom||={},c.common.custom[o]||={},c.common.custom[o].smartName||={},u=c.common.custom[o].smartName):(c.common.smartName||={},u=c.common.smartName),u[M]=t,u&&(!u[M]||u[M]===c.common.name&&!c.common.role)){delete u[M];let L=!0;for(const g in u)if(Object.prototype.hasOwnProperty.call(u,g)){L=!1;break}if(L)if(n&&((N=c.common.custom)!=null&&N[o]))c.common.custom[o].smartName.byON===void 0?delete c.common.custom[o]:(delete c.common.custom[o].en,delete c.common.custom[o].de,delete c.common.custom[o].ru,delete c.common.custom[o].nl,delete c.common.custom[o].pl,delete c.common.custom[o].it,delete c.common.custom[o].fr,delete c.common.custom[o].pt,delete c.common.custom[o].es,delete c.common.custom[o].uk,delete c.common.custom[o]["zh-cn"]);else if(c.common.smartName&&c.common.smartName.byON!==void 0){const g=c.common.smartName;delete g.en,delete g.de,delete g.ru,delete g.nl,delete g.pl,delete g.it,delete g.fr,delete g.pt,delete g.es,delete g.uk,delete g["zh-cn"]}else c.common.smartName=null}}}static updateSmartNameEx(e,t){var o,n,M,c;const i=D.getLanguage(),r=e;if(typeof r.common.smartName=="string"){const l=r.common.smartName;r.common.smartName={},r.common.smartName[i]=l}if((o=r.native)!=null&&o.byON){delete r.native.byON;let l=r.common.smartName;l&&typeof l!="object"&&(l={en:l,[i]:l}),r.common.smartName=l}if(t.smartType!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},t.smartType?r.common.custom[t.instanceId].smartName.smartType=t.smartType:delete r.common.custom[t.instanceId].smartName.smartType):(r.common.smartName||={},t.smartType?r.common.smartName.smartType=t.smartType:delete r.common.smartName.smartType)),t.byON!==void 0&&(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.byON=t.byON):(r.common.smartName||={},r.common.smartName.byON=t.byON)),t.noAutoDetect!==void 0&&(t.noCommon?t.noAutoDetect?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},r.common.custom[t.instanceId].smartName.noAutoDetect=t.noAutoDetect):(M=(n=r.common.custom)==null?void 0:n[t.instanceId])!=null&&M.smartName&&delete r.common.custom[t.instanceId].smartName.noAutoDetect:!t.noAutoDetect&&r.common.smartName?delete r.common.smartName.noAutoDetect:(r.common.smartName||={},r.common.smartName.noAutoDetect=t.noAutoDetect)),t.smartName!==void 0){let l;if(t.noCommon?(r.common.custom||={},r.common.custom[t.instanceId]||={},r.common.custom[t.instanceId].smartName||={},l=r.common.custom[t.instanceId].smartName):(r.common.smartName||={},l=r.common.smartName),l[i]=t.smartName,l&&(!l[i]||l[i]===r.common.name&&!r.common.role)){delete l[i];let N=!0;for(const u in l)if(Object.prototype.hasOwnProperty.call(l,u)){N=!1;break}if(N)if(t.noCommon&&((c=r.common.custom)!=null&&c[t.instanceId]))r.common.custom[t.instanceId].smartName.byON===void 0?delete r.common.custom[t.instanceId]:(delete r.common.custom[t.instanceId].en,delete r.common.custom[t.instanceId].de,delete r.common.custom[t.instanceId].ru,delete r.common.custom[t.instanceId].nl,delete r.common.custom[t.instanceId].pl,delete r.common.custom[t.instanceId].it,delete r.common.custom[t.instanceId].fr,delete r.common.custom[t.instanceId].pt,delete r.common.custom[t.instanceId].es,delete r.common.custom[t.instanceId].uk,delete r.common.custom[t.instanceId]["zh-cn"]);else if(r.common.smartName&&r.common.smartName.byON!==void 0){const u=r.common.smartName;delete u.en,delete u.de,delete u.ru,delete u.nl,delete u.pl,delete u.it,delete u.fr,delete u.pt,delete u.es,delete u.uk,delete u["zh-cn"]}else r.common.smartName=null}}}static disableSmartName(e,t,i){const r=e;i?(r.common.custom||={},r.common.custom[t]||={},r.common.custom[t].smartName=!1):r.common.smartName=!1}static copyToClipboard(e,t){return t&&(t.stopPropagation(),t.preventDefault()),E4(e)}static getFileExtension(e){const t=(e||"").lastIndexOf(".");return t!==-1?e.substring(t+1).toLowerCase():null}static formatBytes(e){if(Math.abs(e)<1024)return`${e} B`;const t=["KB","MB","GB"];let i=-1;do e/=1024,++i;while(Math.abs(e)>=1024&&i186?`#000000${i||""}`:`#FFFFFF${i||""}`;const M=(255-r).toString(16),c=(255-o).toString(16),l=(255-n).toString(16);return`#${M.padStart(2,"0")}${c.padStart(2,"0")}${l.padStart(2,"0")}${i||""}`}static color2rgb(e){if(e==null||e===""||typeof e!="string")return!1;if(e.startsWith("rgba")){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),\s*([.\d]+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else if(e.startsWith("rgb")){const t=e.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else e.startsWith("#")&&(e=e.slice(1));return e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length!==6&&e.length!==8?(console.warn(`Cannot invert color: ${e}`),!1):[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}static rgb2lab(e){let t=e[0]/255,i=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=(t*.4124+i*.3576+r*.1805)/.95047,n=t*.2126+i*.7152+r*.0722,M=(t*.0193+i*.1192+r*.9505)/1.08883;return o=o>.008856?o**.33333333:7.787*o+.137931,n=n>.008856?n**.33333333:7.787*n+.137931,M=M>.008856?M**.33333333:7.787*M+.137931,[116*n-16,500*(o-n),200*(n-M)]}static colorDistance(e,t){const i=m.color2rgb(e),r=m.color2rgb(t);if(!i||!r)return 0;const o=m.rgb2lab(i),n=m.rgb2lab(r),M=o[0]-n[0],c=o[1]-n[1],l=o[2]-n[2],N=Math.sqrt(o[1]*o[1]+o[2]*o[2]),u=Math.sqrt(n[1]*n[1]+n[2]*n[2]),L=N-u;let g=c*c+l*l-L*L;g=g<0?0:Math.sqrt(g);const j=1+.045*N,y=1+.015*N,T=M,d=L/j,I=g/y,w=T*T+d*d+I*I;return w<0?0:w}static _toVal(e){let t,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e))for(let r=0;r{if(i=i.trim(),i){const r=i.split("="),o=decodeURIComponent(r[0]).trim();if(r.length>1){const n=decodeURIComponent(r[1]);if(n==="true")t[o]=!0;else if(n==="false")t[o]=!1;else{const M=parseFloat(n);M.toString()===n?t[o]=M:t[o]=n}}else t[o]=!0}}),t}static getParentId(e){const t=(e||"").toString().split(".");return t.length>1?(t.pop(),t.join(".")):null}static formatDate(e,t){if(!e)return"";let i;const r=(e.getMonth()+1).toString().padStart(2,"0"),o=e.getDate().toString().padStart(2,"0");return t==="MM/DD/YYYY"?i=`${r}/${o}/${e.getFullYear()}`:i=`${e.getFullYear()}-${r}-${o}`,i+=` ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`,i}static formatTime(e){if(e){e=Math.round(e);const t=Math.floor(e/(3600*24)),i=Math.floor(e%(3600*24)/3600),r=Math.floor(e%3600/60),o=e%60;return t?`${t}.${i.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:i?`${i}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`0:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}return"0:00:00"}static MDtext2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static MDgetTitle(e){var o;const t=m.MDextractHeader(e),i=t.header;let r=t.body;if(!i.title){r=r.replace(/{[^}]*}/g,""),r=r.trim();const n=r.replace(/\r/g,"").split(` `);for(let M=0;M{if(!n.trim())return;const M=n.indexOf(":");if(M!==-1){const c=n.substring(0,M).trim();let l=n.substring(M+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[c]=!0:l==="false"?t[c]=!1:parseFloat(l).toString()===t[c]?t[c]=parseFloat(l):t[c]=l}else t[n.trim()]=!0}),e=e.substring(i+7))}return{header:t,body:e}}static MDremoveDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(i=>e=e.replace(i,"")),e}static generateFile(e,t){const i=document.createElement("a");i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),i.setAttribute("download",e),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}static quality2text(e){const t=e&4294901760,i=Cn[e];let r;return i?r=[i]:e&1?r=[Cn[1],`0x${(e&65534).toString(16)}`]:e&2?r=[Cn[2],`0x${(e&65533).toString(16)}`]:r=[`0x${e.toString(16)}`],t&&r.push(`0x${(t>>16).toString(16).toUpperCase()}`),r}static clone(e){return JSON.parse(JSON.stringify(e))}static getStates(e){var r;const t=(r=e==null?void 0:e.common)==null?void 0:r.states;let i;if(t)if(typeof t=="string"&&t[0]==="{")try{i=JSON.parse(t)}catch{console.error(`Cannot parse states: ${t}`),i=null}else if(typeof t=="string"){const o=t.split(";");i={};for(let n=0;ni[n]=o):(e==null?void 0:e.common.type)==="string"?t.forEach(o=>i[o]=o):(e==null?void 0:e.common.type)==="boolean"&&(i.false=t[0],i.true=t[1])):typeof t=="object"&&(i=t);return i||null}static async getSvg(e){const i=await(await fetch(e)).blob();return new Promise(r=>{const o=new FileReader;o.onload=()=>{var n;return r(((n=o.result)==null?void 0:n.toString())||"")},o.readAsDataURL(i)})}static detectMimeType(e){const t=Object.keys(Ru).find(i=>e.startsWith(i));return t?Ru[t]:null}static isStableRepository(e){return!!(typeof e=="string"&&e.toLowerCase().startsWith("stable")||e&&typeof e!="string"&&e.find(t=>t.toLowerCase().startsWith("stable")))}static isStringInteger(e){return typeof e=="number"?Math.round(e)===e:parseInt(e,10).toString()===e}static isValidDate(e){return e instanceof Date&&!isNaN(e)}static getStyle(e,...t){const i={};for(let r=0;r{if(typeof t[r][o]=="function")i[o]=t[r][o](e);else if(typeof t[r][o]=="object"){const n=t[r][o];i[o]={},Object.keys(n).forEach(M=>{typeof n[M]=="function"?i[o][M]=n(e):(n[M]||n[M]===0)&&(i[o][M]=n[M])})}else(t[r][o]||t[r][o]===0)&&(i[o]=t[r][o])});return i}}const pn={buttonIcon:{marginRight:8}};class Gh extends a.Component{isIFrame;constructor(e){super(e);const t=e.newReact===void 0?!0:e.newReact;if(e.isIFrame!==void 0)this.isIFrame=e.isIFrame;else try{this.isIFrame=!t&&window.self!==window.top}catch{this.isIFrame=!t}}render(){const e=this.props.noTextOnButtons,t={borderRadius:this.props.theme.saveToolbar.button.borderRadius||3,height:this.props.theme.saveToolbar.button.height||32},i={bottom:this.isIFrame?38:0,left:this.props.paddingLeft||0,right:0,position:"absolute",background:this.props.theme.saveToolbar.background};return this.props.dense&&(i.minHeight=48),this.props.error&&(t.border="1px solid red"),a.createElement(AN,{style:i},a.createElement(bt,{variant:"extended","aria-label":"Save",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!1),style:t},a.createElement(Kn,{style:e?void 0:pn.buttonIcon}),!e&&D.t("ra_Save")),a.createElement(bt,{variant:"extended","aria-label":"Save and close",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!0),style:{...t,marginLeft:10}},a.createElement(Kn,{style:e?void 0:pn.buttonIcon}),e?"+":D.t("ra_Save and close"),e&&a.createElement(we,null)),a.createElement("div",{style:{flexGrow:1}}),a.createElement(bt,{variant:"extended","aria-label":"Close",onClick:()=>this.props.onClose(),style:t},a.createElement(we,{style:e?void 0:pn.buttonIcon}),!e&&D.t("ra_Close")))}}const Fu={suppress:{fontSize:12},suppressRoot:{marginTop:"16px"}};class S4 extends De{constructor(e){if(super(e),!this.props.dialogName&&this.props.suppressQuestionMinutes)throw new Error("dialogName required if suppressQuestionMinutes used");let t=!1;this.props.suppressQuestionMinutes&&(t=parseInt((window._localStorage||window.localStorage).getItem(this.props.dialogName),10)||0,t?Date.now()>t&&((window._localStorage||window.localStorage).removeItem(this.props.dialogName),t=!1):t=!1),this.state={suppress:t}}handleOk(){this.state.suppress&&(window._localStorage||window.localStorage).setItem(this.props.dialogName,Date.now()+(this.props.suppressQuestionMinutes||2)*6e4),this.props.onClose&&this.props.onClose(!0)}handleCancel(){this.props.onClose&&this.props.onClose(!1)}render(){return typeof this.state.suppress=="number"?(setTimeout(()=>this.props.onClose&&this.props.onClose(!0),100),null):a.createElement(Ae,{open:!0,maxWidth:"md",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:(e,t)=>{t!=="backdropClick"&&t!=="escapeKeyDown"&&this.handleCancel()},"aria-labelledby":"ar_confirmation_dialog_title","aria-describedby":"ar_confirmation_dialog_description"},a.createElement(fe,{id:"ar_confirmation_dialog_title"},this.props.title||D.t("ra_Are you sure?")),a.createElement(_e,null,a.createElement(as,{id:"ar_confirmation_dialog_description"},this.props.icon||null,this.props.text,this.props.suppressQuestionMinutes?a.createElement("br",null):null,this.props.suppressQuestionMinutes?a.createElement(V,{sx:{"& .FormControlLabel-label":Fu.suppress,"&.FormControlLabel-root":Fu.suppressRoot},control:a.createElement(ue,{id:`ar_dialog_confirm_suppress_${this.props.dialogName||""}`,checked:!!this.state.suppress,onChange:()=>this.setState({suppress:!this.state.suppress})}),label:this.props.suppressText||D.t("ra_Suppress question for next %s minutes",(this.props.suppressQuestionMinutes||2).toString())}):null)),a.createElement(xe,null,a.createElement(q,{id:`ar_dialog_confirm_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{id:`ar_dialog_confirm_cancel_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:a.createElement(we,null)},this.props.cancel||D.t("ra_Cancel"))))}}class k4 extends De{handleOk(){this.props.onClose&&this.props.onClose()}render(){return a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},a.createElement(fe,{id:"ar_alert_dialog_title"},this.props.title||D.t("ra_Error")),a.createElement(_e,null,a.createElement(as,{id:"ar_alert_dialog_description"},this.props.text||D.t("ra_Unknown error!"))),a.createElement(xe,null,a.createElement(q,{id:"ar_dialog_error_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},D.t("ra_Ok"))))}}const Hh="Actions",Vh="Append",Zh="Cancel",Xh="Categories",Kh="Checked",qh="Delete",ez="Close",tz="Commercial",sz="Configure",iz="Connected",rz="Continue",oz="Copied",nz="Create",az="Crop",Mz="Delete",cz="Delete",uz="Discard",lz="Disconnected",Nz="Error",Lz="Filter",gz="Friday",jz="Latitude",yz="Logout",Tz="Longitude",Dz="Message",dz="Monday",hz="Name",zz="Objects",wz="Ok",Iz="Product",Cz="Rename/Move/Copy",pz="Repeat",Az="Replace",mz="Root",fz="Saturday",Oz="Save",Ez="Selected",_z="States",xz="Sunday",Sz="Thursday",kz="Timestamp",vz="Tuesday",Yz="Update",Qz="Valid till",bz="Value",Uz="Version",$z="Wednesday",Pz="Width",Wz="Yes",Jz="different",Bz="Everyone can read object",Rz="Everyone can read state",Fz="Everyone can write object",Gz="Everyone can write state",Hz="Group can read object",Vz="Group can read state",Zz="Group can write object",Xz="Group can write state",Kz="Owner can read object",qz="Owner can read state",ew="Owner can write object",tw="Owner can write state",sw="Buttons",iw="Changed from",rw="close",ow="Create boolean state",nw="Create channel",aw="Create device",Mw="Create number state",cw="Create state",uw="Create string state",lw="days",Nw="Fr",Lw="Mo",gw="Sa",jw="Su",yw="Th",Tw="Tu",Dw="We",dw="Expert mode",hw="FALSE",zw="All files",ww="Audio",Iw="Code/JSON",Cw="Images",pw="Text",Aw="Video",mw="Settings",fw="without",Ow="Function",Ew="ID",_w="Name",xw="Role",Sw="Room",kw="Type",vw="Invalid settings",Yw="Last change",Qw="locally",bw="Apr",Uw="Aug",$w="Dec",Pw="Feb",Ww="Jan",Jw="Jul",Bw="Jun",Rw="Mai",Fw="Mar",Gw="Nov",Hw="Oct",Vw="Sep",Zw="Apr",Xw="Aug",Kw="Dec",qw="Feb",eI="Jan",tI="Jul",sI="Jun",iI="Mai",rI="Mar",oI="Nov",nI="Oct",aI="Sep",MI="none",cI="Object changed by",uI="Object last changed at",lI="Settings from other adapter %s",NI="Quality code",LI="repeat",gI='To select folder, just hold the key "shift" by clicking the folder.',jI="Show all",yI="State changed by",TI="Object changed from",DI="Timestamp",dI="Acknowledged",hI="Comment",zI="Copy the state value",wI="Hold Cltr/⌘ key to open the link",II="Custom settings",CI="Delete object",pI="Edit object",AI="Edit the state value",mI="Expires in",fI="From",OI="Last changed",EI="Quality",_I="Time stamp",xI="User",SI="Value",kI="TRUE",vI="Value",YI="Warning: The CRON job will run every minute during the specified period!",QI="Warning: The CRON job will run every second during the specified period!",bI="CRON",UI="Date",$I="Dates",PI="Day",WI="Day of week",JI="Every",BI="every N days",RI="every Nth day of the week",FI="every N day of week",GI="every N hours",HI="every N minutes",VI="every N months",ZI="every N seconds",XI="every day",KI="every day of the week",qI="every day of the week",eC="every hour",tC="every minute",sC="every month",iC="every second",rC="From",oC="Hours",nC="Interval",aC="Interval between",MC="Invalid CRON",cC="Minutes",uC="months",lC="Once",NC="Period",LC="Seconds",gC="Simple",jC="Specific time",yC="specific dates",TC="specific day(s) of the week",DC="specific day of weeks",dC="specific hours",hC="specific minutes",zC="specific months",wC="specific seconds",IC="Time",CC="To",pC="Wizard",AC="all",mC="Astro day",fC="Astro night",OC="Dawn",EC="Dusk",_C="Golden hour",xC="Golden hour end",SC="Nadir",kC="Nautical dawn",vC="Nautical dusk",YC="Night",QC="Night end",bC="Solar noon",UC="Sunrise",$C="Sunrise end",PC="Sunset",WC="Sunset start",JC="at",BC="at %s",RC="every day",FC="every hour",GC="every minute",HC="every month",VC="every %s day",ZC="every %s hours",XC="every %s minutes",KC="every %s months",qC="every %s weeks",e2="every %s years",t2="every week",s2="every year",i2="from %s to %s",r2="never",o2="on %s of %s",n2="on %s and %s of",a2="on every date of",M2="%s",c2="%s and %s",u2="on %s",l2="on %s and %s",N2="on weekends",L2="on working days",g2="will ne be not executed any more, because start is in the past",j2="on %s",y2="from %s",T2="Execute from to",D2="to %s",d2="every",h2="Specific time",z2="from",w2="From-to",I2="Interval time",C2="invert",p2="none",A2="on",m2="Period",f2="Daily",O2="Dates",E2="Day",_2="Every",x2="Every day",S2="Every month",k2="Every week",v2="Every year",Y2="Hours",Q2="Minutes",b2="month",U2="Monthly",$2="Once",P2="Specific months",W2="Week",J2="Weekdays",B2="Weekend",R2="Weekly",F2="Workdays",G2="Year",H2="Yearly",V2="Specific time",Z2="Time",X2="to",K2="Valid",q2="from",ep="to",tp="Whole day",sp="every month",ip={"ra_%s links from aliases":"%s links from aliases","ra_%s object(s) processed":"%s object(s) processed","ra_%s was imported":"%s was imported","ra_Accept license":"Accept license",ra_Actions:Hh,"ra_Add new child object to selected parent":"Add new child object to selected parent","ra_Add objects tree from JSON file":"Add objects tree from JSON file","ra_Add row":"Add row","ra_Advanced options":"Advanced options","ra_All items are filtered out":"All items are filtered out","ra_All objects":"All objects",ra_Append:Vh,"ra_Append %s entries or replace existing?":"Append %s entries or replace existing?","ra_Append or replace?":"Append or replace?","ra_Are you sure?":"Are you sure?","ra_Auto (no custom columns)":"Auto (no custom columns)","ra_Back to %s":"Back to %s","ra_Background image":"Background image",ra_Cancel:Zh,"ra_Cannot add items with set filter":"Cannot add items with set filter","ra_Cannot decode license":"Cannot decode license","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Cannot determine position: System settings are empty and GPS detection is disabled in browser",'ra_Cannot find "%s"':'Cannot find "%s"','ra_Cannot read "%s"':'Cannot read "%s"',"ra_Cannot read licenses: %s":"Cannot read licenses: %s","ra_Cannot retrieve options, as instance is offline":"Cannot retrieve options, as instance is offline","ra_Cannot update attribute, because not found in the object":"Cannot update attribute, because not found in the object","ra_Cannot upload":"Cannot upload",ra_Categories:Xh,"ra_Chained certificate":"Chained certificate","ra_Change color theme":"Change color theme","ra_Changed from":"Changed from","ra_Channel → State":"Channel → State","ra_Check license":"Check license",ra_Checked:Kh,ra_Clear:qh,"ra_Clear filter":"Clear filter","ra_Clear icon":"Clear icon","ra_Click to see in full size":"Click to see in full size","ra_Click to show":"Click to show","ra_Clone current row":"Clone current row",ra_Close:ez,"ra_Collapse all nodes":"Collapse all nodes","ra_Collapse one step node":"Collapse one level",ra_Commercial:tz,ra_Configure:sz,"ra_Configure visible columns":"Configure visible columns","ra_Confirm deletion of %s":"Confirm deletion of %s",ra_Connected:iz,ra_Continue:rz,ra_Copied:oz,"ra_Copied %s":'Copied "%s"',"ra_Copy content":"Copy content",ra_Create:nz,"ra_Create alias":"Create alias","ra_Create folder":"Create folder","ra_Create new folder in %s":"Create new folder in %s",ra_Crop:az,"ra_Define CRON...":"Define CRON...","ra_Define functions":"Define functions","ra_Define rooms":"Define rooms","ra_Define schedule":"Define schedule","ra_Define schedule...":"Define schedule...",ra_Del:Mz,ra_Delete:cz,"ra_Delete current row":"Delete current row","ra_Deselect all":"Unselect all","ra_Device → Channel → State":"Device → Channel → State","ra_Disable/Enable translation":"Disable/Enable translation",ra_Discard:uz,ra_Disconnected:lz,"ra_Do not ask for next 2 hours in this session":"Do not ask for next 2 hours in this session","ra_Do not export values of states":"Do not export values of states","ra_Do not use let's encrypt":"Do not use let's encrypt","ra_Docker is not available":"Docker is not available","ra_Docker is not installed or not running":"Docker is not installed or not running","ra_Double click to reset table layout":"Double click to reset table layout","ra_Drag 'n' drop some files here, or click to select files":"Drag 'n' drop some files here, or click to select files","ra_Drop file here":"Drop file here","ra_Drop the files here...":"Drop the file here...","ra_Duplicate name":"Duplicate name","ra_Edit ACL":"Edit ACL","ra_Edit alias":"Edit alias","ra_Edit custom config":"Edit custom config","ra_Edit full path":"Edit full path","ra_Edit function":"Edit function","ra_Edit object field":"Edit object field","ra_Edit role":"Edit role","ra_Edit room":"Edit room","ra_Edit value":"Edit value","ra_Enter the code from that page here":"Enter the code from that page here",ra_Error:Nz,"ra_Expand all nodes":"Expand all nodes","ra_Expand one step node":"Expand one level","ra_Expand/Collapse card":"Expand/Collapse card","ra_Export configuration section":"Export configuration section","ra_Export data to %s file":"Export data to %s file","ra_Failed to open JSON File":"Failed to open JSON File","ra_Fallback custom certificates":"Fallback custom certificates","ra_File is too big. Max %sk allowed. Try use SVG.":"File is too big. Max %sk allowed. Try use SVG.",ra_Filter:Lz,"ra_Filter and Data Actions":"Filter and Data Actions","ra_Filter files":"Filter files","ra_Folder name":"Folder name","ra_Folder → Channel → State":"Folder → Channel → State","ra_Folder → Device → Channel → State":"Folder → Device → Channel → State","ra_Folder → State":"Folder → State","ra_Folders always first":"Folders always first",ra_Friday:gz,"ra_From file":"From file","ra_From text":"From text","ra_Get %s access":"Get %s access","ra_Good luck":"Good luck","ra_Hide empty folders":"Hide empty folders","ra_If no file will be created in the folder, it will disappear after the browser closed":"If no file will be created in the folder, it will disappear after the browser closed","ra_If the button above does not work, you can authorize manually this app by visiting this url":"If the button above does not work, you can authorize manually this app by visiting this url","ra_Import and add configuration section":"Import and add configuration section","ra_Import and replace configuration section":"Import and replace configuration section","ra_Import data from %s file":"Import data from %s file","ra_Import from %s":"Import from %s","ra_Instance %s is alive":"Instance %s is alive","ra_Instance %s is not alive":"Instance %s is not alive","ra_Instance is not alive":"Instance is not alive","ra_Invalid CRON":"Invalid CRON","ra_Invalid JSON":"Invalid JSON","ra_Invalid JSON file.":"Invalid JSON file.","ra_Invalid JSON format. Expected an array.":"Invalid JSON format. Expected an array.","ra_Invalid answer from server":"Invalid answer from server","ra_Invalid parent folder!":"Invalid parent folder!","ra_Invalid structure":"Invalid structure","ra_JSON editor":"JSON editor","ra_Last change":"Last change",ra_Latitude:jz,"ra_License %s":"License %s","ra_License agreement":"License agreement","ra_License does not exist":"License does not exist","ra_License expired on %s":"License expired on %s",'ra_License for other product "%s"':'License for other product "%s"',"ra_License is for version %s, but required version is %s.":"License is for version %s, but required version is %s.","ra_License must be converted":"License must be converted to newer version. You can do it in your iobroker.net profile.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"License not found in the license manager. Do you want to update licenses from iobroker.net?","ra_Listen on all IPs":"Listen on all IPs","ra_Load configuration from file":"Load configuration from file",ra_Logout:yz,ra_Longitude:Tz,'ra_May not trigger "updateLicenses"':'May not trigger "updateLicenses"',ra_Message:Dz,ra_Monday:dz,"ra_Move down":"Move down","ra_Move up":"Move up",ra_Name:hz,"ra_No data found in file":"No data found in file","ra_No one license found in license manager":"No one license found in license manager","ra_No response from admin":"No response from admin","ra_No response from the backend":"No response from the backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Non-experts may create new objects only in "0_userdata.0" or "alias.0".',"ra_Not a number":"Not a number","ra_OAuth Client ID":"OAuth Client ID","ra_OAuth Client secret":"OAuth Client secret",ra_Objects:zz,ra_Ok:wz,"ra_On weekdays":"On weekdays","ra_Only following structures of objects are available:":"Only following structures of objects are available:","ra_Only selected":"Only selected","ra_Owner group":"Owner group","ra_Owner user":"Owner user","ra_Passwords are not equal!":"Passwords are not equal!","ra_Place your files here or click here to open the browse dialog":"Place your files here or click here to open the browse dialog","ra_Please allow popups in your browser for this page!":"Please allow popups in your browser for this page!","ra_Please confirm":"Please confirm","ra_Please create license":"Please create license","ra_Please enter the license":"Please enter the license","ra_Please select file...":"Please select file...","ra_Please select object ID...":"Please select object ID...","ra_Port could be used by %s":"Port could be used by %s","ra_Port is already used by %s":"Port is already used by %s","ra_Press ENTER Key to add new item":"Press ENTER Key to add new item","ra_Private certificate":"Private certificate",ra_Product:Iz,"ra_Public certificate":"Public certificate","ra_Quality code":"Quality","ra_Refresh tree":"Refresh tree","ra_Reload files":"Reload files",ra_Rename_Move_Copy:Cz,"ra_Renew %s access":"Renew %s access",ra_Repeat:pz,ra_Replace:Az,"ra_Request timed out":"Request timed out","ra_Restrict to folder":"Restrict to folder",ra_Root:mz,ra_Saturday:fz,ra_Save:Oz,"ra_Save and close":"Save and close","ra_Save configuration to file":"Save configuration to file","ra_Save objects tree as JSON file":"Save objects tree as JSON file","ra_Select all":"Select all","ra_Select color":"Select color","ra_Select predefined icon":"Select predefined icon","ra_Select type of export":"Select type of export",ra_Selected:Ez,"ra_Selected %s object(s)":"Selected %s object(s)","ra_Serial number (UUID)":"Serial number (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serial number (UUID) "%s" in license is for other device.',"ra_Session will expire in %s seconds. Continue?":"Session will expire in %s seconds. Continue?","ra_Show all folders":"Show all folders","ra_Show lines between rows":"Show lines between rows","ra_Show/Hide object descriptions":"Show/Hide object descriptions","ra_Show/hide filter input":"Show/hide filter input","ra_Some data are not stored. Discard?":"Some data are not stored. Discard?",ra_States:_z,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Successfully authorized. Token valid till %s and will be automatically renewed.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Successfully authorized. Token valid till %s but it can expire as the instance is not running.","ra_Suitable license not found in license manager":"Suitable license not found in license manager",ra_Sunday:xz,"ra_Suppress question for next %s minutes":"Suppress question for next %s minutes","ra_System language":"System language","ra_Take browser position":"Take position from browser","ra_Take position from system settings":"Take position from system settings",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").',"ra_The page you are looking for was not found":"The page you are looking for was not found","ra_The schedule will be executed every minute. Are you sure?":"The schedule will be executed every minute. Are you sure?","ra_The schedule will be executed every second. Are you sure?":"The schedule will be executed every second. Are you sure?",ra_Thursday:Sz,ra_Timestamp:kz,"ra_Toggle expert mode":"Toggle expert mode","ra_Toggle the states view":"Toggle the states view","ra_Toggle view mode":"Toggle view mode","ra_Too big":"Too big","ra_Too small":"Too small","ra_Transparent dialog":"Transparent dialog",ra_Tuesday:vz,"ra_Unknown error":"Unknown error","ra_Unknown error!":"Unknown error!",ra_Update:Yz,"ra_Upload file":"Upload file","ra_Use all available let's encrypt certificates":"Use all available let's encrypt certificates","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use iobroker.acme adapter for letsencrypt certificates","ra_Use system settings for position":"Use system settings for position","ra_Used system settings":"Used system settings","ra_User files":"User files",ra_ValidTill:Qz,ra_Value:bz,ra_Version:Uz,"ra_View file":"View file","ra_View: %s":"View: %s",ra_Wednesday:$z,ra_Width:Pz,"ra_YAML editor":"YAML editor",ra_Yes:Wz,"ra_You can export all objects or just the selected branch.":"You can export all objects or just the selected branch.","ra_You can filter entries by entering here some text":"You can filter entries by entering here some text","ra_You can use * as wildcard":"You can use * as wildcard",ra___different__:Jz,ra_aclEveryone_read_object:Bz,ra_aclEveryone_read_state:Rz,ra_aclEveryone_write_object:Fz,ra_aclEveryone_write_state:Gz,ra_aclGroup_read_object:Hz,ra_aclGroup_read_state:Vz,ra_aclGroup_write_object:Zz,ra_aclGroup_write_state:Xz,ra_aclOwner_read_object:Kz,ra_aclOwner_read_state:qz,ra_aclOwner_write_object:ew,ra_aclOwner_write_state:tw,ra_buttons:sw,ra_changedFrom:iw,ra_close:rw,ra_create_boolean_state:ow,ra_create_channel:nw,ra_create_device:aw,ra_create_number_state:Mw,ra_create_state:cw,ra_create_string_state:uw,ra_daysShortText:lw,ra_dow_Fr:Nw,ra_dow_Mo:Lw,ra_dow_Sa:gw,ra_dow_Su:jw,ra_dow_Th:yw,ra_dow_Tu:Tw,ra_dow_We:Dw,ra_expertMode:dw,ra_false:hw,ra_fileType_all:zw,ra_fileType_audio:ww,ra_fileType_code:Iw,ra_fileType_images:Cw,ra_fileType_txt:pw,ra_fileType_video:Aw,"ra_fileType_video,":"Video",ra_filter_customs:mw,ra_filter_customs_without:fw,ra_filter_func:Ow,ra_filter_id:Ew,ra_filter_name:_w,ra_filter_role:xw,ra_filter_room:Sw,ra_filter_type:kw,"ra_import data from %s file":"Import data from %s file",ra_invalidConfig:vw,ra_lastChange:Yw,ra_locally:Qw,ra_month_Apr:bw,ra_month_Aug:Uw,ra_month_Dec:$w,ra_month_Feb:Pw,ra_month_Jan:Ww,ra_month_Jul:Jw,ra_month_Jun:Bw,ra_month_Mai:Rw,ra_month_Mar:Fw,ra_month_Nov:Gw,ra_month_Oct:Hw,ra_month_Sep:Vw,ra_months_Apr:Zw,ra_months_Aug:Xw,ra_months_Dec:Kw,ra_months_Feb:qw,ra_months_Jan:eI,ra_months_Jul:tI,ra_months_Jun:sI,ra_months_Mai:iI,ra_months_Mar:rI,ra_months_Nov:oI,ra_months_Oct:nI,ra_months_Sep:aI,"ra_no confirm for 5 mins":"no confirm for 5 mins",ra_none:MI,ra_object_changed_by:cI,ra_object_changed_by_user:uI,ra_otherConfig:lI,ra_qualityCode:NI,ra_repeat:LI,ra_select_folder_hint:gI,ra_show_all:jI,ra_state_changed_by:yI,ra_state_changed_from:TI,ra_timestamp:DI,ra_tooltip_ack:dI,ra_tooltip_comment:hI,ra_tooltip_copyState:zI,ra_tooltip_ctrlForLink:wI,ra_tooltip_customConfig:II,ra_tooltip_deleteObject:CI,ra_tooltip_editObject:pI,ra_tooltip_editState:AI,ra_tooltip_expire:mI,ra_tooltip_from:fI,ra_tooltip_lc:OI,ra_tooltip_quality:EI,ra_tooltip_ts:_I,ra_tooltip_user:xI,ra_tooltip_value:SI,ra_true:kI,"ra_use seconds":"use seconds",ra_val:vI,"ra_via internet":"via internet",ra_warning_every_minute:YI,ra_warning_every_second:QI,sc_cron:bI,sc_date:UI,sc_dates:$I,sc_dow:PI,sc_dows:WI,sc_every:JI,sc_everyN_dates:BI,sc_everyN_dow:RI,sc_everyN_dows:FI,sc_everyN_hours:GI,sc_everyN_minutes:HI,sc_everyN_months:VI,sc_everyN_seconds:ZI,sc_every_dates:XI,sc_every_dow:KI,sc_every_dows:qI,sc_every_hours:eC,sc_every_minutes:tC,sc_every_months:sC,sc_every_seconds:iC,sc_from:rC,sc_hours:oC,sc_interval:nC,sc_intervalBetween:aC,sc_invalid_cron:MC,sc_minutes:cC,sc_months:uC,sc_once:lC,sc_period:NC,sc_seconds:LC,sc_simple:gC,sc_specific:jC,sc_specific_dates:yC,sc_specific_dow:TC,sc_specific_dows:DC,sc_specific_hours:dC,sc_specific_minutes:hC,sc_specific_months:zC,sc_specific_seconds:wC,sc_time:IC,sc_to:CC,sc_wizard:pC,sch_all:AC,sch_astroDay:mC,sch_astroNight:fC,sch_astro_dawn:OC,sch_astro_dusk:EC,sch_astro_goldenHour:_C,sch_astro_goldenHourEnd:xC,sch_astro_nadir:SC,sch_astro_nauticalDawn:kC,sch_astro_nauticalDusk:vC,sch_astro_night:YC,sch_astro_nightEnd:QC,sch_astro_solarNoon:bC,sch_astro_sunrise:UC,sch_astro_sunriseEnd:$C,sch_astro_sunset:PC,sch_astro_sunsetStart:WC,sch_at:JC,sch_desc_atTime:BC,sch_desc_everyDay:RC,sch_desc_everyHour:FC,sch_desc_everyMinute:GC,sch_desc_everyMonth:HC,sch_desc_everyNDay:VC,sch_desc_everyNHours:ZC,sch_desc_everyNMinutes:XC,sch_desc_everyNMonths:KC,sch_desc_everyNWeeks:qC,sch_desc_everyNYears:e2,sch_desc_everyWeek:t2,sch_desc_everyYear:s2,sch_desc_intervalFromTo:i2,sch_desc_never:r2,sch_desc_onDate:o2,sch_desc_onDates:n2,sch_desc_onEveryDate:a2,sch_desc_onMonth:M2,sch_desc_onMonths:c2,sch_desc_onWeekday:u2,sch_desc_onWeekdays:l2,sch_desc_onWeekends:N2,sch_desc_onWorkdays:L2,sch_desc_onceInPast:g2,sch_desc_once_on:j2,sch_desc_validFrom:y2,sch_desc_validFromTo:T2,sch_desc_validTo:D2,sch_every:d2,sch_exactTime:h2,sch_from:z2,sch_fromTo:w2,sch_intervalTime:I2,sch_invert:C2,sch_no_one:p2,sch_on:A2,sch_period:m2,sch_periodDaily:f2,sch_periodDates:O2,sch_periodDay:E2,sch_periodEvery:_2,sch_periodEveryDay:x2,sch_periodEveryMonth:S2,sch_periodEveryWeek:k2,sch_periodEveryYear:v2,sch_periodHours:Y2,sch_periodMinutes:Q2,sch_periodMonth:b2,sch_periodMonthly:U2,sch_periodOnce:$2,sch_periodSpecificMonths:P2,sch_periodWeek:W2,sch_periodWeekdays:J2,sch_periodWeekend:B2,sch_periodWeekly:R2,sch_periodWorkdays:F2,sch_periodYear:G2,sch_periodYearly:H2,sch_specificTime:V2,sch_time:Z2,sch_to:X2,sch_valid:K2,sch_validFrom:q2,sch_validTo:ep,sch_wholeDay:tp,sch_yearEveryMonth:sp},rp="Aktionen",op="Anhängen",np="Abbrechen",ap="Kategorien",Mp="Geprüft",cp="Löschen",up="Schließen",lp="Kommerziell",Np="Konfigurieren",Lp="Verbunden",gp="Weitermachen",jp="Kopiert",yp="Erstellen",Tp="Ernte",Dp="Entf",dp="Löschen",hp="Verwerfen",zp="Getrennt",wp="Fehler",Ip="Filter",Cp="Freitag",pp="Breite",Ap="Ausloggen",mp="Längengrad",fp="Meldung",Op="Montag",Ep="Name",_p="Objekte",xp="OK",Sp="Produkt",kp="Umbenennen/Verschieben/Kopieren",vp="Wiederholen",Yp="Ersetzen",Qp="Anfang",bp="Samstag",Up="Speichern",$p="Ausgewählt",Pp="Zustände",Wp="Sonntag",Jp="Donnerstag",Bp="Zeitstempel",Rp="Dienstag",Fp="Aktualisieren",Gp="Gültig bis",Hp="Wert",Vp="Ausführung",Zp="Mittwoch",Xp="Breite",Kp="Ja",qp="unterschiedlich",eA="Jeder kann Objekt lesen",tA="Jeder kann Zustand lesen",sA="Jeder kann ein Objekt schreiben",iA="Jeder kann Zustand schreiben",rA="Gruppe kann Objekt lesen",oA="Gruppe kann Status lesen",nA="Gruppe kann Objekt schreiben",aA="Gruppe kann Status schreiben",MA="Besitzer kann Objekt lesen",cA="Besitzer kann Zustand lesen",uA="Besitzer kann Objekt schreiben",lA="Besitzer kann Zustand schreiben",NA="Tasten",LA="Geändert von",gA="Schließen",jA="Booleschen Zustand erstellen",yA="Kanal erstellen",TA="Gerät erstellen",DA="Nummern-Zustand erstellen",dA="Zustand erstellen",hA="String-Zustand erstellen",zA="T.",wA="Fr",IA="Mo",CA="Sa",pA="So",AA="Do",mA="Di",fA="Mi",OA="Expertenmodus",EA="FALSCH",_A="Alle Dateien",xA="Audio",SA="Code/JSON",kA="Bilder",vA="Text",YA="Video",QA="Einstellungen",bA="ohne",UA="Funktion",$A="ID",PA="Name",WA="Rolle",JA="Raum",BA="Typ",RA="Ungültige Einstellungen",FA="Letzte Änderung",GA="örtlich",HA="Apr",VA="Aug",ZA="Dez",XA="Feb",KA="Jan",qA="Jul",em="Jun",tm="Mai",sm="Mär",im="Nov",rm="Okt",om="Sep",nm="Apr",am="Aug",Mm="Dez",cm="Feb",um="Jan",lm="Jul",Nm="Jun",Lm="Mai",gm="Mär",jm="Nov",ym="Okt",Tm="Sep",Dm="kein",dm="Objekt geändert von",hm="Objekt zuletzt geändert um",zm="Einstellungen von anderen Adaptern %s",wm="Qualitätscode",Im="wiederholen",Cm='Um einen Ordner auszuwählen, halten Sie einfach die Taste "Shift" gedrückt, indem Sie auf den Ordner klicken.',pm="Alle anzeigen",Am="Zustand geändert durch",mm="Objekt geändert von",fm="Zeitstempel",Om="Bestätigt",Em="Kommentar",_m="Statuswert kopieren",xm="Strg/⌘-Taste gedrückt halten, um den Link zu öffnen",Sm="Benutzerdefinierte Einstellungen",km="Objekt löschen",vm="Objekt bearbeiten",Ym="Statuswert bearbeiten",Qm="Läuft ab in",bm="Von",Um="Zuletzt geändert",$m="Qualität",Pm="Zeitstempel",Wm="Benutzer",Jm="Wert",Bm="WAHR",Rm="Wert",Fm="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Minute ausgeführt!",Gm="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Sekunde ausgeführt!",Hm="CRON",Vm="Datum",Zm="Tage",Xm="Tag",Km="Wochentage",qm="Jeden",e3="alle N Tage",t3="jeden x-ten Tag der Woche",s3="alle N Wochentage",i3="alle N Stunden",r3="alle N Minuten",o3="alle N Monate",n3="alle N Sekunden",a3="jeden Tag",M3="jeden Tag der Woche",c3="jeden Tag der Woche",u3="jede Stunde",l3="jede Minute",N3="jeden Monat",L3="jede Sekunde",g3="Von",j3="Stunden",y3="Intervall",T3="Intervall zwischen",D3="Ungültiger CRON",d3="Minuten",h3="Monate",z3="Einmal",w3="Zeitraum",I3="Sekunden",C3="Einfach",p3="Bestimmte Zeit",A3="bestimmte Tage",m3="bestimmte(r) Tag(e) der Woche",f3="bestimmten Wochentag",O3="bestimmte Stunden",E3="bestimmte Minuten",_3="bestimmte Monate",x3="bestimmte Sekunden",S3="Zeit",k3="Bis",v3="Wizard",Y3="alle",Q3="Astronomischer Tag",b3="Astronomische Nacht",U3="Morgendämmerung",$3="Abenddämmerung",P3="Goldene Stunde",W3="Goldene Stundenende",J3="Nadir",B3="Nautische Morgendämmerung",R3="Nautische Abenddämmerung",F3="Nacht",G3="Nachtende",H3="Sonnenmittag",V3="Sonnenaufgang",Z3="Sonnenaufgangende",X3="Sonnenuntergang",K3="Sonnenuntergangstart",q3="am",ef="um %s",tf="jeden Tag",sf="jede Stunde",rf="jede Minute",of="jeden Monat",nf="jeden %s Tag",af="alle %s Stunden",Mf="alle %s Minuten",cf="alle %s Monate",uf="alle %s Wochen",lf="alle %s Jahre",Nf="jede Woche",Lf="jedes Jahr",gf="von %s bis %s",jf="noch nie",yf="am %s von %s",Tf="am %s und %s von",Df="an jedem Datum von",df="%s",hf="%s und %s",zf="auf %s",wf="auf %s und %s",If="an Wochenenden",Cf="an Werktagen",pf="wird nicht mehr ausgeführt, weil der Start in der Vergangenheit ist",Af="auf %s",mf="von %s",ff="Ausführen von bis",Of="bis %s",Ef="jeden",_f="Bestimmte Zeit",xf="von",Sf="Von bis",kf="Zeitintervall",vf="umkehren",Yf="keiner",Qf="am",bf="Zeitraum",Uf="Täglich",$f="Daten",Pf="Tag",Wf="Jeden",Jf="Jeden Tag",Bf="Jeden Monat",Rf="Jede Woche",Ff="Jedes Jahr",Gf="Stunden",Hf="Minuten",Vf="Monat",Zf="Monatlich",Xf="Einmal",Kf="Bestimmte Monate",qf="Woche",eO="Wochentage",tO="Wochenende",sO="Wöchentlich",iO="Arbeitstage",rO="Jahr",oO="Jährlich",nO="Bestimmte Zeit",aO="Zeit",MO="zu",cO="Gültigkeit",uO="von",lO="bis",NO="Ganzer Tag",LO="jeden Monat",gO={"ra_%s links from aliases":"%s Links von Aliasen","ra_%s object(s) processed":"%s Objekt(e) verarbeitet","ra_%s was imported":"%s wurde importiert","ra_Accept license":"Lizenz akzeptieren",ra_Actions:rp,"ra_Add new child object to selected parent":"Dem ausgewählten übergeordneten Objekt ein neues untergeordnetes Objekt hinzufügen","ra_Add objects tree from JSON file":"Objektbaum aus JSON-Datei hinzufügen","ra_Add row":"Zeile hinzufügen","ra_Advanced options":"Erweiterte Optionen","ra_All items are filtered out":"Alle Elemente sind herausgefiltert","ra_All objects":"Alle Objekte",ra_Append:op,"ra_Append %s entries or replace existing?":"%s Einträge anhängen oder vorhandene ersetzen?","ra_Append or replace?":"Anhängen oder ersetzen?","ra_Are you sure?":"Bist du sicher?","ra_Auto (no custom columns)":"Auto (keine benutzerdefinierten Spalten)","ra_Back to %s":"Zurück zu %s","ra_Background image":"Hintergrundbild",ra_Cancel:np,"ra_Cannot add items with set filter":"Elemente mit festgelegtem Filter können nicht hinzugefügt werden","ra_Cannot decode license":"Lizenz kann nicht entschlüsselt werden","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Position kann nicht bestimmt werden: Die Systemeinstellungen sind leer und die GPS-Erkennung ist im Browser deaktiviert",'ra_Cannot find "%s"':'Kann "%s" nicht finden','ra_Cannot read "%s"':'"%s" kann nicht gelesen werden',"ra_Cannot read licenses: %s":"Lizenzen können nicht gelesen werden: %s","ra_Cannot retrieve options, as instance is offline":"Optionen können nicht abgerufen werden, da die Instanz offline ist","ra_Cannot update attribute, because not found in the object":"Attribut kann nicht aktualisiert werden, da es nicht im Objekt gefunden wurde","ra_Cannot upload":"Kann nicht hochladen",ra_Categories:ap,"ra_Chained certificate":"Chained Zertifikat","ra_Change color theme":"Farbthema ändern","ra_Changed from":"Geändert von","ra_Channel → State":"Kanal → Zustand","ra_Check license":"Lizenz prüfen",ra_Checked:Mp,ra_Clear:cp,"ra_Clear filter":"Filter löschen","ra_Clear icon":"Symbol löschen","ra_Click to see in full size":"Klicken Sie hier, um die Vollbildansicht zu öffnen.","ra_Click to show":"Zum Anzeigen klicken","ra_Clone current row":"Aktuelle Zeile klonen",ra_Close:up,"ra_Collapse all nodes":"Alle Knoten zuklappen","ra_Collapse one step node":"Eine Ebene zuklappen",ra_Commercial:lp,ra_Configure:Np,"ra_Configure visible columns":"Spalten Konfigurieren","ra_Confirm deletion of %s":"Das Löschen von %s bestätigen",ra_Connected:Lp,ra_Continue:gp,ra_Copied:jp,"ra_Copied %s":'"%s" kopiert',"ra_Copy content":"Inhalte kopieren",ra_Create:yp,"ra_Create alias":"Alias erstellen","ra_Create folder":"Ordner erstellen","ra_Create new folder in %s":'Neuen Ordner in "%s" erstellen',ra_Crop:Tp,"ra_Define CRON...":"Definieren Sie CRON ...","ra_Define functions":"Funktionen definieren","ra_Define rooms":"Räume definieren","ra_Define schedule":"Zeitplan definieren","ra_Define schedule...":"Zeitplan definieren ...",ra_Del:Dp,ra_Delete:dp,"ra_Delete current row":"Aktuelle Zeile löschen","ra_Deselect all":"Alles abwählen","ra_Device → Channel → State":"Gerät → Kanal → Zustand","ra_Disable/Enable translation":"Übersetzung deaktivieren/aktivieren",ra_Discard:hp,ra_Disconnected:zp,"ra_Do not ask for next 2 hours in this session":"Fragen Sie nicht nach den nächsten 2 Stunden in dieser Sitzung","ra_Do not export values of states":"Keine Zustandswerte exportieren","ra_Do not use let's encrypt":"Let's encrypt nicht verwenden","ra_Docker is not available":"Docker ist nicht verfügbar","ra_Docker is not installed or not running":"Docker ist nicht installiert oder läuft nicht","ra_Double click to reset table layout":"Doppelklicken, um das Tabellenlayout zurückzusetzen","ra_Drag 'n' drop some files here, or click to select files":"Die Datei hierher ziehen und ablegen, oder klicken, um die Datei auszuwählen","ra_Drop file here":"Datei hier ablegen","ra_Drop the files here...":"Datei hier ablegen...","ra_Duplicate name":"Doppelter Name","ra_Edit ACL":"ACL bearbeiten","ra_Edit alias":"Alias bearbeiten","ra_Edit custom config":"Bearbeite Benutzerdefinierte Konfiguration","ra_Edit full path":"Vollständigen Pfad bearbeiten","ra_Edit function":"Funktion bearbeiten","ra_Edit object field":"Objektfeld bearbeiten","ra_Edit role":"Rolle bearbeiten","ra_Edit room":"Raum bearbeiten","ra_Edit value":"Wert bearbeiten","ra_Enter the code from that page here":"Geben Sie den Code von dieser Seite hier ein",ra_Error:wp,"ra_Expand all nodes":"Alle Knoten aufklappen","ra_Expand one step node":"Eine Ebene aufklappen","ra_Expand/Collapse card":"Karte ein-/ausklappen","ra_Export configuration section":"Konfigurationsabschnitt exportieren","ra_Export data to %s file":"Daten in %s-Datei exportieren","ra_Failed to open JSON File":"Fehler beim Öffnen der JSON-Datei","ra_Fallback custom certificates":"Benutzerdefinierte Fallback-Zertifikate","ra_File is too big. Max %sk allowed. Try use SVG.":"Datei ist zu groß. Max %sk erlaubt. Versuchen Sie, SVG zu verwenden.",ra_Filter:Ip,"ra_Filter and Data Actions":"Filter- und Datenaktionen","ra_Filter files":"Dateien filtern","ra_Folder name":"Ordnernamen","ra_Folder → Channel → State":"Ordner → Kanal → Zustand","ra_Folder → Device → Channel → State":"Ordner → Gerät → Kanal → Zustand","ra_Folder → State":"Ordner → Zustand","ra_Folders always first":"Ordner immer zuerst",ra_Friday:Cp,"ra_From file":"Aus der Datei","ra_From text":"Aus dem Text","ra_Get %s access":"%s Zugriff erhalten","ra_Good luck":"Viel Glück","ra_Hide empty folders":"Leere Ordner ausblenden","ra_If no file will be created in the folder, it will disappear after the browser closed":"Wenn im Ordner keine Datei erstellt wird, verschwindet dieser nach dem Schließen des Browsers","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Wenn die Schaltfläche oben nicht funktioniert, können Sie diese App manuell autorisieren, indem Sie diese URL besuchen","ra_Import and add configuration section":"Konfigurationsabschnitt importieren und hinzufügen","ra_Import and replace configuration section":"Konfigurationsabschnitt importieren und ersetzen","ra_Import data from %s file":"Daten aus %s-Datei importieren","ra_Import from %s":"Von %s importieren","ra_Instance %s is alive":"Instanz %s ist aktiv","ra_Instance %s is not alive":"Instanz %s ist nicht aktiv","ra_Instance is not alive":"Instanz ist nicht am Leben","ra_Invalid CRON":"Ungültiger CRON","ra_Invalid JSON":"Ungültiges JSON","ra_Invalid JSON file.":"Ungültige JSON-Datei.","ra_Invalid JSON format. Expected an array.":"Ungültiges JSON-Format. Array erwartet.","ra_Invalid answer from server":"Ungültige Antwort vom Server","ra_Invalid parent folder!":"Ungültiger übergeordneter Ordner!","ra_Invalid structure":"Ungültige Struktur","ra_JSON editor":"JSON-Editor","ra_Last change":"Letzte Änderung",ra_Latitude:pp,"ra_License %s":"Lizenz %s","ra_License agreement":"Lizenzvereinbarung","ra_License does not exist":"Lizenz existiert nicht","ra_License expired on %s":"Lizenz am %s abgelaufen",'ra_License for other product "%s"':"Lizenz für anderes Produkt „%s“","ra_License is for version %s, but required version is %s.":"Lizenz ist für Version %s, aber erforderliche Version ist %s.","ra_License must be converted":"Die Lizenz muss auf eine neuere Version konvertiert werden. Sie können dies in Ihrem iobroker.net-Profil tun.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Lizenz im Lizenzmanager nicht gefunden. Möchten Sie Lizenzen von iobroker.net aktualisieren?","ra_Listen on all IPs":"Zugriff von allen IPs zulassen","ra_Load configuration from file":"Konfiguration aus Datei laden",ra_Logout:Ap,ra_Longitude:mp,'ra_May not trigger "updateLicenses"':"Löst möglicherweise nicht „updateLicenses“ aus",ra_Message:fp,ra_Monday:Op,"ra_Move down":"Nach unten","ra_Move up":"Nach oben",ra_Name:Ep,"ra_No data found in file":"Keine Daten in der Datei gefunden","ra_No one license found in license manager":"Im Lizenzmanager wurde keine Lizenz gefunden","ra_No response from admin":"Keine Antwort vom Administrator","ra_No response from the backend":"Keine Antwort vom Backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Nicht-Experten dürfen neue Objekte nur in "0_userdata.0" oder "alias.0" erstellen.',"ra_Not a number":"Keine Nummer","ra_OAuth Client ID":"OAuth-Client-ID","ra_OAuth Client secret":"OAuth-Client-Secret",ra_Objects:_p,ra_Ok:xp,"ra_On weekdays":"An Wochentagen","ra_Only following structures of objects are available:":"Es stehen nur folgende Objektstrukturen zur Verfügung:","ra_Only selected":"Nur ausgewählt","ra_Owner group":"Besitzergruppe","ra_Owner user":"Besitzer Benutzer","ra_Passwords are not equal!":"Passwörter sind nicht gleich!","ra_Place your files here or click here to open the browse dialog":"Die Dateien hier platzieren oder hier klicken, um den Suchdialog zu öffnen","ra_Please allow popups in your browser for this page!":"Bitte lassen Sie Popups für diese Seite in Ihrem Browser zu!","ra_Please confirm":"Bitte bestätigen","ra_Please create license":"Bitte erstellen Sie eine Lizenz","ra_Please enter the license":"Bitte die Lizenz eingeben","ra_Please select file...":"Bitte Datei auswählen...","ra_Please select object ID...":"Bitte Objekt-ID auswählen...","ra_Port could be used by %s":"Port könnte von %s verwendet werden","ra_Port is already used by %s":"Port wird bereits von %s verwendet","ra_Press ENTER Key to add new item":"Die Eingabetaste drücken, um ein neues Element hinzuzufügen","ra_Private certificate":"Privates Zertifikat",ra_Product:Sp,"ra_Public certificate":"Öffentliches Zertifikat","ra_Quality code":"Qualität","ra_Refresh tree":"Baum aktualisieren","ra_Reload files":"Dateien neu laden",ra_Rename_Move_Copy:kp,"ra_Renew %s access":"%s Zugriff erneuern",ra_Repeat:vp,ra_Replace:Yp,"ra_Request timed out":"Zeitüberschreitung der Anforderung","ra_Restrict to folder":"Auf Ordner beschränken",ra_Root:Qp,ra_Saturday:bp,ra_Save:Up,"ra_Save and close":"Speichern und schließen","ra_Save configuration to file":"Konfiguration in Datei speichern","ra_Save objects tree as JSON file":"Objektbaum als JSON-Datei speichern","ra_Select all":"Alle auswählen","ra_Select color":"Wähle Farbe","ra_Select predefined icon":"Vordefiniertes Symbol auswählen","ra_Select type of export":"Die Art des Exports auswählen ",ra_Selected:$p,"ra_Selected %s object(s)":"Ausgewählt %s Objekt(en)","ra_Serial number (UUID)":"Seriennummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Seriennummer (UUID) „%s“ in der Lizenz gilt für ein anderes Gerät.","ra_Session will expire in %s seconds. Continue?":"Die Sitzung läuft in %s Sekunden ab. Fortfahren?","ra_Show all folders":"Alle Ordner anzeigen","ra_Show lines between rows":"Linien zwischen Zeilen anzeigen","ra_Show/Hide object descriptions":"Objektbeschreibungen ein-/ausblenden","ra_Show/hide filter input":"Filtereingabe ein-/ausblenden","ra_Some data are not stored. Discard?":"Einige Daten werden nicht gespeichert. Verwerfen?",ra_States:Pp,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Erfolgreich autorisiert. Token gültig bis %s und wird automatisch erneuert.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Erfolgreich autorisiert. Token gültig bis %s, kann aber ablaufen, da die Instanz nicht ausgeführt wird.","ra_Suitable license not found in license manager":"Passende Lizenz im Lizenzmanager nicht gefunden",ra_Sunday:Wp,"ra_Suppress question for next %s minutes":"Frage für die nächsten %s Minuten unterdrücken","ra_System language":"Systemsprache","ra_Take browser position":"Position vom Browser einnehmen","ra_Take position from system settings":"Position aus den Systemeinstellungen übernehmen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Die Experten können Objekte überall erstellen, außer auf der zweiten Ebene (z. B. "vis.0" oder "javascript.0").',"ra_The page you are looking for was not found":"Die gesuchte Seite wurde nicht gefunden","ra_The schedule will be executed every minute. Are you sure?":"Der Zeitplan wird jede Minute ausgeführt. Sind Sie sicher?","ra_The schedule will be executed every second. Are you sure?":"Der Zeitplan wird jede Sekunde ausgeführt. Sind Sie sicher?",ra_Thursday:Jp,ra_Timestamp:Bp,"ra_Toggle expert mode":"Expertenmodus umschalten","ra_Toggle the states view":"Statusansicht umschalten","ra_Toggle view mode":"Ansichtsmodus umschalten","ra_Too big":"Zu groß","ra_Too small":"Zu klein","ra_Transparent dialog":"Transparenter Dialog",ra_Tuesday:Rp,"ra_Unknown error":"Unbekannter Fehler","ra_Unknown error!":"Unbekannter Fehler!",ra_Update:Fp,"ra_Upload file":"Datei hochladen","ra_Use all available let's encrypt certificates":"Alle verfügbaren Zertifikate von Let's encrypt benutzen","ra_Use iobroker.acme adapter for letsencrypt certificates":"ioBroker.acme-Adapter für letsencrypt-Zertifikate verwenden","ra_Use system settings for position":"Systemeinstellungen für die Position verwenden","ra_Used system settings":"Systemeinstellungen","ra_User files":"Benutzerdaten",ra_ValidTill:Gp,ra_Value:Hp,ra_Version:Vp,"ra_View file":"Datei ansehen","ra_View: %s":"Anschauen: %s",ra_Wednesday:Zp,ra_Width:Xp,"ra_YAML editor":"YAML-Editor",ra_Yes:Kp,"ra_You can export all objects or just the selected branch.":"Sie können alle Objekte oder nur den ausgewählten Zweig exportieren.","ra_You can filter entries by entering here some text":"Sie können Einträge filtern, indem Sie hier Text eingeben","ra_You can use * as wildcard":"Sie können * als Platzhalter verwenden",ra___different__:qp,ra_aclEveryone_read_object:eA,ra_aclEveryone_read_state:tA,ra_aclEveryone_write_object:sA,ra_aclEveryone_write_state:iA,ra_aclGroup_read_object:rA,ra_aclGroup_read_state:oA,ra_aclGroup_write_object:nA,ra_aclGroup_write_state:aA,ra_aclOwner_read_object:MA,ra_aclOwner_read_state:cA,ra_aclOwner_write_object:uA,ra_aclOwner_write_state:lA,ra_buttons:NA,ra_changedFrom:LA,ra_close:gA,ra_create_boolean_state:jA,ra_create_channel:yA,ra_create_device:TA,ra_create_number_state:DA,ra_create_state:dA,ra_create_string_state:hA,ra_daysShortText:zA,ra_dow_Fr:wA,ra_dow_Mo:IA,ra_dow_Sa:CA,ra_dow_Su:pA,ra_dow_Th:AA,ra_dow_Tu:mA,ra_dow_We:fA,ra_expertMode:OA,ra_false:EA,ra_fileType_all:_A,ra_fileType_audio:xA,ra_fileType_code:SA,ra_fileType_images:kA,ra_fileType_txt:vA,ra_fileType_video:YA,"ra_fileType_video,":"Video",ra_filter_customs:QA,ra_filter_customs_without:bA,ra_filter_func:UA,ra_filter_id:$A,ra_filter_name:PA,ra_filter_role:WA,ra_filter_room:JA,ra_filter_type:BA,"ra_import data from %s file":"Daten aus %s-Datei importieren",ra_invalidConfig:RA,ra_lastChange:FA,ra_locally:GA,ra_month_Apr:HA,ra_month_Aug:VA,ra_month_Dec:ZA,ra_month_Feb:XA,ra_month_Jan:KA,ra_month_Jul:qA,ra_month_Jun:em,ra_month_Mai:tm,ra_month_Mar:sm,ra_month_Nov:im,ra_month_Oct:rm,ra_month_Sep:om,ra_months_Apr:nm,ra_months_Aug:am,ra_months_Dec:Mm,ra_months_Feb:cm,ra_months_Jan:um,ra_months_Jul:lm,ra_months_Jun:Nm,ra_months_Mai:Lm,ra_months_Mar:gm,ra_months_Nov:jm,ra_months_Oct:ym,ra_months_Sep:Tm,"ra_no confirm for 5 mins":"5 Minuten lang keine Bestätigung",ra_none:Dm,ra_object_changed_by:dm,ra_object_changed_by_user:hm,ra_otherConfig:zm,ra_qualityCode:wm,ra_repeat:Im,ra_select_folder_hint:Cm,ra_show_all:pm,ra_state_changed_by:Am,ra_state_changed_from:mm,ra_timestamp:fm,ra_tooltip_ack:Om,ra_tooltip_comment:Em,ra_tooltip_copyState:_m,ra_tooltip_ctrlForLink:xm,ra_tooltip_customConfig:Sm,ra_tooltip_deleteObject:km,ra_tooltip_editObject:vm,ra_tooltip_editState:Ym,ra_tooltip_expire:Qm,ra_tooltip_from:bm,ra_tooltip_lc:Um,ra_tooltip_quality:$m,ra_tooltip_ts:Pm,ra_tooltip_user:Wm,ra_tooltip_value:Jm,ra_true:Bm,"ra_use seconds":"Sekunden benutzen",ra_val:Rm,"ra_via internet":"übers Internet",ra_warning_every_minute:Fm,ra_warning_every_second:Gm,sc_cron:Hm,sc_date:Vm,sc_dates:Zm,sc_dow:Xm,sc_dows:Km,sc_every:qm,sc_everyN_dates:e3,sc_everyN_dow:t3,sc_everyN_dows:s3,sc_everyN_hours:i3,sc_everyN_minutes:r3,sc_everyN_months:o3,sc_everyN_seconds:n3,sc_every_dates:a3,sc_every_dow:M3,sc_every_dows:c3,sc_every_hours:u3,sc_every_minutes:l3,sc_every_months:N3,sc_every_seconds:L3,sc_from:g3,sc_hours:j3,sc_interval:y3,sc_intervalBetween:T3,sc_invalid_cron:D3,sc_minutes:d3,sc_months:h3,sc_once:z3,sc_period:w3,sc_seconds:I3,sc_simple:C3,sc_specific:p3,sc_specific_dates:A3,sc_specific_dow:m3,sc_specific_dows:f3,sc_specific_hours:O3,sc_specific_minutes:E3,sc_specific_months:_3,sc_specific_seconds:x3,sc_time:S3,sc_to:k3,sc_wizard:v3,sch_all:Y3,sch_astroDay:Q3,sch_astroNight:b3,sch_astro_dawn:U3,sch_astro_dusk:$3,sch_astro_goldenHour:P3,sch_astro_goldenHourEnd:W3,sch_astro_nadir:J3,sch_astro_nauticalDawn:B3,sch_astro_nauticalDusk:R3,sch_astro_night:F3,sch_astro_nightEnd:G3,sch_astro_solarNoon:H3,sch_astro_sunrise:V3,sch_astro_sunriseEnd:Z3,sch_astro_sunset:X3,sch_astro_sunsetStart:K3,sch_at:q3,sch_desc_atTime:ef,sch_desc_everyDay:tf,sch_desc_everyHour:sf,sch_desc_everyMinute:rf,sch_desc_everyMonth:of,sch_desc_everyNDay:nf,sch_desc_everyNHours:af,sch_desc_everyNMinutes:Mf,sch_desc_everyNMonths:cf,sch_desc_everyNWeeks:uf,sch_desc_everyNYears:lf,sch_desc_everyWeek:Nf,sch_desc_everyYear:Lf,sch_desc_intervalFromTo:gf,sch_desc_never:jf,sch_desc_onDate:yf,sch_desc_onDates:Tf,sch_desc_onEveryDate:Df,sch_desc_onMonth:df,sch_desc_onMonths:hf,sch_desc_onWeekday:zf,sch_desc_onWeekdays:wf,sch_desc_onWeekends:If,sch_desc_onWorkdays:Cf,sch_desc_onceInPast:pf,sch_desc_once_on:Af,sch_desc_validFrom:mf,sch_desc_validFromTo:ff,sch_desc_validTo:Of,sch_every:Ef,sch_exactTime:_f,sch_from:xf,sch_fromTo:Sf,sch_intervalTime:kf,sch_invert:vf,sch_no_one:Yf,sch_on:Qf,sch_period:bf,sch_periodDaily:Uf,sch_periodDates:$f,sch_periodDay:Pf,sch_periodEvery:Wf,sch_periodEveryDay:Jf,sch_periodEveryMonth:Bf,sch_periodEveryWeek:Rf,sch_periodEveryYear:Ff,sch_periodHours:Gf,sch_periodMinutes:Hf,sch_periodMonth:Vf,sch_periodMonthly:Zf,sch_periodOnce:Xf,sch_periodSpecificMonths:Kf,sch_periodWeek:qf,sch_periodWeekdays:eO,sch_periodWeekend:tO,sch_periodWeekly:sO,sch_periodWorkdays:iO,sch_periodYear:rO,sch_periodYearly:oO,sch_specificTime:nO,sch_time:aO,sch_to:MO,sch_valid:cO,sch_validFrom:uO,sch_validTo:lO,sch_wholeDay:NO,sch_yearEveryMonth:LO},jO="Действия",yO="Добавить",TO="Отмена",DO="Категории",dO="Проверено",hO="Удалить",zO="Закрыть",wO="Коммерческая",IO="Настроить",CO="Соединение установлено",pO="Продолжать",AO="скопировано",mO="Создать",fO="Обрезать",OO="Delete",EO="Удалить",_O="Отказаться",xO="Отключено",SO="Ошибка",kO="Фильтр",vO="Пятница",YO="Широта",QO="Выйти",bO="Долгота",UO="Сообщение",$O="Понедельник",PO="Имя",WO="Объекты",JO="Ok",BO="Продукт",RO="Переименовать/Переместить/Копировать",FO="Повторение",GO="Заменять",HO="Начало",VO="Суббота",ZO="Сохранить",XO="выбранный",KO="Состояния",qO="Воскресенье",eE="Четверг",tE="Времени",sE="Вторник",iE="Обновить",rE="Годен до",oE="Значение",nE="Версия",aE="Среда",ME="Ширина",cE="Да",uE="разное",lE="Каждый может читать объект",NE="Каждый может читать состояние",LE="Каждый может написать объект",gE="Каждый может написать состояние",jE="Группа может читать объект",yE="Группа может читать состояние",TE="Группа может писать объект",DE="Группа может записывать состояние",dE="Владелец может читать объект",hE="Владелец может читать состояние",zE="Владелец может писать объект",wE="Владелец может писать состояние",IE="Кнопки",CE="Изменено с",pE="Закрыть",AE="Создать логическое состояние",mE="Создать канал",fE="Создать устройство",OE="Создать состояние номера",EE="Создать состояние",_E="Создать состояние строки",xE="д.",SE="Пт",kE="Пн",vE="Сб",YE="Вс",QE="Чт",bE="Вт",UE="Ср",$E="Экспертный режим",PE="ЛОЖЬ",WE="Все файлы",JE="Аудио",BE="Код/JSON",RE="Картинки",FE="Текст",GE="видео",HE="настройки",VE="без",ZE="функция",XE="ID",KE="Имя",qE="роль",e_="комната",t_="Тип",s_="Неверные настройки",i_="Последнее изменение",r_="локально",o_="Апр",n_="Авг",a_="Дек",M_="Фев",c_="Янв",u_="Июл",l_="Июн",N_="Май",L_="Мрт",g_="Ноя",j_="Окт",y_="Сен",T_="Апр",D_="Авг",d_="Дек",h_="Фев",z_="Янв",w_="Июнь",I_="Июль",C_="Май",p_="Март",A_="Ноя",m_="Окт",f_="Сен",O_="ничего",E_="Объект изменен",__="Последний раз объект изменен в",x_="Настройки из другого адаптера %s",S_="Код качества",k_="повтор",v_="Чтобы выбрать папку, просто удерживайте клавишу «Shift», щелкнув папку.",Y_="Показать все",Q_="Состояние изменено",b_="Объект изменен с",U_="Отметка времени",$_="Подтверждено",P_="Комментарий",W_="Скопируйте значение состояния",J_="Удерживайте клавишу Cltr/⌘, чтобы открыть ссылку",B_="Пользовательские настройки",R_="Удалить объект",F_="Редактировать объект",G_="Изменить значение состояния",H_="Истекает через",V_="От",Z_="Последнее изменение",X_="Качество",K_="Отметка времени",q_="пользователь",ex="Значение",tx="истинный",sx="Значение",ix="Внимание: задание CRON будет запускаться каждую минуту в течение указанного периода!",rx="Внимание: задание CRON будет выполняться каждую секунду в течение указанного периода!",ox="CRON",nx="Дата",ax="Даты",Mx="День",cx="День недели",ux="каждый(ую/ые)",lx="каждый N день",Nx="каждый N-й день недели",Lx="каждый N день недели",gx="каждые N часов",jx="каждые N минут",yx="каждые N месяцев",Tx="каждые N секунд",Dx="каждый день",dx="Каждый день недели",hx="каждый день недели",zx="каждый час",wx="каждую минуту",Ix="каждый месяц",Cx="каждую секунду",px="От",Ax="часы",mx="Интервал",fx="Интервал между",Ox="Неверный CRON",Ex="минуты",_x="Месяцы",xx="один раз",Sx="Период",kx="секунды",vx="Просто",Yx="Конкретное время",Qx="конкретные даты",bx="конкретный день(а) недели",Ux="конкретный день недели",$x="конкретные часы",Px="конкретные минуты",Wx="конкретные месяцы",Jx="конкретные секунды",Bx="Время",Rx="До",Fx="Форма",Gx="все",Hx="днём",Vx="ночью",Zx="Рассвет",Xx="Сумерки",Kx="Золотой час",qx="Конец золотого часа",eS="Надир",tS="Морской рассвет",sS="Морские сумерки",iS="Ночь",rS="Конец ночи",oS="Солнечный полдень",nS="Восход",aS="Восход солнца",MS="Заход солнца",cS="Начало заката",uS="дата",lS="в %s",NS="каждый день",LS="каждый час",gS="каждую минуту",jS="каждый месяц",yS="каждый %s день",TS="каждый %s часов",DS="каждые %s минут",dS="каждые %s месяцев",hS="каждые %s недель",zS="каждые %s лет",wS="каждую неделю",IS="каждый год",CS="от %s до %s",pS="никогда",AS="%s %s",mS="%s и %s",fS="в каждый день",OS="%s",ES="%s и %s",_S="%s",xS="%s и %s",SS="на выходных",kS="в рабочие дни",vS="не будет больше выполняться, потому что начало в прошлом",YS="%s",QS="%s",bS="Выполнить с",US="%s",$S="каждый",PS="Конкретное время",WS="от",JS="От и до",BS="Интервал времени",RS="инвертировать",FS="никакой",GS="на",HS="период",VS="Ежедневно",ZS="Даты",XS="День",KS="каждый",qS="Каждый день",e5="Каждый месяц",t5="Каждую неделю",s5="Каждый год",i5="часов",r5="минут",o5="месяц",n5="ежемесячно",a5="однажды",M5="Конкретные месяцы",c5="Неделю",u5="Будние дни",l5="выходные",N5="еженедельно",L5="Рабочие дни",g5="Год",j5="каждый год",y5="Конкретное время",T5="Время",D5="в",d5="действительный",h5="от",z5="в",w5="Весь день",I5="каждый месяц",C5={"ra_%s links from aliases":"%s ссылок из псевдонимов","ra_%s object(s) processed":"Объектов обработано: %s","ra_%s was imported":"%s был импортирован","ra_Accept license":"Принять лицензию",ra_Actions:jO,"ra_Add new child object to selected parent":"Добавить новый дочерний объект к выбранному родительскому объекту","ra_Add objects tree from JSON file":"Добавить дерево объектов из файла JSON","ra_Add row":"Добавить ряд","ra_Advanced options":"Расширенные настройки","ra_All items are filtered out":"Все элементы отфильтрованы","ra_All objects":"Все объекты",ra_Append:yO,"ra_Append %s entries or replace existing?":"Добавить записи %s или заменить существующие?","ra_Append or replace?":"Дополнить или заменить?","ra_Are you sure?":"Вы уверены?","ra_Auto (no custom columns)":"Авто (без настраиваемых столбцов)","ra_Back to %s":"Вернуться к %s","ra_Background image":"Фоновая картинка",ra_Cancel:TO,"ra_Cannot add items with set filter":"Невозможно добавить элементы с установленным фильтром","ra_Cannot decode license":"Не могу декодировать лицензию","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Невозможно определить местоположение: системные настройки пусты, а обнаружение GPS отключено в браузере.",'ra_Cannot find "%s"':'Не могу найти "%s"','ra_Cannot read "%s"':'Не могу прочитать "%s"',"ra_Cannot read licenses: %s":"Невозможно прочитать лицензии: %s","ra_Cannot retrieve options, as instance is offline":"Невозможно получить параметры, так как экземпляр находится в автономном режиме.","ra_Cannot update attribute, because not found in the object":"Невозможно обновить атрибут, потому что он не найден в объекте","ra_Cannot upload":"Невозможно загрузить",ra_Categories:DO,"ra_Chained certificate":"Chained сертификат","ra_Change color theme":"Изменить цветовую тему","ra_Changed from":"Изменено","ra_Channel → State":"Канал → Состояние","ra_Check license":"Проверить лицензию",ra_Checked:dO,ra_Clear:hO,"ra_Clear filter":"Очистить фильтр","ra_Clear icon":"Очистить значок","ra_Click to see in full size":"Нажмите, чтобы посмотреть в полном размере","ra_Click to show":"Нажмите, чтобы показать","ra_Clone current row":"Клонировать текущую строку",ra_Close:zO,"ra_Collapse all nodes":"Свернуть все узлы","ra_Collapse one step node":"Свернуть один уровень",ra_Commercial:wO,ra_Configure:IO,"ra_Configure visible columns":"Настроить видимые столбцы","ra_Confirm deletion of %s":"Подтвердите удаление %s",ra_Connected:CO,ra_Continue:pO,ra_Copied:AO,"ra_Copied %s":'Скопировано "%s"',"ra_Copy content":"Копировать содержимое",ra_Create:mO,"ra_Create alias":"Создать псевдоним","ra_Create folder":"Создать папку","ra_Create new folder in %s":"Создать новую папку в %s",ra_Crop:fO,"ra_Define CRON...":"Определите CRON...","ra_Define functions":"Задать функции","ra_Define rooms":"Задать комнаты","ra_Define schedule":"Задать расписание","ra_Define schedule...":"Определить расписание ...",ra_Del:OO,ra_Delete:EO,"ra_Delete current row":"Удалить текущую строку","ra_Deselect all":"Убрать выбор везде","ra_Device → Channel → State":"Устройство → Канал → Состояние","ra_Disable/Enable translation":"Включить/отключить перевод",ra_Discard:_O,ra_Disconnected:xO,"ra_Do not ask for next 2 hours in this session":"Не спрашивайте о следующих 2 часах в этом сеансе","ra_Do not export values of states":"Не экспортировать значения состояний","ra_Do not use let's encrypt":"Не использовать Let’s Encrypt","ra_Docker is not available":"Докер недоступен","ra_Docker is not installed or not running":"Docker не установлен или не запущен","ra_Double click to reset table layout":"Дважды щелкните, чтобы сбросить макет таблицы","ra_Drag 'n' drop some files here, or click to select files":"Перетащите сюда несколько файлов или щелкните, чтобы выбрать файлы","ra_Drop file here":"Перетащите файл сюда","ra_Drop the files here...":"Перетащите файл сюда ...","ra_Duplicate name":"Повторяющееся имя","ra_Edit ACL":"Изменить ACL-список","ra_Edit alias":"Изменить псевдоним","ra_Edit custom config":"Редактировать настраиваемую конфигурацию","ra_Edit full path":"Изменить полный путь","ra_Edit function":"Изменить функцию","ra_Edit object field":"Поле редактирования объекта","ra_Edit role":"Изменить роль","ra_Edit room":"Редактировать комнату","ra_Edit value":"Изменить значение","ra_Enter the code from that page here":"Введите код с этой страницы здесь",ra_Error:SO,"ra_Expand all nodes":"Развернуть все узлы","ra_Expand one step node":"Открыть один уровень","ra_Expand/Collapse card":"Развернуть/Свернуть карточку","ra_Export configuration section":"Раздел конфигурации экспорта","ra_Export data to %s file":"Экспорт данных в файл %s","ra_Failed to open JSON File":"Не удалось открыть файл JSON","ra_Fallback custom certificates":"Резервные пользовательские сертификаты","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл слишком большой. Разрешено максимальное количество %sk. Попробуйте использовать SVG.",ra_Filter:kO,"ra_Filter and Data Actions":"Фильтрация и действия с данными","ra_Filter files":"Фильтровать файлы","ra_Folder name":"Имя папки","ra_Folder → Channel → State":"Папка → Канал → Состояние","ra_Folder → Device → Channel → State":"Папка → Устройство → Канал → Состояние","ra_Folder → State":"Папка → Состояние","ra_Folders always first":"Папки всегда на первом месте",ra_Friday:vO,"ra_From file":"Из файла","ra_From text":"Из текста","ra_Get %s access":"Получить %s доступ","ra_Good luck":"Удачи","ra_Hide empty folders":"Скрыть пустые папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Если в папке не будет создан файл, он исчезнет после закрытия браузера.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Если кнопка выше не работает, вы можете вручную авторизовать это приложение, перейдя по этой ссылке.","ra_Import and add configuration section":"Импорт и добавление раздела конфигурации","ra_Import and replace configuration section":"Импорт и замена раздела конфигурации","ra_Import data from %s file":"Импорт данных из файла %s","ra_Import from %s":"Импорт из %s","ra_Instance %s is alive":"Экземпляр %s работает","ra_Instance %s is not alive":"Экземпляр %s не работает","ra_Instance is not alive":"Экземпляр не живой","ra_Invalid CRON":"Неверный CRON","ra_Invalid JSON":"Неверный JSON","ra_Invalid JSON file.":"Неверный файл JSON.","ra_Invalid JSON format. Expected an array.":"Недопустимый формат JSON. Ожидается массив.","ra_Invalid answer from server":"Неверный ответ от сервера","ra_Invalid parent folder!":"Неверная родительская папка!","ra_Invalid structure":"Неверная структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Последнее изменение",ra_Latitude:YO,"ra_License %s":"Лицензия %s","ra_License agreement":"Лицензионное соглашение","ra_License does not exist":"Лицензия не существует","ra_License expired on %s":"Срок действия лицензии истек %s",'ra_License for other product "%s"':'Лицензия на другой продукт "%s"',"ra_License is for version %s, but required version is %s.":"Лицензия предназначена для версии %s, но необходима версия %s.","ra_License must be converted":"Лицензия должна быть преобразована в более новую версию. Вы можете сделать это в своем профиле на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Лицензия не найдена в диспетчере лицензий. Вы хотите обновить лицензии от iobroker.net?","ra_Listen on all IPs":"Слушать на всех IP","ra_Load configuration from file":"Загрузить конфигурацию из файла",ra_Logout:QO,ra_Longitude:bO,'ra_May not trigger "updateLicenses"':"Не может запускать «updateLicenses»",ra_Message:UO,ra_Monday:$O,"ra_Move down":"Вниз","ra_Move up":"Вверх",ra_Name:PO,"ra_No data found in file":"Данные в файле не найдены","ra_No one license found in license manager":"В менеджере лицензий не найдена ни одна лицензия","ra_No response from admin":"Нет ответа от администратора","ra_No response from the backend":"Нет ответа от бэкэнда",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Не-эксперты могут создавать новые объекты только в «0_userdata.0» или «alias.0».","ra_Not a number":"Не число","ra_OAuth Client ID":"Идентификатор клиента OAuth","ra_OAuth Client secret":"Секрет клиента OAuth",ra_Objects:WO,ra_Ok:JO,"ra_On weekdays":"На выходных","ra_Only following structures of objects are available:":"Доступны только следующие структуры объектов:","ra_Only selected":"Только выбранные","ra_Owner group":"Группа владельцев","ra_Owner user":"Пользователь-владелец","ra_Passwords are not equal!":"Пароли не равны!","ra_Place your files here or click here to open the browse dialog":"Поместите свои файлы сюда или щелкните здесь, чтобы открыть диалоговое окно выбора","ra_Please allow popups in your browser for this page!":"Пожалуйста, разрешите всплывающие окна в вашем браузере для этой страницы!","ra_Please confirm":"Пожалуйста подтвердите","ra_Please create license":"Пожалуйста, создайте лицензию","ra_Please enter the license":"Пожалуйста, введите лицензию","ra_Please select file...":"Пожалуйста, выберите файл...","ra_Please select object ID...":"Пожалуйста, выберите идентификатор объекта ...","ra_Port could be used by %s":"Порт может использоваться %s","ra_Port is already used by %s":"Порт уже используется %s","ra_Press ENTER Key to add new item":"Нажмите клавишу ENTER, чтобы добавить новый элемент.","ra_Private certificate":"Частный сертификат",ra_Product:BO,"ra_Public certificate":"Публичный сертификат","ra_Quality code":"Валидность","ra_Refresh tree":"Обновить дерево","ra_Reload files":"Обновить",ra_Rename_Move_Copy:RO,"ra_Renew %s access":"Продлить доступ %s",ra_Repeat:FO,ra_Replace:GO,"ra_Request timed out":"Истекло время запроса","ra_Restrict to folder":"Ограничить папкой",ra_Root:HO,ra_Saturday:VO,ra_Save:ZO,"ra_Save and close":"Сохранить и закрыть","ra_Save configuration to file":"Сохранить конфигурацию в файл","ra_Save objects tree as JSON file":"Сохранить дерево объектов как файл JSON","ra_Select all":"Выбрать все","ra_Select color":"Выберите цвет","ra_Select predefined icon":"Выберите предопределенный значок","ra_Select type of export":"Выберите тип экспорта",ra_Selected:XO,"ra_Selected %s object(s)":"Объектов: %s","ra_Serial number (UUID)":"Серийный номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Серийный номер (UUID) «%s» в лицензии предназначен для другого устройства.","ra_Session will expire in %s seconds. Continue?":"Сессия истечет через %s секунд. Продолжить?","ra_Show all folders":"Показать все папки","ra_Show lines between rows":"Показать линии между строками","ra_Show/Hide object descriptions":"Показать/скрыть описания объектов","ra_Show/hide filter input":"Показать/скрыть ввод фильтра","ra_Some data are not stored. Discard?":"Некоторые данные не сохранились. Отказаться?",ra_States:KO,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизация выполнена успешно. Токен действителен до %s и будет автоматически продлен.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизация выполнена успешно. Токен действителен до %s, но его срок действия может истечь, так как экземпляр не запущен.","ra_Suitable license not found in license manager":"Подходящая лицензия не найдена в менеджере лицензий",ra_Sunday:qO,"ra_Suppress question for next %s minutes":"Скрыть вопрос на следующие %s минут(ы)","ra_System language":"Язык системы","ra_Take browser position":"Взять позицию из браузера","ra_Take position from system settings":"Занять позицию из системных настроек",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Эксперты могут создавать объекты везде, кроме второго уровня (например, «vis.0» или «javascript.0»).","ra_The page you are looking for was not found":"Страница, которую вы ищете, не найдена","ra_The schedule will be executed every minute. Are you sure?":"Расписание будет выполняться каждую минуту. Вы уверены?","ra_The schedule will be executed every second. Are you sure?":"Расписание будет выполняться каждую секунду. Вы уверены?",ra_Thursday:eE,ra_Timestamp:tE,"ra_Toggle expert mode":"Переключить экспертный режим","ra_Toggle the states view":"Переключить режим просмотра состояний","ra_Toggle view mode":"Переключить режим просмотра","ra_Too big":"Слишком большое","ra_Too small":"Слишком маленькое","ra_Transparent dialog":"Прозрачный диалог",ra_Tuesday:sE,"ra_Unknown error":"Неизвестная ошибка","ra_Unknown error!":"Неизвестная ошибка!",ra_Update:iE,"ra_Upload file":"Загрузить файл","ra_Use all available let's encrypt certificates":"Использовать все доступные сертификаты Let’s encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Используйте адаптер iobroker.acme для сертификатов letsencrypt","ra_Use system settings for position":"Использовать системные настройки для позиции","ra_Used system settings":"Системные настройки","ra_User files":"Файлы пользователя",ra_ValidTill:rE,ra_Value:oE,ra_Version:nE,"ra_View file":"Посмотреть файл","ra_View: %s":"Просмотр: %s",ra_Wednesday:aE,ra_Width:ME,"ra_YAML editor":"Редактор YAML",ra_Yes:cE,"ra_You can export all objects or just the selected branch.":"Вы можете экспортировать все объекты или только выбранную ветвь.","ra_You can filter entries by entering here some text":"Вы можете отфильтровать записи, введя здесь текст","ra_You can use * as wildcard":"Вы можете использовать * в качестве подстановочного знака",ra___different__:uE,ra_aclEveryone_read_object:lE,ra_aclEveryone_read_state:NE,ra_aclEveryone_write_object:LE,ra_aclEveryone_write_state:gE,ra_aclGroup_read_object:jE,ra_aclGroup_read_state:yE,ra_aclGroup_write_object:TE,ra_aclGroup_write_state:DE,ra_aclOwner_read_object:dE,ra_aclOwner_read_state:hE,ra_aclOwner_write_object:zE,ra_aclOwner_write_state:wE,ra_buttons:IE,ra_changedFrom:CE,ra_close:pE,ra_create_boolean_state:AE,ra_create_channel:mE,ra_create_device:fE,ra_create_number_state:OE,ra_create_state:EE,ra_create_string_state:_E,ra_daysShortText:xE,ra_dow_Fr:SE,ra_dow_Mo:kE,ra_dow_Sa:vE,ra_dow_Su:YE,ra_dow_Th:QE,ra_dow_Tu:bE,ra_dow_We:UE,ra_expertMode:$E,ra_false:PE,ra_fileType_all:WE,ra_fileType_audio:JE,ra_fileType_code:BE,ra_fileType_images:RE,ra_fileType_txt:FE,ra_fileType_video:GE,"ra_fileType_video,":"видео",ra_filter_customs:HE,ra_filter_customs_without:VE,ra_filter_func:ZE,ra_filter_id:XE,ra_filter_name:KE,ra_filter_role:qE,ra_filter_room:e_,ra_filter_type:t_,"ra_import data from %s file":"Импортировать данные из файла %s",ra_invalidConfig:s_,ra_lastChange:i_,ra_locally:r_,ra_month_Apr:o_,ra_month_Aug:n_,ra_month_Dec:a_,ra_month_Feb:M_,ra_month_Jan:c_,ra_month_Jul:u_,ra_month_Jun:l_,ra_month_Mai:N_,ra_month_Mar:L_,ra_month_Nov:g_,ra_month_Oct:j_,ra_month_Sep:y_,ra_months_Apr:T_,ra_months_Aug:D_,ra_months_Dec:d_,ra_months_Feb:h_,ra_months_Jan:z_,ra_months_Jul:w_,ra_months_Jun:I_,ra_months_Mai:C_,ra_months_Mar:p_,ra_months_Nov:A_,ra_months_Oct:m_,ra_months_Sep:f_,"ra_no confirm for 5 mins":"не спрашивать подтверждения в течение 5 минут",ra_none:O_,ra_object_changed_by:E_,ra_object_changed_by_user:__,ra_otherConfig:x_,ra_qualityCode:S_,ra_repeat:k_,ra_select_folder_hint:v_,ra_show_all:Y_,ra_state_changed_by:Q_,ra_state_changed_from:b_,ra_timestamp:U_,ra_tooltip_ack:$_,ra_tooltip_comment:P_,ra_tooltip_copyState:W_,ra_tooltip_ctrlForLink:J_,ra_tooltip_customConfig:B_,ra_tooltip_deleteObject:R_,ra_tooltip_editObject:F_,ra_tooltip_editState:G_,ra_tooltip_expire:H_,ra_tooltip_from:V_,ra_tooltip_lc:Z_,ra_tooltip_quality:X_,ra_tooltip_ts:K_,ra_tooltip_user:q_,ra_tooltip_value:ex,ra_true:tx,"ra_use seconds":"секунды",ra_val:sx,"ra_via internet":"через интернет",ra_warning_every_minute:ix,ra_warning_every_second:rx,sc_cron:ox,sc_date:nx,sc_dates:ax,sc_dow:Mx,sc_dows:cx,sc_every:ux,sc_everyN_dates:lx,sc_everyN_dow:Nx,sc_everyN_dows:Lx,sc_everyN_hours:gx,sc_everyN_minutes:jx,sc_everyN_months:yx,sc_everyN_seconds:Tx,sc_every_dates:Dx,sc_every_dow:dx,sc_every_dows:hx,sc_every_hours:zx,sc_every_minutes:wx,sc_every_months:Ix,sc_every_seconds:Cx,sc_from:px,sc_hours:Ax,sc_interval:mx,sc_intervalBetween:fx,sc_invalid_cron:Ox,sc_minutes:Ex,sc_months:_x,sc_once:xx,sc_period:Sx,sc_seconds:kx,sc_simple:vx,sc_specific:Yx,sc_specific_dates:Qx,sc_specific_dow:bx,sc_specific_dows:Ux,sc_specific_hours:$x,sc_specific_minutes:Px,sc_specific_months:Wx,sc_specific_seconds:Jx,sc_time:Bx,sc_to:Rx,sc_wizard:Fx,sch_all:Gx,sch_astroDay:Hx,sch_astroNight:Vx,sch_astro_dawn:Zx,sch_astro_dusk:Xx,sch_astro_goldenHour:Kx,sch_astro_goldenHourEnd:qx,sch_astro_nadir:eS,sch_astro_nauticalDawn:tS,sch_astro_nauticalDusk:sS,sch_astro_night:iS,sch_astro_nightEnd:rS,sch_astro_solarNoon:oS,sch_astro_sunrise:nS,sch_astro_sunriseEnd:aS,sch_astro_sunset:MS,sch_astro_sunsetStart:cS,sch_at:uS,sch_desc_atTime:lS,sch_desc_everyDay:NS,sch_desc_everyHour:LS,sch_desc_everyMinute:gS,sch_desc_everyMonth:jS,sch_desc_everyNDay:yS,sch_desc_everyNHours:TS,sch_desc_everyNMinutes:DS,sch_desc_everyNMonths:dS,sch_desc_everyNWeeks:hS,sch_desc_everyNYears:zS,sch_desc_everyWeek:wS,sch_desc_everyYear:IS,sch_desc_intervalFromTo:CS,sch_desc_never:pS,sch_desc_onDate:AS,sch_desc_onDates:mS,sch_desc_onEveryDate:fS,sch_desc_onMonth:OS,sch_desc_onMonths:ES,sch_desc_onWeekday:_S,sch_desc_onWeekdays:xS,sch_desc_onWeekends:SS,sch_desc_onWorkdays:kS,sch_desc_onceInPast:vS,sch_desc_once_on:YS,sch_desc_validFrom:QS,sch_desc_validFromTo:bS,sch_desc_validTo:US,sch_every:$S,sch_exactTime:PS,sch_from:WS,sch_fromTo:JS,sch_intervalTime:BS,sch_invert:RS,sch_no_one:FS,sch_on:GS,sch_period:HS,sch_periodDaily:VS,sch_periodDates:ZS,sch_periodDay:XS,sch_periodEvery:KS,sch_periodEveryDay:qS,sch_periodEveryMonth:e5,sch_periodEveryWeek:t5,sch_periodEveryYear:s5,sch_periodHours:i5,sch_periodMinutes:r5,sch_periodMonth:o5,sch_periodMonthly:n5,sch_periodOnce:a5,sch_periodSpecificMonths:M5,sch_periodWeek:c5,sch_periodWeekdays:u5,sch_periodWeekend:l5,sch_periodWeekly:N5,sch_periodWorkdays:L5,sch_periodYear:g5,sch_periodYearly:j5,sch_specificTime:y5,sch_time:T5,sch_to:D5,sch_valid:d5,sch_validFrom:h5,sch_validTo:z5,sch_wholeDay:w5,sch_yearEveryMonth:I5},p5="Ações",A5="Acrescentar",m5="Cancelar",f5="Categorias",O5="Verificado",E5="Excluir",_5="Perto",x5="Comercial",S5="Configurar",k5="Conectado",v5="Continuar",Y5="Copiado",Q5="Crio",b5="Colheita",U5="Delete",$5="Excluir",P5="Descartar",W5="Desconectado",J5="Erro",B5="Filtro",R5="Sexta-feira",F5="Latitude",G5="Sair",H5="Longitude",V5="mensagem",Z5="Segunda-feira",X5="Nome",K5="Objetos",q5="Está bem",ek="produtos",tk="Renomear/Mover/Copiar",sk="Repita",ik="Substituir",rk="Raiz",ok="Sábado",nk="Salve ",ak="Selecionado",Mk="Estados",ck="Domingo",uk="Quinta-feira",lk="Timestamp",Nk="Terça-feira",Lk="Atualizar",gk="Válida até",jk="Valor",yk="Versão",Tk="Quarta-feira",Dk="Largura",dk="Sim",hk="diferente",zk="Todos podem ler objetos",wk="Todos podem ler o estado",Ik="Todos podem escrever objetos",Ck="Todos podem escrever o estado",pk="O grupo pode ler o objeto",Ak="O grupo pode ler o estado",mk="O grupo pode escrever o objeto",fk="O grupo pode escrever o estado",Ok="O proprietário pode ler o objeto",Ek="O proprietário pode ler o estado",_k="O proprietário pode escrever o objeto",xk="O proprietário pode escrever o estado",Sk="Botões",kk="Mudou de",vk="fechar",Yk="Criar estado booleano",Qk="Criar canal",bk="Criar dispositivo",Uk="Criar estado numérico",$k="Criar estado",Pk="Criar estado de string",Wk="d.",Jk="Fr",Bk="Mo",Rk="Sa",Fk="Su",Gk="º",Hk="Tu",Vk="Nós",Zk="Modo especialista",Xk="FALSO",Kk="Todos os arquivos",qk="áudio",ev="Código/JSON",tv="Imagens",sv="Texto",iv="Vídeo",rv="Configurações",ov="sem",nv="Função",av="ID",Mv="Nome",cv="Papel (Função)",uv="Quarto",lv="Tipo",Nv="Configurações inválidas",Lv="Última mudança",gv="localmente",jv="abril",yv="agosto",Tv="dezembro",Dv="fevereiro",dv="janeiro",hv="julho",zv="junho",wv="Mai",Iv="março",Cv="novembro",pv="outubro",Av="setembro",mv="abril",fv="agosto",Ov="dezembro",Ev="fevereiro",_v="janeiro",xv="julho",Sv="junho",kv="Mai",vv="março",Yv="novembro",Qv="outubro",bv="setembro",Uv="Nenhum",$v="Objeto alterado por",Pv="Objeto alterado pela última vez em",Wv="Configurações de outro adaptador %s",Jv="Código de qualidade",Bv="repetir",Rv='Para selecionar a pasta, basta segurar a tecla "shift" clicando na pasta.',Fv="Mostrar tudo",Gv="Estado alterado por",Hv="Objeto alterado de",Vv="Timestamp",Zv="Confirmado",Xv="Comente",Kv="Copie o valor do estado",qv="Segure a tecla Ctrl/⌘ para abrir o link",eY="Opções customizadas",tY="Excluir objeto",sY="Editar objeto",iY="Edite o valor do estado",rY="Expira em",oY="De",nY="Última alteração",aY="Qualidade",MY="Timestamp",cY="Usuário",uY="Valor",lY="verdadeiro",NY="Valor",LY="Aviso: O trabalho CRON será executado a cada minuto durante o período especificado!",gY="Aviso: O trabalho CRON será executado a cada segundo durante o período especificado!",jY="CRON",yY="Data",TY="Dias",DY="Dia",dY="Dia da semana",hY="todos",zY="a cada N dias",wY="todo enésimo dia da semana",IY="todos os N dias da semana",CY="a cada N horas",pY="a cada N minutos",AY="a cada N meses",mY="a cada N segundos",fY="todo dia",OY="todos os dias da semana",EY="todos os dias da semana",_Y="toda hora",xY="todo minuto",SY="todo mês",kY="todo segundo",vY="de",YY="horas",QY="intervalo",bY="intervalo entre",UY="CRON inválido",$Y="minutos",PY="meses",WY="uma vez",JY="período",BY="segundos",RY="simples",FY="tempo específico",GY="datas específicas",HY="dia(s) específico(s) da semana",VY="dia específico de semanas",ZY="horas específicas",XY="minutos específicos",KY="meses específicos",qY="segundos específicos",eQ="tempo",tQ="para",sQ="assistente",iQ="tudo",rQ="dia astral",oQ="noite astral",nQ="amanhecer",aQ="anoitecer",MQ="hora dourada",cQ="Fim da hora dourada",uQ="nadir",lQ="Amanhecer náutico",NQ="Anoitecer náutico",LQ="noite",gQ="fim da noite",jQ="meio-dia solar",yQ="nascer do sol",TQ="fim do nascer do sol",DQ="pôr do sol",dQ="início do pôr do sol",hQ="às",zQ="em %s",wQ="todo dia",IQ="toda hora",CQ="todo minuto",pQ="todo mês",AQ="a cada %s dias",mQ="a cada %s horas",fQ="a cada %s minutos",OQ="a cada %s meses",EQ="a cada %s semanas",_Q="a cada %s anos",xQ="toda semana",SQ="todo ano",kQ="de %s para %s",vQ="nunca",YQ="em %s de %s",QQ="em %s e %s de",bQ="em toda data de",UQ="%s",$Q="%s e %s",PQ="em %s",WQ="em %s e %s",JQ="nos fins de semana",BQ="em dias úteis",RQ="não será mais executado, porque o começo está no passado",FQ="em %s",GQ="de %s",HQ="Executar de até",VQ="até %s",ZQ="cada",XQ="tempo específico",KQ="de",qQ="de a´t",eb="tempo de intervalo",tb="invertido",sb="nenhum",ib="em",rb="período",ob="diariamente",nb="datas",ab="dia",Mb="todos",cb="todo dia",ub="todo mês",lb="toda semana",Nb="todo ano",Lb="horas",gb="minutos",jb="mês",yb="por mês",Tb="uma vez",Db="meses específicos",db="semana",hb="dias úteis",zb="final de semana",wb="semanal",Ib="dias úteis",Cb="ano",pb="anual",Ab="tempo específico",mb="tempo",fb="para",Ob="válido",Eb="de",_b="para",xb="dia inteiro",Sb="todo mês",kb={"ra_%s links from aliases":"%s links de aliases","ra_%s object(s) processed":"%s objeto(s) processado(s)","ra_%s was imported":"%s foi importado","ra_Accept license":"Aceitar licença",ra_Actions:p5,"ra_Add new child object to selected parent":"Adicionar novo objeto filho ao pai selecionado","ra_Add objects tree from JSON file":"Adicionar árvore de objetos do arquivo JSON","ra_Add row":"Adicionar linha","ra_Advanced options":"Opções avançadas","ra_All items are filtered out":"Todos os itens são filtrados","ra_All objects":"Todos os objetos",ra_Append:A5,"ra_Append %s entries or replace existing?":"Acrescentar %s entradas ou substituir as existentes?","ra_Append or replace?":"Acrescentar ou substituir?","ra_Are you sure?":"Você tem certeza?","ra_Auto (no custom columns)":"Auto (sem colunas personalizadas)","ra_Back to %s":"Voltar para %s","ra_Background image":"Imagem de fundo",ra_Cancel:m5,"ra_Cannot add items with set filter":"Não é possível adicionar itens com filtro definido","ra_Cannot decode license":"Não é possível decodificar a licença","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Não é possível determinar a posição: as configurações do sistema estão vazias e a detecção de GPS está desativada no navegador",'ra_Cannot find "%s"':'Não foi possível encontrar "%s"','ra_Cannot read "%s"':'Não é possível ler "%s"',"ra_Cannot read licenses: %s":"Não é possível ler licenças: %s","ra_Cannot retrieve options, as instance is offline":"Não é possível recuperar opções, pois a instância está off-line","ra_Cannot update attribute, because not found in the object":"Não é possível atualizar o atributo, porque não foi encontrado no objeto","ra_Cannot upload":"Não é possível fazer upload",ra_Categories:f5,"ra_Chained certificate":"certificado encadeado","ra_Change color theme":"Alterar tema de cores","ra_Changed from":"Mudou de","ra_Channel → State":"Canal → Estado","ra_Check license":"Verifique a licença",ra_Checked:O5,ra_Clear:E5,"ra_Clear filter":"Filtro limpo","ra_Clear icon":"Ícone de limpeza","ra_Click to see in full size":"Clique para ver em tamanho real.","ra_Click to show":"Clique para mostrar","ra_Clone current row":"Clonar linha atual",ra_Close:_5,"ra_Collapse all nodes":"Recolher todos os nós","ra_Collapse one step node":"Recolher um nível",ra_Commercial:x5,ra_Configure:S5,"ra_Configure visible columns":"Configurar colunas visíveis","ra_Confirm deletion of %s":"Confirme a exclusão de %s",ra_Connected:k5,ra_Continue:v5,ra_Copied:Y5,"ra_Copied %s":'"%s" copiado',"ra_Copy content":"Copiar conteúdo",ra_Create:Q5,"ra_Create alias":"Criar alias","ra_Create folder":"Criar pasta","ra_Create new folder in %s":"Crie uma nova pasta em %s",ra_Crop:b5,"ra_Define CRON...":"Defina CRON...","ra_Define functions":"Definir funções","ra_Define rooms":"Definir quartos","ra_Define schedule":"Definir cronograma","ra_Define schedule...":"Definir programação ...",ra_Del:U5,ra_Delete:$5,"ra_Delete current row":"Excluir linha atual","ra_Deselect all":"Desmarque todos","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Desativar/Ativar tradução",ra_Discard:P5,ra_Disconnected:W5,"ra_Do not ask for next 2 hours in this session":"Não peça as próximas 2 horas nesta sessão","ra_Do not export values of states":"Não exporte valores de estados","ra_Do not use let's encrypt":"Não use vamos criptografar","ra_Docker is not available":"O Docker não está disponível","ra_Docker is not installed or not running":"O Docker não está instalado ou não está em execução","ra_Double click to reset table layout":"Clique duas vezes para redefinir o layout da tabela","ra_Drag 'n' drop some files here, or click to select files":"Arraste e solte alguns arquivos aqui ou clique para selecionar arquivos","ra_Drop file here":"Solte o arquivo aqui","ra_Drop the files here...":"Solte o arquivo aqui ...","ra_Duplicate name":"Nome duplicado","ra_Edit ACL":"Editar ACL","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuração personalizada","ra_Edit full path":"Editar caminho completo","ra_Edit function":"Função de edição","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar papel","ra_Edit room":"Sala de edição","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Digite o código dessa página aqui",ra_Error:J5,"ra_Expand all nodes":"Expanda todos os nós","ra_Expand one step node":"Expanda um nível","ra_Expand/Collapse card":"Expandir/Recolher cartão","ra_Export configuration section":"Seção de configuração de exportação","ra_Export data to %s file":"Exportar dados para o arquivo %s","ra_Failed to open JSON File":"Falha ao abrir arquivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"O arquivo é muito grande. Max %sk permitido. Tente usar SVG.",ra_Filter:B5,"ra_Filter and Data Actions":"Ações de filtro e dados","ra_Filter files":"Filtrar arquivos","ra_Folder name":"Nome da pasta","ra_Folder → Channel → State":"Pasta → Canal → Estado","ra_Folder → Device → Channel → State":"Pasta → Dispositivo → Canal → Estado","ra_Folder → State":"Pasta → Estado","ra_Folders always first":"Pastas sempre primeiro",ra_Friday:R5,"ra_From file":"Do arquivo","ra_From text":"Do texto","ra_Get %s access":"Obtenha acesso %s","ra_Good luck":"Boa sorte","ra_Hide empty folders":"Esconder pastas vazias","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nenhum arquivo for criado na pasta, ele desaparecerá depois que o navegador for fechado","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se o botão acima não funcionar, você pode autorizar manualmente este aplicativo visitando esta url","ra_Import and add configuration section":"Seção de importação e adição de configuração","ra_Import and replace configuration section":"Seção de configuração de importação e substituição","ra_Import data from %s file":"Importar dados do arquivo %s","ra_Import from %s":"Importar de %s","ra_Instance %s is alive":"O %s da instância está ativo","ra_Instance %s is not alive":"O %s da instância não está ativo","ra_Instance is not alive":"A instância não está ativa","ra_Invalid CRON":"CRON inválido","ra_Invalid JSON":"JSON inválido","ra_Invalid JSON file.":"Arquivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Esperava-se uma matriz.","ra_Invalid answer from server":"Resposta inválida do servidor","ra_Invalid parent folder!":"Pasta pai inválida!","ra_Invalid structure":"Estrutura inválida","ra_JSON editor":"Editor JSON","ra_Last change":"Última mudança",ra_Latitude:F5,"ra_License %s":"Licença %s","ra_License agreement":"Contrato de licença","ra_License does not exist":"A licença não existe","ra_License expired on %s":"A licença expirou em %s",'ra_License for other product "%s"':'Licença para outro produto "%s"',"ra_License is for version %s, but required version is %s.":"A licença é para a versão %s, mas a versão necessária é %s.","ra_License must be converted":"A licença deve ser convertida para uma versão mais recente. Você pode fazê-lo em seu perfil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licença não encontrada no gerenciador de licenças. Deseja atualizar as licenças do iobroker.net?","ra_Listen on all IPs":"Ouça em todos os IPs","ra_Load configuration from file":"Carregar configuração do arquivo",ra_Logout:G5,ra_Longitude:H5,'ra_May not trigger "updateLicenses"':'Pode não acionar "updateLicenses"',ra_Message:V5,ra_Monday:Z5,"ra_Move down":"Mover para baixo","ra_Move up":"Subir",ra_Name:X5,"ra_No data found in file":"Nenhum dado encontrado no arquivo","ra_No one license found in license manager":"Nenhuma licença encontrada no gerenciador de licenças","ra_No response from admin":"Nenhuma resposta do administrador","ra_No response from the backend":"Nenhuma resposta do backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Os não especialistas podem criar novos objetos apenas em "0_userdata.0" ou "alias.0".',"ra_Not a number":"Não é um número","ra_OAuth Client ID":"ID do cliente OAuth","ra_OAuth Client secret":"Segredo do cliente OAuth",ra_Objects:K5,ra_Ok:q5,"ra_On weekdays":"Nos dias úteis","ra_Only following structures of objects are available:":"Apenas as seguintes estruturas de objetos estão disponíveis:","ra_Only selected":"Apenas selecionado","ra_Owner group":"Grupo proprietário","ra_Owner user":"Usuário proprietário","ra_Passwords are not equal!":"As senhas não são iguais!","ra_Place your files here or click here to open the browse dialog":"Coloque seus arquivos aqui ou clique aqui para abrir a janela de navegação","ra_Please allow popups in your browser for this page!":"Por favor, permita pop-ups no seu navegador para esta página!","ra_Please confirm":"Por favor confirme","ra_Please create license":"Crie uma licença","ra_Please enter the license":"Por favor, insira a licença","ra_Please select file...":"Selecione o arquivo...","ra_Please select object ID...":"Selecione o ID do objeto ...","ra_Port could be used by %s":"A porta pode ser usada por %s","ra_Port is already used by %s":"A porta já está sendo usada por %s","ra_Press ENTER Key to add new item":"Pressione a tecla ENTER para adicionar um novo item","ra_Private certificate":"certificado privado",ra_Product:ek,"ra_Public certificate":"certificado público","ra_Quality code":"Qualidade","ra_Refresh tree":"Atualizar árvore","ra_Reload files":"Recarregar arquivos",ra_Rename_Move_Copy:tk,"ra_Renew %s access":"Renovar acesso %s",ra_Repeat:sk,ra_Replace:ik,"ra_Request timed out":"Solicitação expirou","ra_Restrict to folder":"Restringir à pasta",ra_Root:rk,ra_Saturday:ok,ra_Save:nk,"ra_Save and close":"Salvar e fechar","ra_Save configuration to file":"Salvar configuração em arquivo","ra_Save objects tree as JSON file":"Salvar árvore de objetos como arquivo JSON","ra_Select all":"Selecionar tudo","ra_Select color":"Selecione a cor","ra_Select predefined icon":"Selecione o ícone predefinido","ra_Select type of export":"Selecione o tipo de exportação",ra_Selected:ak,"ra_Selected %s object(s)":"%s objeto(s) selecionado(s)","ra_Serial number (UUID)":"Número de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'O número de série (UUID) "%s" na licença é para outro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"A sessão irá expirar em %s segundos. Continuar?","ra_Show all folders":"Mostrar todas as pastas","ra_Show lines between rows":"Mostrar linhas entre as linhas","ra_Show/Hide object descriptions":"Mostrar/ocultar descrições de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Alguns dados não são armazenados. Descartar?",ra_States:Mk,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado com sucesso. Token válido até %s e será renovado automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado com sucesso. Token válido até %s, mas pode expirar, pois a instância não está em execução.","ra_Suitable license not found in license manager":"Licença adequada não encontrada no gerenciador de licenças",ra_Sunday:ck,"ra_Suppress question for next %s minutes":"Suprimir pergunta nos próximos %s minutos","ra_System language":"Idioma do sistema","ra_Take browser position":"Tomar posição do navegador","ra_Take position from system settings":"Tomar posição a partir das configurações do sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Os especialistas podem criar objetos em qualquer lugar, exceto no segundo nível (por exemplo, "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"A página que você está procurando não foi encontrada","ra_The schedule will be executed every minute. Are you sure?":"O agendamento será executado a cada minuto. Tem certeza?","ra_The schedule will be executed every second. Are you sure?":"O agendamento será executado a cada segundo. Tem certeza?",ra_Thursday:uk,ra_Timestamp:lk,"ra_Toggle expert mode":"Alternar modo especialista","ra_Toggle the states view":"Alternar a visualização dos estados","ra_Toggle view mode":"Alternar modo de visualização","ra_Too big":"Muito grande","ra_Too small":"Muito pequeno","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:Nk,"ra_Unknown error":"Erro desconhecido","ra_Unknown error!":"Erro desconhecido!",ra_Update:Lk,"ra_Upload file":"Subir arquivo","ra_Use all available let's encrypt certificates":"Use todos os certificados disponíveis vamos criptografar","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use o adaptador iobroker.acme para certificados letsencrypt","ra_Use system settings for position":"Use as configurações do sistema para a posição","ra_Used system settings":"Configurações do sistema usadas","ra_User files":"Arquivos do usuário",ra_ValidTill:gk,ra_Value:jk,ra_Version:yk,"ra_View file":"Visualizar arquivo","ra_View: %s":"Visualizar: %s",ra_Wednesday:Tk,ra_Width:Dk,"ra_YAML editor":"Editor YAML",ra_Yes:dk,"ra_You can export all objects or just the selected branch.":"Você pode exportar todos os objetos ou apenas a ramificação selecionada.","ra_You can filter entries by entering here some text":"Você pode filtrar as entradas digitando aqui algum texto","ra_You can use * as wildcard":"Você pode usar * como curinga",ra___different__:hk,ra_aclEveryone_read_object:zk,ra_aclEveryone_read_state:wk,ra_aclEveryone_write_object:Ik,ra_aclEveryone_write_state:Ck,ra_aclGroup_read_object:pk,ra_aclGroup_read_state:Ak,ra_aclGroup_write_object:mk,ra_aclGroup_write_state:fk,ra_aclOwner_read_object:Ok,ra_aclOwner_read_state:Ek,ra_aclOwner_write_object:_k,ra_aclOwner_write_state:xk,ra_buttons:Sk,ra_changedFrom:kk,ra_close:vk,ra_create_boolean_state:Yk,ra_create_channel:Qk,ra_create_device:bk,ra_create_number_state:Uk,ra_create_state:$k,ra_create_string_state:Pk,ra_daysShortText:Wk,ra_dow_Fr:Jk,ra_dow_Mo:Bk,ra_dow_Sa:Rk,ra_dow_Su:Fk,ra_dow_Th:Gk,ra_dow_Tu:Hk,ra_dow_We:Vk,ra_expertMode:Zk,ra_false:Xk,ra_fileType_all:Kk,ra_fileType_audio:qk,ra_fileType_code:ev,ra_fileType_images:tv,ra_fileType_txt:sv,ra_fileType_video:iv,"ra_fileType_video,":"Vídeo",ra_filter_customs:rv,ra_filter_customs_without:ov,ra_filter_func:nv,ra_filter_id:av,ra_filter_name:Mv,ra_filter_role:cv,ra_filter_room:uv,ra_filter_type:lv,"ra_import data from %s file":"Importar dados do arquivo %s",ra_invalidConfig:Nv,ra_lastChange:Lv,ra_locally:gv,ra_month_Apr:jv,ra_month_Aug:yv,ra_month_Dec:Tv,ra_month_Feb:Dv,ra_month_Jan:dv,ra_month_Jul:hv,ra_month_Jun:zv,ra_month_Mai:wv,ra_month_Mar:Iv,ra_month_Nov:Cv,ra_month_Oct:pv,ra_month_Sep:Av,ra_months_Apr:mv,ra_months_Aug:fv,ra_months_Dec:Ov,ra_months_Feb:Ev,ra_months_Jan:_v,ra_months_Jul:xv,ra_months_Jun:Sv,ra_months_Mai:kv,ra_months_Mar:vv,ra_months_Nov:Yv,ra_months_Oct:Qv,ra_months_Sep:bv,"ra_no confirm for 5 mins":"sem confirmação por 5 minutos",ra_none:Uv,ra_object_changed_by:$v,ra_object_changed_by_user:Pv,ra_otherConfig:Wv,ra_qualityCode:Jv,ra_repeat:Bv,ra_select_folder_hint:Rv,ra_show_all:Fv,ra_state_changed_by:Gv,ra_state_changed_from:Hv,ra_timestamp:Vv,ra_tooltip_ack:Zv,ra_tooltip_comment:Xv,ra_tooltip_copyState:Kv,ra_tooltip_ctrlForLink:qv,ra_tooltip_customConfig:eY,ra_tooltip_deleteObject:tY,ra_tooltip_editObject:sY,ra_tooltip_editState:iY,ra_tooltip_expire:rY,ra_tooltip_from:oY,ra_tooltip_lc:nY,ra_tooltip_quality:aY,ra_tooltip_ts:MY,ra_tooltip_user:cY,ra_tooltip_value:uY,ra_true:lY,"ra_use seconds":"use segundos",ra_val:NY,"ra_via internet":"via internet",ra_warning_every_minute:LY,ra_warning_every_second:gY,sc_cron:jY,sc_date:yY,sc_dates:TY,sc_dow:DY,sc_dows:dY,sc_every:hY,sc_everyN_dates:zY,sc_everyN_dow:wY,sc_everyN_dows:IY,sc_everyN_hours:CY,sc_everyN_minutes:pY,sc_everyN_months:AY,sc_everyN_seconds:mY,sc_every_dates:fY,sc_every_dow:OY,sc_every_dows:EY,sc_every_hours:_Y,sc_every_minutes:xY,sc_every_months:SY,sc_every_seconds:kY,sc_from:vY,sc_hours:YY,sc_interval:QY,sc_intervalBetween:bY,sc_invalid_cron:UY,sc_minutes:$Y,sc_months:PY,sc_once:WY,sc_period:JY,sc_seconds:BY,sc_simple:RY,sc_specific:FY,sc_specific_dates:GY,sc_specific_dow:HY,sc_specific_dows:VY,sc_specific_hours:ZY,sc_specific_minutes:XY,sc_specific_months:KY,sc_specific_seconds:qY,sc_time:eQ,sc_to:tQ,sc_wizard:sQ,sch_all:iQ,sch_astroDay:rQ,sch_astroNight:oQ,sch_astro_dawn:nQ,sch_astro_dusk:aQ,sch_astro_goldenHour:MQ,sch_astro_goldenHourEnd:cQ,sch_astro_nadir:uQ,sch_astro_nauticalDawn:lQ,sch_astro_nauticalDusk:NQ,sch_astro_night:LQ,sch_astro_nightEnd:gQ,sch_astro_solarNoon:jQ,sch_astro_sunrise:yQ,sch_astro_sunriseEnd:TQ,sch_astro_sunset:DQ,sch_astro_sunsetStart:dQ,sch_at:hQ,sch_desc_atTime:zQ,sch_desc_everyDay:wQ,sch_desc_everyHour:IQ,sch_desc_everyMinute:CQ,sch_desc_everyMonth:pQ,sch_desc_everyNDay:AQ,sch_desc_everyNHours:mQ,sch_desc_everyNMinutes:fQ,sch_desc_everyNMonths:OQ,sch_desc_everyNWeeks:EQ,sch_desc_everyNYears:_Q,sch_desc_everyWeek:xQ,sch_desc_everyYear:SQ,sch_desc_intervalFromTo:kQ,sch_desc_never:vQ,sch_desc_onDate:YQ,sch_desc_onDates:QQ,sch_desc_onEveryDate:bQ,sch_desc_onMonth:UQ,sch_desc_onMonths:$Q,sch_desc_onWeekday:PQ,sch_desc_onWeekdays:WQ,sch_desc_onWeekends:JQ,sch_desc_onWorkdays:BQ,sch_desc_onceInPast:RQ,sch_desc_once_on:FQ,sch_desc_validFrom:GQ,sch_desc_validFromTo:HQ,sch_desc_validTo:VQ,sch_every:ZQ,sch_exactTime:XQ,sch_from:KQ,sch_fromTo:qQ,sch_intervalTime:eb,sch_invert:tb,sch_no_one:sb,sch_on:ib,sch_period:rb,sch_periodDaily:ob,sch_periodDates:nb,sch_periodDay:ab,sch_periodEvery:Mb,sch_periodEveryDay:cb,sch_periodEveryMonth:ub,sch_periodEveryWeek:lb,sch_periodEveryYear:Nb,sch_periodHours:Lb,sch_periodMinutes:gb,sch_periodMonth:jb,sch_periodMonthly:yb,sch_periodOnce:Tb,sch_periodSpecificMonths:Db,sch_periodWeek:db,sch_periodWeekdays:hb,sch_periodWeekend:zb,sch_periodWeekly:wb,sch_periodWorkdays:Ib,sch_periodYear:Cb,sch_periodYearly:pb,sch_specificTime:Ab,sch_time:mb,sch_to:fb,sch_valid:Ob,sch_validFrom:Eb,sch_validTo:_b,sch_wholeDay:xb,sch_yearEveryMonth:Sb},vb="Acties",Yb="toevoegen",Qb="Annuleer",bb="Categorieën",Ub="Gecontroleerd",$b="Verwijderen",Pb="Dichtbij",Wb="Reclame",Jb="Configureren",Bb="Verbonden",Rb="Doorgaan",Fb="Gekopieerd",Gb="Creëer",Hb="Bijsnijden",Vb="Delete",Zb="Verwijderen",Xb="Weggooien",Kb="Verbinding verbroken",qb="Fout",eU="Filter",tU="Vrijdag",sU="Breedtegraad",iU="Uitloggen",rU="Lengtegraad",oU="Bericht",nU="Maandag",aU="Naam",MU="Voorwerpen",cU="OK",uU="Product",lU="Hernoemen/Verplaatsen/Kopiëren",NU="Herhaling",LU="Vervangen",gU="Wortel",jU="Zaterdag",yU="Sparen",TU="Geselecteerd",DU="Staten",dU="Zondag",hU="Donderdag",zU="Tijdstempel",wU="Dinsdag",IU="Bijwerken",CU="Geldig tot",pU="Waarde",AU="Versie",mU="Woensdag",fU="Breedte",OU="Ja",EU="verschillend",_U="Iedereen kan object lezen",xU="Iedereen kan staat lezen",SU="Iedereen kan object schrijven",kU="Iedereen kan staat schrijven",vU="Groep kan object lezen",YU="Groep kan status lezen",QU="Groep kan object schrijven",bU="Groep kan staat schrijven",UU="Eigenaar kan object lezen",$U="Eigenaar kan staat lezen",PU="Eigenaar kan object schrijven",WU="Eigenaar kan staat schrijven",JU="Toetsen",BU="Veranderd van",RU="dichtbij",FU="Creëer een Booleaanse status",GU="Kanaal maken",HU="Apparaat maken",VU="Nummerstatus maken",ZU="Staat creëren",XU="Tekenreeksstatus maken",KU="d.",qU="Fr",e6="Mo",t6="Za",s6="Zo",i6="Th",r6="Tu",o6="Wij",n6="Expert modus",a6="ONWAAR",M6="Alle bestanden",c6="Audio",u6="Code/JSON",l6="Afbeeldingen",N6="Tekst",L6="Video",g6="Instellingen",j6="zonder",y6="Functie",T6="ID",D6="Naam",d6="Rol",h6="Kamer",z6="Type",w6="Ongeldige instellingen",I6="Laatste wijziging",C6="plaatselijk",p6="april",A6="aug",m6="dec",f6="februari",O6="jan",E6="jul",_6="juni",x6="Mei",S6="mrt",k6="nov",v6="Okt",Y6="sept",Q6="april",b6="aug",U6="dec",$6="februari",P6="jan",W6="jul",J6="juni",B6="Mei",R6="mrt",F6="nov",G6="Okt",H6="sept",V6="geen",Z6="Object veranderd door",X6="Object voor het laatst gewijzigd om",K6="Instellingen van andere adapter %s",q6="Kwaliteitscode",e8="herhalen",t8='Om een map te selecteren, houdt u gewoon de toets "shift" ingedrukt door op de map te klikken.',s8="Alles weergeven",i8="Staat veranderd door",r8="Object veranderd van",o8="Tijdstempel",n8="Erkende vlag",a8="Opmerking",M8="Kopieer de statuswaarde",c8="Houd de Cltr/⌘-toets ingedrukt om de link te openen",u8="Aangepaste instellingen",l8="Object verwijderen",N8="Object bewerken",L8="Bewerk de statuswaarde",g8="Verloopt over",j8="Van",y8="Laatst gewijzigd",T8="Kwaliteit",D8="Tijdstempel",d8="Gebruiker",h8="Waarde",z8="WAAR",w8="Waarde",I8="Waarschuwing: De CRON-taak wordt elke minuut uitgevoerd gedurende de opgegeven periode!",C8="Waarschuwing: De CRON-taak wordt elke seconde uitgevoerd gedurende de opgegeven periode!",p8="CRON",A8="Datum",m8="data",f8="Dag",O8="Dag van de week",E8="elk",_8="elke N dagen",x8="elke N-de dag van de week",S8="elke N dag van de week",k8="elke N uur",v8="elke N minuten",Y8="elke N maanden",Q8="elke N seconden",b8="elke dag",U8="elke dag van de week",$8="elke dag van de week",P8="elk uur",W8="elke minuut",J8="elke maand",B8="elke seconde",R8="Van",F8="uren",G8="Interval",H8="Interval tussen",V8="Ongeldige CRON",Z8="Notulen",X8="maanden",K8="Een keer",q8="Periode",e9="seconden",t9="Gemakkelijk",s9="Specifieke tijd",i9="specifieke data",r9="specifieke dag(en) van de week",o9="specifieke dag van weken",n9="specifieke uren",a9="specifieke minuten",M9="specifieke maanden",c9="specifieke seconden",u9="Tijd",l9="Naar",N9="tovenaar",L9="allemaal",g9="Astro-dag",j9="Astro-nacht",y9="Dageraad",T9="Schemer",D9="gouden uur",d9="Gouden uur einde",h9="Nadir",z9="Nautische dageraad",w9="Nautische schemering",I9="Nacht",C9="Nacht einde",p9="Zonne middag",A9="zonsopkomst",m9="Sunrise einde",f9="Zonsondergang",O9="Zonsondergang start",E9="Bij",_9="op %s",x9="elke dag",S9="elk uur",k9="elke minuut",v9="elke maand",Y9="elke %s dag",Q9="elke %s uur",b9="elke %s minuten",U9="elke %s maanden",$9="elke %s weken",P9="elke %s jaar",W9="elke week",J9="elk jaar",B9="van %s tot %s",R9="nooit",F9="op %s van %s",G9="op %s en %s van",H9="op elke datum van",V9="%s",Z9="%s en %s",X9="op %s",K9="op %s en %s",q9="in het weekend",e7="op werkdagen",t7="zal niet meer worden uitgevoerd, omdat start verleden tijd is",s7="op %s",i7="van %s",r7="Uitvoeren van tot",o7="tot %s",n7="elk",a7="Specifieke tijd",M7="van",c7="Van naar",u7="Interval tijd",l7="omkeren",N7="geen",L7="Aan",g7="Periode",j7="Dagelijks",y7="data",T7="Dag",D7="elk",d7="Elke dag",h7="Elke maand",z7="Elke week",w7="Elk jaar",I7="uren",C7="Notulen",p7="maand",A7="Maandelijks",m7="Een keer",f7="Specifieke maanden",O7="Week",E7="Doordeweekse dagen",_7="Weekend",x7="Wekelijks",S7="werkdagen",k7="Jaar",v7="jaar-",Y7="Specifieke tijd",Q7="Tijd",b7="naar",U7="Geldig",$7="van",P7="naar",W7="Hele dag",J7="elke maand",B7={"ra_%s links from aliases":"%s links van aliassen","ra_%s object(s) processed":"%s object(en) verwerkt","ra_%s was imported":"%s is geïmporteerd","ra_Accept license":"Accepteer licentie",ra_Actions:vb,"ra_Add new child object to selected parent":"Voeg een nieuw kindobject toe aan het geselecteerde bovenliggende object","ra_Add objects tree from JSON file":"Objectenboom toevoegen vanuit JSON-bestand","ra_Add row":"Voeg een rij toe","ra_Advanced options":"Geavanceerde mogelijkheden","ra_All items are filtered out":"Alle items zijn uitgefilterd","ra_All objects":"Alle objecten",ra_Append:Yb,"ra_Append %s entries or replace existing?":"%s ingangen toevoegen of bestaande vervangen?","ra_Append or replace?":"Toevoegen of vervangen?","ra_Are you sure?":"Weet je het zeker?","ra_Auto (no custom columns)":"Auto (geen aangepaste kolommen)","ra_Back to %s":"Terug naar %s","ra_Background image":"Achtergrond afbeelding",ra_Cancel:Qb,"ra_Cannot add items with set filter":"Kan geen items toevoegen met ingestelde filter","ra_Cannot decode license":"Kan licentie niet decoderen","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Kan positie niet bepalen: systeeminstellingen zijn leeg en GPS-detectie is uitgeschakeld in browser",'ra_Cannot find "%s"':'Kan "%s" niet vinden','ra_Cannot read "%s"':'Kan "%s" niet lezen',"ra_Cannot read licenses: %s":"Kan licenties niet lezen: %s","ra_Cannot retrieve options, as instance is offline":"Kan opties niet ophalen, omdat instantie offline is","ra_Cannot update attribute, because not found in the object":"Kan kenmerk niet bijwerken, omdat het niet in het object is gevonden","ra_Cannot upload":"Kan niet uploaden",ra_Categories:bb,"ra_Chained certificate":"Geketend certificaat","ra_Change color theme":"Kleurthema wijzigen","ra_Changed from":"Veranderd van","ra_Channel → State":"Kanaal → Staat","ra_Check license":"Licentie controleren",ra_Checked:Ub,ra_Clear:$b,"ra_Clear filter":"Filter wissen","ra_Clear icon":"Pictogram wissen","ra_Click to see in full size":"Klik om de afbeelding op volledige grootte te bekijken.","ra_Click to show":"Klik om te tonen","ra_Clone current row":"Kloon de huidige rij",ra_Close:Pb,"ra_Collapse all nodes":"Vouw alle knooppunten samen","ra_Collapse one step node":"Eén niveau samenvouwen",ra_Commercial:Wb,ra_Configure:Jb,"ra_Configure visible columns":"Configureer zichtbare kolommen","ra_Confirm deletion of %s":"Bevestig het verwijderen van %s",ra_Connected:Bb,ra_Continue:Rb,ra_Copied:Fb,"ra_Copied %s":'"%s" gekopieerd',"ra_Copy content":"Inhoud kopiëren",ra_Create:Gb,"ra_Create alias":"Alias maken","ra_Create folder":"Map aanmaken","ra_Create new folder in %s":"Maak een nieuwe map in %s",ra_Crop:Hb,"ra_Define CRON...":"Definieer CRON...","ra_Define functions":"Definieer functies","ra_Define rooms":"Definieer kamers","ra_Define schedule":"Definieer schema","ra_Define schedule...":"Schema definiëren ...",ra_Del:Vb,ra_Delete:Zb,"ra_Delete current row":"Huidige rij verwijderen","ra_Deselect all":"Deselecteer alles","ra_Device → Channel → State":"Apparaat → Kanaal → Staat","ra_Disable/Enable translation":"Vertaling uitschakelen/inschakelen",ra_Discard:Xb,ra_Disconnected:Kb,"ra_Do not ask for next 2 hours in this session":"Vraag niet om de volgende 2 uur in deze sessie","ra_Do not export values of states":"Exporteer geen waarden van staten","ra_Do not use let's encrypt":"Gebruik geen let's encrypt","ra_Docker is not available":"Docker is niet beschikbaar","ra_Docker is not installed or not running":"Docker is niet geïnstalleerd of draait niet","ra_Double click to reset table layout":"Dubbelklik om de tafelindeling te resetten","ra_Drag 'n' drop some files here, or click to select files":"Sleep enkele bestanden hierheen, of klik om bestanden te selecteren","ra_Drop file here":"Zet het bestand hier neer","ra_Drop the files here...":"Zet het bestand hier neer...","ra_Duplicate name":"Dubbele naam","ra_Edit ACL":"ACL bewerken","ra_Edit alias":"Alias bewerken","ra_Edit custom config":"Bewerk aangepaste config","ra_Edit full path":"Volledig pad bewerken","ra_Edit function":"Bewerkingsfunctie","ra_Edit object field":"Bewerk objectveld","ra_Edit role":"Rol bewerken","ra_Edit room":"Kamer bewerken","ra_Edit value":"Waarde bewerken","ra_Enter the code from that page here":"Voer hier de code van die pagina in",ra_Error:qb,"ra_Expand all nodes":"Vouw alle knooppunten uit","ra_Expand one step node":"Vouw een niveau uit","ra_Expand/Collapse card":"Kaart uit-/inklappen","ra_Export configuration section":"Sectie Exportconfiguratie","ra_Export data to %s file":"Exporteer gegevens naar %s bestand","ra_Failed to open JSON File":"JSON-bestand kan niet worden geopend","ra_Fallback custom certificates":"Fallback aangepaste certificaten","ra_File is too big. Max %sk allowed. Try use SVG.":"Bestand is te groot. Max. %sk toegestaan. Probeer SVG te gebruiken.",ra_Filter:eU,"ra_Filter and Data Actions":"Filter- en gegevensacties","ra_Filter files":"Bestanden filteren","ra_Folder name":"Naam van de map","ra_Folder → Channel → State":"Map → Kanaal → Staat","ra_Folder → Device → Channel → State":"Map → Apparaat → Kanaal → Staat","ra_Folder → State":"Map → Staat","ra_Folders always first":"Mappen altijd eerst",ra_Friday:tU,"ra_From file":"Van bestand","ra_From text":"Van tekst","ra_Get %s access":"Krijg %s toegang","ra_Good luck":"Veel geluk","ra_Hide empty folders":"Verberg lege mappen","ra_If no file will be created in the folder, it will disappear after the browser closed":"Als er geen bestand in de map wordt gemaakt, verdwijnt het nadat de browser is gesloten","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Als de bovenstaande knop niet werkt, kunt u deze app handmatig autoriseren door deze url te bezoeken","ra_Import and add configuration section":"Configuratiesectie importeren en toevoegen","ra_Import and replace configuration section":"Configuratiesectie importeren en vervangen","ra_Import data from %s file":"Importeer gegevens uit %s bestand","ra_Import from %s":"Importeren uit %s","ra_Instance %s is alive":"Instantie %s leeft","ra_Instance %s is not alive":"Instantie %s is niet actief","ra_Instance is not alive":"Instantie leeft niet","ra_Invalid CRON":"Ongeldige CRON","ra_Invalid JSON":"Ongeldige JSON","ra_Invalid JSON file.":"Ongeldig JSON-bestand.","ra_Invalid JSON format. Expected an array.":"Ongeldige JSON-indeling. Er werd een array verwacht.","ra_Invalid answer from server":"Ongeldig antwoord van de server","ra_Invalid parent folder!":"Ongeldige bovenliggende map!","ra_Invalid structure":"Ongeldige structuur","ra_JSON editor":"JSON-editor","ra_Last change":"Laatste wijziging",ra_Latitude:sU,"ra_License %s":"Licentie %s","ra_License agreement":"Licentieovereenkomst","ra_License does not exist":"Licentie bestaat niet","ra_License expired on %s":"Licentie verlopen op %s",'ra_License for other product "%s"':'Licentie voor ander product "%s"',"ra_License is for version %s, but required version is %s.":"Licentie is voor versie %s, maar vereiste versie is %s.","ra_License must be converted":"Licentie moet worden omgezet naar nieuwere versie. U kunt dit doen in uw iobroker.net-profiel.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licentie niet gevonden in licentiebeheer. Wilt u licenties van iobroker.net bijwerken?","ra_Listen on all IPs":"Luister op alle IP's","ra_Load configuration from file":"Laad configuratie uit bestand",ra_Logout:iU,ra_Longitude:rU,'ra_May not trigger "updateLicenses"':'Activeert mogelijk niet "updateLicenses"',ra_Message:oU,ra_Monday:nU,"ra_Move down":"Naar beneden verplaatsen","ra_Move up":"Omhoog gaan",ra_Name:aU,"ra_No data found in file":"Geen gegevens gevonden in bestand","ra_No one license found in license manager":"Geen enkele licentie gevonden in licentiebeheer","ra_No response from admin":"Geen reactie van de beheerder","ra_No response from the backend":"Geen reactie van de backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Niet-experts mogen alleen nieuwe objecten maken in "0_userdata.0" of "alias.0".',"ra_Not a number":"Geen nummer","ra_OAuth Client ID":"OAuth-client-ID","ra_OAuth Client secret":"OAuth-clientgeheim",ra_Objects:MU,ra_Ok:cU,"ra_On weekdays":"Op weekdagen","ra_Only following structures of objects are available:":"Alleen de volgende structuren van objecten zijn beschikbaar:","ra_Only selected":"Alleen geselecteerd","ra_Owner group":"Eigenaarsgroep","ra_Owner user":"Eigenaar gebruiker","ra_Passwords are not equal!":"Wachtwoorden zijn niet gelijk!","ra_Place your files here or click here to open the browse dialog":"Plaats uw bestanden hier of klik hier om het bladervenster te openen","ra_Please allow popups in your browser for this page!":"Sta pop-ups toe in uw browser voor deze pagina!","ra_Please confirm":"Bevestig alstublieft","ra_Please create license":"Maak een licentie aan","ra_Please enter the license":"Voer de licentie in","ra_Please select file...":"Selecteer bestand...","ra_Please select object ID...":"Selecteer object-ID ...","ra_Port could be used by %s":"Poort kan worden gebruikt door %s","ra_Port is already used by %s":"Poort wordt al gebruikt door %s","ra_Press ENTER Key to add new item":"Druk op de ENTER-toets om een nieuw item toe te voegen","ra_Private certificate":"Privé certificaat",ra_Product:uU,"ra_Public certificate":"Openbaar certificaat","ra_Quality code":"Kwaliteit","ra_Refresh tree":"Vernieuw de boom","ra_Reload files":"Laad bestanden opnieuw",ra_Rename_Move_Copy:lU,"ra_Renew %s access":"%s toegang verlengen",ra_Repeat:NU,ra_Replace:LU,"ra_Request timed out":"Verzoek verlopen","ra_Restrict to folder":"Beperken tot map",ra_Root:gU,ra_Saturday:jU,ra_Save:yU,"ra_Save and close":"Opslaan en afsluiten","ra_Save configuration to file":"Sla de configuratie op in een bestand","ra_Save objects tree as JSON file":"Sla de objectenboom op als JSON-bestand","ra_Select all":"Selecteer alles","ra_Select color":"Selecteer kleur","ra_Select predefined icon":"Selecteer voorgedefinieerd pictogram","ra_Select type of export":"Selecteer het type export",ra_Selected:TU,"ra_Selected %s object(s)":"Geselecteerde %s object(en)","ra_Serial number (UUID)":"Serienummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serienummer (UUID) "%s" in licentie is voor ander apparaat.',"ra_Session will expire in %s seconds. Continue?":"Sessie verloopt over %s seconden. Doorgaan?","ra_Show all folders":"Toon alle mappen","ra_Show lines between rows":"Toon lijnen tussen rijen","ra_Show/Hide object descriptions":"Toon/verberg objectbeschrijvingen","ra_Show/hide filter input":"Filterinvoer weergeven/verbergen","ra_Some data are not stored. Discard?":"Sommige gegevens worden niet opgeslagen. Weggooien?",ra_States:DU,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Succesvol geautoriseerd. Token geldig tot %s en wordt automatisch verlengd.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Succesvol geautoriseerd. Token geldig tot %s, maar kan verlopen omdat de instantie niet actief is.","ra_Suitable license not found in license manager":"Geschikte licentie niet gevonden in licentiebeheer",ra_Sunday:dU,"ra_Suppress question for next %s minutes":"Vraag de volgende %s minuten onderdrukken","ra_System language":"Systeemtaal","ra_Take browser position":"Positie innemen vanuit de browser","ra_Take position from system settings":"Neem positie over van systeeminstellingen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'De experts kunnen overal objecten maken, behalve vanaf het tweede niveau (bijv. "Vis.0" of "javascript.0").',"ra_The page you are looking for was not found":"De pagina die u zoekt is niet gevonden","ra_The schedule will be executed every minute. Are you sure?":"Het schema wordt elke minuut uitgevoerd. Weet u het zeker?","ra_The schedule will be executed every second. Are you sure?":"Het schema wordt elke seconde uitgevoerd. Weet je het zeker?",ra_Thursday:hU,ra_Timestamp:zU,"ra_Toggle expert mode":"Schakel tussen expertmodus","ra_Toggle the states view":"Schakel de statusweergave in of uit","ra_Toggle view mode":"Schakelen tussen weergavemodus","ra_Too big":"Te groot","ra_Too small":"Te klein","ra_Transparent dialog":"Transparant dialoogvenster",ra_Tuesday:wU,"ra_Unknown error":"Onbekende fout","ra_Unknown error!":"Onbekende fout!",ra_Update:IU,"ra_Upload file":"Upload bestand","ra_Use all available let's encrypt certificates":"Gebruik alle beschikbare Let's Encrypt-certificaten","ra_Use iobroker.acme adapter for letsencrypt certificates":"Gebruik de iobroker.acme-adapter voor letsencrypt-certificaten","ra_Use system settings for position":"Gebruik systeeminstellingen voor positie","ra_Used system settings":"Gebruikte systeeminstellingen","ra_User files":"Gebruikersbestanden",ra_ValidTill:CU,ra_Value:pU,ra_Version:AU,"ra_View file":"Bestand bekijken","ra_View: %s":"Bekijk: %s",ra_Wednesday:mU,ra_Width:fU,"ra_YAML editor":"YAML-editor",ra_Yes:OU,"ra_You can export all objects or just the selected branch.":"U kunt alle objecten of alleen de geselecteerde tak exporteren.","ra_You can filter entries by entering here some text":"U kunt items filteren door hier wat tekst in te voeren","ra_You can use * as wildcard":"U kunt * als joker gebruiken",ra___different__:EU,ra_aclEveryone_read_object:_U,ra_aclEveryone_read_state:xU,ra_aclEveryone_write_object:SU,ra_aclEveryone_write_state:kU,ra_aclGroup_read_object:vU,ra_aclGroup_read_state:YU,ra_aclGroup_write_object:QU,ra_aclGroup_write_state:bU,ra_aclOwner_read_object:UU,ra_aclOwner_read_state:$U,ra_aclOwner_write_object:PU,ra_aclOwner_write_state:WU,ra_buttons:JU,ra_changedFrom:BU,ra_close:RU,ra_create_boolean_state:FU,ra_create_channel:GU,ra_create_device:HU,ra_create_number_state:VU,ra_create_state:ZU,ra_create_string_state:XU,ra_daysShortText:KU,ra_dow_Fr:qU,ra_dow_Mo:e6,ra_dow_Sa:t6,ra_dow_Su:s6,ra_dow_Th:i6,ra_dow_Tu:r6,ra_dow_We:o6,ra_expertMode:n6,ra_false:a6,ra_fileType_all:M6,ra_fileType_audio:c6,ra_fileType_code:u6,ra_fileType_images:l6,ra_fileType_txt:N6,ra_fileType_video:L6,"ra_fileType_video,":"Video",ra_filter_customs:g6,ra_filter_customs_without:j6,ra_filter_func:y6,ra_filter_id:T6,ra_filter_name:D6,ra_filter_role:d6,ra_filter_room:h6,ra_filter_type:z6,"ra_import data from %s file":"Importeer gegevens uit %s bestand",ra_invalidConfig:w6,ra_lastChange:I6,ra_locally:C6,ra_month_Apr:p6,ra_month_Aug:A6,ra_month_Dec:m6,ra_month_Feb:f6,ra_month_Jan:O6,ra_month_Jul:E6,ra_month_Jun:_6,ra_month_Mai:x6,ra_month_Mar:S6,ra_month_Nov:k6,ra_month_Oct:v6,ra_month_Sep:Y6,ra_months_Apr:Q6,ra_months_Aug:b6,ra_months_Dec:U6,ra_months_Feb:$6,ra_months_Jan:P6,ra_months_Jul:W6,ra_months_Jun:J6,ra_months_Mai:B6,ra_months_Mar:R6,ra_months_Nov:F6,ra_months_Oct:G6,ra_months_Sep:H6,"ra_no confirm for 5 mins":"geen bevestiging gedurende 5 minuten",ra_none:V6,ra_object_changed_by:Z6,ra_object_changed_by_user:X6,ra_otherConfig:K6,ra_qualityCode:q6,ra_repeat:e8,ra_select_folder_hint:t8,ra_show_all:s8,ra_state_changed_by:i8,ra_state_changed_from:r8,ra_timestamp:o8,ra_tooltip_ack:n8,ra_tooltip_comment:a8,ra_tooltip_copyState:M8,ra_tooltip_ctrlForLink:c8,ra_tooltip_customConfig:u8,ra_tooltip_deleteObject:l8,ra_tooltip_editObject:N8,ra_tooltip_editState:L8,ra_tooltip_expire:g8,ra_tooltip_from:j8,ra_tooltip_lc:y8,ra_tooltip_quality:T8,ra_tooltip_ts:D8,ra_tooltip_user:d8,ra_tooltip_value:h8,ra_true:z8,"ra_use seconds":"gebruik seconden",ra_val:w8,"ra_via internet":"via internet",ra_warning_every_minute:I8,ra_warning_every_second:C8,sc_cron:p8,sc_date:A8,sc_dates:m8,sc_dow:f8,sc_dows:O8,sc_every:E8,sc_everyN_dates:_8,sc_everyN_dow:x8,sc_everyN_dows:S8,sc_everyN_hours:k8,sc_everyN_minutes:v8,sc_everyN_months:Y8,sc_everyN_seconds:Q8,sc_every_dates:b8,sc_every_dow:U8,sc_every_dows:$8,sc_every_hours:P8,sc_every_minutes:W8,sc_every_months:J8,sc_every_seconds:B8,sc_from:R8,sc_hours:F8,sc_interval:G8,sc_intervalBetween:H8,sc_invalid_cron:V8,sc_minutes:Z8,sc_months:X8,sc_once:K8,sc_period:q8,sc_seconds:e9,sc_simple:t9,sc_specific:s9,sc_specific_dates:i9,sc_specific_dow:r9,sc_specific_dows:o9,sc_specific_hours:n9,sc_specific_minutes:a9,sc_specific_months:M9,sc_specific_seconds:c9,sc_time:u9,sc_to:l9,sc_wizard:N9,sch_all:L9,sch_astroDay:g9,sch_astroNight:j9,sch_astro_dawn:y9,sch_astro_dusk:T9,sch_astro_goldenHour:D9,sch_astro_goldenHourEnd:d9,sch_astro_nadir:h9,sch_astro_nauticalDawn:z9,sch_astro_nauticalDusk:w9,sch_astro_night:I9,sch_astro_nightEnd:C9,sch_astro_solarNoon:p9,sch_astro_sunrise:A9,sch_astro_sunriseEnd:m9,sch_astro_sunset:f9,sch_astro_sunsetStart:O9,sch_at:E9,sch_desc_atTime:_9,sch_desc_everyDay:x9,sch_desc_everyHour:S9,sch_desc_everyMinute:k9,sch_desc_everyMonth:v9,sch_desc_everyNDay:Y9,sch_desc_everyNHours:Q9,sch_desc_everyNMinutes:b9,sch_desc_everyNMonths:U9,sch_desc_everyNWeeks:$9,sch_desc_everyNYears:P9,sch_desc_everyWeek:W9,sch_desc_everyYear:J9,sch_desc_intervalFromTo:B9,sch_desc_never:R9,sch_desc_onDate:F9,sch_desc_onDates:G9,sch_desc_onEveryDate:H9,sch_desc_onMonth:V9,sch_desc_onMonths:Z9,sch_desc_onWeekday:X9,sch_desc_onWeekdays:K9,sch_desc_onWeekends:q9,sch_desc_onWorkdays:e7,sch_desc_onceInPast:t7,sch_desc_once_on:s7,sch_desc_validFrom:i7,sch_desc_validFromTo:r7,sch_desc_validTo:o7,sch_every:n7,sch_exactTime:a7,sch_from:M7,sch_fromTo:c7,sch_intervalTime:u7,sch_invert:l7,sch_no_one:N7,sch_on:L7,sch_period:g7,sch_periodDaily:j7,sch_periodDates:y7,sch_periodDay:T7,sch_periodEvery:D7,sch_periodEveryDay:d7,sch_periodEveryMonth:h7,sch_periodEveryWeek:z7,sch_periodEveryYear:w7,sch_periodHours:I7,sch_periodMinutes:C7,sch_periodMonth:p7,sch_periodMonthly:A7,sch_periodOnce:m7,sch_periodSpecificMonths:f7,sch_periodWeek:O7,sch_periodWeekdays:E7,sch_periodWeekend:_7,sch_periodWeekly:x7,sch_periodWorkdays:S7,sch_periodYear:k7,sch_periodYearly:v7,sch_specificTime:Y7,sch_time:Q7,sch_to:b7,sch_valid:U7,sch_validFrom:$7,sch_validTo:P7,sch_wholeDay:W7,sch_yearEveryMonth:J7},R7="Actes",F7="Ajouter",G7="Annuler",H7="Catégories",V7="Vérifié",Z7="Effacer",X7="Fermer",K7="Commercial",q7="Configurer",e$="Lié",t$="Continuer",s$="Copié",i$="Créer",r$="Recadrer",o$="Delete",n$="Supprimer",a$="Jeter",M$="Débranché",c$="Erreur",u$="Filtre",l$="Vendredi",N$="Latitude",L$="Déconnexion",g$="Longitude",j$="Message",y$="Lundi",T$="Nom",D$="Objets",d$="D'accord",h$="Produit",z$="Renommer/Déplacer/Copier",w$="Répéter",I$="Remplacer",C$="Racine",p$="Samedi",A$="sauver",m$="Choisi",f$="États",O$="Dimanche",E$="Jeudi",_$="Horodatage",x$="Mardi",S$="Mise à jour",k$="Valable jusqu'au",v$="Valeur",Y$="Version",Q$="Mercredi",b$="Largeur",U$="Oui",$$="différent",P$="Tout le monde peut lire un objet",W$="Tout le monde peut lire l'état",J$="Tout le monde peut écrire un objet",B$="Tout le monde peut écrire l'état",R$="Le groupe peut lire l'objet",F$="Le groupe peut lire l'état",G$="Le groupe peut écrire un objet",H$="Le groupe peut écrire l'état",V$="Le propriétaire peut lire l'objet",Z$="Le propriétaire peut lire l'état",X$="Le propriétaire peut écrire un objet",K$="Le propriétaire peut écrire l'état",q$="Boutons",eP="Changé de",tP="Fermer",sP="Créer un état booléen",iP="Créer une chaîne",rP="Créer un appareil",oP="Créer un état de numéro",nP="Créer un état",aP="Créer un état de chaîne",MP="j.",cP="Fr",uP="Mo",lP="Sa",NP="Su",LP="Th",gP="Tu",jP="Nous",yP="Mode expert",TP="FAUX",DP="Tous les fichiers",dP="l'audio",hP="Code/JSON",zP="Images",wP="Texte",IP="Vidéo",CP="Paramètres",pP="sans",AP="Une fonction",mP="ID",fP="Prénom",OP="Rôle",EP="Pièce",_P="Type",xP="Paramètres invalides",SP="Dernier changement",kP="localement",vP="Avr",YP="Août",QP="Déc",bP="Fév",UP="Jan",$P="Juil",PP="Juin",WP="Mai",JP="Mar",BP="Nov",RP="Oct",FP="Sep",GP="Avr",HP="Août",VP="Déc",ZP="Fév",XP="Jan",KP="Juil",qP="Juin",eW="Mai",tW="Mar",sW="Nov",iW="Oct",rW="Sep",oW="rien",nW="Objet modifié par",aW="Objet modifié pour la dernière fois à",MW="Paramètres d'un autre adaptateur %s",cW="Code de qualité",uW="répéter",lW='Pour sélectionner un dossier, maintenez simplement la touche "shift" enfoncée en cliquant sur le dossier.',NW="Tout afficher",LW="État modifié par",gW="Objet changé de",jW="Horodatage",yW="Drapeau reconnu",TW="Commentaire",DW="Copiez la valeur d'état",dW="Maintenez la touche Cltr/⌘ enfoncée pour ouvrir le lien",hW="Paramètres personnalisés",zW="Supprimer un objet",wW="Modifier l'objet",IW="Modifier la valeur d'état",CW="Expire dans",pW="De",AW="Dernière modification",mW="Qualité",fW="Horodatage",OW="Utilisateur",EW="Valeur",_W="VRAI",xW="Valeur",SW="Attention : la tâche CRON s’exécutera toutes les minutes pendant la période spécifiée !",kW="Attention : la tâche CRON s’exécutera toutes les secondes pendant la période spécifiée !",vW="CRON",YW="Date",QW="Rendez-vous",bW="Jour",UW="Jour de la semaine",$W="Chaque",PW="tous les N jours",WW="chaque Nième jour de la semaine",JW="tous les N jours de la semaine",BW="toutes les N heures",RW="toutes les N minutes",FW="tous les N mois",GW="toutes les N secondes",HW="tous les jours",VW="Chaque jour de la semaine",ZW="Chaque jour de la semaine",XW="Toutes les heures",KW="chaque minute",qW="chaque mois",eJ="chaque seconde",tJ="De",sJ="Heures",iJ="Intervalle",rJ="Intervalle entre",oJ="CRON non valide",nJ="Minutes",aJ="mois",MJ="Une fois que",cJ="Période",uJ="Secondes",lJ="Facile",NJ="Temps spécifique",LJ="dates spécifiques",gJ="jour(s) spécifique(s) de la semaine",jJ="jour spécifique de semaines",yJ="heures spécifiques",TJ="minutes spécifiques",DJ="mois spécifiques",dJ="secondes spécifiques",hJ="Temps",zJ="À",wJ="sorcier",IJ="tout",CJ="Journée astronomique",pJ="Nuit astronomique",AJ="Aube",mJ="Crépuscule",fJ="Heure d'or",OJ="Fin de l'heure d'or",EJ="Nadir",_J="Aube nautique",xJ="Crépuscule nautique",SJ="Nuit",kJ="Fin de nuit",vJ="Midi solaire",YJ="lever du soleil",QJ="Fin du lever du soleil",bJ="Le coucher du soleil",UJ="Coucher du soleil",$J="à",PJ="à %s",WJ="tous les jours",JJ="Toutes les heures",BJ="chaque minute",RJ="chaque mois",FJ="chaque %s jour",GJ="chaque %s heures",HJ="toutes les %s minutes",VJ="tous les %s mois",ZJ="chaque %s semaines",XJ="tous les %s ans",KJ="toutes les semaines",qJ="chaque année",eB="de %s à %s",tB="jamais",sB="sur %s de %s",iB="sur %s et %s de",rB="à chaque date de",oB="%s",nB="%s et %s",aB="sur %s",MB="sur %s et %s",cB="les weekends",uB="les jours ouvrables",lB="ne sera plus exécuté, car start est dans le passé",NB="sur %s",LB="de %s",gB="Exécuter de à",jB="à %s",yB="chaque",TB="Temps spécifique",DB="de",dB="De à",hB="Temps d'interval",zB="inverser",wB="aucun",IB="sur",CB="Période",pB="du quotidien",AB="Rendez-vous",mB="journée",fB="Chaque",OB="Tous les jours",EB="Chaque mois",_B="Toutes les semaines",xB="Chaque année",SB="Heures",kB="Minutes",vB="mois",YB="Mensuel",QB="Une fois que",bB="Mois spécifiques",UB="La semaine",$B="Jours de la semaine",PB="Weekend",WB="Hebdomadaire",JB="Jours ouvrables",BB="Année",RB="Annuel",FB="Temps spécifique",GB="Temps",HB="à",VB="Valide",ZB="de",XB="à",KB="Toute la journée",qB="chaque mois",eR={"ra_%s links from aliases":"%s liens provenant d'alias","ra_%s object(s) processed":"%s objet(s) traité(s)","ra_%s was imported":"%s a été importé","ra_Accept license":"Accepter la licence",ra_Actions:R7,"ra_Add new child object to selected parent":"Ajouter un nouvel objet enfant au parent sélectionné","ra_Add objects tree from JSON file":"Ajouter une arborescence d'objets à partir d'un fichier JSON","ra_Add row":"Ajouter une rangée","ra_Advanced options":"Options avancées","ra_All items are filtered out":"Tous les éléments sont filtrés","ra_All objects":"Tous les objets",ra_Append:F7,"ra_Append %s entries or replace existing?":"Ajouter %s entrées ou remplacer l'existant ?","ra_Append or replace?":"Ajouter ou remplacer ?","ra_Are you sure?":"Êtes-vous sûr?","ra_Auto (no custom columns)":"Auto (pas de colonnes personnalisées)","ra_Back to %s":"Retour à %s","ra_Background image":"Image de fond",ra_Cancel:G7,"ra_Cannot add items with set filter":"Impossible d'ajouter des éléments avec le filtre défini","ra_Cannot decode license":"Impossible de décoder la licence","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossible de déterminer la position : les paramètres système sont vides et la détection GPS est désactivée dans le navigateur",'ra_Cannot find "%s"':'Impossible de trouver "%s"','ra_Cannot read "%s"':'Impossible de lire "%s"',"ra_Cannot read licenses: %s":"Impossible de lire les licences : %s","ra_Cannot retrieve options, as instance is offline":"Impossible de récupérer les options, car l'instance est hors ligne","ra_Cannot update attribute, because not found in the object":"Impossible de mettre à jour l'attribut, car il est introuvable dans l'objet","ra_Cannot upload":"Impossible de télécharger",ra_Categories:H7,"ra_Chained certificate":"Certificat chaîné","ra_Change color theme":"Changer le thème de couleur","ra_Changed from":"Changé de","ra_Channel → State":"Canal → État","ra_Check license":"Vérifier la licence",ra_Checked:V7,ra_Clear:Z7,"ra_Clear filter":"Effacer le filtre","ra_Clear icon":"Effacer l'icône","ra_Click to see in full size":"Cliquez pour afficher en taille réelle","ra_Click to show":"Cliquez pour afficher","ra_Clone current row":"Cloner la ligne actuelle",ra_Close:X7,"ra_Collapse all nodes":"Réduire tous les nœuds","ra_Collapse one step node":"Réduire d'un niveau",ra_Commercial:K7,ra_Configure:q7,"ra_Configure visible columns":"Configurer les colonnes visibles","ra_Confirm deletion of %s":"Confirmer la suppression de %s",ra_Connected:e$,ra_Continue:t$,ra_Copied:s$,"ra_Copied %s":'"%s" copié',"ra_Copy content":"Copier le contenu",ra_Create:i$,"ra_Create alias":"Créer un alias","ra_Create folder":"Créer le dossier","ra_Create new folder in %s":"Créer un nouveau dossier dans %s",ra_Crop:r$,"ra_Define CRON...":"Définir CRON...","ra_Define functions":"Définir des fonctions","ra_Define rooms":"Définir des pièces","ra_Define schedule":"Définir le calendrier","ra_Define schedule...":"Définir le calendrier ...",ra_Del:o$,ra_Delete:n$,"ra_Delete current row":"Supprimer la ligne actuelle","ra_Deselect all":"Tout déselectionner","ra_Device → Channel → State":"Appareil → Canal → État","ra_Disable/Enable translation":"Activer/Désactiver la traduction",ra_Discard:a$,ra_Disconnected:M$,"ra_Do not ask for next 2 hours in this session":"Ne demandez pas les 2 prochaines heures de cette session","ra_Do not export values of states":"Ne pas exporter les valeurs des états","ra_Do not use let's encrypt":"Ne pas utiliser let's encrypt","ra_Docker is not available":"Docker n'est pas disponible","ra_Docker is not installed or not running":"Docker n'est pas installé ou n'est pas en cours d'exécution","ra_Double click to reset table layout":"Double-cliquez pour réinitialiser la disposition du tableau","ra_Drag 'n' drop some files here, or click to select files":"Glissez-déposez des fichiers ici, ou cliquez pour sélectionner des fichiers","ra_Drop file here":"Déposer le fichier ici","ra_Drop the files here...":"Déposez le fichier ici...","ra_Duplicate name":"Nom en double","ra_Edit ACL":"Modifier la LCA","ra_Edit alias":"Modifier l'alias","ra_Edit custom config":"Modifier la configuration personnalisée","ra_Edit full path":"Modifier le chemin complet","ra_Edit function":"Fonction d'édition","ra_Edit object field":"Modifier le champ d'objet","ra_Edit role":"Modifier le rôle","ra_Edit room":"Modifier la salle","ra_Edit value":"Modifier la valeur","ra_Enter the code from that page here":"Entrez le code de cette page ici",ra_Error:c$,"ra_Expand all nodes":"Développer tous les nœuds","ra_Expand one step node":"Développer un niveau","ra_Expand/Collapse card":"Carte Développer/Réduire","ra_Export configuration section":"Exporter la section de configuration","ra_Export data to %s file":"Exporter les données vers le fichier %s","ra_Failed to open JSON File":"Échec de l'ouverture du fichier JSON","ra_Fallback custom certificates":"Certificats personnalisés de secours","ra_File is too big. Max %sk allowed. Try use SVG.":"Le fichier est trop volumineux. Max %sk autorisé. Essayez d'utiliser SVG.",ra_Filter:u$,"ra_Filter and Data Actions":"Actions sur les filtres et les données","ra_Filter files":"Filtrer les fichiers","ra_Folder name":"Nom de dossier","ra_Folder → Channel → State":"Dossier → Chaîne → État","ra_Folder → Device → Channel → State":"Dossier → Appareil → Canal → État","ra_Folder → State":"Dossier → État","ra_Folders always first":"Les dossiers toujours en premier",ra_Friday:l$,"ra_From file":"À partir du fichier","ra_From text":"À partir du texte","ra_Get %s access":"Obtenir l'accès %s","ra_Good luck":"Bonne chance","ra_Hide empty folders":"Masquer les dossiers vides","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si aucun fichier ne sera créé dans le dossier, il disparaîtra après la fermeture du navigateur","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si le bouton ci-dessus ne fonctionne pas, vous pouvez autoriser manuellement cette application en visitant cette URL","ra_Import and add configuration section":"Importer et ajouter la section de configuration","ra_Import and replace configuration section":"Importer et remplacer la section de configuration","ra_Import data from %s file":"Importer des données à partir du fichier %s","ra_Import from %s":"Importer depuis %s","ra_Instance %s is alive":"L'instance %s est active","ra_Instance %s is not alive":"L'instance %s n'est pas active","ra_Instance is not alive":"L'instance n'est pas active","ra_Invalid CRON":"CRON invalide","ra_Invalid JSON":"JSON invalide","ra_Invalid JSON file.":"Fichier JSON invalide.","ra_Invalid JSON format. Expected an array.":"Format JSON invalide. Tableau attendu.","ra_Invalid answer from server":"Réponse invalide du serveur","ra_Invalid parent folder!":"Dossier parent non valide!","ra_Invalid structure":"Structure invalide","ra_JSON editor":"Éditeur JSON","ra_Last change":"Dernier changement",ra_Latitude:N$,"ra_License %s":"Licence %s","ra_License agreement":"Accord de licence","ra_License does not exist":"La licence n'existe pas","ra_License expired on %s":"Licence expirée le %s",'ra_License for other product "%s"':'Licence pour un autre produit "%s"',"ra_License is for version %s, but required version is %s.":"La licence est pour la version %s, mais la version requise est %s.","ra_License must be converted":"La licence doit être convertie en une version plus récente. Vous pouvez le faire dans votre profil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licence introuvable dans le gestionnaire de licences. Voulez-vous mettre à jour les licences depuis iobroker.net ?","ra_Listen on all IPs":"Écoutez sur toutes les adresses IP","ra_Load configuration from file":"Charger la configuration à partir du fichier",ra_Logout:L$,ra_Longitude:g$,'ra_May not trigger "updateLicenses"':'Peut ne pas déclencher "updateLicences"',ra_Message:j$,ra_Monday:y$,"ra_Move down":"Descendre","ra_Move up":"Déplacer vers le haut",ra_Name:T$,"ra_No data found in file":"Aucune donnée trouvée dans le fichier","ra_No one license found in license manager":"Aucune licence trouvée dans le gestionnaire de licences","ra_No response from admin":"Aucune réponse de l'administrateur","ra_No response from the backend":"Aucune réponse du backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Les non-experts ne peuvent créer de nouveaux objets que dans "0_userdata.0" ou "alias.0".',"ra_Not a number":"Pas un numéro","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Secret client OAuth",ra_Objects:D$,ra_Ok:d$,"ra_On weekdays":"En semaine","ra_Only following structures of objects are available:":"Seules les structures d'objets suivantes sont disponibles:","ra_Only selected":"Uniquement sélectionné","ra_Owner group":"Groupe propriétaire","ra_Owner user":"Utilisateur propriétaire","ra_Passwords are not equal!":"Les mots de passe ne sont pas égaux !","ra_Place your files here or click here to open the browse dialog":"Placez vos fichiers ici ou cliquez ici pour ouvrir la boîte de dialogue de navigation","ra_Please allow popups in your browser for this page!":"Veuillez autoriser les popups dans votre navigateur pour cette page !","ra_Please confirm":"Veuillez confirmer","ra_Please create license":"Veuillez créer une licence","ra_Please enter the license":"Veuillez entrer la licence","ra_Please select file...":"Veuillez sélectionner le fichier...","ra_Please select object ID...":"Veuillez sélectionner l'ID d'objet ...","ra_Port could be used by %s":"Le port pourrait être utilisé par %s","ra_Port is already used by %s":"Le port est déjà utilisé par %s","ra_Press ENTER Key to add new item":"Appuyez sur la touche ENTRÉE pour ajouter un nouvel élément","ra_Private certificate":"Certificat privé",ra_Product:h$,"ra_Public certificate":"Certificat public","ra_Quality code":"Qualité","ra_Refresh tree":"Rafraîchir l'arborescence","ra_Reload files":"Recharger les fichiers",ra_Rename_Move_Copy:z$,"ra_Renew %s access":"Renouveler l'accès %s",ra_Repeat:w$,ra_Replace:I$,"ra_Request timed out":"La demande a expiré","ra_Restrict to folder":"Restreindre au dossier",ra_Root:C$,ra_Saturday:p$,ra_Save:A$,"ra_Save and close":"Sauver et fermer","ra_Save configuration to file":"Enregistrer la configuration dans un fichier","ra_Save objects tree as JSON file":"Enregistrer l'arborescence des objets en tant que fichier JSON","ra_Select all":"Tout sélectionner","ra_Select color":"Choisissez la couleur","ra_Select predefined icon":"Sélectionnez l'icône prédéfinie","ra_Select type of export":"Sélectionnez le type d'exportation",ra_Selected:m$,"ra_Selected %s object(s)":"Objet(s) %s sélectionné(s)","ra_Serial number (UUID)":"Numéro de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Le numéro de série (UUID) "%s" dans la licence est pour un autre appareil.',"ra_Session will expire in %s seconds. Continue?":"La session expirera dans %s secondes. Continuer ?","ra_Show all folders":"Afficher tous les dossiers","ra_Show lines between rows":"Afficher les lignes entre les lignes","ra_Show/Hide object descriptions":"Afficher/Masquer les descriptions d'objets","ra_Show/hide filter input":"Afficher/masquer l'entrée de filtre","ra_Some data are not stored. Discard?":"Certaines données ne sont pas stockées. Jeter?",ra_States:f$,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorisation réussie. Jeton valide jusqu'au %s et sera automatiquement renouvelé.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorisation réussie. Jeton valide jusqu'à %s, mais il peut expirer car l'instance n'est pas en cours d'exécution.","ra_Suitable license not found in license manager":"Licence appropriée introuvable dans le gestionnaire de licences",ra_Sunday:O$,"ra_Suppress question for next %s minutes":"Supprimer la question pour les %s prochaines minutes","ra_System language":"Langue du système","ra_Take browser position":"Prendre position depuis le navigateur","ra_Take position from system settings":"Prendre position à partir des paramètres système",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Les experts peuvent créer des objets partout mais à partir du deuxième niveau (par exemple "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"La page que vous recherchez n'a pas été trouvée","ra_The schedule will be executed every minute. Are you sure?":"Le planning sera exécuté toutes les minutes. Êtes-vous sûr ?","ra_The schedule will be executed every second. Are you sure?":"Le planning sera exécuté toutes les secondes. Êtes-vous sûr ?",ra_Thursday:E$,ra_Timestamp:_$,"ra_Toggle expert mode":"Basculer en mode expert","ra_Toggle the states view":"Basculer la vue des états","ra_Toggle view mode":"Basculer le mode d'affichage","ra_Too big":"Trop grand","ra_Too small":"Trop petit","ra_Transparent dialog":"Dialogue transparent",ra_Tuesday:x$,"ra_Unknown error":"Erreur inconnue","ra_Unknown error!":"Erreur inconnue!",ra_Update:S$,"ra_Upload file":"Téléverser un fichier","ra_Use all available let's encrypt certificates":"Utilisez tous les certificats let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utiliser l'adaptateur iobroker.acme pour les certificats Letsencrypt","ra_Use system settings for position":"Utiliser les paramètres système pour la position","ra_Used system settings":"Paramètres système utilisés","ra_User files":"Fichiers utilisateurs",ra_ValidTill:k$,ra_Value:v$,ra_Version:Y$,"ra_View file":"Voir la fiche","ra_View: %s":"Affichage : %s",ra_Wednesday:Q$,ra_Width:b$,"ra_YAML editor":"Éditeur YAML",ra_Yes:U$,"ra_You can export all objects or just the selected branch.":"Vous pouvez exporter tous les objets ou uniquement la branche sélectionnée.","ra_You can filter entries by entering here some text":"Vous pouvez filtrer les entrées en saisissant ici du texte","ra_You can use * as wildcard":"Vous pouvez utiliser * comme caractère générique",ra___different__:$$,ra_aclEveryone_read_object:P$,ra_aclEveryone_read_state:W$,ra_aclEveryone_write_object:J$,ra_aclEveryone_write_state:B$,ra_aclGroup_read_object:R$,ra_aclGroup_read_state:F$,ra_aclGroup_write_object:G$,ra_aclGroup_write_state:H$,ra_aclOwner_read_object:V$,ra_aclOwner_read_state:Z$,ra_aclOwner_write_object:X$,ra_aclOwner_write_state:K$,ra_buttons:q$,ra_changedFrom:eP,ra_close:tP,ra_create_boolean_state:sP,ra_create_channel:iP,ra_create_device:rP,ra_create_number_state:oP,ra_create_state:nP,ra_create_string_state:aP,ra_daysShortText:MP,ra_dow_Fr:cP,ra_dow_Mo:uP,ra_dow_Sa:lP,ra_dow_Su:NP,ra_dow_Th:LP,ra_dow_Tu:gP,ra_dow_We:jP,ra_expertMode:yP,ra_false:TP,ra_fileType_all:DP,ra_fileType_audio:dP,ra_fileType_code:hP,ra_fileType_images:zP,ra_fileType_txt:wP,ra_fileType_video:IP,"ra_fileType_video,":"Vidéo",ra_filter_customs:CP,ra_filter_customs_without:pP,ra_filter_func:AP,ra_filter_id:mP,ra_filter_name:fP,ra_filter_role:OP,ra_filter_room:EP,ra_filter_type:_P,"ra_import data from %s file":"Importer des données à partir du fichier %s",ra_invalidConfig:xP,ra_lastChange:SP,ra_locally:kP,ra_month_Apr:vP,ra_month_Aug:YP,ra_month_Dec:QP,ra_month_Feb:bP,ra_month_Jan:UP,ra_month_Jul:$P,ra_month_Jun:PP,ra_month_Mai:WP,ra_month_Mar:JP,ra_month_Nov:BP,ra_month_Oct:RP,ra_month_Sep:FP,ra_months_Apr:GP,ra_months_Aug:HP,ra_months_Dec:VP,ra_months_Feb:ZP,ra_months_Jan:XP,ra_months_Jul:KP,ra_months_Jun:qP,ra_months_Mai:eW,ra_months_Mar:tW,ra_months_Nov:sW,ra_months_Oct:iW,ra_months_Sep:rW,"ra_no confirm for 5 mins":"pas de confirmation pendant 5 minutes",ra_none:oW,ra_object_changed_by:nW,ra_object_changed_by_user:aW,ra_otherConfig:MW,ra_qualityCode:cW,ra_repeat:uW,ra_select_folder_hint:lW,ra_show_all:NW,ra_state_changed_by:LW,ra_state_changed_from:gW,ra_timestamp:jW,ra_tooltip_ack:yW,ra_tooltip_comment:TW,ra_tooltip_copyState:DW,ra_tooltip_ctrlForLink:dW,ra_tooltip_customConfig:hW,ra_tooltip_deleteObject:zW,ra_tooltip_editObject:wW,ra_tooltip_editState:IW,ra_tooltip_expire:CW,ra_tooltip_from:pW,ra_tooltip_lc:AW,ra_tooltip_quality:mW,ra_tooltip_ts:fW,ra_tooltip_user:OW,ra_tooltip_value:EW,ra_true:_W,"ra_use seconds":"utiliser les secondes",ra_val:xW,"ra_via internet":"par Internet",ra_warning_every_minute:SW,ra_warning_every_second:kW,sc_cron:vW,sc_date:YW,sc_dates:QW,sc_dow:bW,sc_dows:UW,sc_every:$W,sc_everyN_dates:PW,sc_everyN_dow:WW,sc_everyN_dows:JW,sc_everyN_hours:BW,sc_everyN_minutes:RW,sc_everyN_months:FW,sc_everyN_seconds:GW,sc_every_dates:HW,sc_every_dow:VW,sc_every_dows:ZW,sc_every_hours:XW,sc_every_minutes:KW,sc_every_months:qW,sc_every_seconds:eJ,sc_from:tJ,sc_hours:sJ,sc_interval:iJ,sc_intervalBetween:rJ,sc_invalid_cron:oJ,sc_minutes:nJ,sc_months:aJ,sc_once:MJ,sc_period:cJ,sc_seconds:uJ,sc_simple:lJ,sc_specific:NJ,sc_specific_dates:LJ,sc_specific_dow:gJ,sc_specific_dows:jJ,sc_specific_hours:yJ,sc_specific_minutes:TJ,sc_specific_months:DJ,sc_specific_seconds:dJ,sc_time:hJ,sc_to:zJ,sc_wizard:wJ,sch_all:IJ,sch_astroDay:CJ,sch_astroNight:pJ,sch_astro_dawn:AJ,sch_astro_dusk:mJ,sch_astro_goldenHour:fJ,sch_astro_goldenHourEnd:OJ,sch_astro_nadir:EJ,sch_astro_nauticalDawn:_J,sch_astro_nauticalDusk:xJ,sch_astro_night:SJ,sch_astro_nightEnd:kJ,sch_astro_solarNoon:vJ,sch_astro_sunrise:YJ,sch_astro_sunriseEnd:QJ,sch_astro_sunset:bJ,sch_astro_sunsetStart:UJ,sch_at:$J,sch_desc_atTime:PJ,sch_desc_everyDay:WJ,sch_desc_everyHour:JJ,sch_desc_everyMinute:BJ,sch_desc_everyMonth:RJ,sch_desc_everyNDay:FJ,sch_desc_everyNHours:GJ,sch_desc_everyNMinutes:HJ,sch_desc_everyNMonths:VJ,sch_desc_everyNWeeks:ZJ,sch_desc_everyNYears:XJ,sch_desc_everyWeek:KJ,sch_desc_everyYear:qJ,sch_desc_intervalFromTo:eB,sch_desc_never:tB,sch_desc_onDate:sB,sch_desc_onDates:iB,sch_desc_onEveryDate:rB,sch_desc_onMonth:oB,sch_desc_onMonths:nB,sch_desc_onWeekday:aB,sch_desc_onWeekdays:MB,sch_desc_onWeekends:cB,sch_desc_onWorkdays:uB,sch_desc_onceInPast:lB,sch_desc_once_on:NB,sch_desc_validFrom:LB,sch_desc_validFromTo:gB,sch_desc_validTo:jB,sch_every:yB,sch_exactTime:TB,sch_from:DB,sch_fromTo:dB,sch_intervalTime:hB,sch_invert:zB,sch_no_one:wB,sch_on:IB,sch_period:CB,sch_periodDaily:pB,sch_periodDates:AB,sch_periodDay:mB,sch_periodEvery:fB,sch_periodEveryDay:OB,sch_periodEveryMonth:EB,sch_periodEveryWeek:_B,sch_periodEveryYear:xB,sch_periodHours:SB,sch_periodMinutes:kB,sch_periodMonth:vB,sch_periodMonthly:YB,sch_periodOnce:QB,sch_periodSpecificMonths:bB,sch_periodWeek:UB,sch_periodWeekdays:$B,sch_periodWeekend:PB,sch_periodWeekly:WB,sch_periodWorkdays:JB,sch_periodYear:BB,sch_periodYearly:RB,sch_specificTime:FB,sch_time:GB,sch_to:HB,sch_valid:VB,sch_validFrom:ZB,sch_validTo:XB,sch_wholeDay:KB,sch_yearEveryMonth:qB},tR="Azioni",sR="Aggiungere",iR="Annulla",rR="Categorie",oR="Controllato",nR="Elimina",aR="Vicino",MR="Commerciale",cR="Configura",uR="Collegato",lR="Continuare",NR="Copiato",LR="Creare",gR="Raccolto",jR="Delete",yR="Elimina",TR="Scartare",DR="Disconnesso",dR="Errore",hR="Filtro",zR="Venerdì",wR="Latitudine",IR="Esci",CR="Longitudine",pR="Messaggio",AR="Lunedi",mR="Nome",fR="Oggetti",OR="Ok",ER="Prodotto",_R="Rinomina/Sposta/Copia",xR="Ripetere",SR="Sostituire",kR="Radice",vR="Sabato",YR="Salva",QR="Selezionato",bR="stati",UR="Domenica",$R="Giovedì",PR="Timestamp",WR="Martedì",JR="Aggiornare",BR="Valido fino a",RR="Valore",FR="Versione",GR="Mercoledì",HR="Larghezza",VR="SÌ",ZR="diverso",XR="Tutti possono leggere gli oggetti",KR="Tutti possono leggere lo stato",qR="Tutti possono scrivere oggetti",eF="Tutti possono scrivere stato",tF="Il gruppo può leggere l'oggetto",sF="Il gruppo può leggere lo stato",iF="Il gruppo può scrivere l'oggetto",rF="Il gruppo può scrivere lo stato",oF="Il proprietario può leggere l'oggetto",nF="Il proprietario può leggere lo stato",aF="Il proprietario può scrivere l'oggetto",MF="Il proprietario può scrivere lo stato",cF="Bottoni",uF="Cambiato da",lF="vicino",NF="Crea uno stato booleano",LF="Crea canale",gF="Crea dispositivo",jF="Crea lo stato del numero",yF="Crea stato",TF="Crea lo stato della stringa",DF="g.",dF="fr",hF="momento",zF="Sa",wF="su",IF="th",CF="Tu",pF="Noi",AF="Modalità esperto",mF="FALSO",fF="Tutti i files",OF="Audio",EF="Codice/JSON",_F="immagini",xF="Testo",SF="video",kF="impostazioni",vF="senza",YF="Funzione",QF="ID",bF="Nome",UF="Ruolo",$F="Camera",PF="genere",WF="Impostazioni non valide",JF="Ultima modifica",BF="localmente",RF="apr",FF="agosto",GF="Dic",HF="febbraio",VF="gen",ZF="lug",XF="giu",KF="Mai",qF="marzo",eG="nov",tG="ottobre",sG="Sett",iG="apr",rG="agosto",oG="Dic",nG="febbraio",aG="gen",MG="lug",cG="giu",uG="Mai",lG="marzo",NG="nov",LG="ottobre",gG="Sett",jG="nessuna",yG="Oggetto modificato da",TG="L'oggetto è stato modificato l'ultima volta alle",DG="Impostazioni dall'altro adattatore %s",dG="Codice di qualità",hG="ripetere",zG='Per selezionare la cartella, basta tenere premuto il tasto "shift" facendo clic sulla cartella.',wG="Mostra tutto",IG="Stato cambiato da",CG="Oggetto cambiato da",pG="Timestamp",AG="Bandiera riconosciuta",mG="Commento",fG="Copia il valore dello stato",OG="Tieni premuto il tasto Cltr/⌘ per aprire il collegamento",EG="Impostazioni personalizzate",_G="Elimina oggetto",xG="Modifica oggetto",SG="Modifica il valore dello stato",kG="Scade tra",vG="A partire dal",YG="Ultima modifica",QG="Qualità",bG="Data e ora",UG="Utente",$G="Valore",PG="VERO",WG="Valore",JG="Attenzione: il processo CRON verrà eseguito ogni minuto durante il periodo specificato!",BG="Attenzione: il processo CRON verrà eseguito ogni secondo durante il periodo specificato!",RG="CRON",FG="Data",GG="Date",HG="Giorno",VG="Giorno della settimana",ZG="Ogni",XG="ogni N giorni",KG="ogni Nesimo giorno della settimana",qG="ogni N giorno della settimana",eH="ogni N ore",tH="ogni N minuti",sH="ogni N mesi",iH="ogni N secondi",rH="ogni giorno",oH="Tutti i giorni della settimana",nH="Tutti i giorni della settimana",aH="ogni ora",MH="ogni minuto",cH="ogni mese",uH="ogni secondo",lH="A partire dal",NH="Ore",LH="Intervallo",gH="Intervallo tra",jH="CRON non valido",yH="Minuti",TH="mesi",DH="Una volta",dH="Periodo",hH="secondi",zH="Semplice",wH="Orario preciso",IH="date specifiche",CH="giorno/i specifico/i della settimana",pH="giorno specifico delle settimane",AH="orari specifici",mH="minuti specifici",fH="mesi specifici",OH="secondi specifici",EH="Tempo",_H="Per",xH="procedura guidata",SH="tutti",kH="Astro day",vH="Astro night",YH="Alba",QH="Crepuscolo",bH="Ora d'oro",UH="Fine dell'ora d'oro",$H="Nadir",PH="Alba nautica",WH="Crepuscolo nautico",JH="Notte",BH="Fine della notte",RH="Mezzogiorno solare",FH="Alba",GH="Fine dell'alba",HH="Tramonto",VH="Inizio del tramonto",ZH="a",XH="a %s",KH="ogni giorno",qH="ogni ora",eV="ogni minuto",tV="ogni mese",sV="ogni %s giorno",iV="ogni %s ore",rV="ogni %s minuti",oV="ogni %s mesi",nV="ogni %s settimane",aV="ogni %s anni",MV="ogni settimana",cV="ogni anno",uV="da %s a %s",lV="mai",NV="su %s di %s",LV="su %s e %s di",gV="in ogni data di",jV="%s",yV="%s e %s",TV="su %s",DV="su %s e %s",dV="nei finesettimana",hV="nei giorni lavorativi",zV="non verrà più eseguito, perché start è nel passato",wV="su %s",IV="da %s",CV="Eseguire da a",pV="a %s",AV="ogni",mV="Orario preciso",fV="a partire dal",OV="Da A",EV="Intervallo di tempo",_V="invertire",xV="nessuna",SV="sopra",kV="Periodo",vV="Quotidiano",YV="Date",QV="Giorno",bV="Ogni",UV="Ogni giorno",$V="Ogni mese",PV="Ogni settimana",WV="Ogni anno",JV="Ore",BV="Minuti",RV="mese",FV="Mensile",GV="Una volta",HV="Mesi specifici",VV="Settimana",ZV="Giorni della settimana",XV="Fine settimana",KV="settimanalmente",qV="giorni feriali",eZ="Anno",tZ="Annuale",sZ="Orario preciso",iZ="Tempo",rZ="per",oZ="Valido",nZ="a partire dal",aZ="per",MZ="Giorno intero",cZ="ogni mese",uZ={"ra_%s links from aliases":"%s link da alias","ra_%s object(s) processed":"%s oggetti elaborati","ra_%s was imported":"%s è stato importato","ra_Accept license":"Accetta licenza",ra_Actions:tR,"ra_Add new child object to selected parent":"Aggiungi un nuovo oggetto figlio al genitore selezionato","ra_Add objects tree from JSON file":"Aggiungi l'albero degli oggetti dal file JSON","ra_Add row":"Aggiungi riga","ra_Advanced options":"Opzioni avanzate","ra_All items are filtered out":"Tutti gli elementi vengono filtrati","ra_All objects":"Tutti gli oggetti",ra_Append:sR,"ra_Append %s entries or replace existing?":"Aggiungi %s voci o sostituisci quelle esistenti?","ra_Append or replace?":"Aggiungere o sostituire?","ra_Are you sure?":"Sei sicuro?","ra_Auto (no custom columns)":"Auto (nessuna colonna personalizzata)","ra_Back to %s":"Torna a %s","ra_Background image":"Immagine di sfondo",ra_Cancel:iR,"ra_Cannot add items with set filter":"Impossibile aggiungere elementi con il filtro impostato","ra_Cannot decode license":"Impossibile decodificare la licenza","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossibile determinare la posizione: le impostazioni di sistema sono vuote e il rilevamento GPS è disabilitato nel browser",'ra_Cannot find "%s"':'Impossibile trovare "%s"','ra_Cannot read "%s"':'Impossibile leggere "%s"',"ra_Cannot read licenses: %s":"Impossibile leggere le licenze: %s","ra_Cannot retrieve options, as instance is offline":"Impossibile recuperare le opzioni, poiché l'istanza è offline","ra_Cannot update attribute, because not found in the object":"Impossibile aggiornare l'attributo, perché non trovato nell'oggetto","ra_Cannot upload":"Impossibile caricare",ra_Categories:rR,"ra_Chained certificate":"Certificato incatenato","ra_Change color theme":"Cambia tema colore","ra_Changed from":"Cambiato da","ra_Channel → State":"Canale → Stato","ra_Check license":"Controlla la licenza",ra_Checked:oR,ra_Clear:nR,"ra_Clear filter":"Filtro pulito","ra_Clear icon":"Cancella icona","ra_Click to see in full size":"Clicca per visualizzare l'immagine a dimensioni intere","ra_Click to show":"Clicca per mostrare","ra_Clone current row":"Clona riga corrente",ra_Close:aR,"ra_Collapse all nodes":"Comprimi tutti i nodi","ra_Collapse one step node":"Comprimi un livello",ra_Commercial:MR,ra_Configure:cR,"ra_Configure visible columns":"Configura colonne visibili","ra_Confirm deletion of %s":"Conferma l'eliminazione di %s",ra_Connected:uR,ra_Continue:lR,ra_Copied:NR,"ra_Copied %s":'"%s" copiato',"ra_Copy content":"Copia contenuto",ra_Create:LR,"ra_Create alias":"Crea alias","ra_Create folder":"Creare una cartella","ra_Create new folder in %s":"Crea nuova cartella in %s",ra_Crop:gR,"ra_Define CRON...":"Definisci CRON...","ra_Define functions":"Definire le funzioni","ra_Define rooms":"Definisci le stanze","ra_Define schedule":"Definisci programma","ra_Define schedule...":"Definisci pianificazione ...",ra_Del:jR,ra_Delete:yR,"ra_Delete current row":"Elimina la riga corrente","ra_Deselect all":"Deseleziona tutto","ra_Device → Channel → State":"Dispositivo → Canale → Stato","ra_Disable/Enable translation":"Disabilita/Abilita la traduzione",ra_Discard:TR,ra_Disconnected:DR,"ra_Do not ask for next 2 hours in this session":"Non chiedere per le prossime 2 ore in questa sessione","ra_Do not export values of states":"Non esportare i valori degli stati","ra_Do not use let's encrypt":"Non utilizzare crittografiamo","ra_Docker is not available":"Docker non è disponibile","ra_Docker is not installed or not running":"Docker non è installato o non è in esecuzione","ra_Double click to reset table layout":"Fare doppio clic per ripristinare il layout della tabella","ra_Drag 'n' drop some files here, or click to select files":"Trascina e rilascia alcuni file qui o fai clic per selezionare i file","ra_Drop file here":"Trascina il file qui","ra_Drop the files here...":"Trascina qui il file...","ra_Duplicate name":"Nome duplicato","ra_Edit ACL":"Modifica ACL","ra_Edit alias":"Modifica alias","ra_Edit custom config":"Modifica configurazione personalizzata","ra_Edit full path":"Modifica percorso completo","ra_Edit function":"Funzione di modifica","ra_Edit object field":"Modifica campo oggetto","ra_Edit role":"Modifica ruolo","ra_Edit room":"Modifica stanza","ra_Edit value":"Modifica valore","ra_Enter the code from that page here":"Inserisci qui il codice da quella pagina",ra_Error:dR,"ra_Expand all nodes":"Espandi tutti i nodi","ra_Expand one step node":"Espandi un livello","ra_Expand/Collapse card":"Espandi/Comprimi scheda","ra_Export configuration section":"Sezione di configurazione dell'esportazione","ra_Export data to %s file":"Esporta i dati nel file %s","ra_Failed to open JSON File":"Impossibile aprire il file JSON","ra_Fallback custom certificates":"Certificati personalizzati di fallback","ra_File is too big. Max %sk allowed. Try use SVG.":"Il file è troppo grande. Max %sk consentito. Prova a usare SVG.",ra_Filter:hR,"ra_Filter and Data Actions":"Azioni sui filtri e sui dati","ra_Filter files":"Filtra i file","ra_Folder name":"Nome della cartella","ra_Folder → Channel → State":"Cartella → Canale → Stato","ra_Folder → Device → Channel → State":"Cartella → Dispositivo → Canale → Stato","ra_Folder → State":"Cartella → Stato","ra_Folders always first":"Le cartelle sono sempre al primo posto",ra_Friday:zR,"ra_From file":"Dal file","ra_From text":"Dal testo","ra_Get %s access":"Ottieni l'accesso %s","ra_Good luck":"Buona fortuna","ra_Hide empty folders":"Nascondi cartelle vuote","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nessun file verrà creato nella cartella, scomparirà dopo la chiusura del browser","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se il pulsante sopra non funziona, puoi autorizzare manualmente questa app visitando questo URL","ra_Import and add configuration section":"Importa e aggiungi la sezione di configurazione","ra_Import and replace configuration section":"Importa e sostituisci la sezione di configurazione","ra_Import data from %s file":"Importa i dati dal file %s","ra_Import from %s":"Importa da %s","ra_Instance %s is alive":"Il %s dell'istanza è vivo","ra_Instance %s is not alive":"Il TESTO dell'istanza non è vivo","ra_Instance is not alive":"L'istanza non è viva","ra_Invalid CRON":"CRON non valido","ra_Invalid JSON":"JSON non valido","ra_Invalid JSON file.":"File JSON non valido.","ra_Invalid JSON format. Expected an array.":"Formato JSON non valido. È previsto un array.","ra_Invalid answer from server":"Risposta non valida dal server","ra_Invalid parent folder!":"Cartella principale non valida!","ra_Invalid structure":"Struttura non valida","ra_JSON editor":"Editor JSON","ra_Last change":"Ultima modifica",ra_Latitude:wR,"ra_License %s":"Licenza %s","ra_License agreement":"Contratto di licenza","ra_License does not exist":"La licenza non esiste","ra_License expired on %s":"Licenza scaduta il %s",'ra_License for other product "%s"':'Licenza per altro prodotto "%s"',"ra_License is for version %s, but required version is %s.":"La licenza è per la versione %s, ma la versione richiesta è %s.","ra_License must be converted":"La licenza deve essere convertita in una versione più recente. Puoi farlo nel tuo profilo iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licenza non trovata nel gestore delle licenze. Vuoi aggiornare le licenze da iobroker.net?","ra_Listen on all IPs":"Ascolta su tutti gli IP","ra_Load configuration from file":"Carica la configurazione dal file",ra_Logout:IR,ra_Longitude:CR,'ra_May not trigger "updateLicenses"':'Potrebbe non attivare "updateLicenses"',ra_Message:pR,ra_Monday:AR,"ra_Move down":"Abbassati","ra_Move up":"Andare avanti",ra_Name:mR,"ra_No data found in file":"Nessun dato trovato nel file","ra_No one license found in license manager":"Nessuna licenza trovata nel gestore delle licenze","ra_No response from admin":"Nessuna risposta dall'amministratore","ra_No response from the backend":"Nessuna risposta dal backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'I non esperti possono creare nuovi oggetti solo in "0_userdata.0" o "alias.0".',"ra_Not a number":"Non un numero","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Segreto del client OAuth",ra_Objects:fR,ra_Ok:OR,"ra_On weekdays":"Nei giorni della settimana","ra_Only following structures of objects are available:":"Sono disponibili solo le seguenti strutture di oggetti:","ra_Only selected":"Solo selezionato","ra_Owner group":"Gruppo di proprietari","ra_Owner user":"Utente proprietario","ra_Passwords are not equal!":"Le password non sono uguali!","ra_Place your files here or click here to open the browse dialog":"Posiziona i file qui o fai clic qui per aprire la finestra di dialogo Sfoglia","ra_Please allow popups in your browser for this page!":"Si prega di abilitare i popup nel browser per questa pagina!","ra_Please confirm":"Si prega di confermare","ra_Please create license":"Si prega di creare la licenza","ra_Please enter the license":"Inserisci la licenza","ra_Please select file...":"Si prega di selezionare il file...","ra_Please select object ID...":"Seleziona l'ID oggetto ...","ra_Port could be used by %s":"La porta potrebbe essere utilizzata da %s","ra_Port is already used by %s":"La porta è già utilizzata da %s","ra_Press ENTER Key to add new item":"Premere il tasto INVIO per aggiungere un nuovo elemento","ra_Private certificate":"Certificato privato",ra_Product:ER,"ra_Public certificate":"Certificato pubblico","ra_Quality code":"Qualità","ra_Refresh tree":"Aggiorna l'albero","ra_Reload files":"Ricarica i file",ra_Rename_Move_Copy:_R,"ra_Renew %s access":"Rinnova l'accesso %s",ra_Repeat:xR,ra_Replace:SR,"ra_Request timed out":"Tempo scaduto per la richiesta","ra_Restrict to folder":"Limita alla cartella",ra_Root:kR,ra_Saturday:vR,ra_Save:YR,"ra_Save and close":"Salva e chiudi","ra_Save configuration to file":"Salva la configurazione su file","ra_Save objects tree as JSON file":"Salva l'albero degli oggetti come file JSON","ra_Select all":"Seleziona tutto","ra_Select color":"Seleziona il colore","ra_Select predefined icon":"Seleziona l'icona predefinita","ra_Select type of export":"Seleziona il tipo di esportazione",ra_Selected:QR,"ra_Selected %s object(s)":"%s oggetto/i selezionato/i","ra_Serial number (UUID)":"Numero di serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Il numero di serie (UUID) "%s" nella licenza è per un altro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sessione scadrà tra %s secondi. Continuare?","ra_Show all folders":"Mostra tutte le cartelle","ra_Show lines between rows":"Mostra linee tra le righe","ra_Show/Hide object descriptions":"Mostra/Nascondi le descrizioni degli oggetti","ra_Show/hide filter input":"Mostra/nascondi input filtro","ra_Some data are not stored. Discard?":"Alcuni dati non vengono memorizzati. Scartare?",ra_States:bR,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizzazione completata. Il token è valido fino al %s e verrà rinnovato automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizzazione completata. Il token è valido fino al %s, ma potrebbe scadere perché l'istanza non è in esecuzione.","ra_Suitable license not found in license manager":"Licenza adatta non trovata nel gestore delle licenze",ra_Sunday:UR,"ra_Suppress question for next %s minutes":"Sopprimi la domanda per i prossimi %s minuti","ra_System language":"Linguaggio di sistema","ra_Take browser position":"Prendi posizione dal browser","ra_Take position from system settings":"Prendi posizione dalle impostazioni di sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Gli esperti possono creare oggetti ovunque ma dal secondo livello (es. "Vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"La pagina che stai cercando non è stata trovata","ra_The schedule will be executed every minute. Are you sure?":"La pianificazione verrà eseguita ogni minuto. Sei sicuro?","ra_The schedule will be executed every second. Are you sure?":"La pianificazione verrà eseguita ogni secondo. Sei sicuro?",ra_Thursday:$R,ra_Timestamp:PR,"ra_Toggle expert mode":"Attiva / disattiva la modalità esperto","ra_Toggle the states view":"Attiva o disattiva la visualizzazione degli stati","ra_Toggle view mode":"Attiva / disattiva la modalità di visualizzazione","ra_Too big":"Troppo grande","ra_Too small":"Troppo piccolo","ra_Transparent dialog":"Finestra di dialogo trasparente",ra_Tuesday:WR,"ra_Unknown error":"Errore sconosciuto","ra_Unknown error!":"Errore sconosciuto!",ra_Update:JR,"ra_Upload file":"Caricare un file","ra_Use all available let's encrypt certificates":"Usa tutti i certificati Let's Encrypt disponibili","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utilizzare l'adattatore iobroker.acme per i certificati letsencrypt","ra_Use system settings for position":"Usa le impostazioni di sistema per la posizione","ra_Used system settings":"Impostazioni di sistema utilizzate","ra_User files":"File utente",ra_ValidTill:BR,ra_Value:RR,ra_Version:FR,"ra_View file":"Vedi il file","ra_View: %s":"Visualizza: %s",ra_Wednesday:GR,ra_Width:HR,"ra_YAML editor":"Editor YAML",ra_Yes:VR,"ra_You can export all objects or just the selected branch.":"Puoi esportare tutti gli oggetti o solo il ramo selezionato.","ra_You can filter entries by entering here some text":"Puoi filtrare le voci inserendo qui del testo","ra_You can use * as wildcard":"Puoi usare * come carattere jolly",ra___different__:ZR,ra_aclEveryone_read_object:XR,ra_aclEveryone_read_state:KR,ra_aclEveryone_write_object:qR,ra_aclEveryone_write_state:eF,ra_aclGroup_read_object:tF,ra_aclGroup_read_state:sF,ra_aclGroup_write_object:iF,ra_aclGroup_write_state:rF,ra_aclOwner_read_object:oF,ra_aclOwner_read_state:nF,ra_aclOwner_write_object:aF,ra_aclOwner_write_state:MF,ra_buttons:cF,ra_changedFrom:uF,ra_close:lF,ra_create_boolean_state:NF,ra_create_channel:LF,ra_create_device:gF,ra_create_number_state:jF,ra_create_state:yF,ra_create_string_state:TF,ra_daysShortText:DF,ra_dow_Fr:dF,ra_dow_Mo:hF,ra_dow_Sa:zF,ra_dow_Su:wF,ra_dow_Th:IF,ra_dow_Tu:CF,ra_dow_We:pF,ra_expertMode:AF,ra_false:mF,ra_fileType_all:fF,ra_fileType_audio:OF,ra_fileType_code:EF,ra_fileType_images:_F,ra_fileType_txt:xF,ra_fileType_video:SF,"ra_fileType_video,":"video",ra_filter_customs:kF,ra_filter_customs_without:vF,ra_filter_func:YF,ra_filter_id:QF,ra_filter_name:bF,ra_filter_role:UF,ra_filter_room:$F,ra_filter_type:PF,"ra_import data from %s file":"Importa dati dal file %s",ra_invalidConfig:WF,ra_lastChange:JF,ra_locally:BF,ra_month_Apr:RF,ra_month_Aug:FF,ra_month_Dec:GF,ra_month_Feb:HF,ra_month_Jan:VF,ra_month_Jul:ZF,ra_month_Jun:XF,ra_month_Mai:KF,ra_month_Mar:qF,ra_month_Nov:eG,ra_month_Oct:tG,ra_month_Sep:sG,ra_months_Apr:iG,ra_months_Aug:rG,ra_months_Dec:oG,ra_months_Feb:nG,ra_months_Jan:aG,ra_months_Jul:MG,ra_months_Jun:cG,ra_months_Mai:uG,ra_months_Mar:lG,ra_months_Nov:NG,ra_months_Oct:LG,ra_months_Sep:gG,"ra_no confirm for 5 mins":"nessuna conferma per 5 minuti",ra_none:jG,ra_object_changed_by:yG,ra_object_changed_by_user:TG,ra_otherConfig:DG,ra_qualityCode:dG,ra_repeat:hG,ra_select_folder_hint:zG,ra_show_all:wG,ra_state_changed_by:IG,ra_state_changed_from:CG,ra_timestamp:pG,ra_tooltip_ack:AG,ra_tooltip_comment:mG,ra_tooltip_copyState:fG,ra_tooltip_ctrlForLink:OG,ra_tooltip_customConfig:EG,ra_tooltip_deleteObject:_G,ra_tooltip_editObject:xG,ra_tooltip_editState:SG,ra_tooltip_expire:kG,ra_tooltip_from:vG,ra_tooltip_lc:YG,ra_tooltip_quality:QG,ra_tooltip_ts:bG,ra_tooltip_user:UG,ra_tooltip_value:$G,ra_true:PG,"ra_use seconds":"usa i secondi",ra_val:WG,"ra_via internet":"attraverso internet",ra_warning_every_minute:JG,ra_warning_every_second:BG,sc_cron:RG,sc_date:FG,sc_dates:GG,sc_dow:HG,sc_dows:VG,sc_every:ZG,sc_everyN_dates:XG,sc_everyN_dow:KG,sc_everyN_dows:qG,sc_everyN_hours:eH,sc_everyN_minutes:tH,sc_everyN_months:sH,sc_everyN_seconds:iH,sc_every_dates:rH,sc_every_dow:oH,sc_every_dows:nH,sc_every_hours:aH,sc_every_minutes:MH,sc_every_months:cH,sc_every_seconds:uH,sc_from:lH,sc_hours:NH,sc_interval:LH,sc_intervalBetween:gH,sc_invalid_cron:jH,sc_minutes:yH,sc_months:TH,sc_once:DH,sc_period:dH,sc_seconds:hH,sc_simple:zH,sc_specific:wH,sc_specific_dates:IH,sc_specific_dow:CH,sc_specific_dows:pH,sc_specific_hours:AH,sc_specific_minutes:mH,sc_specific_months:fH,sc_specific_seconds:OH,sc_time:EH,sc_to:_H,sc_wizard:xH,sch_all:SH,sch_astroDay:kH,sch_astroNight:vH,sch_astro_dawn:YH,sch_astro_dusk:QH,sch_astro_goldenHour:bH,sch_astro_goldenHourEnd:UH,sch_astro_nadir:$H,sch_astro_nauticalDawn:PH,sch_astro_nauticalDusk:WH,sch_astro_night:JH,sch_astro_nightEnd:BH,sch_astro_solarNoon:RH,sch_astro_sunrise:FH,sch_astro_sunriseEnd:GH,sch_astro_sunset:HH,sch_astro_sunsetStart:VH,sch_at:ZH,sch_desc_atTime:XH,sch_desc_everyDay:KH,sch_desc_everyHour:qH,sch_desc_everyMinute:eV,sch_desc_everyMonth:tV,sch_desc_everyNDay:sV,sch_desc_everyNHours:iV,sch_desc_everyNMinutes:rV,sch_desc_everyNMonths:oV,sch_desc_everyNWeeks:nV,sch_desc_everyNYears:aV,sch_desc_everyWeek:MV,sch_desc_everyYear:cV,sch_desc_intervalFromTo:uV,sch_desc_never:lV,sch_desc_onDate:NV,sch_desc_onDates:LV,sch_desc_onEveryDate:gV,sch_desc_onMonth:jV,sch_desc_onMonths:yV,sch_desc_onWeekday:TV,sch_desc_onWeekdays:DV,sch_desc_onWeekends:dV,sch_desc_onWorkdays:hV,sch_desc_onceInPast:zV,sch_desc_once_on:wV,sch_desc_validFrom:IV,sch_desc_validFromTo:CV,sch_desc_validTo:pV,sch_every:AV,sch_exactTime:mV,sch_from:fV,sch_fromTo:OV,sch_intervalTime:EV,sch_invert:_V,sch_no_one:xV,sch_on:SV,sch_period:kV,sch_periodDaily:vV,sch_periodDates:YV,sch_periodDay:QV,sch_periodEvery:bV,sch_periodEveryDay:UV,sch_periodEveryMonth:$V,sch_periodEveryWeek:PV,sch_periodEveryYear:WV,sch_periodHours:JV,sch_periodMinutes:BV,sch_periodMonth:RV,sch_periodMonthly:FV,sch_periodOnce:GV,sch_periodSpecificMonths:HV,sch_periodWeek:VV,sch_periodWeekdays:ZV,sch_periodWeekend:XV,sch_periodWeekly:KV,sch_periodWorkdays:qV,sch_periodYear:eZ,sch_periodYearly:tZ,sch_specificTime:sZ,sch_time:iZ,sch_to:rZ,sch_valid:oZ,sch_validFrom:nZ,sch_validTo:aZ,sch_wholeDay:MZ,sch_yearEveryMonth:cZ},lZ="Comportamiento",NZ="Adjuntar",LZ="Cancelar",gZ="Categorías",jZ="Comprobado",yZ="Borrar",TZ="Cerca",DZ="Comercial",dZ="Configurar",hZ="Conectado",zZ="Continuar",wZ="Copiado",IZ="Crear",CZ="Cultivo",pZ="Delete",AZ="Eliminar",mZ="Desechar",fZ="Desconectado",OZ="Error",EZ="Filtrar",_Z="Viernes",xZ="Latitud",SZ="Cerrar sesión",kZ="Longitud",vZ="Mensaje",YZ="Lunes",QZ="Nombre",bZ="Objetos",UZ="Okay",$Z="Producto",PZ="Cambiar nombre/Mover/Copiar",WZ="Repetir",JZ="Reemplazar",BZ="Raíz",RZ="Sábado",FZ="Salvar",GZ="Seleccionado",HZ="Estados",VZ="Domingo",ZZ="Jueves",XZ="Marca de tiempo",KZ="Martes",qZ="Actualizar",eX="Válida hasta",tX="Valor",sX="Versión",iX="Miércoles",rX="Anchura",oX="Sí",nX="diferente",aX="Todo el mundo puede leer el objeto",MX="Todos pueden leer el estado",cX="Todos pueden escribir objetos",uX="Todos pueden escribir el estado",lX="El grupo puede leer el objeto",NX="El grupo puede leer el estado",LX="El grupo puede escribir un objeto",gX="El grupo puede escribir el estado",jX="El propietario puede leer el objeto",yX="El propietario puede leer el estado",TX="El propietario puede escribir el objeto",DX="El propietario puede escribir el estado",dX="Botones",hX="Cambiaron desde",zX="cerrar",wX="Crear estado booleano",IX="Crear canal",CX="Crear dispositivo",pX="Crear estado numérico",AX="Crear estado",mX="Crear estado de cadena",fX="d.",OX="Fr",EX="Mes",_X="Sa",xX="Su",SX="Th",kX="Tu",vX="Nosotros",YX="Modo experto",QX="FALSO",bX="Todos los archivos",UX="Audio",$X="Código/JSON",PX="Imágenes",WX="Texto",JX="Video",BX="Configuraciones",RX="sin",FX="Función",GX="ID",HX="Nombre",VX="Papel",ZX="Habitación",XX="Tipo",KX="Configuraciones inválidas",qX="Ultimo cambio",eK="en la zona",tK="Abr",sK="Ago",iK="Dic",rK="Feb",oK="Ene",nK="Jul",aK="Jun",MK="Mai",cK="Mar",uK="Nov",lK="Oct",NK="Sep",LK="Abr",gK="Ago",jK="Dic",yK="Feb",TK="Ene",DK="Jul",dK="Jun",hK="Mai",zK="Mar",wK="Nov",IK="Oct",CK="Sep",pK="ninguno",AK="Objeto cambiado por",mK="Objeto cambiado por última vez a las",fK="Configuraciones de otro adaptador %s",OK="Código de calidad",EK="repetir",_K='Para seleccionar la carpeta, simplemente mantenga presionada la tecla "shift" haciendo clic en la carpeta.',xK="Mostrar todo",SK="Estado cambiado por",kK="Objeto cambiado de",vK="Marca de tiempo",YK="Bandera reconocida",QK="Comentario",bK="Copie el valor del estado",UK="Mantenga presionada la tecla Cltr/⌘ para abrir el enlace",$K="Ajustes personalizados",PK="Eliminar objeto",WK="Editar objeto",JK="Edite el valor del estado",BK="Caduca en",RK="Desde",FK="Último cambio",GK="Calidad",HK="Sello de tiempo",VK="Usuario",ZK="Valor",XK="VERDADERO",KK="Valor",qK="Advertencia: ¡El trabajo CRON se ejecutará cada minuto durante el período especificado!",eq="Advertencia: ¡El trabajo CRON se ejecutará cada segundo durante el período especificado!",tq="CRON",sq="Fecha",iq="fechas",rq="Día",oq="Día de la semana",nq="Cada",aq="cada N días",Mq="cada enésimo día de la semana",cq="cada N día de la semana",uq="cada N horas",lq="cada N minutos",Nq="cada N meses",Lq="cada N segundos",gq="cada día",jq="Cada día de la semana",yq="Cada día de la semana",Tq="cada hora",Dq="cada minuto",dq="cada mes",hq="cada segundo",zq="De",wq="Horas",Iq="Intervalo",Cq="Intervalo entre",pq="CRON no válido",Aq="Minutos",mq="meses",fq="Una vez",Oq="Período",Eq="Segundos",_q="Sencillo",xq="Tiempo específico",Sq="fechas especificas",kq="día(s) específico(s) de la semana",vq="día específico de semanas",Yq="horas específicas",Qq="minutos específicos",bq="meses específicos",Uq="segundos específicos",$q="Hora",Pq="A",Wq="Mago",Jq="todas",Bq="Día astro",Rq="Noche astro",Fq="Amanecer",Gq="Oscuridad",Hq="hora dorada",Vq="Fin de la hora dorada",Zq="Nadir",Xq="Amanecer náutico",Kq="Anochecer náutico",qq="Noche",eee="Fin de la noche",tee="Mediodía solar",see="amanecer",iee="Fin del amanecer",ree="Puesta de sol",oee="Puesta de sol",nee="a",aee="en %s",Mee="cada día",cee="cada hora",uee="cada minuto",lee="cada mes",Nee="cada %s días",Lee="cada %s horas",gee="cada %s minutos",jee="cada %s meses",yee="cada %s semanas",Tee="cada %s años",Dee="cada semana",dee="todos los años",hee="de %s a %s",zee="Nunca",wee="en %s de %s",Iee="en %s y %s de",Cee="en cada fecha de",pee="%s",Aee="%s y %s",mee="en %s",fee="en %s y %s",Oee="en los fines de semana",Eee="en días laborables",_ee="ya no se ejecutará más, porque el inicio está en el pasado",xee="en %s",See="de %s",kee="Ejecutar desde hasta",vee="a %s",Yee="cada",Qee="Tiempo específico",bee="de",Uee="De-a",$ee="Tiempo de intervalo",Pee="invertir; poner boca abajo o en la posición opuesta, orden o arreglo; Boca abajo",Wee="ninguna",Jee="en",Bee="Período",Ree="Diario",Fee="fechas",Gee="Día",Hee="Cada",Vee="Cada día",Zee="Cada mes",Xee="Cada semana",Kee="Todos los años",qee="Horas",ete="Minutos",tte="mes",ste="Mensual",ite="Una vez",rte="Meses específicos",ote="Semana",nte="Días laborables",ate="Fin de semana",Mte="Semanal",cte="Días laborables",ute="Año",lte="Anual",Nte="Tiempo específico",Lte="Hora",gte="a",jte="Válido",yte="de",Tte="a",Dte="Todo el dia",dte="cada mes",hte={"ra_%s links from aliases":"%s enlaces de alias","ra_%s object(s) processed":"%s objeto(s) procesados","ra_%s was imported":"%s fue importado","ra_Accept license":"Aceptar licencia",ra_Actions:lZ,"ra_Add new child object to selected parent":"Agregar nuevo objeto hijo al padre seleccionado","ra_Add objects tree from JSON file":"Agregar árbol de objetos desde el archivo JSON","ra_Add row":"Añadir fila","ra_Advanced options":"Opciones avanzadas","ra_All items are filtered out":"Todos los elementos se filtran","ra_All objects":"Todos los objetos",ra_Append:NZ,"ra_Append %s entries or replace existing?":"¿Agregar %s entradas o reemplazar las existentes?","ra_Append or replace?":"¿Agregar o reemplazar?","ra_Are you sure?":"¿Estás seguro?","ra_Auto (no custom columns)":"Automático (sin columnas personalizadas)","ra_Back to %s":"Volver a %s","ra_Background image":"Imagen de fondo",ra_Cancel:LZ,"ra_Cannot add items with set filter":"No se pueden agregar elementos con el filtro establecido","ra_Cannot decode license":"No se puede decodificar la licencia","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"No se puede determinar la posición: la configuración del sistema está vacía y la detección de GPS está deshabilitada en el navegador",'ra_Cannot find "%s"':'No se puede encontrar "%s"','ra_Cannot read "%s"':'No se puede leer "%s"',"ra_Cannot read licenses: %s":"No se pueden leer licencias: %s","ra_Cannot retrieve options, as instance is offline":"No se pueden recuperar las opciones, ya que la instancia está fuera de línea","ra_Cannot update attribute, because not found in the object":"No se puede actualizar el atributo porque no se encuentra en el objeto","ra_Cannot upload":"no se puede cargar",ra_Categories:gZ,"ra_Chained certificate":"certificado encadenado","ra_Change color theme":"Cambiar tema de color","ra_Changed from":"Cambiaron desde","ra_Channel → State":"Canal → Estado","ra_Check license":"Verificar licencia",ra_Checked:jZ,ra_Clear:yZ,"ra_Clear filter":"Filtro claro","ra_Clear icon":"Icono claro","ra_Click to see in full size":"Haz clic para ver en tamaño completo.","ra_Click to show":"Haga clic para mostrar","ra_Clone current row":"Clonar fila actual",ra_Close:TZ,"ra_Collapse all nodes":"Contraer todos los nodos","ra_Collapse one step node":"Contraer un nivel",ra_Commercial:DZ,ra_Configure:dZ,"ra_Configure visible columns":"Configurar columnas visibles","ra_Confirm deletion of %s":"Confirmar la eliminación de %s",ra_Connected:hZ,ra_Continue:zZ,ra_Copied:wZ,"ra_Copied %s":'Copiado "%s"',"ra_Copy content":"Copiar contenido",ra_Create:IZ,"ra_Create alias":"Crear alias","ra_Create folder":"Crear carpeta","ra_Create new folder in %s":"Crear nueva carpeta en %s",ra_Crop:CZ,"ra_Define CRON...":"Definir CRON...","ra_Define functions":"Definir funciones","ra_Define rooms":"Definir habitaciones","ra_Define schedule":"Definir horario","ra_Define schedule...":"Definir horario ...",ra_Del:pZ,ra_Delete:AZ,"ra_Delete current row":"Eliminar fila actual","ra_Deselect all":"Deselecciona todo","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Deshabilitar/Habilitar traducción",ra_Discard:mZ,ra_Disconnected:fZ,"ra_Do not ask for next 2 hours in this session":"No preguntes por las siguientes 2 horas en esta sesión.","ra_Do not export values of states":"No exportar valores de estados.","ra_Do not use let's encrypt":"No use vamos a cifrar","ra_Docker is not available":"Docker no está disponible","ra_Docker is not installed or not running":"Docker no está instalado o no se está ejecutando","ra_Double click to reset table layout":"Haga doble clic para restablecer el diseño de la tabla","ra_Drag 'n' drop some files here, or click to select files":"Arrastre y suelte algunos archivos aquí, o haga clic para seleccionar archivos","ra_Drop file here":"Suelta el archivo aquí","ra_Drop the files here...":"Suelta el archivo aquí ...","ra_Duplicate name":"Nombre duplicado","ra_Edit ACL":"Editar LCA","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuración personalizada","ra_Edit full path":"Editar ruta completa","ra_Edit function":"Función de edición","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar rol","ra_Edit room":"Cuarto de edición","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Introduzca el código de esa página aquí",ra_Error:OZ,"ra_Expand all nodes":"Expandir todos los nodos","ra_Expand one step node":"Expandir un nivel","ra_Expand/Collapse card":"Expandir/Contraer tarjeta","ra_Export configuration section":"Exportar sección de configuración","ra_Export data to %s file":"Exportar datos al archivo %s","ra_Failed to open JSON File":"No se pudo abrir el archivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"El archivo es demasiado grande. Máximo de %sk permitido. Intenta usar SVG.",ra_Filter:EZ,"ra_Filter and Data Actions":"Acciones de filtrado y datos","ra_Filter files":"Filtrar archivos","ra_Folder name":"Nombre de la carpeta","ra_Folder → Channel → State":"Carpeta → Canal → Estado","ra_Folder → Device → Channel → State":"Carpeta → Dispositivo → Canal → Estado","ra_Folder → State":"Carpeta → Estado","ra_Folders always first":"Carpetas siempre primero",ra_Friday:_Z,"ra_From file":"Desde archivo","ra_From text":"Del texto","ra_Get %s access":"Obtener %s acceso","ra_Good luck":"Buena suerte","ra_Hide empty folders":"Ocultar carpetas vacías","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si no se creará ningún archivo en la carpeta, desaparecerá después de que se cierre el navegador.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si el botón de arriba no funciona, puedes autorizar manualmente esta aplicación visitando esta URL","ra_Import and add configuration section":"Importar y agregar sección de configuración","ra_Import and replace configuration section":"Importar y reemplazar sección de configuración","ra_Import data from %s file":"Importar datos del archivo %s","ra_Import from %s":"Importar desde %s","ra_Instance %s is alive":"Instancia %s está vivo","ra_Instance %s is not alive":"Instancia %s no está vivo","ra_Instance is not alive":"La instancia no está viva","ra_Invalid CRON":"CRON no válido","ra_Invalid JSON":"JSON no válido","ra_Invalid JSON file.":"Archivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Se esperaba un array.","ra_Invalid answer from server":"Respuesta inválida del servidor","ra_Invalid parent folder!":"Carpeta principal no válida.","ra_Invalid structure":"Estructura inválida","ra_JSON editor":"editor JSON","ra_Last change":"Ultimo cambio",ra_Latitude:xZ,"ra_License %s":"Licencia %s","ra_License agreement":"Acuerdo de licencia","ra_License does not exist":"La licencia no existe","ra_License expired on %s":"La licencia venció el %s",'ra_License for other product "%s"':'Licencia para otro producto "%s"',"ra_License is for version %s, but required version is %s.":"La licencia es para la versión %s, pero la versión requerida es %s.","ra_License must be converted":"La licencia debe convertirse a una versión más reciente. Puedes hacerlo en tu perfil de iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licencia no encontrada en el administrador de licencias. ¿Quieres actualizar las licencias de iobroker.net?","ra_Listen on all IPs":"Escuche en todas las IP","ra_Load configuration from file":"Cargar configuración desde archivo",ra_Logout:SZ,ra_Longitude:kZ,'ra_May not trigger "updateLicenses"':'No puede activar "updateLicenses"',ra_Message:vZ,ra_Monday:YZ,"ra_Move down":"Mover hacia abajo","ra_Move up":"Ascender",ra_Name:QZ,"ra_No data found in file":"No se encontraron datos en el archivo","ra_No one license found in license manager":"No se encontró ninguna licencia en el administrador de licencias","ra_No response from admin":"No hay respuesta del administrador","ra_No response from the backend":"No hay respuesta del backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Los no expertos pueden crear nuevos objetos solo en "0_userdata.0" o "alias.0".',"ra_Not a number":"No un número","ra_OAuth Client ID":"ID de cliente OAuth","ra_OAuth Client secret":"Secreto de cliente OAuth",ra_Objects:bZ,ra_Ok:UZ,"ra_On weekdays":"De lunes a viernes","ra_Only following structures of objects are available:":"Solo están disponibles las siguientes estructuras de objetos:","ra_Only selected":"Solo seleccionados","ra_Owner group":"Grupo propietario","ra_Owner user":"Usuario propietario","ra_Passwords are not equal!":"¡Las contraseñas no son iguales!","ra_Place your files here or click here to open the browse dialog":"Coloque sus archivos aquí o haga clic aquí para abrir el cuadro de diálogo de exploración","ra_Please allow popups in your browser for this page!":"¡Permita ventanas emergentes en su navegador para esta página!","ra_Please confirm":"Por favor confirmar","ra_Please create license":"Por favor cree una licencia","ra_Please enter the license":"Por favor ingrese la licencia","ra_Please select file...":"Seleccione el archivo...","ra_Please select object ID...":"Por favor seleccione ID de objeto ...","ra_Port could be used by %s":"El puerto podría ser utilizado por %s","ra_Port is already used by %s":"El puerto ya está en uso por %s","ra_Press ENTER Key to add new item":"Presione la tecla ENTER para agregar un nuevo elemento","ra_Private certificate":"certificado privado",ra_Product:$Z,"ra_Public certificate":"Certificado público","ra_Quality code":"Calidad","ra_Refresh tree":"Actualizar árbol","ra_Reload files":"Recargar archivos",ra_Rename_Move_Copy:PZ,"ra_Renew %s access":"Renovar el acceso a %s",ra_Repeat:WZ,ra_Replace:JZ,"ra_Request timed out":"Tiempo de espera agotado","ra_Restrict to folder":"Restringir a carpeta",ra_Root:BZ,ra_Saturday:RZ,ra_Save:FZ,"ra_Save and close":"Guardar y cerrar","ra_Save configuration to file":"Guardar configuración en archivo","ra_Save objects tree as JSON file":"Guardar el árbol de objetos como archivo JSON","ra_Select all":"Seleccionar todo","ra_Select color":"Seleccionar el color","ra_Select predefined icon":"Seleccionar icono predefinido","ra_Select type of export":"Seleccione tipo de exportación",ra_Selected:GZ,"ra_Selected %s object(s)":"%s objetos seleccionados","ra_Serial number (UUID)":"Número de serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'El número de serie (UUID) "%s" en la licencia es para otro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sesión expirará en %s segundos. ¿Continuar?","ra_Show all folders":"Mostrar todas las carpetas","ra_Show lines between rows":"Mostrar líneas entre filas","ra_Show/Hide object descriptions":"Mostrar/ocultar descripciones de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Algunos datos no se almacenan. ¿Desechar?",ra_States:HZ,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado correctamente. El token es válido hasta el %s y se renovará automáticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado correctamente. El token es válido hasta %s, pero puede caducar porque la instancia no está en ejecución.","ra_Suitable license not found in license manager":"Licencia adecuada no encontrada en el administrador de licencias",ra_Sunday:VZ,"ra_Suppress question for next %s minutes":"Suprimir pregunta durante los próximos %s minutos","ra_System language":"Lenguaje del sistema","ra_Take browser position":"Tomar posición desde el navegador","ra_Take position from system settings":"Tomar posición desde la configuración del sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Los expertos pueden crear objetos en todas partes excepto desde el segundo nivel (por ejemplo, "vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"No se encontró la página que busca","ra_The schedule will be executed every minute. Are you sure?":"El cronograma se ejecutará cada minuto. ¿Estás seguro?","ra_The schedule will be executed every second. Are you sure?":"El cronograma se ejecutará cada segundo. ¿Estás seguro?",ra_Thursday:ZZ,ra_Timestamp:XZ,"ra_Toggle expert mode":"Alternar modo experto","ra_Toggle the states view":"Alternar la vista de estados","ra_Toggle view mode":"Alternar modo de vista","ra_Too big":"Demasiado grande","ra_Too small":"Demasiado pequeña","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:KZ,"ra_Unknown error":"Error desconocido","ra_Unknown error!":"¡Error desconocido!",ra_Update:qZ,"ra_Upload file":"Subir archivo","ra_Use all available let's encrypt certificates":"Utilice todos los certificados let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use el adaptador iobroker.acme para los certificados de letsencrypt","ra_Use system settings for position":"Usar la configuración del sistema para la posición","ra_Used system settings":"Configuraciones del sistema usadas","ra_User files":"Archivos de usuario",ra_ValidTill:eX,ra_Value:tX,ra_Version:sX,"ra_View file":"Ver archivo","ra_View: %s":"Ver: %s",ra_Wednesday:iX,ra_Width:rX,"ra_YAML editor":"Editor YAML",ra_Yes:oX,"ra_You can export all objects or just the selected branch.":"Puede exportar todos los objetos o solo la rama seleccionada.","ra_You can filter entries by entering here some text":"Puede filtrar las entradas ingresando aquí algún texto","ra_You can use * as wildcard":"Puedes utilizar * como comodín",ra___different__:nX,ra_aclEveryone_read_object:aX,ra_aclEveryone_read_state:MX,ra_aclEveryone_write_object:cX,ra_aclEveryone_write_state:uX,ra_aclGroup_read_object:lX,ra_aclGroup_read_state:NX,ra_aclGroup_write_object:LX,ra_aclGroup_write_state:gX,ra_aclOwner_read_object:jX,ra_aclOwner_read_state:yX,ra_aclOwner_write_object:TX,ra_aclOwner_write_state:DX,ra_buttons:dX,ra_changedFrom:hX,ra_close:zX,ra_create_boolean_state:wX,ra_create_channel:IX,ra_create_device:CX,ra_create_number_state:pX,ra_create_state:AX,ra_create_string_state:mX,ra_daysShortText:fX,ra_dow_Fr:OX,ra_dow_Mo:EX,ra_dow_Sa:_X,ra_dow_Su:xX,ra_dow_Th:SX,ra_dow_Tu:kX,ra_dow_We:vX,ra_expertMode:YX,ra_false:QX,ra_fileType_all:bX,ra_fileType_audio:UX,ra_fileType_code:$X,ra_fileType_images:PX,ra_fileType_txt:WX,ra_fileType_video:JX,"ra_fileType_video,":"Video",ra_filter_customs:BX,ra_filter_customs_without:RX,ra_filter_func:FX,ra_filter_id:GX,ra_filter_name:HX,ra_filter_role:VX,ra_filter_room:ZX,ra_filter_type:XX,"ra_import data from %s file":"Importar datos del archivo %s",ra_invalidConfig:KX,ra_lastChange:qX,ra_locally:eK,ra_month_Apr:tK,ra_month_Aug:sK,ra_month_Dec:iK,ra_month_Feb:rK,ra_month_Jan:oK,ra_month_Jul:nK,ra_month_Jun:aK,ra_month_Mai:MK,ra_month_Mar:cK,ra_month_Nov:uK,ra_month_Oct:lK,ra_month_Sep:NK,ra_months_Apr:LK,ra_months_Aug:gK,ra_months_Dec:jK,ra_months_Feb:yK,ra_months_Jan:TK,ra_months_Jul:DK,ra_months_Jun:dK,ra_months_Mai:hK,ra_months_Mar:zK,ra_months_Nov:wK,ra_months_Oct:IK,ra_months_Sep:CK,"ra_no confirm for 5 mins":"Sin confirmación durante 5 minutos",ra_none:pK,ra_object_changed_by:AK,ra_object_changed_by_user:mK,ra_otherConfig:fK,ra_qualityCode:OK,ra_repeat:EK,ra_select_folder_hint:_K,ra_show_all:xK,ra_state_changed_by:SK,ra_state_changed_from:kK,ra_timestamp:vK,ra_tooltip_ack:YK,ra_tooltip_comment:QK,ra_tooltip_copyState:bK,ra_tooltip_ctrlForLink:UK,ra_tooltip_customConfig:$K,ra_tooltip_deleteObject:PK,ra_tooltip_editObject:WK,ra_tooltip_editState:JK,ra_tooltip_expire:BK,ra_tooltip_from:RK,ra_tooltip_lc:FK,ra_tooltip_quality:GK,ra_tooltip_ts:HK,ra_tooltip_user:VK,ra_tooltip_value:ZK,ra_true:XK,"ra_use seconds":"usar segundos",ra_val:KK,"ra_via internet":"vía Internet",ra_warning_every_minute:qK,ra_warning_every_second:eq,sc_cron:tq,sc_date:sq,sc_dates:iq,sc_dow:rq,sc_dows:oq,sc_every:nq,sc_everyN_dates:aq,sc_everyN_dow:Mq,sc_everyN_dows:cq,sc_everyN_hours:uq,sc_everyN_minutes:lq,sc_everyN_months:Nq,sc_everyN_seconds:Lq,sc_every_dates:gq,sc_every_dow:jq,sc_every_dows:yq,sc_every_hours:Tq,sc_every_minutes:Dq,sc_every_months:dq,sc_every_seconds:hq,sc_from:zq,sc_hours:wq,sc_interval:Iq,sc_intervalBetween:Cq,sc_invalid_cron:pq,sc_minutes:Aq,sc_months:mq,sc_once:fq,sc_period:Oq,sc_seconds:Eq,sc_simple:_q,sc_specific:xq,sc_specific_dates:Sq,sc_specific_dow:kq,sc_specific_dows:vq,sc_specific_hours:Yq,sc_specific_minutes:Qq,sc_specific_months:bq,sc_specific_seconds:Uq,sc_time:$q,sc_to:Pq,sc_wizard:Wq,sch_all:Jq,sch_astroDay:Bq,sch_astroNight:Rq,sch_astro_dawn:Fq,sch_astro_dusk:Gq,sch_astro_goldenHour:Hq,sch_astro_goldenHourEnd:Vq,sch_astro_nadir:Zq,sch_astro_nauticalDawn:Xq,sch_astro_nauticalDusk:Kq,sch_astro_night:qq,sch_astro_nightEnd:eee,sch_astro_solarNoon:tee,sch_astro_sunrise:see,sch_astro_sunriseEnd:iee,sch_astro_sunset:ree,sch_astro_sunsetStart:oee,sch_at:nee,sch_desc_atTime:aee,sch_desc_everyDay:Mee,sch_desc_everyHour:cee,sch_desc_everyMinute:uee,sch_desc_everyMonth:lee,sch_desc_everyNDay:Nee,sch_desc_everyNHours:Lee,sch_desc_everyNMinutes:gee,sch_desc_everyNMonths:jee,sch_desc_everyNWeeks:yee,sch_desc_everyNYears:Tee,sch_desc_everyWeek:Dee,sch_desc_everyYear:dee,sch_desc_intervalFromTo:hee,sch_desc_never:zee,sch_desc_onDate:wee,sch_desc_onDates:Iee,sch_desc_onEveryDate:Cee,sch_desc_onMonth:pee,sch_desc_onMonths:Aee,sch_desc_onWeekday:mee,sch_desc_onWeekdays:fee,sch_desc_onWeekends:Oee,sch_desc_onWorkdays:Eee,sch_desc_onceInPast:_ee,sch_desc_once_on:xee,sch_desc_validFrom:See,sch_desc_validFromTo:kee,sch_desc_validTo:vee,sch_every:Yee,sch_exactTime:Qee,sch_from:bee,sch_fromTo:Uee,sch_intervalTime:$ee,sch_invert:Pee,sch_no_one:Wee,sch_on:Jee,sch_period:Bee,sch_periodDaily:Ree,sch_periodDates:Fee,sch_periodDay:Gee,sch_periodEvery:Hee,sch_periodEveryDay:Vee,sch_periodEveryMonth:Zee,sch_periodEveryWeek:Xee,sch_periodEveryYear:Kee,sch_periodHours:qee,sch_periodMinutes:ete,sch_periodMonth:tte,sch_periodMonthly:ste,sch_periodOnce:ite,sch_periodSpecificMonths:rte,sch_periodWeek:ote,sch_periodWeekdays:nte,sch_periodWeekend:ate,sch_periodWeekly:Mte,sch_periodWorkdays:cte,sch_periodYear:ute,sch_periodYearly:lte,sch_specificTime:Nte,sch_time:Lte,sch_to:gte,sch_valid:jte,sch_validFrom:yte,sch_validTo:Tte,sch_wholeDay:Dte,sch_yearEveryMonth:dte},zte="Akcje",wte="Dodać",Ite="Anuluj",Cte="Kategorie",pte="Sprawdzony",Ate="Kasować",mte="Blisko",fte="Handlowy",Ote="Konfiguruj",Ete="Połączony",_te="Kontynuować",xte="Skopiowano",Ste="Stwórz",kte="Przyciąć",vte="Delete",Yte="Usunąć",Qte="Wyrzucać",bte="Niepowiązany",Ute="Błąd",$te="Filtr",Pte="Piątek",Wte="Szerokość",Jte="Wyloguj",Bte="Długość geograficzna",Rte="Wiadomość",Fte="Poniedziałek",Gte="Nazwa",Hte="Obiekty",Vte="Dobrze",Zte="Produkt",Xte="Zmień nazwę/Przenieś/Kopiuj",Kte="Powtarzać",qte="Zastępować",ese="Korzeń",tse="Sobota",sse="Zapisać",ise="Wybrany",rse="Stany",ose="Niedziela",nse="Czwartek",ase="Znak czasu",Mse="Wtorek",cse="Aktualizacja",use="Obowiązuje do",lse="Wartość",Nse="Wersja",Lse="Środa",gse="Szerokość",jse="Tak",yse="różne",Tse="Każdy może czytać obiekt",Dse="Każdy może czytać stan",dse="Każdy może pisać przedmiot",hse="Każdy może pisać stan",zse="Grupa może odczytać obiekt",wse="Grupa może odczytać stan",Ise="Grupa może pisać obiekt",Cse="Grupa może pisać stan",pse="Właściciel może czytać obiekt",Ase="Właściciel może odczytać stan",mse="Właściciel może napisać obiekt",fse="Właściciel może pisać stan",Ose="guziki",Ese="Zmieniony z",_se="blisko",xse="Utwórz stan logiczny",Sse="Utwórz kanał",kse="Utwórz urządzenie",vse="Utwórz stan liczbowy",Yse="Utwórz stan",Qse="Utwórz stan ciągu",bse="d.",Use="Ks",$se="Mo",Pse="Sa",Wse="Su",Jse="Th",Bse="Tu",Rse="My",Fse="Tryb ekspercki",Gse="FAŁSZ",Hse="Wszystkie pliki",Vse="Audio",Zse="Kod/JSON",Xse="Obrazy",Kse="Tekst",qse="Wideo",eie="Ustawienia",tie="bez",sie="Funkcjonować",iie="ID",rie="Imię",oie="Rola",nie="Sala",aie="Rodzaj",Mie="Nieprawidłowe ustawienia",cie="Ostatnia zmiana",uie="lokalnie",lie="kwiecień",Nie="sierpień",Lie="grudzień",gie="luty",jie="styczeń",yie="lipiec",Tie="czerwiec",Die="Mai",die="Zniszczyć",hie="listopad",zie="październik",wie="wrzesień",Iie="kwiecień",Cie="sierpień",pie="grudzień",Aie="luty",mie="styczeń",fie="lipiec",Oie="czerwiec",Eie="Mai",_ie="Zniszczyć",xie="listopad",Sie="październik",kie="wrzesień",vie="Żaden",Yie="Obiekt zmieniony przez",Qie="Obiekt ostatnio zmieniony o godz",bie="Ustawienia z innego adaptera %s",Uie="Kod jakości",$ie="powtarzać",Pie="Aby wybrać folder, wystarczy przytrzymać klawisz „shift”, klikając folder.",Wie="Pokaż wszystko",Jie="Stan zmieniony przez",Bie="Obiekt zmieniony z",Rie="Znak czasu",Fie="Potwierdzon",Gie="Komentarz",Hie="Skopiuj wartość stanu",Vie="Przytrzymaj klawisz CTRL/⌘, aby otworzyć link",Zie="Własne ustawienia",Xie="Usuń obiekt",Kie="Edytuj obiekt",qie="Edytuj wartość stanu",ere="Wygasa za",tre="Z",sre="Ostatnia zmiana",ire="Jakość",rre="Znak czasu",ore="Użytkownik",nre="Wartość",are="PRAWDA",Mre="Wartość",cre="Ostrzeżenie: Zadanie CRON będzie uruchamiane co minutę w określonym przedziale czasowym!",ure="Ostrzeżenie: Zadanie CRON będzie uruchamiane co sekundę w określonym przedziale czasowym!",lre="CRON",Nre="Data",Lre="Daktyle",gre="Dzień",jre="Dzień tygodnia",yre="Każdy",Tre="co N dni",Dre="w każdy N-ty dzień tygodnia",dre="co N dnia tygodnia",hre="co N godzin",zre="co N minut",wre="co N miesięcy",Ire="co N sekund",Cre="codziennie",pre="każdy dzień tygodnia",Are="każdy dzień tygodnia",mre="co godzinę",fre="każda minuta",Ore="każdego miesiąca",Ere="każda sekunda",_re="Od",xre="godziny",Sre="Interwał",kre="Interwał między",vre="Nieprawidłowy CRON",Yre="Minuty",Qre="miesięcy",bre="Pewnego razu",Ure="Kropka",$re="sekundy",Pre="Prosty",Wre="Określony czas",Jre="konkretne daty",Bre="określone dni tygodnia",Rre="określony dzień tygodni",Fre="określone godziny",Gre="określone minuty",Hre="określone miesiące",Vre="określone sekundy",Zre="Czas",Xre="Do",Kre="Czarodziej",qre="wszystko",eoe="Dzień Astro",toe="Noc Astro",soe="Świt",ioe="Zmierzch",roe="Złota godzina",ooe="Koniec złotej godziny",noe="Północ",aoe="Morski świt",Moe="Morski zmierzch",coe="Noc",uoe="Koniec nocy",loe="Południe słoneczne",Noe="Wschód słońca",Loe="Koniec wschodu słońca",goe="Zachód słońca",joe="Początek zachodu słońca",yoe="w",Toe="na %s",Doe="codziennie",doe="co godzinę",hoe="każda minuta",zoe="każdego miesiąca",woe="każdego dnia %s",Ioe="co %s godzin",Coe="co %s minut",poe="co %s miesięcy",Aoe="co %s tygodni",moe="co %s lat",foe="co tydzień",Ooe="każdego roku",Eoe="od %s do %s",_oe="nigdy",xoe="na %s z %s",Soe="na %s i %s z",koe="w każdą datę",voe="%s",Yoe="%s i %s",Qoe="na %s",boe="na %s i %s",Uoe="w weekendy",$oe="w dni robocze",Poe="nie będzie już wykonywany, ponieważ start jest w przeszłości",Woe="na %s",Joe="z %s",Boe="Wykonaj od do",Roe="do %s",Foe="każdy",Goe="Określony czas",Hoe="od",Voe="Od-do",Zoe="Czas przerwy",Xoe="odwracać",Koe="Żaden",qoe="na",ene="Kropka",tne="Codziennie",sne="Daktyle",ine="Dzień",rne="Każdy",one="Codziennie",nne="Każdego miesiąca",ane="Co tydzień",Mne="Każdego roku",cne="godziny",une="Minuty",lne="miesiąc",Nne="Miesięczny",Lne="Pewnego razu",gne="Określone miesiące",jne="Tydzień",yne="Dni powszednie",Tne="Weekend",Dne="Co tydzień",dne="Dni robocze",hne="Rok",zne="Rocznie",wne="Określony czas",Ine="Czas",Cne="do",pne="Ważny",Ane="od",mne="do",fne="Cały dzień",One="każdego miesiąca",Ene={"ra_%s links from aliases":"%s linków z aliasów","ra_%s object(s) processed":"Przetworzono %s obiektów","ra_%s was imported":"%s został zaimportowany","ra_Accept license":"Zaakceptuj licencję",ra_Actions:zte,"ra_Add new child object to selected parent":"Dodaj nowy obiekt potomny do wybranego rodzica","ra_Add objects tree from JSON file":"Dodaj drzewo obiektów z pliku JSON","ra_Add row":"Dodaj wiersz","ra_Advanced options":"Zaawansowane opcje","ra_All items are filtered out":"Wszystkie pozycje są odfiltrowane","ra_All objects":"Wszystkie obiekty",ra_Append:wte,"ra_Append %s entries or replace existing?":"Dołączyć wpisy %s czy zastąpić istniejące?","ra_Append or replace?":"Dołączyć czy zastąpić?","ra_Are you sure?":"Jesteś pewny?","ra_Auto (no custom columns)":"Auto (bez kolumn niestandardowych)","ra_Back to %s":"Powrót do %s","ra_Background image":"Zdjęcie w tle",ra_Cancel:Ite,"ra_Cannot add items with set filter":"Nie można dodać elementów z ustawionym filtrem","ra_Cannot decode license":"Nie można zdekodować licencji","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Nie można określić pozycji: ustawienia systemu są puste, a wykrywanie GPS jest wyłączone w przeglądarce",'ra_Cannot find "%s"':"Nie można znaleźć „%s”",'ra_Cannot read "%s"':"Nie można odczytać „%s”","ra_Cannot read licenses: %s":"Nie można odczytać licencji: %s","ra_Cannot retrieve options, as instance is offline":"Nie można pobrać opcji, ponieważ instancja jest w trybie offline","ra_Cannot update attribute, because not found in the object":"Nie można zaktualizować atrybutu, ponieważ nie znaleziono go w obiekcie","ra_Cannot upload":"Nie można przesłać",ra_Categories:Cte,"ra_Chained certificate":"Certyfikat łańcuchowy","ra_Change color theme":"Zmień motyw kolorystyczny","ra_Changed from":"Zmieniony z","ra_Channel → State":"Kanał → Stan","ra_Check license":"Sprawdź licencję",ra_Checked:pte,ra_Clear:Ate,"ra_Clear filter":"Czysty filtr","ra_Clear icon":"Wyczyść ikonę","ra_Click to see in full size":"Kliknij, aby zobaczyć w pełnym rozmiarze","ra_Click to show":"Kliknij, aby pokazać","ra_Clone current row":"Sklonuj bieżący wiersz",ra_Close:mte,"ra_Collapse all nodes":"Zwiń wszystkie węzły","ra_Collapse one step node":"Zwiń o jeden poziom",ra_Commercial:fte,ra_Configure:Ote,"ra_Configure visible columns":"Skonfiguruj widoczne kolumny","ra_Confirm deletion of %s":"Potwierdź usunięcie %s",ra_Connected:Ete,ra_Continue:_te,ra_Copied:xte,"ra_Copied %s":'Skopiowano "%s"',"ra_Copy content":"Kopiuj zawartość",ra_Create:Ste,"ra_Create alias":"Utwórz alias","ra_Create folder":"Utwórz folder","ra_Create new folder in %s":"Utwórz nowy folder w %s",ra_Crop:kte,"ra_Define CRON...":"Zdefiniuj CRON...","ra_Define functions":"Zdefiniuj funkcje","ra_Define rooms":"Zdefiniuj pokoje","ra_Define schedule":"Zdefiniuj harmonogram","ra_Define schedule...":"Zdefiniuj harmonogram ...",ra_Del:vte,ra_Delete:Yte,"ra_Delete current row":"Usuń bieżący wiersz","ra_Deselect all":"Odznacz wszystko","ra_Device → Channel → State":"Urządzenie → Kanał → Stan","ra_Disable/Enable translation":"Wyłącz/Włącz tłumaczenie",ra_Discard:Qte,ra_Disconnected:bte,"ra_Do not ask for next 2 hours in this session":"Nie proś o kolejne 2 godziny w tej sesji","ra_Do not export values of states":"Nie eksportuj wartości stanów","ra_Do not use let's encrypt":"Nie używaj zaszyfrujmy","ra_Docker is not available":"Docker nie jest dostępny","ra_Docker is not installed or not running":"Docker nie jest zainstalowany lub nie działa","ra_Double click to reset table layout":"Kliknij dwukrotnie, aby zresetować układ tabeli","ra_Drag 'n' drop some files here, or click to select files":"Przeciągnij i upuść kilka plików tutaj lub kliknij, aby wybrać pliki","ra_Drop file here":"Upuść plik tutaj","ra_Drop the files here...":"Upuść plik tutaj...","ra_Duplicate name":"Zduplikowana nazwa","ra_Edit ACL":"Edytuj listy ACL","ra_Edit alias":"Edytuj alias","ra_Edit custom config":"Edytuj konfigurację niestandardową","ra_Edit full path":"Edytuj pełną ścieżkę","ra_Edit function":"Funkcja edycji","ra_Edit object field":"Edytuj pole obiektu","ra_Edit role":"Edytuj rolę","ra_Edit room":"Edytuj pokój","ra_Edit value":"Edytuj wartość","ra_Enter the code from that page here":"Wpisz kod z tej strony tutaj",ra_Error:Ute,"ra_Expand all nodes":"Rozwiń wszystkie węzły","ra_Expand one step node":"Rozwiń o jeden poziom","ra_Expand/Collapse card":"Rozwiń/Zwiń kartę","ra_Export configuration section":"Sekcja konfiguracji eksportu","ra_Export data to %s file":"Eksportuj dane do pliku %s","ra_Failed to open JSON File":"Nie udało się otworzyć pliku JSON","ra_Fallback custom certificates":"Niestandardowe certyfikaty zastępcze","ra_File is too big. Max %sk allowed. Try use SVG.":"Plik jest za duży. Maksymalna dozwolona liczba %sk. Spróbuj użyć SVG.",ra_Filter:$te,"ra_Filter and Data Actions":"Akcje filtrów i danych","ra_Filter files":"Filtruj pliki","ra_Folder name":"Nazwa folderu","ra_Folder → Channel → State":"Folder → Kanał → Stan","ra_Folder → Device → Channel → State":"Folder → Urządzenie → Kanał → Stan","ra_Folder → State":"Folder → Stan","ra_Folders always first":"Foldery zawsze na pierwszym miejscu",ra_Friday:Pte,"ra_From file":"Z pliku","ra_From text":"Z tekstu","ra_Get %s access":"Uzyskaj dostęp %s","ra_Good luck":"Powodzenia","ra_Hide empty folders":"Ukryj puste foldery","ra_If no file will be created in the folder, it will disappear after the browser closed":"Jeśli w folderze nie zostanie utworzony żaden plik, zniknie on po zamknięciu przeglądarki","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Jeśli przycisk powyżej nie działa, możesz autoryzować tę aplikację ręcznie, odwiedzając ten adres URL","ra_Import and add configuration section":"Importuj i dodaj sekcję konfiguracji","ra_Import and replace configuration section":"Importuj i zastąp sekcję konfiguracji","ra_Import data from %s file":"Importuj dane z pliku %s","ra_Import from %s":"Importuj z %s","ra_Instance %s is alive":"Instancja %s jest aktywna","ra_Instance %s is not alive":"Instancja TEKST nie jest aktywna","ra_Instance is not alive":"Instancja nie jest aktywna","ra_Invalid CRON":"Nieprawidłowy CRON","ra_Invalid JSON":"Nieprawidłowy JSON","ra_Invalid JSON file.":"Nieprawidłowy plik JSON.","ra_Invalid JSON format. Expected an array.":"Nieprawidłowy format JSON. Oczekiwano tablicy.","ra_Invalid answer from server":"Nieprawidłowa odpowiedź z serwera","ra_Invalid parent folder!":"Nieprawidłowy folder nadrzędny!","ra_Invalid structure":"Nieprawidłowa struktura","ra_JSON editor":"Edytor JSON","ra_Last change":"Ostatnia zmiana",ra_Latitude:Wte,"ra_License %s":"Licencja %s","ra_License agreement":"Umowa licencyjna","ra_License does not exist":"Licencja nie istnieje","ra_License expired on %s":"Licencja wygasła w dniu %s",'ra_License for other product "%s"':"Licencja na inny produkt „%s”","ra_License is for version %s, but required version is %s.":"Licencja dotyczy wersji %s, ale wymagana wersja to %s.","ra_License must be converted":"Licencja musi zostać przekonwertowana na nowszą wersję. Możesz to zrobić w swoim profilu iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Nie znaleziono licencji w menedżerze licencji. Chcesz zaktualizować licencje z iobroker.net?","ra_Listen on all IPs":"Słuchaj na wszystkich adresach IP","ra_Load configuration from file":"Załaduj konfigurację z pliku",ra_Logout:Jte,ra_Longitude:Bte,'ra_May not trigger "updateLicenses"':"Może nie uruchamiać „updateLicenses”",ra_Message:Rte,ra_Monday:Fte,"ra_Move down":"Padnij","ra_Move up":"Podnieść",ra_Name:Gte,"ra_No data found in file":"Nie znaleziono danych w pliku","ra_No one license found in license manager":"Nie znaleziono licencji w menedżerze licencji","ra_No response from admin":"Brak odpowiedzi od administratora","ra_No response from the backend":"Brak odpowiedzi z zaplecza",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Osoby nie będące ekspertami mogą tworzyć nowe obiekty tylko w „0_userdata.0” lub „alias.0”.","ra_Not a number":"Nie numer","ra_OAuth Client ID":"Identyfikator klienta OAuth","ra_OAuth Client secret":"Tajny klucz klienta OAuth",ra_Objects:Hte,ra_Ok:Vte,"ra_On weekdays":"W dni powszednie","ra_Only following structures of objects are available:":"Dostępne są tylko następujące struktury obiektów:","ra_Only selected":"Tylko wybrane","ra_Owner group":"Grupa właścicieli","ra_Owner user":"Właściciel użytkownika","ra_Passwords are not equal!":"Hasła nie są równe!","ra_Place your files here or click here to open the browse dialog":"Umieść swoje pliki tutaj lub kliknij tutaj, aby otworzyć okno dialogowe przeglądania","ra_Please allow popups in your browser for this page!":"Proszę zezwolić na wyświetlanie wyskakujących okienek w przeglądarce dla tej strony!","ra_Please confirm":"Proszę potwierdzić","ra_Please create license":"Utwórz licencję","ra_Please enter the license":"Proszę wprowadzić licencję","ra_Please select file...":"Wybierz plik...","ra_Please select object ID...":"Wybierz identyfikator obiektu ...","ra_Port could be used by %s":"Port może być używany przez %s","ra_Port is already used by %s":"Port jest już używany przez %s","ra_Press ENTER Key to add new item":"Naciśnij klawisz ENTER, aby dodać nowy element","ra_Private certificate":"Prywatny certyfikat",ra_Product:Zte,"ra_Public certificate":"Certyfikat publiczny","ra_Quality code":"Jakości","ra_Refresh tree":"Odśwież drzewo","ra_Reload files":"Załaduj ponownie pliki",ra_Rename_Move_Copy:Xte,"ra_Renew %s access":"Odnów dostęp %s",ra_Repeat:Kte,ra_Replace:qte,"ra_Request timed out":"Upłynął limit czasu żądania","ra_Restrict to folder":"Ogranicz do folderu",ra_Root:ese,ra_Saturday:tse,ra_Save:sse,"ra_Save and close":"Zapisz i zamknij","ra_Save configuration to file":"Zapisz konfigurację do pliku","ra_Save objects tree as JSON file":"Zapisz drzewo obiektów jako plik JSON","ra_Select all":"Zaznacz wszystko","ra_Select color":"Wybierz kolor","ra_Select predefined icon":"Wybierz predefiniowaną ikonę","ra_Select type of export":"Wybierz rodzaj eksportu",ra_Selected:ise,"ra_Selected %s object(s)":"Wybrane obiekty %s","ra_Serial number (UUID)":"Numer seryjny (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Numer seryjny (UUID) „%s” w licencji dotyczy innego urządzenia.","ra_Session will expire in %s seconds. Continue?":"Sesja wygaśnie za %s sekund. Kontynuować?","ra_Show all folders":"Pokaż wszystkie foldery","ra_Show lines between rows":"Pokaż linie między rzędami","ra_Show/Hide object descriptions":"Pokaż/ukryj opisy obiektów","ra_Show/hide filter input":"Pokaż/ukryj wejście filtra","ra_Some data are not stored. Discard?":"Niektóre dane nie są przechowywane. Wyrzucać?",ra_States:rse,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Pomyślnie autoryzowano. Token ważny do %s i zostanie automatycznie odnowiony.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Pomyślnie autoryzowano. Token ważny do %s, ale może wygasnąć, ponieważ instancja nie jest uruchomiona.","ra_Suitable license not found in license manager":"Nie znaleziono odpowiedniej licencji w menedżerze licencji",ra_Sunday:ose,"ra_Suppress question for next %s minutes":"Ukryj pytanie przez następne %s minut","ra_System language":"Język systemu","ra_Take browser position":"Zajmij pozycję z przeglądarki","ra_Take position from system settings":"Zajmij pozycję z ustawień systemowych",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Eksperci mogą tworzyć obiekty wszędzie poza drugim poziomem (np. „Vis.0” lub „javascript.0”).","ra_The page you are looking for was not found":"Strona, której szukasz nie została znaleziona","ra_The schedule will be executed every minute. Are you sure?":"Harmonogram będzie wykonywany co minutę. Czy jesteś pewien?","ra_The schedule will be executed every second. Are you sure?":"Harmonogram będzie wykonywany co sekundę. Czy jesteś pewien?",ra_Thursday:nse,ra_Timestamp:ase,"ra_Toggle expert mode":"Przełącz tryb eksperta","ra_Toggle the states view":"Przełącz widok stanów","ra_Toggle view mode":"Przełącz tryb widoku","ra_Too big":"Za duży","ra_Too small":"Za mały","ra_Transparent dialog":"Przejrzyste okno dialogowe",ra_Tuesday:Mse,"ra_Unknown error":"Nieznany błąd","ra_Unknown error!":"Nieznany błąd!",ra_Update:cse,"ra_Upload file":"Przesyłanie pliku","ra_Use all available let's encrypt certificates":"Użyj wszystkich dostępnych certyfikatów Let's Encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Użyj adaptera iobroker.acme dla certyfikatów letsencrypt","ra_Use system settings for position":"Użyj ustawień systemowych dla pozycji","ra_Used system settings":"Używane ustawienia systemowe","ra_User files":"Pliki użytkownika",ra_ValidTill:use,ra_Value:lse,ra_Version:Nse,"ra_View file":"Zobaczyć plik","ra_View: %s":"Widok: %s",ra_Wednesday:Lse,ra_Width:gse,"ra_YAML editor":"Edytor YAML",ra_Yes:jse,"ra_You can export all objects or just the selected branch.":"Możesz wyeksportować wszystkie obiekty lub tylko wybraną gałąź.","ra_You can filter entries by entering here some text":"Możesz filtrować wpisy, wpisując tutaj jakiś tekst","ra_You can use * as wildcard":"Możesz użyć * jako symbolu wieloznacznego",ra___different__:yse,ra_aclEveryone_read_object:Tse,ra_aclEveryone_read_state:Dse,ra_aclEveryone_write_object:dse,ra_aclEveryone_write_state:hse,ra_aclGroup_read_object:zse,ra_aclGroup_read_state:wse,ra_aclGroup_write_object:Ise,ra_aclGroup_write_state:Cse,ra_aclOwner_read_object:pse,ra_aclOwner_read_state:Ase,ra_aclOwner_write_object:mse,ra_aclOwner_write_state:fse,ra_buttons:Ose,ra_changedFrom:Ese,ra_close:_se,ra_create_boolean_state:xse,ra_create_channel:Sse,ra_create_device:kse,ra_create_number_state:vse,ra_create_state:Yse,ra_create_string_state:Qse,ra_daysShortText:bse,ra_dow_Fr:Use,ra_dow_Mo:$se,ra_dow_Sa:Pse,ra_dow_Su:Wse,ra_dow_Th:Jse,ra_dow_Tu:Bse,ra_dow_We:Rse,ra_expertMode:Fse,ra_false:Gse,ra_fileType_all:Hse,ra_fileType_audio:Vse,ra_fileType_code:Zse,ra_fileType_images:Xse,ra_fileType_txt:Kse,ra_fileType_video:qse,"ra_fileType_video,":"Wideo",ra_filter_customs:eie,ra_filter_customs_without:tie,ra_filter_func:sie,ra_filter_id:iie,ra_filter_name:rie,ra_filter_role:oie,ra_filter_room:nie,ra_filter_type:aie,"ra_import data from %s file":"Importuj dane z pliku %s",ra_invalidConfig:Mie,ra_lastChange:cie,ra_locally:uie,ra_month_Apr:lie,ra_month_Aug:Nie,ra_month_Dec:Lie,ra_month_Feb:gie,ra_month_Jan:jie,ra_month_Jul:yie,ra_month_Jun:Tie,ra_month_Mai:Die,ra_month_Mar:die,ra_month_Nov:hie,ra_month_Oct:zie,ra_month_Sep:wie,ra_months_Apr:Iie,ra_months_Aug:Cie,ra_months_Dec:pie,ra_months_Feb:Aie,ra_months_Jan:mie,ra_months_Jul:fie,ra_months_Jun:Oie,ra_months_Mai:Eie,ra_months_Mar:_ie,ra_months_Nov:xie,ra_months_Oct:Sie,ra_months_Sep:kie,"ra_no confirm for 5 mins":"brak potwierdzenia przez 5 minut",ra_none:vie,ra_object_changed_by:Yie,ra_object_changed_by_user:Qie,ra_otherConfig:bie,ra_qualityCode:Uie,ra_repeat:$ie,ra_select_folder_hint:Pie,ra_show_all:Wie,ra_state_changed_by:Jie,ra_state_changed_from:Bie,ra_timestamp:Rie,ra_tooltip_ack:Fie,ra_tooltip_comment:Gie,ra_tooltip_copyState:Hie,ra_tooltip_ctrlForLink:Vie,ra_tooltip_customConfig:Zie,ra_tooltip_deleteObject:Xie,ra_tooltip_editObject:Kie,ra_tooltip_editState:qie,ra_tooltip_expire:ere,ra_tooltip_from:tre,ra_tooltip_lc:sre,ra_tooltip_quality:ire,ra_tooltip_ts:rre,ra_tooltip_user:ore,ra_tooltip_value:nre,ra_true:are,"ra_use seconds":"użyj sekund",ra_val:Mre,"ra_via internet":"przez internet",ra_warning_every_minute:cre,ra_warning_every_second:ure,sc_cron:lre,sc_date:Nre,sc_dates:Lre,sc_dow:gre,sc_dows:jre,sc_every:yre,sc_everyN_dates:Tre,sc_everyN_dow:Dre,sc_everyN_dows:dre,sc_everyN_hours:hre,sc_everyN_minutes:zre,sc_everyN_months:wre,sc_everyN_seconds:Ire,sc_every_dates:Cre,sc_every_dow:pre,sc_every_dows:Are,sc_every_hours:mre,sc_every_minutes:fre,sc_every_months:Ore,sc_every_seconds:Ere,sc_from:_re,sc_hours:xre,sc_interval:Sre,sc_intervalBetween:kre,sc_invalid_cron:vre,sc_minutes:Yre,sc_months:Qre,sc_once:bre,sc_period:Ure,sc_seconds:$re,sc_simple:Pre,sc_specific:Wre,sc_specific_dates:Jre,sc_specific_dow:Bre,sc_specific_dows:Rre,sc_specific_hours:Fre,sc_specific_minutes:Gre,sc_specific_months:Hre,sc_specific_seconds:Vre,sc_time:Zre,sc_to:Xre,sc_wizard:Kre,sch_all:qre,sch_astroDay:eoe,sch_astroNight:toe,sch_astro_dawn:soe,sch_astro_dusk:ioe,sch_astro_goldenHour:roe,sch_astro_goldenHourEnd:ooe,sch_astro_nadir:noe,sch_astro_nauticalDawn:aoe,sch_astro_nauticalDusk:Moe,sch_astro_night:coe,sch_astro_nightEnd:uoe,sch_astro_solarNoon:loe,sch_astro_sunrise:Noe,sch_astro_sunriseEnd:Loe,sch_astro_sunset:goe,sch_astro_sunsetStart:joe,sch_at:yoe,sch_desc_atTime:Toe,sch_desc_everyDay:Doe,sch_desc_everyHour:doe,sch_desc_everyMinute:hoe,sch_desc_everyMonth:zoe,sch_desc_everyNDay:woe,sch_desc_everyNHours:Ioe,sch_desc_everyNMinutes:Coe,sch_desc_everyNMonths:poe,sch_desc_everyNWeeks:Aoe,sch_desc_everyNYears:moe,sch_desc_everyWeek:foe,sch_desc_everyYear:Ooe,sch_desc_intervalFromTo:Eoe,sch_desc_never:_oe,sch_desc_onDate:xoe,sch_desc_onDates:Soe,sch_desc_onEveryDate:koe,sch_desc_onMonth:voe,sch_desc_onMonths:Yoe,sch_desc_onWeekday:Qoe,sch_desc_onWeekdays:boe,sch_desc_onWeekends:Uoe,sch_desc_onWorkdays:$oe,sch_desc_onceInPast:Poe,sch_desc_once_on:Woe,sch_desc_validFrom:Joe,sch_desc_validFromTo:Boe,sch_desc_validTo:Roe,sch_every:Foe,sch_exactTime:Goe,sch_from:Hoe,sch_fromTo:Voe,sch_intervalTime:Zoe,sch_invert:Xoe,sch_no_one:Koe,sch_on:qoe,sch_period:ene,sch_periodDaily:tne,sch_periodDates:sne,sch_periodDay:ine,sch_periodEvery:rne,sch_periodEveryDay:one,sch_periodEveryMonth:nne,sch_periodEveryWeek:ane,sch_periodEveryYear:Mne,sch_periodHours:cne,sch_periodMinutes:une,sch_periodMonth:lne,sch_periodMonthly:Nne,sch_periodOnce:Lne,sch_periodSpecificMonths:gne,sch_periodWeek:jne,sch_periodWeekdays:yne,sch_periodWeekend:Tne,sch_periodWeekly:Dne,sch_periodWorkdays:dne,sch_periodYear:hne,sch_periodYearly:zne,sch_specificTime:wne,sch_time:Ine,sch_to:Cne,sch_valid:pne,sch_validFrom:Ane,sch_validTo:mne,sch_wholeDay:fne,sch_yearEveryMonth:One},_ne="Дії",xne="Додайте",Sne="Скасувати",kne="Категорії",vne="Перевірено",Yne="Видалити",Qne="Закрити",bne="Комерційний",Une="Налаштувати",$ne="Підключено",Pne="Продовжити",Wne="Скопійовано",Jne="Створити",Bne="Урожай",Rne="Delete",Fne="Видалити",Gne="Відкинути",Hne="Відключено",Vne="Помилка",Zne="фільтр",Xne="П'ятниця",Kne="Широта",qne="Вийти",eae="Довгота",tae="повідомлення",sae="понеділок",iae="Ім'я",rae="Об'єкти",oae="В порядку",nae="Продукт",aae="Перейменувати/Перемістити/Копіювати",Mae="Повторіть",cae="Замінити",uae="Корінь",lae="Субота",Nae="зберегти",Lae="Вибране",gae="держави",jae="неділя",yae="четвер",Tae="Мітка часу",Dae="вівторок",dae="оновлення",hae="Дійсний до",zae="Значення",wae="Версія",Iae="Середа",Cae="Ширина",pae="Так",Aae="інший",mae="Кожен може читати об'єкт",fae="Кожен може читати стан",Oae="Кожен може написати об'єкт",Eae="Кожен може написати стан",_ae="Група може читати об'єкт",xae="Група може читати стан",Sae="Група може писати об'єкт",kae="Група може писати стан",vae="Власник може читати об'єкт",Yae="Власник може читати стан",Qae="Власник може написати об'єкт",bae="Власник може написати стан",Uae="кнопки",$ae="Змінено з",Pae="закрити",Wae="Створіть логічний стан",Jae="Створити канал",Bae="Створити пристрій",Rae="Створити номерний стан",Fae="Створити состояние",Gae="Створити рядковий стан",Hae="днів",Vae="О",Zae="пн",Xae="Sa",Kae="Нд",qae="чт",eMe="вт",tMe="ми",sMe="Експертний режим",iMe="НЕПРАВДА",rMe="Всі файли",oMe="Аудіо",nMe="Код/JSON",aMe="Зображення",MMe="текст",cMe="відео",uMe="Налаштування",lMe="без",NMe="функція",LMe="ID",gMe="Ім'я",jMe="Роль",yMe="Кімната",TMe="Тип",DMe="Недійсні налаштування",dMe="Остання зміна",hMe="локально",zMe="квіт",wMe="серп",IMe="груд",CMe="лютий",pMe="січня",AMe="лип",mMe="черв",fMe="травень",OMe="березень",EMe="Листопад",_Me="жовт",xMe="вер",SMe="квіт",kMe="серп",vMe="груд",YMe="лютий",QMe="січня",bMe="лип",UMe="черв",$Me="травень",PMe="березень",WMe="Листопад",JMe="жовт",BMe="вер",RMe="немає",FMe="Об'єкт змінено",GMe="Об'єкт востаннє змінено о",HMe="Налаштування з іншого адаптера %s",VMe="Код якості",ZMe="повторити",XMe="Щоб вибрати папку, просто клацніть папку, утримуючи клавішу «Shift».",KMe="Показати все",qMe="Стан змінено на",ece="Об'єкт змінено з",tce="Мітка часу",sce="Визнано",ice="коментар",rce="Скопіюйте значення стану",oce="Утримуйте клавішу Cltr/⌘, щоб відкрити посилання",nce="Спеціальні налаштування",ace="Видалити об'єкт",Mce="Редагувати об'єкт",cce="Відредагуйте значення стану",uce="Термін дії закінчується через",lce="Від",Nce="Востаннє змінено",Lce="якість",gce="Позначка часу",jce="Користувач",yce="Значення",Tce="ПРАВДА",Dce="Значення",dce="Попередження: завдання CRON виконуватиметься щохвилини протягом зазначеного періоду!",hce="Попередження: завдання CRON виконуватиметься кожну секунду протягом зазначеного періоду!",zce="CRON",wce="Дата",Ice="дати",Cce="День",pce="День тижня",Ace="кожен",mce="кожні N днів",fce="кожен N-й день тижня",Oce="кожні N днів тижня",Ece="кожні N годин",_ce="кожні N хвилин",xce="кожні N місяців",Sce="кожні N секунд",kce="кожен день",vce="кожен день тижня",Yce="кожен день тижня",Qce="щогодини",bce="кожну хвилину",Uce="щомісяця",$ce="кожна секунда",Pce="Від",Wce="години",Jce="Інтервал",Bce="Інтервал між",Rce="Недійсний CRON",Fce="хвилин",Gce="місяців",Hce="Один раз",Vce="Крапка",Zce="секунд",Xce="просто",Kce="Конкретний час",qce="конкретні дати",eue="конкретний день (дні) тижня",tue="конкретний день тижня",sue="конкретні години",iue="конкретні хвилини",rue="конкретні місяці",oue="конкретні секунди",nue="час",aue="до",Mue="майстер",cue="все",uue="Астродень",lue="Астро ніч",Nue="Світанок",Lue="Сутінки",gue="Золота година",jue="Кінець золотої години",yue="Надір",Tue="Морський світанок",Due="Морські сутінки",due="ніч",hue="Кінець ночі",zue="Сонячний полудень",wue="Схід сонця",Iue="Кінець сходу сонця",Cue="Захід сонця",pue="Початок заходу сонця",Aue="в",mue="в %s",fue="кожен день",Oue="щогодини",Eue="кожну хвилину",_ue="щомісяця",xue="кожен %s день",Sue="кожні %s годин",kue="кожні %s хвилин",vue="кожні %s місяців",Yue="кожні %s тижнів",Que="кожні %s років",bue="щотижня",Uue="щороку",$ue="від %s до %s",Pue="ніколи",Wue="на %s з %s",Jue="на %s і %s з",Bue="на кожну дату",Rue="%s",Fue="%s і %s",Gue="на %s",Hue="на %s і %s",Vue="на вихідних",Zue="в робочі дні",Xue="більше не виконуватиметься, оскільки запуск у минулому",Kue="на %s",que="від %s",ele="Виконати від до",tle="до %s",sle="кожен",ile="Конкретний час",rle="від",ole="Від до",nle="Час інтервалу",ale="інвертувати",Mle="немає",cle="на",ule="Крапка",lle="Щодня",Nle="дати",Lle="День",gle="кожен",jle="Кожен день",yle="Щомісяця",Tle="Щотижня",Dle="Щороку",dle="години",hle="хвилин",zle="місяць",wle="Щомісяця",Ile="Один раз",Cle="Конкретні місяці",ple="тиждень",Ale="будні",mle="Вихідні",fle="Щотижня",Ole="робочі дні",Ele="рік",_le="щорічно",xle="Конкретний час",Sle="час",kle="до",vle="Дійсний",Yle="від",Qle="до",ble="Цілий день",Ule="щомісяця",$le={"ra_%s links from aliases":"%s посилань із псевдонімів","ra_%s object(s) processed":"Оброблено %s об’єктів","ra_%s was imported":"%s було імпортовано","ra_Accept license":"Прийняти ліцензію",ra_Actions:_ne,"ra_Add new child object to selected parent":"Додати новий дочірній об’єкт до вибраного батьківського","ra_Add objects tree from JSON file":"Додайте дерево об’єктів із файлу JSON","ra_Add row":"Додати рядок","ra_Advanced options":"Розширені опції","ra_All items are filtered out":"Усі елементи відфільтровано","ra_All objects":"Всі об'єкти",ra_Append:xne,"ra_Append %s entries or replace existing?":"Додати %s записів чи замінити наявні?","ra_Append or replace?":"Додати чи замінити?","ra_Are you sure?":"Ти впевнений?","ra_Auto (no custom columns)":"Автоматично (без спеціальних стовпців)","ra_Back to %s":"Назад до %s","ra_Background image":"Фонове зображення",ra_Cancel:Sne,"ra_Cannot add items with set filter":"Неможливо додати елементи зі встановленим фільтром","ra_Cannot decode license":"Неможливо розшифрувати ліцензію","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Неможливо визначити положення: системні налаштування порожні, а визначення GPS вимкнено в браузері",'ra_Cannot find "%s"':'Не вдається знайти "%s"','ra_Cannot read "%s"':'Неможливо прочитати "%s"',"ra_Cannot read licenses: %s":"Неможливо прочитати ліцензії: %s","ra_Cannot retrieve options, as instance is offline":"Неможливо отримати параметри, оскільки екземпляр офлайн","ra_Cannot update attribute, because not found in the object":"Неможливо оновити атрибут, оскільки його не знайдено в об’єкті","ra_Cannot upload":"Неможливо завантажити",ra_Categories:kne,"ra_Chained certificate":"Прикутий сертифікат","ra_Change color theme":"Змінити кольорову тему","ra_Changed from":"Змінено з","ra_Channel → State":"Канал → Стан","ra_Check license":"Перевірити ліцензію",ra_Checked:vne,ra_Clear:Yne,"ra_Clear filter":"Очистити фільтр","ra_Clear icon":"Очистити значок","ra_Click to see in full size":"Натисніть, щоб побачити в повному розмірі","ra_Click to show":"Натисніть, щоб показати","ra_Clone current row":"Клонувати поточний рядок",ra_Close:Qne,"ra_Collapse all nodes":"Згорнути всі вузли","ra_Collapse one step node":"Згорнути на один рівень",ra_Commercial:bne,ra_Configure:Une,"ra_Configure visible columns":"Налаштувати видимі стовпці","ra_Confirm deletion of %s":"Підтвердити видалення %s",ra_Connected:$ne,ra_Continue:Pne,ra_Copied:Wne,"ra_Copied %s":'Скопійовано "%s"',"ra_Copy content":"Скопіюйте вміст",ra_Create:Jne,"ra_Create alias":"Створити псевдонім","ra_Create folder":"Створити папку","ra_Create new folder in %s":"Створіть нову папку в %s",ra_Crop:Bne,"ra_Define CRON...":"Визначити CRON...","ra_Define functions":"Визначити функції","ra_Define rooms":"Визначте кімнати","ra_Define schedule":"Визначити розклад","ra_Define schedule...":"Визначити розклад...",ra_Del:Rne,ra_Delete:Fne,"ra_Delete current row":"Видалити поточний рядок","ra_Deselect all":"Скасувати вибір усіх","ra_Device → Channel → State":"Пристрій → Канал → Стан","ra_Disable/Enable translation":"Вимкнути/Увімкнути переклад",ra_Discard:Gne,ra_Disconnected:Hne,"ra_Do not ask for next 2 hours in this session":"Не запитуйте про наступні 2 години цього сеансу","ra_Do not export values of states":"Не експортуйте значення станів","ra_Do not use let's encrypt":"Не використовуйте let's encrypt","ra_Docker is not available":"Докер недоступний","ra_Docker is not installed or not running":"Docker не встановлено або не працює","ra_Double click to reset table layout":"Двічі клацніть, щоб скинути макет таблиці","ra_Drag 'n' drop some files here, or click to select files":"Перетягніть деякі файли сюди або натисніть, щоб вибрати файли","ra_Drop file here":"Перетягніть файл сюди","ra_Drop the files here...":"Перетягніть файл сюди...","ra_Duplicate name":"Повторюване ім'я","ra_Edit ACL":"Редагувати ACL","ra_Edit alias":"Редагувати псевдонім","ra_Edit custom config":"Редагувати спеціальну конфігурацію","ra_Edit full path":"Редагувати повний шлях","ra_Edit function":"функція редагування","ra_Edit object field":"Поле редагування об'єкта","ra_Edit role":"Редагувати роль","ra_Edit room":"Редагувати кімнату","ra_Edit value":"Редагувати значення","ra_Enter the code from that page here":"Введіть тут код з цієї сторінки",ra_Error:Vne,"ra_Expand all nodes":"Розгорнути всі вузли","ra_Expand one step node":"Розгорніть один рівень","ra_Expand/Collapse card":"Розгорнути/Згорнути картку","ra_Export configuration section":"Розділ конфігурації експорту","ra_Export data to %s file":"Експортувати дані у файл %s","ra_Failed to open JSON File":"Не вдалося відкрити файл JSON","ra_Fallback custom certificates":"Запасні спеціальні сертифікати","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл завеликий. Максимально дозволено %sk. Спробуйте використовувати SVG.",ra_Filter:Zne,"ra_Filter and Data Actions":"Фільтр і дії з даними","ra_Filter files":"Фільтр файлів","ra_Folder name":"Назва папки","ra_Folder → Channel → State":"Папка → Канал → Стан","ra_Folder → Device → Channel → State":"Папка → Пристрій → Канал → Стан","ra_Folder → State":"Папка → Стан","ra_Folders always first":"Папки завжди першими",ra_Friday:Xne,"ra_From file":"З файлу","ra_From text":"З тексту","ra_Get %s access":"Отримайте доступ %s","ra_Good luck":"Удачі","ra_Hide empty folders":"Приховати порожні папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Якщо в папці не буде створено файл, він зникне після закриття браузера","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Якщо кнопка вище не працює, ви можете авторизувати цю програму вручну, перейшовши за цим посиланням","ra_Import and add configuration section":"Розділ імпорту та додавання конфігурації","ra_Import and replace configuration section":"Розділ імпорту та заміни конфігурації","ra_Import data from %s file":"Імпортувати дані з файлу %s","ra_Import from %s":"Імпортувати з %s","ra_Instance %s is alive":"Примірник %s живий","ra_Instance %s is not alive":"Примірник %s не живий","ra_Instance is not alive":"Примірник не живий","ra_Invalid CRON":"Недійсний CRON","ra_Invalid JSON":"Недійсний JSON","ra_Invalid JSON file.":"Недійсний JSON-файл.","ra_Invalid JSON format. Expected an array.":"Недійсний формат JSON. Очікується масив.","ra_Invalid answer from server":"Недійсна відповідь від сервера","ra_Invalid parent folder!":"Недійсна батьківська папка!","ra_Invalid structure":"Недійсна структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Остання зміна",ra_Latitude:Kne,"ra_License %s":"Ліцензія %s","ra_License agreement":"Ліцензійна угода","ra_License does not exist":"Ліцензії не існує","ra_License expired on %s":"Термін дії ліцензії закінчився %s",'ra_License for other product "%s"':'Ліцензія на інший продукт "%s"',"ra_License is for version %s, but required version is %s.":"Ліцензія для версії %s, але потрібна версія %s.","ra_License must be converted":"Ліцензію необхідно конвертувати до новішої версії. Ви можете зробити це у своєму профілі на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Ліцензія не знайдена в менеджері ліцензій. Хочете оновити ліцензії з iobroker.net?","ra_Listen on all IPs":"Прослуховування на всіх IP","ra_Load configuration from file":"Завантажити конфігурацію з файлу",ra_Logout:qne,ra_Longitude:eae,'ra_May not trigger "updateLicenses"':'Може не запускати "updateLicenses"',ra_Message:tae,ra_Monday:sae,"ra_Move down":"Рухатися вниз","ra_Move up":"Рухатися вгору",ra_Name:iae,"ra_No data found in file":"Немає даних у файлі","ra_No one license found in license manager":"У менеджері ліцензій не знайдено жодної ліцензії","ra_No response from admin":"Немає відповіді від адміністратора","ra_No response from the backend":"Немає відповіді від сервера",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Неексперти можуть створювати нові об’єкти лише в «0_userdata.0» або «alias.0».","ra_Not a number":"Не номер","ra_OAuth Client ID":"Ідентифікатор клієнта OAuth","ra_OAuth Client secret":"Секрет клієнта OAuth",ra_Objects:rae,ra_Ok:oae,"ra_On weekdays":"В будні дні","ra_Only following structures of objects are available:":"Доступні тільки такі структури об'єктів:","ra_Only selected":"Тільки обрані","ra_Owner group":"Група власників","ra_Owner user":"Користувач-власник","ra_Passwords are not equal!":"Паролі не бувають рівними!","ra_Place your files here or click here to open the browse dialog":"Розмістіть свої файли тут або натисніть тут, щоб відкрити діалогове вікно перегляду","ra_Please allow popups in your browser for this page!":"Будь ласка, дозвольте спливаючі вікна у вашому браузері для цієї сторінки!","ra_Please confirm":"Будь-ласка підтвердіть","ra_Please create license":"Будь ласка, створіть ліцензію","ra_Please enter the license":"Будь ласка, введіть ліцензію","ra_Please select file...":"Виберіть файл...","ra_Please select object ID...":"Виберіть ідентифікатор об'єкта...","ra_Port could be used by %s":"Порт може використовуватися %s","ra_Port is already used by %s":"Порт уже використовується %s","ra_Press ENTER Key to add new item":"Натисніть клавішу ENTER, щоб додати новий елемент","ra_Private certificate":"Приватний сертифікат",ra_Product:nae,"ra_Public certificate":"Публічний сертифікат","ra_Quality code":"якість","ra_Refresh tree":"Оновити дерево","ra_Reload files":"Перезавантажте файли",ra_Rename_Move_Copy:aae,"ra_Renew %s access":"Поновити доступ %s",ra_Repeat:Mae,ra_Replace:cae,"ra_Request timed out":"Час запиту вичерпано","ra_Restrict to folder":"Обмежити папкою",ra_Root:uae,ra_Saturday:lae,ra_Save:Nae,"ra_Save and close":"Зберегти та закрити","ra_Save configuration to file":"Зберегти конфігурацію у файл","ra_Save objects tree as JSON file":"Зберегти дерево об’єктів як файл JSON","ra_Select all":"Вибрати все","ra_Select color":"Виберіть колір","ra_Select predefined icon":"Виберіть попередньо визначений значок","ra_Select type of export":"Виберіть тип експорту",ra_Selected:Lae,"ra_Selected %s object(s)":"Вибрані об’єкти %s","ra_Serial number (UUID)":"Серійний номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Серійний номер (UUID) "%s" у ліцензії призначений для іншого пристрою.',"ra_Session will expire in %s seconds. Continue?":"Сеанс закінчиться через %s секунд. Продовжити?","ra_Show all folders":"Показати всі папки","ra_Show lines between rows":"Показувати лінії між рядками","ra_Show/Hide object descriptions":"Показати/Сховати описи об’єктів","ra_Show/hide filter input":"Показати/сховати введення фільтра","ra_Some data are not stored. Discard?":"Деякі дані не зберігаються. Відкинути?",ra_States:gae,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизацію успішно пройшло. Токен дійсний до %s та буде автоматично поновлено.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизацію успішно виконано. Токен дійсний до %s, але його термін дії може закінчитися, оскільки екземпляр не запущено.","ra_Suitable license not found in license manager":"Відповідна ліцензія не знайдена в менеджері ліцензій",ra_Sunday:jae,"ra_Suppress question for next %s minutes":"Приховати запитання на наступні %s хвилин","ra_System language":"Системна мова","ra_Take browser position":"Займіть позицію з браузера","ra_Take position from system settings":"Займіть позицію в налаштуваннях системи",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Експерти можуть створювати об’єкти всюди, крім другого рівня (наприклад, «vis.0» або «javascript.0»).","ra_The page you are looking for was not found":"Сторінка, яку ви шукаєте, не знайдена","ra_The schedule will be executed every minute. Are you sure?":"Розклад буде виконуватися щохвилини. Ви впевнені?","ra_The schedule will be executed every second. Are you sure?":"Розклад буде виконуватися щосекунди. Ви впевнені?",ra_Thursday:yae,ra_Timestamp:Tae,"ra_Toggle expert mode":"Перемкнути експертний режим","ra_Toggle the states view":"Перемкнути перегляд штатів","ra_Toggle view mode":"Перемкнути режим перегляду","ra_Too big":"Занадто великий","ra_Too small":"Занадто малий","ra_Transparent dialog":"Прозорий діалог",ra_Tuesday:Dae,"ra_Unknown error":"Невідома помилка","ra_Unknown error!":"Невідома помилка!",ra_Update:dae,"ra_Upload file":"Завантажити файл","ra_Use all available let's encrypt certificates":"Використовуйте всі доступні сертифікати let's encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Використовуйте адаптер iobroker.acme для сертифікатів letsencrypt","ra_Use system settings for position":"Використовуйте системні налаштування для позиції","ra_Used system settings":"Використані системні налаштування","ra_User files":"Файли користувача",ra_ValidTill:hae,ra_Value:zae,ra_Version:wae,"ra_View file":"Переглянути файл","ra_View: %s":"Перегляд: %s",ra_Wednesday:Iae,ra_Width:Cae,"ra_YAML editor":"Редактор YAML",ra_Yes:pae,"ra_You can export all objects or just the selected branch.":"Ви можете експортувати всі об’єкти або лише вибрану гілку.","ra_You can filter entries by entering here some text":"Ви можете фільтрувати записи, ввівши тут певний текст","ra_You can use * as wildcard":"Ви можете використовувати * як символ підстановки",ra___different__:Aae,ra_aclEveryone_read_object:mae,ra_aclEveryone_read_state:fae,ra_aclEveryone_write_object:Oae,ra_aclEveryone_write_state:Eae,ra_aclGroup_read_object:_ae,ra_aclGroup_read_state:xae,ra_aclGroup_write_object:Sae,ra_aclGroup_write_state:kae,ra_aclOwner_read_object:vae,ra_aclOwner_read_state:Yae,ra_aclOwner_write_object:Qae,ra_aclOwner_write_state:bae,ra_buttons:Uae,ra_changedFrom:$ae,ra_close:Pae,ra_create_boolean_state:Wae,ra_create_channel:Jae,ra_create_device:Bae,ra_create_number_state:Rae,ra_create_state:Fae,ra_create_string_state:Gae,ra_daysShortText:Hae,ra_dow_Fr:Vae,ra_dow_Mo:Zae,ra_dow_Sa:Xae,ra_dow_Su:Kae,ra_dow_Th:qae,ra_dow_Tu:eMe,ra_dow_We:tMe,ra_expertMode:sMe,ra_false:iMe,ra_fileType_all:rMe,ra_fileType_audio:oMe,ra_fileType_code:nMe,ra_fileType_images:aMe,ra_fileType_txt:MMe,ra_fileType_video:cMe,"ra_fileType_video,":"відео",ra_filter_customs:uMe,ra_filter_customs_without:lMe,ra_filter_func:NMe,ra_filter_id:LMe,ra_filter_name:gMe,ra_filter_role:jMe,ra_filter_room:yMe,ra_filter_type:TMe,"ra_import data from %s file":"Імпортувати дані з файлу %s",ra_invalidConfig:DMe,ra_lastChange:dMe,ra_locally:hMe,ra_month_Apr:zMe,ra_month_Aug:wMe,ra_month_Dec:IMe,ra_month_Feb:CMe,ra_month_Jan:pMe,ra_month_Jul:AMe,ra_month_Jun:mMe,ra_month_Mai:fMe,ra_month_Mar:OMe,ra_month_Nov:EMe,ra_month_Oct:_Me,ra_month_Sep:xMe,ra_months_Apr:SMe,ra_months_Aug:kMe,ra_months_Dec:vMe,ra_months_Feb:YMe,ra_months_Jan:QMe,ra_months_Jul:bMe,ra_months_Jun:UMe,ra_months_Mai:$Me,ra_months_Mar:PMe,ra_months_Nov:WMe,ra_months_Oct:JMe,ra_months_Sep:BMe,"ra_no confirm for 5 mins":"без підтвердження протягом 5 хв",ra_none:RMe,ra_object_changed_by:FMe,ra_object_changed_by_user:GMe,ra_otherConfig:HMe,ra_qualityCode:VMe,ra_repeat:ZMe,ra_select_folder_hint:XMe,ra_show_all:KMe,ra_state_changed_by:qMe,ra_state_changed_from:ece,ra_timestamp:tce,ra_tooltip_ack:sce,ra_tooltip_comment:ice,ra_tooltip_copyState:rce,ra_tooltip_ctrlForLink:oce,ra_tooltip_customConfig:nce,ra_tooltip_deleteObject:ace,ra_tooltip_editObject:Mce,ra_tooltip_editState:cce,ra_tooltip_expire:uce,ra_tooltip_from:lce,ra_tooltip_lc:Nce,ra_tooltip_quality:Lce,ra_tooltip_ts:gce,ra_tooltip_user:jce,ra_tooltip_value:yce,ra_true:Tce,"ra_use seconds":"використовуйте секунди",ra_val:Dce,"ra_via internet":"через інтернет",ra_warning_every_minute:dce,ra_warning_every_second:hce,sc_cron:zce,sc_date:wce,sc_dates:Ice,sc_dow:Cce,sc_dows:pce,sc_every:Ace,sc_everyN_dates:mce,sc_everyN_dow:fce,sc_everyN_dows:Oce,sc_everyN_hours:Ece,sc_everyN_minutes:_ce,sc_everyN_months:xce,sc_everyN_seconds:Sce,sc_every_dates:kce,sc_every_dow:vce,sc_every_dows:Yce,sc_every_hours:Qce,sc_every_minutes:bce,sc_every_months:Uce,sc_every_seconds:$ce,sc_from:Pce,sc_hours:Wce,sc_interval:Jce,sc_intervalBetween:Bce,sc_invalid_cron:Rce,sc_minutes:Fce,sc_months:Gce,sc_once:Hce,sc_period:Vce,sc_seconds:Zce,sc_simple:Xce,sc_specific:Kce,sc_specific_dates:qce,sc_specific_dow:eue,sc_specific_dows:tue,sc_specific_hours:sue,sc_specific_minutes:iue,sc_specific_months:rue,sc_specific_seconds:oue,sc_time:nue,sc_to:aue,sc_wizard:Mue,sch_all:cue,sch_astroDay:uue,sch_astroNight:lue,sch_astro_dawn:Nue,sch_astro_dusk:Lue,sch_astro_goldenHour:gue,sch_astro_goldenHourEnd:jue,sch_astro_nadir:yue,sch_astro_nauticalDawn:Tue,sch_astro_nauticalDusk:Due,sch_astro_night:due,sch_astro_nightEnd:hue,sch_astro_solarNoon:zue,sch_astro_sunrise:wue,sch_astro_sunriseEnd:Iue,sch_astro_sunset:Cue,sch_astro_sunsetStart:pue,sch_at:Aue,sch_desc_atTime:mue,sch_desc_everyDay:fue,sch_desc_everyHour:Oue,sch_desc_everyMinute:Eue,sch_desc_everyMonth:_ue,sch_desc_everyNDay:xue,sch_desc_everyNHours:Sue,sch_desc_everyNMinutes:kue,sch_desc_everyNMonths:vue,sch_desc_everyNWeeks:Yue,sch_desc_everyNYears:Que,sch_desc_everyWeek:bue,sch_desc_everyYear:Uue,sch_desc_intervalFromTo:$ue,sch_desc_never:Pue,sch_desc_onDate:Wue,sch_desc_onDates:Jue,sch_desc_onEveryDate:Bue,sch_desc_onMonth:Rue,sch_desc_onMonths:Fue,sch_desc_onWeekday:Gue,sch_desc_onWeekdays:Hue,sch_desc_onWeekends:Vue,sch_desc_onWorkdays:Zue,sch_desc_onceInPast:Xue,sch_desc_once_on:Kue,sch_desc_validFrom:que,sch_desc_validFromTo:ele,sch_desc_validTo:tle,sch_every:sle,sch_exactTime:ile,sch_from:rle,sch_fromTo:ole,sch_intervalTime:nle,sch_invert:ale,sch_no_one:Mle,sch_on:cle,sch_period:ule,sch_periodDaily:lle,sch_periodDates:Nle,sch_periodDay:Lle,sch_periodEvery:gle,sch_periodEveryDay:jle,sch_periodEveryMonth:yle,sch_periodEveryWeek:Tle,sch_periodEveryYear:Dle,sch_periodHours:dle,sch_periodMinutes:hle,sch_periodMonth:zle,sch_periodMonthly:wle,sch_periodOnce:Ile,sch_periodSpecificMonths:Cle,sch_periodWeek:ple,sch_periodWeekdays:Ale,sch_periodWeekend:mle,sch_periodWeekly:fle,sch_periodWorkdays:Ole,sch_periodYear:Ele,sch_periodYearly:_le,sch_specificTime:xle,sch_time:Sle,sch_to:kle,sch_valid:vle,sch_validFrom:Yle,sch_validTo:Qle,sch_wholeDay:ble,sch_yearEveryMonth:Ule},Ple="操作",Wle="附加",Jle="取消",Ble="类别",Rle="勾选",Fle="删除",Gle="关",Hle="商业的",Vle="配置",Zle="连接的",Xle="继续",Kle="复制的",qle="创建",e0e="庄稼",t0e="Delete",s0e="删除",i0e="丢弃",r0e="断开连接",o0e="错误",n0e="筛选",a0e="星期五",M0e="纬度",c0e="登出",u0e="经度",l0e="信息",N0e="周一",L0e="姓名",g0e="对象",j0e="好",y0e="产品",T0e="重命名/移动/复制",D0e="重复",d0e="代替",h0e="根",z0e="周六",w0e="保存",I0e="已选",C0e="状态",p0e="星期日",A0e="周四",m0e="时间戳记",f0e="周二",O0e="更新资料",E0e="有效期至",_0e="值",x0e="版本",S0e="周三",k0e="宽度",v0e="是的",Y0e="不同的",Q0e="每个人都可以阅读对象",b0e="每个人都可以阅读状态",U0e="每个人都可以写对象",$0e="每个人都可以写状态",P0e="组可以读取对象",W0e="群组可以读取状态",J0e="组可以写对象",B0e="组可以写状态",R0e="所有者可以读取对象",F0e="所有者可以读取状态",G0e="所有者可以写对象",H0e="所有者可以写状态",V0e="纽扣",Z0e="更改为",X0e="关闭",K0e="创建布尔状态",q0e="创建频道",eNe="创建设备",tNe="创建号码状态",sNe="创建状态",iNe="创建字符串状态",rNe="天",oNe="r",nNe="莫",aNe="萨",MNe="苏",cNe="Th",uNe="Tu",lNe="我们",NNe="专家模式",LNe="错误的",gNe="所有文件",jNe="声音的",yNe="代码/JSON",TNe="图片",DNe="文本",dNe="视频",hNe="设定值",zNe="没有",wNe="功能",INe="ID",CNe="名称",pNe="角色",ANe="房间",mNe="类型",fNe="无效的设定",ONe="最后一次变更",ENe="本地",_Ne="4月",xNe="八月",SNe="十二月",kNe="二月",vNe="简",YNe="七月",QNe="君",bNe="迈",UNe="三月",$Ne="十一月",PNe="十月",WNe="九月",JNe="4月",BNe="八月",RNe="十二月",FNe="二月",GNe="简",HNe="七月",VNe="君",ZNe="迈",XNe="三月",KNe="十一月",qNe="十月",e4e="九月",t4e="没有任何",s4e="物件变更者",i4e="对象上次更改时间为",r4e="来自其他适配器%s的设置",o4e="质量代码",n4e="重复",a4e="要选择文件夹,只需按住“shift”键单击文件夹即可。",M4e="显示全部",c4e="状态由",u4e="对象已从更改",l4e="时间戳记",N4e="致谢国旗",L4e="评论",g4e="复制状态值",j4e="按住 Cltr/⌘ 键打开链接",y4e="自定义设置",T4e="删除物件",D4e="编辑物件",d4e="编辑状态值",h4e="有效期:",z4e="从",w4e="最后改变了",I4e="质量",C4e="时间戳",p4e="用户",A4e="值",m4e="真的",f4e="值",O4e="警告:CRON 作业将在指定期间内每分钟运行一次!",E4e="警告:CRON 作业将在指定期间内每秒运行一次!",_4e="周期任务",x4e="日期",S4e="日",k4e="天",v4e="星期",Y4e="每",Q4e="每N天",b4e="每周的第 N 天",U4e="每周N天",$4e="每N小时一次",P4e="每N分钟",W4e="每N个月",J4e="每N秒",B4e="每天",R4e="一周的每一天",F4e="一周的每一天",G4e="每小时",H4e="每分钟",V4e="每月",Z4e="每秒",X4e="从",K4e="小时",q4e="间隔",eLe="间隔时间",tLe="无效的 CRON",sLe="分钟",iLe="月",rLe="一次",oLe="周期",nLe="秒",aLe="简单模式",MLe="特定的时间",cLe="特定的日子",uLe="一周中的特定日子",lLe="特定的一周",NLe="特定的小时",LLe="特定的分钟",gLe="特定的月份",jLe="特定的描述",yLe="时间",TLe="至",DLe="向导模式",dLe="全选",hLe="天文白天",zLe="天文夜晚",wLe="黎明",ILe="黄昏",CLe="黄金时段",pLe="黄金时段结束",ALe="天底",mLe="航海黎明",fLe="航海黄昏",OLe="夜晚",ELe="夜晚结束",_Le="正午",xLe="日出",SLe="日出结束",kLe="日落",vLe="日落开始",YLe="在",QLe="的%s",bLe="每天",ULe="每小时",$Le="每分钟",PLe="每月",WLe="每%s天",JLe="每%s小时",BLe="每%s分钟",RLe="每%s月",FLe="每%s周",GLe="每%s年",HLe="每周",VLe="每年",ZLe="从%s到%s",XLe="决不",KLe="在%s的%s上",qLe="在%s和%s上",ege="在每天",tge="%s",sge="%s和%s",ige="在%s上",rge="在%s和%s上",oge="在周末",nge="在工作日",age="将不再执行,因为起始时间已经是过去的时间了。",Mge="在%s上",cge="来自%s",uge="从执行到",lge="到%s",Nge="每",Lge="特定的时间",gge="从",jge="从到",yge="间隔时间",Tge="倒置",Dge="取消全选",dge="的",hge="周期",zge="每天",wge="日期",Ige="天",Cge="每",pge="每天",Age="每月",mge="每周",fge="每年",Oge="小时",Ege="分钟",_ge="月",xge="每月一次",Sge="一次",kge="特定的月份",vge="周",Yge="工作日",Qge="周末",bge="每周",Uge="工作日",$ge="年",Pge="每年",Wge="特定的时间",Jge="时间",Bge="至",Rge="生效",Fge="从",Gge="至",Hge="一整天",Vge="每月",Zge={"ra_%s links from aliases":"来自别名的 %s 个链接","ra_%s object(s) processed":"已处理%s个对象","ra_%s was imported":"对象已导入","ra_Accept license":"接受许可",ra_Actions:Ple,"ra_Add new child object to selected parent":"将新的子对象添加到选定的父对象","ra_Add objects tree from JSON file":"从JSON文件添加对象树","ra_Add row":"添加行","ra_Advanced options":"高级选项","ra_All items are filtered out":"所有项目都被过滤掉","ra_All objects":"所有对象",ra_Append:Wle,"ra_Append %s entries or replace existing?":"追加 %s 条目还是替换现有条目?","ra_Append or replace?":"追加还是替换?","ra_Are you sure?":"你确定吗?","ra_Auto (no custom columns)":"自动(无自定义列)","ra_Back to %s":"返回“%s”","ra_Background image":"背景图像",ra_Cancel:Jle,"ra_Cannot add items with set filter":"无法使用设置过滤器添加项目","ra_Cannot decode license":"无法解码许可证","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"无法确定位置:系统设置为空且浏览器中禁用了 GPS 检测",'ra_Cannot find "%s"':"找不到“%s”",'ra_Cannot read "%s"':"无法阅读“%s”","ra_Cannot read licenses: %s":"无法读取许可证:%s","ra_Cannot retrieve options, as instance is offline":"无法检索选项,因为实例处于脱机状态","ra_Cannot update attribute, because not found in the object":"无法更新属性,因为在对象中找不到","ra_Cannot upload":"无法上传",ra_Categories:Ble,"ra_Chained certificate":"链式证书","ra_Change color theme":"更改颜色主题","ra_Changed from":"更改为","ra_Channel → State":"频道→状态","ra_Check license":"检查许可证",ra_Checked:Rle,ra_Clear:Fle,"ra_Clear filter":"清除筛选","ra_Clear icon":"清除图标","ra_Click to see in full size":"点击查看完整尺寸","ra_Click to show":"点击显示","ra_Clone current row":"克隆当前行",ra_Close:Gle,"ra_Collapse all nodes":"收合所有节点","ra_Collapse one step node":"折叠一级",ra_Commercial:Hle,ra_Configure:Vle,"ra_Configure visible columns":"配置可见列","ra_Confirm deletion of %s":"确认删除%s",ra_Connected:Zle,ra_Continue:Xle,ra_Copied:Kle,"ra_Copied %s":'复制的"%s"',"ra_Copy content":"复制内容",ra_Create:qle,"ra_Create alias":"创建别名","ra_Create folder":"创建文件夹","ra_Create new folder in %s":"在%s中创建新文件夹",ra_Crop:e0e,"ra_Define CRON...":"定义 CRON...","ra_Define functions":"定义功能","ra_Define rooms":"定义房间","ra_Define schedule":"定义时间表","ra_Define schedule...":"定义时间表...",ra_Del:t0e,ra_Delete:s0e,"ra_Delete current row":"删除当前行","ra_Deselect all":"全部取消选择","ra_Device → Channel → State":"设备→频道→状态","ra_Disable/Enable translation":"禁用/启用翻译",ra_Discard:i0e,ra_Disconnected:r0e,"ra_Do not ask for next 2 hours in this session":"本次会话中不要询问接下来的 2 个小时","ra_Do not export values of states":"不导出状态值","ra_Do not use let's encrypt":"不要使用让我们加密","ra_Docker is not available":"Docker 不可用","ra_Docker is not installed or not running":"Docker 未安装或未运行","ra_Double click to reset table layout":"双击重置表格布局","ra_Drag 'n' drop some files here, or click to select files":"将一些文件拖放到此处,或单击以选择文件","ra_Drop file here":"将档案放在这里","ra_Drop the files here...":"把文件放在这里...","ra_Duplicate name":"名称重复","ra_Edit ACL":"编辑访问控制列表","ra_Edit alias":"编辑别名","ra_Edit custom config":"编辑自定义配置","ra_Edit full path":"编辑完整路径","ra_Edit function":"编辑功能","ra_Edit object field":"编辑对象字段","ra_Edit role":"编辑角色","ra_Edit room":"编辑室","ra_Edit value":"编辑值","ra_Enter the code from that page here":"在此处输入该页面的代码",ra_Error:o0e,"ra_Expand all nodes":"展开所有节点","ra_Expand one step node":"扩大一级","ra_Expand/Collapse card":"展开/折叠卡","ra_Export configuration section":"导出配置部分","ra_Export data to %s file":"将数据导出到 %s 文件","ra_Failed to open JSON File":"无法打开JSON文件","ra_Fallback custom certificates":"后备自定义证书","ra_File is too big. Max %sk allowed. Try use SVG.":"文件太大。允许的最大字节%s数。尝试使用 SVG。",ra_Filter:n0e,"ra_Filter and Data Actions":"过滤和数据操作","ra_Filter files":"过滤文件","ra_Folder name":"文件夹名称","ra_Folder → Channel → State":"文件夹→频道→状态","ra_Folder → Device → Channel → State":"文件夹→设备→频道→状态","ra_Folder → State":"文件夹→状态","ra_Folders always first":"资料夹永远优先",ra_Friday:a0e,"ra_From file":"从文件","ra_From text":"文本","ra_Get %s access":"获取 %s 访问权限","ra_Good luck":"祝你好运","ra_Hide empty folders":"隐藏空文件夹","ra_If no file will be created in the folder, it will disappear after the browser closed":"如果在该文件夹中未创建任何文件,则该文件将在浏览器关闭后消失","ra_If the button above does not work, you can authorize manually this app by visiting this url":"如果上面的按钮不起作用,您可以通过访问此网址手动授权此应用","ra_Import and add configuration section":"导入并添加配置部分","ra_Import and replace configuration section":"导入和替换配置部分","ra_Import data from %s file":"从 %s 文件导入数据","ra_Import from %s":"从 %s 导入","ra_Instance %s is alive":"实例 %s 是活动的","ra_Instance %s is not alive":"实例 %s 不存在","ra_Instance is not alive":"实例不存在","ra_Invalid CRON":"无效的 CRON","ra_Invalid JSON":"JSON 无效","ra_Invalid JSON file.":"无效的JSON文件。","ra_Invalid JSON format. Expected an array.":"JSON格式无效。应为数组。","ra_Invalid answer from server":"来自服务器的无效答案","ra_Invalid parent folder!":"父文件夹无效!","ra_Invalid structure":"结构无效","ra_JSON editor":"JSON 编辑器","ra_Last change":"最后一次变更",ra_Latitude:M0e,"ra_License %s":"许可证 %s","ra_License agreement":"许可协议","ra_License does not exist":"许可证不存在","ra_License expired on %s":"许可证已于 %s 过期",'ra_License for other product "%s"':"其他产品“%s”的许可证","ra_License is for version %s, but required version is %s.":"许可证适用于版本 %s,但所需版本为 %s。","ra_License must be converted":"许可证必须转换为更新版本。您可以在 iobroker.net 个人资料中执行此操作。","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"在许可证管理器中找不到许可证。您要从 iobroker.net 更新许可证吗?","ra_Listen on all IPs":"监听所有IP","ra_Load configuration from file":"从文件加载配置",ra_Logout:c0e,ra_Longitude:u0e,'ra_May not trigger "updateLicenses"':"可能不会触发“updateLicenses”",ra_Message:l0e,ra_Monday:N0e,"ra_Move down":"下移","ra_Move up":"提升",ra_Name:L0e,"ra_No data found in file":"文件中未找到数据","ra_No one license found in license manager":"许可证管理器中未找到任何许可证","ra_No response from admin":"管理员没有回应","ra_No response from the backend":"后端无响应",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"非专家只能在“ 0_userdata.0”或“ alias.0”中创建新对象。","ra_Not a number":"不是数字","ra_OAuth Client ID":"OAuth客户端ID","ra_OAuth Client secret":"OAuth 客户端密钥",ra_Objects:g0e,ra_Ok:j0e,"ra_On weekdays":"在工作日","ra_Only following structures of objects are available:":"仅以下对象结构可用:","ra_Only selected":"只选择","ra_Owner group":"所有者组","ra_Owner user":"所有者用户","ra_Passwords are not equal!":"密码不相等!","ra_Place your files here or click here to open the browse dialog":"将文件放在此处或单击此处打开浏览对话框","ra_Please allow popups in your browser for this page!":"请允许浏览器弹出此页面!","ra_Please confirm":"请确认","ra_Please create license":"请创建许可证","ra_Please enter the license":"请输入许可证","ra_Please select file...":"请选择文件...","ra_Please select object ID...":"请选择对象ID ...","ra_Port could be used by %s":"%s 可以使用端口","ra_Port is already used by %s":"端口已被 %s 使用","ra_Press ENTER Key to add new item":"按 ENTER 键添加新项目","ra_Private certificate":"私有证书",ra_Product:y0e,"ra_Public certificate":"公共证书","ra_Quality code":"质量代码","ra_Refresh tree":"刷新树","ra_Reload files":"重新载入文件",ra_Rename_Move_Copy:T0e,"ra_Renew %s access":"续订 %s 访问权限",ra_Repeat:D0e,ra_Replace:d0e,"ra_Request timed out":"请求超时","ra_Restrict to folder":"限制到文件夹",ra_Root:h0e,ra_Saturday:z0e,ra_Save:w0e,"ra_Save and close":"保存并关闭","ra_Save configuration to file":"将配置保存到文件","ra_Save objects tree as JSON file":"将对象树另存为JSON文件","ra_Select all":"全选","ra_Select color":"选择颜色","ra_Select predefined icon":"选择预定义图标","ra_Select type of export":"选择导出类型",ra_Selected:I0e,"ra_Selected %s object(s)":"选定的 %s 个对象","ra_Serial number (UUID)":"序列号 (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"许可证中的序列号 (UUID)“%s”用于其他设备。","ra_Session will expire in %s seconds. Continue?":"会话将在 %s 秒后过期。是否继续?","ra_Show all folders":"显示所有文件夹","ra_Show lines between rows":"显示行之间的线","ra_Show/Hide object descriptions":"显示/隐藏对象描述","ra_Show/hide filter input":"显示/隐藏过滤器输入","ra_Some data are not stored. Discard?":"部分数据未存储。丢弃?",ra_States:C0e,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"授权成功。令牌有效期至 %s,并将自动续订。","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"授权成功。令牌有效期至 %s,但由于实例未运行,令牌可能会过期。","ra_Suitable license not found in license manager":"在许可证管理器中找不到合适的许可证",ra_Sunday:p0e,"ra_Suppress question for next %s minutes":"在接下来的%s分钟内取消提问","ra_System language":"系统语言","ra_Take browser position":"从浏览器获取位置","ra_Take position from system settings":"从系统设置中获取位置",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"专家可以在任何地方创建对象,但要从第二层开始(例如“ vis.0”或“ javascript.0”)。","ra_The page you are looking for was not found":"未找到您要查找的页面","ra_The schedule will be executed every minute. Are you sure?":"该计划将每分钟执行一次。您确定吗?","ra_The schedule will be executed every second. Are you sure?":"该计划将每秒执行一次。你确定吗?",ra_Thursday:A0e,ra_Timestamp:m0e,"ra_Toggle expert mode":"切换专家模式","ra_Toggle the states view":"切换状态视图","ra_Toggle view mode":"切换检视模式","ra_Too big":"太大","ra_Too small":"太小","ra_Transparent dialog":"透明对话框",ra_Tuesday:f0e,"ra_Unknown error":"未知错误","ra_Unknown error!":"未知错误!",ra_Update:O0e,"ra_Upload file":"上传文件","ra_Use all available let's encrypt certificates":"使用所有可用的让我们加密证书","ra_Use iobroker.acme adapter for letsencrypt certificates":"使用 iobroker.acme 适配器获取 letsencrypt 证书","ra_Use system settings for position":"使用系统设置定位","ra_Used system settings":"使用的系统设置","ra_User files":"用户档案",ra_ValidTill:E0e,ra_Value:_0e,ra_Version:x0e,"ra_View file":"查看文件","ra_View: %s":"查看:%s",ra_Wednesday:S0e,ra_Width:k0e,"ra_YAML editor":"YAML 编辑器",ra_Yes:v0e,"ra_You can export all objects or just the selected branch.":"您可以导出所有对象或仅导出选定的分支。","ra_You can filter entries by entering here some text":"您可以通过在此处输入一些文本来过滤条目","ra_You can use * as wildcard":"您可以使用 * 作为通配符",ra___different__:Y0e,ra_aclEveryone_read_object:Q0e,ra_aclEveryone_read_state:b0e,ra_aclEveryone_write_object:U0e,ra_aclEveryone_write_state:$0e,ra_aclGroup_read_object:P0e,ra_aclGroup_read_state:W0e,ra_aclGroup_write_object:J0e,ra_aclGroup_write_state:B0e,ra_aclOwner_read_object:R0e,ra_aclOwner_read_state:F0e,ra_aclOwner_write_object:G0e,ra_aclOwner_write_state:H0e,ra_buttons:V0e,ra_changedFrom:Z0e,ra_close:X0e,ra_create_boolean_state:K0e,ra_create_channel:q0e,ra_create_device:eNe,ra_create_number_state:tNe,ra_create_state:sNe,ra_create_string_state:iNe,ra_daysShortText:rNe,ra_dow_Fr:oNe,ra_dow_Mo:nNe,ra_dow_Sa:aNe,ra_dow_Su:MNe,ra_dow_Th:cNe,ra_dow_Tu:uNe,ra_dow_We:lNe,ra_expertMode:NNe,ra_false:LNe,ra_fileType_all:gNe,ra_fileType_audio:jNe,ra_fileType_code:yNe,ra_fileType_images:TNe,ra_fileType_txt:DNe,ra_fileType_video:dNe,"ra_fileType_video,":"视频",ra_filter_customs:hNe,ra_filter_customs_without:zNe,ra_filter_func:wNe,ra_filter_id:INe,ra_filter_name:CNe,ra_filter_role:pNe,ra_filter_room:ANe,ra_filter_type:mNe,"ra_import data from %s file":"从 %s 文件导入数据",ra_invalidConfig:fNe,ra_lastChange:ONe,ra_locally:ENe,ra_month_Apr:_Ne,ra_month_Aug:xNe,ra_month_Dec:SNe,ra_month_Feb:kNe,ra_month_Jan:vNe,ra_month_Jul:YNe,ra_month_Jun:QNe,ra_month_Mai:bNe,ra_month_Mar:UNe,ra_month_Nov:$Ne,ra_month_Oct:PNe,ra_month_Sep:WNe,ra_months_Apr:JNe,ra_months_Aug:BNe,ra_months_Dec:RNe,ra_months_Feb:FNe,ra_months_Jan:GNe,ra_months_Jul:HNe,ra_months_Jun:VNe,ra_months_Mai:ZNe,ra_months_Mar:XNe,ra_months_Nov:KNe,ra_months_Oct:qNe,ra_months_Sep:e4e,"ra_no confirm for 5 mins":"5分钟内无需确认",ra_none:t4e,ra_object_changed_by:s4e,ra_object_changed_by_user:i4e,ra_otherConfig:r4e,ra_qualityCode:o4e,ra_repeat:n4e,ra_select_folder_hint:a4e,ra_show_all:M4e,ra_state_changed_by:c4e,ra_state_changed_from:u4e,ra_timestamp:l4e,ra_tooltip_ack:N4e,ra_tooltip_comment:L4e,ra_tooltip_copyState:g4e,ra_tooltip_ctrlForLink:j4e,ra_tooltip_customConfig:y4e,ra_tooltip_deleteObject:T4e,ra_tooltip_editObject:D4e,ra_tooltip_editState:d4e,ra_tooltip_expire:h4e,ra_tooltip_from:z4e,ra_tooltip_lc:w4e,ra_tooltip_quality:I4e,ra_tooltip_ts:C4e,ra_tooltip_user:p4e,ra_tooltip_value:A4e,ra_true:m4e,"ra_use seconds":"用秒",ra_val:f4e,"ra_via internet":"通过互联网",ra_warning_every_minute:O4e,ra_warning_every_second:E4e,sc_cron:_4e,sc_date:x4e,sc_dates:S4e,sc_dow:k4e,sc_dows:v4e,sc_every:Y4e,sc_everyN_dates:Q4e,sc_everyN_dow:b4e,sc_everyN_dows:U4e,sc_everyN_hours:$4e,sc_everyN_minutes:P4e,sc_everyN_months:W4e,sc_everyN_seconds:J4e,sc_every_dates:B4e,sc_every_dow:R4e,sc_every_dows:F4e,sc_every_hours:G4e,sc_every_minutes:H4e,sc_every_months:V4e,sc_every_seconds:Z4e,sc_from:X4e,sc_hours:K4e,sc_interval:q4e,sc_intervalBetween:eLe,sc_invalid_cron:tLe,sc_minutes:sLe,sc_months:iLe,sc_once:rLe,sc_period:oLe,sc_seconds:nLe,sc_simple:aLe,sc_specific:MLe,sc_specific_dates:cLe,sc_specific_dow:uLe,sc_specific_dows:lLe,sc_specific_hours:NLe,sc_specific_minutes:LLe,sc_specific_months:gLe,sc_specific_seconds:jLe,sc_time:yLe,sc_to:TLe,sc_wizard:DLe,sch_all:dLe,sch_astroDay:hLe,sch_astroNight:zLe,sch_astro_dawn:wLe,sch_astro_dusk:ILe,sch_astro_goldenHour:CLe,sch_astro_goldenHourEnd:pLe,sch_astro_nadir:ALe,sch_astro_nauticalDawn:mLe,sch_astro_nauticalDusk:fLe,sch_astro_night:OLe,sch_astro_nightEnd:ELe,sch_astro_solarNoon:_Le,sch_astro_sunrise:xLe,sch_astro_sunriseEnd:SLe,sch_astro_sunset:kLe,sch_astro_sunsetStart:vLe,sch_at:YLe,sch_desc_atTime:QLe,sch_desc_everyDay:bLe,sch_desc_everyHour:ULe,sch_desc_everyMinute:$Le,sch_desc_everyMonth:PLe,sch_desc_everyNDay:WLe,sch_desc_everyNHours:JLe,sch_desc_everyNMinutes:BLe,sch_desc_everyNMonths:RLe,sch_desc_everyNWeeks:FLe,sch_desc_everyNYears:GLe,sch_desc_everyWeek:HLe,sch_desc_everyYear:VLe,sch_desc_intervalFromTo:ZLe,sch_desc_never:XLe,sch_desc_onDate:KLe,sch_desc_onDates:qLe,sch_desc_onEveryDate:ege,sch_desc_onMonth:tge,sch_desc_onMonths:sge,sch_desc_onWeekday:ige,sch_desc_onWeekdays:rge,sch_desc_onWeekends:oge,sch_desc_onWorkdays:nge,sch_desc_onceInPast:age,sch_desc_once_on:Mge,sch_desc_validFrom:cge,sch_desc_validFromTo:uge,sch_desc_validTo:lge,sch_every:Nge,sch_exactTime:Lge,sch_from:gge,sch_fromTo:jge,sch_intervalTime:yge,sch_invert:Tge,sch_no_one:Dge,sch_on:dge,sch_period:hge,sch_periodDaily:zge,sch_periodDates:wge,sch_periodDay:Ige,sch_periodEvery:Cge,sch_periodEveryDay:pge,sch_periodEveryMonth:Age,sch_periodEveryWeek:mge,sch_periodEveryYear:fge,sch_periodHours:Oge,sch_periodMinutes:Ege,sch_periodMonth:_ge,sch_periodMonthly:xge,sch_periodOnce:Sge,sch_periodSpecificMonths:kge,sch_periodWeek:vge,sch_periodWeekdays:Yge,sch_periodWeekend:Qge,sch_periodWeekly:bge,sch_periodWorkdays:Uge,sch_periodYear:$ge,sch_periodYearly:Pge,sch_specificTime:Wge,sch_time:Jge,sch_to:Bge,sch_valid:Rge,sch_validFrom:Fge,sch_validTo:Gge,sch_wholeDay:Hge,sch_yearEveryMonth:Vge},Xge={en:ip,de:gO,ru:C5,pt:kb,nl:B7,fr:eR,it:uZ,es:hte,pl:Ene,uk:$le,"zh-cn":Zge},Kge=` +`).forEach(n=>{if(!n.trim())return;const M=n.indexOf(":");if(M!==-1){const c=n.substring(0,M).trim();let l=n.substring(M+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[c]=!0:l==="false"?t[c]=!1:parseFloat(l).toString()===t[c]?t[c]=parseFloat(l):t[c]=l}else t[n.trim()]=!0}),e=e.substring(i+7))}return{header:t,body:e}}static MDremoveDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(i=>e=e.replace(i,"")),e}static generateFile(e,t){const i=document.createElement("a");i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),i.setAttribute("download",e),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}static quality2text(e){const t=e&4294901760,i=Cn[e];let r;return i?r=[i]:e&1?r=[Cn[1],`0x${(e&65534).toString(16)}`]:e&2?r=[Cn[2],`0x${(e&65533).toString(16)}`]:r=[`0x${e.toString(16)}`],t&&r.push(`0x${(t>>16).toString(16).toUpperCase()}`),r}static clone(e){return JSON.parse(JSON.stringify(e))}static getStates(e){var r;const t=(r=e==null?void 0:e.common)==null?void 0:r.states;let i;if(t)if(typeof t=="string"&&t[0]==="{")try{i=JSON.parse(t)}catch{console.error(`Cannot parse states: ${t}`),i=null}else if(typeof t=="string"){const o=t.split(";");i={};for(let n=0;ni[n]=o):(e==null?void 0:e.common.type)==="string"?t.forEach(o=>i[o]=o):(e==null?void 0:e.common.type)==="boolean"&&(i.false=t[0],i.true=t[1])):typeof t=="object"&&(i=t);return i||null}static async getSvg(e){const i=await(await fetch(e)).blob();return new Promise(r=>{const o=new FileReader;o.onload=()=>{var n;return r(((n=o.result)==null?void 0:n.toString())||"")},o.readAsDataURL(i)})}static detectMimeType(e){const t=Object.keys(Bu).find(i=>e.startsWith(i));return t?Bu[t]:null}static isStableRepository(e){return!!(typeof e=="string"&&e.toLowerCase().startsWith("stable")||e&&typeof e!="string"&&e.find(t=>t.toLowerCase().startsWith("stable")))}static isStringInteger(e){return typeof e=="number"?Math.round(e)===e:parseInt(e,10).toString()===e}static isValidDate(e){return e instanceof Date&&!isNaN(e)}static getStyle(e,...t){const i={};for(let r=0;r{if(typeof t[r][o]=="function")i[o]=t[r][o](e);else if(typeof t[r][o]=="object"){const n=t[r][o];i[o]={},Object.keys(n).forEach(M=>{typeof n[M]=="function"?i[o][M]=n(e):(n[M]||n[M]===0)&&(i[o][M]=n[M])})}else(t[r][o]||t[r][o]===0)&&(i[o]=t[r][o])});return i}}const pn={buttonIcon:{marginRight:8}};class Fh extends a.Component{isIFrame;constructor(e){super(e);const t=e.newReact===void 0?!0:e.newReact;if(e.isIFrame!==void 0)this.isIFrame=e.isIFrame;else try{this.isIFrame=!t&&window.self!==window.top}catch{this.isIFrame=!t}}render(){const e=this.props.noTextOnButtons,t={borderRadius:this.props.theme.saveToolbar.button.borderRadius||3,height:this.props.theme.saveToolbar.button.height||32},i={bottom:this.isIFrame?38:0,left:this.props.paddingLeft||0,right:0,position:"absolute",background:this.props.theme.saveToolbar.background};return this.props.dense&&(i.minHeight=48),this.props.error&&(t.border="1px solid red"),a.createElement(CN,{style:i},a.createElement(bt,{variant:"extended","aria-label":"Save",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!1),style:t},a.createElement(Xn,{style:e?void 0:pn.buttonIcon}),!e&&D.t("ra_Save")),a.createElement(bt,{variant:"extended","aria-label":"Save and close",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!0),style:{...t,marginLeft:10}},a.createElement(Xn,{style:e?void 0:pn.buttonIcon}),e?"+":D.t("ra_Save and close"),e&&a.createElement(we,null)),a.createElement("div",{style:{flexGrow:1}}),a.createElement(bt,{variant:"extended","aria-label":"Close",onClick:()=>this.props.onClose(),style:t},a.createElement(we,{style:e?void 0:pn.buttonIcon}),!e&&D.t("ra_Close")))}}const Ru={suppress:{fontSize:12},suppressRoot:{marginTop:"16px"}};class _4 extends De{constructor(e){if(super(e),!this.props.dialogName&&this.props.suppressQuestionMinutes)throw new Error("dialogName required if suppressQuestionMinutes used");let t=!1;this.props.suppressQuestionMinutes&&(t=parseInt((window._localStorage||window.localStorage).getItem(this.props.dialogName),10)||0,t?Date.now()>t&&((window._localStorage||window.localStorage).removeItem(this.props.dialogName),t=!1):t=!1),this.state={suppress:t}}handleOk(){this.state.suppress&&(window._localStorage||window.localStorage).setItem(this.props.dialogName,Date.now()+(this.props.suppressQuestionMinutes||2)*6e4),this.props.onClose&&this.props.onClose(!0)}handleCancel(){this.props.onClose&&this.props.onClose(!1)}render(){return typeof this.state.suppress=="number"?(setTimeout(()=>this.props.onClose&&this.props.onClose(!0),100),null):a.createElement(Ae,{open:!0,maxWidth:"md",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:(e,t)=>{t!=="backdropClick"&&t!=="escapeKeyDown"&&this.handleCancel()},"aria-labelledby":"ar_confirmation_dialog_title","aria-describedby":"ar_confirmation_dialog_description"},a.createElement(fe,{id:"ar_confirmation_dialog_title"},this.props.title||D.t("ra_Are you sure?")),a.createElement(_e,null,a.createElement(as,{id:"ar_confirmation_dialog_description"},this.props.icon||null,this.props.text,this.props.suppressQuestionMinutes?a.createElement("br",null):null,this.props.suppressQuestionMinutes?a.createElement(V,{sx:{"& .FormControlLabel-label":Ru.suppress,"&.FormControlLabel-root":Ru.suppressRoot},control:a.createElement(ue,{id:`ar_dialog_confirm_suppress_${this.props.dialogName||""}`,checked:!!this.state.suppress,onChange:()=>this.setState({suppress:!this.state.suppress})}),label:this.props.suppressText||D.t("ra_Suppress question for next %s minutes",(this.props.suppressQuestionMinutes||2).toString())}):null)),a.createElement(xe,null,a.createElement(q,{id:`ar_dialog_confirm_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{id:`ar_dialog_confirm_cancel_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:a.createElement(we,null)},this.props.cancel||D.t("ra_Cancel"))))}}class x4 extends De{handleOk(){this.props.onClose&&this.props.onClose()}render(){return a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},a.createElement(fe,{id:"ar_alert_dialog_title"},this.props.title||D.t("ra_Error")),a.createElement(_e,null,a.createElement(as,{id:"ar_alert_dialog_description"},this.props.text||D.t("ra_Unknown error!"))),a.createElement(xe,null,a.createElement(q,{id:"ar_dialog_error_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},D.t("ra_Ok"))))}}const Gh="Actions",Hh="Append",Vh="Cancel",Zh="Categories",Xh="Checked",Kh="Delete",qh="Close",ez="Commercial",tz="Configure",sz="Connected",iz="Continue",rz="Copied",oz="Create",nz="Crop",az="Delete",Mz="Delete",cz="Discard",uz="Disconnected",lz="Error",Nz="Filter",Lz="Friday",gz="Latitude",jz="Logout",yz="Longitude",Tz="Message",Dz="Monday",dz="Name",hz="Objects",zz="Ok",wz="Product",Iz="Rename/Move/Copy",Cz="Repeat",pz="Replace",Az="Root",mz="Saturday",fz="Save",Oz="Selected",Ez="States",_z="Sunday",xz="Thursday",Sz="Timestamp",kz="Tuesday",vz="Update",Yz="Valid till",Qz="Value",bz="Version",Uz="Wednesday",$z="Width",Pz="Yes",Wz="different",Jz="Everyone can read object",Bz="Everyone can read state",Rz="Everyone can write object",Fz="Everyone can write state",Gz="Group can read object",Hz="Group can read state",Vz="Group can write object",Zz="Group can write state",Xz="Owner can read object",Kz="Owner can read state",qz="Owner can write object",ew="Owner can write state",tw="Buttons",sw="Changed from",iw="close",rw="Create boolean state",ow="Create channel",nw="Create device",aw="Create number state",Mw="Create state",cw="Create string state",uw="days",lw="Fr",Nw="Mo",Lw="Sa",gw="Su",jw="Th",yw="Tu",Tw="We",Dw="Expert mode",dw="FALSE",hw="All files",zw="Audio",ww="Code/JSON",Iw="Images",Cw="Text",pw="Video",Aw="Settings",mw="without",fw="Function",Ow="ID",Ew="Name",_w="Role",xw="Room",Sw="Type",kw="Invalid settings",vw="Last change",Yw="locally",Qw="Apr",bw="Aug",Uw="Dec",$w="Feb",Pw="Jan",Ww="Jul",Jw="Jun",Bw="Mai",Rw="Mar",Fw="Nov",Gw="Oct",Hw="Sep",Vw="Apr",Zw="Aug",Xw="Dec",Kw="Feb",qw="Jan",eI="Jul",tI="Jun",sI="Mai",iI="Mar",rI="Nov",oI="Oct",nI="Sep",aI="none",MI="Object changed by",cI="Object last changed at",uI="Settings from other adapter %s",lI="Quality code",NI="repeat",LI='To select folder, just hold the key "shift" by clicking the folder.',gI="Show all",jI="State changed by",yI="Object changed from",TI="Timestamp",DI="Acknowledged",dI="Comment",hI="Copy the state value",zI="Hold Cltr/⌘ key to open the link",wI="Custom settings",II="Delete object",CI="Edit object",pI="Edit the state value",AI="Expires in",mI="From",fI="Last changed",OI="Quality",EI="Time stamp",_I="User",xI="Value",SI="TRUE",kI="Value",vI="Warning: The CRON job will run every minute during the specified period!",YI="Warning: The CRON job will run every second during the specified period!",QI="CRON",bI="Date",UI="Dates",$I="Day",PI="Day of week",WI="Every",JI="every N days",BI="every Nth day of the week",RI="every N day of week",FI="every N hours",GI="every N minutes",HI="every N months",VI="every N seconds",ZI="every day",XI="every day of the week",KI="every day of the week",qI="every hour",eC="every minute",tC="every month",sC="every second",iC="From",rC="Hours",oC="Interval",nC="Interval between",aC="Invalid CRON",MC="Minutes",cC="months",uC="Once",lC="Period",NC="Seconds",LC="Simple",gC="Specific time",jC="specific dates",yC="specific day(s) of the week",TC="specific day of weeks",DC="specific hours",dC="specific minutes",hC="specific months",zC="specific seconds",wC="Time",IC="To",CC="Wizard",pC="all",AC="Astro day",mC="Astro night",fC="Dawn",OC="Dusk",EC="Golden hour",_C="Golden hour end",xC="Nadir",SC="Nautical dawn",kC="Nautical dusk",vC="Night",YC="Night end",QC="Solar noon",bC="Sunrise",UC="Sunrise end",$C="Sunset",PC="Sunset start",WC="at",JC="at %s",BC="every day",RC="every hour",FC="every minute",GC="every month",HC="every %s day",VC="every %s hours",ZC="every %s minutes",XC="every %s months",KC="every %s weeks",qC="every %s years",e2="every week",t2="every year",s2="from %s to %s",i2="never",r2="on %s of %s",o2="on %s and %s of",n2="on every date of",a2="%s",M2="%s and %s",c2="on %s",u2="on %s and %s",l2="on weekends",N2="on working days",L2="will ne be not executed any more, because start is in the past",g2="on %s",j2="from %s",y2="Execute from to",T2="to %s",D2="every",d2="Specific time",h2="from",z2="From-to",w2="Interval time",I2="invert",C2="none",p2="on",A2="Period",m2="Daily",f2="Dates",O2="Day",E2="Every",_2="Every day",x2="Every month",S2="Every week",k2="Every year",v2="Hours",Y2="Minutes",Q2="month",b2="Monthly",U2="Once",$2="Specific months",P2="Week",W2="Weekdays",J2="Weekend",B2="Weekly",R2="Workdays",F2="Year",G2="Yearly",H2="Specific time",V2="Time",Z2="to",X2="Valid",K2="from",q2="to",ep="Whole day",tp="every month",sp={"ra_%s links from aliases":"%s links from aliases","ra_%s object(s) processed":"%s object(s) processed","ra_%s was imported":"%s was imported","ra_Accept license":"Accept license",ra_Actions:Gh,"ra_Add new child object to selected parent":"Add new child object to selected parent","ra_Add objects tree from JSON file":"Add objects tree from JSON file","ra_Add row":"Add row","ra_Advanced options":"Advanced options","ra_All items are filtered out":"All items are filtered out","ra_All objects":"All objects",ra_Append:Hh,"ra_Append %s entries or replace existing?":"Append %s entries or replace existing?","ra_Append or replace?":"Append or replace?","ra_Are you sure?":"Are you sure?","ra_Auto (no custom columns)":"Auto (no custom columns)","ra_Back to %s":"Back to %s","ra_Background image":"Background image",ra_Cancel:Vh,"ra_Cannot add items with set filter":"Cannot add items with set filter","ra_Cannot decode license":"Cannot decode license","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Cannot determine position: System settings are empty and GPS detection is disabled in browser",'ra_Cannot find "%s"':'Cannot find "%s"','ra_Cannot read "%s"':'Cannot read "%s"',"ra_Cannot read licenses: %s":"Cannot read licenses: %s","ra_Cannot retrieve options, as instance is offline":"Cannot retrieve options, as instance is offline","ra_Cannot update attribute, because not found in the object":"Cannot update attribute, because not found in the object","ra_Cannot upload":"Cannot upload",ra_Categories:Zh,"ra_Chained certificate":"Chained certificate","ra_Change color theme":"Change color theme","ra_Changed from":"Changed from","ra_Channel → State":"Channel → State","ra_Check license":"Check license",ra_Checked:Xh,ra_Clear:Kh,"ra_Clear filter":"Clear filter","ra_Clear icon":"Clear icon","ra_Click to see in full size":"Click to see in full size","ra_Click to show":"Click to show","ra_Clone current row":"Clone current row",ra_Close:qh,"ra_Collapse all nodes":"Collapse all nodes","ra_Collapse one step node":"Collapse one level",ra_Commercial:ez,ra_Configure:tz,"ra_Configure visible columns":"Configure visible columns","ra_Confirm deletion of %s":"Confirm deletion of %s",ra_Connected:sz,ra_Continue:iz,ra_Copied:rz,"ra_Copied %s":'Copied "%s"',"ra_Copy content":"Copy content",ra_Create:oz,"ra_Create alias":"Create alias","ra_Create folder":"Create folder","ra_Create new folder in %s":"Create new folder in %s",ra_Crop:nz,"ra_Define CRON...":"Define CRON...","ra_Define functions":"Define functions","ra_Define rooms":"Define rooms","ra_Define schedule":"Define schedule","ra_Define schedule...":"Define schedule...",ra_Del:az,ra_Delete:Mz,"ra_Delete current row":"Delete current row","ra_Deselect all":"Unselect all","ra_Device → Channel → State":"Device → Channel → State","ra_Disable/Enable translation":"Disable/Enable translation",ra_Discard:cz,ra_Disconnected:uz,"ra_Do not ask for next 2 hours in this session":"Do not ask for next 2 hours in this session","ra_Do not export values of states":"Do not export values of states","ra_Do not use let's encrypt":"Do not use let's encrypt","ra_Docker is not available":"Docker is not available","ra_Docker is not installed or not running":"Docker is not installed or not running","ra_Double click to reset table layout":"Double click to reset table layout","ra_Drag 'n' drop some files here, or click to select files":"Drag 'n' drop some files here, or click to select files","ra_Drop file here":"Drop file here","ra_Drop the files here...":"Drop the file here...","ra_Duplicate name":"Duplicate name","ra_Edit ACL":"Edit ACL","ra_Edit alias":"Edit alias","ra_Edit custom config":"Edit custom config","ra_Edit full path":"Edit full path","ra_Edit function":"Edit function","ra_Edit object field":"Edit object field","ra_Edit role":"Edit role","ra_Edit room":"Edit room","ra_Edit value":"Edit value","ra_Enter the code from that page here":"Enter the code from that page here",ra_Error:lz,"ra_Expand all nodes":"Expand all nodes","ra_Expand one step node":"Expand one level","ra_Expand/Collapse card":"Expand/Collapse card","ra_Export configuration section":"Export configuration section","ra_Export data to %s file":"Export data to %s file","ra_Failed to open JSON File":"Failed to open JSON File","ra_Fallback custom certificates":"Fallback custom certificates","ra_File is too big. Max %sk allowed. Try use SVG.":"File is too big. Max %sk allowed. Try use SVG.",ra_Filter:Nz,"ra_Filter and Data Actions":"Filter and Data Actions","ra_Filter files":"Filter files","ra_Folder name":"Folder name","ra_Folder → Channel → State":"Folder → Channel → State","ra_Folder → Device → Channel → State":"Folder → Device → Channel → State","ra_Folder → State":"Folder → State","ra_Folders always first":"Folders always first",ra_Friday:Lz,"ra_From file":"From file","ra_From text":"From text","ra_Get %s access":"Get %s access","ra_Good luck":"Good luck","ra_Hide empty folders":"Hide empty folders","ra_If no file will be created in the folder, it will disappear after the browser closed":"If no file will be created in the folder, it will disappear after the browser closed","ra_If the button above does not work, you can authorize manually this app by visiting this url":"If the button above does not work, you can authorize manually this app by visiting this url","ra_Import and add configuration section":"Import and add configuration section","ra_Import and replace configuration section":"Import and replace configuration section","ra_Import data from %s file":"Import data from %s file","ra_Import from %s":"Import from %s","ra_Instance %s is alive":"Instance %s is alive","ra_Instance %s is not alive":"Instance %s is not alive","ra_Instance is not alive":"Instance is not alive","ra_Invalid CRON":"Invalid CRON","ra_Invalid JSON":"Invalid JSON","ra_Invalid JSON file.":"Invalid JSON file.","ra_Invalid JSON format. Expected an array.":"Invalid JSON format. Expected an array.","ra_Invalid answer from server":"Invalid answer from server","ra_Invalid parent folder!":"Invalid parent folder!","ra_Invalid structure":"Invalid structure","ra_JSON editor":"JSON editor","ra_Last change":"Last change",ra_Latitude:gz,"ra_License %s":"License %s","ra_License agreement":"License agreement","ra_License does not exist":"License does not exist","ra_License expired on %s":"License expired on %s",'ra_License for other product "%s"':'License for other product "%s"',"ra_License is for version %s, but required version is %s.":"License is for version %s, but required version is %s.","ra_License must be converted":"License must be converted to newer version. You can do it in your iobroker.net profile.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"License not found in the license manager. Do you want to update licenses from iobroker.net?","ra_Listen on all IPs":"Listen on all IPs","ra_Load configuration from file":"Load configuration from file",ra_Logout:jz,ra_Longitude:yz,'ra_May not trigger "updateLicenses"':'May not trigger "updateLicenses"',ra_Message:Tz,ra_Monday:Dz,"ra_Move down":"Move down","ra_Move up":"Move up",ra_Name:dz,"ra_No data found in file":"No data found in file","ra_No one license found in license manager":"No one license found in license manager","ra_No response from admin":"No response from admin","ra_No response from the backend":"No response from the backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Non-experts may create new objects only in "0_userdata.0" or "alias.0".',"ra_Not a number":"Not a number","ra_OAuth Client ID":"OAuth Client ID","ra_OAuth Client secret":"OAuth Client secret",ra_Objects:hz,ra_Ok:zz,"ra_On weekdays":"On weekdays","ra_Only following structures of objects are available:":"Only following structures of objects are available:","ra_Only selected":"Only selected","ra_Owner group":"Owner group","ra_Owner user":"Owner user","ra_Passwords are not equal!":"Passwords are not equal!","ra_Place your files here or click here to open the browse dialog":"Place your files here or click here to open the browse dialog","ra_Please allow popups in your browser for this page!":"Please allow popups in your browser for this page!","ra_Please confirm":"Please confirm","ra_Please create license":"Please create license","ra_Please enter the license":"Please enter the license","ra_Please select file...":"Please select file...","ra_Please select object ID...":"Please select object ID...","ra_Port could be used by %s":"Port could be used by %s","ra_Port is already used by %s":"Port is already used by %s","ra_Press ENTER Key to add new item":"Press ENTER Key to add new item","ra_Private certificate":"Private certificate",ra_Product:wz,"ra_Public certificate":"Public certificate","ra_Quality code":"Quality","ra_Refresh tree":"Refresh tree","ra_Reload files":"Reload files",ra_Rename_Move_Copy:Iz,"ra_Renew %s access":"Renew %s access",ra_Repeat:Cz,ra_Replace:pz,"ra_Request timed out":"Request timed out","ra_Restrict to folder":"Restrict to folder",ra_Root:Az,ra_Saturday:mz,ra_Save:fz,"ra_Save and close":"Save and close","ra_Save configuration to file":"Save configuration to file","ra_Save objects tree as JSON file":"Save objects tree as JSON file","ra_Select all":"Select all","ra_Select color":"Select color","ra_Select predefined icon":"Select predefined icon","ra_Select type of export":"Select type of export",ra_Selected:Oz,"ra_Selected %s object(s)":"Selected %s object(s)","ra_Serial number (UUID)":"Serial number (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serial number (UUID) "%s" in license is for other device.',"ra_Session will expire in %s seconds. Continue?":"Session will expire in %s seconds. Continue?","ra_Show all folders":"Show all folders","ra_Show lines between rows":"Show lines between rows","ra_Show/Hide object descriptions":"Show/Hide object descriptions","ra_Show/hide filter input":"Show/hide filter input","ra_Some data are not stored. Discard?":"Some data are not stored. Discard?",ra_States:Ez,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Successfully authorized. Token valid till %s and will be automatically renewed.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Successfully authorized. Token valid till %s but it can expire as the instance is not running.","ra_Suitable license not found in license manager":"Suitable license not found in license manager",ra_Sunday:_z,"ra_Suppress question for next %s minutes":"Suppress question for next %s minutes","ra_System language":"System language","ra_Take browser position":"Take position from browser","ra_Take position from system settings":"Take position from system settings",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").',"ra_The page you are looking for was not found":"The page you are looking for was not found","ra_The schedule will be executed every minute. Are you sure?":"The schedule will be executed every minute. Are you sure?","ra_The schedule will be executed every second. Are you sure?":"The schedule will be executed every second. Are you sure?",ra_Thursday:xz,ra_Timestamp:Sz,"ra_Toggle expert mode":"Toggle expert mode","ra_Toggle the states view":"Toggle the states view","ra_Toggle view mode":"Toggle view mode","ra_Too big":"Too big","ra_Too small":"Too small","ra_Transparent dialog":"Transparent dialog",ra_Tuesday:kz,"ra_Unknown error":"Unknown error","ra_Unknown error!":"Unknown error!",ra_Update:vz,"ra_Upload file":"Upload file","ra_Use all available let's encrypt certificates":"Use all available let's encrypt certificates","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use iobroker.acme adapter for letsencrypt certificates","ra_Use system settings for position":"Use system settings for position","ra_Used system settings":"Used system settings","ra_User files":"User files",ra_ValidTill:Yz,ra_Value:Qz,ra_Version:bz,"ra_View file":"View file","ra_View: %s":"View: %s",ra_Wednesday:Uz,ra_Width:$z,"ra_YAML editor":"YAML editor",ra_Yes:Pz,"ra_You can export all objects or just the selected branch.":"You can export all objects or just the selected branch.","ra_You can filter entries by entering here some text":"You can filter entries by entering here some text","ra_You can use * as wildcard":"You can use * as wildcard",ra___different__:Wz,ra_aclEveryone_read_object:Jz,ra_aclEveryone_read_state:Bz,ra_aclEveryone_write_object:Rz,ra_aclEveryone_write_state:Fz,ra_aclGroup_read_object:Gz,ra_aclGroup_read_state:Hz,ra_aclGroup_write_object:Vz,ra_aclGroup_write_state:Zz,ra_aclOwner_read_object:Xz,ra_aclOwner_read_state:Kz,ra_aclOwner_write_object:qz,ra_aclOwner_write_state:ew,ra_buttons:tw,ra_changedFrom:sw,ra_close:iw,ra_create_boolean_state:rw,ra_create_channel:ow,ra_create_device:nw,ra_create_number_state:aw,ra_create_state:Mw,ra_create_string_state:cw,ra_daysShortText:uw,ra_dow_Fr:lw,ra_dow_Mo:Nw,ra_dow_Sa:Lw,ra_dow_Su:gw,ra_dow_Th:jw,ra_dow_Tu:yw,ra_dow_We:Tw,ra_expertMode:Dw,ra_false:dw,ra_fileType_all:hw,ra_fileType_audio:zw,ra_fileType_code:ww,ra_fileType_images:Iw,ra_fileType_txt:Cw,ra_fileType_video:pw,"ra_fileType_video,":"Video",ra_filter_customs:Aw,ra_filter_customs_without:mw,ra_filter_func:fw,ra_filter_id:Ow,ra_filter_name:Ew,ra_filter_role:_w,ra_filter_room:xw,ra_filter_type:Sw,"ra_import data from %s file":"Import data from %s file",ra_invalidConfig:kw,ra_lastChange:vw,ra_locally:Yw,ra_month_Apr:Qw,ra_month_Aug:bw,ra_month_Dec:Uw,ra_month_Feb:$w,ra_month_Jan:Pw,ra_month_Jul:Ww,ra_month_Jun:Jw,ra_month_Mai:Bw,ra_month_Mar:Rw,ra_month_Nov:Fw,ra_month_Oct:Gw,ra_month_Sep:Hw,ra_months_Apr:Vw,ra_months_Aug:Zw,ra_months_Dec:Xw,ra_months_Feb:Kw,ra_months_Jan:qw,ra_months_Jul:eI,ra_months_Jun:tI,ra_months_Mai:sI,ra_months_Mar:iI,ra_months_Nov:rI,ra_months_Oct:oI,ra_months_Sep:nI,"ra_no confirm for 5 mins":"no confirm for 5 mins",ra_none:aI,ra_object_changed_by:MI,ra_object_changed_by_user:cI,ra_otherConfig:uI,ra_qualityCode:lI,ra_repeat:NI,ra_select_folder_hint:LI,ra_show_all:gI,ra_state_changed_by:jI,ra_state_changed_from:yI,ra_timestamp:TI,ra_tooltip_ack:DI,ra_tooltip_comment:dI,ra_tooltip_copyState:hI,ra_tooltip_ctrlForLink:zI,ra_tooltip_customConfig:wI,ra_tooltip_deleteObject:II,ra_tooltip_editObject:CI,ra_tooltip_editState:pI,ra_tooltip_expire:AI,ra_tooltip_from:mI,ra_tooltip_lc:fI,ra_tooltip_quality:OI,ra_tooltip_ts:EI,ra_tooltip_user:_I,ra_tooltip_value:xI,ra_true:SI,"ra_use seconds":"use seconds",ra_val:kI,"ra_via internet":"via internet",ra_warning_every_minute:vI,ra_warning_every_second:YI,sc_cron:QI,sc_date:bI,sc_dates:UI,sc_dow:$I,sc_dows:PI,sc_every:WI,sc_everyN_dates:JI,sc_everyN_dow:BI,sc_everyN_dows:RI,sc_everyN_hours:FI,sc_everyN_minutes:GI,sc_everyN_months:HI,sc_everyN_seconds:VI,sc_every_dates:ZI,sc_every_dow:XI,sc_every_dows:KI,sc_every_hours:qI,sc_every_minutes:eC,sc_every_months:tC,sc_every_seconds:sC,sc_from:iC,sc_hours:rC,sc_interval:oC,sc_intervalBetween:nC,sc_invalid_cron:aC,sc_minutes:MC,sc_months:cC,sc_once:uC,sc_period:lC,sc_seconds:NC,sc_simple:LC,sc_specific:gC,sc_specific_dates:jC,sc_specific_dow:yC,sc_specific_dows:TC,sc_specific_hours:DC,sc_specific_minutes:dC,sc_specific_months:hC,sc_specific_seconds:zC,sc_time:wC,sc_to:IC,sc_wizard:CC,sch_all:pC,sch_astroDay:AC,sch_astroNight:mC,sch_astro_dawn:fC,sch_astro_dusk:OC,sch_astro_goldenHour:EC,sch_astro_goldenHourEnd:_C,sch_astro_nadir:xC,sch_astro_nauticalDawn:SC,sch_astro_nauticalDusk:kC,sch_astro_night:vC,sch_astro_nightEnd:YC,sch_astro_solarNoon:QC,sch_astro_sunrise:bC,sch_astro_sunriseEnd:UC,sch_astro_sunset:$C,sch_astro_sunsetStart:PC,sch_at:WC,sch_desc_atTime:JC,sch_desc_everyDay:BC,sch_desc_everyHour:RC,sch_desc_everyMinute:FC,sch_desc_everyMonth:GC,sch_desc_everyNDay:HC,sch_desc_everyNHours:VC,sch_desc_everyNMinutes:ZC,sch_desc_everyNMonths:XC,sch_desc_everyNWeeks:KC,sch_desc_everyNYears:qC,sch_desc_everyWeek:e2,sch_desc_everyYear:t2,sch_desc_intervalFromTo:s2,sch_desc_never:i2,sch_desc_onDate:r2,sch_desc_onDates:o2,sch_desc_onEveryDate:n2,sch_desc_onMonth:a2,sch_desc_onMonths:M2,sch_desc_onWeekday:c2,sch_desc_onWeekdays:u2,sch_desc_onWeekends:l2,sch_desc_onWorkdays:N2,sch_desc_onceInPast:L2,sch_desc_once_on:g2,sch_desc_validFrom:j2,sch_desc_validFromTo:y2,sch_desc_validTo:T2,sch_every:D2,sch_exactTime:d2,sch_from:h2,sch_fromTo:z2,sch_intervalTime:w2,sch_invert:I2,sch_no_one:C2,sch_on:p2,sch_period:A2,sch_periodDaily:m2,sch_periodDates:f2,sch_periodDay:O2,sch_periodEvery:E2,sch_periodEveryDay:_2,sch_periodEveryMonth:x2,sch_periodEveryWeek:S2,sch_periodEveryYear:k2,sch_periodHours:v2,sch_periodMinutes:Y2,sch_periodMonth:Q2,sch_periodMonthly:b2,sch_periodOnce:U2,sch_periodSpecificMonths:$2,sch_periodWeek:P2,sch_periodWeekdays:W2,sch_periodWeekend:J2,sch_periodWeekly:B2,sch_periodWorkdays:R2,sch_periodYear:F2,sch_periodYearly:G2,sch_specificTime:H2,sch_time:V2,sch_to:Z2,sch_valid:X2,sch_validFrom:K2,sch_validTo:q2,sch_wholeDay:ep,sch_yearEveryMonth:tp},ip="Aktionen",rp="Anhängen",op="Abbrechen",np="Kategorien",ap="Geprüft",Mp="Löschen",cp="Schließen",up="Kommerziell",lp="Konfigurieren",Np="Verbunden",Lp="Weitermachen",gp="Kopiert",jp="Erstellen",yp="Ernte",Tp="Entf",Dp="Löschen",dp="Verwerfen",hp="Getrennt",zp="Fehler",wp="Filter",Ip="Freitag",Cp="Breite",pp="Ausloggen",Ap="Längengrad",mp="Meldung",fp="Montag",Op="Name",Ep="Objekte",_p="OK",xp="Produkt",Sp="Umbenennen/Verschieben/Kopieren",kp="Wiederholen",vp="Ersetzen",Yp="Anfang",Qp="Samstag",bp="Speichern",Up="Ausgewählt",$p="Zustände",Pp="Sonntag",Wp="Donnerstag",Jp="Zeitstempel",Bp="Dienstag",Rp="Aktualisieren",Fp="Gültig bis",Gp="Wert",Hp="Ausführung",Vp="Mittwoch",Zp="Breite",Xp="Ja",Kp="unterschiedlich",qp="Jeder kann Objekt lesen",eA="Jeder kann Zustand lesen",tA="Jeder kann ein Objekt schreiben",sA="Jeder kann Zustand schreiben",iA="Gruppe kann Objekt lesen",rA="Gruppe kann Status lesen",oA="Gruppe kann Objekt schreiben",nA="Gruppe kann Status schreiben",aA="Besitzer kann Objekt lesen",MA="Besitzer kann Zustand lesen",cA="Besitzer kann Objekt schreiben",uA="Besitzer kann Zustand schreiben",lA="Tasten",NA="Geändert von",LA="Schließen",gA="Booleschen Zustand erstellen",jA="Kanal erstellen",yA="Gerät erstellen",TA="Nummern-Zustand erstellen",DA="Zustand erstellen",dA="String-Zustand erstellen",hA="T.",zA="Fr",wA="Mo",IA="Sa",CA="So",pA="Do",AA="Di",mA="Mi",fA="Expertenmodus",OA="FALSCH",EA="Alle Dateien",_A="Audio",xA="Code/JSON",SA="Bilder",kA="Text",vA="Video",YA="Einstellungen",QA="ohne",bA="Funktion",UA="ID",$A="Name",PA="Rolle",WA="Raum",JA="Typ",BA="Ungültige Einstellungen",RA="Letzte Änderung",FA="örtlich",GA="Apr",HA="Aug",VA="Dez",ZA="Feb",XA="Jan",KA="Jul",qA="Jun",em="Mai",tm="Mär",sm="Nov",im="Okt",rm="Sep",om="Apr",nm="Aug",am="Dez",Mm="Feb",cm="Jan",um="Jul",lm="Jun",Nm="Mai",Lm="Mär",gm="Nov",jm="Okt",ym="Sep",Tm="kein",Dm="Objekt geändert von",dm="Objekt zuletzt geändert um",hm="Einstellungen von anderen Adaptern %s",zm="Qualitätscode",wm="wiederholen",Im='Um einen Ordner auszuwählen, halten Sie einfach die Taste "Shift" gedrückt, indem Sie auf den Ordner klicken.',Cm="Alle anzeigen",pm="Zustand geändert durch",Am="Objekt geändert von",mm="Zeitstempel",fm="Bestätigt",Om="Kommentar",Em="Statuswert kopieren",_m="Strg/⌘-Taste gedrückt halten, um den Link zu öffnen",xm="Benutzerdefinierte Einstellungen",Sm="Objekt löschen",km="Objekt bearbeiten",vm="Statuswert bearbeiten",Ym="Läuft ab in",Qm="Von",bm="Zuletzt geändert",Um="Qualität",$m="Zeitstempel",Pm="Benutzer",Wm="Wert",Jm="WAHR",Bm="Wert",Rm="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Minute ausgeführt!",Fm="Achtung: Der CRON-Job wird im angegebenen Zeitraum jede Sekunde ausgeführt!",Gm="CRON",Hm="Datum",Vm="Tage",Zm="Tag",Xm="Wochentage",Km="Jeden",qm="alle N Tage",e3="jeden x-ten Tag der Woche",t3="alle N Wochentage",s3="alle N Stunden",i3="alle N Minuten",r3="alle N Monate",o3="alle N Sekunden",n3="jeden Tag",a3="jeden Tag der Woche",M3="jeden Tag der Woche",c3="jede Stunde",u3="jede Minute",l3="jeden Monat",N3="jede Sekunde",L3="Von",g3="Stunden",j3="Intervall",y3="Intervall zwischen",T3="Ungültiger CRON",D3="Minuten",d3="Monate",h3="Einmal",z3="Zeitraum",w3="Sekunden",I3="Einfach",C3="Bestimmte Zeit",p3="bestimmte Tage",A3="bestimmte(r) Tag(e) der Woche",m3="bestimmten Wochentag",f3="bestimmte Stunden",O3="bestimmte Minuten",E3="bestimmte Monate",_3="bestimmte Sekunden",x3="Zeit",S3="Bis",k3="Wizard",v3="alle",Y3="Astronomischer Tag",Q3="Astronomische Nacht",b3="Morgendämmerung",U3="Abenddämmerung",$3="Goldene Stunde",P3="Goldene Stundenende",W3="Nadir",J3="Nautische Morgendämmerung",B3="Nautische Abenddämmerung",R3="Nacht",F3="Nachtende",G3="Sonnenmittag",H3="Sonnenaufgang",V3="Sonnenaufgangende",Z3="Sonnenuntergang",X3="Sonnenuntergangstart",K3="am",q3="um %s",ef="jeden Tag",tf="jede Stunde",sf="jede Minute",rf="jeden Monat",of="jeden %s Tag",nf="alle %s Stunden",af="alle %s Minuten",Mf="alle %s Monate",cf="alle %s Wochen",uf="alle %s Jahre",lf="jede Woche",Nf="jedes Jahr",Lf="von %s bis %s",gf="noch nie",jf="am %s von %s",yf="am %s und %s von",Tf="an jedem Datum von",Df="%s",df="%s und %s",hf="auf %s",zf="auf %s und %s",wf="an Wochenenden",If="an Werktagen",Cf="wird nicht mehr ausgeführt, weil der Start in der Vergangenheit ist",pf="auf %s",Af="von %s",mf="Ausführen von bis",ff="bis %s",Of="jeden",Ef="Bestimmte Zeit",_f="von",xf="Von bis",Sf="Zeitintervall",kf="umkehren",vf="keiner",Yf="am",Qf="Zeitraum",bf="Täglich",Uf="Daten",$f="Tag",Pf="Jeden",Wf="Jeden Tag",Jf="Jeden Monat",Bf="Jede Woche",Rf="Jedes Jahr",Ff="Stunden",Gf="Minuten",Hf="Monat",Vf="Monatlich",Zf="Einmal",Xf="Bestimmte Monate",Kf="Woche",qf="Wochentage",eO="Wochenende",tO="Wöchentlich",sO="Arbeitstage",iO="Jahr",rO="Jährlich",oO="Bestimmte Zeit",nO="Zeit",aO="zu",MO="Gültigkeit",cO="von",uO="bis",lO="Ganzer Tag",NO="jeden Monat",LO={"ra_%s links from aliases":"%s Links von Aliasen","ra_%s object(s) processed":"%s Objekt(e) verarbeitet","ra_%s was imported":"%s wurde importiert","ra_Accept license":"Lizenz akzeptieren",ra_Actions:ip,"ra_Add new child object to selected parent":"Dem ausgewählten übergeordneten Objekt ein neues untergeordnetes Objekt hinzufügen","ra_Add objects tree from JSON file":"Objektbaum aus JSON-Datei hinzufügen","ra_Add row":"Zeile hinzufügen","ra_Advanced options":"Erweiterte Optionen","ra_All items are filtered out":"Alle Elemente sind herausgefiltert","ra_All objects":"Alle Objekte",ra_Append:rp,"ra_Append %s entries or replace existing?":"%s Einträge anhängen oder vorhandene ersetzen?","ra_Append or replace?":"Anhängen oder ersetzen?","ra_Are you sure?":"Bist du sicher?","ra_Auto (no custom columns)":"Auto (keine benutzerdefinierten Spalten)","ra_Back to %s":"Zurück zu %s","ra_Background image":"Hintergrundbild",ra_Cancel:op,"ra_Cannot add items with set filter":"Elemente mit festgelegtem Filter können nicht hinzugefügt werden","ra_Cannot decode license":"Lizenz kann nicht entschlüsselt werden","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Position kann nicht bestimmt werden: Die Systemeinstellungen sind leer und die GPS-Erkennung ist im Browser deaktiviert",'ra_Cannot find "%s"':'Kann "%s" nicht finden','ra_Cannot read "%s"':'"%s" kann nicht gelesen werden',"ra_Cannot read licenses: %s":"Lizenzen können nicht gelesen werden: %s","ra_Cannot retrieve options, as instance is offline":"Optionen können nicht abgerufen werden, da die Instanz offline ist","ra_Cannot update attribute, because not found in the object":"Attribut kann nicht aktualisiert werden, da es nicht im Objekt gefunden wurde","ra_Cannot upload":"Kann nicht hochladen",ra_Categories:np,"ra_Chained certificate":"Chained Zertifikat","ra_Change color theme":"Farbthema ändern","ra_Changed from":"Geändert von","ra_Channel → State":"Kanal → Zustand","ra_Check license":"Lizenz prüfen",ra_Checked:ap,ra_Clear:Mp,"ra_Clear filter":"Filter löschen","ra_Clear icon":"Symbol löschen","ra_Click to see in full size":"Klicken Sie hier, um die Vollbildansicht zu öffnen.","ra_Click to show":"Zum Anzeigen klicken","ra_Clone current row":"Aktuelle Zeile klonen",ra_Close:cp,"ra_Collapse all nodes":"Alle Knoten zuklappen","ra_Collapse one step node":"Eine Ebene zuklappen",ra_Commercial:up,ra_Configure:lp,"ra_Configure visible columns":"Spalten Konfigurieren","ra_Confirm deletion of %s":"Das Löschen von %s bestätigen",ra_Connected:Np,ra_Continue:Lp,ra_Copied:gp,"ra_Copied %s":'"%s" kopiert',"ra_Copy content":"Inhalte kopieren",ra_Create:jp,"ra_Create alias":"Alias erstellen","ra_Create folder":"Ordner erstellen","ra_Create new folder in %s":'Neuen Ordner in "%s" erstellen',ra_Crop:yp,"ra_Define CRON...":"Definieren Sie CRON ...","ra_Define functions":"Funktionen definieren","ra_Define rooms":"Räume definieren","ra_Define schedule":"Zeitplan definieren","ra_Define schedule...":"Zeitplan definieren ...",ra_Del:Tp,ra_Delete:Dp,"ra_Delete current row":"Aktuelle Zeile löschen","ra_Deselect all":"Alles abwählen","ra_Device → Channel → State":"Gerät → Kanal → Zustand","ra_Disable/Enable translation":"Übersetzung deaktivieren/aktivieren",ra_Discard:dp,ra_Disconnected:hp,"ra_Do not ask for next 2 hours in this session":"Fragen Sie nicht nach den nächsten 2 Stunden in dieser Sitzung","ra_Do not export values of states":"Keine Zustandswerte exportieren","ra_Do not use let's encrypt":"Let's encrypt nicht verwenden","ra_Docker is not available":"Docker ist nicht verfügbar","ra_Docker is not installed or not running":"Docker ist nicht installiert oder läuft nicht","ra_Double click to reset table layout":"Doppelklicken, um das Tabellenlayout zurückzusetzen","ra_Drag 'n' drop some files here, or click to select files":"Die Datei hierher ziehen und ablegen, oder klicken, um die Datei auszuwählen","ra_Drop file here":"Datei hier ablegen","ra_Drop the files here...":"Datei hier ablegen...","ra_Duplicate name":"Doppelter Name","ra_Edit ACL":"ACL bearbeiten","ra_Edit alias":"Alias bearbeiten","ra_Edit custom config":"Bearbeite Benutzerdefinierte Konfiguration","ra_Edit full path":"Vollständigen Pfad bearbeiten","ra_Edit function":"Funktion bearbeiten","ra_Edit object field":"Objektfeld bearbeiten","ra_Edit role":"Rolle bearbeiten","ra_Edit room":"Raum bearbeiten","ra_Edit value":"Wert bearbeiten","ra_Enter the code from that page here":"Geben Sie den Code von dieser Seite hier ein",ra_Error:zp,"ra_Expand all nodes":"Alle Knoten aufklappen","ra_Expand one step node":"Eine Ebene aufklappen","ra_Expand/Collapse card":"Karte ein-/ausklappen","ra_Export configuration section":"Konfigurationsabschnitt exportieren","ra_Export data to %s file":"Daten in %s-Datei exportieren","ra_Failed to open JSON File":"Fehler beim Öffnen der JSON-Datei","ra_Fallback custom certificates":"Benutzerdefinierte Fallback-Zertifikate","ra_File is too big. Max %sk allowed. Try use SVG.":"Datei ist zu groß. Max %sk erlaubt. Versuchen Sie, SVG zu verwenden.",ra_Filter:wp,"ra_Filter and Data Actions":"Filter- und Datenaktionen","ra_Filter files":"Dateien filtern","ra_Folder name":"Ordnernamen","ra_Folder → Channel → State":"Ordner → Kanal → Zustand","ra_Folder → Device → Channel → State":"Ordner → Gerät → Kanal → Zustand","ra_Folder → State":"Ordner → Zustand","ra_Folders always first":"Ordner immer zuerst",ra_Friday:Ip,"ra_From file":"Aus der Datei","ra_From text":"Aus dem Text","ra_Get %s access":"%s Zugriff erhalten","ra_Good luck":"Viel Glück","ra_Hide empty folders":"Leere Ordner ausblenden","ra_If no file will be created in the folder, it will disappear after the browser closed":"Wenn im Ordner keine Datei erstellt wird, verschwindet dieser nach dem Schließen des Browsers","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Wenn die Schaltfläche oben nicht funktioniert, können Sie diese App manuell autorisieren, indem Sie diese URL besuchen","ra_Import and add configuration section":"Konfigurationsabschnitt importieren und hinzufügen","ra_Import and replace configuration section":"Konfigurationsabschnitt importieren und ersetzen","ra_Import data from %s file":"Daten aus %s-Datei importieren","ra_Import from %s":"Von %s importieren","ra_Instance %s is alive":"Instanz %s ist aktiv","ra_Instance %s is not alive":"Instanz %s ist nicht aktiv","ra_Instance is not alive":"Instanz ist nicht am Leben","ra_Invalid CRON":"Ungültiger CRON","ra_Invalid JSON":"Ungültiges JSON","ra_Invalid JSON file.":"Ungültige JSON-Datei.","ra_Invalid JSON format. Expected an array.":"Ungültiges JSON-Format. Array erwartet.","ra_Invalid answer from server":"Ungültige Antwort vom Server","ra_Invalid parent folder!":"Ungültiger übergeordneter Ordner!","ra_Invalid structure":"Ungültige Struktur","ra_JSON editor":"JSON-Editor","ra_Last change":"Letzte Änderung",ra_Latitude:Cp,"ra_License %s":"Lizenz %s","ra_License agreement":"Lizenzvereinbarung","ra_License does not exist":"Lizenz existiert nicht","ra_License expired on %s":"Lizenz am %s abgelaufen",'ra_License for other product "%s"':"Lizenz für anderes Produkt „%s“","ra_License is for version %s, but required version is %s.":"Lizenz ist für Version %s, aber erforderliche Version ist %s.","ra_License must be converted":"Die Lizenz muss auf eine neuere Version konvertiert werden. Sie können dies in Ihrem iobroker.net-Profil tun.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Lizenz im Lizenzmanager nicht gefunden. Möchten Sie Lizenzen von iobroker.net aktualisieren?","ra_Listen on all IPs":"Zugriff von allen IPs zulassen","ra_Load configuration from file":"Konfiguration aus Datei laden",ra_Logout:pp,ra_Longitude:Ap,'ra_May not trigger "updateLicenses"':"Löst möglicherweise nicht „updateLicenses“ aus",ra_Message:mp,ra_Monday:fp,"ra_Move down":"Nach unten","ra_Move up":"Nach oben",ra_Name:Op,"ra_No data found in file":"Keine Daten in der Datei gefunden","ra_No one license found in license manager":"Im Lizenzmanager wurde keine Lizenz gefunden","ra_No response from admin":"Keine Antwort vom Administrator","ra_No response from the backend":"Keine Antwort vom Backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Nicht-Experten dürfen neue Objekte nur in "0_userdata.0" oder "alias.0" erstellen.',"ra_Not a number":"Keine Nummer","ra_OAuth Client ID":"OAuth-Client-ID","ra_OAuth Client secret":"OAuth-Client-Secret",ra_Objects:Ep,ra_Ok:_p,"ra_On weekdays":"An Wochentagen","ra_Only following structures of objects are available:":"Es stehen nur folgende Objektstrukturen zur Verfügung:","ra_Only selected":"Nur ausgewählt","ra_Owner group":"Besitzergruppe","ra_Owner user":"Besitzer Benutzer","ra_Passwords are not equal!":"Passwörter sind nicht gleich!","ra_Place your files here or click here to open the browse dialog":"Die Dateien hier platzieren oder hier klicken, um den Suchdialog zu öffnen","ra_Please allow popups in your browser for this page!":"Bitte lassen Sie Popups für diese Seite in Ihrem Browser zu!","ra_Please confirm":"Bitte bestätigen","ra_Please create license":"Bitte erstellen Sie eine Lizenz","ra_Please enter the license":"Bitte die Lizenz eingeben","ra_Please select file...":"Bitte Datei auswählen...","ra_Please select object ID...":"Bitte Objekt-ID auswählen...","ra_Port could be used by %s":"Port könnte von %s verwendet werden","ra_Port is already used by %s":"Port wird bereits von %s verwendet","ra_Press ENTER Key to add new item":"Die Eingabetaste drücken, um ein neues Element hinzuzufügen","ra_Private certificate":"Privates Zertifikat",ra_Product:xp,"ra_Public certificate":"Öffentliches Zertifikat","ra_Quality code":"Qualität","ra_Refresh tree":"Baum aktualisieren","ra_Reload files":"Dateien neu laden",ra_Rename_Move_Copy:Sp,"ra_Renew %s access":"%s Zugriff erneuern",ra_Repeat:kp,ra_Replace:vp,"ra_Request timed out":"Zeitüberschreitung der Anforderung","ra_Restrict to folder":"Auf Ordner beschränken",ra_Root:Yp,ra_Saturday:Qp,ra_Save:bp,"ra_Save and close":"Speichern und schließen","ra_Save configuration to file":"Konfiguration in Datei speichern","ra_Save objects tree as JSON file":"Objektbaum als JSON-Datei speichern","ra_Select all":"Alle auswählen","ra_Select color":"Wähle Farbe","ra_Select predefined icon":"Vordefiniertes Symbol auswählen","ra_Select type of export":"Die Art des Exports auswählen ",ra_Selected:Up,"ra_Selected %s object(s)":"Ausgewählt %s Objekt(en)","ra_Serial number (UUID)":"Seriennummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Seriennummer (UUID) „%s“ in der Lizenz gilt für ein anderes Gerät.","ra_Session will expire in %s seconds. Continue?":"Die Sitzung läuft in %s Sekunden ab. Fortfahren?","ra_Show all folders":"Alle Ordner anzeigen","ra_Show lines between rows":"Linien zwischen Zeilen anzeigen","ra_Show/Hide object descriptions":"Objektbeschreibungen ein-/ausblenden","ra_Show/hide filter input":"Filtereingabe ein-/ausblenden","ra_Some data are not stored. Discard?":"Einige Daten werden nicht gespeichert. Verwerfen?",ra_States:$p,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Erfolgreich autorisiert. Token gültig bis %s und wird automatisch erneuert.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Erfolgreich autorisiert. Token gültig bis %s, kann aber ablaufen, da die Instanz nicht ausgeführt wird.","ra_Suitable license not found in license manager":"Passende Lizenz im Lizenzmanager nicht gefunden",ra_Sunday:Pp,"ra_Suppress question for next %s minutes":"Frage für die nächsten %s Minuten unterdrücken","ra_System language":"Systemsprache","ra_Take browser position":"Position vom Browser einnehmen","ra_Take position from system settings":"Position aus den Systemeinstellungen übernehmen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Die Experten können Objekte überall erstellen, außer auf der zweiten Ebene (z. B. "vis.0" oder "javascript.0").',"ra_The page you are looking for was not found":"Die gesuchte Seite wurde nicht gefunden","ra_The schedule will be executed every minute. Are you sure?":"Der Zeitplan wird jede Minute ausgeführt. Sind Sie sicher?","ra_The schedule will be executed every second. Are you sure?":"Der Zeitplan wird jede Sekunde ausgeführt. Sind Sie sicher?",ra_Thursday:Wp,ra_Timestamp:Jp,"ra_Toggle expert mode":"Expertenmodus umschalten","ra_Toggle the states view":"Statusansicht umschalten","ra_Toggle view mode":"Ansichtsmodus umschalten","ra_Too big":"Zu groß","ra_Too small":"Zu klein","ra_Transparent dialog":"Transparenter Dialog",ra_Tuesday:Bp,"ra_Unknown error":"Unbekannter Fehler","ra_Unknown error!":"Unbekannter Fehler!",ra_Update:Rp,"ra_Upload file":"Datei hochladen","ra_Use all available let's encrypt certificates":"Alle verfügbaren Zertifikate von Let's encrypt benutzen","ra_Use iobroker.acme adapter for letsencrypt certificates":"ioBroker.acme-Adapter für letsencrypt-Zertifikate verwenden","ra_Use system settings for position":"Systemeinstellungen für die Position verwenden","ra_Used system settings":"Systemeinstellungen","ra_User files":"Benutzerdaten",ra_ValidTill:Fp,ra_Value:Gp,ra_Version:Hp,"ra_View file":"Datei ansehen","ra_View: %s":"Anschauen: %s",ra_Wednesday:Vp,ra_Width:Zp,"ra_YAML editor":"YAML-Editor",ra_Yes:Xp,"ra_You can export all objects or just the selected branch.":"Sie können alle Objekte oder nur den ausgewählten Zweig exportieren.","ra_You can filter entries by entering here some text":"Sie können Einträge filtern, indem Sie hier Text eingeben","ra_You can use * as wildcard":"Sie können * als Platzhalter verwenden",ra___different__:Kp,ra_aclEveryone_read_object:qp,ra_aclEveryone_read_state:eA,ra_aclEveryone_write_object:tA,ra_aclEveryone_write_state:sA,ra_aclGroup_read_object:iA,ra_aclGroup_read_state:rA,ra_aclGroup_write_object:oA,ra_aclGroup_write_state:nA,ra_aclOwner_read_object:aA,ra_aclOwner_read_state:MA,ra_aclOwner_write_object:cA,ra_aclOwner_write_state:uA,ra_buttons:lA,ra_changedFrom:NA,ra_close:LA,ra_create_boolean_state:gA,ra_create_channel:jA,ra_create_device:yA,ra_create_number_state:TA,ra_create_state:DA,ra_create_string_state:dA,ra_daysShortText:hA,ra_dow_Fr:zA,ra_dow_Mo:wA,ra_dow_Sa:IA,ra_dow_Su:CA,ra_dow_Th:pA,ra_dow_Tu:AA,ra_dow_We:mA,ra_expertMode:fA,ra_false:OA,ra_fileType_all:EA,ra_fileType_audio:_A,ra_fileType_code:xA,ra_fileType_images:SA,ra_fileType_txt:kA,ra_fileType_video:vA,"ra_fileType_video,":"Video",ra_filter_customs:YA,ra_filter_customs_without:QA,ra_filter_func:bA,ra_filter_id:UA,ra_filter_name:$A,ra_filter_role:PA,ra_filter_room:WA,ra_filter_type:JA,"ra_import data from %s file":"Daten aus %s-Datei importieren",ra_invalidConfig:BA,ra_lastChange:RA,ra_locally:FA,ra_month_Apr:GA,ra_month_Aug:HA,ra_month_Dec:VA,ra_month_Feb:ZA,ra_month_Jan:XA,ra_month_Jul:KA,ra_month_Jun:qA,ra_month_Mai:em,ra_month_Mar:tm,ra_month_Nov:sm,ra_month_Oct:im,ra_month_Sep:rm,ra_months_Apr:om,ra_months_Aug:nm,ra_months_Dec:am,ra_months_Feb:Mm,ra_months_Jan:cm,ra_months_Jul:um,ra_months_Jun:lm,ra_months_Mai:Nm,ra_months_Mar:Lm,ra_months_Nov:gm,ra_months_Oct:jm,ra_months_Sep:ym,"ra_no confirm for 5 mins":"5 Minuten lang keine Bestätigung",ra_none:Tm,ra_object_changed_by:Dm,ra_object_changed_by_user:dm,ra_otherConfig:hm,ra_qualityCode:zm,ra_repeat:wm,ra_select_folder_hint:Im,ra_show_all:Cm,ra_state_changed_by:pm,ra_state_changed_from:Am,ra_timestamp:mm,ra_tooltip_ack:fm,ra_tooltip_comment:Om,ra_tooltip_copyState:Em,ra_tooltip_ctrlForLink:_m,ra_tooltip_customConfig:xm,ra_tooltip_deleteObject:Sm,ra_tooltip_editObject:km,ra_tooltip_editState:vm,ra_tooltip_expire:Ym,ra_tooltip_from:Qm,ra_tooltip_lc:bm,ra_tooltip_quality:Um,ra_tooltip_ts:$m,ra_tooltip_user:Pm,ra_tooltip_value:Wm,ra_true:Jm,"ra_use seconds":"Sekunden benutzen",ra_val:Bm,"ra_via internet":"übers Internet",ra_warning_every_minute:Rm,ra_warning_every_second:Fm,sc_cron:Gm,sc_date:Hm,sc_dates:Vm,sc_dow:Zm,sc_dows:Xm,sc_every:Km,sc_everyN_dates:qm,sc_everyN_dow:e3,sc_everyN_dows:t3,sc_everyN_hours:s3,sc_everyN_minutes:i3,sc_everyN_months:r3,sc_everyN_seconds:o3,sc_every_dates:n3,sc_every_dow:a3,sc_every_dows:M3,sc_every_hours:c3,sc_every_minutes:u3,sc_every_months:l3,sc_every_seconds:N3,sc_from:L3,sc_hours:g3,sc_interval:j3,sc_intervalBetween:y3,sc_invalid_cron:T3,sc_minutes:D3,sc_months:d3,sc_once:h3,sc_period:z3,sc_seconds:w3,sc_simple:I3,sc_specific:C3,sc_specific_dates:p3,sc_specific_dow:A3,sc_specific_dows:m3,sc_specific_hours:f3,sc_specific_minutes:O3,sc_specific_months:E3,sc_specific_seconds:_3,sc_time:x3,sc_to:S3,sc_wizard:k3,sch_all:v3,sch_astroDay:Y3,sch_astroNight:Q3,sch_astro_dawn:b3,sch_astro_dusk:U3,sch_astro_goldenHour:$3,sch_astro_goldenHourEnd:P3,sch_astro_nadir:W3,sch_astro_nauticalDawn:J3,sch_astro_nauticalDusk:B3,sch_astro_night:R3,sch_astro_nightEnd:F3,sch_astro_solarNoon:G3,sch_astro_sunrise:H3,sch_astro_sunriseEnd:V3,sch_astro_sunset:Z3,sch_astro_sunsetStart:X3,sch_at:K3,sch_desc_atTime:q3,sch_desc_everyDay:ef,sch_desc_everyHour:tf,sch_desc_everyMinute:sf,sch_desc_everyMonth:rf,sch_desc_everyNDay:of,sch_desc_everyNHours:nf,sch_desc_everyNMinutes:af,sch_desc_everyNMonths:Mf,sch_desc_everyNWeeks:cf,sch_desc_everyNYears:uf,sch_desc_everyWeek:lf,sch_desc_everyYear:Nf,sch_desc_intervalFromTo:Lf,sch_desc_never:gf,sch_desc_onDate:jf,sch_desc_onDates:yf,sch_desc_onEveryDate:Tf,sch_desc_onMonth:Df,sch_desc_onMonths:df,sch_desc_onWeekday:hf,sch_desc_onWeekdays:zf,sch_desc_onWeekends:wf,sch_desc_onWorkdays:If,sch_desc_onceInPast:Cf,sch_desc_once_on:pf,sch_desc_validFrom:Af,sch_desc_validFromTo:mf,sch_desc_validTo:ff,sch_every:Of,sch_exactTime:Ef,sch_from:_f,sch_fromTo:xf,sch_intervalTime:Sf,sch_invert:kf,sch_no_one:vf,sch_on:Yf,sch_period:Qf,sch_periodDaily:bf,sch_periodDates:Uf,sch_periodDay:$f,sch_periodEvery:Pf,sch_periodEveryDay:Wf,sch_periodEveryMonth:Jf,sch_periodEveryWeek:Bf,sch_periodEveryYear:Rf,sch_periodHours:Ff,sch_periodMinutes:Gf,sch_periodMonth:Hf,sch_periodMonthly:Vf,sch_periodOnce:Zf,sch_periodSpecificMonths:Xf,sch_periodWeek:Kf,sch_periodWeekdays:qf,sch_periodWeekend:eO,sch_periodWeekly:tO,sch_periodWorkdays:sO,sch_periodYear:iO,sch_periodYearly:rO,sch_specificTime:oO,sch_time:nO,sch_to:aO,sch_valid:MO,sch_validFrom:cO,sch_validTo:uO,sch_wholeDay:lO,sch_yearEveryMonth:NO},gO="Действия",jO="Добавить",yO="Отмена",TO="Категории",DO="Проверено",dO="Удалить",hO="Закрыть",zO="Коммерческая",wO="Настроить",IO="Соединение установлено",CO="Продолжать",pO="скопировано",AO="Создать",mO="Обрезать",fO="Delete",OO="Удалить",EO="Отказаться",_O="Отключено",xO="Ошибка",SO="Фильтр",kO="Пятница",vO="Широта",YO="Выйти",QO="Долгота",bO="Сообщение",UO="Понедельник",$O="Имя",PO="Объекты",WO="Ok",JO="Продукт",BO="Переименовать/Переместить/Копировать",RO="Повторение",FO="Заменять",GO="Начало",HO="Суббота",VO="Сохранить",ZO="выбранный",XO="Состояния",KO="Воскресенье",qO="Четверг",eE="Времени",tE="Вторник",sE="Обновить",iE="Годен до",rE="Значение",oE="Версия",nE="Среда",aE="Ширина",ME="Да",cE="разное",uE="Каждый может читать объект",lE="Каждый может читать состояние",NE="Каждый может написать объект",LE="Каждый может написать состояние",gE="Группа может читать объект",jE="Группа может читать состояние",yE="Группа может писать объект",TE="Группа может записывать состояние",DE="Владелец может читать объект",dE="Владелец может читать состояние",hE="Владелец может писать объект",zE="Владелец может писать состояние",wE="Кнопки",IE="Изменено с",CE="Закрыть",pE="Создать логическое состояние",AE="Создать канал",mE="Создать устройство",fE="Создать состояние номера",OE="Создать состояние",EE="Создать состояние строки",_E="д.",xE="Пт",SE="Пн",kE="Сб",vE="Вс",YE="Чт",QE="Вт",bE="Ср",UE="Экспертный режим",$E="ЛОЖЬ",PE="Все файлы",WE="Аудио",JE="Код/JSON",BE="Картинки",RE="Текст",FE="видео",GE="настройки",HE="без",VE="функция",ZE="ID",XE="Имя",KE="роль",qE="комната",e_="Тип",t_="Неверные настройки",s_="Последнее изменение",i_="локально",r_="Апр",o_="Авг",n_="Дек",a_="Фев",M_="Янв",c_="Июл",u_="Июн",l_="Май",N_="Мрт",L_="Ноя",g_="Окт",j_="Сен",y_="Апр",T_="Авг",D_="Дек",d_="Фев",h_="Янв",z_="Июнь",w_="Июль",I_="Май",C_="Март",p_="Ноя",A_="Окт",m_="Сен",f_="ничего",O_="Объект изменен",E_="Последний раз объект изменен в",__="Настройки из другого адаптера %s",x_="Код качества",S_="повтор",k_="Чтобы выбрать папку, просто удерживайте клавишу «Shift», щелкнув папку.",v_="Показать все",Y_="Состояние изменено",Q_="Объект изменен с",b_="Отметка времени",U_="Подтверждено",$_="Комментарий",P_="Скопируйте значение состояния",W_="Удерживайте клавишу Cltr/⌘, чтобы открыть ссылку",J_="Пользовательские настройки",B_="Удалить объект",R_="Редактировать объект",F_="Изменить значение состояния",G_="Истекает через",H_="От",V_="Последнее изменение",Z_="Качество",X_="Отметка времени",K_="пользователь",q_="Значение",ex="истинный",tx="Значение",sx="Внимание: задание CRON будет запускаться каждую минуту в течение указанного периода!",ix="Внимание: задание CRON будет выполняться каждую секунду в течение указанного периода!",rx="CRON",ox="Дата",nx="Даты",ax="День",Mx="День недели",cx="каждый(ую/ые)",ux="каждый N день",lx="каждый N-й день недели",Nx="каждый N день недели",Lx="каждые N часов",gx="каждые N минут",jx="каждые N месяцев",yx="каждые N секунд",Tx="каждый день",Dx="Каждый день недели",dx="каждый день недели",hx="каждый час",zx="каждую минуту",wx="каждый месяц",Ix="каждую секунду",Cx="От",px="часы",Ax="Интервал",mx="Интервал между",fx="Неверный CRON",Ox="минуты",Ex="Месяцы",_x="один раз",xx="Период",Sx="секунды",kx="Просто",vx="Конкретное время",Yx="конкретные даты",Qx="конкретный день(а) недели",bx="конкретный день недели",Ux="конкретные часы",$x="конкретные минуты",Px="конкретные месяцы",Wx="конкретные секунды",Jx="Время",Bx="До",Rx="Форма",Fx="все",Gx="днём",Hx="ночью",Vx="Рассвет",Zx="Сумерки",Xx="Золотой час",Kx="Конец золотого часа",qx="Надир",eS="Морской рассвет",tS="Морские сумерки",sS="Ночь",iS="Конец ночи",rS="Солнечный полдень",oS="Восход",nS="Восход солнца",aS="Заход солнца",MS="Начало заката",cS="дата",uS="в %s",lS="каждый день",NS="каждый час",LS="каждую минуту",gS="каждый месяц",jS="каждый %s день",yS="каждый %s часов",TS="каждые %s минут",DS="каждые %s месяцев",dS="каждые %s недель",hS="каждые %s лет",zS="каждую неделю",wS="каждый год",IS="от %s до %s",CS="никогда",pS="%s %s",AS="%s и %s",mS="в каждый день",fS="%s",OS="%s и %s",ES="%s",_S="%s и %s",xS="на выходных",SS="в рабочие дни",kS="не будет больше выполняться, потому что начало в прошлом",vS="%s",YS="%s",QS="Выполнить с",bS="%s",US="каждый",$S="Конкретное время",PS="от",WS="От и до",JS="Интервал времени",BS="инвертировать",RS="никакой",FS="на",GS="период",HS="Ежедневно",VS="Даты",ZS="День",XS="каждый",KS="Каждый день",qS="Каждый месяц",e5="Каждую неделю",t5="Каждый год",s5="часов",i5="минут",r5="месяц",o5="ежемесячно",n5="однажды",a5="Конкретные месяцы",M5="Неделю",c5="Будние дни",u5="выходные",l5="еженедельно",N5="Рабочие дни",L5="Год",g5="каждый год",j5="Конкретное время",y5="Время",T5="в",D5="действительный",d5="от",h5="в",z5="Весь день",w5="каждый месяц",I5={"ra_%s links from aliases":"%s ссылок из псевдонимов","ra_%s object(s) processed":"Объектов обработано: %s","ra_%s was imported":"%s был импортирован","ra_Accept license":"Принять лицензию",ra_Actions:gO,"ra_Add new child object to selected parent":"Добавить новый дочерний объект к выбранному родительскому объекту","ra_Add objects tree from JSON file":"Добавить дерево объектов из файла JSON","ra_Add row":"Добавить ряд","ra_Advanced options":"Расширенные настройки","ra_All items are filtered out":"Все элементы отфильтрованы","ra_All objects":"Все объекты",ra_Append:jO,"ra_Append %s entries or replace existing?":"Добавить записи %s или заменить существующие?","ra_Append or replace?":"Дополнить или заменить?","ra_Are you sure?":"Вы уверены?","ra_Auto (no custom columns)":"Авто (без настраиваемых столбцов)","ra_Back to %s":"Вернуться к %s","ra_Background image":"Фоновая картинка",ra_Cancel:yO,"ra_Cannot add items with set filter":"Невозможно добавить элементы с установленным фильтром","ra_Cannot decode license":"Не могу декодировать лицензию","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Невозможно определить местоположение: системные настройки пусты, а обнаружение GPS отключено в браузере.",'ra_Cannot find "%s"':'Не могу найти "%s"','ra_Cannot read "%s"':'Не могу прочитать "%s"',"ra_Cannot read licenses: %s":"Невозможно прочитать лицензии: %s","ra_Cannot retrieve options, as instance is offline":"Невозможно получить параметры, так как экземпляр находится в автономном режиме.","ra_Cannot update attribute, because not found in the object":"Невозможно обновить атрибут, потому что он не найден в объекте","ra_Cannot upload":"Невозможно загрузить",ra_Categories:TO,"ra_Chained certificate":"Chained сертификат","ra_Change color theme":"Изменить цветовую тему","ra_Changed from":"Изменено","ra_Channel → State":"Канал → Состояние","ra_Check license":"Проверить лицензию",ra_Checked:DO,ra_Clear:dO,"ra_Clear filter":"Очистить фильтр","ra_Clear icon":"Очистить значок","ra_Click to see in full size":"Нажмите, чтобы посмотреть в полном размере","ra_Click to show":"Нажмите, чтобы показать","ra_Clone current row":"Клонировать текущую строку",ra_Close:hO,"ra_Collapse all nodes":"Свернуть все узлы","ra_Collapse one step node":"Свернуть один уровень",ra_Commercial:zO,ra_Configure:wO,"ra_Configure visible columns":"Настроить видимые столбцы","ra_Confirm deletion of %s":"Подтвердите удаление %s",ra_Connected:IO,ra_Continue:CO,ra_Copied:pO,"ra_Copied %s":'Скопировано "%s"',"ra_Copy content":"Копировать содержимое",ra_Create:AO,"ra_Create alias":"Создать псевдоним","ra_Create folder":"Создать папку","ra_Create new folder in %s":"Создать новую папку в %s",ra_Crop:mO,"ra_Define CRON...":"Определите CRON...","ra_Define functions":"Задать функции","ra_Define rooms":"Задать комнаты","ra_Define schedule":"Задать расписание","ra_Define schedule...":"Определить расписание ...",ra_Del:fO,ra_Delete:OO,"ra_Delete current row":"Удалить текущую строку","ra_Deselect all":"Убрать выбор везде","ra_Device → Channel → State":"Устройство → Канал → Состояние","ra_Disable/Enable translation":"Включить/отключить перевод",ra_Discard:EO,ra_Disconnected:_O,"ra_Do not ask for next 2 hours in this session":"Не спрашивайте о следующих 2 часах в этом сеансе","ra_Do not export values of states":"Не экспортировать значения состояний","ra_Do not use let's encrypt":"Не использовать Let’s Encrypt","ra_Docker is not available":"Докер недоступен","ra_Docker is not installed or not running":"Docker не установлен или не запущен","ra_Double click to reset table layout":"Дважды щелкните, чтобы сбросить макет таблицы","ra_Drag 'n' drop some files here, or click to select files":"Перетащите сюда несколько файлов или щелкните, чтобы выбрать файлы","ra_Drop file here":"Перетащите файл сюда","ra_Drop the files here...":"Перетащите файл сюда ...","ra_Duplicate name":"Повторяющееся имя","ra_Edit ACL":"Изменить ACL-список","ra_Edit alias":"Изменить псевдоним","ra_Edit custom config":"Редактировать настраиваемую конфигурацию","ra_Edit full path":"Изменить полный путь","ra_Edit function":"Изменить функцию","ra_Edit object field":"Поле редактирования объекта","ra_Edit role":"Изменить роль","ra_Edit room":"Редактировать комнату","ra_Edit value":"Изменить значение","ra_Enter the code from that page here":"Введите код с этой страницы здесь",ra_Error:xO,"ra_Expand all nodes":"Развернуть все узлы","ra_Expand one step node":"Открыть один уровень","ra_Expand/Collapse card":"Развернуть/Свернуть карточку","ra_Export configuration section":"Раздел конфигурации экспорта","ra_Export data to %s file":"Экспорт данных в файл %s","ra_Failed to open JSON File":"Не удалось открыть файл JSON","ra_Fallback custom certificates":"Резервные пользовательские сертификаты","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл слишком большой. Разрешено максимальное количество %sk. Попробуйте использовать SVG.",ra_Filter:SO,"ra_Filter and Data Actions":"Фильтрация и действия с данными","ra_Filter files":"Фильтровать файлы","ra_Folder name":"Имя папки","ra_Folder → Channel → State":"Папка → Канал → Состояние","ra_Folder → Device → Channel → State":"Папка → Устройство → Канал → Состояние","ra_Folder → State":"Папка → Состояние","ra_Folders always first":"Папки всегда на первом месте",ra_Friday:kO,"ra_From file":"Из файла","ra_From text":"Из текста","ra_Get %s access":"Получить %s доступ","ra_Good luck":"Удачи","ra_Hide empty folders":"Скрыть пустые папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Если в папке не будет создан файл, он исчезнет после закрытия браузера.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Если кнопка выше не работает, вы можете вручную авторизовать это приложение, перейдя по этой ссылке.","ra_Import and add configuration section":"Импорт и добавление раздела конфигурации","ra_Import and replace configuration section":"Импорт и замена раздела конфигурации","ra_Import data from %s file":"Импорт данных из файла %s","ra_Import from %s":"Импорт из %s","ra_Instance %s is alive":"Экземпляр %s работает","ra_Instance %s is not alive":"Экземпляр %s не работает","ra_Instance is not alive":"Экземпляр не живой","ra_Invalid CRON":"Неверный CRON","ra_Invalid JSON":"Неверный JSON","ra_Invalid JSON file.":"Неверный файл JSON.","ra_Invalid JSON format. Expected an array.":"Недопустимый формат JSON. Ожидается массив.","ra_Invalid answer from server":"Неверный ответ от сервера","ra_Invalid parent folder!":"Неверная родительская папка!","ra_Invalid structure":"Неверная структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Последнее изменение",ra_Latitude:vO,"ra_License %s":"Лицензия %s","ra_License agreement":"Лицензионное соглашение","ra_License does not exist":"Лицензия не существует","ra_License expired on %s":"Срок действия лицензии истек %s",'ra_License for other product "%s"':'Лицензия на другой продукт "%s"',"ra_License is for version %s, but required version is %s.":"Лицензия предназначена для версии %s, но необходима версия %s.","ra_License must be converted":"Лицензия должна быть преобразована в более новую версию. Вы можете сделать это в своем профиле на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Лицензия не найдена в диспетчере лицензий. Вы хотите обновить лицензии от iobroker.net?","ra_Listen on all IPs":"Слушать на всех IP","ra_Load configuration from file":"Загрузить конфигурацию из файла",ra_Logout:YO,ra_Longitude:QO,'ra_May not trigger "updateLicenses"':"Не может запускать «updateLicenses»",ra_Message:bO,ra_Monday:UO,"ra_Move down":"Вниз","ra_Move up":"Вверх",ra_Name:$O,"ra_No data found in file":"Данные в файле не найдены","ra_No one license found in license manager":"В менеджере лицензий не найдена ни одна лицензия","ra_No response from admin":"Нет ответа от администратора","ra_No response from the backend":"Нет ответа от бэкэнда",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Не-эксперты могут создавать новые объекты только в «0_userdata.0» или «alias.0».","ra_Not a number":"Не число","ra_OAuth Client ID":"Идентификатор клиента OAuth","ra_OAuth Client secret":"Секрет клиента OAuth",ra_Objects:PO,ra_Ok:WO,"ra_On weekdays":"На выходных","ra_Only following structures of objects are available:":"Доступны только следующие структуры объектов:","ra_Only selected":"Только выбранные","ra_Owner group":"Группа владельцев","ra_Owner user":"Пользователь-владелец","ra_Passwords are not equal!":"Пароли не равны!","ra_Place your files here or click here to open the browse dialog":"Поместите свои файлы сюда или щелкните здесь, чтобы открыть диалоговое окно выбора","ra_Please allow popups in your browser for this page!":"Пожалуйста, разрешите всплывающие окна в вашем браузере для этой страницы!","ra_Please confirm":"Пожалуйста подтвердите","ra_Please create license":"Пожалуйста, создайте лицензию","ra_Please enter the license":"Пожалуйста, введите лицензию","ra_Please select file...":"Пожалуйста, выберите файл...","ra_Please select object ID...":"Пожалуйста, выберите идентификатор объекта ...","ra_Port could be used by %s":"Порт может использоваться %s","ra_Port is already used by %s":"Порт уже используется %s","ra_Press ENTER Key to add new item":"Нажмите клавишу ENTER, чтобы добавить новый элемент.","ra_Private certificate":"Частный сертификат",ra_Product:JO,"ra_Public certificate":"Публичный сертификат","ra_Quality code":"Валидность","ra_Refresh tree":"Обновить дерево","ra_Reload files":"Обновить",ra_Rename_Move_Copy:BO,"ra_Renew %s access":"Продлить доступ %s",ra_Repeat:RO,ra_Replace:FO,"ra_Request timed out":"Истекло время запроса","ra_Restrict to folder":"Ограничить папкой",ra_Root:GO,ra_Saturday:HO,ra_Save:VO,"ra_Save and close":"Сохранить и закрыть","ra_Save configuration to file":"Сохранить конфигурацию в файл","ra_Save objects tree as JSON file":"Сохранить дерево объектов как файл JSON","ra_Select all":"Выбрать все","ra_Select color":"Выберите цвет","ra_Select predefined icon":"Выберите предопределенный значок","ra_Select type of export":"Выберите тип экспорта",ra_Selected:ZO,"ra_Selected %s object(s)":"Объектов: %s","ra_Serial number (UUID)":"Серийный номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Серийный номер (UUID) «%s» в лицензии предназначен для другого устройства.","ra_Session will expire in %s seconds. Continue?":"Сессия истечет через %s секунд. Продолжить?","ra_Show all folders":"Показать все папки","ra_Show lines between rows":"Показать линии между строками","ra_Show/Hide object descriptions":"Показать/скрыть описания объектов","ra_Show/hide filter input":"Показать/скрыть ввод фильтра","ra_Some data are not stored. Discard?":"Некоторые данные не сохранились. Отказаться?",ra_States:XO,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизация выполнена успешно. Токен действителен до %s и будет автоматически продлен.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизация выполнена успешно. Токен действителен до %s, но его срок действия может истечь, так как экземпляр не запущен.","ra_Suitable license not found in license manager":"Подходящая лицензия не найдена в менеджере лицензий",ra_Sunday:KO,"ra_Suppress question for next %s minutes":"Скрыть вопрос на следующие %s минут(ы)","ra_System language":"Язык системы","ra_Take browser position":"Взять позицию из браузера","ra_Take position from system settings":"Занять позицию из системных настроек",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Эксперты могут создавать объекты везде, кроме второго уровня (например, «vis.0» или «javascript.0»).","ra_The page you are looking for was not found":"Страница, которую вы ищете, не найдена","ra_The schedule will be executed every minute. Are you sure?":"Расписание будет выполняться каждую минуту. Вы уверены?","ra_The schedule will be executed every second. Are you sure?":"Расписание будет выполняться каждую секунду. Вы уверены?",ra_Thursday:qO,ra_Timestamp:eE,"ra_Toggle expert mode":"Переключить экспертный режим","ra_Toggle the states view":"Переключить режим просмотра состояний","ra_Toggle view mode":"Переключить режим просмотра","ra_Too big":"Слишком большое","ra_Too small":"Слишком маленькое","ra_Transparent dialog":"Прозрачный диалог",ra_Tuesday:tE,"ra_Unknown error":"Неизвестная ошибка","ra_Unknown error!":"Неизвестная ошибка!",ra_Update:sE,"ra_Upload file":"Загрузить файл","ra_Use all available let's encrypt certificates":"Использовать все доступные сертификаты Let’s encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Используйте адаптер iobroker.acme для сертификатов letsencrypt","ra_Use system settings for position":"Использовать системные настройки для позиции","ra_Used system settings":"Системные настройки","ra_User files":"Файлы пользователя",ra_ValidTill:iE,ra_Value:rE,ra_Version:oE,"ra_View file":"Посмотреть файл","ra_View: %s":"Просмотр: %s",ra_Wednesday:nE,ra_Width:aE,"ra_YAML editor":"Редактор YAML",ra_Yes:ME,"ra_You can export all objects or just the selected branch.":"Вы можете экспортировать все объекты или только выбранную ветвь.","ra_You can filter entries by entering here some text":"Вы можете отфильтровать записи, введя здесь текст","ra_You can use * as wildcard":"Вы можете использовать * в качестве подстановочного знака",ra___different__:cE,ra_aclEveryone_read_object:uE,ra_aclEveryone_read_state:lE,ra_aclEveryone_write_object:NE,ra_aclEveryone_write_state:LE,ra_aclGroup_read_object:gE,ra_aclGroup_read_state:jE,ra_aclGroup_write_object:yE,ra_aclGroup_write_state:TE,ra_aclOwner_read_object:DE,ra_aclOwner_read_state:dE,ra_aclOwner_write_object:hE,ra_aclOwner_write_state:zE,ra_buttons:wE,ra_changedFrom:IE,ra_close:CE,ra_create_boolean_state:pE,ra_create_channel:AE,ra_create_device:mE,ra_create_number_state:fE,ra_create_state:OE,ra_create_string_state:EE,ra_daysShortText:_E,ra_dow_Fr:xE,ra_dow_Mo:SE,ra_dow_Sa:kE,ra_dow_Su:vE,ra_dow_Th:YE,ra_dow_Tu:QE,ra_dow_We:bE,ra_expertMode:UE,ra_false:$E,ra_fileType_all:PE,ra_fileType_audio:WE,ra_fileType_code:JE,ra_fileType_images:BE,ra_fileType_txt:RE,ra_fileType_video:FE,"ra_fileType_video,":"видео",ra_filter_customs:GE,ra_filter_customs_without:HE,ra_filter_func:VE,ra_filter_id:ZE,ra_filter_name:XE,ra_filter_role:KE,ra_filter_room:qE,ra_filter_type:e_,"ra_import data from %s file":"Импортировать данные из файла %s",ra_invalidConfig:t_,ra_lastChange:s_,ra_locally:i_,ra_month_Apr:r_,ra_month_Aug:o_,ra_month_Dec:n_,ra_month_Feb:a_,ra_month_Jan:M_,ra_month_Jul:c_,ra_month_Jun:u_,ra_month_Mai:l_,ra_month_Mar:N_,ra_month_Nov:L_,ra_month_Oct:g_,ra_month_Sep:j_,ra_months_Apr:y_,ra_months_Aug:T_,ra_months_Dec:D_,ra_months_Feb:d_,ra_months_Jan:h_,ra_months_Jul:z_,ra_months_Jun:w_,ra_months_Mai:I_,ra_months_Mar:C_,ra_months_Nov:p_,ra_months_Oct:A_,ra_months_Sep:m_,"ra_no confirm for 5 mins":"не спрашивать подтверждения в течение 5 минут",ra_none:f_,ra_object_changed_by:O_,ra_object_changed_by_user:E_,ra_otherConfig:__,ra_qualityCode:x_,ra_repeat:S_,ra_select_folder_hint:k_,ra_show_all:v_,ra_state_changed_by:Y_,ra_state_changed_from:Q_,ra_timestamp:b_,ra_tooltip_ack:U_,ra_tooltip_comment:$_,ra_tooltip_copyState:P_,ra_tooltip_ctrlForLink:W_,ra_tooltip_customConfig:J_,ra_tooltip_deleteObject:B_,ra_tooltip_editObject:R_,ra_tooltip_editState:F_,ra_tooltip_expire:G_,ra_tooltip_from:H_,ra_tooltip_lc:V_,ra_tooltip_quality:Z_,ra_tooltip_ts:X_,ra_tooltip_user:K_,ra_tooltip_value:q_,ra_true:ex,"ra_use seconds":"секунды",ra_val:tx,"ra_via internet":"через интернет",ra_warning_every_minute:sx,ra_warning_every_second:ix,sc_cron:rx,sc_date:ox,sc_dates:nx,sc_dow:ax,sc_dows:Mx,sc_every:cx,sc_everyN_dates:ux,sc_everyN_dow:lx,sc_everyN_dows:Nx,sc_everyN_hours:Lx,sc_everyN_minutes:gx,sc_everyN_months:jx,sc_everyN_seconds:yx,sc_every_dates:Tx,sc_every_dow:Dx,sc_every_dows:dx,sc_every_hours:hx,sc_every_minutes:zx,sc_every_months:wx,sc_every_seconds:Ix,sc_from:Cx,sc_hours:px,sc_interval:Ax,sc_intervalBetween:mx,sc_invalid_cron:fx,sc_minutes:Ox,sc_months:Ex,sc_once:_x,sc_period:xx,sc_seconds:Sx,sc_simple:kx,sc_specific:vx,sc_specific_dates:Yx,sc_specific_dow:Qx,sc_specific_dows:bx,sc_specific_hours:Ux,sc_specific_minutes:$x,sc_specific_months:Px,sc_specific_seconds:Wx,sc_time:Jx,sc_to:Bx,sc_wizard:Rx,sch_all:Fx,sch_astroDay:Gx,sch_astroNight:Hx,sch_astro_dawn:Vx,sch_astro_dusk:Zx,sch_astro_goldenHour:Xx,sch_astro_goldenHourEnd:Kx,sch_astro_nadir:qx,sch_astro_nauticalDawn:eS,sch_astro_nauticalDusk:tS,sch_astro_night:sS,sch_astro_nightEnd:iS,sch_astro_solarNoon:rS,sch_astro_sunrise:oS,sch_astro_sunriseEnd:nS,sch_astro_sunset:aS,sch_astro_sunsetStart:MS,sch_at:cS,sch_desc_atTime:uS,sch_desc_everyDay:lS,sch_desc_everyHour:NS,sch_desc_everyMinute:LS,sch_desc_everyMonth:gS,sch_desc_everyNDay:jS,sch_desc_everyNHours:yS,sch_desc_everyNMinutes:TS,sch_desc_everyNMonths:DS,sch_desc_everyNWeeks:dS,sch_desc_everyNYears:hS,sch_desc_everyWeek:zS,sch_desc_everyYear:wS,sch_desc_intervalFromTo:IS,sch_desc_never:CS,sch_desc_onDate:pS,sch_desc_onDates:AS,sch_desc_onEveryDate:mS,sch_desc_onMonth:fS,sch_desc_onMonths:OS,sch_desc_onWeekday:ES,sch_desc_onWeekdays:_S,sch_desc_onWeekends:xS,sch_desc_onWorkdays:SS,sch_desc_onceInPast:kS,sch_desc_once_on:vS,sch_desc_validFrom:YS,sch_desc_validFromTo:QS,sch_desc_validTo:bS,sch_every:US,sch_exactTime:$S,sch_from:PS,sch_fromTo:WS,sch_intervalTime:JS,sch_invert:BS,sch_no_one:RS,sch_on:FS,sch_period:GS,sch_periodDaily:HS,sch_periodDates:VS,sch_periodDay:ZS,sch_periodEvery:XS,sch_periodEveryDay:KS,sch_periodEveryMonth:qS,sch_periodEveryWeek:e5,sch_periodEveryYear:t5,sch_periodHours:s5,sch_periodMinutes:i5,sch_periodMonth:r5,sch_periodMonthly:o5,sch_periodOnce:n5,sch_periodSpecificMonths:a5,sch_periodWeek:M5,sch_periodWeekdays:c5,sch_periodWeekend:u5,sch_periodWeekly:l5,sch_periodWorkdays:N5,sch_periodYear:L5,sch_periodYearly:g5,sch_specificTime:j5,sch_time:y5,sch_to:T5,sch_valid:D5,sch_validFrom:d5,sch_validTo:h5,sch_wholeDay:z5,sch_yearEveryMonth:w5},C5="Ações",p5="Acrescentar",A5="Cancelar",m5="Categorias",f5="Verificado",O5="Excluir",E5="Perto",_5="Comercial",x5="Configurar",S5="Conectado",k5="Continuar",v5="Copiado",Y5="Crio",Q5="Colheita",b5="Delete",U5="Excluir",$5="Descartar",P5="Desconectado",W5="Erro",J5="Filtro",B5="Sexta-feira",R5="Latitude",F5="Sair",G5="Longitude",H5="mensagem",V5="Segunda-feira",Z5="Nome",X5="Objetos",K5="Está bem",q5="produtos",ek="Renomear/Mover/Copiar",tk="Repita",sk="Substituir",ik="Raiz",rk="Sábado",ok="Salve ",nk="Selecionado",ak="Estados",Mk="Domingo",ck="Quinta-feira",uk="Timestamp",lk="Terça-feira",Nk="Atualizar",Lk="Válida até",gk="Valor",jk="Versão",yk="Quarta-feira",Tk="Largura",Dk="Sim",dk="diferente",hk="Todos podem ler objetos",zk="Todos podem ler o estado",wk="Todos podem escrever objetos",Ik="Todos podem escrever o estado",Ck="O grupo pode ler o objeto",pk="O grupo pode ler o estado",Ak="O grupo pode escrever o objeto",mk="O grupo pode escrever o estado",fk="O proprietário pode ler o objeto",Ok="O proprietário pode ler o estado",Ek="O proprietário pode escrever o objeto",_k="O proprietário pode escrever o estado",xk="Botões",Sk="Mudou de",kk="fechar",vk="Criar estado booleano",Yk="Criar canal",Qk="Criar dispositivo",bk="Criar estado numérico",Uk="Criar estado",$k="Criar estado de string",Pk="d.",Wk="Fr",Jk="Mo",Bk="Sa",Rk="Su",Fk="º",Gk="Tu",Hk="Nós",Vk="Modo especialista",Zk="FALSO",Xk="Todos os arquivos",Kk="áudio",qk="Código/JSON",ev="Imagens",tv="Texto",sv="Vídeo",iv="Configurações",rv="sem",ov="Função",nv="ID",av="Nome",Mv="Papel (Função)",cv="Quarto",uv="Tipo",lv="Configurações inválidas",Nv="Última mudança",Lv="localmente",gv="abril",jv="agosto",yv="dezembro",Tv="fevereiro",Dv="janeiro",dv="julho",hv="junho",zv="Mai",wv="março",Iv="novembro",Cv="outubro",pv="setembro",Av="abril",mv="agosto",fv="dezembro",Ov="fevereiro",Ev="janeiro",_v="julho",xv="junho",Sv="Mai",kv="março",vv="novembro",Yv="outubro",Qv="setembro",bv="Nenhum",Uv="Objeto alterado por",$v="Objeto alterado pela última vez em",Pv="Configurações de outro adaptador %s",Wv="Código de qualidade",Jv="repetir",Bv='Para selecionar a pasta, basta segurar a tecla "shift" clicando na pasta.',Rv="Mostrar tudo",Fv="Estado alterado por",Gv="Objeto alterado de",Hv="Timestamp",Vv="Confirmado",Zv="Comente",Xv="Copie o valor do estado",Kv="Segure a tecla Ctrl/⌘ para abrir o link",qv="Opções customizadas",eY="Excluir objeto",tY="Editar objeto",sY="Edite o valor do estado",iY="Expira em",rY="De",oY="Última alteração",nY="Qualidade",aY="Timestamp",MY="Usuário",cY="Valor",uY="verdadeiro",lY="Valor",NY="Aviso: O trabalho CRON será executado a cada minuto durante o período especificado!",LY="Aviso: O trabalho CRON será executado a cada segundo durante o período especificado!",gY="CRON",jY="Data",yY="Dias",TY="Dia",DY="Dia da semana",dY="todos",hY="a cada N dias",zY="todo enésimo dia da semana",wY="todos os N dias da semana",IY="a cada N horas",CY="a cada N minutos",pY="a cada N meses",AY="a cada N segundos",mY="todo dia",fY="todos os dias da semana",OY="todos os dias da semana",EY="toda hora",_Y="todo minuto",xY="todo mês",SY="todo segundo",kY="de",vY="horas",YY="intervalo",QY="intervalo entre",bY="CRON inválido",UY="minutos",$Y="meses",PY="uma vez",WY="período",JY="segundos",BY="simples",RY="tempo específico",FY="datas específicas",GY="dia(s) específico(s) da semana",HY="dia específico de semanas",VY="horas específicas",ZY="minutos específicos",XY="meses específicos",KY="segundos específicos",qY="tempo",eQ="para",tQ="assistente",sQ="tudo",iQ="dia astral",rQ="noite astral",oQ="amanhecer",nQ="anoitecer",aQ="hora dourada",MQ="Fim da hora dourada",cQ="nadir",uQ="Amanhecer náutico",lQ="Anoitecer náutico",NQ="noite",LQ="fim da noite",gQ="meio-dia solar",jQ="nascer do sol",yQ="fim do nascer do sol",TQ="pôr do sol",DQ="início do pôr do sol",dQ="às",hQ="em %s",zQ="todo dia",wQ="toda hora",IQ="todo minuto",CQ="todo mês",pQ="a cada %s dias",AQ="a cada %s horas",mQ="a cada %s minutos",fQ="a cada %s meses",OQ="a cada %s semanas",EQ="a cada %s anos",_Q="toda semana",xQ="todo ano",SQ="de %s para %s",kQ="nunca",vQ="em %s de %s",YQ="em %s e %s de",QQ="em toda data de",bQ="%s",UQ="%s e %s",$Q="em %s",PQ="em %s e %s",WQ="nos fins de semana",JQ="em dias úteis",BQ="não será mais executado, porque o começo está no passado",RQ="em %s",FQ="de %s",GQ="Executar de até",HQ="até %s",VQ="cada",ZQ="tempo específico",XQ="de",KQ="de a´t",qQ="tempo de intervalo",eb="invertido",tb="nenhum",sb="em",ib="período",rb="diariamente",ob="datas",nb="dia",ab="todos",Mb="todo dia",cb="todo mês",ub="toda semana",lb="todo ano",Nb="horas",Lb="minutos",gb="mês",jb="por mês",yb="uma vez",Tb="meses específicos",Db="semana",db="dias úteis",hb="final de semana",zb="semanal",wb="dias úteis",Ib="ano",Cb="anual",pb="tempo específico",Ab="tempo",mb="para",fb="válido",Ob="de",Eb="para",_b="dia inteiro",xb="todo mês",Sb={"ra_%s links from aliases":"%s links de aliases","ra_%s object(s) processed":"%s objeto(s) processado(s)","ra_%s was imported":"%s foi importado","ra_Accept license":"Aceitar licença",ra_Actions:C5,"ra_Add new child object to selected parent":"Adicionar novo objeto filho ao pai selecionado","ra_Add objects tree from JSON file":"Adicionar árvore de objetos do arquivo JSON","ra_Add row":"Adicionar linha","ra_Advanced options":"Opções avançadas","ra_All items are filtered out":"Todos os itens são filtrados","ra_All objects":"Todos os objetos",ra_Append:p5,"ra_Append %s entries or replace existing?":"Acrescentar %s entradas ou substituir as existentes?","ra_Append or replace?":"Acrescentar ou substituir?","ra_Are you sure?":"Você tem certeza?","ra_Auto (no custom columns)":"Auto (sem colunas personalizadas)","ra_Back to %s":"Voltar para %s","ra_Background image":"Imagem de fundo",ra_Cancel:A5,"ra_Cannot add items with set filter":"Não é possível adicionar itens com filtro definido","ra_Cannot decode license":"Não é possível decodificar a licença","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Não é possível determinar a posição: as configurações do sistema estão vazias e a detecção de GPS está desativada no navegador",'ra_Cannot find "%s"':'Não foi possível encontrar "%s"','ra_Cannot read "%s"':'Não é possível ler "%s"',"ra_Cannot read licenses: %s":"Não é possível ler licenças: %s","ra_Cannot retrieve options, as instance is offline":"Não é possível recuperar opções, pois a instância está off-line","ra_Cannot update attribute, because not found in the object":"Não é possível atualizar o atributo, porque não foi encontrado no objeto","ra_Cannot upload":"Não é possível fazer upload",ra_Categories:m5,"ra_Chained certificate":"certificado encadeado","ra_Change color theme":"Alterar tema de cores","ra_Changed from":"Mudou de","ra_Channel → State":"Canal → Estado","ra_Check license":"Verifique a licença",ra_Checked:f5,ra_Clear:O5,"ra_Clear filter":"Filtro limpo","ra_Clear icon":"Ícone de limpeza","ra_Click to see in full size":"Clique para ver em tamanho real.","ra_Click to show":"Clique para mostrar","ra_Clone current row":"Clonar linha atual",ra_Close:E5,"ra_Collapse all nodes":"Recolher todos os nós","ra_Collapse one step node":"Recolher um nível",ra_Commercial:_5,ra_Configure:x5,"ra_Configure visible columns":"Configurar colunas visíveis","ra_Confirm deletion of %s":"Confirme a exclusão de %s",ra_Connected:S5,ra_Continue:k5,ra_Copied:v5,"ra_Copied %s":'"%s" copiado',"ra_Copy content":"Copiar conteúdo",ra_Create:Y5,"ra_Create alias":"Criar alias","ra_Create folder":"Criar pasta","ra_Create new folder in %s":"Crie uma nova pasta em %s",ra_Crop:Q5,"ra_Define CRON...":"Defina CRON...","ra_Define functions":"Definir funções","ra_Define rooms":"Definir quartos","ra_Define schedule":"Definir cronograma","ra_Define schedule...":"Definir programação ...",ra_Del:b5,ra_Delete:U5,"ra_Delete current row":"Excluir linha atual","ra_Deselect all":"Desmarque todos","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Desativar/Ativar tradução",ra_Discard:$5,ra_Disconnected:P5,"ra_Do not ask for next 2 hours in this session":"Não peça as próximas 2 horas nesta sessão","ra_Do not export values of states":"Não exporte valores de estados","ra_Do not use let's encrypt":"Não use vamos criptografar","ra_Docker is not available":"O Docker não está disponível","ra_Docker is not installed or not running":"O Docker não está instalado ou não está em execução","ra_Double click to reset table layout":"Clique duas vezes para redefinir o layout da tabela","ra_Drag 'n' drop some files here, or click to select files":"Arraste e solte alguns arquivos aqui ou clique para selecionar arquivos","ra_Drop file here":"Solte o arquivo aqui","ra_Drop the files here...":"Solte o arquivo aqui ...","ra_Duplicate name":"Nome duplicado","ra_Edit ACL":"Editar ACL","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuração personalizada","ra_Edit full path":"Editar caminho completo","ra_Edit function":"Função de edição","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar papel","ra_Edit room":"Sala de edição","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Digite o código dessa página aqui",ra_Error:W5,"ra_Expand all nodes":"Expanda todos os nós","ra_Expand one step node":"Expanda um nível","ra_Expand/Collapse card":"Expandir/Recolher cartão","ra_Export configuration section":"Seção de configuração de exportação","ra_Export data to %s file":"Exportar dados para o arquivo %s","ra_Failed to open JSON File":"Falha ao abrir arquivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"O arquivo é muito grande. Max %sk permitido. Tente usar SVG.",ra_Filter:J5,"ra_Filter and Data Actions":"Ações de filtro e dados","ra_Filter files":"Filtrar arquivos","ra_Folder name":"Nome da pasta","ra_Folder → Channel → State":"Pasta → Canal → Estado","ra_Folder → Device → Channel → State":"Pasta → Dispositivo → Canal → Estado","ra_Folder → State":"Pasta → Estado","ra_Folders always first":"Pastas sempre primeiro",ra_Friday:B5,"ra_From file":"Do arquivo","ra_From text":"Do texto","ra_Get %s access":"Obtenha acesso %s","ra_Good luck":"Boa sorte","ra_Hide empty folders":"Esconder pastas vazias","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nenhum arquivo for criado na pasta, ele desaparecerá depois que o navegador for fechado","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se o botão acima não funcionar, você pode autorizar manualmente este aplicativo visitando esta url","ra_Import and add configuration section":"Seção de importação e adição de configuração","ra_Import and replace configuration section":"Seção de configuração de importação e substituição","ra_Import data from %s file":"Importar dados do arquivo %s","ra_Import from %s":"Importar de %s","ra_Instance %s is alive":"O %s da instância está ativo","ra_Instance %s is not alive":"O %s da instância não está ativo","ra_Instance is not alive":"A instância não está ativa","ra_Invalid CRON":"CRON inválido","ra_Invalid JSON":"JSON inválido","ra_Invalid JSON file.":"Arquivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Esperava-se uma matriz.","ra_Invalid answer from server":"Resposta inválida do servidor","ra_Invalid parent folder!":"Pasta pai inválida!","ra_Invalid structure":"Estrutura inválida","ra_JSON editor":"Editor JSON","ra_Last change":"Última mudança",ra_Latitude:R5,"ra_License %s":"Licença %s","ra_License agreement":"Contrato de licença","ra_License does not exist":"A licença não existe","ra_License expired on %s":"A licença expirou em %s",'ra_License for other product "%s"':'Licença para outro produto "%s"',"ra_License is for version %s, but required version is %s.":"A licença é para a versão %s, mas a versão necessária é %s.","ra_License must be converted":"A licença deve ser convertida para uma versão mais recente. Você pode fazê-lo em seu perfil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licença não encontrada no gerenciador de licenças. Deseja atualizar as licenças do iobroker.net?","ra_Listen on all IPs":"Ouça em todos os IPs","ra_Load configuration from file":"Carregar configuração do arquivo",ra_Logout:F5,ra_Longitude:G5,'ra_May not trigger "updateLicenses"':'Pode não acionar "updateLicenses"',ra_Message:H5,ra_Monday:V5,"ra_Move down":"Mover para baixo","ra_Move up":"Subir",ra_Name:Z5,"ra_No data found in file":"Nenhum dado encontrado no arquivo","ra_No one license found in license manager":"Nenhuma licença encontrada no gerenciador de licenças","ra_No response from admin":"Nenhuma resposta do administrador","ra_No response from the backend":"Nenhuma resposta do backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Os não especialistas podem criar novos objetos apenas em "0_userdata.0" ou "alias.0".',"ra_Not a number":"Não é um número","ra_OAuth Client ID":"ID do cliente OAuth","ra_OAuth Client secret":"Segredo do cliente OAuth",ra_Objects:X5,ra_Ok:K5,"ra_On weekdays":"Nos dias úteis","ra_Only following structures of objects are available:":"Apenas as seguintes estruturas de objetos estão disponíveis:","ra_Only selected":"Apenas selecionado","ra_Owner group":"Grupo proprietário","ra_Owner user":"Usuário proprietário","ra_Passwords are not equal!":"As senhas não são iguais!","ra_Place your files here or click here to open the browse dialog":"Coloque seus arquivos aqui ou clique aqui para abrir a janela de navegação","ra_Please allow popups in your browser for this page!":"Por favor, permita pop-ups no seu navegador para esta página!","ra_Please confirm":"Por favor confirme","ra_Please create license":"Crie uma licença","ra_Please enter the license":"Por favor, insira a licença","ra_Please select file...":"Selecione o arquivo...","ra_Please select object ID...":"Selecione o ID do objeto ...","ra_Port could be used by %s":"A porta pode ser usada por %s","ra_Port is already used by %s":"A porta já está sendo usada por %s","ra_Press ENTER Key to add new item":"Pressione a tecla ENTER para adicionar um novo item","ra_Private certificate":"certificado privado",ra_Product:q5,"ra_Public certificate":"certificado público","ra_Quality code":"Qualidade","ra_Refresh tree":"Atualizar árvore","ra_Reload files":"Recarregar arquivos",ra_Rename_Move_Copy:ek,"ra_Renew %s access":"Renovar acesso %s",ra_Repeat:tk,ra_Replace:sk,"ra_Request timed out":"Solicitação expirou","ra_Restrict to folder":"Restringir à pasta",ra_Root:ik,ra_Saturday:rk,ra_Save:ok,"ra_Save and close":"Salvar e fechar","ra_Save configuration to file":"Salvar configuração em arquivo","ra_Save objects tree as JSON file":"Salvar árvore de objetos como arquivo JSON","ra_Select all":"Selecionar tudo","ra_Select color":"Selecione a cor","ra_Select predefined icon":"Selecione o ícone predefinido","ra_Select type of export":"Selecione o tipo de exportação",ra_Selected:nk,"ra_Selected %s object(s)":"%s objeto(s) selecionado(s)","ra_Serial number (UUID)":"Número de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'O número de série (UUID) "%s" na licença é para outro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"A sessão irá expirar em %s segundos. Continuar?","ra_Show all folders":"Mostrar todas as pastas","ra_Show lines between rows":"Mostrar linhas entre as linhas","ra_Show/Hide object descriptions":"Mostrar/ocultar descrições de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Alguns dados não são armazenados. Descartar?",ra_States:ak,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado com sucesso. Token válido até %s e será renovado automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado com sucesso. Token válido até %s, mas pode expirar, pois a instância não está em execução.","ra_Suitable license not found in license manager":"Licença adequada não encontrada no gerenciador de licenças",ra_Sunday:Mk,"ra_Suppress question for next %s minutes":"Suprimir pergunta nos próximos %s minutos","ra_System language":"Idioma do sistema","ra_Take browser position":"Tomar posição do navegador","ra_Take position from system settings":"Tomar posição a partir das configurações do sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Os especialistas podem criar objetos em qualquer lugar, exceto no segundo nível (por exemplo, "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"A página que você está procurando não foi encontrada","ra_The schedule will be executed every minute. Are you sure?":"O agendamento será executado a cada minuto. Tem certeza?","ra_The schedule will be executed every second. Are you sure?":"O agendamento será executado a cada segundo. Tem certeza?",ra_Thursday:ck,ra_Timestamp:uk,"ra_Toggle expert mode":"Alternar modo especialista","ra_Toggle the states view":"Alternar a visualização dos estados","ra_Toggle view mode":"Alternar modo de visualização","ra_Too big":"Muito grande","ra_Too small":"Muito pequeno","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:lk,"ra_Unknown error":"Erro desconhecido","ra_Unknown error!":"Erro desconhecido!",ra_Update:Nk,"ra_Upload file":"Subir arquivo","ra_Use all available let's encrypt certificates":"Use todos os certificados disponíveis vamos criptografar","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use o adaptador iobroker.acme para certificados letsencrypt","ra_Use system settings for position":"Use as configurações do sistema para a posição","ra_Used system settings":"Configurações do sistema usadas","ra_User files":"Arquivos do usuário",ra_ValidTill:Lk,ra_Value:gk,ra_Version:jk,"ra_View file":"Visualizar arquivo","ra_View: %s":"Visualizar: %s",ra_Wednesday:yk,ra_Width:Tk,"ra_YAML editor":"Editor YAML",ra_Yes:Dk,"ra_You can export all objects or just the selected branch.":"Você pode exportar todos os objetos ou apenas a ramificação selecionada.","ra_You can filter entries by entering here some text":"Você pode filtrar as entradas digitando aqui algum texto","ra_You can use * as wildcard":"Você pode usar * como curinga",ra___different__:dk,ra_aclEveryone_read_object:hk,ra_aclEveryone_read_state:zk,ra_aclEveryone_write_object:wk,ra_aclEveryone_write_state:Ik,ra_aclGroup_read_object:Ck,ra_aclGroup_read_state:pk,ra_aclGroup_write_object:Ak,ra_aclGroup_write_state:mk,ra_aclOwner_read_object:fk,ra_aclOwner_read_state:Ok,ra_aclOwner_write_object:Ek,ra_aclOwner_write_state:_k,ra_buttons:xk,ra_changedFrom:Sk,ra_close:kk,ra_create_boolean_state:vk,ra_create_channel:Yk,ra_create_device:Qk,ra_create_number_state:bk,ra_create_state:Uk,ra_create_string_state:$k,ra_daysShortText:Pk,ra_dow_Fr:Wk,ra_dow_Mo:Jk,ra_dow_Sa:Bk,ra_dow_Su:Rk,ra_dow_Th:Fk,ra_dow_Tu:Gk,ra_dow_We:Hk,ra_expertMode:Vk,ra_false:Zk,ra_fileType_all:Xk,ra_fileType_audio:Kk,ra_fileType_code:qk,ra_fileType_images:ev,ra_fileType_txt:tv,ra_fileType_video:sv,"ra_fileType_video,":"Vídeo",ra_filter_customs:iv,ra_filter_customs_without:rv,ra_filter_func:ov,ra_filter_id:nv,ra_filter_name:av,ra_filter_role:Mv,ra_filter_room:cv,ra_filter_type:uv,"ra_import data from %s file":"Importar dados do arquivo %s",ra_invalidConfig:lv,ra_lastChange:Nv,ra_locally:Lv,ra_month_Apr:gv,ra_month_Aug:jv,ra_month_Dec:yv,ra_month_Feb:Tv,ra_month_Jan:Dv,ra_month_Jul:dv,ra_month_Jun:hv,ra_month_Mai:zv,ra_month_Mar:wv,ra_month_Nov:Iv,ra_month_Oct:Cv,ra_month_Sep:pv,ra_months_Apr:Av,ra_months_Aug:mv,ra_months_Dec:fv,ra_months_Feb:Ov,ra_months_Jan:Ev,ra_months_Jul:_v,ra_months_Jun:xv,ra_months_Mai:Sv,ra_months_Mar:kv,ra_months_Nov:vv,ra_months_Oct:Yv,ra_months_Sep:Qv,"ra_no confirm for 5 mins":"sem confirmação por 5 minutos",ra_none:bv,ra_object_changed_by:Uv,ra_object_changed_by_user:$v,ra_otherConfig:Pv,ra_qualityCode:Wv,ra_repeat:Jv,ra_select_folder_hint:Bv,ra_show_all:Rv,ra_state_changed_by:Fv,ra_state_changed_from:Gv,ra_timestamp:Hv,ra_tooltip_ack:Vv,ra_tooltip_comment:Zv,ra_tooltip_copyState:Xv,ra_tooltip_ctrlForLink:Kv,ra_tooltip_customConfig:qv,ra_tooltip_deleteObject:eY,ra_tooltip_editObject:tY,ra_tooltip_editState:sY,ra_tooltip_expire:iY,ra_tooltip_from:rY,ra_tooltip_lc:oY,ra_tooltip_quality:nY,ra_tooltip_ts:aY,ra_tooltip_user:MY,ra_tooltip_value:cY,ra_true:uY,"ra_use seconds":"use segundos",ra_val:lY,"ra_via internet":"via internet",ra_warning_every_minute:NY,ra_warning_every_second:LY,sc_cron:gY,sc_date:jY,sc_dates:yY,sc_dow:TY,sc_dows:DY,sc_every:dY,sc_everyN_dates:hY,sc_everyN_dow:zY,sc_everyN_dows:wY,sc_everyN_hours:IY,sc_everyN_minutes:CY,sc_everyN_months:pY,sc_everyN_seconds:AY,sc_every_dates:mY,sc_every_dow:fY,sc_every_dows:OY,sc_every_hours:EY,sc_every_minutes:_Y,sc_every_months:xY,sc_every_seconds:SY,sc_from:kY,sc_hours:vY,sc_interval:YY,sc_intervalBetween:QY,sc_invalid_cron:bY,sc_minutes:UY,sc_months:$Y,sc_once:PY,sc_period:WY,sc_seconds:JY,sc_simple:BY,sc_specific:RY,sc_specific_dates:FY,sc_specific_dow:GY,sc_specific_dows:HY,sc_specific_hours:VY,sc_specific_minutes:ZY,sc_specific_months:XY,sc_specific_seconds:KY,sc_time:qY,sc_to:eQ,sc_wizard:tQ,sch_all:sQ,sch_astroDay:iQ,sch_astroNight:rQ,sch_astro_dawn:oQ,sch_astro_dusk:nQ,sch_astro_goldenHour:aQ,sch_astro_goldenHourEnd:MQ,sch_astro_nadir:cQ,sch_astro_nauticalDawn:uQ,sch_astro_nauticalDusk:lQ,sch_astro_night:NQ,sch_astro_nightEnd:LQ,sch_astro_solarNoon:gQ,sch_astro_sunrise:jQ,sch_astro_sunriseEnd:yQ,sch_astro_sunset:TQ,sch_astro_sunsetStart:DQ,sch_at:dQ,sch_desc_atTime:hQ,sch_desc_everyDay:zQ,sch_desc_everyHour:wQ,sch_desc_everyMinute:IQ,sch_desc_everyMonth:CQ,sch_desc_everyNDay:pQ,sch_desc_everyNHours:AQ,sch_desc_everyNMinutes:mQ,sch_desc_everyNMonths:fQ,sch_desc_everyNWeeks:OQ,sch_desc_everyNYears:EQ,sch_desc_everyWeek:_Q,sch_desc_everyYear:xQ,sch_desc_intervalFromTo:SQ,sch_desc_never:kQ,sch_desc_onDate:vQ,sch_desc_onDates:YQ,sch_desc_onEveryDate:QQ,sch_desc_onMonth:bQ,sch_desc_onMonths:UQ,sch_desc_onWeekday:$Q,sch_desc_onWeekdays:PQ,sch_desc_onWeekends:WQ,sch_desc_onWorkdays:JQ,sch_desc_onceInPast:BQ,sch_desc_once_on:RQ,sch_desc_validFrom:FQ,sch_desc_validFromTo:GQ,sch_desc_validTo:HQ,sch_every:VQ,sch_exactTime:ZQ,sch_from:XQ,sch_fromTo:KQ,sch_intervalTime:qQ,sch_invert:eb,sch_no_one:tb,sch_on:sb,sch_period:ib,sch_periodDaily:rb,sch_periodDates:ob,sch_periodDay:nb,sch_periodEvery:ab,sch_periodEveryDay:Mb,sch_periodEveryMonth:cb,sch_periodEveryWeek:ub,sch_periodEveryYear:lb,sch_periodHours:Nb,sch_periodMinutes:Lb,sch_periodMonth:gb,sch_periodMonthly:jb,sch_periodOnce:yb,sch_periodSpecificMonths:Tb,sch_periodWeek:Db,sch_periodWeekdays:db,sch_periodWeekend:hb,sch_periodWeekly:zb,sch_periodWorkdays:wb,sch_periodYear:Ib,sch_periodYearly:Cb,sch_specificTime:pb,sch_time:Ab,sch_to:mb,sch_valid:fb,sch_validFrom:Ob,sch_validTo:Eb,sch_wholeDay:_b,sch_yearEveryMonth:xb},kb="Acties",vb="toevoegen",Yb="Annuleer",Qb="Categorieën",bb="Gecontroleerd",Ub="Verwijderen",$b="Dichtbij",Pb="Reclame",Wb="Configureren",Jb="Verbonden",Bb="Doorgaan",Rb="Gekopieerd",Fb="Creëer",Gb="Bijsnijden",Hb="Delete",Vb="Verwijderen",Zb="Weggooien",Xb="Verbinding verbroken",Kb="Fout",qb="Filter",eU="Vrijdag",tU="Breedtegraad",sU="Uitloggen",iU="Lengtegraad",rU="Bericht",oU="Maandag",nU="Naam",aU="Voorwerpen",MU="OK",cU="Product",uU="Hernoemen/Verplaatsen/Kopiëren",lU="Herhaling",NU="Vervangen",LU="Wortel",gU="Zaterdag",jU="Sparen",yU="Geselecteerd",TU="Staten",DU="Zondag",dU="Donderdag",hU="Tijdstempel",zU="Dinsdag",wU="Bijwerken",IU="Geldig tot",CU="Waarde",pU="Versie",AU="Woensdag",mU="Breedte",fU="Ja",OU="verschillend",EU="Iedereen kan object lezen",_U="Iedereen kan staat lezen",xU="Iedereen kan object schrijven",SU="Iedereen kan staat schrijven",kU="Groep kan object lezen",vU="Groep kan status lezen",YU="Groep kan object schrijven",QU="Groep kan staat schrijven",bU="Eigenaar kan object lezen",UU="Eigenaar kan staat lezen",$U="Eigenaar kan object schrijven",PU="Eigenaar kan staat schrijven",WU="Toetsen",JU="Veranderd van",BU="dichtbij",RU="Creëer een Booleaanse status",FU="Kanaal maken",GU="Apparaat maken",HU="Nummerstatus maken",VU="Staat creëren",ZU="Tekenreeksstatus maken",XU="d.",KU="Fr",qU="Mo",e6="Za",t6="Zo",s6="Th",i6="Tu",r6="Wij",o6="Expert modus",n6="ONWAAR",a6="Alle bestanden",M6="Audio",c6="Code/JSON",u6="Afbeeldingen",l6="Tekst",N6="Video",L6="Instellingen",g6="zonder",j6="Functie",y6="ID",T6="Naam",D6="Rol",d6="Kamer",h6="Type",z6="Ongeldige instellingen",w6="Laatste wijziging",I6="plaatselijk",C6="april",p6="aug",A6="dec",m6="februari",f6="jan",O6="jul",E6="juni",_6="Mei",x6="mrt",S6="nov",k6="Okt",v6="sept",Y6="april",Q6="aug",b6="dec",U6="februari",$6="jan",P6="jul",W6="juni",J6="Mei",B6="mrt",R6="nov",F6="Okt",G6="sept",H6="geen",V6="Object veranderd door",Z6="Object voor het laatst gewijzigd om",X6="Instellingen van andere adapter %s",K6="Kwaliteitscode",q6="herhalen",e8='Om een map te selecteren, houdt u gewoon de toets "shift" ingedrukt door op de map te klikken.',t8="Alles weergeven",s8="Staat veranderd door",i8="Object veranderd van",r8="Tijdstempel",o8="Erkende vlag",n8="Opmerking",a8="Kopieer de statuswaarde",M8="Houd de Cltr/⌘-toets ingedrukt om de link te openen",c8="Aangepaste instellingen",u8="Object verwijderen",l8="Object bewerken",N8="Bewerk de statuswaarde",L8="Verloopt over",g8="Van",j8="Laatst gewijzigd",y8="Kwaliteit",T8="Tijdstempel",D8="Gebruiker",d8="Waarde",h8="WAAR",z8="Waarde",w8="Waarschuwing: De CRON-taak wordt elke minuut uitgevoerd gedurende de opgegeven periode!",I8="Waarschuwing: De CRON-taak wordt elke seconde uitgevoerd gedurende de opgegeven periode!",C8="CRON",p8="Datum",A8="data",m8="Dag",f8="Dag van de week",O8="elk",E8="elke N dagen",_8="elke N-de dag van de week",x8="elke N dag van de week",S8="elke N uur",k8="elke N minuten",v8="elke N maanden",Y8="elke N seconden",Q8="elke dag",b8="elke dag van de week",U8="elke dag van de week",$8="elk uur",P8="elke minuut",W8="elke maand",J8="elke seconde",B8="Van",R8="uren",F8="Interval",G8="Interval tussen",H8="Ongeldige CRON",V8="Notulen",Z8="maanden",X8="Een keer",K8="Periode",q8="seconden",e9="Gemakkelijk",t9="Specifieke tijd",s9="specifieke data",i9="specifieke dag(en) van de week",r9="specifieke dag van weken",o9="specifieke uren",n9="specifieke minuten",a9="specifieke maanden",M9="specifieke seconden",c9="Tijd",u9="Naar",l9="tovenaar",N9="allemaal",L9="Astro-dag",g9="Astro-nacht",j9="Dageraad",y9="Schemer",T9="gouden uur",D9="Gouden uur einde",d9="Nadir",h9="Nautische dageraad",z9="Nautische schemering",w9="Nacht",I9="Nacht einde",C9="Zonne middag",p9="zonsopkomst",A9="Sunrise einde",m9="Zonsondergang",f9="Zonsondergang start",O9="Bij",E9="op %s",_9="elke dag",x9="elk uur",S9="elke minuut",k9="elke maand",v9="elke %s dag",Y9="elke %s uur",Q9="elke %s minuten",b9="elke %s maanden",U9="elke %s weken",$9="elke %s jaar",P9="elke week",W9="elk jaar",J9="van %s tot %s",B9="nooit",R9="op %s van %s",F9="op %s en %s van",G9="op elke datum van",H9="%s",V9="%s en %s",Z9="op %s",X9="op %s en %s",K9="in het weekend",q9="op werkdagen",e7="zal niet meer worden uitgevoerd, omdat start verleden tijd is",t7="op %s",s7="van %s",i7="Uitvoeren van tot",r7="tot %s",o7="elk",n7="Specifieke tijd",a7="van",M7="Van naar",c7="Interval tijd",u7="omkeren",l7="geen",N7="Aan",L7="Periode",g7="Dagelijks",j7="data",y7="Dag",T7="elk",D7="Elke dag",d7="Elke maand",h7="Elke week",z7="Elk jaar",w7="uren",I7="Notulen",C7="maand",p7="Maandelijks",A7="Een keer",m7="Specifieke maanden",f7="Week",O7="Doordeweekse dagen",E7="Weekend",_7="Wekelijks",x7="werkdagen",S7="Jaar",k7="jaar-",v7="Specifieke tijd",Y7="Tijd",Q7="naar",b7="Geldig",U7="van",$7="naar",P7="Hele dag",W7="elke maand",J7={"ra_%s links from aliases":"%s links van aliassen","ra_%s object(s) processed":"%s object(en) verwerkt","ra_%s was imported":"%s is geïmporteerd","ra_Accept license":"Accepteer licentie",ra_Actions:kb,"ra_Add new child object to selected parent":"Voeg een nieuw kindobject toe aan het geselecteerde bovenliggende object","ra_Add objects tree from JSON file":"Objectenboom toevoegen vanuit JSON-bestand","ra_Add row":"Voeg een rij toe","ra_Advanced options":"Geavanceerde mogelijkheden","ra_All items are filtered out":"Alle items zijn uitgefilterd","ra_All objects":"Alle objecten",ra_Append:vb,"ra_Append %s entries or replace existing?":"%s ingangen toevoegen of bestaande vervangen?","ra_Append or replace?":"Toevoegen of vervangen?","ra_Are you sure?":"Weet je het zeker?","ra_Auto (no custom columns)":"Auto (geen aangepaste kolommen)","ra_Back to %s":"Terug naar %s","ra_Background image":"Achtergrond afbeelding",ra_Cancel:Yb,"ra_Cannot add items with set filter":"Kan geen items toevoegen met ingestelde filter","ra_Cannot decode license":"Kan licentie niet decoderen","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Kan positie niet bepalen: systeeminstellingen zijn leeg en GPS-detectie is uitgeschakeld in browser",'ra_Cannot find "%s"':'Kan "%s" niet vinden','ra_Cannot read "%s"':'Kan "%s" niet lezen',"ra_Cannot read licenses: %s":"Kan licenties niet lezen: %s","ra_Cannot retrieve options, as instance is offline":"Kan opties niet ophalen, omdat instantie offline is","ra_Cannot update attribute, because not found in the object":"Kan kenmerk niet bijwerken, omdat het niet in het object is gevonden","ra_Cannot upload":"Kan niet uploaden",ra_Categories:Qb,"ra_Chained certificate":"Geketend certificaat","ra_Change color theme":"Kleurthema wijzigen","ra_Changed from":"Veranderd van","ra_Channel → State":"Kanaal → Staat","ra_Check license":"Licentie controleren",ra_Checked:bb,ra_Clear:Ub,"ra_Clear filter":"Filter wissen","ra_Clear icon":"Pictogram wissen","ra_Click to see in full size":"Klik om de afbeelding op volledige grootte te bekijken.","ra_Click to show":"Klik om te tonen","ra_Clone current row":"Kloon de huidige rij",ra_Close:$b,"ra_Collapse all nodes":"Vouw alle knooppunten samen","ra_Collapse one step node":"Eén niveau samenvouwen",ra_Commercial:Pb,ra_Configure:Wb,"ra_Configure visible columns":"Configureer zichtbare kolommen","ra_Confirm deletion of %s":"Bevestig het verwijderen van %s",ra_Connected:Jb,ra_Continue:Bb,ra_Copied:Rb,"ra_Copied %s":'"%s" gekopieerd',"ra_Copy content":"Inhoud kopiëren",ra_Create:Fb,"ra_Create alias":"Alias maken","ra_Create folder":"Map aanmaken","ra_Create new folder in %s":"Maak een nieuwe map in %s",ra_Crop:Gb,"ra_Define CRON...":"Definieer CRON...","ra_Define functions":"Definieer functies","ra_Define rooms":"Definieer kamers","ra_Define schedule":"Definieer schema","ra_Define schedule...":"Schema definiëren ...",ra_Del:Hb,ra_Delete:Vb,"ra_Delete current row":"Huidige rij verwijderen","ra_Deselect all":"Deselecteer alles","ra_Device → Channel → State":"Apparaat → Kanaal → Staat","ra_Disable/Enable translation":"Vertaling uitschakelen/inschakelen",ra_Discard:Zb,ra_Disconnected:Xb,"ra_Do not ask for next 2 hours in this session":"Vraag niet om de volgende 2 uur in deze sessie","ra_Do not export values of states":"Exporteer geen waarden van staten","ra_Do not use let's encrypt":"Gebruik geen let's encrypt","ra_Docker is not available":"Docker is niet beschikbaar","ra_Docker is not installed or not running":"Docker is niet geïnstalleerd of draait niet","ra_Double click to reset table layout":"Dubbelklik om de tafelindeling te resetten","ra_Drag 'n' drop some files here, or click to select files":"Sleep enkele bestanden hierheen, of klik om bestanden te selecteren","ra_Drop file here":"Zet het bestand hier neer","ra_Drop the files here...":"Zet het bestand hier neer...","ra_Duplicate name":"Dubbele naam","ra_Edit ACL":"ACL bewerken","ra_Edit alias":"Alias bewerken","ra_Edit custom config":"Bewerk aangepaste config","ra_Edit full path":"Volledig pad bewerken","ra_Edit function":"Bewerkingsfunctie","ra_Edit object field":"Bewerk objectveld","ra_Edit role":"Rol bewerken","ra_Edit room":"Kamer bewerken","ra_Edit value":"Waarde bewerken","ra_Enter the code from that page here":"Voer hier de code van die pagina in",ra_Error:Kb,"ra_Expand all nodes":"Vouw alle knooppunten uit","ra_Expand one step node":"Vouw een niveau uit","ra_Expand/Collapse card":"Kaart uit-/inklappen","ra_Export configuration section":"Sectie Exportconfiguratie","ra_Export data to %s file":"Exporteer gegevens naar %s bestand","ra_Failed to open JSON File":"JSON-bestand kan niet worden geopend","ra_Fallback custom certificates":"Fallback aangepaste certificaten","ra_File is too big. Max %sk allowed. Try use SVG.":"Bestand is te groot. Max. %sk toegestaan. Probeer SVG te gebruiken.",ra_Filter:qb,"ra_Filter and Data Actions":"Filter- en gegevensacties","ra_Filter files":"Bestanden filteren","ra_Folder name":"Naam van de map","ra_Folder → Channel → State":"Map → Kanaal → Staat","ra_Folder → Device → Channel → State":"Map → Apparaat → Kanaal → Staat","ra_Folder → State":"Map → Staat","ra_Folders always first":"Mappen altijd eerst",ra_Friday:eU,"ra_From file":"Van bestand","ra_From text":"Van tekst","ra_Get %s access":"Krijg %s toegang","ra_Good luck":"Veel geluk","ra_Hide empty folders":"Verberg lege mappen","ra_If no file will be created in the folder, it will disappear after the browser closed":"Als er geen bestand in de map wordt gemaakt, verdwijnt het nadat de browser is gesloten","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Als de bovenstaande knop niet werkt, kunt u deze app handmatig autoriseren door deze url te bezoeken","ra_Import and add configuration section":"Configuratiesectie importeren en toevoegen","ra_Import and replace configuration section":"Configuratiesectie importeren en vervangen","ra_Import data from %s file":"Importeer gegevens uit %s bestand","ra_Import from %s":"Importeren uit %s","ra_Instance %s is alive":"Instantie %s leeft","ra_Instance %s is not alive":"Instantie %s is niet actief","ra_Instance is not alive":"Instantie leeft niet","ra_Invalid CRON":"Ongeldige CRON","ra_Invalid JSON":"Ongeldige JSON","ra_Invalid JSON file.":"Ongeldig JSON-bestand.","ra_Invalid JSON format. Expected an array.":"Ongeldige JSON-indeling. Er werd een array verwacht.","ra_Invalid answer from server":"Ongeldig antwoord van de server","ra_Invalid parent folder!":"Ongeldige bovenliggende map!","ra_Invalid structure":"Ongeldige structuur","ra_JSON editor":"JSON-editor","ra_Last change":"Laatste wijziging",ra_Latitude:tU,"ra_License %s":"Licentie %s","ra_License agreement":"Licentieovereenkomst","ra_License does not exist":"Licentie bestaat niet","ra_License expired on %s":"Licentie verlopen op %s",'ra_License for other product "%s"':'Licentie voor ander product "%s"',"ra_License is for version %s, but required version is %s.":"Licentie is voor versie %s, maar vereiste versie is %s.","ra_License must be converted":"Licentie moet worden omgezet naar nieuwere versie. U kunt dit doen in uw iobroker.net-profiel.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licentie niet gevonden in licentiebeheer. Wilt u licenties van iobroker.net bijwerken?","ra_Listen on all IPs":"Luister op alle IP's","ra_Load configuration from file":"Laad configuratie uit bestand",ra_Logout:sU,ra_Longitude:iU,'ra_May not trigger "updateLicenses"':'Activeert mogelijk niet "updateLicenses"',ra_Message:rU,ra_Monday:oU,"ra_Move down":"Naar beneden verplaatsen","ra_Move up":"Omhoog gaan",ra_Name:nU,"ra_No data found in file":"Geen gegevens gevonden in bestand","ra_No one license found in license manager":"Geen enkele licentie gevonden in licentiebeheer","ra_No response from admin":"Geen reactie van de beheerder","ra_No response from the backend":"Geen reactie van de backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Niet-experts mogen alleen nieuwe objecten maken in "0_userdata.0" of "alias.0".',"ra_Not a number":"Geen nummer","ra_OAuth Client ID":"OAuth-client-ID","ra_OAuth Client secret":"OAuth-clientgeheim",ra_Objects:aU,ra_Ok:MU,"ra_On weekdays":"Op weekdagen","ra_Only following structures of objects are available:":"Alleen de volgende structuren van objecten zijn beschikbaar:","ra_Only selected":"Alleen geselecteerd","ra_Owner group":"Eigenaarsgroep","ra_Owner user":"Eigenaar gebruiker","ra_Passwords are not equal!":"Wachtwoorden zijn niet gelijk!","ra_Place your files here or click here to open the browse dialog":"Plaats uw bestanden hier of klik hier om het bladervenster te openen","ra_Please allow popups in your browser for this page!":"Sta pop-ups toe in uw browser voor deze pagina!","ra_Please confirm":"Bevestig alstublieft","ra_Please create license":"Maak een licentie aan","ra_Please enter the license":"Voer de licentie in","ra_Please select file...":"Selecteer bestand...","ra_Please select object ID...":"Selecteer object-ID ...","ra_Port could be used by %s":"Poort kan worden gebruikt door %s","ra_Port is already used by %s":"Poort wordt al gebruikt door %s","ra_Press ENTER Key to add new item":"Druk op de ENTER-toets om een nieuw item toe te voegen","ra_Private certificate":"Privé certificaat",ra_Product:cU,"ra_Public certificate":"Openbaar certificaat","ra_Quality code":"Kwaliteit","ra_Refresh tree":"Vernieuw de boom","ra_Reload files":"Laad bestanden opnieuw",ra_Rename_Move_Copy:uU,"ra_Renew %s access":"%s toegang verlengen",ra_Repeat:lU,ra_Replace:NU,"ra_Request timed out":"Verzoek verlopen","ra_Restrict to folder":"Beperken tot map",ra_Root:LU,ra_Saturday:gU,ra_Save:jU,"ra_Save and close":"Opslaan en afsluiten","ra_Save configuration to file":"Sla de configuratie op in een bestand","ra_Save objects tree as JSON file":"Sla de objectenboom op als JSON-bestand","ra_Select all":"Selecteer alles","ra_Select color":"Selecteer kleur","ra_Select predefined icon":"Selecteer voorgedefinieerd pictogram","ra_Select type of export":"Selecteer het type export",ra_Selected:yU,"ra_Selected %s object(s)":"Geselecteerde %s object(en)","ra_Serial number (UUID)":"Serienummer (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Serienummer (UUID) "%s" in licentie is voor ander apparaat.',"ra_Session will expire in %s seconds. Continue?":"Sessie verloopt over %s seconden. Doorgaan?","ra_Show all folders":"Toon alle mappen","ra_Show lines between rows":"Toon lijnen tussen rijen","ra_Show/Hide object descriptions":"Toon/verberg objectbeschrijvingen","ra_Show/hide filter input":"Filterinvoer weergeven/verbergen","ra_Some data are not stored. Discard?":"Sommige gegevens worden niet opgeslagen. Weggooien?",ra_States:TU,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Succesvol geautoriseerd. Token geldig tot %s en wordt automatisch verlengd.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Succesvol geautoriseerd. Token geldig tot %s, maar kan verlopen omdat de instantie niet actief is.","ra_Suitable license not found in license manager":"Geschikte licentie niet gevonden in licentiebeheer",ra_Sunday:DU,"ra_Suppress question for next %s minutes":"Vraag de volgende %s minuten onderdrukken","ra_System language":"Systeemtaal","ra_Take browser position":"Positie innemen vanuit de browser","ra_Take position from system settings":"Neem positie over van systeeminstellingen",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'De experts kunnen overal objecten maken, behalve vanaf het tweede niveau (bijv. "Vis.0" of "javascript.0").',"ra_The page you are looking for was not found":"De pagina die u zoekt is niet gevonden","ra_The schedule will be executed every minute. Are you sure?":"Het schema wordt elke minuut uitgevoerd. Weet u het zeker?","ra_The schedule will be executed every second. Are you sure?":"Het schema wordt elke seconde uitgevoerd. Weet je het zeker?",ra_Thursday:dU,ra_Timestamp:hU,"ra_Toggle expert mode":"Schakel tussen expertmodus","ra_Toggle the states view":"Schakel de statusweergave in of uit","ra_Toggle view mode":"Schakelen tussen weergavemodus","ra_Too big":"Te groot","ra_Too small":"Te klein","ra_Transparent dialog":"Transparant dialoogvenster",ra_Tuesday:zU,"ra_Unknown error":"Onbekende fout","ra_Unknown error!":"Onbekende fout!",ra_Update:wU,"ra_Upload file":"Upload bestand","ra_Use all available let's encrypt certificates":"Gebruik alle beschikbare Let's Encrypt-certificaten","ra_Use iobroker.acme adapter for letsencrypt certificates":"Gebruik de iobroker.acme-adapter voor letsencrypt-certificaten","ra_Use system settings for position":"Gebruik systeeminstellingen voor positie","ra_Used system settings":"Gebruikte systeeminstellingen","ra_User files":"Gebruikersbestanden",ra_ValidTill:IU,ra_Value:CU,ra_Version:pU,"ra_View file":"Bestand bekijken","ra_View: %s":"Bekijk: %s",ra_Wednesday:AU,ra_Width:mU,"ra_YAML editor":"YAML-editor",ra_Yes:fU,"ra_You can export all objects or just the selected branch.":"U kunt alle objecten of alleen de geselecteerde tak exporteren.","ra_You can filter entries by entering here some text":"U kunt items filteren door hier wat tekst in te voeren","ra_You can use * as wildcard":"U kunt * als joker gebruiken",ra___different__:OU,ra_aclEveryone_read_object:EU,ra_aclEveryone_read_state:_U,ra_aclEveryone_write_object:xU,ra_aclEveryone_write_state:SU,ra_aclGroup_read_object:kU,ra_aclGroup_read_state:vU,ra_aclGroup_write_object:YU,ra_aclGroup_write_state:QU,ra_aclOwner_read_object:bU,ra_aclOwner_read_state:UU,ra_aclOwner_write_object:$U,ra_aclOwner_write_state:PU,ra_buttons:WU,ra_changedFrom:JU,ra_close:BU,ra_create_boolean_state:RU,ra_create_channel:FU,ra_create_device:GU,ra_create_number_state:HU,ra_create_state:VU,ra_create_string_state:ZU,ra_daysShortText:XU,ra_dow_Fr:KU,ra_dow_Mo:qU,ra_dow_Sa:e6,ra_dow_Su:t6,ra_dow_Th:s6,ra_dow_Tu:i6,ra_dow_We:r6,ra_expertMode:o6,ra_false:n6,ra_fileType_all:a6,ra_fileType_audio:M6,ra_fileType_code:c6,ra_fileType_images:u6,ra_fileType_txt:l6,ra_fileType_video:N6,"ra_fileType_video,":"Video",ra_filter_customs:L6,ra_filter_customs_without:g6,ra_filter_func:j6,ra_filter_id:y6,ra_filter_name:T6,ra_filter_role:D6,ra_filter_room:d6,ra_filter_type:h6,"ra_import data from %s file":"Importeer gegevens uit %s bestand",ra_invalidConfig:z6,ra_lastChange:w6,ra_locally:I6,ra_month_Apr:C6,ra_month_Aug:p6,ra_month_Dec:A6,ra_month_Feb:m6,ra_month_Jan:f6,ra_month_Jul:O6,ra_month_Jun:E6,ra_month_Mai:_6,ra_month_Mar:x6,ra_month_Nov:S6,ra_month_Oct:k6,ra_month_Sep:v6,ra_months_Apr:Y6,ra_months_Aug:Q6,ra_months_Dec:b6,ra_months_Feb:U6,ra_months_Jan:$6,ra_months_Jul:P6,ra_months_Jun:W6,ra_months_Mai:J6,ra_months_Mar:B6,ra_months_Nov:R6,ra_months_Oct:F6,ra_months_Sep:G6,"ra_no confirm for 5 mins":"geen bevestiging gedurende 5 minuten",ra_none:H6,ra_object_changed_by:V6,ra_object_changed_by_user:Z6,ra_otherConfig:X6,ra_qualityCode:K6,ra_repeat:q6,ra_select_folder_hint:e8,ra_show_all:t8,ra_state_changed_by:s8,ra_state_changed_from:i8,ra_timestamp:r8,ra_tooltip_ack:o8,ra_tooltip_comment:n8,ra_tooltip_copyState:a8,ra_tooltip_ctrlForLink:M8,ra_tooltip_customConfig:c8,ra_tooltip_deleteObject:u8,ra_tooltip_editObject:l8,ra_tooltip_editState:N8,ra_tooltip_expire:L8,ra_tooltip_from:g8,ra_tooltip_lc:j8,ra_tooltip_quality:y8,ra_tooltip_ts:T8,ra_tooltip_user:D8,ra_tooltip_value:d8,ra_true:h8,"ra_use seconds":"gebruik seconden",ra_val:z8,"ra_via internet":"via internet",ra_warning_every_minute:w8,ra_warning_every_second:I8,sc_cron:C8,sc_date:p8,sc_dates:A8,sc_dow:m8,sc_dows:f8,sc_every:O8,sc_everyN_dates:E8,sc_everyN_dow:_8,sc_everyN_dows:x8,sc_everyN_hours:S8,sc_everyN_minutes:k8,sc_everyN_months:v8,sc_everyN_seconds:Y8,sc_every_dates:Q8,sc_every_dow:b8,sc_every_dows:U8,sc_every_hours:$8,sc_every_minutes:P8,sc_every_months:W8,sc_every_seconds:J8,sc_from:B8,sc_hours:R8,sc_interval:F8,sc_intervalBetween:G8,sc_invalid_cron:H8,sc_minutes:V8,sc_months:Z8,sc_once:X8,sc_period:K8,sc_seconds:q8,sc_simple:e9,sc_specific:t9,sc_specific_dates:s9,sc_specific_dow:i9,sc_specific_dows:r9,sc_specific_hours:o9,sc_specific_minutes:n9,sc_specific_months:a9,sc_specific_seconds:M9,sc_time:c9,sc_to:u9,sc_wizard:l9,sch_all:N9,sch_astroDay:L9,sch_astroNight:g9,sch_astro_dawn:j9,sch_astro_dusk:y9,sch_astro_goldenHour:T9,sch_astro_goldenHourEnd:D9,sch_astro_nadir:d9,sch_astro_nauticalDawn:h9,sch_astro_nauticalDusk:z9,sch_astro_night:w9,sch_astro_nightEnd:I9,sch_astro_solarNoon:C9,sch_astro_sunrise:p9,sch_astro_sunriseEnd:A9,sch_astro_sunset:m9,sch_astro_sunsetStart:f9,sch_at:O9,sch_desc_atTime:E9,sch_desc_everyDay:_9,sch_desc_everyHour:x9,sch_desc_everyMinute:S9,sch_desc_everyMonth:k9,sch_desc_everyNDay:v9,sch_desc_everyNHours:Y9,sch_desc_everyNMinutes:Q9,sch_desc_everyNMonths:b9,sch_desc_everyNWeeks:U9,sch_desc_everyNYears:$9,sch_desc_everyWeek:P9,sch_desc_everyYear:W9,sch_desc_intervalFromTo:J9,sch_desc_never:B9,sch_desc_onDate:R9,sch_desc_onDates:F9,sch_desc_onEveryDate:G9,sch_desc_onMonth:H9,sch_desc_onMonths:V9,sch_desc_onWeekday:Z9,sch_desc_onWeekdays:X9,sch_desc_onWeekends:K9,sch_desc_onWorkdays:q9,sch_desc_onceInPast:e7,sch_desc_once_on:t7,sch_desc_validFrom:s7,sch_desc_validFromTo:i7,sch_desc_validTo:r7,sch_every:o7,sch_exactTime:n7,sch_from:a7,sch_fromTo:M7,sch_intervalTime:c7,sch_invert:u7,sch_no_one:l7,sch_on:N7,sch_period:L7,sch_periodDaily:g7,sch_periodDates:j7,sch_periodDay:y7,sch_periodEvery:T7,sch_periodEveryDay:D7,sch_periodEveryMonth:d7,sch_periodEveryWeek:h7,sch_periodEveryYear:z7,sch_periodHours:w7,sch_periodMinutes:I7,sch_periodMonth:C7,sch_periodMonthly:p7,sch_periodOnce:A7,sch_periodSpecificMonths:m7,sch_periodWeek:f7,sch_periodWeekdays:O7,sch_periodWeekend:E7,sch_periodWeekly:_7,sch_periodWorkdays:x7,sch_periodYear:S7,sch_periodYearly:k7,sch_specificTime:v7,sch_time:Y7,sch_to:Q7,sch_valid:b7,sch_validFrom:U7,sch_validTo:$7,sch_wholeDay:P7,sch_yearEveryMonth:W7},B7="Actes",R7="Ajouter",F7="Annuler",G7="Catégories",H7="Vérifié",V7="Effacer",Z7="Fermer",X7="Commercial",K7="Configurer",q7="Lié",e$="Continuer",t$="Copié",s$="Créer",i$="Recadrer",r$="Delete",o$="Supprimer",n$="Jeter",a$="Débranché",M$="Erreur",c$="Filtre",u$="Vendredi",l$="Latitude",N$="Déconnexion",L$="Longitude",g$="Message",j$="Lundi",y$="Nom",T$="Objets",D$="D'accord",d$="Produit",h$="Renommer/Déplacer/Copier",z$="Répéter",w$="Remplacer",I$="Racine",C$="Samedi",p$="sauver",A$="Choisi",m$="États",f$="Dimanche",O$="Jeudi",E$="Horodatage",_$="Mardi",x$="Mise à jour",S$="Valable jusqu'au",k$="Valeur",v$="Version",Y$="Mercredi",Q$="Largeur",b$="Oui",U$="différent",$$="Tout le monde peut lire un objet",P$="Tout le monde peut lire l'état",W$="Tout le monde peut écrire un objet",J$="Tout le monde peut écrire l'état",B$="Le groupe peut lire l'objet",R$="Le groupe peut lire l'état",F$="Le groupe peut écrire un objet",G$="Le groupe peut écrire l'état",H$="Le propriétaire peut lire l'objet",V$="Le propriétaire peut lire l'état",Z$="Le propriétaire peut écrire un objet",X$="Le propriétaire peut écrire l'état",K$="Boutons",q$="Changé de",eP="Fermer",tP="Créer un état booléen",sP="Créer une chaîne",iP="Créer un appareil",rP="Créer un état de numéro",oP="Créer un état",nP="Créer un état de chaîne",aP="j.",MP="Fr",cP="Mo",uP="Sa",lP="Su",NP="Th",LP="Tu",gP="Nous",jP="Mode expert",yP="FAUX",TP="Tous les fichiers",DP="l'audio",dP="Code/JSON",hP="Images",zP="Texte",wP="Vidéo",IP="Paramètres",CP="sans",pP="Une fonction",AP="ID",mP="Prénom",fP="Rôle",OP="Pièce",EP="Type",_P="Paramètres invalides",xP="Dernier changement",SP="localement",kP="Avr",vP="Août",YP="Déc",QP="Fév",bP="Jan",UP="Juil",$P="Juin",PP="Mai",WP="Mar",JP="Nov",BP="Oct",RP="Sep",FP="Avr",GP="Août",HP="Déc",VP="Fév",ZP="Jan",XP="Juil",KP="Juin",qP="Mai",eW="Mar",tW="Nov",sW="Oct",iW="Sep",rW="rien",oW="Objet modifié par",nW="Objet modifié pour la dernière fois à",aW="Paramètres d'un autre adaptateur %s",MW="Code de qualité",cW="répéter",uW='Pour sélectionner un dossier, maintenez simplement la touche "shift" enfoncée en cliquant sur le dossier.',lW="Tout afficher",NW="État modifié par",LW="Objet changé de",gW="Horodatage",jW="Drapeau reconnu",yW="Commentaire",TW="Copiez la valeur d'état",DW="Maintenez la touche Cltr/⌘ enfoncée pour ouvrir le lien",dW="Paramètres personnalisés",hW="Supprimer un objet",zW="Modifier l'objet",wW="Modifier la valeur d'état",IW="Expire dans",CW="De",pW="Dernière modification",AW="Qualité",mW="Horodatage",fW="Utilisateur",OW="Valeur",EW="VRAI",_W="Valeur",xW="Attention : la tâche CRON s’exécutera toutes les minutes pendant la période spécifiée !",SW="Attention : la tâche CRON s’exécutera toutes les secondes pendant la période spécifiée !",kW="CRON",vW="Date",YW="Rendez-vous",QW="Jour",bW="Jour de la semaine",UW="Chaque",$W="tous les N jours",PW="chaque Nième jour de la semaine",WW="tous les N jours de la semaine",JW="toutes les N heures",BW="toutes les N minutes",RW="tous les N mois",FW="toutes les N secondes",GW="tous les jours",HW="Chaque jour de la semaine",VW="Chaque jour de la semaine",ZW="Toutes les heures",XW="chaque minute",KW="chaque mois",qW="chaque seconde",eJ="De",tJ="Heures",sJ="Intervalle",iJ="Intervalle entre",rJ="CRON non valide",oJ="Minutes",nJ="mois",aJ="Une fois que",MJ="Période",cJ="Secondes",uJ="Facile",lJ="Temps spécifique",NJ="dates spécifiques",LJ="jour(s) spécifique(s) de la semaine",gJ="jour spécifique de semaines",jJ="heures spécifiques",yJ="minutes spécifiques",TJ="mois spécifiques",DJ="secondes spécifiques",dJ="Temps",hJ="À",zJ="sorcier",wJ="tout",IJ="Journée astronomique",CJ="Nuit astronomique",pJ="Aube",AJ="Crépuscule",mJ="Heure d'or",fJ="Fin de l'heure d'or",OJ="Nadir",EJ="Aube nautique",_J="Crépuscule nautique",xJ="Nuit",SJ="Fin de nuit",kJ="Midi solaire",vJ="lever du soleil",YJ="Fin du lever du soleil",QJ="Le coucher du soleil",bJ="Coucher du soleil",UJ="à",$J="à %s",PJ="tous les jours",WJ="Toutes les heures",JJ="chaque minute",BJ="chaque mois",RJ="chaque %s jour",FJ="chaque %s heures",GJ="toutes les %s minutes",HJ="tous les %s mois",VJ="chaque %s semaines",ZJ="tous les %s ans",XJ="toutes les semaines",KJ="chaque année",qJ="de %s à %s",eB="jamais",tB="sur %s de %s",sB="sur %s et %s de",iB="à chaque date de",rB="%s",oB="%s et %s",nB="sur %s",aB="sur %s et %s",MB="les weekends",cB="les jours ouvrables",uB="ne sera plus exécuté, car start est dans le passé",lB="sur %s",NB="de %s",LB="Exécuter de à",gB="à %s",jB="chaque",yB="Temps spécifique",TB="de",DB="De à",dB="Temps d'interval",hB="inverser",zB="aucun",wB="sur",IB="Période",CB="du quotidien",pB="Rendez-vous",AB="journée",mB="Chaque",fB="Tous les jours",OB="Chaque mois",EB="Toutes les semaines",_B="Chaque année",xB="Heures",SB="Minutes",kB="mois",vB="Mensuel",YB="Une fois que",QB="Mois spécifiques",bB="La semaine",UB="Jours de la semaine",$B="Weekend",PB="Hebdomadaire",WB="Jours ouvrables",JB="Année",BB="Annuel",RB="Temps spécifique",FB="Temps",GB="à",HB="Valide",VB="de",ZB="à",XB="Toute la journée",KB="chaque mois",qB={"ra_%s links from aliases":"%s liens provenant d'alias","ra_%s object(s) processed":"%s objet(s) traité(s)","ra_%s was imported":"%s a été importé","ra_Accept license":"Accepter la licence",ra_Actions:B7,"ra_Add new child object to selected parent":"Ajouter un nouvel objet enfant au parent sélectionné","ra_Add objects tree from JSON file":"Ajouter une arborescence d'objets à partir d'un fichier JSON","ra_Add row":"Ajouter une rangée","ra_Advanced options":"Options avancées","ra_All items are filtered out":"Tous les éléments sont filtrés","ra_All objects":"Tous les objets",ra_Append:R7,"ra_Append %s entries or replace existing?":"Ajouter %s entrées ou remplacer l'existant ?","ra_Append or replace?":"Ajouter ou remplacer ?","ra_Are you sure?":"Êtes-vous sûr?","ra_Auto (no custom columns)":"Auto (pas de colonnes personnalisées)","ra_Back to %s":"Retour à %s","ra_Background image":"Image de fond",ra_Cancel:F7,"ra_Cannot add items with set filter":"Impossible d'ajouter des éléments avec le filtre défini","ra_Cannot decode license":"Impossible de décoder la licence","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossible de déterminer la position : les paramètres système sont vides et la détection GPS est désactivée dans le navigateur",'ra_Cannot find "%s"':'Impossible de trouver "%s"','ra_Cannot read "%s"':'Impossible de lire "%s"',"ra_Cannot read licenses: %s":"Impossible de lire les licences : %s","ra_Cannot retrieve options, as instance is offline":"Impossible de récupérer les options, car l'instance est hors ligne","ra_Cannot update attribute, because not found in the object":"Impossible de mettre à jour l'attribut, car il est introuvable dans l'objet","ra_Cannot upload":"Impossible de télécharger",ra_Categories:G7,"ra_Chained certificate":"Certificat chaîné","ra_Change color theme":"Changer le thème de couleur","ra_Changed from":"Changé de","ra_Channel → State":"Canal → État","ra_Check license":"Vérifier la licence",ra_Checked:H7,ra_Clear:V7,"ra_Clear filter":"Effacer le filtre","ra_Clear icon":"Effacer l'icône","ra_Click to see in full size":"Cliquez pour afficher en taille réelle","ra_Click to show":"Cliquez pour afficher","ra_Clone current row":"Cloner la ligne actuelle",ra_Close:Z7,"ra_Collapse all nodes":"Réduire tous les nœuds","ra_Collapse one step node":"Réduire d'un niveau",ra_Commercial:X7,ra_Configure:K7,"ra_Configure visible columns":"Configurer les colonnes visibles","ra_Confirm deletion of %s":"Confirmer la suppression de %s",ra_Connected:q7,ra_Continue:e$,ra_Copied:t$,"ra_Copied %s":'"%s" copié',"ra_Copy content":"Copier le contenu",ra_Create:s$,"ra_Create alias":"Créer un alias","ra_Create folder":"Créer le dossier","ra_Create new folder in %s":"Créer un nouveau dossier dans %s",ra_Crop:i$,"ra_Define CRON...":"Définir CRON...","ra_Define functions":"Définir des fonctions","ra_Define rooms":"Définir des pièces","ra_Define schedule":"Définir le calendrier","ra_Define schedule...":"Définir le calendrier ...",ra_Del:r$,ra_Delete:o$,"ra_Delete current row":"Supprimer la ligne actuelle","ra_Deselect all":"Tout déselectionner","ra_Device → Channel → State":"Appareil → Canal → État","ra_Disable/Enable translation":"Activer/Désactiver la traduction",ra_Discard:n$,ra_Disconnected:a$,"ra_Do not ask for next 2 hours in this session":"Ne demandez pas les 2 prochaines heures de cette session","ra_Do not export values of states":"Ne pas exporter les valeurs des états","ra_Do not use let's encrypt":"Ne pas utiliser let's encrypt","ra_Docker is not available":"Docker n'est pas disponible","ra_Docker is not installed or not running":"Docker n'est pas installé ou n'est pas en cours d'exécution","ra_Double click to reset table layout":"Double-cliquez pour réinitialiser la disposition du tableau","ra_Drag 'n' drop some files here, or click to select files":"Glissez-déposez des fichiers ici, ou cliquez pour sélectionner des fichiers","ra_Drop file here":"Déposer le fichier ici","ra_Drop the files here...":"Déposez le fichier ici...","ra_Duplicate name":"Nom en double","ra_Edit ACL":"Modifier la LCA","ra_Edit alias":"Modifier l'alias","ra_Edit custom config":"Modifier la configuration personnalisée","ra_Edit full path":"Modifier le chemin complet","ra_Edit function":"Fonction d'édition","ra_Edit object field":"Modifier le champ d'objet","ra_Edit role":"Modifier le rôle","ra_Edit room":"Modifier la salle","ra_Edit value":"Modifier la valeur","ra_Enter the code from that page here":"Entrez le code de cette page ici",ra_Error:M$,"ra_Expand all nodes":"Développer tous les nœuds","ra_Expand one step node":"Développer un niveau","ra_Expand/Collapse card":"Carte Développer/Réduire","ra_Export configuration section":"Exporter la section de configuration","ra_Export data to %s file":"Exporter les données vers le fichier %s","ra_Failed to open JSON File":"Échec de l'ouverture du fichier JSON","ra_Fallback custom certificates":"Certificats personnalisés de secours","ra_File is too big. Max %sk allowed. Try use SVG.":"Le fichier est trop volumineux. Max %sk autorisé. Essayez d'utiliser SVG.",ra_Filter:c$,"ra_Filter and Data Actions":"Actions sur les filtres et les données","ra_Filter files":"Filtrer les fichiers","ra_Folder name":"Nom de dossier","ra_Folder → Channel → State":"Dossier → Chaîne → État","ra_Folder → Device → Channel → State":"Dossier → Appareil → Canal → État","ra_Folder → State":"Dossier → État","ra_Folders always first":"Les dossiers toujours en premier",ra_Friday:u$,"ra_From file":"À partir du fichier","ra_From text":"À partir du texte","ra_Get %s access":"Obtenir l'accès %s","ra_Good luck":"Bonne chance","ra_Hide empty folders":"Masquer les dossiers vides","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si aucun fichier ne sera créé dans le dossier, il disparaîtra après la fermeture du navigateur","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si le bouton ci-dessus ne fonctionne pas, vous pouvez autoriser manuellement cette application en visitant cette URL","ra_Import and add configuration section":"Importer et ajouter la section de configuration","ra_Import and replace configuration section":"Importer et remplacer la section de configuration","ra_Import data from %s file":"Importer des données à partir du fichier %s","ra_Import from %s":"Importer depuis %s","ra_Instance %s is alive":"L'instance %s est active","ra_Instance %s is not alive":"L'instance %s n'est pas active","ra_Instance is not alive":"L'instance n'est pas active","ra_Invalid CRON":"CRON invalide","ra_Invalid JSON":"JSON invalide","ra_Invalid JSON file.":"Fichier JSON invalide.","ra_Invalid JSON format. Expected an array.":"Format JSON invalide. Tableau attendu.","ra_Invalid answer from server":"Réponse invalide du serveur","ra_Invalid parent folder!":"Dossier parent non valide!","ra_Invalid structure":"Structure invalide","ra_JSON editor":"Éditeur JSON","ra_Last change":"Dernier changement",ra_Latitude:l$,"ra_License %s":"Licence %s","ra_License agreement":"Accord de licence","ra_License does not exist":"La licence n'existe pas","ra_License expired on %s":"Licence expirée le %s",'ra_License for other product "%s"':'Licence pour un autre produit "%s"',"ra_License is for version %s, but required version is %s.":"La licence est pour la version %s, mais la version requise est %s.","ra_License must be converted":"La licence doit être convertie en une version plus récente. Vous pouvez le faire dans votre profil iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licence introuvable dans le gestionnaire de licences. Voulez-vous mettre à jour les licences depuis iobroker.net ?","ra_Listen on all IPs":"Écoutez sur toutes les adresses IP","ra_Load configuration from file":"Charger la configuration à partir du fichier",ra_Logout:N$,ra_Longitude:L$,'ra_May not trigger "updateLicenses"':'Peut ne pas déclencher "updateLicences"',ra_Message:g$,ra_Monday:j$,"ra_Move down":"Descendre","ra_Move up":"Déplacer vers le haut",ra_Name:y$,"ra_No data found in file":"Aucune donnée trouvée dans le fichier","ra_No one license found in license manager":"Aucune licence trouvée dans le gestionnaire de licences","ra_No response from admin":"Aucune réponse de l'administrateur","ra_No response from the backend":"Aucune réponse du backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Les non-experts ne peuvent créer de nouveaux objets que dans "0_userdata.0" ou "alias.0".',"ra_Not a number":"Pas un numéro","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Secret client OAuth",ra_Objects:T$,ra_Ok:D$,"ra_On weekdays":"En semaine","ra_Only following structures of objects are available:":"Seules les structures d'objets suivantes sont disponibles:","ra_Only selected":"Uniquement sélectionné","ra_Owner group":"Groupe propriétaire","ra_Owner user":"Utilisateur propriétaire","ra_Passwords are not equal!":"Les mots de passe ne sont pas égaux !","ra_Place your files here or click here to open the browse dialog":"Placez vos fichiers ici ou cliquez ici pour ouvrir la boîte de dialogue de navigation","ra_Please allow popups in your browser for this page!":"Veuillez autoriser les popups dans votre navigateur pour cette page !","ra_Please confirm":"Veuillez confirmer","ra_Please create license":"Veuillez créer une licence","ra_Please enter the license":"Veuillez entrer la licence","ra_Please select file...":"Veuillez sélectionner le fichier...","ra_Please select object ID...":"Veuillez sélectionner l'ID d'objet ...","ra_Port could be used by %s":"Le port pourrait être utilisé par %s","ra_Port is already used by %s":"Le port est déjà utilisé par %s","ra_Press ENTER Key to add new item":"Appuyez sur la touche ENTRÉE pour ajouter un nouvel élément","ra_Private certificate":"Certificat privé",ra_Product:d$,"ra_Public certificate":"Certificat public","ra_Quality code":"Qualité","ra_Refresh tree":"Rafraîchir l'arborescence","ra_Reload files":"Recharger les fichiers",ra_Rename_Move_Copy:h$,"ra_Renew %s access":"Renouveler l'accès %s",ra_Repeat:z$,ra_Replace:w$,"ra_Request timed out":"La demande a expiré","ra_Restrict to folder":"Restreindre au dossier",ra_Root:I$,ra_Saturday:C$,ra_Save:p$,"ra_Save and close":"Sauver et fermer","ra_Save configuration to file":"Enregistrer la configuration dans un fichier","ra_Save objects tree as JSON file":"Enregistrer l'arborescence des objets en tant que fichier JSON","ra_Select all":"Tout sélectionner","ra_Select color":"Choisissez la couleur","ra_Select predefined icon":"Sélectionnez l'icône prédéfinie","ra_Select type of export":"Sélectionnez le type d'exportation",ra_Selected:A$,"ra_Selected %s object(s)":"Objet(s) %s sélectionné(s)","ra_Serial number (UUID)":"Numéro de série (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Le numéro de série (UUID) "%s" dans la licence est pour un autre appareil.',"ra_Session will expire in %s seconds. Continue?":"La session expirera dans %s secondes. Continuer ?","ra_Show all folders":"Afficher tous les dossiers","ra_Show lines between rows":"Afficher les lignes entre les lignes","ra_Show/Hide object descriptions":"Afficher/Masquer les descriptions d'objets","ra_Show/hide filter input":"Afficher/masquer l'entrée de filtre","ra_Some data are not stored. Discard?":"Certaines données ne sont pas stockées. Jeter?",ra_States:m$,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorisation réussie. Jeton valide jusqu'au %s et sera automatiquement renouvelé.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorisation réussie. Jeton valide jusqu'à %s, mais il peut expirer car l'instance n'est pas en cours d'exécution.","ra_Suitable license not found in license manager":"Licence appropriée introuvable dans le gestionnaire de licences",ra_Sunday:f$,"ra_Suppress question for next %s minutes":"Supprimer la question pour les %s prochaines minutes","ra_System language":"Langue du système","ra_Take browser position":"Prendre position depuis le navigateur","ra_Take position from system settings":"Prendre position à partir des paramètres système",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Les experts peuvent créer des objets partout mais à partir du deuxième niveau (par exemple "vis.0" ou "javascript.0").',"ra_The page you are looking for was not found":"La page que vous recherchez n'a pas été trouvée","ra_The schedule will be executed every minute. Are you sure?":"Le planning sera exécuté toutes les minutes. Êtes-vous sûr ?","ra_The schedule will be executed every second. Are you sure?":"Le planning sera exécuté toutes les secondes. Êtes-vous sûr ?",ra_Thursday:O$,ra_Timestamp:E$,"ra_Toggle expert mode":"Basculer en mode expert","ra_Toggle the states view":"Basculer la vue des états","ra_Toggle view mode":"Basculer le mode d'affichage","ra_Too big":"Trop grand","ra_Too small":"Trop petit","ra_Transparent dialog":"Dialogue transparent",ra_Tuesday:_$,"ra_Unknown error":"Erreur inconnue","ra_Unknown error!":"Erreur inconnue!",ra_Update:x$,"ra_Upload file":"Téléverser un fichier","ra_Use all available let's encrypt certificates":"Utilisez tous les certificats let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utiliser l'adaptateur iobroker.acme pour les certificats Letsencrypt","ra_Use system settings for position":"Utiliser les paramètres système pour la position","ra_Used system settings":"Paramètres système utilisés","ra_User files":"Fichiers utilisateurs",ra_ValidTill:S$,ra_Value:k$,ra_Version:v$,"ra_View file":"Voir la fiche","ra_View: %s":"Affichage : %s",ra_Wednesday:Y$,ra_Width:Q$,"ra_YAML editor":"Éditeur YAML",ra_Yes:b$,"ra_You can export all objects or just the selected branch.":"Vous pouvez exporter tous les objets ou uniquement la branche sélectionnée.","ra_You can filter entries by entering here some text":"Vous pouvez filtrer les entrées en saisissant ici du texte","ra_You can use * as wildcard":"Vous pouvez utiliser * comme caractère générique",ra___different__:U$,ra_aclEveryone_read_object:$$,ra_aclEveryone_read_state:P$,ra_aclEveryone_write_object:W$,ra_aclEveryone_write_state:J$,ra_aclGroup_read_object:B$,ra_aclGroup_read_state:R$,ra_aclGroup_write_object:F$,ra_aclGroup_write_state:G$,ra_aclOwner_read_object:H$,ra_aclOwner_read_state:V$,ra_aclOwner_write_object:Z$,ra_aclOwner_write_state:X$,ra_buttons:K$,ra_changedFrom:q$,ra_close:eP,ra_create_boolean_state:tP,ra_create_channel:sP,ra_create_device:iP,ra_create_number_state:rP,ra_create_state:oP,ra_create_string_state:nP,ra_daysShortText:aP,ra_dow_Fr:MP,ra_dow_Mo:cP,ra_dow_Sa:uP,ra_dow_Su:lP,ra_dow_Th:NP,ra_dow_Tu:LP,ra_dow_We:gP,ra_expertMode:jP,ra_false:yP,ra_fileType_all:TP,ra_fileType_audio:DP,ra_fileType_code:dP,ra_fileType_images:hP,ra_fileType_txt:zP,ra_fileType_video:wP,"ra_fileType_video,":"Vidéo",ra_filter_customs:IP,ra_filter_customs_without:CP,ra_filter_func:pP,ra_filter_id:AP,ra_filter_name:mP,ra_filter_role:fP,ra_filter_room:OP,ra_filter_type:EP,"ra_import data from %s file":"Importer des données à partir du fichier %s",ra_invalidConfig:_P,ra_lastChange:xP,ra_locally:SP,ra_month_Apr:kP,ra_month_Aug:vP,ra_month_Dec:YP,ra_month_Feb:QP,ra_month_Jan:bP,ra_month_Jul:UP,ra_month_Jun:$P,ra_month_Mai:PP,ra_month_Mar:WP,ra_month_Nov:JP,ra_month_Oct:BP,ra_month_Sep:RP,ra_months_Apr:FP,ra_months_Aug:GP,ra_months_Dec:HP,ra_months_Feb:VP,ra_months_Jan:ZP,ra_months_Jul:XP,ra_months_Jun:KP,ra_months_Mai:qP,ra_months_Mar:eW,ra_months_Nov:tW,ra_months_Oct:sW,ra_months_Sep:iW,"ra_no confirm for 5 mins":"pas de confirmation pendant 5 minutes",ra_none:rW,ra_object_changed_by:oW,ra_object_changed_by_user:nW,ra_otherConfig:aW,ra_qualityCode:MW,ra_repeat:cW,ra_select_folder_hint:uW,ra_show_all:lW,ra_state_changed_by:NW,ra_state_changed_from:LW,ra_timestamp:gW,ra_tooltip_ack:jW,ra_tooltip_comment:yW,ra_tooltip_copyState:TW,ra_tooltip_ctrlForLink:DW,ra_tooltip_customConfig:dW,ra_tooltip_deleteObject:hW,ra_tooltip_editObject:zW,ra_tooltip_editState:wW,ra_tooltip_expire:IW,ra_tooltip_from:CW,ra_tooltip_lc:pW,ra_tooltip_quality:AW,ra_tooltip_ts:mW,ra_tooltip_user:fW,ra_tooltip_value:OW,ra_true:EW,"ra_use seconds":"utiliser les secondes",ra_val:_W,"ra_via internet":"par Internet",ra_warning_every_minute:xW,ra_warning_every_second:SW,sc_cron:kW,sc_date:vW,sc_dates:YW,sc_dow:QW,sc_dows:bW,sc_every:UW,sc_everyN_dates:$W,sc_everyN_dow:PW,sc_everyN_dows:WW,sc_everyN_hours:JW,sc_everyN_minutes:BW,sc_everyN_months:RW,sc_everyN_seconds:FW,sc_every_dates:GW,sc_every_dow:HW,sc_every_dows:VW,sc_every_hours:ZW,sc_every_minutes:XW,sc_every_months:KW,sc_every_seconds:qW,sc_from:eJ,sc_hours:tJ,sc_interval:sJ,sc_intervalBetween:iJ,sc_invalid_cron:rJ,sc_minutes:oJ,sc_months:nJ,sc_once:aJ,sc_period:MJ,sc_seconds:cJ,sc_simple:uJ,sc_specific:lJ,sc_specific_dates:NJ,sc_specific_dow:LJ,sc_specific_dows:gJ,sc_specific_hours:jJ,sc_specific_minutes:yJ,sc_specific_months:TJ,sc_specific_seconds:DJ,sc_time:dJ,sc_to:hJ,sc_wizard:zJ,sch_all:wJ,sch_astroDay:IJ,sch_astroNight:CJ,sch_astro_dawn:pJ,sch_astro_dusk:AJ,sch_astro_goldenHour:mJ,sch_astro_goldenHourEnd:fJ,sch_astro_nadir:OJ,sch_astro_nauticalDawn:EJ,sch_astro_nauticalDusk:_J,sch_astro_night:xJ,sch_astro_nightEnd:SJ,sch_astro_solarNoon:kJ,sch_astro_sunrise:vJ,sch_astro_sunriseEnd:YJ,sch_astro_sunset:QJ,sch_astro_sunsetStart:bJ,sch_at:UJ,sch_desc_atTime:$J,sch_desc_everyDay:PJ,sch_desc_everyHour:WJ,sch_desc_everyMinute:JJ,sch_desc_everyMonth:BJ,sch_desc_everyNDay:RJ,sch_desc_everyNHours:FJ,sch_desc_everyNMinutes:GJ,sch_desc_everyNMonths:HJ,sch_desc_everyNWeeks:VJ,sch_desc_everyNYears:ZJ,sch_desc_everyWeek:XJ,sch_desc_everyYear:KJ,sch_desc_intervalFromTo:qJ,sch_desc_never:eB,sch_desc_onDate:tB,sch_desc_onDates:sB,sch_desc_onEveryDate:iB,sch_desc_onMonth:rB,sch_desc_onMonths:oB,sch_desc_onWeekday:nB,sch_desc_onWeekdays:aB,sch_desc_onWeekends:MB,sch_desc_onWorkdays:cB,sch_desc_onceInPast:uB,sch_desc_once_on:lB,sch_desc_validFrom:NB,sch_desc_validFromTo:LB,sch_desc_validTo:gB,sch_every:jB,sch_exactTime:yB,sch_from:TB,sch_fromTo:DB,sch_intervalTime:dB,sch_invert:hB,sch_no_one:zB,sch_on:wB,sch_period:IB,sch_periodDaily:CB,sch_periodDates:pB,sch_periodDay:AB,sch_periodEvery:mB,sch_periodEveryDay:fB,sch_periodEveryMonth:OB,sch_periodEveryWeek:EB,sch_periodEveryYear:_B,sch_periodHours:xB,sch_periodMinutes:SB,sch_periodMonth:kB,sch_periodMonthly:vB,sch_periodOnce:YB,sch_periodSpecificMonths:QB,sch_periodWeek:bB,sch_periodWeekdays:UB,sch_periodWeekend:$B,sch_periodWeekly:PB,sch_periodWorkdays:WB,sch_periodYear:JB,sch_periodYearly:BB,sch_specificTime:RB,sch_time:FB,sch_to:GB,sch_valid:HB,sch_validFrom:VB,sch_validTo:ZB,sch_wholeDay:XB,sch_yearEveryMonth:KB},eR="Azioni",tR="Aggiungere",sR="Annulla",iR="Categorie",rR="Controllato",oR="Elimina",nR="Vicino",aR="Commerciale",MR="Configura",cR="Collegato",uR="Continuare",lR="Copiato",NR="Creare",LR="Raccolto",gR="Delete",jR="Elimina",yR="Scartare",TR="Disconnesso",DR="Errore",dR="Filtro",hR="Venerdì",zR="Latitudine",wR="Esci",IR="Longitudine",CR="Messaggio",pR="Lunedi",AR="Nome",mR="Oggetti",fR="Ok",OR="Prodotto",ER="Rinomina/Sposta/Copia",_R="Ripetere",xR="Sostituire",SR="Radice",kR="Sabato",vR="Salva",YR="Selezionato",QR="stati",bR="Domenica",UR="Giovedì",$R="Timestamp",PR="Martedì",WR="Aggiornare",JR="Valido fino a",BR="Valore",RR="Versione",FR="Mercoledì",GR="Larghezza",HR="SÌ",VR="diverso",ZR="Tutti possono leggere gli oggetti",XR="Tutti possono leggere lo stato",KR="Tutti possono scrivere oggetti",qR="Tutti possono scrivere stato",eF="Il gruppo può leggere l'oggetto",tF="Il gruppo può leggere lo stato",sF="Il gruppo può scrivere l'oggetto",iF="Il gruppo può scrivere lo stato",rF="Il proprietario può leggere l'oggetto",oF="Il proprietario può leggere lo stato",nF="Il proprietario può scrivere l'oggetto",aF="Il proprietario può scrivere lo stato",MF="Bottoni",cF="Cambiato da",uF="vicino",lF="Crea uno stato booleano",NF="Crea canale",LF="Crea dispositivo",gF="Crea lo stato del numero",jF="Crea stato",yF="Crea lo stato della stringa",TF="g.",DF="fr",dF="momento",hF="Sa",zF="su",wF="th",IF="Tu",CF="Noi",pF="Modalità esperto",AF="FALSO",mF="Tutti i files",fF="Audio",OF="Codice/JSON",EF="immagini",_F="Testo",xF="video",SF="impostazioni",kF="senza",vF="Funzione",YF="ID",QF="Nome",bF="Ruolo",UF="Camera",$F="genere",PF="Impostazioni non valide",WF="Ultima modifica",JF="localmente",BF="apr",RF="agosto",FF="Dic",GF="febbraio",HF="gen",VF="lug",ZF="giu",XF="Mai",KF="marzo",qF="nov",eG="ottobre",tG="Sett",sG="apr",iG="agosto",rG="Dic",oG="febbraio",nG="gen",aG="lug",MG="giu",cG="Mai",uG="marzo",lG="nov",NG="ottobre",LG="Sett",gG="nessuna",jG="Oggetto modificato da",yG="L'oggetto è stato modificato l'ultima volta alle",TG="Impostazioni dall'altro adattatore %s",DG="Codice di qualità",dG="ripetere",hG='Per selezionare la cartella, basta tenere premuto il tasto "shift" facendo clic sulla cartella.',zG="Mostra tutto",wG="Stato cambiato da",IG="Oggetto cambiato da",CG="Timestamp",pG="Bandiera riconosciuta",AG="Commento",mG="Copia il valore dello stato",fG="Tieni premuto il tasto Cltr/⌘ per aprire il collegamento",OG="Impostazioni personalizzate",EG="Elimina oggetto",_G="Modifica oggetto",xG="Modifica il valore dello stato",SG="Scade tra",kG="A partire dal",vG="Ultima modifica",YG="Qualità",QG="Data e ora",bG="Utente",UG="Valore",$G="VERO",PG="Valore",WG="Attenzione: il processo CRON verrà eseguito ogni minuto durante il periodo specificato!",JG="Attenzione: il processo CRON verrà eseguito ogni secondo durante il periodo specificato!",BG="CRON",RG="Data",FG="Date",GG="Giorno",HG="Giorno della settimana",VG="Ogni",ZG="ogni N giorni",XG="ogni Nesimo giorno della settimana",KG="ogni N giorno della settimana",qG="ogni N ore",eH="ogni N minuti",tH="ogni N mesi",sH="ogni N secondi",iH="ogni giorno",rH="Tutti i giorni della settimana",oH="Tutti i giorni della settimana",nH="ogni ora",aH="ogni minuto",MH="ogni mese",cH="ogni secondo",uH="A partire dal",lH="Ore",NH="Intervallo",LH="Intervallo tra",gH="CRON non valido",jH="Minuti",yH="mesi",TH="Una volta",DH="Periodo",dH="secondi",hH="Semplice",zH="Orario preciso",wH="date specifiche",IH="giorno/i specifico/i della settimana",CH="giorno specifico delle settimane",pH="orari specifici",AH="minuti specifici",mH="mesi specifici",fH="secondi specifici",OH="Tempo",EH="Per",_H="procedura guidata",xH="tutti",SH="Astro day",kH="Astro night",vH="Alba",YH="Crepuscolo",QH="Ora d'oro",bH="Fine dell'ora d'oro",UH="Nadir",$H="Alba nautica",PH="Crepuscolo nautico",WH="Notte",JH="Fine della notte",BH="Mezzogiorno solare",RH="Alba",FH="Fine dell'alba",GH="Tramonto",HH="Inizio del tramonto",VH="a",ZH="a %s",XH="ogni giorno",KH="ogni ora",qH="ogni minuto",eV="ogni mese",tV="ogni %s giorno",sV="ogni %s ore",iV="ogni %s minuti",rV="ogni %s mesi",oV="ogni %s settimane",nV="ogni %s anni",aV="ogni settimana",MV="ogni anno",cV="da %s a %s",uV="mai",lV="su %s di %s",NV="su %s e %s di",LV="in ogni data di",gV="%s",jV="%s e %s",yV="su %s",TV="su %s e %s",DV="nei finesettimana",dV="nei giorni lavorativi",hV="non verrà più eseguito, perché start è nel passato",zV="su %s",wV="da %s",IV="Eseguire da a",CV="a %s",pV="ogni",AV="Orario preciso",mV="a partire dal",fV="Da A",OV="Intervallo di tempo",EV="invertire",_V="nessuna",xV="sopra",SV="Periodo",kV="Quotidiano",vV="Date",YV="Giorno",QV="Ogni",bV="Ogni giorno",UV="Ogni mese",$V="Ogni settimana",PV="Ogni anno",WV="Ore",JV="Minuti",BV="mese",RV="Mensile",FV="Una volta",GV="Mesi specifici",HV="Settimana",VV="Giorni della settimana",ZV="Fine settimana",XV="settimanalmente",KV="giorni feriali",qV="Anno",eZ="Annuale",tZ="Orario preciso",sZ="Tempo",iZ="per",rZ="Valido",oZ="a partire dal",nZ="per",aZ="Giorno intero",MZ="ogni mese",cZ={"ra_%s links from aliases":"%s link da alias","ra_%s object(s) processed":"%s oggetti elaborati","ra_%s was imported":"%s è stato importato","ra_Accept license":"Accetta licenza",ra_Actions:eR,"ra_Add new child object to selected parent":"Aggiungi un nuovo oggetto figlio al genitore selezionato","ra_Add objects tree from JSON file":"Aggiungi l'albero degli oggetti dal file JSON","ra_Add row":"Aggiungi riga","ra_Advanced options":"Opzioni avanzate","ra_All items are filtered out":"Tutti gli elementi vengono filtrati","ra_All objects":"Tutti gli oggetti",ra_Append:tR,"ra_Append %s entries or replace existing?":"Aggiungi %s voci o sostituisci quelle esistenti?","ra_Append or replace?":"Aggiungere o sostituire?","ra_Are you sure?":"Sei sicuro?","ra_Auto (no custom columns)":"Auto (nessuna colonna personalizzata)","ra_Back to %s":"Torna a %s","ra_Background image":"Immagine di sfondo",ra_Cancel:sR,"ra_Cannot add items with set filter":"Impossibile aggiungere elementi con il filtro impostato","ra_Cannot decode license":"Impossibile decodificare la licenza","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossibile determinare la posizione: le impostazioni di sistema sono vuote e il rilevamento GPS è disabilitato nel browser",'ra_Cannot find "%s"':'Impossibile trovare "%s"','ra_Cannot read "%s"':'Impossibile leggere "%s"',"ra_Cannot read licenses: %s":"Impossibile leggere le licenze: %s","ra_Cannot retrieve options, as instance is offline":"Impossibile recuperare le opzioni, poiché l'istanza è offline","ra_Cannot update attribute, because not found in the object":"Impossibile aggiornare l'attributo, perché non trovato nell'oggetto","ra_Cannot upload":"Impossibile caricare",ra_Categories:iR,"ra_Chained certificate":"Certificato incatenato","ra_Change color theme":"Cambia tema colore","ra_Changed from":"Cambiato da","ra_Channel → State":"Canale → Stato","ra_Check license":"Controlla la licenza",ra_Checked:rR,ra_Clear:oR,"ra_Clear filter":"Filtro pulito","ra_Clear icon":"Cancella icona","ra_Click to see in full size":"Clicca per visualizzare l'immagine a dimensioni intere","ra_Click to show":"Clicca per mostrare","ra_Clone current row":"Clona riga corrente",ra_Close:nR,"ra_Collapse all nodes":"Comprimi tutti i nodi","ra_Collapse one step node":"Comprimi un livello",ra_Commercial:aR,ra_Configure:MR,"ra_Configure visible columns":"Configura colonne visibili","ra_Confirm deletion of %s":"Conferma l'eliminazione di %s",ra_Connected:cR,ra_Continue:uR,ra_Copied:lR,"ra_Copied %s":'"%s" copiato',"ra_Copy content":"Copia contenuto",ra_Create:NR,"ra_Create alias":"Crea alias","ra_Create folder":"Creare una cartella","ra_Create new folder in %s":"Crea nuova cartella in %s",ra_Crop:LR,"ra_Define CRON...":"Definisci CRON...","ra_Define functions":"Definire le funzioni","ra_Define rooms":"Definisci le stanze","ra_Define schedule":"Definisci programma","ra_Define schedule...":"Definisci pianificazione ...",ra_Del:gR,ra_Delete:jR,"ra_Delete current row":"Elimina la riga corrente","ra_Deselect all":"Deseleziona tutto","ra_Device → Channel → State":"Dispositivo → Canale → Stato","ra_Disable/Enable translation":"Disabilita/Abilita la traduzione",ra_Discard:yR,ra_Disconnected:TR,"ra_Do not ask for next 2 hours in this session":"Non chiedere per le prossime 2 ore in questa sessione","ra_Do not export values of states":"Non esportare i valori degli stati","ra_Do not use let's encrypt":"Non utilizzare crittografiamo","ra_Docker is not available":"Docker non è disponibile","ra_Docker is not installed or not running":"Docker non è installato o non è in esecuzione","ra_Double click to reset table layout":"Fare doppio clic per ripristinare il layout della tabella","ra_Drag 'n' drop some files here, or click to select files":"Trascina e rilascia alcuni file qui o fai clic per selezionare i file","ra_Drop file here":"Trascina il file qui","ra_Drop the files here...":"Trascina qui il file...","ra_Duplicate name":"Nome duplicato","ra_Edit ACL":"Modifica ACL","ra_Edit alias":"Modifica alias","ra_Edit custom config":"Modifica configurazione personalizzata","ra_Edit full path":"Modifica percorso completo","ra_Edit function":"Funzione di modifica","ra_Edit object field":"Modifica campo oggetto","ra_Edit role":"Modifica ruolo","ra_Edit room":"Modifica stanza","ra_Edit value":"Modifica valore","ra_Enter the code from that page here":"Inserisci qui il codice da quella pagina",ra_Error:DR,"ra_Expand all nodes":"Espandi tutti i nodi","ra_Expand one step node":"Espandi un livello","ra_Expand/Collapse card":"Espandi/Comprimi scheda","ra_Export configuration section":"Sezione di configurazione dell'esportazione","ra_Export data to %s file":"Esporta i dati nel file %s","ra_Failed to open JSON File":"Impossibile aprire il file JSON","ra_Fallback custom certificates":"Certificati personalizzati di fallback","ra_File is too big. Max %sk allowed. Try use SVG.":"Il file è troppo grande. Max %sk consentito. Prova a usare SVG.",ra_Filter:dR,"ra_Filter and Data Actions":"Azioni sui filtri e sui dati","ra_Filter files":"Filtra i file","ra_Folder name":"Nome della cartella","ra_Folder → Channel → State":"Cartella → Canale → Stato","ra_Folder → Device → Channel → State":"Cartella → Dispositivo → Canale → Stato","ra_Folder → State":"Cartella → Stato","ra_Folders always first":"Le cartelle sono sempre al primo posto",ra_Friday:hR,"ra_From file":"Dal file","ra_From text":"Dal testo","ra_Get %s access":"Ottieni l'accesso %s","ra_Good luck":"Buona fortuna","ra_Hide empty folders":"Nascondi cartelle vuote","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nessun file verrà creato nella cartella, scomparirà dopo la chiusura del browser","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Se il pulsante sopra non funziona, puoi autorizzare manualmente questa app visitando questo URL","ra_Import and add configuration section":"Importa e aggiungi la sezione di configurazione","ra_Import and replace configuration section":"Importa e sostituisci la sezione di configurazione","ra_Import data from %s file":"Importa i dati dal file %s","ra_Import from %s":"Importa da %s","ra_Instance %s is alive":"Il %s dell'istanza è vivo","ra_Instance %s is not alive":"Il TESTO dell'istanza non è vivo","ra_Instance is not alive":"L'istanza non è viva","ra_Invalid CRON":"CRON non valido","ra_Invalid JSON":"JSON non valido","ra_Invalid JSON file.":"File JSON non valido.","ra_Invalid JSON format. Expected an array.":"Formato JSON non valido. È previsto un array.","ra_Invalid answer from server":"Risposta non valida dal server","ra_Invalid parent folder!":"Cartella principale non valida!","ra_Invalid structure":"Struttura non valida","ra_JSON editor":"Editor JSON","ra_Last change":"Ultima modifica",ra_Latitude:zR,"ra_License %s":"Licenza %s","ra_License agreement":"Contratto di licenza","ra_License does not exist":"La licenza non esiste","ra_License expired on %s":"Licenza scaduta il %s",'ra_License for other product "%s"':'Licenza per altro prodotto "%s"',"ra_License is for version %s, but required version is %s.":"La licenza è per la versione %s, ma la versione richiesta è %s.","ra_License must be converted":"La licenza deve essere convertita in una versione più recente. Puoi farlo nel tuo profilo iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licenza non trovata nel gestore delle licenze. Vuoi aggiornare le licenze da iobroker.net?","ra_Listen on all IPs":"Ascolta su tutti gli IP","ra_Load configuration from file":"Carica la configurazione dal file",ra_Logout:wR,ra_Longitude:IR,'ra_May not trigger "updateLicenses"':'Potrebbe non attivare "updateLicenses"',ra_Message:CR,ra_Monday:pR,"ra_Move down":"Abbassati","ra_Move up":"Andare avanti",ra_Name:AR,"ra_No data found in file":"Nessun dato trovato nel file","ra_No one license found in license manager":"Nessuna licenza trovata nel gestore delle licenze","ra_No response from admin":"Nessuna risposta dall'amministratore","ra_No response from the backend":"Nessuna risposta dal backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'I non esperti possono creare nuovi oggetti solo in "0_userdata.0" o "alias.0".',"ra_Not a number":"Non un numero","ra_OAuth Client ID":"ID client OAuth","ra_OAuth Client secret":"Segreto del client OAuth",ra_Objects:mR,ra_Ok:fR,"ra_On weekdays":"Nei giorni della settimana","ra_Only following structures of objects are available:":"Sono disponibili solo le seguenti strutture di oggetti:","ra_Only selected":"Solo selezionato","ra_Owner group":"Gruppo di proprietari","ra_Owner user":"Utente proprietario","ra_Passwords are not equal!":"Le password non sono uguali!","ra_Place your files here or click here to open the browse dialog":"Posiziona i file qui o fai clic qui per aprire la finestra di dialogo Sfoglia","ra_Please allow popups in your browser for this page!":"Si prega di abilitare i popup nel browser per questa pagina!","ra_Please confirm":"Si prega di confermare","ra_Please create license":"Si prega di creare la licenza","ra_Please enter the license":"Inserisci la licenza","ra_Please select file...":"Si prega di selezionare il file...","ra_Please select object ID...":"Seleziona l'ID oggetto ...","ra_Port could be used by %s":"La porta potrebbe essere utilizzata da %s","ra_Port is already used by %s":"La porta è già utilizzata da %s","ra_Press ENTER Key to add new item":"Premere il tasto INVIO per aggiungere un nuovo elemento","ra_Private certificate":"Certificato privato",ra_Product:OR,"ra_Public certificate":"Certificato pubblico","ra_Quality code":"Qualità","ra_Refresh tree":"Aggiorna l'albero","ra_Reload files":"Ricarica i file",ra_Rename_Move_Copy:ER,"ra_Renew %s access":"Rinnova l'accesso %s",ra_Repeat:_R,ra_Replace:xR,"ra_Request timed out":"Tempo scaduto per la richiesta","ra_Restrict to folder":"Limita alla cartella",ra_Root:SR,ra_Saturday:kR,ra_Save:vR,"ra_Save and close":"Salva e chiudi","ra_Save configuration to file":"Salva la configurazione su file","ra_Save objects tree as JSON file":"Salva l'albero degli oggetti come file JSON","ra_Select all":"Seleziona tutto","ra_Select color":"Seleziona il colore","ra_Select predefined icon":"Seleziona l'icona predefinita","ra_Select type of export":"Seleziona il tipo di esportazione",ra_Selected:YR,"ra_Selected %s object(s)":"%s oggetto/i selezionato/i","ra_Serial number (UUID)":"Numero di serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Il numero di serie (UUID) "%s" nella licenza è per un altro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sessione scadrà tra %s secondi. Continuare?","ra_Show all folders":"Mostra tutte le cartelle","ra_Show lines between rows":"Mostra linee tra le righe","ra_Show/Hide object descriptions":"Mostra/Nascondi le descrizioni degli oggetti","ra_Show/hide filter input":"Mostra/nascondi input filtro","ra_Some data are not stored. Discard?":"Alcuni dati non vengono memorizzati. Scartare?",ra_States:QR,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizzazione completata. Il token è valido fino al %s e verrà rinnovato automaticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizzazione completata. Il token è valido fino al %s, ma potrebbe scadere perché l'istanza non è in esecuzione.","ra_Suitable license not found in license manager":"Licenza adatta non trovata nel gestore delle licenze",ra_Sunday:bR,"ra_Suppress question for next %s minutes":"Sopprimi la domanda per i prossimi %s minuti","ra_System language":"Linguaggio di sistema","ra_Take browser position":"Prendi posizione dal browser","ra_Take position from system settings":"Prendi posizione dalle impostazioni di sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Gli esperti possono creare oggetti ovunque ma dal secondo livello (es. "Vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"La pagina che stai cercando non è stata trovata","ra_The schedule will be executed every minute. Are you sure?":"La pianificazione verrà eseguita ogni minuto. Sei sicuro?","ra_The schedule will be executed every second. Are you sure?":"La pianificazione verrà eseguita ogni secondo. Sei sicuro?",ra_Thursday:UR,ra_Timestamp:$R,"ra_Toggle expert mode":"Attiva / disattiva la modalità esperto","ra_Toggle the states view":"Attiva o disattiva la visualizzazione degli stati","ra_Toggle view mode":"Attiva / disattiva la modalità di visualizzazione","ra_Too big":"Troppo grande","ra_Too small":"Troppo piccolo","ra_Transparent dialog":"Finestra di dialogo trasparente",ra_Tuesday:PR,"ra_Unknown error":"Errore sconosciuto","ra_Unknown error!":"Errore sconosciuto!",ra_Update:WR,"ra_Upload file":"Caricare un file","ra_Use all available let's encrypt certificates":"Usa tutti i certificati Let's Encrypt disponibili","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utilizzare l'adattatore iobroker.acme per i certificati letsencrypt","ra_Use system settings for position":"Usa le impostazioni di sistema per la posizione","ra_Used system settings":"Impostazioni di sistema utilizzate","ra_User files":"File utente",ra_ValidTill:JR,ra_Value:BR,ra_Version:RR,"ra_View file":"Vedi il file","ra_View: %s":"Visualizza: %s",ra_Wednesday:FR,ra_Width:GR,"ra_YAML editor":"Editor YAML",ra_Yes:HR,"ra_You can export all objects or just the selected branch.":"Puoi esportare tutti gli oggetti o solo il ramo selezionato.","ra_You can filter entries by entering here some text":"Puoi filtrare le voci inserendo qui del testo","ra_You can use * as wildcard":"Puoi usare * come carattere jolly",ra___different__:VR,ra_aclEveryone_read_object:ZR,ra_aclEveryone_read_state:XR,ra_aclEveryone_write_object:KR,ra_aclEveryone_write_state:qR,ra_aclGroup_read_object:eF,ra_aclGroup_read_state:tF,ra_aclGroup_write_object:sF,ra_aclGroup_write_state:iF,ra_aclOwner_read_object:rF,ra_aclOwner_read_state:oF,ra_aclOwner_write_object:nF,ra_aclOwner_write_state:aF,ra_buttons:MF,ra_changedFrom:cF,ra_close:uF,ra_create_boolean_state:lF,ra_create_channel:NF,ra_create_device:LF,ra_create_number_state:gF,ra_create_state:jF,ra_create_string_state:yF,ra_daysShortText:TF,ra_dow_Fr:DF,ra_dow_Mo:dF,ra_dow_Sa:hF,ra_dow_Su:zF,ra_dow_Th:wF,ra_dow_Tu:IF,ra_dow_We:CF,ra_expertMode:pF,ra_false:AF,ra_fileType_all:mF,ra_fileType_audio:fF,ra_fileType_code:OF,ra_fileType_images:EF,ra_fileType_txt:_F,ra_fileType_video:xF,"ra_fileType_video,":"video",ra_filter_customs:SF,ra_filter_customs_without:kF,ra_filter_func:vF,ra_filter_id:YF,ra_filter_name:QF,ra_filter_role:bF,ra_filter_room:UF,ra_filter_type:$F,"ra_import data from %s file":"Importa dati dal file %s",ra_invalidConfig:PF,ra_lastChange:WF,ra_locally:JF,ra_month_Apr:BF,ra_month_Aug:RF,ra_month_Dec:FF,ra_month_Feb:GF,ra_month_Jan:HF,ra_month_Jul:VF,ra_month_Jun:ZF,ra_month_Mai:XF,ra_month_Mar:KF,ra_month_Nov:qF,ra_month_Oct:eG,ra_month_Sep:tG,ra_months_Apr:sG,ra_months_Aug:iG,ra_months_Dec:rG,ra_months_Feb:oG,ra_months_Jan:nG,ra_months_Jul:aG,ra_months_Jun:MG,ra_months_Mai:cG,ra_months_Mar:uG,ra_months_Nov:lG,ra_months_Oct:NG,ra_months_Sep:LG,"ra_no confirm for 5 mins":"nessuna conferma per 5 minuti",ra_none:gG,ra_object_changed_by:jG,ra_object_changed_by_user:yG,ra_otherConfig:TG,ra_qualityCode:DG,ra_repeat:dG,ra_select_folder_hint:hG,ra_show_all:zG,ra_state_changed_by:wG,ra_state_changed_from:IG,ra_timestamp:CG,ra_tooltip_ack:pG,ra_tooltip_comment:AG,ra_tooltip_copyState:mG,ra_tooltip_ctrlForLink:fG,ra_tooltip_customConfig:OG,ra_tooltip_deleteObject:EG,ra_tooltip_editObject:_G,ra_tooltip_editState:xG,ra_tooltip_expire:SG,ra_tooltip_from:kG,ra_tooltip_lc:vG,ra_tooltip_quality:YG,ra_tooltip_ts:QG,ra_tooltip_user:bG,ra_tooltip_value:UG,ra_true:$G,"ra_use seconds":"usa i secondi",ra_val:PG,"ra_via internet":"attraverso internet",ra_warning_every_minute:WG,ra_warning_every_second:JG,sc_cron:BG,sc_date:RG,sc_dates:FG,sc_dow:GG,sc_dows:HG,sc_every:VG,sc_everyN_dates:ZG,sc_everyN_dow:XG,sc_everyN_dows:KG,sc_everyN_hours:qG,sc_everyN_minutes:eH,sc_everyN_months:tH,sc_everyN_seconds:sH,sc_every_dates:iH,sc_every_dow:rH,sc_every_dows:oH,sc_every_hours:nH,sc_every_minutes:aH,sc_every_months:MH,sc_every_seconds:cH,sc_from:uH,sc_hours:lH,sc_interval:NH,sc_intervalBetween:LH,sc_invalid_cron:gH,sc_minutes:jH,sc_months:yH,sc_once:TH,sc_period:DH,sc_seconds:dH,sc_simple:hH,sc_specific:zH,sc_specific_dates:wH,sc_specific_dow:IH,sc_specific_dows:CH,sc_specific_hours:pH,sc_specific_minutes:AH,sc_specific_months:mH,sc_specific_seconds:fH,sc_time:OH,sc_to:EH,sc_wizard:_H,sch_all:xH,sch_astroDay:SH,sch_astroNight:kH,sch_astro_dawn:vH,sch_astro_dusk:YH,sch_astro_goldenHour:QH,sch_astro_goldenHourEnd:bH,sch_astro_nadir:UH,sch_astro_nauticalDawn:$H,sch_astro_nauticalDusk:PH,sch_astro_night:WH,sch_astro_nightEnd:JH,sch_astro_solarNoon:BH,sch_astro_sunrise:RH,sch_astro_sunriseEnd:FH,sch_astro_sunset:GH,sch_astro_sunsetStart:HH,sch_at:VH,sch_desc_atTime:ZH,sch_desc_everyDay:XH,sch_desc_everyHour:KH,sch_desc_everyMinute:qH,sch_desc_everyMonth:eV,sch_desc_everyNDay:tV,sch_desc_everyNHours:sV,sch_desc_everyNMinutes:iV,sch_desc_everyNMonths:rV,sch_desc_everyNWeeks:oV,sch_desc_everyNYears:nV,sch_desc_everyWeek:aV,sch_desc_everyYear:MV,sch_desc_intervalFromTo:cV,sch_desc_never:uV,sch_desc_onDate:lV,sch_desc_onDates:NV,sch_desc_onEveryDate:LV,sch_desc_onMonth:gV,sch_desc_onMonths:jV,sch_desc_onWeekday:yV,sch_desc_onWeekdays:TV,sch_desc_onWeekends:DV,sch_desc_onWorkdays:dV,sch_desc_onceInPast:hV,sch_desc_once_on:zV,sch_desc_validFrom:wV,sch_desc_validFromTo:IV,sch_desc_validTo:CV,sch_every:pV,sch_exactTime:AV,sch_from:mV,sch_fromTo:fV,sch_intervalTime:OV,sch_invert:EV,sch_no_one:_V,sch_on:xV,sch_period:SV,sch_periodDaily:kV,sch_periodDates:vV,sch_periodDay:YV,sch_periodEvery:QV,sch_periodEveryDay:bV,sch_periodEveryMonth:UV,sch_periodEveryWeek:$V,sch_periodEveryYear:PV,sch_periodHours:WV,sch_periodMinutes:JV,sch_periodMonth:BV,sch_periodMonthly:RV,sch_periodOnce:FV,sch_periodSpecificMonths:GV,sch_periodWeek:HV,sch_periodWeekdays:VV,sch_periodWeekend:ZV,sch_periodWeekly:XV,sch_periodWorkdays:KV,sch_periodYear:qV,sch_periodYearly:eZ,sch_specificTime:tZ,sch_time:sZ,sch_to:iZ,sch_valid:rZ,sch_validFrom:oZ,sch_validTo:nZ,sch_wholeDay:aZ,sch_yearEveryMonth:MZ},uZ="Comportamiento",lZ="Adjuntar",NZ="Cancelar",LZ="Categorías",gZ="Comprobado",jZ="Borrar",yZ="Cerca",TZ="Comercial",DZ="Configurar",dZ="Conectado",hZ="Continuar",zZ="Copiado",wZ="Crear",IZ="Cultivo",CZ="Delete",pZ="Eliminar",AZ="Desechar",mZ="Desconectado",fZ="Error",OZ="Filtrar",EZ="Viernes",_Z="Latitud",xZ="Cerrar sesión",SZ="Longitud",kZ="Mensaje",vZ="Lunes",YZ="Nombre",QZ="Objetos",bZ="Okay",UZ="Producto",$Z="Cambiar nombre/Mover/Copiar",PZ="Repetir",WZ="Reemplazar",JZ="Raíz",BZ="Sábado",RZ="Salvar",FZ="Seleccionado",GZ="Estados",HZ="Domingo",VZ="Jueves",ZZ="Marca de tiempo",XZ="Martes",KZ="Actualizar",qZ="Válida hasta",eX="Valor",tX="Versión",sX="Miércoles",iX="Anchura",rX="Sí",oX="diferente",nX="Todo el mundo puede leer el objeto",aX="Todos pueden leer el estado",MX="Todos pueden escribir objetos",cX="Todos pueden escribir el estado",uX="El grupo puede leer el objeto",lX="El grupo puede leer el estado",NX="El grupo puede escribir un objeto",LX="El grupo puede escribir el estado",gX="El propietario puede leer el objeto",jX="El propietario puede leer el estado",yX="El propietario puede escribir el objeto",TX="El propietario puede escribir el estado",DX="Botones",dX="Cambiaron desde",hX="cerrar",zX="Crear estado booleano",wX="Crear canal",IX="Crear dispositivo",CX="Crear estado numérico",pX="Crear estado",AX="Crear estado de cadena",mX="d.",fX="Fr",OX="Mes",EX="Sa",_X="Su",xX="Th",SX="Tu",kX="Nosotros",vX="Modo experto",YX="FALSO",QX="Todos los archivos",bX="Audio",UX="Código/JSON",$X="Imágenes",PX="Texto",WX="Video",JX="Configuraciones",BX="sin",RX="Función",FX="ID",GX="Nombre",HX="Papel",VX="Habitación",ZX="Tipo",XX="Configuraciones inválidas",KX="Ultimo cambio",qX="en la zona",eK="Abr",tK="Ago",sK="Dic",iK="Feb",rK="Ene",oK="Jul",nK="Jun",aK="Mai",MK="Mar",cK="Nov",uK="Oct",lK="Sep",NK="Abr",LK="Ago",gK="Dic",jK="Feb",yK="Ene",TK="Jul",DK="Jun",dK="Mai",hK="Mar",zK="Nov",wK="Oct",IK="Sep",CK="ninguno",pK="Objeto cambiado por",AK="Objeto cambiado por última vez a las",mK="Configuraciones de otro adaptador %s",fK="Código de calidad",OK="repetir",EK='Para seleccionar la carpeta, simplemente mantenga presionada la tecla "shift" haciendo clic en la carpeta.',_K="Mostrar todo",xK="Estado cambiado por",SK="Objeto cambiado de",kK="Marca de tiempo",vK="Bandera reconocida",YK="Comentario",QK="Copie el valor del estado",bK="Mantenga presionada la tecla Cltr/⌘ para abrir el enlace",UK="Ajustes personalizados",$K="Eliminar objeto",PK="Editar objeto",WK="Edite el valor del estado",JK="Caduca en",BK="Desde",RK="Último cambio",FK="Calidad",GK="Sello de tiempo",HK="Usuario",VK="Valor",ZK="VERDADERO",XK="Valor",KK="Advertencia: ¡El trabajo CRON se ejecutará cada minuto durante el período especificado!",qK="Advertencia: ¡El trabajo CRON se ejecutará cada segundo durante el período especificado!",eq="CRON",tq="Fecha",sq="fechas",iq="Día",rq="Día de la semana",oq="Cada",nq="cada N días",aq="cada enésimo día de la semana",Mq="cada N día de la semana",cq="cada N horas",uq="cada N minutos",lq="cada N meses",Nq="cada N segundos",Lq="cada día",gq="Cada día de la semana",jq="Cada día de la semana",yq="cada hora",Tq="cada minuto",Dq="cada mes",dq="cada segundo",hq="De",zq="Horas",wq="Intervalo",Iq="Intervalo entre",Cq="CRON no válido",pq="Minutos",Aq="meses",mq="Una vez",fq="Período",Oq="Segundos",Eq="Sencillo",_q="Tiempo específico",xq="fechas especificas",Sq="día(s) específico(s) de la semana",kq="día específico de semanas",vq="horas específicas",Yq="minutos específicos",Qq="meses específicos",bq="segundos específicos",Uq="Hora",$q="A",Pq="Mago",Wq="todas",Jq="Día astro",Bq="Noche astro",Rq="Amanecer",Fq="Oscuridad",Gq="hora dorada",Hq="Fin de la hora dorada",Vq="Nadir",Zq="Amanecer náutico",Xq="Anochecer náutico",Kq="Noche",qq="Fin de la noche",eee="Mediodía solar",tee="amanecer",see="Fin del amanecer",iee="Puesta de sol",ree="Puesta de sol",oee="a",nee="en %s",aee="cada día",Mee="cada hora",cee="cada minuto",uee="cada mes",lee="cada %s días",Nee="cada %s horas",Lee="cada %s minutos",gee="cada %s meses",jee="cada %s semanas",yee="cada %s años",Tee="cada semana",Dee="todos los años",dee="de %s a %s",hee="Nunca",zee="en %s de %s",wee="en %s y %s de",Iee="en cada fecha de",Cee="%s",pee="%s y %s",Aee="en %s",mee="en %s y %s",fee="en los fines de semana",Oee="en días laborables",Eee="ya no se ejecutará más, porque el inicio está en el pasado",_ee="en %s",xee="de %s",See="Ejecutar desde hasta",kee="a %s",vee="cada",Yee="Tiempo específico",Qee="de",bee="De-a",Uee="Tiempo de intervalo",$ee="invertir; poner boca abajo o en la posición opuesta, orden o arreglo; Boca abajo",Pee="ninguna",Wee="en",Jee="Período",Bee="Diario",Ree="fechas",Fee="Día",Gee="Cada",Hee="Cada día",Vee="Cada mes",Zee="Cada semana",Xee="Todos los años",Kee="Horas",qee="Minutos",ete="mes",tte="Mensual",ste="Una vez",ite="Meses específicos",rte="Semana",ote="Días laborables",nte="Fin de semana",ate="Semanal",Mte="Días laborables",cte="Año",ute="Anual",lte="Tiempo específico",Nte="Hora",Lte="a",gte="Válido",jte="de",yte="a",Tte="Todo el dia",Dte="cada mes",dte={"ra_%s links from aliases":"%s enlaces de alias","ra_%s object(s) processed":"%s objeto(s) procesados","ra_%s was imported":"%s fue importado","ra_Accept license":"Aceptar licencia",ra_Actions:uZ,"ra_Add new child object to selected parent":"Agregar nuevo objeto hijo al padre seleccionado","ra_Add objects tree from JSON file":"Agregar árbol de objetos desde el archivo JSON","ra_Add row":"Añadir fila","ra_Advanced options":"Opciones avanzadas","ra_All items are filtered out":"Todos los elementos se filtran","ra_All objects":"Todos los objetos",ra_Append:lZ,"ra_Append %s entries or replace existing?":"¿Agregar %s entradas o reemplazar las existentes?","ra_Append or replace?":"¿Agregar o reemplazar?","ra_Are you sure?":"¿Estás seguro?","ra_Auto (no custom columns)":"Automático (sin columnas personalizadas)","ra_Back to %s":"Volver a %s","ra_Background image":"Imagen de fondo",ra_Cancel:NZ,"ra_Cannot add items with set filter":"No se pueden agregar elementos con el filtro establecido","ra_Cannot decode license":"No se puede decodificar la licencia","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"No se puede determinar la posición: la configuración del sistema está vacía y la detección de GPS está deshabilitada en el navegador",'ra_Cannot find "%s"':'No se puede encontrar "%s"','ra_Cannot read "%s"':'No se puede leer "%s"',"ra_Cannot read licenses: %s":"No se pueden leer licencias: %s","ra_Cannot retrieve options, as instance is offline":"No se pueden recuperar las opciones, ya que la instancia está fuera de línea","ra_Cannot update attribute, because not found in the object":"No se puede actualizar el atributo porque no se encuentra en el objeto","ra_Cannot upload":"no se puede cargar",ra_Categories:LZ,"ra_Chained certificate":"certificado encadenado","ra_Change color theme":"Cambiar tema de color","ra_Changed from":"Cambiaron desde","ra_Channel → State":"Canal → Estado","ra_Check license":"Verificar licencia",ra_Checked:gZ,ra_Clear:jZ,"ra_Clear filter":"Filtro claro","ra_Clear icon":"Icono claro","ra_Click to see in full size":"Haz clic para ver en tamaño completo.","ra_Click to show":"Haga clic para mostrar","ra_Clone current row":"Clonar fila actual",ra_Close:yZ,"ra_Collapse all nodes":"Contraer todos los nodos","ra_Collapse one step node":"Contraer un nivel",ra_Commercial:TZ,ra_Configure:DZ,"ra_Configure visible columns":"Configurar columnas visibles","ra_Confirm deletion of %s":"Confirmar la eliminación de %s",ra_Connected:dZ,ra_Continue:hZ,ra_Copied:zZ,"ra_Copied %s":'Copiado "%s"',"ra_Copy content":"Copiar contenido",ra_Create:wZ,"ra_Create alias":"Crear alias","ra_Create folder":"Crear carpeta","ra_Create new folder in %s":"Crear nueva carpeta en %s",ra_Crop:IZ,"ra_Define CRON...":"Definir CRON...","ra_Define functions":"Definir funciones","ra_Define rooms":"Definir habitaciones","ra_Define schedule":"Definir horario","ra_Define schedule...":"Definir horario ...",ra_Del:CZ,ra_Delete:pZ,"ra_Delete current row":"Eliminar fila actual","ra_Deselect all":"Deselecciona todo","ra_Device → Channel → State":"Dispositivo → Canal → Estado","ra_Disable/Enable translation":"Deshabilitar/Habilitar traducción",ra_Discard:AZ,ra_Disconnected:mZ,"ra_Do not ask for next 2 hours in this session":"No preguntes por las siguientes 2 horas en esta sesión.","ra_Do not export values of states":"No exportar valores de estados.","ra_Do not use let's encrypt":"No use vamos a cifrar","ra_Docker is not available":"Docker no está disponible","ra_Docker is not installed or not running":"Docker no está instalado o no se está ejecutando","ra_Double click to reset table layout":"Haga doble clic para restablecer el diseño de la tabla","ra_Drag 'n' drop some files here, or click to select files":"Arrastre y suelte algunos archivos aquí, o haga clic para seleccionar archivos","ra_Drop file here":"Suelta el archivo aquí","ra_Drop the files here...":"Suelta el archivo aquí ...","ra_Duplicate name":"Nombre duplicado","ra_Edit ACL":"Editar LCA","ra_Edit alias":"Editar alias","ra_Edit custom config":"Editar configuración personalizada","ra_Edit full path":"Editar ruta completa","ra_Edit function":"Función de edición","ra_Edit object field":"Editar campo de objeto","ra_Edit role":"Editar rol","ra_Edit room":"Cuarto de edición","ra_Edit value":"Editar valor","ra_Enter the code from that page here":"Introduzca el código de esa página aquí",ra_Error:fZ,"ra_Expand all nodes":"Expandir todos los nodos","ra_Expand one step node":"Expandir un nivel","ra_Expand/Collapse card":"Expandir/Contraer tarjeta","ra_Export configuration section":"Exportar sección de configuración","ra_Export data to %s file":"Exportar datos al archivo %s","ra_Failed to open JSON File":"No se pudo abrir el archivo JSON","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_File is too big. Max %sk allowed. Try use SVG.":"El archivo es demasiado grande. Máximo de %sk permitido. Intenta usar SVG.",ra_Filter:OZ,"ra_Filter and Data Actions":"Acciones de filtrado y datos","ra_Filter files":"Filtrar archivos","ra_Folder name":"Nombre de la carpeta","ra_Folder → Channel → State":"Carpeta → Canal → Estado","ra_Folder → Device → Channel → State":"Carpeta → Dispositivo → Canal → Estado","ra_Folder → State":"Carpeta → Estado","ra_Folders always first":"Carpetas siempre primero",ra_Friday:EZ,"ra_From file":"Desde archivo","ra_From text":"Del texto","ra_Get %s access":"Obtener %s acceso","ra_Good luck":"Buena suerte","ra_Hide empty folders":"Ocultar carpetas vacías","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si no se creará ningún archivo en la carpeta, desaparecerá después de que se cierre el navegador.","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Si el botón de arriba no funciona, puedes autorizar manualmente esta aplicación visitando esta URL","ra_Import and add configuration section":"Importar y agregar sección de configuración","ra_Import and replace configuration section":"Importar y reemplazar sección de configuración","ra_Import data from %s file":"Importar datos del archivo %s","ra_Import from %s":"Importar desde %s","ra_Instance %s is alive":"Instancia %s está vivo","ra_Instance %s is not alive":"Instancia %s no está vivo","ra_Instance is not alive":"La instancia no está viva","ra_Invalid CRON":"CRON no válido","ra_Invalid JSON":"JSON no válido","ra_Invalid JSON file.":"Archivo JSON inválido.","ra_Invalid JSON format. Expected an array.":"Formato JSON inválido. Se esperaba un array.","ra_Invalid answer from server":"Respuesta inválida del servidor","ra_Invalid parent folder!":"Carpeta principal no válida.","ra_Invalid structure":"Estructura inválida","ra_JSON editor":"editor JSON","ra_Last change":"Ultimo cambio",ra_Latitude:_Z,"ra_License %s":"Licencia %s","ra_License agreement":"Acuerdo de licencia","ra_License does not exist":"La licencia no existe","ra_License expired on %s":"La licencia venció el %s",'ra_License for other product "%s"':'Licencia para otro producto "%s"',"ra_License is for version %s, but required version is %s.":"La licencia es para la versión %s, pero la versión requerida es %s.","ra_License must be converted":"La licencia debe convertirse a una versión más reciente. Puedes hacerlo en tu perfil de iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licencia no encontrada en el administrador de licencias. ¿Quieres actualizar las licencias de iobroker.net?","ra_Listen on all IPs":"Escuche en todas las IP","ra_Load configuration from file":"Cargar configuración desde archivo",ra_Logout:xZ,ra_Longitude:SZ,'ra_May not trigger "updateLicenses"':'No puede activar "updateLicenses"',ra_Message:kZ,ra_Monday:vZ,"ra_Move down":"Mover hacia abajo","ra_Move up":"Ascender",ra_Name:YZ,"ra_No data found in file":"No se encontraron datos en el archivo","ra_No one license found in license manager":"No se encontró ninguna licencia en el administrador de licencias","ra_No response from admin":"No hay respuesta del administrador","ra_No response from the backend":"No hay respuesta del backend",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':'Los no expertos pueden crear nuevos objetos solo en "0_userdata.0" o "alias.0".',"ra_Not a number":"No un número","ra_OAuth Client ID":"ID de cliente OAuth","ra_OAuth Client secret":"Secreto de cliente OAuth",ra_Objects:QZ,ra_Ok:bZ,"ra_On weekdays":"De lunes a viernes","ra_Only following structures of objects are available:":"Solo están disponibles las siguientes estructuras de objetos:","ra_Only selected":"Solo seleccionados","ra_Owner group":"Grupo propietario","ra_Owner user":"Usuario propietario","ra_Passwords are not equal!":"¡Las contraseñas no son iguales!","ra_Place your files here or click here to open the browse dialog":"Coloque sus archivos aquí o haga clic aquí para abrir el cuadro de diálogo de exploración","ra_Please allow popups in your browser for this page!":"¡Permita ventanas emergentes en su navegador para esta página!","ra_Please confirm":"Por favor confirmar","ra_Please create license":"Por favor cree una licencia","ra_Please enter the license":"Por favor ingrese la licencia","ra_Please select file...":"Seleccione el archivo...","ra_Please select object ID...":"Por favor seleccione ID de objeto ...","ra_Port could be used by %s":"El puerto podría ser utilizado por %s","ra_Port is already used by %s":"El puerto ya está en uso por %s","ra_Press ENTER Key to add new item":"Presione la tecla ENTER para agregar un nuevo elemento","ra_Private certificate":"certificado privado",ra_Product:UZ,"ra_Public certificate":"Certificado público","ra_Quality code":"Calidad","ra_Refresh tree":"Actualizar árbol","ra_Reload files":"Recargar archivos",ra_Rename_Move_Copy:$Z,"ra_Renew %s access":"Renovar el acceso a %s",ra_Repeat:PZ,ra_Replace:WZ,"ra_Request timed out":"Tiempo de espera agotado","ra_Restrict to folder":"Restringir a carpeta",ra_Root:JZ,ra_Saturday:BZ,ra_Save:RZ,"ra_Save and close":"Guardar y cerrar","ra_Save configuration to file":"Guardar configuración en archivo","ra_Save objects tree as JSON file":"Guardar el árbol de objetos como archivo JSON","ra_Select all":"Seleccionar todo","ra_Select color":"Seleccionar el color","ra_Select predefined icon":"Seleccionar icono predefinido","ra_Select type of export":"Seleccione tipo de exportación",ra_Selected:FZ,"ra_Selected %s object(s)":"%s objetos seleccionados","ra_Serial number (UUID)":"Número de serie (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'El número de serie (UUID) "%s" en la licencia es para otro dispositivo.',"ra_Session will expire in %s seconds. Continue?":"La sesión expirará en %s segundos. ¿Continuar?","ra_Show all folders":"Mostrar todas las carpetas","ra_Show lines between rows":"Mostrar líneas entre filas","ra_Show/Hide object descriptions":"Mostrar/ocultar descripciones de objetos","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Some data are not stored. Discard?":"Algunos datos no se almacenan. ¿Desechar?",ra_States:GZ,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Autorizado correctamente. El token es válido hasta el %s y se renovará automáticamente.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Autorizado correctamente. El token es válido hasta %s, pero puede caducar porque la instancia no está en ejecución.","ra_Suitable license not found in license manager":"Licencia adecuada no encontrada en el administrador de licencias",ra_Sunday:HZ,"ra_Suppress question for next %s minutes":"Suprimir pregunta durante los próximos %s minutos","ra_System language":"Lenguaje del sistema","ra_Take browser position":"Tomar posición desde el navegador","ra_Take position from system settings":"Tomar posición desde la configuración del sistema",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':'Los expertos pueden crear objetos en todas partes excepto desde el segundo nivel (por ejemplo, "vis.0" o "javascript.0").',"ra_The page you are looking for was not found":"No se encontró la página que busca","ra_The schedule will be executed every minute. Are you sure?":"El cronograma se ejecutará cada minuto. ¿Estás seguro?","ra_The schedule will be executed every second. Are you sure?":"El cronograma se ejecutará cada segundo. ¿Estás seguro?",ra_Thursday:VZ,ra_Timestamp:ZZ,"ra_Toggle expert mode":"Alternar modo experto","ra_Toggle the states view":"Alternar la vista de estados","ra_Toggle view mode":"Alternar modo de vista","ra_Too big":"Demasiado grande","ra_Too small":"Demasiado pequeña","ra_Transparent dialog":"Diálogo transparente",ra_Tuesday:XZ,"ra_Unknown error":"Error desconocido","ra_Unknown error!":"¡Error desconocido!",ra_Update:KZ,"ra_Upload file":"Subir archivo","ra_Use all available let's encrypt certificates":"Utilice todos los certificados let's encrypt disponibles","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use el adaptador iobroker.acme para los certificados de letsencrypt","ra_Use system settings for position":"Usar la configuración del sistema para la posición","ra_Used system settings":"Configuraciones del sistema usadas","ra_User files":"Archivos de usuario",ra_ValidTill:qZ,ra_Value:eX,ra_Version:tX,"ra_View file":"Ver archivo","ra_View: %s":"Ver: %s",ra_Wednesday:sX,ra_Width:iX,"ra_YAML editor":"Editor YAML",ra_Yes:rX,"ra_You can export all objects or just the selected branch.":"Puede exportar todos los objetos o solo la rama seleccionada.","ra_You can filter entries by entering here some text":"Puede filtrar las entradas ingresando aquí algún texto","ra_You can use * as wildcard":"Puedes utilizar * como comodín",ra___different__:oX,ra_aclEveryone_read_object:nX,ra_aclEveryone_read_state:aX,ra_aclEveryone_write_object:MX,ra_aclEveryone_write_state:cX,ra_aclGroup_read_object:uX,ra_aclGroup_read_state:lX,ra_aclGroup_write_object:NX,ra_aclGroup_write_state:LX,ra_aclOwner_read_object:gX,ra_aclOwner_read_state:jX,ra_aclOwner_write_object:yX,ra_aclOwner_write_state:TX,ra_buttons:DX,ra_changedFrom:dX,ra_close:hX,ra_create_boolean_state:zX,ra_create_channel:wX,ra_create_device:IX,ra_create_number_state:CX,ra_create_state:pX,ra_create_string_state:AX,ra_daysShortText:mX,ra_dow_Fr:fX,ra_dow_Mo:OX,ra_dow_Sa:EX,ra_dow_Su:_X,ra_dow_Th:xX,ra_dow_Tu:SX,ra_dow_We:kX,ra_expertMode:vX,ra_false:YX,ra_fileType_all:QX,ra_fileType_audio:bX,ra_fileType_code:UX,ra_fileType_images:$X,ra_fileType_txt:PX,ra_fileType_video:WX,"ra_fileType_video,":"Video",ra_filter_customs:JX,ra_filter_customs_without:BX,ra_filter_func:RX,ra_filter_id:FX,ra_filter_name:GX,ra_filter_role:HX,ra_filter_room:VX,ra_filter_type:ZX,"ra_import data from %s file":"Importar datos del archivo %s",ra_invalidConfig:XX,ra_lastChange:KX,ra_locally:qX,ra_month_Apr:eK,ra_month_Aug:tK,ra_month_Dec:sK,ra_month_Feb:iK,ra_month_Jan:rK,ra_month_Jul:oK,ra_month_Jun:nK,ra_month_Mai:aK,ra_month_Mar:MK,ra_month_Nov:cK,ra_month_Oct:uK,ra_month_Sep:lK,ra_months_Apr:NK,ra_months_Aug:LK,ra_months_Dec:gK,ra_months_Feb:jK,ra_months_Jan:yK,ra_months_Jul:TK,ra_months_Jun:DK,ra_months_Mai:dK,ra_months_Mar:hK,ra_months_Nov:zK,ra_months_Oct:wK,ra_months_Sep:IK,"ra_no confirm for 5 mins":"Sin confirmación durante 5 minutos",ra_none:CK,ra_object_changed_by:pK,ra_object_changed_by_user:AK,ra_otherConfig:mK,ra_qualityCode:fK,ra_repeat:OK,ra_select_folder_hint:EK,ra_show_all:_K,ra_state_changed_by:xK,ra_state_changed_from:SK,ra_timestamp:kK,ra_tooltip_ack:vK,ra_tooltip_comment:YK,ra_tooltip_copyState:QK,ra_tooltip_ctrlForLink:bK,ra_tooltip_customConfig:UK,ra_tooltip_deleteObject:$K,ra_tooltip_editObject:PK,ra_tooltip_editState:WK,ra_tooltip_expire:JK,ra_tooltip_from:BK,ra_tooltip_lc:RK,ra_tooltip_quality:FK,ra_tooltip_ts:GK,ra_tooltip_user:HK,ra_tooltip_value:VK,ra_true:ZK,"ra_use seconds":"usar segundos",ra_val:XK,"ra_via internet":"vía Internet",ra_warning_every_minute:KK,ra_warning_every_second:qK,sc_cron:eq,sc_date:tq,sc_dates:sq,sc_dow:iq,sc_dows:rq,sc_every:oq,sc_everyN_dates:nq,sc_everyN_dow:aq,sc_everyN_dows:Mq,sc_everyN_hours:cq,sc_everyN_minutes:uq,sc_everyN_months:lq,sc_everyN_seconds:Nq,sc_every_dates:Lq,sc_every_dow:gq,sc_every_dows:jq,sc_every_hours:yq,sc_every_minutes:Tq,sc_every_months:Dq,sc_every_seconds:dq,sc_from:hq,sc_hours:zq,sc_interval:wq,sc_intervalBetween:Iq,sc_invalid_cron:Cq,sc_minutes:pq,sc_months:Aq,sc_once:mq,sc_period:fq,sc_seconds:Oq,sc_simple:Eq,sc_specific:_q,sc_specific_dates:xq,sc_specific_dow:Sq,sc_specific_dows:kq,sc_specific_hours:vq,sc_specific_minutes:Yq,sc_specific_months:Qq,sc_specific_seconds:bq,sc_time:Uq,sc_to:$q,sc_wizard:Pq,sch_all:Wq,sch_astroDay:Jq,sch_astroNight:Bq,sch_astro_dawn:Rq,sch_astro_dusk:Fq,sch_astro_goldenHour:Gq,sch_astro_goldenHourEnd:Hq,sch_astro_nadir:Vq,sch_astro_nauticalDawn:Zq,sch_astro_nauticalDusk:Xq,sch_astro_night:Kq,sch_astro_nightEnd:qq,sch_astro_solarNoon:eee,sch_astro_sunrise:tee,sch_astro_sunriseEnd:see,sch_astro_sunset:iee,sch_astro_sunsetStart:ree,sch_at:oee,sch_desc_atTime:nee,sch_desc_everyDay:aee,sch_desc_everyHour:Mee,sch_desc_everyMinute:cee,sch_desc_everyMonth:uee,sch_desc_everyNDay:lee,sch_desc_everyNHours:Nee,sch_desc_everyNMinutes:Lee,sch_desc_everyNMonths:gee,sch_desc_everyNWeeks:jee,sch_desc_everyNYears:yee,sch_desc_everyWeek:Tee,sch_desc_everyYear:Dee,sch_desc_intervalFromTo:dee,sch_desc_never:hee,sch_desc_onDate:zee,sch_desc_onDates:wee,sch_desc_onEveryDate:Iee,sch_desc_onMonth:Cee,sch_desc_onMonths:pee,sch_desc_onWeekday:Aee,sch_desc_onWeekdays:mee,sch_desc_onWeekends:fee,sch_desc_onWorkdays:Oee,sch_desc_onceInPast:Eee,sch_desc_once_on:_ee,sch_desc_validFrom:xee,sch_desc_validFromTo:See,sch_desc_validTo:kee,sch_every:vee,sch_exactTime:Yee,sch_from:Qee,sch_fromTo:bee,sch_intervalTime:Uee,sch_invert:$ee,sch_no_one:Pee,sch_on:Wee,sch_period:Jee,sch_periodDaily:Bee,sch_periodDates:Ree,sch_periodDay:Fee,sch_periodEvery:Gee,sch_periodEveryDay:Hee,sch_periodEveryMonth:Vee,sch_periodEveryWeek:Zee,sch_periodEveryYear:Xee,sch_periodHours:Kee,sch_periodMinutes:qee,sch_periodMonth:ete,sch_periodMonthly:tte,sch_periodOnce:ste,sch_periodSpecificMonths:ite,sch_periodWeek:rte,sch_periodWeekdays:ote,sch_periodWeekend:nte,sch_periodWeekly:ate,sch_periodWorkdays:Mte,sch_periodYear:cte,sch_periodYearly:ute,sch_specificTime:lte,sch_time:Nte,sch_to:Lte,sch_valid:gte,sch_validFrom:jte,sch_validTo:yte,sch_wholeDay:Tte,sch_yearEveryMonth:Dte},hte="Akcje",zte="Dodać",wte="Anuluj",Ite="Kategorie",Cte="Sprawdzony",pte="Kasować",Ate="Blisko",mte="Handlowy",fte="Konfiguruj",Ote="Połączony",Ete="Kontynuować",_te="Skopiowano",xte="Stwórz",Ste="Przyciąć",kte="Delete",vte="Usunąć",Yte="Wyrzucać",Qte="Niepowiązany",bte="Błąd",Ute="Filtr",$te="Piątek",Pte="Szerokość",Wte="Wyloguj",Jte="Długość geograficzna",Bte="Wiadomość",Rte="Poniedziałek",Fte="Nazwa",Gte="Obiekty",Hte="Dobrze",Vte="Produkt",Zte="Zmień nazwę/Przenieś/Kopiuj",Xte="Powtarzać",Kte="Zastępować",qte="Korzeń",ese="Sobota",tse="Zapisać",sse="Wybrany",ise="Stany",rse="Niedziela",ose="Czwartek",nse="Znak czasu",ase="Wtorek",Mse="Aktualizacja",cse="Obowiązuje do",use="Wartość",lse="Wersja",Nse="Środa",Lse="Szerokość",gse="Tak",jse="różne",yse="Każdy może czytać obiekt",Tse="Każdy może czytać stan",Dse="Każdy może pisać przedmiot",dse="Każdy może pisać stan",hse="Grupa może odczytać obiekt",zse="Grupa może odczytać stan",wse="Grupa może pisać obiekt",Ise="Grupa może pisać stan",Cse="Właściciel może czytać obiekt",pse="Właściciel może odczytać stan",Ase="Właściciel może napisać obiekt",mse="Właściciel może pisać stan",fse="guziki",Ose="Zmieniony z",Ese="blisko",_se="Utwórz stan logiczny",xse="Utwórz kanał",Sse="Utwórz urządzenie",kse="Utwórz stan liczbowy",vse="Utwórz stan",Yse="Utwórz stan ciągu",Qse="d.",bse="Ks",Use="Mo",$se="Sa",Pse="Su",Wse="Th",Jse="Tu",Bse="My",Rse="Tryb ekspercki",Fse="FAŁSZ",Gse="Wszystkie pliki",Hse="Audio",Vse="Kod/JSON",Zse="Obrazy",Xse="Tekst",Kse="Wideo",qse="Ustawienia",eie="bez",tie="Funkcjonować",sie="ID",iie="Imię",rie="Rola",oie="Sala",nie="Rodzaj",aie="Nieprawidłowe ustawienia",Mie="Ostatnia zmiana",cie="lokalnie",uie="kwiecień",lie="sierpień",Nie="grudzień",Lie="luty",gie="styczeń",jie="lipiec",yie="czerwiec",Tie="Mai",Die="Zniszczyć",die="listopad",hie="październik",zie="wrzesień",wie="kwiecień",Iie="sierpień",Cie="grudzień",pie="luty",Aie="styczeń",mie="lipiec",fie="czerwiec",Oie="Mai",Eie="Zniszczyć",_ie="listopad",xie="październik",Sie="wrzesień",kie="Żaden",vie="Obiekt zmieniony przez",Yie="Obiekt ostatnio zmieniony o godz",Qie="Ustawienia z innego adaptera %s",bie="Kod jakości",Uie="powtarzać",$ie="Aby wybrać folder, wystarczy przytrzymać klawisz „shift”, klikając folder.",Pie="Pokaż wszystko",Wie="Stan zmieniony przez",Jie="Obiekt zmieniony z",Bie="Znak czasu",Rie="Potwierdzon",Fie="Komentarz",Gie="Skopiuj wartość stanu",Hie="Przytrzymaj klawisz CTRL/⌘, aby otworzyć link",Vie="Własne ustawienia",Zie="Usuń obiekt",Xie="Edytuj obiekt",Kie="Edytuj wartość stanu",qie="Wygasa za",ere="Z",tre="Ostatnia zmiana",sre="Jakość",ire="Znak czasu",rre="Użytkownik",ore="Wartość",nre="PRAWDA",are="Wartość",Mre="Ostrzeżenie: Zadanie CRON będzie uruchamiane co minutę w określonym przedziale czasowym!",cre="Ostrzeżenie: Zadanie CRON będzie uruchamiane co sekundę w określonym przedziale czasowym!",ure="CRON",lre="Data",Nre="Daktyle",Lre="Dzień",gre="Dzień tygodnia",jre="Każdy",yre="co N dni",Tre="w każdy N-ty dzień tygodnia",Dre="co N dnia tygodnia",dre="co N godzin",hre="co N minut",zre="co N miesięcy",wre="co N sekund",Ire="codziennie",Cre="każdy dzień tygodnia",pre="każdy dzień tygodnia",Are="co godzinę",mre="każda minuta",fre="każdego miesiąca",Ore="każda sekunda",Ere="Od",_re="godziny",xre="Interwał",Sre="Interwał między",kre="Nieprawidłowy CRON",vre="Minuty",Yre="miesięcy",Qre="Pewnego razu",bre="Kropka",Ure="sekundy",$re="Prosty",Pre="Określony czas",Wre="konkretne daty",Jre="określone dni tygodnia",Bre="określony dzień tygodni",Rre="określone godziny",Fre="określone minuty",Gre="określone miesiące",Hre="określone sekundy",Vre="Czas",Zre="Do",Xre="Czarodziej",Kre="wszystko",qre="Dzień Astro",eoe="Noc Astro",toe="Świt",soe="Zmierzch",ioe="Złota godzina",roe="Koniec złotej godziny",ooe="Północ",noe="Morski świt",aoe="Morski zmierzch",Moe="Noc",coe="Koniec nocy",uoe="Południe słoneczne",loe="Wschód słońca",Noe="Koniec wschodu słońca",Loe="Zachód słońca",goe="Początek zachodu słońca",joe="w",yoe="na %s",Toe="codziennie",Doe="co godzinę",doe="każda minuta",hoe="każdego miesiąca",zoe="każdego dnia %s",woe="co %s godzin",Ioe="co %s minut",Coe="co %s miesięcy",poe="co %s tygodni",Aoe="co %s lat",moe="co tydzień",foe="każdego roku",Ooe="od %s do %s",Eoe="nigdy",_oe="na %s z %s",xoe="na %s i %s z",Soe="w każdą datę",koe="%s",voe="%s i %s",Yoe="na %s",Qoe="na %s i %s",boe="w weekendy",Uoe="w dni robocze",$oe="nie będzie już wykonywany, ponieważ start jest w przeszłości",Poe="na %s",Woe="z %s",Joe="Wykonaj od do",Boe="do %s",Roe="każdy",Foe="Określony czas",Goe="od",Hoe="Od-do",Voe="Czas przerwy",Zoe="odwracać",Xoe="Żaden",Koe="na",qoe="Kropka",ene="Codziennie",tne="Daktyle",sne="Dzień",ine="Każdy",rne="Codziennie",one="Każdego miesiąca",nne="Co tydzień",ane="Każdego roku",Mne="godziny",cne="Minuty",une="miesiąc",lne="Miesięczny",Nne="Pewnego razu",Lne="Określone miesiące",gne="Tydzień",jne="Dni powszednie",yne="Weekend",Tne="Co tydzień",Dne="Dni robocze",dne="Rok",hne="Rocznie",zne="Określony czas",wne="Czas",Ine="do",Cne="Ważny",pne="od",Ane="do",mne="Cały dzień",fne="każdego miesiąca",One={"ra_%s links from aliases":"%s linków z aliasów","ra_%s object(s) processed":"Przetworzono %s obiektów","ra_%s was imported":"%s został zaimportowany","ra_Accept license":"Zaakceptuj licencję",ra_Actions:hte,"ra_Add new child object to selected parent":"Dodaj nowy obiekt potomny do wybranego rodzica","ra_Add objects tree from JSON file":"Dodaj drzewo obiektów z pliku JSON","ra_Add row":"Dodaj wiersz","ra_Advanced options":"Zaawansowane opcje","ra_All items are filtered out":"Wszystkie pozycje są odfiltrowane","ra_All objects":"Wszystkie obiekty",ra_Append:zte,"ra_Append %s entries or replace existing?":"Dołączyć wpisy %s czy zastąpić istniejące?","ra_Append or replace?":"Dołączyć czy zastąpić?","ra_Are you sure?":"Jesteś pewny?","ra_Auto (no custom columns)":"Auto (bez kolumn niestandardowych)","ra_Back to %s":"Powrót do %s","ra_Background image":"Zdjęcie w tle",ra_Cancel:wte,"ra_Cannot add items with set filter":"Nie można dodać elementów z ustawionym filtrem","ra_Cannot decode license":"Nie można zdekodować licencji","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Nie można określić pozycji: ustawienia systemu są puste, a wykrywanie GPS jest wyłączone w przeglądarce",'ra_Cannot find "%s"':"Nie można znaleźć „%s”",'ra_Cannot read "%s"':"Nie można odczytać „%s”","ra_Cannot read licenses: %s":"Nie można odczytać licencji: %s","ra_Cannot retrieve options, as instance is offline":"Nie można pobrać opcji, ponieważ instancja jest w trybie offline","ra_Cannot update attribute, because not found in the object":"Nie można zaktualizować atrybutu, ponieważ nie znaleziono go w obiekcie","ra_Cannot upload":"Nie można przesłać",ra_Categories:Ite,"ra_Chained certificate":"Certyfikat łańcuchowy","ra_Change color theme":"Zmień motyw kolorystyczny","ra_Changed from":"Zmieniony z","ra_Channel → State":"Kanał → Stan","ra_Check license":"Sprawdź licencję",ra_Checked:Cte,ra_Clear:pte,"ra_Clear filter":"Czysty filtr","ra_Clear icon":"Wyczyść ikonę","ra_Click to see in full size":"Kliknij, aby zobaczyć w pełnym rozmiarze","ra_Click to show":"Kliknij, aby pokazać","ra_Clone current row":"Sklonuj bieżący wiersz",ra_Close:Ate,"ra_Collapse all nodes":"Zwiń wszystkie węzły","ra_Collapse one step node":"Zwiń o jeden poziom",ra_Commercial:mte,ra_Configure:fte,"ra_Configure visible columns":"Skonfiguruj widoczne kolumny","ra_Confirm deletion of %s":"Potwierdź usunięcie %s",ra_Connected:Ote,ra_Continue:Ete,ra_Copied:_te,"ra_Copied %s":'Skopiowano "%s"',"ra_Copy content":"Kopiuj zawartość",ra_Create:xte,"ra_Create alias":"Utwórz alias","ra_Create folder":"Utwórz folder","ra_Create new folder in %s":"Utwórz nowy folder w %s",ra_Crop:Ste,"ra_Define CRON...":"Zdefiniuj CRON...","ra_Define functions":"Zdefiniuj funkcje","ra_Define rooms":"Zdefiniuj pokoje","ra_Define schedule":"Zdefiniuj harmonogram","ra_Define schedule...":"Zdefiniuj harmonogram ...",ra_Del:kte,ra_Delete:vte,"ra_Delete current row":"Usuń bieżący wiersz","ra_Deselect all":"Odznacz wszystko","ra_Device → Channel → State":"Urządzenie → Kanał → Stan","ra_Disable/Enable translation":"Wyłącz/Włącz tłumaczenie",ra_Discard:Yte,ra_Disconnected:Qte,"ra_Do not ask for next 2 hours in this session":"Nie proś o kolejne 2 godziny w tej sesji","ra_Do not export values of states":"Nie eksportuj wartości stanów","ra_Do not use let's encrypt":"Nie używaj zaszyfrujmy","ra_Docker is not available":"Docker nie jest dostępny","ra_Docker is not installed or not running":"Docker nie jest zainstalowany lub nie działa","ra_Double click to reset table layout":"Kliknij dwukrotnie, aby zresetować układ tabeli","ra_Drag 'n' drop some files here, or click to select files":"Przeciągnij i upuść kilka plików tutaj lub kliknij, aby wybrać pliki","ra_Drop file here":"Upuść plik tutaj","ra_Drop the files here...":"Upuść plik tutaj...","ra_Duplicate name":"Zduplikowana nazwa","ra_Edit ACL":"Edytuj listy ACL","ra_Edit alias":"Edytuj alias","ra_Edit custom config":"Edytuj konfigurację niestandardową","ra_Edit full path":"Edytuj pełną ścieżkę","ra_Edit function":"Funkcja edycji","ra_Edit object field":"Edytuj pole obiektu","ra_Edit role":"Edytuj rolę","ra_Edit room":"Edytuj pokój","ra_Edit value":"Edytuj wartość","ra_Enter the code from that page here":"Wpisz kod z tej strony tutaj",ra_Error:bte,"ra_Expand all nodes":"Rozwiń wszystkie węzły","ra_Expand one step node":"Rozwiń o jeden poziom","ra_Expand/Collapse card":"Rozwiń/Zwiń kartę","ra_Export configuration section":"Sekcja konfiguracji eksportu","ra_Export data to %s file":"Eksportuj dane do pliku %s","ra_Failed to open JSON File":"Nie udało się otworzyć pliku JSON","ra_Fallback custom certificates":"Niestandardowe certyfikaty zastępcze","ra_File is too big. Max %sk allowed. Try use SVG.":"Plik jest za duży. Maksymalna dozwolona liczba %sk. Spróbuj użyć SVG.",ra_Filter:Ute,"ra_Filter and Data Actions":"Akcje filtrów i danych","ra_Filter files":"Filtruj pliki","ra_Folder name":"Nazwa folderu","ra_Folder → Channel → State":"Folder → Kanał → Stan","ra_Folder → Device → Channel → State":"Folder → Urządzenie → Kanał → Stan","ra_Folder → State":"Folder → Stan","ra_Folders always first":"Foldery zawsze na pierwszym miejscu",ra_Friday:$te,"ra_From file":"Z pliku","ra_From text":"Z tekstu","ra_Get %s access":"Uzyskaj dostęp %s","ra_Good luck":"Powodzenia","ra_Hide empty folders":"Ukryj puste foldery","ra_If no file will be created in the folder, it will disappear after the browser closed":"Jeśli w folderze nie zostanie utworzony żaden plik, zniknie on po zamknięciu przeglądarki","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Jeśli przycisk powyżej nie działa, możesz autoryzować tę aplikację ręcznie, odwiedzając ten adres URL","ra_Import and add configuration section":"Importuj i dodaj sekcję konfiguracji","ra_Import and replace configuration section":"Importuj i zastąp sekcję konfiguracji","ra_Import data from %s file":"Importuj dane z pliku %s","ra_Import from %s":"Importuj z %s","ra_Instance %s is alive":"Instancja %s jest aktywna","ra_Instance %s is not alive":"Instancja TEKST nie jest aktywna","ra_Instance is not alive":"Instancja nie jest aktywna","ra_Invalid CRON":"Nieprawidłowy CRON","ra_Invalid JSON":"Nieprawidłowy JSON","ra_Invalid JSON file.":"Nieprawidłowy plik JSON.","ra_Invalid JSON format. Expected an array.":"Nieprawidłowy format JSON. Oczekiwano tablicy.","ra_Invalid answer from server":"Nieprawidłowa odpowiedź z serwera","ra_Invalid parent folder!":"Nieprawidłowy folder nadrzędny!","ra_Invalid structure":"Nieprawidłowa struktura","ra_JSON editor":"Edytor JSON","ra_Last change":"Ostatnia zmiana",ra_Latitude:Pte,"ra_License %s":"Licencja %s","ra_License agreement":"Umowa licencyjna","ra_License does not exist":"Licencja nie istnieje","ra_License expired on %s":"Licencja wygasła w dniu %s",'ra_License for other product "%s"':"Licencja na inny produkt „%s”","ra_License is for version %s, but required version is %s.":"Licencja dotyczy wersji %s, ale wymagana wersja to %s.","ra_License must be converted":"Licencja musi zostać przekonwertowana na nowszą wersję. Możesz to zrobić w swoim profilu iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Nie znaleziono licencji w menedżerze licencji. Chcesz zaktualizować licencje z iobroker.net?","ra_Listen on all IPs":"Słuchaj na wszystkich adresach IP","ra_Load configuration from file":"Załaduj konfigurację z pliku",ra_Logout:Wte,ra_Longitude:Jte,'ra_May not trigger "updateLicenses"':"Może nie uruchamiać „updateLicenses”",ra_Message:Bte,ra_Monday:Rte,"ra_Move down":"Padnij","ra_Move up":"Podnieść",ra_Name:Fte,"ra_No data found in file":"Nie znaleziono danych w pliku","ra_No one license found in license manager":"Nie znaleziono licencji w menedżerze licencji","ra_No response from admin":"Brak odpowiedzi od administratora","ra_No response from the backend":"Brak odpowiedzi z zaplecza",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Osoby nie będące ekspertami mogą tworzyć nowe obiekty tylko w „0_userdata.0” lub „alias.0”.","ra_Not a number":"Nie numer","ra_OAuth Client ID":"Identyfikator klienta OAuth","ra_OAuth Client secret":"Tajny klucz klienta OAuth",ra_Objects:Gte,ra_Ok:Hte,"ra_On weekdays":"W dni powszednie","ra_Only following structures of objects are available:":"Dostępne są tylko następujące struktury obiektów:","ra_Only selected":"Tylko wybrane","ra_Owner group":"Grupa właścicieli","ra_Owner user":"Właściciel użytkownika","ra_Passwords are not equal!":"Hasła nie są równe!","ra_Place your files here or click here to open the browse dialog":"Umieść swoje pliki tutaj lub kliknij tutaj, aby otworzyć okno dialogowe przeglądania","ra_Please allow popups in your browser for this page!":"Proszę zezwolić na wyświetlanie wyskakujących okienek w przeglądarce dla tej strony!","ra_Please confirm":"Proszę potwierdzić","ra_Please create license":"Utwórz licencję","ra_Please enter the license":"Proszę wprowadzić licencję","ra_Please select file...":"Wybierz plik...","ra_Please select object ID...":"Wybierz identyfikator obiektu ...","ra_Port could be used by %s":"Port może być używany przez %s","ra_Port is already used by %s":"Port jest już używany przez %s","ra_Press ENTER Key to add new item":"Naciśnij klawisz ENTER, aby dodać nowy element","ra_Private certificate":"Prywatny certyfikat",ra_Product:Vte,"ra_Public certificate":"Certyfikat publiczny","ra_Quality code":"Jakości","ra_Refresh tree":"Odśwież drzewo","ra_Reload files":"Załaduj ponownie pliki",ra_Rename_Move_Copy:Zte,"ra_Renew %s access":"Odnów dostęp %s",ra_Repeat:Xte,ra_Replace:Kte,"ra_Request timed out":"Upłynął limit czasu żądania","ra_Restrict to folder":"Ogranicz do folderu",ra_Root:qte,ra_Saturday:ese,ra_Save:tse,"ra_Save and close":"Zapisz i zamknij","ra_Save configuration to file":"Zapisz konfigurację do pliku","ra_Save objects tree as JSON file":"Zapisz drzewo obiektów jako plik JSON","ra_Select all":"Zaznacz wszystko","ra_Select color":"Wybierz kolor","ra_Select predefined icon":"Wybierz predefiniowaną ikonę","ra_Select type of export":"Wybierz rodzaj eksportu",ra_Selected:sse,"ra_Selected %s object(s)":"Wybrane obiekty %s","ra_Serial number (UUID)":"Numer seryjny (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"Numer seryjny (UUID) „%s” w licencji dotyczy innego urządzenia.","ra_Session will expire in %s seconds. Continue?":"Sesja wygaśnie za %s sekund. Kontynuować?","ra_Show all folders":"Pokaż wszystkie foldery","ra_Show lines between rows":"Pokaż linie między rzędami","ra_Show/Hide object descriptions":"Pokaż/ukryj opisy obiektów","ra_Show/hide filter input":"Pokaż/ukryj wejście filtra","ra_Some data are not stored. Discard?":"Niektóre dane nie są przechowywane. Wyrzucać?",ra_States:ise,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Pomyślnie autoryzowano. Token ważny do %s i zostanie automatycznie odnowiony.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Pomyślnie autoryzowano. Token ważny do %s, ale może wygasnąć, ponieważ instancja nie jest uruchomiona.","ra_Suitable license not found in license manager":"Nie znaleziono odpowiedniej licencji w menedżerze licencji",ra_Sunday:rse,"ra_Suppress question for next %s minutes":"Ukryj pytanie przez następne %s minut","ra_System language":"Język systemu","ra_Take browser position":"Zajmij pozycję z przeglądarki","ra_Take position from system settings":"Zajmij pozycję z ustawień systemowych",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Eksperci mogą tworzyć obiekty wszędzie poza drugim poziomem (np. „Vis.0” lub „javascript.0”).","ra_The page you are looking for was not found":"Strona, której szukasz nie została znaleziona","ra_The schedule will be executed every minute. Are you sure?":"Harmonogram będzie wykonywany co minutę. Czy jesteś pewien?","ra_The schedule will be executed every second. Are you sure?":"Harmonogram będzie wykonywany co sekundę. Czy jesteś pewien?",ra_Thursday:ose,ra_Timestamp:nse,"ra_Toggle expert mode":"Przełącz tryb eksperta","ra_Toggle the states view":"Przełącz widok stanów","ra_Toggle view mode":"Przełącz tryb widoku","ra_Too big":"Za duży","ra_Too small":"Za mały","ra_Transparent dialog":"Przejrzyste okno dialogowe",ra_Tuesday:ase,"ra_Unknown error":"Nieznany błąd","ra_Unknown error!":"Nieznany błąd!",ra_Update:Mse,"ra_Upload file":"Przesyłanie pliku","ra_Use all available let's encrypt certificates":"Użyj wszystkich dostępnych certyfikatów Let's Encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Użyj adaptera iobroker.acme dla certyfikatów letsencrypt","ra_Use system settings for position":"Użyj ustawień systemowych dla pozycji","ra_Used system settings":"Używane ustawienia systemowe","ra_User files":"Pliki użytkownika",ra_ValidTill:cse,ra_Value:use,ra_Version:lse,"ra_View file":"Zobaczyć plik","ra_View: %s":"Widok: %s",ra_Wednesday:Nse,ra_Width:Lse,"ra_YAML editor":"Edytor YAML",ra_Yes:gse,"ra_You can export all objects or just the selected branch.":"Możesz wyeksportować wszystkie obiekty lub tylko wybraną gałąź.","ra_You can filter entries by entering here some text":"Możesz filtrować wpisy, wpisując tutaj jakiś tekst","ra_You can use * as wildcard":"Możesz użyć * jako symbolu wieloznacznego",ra___different__:jse,ra_aclEveryone_read_object:yse,ra_aclEveryone_read_state:Tse,ra_aclEveryone_write_object:Dse,ra_aclEveryone_write_state:dse,ra_aclGroup_read_object:hse,ra_aclGroup_read_state:zse,ra_aclGroup_write_object:wse,ra_aclGroup_write_state:Ise,ra_aclOwner_read_object:Cse,ra_aclOwner_read_state:pse,ra_aclOwner_write_object:Ase,ra_aclOwner_write_state:mse,ra_buttons:fse,ra_changedFrom:Ose,ra_close:Ese,ra_create_boolean_state:_se,ra_create_channel:xse,ra_create_device:Sse,ra_create_number_state:kse,ra_create_state:vse,ra_create_string_state:Yse,ra_daysShortText:Qse,ra_dow_Fr:bse,ra_dow_Mo:Use,ra_dow_Sa:$se,ra_dow_Su:Pse,ra_dow_Th:Wse,ra_dow_Tu:Jse,ra_dow_We:Bse,ra_expertMode:Rse,ra_false:Fse,ra_fileType_all:Gse,ra_fileType_audio:Hse,ra_fileType_code:Vse,ra_fileType_images:Zse,ra_fileType_txt:Xse,ra_fileType_video:Kse,"ra_fileType_video,":"Wideo",ra_filter_customs:qse,ra_filter_customs_without:eie,ra_filter_func:tie,ra_filter_id:sie,ra_filter_name:iie,ra_filter_role:rie,ra_filter_room:oie,ra_filter_type:nie,"ra_import data from %s file":"Importuj dane z pliku %s",ra_invalidConfig:aie,ra_lastChange:Mie,ra_locally:cie,ra_month_Apr:uie,ra_month_Aug:lie,ra_month_Dec:Nie,ra_month_Feb:Lie,ra_month_Jan:gie,ra_month_Jul:jie,ra_month_Jun:yie,ra_month_Mai:Tie,ra_month_Mar:Die,ra_month_Nov:die,ra_month_Oct:hie,ra_month_Sep:zie,ra_months_Apr:wie,ra_months_Aug:Iie,ra_months_Dec:Cie,ra_months_Feb:pie,ra_months_Jan:Aie,ra_months_Jul:mie,ra_months_Jun:fie,ra_months_Mai:Oie,ra_months_Mar:Eie,ra_months_Nov:_ie,ra_months_Oct:xie,ra_months_Sep:Sie,"ra_no confirm for 5 mins":"brak potwierdzenia przez 5 minut",ra_none:kie,ra_object_changed_by:vie,ra_object_changed_by_user:Yie,ra_otherConfig:Qie,ra_qualityCode:bie,ra_repeat:Uie,ra_select_folder_hint:$ie,ra_show_all:Pie,ra_state_changed_by:Wie,ra_state_changed_from:Jie,ra_timestamp:Bie,ra_tooltip_ack:Rie,ra_tooltip_comment:Fie,ra_tooltip_copyState:Gie,ra_tooltip_ctrlForLink:Hie,ra_tooltip_customConfig:Vie,ra_tooltip_deleteObject:Zie,ra_tooltip_editObject:Xie,ra_tooltip_editState:Kie,ra_tooltip_expire:qie,ra_tooltip_from:ere,ra_tooltip_lc:tre,ra_tooltip_quality:sre,ra_tooltip_ts:ire,ra_tooltip_user:rre,ra_tooltip_value:ore,ra_true:nre,"ra_use seconds":"użyj sekund",ra_val:are,"ra_via internet":"przez internet",ra_warning_every_minute:Mre,ra_warning_every_second:cre,sc_cron:ure,sc_date:lre,sc_dates:Nre,sc_dow:Lre,sc_dows:gre,sc_every:jre,sc_everyN_dates:yre,sc_everyN_dow:Tre,sc_everyN_dows:Dre,sc_everyN_hours:dre,sc_everyN_minutes:hre,sc_everyN_months:zre,sc_everyN_seconds:wre,sc_every_dates:Ire,sc_every_dow:Cre,sc_every_dows:pre,sc_every_hours:Are,sc_every_minutes:mre,sc_every_months:fre,sc_every_seconds:Ore,sc_from:Ere,sc_hours:_re,sc_interval:xre,sc_intervalBetween:Sre,sc_invalid_cron:kre,sc_minutes:vre,sc_months:Yre,sc_once:Qre,sc_period:bre,sc_seconds:Ure,sc_simple:$re,sc_specific:Pre,sc_specific_dates:Wre,sc_specific_dow:Jre,sc_specific_dows:Bre,sc_specific_hours:Rre,sc_specific_minutes:Fre,sc_specific_months:Gre,sc_specific_seconds:Hre,sc_time:Vre,sc_to:Zre,sc_wizard:Xre,sch_all:Kre,sch_astroDay:qre,sch_astroNight:eoe,sch_astro_dawn:toe,sch_astro_dusk:soe,sch_astro_goldenHour:ioe,sch_astro_goldenHourEnd:roe,sch_astro_nadir:ooe,sch_astro_nauticalDawn:noe,sch_astro_nauticalDusk:aoe,sch_astro_night:Moe,sch_astro_nightEnd:coe,sch_astro_solarNoon:uoe,sch_astro_sunrise:loe,sch_astro_sunriseEnd:Noe,sch_astro_sunset:Loe,sch_astro_sunsetStart:goe,sch_at:joe,sch_desc_atTime:yoe,sch_desc_everyDay:Toe,sch_desc_everyHour:Doe,sch_desc_everyMinute:doe,sch_desc_everyMonth:hoe,sch_desc_everyNDay:zoe,sch_desc_everyNHours:woe,sch_desc_everyNMinutes:Ioe,sch_desc_everyNMonths:Coe,sch_desc_everyNWeeks:poe,sch_desc_everyNYears:Aoe,sch_desc_everyWeek:moe,sch_desc_everyYear:foe,sch_desc_intervalFromTo:Ooe,sch_desc_never:Eoe,sch_desc_onDate:_oe,sch_desc_onDates:xoe,sch_desc_onEveryDate:Soe,sch_desc_onMonth:koe,sch_desc_onMonths:voe,sch_desc_onWeekday:Yoe,sch_desc_onWeekdays:Qoe,sch_desc_onWeekends:boe,sch_desc_onWorkdays:Uoe,sch_desc_onceInPast:$oe,sch_desc_once_on:Poe,sch_desc_validFrom:Woe,sch_desc_validFromTo:Joe,sch_desc_validTo:Boe,sch_every:Roe,sch_exactTime:Foe,sch_from:Goe,sch_fromTo:Hoe,sch_intervalTime:Voe,sch_invert:Zoe,sch_no_one:Xoe,sch_on:Koe,sch_period:qoe,sch_periodDaily:ene,sch_periodDates:tne,sch_periodDay:sne,sch_periodEvery:ine,sch_periodEveryDay:rne,sch_periodEveryMonth:one,sch_periodEveryWeek:nne,sch_periodEveryYear:ane,sch_periodHours:Mne,sch_periodMinutes:cne,sch_periodMonth:une,sch_periodMonthly:lne,sch_periodOnce:Nne,sch_periodSpecificMonths:Lne,sch_periodWeek:gne,sch_periodWeekdays:jne,sch_periodWeekend:yne,sch_periodWeekly:Tne,sch_periodWorkdays:Dne,sch_periodYear:dne,sch_periodYearly:hne,sch_specificTime:zne,sch_time:wne,sch_to:Ine,sch_valid:Cne,sch_validFrom:pne,sch_validTo:Ane,sch_wholeDay:mne,sch_yearEveryMonth:fne},Ene="Дії",_ne="Додайте",xne="Скасувати",Sne="Категорії",kne="Перевірено",vne="Видалити",Yne="Закрити",Qne="Комерційний",bne="Налаштувати",Une="Підключено",$ne="Продовжити",Pne="Скопійовано",Wne="Створити",Jne="Урожай",Bne="Delete",Rne="Видалити",Fne="Відкинути",Gne="Відключено",Hne="Помилка",Vne="фільтр",Zne="П'ятниця",Xne="Широта",Kne="Вийти",qne="Довгота",eae="повідомлення",tae="понеділок",sae="Ім'я",iae="Об'єкти",rae="В порядку",oae="Продукт",nae="Перейменувати/Перемістити/Копіювати",aae="Повторіть",Mae="Замінити",cae="Корінь",uae="Субота",lae="зберегти",Nae="Вибране",Lae="держави",gae="неділя",jae="четвер",yae="Мітка часу",Tae="вівторок",Dae="оновлення",dae="Дійсний до",hae="Значення",zae="Версія",wae="Середа",Iae="Ширина",Cae="Так",pae="інший",Aae="Кожен може читати об'єкт",mae="Кожен може читати стан",fae="Кожен може написати об'єкт",Oae="Кожен може написати стан",Eae="Група може читати об'єкт",_ae="Група може читати стан",xae="Група може писати об'єкт",Sae="Група може писати стан",kae="Власник може читати об'єкт",vae="Власник може читати стан",Yae="Власник може написати об'єкт",Qae="Власник може написати стан",bae="кнопки",Uae="Змінено з",$ae="закрити",Pae="Створіть логічний стан",Wae="Створити канал",Jae="Створити пристрій",Bae="Створити номерний стан",Rae="Створити состояние",Fae="Створити рядковий стан",Gae="днів",Hae="О",Vae="пн",Zae="Sa",Xae="Нд",Kae="чт",qae="вт",eMe="ми",tMe="Експертний режим",sMe="НЕПРАВДА",iMe="Всі файли",rMe="Аудіо",oMe="Код/JSON",nMe="Зображення",aMe="текст",MMe="відео",cMe="Налаштування",uMe="без",lMe="функція",NMe="ID",LMe="Ім'я",gMe="Роль",jMe="Кімната",yMe="Тип",TMe="Недійсні налаштування",DMe="Остання зміна",dMe="локально",hMe="квіт",zMe="серп",wMe="груд",IMe="лютий",CMe="січня",pMe="лип",AMe="черв",mMe="травень",fMe="березень",OMe="Листопад",EMe="жовт",_Me="вер",xMe="квіт",SMe="серп",kMe="груд",vMe="лютий",YMe="січня",QMe="лип",bMe="черв",UMe="травень",$Me="березень",PMe="Листопад",WMe="жовт",JMe="вер",BMe="немає",RMe="Об'єкт змінено",FMe="Об'єкт востаннє змінено о",GMe="Налаштування з іншого адаптера %s",HMe="Код якості",VMe="повторити",ZMe="Щоб вибрати папку, просто клацніть папку, утримуючи клавішу «Shift».",XMe="Показати все",KMe="Стан змінено на",qMe="Об'єкт змінено з",ece="Мітка часу",tce="Визнано",sce="коментар",ice="Скопіюйте значення стану",rce="Утримуйте клавішу Cltr/⌘, щоб відкрити посилання",oce="Спеціальні налаштування",nce="Видалити об'єкт",ace="Редагувати об'єкт",Mce="Відредагуйте значення стану",cce="Термін дії закінчується через",uce="Від",lce="Востаннє змінено",Nce="якість",Lce="Позначка часу",gce="Користувач",jce="Значення",yce="ПРАВДА",Tce="Значення",Dce="Попередження: завдання CRON виконуватиметься щохвилини протягом зазначеного періоду!",dce="Попередження: завдання CRON виконуватиметься кожну секунду протягом зазначеного періоду!",hce="CRON",zce="Дата",wce="дати",Ice="День",Cce="День тижня",pce="кожен",Ace="кожні N днів",mce="кожен N-й день тижня",fce="кожні N днів тижня",Oce="кожні N годин",Ece="кожні N хвилин",_ce="кожні N місяців",xce="кожні N секунд",Sce="кожен день",kce="кожен день тижня",vce="кожен день тижня",Yce="щогодини",Qce="кожну хвилину",bce="щомісяця",Uce="кожна секунда",$ce="Від",Pce="години",Wce="Інтервал",Jce="Інтервал між",Bce="Недійсний CRON",Rce="хвилин",Fce="місяців",Gce="Один раз",Hce="Крапка",Vce="секунд",Zce="просто",Xce="Конкретний час",Kce="конкретні дати",qce="конкретний день (дні) тижня",eue="конкретний день тижня",tue="конкретні години",sue="конкретні хвилини",iue="конкретні місяці",rue="конкретні секунди",oue="час",nue="до",aue="майстер",Mue="все",cue="Астродень",uue="Астро ніч",lue="Світанок",Nue="Сутінки",Lue="Золота година",gue="Кінець золотої години",jue="Надір",yue="Морський світанок",Tue="Морські сутінки",Due="ніч",due="Кінець ночі",hue="Сонячний полудень",zue="Схід сонця",wue="Кінець сходу сонця",Iue="Захід сонця",Cue="Початок заходу сонця",pue="в",Aue="в %s",mue="кожен день",fue="щогодини",Oue="кожну хвилину",Eue="щомісяця",_ue="кожен %s день",xue="кожні %s годин",Sue="кожні %s хвилин",kue="кожні %s місяців",vue="кожні %s тижнів",Yue="кожні %s років",Que="щотижня",bue="щороку",Uue="від %s до %s",$ue="ніколи",Pue="на %s з %s",Wue="на %s і %s з",Jue="на кожну дату",Bue="%s",Rue="%s і %s",Fue="на %s",Gue="на %s і %s",Hue="на вихідних",Vue="в робочі дні",Zue="більше не виконуватиметься, оскільки запуск у минулому",Xue="на %s",Kue="від %s",que="Виконати від до",ele="до %s",tle="кожен",sle="Конкретний час",ile="від",rle="Від до",ole="Час інтервалу",nle="інвертувати",ale="немає",Mle="на",cle="Крапка",ule="Щодня",lle="дати",Nle="День",Lle="кожен",gle="Кожен день",jle="Щомісяця",yle="Щотижня",Tle="Щороку",Dle="години",dle="хвилин",hle="місяць",zle="Щомісяця",wle="Один раз",Ile="Конкретні місяці",Cle="тиждень",ple="будні",Ale="Вихідні",mle="Щотижня",fle="робочі дні",Ole="рік",Ele="щорічно",_le="Конкретний час",xle="час",Sle="до",kle="Дійсний",vle="від",Yle="до",Qle="Цілий день",ble="щомісяця",Ule={"ra_%s links from aliases":"%s посилань із псевдонімів","ra_%s object(s) processed":"Оброблено %s об’єктів","ra_%s was imported":"%s було імпортовано","ra_Accept license":"Прийняти ліцензію",ra_Actions:Ene,"ra_Add new child object to selected parent":"Додати новий дочірній об’єкт до вибраного батьківського","ra_Add objects tree from JSON file":"Додайте дерево об’єктів із файлу JSON","ra_Add row":"Додати рядок","ra_Advanced options":"Розширені опції","ra_All items are filtered out":"Усі елементи відфільтровано","ra_All objects":"Всі об'єкти",ra_Append:_ne,"ra_Append %s entries or replace existing?":"Додати %s записів чи замінити наявні?","ra_Append or replace?":"Додати чи замінити?","ra_Are you sure?":"Ти впевнений?","ra_Auto (no custom columns)":"Автоматично (без спеціальних стовпців)","ra_Back to %s":"Назад до %s","ra_Background image":"Фонове зображення",ra_Cancel:xne,"ra_Cannot add items with set filter":"Неможливо додати елементи зі встановленим фільтром","ra_Cannot decode license":"Неможливо розшифрувати ліцензію","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Неможливо визначити положення: системні налаштування порожні, а визначення GPS вимкнено в браузері",'ra_Cannot find "%s"':'Не вдається знайти "%s"','ra_Cannot read "%s"':'Неможливо прочитати "%s"',"ra_Cannot read licenses: %s":"Неможливо прочитати ліцензії: %s","ra_Cannot retrieve options, as instance is offline":"Неможливо отримати параметри, оскільки екземпляр офлайн","ra_Cannot update attribute, because not found in the object":"Неможливо оновити атрибут, оскільки його не знайдено в об’єкті","ra_Cannot upload":"Неможливо завантажити",ra_Categories:Sne,"ra_Chained certificate":"Прикутий сертифікат","ra_Change color theme":"Змінити кольорову тему","ra_Changed from":"Змінено з","ra_Channel → State":"Канал → Стан","ra_Check license":"Перевірити ліцензію",ra_Checked:kne,ra_Clear:vne,"ra_Clear filter":"Очистити фільтр","ra_Clear icon":"Очистити значок","ra_Click to see in full size":"Натисніть, щоб побачити в повному розмірі","ra_Click to show":"Натисніть, щоб показати","ra_Clone current row":"Клонувати поточний рядок",ra_Close:Yne,"ra_Collapse all nodes":"Згорнути всі вузли","ra_Collapse one step node":"Згорнути на один рівень",ra_Commercial:Qne,ra_Configure:bne,"ra_Configure visible columns":"Налаштувати видимі стовпці","ra_Confirm deletion of %s":"Підтвердити видалення %s",ra_Connected:Une,ra_Continue:$ne,ra_Copied:Pne,"ra_Copied %s":'Скопійовано "%s"',"ra_Copy content":"Скопіюйте вміст",ra_Create:Wne,"ra_Create alias":"Створити псевдонім","ra_Create folder":"Створити папку","ra_Create new folder in %s":"Створіть нову папку в %s",ra_Crop:Jne,"ra_Define CRON...":"Визначити CRON...","ra_Define functions":"Визначити функції","ra_Define rooms":"Визначте кімнати","ra_Define schedule":"Визначити розклад","ra_Define schedule...":"Визначити розклад...",ra_Del:Bne,ra_Delete:Rne,"ra_Delete current row":"Видалити поточний рядок","ra_Deselect all":"Скасувати вибір усіх","ra_Device → Channel → State":"Пристрій → Канал → Стан","ra_Disable/Enable translation":"Вимкнути/Увімкнути переклад",ra_Discard:Fne,ra_Disconnected:Gne,"ra_Do not ask for next 2 hours in this session":"Не запитуйте про наступні 2 години цього сеансу","ra_Do not export values of states":"Не експортуйте значення станів","ra_Do not use let's encrypt":"Не використовуйте let's encrypt","ra_Docker is not available":"Докер недоступний","ra_Docker is not installed or not running":"Docker не встановлено або не працює","ra_Double click to reset table layout":"Двічі клацніть, щоб скинути макет таблиці","ra_Drag 'n' drop some files here, or click to select files":"Перетягніть деякі файли сюди або натисніть, щоб вибрати файли","ra_Drop file here":"Перетягніть файл сюди","ra_Drop the files here...":"Перетягніть файл сюди...","ra_Duplicate name":"Повторюване ім'я","ra_Edit ACL":"Редагувати ACL","ra_Edit alias":"Редагувати псевдонім","ra_Edit custom config":"Редагувати спеціальну конфігурацію","ra_Edit full path":"Редагувати повний шлях","ra_Edit function":"функція редагування","ra_Edit object field":"Поле редагування об'єкта","ra_Edit role":"Редагувати роль","ra_Edit room":"Редагувати кімнату","ra_Edit value":"Редагувати значення","ra_Enter the code from that page here":"Введіть тут код з цієї сторінки",ra_Error:Hne,"ra_Expand all nodes":"Розгорнути всі вузли","ra_Expand one step node":"Розгорніть один рівень","ra_Expand/Collapse card":"Розгорнути/Згорнути картку","ra_Export configuration section":"Розділ конфігурації експорту","ra_Export data to %s file":"Експортувати дані у файл %s","ra_Failed to open JSON File":"Не вдалося відкрити файл JSON","ra_Fallback custom certificates":"Запасні спеціальні сертифікати","ra_File is too big. Max %sk allowed. Try use SVG.":"Файл завеликий. Максимально дозволено %sk. Спробуйте використовувати SVG.",ra_Filter:Vne,"ra_Filter and Data Actions":"Фільтр і дії з даними","ra_Filter files":"Фільтр файлів","ra_Folder name":"Назва папки","ra_Folder → Channel → State":"Папка → Канал → Стан","ra_Folder → Device → Channel → State":"Папка → Пристрій → Канал → Стан","ra_Folder → State":"Папка → Стан","ra_Folders always first":"Папки завжди першими",ra_Friday:Zne,"ra_From file":"З файлу","ra_From text":"З тексту","ra_Get %s access":"Отримайте доступ %s","ra_Good luck":"Удачі","ra_Hide empty folders":"Приховати порожні папки","ra_If no file will be created in the folder, it will disappear after the browser closed":"Якщо в папці не буде створено файл, він зникне після закриття браузера","ra_If the button above does not work, you can authorize manually this app by visiting this url":"Якщо кнопка вище не працює, ви можете авторизувати цю програму вручну, перейшовши за цим посиланням","ra_Import and add configuration section":"Розділ імпорту та додавання конфігурації","ra_Import and replace configuration section":"Розділ імпорту та заміни конфігурації","ra_Import data from %s file":"Імпортувати дані з файлу %s","ra_Import from %s":"Імпортувати з %s","ra_Instance %s is alive":"Примірник %s живий","ra_Instance %s is not alive":"Примірник %s не живий","ra_Instance is not alive":"Примірник не живий","ra_Invalid CRON":"Недійсний CRON","ra_Invalid JSON":"Недійсний JSON","ra_Invalid JSON file.":"Недійсний JSON-файл.","ra_Invalid JSON format. Expected an array.":"Недійсний формат JSON. Очікується масив.","ra_Invalid answer from server":"Недійсна відповідь від сервера","ra_Invalid parent folder!":"Недійсна батьківська папка!","ra_Invalid structure":"Недійсна структура","ra_JSON editor":"Редактор JSON","ra_Last change":"Остання зміна",ra_Latitude:Xne,"ra_License %s":"Ліцензія %s","ra_License agreement":"Ліцензійна угода","ra_License does not exist":"Ліцензії не існує","ra_License expired on %s":"Термін дії ліцензії закінчився %s",'ra_License for other product "%s"':'Ліцензія на інший продукт "%s"',"ra_License is for version %s, but required version is %s.":"Ліцензія для версії %s, але потрібна версія %s.","ra_License must be converted":"Ліцензію необхідно конвертувати до новішої версії. Ви можете зробити це у своєму профілі на iobroker.net.","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Ліцензія не знайдена в менеджері ліцензій. Хочете оновити ліцензії з iobroker.net?","ra_Listen on all IPs":"Прослуховування на всіх IP","ra_Load configuration from file":"Завантажити конфігурацію з файлу",ra_Logout:Kne,ra_Longitude:qne,'ra_May not trigger "updateLicenses"':'Може не запускати "updateLicenses"',ra_Message:eae,ra_Monday:tae,"ra_Move down":"Рухатися вниз","ra_Move up":"Рухатися вгору",ra_Name:sae,"ra_No data found in file":"Немає даних у файлі","ra_No one license found in license manager":"У менеджері ліцензій не знайдено жодної ліцензії","ra_No response from admin":"Немає відповіді від адміністратора","ra_No response from the backend":"Немає відповіді від сервера",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"Неексперти можуть створювати нові об’єкти лише в «0_userdata.0» або «alias.0».","ra_Not a number":"Не номер","ra_OAuth Client ID":"Ідентифікатор клієнта OAuth","ra_OAuth Client secret":"Секрет клієнта OAuth",ra_Objects:iae,ra_Ok:rae,"ra_On weekdays":"В будні дні","ra_Only following structures of objects are available:":"Доступні тільки такі структури об'єктів:","ra_Only selected":"Тільки обрані","ra_Owner group":"Група власників","ra_Owner user":"Користувач-власник","ra_Passwords are not equal!":"Паролі не бувають рівними!","ra_Place your files here or click here to open the browse dialog":"Розмістіть свої файли тут або натисніть тут, щоб відкрити діалогове вікно перегляду","ra_Please allow popups in your browser for this page!":"Будь ласка, дозвольте спливаючі вікна у вашому браузері для цієї сторінки!","ra_Please confirm":"Будь-ласка підтвердіть","ra_Please create license":"Будь ласка, створіть ліцензію","ra_Please enter the license":"Будь ласка, введіть ліцензію","ra_Please select file...":"Виберіть файл...","ra_Please select object ID...":"Виберіть ідентифікатор об'єкта...","ra_Port could be used by %s":"Порт може використовуватися %s","ra_Port is already used by %s":"Порт уже використовується %s","ra_Press ENTER Key to add new item":"Натисніть клавішу ENTER, щоб додати новий елемент","ra_Private certificate":"Приватний сертифікат",ra_Product:oae,"ra_Public certificate":"Публічний сертифікат","ra_Quality code":"якість","ra_Refresh tree":"Оновити дерево","ra_Reload files":"Перезавантажте файли",ra_Rename_Move_Copy:nae,"ra_Renew %s access":"Поновити доступ %s",ra_Repeat:aae,ra_Replace:Mae,"ra_Request timed out":"Час запиту вичерпано","ra_Restrict to folder":"Обмежити папкою",ra_Root:cae,ra_Saturday:uae,ra_Save:lae,"ra_Save and close":"Зберегти та закрити","ra_Save configuration to file":"Зберегти конфігурацію у файл","ra_Save objects tree as JSON file":"Зберегти дерево об’єктів як файл JSON","ra_Select all":"Вибрати все","ra_Select color":"Виберіть колір","ra_Select predefined icon":"Виберіть попередньо визначений значок","ra_Select type of export":"Виберіть тип експорту",ra_Selected:Nae,"ra_Selected %s object(s)":"Вибрані об’єкти %s","ra_Serial number (UUID)":"Серійний номер (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':'Серійний номер (UUID) "%s" у ліцензії призначений для іншого пристрою.',"ra_Session will expire in %s seconds. Continue?":"Сеанс закінчиться через %s секунд. Продовжити?","ra_Show all folders":"Показати всі папки","ra_Show lines between rows":"Показувати лінії між рядками","ra_Show/Hide object descriptions":"Показати/Сховати описи об’єктів","ra_Show/hide filter input":"Показати/сховати введення фільтра","ra_Some data are not stored. Discard?":"Деякі дані не зберігаються. Відкинути?",ra_States:Lae,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"Авторизацію успішно пройшло. Токен дійсний до %s та буде автоматично поновлено.","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"Авторизацію успішно виконано. Токен дійсний до %s, але його термін дії може закінчитися, оскільки екземпляр не запущено.","ra_Suitable license not found in license manager":"Відповідна ліцензія не знайдена в менеджері ліцензій",ra_Sunday:gae,"ra_Suppress question for next %s minutes":"Приховати запитання на наступні %s хвилин","ra_System language":"Системна мова","ra_Take browser position":"Займіть позицію з браузера","ra_Take position from system settings":"Займіть позицію в налаштуваннях системи",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"Експерти можуть створювати об’єкти всюди, крім другого рівня (наприклад, «vis.0» або «javascript.0»).","ra_The page you are looking for was not found":"Сторінка, яку ви шукаєте, не знайдена","ra_The schedule will be executed every minute. Are you sure?":"Розклад буде виконуватися щохвилини. Ви впевнені?","ra_The schedule will be executed every second. Are you sure?":"Розклад буде виконуватися щосекунди. Ви впевнені?",ra_Thursday:jae,ra_Timestamp:yae,"ra_Toggle expert mode":"Перемкнути експертний режим","ra_Toggle the states view":"Перемкнути перегляд штатів","ra_Toggle view mode":"Перемкнути режим перегляду","ra_Too big":"Занадто великий","ra_Too small":"Занадто малий","ra_Transparent dialog":"Прозорий діалог",ra_Tuesday:Tae,"ra_Unknown error":"Невідома помилка","ra_Unknown error!":"Невідома помилка!",ra_Update:Dae,"ra_Upload file":"Завантажити файл","ra_Use all available let's encrypt certificates":"Використовуйте всі доступні сертифікати let's encrypt","ra_Use iobroker.acme adapter for letsencrypt certificates":"Використовуйте адаптер iobroker.acme для сертифікатів letsencrypt","ra_Use system settings for position":"Використовуйте системні налаштування для позиції","ra_Used system settings":"Використані системні налаштування","ra_User files":"Файли користувача",ra_ValidTill:dae,ra_Value:hae,ra_Version:zae,"ra_View file":"Переглянути файл","ra_View: %s":"Перегляд: %s",ra_Wednesday:wae,ra_Width:Iae,"ra_YAML editor":"Редактор YAML",ra_Yes:Cae,"ra_You can export all objects or just the selected branch.":"Ви можете експортувати всі об’єкти або лише вибрану гілку.","ra_You can filter entries by entering here some text":"Ви можете фільтрувати записи, ввівши тут певний текст","ra_You can use * as wildcard":"Ви можете використовувати * як символ підстановки",ra___different__:pae,ra_aclEveryone_read_object:Aae,ra_aclEveryone_read_state:mae,ra_aclEveryone_write_object:fae,ra_aclEveryone_write_state:Oae,ra_aclGroup_read_object:Eae,ra_aclGroup_read_state:_ae,ra_aclGroup_write_object:xae,ra_aclGroup_write_state:Sae,ra_aclOwner_read_object:kae,ra_aclOwner_read_state:vae,ra_aclOwner_write_object:Yae,ra_aclOwner_write_state:Qae,ra_buttons:bae,ra_changedFrom:Uae,ra_close:$ae,ra_create_boolean_state:Pae,ra_create_channel:Wae,ra_create_device:Jae,ra_create_number_state:Bae,ra_create_state:Rae,ra_create_string_state:Fae,ra_daysShortText:Gae,ra_dow_Fr:Hae,ra_dow_Mo:Vae,ra_dow_Sa:Zae,ra_dow_Su:Xae,ra_dow_Th:Kae,ra_dow_Tu:qae,ra_dow_We:eMe,ra_expertMode:tMe,ra_false:sMe,ra_fileType_all:iMe,ra_fileType_audio:rMe,ra_fileType_code:oMe,ra_fileType_images:nMe,ra_fileType_txt:aMe,ra_fileType_video:MMe,"ra_fileType_video,":"відео",ra_filter_customs:cMe,ra_filter_customs_without:uMe,ra_filter_func:lMe,ra_filter_id:NMe,ra_filter_name:LMe,ra_filter_role:gMe,ra_filter_room:jMe,ra_filter_type:yMe,"ra_import data from %s file":"Імпортувати дані з файлу %s",ra_invalidConfig:TMe,ra_lastChange:DMe,ra_locally:dMe,ra_month_Apr:hMe,ra_month_Aug:zMe,ra_month_Dec:wMe,ra_month_Feb:IMe,ra_month_Jan:CMe,ra_month_Jul:pMe,ra_month_Jun:AMe,ra_month_Mai:mMe,ra_month_Mar:fMe,ra_month_Nov:OMe,ra_month_Oct:EMe,ra_month_Sep:_Me,ra_months_Apr:xMe,ra_months_Aug:SMe,ra_months_Dec:kMe,ra_months_Feb:vMe,ra_months_Jan:YMe,ra_months_Jul:QMe,ra_months_Jun:bMe,ra_months_Mai:UMe,ra_months_Mar:$Me,ra_months_Nov:PMe,ra_months_Oct:WMe,ra_months_Sep:JMe,"ra_no confirm for 5 mins":"без підтвердження протягом 5 хв",ra_none:BMe,ra_object_changed_by:RMe,ra_object_changed_by_user:FMe,ra_otherConfig:GMe,ra_qualityCode:HMe,ra_repeat:VMe,ra_select_folder_hint:ZMe,ra_show_all:XMe,ra_state_changed_by:KMe,ra_state_changed_from:qMe,ra_timestamp:ece,ra_tooltip_ack:tce,ra_tooltip_comment:sce,ra_tooltip_copyState:ice,ra_tooltip_ctrlForLink:rce,ra_tooltip_customConfig:oce,ra_tooltip_deleteObject:nce,ra_tooltip_editObject:ace,ra_tooltip_editState:Mce,ra_tooltip_expire:cce,ra_tooltip_from:uce,ra_tooltip_lc:lce,ra_tooltip_quality:Nce,ra_tooltip_ts:Lce,ra_tooltip_user:gce,ra_tooltip_value:jce,ra_true:yce,"ra_use seconds":"використовуйте секунди",ra_val:Tce,"ra_via internet":"через інтернет",ra_warning_every_minute:Dce,ra_warning_every_second:dce,sc_cron:hce,sc_date:zce,sc_dates:wce,sc_dow:Ice,sc_dows:Cce,sc_every:pce,sc_everyN_dates:Ace,sc_everyN_dow:mce,sc_everyN_dows:fce,sc_everyN_hours:Oce,sc_everyN_minutes:Ece,sc_everyN_months:_ce,sc_everyN_seconds:xce,sc_every_dates:Sce,sc_every_dow:kce,sc_every_dows:vce,sc_every_hours:Yce,sc_every_minutes:Qce,sc_every_months:bce,sc_every_seconds:Uce,sc_from:$ce,sc_hours:Pce,sc_interval:Wce,sc_intervalBetween:Jce,sc_invalid_cron:Bce,sc_minutes:Rce,sc_months:Fce,sc_once:Gce,sc_period:Hce,sc_seconds:Vce,sc_simple:Zce,sc_specific:Xce,sc_specific_dates:Kce,sc_specific_dow:qce,sc_specific_dows:eue,sc_specific_hours:tue,sc_specific_minutes:sue,sc_specific_months:iue,sc_specific_seconds:rue,sc_time:oue,sc_to:nue,sc_wizard:aue,sch_all:Mue,sch_astroDay:cue,sch_astroNight:uue,sch_astro_dawn:lue,sch_astro_dusk:Nue,sch_astro_goldenHour:Lue,sch_astro_goldenHourEnd:gue,sch_astro_nadir:jue,sch_astro_nauticalDawn:yue,sch_astro_nauticalDusk:Tue,sch_astro_night:Due,sch_astro_nightEnd:due,sch_astro_solarNoon:hue,sch_astro_sunrise:zue,sch_astro_sunriseEnd:wue,sch_astro_sunset:Iue,sch_astro_sunsetStart:Cue,sch_at:pue,sch_desc_atTime:Aue,sch_desc_everyDay:mue,sch_desc_everyHour:fue,sch_desc_everyMinute:Oue,sch_desc_everyMonth:Eue,sch_desc_everyNDay:_ue,sch_desc_everyNHours:xue,sch_desc_everyNMinutes:Sue,sch_desc_everyNMonths:kue,sch_desc_everyNWeeks:vue,sch_desc_everyNYears:Yue,sch_desc_everyWeek:Que,sch_desc_everyYear:bue,sch_desc_intervalFromTo:Uue,sch_desc_never:$ue,sch_desc_onDate:Pue,sch_desc_onDates:Wue,sch_desc_onEveryDate:Jue,sch_desc_onMonth:Bue,sch_desc_onMonths:Rue,sch_desc_onWeekday:Fue,sch_desc_onWeekdays:Gue,sch_desc_onWeekends:Hue,sch_desc_onWorkdays:Vue,sch_desc_onceInPast:Zue,sch_desc_once_on:Xue,sch_desc_validFrom:Kue,sch_desc_validFromTo:que,sch_desc_validTo:ele,sch_every:tle,sch_exactTime:sle,sch_from:ile,sch_fromTo:rle,sch_intervalTime:ole,sch_invert:nle,sch_no_one:ale,sch_on:Mle,sch_period:cle,sch_periodDaily:ule,sch_periodDates:lle,sch_periodDay:Nle,sch_periodEvery:Lle,sch_periodEveryDay:gle,sch_periodEveryMonth:jle,sch_periodEveryWeek:yle,sch_periodEveryYear:Tle,sch_periodHours:Dle,sch_periodMinutes:dle,sch_periodMonth:hle,sch_periodMonthly:zle,sch_periodOnce:wle,sch_periodSpecificMonths:Ile,sch_periodWeek:Cle,sch_periodWeekdays:ple,sch_periodWeekend:Ale,sch_periodWeekly:mle,sch_periodWorkdays:fle,sch_periodYear:Ole,sch_periodYearly:Ele,sch_specificTime:_le,sch_time:xle,sch_to:Sle,sch_valid:kle,sch_validFrom:vle,sch_validTo:Yle,sch_wholeDay:Qle,sch_yearEveryMonth:ble},$le="操作",Ple="附加",Wle="取消",Jle="类别",Ble="勾选",Rle="删除",Fle="关",Gle="商业的",Hle="配置",Vle="连接的",Zle="继续",Xle="复制的",Kle="创建",qle="庄稼",e0e="Delete",t0e="删除",s0e="丢弃",i0e="断开连接",r0e="错误",o0e="筛选",n0e="星期五",a0e="纬度",M0e="登出",c0e="经度",u0e="信息",l0e="周一",N0e="姓名",L0e="对象",g0e="好",j0e="产品",y0e="重命名/移动/复制",T0e="重复",D0e="代替",d0e="根",h0e="周六",z0e="保存",w0e="已选",I0e="状态",C0e="星期日",p0e="周四",A0e="时间戳记",m0e="周二",f0e="更新资料",O0e="有效期至",E0e="值",_0e="版本",x0e="周三",S0e="宽度",k0e="是的",v0e="不同的",Y0e="每个人都可以阅读对象",Q0e="每个人都可以阅读状态",b0e="每个人都可以写对象",U0e="每个人都可以写状态",$0e="组可以读取对象",P0e="群组可以读取状态",W0e="组可以写对象",J0e="组可以写状态",B0e="所有者可以读取对象",R0e="所有者可以读取状态",F0e="所有者可以写对象",G0e="所有者可以写状态",H0e="纽扣",V0e="更改为",Z0e="关闭",X0e="创建布尔状态",K0e="创建频道",q0e="创建设备",eNe="创建号码状态",tNe="创建状态",sNe="创建字符串状态",iNe="天",rNe="r",oNe="莫",nNe="萨",aNe="苏",MNe="Th",cNe="Tu",uNe="我们",lNe="专家模式",NNe="错误的",LNe="所有文件",gNe="声音的",jNe="代码/JSON",yNe="图片",TNe="文本",DNe="视频",dNe="设定值",hNe="没有",zNe="功能",wNe="ID",INe="名称",CNe="角色",pNe="房间",ANe="类型",mNe="无效的设定",fNe="最后一次变更",ONe="本地",ENe="4月",_Ne="八月",xNe="十二月",SNe="二月",kNe="简",vNe="七月",YNe="君",QNe="迈",bNe="三月",UNe="十一月",$Ne="十月",PNe="九月",WNe="4月",JNe="八月",BNe="十二月",RNe="二月",FNe="简",GNe="七月",HNe="君",VNe="迈",ZNe="三月",XNe="十一月",KNe="十月",qNe="九月",e4e="没有任何",t4e="物件变更者",s4e="对象上次更改时间为",i4e="来自其他适配器%s的设置",r4e="质量代码",o4e="重复",n4e="要选择文件夹,只需按住“shift”键单击文件夹即可。",a4e="显示全部",M4e="状态由",c4e="对象已从更改",u4e="时间戳记",l4e="致谢国旗",N4e="评论",L4e="复制状态值",g4e="按住 Cltr/⌘ 键打开链接",j4e="自定义设置",y4e="删除物件",T4e="编辑物件",D4e="编辑状态值",d4e="有效期:",h4e="从",z4e="最后改变了",w4e="质量",I4e="时间戳",C4e="用户",p4e="值",A4e="真的",m4e="值",f4e="警告:CRON 作业将在指定期间内每分钟运行一次!",O4e="警告:CRON 作业将在指定期间内每秒运行一次!",E4e="周期任务",_4e="日期",x4e="日",S4e="天",k4e="星期",v4e="每",Y4e="每N天",Q4e="每周的第 N 天",b4e="每周N天",U4e="每N小时一次",$4e="每N分钟",P4e="每N个月",W4e="每N秒",J4e="每天",B4e="一周的每一天",R4e="一周的每一天",F4e="每小时",G4e="每分钟",H4e="每月",V4e="每秒",Z4e="从",X4e="小时",K4e="间隔",q4e="间隔时间",eLe="无效的 CRON",tLe="分钟",sLe="月",iLe="一次",rLe="周期",oLe="秒",nLe="简单模式",aLe="特定的时间",MLe="特定的日子",cLe="一周中的特定日子",uLe="特定的一周",lLe="特定的小时",NLe="特定的分钟",LLe="特定的月份",gLe="特定的描述",jLe="时间",yLe="至",TLe="向导模式",DLe="全选",dLe="天文白天",hLe="天文夜晚",zLe="黎明",wLe="黄昏",ILe="黄金时段",CLe="黄金时段结束",pLe="天底",ALe="航海黎明",mLe="航海黄昏",fLe="夜晚",OLe="夜晚结束",ELe="正午",_Le="日出",xLe="日出结束",SLe="日落",kLe="日落开始",vLe="在",YLe="的%s",QLe="每天",bLe="每小时",ULe="每分钟",$Le="每月",PLe="每%s天",WLe="每%s小时",JLe="每%s分钟",BLe="每%s月",RLe="每%s周",FLe="每%s年",GLe="每周",HLe="每年",VLe="从%s到%s",ZLe="决不",XLe="在%s的%s上",KLe="在%s和%s上",qLe="在每天",ege="%s",tge="%s和%s",sge="在%s上",ige="在%s和%s上",rge="在周末",oge="在工作日",nge="将不再执行,因为起始时间已经是过去的时间了。",age="在%s上",Mge="来自%s",cge="从执行到",uge="到%s",lge="每",Nge="特定的时间",Lge="从",gge="从到",jge="间隔时间",yge="倒置",Tge="取消全选",Dge="的",dge="周期",hge="每天",zge="日期",wge="天",Ige="每",Cge="每天",pge="每月",Age="每周",mge="每年",fge="小时",Oge="分钟",Ege="月",_ge="每月一次",xge="一次",Sge="特定的月份",kge="周",vge="工作日",Yge="周末",Qge="每周",bge="工作日",Uge="年",$ge="每年",Pge="特定的时间",Wge="时间",Jge="至",Bge="生效",Rge="从",Fge="至",Gge="一整天",Hge="每月",Vge={"ra_%s links from aliases":"来自别名的 %s 个链接","ra_%s object(s) processed":"已处理%s个对象","ra_%s was imported":"对象已导入","ra_Accept license":"接受许可",ra_Actions:$le,"ra_Add new child object to selected parent":"将新的子对象添加到选定的父对象","ra_Add objects tree from JSON file":"从JSON文件添加对象树","ra_Add row":"添加行","ra_Advanced options":"高级选项","ra_All items are filtered out":"所有项目都被过滤掉","ra_All objects":"所有对象",ra_Append:Ple,"ra_Append %s entries or replace existing?":"追加 %s 条目还是替换现有条目?","ra_Append or replace?":"追加还是替换?","ra_Are you sure?":"你确定吗?","ra_Auto (no custom columns)":"自动(无自定义列)","ra_Back to %s":"返回“%s”","ra_Background image":"背景图像",ra_Cancel:Wle,"ra_Cannot add items with set filter":"无法使用设置过滤器添加项目","ra_Cannot decode license":"无法解码许可证","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"无法确定位置:系统设置为空且浏览器中禁用了 GPS 检测",'ra_Cannot find "%s"':"找不到“%s”",'ra_Cannot read "%s"':"无法阅读“%s”","ra_Cannot read licenses: %s":"无法读取许可证:%s","ra_Cannot retrieve options, as instance is offline":"无法检索选项,因为实例处于脱机状态","ra_Cannot update attribute, because not found in the object":"无法更新属性,因为在对象中找不到","ra_Cannot upload":"无法上传",ra_Categories:Jle,"ra_Chained certificate":"链式证书","ra_Change color theme":"更改颜色主题","ra_Changed from":"更改为","ra_Channel → State":"频道→状态","ra_Check license":"检查许可证",ra_Checked:Ble,ra_Clear:Rle,"ra_Clear filter":"清除筛选","ra_Clear icon":"清除图标","ra_Click to see in full size":"点击查看完整尺寸","ra_Click to show":"点击显示","ra_Clone current row":"克隆当前行",ra_Close:Fle,"ra_Collapse all nodes":"收合所有节点","ra_Collapse one step node":"折叠一级",ra_Commercial:Gle,ra_Configure:Hle,"ra_Configure visible columns":"配置可见列","ra_Confirm deletion of %s":"确认删除%s",ra_Connected:Vle,ra_Continue:Zle,ra_Copied:Xle,"ra_Copied %s":'复制的"%s"',"ra_Copy content":"复制内容",ra_Create:Kle,"ra_Create alias":"创建别名","ra_Create folder":"创建文件夹","ra_Create new folder in %s":"在%s中创建新文件夹",ra_Crop:qle,"ra_Define CRON...":"定义 CRON...","ra_Define functions":"定义功能","ra_Define rooms":"定义房间","ra_Define schedule":"定义时间表","ra_Define schedule...":"定义时间表...",ra_Del:e0e,ra_Delete:t0e,"ra_Delete current row":"删除当前行","ra_Deselect all":"全部取消选择","ra_Device → Channel → State":"设备→频道→状态","ra_Disable/Enable translation":"禁用/启用翻译",ra_Discard:s0e,ra_Disconnected:i0e,"ra_Do not ask for next 2 hours in this session":"本次会话中不要询问接下来的 2 个小时","ra_Do not export values of states":"不导出状态值","ra_Do not use let's encrypt":"不要使用让我们加密","ra_Docker is not available":"Docker 不可用","ra_Docker is not installed or not running":"Docker 未安装或未运行","ra_Double click to reset table layout":"双击重置表格布局","ra_Drag 'n' drop some files here, or click to select files":"将一些文件拖放到此处,或单击以选择文件","ra_Drop file here":"将档案放在这里","ra_Drop the files here...":"把文件放在这里...","ra_Duplicate name":"名称重复","ra_Edit ACL":"编辑访问控制列表","ra_Edit alias":"编辑别名","ra_Edit custom config":"编辑自定义配置","ra_Edit full path":"编辑完整路径","ra_Edit function":"编辑功能","ra_Edit object field":"编辑对象字段","ra_Edit role":"编辑角色","ra_Edit room":"编辑室","ra_Edit value":"编辑值","ra_Enter the code from that page here":"在此处输入该页面的代码",ra_Error:r0e,"ra_Expand all nodes":"展开所有节点","ra_Expand one step node":"扩大一级","ra_Expand/Collapse card":"展开/折叠卡","ra_Export configuration section":"导出配置部分","ra_Export data to %s file":"将数据导出到 %s 文件","ra_Failed to open JSON File":"无法打开JSON文件","ra_Fallback custom certificates":"后备自定义证书","ra_File is too big. Max %sk allowed. Try use SVG.":"文件太大。允许的最大字节%s数。尝试使用 SVG。",ra_Filter:o0e,"ra_Filter and Data Actions":"过滤和数据操作","ra_Filter files":"过滤文件","ra_Folder name":"文件夹名称","ra_Folder → Channel → State":"文件夹→频道→状态","ra_Folder → Device → Channel → State":"文件夹→设备→频道→状态","ra_Folder → State":"文件夹→状态","ra_Folders always first":"资料夹永远优先",ra_Friday:n0e,"ra_From file":"从文件","ra_From text":"文本","ra_Get %s access":"获取 %s 访问权限","ra_Good luck":"祝你好运","ra_Hide empty folders":"隐藏空文件夹","ra_If no file will be created in the folder, it will disappear after the browser closed":"如果在该文件夹中未创建任何文件,则该文件将在浏览器关闭后消失","ra_If the button above does not work, you can authorize manually this app by visiting this url":"如果上面的按钮不起作用,您可以通过访问此网址手动授权此应用","ra_Import and add configuration section":"导入并添加配置部分","ra_Import and replace configuration section":"导入和替换配置部分","ra_Import data from %s file":"从 %s 文件导入数据","ra_Import from %s":"从 %s 导入","ra_Instance %s is alive":"实例 %s 是活动的","ra_Instance %s is not alive":"实例 %s 不存在","ra_Instance is not alive":"实例不存在","ra_Invalid CRON":"无效的 CRON","ra_Invalid JSON":"JSON 无效","ra_Invalid JSON file.":"无效的JSON文件。","ra_Invalid JSON format. Expected an array.":"JSON格式无效。应为数组。","ra_Invalid answer from server":"来自服务器的无效答案","ra_Invalid parent folder!":"父文件夹无效!","ra_Invalid structure":"结构无效","ra_JSON editor":"JSON 编辑器","ra_Last change":"最后一次变更",ra_Latitude:a0e,"ra_License %s":"许可证 %s","ra_License agreement":"许可协议","ra_License does not exist":"许可证不存在","ra_License expired on %s":"许可证已于 %s 过期",'ra_License for other product "%s"':"其他产品“%s”的许可证","ra_License is for version %s, but required version is %s.":"许可证适用于版本 %s,但所需版本为 %s。","ra_License must be converted":"许可证必须转换为更新版本。您可以在 iobroker.net 个人资料中执行此操作。","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"在许可证管理器中找不到许可证。您要从 iobroker.net 更新许可证吗?","ra_Listen on all IPs":"监听所有IP","ra_Load configuration from file":"从文件加载配置",ra_Logout:M0e,ra_Longitude:c0e,'ra_May not trigger "updateLicenses"':"可能不会触发“updateLicenses”",ra_Message:u0e,ra_Monday:l0e,"ra_Move down":"下移","ra_Move up":"提升",ra_Name:N0e,"ra_No data found in file":"文件中未找到数据","ra_No one license found in license manager":"许可证管理器中未找到任何许可证","ra_No response from admin":"管理员没有回应","ra_No response from the backend":"后端无响应",'ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".':"非专家只能在“ 0_userdata.0”或“ alias.0”中创建新对象。","ra_Not a number":"不是数字","ra_OAuth Client ID":"OAuth客户端ID","ra_OAuth Client secret":"OAuth 客户端密钥",ra_Objects:L0e,ra_Ok:g0e,"ra_On weekdays":"在工作日","ra_Only following structures of objects are available:":"仅以下对象结构可用:","ra_Only selected":"只选择","ra_Owner group":"所有者组","ra_Owner user":"所有者用户","ra_Passwords are not equal!":"密码不相等!","ra_Place your files here or click here to open the browse dialog":"将文件放在此处或单击此处打开浏览对话框","ra_Please allow popups in your browser for this page!":"请允许浏览器弹出此页面!","ra_Please confirm":"请确认","ra_Please create license":"请创建许可证","ra_Please enter the license":"请输入许可证","ra_Please select file...":"请选择文件...","ra_Please select object ID...":"请选择对象ID ...","ra_Port could be used by %s":"%s 可以使用端口","ra_Port is already used by %s":"端口已被 %s 使用","ra_Press ENTER Key to add new item":"按 ENTER 键添加新项目","ra_Private certificate":"私有证书",ra_Product:j0e,"ra_Public certificate":"公共证书","ra_Quality code":"质量代码","ra_Refresh tree":"刷新树","ra_Reload files":"重新载入文件",ra_Rename_Move_Copy:y0e,"ra_Renew %s access":"续订 %s 访问权限",ra_Repeat:T0e,ra_Replace:D0e,"ra_Request timed out":"请求超时","ra_Restrict to folder":"限制到文件夹",ra_Root:d0e,ra_Saturday:h0e,ra_Save:z0e,"ra_Save and close":"保存并关闭","ra_Save configuration to file":"将配置保存到文件","ra_Save objects tree as JSON file":"将对象树另存为JSON文件","ra_Select all":"全选","ra_Select color":"选择颜色","ra_Select predefined icon":"选择预定义图标","ra_Select type of export":"选择导出类型",ra_Selected:w0e,"ra_Selected %s object(s)":"选定的 %s 个对象","ra_Serial number (UUID)":"序列号 (UUID)",'ra_Serial number (UUID) "%s" in license is for other device.':"许可证中的序列号 (UUID)“%s”用于其他设备。","ra_Session will expire in %s seconds. Continue?":"会话将在 %s 秒后过期。是否继续?","ra_Show all folders":"显示所有文件夹","ra_Show lines between rows":"显示行之间的线","ra_Show/Hide object descriptions":"显示/隐藏对象描述","ra_Show/hide filter input":"显示/隐藏过滤器输入","ra_Some data are not stored. Discard?":"部分数据未存储。丢弃?",ra_States:I0e,"ra_Successfully authorized. Token valid till %s and will be automatically renewed.":"授权成功。令牌有效期至 %s,并将自动续订。","ra_Successfully authorized. Token valid till %s but it can expire as the instance is not running.":"授权成功。令牌有效期至 %s,但由于实例未运行,令牌可能会过期。","ra_Suitable license not found in license manager":"在许可证管理器中找不到合适的许可证",ra_Sunday:C0e,"ra_Suppress question for next %s minutes":"在接下来的%s分钟内取消提问","ra_System language":"系统语言","ra_Take browser position":"从浏览器获取位置","ra_Take position from system settings":"从系统设置中获取位置",'ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").':"专家可以在任何地方创建对象,但要从第二层开始(例如“ vis.0”或“ javascript.0”)。","ra_The page you are looking for was not found":"未找到您要查找的页面","ra_The schedule will be executed every minute. Are you sure?":"该计划将每分钟执行一次。您确定吗?","ra_The schedule will be executed every second. Are you sure?":"该计划将每秒执行一次。你确定吗?",ra_Thursday:p0e,ra_Timestamp:A0e,"ra_Toggle expert mode":"切换专家模式","ra_Toggle the states view":"切换状态视图","ra_Toggle view mode":"切换检视模式","ra_Too big":"太大","ra_Too small":"太小","ra_Transparent dialog":"透明对话框",ra_Tuesday:m0e,"ra_Unknown error":"未知错误","ra_Unknown error!":"未知错误!",ra_Update:f0e,"ra_Upload file":"上传文件","ra_Use all available let's encrypt certificates":"使用所有可用的让我们加密证书","ra_Use iobroker.acme adapter for letsencrypt certificates":"使用 iobroker.acme 适配器获取 letsencrypt 证书","ra_Use system settings for position":"使用系统设置定位","ra_Used system settings":"使用的系统设置","ra_User files":"用户档案",ra_ValidTill:O0e,ra_Value:E0e,ra_Version:_0e,"ra_View file":"查看文件","ra_View: %s":"查看:%s",ra_Wednesday:x0e,ra_Width:S0e,"ra_YAML editor":"YAML 编辑器",ra_Yes:k0e,"ra_You can export all objects or just the selected branch.":"您可以导出所有对象或仅导出选定的分支。","ra_You can filter entries by entering here some text":"您可以通过在此处输入一些文本来过滤条目","ra_You can use * as wildcard":"您可以使用 * 作为通配符",ra___different__:v0e,ra_aclEveryone_read_object:Y0e,ra_aclEveryone_read_state:Q0e,ra_aclEveryone_write_object:b0e,ra_aclEveryone_write_state:U0e,ra_aclGroup_read_object:$0e,ra_aclGroup_read_state:P0e,ra_aclGroup_write_object:W0e,ra_aclGroup_write_state:J0e,ra_aclOwner_read_object:B0e,ra_aclOwner_read_state:R0e,ra_aclOwner_write_object:F0e,ra_aclOwner_write_state:G0e,ra_buttons:H0e,ra_changedFrom:V0e,ra_close:Z0e,ra_create_boolean_state:X0e,ra_create_channel:K0e,ra_create_device:q0e,ra_create_number_state:eNe,ra_create_state:tNe,ra_create_string_state:sNe,ra_daysShortText:iNe,ra_dow_Fr:rNe,ra_dow_Mo:oNe,ra_dow_Sa:nNe,ra_dow_Su:aNe,ra_dow_Th:MNe,ra_dow_Tu:cNe,ra_dow_We:uNe,ra_expertMode:lNe,ra_false:NNe,ra_fileType_all:LNe,ra_fileType_audio:gNe,ra_fileType_code:jNe,ra_fileType_images:yNe,ra_fileType_txt:TNe,ra_fileType_video:DNe,"ra_fileType_video,":"视频",ra_filter_customs:dNe,ra_filter_customs_without:hNe,ra_filter_func:zNe,ra_filter_id:wNe,ra_filter_name:INe,ra_filter_role:CNe,ra_filter_room:pNe,ra_filter_type:ANe,"ra_import data from %s file":"从 %s 文件导入数据",ra_invalidConfig:mNe,ra_lastChange:fNe,ra_locally:ONe,ra_month_Apr:ENe,ra_month_Aug:_Ne,ra_month_Dec:xNe,ra_month_Feb:SNe,ra_month_Jan:kNe,ra_month_Jul:vNe,ra_month_Jun:YNe,ra_month_Mai:QNe,ra_month_Mar:bNe,ra_month_Nov:UNe,ra_month_Oct:$Ne,ra_month_Sep:PNe,ra_months_Apr:WNe,ra_months_Aug:JNe,ra_months_Dec:BNe,ra_months_Feb:RNe,ra_months_Jan:FNe,ra_months_Jul:GNe,ra_months_Jun:HNe,ra_months_Mai:VNe,ra_months_Mar:ZNe,ra_months_Nov:XNe,ra_months_Oct:KNe,ra_months_Sep:qNe,"ra_no confirm for 5 mins":"5分钟内无需确认",ra_none:e4e,ra_object_changed_by:t4e,ra_object_changed_by_user:s4e,ra_otherConfig:i4e,ra_qualityCode:r4e,ra_repeat:o4e,ra_select_folder_hint:n4e,ra_show_all:a4e,ra_state_changed_by:M4e,ra_state_changed_from:c4e,ra_timestamp:u4e,ra_tooltip_ack:l4e,ra_tooltip_comment:N4e,ra_tooltip_copyState:L4e,ra_tooltip_ctrlForLink:g4e,ra_tooltip_customConfig:j4e,ra_tooltip_deleteObject:y4e,ra_tooltip_editObject:T4e,ra_tooltip_editState:D4e,ra_tooltip_expire:d4e,ra_tooltip_from:h4e,ra_tooltip_lc:z4e,ra_tooltip_quality:w4e,ra_tooltip_ts:I4e,ra_tooltip_user:C4e,ra_tooltip_value:p4e,ra_true:A4e,"ra_use seconds":"用秒",ra_val:m4e,"ra_via internet":"通过互联网",ra_warning_every_minute:f4e,ra_warning_every_second:O4e,sc_cron:E4e,sc_date:_4e,sc_dates:x4e,sc_dow:S4e,sc_dows:k4e,sc_every:v4e,sc_everyN_dates:Y4e,sc_everyN_dow:Q4e,sc_everyN_dows:b4e,sc_everyN_hours:U4e,sc_everyN_minutes:$4e,sc_everyN_months:P4e,sc_everyN_seconds:W4e,sc_every_dates:J4e,sc_every_dow:B4e,sc_every_dows:R4e,sc_every_hours:F4e,sc_every_minutes:G4e,sc_every_months:H4e,sc_every_seconds:V4e,sc_from:Z4e,sc_hours:X4e,sc_interval:K4e,sc_intervalBetween:q4e,sc_invalid_cron:eLe,sc_minutes:tLe,sc_months:sLe,sc_once:iLe,sc_period:rLe,sc_seconds:oLe,sc_simple:nLe,sc_specific:aLe,sc_specific_dates:MLe,sc_specific_dow:cLe,sc_specific_dows:uLe,sc_specific_hours:lLe,sc_specific_minutes:NLe,sc_specific_months:LLe,sc_specific_seconds:gLe,sc_time:jLe,sc_to:yLe,sc_wizard:TLe,sch_all:DLe,sch_astroDay:dLe,sch_astroNight:hLe,sch_astro_dawn:zLe,sch_astro_dusk:wLe,sch_astro_goldenHour:ILe,sch_astro_goldenHourEnd:CLe,sch_astro_nadir:pLe,sch_astro_nauticalDawn:ALe,sch_astro_nauticalDusk:mLe,sch_astro_night:fLe,sch_astro_nightEnd:OLe,sch_astro_solarNoon:ELe,sch_astro_sunrise:_Le,sch_astro_sunriseEnd:xLe,sch_astro_sunset:SLe,sch_astro_sunsetStart:kLe,sch_at:vLe,sch_desc_atTime:YLe,sch_desc_everyDay:QLe,sch_desc_everyHour:bLe,sch_desc_everyMinute:ULe,sch_desc_everyMonth:$Le,sch_desc_everyNDay:PLe,sch_desc_everyNHours:WLe,sch_desc_everyNMinutes:JLe,sch_desc_everyNMonths:BLe,sch_desc_everyNWeeks:RLe,sch_desc_everyNYears:FLe,sch_desc_everyWeek:GLe,sch_desc_everyYear:HLe,sch_desc_intervalFromTo:VLe,sch_desc_never:ZLe,sch_desc_onDate:XLe,sch_desc_onDates:KLe,sch_desc_onEveryDate:qLe,sch_desc_onMonth:ege,sch_desc_onMonths:tge,sch_desc_onWeekday:sge,sch_desc_onWeekdays:ige,sch_desc_onWeekends:rge,sch_desc_onWorkdays:oge,sch_desc_onceInPast:nge,sch_desc_once_on:age,sch_desc_validFrom:Mge,sch_desc_validFromTo:cge,sch_desc_validTo:uge,sch_every:lge,sch_exactTime:Nge,sch_from:Lge,sch_fromTo:gge,sch_intervalTime:jge,sch_invert:yge,sch_no_one:Tge,sch_on:Dge,sch_period:dge,sch_periodDaily:hge,sch_periodDates:zge,sch_periodDay:wge,sch_periodEvery:Ige,sch_periodEveryDay:Cge,sch_periodEveryMonth:pge,sch_periodEveryWeek:Age,sch_periodEveryYear:mge,sch_periodHours:fge,sch_periodMinutes:Oge,sch_periodMonth:Ege,sch_periodMonthly:_ge,sch_periodOnce:xge,sch_periodSpecificMonths:Sge,sch_periodWeek:kge,sch_periodWeekdays:vge,sch_periodWeekend:Yge,sch_periodWeekly:Qge,sch_periodWorkdays:bge,sch_periodYear:Uge,sch_periodYearly:$ge,sch_specificTime:Pge,sch_time:Wge,sch_to:Jge,sch_valid:Bge,sch_validFrom:Rge,sch_validTo:Fge,sch_wholeDay:Gge,sch_yearEveryMonth:Hge},Zge={en:sp,de:LO,ru:I5,pt:Sb,nl:J7,fr:qB,it:cZ,es:dte,pl:One,uk:Ule,"zh-cn":Vge},Xge=` html { height: 100%; } @@ -420,9 +420,9 @@ body { background-color: #58c458; } } -`;function qge(){try{return window.self!==window.top}catch{return!0}}class Ds extends nr{socket;isIFrame=qge();instance;adapterName;instanceId;newReact;encryptedFields;sentryDSN;alertDialogRendered;_secret;_systemConfig;savedNative;common=null;sentryStarted=!1;sentryInited=!1;resizeTimer=null;constructor(e,t){const i=e.Connection||(t==null?void 0:t.Connection)||ke;if(!window.document.getElementById("generic-app-iobroker-component")){const N=window.document.createElement("style");N.setAttribute("id","generic-app-iobroker-component"),N.innerHTML=Kge,window.document.head.appendChild(N)}if(!Ds.isWeb()&&window.io&&window.location.port==="3000")try{const N=new window.SocketClient;delete window.io,window.io=N}catch{}super(e),Eh();const r=(window.location.search||"").replace(/^\?/,"").replace(/#.*$/,""),o={};r.trim().split("&").filter(N=>N.trim()).forEach(N=>{const u=N.split("="),[L,g]=u;o[L]=u.length===2?g:!0,o[L]==="true"?o[L]=!0:o[L]==="false"&&(o[L]=!1)}),this.instance=(t==null?void 0:t.instance)??e.instance??(o.instance!==void 0?parseInt(o.instance,10)||0:parseInt(window.location.search.slice(1),10)||0);const n=window.location.pathname.split("/");this.adapterName=(t==null?void 0:t.adapterName)||e.adapterName||window.adapterName||n[n.length-2]||"iot",this.instanceId=`system.adapter.${this.adapterName}.${this.instance}`,this.newReact=o.newReact===!0;const M=nr.getLocation();M.tab=M.tab||(window._localStorage||window.localStorage).getItem(`${this.adapterName}-adapter`)||"";const c=this.createTheme(o.theme);this.state={...this.state,selectedTab:(window._localStorage||window.localStorage).getItem(`${this.adapterName}-adapter`)||"",selectedTabNum:-1,native:{},errorText:"",changed:!1,connected:!1,loaded:!1,isConfigurationError:"",expertMode:!1,toast:"",theme:c,themeName:this.getThemeName(c),themeType:this.getThemeType(c),bottomButtons:(t&&t.bottomButtons)===!1?!1:(e==null?void 0:e.bottomButtons)!==!1,width:Ds.getWidth(),confirmClose:!1,_alert:!1,_alertType:"info",_alertMessage:""};const l=Xge;t!=null&&t.translations?Object.keys(t.translations).forEach(N=>{t.translations&&(l[N]=Object.assign(l[N],t.translations[N]||{}))}):e.translations&&Object.keys(e.translations).forEach(N=>{e.translations&&(l[N]=Object.assign(l[N],e.translations[N]||{}))}),D.setTranslations(l),this.savedNative={},this.encryptedFields=e.encryptedFields||(t==null?void 0:t.encryptedFields)||[],this.sentryDSN=(t==null?void 0:t.sentryDSN)||e.sentryDSN,window.socketUrl&&(window.socketUrl.startsWith(":")?window.socketUrl=`${window.location.protocol}//${window.location.hostname}${window.socketUrl}`:!window.socketUrl.startsWith("http://")&&!window.socketUrl.startsWith("https://")&&(window.socketUrl=`${window.location.protocol}//${window.socketUrl}`)),this.alertDialogRendered=!1,window.iobOldAlert||(window.iobOldAlert=window.alert),window.alert=N=>{if(!this.alertDialogRendered){window.iobOldAlert(N);return}N!=null&&N.toString().toLowerCase().includes("error")?(console.error(N),this.showAlert(N.toString(),"error")):(console.log(N),this.showAlert(N.toString(),"info"))},this.socket=new i({...(e==null?void 0:e.socket)||(t==null?void 0:t.socket),name:this.adapterName,doNotLoadAllObjects:t==null?void 0:t.doNotLoadAllObjects,onProgress:N=>{N===ht.CONNECTING?this.setState({connected:!1}):N===ht.READY?this.setState({connected:!0}):this.setState({connected:!0})},onReady:()=>{D.setLanguage(this.socket.systemLang),this.socket.subscribeObject("system.config",this.onSystemConfigChanged).then(()=>this.getSystemConfig()).then(N=>(this._secret=typeof N<"u"&&N.native&&N.native.secret||"Zgfr56gFe87jJOM",this._systemConfig=(N==null?void 0:N.common)||{},this.socket.getObject(this.instanceId))).then(async N=>{var y,T;let u;const L=N,j=((y=await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`))==null?void 0:y.val)!==!1&&((T=this._systemConfig)==null?void 0:T.diag)!=="none"&&(L==null?void 0:L.common)&&L.common.name&&L.common.version&&!L.common.disableDataReporting&&window.location.host!=="localhost:3000";!this.sentryStarted&&this.sentryDSN&&j&&(this.sentryStarted=!0,Oh({dsn:this.sentryDSN,release:`iobroker.${L.common.name}@${L.common.version}`,integrations:[I4()]}),console.log("Sentry initialized")),!this.sentryInited&&j&&(this.sentryInited=!0,u=this.socket.getObject("system.meta.uuid").then(d=>{d&&d.native&&d.native.uuid&&At().setUser({id:d.native.uuid})})),u=u instanceof Promise?u:Promise.resolve(),u.then(()=>{L?(this.common=L==null?void 0:L.common,this.onPrepareLoad(L.native,L.encryptedNative),this.savedNative=JSON.parse(JSON.stringify(L.native)),this.setState({native:L.native,loaded:!0,expertMode:this.getExpertMode()},()=>this.onConnectionReady&&this.onConnectionReady())):(console.warn("Cannot load instance settings"),this.setState({native:{},loaded:!0,expertMode:this.getExpertMode()},()=>this.onConnectionReady&&this.onConnectionReady()))})}).catch(N=>window.alert(`Cannot settings: ${N}`))},onError:N=>{console.error(N),this.showError(N)}})}static isWeb(){return window.socketUrl!==void 0}showAlert(e,t){t!=="error"&&t!=="warning"&&t!=="info"&&t!=="success"&&(t="info"),this.setState({_alert:!0,_alertType:t,_alertMessage:e})}renderAlertSnackbar(){return this.alertDialogRendered=!0,a.createElement(Xn,{style:this.state._alertType==="error"?{backgroundColor:"#f44336"}:this.state._alertType==="success"?{backgroundColor:"#4caf50"}:void 0,open:this.state._alert,autoHideDuration:6e3,onClose:(e,t)=>t!=="clickaway"&&this.setState({_alert:!1}),message:this.state._alertMessage})}onSystemConfigChanged=(e,t)=>{var i,r;t&&e==="system.config"&&(this.socket.systemLang!==(t==null?void 0:t.common.language)&&(this.socket.systemLang=(t==null?void 0:t.common.language)||"en",D.setLanguage(this.socket.systemLang)),((i=this._systemConfig)==null?void 0:i.expertMode)!==!!((r=t==null?void 0:t.common)!=null&&r.expertMode)?(this._systemConfig=(t==null?void 0:t.common)||{},this.setState({expertMode:this.getExpertMode()})):this._systemConfig=(t==null?void 0:t.common)||{})};componentDidMount(){window.addEventListener("resize",this.onResize,!0),window.addEventListener("message",this.onReceiveMessage,!1),super.componentDidMount()}componentWillUnmount(){window.removeEventListener("resize",this.onResize,!0),window.removeEventListener("message",this.onReceiveMessage,!1),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null),window.iobOldAlert&&(window.alert=window.iobOldAlert,delete window.iobOldAlert),super.componentWillUnmount()}onReceiveMessage=e=>{if(e!=null&&e.data)if(typeof e.data=="string"&&e.data==="updateTheme"||e.data&&typeof e.data=="object"&&e.data.type==="updateTheme"){const t=m.getThemeName();m.setThemeName(t);const i=this.createTheme(t);this.setState({theme:i,themeName:this.getThemeName(i),themeType:this.getThemeType(i)},()=>{this.props.onThemeChange&&this.props.onThemeChange(t),this.onThemeChanged&&this.onThemeChanged(t)})}else e.data==="updateExpertMode"?this.onToggleExpertMode&&this.onToggleExpertMode(this.getExpertMode()):e.data!=="chartReady"&&console.debug(`Received unknown message: "${JSON.stringify(e.data)}". May be it will be processed later`)};onResize=()=>{this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout(()=>{this.resizeTimer=null,this.setState({width:Ds.getWidth()})},200)};static getWidth(){const e={xs:0,sm:600,md:960,lg:1280,xl:1920},t=window.innerWidth;return Object.keys(e).reverse().find(o=>t>=e[o])||"xs"}createTheme(e){return fy(m.getThemeName(e))}getThemeName(e){return e.name}getThemeType(e){return e.palette.mode}onThemeChanged(e){}onToggleExpertMode(e){}toggleTheme(e){const t=this.state.themeName;if(e=e||(t==="dark"||t==="blue"||t==="colored"?"light":"dark"),e!==t){m.setThemeName(e);const i=this.createTheme(e);this.setState({theme:i,themeName:this.getThemeName(i),themeType:this.getThemeType(i)},()=>{this.props.onThemeChange&&this.props.onThemeChange(e||"light"),this.onThemeChanged&&this.onThemeChanged(e||"light")})}}getSystemConfig(){return this.socket.getSystemConfig()}getExpertMode(){var e;return window.sessionStorage.getItem("App.expertMode")==="true"||!!((e=this._systemConfig)!=null&&e.expertMode)}onConnectionReady(){}encrypt(e){let t="";if(this._secret)for(let i=0;i{e[i]&&(e[i]=this.encrypt(e[i]))}),!0}onPrepareLoad(e,t){var i;(i=this.encryptedFields)==null||i.forEach(r=>{e[r]&&(e[r]=this.decrypt(e[r]))}),t==null||t.forEach(r=>{this.encryptedFields=this.encryptedFields||[],!this.encryptedFields.includes(r)&&this.encryptedFields.push(r),e[r]&&(e[r]=this.decrypt(e[r]))})}async getExtendableInstances(){try{const e=await this.socket.getObjectViewSystem("instance","system.adapter.","system.adapter.香");return Object.values(e).filter(t=>{var i;return!!((i=t==null?void 0:t.common)!=null&&i.webExtendable)})}catch{return[]}}async getIpAddresses(e){var o;const t=await this.socket.getHostByIp(e||((o=this.common)==null?void 0:o.host)||""),i=t.find(n=>n.address==="0.0.0.0");i&&(i.name=`[IPv4] 0.0.0.0 - ${D.t("ra_Listen on all IPs")}`);const r=t.find(n=>n.address==="::");return r&&(r.name=`[IPv6] :: - ${D.t("ra_Listen on all IPs")}`),t}onSave(e){let t;if(this.state.isConfigurationError){this.setState({errorText:this.state.isConfigurationError});return}this.socket.getObject(this.instanceId).then(i=>{t=i||{};for(const r in this.state.native)Object.prototype.hasOwnProperty.call(this.state.native,r)&&(this.state.native[r]===null?t.native[r]=null:this.state.native[r]!==void 0?t.native[r]=JSON.parse(JSON.stringify(this.state.native[r])):delete t.native[r]);if(this.state.common)for(const r in this.state.common)this.state.common[r]===null?t.common[r]=null:this.state.common[r]!==void 0?t.common[r]=JSON.parse(JSON.stringify(this.state.common[r])):delete t.common[r];return this.onPrepareSave(t.native)!==!1?this.socket.setObject(this.instanceId,t):Promise.reject(new Error("Invalid configuration"))}).then(()=>{this.savedNative=t.native,globalThis.changed=!1;try{window.parent.postMessage("nochange","*")}catch{}this.setState({changed:!1},()=>{e&&Ds.onClose()})}).catch(i=>console.error(`Cannot save configuration: ${i}`))}renderToast(){return this.state.toast?a.createElement(Xn,{anchorOrigin:{vertical:"bottom",horizontal:"left"},open:!0,autoHideDuration:6e3,onClose:()=>this.setState({toast:""}),ContentProps:{"aria-describedby":"message-id"},message:a.createElement("span",{id:"message-id"},this.state.toast),action:[a.createElement(W,{key:"close","aria-label":"Close",color:"inherit",onClick:()=>this.setState({toast:""}),size:"large"},a.createElement(we,null))]}):null}static onClose(){if(typeof window.parent<"u"&&window.parent)try{window.parent.$iframeDialog&&typeof window.parent.$iframeDialog.close=="function"?window.parent.$iframeDialog.close():window.parent.postMessage("close","*")}catch{window.parent.postMessage("close","*")}}renderError(){return this.state.errorText?a.createElement(k4,{text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}getIsChanged(e){e=e||this.state.native;const t=JSON.stringify(e)!==JSON.stringify(this.savedNative);return globalThis.changed=t,t}onLoadConfig(e){JSON.stringify(e)!==JSON.stringify(this.state.native)&&this.setState({native:e,changed:this.getIsChanged(e)})}setConfigurationError(e){this.state.isConfigurationError!==e&&this.setState({isConfigurationError:e})}renderSaveCloseButtons(){return!this.state.confirmClose&&!this.state.bottomButtons?null:a.createElement(a.Fragment,null,this.state.bottomButtons?a.createElement(Gh,{theme:this.state.theme,newReact:this.newReact,noTextOnButtons:this.state.width==="xs"||this.state.width==="sm"||this.state.width==="md",changed:this.state.changed,onSave:e=>this.onSave(e),onClose:()=>{this.state.changed?this.setState({confirmClose:!0}):Ds.onClose()},error:!!this.state.isConfigurationError}):null,this.state.confirmClose?a.createElement(S4,{title:D.t("ra_Please confirm"),text:D.t("ra_Some data are not stored. Discard?"),ok:D.t("ra_Discard"),cancel:D.t("ra_Cancel"),onClose:e=>this.setState({confirmClose:!1},()=>e&&Ds.onClose())}):null)}_updateNativeValue(e,t,i){typeof t!="object"&&(t=t.split("."));const r=t.shift()||"";if(!t.length)return i&&typeof i=="object"?JSON.stringify(e[r])!==JSON.stringify(i)?(e[r]=i,!0):!1:e[r]!==i?(e[r]=i,!0):!1;if(e[r]=e[r]||{},typeof e[r]!="object")throw new Error(`attribute ${r} is no object, but ${typeof e[r]}`);return this._updateNativeValue(e[r],t,i)}updateNativeValue(e,t,i){const r=JSON.parse(JSON.stringify(this.state.native));if(this._updateNativeValue(r,e,t)){const o=this.getIsChanged(r);if(o!==this.state.changed)try{window.parent.postMessage(o?"change":"nochange","*")}catch{}this.setState({native:r,changed:o},i)}}showError(e){this.setState({errorText:e})}showToast(e){this.setState({toast:e})}renderHelperDialogs(){return a.createElement(a.Fragment,null,this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar())}render(){return this.state.loaded?a.createElement("div",{className:"App"},this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar()):a.createElement(Ph,{themeType:this.state.themeType})}}var ot={},mr={},eje=typeof Ur=="object"&&Ur&&Ur.Object===Object&&Ur,v4=eje,tje=v4,sje=typeof self=="object"&&self&&self.Object===Object&&self,ije=tje||sje||Function("return this")(),mt=ije,rje=mt,oje=rje.Symbol,fr=oje,Gu=fr,Y4=Object.prototype,nje=Y4.hasOwnProperty,aje=Y4.toString,Ji=Gu?Gu.toStringTag:void 0;function Mje(s){var e=nje.call(s,Ji),t=s[Ji];try{s[Ji]=void 0;var i=!0}catch{}var r=aje.call(s);return i&&(e?s[Ji]=t:delete s[Ji]),r}var cje=Mje,uje=Object.prototype,lje=uje.toString;function Nje(s){return lje.call(s)}var Lje=Nje,Hu=fr,gje=cje,jje=Lje,yje="[object Null]",Tje="[object Undefined]",Vu=Hu?Hu.toStringTag:void 0;function Dje(s){return s==null?s===void 0?Tje:yje:Vu&&Vu in Object(s)?gje(s):jje(s)}var _s=Dje,dje=Array.isArray,jt=dje;function hje(s){return s!=null&&typeof s=="object"}var Wt=hje,zje=_s,wje=jt,Ije=Wt,Cje="[object String]";function pje(s){return typeof s=="string"||!wje(s)&&Ije(s)&&zje(s)==Cje}var Aje=pje;function mje(s){return function(e,t,i){for(var r=-1,o=Object(e),n=i(e),M=n.length;M--;){var c=n[s?M:++r];if(t(o[c],c,o)===!1)break}return e}}var fje=mje,Oje=fje,Eje=Oje(),_je=Eje;function xje(s,e){for(var t=-1,i=Array(s);++t-1&&s%1==0&&s-1&&s%1==0&&s<=Hje}var wM=Vje,Zje=_s,Xje=wM,Kje=Wt,qje="[object Arguments]",eye="[object Array]",tye="[object Boolean]",sye="[object Date]",iye="[object Error]",rye="[object Function]",oye="[object Map]",nye="[object Number]",aye="[object Object]",Mye="[object RegExp]",cye="[object Set]",uye="[object String]",lye="[object WeakMap]",Nye="[object ArrayBuffer]",Lye="[object DataView]",gye="[object Float32Array]",jye="[object Float64Array]",yye="[object Int8Array]",Tye="[object Int16Array]",Dye="[object Int32Array]",dye="[object Uint8Array]",hye="[object Uint8ClampedArray]",zye="[object Uint16Array]",wye="[object Uint32Array]",le={};le[gye]=le[jye]=le[yye]=le[Tye]=le[Dye]=le[dye]=le[hye]=le[zye]=le[wye]=!0;le[qje]=le[eye]=le[Nye]=le[tye]=le[Lye]=le[sye]=le[iye]=le[rye]=le[oye]=le[nye]=le[aye]=le[Mye]=le[cye]=le[uye]=le[lye]=!1;function Iye(s){return Kje(s)&&Xje(s.length)&&!!le[Zje(s)]}var Cye=Iye;function pye(s){return function(e){return s(e)}}var IM=pye,zo={exports:{}};zo.exports;(function(s,e){var t=v4,i=e&&!e.nodeType&&e,r=i&&!0&&s&&!s.nodeType&&s,o=r&&r.exports===i,n=o&&t.process,M=(function(){try{var c=r&&r.require&&r.require("util").types;return c||n&&n.binding&&n.binding("util")}catch{}})();s.exports=M})(zo,zo.exports);var CM=zo.exports,Aye=Cye,mye=IM,Xu=CM,Ku=Xu&&Xu.isTypedArray,fye=Ku?mye(Ku):Aye,$4=fye,Oye=Sje,Eye=b4,_ye=jt,xye=zM,Sye=U4,kye=$4,vye=Object.prototype,Yye=vye.hasOwnProperty;function Qye(s,e){var t=_ye(s),i=!t&&Eye(s),r=!t&&!i&&xye(s),o=!t&&!i&&!r&&kye(s),n=t||i||r||o,M=n?Oye(s.length,String):[],c=M.length;for(var l in s)(e||Yye.call(s,l))&&!(n&&(l=="length"||r&&(l=="offset"||l=="parent")||o&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||Sye(l,c)))&&M.push(l);return M}var P4=Qye,bye=Object.prototype;function Uye(s){var e=s&&s.constructor,t=typeof e=="function"&&e.prototype||bye;return s===t}var pM=Uye;function $ye(s,e){return function(t){return s(e(t))}}var W4=$ye,Pye=W4,Wye=Pye(Object.keys,Object),Jye=Wye,Bye=pM,Rye=Jye,Fye=Object.prototype,Gye=Fye.hasOwnProperty;function Hye(s){if(!Bye(s))return Rye(s);var e=[];for(var t in Object(s))Gye.call(s,t)&&t!="constructor"&&e.push(t);return e}var Vye=Hye;function Zye(s){var e=typeof s;return s!=null&&(e=="object"||e=="function")}var fi=Zye,Xye=_s,Kye=fi,qye="[object AsyncFunction]",eTe="[object Function]",tTe="[object GeneratorFunction]",sTe="[object Proxy]";function iTe(s){if(!Kye(s))return!1;var e=Xye(s);return e==eTe||e==tTe||e==qye||e==sTe}var J4=iTe,rTe=J4,oTe=wM;function nTe(s){return s!=null&&oTe(s.length)&&!rTe(s)}var Fo=nTe,aTe=P4,MTe=Vye,cTe=Fo;function uTe(s){return cTe(s)?aTe(s):MTe(s)}var Or=uTe,lTe=_je,NTe=Or;function LTe(s,e){return s&&lTe(s,e,NTe)}var B4=LTe;function gTe(s){return s}var R4=gTe,jTe=R4;function yTe(s){return typeof s=="function"?s:jTe}var TTe=yTe,DTe=B4,dTe=TTe;function hTe(s,e){return s&&DTe(s,dTe(e))}var AM=hTe,zTe=W4,wTe=zTe(Object.getPrototypeOf,Object),mM=wTe,ITe=_s,CTe=mM,pTe=Wt,ATe="[object Object]",mTe=Function.prototype,fTe=Object.prototype,F4=mTe.toString,OTe=fTe.hasOwnProperty,ETe=F4.call(Object);function _Te(s){if(!pTe(s)||ITe(s)!=ATe)return!1;var e=CTe(s);if(e===null)return!0;var t=OTe.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&F4.call(t)==ETe}var xTe=_Te;function STe(s,e){for(var t=-1,i=s==null?0:s.length,r=Array(i);++t-1}var VTe=HTe,ZTe=Go;function XTe(s,e){var t=this.__data__,i=ZTe(t,s);return i<0?(++this.size,t.push([s,e])):t[i][1]=e,this}var KTe=XTe,qTe=vTe,eDe=JTe,tDe=FTe,sDe=VTe,iDe=KTe;function Oi(s){var e=-1,t=s==null?0:s.length;for(this.clear();++eM))return!1;var l=o.get(s),N=o.get(e);if(l&&N)return l==e&&N==s;var u=-1,L=!0,g=t&j1e?new l1e:void 0;for(o.set(s,e),o.set(e,s);++u0&&arguments[0]!==void 0?arguments[0]:[],t=[];return(0,iIe.default)(e,function(i){Array.isArray(i)?s(i).map(function(r){return t.push(r)}):(0,tIe.default)(i)?(0,qwe.default)(i,function(r,o){r===!0&&t.push(o),t.push(o+"-"+r)}):(0,Xwe.default)(i)&&t.push(i)}),t};mr.default=rIe;var Er={};function oIe(s,e){for(var t=-1,i=s==null?0:s.length;++t1&&arguments[1]!==void 0?arguments[1]:[],i=e.default&&(0,ppe.default)(e.default)||{};return t.map(function(r){var o=e[r];return o&&(0,Ipe.default)(o,function(n,M){i[M]||(i[M]={}),i[M]=Ape({},i[M],o[M])}),r}),i};Er.default=mpe;var _r={};Object.defineProperty(_r,"__esModule",{value:!0});_r.autoprefix=void 0;var fpe=AM,xl=Epe(fpe),Ope=Object.assign||function(s){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:"span";return(function(i){Qpe(r,i);function r(){var o,n,M,c;Ype(this,r);for(var l=arguments.length,N=Array(l),u=0;u1&&arguments[1]!==void 0?arguments[1]:"span";return(function(i){Jpe(r,i);function r(){var o,n,M,c;Wpe(this,r);for(var l=arguments.length,N=Array(l),u=0;u1&&arguments[1]!==void 0?arguments[1]:!0;i[n]=M};return e===0&&r("first-child"),e===t-1&&r("last-child"),(e===0||e%2===0)&&r("even"),Math.abs(e%2)===1&&r("odd"),r("nth-child",e),i};bM.default=Rpe;Object.defineProperty(ot,"__esModule",{value:!0});ot.ReactCSS=ot.loop=ot.handleActive=UM=ot.handleHover=ot.hover=void 0;var Fpe=mr,Gpe=ki(Fpe),Hpe=Er,Vpe=ki(Hpe),Zpe=_r,Xpe=ki(Zpe),Kpe=xr,TL=ki(Kpe),qpe=Sr,eAe=ki(qpe),tAe=bM,sAe=ki(tAe);function ki(s){return s&&s.__esModule?s:{default:s}}ot.hover=TL.default;var UM=ot.handleHover=TL.default;ot.handleActive=eAe.default;ot.loop=sAe.default;var iAe=ot.ReactCSS=function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),r=1;rM?L=1:L=Math.round(u*100/M)/100,t.a!==L)return{h:t.h,s:t.s,l:t.l,a:L,source:"rgb"}}else{var g=void 0;if(N<0?g=0:N>n?g=1:g=Math.round(N*100/n)/100,r!==g)return{h:t.h,s:t.s,l:t.l,a:g,source:"rgb"}}return null},_n={},oAe=function(e,t,i,r){if(typeof document>"u"&&!r)return null;var o=r?new r:document.createElement("canvas");o.width=i*2,o.height=i*2;var n=o.getContext("2d");return n?(n.fillStyle=e,n.fillRect(0,0,o.width,o.height),n.fillStyle=t,n.fillRect(0,0,i,i),n.translate(i,i),n.fillRect(0,0,i,i),o.toDataURL()):null},nAe=function(e,t,i,r){var o=e+"-"+t+"-"+i+(r?"-server":"");if(_n[o])return _n[o];var n=oAe(e,t,i,r);return _n[o]=n,n},vl=Object.assign||function(s){for(var e=1;eN.trim()).forEach(N=>{const u=N.split("="),[L,g]=u;o[L]=u.length===2?g:!0,o[L]==="true"?o[L]=!0:o[L]==="false"&&(o[L]=!1)}),this.instance=(t==null?void 0:t.instance)??e.instance??(o.instance!==void 0?parseInt(o.instance,10)||0:parseInt(window.location.search.slice(1),10)||0);const n=window.location.pathname.split("/");this.adapterName=(t==null?void 0:t.adapterName)||e.adapterName||window.adapterName||n[n.length-2]||"iot",this.instanceId=`system.adapter.${this.adapterName}.${this.instance}`,this.newReact=o.newReact===!0;const M=nr.getLocation();M.tab=M.tab||(window._localStorage||window.localStorage).getItem(`${this.adapterName}-adapter`)||"";const c=this.createTheme(o.theme);this.state={...this.state,selectedTab:(window._localStorage||window.localStorage).getItem(`${this.adapterName}-adapter`)||"",selectedTabNum:-1,native:{},errorText:"",changed:!1,connected:!1,loaded:!1,isConfigurationError:"",expertMode:!1,toast:"",theme:c,themeName:this.getThemeName(c),themeType:this.getThemeType(c),bottomButtons:(t&&t.bottomButtons)===!1?!1:(e==null?void 0:e.bottomButtons)!==!1,width:Ds.getWidth(),confirmClose:!1,_alert:!1,_alertType:"info",_alertMessage:""};const l=Zge;t!=null&&t.translations?Object.keys(t.translations).forEach(N=>{t.translations&&(l[N]=Object.assign(l[N],t.translations[N]||{}))}):e.translations&&Object.keys(e.translations).forEach(N=>{e.translations&&(l[N]=Object.assign(l[N],e.translations[N]||{}))}),D.setTranslations(l),this.savedNative={},this.encryptedFields=e.encryptedFields||(t==null?void 0:t.encryptedFields)||[],this.sentryDSN=(t==null?void 0:t.sentryDSN)||e.sentryDSN,window.socketUrl&&(window.socketUrl.startsWith(":")?window.socketUrl=`${window.location.protocol}//${window.location.hostname}${window.socketUrl}`:!window.socketUrl.startsWith("http://")&&!window.socketUrl.startsWith("https://")&&(window.socketUrl=`${window.location.protocol}//${window.socketUrl}`)),this.alertDialogRendered=!1,window.iobOldAlert||(window.iobOldAlert=window.alert),window.alert=N=>{if(!this.alertDialogRendered){window.iobOldAlert(N);return}N!=null&&N.toString().toLowerCase().includes("error")?(console.error(N),this.showAlert(N.toString(),"error")):(console.log(N),this.showAlert(N.toString(),"info"))},this.socket=new i({...(e==null?void 0:e.socket)||(t==null?void 0:t.socket),name:this.adapterName,doNotLoadAllObjects:t==null?void 0:t.doNotLoadAllObjects,onProgress:N=>{N===ht.CONNECTING?this.setState({connected:!1}):N===ht.READY?this.setState({connected:!0}):this.setState({connected:!0})},onReady:()=>{D.setLanguage(this.socket.systemLang),this.socket.subscribeObject("system.config",this.onSystemConfigChanged).then(()=>this.getSystemConfig()).then(N=>(this._secret=typeof N<"u"&&N.native&&N.native.secret||"Zgfr56gFe87jJOM",this._systemConfig=(N==null?void 0:N.common)||{},this.socket.getObject(this.instanceId))).then(async N=>{var y,T;let u;const L=N,j=((y=await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`))==null?void 0:y.val)!==!1&&((T=this._systemConfig)==null?void 0:T.diag)!=="none"&&(L==null?void 0:L.common)&&L.common.name&&L.common.version&&!L.common.disableDataReporting&&window.location.host!=="localhost:3000";!this.sentryStarted&&this.sentryDSN&&j&&(this.sentryStarted=!0,fh({dsn:this.sentryDSN,release:`iobroker.${L.common.name}@${L.common.version}`,integrations:[z4()]}),console.log("Sentry initialized")),!this.sentryInited&&j&&(this.sentryInited=!0,u=this.socket.getObject("system.meta.uuid").then(d=>{d&&d.native&&d.native.uuid&&At().setUser({id:d.native.uuid})})),u=u instanceof Promise?u:Promise.resolve(),u.then(()=>{L?(this.common=L==null?void 0:L.common,this.onPrepareLoad(L.native,L.encryptedNative),this.savedNative=JSON.parse(JSON.stringify(L.native)),this.setState({native:L.native,loaded:!0,expertMode:this.getExpertMode()},()=>this.onConnectionReady&&this.onConnectionReady())):(console.warn("Cannot load instance settings"),this.setState({native:{},loaded:!0,expertMode:this.getExpertMode()},()=>this.onConnectionReady&&this.onConnectionReady()))})}).catch(N=>window.alert(`Cannot settings: ${N}`))},onError:N=>{console.error(N),this.showError(N)}})}static isWeb(){return window.socketUrl!==void 0}showAlert(e,t){t!=="error"&&t!=="warning"&&t!=="info"&&t!=="success"&&(t="info"),this.setState({_alert:!0,_alertType:t,_alertMessage:e})}renderAlertSnackbar(){return this.alertDialogRendered=!0,a.createElement(Zn,{style:this.state._alertType==="error"?{backgroundColor:"#f44336"}:this.state._alertType==="success"?{backgroundColor:"#4caf50"}:void 0,open:this.state._alert,autoHideDuration:6e3,onClose:(e,t)=>t!=="clickaway"&&this.setState({_alert:!1}),message:this.state._alertMessage})}onSystemConfigChanged=(e,t)=>{var i,r;t&&e==="system.config"&&(this.socket.systemLang!==(t==null?void 0:t.common.language)&&(this.socket.systemLang=(t==null?void 0:t.common.language)||"en",D.setLanguage(this.socket.systemLang)),((i=this._systemConfig)==null?void 0:i.expertMode)!==!!((r=t==null?void 0:t.common)!=null&&r.expertMode)?(this._systemConfig=(t==null?void 0:t.common)||{},this.setState({expertMode:this.getExpertMode()})):this._systemConfig=(t==null?void 0:t.common)||{})};componentDidMount(){window.addEventListener("resize",this.onResize,!0),window.addEventListener("message",this.onReceiveMessage,!1),super.componentDidMount()}componentWillUnmount(){window.removeEventListener("resize",this.onResize,!0),window.removeEventListener("message",this.onReceiveMessage,!1),this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=null),window.iobOldAlert&&(window.alert=window.iobOldAlert,delete window.iobOldAlert),super.componentWillUnmount()}onReceiveMessage=e=>{if(e!=null&&e.data)if(typeof e.data=="string"&&e.data==="updateTheme"||e.data&&typeof e.data=="object"&&e.data.type==="updateTheme"){const t=m.getThemeName();m.setThemeName(t);const i=this.createTheme(t);this.setState({theme:i,themeName:this.getThemeName(i),themeType:this.getThemeType(i)},()=>{this.props.onThemeChange&&this.props.onThemeChange(t),this.onThemeChanged&&this.onThemeChanged(t)})}else e.data==="updateExpertMode"?this.onToggleExpertMode&&this.onToggleExpertMode(this.getExpertMode()):e.data!=="chartReady"&&console.debug(`Received unknown message: "${JSON.stringify(e.data)}". May be it will be processed later`)};onResize=()=>{this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout(()=>{this.resizeTimer=null,this.setState({width:Ds.getWidth()})},200)};static getWidth(){const e={xs:0,sm:600,md:960,lg:1280,xl:1920},t=window.innerWidth;return Object.keys(e).reverse().find(o=>t>=e[o])||"xs"}createTheme(e){return my(m.getThemeName(e))}getThemeName(e){return e.name}getThemeType(e){return e.palette.mode}onThemeChanged(e){}onToggleExpertMode(e){}toggleTheme(e){const t=this.state.themeName;if(e=e||(t==="dark"||t==="blue"||t==="colored"?"light":"dark"),e!==t){m.setThemeName(e);const i=this.createTheme(e);this.setState({theme:i,themeName:this.getThemeName(i),themeType:this.getThemeType(i)},()=>{this.props.onThemeChange&&this.props.onThemeChange(e||"light"),this.onThemeChanged&&this.onThemeChanged(e||"light")})}}getSystemConfig(){return this.socket.getSystemConfig()}getExpertMode(){var e;return window.sessionStorage.getItem("App.expertMode")==="true"||!!((e=this._systemConfig)!=null&&e.expertMode)}onConnectionReady(){}encrypt(e){let t="";if(this._secret)for(let i=0;i{e[i]&&(e[i]=this.encrypt(e[i]))}),!0}onPrepareLoad(e,t){var i;(i=this.encryptedFields)==null||i.forEach(r=>{e[r]&&(e[r]=this.decrypt(e[r]))}),t==null||t.forEach(r=>{this.encryptedFields=this.encryptedFields||[],!this.encryptedFields.includes(r)&&this.encryptedFields.push(r),e[r]&&(e[r]=this.decrypt(e[r]))})}async getExtendableInstances(){try{const e=await this.socket.getObjectViewSystem("instance","system.adapter.","system.adapter.香");return Object.values(e).filter(t=>{var i;return!!((i=t==null?void 0:t.common)!=null&&i.webExtendable)})}catch{return[]}}async getIpAddresses(e){var o;const t=await this.socket.getHostByIp(e||((o=this.common)==null?void 0:o.host)||""),i=t.find(n=>n.address==="0.0.0.0");i&&(i.name=`[IPv4] 0.0.0.0 - ${D.t("ra_Listen on all IPs")}`);const r=t.find(n=>n.address==="::");return r&&(r.name=`[IPv6] :: - ${D.t("ra_Listen on all IPs")}`),t}onSave(e){let t;if(this.state.isConfigurationError){this.setState({errorText:this.state.isConfigurationError});return}this.socket.getObject(this.instanceId).then(i=>{t=i||{};for(const r in this.state.native)Object.prototype.hasOwnProperty.call(this.state.native,r)&&(this.state.native[r]===null?t.native[r]=null:this.state.native[r]!==void 0?t.native[r]=JSON.parse(JSON.stringify(this.state.native[r])):delete t.native[r]);if(this.state.common)for(const r in this.state.common)this.state.common[r]===null?t.common[r]=null:this.state.common[r]!==void 0?t.common[r]=JSON.parse(JSON.stringify(this.state.common[r])):delete t.common[r];return this.onPrepareSave(t.native)!==!1?this.socket.setObject(this.instanceId,t):Promise.reject(new Error("Invalid configuration"))}).then(()=>{this.savedNative=t.native,globalThis.changed=!1;try{window.parent.postMessage("nochange","*")}catch{}this.setState({changed:!1},()=>{e&&Ds.onClose()})}).catch(i=>console.error(`Cannot save configuration: ${i}`))}renderToast(){return this.state.toast?a.createElement(Zn,{anchorOrigin:{vertical:"bottom",horizontal:"left"},open:!0,autoHideDuration:6e3,onClose:()=>this.setState({toast:""}),ContentProps:{"aria-describedby":"message-id"},message:a.createElement("span",{id:"message-id"},this.state.toast),action:[a.createElement(W,{key:"close","aria-label":"Close",color:"inherit",onClick:()=>this.setState({toast:""}),size:"large"},a.createElement(we,null))]}):null}static onClose(){if(typeof window.parent<"u"&&window.parent)try{window.parent.$iframeDialog&&typeof window.parent.$iframeDialog.close=="function"?window.parent.$iframeDialog.close():window.parent.postMessage("close","*")}catch{window.parent.postMessage("close","*")}}renderError(){return this.state.errorText?a.createElement(x4,{text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}getIsChanged(e){e=e||this.state.native;const t=JSON.stringify(e)!==JSON.stringify(this.savedNative);return globalThis.changed=t,t}onLoadConfig(e){JSON.stringify(e)!==JSON.stringify(this.state.native)&&this.setState({native:e,changed:this.getIsChanged(e)})}setConfigurationError(e){this.state.isConfigurationError!==e&&this.setState({isConfigurationError:e})}renderSaveCloseButtons(){return!this.state.confirmClose&&!this.state.bottomButtons?null:a.createElement(a.Fragment,null,this.state.bottomButtons?a.createElement(Fh,{theme:this.state.theme,newReact:this.newReact,noTextOnButtons:this.state.width==="xs"||this.state.width==="sm"||this.state.width==="md",changed:this.state.changed,onSave:e=>this.onSave(e),onClose:()=>{this.state.changed?this.setState({confirmClose:!0}):Ds.onClose()},error:!!this.state.isConfigurationError}):null,this.state.confirmClose?a.createElement(_4,{title:D.t("ra_Please confirm"),text:D.t("ra_Some data are not stored. Discard?"),ok:D.t("ra_Discard"),cancel:D.t("ra_Cancel"),onClose:e=>this.setState({confirmClose:!1},()=>e&&Ds.onClose())}):null)}_updateNativeValue(e,t,i){typeof t!="object"&&(t=t.split("."));const r=t.shift()||"";if(!t.length)return i&&typeof i=="object"?JSON.stringify(e[r])!==JSON.stringify(i)?(e[r]=i,!0):!1:e[r]!==i?(e[r]=i,!0):!1;if(e[r]=e[r]||{},typeof e[r]!="object")throw new Error(`attribute ${r} is no object, but ${typeof e[r]}`);return this._updateNativeValue(e[r],t,i)}updateNativeValue(e,t,i){const r=JSON.parse(JSON.stringify(this.state.native));if(this._updateNativeValue(r,e,t)){const o=this.getIsChanged(r);if(o!==this.state.changed)try{window.parent.postMessage(o?"change":"nochange","*")}catch{}this.setState({native:r,changed:o},i)}}showError(e){this.setState({errorText:e})}showToast(e){this.setState({toast:e})}renderHelperDialogs(){return a.createElement(a.Fragment,null,this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar())}render(){return this.state.loaded?a.createElement("div",{className:"App"},this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar()):a.createElement($h,{themeType:this.state.themeType})}}var ot={},mr={},qge=typeof Ur=="object"&&Ur&&Ur.Object===Object&&Ur,S4=qge,eje=S4,tje=typeof self=="object"&&self&&self.Object===Object&&self,sje=eje||tje||Function("return this")(),mt=sje,ije=mt,rje=ije.Symbol,fr=rje,Fu=fr,k4=Object.prototype,oje=k4.hasOwnProperty,nje=k4.toString,Ji=Fu?Fu.toStringTag:void 0;function aje(s){var e=oje.call(s,Ji),t=s[Ji];try{s[Ji]=void 0;var i=!0}catch{}var r=nje.call(s);return i&&(e?s[Ji]=t:delete s[Ji]),r}var Mje=aje,cje=Object.prototype,uje=cje.toString;function lje(s){return uje.call(s)}var Nje=lje,Gu=fr,Lje=Mje,gje=Nje,jje="[object Null]",yje="[object Undefined]",Hu=Gu?Gu.toStringTag:void 0;function Tje(s){return s==null?s===void 0?yje:jje:Hu&&Hu in Object(s)?Lje(s):gje(s)}var _s=Tje,Dje=Array.isArray,jt=Dje;function dje(s){return s!=null&&typeof s=="object"}var Wt=dje,hje=_s,zje=jt,wje=Wt,Ije="[object String]";function Cje(s){return typeof s=="string"||!zje(s)&&wje(s)&&hje(s)==Ije}var pje=Cje;function Aje(s){return function(e,t,i){for(var r=-1,o=Object(e),n=i(e),M=n.length;M--;){var c=n[s?M:++r];if(t(o[c],c,o)===!1)break}return e}}var mje=Aje,fje=mje,Oje=fje(),Eje=Oje;function _je(s,e){for(var t=-1,i=Array(s);++t-1&&s%1==0&&s-1&&s%1==0&&s<=Gje}var zM=Hje,Vje=_s,Zje=zM,Xje=Wt,Kje="[object Arguments]",qje="[object Array]",eye="[object Boolean]",tye="[object Date]",sye="[object Error]",iye="[object Function]",rye="[object Map]",oye="[object Number]",nye="[object Object]",aye="[object RegExp]",Mye="[object Set]",cye="[object String]",uye="[object WeakMap]",lye="[object ArrayBuffer]",Nye="[object DataView]",Lye="[object Float32Array]",gye="[object Float64Array]",jye="[object Int8Array]",yye="[object Int16Array]",Tye="[object Int32Array]",Dye="[object Uint8Array]",dye="[object Uint8ClampedArray]",hye="[object Uint16Array]",zye="[object Uint32Array]",le={};le[Lye]=le[gye]=le[jye]=le[yye]=le[Tye]=le[Dye]=le[dye]=le[hye]=le[zye]=!0;le[Kje]=le[qje]=le[lye]=le[eye]=le[Nye]=le[tye]=le[sye]=le[iye]=le[rye]=le[oye]=le[nye]=le[aye]=le[Mye]=le[cye]=le[uye]=!1;function wye(s){return Xje(s)&&Zje(s.length)&&!!le[Vje(s)]}var Iye=wye;function Cye(s){return function(e){return s(e)}}var wM=Cye,zo={exports:{}};zo.exports;(function(s,e){var t=S4,i=e&&!e.nodeType&&e,r=i&&!0&&s&&!s.nodeType&&s,o=r&&r.exports===i,n=o&&t.process,M=(function(){try{var c=r&&r.require&&r.require("util").types;return c||n&&n.binding&&n.binding("util")}catch{}})();s.exports=M})(zo,zo.exports);var IM=zo.exports,pye=Iye,Aye=wM,Zu=IM,Xu=Zu&&Zu.isTypedArray,mye=Xu?Aye(Xu):pye,b4=mye,fye=xje,Oye=Y4,Eye=jt,_ye=hM,xye=Q4,Sye=b4,kye=Object.prototype,vye=kye.hasOwnProperty;function Yye(s,e){var t=Eye(s),i=!t&&Oye(s),r=!t&&!i&&_ye(s),o=!t&&!i&&!r&&Sye(s),n=t||i||r||o,M=n?fye(s.length,String):[],c=M.length;for(var l in s)(e||vye.call(s,l))&&!(n&&(l=="length"||r&&(l=="offset"||l=="parent")||o&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||xye(l,c)))&&M.push(l);return M}var U4=Yye,Qye=Object.prototype;function bye(s){var e=s&&s.constructor,t=typeof e=="function"&&e.prototype||Qye;return s===t}var CM=bye;function Uye(s,e){return function(t){return s(e(t))}}var $4=Uye,$ye=$4,Pye=$ye(Object.keys,Object),Wye=Pye,Jye=CM,Bye=Wye,Rye=Object.prototype,Fye=Rye.hasOwnProperty;function Gye(s){if(!Jye(s))return Bye(s);var e=[];for(var t in Object(s))Fye.call(s,t)&&t!="constructor"&&e.push(t);return e}var Hye=Gye;function Vye(s){var e=typeof s;return s!=null&&(e=="object"||e=="function")}var fi=Vye,Zye=_s,Xye=fi,Kye="[object AsyncFunction]",qye="[object Function]",eTe="[object GeneratorFunction]",tTe="[object Proxy]";function sTe(s){if(!Xye(s))return!1;var e=Zye(s);return e==qye||e==eTe||e==Kye||e==tTe}var P4=sTe,iTe=P4,rTe=zM;function oTe(s){return s!=null&&rTe(s.length)&&!iTe(s)}var Fo=oTe,nTe=U4,aTe=Hye,MTe=Fo;function cTe(s){return MTe(s)?nTe(s):aTe(s)}var Or=cTe,uTe=Eje,lTe=Or;function NTe(s,e){return s&&uTe(s,e,lTe)}var W4=NTe;function LTe(s){return s}var J4=LTe,gTe=J4;function jTe(s){return typeof s=="function"?s:gTe}var yTe=jTe,TTe=W4,DTe=yTe;function dTe(s,e){return s&&TTe(s,DTe(e))}var pM=dTe,hTe=$4,zTe=hTe(Object.getPrototypeOf,Object),AM=zTe,wTe=_s,ITe=AM,CTe=Wt,pTe="[object Object]",ATe=Function.prototype,mTe=Object.prototype,B4=ATe.toString,fTe=mTe.hasOwnProperty,OTe=B4.call(Object);function ETe(s){if(!CTe(s)||wTe(s)!=pTe)return!1;var e=ITe(s);if(e===null)return!0;var t=fTe.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&B4.call(t)==OTe}var _Te=ETe;function xTe(s,e){for(var t=-1,i=s==null?0:s.length,r=Array(i);++t-1}var HTe=GTe,VTe=Go;function ZTe(s,e){var t=this.__data__,i=VTe(t,s);return i<0?(++this.size,t.push([s,e])):t[i][1]=e,this}var XTe=ZTe,KTe=kTe,qTe=WTe,eDe=RTe,tDe=HTe,sDe=XTe;function Oi(s){var e=-1,t=s==null?0:s.length;for(this.clear();++eM))return!1;var l=o.get(s),N=o.get(e);if(l&&N)return l==e&&N==s;var u=-1,L=!0,g=t&g1e?new u1e:void 0;for(o.set(s,e),o.set(e,s);++u0&&arguments[0]!==void 0?arguments[0]:[],t=[];return(0,sIe.default)(e,function(i){Array.isArray(i)?s(i).map(function(r){return t.push(r)}):(0,eIe.default)(i)?(0,Kwe.default)(i,function(r,o){r===!0&&t.push(o),t.push(o+"-"+r)}):(0,Zwe.default)(i)&&t.push(i)}),t};mr.default=iIe;var Er={};function rIe(s,e){for(var t=-1,i=s==null?0:s.length;++t1&&arguments[1]!==void 0?arguments[1]:[],i=e.default&&(0,Cpe.default)(e.default)||{};return t.map(function(r){var o=e[r];return o&&(0,wpe.default)(o,function(n,M){i[M]||(i[M]={}),i[M]=ppe({},i[M],o[M])}),r}),i};Er.default=Ape;var _r={};Object.defineProperty(_r,"__esModule",{value:!0});_r.autoprefix=void 0;var mpe=pM,_l=Ope(mpe),fpe=Object.assign||function(s){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:"span";return(function(i){Ype(r,i);function r(){var o,n,M,c;vpe(this,r);for(var l=arguments.length,N=Array(l),u=0;u1&&arguments[1]!==void 0?arguments[1]:"span";return(function(i){Wpe(r,i);function r(){var o,n,M,c;Ppe(this,r);for(var l=arguments.length,N=Array(l),u=0;u1&&arguments[1]!==void 0?arguments[1]:!0;i[n]=M};return e===0&&r("first-child"),e===t-1&&r("last-child"),(e===0||e%2===0)&&r("even"),Math.abs(e%2)===1&&r("odd"),r("nth-child",e),i};QM.default=Bpe;Object.defineProperty(ot,"__esModule",{value:!0});ot.ReactCSS=ot.loop=ot.handleActive=bM=ot.handleHover=ot.hover=void 0;var Rpe=mr,Fpe=ki(Rpe),Gpe=Er,Hpe=ki(Gpe),Vpe=_r,Zpe=ki(Vpe),Xpe=xr,jL=ki(Xpe),Kpe=Sr,qpe=ki(Kpe),eAe=QM,tAe=ki(eAe);function ki(s){return s&&s.__esModule?s:{default:s}}ot.hover=jL.default;var bM=ot.handleHover=jL.default;ot.handleActive=qpe.default;ot.loop=tAe.default;var sAe=ot.ReactCSS=function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),r=1;rM?L=1:L=Math.round(u*100/M)/100,t.a!==L)return{h:t.h,s:t.s,l:t.l,a:L,source:"rgb"}}else{var g=void 0;if(N<0?g=0:N>n?g=1:g=Math.round(N*100/n)/100,r!==g)return{h:t.h,s:t.s,l:t.l,a:g,source:"rgb"}}return null},_n={},rAe=function(e,t,i,r){if(typeof document>"u"&&!r)return null;var o=r?new r:document.createElement("canvas");o.width=i*2,o.height=i*2;var n=o.getContext("2d");return n?(n.fillStyle=e,n.fillRect(0,0,o.width,o.height),n.fillStyle=t,n.fillRect(0,0,i,i),n.translate(i,i),n.fillRect(0,0,i,i),o.toDataURL()):null},oAe=function(e,t,i,r){var o=e+"-"+t+"-"+i+(r?"-server":"");if(_n[o])return _n[o];var n=rAe(e,t,i,r);return _n[o]=n,n},kl=Object.assign||function(s){for(var e=1;e-1},hAe=function(e){return Number(String(e).replace(/%/g,""))},zAe=1,se=(function(s){jAe(e,s);function e(t){LAe(this,e);var i=gAe(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i.handleBlur=function(){i.state.blurValue&&i.setState({value:i.state.blurValue,blurValue:null})},i.handleChange=function(r){i.setUpdatedValue(r.target.value,r)},i.handleKeyDown=function(r){var o=hAe(r.target.value);if(!isNaN(o)&&dAe(r.keyCode)){var n=i.getArrowOffset(),M=r.keyCode===DL?o+n:o-n;i.setUpdatedValue(M,r)}},i.handleDrag=function(r){if(i.props.dragLabel){var o=Math.round(i.props.value+r.movementX);o>=0&&o<=i.props.dragMax&&i.props.onChange&&i.props.onChange(i.getValueObjectWithLabel(o),r)}},i.handleMouseDown=function(r){i.props.dragLabel&&(r.preventDefault(),i.handleDrag(r),window.addEventListener("mousemove",i.handleDrag),window.addEventListener("mouseup",i.handleMouseUp))},i.handleMouseUp=function(){i.unbindEventListeners()},i.unbindEventListeners=function(){window.removeEventListener("mousemove",i.handleDrag),window.removeEventListener("mouseup",i.handleMouseUp)},i.state={value:String(t.value).toUpperCase(),blurValue:String(t.value).toUpperCase()},i.inputId="rc-editable-input-"+zAe++,i}return lAe(e,[{key:"componentDidUpdate",value:function(i,r){this.props.value!==this.state.value&&(i.value!==this.props.value||r.value!==this.state.value)&&(this.input===document.activeElement?this.setState({blurValue:String(this.props.value).toUpperCase()}):this.setState({value:String(this.props.value).toUpperCase(),blurValue:!this.state.blurValue&&String(this.props.value).toUpperCase()}))}},{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"getValueObjectWithLabel",value:function(i){return NAe({},this.props.label,i)}},{key:"getArrowOffset",value:function(){return this.props.arrowOffset||yAe}},{key:"setUpdatedValue",value:function(i,r){var o=this.props.label?this.getValueObjectWithLabel(i):i;this.props.onChange&&this.props.onChange(o,r),this.setState({value:i})}},{key:"render",value:function(){var i=this,r=Z({default:{wrap:{position:"relative"}},"user-override":{wrap:this.props.style&&this.props.style.wrap?this.props.style.wrap:{},input:this.props.style&&this.props.style.input?this.props.style.input:{},label:this.props.style&&this.props.style.label?this.props.style.label:{}},"dragLabel-true":{label:{cursor:"ew-resize"}}},{"user-override":!0},this.props);return a.createElement("div",{style:r.wrap},a.createElement("input",{id:this.inputId,style:r.input,ref:function(n){return i.input=n},value:this.state.value,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,placeholder:this.props.placeholder,spellCheck:"false"}),this.props.label&&!this.props.hideLabel?a.createElement("label",{htmlFor:this.inputId,style:r.label,onMouseDown:this.handleMouseDown},this.props.label):null)}}]),e})(hr||De),wAe=function(e,t,i,r){var o=r.clientWidth,n=r.clientHeight,M=typeof e.pageX=="number"?e.pageX:e.touches[0].pageX,c=typeof e.pageY=="number"?e.pageY:e.touches[0].pageY,l=M-(r.getBoundingClientRect().left+window.pageXOffset),N=c-(r.getBoundingClientRect().top+window.pageYOffset);if(t==="vertical"){var u=void 0;if(N<0)u=359;else if(N>n)u=0;else{var L=-(N*100/n)+100;u=360*L/100}if(i.h!==u)return{h:u,s:i.s,l:i.l,a:i.a,source:"hsl"}}else{var g=void 0;if(l<0)g=0;else if(l>o)g=359;else{var j=l*100/o;g=360*j/100}if(i.h!==g)return{h:g,s:i.s,l:i.l,a:i.a,source:"hsl"}}return null},IAe=(function(){function s(e,t){for(var i=0;i-1},dAe=function(e){return Number(String(e).replace(/%/g,""))},hAe=1,se=(function(s){gAe(e,s);function e(t){NAe(this,e);var i=LAe(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i.handleBlur=function(){i.state.blurValue&&i.setState({value:i.state.blurValue,blurValue:null})},i.handleChange=function(r){i.setUpdatedValue(r.target.value,r)},i.handleKeyDown=function(r){var o=dAe(r.target.value);if(!isNaN(o)&&DAe(r.keyCode)){var n=i.getArrowOffset(),M=r.keyCode===yL?o+n:o-n;i.setUpdatedValue(M,r)}},i.handleDrag=function(r){if(i.props.dragLabel){var o=Math.round(i.props.value+r.movementX);o>=0&&o<=i.props.dragMax&&i.props.onChange&&i.props.onChange(i.getValueObjectWithLabel(o),r)}},i.handleMouseDown=function(r){i.props.dragLabel&&(r.preventDefault(),i.handleDrag(r),window.addEventListener("mousemove",i.handleDrag),window.addEventListener("mouseup",i.handleMouseUp))},i.handleMouseUp=function(){i.unbindEventListeners()},i.unbindEventListeners=function(){window.removeEventListener("mousemove",i.handleDrag),window.removeEventListener("mouseup",i.handleMouseUp)},i.state={value:String(t.value).toUpperCase(),blurValue:String(t.value).toUpperCase()},i.inputId="rc-editable-input-"+hAe++,i}return uAe(e,[{key:"componentDidUpdate",value:function(i,r){this.props.value!==this.state.value&&(i.value!==this.props.value||r.value!==this.state.value)&&(this.input===document.activeElement?this.setState({blurValue:String(this.props.value).toUpperCase()}):this.setState({value:String(this.props.value).toUpperCase(),blurValue:!this.state.blurValue&&String(this.props.value).toUpperCase()}))}},{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"getValueObjectWithLabel",value:function(i){return lAe({},this.props.label,i)}},{key:"getArrowOffset",value:function(){return this.props.arrowOffset||jAe}},{key:"setUpdatedValue",value:function(i,r){var o=this.props.label?this.getValueObjectWithLabel(i):i;this.props.onChange&&this.props.onChange(o,r),this.setState({value:i})}},{key:"render",value:function(){var i=this,r=Z({default:{wrap:{position:"relative"}},"user-override":{wrap:this.props.style&&this.props.style.wrap?this.props.style.wrap:{},input:this.props.style&&this.props.style.input?this.props.style.input:{},label:this.props.style&&this.props.style.label?this.props.style.label:{}},"dragLabel-true":{label:{cursor:"ew-resize"}}},{"user-override":!0},this.props);return a.createElement("div",{style:r.wrap},a.createElement("input",{id:this.inputId,style:r.input,ref:function(n){return i.input=n},value:this.state.value,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,placeholder:this.props.placeholder,spellCheck:"false"}),this.props.label&&!this.props.hideLabel?a.createElement("label",{htmlFor:this.inputId,style:r.label,onMouseDown:this.handleMouseDown},this.props.label):null)}}]),e})(hr||De),zAe=function(e,t,i,r){var o=r.clientWidth,n=r.clientHeight,M=typeof e.pageX=="number"?e.pageX:e.touches[0].pageX,c=typeof e.pageY=="number"?e.pageY:e.touches[0].pageY,l=M-(r.getBoundingClientRect().left+window.pageXOffset),N=c-(r.getBoundingClientRect().top+window.pageYOffset);if(t==="vertical"){var u=void 0;if(N<0)u=359;else if(N>n)u=0;else{var L=-(N*100/n)+100;u=360*L/100}if(i.h!==u)return{h:u,s:i.s,l:i.l,a:i.a,source:"hsl"}}else{var g=void 0;if(l<0)g=0;else if(l>o)g=359;else{var j=l*100/o;g=360*j/100}if(i.h!==g)return{h:g,s:i.s,l:i.l,a:i.a,source:"hsl"}}return null},wAe=(function(){function s(e,t){for(var i=0;i-1}function xAe(s,e){var t=this.__data__,i=tn(t,s);return i<0?(++this.size,t.push([s,e])):t[i][1]=e,this}function Jt(s){var e=-1,t=s==null?0:s.length;for(this.clear();++e-1&&s%1==0&&s<=Ume}function Qi(s){return s!=null&&BM(s.length)&&!PM(s)}function $me(s){return Ns(s)&&Qi(s)}function Pme(){return!1}var AL=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Bl=AL&&typeof module=="object"&&module&&!module.nodeType&&module,Wme=Bl&&Bl.exports===AL,Rl=Wme?yt.Buffer:void 0,Jme=Rl?Rl.isBuffer:void 0,mo=Jme||Pme,Bme="[object Object]",Rme=Function.prototype,Fme=Object.prototype,mL=Rme.toString,Gme=Fme.hasOwnProperty,Hme=mL.call(Object);function Vme(s){if(!Ns(s)||Ss(s)!=Bme)return!1;var e=CL(s);if(e===null)return!0;var t=Gme.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&mL.call(t)==Hme}var Zme="[object Arguments]",Xme="[object Array]",Kme="[object Boolean]",qme="[object Date]",e3e="[object Error]",t3e="[object Function]",s3e="[object Map]",i3e="[object Number]",r3e="[object Object]",o3e="[object RegExp]",n3e="[object Set]",a3e="[object String]",M3e="[object WeakMap]",c3e="[object ArrayBuffer]",u3e="[object DataView]",l3e="[object Float32Array]",N3e="[object Float64Array]",L3e="[object Int8Array]",g3e="[object Int16Array]",j3e="[object Int32Array]",y3e="[object Uint8Array]",T3e="[object Uint8ClampedArray]",D3e="[object Uint16Array]",d3e="[object Uint32Array]",Ne={};Ne[l3e]=Ne[N3e]=Ne[L3e]=Ne[g3e]=Ne[j3e]=Ne[y3e]=Ne[T3e]=Ne[D3e]=Ne[d3e]=!0;Ne[Zme]=Ne[Xme]=Ne[c3e]=Ne[Kme]=Ne[u3e]=Ne[qme]=Ne[e3e]=Ne[t3e]=Ne[s3e]=Ne[i3e]=Ne[r3e]=Ne[o3e]=Ne[n3e]=Ne[a3e]=Ne[M3e]=!1;function h3e(s){return Ns(s)&&BM(s.length)&&!!Ne[Ss(s)]}function z3e(s){return function(e){return s(e)}}var fL=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ar=fL&&typeof module=="object"&&module&&!module.nodeType&&module,w3e=ar&&ar.exports===fL,Sn=w3e&&dL.process,Fl=(function(){try{var s=ar&&ar.require&&ar.require("util").types;return s||Sn&&Sn.binding&&Sn.binding("util")}catch{}})(),Gl=Fl&&Fl.isTypedArray,RM=Gl?z3e(Gl):h3e;function Ca(s,e){if(!(e==="constructor"&&typeof s[e]=="function")&&e!="__proto__")return s[e]}var I3e=Object.prototype,C3e=I3e.hasOwnProperty;function p3e(s,e,t){var i=s[e];(!(C3e.call(s,e)&&kr(i,t))||t===void 0&&!(e in s))&&WM(s,e,t)}function A3e(s,e,t,i){var r=!t;t||(t={});for(var o=-1,n=e.length;++o-1&&s%1==0&&s0){if(++e>=W3e)return arguments[0]}else e=0;return s.apply(void 0,arguments)}}var F3e=R3e(P3e);function G3e(s,e){return F3e(U3e(s,e,rn),s+"")}function H3e(s,e,t){if(!Mt(t))return!1;var i=typeof e;return(i=="number"?Qi(t)&&FM(e,t.length):i=="string"&&e in t)?kr(t[e],s):!1}function V3e(s){return G3e(function(e,t){var i=-1,r=t.length,o=r>1?t[r-1]:void 0,n=r>2?t[2]:void 0;for(o=s.length>3&&typeof o=="function"?(r--,o):void 0,n&&H3e(t[0],t[1],n)&&(o=r<3?void 0:o,r=1),e=Object(e);++i=e||C<0||u&&E>=o}function d(){var h=kn();if(T(h))return I(h);M=setTimeout(d,y(h))}function I(h){return M=void 0,L&&i?g(h):(i=r=void 0,n)}function w(){M!==void 0&&clearTimeout(M),l=0,i=c=r=M=void 0}function A(){return M===void 0?n:I(kn())}function p(){var h=kn(),C=T(h);if(i=arguments,r=this,c=h,C){if(M===void 0)return j(c);if(u)return clearTimeout(M),M=setTimeout(d,e),g(c)}return M===void 0&&(M=setTimeout(d,e)),n}return p.cancel=w,p.flush=A,p}var Mfe="Expected a function";function cfe(s,e,t){var i=!0,r=!0;if(typeof s!="function")throw new TypeError(Mfe);return Mt(t)&&(i="leading"in t?!!t.leading:i,r="trailing"in t?!!t.trailing:r),xL(s,e,{leading:i,maxWait:e,trailing:r})}var ufe=function(e,t,i){var r=i.getBoundingClientRect(),o=r.width,n=r.height,M=typeof e.pageX=="number"?e.pageX:e.touches[0].pageX,c=typeof e.pageY=="number"?e.pageY:e.touches[0].pageY,l=M-(i.getBoundingClientRect().left+window.pageXOffset),N=c-(i.getBoundingClientRect().top+window.pageYOffset);l<0?l=0:l>o&&(l=o),N<0?N=0:N>n&&(N=n);var u=l/o,L=1-N/n;return{h:t.h,s:u,v:L,a:t.a,source:"hsv"}},lfe=(function(){function s(e,t){for(var i=0;i-1}function _Ae(s,e){var t=this.__data__,i=tn(t,s);return i<0?(++this.size,t.push([s,e])):t[i][1]=e,this}function Jt(s){var e=-1,t=s==null?0:s.length;for(this.clear();++e-1&&s%1==0&&s<=bme}function Qi(s){return s!=null&&JM(s.length)&&!$M(s)}function Ume(s){return Ns(s)&&Qi(s)}function $me(){return!1}var CL=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Jl=CL&&typeof module=="object"&&module&&!module.nodeType&&module,Pme=Jl&&Jl.exports===CL,Bl=Pme?yt.Buffer:void 0,Wme=Bl?Bl.isBuffer:void 0,mo=Wme||$me,Jme="[object Object]",Bme=Function.prototype,Rme=Object.prototype,pL=Bme.toString,Fme=Rme.hasOwnProperty,Gme=pL.call(Object);function Hme(s){if(!Ns(s)||Ss(s)!=Jme)return!1;var e=wL(s);if(e===null)return!0;var t=Fme.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&pL.call(t)==Gme}var Vme="[object Arguments]",Zme="[object Array]",Xme="[object Boolean]",Kme="[object Date]",qme="[object Error]",e3e="[object Function]",t3e="[object Map]",s3e="[object Number]",i3e="[object Object]",r3e="[object RegExp]",o3e="[object Set]",n3e="[object String]",a3e="[object WeakMap]",M3e="[object ArrayBuffer]",c3e="[object DataView]",u3e="[object Float32Array]",l3e="[object Float64Array]",N3e="[object Int8Array]",L3e="[object Int16Array]",g3e="[object Int32Array]",j3e="[object Uint8Array]",y3e="[object Uint8ClampedArray]",T3e="[object Uint16Array]",D3e="[object Uint32Array]",Ne={};Ne[u3e]=Ne[l3e]=Ne[N3e]=Ne[L3e]=Ne[g3e]=Ne[j3e]=Ne[y3e]=Ne[T3e]=Ne[D3e]=!0;Ne[Vme]=Ne[Zme]=Ne[M3e]=Ne[Xme]=Ne[c3e]=Ne[Kme]=Ne[qme]=Ne[e3e]=Ne[t3e]=Ne[s3e]=Ne[i3e]=Ne[r3e]=Ne[o3e]=Ne[n3e]=Ne[a3e]=!1;function d3e(s){return Ns(s)&&JM(s.length)&&!!Ne[Ss(s)]}function h3e(s){return function(e){return s(e)}}var AL=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ar=AL&&typeof module=="object"&&module&&!module.nodeType&&module,z3e=ar&&ar.exports===AL,Sn=z3e&&TL.process,Rl=(function(){try{var s=ar&&ar.require&&ar.require("util").types;return s||Sn&&Sn.binding&&Sn.binding("util")}catch{}})(),Fl=Rl&&Rl.isTypedArray,BM=Fl?h3e(Fl):d3e;function Ia(s,e){if(!(e==="constructor"&&typeof s[e]=="function")&&e!="__proto__")return s[e]}var w3e=Object.prototype,I3e=w3e.hasOwnProperty;function C3e(s,e,t){var i=s[e];(!(I3e.call(s,e)&&kr(i,t))||t===void 0&&!(e in s))&&PM(s,e,t)}function p3e(s,e,t,i){var r=!t;t||(t={});for(var o=-1,n=e.length;++o-1&&s%1==0&&s0){if(++e>=P3e)return arguments[0]}else e=0;return s.apply(void 0,arguments)}}var R3e=B3e($3e);function F3e(s,e){return R3e(b3e(s,e,rn),s+"")}function G3e(s,e,t){if(!Mt(t))return!1;var i=typeof e;return(i=="number"?Qi(t)&&RM(e,t.length):i=="string"&&e in t)?kr(t[e],s):!1}function H3e(s){return F3e(function(e,t){var i=-1,r=t.length,o=r>1?t[r-1]:void 0,n=r>2?t[2]:void 0;for(o=s.length>3&&typeof o=="function"?(r--,o):void 0,n&&G3e(t[0],t[1],n)&&(o=r<3?void 0:o,r=1),e=Object(e);++i=e||C<0||u&&E>=o}function d(){var h=kn();if(T(h))return I(h);M=setTimeout(d,y(h))}function I(h){return M=void 0,L&&i?g(h):(i=r=void 0,n)}function w(){M!==void 0&&clearTimeout(M),l=0,i=c=r=M=void 0}function A(){return M===void 0?n:I(kn())}function p(){var h=kn(),C=T(h);if(i=arguments,r=this,c=h,C){if(M===void 0)return j(c);if(u)return clearTimeout(M),M=setTimeout(d,e),g(c)}return M===void 0&&(M=setTimeout(d,e)),n}return p.cancel=w,p.flush=A,p}var afe="Expected a function";function Mfe(s,e,t){var i=!0,r=!0;if(typeof s!="function")throw new TypeError(afe);return Mt(t)&&(i="leading"in t?!!t.leading:i,r="trailing"in t?!!t.trailing:r),EL(s,e,{leading:i,maxWait:e,trailing:r})}var cfe=function(e,t,i){var r=i.getBoundingClientRect(),o=r.width,n=r.height,M=typeof e.pageX=="number"?e.pageX:e.touches[0].pageX,c=typeof e.pageY=="number"?e.pageY:e.touches[0].pageY,l=M-(i.getBoundingClientRect().left+window.pageXOffset),N=c-(i.getBoundingClientRect().top+window.pageYOffset);l<0?l=0:l>o&&(l=o),N<0?N=0:N>n&&(N=n);var u=l/o,L=1-N/n;return{h:t.h,s:u,v:L,a:t.a,source:"hsv"}},ufe=(function(){function s(e,t){for(var i=0;i=0,o=!t&&r&&(e==="hex"||e==="hex6"||e==="hex3"||e==="hex4"||e==="hex8"||e==="name");return o?e==="name"&&this._a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},clone:function(){return U(this.toString())},_applyModification:function(e,t){var i=e.apply(null,[this].concat([].slice.call(t)));return this._r=i._r,this._g=i._g,this._b=i._b,this.setAlpha(i._a),this},lighten:function(){return this._applyModification(kfe,arguments)},brighten:function(){return this._applyModification(vfe,arguments)},darken:function(){return this._applyModification(Yfe,arguments)},desaturate:function(){return this._applyModification(_fe,arguments)},saturate:function(){return this._applyModification(xfe,arguments)},greyscale:function(){return this._applyModification(Sfe,arguments)},spin:function(){return this._applyModification(Qfe,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination($fe,arguments)},complement:function(){return this._applyCombination(bfe,arguments)},monochromatic:function(){return this._applyCombination(Pfe,arguments)},splitcomplement:function(){return this._applyCombination(Ufe,arguments)},triad:function(){return this._applyCombination(t0,[3])},tetrad:function(){return this._applyCombination(t0,[4])}};U.fromRatio=function(s,e){if(fo(s)=="object"){var t={};for(var i in s)s.hasOwnProperty(i)&&(i==="a"?t[i]=s[i]:t[i]=qi(s[i]));s=t}return U(s,e)};function Afe(s){var e={r:0,g:0,b:0},t=1,i=null,r=null,o=null,n=!1,M=!1;return typeof s=="string"&&(s=Ffe(s)),fo(s)=="object"&&(Et(s.r)&&Et(s.g)&&Et(s.b)?(e=mfe(s.r,s.g,s.b),n=!0,M=String(s.r).substr(-1)==="%"?"prgb":"rgb"):Et(s.h)&&Et(s.s)&&Et(s.v)?(i=qi(s.s),r=qi(s.v),e=Ofe(s.h,i,r),n=!0,M="hsv"):Et(s.h)&&Et(s.s)&&Et(s.l)&&(i=qi(s.s),o=qi(s.l),e=ffe(s.h,i,o),n=!0,M="hsl"),s.hasOwnProperty("a")&&(t=s.a)),t=kL(t),{ok:n,format:s.format||M,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}function mfe(s,e,t){return{r:je(s,255)*255,g:je(e,255)*255,b:je(t,255)*255}}function Xl(s,e,t){s=je(s,255),e=je(e,255),t=je(t,255);var i=Math.max(s,e,t),r=Math.min(s,e,t),o,n,M=(i+r)/2;if(i==r)o=n=0;else{var c=i-r;switch(n=M>.5?c/(2-i-r):c/(i+r),i){case s:o=(e-t)/c+(e1&&(u-=1),u<1/6?l+(N-l)*6*u:u<1/2?N:u<2/3?l+(N-l)*(2/3-u)*6:l}if(e===0)i=r=o=t;else{var M=t<.5?t*(1+e):t+e-t*e,c=2*t-M;i=n(c,M,s+1/3),r=n(c,M,s),o=n(c,M,s-1/3)}return{r:i*255,g:r*255,b:o*255}}function Kl(s,e,t){s=je(s,255),e=je(e,255),t=je(t,255);var i=Math.max(s,e,t),r=Math.min(s,e,t),o,n,M=i,c=i-r;if(n=i===0?0:c/i,i==r)o=0;else{switch(i){case s:o=(e-t)/c+(e>1)+720)%360;--e;)i.h=(i.h+r)%360,o.push(U(i));return o}function Pfe(s,e){e=e||6;for(var t=U(s).toHsv(),i=t.h,r=t.s,o=t.v,n=[],M=1/e;e--;)n.push(U({h:i,s:r,v:o})),o=(o+M)%1;return n}U.mix=function(s,e,t){t=t===0?0:t||50;var i=U(s).toRgb(),r=U(e).toRgb(),o=t/100,n={r:(r.r-i.r)*o+i.r,g:(r.g-i.g)*o+i.g,b:(r.b-i.b)*o+i.b,a:(r.a-i.a)*o+i.a};return U(n)};U.readability=function(s,e){var t=U(s),i=U(e);return(Math.max(t.getLuminance(),i.getLuminance())+.05)/(Math.min(t.getLuminance(),i.getLuminance())+.05)};U.isReadable=function(s,e,t){var i=U.readability(s,e),r,o;switch(o=!1,r=Gfe(t),r.level+r.size){case"AAsmall":case"AAAlarge":o=i>=4.5;break;case"AAlarge":o=i>=3;break;case"AAAsmall":o=i>=7;break}return o};U.mostReadable=function(s,e,t){var i=null,r=0,o,n,M,c;t=t||{},n=t.includeFallbackColors,M=t.level,c=t.size;for(var l=0;lr&&(r=o,i=U(e[l]));return U.isReadable(s,i,{level:M,size:c})||!n?i:(t.includeFallbackColors=!1,U.mostReadable(s,["#fff","#000"],t))};var pa=U.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},Wfe=U.hexNames=Jfe(pa);function Jfe(s){var e={};for(var t in s)s.hasOwnProperty(t)&&(e[s[t]]=t);return e}function kL(s){return s=parseFloat(s),(isNaN(s)||s<0||s>1)&&(s=1),s}function je(s,e){Bfe(s)&&(s="100%");var t=Rfe(s);return s=Math.min(e,Math.max(0,parseFloat(s))),t&&(s=parseInt(s*e,10)/100),Math.abs(s-e)<1e-6?1:s%e/parseFloat(e)}function an(s){return Math.min(1,Math.max(0,s))}function Ke(s){return parseInt(s,16)}function Bfe(s){return typeof s=="string"&&s.indexOf(".")!=-1&&parseFloat(s)===1}function Rfe(s){return typeof s=="string"&&s.indexOf("%")!=-1}function Lt(s){return s.length==1?"0"+s:""+s}function qi(s){return s<=1&&(s=s*100+"%"),s}function vL(s){return Math.round(parseFloat(s)*255).toString(16)}function s0(s){return Ke(s)/255}var Nt=(function(){var s="[-\\+]?\\d+%?",e="[-\\+]?\\d*\\.\\d+%?",t="(?:"+e+")|(?:"+s+")",i="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?",r="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?";return{CSS_UNIT:new RegExp(t),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+r),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+r),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+r),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}})();function Et(s){return!!Nt.CSS_UNIT.exec(s)}function Ffe(s){s=s.replace(Cfe,"").replace(pfe,"").toLowerCase();var e=!1;if(pa[s])s=pa[s],e=!0;else if(s=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t;return(t=Nt.rgb.exec(s))?{r:t[1],g:t[2],b:t[3]}:(t=Nt.rgba.exec(s))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=Nt.hsl.exec(s))?{h:t[1],s:t[2],l:t[3]}:(t=Nt.hsla.exec(s))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=Nt.hsv.exec(s))?{h:t[1],s:t[2],v:t[3]}:(t=Nt.hsva.exec(s))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=Nt.hex8.exec(s))?{r:Ke(t[1]),g:Ke(t[2]),b:Ke(t[3]),a:s0(t[4]),format:e?"name":"hex8"}:(t=Nt.hex6.exec(s))?{r:Ke(t[1]),g:Ke(t[2]),b:Ke(t[3]),format:e?"name":"hex"}:(t=Nt.hex4.exec(s))?{r:Ke(t[1]+""+t[1]),g:Ke(t[2]+""+t[2]),b:Ke(t[3]+""+t[3]),a:s0(t[4]+""+t[4]),format:e?"name":"hex8"}:(t=Nt.hex3.exec(s))?{r:Ke(t[1]+""+t[1]),g:Ke(t[2]+""+t[2]),b:Ke(t[3]+""+t[3]),format:e?"name":"hex"}:!1}function Gfe(s){var e,t;return s=s||{level:"AA",size:"small"},e=(s.level||"AA").toUpperCase(),t=(s.size||"small").toLowerCase(),e!=="AA"&&e!=="AAA"&&(e="AA"),t!=="small"&&t!=="large"&&(t="small"),{level:e,size:t}}var i0=function(e){var t=["r","g","b","a","h","s","l","v"],i=0,r=0;return Ife(t,function(o){if(e[o]&&(i+=1,isNaN(e[o])||(r+=1),o==="s"||o==="l")){var n=/^\d+%$/;n.test(e[o])&&(r+=1)}}),i===r?e:!1},er=function(e,t){var i=e.hex?U(e.hex):U(e),r=i.toHsl(),o=i.toHsv(),n=i.toRgb(),M=i.toHex();r.s===0&&(r.h=t||0,o.h=t||0);var c=M==="000000"&&n.a===0;return{hsl:r,hex:c?"transparent":"#"+M,rgb:n,hsv:o,oldHue:e.h||t||r.h,source:e.source}},Ls=function(e){if(e==="transparent")return!0;var t=String(e).charAt(0)==="#"?1:0;return e.length!==4+t&&e.length<7+t&&U(e).isValid()},HM=function(e){if(!e)return"#fff";var t=er(e);if(t.hex==="transparent")return"rgba(0,0,0,0.4)";var i=(t.rgb.r*299+t.rgb.g*587+t.rgb.b*114)/1e3;return i>=128?"#000":"#fff"},vn=function(e,t){var i=e.replace("°","");return U(t+" ("+i+")")._ok},Ri=Object.assign||function(s){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:"span";return(function(i){tOe(r,i);function r(){var o,n,M,c;eOe(this,r);for(var l=arguments.length,N=Array(l),u=0;uM))return!1;var l=o.get(s),N=o.get(e);if(l&&N)return l==e&&N==s;var u=-1,L=!0,g=t&LOe?new Oo:void 0;for(o.set(s,e),o.set(e,s);++u=0||Object.prototype.hasOwnProperty.call(s,i)&&(t[i]=s[i]);return t}var Hr=24,mEe=RL.default=function(s){var e=s.fill,t=e===void 0?"currentColor":e,i=s.width,r=i===void 0?Hr:i,o=s.height,n=o===void 0?Hr:o,M=s.style,c=M===void 0?{}:M,l=AEe(s,["fill","width","height","style"]);return z0.default.createElement("svg",h0({viewBox:"0 0 "+Hr+" "+Hr,style:h0({fill:t,width:r,height:n},c)},l),z0.default.createElement("path",{d:"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"}))},fEe=(function(){function s(e,t){for(var i=0;i1&&(r.a=1),i.props.onChange({h:i.props.hsl.h,s:i.props.hsl.s,l:i.props.hsl.l,a:Math.round(r.a*100)/100,source:"rgb"},o)):(r.h||r.s||r.l)&&(typeof r.s=="string"&&r.s.includes("%")&&(r.s=r.s.replace("%","")),typeof r.l=="string"&&r.l.includes("%")&&(r.l=r.l.replace("%","")),r.s==1?r.s=.01:r.l==1&&(r.l=.01),i.props.onChange({h:r.h||i.props.hsl.h,s:Number(d0(r.s)?i.props.hsl.s:r.s),l:Number(d0(r.l)?i.props.hsl.l:r.l),source:"hsl"},o))},i.showHighlight=function(r){r.currentTarget.style.background="#eee"},i.hideHighlight=function(r){r.currentTarget.style.background="transparent"},t.hsl.a!==1&&t.view==="hex"?i.state={view:"rgb"}:i.state={view:t.view},i}return fEe(e,[{key:"render",value:function(){var i=this,r=Z({default:{wrap:{paddingTop:"16px",display:"flex"},fields:{flex:"1",display:"flex",marginLeft:"-6px"},field:{paddingLeft:"6px",width:"100%"},alpha:{paddingLeft:"6px",width:"100%"},toggle:{width:"32px",textAlign:"right",position:"relative"},icon:{marginRight:"-4px",marginTop:"12px",cursor:"pointer",position:"relative"},iconHighlight:{position:"absolute",width:"24px",height:"28px",background:"#eee",borderRadius:"4px",top:"10px",left:"12px",display:"none"},input:{fontSize:"11px",color:"#333",width:"100%",borderRadius:"2px",border:"none",boxShadow:"inset 0 0 0 1px #dadada",height:"21px",textAlign:"center"},label:{textTransform:"uppercase",fontSize:"11px",lineHeight:"11px",color:"#969696",textAlign:"center",display:"block",marginTop:"12px"},svg:{fill:"#333",width:"24px",height:"24px",border:"1px transparent solid",borderRadius:"5px"}},disableAlpha:{alpha:{display:"none"}}},this.props,this.state),o=void 0;return this.state.view==="hex"?o=a.createElement("div",{style:r.fields,className:"flexbox-fix"},a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"hex",value:this.props.hex,onChange:this.handleChange}))):this.state.view==="rgb"?o=a.createElement("div",{style:r.fields,className:"flexbox-fix"},a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"r",value:this.props.rgb.r,onChange:this.handleChange})),a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"g",value:this.props.rgb.g,onChange:this.handleChange})),a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"b",value:this.props.rgb.b,onChange:this.handleChange})),a.createElement("div",{style:r.alpha},a.createElement(se,{style:{input:r.input,label:r.label},label:"a",value:this.props.rgb.a,arrowOffset:.01,onChange:this.handleChange}))):this.state.view==="hsl"&&(o=a.createElement("div",{style:r.fields,className:"flexbox-fix"},a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"h",value:Math.round(this.props.hsl.h),onChange:this.handleChange})),a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"s",value:Math.round(this.props.hsl.s*100)+"%",onChange:this.handleChange})),a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"l",value:Math.round(this.props.hsl.l*100)+"%",onChange:this.handleChange})),a.createElement("div",{style:r.alpha},a.createElement(se,{style:{input:r.input,label:r.label},label:"a",value:this.props.hsl.a,arrowOffset:.01,onChange:this.handleChange})))),a.createElement("div",{style:r.wrap,className:"flexbox-fix"},o,a.createElement("div",{style:r.toggle},a.createElement("div",{style:r.icon,onClick:this.toggleViews,ref:function(M){return i.icon=M}},a.createElement(mEe,{style:r.svg,onMouseOver:this.showHighlight,onMouseEnter:this.showHighlight,onMouseOut:this.hideHighlight}))))}}],[{key:"getDerivedStateFromProps",value:function(i,r){return i.hsl.a!==1&&r.view==="hex"?{view:"rgb"}:null}}]),e})(a.Component);FL.defaultProps={view:"hex"};var w0=function(){var e=Z({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",transform:"translate(-6px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}}});return a.createElement("div",{style:e.picker})},xEe=function(){var e=Z({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",boxShadow:"inset 0 0 0 1px #fff",transform:"translate(-6px, -6px)"}}});return a.createElement("div",{style:e.picker})},ec=function(e){var t=e.width,i=e.onChange,r=e.disableAlpha,o=e.rgb,n=e.hsl,M=e.hsv,c=e.hex,l=e.renderers,N=e.styles,u=N===void 0?{}:N,L=e.className,g=L===void 0?"":L,j=e.defaultView,y=Z(Ve({default:{picker:{width:t,background:"#fff",borderRadius:"2px",boxShadow:"0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)",boxSizing:"initial",fontFamily:"Menlo"},saturation:{width:"100%",paddingBottom:"55%",position:"relative",borderRadius:"2px 2px 0 0",overflow:"hidden"},Saturation:{radius:"2px 2px 0 0"},body:{padding:"16px 16px 12px"},controls:{display:"flex"},color:{width:"32px"},swatch:{marginTop:"6px",width:"16px",height:"16px",borderRadius:"8px",position:"relative",overflow:"hidden"},active:{absolute:"0px 0px 0px 0px",borderRadius:"8px",boxShadow:"inset 0 0 0 1px rgba(0,0,0,.1)",background:"rgba("+o.r+", "+o.g+", "+o.b+", "+o.a+")",zIndex:"2"},toggles:{flex:"1"},hue:{height:"10px",position:"relative",marginBottom:"8px"},Hue:{radius:"2px"},alpha:{height:"10px",position:"relative"},Alpha:{radius:"2px"}},disableAlpha:{color:{width:"22px"},alpha:{display:"none"},hue:{marginBottom:"0px"},swatch:{width:"10px",height:"10px",marginTop:"0px"}}},u),{disableAlpha:r});return a.createElement("div",{style:y.picker,className:"chrome-picker "+g},a.createElement("div",{style:y.saturation},a.createElement(nn,{style:y.Saturation,hsl:n,hsv:M,pointer:xEe,onChange:i})),a.createElement("div",{style:y.body},a.createElement("div",{style:y.controls,className:"flexbox-fix"},a.createElement("div",{style:y.color},a.createElement("div",{style:y.swatch},a.createElement("div",{style:y.active}),a.createElement(vi,{renderers:l}))),a.createElement("div",{style:y.toggles},a.createElement("div",{style:y.hue},a.createElement(Yi,{style:y.Hue,hsl:n,pointer:w0,onChange:i})),a.createElement("div",{style:y.alpha},a.createElement($M,{style:y.Alpha,rgb:o,hsl:n,pointer:w0,renderers:l,onChange:i})))),a.createElement(FL,{rgb:o,hsl:n,hex:c,view:j,onChange:i,disableAlpha:r})))};ec.propTypes={width:_.oneOfType([_.string,_.number]),disableAlpha:_.bool,styles:_.object,defaultView:_.oneOf(["hex","rgb","hsl"])};ec.defaultProps={width:225,disableAlpha:!1,styles:{}};const SEe=Ze(ec);var kEe=function(e){var t=e.color,i=e.onClick,r=i===void 0?function(){}:i,o=e.onSwatchHover,n=e.active,M=Z({default:{color:{background:t,width:"15px",height:"15px",float:"left",marginRight:"5px",marginBottom:"5px",position:"relative",cursor:"pointer"},dot:{absolute:"5px 5px 5px 5px",background:HM(t),borderRadius:"50%",opacity:"0"}},active:{dot:{opacity:"1"}},"color-#FFFFFF":{color:{boxShadow:"inset 0 0 0 1px #ddd"},dot:{background:"#000"}},transparent:{dot:{background:"#000"}}},{active:n,"color-#FFFFFF":t==="#FFFFFF",transparent:t==="transparent"});return a.createElement(Ys,{style:M.color,color:t,onClick:r,onHover:o,focusStyle:{boxShadow:"0 0 4px "+t}},a.createElement("div",{style:M.dot}))},vEe=function(e){var t=e.hex,i=e.rgb,r=e.onChange,o=Z({default:{fields:{display:"flex",paddingBottom:"6px",paddingRight:"5px",position:"relative"},active:{position:"absolute",top:"6px",left:"5px",height:"9px",width:"9px",background:t},HEXwrap:{flex:"6",position:"relative"},HEXinput:{width:"80%",padding:"0px",paddingLeft:"20%",border:"none",outline:"none",background:"none",fontSize:"12px",color:"#333",height:"16px"},HEXlabel:{display:"none"},RGBwrap:{flex:"3",position:"relative"},RGBinput:{width:"70%",padding:"0px",paddingLeft:"30%",border:"none",outline:"none",background:"none",fontSize:"12px",color:"#333",height:"16px"},RGBlabel:{position:"absolute",top:"3px",left:"0px",lineHeight:"16px",textTransform:"uppercase",fontSize:"12px",color:"#999"}}}),n=function(c,l){c.r||c.g||c.b?r({r:c.r||i.r,g:c.g||i.g,b:c.b||i.b,source:"rgb"},l):r({hex:c.hex,source:"hex"},l)};return a.createElement("div",{style:o.fields,className:"flexbox-fix"},a.createElement("div",{style:o.active}),a.createElement(se,{style:{wrap:o.HEXwrap,input:o.HEXinput,label:o.HEXlabel},label:"hex",value:t,onChange:n}),a.createElement(se,{style:{wrap:o.RGBwrap,input:o.RGBinput,label:o.RGBlabel},label:"r",value:i.r,onChange:n}),a.createElement(se,{style:{wrap:o.RGBwrap,input:o.RGBinput,label:o.RGBlabel},label:"g",value:i.g,onChange:n}),a.createElement(se,{style:{wrap:o.RGBwrap,input:o.RGBinput,label:o.RGBlabel},label:"b",value:i.b,onChange:n}))},tc=function(e){var t=e.onChange,i=e.onSwatchHover,r=e.colors,o=e.hex,n=e.rgb,M=e.styles,c=M===void 0?{}:M,l=e.className,N=l===void 0?"":l,u=Z(Ve({default:{Compact:{background:"#f6f6f6",radius:"4px"},compact:{paddingTop:"5px",paddingLeft:"5px",boxSizing:"initial",width:"240px"},clear:{clear:"both"}}},c)),L=function(j,y){j.hex?Ls(j.hex)&&t({hex:j.hex,source:"hex"},y):t(j,y)};return a.createElement(vr,{style:u.Compact,styles:c},a.createElement("div",{style:u.compact,className:"compact-picker "+N},a.createElement("div",null,Qs(r,function(g){return a.createElement(kEe,{key:g,color:g,active:g.toLowerCase()===o,onClick:L,onSwatchHover:i})}),a.createElement("div",{style:u.clear})),a.createElement(vEe,{hex:o,rgb:n,onChange:L})))};tc.propTypes={colors:_.arrayOf(_.string),styles:_.object};tc.defaultProps={colors:["#4D4D4D","#999999","#FFFFFF","#F44E3B","#FE9200","#FCDC00","#DBDF00","#A4DD00","#68CCCA","#73D8FF","#AEA1FF","#FDA1FF","#333333","#808080","#cccccc","#D33115","#E27300","#FCC400","#B0BC00","#68BC00","#16A5A5","#009CE0","#7B64FF","#FA28FF","#000000","#666666","#B3B3B3","#9F0500","#C45100","#FB9E00","#808900","#194D33","#0C797D","#0062B1","#653294","#AB149E"],styles:{}};Ze(tc);var YEe=function(e){var t=e.hover,i=e.color,r=e.onClick,o=e.onSwatchHover,n={position:"relative",zIndex:"2",outline:"2px solid #fff",boxShadow:"0 0 5px 2px rgba(0,0,0,0.25)"},M=Z({default:{swatch:{width:"25px",height:"25px",fontSize:"0"}},hover:{swatch:n}},{hover:t});return a.createElement("div",{style:M.swatch},a.createElement(Ys,{color:i,onClick:r,onHover:o,focusStyle:n}))};const QEe=UM(YEe);var sc=function(e){var t=e.width,i=e.colors,r=e.onChange,o=e.onSwatchHover,n=e.triangle,M=e.styles,c=M===void 0?{}:M,l=e.className,N=l===void 0?"":l,u=Z(Ve({default:{card:{width:t,background:"#fff",border:"1px solid rgba(0,0,0,0.2)",boxShadow:"0 3px 12px rgba(0,0,0,0.15)",borderRadius:"4px",position:"relative",padding:"5px",display:"flex",flexWrap:"wrap"},triangle:{position:"absolute",border:"7px solid transparent",borderBottomColor:"#fff"},triangleShadow:{position:"absolute",border:"8px solid transparent",borderBottomColor:"rgba(0,0,0,0.15)"}},"hide-triangle":{triangle:{display:"none"},triangleShadow:{display:"none"}},"top-left-triangle":{triangle:{top:"-14px",left:"10px"},triangleShadow:{top:"-16px",left:"9px"}},"top-right-triangle":{triangle:{top:"-14px",right:"10px"},triangleShadow:{top:"-16px",right:"9px"}},"bottom-left-triangle":{triangle:{top:"35px",left:"10px",transform:"rotate(180deg)"},triangleShadow:{top:"37px",left:"9px",transform:"rotate(180deg)"}},"bottom-right-triangle":{triangle:{top:"35px",right:"10px",transform:"rotate(180deg)"},triangleShadow:{top:"37px",right:"9px",transform:"rotate(180deg)"}}},c),{"hide-triangle":n==="hide","top-left-triangle":n==="top-left","top-right-triangle":n==="top-right","bottom-left-triangle":n==="bottom-left","bottom-right-triangle":n==="bottom-right"}),L=function(j,y){return r({hex:j,source:"hex"},y)};return a.createElement("div",{style:u.card,className:"github-picker "+N},a.createElement("div",{style:u.triangleShadow}),a.createElement("div",{style:u.triangle}),Qs(i,function(g){return a.createElement(QEe,{color:g,key:g,onClick:L,onSwatchHover:o})}))};sc.propTypes={width:_.oneOfType([_.string,_.number]),colors:_.arrayOf(_.string),triangle:_.oneOf(["hide","top-left","top-right","bottom-left","bottom-right"]),styles:_.object};sc.defaultProps={width:200,colors:["#B80000","#DB3E00","#FCCB00","#008B02","#006B76","#1273DE","#004DCF","#5300EB","#EB9694","#FAD0C3","#FEF3BD","#C1E1C5","#BEDADC","#C4DEF6","#BED3F3","#D4C4FB"],triangle:"top-left",styles:{}};Ze(sc);var bEe=function(e){var t=e.direction,i=Z({default:{picker:{width:"18px",height:"18px",borderRadius:"50%",transform:"translate(-9px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}},vertical:{picker:{transform:"translate(-3px, -9px)"}}},{vertical:t==="vertical"});return a.createElement("div",{style:i.picker})},UEe=Object.assign||function(s){for(var e=1;e.5});return a.createElement("div",{style:i.picker})},JEe=function(){var e=Z({default:{triangle:{width:0,height:0,borderStyle:"solid",borderWidth:"4px 0 4px 6px",borderColor:"transparent transparent transparent #fff",position:"absolute",top:"1px",left:"1px"},triangleBorder:{width:0,height:0,borderStyle:"solid",borderWidth:"5px 0 5px 8px",borderColor:"transparent transparent transparent #555"},left:{Extend:"triangleBorder",transform:"translate(-13px, -4px)"},leftInside:{Extend:"triangle",transform:"translate(-8px, -5px)"},right:{Extend:"triangleBorder",transform:"translate(20px, -14px) rotate(180deg)"},rightInside:{Extend:"triangle",transform:"translate(-8px, -5px)"}}});return a.createElement("div",{style:e.pointer},a.createElement("div",{style:e.left},a.createElement("div",{style:e.leftInside})),a.createElement("div",{style:e.right},a.createElement("div",{style:e.rightInside})))},I0=function(e){var t=e.onClick,i=e.label,r=e.children,o=e.active,n=Z({default:{button:{backgroundImage:"linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)",border:"1px solid #878787",borderRadius:"2px",height:"20px",boxShadow:"0 1px 0 0 #EAEAEA",fontSize:"14px",color:"#000",lineHeight:"20px",textAlign:"center",marginBottom:"10px",cursor:"pointer"}},active:{button:{boxShadow:"0 0 0 1px #878787"}}},{active:o});return a.createElement("div",{style:n.button,onClick:t},i||r)},BEe=function(e){var t=e.rgb,i=e.currentColor,r=Z({default:{swatches:{border:"1px solid #B3B3B3",borderBottom:"1px solid #F0F0F0",marginBottom:"2px",marginTop:"1px"},new:{height:"34px",background:"rgb("+t.r+","+t.g+", "+t.b+")",boxShadow:"inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000"},current:{height:"34px",background:i,boxShadow:"inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000"},label:{fontSize:"14px",color:"#000",textAlign:"center"}}});return a.createElement("div",null,a.createElement("div",{style:r.label},"new"),a.createElement("div",{style:r.swatches},a.createElement("div",{style:r.new}),a.createElement("div",{style:r.current})),a.createElement("div",{style:r.label},"current"))},REe=(function(){function s(e,t){for(var i=0;i100&&(N.a=100),N.a/=100,t({h:r.h,s:r.s,l:r.l,a:N.a,source:"rgb"},u))};return a.createElement("div",{style:M.fields,className:"flexbox-fix"},a.createElement("div",{style:M.double},a.createElement(se,{style:{input:M.input,label:M.label},label:"hex",value:o.replace("#",""),onChange:c})),a.createElement("div",{style:M.single},a.createElement(se,{style:{input:M.input,label:M.label},label:"r",value:i.r,onChange:c,dragLabel:"true",dragMax:"255"})),a.createElement("div",{style:M.single},a.createElement(se,{style:{input:M.input,label:M.label},label:"g",value:i.g,onChange:c,dragLabel:"true",dragMax:"255"})),a.createElement("div",{style:M.single},a.createElement(se,{style:{input:M.input,label:M.label},label:"b",value:i.b,onChange:c,dragLabel:"true",dragMax:"255"})),a.createElement("div",{style:M.alpha},a.createElement(se,{style:{input:M.input,label:M.label},label:"a",value:Math.round(i.a*100),onChange:c,dragLabel:"true",dragMax:"100"})))},ZEe=Object.assign||function(s){for(var e=1;e=0||Object.prototype.hasOwnProperty.call(s,i)&&(t[i]=s[i]);return t}var Vr=24,i_e=HL.default=function(s){var e=s.fill,t=e===void 0?"currentColor":e,i=s.width,r=i===void 0?Vr:i,o=s.height,n=o===void 0?Vr:o,M=s.style,c=M===void 0?{}:M,l=s_e(s,["fill","width","height","style"]);return p0.default.createElement("svg",C0({viewBox:"0 0 "+Vr+" "+Vr,style:C0({fill:t,width:r,height:n},c)},l),p0.default.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))},r_e=function(e){var t=e.color,i=e.onClick,r=i===void 0?function(){}:i,o=e.onSwatchHover,n=e.first,M=e.last,c=e.active,l=Z({default:{color:{width:"40px",height:"24px",cursor:"pointer",background:t,marginBottom:"1px"},check:{color:HM(t),marginLeft:"8px",display:"none"}},first:{color:{overflow:"hidden",borderRadius:"2px 2px 0 0"}},last:{color:{overflow:"hidden",borderRadius:"0 0 2px 2px"}},active:{check:{display:"block"}},"color-#FFFFFF":{color:{boxShadow:"inset 0 0 0 1px #ddd"},check:{color:"#333"}},transparent:{check:{color:"#333"}}},{first:n,last:M,active:c,"color-#FFFFFF":t==="#FFFFFF",transparent:t==="transparent"});return a.createElement(Ys,{color:t,style:l.color,onClick:r,onHover:o,focusStyle:{boxShadow:"0 0 4px "+t}},a.createElement("div",{style:l.check},a.createElement(i_e,null)))},o_e=function(e){var t=e.onClick,i=e.onSwatchHover,r=e.group,o=e.active,n=Z({default:{group:{paddingBottom:"10px",width:"40px",float:"left",marginRight:"10px"}}});return a.createElement("div",{style:n.group},Qs(r,function(M,c){return a.createElement(r_e,{key:M,color:M,active:M.toLowerCase()===o,first:c===0,last:c===r.length-1,onClick:t,onSwatchHover:i})}))},ac=function(e){var t=e.width,i=e.height,r=e.onChange,o=e.onSwatchHover,n=e.colors,M=e.hex,c=e.styles,l=c===void 0?{}:c,N=e.className,u=N===void 0?"":N,L=Z(Ve({default:{picker:{width:t,height:i},overflow:{height:i,overflowY:"scroll"},body:{padding:"16px 0 6px 16px"},clear:{clear:"both"}}},l)),g=function(y,T){return r({hex:y,source:"hex"},T)};return a.createElement("div",{style:L.picker,className:"swatches-picker "+u},a.createElement(vr,null,a.createElement("div",{style:L.overflow},a.createElement("div",{style:L.body},Qs(n,function(j){return a.createElement(o_e,{key:j.toString(),group:j,active:M,onClick:g,onSwatchHover:o})}),a.createElement("div",{style:L.clear})))))};ac.propTypes={width:_.oneOfType([_.string,_.number]),height:_.oneOfType([_.string,_.number]),colors:_.arrayOf(_.arrayOf(_.string)),styles:_.object};ac.defaultProps={width:320,height:240,colors:[[Hs[900],Hs[700],Hs[500],Hs[300],Hs[100]],[Vs[900],Vs[700],Vs[500],Vs[300],Vs[100]],[Zs[900],Zs[700],Zs[500],Zs[300],Zs[100]],[Xs[900],Xs[700],Xs[500],Xs[300],Xs[100]],[Ks[900],Ks[700],Ks[500],Ks[300],Ks[100]],[qs[900],qs[700],qs[500],qs[300],qs[100]],[ei[900],ei[700],ei[500],ei[300],ei[100]],[ti[900],ti[700],ti[500],ti[300],ti[100]],[si[900],si[700],si[500],si[300],si[100]],["#194D33",tr[700],tr[500],tr[300],tr[100]],[ii[900],ii[700],ii[500],ii[300],ii[100]],[ri[900],ri[700],ri[500],ri[300],ri[100]],[oi[900],oi[700],oi[500],oi[300],oi[100]],[ni[900],ni[700],ni[500],ni[300],ni[100]],[ai[900],ai[700],ai[500],ai[300],ai[100]],[Mi[900],Mi[700],Mi[500],Mi[300],Mi[100]],[ci[900],ci[700],ci[500],ci[300],ci[100]],[ui[900],ui[700],ui[500],ui[300],ui[100]],["#000000","#525252","#969696","#D9D9D9","#FFFFFF"]],styles:{}};Ze(ac);var Mc=function(e){var t=e.onChange,i=e.onSwatchHover,r=e.hex,o=e.colors,n=e.width,M=e.triangle,c=e.styles,l=c===void 0?{}:c,N=e.className,u=N===void 0?"":N,L=Z(Ve({default:{card:{width:n,background:"#fff",border:"0 solid rgba(0,0,0,0.25)",boxShadow:"0 1px 4px rgba(0,0,0,0.25)",borderRadius:"4px",position:"relative"},body:{padding:"15px 9px 9px 15px"},label:{fontSize:"18px",color:"#fff"},triangle:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 9px 10px 9px",borderColor:"transparent transparent #fff transparent",position:"absolute"},triangleShadow:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 9px 10px 9px",borderColor:"transparent transparent rgba(0,0,0,.1) transparent",position:"absolute"},hash:{background:"#F0F0F0",height:"30px",width:"30px",borderRadius:"4px 0 0 4px",float:"left",color:"#98A1A4",display:"flex",alignItems:"center",justifyContent:"center"},input:{width:"100px",fontSize:"14px",color:"#666",border:"0px",outline:"none",height:"28px",boxShadow:"inset 0 0 0 1px #F0F0F0",boxSizing:"content-box",borderRadius:"0 4px 4px 0",float:"left",paddingLeft:"8px"},swatch:{width:"30px",height:"30px",float:"left",borderRadius:"4px",margin:"0 6px 6px 0"},clear:{clear:"both"}},"hide-triangle":{triangle:{display:"none"},triangleShadow:{display:"none"}},"top-left-triangle":{triangle:{top:"-10px",left:"12px"},triangleShadow:{top:"-11px",left:"12px"}},"top-right-triangle":{triangle:{top:"-10px",right:"12px"},triangleShadow:{top:"-11px",right:"12px"}}},l),{"hide-triangle":M==="hide","top-left-triangle":M==="top-left","top-right-triangle":M==="top-right"}),g=function(y,T){Ls(y)&&t({hex:y,source:"hex"},T)};return a.createElement("div",{style:L.card,className:"twitter-picker "+u},a.createElement("div",{style:L.triangleShadow}),a.createElement("div",{style:L.triangle}),a.createElement("div",{style:L.body},Qs(o,function(j,y){return a.createElement(Ys,{key:y,color:j,hex:j,style:L.swatch,onClick:g,onHover:i,focusStyle:{boxShadow:"0 0 4px "+j}})}),a.createElement("div",{style:L.hash},"#"),a.createElement(se,{label:null,style:{input:L.input},value:r.replace("#",""),onChange:g}),a.createElement("div",{style:L.clear})))};Mc.propTypes={width:_.oneOfType([_.string,_.number]),triangle:_.oneOf(["hide","top-left","top-right"]),colors:_.arrayOf(_.string),styles:_.object};Mc.defaultProps={width:276,colors:["#FF6900","#FCB900","#7BDCB5","#00D084","#8ED1FC","#0693E3","#ABB8C3","#EB144C","#F78DA7","#9900EF"],triangle:"top-left",styles:{}};Ze(Mc);var cc=function(e){var t=Z({default:{picker:{width:"20px",height:"20px",borderRadius:"22px",border:"2px #fff solid",transform:"translate(-12px, -13px)",background:"hsl("+Math.round(e.hsl.h)+", "+Math.round(e.hsl.s*100)+"%, "+Math.round(e.hsl.l*100)+"%)"}}});return a.createElement("div",{style:t.picker})};cc.propTypes={hsl:_.shape({h:_.number,s:_.number,l:_.number,a:_.number})};cc.defaultProps={hsl:{a:1,h:249.94,l:.2,s:.5}};var uc=function(e){var t=Z({default:{picker:{width:"20px",height:"20px",borderRadius:"22px",transform:"translate(-10px, -7px)",background:"hsl("+Math.round(e.hsl.h)+", 100%, 50%)",border:"2px white solid"}}});return a.createElement("div",{style:t.picker})};uc.propTypes={hsl:_.shape({h:_.number,s:_.number,l:_.number,a:_.number})};uc.defaultProps={hsl:{a:1,h:249.94,l:.2,s:.5}};var n_e=function(e){var t=e.onChange,i=e.rgb,r=e.hsl,o=e.hex,n=e.hsv,M=function(g,j){if(g.hex)Ls(g.hex)&&t({hex:g.hex,source:"hex"},j);else if(g.rgb){var y=g.rgb.split(",");vn(g.rgb,"rgb")&&t({r:y[0],g:y[1],b:y[2],a:1,source:"rgb"},j)}else if(g.hsv){var T=g.hsv.split(",");vn(g.hsv,"hsv")&&(T[2]=T[2].replace("%",""),T[1]=T[1].replace("%",""),T[0]=T[0].replace("°",""),T[1]==1?T[1]=.01:T[2]==1&&(T[2]=.01),t({h:Number(T[0]),s:Number(T[1]),v:Number(T[2]),source:"hsv"},j))}else if(g.hsl){var d=g.hsl.split(",");vn(g.hsl,"hsl")&&(d[2]=d[2].replace("%",""),d[1]=d[1].replace("%",""),d[0]=d[0].replace("°",""),u[1]==1?u[1]=.01:u[2]==1&&(u[2]=.01),t({h:Number(d[0]),s:Number(d[1]),v:Number(d[2]),source:"hsl"},j))}},c=Z({default:{wrap:{display:"flex",height:"100px",marginTop:"4px"},fields:{width:"100%"},column:{paddingTop:"10px",display:"flex",justifyContent:"space-between"},double:{padding:"0px 4.4px",boxSizing:"border-box"},input:{width:"100%",height:"38px",boxSizing:"border-box",padding:"4px 10% 3px",textAlign:"center",border:"1px solid #dadce0",fontSize:"11px",textTransform:"lowercase",borderRadius:"5px",outline:"none",fontFamily:"Roboto,Arial,sans-serif"},input2:{height:"38px",width:"100%",border:"1px solid #dadce0",boxSizing:"border-box",fontSize:"11px",textTransform:"lowercase",borderRadius:"5px",outline:"none",paddingLeft:"10px",fontFamily:"Roboto,Arial,sans-serif"},label:{textAlign:"center",fontSize:"12px",background:"#fff",position:"absolute",textTransform:"uppercase",color:"#3c4043",width:"35px",top:"-6px",left:"0",right:"0",marginLeft:"auto",marginRight:"auto",fontFamily:"Roboto,Arial,sans-serif"},label2:{left:"10px",textAlign:"center",fontSize:"12px",background:"#fff",position:"absolute",textTransform:"uppercase",color:"#3c4043",width:"32px",top:"-6px",fontFamily:"Roboto,Arial,sans-serif"},single:{flexGrow:"1",margin:"0px 4.4px"}}}),l=i.r+", "+i.g+", "+i.b,N=Math.round(r.h)+"°, "+Math.round(r.s*100)+"%, "+Math.round(r.l*100)+"%",u=Math.round(n.h)+"°, "+Math.round(n.s*100)+"%, "+Math.round(n.v*100)+"%";return a.createElement("div",{style:c.wrap,className:"flexbox-fix"},a.createElement("div",{style:c.fields},a.createElement("div",{style:c.double},a.createElement(se,{style:{input:c.input,label:c.label},label:"hex",value:o,onChange:M})),a.createElement("div",{style:c.column},a.createElement("div",{style:c.single},a.createElement(se,{style:{input:c.input2,label:c.label2},label:"rgb",value:l,onChange:M})),a.createElement("div",{style:c.single},a.createElement(se,{style:{input:c.input2,label:c.label2},label:"hsv",value:u,onChange:M})),a.createElement("div",{style:c.single},a.createElement(se,{style:{input:c.input2,label:c.label2},label:"hsl",value:N,onChange:M})))))},lc=function(e){var t=e.width,i=e.onChange,r=e.rgb,o=e.hsl,n=e.hsv,M=e.hex,c=e.header,l=e.styles,N=l===void 0?{}:l,u=e.className,L=u===void 0?"":u,g=Z(Ve({default:{picker:{width:t,background:"#fff",border:"1px solid #dfe1e5",boxSizing:"initial",display:"flex",flexWrap:"wrap",borderRadius:"8px 8px 0px 0px"},head:{height:"57px",width:"100%",paddingTop:"16px",paddingBottom:"16px",paddingLeft:"16px",fontSize:"20px",boxSizing:"border-box",fontFamily:"Roboto-Regular,HelveticaNeue,Arial,sans-serif"},saturation:{width:"70%",padding:"0px",position:"relative",overflow:"hidden"},swatch:{width:"30%",height:"228px",padding:"0px",background:"rgba("+r.r+", "+r.g+", "+r.b+", 1)",position:"relative",overflow:"hidden"},body:{margin:"auto",width:"95%"},controls:{display:"flex",boxSizing:"border-box",height:"52px",paddingTop:"22px"},color:{width:"32px"},hue:{height:"8px",position:"relative",margin:"0px 16px 0px 16px",width:"100%"},Hue:{radius:"2px"}}},N));return a.createElement("div",{style:g.picker,className:"google-picker "+L},a.createElement("div",{style:g.head},c),a.createElement("div",{style:g.swatch}),a.createElement("div",{style:g.saturation},a.createElement(nn,{hsl:o,hsv:n,pointer:cc,onChange:i})),a.createElement("div",{style:g.body},a.createElement("div",{style:g.controls,className:"flexbox-fix"},a.createElement("div",{style:g.hue},a.createElement(Yi,{style:g.Hue,hsl:o,radius:"4px",pointer:uc,onChange:i}))),a.createElement(n_e,{rgb:r,hsl:o,hex:M,hsv:n,onChange:i})))};lc.propTypes={width:_.oneOfType([_.string,_.number]),styles:_.object,header:_.string};lc.defaultProps={width:652,styles:{},header:"Color picker"};Ze(lc);const ut={color:{width:36,height:14,borderRadius:2},delButton:{marginTop:16},swatch:{mt:"16px",p:"5px",backgroundColor:"background.paper",borderRadius:"1px",boxShadow:"0 0 0 1px rgba(0,0,0,.1)",display:"inline-block",cursor:"pointer",verticalAlign:"middle"},swatchDisabled:{opacity:.5,cursor:"default"},popover:{"& .MuiPaper-root":{textAlign:"right",backgroundColor:"#00000000",boxShadow:"none"}},popoverList:{padding:0},closeButton:s=>({backgroundColor:`${s.palette.background.paper} !important`,borderRadius:"0 0 25% 25%","&:hover":{backgroundColor:`${s.palette.secondary.main} !important`}}),textDense:{mt:0,mb:0},iconButton:{width:16,height:16},button:{width:32,height:32,minWidth:32,minHeight:32}};class sr extends De{constructor(e){super(e),this.state={displayColorPicker:!1,color:this.props.value||this.props.color||"",anchorEl:null}}handleClick=e=>{this.setState({displayColorPicker:!this.state.displayColorPicker,anchorEl:this.state.displayColorPicker?null:e.currentTarget})};handleClose=()=>{this.setState({displayColorPicker:!1,anchorEl:null})};static getColor(e,t){if(e&&typeof e=="object"){const i=e;if(i.rgb)return t?`#${i.rgb.r.toString(16).padStart(2,"0")}${i.rgb.g.toString(16).padStart(2,"0")}${i.rgb.b.toString(16).padStart(2,"0")}`:`rgba(${i.rgb.r},${i.rgb.g},${i.rgb.b},${i.rgb.a})`;const r=e;return t?`#${r.r.toString(16).padStart(2,"0")}${r.g.toString(16).padStart(2,"0")}${r.b.toString(16).padStart(2,"0")}`:`rgba(${r.r},${r.g},${r.b},${r.a})`}return typeof e=="string"?t?sr.rgb2hex(e||""):e||"":""}static rgb2hex(e){const t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(t){const i=parseInt(t[1],10).toString(16).padStart(2,"0"),r=parseInt(t[2],10).toString(16).padStart(2,"0"),o=parseInt(t[3],10).toString(16).padStart(2,"0");return(t==null?void 0:t.length)===4?`#${i}${r}${o}`:e}return e}handleChange=e=>{this.setState({color:e},()=>this.props.onChange&&this.props.onChange(sr.getColor(e)))};componentDidUpdate(e,t){const i=sr.getColor(this.props.color||this.props.value||"");i!==t.color&&this.setState({color:i})}renderCustomPalette(){return this.props.customPalette?a.createElement("div",{style:{width:"100%",display:"flex",flexWrap:"wrap"}},this.props.customPalette.map(e=>a.createElement(q,{style:ut.button,key:e,onClick:()=>{this.handleChange(e),setTimeout(()=>this.handleClose(),300)}},a.createElement("div",{style:{...ut.iconButton,background:e}})))):null}render(){var i;const e={...this.props.style||{}};e.position="relative";const{color:t}=this.state;return a.createElement(J,{component:"div",style:e,sx:this.props.sx||void 0,className:this.props.className||""},this.props.noInputField?null:a.createElement(Te,{disabled:this.props.disabled,variant:"standard",id:"ar_color_picker_name",label:this.props.label||this.props.name,value:t||"",margin:"dense",sx:{"&.MuiFormControl-root":ut.textDense,width:t?"calc(100% - 80px)":"calc(100% - 56px)",mr:t?void 0:1},onChange:r=>this.handleChange(r.target.value)}),!this.props.noInputField&&t?a.createElement(W,{disabled:this.props.disabled,onClick:()=>this.handleChange(""),size:"small",style:this.props.label||this.props.name?ut.delButton:void 0},a.createElement(wt,null)):null,a.createElement(J,{component:"div",onClick:r=>!this.props.disabled&&this.handleClick(r),title:D.t("ra_Select color"),sx:{...ut.swatch,...this.props.disabled?ut.swatchDisabled:void 0,background:t?void 0:"transparent",border:t?void 0:"1px dashed #ccc",boxSizing:"border-box",marginTop:this.props.noInputField||!(this.props.label||this.props.name)?0:void 0}},a.createElement("div",{style:{...ut.color,background:sr.getColor(t),width:this.props.noInputField?this.props.barWidth||16:this.props.barWidth||36}})),this.state.displayColorPicker&&!this.props.disabled?a.createElement(ws,{sx:{...ut.popover,"&. MuiMenu-list":ut.popoverList},anchorEl:this.state.anchorEl,open:!0,onClose:()=>this.handleClose()},a.createElement(SEe,{color:this.state.color||void 0,onChangeComplete:r=>this.handleChange(r.rgb),styles:{default:{picker:{backgroundColor:((i=this.props.theme)==null?void 0:i.palette.background.paper)||"#888"}}}}),t&&this.props.noInputField?a.createElement(W,{sx:ut.closeButton,onClick:()=>this.handleChange("")},a.createElement(wt,null)):null,a.createElement(W,{sx:ut.closeButton,onClick:()=>this.handleClose()},a.createElement(we,null)),this.renderCustomPalette()):null)}}var Qn={exports:{}},A0;function ft(){return A0||(A0=1,(function(s,e){(function(i,r){s.exports=r()})(globalThis,()=>(()=>{var t={949(n,M,c){Object.defineProperty(M,"__esModule",{value:!0}),M.CronParser=void 0;var l=c(515),N=(function(){function u(L,g,j){g===void 0&&(g=!0),j===void 0&&(j=!1),this.expression=L,this.dayOfWeekStartIndexZero=g,this.monthStartIndexZero=j}return u.prototype.parse=function(){var L,g,j=(L=this.expression)!==null&&L!==void 0?L:"";if(j==="@reboot")return g=["@reboot","","","","","",""],g;if(j.startsWith("@")){var y=this.parseSpecial(this.expression);g=this.extractParts(y)}else g=this.extractParts(this.expression);return this.normalize(g),this.validate(g),g},u.prototype.parseSpecial=function(L){var g={"@yearly":"0 0 1 1 *","@annually":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *","@reboot":"@reboot"},j=g[L];if(!j)throw new Error("Unknown special expression.");return j},u.prototype.extractParts=function(L){if(!this.expression)throw new Error("cron expression is empty");for(var g=L.trim().split(/[ ]+/),j=0;j7)throw new Error("Expression has ".concat(g.length," parts; too many!"));return g},u.prototype.normalize=function(L){var g=this;if(L[3]=L[3].replace("?","*"),L[5]=L[5].replace("?","*"),L[2]=L[2].replace("?","*"),L[0].indexOf("0/")==0&&(L[0]=L[0].replace("0/","*/")),L[1].indexOf("0/")==0&&(L[1]=L[1].replace("0/","*/")),L[2].indexOf("0/")==0&&(L[2]=L[2].replace("0/","*/")),L[3].indexOf("1/")==0&&(L[3]=L[3].replace("1/","*/")),L[4].indexOf("1/")==0&&(L[4]=L[4].replace("1/","*/")),L[6].indexOf("1/")==0&&(L[6]=L[6].replace("1/","*/")),L[5]=L[5].replace(/(^\d)|([^#/\s]\d)/g,function(p){var h=p.replace(/\D/,""),C=h;return g.dayOfWeekStartIndexZero?h=="7"&&(C="0"):C=(parseInt(h)-1).toString(),p.replace(h,C)}),L[5]=="L"&&(L[5]="6"),L[3]=="?"&&(L[3]="*"),L[3].indexOf("W")>-1&&(L[3].indexOf(",")>-1||L[3].indexOf("-")>-1))throw new Error("The 'W' character can be specified only when the day-of-month is a single day, not a range or list of days.");var j={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6};for(var y in j)L[5]=L[5].replace(new RegExp(y,"gi"),j[y].toString());L[4]=L[4].replace(/(^\d{1,2})|([^#/\s]\d{1,2})/g,function(p){var h=p.replace(/\D/,""),C=h;return g.monthStartIndexZero&&(C=(parseInt(h)+1).toString()),p.replace(h,C)});var T={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12};for(var d in T)L[4]=L[4].replace(new RegExp(d,"gi"),T[d].toString());L[0]=="0"&&(L[0]=""),!/\*|\-|\,|\//.test(L[2])&&(/\*|\//.test(L[1])||/\*|\//.test(L[0]))&&(L[2]+="-".concat(L[2]));for(var I=0;I-1&&!/^\*|\-|\,/.test(L[I])){var w=null;switch(I){case 4:w="12";break;case 5:w="6";break;case 6:w="9999";break;default:w=null;break}if(w!==null){var A=L[I].split("/");L[I]="".concat(A[0],"-").concat(w,"/").concat(A[1])}}},u.prototype.validate=function(L){var g="0-9,\\-*/";this.validateOnlyExpectedCharactersFound(L[0],g),this.validateOnlyExpectedCharactersFound(L[1],g),this.validateOnlyExpectedCharactersFound(L[2],g),this.validateOnlyExpectedCharactersFound(L[3],"0-9,\\-*/LW"),this.validateOnlyExpectedCharactersFound(L[4],g),this.validateOnlyExpectedCharactersFound(L[5],"0-9,\\-*/L#"),this.validateOnlyExpectedCharactersFound(L[6],g),this.validateAnyRanges(L)},u.prototype.validateAnyRanges=function(L){l.default.secondRange(L[0]),l.default.minuteRange(L[1]),l.default.hourRange(L[2]),l.default.dayOfMonthRange(L[3]),l.default.monthRange(L[4],this.monthStartIndexZero),l.default.dayOfWeekRange(L[5],this.dayOfWeekStartIndexZero)},u.prototype.validateOnlyExpectedCharactersFound=function(L,g){var j=L.match(new RegExp("[^".concat(g,"]+"),"gi"));if(j&&j.length)throw new Error("Expression contains invalid values: '".concat(j.toString(),"'"))},u})();M.CronParser=N},333(n,M,c){Object.defineProperty(M,"__esModule",{value:!0}),M.ExpressionDescriptor=void 0;var l=c(823),N=c(949),u=(function(){function L(g,j){if(this.expression=g,this.options=j,this.expressionParts=new Array(5),!this.options.locale&&L.defaultLocale&&(this.options.locale=L.defaultLocale),!L.locales[this.options.locale]){var y=Object.keys(L.locales)[0];console.warn("Locale '".concat(this.options.locale,"' could not be found; falling back to '").concat(y,"'.")),this.options.locale=y}this.i18n=L.locales[this.options.locale],j.use24HourTimeFormat===void 0&&(j.use24HourTimeFormat=this.i18n.use24HourTimeFormatByDefault())}return L.toString=function(g,j){var y=j===void 0?{}:j,T=y.throwExceptionOnParseError,d=T===void 0?!0:T,I=y.verbose,w=I===void 0?!1:I,A=y.dayOfWeekStartIndexZero,p=A===void 0?!0:A,h=y.monthStartIndexZero,C=h===void 0?!1:h,E=y.use24HourTimeFormat,O=y.trimHoursLeadingZero,b=O===void 0?!1:O,k=y.locale,K=k===void 0?null:k,x=y.logicalAndDayFields,S=x===void 0?!1:x,R={throwExceptionOnParseError:d,verbose:w,dayOfWeekStartIndexZero:p,monthStartIndexZero:C,use24HourTimeFormat:E,trimHoursLeadingZero:b,locale:K,logicalAndDayFields:S};R.tzOffset&&console.warn("'tzOffset' option has been deprecated and is no longer supported.");var he=new L(g,R);return he.getFullDescription()},L.initialize=function(g,j){j===void 0&&(j="en"),L.specialCharacters=["/","-",",","*"],L.defaultLocale=j,g.load(L.locales)},L.prototype.getFullDescription=function(){var g,j,y="";try{var T=new N.CronParser(this.expression,this.options.dayOfWeekStartIndexZero,this.options.monthStartIndexZero);if(this.expressionParts=T.parse(),this.expressionParts[0]==="@reboot")return((j=(g=this.i18n).atReboot)===null||j===void 0?void 0:j.call(g))||"Run once, at startup";var d=this.getTimeOfDayDescription(),I=this.getDayOfMonthDescription(),w=this.getMonthDescription(),A=this.getDayOfWeekDescription(),p=this.getYearDescription();y+=d+I+A+w+p,y=this.transformVerbosity(y,!!this.options.verbose),y=y.charAt(0).toLocaleUpperCase()+y.substr(1)}catch(h){if(!this.options.throwExceptionOnParseError)y=this.i18n.anErrorOccuredWhenGeneratingTheExpressionD();else throw"".concat(h)}return y},L.prototype.getTimeOfDayDescription=function(){var g=this.expressionParts[0],j=this.expressionParts[1],y=this.expressionParts[2],T="";if(!l.StringUtilities.containsAny(j,L.specialCharacters)&&!l.StringUtilities.containsAny(y,L.specialCharacters)&&!l.StringUtilities.containsAny(g,L.specialCharacters))T+=this.i18n.atSpace()+this.formatTime(y,j,g);else if(!g&&j.indexOf("-")>-1&&!(j.indexOf(",")>-1)&&!(j.indexOf("/")>-1)&&!l.StringUtilities.containsAny(y,L.specialCharacters)){var d=j.split("-");T+=l.StringUtilities.format(this.i18n.everyMinuteBetweenX0AndX1(),this.formatTime(y,d[0],""),this.formatTime(y,d[1],""))}else if(!g&&y.indexOf(",")>-1&&y.indexOf("-")==-1&&y.indexOf("/")==-1&&!l.StringUtilities.containsAny(j,L.specialCharacters)){var I=y.split(",");T+=this.i18n.at();for(var w=0;w-1?I=T.substring(0,T.indexOf("#")):T.indexOf("L")>-1&&(I=I.replace("L",""));var w=parseInt(I),A=g.i18n.daysOfTheWeekInCase?g.i18n.daysOfTheWeekInCase(d)[w]:j[w];if(T.indexOf("#")>-1){var p=null,h=T.substring(T.indexOf("#")+1),C=T.substring(0,T.indexOf("#"));switch(h){case"1":p=g.i18n.first(C);break;case"2":p=g.i18n.second(C);break;case"3":p=g.i18n.third(C);break;case"4":p=g.i18n.fourth(C);break;case"5":p=g.i18n.fifth(C);break}A=p+" "+A}return A},function(T){return parseInt(T)==1?"":l.StringUtilities.format(g.i18n.commaEveryX0DaysOfTheWeek(T),T)},function(T){var d=T.substring(0,T.indexOf("-")),I=g.expressionParts[3]!="*";return I?g.i18n.commaAndX0ThroughX1(d):g.i18n.commaX0ThroughX1(d)},function(T){var d=null;if(T.indexOf("#")>-1){var I=T.substring(T.indexOf("#")+1),w=T.substring(0,T.indexOf("#"));d=g.i18n.commaOnThe(I,w).trim()+g.i18n.spaceX0OfTheMonth()}else if(T.indexOf("L")>-1)d=g.i18n.commaOnTheLastX0OfTheMonth(T.replace("L",""));else{var A=g.expressionParts[3]!="*";A?g.options.logicalAndDayFields?d=g.i18n.commaOnlyOnX0(T):d=g.i18n.commaAndOnX0():d=g.i18n.commaOnlyOnX0(T)}return d}),y},L.prototype.getMonthDescription=function(){var g=this,j=this.i18n.monthsOfTheYear(),y=this.getSegmentDescription(this.expressionParts[4],"",function(T,d){return d&&g.i18n.monthsOfTheYearInCase?g.i18n.monthsOfTheYearInCase(d)[parseInt(T)-1]:j[parseInt(T)-1]},function(T){return parseInt(T)==1?"":l.StringUtilities.format(g.i18n.commaEveryX0Months(T),T)},function(T){return g.i18n.commaMonthX0ThroughMonthX1()||g.i18n.commaX0ThroughX1()},function(T){return g.i18n.commaOnlyInMonthX0?g.i18n.commaOnlyInMonthX0():g.i18n.commaOnlyInX0()});return y},L.prototype.getDayOfMonthDescription=function(){var g=this,j=null,y=this.expressionParts[3];switch(y){case"L":j=this.i18n.commaOnTheLastDayOfTheMonth();break;case"WL":case"LW":j=this.i18n.commaOnTheLastWeekdayOfTheMonth();break;default:var T=y.match(/(\d{1,2}W)|(W\d{1,2})/);if(T){var d=parseInt(T[0].replace("W","")),I=d==1?this.i18n.firstWeekday():l.StringUtilities.format(this.i18n.weekdayNearestDayX0(),d.toString());j=l.StringUtilities.format(this.i18n.commaOnTheX0OfTheMonth(),I);break}else{var w=y.match(/L-(\d{1,2})/);if(w){var A=w[1];j=l.StringUtilities.format(this.i18n.commaDaysBeforeTheLastDayOfTheMonth(A),A);break}else{if(y=="*"&&this.expressionParts[5]!="*")return"";j=this.getSegmentDescription(y,this.i18n.commaEveryDay(),function(p){return p=="L"?g.i18n.lastDay():g.i18n.dayX0?l.StringUtilities.format(g.i18n.dayX0(),p):p},function(p){return p=="1"?g.i18n.commaEveryDay():g.i18n.commaEveryX0Days(p)},function(p){return g.i18n.commaBetweenDayX0AndX1OfTheMonth(p)},function(p){return g.i18n.commaOnDayX0OfTheMonth(p)})}break}}return j},L.prototype.getYearDescription=function(){var g=this,j=this.getSegmentDescription(this.expressionParts[6],"",function(y){return/^\d+$/.test(y)?new Date(parseInt(y),1).getFullYear().toString():y},function(y){return l.StringUtilities.format(g.i18n.commaEveryX0Years(y),y)},function(y){return g.i18n.commaYearX0ThroughYearX1()||g.i18n.commaX0ThroughX1()},function(y){return g.i18n.commaOnlyInYearX0?g.i18n.commaOnlyInYearX0():g.i18n.commaOnlyInX0()});return j},L.prototype.getSegmentDescription=function(g,j,y,T,d,I){var w=null,A=g.indexOf("/")>-1,p=g.indexOf("-")>-1,h=g.indexOf(",")>-1;if(!g)w="";else if(g==="*")w=j;else if(!A&&!p&&!h)w=l.StringUtilities.format(I(g),y(g));else if(h){for(var C=g.split(","),E="",O=0;O0&&C.length>2&&(E+=",",O0&&C.length>1&&(O==C.length-1||C.length==2)&&(E+="".concat(this.i18n.spaceAnd()," ")),C[O].indexOf("/")>-1||C[O].indexOf("-")>-1){var b=C[O].indexOf("-")>-1&&C[O].indexOf("/")==-1,k=this.getSegmentDescription(C[O],j,y,T,b?this.i18n.commaX0ThroughX1:d,I);b&&(k=k.replace(", ","")),E+=k}else if(!A)E+=y(C[O]);else{var K=this.getSegmentDescription(C[O],j,y,T,d,I);K&&K.startsWith(", ")&&(K=K.substring(2)),E+=K}A?w=E:w=l.StringUtilities.format(I(g),E)}else if(A){var C=g.split("/");if(w=l.StringUtilities.format(T(C[1]),C[1]),C[0].indexOf("-")>-1){var x=this.generateRangeSegmentDescription(C[0],d,y);x.indexOf(", ")!=0&&(w+=", "),w+=x}else if(C[0].indexOf("*")==-1){var S=l.StringUtilities.format(I(C[0]),y(C[0]));S=S.replace(", ",""),w+=l.StringUtilities.format(this.i18n.commaStartingX0(),S)}}else p&&(w=this.generateRangeSegmentDescription(g,d,y));return w},L.prototype.generateRangeSegmentDescription=function(g,j,y){var T="",d=g.split("-"),I=y(d[0],1),w=y(d[1],2),A=j(g);return T+=l.StringUtilities.format(A,I,w),T},L.prototype.formatTime=function(g,j,y){var T=0,d=0,I=parseInt(g)+T,w=parseInt(j)+d;w>=60?(w-=60,I+=1):w<0&&(w+=60,I-=1),I>=24?I=I-24:I<0&&(I=24+I);var A="",p=!1;this.options.use24HourTimeFormat||(p=!!(this.i18n.setPeriodBeforeTime&&this.i18n.setPeriodBeforeTime()),A=p?"".concat(this.getPeriod(I)," "):" ".concat(this.getPeriod(I)),I>12&&(I-=12),I===0&&(I=12));var h="";y&&(h=":".concat(("00"+y).substring(y.length)));var C=I.toString(),E=("00"+C).substring(C.length),O=w.toString(),b=("00"+O).substring(O.length),k=this.options.trimHoursLeadingZero?C:E;return"".concat(p?A:"").concat(k,":").concat(b).concat(h).concat(p?"":A)},L.prototype.transformVerbosity=function(g,j){if(!j&&(g=g.replace(new RegExp(", ".concat(this.i18n.everyMinute()),"g"),""),g=g.replace(new RegExp(", ".concat(this.i18n.everyHour()),"g"),""),g=g.replace(new RegExp(this.i18n.commaEveryDay(),"g"),""),g=g.replace(/\, ?$/,""),this.i18n.conciseVerbosityReplacements))for(var y=0,T=Object.entries(this.i18n.conciseVerbosityReplacements());y=12?this.i18n.pm&&this.i18n.pm()||"PM":this.i18n.am&&this.i18n.am()||"AM"},L.locales={},L})();M.ExpressionDescriptor=u},747(n,M,c){Object.defineProperty(M,"__esModule",{value:!0}),M.enLocaleLoader=void 0;var l=c(486),N=(function(){function u(){}return u.prototype.load=function(L){L.en=new l.en},u})();M.enLocaleLoader=N},486(n,M){Object.defineProperty(M,"__esModule",{value:!0}),M.en=void 0;var c=(function(){function l(){}return l.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},l.prototype.atX0MinutesPastTheHourGt20=function(){return null},l.prototype.commaMonthX0ThroughMonthX1=function(){return null},l.prototype.commaYearX0ThroughYearX1=function(){return null},l.prototype.use24HourTimeFormatByDefault=function(){return!1},l.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"An error occurred when generating the expression description. Check the cron expression syntax."},l.prototype.everyMinute=function(){return"every minute"},l.prototype.everyHour=function(){return"every hour"},l.prototype.atSpace=function(){return"At "},l.prototype.everyMinuteBetweenX0AndX1=function(){return"Every minute between %s and %s"},l.prototype.at=function(){return"At"},l.prototype.spaceAnd=function(){return" and"},l.prototype.everySecond=function(){return"every second"},l.prototype.everyX0Seconds=function(){return"every %s seconds"},l.prototype.secondsX0ThroughX1PastTheMinute=function(){return"seconds %s through %s past the minute"},l.prototype.atX0SecondsPastTheMinute=function(){return"at %s seconds past the minute"},l.prototype.everyX0Minutes=function(){return"every %s minutes"},l.prototype.minutesX0ThroughX1PastTheHour=function(){return"minutes %s through %s past the hour"},l.prototype.atX0MinutesPastTheHour=function(){return"at %s minutes past the hour"},l.prototype.everyX0Hours=function(){return"every %s hours"},l.prototype.betweenX0AndX1=function(){return"between %s and %s"},l.prototype.atX0=function(){return"at %s"},l.prototype.commaEveryDay=function(){return", every day"},l.prototype.commaEveryX0DaysOfTheWeek=function(){return", every %s days of the week"},l.prototype.commaX0ThroughX1=function(){return", %s through %s"},l.prototype.commaAndX0ThroughX1=function(){return", %s through %s"},l.prototype.first=function(){return"first"},l.prototype.second=function(){return"second"},l.prototype.third=function(){return"third"},l.prototype.fourth=function(){return"fourth"},l.prototype.fifth=function(){return"fifth"},l.prototype.commaOnThe=function(){return", on the "},l.prototype.spaceX0OfTheMonth=function(){return" %s of the month"},l.prototype.lastDay=function(){return"the last day"},l.prototype.commaOnTheLastX0OfTheMonth=function(){return", on the last %s of the month"},l.prototype.commaOnlyOnX0=function(){return", only on %s"},l.prototype.commaAndOnX0=function(){return", and on %s"},l.prototype.commaEveryX0Months=function(){return", every %s months"},l.prototype.commaOnlyInX0=function(){return", only in %s"},l.prototype.commaOnTheLastDayOfTheMonth=function(){return", on the last day of the month"},l.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", on the last weekday of the month"},l.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s days before the last day of the month"},l.prototype.firstWeekday=function(){return"first weekday"},l.prototype.weekdayNearestDayX0=function(){return"weekday nearest day %s"},l.prototype.commaOnTheX0OfTheMonth=function(){return", on the %s of the month"},l.prototype.commaEveryX0Days=function(){return", every %s days in a month"},l.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", between day %s and %s of the month"},l.prototype.commaOnDayX0OfTheMonth=function(){return", on day %s of the month"},l.prototype.commaEveryHour=function(){return", every hour"},l.prototype.commaEveryX0Years=function(){return", every %s years"},l.prototype.commaStartingX0=function(){return", starting %s"},l.prototype.daysOfTheWeek=function(){return["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},l.prototype.monthsOfTheYear=function(){return["January","February","March","April","May","June","July","August","September","October","November","December"]},l.prototype.atReboot=function(){return"Run once, at startup"},l.prototype.onTheHour=function(){return"on the hour"},l})();M.en=c},515(n,M){Object.defineProperty(M,"__esModule",{value:!0});function c(N,u){if(!N)throw new Error(u)}var l=(function(){function N(){}return N.secondRange=function(u){for(var L=u.split(","),g=0;g=0&&j<=59,"seconds part must be >= 0 and <= 59")}},N.minuteRange=function(u){for(var L=u.split(","),g=0;g=0&&j<=59,"minutes part must be >= 0 and <= 59")}},N.hourRange=function(u){for(var L=u.split(","),g=0;g=0&&j<=23,"hours part must be >= 0 and <= 23")}},N.dayOfMonthRange=function(u){for(var L=u.split(","),g=0;g=1&&j<=31,"DOM part must be >= 1 and <= 31")}},N.monthRange=function(u,L){for(var g=u.split(","),j=0;j=1&&y<=12,L?"month part must be >= 0 and <= 11":"month part must be >= 1 and <= 12")}},N.dayOfWeekRange=function(u,L){for(var g=u.split(","),j=0;j=0&&y<=6,L?"DOW part must be >= 0 and <= 6":"DOW part must be >= 1 and <= 7")}},N})();M.default=l},823(n,M){Object.defineProperty(M,"__esModule",{value:!0}),M.StringUtilities=void 0;var c=(function(){function l(){}return l.format=function(N){for(var u=[],L=1;L-1})},l})();M.StringUtilities=c}},i={};function r(n){var M=i[n];if(M!==void 0)return M.exports;var c=i[n]={exports:{}};return t[n](c,c.exports,r),c.exports}var o={};return(()=>{var n=o;Object.defineProperty(n,"__esModule",{value:!0}),n.toString=void 0;var M=r(333),c=r(747);M.ExpressionDescriptor.initialize(new c.enLocaleLoader),n.default=M.ExpressionDescriptor;var l=M.ExpressionDescriptor.toString;n.toString=l})(),o})())})(Qn)),Qn.exports}var a_e=ft();const M_e=xj(a_e);var c_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.fr=void 0;var N=(function(){function u(){}return u.prototype.conciseVerbosityReplacements=function(){return{"de le":"du"}},u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Une erreur est survenue en générant la description de l'expression cron. Vérifiez sa syntaxe."},u.prototype.everyMinute=function(){return"toutes les minutes"},u.prototype.everyHour=function(){return"toutes les heures"},u.prototype.atSpace=function(){return"À "},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Toutes les minutes entre %s et %s"},u.prototype.at=function(){return"À"},u.prototype.spaceAnd=function(){return" et"},u.prototype.everySecond=function(){return"toutes les secondes"},u.prototype.everyX0Seconds=function(){return"toutes les %s secondes"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"les secondes entre %s et %s après la minute"},u.prototype.atX0SecondsPastTheMinute=function(){return"%s secondes après la minute"},u.prototype.everyX0Minutes=function(){return"toutes les %s minutes"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"les minutes entre %s et %s après l'heure"},u.prototype.atX0MinutesPastTheHour=function(){return"%s minutes après l'heure"},u.prototype.everyX0Hours=function(){return"toutes les %s heures"},u.prototype.betweenX0AndX1=function(){return"de %s à %s"},u.prototype.atX0=function(){return"%s"},u.prototype.commaEveryDay=function(){return", tous les jours"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", tous les %s jours de la semaine"},u.prototype.commaX0ThroughX1=function(){return", de %s à %s"},u.prototype.commaAndX0ThroughX1=function(){return", et de %s à %s"},u.prototype.first=function(){return"premier"},u.prototype.second=function(){return"second"},u.prototype.third=function(){return"troisième"},u.prototype.fourth=function(){return"quatrième"},u.prototype.fifth=function(){return"cinquième"},u.prototype.commaOnThe=function(){return", le "},u.prototype.spaceX0OfTheMonth=function(){return" %s du mois"},u.prototype.lastDay=function(){return"le dernier jour"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", le dernier %s du mois"},u.prototype.commaOnlyOnX0=function(){return", uniquement le %s"},u.prototype.commaAndOnX0=function(){return", et %s"},u.prototype.commaEveryX0Months=function(){return", tous les %s mois"},u.prototype.commaOnlyInX0=function(){return", uniquement en %s"},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", le dernier jour du mois"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", le dernier jour ouvrable du mois"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s jours avant le dernier jour du mois"},u.prototype.firstWeekday=function(){return"premier jour ouvrable"},u.prototype.weekdayNearestDayX0=function(){return"jour ouvrable le plus proche du %s"},u.prototype.commaOnTheX0OfTheMonth=function(){return", le %s du mois"},u.prototype.commaEveryX0Days=function(){return", tous les %s jours"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", du %s au %s du mois"},u.prototype.commaOnDayX0OfTheMonth=function(){return", le %s du mois"},u.prototype.commaEveryHour=function(){return", chaque heure"},u.prototype.commaEveryX0Years=function(){return", tous les %s ans"},u.prototype.commaDaysX0ThroughX1=function(){return", du %s au %s"},u.prototype.commaStartingX0=function(){return", à partir de %s"},u.prototype.daysOfTheWeek=function(){return["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},u.prototype.monthsOfTheYear=function(){return["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},u.prototype.onTheHour=function(){return"à l'heure pile"},u})();return l.fr=N,c().locales.fr=new N,n})())})(c_e);var u_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.es=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Ocurrió un error mientras se generaba la descripción de la expresión. Revise la sintaxis de la expresión de cron."},u.prototype.at=function(){return"A las"},u.prototype.atSpace=function(){return"A las "},u.prototype.atX0=function(){return"a las %s"},u.prototype.atX0MinutesPastTheHour=function(){return"a los %s minutos de la hora"},u.prototype.atX0SecondsPastTheMinute=function(){return"a los %s segundos del minuto"},u.prototype.betweenX0AndX1=function(){return"entre las %s y las %s"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", entre los días %s y %s del mes"},u.prototype.commaEveryDay=function(){return", cada día"},u.prototype.commaEveryX0Days=function(){return", cada %s días"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", cada %s días de la semana"},u.prototype.commaEveryX0Months=function(){return", cada %s meses"},u.prototype.commaOnDayX0OfTheMonth=function(){return", el día %s del mes"},u.prototype.commaOnlyInX0=function(){return", sólo en %s"},u.prototype.commaOnlyOnX0=function(){return", sólo el %s"},u.prototype.commaAndOnX0=function(){return", y el %s"},u.prototype.commaOnThe=function(){return", en el "},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", en el último día del mes"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", en el último día de la semana del mes"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s días antes del último día del mes"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", en el último %s del mes"},u.prototype.commaOnTheX0OfTheMonth=function(){return", en el %s del mes"},u.prototype.commaX0ThroughX1=function(){return", de %s a %s"},u.prototype.commaAndX0ThroughX1=function(){return", y de %s a %s"},u.prototype.everyHour=function(){return"cada hora"},u.prototype.everyMinute=function(){return"cada minuto"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"cada minuto entre las %s y las %s"},u.prototype.everySecond=function(){return"cada segundo"},u.prototype.everyX0Hours=function(){return"cada %s horas"},u.prototype.everyX0Minutes=function(){return"cada %s minutos"},u.prototype.everyX0Seconds=function(){return"cada %s segundos"},u.prototype.fifth=function(){return"quinto"},u.prototype.first=function(){return"primero"},u.prototype.firstWeekday=function(){return"primer día de la semana"},u.prototype.fourth=function(){return"cuarto"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"del minuto %s al %s pasada la hora"},u.prototype.second=function(){return"segundo"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"En los segundos %s al %s de cada minuto"},u.prototype.spaceAnd=function(){return" y"},u.prototype.spaceX0OfTheMonth=function(){return" %s del mes"},u.prototype.lastDay=function(){return"el último día"},u.prototype.third=function(){return"tercer"},u.prototype.weekdayNearestDayX0=function(){return"día de la semana más próximo al %s"},u.prototype.commaEveryX0Years=function(){return", cada %s años"},u.prototype.commaStartingX0=function(){return", comenzando %s"},u.prototype.daysOfTheWeek=function(){return["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},u.prototype.monthsOfTheYear=function(){return["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},u.prototype.onTheHour=function(){return"en punto"},u})();return l.es=N,c().locales.es=new N,n})())})(u_e);var l_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.de=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.everyMinute=function(){return"jede Minute"},u.prototype.everyHour=function(){return"jede Stunde"},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Beim Generieren der Ausdrucksbeschreibung ist ein Fehler aufgetreten. Überprüfen Sie die Syntax des Cron-Ausdrucks."},u.prototype.atSpace=function(){return"Um "},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Jede Minute zwischen %s und %s"},u.prototype.at=function(){return"Um"},u.prototype.spaceAnd=function(){return" und"},u.prototype.everySecond=function(){return"Jede Sekunde"},u.prototype.everyX0Seconds=function(){return"alle %s Sekunden"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"Sekunden %s bis %s"},u.prototype.atX0SecondsPastTheMinute=function(){return"bei Sekunde %s"},u.prototype.everyX0Minutes=function(){return"alle %s Minuten"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"Minuten %s bis %s"},u.prototype.atX0MinutesPastTheHour=function(){return"bei Minute %s"},u.prototype.everyX0Hours=function(){return"alle %s Stunden"},u.prototype.betweenX0AndX1=function(){return"zwischen %s und %s"},u.prototype.atX0=function(){return"um %s"},u.prototype.commaEveryDay=function(){return", jeden Tag"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", alle %s Tage der Woche"},u.prototype.commaX0ThroughX1=function(){return", %s bis %s"},u.prototype.commaAndX0ThroughX1=function(){return", und %s bis %s"},u.prototype.first=function(){return"ersten"},u.prototype.second=function(){return"zweiten"},u.prototype.third=function(){return"dritten"},u.prototype.fourth=function(){return"vierten"},u.prototype.fifth=function(){return"fünften"},u.prototype.commaOnThe=function(){return", am "},u.prototype.spaceX0OfTheMonth=function(){return" %s des Monats"},u.prototype.lastDay=function(){return"der letzte Tag"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", am letzten %s des Monats"},u.prototype.commaOnlyOnX0=function(){return", nur jeden %s"},u.prototype.commaAndOnX0=function(){return", und jeden %s"},u.prototype.commaEveryX0Months=function(){return", alle %s Monate"},u.prototype.commaOnlyInX0=function(){return", nur im %s"},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", am letzten Tag des Monats"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", am letzten Werktag des Monats"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s tage vor dem letzten Tag des Monats"},u.prototype.firstWeekday=function(){return"ersten Werktag"},u.prototype.weekdayNearestDayX0=function(){return"Werktag am nächsten zum %s Tag"},u.prototype.commaOnTheX0OfTheMonth=function(){return", am %s des Monats"},u.prototype.commaEveryX0Days=function(){return", alle %s Tage"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", zwischen Tag %s und %s des Monats"},u.prototype.commaOnDayX0OfTheMonth=function(){return", an Tag %s des Monats"},u.prototype.commaEveryX0Years=function(){return", alle %s Jahre"},u.prototype.commaStartingX0=function(){return", beginnend %s"},u.prototype.daysOfTheWeek=function(){return["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},u.prototype.monthsOfTheYear=function(){return["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},u.prototype.onTheHour=function(){return"zur vollen Stunde"},u})();return l.de=N,c().locales.de=new N,n})())})(l_e);var N_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.it=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"È verificato un errore durante la generazione la descrizione espressione. Controllare la sintassi delle espressioni cron."},u.prototype.at=function(){return"Alle"},u.prototype.atSpace=function(){return"Alle "},u.prototype.atX0=function(){return"alle %s"},u.prototype.atX0MinutesPastTheHour=function(){return"al %s minuto passata l'ora"},u.prototype.atX0SecondsPastTheMinute=function(){return"al %s secondo passato il minuto"},u.prototype.betweenX0AndX1=function(){return"tra le %s e le %s"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", tra il giorno %s e %s del mese"},u.prototype.commaEveryDay=function(){return", ogni giorno"},u.prototype.commaEveryX0Days=function(){return", ogni %s giorni"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", ogni %s giorni della settimana"},u.prototype.commaEveryX0Months=function(){return", ogni %s mesi"},u.prototype.commaEveryX0Years=function(){return", ogni %s anni"},u.prototype.commaOnDayX0OfTheMonth=function(){return", il giorno %s del mese"},u.prototype.commaOnlyInX0=function(){return", solo in %s"},u.prototype.commaOnlyOnX0=function(){return", solo il %s"},u.prototype.commaAndOnX0=function(){return", e il %s"},u.prototype.commaOnThe=function(){return", il "},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", l'ultimo giorno del mese"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", nell'ultima settimana del mese"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s giorni prima dell'ultimo giorno del mese"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", l'ultimo %s del mese"},u.prototype.commaOnTheX0OfTheMonth=function(){return", il %s del mese"},u.prototype.commaX0ThroughX1=function(){return", %s al %s"},u.prototype.commaAndX0ThroughX1=function(){return", e %s al %s"},u.prototype.everyHour=function(){return"ogni ora"},u.prototype.everyMinute=function(){return"ogni minuto"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Ogni minuto tra le %s e le %s"},u.prototype.everySecond=function(){return"ogni secondo"},u.prototype.everyX0Hours=function(){return"ogni %s ore"},u.prototype.everyX0Minutes=function(){return"ogni %s minuti"},u.prototype.everyX0Seconds=function(){return"ogni %s secondi"},u.prototype.fifth=function(){return"quinto"},u.prototype.first=function(){return"primo"},u.prototype.firstWeekday=function(){return"primo giorno della settimana"},u.prototype.fourth=function(){return"quarto"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"minuti %s al %s dopo l'ora"},u.prototype.second=function(){return"secondo"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"secondi %s al %s oltre il minuto"},u.prototype.spaceAnd=function(){return" e"},u.prototype.spaceX0OfTheMonth=function(){return" %s del mese"},u.prototype.lastDay=function(){return"l'ultimo giorno"},u.prototype.third=function(){return"terzo"},u.prototype.weekdayNearestDayX0=function(){return"giorno della settimana più vicino al %s"},u.prototype.commaStartingX0=function(){return", a partire %s"},u.prototype.daysOfTheWeek=function(){return["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},u.prototype.monthsOfTheYear=function(){return["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},u.prototype.onTheHour=function(){return"all'ora esatta"},u})();return l.it=N,c().locales.it=new N,n})())})(N_e);var L_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(g){g.exports=t}},r={};function o(g){var j=r[g];if(j!==void 0)return j.exports;var y=r[g]={exports:{}};return i[g](y,y.exports,o),y.exports}o.n=g=>{var j=g&&g.__esModule?()=>g.default:()=>g;return o.d(j,{a:j}),j},o.d=(g,j)=>{for(var y in j)o.o(j,y)&&!o.o(g,y)&&Object.defineProperty(g,y,{enumerable:!0,get:j[y]})},o.o=(g,j)=>Object.prototype.hasOwnProperty.call(g,j),o.r=g=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.ru=void 0;var N=function(g,j){var y=Number(g);return y!==void 0?j[y%100>4&&y%100<20?2:[2,0,1,1,1,2][y%10<5?Math.abs(y)%10:5]]:j[2]},u=function(g,j){var y=Number(g);return y!==void 0?j[y===0?0:y===1||y===2||y===4?1:2]:j[1]},L=(function(){function g(){}return g.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},g.prototype.atX0MinutesPastTheHourGt20=function(){return null},g.prototype.commaMonthX0ThroughMonthX1=function(){return null},g.prototype.commaYearX0ThroughYearX1=function(){return null},g.prototype.use24HourTimeFormatByDefault=function(){return!0},g.prototype.everyMinute=function(){return"каждую минуту"},g.prototype.everyHour=function(){return"каждый час"},g.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Произошла ошибка во время генерации описания выражения. Проверьте синтаксис крон-выражения."},g.prototype.atSpace=function(){return"В "},g.prototype.everyMinuteBetweenX0AndX1=function(){return"Каждую минуту с %s по %s"},g.prototype.at=function(){return"В"},g.prototype.spaceAnd=function(){return" и"},g.prototype.everySecond=function(){return"каждую секунду"},g.prototype.everyX0Seconds=function(j){return N(j,["каждую %s секунду","каждые %s секунды","каждые %s секунд"])},g.prototype.secondsX0ThroughX1PastTheMinute=function(){return"секунды с %s по %s"},g.prototype.atX0SecondsPastTheMinute=function(j){return N(j,["в %s секунду","в %s секунды","в %s секунд"])},g.prototype.everyX0Minutes=function(j){return N(j,["каждую %s минуту","каждые %s минуты","каждые %s минут"])},g.prototype.minutesX0ThroughX1PastTheHour=function(){return"минуты с %s по %s"},g.prototype.atX0MinutesPastTheHour=function(j){return N(j,["в %s минуту","в %s минуты","в %s минут"])},g.prototype.everyX0Hours=function(j){return N(j,["каждый %s час","каждые %s часа","каждые %s часов"])},g.prototype.betweenX0AndX1=function(){return"с %s по %s"},g.prototype.atX0=function(){return"в %s"},g.prototype.commaEveryDay=function(){return", каждый день"},g.prototype.commaEveryX0DaysOfTheWeek=function(j){return N(j,[", каждый %s день недели",", каждые %s дня недели",", каждые %s дней недели"])},g.prototype.commaX0ThroughX1=function(j){return j&&(j[0]=="2"||j[0]=="3")?", со %s по %s":", с %s по %s"},g.prototype.commaAndX0ThroughX1=function(j){return j&&(j[0]=="2"||j[0]=="3")?" и со %s по %s":" и с %s по %s"},g.prototype.first=function(j){return u(j,["первое","первый","первую"])},g.prototype.second=function(j){return u(j,["второе","второй","вторую"])},g.prototype.third=function(j){return u(j,["третье","третий","третью"])},g.prototype.fourth=function(j){return u(j,["четвертое","четвертый","четвертую"])},g.prototype.fifth=function(j){return u(j,["пятое","пятый","пятую"])},g.prototype.commaOnThe=function(j){return j==="2"?", во ":", в "},g.prototype.spaceX0OfTheMonth=function(){return" %s месяца"},g.prototype.lastDay=function(){return"последний день"},g.prototype.commaOnTheLastX0OfTheMonth=function(j){return u(j,[", в последнее %s месяца",", в последний %s месяца",", в последнюю %s месяца"])},g.prototype.commaOnlyOnX0=function(j){return j&&j[0]==="2"?", только во %s":", только в %s"},g.prototype.commaAndOnX0=function(){return", и %s"},g.prototype.commaEveryX0Months=function(j){return N(j,[""," каждые %s месяца"," каждые %s месяцев"])},g.prototype.commaOnlyInMonthX0=function(){return", только %s"},g.prototype.commaOnlyInX0=function(){return", только в %s"},g.prototype.commaOnTheLastDayOfTheMonth=function(){return", в последний день месяца"},g.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", в последний будний день месяца"},g.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(j){return N(j,[", за %s день до конца месяца",", за %s дня до конца месяца",", за %s дней до конца месяца"])},g.prototype.firstWeekday=function(){return"первый будний день"},g.prototype.weekdayNearestDayX0=function(){return"ближайший будний день к %s числу"},g.prototype.commaOnTheX0OfTheMonth=function(){return", в %s месяца"},g.prototype.commaEveryX0Days=function(j){return N(j,[", каждый %s день",", каждые %s дня",", каждые %s дней"])},g.prototype.commaBetweenDayX0AndX1OfTheMonth=function(j){return j&&j.substring(0,j.indexOf("-"))=="2"?", со %s по %s число месяца":", с %s по %s число месяца"},g.prototype.commaOnDayX0OfTheMonth=function(j){return j&&j[0]=="2"?", во %s число месяца":", в %s число месяца"},g.prototype.commaEveryX0Years=function(j){return N(j,[", каждый %s год",", каждые %s года",", каждые %s лет"])},g.prototype.commaStartingX0=function(){return", начало %s"},g.prototype.daysOfTheWeek=function(){return["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},g.prototype.daysOfTheWeekInCase=function(j){return j===void 0&&(j=2),j==1?["воскресенья","понедельника","вторника","среды","четверга","пятницы","субботы"]:["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"]},g.prototype.monthsOfTheYear=function(){return["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},g.prototype.monthsOfTheYearInCase=function(j){return j==1?["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]:this.monthsOfTheYear()},g.prototype.onTheHour=function(){return"ровно в час"},g})();return l.ru=L,c().locales.ru=new L,n})())})(L_e);var g_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.zh_CN=void 0;var N=(function(){function u(){}return u.prototype.setPeriodBeforeTime=function(){return!0},u.prototype.pm=function(){return"下午"},u.prototype.am=function(){return"上午"},u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return", 从%s年至%s年"},u.prototype.use24HourTimeFormatByDefault=function(){return!1},u.prototype.everyMinute=function(){return"每分钟"},u.prototype.everyHour=function(){return"每小时"},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"生成表达式描述时发生了错误,请检查cron表达式语法。"},u.prototype.atSpace=function(){return"在"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"在 %s 至 %s 之间的每分钟"},u.prototype.at=function(){return"在"},u.prototype.spaceAnd=function(){return" 和"},u.prototype.everySecond=function(){return"每秒"},u.prototype.everyX0Seconds=function(){return"每隔 %s 秒"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"在一分钟后的第 %s 到 %s 秒"},u.prototype.atX0SecondsPastTheMinute=function(){return"在一分钟后的第 %s 秒"},u.prototype.everyX0Minutes=function(){return"每隔 %s 分钟"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"在整点后的第 %s 到 %s 分钟"},u.prototype.atX0MinutesPastTheHour=function(){return"在整点后的第 %s 分钟"},u.prototype.everyX0Hours=function(){return"每隔 %s 小时"},u.prototype.betweenX0AndX1=function(){return"在 %s 和 %s 之间"},u.prototype.atX0=function(){return"在%s"},u.prototype.commaEveryDay=function(){return", 每天"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", 每周的每 %s 天"},u.prototype.commaX0ThroughX1=function(){return", %s至%s"},u.prototype.commaAndX0ThroughX1=function(){return", 和%s至%s"},u.prototype.first=function(){return"第一个"},u.prototype.second=function(){return"第二个"},u.prototype.third=function(){return"第三个"},u.prototype.fourth=function(){return"第四个"},u.prototype.fifth=function(){return"第五个"},u.prototype.commaOnThe=function(){return", 限每月的"},u.prototype.spaceX0OfTheMonth=function(){return"%s"},u.prototype.lastDay=function(){return"本月最后一天"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", 限每月的最后一个%s"},u.prototype.commaOnlyOnX0=function(){return", 仅%s"},u.prototype.commaAndOnX0=function(){return", 或者为%s"},u.prototype.commaEveryX0Months=function(){return", 每隔 %s 个月"},u.prototype.commaOnlyInX0=function(){return", 仅限%s"},u.prototype.commaOnlyInMonthX0=function(){return", 仅于%s份"},u.prototype.commaOnlyInYearX0=function(){return", 仅于 %s 年"},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", 限每月的最后一天"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", 限每月的最后一个工作日"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", 限每月最后%s天"},u.prototype.firstWeekday=function(){return"第一个工作日"},u.prototype.weekdayNearestDayX0=function(){return"最接近 %s 号的工作日"},u.prototype.commaOnTheX0OfTheMonth=function(){return", 限每月的%s"},u.prototype.commaEveryX0Days=function(){return", 每隔 %s 天"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", 限每月的 %s 至 %s 之间"},u.prototype.commaOnDayX0OfTheMonth=function(){return", 限每月%s"},u.prototype.commaEveryX0Years=function(){return", 每隔 %s 年"},u.prototype.commaStartingX0=function(){return", %s开始"},u.prototype.dayX0=function(){return" %s 号"},u.prototype.daysOfTheWeek=function(){return["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},u.prototype.monthsOfTheYear=function(){return["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},u.prototype.onTheHour=function(){return"整点"},u})();return l.zh_CN=N,c().locales.zh_CN=new N,n})())})(g_e);var j_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.uk=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.everyMinute=function(){return"щохвилини"},u.prototype.everyHour=function(){return"щогодини"},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"ВІдбулася помилка підчас генерації опису. Перевірта правильність написання cron виразу."},u.prototype.atSpace=function(){return"О "},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Щохвилини між %s та %s"},u.prototype.at=function(){return"О"},u.prototype.spaceAnd=function(){return" та"},u.prototype.everySecond=function(){return"Щосекунди"},u.prototype.everyX0Seconds=function(){return"кожні %s секунд"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"з %s по %s секунду"},u.prototype.atX0SecondsPastTheMinute=function(){return"о %s секунді"},u.prototype.everyX0Minutes=function(){return"кожні %s хвилин"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"з %s по %s хвилину"},u.prototype.atX0MinutesPastTheHour=function(){return"о %s хвилині"},u.prototype.everyX0Hours=function(){return"кожні %s годин"},u.prototype.betweenX0AndX1=function(){return"між %s та %s"},u.prototype.atX0=function(){return"о %s"},u.prototype.commaEveryDay=function(){return", щоденно"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", кожен %s день тижня"},u.prototype.commaX0ThroughX1=function(){return", %s по %s"},u.prototype.commaAndX0ThroughX1=function(){return", та %s по %s"},u.prototype.first=function(){return"перший"},u.prototype.second=function(){return"другий"},u.prototype.third=function(){return"третій"},u.prototype.fourth=function(){return"четвертий"},u.prototype.fifth=function(){return"п'ятий"},u.prototype.commaOnThe=function(){return", в "},u.prototype.spaceX0OfTheMonth=function(){return" %s місяця"},u.prototype.lastDay=function(){return"останній день"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", в останній %s місяця"},u.prototype.commaOnlyOnX0=function(){return", тільки в %s"},u.prototype.commaAndOnX0=function(){return", і в %s"},u.prototype.commaEveryX0Months=function(){return", кожен %s місяць"},u.prototype.commaOnlyInX0=function(){return", тільки в %s"},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", в останній день місяця"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", в останній будень місяця"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s днів до останнього дня місяця"},u.prototype.firstWeekday=function(){return"перший будень"},u.prototype.weekdayNearestDayX0=function(){return"будень найближчий до %s дня"},u.prototype.commaOnTheX0OfTheMonth=function(){return", в %s місяця"},u.prototype.commaEveryX0Days=function(){return", кожен %s день"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", між %s та %s днями місяця"},u.prototype.commaOnDayX0OfTheMonth=function(){return", на %s день місяця"},u.prototype.commaEveryX0Years=function(){return", кожні %s роки"},u.prototype.commaStartingX0=function(){return", початок %s"},u.prototype.daysOfTheWeek=function(){return["неділя","понеділок","вівторок","середа","четвер","п'ятниця","субота"]},u.prototype.monthsOfTheYear=function(){return["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},u.prototype.onTheHour=function(){return"рівно о годині"},u})();return l.uk=N,c().locales.uk=new N,n})())})(j_e);var y_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.pt_BR=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Ocorreu um erro ao gerar a descrição da expressão Cron."},u.prototype.at=function(){return"às"},u.prototype.atSpace=function(){return"às "},u.prototype.atX0=function(){return"Às %s"},u.prototype.atX0MinutesPastTheHour=function(){return"aos %s minutos da hora"},u.prototype.atX0SecondsPastTheMinute=function(){return"aos %s segundos do minuto"},u.prototype.betweenX0AndX1=function(){return"entre %s e %s"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", entre os dias %s e %s do mês"},u.prototype.commaEveryDay=function(){return", a cada dia"},u.prototype.commaEveryX0Days=function(){return", a cada %s dias"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", a cada %s dias de semana"},u.prototype.commaEveryX0Months=function(){return", a cada %s meses"},u.prototype.commaOnDayX0OfTheMonth=function(){return", no dia %s do mês"},u.prototype.commaOnlyInX0=function(L){return L&&L.length>1&&L[1]==="-"?"somente %s":", somente em %s"},u.prototype.commaOnlyOnX0=function(L){return L&&L.length>1&&L[1]==="-"?", somente %s":", somente de %s"},u.prototype.commaAndOnX0=function(){return", e de %s"},u.prototype.commaOnThe=function(L,g){return g==="6"||g==="0"?", no":", na "},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", no último dia do mês"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", no último dia da semana do mês"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s dias antes do último dia do mês"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", na última %s do mês"},u.prototype.commaOnTheX0OfTheMonth=function(){return", no %s do mês"},u.prototype.commaX0ThroughX1=function(){return", de %s a %s"},u.prototype.commaAndX0ThroughX1=function(){return", e de %s a %s"},u.prototype.everyHour=function(){return"a cada hora"},u.prototype.everyMinute=function(){return"a cada minuto"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"a cada minuto entre %s e %s"},u.prototype.everySecond=function(){return"a cada segundo"},u.prototype.everyX0Hours=function(){return"a cada %s horas"},u.prototype.everyX0Minutes=function(){return"a cada %s minutos"},u.prototype.everyX0Seconds=function(){return"a cada %s segundos"},u.prototype.fifth=function(L){return L==="6"||L==="0"?"quinto":"quinta"},u.prototype.first=function(L){return L==="6"||L==="0"?"primeiro":"primeira"},u.prototype.firstWeekday=function(){return"primeiro dia da semana"},u.prototype.fourth=function(L){return L==="6"||L==="0"?"quarto":"quarta"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"do minuto %s até %s de cada hora"},u.prototype.second=function(L){return L==="6"||L==="0"?"segundo":"segunda"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"No segundo %s até %s de cada minuto"},u.prototype.spaceAnd=function(){return" e"},u.prototype.spaceX0OfTheMonth=function(){return" %s do mês"},u.prototype.lastDay=function(){return"o último dia"},u.prototype.third=function(L){return L==="6"||L==="0"?"terceiro":"terceira"},u.prototype.weekdayNearestDayX0=function(){return"dia da semana mais próximo do dia %s"},u.prototype.commaEveryX0Years=function(){return", a cada %s anos"},u.prototype.commaStartingX0=function(){return", iniciando %s"},u.prototype.daysOfTheWeek=function(){return["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},u.prototype.monthsOfTheYear=function(){return["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},u.prototype.onTheHour=function(){return"na hora certa"},u})();return l.pt_BR=N,c().locales.pt_BR=new N,n})())})(y_e);var T_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft())})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.pl=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Wystąpił błąd podczas generowania opisu wyrażenia cron. Sprawdź składnię wyrażenia cron."},u.prototype.at=function(){return"O"},u.prototype.atSpace=function(){return"O "},u.prototype.atX0=function(){return"o %s"},u.prototype.atX0MinutesPastTheHour=function(){return"w %s minucie"},u.prototype.atX0SecondsPastTheMinute=function(){return"w %s sekundzie"},u.prototype.betweenX0AndX1=function(){return"od %s do %s"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", od %s-ego do %s-ego dnia miesiąca"},u.prototype.commaEveryDay=function(){return", co dzień"},u.prototype.commaEveryX0Days=function(){return", co %s dni"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", co %s dni tygodnia"},u.prototype.commaEveryX0Months=function(){return", co %s miesięcy"},u.prototype.commaEveryX0Years=function(){return", co %s lat"},u.prototype.commaOnDayX0OfTheMonth=function(){return", %s-ego dnia miesiąca"},u.prototype.commaOnlyInX0=function(){return", tylko %s"},u.prototype.commaOnlyOnX0=function(){return", tylko %s"},u.prototype.commaAndOnX0=function(){return", i %s"},u.prototype.commaOnThe=function(){return", "},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", ostatni dzień miesiąca"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", ostatni dzień roboczy miesiąca"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s dni przed ostatnim dniem miesiąca"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", ostatni %s miesiąca"},u.prototype.commaOnTheX0OfTheMonth=function(){return", %s miesiąca"},u.prototype.commaX0ThroughX1=function(){return", od %s do %s"},u.prototype.commaAndX0ThroughX1=function(){return", i od %s do %s"},u.prototype.everyHour=function(){return"co godzinę"},u.prototype.everyMinute=function(){return"co minutę"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Co minutę od %s do %s"},u.prototype.everySecond=function(){return"co sekundę"},u.prototype.everyX0Hours=function(){return"co %s godzin"},u.prototype.everyX0Minutes=function(){return"co %s minut"},u.prototype.everyX0Seconds=function(){return"co %s sekund"},u.prototype.fifth=function(){return"piąty"},u.prototype.first=function(){return"pierwszy"},u.prototype.firstWeekday=function(){return"pierwszy dzień roboczy"},u.prototype.fourth=function(){return"czwarty"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"minuty od %s do %s"},u.prototype.second=function(){return"drugi"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"sekundy od %s do %s"},u.prototype.spaceAnd=function(){return" i"},u.prototype.spaceX0OfTheMonth=function(){return" %s miesiąca"},u.prototype.lastDay=function(){return"ostatni dzień"},u.prototype.third=function(){return"trzeci"},u.prototype.weekdayNearestDayX0=function(){return"dzień roboczy najbliższy %s-ego dnia"},u.prototype.commaStartingX0=function(){return", startowy %s"},u.prototype.daysOfTheWeek=function(){return["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},u.prototype.monthsOfTheYear=function(){return["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"]},u.prototype.onTheHour=function(){return"o pełnej godzinie"},u})();return l.pl=N,c().locales.pl=new N,n})())})(T_e);function VL(s,e){return M_e.toString(s,{locale:e})}const Be={mainDiv:{width:"100%",height:"100%"},periodSelect:{display:"block",width:250},tabContent:{padding:20,height:"calc(100% - 240px)",overflow:"auto"},numberButton:{padding:4,minWidth:40,margin:5},appBar:{color:"white"},warning:{marginLeft:16,color:"red",fontSize:12}},D_e=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],d_e=["January","February","March","April","May","June","July","August","September","October","November","December"];function m0(s,e){const t=[];if(s==="*"){if(e===24||e===60||e===7)for(let r=0;r1){const n=parseInt(o[1],10);for(let M=parseInt(o[0],10);M<=n;M++)t.push(M)}else t.push(parseInt(i[r],10))}t.sort();for(let r=t.length-1;r>=0;r--)t[r]===t[r+1]&&t.splice(r+1,1);return t}function f0(s,e){if(typeof s!="object"&&(s=[s]),s.length===e)return"*";const t=[];if(!s.length)return"-";s=s.map(o=>parseInt(o,10)),s.sort((o,n)=>o-n);let i=s[0],r=s[0];for(let o=1;othis.props.onChange&&this.props.onChange(this.state.cron),100)}static cron2state(e){e=e.replace(/['"]/g,"").trim();const t=e.split(" ").map(r=>r.trim());let i;return t.length===6?i={seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",dates:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:i={seconds:!1,minutes:t[0]||"*",hours:t[1]||"*",dates:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},i}static state2cron(e){let t=`${e.minutes} ${e.hours} ${e.dates} ${e.months} ${e.dow}`;return e.seconds!==!1&&(t=`${e.seconds} ${t}`),t}recalcCron(){const e=rs.state2cron(this.state);e!==this.state.cron&&this.setState({cron:e},()=>this.props.onChange&&this.props.onChange(this.state.cron))}onToggle(e,t,i){if(e===!0)this.setCronAttr(t,"*");else if(e===!1)i===60||i===24?this.setCronAttr(t,"0"):this.setCronAttr(t,"1");else{const r=m0(this.state[t],i),o=r.indexOf(e);o!==-1?r.splice(o,1):(r.push(e),r.sort()),this.setCronAttr(t,f0(r,i))}}getDigitsSelector(e,t){let i=[];if(t===7)i=[1,2,3,4,5,6,0];else if(t===60||t===24)for(let o=0;othis.onToggle(!1,e,t)},D.t("ra_Deselect all")),a.createElement(q,{key:"addall",variant:"contained",style:Be.numberButton,color:"secondary",onClick:()=>this.onToggle(!0,e,t)},D.t("ra_Select all")),a.createElement("div",{key:"all"},i.map(o=>[t===7&&o===4||t===12&&o===7||t===31&&!((o-1)%10)||t===60&&o&&!(o%10)||t===24&&o&&!(o%6)?a.createElement("div",{key:`allInner${o}`,style:{width:"100%"}}):null,a.createElement(q,{key:`_${o}`,variant:r.indexOf(o)!==-1?"contained":"outlined",style:Be.numberButton,color:r.indexOf(o)!==-1?"secondary":"primary",onClick:()=>this.onToggle(o,e,t)},t===7?D.t(D_e[o]):t===12?d_e[o-1]:o)]))]}getPeriodsTab(e,t){const i=this.state[e];let r=i==="*",o=i==null?!1:i.toString().includes("/"),n;if(this.state.modes[e]===null){n=r?"every":o?"everyN":"specific";const c=JSON.parse(JSON.stringify(this.state.modes));return c[e]=n,setTimeout(()=>this.setState({modes:c},()=>this.recalcCron()),100),null}r=this.state.modes[e]==="every",o=this.state.modes[e]==="everyN",n=this.state.modes[e];let M=1;return o&&i&&(M=parseInt(i.replace("*/",""),10)||1),a.createElement("div",null,a.createElement(nt,{variant:"standard",style:{...Be.periodSelect,verticalAlign:"bottom"},value:n,onChange:c=>{const l=JSON.parse(JSON.stringify(this.state.modes));if(l[e]=c.target.value,c.target.value==="every")this.setCronAttr(e,"*",l);else if(c.target.value==="everyN"){const N=parseInt((this.state[e]||"").toString().replace("*/",""),10)||1;this.setCronAttr(e,`*/${N}`,l)}else if(c.target.value==="specific"){let N=parseInt((this.state[e]||"").toString().split(",")[0],10)||0;!N&&(e==="months"||e==="dates")&&(N=1),this.setCronAttr(e,f0(N,t),l)}}},a.createElement(re,{key:"every",value:"every"},D.t(`sc_every_${e}`)),a.createElement(re,{key:"everyN",value:"everyN"},D.t(`sc_everyN_${e}`)),a.createElement(re,{key:"specific",value:"specific"},D.t(`sc_specific_${e}`))),o&&a.createElement(Te,{variant:"standard",key:"interval",label:D.t(`sc_${e}`),value:M,slotProps:{htmlInput:{min:1,max:t},inputLabel:{shrink:!0}},onChange:c=>{this.setState({[e]:`*/${c.target.value}`},()=>this.recalcCron())},type:"number",margin:"normal"}),!r&&!o&&this.getDigitsSelector(e,t))}static convertCronToText(e,t){return e.split(" ").includes("-")?D.t("ra_Invalid CRON"):VL(e,t)}setCronAttr(e,t,i){i?e==="seconds"?this.setState({seconds:t,modes:i},()=>this.recalcCron()):e==="minutes"?this.setState({minutes:t,modes:i},()=>this.recalcCron()):e==="hours"?this.setState({hours:t,modes:i},()=>this.recalcCron()):e==="dates"?this.setState({dates:t,modes:i},()=>this.recalcCron()):e==="months"?this.setState({months:t,modes:i},()=>this.recalcCron()):e==="dow"?this.setState({dow:t,modes:i},()=>this.recalcCron()):this.setState({modes:i},()=>this.recalcCron()):e==="seconds"?this.setState({seconds:t},()=>this.recalcCron()):e==="minutes"?this.setState({minutes:t},()=>this.recalcCron()):e==="hours"?this.setState({hours:t},()=>this.recalcCron()):e==="dates"?this.setState({dates:t},()=>this.recalcCron()):e==="months"?this.setState({months:t},()=>this.recalcCron()):e==="dow"&&this.setState({dow:t},()=>this.recalcCron())}render(){const e=this.state.seconds!==!1?this.state.tab:this.state.tab+1,t=this.state.minutes==="*"||this.state.minutes==="*/1",i=this.state.seconds==="*"||this.state.seconds==="*/1";return a.createElement("div",{style:Be.mainDiv},a.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)"}},a.createElement(Te,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0})),a.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)",height:60}},rs.convertCronToText(this.state.cron,this.props.language||"en"),a.createElement("span",{style:Be.warning},i?D.t("ra_warning_every_second"):t?D.t("ra_warning_every_minute"):"")),a.createElement(V,{control:a.createElement(ue,{checked:!!this.state.seconds,onChange:r=>this.setState({seconds:r.target.checked?"*":!1},()=>this.recalcCron())}),label:D.t("ra_use seconds")}),a.createElement(Bg,{position:"static",sx:{"&.MuiAppBar-root":Be.appBar},color:"secondary"},a.createElement(Rg,{value:this.state.tab,style:Be.appBar,color:"secondary",onChange:(r,o)=>this.setState({tab:o})},this.state.seconds!==!1&&a.createElement(Us,{id:"sc_seconds",label:D.t("sc_seconds")}),a.createElement(Us,{id:"minutes",label:D.t("sc_minutes")}),a.createElement(Us,{id:"hours",label:D.t("sc_hours")}),a.createElement(Us,{id:"dates",label:D.t("sc_dates")}),a.createElement(Us,{id:"months",label:D.t("sc_months")}),a.createElement(Us,{id:"dow",label:D.t("sc_dows")}))),e===0&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("seconds",60)),e===1&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("minutes",60)),e===2&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("hours",24)),e===3&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("dates",31)),e===4&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("months",12)),e===5&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("dow",7)))}}const Ps={modalDialog:{minWidth:400,maxWidth:800},overflowHidden:{display:"flex",overflow:"hidden"},titleIcon:{marginRight:5},content:{fontSize:16},languageButton:{position:"absolute",right:8,top:8},languageButtonActive:s=>({color:s.palette.primary.main})};function pve(s){const{open:e,toggleTranslation:t,noTranslation:i,title:r,fullWidth:o,help:n,maxWidth:M,progress:c,icon:l,applyDisabled:N,applyButton:u,onClose:L,children:g,titleButtonApply:j,titleButtonClose:y,onApply:T,textInput:d,defaultValue:I,overflowHidden:w}=s,[A,p]=qa(I||"");Ce(()=>{p(I||"")},[I]);const h=Fg(),C=mN(h.breakpoints.down("md"));let E=null;return l&&(E=l),a.createElement(Ae,{open:e,maxWidth:C?!1:M||"md",fullWidth:!!o,fullScreen:C,disableEscapeKeyDown:!1,onClose:L,sx:{"& .MuiDialog-paper":C?{}:Ps.modalDialog}},r&&a.createElement(fe,null,l?a.createElement(E,{style:Ps.titleIcon}):null,r,D.getLanguage()!=="en"&&t?a.createElement(W,{size:"large",sx:m.getStyle(s.theme,Ps.languageButton,i&&Ps.languageButtonActive),onClick:()=>t(),title:D.t("Disable/Enable translation")},a.createElement(ej,null)):null),a.createElement(_e,{style:{...Ps.content,...w?Ps.overflowHidden:void 0,paddingTop:8}},d&&a.createElement(Te,{autoComplete:"off",fullWidth:!0,autoFocus:!0,variant:"outlined",size:"medium",multiline:!0,value:A,onChange:O=>p(O.target.value)}),g,n?a.createElement("div",null,n):null),a.createElement(xe,null,u!==!1&&a.createElement(q,{startIcon:a.createElement(We,null),disabled:c||N&&I===A,onClick:()=>T(d?A:""),variant:"contained",color:"primary"},D.t(j||"ra_Ok")),a.createElement(q,{color:"grey",onClick:L,disabled:c,variant:"contained",startIcon:a.createElement(we,null)},D.t(y||"ra_Cancel"))))}function h_e(){const s=Sj();return[...s.breakpoints.keys].reverse().reduce((t,i)=>{const r=mN(s.breakpoints.up(i));return!t&&r?i:t},null)||"xs"}function cn(){return s=>function(t){const i=h_e();return a.createElement(s,{...t,width:i})}}function z_e(s){const[e,t]=a.useState(s.input||s.value||""),[i,r]=a.useState("");return a.createElement(Ae,{open:!0,onClose:()=>s.onClose(null),"aria-labelledby":"form-dialog-title",fullWidth:s.fullWidth!==void 0?s.fullWidth:!1},a.createElement(fe,{id:"form-dialog-title"},s.titleText),a.createElement(_e,null,a.createElement(as,null,s.promptText),a.createElement(Te,{variant:"standard",autoFocus:!0,margin:"dense",error:!!i,helperText:i===!0||!i?"":i,value:e,label:s.labelText||"",type:s.type||"text",onKeyUp:o=>o.code==="Enter"&&e&&s.onClose(e),onChange:o=>{let n="";s.verify&&(n=s.verify(o.target.value)),s.rule?t(s.rule(o.target.value)):t(o.target.value),r(n)},fullWidth:!0})),a.createElement(xe,null,a.createElement(q,{variant:"contained",disabled:!e||!!i,onClick:()=>s.onClose(e),color:"primary",startIcon:a.createElement(We,null)},s.applyText||D.t("ra_Ok")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>s.onClose(null),startIcon:a.createElement(we,null)},s.cancelText||D.t("ra_Cancel"))))}const w_e=cn()(z_e);function Ea(s){return a.createElement("svg",{onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 486 486",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),xmlns:"http://www.w3.org/2000/svg",className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"m414.928297,149.715165 c-2.639376,-57.222555 -35.669446,-106.505345 -83.345894,-132.039151 c-3.758948,-2.049842 -7.636885,-3.932022 -11.590542,-5.641125 c-19.303146,-8.394083 -40.607459,-13.050853 -63.004303,-13.050853 c-84.113909,0 -152.791790,65.703174 -157.718988,148.605566 l0.043268,-0.010816 v0.281245 c0,3.061243 -0.146031,16.750306 -0.146031,16.750306 l-2.352723,5.224668 h15.744315 c5.916964,-19.384275 24.078904,-32.635245 45.513024,-32.635245 c26.231510,0 47.573684,21.915481 47.573684,48.146991 c0,26.226103 -21.342174,47.146409 -47.573684,47.146409 c-25.111939,0 -45.734774,-19.735831 -47.443879,-44.658471 h-18.789334 c-0.400232,0 -0.778832,0.638209 -1.162839,0.584122 l-19.762875,55.199753 c-2.774590,7.696379 2.926030,16.214860 11.103771,16.214860 h17.020735 l-0.129805,87.899899 c0,17.356066 14.073071,31.174935 31.429136,31.174935 h56.205745 v82.648189 c0,12.877778 12.937273,22.580734 25.815051,22.580734 h144.597825 c12.877778,0 23.429877,-9.702955 23.429877,-22.580734 v-166.037352 c0,-22.645636 5.976457,-44.761234 16.561008,-64.789128 c11.055093,-20.925714 17.523731,-44.620611 18.129489,-69.792045 c0.027042,-1.260193 0.037858,-2.552839 0.037858,-3.845485 c0,-2.466302 -0.070310,-4.938014 -0.183890,-7.377273 zm-155.393308,-11.731165 h-13.456494 v13.559257 c0,4.732489 -4.267352,8.567157 -8.999842,8.567157 c-4.727079,0 -8.999842,-3.834667 -8.999842,-8.567157 v-13.559257 h-12.185483 c-4.732489,0 -8.567157,-4.267352 -8.567157,-8.999842 c0,-4.727079 3.834667,-8.999842 8.567157,-8.999842 h12.185483 v-12.077311 c0,-4.732489 4.272762,-8.567157 8.999842,-8.567157 c4.732489,0 8.999842,3.834667 8.999842,8.567157 v12.077311 h13.456494 c4.727079,0 8.567157,4.272762 8.567157,8.999842 c0,4.732489 -3.840077,8.999842 -8.567157,8.999842 zm0,0"}),a.createElement("path",{fill:"currentColor",d:"m187.695312 285.875c3.9375-3.980469 6.414063-9.449219 6.414063-15.523438 0-12.128906-9.855469-21.980468-21.984375-21.980468-6.007812 0-11.472656 2.410156-15.457031 6.347656-4.023438 4.003906-6.523438 9.539062-6.523438 15.636719 0 12.125 9.855469 21.980469 21.980469 21.980469 6.078125 0 11.585938-2.476563 15.570312-6.460938zm0 0"}))}function Ti(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 650 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"m524,128l-192,0l-64,-64l-160,0c-26.51,0 -48,21.49 -48,48l0,288c0,26.51 21.49,48 48,48l416,0c26.51,0 48,-21.49 48,-48l0,-224c0,-26.51 -21.49,-48 -48,-48z"}))}function lo(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 650 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"m631.75617,292.093l-72.424,124.155a63.997,63.997 0 0 1 -55.281,31.752l-399.964,0c-18.523,0 -30.064,-20.093 -20.731,-36.093l72.424,-124.155a64,64 0 0 1 55.282,-31.752l399.964,0c18.523,0 30.064,20.093 20.73,36.093zm-420.694,-68.093l328,0l0,-48c0,-26.51 -21.49,-48 -48,-48l-160,0l-64,-64l-160,0c-26.51,0 -48,21.49 -48,48l0,278.046l69.077,-118.418c17.137,-29.378 48.912,-47.628 82.923,-47.628z"}))}function Nc(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"#EE3333",d:"M256,0C114.844,0,0,114.844,0,256s114.844,256,256,256s256-114.844,256-256S397.156,0,256,0z M256,448 c-105.865,0-192-86.135-192-192c0-40.406,12.25-78.604,35.542-111.198l267.656,267.656C334.604,435.75,296.406,448,256,448z M412.458,367.198L144.802,99.542C177.396,76.25,215.594,64,256,64c105.865,0,192,86.135,192,192 C448,296.406,435.75,334.604,412.458,367.198z"}))}var I_e=s=>typeof s!="string"?{}:s.split(/ ?; ?/).reduce((e,t)=>{const[i,r]=t.split(/ ?: ?/).map((o,n)=>n===0?o.replace(/\s+/g,""):o.trim());if(i&&r){const o=i.replace(/(\w)-(\w)/g,(M,c,l)=>`${c}${l.toUpperCase()}`);let n=r.trim();Number.isNaN(Number(r))||(n=Number(r)),e[i.startsWith("-")?i:o]=n}return e},{});function C_e(s=6){const e="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let t="";for(let i=s;i>0;--i)t+=e[Math.round(Math.random()*(e.length-1))];return t}var p_e=["br","col","colgroup","dl","hr","iframe","img","input","link","menuitem","meta","ol","param","select","table","tbody","tfoot","thead","tr","ul","wbr"],O0={"accept-charset":"acceptCharset",acceptcharset:"acceptCharset",accesskey:"accessKey",allowfullscreen:"allowFullScreen",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",cellpadding:"cellPadding",cellspacing:"cellSpacing",charset:"charSet",class:"className",classid:"classID",classname:"className",colspan:"colSpan",contenteditable:"contentEditable",contextmenu:"contextMenu",controlslist:"controlsList",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",datetime:"dateTime",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",enctype:"encType",for:"htmlFor",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",innerhtml:"innerHTML",inputmode:"inputMode",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",marginwidth:"marginWidth",marginheight:"marginHeight",maxlength:"maxLength",mediagroup:"mediaGroup",minlength:"minLength",nomodule:"noModule",novalidate:"noValidate",playsinline:"playsInline",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rowspan:"rowSpan",spellcheck:"spellCheck",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",tabindex:"tabIndex",typemustmatch:"typeMustMatch",usemap:"useMap",accentheight:"accentHeight","accent-height":"accentHeight",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",arabicform:"arabicForm","arabic-form":"arabicForm",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",diffuseconstant:"diffuseConstant",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",edgemode:"edgeMode",enablebackground:"enableBackground","enable-background":"enableBackground",externalresourcesrequired:"externalResourcesRequired",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",imagerendering:"imageRendering","image-rendering":"imageRendering",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",vmathematical:"vMathematical","v-mathematical":"vMathematical",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan",onblur:"onBlur",onchange:"onChange",onclick:"onClick",oncontextmenu:"onContextMenu",ondoubleclick:"onDoubleClick",ondrag:"onDrag",ondragend:"onDragEnd",ondragenter:"onDragEnter",ondragexit:"onDragExit",ondragleave:"onDragLeave",ondragover:"onDragOver",ondragstart:"onDragStart",ondrop:"onDrop",onerror:"onError",onfocus:"onFocus",oninput:"onInput",oninvalid:"onInvalid",onkeydown:"onKeyDown",onkeypress:"onKeyPress",onkeyup:"onKeyUp",onload:"onLoad",onmousedown:"onMouseDown",onmouseenter:"onMouseEnter",onmouseleave:"onMouseLeave",onmousemove:"onMouseMove",onmouseout:"onMouseOut",onmouseover:"onMouseOver",onmouseup:"onMouseUp",onscroll:"onScroll",onsubmit:"onSubmit",ontouchcancel:"onTouchCancel",ontouchend:"onTouchEnd",ontouchmove:"onTouchMove",ontouchstart:"onTouchStart",onwheel:"onWheel"};function A_e(s,e){var o;const{key:t,level:i,...r}=e;switch(s.nodeType){case 1:return Ug(f_e(s.nodeName),m_e(s,t),E0(s.childNodes,i,r));case 3:{const n=((o=s.nodeValue)==null?void 0:o.toString())??"";if(!r.allowWhiteSpaces&&/^\s+$/.test(n)&&!/[\u00A0\u202F]/.test(n))return null;if(!s.parentNode)return n;const M=s.parentNode.nodeName.toLowerCase();return p_e.includes(M)?(/\S/.test(n)&&console.warn(`A textNode is not allowed inside '${M}'. Your text "${n}" will be ignored`),null):n}case 8:return null;case 11:return E0(s.childNodes,i,e);default:return null}}function m_e(s,e){const t={key:e};if(s instanceof Element){const i=s.getAttribute("class");i&&(t.className=i),[...s.attributes].forEach(r=>{switch(r.name){case"class":break;case"style":t[r.name]=I_e(r.value);break;case"allowfullscreen":case"allowpaymentrequest":case"async":case"autofocus":case"autoplay":case"checked":case"controls":case"default":case"defer":case"disabled":case"formnovalidate":case"hidden":case"ismap":case"itemscope":case"loop":case"multiple":case"muted":case"nomodule":case"novalidate":case"open":case"readonly":case"required":case"reversed":case"selected":case"typemustmatch":t[O0[r.name]||r.name]=!0;break;default:t[O0[r.name]||r.name]=r.value}})}return t}function E0(s,e,t){const i=[...s].map((r,o)=>Eo(r,{...t,index:o,level:e+1})).filter(Boolean);return i.length?i:null}function f_e(s){return/[a-z]+[A-Z]+[a-z]+/.test(s)?s:s.toLowerCase()}function ZL(s,e={}){return typeof s=="string"?O_e(s,e):s instanceof Node?Eo(s,e):null}function Eo(s,e={}){if(!s||!(s instanceof Node))return null;const{actions:t=[],index:i=0,level:r=0,randomKey:o}=e;let n=s,M=`${r}-${i}`;const c=[];return o&&r===0&&(M=`${C_e()}-${M}`),Array.isArray(t)&&t.forEach(l=>{l.condition(n,M,r)&&(typeof l.pre=="function"&&(n=l.pre(n,M,r),n instanceof Node||(n=s)),typeof l.post=="function"&&c.push(l.post(n,M,r)))}),c.length?c:A_e(n,{key:M,level:r,...e})}function O_e(s,e={}){if(!s||typeof s!="string")return null;const{includeAllNodes:t=!1,nodeOnly:i=!1,selector:r="body > *",type:o="text/html"}=e;try{const M=new DOMParser().parseFromString(s,o);if(t){const{childNodes:l}=M.body;return i?l:[...l].map(N=>Eo(N,e))}const c=M.querySelector(r)||M.body.childNodes[0];if(!(c instanceof Node))throw new TypeError("Error parsing input");return i?c:Eo(c,e)}catch{}return null}var E_e=Object.defineProperty,__e=(s,e,t)=>e in s?E_e(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Zr=(s,e,t)=>__e(s,typeof e!="symbol"?e+"":e,t),_0="react-inlinesvg",x_e=10,ne={IDLE:"idle",LOADING:"loading",LOADED:"loaded",FAILED:"failed",READY:"ready",UNSUPPORTED:"unsupported"};function S_e(s){return s[Math.floor(Math.random()*s.length)]}function ir(){var s;return!!(typeof window<"u"&&((s=window.document)!=null&&s.createElement))}function k_e(){return b_e()&&typeof window<"u"&&window!==null}function v_e(s,...e){const t={};for(const i in s)({}).hasOwnProperty.call(s,i)&&(e.includes(i)||(t[i]=s[i]));return t}function Y_e(s){const e="abcdefghijklmnopqrstuvwxyz",i=`${e}${e.toUpperCase()}1234567890`;let r="";for(let o=0;o299)throw new Error("Not found");if(!["image/svg+xml","text/plain"].some(o=>r.includes(o)))throw new Error(`Content type isn't valid: ${r}`);return t.text()}function Q_e(s=1){return new Promise(e=>{setTimeout(e,s*1e3)})}function b_e(){if(!document)return!1;const s=document.createElement("div");s.innerHTML="";const e=s.firstChild;return!!e&&e.namespaceURI==="http://www.w3.org/2000/svg"}var U_e=class{constructor(){Zr(this,"cacheApi"),Zr(this,"cacheStore"),Zr(this,"subscribers",[]),Zr(this,"isReady",!1),this.cacheStore=new Map;let s=_0,e=!1;ir()&&(s=window.REACT_INLINESVG_CACHE_NAME??_0,e=!!window.REACT_INLINESVG_PERSISTENT_CACHE&&"caches"in window),e?caches.open(s).then(t=>{this.cacheApi=t}).catch(t=>{console.error(`Failed to open cache: ${t.message}`),this.cacheApi=void 0}).finally(()=>{this.isReady=!0;const t=[...this.subscribers];this.subscribers.length=0,t.forEach(i=>{try{i()}catch(r){console.error(`Error in CacheStore subscriber callback: ${r.message}`)}})}):this.isReady=!0}onReady(s){this.isReady?s():this.subscribers.push(s)}async get(s,e){var t;return await(this.cacheApi?this.fetchAndAddToPersistentCache(s,e):this.fetchAndAddToInternalCache(s,e)),((t=this.cacheStore.get(s))==null?void 0:t.content)??""}set(s,e){this.cacheStore.set(s,e)}isCached(s){var e;return((e=this.cacheStore.get(s))==null?void 0:e.status)===ne.LOADED}async fetchAndAddToInternalCache(s,e){const t=this.cacheStore.get(s);if((t==null?void 0:t.status)===ne.LOADING){await this.handleLoading(s,async()=>{this.cacheStore.set(s,{content:"",status:ne.IDLE}),await this.fetchAndAddToInternalCache(s,e)});return}if(!(t!=null&&t.content)){this.cacheStore.set(s,{content:"",status:ne.LOADING});try{const i=await XL(s,e);this.cacheStore.set(s,{content:i,status:ne.LOADED})}catch(i){throw this.cacheStore.set(s,{content:"",status:ne.FAILED}),i}}}async fetchAndAddToPersistentCache(s,e){var r,o,n;const t=this.cacheStore.get(s);if((t==null?void 0:t.status)===ne.LOADED)return;if((t==null?void 0:t.status)===ne.LOADING){await this.handleLoading(s,async()=>{this.cacheStore.set(s,{content:"",status:ne.IDLE}),await this.fetchAndAddToPersistentCache(s,e)});return}this.cacheStore.set(s,{content:"",status:ne.LOADING});const i=await((r=this.cacheApi)==null?void 0:r.match(s));if(i){const M=await i.text();this.cacheStore.set(s,{content:M,status:ne.LOADED});return}try{await((o=this.cacheApi)==null?void 0:o.add(new Request(s,e)));const M=await((n=this.cacheApi)==null?void 0:n.match(s)),c=await(M==null?void 0:M.text())??"";this.cacheStore.set(s,{content:c,status:ne.LOADED})}catch(M){throw this.cacheStore.set(s,{content:"",status:ne.FAILED}),M}}async handleLoading(s,e){var t;for(let i=0;i({[s]:e}))}async delete(s){this.cacheApi&&await this.cacheApi.delete(s),this.cacheStore.delete(s)}async clear(){if(this.cacheApi){const s=await this.cacheApi.keys();await Promise.allSettled(s.map(e=>this.cacheApi.delete(e)))}this.cacheStore.clear()}};function x0(s){const e=et(void 0);return Ce(()=>{e.current=s}),e.current}function $_e(s){const{baseURL:e,content:t,description:i,handleError:r,hash:o,preProcessor:n,title:M,uniquifyIDs:c=!1}=s;try{const l=P_e(t,n),N=ZL(l,{nodeOnly:!0});if(!N||!(N instanceof SVGSVGElement))throw new Error("Could not convert the src to a DOM Node");const u=KL(N,{baseURL:e,hash:o,uniquifyIDs:c});if(i){const L=u.querySelector("desc");L!=null&&L.parentNode&&L.parentNode.removeChild(L);const g=document.createElementNS("http://www.w3.org/2000/svg","desc");g.innerHTML=i,u.prepend(g)}if(typeof M<"u"){const L=u.querySelector("title");if(L!=null&&L.parentNode&&L.parentNode.removeChild(L),M){const g=document.createElementNS("http://www.w3.org/2000/svg","title");g.innerHTML=M,u.prepend(g)}}return u}catch(l){return r(l)}}function P_e(s,e){return e?e(s):s}function KL(s,e){const{baseURL:t="",hash:i,uniquifyIDs:r}=e,o=["id","href","xlink:href","xlink:role","xlink:arcrole"],n=["href","xlink:href"],M=(c,l)=>n.includes(c)&&(l?!l.includes("#"):!1);return r&&[...s.children].forEach(c=>{var l;if((l=c.attributes)!=null&&l.length){const N=Object.values(c.attributes).map(u=>{const L=u,g=/url\((.*?)\)/.exec(u.value);return g!=null&&g[1]&&(L.value=u.value.replace(g[0],`url(${t}${g[1]}__${i})`)),L});o.forEach(u=>{const L=N.find(g=>g.name===u);L&&!M(u,L.value)&&(L.value=`${L.value}__${i}`)})}return c.children.length?KL(c,e):c}),s}var Ni;function W_e(s){const{cacheRequests:e=!0,children:t=null,description:i,fetchOptions:r,innerRef:o,loader:n=null,onError:M,onLoad:c,src:l,title:N,uniqueHash:u}=s,[L,g]=$g((S,R)=>({...S,...R}),{content:"",element:null,isCached:e&&Ni.isCached(s.src),status:ne.IDLE}),{content:j,element:y,isCached:T,status:d}=L,I=x0(s),w=x0(L),A=et(u??Y_e(8)),p=et(!1),h=et(!1),C=Kt(S=>{p.current&&(g({status:S.message==="Browser does not support SVG"?ne.UNSUPPORTED:ne.FAILED}),M==null||M(S))},[M]),E=Kt((S,R=!1)=>{p.current&&g({content:S,isCached:R,status:ne.LOADED})},[]),O=Kt(async()=>{const S=await XL(l,r);E(S)},[r,E,l]),b=Kt(()=>{try{const S=$_e({...s,handleError:C,hash:A.current,content:j}),R=ZL(S);if(!R||!CN(R))throw new Error("Could not convert the src to a React element");g({element:R,status:ne.READY})}catch(S){C(S)}},[j,C,s]),k=Kt(async()=>{const S=/^data:image\/svg[^,]*?(;base64)?,(.*)/u.exec(l);let R;if(S?R=S[1]?window.atob(S[2]):decodeURIComponent(S[2]):l.includes("{p.current&&g({content:"",element:null,isCached:!1,status:ne.LOADING})},[]);Ce(()=>{if(p.current=!0,!(!ir()||h.current)){try{if(d===ne.IDLE){if(!k_e())throw new Error("Browser does not support SVG");if(!l)throw new Error("Missing src");K()}}catch(S){C(S)}return h.current=!0,()=>{p.current=!1}}},[]),Ce(()=>{if(!(!ir()||!I)&&I.src!==l){if(!l){C(new Error("Missing src"));return}K()}},[C,K,I,l]),Ce(()=>{d===ne.LOADED&&b()},[d,b]),Ce(()=>{!ir()||!I||I.src!==l||(I.title!==N||I.description!==i)&&b()},[i,b,I,l,N]),Ce(()=>{if(w)switch(d){case ne.LOADING:{w.status!==ne.LOADING&&k();break}case ne.LOADED:{w.status!==ne.LOADED&&b();break}case ne.READY:{w.status!==ne.READY&&(c==null||c(l,T));break}}},[k,b,T,c,w,l,d]);const x=v_e(s,"baseURL","cacheRequests","children","description","fetchOptions","innerRef","loader","onError","onLoad","preProcessor","src","title","uniqueHash","uniquifyIDs");return ir()?y?Pg(y,{ref:o,...x}):[ne.UNSUPPORTED,ne.FAILED].includes(d)?t:n:n}function _a(s){Ni||(Ni=new U_e);const{loader:e}=s,[t,i]=qa(Ni.isReady);return Ce(()=>{t||Ni.onReady(()=>{i(!0)})},[t]),t?a.createElement(W_e,{...s}):e}function J_e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"}))}function Ave(s){let e;const t=s==null?void 0:s._id;return t?(t.startsWith("_design/")||t==="system"?e=a.createElement(jo,{className:"iconOwn"}):t==="0_userdata"||t==="0_userdata.0"?e=a.createElement(Ny,{className:"iconOwn"}):t==="alias"||t==="alias.0"?e=a.createElement(J_e,{className:"iconOwn"}):t==="system.adapter"?e=a.createElement(jo,{className:"iconOwn"}):t==="system.group"?e=a.createElement(oM,{className:"iconOwn"}):t==="system.user"?e=a.createElement(iM,{className:"iconOwn"}):t==="system.host"?e=a.createElement(rM,{className:"iconOwn"}):t.endsWith(".connection")||t.endsWith(".connected")?e=a.createElement(li,{className:"iconOwn"}):t.endsWith(".info")?e=a.createElement(sM,{className:"iconOwn"}):(s==null?void 0:s.type)==="meta"&&(e=a.createElement(Yo,{className:"iconOwn"})),e||null):null}function mve(s,e){var r;e=e||".";let t="";const i=s==null?void 0:s.common;if(i){const o=i.icon;if(o)if(o.startsWith("data:image/"))t=o;else if(o.includes(".")){let n;s.type==="instance"||s.type==="adapter"?t=`${e}/adapter/${i.name}/${o}`:(r=s._id)!=null&&r.startsWith("system.adapter.")?(n=s._id.split(".",3),o[0]==="/"?n[2]+=o:n[2]+=`/${o}`,t=`${e}/adapter/${n[2]}`):(n=s._id.split(".",2),o[0]==="/"?n[0]+=o:n[0]+=`/${o}`,t=`${e}/adapter/${n[0]}`)}else return null}return t||null}const B_e=window.location.hostname.endsWith("iobroker.in"),S0=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1),be=a.forwardRef(function(e,t){var i,r,o;if(e.src){if(typeof e.src=="string"){if(e.src.length<3)return e.sx?a.createElement(J,{component:"span",sx:e.sx,ref:t,title:e.title||void 0,style:{height:27,marginTop:-8,...e.styleUTF8||e.style},className:e.className?`iconOwn ${e.className}`:"iconOwn"},e.src):a.createElement("span",{ref:t,title:e.title||void 0,style:{height:27,marginTop:-8,...e.styleUTF8||e.style},className:e.className?`iconOwn ${e.className}`:"iconOwn"},e.src);if(e.src.startsWith("data:image/svg"))return a.createElement(_a,{title:e.title||void 0,src:e.src,className:e.className?`iconOwn ${e.className}`:"iconOwn",width:((i=e.style)==null?void 0:i.width)||28,height:((r=e.style)==null?void 0:r.height)||((o=e.style)==null?void 0:o.width)||28,style:e.style||void 0});if(B_e&&!e.src.startsWith("http://")&&!e.src.startsWith("https://")){let n=e.src;return n.startsWith("./")?n=S0+n.substring(2):n.startsWith("/")||(n=S0+n),e.sx?a.createElement(J,{component:"img",sx:e.sx,title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:`https://remote-files.iobroker.in${n}`,alt:e.alt||void 0,ref:t,onError:M=>{var c;return(c=e.onError)==null?void 0:c.call(e,M)}}):a.createElement("img",{title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:`https://remote-files.iobroker.in${n}`,alt:e.alt||void 0,ref:t,onError:M=>{var c;return(c=e.onError)==null?void 0:c.call(e,M)}})}return e.sx?a.createElement(J,{component:"img",sx:e.sx,title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:e.src,alt:e.alt||void 0,ref:t,onError:e.onError}):a.createElement("img",{title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:e.src,alt:e.alt||void 0,ref:t,onError:e.onError})}return e.src}return null});be.displayName="Icon";const gs={dialog:{height:"100%"},paper:{height:"calc(100% - 64px)"},content:{textAlign:"center"},textarea:{width:"100%",height:"100%"},img:{width:"auto",height:"calc(100% - 5px)",objectFit:"contain"},dialogTitle:{justifyContent:"space-between",display:"flex"}},ve={images:["png","jpg","svg","jpeg","bmp","gif","apng","avif","webp","ico"],code:["js","json","json5","md"],txt:["log","txt","html","css","xml","ics","csv"],audio:["mp3","wav","ogg","acc"],video:["mp4","mov","avi"]};function k0(s,e){let t="";const i=new Uint8Array((s==null?void 0:s.data)||s),r=i.byteLength;for(let o=0;o{let o="";r.file!==void 0&&(o=r.file);const n={copyPossible:this.state.copyPossible,ext:this.state.ext};if(o.type==="Buffer")if(i.toLowerCase().endsWith(".json5")){n.ext="json5",n.copyPossible=!0;try{o=atob(k0(o,!0))}catch{console.error("Cannot convert base64 to string"),o=""}}else{const M=m.detectMimeType(k0(o));M&&(n.ext=M,n.copyPossible=ve.code.includes(M)||ve.txt.includes(M))}n.copyPossible&&(n.ext&&ve.txt.includes(n.ext)?(n.text=o,n.editingValue=o):n.ext&&ve.code.includes(n.ext)&&(n.code=o,n.editingValue=o)),this.setState(n)}).catch(r=>window.alert(`Cannot read file: ${r}`))}}componentDidMount(){this.readFile();const e=this.props.href.split("/");e.splice(0,2);const t=e[0],i=e.splice(1).join("/");this.props.supportSubscribes&&this.props.socket.subscribeFiles(t,i,this.onFileChanged).catch(r=>window.alert(`Cannot subscribe on file: ${r}`))}componentWillUnmount(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null);const e=this.props.href.split("/");e.splice(0,2);const t=e[0],i=e.splice(1).join("/");this.props.supportSubscribes&&this.props.socket.unsubscribeFiles(t,i,this.onFileChanged)}onFileChanged=(e,t,i)=>{this.state.changed||(this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(()=>{this.timeout=null,i===null?window.alert("Show file was deleted!"):this.state.text!==null||this.state.code!==null?this.readFile():this.setState({forceUpdate:Date.now()})},300))};getEditorOrViewer(){return a.createElement(Te,{variant:"standard",style:gs.textarea,multiline:!0,value:this.state.editingValue||this.state.code||this.state.text,slotProps:{htmlInput:{readOnly:!this.state.editing}}})}getContent(){return this.state.ext&&ve.images.includes(this.state.ext)?this.state.imgError?a.createElement(Nc,{style:{...gs.img,...this.props.getStyleBackgroundImage()}}):a.createElement(be,{onError:e=>{e.target.onerror=null,this.setState({imgError:!0})},style:{...gs.img,...this.props.getStyleBackgroundImage()},src:`${this.props.href}?ts=${this.state.forceUpdate}`,alt:this.props.href}):this.state.ext&&ve.audio.includes(this.state.ext)?a.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("audio",{style:{width:"100%"},src:this.props.href,controls:!0})):this.state.ext&&ve.video.includes(this.state.ext)?a.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("video",{style:{width:"100%",height:"100%"},controls:!0},a.createElement("source",{src:this.props.href,type:`video/${this.state.ext}`}))):this.state.code!==null||this.state.text!==null||this.state.editing?this.getEditorOrViewer():null}onSave(){}render(){return a.createElement(Ae,{sx:{"&.MuiDialog-scrollPaper":gs.dialog,"& .MuiDialog-paper":gs.paper},scroll:"paper",open:!!this.props.href,onClose:()=>this.props.onClose(),fullWidth:!0,maxWidth:"xl","aria-labelledby":"ar_dialog_file_view_title"},a.createElement("div",{style:gs.dialogTitle},a.createElement(fe,{id:"ar_dialog_file_view_title"},`${this.props.t(this.state.editing?"Edit":"View")}: ${this.props.href}`),this.state.ext&&ve.images.includes(this.state.ext)&&a.createElement("div",null,a.createElement(W,{size:"large",color:"inherit",onClick:this.props.setStateBackgroundImage},a.createElement(tM,null)))),a.createElement(_e,{style:gs.content},this.getContent()),a.createElement(xe,null,this.state.copyPossible?a.createElement(q,{color:"grey",onClick:e=>{e.stopPropagation(),e.preventDefault(),m.copyToClipboard(this.state.text||this.state.code||"")},startIcon:a.createElement(tj,null)},this.props.t("Copy content")):null,this.state.editing?a.createElement(q,{color:"grey",disabled:this.state.editingValue===this.state.code||this.state.editingValue===this.state.text,variant:"contained",onClick:()=>this.onSave(),startIcon:a.createElement(Kn,null)},this.props.t("Save")):null,a.createElement(q,{variant:"contained",onClick:()=>this.props.onClose(),color:"primary",startIcon:a.createElement(we,null)},this.props.t("Close"))))}}const F_e=cn()(R_e),Ws=32,_t=32,Xr=120,v0=64,Y0="Not found",Kr={all:kN,images:oy,code:eM,txt:iy,audio:Yj,video:hy},Y={root:{width:"100%",overflow:"hidden",height:"100%",position:"relative"},filesDiv:{width:"calc(100% - 8px)",overflowX:"hidden",overflowY:"auto",padding:8},filesDivHint:{position:"absolute",bottom:0,left:20,opacity:.7,fontStyle:"italic",fontSize:12},filesDivTable:{height:"calc(100% - 56px)"},filesDivTile:{height:"calc(100% - 104px)",display:"flex",alignContent:"flex-start",alignItems:"stretch",flexWrap:"wrap",flex:`0 0 ${v0}px`},itemTile:s=>({position:"relative",userSelect:"none",cursor:"pointer",height:Xr,width:v0,display:"inline-block",textAlign:"center",opacity:.1,transition:"opacity 1s",margin:"4px",borderRadius:"4px","&:hover":{background:s.palette.secondary.light,color:m.invertColor(s.palette.secondary.main,!0)}}),itemNameFolderTile:{fontWeight:"bold"},itemNameTile:{width:"100%",height:32,overflow:"hidden",textOverflow:"ellipsis",fontSize:12,textAlign:"center",wordBreak:"break-all"},itemFolderIconTile:s=>({width:"100%",height:Xr-32-16-8,display:"block",pl:1,color:s.palette.secondary.main||"#fbff7d"}),itemFolderIconBack:s=>({position:"absolute",top:22,left:18,zIndex:1,color:(s.palette.mode==="dark","#FFF")}),itemSizeTile:{width:"100%",height:16,textAlign:"center",fontSize:10},itemImageTile:{width:"calc(100% - 8px)",height:Xr-32-16-8,margin:4,display:"block",textAlign:"center",objectFit:"contain"},itemIconTile:{width:"100%",height:Xr-32-16-8,display:"block",objectFit:"contain"},itemSelected:s=>({background:s.palette.primary.main,color:m.invertColor(s.palette.primary.main,!0)}),itemTable:s=>({userSelect:"none",cursor:"pointer",height:Ws,display:"inline-flex",lineHeight:`${Ws}px`,"&:hover":{background:s.palette.secondary.light,color:m.invertColor(s.palette.secondary.main,!0)}}),itemNameTable:{display:"inline-block",pl:"10px",fontSize:"1rem",verticalAlign:"top",flexGrow:1,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden","@media screen and (max-width: 500px)":{textAlign:"end",direction:"rtl"}},itemNameFolderTable:{fontWeight:"bold"},itemSizeTable:{display:"inline-block",width:60,verticalAlign:"top",textAlign:"right",whiteSpace:"nowrap"},itemAccessTable:{verticalAlign:"top",width:60,textAlign:"right",paddingRight:5,display:"flex",justifyContent:"center"},itemImageTable:{display:"inline-block",width:30,marginTop:1,objectFit:"contain",maxHeight:30},itemNoImageTable:{marginTop:6},itemIconTable:{display:"inline-block",marginTop:1,width:30,height:30},itemFolderTable:{},itemFolderTemp:{opacity:.4},itemFolderIconTable:s=>({marginTop:"1px",marginLeft:"8px",display:"inline-block",width:30,height:30,color:s.palette.secondary.main||"#fbff7d"}),itemDownloadButtonTable:s=>({display:"inline-block",width:_t,height:Ws,minWidth:_t,verticalAlign:"middle",textAlign:"center",padding:0,borderRadius:`${_t/2}px`,"&:hover":{backgroundColor:s.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.08)"},"& span":{pt:"9px"},"& svg":{width:14,height:14,fontSize:"1rem",mt:"-3px",verticalAlign:"middle",color:s.palette.mode==="dark"?"#EEE":"#111"}}),itemDownloadEmptyTable:{display:"inline-block",width:_t,height:Ws,minWidth:_t,padding:0},itemAclButtonTable:{width:_t,height:Ws,minWidth:_t,verticalAlign:"top",padding:0,fontSize:12,display:"flex"},itemDeleteButtonTable:{display:"inline-block",width:_t,height:Ws,minWidth:_t,verticalAlign:"top",padding:0,"& svg":{width:18,height:18,fontSize:"1.5rem"}},uploadDiv:{top:0,zIndex:1,bottom:0,left:0,right:0,position:"absolute",opacity:.9,textAlign:"center",background:"#FFFFFF"},uploadDivDragging:{opacity:1},uploadCenterDiv:s=>({m:"20px",border:"3px dashed grey",borderRadius:"30px",width:"calc(100% - 40px)",height:"calc(100% - 40px)",position:"relative",color:s.palette.mode==="dark"?"#222":"#CCC",display:"flex",alignItems:"center",justifyContent:"center"}),uploadCenterIcon:{width:"25%",height:"25%"},uploadCenterText:{fontSize:24,fontWeight:"bold"},uploadCloseButton:{zIndex:2,position:"absolute",top:30,right:30},uploadCenterTextAndIcon:{position:"absolute",height:"30%",width:"100%",margin:"auto",opacity:.3},menuButtonExpertActive:{color:"#c00000"},menuButtonRestrictActive:{color:"#c05000"},pathDiv:s=>({display:"flex",width:"calc(100% - 16px)",ml:1,mr:1,textOverflow:"clip",overflow:"hidden",whiteSpace:"nowrap",backgroundColor:s.palette.secondary.main,color:s.palette.secondary.contrastText,borderRadius:"4px 4px 0 0"}),pathDivInput:{width:"100%"},pathDivBreadcrumbDir:s=>({pl:"2px",pr:"2px",cursor:"pointer",color:"white","&:hover":{backgroundColor:s.palette.primary.main,color:s.palette.primary.contrastText}}),pathDivBreadcrumbSelected:{color:"#FFF"},backgroundImageLight:{background:"white"},backgroundImageDark:{background:"black"},backgroundImageColored:{background:"silver"},specialFolder:s=>({color:s.palette.mode==="dark"?"#229b0f":"#5dd300"}),tooltip:{pointerEvents:"none"}},Ft="0_userdata.0";function Js(s){const e=(s||"").split("/");return e.length&&e.pop(),e.join("/")}function bn(s){const e=m.getFileExtension(s);return!!(e!=null&&e.toLowerCase().match(/[a-z]+/)&&e.length<5)}const oe="Table",Un="Tile";function Q0(s,e){return s.folder&&e.folder?s.name>e.name?1:s.namee.name?1:s.name{var l;return c.startsWith(`${this.limitToPath}/`)||c===this.limitToPath||((l=this.limitToPath)==null?void 0:l.startsWith(`${c}/`))}))}catch{i=[]}let r;this.props.showViewTypeButton?r=this.localStorage.getItem("files.viewType")||oe:r=oe;let o=this.props.selected||this.localStorage.getItem("files.selected")||Ft,n;if(e.restrictToFolder){o=e.restrictToFolder,n=e.restrictToFolder;const c=e.restrictToFolder.split("/");i=[];let l="";for(let N=0;N{if(this.state.viewType===oe&&!this.findItem(this.state.selected)){const t=this.state.selected.split("/");for(;t.length&&!this.findItem(t.join("/"));)t.pop();let i;t.length?i=t.join("/"):i=Ft,this.setState({selected:i,path:i,pathFocus:!1},()=>this.scrollToSelected())}else this.scrollToSelected();this.initialReadFinished=!0})}scrollToSelected(){if(this.mounted){const e=document.getElementById(this.state.selected);e==null||e.scrollIntoView()}}async componentDidMount(){this.mounted=!0,this.loadFolders().catch(e=>console.error(`Cannot load folders: ${e}`)),this.browseList=[],this.browseListRunning=!1,this.supportSubscribes=await this.props.socket.checkFeatureSupported("BINARY_STATE_EVENT"),this.supportSubscribes&&await this.props.socket.subscribeFiles("*","*",this.onFileChange)}componentWillUnmount(){this.supportSubscribes&&this.props.socket.unsubscribeFiles("*","*",this.onFileChange),this.mounted=!1,this.browseList=null,this.browseListRunning=!1,Object.values(this._tempTimeout).forEach(e=>{e&&clearTimeout(e)}),this._tempTimeout={}}browseFoldersCb(e,t,i){if(!(e!=null&&e.length))i(t);else{const r=e.shift();r?this.browseFolder(r,t).catch(o=>console.error(`Cannot read folder ${r}: ${o.message}`)).then(()=>{setTimeout(()=>this.browseFoldersCb(e,t,i),0)}):setTimeout(()=>this.browseFoldersCb(e,t,i),0)}}browseFolders(e,t){let i;return t?i=t:(i={},Object.keys(this.state.folders).forEach(r=>i[r]=this.state.folders[r])),e!=null&&e.length?new Promise(r=>{this.browseFoldersCb(e,i,r)}):Promise.resolve(i)}readDirSerial(e,t){return new Promise((i,r)=>{this.browseList&&(this.browseList.push({resolve:i,reject:r,adapter:e,relPath:t}),this.browseListRunning||this.processBrowseList())})}processBrowseList(e=0){!this.browseListRunning&&this.browseList&&this.browseList.length&&(this.browseListRunning=!0,this.browseList.length>10?this.browseList.length%10||this.setState({queueLength:this.browseList.length}):this.setState({queueLength:this.browseList.length}),this.browseList[0].processing=!0,this.props.socket.readDir(this.browseList[0].adapter,this.browseList[0].relPath||"").then(t=>{if(this.browseList){const i=this.browseList.shift();if(i){const r=i.resolve;i.resolve=null,i.reject=null,i.adapter=null,i.relPath=null,r&&r(t),this.browseListRunning=!1,this.browseList.length?e<5?this.processBrowseList(e+1):setTimeout(()=>this.processBrowseList(0),0):this.setState({queueLength:0})}else this.setState({queueLength:0})}}).catch(t=>{if(this.browseList){const i=this.browseList.shift();if(i){const r=i.reject;i.resolve=null,i.reject=null,i.adapter=null,i.relPath=null,r&&r(t),this.browseListRunning=!1,this.browseList.length?e<5?this.processBrowseList(e+1):setTimeout(()=>this.processBrowseList(0),0):this.setState({queueLength:0})}else this.setState({queueLength:0})}}))}async browseFolder(e,t,i,r){let o;if(t?o=t:(o={},Object.keys(this.state.folders).forEach(u=>{o[u]=this.state.folders[u]})),o[e]&&!r)return i?Promise.resolve(o):new Promise((u,L)=>{Promise.all(o[e].filter(g=>g.folder).map(g=>this.browseFolder(g.id,o,!0).catch(()=>{}))).then(()=>u(o)).catch(g=>L(new Error(g)))});if(!e||e==="/"){try{let u=await this.props.socket.readMetaItems();const L=[];let g=null;if(this.state.restrictToFolder){const y=this.state.restrictToFolder.split("/")[0];u=u.filter(T=>T._id===y)}else this.state.expertMode||(u=u.filter(y=>!y._id.endsWith(".admin")));const j=u.findIndex(y=>y._id==="system.meta.uuid");if(j!==-1&&u.splice(j,1),u.forEach(y=>{if(this.limitToObjectID&&this.limitToObjectID!==y._id)return;const T={id:y._id,name:y._id,title:y.common&&y.common.name||y._id,meta:!0,from:y.from,ts:y.ts,color:y.common&&y.common.color,icon:y.common&&y.common.icon,folder:!0,acl:y.acl,level:0};T.id===Ft?g=T:L.push(T)}),L.sort((y,T)=>y.id>T.id?1:y.idy.folder).map(y=>this.browseFolder(y.id,o,!0).catch(()=>{}))).then(()=>o)}catch(u){const L=u;this.initialReadFinished&&window.alert(`Cannot read meta items: ${L.message}`),o[e||"/"]=[]}return o}const n=e.split("/"),M=n.length,c=n.shift(),l=n.join("/");let N;try{N=await this.readDirSerial(c||"",l)}catch(u){if(u==="Not exists"&&c==="0_userdata.0")N=[];else throw u}try{const u=[];if(N.forEach(L=>{var j;const g={id:`${e}/${L.file}`,ext:m.getFileExtension(L.file),folder:L.isDir,name:L.file,size:(j=L.stats)==null?void 0:j.size,modified:L.modifiedAt,acl:L.acl,level:M};this.state.restrictToFolder?(g.folder&&(g.id.startsWith(`${this.state.restrictToFolder}/`)||g.id===this.state.restrictToFolder||this.state.restrictToFolder.startsWith(`${g.id}/`))||g.id.startsWith(`${this.state.restrictToFolder}/`))&&u.push(g):this.limitToPath?(g.folder&&(g.id.startsWith(`${this.limitToPath}/`)||g.id===this.limitToPath||this.limitToPath.startsWith(`${g.id}/`))||g.id.startsWith(`${this.limitToPath}/`))&&u.push(g):u.push(g)}),u.sort(Q0),o[e]=u,!i)return Promise.all(u.filter(L=>L.folder).map(L=>this.browseFolder(L.id,o,!0))).then(()=>o)}catch(u){const L=u;this.initialReadFinished&&window.alert(`Cannot read ${c}${l?`/${l}`:""}: ${L==null?void 0:L.message}`),o[e]=[]}return o}toggleFolder(e,t){t==null||t.stopPropagation();const i=[...this.state.expanded],r=i.indexOf(e.id);r===-1?(i.push(e.id),i.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(i)),e.temp?this.setState({expanded:i}):this.browseFolder(e.id).then(o=>this.setState({expanded:i,folders:o})).catch(o=>window.alert(o===Y0?this.props.t('ra_Cannot find "%s"',e.id):this.props.t('ra_Cannot read "%s"',e.id)))):(i.splice(r,1),this.localStorage.setItem("files.expanded",JSON.stringify(i)),this.setState({expanded:i}))}onFileChange=(e,t,i)=>{const r=`${e}/${t}`,o=r.lastIndexOf("/"),n=r.substring(0,o);console.log(`File changed ${r}[${i}]`),this.state.folders[n]&&(this._tempTimeout[n]&&clearTimeout(this._tempTimeout[n]),this._tempTimeout[n]=setTimeout(()=>{delete this._tempTimeout[n],this.browseFolder(n,null,!1,!0).then(M=>this.setState({folders:M})).catch(M=>console.error(`Cannot read folder: ${M.message}`))},300))};changeFolder(e,t){var r;e==null||e.stopPropagation(),this.lastSelect=Date.now();let i=t||Js(this.state.currentDir);if(i==="/"&&(i=""),this.state.viewType==="Tile"&&((r=this.refFileDiv.current)!=null&&r.scrollTop)&&(this.scrollPositions[this.state.currentDir]=this.refFileDiv.current.scrollTop),this.localStorage.setItem("files.currentDir",i),t&&e&&(e.altKey||e.shiftKey||e.ctrlKey||e.metaKey)){this.setState({selected:i});return}if(i&&!this.state.folders[i]){this.browseFolder(i).then(o=>this.setState({folders:o,path:i,currentDir:i,selected:i,pathFocus:!1},()=>this.props.onSelect&&this.props.onSelect(""))).catch(o=>console.error(`Cannot read folder: ${o.message}`));return}this.setState({currentDir:i,selected:i,path:i,pathFocus:!1},()=>{if(this.props.onSelect&&this.props.onSelect(""),this.state.viewType==="Tile"&&this.scrollPositions[this.state.currentDir]){const o=this.scrollPositions[this.state.currentDir];delete this.scrollPositions[this.state.currentDir],this.refFileDiv.current&&(this.refFileDiv.current.scrollTop=o)}})}select(e,t,i){t&&t.stopPropagation(),this.lastSelect=Date.now(),this.localStorage.setItem("files.selected",e),this.setState({selected:e,path:e,pathFocus:!1},()=>{if(this.props.onSelect){const r=m.getFileExtension(e);(!this.props.filterFiles||r&&this.props.filterFiles.includes(r))&&(!this.state.filterByType||r&&ve[this.state.filterByType].includes(r))?this.props.onSelect(e,!1,!!this.state.folders[e]):this.props.onSelect("")}i&&i()})}getText(e){if(e)return typeof e=="object"?e[this.props.lang]||e.en||void 0:e}renderFolder(e,t){var c;if(this.state.filterEmpty&&!((c=this.state.folders[e.id])!=null&&c.length)&&e.id!==Ft&&!e.temp)return null;const i=t?lo:Ti,r=this.state.viewType===oe?e.level*this.levelPadding:0,o=e.name===Ft,n=o||e.name==="vis.0"||e.name==="vis-2.0",M=m.getStyle(this.props.theme,Y[`itemFolderIcon${this.state.viewType}`],n&&Y.specialFolder);return a.createElement(J,{component:"div",key:e.id,id:e.id,style:this.state.viewType===oe?{marginLeft:r,width:`calc(100% - ${r}px)`}:void 0,onClick:l=>this.state.viewType===oe?this.select(e.id,l):this.changeFolder(l,e.id),onDoubleClick:l=>this.state.viewType===oe&&this.toggleFolder(e,l),title:this.getText(e.title),className:"browserItem",sx:m.getStyle(this.props.theme,Y[`item${this.state.viewType}`],Y[`itemFolder${this.state.viewType}`],this.state.selected===e.id?Y.itemSelected:{},e.temp?Y.itemFolderTemp:{})},a.createElement(i,{style:M,onClick:this.state.viewType===oe?l=>this.toggleFolder(e,l):void 0}),a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,Y[`itemName${this.state.viewType}`],Y[`itemNameFolder${this.state.viewType}`])},o?this.props.t("ra_User files"):e.name),a.createElement(J,{component:"div",style:Y[`itemSize${this.state.viewType}`],sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===oe&&this.state.folders[e.id]?this.state.folders[e.id].length:""),a.createElement(J,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===oe&&this.props.expertMode?this.formatAcl(e.acl):null),this.state.viewType===oe&&this.props.expertMode?a.createElement(J,{component:"div",sx:{...Y.itemDeleteButtonTable,display:{md:"inline-block",sm:"none"}}}):null,this.state.viewType===oe&&this.props.allowDownload?a.createElement("div",{style:Y[`itemDownloadEmpty${this.state.viewType}`]}):null,this.state.viewType===oe&&this.props.allowDelete&&this.state.folders[e.id]&&this.state.folders[e.id].length?a.createElement(W,{"aria-label":"delete",onClick:l=>{l.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(e.id):this.setState({deleteItem:e.id})},sx:Y[`itemDeleteButton${this.state.viewType}`],size:"large"},a.createElement(wt,{fontSize:"small"})):this.state.viewType===oe&&this.props.allowDelete?a.createElement(J,{component:"div",sx:Y[`itemDeleteButton${this.state.viewType}`]}):null)}renderBackFolder(){return a.createElement(J,{component:"div",key:this.state.currentDir,id:this.state.currentDir,onClick:e=>this.changeFolder(e),title:this.props.t("ra_Back to %s",Js(this.state.currentDir)),className:"browserItem",sx:m.getStyle(this.props.theme,Y[`item${this.state.viewType}`],Y[`itemFolder${this.state.viewType}`])},a.createElement(Ti,{style:m.getStyle(this.props.theme,Y[`itemFolderIcon${this.state.viewType}`])}),a.createElement(kj,{sx:Y.itemFolderIconBack}),a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,Y[`itemName${this.state.viewType}`],Y[`itemNameFolder${this.state.viewType}`])},".."))}formatSize(e){return a.createElement("div",{style:Y[`itemSize${this.state.viewType}`]},e||e===0?m.formatBytes(e):"")}formatAcl(e){const t=e?e.permissions||e.file:0;let i;return t?i=t.toString(16).padStart(3,"0"):i="",a.createElement("div",{style:Y[`itemAccess${this.state.viewType}`]},this.props.modalEditOfAccessControl?a.createElement(W,{size:"large",onClick:()=>this.setState({modalEditOfAccess:!0}),sx:Y[`itemAclButton${this.state.viewType}`]},i||"---"):i||"---")}getFileIcon(e){switch(e){case"json":case"json5":return a.createElement(bj,{style:Y[`itemIcon${this.state.viewType}`]});case"css":return a.createElement(Uj,{style:Y[`itemIcon${this.state.viewType}`]});case"js":case"ts":return a.createElement(eM,{style:Y[`itemIcon${this.state.viewType}`]});case"html":case"md":return a.createElement(Yo,{style:Y[`itemIcon${this.state.viewType}`]});case"mp3":case"ogg":case"wav":case"m4a":case"mp4":case"flac":return a.createElement(uy,{style:Y[`itemIcon${this.state.viewType}`]});default:return a.createElement(kN,{style:Y[`itemIcon${this.state.viewType}`]})}}static getEditFile(e){switch(e){case"json":case"json5":case"js":case"html":case"txt":case"css":case"log":case"csv":return!0;default:return!1}}setStateBackgroundImage=()=>{const e=["light","dark","colored","delete"];this.setState(({backgroundImage:t})=>t&&e.indexOf(t)!==-1&&e.length-1!==e.indexOf(t)?(this.localStorage.setItem("files.backgroundImage",e[e.indexOf(t)+1]),{backgroundImage:e[e.indexOf(t)+1]}):(this.localStorage.setItem("files.backgroundImage",e[0]),{backgroundImage:e[0]}))};getStyleBackgroundImage=()=>{switch(this.state.backgroundImage){case"light":return Y.backgroundImageLight;case"dark":return Y.backgroundImageDark;case"colored":return Y.backgroundImageColored;case"delete":return null;default:return null}};renderFile(e){const t=this.state.viewType===oe?e.level*this.levelPadding:0,i=m.getFileExtension(e.name);return a.createElement(J,{component:"div",key:e.id,id:e.id,onDoubleClick:r=>{r.stopPropagation(),this.props.onSelect?(!this.props.filterFiles||e.ext&&this.props.filterFiles.includes(e.ext))&&(!this.state.filterByType||e.ext&&ve[this.state.filterByType].includes(e.ext))&&this.props.onSelect(e.id,!0,!!this.state.folders[e.id]):this.setState({viewer:this.imagePrefix+e.id,formatEditFile:i})},onClick:r=>this.select(e.id,r),style:this.state.viewType===oe?{marginLeft:t,width:`calc(100% - ${t}px)`}:void 0,className:"browserItem",sx:m.getStyle(this.props.theme,Y[`item${this.state.viewType}`],Y[`itemFile${this.state.viewType}`],this.state.selected===e.id?Y.itemSelected:void 0)},i&&ve.images.includes(i)?this.state.fileErrors.includes(e.id)?a.createElement(Nc,{style:{...Y[`itemImage${this.state.viewType}`],...this.getStyleBackgroundImage(),...Y[`itemNoImage${this.state.viewType}`]}}):a.createElement(be,{onError:r=>{r.target.onerror=null;const o=[...this.state.fileErrors];o.includes(e.id)||(o.push(e.id),this.setState({fileErrors:o}))},style:{...Y[`itemImage${this.state.viewType}`],...this.getStyleBackgroundImage()},src:this.imagePrefix+e.id,alt:e.name}):this.getFileIcon(i),a.createElement(J,{component:"div",sx:Y[`itemName${this.state.viewType}`]},e.name),a.createElement(J,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.formatSize(e.size)),a.createElement(J,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===oe&&this.props.expertMode?this.formatAcl(e.acl):null),a.createElement(J,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===oe&&this.props.expertMode&&Lc.getEditFile(i)?a.createElement(W,{"aria-label":"edit",onClick:r=>{r.stopPropagation(),this.props.onSelect?(!this.props.filterFiles||e.ext&&this.props.filterFiles.includes(e.ext))&&(!this.state.filterByType||e.ext&&ve[this.state.filterByType].includes(e.ext))&&this.props.onSelect(e.id,!0,!!this.state.folders[e.id]):this.setState({viewer:this.imagePrefix+e.id,formatEditFile:i})},sx:Y.itemDeleteButtonTable,size:"large"},a.createElement(or,{fontSize:"small"})):a.createElement(J,{component:"div",sx:Y[`itemDeleteButton${this.state.viewType}`]})),this.state.viewType===oe&&this.props.allowDownload?a.createElement(J,{component:"a",className:"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge",sx:Y.itemDownloadButtonTable,tabIndex:0,download:e.id,href:this.imagePrefix+e.id,onClick:r=>r.stopPropagation()},a.createElement(Ly,null)):null,this.state.viewType===oe&&this.props.allowDelete&&e.id!=="vis.0/"&&e.id!=="vis-2.0/"&&e.id!==Ft?a.createElement(W,{"aria-label":"delete",onClick:r=>{r.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(e.id):this.setState({deleteItem:e.id})},sx:Y[`itemDeleteButton${this.state.viewType}`],size:"large"},a.createElement(wt,{fontSize:"small"})):this.state.viewType===oe&&this.props.allowDelete?a.createElement(J,{component:"div",sx:Y[`itemDeleteButton${this.state.viewType}`]}):null)}renderItems(e){var t;if((t=this.state.folders)!=null&&t[e]){if(this.state.viewType===Un){const r=[];return e&&e!=="/"&&r.push(this.renderBackFolder()),this.state.folders[e].forEach(o=>{o.folder?r.push(this.renderFolder(o)):(!this.props.filterFiles||o.ext&&this.props.filterFiles.includes(o.ext))&&(!this.state.filterByType||o.ext&&ve[this.state.filterByType].includes(o.ext))&&r.push(this.renderFile(o))}),r}const i=[];return this.state.folders[e].forEach(r=>{if(r.folder){const o=this.state.expanded.includes(r.id),n=this.renderFolder(r,o);if(Array.isArray(n)?n.forEach(M=>i.push(M)):i.push(n),this.state.folders[r.id]&&o){const M=this.renderItems(r.id);Array.isArray(M)?M.forEach(c=>i.push(c)):i.push(M)}}else(!this.props.filterFiles||r.ext&&this.props.filterFiles.includes(r.ext))&&(!this.state.filterByType||r.ext&&ve[this.state.filterByType].includes(r.ext))&&i.push(this.renderFile(r))}),i}return a.createElement("div",{style:{position:"relative"}},a.createElement(ko,{key:e,color:"secondary",size:24}),a.createElement("div",{style:{position:"absolute",zIndex:2,top:4,width:24,textAlign:"center"}},this.state.queueLength))}renderToolbar(){const e=this.props.showTypeSelector?Kr[this.state.filterByType||"all"]||Kr.all:null,t=this.findFirstFolder(this.state.selected);return a.createElement(AN,{key:"toolbar",variant:"dense"},this.props.allowNonRestricted&&this.props.restrictToFolder?a.createElement(W,{edge:"start",title:this.state.restrictToFolder?this.props.t("ra_Show all folders"):this.props.t("ra_Restrict to folder"),style:{...Y.menuButton,...this.state.restrictToFolder?Y.menuButtonRestrictActive:void 0},"aria-label":"restricted to folder",onClick:()=>this.setState({restrictToFolder:(this.state.restrictToFolder?"":this.props.restrictToFolder)||"",loadAllFolders:!0}),size:"small"},a.createElement(sy,{fontSize:"small"})):null,this.props.showExpertButton?a.createElement(W,{edge:"start",title:this.props.t("ra_Toggle expert mode"),style:{...Y.menuButton,...this.state.expertMode?Y.menuButtonExpertActive:void 0},"aria-label":"expert mode",onClick:()=>this.setState({expertMode:!this.state.expertMode}),size:"small"},a.createElement(Ea,null)):null,this.props.showViewTypeButton?a.createElement(W,{edge:"start",title:this.props.t("ra_Toggle view mode"),style:Y.menuButton,"aria-label":"view mode",onClick:()=>{const i=this.state.viewType===oe?Un:oe;this.localStorage.setItem("files.viewType",i);let r=this.state.selected;bn(r)&&(r=Js(r)),this.setState({viewType:i,currentDir:r},()=>{this.state.viewType===oe&&this.scrollToSelected()})},size:"small"},this.state.viewType!==oe?a.createElement(ay,{fontSize:"small"}):a.createElement(Iy,{fontSize:"small"})):null,a.createElement(W,{edge:"start",title:this.props.t("ra_Hide empty folders"),style:Y.menuButton,color:this.state.filterEmpty?"secondary":"inherit","aria-label":"filter empty",onClick:()=>{this.localStorage.setItem("file.empty",this.state.filterEmpty?"false":"true"),this.setState({filterEmpty:!this.state.filterEmpty})},size:"small"},a.createElement(ty,{fontSize:"small"})),a.createElement(W,{edge:"start",title:this.props.t("ra_Reload files"),style:Y.menuButton,color:"inherit","aria-label":"reload files",onClick:()=>this.setState({folders:{}},()=>this.loadFolders()),size:"small"},a.createElement(SN,{fontSize:"small"})),this.props.allowCreateFolder?a.createElement(W,{edge:"start",disabled:!this.state.selected||!t||!!this.limitToPath&&!this.state.selected.startsWith(`${this.limitToPath}/`)&&this.limitToPath!==this.state.selected,title:this.props.t("ra_Create folder"),style:Y.menuButton,color:"inherit","aria-label":"add folder",onClick:()=>this.setState({addFolder:!0}),size:"small"},a.createElement(EN,{fontSize:"small"})):null,this.props.allowUpload?a.createElement(W,{edge:"start",disabled:!this.state.selected||!t||!!this.limitToPath&&!this.state.selected.startsWith(`${this.limitToPath}/`)&&this.limitToPath!==this.state.selected,title:this.props.t("ra_Upload file"),style:Y.menuButton,color:"inherit","aria-label":"upload file",onClick:()=>this.setState({uploadFile:!0}),size:"small"},a.createElement(go,{fontSize:"small"})):null,this.props.showTypeSelector&&e?a.createElement(Le,{title:this.props.t("ra_Filter files"),slotProps:{popper:{sx:Y.tooltip}}},a.createElement(W,{size:"small",onClick:i=>this.setState({showTypesMenu:i.target})},a.createElement(e,{fontSize:"small"}))):null,this.state.showTypesMenu?a.createElement(ws,{open:!0,anchorEl:this.state.showTypesMenu,onClose:()=>this.setState({showTypesMenu:null})},Object.keys(Kr).map(i=>{const r=Kr[i];return a.createElement(re,{key:i,selected:this.state.filterByType===i,onClick:()=>{i==="all"?(this.localStorage.removeItem("files.filterByType"),this.setState({filterByType:"",showTypesMenu:null})):(this.localStorage.setItem("files.filterByType",i),this.setState({filterByType:i,showTypesMenu:null}))}},a.createElement(Xt,null,a.createElement(r,{fontSize:"small"})),a.createElement(dt,null,this.props.t(`ra_fileType_${i}`)))})):null,a.createElement(Le,{title:this.props.t("ra_Background image"),slotProps:{popper:{sx:Y.tooltip}}},a.createElement(W,{color:"inherit",edge:"start",style:Y.menuButton,onClick:this.setStateBackgroundImage,size:"small"},a.createElement(tM,{fontSize:"small"}))),this.state.viewType!==oe&&this.props.allowDelete?a.createElement(Le,{title:this.props.t("ra_Delete"),slotProps:{popper:{sx:Y.tooltip}}},a.createElement("span",null,a.createElement(W,{"aria-label":"delete",disabled:!this.state.selected||this.state.selected==="vis.0/"||this.state.selected==="vis-2.0/"||this.state.selected===Ft,color:"inherit",edge:"start",style:Y.menuButton,onClick:i=>{i.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(this.state.selected):this.setState({deleteItem:this.state.selected})},size:"small"},a.createElement(wt,{fontSize:"small"})))):null)}findItem(e,t){if(t=t||this.state.folders,!t)return null;const i=e.split("/");i.pop();const r=i.join("/")||"/";return t[r]&&t[r].find(o=>o.id===e)||null}renderInputDialog(){if(this.state.addFolder){const e=this.findFirstFolder(this.state.selected);return e?a.createElement(w_e,{key:"inputDialog",applyText:this.props.t("ra_Create"),cancelText:this.props.t("ra_Cancel"),titleText:this.props.t("ra_Create new folder in %s",this.state.selected),promptText:this.props.t("ra_If no file will be created in the folder, it will disappear after the browser closed"),labelText:this.props.t("ra_Folder name"),verify:t=>this.state.folders[e].find(i=>i.name===t)?"":this.props.t("ra_Duplicate name"),onClose:t=>{if(t){const i={};Object.keys(this.state.folders).forEach(M=>i[M]=this.state.folders[M]);const r=this.findItem(e),o=`${e}/${t}`;i[e].push({id:o,level:((r==null?void 0:r.level)||0)+1,name:t,folder:!0,temp:!0}),i[e].sort(Q0),i[o]=[];const n=[...this.state.expanded];n.includes(e)||(n.push(e),n.sort()),this.localStorage.setItem("files.expanded",JSON.stringify(n)),this.setState({addFolder:!1,folders:i,expanded:n},()=>this.select(o))}else this.setState({addFolder:!1})},replace:t=>t.replace(/[^-_\w]/,"_")}):(window.alert(this.props.t("ra_Invalid parent folder!")),null)}return null}componentDidUpdate(){this.setOpacityTimer&&clearTimeout(this.setOpacityTimer),this.setOpacityTimer=setTimeout(()=>{this.setOpacityTimer=null;const e=window.document.getElementsByClassName("browserItem");for(let t=0;tthis.setState({uploadFile:!1})},a.createElement(we,null)),a.createElement(_N,{key:"dropzone",onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:e=>{let t=e.length;e.forEach(i=>{const r=new FileReader;r.onabort=()=>console.log("file reading was aborted"),r.onerror=()=>console.log("file reading has failed"),r.onload=()=>{const o=this.findFirstFolder(this.state.selected);if(!o)window.alert(this.props.t("ra_Invalid parent folder!"));else{const n=`${o}/${i.name}`;this.uploadFile(n,r.result).then(()=>{--t||this.setState({uploadFile:!1},()=>{if(this.supportSubscribes){const M=[...this.state.expanded];M.includes(o)||(M.push(o),M.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(M))),this.setState({expanded:M},()=>this.select(n))}else setTimeout(()=>this.browseFolder(o,null,!1,!0).then(M=>{const c=[...this.state.expanded];c.includes(o)||(c.push(o),c.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(c))),this.setState({folders:M,expanded:c},()=>this.select(n))}),500)})})}},r.readAsArrayBuffer(i)})}},({getRootProps:e,getInputProps:t})=>a.createElement("div",{style:{...Y.uploadDiv,...this.state.uploadFile==="dragging"?Y.uploadDivDragging:void 0},...e()},a.createElement("input",{...t()}),a.createElement(J,{component:"div",sx:Y.uploadCenterDiv},a.createElement("div",{style:Y.uploadCenterTextAndIcon},a.createElement(go,{style:Y.uploadCenterIcon}),a.createElement("div",{style:Y.uploadCenterText},this.state.uploadFile==="dragging"?this.props.t("ra_Drop file here"):this.props.t("ra_Place your files here or click here to open the browse dialog"))))))]:null}deleteRecursive(e){const t=this.findItem(e);if(t!=null&&t.folder)return(this.state.folders[e]?Promise.all(this.state.folders[e].map(o=>this.deleteRecursive(o.id))):Promise.resolve()).then(()=>{if(t.level>=1){const o=e.split("/"),n=o.shift();this.props.socket.deleteFolder(n||"",o.join("/")).then(()=>{const M=JSON.parse(JSON.stringify(this.state.folders));delete M[t.id];const c=Js(t.id),l=M[c];if(l){const N=l.findIndex(u=>u.id===t.id);N!==-1&&l.splice(N,1),this.select(c,null,()=>this.setState({folders:M}))}})}});const i=e.split("/"),r=i.shift();return i.length?this.props.socket.deleteFile(r||"",i.join("/")).catch(o=>window.alert(`Cannot delete file: ${o}`)):Promise.resolve()}deleteItem(e){e=e||this.state.deleteItem,this.state.suppressDeleteConfirm&&(this.suppressDeleteConfirm=Date.now()+6e4*5),this.setState({deleteItem:"",suppressDeleteConfirm:!1},()=>this.deleteRecursive(e).then(()=>{const t={},i=this.state.expanded.indexOf(e);if(i!==-1){const r=[...this.state.expanded];r.splice(i,1),this.localStorage.setItem("files.expanded",JSON.stringify(r)),t.expanded=r}if(this.state.selected===e){const r=this.state.selected.split("/");r.pop(),t.selected=r.join("/")}if(this.supportSubscribes)this.setState(t);else{const r=this.findFirstFolder(e),o={};Object.keys(this.state.folders).forEach(n=>{n!==r&&!n.startsWith(`${r}/`)&&(o[n]=this.state.folders[n])}),t.folders=o,this.setState(t,()=>setTimeout(()=>{this.browseFolders([...this.state.expanded],o).then(n=>this.setState({folders:n})).catch(n=>console.error(n))},200))}}))}renderDeleteDialog(){return this.state.deleteItem?a.createElement(Ae,{key:"deleteDialog",open:!0,onClose:()=>this.setState({deleteItem:""}),"aria-labelledby":"ar_dialog_file_delete_title"},a.createElement(fe,{id:"ar_dialog_file_delete_title"},this.props.t("ra_Confirm deletion of %s",this.state.deleteItem.split("/").pop())),a.createElement(_e,null,a.createElement(as,null,this.props.t("ra_Are you sure?")),a.createElement(V,{control:a.createElement(ue,{checked:this.state.suppressDeleteConfirm,onChange:()=>{this.setState({suppressDeleteConfirm:!this.state.suppressDeleteConfirm})}}),label:this.props.t("ra_no confirm for 5 mins")})),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.deleteItem(""),color:"primary",autoFocus:!0},this.props.t("ra_Delete")),a.createElement(q,{variant:"contained",onClick:()=>this.setState({deleteItem:""}),color:"grey"},this.props.t("ra_Cancel")))):null}renderViewDialog(){const e=this.props.FileViewer||F_e;return this.state.viewer?a.createElement(e,{supportSubscribes:this.supportSubscribes||void 0,key:this.state.viewer,href:this.state.viewer,formatEditFile:this.state.formatEditFile||void 0,themeType:this.props.themeType||"light",setStateBackgroundImage:this.setStateBackgroundImage,getStyleBackgroundImage:this.getStyleBackgroundImage,t:this.props.t,socket:this.props.socket,onClose:()=>this.setState({viewer:"",formatEditFile:""})}):null}renderError(){return this.state.errorText?a.createElement(k4,{key:"errorDialog",text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}updateItemsAcl(e){this.cacheFolders||=JSON.parse(JSON.stringify(this.state.folders));let t;e.forEach(i=>{const r=this.findItem(i.id,this.cacheFolders);r&&JSON.stringify(r.acl)!==JSON.stringify(i.acl)&&(r.acl=i.acl,t=!0)}),t&&(this.cacheFoldersTimeout&&clearTimeout(this.cacheFoldersTimeout),this.cacheFoldersTimeout=setTimeout(()=>{this.cacheFoldersTimeout=null;const i=this.cacheFolders||{};this.cacheFolders=null,this.setState({folders:i})},200))}changeToPath(){setTimeout(()=>{if(this.state.path!==this.state.selected&&(!this.lastSelect||Date.now()-this.lastSelect>100)){let e=this.state.path;bn(this.state.path)&&(e=Js(this.state.path)),new Promise(t=>{this.state.folders[e]?t(!0):this.browseFolder(e).then(i=>this.setState({folders:i},()=>t(!0))).catch(i=>this.setState({errorText:i===Y0?this.props.t('ra_Cannot find "%s"',e):this.props.t('ra_Cannot read "%s"',e)}))}).then(t=>t&&this.setState({selected:this.state.path,currentDir:e,pathFocus:!1})).catch(t=>console.error(t))}else(!this.lastSelect||Date.now()-this.lastSelect>100)&&this.setState({pathFocus:!1})},100)}renderBreadcrumb(){const e=this.state.currentDir.startsWith("/")?this.state.currentDir.split("/"):`/${this.state.currentDir}`.split("/"),t=[];return a.createElement(Gg,{style:{paddingLeft:8,color:"#FFF"}},e.map((i,r)=>{i&&t.push(i);const o=t.join("/");return rthis.changeFolder(n,o||"/")},i||this.props.t("ra_Root")):a.createElement("div",{style:Y.pathDivBreadcrumbSelected,key:`${this.state.selected}_${r}`,onClick:()=>this.setState({pathFocus:!0})},i)}))}renderPath(){return a.createElement(J,{component:"div",key:"path",sx:Y.pathDiv},this.state.pathFocus?a.createElement(qt,{value:this.state.path,onKeyDown:e=>{e.key==="Enter"?this.changeToPath():e.key==="Escape"&&this.setState({pathFocus:!1})},endAdornment:a.createElement(W,{size:"small",onClick:()=>this.changeToPath()},a.createElement(ny,null)),onBlur:()=>this.changeToPath(),onChange:e=>this.setState({path:e.target.value}),style:Y.pathDivInput}):this.renderBreadcrumb())}render(){return this.props.ready?(this.state.loadAllFolders&&!this.foldersLoading&&(this.foldersLoading=!0,setTimeout(()=>{this.setState({loadAllFolders:!1,folders:{}},()=>{this.foldersLoading=!1,this.loadFolders().catch(e=>console.error(`Cannot load folders: ${e}`))})},300)),a.createElement("div",{style:{...Y.root,...this.props.style},className:this.props.className},this.props.showToolbar?this.renderToolbar():null,this.state.viewType===Un?this.renderPath():null,a.createElement("div",{style:{...Y.filesDiv,...Y[`filesDiv${this.state.viewType}`]},onClick:e=>{this.state.viewType!==oe&&(this.state.selected!==(this.state.currentDir||"/")?this.changeFolder(e,this.state.currentDir||"/"):e.stopPropagation())},id:"dev",ref:this.refFileDiv},this.state.viewType===oe?this.renderItems("/"):this.renderItems(this.state.currentDir||"/"),this.state.viewType!==oe?a.createElement("div",{style:Y.filesDivHint},this.props.t("ra_select_folder_hint")):null),this.props.allowUpload?this.renderInputDialog():null,this.props.allowUpload?this.renderUpload():null,this.props.allowDelete?this.renderDeleteDialog():null,this.props.allowView?this.renderViewDialog():null,this.state.modalEditOfAccess&&this.props.modalEditOfAccessControl?this.props.modalEditOfAccessControl(this):null,this.renderError())):a.createElement(Hg,null)}}const G_e=cn()(Lc),H_e="PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSIwIC0xMjAgNDgwIDQ4MCIgd2lkdGg9IjQ4MHB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00NzIgMGgtNDY0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djE5MmMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDMydjI0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoNDBjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMjRoMjg4djI0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoNDBjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMjRoMzJjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMTkyYzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS0zOTIgMjI0aC0yNHYtMTZoMjR6bTM0NCAwaC0yNHYtMTZoMjR6bTQwLTMyaC00NDh2LTE3Nmg0NDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2IDE3NmMzNS4zNDc2NTYgMCA2NC0yOC42NTIzNDQgNjQtNjRzLTI4LjY1MjM0NC02NC02NC02NC02NCAyOC42NTIzNDQtNjQgNjRjLjAzOTA2MiAzNS4zMjgxMjUgMjguNjcxODc1IDYzLjk2MDkzOCA2NCA2NHptLTgtMTExLjI4MTI1djE1LjI4MTI1aDE2di0xNS4yODEyNWMyNC42MDU0NjkgNC4xNjAxNTYgNDEuOTE3OTY5IDI2LjQ3NjU2MiAzOS44MzIwMzEgNTEuMzQzNzUtMi4wODU5MzcgMjQuODY3MTg4LTIyLjg3ODkwNiA0My45ODQzNzUtNDcuODMyMDMxIDQzLjk4NDM3NXMtNDUuNzQ2MDk0LTE5LjExNzE4Ny00Ny44MzIwMzEtNDMuOTg0Mzc1Yy0yLjA4NTkzOC0yNC44NjcxODggMTUuMjI2NTYyLTQ3LjE4MzU5NCAzOS44MzIwMzEtNTEuMzQzNzV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYwIDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjAgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTEyOCAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im05NiAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTY0IDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im02NCA2NGgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjggMTc2YzE2LjA5Mzc1LjAxOTUzMSAyOS42ODc1LTExLjkzNzUgMzEuNzE4NzUtMjcuOTA2MjUgMi4wMzUxNTYtMTUuOTY0ODQ0LTguMTMyODEyLTMwLjk0NTMxMi0yMy43MTg3NS0zNC45NTcwMzF2LTE3LjEzNjcxOWgtMTZ2MTcuMTM2NzE5Yy0xNS41ODU5MzggNC4wMTE3MTktMjUuNzUzOTA2IDE4Ljk5MjE4Ny0yMy43MTg3NSAzNC45NTcwMzEgMi4wMzEyNSAxNS45Njg3NSAxNS42MjUgMjcuOTI1NzgxIDMxLjcxODc1IDI3LjkwNjI1em0wLTQ4YzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZzLTcuMTY0MDYyIDE2LTE2IDE2LTE2LTcuMTY0MDYyLTE2LTE2IDcuMTY0MDYyLTE2IDE2LTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0NCAxNzZjMTYuMDkzNzUuMDE5NTMxIDI5LjY4NzUtMTEuOTM3NSAzMS43MTg3NS0yNy45MDYyNSAyLjAzNTE1Ni0xNS45NjQ4NDQtOC4xMzI4MTItMzAuOTQ1MzEyLTIzLjcxODc1LTM0Ljk1NzAzMXYtMTcuMTM2NzE5aC0xNnYxNy4xMzY3MTljLTE1LjU4NTkzOCA0LjAxMTcxOS0yNS43NTM5MDYgMTguOTkyMTg3LTIzLjcxODc1IDM0Ljk1NzAzMSAyLjAzMTI1IDE1Ljk2ODc1IDE1LjYyNSAyNy45MjU3ODEgMzEuNzE4NzUgMjcuOTA2MjV6bTAtNDhjOC44MzU5MzggMCAxNiA3LjE2NDA2MiAxNiAxNnMtNy4xNjQwNjIgMTYtMTYgMTYtMTYtNy4xNjQwNjItMTYtMTYgNy4xNjQwNjItMTYgMTYtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNjQgMTc2YzE2LjA5Mzc1LjAxOTUzMSAyOS42ODc1LTExLjkzNzUgMzEuNzE4NzUtMjcuOTA2MjUgMi4wMzUxNTYtMTUuOTY0ODQ0LTguMTMyODEyLTMwLjk0NTMxMi0yMy43MTg3NS0zNC45NTcwMzF2LTE3LjEzNjcxOWgtMTZ2MTcuMTM2NzE5Yy0xNS41ODU5MzggNC4wMTE3MTktMjUuNzUzOTA2IDE4Ljk5MjE4Ny0yMy43MTg3NSAzNC45NTcwMzEgMi4wMzEyNSAxNS45Njg3NSAxNS42MjUgMjcuOTI1NzgxIDMxLjcxODc1IDI3LjkwNjI1em0wLTQ4YzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZzLTcuMTY0MDYyIDE2LTE2IDE2LTE2LTcuMTY0MDYyLTE2LTE2IDcuMTY0MDYyLTE2IDE2LTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwOCAxMTJoMzJjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMzJjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2NjRjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOHptOC02NGgxNnYxNmgtMTZ6bTAgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQzMiAxMzZjMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHMtOC0zLjU4MjAzMS04LTggMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyIDE2OGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",V_e="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNTA3LjU0NiAxMDUuMTI1YzAtMS4wNDQtLjIwNS0yLjA5MS0uNjQ3LTMuMDcybC00My45My05Ny42M2MtMS4yMS0yLjY5Mi0zLjg4OC00LjQyMy02LjgzOS00LjQyM2gtMTgyLjYzYy00LjE0MyAwLTcuNSAzLjM1Ny03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDIzLjgxMnY4Mi42M2gtODIuNjI1di04Mi42M2gyMy44MTNjNC4xNDMgMCA3LjUtMy4zNTcgNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTE4Mi42M2MtMi45NTEgMC01LjYyOSAxLjczMS02Ljg0IDQuNDIzbC00My45MyA5Ny42M2MtLjQ0MS45ODEtLjY0NiAyLjAyOC0uNjQ3IDMuMDcyaC0uMDE1djEyLjIwM2MwIDI5LjUxNCAyMi44MjcgNTMuNzggNTEuNzUxIDU2LjExMmwzMS44NjUgNTguNDE5aC00LjAwN2MtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgxNi42MzNjLjAwNSAwIC4wMS4wMDEuMDE1LjAwMXMuMDExLS4wMDEuMDE2LS4wMDFoMTYuNjE4YzQuMTQzIDAgNy41LTMuMzU3IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xMi4xODlsLTMyLjQ1Ni01OS41MDNjMTUuNzUtMy40MTMgMjkuMDU3LTEzLjQzMyAzNi44NzktMjcuMDAzIDkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzcuODIyIDEzLjU3MSAyMS4xMjkgMjMuNTkxIDM2Ljg3OSAyNy4wMDNsLTMyLjQ1NiA1OS41MDNoLTEyLjE4OGMtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgxNi42MThjLjAwNSAwIC4wMTEuMDAxLjAxNi4wMDFzLjAxLS4wMDEuMDE1LS4wMDFoMTYuNjMzYzQuMTQzIDAgNy41LTMuMzU3IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC00LjAwN2wzMS44NjUtNTguNDE5YzI4LjkyNC0yLjMzMiA1MS43NTEtMjYuNTk4IDUxLjc1MS01Ni4xMTJ2LTEyLjIwM3ptLTE5LjA4NS03LjQ5NWgtNzguNTIzdi04Mi42M2g0MS4zNDN6bS05My41MjMtODIuNjN2ODIuNjNoLTgyLjYyNXYtODIuNjN6bS0xOTUuMjUgODIuNjNoLTgyLjYyNXYtODIuNjNoODIuNjI1em0tMTM4Ljk2OC04Mi42M2g0MS4zNDN2ODIuNjNoLTc4LjUyNHptLjAzNCAxNDMuNjQxYy0uMDExIDAtLjAyMS0uMDAxLS4wMzItLjAwMS0yMi43NjctLjAxNS00MS4yODUtMTguNTQyLTQxLjI4NS00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMwIDIyLjc3OC0xOC41MzEgNDEuMzEtNDEuMzA4IDQxLjMxM3ptOTcuNjIxIDBjLTIyLjc3OSAwLTQxLjMxMi0xOC41MzMtNDEuMzEyLTQxLjMxMnYtNC42OThoODIuNjI1djQuNjk4YzAgMjIuNzc4LTE4LjUzNCA0MS4zMTItNDEuMzEzIDQxLjMxMnptOTcuNjI1IDBjLTIyLjc3OSAwLTQxLjMxMi0xOC41MzMtNDEuMzEyLTQxLjMxMnYtNC42OThoODIuNjI1djQuNjk4Yy0uMDAxIDIyLjc3OC0xOC41MzQgNDEuMzEyLTQxLjMxMyA0MS4zMTJ6bTk3LjYyNSAwYy0yMi43NzkgMC00MS4zMTItMTguNTMzLTQxLjMxMi00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMwIDIyLjc3OC0xOC41MzQgNDEuMzEyLTQxLjMxMyA0MS4zMTJ6bTk3LjY0OC0uMDAxYy0uMDA1IDAtLjAwOSAwLS4wMTQgMC0uMDAzIDAtLjAwNiAwLS4wMDkgMC0yMi43NzkgMC00MS4zMTItMTguNTMzLTQxLjMxMi00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMtLjAwMSAyMi43NzItMTguNTIxIDQxLjMtNDEuMjkgNDEuMzEyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Z_e="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUwOC41MzYgNTA4LjUzNiIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDk4LjUzNiAzNDQuMzIxaC0xNy4yOThjLjQzNC0xNy42NzItMTAuMjY3LTM0LjIxMi0yOS41NDctMzQuMjEycy0yOS45ODIgMTYuNTQtMjkuNTQ3IDM0LjIxMmgtMTcuMjk4Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwdjI1LjY5N2MwIDI0LjYwMSAxNS43MTIgNDUuNTk2IDM3LjYyNSA1My40OTRsLTExLjYwMSAxMS42MDFjLTExLjA4NiAxMS4wODYtMjUuODI2IDE3LjE5MS00MS41MDMgMTcuMTkxLTMyLjM2NCAwLTU4LjY5My0yNi4zMy01OC42OTMtNTguNjkzdi02Ni42NGMzNi4wODggMS4yNjYgNTcuODQ2LTIyLjM5IDgxLjE0OS00NS42OTQgMjguNTE3LTMuMDI0IDUwLjgwOS0yNy4yMTYgNTAuODA5LTU2LjUyMnYtMjUuNjk4YzAtNS41MjMtNC40NzctMTAtMTAtMTBoLTE3LjI5OGMuNDM0LTE3LjY3MS0xMC4yNjctMzQuMjEyLTI5LjU0Ny0zNC4yMTJzLTI5Ljk4MiAxNi41NC0yOS41NDcgMzQuMjEyaC0xNy4zYy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwdjI1LjY5OGMwIDI0LjYwMSAxNS43MTEgNDUuNTk2IDM3LjYyNSA1My40OTRsLTExLjYwMSAxMS42MDFjLTExLjA4NiAxMS4wODYtMjUuODI2IDE3LjE5MS00MS41MDMgMTcuMTkxLTMyLjM2NCAwLTU4LjY5My0yNi4zMy01OC42OTMtNTguNjk0IDAtMjUuODk1IDAtNTEuNzkxIDAtNzcuNjg2aDIyLjcxNmMxMi4yODUgMCAxOC43MjYgMTUuNTMgMTAuMDMzIDI0LjIyMS05LjEyMiA5LjEyMSA1LjAyIDIzLjI2NCAxNC4xNDIgMTQuMTQzIDYuNDU4LTYuNDU3IDEwLjAxNC0xNS4wNDIgMTAuMDE0LTI0LjE3NSAwLTE4Ljg1Mi0xNS4zMzctMzQuMTg4LTM0LjE4OS0zNC4xODhoLTIyLjcxNnYtMTguODI0YzI2LjI1Ny01LjA0MyA0Ni4xNjEtMjguMTc1IDQ2LjE2MS01NS44ODF2LTIwLjg1MWMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwaC0zNi45MTR2LTI0LjIzNmgzNi45MTRjMTIuODQgMCAxMi44NTktMjAgMC0yMGgtOTMuODI4Yy0xMi44NCAwLTEyLjg1OSAyMCAwIDIwaDM2LjkxNHYyNC4yMzVoLTM2LjkxNGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYyMC44NTFjMCAyOC4yMzMgMjAuNjY5IDUxLjcxOSA0Ny42NjcgNTYuMTUxdjE4LjU1NWgtMjIuNzE2Yy0xOC44NTIgMC0zNC4xODkgMTUuMzM3LTM0LjE4OSAzNC4xODggMCA5LjEzMiAzLjU1NiAxNy43MTcgMTAuMDE0IDI0LjE3NSA5LjEyMSA5LjEyMSAyMy4yNjMtNS4wMjEgMTQuMTQzLTE0LjE0My04LjY4NS04LjY4NC0yLjI2NC0yNC4yMjEgMTAuMDMzLTI0LjIyMWgyMi43MTZ2NzcuNjg2YzAgMzIuMzY0LTI2LjMzIDU4LjY5NC01OC42OTQgNTguNjk0LTE1LjY3NyAwLTMwLjQxNy02LjEwNS00MS41MDItMTcuMTkxbC0xMS4yMTgtMTEuMjE4YzIyLjUtNy41NzUgMzguNzU2LTI4Ljg1NiAzOC43NTYtNTMuODc3di0yNS42OThjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMTcuMjk4Yy40MzQtMTcuNjcxLTEwLjI2Ny0zNC4yMTItMjkuNTQ3LTM0LjIxMnMtMjkuOTgyIDE2LjU0LTI5LjU0NyAzNC4yMTJoLTE3LjNjLTUuNTIzIDAtMTAgNC40NzctMTAgMTB2MjUuNjk4YzAgMjguNzA3IDIxLjM5NCA1Mi40OTggNDkuMDczIDU2LjNsMjIuOTM3IDIyLjkzN2MxNS4xNjQgMTUuMTYzIDM2LjAxIDIzLjQ4NiA1Ny40MzMgMjMuMDAzdjY2LjYxNGMwIDMyLjM2NC0yNi4zMyA1OC42OTMtNTguNjkzIDU4LjY5My0xNS42NzcgMC0zMC40MTctNi4xMDUtNDEuNTAyLTE3LjE5MWwtMTEuNjAyLTExLjYwMmMyMS45MTQtNy44OTggMzcuNjI1LTI4Ljg5MiAzNy42MjUtNTMuNDk0di0yNS42OTdjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMTcuMjk3Yy40MzQtMTcuNjcyLTEwLjI2Ny0zNC4yMTItMjkuNTQ3LTM0LjIxMnMtMjkuOTgyIDE2LjU0LTI5LjU0NyAzNC4yMTJoLTE3LjI5OWMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYyNS42OTdjMCAyOS4zMDUgMjIuMjkyIDUzLjQ5NyA1MC44MDggNTYuNTIxbDIyLjcxNyAyMi43MTZjMTQuODYzIDE0Ljg2MyAzNC42MjUgMjMuMDQ4IDU1LjY0NSAyMy4wNDggNDMuMzkyIDAgNzguNjkzLTM1LjMwMiA3OC42OTMtNzguNjkzdi02OS42NTdjMTQuNDI2LTQuMTY0IDI3LjE2MS0xMi4zNDIgMzYuOTA1LTIzLjI1N3YyMC41MjJjMCAxMi44NCAyMCAxMi44NTkgMjAgMHYtMjAuNTIyYzkuNTIgMTAuNjYzIDIxLjg4OSAxOC43MjMgMzUuOTA1IDIyLjk3MnY2OS45NDZjMCA0My4zOTIgMzUuMzAyIDc4LjY5MyA3OC42OTMgNzguNjkzIDIxLjAyIDAgNDAuNzgxLTguMTg2IDU1LjY0NS0yMy4wNDhsMjIuNzE2LTIyLjcxNmMyOC41MTYtMy4wMjUgNTAuODA4LTI3LjIxNiA1MC44MDgtNTYuNTIxdi0yNS42OTdjLjAwMS01LjUyNC00LjQ3Ni0xMC4wMDEtOS45OTktMTAuMDAxem0tMTEyLjI5OC0xNDkuOTI3YzAtMTIuMzEzIDE5LjA5NS0xMi4zMTMgMTkuMDk1IDB2NC42NjRoLTE5LjA5NXptNDYuMzkzIDI0LjY2NHYxNS42OThjMCAyMC4zMTYtMTYuNTI5IDM2Ljg0NS0zNi44NDUgMzYuODQ1cy0zNi44NDUtMTYuNTI5LTM2Ljg0NS0zNi44NDV2LTE1LjY5OHptLTMyNi45MTQtMjQuNjY0YzAtMTIuMzEzIDE5LjA5NS0xMi4zMTMgMTkuMDk1IDB2NC42NjRoLTE5LjA5NXptNDYuMzkzIDI0LjY2NHYxNS42OThjMCAyMC4zMTYtMTYuNTI5IDM2Ljg0NS0zNi44NDUgMzYuODQ1cy0zNi44NDUtMTYuNTI5LTM2Ljg0NS0zNi44NDV2LTE1LjY5OHptLTEwNC44MTIgMTIwLjU5OWMwLTEyLjMxMyAxOS4wOTUtMTIuMzEzIDE5LjA5NSAwdjQuNjY1aC0xOS4wOTV6bTQ2LjM5MiAyNC42NjR2MTUuNjk3YzAgMjAuMzE2LTE2LjUyOSAzNi44NDUtMzYuODQ1IDM2Ljg0NXMtMzYuODQ1LTE2LjUyOC0zNi44NDUtMzYuODQ1di0xNS42OTd6bTEyMy40MTEtMjc4LjM2NHYtMTAuODUxaDczLjgyOHYxMC44NTFjMCA0Ny41OTYtNzMuODI4IDQ3LjU5Ni03My44MjggMHptMjI1LjA0MiAyNTMuN2MwLTEyLjMxMyAxOS4wOTUtMTIuMzEzIDE5LjA5NSAwdjQuNjY1aC0xOS4wOTV6bTQ2LjM5MyAyNC42NjR2MTUuNjk3YzAgMjAuMzE2LTE2LjUyOSAzNi44NDUtMzYuODQ1IDM2Ljg0NXMtMzYuODQ1LTE2LjUyOS0zNi44NDUtMzYuODQ1di0xNS42OTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yODEuMjA2IDQ0MS44NDctMTYuNDM4LTkuNDl2LTIxLjY0NWMwLTEyLjg0LTIwLTEyLjg1OS0yMCAwdjIxLjYxOWwtMTYuNDgzIDkuNTE2Yy0zLjA5NCAxLjc4Ni01IDUuMDg3LTUgOC42NnYyNC43OGMwIDMuNTczIDEuOTA2IDYuODc0IDUgOC42NmwyMS40NiAxMi4zOWMzLjA2NyAxLjc3MSA2LjkzMyAxLjc3MSAxMCAwbDIxLjQ2LTEyLjM5YzMuMDk0LTEuNzg2IDUtNS4wODcgNS04LjY2di0yNC43OGMuMDAxLTMuNTczLTEuOTA1LTYuODc0LTQuOTk5LTguNjZ6bS0xNSAyNy42NjctMTEuNDYgNi42MTctMTEuNDYtNi42MTd2LTEzLjIzM2wxMS40Ni02LjYxNyAxMS40NiA2LjYxN3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0NS41MzUgMzc0LjE4M2MxLjYzNSAzLjkyNCA1LjcxNiA2LjQ2NiA5Ljk2OCA2LjEzOCA0LjE2OS0uMzIyIDcuNzc4LTMuMjcyIDguODk3LTcuMzAzIDIuMzY0LTguNTEzLTcuMTkxLTE1Ljc1OS0xNC43NzMtMTEuMjM1LTQuMjE0IDIuNTE0LTUuOTQ1IDcuODgtNC4wOTIgMTIuNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",X_e="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im05IDE3YzQuNDExIDAgOC0zLjU4OSA4LTggMC0xLjI1Ni0uMjk5LTIuNDQxLS44MTgtMy41MDEgMS4xMDMtMS41NDggMi44OTgtMi40OTkgNC44MTgtMi40OTkgMi44NCAwIDUuMjc4IDIuMDY0IDUuNzk5IDQuODMxLS4xOS4xMDUtLjM3NS4yMTgtLjU1NC4zNDItMS4yMjQtLjc0Ny0yLjYzNi0xLjE3My00LjA3NC0xLjE3M2gtLjE3MXYyaC4xNzFjLjg5NiAwIDEuNzguMjIxIDIuNTguNjE1LS4wODMuMTA5LS4xNzEuMjExLS4yNDguMzI2bC0uMzM2LjUwNCAxLjY2NCAxLjEwOS4zMzYtLjUwNGMuODU3LTEuMjgzIDIuMjktMi4wNSAzLjgzMy0yLjA1IDEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMmgtN2MtMS4xMDMgMC0yLS44OTctMi0yaC0yYzAgMi4yMDYgMS43OTQgNCA0IDRoMjVjMi4yMDYgMCA0LTEuNzk0IDQtNHMtMS43OTQtNC00LTRjLS40NzMgMC0uOTM1LjA2LTEuMzg3LjE1Ny0xLjE1OS0zLjYyMy00LjU0Mi02LjE1Ny04LjQzLTYuMTU3LTMuNTQ5IDAtNi43NDYgMi4xMDctOC4xNDQgNS4zNjlsLS4yNzcuNjQ2Yy0uMzU2LjAxMy0uNzA2LjA1NS0xLjA1LjEyMy0uODItMy41NDItNC4wMjMtNi4xMzgtNy43MTItNi4xMzgtMi4zMTIgMC00LjQ4OCAxLjAzNC01Ljk3OCAyLjc1MS0xLjQ2Ny0xLjY4Mi0zLjYyLTIuNzUxLTYuMDIyLTIuNzUxLTQuNDExIDAtOCAzLjU4OS04IDhzMy41ODkgOCA4IDh6bTI5LjE4My0xNGMzLjA0NyAwIDUuNjc2IDIuMDE3IDYuNTQxIDQuODc3LS4xNjMuMDkzLS4zMjUuMTg4LS40NzkuMjk1LTEuMjI1LS43NDYtMi42MzYtMS4xNzItNC4wNzQtMS4xNzJoLS4xNzF2MmguMTcxYy44OTUgMCAxLjc4LjIyMSAyLjU4LjYxNS0uMDgzLjEwOS0uMTcxLjIxMS0uMjQ4LjMyNmwtLjMzNi41MDQgMS42NjQgMS4xMDkuMzM2LS41MDRjLjg1Ny0xLjI4MyAyLjI5LTIuMDUgMy44MzMtMi4wNSAxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDJoLTE0LjU1NmMuMzQ0LS41OTEuNTU2LTEuMjY4LjU1Ni0yIDAtMS41NzEtLjkxOC0yLjkxOS0yLjIzOC0zLjU3M2wuMTE2LS4yN2MxLjA4Mi0yLjUyNSAzLjU1Ny00LjE1NyA2LjMwNS00LjE1N3ptLTI5LjE4MyAwYzMuMzA5IDAgNiAyLjY5MSA2IDZzLTIuNjkxIDYtNiA2LTYtMi42OTEtNi02IDIuNjkxLTYgNi02eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMzd2LTQuNWw0LTN2LTIuNWgtMnYxLjVsLTIgMS41di01aC0ydjdsLTItMS41di0xLjVoLTJ2Mi41bDQgM3YyLjVoLTEwdi02LjVsNC0zdi0yLjVoLTJ2MS41bC0yIDEuNXYtNC41ODZsMS43MDctMS43MDctMS40MTQtMS40MTQtMi4yOTMgMi4yOTN2Ny40MTRsLTItMS41di0xLjVoLTJ2Mi41bDQgM3Y0LjVoLTE0di0xLjI3OWwuNDk2LS4xNjVjMy4yOTItMS4wOTggNS41MDQtNC4xNjYgNS41MDQtNy42MzYgMC0yLjE0OS0uODM3LTQuMTcxLTIuMzU3LTUuNjkxbC00LjY0My00LjY0My0zLjgyNSAzLjgyNWMtLjM5LS44MDItLjg5Ni0xLjU0Ni0xLjUzMi0yLjE4M2wtNC42NDMtNC42NDItNC42NDMgNC42NDNjLTEuNTIgMS41Mi0yLjM1NyAzLjU0Mi0yLjM1NyA1LjY5MSAwIDMuNDcgMi4yMTIgNi41MzggNS41MDMgNy42MzVsLjQ5Ny4xNjV2NC4yOGgtMTYuMjgxbC40OSAxLjk1OWMzLjUzOSAxNC4xNTUgMTYuMjAxIDI0LjA0MSAzMC43OTEgMjQuMDQxczI3LjI1Mi05Ljg4NiAzMC43OTEtMjQuMDQxbC40OS0xLjk1OXptLTI3LjM2NCA2LjI1OCAxLjE0NSAxLjcxN2MuMTQzLjIxNC4yMTkuNDY0LjIxOS43MjIgMCAuNzE5LS41ODQgMS4zMDMtMS4zMDMgMS4zMDNoLTE1LjM5NGMtLjcxOSAwLTEuMzAzLS41ODQtMS4zMDMtMS4zMDMgMC0uMjU4LjA3Ni0uNTA4LjIxOS0uNzIzbDEuMTQ2LTEuNzE4Yy40MTUtLjYyNC42MzUtMS4zNTEuNjM1LTIuMTAxIDAtLjc3LS4yNDYtMS41MjUtLjY4MS0yLjE1NWgxNS4zNjJjLS40MzUuNjMxLS42ODEgMS4zODUtLjY4MSAyLjE1NSAwIC43NS4yMiAxLjQ3Ny42MzYgMi4xMDN6bS0xLjYzNi0yMi44NDQgMy4yMjkgMy4yMjljMS4xNDIgMS4xNDIgMS43NzEgMi42NjIgMS43NzEgNC4yNzcgMCAyLjU1Ny0xLjYwNCA0LjgxNy00IDUuNjgxdi0xLjE4NmwyLjcwNy0yLjcwNy0xLjQxNC0xLjQxNC0xLjI5MyAxLjI5MnYtMi4xNzJsMS43MDctMS43MDctMS40MTQtMS40MTQtMi4yOTMgMi4yOTN2Ny4wMTRjLTIuMzk2LS44NjMtNC0zLjEyMi00LTUuNjggMC0xLjYxNS42MjktMy4xMzUgMS43NzEtNC4yNzd6bS0xNSA0LjUwNmMwLTEuNjE1LjYyOS0zLjEzNSAxLjc3MS00LjI3N2wzLjIyOS0zLjIyOSAzLjIyOSAzLjIyOWMuNjY2LjY2NiAxLjE1MyAxLjQ4MSAxLjQ0OSAyLjM3MS0xLjA4NCAxLjQtMS42NzggMy4xMDYtMS42NzggNC45MDYgMCAuNDY0LjA0Ni45MTguMTIyIDEuMzY0LS42MDkuNTgxLTEuMzI5IDEuMDM0LTIuMTIyIDEuMzE5di02LjNsMS44MzItMi43NDgtMS42NjQtMS4xMDktMS4zMjMgMS45ODUtMS4xMzgtMS4xMzgtMS40MTQgMS40MTQgMS43MDcgMS43MDd2Mi4xNzJsLTEuMjkzLTEuMjkzLTEuNDE0IDEuNDE0IDIuNzA3IDIuNzA3djEuMTg2Yy0yLjM5Ni0uODYzLTQtMy4xMjItNC01LjY4em02IDcuODAxLjQ5Ni0uMTY1Yy44MjUtLjI3NSAxLjU4OS0uNjk2IDIuMjgxLTEuMjE2LjkxNiAxLjk0OCAyLjU4NiAzLjUwMiA0LjcyNiA0LjIxNWwuNDk3LjE2NXYxLjI4aC04em0tNy40MTQgNi4yNzkuODkuODljLjMzMy4zMzMuNTI0Ljc5NS41MjQgMS4yNjUgMCAuMzU0LS4xMDQuNjk4LS4zLjk5M2wtMS4xNDUgMS43MTdjLS4zNjMuNTQ0LS41NTUgMS4xNzgtLjU1NSAxLjgzMiAwIDEuODIyIDEuNDgxIDMuMzAzIDMuMzAzIDMuMzAzaDE1LjM5NWMxLjgyMSAwIDMuMzAyLTEuNDgxIDMuMzAyLTMuMzAzIDAtLjY1NC0uMTkyLTEuMjg4LS41NTUtMS44MzJsLTEuMTQ1LTEuNzE2Yy0uMTk2LS4yOTUtLjMtLjYzOS0uMy0uOTk0IDAtLjQ3MS4xOTEtLjkzMy41MjQtMS4yNjZsLjg5LS44OWg2LjgzNmMtLjE2LjM4NS0uMjUuODA2LS4yNSAxLjI0NyAwIDEuNDkyIDEuMDExIDIuNzg4IDIuNDU5IDMuMTQ5bDQuMjIgMS4wNTVjLjc3OC4xOTYgMS4zMjEuODkxIDEuMzIxIDEuNjkzIDAgLjcxNy0uNDMgMS4zNTMtMS4wOTYgMS42MThsLTYuMjc1IDIuNTExYy0xLjU5Ny42MzktMi42MjkgMi4xNjMtMi42MjkgMy44ODIgMCAxLjQ5Ni44MDcgMi44ODggMi4xMDcgMy42M2wyLjcxNSAxLjU1MWMtMy4wMDQgMS4wNDktNi4yMTUgMS42MjEtOS41MzcgMS42NTNsLTUuMDg2LTMuMzkxYy0uMTI0LS4wODItLjE5OS0uMjIxLS4xOTktLjM3MSAwLS4yMTkuMTU3LS40MDQuMzc0LS40NGwzLjQzNS0uNTcyYzEuMjY5LS4yMTMgMi4xOTEtMS4zMDIgMi4xOTEtMi41OSAwLTEuNDQ3LTEuMTc3LTIuNjI0LTIuNjI0LTIuNjI0aC0yMC42MDVjLTIuOTg5LTMuMzY3LTUuMjU2LTcuNDMtNi40ODYtMTJ6bTE0LjUwMyAyMC4yNjIgMi4yMyAxLjQ4N2MtNi4zMjktLjc4NC0xMi4xMDUtMy41NDgtMTYuNjA3LTcuNzQ5aDE4LjY2NGMuMzQ0IDAgLjYyNC4yOC42MjQuNjI0IDAgLjMwNy0uMjE5LjU2NS0uNTIxLjYxNmwtMy40MzQuNTcyYy0xLjE4NS4xOTgtMi4wNDUgMS4yMTItMi4wNDUgMi40MTQgMCAuODE5LjQwNyAxLjU4MSAxLjA4OSAyLjAzNnptMTguMTAzLS44NzUtNC4wOTMtMi4zMzljLS42NzgtLjM4OC0xLjA5OS0xLjExMy0xLjA5OS0xLjg5NCAwLS44OTcuNTM5LTEuNjkyIDEuMzcyLTIuMDI1bDYuMjc1LTIuNTExYzEuNDI5LS41NzEgMi4zNTMtMS45MzUgMi4zNTMtMy40NzUgMC0xLjcyMS0xLjE2Ni0zLjIxNC0yLjgzNS0zLjYzMmwtNC4yMi0xLjA1NWMtLjU1Ny0uMTQtLjk0NS0uNjM3LS45NDUtMS4yMSAwLS42ODcuNTU5LTEuMjQ2IDEuMjQ2LTEuMjQ2aDE4LjQ2OGMtMi4zNzYgOC44MjgtOC41NjUgMTUuODE0LTE2LjUyMiAxOS4zODd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNyAxN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zOSAyMWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MyAxN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyAxOWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAyM2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAxN2gydjJoLTJ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",K_e="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiID4NCjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQoJPHBhdGggZD0iTTUxMS45NzYsNDE2LjA2M2MtMC4wMDUtMC4wNzUtMC4wMDQtMC4xNDktMC4wMTEtMC4yMjRjLTAuMDI3LTAuMjk3LTAuMDctMC41ODgtMC4xMzEtMC44NzMNCgkJYy0wLjAwNi0wLjAyOC0wLjAxNS0wLjA1Ni0wLjAyMi0wLjA4NGMtMC4wNTktMC4yNjItMC4xMzItMC41MTgtMC4yMTgtMC43NjhjLTAuMDIzLTAuMDY3LTAuMDQ4LTAuMTMyLTAuMDczLTAuMTk4DQoJCWMtMC4wODQtMC4yMjctMC4xNzktMC40NDgtMC4yODQtMC42NjNjLTAuMDE4LTAuMDM4LTAuMDMtMC4wNzctMC4wNDktMC4xMTVsLTQwLjExMi03OS4xMThWNzMuNzINCgkJYzAtOC4wMDYtNi41MTMtMTQuNTE5LTE0LjUxOS0xNC41MTlINTUuNDQxYy04LjAwNiwwLTE0LjUxOSw2LjUxMy0xNC41MTksMTQuNTE5djI2MC4yOThMMC44MTEsNDEzLjEzNw0KCQljLTAuMDE5LDAuMDM4LTAuMDMxLDAuMDc3LTAuMDQ5LDAuMTE1Yy0wLjEwNSwwLjIxNS0wLjE5OSwwLjQzNi0wLjI4NCwwLjY2MmMtMC4wMjUsMC4wNjYtMC4wNSwwLjEzMi0wLjA3MywwLjE5OQ0KCQljLTAuMDg1LDAuMjUxLTAuMTU5LDAuNTA4LTAuMjE4LDAuNzdjLTAuMDA2LDAuMDI3LTAuMDE1LDAuMDU0LTAuMDIxLDAuMDgxYy0wLjA2MSwwLjI4Ni0wLjEwNCwwLjU3Ny0wLjEzMSwwLjg3NA0KCQljLTAuMDA3LDAuMDc0LTAuMDA3LDAuMTQ5LTAuMDExLDAuMjIzQzAuMDE0LDQxNi4yMTcsMCw0MTYuMzcxLDAsNDE2LjUyOXYxOS4wMjZjMCw5LjUwOSw3LjczNSwxNy4yNDQsMTcuMjQ0LDE3LjI0NGg0NzcuNTEyDQoJCWM5LjUwOSwwLDE3LjI0NC03LjczNSwxNy4yNDQtMTcuMjQ0di0xOS4wMjZDNTEyLDQxNi4zNzEsNTExLjk4Niw0MTYuMjE3LDUxMS45NzYsNDE2LjA2M3ogTTU1LjkyMyw3NC4yMDNoNDAwLjE1NHYyNTQuMTA5DQoJCUg1NS45MjNWNzQuMjAzeiBNNTMuMDI5LDM0My4zMTFINDU4Ljk3bDMzLjMxOCw2NS43MTdoLTE2NC43OGwtOC4yNzEtMjkuOTg5Yy0xLjY4NC02LjEwNS03LjI4Mi0xMC4zNjktMTMuNjE1LTEwLjM2OWgtOTkuMjQ2DQoJCWMtNi4zMzMsMC0xMS45MzIsNC4yNjQtMTMuNjE1LDEwLjM2OGwtOC4yNzEsMjkuOTlIMTkuNzExTDUzLjAyOSwzNDMuMzExeiBNMzExLjk0OCw0MDkuMDI5SDIwMC4wNTJsNi45OTMtMjUuMzU4aDk3LjkxDQoJCUwzMTEuOTQ4LDQwOS4wMjl6IE00OTcsNDM1LjU1NGMwLDEuMjM3LTEuMDA3LDIuMjQ0LTIuMjQ0LDIuMjQ0SDE3LjI0NGMtMS4yMzcsMC0yLjI0NC0xLjAwNy0yLjI0NC0yLjI0NHYtMTEuNTI2aDQ4MlY0MzUuNTU0eiINCgkJLz4NCgk8cGF0aCBkPSJNNDMyLjU3NywyMTMuNzU2Yy00LjE0MywwLTcuNSwzLjM1Ny03LjUsNy41djc2LjA1NUg4Ni45MjN2LTc2LjA1NWMwLTQuMTQzLTMuMzU3LTcuNS03LjUtNy41DQoJCQljLTQuMTQzLDAtNy41LDMuMzU3LTcuNSw3LjV2NzkuMjk0YzAsNi40ODUsNS4yNzUsMTEuNzYxLDExLjc2MSwxMS43NjFoMzQ0LjYzM2M2LjQ4NSwwLDExLjc2MS01LjI3NSwxMS43NjEtMTEuNzYxdi03OS4yOTQNCgkJCUM0NDAuMDc3LDIxNy4xMTUsNDM2LjcyLDIxMy43NTYsNDMyLjU3NywyMTMuNzU2eiIvPg0KCTxwYXRoIGQ9Ik00MjguMzE2LDkwLjIwM0g4My42ODRjLTYuNDg1LDAtMTEuNzYxLDUuMjc1LTExLjc2MSwxMS43NjF2NzkuMjk0YzAsNC4xNDMsMy4zNTcsNy41LDcuNSw3LjVjNC4xNDMsMCw3LjUtMy4zNTcsNy41LTcuNQ0KCQkJdi03Ni4wNTVoMzM4LjE1NHY3Ni4wNTVjMCw0LjE0MywzLjM1Nyw3LjUsNy41LDcuNXM3LjUtMy4zNTcsNy41LTcuNXYtNzkuMjk0QzQ0MC4wNzcsOTUuNDc3LDQzNC44MDIsOTAuMjAzLDQyOC4zMTYsOTAuMjAzeiIvPg0KPC9nPg0KPC9zdmc+DQo=",q_e="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTY0LjM5OSAyMDUuODcyYzQuMDk5LjY2NCA4LjIwNi0xLjI3MyAxMC4yODQtNC45MWw2MC0xMDVjMS43NjktMy4wOTUgMS43NTYtNi44OTctLjAzMy05Ljk4cy01LjA4NS00Ljk4MS04LjY0OS00Ljk4MWgtMzYuNjgybC0xMy40ODYtNzIuODIxYy0uNzcyLTQuMTY5LTQuMDg5LTcuMzk4LTguMjc3LTguMDU4LTQuMTg1LS42Ni04LjMzNyAxLjM5NC0xMC4zNTMgNS4xMjNsLTYwIDExMWMtMS42NzUgMy4wOTktMS41OTcgNi44NTEuMjA4IDkuODc2IDEuODA0IDMuMDI1IDUuMDY2IDQuODc5IDguNTg5IDQuODc5aDM2LjgwMmwxMy4zOTMgNjYuOTYxYy44MTcgNC4wOSA0LjA4OCA3LjI0MiA4LjIwNCA3LjkxMXptLTEzLjM5OS05NC44NzFoLTI4LjIyOGwzOC41NTQtNzEuMzIzIDkuODQxIDUzLjE0NGMuODc4IDQuNzQgNS4wMTMgOC4xNzkgOS44MzMgOC4xNzloMjcuNzY5bC0zOC4yIDY2Ljg1LTkuNzYzLTQ4LjgxMWMtLjkzNS00LjY3NC01LjAzOS04LjAzOS05LjgwNi04LjAzOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwIDQ1OS4wMDFjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDN2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoMjZjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzgtMTAtMTAtMTBoLTU2di02OGMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHY2OGgtNDB2LTIyM2g0MHY2NWMwIDUuNTIzIDQuNDc4IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwdi03NWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwaC02MGMtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHYyMzNoLTQwdi0xNzNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTB2MTczaC00MHYtMTEzYzAtNS41MjMtNC40NzgtMTAtMTAtMTBoLTYwYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwdjExM2gtNzN2LTQ0OWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHYyNmgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDBoLTIzYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwczQuNDc4IDEwIDEwIDEwaDIzdjQwaC0yM2MtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGgyM3Y0MGgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDBoLTIzYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwczQuNDc4IDEwIDEwIDEwaDIzdjQwaC0yM2MtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGgyM3Y0MGgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDN6bTI1Ni0xNjNoNDB2MTYzaC00MHptLTEyMCA2MGg0MHYxMDNoLTQweiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDM2IDE0Ni4wMDFjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHYtNjBjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMzUuODU3bC0xMDAgMTAwaC01NS44NTdjLTIuNjUyIDAtNS4xOTUgMS4wNTQtNy4wNzEgMi45MjlsLTkwIDkwYy0zLjkwNSAzLjkwNS0zLjkwNSAxMC4yMzcgMCAxNC4xNDMgMy45MDcgMy45MDUgMTAuMjM2IDMuOTA0IDE0LjE0MyAwbDg3LjA3MS04Ny4wNzFoNTUuODU3YzIuNjUyIDAgNS4xOTUtMS4wNTQgNy4wNzEtMi45MjlsMTAyLjkyOS0xMDIuOTN2MzUuODU3YzAgNS41MjQgNC40NzggMTAuMDAxIDEwIDEwLjAwMXoiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iNDM2IiBjeT0iMzQ2LjAwMSIgcj0iMTAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",exe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cmVjdCB4PSIyMTYiIHk9Ijg4LjQ4OSIgd2lkdGg9IjgwIiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjIxNiIgeT0iNjIuNDg5IiB3aWR0aD0iODAiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwLDUyLjQ5NHY5LjI4NWMtMi4zNDctMC44MzItNC44NzItMS4yODUtNy41LTEuMjg1Yy0xMi40MDYsMC0yMi41LDEwLjA5My0yMi41LDIyLjVjMCwxMi40MDcsMTAuMDk0LDIyLjUsMjIuNSwyMi41DQoJCQljMi42MjgsMCw1LjE1My0wLjQ1Myw3LjUtMS4yODV2MzU1LjI5OGg3LjVjOC42OTksMCwxMy4zNTQtMi44MTksMTcuMDk1LTUuMDg1YzIuODk5LTEuNzU1LDQuODE0LTIuOTE1LDkuMzI1LTIuOTE1DQoJCQljNC41MTEsMCw2LjQyNiwxLjE2LDkuMzI1LDIuOTE1YzMuNzQsMi4yNjYsOC4zOTYsNS4wODUsMTcuMDk1LDUuMDg1YzguNjk4LDAsMTMuMzU0LTIuODE5LDE3LjA5NC01LjA4NQ0KCQkJYzIuODk3LTEuNzU1LDQuODEzLTIuOTE1LDkuMzIyLTIuOTE1YzQuNTA5LDAsNi40MjQsMS4xNiw5LjMyMSwyLjkxNWMzLjc0LDIuMjY2LDguMzk1LDUuMDg1LDE3LjA5Myw1LjA4NQ0KCQkJczEzLjM1NC0yLjgxOSwxNy4wOTQtNS4wODVjMi44OTctMS43NTUsNC44MTMtMi45MTUsOS4zMjEtMi45MTVjNC41MSwwLDYuNDI1LDEuMTYsOS4zMjIsMi45MTUNCgkJCWMzLjc0LDIuMjY2LDguMzk2LDUuMDg1LDE3LjA5Myw1LjA4NWw3LjUtMC4wMTN2LTQwN0gzMHogTTIyLjUsOTAuNDk0Yy00LjEzNiwwLTcuNS0zLjM2NC03LjUtNy41YzAtNC4xMzYsMy4zNjQtNy41LDcuNS03LjUNCgkJCXM3LjUsMy4zNjQsNy41LDcuNUMzMCw4Ny4xMywyNi42MzYsOTAuNDk0LDIyLjUsOTAuNDk0eiBNMTg4LjUsNDQyLjY2NGMtMC41ODUtMC4zMjUtMS4xNzktMC42ODUtMS44MjEtMS4wNzQNCgkJCWMtMy4zMzktMi4wMjItNy40MDctNC40ODYtMTQuNDI5LTQuOTkxVjIyNi41NTVoLTE1djIxMi40MzFjLTEuODI0LDAuODI3LTMuMzU1LDEuNzU1LTQuNzU4LDIuNjA0DQoJCQljLTIuODk3LDEuNzU1LTQuODEzLDIuOTE1LTkuMzIyLDIuOTE1Yy0xLjY0OCwwLTIuOTUtMC4xNTUtNC4wNzktMC40MzhoMy4xNTlWMTQxLjk5NGgtMTV2Mjk2LjIzOA0KCQkJYy0yLjczNC0xLjAwNS02LjA5Ny0xLjcyNi0xMC40OTQtMS43MjZjLTEuNjM4LDAtMy4xMzMsMC4xLTQuNTA2LDAuMjc4di0yMTYuNzloLTE1djIyMi45ODhjLTEuODQ5LDAuOTUxLTMuNzM4LDEuNTI1LTYuOTEsMS41MjUNCgkJCWMtMy44NDMsMC01LjgwMi0wLjg0Mi04LjA5LTIuMTc2VjE0MS45OTRoLTE1djI5NC42NjFjLTEuMDQxLTAuMDk2LTIuMTQ4LTAuMTQ4LTMuMzMtMC4xNDhjLTguNjk5LDAtMTMuMzU0LDIuODE5LTE3LjA5NSw1LjA4NQ0KCQkJYy0wLjY0NCwwLjM5LTEuMjM5LDAuNzUtMS44MjUsMS4wNzVWNjcuNDk0aDIyLjI1djQxaDE1di00MWg0NXY0MWgxNXYtNDFoNDYuMjVWNDQyLjY2NHoiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSIxMzYuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iNjYiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSIxMTEuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSI4Ni45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSI5Ny4yNSIgeT0iMTMwLjk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjY2Ii8+DQogICAgICAgIDxyZWN0IHg9Ijk3LjI1IiB5PSI4MC45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSI5Ny4yNSIgeT0iMTA1Ljk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iMTEzLjk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iMTM4Ljk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjY2Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iODguOTk0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzc1Ljc1IiB5PSIxNTUuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzc1Ljc1IiB5PSI4MC45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSIzNzUuNzUiIHk9IjEwNS45ODkiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSIzNzUuNzUiIHk9IjEzMC45ODkiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cGF0aCBkPSJNNDg5LjUsNjAuNDk0Yy0yLjYyOCwwLTUuMTUzLDAuNDUzLTcuNSwxLjI4NXYtOS4yODVIMzA4LjV2NDA3LjAxM2g3LjVjOC42OTksMCwxMy4zNTQtMi44MTksMTcuMDk1LTUuMDg1DQoJCQljMi44OTktMS43NTUsNC44MTQtMi45MTUsOS4zMjUtMi45MTVjNC41MTEsMCw2LjQyNiwxLjE2LDkuMzI1LDIuOTE1YzMuNzQsMi4yNjYsOC4zOTYsNS4wODUsMTcuMDk1LDUuMDg1DQoJCQljOC42OTgsMCwxMy4zNTQtMi44MTksMTcuMDk0LTUuMDg1YzIuODk3LTEuNzU1LDQuODEzLTIuOTE1LDkuMzIyLTIuOTE1YzQuNTA5LDAsNi40MjQsMS4xNiw5LjMyMSwyLjkxNQ0KCQkJYzMuNzQsMi4yNjYsOC4zOTUsNS4wODUsMTcuMDkzLDUuMDg1czEzLjM1NC0yLjgxOSwxNy4wOTQtNS4wODVjMi44OTctMS43NTUsNC44MTMtMi45MTUsOS4zMjEtMi45MTUNCgkJCWM0LjUxLDAsNi40MjUsMS4xNiw5LjMyMiwyLjkxNWMzLjc0LDIuMjY2LDguMzk2LDUuMDg1LDE3LjA5Myw1LjA4NWw3LjUtMC4wMTNWMTA0LjIwOGMyLjM0NywwLjgzMiw0Ljg3MiwxLjI4NSw3LjUsMS4yODUNCgkJCWMxMi40MDYsMCwyMi41LTEwLjA5MywyMi41LTIyLjVDNTEyLDcwLjU4NSw1MDEuOTA2LDYwLjQ5NCw0ODkuNSw2MC40OTR6IE00NjcsNDQyLjY2NGMtMC41ODUtMC4zMjUtMS4xNzktMC42ODUtMS44MjEtMS4wNzQNCgkJCWMtMy4zMzktMi4wMjItNy40MDctNC40ODYtMTQuNDI5LTQuOTkxVjIyNi41NTVoLTE1djIxMi40MzFjLTEuODI0LDAuODI3LTMuMzU1LDEuNzU1LTQuNzU4LDIuNjA0DQoJCQljLTIuODk3LDEuNzU1LTQuODEzLDIuOTE1LTkuMzIyLDIuOTE1Yy0xLjY0OCwwLTIuOTUtMC4xNTUtNC4wNzktMC40MzhoMy4xNTlWMTQxLjk5NGgtMTV2Mjk2LjIzOA0KCQkJYy0yLjczNC0xLjAwNS02LjA5Ny0xLjcyNi0xMC40OTQtMS43MjZjLTEuNjM4LDAtMy4xMzMsMC4xLTQuNTA2LDAuMjc4di0yNTAuNzloLTE1djI1Ni45ODhjLTEuODQ5LDAuOTUxLTMuNzM4LDEuNTI1LTYuOTEsMS41MjUNCgkJCWMtMy44NDMsMC01LjgwMi0wLjg0Mi04LjA5LTIuMTc2VjE0MS45OTRoLTE1djI5NC42NjFjLTEuMDQxLTAuMDk2LTIuMTQ4LTAuMTQ4LTMuMzMtMC4xNDhjLTguNjk5LDAtMTMuMzU0LDIuODE5LTE3LjA5NSw1LjA4NQ0KCQkJYy0wLjY0NCwwLjM5LTEuMjM5LDAuNzUtMS44MjUsMS4wNzVWNjcuNDk0aDIyLjI1djQxaDE1di00MWg0NXY0MWgxNXYtNDFINDY3VjQ0Mi42NjR6IE00ODkuNSw5MC40OTRjLTQuMTM2LDAtNy41LTMuMzY0LTcuNS03LjUNCgkJCWMwLTQuMTM2LDMuMzY0LTcuNSw3LjUtNy41czcuNSwzLjM2NCw3LjUsNy41QzQ5Nyw4Ny4xMyw0OTMuNjM2LDkwLjQ5NCw0ODkuNSw5MC40OTR6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",txe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00MiAxMmMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMi00YzAgMS4xMDMtLjg5NyAyLTIgMnMtMi0uODk3LTItMmMwLS4xNzguMDMxLS4zNDcuMDc1LS41MTFsMS4yMTggMS4yMTggMS40MTQtMS40MTQtMS4yMTgtMS4yMThjLjE2NC0uMDQ0LjMzMy0uMDc1LjUxMS0uMDc1IDEuMTAzIDAgMiAuODk3IDIgMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyIDRjLTIuMjA2IDAtNCAxLjc5NC00IDRzMS43OTQgNCA0IDQgNC0xLjc5NCA0LTQtMS43OTQtNC00LTR6bTAgNmMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTJjLjE3OCAwIC4zNDcuMDMxLjUxMS4wNzVsLTEuMjE4IDEuMjE4IDEuNDE0IDEuNDE0IDEuMjE4LTEuMjE4Yy4wNDQuMTY0LjA3NS4zMzMuMDc1LjUxMSAwIDEuMTAzLS44OTcgMi0yIDJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAxMmgyYzEuNjU0IDAgMy0xLjM0NiAzLTNzLTEuMzQ2LTMtMy0zaC0yYy0xLjY1NCAwLTMgMS4zNDYtMyAzczEuMzQ2IDMgMyAzem0wLTRoMmMuNTUxIDAgMSAuNDQ5IDEgMXMtLjQ0OSAxLTEgMWgtMmMtLjU1MSAwLTEtLjQ0OS0xLTFzLjQ0OS0xIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzIDZoLTJjLTEuNjU0IDAtMyAxLjM0Ni0zIDNzMS4zNDYgMyAzIDNoMmMxLjY1NCAwIDMtMS4zNDYgMy0zcy0xLjM0Ni0zLTMtM3ptMCA0aC0yYy0uNTUxIDAtMS0uNDQ5LTEtMXMuNDQ5LTEgMS0xaDJjLjU1MSAwIDEgLjQ0OSAxIDFzLS40NDkgMS0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02Mi45OTcgNThjMC0uMTYzLS4wMzctLjMyNi0uMTE3LS40NzRsLTIuODgtNS4zNDl2LTM4LjE3Ny0xMGMwLTEuNjU0LTEuMzQ2LTMtMy0zaC01MGMtMS42NTQgMC0zIDEuMzQ2LTMgM3YxMCAzOC4xNzdsLTIuODggNS4zNDljLS4wOC4xNDgtLjExNy4zMTEtLjExNy40NzRoLS4wMDN2MmMwIDEuNjU0IDEuMzQ2IDMgMyAzaDU2YzEuNjU0IDAgMy0xLjM0NiAzLTN2LTJ6bS02Ljk5Ny0xMy4yNTF2LTI5Ljc0OWgydjMzLjQ2M3ptLTQxLjkzMS0yLjc0OWMuMTg5IDEuNTAyLjc5MiAyLjg3NSAxLjY5NSA0aC0yLjc2NHYtNHptMzYuOTMxIDB2NGgtMi43NjVjLjkwNC0xLjEyNSAxLjUwNy0yLjQ5OCAxLjY5NS00em0tNS42OSA0aC0uMzF2LTIuMzgyYy40MDItLjQ2LjctMS4wMDkuODU4LTEuNjE4aDIuMDUyYy0uMjgyIDEuNjY2LTEuMjQ2IDMuMTAxLTIuNiA0em0tOC4zMS0xLjY5di0yLjMxaDEuMTQyYy40NDcgMS43MjEgMiAzIDMuODU4IDMgLjM0NyAwIC42NzgtLjA1OCAxLS4xNDJ2MS4xNDJoLTQuMzFjLS42Ny0uNDQ1LTEuMjQ1LTEuMDItMS42OS0xLjY5em0zLjI3OC00LjMxYy4zNDctLjU5NS45ODUtMSAxLjcyMi0xczEuMzc1LjQwNSAxLjcyMiAxem0yLjcyMiAydi43MjJjLS4yOTUuMTcyLS42MzQuMjc4LTEgLjI3OC0uNzM3IDAtMS4zNzUtLjQwNS0xLjcyMi0xem0yLjg1OC0yYy0uNDQ3LTEuNzIxLTItMy0zLjg1OC0zcy0zLjQxMSAxLjI3OS0zLjg1OCAzaC0yLjA1MmMuNDc4LTIuODMzIDIuOTQyLTUgNS45MS01czUuNDMxIDIuMTY3IDUuOTEgNXptLTExLjcyNS03LjA4NGMuNTEzLTIuNzkyIDIuOTU5LTQuOTE2IDUuODk3LTQuOTE2IDEuNjEgMCAzLjA2NS42MzEgNC4xNDMgMS42Ni0uOTczLS40MjMtMi4wNDYtLjY2LTMuMTczLS42Ni0yLjkxOCAwLTUuNDY5IDEuNTc2LTYuODY3IDMuOTE2em0uODY3IDQuMDg0YzAtMy4zMDkgMi42OTEtNiA2LTYgMi4zMzUgMCA0LjM1NyAxLjM0MyA1LjM0OCAzLjI5NC0xLjI1My0uODE1LTIuNzQ1LTEuMjk0LTQuMzQ4LTEuMjk0LTMuMDA0IDAtNS42MjQgMS42NjctNi45OTIgNC4xMjItLjAwMS0uMDQxLS4wMDgtLjA4MS0uMDA4LS4xMjJ6bS0uOTMxIDVjLjEyOSAxLjAyNy40NDkgMS45OTYuOTMxIDIuODY0djEuMTM2aC02di0xLjEzNmMuNDgyLS44NjkuODAyLTEuODM3LjkzMS0yLjg2NHptLTEzLjA2OSA0di0xLjE0MmMuMzIyLjA4NC42NTMuMTQyIDEgLjE0MiAxLjg1OCAwIDMuNDExLTEuMjc5IDMuODU4LTNoMS4xNDJ2Mi4zMWMtLjQ0NS42Ny0xLjAyIDEuMjQ1LTEuNjkgMS42OXptMC00aDIuNzIyYy0uMzQ3LjU5NS0uOTg1IDEtMS43MjIgMS0uMzY2IDAtLjcwNS0uMTA2LTEtLjI3OHptLS43MjItMmMuMzQ3LS41OTUuOTg1LTEgMS43MjItMXMxLjM3NS40MDUgMS43MjIgMXptOC43MTQtMi44NzhjLTEuMzY4LTIuNDU1LTMuOTg4LTQuMTIyLTYuOTkyLTQuMTIyLTEuNjAzIDAtMy4wOTUuNDc5LTQuMzQ4IDEuMjk0Ljk5MS0xLjk1MSAzLjAxMy0zLjI5NCA1LjM0OC0zLjI5NCAzLjMwOSAwIDYgMi42OTEgNiA2IDAgLjA0MS0uMDA3LjA4MS0uMDA4LjEyMnptLTUuOTkyLTguMTIyYy0xLjEwNiAwLTIuMTYuMjI2LTMuMTE5LjYzNCAxLjA3Ni0xLjAxNSAyLjUyMi0xLjYzNCA0LjExOS0xLjYzNCAyLjk2MSAwIDUuNDIyIDIuMTU4IDUuOTA3IDQuOTgzLTEuMzg4LTIuMzc4LTMuOTYxLTMuOTgzLTYuOTA3LTMuOTgzem0tMSA2YzIuOTY3IDAgNS40MzEgMi4xNjcgNS45MSA1aC0yLjA1MmMtLjQ0Ny0xLjcyMS0yLTMtMy44NTgtM3MtMy40MTEgMS4yNzktMy44NTggM2gtMi4wNTJjLjQ3OS0yLjgzMyAyLjk0My01IDUuOTEtNXptLTMuODU4IDdjLjE1OC42MDkuNDU2IDEuMTU3Ljg1OCAxLjYxOHYyLjM4MmgtLjMxYy0xLjM1NC0uODk5LTIuMzE5LTIuMzM0LTIuNi00em0tNS4xNDIgNmg1LjEzNmMuMjc4LjE1NC41NjcuMjkuODY0LjQxMXYzLjU4OWgtNnptOCAuOTMxYy4zMjguMDQxLjY2MS4wNjkgMSAuMDY5IDEuNDAxIDAgMi43MTgtLjM2NCAzLjg2NC0xaDEuMTM2djRoLTZ6bTgtLjkzMWg2djRoLTZ6bTggMGgxLjEzNmMxLjE0Ny42MzYgMi40NjMgMSAzLjg2NCAxIC4zMzkgMCAuNjcyLS4wMjggMS0uMDY5djMuMDY5aC02em04IC40MTFjLjI5Ny0uMTIxLjU4Ni0uMjU3Ljg2NC0uNDExaDUuMTM2djRoLTZ6bTcuOTY4LTcuNTcyLjAxOS0uMDAzLTIuNzc0LTE2LjY0M2MtLjIxMi0xLjI3MS0xLjMwMS0yLjE5My0yLjU4OS0yLjE5My0xLjQ0NyAwLTIuNjI0IDEuMTc3LTIuNjI0IDIuNjI0djEuMzc2aDJ2LTEuMzc2YzAtLjM0NC4yOC0uNjI0LjYyNC0uNjI0LjMwNyAwIC41NjUuMjE5LjYxNi41MjFsMi41OCAxNS40NzloLS44ODljLS4xMjktMS4wMy0uNDUxLTItLjkzNC0yLjg3IDAtLjA0NC4wMDMtLjA4Ni4wMDMtLjEzIDAtMS40Mi0uMzc2LTIuNzUxLTEuMDI3LTMuOTA4LS40NTctNC4wNTQtMy44NDEtNy4wOTItNy45NDMtNy4wOTItNC40MTEgMC04IDMuNTg5LTggOCAwIDEuMzczLjM2NCAyLjcxMyAxLjAzMSAzLjkwNC4wODIuNzIxLjI2MSAxLjQyNS41MzIgMi4wOTZoLTMuMTg3Yy4yNjMtLjY1LjQ0Mi0xLjMzLjUyNy0yLjAyOC42OTItMS4yMDggMS4wNjctMi41NzQgMS4wNjctMy45NzIgMC00LjQxMS0zLjU4OS04LTgtOC00LjA4IDAtNy40NDggMy4wMDYtNy45MzQgNy4wMjctLjY3NCAxLjE3Mi0xLjA2NiAyLjUyNi0xLjA2NiAzLjk3MyAwIC4wNDQuMDAzLjA4Ni4wMDQuMTMtLjQ4NC44Ny0uODA1IDEuODQtLjkzNSAyLjg3aC0uODg5bDIuNTgtMTUuNDc5Yy4wNTEtLjMwMi4zMDktLjUyMS42MTYtLjUyMS4zNDQgMCAuNjI0LjI4LjYyNC42MjR2MS4zNzZoMnYtMS4zNzZjMC0xLjQ0Ny0xLjE3Ny0yLjYyNC0yLjYyNC0yLjYyNC0xLjI4OCAwLTIuMzc3LjkyMi0yLjU4OCAyLjE5MmwtMi43NzQgMTYuNjQ0LjAxOS4wMDNjLS4wMS4wNTQtLjAzMy4xMDQtLjAzMy4xNjF2M2gtMXYtMjNoNDR2MjNoLTF2LTNjMC0uMDU3LS4wMjMtLjEwNy0uMDMyLS4xNjF6bTEuMDMyLTI1LjgzOXY0aC00NHYtNHptLTIwLTJoLTR2LTRjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptLTI4LTljMC0uNTUxLjQ0OS0xIDEtMWg1MGMuNTUxIDAgMSAuNDQ5IDEgMXY5aC0yMnYtNGMwLTIuMjA2LTEuNzk0LTQtNC00cy00IDEuNzk0LTQgNHY0aC0yMnptMCAxMWgydjI5Ljc0OWwtMiAzLjcxNHptMy41OTcgMzFoMS40MDN2N2MwIC41NTMuNDQ4IDEgMSAxaDQwYy41NTIgMCAxLS40NDcgMS0xdi03aDEuNDAzbDUuOTIzIDExaC01Ni42NTJ6bTUwLjQwMyAxNWgtNTZjLS41NTEgMC0xLS40NDgtMS0xdi0xaDU4djFjMCAuNTUyLS40NDkgMS0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMiAxNmg0djJoLTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCAxNmg0djJoLTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMSA5aDJ2MmgtMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",sxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTExMy4yMDYgMTA2LjI2NWgtMTMuNjIzdi04Ni4yOGExLjc0OSAxLjc0OSAwIDAgMCAtMS41NTQtMS43MzhsLTQ2LTUuMTkyYTEuNzUgMS43NSAwIDAgMCAtMS45NDYgMS43Mzl2My40NDFoLTE5LjkxNmExLjc1IDEuNzUgMCAwIDAgLTEuNzUgMS43NXY4Ni4yOGgtMTMuNjIzYTEuNzUgMS43NSAwIDEgMCAwIDMuNWgzNS4yODl2My40NDFhMS43NSAxLjc1IDAgMCAwIDEuNzUgMS43NSAxLjYxIDEuNjEgMCAwIDAgLjItLjAxMWw0NS45LTUuMThoMTUuMjc2YTEuNzUgMS43NSAwIDAgMCAwLTMuNXptLTgxLjI4OS04NC41M2gxOC4xNjZ2NC41aC0xMS45MTdhMS43NSAxLjc1IDAgMCAwIC0xLjc1IDEuNzV2NzguMjhoLTQuNXptOCA4NC41M3YtNzYuNTNoMTAuMTY2djc2LjUzem0xMy42NjYtODkuNTEzIDQyLjUgNC44djg0LjlsLTQyLjUgNC44eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjEuMTI1IDU4Ljc5MmE1LjIwOCA1LjIwOCAwIDEgMCA1LjIwOCA1LjIwOCA1LjIxNCA1LjIxNCAwIDAgMCAtNS4yMDgtNS4yMDh6bTAgNi45MTZhMS43MDggMS43MDggMCAxIDEgMS43MDgtMS43MDggMS43MSAxLjcxIDAgMCAxIC0xLjcwOCAxLjcwOHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",ixe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDAxLjA2NywwSDExMC45MzNjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y0OTQuOTMzYzAsNC43MTksMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjkwLjEzMw0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1Y4LjUzM0M0MDkuNiwzLjgxNCw0MDUuNzc3LDAsNDAxLjA2NywweiBNMzkyLjUzMyw0OTQuOTMzSDExOS40NjdWMTcuMDY3aDI3My4wNjdWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Ni45MzMsMzQuMTMzSDE0NS4wNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y0NjAuOGMwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzaDIyMS44NjcNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzN2LTQ2MC44QzM3NS40NjcsMzcuOTQ4LDM3MS42NDQsMzQuMTMzLDM2Ni45MzMsMzQuMTMzeiBNMzU4LjQsNDk0LjkzM0gxNTMuNlY1MS4yaDIwNC44VjQ5NC45MzN6DQoJCQkiLz4NCiAgICAgICAgPHBhdGggZD0iTTI1Niw2OC4yNjdjLTQ3LjA1MywwLTg1LjMzMywzOC4yODEtODUuMzMzLDg1LjMzM3Y4LjUzM2MwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzaDE1My42DQoJCQljNC43MSwwLDguNTMzLTMuODE0LDguNTMzLTguNTMzVjE1My42QzM0MS4zMzMsMTA2LjU0NywzMDMuMDUzLDY4LjI2NywyNTYsNjguMjY3eiBNMTg3LjczMywxNTMuNg0KCQkJYzAtMzcuNjQxLDMwLjYyNi02OC4yNjcsNjguMjY3LTY4LjI2N2MzNy42NDEsMCw2OC4yNjcsMzAuNjI2LDY4LjI2Nyw2OC4yNjdIMTg3LjczM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzOC45MzMsMTg3LjczM0gxNzkuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzMNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMTk2LjI2N0MyNDcuNDY3LDE5MS41NDgsMjQzLjY0NCwxODcuNzMzLDIzOC45MzMsMTg3LjczM3ogTTIzMC40LDMwNy4yaC00Mi42NjdWMjA0LjhIMjMwLjQNCgkJCVYzMDcuMnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMi44LDE4Ny43MzNoLTU5LjczM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YxOTYuMjY3QzM0MS4zMzMsMTkxLjU0OCwzMzcuNTEsMTg3LjczMywzMzIuOCwxODcuNzMzeiBNMzI0LjI2NywzMDcuMkgyODEuNlYyMDQuOGg0Mi42NjdWMzA3LjINCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzOC45MzMsMzQxLjMzM0gxNzkuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzMNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMzQ5Ljg2N0MyNDcuNDY3LDM0NS4xNDgsMjQzLjY0NCwzNDEuMzMzLDIzOC45MzMsMzQxLjMzM3ogTTIzMC40LDQ2MC44aC00Mi42NjdWMzU4LjRIMjMwLjQNCgkJCVY0NjAuOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMi44LDM0MS4zMzNoLTU5LjczM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YzNDkuODY3QzM0MS4zMzMsMzQ1LjE0OCwzMzcuNTEsMzQxLjMzMywzMzIuOCwzNDEuMzMzeiBNMzI0LjI2Nyw0NjAuOEgyODEuNlYzNTguNGg0Mi42NjdWNDYwLjgNCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI1Niw2OC4yNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y4NS4zMzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1Y3Ni44DQoJCQlDMjY0LjUzMyw3Mi4wODEsMjYwLjcxLDY4LjI2NywyNTYsNjguMjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzIwLjQzNSw5Ny42OThjLTMuMzI4LTMuMzM2LTguNzMtMy4zMzYtMTIuMDY2LDBMMjQ5Ljk2NywxNTYuMWMtMy4zMzcsMy4zMzctMy4zMzcsOC43MywwLDEyLjA2Ng0KCQkJYzEuNjY0LDEuNjY0LDMuODQ5LDIuNSw2LjAzMywyLjVjMi4xODUsMCw0LjM2OS0wLjgzNiw2LjAzMy0yLjVsNTguNDAyLTU4LjQwMkMzMjMuNzcyLDEwNi40MjgsMzIzLjc3MiwxMDEuMDM1LDMyMC40MzUsOTcuNjk4eiINCiAgICAgICAgLz4NCiAgICAgICAgPHBhdGggZD0iTTI2Mi4wMzMsMTU2LjFMMjAzLjYzMSw5Ny42OWMtMy4zMjgtMy4zMzctOC43My0zLjMzNy0xMi4wNjYsMGMtMy4zMzcsMy4zMzYtMy4zMzcsOC43MywwLDEyLjA2Nmw1OC40MDIsNTguNDExDQoJCQljMS42NjQsMS42NjQsMy44NDksMi41LDYuMDMzLDIuNWMyLjE4NSwwLDQuMzY5LTAuODM2LDYuMDMzLTIuNUMyNjUuMzcsMTY0LjgzLDI2NS4zNywxNTkuNDM3LDI2Mi4wMzMsMTU2LjF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01OS43MzMsNDk0LjkzM2gtNTEuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzQzAsNTA4LjE4NiwzLjgyMyw1MTIsOC41MzMsNTEyaDUxLjINCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNDNjguMjY3LDQ5OC43NDgsNjQuNDQ0LDQ5NC45MzMsNTkuNzMzLDQ5NC45MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDMuNDY3LDQ5NC45MzNoLTEwMi40Yy00LjcxLDAtOC41MzMsMy44MTQtOC41MzMsOC41MzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gxMDIuNA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM0M1MTIsNDk4Ljc0OCw1MDguMTc3LDQ5NC45MzMsNTAzLjQ2Nyw0OTQuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",rxe="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMjU2IDE2MGE5NiA5NiAwIDEgMCA5NiA5NiA5Ni4xMDggOTYuMTA4IDAgMCAwIC05Ni05NnptMCAxNzZhODAgODAgMCAxIDEgODAtODAgODAuMDkxIDgwLjA5MSAwIDAgMSAtODAgODB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTI4YTEyOCAxMjggMCAxIDAgMTI4IDEyOCAxMjguMTQ1IDEyOC4xNDUgMCAwIDAgLTEyOC0xMjh6bTAgMjQwYTExMiAxMTIgMCAxIDEgMTEyLTExMiAxMTIuMTI3IDExMi4xMjcgMCAwIDEgLTExMiAxMTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzIgNDg4di00NjRhOCA4IDAgMCAwIC04LThoLTMzNmE4IDggMCAwIDAgLTggOHY0NjRhOCA4IDAgMCAwIDggOGgzMzZhOCA4IDAgMCAwIDgtOHptLTMzNi0zNzZoMzIwdjMwNGgtMzIwem05Ni04MGgxNDR2NDBhOCA4IDAgMCAwIDggOGg3MnYxNmgtMjI0em0yMjQgMzJoLTY0di0zMmg2NHptLTI0MC0zMnY2NGgtODB2LTY0em0tODAgNDQ4di00OGgzMjB2NDh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDggNDBhMjQgMjQgMCAxIDAgMjQgMjQgMjQuMDI3IDI0LjAyNyAwIDAgMCAtMjQtMjR6bTAgMzJhOCA4IDAgMSAxIDgtOCA4LjAwOSA4LjAwOSAwIDAgMSAtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTEyIDU2aDQ4djE2aC00OHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI4OCA0MGgzMnYxNmgtMzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yODggNzJoMzJ2MTZoLTMyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjcyIDIwMGE4IDggMCAwIDAgLTE2IDBjMCA2LjM3My0yLjQxNyA5LjE5MS02LjA3NCAxMy40NTgtNC40MjYgNS4xNTktOS45MjYgMTEuNTgtOS45MjYgMjMuODcyczUuNSAxOC43MTQgOS45MjYgMjMuODczYzMuNjU3IDQuMjY4IDYuMDc0IDcuMDg3IDYuMDc0IDEzLjQ2MnMtMi40MTcgOS4xOTMtNi4wNzQgMTMuNDYxYy00LjQyNiA1LjE1OS05LjkyNiAxMS41ODEtOS45MjYgMjMuODc0YTggOCAwIDAgMCAxNiAwYzAtNi4zNzUgMi40MTctOS4xOTQgNi4wNzQtMTMuNDYyIDQuNDIzLTUuMTU5IDkuOTI2LTExLjU4IDkuOTI2LTIzLjg3M3MtNS41LTE4LjcxNS05LjkyNi0yMy44NzRjLTMuNjU3LTQuMjY4LTYuMDc0LTcuMDkxLTYuMDc0LTEzLjQ2MXMyLjQxNy05LjE5MSA2LjA3NC0xMy40NThjNC40MjYtNS4xNTkgOS45MjYtMTEuNTggOS45MjYtMjMuODcyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjk2IDIzNy4zM2MwLTYuMzczIDIuNDE3LTkuMTkyIDYuMDc1LTEzLjQ2LjgxMi0uOTQ3IDEuNjIzLTEuOSAyLjQwNy0yLjg3OGE4IDggMCAwIDAgLTEyLjUtOS45ODRjLS42NjguODM2LTEuMzYxIDEuNjQxLTIuMDUzIDIuNDQ5LTQuNDI5IDUuMTU5LTkuOTI5IDExLjU4MS05LjkyOSAyMy44NzNzNS41IDE4LjcxNCA5LjkyNiAyMy44NzNjMy42NTcgNC4yNjggNi4wNzQgNy4wODcgNi4wNzQgMTMuNDYycy0yLjQxNyA5LjE5NC02LjA3NSAxMy40NjJjLS44MTMuOTQ5LTEuNjI1IDEuOS0yLjQwOSAyLjg4MWE4IDggMCAwIDAgMTIuNSA5Ljk4NGMuNjY4LS44MzcgMS4zNjItMS42NDQgMi4wNTQtMi40NTIgNC40My01LjE2IDkuOTMtMTEuNTgyIDkuOTMtMjMuODc1cy01LjUtMTguNzE1LTkuOTI2LTIzLjg3NGMtMy42NTctNC4yNjgtNi4wNzQtNy4wOTEtNi4wNzQtMTMuNDYxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjE2IDIzNy4zM2MwLTYuMzczIDIuNDE3LTkuMTkyIDYuMDc1LTEzLjQ2LjgxMi0uOTQ3IDEuNjIzLTEuOSAyLjQwNy0yLjg3OGE4IDggMCAwIDAgLTEyLjUtOS45ODRjLS42NjguODM2LTEuMzYxIDEuNjQxLTIuMDUzIDIuNDQ5LTQuNDI5IDUuMTU5LTkuOTI5IDExLjU4MS05LjkyOSAyMy44NzNzNS41IDE4LjcxNCA5LjkyNiAyMy44NzNjMy42NTcgNC4yNjggNi4wNzQgNy4wODcgNi4wNzQgMTMuNDYycy0yLjQxNyA5LjE5NC02LjA3NSAxMy40NjJjLS44MTMuOTQ5LTEuNjI1IDEuOS0yLjQwOSAyLjg4MWE4IDggMCAwIDAgMTIuNSA5Ljk4NGMuNjY4LS44MzcgMS4zNjItMS42NDQgMi4wNTQtMi40NTIgNC40My01LjE2IDkuOTMtMTEuNTgyIDkuOTMtMjMuODc1cy01LjUtMTguNzE1LTkuOTI2LTIzLjg3NGMtMy42NTctNC4yNjgtNi4wNzQtNy4wOTEtNi4wNzQtMTMuNDYxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",oxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ3Ni4wNjUgNDc2LjA2NSI+DQo8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KCTxwYXRoIGQ9Ik00MzIuNTU4LDE3Mi4wMkM0MTkuMzAzLDY0LjU4NywzMjEuNDY2LTExLjc2LDIxNC4wMzMsMS40OTVTMzAuMjUzLDExMi41ODcsNDMuNTA4LDIyMC4wMg0KCQljMTEuMDA4LDg5LjIyMiw4MS4zMDMsMTU5LjUxNywxNzAuNTI1LDE3MC41MjV2MzcuNTJoLTU2Yy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjR2MjRoMjA4di0yNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTU2DQoJCXYtMzcuNTJDMzY5LjQ2NiwzNzcuMjksNDQ1LjgxMywyNzkuNDUzLDQzMi41NTgsMTcyLjAyeiBNMzE4LjAzMyw0NDQuMDY1YzQuNDE4LDAsOCwzLjU4Miw4LDh2OGgtMTc2di04YzAtNC40MTgsMy41ODItOCw4LTgNCgkJSDMxOC4wMzN6IE0yMzAuMDMzLDQyOC4wNjV2LTMyaDE2djMySDIzMC4wMzN6IE0yMzguMDMzLDM3Ni4wNjVjLTk5LjQxMSwwLTE4MC04MC41ODktMTgwLTE4MA0KCQljMC4xMTUtOTkuMzY0LDgwLjYzNi0xNzkuODg1LDE4MC0xODBjOTkuNDExLDAsMTgwLDgwLjU4OSwxODAsMTgwUzMzNy40NDQsMzc2LjA2NSwyMzguMDMzLDM3Ni4wNjV6Ii8+DQoJPHBhdGggZD0iTTQwNi4wMzMsMjEyLjA2NXYtMTZjMC00LjQxOC0zLjU4Mi04LTgtOGgtOTMuNTM2YzM5LjgtMjcuODMyLDQ5LjUwMi04Mi42NTgsMjEuNjctMTIyLjQ1OA0KCQljLTE2LjQ2Ny0yMy41NDgtNDMuNC0zNy41NjUtNzIuMTM0LTM3LjU0MmgtMTZjLTQuNDE4LDAtOCwzLjU4Mi04LDh2OTMuNTM2Yy0yNy44MzItMzkuOC04Mi42NTgtNDkuNTAyLTEyMi40NTgtMjEuNjcNCgkJYy0yMy41NDgsMTYuNDY3LTM3LjU2NSw0My40LTM3LjU0Miw3Mi4xMzR2MTZjMCw0LjQxOCwzLjU4Miw4LDgsOGg5My41MzZjLTIzLjQ2NSwxNi40NzgtMzcuNDYzLDQzLjMyOC0zNy41MzYsNzINCgkJYzAuMDU3LDQ4LjU3NywzOS40MjMsODcuOTQzLDg4LDg4aDE2YzQuNDE4LDAsOC0zLjU4Miw4LTh2LTkzLjUzNmMyNy44MzIsMzkuOCw4Mi42NTgsNDkuNTAyLDEyMi40NTgsMjEuNjcNCgkJQzM5Mi4wMzgsMjY3LjczMyw0MDYuMDU2LDI0MC44LDQwNi4wMzMsMjEyLjA2NXogTTI0Ni4wMzMsNDQuMDY1aDhjMzkuNzY0LDAuMDU1LDcxLjk1NSwzMi4zMzYsNzEuOSw3Mi4xDQoJCWMtMC4wNDMsMzEuMTctMjAuMTM4LDU4Ljc3Mi00OS43ODgsNjguMzg4Yy00LjIwMi0xNC4wNTItMTUuNzU4LTI0LjY3Ny0zMC4xMTItMjcuNjg4VjQ0LjA2NXogTTg2LjAzMywxODguMDY1di04DQoJCWMwLjA3My0zOS43NjQsMzIuMzY4LTcxLjk0LDcyLjEzMy03MS44NjdjMzEuMTQ4LDAuMDU3LDU4LjcyNywyMC4xMzgsNjguMzQ3LDQ5Ljc2M2MtMTQuMDQ3LDQuMjAzLTI0LjY2OCwxNS43NTUtMjcuNjgsMzAuMTA0DQoJCUg4Ni4wMzN6IE0yMzAuMDMzLDM0OC4wNjVoLThjLTM5Ljc2NC0wLjA1NS03MS45NTUtMzIuMzM2LTcxLjktNzIuMWMwLjA0My0zMS4xNywyMC4xMzgtNTguNzcyLDQ5Ljc4OC02OC4zODgNCgkJYzQuMjAyLDE0LjA1MiwxNS43NTgsMjQuNjc3LDMwLjExMiwyNy42ODhWMzQ4LjA2NXogTTIzOC4wMzMsMjIwLjA2NWMtMTMuMjU1LDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCwyNC0yNA0KCQlzMjQsMTAuNzQ1LDI0LDI0UzI1MS4yODcsMjIwLjA2NSwyMzguMDMzLDIyMC4wNjV6IE0zMTcuOSwyODMuOTMyYy0zMS4xNDgtMC4wNTctNTguNzI3LTIwLjEzOC02OC4zNDctNDkuNzYzDQoJCWMxNC4wNDctNC4yMDMsMjQuNjY4LTE1Ljc1NSwyNy42OC0zMC4xMDRoMTEyLjh2OEMzODkuOTU5LDI1MS44MywzNTcuNjY0LDI4NC4wMDYsMzE3LjksMjgzLjkzMnoiLz4NCjwvZz4NCjwvc3ZnPg0K",nxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTkgNTExLjk5OSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS45OTksMTI2LjAwMWgtMC4wMjdjNi4yOTItOC4zNjIsMTAuMDI3LTE4Ljc1MiwxMC4wMjctMzBjMC0yNy41Ny0yMi40My01MC4wMDEtNTAtNTAuMDAxDQoJCXMtNTAuMDAxLDIyLjQzLTUwLjAwMSw1MC4wMDFjMCwxMS4yNDgsMy43MzYsMjEuNjM4LDEwLjAyNywzMGgtMC4wMjdjLTUuNTIyLDAtMTAsNC40NzctMTAsMTB2MzUuNTQ1DQoJCWMtMTEuMzI4LTcuMjMzLTIzLjEyOC0xMy42NTgtMzUuMzM0LTE5LjI0MXYtMTYuMzA0YzAtNS41MjMtNC40NzctMTAtMTAtMTBzLTEwLDQuNDc3LTEwLDEwdjguMDM3DQoJCWMtMy4zNjktMS4yNDctNi43NjQtMi40MzgtMTAuMTg2LTMuNTYyYy04LjI5MS0yLjcyMy0xNi42ODMtNS4wNTItMjUuMTQ2LTcuMDExdi0yMC44MzNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMA0KCQljLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2MTYuOTMyYy0xMS42OC0xLjg0OS0yMy40NzQtMi45NzQtMzUuMzMyLTMuMzgxVjk2LjAwMWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwDQoJCXYzMC4xODNjLTExLjg1OSwwLjQwNy0yMy42NTMsMS41MzItMzUuMzMzLDMuMzgxdi0xNi45MzJjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHYyMC44MzMNCgkJYy04LjQ2MiwxLjk1OS0xNi44NTIsNC4yODctMjUuMTQyLDcuMDA5Yy0zLjQyNCwxLjEyNC02LjgxOSwyLjMxNi0xMC4xOTEsMy41NjN2LTguMDM3YzAtNS41MjMtNC40NzctMTAtMTAtMTANCgkJYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjE2LjMwNGMtMTIuMjA1LDUuNTgzLTI0LjAwNCwxMi4wMDctMzUuMzM0LDE5LjI0di0zNS41NDRjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMC4wMjcNCgkJYzYuMjkzLTguMzYyLDEwLjAyNy0xOC43NTIsMTAuMDI3LTMwYzAtMjcuNTctMjIuNDMtNTAtNTAtNTBzLTUwLDIyLjQzLTUwLDUwYzAsMTEuMjQ4LDMuNzM0LDIxLjYzOCwxMC4wMjcsMzBIMTANCgkJYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjMxOS45OTljMCw1LjUyMyw0LjQ3NywxMCwxMCwxMGg0MGg0MGgzMS4wMzNjNS41MjIsMCwxMC00LjQ3NywxMC0xMGMwLTUuNTIyLTQuNDc4LTEwLTEwLTEwSDEwMA0KCQl2LTIwLjAwMWgzMTEuOTk4djIwLjAwMWgtMjEuMDMzYy01LjUyMywwLTEwLDQuNDc4LTEwLDEwYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMzEuMDMzaDQwLjAwMWg0MGM1LjUyMiwwLDEwLTQuNDc3LDEwLTEwDQoJCVYxMzYuMDAxQzUxMS45OTksMTMwLjQ3Nyw1MDcuNTIxLDEyNi4wMDEsNTAxLjk5OSwxMjYuMDAxeiBNODAsNDQ1Ljk5OUg1MEgyMFYxNDYuMDAxaDIwdjQxLjg5OGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwDQoJCXMxMC00LjQ3NywxMC0xMHYtNDEuODk4aDIwVjQ0NS45OTl6IE01MCwxMjYuMDAxYy0xNi41NDMsMC0zMC0xMy40NTgtMzAtMzBzMTMuNDU3LTMwLDMwLTMwYzE2LjU0MywwLDMwLDEzLjQ1OCwzMCwzMA0KCQlTNjYuNTQzLDEyNi4wMDEsNTAsMTI2LjAwMXogTTEzNS4zMzQsNDA1Ljk5OEgxMDBWMTk1LjYyOWMxMS4zMTgtOC4wMiwyMy4xMjYtMTUuMDk1LDM1LjMzNC0yMS4yMThWNDA1Ljk5OHogTTE5MC42NjcsNDA2DQoJCWgtMzUuMzMzVjE2NS4zODRjMTEuNS00LjYzLDIzLjI5OC04LjQ0OSwzNS4zMzMtMTEuNDM3VjQwNnogTTI0Niw0MDZoLTM1LjMzM1YxNDkuNzg3YzExLjYxNC0xLjk1OCwyMy40MDktMy4xNjgsMzUuMzMzLTMuNTk5DQoJCVY0MDZ6IE0zMDEuMzMyLDQwNS45OThIMjY2di0yNTkuODFjMTEuOTI0LDAuNDMxLDIzLjcxNywxLjY0MSwzNS4zMzIsMy41OTlWNDA1Ljk5OHogTTM1Ni42NjQsNDA1Ljk5OWgtMzUuMzMyVjE1My45NDgNCgkJYzEyLjAzNSwyLjk4OCwyMy44MzIsNi44MDcsMzUuMzMyLDExLjQzOFY0MDUuOTk5eiBNNDExLjk5OCw0MDUuOTk4aC0zNS4zMzRWMTc0LjQxMmMxMi4yMDksNi4xMjMsMjQuMDE3LDEzLjIsMzUuMzM0LDIxLjIyDQoJCVY0MDUuOTk4eiBNNDkxLjk5OSw0NDUuOTk5aC0zMGgtMzAuMDAxVjE0Ni4wMDFoMjAuMDAxdjQxLjg5OGMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwYzUuNTIyLDAsMTAtNC40NzcsMTAtMTB2LTQxLjg5OGgyMA0KCQlWNDQ1Ljk5OXogTTQ2MS45OTksMTI2LjAwMWMtMTYuNTQyLDAtMzAuMDAxLTEzLjQ1OC0zMC4wMDEtMzBjMC0xNi41NDMsMTMuNDU5LTMwLjAwMSwzMC4wMDEtMzAuMDAxDQoJCWMxNi41NDIsMCwzMCwxMy40NTgsMzAsMzAuMDAxQzQ5MS45OTksMTEyLjU0Miw0NzguNTQxLDEyNi4wMDEsNDYxLjk5OSwxMjYuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTUwLDQ0NS45OTloLTAuMjM2Yy01LjUyMywwLTEwLDQuNDc4LTEwLDEwYzAsNS41MjMsNC40NzcsMTAsMTAsMTBIMTUwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTANCgkJQzE2MCw0NTAuNDc3LDE1NS41MjMsNDQ1Ljk5OSwxNTAsNDQ1Ljk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Mi4yMzQsNDQ1Ljk5OWgtMC4yMzdjLTUuNTIyLDAtMTAsNC40NzgtMTAsMTBjMCw1LjUyMyw0LjQ3OCwxMCwxMCwxMGgwLjIzN2M1LjUyMywwLDEwLTQuNDc3LDEwLTEwDQoJCUMzNzIuMjM0LDQ1MC40NzcsMzY3Ljc1OCw0NDUuOTk5LDM2Mi4yMzQsNDQ1Ljk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwLDIwNi42MzFjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2MC4yMzVjMCw1LjUyMyw0LjQ3NywxMCwxMCwxMHMxMC00LjQ3NywxMC0xMHYtMC4yMzUNCgkJQzYwLDIxMS4xMDgsNTUuNTIzLDIwNi42MzEsNTAsMjA2LjYzMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ2MS45OTksMjA2LjYzMWMtNS41MjIsMC0xMCw0LjQ3Ny0xMCwxMHYwLjIzNWMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwYzUuNTIyLDAsMTAtNC40NzcsMTAtMTB2LTAuMjM1DQoJCUM0NzEuOTk5LDIxMS4xMDgsNDY3LjUyMSwyMDYuNjMxLDQ2MS45OTksMjA2LjYzMXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",axe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MC4wMDUgNDgwLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTEwNC4wMDUsMTA4LjAwM2MtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0YzAsNC40MTgsMy41ODIsOCw4LDhzOC0zLjU4Miw4LThzMy41ODItOCw4LThzOC0zLjU4Miw4LTgNCgkJCVMxMDguNDIzLDEwOC4wMDMsMTA0LjAwNSwxMDguMDAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzg1LjM1Nyw3Ni4xMTVsLTI4MC00OGMtMC40NDctMC4wNzMtMC44OTktMC4xMTEtMS4zNTItMC4xMTJDNDYuNjEyLDI3Ljk1NiwwLjA0Nyw3NC40NDQsMCwxMzEuODM3DQoJCQljLTAuMDI2LDMxLjA1OSwxMy44NDMsNjAuNTAxLDM3LjgwNSw4MC4yNjFsNTguNDQsMjMzLjg0OGMwLjg5MiwzLjU1OSw0LjA5MSw2LjA1Niw3Ljc2LDYuMDU2aDY0DQoJCQljNC40MTgsMC4wMDgsOC4wMDctMy41NjYsOC4wMTUtNy45ODVjMC0wLjE3MS0wLjAwNS0wLjM0MS0wLjAxNS0wLjUxMWwtMTMuNi0yMTcuNGwyMjIuOTItMzguMjE2DQoJCQljMy44NTQtMC42NDUsNi42NzktMy45OCw2LjY4LTcuODg4di05NkMzOTIuMDA3LDgwLjEwNSwzODkuMTk5LDc2Ljc3MywzODUuMzU3LDc2LjExNXogTTExMC4yNTMsNDM2LjAwM0w1Ny42MDUsMjI1LjE3MQ0KCQkJYzAuNTA0LDAuMjQ4LDEuMDQsMC40MTYsMS41NDQsMC42NjRjMi41NzYsMS4yMzIsNS4xODksMi4zNTIsNy44NCwzLjM2YzAuNzQ0LDAuMjgsMS40NjQsMC42LDIuMjA4LDAuODY0DQoJCQljMy4zMTksMS4xNzQsNi42OTcsMi4xNzUsMTAuMTIsM2MwLjgsMC4xOTIsMS42LDAuMzI4LDIuNCwwLjUwNGMyLjc2OCwwLjU5Miw1LjU2NSwxLjA3Nyw4LjM5MiwxLjQ1Ng0KCQkJYzEuMDA4LDAuMTI4LDIuMDE2LDAuMjY0LDMuMDI0LDAuMzY4YzMuNjExLDAuMzksNy4yNCwwLjU5NiwxMC44NzIsMC42MTZjMC40NTMtMC4wMDEsMC45MDUtMC4wMzksMS4zNTItMC4xMTJsNDEuMjE2LTcuMDg4DQoJCQlsMTIuOTIsMjA3LjJIMTEwLjI1M3ogTTM0NC4wMDUsMTc4LjczOWwtMjM4LjA4OCw0MC44bC0yLjU3NiwwLjQ2NGMtNDguMzY3LTAuMzA0LTg3LjM5OS0zOS42MzItODcuMzM2LTg4DQoJCQljMC4wNTUtNDguMzIsMzkuMDE4LTg3LjU3OSw4Ny4zMzYtODhsMjQwLjY2NCw0MS4yNjRWMTc4LjczOXogTTM3Ni4wMDUsMTczLjI1OWwtMTYsMi43NDR2LTg4bDE2LDIuNzQ0VjE3My4yNTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDQuMDA1LDc2LjAwM2MtMzAuOTI4LDAtNTYsMjUuMDcyLTU2LDU2YzAuMDM1LDMwLjkxMywyNS4wODcsNTUuOTY1LDU2LDU2YzMwLjkyOCwwLDU2LTI1LjA3Miw1Ni01Ng0KCQkJQzE2MC4wMDUsMTAxLjA3NSwxMzQuOTMzLDc2LjAwMywxMDQuMDA1LDc2LjAwM3ogTTEwNC4wMDUsMTcyLjAwM2MtMjIuMDkxLDAtNDAtMTcuOTA5LTQwLTQwYzAuMDI2LTIyLjA4LDE3LjkyLTM5Ljk3NCw0MC00MA0KCQkJYzIyLjA5MSwwLDQwLDE3LjkwOSw0MCw0MFMxMjYuMDk3LDE3Mi4wMDMsMTA0LjAwNSwxNzIuMDAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQxLjkzMyw0MTEuNTIzbC05LjY2NC0xNTUuMDI0Yy0wLjI3Ni00LjQxOC00LjA4Mi03Ljc3Ni04LjUtNy41Yy00LjQxOCwwLjI3Ni03Ljc3Niw0LjA4Mi03LjUsOC41bDkuNjY0LDE1NQ0KCQkJYzAuMjYzLDQuMjI3LDMuNzczLDcuNTE2LDguMDA4LDcuNTA0YzAuMTY4LDAsMC4zMzYsMCwwLjUwNCwwQzEzOC44NTQsNDE5LjcyOCwxNDIuMjA3LDQxNS45MzIsMTQxLjkzMyw0MTEuNTIzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDcyLjAwNSwxMjQuMDAzaC00OGMtNC40MTgsMC04LDMuNTgyLTgsOHMzLjU4Miw4LDgsOGg0OGM0LjQxOCwwLDgtMy41ODIsOC04UzQ3Ni40MjMsMTI0LjAwMyw0NzIuMDA1LDEyNC4wMDN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIuMDA1LDE1Ni4wMDNoLTQ4Yy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDQ4YzQuNDE4LDAsOC0zLjU4Miw4LThTNDc2LjQyMywxNTYuMDAzLDQ3Mi4wMDUsMTU2LjAwM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ3Mi4wMDUsOTIuMDAzaC00OGMtNC40MTgsMC04LDMuNTgyLTgsOHMzLjU4Miw4LDgsOGg0OGM0LjQxOCwwLDgtMy41ODIsOC04UzQ3Ni40MjMsOTIuMDAzLDQ3Mi4wMDUsOTIuMDAzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Mxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ4LjQ1Nyw3Ny4yMjdhOC4wNjMsOC4wNjMsMCwwLDAtMTAuNCwxMi4zMjV2Ni45MjdhNS4yNzMsNS4yNzMsMCwwLDAsMTAuNTQ1LDBWODkuNTUzYTguMDYzLDguMDYzLDAsMCwwLS4xNDYtMTIuMzI2Wk00NS44NzQsODcuMjRhMS43NSwxLjc1LDAsMCwwLS43NzEsMS40NTF2Ny43ODdhMS43NzMsMS43NzMsMCwwLDEtMy41NDUsMFY4OC42OTFhMS43NDcsMS43NDcsMCwwLDAtLjc3My0xLjQ1MUE0LjU2Niw0LjU2NiwwLDAsMSw0Mi40LDc4Ljk3OGE0Ljg3Niw0Ljg3NiwwLDAsMSwuOTQtLjA5Miw0LjUsNC41LDAsMCwxLDIuODkzLDEuMDQxLDQuNTYyLDQuNTYyLDAsMCwxLS4zNTYsNy4zMTNaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDUuMjI4LDQ0LjY2Myw2NS41OCw0My4zNlYxOS41MTRhNS4zNyw1LjM3LDAsMCwwLTUuMzYzLTUuMzY0SDI2LjQ0M2E1LjM3LDUuMzcsMCwwLDAtNS4zNjMsNS4zNjR2ODguOTcyYTUuMzcsNS4zNywwLDAsMCw1LjM2Myw1LjM2NEg2MC4yMTdhNS4zNyw1LjM3LDAsMCwwLDUuMzYzLTUuMzY0VjU5LjhsMzkuNjQ4LTEuM2ExLjc1LDEuNzUsMCwwLDAsMS42OTItMS43NDlWNDYuNDEyQTEuNzUsMS43NSwwLDAsMCwxMDUuMjI4LDQ0LjY2M1pNNjIuMDgsMTA4LjQ4NmExLjg2NiwxLjg2NiwwLDAsMS0xLjg2MywxLjg2NEgyNi40NDNhMS44NjYsMS44NjYsMCwwLDEtMS44NjMtMS44NjRWMTkuNTE0YTEuODY2LDEuODY2LDAsMCwxLDEuODYzLTEuODY0SDYwLjIxN2ExLjg2NiwxLjg2NiwwLDAsMSwxLjg2MywxLjg2NFY0My4yNDVsLTYuMjY3LS4yMDZhMTUuMTI3LDE1LjEyNywwLDEsMCwwLDE3LjA4Nmw2LjI2NC0uMjA2Wk00NC4zOSw2MC41aDBMNTEsNjAuMjg0YTExLjYxMiwxMS42MTIsMCwxLDEsLjA0LTE3LjRsLTYuNjQ5LS4yMTloLS4wNThBOC45Miw4LjkyLDAsMSwwLDQ0LjM5LDYwLjVabTU5LjAzLTUuNDQyLTM5LjU4NywxLjNoLS4wMDhMNDQuMzM0LDU3YTUuNDIsNS40MiwwLDAsMS0uMDI3LTEwLjg0bDU5LjExMywxLjk0M1oiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",cxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTggNTExLjk5OCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS4zNCwxMTcuMzM2Yy01LjkwNiwwLTEwLjY4OCw0Ljc3My0xMC42ODgsMTAuNjY0djg1LjMzNUg0NjkuMzR2LTIxLjMzNmMwLTIzLjUyMy0xOS4xNTYtNDIuNjYzLTQyLjY4OC00Mi42NjMNCgkJYy0xMi43MTgsMC0yNC4xNTUsNS42MDktMzEuOTk5LDE0LjQ5MWMtNy44MTItOC44ODItMTkuMjUtMTQuNDkxLTMyLTE0LjQ5MWMtMTIuNzE4LDAtMjQuMTU1LDUuNjA5LTMxLjk5OSwxNC40OTENCgkJYy03LjgxMi04Ljg4Mi0xOS4yNS0xNC40OTEtMzItMTQuNDkxYy0xMi43MTksMC0yNC4xNTYsNS42MDktMzEuOTkyLDE0LjQ5MWMtNy44Mi04Ljg4Mi0xOS4yNTgtMTQuNDkxLTMyLTE0LjQ5MQ0KCQljLTEyLjcyNiwwLTI0LjE3MSw1LjYwOS0zMiwxNC40OTFjLTcuODItOC44ODItMTkuMjU4LTE0LjQ5MS0zMi0xNC40OTFjLTEyLjcyNiwwLTI0LjE3MSw1LjYwOS0zMiwxNC40OTENCgkJYy03LjgyLTguODgyLTE5LjI1OC0xNC40OTEtMzItMTQuNDkxYy0xOS44MzUsMC0zNi41NywxMy42MTYtNDEuMzIsMzEuOTk5SDMyYy01Ljg5MSwwLTEwLjY2NCw0Ljc3My0xMC42NjQsMTAuNjY0djIxLjMzNkgxMC42NjQNCgkJQzQuNzczLDIxMy4zMzUsMCwyMTguMTA4LDAsMjIzLjk5OXM0Ljc3MywxMC42NjQsMTAuNjY0LDEwLjY2NGgxMC42NzJ2MjEuMzM2YzAsNS44OTEsNC43NzMsMTAuNjY0LDEwLjY2NCwxMC42NjRoMzJ2MjAyLjY3OA0KCQljMCwyMy41MTYsMTkuMTQxLDQyLjY1Niw0Mi42NjQsNDIuNjU2YzEyLjc0MiwwLDI0LjE4LTUuNjI1LDMyLTE0LjVjNy44MjgsOC44NzUsMTkuMjczLDE0LjUsMzIsMTQuNQ0KCQljMTIuNzQyLDAsMjQuMTgtNS42MjUsMzItMTQuNWM3LjgyOCw4Ljg3NSwxOS4yNzMsMTQuNSwzMiwxNC41YzEyLjc0MiwwLDI0LjE4LTUuNjI1LDMyLTE0LjUNCgkJYzcuODM2LDguODc1LDE5LjI3MywxNC41LDMxLjk5MiwxNC41YzEyLjc1LDAsMjQuMTg4LTUuNjI1LDMyLTE0LjVjNy44NDQsOC44NzUsMTkuMjgxLDE0LjUsMzEuOTk5LDE0LjUNCgkJYzEyLjc1LDAsMjQuMTg4LTUuNjI1LDMyLTE0LjVjNy44NDQsOC44NzUsMTkuMjgxLDE0LjUsMzEuOTk5LDE0LjVjMjMuNTMxLDAsNDIuNjg4LTE5LjE0MSw0Mi42ODgtNDIuNjU2VjIzNC42NjNoMzINCgkJYzUuODc1LDAsMTAuNjU2LTQuNzczLDEwLjY1Ni0xMC42NjRWMTI4QzUxMS45OTYsMTIyLjEwOSw1MDcuMjE1LDExNy4zMzYsNTAxLjM0LDExNy4zMzZ6IE02NCwyNDUuMzM1SDQyLjY2NHYtNDIuNjcySDY0VjI0NS4zMzUNCgkJeiBNMTI3Ljk5OSw0NjkuMzQxYzAsMTEuNzUtOS41NjMsMjEuMzEyLTIxLjMzNiwyMS4zMTJjLTExLjc1NywwLTIxLjMyOC05LjU2Mi0yMS4zMjgtMjEuMzEyVjI1NS45OTl2LTY0DQoJCWMwLTExLjc1OCw5LjU3LTIxLjMzNiwyMS4zMjgtMjEuMzM2YzExLjc3MywwLDIxLjMzNiw5LjU3OCwyMS4zMzYsMjEuMzM2VjQ2OS4zNDF6IE0xOTEuOTk5LDQ2OS4zNDENCgkJYy0wLjAwMSwxMS43NS05LjU2MywyMS4zMTItMjEuMzM2LDIxLjMxMmMtMTEuNzU3LDAtMjEuMzI4LTkuNTYyLTIxLjMyOC0yMS4zMTJWMTkxLjk5OWMwLTExLjc1OCw5LjU3LTIxLjMzNiwyMS4zMjgtMjEuMzM2DQoJCWMxMS43NzMsMCwyMS4zMzYsOS41NzgsMjEuMzM2LDIxLjMzNlY0NjkuMzQxeiBNMjU1Ljk5OCw0NjkuMzQxYzAsMTEuNzUtOS41NjIsMjEuMzEyLTIxLjMzNiwyMS4zMTINCgkJYy0xMS43NTcsMC0yMS4zMjgtOS41NjItMjEuMzI4LTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTctMjEuMzM2LDIxLjMyOC0yMS4zMzZjMTEuNzczLDAsMjEuMzM2LDkuNTc4LDIxLjMzNiwyMS4zMzZWNDY5LjM0MXoNCgkJIE0zMTkuOTk4LDQ2OS4zNDFjMCwxMS43NS05LjU2MiwyMS4zMTItMjEuMzQ0LDIxLjMxMmMtMTEuNzUsMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5DQoJCWMwLTExLjc1OCw5LjU2Mi0yMS4zMzYsMjEuMzEyLTIxLjMzNmMxMS43ODEsMCwyMS4zNDQsOS41NzgsMjEuMzQ0LDIxLjMzNlY0NjkuMzQxeiBNMzgzLjk5Nyw0NjkuMzQxDQoJCWMwLDExLjc1LTkuNTYyLDIxLjMxMi0yMS4zNDQsMjEuMzEyYy0xMS43NDksMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTYyLTIxLjMzNiwyMS4zMTItMjEuMzM2DQoJCWMxMS43ODEsMCwyMS4zNDQsOS41NzgsMjEuMzQ0LDIxLjMzNlY0NjkuMzQxeiBNNDQ3Ljk5Niw0NjkuMzQxYzAsMTEuNzUtOS41NjIsMjEuMzEyLTIxLjM0NCwyMS4zMTINCgkJYy0xMS43NDksMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTYyLTIxLjMzNiwyMS4zMTItMjEuMzM2YzExLjc4MSwwLDIxLjM0NCw5LjU3OCwyMS4zNDQsMjEuMzM2VjQ2OS4zNDENCgkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzU2Ljg3MSwxMDMuNjcyYy0xLjMxMi00LjUzOS0wLjUtNy44NDQsMi42ODgtMTEuMDU1YzguNjU2LTguNjk1LDExLjUzMS0xOS45ODQsOC4wNjItMzEuODEyDQoJCQljLTIuMzEyLTcuOTM4LTYuODEyLTEzLjU0Ny03LjM3NS0xNC4yNWMtMC4wMzEsMC0wLjAzMS0wLjAwOC0wLjAzMS0wLjAwOHYtMC4wMTVjLTEuOTY5LTIuMzU5LTQuOTA2LTMuODY3LTguMjE5LTMuODY3DQoJCQljLTUuODksMC0xMC42NTUsNC43ODEtMTAuNjU1LDEwLjY3MmMwLDIuNTg2LDAuOTA2LDQuOTYxLDIuNDM4LDYuODA1YzAuMDMxLDAuMDIzLDIuMjgxLDIuOTM4LDMuMzc1LDYuNjU2DQoJCQljMS4yNjYsNC4zNjcsMC40NjksNy41ODYtMi43MTksMTAuNzY2Yy04LjYyNSw4LjY3OC0xMS41MTUsMjAuMDQ1LTguMDc4LDMxLjk5OGMyLjMyOCw4LjEwMiw2LjgyOCwxMy44MzYsNy4zMjgsMTQuNDY5di0wLjAwOA0KCQkJYzEuOTY5LDIuNDIyLDQuOTUzLDMuOTc3LDguMzEyLDMuOTc3YzUuODkxLDAsMTAuNjU2LTQuNzczLDEwLjY1Ni0xMC42NjRjMC0yLjUzOS0wLjg3NS00Ljg2Ny0yLjM0NC02LjY5NQ0KCQkJQzM2MC4yNzgsMTEwLjYxLDM1Ny45NjUsMTA3LjU1NSwzNTYuODcxLDEwMy42NzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNjguNjU2LDk2LjYxYy0yLjQ2MS05LjgzNi0wLjQ5Mi0xOC4xOTUsNi0yNS41NDdjMTEuNDA2LTEyLjg5MSwxNS4wMzEtMjguNjk1LDEwLjUtNDUuNzI2DQoJCQljLTMuMTg4LTExLjkzOC05LjMxMi0yMC4yMjctMTAtMjEuMTMzVjQuMjJjLTEuOTY5LTIuNTU1LTUuMDIzLTQuMjE5LTguNDkyLTQuMjE5Yy01Ljg5MywwLTEwLjY2Niw0Ljc3My0xMC42NjYsMTAuNjY0DQoJCQljMCwyLjQxNCwwLjgwNSw0LjYzMywyLjE1Niw2LjQxNGgtMC4wMTZjMC4wNDcsMC4wNjIsNC40OTIsNi4xMDksNi41NDcsMTQuMzJjMi40NTMsOS44MjcsMC40ODQsMTguMTg3LTYuMDE2LDI1LjUzOA0KCQkJYy0xMS4zOSwxMi44OTEtMTUuMDE1LDI4LjY5Ni0xMC40ODMsNDUuNzI3YzMuMTcyLDExLjkzOCw5LjMwNSwyMC4yMjcsOS45ODQsMjEuMTMzbDAuMDE2LTAuMDE2DQoJCQljMS45NDUsMi41Nyw1LjAxNiw0LjIxOSw4LjQ3Nyw0LjIxOWM1Ljg5OCwwLDEwLjY4LTQuNzczLDEwLjY4LTEwLjY2NGMwLTIuNDE0LTAuODEyLTQuNjMzLTIuMTU2LTYuNDE0DQoJCQlDMjc1LjE0LDExMC44NiwyNzAuNjk1LDEwNC44MTMsMjY4LjY1Niw5Ni42MXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4OS42NCwxMTAuNjQxYy0wLjAyMy0wLjAzMS0yLjMyOC0zLjA4Ni0zLjQ0NS02Ljk2OWMtMS4zMDUtNC41MzktMC41LTcuODQ0LDIuNjk1LTExLjA1NQ0KCQkJYzguNjY0LTguNjk1LDExLjUyMy0xOS45ODQsOC4wNjItMzEuODEyYy0yLjMyLTcuOTM4LTYuNzg5LTEzLjUzMS03LjM5MS0xNC4yNWMwLDAsMC0wLjAwOC0wLjAwOC0wLjAwOGwtMC4wMDgtMC4wMjN2MC4wMDgNCgkJCWMtMS45NjEtMi4zNTktNC45MDYtMy44NjctOC4yMTEtMy44NjdjLTUuODkxLDAtMTAuNjcyLDQuNzgxLTEwLjY3MiwxMC42NzJjMCwyLjU4NiwwLjkyMiw0Ljk2MSwyLjQ1Myw2LjgwNQ0KCQkJYzAuMDIzLDAuMDIzLDIuMjczLDIuOTM4LDMuMzU5LDYuNjU2YzEuMjgxLDQuMzY3LDAuNDY5LDcuNTg2LTIuNzAzLDEwLjc2NmMtOC42NCw4LjY3OC0xMS41MTUsMjAuMDQ1LTguMDc3LDMxLjk5OA0KCQkJYzIuMzI4LDguMTAyLDYuODI4LDEzLjgzNiw3LjMzNiwxNC40Njl2LTAuMDA4YzEuOTYxLDIuNDIyLDQuOTQ1LDMuOTc3LDguMzA1LDMuOTc3YzUuODkxLDAsMTAuNjY0LTQuNzczLDEwLjY2NC0xMC42NjQNCgkJCWMwLTIuNTM5LTAuODkxLTQuODY3LTIuMzY3LTYuNjk1SDE4OS42NHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",uxe="PHN2ZyBoZWlnaHQ9IjQ5NnB0IiB2aWV3Qm94PSIwIC0xIDQ5NiA0OTUiIHdpZHRoPSI0OTZwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDg4IDMyMC41aC00MHYtMzJjMC0yLjEyODkwNi0uODM5ODQ0LTQuMTYwMTU2LTIuMzQzNzUtNS42NTYyNWwtMTIwLTEyMGMtMS40OTYwOTQtMS41MDM5MDYtMy41MjczNDQtMi4zNDM3NS01LjY1NjI1LTIuMzQzNzVoLTE2di0xNTJjMC00LjQyNTc4MS0zLjU3NDIxOS04LTgtOGgtOTZjLTQuNDI1NzgxIDAtOCAzLjU3NDIxOS04IDh2MTUyaC0yNGMtMi4xMjg5MDYgMC00LjE2MDE1Ni44Mzk4NDQtNS42NTYyNSAyLjM0Mzc1bC0xMjAgMTIwYy0xLjUwMzkwNiAxLjQ5NjA5NC0yLjM0Mzc1IDMuNTI3MzQ0LTIuMzQzNzUgNS42NTYyNXYzMmgtMzJjLTQuNDI1NzgxIDAtOCAzLjU3NDIxOS04IDh2NDhjMCA0LjQyNTc4MSAzLjU3NDIxOSA4IDggOGg0ODBjNC40MjU3ODEgMCA4LTMuNTc0MjE5IDgtOHYtNDhjMC00LjQyNTc4MS0zLjU3NDIxOS04LTgtOHptLTI4MC0zMDRoODB2MTkyaC04MHptLTE1MiAyNzUuMzEyNSAxMTUuMzEyNS0xMTUuMzEyNWgyMC42ODc1djQwYzAgNC40MjU3ODEgMy41NzQyMTkgOCA4IDhoOTZjNC40MjU3ODEgMCA4LTMuNTc0MjE5IDgtOHYtNDBoMTIuNjg3NWwxMTUuMzEyNSAxMTUuMzEyNXYyOC42ODc1aC0zNzZ6bTQyNCA3Ni42ODc1aC00NjR2LTMyaDQ2NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuMzEyNSA0NDAuNWMtMi4xMzY3MTktMi4xNDQ1MzEtMy4zMTI1LTQuOTc2NTYyLTMuMzEyNS04czEuMTc1NzgxLTUuODU1NDY5IDMuMzEyNS04bDEwLjM0Mzc1LTEwLjM0Mzc1LTExLjMxMjUtMTEuMzEyNS0xMC4zNDM3NSAxMC4zNDM3NWMtNS4xNjAxNTYgNS4xNjAxNTYtOCAxMi4wMTU2MjUtOCAxOS4zMTI1czIuODM5ODQ0IDE0LjE2MDE1NiA4IDE5LjMxMjVsNC42ODc1IDQuNjg3NWMyLjEzNjcxOSAyLjE0NDUzMSAzLjMxMjUgNC45NzY1NjIgMy4zMTI1IDhzLTEuMTc1NzgxIDUuODU1NDY5LTMuMzEyNSA4bC0xMC4zNDM3NSAxMC4zNDM3NSAxMS4zMTI1IDExLjMxMjUgMTAuMzQzNzUtMTAuMzQzNzVjNS4xNjAxNTYtNS4xNjAxNTYgOC0xMi4wMTU2MjUgOC0xOS4zMTI1cy0yLjgzOTg0NC0xNC4xNjAxNTYtOC0xOS4zMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNy4zMTI1IDQ0MC41Yy0yLjEzNjcxOS0yLjE0NDUzMS0zLjMxMjUtNC45NzY1NjItMy4zMTI1LThzMS4xNzU3ODEtNS44NTU0NjkgMy4zMTI1LThsMTAuMzQzNzUtMTAuMzQzNzUtMTEuMzEyNS0xMS4zMTI1LTEwLjM0Mzc1IDEwLjM0Mzc1Yy01LjE2MDE1NiA1LjE2MDE1Ni04IDEyLjAxNTYyNS04IDE5LjMxMjVzMi44Mzk4NDQgMTQuMTYwMTU2IDggMTkuMzEyNWw0LjY4NzUgNC42ODc1YzIuMTM2NzE5IDIuMTQ0NTMxIDMuMzEyNSA0Ljk3NjU2MiAzLjMxMjUgOHMtMS4xNzU3ODEgNS44NTU0NjktMy4zMTI1IDhsLTEwLjM0Mzc1IDEwLjM0Mzc1IDExLjMxMjUgMTEuMzEyNSAxMC4zNDM3NS0xMC4zNDM3NWM1LjE2MDE1Ni01LjE2MDE1NiA4LTEyLjAxNTYyNSA4LTE5LjMxMjVzLTIuODM5ODQ0LTE0LjE2MDE1Ni04LTE5LjMxMjV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjc1LjMxMjUgNDQwLjVjLTIuMTM2NzE5LTIuMTQ0NTMxLTMuMzEyNS00Ljk3NjU2Mi0zLjMxMjUtOHMxLjE3NTc4MS01Ljg1NTQ2OSAzLjMxMjUtOGwxMC4zNDM3NS0xMC4zNDM3NS0xMS4zMTI1LTExLjMxMjUtMTAuMzQzNzUgMTAuMzQzNzVjLTUuMTYwMTU2IDUuMTYwMTU2LTggMTIuMDE1NjI1LTggMTkuMzEyNXMyLjgzOTg0NCAxNC4xNjAxNTYgOCAxOS4zMTI1bDQuNjg3NSA0LjY4NzVjMi4xMzY3MTkgMi4xNDQ1MzEgMy4zMTI1IDQuOTc2NTYyIDMuMzEyNSA4cy0xLjE3NTc4MSA1Ljg1NTQ2OS0zLjMxMjUgOGwtMTAuMzQzNzUgMTAuMzQzNzUgMTEuMzEyNSAxMS4zMTI1IDEwLjM0Mzc1LTEwLjM0Mzc1YzUuMTYwMTU2LTUuMTYwMTU2IDgtMTIuMDE1NjI1IDgtMTkuMzEyNXMtMi44Mzk4NDQtMTQuMTYwMTU2LTgtMTkuMzEyNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjMuMzEyNSA0NDAuNWMtMi4xMzY3MTktMi4xNDQ1MzEtMy4zMTI1LTQuOTc2NTYyLTMuMzEyNS04czEuMTc1NzgxLTUuODU1NDY5IDMuMzEyNS04bDEwLjM0Mzc1LTEwLjM0Mzc1LTExLjMxMjUtMTEuMzEyNS0xMC4zNDM3NSAxMC4zNDM3NWMtNS4xNjAxNTYgNS4xNjAxNTYtOCAxMi4wMTU2MjUtOCAxOS4zMTI1czIuODM5ODQ0IDE0LjE2MDE1NiA4IDE5LjMxMjVsNC42ODc1IDQuNjg3NWMyLjEzNjcxOSAyLjE0NDUzMSAzLjMxMjUgNC45NzY1NjIgMy4zMTI1IDhzLTEuMTc1NzgxIDUuODU1NDY5LTMuMzEyNSA4bC0xMC4zNDM3NSAxMC4zNDM3NSAxMS4zMTI1IDExLjMxMjUgMTAuMzQzNzUtMTAuMzQzNzVjNS4xNjAxNTYtNS4xNjAxNTYgOC0xMi4wMTU2MjUgOC0xOS4zMTI1cy0yLjgzOTg0NC0xNC4xNjAxNTYtOC0xOS4zMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAyODguNWgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzUyIDI4OC41aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAgMjg4LjVoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",lxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDUgNTEyLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTMyNy4xNTksMi43NjZjLTQuMDYzLTMuNjg4LTEwLjI1LTMuNjg4LTE0LjMxMywwYy00LjY0Miw0LjE4Ni0xMTAuODg5LDEwMS4yOTItMTYwLjIyOCwyMTMuODM5DQoJCQkJYy01LjMxOC0xLjg2Ny0xMS40NC0zLjI2Ni0xOS4zNTUtMy4yNjZjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzNjLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2DQoJCQkJYy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4M2MtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2Nw0KCQkJCWMwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3YzExLjk2OSwwLDE3LjUyMSwzLjg2NSwyNC41NDIsOC43NWM4LjA0Miw1LjYwNCwxOC4wNjMsMTIuNTgzLDM2LjcyOSwxMi41ODMNCgkJCQljMTguNjc3LDAsMjguNzA4LTYuOTc5LDM2Ljc2LTEyLjU4M2M3LjAzMS00Ljg4NSwxMi41ODMtOC43NSwyNC41NjMtOC43NWMxMiwwLDE3LjU2MywzLjg2NSwyNC42MDQsOC43Ng0KCQkJCWM4LjA1Miw1LjYwNCwxOC4wODMsMTIuNTczLDM2Ljc3MSwxMi41NzNjMTguNjc3LDAsMjguNzA4LTYuOTY5LDM2Ljc3MS0xMi41NzNjNy4wMzEtNC44OTYsMTIuNTk0LTguNzYsMjQuNTk0LTguNzYNCgkJCQljNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3Yy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3Mw0KCQkJCWMtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzZjLTExLjIwOCwwLTE2LjgyMy0zLjQxOS0yMy4yNDItNy44NTRjNDAuMTIxLTkyLjY2MSwxMjMuNjYxLTE3Ny40NjYsMTQ4LjYwNy0yMDEuNDkNCgkJCQljMzMuMjE5LDMyLjAxLDE3MC42NjcsMTcxLjg2NSwxNzAuNjY3LDI5NC42NzdjMCw5NC4xMDQtNzYuNTYzLDE3MC42NjctMTcwLjY2NywxNzAuNjY3Yy00Mi40NzcsMC04Mi42NjktMTUuODIyLTExMy43OC00My43NTgNCgkJCQljMTEuNTQyLTIuMTM4LDE4Ljk5NC03LjE3NywyNS4xODYtMTEuNDgyYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2YzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjcNCgkJCQlzLTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3Yy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3M2MtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzYNCgkJCQljLTEyLDAtMTcuNTYzLTMuODY1LTI0LjU5NC04Ljc2Yy04LjA2My01LjYwNC0xOC4wOTQtMTIuNTczLTM2Ljc4MS0xMi41NzNjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzMNCgkJCQljLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2Yy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4Mw0KCQkJCWMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N3M0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2MxMS45NjksMCwxNy41MjEsMy44NjUsMjQuNTQyLDguNzUNCgkJCQljOC4wNDIsNS42MDQsMTguMDYzLDEyLjU4MywzNi43MjksMTIuNTgzYzE4LjY3NywwLDI4LjcwOC02Ljk3OSwzNi43Ni0xMi41ODNjNy4wMzEtNC44ODUsMTIuNTgzLTguNzUsMjQuNTYzLTguNzUNCgkJCQljMTIsMCwxNy41NjMsMy44NjUsMjQuNjA0LDguNzZjNC4zNDUsMy4wMjMsOS40MTQsNi4zNTUsMTUuOTYxLDguODY1YzM2LjYsNDIuOTk2LDg5LjY1NSw2Ny43MDgsMTQ2LjE3NCw2Ny43MDgNCgkJCQljMTA1Ljg2NSwwLDE5Mi04Ni4xMzUsMTkyLTE5MkM1MTIuMDAzLDE3MS42NDEsMzM0LjcwMSw5LjU4OSwzMjcuMTU5LDIuNzY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTAuNjY5LDM2Mi42NzJjMTEuOTY5LDAsMTcuNTIxLDMuODY1LDI0LjU0Miw4Ljc1YzguMDQyLDUuNjA0LDE4LjA2MywxMi41ODMsMzYuNzI5LDEyLjU4Mw0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3YzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdjLTExLjk2OSwwLTE3LjUyMS0zLjg2NS0yNC41NDItOC43NQ0KCQkJCWMtOC4wNDItNS42MDQtMTguMDYzLTEyLjU4My0zNi43MjktMTIuNTgzYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzQuNzczLDM2Mi42NzIsMTAuNjY5LDM2Mi42NzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMzMuMjYzLDM0MS4zMzljLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjdzNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdjMTIsMCwxNy41NjMsMy44NjUsMjQuNTk0LDguNzYNCgkJCQljOC4wNjMsNS42MDQsMTguMDk0LDEyLjU3MywzNi43ODEsMTIuNTczYzE4LjY3NywwLDI4LjcwOC02Ljk2OSwzNi43NzEtMTIuNTczYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2DQoJCQkJYzEyLjE5OCwwLDE4LjQwNiwzLjk2OSwyNi4yNSw4Ljk5YzkuMDUyLDUuNzgxLDE5LjMxMywxMi4zNDQsMzcuNzUsMTIuMzQ0YzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjcNCgkJCQljMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N2MtMTIuMTk4LDAtMTguNDA2LTMuOTY5LTI2LjI1LTguOTljLTkuMDUyLTUuNzgxLTE5LjMxMy0xMi4zNDQtMzcuNzUtMTIuMzQ0DQoJCQkJYy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3M2MtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzZjLTEyLDAtMTcuNTYzLTMuODY1LTI0LjYwNC04Ljc2DQoJCQkJQzE2MS45ODIsMzQ4LjMwNywxNTEuOTUxLDM0MS4zMzksMTMzLjI2MywzNDEuMzM5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTMzLjI2MywyNzcuMzM5Yy0xOC42NzcsMC0yOC42OTgsNi45NjktMzYuNzUsMTIuNTczYy03LjAzMSw0Ljg5Ni0xMi41ODMsOC43Ni0yNC41NzMsOC43Ng0KCQkJCWMtMTEuOTY5LDAtMTcuNTIxLTMuODY1LTI0LjU0Mi04Ljc1Yy04LjA0Mi01LjYwNC0xOC4wNjMtMTIuNTgzLTM2LjcyOS0xMi41ODNjLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjcNCgkJCQljMCw1Ljg5Niw0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2MxMS45NjksMCwxNy41MjEsMy44NjUsMjQuNTQyLDguNzVjOC4wNDIsNS42MDQsMTguMDYzLDEyLjU4MywzNi43MjksMTIuNTgzDQoJCQkJYzE4LjY3NywwLDI4LjcwOC02Ljk3OSwzNi43Ni0xMi41ODNjNy4wMzEtNC44ODUsMTIuNTgzLTguNzUsMjQuNTYzLTguNzVjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2Nw0KCQkJCUMxNDMuOTMsMjgyLjEwOSwxMzkuMTU5LDI3Ny4zMzksMTMzLjI2MywyNzcuMzM5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjMxLjQwOSwzMDcuNDMyYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2YzExLjk2OSwwLDE3LjUyMSwzLjg2NSwyNC41NDIsOC43NQ0KCQkJCWM4LjA0Miw1LjYwNCwxOC4wNjMsMTIuNTgzLDM2LjcyOSwxMi41ODNjMTguNjc3LDAsMjguNzA4LTYuOTc5LDM2Ljc2LTEyLjU4M2M3LjAzMS00Ljg4NSwxMi41ODMtOC43NSwyNC41NjMtOC43NQ0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3YzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzMNCgkJCQljLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2Yy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4Mw0KCQkJCWMtMTguNjg3LDAtMjguNzE5LDYuOTY5LTM2Ljc4MSwxMi41NzNjLTcuMDMxLDQuODk2LTEyLjU5NCw4Ljc2LTI0LjU4Myw4Ljc2Yy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3DQoJCQkJczQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3QzIxMy4zMTUsMzIwLjAwNSwyMjMuMzQ2LDMxMy4wMzYsMjMxLjQwOSwzMDcuNDMyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Nxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUxMiAxNjMuODdjMC0xMy45LTUuNDEyLTI2Ljk2MS0xNS4yMzMtMzYuNzctOS44MTUtOS44MjgtMjIuODc2LTE1LjI0LTM2Ljc3Ni0xNS4yNGgtODAuOTdjLTI2LjcwNSAwLTQ4LjQzLTIxLjcyNi00OC40My00OC40MyAwLTEyLjkzOCA1LjAzNy0yNS4xMDEgMTQuMTg0LTM0LjI0NyA5LjE0NC05LjE0NiAyMS4zMDctMTQuMTgzIDM0LjI0NS0xNC4xODNoMTI1LjQ4YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC0xMjUuNDhjLTE2Ljk0NSAwLTMyLjg3NCA2LjU5Ny00NC44NTMgMTguNTc3LTExLjk3OSAxMS45NzktMTguNTc3IDI3LjkwOC0xOC41NzcgNDQuODUzIDAgMzQuOTc1IDI4LjQ1NSA2My40MyA2My40MyA2My40M2g4MC45N2M5Ljg5IDAgMTkuMTgyIDMuODUgMjYuMTY5IDEwLjg0NyA2Ljk5MSA2Ljk4MiAxMC44NDEgMTYuMjczIDEwLjg0MSAyNi4xNjMgMCA4LjYzNy0zLjAzOCAxNy4wNDQtOC41NTcgMjMuNjc0bC0yMi4zMDUgMjYuODIyYy03Ljg4NC0yLjcyNS0xNi45ODktLjk3Mi0yMy4yODIgNS4zMTFsLTkuMDU4IDkuMDU4Yy0yMC4zMi0uNDItNDMuMDk4IDMuOTQtNjIuODIxIDcuNDI3LTQuMDc5LjcyMS02LjgwMSA0LjYxMy02LjA3OSA4LjY5MS43MjEgNC4wNzkgNC42MTMgNi43OTkgOC42OTEgNi4wNzkgMTguOTQyLTMuMzUgMzguMzkyLTUuNzY4IDU3LjgwOS03LjE4NSA3LjY4MS0uNTY2IDE0LjgzMyA0LjM5MyAxNi45ODUgMTEuNzggMS44MjcgNi4yNyA0Ny4wMjcgMTYwLjE2NyA0OC41MzMgMTY2LjU3NS40OTggMi4xMTktLjczOCAzLjY2LTIuOTEyIDMuNjYtMjIuNzg2IDAtNDEuMDQyIDE1LjY2LTQ4LjQ2NCAzNi40ODhoLTMyMC4zNzFjLTQuMTQyIDAtNy41IDMuMzU3LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVoMzI3Ljc4N2M1LjQ0NSAwIDkuODc1IDQuNDMgOS44NzUgOS44NzVzLTQuNDMxIDkuODc1LTkuODc2IDkuODc1aC00MzYuOTA2YzMuMjY1LTExLjM5MSAxMy43NzUtMTkuNzUgMjYuMi0xOS43NWg1Mi45MTljNC4xNDIgMCA3LjUtMy4zNTcgNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjVoLTQ0Ljk0NGM2Mi40NjItMTExLjU5OCAxNzEuOTAzLTE3Ny4wMjcgMjk0Ljc3OC0yMDUuNDg2IDQuMDM1LS45MzUgNi41NDktNC45NjMgNS42MTQtOC45OTktLjkzNC00LjAzNS00Ljk2NC02LjU0OS04Ljk5OS01LjYxNC03MS42MzIgMTYuNTk5LTE0My41OTMgNDcuMDUxLTIwMS40NzMgOTIuNjA2bC0xMC4wNzEtMTAuMDdjLTguNjM1LTguNzUyLTIzLjE1OS04LjY3OC0zMS44MjYtLjAxLTguNjMxIDguNjMyLTguNzI4IDIzLjE2NiAwIDMxLjgwN2w4LjA1MSA4LjA1MWMtMjkuNDY3IDI4Ljk1OS01NC4xMDIgNjIuMzItNzQuMDQyIDk4LjkyLTE4LjQ4NyA0LjUwMi0zMi4yNTYgMjEuMTkxLTMyLjI1NiA0MS4wNDUgMCA0LjE0MyAzLjM1OCA3LjUgNy41IDcuNWg0NDUuNDU1YzEzLjcxNiAwIDI0Ljg3NS0xMS4xNTkgMjQuODc1LTI0Ljg3NSAwLTEwLjc1LTYuODU1LTE5LjkyNy0xNi40MjQtMjMuMzk1IDUuMjYzLTEzLjU3MyAxNy45MDMtMjIuOTY5IDMyLjU5OC0yMi45NjkgMTEuNDgzIDAgMjAuMzAyLTExLjQwMSAxNy40MTEtMjIuNTEtLjAxOC0uMDcxLS4wMzgtLjE0Mi0uMDU4LS4yMTFsLTQ1Ljg1Ny0xNTcuMzkxIDkuMTYzLTkuMTU2YzcuMzU5LTcuMzAzIDguNjQ0LTE5LjA5MyAzLjE5Ny0yNy43NjJsMjIuMTE1LTI2LjU5M2M3Ljc1NC05LjMxOCAxMi4wMjUtMjEuMTMyIDEyLjAyNS0zMy4yNjh6bS00MDMuMTQ2IDE3MS40MTNjMS40Mi0xLjQyMSAzLjMwNS0yLjIwMyA1LjMwNy0yLjIwMyAxLjk5OSAwIDMuODc3Ljc3OSA1LjI5NiAyLjIwNGw5LjAxNCA5LjAxNGMtMy44MjUgMy4yNDMtNy41ODIgNi41NTEtMTEuMjc0IDkuOTIybC04LjM0NC04LjM0NGMtMi45Mi0yLjkyLTIuOTItNy42NzIuMDAxLTEwLjU5M3ptMzU1LjIwNS05NC4zOTgtMy45ODYgMy45ODNjLTIuNDk2LTQuNDYxLTYuMDM3LTguMjAzLTEwLjIzMy0xMC45NjFsMy42MTktMy42MTljMi45MjYtMi45MiA3LjY4LTIuOTIyIDEwLjU5OC0uMDA0IDEuNDIxIDEuNDIxIDIuMjAzIDMuMzAyIDIuMjAzIDUuMjk3IDAgMi0uNzgyIDMuODg1LTIuMjAxIDUuMzA0em0tMjE1Ljc2NSA5NC43NjRjLTEzLjgyNCA3LjY1My0yMi40MTIgMjIuMjM1LTIyLjQxMiAzOC4wNTYgMCAxMS45ODcgNS4wMTkgMjMuNTYzIDEzLjc3MSAzMS43NTggOC4wNjYgNy41NTMgMTguNzg4IDExLjc1NiAyOS43ODYgMTEuNzU1Ljk0IDAgMTUxLjA4LTkuODM4IDE1MS4wOC05LjgzOCA2LjkxMS0uNDU0IDEzLjIyNS0zLjkxNiAxNy4zMjItOS40OTggNC4wOTYtNS41NzkgNS41MDctMTIuNjM3IDMuODcyLTE5LjM2MmwtMTkuNTM4LTgwLjMyM2MtMy4wMTctMTIuNDA0LTE1LjE4My0yMC4wMTMtMjcuNjkzLTE3LjMyOS0zMC4wOTQgNi40NjYtNTkuNzg3IDE1LjU5NC04OC4yNTYgMjcuMTMtMTkuNzY4IDguMDEtMzkuMjU5IDE3LjMxMy01Ny45MzIgMjcuNjUxem0xMDcuMjY2IDYwLjk2OS02Ny40MyA0LjQzM3YtMTcuNjgxYzAtLjIzOC4yMDItLjQ0LjQ0LS40NGg2Ni41NWMuMjQzIDAgLjQ0LjE5Ny40NC40NHptNDIuMDcxLTEwMS4wODVjLjYxMy0uMTMyIDEuMjIzLS4xOTUgMS44MjMtLjE5NSAzLjgxNCAwIDcuMjEgMi41NTkgOC4xNDUgNi40MDNsMTkuNTM4IDgwLjMyM2MuNTk1IDIuNDQ2LjEwMiA0LjkxMS0xLjM4OCA2Ljk0LTEuNDkyIDIuMDMyLTMuNjk5IDMuMjQyLTYuMjE1IDMuNDA4bC00OC45NzQgMy4yMTl2LTEyLjI2MWMwLTguNTE0LTYuOTI2LTE1LjQ0LTE1LjQ0LTE1LjQ0aC02Ni41NWMtOC41MTQgMC0xNS40NCA2LjkyNy0xNS40NCAxNS40NHYxOC42NjdsLTEuODUuMTIyYy03Ljk1Ny41MTgtMTUuNTUyLTIuMTkyLTIxLjM3NS03LjY0NS01LjgxOS01LjQ0OS05LjAyNC0xMi44MzktOS4wMjQtMjAuODA5IDAtMTAuMzY3IDUuNjI0LTE5LjkyMSAxNC42NzctMjQuOTMzIDE4LjE0OC0xMC4wNDcgMzcuMDktMTkuMDg4IDU2LjMwMS0yNi44NzMgMjcuNjY2LTExLjIxMSA1Ni41MjUtMjAuMDgzIDg1Ljc3Mi0yNi4zNjZ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Lxe="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDM1LjIgMzI0LjI2N2gtMTAuOTA2Yy0zLjAyNC01LjI2My04LjYyNC04LjUxNS0xNC42OTQtOC41MzN2LTE3LjA2N2MwLTkuNDI2LTcuNjQxLTE3LjA2Ny0xNy4wNjctMTcuMDY3aC0xNy4wNjdjLTkuNDI2IDAtMTcuMDY3IDcuNjQxLTE3LjA2NyAxNy4wNjd2MTcuMDY3Yy02LjA3LjAxOC0xMS42NyAzLjI3LTE0LjY5NCA4LjUzM2gtMjMyLjc3MmMtMTQuMTM4IDAtMjUuNi0xMS40NjItMjUuNi0yNS42czExLjQ2Mi0yNS42IDI1LjYtMjUuNmgzNi41MDZjMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDYyLjEwNmMxNC4xMzggMCAyNS42LTExLjQ2MiAyNS42LTI1LjZzLTExLjQ2Mi0yNS42LTI1LjYtMjUuNmgtNjIuMTA2Yy0zLjAyNC01LjI2My04LjYyNC04LjUxNS0xNC42OTQtOC41MzN2LTE3LjA2N2MwLTkuNDI2LTcuNjQxLTE3LjA2Ny0xNy4wNjctMTcuMDY3aC0xNy4wNjZjLTkuNDI2IDAtMTcuMDY3IDcuNjQxLTE3LjA2NyAxNy4wNjd2MTcuMDY3Yy02LjA3LjAxOC0xMS42NyAzLjI3LTE0LjY5NCA4LjUzM2gtMzYuNTA2Yy00Mi40MTUgMC03Ni44IDM0LjM4NS03Ni44IDc2LjhzMzQuMzg1IDc2LjggNzYuOCA3Ni44aDIzMi43NzJjMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDEwLjkwN2MxNC4xMzggMCAyNS42IDExLjQ2MiAyNS42IDI1LjZzLTExLjQ2MiAyNS42LTI1LjYgMjUuNmgtMzA5LjU3MmMtMy4wMjQtNS4yNjMtOC42MjQtOC41MTUtMTQuNjk0LTguNTMzdi0xNy4wNjdjMC05LjQyNi03LjY0MS0xNy4wNjctMTcuMDY3LTE3LjA2N2gtMTcuMDY3Yy05LjQyNiAwLTE3LjA2NyA3LjY0MS0xNy4wNjcgMTcuMDY3djE3LjA2N2MtNi4wNy4wMTgtMTEuNjcgMy4yNy0xNC42OTQgOC41MzNoLTE5LjQzOWMtMTQuMTM4IDAtMjUuNiAxMS40NjItMjUuNiAyNS42czExLjQ2MiAyNS42IDI1LjYgMjUuNmgxOS40MzljMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDMwOS41NzNjNDIuNDE1IDAgNzYuOC0zNC4zODUgNzYuOC03Ni44cy0zNC4zODUtNzYuOC03Ni44LTc2Ljh6bS01OS43MzMtMjUuNmgxNy4wNjd2MTcuMDY3aC0xNy4wNjd6bS03Ni44LTUxLjJjMCA0LjcxMy0zLjgyMSA4LjUzMy04LjUzMyA4LjUzM2gtNTkuNzM0di0xNy4wNjdoNTkuNzMzYzQuNzEzIDAgOC41MzQgMy44MjEgOC41MzQgOC41MzR6bS0xMTkuNDY3LTUxLjJoMTcuMDY3djE3LjA2N2gtMTcuMDY3em0tOC41MzMgMzQuMTMzaDQyLjY2N3YzNC4xMzNoLTUxLjJ2LTM0LjEzM3ptLTExOS40NjcgNjguMjY3Yy4wMzgtMzIuOTc0IDI2Ljc1OS01OS42OTYgNTkuNzMzLTU5LjczM2gzNC4xMzN2MTcuMDY2aC0zNC4xMzNjLTIzLjU2NCAwLTQyLjY2NyAxOS4xMDMtNDIuNjY3IDQyLjY2N3MxOS4xMDMgNDIuNjY3IDQyLjY2NyA0Mi42NjdoMjMwLjR2MTcuMDY2aC0yMzAuNGMtMzIuOTc0LS4wMzgtNTkuNjk1LTI2Ljc1OS01OS43MzMtNTkuNzMzem0zMDcuMiA2OC4yNjZ2LTM0LjEzM2g1MS4ydjM0LjEzM3ptLTI4MS42IDM0LjEzNGgxNy4wNjd2MTcuMDY3aC0xNy4wNjd6bS01OS43MzMgNTEuMmMwLTQuNzEzIDMuODIxLTguNTMzIDguNTMzLTguNTMzaDE3LjA2N3YxNy4wNjZoLTE3LjA2N2MtNC43MTMgMC04LjUzMy0zLjgyLTguNTMzLTguNTMzem00Mi42NjYgMTcuMDY2di0zNC4xMzNoNTEuMnYzNC4xMzN6bTM3NS40NjctOC41MzNoLTMwNy4ydi0xNy4wNjdoMzA3LjJjMjMuNTY0IDAgNDIuNjY3LTE5LjEwMyA0Mi42NjctNDIuNjY3cy0xOS4xMDMtNDIuNjY3LTQyLjY2Ny00Mi42NjdoLTguNTMzdi0xNy4wNjdoOC41MzNjMzIuOTkgMCA1OS43MzMgMjYuNzQ0IDU5LjczMyA1OS43MzNzLTI2Ljc0MyA1OS43MzUtNTkuNzMzIDU5LjczNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4Ny43MzMgMTYyLjEzM2M0LjcxMyAwIDguNTMzLTMuODIxIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyMS04LjUzMy04LjUzMy04LjUzMy00LjcxMyAwLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEzIDMuODIxIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg3LjczMyAxMTAuOTMzYzQuNzEzIDAgOC41MzMtMy44MjEgOC41MzMtOC41MzN2LTE3LjA2N2MwLTQuNzEzLTMuODIxLTguNTMzLTguNTMzLTguNTMzLTQuNzEzIDAtOC41MzMgMy44MjEtOC41MzMgOC41MzN2MTcuMDY3YzAgNC43MTMgMy44MjEgOC41MzMgOC41MzMgOC41MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xODcuNzMzIDU5LjczM2M0LjcxMyAwIDguNTMzLTMuODIxIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyMS04LjUzMy04LjUzMy04LjUzMy00LjcxMyAwLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEzIDMuODIxIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTU0Ljc0MyAxNTcuODY3YzEuNTEzIDIuNjYyIDQuMzM3IDQuMzA5IDcuMzk5IDQuMzE2czUuODkzLTEuNjI4IDcuNDE4LTQuMjgzIDEuNTExLTUuOTI0LS4wMzgtOC41NjZsLTguNTMzLTE0Ljc4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI5LjE0MyAxMTMuNDkzYzEuNTEzIDIuNjYyIDQuMzM3IDQuMzA5IDcuMzk5IDQuMzE2czUuODkzLTEuNjI4IDcuNDE4LTQuMjgzIDEuNTExLTUuOTI0LS4wMzgtOC41NjZsLTguNTMzLTE0Ljc4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAzLjU0MyA2OS4xODhjMi4zNzIgNC4wNDcgNy41NjYgNS40MiAxMS42MjggMy4wNzQgNC4wNjItMi4zNDUgNS40Ny03LjUzIDMuMTUxLTExLjYwOGwtOC41MzMtMTQuNzg4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjA5LjA2NyAxNjAuOTljNC4wODEgMi4zNTYgOS4zLjk1OCAxMS42NTctMy4xMjNsOC41MzMtMTQuNzhjMS41NDktMi42NDIgMS41NjMtNS45MTEuMDM4LTguNTY2cy00LjM1Ni00LjI5LTcuNDE4LTQuMjgzLTUuODg2IDEuNjU0LTcuMzk5IDQuMzE2bC04LjUzMyAxNC43OGMtMi4zNTggNC4wODEtLjk2IDkuMjk5IDMuMTIyIDExLjY1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzNC42NjcgMTE2LjY1MWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43OGMxLjU0OS0yLjY0MiAxLjU2My01LjkxMS4wMzgtOC41NjZzLTQuMzU2LTQuMjktNy40MTgtNC4yODMtNS44ODYgMS42NTQtNy4zOTkgNC4zMTZsLTguNTMzIDE0Ljc4Yy0yLjM1OCA0LjA4LS45NiA5LjI5OSAzLjEyMiAxMS42NTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjAuMjY3IDcyLjMxMWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43ODhjMS41NDktMi42NDIgMS41NjMtNS45MTEuMDM4LTguNTY2cy00LjM1Ni00LjI5LTcuNDE4LTQuMjgzLTUuODg2IDEuNjU0LTcuMzk5IDQuMzE2bC04LjUzMyAxNC43ODhjLTIuMzU4IDQuMDgxLS45NiA5LjMgMy4xMjIgMTEuNjU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzg0IDI3My4wNjdjNC43MTMgMCA4LjUzMy0zLjgyIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyLTguNTMzLTguNTMzLTguNTMzcy04LjUzMyAzLjgyMS04LjUzMyA4LjUzM3YxNy4wNjdjMCA0LjcxMiAzLjgyIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzg0IDIyMS44NjdjNC43MTMgMCA4LjUzMy0zLjgyMSA4LjUzMy04LjUzM3YtMTcuMDY3YzAtNC43MTMtMy44Mi04LjUzMy04LjUzMy04LjUzM3MtOC41MzMgMy44MjEtOC41MzMgOC41MzN2MTcuMDY3YzAgNC43MTIgMy44MiA4LjUzMyA4LjUzMyA4LjUzM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAxNzAuNjY3YzQuNzEzIDAgOC41MzMtMy44MjEgOC41MzMtOC41MzN2LTE3LjA2N2MwLTQuNzEzLTMuODItOC41MzMtOC41MzMtOC41MzNzLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEyIDMuODIgOC41MzMgOC41MzMgOC41MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNTEuMDEgMjY4LjhjMi4zNzIgNC4wNDcgNy41NjYgNS40MiAxMS42MjggMy4wNzQgNC4wNjItMi4zNDUgNS40Ny03LjUzIDMuMTUxLTExLjYwOGwtOC41MzMtMTQuNzhjLTEuNTE0LTIuNjYyLTQuMzM3LTQuMzA5LTcuMzk5LTQuMzE2cy01Ljg5MyAxLjYyOC03LjQxOCA0LjI4My0xLjUxMSA1LjkyNC4wMzggOC41NjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjUuNDEgMjI0LjQyN2MxLjUxNCAyLjY2MiA0LjMzNyA0LjMwOSA3LjM5OSA0LjMxNnM1Ljg5My0xLjYyOCA3LjQxOC00LjI4MyAxLjUxMS01LjkyNC0uMDM4LTguNTY2bC04LjUzMy0xNC43OGMtMS41MTQtMi42NjItNC4zMzctNC4zMDktNy4zOTktNC4zMTZzLTUuODkzIDEuNjI4LTcuNDE4IDQuMjgzLTEuNTExIDUuOTI0LjAzOCA4LjU2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5OS44MSAxODAuMTIyYzIuMzcyIDQuMDQ3IDcuNTY2IDUuNDIgMTEuNjI4IDMuMDc0IDQuMDYyLTIuMzQ1IDUuNDctNy41MyAzLjE1MS0xMS42MDhsLTguNTMzLTE0Ljc4OGMtMS41MTMtMi42NjItNC4zMzctNC4zMDktNy4zOTktNC4zMTZzLTUuODkzIDEuNjI4LTcuNDE4IDQuMjgzLTEuNTExIDUuOTI0LjAzOCA4LjU2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwNS4zMzMgMjcxLjkyM2M0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43OGMyLjMxOC00LjA3OC45MTEtOS4yNjItMy4xNTEtMTEuNjA4LTQuMDYyLTIuMzQ1LTkuMjU2LS45NzItMTEuNjI4IDMuMDc0bC04LjUzMyAxNC43OGMtMi4zNTcgNC4wODItLjk1OSA5LjMwMSAzLjEyMiAxMS42NTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzAuOTMzIDIyNy41ODRjNC4wODEgMi4zNTYgOS4zLjk1OCAxMS42NTctMy4xMjNsOC41MzMtMTQuNzhjMi4zMTgtNC4wNzguOTExLTkuMjYyLTMuMTUxLTExLjYwOHMtOS4yNTYtLjk3Mi0xMS42MjggMy4wNzRsLTguNTMzIDE0Ljc4Yy0yLjM1NyA0LjA4Mi0uOTU5IDkuMzAxIDMuMTIyIDExLjY1N3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1Ni41MzMgMTgzLjI0NWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43ODhjMi4zMTgtNC4wNzguOTExLTkuMjYyLTMuMTUxLTExLjYwOC00LjA2Mi0yLjM0NS05LjI1Ni0uOTcyLTExLjYyOCAzLjA3NGwtOC41MzMgMTQuNzg4Yy0yLjM1NyA0LjA4Mi0uOTU5IDkuMyAzLjEyMiAxMS42NTd6Ii8+DQogICAgPC9nPg0KPC9zdmc+",gxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4wMDIgNTEyLjAwMiIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzk4LjU4OSAyNDYuMzQyYy02NC42NjYtMTcuMzI4LTExNS42MDEtNjguMjY0LTEzMi45MjktMTMyLjkyOS0xLjE3MS00LjM3Mi01LjEzMy03LjQxMi05LjY1OS03LjQxMnMtOC40ODggMy4wNC05LjY1OSA3LjQxMmMtMTcuMzI4IDY0LjY2Ni02OC4yNjMgMTE1LjYwMS0xMzIuOTI5IDEzMi45MjktNC4zNzIgMS4xNzEtNy40MTIgNS4xMzMtNy40MTIgOS42NTlzMy4wNCA4LjQ4OCA3LjQxMiA5LjY1OWM2NC42NjYgMTcuMzI5IDExNS42MDEgNjguMjY0IDEzMi45MjkgMTMyLjkyOSAxLjE3MSA0LjM3MiA1LjEzMyA3LjQxMiA5LjY1OSA3LjQxMnM4LjQ4OC0zLjA0IDkuNjU5LTcuNDEyYzE3LjMyOC02NC42NjUgNjguMjY0LTExNS42MDEgMTMyLjkyOS0xMzIuOTI5IDQuMzcyLTEuMTcxIDcuNDEyLTUuMTMzIDcuNDEyLTkuNjU5cy0zLjA0LTguNDg4LTcuNDEyLTkuNjU5em0tMTQyLjU4OCAxMTkuMTc2Yy0yMS4wMzktNDkuMDk2LTYwLjQyLTg4LjQ3OC0xMDkuNTE2LTEwOS41MTcgNDkuMDk2LTIxLjAzOSA4OC40NzgtNjAuNDIgMTA5LjUxNi0xMDkuNTE3IDIxLjAzOSA0OS4wOTcgNjAuNDIgODguNDc4IDEwOS41MTcgMTA5LjUxNy00OS4wOTcgMjEuMDM5LTg4LjQ3OCA2MC40Mi0xMDkuNTE3IDEwOS41MTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjQuMDM2IDIwMC40NThjLTEuODg2LTIuNTQ1LTQuODY3LTQuMDQ3LTguMDM1LTQuMDQ3cy02LjE0OSAxLjUwMS04LjAzNSA0LjA0N2MtMTMuNDE2IDE4LjEwNy0yOS40IDM0LjA5MS00Ny41MDggNDcuNTA4LTIuNTQ1IDEuODg2LTQuMDQ3IDQuODY3LTQuMDQ3IDguMDM1czEuNTAxIDYuMTQ5IDQuMDQ3IDguMDM1YzE4LjEwOCAxMy40MTYgMzQuMDkyIDI5LjQgNDcuNTA4IDQ3LjUwOCAxLjg4NiAyLjU0NSA0Ljg2NyA0LjA0NyA4LjAzNSA0LjA0N3M2LjE0OS0xLjUwMSA4LjAzNS00LjA0N2MxMy40MTYtMTguMTA4IDI5LjQtMzQuMDkyIDQ3LjUwOC00Ny41MDggMi41NDUtMS44ODYgNC4wNDctNC44NjcgNC4wNDctOC4wMzVzLTEuNTAxLTYuMTQ5LTQuMDQ3LTguMDM1Yy0xOC4xMDgtMTMuNDE3LTM0LjA5Mi0yOS40MDEtNDcuNTA4LTQ3LjUwOHptLTguMDM1IDg4LjkwOWMtMTAuMDQtMTIuMTYyLTIxLjIwNC0yMy4zMjYtMzMuMzY2LTMzLjM2NiAxMi4xNjMtMTAuMDQgMjMuMzI2LTIxLjIwNCAzMy4zNjYtMzMuMzY2IDEwLjA0IDEyLjE2MyAyMS4yMDQgMjMuMzI2IDMzLjM2NiAzMy4zNjYtMTIuMTYyIDEwLjA0LTIzLjMyNiAyMS4yMDQtMzMuMzY2IDMzLjM2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1Ni4wMDEgNzUuOTk5YzUuNTIzIDAgMTAtNC40NzcgMTAtMTB2LTU1Ljk5OWMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHY1NS45OTljMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExNC41NzkgMTI4LjcyMWMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOS0uOTc2IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0M2wtMzkuNTk3LTM5LjU5OGMtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MyAwcy0zLjkwNSAxMC4yMzcgMCAxNC4xNDN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im03NiAyNTYuMDAxYzAtNS41MjMtNC40NzctMTAtMTAtMTBoLTU2Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwczQuNDc3IDEwIDEwIDEwaDU2YzUuNTIyIDAgMTAtNC40NzcgMTAtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTQuNTc5IDM4My4yODEtMzkuNTk4IDM5LjU5OGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQzIDEuOTUzIDEuOTUzIDQuNTEyIDIuOTI5IDcuMDcxIDIuOTI5czUuMTE5LS45NzYgNy4wNzEtMi45MjlsMzkuNTk4LTM5LjU5OGMzLjkwNS0zLjkwNSAzLjkwNS0xMC4yMzcgMC0xNC4xNDNzLTEwLjIzNy0zLjkwNi0xNC4xNDIgMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1Ni4wMDEgNDM2LjAwM2MtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHY1NS45OTljMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtNTUuOTk5YzAtNS41MjMtNC40NzctMTAtMTAtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zOTcuNDI0IDM4My4yODFjLTMuOTA1LTMuOTA0LTEwLjIzNi0zLjkwNC0xNC4xNDMgMC0zLjkwNSAzLjkwNS0zLjkwNSAxMC4yMzcgMCAxNC4xNDNsMzkuNTk3IDM5LjU5OGMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOS0uOTc3IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0M3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwMi4wMDIgMjQ2LjAwMWgtNTUuOTk5Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwczQuNDc3IDEwIDEwIDEwaDU1Ljk5OWM1LjUyMyAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM5MC4zNTMgMTMxLjY0OWMyLjU1OSAwIDUuMTE5LS45NzYgNy4wNzEtMi45MjlsMzkuNTk3LTM5LjU5OGMzLjkwNS0zLjkwNSAzLjkwNS0xMC4yMzcgMC0xNC4xNDNzLTEwLjIzNy0zLjkwNS0xNC4xNDMgMGwtMzkuNTk3IDM5LjU5OGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQzIDEuOTUzIDEuOTUzIDQuNTEyIDIuOTI5IDcuMDcyIDIuOTI5eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYxLjg2OCAzOC43MzVjMS4zMTQgMCAyLjY1LS4yNjEgMy45MzQtLjgxMSA1LjA3Ny0yLjE3NSA3LjQyOC04LjA1NCA1LjI1Mi0xMy4xM2wtLjAwMy0uMDA3Yy0yLjE3NS01LjA3Ni04LjA1MS03LjQyMy0xMy4xMjktNS4yNDktNS4wNzYgMi4xNzUtNy40MjYgOC4wNTgtNS4yNSAxMy4xMzQgMS42MjUgMy43OTIgNS4zMTYgNi4wNjMgOS4xOTYgNi4wNjN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjkuODQ0IDc0LjEzMSAxMy4wNTQgMzEuNTE0YzEuNTk1IDMuODUxIDUuMzE4IDYuMTc1IDkuMjQzIDYuMTc1IDEuMjc1IDAgMi41NzItLjI0NSAzLjgyMy0uNzY0IDUuMTAyLTIuMTE0IDcuNTI1LTcuOTYzIDUuNDEyLTEzLjA2NmwtMTMuMDU0LTMxLjUxNGMtMi4xMTQtNS4xMDMtNy45NjMtNy41MjctMTMuMDY2LTUuNDEycy03LjUyNiA3Ljk2NC01LjQxMiAxMy4wNjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNC41NDIgMTcwLjk0M2MxLjM1Ny42MjYgMi43ODIuOTIzIDQuMTg0LjkyMyAzLjc4IDAgNy4zOTgtMi4xNTQgOS4wODYtNS44MTIgMi4zMTQtNS4wMTQuMTI1LTEwLjk1Ni00Ljg4OS0xMy4yN2wtLjAwNi0uMDAzYy01LjAxMy0yLjMxNS0xMC45NTItLjEyNS0xMy4yNjcgNC44OTEtMi4zMTYgNS4wMTQtLjEyMyAxMC45NTYgNC44OTIgMTMuMjcxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjYuNDc3IDE4OC4zMjEgMzEuNTE1IDEzLjA1NGMxLjI1MS41MTkgMi41NDcuNzY0IDMuODIzLjc2NCAzLjkyNCAwIDcuNjQ3LTIuMzI1IDkuMjQzLTYuMTc2IDIuMTE0LTUuMTAzLS4zMS0xMC45NTItNS40MTItMTMuMDY1bC0zMS41MTYtMTMuMDU0Yy01LjEwMS0yLjExMy0xMC45NTIuMzEtMTMuMDY1IDUuNDEyLTIuMTE0IDUuMTAyLjMxIDEwLjk1MiA1LjQxMiAxMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDUuNjQ1IDMyOS4xMDRjNS4xMDMtMi4xMTMgNy41MjYtNy45NjMgNS40MTItMTMuMDY1LTIuMTEzLTUuMTAzLTcuOTY0LTcuNTI3LTEzLjA2NS01LjQxMmwtMzEuNTE0IDEzLjA1NGMtNS4xMDMgMi4xMTMtNy41MjYgNy45NjMtNS40MTIgMTMuMDY1IDEuNTk1IDMuODUyIDUuMzE4IDYuMTc2IDkuMjQzIDYuMTc2IDEuMjc1IDAgMi41NzItLjI0NSAzLjgyMy0uNzY0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQuNzkzIDM0MC45NDctLjAwNy4wMDNjLTUuMDc2IDIuMTc1LTcuNDI0IDguMDUzLTUuMjQ5IDEzLjEyOSAxLjYyNSAzLjc5MiA1LjMxNyA2LjA2MiA5LjE5OCA2LjA2MiAxLjMxNSAwIDIuNjUyLS4yNjEgMy45MzYtLjgxMiA1LjA3Ny0yLjE3NSA3LjQyOC04LjA1NCA1LjI1Mi0xMy4xMzEtMi4xNzQtNS4wNzUtOC4wNTMtNy40MjYtMTMuMTMtNS4yNTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjYuMDU0IDQ3NC4xOWMtNS4wMTUtMi4zMTUtMTAuOTU2LS4xMjUtMTMuMjcgNC44ODlsLS4wMDMuMDA2Yy0yLjMxNCA1LjAxNC0uMTI0IDEwLjk1MyA0Ljg5MSAxMy4yNjcgMS4zNTYuNjI2IDIuNzguOTIyIDQuMTgyLjkyMiAzLjc4MSAwIDcuNDAxLTIuMTU2IDkuMDg5LTUuODE0IDIuMzE0LTUuMDE0LjEyNS0xMC45NTUtNC44ODktMTMuMjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTUuOTYzIDQwMC45NDVjLTUuMTAxLTIuMTE0LTEwLjk1Mi4zMS0xMy4wNjUgNS40MTJsLTEzLjA1NCAzMS41MTVjLTIuMTE0IDUuMTAzLjMxIDEwLjk1MiA1LjQxMiAxMy4wNjUgMS4yNTEuNTE5IDIuNTQ3Ljc2NCAzLjgyMy43NjQgMy45MjQgMCA3LjY0Ny0yLjMyNSA5LjI0My02LjE3NmwxMy4wNTQtMzEuNTE1YzIuMTEzLTUuMTAyLS4zMTEtMTAuOTUyLTUuNDEzLTEzLjA2NXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0Ni4xOTkgNDc0LjA3OGMtNS4wNzYgMi4xNzUtNy40MjggOC4wNTQtNS4yNTIgMTMuMTNsLjAwMy4wMDdjMS42MjUgMy43OTEgNS4zMTQgNi4wNiA5LjE5MiA2LjA2IDEuMzE1IDAgMi42NTEtLjI2MSAzLjkzNy0uODEyIDUuMDc2LTIuMTc1IDcuNDI2LTguMDU4IDUuMjUtMTMuMTM0LTIuMTc0LTUuMDc2LTguMDUxLTcuNDI2LTEzLjEzLTUuMjUxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQyLjE1OCA0MzcuODcxLTEzLjA1NC0zMS41MTRjLTIuMTE0LTUuMTAzLTcuOTY1LTcuNTI3LTEzLjA2NS01LjQxMi01LjEwMyAyLjExMy03LjUyNiA3Ljk2My01LjQxMiAxMy4wNjVsMTMuMDU0IDMxLjUxNGMxLjU5NSAzLjg1MiA1LjMxOCA2LjE3NiA5LjI0MyA2LjE3NiAxLjI3NSAwIDIuNTcyLS4yNDUgMy44MjMtLjc2NCA1LjEwMi0yLjExMiA3LjUyNS03Ljk2MiA1LjQxMS0xMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00ODcuMjA4IDM0MC45NDdjLTUuMDc2LTIuMTc3LTEwLjk1NS4xNzctMTMuMTMgNS4yNTItMi4xNzYgNS4wNzcuMTc2IDEwLjk1NiA1LjI1MiAxMy4xMzFsLjAwNi4wMDNjMS4yODUuNTUgMi42MTkuODExIDMuOTMzLjgxMSAzLjg3OSAwIDcuNTY5LTIuMjcyIDkuMTk0LTYuMDY0IDIuMTc3LTUuMDc3LS4xNzgtMTAuOTU3LTUuMjU1LTEzLjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0NS41MjUgMzIzLjY4MS0zMS41MTQtMTMuMDU0Yy01LjEwMi0yLjExMy0xMC45NTEuMzEtMTMuMDY1IDUuNDEycy4zMSAxMC45NTIgNS40MTIgMTMuMDY1bDMxLjUxNCAxMy4wNTRjMS4yNTIuNTE5IDIuNTQ4Ljc2NCAzLjgyMy43NjQgMy45MjQgMCA3LjY0Ny0yLjMyNSA5LjI0My02LjE3NiAyLjExMy01LjEwMi0uMzExLTEwLjk1Mi01LjQxMy0xMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00ODMuMjc0IDE3MS44NjZjMS4zMTQgMCAyLjY1LS4yNjEgMy45MzQtLjgxMWwuMDA3LS4wMDNjNS4wNzYtMi4xNzUgNy40MjQtOC4wNTMgNS4yNDktMTMuMTI5cy04LjA2LTcuNDI3LTEzLjEzNC01LjI1Yy01LjA3NyAyLjE3NS03LjQyOCA4LjA1NC01LjI1MiAxMy4xMzEgMS42MjUgMy43OTEgNS4zMTYgNi4wNjIgOS4xOTYgNi4wNjJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MDYuMzU3IDE4Mi44OTdjLTUuMTAzIDIuMTEzLTcuNTI2IDcuOTYzLTUuNDEyIDEzLjA2NSAxLjU5NSAzLjg1MiA1LjMxOCA2LjE3NiA5LjI0MyA2LjE3NiAxLjI3NSAwIDIuNTcyLS4yNDUgMy44MjMtLjc2NGwzMS41MTQtMTMuMDU0YzUuMTAzLTIuMTEzIDcuNTI2LTcuOTYzIDUuNDEyLTEzLjA2NS0yLjExNC01LjEwMy03Ljk2My03LjUyNy0xMy4wNjYtNS40MTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNDYuMTk5IDM3LjkyM2MxLjI4NS41NTEgMi42MjEuODExIDMuOTM1LjgxMSAzLjg4IDAgNy41NzEtMi4yNzEgOS4xOTYtNi4wNjNsLjAwMy0uMDA3YzIuMTc2LTUuMDc2LS4xNzctMTAuOTUyLTUuMjUzLTEzLjEyNy01LjA3NC0yLjE3Ni0xMC45NTcuMTc5LTEzLjEzMiA1LjI1Ni0yLjE3NyA1LjA3Ni4xNzUgMTAuOTU1IDUuMjUxIDEzLjEzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzE2LjAzOSAxMTEuMDU3YzEuMjUxLjUxOSAyLjU0Ny43NjQgMy44MjMuNzY0IDMuOTI0IDAgNy42NDctMi4zMjUgOS4yNDMtNi4xNzZsMTMuMDU0LTMxLjUxNGMyLjExNC01LjEwMy0uMzEtMTAuOTUzLTUuNDEyLTEzLjA2Ni01LjEwMS0yLjExNC0xMC45NTEuMzEtMTMuMDY1IDUuNDEybC0xMy4wNTQgMzEuNTE0Yy0yLjExNSA1LjEwMi4zMDkgMTAuOTUyIDUuNDExIDEzLjA2NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",jxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MC4wMDUgNDgwLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTI0MC4wMDMsNDhjNC40MTgsMCw4LTMuNTgyLDgtOFY4YzAtNC40MTgtMy41ODItOC04LThzLTgsMy41ODItOCw4djMyQzIzMi4wMDMsNDQuNDE4LDIzNS41ODQsNDgsMjQwLjAwMyw0OHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE0MS4wNzUsMzYuNjU2bDE2LDI3LjcwNGMyLjE4NCwzLjg0MSw3LjA2OCw1LjE4NCwxMC45MDksM3M1LjE4NC03LjA2OCwzLTEwLjkwOWMtMC4wMTctMC4wMzEtMC4wMzUtMC4wNjEtMC4wNTMtMC4wOTINCgkJCQlsLTE2LTI3LjcwNGMtMi4xODQtMy44NDEtNy4wNjgtNS4xODQtMTAuOTA5LTNjLTMuODQxLDIuMTg0LTUuMTg0LDcuMDY4LTMsMTAuOTA5QzE0MS4wMzksMzYuNTk1LDE0MS4wNTcsMzYuNjI2LDE0MS4wNzUsMzYuNjU2DQoJCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNzYuNTY3LDEwNi44NzVjMC4wMywwLjAxOCwwLjA2MSwwLjAzNSwwLjA5MiwwLjA1M2wyNy43MDQsMTZjMy44MTIsMi4yMzQsOC43MTMsMC45NTYsMTAuOTQ3LTIuODU2DQoJCQkJYzIuMjM0LTMuODEyLDAuOTU2LTguNzEzLTIuODU2LTEwLjk0N2MtMC4wMy0wLjAxOC0wLjA2MS0wLjAzNS0wLjA5Mi0wLjA1M2wtMjcuNzA0LTE2Yy0zLjgxMi0yLjIzNC04LjcxMy0wLjk1Ni0xMC45NDcsMi44NTYNCgkJCQlDNzEuNDc3LDk5LjczOSw3Mi43NTUsMTA0LjY0MSw3Ni41NjcsMTA2Ljg3NXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTk2LjAwMywxOTJjMC00LjQxOC0zLjU4Mi04LTgtOGgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJDOTIuNDIxLDIwMCw5Ni4wMDMsMTk2LjQxOCw5Ni4wMDMsMTkyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA0LjQ1NiwyNjEuMDE4Yy0wLjAzMSwwLjAxOC0wLjA2MiwwLjAzNi0wLjA5MywwLjA1NGwtMjcuNzA0LDE2Yy0zLjg0MSwyLjE4My01LjE4NSw3LjA2Ny0zLjAwMiwxMC45MDgNCgkJCQljMi4xODMsMy44NDEsNy4wNjcsNS4xODUsMTAuOTA4LDMuMDAyYzAuMDMxLTAuMDE4LDAuMDYyLTAuMDM2LDAuMDkzLTAuMDU0bDI3LjcwNC0xNmMzLjg0MS0yLjE4Myw1LjE4NS03LjA2NywzLjAwMi0xMC45MDgNCgkJCQlDMTEzLjE4MSwyNjAuMTc5LDEwOC4yOTcsMjU4LjgzNSwxMDQuNDU2LDI2MS4wMTh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MDMuNDQsMjc3LjEyNmMtMC4wMzEtMC4wMTgtMC4wNjItMC4wMzYtMC4wOTMtMC4wNTRsLTI3LjcwNC0xNmMtMy44MTEtMi4yMzUtOC43MTMtMC45NTctMTAuOTQ4LDIuODU0DQoJCQkJYy0yLjIzNSwzLjgxMS0wLjk1Nyw4LjcxMywyLjg1NCwxMC45NDhjMC4wMzEsMC4wMTgsMC4wNjIsMC4wMzYsMC4wOTMsMC4wNTRsMjcuNzA0LDE2YzMuODExLDIuMjM1LDguNzEzLDAuOTU3LDEwLjk0OC0yLjg1NA0KCQkJCUM0MDguNTI5LDI4NC4yNjIsNDA3LjI1MSwyNzkuMzYxLDQwMy40NCwyNzcuMTI2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI0LjAwMywxODRoLTMyYy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDMyYzQuNDE4LDAsOC0zLjU4Miw4LThTNDI4LjQyMSwxODQsNDI0LjAwMywxODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNzEuNjUxLDEyNGMxLjQwNCwwLDIuNzg0LTAuMzcsNC0xLjA3MmwyNy43MDQtMTZjMy44NDEtMi4xODQsNS4xODQtNy4wNjgsMy0xMC45MDlzLTcuMDY4LTUuMTg0LTEwLjkwOS0zDQoJCQkJYy0wLjAzMSwwLjAxNy0wLjA2MSwwLjAzNS0wLjA5MiwwLjA1M2wtMjcuNzA0LDE2Yy0zLjgyNiwyLjIwOS01LjEzNyw3LjEwMi0yLjkyOCwxMC45MjgNCgkJCQlDMzY2LjE1MiwxMjIuNDc1LDM2OC43OTMsMTI0LDM3MS42NTEsMTI0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzExLjk5Myw2Ny4yOTFjMC4wMDMsMC4wMDIsMC4wMDYsMC4wMDQsMC4wMDksMC4wMDVjMy44MjcsMi4yMDcsOC43MiwwLjg5NCwxMC45MjctMi45MzQNCgkJCQljMC0wLjAwMSwwLjAwMS0wLjAwMiwwLjAwMS0wLjAwMmwxNi0yNy43MDRjMi4yMzUtMy44MTEsMC45NTctOC43MTMtMi44NTQtMTAuOTQ4Yy0zLjgxMS0yLjIzNS04LjcxMy0wLjk1Ny0xMC45NDgsMi44NTQNCgkJCQljLTAuMDE4LDAuMDMxLTAuMDM2LDAuMDYyLTAuMDU0LDAuMDkzbC0xNiwyNy43MDRDMzA2Ljg2Miw2MC4xODQsMzA4LjE2OSw2NS4wNzgsMzExLjk5Myw2Ny4yOTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNTYuMDAzLDMyMGM0LjQxOCwwLDgtMy41ODIsOC04di04OGgxNmMxNy42NzMsMCwzMi0xNC4zMjcsMzItMzJzLTE0LjMyNy0zMi0zMi0zMmMtMTcuNjczLDAtMzIsMTQuMzI3LTMyLDMydjE2aC0xNg0KCQkJCXYtMTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMycy0zMiwxNC4zMjctMzIsMzJzMTQuMzI3LDMyLDMyLDMyaDE2djg4YzAsNC40MTgsMy41ODIsOCw4LDhzOC0zLjU4Miw4LTh2LTg4aDE2djg4DQoJCQkJQzI0OC4wMDMsMzE2LjQxOCwyNTEuNTg0LDMyMCwyNTYuMDAzLDMyMHogTTI2NC4wMDMsMTkyYzAtOC44MzcsNy4xNjMtMTYsMTYtMTZzMTYsNy4xNjMsMTYsMTZzLTcuMTYzLDE2LTE2LDE2aC0xNlYxOTJ6DQoJCQkJIE0yMTYuMDAzLDIwOGgtMTZjLTguODM3LDAtMTYtNy4xNjMtMTYtMTZzNy4xNjMtMTYsMTYtMTZzMTYsNy4xNjMsMTYsMTZWMjA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjQ2LjIxOSw2NC4xNTJjLTcwLjYxMS0zLjM5Mi0xMzAuNjAzLDUxLjA5OS0xMzMuOTk1LDEyMS43MWMtMS45NDMsNDAuNDMyLDE1LjM1NCw3OS40LDQ2LjY0MywxMDUuMDgyDQoJCQkJYzUuNjM5LDQuNDE3LDguOTk0LDExLjEzNSw5LjEzNiwxOC4yOTZWMzI4YzAuMDQyLDEwLjEzNCw2LjQ0NSwxOS4xNSwxNiwyMi41MjhWMzYwYzAuMDIxLDUuOTIzLDIuMjQ1LDExLjYyNyw2LjI0LDE2DQoJCQkJYy04LjMyLDkuMDQ0LTguMzIsMjIuOTU2LDAsMzJjLTguODk0LDkuNzUtOC4yLDI0Ljg2NCwxLjU1LDMzLjc1OGM0LjQyOSw0LjA0LDEwLjIxNSw2LjI2OCwxNi4yMSw2LjI0Mg0KCQkJCWM0LjMwNiwwLjExMyw3Ljg4OS0zLjI4Nyw4LjAwMS03LjU5M2MwLjA0NC0xLjY4LTAuNDU2LTMuMzMtMS40MjUtNC43MDNjLTAuMjUzLTAuNDg5LTAuNTUzLTAuOTUzLTAuODk2LTEuMzg0DQoJCQkJYy0wLjY1OC0wLjYwMi0xLjQwOS0xLjA5NC0yLjIyNC0xLjQ1NmMtMC4yMzItMC4xMi0wLjQ2NC0wLjIxNi0wLjcwNC0wLjMxMmMtMC44MS0wLjI5NS0xLjY1OS0wLjQ2NS0yLjUyLTAuNTA0DQoJCQkJYy0wLjA4LDAtMC4xNTItMC4wNDgtMC4yMzItMC4wNDhjLTQuNDE4LDAtOC0zLjU4Mi04LThzMy41ODItOCw4LThoMzJjNC40MTgsMCw4LTMuNTgyLDgtOHMtMy41ODItOC04LThoLTMyDQoJCQkJYy00LjQxOCwwLTgtMy41ODItOC04czMuNTgyLTgsOC04aDMyYzQuNDE4LDAsOC0zLjU4Miw4LThzLTMuNTgyLTgtOC04aC0zMmMtNC40MTgsMC04LTMuNTgyLTgtOHYtOGg0MGM0LjQxOCwwLDgtMy41ODIsOC04DQoJCQkJcy0zLjU4Mi04LTgtOGgtNDhjLTQuNDE4LDAtOC0zLjU4Mi04LTh2LTE4Ljc2Yy0wLjEzMS0xMS45NjItNS42NC0yMy4yMy0xNS0zMC42OGMtNDcuNzg4LTM5LjI3NC01NC42ODktMTA5Ljg1Mi0xNS40MTUtMTU3LjY0DQoJCQkJYzIyLjQ2Ni0yNy4zMzYsNTYuNTI4LTQyLjQ0OCw5MS44NzEtNDAuNzZjNTkuMTA3LDMuNTE2LDEwNS41MzYsNTEuOTU3LDEwNi41NDQsMTExLjE2YzAuMjg3LDM0LjA1Mi0xNS4wMjQsNjYuMzYzLTQxLjU2LDg3LjcwNA0KCQkJCWMtOS4yOSw3LjY1Mi0xNC42MDIsMTkuMTA5LTE0LjQ0LDMxLjE0NFYzMjhjMCw0LjQxOC0zLjU4Miw4LTgsOGgtMjRjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMTZ2OA0KCQkJCWMwLDQuNDE4LTMuNTgyLDgtOCw4aC04Yy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDhjNC40MTgsMCw4LDMuNTgyLDgsOHMtMy41ODIsOC04LDhoLThjLTQuNDE4LDAtOCwzLjU4Mi04LDgNCgkJCQlzMy41ODIsOCw4LDhoOGM0LjQxOCwwLDgsMy41ODIsOCw4cy0zLjU4Miw4LTgsOGgtNDBjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzAuNjMyDQoJCQkJYy00LjQxNywxMi40OTctMTguMTI5LDE5LjA0Ny0zMC42MjYsMTQuNjNjLTMuODI2LTEuMzUyLTcuMjQ2LTMuNjUzLTkuOTQyLTYuNjg2Yy0yLjkzOC0zLjMtNy45OTYtMy41OTQtMTEuMjk2LTAuNjU2DQoJCQkJYy0zLjMsMi45MzgtMy41OTQsNy45OTYtMC42NTYsMTEuMjk2YzE0LjYzMSwxNi40ODcsMzkuODU3LDE3Ljk5Miw1Ni4zNDQsMy4zNjJjNi44MS02LjA0MywxMS4zNDktMTQuMjMyLDEyLjg2NC0yMy4yMQ0KCQkJCWMxMi41MjktMy45MTYsMTkuNTExLTE3LjI0NywxNS41OTYtMjkuNzc2Yy0xLjA0LTMuMzI5LTIuODAxLTYuMzg4LTUuMTU2LTguOTZjOC4zMi05LjA0NCw4LjMyLTIyLjk1NiwwLTMyDQoJCQkJYzMuOTk1LTQuMzczLDYuMjE5LTEwLjA3Nyw2LjI0LTE2di05LjQ3MmM5LjU1NS0zLjM3OCwxNS45NTgtMTIuMzk0LDE2LTIyLjUyOHYtMTcuODMyYy0wLjEwNy03LjE4NywzLjAwNy0xNC4wNDYsOC40ODgtMTguNjk2DQoJCQkJYzMwLjM0NC0yNC4zOTUsNDcuODUtNjEuMzM5LDQ3LjUxMi0xMDAuMjcyQzM2Ni44NDcsMTIzLjUzMiwzMTMuNzc3LDY4LjE2OSwyNDYuMjE5LDY0LjE1MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",yxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yNTUuOTk5LDBjLTc5LjA0NCwwLTE0My4zNTIsNjQuMzA4LTE0My4zNTIsMTQzLjM1M3Y3MC4xOTNjMCw0Ljc4LDMuODc5LDguNjU2LDguNjU5LDguNjU2aDQ4LjA1Nw0KCQkJYzQuNzgsMCw4LjY1Ni0zLjg3Niw4LjY1Ni04LjY1NnYtNzAuMTkzYzAtNDIuOTk4LDM0Ljk4MS03Ny45OCw3Ny45NzktNzcuOThzNzcuOTc5LDM0Ljk4Miw3Ny45NzksNzcuOTh2NzAuMTkzDQoJCQljMCw0Ljc4LDMuODgsOC42NTYsOC42NjEsOC42NTZoNDguMDU3YzQuNzgsMCw4LjY1Ni0zLjg3Niw4LjY1Ni04LjY1NnYtNzAuMTkzQzM5OS4zNTIsNjQuMzA4LDMzNS4wNDQsMCwyNTUuOTk5LDB6DQoJCQkgTTM4Mi4wNCwyMDQuODloLTMwLjc0OHYtNjEuNTM3YzAtNTIuNTQ0LTQyLjc0OC05NS4yOTItOTUuMjkxLTk1LjI5MnMtOTUuMjkxLDQyLjc0OC05NS4yOTEsOTUuMjkydjYxLjUzN2gtMzAuNzQ4di02MS41MzcNCgkJCWMwLTY5LjQ5OSw1Ni41NC0xMjYuMDQsMTI2LjAzOC0xMjYuMDRjNjkuNDk5LDAsMTI2LjA0LDU2LjU0MSwxMjYuMDQsMTI2LjA0VjIwNC44OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQxMC42MywyMDQuODlIMTAxLjM3MWMtMjAuNTA1LDAtMzcuMTg4LDE2LjY4My0zNy4xODgsMzcuMTg4djIzMi43MzRjMCwyMC41MDUsMTYuNjgzLDM3LjE4OCwzNy4xODgsMzcuMTg4SDQxMC42Mw0KCQkJYzIwLjUwNSwwLDM3LjE4Ny0xNi42ODMsMzcuMTg3LTM3LjE4OVYyNDIuMDc4QzQ0Ny44MTcsMjIxLjU3Myw0MzEuMTM1LDIwNC44OSw0MTAuNjMsMjA0Ljg5eiBNNDMwLjUwNSw0NzQuODExDQoJCQljMCwxMC45Ni04LjkxNiwxOS44NzYtMTkuODc1LDE5Ljg3NkgxMDEuMzcxYy0xMC45NiwwLTE5Ljg3Ni04LjkxNi0xOS44NzYtMTkuODc2VjI0Mi4wNzhjMC0xMC45Niw4LjkxNi0xOS44NzYsMTkuODc2LTE5Ljg3Ng0KCQkJSDQxMC42M2MxMC45NTksMCwxOS44NzUsOC45MTYsMTkuODc1LDE5Ljg3NlY0NzQuODExeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjg1LjExLDM2OS43ODFjMTAuMTEzLTguNTIxLDE1Ljk5OC0yMC45NzgsMTUuOTk4LTM0LjM2NWMwLTI0Ljg3My0yMC4yMzYtNDUuMTA5LTQ1LjEwOS00NS4xMDkNCgkJCWMtMjQuODc0LDAtNDUuMTEsMjAuMjM2LTQ1LjExLDQ1LjEwOWMwLDEzLjM4Nyw1Ljg4NSwyNS44NDQsMTYsMzQuMzY3bC05LjczMSw0Ni4zNjJjLTAuNTM1LDIuNTU0LDAuMTA4LDUuMjExLDEuNzUyLDcuMjM2DQoJCQljMS42NDUsMi4wMjMsNC4xMTMsMy4yLDYuNzIsMy4yaDYwLjczOGMyLjYwOCwwLDUuMDc2LTEuMTc2LDYuNzE5LTMuMmMxLjY0My0yLjAyNiwyLjI4Ni00LjY4MywxLjc1MS03LjIzNEwyODUuMTEsMzY5Ljc4MXoNCgkJCSBNMjcwLjg1MSwzNTguODJjLTMuMDQsMS45MzYtNC41NjUsNS41NTMtMy44MjQsOS4wODFsOC42OCw0MS4zNjZoLTM5LjQxNWw4LjY4Mi00MS4zNjNjMC43NC0zLjUyOS0wLjc4Mi03LjE0Ni0zLjgyNC05LjA4MQ0KCQkJYy04LjEwOC01LjE2LTEyLjk0OC0xMy45MTEtMTIuOTQ4LTIzLjQwNmMwLTE1LjMyNywxMi40NjktMjcuNzk2LDI3Ljc5Ny0yNy43OTZjMTUuMzI3LDAsMjcuNzk2LDEyLjQ2OSwyNy43OTYsMjcuNzk2DQoJCQlDMjgzLjc5NywzNDQuOTE0LDI3OC45NTcsMzUzLjY2MywyNzAuODUxLDM1OC44MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Txe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00OTQuOTMzNTk0IDBoLTQ3Ny44NjcxODhjLTkuNDIxODc1LjAwNzgxMjUtMTcuMDU4NTkzNSA3LjY0NDUzMS0xNy4wNjY0MDYgMTcuMDY2NDA2djU5LjczNDM3NWMuMDA3ODEyNSA5LjQyMTg3NSA3LjY0NDUzMSAxNy4wNTQ2ODggMTcuMDY2NDA2IDE3LjA2NjQwN2gxMC44OTQ1MzJsLTI2LjgzNTkzOCA0Ni45NjQ4NDNjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTk1MzEgMS41MjczNDQgMi42Mjg5MDcgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2NDg0NGMtMS41MDc4MTIgMi42NDA2MjUtMS41IDUuODg2NzE5LjAyNzM0NCA4LjUxNTYyNSAxLjUyNzM0NCAyLjYzMjgxMyA0LjMzOTg0NCA0LjI1IDcuMzgyODEyIDQuMjVoMTkuNDI1NzgybC0yNi44MzU5MzggNDYuOTY4NzVjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4MjgxMy4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42Mjg5MDYgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2ODc1Yy0xLjUwNzgxMiAyLjY0MDYyNS0xLjUgNS44ODI4MTMuMDI3MzQ0IDguNTE1NjI1IDEuNTI3MzQ0IDIuNjI4OTA3IDQuMzM5ODQ0IDQuMjUgNy4zODI4MTIgNC4yNWgxOS40MjU3ODJsLTI2LjgzNTkzOCA0Ni45NjQ4NDRjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42MzI4MTIgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1MzkwNmgxOS40MjU3ODJsLTI2LjgzNTkzOCA0Ni45NjQ4NDRjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42MzI4MTMgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2ODc1Yy0xLjUwNzgxMiAyLjY0MDYyNS0xLjUgNS44ODI4MTMuMDI3MzQ0IDguNTE1NjI1IDEuNTI3MzQ0IDIuNjI4OTA2IDQuMzM5ODQ0IDQuMjUgNy4zODI4MTIgNC4yNWg0OTQuOTI5Njg4YzMuMDQyOTY4IDAgNS44NTU0NjgtMS42MjEwOTQgNy4zODI4MTItNC4yNSAxLjUyNzM0NC0yLjYzMjgxMiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45Njg3NWgxOS40MjU3ODJjMy4wNDI5NjggMCA1Ljg1NTQ2OC0xLjYxNzE4NyA3LjM4MjgxMi00LjI1IDEuNTI3MzQ0LTIuNjI4OTA2IDEuNTM1MTU2LTUuODc1LjAyNzM0NC04LjUxNTYyNWwtMjYuODM1OTM4LTQ2Ljk2NDg0NGgxOS40MjU3ODJjMy4wNDI5NjgtLjAwMzkwNiA1Ljg1NTQ2OC0xLjYyMTA5NCA3LjM4MjgxMi00LjI1MzkwNiAxLjUyNzM0NC0yLjYyODkwNiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45NjQ4NDRoMTkuNDI1NzgyYzMuMDQyOTY4IDAgNS44NTU0NjgtMS42MjEwOTMgNy4zODI4MTItNC4yNSAxLjUyNzM0NC0yLjYzMjgxMiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45Njg3NWgxOS40MjU3ODJjMy4wNDI5NjggMCA1Ljg1NTQ2OC0xLjYyMTA5NCA3LjM4MjgxMi00LjI1IDEuNTI3MzQ0LTIuNjMyODEyIDEuNTM1MTU2LTUuODc1LjAyNzM0NC04LjUxNTYyNWwtMjYuODM1OTM4LTQ2Ljk2ODc1aDE5LjQyNTc4MmMzLjA0Mjk2OCAwIDUuODU1NDY4LTEuNjE3MTg3IDcuMzgyODEyLTQuMjUgMS41MjczNDQtMi42Mjg5MDYgMS41MzUxNTYtNS44NzUuMDI3MzQ0LTguNTE1NjI1bC0yNi44MzU5MzgtNDYuOTY0ODQ0aDE5LjQyNTc4MmMzLjA0Mjk2OCAwIDUuODU1NDY4LTEuNjIxMDkzIDcuMzgyODEyLTQuMjUgMS41MjczNDQtMi42MzI4MTIgMS41MzUxNTYtNS44Nzg5MDYuMDI3MzQ0LTguNTE5NTMxbC0yNi44MzU5MzgtNDYuOTY0ODQzaDEwLjg5NDUzMmM5LjQyMTg3NS0uMDExNzE5IDE3LjA1NDY4Ny03LjY0NDUzMiAxNy4wNjY0MDYtMTcuMDY2NDA3di01OS43MzQzNzVjLS4wMTE3MTktOS40MjE4NzUtNy42NDQ1MzEtMTcuMDU0Njg3Mi0xNy4wNjY0MDYtMTcuMDY2NDA2em0tNDQ3LjMxNjQwNiA5My44NjcxODhoNDYuMjV2NDIuNjY3OTY4aC03MC42Mjg5MDd6bTMxOS4zMTY0MDYgMHY0Mi42Njc5NjhoLTIyMS44NjcxODh2LTQyLjY2Nzk2OHptNjguMjY1NjI1IDB2NDIuNjY3OTY4aC0xNy4wNjY0MDd2LTQyLjY2Nzk2OHptLTI5MC4xMzI4MTMgMzQxLjMzMjAzMXYtNDIuNjY0MDYzaDIyMS44NjcxODh2NDIuNjY0MDYzem0yMjEuODY3MTg4IDE3LjA2NjQwNnY0Mi42Njc5NjloLTIyMS44NjcxODh2LTQyLjY2Nzk2OXptMC0yNTZoLTIyMS44NjcxODh2LTQyLjY2NDA2M2gyMjEuODY3MTg4em0xNy4wNjY0MDYtNDIuNjY0MDYzaDE3LjA2NjQwNnY0Mi42NjQwNjNoLTE3LjA2NjQwNnptLTIzOC45MzM1OTQgMTYyLjEzMjgxM3YtNDIuNjY3OTY5aDIyMS44NjcxODh2NDIuNjY3OTY5em0yMjEuODY3MTg4IDE3LjA2NjQwNnY0Mi42NjQwNjNoLTIyMS44NjcxODh2LTQyLjY2NDA2M3ptLTIyMS44NjcxODgtNzYuODAwNzgxdi00Mi42Njc5NjloMjIxLjg2NzE4OHY0Mi42Njc5Njl6bS0xNy4wNjY0MDYtNTkuNzM0Mzc1aC0xNy4wNjY0MDZ2LTQyLjY2NDA2M2gxNy4wNjY0MDZ6bTAgMTcuMDY2NDA2djQyLjY2Nzk2OWgtMTcuMDY2NDA2di00Mi42Njc5Njl6bTAgNTkuNzM0Mzc1djQyLjY2Nzk2OWgtMTcuMDY2NDA2di00Mi42Njc5Njl6bTAgNTkuNzM0Mzc1djQyLjY2NDA2M2gtMTcuMDY2NDA2di00Mi42NjQwNjN6bTAgNTkuNzM0Mzc1djQyLjY2NDA2M2gtMTcuMDY2NDA2di00Mi42NjQwNjN6bTI1NiAwaDE3LjA2NjQwNnY0Mi42NjQwNjNoLTE3LjA2NjQwNnptMC0xNy4wNzAzMTJ2LTQyLjY2NDA2M2gxNy4wNjY0MDZ2NDIuNjY0MDYzem0wLTU5LjczMDQ2OXYtNDIuNjY3OTY5aDE3LjA2NjQwNnY0Mi42Njc5Njl6bTAtNTkuNzM0Mzc1di00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMzQuMTMyODEyLTQyLjY2Nzk2OWgxNy4wNjY0MDd2NDIuNjY3OTY5aC0xNy4wNjY0MDd6bTAtMTcuMDY2NDA2di00Mi42NjQwNjNoMTcuMDY2NDA3djQyLjY2NDA2M3ptLTE3LjA2NjQwNi01OS43MzA0NjloLTE3LjA2NjQwNnYtNDIuNjY3OTY4aDE3LjA2NjQwNnptLTI3My4wNjY0MDYgMGgtMTcuMDY2NDA2di00Mi42Njc5NjhoMTcuMDY2NDA2em0tODAuMzgyODEyIDE3LjA2NjQwNmg0Ni4yNXY0Mi42NjQwNjNoLTcwLjYyODkwN3ptMCA1OS43MzA0NjloNDYuMjV2NDIuNjY3OTY5aC03MC42Mjg5MDd6bTAgNTkuNzM0Mzc1aDQ2LjI1djQyLjY2Nzk2OWgtNzAuNjI4OTA3em0wIDU5LjczNDM3NWg0Ni4yNXY0Mi42NjQwNjNoLTcwLjYyODkwN3ptMCA1OS43MzQzNzVoNDYuMjV2NDIuNjY0MDYzaC03MC42Mjg5MDd6bTAgNTkuNzMwNDY5aDQ2LjI1djQyLjY2Nzk2OWgtNzAuNjI4OTA3em02My4zMTY0MDYgNDIuNjY3OTY5di00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMjczLjA2NjQwNiAwdi00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMTA0Ljc1NzgxMiAwaC03MC42MjV2LTQyLjY2Nzk2OWg0Ni4yNXptMC01OS43MzQzNzVoLTcwLjYyNXYtNDIuNjY0MDYzaDQ2LjI1em0wLTU5LjczNDM3NWgtNzAuNjI1di00Mi42NjQwNjNoNDYuMjV6bTAtNTkuNzMwNDY5aC03MC42MjV2LTQyLjY2Nzk2OWgxNy4wNjY0MDd2MTcuMDY2NDA2YzAgNC43MTQ4NDQgMy44MjAzMTIgOC41MzUxNTcgOC41MzUxNTYgOC41MzUxNTcgNC43MTA5MzcgMCA4LjUzMTI1LTMuODIwMzEzIDguNTMxMjUtOC41MzUxNTd2LTE3LjA2NjQwNmgxMi4xMTcxODd6bTAtNTkuNzM0Mzc1aC0zNi40OTIxODd2LTQyLjY2Nzk2OWgxMi4xMTcxODd6bTAtNTkuNzM0Mzc1aC0zNi40OTIxODd2LTQyLjY2NDA2M2gxMi4xMTcxODd6bTAtNTkuNzMwNDY5aC0zNi40OTIxODd2LTQyLjY2Nzk2OGgxMi4xMTcxODd6bS0xOS40MjU3ODEtNTkuNzM0Mzc1aC00NTIuMjY1NjI1di01OS43MzQzNzVoNDc3Ljg2NzE4OGwuMDA3ODEyIDU5LjczNDM3NXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im01OS43MzQzNzUgNDIuNjY3OTY5aC0xNy4wNjY0MDZjLTQuNzE0ODQ0IDAtOC41MzUxNTcgMy44MjAzMTItOC41MzUxNTcgOC41MzEyNSAwIDQuNzE0ODQzIDMuODIwMzEzIDguNTM1MTU2IDguNTM1MTU3IDguNTM1MTU2aDE3LjA2NjQwNmM0LjcxMDkzNyAwIDguNTMxMjUtMy44MjAzMTMgOC41MzEyNS04LjUzNTE1NiAwLTQuNzEwOTM4LTMuODIwMzEzLTguNTMxMjUtOC41MzEyNS04LjUzMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0NS4wNjY0MDYgNDIuNjY3OTY5aC01MS4xOTkyMThjLTQuNzE0ODQ0IDAtOC41MzUxNTcgMy44MjAzMTItOC41MzUxNTcgOC41MzEyNSAwIDQuNzE0ODQzIDMuODIwMzEzIDguNTM1MTU2IDguNTM1MTU3IDguNTM1MTU2aDUxLjE5OTIxOGM0LjcxNDg0NCAwIDguNTM1MTU2LTMuODIwMzEzIDguNTM1MTU2LTguNTM1MTU2IDAtNC43MTA5MzgtMy44MjAzMTItOC41MzEyNS04LjUzNTE1Ni04LjUzMTI1em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Dxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTIzNCAyNDMuNzgzYy0uOTUxIDAtMS44NjguMTQxLTIuNzM5LjM4OWwtLjAwMi0uMDA3LTI4LjcyMiA4LjE4N2MtNS4zMTEgMS41MTQtOC4zOSA3LjA0Ny02Ljg3NiAxMi4zNTggMS4yNTMgNC4zOTYgNS4yNTggNy4yNjEgOS42MTIgNy4yNjEuOTA3IDAgMS44My0uMTI1IDIuNzQ2LS4zODVsMTUuOTgxLTQuNTU0djM1LjQybC0xMjQgMzUuMzQ1di0zNS40MmwyMS40NjQtNi4xMThjNS4zMTEtMS41MTQgOC4zOS03LjA0NyA2Ljg3Ni0xMi4zNThzLTcuMDQ1LTguMzg3LTEyLjM1OC02Ljg3NmwtMjguNzIzIDguMTg3LjAwMS4wMDdjLTQuMTg5IDEuMTkzLTcuMjYgNS4wMzktNy4yNiA5LjYxdjEyNy4xOTljLTguMzYzLTYuMjkzLTE4Ljc1Mi0xMC4wMjgtMzAtMTAuMDI4LTI3LjU3IDAtNTAgMjIuNDMtNTAgNTBzMjIuNDMgNTAgNTAgNTAgNTAtMjIuNDMgNTAtNTB2LTEwMy40MDZsMTI0LTM1LjM0NXY1Ny43MzNjLTguMzYzLTYuMjkyLTE4Ljc1Mi0xMC4wMjctMzAtMTAuMDI3LTI3LjU3IDAtNTAgMjIuNDMtNTAgNTBzMjIuNDMgNTAgNTAgNTAgNTAtMjIuNDMgNTAtNTB2LTE2Ny4xNzJjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMHptLTE4NCAyNDguMjE3Yy0xNi41NDIgMC0zMC0xMy40NTgtMzAtMzBzMTMuNDU4LTMwIDMwLTMwIDMwIDEzLjQ1OCAzMCAzMC0xMy40NTggMzAtMzAgMzB6bTE0NC00MS4wNDVjLTE2LjU0MiAwLTMwLTEzLjQ1OC0zMC0zMHMxMy40NTgtMzAgMzAtMzAgMzAgMTMuNDU4IDMwIDMwLTEzLjQ1OCAzMC0zMCAzMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwOC4wMTMgMi4wMWMtMi41MTEtMS44ODktNS43NjMtMi40ODctOC43ODItMS42MTlsLTEwNC40MDggMzAuMDg5Yy00LjI4MiAxLjIzNC03LjIzMSA1LjE1Mi03LjIzMSA5LjYwOXYxMjcuMTk5Yy04LjM2My02LjI5Mi0xOC43NTItMTAuMDI3LTMwLTEwLjAyNy0yNy41NyAwLTUwIDIyLjQzLTUwIDUwczIyLjQzIDUwIDUwIDUwIDUwLTIyLjQzIDUwLTUwdi0xMDMuNDNsOTcuMTc3LTI4LjAwNWM0LjI4Mi0xLjIzNCA3LjIzMS01LjE1MiA3LjIzMS05LjYwOXYtNTYuMjE3YzAtMy4xNDItMS40NzctNi4xMDEtMy45ODctNy45OXptLTE1MC40MjEgMjM1LjI1MWMtMTYuNTQyIDAtMzAtMTMuNDU4LTMwLTMwczEzLjQ1OC0zMCAzMC0zMCAzMCAxMy40NTggMzAgMzAtMTMuNDU4IDMwLTMwIDMwem0xMzQuNDA4LTE3OC41NjktODQuNDA4IDI0LjMyNXYtMzUuNDAzbDg0LjQwOC0yNC4zMjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NzEuNTkxIDM0OC43NjItNDguMjg4LTcuMDE3LTIxLjU5NS00My43NTZjLTEuNjg1LTMuNDEzLTUuMTYxLTUuNTc0LTguOTY3LTUuNTc0cy03LjI4MyAyLjE2MS04Ljk2NyA1LjU3NGwtMjEuNTk1IDQzLjc1Ni00OC4yODggNy4wMTdjLTMuNzY3LjU0Ny02Ljg5NiAzLjE4Ni04LjA3MyA2LjgwNnMtLjE5NSA3LjU5NCAyLjUzMSAxMC4yNTFsMzQuOTQxIDM0LjA2LTguMjQ5IDQ4LjA5M2MtLjY0NCAzLjc1MS44OTggNy41NDMgMy45NzggOS43ODEgMy4wNzkgMi4yMzYgNy4xNjIgMi41MzIgMTAuNTMxLjc2MWw0My4xOS0yMi43MDcgNDMuMTkgMjIuNzA2YzEuNDYzLjc3IDMuMDYxIDEuMTQ5IDQuNjUyIDEuMTQ5IDIuMDczIDAgNC4xMzctLjY0NCA1Ljg3OS0xLjkxIDMuMDgtMi4yMzcgNC42MjItNi4wMjkgMy45NzgtOS43ODFsLTguMjQ5LTQ4LjA5MyAzNC45NDEtMzQuMDZjMi43MjYtMi42NTcgMy43MDctNi42MzEgMi41MzEtMTAuMjUxcy00LjMwNC02LjI1OC04LjA3MS02LjgwNXptLTQ3LjEyNCA0MC40NjRjLTIuMzU3IDIuMjk3LTMuNDMzIDUuNjA3LTIuODc2IDguODUxbDUuNzEyIDMzLjMwNC0yOS45MDktMTUuNzI0Yy0yLjkxMy0xLjUzMi02LjM5My0xLjUzMi05LjMwNyAwbC0yOS45MDkgMTUuNzI0IDUuNzEyLTMzLjMwNGMuNTU3LTMuMjQ0LS41MTktNi41NTQtMi44NzYtOC44NTFsLTI0LjE5Ni0yMy41ODYgMzMuNDM5LTQuODU5YzMuMjU3LS40NzMgNi4wNzMtMi41MTkgNy41MjktNS40N2wxNC45NTUtMzAuMzAxIDE0Ljk1NCAzMC4zMDFjMS40NTcgMi45NTEgNC4yNzIgNC45OTcgNy41MjkgNS40N2wzMy40MzkgNC44NTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMi42MiA5MC43MDYtNi42MiAzOC41OTNjLS42NDQgMy43NTEuODk4IDcuNTQzIDMuOTc4IDkuNzgxIDMuMDc5IDIuMjM3IDcuMTYzIDIuNTMzIDEwLjUzMS43NjFsMzQuNjU4LTE4LjIyMSAzNC42NTkgMTguMjIxYzEuNDYzLjc2OSAzLjA2MSAxLjE0OCA0LjY1MiAxLjE0OCAyLjA3MyAwIDQuMTM3LS42NDQgNS44NzktMS45MSAzLjA4LTIuMjM4IDQuNjIyLTYuMDI5IDMuOTc4LTkuNzgxbC02LjYyLTM4LjU5MyAyOC4wNC0yNy4zMzFjMi43MjYtMi42NTcgMy43MDctNi42MzEgMi41MzEtMTAuMjUxcy00LjMwNi02LjI1OC04LjA3My02LjgwNmwtMzguNzUtNS42MzEtMTcuMzI4LTM1LjExMmMtMS42ODQtMy40MTMtNS4xNi01LjU3NC04Ljk2Ny01LjU3NHMtNy4yODMgMi4xNjEtOC45NjcgNS41NzRsLTE3LjMyOSAzNS4xMTMtMzguNzUgNS42MzFjLTMuNzY3LjU0Ny02Ljg5NiAzLjE4Ni04LjA3MyA2LjgwNnMtLjE5NSA3LjU5NCAyLjUzMSAxMC4yNTF6bTI0LjMzLTMwLjk4M2MzLjI1Ny0uNDczIDYuMDczLTIuNTE5IDcuNTI5LTUuNDdsMTAuNjg4LTIxLjY1NyAxMC42ODggMjEuNjU3YzEuNDU3IDIuOTUxIDQuMjcyIDQuOTk3IDcuNTI5IDUuNDdsMjMuOSAzLjQ3My0xNy4yOTIgMTYuODU4Yy0yLjM1NyAyLjI5OC0zLjQzMyA1LjYwOC0yLjg3NiA4Ljg1Mmw0LjA4MyAyMy44MDQtMjEuMzc3LTExLjIzOGMtMS40NTctLjc2Ni0zLjA1NS0xLjE0OS00LjY1My0xLjE0OS0xLjU5OSAwLTMuMTk3LjM4My00LjY1MyAxLjE0OWwtMjEuMzc3IDExLjIzOCA0LjA4My0yMy44MDRjLjU1Ny0zLjI0NC0uNTE5LTYuNTU0LTIuODc2LTguODUybC0xNy4yOTYtMTYuODU4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjM0IDg2LjMwNmMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYxMGMwIDUuNTIzIDQuNDc3IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwdi0xMGMwLTUuNTIzLTQuNDc3LTEwLTEwLTEweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjM0IDE1Ni4zMDZjLTUuNTIzIDAtMTAgNC40NzctMTAgMTB2MTBjMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtMTBjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3NCAxMjYuMzA2aC0xMGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3NyAxMCAxMCAxMGgxMGM1LjUyMyAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE5NCAxNDYuMzA2aDEwYzUuNTIzIDAgMTAtNC40NzcgMTAtMTBzLTQuNDc3LTEwLTEwLTEwaC0xMGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3NyAxMCAxMCAxMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2MiAyODQuMzFjMi42MyAwIDUuMjEtMS4wNyA3LjA3LTIuOTNzMi45My00LjQ0IDIuOTMtNy4wN2MwLTIuNjQtMS4wNy01LjIxLTIuOTMtNy4wOC0xLjg2LTEuODYtNC40NC0yLjkyLTcuMDctMi45MnMtNS4yMSAxLjA2LTcuMDcgMi45MmMtMS44NiAxLjg3LTIuOTMgNC40NC0yLjkzIDcuMDggMCAyLjYzIDEuMDcgNS4yMSAyLjkzIDcuMDdzNC40NCAyLjkzIDcuMDcgMi45M3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",dxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUwNS40IDUwNS40Ij4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDM3LjEsMjMzLjQ1YzE0LjgtMTAuNCwyNC42LTI3LjcsMjQuNi00Ny4yYzAtMzEuOS0yNS44LTU3LjctNTcuNy01Ny43Yy0zMS45LDAtNTcuNywyNS44LTU3LjcsNTcuNw0KCQkJYzAsMTkuNSw5LjcsMzYuOCwyNC42LDQ3LjJjLTEyLjcsNC40LTI0LjMsMTEuMi0zNC4xLDIwYy0xMy41LTExLjUtMjkuNC0yMC4zLTQ2LjgtMjUuNWMyMS4xLTEyLjgsMzUuMy0zNi4xLDM1LjMtNjIuNg0KCQkJYzAtNDAuNC0zMi43LTczLjEtNzMuMS03My4xYy00MC40LDAtNzMuMSwzMi44LTczLjEsNzMuMWMwLDI2LjUsMTQuMSw0OS44LDM1LjMsNjIuNmMtMTcuMiw1LjItMzIuOSwxMy45LTQ2LjMsMjUuMg0KCQkJYy05LjgtOC42LTIxLjItMTUuMy0zMy43LTE5LjZjMTQuOC0xMC40LDI0LjYtMjcuNywyNC42LTQ3LjJjMC0zMS45LTI1LjgtNTcuNy01Ny43LTU3LjdzLTU3LjcsMjUuOC01Ny43LDU3LjcNCgkJCWMwLDE5LjUsOS43LDM2LjgsMjQuNiw0Ny4yQzI4LjUsMjQ3LjI1LDAsMjg0Ljk1LDAsMzI5LjI1djYuNmMwLDAuMiwwLjIsMC40LDAuNCwwLjRoMTIyLjNjLTAuNyw1LjUtMS4xLDExLjItMS4xLDE2Ljl2Ni44DQoJCQljMCwyOS40LDIzLjgsNTMuMiw1My4yLDUzLjJoMTU1YzI5LjQsMCw1My4yLTIzLjgsNTMuMi01My4ydi02LjhjMC01LjctMC40LTExLjQtMS4xLTE2LjlINTA1YzAuMiwwLDAuNC0wLjIsMC40LTAuNHYtNi42DQoJCQlDNTA1LjIsMjg0Ljg1LDQ3Ni44LDI0Ny4xNSw0MzcuMSwyMzMuNDV6IE0zNjIuMywxODYuMTVjMC0yMywxOC43LTQxLjcsNDEuNy00MS43czQxLjcsMTguNyw0MS43LDQxLjcNCgkJCWMwLDIyLjctMTguMyw0MS4yLTQwLjksNDEuN2MtMC4zLDAtMC41LDAtMC44LDBzLTAuNSwwLTAuOCwwQzM4MC41LDIyNy40NSwzNjIuMywyMDguOTUsMzYyLjMsMTg2LjE1eiBNMTk0LjksMTY1LjM1DQoJCQljMC0zMS41LDI1LjYtNTcuMSw1Ny4xLTU3LjFzNTcuMSwyNS42LDU3LjEsNTcuMWMwLDMwLjQtMjMuOSw1NS4zLTUzLjgsNTdjLTEuMSwwLTIuMiwwLTMuMywwYy0xLjEsMC0yLjIsMC0zLjMsMA0KCQkJQzIxOC44LDIyMC42NSwxOTQuOSwxOTUuNzUsMTk0LjksMTY1LjM1eiBNNTkuMywxODYuMTVjMC0yMywxOC43LTQxLjcsNDEuNy00MS43czQxLjcsMTguNyw0MS43LDQxLjdjMCwyMi43LTE4LjMsNDEuMi00MC45LDQxLjcNCgkJCWMtMC4zLDAtMC41LDAtMC44LDBzLTAuNSwwLTAuOCwwQzc3LjYsMjI3LjQ1LDU5LjMsMjA4Ljk1LDU5LjMsMTg2LjE1eiBNMTI1LjUsMzIwLjE1SDE2LjJjNC41LTQyLjYsNDAuNS03Niw4NC4yLTc2LjMNCgkJCWMwLjIsMCwwLjQsMCwwLjYsMHMwLjQsMCwwLjYsMGMyMC44LDAuMSwzOS44LDcuOCw1NC41LDIwLjNDMTQxLjcsMjc5Ljc1LDEzMSwyOTguOTUsMTI1LjUsMzIwLjE1eiBNMzY2LjgsMzU5Ljk1DQoJCQljMCwyMC41LTE2LjcsMzcuMi0zNy4yLDM3LjJoLTE1NWMtMjAuNSwwLTM3LjItMTYuNy0zNy4yLTM3LjJ2LTYuOGMwLTYyLjEsNDkuNi0xMTIuOSwxMTEuMy0xMTQuN2MxLjEsMC4xLDIuMywwLjEsMy40LDAuMQ0KCQkJczIuMywwLDMuNC0wLjFjNjEuNywxLjgsMTExLjMsNTIuNiwxMTEuMywxMTQuN1YzNTkuOTV6IE0zNzguNywzMjAuMTVjLTUuNS0yMS4xLTE2LTQwLTMwLjMtNTUuNmMxNC44LTEyLjgsMzQtMjAuNSw1NS0yMC43DQoJCQljMC4yLDAsMC40LDAsMC42LDBzMC40LDAsMC42LDBjNDMuNywwLjMsNzkuNywzMy43LDg0LjIsNzYuM0gzNzguN3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",hxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM2Ny4wNDMgMTcwLjQxNGMtMTAuNTE2LS4zNjUtMjAuMDE2LTUuMDQ3LTI2Ljc0OS0xMy4xODEtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC02LjczMyA4LjEzNS0xNi4yMzMgMTIuODE2LTI2Ljc0OSAxMy4xODItNC4xNC4xNDQtNy4zNzkgMy42MTYtNy4yMzQgNy43NTYuMTQ0IDQuMTQgMy41OTQgNy4zNzEgNy43NTYgNy4yMzUgMTMuNTY2LS40NzIgMjYuMzg2LTYuMzI4IDM1LjY0Ni0xNi4xODcgMjAuMjc2IDIxLjYyOSA1NC41NjkgMjEuNjU3IDc0Ljg3NS4wMDEgMjAuMjc4IDIxLjYyOSA1NC41NzEgMjEuNjU0IDc0Ljg3NC0uMDAxIDkuMjYyIDkuODU5IDIyLjA4IDE1LjcxNSAzNS42NDcgMTYuMTg3IDQuMTIxLjE0OSA3LjYxMy0zLjA5NSA3Ljc1Ni03LjIzNS4xNDUtNC4xNC0zLjA5NC03LjYxMi03LjIzNC03Ljc1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MC4yOTQgMjE4Ljc1N2MtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NiAxNy42MzYtNDEuNDYxIDE3LjYwNy01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTk2IDE3LjYzOS00MS40NjEgMTcuNjA2LTU2LjAzMS0uMDAxLTQuOTA0LTUuOTIyLTEzLjkyNy01LjkzOC0xOC44NDEuMDAxLTcuOTk0IDkuNjU4LTIwLjE4MiAxNC40ODQtMzIuNjEyIDEyLjkxNC00LjEtLjUxOS03Ljg2MSAyLjM4OS04LjM4MiA2LjQ5OS0uNTIxIDQuMTA5IDIuMzkgNy44NjIgNi40OTkgOC4zODIgMTYuNDgxIDIuMDg5IDMyLjY1OC0zLjc5NSA0My45MTYtMTUuODA4IDIwLjI3NyAyMS42MjggNTQuNTY4IDIxLjY1NCA3NC44NzMgMCAyMC4yNzYgMjEuNjI3IDU0LjU3IDIxLjY1NiA3NC44NzMgMCAxMS4yNTggMTIuMDEzIDI3LjQzNiAxNy44OTYgNDMuOTE1IDE1LjgwOCA0LjEwOS0uNTIgNy4wMi00LjI3MiA2LjQ5OS04LjM4MnMtNC4yODktNy4wMTktOC4zODItNi40OTljLTEyLjQzNSAxLjU2OS0yNC42MTgtMy4yNTUtMzIuNjExLTEyLjkxNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC43ODIgMTA3LjdjLTguMDgyLTEuNzAzLTE1LjE2Ny02LTIwLjQ4Ny0xMi40MjctNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC01LjMyIDYuNDI3LTEyLjQwNCAxMC43MjUtMjAuNDg2IDEyLjQyOC00LjA1NC44NTQtNi42NDcgNC44MzItNS43OTMgOC44ODVzNC44NCA2LjY0NyA4Ljg4NSA1Ljc5MmMxMC4zODMtMi4xODggMTkuNTkyLTcuMzkgMjYuODE2LTE1LjExNyAyMC4yODIgMjEuNjMxIDU0LjU3MiAyMS42NDggNzQuODcyLS4wMDEgMjAuMjc2IDIxLjYyNiA1NC41NjcgMjEuNjU2IDc0Ljg3MS4wMDIgNy4yMjYgNy43MjcgMTYuNDM2IDEyLjkzIDI2LjgxOCAxNS4xMTYgNC4wNDguODU1IDguMDMtMS43NCA4Ljg4NS01Ljc5My44NTMtNC4wNTMtMS43NDEtOC4wMzEtNS43OTMtOC44ODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01NC45ODUgNDI5LjI3M2gxNjkuNzMydjY5LjU3OWMwIDcuMjUgNS44OTggMTMuMTQ4IDEzLjE0OSAxMy4xNDhoMjUuMTkyYzcuMjUgMCAxMy4xNDgtNS44OTggMTMuMTQ4LTEzLjE0OHYtMS40NjRoNzQuMTk5djEuNDY0YzAgNy4yNSA1Ljg5OCAxMy4xNDggMTMuMTQ5IDEzLjE0OGgyNS4xOTJjNy4yNSAwIDEzLjE0OC01Ljg5OCAxMy4xNDgtMTMuMTQ4di02OS41NzloNTUuMTE5YzI0LjEyMSAwIDQzLjA4MS0yMC44ODYgNDAuNjU3LTQ0Ljk1Ni0uMDA0LS4wNC0uMDA4LS4wOC0uMDEzLS4xMmwtMTMuMDM1LTExMS41NjdjLS40ODEtNC4xMTQtNC4yMTUtNy4wNjItOC4zMTktNi41NzktNC4xMTQuNDgxLTcuMDYgNC4yMDYtNi41NzkgOC4zMmwxMy4wMyAxMTEuNTAzYzEuNDYgMTQuODMzLTEwLjA5NCAyOC4zOTgtMjUuNzM4IDI4LjM5OGgtNTUuMTE5di0xOS4wNThoNDQuOTM3YzkuNDcgMCAxNi44OC04LjE5MSAxNS45MzUtMTcuNjE2LS4wMDUtLjA0My0uMDEtLjA4Ni0uMDE1LS4xMjlsLTM4Ljc1Ni0zMjkuMDc0Yy0uODYxLTguMTc5LTcuNjk1LTE0LjMzNy0xNS45MjctMTQuMzM3aC0xMzQuNTcxYy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDEzNC41NzFjLjUyMyAwIC45NTcuMzkzIDEuMDEuOTE0LjAwNC4wNDIuMDA5LjA4My4wMTQuMTI1bDM4Ljc1IDMyOS4wMzRjLjAxOS4yNzUtLjA3NC41NDctLjI2Ljc1MS0uMTkxLjIxMi0uNDY2LjMzMy0uNzUyLjMzM2gtNDQuOTM3di0yMi44OTJjMC0zOS40NzctMzIuMjU2LTcwLjM0NC03MC4zNDUtNzAuMzQ0LTI2Ljc3OCAwLTUwLjk0NyAxNS4xODktNjIuODM5IDM4Ljc0NC0xMi4wMDgtMjMuNzcyLTM2LjcyNS0zOS4yNS02NC4yMDYtMzguNzMxLTM3LjcuNzA5LTY4Ljk4OCAzMS41OTMtNjguOTg4IDcwLjMzMnYyMi44OTJoLTcwLjM1MmMtLjI4NiAwLS41Ni0uMTIyLS43NTMtLjMzNS0uMTg1LS4yMDQtLjI3Ny0uNDc2LS4yNTktLjc1MWwzOC43NTItMzI5LjAzMmMuMDA1LS4wNDIuMDEtLjA4NC4wMTQtLjEyNy4wNTMtLjUyLjQ4Ni0uOTEyIDEuMDEtLjkxMmgxMzQuNTdjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEzNC41N2MtOC4yMzMgMC0xNS4wNjcgNi4xNi0xNS45MjcgMTQuMzM5bC0zOC43NTcgMzI5LjA3M2MtLjAwNS4wNDMtLjAxLjA4Ni0uMDE1LjEyOS0uOTQ2IDkuNDIyIDYuNDY0IDE3LjYxNiAxNS45MzUgMTcuNjE2aDE1OS41NTF2MTkuMDU4aC0xNjkuNzMyYy0xNC44NTIgMC0yNy4yNzktMTIuNzgyLTI1LjczOS0yOC4zOTlsNDAuNjA5LTM0Ny40ODNjLjAwNS0uMDQuMDA5LS4wOC4wMTMtLjExOSAxLjMzNi0xMy4yNjggMTIuMzk5LTIzLjI3MyAyNS43MzQtMjMuMjczaDMyMC43OThjMTMuMzM1IDAgMjQuMzk3IDEwLjAwNSAyNS43MzMgMjMuMjcyLjAwNC4wNC4wMDguMDguMDEzLjEybDIzLjQ4NyAyMDAuOTc5Yy40ODEgNC4xMTUgNC4yMTcgNy4wNjMgOC4zMTkgNi41NzkgNC4xMTQtLjQ4IDcuMDYtNC4yMDYgNi41NzktOC4zMmwtMjMuNDgtMjAwLjkyMmMtMi4xMzgtMjAuOTMyLTE5LjYwMy0zNi43MDgtNDAuNjUxLTM2LjcwOGgtMzIwLjc5OGMtMjEuMDQ5IDAtMzguNTE2IDE1Ljc3Ny00MC42NTIgMzYuNzFsLTQwLjYxIDM0Ny40ODhjLS4wMDUuMDQtLjAwOS4wOC0uMDEzLjEyLTIuNDE1IDIzLjk5OSAxNi40NjYgNDQuOTU1IDQwLjY1OCA0NC45NTV6bTI1Ny43MTMtNzEuMzAyYzAtMTAuMzI1IDguMTIyLTE5LjI4OSAxOC41LTE5LjQ4MyAxMC42ODItLjIwNCAxOS4yMDkgOC40OTEgMTkuMjA5IDE4LjgzNnYyMi44OTJoLTM3LjcwOXptLTM2LjQ5MSA3MS4zMDJoNzQuMTk5djE5LjA1OGgtNzQuMTk5em03OC4yMTUtMzQuMDU4YzUuNTY5IDAgMTAuMDE0IDQuODE4IDkuNDg0IDEwLjQzLS40NzMgNC44ODQtNC41OSA4LjYyNy05LjQ4NCA4LjYyN2gtNzguMjE1di0xOS4wNThjMjYuMTEyLjAwMSA1Mi4xNjcuMDAxIDc4LjIxNS4wMDF6bS03OC4yMTUgNjguMTE2aDc4LjIxNWM1LjUzNyAwIDEwLjAxNiA0Ljc5NiA5LjQ4NCAxMC40My0uNDcyIDQuODc0LTQuNTg3IDguNjI3LTkuNDg0IDguNjI3aC03OC4yMTV6bTExMC42OSAzMy42NjloLTIxLjQ5di0yLjIxM2MxOC4wMTQtOS4xMjcgMTguMDU0LTM0LjcwOCAwLTQzLjg1NXYtMjQuMjZjMTguMDk4LTkuMTcgMTcuOTY4LTM0Ljc1MiAwLTQzLjg1NXYtMjUuNDkzYzAtMjAuNDg2LTE4LjIwMi0zNi41MTctMzguNzk0LTMzLjQ5LTE2LjM1MyAyLjQtMjguOTE1IDE2LjUyNi0yOC45MTUgMzMuNDl2MjIuODkyaC0yMS40OXYtMjEuODM3YzAtMzAuNTUyIDI0LjQ2LTU2LjA5NCA1NC44MjItNTYuMzg2IDMxLjIxOC0uMjYyIDU1Ljg2NyAyNS4wNTggNTUuODY3IDU1LjMzMXptLTIzNi4zNzctMTE2Ljc4NXYtMjEuODM4YzAtMzIuMjI0IDI2LjY5Ni01Ny41ODMgNTcuNTg5LTU2LjM0MiAyOS40ODMgMS4yMDQgNTMuMDk5IDI1LjUwMyA1My4wOTkgNTUuMjg3djEzOS42NzdoLTIxLjQ5YzAtMTQuNDE4IDAtMTIxLjA2MyAwLTEzOS42NzcgMC0xNy45NS0xNC4wNjUtMzIuODA0LTMxLjkxNS0zMy43OTUtMTkuMjc2LTEuMDk2LTM1Ljc5MyAxNC4yNjEtMzUuNzkzIDMzLjc5NXYyMi44OTJoLTIxLjQ5em0zNi40OSAwdi0yMi4yNDVjMC05LjQyNSA2Ljc2Mi0xNy43MjQgMTUuODc3LTE5LjI0MyAxMS42MzktMS44NTIgMjEuODMgNy4yMzcgMjEuODMgMTguNTk2djIyLjg5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",zxe="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MGgtMzJ2LTgwYzAtOC44MjItNy4xNzgtMTYtMTYtMTZoLTMydi00MGMwLTEzLjIzMy0xMC43NjctMjQtMjQtMjRoLTIyNGMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0djQwaC0zMmMtOC44MjIgMC0xNiA3LjE3OC0xNiAxNnY4MGgtMzJjLTIyLjA1NiAwLTQwIDE3Ljk0NC00MCA0MHYxNzZjMCAyMi4wNTYgMTcuOTQ0IDQwIDQwIDQwaDgwdjcyYzAgMTMuMjMzIDEwLjc2NyAyNCAyNCAyNGgyMjRjMTMuMjMzIDAgMjQtMTAuNzY3IDI0LTI0di03Mmg4MGMyMi4wNTYgMCA0MC0xNy45NDQgNDAtNDB2LTE3NmMwLTIyLjA1Ni0xNy45NDQtNDAtNDAtNDB6bS00OC04MHY4MGgtMzJ2LTgwem0tMjg4LTU2YzAtNC40MTEgMy41ODktOCA4LThoMjI0YzQuNDExIDAgOCAzLjU4OSA4IDh2MTM2aC0yNDBjMC0xLjYzNSAwLTEzMC4yMTEgMC0xMzZ6bS00OCA1NmgzMnY4MGgtMzJ6bTI4OCA0MDhjMCA0LjQxMS0zLjU4OSA4LTggOGgtMjI0Yy00LjQxMSAwLTgtMy41ODktOC04di0xMzZoMjQwem0xMjAtMTEyYzAgMTMuMjMzLTEwLjc2NyAyNC0yNCAyNGgtODB2LTQ4aDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04Yy0yOC42NTcgMC0yOTAuODgzIDAtMzA0IDAtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGgxNnY0OGgtODBjLTEzLjIzMyAwLTI0LTEwLjc2Ny0yNC0yNHYtMTc2YzAtMTMuMjMzIDEwLjc2Ny0yNCAyNC0yNGg0MzJjMTMuMjMzIDAgMjQgMTAuNzY3IDI0IDI0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDU2IDE5MmMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0czEwLjc2NyAyNCAyNCAyNCAyNC0xMC43NjcgMjQtMjQtMTAuNzY3LTI0LTI0LTI0em0wIDMyYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkyIDE5MmMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0czEwLjc2NyAyNCAyNCAyNCAyNC0xMC43NjcgMjQtMjQtMTAuNzY3LTI0LTI0LTI0em0wIDMyYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQ0IDM3NmgtMTY4Yy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4aDE2OGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0NCA0MTZoLTE2OGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGgxNjhjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNDQgNDU2aC0xNjhjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDhoMTY4YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",wxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ3My41NzQgMjUyLjQzMmgtNzMuMTg0di00My43NjFjMC0xMS40NzMtOS4zMzQtMjAuODA3LTIwLjgwNy0yMC44MDctOS44ODYgMC0zNC4yOTUgMC00NC4zMDIgMHYtMTcuODQxYzAtMTIuMzk5LTEwLjA4Ny0yMi40ODYtMjIuNDg2LTIyLjQ4NmgtMTcuNTk1bDE0LjcyNC00Ny41MzVjMTYuNzU5LjY5MiAzMC41MzktMTIuNzUgMzAuNTM5LTI5LjI4NCAwLTE2LjE2NC0xMy4xNTEtMjkuMzE1LTI5LjMxNS0yOS4zMTUtMjkuMjY4IDAtNDAuNDU1IDM4LjUxLTE1LjU0MSA1NC4xNTRsLTE2LjEwMSA1MS45NzloLTMwLjEzM2MtMTAuNTc2IDAtMTkuODMxIDcuNTE0LTIyLjAwNiAxNy44NjYtLjEwNi41MDctLjE2IDEuMDI0LS4xNiAxLjU0MnYyMC45MTloLTM4LjE0NnYtMTguODAxYzAtOC42NzMtNy4wNTctMTUuNzMtMTUuNzMtMTUuNzNoLTEuMzc5di0xOS41NzJjOS40NjktLjIwMyAxNy4xMTMtNy45NTMgMTcuMTEzLTE3LjQ3di0xNS42MTZjMC05LjUxNy03LjY0NC0xNy4yNjctMTcuMTEzLTE3LjQ3di00My42OTljMC0yMS42OTUtMTcuNjUtMzkuMzQ2LTM5LjM0Ni0zOS4zNDZoLTUxLjY3N2MtNC4xNCAwLTcuNDk1IDMuMzU2LTcuNDk1IDcuNDk1czMuMzU2IDcuNDk1IDcuNDk1IDcuNDk1aDUxLjY3OGMxMy40MjkgMCAyNC4zNTUgMTAuOTI2IDI0LjM1NSAyNC4zNTV2NDMuNjgyaC0zNy45NTd2LTIyLjU4NGMwLTQuMTQtMy4zNTYtNy40OTUtNy40OTUtNy40OTVoLTk2LjJ2LTM3Ljk1N2gzNS42MzhjNC4xNCAwIDcuNDk1LTMuMzU2IDcuNDk1LTcuNDk1cy0zLjM1NS03LjQ5NS03LjQ5NS03LjQ5NWgtNDMuMTMzYy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2NTIuOTQ3YzAgNC4xNCAzLjM1NiA3LjQ5NSA3LjQ5NSA3LjQ5NWg5Ni4ydjE1LjEwOWMtOS40NjguMjAzLTE3LjExMiA3Ljk1NC0xNy4xMTIgMTcuNDd2MTUuNjE2YzAgOS41MTYgNy42NDQgMTcuMjY3IDE3LjExMiAxNy40N3YxOS41NzJoLTEuMzc5Yy04LjY3MyAwLTE1LjczIDcuMDU3LTE1LjczIDE1LjczdjE4LjgwMWgtMjIuNTU1Yy0xMS40NzMgMC0yMC44MDcgOS4zMzQtMjAuODA3IDIwLjgwN3YyLjQ4OWwtMzMuNDAyIDcuNTg5Yy0zLjQxMy43NzUtNS44MzUgMy44MDktNS44MzUgNy4zMDl2MTA3LjI0M2MwIDMuNDk5IDIuNDIxIDYuNTMzIDUuODMzIDcuMzA4bDMzLjQwNCA3LjU5OHYyLjQ4N2MwIDExLjQ3MyA5LjMzNCAyMC44MDcgMjAuODA3IDIwLjgwN2g2LjQyNHYyNy43OTloLTE1LjEyN2MtNC4xNCAwLTcuNDk1IDMuMzU2LTcuNDk1IDcuNDk1IDAgNC4xNCAzLjM1NiA3LjQ5NSA3LjQ5NSA3LjQ5NWgzMzMuODQ5YzEuMzc4IDAgMi40OTggMS4xMjEgMi40OTggMi40OTh2MjUuNTJjLTE1LjgzNi0yLjgzLTMyLjQxOC4xMDMtNDYuNzA3IDguODExLTE2Ljc1NCAxMC4yMTEtMzcuNTcgMTAuMjEyLTU0LjMyNCAwLTIxLjU2Ny0xMy4xNDQtNDguMzYxLTEzLjE0NS02OS45MjggMC0xNi43NTQgMTAuMjExLTM3LjU3IDEwLjIxMi01NC4zMjQgMC0yMS41NjctMTMuMTQ0LTQ4LjM2MS0xMy4xNDUtNjkuOTI4IDAtMTYuNzU0IDEwLjIxMi0zNy41NyAxMC4yMTItNTQuMzI0IDBsLTI3LjQ2OS0xNi43NDJ2LTIwLjA4N2gxMC42NzZjNC4xNCAwIDcuNDk1LTMuMzU2IDcuNDk1LTcuNDk1cy0zLjM1Ni03LjQ5NS03LjQ5NS03LjQ5NWgtMTguMTcyYy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2OTcuNTQ5YzAgNC4xMzkgMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNDk3LjAwOWM0LjE0IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTUgMC04OC41MDYgMC0xMTguMDA5IDAtMjEzLjQ4Ny4wMDEtMjEuMTg4LTE3LjIzNy0zOC40MjYtMzguNDI1LTM4LjQyNnptLTE2Mi40MjUtMTk2LjAzN2M3Ljg5OCAwIDE0LjMyNSA2LjQyNiAxNC4zMjUgMTQuMzI0cy02LjQyNiAxNC4zMjUtMTQuMzI1IDE0LjMyNWMtNy44OTggMC0xNC4zMjQtNi40MjYtMTQuMzI0LTE0LjMyNXM2LjQyNi0xNC4zMjQgMTQuMzI0LTE0LjMyNHptLTI2Ny42MDQgMjc2LjQ0LTI0LjI0Ny01LjUxNXYtOTUuMjc3bDI0LjI0Ny01LjUwOXptMTk4LjY1My0xNjQuOTc0Yy45NDctMy4xMjUgMy44NjctNS4zMzMgNy4xNzYtNS4zMzNoNjMuNDJjNC4xMzMgMCA3LjQ5NSAzLjM2MiA3LjQ5NSA3LjQ5NXYxNy44NDFoLTc4LjA5MXptLTE0MC4zMDUtNTEuNTY5di0xNS42MTZjMC0xLjM3OCAxLjEyMS0yLjQ5OCAyLjQ5OC0yLjQ5OGg2Ny4xODVjMS4zNzggMCAyLjQ5OCAxLjEyMSAyLjQ5OCAyLjQ5OHYxNS42MTZjMCAxLjM3OC0xLjEyMSAyLjQ5OC0yLjQ5OCAyLjQ5OGgtNjcuMTg1Yy0xLjM3Ny4wMDEtMi40OTgtMS4xMi0yLjQ5OC0yLjQ5OHptNTUuMDY5IDE3LjQ4OXYxOS41NTNoLTM3Ljk1N3YtMTkuNTUzem0tNTUuMDY2IDM1LjI4M2MwLS40MDcuMzMyLS43MzkuNzM5LS43MzloNzAuNjk2Yy40MDcgMCAuNzM5LjMzMi43MzkuNzM5djE4LjgwMWgtNzIuMTc1di0xOC44MDF6bS0uMDAzIDMzLjc5MWgyNDAuMTQ4djE1My42NTZoLTI0MC4xNDh6bS0zNy41NDIgMTUzLjY1NmMtMy4yMDcgMC01LjgxNi0yLjYwOS01LjgxNi01LjgxNnYtMTQyLjAyM2MwLTMuMjA3IDIuNjA5LTUuODE2IDUuODE2LTUuODE2aDIyLjU1MXYxNTMuNjU2Yy01LjIxMS0uMDAxLTE3LjQ4OC0uMDAxLTIyLjU1MS0uMDAxem0yOTkuMzcyIDQyLjc5aC0yNzcuOTU3di0yNy43OTloMjc3Ljk1NnYyNy43OTl6bTcuNDk1LTQyLjc5NGMtLjAyOSAwLS4wNTguMDA0LS4wODcuMDA0aC0xNC4wOTl2LTE1My42NTZoMjIuNTUxYzMuMjA3IDAgNS44MTYgMi42MDkgNS44MTYgNS44MTZ2MTQyLjAyNGMwIDMuMjA3LTIuNjA5IDUuODE2LTUuODE2IDUuODE2aC04LjI3OGMtLjAyOSAwLS4wNTgtLjAwNC0uMDg3LS4wMDR6bTEyNS43OTEgMTQwLjM0M2MtOS4zNzkgMC00NzEuMTA3IDAtNDgyLjAxOSAwdi00NC45MTZsMTkuNjY3IDExLjk4N2MyMS41NjcgMTMuMTQ1IDQ4LjM2MSAxMy4xNDUgNjkuOTI4IDAgMTYuNzU0LTEwLjIxMSAzNy41Ny0xMC4yMTIgNTQuMzI0IDAgMjEuNTY4IDEzLjE0NSA0OC4zNjEgMTMuMTQ1IDY5LjkyOCAwIDE2Ljc1NC0xMC4yMTEgMzcuNTctMTAuMjEyIDU0LjMyNCAwIDIxLjU2OCAxMy4xNDUgNDguMzYxIDEzLjE0NSA2OS45MjggMCAxNy4wOTctMTAuNDIxIDM3Ljk0MS05Ljk4NiA1NC4zMjQgMCAyMS41NjcgMTMuMTQ0IDQ4LjM2MiAxMy4xNDQgNjkuOTI4IDBsMTkuNjY3LTExLjk4N2MuMDAxIDEwLjU1Ni4wMDEgMjIuMzguMDAxIDQ0LjkxNnptMC02Mi40NzJjLTI5Ljc4OSAxOC4xNTYtMzAuMzUzIDE4LjgzNi0zNi41MjcgMjEuMTMydi00NC4yNTdjMC00LjEzOS0zLjM1Ni03LjQ5NS03LjQ5NS03LjQ5NXMtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2NDcuNDI3Yy0xOS40NzIgMS4xNzItMjguOTg0LTcuNjg4LTM4LjUwNi0xMS44MzZ2LTMwLjA1NGMwLTkuNjQzLTcuODQ2LTE3LjQ4OS0xNy40ODktMTcuNDg5aC0xMC43ODN2LTI3Ljc5OWMxMy4zNDIgMCAyMS42NzYtMTAuMDQ5IDIxLjY3Ni0yMC44MDd2LTMxLjc1NWg0NS4xMDJ2NjIuMzMxYzAgNC4xMzkgMy4zNTYgNy40OTUgNy40OTUgNy40OTVzNy40OTUtMy4zNTYgNy40OTUtNy40OTV2LTY5LjgyNmMwLTQuMTM5LTMuMzU2LTcuNDk1LTcuNDk1LTcuNDk1aC01Mi41OTd2LTM2LjUyN2g3My4xODRjMTIuOTIzIDAgMjMuNDM2IDEwLjUxMyAyMy40MzYgMjMuNDM1djE0My41MnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxMS4wMjQgMjI3LjE1M2gtNzkuNzI2Yy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2OTAuMDdjMCA0LjE0IDMuMzU2IDcuNDk1IDcuNDk1IDcuNDk1aDc5LjcyNmM0LjE0IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTV2LTkwLjA3Yy4wMDEtNC4xMzktMy4zNTUtNy40OTUtNy40OTUtNy40OTV6bS03LjQ5NSA5MC4wN2gtNjQuNzM1di03NS4wNzloNjQuNzM1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAyNDAuOTdoLTY0LjUwNWMtNC4xMzkgMC03LjQ5NSAzLjM1Ni03LjQ5NSA3LjQ5NSAwIDQuMTQgMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTUuMDAxLTQuMTM5LTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAyNzIuMTg4aC02NC41MDVjLTQuMTM5IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTVzMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTVzLTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAzMDMuNDA2aC02NC41MDVjLTQuMTM5IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTVzMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTVzLTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYxLjg5OSAyODcuMTc5aDcuNTQ4bC0yLjkwNCA3LjQzMmMtMS41MDcgMy44NTUuMzk3IDguMjAyIDQuMjUzIDkuNzA5Ljg5Ni4zNSAxLjgxOS41MTYgMi43MjYuNTE2IDIuOTk3IDAgNS44MjYtMS44MDkgNi45ODMtNC43NjlsNi45LTE3LjY1NWMuOTAyLTIuMzA3LjYwNi00LjkxLS43OTEtNi45NTVzLTMuNzEzLTMuMjY4LTYuMTktMy4yNjhoLTcuNTQ4bDIuOTA0LTcuNDMyYzEuNTA3LTMuODU1LS4zOTctOC4yMDItNC4yNTMtOS43MDktMy44NTUtMS41MDktOC4yMDMuMzk2LTkuNzA5IDQuMjUzbC02LjkgMTcuNjU1Yy0uOTAyIDIuMzA3LS42MDYgNC45MS43OTEgNi45NTUgMS4zOTYgMi4wNDQgMy43MTMgMy4yNjggNi4xOSAzLjI2OHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Ixe="PHN2ZyB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtOTQuNzI3IDczLjcwOGE2Ljc1IDYuNzUgMCAxIDAgNi43NSA2Ljc1IDYuNzU2IDYuNzU2IDAgMCAwIC02Ljc1LTYuNzV6bTAgMTBhMy4yNSAzLjI1IDAgMSAxIDMuMjUtMy4yNSAzLjI1NCAzLjI1NCAwIDAgMSAtMy4yNSAzLjI1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNzMuMDgxIDczLjcwOGE2Ljc1IDYuNzUgMCAxIDAgNi43NSA2Ljc1IDYuNzU3IDYuNzU3IDAgMCAwIC02Ljc1LTYuNzV6bTAgMTBhMy4yNSAzLjI1IDAgMSAxIDMuMjUtMy4yNSAzLjI1NCAzLjI1NCAwIDAgMSAtMy4yNSAzLjI1eiIvPg0KICAgICAgICA8Y2lyY2xlIGN4PSI2NC45NjYiIGN5PSI0OC4wMjEiIHI9IjMiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iNzcuNTkxIiBjeT0iNDguMDIxIiByPSIzIi8+DQogICAgICAgIDxjaXJjbGUgY3g9IjkwLjIxNiIgY3k9IjQ4LjAyMSIgcj0iMyIvPg0KICAgICAgICA8Y2lyY2xlIGN4PSIxMDIuODQxIiBjeT0iNDguMDIxIiByPSIzIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjEuNSAzMy41aC0xMTVhMS43NTEgMS43NTEgMCAwIDAgLTEuNzUgMS43NXY1Ny41YTEuNzUxIDEuNzUxIDAgMCAwIDEuNzUgMS43NWgxNS45NDJ2OC4yNWExLjc1MSAxLjc1MSAwIDAgMCAxLjc1IDEuNzVoMTBhMS43NSAxLjc1IDAgMCAwIDEuNzUtMS43NXYtOC4yNWg1Ni4xMTZ2OC4yNWExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1aDEwYTEuNzUxIDEuNzUxIDAgMCAwIDEuNzUtMS43NXYtOC4yNWgxNS45NDJhMS43NTEgMS43NTEgMCAwIDAgMS43NS0xLjc1di01Ny41YTEuNzUxIDEuNzUxIDAgMCAwIC0xLjc1LTEuNzV6bS04OS4wNTggNjcuNWgtNi41di02LjVoNi41em02OS42MTYgMGgtNi41di02LjVoNi41em0xNy42OTItMTBoLTExMS41di01NGgxMTEuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyLjY5MiA3NC4yNWExMC4yNSAxMC4yNSAwIDEgMCAtMTAuMjUtMTAuMjUgMTAuMjYxIDEwLjI2MSAwIDAgMCAxMC4yNSAxMC4yNXptLTEuNzUtMTYuNzYydjQuMDEyYTEuNzUgMS43NSAwIDAgMCAzLjUgMHYtNC4wMTJhNi43NSA2Ljc1IDAgMSAxIC0zLjUgMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyLjY5MiA0OS45NThhMS43NDkgMS43NDkgMCAwIDAgMS43NS0xLjc1di0zYTEuNzUgMS43NSAwIDAgMCAtMy41IDB2M2ExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzguNzkyIDUxLjM1M2ExLjc1IDEuNzUgMCAwIDAgMi4zMzctLjgxNmwxLjMtMi43YTEuNzUgMS43NSAwIDAgMCAtMy4xNTItMS41MmwtMS4zIDIuN2ExLjc1IDEuNzUgMCAwIDAgLjgxNSAyLjMzNnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1LjA1MiA1NS45MTlhMS43NDggMS43NDggMCAwIDAgMS4wODgtLjM4bDIuMzQ4LTEuODY4YTEuNzUgMS43NSAwIDAgMCAtMi4xNzktMi43MzlsLTIuMzQ4IDEuODY4YTEuNzUgMS43NSAwIDAgMCAxLjA5MSAzLjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQuMjU2IDUwLjUzN2ExLjc1IDEuNzUgMCAxIDAgMy4xNTItMS41MjFsLTEuMy0yLjdhMS43NSAxLjc1IDAgMCAwIC0zLjE1MiAxLjUyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYuOSA1My42NzEgMi4zNDkgMS44NjhhMS43NSAxLjc1IDAgMCAwIDIuMTc4LTIuNzRsLTIuMzQ4LTEuODY3YTEuNzUgMS43NSAwIDEgMCAtMi4xNzkgMi43Mzl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01OC44MDggNzAuMjkyaDUwLjE5MmExLjc1MSAxLjc1MSAwIDAgMCAxLjc1LTEuNzV2LTEwYTEuNzUgMS43NSAwIDAgMCAtMS43NS0xLjc1aC01MC4xOTJhMS43NDkgMS43NDkgMCAwIDAgLTEuNzUgMS43NXYxMGExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1em0xLjc1LTEwaDQ2LjY5MnY2LjVoLTQ2LjY5MnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2LjEzNSA4Ny4yMDhoMzMuMTE1YTEuNzUgMS43NSAwIDAgMCAwLTMuNWgtMzMuMTE1YTEuNzUgMS43NSAwIDAgMCAwIDMuNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Cxe="PHN2ZyBoZWlnaHQ9IjYwMHB0IiB2aWV3Qm94PSItNDUgLTE5IDYwMCA2MDAuMDAxIiB3aWR0aD0iNjAwcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5OC4yMTQ4NDQgMGgtNTAuOTc2NTYzYy0xOC4xOTUzMTIuMDI3MzQzOC0zMi45MzM1OTMgMTQuNzY5NTMxLTMyLjk2NDg0MyAzMi45NjQ4NDR2MjQuODcxMDk0aC0xNDQuODI0MjE5Yy02MS40Mzc1LjA5Mzc1LTExMi4yNTM5MDcgNDcuODcxMDkzLTExNi4xMzI4MTMgMTA5LjE4NzVoLTM5LjA2NjQwNmMtNS41MTU2MjUgMC05Ljk4ODI4MSA0LjQ2ODc1LTkuOTg4MjgxIDkuOTg4MjgxdjMwLjUxMTcxOWgtMTAuMjg1MTU3Yy0zLjcwNzAzMSAwLTcuMTA1NDY4IDIuMDQ2ODc0LTguODM1OTM3IDUuMzI4MTI0bC04NS43Njk1MzEgMTYyLjU1NDY4OGMtMS42MzY3MTkgMy4wOTc2NTYtMS41MzEyNSA2LjgyNDIxOS4yNzczNDQgOS44MjQyMTkgMS44MDg1OTMgMyA1LjA1MDc4MSA0LjgyODEyNSA4LjU1NDY4NyA0LjgyODEyNWgxMDguMTIxMDk0Yy4xNzU3ODEgMy45NTcwMzEuNjc1NzgxIDcuODg2NzE4IDEuNDk2MDkzIDExLjc2MTcxOCA3LjU3MDMxMyAzNS4wNTQ2ODggMzguNTU4NTk0IDYwLjA5Mzc1IDc0LjQyNTc4MiA2MC4xMjUgMzUuODcxMDk0LjAzNTE1NyA2Ni45MDIzNDQtMjQuOTQ5MjE4IDc0LjUzNTE1Ni01OS45OTYwOTMuODQzNzUtMy45MTAxNTcgMS4zNjcxODgtNy44OTA2MjUgMS41NTA3ODEtMTEuODk0NTMxaDEwOC4xMzY3MTljMy41IDAgNi43NS0xLjgzMjAzMiA4LjU1NDY4OC00LjgzMjAzMiAxLjgwODU5My0zIDEuOTE3OTY4LTYuNzI2NTYyLjI3NzM0My05LjgyMDMxMmwtODUuNzY5NTMxLTE2Mi41NDY4NzVjLTEuNzMwNDY5LTMuMjg5MDYzLTUuMTQ0NTMxLTUuMzM5ODQ0LTguODU5Mzc1LTUuMzMyMDMxaC0xMC4yNjE3MTl2LTMwLjUxMTcxOWMwLTUuNTE5NTMxLTQuNDcyNjU2LTkuOTg4MjgxLTkuOTg4MjgxLTkuOTg4MjgxaC00NC41MzUxNTZjMi4xNDA2MjUtMjIuNDcyNjU3IDIwLjk4ODI4MS0zOS42NDQ1MzIgNDMuNTYyNS0zOS42OTkyMTloMTQ0LjgwNDY4N3YyOC4xNjAxNTZjLjAzNTE1NiAxOC4xOTE0MDYgMTQuNzc3MzQ0IDMyLjkzMzU5NCAzMi45Njg3NSAzMi45NjA5MzdoNTAuOTgwNDY5YzUuNTE1NjI1IDAgOS45ODgyODEtNC40NjQ4NDMgOS45ODgyODEtOS45ODgyODF2LTE2OC40Njg3NWMwLTUuNTExNzE5LTQuNDY0ODQ0LTkuOTgwNDY4NS05Ljk3NjU2Mi05Ljk4ODI4MXptLTI1MC45MTc5NjkgMzk3LjYzMjgxMmMtNS41NjY0MDYgMjUuOTMzNTk0LTI4LjUwNzgxMyA0NC40NTMxMjYtNTUuMDMxMjUgNDQuNDIxODc2LTI2LjUzMTI1LS4wMjczNDQtNDkuNDI1NzgxLTE4LjU5NzY1Ny01NC45MzM1OTQtNDQuNTQ2ODc2LS41NTQ2ODctMi40NTMxMjQtLjkyNTc4MS00Ljk0OTIxOC0xLjEyMTA5My03LjQ1MzEyNGgxMTIuMjM0Mzc0Yy0uMTk5MjE4IDIuNTUwNzgxLS41ODU5MzcgNS4wODIwMzEtMS4xNDg0MzcgNy41NzgxMjR6bTExMi42MDU0NjktMjcuNTc0MjE4aC0xMDEuMzk0NTMyYy0uMDY2NDA2IDAtLjEzNjcxOCAwLS4yMDMxMjQgMGgtMTMxLjk2MDkzOGMtLjA3MDMxMiAwLS4xMzY3MTkgMC0uMjA3MDMxIDBoLTEwMS4zOTQ1MzFsNzUuMjUzOTA2LTE0Mi41NTQ2ODhoMTg0LjY4MzU5NHptLTk5LjQ3MjY1Ni0xNjIuNTM1MTU2aC0xMzYuMTkxNDA3di0yMC41MTk1MzJoMTM2LjE5MTQwN3ptOC45OTYwOTMtMTAwLjE4MzU5NGMtMzMuNTM1MTU2LjI3MzQzNy02MS4yNDYwOTMgMjYuMjM4MjgxLTYzLjY5NTMxMiA1OS42ODM1OTRoLTMyLjQzMzU5NGMzLjg0NzY1Ni01MC4yNzM0MzggNDUuNzMwNDY5LTg5LjEyNSA5Ni4xNTIzNDQtODkuMTg3NWgxNDQuODA0Njg3djI5LjUwMzkwNnptMjE4Ljc2OTUzMSA2MS4xNDA2MjVoLTQwLjk4NDM3NGMtNy4xNjc5NjktLjAxOTUzMS0xMi45NzI2NTctNS44MjQyMTktMTIuOTkyMTg4LTEyLjk4ODI4MXYtMTIyLjUwNzgxM2MuMDE5NTMxLTcuMTYwMTU2IDUuODI0MjE5LTEyLjk2NDg0NCAxMi45OTIxODgtMTIuOTg0Mzc1aDQwLjk4NDM3NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im05MC41MTU2MjUgNDE1Ljk5MjE4OGMwLTUuNTE1NjI2LTQuNDcyNjU2LTkuOTg4MjgyLTkuOTg4MjgxLTkuOTg4MjgyaC02MS4zOTg0MzhjLTUuNTE1NjI1IDAtOS45ODgyODEgNC40NzI2NTYtOS45ODgyODEgOS45ODgyODIgMCA1LjUxOTUzMSA0LjQ3MjY1NiA5Ljk5MjE4NyA5Ljk4ODI4MSA5Ljk5MjE4N2g2MS4zOTg0MzhjNS41MTU2MjUgMCA5Ljk4ODI4MS00LjQ3MjY1NiA5Ljk4ODI4MS05Ljk5MjE4N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTcuNTM5MDYyIDQ3Mi42NzE4NzUtNDAuMDcwMzEyIDM3Ljc0NjA5NGMtMi42NDA2MjUgMi40MzM1OTMtMy43NzM0MzggNi4xMDE1NjItMi45NTcwMzEgOS41OTc2NTYuODEyNSAzLjUwMzkwNiAzLjQ0MTQwNiA2LjI5Njg3NSA2Ljg4NjcxOSA3LjMxNjQwNiAzLjQ0NTMxMiAxLjAyMzQzOCA3LjE3NTc4MS4xMTcxODggOS43NjU2MjQtMi4zNzVsNDAuMDcwMzEzLTM3LjczODI4MWMyLjY0MDYyNS0yLjQzMzU5NCAzLjc2OTUzMS02LjEwMTU2MiAyLjk1NzAzMS05LjYwNTQ2OS0uODE2NDA2LTMuNDk2MDkzLTMuNDQ1MzEyLTYuMjkyOTY5LTYuODg2NzE4LTcuMzE2NDA2LTMuNDQ5MjE5LTEuMDE5NTMxLTcuMTc1NzgyLS4xMTMyODEtOS43NjU2MjYgMi4zNzV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzY1LjU0Njg3NSA0MDYuMDAzOTA2aC02MS4zOTA2MjVjLTUuNTE5NTMxIDAtOS45OTIxODggNC40NzI2NTYtOS45OTIxODggOS45ODgyODIgMCA1LjUxOTUzMSA0LjQ3MjY1NyA5Ljk5MjE4NyA5Ljk5MjE4OCA5Ljk5MjE4N2g2MS4zOTA2MjVjNS41MTk1MzEgMCA5Ljk4ODI4MS00LjQ3MjY1NiA5Ljk4ODI4MS05Ljk5MjE4NyAwLTUuNTE1NjI2LTQuNDY4NzUtOS45ODgyODItOS45ODgyODEtOS45ODgyODJ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY3LjA0Njg3NSA0NzIuNjcxODc1Yy0yLjU4OTg0NC0yLjQ4ODI4MS02LjMxNjQwNi0zLjM5NDUzMS05Ljc2NTYyNS0yLjM3NS0zLjQ0NTMxMiAxLjAyMzQzNy02LjA3NDIxOSAzLjgyMDMxMy02Ljg4NjcxOSA3LjMxNjQwNi0uODE2NDA2IDMuNTAzOTA3LjMxNjQwNyA3LjE3MTg3NSAyLjk1MzEyNSA5LjYwNTQ2OWw0MC4wNjI1IDM3LjcyMjY1NmMyLjU4OTg0NCAyLjQ5MjE4OCA2LjMxNjQwNiAzLjQwMjM0NCA5Ljc2NTYyNSAyLjM3NSAzLjQ0MTQwNy0xLjAxOTUzMSA2LjA3MDMxMy0zLjgxMjUgNi44ODY3MTktNy4zMTY0MDYuODEyNS0zLjQ5NjA5NC0uMzE2NDA2LTcuMTY0MDYyLTIuOTU3MDMxLTkuNjAxNTYyem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE5Mi4yNzM0MzggNDkwLjkzMzU5NGMtNS41MTU2MjYgMC05Ljk4ODI4MiA0LjQ3MjY1Ni05Ljk4ODI4MiA5Ljk5MjE4N3Y1MC44NDc2NTdjMCAuMjQ2MDkzLS4wMjM0MzcuNTAzOTA2LS4wMjM0MzcuNzM4MjgxIDAgNS41MTU2MjUgNC40NzI2NTYgOS45ODgyODEgOS45ODgyODEgOS45ODgyODEuNDI1NzgxLS4wMDM5MDYuODU1NDY5LS4wMjczNDQgMS4yNzczNDQtLjA4NTkzOCA0Ljk5MjE4Ny0uNjI4OTA2IDguNzM4MjgxLTQuODc4OTA2IDguNzM4MjgxLTkuOTA2MjV2LTUxLjU4MjAzMWMwLTUuNTE5NTMxLTQuNDcyNjU2LTkuOTkyMTg3LTkuOTkyMTg3LTkuOTkyMTg3em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",pxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ3OC41MTEsODguNjIyQzQwMy42OTQsNjkuMjIzLDMyOC40MzcsMzkuMDE3LDI2MC44NzgsMS4yNjljLTMuMDMtMS42OTItNi43MjMtMS42OTMtOS43NTUsMA0KCQkJQzE4MS42MjEsNDAuMDk5LDExMC40MzIsNjguNjcyLDMzLjQ4OSw4OC42MjNjLTQuNDEsMS4xNDQtNy40OSw1LjEyNC03LjQ5LDkuNjh2MTEwLjM5NGMwLDExMy41MzUsNTUuMjkyLDE4OC42MzksMTAxLjY3OCwyMzEuNjUNCgkJCWM0OS43NTcsNDYuMTM4LDEwNy40Niw3MS42NTUsMTI4LjMyNCw3MS42NTVjMjAuODY0LDAsNzguNTY3LTI1LjUxNywxMjguMzI0LTcxLjY1NQ0KCQkJYzQ2LjM4NC00My4wMTEsMTAxLjY3OC0xMTguMTE0LDEwMS42NzgtMjMxLjY1Vjk4LjMwMkM0ODYuMDAyLDkzLjc0Niw0ODIuOTIyLDg5Ljc2Niw0NzguNTExLDg4LjYyMnogTTM3MC43MjYsNDI1LjY3OA0KCQkJYy0yNy41NTcsMjUuNTUzLTU0LjMzNiw0MS42ODUtNzEuOTUsNTAuNzE4Yy0yMi4zMTksMTEuNDQ3LTM3LjgxLDE1LjYwMy00Mi43NzYsMTUuNjAzYy00Ljk2NiwwLTIwLjQ1Ni00LjE1NS00Mi43NzYtMTUuNjAzDQoJCQljLTE3LjYxMi05LjAzMy00NC4zOTItMjUuMTY1LTcxLjk1LTUwLjcxOGMtNDMuNDY0LTQwLjMwMy05NS4yNzYtMTEwLjY2My05NS4yNzYtMjE2Ljk4M1YxMDYuMDA4DQoJCQljNzMuOTY0LTE5LjgsMTQyLjgwMS00Ny41MjMsMjEwLjAwMy04NC41NzRjNjUuNDk4LDM2LjA1OSwxMzcuODI3LDY1LjE4NSwyMTAsODQuNTcxdjEwMi42OWgwLjAwMQ0KCQkJQzQ2Ni4wMDEsMzE1LjAxNSw0MTQuMTksMzg1LjM3NSwzNzAuNzI2LDQyNS42Nzh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NDMuNzkzLDExNS4zNjhjLTYzLjMzNi0xOC40MTMtMTI0LjkzNi00My40MjQtMTgzLjA4Ny03NC4zMzdjLTIuOTM4LTEuNTYzLTYuNDYxLTEuNTYtOS4zOTcsMC4wMDYNCgkJCUMxOTMuMDY5LDcyLjA3OSwxMzEuNDcsOTcuMDk0LDY4LjIyLDExNS4zODdjLTQuMjc3LDEuMjM3LTcuMjIyLDUuMTUzLTcuMjIyLDkuNjA2djgzLjcwMmMwLDM5LjA3Nyw3LjQwNSw3Ni4xNjEsMjIuMDA4LDExMC4yMjINCgkJCWMxNC41MywzMy44OTEsMzYuMjAxLDY0LjgyLDY0LjQwOSw5MS45MzNjMjAuMTc1LDE5LjM5LDQzLjQ2OSwzNi40NzcsNjcuMzY3LDQ5LjQxM2M0LjI4MiwyLjMxOCwyNi4zMDUsMTQuMDAzLDM5LjQwMiwxNi40MjENCgkJCWMwLjYsMC4xMSwxLjIwNywwLjE2NiwxLjgxNSwwLjE2NmMwLjYwOCwwLDEuMjE1LTAuMDU2LDEuODE1LTAuMTY2YzEzLjA5Ny0yLjQxOCwzNS4xMi0xNC4xMDMsMzkuNDAyLTE2LjQyMQ0KCQkJYzIzLjg5NS0xMi45MzYsNDcuMTktMzAuMDIzLDY3LjM2Ny00OS40MTNjMjguMjA4LTI3LjExMSw0OS44NzgtNTguMDQxLDY0LjQwOS05MS45MzNjMTQuNjAzLTM0LjA2LDIyLjAwOC03MS4xNDQsMjIuMDA4LTExMC4yMjINCgkJCXYtODMuNzI0QzQ1MS4wMDEsMTIwLjUyNCw0NDguMDYzLDExNi42MTEsNDQzLjc5MywxMTUuMzY4eiBNNDMxLjAwMSwyMDguNjk1YzAsNzMuMzc2LTI3LjAwOCwxMzYuNTM4LTgwLjI3NiwxODcuNzM0DQoJCQljLTE4Ljg5OCwxOC4xNjItNDAuNjkzLDM0LjE1My02My4wMjksNDYuMjQ1Yy0xMC4xNjcsNS41MDMtMjMuODkyLDExLjkxOS0zMS42OTcsMTMuOTM0Yy03LjgwNS0yLjAxNS0yMS41My04LjQzMS0zMS42OTYtMTMuOTM0DQoJCQljLTIyLjMzNy0xMi4wOTMtNDQuMTMyLTI4LjA4NC02My4wMjktNDYuMjQ1Yy01My4yNjctNTEuMTk1LTgwLjI3Ni0xMTQuMzU5LTgwLjI3Ni0xODcuNzM0VjEzMi40OA0KCQkJYzYwLjM1NC0xNy45NjksMTE5LjE3Mi00MS45MzEsMTc1LjAxOS03MS4zMDZjNTUuNzU3LDI5LjI1MSwxMTQuNTY5LDUzLjIwNCwxNzQuOTgzLDcxLjI3NFYyMDguNjk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTczLjAyNywzNTguMzA1bC0wLjItMC4yMTVjLTMuNzAxLTQuMDU1LTkuOTg3LTQuMzY3LTE0LjA3My0wLjY4OWMtNC4xMDUsMy42OTQtNC40MzgsMTAuMDE3LTAuNzQ0LDE0LjEyMmwwLjIsMC4yMTUNCgkJCWMxLjk3MSwyLjE1OCw0LjY3MywzLjI1Niw3LjM4NywzLjI1NmMyLjM4MywwLDQuNzc1LTAuODQ4LDYuNjg2LTIuNTY3QzE3Ni4zODgsMzY4LjczMywxNzYuNzIxLDM2Mi40MDksMTczLjAyNywzNTguMzA1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjI2Ljk2Myw0MDMuNjk1Yy0xMi4wNDYtNy42MDItMjMuNjQ1LTE2LjM2NC0zNC40NzMtMjYuMDQ0Yy00LjExNy0zLjY4Mi0xMC40MzktMy4zMjctMTQuMTIsMC43OQ0KCQkJYy0zLjY4LDQuMTE4LTMuMzI2LDEwLjQzOSwwLjc5MiwxNC4xMmMxMS42NTMsMTAuNDE4LDI0LjE0NSwxOS44NTQsMzcuMTI5LDI4LjA0OGMxLjY1NywxLjA0NSwzLjUwMiwxLjU0NCw1LjMyNywxLjU0NA0KCQkJYzMuMzE4LDAsNi41NjQtMS42NSw4LjQ2Ni00LjY2NEMyMzMuMDMyLDQxMi44MTgsMjMxLjYzNSw0MDYuNjQyLDIyNi45NjMsNDAzLjY5NXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwOC44OTgsMjA5LjA3N3YtMzIuOTIxYzAtMjkuMTY4LTIzLjczLTUyLjg5OC01Mi45LTUyLjg5OGMtMjkuMTY4LDAtNTIuODk4LDIzLjczLTUyLjg5OCw1Mi44OTh2MzIuOTIxDQoJCQljLTExLjg5OCwwLjQyOS0yMS40NDcsMTAuMjM1LTIxLjQ0NywyMi4yMzZ2NzYuNzY5Yy0wLjAwMSwxMi4yNzMsOS45ODQsMjIuMjU3LDIyLjI1NywyMi4yNTdIMzA4LjA5DQoJCQljMTIuMjczLDAsMjIuMjU4LTkuOTg0LDIyLjI1OC0yMi4yNTd2LTc2Ljc2OUMzMzAuMzQ4LDIxOS4zMTEsMzIwLjc5OCwyMDkuNTA0LDMwOC44OTgsMjA5LjA3N3ogTTIyMy4wOTksMTc2LjE1Ng0KCQkJYzAtMTguMTQsMTQuNzU5LTMyLjg5OCwzMi45LTMyLjg5OGMxOC4xNCwwLDMyLjg5OCwxNC43NTgsMzIuODk4LDMyLjg5OHYzMi45aC02NS43OTlWMTc2LjE1NnogTTMxMC4zNDcsMzA4LjA4Mw0KCQkJYzAsMS4yMjQtMS4wMzQsMi4yNTctMi4yNTgsMi4yNTdIMjAzLjkwOGMtMS4yMjQsMC0yLjI1OC0xLjAzMy0yLjI1OC0yLjI1N3YtNzYuNzY5aDAuMDAxYzAtMS4yMjQsMS4wMzQtMi4yNTcsMi4yNTgtMi4yNTdoOS4xODkNCgkJCWg4NS43OTloOS4xOTJjMS4yMjQsMCwyLjI1OCwxLjAzMywyLjI1OCwyLjI1N1YzMDguMDgzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDI0OS42NGMtNy43MDEsMC0xMy45ODIsNi4yODEtMTMuOTgyLDEzLjk4MmMwLDMuNzg2LDEuNTIzLDcuMjI1LDMuOTgyLDkuNzQ2djkuNzg3YzAsNS41MjIsNC40NzcsMTAsMTAsMTANCgkJCWM1LjUyMywwLDEwLTQuNDc4LDEwLTEwdi05Ljc4N2MyLjQ1OS0yLjUyMiwzLjk4Mi01Ljk2LDMuOTgyLTkuNzQ2QzI2OS45ODIsMjU1LjkyMSwyNjMuNzAxLDI0OS42NCwyNTYsMjQ5LjY0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Axe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00OTYuODgyODEyIDBoLTQ4MS43NjU2MjRjLTguMzQ3NjU3IDAtMTUuMTE3MTg4IDYuNzY5NTMxLTE1LjExNzE4OCAxNS4xMTcxODh2NDgxLjc2NTYyNGMwIDguMzQ3NjU3IDYuNzY5NTMxIDE1LjExNzE4OCAxNS4xMTcxODggMTUuMTE3MTg4aDQ4MS43NjU2MjRjOC4zNDc2NTcgMCAxNS4xMTcxODgtNi43Njk1MzEgMTUuMTE3MTg4LTE1LjExNzE4OHYtNDgxLjc2NTYyNGMwLTguMzQ3NjU3LTYuNzY5NTMxLTE1LjExNzE4OC0xNS4xMTcxODgtMTUuMTE3MTg4em0tNDA2LjE3NTc4MSA0MjEuMjkyOTY5di04OC42OTUzMTNoMTE5LjA3NDIxOXY4OC42OTUzMTN6bS02MC40NzI2NTYtMzkxLjA1ODU5NGg2OC40NTMxMjV2MzAuMjM4MjgxaC02OC40NTMxMjV6bTAgNjAuNDcyNjU2aDY4LjQ1MzEyNXYzMC4yMzgyODFoLTY4LjQ1MzEyNXptMzUyLjgzOTg0NC01OC40NTMxMjV2MjguMjE4NzVoLTI1NC4xNDg0Mzh2LTI4LjIxODc1em0tMjU0LjE0ODQzOCAyMzkuODcxMDk0aDI1NC4xNTIzNDR2MzAuMjM4MjgxaC0yNTQuMTUyMzQ0em0wLTMwLjIzNDM3NXYtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0wLTYwLjQ3MjY1NnYtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0wLTYwLjQ3MjY1N3YtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0tOTguNjkxNDA2IDMwLjIzNDM3Nmg2OC40NTMxMjV2MzAuMjM4MjgxaC02OC40NTMxMjV6bTAgNjAuNDcyNjU2aDY4LjQ1MzEyNXYzMC4yMzgyODFoLTY4LjQ1MzEyNXptMCA2MC40NzI2NTZoNjguNDUzMTI1djMwLjIzODI4MWgtNjguNDUzMTI1em0zODMuMDc4MTI1IDBoNjguNDUzMTI1djMwLjIzODI4MWgtNjguNDUzMTI1em02OC40NTMxMjUtMzAuMjM0Mzc1aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU2aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU3aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU2aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bS0yNDEuNzUgMjcyLjEyNWgzMC4yMzgyODF2ODguNjk1MzEzaC0zMC4yMzgyODF6bTYwLjQ3NjU2MyAwaDEyMC44MDA3ODF2ODguNjk1MzEzaC0xMjAuODAwNzgxem0tMjcwLjI1NzgxMyAxNDkuMTY3OTY5di0xNDkuMTY3OTY5aDMwLjIzODI4MXYxMDMuODEyNWMwIDguMzQ3NjU2IDYuNzY5NTMyIDE1LjExNzE4OCAxNS4xMTcxODggMTUuMTE3MTg4aDM2MC44MjAzMTJjOC4zNDc2NTYgMCAxNS4xMTcxODgtNi43Njk1MzIgMTUuMTE3MTg4LTE1LjExNzE4OHYtMTAzLjgxMjVoMzAuMjM4MjgxdjE0OS4xNjc5Njl6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",mxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0yIDUxMiA1MTIiIHdpZHRoPSI1MTJwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzQ4LjI0NjA5NCAzNzYuNzg1MTU2Yy0zLjI1LTIuNjA1NDY4LTcuOTkyMTg4LTIuMDgyMDMxLTEwLjU5NzY1NiAxLjE2NDA2M2wtMjguOTQ5MjE5IDM2LjA5Mzc1Yy0zLjk4NDM3NSA0Ljk2ODc1LS4zNjcxODggMTIuMjU3ODEyIDUuODc1IDEyLjI1NzgxMiAyLjIxMDkzNyAwIDQuMzk4NDM3LS45Njg3NSA1Ljg4NjcxOS0yLjgyNDIxOWwyOC45NDkyMTgtMzYuMDkzNzVjMi42MDU0NjktMy4yNSAyLjA4NTkzOC03Ljk5MjE4Ny0xLjE2NDA2Mi0xMC41OTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkwLjM1OTM3NSAzNTguNzM4MjgxYy0zLjI1LTIuNjA1NDY5LTcuOTkyMTg3LTIuMDgyMDMxLTEwLjU5NzY1NiAxLjE2NDA2M2wtMjguOTQ5MjE5IDM2LjA5Mzc1Yy0zLjk4NDM3NSA0Ljk2ODc1LS4zNjcxODggMTIuMjU3ODEyIDUuODc1IDEyLjI1NzgxMiAyLjIxMDkzOCAwIDQuMzk4NDM4LS45Njg3NSA1Ljg4NjcxOS0yLjgyNDIxOGwyOC45NDkyMTktMzYuMDkzNzVjMi42MDU0NjgtMy4yNDYwOTQgMi4wODU5MzctNy45OTIxODgtMS4xNjQwNjMtMTAuNTk3NjU3em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTExMS43NSA0MjIuMDUwNzgxYzIuMTA5Mzc1IDAgNC4yMDcwMzEtLjg3ODkwNiA1LjY5OTIxOS0yLjU5NzY1NmwzOS42MTMyODEtNDUuNjQ0NTMxYzIuNzMwNDY5LTMuMTQ0NTMyIDIuMzk0NTMxLTcuOTA2MjUtLjc1LTEwLjYzMjgxMy0zLjE0NDUzMS0yLjczMDQ2OS03LjkxMDE1Ni0yLjM5NDUzMS0xMC42MzY3MTkuNzVsLTM5LjYxNzE4NyA0NS42NDQ1MzFjLTQuMjUzOTA2IDQuOTAyMzQ0LS42OTUzMTMgMTIuNDgwNDY5IDUuNjkxNDA2IDEyLjQ4MDQ2OXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTYuNjIxMDk0IDM3Ni43ODUxNTZjLTMuMjUtMi42MDU0NjgtNy45OTYwOTQtMi4wODIwMzEtMTAuNjAxNTYzIDEuMTY0MDYzbC0xNC40NzI2NTYgMTguMDQ2ODc1Yy0yLjYwNTQ2OSAzLjI1LTIuMDgyMDMxIDcuOTk2MDk0IDEuMTY0MDYzIDEwLjU5NzY1NiAzLjI2OTUzMSAyLjYyNSA4LjAxMTcxOCAyLjA2MjUgMTAuNTk3NjU2LTEuMTY0MDYybDE0LjQ3NjU2Mi0xOC4wNDY4NzZjMi42MDU0NjktMy4yNSAyLjA4MjAzMi03Ljk5MjE4Ny0xLjE2NDA2Mi0xMC41OTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDM3Ljk5MjE4OCAzOTQuODMyMDMxYy0zLjI1LTIuNjA1NDY5LTcuOTkyMTg4LTIuMDgyMDMxLTEwLjU5NzY1NyAxLjE2NDA2M2wtMTQuNDc2NTYyIDE4LjA0Njg3NWMtMi42MDU0NjkgMy4yNS0yLjA4MjAzMSA3Ljk5MjE4NyAxLjE2NDA2MiAxMC41OTc2NTYgMy4yNjk1MzEgMi42MjEwOTQgOC4wMTE3MTkgMi4wNjI1IDEwLjYwMTU2My0xLjE2NDA2M2wxNC40NzI2NTYtMTguMDQ2ODc0YzIuNjA1NDY5LTMuMjQ2MDk0IDIuMDgyMDMxLTcuOTkyMTg4LTEuMTY0MDYyLTEwLjU5NzY1N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTYuNDcyNjU2IDM2Mi45ODQzNzVjLTMuMjUtMi42MDU0NjktNy45OTIxODctMi4wODIwMzEtMTAuNTk3NjU2IDEuMTY0MDYzbC0xNC40NzY1NjIgMTguMDUwNzgxYy0yLjYwNTQ2OSAzLjI0NjA5My0yLjA4MjAzMiA3Ljk5MjE4NyAxLjE2NDA2MiAxMC41OTc2NTYgMy4yNjk1MzEgMi42MjEwOTQgOC4wMTE3MTkgMi4wNjI1IDEwLjU5NzY1Ni0xLjE2NDA2M2wxNC40NzI2NTYtMTguMDQ2ODc0YzIuNjA5Mzc2LTMuMjUgMi4wODU5MzgtNy45OTYwOTQtMS4xNjAxNTYtMTAuNjAxNTYzem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwNC40NjA5MzggMGMtMTcuMjUzOTA3IDAtNDY2LjU5Mzc1IDAtNDk2LjkyMTg3NiAwLTQuMTYwMTU2IDAtNy41MzkwNjIgMy4zNjcxODgtNy41MzkwNjIgNy41MzkwNjJ2NDkzLjg2NzE4OGMwIDQuMTcxODc1IDMuMzc4OTA2IDcuNTM5MDYyIDcuNTM5MDYyIDcuNTM5MDYyaDQyMi4yMTA5MzhjNC4xNjAxNTYgMCA3LjUzOTA2Mi0zLjM2NzE4NyA3LjUzOTA2Mi03LjUzOTA2MiAwLTQuMTY0MDYyLTMuMzc4OTA2LTcuNTQyOTY5LTcuNTM5MDYyLTcuNTQyOTY5aC00MTQuNjcxODc1di0xNDMuODgyODEyaDE0LjM2NzE4N3Y5MC45NTcwMzFjMCA0LjE2NDA2MiAzLjM3NSA3LjUzOTA2MiA3LjUzOTA2MyA3LjUzOTA2MmgxMjYuNDAyMzQ0YzQuMTYwMTU2IDAgNy41MzkwNjItMy4zNzUgNy41MzkwNjItNy41MzkwNjIgMC00LjE2MDE1Ni0zLjM3ODkwNi03LjUzOTA2Mi03LjUzOTA2Mi03LjUzOTA2MmgtMTE4Ljg2MzI4MXYtODMuNDE3OTY5aDE0LjUzOTA2MnYyNi4xMjEwOTNjMCA0LjE2NDA2MyAzLjM3NSA3LjUzOTA2MyA3LjUzOTA2MiA3LjUzOTA2MyA0LjE2NDA2MyAwIDcuNTM5MDYzLTMuMzc1IDcuNTM5MDYzLTcuNTM5MDYzdi0yNi4xMjEwOTNoMTUzLjcxMDkzN3Y4My40MTc5NjloLTM0LjMwODU5M2MtNC4xNjAxNTcgMC03LjUzOTA2MyAzLjM3ODkwNi03LjUzOTA2MyA3LjUzOTA2MiAwIDQuMTY0MDYyIDMuMzc4OTA2IDcuNTM5MDYyIDcuNTM5MDYzIDcuNTM5MDYyaDI4MS40NzI2NTZjNC4xNjQwNjMgMCA3LjUzOTA2My0zLjM3NSA3LjUzOTA2My03LjUzOTA2MnYtOTAuOTU3MDMxaDE0LjM2NzE4N3YxNDMuODgyODEyaC0zNy4wMTU2MjVjLTQuMTYwMTU2IDAtNy41MzkwNjIgMy4zNzg5MDctNy41MzkwNjIgNy41NDI5NjkgMCA0LjE3MTg3NSAzLjM3ODkwNiA3LjUzOTA2MiA3LjUzOTA2MiA3LjUzOTA2Mmg0NC41NTQ2ODhjNC4xNjAxNTYgMCA3LjUzOTA2Mi0zLjM2NzE4NyA3LjUzOTA2Mi03LjUzOTA2MiAwLTUzLjg2MzI4MSAwLTQzNy40OTYwOTQgMC00OTMuODY3MTg4IDAtNC4xNzE4NzQtMy4zNzg5MDYtNy41MzkwNjItNy41MzkwNjItNy41MzkwNjJ6bS00NDUuMzk4NDM4IDMzNC45MDIzNDRjLTEzLjcxNDg0NCAwLTMwLjA1ODU5NCAwLTQzLjk4NDM3NSAwIDAtOS41NTA3ODIgMC0xNi4yNTc4MTMgMC0yNi43ODEyNWg0My45ODQzNzV6bTAtNDEuODU5Mzc1aC00My45ODQzNzV2LTI2Ljc4OTA2M2g0My45ODQzNzV6bTAtNDEuODY3MTg4aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzg5MDYyaDQzLjk4NDM3NXptMC00MS44NzEwOTRoLTQzLjk4NDM3NXYtMjYuNzc3MzQzaDQzLjk4NDM3NXptMC00MS44NTkzNzRjLTkuNzAzMTI1IDAtMzMuOTE3OTY5IDAtNDMuOTg0Mzc1IDB2LTI2Ljc4OTA2M2g0My45ODQzNzV6bTAtNDEuODY3MTg4aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzgxMjVoNDMuOTg0Mzc1em0xNS4wNzgxMjUtMjYuNzgxMjVoMzYzLjcxODc1djI2Ljc4MTI1aC0zNjMuNzE4NzV6bTAgODMuNzE4NzVoMjg5LjMwMDc4MWM0LjE2NDA2MyAwIDcuNTM5MDYzLTMuMzY3MTg3IDcuNTM5MDYzLTcuNTM5MDYzIDAtNC4xNjAxNTYtMy4zNzUtNy41MzkwNjItNy41MzkwNjMtNy41MzkwNjItMS4yMzQzNzUgMC0yODIuOTQxNDA2IDAtMjg5LjMwMDc4MSAwdi0yNi43ODEyNWgzNjMuNzE4NzV2MjYuNzgxMjVoLTQ0LjI1NzgxM2MtNC4xNjQwNjIgMC03LjUzOTA2MiAzLjM3ODkwNi03LjUzOTA2MiA3LjUzOTA2MiAwIDQuMTcxODc2IDMuMzc1IDcuNTM5MDYzIDcuNTM5MDYyIDcuNTM5MDYzaDQ0LjI1NzgxM3YyNi43ODkwNjNjLTExLjYyNSAwLTM1NC40OTIxODcgMC0zNjMuNzE4NzUgMHptMCA0MS44NzEwOTRoMzYzLjcxODc1djI2Ljc3NzM0M2gtMzYzLjcxODc1em0wIDQxLjg1OTM3NWgzNjMuNzE4NzV2MjYuNzg5MDYyaC0zNjMuNzE4NzV6bTAgNDEuODY3MTg3aDM2My43MTg3NXYyNi43ODEyNWgtMzYzLjcxODc1em0wIDQxLjg1OTM3NWgzNjMuNzE4NzV2MjYuNzg5MDYzaC0zNjMuNzE4NzV6bTAgNjguNjQ4NDM4di0yNi43ODEyNWgzNjMuNzE4NzV2MjYuNzgxMjVjLTM1LjYxNzE4NyAwLTMyNi45NTMxMjUgMC0zNjMuNzE4NzUgMHptMzkzLjMzNTkzNyA5OC40OTYwOTRoLTE4My4zMjgxMjR2LTQwLjY2Nzk2OWMwLTQuMTY0MDYzLTMuMzc1LTcuNTM5MDYzLTcuNTM5MDYzLTcuNTM5MDYzcy03LjUzOTA2MyAzLjM3NS03LjUzOTA2MyA3LjUzOTA2M3Y0MC42Njc5NjloLTI2LjE0MDYyNHYtODMuNDE0MDYzaDI2LjE0MDYyNHYxMi41ODU5MzdjMCA0LjE2Nzk2OSAzLjM3NSA3LjUzOTA2MyA3LjUzOTA2MyA3LjUzOTA2M3M3LjUzOTA2My0zLjM3MTA5NCA3LjUzOTA2My03LjUzOTA2M3YtMTIuNTg5ODQzaDE1My43MTA5Mzd2MjYuMTIxMDkzYzAgNC4xNjQwNjMgMy4zNzUgNy41MzkwNjMgNy41MzkwNjMgNy41MzkwNjMgNC4xNjQwNjIgMCA3LjUzOTA2Mi0zLjM3NSA3LjUzOTA2Mi03LjUzOTA2M3YtMjYuMTIxMDkzaDE0LjUzOTA2MnptMjkuNDQ1MzEzLTk4LjQ5NjA5NGMtMTMuNzg5MDYzIDAtMjkuODY3MTg3IDAtNDMuOTg0Mzc1IDB2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzg5MDYzaDQzLjk4NDM3NXptMC00MS44NjcxODhoLTQzLjk4NDM3NXYtMjYuNzgxMjVoNDMuOTg0Mzc1em0wLTQxLjg1OTM3NWgtNDMuOTg0Mzc1di0yNi43ODkwNjJoNDMuOTg0Mzc1em0wLTQxLjg3MTA5NGgtNDMuOTg0Mzc1di0yNi43NzczNDNoNDMuOTg0Mzc1em0wLTQxLjg1OTM3NGgtNDMuOTg0Mzc1di0yNi43ODkwNjNoNDMuOTg0Mzc1em0wLTQxLjg2NzE4OGgtNDMuOTg0Mzc1di0yNi43ODEyNWg0My45ODQzNzV6bTAtNDEuODU5Mzc1aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",fxe="PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTU2LjgzOCAxaC00OS42NzZjLTMuMzk4IDAtNi4xNjIgMi43NjQtNi4xNjIgNi4xNjIgMCAuNjY1LjEwNiAxLjMyLjMxNiAxLjk0OWwuNTU4IDEuNjc2Yy44NDEgMi41MiAzLjE5IDQuMjEzIDUuODQ3IDQuMjEzaDQuMzg0bDEuNTA2IDEzLjU1MmMuMjgyIDIuNTM2IDIuNDE4IDQuNDQ4IDQuOTY5IDQuNDQ4aDI2Ljg0YzIuNTUxIDAgNC42ODgtMS45MTIgNC45NjktNC40NDhsMS41MDYtMTMuNTUyaDQuMzg0YzIuNjU3IDAgNS4wMDYtMS42OTMgNS44NDYtNC4yMTRsLjU1OC0xLjY3NGMuMjExLS42My4zMTctMS4yODUuMzE3LTEuOTUgMC0zLjM5OC0yLjc2NC02LjE2Mi02LjE2Mi02LjE2MnptLTMyLjgzOCAzMGgtNHYtOGMwLTEuMTAzLjg5Ny0yIDItMnMyIC44OTcgMiAyem0xMCAwaC00di04YzAtMS4xMDMuODk3LTIgMi0yczIgLjg5NyAyIDJ6bTEwIDBoLTR2LThjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptNC40MDItMi42NjhjLS4xNDcgMS4zMjQtMS4xMzggMi4zNjMtMi40MDIgMi42MTF2LTcuOTQzYzAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0djhoLTJ2LThjMC0yLjIwNi0xLjc5NC00LTQtNHMtNCAxLjc5NC00IDR2OGgtMnYtOGMwLTIuMjA2LTEuNzk0LTQtNC00cy00IDEuNzk0LTQgNHY3Ljk0MmMtMS4yNjQtLjI0OC0yLjI1NC0xLjI4Ny0yLjQwMi0yLjYxMWwtMS40ODEtMTMuMzMxaDM1Ljc2NnptMTIuMzg0LTE5Ljg1My0uNTU4IDEuNjc1Yy0uNTY3IDEuNzAyLTIuMTU0IDIuODQ2LTMuOTQ5IDIuODQ2aC00OC41NThjLTEuNzk0IDAtMy4zODEtMS4xNDQtMy45NDktMi44NDZsLS41NTgtMS42NzZjLS4xNDItLjQyNC0uMjE0LS44NjctLjIxNC0xLjMxNiAwLTIuMjk1IDEuODY3LTQuMTYyIDQuMTYyLTQuMTYyaDQ5LjY3NmMyLjI5NSAwIDQuMTYyIDEuODY3IDQuMTYyIDQuMTYyIDAgLjQ0OS0uMDcyLjg5Mi0uMjE0IDEuMzE3eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUgNWgtNmMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJoNmMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0yem0tNiA0di0yaDZsLjAwMSAyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTEgNWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcgOWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSA5aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDloMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQgNDB2LTFoLTFjLS4xMTkgMC0xLjc5OS4wNDItMy4xNzkgMi4wMzUtLjA0Ni0uMDYzLS4wOTItLjEzMS0uMTM4LS4xOTMtLjkwMy0xLjIzLTEuNjgzLTIuMjkzLTEuNjgzLTQuODQydi0xaC0xYy0uMTM5IDAtMi44OTMuMDU3LTQuNjI0IDMuMjc4LTIuMDUzLTMuMjIzLTUuMzI4LTMuMjc4LTUuMzc2LTMuMjc4aC0xdjFjMCAyLjU1OS0uNzg0IDMuNjMzLTEuNjkyIDQuODc3LS4wNC4wNTUtLjA4LjExNC0uMTIuMTY5LTEuMzgzLTIuMDA0LTMuMDY5LTIuMDQ2LTMuMTg4LTIuMDQ2aC0xdjFjMCAyLjU0My0uOTk1IDMuODMzLTIuMTQ3IDUuMzI3LTEuMzM3IDEuNzMzLTIuODUzIDMuNjk3LTIuODUzIDcuNjczIDAgNi4wNzUgMy45MjUgMTAgMTAgMTBoMTRjNi4wNzUgMCAxMC0zLjkyNSAxMC0xMCAwLTMuOTc2LTEuNTE2LTUuOTQtMi44NTMtNy42NzMtMS4xNTItMS40OTQtMi4xNDctMi43ODQtMi4xNDctNS4zMjd6bS0xOSAxN2MwLTIuMzk2IDEuMzU4LTMuNzE5IDIuNjcyLTUgLjg1MS0uODMgMS43MjQtMS42OCAyLjExNS0yLjc3My41Ni4zMSAxLjIxMyAxLjA0MyAxLjIxMyAyLjc3M3YzaDJ2LTFjMC0xLjk4NiAxLjIzOS0yLjY2IDIuMTQ3LTIuODg3LjM1NSAxLjMwNCAxLjI5NSAyLjI0NCAyLjE0NiAzLjA5NC45MTYuOTE2IDEuNzA3IDEuNzA3IDEuNzA3IDIuNzkzIDAgMS4zODMtMS40NjMgNC03IDRzLTctMi42MTctNy00em0xNCA0aC0uMTAyYzEuNTYyLTEuMjggMi4xMDItMi44OTkgMi4xMDItNCAwLTEuOTE0LTEuMjE4LTMuMTMyLTIuMjkzLTQuMjA3LS45MTYtLjkxNi0xLjcwNy0xLjcwNy0xLjcwNy0yLjc5M3YtMWgtMWMtLjg5MiAwLTIuMTkzLjI3OC0zLjI0NSAxLjA4OS0uNjgyLTIuMzk1LTIuNjI4LTMuMDg5LTMuNzU1LTMuMDg5aC0xdjFjMCAuODQ1LS42NTUgMS41MjYtMS43MjQgMi41NjgtMS40NiAxLjQyMy0zLjI3NiAzLjE5My0zLjI3NiA2LjQzMiAwIDEuMTAxLjU0IDIuNzIgMi4xMDIgNGgtLjEwMmMtMy44NjggMC04LTIuMTAyLTgtOCAwLTMuMjk0IDEuMTgzLTQuODI4IDIuNDM2LTYuNDUyIDEuMDU1LTEuMzY3IDIuMTM5LTIuNzcyIDIuNDY1LTUuMDg0Ljg5MS43MzkgMi4wOTkgMi42NDIgMi4wOTkgNy41MzZoMmMwLTIuNTYtLjMyMy00LjQ2MS0uODAzLTUuODc4LjIyOC0uMzY2LjQ2OS0uNzEzLjcyNi0xLjA2Ni44NDYtMS4xNTkgMS43OTEtMi40NTMgMi4wMjMtNC44NzkgMS40NTYuNDUzIDQuMDU0IDIuMDY5IDQuMDU0IDcuODIzaDJjMC0xLjYzLS4xOTEtMi45OS0uNTA2LTQuMTMyLjYzNy0yLjI3MyAxLjc2MS0zLjIxOCAyLjU2Ny0zLjYwMS4yMzggMi4zNDYgMS4xMzcgMy41NyAyLjAxIDQuNzU5LjI2Mi4zNTcuNTA3LjcwOC43MzggMS4wOC0uNDgzIDEuNDE4LS44MDkgMy4zMjQtLjgwOSA1Ljg5NGgyYzAtNC45MDYgMS4yMTQtNi44MDcgMi4wOTgtNy41NDIuMzI1IDIuMzE1IDEuNDExIDMuNzIyIDIuNDY2IDUuMDkgMS4yNTMgMS42MjQgMi40MzYgMy4xNTggMi40MzYgNi40NTIgMCA1Ljg5OC00LjEzMiA4LTggOHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Oxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDY3LDBINDVDMjAuMTg3LDAsMCwyMC4xODcsMCw0NXY0MjJjMCwyNC44MTMsMjAuMTg3LDQ1LDQ1LDQ1aDQyMmMyNC44MTMsMCw0NS0yMC4xODcsNDUtNDVWNDUNCgkJCUM1MTIsMjAuMTg3LDQ5MS44MTMsMCw0NjcsMHogTTQ4Miw0NjdjMCw4LjI3MS02LjcyOSwxNS0xNSwxNUg0NWMtOC4yNzEsMC0xNS02LjcyOS0xNS0xNVY0NWMwLTguMjcxLDYuNzI5LTE1LDE1LTE1aDQyMg0KCQkJYzguMjcxLDAsMTUsNi43MjksMTUsMTVWNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDgxYy05Ni40OTUsMC0xNzUsNzguNTA1LTE3NSwxNzVzNzguNTA1LDE3NSwxNzUsMTc1czE3NS03OC41MDUsMTc1LTE3NVMzNTIuNDk1LDgxLDI1Niw4MXogTTI1Niw0MDENCgkJCWMtNzkuOTUzLDAtMTQ1LTY1LjA0Ny0xNDUtMTQ1czY1LjA0Ny0xNDUsMTQ1LTE0NXMxNDUsNjUuMDQ3LDE0NSwxNDVTMzM1Ljk1Myw0MDEsMjU2LDQwMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4NywyMTZjLTIyLjA1NiwwLTQwLDE3Ljk0NC00MCw0MGMwLDIyLjA1NiwxNy45NDQsNDAsNDAsNDBjMjIuMDU2LDAsNDAtMTcuOTQ0LDQwLTQwQzIyNywyMzMuOTQ0LDIwOS4wNTYsMjE2LDE4NywyMTZ6DQoJCQkgTTE4NywyNjZjLTUuNTE0LDAtMTAtNC40ODYtMTAtMTBjMC01LjUxNCw0LjQ4Ni0xMCwxMC0xMGM1LjUxNCwwLDEwLDQuNDg2LDEwLDEwQzE5NywyNjEuNTE0LDE5Mi41MTQsMjY2LDE4NywyNjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zMjUsMjE2Yy0yMi4wNTYsMC00MCwxNy45NDQtNDAsNDBjMCwyMi4wNTYsMTcuOTQ0LDQwLDQwLDQwYzIyLjA1NiwwLDQwLTE3Ljk0NCw0MC00MEMzNjUsMjMzLjk0NCwzNDcuMDU2LDIxNiwzMjUsMjE2eg0KCQkJIE0zMjUsMjY2Yy01LjUxNCwwLTEwLTQuNDg2LTEwLTEwYzAtNS41MTQsNC40ODYtMTAsMTAtMTBjNS41MTQsMCwxMCw0LjQ4NiwxMCwxMEMzMzUsMjYxLjUxNCwzMzAuNTE0LDI2NiwzMjUsMjY2eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Exe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0zNjAsMEgxMjBDOTcuOTIsMC4wMjYsODAuMDI2LDE3LjkyLDgwLDQwdjM2OGMwLjAyNCwxOS4wMDEsMTMuMzg5LDM1LjM3MywzMiwzOS4yVjQ4MGg0OHYtMzJoMTYwdjMyaDQ4di0zMi44DQoJCQljMTguNjExLTMuODI3LDMxLjk3Ni0yMC4xOTksMzItMzkuMlY0MEMzOTkuOTc0LDE3LjkyLDM4Mi4wOCwwLjAyNiwzNjAsMHogTTE0NCw0NjRoLTE2di0xNmgxNlY0NjR6IE0zNTIsNDY0aC0xNnYtMTZoMTZWNDY0eg0KCQkJIE0zODQsNDA4YzAsMTMuMjU1LTEwLjc0NSwyNC0yNCwyNEgxMjBjLTEzLjI1NSwwLTI0LTEwLjc0NS0yNC0yNFY0MGMwLTEzLjI1NSwxMC43NDUtMjQsMjQtMjRoMjQwYzEzLjI1NSwwLDI0LDEwLjc0NSwyNCwyNFY0MDgNCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCwxNjBjLTcwLjY5MiwwLTEyOCw1Ny4zMDgtMTI4LDEyOGMwLjA4NCw3MC42NTgsNTcuMzQyLDEyNy45MTYsMTI4LDEyOGM3MC42OTIsMCwxMjgtNTcuMzA4LDEyOC0xMjgNCgkJCVMzMTAuNjkyLDE2MCwyNDAsMTYweiBNMjQwLDQwMGMtNjEuODU2LDAtMTEyLTUwLjE0NC0xMTItMTEyYzAuMDY2LTYxLjgyOCw1MC4xNzItMTExLjkzNCwxMTItMTEyYzYxLjg1NiwwLDExMiw1MC4xNDQsMTEyLDExMg0KCQkJUzMwMS44NTYsNDAwLDI0MCw0MDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNDAsMTkyYy01My4wMTksMC05Niw0Mi45ODEtOTYsOTZjMC4wNTcsNTIuOTk2LDQzLjAwNCw5NS45NDMsOTYsOTZjNTMuMDE5LDAsOTYtNDIuOTgxLDk2LTk2UzI5My4wMTksMTkyLDI0MCwxOTJ6DQoJCQkgTTI0MCwzNjhjLTQ0LjE4MywwLTgwLTM1LjgxNy04MC04MGMwLjA0OS00NC4xNjMsMzUuODM3LTc5Ljk1Miw4MC04MGM0NC4xODMsMCw4MCwzNS44MTcsODAsODBDMzIwLDMzMi4xODMsMjg0LjE4MywzNjgsMjQwLDM2OA0KCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjQwLDMyYy0zMC45MjgsMC01NiwyNS4wNzItNTYsNTZjMC4wMzUsMzAuOTEzLDI1LjA4Nyw1NS45NjUsNTYsNTZjMzAuOTI4LDAsNTYtMjUuMDcyLDU2LTU2DQoJCQlDMjk2LDU3LjA3MiwyNzAuOTI4LDMyLDI0MCwzMnogTTI0MCwxMjhjLTIyLjA5MSwwLTQwLTE3LjkwOS00MC00MGMwLjAyNi0yMi4wOCwxNy45Mi0zOS45NzQsNDAtNDBjMjIuMDkxLDAsNDAsMTcuOTA5LDQwLDQwDQoJCQlTMjYyLjA5MSwxMjgsMjQwLDEyOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCw2NGMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTMjUzLjI1NSw2NCwyNDAsNjR6IE0yNDAsOTZjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJCXMzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOFMyNDQuNDE4LDk2LDI0MCw5NnoiLz4NCiAgICAgICAgPHJlY3QgeD0iMTEyIiB5PSIzMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1MiIgeT0iMzIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KICAgICAgICA8cmVjdCB4PSIxMTIiIHk9IjQwMCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1MiIgeT0iNDAwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCwyNDhjLTIyLjA5MSwwLTQwLDE3LjkwOS00MCw0MGMwLjAyNiwyMi4wOCwxNy45MiwzOS45NzQsNDAsNDBjMjIuMDkxLDAsNDAtMTcuOTA5LDQwLTQwDQoJCQlDMjgwLDI2NS45MDksMjYyLjA5MSwyNDgsMjQwLDI0OHogTTI0MCwzMTJjLTEzLjI1NSwwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQsMjQtMjRzMjQsMTAuNzQ1LDI0LDI0UzI1My4yNTUsMzEyLDI0MCwzMTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00OCwyODBIMTZjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJjNC40MTgsMCw4LTMuNTgyLDgtOFM1Mi40MTgsMjgwLDQ4LDI4MHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUzLjY1NiwyMjYuMzQ0bC0yNC0yNGMtMy4xNzgtMy4wNjktOC4yNDMtMi45ODEtMTEuMzEyLDAuMTk3Yy0yLjk5NCwzLjEtMi45OTQsOC4wMTUsMCwxMS4xMTVsMjQsMjQNCgkJCWMzLjE3OCwzLjA2OSw4LjI0MywyLjk4MSwxMS4zMTItMC4xOTdDNTYuNjUsMjM0LjM1OSw1Ni42NSwyMjkuNDQ0LDUzLjY1NiwyMjYuMzQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTMuNDYsMzM4LjM0NGMtMy4xLTIuOTk1LTguMDE2LTIuOTk1LTExLjExNiwwbC0yNCwyNGMtMy4xNzgsMy4wNy0zLjI2Niw4LjEzNC0wLjE5NiwxMS4zMTJzOC4xMzQsMy4yNjYsMTEuMzEyLDAuMTk2DQoJCQljMC4wNjctMC4wNjQsMC4xMzItMC4xMywwLjE5Ni0wLjE5NmwyNC0yNEM1Ni43MjYsMzQ2LjQ3OCw1Ni42MzgsMzQxLjQxNCw1My40NiwzMzguMzQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY0LDI4MGgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJjNC40MTgsMCw4LTMuNTgyLDgtOFM0NjguNDE4LDI4MCw0NjQsMjgweiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDYxLjQ2LDIwMi4zNDRjLTMuMS0yLjk5NC04LjAxNS0yLjk5NC0xMS4xMTYsMGwtMjQsMjRjLTMuMTI0LDMuMTI1LTMuMTIzLDguMTksMC4wMDIsMTEuMzE0DQoJCQljMS41LDEuNDk5LDMuNTM0LDIuMzQyLDUuNjU0LDIuMzQyYzIuMTIyLDAsNC4xNTYtMC44NDQsNS42NTYtMi4zNDRsMjQtMjRDNDY0LjcyNiwyMTAuNDc4LDQ2NC42MzgsMjA1LjQxNCw0NjEuNDYsMjAyLjM0NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ2MS42NTYsMzYyLjM0NGwtMjQtMjRjLTMuMTc4LTMuMDctOC4yNDItMi45ODItMTEuMzEyLDAuMTk2Yy0yLjk5NSwzLjEtMi45OTUsOC4wMTYsMCwxMS4xMTZsMjQsMjQNCgkJCWMzLjE3OCwzLjA3LDguMjQyLDIuOTgyLDExLjMxMi0wLjE5NkM0NjQuNjUxLDM3MC4zNiw0NjQuNjUxLDM2NS40NDQsNDYxLjY1NiwzNjIuMzQ0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",_xe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MTIgNTYuMTY0MDYyYzAtMTIuNzk2ODc0LTEwLjQwNjI1LTIzLjIwMzEyNC0yMy4yMDMxMjUtMjMuMjAzMTI0aC00OS45Njg3NXYtMTUuMDQ2ODc2YzAtOS44Nzg5MDYtOC4wMzUxNTYtMTcuOTE0MDYyLTE3LjkxNDA2My0xNy45MTQwNjJoLTEwMy4wODk4NDNjLTkuODc4OTA3IDAtMTcuOTE0MDYzIDguMDM5MDYyLTE3LjkxNDA2MyAxNy45MTQwNjJ2MTUuMDQ2ODc2aC04Ny44MTY0MDZ2LTE1LjA0Njg3NmMwLTkuODc4OTA2LTguMDM5MDYyLTE3LjkxNDA2Mi0xNy45MTc5NjktMTcuOTE0MDYyaC0xMDMuMDg5ODQzYy05Ljg3ODkwNyAwLTE3LjkxNDA2MyA4LjAzOTA2Mi0xNy45MTQwNjMgMTcuOTE0MDYydjE1LjA0Njg3NmgtNDkuOTY4NzVjLTEyLjc5Njg3NSAwLTIzLjIwMzEyNSAxMC40MDYyNS0yMy4yMDMxMjUgMjMuMjAzMTI0djQ5LjVjMCA2LjA1MDc4MiAyLjMyODEyNSAxMS41NjI1IDYuMTM2NzE5IDE1LjY5OTIxOS0zLjgwODU5NCA0LjEzMjgxMy02LjEzNjcxOSA5LjY0ODQzOC02LjEzNjcxOSAxNS42OTkyMTl2MzA1LjgwODU5NGMwIDEyLjc5Mjk2OCAxMC40MDYyNSAyMy4yMDMxMjUgMjMuMjAzMTI1IDIzLjIwMzEyNWgyLjM3ODkwNnYyMi40NTMxMjVjMCAxMi43ODEyNSAxMC4zOTg0MzggMjMuMTc1NzgxIDIzLjE3OTY4OCAyMy4xNzU3ODFoMjMyLjYxNzE4N2M0LjE0NDUzMiAwIDcuNTAzOTA2LTMuMzU5Mzc1IDcuNTAzOTA2LTcuNSAwLTQuMTQ0NTMxLTMuMzU5Mzc0LTcuNTAzOTA2LTcuNTAzOTA2LTcuNTAzOTA2aC0yMzIuNjE3MTg3Yy00LjUwNzgxMyAwLTguMTcxODc1LTMuNjY3OTY5LTguMTcxODc1LTguMTcxODc1di0yMi40NTMxMjVoNDMwLjgyMDMxMnYyMi40NTMxMjVjMCA0LjUwNzgxMi0zLjY2NDA2MiA4LjE3MTg3NS04LjE3MTg3NSA4LjE3MTg3NWgtMTQ3LjEyNWMtNC4xNDg0MzcgMC03LjUwMzkwNiAzLjM1OTM3NS03LjUwMzkwNiA3LjUwMzkwNiAwIDQuMTQwNjI1IDMuMzU1NDY5IDcuNSA3LjUwMzkwNiA3LjVoMTQ3LjEyNWMxMi43ODEyNSAwIDIzLjE3OTY4OC0xMC4zOTQ1MzEgMjMuMTc5Njg4LTIzLjE3NTc4MXYtMjIuNDUzMTI1aDIuMzc4OTA2YzEyLjc5Mjk2OSAwIDIzLjIwMzEyNS0xMC40MTAxNTcgMjMuMjAzMTI1LTIzLjIwMzEyNXYtMzA1LjgwODU5NGMwLTYuMDUwNzgxLTIuMzMyMDMxLTExLjU2NjQwNi02LjEzNjcxOS0xNS42OTkyMTkgMy44MDQ2ODgtNC4xMzY3MTkgNi4xMzY3MTktOS42NDg0MzcgNi4xMzY3MTktMTUuNjk5MjE5em0tMTk3LjA4NTkzOC0zOC4yNWMwLTEuNjA1NDY4IDEuMzA0Njg4LTIuOTA2MjUgMi45MTAxNTctMi45MDYyNWgxMDMuMDg5ODQzYzEuNjA1NDY5IDAgMi45MTAxNTcgMS4zMDQ2ODggMi45MTAxNTcgMi45MDYyNXYxNS4wNDY4NzZoLTEwOC45MTAxNTd6bS0yMjYuNzM4MjgxIDBjMC0xLjYwNTQ2OCAxLjMwNDY4OC0yLjkwNjI1IDIuOTEwMTU3LTIuOTA2MjVoMTAzLjA4OTg0M2MxLjYwNTQ2OSAwIDIuOTEwMTU3IDEuMzA0Njg4IDIuOTEwMTU3IDIuOTA2MjV2MTUuMDQ2ODc2aC0xMDguOTEwMTU3em00MDguODE2NDA3IDQyNC45NTcwMzJjMCA0LjUxOTUzMS0zLjY3NTc4MiA4LjE5OTIxOC04LjE5NTMxMyA4LjE5OTIxOGgtNDY1LjU5Mzc1Yy00LjUxOTUzMSAwLTguMTk1MzEzLTMuNjc5Njg3LTguMTk1MzEzLTguMTk5MjE4di0zMDUuODA4NTk0YzAtNC41MTk1MzEgMy42NzU3ODItOC4xOTkyMTkgOC4xOTUzMTMtOC4xOTkyMTloNDY1LjU5Mzc1YzQuNTIzNDM3IDAgOC4xOTUzMTMgMy42Nzk2ODggOC4xOTUzMTMgOC4xOTkyMTl6bTAtMzM3LjIwNzAzMmMwIDQuNTE5NTMyLTMuNjc1NzgyIDguMTk1MzEzLTguMTk1MzEzIDguMTk1MzEzaC00NjUuNTkzNzVjLTQuNTE5NTMxIDAtOC4xOTUzMTMtMy42NzU3ODEtOC4xOTUzMTMtOC4xOTUzMTN2LTQ5LjVjMC00LjUyMzQzNyAzLjY3NTc4Mi04LjE5OTIxOCA4LjE5NTMxMy04LjE5OTIxOGg0NjUuNTkzNzVjNC41MTk1MzEgMCA4LjE5NTMxMyAzLjY3NTc4MSA4LjE5NTMxMyA4LjE5OTIxOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDYuMDk3NjU2IDU1LjE1MjM0NGMtMTQuMjA3MDMxIDAtMjUuNzYxNzE4IDExLjU1NDY4Ny0yNS43NjE3MTggMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4NyAyNS43NjE3MTkgMjUuNzYxNzE4IDI1Ljc2MTcxOSAxNC4yMDMxMjUgMCAyNS43NjE3MTktMTEuNTU0Njg3IDI1Ljc2MTcxOS0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU4NTk0LTI1Ljc1NzgxMi0yNS43NjE3MTktMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODcgMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTI5Njg4IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOCAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuMTY3OTY5IDU1LjE1MjM0NGMtMTQuMjA3MDMxIDAtMjUuNzYxNzE5IDExLjU1NDY4Ny0yNS43NjE3MTkgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4OCAyNS43NjE3MTkgMjUuNzYxNzE5IDI1Ljc2MTcxOSAxNC4yMDMxMjUgMCAyNS43NTc4MTItMTEuNTU0Njg3IDI1Ljc1NzgxMi0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg3LTI1Ljc1NzgxMi0yNS43NTc4MTItMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45MzM1OTQgMC0xMC43NTc4MTMtNC44MjQyMTktMTAuNzU3ODEzLTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTc4MTMtMTAuNzU3ODEyIDUuOTI5Njg3IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzIuODMyMDMxIDU1LjE1MjM0NGMtMTQuMjAzMTI1IDAtMjUuNzU3ODEyIDExLjU1NDY4Ny0yNS43NTc4MTIgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4NyAyNS43NjE3MTkgMjUuNzU3ODEyIDI1Ljc2MTcxOSAxNC4yMDcwMzEgMCAyNS43NjE3MTktMTEuNTU0Njg3IDI1Ljc2MTcxOS0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg4LTI1Ljc1NzgxMi0yNS43NjE3MTktMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODcgMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTMzNTk0IDAgMTAuNzU3ODEzIDQuODI4MTI1IDEwLjc1NzgxMyAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzU3ODEzIDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MDUuOTAyMzQ0IDU1LjE1MjM0NGMtMTQuMjAzMTI1IDAtMjUuNzYxNzE5IDExLjU1NDY4Ny0yNS43NjE3MTkgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1ODU5NCAyNS43NjE3MTkgMjUuNzYxNzE5IDI1Ljc2MTcxOSAxNC4yMDcwMzEgMCAyNS43NjE3MTgtMTEuNTU0Njg3IDI1Ljc2MTcxOC0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg3LTI1Ljc1NzgxMi0yNS43NjE3MTgtMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODggMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE4LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTI5Njg3IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MzQuNzQyMTg4IDE3MS45Mzc1aC0yMTguMTQ4NDM4Yy00LjE0NDUzMSAwLTcuNTAzOTA2IDMuMzU5Mzc1LTcuNTAzOTA2IDcuNSAwIDQuMTQ0NTMxIDMuMzU5Mzc1IDcuNTAzOTA2IDcuNTAzOTA2IDcuNTAzOTA2aDIxOC4xNDg0MzhjMS40Mzc1IDAgMi42MDU0NjggMS4xNzE4NzUgMi42MDU0NjggMi42MDkzNzV2MTkuODUxNTYzYzAgMS40Mzc1LTEuMTY3OTY4IDIuNjA5Mzc1LTIuNjA1NDY4IDIuNjA5Mzc1aC0zNTcuNDg0Mzc2Yy0xLjQzNzUgMC0yLjYwNTQ2OC0xLjE3MTg3NS0yLjYwNTQ2OC0yLjYwOTM3NXYtMTkuODUxNTYzYzAtMS40Mzc1IDEuMTY3OTY4LTIuNjA5Mzc1IDIuNjA1NDY4LTIuNjA5Mzc1aDEwNC4yNjk1MzJjNC4xNDQ1MzEgMCA3LjUwMzkwNi0zLjM1OTM3NSA3LjUwMzkwNi03LjUwMzkwNiAwLTQuMTQwNjI1LTMuMzU5Mzc1LTcuNS03LjUwMzkwNi03LjVoLTEwNC4yNjk1MzJjLTkuNzEwOTM3IDAtMTcuNjA5Mzc0IDcuODk4NDM4LTE3LjYwOTM3NCAxNy42MTMyODF2MTkuODUxNTYzYzAgOS43MTA5MzcgNy44OTg0MzcgMTcuNjEzMjgxIDE3LjYwOTM3NCAxNy42MTMyODFoMTAuMDM1MTU3djE2Ni40NjQ4NDRjMCAxNC4yNzczNDMgMTEuNjE3MTg3IDI1Ljg5NDUzMSAyNS44OTQ1MzEgMjUuODk0NTMxaDI4NS42MjVjMTQuMjc3MzQ0IDAgMjUuODk0NTMxLTExLjYxNzE4OCAyNS44OTQ1MzEtMjUuODk0NTMxdi0xNjYuNDY0ODQ0aDEwLjAzNTE1N2M5LjcxMDkzNyAwIDE3LjYxMzI4MS03Ljg5ODQzNyAxNy42MTMyODEtMTcuNjEzMjgxdi0xOS44NTE1NjNjMC05LjcxMDkzNy03LjkwMjM0NC0xNy42MTMyODEtMTcuNjEzMjgxLTE3LjYxMzI4MXptLTI1LjA0Mjk2OSAyMjEuNTQyOTY5YzAgNi4wMDM5MDYtNC44ODI4MTMgMTAuODg2NzE5LTEwLjg4NjcxOSAxMC44ODY3MTloLTI4NS42MjVjLTYuMDAzOTA2IDAtMTAuODkwNjI1LTQuODgyODEzLTEwLjg5MDYyNS0xMC44ODY3MTl2LTE2Ni40NjQ4NDRoMzA3LjQwMjM0NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTIuNTQyOTY5IDI5NC44NTkzNzVjMi4wMjM0MzcgMCA0LjA0Mjk2OS0uODE2NDA2IDUuNTIzNDM3LTIuNDIxODc1bDIzLjAxMTcxOS0yNS4wMTU2MjVjMi44MDg1OTQtMy4wNTA3ODEgMi42MDkzNzUtNy43OTY4NzUtLjQ0MTQwNi0xMC42MDE1NjMtMy4wNTA3ODEtMi44MDQ2ODctNy43OTI5NjktMi42MDkzNzQtMTAuNjAxNTYzLjQ0MTQwN2wtMjMuMDExNzE4IDI1LjAxNTYyNWMtMi44MDQ2ODggMy4wNDY4NzUtMi42MDkzNzYgNy43OTI5NjguNDQxNDA2IDEwLjYwMTU2MiAxLjQ0MTQwNiAxLjMyNDIxOSAzLjI2MTcxOCAxLjk4MDQ2OSA1LjA3ODEyNSAxLjk4MDQ2OXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTQuMTg3NSAzMjQuMTM2NzE5YzEuNDQxNDA2IDEuMzI4MTI1IDMuMjYxNzE5IDEuOTgwNDY5IDUuMDc4MTI1IDEuOTgwNDY5IDIuMDIzNDM3IDAgNC4wNDI5NjktLjgxNjQwNyA1LjUyMzQzNy0yLjQyMTg3Nmw0Ny4zMTY0MDctNTEuNDI5Njg3YzIuODA0Njg3LTMuMDUwNzgxIDIuNjA5Mzc1LTcuNzk2ODc1LS40NDE0MDctMTAuNjA1NDY5LTMuMDUwNzgxLTIuODA0Njg3LTcuNzk2ODc0LTIuNjA1NDY4LTEwLjYwMTU2Mi40NDE0MDZsLTQ3LjMxNjQwNiA1MS40MzM1OTRjLTIuODA0Njg4IDMuMDQ2ODc1LTIuNjA1NDY5IDcuNzk2ODc1LjQ0MTQwNiAxMC42MDE1NjN6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",xxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTEyMi4yNSAxNy4yNjZoLTExNi41YTUuNzU2IDUuNzU2IDAgMCAwIC01Ljc1IDUuNzV2NjcuOTk0YTUuNzU3IDUuNzU3IDAgMCAwIDUuNzUgNS43NWg5Ljg4M2wtMy4wNjggNC40NGE2LjA3OSA2LjA3OSAwIDAgMCAxMCA2LjkxMmw3Ljg0Ny0xMS4zNTJoNjcuMTc2bDcuODQ0IDExLjM1MWE2LjA3OSA2LjA3OSAwIDAgMCAxMC02LjkxMmwtMy4wNjgtNC40MzloOS44ODNhNS43NTcgNS43NTcgMCAwIDAgNS43NTMtNS43NXYtNjcuOTk0YTUuNzU2IDUuNzU2IDAgMCAwIC01Ljc1LTUuNzV6bS0xMDIuNTYxIDg4Ljg1NmEyLjU4MiAyLjU4MiAwIDAgMSAtMi4xMjIgMS4xMTIgMi41OCAyLjU4IDAgMCAxIC0yLjEyMy00LjA0Nmw0LjQ0My02LjQyOGg2LjI3MXptOTIuODY3LTIuOTM0YTIuNTggMi41OCAwIDAgMSAtMi4xMjMgNC4wNDYgMi41ODUgMi41ODUgMCAwIDEgLTIuMTIzLTEuMTEybC02LjQ2OC05LjM2Mmg2LjI3MXptMTEuOTQ0LTEyLjE3OGEyLjI1MyAyLjI1MyAwIDAgMSAtMi4yNSAyLjI1aC0xMTYuNWEyLjI1MyAyLjI1MyAwIDAgMSAtMi4yNS0yLjI1di02Ny45OTRhMi4yNTMgMi4yNTMgMCAwIDEgMi4yNS0yLjI1aDExNi41YTIuMjUzIDIuMjUzIDAgMCAxIDIuMjUgMi4yNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExOC4yNSAyNS4yNjZoLTEwOC41YTEuNzQ5IDEuNzQ5IDAgMCAwIC0xLjc1IDEuNzV2NTkuOTk0YTEuNzUgMS43NSAwIDAgMCAxLjc1IDEuNzVoMTA4LjVhMS43NSAxLjc1IDAgMCAwIDEuNzUtMS43NXYtNTkuOTk0YTEuNzQ5IDEuNzQ5IDAgMCAwIC0xLjc1LTEuNzV6bS0xLjc1IDU5Ljk5NGgtMTA1di01Ni40OTRoMTA1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDEuMzc1IDQ3LjkyMmg3LjN2MTkuOTMyYTEuNzUgMS43NSAwIDAgMCAzLjUgMHYtMTkuOTMyaDcuM2ExLjc1IDEuNzUgMCAwIDAgMC0zLjVoLTE4LjFhMS43NSAxLjc1IDAgMCAwIDAgMy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNzUuOTYzIDY4LjUyN2ExLjc0OSAxLjc0OSAwIDAgMCAzLjIzIDBsOS4wNDctMjEuNjgxYTEuNzUgMS43NSAwIDEgMCAtMy4yMy0xLjM0NmwtNy40MzIgMTcuODA5LTcuNDMyLTE3LjgwOWExLjc1IDEuNzUgMCAxIDAgLTMuMjMgMS4zNDh6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Sxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01OSwySDVBMywzLDAsMCwwLDIsNVY1OWEzLDMsMCwwLDAsMywzSDU5YTMsMywwLDAsMCwzLTNWNUEzLDMsMCwwLDAsNTksMlptMSw1N2ExLDEsMCwwLDEtMSwxSDVhMSwxLDAsMCwxLTEtMVY1QTEsMSwwLDAsMSw1LDRINTlhMSwxLDAsMCwxLDEsMVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMyLDZBMjYsMjYsMCwxLDAsNTgsMzIsMjYuMDI5LDI2LjAyOSwwLDAsMCwzMiw2Wm0wLDUwQTI0LDI0LDAsMSwxLDU2LDMyLDI0LjAyOCwyNC4wMjgsMCwwLDEsMzIsNTZaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0zMiwxMEEyMiwyMiwwLDEsMCw1NCwzMiwyMi4wMjUsMjIuMDI1LDAsMCwwLDMyLDEwWm0xMC4xNzUsNC44MTNjMi40NjksOS41NS0zLjYxMywxMi45LTYuNDI4LDEzLjkxMWE1LDUsMCwwLDAtMS42NS0xLjI0NywxMS4zNzQsMTEuMzc0LDAsMCwwLDMuMzExLTYuNzk0Yy4yNDktMi44NDUtLjc5LTUuNzA2LTMuMDUtOC41MzFBMTkuODI0LDE5LjgyNCwwLDAsMSw0Mi4xNzUsMTQuODEzWk0zNSwzMmEzLDMsMCwxLDEtMy0zQTMsMywwLDAsMSwzNSwzMlpNMzEuNTg2LDEyLjAyMWMyLjc2NywyLjg3Myw0LjA2Niw1LjcyMiwzLjgzMSw4LjQ3YTEwLjEsMTAuMSwwLDAsMS0zLjc4NCw2LjUzLDE5LjY1MiwxOS42NTIsMCwwLDAtOS41ODUtMTIuMzQ0QTE5LjgzOCwxOS44MzgsMCwwLDEsMzEuNTg2LDEyLjAyMVpNMjAuMTIsMTUuOTQ4YTE3LjY1NywxNy42NTcsMCwwLDEsOS41OTIsMTEuNjMzLDQuOTUxLDQuOTUxLDAsMCwwLS45NTcuNjQ3LDE4Ljg4NiwxOC44ODYsMCwwLDAtMTQuMzM4LTUuNzUyQTIwLjEyNiwyMC4xMjYsMCwwLDEsMjAuMTIsMTUuOTQ4Wk0xMiwzMmExOS44NywxOS44NywwLDAsMSwxLjQ0Mi03LjQxNkExNi4zODUsMTYuMzg1LDAsMCwxLDI1LjgxNiwyOC4yNmExMy43OSwxMy43OSwwLDAsMC04LjA2NCwxLjI5MUExMi42NDQsMTIuNjQ0LDAsMCwwLDEyLjMxMSwzNS40LDE5LjkxMywxOS45MTMsMCwwLDEsMTIsMzJabTEuMTY0LDYuNjZjMS4xMy0zLjUyOSwyLjk4Mi02LDUuNTItNy4zNGExMi42NDMsMTIuNjQzLDAsMCwxLDguNTYxLS43ODdBNC45MTksNC45MTksMCwwLDAsMjcsMzJjMCwuMTA5LjAyNS4yMTEuMDMyLjMxOC0yLjAwOC45MTUtNy45NjEsNC40Mi04LjksMTQuMDYzQTIwLjAzNCwyMC4wMzQsMCwwLDEsMTMuMTY0LDM4LjY2Wm02Ljg3OCw5LjMzM2MuMzY0LTkuMjc5LDUuNTYzLTEyLjc0Myw3LjUzMS0xMy43MTlhNSw1LDAsMCwwLDEuMDY1LDEuNGMtLjk1OCwyLjYwOS0yLjg1Myw5Ljc5MSwyLjEwOCwxNi4yNjFBMTkuODU2LDE5Ljg1NiwwLDAsMSwyMC4wNDIsNDcuOTkzWk0zMy4zODEsNTEuOTNjLTUuNC01LjczMy0zLjkyLTEyLjQ5NS0yLjk4OC0xNS4yMTlBNC45MjksNC45MjksMCwwLDAsMzIsMzdjLjA4MSwwLC4xNTYtLjAyLjIzNS0uMDI0LjYsMy4wNDksMi44MjksOS4yMjMsMTEuMTExLDExLjQ3NUExOS44NTYsMTkuODU2LDAsMCwxLDMzLjM4MSw1MS45M1ptMTEuOTY2LTUuMDc4Yy04LjQ0MS0xLjYxNy0xMC42MjMtNy4yOTItMTEuMTc0LTEwLjM3YTUuMDA2LDUuMDA2LDAsMCwwLDEuMDg0LS43MTljMS44NjgsMS45LDYuMjE1LDUuNjMzLDExLjUyMiw1LjYzM2ExMS4yMDgsMTEuMjA4LDAsMCwwLDMuMDg1LS40NTVBMjAuMDY5LDIwLjA2OSwwLDAsMSw0NS4zNDcsNDYuODUyWk01MiwzMmExOS45LDE5LjksMCwwLDEtMS4wNzQsNi40MTRjLTYuNTA3LDMuMTItMTIuNDYyLTIuMTg0LTE0LjQzOC00LjI1MWE0LjkyNyw0LjkyNywwLDAsMCwuMzY5LTEuMDI1LDE2LjYsMTYuNiwwLDAsMCwxLjc4OS4wOTQsMTguMzI4LDE4LjMyOCwwLDAsMCwxMi45MjYtNS4zMzlBMjAsMjAsMCwwLDEsNTIsMzJabS0xNS4wODgtLjg2OGE0Ljc0NSw0Ljc0NSwwLDAsMC0uMTczLS42NWMyLjkyNi0xLjE1NSw5LjIzNC00Ljc2Niw3LjgxNy0xNC4wMjhhMjAuMDU3LDIwLjA1NywwLDAsMSw2LjM5NCw5LjJBMTYuMzQ0LDE2LjM0NCwwLDAsMSwzNi45MTIsMzEuMTMyWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOSwxMkEzLDMsMCwxLDAsNiw5LDMsMywwLDAsMCw5LDEyWk05LDhBMSwxLDAsMSwxLDgsOSwxLDEsMCwwLDEsOSw4WiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTUsNmEzLDMsMCwxLDAsMywzQTMsMywwLDAsMCw1NSw2Wm0wLDRhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsNTUsMTBaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMiw1NWEzLDMsMCwwLDAtMy0zLDIuOTY2LDIuOTY2LDAsMCwwLTEsLjE4NFY0NUg2VjU1YTMsMywwLDAsMCwzLDNoNlY1NkgxMS44MTZBMi45NjYsMi45NjYsMCwwLDAsMTIsNTVaTTksNTZhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsOSw1NloiLz4NCiAgICAgICAgPHBhdGggZD0iTTU2LDUyLjE4NEEyLjk2NiwyLjk2NiwwLDAsMCw1NSw1MmEzLDMsMCwwLDAtMywzLDIuOTY2LDIuOTY2LDAsMCwwLC4xODQsMUg0NXYySDU1YTMsMywwLDAsMCwzLTNWNDlINTZaTTU1LDU2YTEsMSwwLDEsMSwxLTFBMSwxLDAsMCwxLDU1LDU2WiIvPg0KICAgICAgICA8cmVjdCB4PSIxNyIgeT0iNTYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",kxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyOC42MDcgNDI4LjYwNyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQyMy43NzMsMzQzLjg3MUw0MjMuNzczLDM0My44NzFjLTYuNjE3LTQuNTk5LTEyLjQ0LTEwLjI0Ni0xNy4yNDEtMTYuNzE4Yy0xMS40OTQtMTMuMDYxLTI2LjEyMi0yOS4yNTctNTMuMjktMjkuMjU3DQoJCQkJYy0yNy4xNjcsMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjUNCgkJCQljLTEwLjk3MS0xMi41MzktMjUuNi0yOS43OC01My4yOS0yOS43OGMtMjcuNjksMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NQ0KCQkJCXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjVjLTcuNDU4LTkuODUtMTYuODg5LTE4LjAzNS0yNy42OS0yNC4wMzNjLTUuMTk0LTIuNTk3LTExLjUwOS0wLjQ5Mi0xNC4xMDYsNC43MDINCgkJCQljLTIuNTk3LDUuMTk0LTAuNDkyLDExLjUwOSw0LjcwMiwxNC4xMDZjOC4yMDMsNC45NDQsMTUuNDU3LDExLjMxNCwyMS40MiwxOC44MDhjMTIuMDE2LDE0LjEwNiwyNi4xMjIsMjkuNzgsNTMuMjksMjkuNzgNCgkJCQlzNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NXMyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NQ0KCQkJCWMxMC45NzEsMTIuNTM5LDI1LjYsMjkuNzgsNTMuMjksMjkuNzhjMjcuNjksMCw0MS4yNzMtMTUuNjczLDUzLjI5LTI5Ljc4YzEyLjAxNi0xNC4xMDYsMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1DQoJCQkJYzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1YzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc1YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3MSwxNC42MjktMy4xMzUNCgkJCQlDNDMwLjA4MiwzNTMuNTk0LDQyOC42NzksMzQ3LjA0NSw0MjMuNzczLDM0My44NzF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MjMuNzczLDI2NS41MDNMNDIzLjc3MywyNjUuNTAzYy02LjYxNy00LjU5OS0xMi40NC0xMC4yNDYtMTcuMjQxLTE2LjcxOGMtMTEuNDk0LTEzLjA2MS0yNi4xMjItMjkuMjU3LTUzLjI5LTI5LjI1Nw0KCQkJCWMtMjcuMTY3LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjVzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1DQoJCQkJYy0xMC45NzEtMTIuNTM5LTI1LjYtMjkuNzgtNTMuMjktMjkuNzhjLTI3LjY5LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjUNCgkJCQlzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1Yy03LjQ1OC05Ljg1LTE2Ljg4OS0xOC4wMzUtMjcuNjktMjQuMDMzYy01LjE5NC0yLjU5Ny0xMS41MDktMC40OTItMTQuMTA2LDQuNzAyDQoJCQkJcy0wLjQ5MiwxMS41MDksNC43MDIsMTQuMTA2YzguMjAzLDQuOTQ0LDE1LjQ1NywxMS4zMTQsMjEuNDIsMTguODA4YzEyLjAxNiwxNC4xMDYsMjYuMTIyLDI5Ljc4LDUzLjI5LDI5Ljc4DQoJCQkJczQxLjI3My0xNS42NzMsNTMuMjktMjkuNzhjMTIuMDE2LTE0LjEwNiwxOS44NTMtMjIuNDY1LDM3LjYxNi0yMi40NjVzMjYuNjQ1LDkuOTI3LDM3LjYxNiwyMi40NjUNCgkJCQljMTAuOTcxLDEyLjUzOSwyNS42LDI5Ljc4LDUzLjI5LDI5Ljc4YzI3LjY5LDAsNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NQ0KCQkJCWMxNy43NjMsMCwyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NWM2LjA4OSw3LjgxOCwxMy4zMDgsMTQuNjg1LDIxLjQyLDIwLjM3NWM0LjkwNSwzLjE3NCwxMS40NTUsMS43NzEsMTQuNjI5LTMuMTM1DQoJCQkJQzQzMC4wODIsMjc1LjIyNyw0MjguNjc5LDI2OC42NzcsNDIzLjc3MywyNjUuNTAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDIzLjc3MywxODEuOTExTDQyMy43NzMsMTgxLjkxMWMtNi42MTctNC41OTktMTIuNDQtMTAuMjQ2LTE3LjI0MS0xNi43MThjLTExLjQ5NC0xMy4wNjEtMjYuMTIyLTI5LjI1Ny01My4yOS0yOS4yNTcNCgkJCQljLTI3LjE2NywwLTQxLjI3MywxNS42NzMtNTMuMjksMjkuNzhzLTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjVzLTI1LjYtMjkuNzgtNTMuMjktMjkuNzgNCgkJCQljLTI3LjY5LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjVzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1DQoJCQkJYy03LjQ1OC05Ljg1LTE2Ljg4OS0xOC4wMzUtMjcuNjktMjQuMDMzYy01LjE5NC0yLjU5Ny0xMS41MDktMC40OTItMTQuMTA2LDQuNzAyYy0yLjU5Nyw1LjE5NC0wLjQ5MiwxMS41MDksNC43MDIsMTQuMTA2DQoJCQkJYzguMjAzLDQuOTQ0LDE1LjQ1NywxMS4zMTQsMjEuNDIsMTguODA4YzEyLjAxNiwxNC4xMDYsMjYuMTIyLDI5Ljc4LDUzLjI5LDI5Ljc4czQxLjI3My0xNS42NzMsNTMuMjktMjkuNzgNCgkJCQljMTIuMDE2LTE0LjEwNiwxOS44NTMtMjIuNDY1LDM3LjYxNi0yMi40NjVzMjYuNjQ1LDkuOTI3LDM3LjYxNiwyMi40NjVzMjUuNiwyOS43OCw1My4yOSwyOS43OA0KCQkJCWMyNy42OSwwLDQxLjI3My0xNS42NzMsNTMuMjktMjkuNzhzMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1YzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1DQoJCQkJYzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc1YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3MSwxNC42MjktMy4xMzUNCgkJCQlDNDMwLjA4MiwxOTEuNjM1LDQyOC42NzksMTg1LjA4NSw0MjMuNzczLDE4MS45MTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01LjgxNCw4Mi4xMjRjOC4yMDMsNC45NDQsMTUuNDU3LDExLjMxNCwyMS40MiwxOC44MDhjMTIuMDE2LDE0LjEwNiwyNi4xMjIsMjkuNzgsNTMuMjksMjkuNzgNCgkJCQlzNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NXMyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NQ0KCQkJCWMxMC45NzEsMTIuNTM5LDI1LjYsMjkuNzgsNTMuMjksMjkuNzhjMjcuNjksMCw0MS4yNzMtMTUuNjczLDUzLjI5LTI5Ljc4YzEyLjAxNi0xNC4xMDYsMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1DQoJCQkJYzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1YzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc2YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3LDE0LjYyOS0zLjEzNQ0KCQkJCWMzLjE3NC00LjkwNSwxLjc3MS0xMS40NTUtMy4xMzUtMTQuNjI5aDBjLTYuNjE3LTQuNTk5LTEyLjQ0LTEwLjI0Ni0xNy4yNDEtMTYuNzE4Yy0xMS40OTQtMTMuMDYxLTI2LjEyMi0yOS4yNTctNTMuMjktMjkuMjU3DQoJCQkJYy0yNy4xNjcsMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjUNCgkJCQljLTEwLjk3MS0xMi41MzktMjUuNi0yOS43OC01My4yOS0yOS43OGMtMjcuNjksMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NQ0KCQkJCVM1My44OCw5OS44ODcsNDIuOTA4LDg3LjM0OGMtNy40NTgtOS44NS0xNi44ODktMTguMDM1LTI3LjY5LTI0LjAzM2MtNS4xOTQtMi41OTctMTEuNTA5LTAuNDkyLTE0LjEwNiw0LjcwMg0KCQkJCVMwLjYyMSw3OS41MjcsNS44MTQsODIuMTI0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",vxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUwOCA1MDgiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxyZWN0IHg9IjEzOS4zIiB3aWR0aD0iMTYuNCIgaGVpZ2h0PSIzOC4yIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTA0LjEsMjEuNCA4OC45LDI3LjcgOTgsNDkuOCAxMTMuMiw0My41IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjcuNSw4OS40IDIxLjMsMTA0LjYgNDMuMywxMTMuNyA0OS41LDk4LjUgCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOTAuOSwyMS40IDE4MS44LDQzLjUgMTk2LjksNDkuOCAyMDYsMjcuNyAJCSIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9IjQzLjMsMTgyLjcgMjEuMywxOTEuOCAyNy41LDIwNyA0OS41LDE5Ny45IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjY3LjQsODkuNCAyNDUuNCw5OC41IDI1MS43LDExMy43IDI3My43LDEwNC42IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjQ2LDM3LjYgMjE5LjEsNjQuNiAyMzAuNyw3Ni4zIDI1Ny42LDQ5LjIgCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI2NC4zLDIyMC4xIDM3LjQsMjQ3LjEgNDksMjU4LjggNzUuOSwyMzEuNyAJCSIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE0LjMsMTQwIDAsMTQwIDAsMTU2LjQgMTQuMywxNTYuNCAzOC4xLDE1Ni40IDM4LjEsMTQwIAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNTkuMSw0Ny43IDQ5LDM3LjYgMzcuNCw0OS4yIDY0LjMsNzYuMyA3NS45LDY0LjYgCQkiLz4NCiAgICAgICAgPHBhdGggZD0iTTMxOS41LDE3Mi45djE2LjVjNDkuNywwLDkwLjEsNDAuNiw5MC4xLDkwLjZINDI2QzQyNi4xLDIyMC45LDM3OC4zLDE3Mi45LDMxOS41LDE3Mi45eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY2LjEsMjk1LjVjMC42LTUuNiwwLjktMTAuNiwwLjktMTUuNmMwLTgxLjctNjYuMi0xNDguMi0xNDcuNS0xNDguMmMtMjguNCwwLTU1LjUsOC4yLTc4LjcsMjNjMC4yLTIuMiwwLjUtNC4zLDAuNS02LjUNCgkJCWMwLTUyLTQyLjEtOTQuMy05My44LTk0LjNzLTkzLjgsNDIuMy05My44LDk0LjNjMCwzMC42LDE0LjksNTkuMSwzOS41LDc2LjdjLTE1LjQsMTcuMi0yNS41LDM5LjMtMjcuMyw2My43DQoJCQljLTM3LDQtNjUuOCwzNS41LTY1LjgsNzMuN2MwLDQwLjksMzMuMSw3NC4xLDczLjcsNzQuMWgzNjAuNWM0MC43LDAsNzMuNy0zMy4yLDczLjctNzQuMUM1MDgsMzMzLjcsNDkxLjQsMzA3LjcsNDY2LjEsMjk1LjV6DQoJCQkgTTcwLDE0OC4yYzAtNDIuOSwzNC43LTc3LjgsNzcuNC03Ny44YzQyLjcsMCw3Ny40LDM0LjksNzcuNCw3Ny44YzAsNi45LTAuOSwxMy45LTIuNywyMC42Yy04LjMsNy40LTE1LjcsMTUuNS0yMi4xLDI0LjQNCgkJCWMtMzMuMS05LjEtNjguNy0xLjMtOTQuOSwyMC4xQzgzLjMsMTk5LDcwLDE3NC41LDcwLDE0OC4yeiBNNDM0LjMsNDE5LjlINzMuN2MtMzEuNiwwLTU3LjQtMjUuOS01Ny40LTU3LjYNCgkJCWMwLTMxLjgsMjUuNy01Ny42LDU3LjQtNTcuNmg4LjJ2LTguMmMwLTQ5LjksNDAuNC05MC42LDkwLjEtOTAuNmMxNC40LDAsMzQuNyw2LjgsMzQuNyw2LjhzMzguNy02NC40LDExMi44LTY0LjQNCgkJCWM3Mi4zLDAsMTMxLjEsNTkuMSwxMzEuMSwxMzEuN2MwLDEzLjktMi42LDI2LjEtMi42LDI2LjFsNi4yLDIuM2MyMi4zLDguNCwzNy4zLDMwLjEsMzcuMyw1My45DQoJCQlDNDkxLjYsMzk0LDQ2NS45LDQxOS45LDQzNC4zLDQxOS45eiIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9Ijg4LjQsNDU1LjIgNDcuNSw0OTYuNCA1OS4xLDUwOCAxMDAsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNzguNiw0NTUuMiAxMzcuNiw0OTYuNCAxNDkuMiw1MDggMTkwLjEsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyNjguNyw0NTUuMiAyMjcuNyw0OTYuNCAyMzkuMyw1MDggMjgwLjMsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzNTguOCw0NTUuMiAzMTcuOSw0OTYuNCAzMjkuNCw1MDggMzcwLjQsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI0NDguOSw0NTUuMiA0MDgsNDk2LjQgNDE5LjYsNTA4IDQ2MC41LDQ2Ni44IAkJIi8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Yxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MSA1NWgtNXYtNDRhMy4wMDkgMy4wMDkgMCAwIDAgMy0zdi01YTEgMSAwIDAgMCAtMS0xaC01MmExIDEgMCAwIDAgLTEgMXY1YTMuMDA5IDMuMDA5IDAgMCAwIDMgM3Y0NGgtNWExIDEgMCAwIDAgLTEgMXY1YTEgMSAwIDAgMCAxIDFoNThhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAgLTEtMXptLTU0LTQ3di00aDUwdjRhMSAxIDAgMCAxIC0xIDFoLTQ4YTEgMSAwIDAgMSAtMS0xem00NyAzdjQ0aC00NHYtNDR6bTYgNDloLTU2di0zaDU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTIgMTJoLTQwYTEgMSAwIDAgMCAtMSAxdjQwYTEgMSAwIDAgMCAxIDFoNDBhMSAxIDAgMCAwIDEtMXYtNDBhMSAxIDAgMCAwIC0xLTF6bS0yMSA0MGgtMTh2LTE5aDE4em0wLTIxaC0xOHYtMTdoMTh6bTIwIDIxaC0xOHYtMTloMTh6bTAtMjFoLTE4di0xN2gxOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE1LjE3MiAxOGg1LjY1N3YyaC01LjY1N3oiIHRyYW5zZm9ybT0ibWF0cml4KC43MDcgLS43MDcgLjcwNyAuNzA3IC04LjE2MyAxOC4yOTMpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNC4xMzYgMjAuNWgxMi43Mjh2MmgtMTIuNzI4eiIgdHJhbnNmb3JtPSJtYXRyaXgoLjcwNyAtLjcwNyAuNzA3IC43MDcgLTkuMTk4IDIwLjc5MykiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Qxe={"Alarm Systems":"PHN2ZyBoZWlnaHQ9IjUxMXB0IiB2aWV3Qm94PSItMzEgMCA1MTEgNTExLjk5OTk4IiB3aWR0aD0iNTExcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTIzNS4zMjgxMjUgMTE5LjE2Nzk2OWMyMC44Mzk4NDQgOC4wNTg1OTMgMzUuNjQ0NTMxIDIxLjE0ODQzNyA0NC42MzI4MTMgNDEuNTAzOTA2Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzEuNjg3NSAxMjguNTg1OTM4YzE4Ljk4MDQ2OSA3LjMzOTg0MyAzMS4zODI4MTIgMTguODMyMDMxIDM5LjAzNTE1NiAzNi4xNjQwNjIgMS42Njc5NjkgMy43NzM0MzggNS4zNjMyODIgNi4wMjM0MzggOS4yNDIxODggNi4wMjM0MzggMS4zNjMyODEgMCAyLjc0NjA5NC0uMjc3MzQ0IDQuMDcwMzEyLS44NjMyODIgNS4xMDU0NjktMi4yNTM5MDYgNy40MTQwNjMtOC4yMTQ4NDQgNS4xNjAxNTYtMTMuMzE2NDA2LTkuODIwMzEyLTIyLjI1LTI2LjI1LTM3LjU3NDIxOS01MC4yMjY1NjItNDYuODQzNzUtNS4xOTkyMTktMi4wMTE3MTktMTEuMDQ2ODc1LjU3NDIxOS0xMy4wNTg1OTQgNS43NzczNDQtMi4wMTE3MTggNS4yMDMxMjUuNTc4MTI1IDExLjA0Njg3NSA1Ljc3NzM0NCAxMy4wNTg1OTR6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjA3LjEwNTQ2OSAyMzcuODEyNWMyMC4wODk4NDMgMCAzNi40Mzc1LTE2LjM0Mzc1IDM2LjQzNzUtMzYuNDMzNTk0IDAtMjAuMDkzNzUtMTYuMzQ3NjU3LTM2LjQzNzUtMzYuNDM3NS0zNi40Mzc1LTIwLjA4OTg0NCAwLTM2LjQzNzUgMTYuMzQzNzUtMzYuNDM3NSAzNi40Mzc1IDAgMjAuMDg5ODQ0IDE2LjM0NzY1NiAzNi40MzM1OTQgMzYuNDM3NSAzNi40MzM1OTR6bTAtNTIuNjc1NzgxYzguOTUzMTI1IDAgMTYuMjQyMTg3IDcuMjg1MTU2IDE2LjI0MjE4NyAxNi4yNDIxODcgMCA4Ljk1MzEyNS03LjI4OTA2MiAxNi4yMzgyODItMTYuMjQyMTg3IDE2LjIzODI4Mi04Ljk1NzAzMSAwLTE2LjI0MjE4OC03LjI4NTE1Ny0xNi4yNDIxODgtMTYuMjM4MjgyIDAtOC45NTcwMzEgNy4yODUxNTctMTYuMjQyMTg3IDE2LjI0MjE4OC0xNi4yNDIxODd6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkwLjE3OTY4OCAxNDcuMDE1NjI1YzMuNzY1NjI0IDAgNy4zOTg0MzctLjU3NDIxOSAxMC44MjAzMTItMS42MzY3MTlsNy4zMzk4NDQgOS44NzEwOTRjMTMuOTQxNDA2IDE4Ljc1IDIxLjYyMTA5NCA0MS45NDUzMTIgMjEuNjIxMDk0IDY1LjMxMjV2NTkuMTUyMzQ0YzAgNS41NzgxMjUgNC41MjM0MzcgMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTYgNS41NzQyMTggMCAxMC4wOTc2NTYtNC41MTk1MzEgMTAuMDk3NjU2LTEwLjA5NzY1NnYtNTkuMTUyMzQ0YzAtMjcuNjc1NzgxLTkuMDkzNzUtNTUuMTUyMzQ0LTI1LjYwOTM3NS03Ny4zNTkzNzVsLTYuNjc1NzgxLTguOTgwNDY5YzUuNDQ5MjE4LTYuMzY3MTg3IDguNzQ2MDk0LTE0LjYyNSA4Ljc0NjA5NC0yMy42NDA2MjUgMC0yMC4wOTM3NS0xNi4zNDM3NS0zNi40Mzc1LTM2LjQzNzUtMzYuNDM3NS0yMC4wODk4NDQgMC0zNi40MzM1OTQgMTYuMzQzNzUtMzYuNDMzNTk0IDM2LjQzNzUgMCAyMC4wODk4NDQgMTYuMzQzNzUgMzYuNDMzNTk0IDM2LjQzMzU5NCAzNi40MzM1OTR6bTAtNTIuNjc1NzgxYzguOTU3MDMxIDAgMTYuMjQyMTg3IDcuMjg1MTU2IDE2LjI0MjE4NyAxNi4yNDIxODcgMCA4Ljk1MzEyNS03LjI4NTE1NiAxNi4yNDIxODgtMTYuMjQyMTg3IDE2LjI0MjE4OC04Ljk1MzEyNiAwLTE2LjI0MjE4OC03LjI4OTA2My0xNi4yNDIxODgtMTYuMjQyMTg4IDAtOC45NTcwMzEgNy4yODkwNjItMTYuMjQyMTg3IDE2LjI0MjE4OC0xNi4yNDIxODd6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjA1ODU5NCAzNDkuMDUwNzgxYy01LjU3ODEyNSAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU3djYzLjMyMDMxMmMwIDE0LjIzMDQ2OS0xMS41NzgxMjYgMjUuODA4NTk0LTI1LjgwODU5NCAyNS44MDg1OTRoLTQ0LjU5NzY1NnYtMzMuNDI5Njg4YzAtNS41NzgxMjUtNC41MTk1MzItMTAuMDk3NjU2LTEwLjA5Mzc1LTEwLjA5NzY1NmgtNDIuMjY1NjI2di0xMTIuNDUzMTI1YzIxLjg1NTQ2OS0yNC4wMzUxNTYgMzUuMTkxNDA3LTU1Ljk0OTIxOSAzNS4xOTE0MDctOTAuOTE3OTY5IDAtNzQuNTk3NjU2LTYwLjY4NzUtMTM1LjI4NTE1Ni0xMzUuMjgxMjUtMTM1LjI4NTE1NnMtMTM1LjI4MTI1IDYwLjY4NzUtMTM1LjI4MTI1IDEzNS4yODUxNTZjMCAzMy4xMDU0NjkgMTEuOTU3MDMxIDYzLjQ2NDg0NCAzMS43NzczNDMgODcuMDAzOTA2djIxMy41MTk1MzJjMCA1LjU3ODEyNSA0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU3IDEwLjA5NzY1NmgyMzUuNzYxNzE5YzUuNTc0MjE4IDAgMTAuMDkzNzUtNC41MTk1MzEgMTAuMDkzNzUtMTAuMDk3NjU2di0zMy40Mjk2ODhoNDQuNTk3NjU2YzI1LjM2NzE4NyAwIDQ2LjAwMzkwNi0yMC42MzY3MTggNDYuMDAzOTA2LTQ2LjAwMzkwNnYtNjMuMzIwMzEyYzAtNS41NzgxMjYtNC41MjM0MzgtMTAuMDk3NjU3LTEwLjA5NzY1Ni0xMC4wOTc2NTd6bS0yMzIuOTUzMTI1LTI2Mi43NjE3MTljNjMuNDU3MDMxIDAgMTE1LjA4NTkzNyA1MS42Mjg5MDcgMTE1LjA4NTkzNyAxMTUuMDg5ODQ0IDAgNjMuNDU3MDMyLTUxLjYyODkwNiAxMTUuMDg1OTM4LTExNS4wODU5MzcgMTE1LjA4NTkzOC02My40NjA5MzggMC0xMTUuMDg1OTM4LTUxLjYyODkwNi0xMTUuMDg1OTM4LTExNS4wODU5MzggMC02My40NjA5MzcgNTEuNjI1LTExNS4wODk4NDQgMTE1LjA4NTkzOC0xMTUuMDg5ODQ0em0tODMuMzA4NTk0IDIyMS42MDE1NjNjMjIuOTgwNDY5IDE4LjAxNTYyNSA1MS45MTAxNTYgMjguNzY5NTMxIDgzLjMwODU5NCAyOC43Njk1MzEgMjkuODYzMjgxIDAgNTcuNDkyMTg3LTkuNzM0Mzc1IDc5Ljg5NDUzMS0yNi4xODc1djE4MS4zMzIwMzJoLTE2My4yMDMxMjV6bTIxNS41NjY0MDYgMTgzLjkxNDA2M2gtMzIuMTY3OTY5di02Ni44NTkzNzZoMzIuMTY3OTY5em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0OC4xNjAxNTYgMzc3Ljc4OTA2MmgxNy45MjU3ODJjNS41NzQyMTggMCAxMC4wOTc2NTYtNC41MjM0MzcgMTAuMDk3NjU2LTEwLjA5NzY1NiAwLTUuNTc4MTI1LTQuNTIzNDM4LTEwLjA5NzY1Ni0xMC4wOTc2NTYtMTAuMDk3NjU2aC0xNy45MjU3ODJjLTUuNTc0MjE4IDAtMTAuMDk3NjU2IDQuNTE5NTMxLTEwLjA5NzY1NiAxMC4wOTc2NTYgMCA1LjU3NDIxOSA0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU2IDEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTguMTQ0NTMxIDM3Ny43ODkwNjJoMTcuOTIxODc1YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTIzNDM3IDEwLjA5NzY1Ni0xMC4wOTc2NTYgMC01LjU3ODEyNS00LjUyMzQzNy0xMC4wOTc2NTYtMTAuMDk3NjU2LTEwLjA5NzY1NmgtMTcuOTIxODc1Yy01LjU3ODEyNSAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU2IDAgNS41NzQyMTkgNC41MTk1MzEgMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY2LjA0Njg3NSAzNTcuNTkzNzVoLTE3LjkyMTg3NWMtNS41NzQyMTkgMC0xMC4wOTc2NTYgNC41MTk1MzEtMTAuMDk3NjU2IDEwLjA5NzY1NiAwIDUuNTc0MjE5IDQuNTIzNDM3IDEwLjA5NzY1NiAxMC4wOTc2NTYgMTAuMDk3NjU2aDE3LjkyMTg3NWM1LjU3ODEyNSAwIDEwLjA5NzY1Ni00LjUyMzQzNyAxMC4wOTc2NTYtMTAuMDk3NjU2IDAtNS41NzgxMjUtNC41MTk1MzEtMTAuMDk3NjU2LTEwLjA5NzY1Ni0xMC4wOTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ4LjE2MDE1NiA0MjAuNjc1NzgxaDY3LjkwNjI1YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTE5NTMxIDEwLjA5NzY1Ni0xMC4wOTc2NTZzLTQuNTIzNDM3LTEwLjA5NzY1Ni0xMC4wOTc2NTYtMTAuMDk3NjU2aC02Ny45MDYyNWMtNS41NzQyMTggMC0xMC4wOTc2NTYgNC41MTk1MzEtMTAuMDk3NjU2IDEwLjA5NzY1NnM0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU2IDEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDguMTI1IDQ0My4xNTYyNWgtOTkuOTY0ODQ0Yy01LjU3NDIxOCAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU2IDAgNS41NzQyMTkgNC41MjM0MzggMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTZoOTkuOTY0ODQ0YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTIzNDM3IDEwLjA5NzY1Ni0xMC4wOTc2NTYgMC01LjU3ODEyNS00LjUxOTUzMS0xMC4wOTc2NTYtMTAuMDk3NjU2LTEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDYuMzU1NDY5IDQwLjEzNjcxOWMxLjg0Mzc1IDMuMzIwMzEyIDUuMjg1MTU2IDUuMTkxNDA2IDguODMyMDMxIDUuMTkxNDA2IDEuNjYwMTU2IDAgMy4zNDM3NS0uNDE0MDYzIDQuODk4NDM4LTEuMjc3MzQ0IDQuODc1LTIuNzEwOTM3IDYuNjI1LTguODU5Mzc1IDMuOTE0MDYyLTEzLjczNDM3NWwtMTMuOTg0Mzc1LTI1LjEyODkwNmMtMi43MTA5MzctNC44NzEwOTQtOC44NTkzNzUtNi42MjUtMTMuNzM0Mzc1LTMuOTEwMTU2LTQuODcxMDk0IDIuNzEwOTM3LTYuNjI1IDguODU5Mzc1LTMuOTE0MDYyIDEzLjczNDM3NXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im02My4xNDQ1MzEgODMuMDE1NjI1LTI2LjA1NDY4Ny0xNS4wMzkwNjNjLTQuODMyMDMyLTIuNzg5MDYyLTExLjAwMzkwNi0xLjEzMjgxMi0xMy43OTI5NjkgMy42OTUzMTNzLTEuMTMyODEzIDExLjAwMzkwNiAzLjY5NTMxMyAxMy43OTI5NjlsMjYuMDU0Njg3IDE1LjA0Mjk2OGMxLjU4OTg0NC45MTc5NjkgMy4zMjgxMjUgMS4zNTE1NjMgNS4wMzkwNjMgMS4zNTE1NjMgMy40ODgyODEgMCA2Ljg4MjgxMi0xLjgwODU5NCA4Ljc1MzkwNi01LjA0Njg3NSAyLjc4OTA2Mi00LjgzMjAzMSAxLjEzMjgxMi0xMS4wMDc4MTItMy42OTUzMTMtMTMuNzk2ODc1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxLjExMzI4MSAxNDYuMjEwOTM4LTMwLjA4NTkzNy0xLjI4MTI1Yy01LjU4MjAzMi0uMjUtMTAuMjgxMjUgNC4wODk4NDMtMTAuNTE5NTMyIDkuNjYwMTU2LS4yMzQzNzQgNS41NzAzMTIgNC4wODk4NDQgMTAuMjgxMjUgOS42NjAxNTcgMTAuNTE1NjI1bDMwLjA4NTkzNyAxLjI4MTI1Yy4xNDQ1MzIuMDA3ODEyLjI5Mjk2OS4wMDc4MTIuNDM3NS4wMDc4MTIgNS4zNzg5MDYgMCA5Ljg1MTU2My00LjI0MjE4NyAxMC4wNzgxMjUtOS42Njc5NjkuMjM4MjgxLTUuNTcwMzEyLTQuMDg1OTM3LTEwLjI3NzM0My05LjY1NjI1LTEwLjUxNTYyNHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yODMuNjQwNjI1IDE5OC42MjUuMTIxMDk0LjI5Njg3NWMxLjU4OTg0MyAzLjkyNTc4MSA1LjM2NzE4NyA2LjMwNDY4NyA5LjM1OTM3NSA2LjMwNDY4NyAxLjI2MTcxOCAwIDIuNTQ2ODc1LS4yMzgyODEgMy43ODkwNjItLjc0MjE4NyA1LjE2Nzk2OS0yLjA5Mzc1IDcuNjYwMTU2LTcuOTgwNDY5IDUuNTY2NDA2LTEzLjE0ODQzN2wtLjEyMTA5My0uMjk2ODc2Yy0yLjA5Mzc1LTUuMTY3OTY4LTcuOTgwNDY5LTcuNjU2MjUtMTMuMTQ4NDM4LTUuNTYyNXMtNy42NjAxNTYgNy45ODA0NjktNS41NjY0MDYgMTMuMTQ4NDM4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0OS4zNjcxODggMzE1LjY2Nzk2OWMtMi4wNzgxMjYtNS4xNzE4NzUtNy45NjQ4NDQtNy42Nzk2ODgtMTMuMTM2NzE5LTUuNjAxNTYzLTUuMTcxODc1IDIuMDgyMDMyLTcuNjc5Njg4IDcuOTYwOTM4LTUuNjAxNTYzIDEzLjEzNjcxOWwuMTE3MTg4LjI5Mjk2OWMxLjU4NTkzNyAzLjk0MTQwNiA1LjM3MTA5NCA2LjMzNTkzNyA5LjM3NSA2LjMzNTkzNyAxLjI1MzkwNiAwIDIuNTI3MzQ0LS4yMzQzNzUgMy43NjE3MTgtLjczNDM3NSA1LjE3NTc4Mi0yLjA3ODEyNSA3LjY4MzU5NC03Ljk2MDkzNyA1LjYwMTU2My0xMy4xMzI4MTJ6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Amplifier:H_e,Awnings:V_e,"Battery Status":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM5NC4wNjMgMzkxLjk5NmMtOS4xOTgtNS4yOS0xOC4zNzMtMTAuNjIzLTI3LjU1OC0xNS45MzcgNS4wMDItMTEuNzY5IDEwLjE5NC0yMy45MDIgMTQuOTAzLTM2LjA1MyAxLjgwOS00LjY2NyAxLjE4OS05LjkxMS0xLjY1NS0xNC4wMjgtNS43NzYtOC4zNjEtMTYuODYzLTguODU1LTI0LjM0NC0xLjc0LTE5LjY2MSAxOC43LTM5LjA4NSAzNy01OC42NTIgNTUuNTM3LTMuNzc1IDMuNTc3LTUuNjM5IDguNDM0LTUuMTEgMTMuMzI3LjUyMyA0Ljg0NiAzLjMzOSA5LjE0NCA3LjcyNSAxMS43OTIgOS4zNDUgNS42NDEgMTguNzYxIDEwLjk1NSAyOC4wOTggMTYuMjkxLTQuNjQ0IDEwLjk1MS0xMC4zNzIgMjQuMjQ2LTE0LjkyIDM2LjAwMi0yLjg4NyA3LjQ2Mi40MjEgMTUuNzQ0IDcuNjkzIDE5LjI2NCA1LjcxNCAyLjc2NiAxMi4yOCAyLjIxMSAxOC4yOTktMy40ODMgMTkuMzQ0LTE4LjMgMzkuMzQzLTM3LjIxNCA1OC42Ny01NS41NDcgMy44MTgtMy42MjIgNS42NzQtOC41MTIgNS4wOS0xMy40MTYtLjU5MS00Ljk2Mi0zLjU5NC05LjMzOC04LjIzOS0xMi4wMDl6bS03LjE3NCAxNC41NGMtMTUuNjM0IDE0LjgzMi01OC45NDkgNTYuOTczLTYwLjEwOSA1Ni40MTItLjExOC0uMDU3LS4zMDYtLjE3OC0uMjQtLjM0OSA1LjE3OS0xMy41MjYgMTEuNjM1LTI4LjI3MiAxNi45MTgtNDAuNzMyIDEuNDkzLTMuNTIyLjkwNy04LjI4LTMuNzY4LTEwLjk3LTEwLjg0LTYuMjM3LTIxLjc5MS0xMi4zNTQtMzIuNTY0LTE4Ljg0NS0uODAyLS40ODMtLjc2Ny0uNzEtLjA1MS0xLjM4OCAyMC44NzQtMTkuNzc5IDU3Ljk1OS01NS4zMTEgNTkuODAzLTU2LjQ1OS4zOTYuMDg0LjU0NC4yOTkuNTQ1LjM4NC01LjMwNyAxMy42ODQtMTEuMjEzIDI3LjMwNS0xNi45IDQwLjczOS0xLjc5NCA0LjIzNy0uMjkzIDguNjQ5IDMuNzM5IDEwLjk4IDQuMzk5IDIuNTQgOC43OTYgNS4wODcgMTMuMTkxIDcuNjM0IDYuMzc0IDMuNjkzIDEyLjc0OCA3LjM4NyAxOS4xMzQgMTEuMDU5IDEuMTA2LjYzNSAxLjEzNi43NDQuMzAyIDEuNTM1em0tODEuNzg0LTIwOC40aC0yMDEuNDZjLTEwLjI3MyAwLTE4LjYzMSA4LjMzLTE4LjYzMSAxOC41Njl2NDQuMjc2YzAgMTAuMjM5IDguMzU3IDE4LjU2OSAxOC42MzEgMTguNTY5aDIwMS40NjFjMTAuMjczIDAgMTguNjMxLTguMzMgMTguNjMxLTE4LjU2OXYtNDQuMjc2Yy0uMDAxLTEwLjIzOS04LjM1OC0xOC41NjktMTguNjMyLTE4LjU2OXptMy42MzEgNjIuODQ1YzAgMS45NjgtMS42MjkgMy41NjktMy42MzEgMy41NjloLTIwMS40NmMtMi4wMDIgMC0zLjYzMS0xLjYwMS0zLjYzMS0zLjU2OXYtNDQuMjc2YzAtMS45NjggMS42MjktMy41NjkgMy42MzEtMy41NjloMjAxLjQ2MWMyLjAwMiAwIDMuNjMxIDEuNjAxIDMuNjMxIDMuNTY5djQ0LjI3NnptMTUtMTQzLjg5OGMwLTEwLjIzOS04LjM1Ny0xOC41NjktMTguNjMxLTE4LjU2OWgtMjAxLjQ2Yy0xMC4yNzMgMC0xOC42MzEgOC4zMy0xOC42MzEgMTguNTY5djQ0LjI3NmMwIDEwLjIzOSA4LjM1NyAxOC41NjkgMTguNjMxIDE4LjU2OWgyMDEuNDYxYzEwLjI3MyAwIDE4LjYzMS04LjMzIDE4LjYzMS0xOC41Njl2LTQ0LjI3NnptLTE1IDQ0LjI3N2MwIDEuOTY4LTEuNjI5IDMuNTY5LTMuNjMxIDMuNTY5aC0yMDEuNDZjLTIuMDAyIDAtMy42MzEtMS42MDEtMy42MzEtMy41Njl2LTQ0LjI3NmMwLTEuOTY4IDEuNjI5LTMuNTY5IDMuNjMxLTMuNTY5aDIwMS40NjFjMi4wMDIgMCAzLjYzMSAxLjYwMSAzLjYzMSAzLjU2OXY0NC4yNzZ6bTM4LjI0NyAxMjMuODU3Yy0xOC42NTMgMC0zNi4yNjYgNC41MjktNTEuODAzIDEyLjU0MmgtMTkxLjUzNWMtMTAuMjcyIDAtMTguNjMgOC4zMzEtMTguNjMgMTguNTd2NDQuMjdjMCAxMC4yMzkgOC4zNTcgMTguNTcgMTguNjMgMTguNTdoMTMxLjYyMWMtMS4wOTYgNi4zMTgtMS42NzMgMTIuODEyLTEuNjczIDE5LjQzOCAwIDI0LjI0MyA3LjY1MSA0Ni43MjkgMjAuNjYgNjUuMTgyaC0xNTAuNjA4Yy0yLjAwMiAwLTMuNjMtMS42MDItMy42My0zLjU3di00NC4yN2MwLTEuOTY5IDEuNjI4LTMuNTcgMy42My0zLjU3aDEwNy42NDFjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEwNy42NDFjLTEwLjI3MiAwLTE4LjYzIDguMzMxLTE4LjYzIDE4LjU3djQ0LjI3YzAgMTAuMjM5IDguMzU3IDE4LjU3IDE4LjYzIDE4LjU3aDE2My4yMzdjNy4wNyA3LjA2MyAxNS4wNjUgMTMuMTk5IDIzLjc4NSAxOC4yMWgtMTk4LjI0MmMtMTQuMjI3IDAtMjUuOC0xMS41NzQtMjUuOC0yNS44di0zNjUuMDg5YzAtMTQuMjI2IDExLjU3My0yNS44IDI1LjgtMjUuOGgyMjMuOWMxNC4yMjcgMCAyNS44IDExLjU3NCAyNS44IDI1Ljh2MTU2LjY0YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTE1Ni42NGMwLTIyLjQ5Ny0xOC4zMDMtNDAuOC00MC44LTQwLjhoLTQwLjA2N3YtMzUuNjExYzAtMTYuMzc2LTEzLjMyMy0yOS42OTktMjkuNjk5LTI5LjY5OWgtODQuMzY3Yy0xNi4zNzYgMC0yOS42OTkgMTMuMzIzLTI5LjY5OSAyOS42OTl2MzUuNjExaC00MC4wNjhjLTIyLjQ5NyAwLTQwLjggMTguMzAzLTQwLjggNDAuOHYzNjUuMDljMCAyMi40OTcgMTguMzAzIDQwLjggNDAuOCA0MC44aDIyMy45YzMuODkyIDAgNy43MzEtLjU1MyAxMS40NDItMS42MzYgNi4yNDggMS4wNzEgMTIuNjY3IDEuNjM2IDE5LjIxNiAxLjYzNiA2Mi41MjQgMCAxMTMuMzkyLTUwLjg2NyAxMTMuMzkyLTExMy4zOTIgMC02Mi41MjQtNTAuODY3LTExMy4zOTEtMTEzLjM5Mi0xMTMuMzkxem0tMTk5LjQ5MS0yNTUuNTE4YzAtOC4xMDUgNi41OTQtMTQuNjk5IDE0LjY5OS0xNC42OTloODQuMzY3YzguMTA1IDAgMTQuNjk5IDYuNTk0IDE0LjY5OSAxNC42OTl2MzUuNjExaC0xMTMuNzY1em0tNDMuODQ3IDMzNC40NzFjLTIuMDAyIDAtMy42My0xLjYwMi0zLjYzLTMuNTd2LTQ0LjI3YzAtMS45NjkgMS42MjgtMy41NyAzLjYzLTMuNTdoMTY5LjM0MWMtMTUuNjY2IDEzLjUyMS0yNy42IDMxLjI1LTM0LjA0MSA1MS40MXptMjQzLjMzOCAxMzIuODNjLTU0LjI1MyAwLTk4LjM5Mi00NC4xMzgtOTguMzkyLTk4LjM5MiAwLTU0LjI1MyA0NC4xMzktOTguMzkxIDk4LjM5Mi05OC4zOTFzOTguMzkyIDQ0LjEzOCA5OC4zOTIgOTguMzkxYzAgNTQuMjU0LTQ0LjEzOSA5OC4zOTItOTguMzkyIDk4LjM5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Ceiling Spotlights":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDc0IDc0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00Ni40NCA0aC0yLjk3YTEgMSAwIDAgMSAwLTJoMi45N2ExIDEgMCAwIDEgMCAyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjguNjQgMTAuMzhoLTYzLjI4YTEgMSAwIDAgMSAtMS0xdi02LjM4YTEgMSAwIDAgMSAxLTFoMjEuMmExIDEgMCAwIDEgMCAyaC0yMC4ydjQuMzhoNjEuMjh2LTQuMzhoLTE0LjJhMSAxIDAgMCAxIDAtMmgxNS4yYTEgMSAwIDAgMSAxIDF2Ni4zOGExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2LjQ3IDRoLTIuOTFhMSAxIDAgMCAxIDAtMmgyLjkxYTEgMSAwIDAgMSAwIDJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNyA1MS4yMDdhMSAxIDAgMCAxIC0xLTF2LTQwLjgyOGExIDEgMCAxIDEgMiAwdjQwLjgyOGExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ2Ljc3MSA2Ny4wN2gtMTkuNTQyYTEgMSAwIDAgMSAtLjk3Ny0xLjIxNWwzLjQ5LTE1Ljg1NWExIDEgMCAwIDEgLjk3Ny0uNzg1aDEyLjU2MmExIDEgMCAwIDEgLjk3Ny43ODVsMy40OSAxNS44NmExIDEgMCAwIDEgLS45NzcgMS4yMTV6bS0xOC4zLTJoMTcuMDU2bC0zLjA0OS0xMy44NmgtMTAuOTU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzcgNzJhNS45MzYgNS45MzYgMCAwIDEgLTUuOTMtNS45MyAxIDEgMCAwIDEgMiAwIDMuOTMgMy45MyAwIDAgMCA3Ljg2IDAgMSAxIDAgMCAxIDIgMCA1LjkzNiA1LjkzNiAwIDAgMSAtNS45MyA1LjkzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjAuNDE2IDM1LjExNGExIDEgMCAwIDEgLTEtMXYtMjQuNzM1YTEgMSAwIDAgMSAyIDB2MjQuNzM1YTEgMSAwIDAgMSAtMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjkuNiA1MC4wMjZoLTE4LjM3YTEgMSAwIDAgMSAtLjk3Ni0xLjIxNWwzLjI4LTE0LjkxMWExIDEgMCAwIDEgLjk3Ny0uNzg1aDExLjgwOWExIDEgMCAwIDEgLjk3Ny43ODVsMy4yOCAxNC45MDlhMSAxIDAgMCAxIC0uOTc2IDEuMjE1em0tMTcuMTI2LTJoMTUuODgybC0yLjgzOS0xMi45MDloLTEwLjJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02MC40MTYgNTQuNjZhNS42NDEgNS42NDEgMCAwIDEgLTUuNjM0LTUuNjM0IDEgMSAwIDEgMSAyIDAgMy42MzQgMy42MzQgMCAxIDAgNy4yNjggMCAxIDEgMCAxIDEgMiAwIDUuNjQxIDUuNjQxIDAgMCAxIC01LjYzNCA1LjYzNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzLjU4NCAzNS4xMTRhMSAxIDAgMCAxIC0xLTF2LTI0LjczNWExIDEgMCAwIDEgMiAwdjI0LjczNWExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyLjc3IDUwLjAyNmgtMTguMzdhMSAxIDAgMCAxIC0uOTc2LTEuMjE1bDMuMjc2LTE0LjkxMWExIDEgMCAwIDEgLjk3Ny0uNzg1aDExLjgxMmExIDEgMCAwIDEgLjk3Ny43ODVsMy4yOCAxNC45MDlhMSAxIDAgMCAxIC0uOTc2IDEuMjE1em0tMTcuMTI2LTJoMTUuODgxbC0yLjgzOS0xMi45MDloLTEwLjIwM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzLjU4NCA1NC42NmE1LjY0MSA1LjY0MSAwIDAgMSAtNS42MzQtNS42MzQgMSAxIDAgMCAxIDIgMCAzLjYzNCAzLjYzNCAwIDAgMCA3LjI2OCAwIDEgMSAwIDAgMSAyIDAgNS42NDEgNS42NDEgMCAwIDEgLTUuNjM0IDUuNjM0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Chandelier:Z_e,Climate:X_e,"Coffee Makers":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ2NiAxMTEuOTk2aC00OS43MTlsLTEwOS4yMTUtNDYuMzYxIDQuODg5LTU0Ljc0NmMuMjUtMi43OTYtLjY4Ny01LjU2OC0yLjU4Mi03LjYzOS0xLjg5NC0yLjA3LTQuNTcyLTMuMjUtNy4zNzgtMy4yNWgtNjBjLTIuODA3IDAtNS40ODQgMS4xOC03LjM3OSAzLjI1LTEuODk1IDIuMDcxLTIuODMxIDQuODQzLTIuNTgyIDcuNjM5bDQuODk4IDU0Ljg1NC0xMDQuNzk1IDQ2LjI1M2gtMjYuMTM3Yy0zOC41OTggMC03MCAzMS40MDItNzAgNzB2NjkuOTk3YzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMHMzMC0xMy40NTggMzAtMzB2LTY5Ljk5N2MwLTUuNDIgNC41OC0xMCAxMC0xMGgyNi45MTVsMjEuNDgzIDEyMS43MzhjMS45MjcgMTAuOTIzIDkuOTA0IDE4LjI2MyAxOS44NDggMTguMjYzdjQwLjAwM2MtOS42NTIgMC0xNy4yMTcgNi44MDItMTkuNzQ0IDE3Ljc1MWwtMzAuMDAxIDEzMGMtLjY4NSAyLjk2OS4wMjEgNi4wODkgMS45MTggOC40NzRzNC43NzggMy43NzQgNy44MjYgMy43NzRoMjgwYzMuMDQ3IDAgNS45MjktMS4zOSA3LjgyNi0zLjc3NCAxLjg5Ny0yLjM4NSAyLjYwNC01LjUwNSAxLjkxOC04LjQ3NGwtMzAuMDAxLTEzMGMtMi41MjUtMTAuOTQ5LTEwLjA5MS0xNy43NTEtMTkuNzQzLTE3Ljc1MXYtNDAuMDAyYzkuOTQ0IDAgMTcuOTItNy4zMzkgMTkuODQ3LTE4LjI2MmwxNC4zODEtODEuNDkyIDY0LjA1Ni01NS4yMzZjMi4yMDMtMS44OTkgMy40Ny00LjY2NSAzLjQ3LTcuNTczdi0yNy40MzhjLjAwMS01LjUyNC00LjQ3Ny0xMC4wMDEtOS45OTktMTAuMDAxem0tMTc0LjkzOC05MS45OTYtMy43NSA0MS45OTZoLTMwLjYzNGwtMy43NTEtNDEuOTk2em0tNDEuNDIzIDYxLjk5Nmg0NC43ODVsNzAuNjcyIDMwaC0xODMuNDI4em0tMTQzLjYzOSA3MC4wMDFjLTE2LjU0MiAwLTMwIDEzLjQ1OC0zMCAzMHY2OS45OTdjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMHMtMTAtNC40ODYtMTAtMTB2LTY5Ljk5N2MwLTI3LjU3IDIyLjQzLTUwIDUwLTUwaDE5Ljg1NmwzLjUzIDIwem02OC4wOTQgMTM4LjI2My0yNy45MjktMTU4LjI2NGg2Mi43NjJsMi41MjggMzUuODE3Yy4zNzIgNS4yNyA0Ljc2MiA5LjI5NiA5Ljk2NSA5LjI5Ni4yMzYgMCAuNDc1LS4wMDguNzE0LS4wMjUgNS41MDktLjM4OSA5LjY2LTUuMTcgOS4yNzEtMTAuNjc5bC0yLjQyOS0zNC40MDloOTAuNTM5bC0xMS4yOTUgMTYwLjAwMmgtNjcuOTQ5bC0yLjUyOS0zNS44MTdjLS4zODktNS41MDktNS4xNjYtOS42NjEtMTAuNjc5LTkuMjcxLTUuNTA5LjM4OS05LjY2IDUuMTctOS4yNzEgMTAuNjc5bDIuNDI5IDM0LjQwOWgtNDUuNTE4Yy0uMTk5LS4zMjEtLjQ2My0uOTE0LS42MDktMS43Mzh6bS0uMTAzIDgzLjk4OGMuMjU5LTEuMTI1LjYxLTEuODU3Ljg1My0yLjI0OWg0NS4zNmwtMTEuMDc3IDEyMGgtNjIuMzF6bTEzNC4yMTItMi4yNDggMTEuMDc3IDEyMGgtOTAuMDY5bDExLjA3Ny0xMjB6bTY2LjI5NyAyLjI0OCAyNy4xNzUgMTE3Ljc1MmgtNjIuMzFsLTExLjA3Ny0xMjBoNDUuMzZjLjI0My4zOTEuNTkzIDEuMTIzLjg1MiAyLjI0OHptLTIwLjI1NS0yMi4yNDhoLTE1OS45OTh2LTQwLjAwMmgxNTkuOTk4em0yMC4xNTEtNjEuNzRjLS4xNDYuODI0LS40MDkgMS40MTctLjYwOCAxLjczN2gtNDUuNTE4bDExLjI5NS0xNjAuMDAxaDYyLjc2MmwtMTIuOTM3IDczLjMwOWMwIC4wMDEgMCAuMDAyLS4wMDEuMDAzem04MS42MDQtMTQ1LjQwNy00Mi4wMjkgMzYuMjQyIDguNjY1LTQ5LjA5OWgzMy4zNjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMjQuNTk5IDIyMS45OTdjNS41MjMgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzctMTAtMTAtMTBoLS4wMDdjLTUuNTIzIDAtOS45OTYgNC40NzctOS45OTYgMTBzNC40OCAxMCAxMC4wMDMgMTB6Ii8+DQogICAgPC9nPg0KPC9zdmc+","Cold Water":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ3NSA0NzUiID4NCjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQoJPHBhdGggZD0iTTQzOC40MTMsMzQzLjE4OEM0MjguMDU5LDMzNS4wODUsNDE1LjE3NCwzMjUsMzkwLjgzNSwzMjVjLTI0LjMzOSwwLTM3LjIyNCwxMC4wODUtNDcuNTc3LDE4LjE4OA0KCQlDMzM0LjQ5NiwzNTAuMDQ1LDMyOC4xNjUsMzU1LDMxNC4xNywzNTVjLTEzLjk5NCwwLTIwLjMyNS00Ljk1NS0yOS4wODctMTEuODEzQzI3NC43MjksMzM1LjA4NSwyNjEuODQ0LDMyNSwyMzcuNTA2LDMyNQ0KCQljLTI0LjMzOSwwLTM3LjIyNCwxMC4wODUtNDcuNTc4LDE4LjE4OEMxODEuMTY2LDM1MC4wNDUsMTc0LjgzNCwzNTUsMTYwLjg0LDM1NWMtMTMuOTk2LDAtMjAuMzI3LTQuOTU1LTI5LjA5LTExLjgxMw0KCQlDMTIxLjM5NSwzMzUuMDg0LDEwOC41MDksMzI1LDg0LjE3LDMyNWMtMjQuMzM5LDAtMzcuMjI1LDEwLjA4NC00Ny41NzksMTguMTg4QzI3LjgyOCwzNTAuMDQ1LDIxLjQ5NiwzNTUsNy41LDM1NXYzMA0KCQljMjQuMzM5LDAsMzcuMjI1LTEwLjA4NCw0Ny41NzktMTguMTg4QzYzLjg0MiwzNTkuOTU1LDcwLjE3NCwzNTUsODQuMTcsMzU1YzEzLjk5NiwwLDIwLjMyNyw0Ljk1NSwyOS4wOTEsMTEuODEzDQoJCUMxMjMuNjE1LDM3NC45MTYsMTM2LjUsMzg1LDE2MC44NCwzODVjMjQuMzM4LDAsMzcuMjI0LTEwLjA4NCw0Ny41NzgtMTguMTg4QzIxNy4xOCwzNTkuOTU1LDIyMy41MTEsMzU1LDIzNy41MDYsMzU1DQoJCWMxMy45OTQsMCwyMC4zMjUsNC45NTUsMjkuMDg3LDExLjgxM0MyNzYuOTQ3LDM3NC45MTUsMjg5LjgzMywzODUsMzE0LjE3LDM4NWMyNC4zMzgsMCwzNy4yMjQtMTAuMDg1LDQ3LjU3Ny0xOC4xODgNCgkJQzM3MC41MSwzNTkuOTU1LDM3Ni44NDEsMzU1LDM5MC44MzUsMzU1YzEzLjk5NSwwLDIwLjMyNSw0Ljk1NSwyOS4wODgsMTEuODEzQzQzMC4yNzcsMzc0LjkxNSw0NDMuMTYyLDM4NSw0NjcuNSwzODV2LTMwDQoJCUM0NTMuNTA2LDM1NSw0NDcuMTc1LDM1MC4wNDUsNDM4LjQxMywzNDMuMTg4eiIvPg0KCTxwYXRoIGQ9Ik0zOTAuODM1LDQxNWMtMjQuMzM4LDAtMzcuMjI0LDEwLjA4NS00Ny41NzcsMTguMTg4QzMzNC40OTYsNDQwLjA0NSwzMjguMTY1LDQ0NSwzMTQuMTcsNDQ1DQoJCWMtMTMuOTk0LDAtMjAuMzI1LTQuOTU1LTI5LjA4Ny0xMS44MTNDMjc0LjcyOSw0MjUuMDg1LDI2MS44NDQsNDE1LDIzNy41MDYsNDE1Yy0yNC4zMzksMC0zNy4yMjQsMTAuMDg1LTQ3LjU3OCwxOC4xODgNCgkJQzE4MS4xNjYsNDQwLjA0NSwxNzQuODM0LDQ0NSwxNjAuODQsNDQ1Yy0xMy45OTYsMC0yMC4zMjctNC45NTUtMjkuMDktMTEuODEzQzEyMS4zOTUsNDI1LjA4NCwxMDguNTA5LDQxNSw4NC4xNyw0MTUNCgkJYy0yNC4zMzksMC0zNy4yMjUsMTAuMDg0LTQ3LjU3OSwxOC4xODhDMjcuODI4LDQ0MC4wNDUsMjEuNDk2LDQ0NSw3LjUsNDQ1djMwYzI0LjMzOSwwLDM3LjIyNS0xMC4wODQsNDcuNTc5LTE4LjE4OA0KCQlDNjMuODQyLDQ0OS45NTUsNzAuMTc0LDQ0NSw4NC4xNyw0NDVjMTMuOTk2LDAsMjAuMzI3LDQuOTU1LDI5LjA5MSwxMS44MTNDMTIzLjYxNSw0NjQuOTE2LDEzNi41LDQ3NSwxNjAuODQsNDc1DQoJCWMyNC4zMzgsMCwzNy4yMjQtMTAuMDg0LDQ3LjU3OC0xOC4xODhDMjE3LjE4LDQ0OS45NTUsMjIzLjUxMSw0NDUsMjM3LjUwNiw0NDVjMTMuOTk0LDAsMjAuMzI1LDQuOTU1LDI5LjA4NywxMS44MTMNCgkJQzI3Ni45NDcsNDY0LjkxNSwyODkuODMzLDQ3NSwzMTQuMTcsNDc1YzI0LjMzOCwwLDM3LjIyNC0xMC4wODUsNDcuNTc3LTE4LjE4OEMzNzAuNTEsNDQ5Ljk1NSwzNzYuODQxLDQ0NSwzOTAuODM1LDQ0NQ0KCQljMTMuOTk1LDAsMjAuMzI1LDQuOTU1LDI5LjA4OCwxMS44MTNDNDMwLjI3Nyw0NjQuOTE1LDQ0My4xNjIsNDc1LDQ2Ny41LDQ3NXYtMzBjLTEzLjk5NCwwLTIwLjMyNS00Ljk1NS0yOS4wODctMTEuODEzDQoJCUM0MjguMDU5LDQyNS4wODUsNDE1LjE3NCw0MTUsMzkwLjgzNSw0MTV6Ii8+DQoJPHBvbHlnb24gcG9pbnRzPSIxODQuMzc4LDI1OC4zMjMgMjIyLjUsMjM2LjMxMyAyMjIuNSwyODAuMzMzIDI1Mi41LDI4MC4zMzMgMjUyLjUsMjM2LjMxMyAyOTAuNjIyLDI1OC4zMjMgMzA1LjYyMiwyMzIuMzQzDQoJCTI2Ny41LDIxMC4zMzMgMzA1LjYyMiwxODguMzIzIDI5MC42MjIsMTYyLjM0MyAyNTIuNSwxODQuMzUzIDI1Mi41LDE0MC4zMzMgMjIyLjUsMTQwLjMzMyAyMjIuNSwxODQuMzUzIDE4NC4zNzgsMTYyLjM0Mw0KCQkxNjkuMzc4LDE4OC4zMjMgMjA3LjUsMjEwLjMzMyAxNjkuMzc4LDIzMi4zNDMgCQkJIi8+DQoJPHBvbHlnb24gcG9pbnRzPSIyNC4wOTUsMTE3Ljk5IDYyLjIxNiw5NS45OCA2Mi4yMTYsMTQwIDkyLjIxNiwxNDAgOTIuMjE2LDk1Ljk4IDEzMC4zMzgsMTE3Ljk5IDE0NS4zMzgsOTIuMDEgMTA3LjIxNiw3MA0KCQkxNDUuMzM4LDQ3Ljk5IDEzMC4zMzgsMjIuMDEgOTIuMjE2LDQ0LjAyIDkyLjIxNiwwIDYyLjIxNiwwIDYyLjIxNiw0NC4wMiAyNC4wOTUsMjIuMDEgOS4wOTUsNDcuOTkgNDcuMjE3LDcwIDkuMDk1LDkyLjAxDQoJCSIvPg0KCTxwb2x5Z29uIHBvaW50cz0iMzQ0LjY2MiwxMTcuOTkgMzgyLjc4NCw5NS45OCAzODIuNzg0LDE0MCA0MTIuNzg0LDE0MCA0MTIuNzg0LDk1Ljk4IDQ1MC45MDUsMTE3Ljk5IDQ2NS45MDUsOTIuMDEgNDI3Ljc4Myw3MA0KCQk0NjUuOTA1LDQ3Ljk5IDQ1MC45MDUsMjIuMDEgNDEyLjc4NCw0NC4wMiA0MTIuNzg0LDAgMzgyLjc4NCwwIDM4Mi43ODQsNDQuMDIgMzQ0LjY2MiwyMi4wMSAzMjkuNjYyLDQ3Ljk5IDM2Ny43ODQsNzANCgkJMzI5LjY2Miw5Mi4wMSAJCQkiLz4NCjwvZz4NCjwvc3ZnPg0K",Computer:K_e,Consumption:q_e,Curtains:exe,Dishwashers:txe,Doors:sxe,Doorstep:ixe,Dryer:rxe,Fan:oxe,"Floor Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM3Ny4wMTggMTA0LjQtNTQuODYxLTkzLjQxNmMtMy45OC02Ljc3NS0xMS4zMzQtMTAuOTg0LTE5LjE5MS0xMC45ODRoLTkxLjY1NWMtNy42OTcgMC0xNC45NzMgNC4wNzktMTguOTg3IDEwLjY0NGwtNTcuMTM1IDkzLjQxNGMtOS4wNTUgMTQuODAzIDEuNjI2IDMzLjg3IDE4Ljk4NyAzMy44N2gyOC4xODJjMi4yMjIgMzMuNDUyIDI2LjgwOCA2MC44ODQgNTguOTE2IDY3LjQxLS4yNzQgMS44MjYtLjE4NC0xMy41MS0uMTg0IDIxNy4xOTVoLTM3LjQ4NGMtMTEuODk4IDAtMjEuNTc5IDkuNjgtMjEuNTc5IDIxLjU3OXY0Ni4zMWMwIDExLjg5OCA5LjY4IDIxLjU3OSAyMS41NzkgMjEuNTc5aDEwNC43OWMxMS44OTkgMCAyMS41NzktOS42OCAyMS41NzktMjEuNTc5di00Ni4zMWMwLTExLjg5OC05LjY4LTIxLjU3OS0yMS41NzktMjEuNTc5aC0zNy40ODRjMC0yMzAuNzY2LjA5LTIxNS4zNy0uMTg0LTIxNy4xOTUgMjIuMDI1LTQuNDc2IDQwLjUwNS0xOC43OTUgNTAuNjY2LTM4LjE0MXYzNy42MzFjMCA4LjIzNSA2LjY3NiAxNC45MTEgMTQuOTExIDE0LjkxMXMxNC45MTEtNi42NzYgMTQuOTExLTE0LjkxMXYtNjYuOWg2LjYxYzE3LjE2NiAwIDI3Ljg5My0xOC43MDggMTkuMTkyLTMzLjUyOHptLTc2Ljg2NiAzNzcuNzc4aC04OC4zMDJ2LTI5LjgyMmg4OC4zMDJ6bS04NC41OTktNDUyLjM1Nmg4My4wODNsNDUuOTc0IDc4LjI4NGMtNy4wNjEgMC0xNjkuOTAzIDAtMTc2LjkzOCAwem00MC40NDcgMTQ3LjE3MmMtMjIuNTk1IDAtNDEuMjY3LTE3LjExNy00My43MjktMzkuMDY2aDg3LjQ1OGMtMi40NjIgMjEuOTQ5LTIxLjEzNCAzOS4wNjYtNDMuNzI5IDM5LjA2NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Garage Doors":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIsNjRjNC40MTgsMCw4LTMuNTgyLDgtOFY4YzAtNC40MTgtMy41ODItOC04LThIOEMzLjU4MiwwLDAsMy41ODIsMCw4djQ4YzAsNC40MTgsMy41ODIsOCw4LDhoMTZ2NDAwSDgNCgkJYy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDQ2NGM0LjQxOCwwLDgtMy41ODIsOC04cy0zLjU4Mi04LTgtOGgtMTZWNjRINDcyeiBNNDA4LDQ2NEg3MnYtNDhoMzM2VjQ2NHogTTQwOCw0MDBINzJ2LTQ4DQoJCWgzMzZWNDAweiBNNDA4LDMzNkg3MnYtNDhoMzM2VjMzNnogTTQwOCwyNzJINzJ2LTQ4aDMzNlYyNzJ6IE00MDgsMjA4SDcydi00OGgzMzZWMjA4eiBNNDA4LDE0NEg3MlY5NmgzMzZWMTQ0eiBNNDQwLDQ2NGgtMTZWODgNCgkJYzAtNC40MTgtMy41ODItOC04LThINjRjLTQuNDE4LDAtOCwzLjU4Mi04LDh2Mzc2SDQwVjY0aDQwMFY0NjR6IE0xNiw0OFYxNmg0NDh2MzJIMTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTYsNDU2aDQ4YzQuNDE4LDAsOC0zLjU4Miw4LThzLTMuNTgyLTgtOC04aC00OGMtNC40MTgsMC04LDMuNTgyLTgsOFMyMTEuNTgyLDQ1NiwyMTYsNDU2eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Gates:nxe,Hairdryer:axe,Handle:Mxe,"Hanging Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTkzLjUyNSAzNTkuNzcxaDEwNy44ODV2NC4xMjlhNTMuMDcyIDUzLjA3MiAwIDEgMCAxMDYuMTQ0IDB2LTQuMTI0aDExMC45MjFhNiA2IDAgMCAwIDYtNmMwLTgyLjAxNS01OC45MTMtMTUwLjUxOC0xMzYuNjQtMTY1LjQ0NHYtMjAuMzE5YTMxLjg4MyAzMS44ODMgMCAwIDAgLTI1LjgzNS0zMS4yNnYtMTIwLjc1M2E2IDYgMCAwIDAgLTEyIDB2MTIwLjc1M2EzMS44ODMgMzEuODgzIDAgMCAwIC0yNS44MzUgMzEuMjZ2MjAuMzE0Yy03Ny43MjcgMTQuOTI2LTEzNi42NCA4My40MjktMTM2LjY0IDE2NS40NDRhNiA2IDAgMCAwIDYgNnptMjAyLjAyOSA0LjEyOWE0MS4wNzIgNDEuMDcyIDAgMSAxIC04Mi4xNDQgMHYtNC4xMjRoODIuMTQ0em0tMzkuNTU0LTIxNS43MjJhMTkuODUxIDE5Ljg1MSAwIDAgMSAxOS4xOCAxNC44NjhoLTM4LjM2YTE5Ljg1MSAxOS44NTEgMCAwIDEgMTkuMTgtMTQuODY4em0tMTkuODM1IDI2Ljg2OGgzOS42N3YxMS40MjRhMTY4LjI4OCAxNjguMjg4IDAgMCAwIC0zOS42NyAwem0xOS44MzUgMjIuMjU0Yzg0LjI3NCAwIDE1My4yIDY2Ljk2IDE1Ni4zNjEgMTUwLjQ3NGgtMzEyLjcyMmMzLjE2MS04My41MTcgNzIuMDg3LTE1MC40NzQgMTU2LjM2MS0xNTAuNDc0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjUwIDQ1NS41MDh2NDAuNDkyYTYgNiAwIDAgMCAxMiAwdi00MC40OTJhNiA2IDAgMCAwIC0xMiAweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzAzLjQyMiA0MzEuNDg4YTYgNiAwIDAgMCAtLjA3NSA4LjQ4NWwyOC4zNDQgMjguODUxYTYgNiAwIDAgMCA4LjU2MS04LjQxbC0yOC4zNDQtMjguODUxYTYgNiAwIDAgMCAtOC40ODYtLjA3NXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMC4wOTIgNDMxLjU2My0yOC4zNDQgMjguODUxYTYgNiAwIDAgMCA4LjU2MSA4LjQxbDI4LjM0NC0yOC44NTFhNiA2IDAgMCAwIC04LjU2MS04LjQxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg2Ljc1IDIzNi44MWExNjguNzMxIDE2OC43MzEgMCAwIDAgLTQ1LjkyNyA0OC4xNDMgNiA2IDAgMSAwIDEwLjE0MSA2LjQxNyAxNTYuNzgxIDE1Ni43ODEgMCAwIDEgNDIuNjc3LTQ0LjczNiA2IDYgMCAwIDAgLTYuODkxLTkuODI0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Heater:cxe,Hoods:uxe,"Hot Water":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMCA1MTAiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5NSAyNDEuOTAyYy0xOC4yMjMgMC0zMy4zNTgtNS45MzctNDUuMDkyLTE3LjYydi0xNDkuMzU0YzAtNDEuMzE1LTMzLjYxMy03NC45MjgtNzQuOTI5LTc0LjkyOHMtNzQuOTI4IDMzLjYxMy03NC45MjggNzQuOTI4djE0OS4zOTVjLTI0LjI1NCAyNC4xMDctNjkuNDc2IDI0LjQxNS05My42NjMtMy44MDMtNS45ODEtNi45NzgtMTYuNzkzLTYuOTgyLTIyLjc3NyAwLTI0LjU4NiAyOC42ODUtNzIuNTM4IDI4Ljc5OC05Ny4yMjMgMC02LjMyMi03LjM3OC0xNy44NjctNi44NjctMjMuNTM3Ljk2My0uMTQ4LjIwNC0xNS42ODggMjAuNDE4LTQ3Ljg1MiAyMC40MTgtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXM2LjcxNiAxNSAxNSAxNWMyOC42MzIgMCA0OC40ODktMTEuMjggNjAuMDI3LTIwLjYyNCAzMy40NDcgMjcuNjE1IDg2LjUxMiAyNy42MjUgMTE5Ljk3My0uMDIyIDMwLjE5MSAyNC45NDQgNzQuMzYyIDI2LjE3OSAxMDUuMDUyIDkuOTU3djQwLjQ3MWMtMjcuOTg0IDIzLjEzMS00My44MTEgNTcuODc4LTQyLjY1OCA5NC40NTMgMS45NzQgNjIuNzI4IDUzLjc0MyAxMTMuODY0IDExNy41ODYgMTEzLjg2NCA2NC44NzEgMCAxMTcuNjQ3LTUyLjc3NiAxMTcuNjQ3LTExNy42NDYgMC0zNS4wNy0xNS44MzctNjguNDA2LTQyLjcxOS05MC42NjZ2LTQwLjQ5N2MxMy4zMjUgNy4wNTIgMjguNTE3IDEwLjcxIDQ1LjA5MiAxMC43MSA4LjI4NCAwIDE1LTYuNzE2IDE1LTE1cy02LjcxNS0xNC45OTktMTQuOTk5LTE0Ljk5OXptLTEyMC4wMi0yMTEuOTAyYzI0Ljc3MyAwIDQ0LjkyOCAyMC4xNTUgNDQuOTI4IDQ0LjkyOHYxNDkuNTM3Yy04LjMxNCA4LjIxMS0xOC4zMjcgMTMuNTUxLTI5LjkyOSAxNS45NTN2LTE0My45NTdjMC04LjI4NC02LjcxNi0xNS0xNS0xNXMtMTUgNi43MTYtMTUgMTV2MTQzLjk0N2MtMTEuNjAzLTIuNDA5LTIxLjYxNS03Ljc1OS0yOS45MjgtMTUuOTgzdi0xNDkuNDk3Yy4wMDEtMjQuNzczIDIwLjE1Ni00NC45MjggNDQuOTI5LTQ0LjkyOHptLS4wMDEgMzQzLjUwNGMxMC41MzIgMCAxOS4xMDEgOC41NjggMTkuMTAxIDE5LjFzLTguNTY4IDE5LjEtMTkuMTAxIDE5LjFjLTEwLjUzMSAwLTE5LjEtOC41NjgtMTkuMS0xOS4xczguNTY5LTE5LjEgMTkuMS0xOS4xem04Ny42NDggMTguODVjMCA0OC4zMjktMzkuMzE4IDg3LjY0Ni04Ny42NDcgODcuNjQ2LTQ2LjgzMSAwLTg2LjEyOS0zOC4wNDQtODcuNjAyLTg0LjgwOC0uOTItMjkuMjE4IDEyLjcwNC01Ni44NzUgMzYuNDQzLTczLjk4MSAzLjkxMi0yLjgxOSA2LjIzLTcuMzQ3IDYuMjMtMTIuMTY5di00Ny43NzRjOS4xNDggNC44MiAxOS4xNzcgOC4wMzMgMjkuOTI4IDkuNTY4djc1LjAyYy0xOS43NTggNi4zNTUtMzQuMSAyNC45MDUtMzQuMSA0Ni43NDggMCAyNy4wNzQgMjIuMDI2IDQ5LjEgNDkuMSA0OS4xczQ5LjEwMS0yMi4wMjYgNDkuMTAxLTQ5LjFjMC0yMS44NDMtMTQuMzQyLTQwLjM5My0zNC4xMDEtNDYuNzQ4di03NS4wMTRjMTAuNzUtMS41MzEgMjAuNzgtNC43MzggMjkuOTI5LTkuNTUydjQ3Ljc1M2MwIDQuODIyIDIuMzE4IDkuMzUxIDYuMjMgMTIuMTY5IDIyLjg0OCAxNi40NjMgMzYuNDg5IDQzLjA1OSAzNi40ODkgNzEuMTQyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTc4LjE5IDMwOC4zMzJjLTI0LjgxMyAwLTQ1IDIwLjE4Ny00NSA0NXMyMC4xODcgNDUgNDUgNDUgNDUtMjAuMTg3IDQ1LTQ1LTIwLjE4Ni00NS00NS00NXptMCA2MGMtOC4yNzEgMC0xNS02LjcyOS0xNS0xNXM2LjcyOS0xNSAxNS0xNSAxNSA2LjcyOSAxNSAxNS02LjcyOCAxNS0xNSAxNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTczLjg1NyAzNzkuMTE3Yy0yNC44MTMgMC00NSAyMC4xODctNDUgNDVzMjAuMTg3IDQ1IDQ1IDQ1IDQ1LTIwLjE4NyA0NS00NS0yMC4xODYtNDUtNDUtNDV6bTAgNjBjLTguMjcxIDAtMTUtNi43MjktMTUtMTVzNi43MjktMTUgMTUtMTUgMTUgNi43MjkgMTUgMTUtNi43MjggMTUtMTUgMTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02NC44NjMgMTU0LjE0M2MtNS44NTggNS44NTgtNS44NTggMTUuMzU1IDAgMjEuMjEzIDUuODU3IDUuODU3IDE1LjM1NSA1Ljg1OCAyMS4yMTMgMCAyMS4wNDYtMjEuMDQ2IDIxLjA0Ni01NS4yOTEgMC03Ni4zMzgtOS4zNzEtOS4zNy05LjM3My0yNC41MzkgMC0zMy45MTEgNS44NTgtNS44NTggNS44NTgtMTUuMzU1IDAtMjEuMjEzLTUuODU3LTUuODU4LTE1LjM1NS01Ljg1Ny0yMS4yMTMgMC0yMS4wOTYgMjEuMDk2LTIxLjA5OCA1NS4yNDEgMCA3Ni4zMzggOS4zNDkgOS4zNDkgOS4zNDkgMjQuNTYxIDAgMzMuOTExeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQyLjI1MSAxNTQuMTQzYy01Ljg1OCA1Ljg1OC01Ljg1OCAxNS4zNTUgMCAyMS4yMTMgNS44NTcgNS44NTggMTUuMzU0IDUuODU4IDIxLjIxMyAwIDIxLjA5Ny0yMS4wOTcgMjEuMDk4LTU1LjI0IDAtNzYuMzM5LTkuMzcxLTkuMzctOS4zNzMtMjQuNTM5IDAtMzMuOTExIDUuODU4LTUuODU4IDUuODU4LTE1LjM1NSAwLTIxLjIxMy01Ljg1Ni01Ljg1OC0xNS4zNTQtNS44NTctMjEuMjEzIDAtMjEuMDk2IDIxLjA5Ni0yMS4wOTggNTUuMjQxIDAgNzYuMzM4IDkuMzcxIDkuMzcxIDkuMzczIDI0LjUzOSAwIDMzLjkxMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxOS42MzkgMTU0LjE0M2MtNS44NTggNS44NTgtNS44NTggMTUuMzU1IDAgMjEuMjEzIDUuODU3IDUuODU4IDE1LjM1NCA1Ljg1OCAyMS4yMTMgMCAyMS4wOTctMjEuMDk3IDIxLjA5OC01NS4yNCAwLTc2LjMzOS05LjM3MS05LjM3LTkuMzczLTI0LjUzOSAwLTMzLjkxMSA1Ljg1OC01Ljg1OCA1Ljg1OC0xNS4zNTUgMC0yMS4yMTMtNS44NTYtNS44NTgtMTUuMzU0LTUuODU3LTIxLjIxMyAwLTIxLjA5NiAyMS4wOTYtMjEuMDk4IDU1LjI0MSAwIDc2LjMzOCA5LjM3IDkuMzcxIDkuMzczIDI0LjUzOSAwIDMzLjkxMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Humidity:lxe,Iron:Nxe,Irrigation:Lxe,"Led Strip":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0xNiAxOGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2IDI2YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgNDJhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNiA1MGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2IDU4YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMzRhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMiA2Mmg4YTEgMSAwIDAgMCAxLTF2LTQ5aDZ2NDFhMSAxIDAgMCAwIC4yOTMuNzA3bDggOGExIDEgMCAwIDAgLjcwNy4yOTNoOGExIDEgMCAwIDAgLjcwNy0uMjkzbDgtOGExIDEgMCAwIDAgLjI5My0uNzA3di01MGExIDEgMCAwIDAgLTEtMWgtOGExIDEgMCAwIDAgLTEgMXY0OWgtNnYtNDlhMSAxIDAgMCAwIC0xLTFoLTE2YTEgMSAwIDAgMCAtLjcwNy4yOTNsLTggOGExIDEgMCAwIDAgLS4yOTMuNzA3djUwYTEgMSAwIDAgMCAxIDF6bTMzLTEzdi00NWg2djQ4LjU4NmwtNiA2em0tOCA1aDZ2NmgtNnptLTgtNXYtNDVoNnY1NC41ODZsLTYtNnptLTgtNDVoNnY2aC02em0tOCA1MXYtNDMuNTg2bDYtNnY1NC41ODZoLTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCA1MmEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDQ0YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDggMjhhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCAyMGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDEyYTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDggMzZhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMiA1MmEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDQ0YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMjhhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMiAyMGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDEyYTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMzZhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMyA2aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM5IDU2aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQgMzFoNXYyaC01eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNiAyNWgydjVoLTJ6IiB0cmFuc2Zvcm09Im1hdHJpeCguNiAtLjggLjggLjYgLTE5LjIgMTYuNikiLz4NCiAgICAgICAgPHBhdGggZD0ibTQuNSAzNS41aDV2MmgtNXoiIHRyYW5zZm9ybT0ibWF0cml4KC44IC0uNiAuNiAuOCAtMjAuNTA1IDExLjUwNSkiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDMxaDV2MmgtNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU0LjUgMjYuNWg1djJoLTV6IiB0cmFuc2Zvcm09Im1hdHJpeCguOCAtLjYgLjYgLjggLTUuMDk4IDM5LjcxMikiLz4NCiAgICAgICAgPHBhdGggZD0ibTU2IDM0aDJ2NWgtMnoiIHRyYW5zZm9ybT0ibWF0cml4KC42IC0uOCAuOCAuNiAtNi40IDYwLjIpIi8+DQogICAgPC9nPg0KPC9zdmc+",Light:gxe,Lightings:jxe,Lock:yxe,Louvre:Txe,"Mowing Machine":"PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ3IDU0YzUuNTE0IDAgMTAtNC40ODYgMTAtMTBzLTQuNDg2LTEwLTEwLTEwLTEwIDQuNDg2LTEwIDEwIDQuNDg2IDEwIDEwIDEwem0tNy45MzEtMTFjLjE4My0xLjQ1OC43NTktMi43OTIgMS42MTktMy44OThsMS4zNjIgMS4zNjMgMS40MTQtMS40MTQtMS4zNjItMS4zNjJjMS4xMDYtLjg2IDIuNDQtMS40MzYgMy44OTgtMS42MTl2MS45M2gydi0xLjkzMWMxLjQ1OC4xODMgMi43OTIuNzU5IDMuODk4IDEuNjE5bC0xLjM2MiAxLjM2MiAxLjQxNCAxLjQxNCAxLjM2Mi0xLjM2M2MuODYgMS4xMDYgMS40MzYgMi40NCAxLjYxOSAzLjg5OGgtMS45MzF2MmgxLjkzMWMtLjE4MyAxLjQ1OC0uNzU5IDIuNzkyLTEuNjE5IDMuODk4bC0xLjM2Mi0xLjM2My0xLjQxNCAxLjQxNCAxLjM2MiAxLjM2MmMtMS4xMDYuODYtMi40NCAxLjQzNi0zLjg5OCAxLjYxOXYtMS45MjloLTJ2MS45MzFjLTEuNDU4LS4xODMtMi43OTItLjc1OS0zLjg5OC0xLjYxOWwxLjM2Mi0xLjM2Mi0xLjQxNC0xLjQxNC0xLjM2MiAxLjM2M2MtLjg2LTEuMTA2LTEuNDM2LTIuNDQtMS42MTktMy44OThoMS45MzF2LTJoLTEuOTMxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMjFoLTI0Ljk4Yy0xLjUxMSAwLTIuOTg0LjQyNi00LjI2MiAxLjIyOWwtMjIuMDIxIDEzLjg2NmMtMi4zNCAxLjQ3My0zLjczNyA0LjAwNS0zLjczNyA2Ljc2OXY2LjEzNmMwIC41NTMuNDQ4IDEgMSAxaDMzLjA4OGMuMzQxIDAgLjY1OC0uMTc0Ljg0Mi0uNDYuMTg0LS4yODcuMjA5LS42NDcuMDY3LS45NTctLjc1LTEuNjM1LTEuMDgtMy4zODctLjk3OS01LjIwOC4zMDktNS41OTEgNC45MzYtMTAuMTQ1IDEwLjUzNS0xMC4zNjYgMy4wMjgtLjExNiA1Ljg5Mi45NjcgOC4wNjkgMy4wNiAyLjE3OCAyLjA5MyAzLjM3OCA0LjkxIDMuMzc4IDcuOTMxIDAgLjU1My40NDggMSAxIDFoM2MuNTUyIDAgMS0uNDQ3IDEtMXYtMTdjMC0zLjMwOS0yLjY5MS02LTYtNnptLTI4LjE3NyAyLjkyM2MuOTU5LS42MDQgMi4wNjQtLjkyMyAzLjE5Ny0uOTIzaDEwLjM3bC04LjM5MSA1LjAzNXYtLjAzNWgtMTEuNjUxem0tMjIuMDIgMTMuODY0IDEyLjM2OC03Ljc4N2gxMS41NTJsLTE4LjIzMyAxMC45NGMtMS4xNTcuNjk0LTIuNDggMS4wNi0zLjgyNyAxLjA2aC00LjU5NmMuMjQ4LTEuNzI4IDEuMjI5LTMuMjYzIDIuNzM2LTQuMjEzem01NC4xOTcgNS4yMTNoLTEuMDM4Yy0uMjM5LTMuMTg4LTEuNjIzLTYuMTMyLTMuOTU1LTguMzc0LTIuNTczLTIuNDczLTUuOTYzLTMuNzUtOS41MzQtMy42MTUtNi4xOS4yNDUtMTEuMzc0IDQuOTctMTIuMzE3IDEwLjk4OWgtMTcuMTU2djJoMTcuMDEzYy4wMDIgMS4zNjEuMjAyIDIuNzE1LjYxNSA0aC0zMC42Mjh2LTRoNC42NjNjMS43MDkgMCAzLjM4OS0uNDY1IDQuODU2LTEuMzQ1bDMyLjc1OC0xOS42NTVoMTAuNzIzYzIuMjA2IDAgNCAxLjc5NCA0IDR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA0OGMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMC02YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMi0yLS44OTctMi0yIC44OTctMiAyLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02LjY1MSAxNS42MzVjLTEuNzU3IDIuMTI1LTEuNDU4IDUuMjgyLjY2NyA3LjA0bDQuNjI0IDMuODIzYy4xODcuMTU0LjQxMi4yMjkuNjM3LjIyOS4yODggMCAuNTczLS4xMjQuNzcxLS4zNjIgMS43NTctMi4xMjUgMS40NTgtNS4yODItLjY2Ny03LjA0bC00LjYyNC0zLjgyM2MtLjQyNi0uMzUyLTEuMDU2LS4yOTItMS40MDguMTMzem01LjY2MiA4LjU3Ni0zLjcyMS0zLjA3N2MtMS4wMDQtLjgzMS0xLjMyOS0yLjE4NS0uOTA1LTMuMzQ1bDMuNzIxIDMuMDc3YzEuMDA1LjgzMSAxLjMyOSAyLjE4NS45MDUgMy4zNDV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMS40NDUgOS4yMjktNC42MjQgMy44MjNjLTIuMTI1IDEuNzU4LTIuNDI0IDQuOTE2LS42NjcgNy4wNC4xOTguMjM5LjQ4My4zNjIuNzcxLjM2Mi4yMjUgMCAuNDUtLjA3NS42MzctLjIyOWw0LjYyNC0zLjgyM2MyLjEyNS0xLjc1NyAyLjQyNC00LjkxNS42NjctNy4wNC0uMzUyLS40MjQtLjk4My0uNDg0LTEuNDA4LS4xMzN6bS0uNTMzIDUuNjMyLTMuNzIyIDMuMDc4Yy0uMTUyLS40MTUtLjIxMS0uODYzLS4xNjgtMS4zMTYuMDc2LS43OTguNDU4LTEuNTE5IDEuMDc1LTIuMDI5bDMuNzIxLTMuMDc3Yy40MjMgMS4xNi4wOTkgMi41MTMtLjkwNiAzLjM0NHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Music:Dxe,"Outdoor Blinds":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ1NyAwaC00MDJjLTMwLjMyNyAwLTU1IDI0LjY3My01NSA1NXY0NTdoNDMydi00MDguMDM1YzcuNTA3IDMuODQ4IDE2IDYuMDM1IDI1IDYuMDM1IDMwLjMyNyAwIDU1LTI0LjY3MyA1NS01NXMtMjQuNjczLTU1LTU1LTU1em0tNDAyIDMwaDM1My4wMzVjLTMuODQ4IDcuNTA3LTYuMDM1IDE2LTYuMDM1IDI1djdoLTM3MnYtN2MwLTEzLjc4NSAxMS4yMTUtMjUgMjUtMjV6bS0yNSAyNzJ2LTMwaDM3MnYzMHptMzcyIDMwdjMwaC0zNzJ2LTMwem0tMzcyLTkwdi0zMGgzNzJ2MzB6bTAtNjB2LTMwaDM3MnYzMHptMC02MHYtMzBoMzcydjMwem0wIDM2MHYtOTBoMzcydjkwem00MjctNDAyYy0xMy43ODUgMC0yNS0xMS4yMTUtMjUtMjVzMTEuMjE1LTI1IDI1LTI1IDI1IDExLjIxNSAyNSAyNS0xMS4yMTUgMjUtMjUgMjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02MCA0MjJoMzB2MzBoLTMweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQyIDQyMmgzMHYzMGgtMzB6Ii8+DQogICAgPC9nPg0KPC9zdmc+",People:dxe,Pool:hxe,"Power Consumption":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0xMiAzYy0uMjc2IDAtLjUtLjIyNC0uNS0uNXYtMmMwLS4yNzYuMjI0LS41LjUtLjVzLjUuMjI0LjUuNXYyYzAgLjI3Ni0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4LjcxOCA1Ljc4MmMtLjEyOCAwLS4yNTYtLjA0OS0uMzU0LS4xNDYtLjE5NS0uMTk1LS4xOTUtLjUxMiAwLS43MDdsMS40MTQtMS40MTRjLjE5NS0uMTk1LjUxMi0uMTk1LjcwNyAwcy4xOTUuNTEyIDAgLjcwN2wtMS40MTQgMS40MTRjLS4wOTcuMDk3LS4yMjUuMTQ2LS4zNTMuMTQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjMuNSAxMi41aC0yYy0uMjc2IDAtLjUtLjIyNC0uNS0uNXMuMjI0LS41LjUtLjVoMmMuMjc2IDAgLjUuMjI0LjUuNXMtLjIyNC41LS41LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMC4xMzIgMjAuNjMyYy0uMTI4IDAtLjI1Ni0uMDQ5LS4zNTQtLjE0NmwtMS40MTQtMS40MTRjLS4xOTUtLjE5NS0uMTk1LS41MTIgMC0uNzA3cy41MTItLjE5NS43MDcgMGwxLjQxNCAxLjQxNGMuMTk1LjE5NS4xOTUuNTEyIDAgLjcwNy0uMDk3LjA5Ny0uMjI1LjE0Ni0uMzUzLjE0NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEyIDI0Yy0uMjc2IDAtLjUtLjIyNC0uNS0uNXYtMmMwLS4yNzYuMjI0LS41LjUtLjVzLjUuMjI0LjUuNXYyYzAgLjI3Ni0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMuODY4IDIwLjYzMmMtLjEyOCAwLS4yNTYtLjA0OS0uMzU0LS4xNDYtLjE5NS0uMTk1LS4xOTUtLjUxMiAwLS43MDdsMS40MTQtMS40MTRjLjE5NS0uMTk1LjUxMi0uMTk1LjcwNyAwcy4xOTUuNTEyIDAgLjcwN2wtMS40MTQgMS40MTRjLS4wOTcuMDk3LS4yMjUuMTQ2LS4zNTMuMTQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMi41IDEyLjVoLTJjLS4yNzYgMC0uNS0uMjI0LS41LS41cy4yMjQtLjUuNS0uNWgyYy4yNzYgMCAuNS4yMjQuNS41cy0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUuMjgyIDUuNzgyYy0uMTI4IDAtLjI1Ni0uMDQ5LS4zNTQtLjE0NmwtMS40MTMtMS40MTRjLS4xOTUtLjE5NS0uMTk1LS41MTIgMC0uNzA3cy41MTItLjE5NS43MDcgMGwxLjQxNCAxLjQxNGMuMTk1LjE5NS4xOTUuNTEyIDAgLjcwNy0uMDk4LjA5Ny0uMjI2LjE0Ni0uMzU0LjE0NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwLjU3MyAyMGMtLjA1OSAwLS4xMTctLjAxLS4xNzUtLjAzMS0uMjE5LS4wODItLjM1Mi0uMzA0LS4zMjEtLjUzNGwuODUzLTYuNDM1aC0zLjQzYy0uMTg5IDAtLjM2Mi0uMTA3LS40NDctLjI3NnMtLjA2Ny0uMzcyLjA0Ny0uNTI0bDYtOGMuMTM5LS4xODYuMzg2LS4yNTIuNTk3LS4xNi4yMTIuMDkxLjMzNS4zMTQuMjk3LjU0MmwtLjkwNCA1LjQxOGgzLjQxYy4xODQgMCAuMzUzLjEwMS40NC4yNjNzLjA3OC4zNTgtLjAyMi41MTNsLTUuOTI3IDljLS4wOTUuMTQzLS4yNTQuMjI0LS40MTguMjI0em0tMi4wNzMtOGgzYy4xNDUgMCAuMjgxLjA2My4zNzYuMTcxLjA5NS4xMDcuMTM5LjI1Mi4xMi4zOTVsLS42NDEgNC44MzggNC4yMTctNi40MDRoLTMuMDcyYy0uMTQ3IDAtLjI4Ni0uMDY0LS4zODItLjE3Ny0uMDk1LS4xMTItLjEzNi0uMjYxLS4xMTEtLjQwNWwuNjYzLTMuOTc4eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Printer:zxe,Pump:wxe,Receiver:Ixe,Sconces:Cxe,Security:pxe,Shading:Axe,Shutters:mxe,SmokeDetector:fxe,Sockets:Oxe,Speaker:Exe,Stove:_xe,"Table Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTk3LjUgMjIwLjM2MS0xNS45MTQgMTUuOTE0YTYgNiAwIDEgMCA4LjQ4NCA4LjQ4NmwxNS45MTUtMTUuOTE1YTYgNiAwIDEgMCAtOC40ODQtOC40ODV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05NS41MSAxMTdhNiA2IDAgMCAwIDQuMjQzLTEwLjI0MmwtMTUuOTE0LTE1LjkxNWE2IDYgMCAwIDAgLTguNDg2IDguNDg2bDE1LjkxNCAxNS45MTRhNS45NzggNS45NzggMCAwIDAgNC4yNDMgMS43NTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzUuNSAyNDIuNTA4LTE1LjkxLTE1LjkxNGE2IDYgMCAwIDAgLTguNDg2IDguNDg1bDE1LjkxNCAxNS45MTVhNiA2IDAgMCAwIDguNDg2LTguNDg2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtODYuODI2IDE3MWE2IDYgMCAwIDAgLTYtNmgtMjQuODM3YTYgNiAwIDAgMCAwIDEyaDI0LjgzN2E2IDYgMCAwIDAgNi02eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTU1IDIzOS41MjFhNiA2IDAgMCAwIC02IDZ2MjQuODM2YTYgNiAwIDAgMCAxMiAwdi0yNC44MzZhNiA2IDAgMCAwIC02LTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzguODUyIDQ1MS45NjlhNDEuODM3IDQxLjgzNyAwIDAgMCAtNDEuMTY2LTM1Ljk2OWgtMjguNjg2di0zMjYuNjg0YTY5LjMwOSA2OS4zMDkgMCAwIDAgLTEyMS43LTQ1LjM4MiA1Ni4wMjIgNTYuMDIyIDAgMCAwIC00OC43MDkgNi4zNDlsLTgxLjUxOSA1NC4wNjhhNiA2IDAgMCAwIC0uOTI1IDkuMjQybDIzLjQyMiAyMy40MjMtMS40NDIgMS40NDJhMzUuMTg4IDM1LjE4OCAwIDAgMCA0OS43NjMgNDkuNzYzbDEuNDQyLTEuNDQyIDIzLjQyMiAyMy40MjFhNiA2IDAgMCAwIDQuMjQ2IDEuNzU5Yy4yIDAgLjQtLjAxLjYtLjAzYTYgNiAwIDAgMCA0LjQtMi42NTRsNTQuMDY3LTgxLjUxOWE1Ni4wODggNTYuMDg4IDAgMCAwIDMuNDg4LTU1LjY1NiAyNi4zODYgMjYuMzg2IDAgMCAxIDQ2LjQ0NSAxNy4yMTZ2MzI2LjY4NGgtMjkuMTgyYTQyIDQyIDAgMCAwIC00MS4zNDMgMzYuMDc2IDI2LjQgMjYuNCAwIDAgMCAtMjIuNDc1IDI1Ljk1NnY3Ljk2OGE2LjI4MiA2LjI4MiAwIDAgMCA2LjMxOSA2aDIxNi42OTJhNS45OTIgNS45OTIgMCAwIDAgNS45ODktNnYtNy45NjhhMjYuMjQ3IDI2LjI0NyAwIDAgMCAtMjMuMTQ4LTI2LjA2M3ptLTI1OS40NTItMjcyLjIzNGEyMy4xODggMjMuMTg4IDAgMCAxIC0zMi43OTMtMzIuNzkybDEuNDQzLTEuNDQzIDMyLjc5MyAzMi43OTN6bTM2LjY0OCAxNi43OTQtODYuMjMtODYuMjI5IDE4LjA5My0xMiA4MC4xNCA4MC4xNHptNTAuMDEyLTc1LjQtMzEuMjQ2IDQ3LjExLTc2LjctNzYuNzA1IDQ3LjExLTMxLjI0NmE0My44OTQgNDMuODk0IDAgMCAxIDYwLjg0IDYwLjg0MXptMzMuNTI4LTcwLjI3MmEzOC4yNTIgMzguMjUyIDAgMCAwIC0yNi42ODggMTAuODIzIDU0LjYyIDU0LjYyIDAgMCAwIC0xNC4xODYtMTIuNDM1IDU3LjMxIDU3LjMxIDAgMCAxIDk4LjI4NiA0MC4wNzF2MzI2LjY4NGgtMTl2LTMyNi42ODRhMzguNDYxIDM4LjQ2MSAwIDAgMCAtMzguNDA5LTM4LjQ2NHptLTIuNzcgMzc3LjE0M2gxMDAuODY4YzE0LjI1OSAwIDI2LjE5NSAxMSAyOC45NzYgMjRoLTE1OC44MTljMi43ODEtMTMgMTQuNzE2LTI0IDI4Ljk3NS0yNHptMTUzLjE4MiA1MmgtMjA1di0xLjk2OGExNC4zMiAxNC4zMiAwIDAgMSAxNC4zMTktMTQuMDMyaDE3Ni42OTJhMTQuMDM0IDE0LjAzNCAwIDAgMSAxMy45ODkgMTQuMDMyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzA1IDM4MS4wMzFhNiA2IDAgMCAwIDEyIDB2LTc1LjgwNmE2IDYgMCAwIDAgLTEyIDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMTEgMjkwLjg0NGE2IDYgMCAwIDAgNi02di00LjgzNGE2IDYgMCAwIDAgLTEyIDB2NC44MzRhNiA2IDAgMCAwIDYgNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Temperature Sensors":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNMzUyLDM4NS40MDZWNTMuMzMzQzM1MiwyMy45MjcsMzI4LjA3MywwLDI5OC42NjcsMHMtNTMuMzMzLDIzLjkyNy01My4zMzMsNTMuMzMzdjMzMi4wNzMNCgkJCQlDMjMxLjcxOSwzOTkuMzY1LDIyNCw0MTguMDMxLDIyNCw0MzcuMzMzQzIyNCw0NzguNSwyNTcuNSw1MTIsMjk4LjY2Nyw1MTJjNDEuMTY3LDAsNzQuNjY3LTMzLjUsNzQuNjY3LTc0LjY2Nw0KCQkJCUMzNzMuMzMzLDQxOC4wMzEsMzY1LjYxNSwzOTkuMzY1LDM1MiwzODUuNDA2eiBNMjk4LjY2Nyw0OTAuNjY3Yy0yOS40MDYsMC01My4zMzMtMjMuOTI3LTUzLjMzMy01My4zMzMNCgkJCQljMC0xNS4xMDQsNi4zMjMtMjkuMTI1LDE3LjgxMy0zOS40NjljMi4yNC0yLjAzMSwzLjUyMS00LjkwNiwzLjUyMS03LjkyN1Y1My4zMzNjMC0xNy42NDYsMTQuMzU0LTMyLDMyLTMyDQoJCQkJYzE3LjY0NiwwLDMyLDE0LjM1NCwzMiwzMnYzMzYuNjA0YzAsMy4wMjEsMS4yODEsNS44OTYsMy41MjEsNy45MjdDMzQ1LjY3Nyw0MDguMjA4LDM1Miw0MjIuMjI5LDM1Miw0MzcuMzMzDQoJCQkJQzM1Miw0NjYuNzQsMzI4LjA3Myw0OTAuNjY3LDI5OC42NjcsNDkwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwOS4zMzMsNDA3LjI5OFYyMjRjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N2MtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N3YxODMuMjk4DQoJCQkJYy0xMi4zODksNC40MTgtMjEuMzMzLDE2LjE0Ny0yMS4zMzMsMzAuMDM1YzAsMTcuNjQ2LDE0LjM1NCwzMiwzMiwzMmMxNy42NDYsMCwzMi0xNC4zNTQsMzItMzINCgkJCQlDMzMwLjY2Nyw0MjMuNDQ1LDMyMS43MjMsNDExLjcxNiwzMDkuMzMzLDQwNy4yOTh6IE0yOTguNjY3LDQ0OGMtNS44ODUsMC0xMC42NjctNC43ODEtMTAuNjY3LTEwLjY2Nw0KCQkJCWMwLTUuODg1LDQuNzgxLTEwLjY2NywxMC42NjctMTAuNjY3YzUuODg1LDAsMTAuNjY3LDQuNzgxLDEwLjY2NywxMC42NjdDMzA5LjMzMyw0NDMuMjE5LDMwNC41NTIsNDQ4LDI5OC42NjcsNDQ4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEzLjMzMywzNDEuMzMzaC02NGMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N2MwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3aDY0DQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDM0Ni4xMDQsMjE5LjIyOSwzNDEuMzMzLDIxMy4zMzMsMzQxLjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMy4zMzMsMjk4LjY2N0gxOTJjLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjdjMCw1Ljg5Niw0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2gyMS4zMzMNCgkJCQljNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N0MyMjQsMzAzLjQzOCwyMTkuMjI5LDI5OC42NjcsMjEzLjMzMywyOTguNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEzLjMzMywyNTZIMTkyYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3YzAsNS44OTYsNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdoMjEuMzMzDQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDI2MC43NzEsMjE5LjIyOSwyNTYsMjEzLjMzMywyNTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzMzLDIzNC42NjdoNjRjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N3MtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdoLTY0DQoJCQkJYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzE0My40MzgsMjM0LjY2NywxNDkuMzMzLDIzNC42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzMzLDEwNi42NjdoNjRjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N3MtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdoLTY0DQoJCQkJYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzE0My40MzgsMTA2LjY2NywxNDkuMzMzLDEwNi42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTMuMzMzLDE3MC42NjdIMTkyYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3YzAsNS44OTYsNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdoMjEuMzMzDQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDE3NS40MzgsMjE5LjIyOSwxNzAuNjY3LDIxMy4zMzMsMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMy4zMzMsMTI4SDE5MmMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N2MwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3aDIxLjMzMw0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3QzIyNCwxMzIuNzcxLDIxOS4yMjksMTI4LDIxMy4zMzMsMTI4eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Tv:xxe,"Vacuum Cleaner":"PHN2ZyB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDQwIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04LS4wMjczNDQtMjIuMDgyMDMxLTE3LjkxNzk2OS0zOS45NzI2NTYtNDAtNDAtNC40MTc5NjkgMC04LTMuNTgyMDMxLTgtOHMzLjU4MjAzMS04IDgtOGMzMC45MTQwNjIuMDM1MTU2IDU1Ljk2NDg0NCAyNS4wODU5MzggNTYgNTYgMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MDggOTZjLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzLTMuNTgyMDMxLTgtOC04LTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04YzEzLjI1MzkwNiAwIDI0IDEwLjc0NjA5NCAyNCAyNCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ3MiA5NmMtNC40MTc5NjkgMC04LTMuNTgyMDMxLTgtOC0uMDQ2ODc1LTM5Ljc0NjA5NC0zMi4yNTM5MDYtNzEuOTUzMTI1LTcyLTcyLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzMy41ODIwMzEtOCA4LThjNDguNTc4MTI1LjA1ODU5MzggODcuOTQxNDA2IDM5LjQyMTg3NSA4OCA4OCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IC4wMzUxNTYtMzAuOTE0MDYyIDI1LjA4NTkzOC01NS45NjQ4NDQgNTYtNTYgNC40MTc5NjkgMCA4IDMuNTgyMDMxIDggOHMtMy41ODIwMzEgOC04IDhjLTIyLjA4MjAzMS4wMjczNDQtMzkuOTcyNjU2IDE3LjkxNzk2OS00MCA0MCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTcyIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IDAtMTMuMjUzOTA2IDEwLjc0NjA5NC0yNCAyNC0yNCA0LjQxNzk2OSAwIDggMy41ODIwMzEgOCA4cy0zLjU4MjAzMSA4LTggOC04IDMuNTgyMDMxLTggOC0zLjU4MjAzMSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04IDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IC4wNTg1OTM4LTQ4LjU3ODEyNSAzOS40MjE4NzUtODcuOTQxNDA2MiA4OC04OCA0LjQxNzk2OSAwIDggMy41ODIwMzEgOCA4cy0zLjU4MjAzMSA4LTggOGMtMzkuNzQ2MDk0LjA0Njg3NS03MS45NTMxMjUgMzIuMjUzOTA2LTcyIDcyIDAgNC40MTc5NjktMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQwIDQxNmMyNi41MDc4MTIgMCA0OC0yMS40OTIxODggNDgtNDhzLTIxLjQ5MjE4OC00OC00OC00OC00OCAyMS40OTIxODgtNDggNDhjLjAyNzM0NCAyNi41IDIxLjUgNDcuOTcyNjU2IDQ4IDQ4em0wLTgwYzE3LjY3MTg3NSAwIDMyIDE0LjMyODEyNSAzMiAzMnMtMTQuMzI4MTI1IDMyLTMyIDMyLTMyLTE0LjMyODEyNS0zMi0zMiAxNC4zMjgxMjUtMzIgMzItMzJ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQwIDE4NGMxMy4yNTM5MDYgMCAyNC0xMC43NDYwOTQgMjQtMjRzLTEwLjc0NjA5NC0yNC0yNC0yNC0yNCAxMC43NDYwOTQtMjQgMjQgMTAuNzQ2MDk0IDI0IDI0IDI0em0wLTMyYzQuNDE3OTY5IDAgOCAzLjU4MjAzMSA4IDhzLTMuNTgyMDMxIDgtOCA4LTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxNy45NDUzMTIgMTUydi4wNDY4NzVoLjA1NDY4OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTIgMTUyaDQ4djE2aC00OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yODAgMTUyaDQ4djE2aC00OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDAgNDhjLTEwMS4yNjU2MjUtLjAxMTcxOS0xODguOTQ1MzEyIDcwLjMzMjAzMS0yMTAuODkwNjI1IDE2OS4xODc1LTIxLjk0NTMxMyA5OC44NTkzNzUgMjcuNzM0Mzc1IDE5OS42OTE0MDYgMTE5LjQ5MjE4NyAyNDIuNTMxMjUgNTcuOTI1NzgyIDI3LjAzNTE1NiAxMjQuODUxNTYzIDI3LjAzNTE1NiAxODIuNzgxMjUgMCA5MS43NTc4MTMtNDIuODM1OTM4IDE0MS40MzM1OTQtMTQzLjY2NDA2MiAxMTkuNDkyMTg4LTI0Mi41MjM0MzgtMjEuOTQxNDA2LTk4Ljg1NTQ2OC0xMDkuNjEzMjgxLTE2OS4xOTkyMTgtMjEwLjg3NS0xNjkuMTk1MzEyem0wIDE2YzEwNy4yODUxNTYuMTMyODEyIDE5NS4zOTg0MzggODQuODA0Njg4IDE5OS44MDA3ODEgMTkyaC0xNmMtNC41ODIwMzEtOTguMTc5Njg4LTg1LjUxNTYyNS0xNzUuNDIxODc1LTE4My44MDA3ODEtMTc1LjQyMTg3NXMtMTc5LjIxODc1IDc3LjI0MjE4Ny0xODMuODAwNzgxIDE3NS40MjE4NzVoLTE2YzQuNDAyMzQzLTEwNy4xOTUzMTIgOTIuNTE1NjI1LTE5MS44NjcxODggMTk5LjgwMDc4MS0xOTJ6bTI5LjExMzI4MSAyNDUuNDk2MDk0YzMwLjY4MzU5NCAxMS45ODgyODEgNTAuODgyODEzIDQxLjU1ODU5NCA1MC44ODY3MTkgNzQuNTAzOTA2djI3LjY0MDYyNWMtNDkuODc4OTA2IDI3LjE0NDUzMS0xMTAuMTIxMDk0IDI3LjE0NDUzMS0xNjAgMHYtMjcuNjQwNjI1Yy4wMDM5MDYtMjYuNDI5Njg4IDEzLjA2MjUtNTEuMTUyMzQ0IDM0Ljg4NjcxOS02Ni4wNTQ2ODggMjEuODI4MTI1LTE0LjkwNjI1IDQ5LjYwOTM3NS0xOC4wNjY0MDYgNzQuMjI2NTYyLTguNDQ5MjE4em02Ni44ODY3MTkgNzQuNTAzOTA2YzAtNTMuMDE5NTMxLTQyLjk4MDQ2OS05Ni05Ni05NnMtOTYgNDIuOTgwNDY5LTk2IDk2djE3LjczNDM3NWMtMzguODYzMjgxLTI2Ljk4MDQ2OS02NC41MDc4MTItNjkuMTMyODEzLTcwLjYwMTU2Mi0xMTYuMDQ2ODc1LTYuMDk3NjU3LTQ2LjkxNzk2OSA3LjkyNTc4MS05NC4yMjI2NTYgMzguNjAxNTYyLTEzMC4yMzgyODF2MzYuNTUwNzgxYy4wMjczNDQgMjIuMDgyMDMxIDE3LjkxNzk2OSAzOS45NzI2NTYgNDAgNDBoMTc2YzIyLjA4MjAzMS0uMDI3MzQ0IDM5Ljk3MjY1Ni0xNy45MTc5NjkgNDAtNDB2LTM2LjU1MDc4MWMzMC42NzU3ODEgMzYuMDE1NjI1IDQ0LjY5OTIxOSA4My4zMjAzMTIgMzguNjAxNTYyIDEzMC4yMzgyODEtNi4wOTM3NSA0Ni45MTQwNjItMzEuNzM4MjgxIDg5LjA2NjQwNi03MC42MDE1NjIgMTE2LjA0Njg3NXptLTIwOC0yNDQuODYzMjgxYzYzLjU4OTg0NC01Ny41MTU2MjUgMTYwLjQxMDE1Ni01Ny41MTU2MjUgMjI0IDB2NTIuODYzMjgxYzAgMTMuMjUzOTA2LTEwLjc0NjA5NCAyNC0yNCAyNGgtMTc2Yy0xMy4yNTM5MDYgMC0yNC0xMC43NDYwOTQtMjQtMjR6bS04Ny43MTA5MzggMTMyLjg2MzI4MWgxNmMyLjgzNTkzOCA2MS4wMzkwNjIgMzUuNjcxODc2IDExNi43MjI2NTYgODcuNzEwOTM4IDE0OC43NTM5MDZ2MTguNjQ0NTMyYy02MS40Mzc1LTMzLjg1MTU2My0xMDAuNzUzOTA2LTk3LjMxMjUtMTAzLjcxMDkzOC0xNjcuMzk4NDM4em0xMTkuNzEwOTM4IDE3NS4yNDYwOTR2LTE3LjY0NDUzMmM1MC41MDM5MDYgMjQuNTYyNSAxMDkuNDk2MDk0IDI0LjU2MjUgMTYwIDB2MTcuNjcxODc2Yy01MC45OTYwOTQgMjIuMzM1OTM3LTEwOS4wMDM5MDYgMjIuMzM1OTM3LTE2MCAwem0xNzYtNy44NDc2NTZ2LTE4LjY0NDUzMmM1Mi4wNDI5NjktMzIuMDI3MzQ0IDg0Ljg4NjcxOS04Ny43MTA5MzcgODcuNzI2NTYyLTE0OC43NTM5MDZoMTZjLTIuOTYwOTM3IDcwLjA4OTg0NC00Mi4yODUxNTYgMTMzLjU1MDc4MS0xMDMuNzI2NTYyIDE2Ny4zOTg0Mzh6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Ventilation:Sxe,"Washing Machines":"PHN2ZyBoZWlnaHQ9IjQ5NnB0IiB2aWV3Qm94PSIwIDAgNDk2IDQ5NiIgd2lkdGg9IjQ5NnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00ODggMGgtNDAwYy00LjQyNTc4MSAwLTggMy41ODU5MzgtOCA4djI5Ni44MzIwMzFjLTIuNjAxNTYyLS41MjczNDMtNS4yNzM0MzgtLjgzMjAzMS04LS44MzIwMzEtMjIuMDU0Njg4IDAtNDAgMTcuOTQ1MzEyLTQwIDQwdi4xNjc5NjljLTcuODI0MjE5IDUuODg2NzE5LTEzLjE1MjM0NCAxNC4zOTg0MzctMTUuMTIxMDk0IDIzLjgzMjAzMWgtOC44Nzg5MDZjLTQuNDI1NzgxIDAtOCAzLjU4NTkzOC04IDh2MzJjMCA0LjQxNDA2MiAzLjU3NDIxOSA4IDggOGg4djI0YzAgMzAuODc4OTA2IDI1LjEyODkwNiA1NiA1NiA1Nmg0MTZjNC40MjU3ODEgMCA4LTMuNTg1OTM4IDgtOHYtNDgwYzAtNC40MTQwNjItMy41NzQyMTktOC04LTh6bS04IDE2djgwaC0zODR2LTgwem0tNDM1LjY1NjI1IDMzOS4xNzU3ODFjMi44Mzk4NDQtMS42MDE1NjIgNC40MzM1OTQtNC43NjE3MTkgNC4wMTU2MjUtOGwtLjEyODkwNi0uOTI5Njg3Yy0uMTAxNTYzLS43MzQzNzUtLjIzMDQ2OS0xLjQ2ODc1LS4yMzA0NjktMi4yNDYwOTQgMC0xMy4yMzA0NjkgMTAuNzY5NTMxLTI0IDI0LTI0IDguNDQ5MjE5IDAgMTYuMTIxMDk0IDQuNDA2MjUgMjAuNTI3MzQ0IDExLjgwMDc4MSAxLjE5OTIxOCAyLjAxNTYyNSAzLjIzNDM3NSAzLjQwNjI1IDUuNTUwNzgxIDMuNzkyOTY5IDIuMzI4MTI1LjM5ODQzOCA0LjY5OTIxOS0uMjY1NjI1IDYuNDk2MDk0LTEuNzkyOTY5IDMuMTIxMDkzLTIuNjQ4NDM3IDguMzIwMzEyLTUuODAwNzgxIDE1LjQyNTc4MS01LjgwMDc4MSA4LjU1ODU5NCAwIDE2LjUzNTE1NiA0LjcyNjU2MiAyMC44MTY0MDYgMTIuMzM1OTM4IDEuNjY0MDYzIDIuOTc2NTYyIDUuMDU0Njg4IDQuNTU4NTkzIDguMzgyODEzIDMuOTYwOTM3IDguMzUxNTYyLTEuNDg4MjgxIDE2LjkwNjI1IDQuMjQ2MDk0IDE4LjQ5NjA5MyAxMi43NDIxODcuNTcwMzEzIDMuMDM5MDYzIDIuODM5ODQ0IDUuNDg4MjgyIDUuODM5ODQ0IDYuMjczNDM4IDMuMDE1NjI1LjgwMDc4MSA2LjE2Nzk2OS0uMjM0Mzc1IDguMTY3OTY5LTIuNjA5Mzc1IDQuNjE3MTg3LTUuNTI3MzQ0IDExLjI4OTA2My04LjcwMzEyNSAxOC4yOTY4NzUtOC43MDMxMjUgMTAuNDE0MDYyIDAgMTkuMjE0ODQ0IDYuNzEwOTM4IDIyLjUyNzM0NCAxNmgtMTg4LjkyNTc4MmMxLjk0MTQwNy01LjI5Njg3NSA1LjYwNTQ2OS05LjkzNzUgMTAuNzQyMTg4LTEyLjgyNDIxOXptMTA3LjY1NjI1LTc1LjE3NTc4MWMwLTc0Ljk5MjE4OCA2MS4wMDc4MTItMTM2IDEzNi0xMzZzMTM2IDYxLjAwNzgxMiAxMzYgMTM2LTYxLjAwNzgxMiAxMzYtMTM2IDEzNmMtMTEuMjg5MDYyIDAtMjIuMzI4MTI1LTEuNTE5NTMxLTMzLjA3ODEyNS00LjIxNDg0NC42Mjg5MDYtMS4xNDQ1MzEgMS4wNzgxMjUtMi4zOTQ1MzEgMS4wNzgxMjUtMy43ODUxNTZ2LTEyLjMzNTkzOGMxMC4zNjcxODggMi44NjMyODIgMjEuMDc4MTI1IDQuMzM1OTM4IDMyIDQuMzM1OTM4IDY2LjE2Nzk2OSAwIDEyMC01My44MzIwMzEgMTIwLTEyMHMtNTMuODMyMDMxLTEyMC0xMjAtMTIwLTEyMCA1My44MzIwMzEtMTIwIDEyMGMwIDIxLjA4OTg0NCA1LjQ4MDQ2OSA0MS40MzM1OTQgMTUuODI0MjE5IDU5LjUwMzkwNi0xLjc5Mjk2OS44MDg1OTQtMy41MzUxNTcgMS43MjY1NjMtNS4xOTE0MDcgMi44MDA3ODItNC4wNTg1OTMtNi4xMTMyODItMTAuMTUyMzQzLTEwLjYzMjgxMy0xNy4yMDcwMzEtMTIuODI0MjE5LTYuMTY3OTY5LTE1Ljc2MTcxOS05LjQyNTc4MS0zMi4zNTkzNzUtOS40MjU3ODEtNDkuNDgwNDY5em00OC40NjQ4NDQgNTYuMDQ2ODc1Yy02LjM2NzE4OC05LjkxMDE1Ni0xMS0yMC43MDMxMjUtMTMuNjc5Njg4LTMyLjA0Njg3NWg1LjIxNDg0NGM3LjI4OTA2MiAwIDE0LjE1MjM0NC0yLjgzOTg0NCAxOS4zMTI1LThsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzEwLjMyODEyNSAxMC4zMTI1IDI4LjI5Njg3NSAxMC4zMjAzMTIgMzguNjI1IDBsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzEwLjMyODEyNSAxMC4zMTI1IDI4LjI5Njg3NSAxMC4zMjAzMTIgMzguNjI1IDBsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzUuMTY3OTY5IDUuMTYwMTU2IDEyLjAyMzQzOCA4IDE5LjMxMjUgOGg1LjA5NzY1NmMtMTAuODgyODEyIDQ1Ljc5Mjk2OS01Mi4wMjczNDQgODAtMTAxLjA5NzY1NiA4MC0xMC45NzY1NjIgMC0yMS42OTUzMTItMS43OTI5NjktMzItNS4xMjg5MDZ2LTIuODcxMDk0YzAtNC40MTQwNjItMy41NzQyMTktOC04LThoLTguODA4NTk0Yy0zLjY4NzUtMTguMDg5ODQ0LTE5LjYyNS0zMS43MjY1NjItMzguNzI2NTYyLTMxLjk1MzEyNXptLTE2LjQ2NDg0NC01Ni4wNDY4NzVjMC01Ny4zNDM3NSA0Ni42NTYyNS0xMDQgMTA0LTEwNHMxMDQgNDYuNjU2MjUgMTA0IDEwNGMwIDIuNzAzMTI1LS4xOTkyMTkgNS4zNTE1NjItLjQwNjI1IDhoLTcuNTkzNzVjLTMuMDIzNDM4IDAtNS44NTU0NjktMS4xNzU3ODEtOC0zLjMxMjVsLTQuNjg3NS00LjY4NzVjLTEwLjMyODEyNS0xMC4zMTI1LTI4LjI5Njg3NS0xMC4zMjAzMTItMzguNjI1IDBsLTQuNjg3NSA0LjY3OTY4OGMtNC4yODEyNSA0LjI4MTI1LTExLjcxODc1IDQuMjgxMjUtMTYgMGwtNC42ODc1LTQuNjc5Njg4Yy0xMC4zMjgxMjUtMTAuMzEyNS0yOC4yOTY4NzUtMTAuMzIwMzEyLTM4LjYyNSAwbC00LjY4NzUgNC42Nzk2ODhjLTQuMjgxMjUgNC4yODEyNS0xMS43MTg3NSA0LjI4MTI1LTE2IDBsLTQuNjg3NS00LjY3OTY4OGMtMTAuMzI4MTI1LTEwLjMxMjUtMjguMjk2ODc1LTEwLjMyMDMxMi0zOC42MjUgMGwtNC42ODc1IDQuNjc5Njg4Yy0yLjE0NDUzMSAyLjE0NDUzMS00Ljk3NjU2MiAzLjMyMDMxMi04IDMuMzIwMzEyaC03LjY5NTMxMmMtLjE5OTIxOS0yLjY0ODQzOC0uMzA0Njg4LTUuMzIwMzEyLS4zMDQ2ODgtOHptLTE2OCAxMDRoMjI0djE2aC0yMjR6bTE2MCA5NmgtMTA0Yy0yMi4wNTQ2ODggMC00MC0xNy45NDUzMTItNDAtNDB2LTI0aDE5MnYyNGMwIDIyLjA1NDY4OC0xNy45NDUzMTIgNDAtNDAgNDB6bTQ3LjExMzI4MSAwYzEwLjQwNjI1LTEwLjE3NTc4MSAxNi44ODY3MTktMjQuMzM1OTM4IDE2Ljg4NjcxOS00MHYtMTUuODcxMDk0YzE1LjQyNTc4MSA1LjE0NDUzMiAzMS41MDM5MDYgNy44NzEwOTQgNDggNy44NzEwOTQgODMuODE2NDA2IDAgMTUyLTY4LjE4MzU5NCAxNTItMTUycy02OC4xODM1OTQtMTUyLTE1Mi0xNTItMTUyIDY4LjE4MzU5NC0xNTIgMTUyYzAgMTMuMDE1NjI1IDEuODAwNzgxIDI1LjczNDM3NSA1LjAwNzgxMiAzOC4xMTMyODEtNi4yMjI2NTYtMy45MDYyNS0xMy40NjQ4NDMtNi4xMTMyODEtMjEuMDA3ODEyLTYuMTEzMjgxLTYuNTM1MTU2IDAtMTMgMS42NzE4NzUtMTguNzg1MTU2IDQuODE2NDA2LTEuNTg5ODQ0LTEuNzI2NTYyLTMuMzc1LTMuMjE0ODQ0LTUuMjE0ODQ0LTQuNjI1di0yMDAuMTkxNDA2aDM4NHYzNjh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM2IDgwYzEzLjIzMDQ2OSAwIDI0LTEwLjc2OTUzMSAyNC0yNHMtMTAuNzY5NTMxLTI0LTI0LTI0LTI0IDEwLjc2OTUzMS0yNCAyNCAxMC43Njk1MzEgMjQgMjQgMjR6bTAtMzJjNC40MTQwNjIgMCA4IDMuNTkzNzUgOCA4cy0zLjU4NTkzOCA4LTggOC04LTMuNTkzNzUtOC04IDMuNTg1OTM4LTggOC04em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMCA4MGMxMy4yMzA0NjkgMCAyNC0xMC43Njk1MzEgMjQtMjRzLTEwLjc2OTUzMS0yNC0yNC0yNC0yNCAxMC43Njk1MzEtMjQgMjQgMTAuNzY5NTMxIDI0IDI0IDI0em0wLTMyYzQuNDE0MDYyIDAgOCAzLjU5Mzc1IDggOHMtMy41ODU5MzggOC04IDgtOC0zLjU5Mzc1LTgtOCAzLjU4NTkzOC04IDgtOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjQgODBjMTMuMjMwNDY5IDAgMjQtMTAuNzY5NTMxIDI0LTI0cy0xMC43Njk1MzEtMjQtMjQtMjQtMjQgMTAuNzY5NTMxLTI0IDI0IDEwLjc2OTUzMSAyNCAyNCAyNHptMC0zMmM0LjQxNDA2MiAwIDggMy41OTM3NSA4IDhzLTMuNTg1OTM4IDgtOCA4LTgtMy41OTM3NS04LTggMy41ODU5MzgtOCA4LTh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQ4IDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00NDggMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxNiA2NGgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDE2IDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zODQgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzUyIDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNTIgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Water Consumption":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTI2OC45OSAxODcuNDk5Yy01Ljc1MS05Ljk1OS0yMC4xOTYtMTAuMDE2LTI1Ljk3OSAwLTIxLjgxIDQwLjYxMS0zMi4wMTEgNDguMDYxLTMyLjAxMSA2Ny41MDEgMCAyNC44MTMgMjAuMTg3IDQ1IDQ1IDQ1czQ1LTIwLjE4NyA0NS00NWMwLTE5LjQ1OC0xMC40ODYtMjcuNDIxLTMyLjAxLTY3LjUwMXptLTEyLjk5IDgyLjUwMWMtOC4yNzEgMC0xNS02LjcyOS0xNS0xNSAwLTYuNjg3IDMuMDQyLTguMjE1IDE1LTMwLjAwNSAxMS45NzQgMjEuODE4IDE1IDIzLjMxOCAxNSAzMC4wMDUgMCA4LjI3MS02LjcyOSAxNS0xNSAxNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwNiAwaC0zMDBjLTguNzY5IDAtMTUuNjc2IDcuNTAyLTE0Ljk0OCAxNi4yNDZsMzAgMzYwYy42NDggNy43NzQgNy4xNDcgMTMuNzU0IDE0Ljk0OCAxMy43NTRoNzV2MzJoLTE1Yy0xMy4zMTggMC0yMC4wNDggMTYuMTY1LTEwLjYwNiAyNS42MDZsNjAgNjBjNS44NTcgNS44NTggMTUuMzU1IDUuODU5IDIxLjIxMyAwbDYwLTYwYzkuNDE3LTkuNDE3IDIuNzQ1LTI1LjYwNi0xMC42MDctMjUuNjA2aC0xNXYtMzJoNzVjNy44MDEgMCAxNC4zLTUuOTggMTQuOTQ4LTEzLjc1NGwzMC0zNjBjLjcyOC04LjczOS02LjE3NC0xNi4yNDYtMTQuOTQ4LTE2LjI0NnptLTE2LjMwMiAzMC01LjM0NiA2NC4xNDdjLTIxLjc2OCA4LjM0My0zNS44NzEgMjUuODUzLTUzLjM1MiAyNS44NTMtMjIuNzE3IDAtNDAuNDIzLTMwLTc1LTMwLTM0LjcyNyAwLTUyLjE3NiAzMC03NSAzMC0xNy40ODUgMC0zMS41NTYtMTcuNDk5LTUzLjM1Mi0yNS44NTNsLTUuMzQ2LTY0LjE0N3ptLTI3LjUgMzMwaC03Ni4xOThjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2NjJjMCA2LjQzMiA0LjA0OCAxMS45MTkgOS43MzYgMTQuMDVsLTI0LjczNiAyNC43MzctMjQuNzM2LTI0LjczNmM1LjY4OC0yLjEzMSA5LjczNi03LjYxOCA5LjczNi0xNC4wNXYtNjJjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtNzYuMTk4bC0xOS4yMDgtMjMwLjUwMmMxNC4zMTUgOS4xNTMgMjkuMDc2IDIwLjUwMSA1MC40MDYgMjAuNTAxIDM0LjcyNyAwIDUyLjE3Ni0zMCA3NS0zMCAyMi43MTcgMCA0MC40MjMgMzAgNzUgMzAgMjEuMDE5IDAgMzUuNDQ5LTEwLjkzNyA1MC40MDYtMjAuNTAyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==","Water Heater":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNjcsMTg1LjMyNXYyODFhMzUuNTQxLDM1LjU0MSwwLDAsMCwzNS40NjksMzUuNjMxTDMxOS4wNiw1MDJoLjAwNkEzNS44OTEsMzUuODkxLDAsMCwwLDM1NSw0NjYuMzY5VjQ2NGg2MC42MmMzNC44MzcsMCw2My4zOC0yNy44Nyw2My4zOC02Mi43MTVWMTg5LjczYzAtMzQuODQ0LTI4LjU0My02Mi43My02My4zOC02Mi43M0gzNTV2LTkuNjg5YzAtLjA3NC0uMTYtLjE0Ni0uMTYyLS4yMTlzLS4wNjUtLjExNC0uMDY1LS4xODdBNjIuMDQ0LDYyLjA0NCwwLDAsMCwyOTIuNzYzLDU1SDIxOVY0NGgxNy44MjhDMjQ1LjY1LDQ0LDI1MywzNy4yLDI1MywyOC4zNzRWMjZhMTYuMTY3LDE2LjE2NywwLDAsMC0xNi4xNzItMTZIMTg5LjcwNkExNS43NywxNS43NywwLDAsMCwxNzQsMjZ2Mi4zNzRBMTUuNDU0LDE1LjQ1NCwwLDAsMCwxODkuNzA2LDQ0SDIwN1Y1NUgxMzMuNzcxQzEwMS41LDU1LDc0LjkyNCw4MCw3Mi4xLDExMUgzOS4yYTYuMDU2LDYuMDU2LDAsMCwwLTUuMiw4LjkyOVpNMzU1LDE2MWg2MC42MkEyOC41ODEsMjguNTgxLDAsMCwxLDQ0NCwxODkuNzNWNDAxLjI4NUEyOC41NjgsMjguNTY4LDAsMCwxLDQxNS42Miw0MzBIMzU1Wm0wLDI4MWg2MC42MkE0MC41ODEsNDAuNTgxLDAsMCwwLDQ1Niw0MDEuMjg1VjE4OS43M0E0MC41OTQsNDAuNTk0LDAsMCwwLDQxNS42MiwxNDlIMzU1VjEzOWg2MC42MmMyOC4yMjEsMCw1MS4zOCwyMi41LDUxLjM4LDUwLjczVjQwMS4yODVDNDY3LDQyOS41MTMsNDQzLjg0MSw0NTIsNDE1LjYyLDQ1MkgzNTVabS0xMiwyNC4zNjlBMjMuODkxLDIzLjg5MSwwLDAsMSwzMTkuMDY2LDQ5MGgwbC0yMTYuNTkxLS4wNDFBMjMuNTI3LDIzLjUyNywwLDAsMSw3OSw0NjYuMzI4VjQ1Mi41N2wyNjQsLjA0OVpNMTkwLDMyYTQsNCwwLDAsMS00LTRWMjZhNCw0LDAsMCwxLDQtNGg0N2E0LDQsMCwwLDEsNCw0djJhNCw0LDAsMCwxLTQsNFpNMTMzLjc3MSw2N0gyOTIuNzYzYTQ5LjgyOSw0OS44MjksMCwwLDEsNDkuNTc2LDQ0SDg0LjJBNDkuODMsNDkuODMsMCwwLDEsMTMzLjc3MSw2N1pNMzQzLDEyM1Y0NDAuNjE5TDc5LDQ0MC41N1YxODMuOWE2Ljg1Myw2Ljg1MywwLDAsMC0uOC0yLjg1MUw0OC45MzQsMTIzWiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjAzLDM4OC40NDNBMzUuMDE3LDM1LjAxNywwLDAsMCwyMzgsMzUzLjZWMjM2Ljg0NGEzNSwzNSwwLDAsMC03MCwwVjM1My42QTM1LjAxNywzNS4wMTcsMCwwLDAsMjAzLDM4OC40NDNabS0yMy0xNTEuNmEyMywyMywwLDAsMSw0NiwwVjI4OUgxODBaTTE4MCwzMDFoNDZ2NTIuNmEyMywyMywwLDAsMS00NiwwWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOTksMzE0LjkxM2E2LDYsMCwwLDAsNi02VjIzMy4xMDZhNiw2LDAsMCwwLTEyLDB2NzUuODA3QTYsNiwwLDAsMCw5OSwzMTQuOTEzWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOTksMjE4LjcyNmE2LDYsMCwwLDAsNi02di00LjgzNGE2LDYsMCwwLDAtMTIsMHY0LjgzNEE2LDYsMCwwLDAsOTksMjE4LjcyNloiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Water:kxe,Weather:vxe,Window:Yxe},bxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0xMDggNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MDQgNDguMDE1NjI1aC00OTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOS04LTh2LTMyLjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQ5NmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4djMyLjAxNTYyNWMwIDQuNDI1NzgxLTMuNTc0MjE5IDgtOCA4em0tNDg4LTE2aDQ4MHYtMTYuMDE1NjI1aC00ODB6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTI0Ni43MTg3NWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0Ni43MTg3NWMwIDQuNDI1NzgyLTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NiAyOTYuMTYwMTU2Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04di0yNDYuNzE4NzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNDYuNzE4NzVjMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyOTYuMTYwMTU2aC0yNGMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDI0YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00OTYgMjk2LjE2MDE1NmgtMjRjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgyNGM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MC4xMTMyODFoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE4NC4xMjg5MDZoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNzEuOTg0Mzc1IDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0yMi4wNTg1OTQgMTcuOTM3NS00MCAzOS45OTIxODctNDAgNC40MjE4NzYgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI0IDgtOCA4LTEzLjIyMjY1NiAwLTIzLjk5MjE4NyAxMC43NjU2MjUtMjMuOTkyMTg3IDI0IDAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUyIDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yMzQzNzUtMTAuNzY5NTMxLTI0LTIzLjk5MjE4OC0yNC00LjQyMTg3NCAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzgxMjYtOCA4LTggMjIuMDU0Njg4IDAgMzkuOTkyMTg4IDE3Ljk0MTQwNiAzOS45OTIxODggNDAgMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im03OS45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0My45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgMTA0LjE0NDUzMWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtMjQuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQuMDE1NjI1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDgwLjEyODkwNmgtMzJjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTk2IDk2LjEyODkwNmgtMTYuMDE1NjI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDE1NjI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDMuOTY4NzUgOTYuMTI4OTA2aC0xNS45Njg3NWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDE1Ljk2ODc1YzQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjAuMDA3ODEyIDEyOC4xMjg5MDZoLTE2LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDMxMjVjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE3NS45ODQzNzUgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTIyLjA1ODU5NCAxNy45Mzc1LTQwIDM5Ljk5MjE4Ny00MCA0LjQyMTg3NiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzgxMjQgOC04IDgtMTMuMjIyNjU2IDAtMjMuOTkyMTg3IDEwLjc2NTYyNS0yMy45OTIxODcgMjQgMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTEzLjIzNDM3NS0xMC43Njk1MzEtMjQtMjMuOTkyMTg4LTI0LTQuNDIxODc0IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNi04IDgtOCAyMi4wNTQ2ODggMCAzOS45OTIxODggMTcuOTQxNDA2IDM5Ljk5MjE4OCA0MCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4My45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjAwIDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiA4MC4xMjg5MDZoLTMyYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMzJjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiAxMDQuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di0yNC4wMTU2MjVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNC4wMTU2MjVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDAgOTYuMTI4OTA2aC0xNi4wMTU2MjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMTU2MjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSA5Ni4xMjg5MDZoLTE1Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTUuOTY4NzVjNC40MjE4NzUgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNC4wMDc4MTIgMTI4LjEyODkwNmgtMTYuMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMzEyNWM0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTggOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2LjE2Nzk2OSAyODAuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtMTMuMjQyMTg3IDEwLjc3NzM0My0yNC4wMTU2MjUgMjQuMDE1NjI1LTI0LjAxNTYyNSA0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDgtNC40MjE4NzUgMC04LjAxNTYyNSAzLjU4OTg0NC04LjAxNTYyNSA4LjAxNTYyNSAwIDQuNDIxODc1LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjgwLjE0NDUzMWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04LTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCAxMy4yMzQzNzUgMCAyNCAxMC43NjU2MjUgMjQgMjQgMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzYuMTkxNDA2IDI5Ni4xNjAxNTZoLTgwLjAyMzQzN2MtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDgwLjAzMTI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU4MjAzMSA4LTguMDA3ODEzIDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjgzMjAzMSAyNjQuMTI4OTA2aC00OS4yOTY4NzVjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOGg0OS4yOTY4NzVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3Mi4xNjc5NjkgMjY0LjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtNDcuOTg0Mzc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2NDcuOTg0Mzc1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjE5OTIxOSAyNjQuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04di00OGMwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDh2NDhjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYuMTY3OTY5IDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTE2LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjk2LjE2MDE1NmMtNC40MjE4NzUgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOHYxNi4wMTU2MjVjMCA0LjQyNTc4Mi0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAuMTk5MjE5IDIxNi4xNDQ1MzFoLTQ4LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNDguMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyOC4xOTE0MDYgMjQwLjE0NDUzMWgtNjQuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNjQuMDIzNDM3YzQuNDI1NzgyIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjAuMTY3OTY5IDI4MC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yNDIxODcgMTAuNzc3MzQzLTI0LjAxNTYyNSAyNC4wMTU2MjUtMjQuMDE1NjI1IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOC00LjQyMTg3NSAwLTguMDE1NjI1IDMuNTg5ODQ0LTguMDE1NjI1IDguMDE1NjI1IDAgNC40MjE4NzUtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyODAuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04IDAtNC40MTc5NjktMy41ODIwMzEtOC04LTgtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDEzLjIzNDM3NSAwIDI0IDEwLjc2NTYyNSAyNCAyNCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0MC4xOTE0MDYgMjk2LjE2MDE1NmgtODAuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoODAuMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOC4wMDc4MTMgOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuODMyMDMxIDI2NC4xMjg5MDZoLTQ5LjI5Njg3NWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04aDQ5LjI5Njg3NWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjE2Nzk2OSAyNjQuMTI4OTA2Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Ny45ODQzNzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHY0Ny45ODQzNzVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuMTk5MjE5IDI2NC4xNDQ1MzFjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTh2LTQ4YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOHY0OGMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC4xNjc5NjkgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MTYuMDE1NjI1YzAgNC40MjU3ODItMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyOTYuMTYwMTU2Yy00LjQyMTg3NSAwLTgtMy41NzQyMTgtOC04di0xNi4wMTU2MjVjMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCA0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQyNC4xOTkyMTkgMjE2LjE0NDUzMWgtNDguMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg0OC4wMzEyNWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyLjE5MTQwNiAyNDAuMTQ0NTMxaC02NC4wMjM0MzdjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg2NC4wMjM0MzdjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Uxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM2Mi43ODcgMzYyLjc4NyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTI2MC45NDUsMTQ0Ljk3OWMtMi42NjcsMC01LjEzMywxLjQxNi02LjQ3NywzLjcxOWwtNDcuNDg0LDgxLjMzM2MtMS4zNTQsMi4zMTktMS4zNjUsNS4xODYtMC4wMjcsNy41MTYNCgkJYzEuMzM3LDIuMzI5LDMuODE4LDMuNzY2LDYuNTA0LDMuNzY2aDk0Ljk2OGMyLjY4NiwwLDUuMTY3LTEuNDM3LDYuNTA0LTMuNzY2YzEuMzM4LTIuMzMsMS4zMjctNS4xOTYtMC4wMjctNy41MTZsLTQ3LjQ4My04MS4zMzMNCgkJQzI2Ni4wNzgsMTQ2LjM5NSwyNjMuNjEyLDE0NC45NzksMjYwLjk0NSwxNDQuOTc5eiBNMjI2LjUyNCwyMjYuMzEybDM0LjQyMS01OC45NThsMzQuNDIsNTguOTU4SDIyNi41MjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTUuMjg3LDI1NC42OWgtMTc1LjYybDgxLjI3OC0xMzkuMjE4bDYyLjkyNiwxMDcuNzgzYzIuMDg4LDMuNTc4LDYuNjgzLDQuNzg0LDEwLjI1OCwyLjY5Ng0KCQljMy41NzctMi4wODgsNC43ODQtNi42ODEsMi42OTUtMTAuMjU4TDI2Ny40MjIsOTYuODE1Yy0wLjAyMS0wLjAzNi0wLjA0OC0wLjA2Ny0wLjA2OS0wLjEwM2MtMC4xMjYtMC4yMDgtMC4yNjItMC40MDgtMC40MDctMC42MDMNCgkJYy0wLjA0NC0wLjA1OS0wLjA4Ni0wLjExOC0wLjEzMS0wLjE3NmMtMC4xODMtMC4yMy0wLjM3Ni0wLjQ1MS0wLjU4NC0wLjY1OGMtMC4wMjQtMC4wMjQtMC4wNTEtMC4wNDUtMC4wNzYtMC4wNjkNCgkJYy0wLjE4Ni0wLjE4LTAuMzgzLTAuMzQ5LTAuNTg3LTAuNTA5Yy0wLjA2NS0wLjA1MS0wLjEzMi0wLjEtMC4xOTktMC4xNDhjLTAuMTg3LTAuMTM3LTAuMzc5LTAuMjY0LTAuNTc4LTAuMzg0DQoJCWMtMC4wNTUtMC4wMzMtMC4xMDgtMC4wNjgtMC4xNjQtMC4xYy0wLjI2MS0wLjE0Ny0wLjUzLTAuMjgyLTAuODA5LTAuMzk3Yy0wLjAxMS0wLjAwNC0wLjAyMi0wLjAwOC0wLjAzMy0wLjAxMg0KCQljLTAuMjYtMC4xMDYtMC41MjgtMC4xOTYtMC44MDItMC4yNzNjLTAuMDczLTAuMDIxLTAuMTQ2LTAuMDM4LTAuMjItMC4wNTZjLTAuMjIyLTAuMDU1LTAuNDQ3LTAuMS0wLjY3Ny0wLjEzNQ0KCQljLTAuMDc5LTAuMDEyLTAuMTU3LTAuMDI2LTAuMjM2LTAuMDM2Yy0wLjI5Ny0wLjAzNi0wLjU5OC0wLjA2LTAuOTA2LTAuMDZIMTAxLjg0MmMtMi42NjcsMC01LjEzMywxLjQxNi02LjQ3NywzLjcxOQ0KCQlMMS4wMjMsMjU4LjQwOGMtMS4zNTQsMi4zMTktMS4zNjUsNS4xODYtMC4wMjcsNy41MTZjMS4zMzcsMi4zMjksMy44MTgsMy43NjYsNi41MDQsMy43NjZoODYuNTM4YzAuMDA4LDAsMC4wMTUsMC4wMDEsMC4wMjMsMC4wMDENCgkJczAuMDE1LTAuMDAxLDAuMDIzLTAuMDAxaDM1Ljg4OWMwLjAwOCwwLDAuMDE1LDAuMDAxLDAuMDIzLDAuMDAxczAuMDE1LTAuMDAxLDAuMDIzLTAuMDAxaDM2LjU4NmgxODguNjg0DQoJCWM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41UzM1OS40MywyNTQuNjksMzU1LjI4NywyNTQuNjl6IE0xNjIuMjk4LDI1NC42OWgtMTkuMjYzbDY5LjQzLTExOS40Nw0KCQljMi4wODEtMy41ODIsMC44NjUtOC4xNzItMi43MTYtMTAuMjUzYy0zLjU4LTIuMDgzLTguMTczLTAuODY2LTEwLjI1MywyLjcxNmwtNzMuODEsMTI3LjAwN0gxMDcuMWw4NS4xOTItMTQ2LjU5NGg1NS41OQ0KCQlMMTYyLjI5OCwyNTQuNjl6IE0xMDYuMTQ3LDEwOC4wOTZoMzQuMDkxTDc0Ljc4OSwyMjAuNzE3Yy0yLjA4MSwzLjU4Mi0wLjg2NSw4LjE3MiwyLjcxNiwxMC4yNTMNCgkJYzEuMTg2LDAuNjg5LDIuNDgyLDEuMDE3LDMuNzYyLDEuMDE3YzIuNTg0LDAsNS4xLTEuMzM3LDYuNDkxLTMuNzMzbDY5LjgzLTEyMC4xNThoMTcuMzU2TDg5Ljc1MSwyNTQuNjlIMjAuNTYzTDEwNi4xNDcsMTA4LjA5NnoiDQogICAgICAgIC8+DQogICAgPC9nPg0KPC9zdmc+DQo=",$xe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Ni43MDQgMjcyLjA4NmgtODEuNzA0di04OC4wNzNjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2ODguMDczaC0xNXYtMTkzLjcxYzAtOC4yNDktNi43MTEtMTQuOTU5LTE0Ljk1OS0xNC45NTloLTkxLjU4MmMtOC4yNDggMC0xNC45NTkgNi43MS0xNC45NTkgMTQuOTU5djE5My43MWgtMTV2LTE5My43MWMwLTguMjQ5LTYuNzExLTE0Ljk1OS0xNC45NTktMTQuOTU5aC05MS41ODJjLTguMjQ4IDAtMTQuOTU5IDYuNzEtMTQuOTU5IDE0Ljk1OXYxOTMuNzFoLTE1di0yMjMuNjY5aDI4OHYxMDAuNTk2YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTEwMC41OTZoMy4yMDRjOC40MzUgMCAxNS4yOTYtNi44ODMgMTUuMjk2LTE1LjM0NHYtMTcuNzNjMC04LjQ2LTYuODYxLTE1LjM0My0xNS4yOTYtMTUuMzQzaC0zMjQuNDA4Yy04LjQzNSAwLTE1LjI5NiA2Ljg4My0xNS4yOTYgMTUuMzQ0djE3LjczYzAgOC40NiA2Ljg2MSAxNS4zNDQgMTUuMjk2IDE1LjM0NGgzLjIwNHYyMjMuNjY5aC04MS43MDRjLTguNDM1LS4wMDEtMTUuMjk2IDYuODYxLTE1LjI5NiAxNS4yOTV2MTcuNjIyYzAgOC40MzUgNi44NjEgMTUuMjk2IDE1LjI5NiAxNS4yOTZoLjV2MTQzLjQ4NmgtLjVjLTguNDM1IDAtMTUuMjk2IDYuODYyLTE1LjI5NiAxNS4yOTZ2MTcuNjIyYzAgOC40MzQgNi44NjEgMTUuMjk2IDE1LjI5NiAxNS4yOTZoMjIzLjIwNGM0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMjIzLjIwNGMtLjE2MyAwLS4yOTYtLjEzMy0uMjk2LS4yOTZ2LTE3LjYyMmMwLS4xNjMuMTMzLS4yOTYuMjk2LS4yOTZoNDgxLjQwOGMuMTYzIDAgLjI5Ni4xMzMuMjk2LjI5NnYxNy42MjJjMCAuMTYzLS4xMzMuMjk2LS4yOTYuMjk2aC0yMjMuMjA0Yy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDIyMy4yMDRjOC40MzUgMCAxNS4yOTYtNi44NjIgMTUuMjk2LTE1LjI5NnYtMTcuNjIyYzAtOC40MzQtNi44NjEtMTUuMjk2LTE1LjI5Ni0xNS4yOTZoLS41di0xNDMuNDg2aC41YzguNDM1IDAgMTUuMjk2LTYuODYyIDE1LjI5Ni0xNS4yOTZ2LTE3LjYyMmMwLTguNDM0LTYuODYxLTE1LjI5Ni0xNS4yOTYtMTUuMjk2em0tNDAzLjIwNC0yMzkuMDEydi0xNy43M2MwLS4yMTIuMTUzLS4zNDQuMjk2LS4zNDRoMzI0LjQwOGMuMTQzIDAgLjI5Ni4xMzEuMjk2LjM0NHYxNy43M2MwIC4yMTItLjE1My4zNDQtLjI5Ni4zNDQtMTUuMzY3IDAtMzA5LjA1MSAwLTMyNC40MDggMC0uMTQzLS4wMDEtLjI5Ni0uMTMyLS4yOTYtLjM0NHptMTg0Ljk1OSA0NS4zNDMgOTEuNTQxLS4wNDF2MTkzLjcxaC05MS41MDJ6bS0xMzYuNSAwIDkxLjU0MS0uMDQxdjE5My43MWgtOTEuNTAyem0zMzkuMjQ1IDM4NC44MTdoLTQ1MC40MDh2LTE0Mi45MzRoNDUwLjQwOHptMTUuNzk2LTE1OC4yM2MwIC4xNjQtLjEzMy4yOTYtLjI5Ni4yOTYtMi44MjQgMC00NzEuMTUzIDAtNDgxLjQwOCAwLS4xNjMgMC0uMjk2LS4xMzMtLjI5Ni0uMjk2di0xNy42MjJjMC0uMTYzLjEzMy0uMjk2LjI5Ni0uMjk2aDQ4MS40MDhjLjE2MyAwIC4yOTYuMTMzLjI5Ni4yOTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02Ny42NTUgNDQyLjcwNGgxOC45OWM4Ljc2OCAwIDE1LjktNy4xMzMgMTUuOS0xNS45MDF2LTY5LjUyYzAtOC43NjgtNy4xMzMtMTUuOTAxLTE1LjktMTUuOTAxaC0xOC45OWMtOC43NjggMC0xNS45IDcuMTMzLTE1LjkgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzMgMTUuOTAxIDE1LjkgMTUuOTAxem0tLjktODUuNDIxYzAtLjQ5Ny40MDQtLjkwMS45LS45MDFoMTguOTljLjQ5NiAwIC45LjQwNC45LjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkuOTAxaC0xOC45OWMtLjQ5NiAwLS45LS40MDQtLjktLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzOS40MDYgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzQgMTUuOTAxIDE1LjkwMSAxNS45MDF6bS0uOTAxLTg1LjQyMWMwLS40OTcuNDA0LS45MDEuOTAxLS45MDFoMTguOTg5Yy40OTcgMCAuOTAxLjQwNC45MDEuOTAxdjY5LjUyYzAgLjQ5Ny0uNDA0LjkwMS0uOTAxLjkwMWgtMTguOTg5Yy0uNDk3IDAtLjkwMS0uNDA0LS45MDEtLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxMC43OTYgNDQyLjcwNGgxOC45OWM4Ljc2OCAwIDE1LjkwMS03LjEzMyAxNS45MDEtMTUuOTAxdi02OS41MmMwLTguNzY4LTcuMTM0LTE1LjkwMS0xNS45MDEtMTUuOTAxaC0xOC45OWMtOC43NjggMC0xNS45IDcuMTMzLTE1LjkgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzIgMTUuOTAxIDE1LjkgMTUuOTAxem0tLjktODUuNDIxYzAtLjQ5Ny40MDQtLjkwMS45LS45MDFoMTguOTljLjQ5NyAwIC45MDEuNDA0LjkwMS45MDF2NjkuNTJjMCAuNDk3LS40MDQuOTAxLS45MDEuOTAxaC0xOC45OWMtLjQ5NiAwLS45LS40MDQtLjktLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI4Mi41NDcgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzMgMTUuOTAxIDE1LjkwMSAxNS45MDF6bS0uOTAxLTg1LjQyMWMwLS40OTcuNDA0LS45MDEuOTAxLS45MDFoMTguOTg5Yy40OTcgMCAuOTAxLjQwNC45MDEuOTAxdjY5LjUyYzAgLjQ5Ny0uNDA0LjkwMS0uOTAxLjkwMWgtMTguOTg5Yy0uNDk3IDAtLjkwMS0uNDA0LS45MDEtLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1NC4xMzEgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYy0uMDAxIDguNzY4IDcuMTMzIDE1LjkwMSAxNS45MDEgMTUuOTAxem0tLjkwMi04NS40MjFjMC0uNDk3LjQwNC0uOTAxLjkwMS0uOTAxaDE4Ljk4OWMuNDk3IDAgLjkwMS40MDQuOTAxLjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkwMS45MDFoLTE4Ljk4OWMtLjQ5NyAwLS45MDEtLjQwNC0uOTAxLS45MDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MjUuNTIxIDQ0Mi43MDRoMTguOTg5YzguNzY4IDAgMTUuOTAxLTcuMTMzIDE1LjkwMS0xNS45MDF2LTY5LjUyYzAtOC43NjgtNy4xMzQtMTUuOTAxLTE1LjkwMS0xNS45MDFoLTE4Ljk4OWMtOC43NjggMC0xNS45MDEgNy4xMzMtMTUuOTAxIDE1LjkwMXY2OS41MmMwIDguNzY4IDcuMTM0IDE1LjkwMSAxNS45MDEgMTUuOTAxem0tLjkwMS04NS40MjFjMC0uNDk3LjQwNC0uOTAxLjkwMS0uOTAxaDE4Ljk4OWMuNDk3IDAgLjkwMS40MDQuOTAxLjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkwMS45MDFoLTE4Ljk4OWMtLjQ5NyAwLS45MDEtLjQwNC0uOTAxLS45MDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMTYuNDExIDEwNy4yNjhjLTIuOTMtMi45MjktNy42NzgtMi45MjktMTAuNjA3IDBzLTIuOTI5IDcuNjc4IDAgMTAuNjA2bDIzLjUxMiAyMy41MTJjMi45MyAyLjkyOSA3LjY3OCAyLjkyOSAxMC42MDcgMHMyLjkyOS03LjY3OCAwLTEwLjYwNnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0Mi42MDQgOTIuODMyYy0yLjkzLTIuOTI5LTcuNjc4LTIuOTI5LTEwLjYwNyAwcy0yLjkyOSA3LjY3OCAwIDEwLjYwNmwxMS43NTYgMTEuNzU2YzIuOTMgMi45MjkgNy42NzggMi45MjkgMTAuNjA3IDBzMi45MjktNy42NzggMC0xMC42MDZ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Pxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQxMy45MDcgMGMtNTQuMTA0IDAtOTguMTIyIDQ0LjAwNS05OC4xMjIgOTguMDk2djQzLjU4MnMtNjkuODMxLTM2LjkxMi03MS4wNjUtMzcuNTkzYy05LjU0NC01LjI2Ni0xMi4xODUtNS4yNjctMjEuNzMxIDAtMS4yMzQuNjgxLTEzNi4xNDEgNzEuOTU4LTEzNi4xNDEgNzEuOTU4LTExLjQzNyA2LjAxNy0xMy4wNDUgNy43NDUtMTcuODc4IDE1Ljc4My0uNzg4IDEuMzExLTY1LjY5OCAxMDQuMjMtNjUuNjk4IDEwNC4yMy0zLjE3NSA1LjAyMy00LjA3NyAxMC45NjItMi41MzkgMTYuNzIyIDEuNjE3IDYuMDU2IDUuODQgMTEuMjY5IDExLjU3NyAxNC4yOTUgMy42NDYgMS45MyA3LjU4MiAyLjg1IDExLjQ2NSAyLjg1IDYuMjAyIDAgMTIuMjU1LTIuMzU4IDE2Ljc0NS02LjY4OHY2NS4wNDRjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtODcuNTQxczQ5LjEzNC03Ny44NTUgNDkuNjUyLTc4LjY4MmMyLjMzNC0zLjcyOSAzLjMyOC01LjI4MyA0LjQ5Ni02LjMxOCAxLjMzMy0xLjE4MSAzLjY2NS0yLjQ2NCA4LjY2NS01LjEwN2wxMTMuMDAyLTU5LjY0OWMuODAxLS40MjUgMS40OS0uODAzIDIuMDkzLTEuMTMzLjE0MS0uMDc3LjI4NS0uMTU2LjQyOC0uMjM0LjE0My4wNzguMjg3LjE1Ny40MjguMjM0LjYwMy4zMzEgMS4yOTIuNzA4IDIuMTA5IDEuMTQyIDAgMCAxMTguMTkzIDYyLjQxMyAxMTkuNjQyIDYzLjMxLjg2OS41MzggMS41MDkuOTk1IDIuMDA5IDEuNDM4IDEuMTY3IDEuMDM1IDIuMTYyIDIuNTg5IDQuNDk2IDYuMzE4LjUxOC44MjcgNDkuNjUxIDc4LjY4MSA0OS42NTEgNzguNjgxdjE2MC43MTZoLTg0LjkyMXYtMTA0LjM0aDEyLjYyNWM3LjY1MiAwIDEzLjg3OC02LjIyNiAxMy44NzgtMTMuODc4di0yMS40M2MwLTcuNjUyLTYuMjI2LTEzLjg3OC0xMy44NzgtMTMuODc4aC04NS4xMjJjLTQuMTQyIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVoODR2MTkuMTg2aC0yMDkuODF2LTE5LjE4Nmg5MS4yYzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC05Mi4zMjJjLTcuNjUyIDAtMTMuODc4IDYuMjI2LTEzLjg3OCAxMy44Nzh2MjEuNDNjMCA3LjY1MiA2LjIyNiAxMy44NzggMTMuODc4IDEzLjg3OGgxMi42MjV2MTA0LjMzOWgtODQuOTQ3di0zOC41NjNjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NzYuNTM2YzAgNi45MzQgNS42NDEgMTIuNTc0IDEyLjU3NCAxMi41NzRoNDQ1LjkwN2M3LjE2NyAwIDEyLjk5OS01LjgzMiAxMi45OTktMTIuOTk5di00MDAuOTA1Yy4wMDEtNTQuMDkxLTQ0LjAwNC05OC4wOTYtOTguMDkyLTk4LjA5NnptLTI3My40NCA0OTdoLTg0Ljk0OHYtMjAuNTQ2aDg0Ljk0N3YyMC41NDZ6bTE1OS43ODMtMTM5Ljg4Ni02Ni4zODIgNTkuODQ1LTY2LjM4Mi01OS44NDV6bS0xNDQuNzgzIDkuMzU5IDY3LjIwMSA2MC41ODQtNjcuMjAxIDYwLjU4NHptMTIuMDIgMTMwLjUyNyA2Ni4zODItNTkuODQ1IDY2LjM4MSA1OS44NDV6bTE0NC43ODMtOS4zNTktNjcuMjAxLTYwLjU4NCA2Ny4yMDEtNjAuNTg0em05OS45MTkgOS4zNTloLTg0LjkxOXYtMjAuNTQ2aDg0LjkxOXptNTMuNDQ1LTE5OC44MjNjLS4zNDctLjcyLS43MzMtMS40MjctMS4xNjYtMi4xMTdsLTUxLjk0NS04Mi4yNjZoODQuNDc3djg0LjM4M3ptLTEzNC44NDgtMjAwLjA4MWMwLTQ1LjgxOSAzNy4yODgtODMuMDk2IDgzLjEyMi04My4wOTYgNDUuODE2IDAgODMuMDkyIDM3LjI3NiA4My4wOTIgODMuMDk2djEuMjg3aC0xNjYuMjE0em0wIDE2LjI4N2gxNjYuMjE0djg0LjQxMmgtOTMuOTQ5cy0zLjUyMy01LjY1Ni00LjMxMi02Ljk2NmMtNC44MzEtOC4wMzYtNi40NC05Ljc2Ni0xNy44NjgtMTUuNzc4bC01MC4wODYtMjYuNDV2LTM1LjIxOHptOTUuMjQ2IDE4MC4xNzdzLTUwLjI3NS03OS42NTYtNTAuNzgtODAuNDYzYy00Ljc5OS03LjY2NS02LjUxNC05LjgyNS0xMy4yODEtMTMuNjkyLS41MjEtLjI5Ny0xMTkuOTI5LTYzLjQwOC0xMjAuNDgyLTYzLjcxMS01LjEwMS0yLjc5NS03Ljg0Ny0zLjMyLTEyLjA2Ny0xLjU3Mi0uMDM3LjAxNS0uMDc2LjAzNC0uMTEzLjA1LS42MTYuMjU5LTExNy45ODUgNjIuMTk3LTExNy45ODUgNjIuMTk3LTExLjcyNyA2LjItMTIuOTYxIDcuMjk1LTE4Ljg2OCAxNi43MjktLjUwNS44MDctNTAuNzggODAuNDYzLTUwLjc4IDgwLjQ2My0uMDEuMDE2LS4wMTYuMDMzLS4wMjYuMDQ5bC0xMC4yOTQgMTYuMzFjLTIuMzc1IDMuNzY3LTcuODg1IDUuMDk2LTEyLjAzOSAyLjg5NC0yLjA2LTEuMDg2LTMuNTUyLTIuODczLTQuMDkzLTQuOTAxLS4zMTYtMS4xODQtLjQ0Ni0yLjk4NC43MjktNC44NDMgMCAwIDY1LjAzNy0xMDMuMTI0IDY1Ljg3Mi0xMDQuNTEyIDMuNDQ4LTUuNzM0IDMuNDQ4LTUuNzM0IDEyLjAxNy0xMC4yNDMgMCAwIDEzOS4xOTMtNzMuNjM5IDE0MC4wMTItNzQuMDEzLjgyLjM3NCAxNDAuMDEyIDc0LjAxMyAxNDAuMDEyIDc0LjAxMy4wMDMuMDAyLjAwNy4wMDQuMDExLjAwNiA4LjU1OSA0LjUwMiA4LjU1OSA0LjUwMiAxMi4wMDcgMTAuMjM4LjgzNCAxLjM4OCAxLjgxNiAzLjAyIDMuMDU4IDQuOTg3bDYyLjgzMyA5OS41MDljMS4xNjggMS44NiAxLjAzNCAzLjY2OS43MTYgNC44NTktLjU0NCAyLjAzMi0yLjAzMiAzLjgyLTQuMDcyIDQuODk5LTQuMjI2IDIuMjMxLTkuNjQ1LjkyNC0xMi4wNjktMi44OTZsLTEwLjI5Mi0xNi4zMDdjLS4wMS0uMDE3LS4wMTYtLjAzNS0uMDI2LS4wNXptNzAuOTY4IDIwMi40NGgtNjkuODExdi04NC40MTFoNjkuODExem0tNjkuODExLTk5LjQxMXYtNzQuMzg5YzcuMzEzIDcuMDQyIDE4Ljc2MyA4Ljg3NCAyOC4yMzggMy44NzUgNS42LTIuOTY1IDkuNzQ2LTguMDE2IDExLjQzOC0xMy44OTdoMzAuMTM1djg0LjQxMmgtNjkuODExeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjg1LjI2MiAyMzcuODczYzAtMjguMzQ3LTIzLjA2Mi01MS40MDktNTEuNDA4LTUxLjQwOS0yOC4zMzEgMC01MS4zNzkgMjMuMDYyLTUxLjM3OSA1MS40MDlzMjMuMDQ5IDUxLjQwOSA1MS4zNzkgNTEuNDA5YzI4LjM0Ny0uMDAxIDUxLjQwOC0yMy4wNjMgNTEuNDA4LTUxLjQwOXptLTg3Ljc4NyAwYzAtMjAuMDc2IDE2LjMyLTM2LjQwOSAzNi4zNzktMzYuNDA5IDIwLjA3NSAwIDM2LjQwOCAxNi4zMzMgMzYuNDA4IDM2LjQwOXMtMTYuMzMzIDM2LjQwOS0zNi40MDggMzYuNDA5Yy0yMC4wNTktLjAwMS0zNi4zNzktMTYuMzM0LTM2LjM3OS0zNi40MDl6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Wxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Mi45OTUgMTY2LjQ4OS0zMS45OTUtMjMuOTk2di0xMTIuNDkzYzguMjg0IDAgMTUtNi43MTYgMTUtMTVzLTYuNzE2LTE1LTE1LTE1aC05MGMtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXM2LjcxNiAxNSAxNSAxNXY0NC45OTJsLTg4LjAwOS02Ni4wMDZjLTE1Ljg5My0xMS45MDQtMzguMDktMTEuOTA1LTUzLjk4OS4wMDVsLTIwOS45OTkgMTU3LjVjLTE5Ljg1MyAxNC44OTMtMjMuODkxIDQzLjE1NS05LjAwMSA2My4wMDQgNy4yMiA5LjYyIDE3Ljc1MiAxNS44NTMgMjkuNjU3IDE3LjU1IDIuMTU3LjMwOCA0LjMxLjQ2IDYuNDUuNDU5IDUuMTA5IDAgMTAuMTMtLjg3NiAxNC44OTEtMi41NjR2MjUyLjA2YzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMzYwYzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTI1Mi4wNjhjNC43NjMgMS42ODUgOS44MDMgMi41NiAxNC45NzggMi41NiAxNC4xIDAgMjcuNTY1LTYuNzI5IDM2LjAyMi0xOCAxNC44ODgtMTkuODQ2IDEwLjg0OS00OC4xMDgtOS4wMDUtNjMuMDAzem0tOTEuOTk1LTEzNi40ODloMzB2ODkuOTkybC0zMC0yMi41em0tMTIwIDI3MmgtNTB2LTkyaDUwem0zMCAwdi0xMDdjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtODBjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2MTA3aC0xMDkuOTk5di03Ny4wMDRsMTY0Ljk5OS0xMjMuNzUyIDE2NSAxMjMuNzUzdjc3LjAwM3ptLTIxOS45OTkgMzBoMjA5Ljk5OXYzMGgtNDVjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2NDVoLTQ1Yy04LjI4NCAwLTE1IDYuNzE2LTE1IDE1djQ1aC05MHptMTE5Ljk5OSAxNTB2LTMwaDQ1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTQ1aDQ1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTQ1aDkwdjE1MHptMjY3LjAwMi0yNzAuNTExYy0yLjg2MyAzLjgxNS03LjI0NSA2LjAwNC0xMi4wMjQgNi4wMDQtMy4yNiAwLTYuMzY1LTEuMDM2LTguOTc5LTIuOTk2bC0xOTEuOTk5LTE0NC4wMDNjLTUuMzMzLTQtMTIuNjY3LTQtMTggMGwtMTkyLjAwOCAxNDQuMDA5Yy0zLjE5MyAyLjM5Ny03LjEzNiAzLjQwOC0xMS4wOTggMi44NDItMy45NzMtLjU2Ni03LjQ4OC0yLjY0Ny05Ljg5Ni01Ljg1Ni00Ljk2MS02LjYxNC0zLjYxMi0xNi4wMzUgMy4wMDYtMjFsMjA5Ljk5MS0xNTcuNDkyYzIuNjUyLTEuOTg3IDUuODMtMi45NzkgOS4wMDctMi45NzkgMy4xNzUgMCA2LjM0OS45OTIgOC45OTYgMi45NzRsMjA5Ljk5NiAxNTcuNDk3YzYuNjIgNC45NjYgNy45NjkgMTQuMzg2IDMuMDA4IDIxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Jxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00ODUuNCwyNzIuMDY3aC04LjUzM3YtMTc5LjJjMC00Mi42NjctMzQuMTMzLTc2LjgtNzYuOC03Ni44Yy0zNy43NywwLTY0LjkzNSwyOC4wMDYtNjcuOTc0LDY5LjA0MQ0KCQkJCWMtMTkuODI5LDMuNzQ4LTM0LjQyNiwyMC44MjYtMzQuNDI2LDQxLjg5MmMwLDUuMTIsMy40MTMsOC41MzMsOC41MzMsOC41MzNoNjguMjY3YzUuMTIsMCw4LjUzMy0zLjQxMyw4LjUzMy04LjUzMw0KCQkJCWMwLTIwLjgzMy0xNC4yNzQtMzcuNzY5LTMzLjc2Ny00MS43NjdjMi41NS0yNy4xMTYsMTguODM2LTUyLjEsNTAuODM0LTUyLjFjMzMuMjgsMCw1OS43MzMsMjYuNDUzLDU5LjczMyw1OS43MzN2MTc5LjJIMjAyLjk3NQ0KCQkJCWMtMy44Ni0xOS42ODEtMjAuODc4LTM0LjEzMy00MS44NDEtMzQuMTMzYy04LjUzMy0xMC4yNC0yMC40OC0xNy4wNjctMzQuMTMzLTE3LjA2N2MtMTYuMjEzLDAtMzAuNzIsOS4zODctMzcuNTQ3LDIzLjA0DQoJCQkJYy02LjgyNy0zLjQxMy0xNC41MDctNS45NzMtMjIuMTg3LTUuOTczYy0yMC45NjMsMC0zNy45ODEsMTQuNDUyLTQxLjg0MSwzNC4xMzNIMjQuNmMtMTQuNTA3LDAtMjUuNiwxMS4wOTMtMjUuNiwyNS42DQoJCQkJYzAsMTQuNTA3LDExLjA5MywyNS42LDI1LjYsMjUuNmgxMC4yNTVsMjMuMDI1LDkxLjMwN2M2LjgyNywyNi40NTMsMzAuNzIsNDUuMjI3LDU4LjAyNyw0NS4yMjdoNi44MjdsLTExLjA5MywyMi4xODcNCgkJCQljLTIuNTYsNC4yNjctMC44NTMsOS4zODcsMy40MTMsMTEuMDkzYzAuODUzLDAuODUzLDIuNTYsMC44NTMsMy40MTMsMC44NTNjMy40MTMsMCw1Ljk3My0xLjcwNyw3LjY4LTQuMjY3TDE0MS4wOCw0NTkuOGgyMzYuOA0KCQkJCWwxNC41MDcsMjkuMDEzYzEuNzA3LDMuNDEzLDQuMjY3LDUuMTIsNy42OCw1LjEyYzEuNzA3LDAsMi41NiwwLDMuNDEzLTEuNzA3YzMuNDEzLTEuNzA3LDUuMTItNi44MjcsMy40MTMtMTEuMDkzDQoJCQkJbC0xMC42ODktMjEuMzc5YzI2LjQxOS0wLjkzOCw0OS4yNjYtMTkuMzksNTUuOTE2LTQ0LjMyOGwyMy4yNC05Mi4xNmgxMC4wNGMxNC41MDcsMCwyNS42LTExLjA5MywyNS42LTI1LjYNCgkJCQlDNTExLDI4My4xNiw0OTkuOTA3LDI3Mi4wNjcsNDg1LjQsMjcyLjA2N3ogTTM2NS4wOCwxMTguNDY3aC00OC42NGMzLjQxMy0xMC4yNCwxMy42NTMtMTcuMDY3LDI0Ljc0Ny0xNy4wNjcNCgkJCQlTMzYxLjY2NywxMDguMjI3LDM2NS4wOCwxMTguNDY3eiBNNjcuMjY3LDI1NWM3LjY4LDAsMTQuNTA3LDMuNDEzLDIwLjQ4LDkuMzg3YzEuNzA3LDIuNTYsNS4xMiwzLjQxMyw4LjUzMywyLjU2DQoJCQkJczUuMTItMy40MTMsNS45NzMtNi44MjdjMi41Ni0xMi44LDEyLjgtMjIuMTg3LDI1LjYtMjIuMTg3YzkuMzg3LDAsMTcuOTIsNC4yNjcsMjIuMTg3LDEyLjhjMS43MDcsMy40MTMsNS45NzMsNS4xMiw5LjM4Nyw0LjI2Nw0KCQkJCWMwLjg1MywwLDEuNzA3LDAsMi41NiwwYzExLjA5MywwLDIwLjQ4LDYuODI3LDIzLjg5MywxNy4wNjdINDMuMzczQzQ2Ljc4NywyNjEuODI3LDU2LjE3MywyNTUsNjcuMjY3LDI1NXogTTQzNi43Niw0MTAuMzA3DQoJCQkJYy01LjEyLDE4Ljc3My0yMi4xODcsMzIuNDI3LTQxLjgxMywzMi40MjdIMTE2Ljc2Yy0xOS42MjcsMC0zNi42OTMtMTMuNjUzLTQxLjgxMy0zMi40MjdsLTIyLjE4Ny04Ny4wNGg0MDQuNDhMNDM2Ljc2LDQxMC4zMDd6DQoJCQkJIE00ODUuNCwzMDYuMmgtMTcuMDY3SDQxLjY2N0gyNC42Yy01LjEyLDAtOC41MzMtMy40MTMtOC41MzMtOC41MzNzMy40MTMtOC41MzMsOC41MzMtOC41MzNoOC41MzNoMTYyLjEzM0g0ODUuNA0KCQkJCWM1LjEyLDAsOC41MzMsMy40MTMsOC41MzMsOC41MzNTNDkwLjUyLDMwNi4yLDQ4NS40LDMwNi4yeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzA2LjIsMTczLjkzM2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMjk3LjY2NywxNzAuNTIsMzAxLjA4LDE3My45MzMsMzA2LjIsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwNi4yLDIxMy4xODdjNS4xMiwwLDguNTMzLTQuMjY3LDguNTMzLTguNTMzdi05LjM4N2MwLTUuMTItMy40MTMtOC41MzMtOC41MzMtOC41MzNzLTguNTMzLDMuNDEzLTguNTMzLDguNTMzdjkuMzg3DQoJCQkJQzI5Ny42NjcsMjA5Ljc3MywzMDEuMDgsMjEzLjE4NywzMDYuMiwyMTMuMTg3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzA2LjIsMjQ2LjQ2N2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMjk3LjY2NywyNDMuMDUzLDMwMS4wOCwyNDYuNDY3LDMwNi4yLDI0Ni40Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNDAuMzMzLDE3My45MzNjNS4xMiwwLDguNTMzLTMuNDEzLDguNTMzLTguNTMzdi00LjI2N2MwLTUuMTItMy40MTMtOC41MzMtOC41MzMtOC41MzMNCgkJCQljLTUuMTIsMC04LjUzMywzLjQxMy04LjUzMyw4LjUzM3Y0LjI2N0MzMzEuOCwxNzAuNTIsMzM1LjIxMywxNzMuOTMzLDM0MC4zMzMsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMS44LDIwNC42NTNjMCw1LjEyLDMuNDEzLDguNTMzLDguNTMzLDguNTMzYzUuMTIsMCw4LjUzMy00LjI2Nyw4LjUzMy04LjUzM3YtOS4zODdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJYy01LjEyLDAtOC41MzMsMy40MTMtOC41MzMsOC41MzNWMjA0LjY1M3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMS44LDIzNy45MzNjMCw1LjEyLDMuNDEzLDguNTMzLDguNTMzLDguNTMzYzUuMTIsMCw4LjUzMy0zLjQxMyw4LjUzMy04LjUzM3YtNC4yNjdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJYy01LjEyLDAtOC41MzMsMy40MTMtOC41MzMsOC41MzNWMjM3LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM3NC40NjcsMTczLjkzM2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMzY1LjkzMywxNzAuNTIsMzY5LjM0NywxNzMuOTMzLDM3NC40NjcsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2NS45MzMsMjA0LjY1M2MwLDUuMTIsMy40MTMsOC41MzMsOC41MzMsOC41MzNTMzgzLDIwOC45MiwzODMsMjA0LjY1M3YtOS4zODdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJcy04LjUzMywzLjQxMy04LjUzMyw4LjUzM1YyMDQuNjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjkzMywyMzcuOTMzYzAsNS4xMiwzLjQxMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjQxMyw4LjUzMy04LjUzM3YtNC4yNjdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJcy04LjUzMywzLjQxMy04LjUzMyw4LjUzM1YyMzcuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Bxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ5NiwzNDRoLThWMjgwYTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJWMTEyYTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJIODhhMzIuMDQyLDMyLjA0MiwwLDAsMC0zMiwzMlYyNDhhMzIuMDQyLDMyLjA0MiwwLDAsMC0zMiwzMnY2NEgxNmE4LDgsMCwwLDAtOCw4djMyYTgsOCwwLDAsMCw4LDhoOHYzMmE4LDgsMCwwLDAsOCw4SDU2YTcuOTksNy45OSwwLDAsMCw3Ljg0LTYuNDNMNzAuNTYsMzkySDQ0MS40NGw2LjcyLDMzLjU3QTcuOTksNy45OSwwLDAsMCw0NTYsNDMyaDI0YTgsOCwwLDAsMCw4LThWMzkyaDhhOCw4LDAsMCwwLDgtOFYzNTJBOCw4LDAsMCwwLDQ5NiwzNDRaTTcyLDExMkExNi4wMjEsMTYuMDIxLDAsMCwxLDg4LDk2SDQyNGExNi4wMjEsMTYuMDIxLDAsMCwxLDE2LDE2VjI0OEg0MjRWMjE2YTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJIMjk2YTMyLjA0MiwzMi4wNDIsMCwwLDAtMzIsMzJ2MzJIMjQ4VjIxNmEzMi4wNDIsMzIuMDQyLDAsMCwwLTMyLTMySDEyMGEzMi4wNDIsMzIuMDQyLDAsMCwwLTMyLDMydjMySDcyWk00MDgsMjE2djMySDI4MFYyMTZhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNi0xNmg5NkExNi4wMjEsMTYuMDIxLDAsMCwxLDQwOCwyMTZabS0xNzYsMHYzMkgxMDRWMjE2YTE2LjAyMSwxNi4wMjEsMCwwLDEsMTYtMTZoOTZBMTYuMDIxLDE2LjAyMSwwLDAsMSwyMzIsMjE2Wk00MCwyODBhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNi0xNkg0NTZhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNiwxNnY2NEg0MFptOS40NCwxMzZINDBWMzkySDU0LjI0Wk00NzIsNDE2aC05LjQ0bC00LjgtMjRINDcyWm0xNi00MEgyNFYzNjBINDg4WiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Rxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NS4zOTMgNDUuMzkzIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDMuNTE4LDEyLjcwOUwyNS4xNzgsMC43MjhjLTEuNTExLTAuOTc4LTMuNDU4LTAuOTY4LTQuOTYsMC4wMjFMMS44NTksMTIuNzE5Yy0xLjE0LDAuNzUxLTEuNDU1LDIuMjg0LTAuNzA1LDMuNDI0DQoJCQljMC43NTEsMS4xNCwyLjI4MywxLjQ1NiwzLjQyNCwwLjcwNEwyMi43MTUsNS4wMjFMNDAuODMsMTYuODU3YzAuNDE2LDAuMjY5LDAuODgxLDAuMzk2LDEuMzQxLDAuMzk2DQoJCQljMC44MTIsMCwxLjYwNC0wLjM5NywyLjA3Ny0xLjEyN0M0NC45OSwxNC45OCw0NC42NjIsMTMuNDUyLDQzLjUxOCwxMi43MDl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zOC44NzksMjcuNjE2Yy0wLjE1MS0wLjg2NS0wLjkwMy0xLjUwNS0xLjc4LTEuNTA1aC0xLjAwOGwtMC4zODMtMy45ODdjLTAuNDA5LTQuMjY0LTMuOTQ4LTcuNDktOC4yMzItNy40OUgxNy45Mg0KCQkJYy00LjI4NSwwLTcuODIzLDMuMjI3LTguMjMzLDcuNDlsLTAuMzgyLDMuOTg3SDguMjk2Yy0wLjg3OCwwLTEuNjI5LDAuNjQtMS43ODIsMS41MDVsLTEuNSw4LjUwNA0KCQkJYy0wLjE4NiwxLjA1NCwwLjExMiwyLjEzOSwwLjgsMi45NTdjMC42NjIsMC43ODgsMS42MzcsMS4yNTgsMi42NTcsMS4yOTN2MS40MTJjMCwxLjk5OSwxLjYwMiwzLjYxLDMuNjAzLDMuNjFoMS4xMzgNCgkJCWMxLjk5OSwwLDMuNjI1LTEuNjExLDMuNjI1LTMuNjF2LTEuMzg5aDExLjczMnYxLjM4NmMwLDIsMS42MTMsMy42MTMsMy42MTIsMy42MTNoMS4xMzljMS45OTksMCwzLjYxNC0xLjYxMywzLjYxNC0zLjYxM1Y0MC4zNw0KCQkJYzEuMDItMC4wMzUsMS45ODktMC41MDEsMi42NDktMS4yODhjMC42ODgtMC44MiwwLjk4Mi0xLjg5OSwwLjc5OC0yLjk1NUwzOC44NzksMjcuNjE2eiBNMTEuNjQyLDM3LjExMw0KCQkJYy0xLjY4NywwLTMuMDU1LTEuMzY3LTMuMDU1LTMuMDU2YzAtMS42ODksMS4zNjgtMy4wNTcsMy4wNTUtMy4wNTdjMS42ODgsMCwzLjA1NywxLjM2NywzLjA1NywzLjA1Nw0KCQkJQzE0LjY5OSwzNS43NDYsMTMuMzMsMzcuMTEzLDExLjY0MiwzNy4xMTN6IE0xMi40MDQsMjYuMTExbDAuMzUzLTMuNjc4YzAuMjU3LTIuNjc0LDIuNDc2LTQuNjg4LDUuMTYzLTQuNjg4aDAuNTUxdjEuMTU2DQoJCQljMCwxLjAwMywwLjc5NywxLjgwMiwxLjc5OSwxLjgwMmg0Ljg1NmMxLjAwMiwwLDEuODEzLTAuNzk5LDEuODEzLTEuODAydi0xLjE1NWgwLjUzN2MyLjY4NywwLDQuOTA2LDIuMDE0LDUuMTYyLDQuNjg4DQoJCQlsMC4zNTQsMy42NzhMMTIuNDA0LDI2LjExMUwxMi40MDQsMjYuMTExeiBNMzMuNzUsMzcuMTEzYy0xLjY4NywwLTMuMDU1LTEuMzY3LTMuMDU1LTMuMDU2YzAtMS42ODksMS4zNjgtMy4wNTcsMy4wNTUtMy4wNTcNCgkJCWMxLjY4OCwwLDMuMDU3LDEuMzY3LDMuMDU3LDMuMDU3QzM2LjgwNywzNS43NDYsMzUuNDM4LDM3LjExMywzMy43NSwzNy4xMTN6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Fxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00OTQuNTk0LDM5NC4yMzdoLTE5LjQ2MWMxMi45NTQtMTkuNTQzLDIwLjUxMi00Mi45NTgsMjAuNTEyLTY4LjEwOWMwLTY4LjE1Ny01NS40NDktMTIzLjYwNi0xMjMuNjA2LTEyMy42MDYNCgkJCWMtNy4xNzEsMC0xNC4yLDAuNjIyLTIxLjA0LDEuNzk5YzE3Ljg1My0yMS40MzUsMjguNjA4LTQ4Ljk3OSwyOC42MDgtNzguOTlDMzc5LjYwNiw1Ny4xNzQsMzI0LjE1NywxLjcyNCwyNTYsMS43MjQNCgkJCWMtNjguMTU3LDAtMTIzLjYwNiw1NS40NDktMTIzLjYwNiwxMjMuNjA2YzAsMzAuMDEyLDEwLjc1NSw1Ny41NTUsMjguNjA4LDc4Ljk5Yy02Ljg0LTEuMTc4LTEzLjg2OS0xLjc5OS0yMS4wNC0xLjc5OQ0KCQkJYy02OC4xNTcsMC0xMjMuNjA2LDU1LjQ0OS0xMjMuNjA2LDEyMy42MDZjMCwyNS4xNTEsNy41NTgsNDguNTY3LDIwLjUxMiw2OC4xMDlIMTcuNDA2TDAsNTEwLjI3Nmg5My4yOTRsMTUuMTM1LTIwLjE4MWg2My4wNjQNCgkJCWwxNS4xMzUsMjAuMTgxaDEzOC43NDJsMTUuMTM1LTIwLjE4MWg2My4wNjRsMTUuMTM1LDIwLjE4MUg1MTJMNDk0LjU5NCwzOTQuMjM3eiBNNDY5LjUxOSwzNzMuNjdsLTEzLjE0Mi03LjU4OA0KCQkJYzQuNzM2LTkuOTU4LDcuNzYtMjAuODgxLDguNjg4LTMyLjM4N2gxNS4xNzVDNDc5LjI1NCwzNDcuOTQ4LDQ3NS41MDMsMzYxLjQ1LDQ2OS41MTksMzczLjY3eiBNNDA5Ljg3NywzOTQuNTMzdi0xMzYuODENCgkJCWMyNC4wNDUsMTMuMzU0LDQwLjM2MSwzOS4wMDUsNDAuMzYxLDY4LjQwNVM0MzMuOTIyLDM4MS4xNzgsNDA5Ljg3NywzOTQuNTMzeiBNNDE5LjU4MSw0MjMuNjA4DQoJCQljLTEyLjIyLDUuOTg0LTI1LjcyMiw5LjczNC0zOS45NzUsMTAuNzIydi0xNS4xNzVjMTEuNTA2LTAuOTI3LDIyLjQyOS0zLjk1MSwzMi4zODctOC42ODhMNDE5LjU4MSw0MjMuNjA4eiBNNDQ4Ljc4NywzNzkuMTc2DQoJCQlsMTMuMTQ4LDcuNTkxYy03Ljc5NCwxMS41MTctMTcuNzQsMjEuNDYzLTI5LjI1NiwyOS4yNTZsLTcuNTkxLTEzLjE0OEM0MzQuMzM2LDM5Ni40NjQsNDQyLjM3NSwzODguNDI1LDQ0OC43ODcsMzc5LjE3NnoNCgkJCSBNNDgwLjI0MSwzMTguNTZoLTE1LjE3NWMtMC45MjctMTEuNTA2LTMuOTUxLTIyLjQyOS04LjY4OC0zMi4zODdsMTMuMTQyLTcuNTg4QzQ3NS41MDMsMjkwLjgwNSw0NzkuMjU0LDMwNC4zMDcsNDgwLjI0MSwzMTguNTZ6DQoJCQkgTTQzMi42NzgsMjM2LjIzMWMxMS41MTYsNy43OTQsMjEuNDYzLDE3Ljc0LDI5LjI1NiwyOS4yNTZsLTEzLjE0OCw3LjU5MWMtNi40MTItOS4yNDktMTQuNDUtMTcuMjg3LTIzLjY5OS0yMy42OTkNCgkJCUw0MzIuNjc4LDIzNi4yMzF6IE00MTEuOTk0LDI0MS43ODljLTkuOTU4LTQuNzM2LTIwLjg4MS03Ljc2LTMyLjM4Ny04LjY4OHYtMTUuMTc2YzE0LjI1MiwwLjk4NywyNy43NTQsNC43MzgsMzkuOTc0LDEwLjcyMg0KCQkJTDQxMS45OTQsMjQxLjc4OXogTTM5NC43NDIsMjUxLjN2MTQ5LjY1NWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyYy03Ljg5NCwwLTE1LjUxNC0xLjE4Ny0yMi43MDMtMy4zNzJWMjUxLjMNCgkJCWM3LjE4OS0yLjE4NiwxNC44MS0zLjM3MiwyMi43MDMtMy4zNzJDMzc5LjkzMiwyNDcuOTI4LDM4Ny41NTIsMjQ5LjExNCwzOTQuNzQyLDI1MS4zeiBNMTc3LjgsMzk0LjUzM3YtMTM2LjgxDQoJCQljMjQuMDQ1LDEzLjM1NCw0MC4zNjEsMzkuMDA1LDQwLjM2MSw2OC40MDVTMjAxLjg0NSwzODEuMTc4LDE3Ny44LDM5NC41MzN6IE0xODcuNTA0LDQyMy42MDgNCgkJCWMtMTIuMjIsNS45ODQtMjUuNzIyLDkuNzM0LTM5Ljk3NSwxMC43MjJ2LTE1LjE3NWMxMS41MDYtMC45MjcsMjIuNDI5LTMuOTUxLDMyLjM4Ny04LjY4OEwxODcuNTA0LDQyMy42MDh6IE0yODIuMTQyLDI2NS40ODgNCgkJCWM3Ljc5NC0xMS41MTcsMTcuNzQtMjEuNDYzLDI5LjI1Ni0yOS4yNTZsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OUwyODIuMTQyLDI2NS40ODh6IE0yODcuNywyODYuMTczDQoJCQljLTQuNzM2LDkuOTU4LTcuNzYsMjAuODgxLTguNjg4LDMyLjM4N2gtMTUuMTc1YzAuOTg3LTE0LjI1Myw0LjczNy0yNy43NTQsMTAuNzIyLTM5Ljk3NUwyODcuNywyODYuMTczeiBNMzE2LjY0LDIxNS4yMjcNCgkJCWwtNy41OTEtMTMuMTQ4YzkuMjQ5LTYuNDEyLDE3LjI4Ny0xNC40NSwyMy42OTktMjMuNjk5bDEzLjE0OCw3LjU5MUMzMzguMTAzLDE5Ny40ODcsMzI4LjE1NywyMDcuNDMzLDMxNi42NCwyMTUuMjI3eg0KCQkJIE0yOTMuODM5LDE5My43MzZWNTYuOTI1QzMxNy44ODQsNzAuMjgsMzM0LjIsOTUuOTMsMzM0LjIsMTI1LjMzMVMzMTcuODg0LDE4MC4zODEsMjkzLjgzOSwxOTMuNzM2eiBNMjk1Ljk1NSwyMDkuNjY5DQoJCQlsNy41ODcsMTMuMTQyYy0xMi4yMiw1Ljk4NC0yNS43MjIsOS43MzQtMzkuOTc1LDEwLjcyMnYtMTUuMTc1QzI3NS4wNzQsMjE3LjQzLDI4NS45OTYsMjE0LjQwNywyOTUuOTU1LDIwOS42Njl6IE0yNzcuMDQsMjQ3LjEzOA0KCQkJYy04Ljk1MSwxMC43NDctMTYuMTE5LDIzLjAyOC0yMS4wNCwzNi4zODljLTQuOTIxLTEzLjM2MS0xMi4wODktMjUuNjQxLTIxLjA0LTM2LjM4OWM2Ljg0LDEuMTc4LDEzLjg2OSwxLjc5OSwyMS4wNCwxLjc5OQ0KCQkJQzI2My4xNzEsMjQ4LjkzNywyNzAuMiwyNDguMzE1LDI3Ny4wNCwyNDcuMTM4eiBNMjQ4LjE2NCwzMTguNTZoLTE1LjE3NWMtMC45MjctMTEuNTA2LTMuOTUxLTIyLjQyOS04LjY4OC0zMi4zODdsMTMuMTQyLTcuNTg4DQoJCQlDMjQzLjQyNiwyOTAuODA1LDI0Ny4xNzcsMzA0LjMwNywyNDguMTY0LDMxOC41NnogTTI0OC40MzEsMjMzLjUzM2MtMTQuMjUyLTAuOTg3LTI3Ljc1NC00LjczOC0zOS45NzQtMTAuNzIybDcuNTg3LTEzLjE0Mg0KCQkJYzkuOTU4LDQuNzM2LDIwLjg4MSw3Ljc2LDMyLjM4Nyw4LjY4OFYyMzMuNTMzeiBNMjE4LjE2MSwxOTMuNzM2Yy0yNC4wNDUtMTMuMzU0LTQwLjM2MS0zOS4wMDUtNDAuMzYxLTY4LjQwNQ0KCQkJYzAtMjkuNCwxNi4zMTYtNTUuMDUxLDQwLjM2MS02OC40MDVWMTkzLjczNnogTTE3OS4yNTEsMTc4LjM3OWM2LjQxMiw5LjI0OSwxNC40NSwxNy4yODcsMjMuNjk5LDIzLjY5OWwtNy41OTEsMTMuMTQ4DQoJCQljLTExLjUxNi03Ljc5NC0yMS40NjMtMTcuNzQtMjkuMjU2LTI5LjI1NkwxNzkuMjUxLDE3OC4zNzl6IE0yMDAuNjAxLDIzNi4yMzFjMTEuNTE2LDcuNzk0LDIxLjQ2MywxNy43NCwyOS4yNTYsMjkuMjU2DQoJCQlsLTEzLjE0OCw3LjU5MWMtNi40MTItOS4yNDktMTQuNDUtMTcuMjg3LTIzLjY5OS0yMy42OTlMMjAwLjYwMSwyMzYuMjMxeiBNMjE2LjcxLDM3OS4xNzZsMTMuMTQ4LDcuNTkxDQoJCQljLTcuNzk0LDExLjUxNy0xNy43NCwyMS40NjMtMjkuMjU2LDI5LjI1NmwtNy41OTEtMTMuMTQ4QzIwMi4yNTksMzk2LjQ2NCwyMTAuMjk4LDM4OC40MjUsMjE2LjcxLDM3OS4xNzZ6IE0yMjQuMywzNjYuMDgyDQoJCQljNC43MzYtOS45NTgsNy43Ni0yMC44ODEsOC42ODgtMzIuMzg3aDE1LjE3NWMtMC45ODcsMTQuMjUzLTQuNzM3LDI3Ljc1NC0xMC43MjIsMzkuOTc1TDIyNC4zLDM2Ni4wODJ6IE0yNTYsMzY4LjcyOQ0KCQkJYzMuMzMyLDkuMDQ1LDcuNjk3LDE3LjU5MywxMi45NDQsMjUuNTA4aC0yNS44ODhDMjQ4LjMwMywzODYuMzIxLDI1Mi42NjgsMzc3Ljc3NCwyNTYsMzY4LjcyOXogTTI2My44MzYsMzMzLjY5NWgxNS4xNzUNCgkJCWMwLjkyNywxMS41MDYsMy45NTEsMjIuNDI5LDguNjg4LDMyLjM4N2wtMTMuMTQyLDcuNTg4QzI2OC41NzQsMzYxLjQ1LDI2NC44MjMsMzQ3Ljk0OCwyNjMuODM2LDMzMy42OTV6IE0yOTUuMjksMzc5LjE3Ng0KCQkJYzYuNDEyLDkuMjQ5LDE0LjQ1LDE3LjI4NywyMy42OTksMjMuNjk5bC03LjU5MSwxMy4xNDhjLTExLjUxNi03Ljc5NC0yMS40NjMtMTcuNzQtMjkuMjU2LTI5LjI1NkwyOTUuMjksMzc5LjE3NnoNCgkJCSBNMjkzLjgzOSwzMjYuMTI4YzAtMjkuNCwxNi4zMTYtNTUuMDUxLDQwLjM2MS02OC40MDV2MTM2LjgxQzMxMC4xNTUsMzgxLjE3OCwyOTMuODM5LDM1NS41MjgsMjkzLjgzOSwzMjYuMTI4eiBNMzMyLjA4NCw0MTAuNDY2DQoJCQljOS45NTgsNC43MzYsMjAuODgxLDcuNzYsMzIuMzg3LDguNjg4djE1LjE3NWMtMTQuMjUzLTAuOTg3LTI3Ljc1NC00LjczOC0zOS45NzUtMTAuNzIyTDMzMi4wODQsNDEwLjQ2NnogTTM2NC40NzEsMjE3LjkyNVYyMzMuMQ0KCQkJYy0xMS41MDYsMC45MjctMjIuNDI5LDMuOTUxLTMyLjM4Nyw4LjY4OGwtNy41ODctMTMuMTQyQzMzNi43MTYsMjIyLjY2MywzNTAuMjE4LDIxOC45MTIsMzY0LjQ3MSwyMTcuOTI1eiBNMzUzLjQ4LDE3Mi44NzMNCgkJCWwtMTMuMTQyLTcuNTg4YzQuNzM2LTkuOTU4LDcuNzYtMjAuODgxLDguNjg4LTMyLjM4N2gxNS4xNzVDMzYzLjIxNiwxNDcuMTUxLDM1OS40NjUsMTYwLjY1MywzNTMuNDgsMTcyLjg3M3ogTTM2NC4yMDIsMTE3Ljc2Mw0KCQkJaC0xNS4xNzVjLTAuOTI3LTExLjUwNi0zLjk1MS0yMi40MjktOC42ODgtMzIuMzg3bDEzLjE0Mi03LjU4OEMzNTkuNDY1LDkwLjAwOCwzNjMuMjE2LDEwMy41MSwzNjQuMjAyLDExNy43NjN6IE0zMTYuNjQsMzUuNDM0DQoJCQljMTEuNTE2LDcuNzk0LDIxLjQ2MywxNy43NCwyOS4yNTYsMjkuMjU2bC0xMy4xNDgsNy41OTFjLTYuNDEyLTkuMjQ5LTE0LjQ1LTE3LjI4Ny0yMy42OTktMjMuNjk5TDMxNi42NCwzNS40MzR6IE0yOTUuOTU2LDQwLjk5Mg0KCQkJYy05Ljk1OC00LjczNi0yMC44ODEtNy43Ni0zMi4zODctOC42ODhWMTcuMTI4YzE0LjI1MiwwLjk4NywyNy43NTQsNC43MzgsMzkuOTc0LDEwLjcyMkwyOTUuOTU2LDQwLjk5MnogTTI3OC43MDMsNTAuNTAzdjE0OS42NTUNCgkJCWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyYy03Ljg5NCwwLTE1LjUxNC0xLjE4Ny0yMi43MDMtMy4zNzJWNTAuNTAzYzcuMTg5LTIuMTg2LDE0LjgxLTMuMzcyLDIyLjcwMy0zLjM3Mg0KCQkJQzI2My44OTQsNDcuMTMxLDI3MS41MTQsNDguMzE3LDI3OC43MDMsNTAuNTAzeiBNMjQ4LjQzMiwxNy4xMjh2MTUuMTc1Yy0xMS41MDYsMC45MjctMjIuNDI5LDMuOTUxLTMyLjM4Nyw4LjY4OGwtNy41ODctMTMuMTQyDQoJCQlDMjIwLjY3OCwyMS44NjYsMjM0LjE4LDE4LjExNSwyNDguNDMyLDE3LjEyOHogTTE5NS4zNiwzNS40MzRsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OQ0KCQkJbC0xMy4xNDgtNy41OTFDMTczLjg5Nyw1My4xNzQsMTgzLjg0Myw0My4yMjgsMTk1LjM2LDM1LjQzNHogTTE1OC41Miw3Ny43ODhsMTMuMTQyLDcuNTg4Yy00LjczNiw5Ljk1OC03Ljc2LDIwLjg4MS04LjY4OCwzMi4zODcNCgkJCWgtMTUuMTc1QzE0OC43ODUsMTAzLjUxLDE1Mi41MzUsOTAuMDA4LDE1OC41Miw3Ny43ODh6IE0xNTguNTIsMTcyLjg3M2MtNS45ODQtMTIuMjItOS43MzUtMjUuNzIyLTEwLjcyMi0zOS45NzVoMTUuMTc1DQoJCQljMC45MjcsMTEuNTA2LDMuOTUxLDIyLjQyOSw4LjY4OCwzMi4zODdMMTU4LjUyLDE3Mi44NzN6IE0xODcuNTA0LDIyOC42NDdsLTcuNTg3LDEzLjE0MmMtOS45NTgtNC43MzYtMjAuODgxLTcuNzYtMzIuMzg3LTguNjg4DQoJCQl2LTE1LjE3NkMxNjEuNzgyLDIxOC45MTIsMTc1LjI4NCwyMjIuNjY0LDE4Ny41MDQsMjI4LjY0N3ogTTE2Mi42NjUsMjUxLjN2MTQ5LjY1NWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyDQoJCQljLTcuODk0LDAtMTUuNTE0LTEuMTg3LTIyLjcwMy0zLjM3MlYyNTEuM2M3LjE4OS0yLjE4NiwxNC44MS0zLjM3MiwyMi43MDMtMy4zNzJDMTQ3Ljg1NSwyNDcuOTI4LDE1NS40NzUsMjQ5LjExNCwxNjIuNjY1LDI1MS4zeg0KCQkJIE02MS43NjIsMzI2LjEyOGMwLTI5LjQsMTYuMzE2LTU1LjA1MSw0MC4zNjEtNjguNDA1djEzNi44MUM3OC4wNzgsMzgxLjE3OCw2MS43NjIsMzU1LjUyOCw2MS43NjIsMzI2LjEyOHogTTg2LjkxMyw0MDIuODc2DQoJCQlsLTcuNTkxLDEzLjE0OGMtMTEuNTE2LTcuNzk0LTIxLjQ2My0xNy43NC0yOS4yNTYtMjkuMjU2bDEzLjE0OC03LjU5MUM2OS42MjUsMzg4LjQyNSw3Ny42NjQsMzk2LjQ2NCw4Ni45MTMsNDAyLjg3NnoNCgkJCSBNMTAwLjAwNyw0MTAuNDY2YzkuOTU4LDQuNzM2LDIwLjg4MSw3Ljc2LDMyLjM4Nyw4LjY4OHYxNS4xNzVjLTE0LjI1My0wLjk4Ny0yNy43NTQtNC43MzgtMzkuOTc1LTEwLjcyMkwxMDAuMDA3LDQxMC40NjZ6DQoJCQkgTTEzMi4zOTQsMjE3LjkyNVYyMzMuMWMtMTEuNTA2LDAuOTI3LTIyLjQyOSwzLjk1MS0zMi4zODcsOC42ODhsLTcuNTg3LTEzLjE0MkMxMDQuNjM5LDIyMi42NjMsMTE4LjE0MSwyMTguOTEyLDEzMi4zOTQsMjE3LjkyNQ0KCQkJeiBNNzkuMzIyLDIzNi4yMzFsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OWwtMTMuMTQ4LTcuNTkxDQoJCQlDNTcuODU5LDI1My45NzEsNjcuODA1LDI0NC4wMjUsNzkuMzIyLDIzNi4yMzF6IE00Mi40ODEsMjc4LjU4NWwxMy4xNDIsNy41ODhjLTQuNzM2LDkuOTU4LTcuNzYsMjAuODgxLTguNjg4LDMyLjM4N0gzMS43NTkNCgkJCUMzMi43NDYsMzA0LjMwNywzNi40OTcsMjkwLjgwNSw0Mi40ODEsMjc4LjU4NXogTTMxLjc1OSwzMzMuNjk1aDE1LjE3NWMwLjkyNywxMS41MDYsMy45NTEsMjIuNDI5LDguNjg4LDMyLjM4N0w0Mi40OCwzNzMuNjcNCgkJCUMzNi40OTcsMzYxLjQ1LDMyLjc0NiwzNDcuOTQ4LDMxLjc1OSwzMzMuNjk1eiBNNDI2LjI3NCw0OTUuMTRsLTE1LjEzNS0yMC4xODFoLTc4LjJsLTE1LjEzNSwyMC4xODFIMTk0LjE5N2wtMTUuMTM1LTIwLjE4MQ0KCQkJaC03OC4yTDg1LjcyNiw0OTUuMTRIMTcuNTc1bDEyLjg2NS04NS43NjhoMTguMjNjMjIuNjIsMjQuNzg2LDU1LjE3MSw0MC4zNjEsOTEuMjkxLDQwLjM2MXM2OC42NzEtMTUuNTc1LDkxLjI5MS00MC4zNjFoNDkuNDk0DQoJCQljMjIuNjIsMjQuNzg2LDU1LjE3MSw0MC4zNjEsOTEuMjkxLDQwLjM2MXM2OC42NzEtMTUuNTc1LDkxLjI5MS00MC4zNjFoMTguMjNsMTIuODY1LDg1Ljc2OEg0MjYuMjc0eiIvPg0KICAgICAgICA8cmVjdCB4PSIzMDUuOTQ4IiB5PSIxMTYuNzU1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIxOTAuOTE5IiB5PSIxMTYuNzU1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSIxMTEuMjA1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSI2NS43OTkiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjI0OC40MzMiIHk9IjE3MS43NDciIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQyMS45ODYiIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjMwNi45NTciIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjMxMi4wMDIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjI2Ni41OTYiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjM3Mi41NDQiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjE4OS45MSIgeT0iMzE3LjU1MiIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iNzQuODgiIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjMxMi4wMDIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjI2Ni41OTYiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjM3Mi41NDQiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQ2MS4zODciIHk9IjQ3MC44ODEiIHRyYW5zZm9ybT0ibWF0cml4KDAuOTg4OSAtMC4xNDgzIDAuMTQ4MyAwLjk4ODkgLTY1Ljc3MiA3NC44NDExKSINCiAgICAgICAgICAgICAgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iNDU2LjIxIiB5PSI0MzEuOTM1IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjk4ODkgLTAuMTQ4MyAwLjE0ODMgMC45ODg5IC02MC43MTk5IDczLjY5MDMpIg0KICAgICAgICAgICAgICB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjI0LjE0NSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSI0NjQuODciIHdpZHRoPSI0NS40MDYiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjIxOC4xNjIiIHk9IjQ2NC44NyIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMjYzLjU2OSIgeT0iNDI0LjUwOSIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMjMzLjI5OCIgeT0iNDI0LjUwOSIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzYuMTI3IiB5PSI0MzYuNDYxIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjE0ODMgLTAuOTg4OSAwLjk4ODkgMC4xNDgzIC0zOTguMDY3NSA0MjUuODQyNykiDQogICAgICAgICAgICAgIHdpZHRoPSIyNC4xNDUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1LjQ2OCIgeT0iNDcwLjg2IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjE0ODMgLTAuOTg4OSAwLjk4ODkgMC4xNDgzIC00MzYuNDgzOCA0NTAuMDMyNSkiDQogICAgICAgICAgICAgIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Gxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTYxLDIxSDNhMSwxLDAsMCwwLDAsMkg2MWExLDEsMCwwLDAsMC0yWiIvPg0KICAgICAgICA8cGF0aCBkPSJNNjEsMkg0OWExLDEsMCwwLDAtMSwxVjE3SDQ2di0uNzY0YTEwLjUzMywxMC41MzMsMCwwLDAtMS4xLTQuNjgzQTguNTIyLDguNTIyLDAsMCwxLDQ0LDcuNzY0VjNhMSwxLDAsMCwwLTEtMUgzOWExLDEsMCwwLDAtMSwxVjcuNzY0YTguNTIyLDguNTIyLDAsMCwxLS45LDMuNzg5Yy0uMDM5LjA4LS4wNjcuMTY1LS4xLjI0Ni0uMDM4LS4wODEtLjA2Ni0uMTY2LS4xLS4yNDZBOC41MjIsOC41MjIsMCwwLDEsMzYsNy43NjRWM2ExLDEsMCwwLDAtMS0xSDMxYTEsMSwwLDAsMC0xLDFWNy43NjRhOC41MjIsOC41MjIsMCwwLDEtLjg5NSwzLjc4OUExMC41MzMsMTAuNTMzLDAsMCwwLDI4LDE2LjIzNlYxN0gxOFYxMC40MTRhMi4zOTQsMi4zOTQsMCwwLDEsLjcwNy0xLjcwNkE0LjM4NSw0LjM4NSwwLDAsMCwyMCw1LjU4NlY0aDJWNS41ODZhNC4zODUsNC4zODUsMCwwLDAsMS4yOTMsMy4xMjJBMi4zOTQsMi4zOTQsMCwwLDEsMjQsMTAuNDE0VjE0YTEsMSwwLDAsMCwyLDBWMTAuNDE0YTQuMzg1LDQuMzg1LDAsMCwwLTEuMjkzLTMuMTIyQTIuMzk0LDIuMzk0LDAsMCwxLDI0LDUuNTg2VjNhMSwxLDAsMCwwLTEtMUgxOWExLDEsMCwwLDAtMSwxVjUuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDZBNC41MTUsNC41MTUsMCwwLDAsMTcsNy42NDlhNC41MTUsNC41MTUsMCwwLDAtLjI5My0uMzU3QTIuMzk0LDIuMzk0LDAsMCwxLDE2LDUuNTg2VjNhMSwxLDAsMCwwLTEtMUgxMWExLDEsMCwwLDAtMSwxVjUuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDZBNC4zODUsNC4zODUsMCwwLDAsOCwxMC40MTRWMTdIM2ExLDEsMCwwLDAsMCwySDYxYTEsMSwwLDAsMCwwLTJINTBWMTRINjBhMSwxLDAsMCwwLDIsMFYzQTEsMSwwLDAsMCw2MSwyWk00Miw0VjdINDBWNFpNMTAuNzA3LDguNzA4QTQuMzg1LDQuMzg1LDAsMCwwLDEyLDUuNTg2VjRoMlY1LjU4NmE0LjM4NSw0LjM4NSwwLDAsMCwxLjI5MywzLjEyMkEyLjM5NCwyLjM5NCwwLDAsMSwxNiwxMC40MTRWMTJIMTBWMTAuNDE0QTIuMzk0LDIuMzk0LDAsMCwxLDEwLjcwNyw4LjcwOFpNMTAsMTRoNnYzSDEwWm0yMCwyLjIzNmE4LjUyMiw4LjUyMiwwLDAsMSwuODk1LTMuNzg5QTEwLjUzMywxMC41MzMsMCwwLDAsMzIsNy43NjRWNGgyVjcuNzY0YTEwLjUzMywxMC41MzMsMCwwLDAsMS4xLDQuNjgzLDguNTIyLDguNTIyLDAsMCwxLC45LDMuNzg5VjE3SDMwWk0zOCwxN3YtLjc2NGE4LjUyMiw4LjUyMiwwLDAsMSwuOS0zLjc4OUExMC41NDEsMTAuNTQxLDAsMCwwLDM5LjkyNCw5aDIuMTUyYTEwLjU0MSwxMC41NDEsMCwwLDAsMS4wMjksMy40NDcsOC41MjIsOC41MjIsMCwwLDEsLjksMy43ODlWMTdaTTYwLDRWNkg1MFY0Wk01MCwxMlY4SDYwdjRaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik02MSw0NEgzYTEsMSwwLDAsMCwwLDJINjBWNjBINDZWNDlhMSwxLDAsMCwwLTIsMFY2MEg0MlY1M2ExLDEsMCwwLDAtMS0xSDI2YTEsMSwwLDAsMC0xLDF2N0gyMlY0OWExLDEsMCwwLDAtMS0xSDVhMSwxLDAsMCwwLTEsMVY2MEgzYTEsMSwwLDAsMCwwLDJINjFhMSwxLDAsMCwwLDEtMVY0NUExLDEsMCwwLDAsNjEsNDRaTTQwLDU2SDM3VjU0aDNabS01LDBIMzJWNTRoM1ptLTUtMnYySDI3VjU0Wk0yMCw1Mi4zODJhMy45NDcsMy45NDcsMCwwLDAtNiwwVjUwaDZaTTE5LDU1YTIsMiwwLDEsMS0yLTJBMiwyLDAsMCwxLDE5LDU1Wk02LDU0aDZ2Mkg2Wm02LTR2Mkg2VjUwWk02LDU4aDZ2Mkg2Wm04LDJWNTcuNjE4YTMuOTQ3LDMuOTQ3LDAsMCwwLDYsMFY2MFptMTMtMmgzdjJIMjdabTUsMGgzdjJIMzJabTUsMlY1OGgzdjJaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik01Nyw1NmExLDEsMCwwLDAsMS0xVjUxYTEsMSwwLDAsMC0xLTFINDlhMSwxLDAsMCwwLTEsMXY0YTEsMSwwLDAsMCwxLDFabS03LTRoNnYySDUwWiIvPg0KICAgICAgICA8cGF0aCBkPSJNNjAsMjkuMTg0VjI2YTEsMSwwLDAsMC0xLTFINTVhMSwxLDAsMCwwLTEsMXYzLjE4NEEzLDMsMCwwLDAsNTIsMzJ2N2EyLjk2NiwyLjk2NiwwLDAsMCwuMTg0LDFINDlWMzRhMSwxLDAsMCwwLDAtMkg0MWExLDEsMCwwLDAsMCwydjZIMzhWMzFhMSwxLDAsMCwwLTEtMUgyNWExLDEsMCwwLDAtMSwxdjlIMjJWMzlhMSwxLDAsMCwwLTIsMHYxSDE0VjMzLjQxNGEyLjM5NCwyLjM5NCwwLDAsMSwuNzA3LTEuNzA2QTQuMzg1LDQuMzg1LDAsMCwwLDE2LDI4LjU4NlYyN2gydjEuNTg2YTQuMzg1LDQuMzg1LDAsMCwwLDEuMjkzLDMuMTIyQTIuMzk0LDIuMzk0LDAsMCwxLDIwLDMzLjQxNFYzNWExLDEsMCwwLDAsMiwwVjMzLjQxNGE0LjM4NSw0LjM4NSwwLDAsMC0xLjI5My0zLjEyMkEyLjM5NCwyLjM5NCwwLDAsMSwyMCwyOC41ODZWMjZhMSwxLDAsMCwwLTEtMUgxNWExLDEsMCwwLDAtMSwxdjIuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDYsNC41MTUsNC41MTUsMCwwLDAtLjI5My4zNTcsNC41MTUsNC41MTUsMCwwLDAtLjI5My0uMzU3QTIuMzk0LDIuMzk0LDAsMCwxLDEyLDI4LjU4NlYyNmExLDEsMCwwLDAtMS0xSDdhMSwxLDAsMCwwLTEsMXYyLjU4NmEyLjM5NCwyLjM5NCwwLDAsMS0uNzA3LDEuNzA2QTQuMzg1LDQuMzg1LDAsMCwwLDQsMzMuNDE0VjQwSDNhMSwxLDAsMCwwLDAsMkg2MWExLDEsMCwwLDAsLjctMS43MTNBMi45NjQsMi45NjQsMCwwLDAsNjIsMzlWMzJBMywzLDAsMCwwLDYwLDI5LjE4NFpNNi43MDcsMzEuNzA4QTQuMzg1LDQuMzg1LDAsMCwwLDgsMjguNTg2VjI3aDJ2MS41ODZhNC4zODUsNC4zODUsMCwwLDAsMS4yOTMsMy4xMjJBMi4zOTQsMi4zOTQsMCwwLDEsMTIsMzMuNDE0VjM1SDZWMzMuNDE0QTIuMzk0LDIuMzk0LDAsMCwxLDYuNzA3LDMxLjcwOFpNNiwzN2g2djNINlpNNTYsMjdoMnYySDU2Wm0tMSw0aDRhMSwxLDAsMCwxLDEsMXYzSDU0VjMyQTEsMSwwLDAsMSw1NSwzMVpNMzYsMzZIMzJWMzJoNFptLTYtNHYySDI2VjMyWm0tNCw0aDR2NEgyNlptNiw0VjM4aDR2MlptMTEsMFYzNGg0djZabTEyLDBhMSwxLDAsMCwxLTEtMVYzN2g2djJhMSwxLDAsMCwxLTEsMVoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Hxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0xMDggNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MDQgNDguMDE1NjI1aC00OTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOS04LTh2LTMyLjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQ5NmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4djMyLjAxNTYyNWMwIDQuNDI1NzgxLTMuNTc0MjE5IDgtOCA4em0tNDg4LTE2aDQ4MHYtMTYuMDE1NjI1aC00ODB6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTI0Ni43MTg3NWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0Ni43MTg3NWMwIDQuNDI1NzgyLTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NiAyOTYuMTYwMTU2Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04di0yNDYuNzE4NzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNDYuNzE4NzVjMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyOTYuMTYwMTU2aC0yNGMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDI0YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00OTYgMjk2LjE2MDE1NmgtMjRjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgyNGM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MC4xMTMyODFoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE4NC4xMjg5MDZoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNzEuOTg0Mzc1IDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0yMi4wNTg1OTQgMTcuOTM3NS00MCAzOS45OTIxODctNDAgNC40MjE4NzYgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI0IDgtOCA4LTEzLjIyMjY1NiAwLTIzLjk5MjE4NyAxMC43NjU2MjUtMjMuOTkyMTg3IDI0IDAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUyIDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yMzQzNzUtMTAuNzY5NTMxLTI0LTIzLjk5MjE4OC0yNC00LjQyMTg3NCAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzgxMjYtOCA4LTggMjIuMDU0Njg4IDAgMzkuOTkyMTg4IDE3Ljk0MTQwNiAzOS45OTIxODggNDAgMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im03OS45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0My45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgMTA0LjE0NDUzMWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtMjQuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQuMDE1NjI1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDgwLjEyODkwNmgtMzJjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTk2IDk2LjEyODkwNmgtMTYuMDE1NjI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDE1NjI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDMuOTY4NzUgOTYuMTI4OTA2aC0xNS45Njg3NWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDE1Ljk2ODc1YzQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjAuMDA3ODEyIDEyOC4xMjg5MDZoLTE2LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDMxMjVjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE3NS45ODQzNzUgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTIyLjA1ODU5NCAxNy45Mzc1LTQwIDM5Ljk5MjE4Ny00MCA0LjQyMTg3NiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzgxMjQgOC04IDgtMTMuMjIyNjU2IDAtMjMuOTkyMTg3IDEwLjc2NTYyNS0yMy45OTIxODcgMjQgMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTEzLjIzNDM3NS0xMC43Njk1MzEtMjQtMjMuOTkyMTg4LTI0LTQuNDIxODc0IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNi04IDgtOCAyMi4wNTQ2ODggMCAzOS45OTIxODggMTcuOTQxNDA2IDM5Ljk5MjE4OCA0MCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4My45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjAwIDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiA4MC4xMjg5MDZoLTMyYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMzJjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiAxMDQuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di0yNC4wMTU2MjVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNC4wMTU2MjVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDAgOTYuMTI4OTA2aC0xNi4wMTU2MjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMTU2MjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSA5Ni4xMjg5MDZoLTE1Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTUuOTY4NzVjNC40MjE4NzUgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNC4wMDc4MTIgMTI4LjEyODkwNmgtMTYuMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMzEyNWM0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTggOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2LjE2Nzk2OSAyODAuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtMTMuMjQyMTg3IDEwLjc3NzM0My0yNC4wMTU2MjUgMjQuMDE1NjI1LTI0LjAxNTYyNSA0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDgtNC40MjE4NzUgMC04LjAxNTYyNSAzLjU4OTg0NC04LjAxNTYyNSA4LjAxNTYyNSAwIDQuNDIxODc1LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjgwLjE0NDUzMWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04LTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCAxMy4yMzQzNzUgMCAyNCAxMC43NjU2MjUgMjQgMjQgMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzYuMTkxNDA2IDI5Ni4xNjAxNTZoLTgwLjAyMzQzN2MtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDgwLjAzMTI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU4MjAzMSA4LTguMDA3ODEzIDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjgzMjAzMSAyNjQuMTI4OTA2aC00OS4yOTY4NzVjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOGg0OS4yOTY4NzVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3Mi4xNjc5NjkgMjY0LjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtNDcuOTg0Mzc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2NDcuOTg0Mzc1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjE5OTIxOSAyNjQuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04di00OGMwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDh2NDhjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYuMTY3OTY5IDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTE2LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjk2LjE2MDE1NmMtNC40MjE4NzUgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOHYxNi4wMTU2MjVjMCA0LjQyNTc4Mi0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAuMTk5MjE5IDIxNi4xNDQ1MzFoLTQ4LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNDguMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyOC4xOTE0MDYgMjQwLjE0NDUzMWgtNjQuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNjQuMDIzNDM3YzQuNDI1NzgyIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjAuMTY3OTY5IDI4MC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yNDIxODcgMTAuNzc3MzQzLTI0LjAxNTYyNSAyNC4wMTU2MjUtMjQuMDE1NjI1IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOC00LjQyMTg3NSAwLTguMDE1NjI1IDMuNTg5ODQ0LTguMDE1NjI1IDguMDE1NjI1IDAgNC40MjE4NzUtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyODAuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04IDAtNC40MTc5NjktMy41ODIwMzEtOC04LTgtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDEzLjIzNDM3NSAwIDI0IDEwLjc2NTYyNSAyNCAyNCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0MC4xOTE0MDYgMjk2LjE2MDE1NmgtODAuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoODAuMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOC4wMDc4MTMgOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuODMyMDMxIDI2NC4xMjg5MDZoLTQ5LjI5Njg3NWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04aDQ5LjI5Njg3NWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjE2Nzk2OSAyNjQuMTI4OTA2Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Ny45ODQzNzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHY0Ny45ODQzNzVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuMTk5MjE5IDI2NC4xNDQ1MzFjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTh2LTQ4YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOHY0OGMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC4xNjc5NjkgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MTYuMDE1NjI1YzAgNC40MjU3ODItMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyOTYuMTYwMTU2Yy00LjQyMTg3NSAwLTgtMy41NzQyMTgtOC04di0xNi4wMTU2MjVjMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCA0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQyNC4xOTkyMTkgMjE2LjE0NDUzMWgtNDguMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg0OC4wMzEyNWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyLjE5MTQwNiAyNDAuMTQ0NTMxaC02NC4wMjM0MzdjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg2NC4wMjM0MzdjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Vxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Zxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4yNzMgNTEyLjI3MyIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNTA3Ljg5MSAyMzguMzk5Yy02LjcyMy0zNS44ODEtMjEuODUzLTY2LjkwNS00My43NTUtODkuNzE4LTkuODQ1LTEwLjI1My0yMS40NTYtMTkuNzUtMzQuNTE0LTI4LjIyNy0xNC45NC05LjY5OS0zMi4xOTItMTguNDM4LTU0LjI5My0yNy41MDMtOS42ODQtMy45NzItMTkuMzc1LTcuNjM3LTI4LjQwNi0xMS4wMDUtMTQuNjQyLTUuNDYtMzAuMDY0LTEwLjk1OC00NS44NDMtMTYuMzM3LTUuNDI3LTEuODUxLTEwLjkyMS0zLjYwNi0xNi4yMzQtNS4zMDMtOC41MDUtMi43MTctMTcuMy01LjUyNy0yNS43NzEtOC43MjEtNS4yMjQtMS45Ny03LjQyNi0zLjQ2NC04LjMyMS00LjI1OC4wNDYtLjA1Ni4wOTYtLjExNS4xNTEtLjE3NyA0LjA0OC00LjYxNSAyNy42MDMtMjMuMTA1IDQxLjUwMS0zMy42NzcgMi41NjItMS45NDkgMy41OTUtNS4zMTUgMi41NjYtOC4zNjVzLTMuODg5LTUuMTA0LTcuMTA3LTUuMTA0bC0xNTQuMDUyLS4wMDRjLTEuMzIxIDAtMi42MTkuMzQ5LTMuNzYyIDEuMDEyLTE3LjI4MiAxMC4wMjEtMzEuNjIzIDI1Ljc5LTM5LjM0NiA0My4yNjItOC45NDYgMjAuMjQtOS4wMTYgNDEuNDI1LS4yMDIgNjEuMjYzIDEyLjA3IDI3LjE2NyAzNy41NjcgNDIuMjM3IDYwLjA2MyA1NS41MzMgNS44NyAzLjQ2OSAxMS40MTQgNi43NDYgMTYuNjU1IDEwLjE2NyAzLjA5NSAyLjAyIDYuMjczIDQuMDAzIDkuMzQ3IDUuOTIyIDExLjU0NSA3LjIwOCAyMi40NSAxNC4wMTYgMzEuMTY3IDIzLjYwNCA4Ljk4MSA5Ljg3NyAxMS42OTMgMjIuNTAxIDcuODQyIDM2LjUwNy04Ljk0OCAzMi41NDQtMzUuNTQ0IDYxLjc4MS01OS4wMDkgODcuNTc2LTQuMzQyIDQuNzczLTguNDQyIDkuMjgxLTEyLjQwOSAxMy43NzYtMTEuMTA3IDEyLjU4Ny0yNy4zOTMgMzAuODktNDQuNjM0IDUwLjI2Ny01Ni44NjkgNjMuOTE0LTk0LjQxNSAxMDYuMjI5LTk4IDExMS44NDYtMS40NzQgMi4zMDktMS41NzEgNS4yMzgtLjI1NCA3LjY0IDEuMzE2IDIuNDAyIDMuODM4IDMuODk1IDYuNTc3IDMuODk1bDQ0Ni4zMTYuMDAzaC4wMDFjMy4yNTEgMCA2LjEzMi0yLjA5NCA3LjEzNS01LjE4NyAxMS42NTktMzUuOTYgMjIuMjEyLTcyLjIzMiAzNS4yODMtMTIxLjI4MyAxNS41OTEtNTguNTE1IDE5LjE4NS0xMDUuMzU0IDExLjMwOC0xNDcuNDA0em0tMjUuODAzIDE0My41NDNjLTEyLjM3IDQ2LjQyLTIyLjQ2NCA4MS4zMDUtMzMuMzg1IDExNS4zMzFsLTI2Ljk0LS4wMDJjMS4yODgtMy45NDggMi41NzMtNy45MDMgMy44NjEtMTEuODQyIDExLjU4LTM1LjQxIDIyLjg3Ny03MC45MjUgMzIuNTA0LTEwNi44ODggMS41MzUtNS43NCAzLjEyMi0xMS42NzQgNC42Ny0xNy42NDUgMS4wNC00LjAwOS0xLjM2OC04LjEwMy01LjM3OC05LjE0Mi00LjAwOS0xLjAzOC04LjEwMiAxLjM2OS05LjE0MiA1LjM3OC0xLjUzMyA1LjkxNC0zLjExMyAxMS44Mi00LjY0MSAxNy41MzEtOS40MzkgMzUuMjc1LTIwLjc5NyA3MS4wMjUtMzIuMjcgMTA2LjEwNC0xLjc5NyA1LjQ5My0zLjU5NSAxMC45OTItNS4zODkgMTYuNTA0aC0xNTcuOTc4Yy0uNDMyLTEuODU4LTEuNTY3LTMuNTUzLTMuMzA5LTQuNjQ5LTMuNTA0LTIuMjA2LTguMTM2LTEuMTUyLTEwLjM0MiAyLjM1My0uNDk1Ljc4Ni0uOTczIDEuNTQyLTEuNDQ5IDIuMjk2aC0xNTYuMjM0YzI0LjQ3My0zMC41NTEgOTEuODk3LTExMi4wNzMgMTI0LjIzOC0xNDguNzI0IDE3LjI0LTE5LjUzNyAzMS4zNjgtMzguNzI2IDQxLjk5NC01Ny4wMzMgMTcuNTk4LTMwLjMxOSAyNC41NjctNTYuNzY1IDIwLjcxNi03OC42MDEtOC4yNzMtNDYuOTA5LTQ1LjEyNy02NS43NjQtNzcuNjQzLTgyLjM5OC0zLjQzOS0xLjc1OS02Ljk5NS0zLjU3OS0xMC40MDctNS4zNzVsLS42MDktLjMyMWMtMy42NjMtMS45MzMtOC4yLS41My0xMC4xMzMgMy4xMzNzLS41MyA4LjIgMy4xMzMgMTAuMTMzbC42MTYuMzI1YzMuNDk2IDEuODQgNy4wOTEgMy42OCAxMC41NjggNS40NTggMzIuMjU3IDE2LjUwMiA2Mi43MjYgMzIuMDkgNjkuNzAzIDcxLjY1IDMuMjIgMTguMjU2LTMuMTQ1IDQxLjI5MS0xOC45MTcgNjguNDY2LTkuOTg5IDE3LjIxLTIzLjkxNCAzNi4xMDQtNDAuMjY4IDU0LjYzOC0zNS4yODYgMzkuOTg4LTExNi4wOTggMTM3LjgzOC0xMzIuMDU2IDE1OC42NDhoLTMzLjg1YzE3Ljg4Mi0yMC43NTMgNTYuNzQ0LTY0LjQyOCA4Ni45ODEtOTguNDExIDE3LjI1Mi0xOS4zODkgMzMuNTQ3LTM3LjcwMiA0NC42NzUtNTAuMzEzIDMuODkyLTQuNDEgNy45NTYtOC44NzggMTIuMjU4LTEzLjYwNyAyNC41OTctMjcuMDQgNTIuNDc2LTU3LjY4OCA2Mi4zNzUtOTMuNjkzIDUuMjA3LTE4LjkzOSAxLjIyNy0zNi45LTExLjIwNy01MC41NzUtMTYuNDIzLTE4LjA2Mi0zOS44NjMtMzAuMjM3LTYwLjYzNS00Mi41MTQtMjEuNTY1LTEyLjc0Ni00My44NjQtMjUuOTI2LTUzLjk4Ny00OC43MS0xNS4wMjMtMzMuODE1IDQuMzY2LTY3LjcxOCAzMS42NjctODQuNDQ3aDEzLjYzOWMtMjAuNTU3IDE1LjA3NC0zMi41NjggMzAuMzA1LTM2LjQ5NCA0Ni4xOTUtMy4xODMgMTIuODgyLS44MTMgMjUuNzU2IDcuMDQ1IDM4LjI2NSA0LjMyNCA2Ljg4MyA5LjkwNCAxMy4xMTIgMTcuMDU4IDE5LjA0MiAzLjE4OCAyLjY0MyA3LjkxNiAyLjIwMSAxMC41NjEtLjk4OCAyLjY0My0zLjE4OSAyLjIwMS03LjkxNy0uOTg4LTEwLjU2MS01LjkwOS00Ljg5OC0xMC40NjUtOS45NTktMTMuOTI5LTE1LjQ3Mi01LjY4OC05LjA1Ni03LjM4NC0xNy43ODYtNS4xODUtMjYuNjg4IDMuOTc5LTE2LjEwMyAyMC41NjgtMzIuODUxIDQ5LjMxNC00OS43OTNoNTAuNzE1Yy0xMy4zMDYgMTAuNDc5LTI4LjEwNSAyNC43NzUtMjQuMDk1IDQyLjM1MyAzLjk3OSAxNy40NDEgMjQuMTc3IDI3LjE3OSAzOS4xNzggMzMuNDcyIDE5LjU1OCA4LjIwNSAzOS44MzUgMTQuNzIgNTkuNDQ1IDIxLjAyMSAzMi4wODggMTAuMzEgNjUuMjY5IDIwLjk3MSA5NS4wMDMgMzkuMTM3IDMzLjkzNCAyMC43MzEgNTUuNTE4IDUxLjE1OCA2Mi40MiA4Ny45ODkgNC40NzggMjMuODk2IDMuNDI2IDUwLjYzNC0zLjMxMSA4NC4xNTJsLS4xMDcuNTM2Yy0uODE0IDQuMDYyIDEuODE4IDguMDE0IDUuODggOC44MjguNDk4LjEuOTkzLjE0NyAxLjQ4MS4xNDcgMy41MDEgMCA2LjYzMi0yLjQ2NCA3LjM0Ni02LjAyOGwuMTA2LS41MzJjNy4xMjgtMzUuNDYyIDguMTkxLTY0LjAxOCAzLjM0OS04OS44NjctNy43MDctNDEuMTIzLTMxLjY4Ni03NS4wMi02OS4zNDQtOTguMDI2LTMxLjI2Mi0xOS4wOTktNjUuMzA5LTMwLjAzOS05OC4yMzQtNDAuNjE4LTE5LjMwNy02LjIwMy0zOS4yNzEtMTIuNjE4LTU4LjIzLTIwLjU3Mi01Ljc4Ny0yLjQyOS0xMC43MTItNC45MTItMTUuMDU3LTcuNTktNS40NjQtMy4zNjgtMTMuNzIxLTguNDU3LTE1LjMwMi0xNS4zODgtMi41NzktMTEuMzA5IDE0LjMzLTIzLjk5OCAyNS41Mi0zMi4zOTUgMy4yMTYtMi40MTQgNi4xMDYtNC41ODUgOC40NzMtNi42MTcgMCAwIDEzLjc4OSAwIDEzLjc4Ny4wMDItOS44OTIgNy43ODYtMzQuMTU2IDE5LjczMy0zMC4xNzQgMzUuNjUzIDEuOTk4IDcuOTg2IDEwLjY4OCAxMi4xOTEgMTguMDM1IDE0Ljk2MiAxMy45ODEgNS4yNzIgMjguMzI0IDkuMzY3IDQyLjQ1NiAxNC4xODYgMTUuNjQ0IDUuMzM1IDMwLjkzMyAxMC43ODMgNDUuNDQyIDE2LjE5NSA4LjkxMyAzLjMyNSAxOC40NyA2LjkzOCAyNy45NTcgMTAuODI5IDIxLjIxNCA4LjcwMSAzNy42NzkgMTcuMDI4IDUxLjgxNiAyNi4yMDYgMTIuMDk0IDcuODUyIDIyLjgxMyAxNi42MTEgMzEuODYxIDI2LjAzNSAxOS44NzUgMjAuNzAxIDMzLjY0OCA0OS4wODggMzkuODMxIDgyLjA5MSA3LjQ1MSAzOS43NzEgMy45MzcgODQuNTA1LTExLjA1OCAxNDAuNzgxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQ0LjM2NSAxOTkuNDA3YzEuNDYxIDIuMDczIDMuNzggMy4xOCA2LjEzOCAzLjE4IDEuNDkyIDAgMy0uNDQ0IDQuMzEzLTEuMzcgMy4zODYtMi4zODYgNC4xOTYtNy4wNjUgMS44MTEtMTAuNDUxLTQuMTA5LTUuODMxLTguODExLTExLjI5My0xMy45NzMtMTYuMjMzLTIuOTkzLTIuODY1LTcuNzQxLTIuNzYtMTAuNjA0LjIzMi0yLjg2NCAyLjk5My0yLjc2MSA3Ljc0LjIzMiAxMC42MDQgNC40NjUgNC4yNzQgOC41MzEgOC45OTcgMTIuMDgzIDE0LjAzOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1NS4wODMgMTIyLjUxOC0uNDczLS4yNDZjLTUuNzc2LTIuOTkzLTExLjU0NS01Ljk4My0xNy4zMzQtOC45NDUtMy42ODQtMS44ODMtOC4yMDYtLjQyNi0xMC4wOTMgMy4yNjItMS44ODYgMy42ODgtLjQyNiA4LjIwNiAzLjI2MiAxMC4wOTMgNS43NjUgMi45NDkgMTEuNTExIDUuOTI3IDE3LjI2MyA4LjkwOGwuNDczLjI0NWMxLjEwNC41NzIgMi4yODMuODQzIDMuNDQ1Ljg0MyAyLjcxMiAwIDUuMzMxLTEuNDc2IDYuNjY1LTQuMDUgMS45MDYtMy42NzguNDctOC4yMDQtMy4yMDgtMTAuMTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuNjgzIDU3LjU4NGMxLjc0NC01LjUxIDQuNzE5LTEwLjE5NiA4LjE2My0xMi44NTYgMy4yNzgtMi41MzIgMy44ODItNy4yNDIgMS4zNTEtMTAuNTItMi41MzQtMy4yNzktNy4yNDQtMy44ODItMTAuNTIxLTEuMzUxLTUuODg5IDQuNTQ5LTEwLjYxIDExLjcyNC0xMy4yOTMgMjAuMjAxLTEuMjUgMy45NDkuOTM4IDguMTY0IDQuODg3IDkuNDE0Ljc1My4yMzggMS41MTUuMzUyIDIuMjY1LjM1MiAzLjE4Mi0uMDAxIDYuMTM2LTIuMDQzIDcuMTQ4LTUuMjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDEuMTM2IDk1LjkwM2MtNi43NTEtMy4zMTQtMTEuNDI0LTYuMjY4LTE1LjE1Mi05LjU3Ni0zLjA5OC0yLjc1LTcuODM4LTIuNDY2LTEwLjU4OC42MzEtMi43NSAzLjA5OC0yLjQ2NyA3LjgzOC42MzEgMTAuNTg4IDQuNzc5IDQuMjQyIDEwLjQ4NCA3Ljg4OCAxOC40OTkgMTEuODIyIDEuMDYzLjUyMiAyLjE5Ljc2OSAzLjMuNzY5IDIuNzcgMCA1LjQzNS0xLjU0MiA2LjczOC00LjE5NiAxLjgyNS0zLjcxOC4yOS04LjIxMi0zLjQyOC0xMC4wMzh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNzUuODU1IDQ0MS4yNzZjLTMuNTUzLTIuMTI2LTguMTU5LS45NzItMTAuMjg3IDIuNTgzLTMuNDk0IDUuODM1LTYuOTQ5IDExLjU3Ni0xMC4zMDYgMTcuMTIyLTIuMTQ1IDMuNTQzLTEuMDExIDguMTU1IDIuNTMzIDEwLjI5OSAxLjIxNS43MzUgMi41NTQgMS4wODUgMy44NzcgMS4wODUgMi41MzcgMCA1LjAxNC0xLjI4OCA2LjQyMy0zLjYxOCAzLjM2OC01LjU2NSA2LjgzNy0xMS4zMjcgMTAuMzQzLTE3LjE4MyAyLjEyNy0zLjU1NC45NzEtOC4xNi0yLjU4My0xMC4yODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjQuODY0IDIyNC4xNTJjLTQuMDY3Ljc4Ni02LjcyNyA0LjcyLTUuOTQgOC43ODcuOTEgNC43MTMgMS4zNzIgOS40NjggMS4zNzIgMTQuMTMyIDAgLjM1OC0uMDAzLjcxNi0uMDA5IDEuMDktLjAxNS45NzYtLjA0NCAxLjk0Ny0uMDg3IDIuOTE1LS4xODcgNC4xMzggMy4wMTggNy42NDMgNy4xNTUgNy44MjkuMTE1LjAwNS4yMjkuMDA4LjM0My4wMDggMy45ODYgMCA3LjMwNi0zLjE0IDcuNDg2LTcuMTYzLjA1MS0xLjExNy4wODQtMi4yMzkuMTAxLTMuMzUuMDA4LS40NDMuMDExLS44ODcuMDExLTEuMzMgMC01LjYxNy0uNTU0LTExLjMzLTEuNjQ1LTE2Ljk3OC0uNzg3LTQuMDY3LTQuNzI4LTYuNzI1LTguNzg3LTUuOTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMDYuMjU0IDM4OS40ODFjLTMuNTgyLTIuMDczLTguMTcyLS44NTMtMTAuMjQ5IDIuNzMxLTMuMjMyIDUuNTgyLTYuNjA2IDExLjM3LTEwLjA2MiAxNy4yNjEtMi4wOTYgMy41NzMtLjg5NyA4LjE2OCAyLjY3NiAxMC4yNjQgMS4xOTIuNjk5IDIuNDk4IDEuMDMxIDMuNzg3IDEuMDMxIDIuNTc0IDAgNS4wOC0xLjMyNiA2LjQ3Ny0zLjcwNyAzLjQ2OS01LjkxNSA2Ljg1Ni0xMS43MjggMTAuMTAzLTE3LjMzMiAyLjA3Ni0zLjU4My44NTItOC4xNzEtMi43MzItMTAuMjQ4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzYxLjkyOSAyODMuMzE0Yy0zLjg4My0xLjQ0Ni04LjIwMS41My05LjY0NiA0LjQxMy0yLjA5MSA1LjYxOS00LjU5MiAxMS40MDQtNy42NDYgMTcuNjg2LTEuODExIDMuNzI1LS4yNTkgOC4yMTMgMy40NjYgMTAuMDI0IDEuMDU3LjUxNCAyLjE3NC43NTYgMy4yNzMuNzU2IDIuNzgxIDAgNS40NTQtMS41NTMgNi43NTEtNC4yMjMgMy4yNjYtNi43MTggNS45NTItMTIuOTM3IDguMjE0LTE5LjAxMSAxLjQ0NS0zLjg4Mi0uNTMtOC4yLTQuNDEyLTkuNjQ1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzM1LjkyIDMzNy4yNzVjLTMuNTg1LTIuMDc1LTguMTczLS44NTItMTAuMjQ5IDIuNzMzLTMuMTA5IDUuMzcyLTYuNjM0IDExLjQ2LTkuOTc1IDE3LjUxNy0yIDMuNjI3LS42ODIgOC4xODkgMi45NDUgMTAuMTkgMS4xNDguNjMzIDIuMzkxLjkzNCAzLjYxNS45MzQgMi42NDQgMCA1LjIwNy0xLjQwMSA2LjU3NC0zLjg3OSAzLjI2Ni01LjkyIDYuNzQ5LTExLjkzOCA5LjgyMi0xNy4yNDcgMi4wNzctMy41ODUuODUyLTguMTcyLTIuNzMyLTEwLjI0OHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMwOC4wMDEgMTUxLjQwMmMtMy4yMTgtMS44MzgtNi40NzQtMy43NjMtOS42MjEtNS42MjQtMi41MzEtMS40OTYtNS4wNTktMi45OS03LjYtNC40NjEtMy41ODYtMi4wNzUtOC4xNzQtLjg1Mi0xMC4yNDggMi43MzMtMi4wNzYgMy41ODQtLjg1MyA4LjE3MyAyLjczMiAxMC4yNDkgMi41MDEgMS40NDggNC45OSAyLjkxOSA3LjQ4MiA0LjM5MyAzLjE5NCAxLjg4OCA2LjQ5OCAzLjg0MSA5LjgxMyA1LjczNSAxLjE3NC42NyAyLjQ1Mi45ODkgMy43MTQuOTg5IDIuNjA0IDAgNS4xMzUtMS4zNTggNi41MTktMy43ODEgMi4wNTYtMy41OTcuODA2LTguMTc4LTIuNzkxLTEwLjIzM3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Xxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxyZWN0IHg9IjE4OC42MzIiIHk9IjI1NiIgd2lkdGg9IjM1LjkzIiBoZWlnaHQ9IjE3Ljk2NSIvPg0KICAgICAgICA8cGF0aCBkPSJNNDQxLjkxNyw0NzEuNTc5bDE2LjAzOS04OC4yMTljMC40ODItMi42MjMtMC4yMjgtNS4zMTYtMS45MzktNy4zNmMtMS43MDItMi4wNDQtNC4yMjgtMy4yMjgtNi44OTUtMy4yMjhoLTg5LjgyNQ0KCQkJYy0yLjY2NywwLTUuMTkzLDEuMTg0LTYuODk1LDMuMjI4Yy0xLjcxMSwyLjA0NC0yLjQyMSw0LjczNy0xLjkzOSw3LjM2bDE2LjAzOSw4OC4yMTlIMjYwLjQ5MVYzMS40MzkNCgkJCWMwLTQuOTY1LTQuMDE4LTguOTgyLTguOTgyLTguOTgySDUzLjg5NWMtNC45NjUsMC04Ljk4Miw0LjAxOC04Ljk4Miw4Ljk4MnY0NDAuMTRIMHYxNy45NjVoNTMuODk1aDE5Ny42MTRoMTI1Ljc1NGg1My44OTVINTEyDQoJCQl2LTE3Ljk2NUg0NDEuOTE3eiBNMjQyLjUyNiw0NzEuNTc5SDYyLjg3N1Y0MC40MjFoMTc5LjY0OVY0NzEuNTc5eiBNNDIzLjY1OCw0NzEuNTc5aC0zOC44OTVsLTE0LjcwMi04MC44NDJoNjguMjk4DQoJCQlMNDIzLjY1OCw0NzEuNTc5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDU4LjEwNSw3Ni4zNTFjLTI3LjQ1NiwwLTQ0LjQ4OSwxMi40OTYtNTMuODk1LDI1LjE5NWMtOS40MDgtMTIuNjk5LTI2LjQzOS0yNS4xOTUtNTMuODk1LTI1LjE5NQ0KCQkJYy00Ljk2NSwwLTguOTgyLDQuMDE4LTguOTgyLDguOTgyYzAsNC45NjUsNC4wMTgsOC45ODIsOC45ODIsOC45ODJjMzMuNzU0LDAsNDMuMjcyLDIzLjMwNyw0NC45MTIsMjguMjQ2djIzMi4yNDYNCgkJCWMwLDQuOTY1LDQuMDE4LDguOTgyLDguOTgyLDguOTgyczguOTgyLTQuMDE4LDguOTgyLTguOTgyVjEyMi41NzJjMS41NDQtNC42OCwxMC45ODctMjguMjU3LDQ0LjkxMi0yOC4yNTcNCgkJCWM0Ljk2NSwwLDguOTgyLTQuMDE4LDguOTgyLTguOTgyQzQ2Ny4wODgsODAuMzY4LDQ2My4wNyw3Ni4zNTEsNDU4LjEwNSw3Ni4zNTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNjUuODMzLDExOS4yNjNjLTE1LjU1My0xNS41NTMtMzYuODQyLTIyLjM3Ny01NS42NjctMTcuNzk4Yy0zLjI1NCwwLjc5OC01Ljc5OCwzLjM0Mi02LjU5Niw2LjU5Ng0KCQkJYy00LjU3OSwxOC43NzIsMi4yMzcsNDAuMDk3LDE3Ljc5OCw1NS42NjdjMTIuMzYsMTIuMzYsMjguMzYsMTkuMjAyLDQzLjgxNiwxOS4yMDJjNC4wMDksMCw3Ljk4Mi0wLjQ2NSwxMS44NTEtMS40MDQNCgkJCWMzLjI1NS0wLjc5OCw1Ljc5OC0zLjM0Miw2LjU5Ni02LjU5NkMzODguMjExLDE1Ni4xNTgsMzgxLjM5NSwxMzQuODMzLDM2NS44MzMsMTE5LjI2M3ogTTM2Ny4wMDksMTY0LjkwMw0KCQkJYy0xMS4xNTgsMC40MzktMjMuNTk2LTQuNTM1LTMyLjkzOS0xMy44NzdjLTkuMzQyLTkuMzUxLTE0LjQzOS0yMS43MzctMTMuODc3LTMyLjkzOWMxMS4xMjMtMC41NzksMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDE0MS4zMTYsMzY3LjU3LDE1My43MDIsMzY3LjAwOSwxNjQuOTAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjgzMywyMDAuMTA1Yy0xNS41NTMtMTUuNTUzLTM2Ljg0Mi0yMi4zNjktNTUuNjY3LTE3Ljc5OGMtMy4yNTQsMC43OTgtNS43OTgsMy4zNDItNi41OTYsNi41OTYNCgkJCWMtNC41NzksMTguNzcyLDIuMjM3LDQwLjA5NywxNy43OTgsNTUuNjY3YzEyLjM2LDEyLjM2LDI4LjM2LDE5LjIwMiw0My44MTYsMTkuMjAyYzQuMDA5LDAsNy45ODItMC40NjUsMTEuODUxLTEuNDA0DQoJCQljMy4yNTUtMC43OTgsNS43OTgtMy4zNDIsNi41OTYtNi41OTZDMzg4LjIxMSwyMzcsMzgxLjM5NSwyMTUuNjc2LDM2NS44MzMsMjAwLjEwNXogTTM2Ny4wMDksMjQ1Ljc0Ng0KCQkJYy0xMS4xNTgsMC40OTEtMjMuNTk2LTQuNTQ0LTMyLjkzOS0xMy44NzdjLTkuMzQyLTkuMzUxLTE0LjQzOS0yMS43MzctMTMuODc3LTMyLjkzOWMxMS4xMjMtMC41MzUsMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDIyMi4xNTgsMzY3LjU3LDIzNC41NDQsMzY3LjAwOSwyNDUuNzQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjgzMywyODAuOTQ3Yy0xNS41NTMtMTUuNTYxLTM2Ljg0Mi0yMi4zNjktNTUuNjY3LTE3Ljc5OGMtMy4yNTQsMC43OTgtNS43OTgsMy4zNDItNi41OTYsNi41OTYNCgkJCWMtNC41NzksMTguNzcyLDIuMjM3LDQwLjA5NywxNy43OTgsNTUuNjY3YzEyLjM2LDEyLjM2LDI4LjM2LDE5LjIwMiw0My44MTYsMTkuMjAyYzQuMDA5LDAsNy45ODItMC40NjUsMTEuODUxLTEuNDA0DQoJCQljMy4yNTUtMC43OTgsNS43OTgtMy4zNDIsNi41OTYtNi41OTZDMzg4LjIxMSwzMTcuODQyLDM4MS4zOTUsMjk2LjUxOCwzNjUuODMzLDI4MC45NDd6IE0zNjcuMDA5LDMyNi41ODgNCgkJCWMtMTEuMTU4LDAuNDQ3LTIzLjU5Ni00LjUzNS0zMi45MzktMTMuODc3Yy05LjM0Mi05LjM1MS0xNC40MzktMjEuNzM3LTEzLjg3Ny0zMi45MzljMTEuMTIzLTAuNTcsMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDMwMywzNjcuNTcsMzE1LjM4NiwzNjcuMDA5LDMyNi41ODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDkuMzg2LDEwOC4wNjFjLTAuNzk4LTMuMjU0LTMuMzQyLTUuNzk4LTYuNTk2LTYuNTk2Yy0xOC43ODktNC41Ny00MC4xMDUsMi4yMzctNTUuNjY3LDE3Ljc5OA0KCQkJYy0xNS41NjEsMTUuNTctMjIuMzc3LDM2Ljg5NS0xNy43OTgsNTUuNjY3YzAuNzk4LDMuMjU1LDMuMzQyLDUuNzk4LDYuNTk2LDYuNTk2YzMuODY4LDAuOTM5LDcuODMzLDEuNDA0LDExLjg0MiwxLjQwNA0KCQkJYzE1LjQ2NSwwLDMxLjQ2NS02Ljg0Miw0My44MjUtMTkuMjAyQzUwNy4xNDksMTQ4LjE1OCw1MTMuOTY1LDEyNi44MzMsNTA5LjM4NiwxMDguMDYxeiBNNDc4Ljg4NiwxNTEuMDI2DQoJCQljLTkuMzUxLDkuMzQyLTIxLjg3NywxNC4zMjUtMzIuOTM5LDEzLjg3N2MtMC41NjEtMTEuMjAyLDQuNTM1LTIzLjU4OCwxMy44NzctMzIuOTM5YzkuMzUxLTkuMzQyLDIxLjc5OC0xNC40NDcsMzIuOTM5LTEzLjg3Nw0KCQkJQzQ5My4zMjUsMTI5LjI4OSw0ODguMjI4LDE0MS42NzUsNDc4Ljg4NiwxNTEuMDI2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTA5LjM4NiwxODguOTAzYy0wLjc5OC0zLjI1NC0zLjM0Mi01Ljc5OC02LjU5Ni02LjU5NmMtMTguNzg5LTQuNTc5LTQwLjEwNSwyLjIzNy01NS42NjcsMTcuNzk4DQoJCQljLTE1LjU2MSwxNS41Ny0yMi4zNzcsMzYuODk1LTE3Ljc5OCw1NS42NjdjMC43OTgsMy4yNTUsMy4zNDIsNS43OTgsNi41OTYsNi41OTZjMy44NjksMC45MzksNy44MzMsMS40MDQsMTEuODQyLDEuNDA0DQoJCQljMTUuNDY1LDAsMzEuNDY1LTYuODQyLDQzLjgyNS0xOS4yMDJDNTA3LjE0OSwyMjksNTEzLjk2NSwyMDcuNjc2LDUwOS4zODYsMTg4LjkwM3ogTTQ3OC44ODYsMjMxLjg2OA0KCQkJYy05LjM1MSw5LjMzMy0yMS44NzcsMTQuMzY4LTMyLjkzOSwxMy44NzdjLTAuNTYxLTExLjIwMiw0LjUzNS0yMy41ODgsMTMuODc3LTMyLjkzOWM5LjM1MS05LjM0MiwyMS43OTgtMTQuNDAzLDMyLjkzOS0xMy44NzcNCgkJCUM0OTMuMzI1LDIxMC4xMzIsNDg4LjIyOCwyMjIuNTE3LDQ3OC44ODYsMjMxLjg2OHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwOS4zODYsMjY5Ljc0NmMtMC43OTgtMy4yNTQtMy4zNDItNS43OTgtNi41OTYtNi41OTZjLTE4Ljc4OS00LjU3OS00MC4xMDUsMi4yMzctNTUuNjY3LDE3Ljc5OA0KCQkJYy0xNS41NjEsMTUuNTctMjIuMzc3LDM2Ljg5NS0xNy43OTgsNTUuNjY3YzAuNzk4LDMuMjU1LDMuMzQyLDUuNzk4LDYuNTk2LDYuNTk2YzMuODY5LDAuOTM5LDcuODMzLDEuNDA0LDExLjg0MiwxLjQwNA0KCQkJYzE1LjQ2NSwwLDMxLjQ2NS02Ljg0Miw0My44MjUtMTkuMjAyQzUwNy4xNDksMzA5Ljg0Miw1MTMuOTY1LDI4OC41MTgsNTA5LjM4NiwyNjkuNzQ2eiBNNDc4Ljg4NiwzMTIuNzENCgkJCWMtOS4zNTEsOS4zNDItMjEuODc3LDE0LjMzMy0zMi45MzksMTMuODc3Yy0wLjU2MS0xMS4yMDIsNC41MzUtMjMuNTg4LDEzLjg3Ny0zMi45MzljOS4zNTEtOS4zNDIsMjEuNzk4LTE0LjQ0NywzMi45MzktMTMuODc3DQoJCQlDNDkzLjMyNSwyOTAuOTc0LDQ4OC4yMjgsMzAzLjM2LDQ3OC44ODYsMzEyLjcxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Kxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTEzOS45MzMgMjMwLjU2NmgyMzIuMTM1YzIyLjQwNSAwIDQwLjYzNC0xOC4yMjggNDAuNjM0LTQwLjYzM3YtMTQ5LjNjLS4wMDEtMjIuNDA1LTE4LjIyOS00MC42MzMtNDAuNjM1LTQwLjYzM2gtMjMyLjEzNGMtMjIuNDA1IDAtNDAuNjM0IDE4LjIyOC00MC42MzQgNDAuNjMzdjE0OS4yOTljMCAyMi40MDYgMTguMjI4IDQwLjYzNCA0MC42MzQgNDAuNjM0em0tMjUuNjM0LTE4OS45MzNjMC0xNC4xMzQgMTEuNDk5LTI1LjYzMyAyNS42MzQtMjUuNjMzaDIzMi4xMzVjMTQuMTM1IDAgMjUuNjM0IDExLjQ5OSAyNS42MzQgMjUuNjMzdjE0OS4yOTljMCAxNC4xMzQtMTEuNDk5IDI1LjYzMy0yNS42MzQgMjUuNjMzaC0yMzIuMTM1Yy0xNC4xMzUgMC0yNS42MzQtMTEuNDk5LTI1LjYzNC0yNS42MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzkuOTMzIDUwLjIwNGM0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41di00LjE0MmMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41cy03LjUgMy4zNTgtNy41IDcuNXY0LjE0MmMwIDQuMTQyIDMuMzU3IDcuNSA3LjUgNy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ1LjExIDE2NC44MTNjMTAuNDIzIDIuMDgxIDE4Ljg1IDEwLjE4IDIwLjk3IDIwLjE1NyAxLjUzNiA3LjIyMiA4LjAyMiAxMi40NjMgMTUuNDIyIDEyLjQ2M2gxNDguOTQ3YzcuNDggMCAxMy45OC01LjMxIDE1LjQ1NS0xMi42MjQgMi4xMTUtMTAuNDgyIDEwLjU3Ni0xOC45MzYgMjEuMDUyLTIxLjAzOCA3LjMwOC0xLjQ2NiAxMi42MTEtNy45NjUgMTIuNjExLTE1LjQ1NHYtNjYuMDY3YzAtNy40ODQtNS4zMTEtMTMuOTg1LTEyLjYyNy0xNS40NTctMTAuNDcyLTIuMTA3LTE4LjkyNS0xMC41NjMtMjEuMDM2LTIxLjA0MS0xLjQ3NS03LjMxMi03Ljk2Ny0xMi42MTgtMTUuNDM5LTEyLjYxOGgtMTQ4Ljk3MWMtNy4zOTUgMC0xMy44NzggNS4yNDItMTUuNDE0IDEyLjQ2NS0yLjExOCA5Ljk2OS0xMC41NCAxOC4wNjctMjAuOTU1IDIwLjE1My03LjM1NSAxLjQ3Mi0xMi42OTIgNy45NzktMTIuNjkyIDE1LjQ3djY4LjEyNWMwIDcuNDk0IDUuMzMxIDEzLjk5OSAxMi42NzcgMTUuNDY2em0yLjMyMy04My41OTJjMC0uMzc0LjI2Mi0uNjg3LjYzOC0uNzYyIDE2LjIwMy0zLjI0NCAyOS4zMzctMTYgMzIuNjgyLTMxLjc0MS4wNzMtLjM0NC4zNzgtLjU4NS43NDItLjU4NWgxNDguOTcyYy4zNTcgMCAuNjY2LjI0NS43MzMuNTgzIDMuMjkgMTYuMzI1IDE2LjQ2NCAyOS40OTkgMzIuNzgyIDMyLjc4Mi4zNC4wNjguNTg2LjM4NS41ODYuNzUydjY2LjA2N2MwIC4zNjEtLjI0MS42ODMtLjU2MS43NDctMTYuMzI2IDMuMjc0LTI5LjUxIDE2LjQ0Ny0zMi44MDYgMzIuNzc4LS4wNjkuMzQyLS4zODYuNTkxLS43NTIuNTkxaC0xNDguOTQ3Yy0uMzYyIDAtLjY3OC0uMjQ2LS43NS0uNTgyLTMuMzQ3LTE1Ljc1Mi0xNi40OS0yOC41MTEtMzIuNzA1LTMxLjc0OC0uMzU3LS4wNzEtLjYxNC0uMzg5LS42MTQtLjc1N3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3Mi4wNjcgNTAuMjA0YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTQuMTQyYzAtNC4xNDItMy4zNTctNy41LTcuNS03LjVzLTcuNSAzLjM1OC03LjUgNy41djQuMTQyYzAgNC4xNDIgMy4zNTggNy41IDcuNSA3LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzkuOTMzIDE5OS41MDNjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXYtNC4xNDJjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NC4xNDJjMCA0LjE0MyAzLjM1NyA3LjUgNy41IDcuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3Mi4wNjcgMTgwLjM2MmMtNC4xNDMgMC03LjUgMy4zNTgtNy41IDcuNXY0LjE0MmMwIDQuMTQyIDMuMzU3IDcuNSA3LjUgNy41czcuNS0zLjM1OCA3LjUtNy41di00LjE0MmMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg5LjczMyAxNjQuMWg0OS43YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTI1LjYzM2gxNy4zNWMyLjYgMCA1LjAxNC0xLjM0NiA2LjM4LTMuNTU3czEuNDkxLTQuOTcyLjMyOC03LjI5N2wtMjQuODUtNDkuN2MtMS4yNzEtMi41NDEtMy44NjctNC4xNDYtNi43MDgtNC4xNDZzLTUuNDM4IDEuNjA1LTYuNzA4IDQuMTQ2bC0xNC40OTMgMjguOTg3aC0yOC40OThjLTQuMTQzIDAtNy41IDMuMzU4LTcuNSA3LjV2NDkuN2MtLjAwMSA0LjE0MiAzLjM1NyA3LjUgNy40OTkgNy41em00OS43MDEtNzMuNTYzIDEyLjcxNSAyNS40M2gtMjUuNDN6bS00Mi4yMDEgMjMuODYzaDEzLjQ5OGwtMi44NTYgNS43MTNjLTEuMTYzIDIuMzI1LTEuMDM4IDUuMDg2LjMyOCA3LjI5N3MzLjc4IDMuNTU3IDYuMzggMy41NTdoMTcuMzUxdjE4LjEzM2gtMzQuN3YtMzQuN3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxMy45ODMgMTQ3LjUzM2MxNy44MzggMCAzMi4zNS0xNC41MTIgMzIuMzUtMzIuMzUgMC0xNy44MzctMTQuNTEyLTMyLjM1LTMyLjM1LTMyLjM1cy0zMi4zNTEgMTQuNTEyLTMyLjM1MSAzMi4zNWMuMDAxIDE3LjgzOCAxNC41MTQgMzIuMzUgMzIuMzUxIDMyLjM1em0wLTQ5LjY5OWM5LjU2NiAwIDE3LjM1IDcuNzgzIDE3LjM1IDE3LjM1cy03Ljc4MyAxNy4zNS0xNy4zNSAxNy4zNS0xNy4zNTEtNy43ODMtMTcuMzUxLTE3LjM1Yy4wMDEtOS41NjcgNy43ODQtMTcuMzUgMTcuMzUxLTE3LjM1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjMwLjg2NyAyNDguNWMtOC41NDcgMC0xNS41IDYuOTUzLTE1LjUgMTUuNXYxNy4xMzNjMCA4LjU0NyA2Ljk1MyAxNS41IDE1LjUgMTUuNWg1MC4yNjZjOC41NDcgMCAxNS41LTYuOTUzIDE1LjUtMTUuNXYtMTcuMTMzYzAtOC41NDctNi45NTMtMTUuNS0xNS41LTE1LjV6bTUwLjc2NiAxNS41djE3LjEzM2MwIC4yNzYtLjIyNS41LS41LjVoLTUwLjI2NmMtLjI3NSAwLS41LS4yMjQtLjUtLjV2LTE3LjEzM2MwLS4yNzYuMjI1LS41LjUtLjVoNTAuMjY2Yy4yNzUgMCAuNS4yMjQuNS41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDk2LjUgNDYzLjg2N2gtMTcuNjcyYy4wMTMtLjI2MS4wNC0uNTE5LjA0LS43ODN2LTguMjg0YzAtMTAuNjUyLTYuOTU5LTE5LjcwNC0xNi41NjctMjIuODY0di0xMzYuNTA1YzkuNjA4LTMuMTYgMTYuNTY3LTEyLjIxMiAxNi41NjctMjIuODY0di04LjI4NGMwLTguNzAzLTcuMDgxLTE1Ljc4My0xNS43ODQtMTUuNzgzaC0yLjU2MmMxLjE0My0yLjggMS43NzktNS44NiAxLjc3OS05LjA2NyAwLTEzLjI3LTEwLjc5Ni0yNC4wNjYtMjQuMDY2LTI0LjA2NnMtMjQuMDY2IDEwLjc5Ni0yNC4wNjYgMjQuMDY2YzAgMy4yMDcuNjM1IDYuMjY2IDEuNzc5IDkuMDY3aC0yLjU2M2MtOC43MDMgMC0xNS43ODMgNy4wODEtMTUuNzgzIDE1Ljc4M3Y4LjI4NGMwIDEwLjUxOCA2Ljc4NiAxOS40NzYgMTYuMjA3IDIyLjc0MS0xOC42MTYgMTguNDM4LTQwLjAzNyAzMy4zNTEtNjMuNzM0IDQ0LjMzNy0zLjc1OCAxLjc0Mi01LjM5MyA2LjIwMS0zLjY1IDkuOTU4IDEuMjcgMi43MzcgMy45NzggNC4zNDggNi44MSA0LjM0OCAxLjA1NiAwIDIuMTI5LS4yMjQgMy4xNDktLjY5OCAyMS4wNTgtOS43NjIgNDAuNDI3LTIyLjQzMiA1Ny43ODYtMzcuNzU0djIzLjcxMmMtNDUuNDEgMzUuNDk1LTEwMC4wMTQgNTQuMjQ3LTE1OC4xNjcgNTQuMjQ3LTU4LjE0OCAwLTExMi43NTYtMTguNzUzLTE1OC4xNjctNTQuMjQ5di0yMy42OWM0My43NjQgMzguNjkgOTkuMjggNTkuODA1IDE1OC4xNjcgNTkuODA1IDIzLjU5MiAwIDQ2LjkxMy0zLjQ0MSA2OS4zMTQtMTAuMjI4IDMuOTY0LTEuMjAxIDYuMjA0LTUuMzg4IDUuMDAzLTkuMzUzLTEuMjAxLTMuOTY0LTUuMzg5LTYuMjA3LTkuMzUzLTUuMDAzLTIwLjk4OSA2LjM1OS00Mi44NDcgOS41ODMtNjQuOTY0IDkuNTgzLTU5LjU3MiAwLTExNS40NjItMjMuMDctMTU3LjgwMi02NS4wMTggOS40MTktMy4yNjcgMTYuMjAyLTEyLjIyNCAxNi4yMDItMjIuNzR2LTguMjg0YzAtOC43MDMtNy4wOC0xNS43ODMtMTUuNzgzLTE1Ljc4M2gtMi41NjNjMS4xNDMtMi44IDEuNzc5LTUuODYgMS43NzktOS4wNjcgMC0xMy4yNy0xMC43OTYtMjQuMDY2LTI0LjA2Ni0yNC4wNjZzLTI0LjA3IDEwLjc5OC0yNC4wNyAyNC4wNjhjMCAzLjIwNy42MzYgNi4yNjYgMS43NzkgOS4wNjdoLTIuNTYyYy04LjcwMyAwLTE1Ljc4NCA3LjA4MS0xNS43ODQgMTUuNzgzdjguMjg0YzAgMTAuNjUyIDYuOTU5IDE5LjcwNCAxNi41NjcgMjIuODY0djEzNi41MDZjLTkuNjA4IDMuMTYtMTYuNTY3IDEyLjIxMi0xNi41NjcgMjIuODY0djguMjg0YzAgLjI2NC4wMjcuNTIyLjA0Ljc4M2gtMTcuNjczYy04LjU0NyAwLTE1LjUgNi45NTMtMTUuNSAxNS41djE3LjEzMmMwIDguNTQ3IDYuOTUzIDE1LjUgMTUuNSAxNS41aDU5LjgzM2M0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtNTkuODMzYy0uMjc1IDAtLjUtLjIyNC0uNS0uNXYtMTcuMTMzYzAtLjI3Ni4yMjUtLjUuNS0uNWg0ODFjLjI3NSAwIC41LjIyNC41LjV2MTcuMTMzYzAgLjI3Ni0uMjI1LjUtLjUuNWgtMzkxLjE2N2MtNC4xNDMgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgzOTEuMTY3YzguNTQ3IDAgMTUuNS02Ljk1MyAxNS41LTE1LjV2LTE3LjEzM2MwLTguNTQ3LTYuOTUzLTE1LjUtMTUuNS0xNS41em0tNjcuMzMzLTE2NC41NzdjLjE2MS0uODc4LjE1OC0xLjc3OC4wMDUtMi42NTZoMTguMTI4djE4LjEzM2gtMTguMTMzem0wIDQzLjkwNGMuMDEyLS4yMzkuMDEyLS40NzkgMC0uNzE5di0xMi43MDloMTguMTMzdjEwMC45NjdoLTE4LjEzM3ptMC0xMDMuNzYxYzAtNC45OTkgNC4wNjctOS4wNjYgOS4wNjYtOS4wNjZzOS4wNjYgNC4wNjcgOS4wNjYgOS4wNjYtNC4wNjcgOS4wNjctOS4wNjYgOS4wNjctOS4wNjYtNC4wNjctOS4wNjYtOS4wNjd6bS0xNi41NjcgMjQuODVjMC0uNDMyLjM1Mi0uNzgzLjc4My0uNzgzaDQ5LjdjLjQzMyAwIC43ODQuMzUyLjc4NC43ODN2OC4yODRjMCA0Ljk5OS00LjA2NyA5LjA2Ni05LjA2NyA5LjA2NmgtMzMuMTMzYy01IDAtOS4wNjctNC4wNjctOS4wNjctOS4wNjZ6bS0xNTYuNiAxNDQuMTc2YzU3LjY0OCAwIDExMi4wMDctMTcuNDIyIDE1OC4xNjctNTAuNTE0djczLjk5MWMtOS42MDggMy4xNi0xNi41NjcgMTIuMjEyLTE2LjU2NyAyMi44NjR2OC4yODRjMCAuMjY0LjAyNy41MjIuMDQuNzgzaC0yODMuMjc5Yy4wMTMtLjI2MS4wNC0uNTE5LjA0LS43ODN2LTguMjg0YzAtMTAuNjUyLTYuOTU5LTE5LjcwNC0xNi41NjctMjIuODY0di03My45OTJjNDYuMTYxIDMzLjA5MiAxMDAuNTIzIDUwLjUxNSAxNTguMTY2IDUwLjUxNXptLTE3My4xNjctMTEwLjc4OWMtLjAxMi4yNDctLjAxMi40OTUgMCAuNzQydjE2LjM1NWgtMTguMTMzdi0xOC4xMzNoMTguMTMzem0tMTguMTMzIDMyLjA5N2gxOC4xMzN2MTAwLjk2N2gtMTguMTMzem0wLTkwLjMzNGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY2LTkuMDY2czkuMDY2IDQuMDY3IDkuMDY2IDkuMDY2LTQuMDY3IDkuMDY3LTkuMDY2IDkuMDY3LTkuMDY2LTQuMDY3LTkuMDY2LTkuMDY3em0tMTYuNTY3IDI0Ljg1YzAtLjQzMi4zNTItLjc4My43ODQtLjc4M2g0OS43Yy40MzIgMCAuNzgzLjM1Mi43ODMuNzgzdjguMjg0YzAgNC45OTktNC4wNjcgOS4wNjYtOS4wNjcgOS4wNjZoLTMzLjEzM2MtNSAwLTkuMDY3LTQuMDY3LTkuMDY3LTkuMDY2em0uNzg0IDE5OS41ODRjLS40MzMgMC0uNzg0LS4zNTItLjc4NC0uNzgzdi04LjI4NGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY3LTkuMDY2aDMzLjEzM2M1IDAgOS4wNjcgNC4wNjcgOS4wNjcgOS4wNjZ2OC4yODRjMCAuNDMyLS4zNTIuNzgzLS43ODMuNzgzem0zNjQuNDY2IDBjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzgzdi04LjI4NGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY3LTkuMDY2aDMzLjEzM2M1IDAgOS4wNjcgNC4wNjcgOS4wNjcgOS4wNjZ2OC4yODRjMCAuNDMyLS4zNTIuNzgzLS43ODQuNzgzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",qxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzQuNjA4LDgwLjQzOWwtMjMyLTgwYy0xLjY5LTAuNTgzLTMuNTI2LTAuNTgzLTUuMjE2LDBsLTIzMiw4MEMyLjE2Niw4MS41NTEsMC4wMDEsODQuNTg3LDAsODcuOTk5djM4NA0KCQkJYzAsNC40MTgsMy41ODIsOCw4LDhoNDBjNC40MTgsMCw4LTMuNTgyLDgtOHYtMjQ4aDM2OHYyNDhjMCw0LjQxOCwzLjU4Miw4LDgsOGg0MGM0LjQxOCwwLDgtMy41ODIsOC04di0zODQNCgkJCUM0NzkuOTk5LDg0LjU4Nyw0NzcuODM0LDgxLjU1MSw0NzQuNjA4LDgwLjQzOXogTTQwLDIxNS45OTl2MjQ4SDE2di0zMDRoMjRWMjE1Ljk5OXogTTQyNCwyMDcuOTk5SDU2di0xNmgzNjhWMjA3Ljk5OXoNCgkJCSBNNDI0LDE3NS45OTlINTZ2LTE2aDM2OFYxNzUuOTk5eiBNNDY0LDQ2My45OTloLTI0di0zMDRoMjRWNDYzLjk5OXogTTQ2NCwxNDMuOTk5SDE2VjkzLjcwM2wyMjQtNzcuMjRsMjI0LDc3LjI0VjE0My45OTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zOTUuNTc2LDM0NC43OTlsLTI5LjYtMTQuOGwtMjYuNC01Mi44Yy00LjA2MS04LjEyNS0xMi4zODEtMTMuMjQyLTIxLjQ2NC0xMy4ySDE2MS44ODgNCgkJCWMtOS4wOTgtMC4wMy0xNy40MjEsNS4xMTQtMjEuNDY0LDEzLjI2NGwtMjYuNCw1Mi44bC0yOS42LDE0LjhjLTIuNzA1LDEuMzUyLTQuNDE2LDQuMTEyLTQuNDI0LDcuMTM2djExMmMwLDguODM3LDcuMTYzLDE2LDE2LDE2DQoJCQloMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMjRoMTkydjI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMTEyDQoJCQlDNDAwLjAxNywzNDguOTUyLDM5OC4zMDEsMzQ2LjE2LDM5NS41NzYsMzQ0Ljc5OXogTTE1NC43MzYsMjg0LjQyM2MxLjM0NS0yLjcxOCw0LjExOS00LjQzNCw3LjE1Mi00LjQyNGgxNTYuMjI0DQoJCQljMy4wMzMtMC4wMSw1LjgwNywxLjcwNiw3LjE1Miw0LjQyNGwyMS43OTIsNDMuNTc2SDEzMi45NDRMMTU0LjczNiwyODQuNDIzeiBNMTI4LDQ2My45OTlIOTZ2LTI0aDMyVjQ2My45OTl6IE0zODQsNDYzLjk5OWgtMzINCgkJCXYtMjRoMzJWNDYzLjk5OXogTTM4NCw0MjMuOTk5SDEzNkg5NnYtNjcuMDU2bDI1Ljg4OC0xMi45NDRoMjM2LjIyNEwzODQsMzU2Ljk0M1Y0MjMuOTk5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTUyLDM1OS45OTloLTI0Yy04LjgzNywwLTE2LDcuMTYzLTE2LDE2djE2YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMjRjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMTYNCgkJCUMxNjgsMzY3LjE2MiwxNjAuODM3LDM1OS45OTksMTUyLDM1OS45OTl6IE0xNTIsMzkxLjk5OWgtMjR2LTE2aDI0VjM5MS45OTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTIsMzU5Ljk5OWgtMjRjLTguODM3LDAtMTYsNy4xNjMtMTYsMTZ2MTZjMCw4LjgzNyw3LjE2MywxNiwxNiwxNmgyNGM4LjgzNywwLDE2LTcuMTYzLDE2LTE2di0xNg0KCQkJQzM2OCwzNjcuMTYyLDM2MC44MzcsMzU5Ljk5OSwzNTIsMzU5Ljk5OXogTTM1MiwzOTEuOTk5aC0yNHYtMTZoMjRWMzkxLjk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI4MCwzNTkuOTk5aC04MGMtOC44MzcsMC0xNiw3LjE2My0xNiwxNnYxNmMwLDguODM3LDcuMTYzLDE2LDE2LDE2aDgwYzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTE2DQoJCQlDMjk2LDM2Ny4xNjIsMjg4LjgzNywzNTkuOTk5LDI4MCwzNTkuOTk5eiBNMjgwLDM5MS45OTloLTgwdi0xNmg4MFYzOTEuOTk5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",eSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMS45NzggNTExLjk3OCIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTMwLjAwOSAyMjMuMjQ4YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTE2LjY5NmMwLTEyLjU1NyAxMC4yMTYtMjIuNzczIDIyLjc3Mi0yMi43NzNoMTUuMzkyYzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xNS4zOTJjLTIwLjgyOCAwLTM3Ljc3MiAxNi45NDUtMzcuNzcyIDM3Ljc3M3YxNi42OTZjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzMC4wMDkgMjgxLjE4N2M0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41di0yNC43NDZjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2MjQuNzQ2YzAgNC4xNDIgMy4zNTggNy41IDcuNSA3LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTcuODU2IDIwOC44NnYzNi4zMzljMCA0LjE0MiAzLjM1NyA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtMzYuMzM5YzAtMy4yOTQgMi43OTYtNi4wNzggNi4xMDUtNi4wNzhoMTMuMjM3YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xMy4yMzdjLTExLjYzNyAwLTIxLjEwNSA5LjQ1NS0yMS4xMDUgMjEuMDc4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjI4LjE4MSAyMTEuNDNjMi45NDIgMS45NjQgNi4zODIgMi45NjMgOS44ODkgMi45NjMgMi40NDIgMCA0LjkxOS0uNDg1IDcuMjgyLTEuNDY3bDI0Ljc2LTEwLjI1NSA2My41OTUgNC45MDYgNC42NjEgMTYuMTIxYzEuNjE5IDUuNjAxIDUuNTk2IDEwLjA3NCAxMS4xOTcgMTIuNTk1IDMuMTQ4IDEuNDE3IDYuNTkxIDIuMTI0IDEwLjA0MSAyLjEyNCAzLjY1MyAwIDcuMzE2LS43OTMgMTAuNjQ0LTIuMzc0bDExNy4yOTEtNTUuNzI5YzYuNDY5LTMuMDc0IDExLjQyNS05LjAxIDEzLjI1OC0xNS44OCAxLjU4Mi01LjkzMi42MjktMTEuODM1LTIuNjg0LTE2LjYxOWwtMjMuNjM5LTM0LjE2NGMxNy43NjMtMjAuNDYyIDIxLjk0MS00OS41OTUgMTAuMTI3LTc0LjQ2MS0xNi4yNzItMzQuMjAxLTU3LjMzMi00OC43OTctOTEuNTEtMzIuNTUtMjYuMTgxIDEyLjQzNS00MS41OTIgNDAuMDA4LTM4LjkxIDY4LjQ1OGwtMzMuNzY2IDE2LjA0MmMtLjAwMSAwLS4wMDEgMC0uMDAxIDAtMTAuNzI1IDUuMDk2LTE1LjM5MSAxNy4yODEtMTEuNjExIDMwLjMxNWw4Ljc0NSAzMC4yNDJoLTQ3LjE1N2wtMjUuMDU1LTEwLjM3N2MtNS43NjMtMi4zNzEtMTIuMTc5LTEuNzkzLTE3LjE2NyAxLjU0Ni00LjcxMyAzLjE1Ny03LjQxNiA4LjIyMS03LjQxNiAxMy44OTN2NDAuNzYxYy0uMDAyIDUuNjkxIDIuNzA2IDEwLjc2IDcuNDI2IDEzLjkxem0yNTcuNi01NS4wNzdjLjc5IDEuMTQuOTY2IDIuNTU4LjUyNCA0LjIxNC0uNjkyIDIuNTkzLTIuNzM0IDUuMDI2LTUuMjAyIDYuMTk5bC0xMTcuMjkxIDU1LjcyOGMtMi40NyAxLjE3My01LjY0NiAxLjIyMS04LjA5MS4xMi0xLjU2NS0uNzA0LTIuNTU2LTEuNzQxLTIuOTQzLTMuMDgzbC0yMi4zNzYtNzcuMzg1IDEwOS41NDItNTIuMDR6bS04Ni4yNTItMTM2LjE2MmMuMDAxIDAgLjAwMi0uMDAxLjAwMy0uMDAxIDI2LjcxNi0xMi43MDMgNTguODA2LTEuMjg4IDcxLjUyNCAyNS40NDIgOC42NjQgMTguMjM3IDYuMzMgMzkuNDE3LTUuNDYzIDU1LjE3M2wtLjAyNC0uMDI2LTI4LjAwMi00MC40N2MtNy43MjktMTEuMTYtMjAuMTM1LTE1LjI0MS0zMC44NjgtMTAuMTU3bC0zNy44MDMgMTcuOTU4LS4wMTIuMDAzYy4yMTctMjAuMTkgMTEuODk5LTM5LjAxOSAzMC42NDUtNDcuOTIyem0tNzIuNjc2IDg0LjQ5OCA4Ni4yNzMtNDAuOTg0YzQuNzUtMi4yNTEgOS40OTIgMS4zNjYgMTIuMTA3IDUuMTQzbDYuMDYyIDguNzYtMTA1LjExNSA0OS45MzctMi45NjctMTAuMjYyYy0xLjI3OC00LjQwNC0xLjA5LTEwLjM0NiAzLjY0LTEyLjU5NHptLTUwLjQ1MyA2Mi4wMDloNDUuNDc4bDcuMzY1IDI1LjQ5LTUyLjg0My00LjA3N3ptLTQwLjY0Ny05LjkzOGMwLS4zOTUuMDc5LS45NzIuNzY1LTEuNDMxLjIwNC0uMTM3Ljc3MS0uNDU1IDEuNjEzLS40NTUuNDI3IDAgLjkyNC4wODIgMS40OC4zMTFsMjEuNzg4IDkuMDI0djI1LjgzNGwtMjEuNzk3IDkuMDI3Yy0xLjY2NS42OTQtMi43OTIuMDg1LTMuMDk2LS4xMTgtLjY2OC0uNDQ2LS43NTQtLjk5OS0uNzU0LTEuNDMxdi00MC43NjF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTcuOTYgNDY0LjQ3OWMtMi45MjkgMi45MjktMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjEgMy4zNzEgMi4xOSA1LjI4MyAyLjE5IDEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOC03LjY3OC0yLjkyOC0xMC42MDcuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTkwLjkyIDQ2OC4yNzdjLTIuOTI5IDIuOTI5LTIuOTI5IDcuNjc4IDAgMTAuNjA2bC4wMjguMDI4YzEuNDYyIDEuNDYxIDMuMzcxIDIuMTkgNS4yODMgMi4xOSAxLjkyIDAgMy44NDItLjczNiA1LjMxLTIuMjA0IDIuOTI5LTIuOTI5IDIuOTE1LTcuNjkyLS4wMTQtMTAuNjIxLTIuOTMtMi45MjctNy42NzgtMi45MjctMTAuNjA3LjAwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMwNy45NTcgNDY0LjQ3OWMtMi45MjkgMi45MjktMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjEgMy4zNzEgMi4xOSA1LjI4MyAyLjE5IDEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOC03LjY3OC0yLjkyOC0xMC42MDcuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjIyMiA0ODEuMTAyYzEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOS03LjY3OC0yLjkyOS0xMC42MDcgMHMtMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjIgMy4zNzEgMi4xOTEgNS4yODMgMi4xOTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NzAuNzg0IDQwOS4zODVjMjIuNzEzLTIuMjc4IDQxLjE5MS0yMi43OTIgNDEuMTkxLTQ1LjcyOXYtMjguNzQzYzAtMy43MDktMS41NDktNy4yMzQtNC4yNDgtOS42NzEtMi42OTItMi40MzEtNi4zNTItMy42MDktMTAuMDEtMy4yMzNsLTI4LjgxIDIuODkyYy05LjkyMyAxLjAxLTE5LjAzNyA1LjUwMi0yNi4xNTEgMTIuMTUybC4wNjMtNS4xNTRjMC0yMi45MDMtMTguMzM3LTQzLjI2Ni00MS4wNTQtNDUuNTc4bC0yOC43ODMtMi44OWMtMy42ODctLjM3OS03LjMzNC44MDItMTAuMDI1IDMuMjMyLTIuNjk5IDIuNDM4LTQuMjQ4IDUuOTYyLTQuMjQ4IDkuNjcxdjI4Ljc0M2MwIDIyLjkwMyAxOC40NzMgNDMuNDE3IDQxLjE4NSA0NS43MjlsMjcuODYzIDIuODE0djUzLjk5NmgtNTQuNTE5Yy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDExOS4zMDRjMi40NDQgMCA0LjQzNCAxLjk3NiA0LjQzNCA0LjQwNXY0NS41MjNjMCAyLjQwMy0yLjAzIDQuNDM0LTQuNDM0IDQuNDM0aC00NzMuMTM0Yy0yLjM4OCAwLTQuNDA1LTIuMDMtNC40MDUtNC40MzR2LTQ1LjUyM2MwLTIuMzg4IDIuMDE4LTQuNDA1IDQuNDA1LTQuNDA1aDMxOS4xOTJjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTc1LjEyNnYtMTUuMzk3bDI4LjA1Ny0yLjgzM2MyMi43MTMtMi4yNzggNDEuMTktMjIuNzkyIDQxLjE5LTQ1LjcyOXYtMjguNzQzYzAtMy43MDUtMS41NTItNy4yMjktNC4yNTctOS42NjktMi43LTIuNDM1LTYuMzU5LTMuNjEyLTEwLjAwMS0zLjIzNWwtMjguODEgMi44OTJjLTkuOTM0IDEuMDExLTE5LjA1OCA1LjUwNy0yNi4xOCAxMi4xNjMgMCAwIC4xOTktNC40MjkuMTk5LTUuMDEzIDAtMjIuOTA3LTE4LjQ3NC00My40Mi00MS4xOS00NS43MjlsLTI4Ljc3Ni0yLjg5Yy0zLjY2Ni0uMzc1LTcuMzA4Ljc5Ni05Ljk5NyAzLjIyMi0yLjcwNCAyLjQzOS00LjI1NSA1Ljk2Ny00LjI1NSA5LjY4MXYyOC43NDNjMCAyMi45MDMgMTguNDc0IDQzLjQxNyA0MS4xODYgNDUuNzI5bDI3LjgzNCAyLjgxM3Y1My45OTZoLTE2NC4yNTN2LTE1LjM5OGwyOC4wMjYtMi44MzJjMjIuNzEzLTIuMjc0IDQxLjE5MS0yMi43ODkgNDEuMTkxLTQ1LjcyOXYtMjguNzQzYzAtMy43MTMtMS41NTEtNy4yNDItNC4yNTUtOS42ODEtMi42ODktMi40MjYtNi4zMzMtMy42MDQtOS45NzUtMy4yMjRsLTI4LjgxIDIuODkyYy05LjkzNCAxLjAxMS0xOS4wNTggNS41MDctMjYuMTc5IDEyLjE2MiAwIDAgLjE5OC00LjQzLjE5OC01LjAxMiAwLTIyLjkwMy0xOC40NzQtNDMuNDE3LTQxLjE5LTQ1LjcyOWwtMjguNzc2LTIuODljLTMuNjYtLjM3NC03LjMwNi43OTUtOS45OTcgMy4yMjItMi43MDQgMi40MzktNC4yNTUgNS45NjgtNC4yNTUgOS42ODF2MjguNzQzYzAgMjIuOTAzIDE4LjQ3NCA0My40MTcgNDEuMTg2IDQ1LjcyOWwyNy44MzUgMi44MTN2MzEuNzk1IDIyLjIwMWgtNDkuODEyYy0xMC43IDAtMTkuNDA1IDguNzA1LTE5LjQwNSAxOS40MDV2NDUuNTIzYzAgMTAuNzE2IDguNzA1IDE5LjQzNCAxOS40MDUgMTkuNDM0aDQ3My4xMzRjMTAuNzE2IDAgMTkuNDM0LTguNzE4IDE5LjQzNC0xOS40MzR2LTQ1LjUyM2MwLTEwLjctOC43MTgtMTkuNDA1LTE5LjQzNC0xOS40MDVoLTQ5Ljc4NXYtMTUuMzk4em0tMjguMDI4LTM4Ljc1NmMwLTE1LjE3MSAxMi42NzItMjkuMjc5IDI3LjY2LTMwLjgwNWwyNi41NTktMi42NjZ2MjYuNDk4YzAgMTUuMTkyLTEyLjY4IDI5LjI5OS0yNy42OTMgMzAuODA1bC0xNS40MTUgMS41NTggMTkuMDY5LTIxLjA5N2MyLjc3Ny0zLjA3MyAyLjUzNy03LjgxNi0uNTM1LTEwLjU5My0zLjA3Mi0yLjc3NS03LjgxNC0yLjUzOS0xMC41OTQuNTM1bC0xOS4wNTEgMjEuMDc3em0tMTUtMjMuNDU3LTE4Ljg4LTIwLjg4OGMtMi43NzktMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTItLjUzNSAxMC41OTNsMTkuMDY3IDIxLjA5Ni0xNS40MDgtMS41NTZjLTE1LjAxNC0xLjUyOC0yNy42OTgtMTUuNjM1LTI3LjY5OC0zMC44MDV2LTI2LjQ5N2wyNi41NDggMi42NjZjMTUuMDE1IDEuNTI4IDI3LjUgMTUuNjM1IDI3LjUgMzAuODA1em0tMTY0LjI4MiAyMy40NTdjMC0xNS4xNyAxMi42ODUtMjkuMjc3IDI3LjY4OC0zMC44MDVsMjYuNTU5LTIuNjY2djI2LjQ5OGMwIDE1LjE5Mi0xMi42NzkgMjkuMjk5LTI3LjY5MiAzMC44MDVsLTE1LjQxNCAxLjU1NyAxOS4wNjgtMjEuMDk2YzIuNzc3LTMuMDczIDIuNTM3LTcuODE2LS41MzUtMTAuNTkzLTMuMDcyLTIuNzc1LTcuODE0LTIuNTM5LTEwLjU5NC41MzVsLTE5LjA3OSAyMS4xMDh2LTE1LjM0M3ptLTQ0Ljk4LTM0LjI4NiAxOS4wNjkgMjEuMDk3LTE1LjQwOS0xLjU1N2MtMTUuMDE1LTEuNTI4LTI3LjY5OS0xNS42MzUtMjcuNjk5LTMwLjgwNXYtMjYuNDk1bDI2LjUyMSAyLjY2M2MxNS4wMTUgMS41MjYgMjcuNDk5IDE1LjYzMyAyNy40OTkgMzAuODA1djE1LjA5MWwtMTguODUyLTIwLjg1N2MtMi43NzgtMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTItLjUzNSAxMC41OTN6bS0xMzQuMjczIDM0LjI4NmMwLTE1LjE3IDEyLjY4NS0yOS4yNzcgMjcuNjg4LTMwLjgwNWwyNi41My0yLjY2M3YyNi40OTVjMCAxNS4xOTUtMTIuNjc5IDI5LjMwMS0yNy42OTIgMzAuODA1bC0xNS40MDUgMS41NTcgMTkuMDgzLTIxLjA5NGMyLjc3OS0zLjA3MiAyLjU0Mi03LjgxNC0uNTMtMTAuNTkzLTMuMDY4LTIuNzc4LTcuODEzLTIuNTQyLTEwLjU5My41M2wtMTkuMDgxIDIxLjA5MXptLTQ0Ljk4MS0zNC4yODYgMTkuMDY5IDIxLjA5Ny0xNS40MDktMS41NThjLTE1LjAxNS0xLjUyOC0yNy42OTktMTUuNjM1LTI3LjY5OS0zMC44MDV2LTI2LjQ5NWwyNi41MiAyLjY2M2MxNS4wMTUgMS41MjggMjcuNTAxIDE1LjYzNSAyNy41MDEgMzAuODA1djE1LjA5MmwtMTguODUzLTIwLjg1OGMtMi43NzktMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTIxLS41MzUgMTAuNTk0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",tSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTI2LjYyMiAxNTEuNzQxaDEwLjh2MzUuNjgxYzAgMTEuMTI1IDkuMDUxIDIwLjE3NSAyMC4xNzUgMjAuMTc1aDE0LjgxNGM0Ljc5OSAwIDkuMjA4LTEuNjkxIDEyLjY3NS00LjUgMy40NjcgMi44MDkgNy44NzUgNC41IDEyLjY3NSA0LjVoMTQuODE0YzExLjEyNCAwIDIwLjE3NS05LjA1IDIwLjE3NS0yMC4xNzV2LTM5Ljk0aDIwLjEzOXYxODUuMTE1aC0yMy40NTdjLTEwLjkzOCAwLTE5LjgzNyA4Ljg5OC0xOS44MzcgMTkuODM2djM3LjMyNGMwIDkuOTY4IDcuMzk4IDE4LjIxOSAxNi45ODggMTkuNjA4djg3LjU3NmMwIDguMzA0IDYuNzU1IDE1LjA1OSAxNS4wNTkgMTUuMDU5aDMwLjMzNWM4LjMwNCAwIDE1LjA1OS02Ljc1NSAxNS4wNTktMTUuMDU5di01My44NDRoNTEuNDY0YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41Yy05Ljc2NSAwLTg1Ljc4NSAwLTk2LjkxNyAwdi0xOC41MDNoMjI4LjgzNHYxOC41MDNjLTExLjEzNyAwLTg3LjIxNyAwLTk2LjkxNyAwLTQuMTQzIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTcgNy41IDcuNSA3LjVoNTEuNDY1djUzLjg0NGMwIDguMzA0IDYuNzU1IDE1LjA1OSAxNS4wNTkgMTUuMDU5aDMwLjMzNGM4LjMwNCAwIDE1LjA2LTYuNzU1IDE1LjA2LTE1LjA1OSAwLTEwLjE1NCAwLTc3LjAzNiAwLTg3LjU3NiA5LjU5LTEuMzg5IDE2Ljk4OC05LjY0IDE2Ljk4OC0xOS42MDh2LTM3LjMyNGMwLTEwLjkzOC04Ljg5OC0xOS44MzYtMTkuODM3LTE5LjgzNmgtMjMuNDU3di03NS4wNThjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NzUuMDU4aC0yNS4xNjRjMC0yMS43MTMgMC0xNjIuOTEyIDAtMTg1LjExNWgyNS4xNjR2NzUuMDU4YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTc1LjA1OGgyMC4xMzl2MzkuOTRjMCAxMS4xMjUgOS4wNTEgMjAuMTc1IDIwLjE3NSAyMC4xNzVoMTQuODE0YzQuNzk5IDAgOS4yMDgtMS42OTEgMTIuNjc1LTQuNSAzLjQ2NyAyLjgwOSA3Ljg3NSA0LjUgMTIuNjc0IDQuNWgxNC44MTVjMTEuMTI0IDAgMjAuMTc1LTkuMDUgMjAuMTc1LTIwLjE3NXYtMzUuNjgxaDEwLjhjMTEuMTI0IDAgMjAuMTc1LTkuMDUgMjAuMTc1LTIwLjE3NXYtMTQuODE0YzAtMTEuMTI1LTkuMDUxLTIwLjE3NS0yMC4xNzUtMjAuMTc1aC0xMC44di0zNS42ODFjMC0xMS4xMjQtOS4wNTEtMjAuMTc0LTIwLjE3NS0yMC4xNzRoLTE0LjgxNWMtNC43OTkgMC05LjIwNyAxLjY5MS0xMi42NzQgNC41LTMuNDY3LTIuODA5LTcuODc1LTQuNS0xMi42NzUtNC41aC0xNC44MTRjLTExLjEyNCAwLTIwLjE3NSA5LjA1LTIwLjE3NSAyMC4xNzR2MzkuOTQxaC0yMC4xMzl2LTgwLjY2M2MtLjAwMS0xMS4xMjQtOS4wNTEtMjAuMTc0LTIwLjE3NS0yMC4xNzRoLTE0LjgxNGMtMTEuMTI0IDAtMjAuMTc1IDkuMDUtMjAuMTc1IDIwLjE3NHY1MC41MzRoLTk1Ljg5NnYtNTAuNTM0YzAtMTEuMTI0LTkuMDUtMjAuMTc0LTIwLjE3NC0yMC4xNzRoLTE0LjgxNWMtMTEuMTI0IDAtMjAuMTc0IDkuMDUtMjAuMTc0IDIwLjE3NHY4MC42NjNoLTIwLjEzOXYtMzkuOTQxYzAtMTEuMTI0LTkuMDUxLTIwLjE3NC0yMC4xNzUtMjAuMTc0aC0xNC44MTRjLTQuNzk5IDAtOS4yMDggMS42OTEtMTIuNjc1IDQuNS0zLjQ2Ny0yLjgwOS03Ljg3NS00LjUtMTIuNjc1LTQuNWgtMTQuODE0Yy0xMS4xMjQgMC0yMC4xNzUgOS4wNS0yMC4xNzUgMjAuMTc0djM1LjY4MWgtMTAuOGMtMTEuMTI0IDAtMjAuMTc1IDkuMDUtMjAuMTc1IDIwLjE3NXYxNC44MTRjMCAxMS4xMjUgOS4wNTEgMjAuMTc1IDIwLjE3NSAyMC4xNzV6bTE0MS4yNjctNC4yNmgyNS4xNjN2MTg1LjExNWgtMjUuMTYzem00MC4xNjMgNjguNzEyaDk1Ljg5NnY3Ni45MDFoLTk1Ljg5NnptOTUuODk1LTE1aC05NS44OTZ2LTIzLjU4M2g5NS44OTZ6bS0xMzEuOTE5IDI0MS45MDQtLjA1MSA1My45MDMtMzAuMzkzLS4wMzljMC0uMDAxLS4wMDEtLjAwOC0uMDAxLS4wMnYtNTMuODQ0em0xOTguMzI5IDUzLjkwMy0zMC4zOTMtLjA1OXYtNTMuODQ0aDMwLjQ0NXptMTIuMjExLTE0OS40MDNjMi42NjcgMCA0LjgzNyAyLjE2OSA0LjgzNyA0LjgzNnYzNy4zMjRjMCAyLjY2Ny0yLjE3IDQuODM2LTQuODM3IDQuODM2LTEzLjIwMiAwLTI0MS4yNTYgMC0yNTMuMTM3IDAtMi42NjcgMC00LjgzNy0yLjE2OS00LjgzNy00LjgzNnYtMzcuMzI0YzAtMi42NjcgMi4xNy00LjgzNiA0LjgzNy00LjgzNnptLTE3NC41MTYtMTV2LTI0LjUwM2g5NS44OTZ2MjQuNTAzem05NS44OTUtMTY5Ljk4N2gtOTUuODk2di0xNS4xMjhoOTUuODk2em0tMTE1Ljk3Ny0zMC4xMjl2LTE2LjY0NWgxMzYuMDZ2MTYuNjQ1Yy00LjY1MyAwLTEzMC40MTEgMC0xMzYuMDYgMHptMjk3LjQwOC0yMC45MDRjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc1djE0LjgxNGMwIDIuODA1LTIuMzcgNS4xNzUtNS4xNzUgNS4xNzVoLTEwLjh2LTI1LjE2NHptLTQ1Ljc5LTU1Ljg1NWgxNC44MTVjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc0djEyNi41MjZjMCAyLjgwNS0yLjM3IDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTVjLTIuODA1IDAtNS4xNzQtMi4zNy01LjE3NC01LjE3NXYtMTI2LjUyNmMwLTIuODA1IDIuMzY5LTUuMTc0IDUuMTc0LTUuMTc0em0tNDUuMzM4IDUuMTc0YzAtMi44MDUgMi4zNy01LjE3NCA1LjE3NS01LjE3NGgxNC44MTRjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc0djEyNi41MjZjMCAyLjgwNS0yLjM3IDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODU0IDAtNS4xNzUtMi4zMjEtNS4xNzUtNS4xNzUgMC0yLjkwNCAwLTEyMi42MDIgMC0xMjYuNTI2em0tMTUgNzEuNTg1Yy0xMy40NjMgMC0yNS4xODYgMC00MC4yMjEgMHYtMTYuNjQ1aDQwLjIyMXptLTYwLjMwMy0xMTIuMzA3YzAtMi44MDUgMi4zNy01LjE3NCA1LjE3NS01LjE3NGgxNC44MTRjMi44NTQgMCA1LjE3NSAyLjMyMSA1LjE3NSA1LjE3NHY4MC42NjNjLTkuMTA2IDAtMTYuMDU4IDAtMjUuMTY0IDAgMC05LjM3MyAwLTcwLjg4NSAwLTgwLjY2M3ptLTE1IDY1LjUzNHYxNS4xMjhoLTk1Ljg5NnYtMTUuMTI4em0tMTM2LjA1OC02NS41MzRjMC0yLjgwNSAyLjM2OS01LjE3NCA1LjE3NC01LjE3NGgxNC44MTVjMi44MDUgMCA1LjE3NCAyLjM3IDUuMTc0IDUuMTc0djgwLjY2M2MtOS4xMDQgMC0xNi4wMzkgMC0yNS4xNjMgMHptNS4wODEgOTUuNjYzdjE2LjY0NWMtMTUuMjczIDAtMjYuNDYgMC00MC4yMiAwdi0xNi42NDV6bS03NS4yMDktNjAuMTE1aDE0LjgxNGMyLjgwNSAwIDUuMTc1IDIuMzcgNS4xNzUgNS4xNzR2MTI2LjUyNmMwIDIuODU0LTIuMzIxIDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODA1IDAtNS4xNzUtMi4zNy01LjE3NS01LjE3NXYtMTI2LjUyNmMwLTIuODA1IDIuMzctNS4xNzQgNS4xNzUtNS4xNzR6bS00NS4zMzkgNS4xNzRjMC0yLjgwNSAyLjM3LTUuMTc0IDUuMTc1LTUuMTc0aDE0LjgxNGMyLjgwNSAwIDUuMTc1IDIuMzcgNS4xNzUgNS4xNzR2MTI2LjUyNmMwIDIuODU0LTIuMzIxIDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODU0IDAtNS4xNzUtMi4zMjEtNS4xNzUtNS4xNzUgMC01LjY3OSAwLTEyMC44MjcgMC0xMjYuNTI2em0tMzAuOTc1IDU1Ljg1NmMwLTIuODU0IDIuMzIxLTUuMTc1IDUuMTc1LTUuMTc1aDEwLjh2MjUuMTY0aC0xMC44Yy0yLjg1NCAwLTUuMTc1LTIuMzIxLTUuMTc1LTUuMTc1eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",sSe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIsMjgwaC0xNlYxNjYuNGMwLTEyLTkuNi0yMi40LTIyLjQtMjIuNGgtNGMtMTIsMC0yMi40LDkuNi0yMi40LDIyLjRWMjgwaC0yNHYtMTZjMC0xMy42LTEwLjQtMjQtMjQtMjRIMTIwDQoJCQljLTEzLjYsMC0yNCwxMC40LTI0LDI0djE2SDcyVjE2Ni40YzAtMTItOS42LTIyLjQtMjIuNC0yMi40aC0zLjJjLTEyLjgsMC0yMi40LDkuNi0yMi40LDIyLjRWMjgwSDhjLTQuOCwwLTgsMy4yLTgsOHMzLjIsOCw4LDhoOA0KCQkJdjE0NGMwLDQuOCwzLjIsOCw4LDhoOHY4YzAsNC44LDMuMiw4LDgsOHM4LTMuMiw4LTh2LThoMzg0djhjMCw0LjgsMy4yLDgsOCw4czgtMy4yLDgtOHYtOGg4YzQuOCwwLDgtMy4yLDgtOFYyOTZoOA0KCQkJYzQuOCwwLDgtMy4yLDgtOFM0NzYuOCwyODAsNDcyLDI4MHogTTQzMC40LDE2MGg0YzMuMiwwLDYuNCwyLjQsNi40LDYuNFYyODBoLTE2VjE2Ni40SDQyNEM0MjQsMTYzLjIsNDI2LjQsMTYwLDQzMC40LDE2MHoNCgkJCSBNMTEyLDI2NGMwLTQuOCwzLjItOCw4LThoMjQwYzQuOCwwLDgsMy4yLDgsOHYxNkgxMTJWMjY0eiBNNDAsMTY2LjRjMC00LDIuNC02LjQsNi40LTYuNGg0YzMuMiwwLDUuNiwyLjQsNS42LDYuNFYyODBINDBWMTY2LjR6DQoJCQkgTTIzMiw0MzJIMzJ2LTY0aDIwMFY0MzJ6IE00NDgsNDMySDI0OHYtNjRoMjAwVjQzMnogTTQ0OCwzNTJIMzJ2LTU2aDQxNlYzNTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMDgsMzg0Yy00LjgsMC04LDMuMi04LDh2MTZjMCw0LjgsMy4yLDgsOCw4czgtMy4yLDgtOHYtMTZDMjE2LDM4Ny4yLDIxMi44LDM4NCwyMDgsMzg0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjcyLDM4NGMtNC44LDAtOCwzLjItOCw4djE2YzAsNC44LDMuMiw4LDgsOHM4LTMuMiw4LTh2LTE2QzI4MCwzODcuMiwyNzYuOCwzODQsMjcyLDM4NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM4NCwxNkg5NmMtNC44LDAtOCwzLjItOCw4djE2MGMwLDQuOCwzLjIsOCw4LDhoMjg4YzQuOCwwLDgtMy4yLDgtOFYyNEMzOTIsMTkuMiwzODguOCwxNiwzODQsMTZ6IE0zNzYsMTc2SDEwNFYzMmgyNzINCgkJCVYxNzZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTIsMTQ0aC04Yy00LjgsMC04LDMuMi04LDhzMy4yLDgsOCw4aDhjNC44LDAsOC0zLjIsOC04UzM1Ni44LDE0NCwzNTIsMTQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTU3LjYsNTAuNGMtMy4yLTMuMi04LTMuMi0xMS4yLDBsLTI0LDI0Yy0zLjIsMy4yLTMuMiw4LDAsMTEuMmMzLjIsMy4yLDgsMy4yLDExLjIsMGwyNC0yNA0KCQkJQzE2MC44LDU4LjQsMTYwLjgsNTMuNiwxNTcuNiw1MC40eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTk3LjYsNTAuNGMtMy4yLTMuMi04LTMuMi0xMS4yLDBsLTU2LDU2Yy0zLjIsMy4yLTMuMiw4LDAsMTEuMmMzLjIsMy4yLDgsMy4yLDExLjIsMGw1Ni01Ng0KCQkJQzIwMC44LDU4LjQsMjAwLjgsNTMuNiwxOTcuNiw1MC40eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",iSe="PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgd2lkdGg9IjQ4MHB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00NzIgOTZoLTE0NGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHYxODRoLTE3NnYtMjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMjR2MTZoMTZ2MTZoLTMydi0zMmgtMTZ2MzJoLTMydi0xNmgxNnYtMTZoLTI0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djI0aC0yNGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHYxNzZjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg0NjRjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMzY4YzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS0xMzYgMTZoMTI4djk2aC0xMjh6bS0xNiAyMjRoLTE0NHYtMzJoMTQ0em0tMzA0LTMyaDE0NHYzMmgtMTQ0em0wIDQ4aDE0NHYxMTJoLTE0NHptMTYwIDBoNjR2MTEyaC02NHptODAgMGg2NHYxMTJoLTY0em04MCAxMTJ2LTI0MGgxMjh2MjQwem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1MiAxNDRoMTZ2MzJoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1MiAyNTZoMTZ2MzJoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDMyMGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04MCAzMjBjMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHMtOC0zLjU4MjAzMS04LTggMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTEyIDMyMGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDQgMzIwYzAgNC40MTc5NjktMy41ODIwMzEgOC04IDhzLTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04IDggMy41ODIwMzEgOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTggMTUyaDE2MGM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0yNGMwLTIuMTIxMDk0LS44NDM3NS00LjE1NjI1LTIuMzQzNzUtNS42NTYyNWwtMzItMzJjLTEuNS0xLjUtMy41MzUxNTYtMi4zNDM3NS01LjY1NjI1LTIuMzQzNzVoLTh2LTcyYzAtNC40MTc5NjktMy41ODIwMzEtOC04LThoLTY0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djcyaC04Yy0yLjEyMTA5NCAwLTQuMTU2MjUuODQzNzUtNS42NTYyNSAyLjM0Mzc1bC0zMiAzMmMtMS41IDEuNS0yLjM0Mzc1IDMuNTM1MTU2LTIuMzQzNzUgNS42NTYyNXYyNGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4em01Ni0xMzZoNDh2NjRoLTQ4em0tNDggMTA3LjMxMjUgMjcuMzEyNS0yNy4zMTI1aDg5LjM3NWwyNy4zMTI1IDI3LjMxMjV2MTIuNjg3NWgtMTQ0em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzNiAzNjhoLTk2Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djY0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoOTZjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOHptLTggNjRoLTgwdi00OGg4MHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzIgMzEyaDMydjE2aC0zMnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDggMzkyaDE2djMyaC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNzIgMzkyaDE2djMyaC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTIgMjAwaDQ4YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LThjLS4wNTQ2ODgtMTQuNTQ2ODc1LTkuOTE0MDYyLTI3LjIyNjU2Mi0yNC0zMC44NjMyODF2LTE1My4xMzY3MTloLTE2djE1My4xMzY3MTljLTE0LjA4NTkzOCAzLjYzNjcxOS0yMy45NDUzMTIgMTYuMzE2NDA2LTI0IDMwLjg2MzI4MXY4YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDh6bTI0LTMyYzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZoLTMyYzAtOC44MzU5MzggNy4xNjQwNjItMTYgMTYtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQ4IDEzNmg0OGM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di04Yy0uMDU0Njg4LTE0LjU0Njg3NS05LjkxNDA2Mi0yNy4yMjY1NjItMjQtMzAuODYzMjgxdi04OS4xMzY3MTloLTE2djg5LjEzNjcxOWMtMTQuMDg1OTM4IDMuNjM2NzE5LTIzLjk0NTMxMiAxNi4zMTY0MDYtMjQgMzAuODYzMjgxdjhjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOHptMjQtMzJjOC44MzU5MzggMCAxNiA3LjE2NDA2MiAxNiAxNmgtMzJjMC04LjgzNTkzOCA3LjE2NDA2Mi0xNiAxNi0xNnptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",rSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUxMC40MTcgMjMzLjIyNS01OC42NDQtMTE3LjI3OWMtMTUuOTM5LTMxLjg3Ny00Ny45NzgtNTEuNjgtODMuNjItNTEuNjgtOC41ODYgMC0xNi45ODQgMS4xODgtMjUuMDMyIDMuNDM3LjEwNS0xLjQ4OS4xNzgtMi45ODguMTc4LTQuNTAzIDAtMzQuODQ5LTI4LjM1MS02My4yLTYzLjItNjMuMnMtNjMuMiAyOC4zNTItNjMuMiA2My4yYzAgMzAuOTkzIDIyLjQzMiA1Ni44MjggNTEuOTA5IDYyLjE2OWwtNjEuMzY2IDYxLjQ3Yy02Ljg3NSA2Ljg4Ni0yMS44NzEgMjcuODItMTAuMzMzIDU0LjQ2LTEuNzA1LS4xOTEtMy40MjEtLjI5OS01LjE0NC0uMjk5LTIzLjA4NyAwLTQyLjMzNiAxNi42OS00Ni4zNTEgMzguNjM1LTcuNzQtNC4xNDQtMTYuNTczLTYuNTAxLTI1Ljk0OS02LjUwMS0zMC40MTkgMC01NS4xNjcgMjQuNzQ4LTU1LjE2NyA1NS4xNjcgMCA5LjA2MyAyLjIxMSAxNy42MTUgNi4xIDI1LjE2N2gtNDAuNTk4di0zMzguNDY4YzAtOC4yODQtNi43MTYtMTUtMTUtMTVzLTE1IDYuNzE2LTE1IDE1djQ4MmMwIDguMjg0IDYuNzE2IDE1IDE1IDE1czE1LTYuNzE2IDE1LTE1di00OS4yNjdoMzA2LjU2M2M4LjI4NCAwIDE1LTYuNzE2IDE1LTE1di02NC4yNjdjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtMzYuNDEyYzMuMjc0LTguMzk1IDMuMjE0LTE1LjI2MyAzLjIxNC0xOC4yIDI4LjQ2OSAwIDQ4LjItMjIuMDk4IDQ4LjItNDcuMTMzIDAtMjUuOTg5LTIxLjE0NC00Ny4xMzMtNDcuMTMzLTQ3LjEzM2gtMTIuMzA0bDU1LjkwNC01Ni4wODYgNTMuNzM2IDEwNi43NzctLjEwMyAyMDUuMzAxYy0uMDAyIDMuOTc5IDEuNTc4IDcuNzk2IDQuMzkxIDEwLjYxMSAyLjgxMyAyLjgxNCA2LjYzIDQuMzk2IDEwLjYwOSA0LjM5Nmg4MC4zMzVjOC4yODQgMCAxNS02LjcxNiAxNS0xNXYtMjU3LjA2NmMwLTIuMzI5LS41NDItNC42MjUtMS41ODMtNi43MDh6bS0yNjMuNTE3LTE3MC4wMjVjMC0xOC4zMDcgMTQuODk0LTMzLjIgMzMuMi0zMy4yczMzLjIgMTQuODk0IDMzLjIgMzMuMi0xNC44OTQgMzMuMi0zMy4yIDMzLjJjLTE4LjMwNyAwLTMzLjItMTQuODkzLTMzLjItMzMuMnptLTEyNy4yMzMgMjM5LjkzM2MxMy44NzcgMCAyNS4xNjcgMTEuMjkgMjUuMTY3IDI1LjE2N3MtMTEuMjkgMjUuMTY3LTI1LjE2NyAyNS4xNjctMjUuMTY3LTExLjI5LTI1LjE2Ny0yNS4xNjcgMTEuMjktMjUuMTY3IDI1LjE2Ny0yNS4xNjd6bTIwMS44OTYgODAuMzM0djM0LjI2N2gtMjkxLjU2M3YtMzQuMjY3em0tMTcuMTMtMTEyLjQ2N2M5LjQ0NyAwIDE3LjEzMyA3LjY4NiAxNy4xMzMgMTcuMTMzIDAgOS41ODMtNy44MTQgMTcuMTMzLTE3LjEzMyAxNy4xMzNoLTE2LjA2N2MtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXYxNi4wNjdjMCA5LjU4My03LjgxNCAxNy4xMzMtMTcuMTMzIDE3LjEzM2gtNjQuMjY3Yy05LjQ0NyAwLTE3LjEzMy03LjY4Ni0xNy4xMzMtMTcuMTMzdi00OC4yYzAtOS40NDcgNy42ODYtMTcuMTMzIDE3LjEzMy0xNy4xMzMgOS4yOTcgMCAxNy4xMzMgNy41MjYgMTcuMTMzIDE3LjEzM3YxNi4wNjdjMCA4LjI4NCA2LjcxNiAxNSAxNSAxNXMxNS02LjcxNiAxNS0xNXYtMTYuMDY3YzAtOS40MjkgNy42MTYtMTcuMTMzIDE3LjEzMy0xNy4xMzN6bTE3Ny41NjcgMjExaC01MC4zMjZsLjA5Ny0xOTMuODU5Yy4wMDEtMi4zNDQtLjU0Ny00LjY1Ni0xLjYwMS02Ljc1bC02NC42ODUtMTI4LjUzM2MtMi4xNjctNC4zMDUtNi4yNjktNy4zMDYtMTEuMDI3LTguMDY4LTQuNzYxLS43NjItOS41OTQuODEtMTIuOTk1IDQuMjIybC04Ni40NTggODYuNzM5Yy03LjI2MyA3LjI5MS0xOS4xMTUgNi44MDctMjYuMzA4LS4zODYtNy4zODEtNy4zODEtNy43MjgtMTkuNjExLS4wMjItMjcuMzI5bDk1LjI3LTk1LjQzMWMxMS43OTktMTEuODI1IDI3LjUtMTguMzM3IDQ0LjIxNy0xOC4zMzcgMjQuMTk5IDAgNDUuOTU1IDEzLjQ0OCA1Ni43NzkgMzUuMDk3bDU3LjA1OSAxMTQuMTA5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",oSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNOTIuNTQ1LDE4NS4wOWM1MS4wMjksMCw5Mi41NDUtNDEuNTE2LDkyLjU0NS05Mi41NDVTMTQzLjU3NCwwLDkyLjU0NSwwUzAsNDEuNTE2LDAsOTIuNTQ1ICAgIFM0MS41MTYsMTg1LjA5LDkyLjU0NSwxODUuMDl6IE05Mi41NDUsMjBjNDAuMDAxLDAsNzIuNTQ1LDMyLjU0NCw3Mi41NDUsNzIuNTQ1cy0zMi41NDQsNzIuNTQ1LTcyLjU0NSw3Mi41NDUgICAgUzIwLDEzMi41NDYsMjAsOTIuNTQ1UzUyLjU0NCwyMCw5Mi41NDUsMjB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDAuNTAxLDExNC41MjZjMS45NTIsMS45NDUsNC41MDYsMi45MTcsNy4wNiwyLjkxN2MyLjU2NCwwLDUuMTMtMC45OCw3LjA4My0yLjk0ICAgIGMzLjg5OC0zLjkxMiwzLjg4OC0xMC4yNDQtMC4wMjMtMTQuMTQzbC0xMi4wMDgtMTEuOTY4VjQ0YzAtNS41MjItNC40NzgtMTAtMTAtMTBzLTEwLDQuNDc4LTEwLDEwdjQ4LjU0NSAgICBjMCwyLjY1OCwxLjA1OSw1LjIwNywyLjk0LDcuMDgzTDEwMC41MDEsMTE0LjUyNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMiwzMzJoLTYxLjU0N2MtOC40Ni0xMi4wMzQtMjEuMTcyLTIwLjU1OC0zNS42NzEtMjMuNzI4bC00My45NjQtOS42MTMgICAgYzE3Ljk5MS0xMi4xMzQsMjkuODQ3LTMyLjcwMiwyOS44NDctNTUuOTg4di0yNC40MTd2LTExLjI5N3YtMi41NDJjMC0zNy4yMTItMzAuMjc0LTY3LjQ4Ni02Ny40ODYtNjcuNDg2ICAgIHMtNjcuNDg2LDMwLjI3NC02Ny40ODYsNjcuNDg2djIuNTQydjExLjI5N3YyNC40MTdjMCwyMy4yNTYsMTEuODI1LDQzLjgwMywyOS43NzgsNTUuOTQzbC00My45MzYsOS42MzkgICAgYy0xLjg3NywwLjQxMi0zLjcyMiwwLjkxNy01LjUzNSwxLjUwMlYyMjdjMC01LjUyMi00LjQ3OC0xMC0xMC0xMGgtNjhjLTUuNTIyLDAtMTAsNC40NzgtMTAsMTBzNC40NzgsMTAsMTAsMTBoNTh2MTQwaC02OHYtNTAgICAgYzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMHMtMzAsMTMuNDU4LTMwLDMwdjUwSDIwVjIzN2g1OGM1LjUyMiwwLDEwLTQuNDc4LDEwLTEwcy00LjQ3OC0xMC0xMC0xMEgxMGMtNS41MjIsMC0xMCw0LjQ3OC0xMCwxMHYxNjAgICAgYzAsNS41MjIsNC40NzgsMTAsMTAsMTBoNzh2MTloLTFjLTE3LjA5NCwwLTMxLDEzLjkwNi0zMSwzMXY1SDEwYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjQwYzAsNS41MjIsNC40NzgsMTAsMTAsMTBoNDkyICAgIGM1LjUyMiwwLDEwLTQuNDc4LDEwLTEwdi00MHYtNDB2LTQwdi00MEM1MTIsMzM2LjQ3OCw1MDcuNTIyLDMzMiw1MDIsMzMyeiBNNDQxLjE3OSw0NTJIMzg0di0yMGgxMDh2MjBINDQxLjE3OXogTTQ5Miw0MTJIMzg0ICAgIHYtMjBoMTA4VjQxMnogTTQ5MiwzNzJIMzg0di0yMGg1MC44NzRjMC4wMywwLDAuMDYsMC4wMDYsMC4wODksMC4wMDZjMC4wMzEsMCwwLjA2My0wLjAwNiwwLjA5NC0wLjAwNkg0OTJWMzcyeiBNMjc1LjY5MiwyMDQuNDE2ICAgIGMwLTI2LjE4NCwyMS4zMDMtNDcuNDg2LDQ3LjQ4Ni00Ny40ODZjMjQuOTMzLDAsNDUuNDM5LDE5LjMxNCw0Ny4zNDIsNDMuNzY3bC0yMy4yNDYtMTMuNjU3ICAgIGMtNC4yMTEtMi40NzUtOS41OTMtMS41NDQtMTIuNzMsMi4xOTljLTEwLjEyNiwxMi4wODUtMjQuOTc3LDE5LjAxNy00MC43NDQsMTkuMDE3aC0xOC4xMDd2LTEuMjk3VjIwNC40MTZ6IE0yNzUuNjkyLDIyOC4yNTUgICAgSDI5My44YzE4LjgyNSwwLDM2LjctNy4xNzksNTAuMjA1LTE5Ljk0bDI2LjY2LDE1LjY2M3YxOC42OTRjMCwyNi4xODQtMjEuMzAzLDQ3LjQ4Ni00Ny40ODYsNDcuNDg2cy00Ny40ODYtMjEuMzAzLTQ3LjQ4Ni00Ny40ODYgICAgVjIyOC4yNTV6IE0zMzguODQ0LDMwOC4zMDNsLTE1LjgxNSw0Mi4yOTRsLTE1Ljg0NC00Mi4zN2M1LjEzLDEuMjUyLDEwLjQ4MywxLjkzMSwxNS45OTMsMS45MzEgICAgQzMyOC41NzIsMzEwLjE1OCwzMzMuODEzLDMwOS41MDQsMzM4Ljg0NCwzMDguMzAzeiBNMjI2LDM5N2M1LjUyMiwwLDEwLTQuNDc4LDEwLTEwdi01NS42MjNjMy4wODUtMS42MjYsNi4zNzQtMi44MzIsOS44Mi0zLjU4OCAgICBsNDMuNzQtOS41OTZsMjQuMTAzLDY0LjQ1N2MxLjQ2MSwzLjkwNyw1LjE5NCw2LjQ5Nyw5LjM2Niw2LjQ5N3M3LjkwNS0yLjU5LDkuMzY2LTYuNDk4bDI0LjEwNC02NC40NjFsNDQuMDExLDkuNjIzICAgIGMzLjg2MywwLjg0NCw3LjUyOSwyLjI3NCwxMC45MDIsNC4xODhIMzc0Yy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjQwdjQwdjMwSDIxNS4xNzl2LTU1SDIyNnogTTE5NS4xNzksMzk3djU1SDE4MHYtNSAgICBjMC0xNy4wOTQtMTMuOTA2LTMxLTMxLTMxaC0xdi0xOUgxOTUuMTc5eiBNMTA4LDMyN2MwLTUuNTE0LDQuNDg2LTEwLDEwLTEwczEwLDQuNDg2LDEwLDEwdjg5aC0yMFYzMjd6IE03Niw0NDcgICAgYzAtNi4wNjUsNC45MzUtMTEsMTEtMTFoMTFoNDBoMTFjNi4wNjUsMCwxMSw0LjkzNSwxMSwxMXY1SDc2VjQ0N3ogTTQ5Miw0OTJIMjB2LTIwaDQ3MlY0OTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTAuOTMsMjE5LjkzYy0xLjg2LDEuODYtMi45Myw0LjQ0LTIuOTMsNy4wN3MxLjA2OSw1LjIxLDIuOTMsNy4wNjljMS44NiwxLjg2LDQuNDQsMi45MzEsNy4wNywyLjkzMSAgICBzNS4yMS0xLjA3LDcuMDY5LTIuOTMxQzEyNi45MywyMzIuMjEsMTI4LDIyOS42MywxMjgsMjI3cy0xLjA3LTUuMjEtMi45MzEtNy4wN2MtMS44NTktMS44Ni00LjQzOS0yLjkzLTcuMDY5LTIuOTMgICAgUzExMi43OSwyMTguMDY5LDExMC45MywyMTkuOTN6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",nSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01NSwzNS45MzVjNC40OTMtLjU1NSw4LTQuOCw4LTkuOTM1LDAtNC44ODUtMy41MzUtMTktOS0xOXMtOSwxNC4xMTUtOSwxOWMwLDUuMTM4LDMuNTA3LDkuMzgsOCw5LjkzNVY0Mkg0OS45NDlhOS45NzgsOS45NzgsMCwwLDAtMTQuNDQxLTcuOTIybC0xLjYtMi41MTNMMzIuMzg4LDI3SDM2LjVhMS41LDEuNSwwLDAsMSwwLDNIMzZ2MmguNWEzLjUsMy41LDAsMCwwLDAtN0gzMWExLDEsMCwwLDAtLjk0OCwxLjMxNkwzMS42MTMsMzFIMjBWMjloM2ExLDEsMCwwLDAsMS0xLDUsNSwwLDAsMC0xMCwwLDEsMSwwLDAsMCwxLDFoM3YyLjY3NWwtMS45NjQsMi43YTkuOTkxLDkuOTkxLDAsMSwwLDQuNTEsMTEuNjA2LDMuOTg1LDMuOTg1LDAsMSwwLDYuNDI1LTQuNjM0bDUuNTIxLTguMjgzLDEuMzI5LDIuMDg5QTkuOTk1LDkuOTk1LDAsMSwwLDQ5Ljk0OSw0NEg2M1Y0Mkg1NVpNNDcsMjZjMC01LjA2NywzLjY2MS0xNyw3LTE3czcsMTEuOTMzLDcsMTdjMCw0LjAyMi0yLjYxNCw3LjM1MS02LDcuOTA5VjE4LjUzNWwyLjU1NS0xLjctMS4xMS0xLjY2NC0zLDJBMSwxLDAsMCwwLDUzLDE4djdsLTIuNC0xLjgtMS4yLDEuNkw1MywyNy41djYuNDA5QzQ5LjYxNCwzMy4zNTEsNDcsMzAuMDIyLDQ3LDI2Wk0xOSwyNWEzLjAwNiwzLjAwNiwwLDAsMSwyLjgyOSwySDE2LjE3MUEzLjAwNiwzLjAwNiwwLDAsMSwxOSwyNVptNSwxNWEzLjgzNiwzLjgzNiwwLDAsMC0uNTYuMDU3TDIwLjUsMzNoOS42MzJsLTQuODI1LDcuMjM3QTMuOTY4LDMuOTY4LDAsMCwwLDI0LDQwWk0xMSw1MWE4LDgsMCwxLDEsMy44NTctMTVsLTMuMDExLDQuMTRBMi45NiwyLjk2LDAsMCwwLDExLDQwYTMsMywwLDEsMCwyLjczOCw0LjIxNGw1LjEuMzkyQTguMDE0LDguMDE0LDAsMCwxLDExLDUxWm03Ljk4LTguMzg5LTUuMS0uMzkyYTMuMDA1LDMuMDA1LDAsMCwwLS40MTQtLjkxNmwzLTQuMTI1QTcuOTY5LDcuOTY5LDAsMCwxLDE4Ljk4LDQyLjYxMVpNMTIsNDNhMSwxLDAsMSwxLTEtMUExLDEsMCwwLDEsMTIsNDNabTguODc5LTEuNDcyYTkuOTY4LDkuOTY4LDAsMCwwLTMuMjI4LTUuOTc0bDEuMTExLTEuNTI3LDIuODMyLDYuOEE0LjAzMiw0LjAzMiwwLDAsMCwyMC44NzksNDEuNTI4Wk0yNCw0NmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNCw0NlptMTYsNWE4LDgsMCwwLDEtNS4xLTE0LjE1NmwyLjc0OCw0LjMxOUEyLjk2NiwyLjk2NiwwLDAsMCwzNyw0M2EzLDMsMCwxLDAsMy0zLDIuOTYzLDIuOTYzLDAsMCwwLS42NzEuMDgybC0yLjc0MS00LjMwN0E4LDgsMCwxLDEsNDAsNTFabTAtOWExLDEsMCwxLDEtMSwxQTEsMSwwLDAsMSw0MCw0MloiLz4NCiAgICAgICAgPHBhdGggZD0iTTcsMThhNCw0LDAsMCwwLDIuNzg4LTEuMTM5LDUuNjMzLDUuNjMzLDAsMCwwLDMuOTYxLS41NDVBMy45NTQsMy45NTQsMCwwLDAsMTcsMThhNCw0LDAsMSwwLS4wODMtOCw2LDYsMCwwLDAtMTEuOS41MzhBMy45OTIsMy45OTIsMCwwLDAsNywxOFptLS42NTMtNS44NzdhMSwxLDAsMCwwLC42Ny0uOTc3QS42LjYsMCwwLDAsNywxMWE0LDQsMCwwLDEsOC0uMDQxYzAsLjAzMy0uMDE4LjE1Mi0uMDIuMTg1YTEsMSwwLDAsMCwxLjMzOS45ODZBMS45NywxLjk3LDAsMCwxLDE3LDEyYTIsMiwwLDEsMS0xLjksMi41NzMsMSwxLDAsMCwwLTEuNTg5LS40ODcsMy44LDMuOCwwLDAsMS0zLjc1MS42OTMsMSwxLDAsMCwwLTEuMTI5LjM3MiwxLjk5NCwxLjk5NCwwLDEsMS0yLjI4Mi0zLjAyOFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMSIgeT0iNTUiIHdpZHRoPSI2MiIgaGVpZ2h0PSIyIi8+DQogICAgPC9nPg0KPC9zdmc+DQo=",aSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTE2OC45OTIgMjc3LjU5MWMwLTI2LjU1MS0yMS42MDEtNDguMTUxLTQ4LjE1MS00OC4xNTFzLTQ4LjE1MSAyMS42MDEtNDguMTUxIDQ4LjE1MSAyMS42MDEgNDguMTUgNDguMTUxIDQ4LjE1IDQ4LjE1MS0yMS42IDQ4LjE1MS00OC4xNXptLTgxLjMwMyAwYzAtMTguMjc5IDE0Ljg3Mi0zMy4xNTEgMzMuMTUxLTMzLjE1MXMzMy4xNTEgMTQuODcyIDMzLjE1MSAzMy4xNTEtMTQuODcyIDMzLjE1LTMzLjE1MSAzMy4xNS0zMy4xNTEtMTQuODcxLTMzLjE1MS0zMy4xNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ3OS4yNzIgNDYyaC0zNC4wNjJsLTM5LjE1OC0zNi42NjdjLTMuMDIzLTIuODMxLTcuNzctMi42NzUtMTAuNjAxLjM0OXMtMi42NzUgNy43Ny4zNDkgMTAuNjAxbDQxLjMyMSAzOC42OTJjMS4zOSAxLjMwMiAzLjIyMiAyLjAyNSA1LjEyNiAyLjAyNWgzNy4wMjRjOS43NzUgMCAxNy43MjggNy45NTMgMTcuNzI4IDE3LjcyOXYyLjI3MWgtNjAuODQ0Yy0yLjE0OCAwLTQuMjYxLS43MDMtNS45ODEtMS45ODZsLTE4OC40OTItMTc4LjkxNHYtMjQuMTMybDEzMi4yMDcgMTIzLjc5NmMzLjAyMyAyLjgzMSA3Ljc3IDIuNjc1IDEwLjYwMS0uMzQ5czIuNjc1LTcuNzctLjM0OS0xMC42MDFsLTE0Mi40NTktMTMzLjM5NnYtMi40NThjMC04LjI4NC02Ljc0LTE1LjAyNC0xNS4wMjUtMTUuMDI0aC0xMi41NDh2LTQyLjc4NmgxMS40MzhjNi41MzYgMCAxMi4zOC0zLjkwMSAxNC44ODYtOS45MzggMi41MDctNi4wMzcgMS4xNDUtMTIuOTMtMy40NzEtMTcuNTZsLTEwNC43MDYtMTA1LjAzNmMtMS4xNjgtMS4xNzItMi40ODctMi4xMzgtMy45MS0yLjg4OXYtMTAuODY5aDUwLjE0OGM4Ljk1OSAwIDE2LjI0OC03LjI4OSAxNi4yNDgtMTYuMjQ4di0yNS4yMTNjMC04Ljk1OS03LjI4OS0xNi4yNDgtMTYuMjQ4LTE2LjI0OGgtNTAuMTY2Yy0uMTg0LTMuOTc4LTMuNDU4LTcuMTQ5LTcuNDgyLTcuMTQ5LTQuMTQzIDAtNy41IDMuMzU3LTcuNSA3LjV2NjguMjIzYy0xLjQyNy43NTEtMi43NDkgMS43MTktMy45MiAyLjg5NGwtNDAuMDE1IDQwLjE0Yy0yLjkyNSAyLjkzNC0yLjkxNyA3LjY4Mi4wMTcgMTAuNjA2IDIuOTMzIDIuOTIzIDcuNjgxIDIuOTE3IDEwLjYwNi0uMDE3bDQwLjAxNi00MC4xNDFjLjI3MS0uMjcxLjU3OS0uMzI4Ljc5MS0uMzI4LjIxMSAwIC41MjEuMDU3Ljc5Mi4zMjlsMTA0LjcwNSAxMDUuMDM1Yy4xNTcuMTU4LjUyNy41MjkuMjQgMS4yMTktLjI4Ni42ODktLjgwOS42ODktMS4wMzIuNjg5aC0yMDkuNDFjLS4yMjQgMC0uNzQ3IDAtMS4wMzMtLjY4OXMuMDg0LTEuMDYxLjI0MS0xLjIxOWw0My41MjEtNDMuNjU4YzIuOTI1LTIuOTM0IDIuOTE3LTcuNjgzLS4wMTctMTAuNjA2LTIuOTM0LTIuOTI1LTcuNjgzLTIuOTE4LTEwLjYwNi4wMTdsLTQzLjUyMSA0My42NTdjLTQuNjE1IDQuNjMtNS45NzggMTEuNTIyLTMuNDcyIDE3LjU2MSAyLjUwNyA2LjAzNyA4LjM1IDkuOTM4IDE0Ljg4NyA5LjkzOGgxMS40Mzh2NjkuNDQ0YzAgNC4xNDMgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU3IDcuNS03LjV2LTY5LjQ0NGgxNTYuNTM1djEzMi44ODJoLTE1Ni41MzZ2LTMzLjQ1MmMwLTQuMTQzLTMuMzU3LTcuNS03LjUtNy41cy03LjUgMy4zNTctNy41IDcuNXYxODYuNDJoLTIwLjA3M2MtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWg0OTdjNC4xNDMgMCA3LjUtMy4zNTcgNy41LTcuNXYtOS43NzFjMC0xOC4wNDctMTQuNjgyLTMyLjcyOS0zMi43MjgtMzIuNzI5em0tMjk5LjUzLTQzOC42MDN2MjUuMjEzYzAgLjY4OC0uNTYgMS4yNDgtMS4yNDggMS4yNDhoLTUwLjE0OHYtMjcuNzA5aDUwLjE0OGMuNjg5IDAgMS4yNDguNTYgMS4yNDggMS4yNDh6bTE2Ny4xOTYgNDEzLjI5MSA2My41NDEgNjAuMzEyaC02My41NDF6bS0xNSA2MC4zMTJoLTYwLjgxMXYtMTMyLjI3bDYwLjgxMSA1Ny43MnptLTc1LjgxLTE0Ni41MDh2MTQ2LjUwOGgtNDIuMDJ2LTE1Ni45NDJoMTIuNTQ4YzQuOTM5IDAgOS4zMTYtMi40MDYgMTIuMDU2LTYuMDk2em0tMjkuNDQ2LTgxLjUzMi0uMDEyIDU2LjA5N3MtLjAwNC4wMDEtLjAxNC4wMDFoLTEyLjU0OHYtNTYuMTEzem0tMjcuNTc0IDIyOC4wNGgtMzcuMTV2LTEzNy45NjloMzcuMTV6bS0xMDQuMzg0LTYxLjQ4NGg1Mi4yMzR2MjEuNDM2aC01Mi4yMzR6bTUyLjIzNC0xNWgtNTIuMjM0di0yMS40MzZoNTIuMjM0em0tNTIuMjM0IDUxLjQzNWg1Mi4yMzR2MjUuMDQ5aC01Mi4yMzR6bTUyLjIzNC0xMTIuOTJ2MjUuMDQ5aC01Mi4yMzR2LTI1LjA0OXptLTEwNC4zODUgMGgzNy4xNXYxMzcuOTY5aC0zNy4xNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",MSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM2Ny4wNDMgMTcwLjQxNGMtMTAuNTE2LS4zNjUtMjAuMDE2LTUuMDQ3LTI2Ljc0OS0xMy4xODEtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC02LjczMyA4LjEzNS0xNi4yMzMgMTIuODE2LTI2Ljc0OSAxMy4xODItNC4xNC4xNDQtNy4zNzkgMy42MTYtNy4yMzQgNy43NTYuMTQ0IDQuMTQgMy41OTQgNy4zNzEgNy43NTYgNy4yMzUgMTMuNTY2LS40NzIgMjYuMzg2LTYuMzI4IDM1LjY0Ni0xNi4xODcgMjAuMjc2IDIxLjYyOSA1NC41NjkgMjEuNjU3IDc0Ljg3NS4wMDEgMjAuMjc4IDIxLjYyOSA1NC41NzEgMjEuNjU0IDc0Ljg3NC0uMDAxIDkuMjYyIDkuODU5IDIyLjA4IDE1LjcxNSAzNS42NDcgMTYuMTg3IDQuMTIxLjE0OSA3LjYxMy0zLjA5NSA3Ljc1Ni03LjIzNS4xNDUtNC4xNC0zLjA5NC03LjYxMi03LjIzNC03Ljc1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MC4yOTQgMjE4Ljc1N2MtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NiAxNy42MzYtNDEuNDYxIDE3LjYwNy01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTk2IDE3LjYzOS00MS40NjEgMTcuNjA2LTU2LjAzMS0uMDAxLTQuOTA0LTUuOTIyLTEzLjkyNy01LjkzOC0xOC44NDEuMDAxLTcuOTk0IDkuNjU4LTIwLjE4MiAxNC40ODQtMzIuNjEyIDEyLjkxNC00LjEtLjUxOS03Ljg2MSAyLjM4OS04LjM4MiA2LjQ5OS0uNTIxIDQuMTA5IDIuMzkgNy44NjIgNi40OTkgOC4zODIgMTYuNDgxIDIuMDg5IDMyLjY1OC0zLjc5NSA0My45MTYtMTUuODA4IDIwLjI3NyAyMS42MjggNTQuNTY4IDIxLjY1NCA3NC44NzMgMCAyMC4yNzYgMjEuNjI3IDU0LjU3IDIxLjY1NiA3NC44NzMgMCAxMS4yNTggMTIuMDEzIDI3LjQzNiAxNy44OTYgNDMuOTE1IDE1LjgwOCA0LjEwOS0uNTIgNy4wMi00LjI3MiA2LjQ5OS04LjM4MnMtNC4yODktNy4wMTktOC4zODItNi40OTljLTEyLjQzNSAxLjU2OS0yNC42MTgtMy4yNTUtMzIuNjExLTEyLjkxNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC43ODIgMTA3LjdjLTguMDgyLTEuNzAzLTE1LjE2Ny02LTIwLjQ4Ny0xMi40MjctNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC01LjMyIDYuNDI3LTEyLjQwNCAxMC43MjUtMjAuNDg2IDEyLjQyOC00LjA1NC44NTQtNi42NDcgNC44MzItNS43OTMgOC44ODVzNC44NCA2LjY0NyA4Ljg4NSA1Ljc5MmMxMC4zODMtMi4xODggMTkuNTkyLTcuMzkgMjYuODE2LTE1LjExNyAyMC4yODIgMjEuNjMxIDU0LjU3MiAyMS42NDggNzQuODcyLS4wMDEgMjAuMjc2IDIxLjYyNiA1NC41NjcgMjEuNjU2IDc0Ljg3MS4wMDIgNy4yMjYgNy43MjcgMTYuNDM2IDEyLjkzIDI2LjgxOCAxNS4xMTYgNC4wNDguODU1IDguMDMtMS43NCA4Ljg4NS01Ljc5My44NTMtNC4wNTMtMS43NDEtOC4wMzEtNS43OTMtOC44ODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01NC45ODUgNDI5LjI3M2gxNjkuNzMydjY5LjU3OWMwIDcuMjUgNS44OTggMTMuMTQ4IDEzLjE0OSAxMy4xNDhoMjUuMTkyYzcuMjUgMCAxMy4xNDgtNS44OTggMTMuMTQ4LTEzLjE0OHYtMS40NjRoNzQuMTk5djEuNDY0YzAgNy4yNSA1Ljg5OCAxMy4xNDggMTMuMTQ5IDEzLjE0OGgyNS4xOTJjNy4yNSAwIDEzLjE0OC01Ljg5OCAxMy4xNDgtMTMuMTQ4di02OS41NzloNTUuMTE5YzI0LjEyMSAwIDQzLjA4MS0yMC44ODYgNDAuNjU3LTQ0Ljk1Ni0uMDA0LS4wNC0uMDA4LS4wOC0uMDEzLS4xMmwtMTMuMDM1LTExMS41NjdjLS40ODEtNC4xMTQtNC4yMTUtNy4wNjItOC4zMTktNi41NzktNC4xMTQuNDgxLTcuMDYgNC4yMDYtNi41NzkgOC4zMmwxMy4wMyAxMTEuNTAzYzEuNDYgMTQuODMzLTEwLjA5NCAyOC4zOTgtMjUuNzM4IDI4LjM5OGgtNTUuMTE5di0xOS4wNThoNDQuOTM3YzkuNDcgMCAxNi44OC04LjE5MSAxNS45MzUtMTcuNjE2LS4wMDUtLjA0My0uMDEtLjA4Ni0uMDE1LS4xMjlsLTM4Ljc1Ni0zMjkuMDc0Yy0uODYxLTguMTc5LTcuNjk1LTE0LjMzNy0xNS45MjctMTQuMzM3aC0xMzQuNTcxYy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDEzNC41NzFjLjUyMyAwIC45NTcuMzkzIDEuMDEuOTE0LjAwNC4wNDIuMDA5LjA4My4wMTQuMTI1bDM4Ljc1IDMyOS4wMzRjLjAxOS4yNzUtLjA3NC41NDctLjI2Ljc1MS0uMTkxLjIxMi0uNDY2LjMzMy0uNzUyLjMzM2gtNDQuOTM3di0yMi44OTJjMC0zOS40NzctMzIuMjU2LTcwLjM0NC03MC4zNDUtNzAuMzQ0LTI2Ljc3OCAwLTUwLjk0NyAxNS4xODktNjIuODM5IDM4Ljc0NC0xMi4wMDgtMjMuNzcyLTM2LjcyNS0zOS4yNS02NC4yMDYtMzguNzMxLTM3LjcuNzA5LTY4Ljk4OCAzMS41OTMtNjguOTg4IDcwLjMzMnYyMi44OTJoLTcwLjM1MmMtLjI4NiAwLS41Ni0uMTIyLS43NTMtLjMzNS0uMTg1LS4yMDQtLjI3Ny0uNDc2LS4yNTktLjc1MWwzOC43NTItMzI5LjAzMmMuMDA1LS4wNDIuMDEtLjA4NC4wMTQtLjEyNy4wNTMtLjUyLjQ4Ni0uOTEyIDEuMDEtLjkxMmgxMzQuNTdjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEzNC41N2MtOC4yMzMgMC0xNS4wNjcgNi4xNi0xNS45MjcgMTQuMzM5bC0zOC43NTcgMzI5LjA3M2MtLjAwNS4wNDMtLjAxLjA4Ni0uMDE1LjEyOS0uOTQ2IDkuNDIyIDYuNDY0IDE3LjYxNiAxNS45MzUgMTcuNjE2aDE1OS41NTF2MTkuMDU4aC0xNjkuNzMyYy0xNC44NTIgMC0yNy4yNzktMTIuNzgyLTI1LjczOS0yOC4zOTlsNDAuNjA5LTM0Ny40ODNjLjAwNS0uMDQuMDA5LS4wOC4wMTMtLjExOSAxLjMzNi0xMy4yNjggMTIuMzk5LTIzLjI3MyAyNS43MzQtMjMuMjczaDMyMC43OThjMTMuMzM1IDAgMjQuMzk3IDEwLjAwNSAyNS43MzMgMjMuMjcyLjAwNC4wNC4wMDguMDguMDEzLjEybDIzLjQ4NyAyMDAuOTc5Yy40ODEgNC4xMTUgNC4yMTcgNy4wNjMgOC4zMTkgNi41NzkgNC4xMTQtLjQ4IDcuMDYtNC4yMDYgNi41NzktOC4zMmwtMjMuNDgtMjAwLjkyMmMtMi4xMzgtMjAuOTMyLTE5LjYwMy0zNi43MDgtNDAuNjUxLTM2LjcwOGgtMzIwLjc5OGMtMjEuMDQ5IDAtMzguNTE2IDE1Ljc3Ny00MC42NTIgMzYuNzFsLTQwLjYxIDM0Ny40ODhjLS4wMDUuMDQtLjAwOS4wOC0uMDEzLjEyLTIuNDE1IDIzLjk5OSAxNi40NjYgNDQuOTU1IDQwLjY1OCA0NC45NTV6bTI1Ny43MTMtNzEuMzAyYzAtMTAuMzI1IDguMTIyLTE5LjI4OSAxOC41LTE5LjQ4MyAxMC42ODItLjIwNCAxOS4yMDkgOC40OTEgMTkuMjA5IDE4LjgzNnYyMi44OTJoLTM3LjcwOXptLTM2LjQ5MSA3MS4zMDJoNzQuMTk5djE5LjA1OGgtNzQuMTk5em03OC4yMTUtMzQuMDU4YzUuNTY5IDAgMTAuMDE0IDQuODE4IDkuNDg0IDEwLjQzLS40NzMgNC44ODQtNC41OSA4LjYyNy05LjQ4NCA4LjYyN2gtNzguMjE1di0xOS4wNThjMjYuMTEyLjAwMSA1Mi4xNjcuMDAxIDc4LjIxNS4wMDF6bS03OC4yMTUgNjguMTE2aDc4LjIxNWM1LjUzNyAwIDEwLjAxNiA0Ljc5NiA5LjQ4NCAxMC40My0uNDcyIDQuODc0LTQuNTg3IDguNjI3LTkuNDg0IDguNjI3aC03OC4yMTV6bTExMC42OSAzMy42NjloLTIxLjQ5di0yLjIxM2MxOC4wMTQtOS4xMjcgMTguMDU0LTM0LjcwOCAwLTQzLjg1NXYtMjQuMjZjMTguMDk4LTkuMTcgMTcuOTY4LTM0Ljc1MiAwLTQzLjg1NXYtMjUuNDkzYzAtMjAuNDg2LTE4LjIwMi0zNi41MTctMzguNzk0LTMzLjQ5LTE2LjM1MyAyLjQtMjguOTE1IDE2LjUyNi0yOC45MTUgMzMuNDl2MjIuODkyaC0yMS40OXYtMjEuODM3YzAtMzAuNTUyIDI0LjQ2LTU2LjA5NCA1NC44MjItNTYuMzg2IDMxLjIxOC0uMjYyIDU1Ljg2NyAyNS4wNTggNTUuODY3IDU1LjMzMXptLTIzNi4zNzctMTE2Ljc4NXYtMjEuODM4YzAtMzIuMjI0IDI2LjY5Ni01Ny41ODMgNTcuNTg5LTU2LjM0MiAyOS40ODMgMS4yMDQgNTMuMDk5IDI1LjUwMyA1My4wOTkgNTUuMjg3djEzOS42NzdoLTIxLjQ5YzAtMTQuNDE4IDAtMTIxLjA2MyAwLTEzOS42NzcgMC0xNy45NS0xNC4wNjUtMzIuODA0LTMxLjkxNS0zMy43OTUtMTkuMjc2LTEuMDk2LTM1Ljc5MyAxNC4yNjEtMzUuNzkzIDMzLjc5NXYyMi44OTJoLTIxLjQ5em0zNi40OSAwdi0yMi4yNDVjMC05LjQyNSA2Ljc2Mi0xNy43MjQgMTUuODc3LTE5LjI0MyAxMS42MzktMS44NTIgMjEuODMgNy4yMzcgMjEuODMgMTguNTk2djIyLjg5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",cSe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTYsMjUySDExNmMtNS41MSwwLTEwLDQuNDktMTAsMTBzNC40OSwxMCwxMCwxMGgxMDBjNS41MSwwLDEwLTQuNDksMTAtMTBTMjIxLjUxLDI1MiwyMTYsMjUyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1MmMtNS41MSwwLTEwLDQuNDktMTAsMTBzNC40OSwxMCwxMCwxMHMxMC00LjQ5LDEwLTEwUzI2MS41MSwyNTIsMjU2LDI1MnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM5NiwyNTJIMjk2Yy01LjUxLDAtMTAsNC40OS0xMCwxMHM0LjQ5LDEwLDEwLDEwaDEwMGM1LjUxLDAsMTAtNC40OSwxMC0xMFM0MDEuNTEsMjUyLDM5NiwyNTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yODYsMTA3aC02MGMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHY2MGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwaDYwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTB2LTYwDQoJCQlDMjk2LDExMS40NzcsMjkxLjUyMywxMDcsMjg2LDEwN3ogTTI3NiwxNjdoLTQwdi00MGg0MFYxNjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDIsNDkyaC0xM1YyMzNjMC02Mi4yMzctMjQuMjM2LTEyMC43NDgtNjguMjQ0LTE2NC43NTZDMzc2Ljc0OCwyNC4yMzYsMzE4LjIzNywwLDI1NiwwUzEzNS4yNTIsMjQuMjM2LDkxLjI0NCw2OC4yNDQNCgkJCVMyMywxNzAuNzYzLDIzLDIzM3YyNTlIMTBjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoNDkyYzUuNTIzLDAsMTAtNC40NzcsMTAtMTBTNTA3LjUyMyw0OTIsNTAyLDQ5MnogTTM4Niw0OTJIMTI2DQoJCQl2LTIwaDI2MFY0OTJ6IE0zODYsNDUySDEyNnYtMjBoMjYwVjQ1MnogTTM4Niw0MTJIMTI2di0yMGgyNjBWNDEyeiBNMzg2LDM3MkgxMjZ2LTIwaDI2MFYzNzJ6IE0zODYsMzMySDEyNnYtMjBoMjYwVjMzMnoNCgkJCSBNNDI5LDQ5MmgtMjNWMzAyYzAtNS41MjMtNC40NzctMTAtMTAtMTBIMTE2Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjE5MEg4M1YyMzNjMC05NS42NjgsNzcuMzgzLTE3My41LDE3Mi41LTE3My41DQoJCQlDMzUxLjE2OCw1OS41LDQyOSwxMzcuMzMyLDQyOSwyMzNWNDkyeiBNNDY5LDQ5MmgtMjBWMjMzYzAtMTA2LjY5Ni04Ni44MDQtMTkzLjUtMTkzLjUtMTkzLjUNCgkJCWMtNTEuNjM5LDAtMTAwLjA2MywyMC4xMzctMTM2LjM1Miw1Ni43MDJDODIuOTQsMTMyLjY4NCw2MywxODEuMjY3LDYzLDIzM3YyNTlINDNWMjMzYzAtMTE3LjQ0OSw5NS41NTEtMjEzLDIxMy0yMTMNCgkJCXMyMTMsOTUuNTUxLDIxMywyMTNWNDkyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",uSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUwOC41NDEgMjE4LjM4NC0xNjIuNTA3LTIwMy4xMzRjLTcuNzUzLTkuNjkyLTE5LjMxOC0xNS4yNS0zMS43MjktMTUuMjVoLTgzLjE1NWMtOC43MDMgMC0xNS43ODMgNy4wOC0xNS43ODMgMTUuNzgzdjE2LjU2N2MwIDguNzAzIDcuMDggMTUuNzgzIDE1Ljc4MyAxNS43ODNoMzMuOTE3djExNy41MzNoLTMwLjYzMmwtMTIwLjMzNC0xNTAuNDE2Yy03Ljc1My05LjY5MS0xOS4zMTgtMTUuMjUtMzEuNzI5LTE1LjI1aC02Ni41ODljLTguNzAzIDAtMTUuNzgzIDcuMDgtMTUuNzgzIDE1Ljc4M3YxNi41NjdjMCA4LjcwMyA3LjA4IDE1Ljc4MyAxNS43ODMgMTUuNzgzaDE3LjM1djExNy41MzNoLTE3LjM1Yy04LjcwMy4wMDEtMTUuNzgzIDcuMDgxLTE1Ljc4MyAxNS43ODR2MzA2LjQ4M2MwIDEzLjI3MSAxMC43OTYgMjQuMDY3IDI0LjA2NyAyNC4wNjdoNDcyLjE1YzguNzAzIDAgMTUuNzgzLTcuMDggMTUuNzgzLTE1Ljc4M3YtNzQuNTUtMTQzLjI4OS01MC4xMzRjMC0zLjU3MS0xLjIyOC03LjA3My0zLjQ1OS05Ljg2em0tNjIuMDI0IDE5NS43ODNjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzgzdi03NC41NS0xMjEuOTA4bDE4LjEzNCAyMi42Njd2MTc0LjU3NHptLTIzMS45MzQgMGMtLjQzMiAwLS43ODQtLjM1Mi0uNzg0LS43ODN2LTY3LjA1aDE4LjEzM3Y2Ny44MzN6bS02Ni4yNjYtODIuODM0Yy0uNDMyIDAtLjc4NC0uMzUyLS43ODQtLjc4NHYtNjcuMDQ5aDE4LjEzM3Y2Ny44MzN6bS02Ni4yNjctODIuODMzYy0uNDMyIDAtLjc4My0uMzUyLS43ODMtLjc4M3YtNjcuMDVoMTguMTMzdjY3LjgzM3ptODMuNjE2LTkxLjc0MXY4LjkwOGgtMTguMTMzdi0zMS41NzR6bTY2LjI2NyA4Mi44MzN2OC45MDhoLTE4LjEzM3YtMzEuNTc0em04MS4yNjcgOC4xMjV2LTE5Ni40MjhjLjA3Mi4wODQuMTUyLjE2LjIyMi4yNDdsMTcuOTExIDIyLjM4OXYxNzQuNTc1aC0xNy4zNWMtLjQzMSAwLS43ODMtLjM1Mi0uNzgzLS43ODN6bTExNy41MzMgNTAuNDgzaC0xOC4xMzN2LTEyMi42OTFsMTguMTM0IDIyLjY2N3YxMDAuMDI0em0tMTguMTMzIDE1aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptLTE1IDE4LjEzM2gtMTcuMzVjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzg0di03NC41NDktMTIxLjkwOGwxOC4xMzMgMjIuNjY2em0tMzMuMTMzLTExNS45NjZoLTE4LjEzNHYtMTIyLjY5MWwxOC4xMzQgMjIuNjY3em0tMTguMTM0IDE1aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptMTguMTM0IDMzLjEzM3Y2Ny4wNWMwIC4yNjQuMDI3LjUyMi4wNC43ODRoLTg0LjQ0di01Mi45NTUtMTQuODc5em0tOTkuNDAxIDE3LjUwOXYxMDAuMDI0aC0xOC4xMzN2LTEyMi42OTFsNS4wODYgNi4zNTd6bS0xNTAuNjY2LTE4OC4zMzMgMTguMTMzIDIyLjY2N3YxMDAuMDI0aC0xOC4xMzN6bTMzLjEzMyA4Ny45OTFoMTguMTMzdjY3LjgzM2gtMTguMTMzem0zMy4xMzMtNS4xNTggMTguMTMzIDIyLjY2N3YxMDAuMDI0aC0xOC4xMzN6bTMzLjEzNCA4Ny45OTFoMTguMTMzdjY3LjgzM2gtMTguMTMzem0tMTE0LjQtOTcuODMzaC0xOC4xMzN2LTExNC4zNzhjLjA3My4wODQuMTUyLjE2LjIyMi4yNDdsMTcuOTExIDIyLjM5em0xNSA2NC43aDE4LjEzM3YxOC4xMzNoLTE4LjEzM3ptNjYuMjY2IDgyLjgzM2gxOC4xMzR2MTguMTMzaC0xOC4xMzN2LTE4LjEzM3ptNjYuMjY3IDgyLjgzM2gxOC4xMzN2MTguMTMzaC0xOC4xMzN6bTMzLjEzMy00OS43aDE1MC42Njd2NjcuMDVjMCAuMjY0LjAyNy41MjIuMDQuNzgzaC0xNTAuNzA3em0yMDcuMzE2LTc3LjM0NiA5LjYxOCAxMi4wMjJ2MTAwLjAyNGgtMTguMTMzdi0xMjIuNjl6bS04LjUxNSAxMjcuMDQ2aDE4LjEzM3YxOC4xMzNoLTE4LjEzM3ptLTI0OC41LTM2My42ODN2LTE2LjU2N2MwLS40MzIuMzUyLS43ODMuNzgzLS43ODNoODMuMTU1YzcuODMgMCAxNS4xMjUgMy41MDYgMjAuMDE3IDkuNjJsMTYyLjUwNyAyMDMuMTM0YzAgLjAwMS4wMDEuMDAxLjAwMi4wMDIuMTA5LjEzNy4xNy4zMTEuMTcuNDg4djI4Ljc1M2wtMTcxLjg2Ni0yMTQuODMxYy00LjU5My01Ljc0LTExLjQ0Mi05LjAzMi0xOC43OTMtOS4wMzJoLS42NDItNzQuNTVjLS40MzItLjAwMS0uNzgzLS4zNTItLjc4My0uNzg0em02Ny44MzMgMTUuNzgzdjg0LjRoLTE4LjEzNHYtODQuNHptLTE4LjEzNCA5OS40aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptMTguMTM0IDMzLjEzNHY2Ny4wNWMwIC4yNjQuMDI3LjUyMi4wNC43ODNoLTE4LjE3NHYtMjAuMjU2YzAtMy41Ny0xLjIyOC03LjA3Mi0zLjQ1OC05Ljg1OSAwLS4wMDEgMC0uMDAxIDAtLjAwMWwtMzAuMTc0LTM3LjcxOGg1MS43NjZ6bS0yODMuMi0xNDguMzE3di0xNi41NjdjMC0uNDMxLjM1Mi0uNzgzLjc4My0uNzgzaDY2LjU4OGM3LjgzIDAgMTUuMTI1IDMuNTA2IDIwLjAxNiA5LjYybDE2Mi41MDggMjAzLjEzNGMuMTEuMTM4LjE3MS4zMTMuMTcxLjQ5djI4Ljc1NGwtMTcxLjg2NS0yMTQuODMyYy00LjU5Mi01Ljc0LTExLjQ0Mi05LjAzMy0xOC43OTMtOS4wMzNoLS42NDItNTcuOTgzYy0uNDMxIDAtLjc4My0uMzUxLS43ODMtLjc4M3ptNTEuMjY3IDE1Ljc4M3Y4NC40aC0xOC4xMzR2LTg0LjR6bS0xOC4xMzQgOTkuNGgxOC4xMzN2MTguMTMzaC0xOC4xMzN6bS0yNC4wNjYgMzQ5LjQ2N2MtNSAwLTkuMDY3LTQuMDY3LTkuMDY3LTkuMDY3di0zMDYuNDgzYzAtLjQzMi4zNTItLjc4NC43ODMtLjc4NGg1MC40ODN2NjcuMDVjMCA4LjcwMyA3LjA4IDE1Ljc4MyAxNS43ODMgMTUuNzgzaDUwLjQ4M3Y2Ny4wNWMwIDguNzAzIDcuMDgxIDE1Ljc4NCAxNS43ODQgMTUuNzg0aDUwLjQ4NHY2Ny4wNWMwIDguNzAzIDcuMDgxIDE1Ljc4MyAxNS43ODQgMTUuNzgzaDUwLjQ4M3Y2Ny4wNWMwIC40MzItLjM1Mi43ODMtLjc4My43ODNoLTI0MC4yMTd6bTQ3Mi45MzMtLjc4M2MwIC40MzItLjM1Mi43ODMtLjc4My43ODNoLTIxNi4xOWMuMDEzLS4yNjEuMDQtLjUxOS4wNC0uNzgzdi02Ny4wNWgyMTYuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",lSe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTggNTExLjk5OCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS45OTgsMzAuNTk4aC0xNTJjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2NDAuMDAzYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMjAuMDAxdjc0Ljc5NGgtMTkwDQoJCQkJYy01LjUyMiwwLTEwLDQuNDc3LTEwLDEwdjQwLjAwMmMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwSDIwMHY3NC43OTZIMTBjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2NDAuMDAxYzAsNS41MjMsNC40NzcsMTAsMTAsMTANCgkJCQloMTMuOTk2VjQ3MS40YzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMTgxLjc2YzIuMjU2LDAsNC40NDUtMC43NjMsNi4yMTMtMi4xNjVsMjg2LjI0My0yMjYuOTcyDQoJCQkJYzIuMzkyLTEuODk2LDMuNzg2LTQuNzgyLDMuNzg2LTcuODM1VjgwLjYwMVY0MC41OThDNTExLjk5OCwzNS4wNzUsNTA3LjUyMiwzMC41OTgsNTAxLjk5OCwzMC41OTh6IE0xODkuOTk5LDIwNS4zOTd2LTIwLjAwMg0KCQkJCWgxODB2MjAuMDAySDE4OS45OTl6IE0yMCwzNDAuMTk0di0yMC4wMDFoMTgwdjIwLjAwMUgyMHogTTQ5MS45OTgsMTA5Ljg3OWgtNDEuMDM1Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwDQoJCQkJYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoNDEuMDM1djEwOS43MTVMMjEyLjI3MSw0NjEuNEg0My45OTZ2LTYyLjI1M2g0MS4wMzZjNS41MjIsMCwxMC00LjQ3NywxMC0xMHMtNC40NzgtMTAtMTAtMTBINDMuOTk2DQoJCQkJdi0xOC45NTNIMjEwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTB2LTQwLjAwMXYtODQuNzk2aDE1OS45OTljNS41MjMsMCwxMC00LjQ3NywxMC0xMHYtNDAuMDAyVjkwLjYwMWgxMDEuOTk5VjEwOS44Nzl6DQoJCQkJIE00OTEuOTk4LDcwLjYwMWgtMTMyVjUwLjU5OGgxMzJWNzAuNjAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTE0LDM3OS4xNDRoLTAuMjM2Yy01LjUyNCwwLTEwLDQuNDc3LTEwLDEwczQuNDc2LDEwLDEwLDEwSDExNGM1LjUyMiwwLDEwLTQuNDc3LDEwLTEwUzExOS41MjIsMzc5LjE0NCwxMTQsMzc5LjE0NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQyMS45OTgsMTI5Ljg4aDAuMjM1YzUuNTIyLDAsMTAtNC40NzcsMTAtMTBzLTQuNDc4LTEwLTEwLTEwaC0wLjIzNWMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMA0KCQkJCVM0MTYuNDc1LDEyOS44OCw0MjEuOTk4LDEyOS44OHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",NSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01LjUxOCA2NGgyLjk4NmMuNTUzIDAgMS0uNDQ3IDEtMXYtMi4wMjFoNDQuOTkydjIuMDIxYzAgLjU1My40NDcgMSAxIDFoM2MuNTUzIDAgMS0uNDQ3IDEtMXYtNjAuNWMwLTEuMzc4LTEuMTIxLTIuNS0yLjUtMi41cy0yLjUgMS4xMjItMi41IDIuNXYxNS41MDRoLTIuOTk4di0xMy45OTZjMC0uNTUyLS40NDctMS0xLTFoLTE1Ljk5NmMtLjU1MyAwLTEgLjQ0OC0xIDF2MTMuOTk1aC0zLjAwMnYtMTMuOTk1YzAtLjU1Mi0uNDQ3LTEtMS0xaC0xNS45OTZjLS41NTMgMC0xIC40NDgtMSAxdjEzLjk5NWgtM3YtMTUuNTAzYzAtMS4zNzgtMS4xMjEtMi41LTIuNS0yLjVzLTIuNSAxLjEyMi0yLjUgMi41bC4wMTQgNjAuNWMwIC41NTMuNDQ3IDEgMSAxem01MC45NzgtNjEuNWMwLS4yNzYuMjI1LS41LjUtLjVzLjUuMjI0LjUuNXY1OS41aC0xem0tMTQuOTk4IDIuNTA4aDIuMDAydjEuMDA4aC0yLjAwMnptLTUuOTk2IDBoMy45OTZ2Mi4wMDhjMCAuNTUyLjQ0NyAxIDEgMWg0LjAwMmMuNTUzIDAgMS0uNDQ4IDEtMXYtMi4wMDhoMy45OTh2MTIuOTk1aC0xMy45OTZ6bS0xNS4wMDIgMGgydjEuMDA4aC0yem0tNS45OTYgMGgzLjk5NnYyLjAwOGMwIC41NTIuNDQ3IDEgMSAxaDRjLjU1MyAwIDEtLjQ0OCAxLTF2LTIuMDA4aDR2MTIuOTk1aC0xMy45OTZ6bS01IDE0Ljk5NWg0IDE1Ljk5NiA1LjAwMiAxNS45OTYgMy45OTh2MWgtNDQuOTkyem0wIDNoNDQuOTkydjEzLjk3MWgtMi45OTZ2LTEwLjk5YzAtLjU1Mi0uNDQ3LTEtMS0xaC0zN2MtLjU1MyAwLTEgLjQ0OC0xIDF2MTAuOTkxaC0yLjk5NnptMTkuOTk2IDYuOTgxaDVjLjU1MyAwIDEtLjQ0OCAxLTF2LTJoMTR2OS45OTFoLTM1di05Ljk5MWgxNHYyYzAgLjU1Mi40NDcgMSAxIDF6bTEtMnYtMWgzdjF6bS0yMC45OTYgMTAuOTkxaDMuOTk2IDM3IDMuOTk2djEuMDAyaC00NC45OTJ6bTAgMy4wMDJoNDQuOTkydjE0aC0yLjk5NHYtMTEuOTljMC0uNTUzLS40NDctMS0xLTFoLTE0LjAwMmMtLjU1MyAwLTEgLjQ0Ny0xIDF2MTEuOTloLTIuOTk0di04Ljk4OGMwLS41NTMtLjQ0Ny0xLTEtMWgtNi45OTRjLS4wMDQgMC0uMDA2LS4wMDItLjAxLS4wMDJzLS4wMDYuMDAyLS4wMS4wMDJoLTMuOTgyYy0uMDA0IDAtLjAwNi0uMDAyLS4wMS0uMDAycy0uMDA2LjAwMi0uMDEuMDAyaC02Ljk4NmMtLjU1MyAwLTEgLjQ0Ny0xIDF2OC45ODhoLTN6bTMxLjk5NiA2LjAxN2g0LjAwMmMuNTUzIDAgMS0uNDQ3IDEtMXYtMi4wMDhoM3YxMC45OWgtMTIuMDAydi0xMC45OWgzdjIuMDA4YzAgLjU1My40NDcgMSAxIDF6bTEtMnYtMS4wMDhoMi4wMDJ2MS4wMDh6bS0yMiA1aDQuMDAyYy41NTMgMCAxLS40NDcgMS0xdi0yLjAwNmg1LjAwNHY3Ljk4OGgtMTYuMDAydi03Ljk4OGg0Ljk5NnYyLjAwNmMwIC41NTMuNDQ3IDEgMSAxem0xLTJ2LTEuMDA2aDIuMDAydjEuMDA2em0tMTEuOTk2IDguOTgzaDQgMTguMDAyIDQuOTk0IDE0LjAwMiAzLjk5NHYxLjAwMmgtNDQuOTkyem0tMi41LTU1Ljk3N2MuMjc1IDAgLjUuMjI0LjUuNXY1OS41aC0uOTg2bC0uMDE0LTU5LjVjMC0uMjc2LjIyNS0uNS41LS41eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",LSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MyAzdi0yaC0zMWMtLjU1MyAwLTEgLjQ0Ny0xIDF2OGMwIC41NTMuNDQ3IDEgMSAxaDF2NTBoLTMydjJoMzMgNCA4IDQgMTN2LTJoLTEydi01aDEydi0yaC0xMy00LTN2LTJoMjB2LTJoLTIxYy0uNTUzIDAtMSAuNDQ3LTEgMXY0YzAgLjU1My40NDcgMSAxIDFoM3Y1aC02di01MGgyNHYtMmgtMjUtNC0xdi02em0tMTYgNTNoMnY1aC0yem0tMTAtNDV2NTBoLTJ2LTUweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjEgMzJjMC0yLjExOC0uNTAxLTQuMjM4LTEuNDQ3LTYuMTMxbC0uNjU4LTEuMzE2Yy0uMzQtLjY3OC0xLjQ0OS0uNjc4LTEuNzg5IDBsLS42NTggMS4zMTZjLS45NDcgMS44OTMtMS40NDggNC4wMTMtMS40NDggNi4xMzEgMCAuMjQxLjAyOS40ODEuMDQyLjcyMi0uNjQ2LS40ODMtMS4zODMtLjgzNy0yLjE3Mi0xLjAzNGwtMi42MjgtLjY1N2MtLjMzOC0uMDg3LS43MDEuMDE1LS45NDkuMjYzcy0uMzQ5LjYwOC0uMjYzLjk0OWwuNjU3IDIuNjI5Yy4yNjkgMS4wNzMuODIzIDIuMDU1IDEuNjA1IDIuODM2Ljc4MS43ODIgMS43NjMgMS4zMzcgMi44MzYgMS42MDVoLjAwMWwuNjcyLjE2OC0xLjI1LjYyNS44OTUgMS43ODkgMi41NTQtMS4yNzd2Mi4zODJoLTdjLS41NTMgMC0xIC40NDctMSAxdjRjMCAuNTUzLjQ0NyAxIDEgMWgxLjA5NWwuOTEgOS4xYy4wNTEuNTEuNDgxLjkuOTk1LjloMTBjLjUxNCAwIC45NDQtLjM5Ljk5NS0uOWwuOTEtOS4xaDEuMDk1Yy41NTMgMCAxLS40NDcgMS0xdi00YzAtLjU1My0uNDQ3LTEtMS0xaC03di0yLjM4MmwyLjU1MyAxLjI3Ni44OTUtMS43ODktMS4yNS0uNjI1LjY3Mi0uMTY4aC4wMDFjMS4wNzMtLjI2OSAyLjA1NS0uODIzIDIuODM2LTEuNjA1Ljc4Mi0uNzgxIDEuMzM3LTEuNzYzIDEuNjA1LTIuODM3bC42NTctMi42MjhjLjA4Ni0uMzQxLS4wMTUtLjcwMS0uMjYzLS45NDlzLS42MDktLjM1LS45NDktLjI2M2wtMi42MjkuNjU3Yy0uNzg4LjE5Ny0xLjUyNS41NTEtMi4xNzEgMS4wMzQuMDE0LS4yNC4wNDMtLjQ4LjA0My0uNzIxem0xLjA5NSAyNWgtOC4xODlsLS44LThoOS43OXptMi45MDUtMTBoLTE0di0yaDE0em0tNy0xOS43MzRjLjY1NSAxLjQ4NSAxIDMuMTEgMSA0LjczNHMtLjM0NSAzLjI0OS0xIDQuNzM0Yy0uNjU1LTEuNDg1LTEtMy4xMS0xLTQuNzM0cy4zNDUtMy4yNDkgMS00LjczNHptLTUuMjkzIDkuMDI3Yy0uNTI1LS41MjUtLjg5OC0xLjE4Ni0xLjA4LTEuOTA3bC0uMjUyLTEuMDExIDEuMDEuMjUyYy43MjMuMTgyIDEuMzgzLjU1NSAxLjkwOCAxLjA4cy44OTggMS4xODYgMS4wOCAxLjkwN2wuMjUyIDEuMDExLTEuMDEtLjI1MmMtLjcyMi0uMTgyLTEuMzgzLS41NTUtMS45MDgtMS4wOHptMTAuOTA3LTIuNjY2IDEuMDExLS4yNTItLjI1MiAxLjAxYy0uMTgyLjcyMy0uNTU1IDEuMzgzLTEuMDggMS45MDhzLTEuMTg2Ljg5OC0xLjkwOCAxLjA4bC0xLjAxLjI1Mi4yNTItMS4wMWMuMTgyLS43MjMuNTU1LTEuMzgzIDEuMDgtMS45MDhzMS4xODYtLjg5OCAxLjkwNy0xLjA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNSAxNWgxM2MyLjc1NyAwIDUtMi4yNDMgNS01cy0yLjI0My01LTUtNWMtLjQzOCAwLS44NzcuMDYxLTEuMzAzLjE4LS43NjYtMi40NTUtMy4wMjMtNC4xOC01LjY5Ny00LjE4LTMuMzA5IDAtNiAyLjY5MS02IDYtMi4yMDYgMC00IDEuNzk0LTQgNHMxLjc5NCA0IDQgNHptMC02Yy4yNyAwIC41MzMuMDU0Ljc4My4xNi4zNTIuMTQ3Ljc1Ni4wODUgMS4wNDMtLjE2My4yODgtLjI0OC40MTEtLjYzOS4zMTctMS4wMDctLjA5OC0uMzc3LS4xNDMtLjY5Mi0uMTQzLS45OSAwLTIuMjA2IDEuNzk0LTQgNC00IDIuMDgxIDAgMy43ODQgMS41NzQgMy45NjEgMy42NjIuMDI4LjM0NS4yMzMuNjQ4LjU0LjgwNi4zMDguMTU4LjY3NS4xNDUuOTctLjAzMi40ODMtLjI5Ljk5Ny0uNDM2IDEuNTI5LS40MzYgMS42NTQgMCAzIDEuMzQ2IDMgM3MtMS4zNDYgMy0zIDNoLTEzYy0xLjEwMyAwLTItLjg5Ny0yLTJzLjg5Ny0yIDItMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",gSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MSw1N0g0OC40MTRsLS44NzktLjg3OWE4LjU4Nyw4LjU4NywwLDAsMS0yLjQ3MS01LjExMkM1MS4xNTMsNDguNTg3LDU1LjYwNyw0MS45MzQsNTUuOTU3LDM0SDU2YTEsMSwwLDAsMCwxLTFWMzBhMSwxLDAsMCwwLTEtMUg1Mi40NjRhMTkuNTgyLDE5LjU4MiwwLDAsMCwxLjY3My00SDU3YTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMS0xSDQ2Ljg0MUExMi43LDEyLjcsMCwwLDAsMzMuMTU5LDNIMjNhMSwxLDAsMCwwLTEsMVYyNGExLDEsMCwwLDAsMSwxaDIuODYzYTE5LjU4MiwxOS41ODIsMCwwLDAsMS42NzMsNEgyNGExLDEsMCwwLDAtMSwxdjNhMSwxLDAsMCwwLDEsMWguMDQzYy4zNSw3LjkzNCw0LjgsMTQuNTg3LDEwLjg5MywxNy4wMDlhOC41ODcsOC41ODcsMCwwLDEtMi40NzEsNS4xMTJMMzEuNTg2LDU3SDI5YTEsMSwwLDAsMC0xLDF2NGExLDEsMCwwLDAsMSwxSDUxYTEsMSwwLDAsMCwxLTFWNThBMSwxLDAsMCwwLDUxLDU3Wk01Niw1VjIzSDU0LjYxMUEyMS40NDcsMjEuNDQ3LDAsMCwwLDU1LDE5LDE5LjQ5MywxOS40OTMsMCwwLDAsNDkuNDA3LDVaTTI0LDIzVjVoNi41OTNBMTkuNDkzLDE5LjQ5MywwLDAsMCwyNSwxOWEyMS40NDcsMjEuNDQ3LDAsMCwwLC4zODksNFptMy00YzAtOC44MjIsNS44MzItMTYsMTMtMTZzMTMsNy4xNzgsMTMsMTZhMTguNDA3LDE4LjQwNywwLDAsMS0yLjg3MiwxMEg0Ny42ODJBMTYsMTYsMCwwLDAsNTEsMTljMC03LjcyLTQuOTM1LTE0LTExLTE0UzI5LDExLjI4LDI5LDE5YTE2LDE2LDAsMCwwLDMuMzE4LDEwSDI5Ljg3MkExOC40MDcsMTguNDA3LDAsMCwxLDI3LDE5Wm04LjA2MSwxMEExMy4zMDgsMTMuMzA4LDAsMCwxLDMxLDE5YzAtNi42MTcsNC4wMzctMTIsOS0xMnM5LDUuMzgzLDksMTJhMTMuMzA4LDEzLjMwOCwwLDAsMS00LjA2MSwxMFpNMjUsMzFINTV2MUgyNVptMS4wNDIsM0g1My45NThDNTMuNTI4LDQyLjkwOCw0Ny40NDIsNTAsNDAsNTBTMjYuNDcyLDQyLjkwOCwyNi4wNDIsMzRaTTM2Ljg2NCw1MS42MjlhMTMuNDQsMTMuNDQsMCwwLDAsNi4yNzIsMEExMC41MzksMTAuNTM5LDAsMCwwLDQ1LjYzNiw1N0gzNC4zNjRBMTAuNTM5LDEwLjUzOSwwLDAsMCwzNi44NjQsNTEuNjI5Wk01MCw2MUgzMFY1OUg1MFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzLDU3aC0uMDhBNy4wMSw3LjAxLDAsMCwwLDE5LDUxLjY4NVY0OGExLDEsMCwwLDAtMS0xSDE3VjI2LjgxNmEzLDMsMCwxLDAtMiwwVjQ3SDE0YTEsMSwwLDAsMC0xLDF2My42ODVBNy4wMSw3LjAxLDAsMCwwLDkuMDgsNTdIOWEzLDMsMCwwLDAsMCw2SDIzYTMsMywwLDAsMCwwLTZaTTE2LDIzYTEsMSwwLDEsMS0xLDFBMSwxLDAsMCwxLDE2LDIzWk0xNSw0OWgydjIuMDhhNi4yOSw2LjI5LDAsMCwwLTIsMFptMSw0YTUuMDA2LDUuMDA2LDAsMCwxLDUsNUgxMUE1LjAwNiw1LjAwNiwwLDAsMSwxNiw1M1ptNyw4SDlhMSwxLDAsMCwxLDAtMiwxLDEsMCwwLDAsMSwxSDIyYTEsMSwwLDAsMCwxLTEsMSwxLDAsMCwxLDAsMloiLz4NCiAgICAgICAgPHBhdGggZD0iTTgsMTVhMSwxLDAsMCwwLDEtMSw1LjAwNiw1LjAwNiwwLDAsMSw1LTUsMSwxLDAsMCwwLDAtMkE1LjAwNiw1LjAwNiwwLDAsMSw5LDIsMSwxLDAsMCwwLDcsMiw1LjAwNiw1LjAwNiwwLDAsMSwyLDcsMSwxLDAsMCwwLDIsOWE1LjAwNiw1LjAwNiwwLDAsMSw1LDVBMSwxLDAsMCwwLDgsMTVaTTUuNiw4QTcuMDY2LDcuMDY2LDAsMCwwLDgsNS42LDcuMDY2LDcuMDY2LDAsMCwwLDEwLjQsOCw3LjA2Niw3LjA2NiwwLDAsMCw4LDEwLjQsNy4wNjYsNy4wNjYsMCwwLDAsNS42LDhaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNCwxMWEzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMiwzLDMsMCwwLDEtMy0zLDEsMSwwLDAsMC0yLDBabTIsNGE1LjAxNyw1LjAxNywwLDAsMC0xLDEsNS4wMTcsNS4wMTcsMCwwLDAtMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEtMUE1LjAxNyw1LjAxNywwLDAsMCwxNiwxNVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTYyLDQ4YTMsMywwLDAsMS0zLTMsMSwxLDAsMCwwLTIsMCwzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMlptLTQsMmE1LjAxNyw1LjAxNywwLDAsMC0xLTEsNS4wMTcsNS4wMTcsMCwwLDAsMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEsMUE1LjAxNyw1LjAxNywwLDAsMCw1OCw1MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",jSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUwOSA1MDkiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM1OS4yIDB2ODkuOGgtODkuODAxdjg5LjhoLTg5Ljh2ODkuOGgtODkuNzk5djg5LjhoLTg5Ljh2MTQ5LjhoNTA5di01MDl6bTExOS44IDQ3OWgtNDQ5di04OS44aDg5Ljh2LTg5LjhoODkuOHYtODkuOGg4OS44di04OS44aDg5Ljh2LTg5LjhoODkuOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTY4LjQ0OCAxNzYuOTU2IDk0LjA0MS05NC4wNC0zLjYyOSA0My4wNjYgMjkuODk1IDIuNTE5IDguNTYyLTEwMS42MjYtMTAxLjYyNyA4LjU2MiAyLjUxOCAyOS44OTQgNDMuMDY4LTMuNjI4LTk0LjA0MSA5NC4wNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",ySe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yMzguOTMzLDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjc2LjhjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzVjQyLjY2Nw0KCQkJQzI0Ny40NjcsMzcuOTU2LDI0My42NDQsMzQuMTMzLDIzOC45MzMsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDc3Ljg2NywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1Y3Ni44YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM1M0ODYuNCw4MS41MSw0ODYuNCw3Ni44VjQyLjY2Nw0KCQkJQzQ4Ni40LDM3Ljk1Niw0ODIuNTc3LDM0LjEzMyw0NzcuODY3LDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTE3OS4yLDBIOC41MzNDMy44MjMsMCwwLDMuODIzLDAsOC41MzN2NDk0LjkzM0MwLDUwOC4xNzcsMy44MjMsNTEyLDguNTMzLDUxMkgxNzkuMmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVY4LjUzM0MxODcuNzMzLDMuODIzLDE4My45MSwwLDE3OS4yLDB6IE0xNzAuNjY3LDQ5NC45MzNoLTE1My42VjE3LjA2N2gxNTMuNlY0OTQuOTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTAzLjQ2NywzNTguNEgxNzkuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjEzNi41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDMyNC4yNjcNCgkJCWM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzNWMzY2LjkzM0M1MTIsMzYyLjIyMyw1MDguMTc3LDM1OC40LDUwMy40NjcsMzU4LjR6IE00OTQuOTMzLDQ5NC45MzNoLTMwNy4yVjM3NS40NjdoMzA3LjINCgkJCVY0OTQuOTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTAzLjQ2NywwSDE3OS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MzQuMTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMjQuMjY3DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjguNTMzQzUxMiwzLjgyMyw1MDguMTc3LDAsNTAzLjQ2NywweiBNNDk0LjkzMywzNC4xMzNoLTMwNy4yVjE3LjA2N2gzMDcuMlYzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMzYuNTMzLDI0Ny40NjdoLTI1LjZjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gyNS42YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzMw0KCQkJUzE0MS4yNDQsMjQ3LjQ2NywxMzYuNTMzLDI0Ny40Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTAuOTMzLDI0Ny40NjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YyNS42YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1YyNTYNCgkJCUMxMTkuNDY3LDI1MS4yOSwxMTUuNjQ0LDI0Ny40NjcsMTEwLjkzMywyNDcuNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY2LjkzMyw0MTguMTMzaC01MS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoNTEuMmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVMzNzEuNjQ0LDQxOC4xMzMsMzY2LjkzMyw0MTguMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQxLjMzMyw0MTguMTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MTcuMDY3YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzMw0KCQkJdi0xNy4wNjdDMzQ5Ljg2Nyw0MjEuOTU2LDM0Ni4wNDQsNDE4LjEzMywzNDEuMzMzLDQxOC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTAuMTMzLDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDMjk4LjY2NywzNy45NTYsMjk0Ljg0NCwzNC4xMzMsMjkwLjEzMywzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTAuMTMzLDExOS40NjdjLTQ1LjkzNSwwLTc2LjgsMTcuMTQzLTc2LjgsNDIuNjY3VjE3OS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gxNy4wNjd2NzYuOA0KCQkJYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOGM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhIMzU4LjRjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjcNCgkJCUMzNjYuOTMzLDEzNi42MSwzMzYuMDY4LDExOS40NjcsMjkwLjEzMywxMTkuNDY3eiBNMzQ5Ljg2NywxNzAuNjY3SDMzMi44Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNWMjU2SDI1NnYtNzYuOA0KCQkJYzAtNC43MS0zLjgyMy04LjUzMy04LjUzMy04LjUzM0gyMzAuNHYtOC41MzNjMC0xMi40MDcsMjAuOTMyLTI1LjYsNTkuNzMzLTI1LjZzNTkuNzMzLDEzLjE5Myw1OS43MzMsMjUuNlYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQ5Ljg2NywxMTkuNDY3Yy0xMS4zNzUsMC0yMi4wNDIsMS4wNzUtMzEuNjkzLDMuMTkxYy0zLjkxNywwLjg2Mi02LjcwNyw0LjMyNi02LjcwNyw4LjMzNw0KCQkJYzAsNC4wMTEsMi43OSw3LjQ3NSw2LjcwNyw4LjMzN2MxOS4yNTEsNC4yMTUsMzEuNjkzLDEzLjE2NywzMS42OTMsMjIuODAxdjguNTMzSDMzMi44Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2ODUuMzMzDQoJCQljMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDU5LjczM2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhoMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDNDI2LjY2NywxMzYuNjEsMzk1LjgwMiwxMTkuNDY3LDM0OS44NjcsMTE5LjQ2N3ogTTQwOS42LDE3MC42NjdoLTE3LjA2N2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NmgtNDIuNjY3di02OC4yNjcNCgkJCUgzNTguNGM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTE3LjA2N2MwLTkuODEzLTQuNzM2LTE4LjU3Ny0xMy4zOC0yNS41NTdjMzYuNDM3LDAuODAyLDU2LjA0NywxMy41NDIsNTYuMDQ3LDI1LjU1Nw0KCQkJVjE3MC42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MDkuNiwxMTkuNDY3Yy0xMS4zNzUsMC0yMi4wNDIsMS4wNzUtMzEuNjkzLDMuMTkxYy0zLjkxNywwLjg2Mi02LjcwNyw0LjMyNi02LjcwNyw4LjMzNw0KCQkJYzAsNC4wMTEsMi43OSw3LjQ3NSw2LjcwNyw4LjMzN2MxOS4yNTEsNC4yMTUsMzEuNjkzLDEzLjE2NywzMS42OTMsMjIuODAxdjguNTMzaC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y4NS4zMzMNCgkJCWMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoNTkuNzMzYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNzYuOGgxNy4wNjdjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjcNCgkJCUM0ODYuNCwxMzYuNjEsNDU1LjUzNSwxMTkuNDY3LDQwOS42LDExOS40Njd6IE00NjkuMzMzLDE3MC42NjdoLTE3LjA2N2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NmgtNDIuNjY3di02OC4yNjcNCgkJCWgxNy4wNjdjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjdjMC05LjgxMy00LjczNi0xOC41NzctMTMuMzgtMjUuNTU3YzM2LjQzNywwLjgwMiw1Ni4wNDcsMTMuNTQyLDU2LjA0NywyNS41NTcNCgkJCVYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMyw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVMzMDQuMjQ3LDg1LjMzMywyOTAuMTMzLDg1LjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM1OC40LDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDMzY2LjkzMywzNy45NTYsMzYzLjExLDM0LjEzMywzNTguNCwzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTguNCw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVMzNzIuNTE0LDg1LjMzMywzNTguNCw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MjYuNjY3LDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDNDM1LjIsMzcuOTU2LDQzMS4zNzcsMzQuMTMzLDQyNi42NjcsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI2LjY2Nyw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVM0NDAuNzgxLDg1LjMzMyw0MjYuNjY3LDg1LjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ4Ni40LDMyNC4yNjdIMTc5LjJjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YzNC4xMzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDMwNy4yDQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjMzMi44QzQ5NC45MzMsMzI4LjA5LDQ5MS4xMSwzMjQuMjY3LDQ4Ni40LDMyNC4yNjd6IE00NzcuODY3LDM1OC40SDE4Ny43MzN2LTE3LjA2N2gyOTAuMTMzDQoJCQlWMzU4LjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NjkuMzMzLDM5Mi41MzNoLTI1NmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjY4LjI2N2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjU2DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi02OC4yNjdDNDc3Ljg2NywzOTYuMzU2LDQ3NC4wNDQsMzkyLjUzMyw0NjkuMzMzLDM5Mi41MzN6IE00NjAuOCw0NjAuOEgyMjEuODY3di01MS4ySDQ2MC44DQoJCQlWNDYwLjh6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",TSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01NS43NTggNjEtMS41NjktNS41N2M0LjA1My0yLjIwNCA2LjgxMS02LjUwMSA2LjgxMS0xMS40M3YtMWMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0ydi0xMGMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0yaC0yNmMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJ2MTBjLTEuMTAzIDAtMiAuODk3LTIgMnYyYzAgMS4xMDMuODk3IDIgMiAydjFjMCA0LjkyOSAyLjc1OCA5LjIyNiA2LjgxMSAxMS40M2wtMS41NjkgNS41N2gtMTMuMzQzYy0uNDY1LTIuMjc5LTIuNDg0LTQtNC44OTktNGgtMXYtOS4wMDNjNC42OTMtMS45NjMgOC02LjYgOC0xMS45OTd2LTdoLTE4di00aDR2Mmgydi0yYzAtMS4xMDMtLjg5Ny0yLTItMmgtNi0xLTFjLTEuMTAzIDAtMiAuODk3LTIgMnY0aC0ydjdjMCA1LjM5NyAzLjMwNyAxMC4wMzQgOCAxMS45OTd2OS4wMDNoLTFjLTIuNDE0IDAtNC40MzQgMS43MjEtNC44OTkgNGgtNS4xMDF2Mmg2NHYtMnptLTIwLjc1OS0zOGgyNi4wMDF2MmgtMjZ6bTIuMDAxIDhoNHYtMmgtNHYtMmgyMnYxMGgtMjJ6bS0yLjAwMSA4aDI2LjAwMXYyaC0yNnptMi4wMDEgNXYtMWgyMnYxYzAgNi4wNjUtNC45MzUgMTEtMTEgMTFzLTExLTQuOTM1LTExLTExem02LjY2MSAxMi4yNGMxLjM2LjQ4MyAyLjgxNi43NiA0LjMzOS43NnMyLjk3OS0uMjc3IDQuMzM5LS43NmwxLjM0IDQuNzZoLTExLjM1OHptLTM2LjY2MS0zMS4yNGgxIDF2NGgtMnptMjAgNnYyaC0yMnYtMnptLTIyIDV2LTFoMjJ2MWMwIDYuMDY1LTQuOTM1IDExLTExIDExcy0xMS00LjkzNS0xMS0xMXptOCAxMi42MzdjLjk2NS4yMjkgMS45NjYuMzYzIDMgLjM2M3MyLjAzNS0uMTM0IDMtLjM2M3Y4LjM2M2gtNnptLTMgMTAuMzYzaDEyYzEuMzAyIDAgMi40MDIuODM5IDIuODE2IDJoLTE3LjYzMmMuNDE0LTEuMTYxIDEuNTE0LTIgMi44MTYtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQgMjFoMjRjMS42NTQgMCAzLTEuMzQ2IDMtM3YtMTRjMC0xLjY1NC0xLjM0Ni0zLTMtM2gtMjRjLTEuNjU0IDAtMyAxLjM0Ni0zIDN2MTRjMCAxLjY1NCAxLjM0NiAzIDMgM3ptLTEtMTdjMC0uNTUxLjQ0OC0xIDEtMWgyNGMuNTUyIDAgMSAuNDQ5IDEgMXYxNGMwIC41NTEtLjQ0OCAxLTEgMWgtMjRjLS41NTIgMC0xLS40NDktMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAgMi41MTVoMnYxNi45NzFoLTJ6IiB0cmFuc2Zvcm09Im1hdHJpeCguNzA3IC0uNzA3IC43MDcgLjcwNyAtNC41NTYgMTEpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMCAyLjUxNWgydjE2Ljk3MWgtMnoiIHRyYW5zZm9ybT0ibWF0cml4KC43MDcgLS43MDcgLjcwNyAuNzA3IC0xLjYyNyAxOC4wNzEpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNSA5aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1IDEzaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDExaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDExaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDNoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDUgN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQzIDVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTUgMTNoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTUgMTdoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMTVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTMgMTVoMnYyaC0yeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",DSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MSw1N0g0OC40MTRsLS44NzktLjg3OWE4LjU4Nyw4LjU4NywwLDAsMS0yLjQ3MS01LjExMkM1MS4xNTMsNDguNTg3LDU1LjYwNyw0MS45MzQsNTUuOTU3LDM0SDU2YTEsMSwwLDAsMCwxLTFWMzBhMSwxLDAsMCwwLTEtMUg1Mi40NjRhMTkuNTgyLDE5LjU4MiwwLDAsMCwxLjY3My00SDU3YTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMS0xSDQ2Ljg0MUExMi43LDEyLjcsMCwwLDAsMzMuMTU5LDNIMjNhMSwxLDAsMCwwLTEsMVYyNGExLDEsMCwwLDAsMSwxaDIuODYzYTE5LjU4MiwxOS41ODIsMCwwLDAsMS42NzMsNEgyNGExLDEsMCwwLDAtMSwxdjNhMSwxLDAsMCwwLDEsMWguMDQzYy4zNSw3LjkzNCw0LjgsMTQuNTg3LDEwLjg5MywxNy4wMDlhOC41ODcsOC41ODcsMCwwLDEtMi40NzEsNS4xMTJMMzEuNTg2LDU3SDI5YTEsMSwwLDAsMC0xLDF2NGExLDEsMCwwLDAsMSwxSDUxYTEsMSwwLDAsMCwxLTFWNThBMSwxLDAsMCwwLDUxLDU3Wk01Niw1VjIzSDU0LjYxMUEyMS40NDcsMjEuNDQ3LDAsMCwwLDU1LDE5LDE5LjQ5MywxOS40OTMsMCwwLDAsNDkuNDA3LDVaTTI0LDIzVjVoNi41OTNBMTkuNDkzLDE5LjQ5MywwLDAsMCwyNSwxOWEyMS40NDcsMjEuNDQ3LDAsMCwwLC4zODksNFptMy00YzAtOC44MjIsNS44MzItMTYsMTMtMTZzMTMsNy4xNzgsMTMsMTZhMTguNDA3LDE4LjQwNywwLDAsMS0yLjg3MiwxMEg0Ny42ODJBMTYsMTYsMCwwLDAsNTEsMTljMC03LjcyLTQuOTM1LTE0LTExLTE0UzI5LDExLjI4LDI5LDE5YTE2LDE2LDAsMCwwLDMuMzE4LDEwSDI5Ljg3MkExOC40MDcsMTguNDA3LDAsMCwxLDI3LDE5Wm04LjA2MSwxMEExMy4zMDgsMTMuMzA4LDAsMCwxLDMxLDE5YzAtNi42MTcsNC4wMzctMTIsOS0xMnM5LDUuMzgzLDksMTJhMTMuMzA4LDEzLjMwOCwwLDAsMS00LjA2MSwxMFpNMjUsMzFINTV2MUgyNVptMS4wNDIsM0g1My45NThDNTMuNTI4LDQyLjkwOCw0Ny40NDIsNTAsNDAsNTBTMjYuNDcyLDQyLjkwOCwyNi4wNDIsMzRaTTM2Ljg2NCw1MS42MjlhMTMuNDQsMTMuNDQsMCwwLDAsNi4yNzIsMEExMC41MzksMTAuNTM5LDAsMCwwLDQ1LjYzNiw1N0gzNC4zNjRBMTAuNTM5LDEwLjUzOSwwLDAsMCwzNi44NjQsNTEuNjI5Wk01MCw2MUgzMFY1OUg1MFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzLDU3aC0uMDhBNy4wMSw3LjAxLDAsMCwwLDE5LDUxLjY4NVY0OGExLDEsMCwwLDAtMS0xSDE3VjI2LjgxNmEzLDMsMCwxLDAtMiwwVjQ3SDE0YTEsMSwwLDAsMC0xLDF2My42ODVBNy4wMSw3LjAxLDAsMCwwLDkuMDgsNTdIOWEzLDMsMCwwLDAsMCw2SDIzYTMsMywwLDAsMCwwLTZaTTE2LDIzYTEsMSwwLDEsMS0xLDFBMSwxLDAsMCwxLDE2LDIzWk0xNSw0OWgydjIuMDhhNi4yOSw2LjI5LDAsMCwwLTIsMFptMSw0YTUuMDA2LDUuMDA2LDAsMCwxLDUsNUgxMUE1LjAwNiw1LjAwNiwwLDAsMSwxNiw1M1ptNyw4SDlhMSwxLDAsMCwxLDAtMiwxLDEsMCwwLDAsMSwxSDIyYTEsMSwwLDAsMCwxLTEsMSwxLDAsMCwxLDAsMloiLz4NCiAgICAgICAgPHBhdGggZD0iTTgsMTVhMSwxLDAsMCwwLDEtMSw1LjAwNiw1LjAwNiwwLDAsMSw1LTUsMSwxLDAsMCwwLDAtMkE1LjAwNiw1LjAwNiwwLDAsMSw5LDIsMSwxLDAsMCwwLDcsMiw1LjAwNiw1LjAwNiwwLDAsMSwyLDcsMSwxLDAsMCwwLDIsOWE1LjAwNiw1LjAwNiwwLDAsMSw1LDVBMSwxLDAsMCwwLDgsMTVaTTUuNiw4QTcuMDY2LDcuMDY2LDAsMCwwLDgsNS42LDcuMDY2LDcuMDY2LDAsMCwwLDEwLjQsOCw3LjA2Niw3LjA2NiwwLDAsMCw4LDEwLjQsNy4wNjYsNy4wNjYsMCwwLDAsNS42LDhaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNCwxMWEzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMiwzLDMsMCwwLDEtMy0zLDEsMSwwLDAsMC0yLDBabTIsNGE1LjAxNyw1LjAxNywwLDAsMC0xLDEsNS4wMTcsNS4wMTcsMCwwLDAtMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEtMUE1LjAxNyw1LjAxNywwLDAsMCwxNiwxNVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTYyLDQ4YTMsMywwLDAsMS0zLTMsMSwxLDAsMCwwLTIsMCwzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMlptLTQsMmE1LjAxNyw1LjAxNywwLDAsMC0xLTEsNS4wMTcsNS4wMTcsMCwwLDAsMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEsMUE1LjAxNyw1LjAxNywwLDAsMCw1OCw1MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",dSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNMjM4LjkzMywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1Y3Ni44YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1Y0Mi42NjcNCgkJCUMyNDcuNDY3LDM3Ljk1NiwyNDMuNjQ0LDM0LjEzMywyMzguOTMzLDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ3Ny44NjcsMzQuMTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNWNzYuOGMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNTNDg2LjQsODEuNTEsNDg2LjQsNzYuOFY0Mi42NjcNCgkJCUM0ODYuNCwzNy45NTYsNDgyLjU3NywzNC4xMzMsNDc3Ljg2NywzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNzkuMiwwSDguNTMzQzMuODIzLDAsMCwzLjgyMywwLDguNTMzdjQ5NC45MzNDMCw1MDguMTc3LDMuODIzLDUxMiw4LjUzMyw1MTJIMTc5LjJjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzDQoJCQlWOC41MzNDMTg3LjczMywzLjgyMywxODMuOTEsMCwxNzkuMiwweiBNMTcwLjY2Nyw0OTQuOTMzaC0xNTMuNlYxNy4wNjdoMTUzLjZWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMy40NjcsMzU4LjRIMTc5LjJjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YxMzYuNTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMjQuMjY3DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjM2Ni45MzNDNTEyLDM2Mi4yMjMsNTA4LjE3NywzNTguNCw1MDMuNDY3LDM1OC40eiBNNDk0LjkzMyw0OTQuOTMzaC0zMDcuMlYzNzUuNDY3aDMwNy4yDQoJCQlWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMy40NjcsMEgxNzkuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjM0LjEzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMzI0LjI2Nw0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1Y4LjUzM0M1MTIsMy44MjMsNTA4LjE3NywwLDUwMy40NjcsMHogTTQ5NC45MzMsMzQuMTMzaC0zMDcuMlYxNy4wNjdoMzA3LjJWMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTM2LjUzMywyNDcuNDY3aC0yNS42Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjUuNmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVMxNDEuMjQ0LDI0Ny40NjcsMTM2LjUzMywyNDcuNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTEwLjkzMywyNDcuNDY3Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MjUuNmMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNzOC41MzMtMy44MjMsOC41MzMtOC41MzNWMjU2DQoJCQlDMTE5LjQ2NywyNTEuMjksMTE1LjY0NCwyNDcuNDY3LDExMC45MzMsMjQ3LjQ2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Ni45MzMsNDE4LjEzM2gtNTEuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzczMuODIzLDguNTMzLDguNTMzLDguNTMzaDUxLjJjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzDQoJCQlTMzcxLjY0NCw0MTguMTMzLDM2Ni45MzMsNDE4LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM0MS4zMzMsNDE4LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjE3LjA2N2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNzOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCXYtMTcuMDY3QzM0OS44NjcsNDIxLjk1NiwzNDYuMDQ0LDQxOC4xMzMsMzQxLjMzMyw0MTguMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzI5OC42NjcsMzcuOTU2LDI5NC44NDQsMzQuMTMzLDI5MC4xMzMsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMywxMTkuNDY3Yy00NS45MzUsMC03Ni44LDE3LjE0My03Ni44LDQyLjY2N1YxNzkuMmMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMTcuMDY3djc2LjgNCgkJCWMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNIMzMyLjhjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi03Ni44SDM1OC40YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDMzY2LjkzMywxMzYuNjEsMzM2LjA2OCwxMTkuNDY3LDI5MC4xMzMsMTE5LjQ2N3ogTTM0OS44NjcsMTcwLjY2N0gzMzIuOGMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NkgyNTZ2LTc2LjgNCgkJCWMwLTQuNzEtMy44MjMtOC41MzMtOC41MzMtOC41MzNIMjMwLjR2LTguNTMzYzAtMTIuNDA3LDIwLjkzMi0yNS42LDU5LjczMy0yNS42czU5LjczMywxMy4xOTMsNTkuNzMzLDI1LjZWMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM0OS44NjcsMTE5LjQ2N2MtMTEuMzc1LDAtMjIuMDQyLDEuMDc1LTMxLjY5MywzLjE5MWMtMy45MTcsMC44NjItNi43MDcsNC4zMjYtNi43MDcsOC4zMzcNCgkJCWMwLDQuMDExLDIuNzksNy40NzUsNi43MDcsOC4zMzdjMTkuMjUxLDQuMjE1LDMxLjY5MywxMy4xNjcsMzEuNjkzLDIyLjgwMXY4LjUzM0gzMzIuOGMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjg1LjMzMw0KCQkJYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzNjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi03Ni44aDE3LjA2N2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTE3LjA2Nw0KCQkJQzQyNi42NjcsMTM2LjYxLDM5NS44MDIsMTE5LjQ2NywzNDkuODY3LDExOS40Njd6IE00MDkuNiwxNzAuNjY3aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1YyNTZoLTQyLjY2N3YtNjguMjY3DQoJCQlIMzU4LjRjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjdjMC05LjgxMy00LjczNi0xOC41NzctMTMuMzgtMjUuNTU3YzM2LjQzNywwLjgwMiw1Ni4wNDcsMTMuNTQyLDU2LjA0NywyNS41NTcNCgkJCVYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDA5LjYsMTE5LjQ2N2MtMTEuMzc1LDAtMjIuMDQyLDEuMDc1LTMxLjY5MywzLjE5MWMtMy45MTcsMC44NjItNi43MDcsNC4zMjYtNi43MDcsOC4zMzcNCgkJCWMwLDQuMDExLDIuNzksNy40NzUsNi43MDcsOC4zMzdjMTkuMjUxLDQuMjE1LDMxLjY5MywxMy4xNjcsMzEuNjkzLDIyLjgwMXY4LjUzM2gtMTcuMDY3Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2ODUuMzMzDQoJCQljMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDU5LjczM2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhoMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDNDg2LjQsMTM2LjYxLDQ1NS41MzUsMTE5LjQ2Nyw0MDkuNiwxMTkuNDY3eiBNNDY5LjMzMywxNzAuNjY3aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1YyNTZoLTQyLjY2N3YtNjguMjY3DQoJCQloMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3YzAtOS44MTMtNC43MzYtMTguNTc3LTEzLjM4LTI1LjU1N2MzNi40MzcsMC44MDIsNTYuMDQ3LDEzLjU0Miw1Ni4wNDcsMjUuNTU3DQoJCQlWMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTI5MC4xMzMsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTMzA0LjI0Nyw4NS4zMzMsMjkwLjEzMyw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTguNCwzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzM2Ni45MzMsMzcuOTU2LDM2My4xMSwzNC4xMzMsMzU4LjQsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzU4LjQsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTMzcyLjUxNCw4NS4zMzMsMzU4LjQsODUuMzMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI2LjY2NywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzQzNS4yLDM3Ljk1Niw0MzEuMzc3LDM0LjEzMyw0MjYuNjY3LDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQyNi42NjcsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTNDQwLjc4MSw4NS4zMzMsNDI2LjY2Nyw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00ODYuNCwzMjQuMjY3SDE3OS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MzQuMTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMDcuMg0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1YzMzIuOEM0OTQuOTMzLDMyOC4wOSw0OTEuMTEsMzI0LjI2Nyw0ODYuNCwzMjQuMjY3eiBNNDc3Ljg2NywzNTguNEgxODcuNzMzdi0xNy4wNjdoMjkwLjEzMw0KCQkJVjM1OC40eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY5LjMzMywzOTIuNTMzaC0yNTZjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y2OC4yNjdjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDI1Ng0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNjguMjY3QzQ3Ny44NjcsMzk2LjM1Niw0NzQuMDQ0LDM5Mi41MzMsNDY5LjMzMywzOTIuNTMzeiBNNDYwLjgsNDYwLjhIMjIxLjg2N3YtNTEuMkg0NjAuOA0KCQkJVjQ2MC44eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",hSe="PHN2ZyB2aWV3Qm94PSIwIDAgMzAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTk0LjgzNiA1OGgtMTE5LjMyOGMtMjQuNDQ1IDAtNDQuMzM2IDE5Ljg4OS00NC4zMzYgNDQuMzM2djExOS4zMjhjMCAyNC40NDcgMTkuODkxIDQ0LjMzNiA0NC4zMzYgNDQuMzM2aDExOS4zMjhjMjQuNDQ1IDAgNDQuMzM2LTE5Ljg4OSA0NC4zMzYtNDQuMzM2di0xMTkuMzI4YzAtMjQuNDQ3LTE5Ljg5MS00NC4zMzYtNDQuMzM2LTQ0LjMzNnptMzYuMzM2IDE2My42NjRjMCAyMC4wMzUtMTYuMzAxIDM2LjMzNi0zNi4zMzYgMzYuMzM2aC0xMTkuMzI4Yy0yMC4wMzUgMC0zNi4zMzYtMTYuMzAxLTM2LjMzNi0zNi4zMzZ2LTExOS4zMjhjMC0yMC4wMzUgMTYuMzAxLTM2LjMzNiAzNi4zMzYtMzYuMzM2aDExOS4zMjhjMjAuMDM1IDAgMzYuMzM2IDE2LjMwMSAzNi4zMzYgMzYuMzM2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM1LjE3MiA3NGMtNDkuNjI1IDAtOTAgNDAuMzczLTkwIDkwczQwLjM3NSA5MCA5MCA5MCA5MC00MC4zNzMgOTAtOTAtNDAuMzc1LTkwLTkwLTkwem0wIDE3MmMtNDUuMjE1IDAtODItMzYuNzg1LTgyLTgyczM2Ljc4NS04MiA4Mi04MiA4MiAzNi43ODUgODIgODItMzYuNzg1IDgyLTgyIDgyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM1LjE3MiA5MGMtNDAuODA1IDAtNzQgMzMuMTk1LTc0IDc0czMzLjE5NSA3NCA3NCA3NCA3NC0zMy4xOTUgNzQtNzQtMzMuMTk1LTc0LTc0LTc0em0wIDE0MGMtMzYuMzkxIDAtNjYtMjkuNjA3LTY2LTY2czI5LjYwOS02NiA2Ni02NiA2NiAyOS42MDcgNjYgNjYtMjkuNjEgNjYtNjYgNjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im03OS4xNzIgMTM4djMyYzAgMi4yMDkgMS43ODkgNCA0IDRoMTA0YzIuMjExIDAgNC0xLjc5MSA0LTR2LTMyYzAtMi4yMDktMS43ODktNC00LTRoLTEwNGMtMi4yMTEgMC00IDEuNzkxLTQgNHptOCA0aDk2djI0aC05NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExNy4xNzIgMTI4LjUzYzIuNTAxIDAgNC41My0yLjAyOCA0LjUzLTQuNTNzLTIuMDI4LTQuNTMtNC41My00LjUzLTQuNTMgMi4wMjgtNC41MyA0LjUzYzAgMi41MDEgMi4wMjggNC41MyA0LjUzIDQuNTN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjkuMTcyIDEyOC41M2MyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzcy0yLjAyOC00LjUzLTQuNTMtNC41My00LjUzIDIuMDI4LTQuNTMgNC41M2MwIDIuNTAxIDIuMDI4IDQuNTMgNC41MyA0LjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ1LjE3MiAxNTEuNDdjLTIuNTAyIDAtNC41MyAyLjAyOC00LjUzIDQuNTMgMCAyLjUwMSAyLjAyOCA0LjUzIDQuNTMgNC41MyAyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzLS4wMDEtMi41MDItMi4wMjktNC41My00LjUzLTQuNTN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDEuMTcyIDEyOC41M2MyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzcy0yLjAyOC00LjUzLTQuNTMtNC41My00LjUzIDIuMDI4LTQuNTMgNC41M2MwIDIuNTAxIDIuMDI4IDQuNTMgNC41MyA0LjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUzLjE3MiAxMjguNTNjMi41MDEgMCA0LjUzLTIuMDI4IDQuNTMtNC41M3MtMi4wMjgtNC41My00LjUzLTQuNTMtNC41MyAyLjAyOC00LjUzIDQuNTNjMCAyLjUwMSAyLjAyOCA0LjUzIDQuNTMgNC41M3oiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iMTk5LjE3MiIgY3k9IjM4IiByPSI0Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzkuMTcyIDQ2Yy02LjYxNyAwLTEyIDUuMzgzLTEyIDEyczUuMzgzIDEyIDEyIDEyIDEyLTUuMzgzIDEyLTEyLTUuMzgzLTEyLTEyLTEyem0wIDE2Yy0yLjIwNyAwLTQtMS43OTUtNC00czEuNzkzLTQgNC00IDQgMS43OTUgNCA0LTEuNzkzIDQtNCA0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY0LjgyOCAxMTAgMi44MjgtMi44MjhjMS41NjItMS41NjIgMS41NjItNC4wOTQgMC01LjY1NnMtNC4wOTQtMS41NjItNS42NTYgMGwtMi44MjggMi44MjgtMi44MjgtMi44MjhjLTEuNTYyLTEuNTYyLTQuMDk0LTEuNTYyLTUuNjU2IDBzLTEuNTYyIDQuMDk0IDAgNS42NTZsMi44MjggMi44MjgtMi44MjggMi44MjhjLTEuNTYyIDEuNTYyLTEuNTYyIDQuMDk0IDAgNS42NTYuNzgxLjc4MSAxLjgwNSAxLjE3MiAyLjgyOCAxLjE3MnMyLjA0Ny0uMzkxIDIuODI4LTEuMTcybDIuODI4LTIuODI4IDIuODI4IDIuODI4Yy43ODEuNzgxIDEuODA1IDEuMTcyIDIuODI4IDEuMTcyczIuMDQ3LS4zOTEgMi44MjgtMS4xNzJjMS41NjItMS41NjIgMS41NjItNC4wOTQgMC01LjY1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzOS4xNzIgMTk0aC00LjkzNGw1Ljg1OS05Ljc2OGMxLjEzNy0xLjg5NS41MjMtNC4zNTItMS4zNzEtNS40ODgtMS44OTgtMS4xMzctNC4zNTItLjUyMS01LjQ4OCAxLjM3MWwtOS40OTYgMTUuODI2Yy0uNzQyIDEuMjM2LS43NjIgMi43NzUtLjA1MSA0LjAyOXMyLjAzOSAyLjAyOSAzLjQ4IDIuMDI5aDUuNTI3bC01LjEwNSAxMC4yMTFjLS45ODggMS45NzctLjE4OCA0LjM3OSAxLjc4OSA1LjM2Ny41NzQuMjg3IDEuMTg0LjQyMiAxLjc4NS40MjIgMS40NjkgMCAyLjg3OS0uODA5IDMuNTgyLTIuMjExbDgtMTZjLjYyMS0xLjI0LjU1NS0yLjcxMy0uMTc2LTMuODkzLS43MjktMS4xNzYtMi4wMTQtMS44OTUtMy40MDEtMS44OTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05NS4xNzIgMTQ2Yy0yLjIxMSAwLTQgMS43OTEtNCA0djhjMCAyLjIwOSAxLjc4OSA0IDQgNHM0LTEuNzkxIDQtNHYtOGMwLTIuMjA5LTEuNzg5LTQtNC00eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTA3LjE3MiAxNDZjLTIuMjExIDAtNCAxLjc5MS00IDR2OGMwIDIuMjA5IDEuNzg5IDQgNCA0czQtMS43OTEgNC00di04YzAtMi4yMDktMS43ODktNC00LTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTkuMTcyIDE0NmMtMi4yMTEgMC00IDEuNzkxLTQgNHY4YzAgMi4yMDkgMS43ODkgNCA0IDRzNC0xLjc5MSA0LTR2LThjMC0yLjIwOS0xLjc4OS00LTQtNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzMS4xNzIgMTQ2Yy0yLjIxMSAwLTQgMS43OTEtNCA0djhjMCAyLjIwOSAxLjc4OSA0IDQgNHM0LTEuNzkxIDQtNHYtOGMwLTIuMjA5LTEuNzg5LTQtNC00eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYzLjE3MiAxNDZjLTIuMjExIDAtNCAxLjc5MS00IDR2OGMwIDIuMjA5IDEuNzg5IDQgNCA0czQtMS43OTEgNC00di04YzAtMi4yMDktMS43ODktNC00LTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzUuMTcyIDE0NmMtMi4yMTEgMC00IDEuNzkxLTQgNHY4YzAgMi4yMDkgMS43ODkgNCA0IDRzNC0xLjc5MSA0LTR2LThjMC0yLjIwOS0xLjc4OS00LTQtNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",zSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMi41IDUxMi41IiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNC43NSw0MTguNWMtNC4xNDMsMC03LjUsMy4zNTgtNy41LDcuNXY3OC41YzAsOS42NzMsMTUsOS42NzMsMTUsMFY0MjZDNTEyLjI1LDQyMS44NTgsNTA4Ljg5Myw0MTguNSw1MDQuNzUsNDE4LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDQuNzUsMjQ5LjM1NWgtNTguODk0di0yNy4wNDNoMTguMDExYzEwLjk2NCwwLDE5Ljg4My04LjkxOSwxOS44ODMtMTkuODgzVjE5Ljg4NEM0ODMuNzUsOC45Miw0NzQuODMxLDAsNDYzLjg2NywwICAgSDE4NC4wNTljLTEwLjk2NCwwLTE5Ljg4Myw4LjkyLTE5Ljg4MywxOS44ODR2MjYuOTI5YzAsOS42NzMsMTUsOS42NzMsMTUsMFYxOS44ODRjMC0yLjY5MywyLjE5LTQuODg0LDQuODgzLTQuODg0aDI3OS44MDkgICBjMi42OTIsMCw0Ljg4MywyLjE5MSw0Ljg4Myw0Ljg4NHYxNDUuNDI5aC0yMi44OTRWODUuNDA2YzAtMi40NzUtMS4yMjEtNC43OS0zLjI2My02LjE4OGMtMi4wNDEtMS4zOTgtNC42NDEtMS42OTktNi45NDktMC44MDUgICBjLTEuOTYyLDAuNzYxLTQzLjM0LDE3LjY1OS01Mi4xNDYsODYuODk5SDE3OS4xNzZ2LTc5LjVjMC05LjY3My0xNS05LjY3My0xNSwwdjExNi42MTdjMCwxMC45NjQsOC45MTksMTkuODgzLDE5Ljg4MywxOS44ODMgICBoMTAwLjc0NnYyNy4wNDNIMTE0LjUxNmMxNi42MTItMTYuNTk0LDE4LjIzNC00Mi44NzEsMTguMjM0LTY0Ljk0OWMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41aC00MC41di0xNC4xNTkgICBjMjQuMDYsNS4xMTQsNTAuMjg4LTE0LjYxNiw0OS45NjctMzkuNjQ1Yy0wLjA0My0zLjM1Mi0wLjQ1OS02Ljc1OC0zLjU1Ni04LjgwM2MtMTQuMjQ2LTkuNDAzLTMzLjg2Ni01LjQ4NS00Ni40MTEsNC43ODN2LTEzLjUyOSAgIGMyMS40MzMtMTQuNzkzLDIzLjAyNS00OS42MjksMi40MjktNjUuODg5Yy0yLjA3NS0xLjYzOC00LjM3MS0zLjE5Ny02LjgzNC00LjIwMWMtMTAuNTcxLTQuMzE2LTIyLjE5MSwxNC41MTMtMjQuNzEsMjEuNzgxICAgYy01Ljk1MSwxNy4xNzQtMC41NjgsMzYuOTI2LDE0LjExNCw0Ny44MjR2MTMuOTMxYy05LjYyNy03LjgzMy0yMi4yLTExLjY5Ni0zNC40ODMtOS4yMzZjLTUuMDc2LDEuMDE3LTEzLjk3MSwzLjMxNC0xNS4wNzgsOS40NjcgICBjLTQuNzU4LDI2LjQ3NiwyNS4yMzUsNDguNjQzLDQ5LjU2Miw0My41Mzl2MTQuMTM3aC00My41Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41YzAsMjIuMDQ3LDEuMTk2LDQ4LjM1NywxNy44MDYsNjQuOTQ5SDcuNzUgICBjLTQuMTQzLDAtNy41LDMuMzU4LTcuNSw3LjVWNTA0LjVjMCw5LjY3MywxNSw5LjY3MywxNSwwdi0zNWgxMzUuNXYzNWMwLDkuNjczLDE1LDkuNjczLDE1LDB2LTE5MWgyNjUuMjE1ICAgYzAuMDM5LDIuNjEzLDAuMjg5LDE2LjY4OCwwLjMyLDIwLjkwNkgzMDQuMzU2Yy0yOS42NTEsMC01MS42Miw3LjcxOC02NS4yOTgsMjIuOTM5Yy0xNi40MjIsMTguMjc0LTE0LjI2LDQwLjQyNi0xNC4xNTksNDEuMzU5ICAgYzAuNDA4LDMuODExLDMuNjI0LDYuNzAxLDcuNDU3LDYuNzAxaDk2Ljg5NHYxMy41aC0yOS41Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoMjkuNVY0OTdoLTk2Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoMTAwLjgyNSAgIGMwLjgzMiwwLjMxOCwxLjczMSwwLjUsMi42NzUsMC41czEuODQzLTAuMTgyLDIuNjc1LTAuNUg0NDAuMjVjOS42NzMsMCw5LjY3My0xNSwwLTE1aC05NnYtOTEuNTk0aDUwLjEwNiAgIGMxNy4yMTgsMCwyOS42NjQtNC4xNTEsMzguMDUyLTEyLjY5YzE0LjY5OS0xNC45NjUsMTQuMjUxLTQwLjAyMiwxMy42ODQtNzEuNzQ3Yy0wLjA0NC0yLjQ1NC0wLjA4Ny00Ljk1LTAuMTI1LTcuNDdoNTEuMjgzVjM4NCAgIGMwLDkuNjczLDE1LDkuNjczLDE1LDBWMjU2Ljg1NUM1MTIuMjUsMjUyLjcxMyw1MDguODkzLDI0OS4zNTUsNTA0Ljc1LDI0OS4zNTV6IE05Ny4yNzYsMTI4LjQ5NiAgIGM5LjY1Mi02LjEyNCwxOC4wNDktNC42ODEsMjIuNDIxLTMuMTM3Yy0xLjMyLDE1LjU0Ny0yMC4yMjEsMjYuODYtMzQuNjY4LDIxLjk2M0M4NS42MzUsMTQyLjUxMSw4OC4wNzcsMTM0LjMzMiw5Ny4yNzYsMTI4LjQ5NnogICAgTTQ3LjQyNCwxNDQuMDk3Yy02LjM3Mi00LjA0My0xMS43OTItMTEuMDA1LTEyLjQ5My0xOC43NDJjMTUuMDItNS4yOCwzMi42ODMsNi40MTgsMzQuNjQsMjEuOTY3ICAgQzYyLjI4NiwxNDkuNzkyLDUzLjgxLDE0OC4xNDgsNDcuNDI0LDE0NC4wOTd6IE03Ny42MzcsNTEuMTY5YzEyLjU2LDkuNTU0LDExLjk5NywzMS4zNTktMC4wNDQsNDEuMDU0ICAgYy0zLjcxNS0zLjA1NS05LjMxOS05LjQ4MS05LjMxOS0yMC40NDFDNjguMjczLDYwLjM1Miw3My45OTEsNTQuMDM1LDc3LjYzNyw1MS4xNjl6IE0zMy44NTYsMTkxLjkwNmg4My43ODEgICBjLTEuMjcsNDAuNTE1LTEzLjM2Miw1Ni41LTQxLjg4OCw1Ni41QzQ2LjgzMiwyNDguNDA3LDM1LjA3MiwyMzIuOTM2LDMzLjg1NiwxOTEuOTA2eiBNNDIxLjcwNywzODIuMjA1ICAgYy01LjQyMSw1LjUxOS0xNC4zNjcsOC4yMDEtMjcuMzUxLDguMjAxSDI0MC4wMTNjMC42OTQtNS45ODgsMy4wMDYtMTUuMDI2LDEwLjIwMy0yMy4wMzUgICBjMTAuNzEyLTExLjkyMSwyOC45MjctMTcuOTY1LDU0LjE0MS0xNy45NjVoMTI2LjczNkM0MzAuNDczLDM2NC4xMDUsNDI4LjI1MSwzNzUuNTQzLDQyMS43MDcsMzgyLjIwNXogTTQ2OC43NSwxODAuMzEzdjIyLjExNyAgIGMwLDIuNjkzLTIuMTksNC44ODMtNC44ODMsNC44ODNoLTE4LjAxMXYtMjdINDY4Ljc1eiBNNDE5LjEyNiwxMTEuMzU4YzQuMDg0LTUuMzk1LDguMTktOS40MSwxMS43My0xMi4zMjJ2MTg3Ljg2MyAgIGMtMy41MjgtMy4wMjMtNy42MDQtNy4xNDYtMTEuNjU5LTEyLjYyMmMtMTQuNjE1LTE5LjczOS0yMi4zNDEtNDguMDQ5LTIyLjM0MS04MS44NzIgICBDMzk2Ljg1NiwxNTguNjMyLDQwNC41NTgsMTMwLjYwNiw0MTkuMTI2LDExMS4zNTh6IE0zODMuODczLDIyMi4zMTNjMS40MzIsMTAuMDk1LDMuNTUzLDE5LjA3Nyw2LjEzOCwyNy4wNDNoLTI2Ljg5di0yNy4wNDMgICBIMzgzLjg3M3ogTTE3OS4xNzYsMjAyLjQyOXYtMjIuMTE3aDIwMi45OTNjLTAuNDY5LDguOTkyLTAuNDE1LDE4LjAxNSwwLjE2OSwyN0gxODQuMDU5ICAgQzE4MS4zNjYsMjA3LjMxMywxNzkuMTc2LDIwNS4xMjIsMTc5LjE3NiwyMDIuNDI5eiBNMjk5LjgwNSwyMjIuMzEzaDQ4LjMxNnYyNy4wNDNoLTQ4LjMxNlYyMjIuMzEzeiBNMzk1LjkwMSwyNjQuMzU1ICAgYzcuODE1LDE2LjcsMTcuNTE2LDI3LjQ4OCwyNS4zNjUsMzQuMTQ1SDE1LjI1di0zNC4xNDVIMzk1LjkwMXogTTE1LjI1LDQ1NC41di02M2gxMzUuNXY2M0gxNS4yNXogTTE1MC43NSwzNzYuNUgxNS4yNXYtNjNoMTM1LjUgICBWMzc2LjV6IE00NDUuODU2LDI5OC41di0zNC4xNDVoNTEuMzk0VjI5OC41SDQ0NS44NTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01NC43NSwzNTIuNWg1N2M5LjY3MywwLDkuNjczLTE1LDAtMTVoLTU3QzQ1LjA3NywzMzcuNSw0NS4wNzcsMzUyLjUsNTQuNzUsMzUyLjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTEuNzUsNDE1LjVoLTU3Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoNTdDMTIxLjQyMyw0MzAuNSwxMjEuNDIzLDQxNS41LDExMS43NSw0MTUuNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",wSe={Anteroom:bxe,Attic:Uxe,Balcony:$xe,Barn:Pxe,Basement:Wxe,Bathroom:Jxe,Bedroom:Bxe,"Boiler Room":"PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSItMyAwIDQ4MCA0ODAiIHdpZHRoPSI0ODBwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMjM0Ljk2ODc1IDY0Yy0xMy4yNTM5MDYgMC0yNCAxMC43NDYwOTQtMjQgMjRzMTAuNzQ2MDk0IDI0IDI0IDI0IDI0LTEwLjc0NjA5NCAyNC0yNC0xMC43NDYwOTQtMjQtMjQtMjR6bTAgMzJjLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDgtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzA2Ljk2ODc1IDE2MGgtMTQ0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djY0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoMTQ0YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LTY0YzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS04IDY0aC0xMjh2LTQ4aDEyOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xODYuOTY4NzUgMTkyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMTguOTY4NzUgMTkyaDMydjE2aC0zMnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjYuOTY4NzUgMTkyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzguOTY4NzUgNzJ2MzJoMTZ2LTI0aDE2di0xNmgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDY2Ljk2ODc1IDBoLTMyYy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djE5MmMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4aC01NnYtNTZoMjRjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNDhjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMjR2LTE2Yy0uMDI3MzQ0LTIyLjA4MjAzMS0xNy45MjE4NzUtMzkuOTcyNjU2LTQwLTQwaC0xNnYtMTZoLTE2djE2aC0xNy43NjE3MTlsLTYuNDgwNDY5LTI1LjkzNzVjLS44ODY3MTgtMy41NjI1LTQuMDg1OTM3LTYuMDYyNS03Ljc1NzgxMi02LjA2MjVoLTQ4Yy0zLjY3MTg3NSAwLTYuODcxMDk0IDIuNS03Ljc2MTcxOSA2LjA2MjVsLTYuNDgwNDY5IDI1LjkzNzVoLTE3Ljc1NzgxMnYtMTZoLTE2djE2aC0xNmMtMjIuMDgyMDMxLjAyNzM0NC0zOS45NzI2NTYgMTcuOTE3OTY5LTQwIDQwdjU2aC0yNGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHY2NGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDI0djIyNGgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2MzJjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg5NmM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0zMmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04aC0yNHYtNDEuNzEwOTM4YzEyLjM3MTA5NCA2LjM3NSAyNi4wODIwMzEgOS43MDMxMjYgNDAgOS43MTA5MzhoOHYyNGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDQ4YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LTI0aDhjMTMuOTE0MDYyLS4wMDc4MTIgMjcuNjI4OTA2LTMuMzM1OTM4IDQwLTkuNzEwOTM4djQxLjcxMDkzOGgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2MzJjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg5NmM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0zMmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04aC0yNHYtMTc2aDU2YzMwLjkxMDE1Ni0uMDM5MDYyIDU1Ljk2MDkzOC0yNS4wODk4NDQgNTYtNTZ2LTE5MmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04em0tODggMTA0djMyaC0xNnYtMzJ6bS0xNjEuNzUzOTA2LTg4aDM1LjUwMzkwNmw0IDE2aC00My41MDM5MDZ6bS05NC4yNDYwOTQgNTZjMC0xMy4yNTM5MDYgMTAuNzQ2MDk0LTI0IDI0LTI0aDE3NmMxMy4yNTM5MDYgMCAyNCAxMC43NDYwOTQgMjQgMjR2NTZoLTIyNHptLTMyIDEyMHYtNDhoMTZ2NDh6bTgwIDI3MmgtODB2LTE2aDgwem0tMzItMzJoLTE2di02OS41NTg1OTRjNC41MzUxNTYgNi40ODQzNzUgOS45MTQwNjIgMTIuMzMyMDMyIDE2IDE3LjM5MDYyNXptMTEyLTE2aC0zMnYtMTZoMzJ6bTEyOCA0OGgtODB2LTE2aDgwem0tMzItMzJoLTE2di01Mi4xNjc5NjljNi4wODIwMzEtNS4wNTg1OTMgMTEuNDY0ODQ0LTEwLjkwNjI1IDE2LTE3LjM5MDYyNXptMC0xMjBjLS4wNDI5NjkgMzkuNzQ2MDk0LTMyLjI1MzkwNiA3MS45NTcwMzEtNzIgNzJoLTgwYy0zOS43NDYwOTQtLjA0Mjk2OS03MS45NTcwMzEtMzIuMjUzOTA2LTcyLTcydi0xNjhoMjI0em0xMTItMTEyYy0uMDI3MzQ0IDIyLjA4MjAzMS0xNy45MjE4NzUgMzkuOTcyNjU2LTQwIDQwaC01NnYtMTZoNTZjMTMuMjUzOTA2IDAgMjQtMTAuNzQ2MDk0IDI0LTI0di0xODRoMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNTYuNjI1IDUzLjY1NjI1IDEwLjM0Mzc1LTEwLjM0Mzc1IDE4LjM0Mzc1IDE4LjM0Mzc1IDExLjMxMjUtMTEuMzEyNS0yNC0yNGMtMy4xMjUtMy4xMjEwOTQtOC4xODc1LTMuMTIxMDk0LTExLjMxMjUgMGwtMTAuOTM3NSAxMC45Mzc1LTM0LjM5ODQzOC0yNy41MjczNDQtMTAuMDA3ODEyIDEyLjQ5MjE4OCA0MCAzMmMzLjE4MzU5NCAyLjU1MDc4MSA3Ljc3MzQzOCAyLjI5Mjk2OCAxMC42NTYyNS0uNTg5ODQ0em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTAgODcuNDMzNTk0IDQwIDE2YzIuOTcyNjU2IDEuMTgzNTk0IDYuMzYzMjgxLjQ4NDM3NSA4LjYyNS0xLjc3NzM0NGwxMS45MTc5NjktMTEuOTIxODc1IDI2Ljg0NzY1NiAxMy40NjQ4NDQgNy4xNTIzNDQtMTQuMzIwMzEzLTMyLTE2Yy0zLjA3ODEyNS0xLjUzNTE1Ni02Ljc5Njg3NS0uOTI5Njg3LTkuMjMwNDY5IDEuNTAzOTA2bC0xMi4yNzM0MzggMTIuMjI2NTYzLTM1LjEwMTU2Mi0xNC4wNDI5Njl6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Carport:Rxe,Cellar:Fxe,Chamber:Gxe,Corridor:Hxe,"Dining Area":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==","Dining Room":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Dining:Vxe,"Dressing Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Ny4wMDQgMjc2LjE2OWMwLTQuMTM5IDMuMzc0LTcuNTEyIDcuNTEyLTcuNTEyczcuNDgzIDMuMzczIDcuNDgzIDcuNTEydjEzNy4zNCAzOS45OTdjMCA0LjEzOS0zLjM0NSA3LjQ4My03LjQ4MyA3LjQ4M2gtNDk3LjAwNGMtNC4xMzkgMC03LjUxMi0zLjM0NS03LjUxMi03LjQ4MyAwLTEyNC43NTQgMC0yNDkuNTM2IDAtMzc0LjI5MSAwLTcuNzY3IDMuMTc1LTE0LjgyNSA4LjI3Ny0xOS45MjggNS4xMDMtNS4xMDMgMTIuMTYxLTguMjc3IDE5LjkyOC04LjI3N2gxMjQuMjQ0YzcuOTA5IDAgMTUuMzY0IDMuMzE2IDIwLjcyMiA5LjA5OSA1LjM1Ny01Ljc4MyAxMi44MTItOS4wOTkgMjAuNzIyLTkuMDk5aDEyNC4yNDNjNy44ODEgMCAxNS4zNjQgMy4zMTYgMjAuNjkzIDkuMDk5IDUuMzU4LTUuNzgzIDEyLjgxMy05LjA5OSAyMC43MjItOS4wOTloMTI0LjI0NGM3Ljc2NyAwIDE0LjgyNiAzLjE3NSAxOS45MjggOC4yNzcgNS4xMDIgNS4xMDMgOC4yNzcgMTIuMTYxIDguMjc3IDE5LjkyOHYyNS42MjUgMTM3LjM0YzAgNC4xMzktMy4zNDUgNy41MTItNy40ODMgNy41MTItNC4xMzkgMC03LjUxMi0zLjM3My03LjUxMi03LjUxMnYtMTI5Ljg1NWgtNjcuODM1djEyLjkyNmw0Ni44MyAyMy44MzljNC4xOTUgMi4xMjYgNy4xMTUgNS43NTUgOC40NDcgOS44OTQgMS4zNiA0LjEzOSAxLjEzNCA4Ljc4Ny0uOTkyIDEyLjk1NC0xLjQ0NiAyLjgzNS0zLjY1NyA1LjE1OS02LjI5MyA2Ljc3NS0yLjY2NCAxLjY0NC01LjcyNiAyLjUyMy04Ljg3MiAyLjUyM2gtMy4zNDV2OTUuNjEzYzAgNC4xMzktMy4zNDUgNy40ODQtNy40ODQgNy40ODRoLTcxLjE1Yy00LjEzOSAwLTcuNDgzLTMuMzQ1LTcuNDgzLTcuNDg0di0zNC41NTRjMC00LjE2NyAzLjM0NS03LjUxMiA3LjQ4My03LjUxMiA0LjEzOSAwIDcuNTEyIDMuMzQ1IDcuNTEyIDcuNTEydjI3LjA0M2g1Ni4xMjd2LTg4LjEwMmgtNTYuMTI3djI3LjA3MWMwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEycy03LjQ4My0zLjM3My03LjQ4My03LjUxMnYtMjcuMDcxaC0zLjM0NWMtNC43MDYgMC04Ljk1Ny0xLjg5OS0xMi4wMTktNC45ODktMy4wOS0zLjA2MS00Ljk4OS03LjMxMy00Ljk4OS0xMi4wMTkgMC0zLjM0NS45OTItNi41MiAyLjY5My05LjE1NiAxLjcyOS0yLjY2NCA0LjEzOS00LjgxOSA2Ljk3NC02LjE4bDQ2LjAzNS0yMy40NDN2LTEzLjEyNGgtNjcuODM0djI5My43MDFoMTUwLjY2M3YtMTI5Ljg1N3ptLTczLjg0My0xMzcuMTk5Yy0uODIyLS41MS0xLjY3Mi0uNTEtMi40OTUgMGwtNDUuNzIzIDIzLjMwMWMtLjkwNy4zNC0xLjQ3NC45MzYtMS40NzQgMS45NTYgMCAxLjEwNS45MDcgMi4wMTMgMi4wMTMgMi4wMTNoOTIuODA3Yy43OTMgMCAxLjQ0Ni0uMzk3IDEuNzg2LTEuMTA1LjUxLS45OTIuMTQyLTIuMTgzLS44NzgtMi42OTNsLTE1LjMzNi03LjgyM2MtOS4wNDMtNC41OTMtMTguMDU3LTkuMTU4LTMwLjctMTUuNjQ5em0tMTY1LjgtLjA4NWMtLjcwOS0uNDI1LTEuNDc0LS40MjUtMi4yNCAwbC00NS44NjUgMjMuMzg2Yy0uODc5LjM0LTEuNDQ2LjkzNi0xLjQ0NiAxLjk1NiAwIDEuMTA1LjkwNyAyLjAxMyAyLjAxMyAyLjAxM2g5Mi44MDdjLjc5NCAwIDEuNDQ2LS4zOTcgMS43ODYtMS4xMDUuNTEtLjk5Mi4xNDItMi4xODMtLjg3OS0yLjY5My0xNS4zOTItNy44MjQtMzAuODEyLTE1LjY0OC00Ni4xNzYtMjMuNTU3em0tMjExLjY2Ni0yNi41NmMtNC4xMzkgMC03LjUxMi0zLjM0NS03LjUxMi03LjQ4NHMzLjM3My03LjUxMiA3LjUxMi03LjUxMmg4OS4yOTJjNC4xMzggMCA3LjUxMiAzLjM3NCA3LjUxMiA3LjUxMiAwIDQuMTM5LTMuMzczIDcuNDg0LTcuNTEyIDcuNDg0em0wIDEwMS45MzRjLTQuMTM5IDAtNy41MTItMy4zNzMtNy41MTItNy41MTJzMy4zNzMtNy40ODMgNy41MTItNy40ODNoODkuMjkyYzQuMTM4IDAgNy41MTIgMy4zNDUgNy41MTIgNy40ODMgMCA0LjEzOS0zLjM3MyA3LjUxMi03LjUxMiA3LjUxMnptMC0zMy45ODhjLTQuMTM5IDAtNy41MTItMy4zNDUtNy41MTItNy40ODNzMy4zNzMtNy41MTIgNy41MTItNy41MTJoODkuMjkyYzQuMTM4IDAgNy41MTIgMy4zNzMgNy41MTIgNy41MTJzLTMuMzczIDcuNDgzLTcuNTEyIDcuNDgzem0wLTMzLjk1OWMtNC4xMzkgMC03LjUxMi0zLjM3My03LjUxMi03LjUxMnMzLjM3My03LjQ4MyA3LjUxMi03LjQ4M2g4OS4yOTJjNC4xMzggMCA3LjUxMiAzLjM0NSA3LjUxMiA3LjQ4MyAwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEyem0yMDIuODIyLTIwLjg2M3YtMTMuMTI0aC02Ny44MzR2MTI5Ljg1N2MwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEycy03LjUxMi0zLjM3My03LjUxMi03LjUxMnYtMTYyLjk2N2MwLTMuNjI4LTEuNDc0LTYuOTE3LTMuODgzLTkuMzI2LTIuMzgxLTIuMzgxLTUuNjk4LTMuODg0LTkuMzI2LTMuODg0aC0xMjQuMjQ0Yy0zLjYyOCAwLTYuOTE3IDEuNTAyLTkuMzI3IDMuODg0LTIuMzgxIDIuNDA5LTMuODgzIDUuNjk3LTMuODgzIDkuMzI2djE5Mi4zNjFoMTUuMzA4YzYuMDk0IDAgMTEuNTk0IDIuNDY2IDE1LjU5IDYuNDY0IDMuOTk3IDMuOTk3IDYuNDkyIDkuNTI1IDYuNDkyIDE1LjU5djIzLjMwMWMwIDYuMDY3LTIuNDk1IDExLjU5NC02LjQ5MiAxNS41OTFzLTkuNDk2IDYuNDYzLTE1LjU5IDYuNDYzaC0xNS4zMDh2MTA3LjAwOWgxNTAuNjYzdi0xNjkuODI1YzAtNC4xMzkgMy4zNzQtNy41MTIgNy41MTItNy41MTJzNy41MTIgMy4zNzMgNy41MTIgNy41MTJ2MTI5Ljg1NmgxNTAuNjYzdi0yOTMuN2gtNjcuODM0djEyLjkyNmw0Ni42MyAyMy43MjZjNC4xNjcgMi4xMjYgNy4yIDUuNTI4IDguNjQ2IDEwLjAwNyAyLjQ2NiA3LjU2OC0uNTM5IDE1LjU5LTcuMjg1IDE5LjcyOS0yLjY2NCAxLjY0NC01Ljc1NCAyLjUyMy04Ljg3MiAyLjUyM2gtOTIuODA3Yy00LjcwNiAwLTguOTU4LTEuODk5LTEyLjA0Ny00Ljk4OS0zLjA2MS0zLjA2MS00Ljk2LTcuMzEzLTQuOTYtMTIuMDE5IDAtMy4zNDUuOTkyLTYuNTIgMi42OTMtOS4xNTYgMS43MDEtMi42NjQgNC4xMS00LjgxOSA2Ljk3My02LjE4em0tMjMzLjUyMSAxNzIuMzJoNi4wOTRjNC4xMzkgMCA3LjUxMiAzLjM3MyA3LjUxMiA3LjUxMnMtMy4zNzMgNy41MTItNy41MTIgNy41MTJoLTYuMDk0djExLjE5OGgxNS4zMDhjMS45NTYgMCAzLjcxMy0uNzk0IDQuOTg5LTIuMDY5IDEuMjc2LTEuMzA1IDIuMDk4LTMuMDYxIDIuMDk4LTQuOTl2LTIzLjMwMmMwLTEuOTI4LS44MjItMy42ODUtMi4wOTgtNC45ODktMS4yNzUtMS4yNzYtMy4wMzMtMi4wNjktNC45ODktMi4wNjloLTE1LjMwOHptMzMxLjM0NS0yMTguNTU0djE4LjExM2gxNTAuNjYzdi0xOC4xMTNjMC0zLjYyOC0xLjQ3NC02LjkxNy0zLjg4My05LjMyNi0yLjQwOS0yLjM4MS01LjY5OC0zLjg4NC05LjMyNy0zLjg4NGgtMTI0LjI0M2MtMy42MjggMC02LjkxNyAxLjUwMi05LjMyNiAzLjg4NC0yLjQxIDIuNDEtMy44ODQgNS42OTgtMy44ODQgOS4zMjZ6bS0xNjUuNjU4IDE4LjExNGgxNTAuNjYzdi0xOC4xMTRjMC0zLjYyOC0xLjUwMi02LjkxNy0zLjg4My05LjMyNi0yLjQxLTIuMzgxLTUuNjk4LTMuODg0LTkuMzI3LTMuODg0aC0xMjQuMjQzYy0zLjYyOSAwLTYuOTQ1IDEuNTAyLTkuMzI3IDMuODg0LTIuNDEgMi40MDktMy44ODMgNS42OTctMy44ODMgOS4zMjZ6bTMxNi4zMjEgMzIzLjY5MmgtMzE2LjMyMXYyNC45NzNoMzE2LjMyMnYtMjQuOTczeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Driveway:Zxe,Entrance:Xxe,"Equipment Room":"PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC00IDUxMiA1MTIiIHdpZHRoPSI1MTJwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzAzLjA5Mzc1IDE3NC4yNWMzLjM5NDUzMSAyLjM3ODkwNiA4LjA3MDMxMiAxLjU1MDc4MSAxMC40NDUzMTItMS44Mzk4NDRsMTUuOTUzMTI2LTIyLjc4OTA2MmMyLjM3ODkwNi0zLjM5NDUzMiAxLjU1NDY4Ny04LjA3MDMxMy0xLjgzOTg0NC0xMC40NDUzMTMtMy4zOTQ1MzItMi4zNzUtOC4wNzAzMTMtMS41NTA3ODEtMTAuNDQ1MzEzIDEuODQzNzVsLTE1Ljk1NzAzMSAyMi43ODUxNTdjLTIuMzc1IDMuMzk0NTMxLTEuNTUwNzgxIDguMDcwMzEyIDEuODQzNzUgMTAuNDQ1MzEyem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MS42NzE4NzUgMTU1Ljk4NDM3NS01LjQxNzk2OSAyNy4yODUxNTZjLS45MTc5NjggNC42NDA2MjUgMi42MzI4MTMgOC45NjA5MzggNy4zNjcxODggOC45NjA5MzggMy41MDc4MTIgMCA2LjY0MDYyNS0yLjQ3MjY1NyA3LjM0NzY1Ni02LjAzOTA2M2w1LjQxNDA2Mi0yNy4yODkwNjJjLjgwODU5NC00LjA2MjUtMS44MzIwMzEtOC4wMTE3MTktNS44OTQ1MzEtOC44MTY0MDYtNC4wNjY0MDYtLjgwNDY4OC04LjAxMTcxOSAxLjgzMjAzMS04LjgxNjQwNiA1Ljg5ODQzN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMDkuNTg5ODQ0IDEyMS40NDkyMTljLTIuMTQ0NTMyLTMuNTQyOTY5LTYuNzU3ODEzLTQuNjcxODc1LTEwLjMwMDc4Mi0yLjUyNzM0NGwtMjMuNzg5MDYyIDE0LjQyMTg3NWMtMy41NDI5NjkgMi4xNDg0MzgtNC42NzE4NzUgNi43NjE3MTktMi41MjczNDQgMTAuMzA0Njg4IDIuMTUyMzQ0IDMuNTQyOTY4IDYuNzY1NjI1IDQuNjY3OTY4IDEwLjMwNDY4OCAyLjUyMzQzN2wyMy43ODkwNjItMTQuNDE3OTY5YzMuNTQyOTY5LTIuMTQ4NDM3IDQuNjcxODc1LTYuNzYxNzE4IDIuNTIzNDM4LTEwLjMwNDY4N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04My42NTIzNDQgMTUyLjE3OTY4OGMyLjc1NzgxMiAxLjM1OTM3NCA2LjExMzI4MSAxLjQwNjI1IDguOTY4NzUgMCA3LTMuNDUzMTI2IDI5LjgzNTkzNy0xNi41MDc4MTMgMjkuODM1OTM3LTM5LjQ2NDg0NCAwLTE4LjIwMzEyNS0yMS4yMTQ4NDMtMjcuMDY2NDA2LTM0LjMxMjUtMTYuMDc0MjE5LTUuMDYyNS00LjI2MTcxOS0xMS45NDE0MDYtNS44OTA2MjUtMTguNzUzOTA2LTQuMDg5ODQ0LTkuMzE2NDA2IDIuNDU3MDMxLTE1LjU3MDMxMyAxMC41NjI1LTE1LjU3MDMxMyAyMC4xNjQwNjMgMCAyMy4wMTU2MjUgMjIuODQzNzUgMzYuMDMxMjUgMjkuODMyMDMyIDM5LjQ2NDg0NHptLTMuNzc3MzQ0LTQyLjM2NzE4OGMxLjM5ODQzOCAyLjQ2ODc1IDQuNDY4NzUgNC42MjUgOC4wMjM0MzggNC43MTA5MzggMy41ODIwMzEuMTEzMjgxIDYuOTcyNjU2LTIuMDQ2ODc2IDguNDYwOTM3LTQuNjUyMzQ0IDMuMDU0Njg3LTUuMzU1NDY5IDExLjA5NzY1Ni0zLjE0NDUzMiAxMS4wOTc2NTYgMi44NDc2NTYgMCAxMi42OTE0MDYtMTMuMzk0NTMxIDIxLjU2NjQwNi0xOS4zMjQyMTkgMjQuODc1LTUuOTI5Njg3LTMuMjkyOTY5LTE5LjMxMjUtMTIuMTQ0NTMxLTE5LjMxMjUtMjQuODc1IDAtNi4wNDI5NjkgOC4wODU5MzgtOC4xMzI4MTIgMTEuMDU0Njg4LTIuOTA2MjV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQxLjE0MDYyNSAxMDMuNjE3MTg4aDI5LjYzNjcxOWM0LjE0NDUzMSAwIDcuNS0zLjM1NTQ2OSA3LjUtNy41IDAtNC4xNDA2MjYtMy4zNTU0NjktNy41LTcuNS03LjVoLTI5LjYzNjcxOWMtNC4xNDQ1MzEgMC03LjUgMy4zNTkzNzQtNy41IDcuNSAwIDQuMTQ0NTMxIDMuMzU1NDY5IDcuNSA3LjUgNy41em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0MS4xNDA2MjUgMTMwLjAyNzM0NGgyOS42MzY3MTljNC4xNDQ1MzEgMCA3LjUtMy4zNTU0NjkgNy41LTcuNSAwLTQuMTQ0NTMyLTMuMzU1NDY5LTcuNS03LjUtNy41aC0yOS42MzY3MTljLTQuMTQ0NTMxIDAtNy41IDMuMzU1NDY4LTcuNSA3LjUgMCA0LjE0MDYyNSAzLjM1NTQ2OSA3LjUgNy41IDcuNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDEuMTQwNjI1IDE1Ni40Mzc1aDI5LjYzNjcxOWM0LjE0NDUzMSAwIDcuNS0zLjM1NTQ2OSA3LjUtNy41cy0zLjM1NTQ2OS03LjUtNy41LTcuNWgtMjkuNjM2NzE5Yy00LjE0NDUzMSAwLTcuNSAzLjM1NTQ2OS03LjUgNy41czMuMzU1NDY5IDcuNSA3LjUgNy41em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NS43Njk1MzEgMTUuMDA3ODEyYzQuMTQ0NTMxIDAgNy41LTMuMzU1NDY4IDcuNS03LjUgMC00LjE0NDUzMS0zLjM1NTQ2OS03LjQ5OTk5OTUtNy41LTcuNDk5OTk5NWgtNzMuNzEwOTM3Yy0uMTE3MTg4IDAtLjIzMDQ2OS4wMTE3MTg3LS4zNDc2NTYuMDE1NjI1LTIuNDk2MDk0LS4xMjg5MDY1LTUgLjk4NDM3NDUtNi41MzkwNjMgMy4xODM1OTM1bC0yNS44OTA2MjUgMzYuOTcyNjU3LTMyLjgzOTg0NC0yMi45OTYwOTRjLTE3LjM3MTA5NC0xMi4xNjQwNjMtMzguOTAyMzQ0LTE2LjI4OTA2My01OS41OTM3NS0xMS41MzkwNjNsLTIuNTk3NjU2LTEuODIwMzEyYy05LjU4OTg0NC02LjcxMDkzOC0yMi44MTY0MDYtNC4zNDc2NTctMjkuNSA1LjE5OTIxOWwtNS45Njg3NSA4LjUyMzQzN2MtNi42OTUzMTIgOS41NjI1LTQuMzYzMjgxIDIyLjgwMDc4MSA1LjIwMzEyNSAyOS40OTYwOTRsMi4wNDY4NzUgMS40MzM1OTNjLTYuODU5Mzc1IDMwLjYxNzE4OCAyNi44NjMyODEgNTQuMDgyMDMyIDUzLjE3OTY4OCAzNy4yMzgyODJsNC4xOTE0MDYgMi45MzM1OTRjLTYuODUxNTYzIDMwLjU3MDMxMiAyNi44MDQ2ODcgNTQuMTE3MTg3IDUzLjE3NTc4MSAzNy4yMzgyODFsNC4xOTUzMTMgMi45MzM1OTNjLTYuODU5Mzc2IDMwLjYxNzE4OCAyNi44NjMyODEgNTQuMDc4MTI2IDUzLjE3NTc4MSAzNy4yMzQzNzZsMi4wNTQ2ODcgMS40NDE0MDZjOS41NjY0MDYgNi42OTUzMTIgMjIuODAwNzgyIDQuMzYzMjgxIDI5LjQ5NjA5NC01LjIwMzEyNWw1Ljk2ODc1LTguNTIzNDM4YzYuNjk1MzEyLTkuNTYyNSA0LjM2MzI4MS0yMi44MDA3ODEtNS4xOTkyMTktMjkuNDk2MDkzbC0zLjI3MzQzNy0yLjI5Mjk2OWMtMi42MTMyODItMjEuMDY2NDA3LTEzLjg1NTQ2OS0zOS44ODY3MTktMzEuMjI2NTYzLTUyLjA1NDY4OGwtMzAuMTk5MjE5LTIxLjE0MDYyNSAyMy42NTIzNDQtMzMuNzc3MzQ0em0tMjE1LjQ1NzAzMSA0My40NzI2NTcgMjQuNjIxMDk0IDE3LjI0MjE4N2MtMTEuNzk2ODc1IDIuNzkyOTY5LTIzLjIyMjY1Ni01LjIzNDM3NS0yNC42MjEwOTQtMTcuMjQyMTg3em01Ny4zNjcxODggNDAuMTY3OTY5IDI0LjYyNSAxNy4yNDIxODdjLTExLjc2OTUzMiAyLjc5Njg3NS0yMy4yMjI2NTctNS4yMDcwMzEtMjQuNjI1LTE3LjI0MjE4N3ptNTcuMzcxMDkzIDQwLjE3MTg3NGMxNC45MTc5NjkgMTAuNDQ1MzEzIDkuNzc3MzQ0IDYuODQzNzUgMjQuNjI1IDE3LjI0MjE4OC0xMS43NzM0MzcgMi43OTY4NzUtMjMuMjIyNjU2LTUuMjE0ODQ0LTI0LjYyNS0xNy4yNDIxODh6bTY0LjEyODkwNyA2LjM0Mzc1LTUuOTY4NzUgOC41MjM0MzhjLTEuOTUzMTI2IDIuNzg5MDYyLTUuODEyNSAzLjQ3MjY1Ni04LjYwNTQ2OSAxLjUxOTUzMS0yLjQxMDE1Ny0xLjY4NzUtMTY5Ljg1OTM3NS0xMTguOTQxNDA2LTE3Mi4wMTk1MzEtMTIwLjQ0OTIxOS0yLjc2OTUzMi0xLjk0MTQwNi0zLjQ1NzAzMi01LjgzMjAzMS0xLjUxNTYyNi04LjYwNTQ2OGw1Ljk2ODc1LTguNTIzNDM4YzEuOTQ5MjE5LTIuNzgxMjUgNS44NDM3NS0zLjQ0OTIxOCA4LjYwNTQ2OS0xLjUxNTYyNWwxNzIuMDE5NTMxIDEyMC40NDUzMTNjMi43NzM0MzggMS45NDE0MDYgMy40NTcwMzIgNS44MzU5MzcgMS41MTU2MjYgOC42MDU0Njh6bS0xNC45MDIzNDQtMzYuMjg5MDYyYy03Ljg5NDUzMi01LjUzMTI1LTEyNS4wNDY4NzUtODcuNTU4NTk0LTEyOC43MTA5MzgtOTAuMTI1IDExLjQ3MjY1Ni4zNTE1NjIgMjIuNjcxODc1IDQgMzIuMjczNDM4IDEwLjcyMjY1Nmw3NS4zMjQyMTggNTIuNzQyMTg4YzkuNTk3NjU3IDYuNzIyNjU2IDE2Ljg1OTM3NiAxNiAyMS4xMTMyODIgMjYuNjYwMTU2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5MC44MjAzMTIgMzEwLjUxNTYyNWgtMjE3LjMyMDMxMmMtNC4xNDQ1MzEgMC03LjUgMy4zNTkzNzUtNy41IDcuNSAwIDQuMTQ0NTMxIDMuMzU1NDY5IDcuNTAzOTA2IDcuNSA3LjUwMzkwNmgyMTcuMzIwMzEyYzMuNDA2MjUgMCA2LjE3OTY4OCAyLjc2OTUzMSA2LjE3OTY4OCA2LjE3NTc4MXYxMy42Nzk2ODhjMCAzLjQwNjI1LTIuNzczNDM4IDYuMTc5Njg4LTYuMTc5Njg4IDYuMTc5Njg4LTMuNDQ1MzEyIDAtNDYzLjYwOTM3NCAwLTQ2OS42NDA2MjQgMC0zLjQwNjI1IDAtNi4xNzk2ODgtMi43Njk1MzItNi4xNzk2ODgtNi4xNzk2ODh2LTEzLjY3OTY4OGMwLTMuNDA2MjUgMi43NzM0MzgtNi4xNzU3ODEgNi4xNzk2ODgtNi4xNzU3ODFoMjE3LjMyMDMxMmM0LjE0NDUzMSAwIDcuNS0zLjM1OTM3NSA3LjUtNy41MDM5MDYgMC00LjE0MDYyNS0zLjM1NTQ2OS03LjUtNy41LTcuNWgtODUuMzU1NDY5Yy41OTc2NTctMS45NTMxMjUuOTI1NzgxLTQuMDI3MzQ0LjkyNTc4MS02LjE3NTc4MXYtMTMuNjc5Njg4YzAtMTEuNjc5Njg3LTkuNS0yMS4xNzk2ODctMjEuMTc5Njg3LTIxLjE3OTY4N2gtMTExLjcxMDkzN2MtMTEuNjc5Njg4IDAtMjEuMTc5Njg4IDkuNS0yMS4xNzk2ODggMjEuMTc5Njg3djEzLjY3OTY4OGMwIDUuMjE0ODQ0IDEuOTAyMzQ0IDkuOTg0Mzc1IDUuMDM5MDYyIDEzLjY3OTY4Ny0zLjEzNjcxOCAzLjY5MTQwNy01LjAzOTA2MiA4LjQ2NDg0NC01LjAzOTA2MiAxMy42NzU3ODF2MTMuNjc5Njg4YzAgMTEuMzI4MTI1IDguOTQ1MzEyIDIwLjU3ODEyNSAyMC4xMzY3MTkgMjEuMTI4OTA2djYuNjA5Mzc1YzAgMTEuNjc5Njg4IDkuNTAzOTA2IDIxLjE3OTY4OCAyMS4xNzk2ODcgMjEuMTc5Njg4aDIwLjcxNDg0NHY5NS4xNDA2MjVjMCA3Ljg3ODkwNiA2LjQxMDE1NiAxNC4yODkwNjIgMTQuMjkyOTY5IDE0LjI4OTA2MmgxNC4xNTIzNDNjNy44Nzg5MDcgMCAxNC4yOTI5NjktNi40MTAxNTYgMTQuMjkyOTY5LTE0LjI4OTA2MnYtOTUuMTQwNjI1aDMwMi40NjA5Mzh2OTUuMTQwNjI1YzAgNy44Nzg5MDYgNi40MTAxNTYgMTQuMjg5MDYyIDE0LjI5Mjk2OSAxNC4yODkwNjJoMTQuMTUyMzQzYzcuODgyODEzIDAgMTQuMjkyOTY5LTYuNDEwMTU2IDE0LjI5Mjk2OS0xNC4yODkwNjJ2LTk1LjE0MDYyNWgyMC43MTA5MzhjMTEuNjc5Njg3IDAgMjEuMTc5Njg3LTkuNSAyMS4xNzk2ODctMjEuMTc5Njg4di02LjYwOTM3NWMxMS4xOTUzMTMtLjU1MDc4MSAyMC4xNDA2MjUtOS44MDA3ODEgMjAuMTQwNjI1LTIxLjEyODkwNnYtMTMuNjc5Njg4YzAtMTEuNjc1NzgxLTkuNS0yMS4xNzk2ODctMjEuMTc5Njg4LTIxLjE3OTY4N3ptLTQ3NS44MjAzMTItMTkuODU1NDY5YzAtMy40MDYyNSAyLjc3MzQzOC02LjE3OTY4NyA2LjE3OTY4OC02LjE3OTY4N2gxMTEuNzEwOTM3YzMuNDA2MjUgMCA2LjE3OTY4NyAyLjc3MzQzNyA2LjE3OTY4NyA2LjE3OTY4N3YxMy42Nzk2ODhjMCAzLjQwNjI1LTIuNzczNDM3IDYuMTc5Njg3LTYuMTc5Njg3IDYuMTc5Njg3aC0xMTEuNzEwOTM3Yy0zLjQwNjI1IDAtNi4xNzk2ODgtMi43NzM0MzctNi4xNzk2ODgtNi4xNzk2ODd6bTc0Ljc2NTYyNSAxOTguMDYyNWgtMTIuNzM0Mzc1di05NC40Mjk2ODdoMTIuNzM0Mzc1em0zNDUuMjAzMTI1IDBoLTEyLjczODI4MXYtOTQuNDI5Njg3aDEyLjczODI4MXptNDEuODkwNjI1LTExNS42MDkzNzVjMCAzLjQwNjI1LTIuNzY5NTMxIDYuMTc5Njg4LTYuMTc5Njg3IDYuMTc5Njg4LTEzLjcxNDg0NCAwLTQxNS4wMzUxNTcgMC00MjkuMzYzMjgyIDAtMy40MDYyNSAwLTYuMTc5Njg3LTIuNzczNDM4LTYuMTc5Njg3LTYuMTc5Njg4di02LjU1ODU5M2g0NDEuNzIyNjU2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyOC45NjA5MzggMTEyLjUyNzM0NGM0LjE0NDUzMSAwIDcuNS0zLjM1OTM3NSA3LjUtNy41di00MS4xMzY3MTljMC0xNi4zMTY0MDYtMTMuMjczNDM4LTI5LjU5Mzc1LTI5LjU4OTg0NC0yOS41OTM3NWgtMTc3LjI4MTI1Yy0xNi4zMTY0MDYgMC0yOS41ODk4NDQgMTMuMjczNDM3LTI5LjU4OTg0NCAyOS41OTM3NXYxMTcuMjc3MzQ0YzAgMTYuMzE2NDA2IDEzLjI3MzQzOCAyOS41ODk4NDMgMjkuNTg5ODQ0IDI5LjU4OTg0M2gxNzcuMjgxMjVjMTYuMzE2NDA2IDAgMjkuNTkzNzUtMTMuMjczNDM3IDI5LjU5Mzc1LTI5LjU4OTg0M3YtNDEuMTQwNjI1YzAtNC4xNDA2MjUtMy4zNTkzNzUtNy41LTcuNTAzOTA2LTcuNS00LjE0MDYyNiAwLTcuNSAzLjM1OTM3NS03LjUgNy41djQxLjE0MDYyNWMwIDguMDQyOTY5LTYuNTQ2ODc2IDE0LjU4OTg0My0xNC41ODk4NDQgMTQuNTg5ODQzaC0xNzcuMjgxMjVjLTguMDQyOTY5IDAtMTQuNTg5ODQ0LTYuNTQ2ODc0LTE0LjU4OTg0NC0xNC41ODk4NDN2LTExNy4yNzczNDRjMC04LjA0Njg3NSA2LjU0Njg3NS0xNC41OTM3NSAxNC41ODk4NDQtMTQuNTkzNzVoMTc3LjI4MTI1YzguMDQyOTY4IDAgMTQuNTg5ODQ0IDYuNTQ2ODc1IDE0LjU4OTg0NCAxNC41OTM3NXY0MS4xMzY3MTljMCA0LjE0MDYyNSAzLjM1OTM3NCA3LjUgNy41IDcuNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNC43NzM0MzggNjEuNTcwMzEyYy00LjE0NDUzMiAwLTcuNSAzLjM1OTM3Ni03LjUgNy41djEwNi45MTQwNjNjMCA0LjE0NDUzMSAzLjM1NTQ2OCA3LjUgNy41IDcuNWgxNjYuOTE0MDYyYzQuMTQ0NTMxIDAgNy41LTMuMzU1NDY5IDcuNS03LjV2LTEwNi45MTQwNjNjMC00LjE0MDYyNC0zLjM1NTQ2OS03LjUtNy41LTcuNXptMTU5LjQxNDA2MiAxMDYuOTE0MDYzaC0xNTEuOTE0MDYydi05MS45MTQwNjNoMTUxLjkxNDA2MnptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+","Front Yard":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjYuNDksMzYuOTQ3Yy0zMS41NzksMC01Ny4yNywyNS42OTEtNTcuMjcsNTcuMjdjMCwzMS41NzksMjUuNjkxLDU3LjI3LDU3LjI3LDU3LjI3YzMxLjU3OCwwLDU3LjI3LTI1LjY5MSw1Ny4yNy01Ny4yNw0KCQkJQzE4My43NjEsNjIuNjM4LDE1OC4wNywzNi45NDcsMTI2LjQ5LDM2Ljk0N3ogTTEyNi40OSwxMzEuNDg3Yy0yMC41NTEsMC0zNy4yNy0xNi43MTktMzcuMjctMzcuMjcNCgkJCWMwLTIwLjU1MSwxNi43MTktMzcuMjcsMzcuMjctMzcuMjdjMjAuNTUsMCwzNy4yNywxNi43MTksMzcuMjcsMzcuMjdDMTYzLjc2MSwxMTQuNzY4LDE0Ny4wNDIsMTMxLjQ4NywxMjYuNDksMTMxLjQ4N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyNi40OSwwYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjEyLjMzOGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwczEwLTQuNDc3LDEwLTEwVjEwQzEzNi40OSw0LjQ3NywxMzIuMDE0LDAsMTI2LjQ5LDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjYuNDksMTU2LjA5N2MtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHYxMi4zMzhjMCw1LjUyMyw0LjQ3NywxMCwxMCwxMHMxMC00LjQ3NywxMC0xMHYtMTIuMzM4DQoJCQlDMTM2LjQ5LDE2MC41NzQsMTMyLjAxNCwxNTYuMDk3LDEyNi40OSwxNTYuMDk3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEwLjcwOCw4NC4yMTdIMTk4LjM3Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwczQuNDc3LDEwLDEwLDEwaDEyLjMzOGM1LjUyMywwLDEwLTQuNDc3LDEwLTEwDQoJCQlTMjE2LjIzLDg0LjIxNywyMTAuNzA4LDg0LjIxN3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTU0LjYxLDg0LjIxN0g0Mi4yNzJjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoMTIuMzM5YzUuNTIzLDAsMTAtNC40NzcsOS45OTktMTANCgkJCUM2NC42MSw4OC42OTQsNjAuMTM0LDg0LjIxNyw1NC42MSw4NC4yMTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMDAuOTc3LDE5LjcyOWMtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MiwwbC05Ljg3Nyw5Ljg3N2MtMy45MDUsMy45MDYtMy45MDUsMTAuMjM4LDAsMTQuMTQzDQoJCQljMS45NTIsMS45NTMsNC41MTIsMi45MjksNy4wNzEsMi45MjljMi41NTksMCw1LjExOS0wLjk3Niw3LjA3MS0yLjkyOWw5Ljg3Ny05Ljg3N0MyMDQuODgzLDI5Ljk2NiwyMDQuODgzLDIzLjYzNCwyMDAuOTc3LDE5LjcyOQ0KCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNzYuMDIzLDE0NC42ODVjLTMuOTA2LTMuOTA1LTEwLjIzOC0zLjkwNS0xNC4xNDMsMGwtOS44NzcsOS44NzdjLTMuOTA1LDMuOTA2LTMuOTA1LDEwLjIzOCwwLDE0LjE0Mw0KCQkJYzEuOTUyLDEuOTUzLDQuNTEyLDIuOTI5LDcuMDcxLDIuOTI5czUuMTE5LTAuOTc2LDcuMDcyLTIuOTI5bDkuODc3LTkuODc3Qzc5LjkyOCwxNTQuOTIyLDc5LjkyOCwxNDguNTksNzYuMDIzLDE0NC42ODV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik03Ni4wMjEsMjkuNjA2bC05Ljg3Ny05Ljg3N2MtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MiwwYy0zLjkwNSwzLjkwNi0zLjkwNSwxMC4yMzgsMCwxNC4xNDNsOS44NzcsOS44NzcNCgkJCWMxLjk1MiwxLjk1Myw0LjUxMiwyLjkyOSw3LjA3MSwyLjkyOXM1LjExOS0wLjk3Niw3LjA3MS0yLjkyOUM3OS45MjcsMzkuODQzLDc5LjkyNywzMy41MTEsNzYuMDIxLDI5LjYwNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ1OS41NCw0NjguMzg5Yy0wLjEyOS0wLjY0LTAuMzItMS4yNy0wLjU3LTEuODdjLTAuMjUtMC42LTAuNTYtMS4xOC0wLjkyLTEuNzJjLTAuMzYtMC41NS0wLjc4LTEuMDYtMS4yNC0xLjUzDQoJCQljLTAuNDYtMC40Ni0wLjk3LTAuODctMS41Mi0xLjI0Yy0wLjU0LTAuMzYtMS4xMi0wLjY3LTEuNzMtMC45MmMtMC41OTktMC4yNS0xLjIyOS0wLjQ0LTEuODctMC41N2MtMS4yOS0wLjI2LTIuNjItMC4yNi0zLjkwOSwwDQoJCQljLTAuNjMxLDAuMTMtMS4yNjEsMC4zMi0xLjg3LDAuNTdjLTAuNjAxLDAuMjUtMS4xODEsMC41Ni0xLjcyMSwwLjkyYy0wLjU1LDAuMzctMS4wNiwwLjc4LTEuNTIsMS4yNA0KCQkJYy0wLjQ2LDAuNDctMC44OCwwLjk4LTEuMjUsMS41M2MtMC4zNiwwLjU0LTAuNjcsMS4xMi0wLjkyLDEuNzJjLTAuMjUsMC42LTAuNDQsMS4yMy0wLjU3LDEuODcNCgkJCWMtMC4xMywwLjY1MS0wLjE5LDEuMzAxLTAuMTksMS45NjFjMCwwLjY1LDAuMDYsMS4zMSwwLjE5LDEuOTVjMC4xMywwLjY0LDAuMzIsMS4yNywwLjU3LDEuODdjMC4yNSwwLjYsMC41NiwxLjE4LDAuOTIsMS43Mw0KCQkJYzAuMzcsMC41NCwwLjc5LDEuMDYsMS4yNSwxLjUyYzAuNDYsMC40NiwwLjk3LDAuODgsMS41MiwxLjI0YzAuNTQsMC4zNiwxLjEyLDAuNjcsMS43MjEsMC45MmMwLjYwOSwwLjI1LDEuMjM5LDAuNDQsMS44NywwLjU3DQoJCQljMC42NSwwLjEzLDEuMzEsMC4yLDEuOTYsMC4yYzAuNjUsMCwxLjMxLTAuMDcsMS45NDktMC4yYzAuNjQxLTAuMTMsMS4yNy0wLjMyLDEuODctMC41N2MwLjYxLTAuMjUsMS4xOS0wLjU2LDEuNzMtMC45Mg0KCQkJYzAuNTUtMC4zNiwxLjA2LTAuNzgsMS41Mi0xLjI0YzAuNDYtMC40NiwwLjg4LTAuOTgsMS4yNC0xLjUyYzAuMzYxLTAuNTUsMC42Ny0xLjEzLDAuOTItMS43M2MwLjI1LTAuNiwwLjQ0LTEuMjMsMC41Ny0xLjg3DQoJCQlzMC4yLTEuMywwLjItMS45NUM0NTkuNzQsNDY5LjY4OSw0NTkuNjcsNDY5LjAzOSw0NTkuNTQsNDY4LjM4OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQwOS43MzksNDYwLjM0Nkg2Mi4xMzhjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoMzQ3LjZjNS41MjMsMCwxMC00LjQ3NywxMC4wMDEtMTANCgkJCUM0MTkuNzM5LDQ2NC44MjMsNDE1LjI2MSw0NjAuMzQ2LDQwOS43MzksNDYwLjM0NnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMS41NjMsNDI3LjkzMWgtNi44MDljLTMuODA2LTIxLjMxMi0yMi40NzYtMzcuNTQtNDQuODY0LTM3LjU0Yy0zLjMsMC02LjU5MSwwLjM2Mi05LjgwMywxLjA2N1YyOTMuMjkNCgkJCWMzNi40ODItNC45MDIsNjQuNzA0LTM2LjIzNiw2NC43MDQtNzQuMDM3YzAtMTkuNzA5LTcuNzgxLTM4LjUzMS0yMS41MjQtNTIuNDY0YzAuMTg2LTEuODE0LDAuMjc4LTMuNjQxLDAuMjc4LTUuNDY4DQoJCQljMC0yOS40NzctMjMuOTgxLTUzLjQ1OC01My40NTgtNTMuNDU4Yy0yOS40NzcsMC01My40NTgsMjMuOTgyLTUzLjQ1OCw1My40NThjMCwxLjgyNywwLjA5MywzLjY1MywwLjI3Nyw1LjQ2Nw0KCQkJYy0xMy43NDEsMTMuOTM0LTIxLjUyMywzMi43NTYtMjEuNTIzLDUyLjQ2NWMwLDM3LjgwMiwyOC4yMjMsNjkuMTM2LDY0LjcwNCw3NC4wMzd2ODkuNjJjLTQuNjg1LTEuNjMyLTkuNzE2LTIuNTItMTQuOTUxLTIuNTINCgkJCWMtMjUuMTI5LDAtNDUuNTczLDIwLjQ0NC00NS41NzMsNDUuNTc0djEuOTY4aC04LjUwNnYtMzUuMTNoMC4wMDFjNS41MjIsMCwxMC00LjQ3NywxMC0xMHYtNDNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtMC4wMDENCgkJCXYtNDcuMzI5YzAtMi44NDQtMS4yMTEtNS41NTMtMy4zMy03LjQ1TDMxNi4yNywyNDYuODZjLTMuNzk3LTMuMzk5LTkuNTQzLTMuMzk5LTEzLjM0LDBsLTI0Ljc4NywyMi4xOTFsLTI0Ljc4OC0yMi4xOTENCgkJCWMtMy43OTctMy4zOTgtOS41NDMtMy4zOTgtMTMuMzQsMGwtMjQuNzg4LDIyLjE5MWwtMjQuNzg4LTIyLjE5MWMtMy43OTctMy4zOTktOS41NDMtMy4zOTktMTMuMzQsMC4wMDFsLTI0Ljc4NywyMi4xOTENCgkJCWwtMjQuNzg4LTIyLjE5MWMtMy43OTctMy4zOTgtOS41NDMtMy4zOTgtMTMuMzQsMEw4OS4zOTgsMjY5LjA1TDY0LjYxLDI0Ni44NTljLTMuNzk2LTMuMzk5LTkuNTQzLTMuMzk5LTEzLjM0LTAuMDAxDQoJCQlsLTMxLjQ1OCwyOC4xNjNjLTIuMTE5LDEuODk3LTMuMzMsNC42MDYtMy4zMyw3LjQ1MXY0Ny4zMjloLTAuMDAxYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjQzYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMC4wMDENCgkJCXYzNS4xM2gtNi4wNDRjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBWNTAyYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoNDkxLjEyM2M1LjUyMiwwLDEwLTQuNDc3LDEwLTEwdi02NC4wNjkNCgkJCUM1MTEuNTYzLDQzMi40MDgsNTA3LjA4NSw0MjcuOTMxLDUwMS41NjMsNDI3LjkzMXogTTQ0OS44OSw0MTAuMzkxYzExLjI5NiwwLDIwLjkwNSw3LjM2MiwyNC4yODEsMTcuNTRoLTIzLjQ2MnYtMS45NjgNCgkJCWMwLTUuNDQxLTAuOTU5LTEwLjY2Mi0yLjcxNi0xNS41MDRDNDQ4LjYyLDQxMC40MTQsNDQ5LjI1Myw0MTAuMzkxLDQ0OS44OSw0MTAuMzkxeiBNNDIwLjA4NywxODUuNTc0djMzLjExOGwtMTAuNDA3LTEwLjQwNw0KCQkJYy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBjLTMuOTA1LDMuOTA1LTMuOTA1LDEwLjIzNywwLDE0LjE0M2wyMy4yNTcsMjMuMjU3YzAuNDA3LDAuNDA2LDAuODM5LDAuNzcsMS4yOTMsMS4wOTENCgkJCXYyNi4yNjVjLTI1LjQwNS00LjcxMi00NC43MDQtMjcuMDM5LTQ0LjcwNC01My43ODljMC0xNS44MTYsNi44NDUtMzAuODU0LDE4Ljc3OC00MS4yNTZjMi43NC0yLjM4OCwzLjk2OS02LjA3NSwzLjIwOS05LjYyOQ0KCQkJYy0wLjQ5Mi0yLjI5OS0wLjc0MS00LjY3LTAuNzQxLTcuMDQ3YzAtMTguNDQ5LDE1LjAwOS0zMy40NTgsMzMuNDU4LTMzLjQ1OGMxOC40NDksMCwzMy40NTgsMTUuMDA5LDMzLjQ1OCwzMy40NTgNCgkJCWMwLDIuMzc4LTAuMjQ5LDQuNzQ4LTAuNzQxLDcuMDQ1Yy0wLjc2MiwzLjU1NSwwLjQ2Nyw3LjI0MywzLjIwOCw5LjYzMmMxMS45MzUsMTAuNDAzLDE4Ljc3OSwyNS40NCwxOC43NzksNDEuMjU2DQoJCQljMCwyNi43NS0xOS4yOTksNDkuMDc2LTQ0LjcwNCw1My43ODh2LTI2LjI2NWMwLjQ1My0wLjMyMiwwLjg4Ny0wLjY4NSwxLjI5My0xLjA5MWwyMy4yNTctMjMuMjU3DQoJCQljMy45MDUtMy45MDUsMy45MDUtMTAuMjM3LDAtMTQuMTQzYy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBsLTEwLjQwNywxMC40MDd2LTMzLjExOGMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwDQoJCQlDNDI0LjU2NCwxNzUuNTc0LDQyMC4wODcsMTgwLjA1MSw0MjAuMDg3LDE4NS41NzR6IE0zNzkuNTYzLDQyNS45NjNjMC0xNC4xMDIsMTEuNDcyLTI1LjU3NCwyNS41NzMtMjUuNTc0DQoJCQljMTQuMTAyLDAsMjUuNTczLDExLjQ3MiwyNS41NzMsMjUuNTc0djEuOTY4aC01MS4xNDZWNDI1Ljk2M3ogTTI4OC4xNDMsMjg2Ljk0MWwyMS40NTctMTkuMjFsMjEuNDU3LDE5LjIxVjMyOS44aC00Mi45MTRWMjg2Ljk0MQ0KCQkJeiBNMjI1LjIyNywyODYuOTQxbDIxLjQ1OC0xOS4yMWwyMS40NTcsMTkuMjFWMzI5LjhoLTQyLjkxNVYyODYuOTQxeiBNMTYyLjMxMywyODYuOTQxbDIxLjQ1Ny0xOS4yMWwyMS40NTgsMTkuMjFWMzI5LjhoLTQyLjkxNQ0KCQkJVjI4Ni45NDF6IE05OS4zOTgsMjg2Ljk0MWwyMS40NTctMTkuMjFsMjEuNDU4LDE5LjIxVjMyOS44SDk5LjM5OFYyODYuOTQxeiBNMzYuNDgzLDI4Ni45NDFsMjEuNDU3LTE5LjIxbDIxLjQ1NywxOS4yMVYzMjkuOA0KCQkJSDM2LjQ4M1YyODYuOTQxeiBNMjYuNDgyLDM0OS44MDFoMzE0LjU3NXYyM0gyNi40ODJWMzQ5LjgwMXogTTMzMS4wNTcsMzkyLjgwMXYzNS4xM2gtNDIuOTE0di0zNS4xM0gzMzEuMDU3eiBNMjY4LjE0MywzOTIuODAxDQoJCQl2MzUuMTNoLTQyLjkxNXYtMzUuMTNIMjY4LjE0M3ogTTIwNS4yMjcsMzkyLjgwMXYzNS4xM2gtNDIuOTE1di0zNS4xM0gyMDUuMjI3eiBNMTQyLjMxMywzOTIuODAxdjM1LjEzSDk5LjM5OHYtMzUuMTNIMTQyLjMxM3oNCgkJCSBNNzkuMzk4LDM5Mi44MDF2MzUuMTNIMzYuNDgzdi0zNS4xM0g3OS4zOTh6IE0yMC40MzgsNDkydi00NC4wNjloNDcxLjEyM1Y0OTJIMjAuNDM4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjc4LjQ4NywxMjcuODQzYy0wLjU1NiwwLTEuMTEyLDAuMDExLTEuNjY4LDAuMDMzYy03LjU0My0xNC40Mi0yMi41MTktMjMuOTIzLTM4Ljg5NC0yMy45MjMNCgkJCWMtMjAuNTg3LDAtMzguMDQ3LDE0LjY4My00Mi43NzMsMzQuMzQ2Yy0xOS43ODMsMS45My0zNS4zMDksMTkuMDAxLTM1LjMwOSwzOS43MDdjMCwyMS45OTQsMTcuNTE3LDM5Ljg4NywzOS4wNDgsMzkuODg3aDc5LjU5Ng0KCQkJYzI0LjI4NSwwLDQ0LjA0MS0yMC4xOTgsNDQuMDQxLTQ1LjAyNUMzMjIuNTI3LDE0OC4wNDEsMzAyLjc3MSwxMjcuODQzLDI3OC40ODcsMTI3Ljg0M3ogTTI3OC40ODcsMTk3Ljg5M2gtNzkuNTk2DQoJCQljLTEwLjUwMywwLTE5LjA0OC04LjkyMS0xOS4wNDgtMTkuODg3YzAtMTAuOTY3LDguNTQ1LTE5Ljg4OCwxOS4wNDgtMTkuODg4YzEuMDU2LDAsMi4xNDgsMC4wOTksMy4yNDQsMC4yOTYNCgkJCWMyLjg5MywwLjUxNiw1Ljg3LTAuMjY3LDguMTM1LTIuMTQxYzIuMjY1LTEuODc1LDMuNTktNC42NTIsMy42MjMtNy41OTJjMC4xNTMtMTMuNjM1LDEwLjkzMy0yNC43MjgsMjQuMDMyLTI0LjcyOA0KCQkJYzEwLjYzOCwwLDE5Ljg3Nyw3LjEwOCwyMi45ODgsMTcuNjg5YzEuNTExLDUuMTM1LDYuNzk0LDguMTczLDExLjk5NCw2Ljg4NmMxLjgzOC0wLjQ1NCwzLjcxNS0wLjY4NCw1LjU4LTAuNjg0DQoJCQljMTMuMjU2LDAsMjQuMDQxLDExLjIyNiwyNC4wNDEsMjUuMDI1QzMwMi41MjcsMTg2LjY2NywyOTEuNzQzLDE5Ny44OTMsMjc4LjQ4NywxOTcuODkzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Gallery:Kxe,Garage:qxe,Garden:eSe,"Ground Floor":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAyIDUxMi4wMDIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIHN0cm9rZT0iIiBkPSJNNDc3LjQ0NCw0NzEuMDM0aC0zLjgzM2MtMy42NzktMTQuNDM1LTE1LjkyNi0yNS4zNTYtMzAuODU5LTI3LjI0MVYzMDguNTg3aDIuMTM4YzkuOTE3LDAsMTcuOTg1LTguMDY4LDE3Ljk4NS0xNy45ODYNCgkJCWMwLTkuOTE3LTguMDY4LTE3Ljk4NS0xNy45ODUtMTcuOTg1aC0yLjEzOFYxMjkuMzgyaDkuODE1YzcuMTk3LDAsMTMuMDUyLTUuODU1LDEzLjA1Mi0xMy4wNTJ2LTE0LjkwNA0KCQkJYzAtMC4wMzMtMC4wMDUtMC4wNjUtMC4wMDUtMC4wOThjLTAuMDAxLTAuMDk4LTAuMDA5LTAuMTk2LTAuMDE1LTAuMjk0Yy0wLjAwOS0wLjE3MS0wLjAyMS0wLjM0Mi0wLjA0Mi0wLjUxDQoJCQljLTAuMDExLTAuMDg5LTAuMDI2LTAuMTc3LTAuMDQxLTAuMjY2Yy0wLjAyOS0wLjE4My0wLjA2NS0wLjM2NC0wLjEwOC0wLjU0MmMtMC4wMS0wLjA0LTAuMDE0LTAuMDgxLTAuMDI0LTAuMTIxTDQ0Ni4xMjMsMjUuNDINCgkJCWMtMS41NzQtNi4wNi03LjA0Ny0xMC4yOTMtMTMuMzA3LTEwLjI5M2gtNDkuMTA1Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3czMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDQ4LjQ2OGwxNi43MzQsNjQuNDQNCgkJCUgzMzUuMzcyTDI5Mi4zNDcsMjkuN2g0NS44NjZjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N2MwLTQuMDI1LTMuMjYyLTcuMjg3LTcuMjg3LTcuMjg3aC01NS41OTZsLTAuOTI2LTEuMzg3DQoJCQlDMjc1Ljk0OCw1LjEzNywyNjYuMzQyLDAsMjU1Ljk5NywwYy0xMC4zNDUsMC0xOS45NSw1LjEzNi0yNS42OTQsMTMuNzM5bC0wLjkyNywxLjM4OEg3OS4xNzgNCgkJCWMtNi4yNjEsMC0xMS43MzMsNC4yMzItMTMuMzA3LDEwLjI5M0w0Ni42MDksOTkuNTk1Yy0wLjAxLDAuMDQtMC4wMTQsMC4wODEtMC4wMjQsMC4xMjFjLTAuMDQzLDAuMTc4LTAuMDc5LDAuMzU5LTAuMTA4LDAuNTQyDQoJCQljLTAuMDE0LDAuMDg5LTAuMDMsMC4xNzctMC4wNDEsMC4yNjZjLTAuMDIxLDAuMTY4LTAuMDMzLDAuMzM4LTAuMDQyLDAuNTFjLTAuMDA1LDAuMDk4LTAuMDE0LDAuMTk2LTAuMDE1LDAuMjk0DQoJCQljMCwwLjAzMy0wLjAwNSwwLjA2NS0wLjAwNSwwLjA5OHYxNC45MDRjMCw3LjE5Nyw1Ljg1NSwxMy4wNTIsMTMuMDUyLDEzLjA1Mmg5LjgxNXYxNDMuMjMzaC0yLjEzOA0KCQkJYy05LjkxNywwLTE3Ljk4NSw4LjA2OC0xNy45ODUsMTcuOTg1czguMDY4LDE3Ljk4NiwxNy45ODUsMTcuOTg2aDIuMTM4djQ2LjY5NmMwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQlzNy4yODctMy4yNjIsNy4yODctNy4yODd2LTQ2LjY5NmgzNDQuMzY0djEyOS4zMTFjLTAuMDU1LTAuMDMyLTAuMTEzLTAuMDYtMC4xNjktMC4wOTJjLTAuNzE0LTAuNDE1LTEuNDM5LTAuODEtMi4xNzYtMS4xODINCgkJCWMtMC4xNDQtMC4wNzMtMC4yOTEtMC4xMzktMC40MzUtMC4yMWMtMC42MTQtMC4zMDItMS4yMzUtMC41ODgtMS44NjMtMC44NTljLTAuMjEzLTAuMDkyLTAuNDI1LTAuMTgzLTAuNjM5LTAuMjcyDQoJCQljLTAuNzI3LTAuMy0xLjQ1OS0wLjU4NS0yLjIwMi0wLjg0NGMtMC4wNDQtMC4wMTUtMC4wODctMC4wMzMtMC4xMzEtMC4wNDljLTAuNzg0LTAuMjcxLTEuNTc4LTAuNTExLTIuMzc4LTAuNzM2DQoJCQljLTAuMjE5LTAuMDYyLTAuNDQtMC4xMTgtMC42Ni0wLjE3NmMtMC42NDItMC4xNjktMS4yODktMC4zMjMtMS45NC0wLjQ2MmMtMC4xODgtMC4wNC0wLjM3NS0wLjA4NS0wLjU2NC0wLjEyMw0KCQkJYy0wLjgxMi0wLjE2Mi0xLjYyOS0wLjMtMi40NTEtMC40MTRjLTAuMTc4LTAuMDI1LTAuMzU4LTAuMDQyLTAuNTM3LTAuMDY0Yy0wLjY3MS0wLjA4NC0xLjM0NS0wLjE1Mi0yLjAyMi0wLjIwNA0KCQkJYy0wLjIzNC0wLjAxOC0wLjQ2OC0wLjAzNi0wLjcwMi0wLjA1MWMtMC44NDItMC4wNTEtMS42ODUtMC4wODUtMi41MzMtMC4wODVjLTE1LjQ0NiwwLTI5LjY5OSw4LjYxLTM3LjA2MiwyMS45MTUNCgkJCWMtMC44NDYtMC4wMi0xLjY4NCwwLjAwMS0yLjUxNiwwLjA0NmMtMC4xOTUsMC4wMTEtMC4zODcsMC4wMzQtMC41ODEsMC4wNDhjLTAuNjM2LDAuMDQ3LTEuMjY4LDAuMTA3LTEuODk0LDAuMTkNCgkJCWMtMC4yMywwLjAzMS0wLjQ1OCwwLjA3MS0wLjY4NiwwLjEwN2MtMC41ODYsMC4wOTItMS4xNjgsMC4xOTctMS43NDQsMC4zMjFjLTAuMjM0LDAuMDUtMC40NjUsMC4xMDQtMC42OTcsMC4xNTkNCgkJCWMtMC41NzEsMC4xMzctMS4xMzUsMC4yODktMS42OTUsMC40NTdjLTAuMjE3LDAuMDY1LTAuNDM1LDAuMTI4LTAuNjUsMC4xOThjLTAuNTg4LDAuMTktMS4xNjcsMC40LTEuNzQsMC42MjQNCgkJCWMtMC4xNzEsMC4wNjctMC4zNDUsMC4xMjctMC41MTUsMC4xOTdjLTAuNzA1LDAuMjktMS4zOTksMC42MDItMi4wNzksMC45NDFjLTAuMDI4LDAuMDE0LTAuMDU4LDAuMDI2LTAuMDg2LDAuMDQNCgkJCWMtMC43MzMsMC4zNjktMS40NSwwLjc2Ni0yLjE1LDEuMTljLTAuMDY2LDAuMDQtMC4xMjksMC4wODYtMC4xOTUsMC4xMjdjLTAuNiwwLjM3LTEuMTg3LDAuNzU5LTEuNzYsMS4xNjkNCgkJCWMtMC4xODQsMC4xMzItMC4zNjEsMC4yNzItMC41NDIsMC40MDhjLTAuNDQ3LDAuMzM1LTAuODg4LDAuNjc3LTEuMzE2LDEuMDM2Yy0wLjIwNiwwLjE3Mi0wLjQwNywwLjM1MS0wLjYwOSwwLjUyOQ0KCQkJYy0wLjM5MSwwLjM0NS0wLjc3NCwwLjY5OC0xLjE0OCwxLjA2M2MtMC4yMDEsMC4xOTYtMC40MDEsMC4zOTQtMC41OTcsMC41OTZjLTAuMzY1LDAuMzc2LTAuNzE3LDAuNzYzLTEuMDY0LDEuMTU4DQoJCQljLTAuMTc4LDAuMjAzLTAuMzU5LDAuNDA0LTAuNTMzLDAuNjEyYy0wLjM2NywwLjQ0MS0wLjcxNywwLjg5Ny0xLjA2LDEuMzU5Yy0wLjEzMSwwLjE3Ni0wLjI2OSwwLjM0Ni0wLjM5NiwwLjUyNQ0KCQkJYy0wLjg4NSwxLjI0Ni0xLjY4OSwyLjU2LTIuMzkyLDMuOTQ0aC0zNS40NTdWMzQ2LjE4MWMwLTcuMTM1LTUuODA1LTEyLjkzOS0xMi45MzktMTIuOTM5aC03My4zNDkNCgkJCWMtNy4xMzUsMC0xMi45MzksNS44MDUtMTIuOTM5LDEyLjkzOXYxMjQuODUzaC02MC42MzljLTAuMTg4LTAuNDY5LTAuMzk5LTAuOTI1LTAuNjA1LTEuMzgzDQoJCQljLTAuMDg4LTAuMTk0LTAuMTY2LTAuMzk0LTAuMjU2LTAuNTg2Yy0wLjM1My0wLjc0OS0wLjcyOC0xLjQ4My0xLjEyOC0yLjIwMmMtMC4wNzUtMC4xMzUtMC4xNi0wLjI2My0wLjIzNi0wLjM5Nw0KCQkJYy0wLjMzMS0wLjU3Ny0wLjY3My0xLjE0Ny0xLjAzNC0xLjcwM2MtMC4xNTEtMC4yMzItMC4zMTEtMC40NTYtMC40NjctMC42ODVjLTAuMzA1LTAuNDQ4LTAuNjE2LTAuODkxLTAuOTQtMS4zMjQNCgkJCWMtMC4xODMtMC4yNDUtMC4zNzItMC40ODQtMC41NjItMC43MjRjLTAuMzItMC40MDUtMC42NDYtMC44MDMtMC45ODItMS4xOTNjLTAuMjAyLTAuMjM0LTAuNDA1LTAuNDY3LTAuNjEyLTAuNjk1DQoJCQljLTAuMzUyLTAuMzg4LTAuNzE0LTAuNzY2LTEuMDgxLTEuMTM4Yy0wLjIwNS0wLjIwNy0wLjQwNy0wLjQxNy0wLjYxNi0wLjYyYy0wLjQxOS0wLjQwNS0wLjg1Mi0wLjc5NC0xLjI5LTEuMTc4DQoJCQljLTAuMTcyLTAuMTUxLTAuMzM3LTAuMzA4LTAuNTExLTAuNDU1Yy0wLjYyMi0wLjUyNS0xLjI1OS0xLjAzMS0xLjkxNC0xLjUxM2MtMC4wNjctMC4wNDktMC4xMzctMC4wOTMtMC4yMDQtMC4xNDENCgkJCWMtMC41ODgtMC40MjYtMS4xODgtMC44MzYtMS44MDEtMS4yMjZjLTAuMjI1LTAuMTQ0LTAuNDU4LTAuMjc2LTAuNjg2LTAuNDE0Yy0wLjQ2Ny0wLjI4My0wLjkzOC0wLjU2Mi0xLjQxOC0wLjgyNA0KCQkJYy0wLjI3LTAuMTQ4LTAuNTQ1LTAuMjg3LTAuODE5LTAuNDI4Yy0wLjQ1Ni0wLjIzNC0wLjkxNi0wLjQ2MS0xLjM4My0wLjY3NmMtMC4yOS0wLjEzNC0wLjU4MS0wLjI2NC0wLjg3NS0wLjM5MQ0KCQkJYy0wLjQ3My0wLjIwMy0wLjk1My0wLjM5NC0xLjQzNi0wLjU3OGMtMC4yOTEtMC4xMS0wLjU3OS0wLjIyMy0wLjg3My0wLjMyNmMtMC41MjgtMC4xODYtMS4wNjUtMC4zNTMtMS42MDQtMC41MTQNCgkJCWMtMC4yNTYtMC4wNzctMC41MDgtMC4xNjItMC43NjYtMC4yMzNjLTAuOC0wLjIyMS0xLjYwOC0wLjQyMS0yLjQyOC0wLjU4OGMtMC41MjctMC43MTgtMS4wNzQtMS40MTgtMS42MzctMi4wOTkNCgkJCWMtMC4xOTMtMC4yMzMtMC4zOTgtMC40NTItMC41OTUtMC42ODFjLTAuMzc4LTAuNDQtMC43NTQtMC44ODItMS4xNDctMS4zMDZjLTAuMjQ2LTAuMjY1LTAuNTA1LTAuNTE0LTAuNzU3LTAuNzcyDQoJCQljLTAuMzYtMC4zNjktMC43MTYtMC43NDQtMS4wODctMS4xYy0wLjI3Ny0wLjI2NS0wLjU2Ni0wLjUxNC0wLjg0OS0wLjc3MmMtMC4zNjItMC4zMy0wLjcxOS0wLjY2NC0xLjA5MS0wLjk4MQ0KCQkJYy0wLjMwMS0wLjI1Ny0wLjYxNC0wLjQ5OC0wLjkyMS0wLjc0N2MtMC4zNjgtMC4yOTgtMC43MzItMC42LTEuMTA4LTAuODg2Yy0wLjMyMi0wLjI0NC0wLjY1NC0wLjQ3Mi0wLjk4MS0wLjcwNw0KCQkJYy0wLjM3Ni0wLjI3LTAuNzQ5LTAuNTQ0LTEuMTMzLTAuODAxYy0wLjMzOS0wLjIyNy0wLjY4Ny0wLjQzOS0xLjAzMS0wLjY1N2MtMC4zODctMC4yNDUtMC43NzEtMC40OTMtMS4xNjQtMC43MjUNCgkJCWMtMC4zNTMtMC4yMDktMC43MTUtMC40MDItMS4wNzQtMC42MDFjLTAuMzk3LTAuMjItMC43OTItMC40NDMtMS4xOTYtMC42NTFjLTAuMzY4LTAuMTktMC43NDItMC4zNjQtMS4xMTUtMC41NDQNCgkJCWMtMC40MDYtMC4xOTUtMC44MTEtMC4zOTMtMS4yMjQtMC41NzZjLTAuMzgtMC4xNjktMC43NjUtMC4zMjMtMS4xNS0wLjQ4MmMtMC40MTctMC4xNzEtMC44MzItMC4zNDQtMS4yNTUtMC41MDMNCgkJCWMtMC4zODktMC4xNDctMC43ODQtMC4yOC0xLjE3OC0wLjQxNmMtMC40MjctMC4xNDctMC44NTQtMC4yOTYtMS4yODYtMC40M2MtMC4zOTgtMC4xMjQtMC44MDEtMC4yMzYtMS4yMDQtMC4zNDkNCgkJCWMtMC40MzctMC4xMjMtMC44NzMtMC4yNDYtMS4zMTQtMC4zNTZjLTAuNDA3LTAuMTAxLTAuODE3LTAuMTkxLTEuMjI3LTAuMjgxYy0wLjQ0NS0wLjA5OC0wLjg5LTAuMTk0LTEuMzM4LTAuMjc5DQoJCQljLTAuNDE0LTAuMDc4LTAuODMxLTAuMTQ1LTEuMjQ4LTAuMjEyYy0wLjQ1My0wLjA3Mi0wLjkwNS0wLjE0My0xLjM2MS0wLjIwMmMtMC40Mi0wLjA1NC0wLjg0Mi0wLjA5OC0xLjI2NC0wLjE0MQ0KCQkJYy0wLjQ2LTAuMDQ3LTAuOTIxLTAuMDktMS4zODUtMC4xMjJjLTAuNDI0LTAuMDMtMC44NS0wLjA1MS0xLjI3Ni0wLjA2OWMtMC4yNjktMC4wMTItMC41MzQtMC4wMzYtMC44MDQtMC4wNDN2LTI5Ljg1MQ0KCQkJYzAtNC4wMjQtMy4yNjItNy4yODctNy4yODctNy4yODdjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODd2MzEuODU2Yy0xNy4wNTMsNS4yNzktMjkuODM5LDIwLjM1Ni0zMS43NSwzOC42MjNoLTIuOTQyDQoJCQljLTExLjI5NCwwLTIwLjQ4Myw5LjE4OS0yMC40ODMsMjAuNDgzczkuMTg5LDIwLjQ4MywyMC40ODMsMjAuNDgzaDQ0Mi44OTRjMTEuMjk0LDAsMjAuNDgzLTkuMTg5LDIwLjQ4My0yMC40ODMNCgkJCUM0OTcuOTI3LDQ4MC4yMjMsNDg4LjczOCw0NzEuMDM0LDQ3Ny40NDQsNDcxLjAzNHogTTIzOS4zMzMsMjYuNDZjMC0wLjAwMSwwLjAwMS0wLjAwMSwwLjAwMS0wLjAwMWwzLjA4OS00LjYyNw0KCQkJYzMuMDM0LTQuNTQ1LDguMTA5LTcuMjU4LDEzLjU3NC03LjI1OGM1LjQ2NSwwLDEwLjU0LDIuNzEzLDEzLjU3NCw3LjI1OWw0OC4yNzgsNzIuMzA4aC01LjIwMmwtNDYuMTAzLTY5LjA1Mw0KCQkJYy0yLjM1OC0zLjUzMS02LjMtNS42MzktMTAuNTQ2LTUuNjM5Yy00LjI0NiwwLTguMTg5LDIuMTA4LTEwLjU0Niw1LjYzOUwxOTkuMzQ3LDk0LjE0aC01LjIwMmw4Ljc3OC0xMy4xNDhMMjM5LjMzMywyNi40NnoNCgkJCSBNMjk1LjEyNCw5NC4xNEgyMTYuODdsMzkuMTI3LTU4LjYwNEwyOTUuMTI0LDk0LjE0eiBNNzkuODE2LDI5LjdoMTM5LjgzMUwyMDkuNTEsNDQuODgzTDE3Ni42MjIsOTQuMTRINjMuMDgxTDc5LjgxNiwyOS43eg0KCQkJIE02MC45NDgsMTE0LjgwOXYtNi4wOTZoMzkwLjA5OHY2LjA5Nkg2MC45NDh6IE00MjguMTc5LDEyOS4zODJ2MTQzLjIzM0g4My44MTVWMTI5LjM4Mkg0MjguMTc5eiBNNjcuMTA0LDI5NC4wMTQNCgkJCWMtMS44ODEsMC0zLjQxMi0xLjUzMS0zLjQxMi0zLjQxM2MwLTEuODgxLDEuNTMtMy40MTIsMy40MTItMy40MTJINDQ0Ljg5YzEuODgxLDAsMy40MTIsMS41MzEsMy40MTIsMy40MTINCgkJCWMwLDEuODgyLTEuNTMsMy40MTMtMy40MTIsMy40MTNINjcuMTA0eiBNMzYwLjQxNiw0NzAuODkzYzAuMzE3LTAuMTg3LDAuNjM4LTAuMzY4LDAuOTY3LTAuNTM1DQoJCQljMC4xNTYtMC4wNzksMC4zMTYtMC4xNDksMC40NzQtMC4yMjNjMC4yOC0wLjEzMSwwLjU2Mi0wLjI1NiwwLjg1LTAuMzcxYzAuMTgzLTAuMDczLDAuMzY4LTAuMTQyLDAuNTUzLTAuMjA4DQoJCQljMC4yNzItMC4wOTgsMC41NDctMC4xODcsMC44MjQtMC4yNzFjMC4yMDEtMC4wNiwwLjQwMi0wLjEyMSwwLjYwNS0wLjE3NGMwLjI3Ni0wLjA3MiwwLjU1Ni0wLjEzMiwwLjgzNi0wLjE5DQoJCQljMC4yMDctMC4wNDMsMC40MTEtMC4wOTEsMC42Mi0wLjEyNmMwLjM1Ni0wLjA2LDAuNzE4LTAuMTAyLDEuMDgxLTAuMTM5YzAuMTc2LTAuMDE4LDAuMzUyLTAuMDM5LDAuNTI5LTAuMDUyDQoJCQljMC40NDYtMC4wMzEsMC44OTYtMC4wNDcsMS4zNS0wLjA0M2MwLjMzNywwLjAwMywwLjY3OSwwLjAzMiwxLjAyLDAuMDU2YzAuMjM0LDAuMDE2LDAuNDY3LDAuMDIsMC43MDIsMC4wNDYNCgkJCWMwLjU3MiwwLjA2NSwxLjE0NiwwLjE1NSwxLjcxOSwwLjI3OWMzLjUwOSwwLjc1Niw3LjA0Ny0xLjE1NSw4LjMzNy00LjUwN2M0LjA5Mi0xMC42MzksMTQuNDk2LTE3Ljc4NywyNS44OTEtMTcuNzg3DQoJCQljNy45NSwwLDE1LjUzMywzLjQyOCwyMC44MDYsOS40MDZjMC4yMSwwLjIzOCwwLjQzMywwLjQ2LDAuNjY5LDAuNjY2YzAuMDEzLDAuMDExLDAuMDI4LDAuMDIsMC4wNDEsMC4wMzINCgkJCWMwLjkzMiwwLjgwNCwyLjA0MywxLjM1NSwzLjIzLDEuNjA4YzAuOTAzLDAuMTkzLDEuODQ4LDAuMjE2LDIuNzg3LDAuMDUxYzEwLjQxNi0xLjgzMSwxOS45NjQsMy44NjgsMjMuOTIyLDEyLjYyNGgtOTguMDYxDQoJCQlDMzYwLjI1LDQ3MC45ODUsMzYwLjMzNCw0NzAuOTQyLDM2MC40MTYsNDcwLjg5M3ogTTI5MS4wMzgsMzQ3LjgxNXYxMjMuMjE5aC03MC4wODJWMzQ3LjgxNUgyOTEuMDM4eiBNNzcuNzk3LDQ0NS4zNTINCgkJCWMwLjc2Ny0wLjEyMSwxLjUzNi0wLjIxNSwyLjMwNS0wLjI3OWMwLjA2Ni0wLjAwNSwwLjEzMi0wLjAwOSwwLjE5OC0wLjAxNGMwLjc4NC0wLjA2LDEuNTY3LTAuMDk2LDIuMzQzLTAuMDk2DQoJCQljMTAuNjg5LDAsMjAuNDY1LDUuNDI0LDI2LjE1LDE0LjUwOWMxLjE4OCwxLjg5OSwzLjE4NSwzLjE0Nyw1LjQxNCwzLjM4MWMwLjUyMywwLjA1NSwxLjAzOCwwLjEzNSwxLjU0OSwwLjIyNg0KCQkJYzAuMTE1LDAuMDIsMC4yMywwLjA0MSwwLjM0NSwwLjA2M2MwLjUsMC4wOTcsMC45OTUsMC4yMDgsMS40ODMsMC4zMzhjMC4wNjMsMC4wMTcsMC4xMjUsMC4wMzcsMC4xODksMC4wNTUNCgkJCWMwLjQ0NCwwLjEyMywwLjg4MSwwLjI2MSwxLjMxMywwLjQxMWMwLjA5OSwwLjAzNCwwLjE5OSwwLjA2NywwLjI5OCwwLjEwM2MwLjQ2NywwLjE2OSwwLjkyNywwLjM1MywxLjM3OSwwLjU1Mw0KCQkJYzAuMDg4LDAuMDM5LDAuMTc1LDAuMDgxLDAuMjYzLDAuMTIyYzAuNDAzLDAuMTg1LDAuOCwwLjM4LDEuMTksMC41ODhjMC4wNzQsMC4wMzksMC4xNDgsMC4wNzYsMC4yMjIsMC4xMTYNCgkJCWMwLjQzMSwwLjIzNiwwLjg1MiwwLjQ4OCwxLjI2NSwwLjc1MmMwLjA5NCwwLjA2LDAuMTg3LDAuMTIyLDAuMjgsMC4xODRjMC4zODgsMC4yNTcsMC43NjksMC41MjMsMS4xMzksMC44MDMNCgkJCWMwLjAzMiwwLjAyNCwwLjA2NiwwLjA0NywwLjA5OCwwLjA3MmMwLjM5MiwwLjMsMC43NywwLjYxNywxLjE0MSwwLjk0M2MwLjA4NywwLjA3NywwLjE3NCwwLjE1NCwwLjI2LDAuMjMyDQoJCQljMC4zNjUsMC4zMzEsMC43MjIsMC42NzEsMS4wNjQsMS4wMjdjMC4wMjksMC4wMywwLjA1NiwwLjA2MiwwLjA4NCwwLjA5MmMwLjMxOSwwLjMzNiwwLjYyNSwwLjY4MywwLjkyMywxLjAzOQ0KCQkJYzAuMDcyLDAuMDg2LDAuMTQ1LDAuMTcyLDAuMjE2LDAuMjZjMC4wNTMsMC4wNjYsMC4xMDEsMC4xMzYsMC4xNTQsMC4yMDJINTIuMTgxQzU0LjIyOSw0NTcuODY4LDY0LjY0Myw0NDcuNDM5LDc3Ljc5Nyw0NDUuMzUyeg0KCQkJIE00NzcuNDQ0LDQ5Ny40MjdIMzQuNTVjLTMuMjU5LDAtNS45MS0yLjY1MS01LjkxLTUuOTFjMC0zLjI1OSwyLjY1MS01LjkxLDUuOTEtNS45MWg0NDIuODk0YzMuMjU5LDAsNS45MSwyLjY1MSw1LjkxLDUuOTENCgkJCUM0ODMuMzU0LDQ5NC43NzYsNDgwLjcwMyw0OTcuNDI3LDQ3Ny40NDQsNDk3LjQyN3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgIGQ9Ik0xODYuMjEzLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzN2MtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4OCw3LjI4N2g4Ni43OWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkzLjUsMjM0LjgzNSwxOTAuMjM4LDIzMS41NzIsMTg2LjIxMywyMzEuNTcyeiBNMTY4LjMwMywyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIG9wYWNpdHk9IjAuMjUiICBkPSJNMjk5LjY2OCwyMzEuNTcyaC0zLjMzOHYtNjUuNzQ2YzAtNS43MjQtNC42NTctMTAuMzgtMTAuMzgtMTAuMzhoLTU5LjM1NWMtNS43MjQsMC0xMC4zOCw0LjY1Ny0xMC4zOCwxMC4zOHY2NS43NDYNCgkJCWgtMy4zMzhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMC4wMDEsNC4wMjQsMy4yNjMsNy4yODcsNy4yODcsNy4yODdoODYuNzkxYzQuMDI1LDAsNy4yODctMy4yNjIsNy4yODctNy4yODcNCgkJCUMzMDYuOTU1LDIzNC44MzUsMzAzLjY5MywyMzEuNTcyLDI5OS42NjgsMjMxLjU3MnogTTI4MS43NTgsMjMxLjU3M2gtNTAuOTd2LTYxLjU1NGg1MC45N1YyMzEuNTczeiIvPg0KICAgICAgICA8cGF0aCBvcGFjaXR5PSIwLjI1IiAgZD0iTTQxMi41NzIsMjMxLjU3MmgtMy4zMzh2LTY1Ljc0NmMwLTUuNzI0LTQuNjU3LTEwLjM4LTEwLjM3OS0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDg2Ljc5MWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDNDE5Ljg1OSwyMzQuODM1LDQxNi41OTcsMjMxLjU3Miw0MTIuNTcyLDIzMS41NzJ6IE0zOTQuNjYxLDIzMS41NzNoLTUwLjk3di02MS41NTRoNTAuOTdWMjMxLjU3M3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4Mi44MTMsNDEzLjgzM2gtMC41Mjh2LTYwLjA0NWMwLTUuNTY2LTQuNTI5LTEwLjA5NS0xMC4wOTUtMTAuMDk1aC01My44ODZjLTUuNTY2LDAtMTAuMDk1LDQuNTI5LTEwLjA5NSwxMC4wOTV2NjAuMDQ1DQoJCQloLTAuNTI4Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3YzAsNC4wMjUsMy4yNjIsNy4yODcsNy4yODcsNy4yODdoNy44MTRoNTkuNTA0aDcuODE0YzQuMDI1LDAsNy4yODctMy4yNjIsNy4yODctNy4yODcNCgkJCUMxOTAuMSw0MTcuMDk1LDE4Ni44MzgsNDEzLjgzMywxODIuODEzLDQxMy44MzN6IE0xNjcuNzEyLDQxMy44MzNoLTQ0LjkzMXYtNTUuNTY3aDQ0LjkzMVY0MTMuODMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDA0LjMxNCw0MTMuODMzaC0wLjUyOHYtNjAuMDQ1YzAtNS41NjYtNC41MjktMTAuMDk1LTEwLjA5NS0xMC4wOTVoLTUzLjg4NmMtNS41NjYsMC0xMC4wOTYsNC41MjktMTAuMDk2LDEwLjA5NXY2MC4wNDUNCgkJCWgtMC41MjhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMCw0LjAyNSwzLjI2Miw3LjI4Nyw3LjI4Nyw3LjI4N2g3LjgxNEgzOTYuNWg3LjgxNGM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDNDExLjYwMSw0MTcuMDk1LDQwOC4zMzksNDEzLjgzMyw0MDQuMzE0LDQxMy44MzN6IE0zODkuMjEzLDQxMy44MzNoLTQ0LjkzMnYtNTUuNTY3aDQ0LjkzMlY0MTMuODMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjc2LjU0NSw0MDUuMDg5Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3djEyLjYzYzAsNC4wMjQsMy4yNjIsNy4yODcsNy4yODcsNy4yODcNCgkJCWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3di0xMi42M0MyODMuODMyLDQwOC4zNTIsMjgwLjU3LDQwNS4wODksMjc2LjU0NSw0MDUuMDg5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Guest Bathroom":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02My42MTggNjItMi43MTgtNS40NDdhMSAxIDAgMCAwIC0uOS0uNTUzaC0xdi0zMGgzdi0yaC0zdi0xOWE1LjAwNiA1LjAwNiAwIDAgMCAtNS01aC0xNGE1LjAwNiA1LjAwNiAwIDAgMCAtNSA1djFhMyAzIDAgMCAwIC0zIDN2MWgtNWEzIDMgMCAwIDAgLTMgM3YyYTEgMSAwIDAgMCAxIDFoMTV2LTJoLTE0di0xYTEgMSAwIDAgMSAxLTFoMThhMSAxIDAgMCAxIDEgMXYxaC00djJoNWExIDEgMCAwIDAgMS0xdi0yYTMgMyAwIDAgMCAtMy0zaC01di0xYTMgMyAwIDAgMCAtMy0zdi0xYTMgMyAwIDAgMSAzLTNoMTRhMyAzIDAgMCAxIDMgM3YxOWgtNXYyaDV2MTRoLTN2LTJoLTJ2Nmgydi0yaDN2MTRoLTFhMSAxIDAgMCAwIC0uOS41NTNsLTIuNzE4IDUuNDQ3aC01Mi4zODJ2Mmg2NHYtMnptLTI1LjYxOC01M3YxaC00di0xYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxem0xOC42MTggNDloMi43NjRsMiA0aC02Ljc2NHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIgMzcuOTg3djE5LjAxM2ExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LTE5LjFsMi0uMDEzdjIuMTEzaDJ2LTZoLTJ2MS44ODJsLTE4LjAwNi4xMTguMDEyIDJ6bTIgMTIuMDEzaDEwdjFoLTEwem0wIDZ2LTNoMTB2M3ptMTAtOGgtMTB2LTEwLjAyNmwxMC0uMDY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAgMjljNC40ODYgMCA4LTUuMjcxIDgtMTJzLTMuNTE0LTEyLTgtMTItOCA1LjI3MS04IDEyIDMuNTE0IDEyIDggMTJ6bTAtMjJjMy4yNTIgMCA2IDQuNTc5IDYgMTBzLTIuNzQ4IDEwLTYgMTAtNi00LjU3OS02LTEwIDIuNzQ4LTEwIDYtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01LjA5NSAxMy41aDcuODF2MmgtNy44MXoiIHRyYW5zZm9ybT0ibWF0cml4KC43NjggLS42NCAuNjQgLjc2OCAtNy4xOTcgOS4xMjIpIi8+DQogICAgICAgIDxwYXRoIGQ9Im03LjA5NSAxOC41aDcuODF2MmgtNy44MXoiIHRyYW5zZm9ybT0ibWF0cml4KC43NjggLS42NCAuNjQgLjc2OCAtOS45MzQgMTEuNTYyKSIvPg0KICAgIDwvZz4NCjwvc3ZnPg==","Guest Room":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ1NiwzMjhhNDAuMDM3LDQwLjAzNywwLDAsMC04LC44MDQ5M1YxNDRhNy45NzUyMiw3Ljk3NTIyLDAsMCwwLTIuMzQzODEtNS42NTc0NywxNC42NDUzNSwxNC42NDUzNSwwLDAsMSwwLTIwLjY4NTA2QTcuOTc1MjIsNy45NzUyMiwwLDAsMCw0NDgsMTEyVjg4aDQwYTcuOTk5NDYsNy45OTk0NiwwLDAsMCw2Ljk0NTgtMTEuOTY4NzVsLTMyLTU2QTcuOTk4NjMsNy45OTg2MywwLDAsMCw0NTYsMTZIMzg0YTcuOTk4NjMsNy45OTg2MywwLDAsMC02Ljk0NTgsNC4wMzEyNWwtMzIsNTZBNy45OTk0Niw3Ljk5OTQ2LDAsMCwwLDM1Miw4OGg0MHYyNGE3Ljk3NTIyLDcuOTc1MjIsMCwwLDAsMi4zNDM4MSw1LjY1NzQ3LDE0LjY0NTM1LDE0LjY0NTM1LDAsMCwxLDAsMjAuNjg1MDZBNy45NzUyMiw3Ljk3NTIyLDAsMCwwLDM5MiwxNDRWMzIwSDMxMlYyODhoMjRhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgtOFYyNDhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLTgtOEgzMTJWMjE2aDQ4YTguMDAwMDgsOC4wMDAwOCwwLDAsMCw4LThWMTEyYTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThIMjA4YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LDh2OTZhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgsOGg0OHYyNEgyMDUuNDE2MDhsLTEzLjYwNTUzLTM0LjAxNDY1LTQuOTc0MTItMzkuNzkzQTU2LjUzMTQ4LDU2LjUzMTQ4LDAsMCwwLDE4NCwxNTQuMjZWODBBNjQsNjQsMCwwLDAsNTYsODB2NTIuODI4NjFBNTYuMDQxOTMsNTYuMDQxOTMsMCwwLDAsMzMuNTk0MjQsMTYxLjkxOWwtMTcuMTgzNiw1MS41NTA3OGE3Ljk5OCw3Ljk5OCwwLDAsMC0uMTcxODcsNC40NzA3bDUuNTkxMzcsMjIuMzY1NDhBNy45OTc0NSw3Ljk5NzQ1LDAsMCwwLDE2LDI0OFY0ODhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgsOEg0ODhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgtOFYzNjhBNDAuMDQ1NTIsNDAuMDQ1NTIsMCwwLDAsNDU2LDMyOFptMjQsNDB2NTZINDMyVjM2OGEyNCwyNCwwLDAsMSw0OCwwWk0yNjQsNDI0VjQwMGE4LjAwOTE3LDguMDA5MTcsMCwwLDEsOC04SDQwOGE4LjAwOTE3LDguMDA5MTcsMCwwLDEsOCw4djI0Wk05Niw0MjRWNDAwYTguMDA5MTcsOC4wMDkxNywwLDAsMSw4LThIMjQwYTguMDA5MTcsOC4wMDkxNywwLDAsMSw4LDh2MjRabTMyMC04MHYzMy4zNzYyMkEyMy44ODIxMiwyMy44ODIxMiwwLDAsMCw0MDgsMzc2SDI3MmEyMy45MDExMSwyMy45MDExMSwwLDAsMC0xNiw2LjEzMDg2QTIzLjkwMTExLDIzLjkwMTExLDAsMCwwLDI0MCwzNzZIMTA0YTIzLjg4MjEyLDIzLjg4MjEyLDAsMCwwLTgsMS4zNzYyMlYzNDRhOC4wMDkxNyw4LjAwOTE3LDAsMCwxLDgtOEg0MDhBOC4wMDkxNyw4LjAwOTE3LDAsMCwxLDQxNiwzNDRabTEwLjQ1MTcyLTIwOEg0MTMuNTQ4MjhhMzAuODQzNTEsMzAuODQzNTEsMCwwLDAsMC0xNmgxMi45MDM0NEEzMC44NDM1MSwzMC44NDM1MSwwLDAsMCw0MjYuNDUxNzIsMTM2Wk0zODguNjQyNTgsMzJoNjIuNzE0ODRsMjIuODU2OTQsNDBIMzY1Ljc4NTY0Wk00MzIsODh2MTZINDA4Vjg4Wm0tMjQsNjRoMjRWMzM2LjAyMmMtLjM2NjMzLjI3NTY0LS43MjQxOC41NjItMS4wODA2OS44NDk2MUEyNC4wNDM2OSwyNC4wNDM2OSwwLDAsMCw0MDgsMzIwWk0yOTYsMzIwSDEwNGEyNC4wNDM2OSwyNC4wNDM2OSwwLDAsMC0yMi45MTkzMSwxNi44NzE1OEEzOS45LDM5LjksMCwwLDAsMzIsMzM2LjAyMlYyODhIMjk2Wm0zMi00OEgzMlYyNTZIMzI4Wk03MiwyNDBINjRWMjI1LjU0MWw3LjMxNjg5LTE4LjI5Mkw3MiwyMDkuMjk3ODVabTg4LS4wMDAyNC4wMDAyNC4wMDAyNEgxNjBaTTIxNiwyMDBWMTIwSDM1MnY4MEgzMTJWMTY4YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThIMjY0YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LDh2MzJabTU2LTI0aDI0djY0SDI3MlpNMTIwLDMyYTQ4LjA1NCw0OC4wNTQsMCwwLDEsNDgsNDh2NTAuODUzNTJhNTYuNzI1NjIsNTYuNzI1NjIsMCwwLDAtNy45MTk5Mi01LjczNTM2bC0xMS40NDE2NS02Ljg2NUEzMS43OTQwNSwzMS43OTQwNSwwLDAsMCwxNTIsMTA0VjgwYTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThoLTYuMTExMzNhMjAuODMwNTMsMjAuODMwNTMsMCwwLDEtMTguNzMzNC0xMS41NzgxMiw4LjAwMDY0LDguMDAwNjQsMCwwLDAtMTIuODEyLTIuMDc5MTFsLTE2LDE2QTguMDAwNzYsOC4wMDA3NiwwLDAsMCw4OCw4MHYyNGEzMS44MDE4OCwzMS44MDE4OCwwLDAsMCwyLjc1NzUxLDEyLjk3MTE5TDcyLDEyNS4wMVY4MEE0OC4wNTQsNDguMDU0LDAsMCwxLDEyMCwzMlptMTYsNzJhMTYsMTYsMCwwLDEtMzIsMFY4My4zMTM0OGw2Ljk0Njc4LTYuOTQ2MjlBMzYuNjk4MTYsMzYuNjk4MTYsMCwwLDAsMTM2LDg3Ljk1MzEyWm0tMzQuNzcxOTEsMjUuODkyMDlhMzEuOTE2MTMsMzEuOTE2MTMsMCwwLDAsMzYuNzA0NDcuNTk3MTdsMS4yMzcxOC43NDI0M0wxMjAsMTU1LjE5MzM2bC0xOS44NjYyNy0yNC44MzIyOFpNNDguNzczLDE2Ni45Nzk0OUE0MC4wMzUzOCw0MC4wMzUzOCwwLDAsMSw3MC45NjM4NywxNDIuODYyM2wxMy45MTE2Mi01Ljk2MTkxLDI4Ljg3NzQ0LDM2LjA5NjY4YTcuOTk5NDMsNy45OTk0MywwLDAsMCwxMi40OTQxNCwwTDE1Mi45OSwxMzkuNTY4MzZhMzkuNzI3NzksMzkuNzI3NzksMCwwLDEsMTcuOTY5NDgsMjguNjA4NGw1LjEwMjU0LDQwLjgxNTQzYTcuOTgyODEsNy45ODI4MSwwLDAsMCwuNTEwMjYsMS45Nzg1MUwxODguMTgzNTksMjQwSDE4MGwtMjAtMjYuNjY3VjIwMS44MDY2NGE1MC44MjMzOCw1MC44MjMzOCwwLDAsMCwxLjkzMjYyLTM3LjMwNzYybC0yLjM0MzI2LTcuMDI5MjktMTUuMTc4NzIsNS4wNjA1NCwyLjM0MzI3LDcuMDI5M2EzNC45NTUxMywzNC45NTUxMywwLDAsMS0xLjkwOTE4LDI2Ljg2MjMxQTcuOTk5MzQsNy45OTkzNCwwLDAsMCwxNDQsMjAwdjQwSDg4VjIwOGE4LjAwNjQzLDguMDA2NDMsMCwwLDAtLjQxMDY0LTIuNTMwMjdsLTgtMjRhOC4wMDAwOSw4LjAwMDA5LDAsMCwwLTE1LjAxNzA5LS40NDA0M2wtMTYsNDBBNy45OTcyMyw3Ljk5NzIzLDAsMCwwLDQ4LDIyNHYxNkgzOC4yNDYwOWwtNS45MTk5Mi0yMy42ODA2NlpNMzIsMzY4YTI0LDI0LDAsMCwxLDQ4LDB2NTZIMzJaTTQ4MCw0ODBIMzJWNDQwSDQ4MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Gym:tSe,Hall:sSe,"Home Theater":"PHN2ZyBoZWlnaHQ9IjUxMXB0IiB2aWV3Qm94PSIxIC00NCA1MTEuOTk4OTkgNTExIiB3aWR0aD0iNTExcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICA8cGF0aCBkPSJtMjgyLjUxOTUzMSAzMzMuOTg4MjgxYy00LjE3MTg3NSAwLTcuNTQ2ODc1IDMuMzc4OTA3LTcuNTQ2ODc1IDcuNTQ2ODc1IDAgNC4xNjc5NjkgMy4zNzUgNy41NDY4NzUgNy41NDY4NzUgNy41NDY4NzVoMTE0LjMzOTg0NGM3LjA4MjAzMSAwIDEyLjg0Mzc1LTUuNzYxNzE5IDEyLjg0Mzc1LTEyLjg0NzY1NnYtMTkxLjkyOTY4N2MwLTcuMDgyMDMyLTUuNzYxNzE5LTEyLjg0NzY1Ny0xMi44NDM3NS0xMi44NDc2NTdoLTI4MS43MTg3NWMtNy4wODIwMzEgMC0xMi44NDM3NSA1Ljc2NTYyNS0xMi44NDM3NSAxMi44NDc2NTd2MTkxLjkyOTY4N2MwIDcuMDg1OTM3IDUuNzYxNzE5IDEyLjg0NzY1NiAxMi44NDM3NSAxMi44NDc2NTZoMTM3LjE5MTQwNmM0LjE2Nzk2OSAwIDcuNTQ2ODc1LTMuMzc4OTA2IDcuNTQ2ODc1LTcuNTQ2ODc1IDAtNC4xNjc5NjgtMy4zNzg5MDYtNy41NDY4NzUtNy41NDY4NzUtNy41NDY4NzVoLTEzNC45NDUzMTJ2LTE4Ny40Mzc1aDI3Ny4yMjY1NjJ2MTg3LjQzNzV6bTAgMCIvPg0KICAgIDxwYXRoIGQ9Im00OS4yNjE3MTkgODIuNzQyMTg4YzE1LjU4MjAzMSAwIDI4LjI2MTcxOS0xMi42Nzk2ODggMjguMjYxNzE5LTI4LjI1MzkwNyAwLTE1LjU4NTkzNy0xMi42Nzk2ODgtMjguMjYxNzE5LTI4LjI2MTcxOS0yOC4yNjE3MTktMTUuNTc4MTI1IDAtMjguMjUzOTA3IDEyLjY3NTc4Mi0yOC4yNTM5MDcgMjguMjYxNzE5IDAgMTUuNTc0MjE5IDEyLjY3NTc4MiAyOC4yNTM5MDcgMjguMjUzOTA3IDI4LjI1MzkwN3ptMC00MS40MjU3ODJjNy4yNjE3MTkgMCAxMy4xNjc5NjkgNS45MDYyNSAxMy4xNjc5NjkgMTMuMTcxODc1IDAgNy4yNTM5MDctNS45MDYyNSAxMy4xNjAxNTctMTMuMTY3OTY5IDEzLjE2MDE1Ny03LjI1MzkwNyAwLTEzLjE2MDE1Ny01LjkwNjI1LTEzLjE2MDE1Ny0xMy4xNjAxNTcgMC03LjI2NTYyNSA1LjkwNjI1LTEzLjE3MTg3NSAxMy4xNjAxNTctMTMuMTcxODc1em0wIDAiLz4NCiAgICA8cGF0aCBkPSJtNDYyLjczODI4MS41Yy0yNy4xNjQwNjIgMC00OS4yNjk1MzEgMjIuMTA1NDY5LTQ5LjI2OTUzMSA0OS4yNjk1MzF2NTYuMzA0Njg4Yy01LjY1MjM0NC0xLjM2NzE4OC02LjA0Mjk2OS0uNTM1MTU3LTU0LjMzMjAzMS0uNzc3MzQ0LTQuMTY0MDYzIDAtNy41NDI5NjkgMy4zODI4MTMtNy41NDI5NjkgNy41NDY4NzVzMy4zNzg5MDYgNy41NDY4NzUgNy41NDI5NjkgNy41NDY4NzVoNDcuNzIyNjU2YzcuNzMwNDY5IDAgMTMuOTE0MDYzIDYuMzA0Njg3IDEzLjkxNDA2MyAxMy45MTQwNjN2MjExLjkzMzU5M2MwIDcuNjY0MDYzLTYuMjQ2MDk0IDEzLjkxNDA2My0xMy45MTQwNjMgMTMuOTE0MDYzLTU5LjQxNzk2OSAwLTIzMS41NTQ2ODcgMC0zMDEuNzE4NzUgMC03LjY2Nzk2OSAwLTEzLjkxNDA2My02LjI1LTEzLjkxNDA2My0xMy45MTQwNjMgMC0xMC43NDYwOTMgMC0yMDQuNTg5ODQzIDAtMjExLjkzMzU5MyAwLTUuMjczNDM4IDIuOTU3MDMyLTkuODc4OTA3IDcuMzA0Njg4LTEyLjI0NjA5NCA1Ljg0Mzc1LTMuMTc1NzgyLTQuMjQyMTg4LTEuMDQ2ODc1IDIzMC40MjE4NzUtMS42Njc5NjkgNC4xNzU3ODEgMCA3LjU0Njg3NS0zLjM4MjgxMyA3LjU0Njg3NS03LjU0Njg3NXMtMy4zNzEwOTQtNy41NDY4NzUtNy41NDY4NzUtNy41NDY4NzVjLTIzNi4zNTE1NjMuMjczNDM3LTIyNC41NTA3ODEtLjY0NDUzMS0yMzAuNDIxODc1Ljc3NzM0NHYtNTYuMzA0Njg4YzAtMjcuMTY0MDYyLTIyLjEwNTQ2OS00OS4yNjk1MzEtNDkuMjY5NTMxLTQ5LjI2OTUzMS0yMi43Njk1MzEgMC00Mi40NDkyMTkgMTUuNDMzNTk0LTQ3Ljg2MzI4MSAzNy41MjczNDQtLjk4NDM3NiA0LjA1NDY4NyAxLjUgOC4xNDA2MjUgNS41NDI5NjggOS4xMjUgNC4wNDY4NzUuOTg4MjgxIDguMTI4OTA2LTEuNDg4MjgyIDkuMTI1LTUuNTMxMjUgMy43NDYwOTQtMTUuMzI0MjE5IDE3LjM5ODQzOC0yNi4wMzEyNSAzMy4xOTUzMTMtMjYuMDMxMjUgMTguODQzNzUgMCAzNC4xNzU3ODEgMTUuMzM1OTM3IDM0LjE3NTc4MSAzNC4xNzk2ODd2NjUuMzE2NDA3Yy0zLjExMzI4MSAzLjUxMTcxOC01LjM5MDYyNSA3Ljc3MzQzNy02LjUxMTcxOSAxMi40ODA0NjgtMi42NzE4NzUtMTIuODI0MjE4LTE0LjA1ODU5My0yMi40ODgyODEtMjcuNjY0MDYyLTIyLjQ4ODI4MS0xNS41NzgxMjUgMC0yOC4yNTM5MDcgMTIuNjc5Njg3LTI4LjI1MzkwNyAyOC4yNTc4MTMgMCAxNS41NzgxMjQgMTIuNjc1NzgyIDI4LjI1NzgxMiAyOC4yNTM5MDcgMjguMjU3ODEyIDEyLjUzNTE1NiAwIDIzLjE4NzUtOC4yMTA5MzggMjYuODcxMDkzLTE5LjUzMTI1djYxLjM5ODQzOGMtMy42ODM1OTMtMTEuMzIwMzEzLTE0LjMzNTkzNy0xOS41MjczNDQtMjYuODcxMDkzLTE5LjUyNzM0NC0xNS41NzgxMjUgMC0yOC4yNTM5MDcgMTIuNjc1NzgxLTI4LjI1MzkwNyAyOC4yNTM5MDYgMCAxNS41ODIwMzEgMTIuNjc1NzgyIDI4LjI1NzgxMiAyOC4yNTM5MDcgMjguMjU3ODEyIDEyLjUzNTE1NiAwIDIzLjE4NzUtOC4yMDcwMzEgMjYuODcxMDkzLTE5LjUzMTI1djYxLjQwMjM0NGMtMy42ODM1OTMtMTEuMzI0MjE4LTE0LjMzNTkzNy0xOS41MzEyNS0yNi44NzEwOTMtMTkuNTMxMjUtMTUuNTc4MTI1IDAtMjguMjUzOTA3IDEyLjY3NTc4Mi0yOC4yNTM5MDcgMjguMjUzOTA2IDAgMTUuNTgyMDMyIDEyLjY3NTc4MiAyOC4yNTc4MTMgMjguMjUzOTA3IDI4LjI1NzgxMyAxMi41MzUxNTYgMCAyMy4xODc1LTguMjA3MDMxIDI2Ljg3MTA5My0xOS41MzEyNXYxNy4wODk4NDRjLTIwLjEwNTQ2OCAyNS41MzEyNS02MS4wMzkwNjIgMTEuMTI1LTYxLjAzOTA2Mi0yMS4wOTc2NTd2LTIyNS44NDM3NWMwLTQuMTc1NzgxLTMuMzgyODEyLTcuNTQ2ODc0LTcuNTQ2ODc1LTcuNTQ2ODc0LTQuMTc1NzgxIDAtNy41NDY4NzUgMy4zNzEwOTMtNy41NDY4NzUgNy41NDY4NzR2MjI1Ljg0Mzc1YzAgMjQuNjAxNTYzIDE4LjEyMTA5NCA0NS4wNTA3ODIgNDEuNzE4NzUgNDguNjk1MzEzdjYyLjUyNzM0NGgtMTguOTY0ODQ0Yy00LjE2Nzk2OCAwLTcuNTQ2ODc1IDMuMzc4OTA2LTcuNTQ2ODc1IDcuNTQ2ODc1IDAgNC4xNjc5NjggMy4zNzg5MDcgNy41NDY4NzUgNy41NDY4NzUgNy41NDY4NzVoNTMuMDE5NTMyYzQuMTY3OTY4IDAgNy41NDY4NzQtMy4zNzg5MDcgNy41NDY4NzQtNy41NDY4NzUgMC00LjE2Nzk2OS0zLjM3ODkwNi03LjU0Njg3NS03LjU0Njg3NC03LjU0Njg3NWgtMTguOTY0ODQ0di02Mi41MzEyNWM3LjA0Mjk2OC0xLjA4NTkzOCAxMy41OTc2NTYtMy42Njc5NjkgMTkuMzI0MjE4LTcuNDEwMTU3djkuMTk5MjE5YzAgMTUuOTg0Mzc1IDEzLjAxOTUzMiAyOS4wMDM5MDcgMjkuMDA3ODEzIDI5LjAwMzkwN2g0NS44MjAzMTN2MzUuODk4NDM3YzAgNi4yODkwNjMgNS4xMDkzNzQgMTEuNDEwMTU2IDExLjM5ODQzNyAxMS40MTAxNTZoMjEuMTI4OTA2YzYuMjg5MDYzIDAgMTEuMzk4NDM4LTUuMTIxMDkzIDExLjM5ODQzOC0xMS40MTAxNTZ2LTM1Ljg5ODQzN2gxMjIuMjI2NTYydjM1Ljg5ODQzN2MwIDYuMjg5MDYzIDUuMTA5Mzc1IDExLjQxMDE1NiAxMS4zOTg0MzggMTEuNDEwMTU2aDIxLjEyODkwNmM2LjI4OTA2MyAwIDExLjM5ODQzNy01LjEyMTA5MyAxMS4zOTg0MzctMTEuNDEwMTU2di0zNS44OTg0MzdoNDUuODIwMzEzYzE1Ljk4ODI4MSAwIDI5LjAwNzgxMy0xMy4wMTk1MzIgMjkuMDA3ODEzLTI5LjAwMzkwN3YtOS4xOTkyMTljNS43MjY1NjIgMy43NDIxODggMTIuMjgxMjUgNi4zMjQyMTkgMTkuMzI0MjE4IDcuNDEwMTU3djYyLjUzMTI1aC0xOC45NjQ4NDRjLTQuMTY3OTY4IDAtNy41NDY4NzQgMy4zNzg5MDYtNy41NDY4NzQgNy41NDY4NzUgMCA0LjE2Nzk2OCAzLjM3ODkwNiA3LjU0Njg3NSA3LjU0Njg3NCA3LjU0Njg3NWg1My4wMTk1MzJjNC4xNjc5NjggMCA3LjU0Njg3NS0zLjM3ODkwNyA3LjU0Njg3NS03LjU0Njg3NSAwLTQuMTY3OTY5LTMuMzc4OTA3LTcuNTQ2ODc1LTcuNTQ2ODc1LTcuNTQ2ODc1aC0xOC45NjQ4NDR2LTYyLjUyNzM0NGMyMy41OTc2NTYtMy42NDQ1MzEgNDEuNzE4NzUtMjQuMDkzNzUgNDEuNzE4NzUtNDguNjk1MzEzdi0yNDUuOTg4MjgxYzAtMjcuMTY0MDYyLTIyLjA5Mzc1LTQ5LjI2OTUzMS00OS4yNjE3MTktNDkuMjY5NTMxem0tNDEzLjQ3NjU2MiAxNDZjLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2NDA2MiAwLTcuMjU3ODEzIDUuOTA2MjUtMTMuMTY0MDYzIDEzLjE2NDA2My0xMy4xNjQwNjMgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYzIDAgNy4yNTc4MTItNS45MDYyNSAxMy4xNjQwNjItMTMuMTY0MDYyIDEzLjE2NDA2MnptMCA3OC44NTU0NjljLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2Nzk2OSAwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2My0xMy4xNjQwNjIgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYyIDEzLjE2Nzk2OXptMCA3OC44NTE1NjJjLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2Nzk2OSAwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2My0xMy4xNjQwNjIgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYyIDEzLjE2Nzk2OXptMTMwLjUzNTE1NiAxMDMuMjUzOTA3aC0xMy43NDYwOTR2LTMyLjIxODc1aDEzLjc0NjA5NHptMTY2LjE1MjM0NCAwaC0xMy43NDYwOTR2LTMyLjIxODc1aDEzLjc0NjA5NHptMTUwLjk1NzAzMS0xMTEuNzAzMTI2YzAgMzIuMjM4MjgyLTQwLjk0MTQwNiA0Ni42MjEwOTQtNjEuMDM5MDYyIDIxLjA5NzY1N3YtMTcuMDg1OTM4YzMuNjgzNTkzIDExLjMyMDMxMyAxNC4zMzU5MzcgMTkuNTI3MzQ0IDI2Ljg3MTA5MyAxOS41MjczNDQgMTUuNTc4MTI1IDAgMjguMjUzOTA3LTEyLjY3NTc4MSAyOC4yNTM5MDctMjguMjU3ODEzIDAtMTUuNTc4MTI0LTEyLjY3NTc4Mi0yOC4yNTM5MDYtMjguMjUzOTA3LTI4LjI1MzkwNi0xMi41MzUxNTYgMC0yMy4xODM1OTMgOC4yMDcwMzItMjYuODcxMDkzIDE5LjUyNzM0NHYtNjEuMzk0NTMxYzMuNjgzNTkzIDExLjMyMDMxMiAxNC4zMzU5MzcgMTkuNTI3MzQzIDI2Ljg3MTA5MyAxOS41MjczNDMgMTUuNTc4MTI1IDAgMjguMjUzOTA3LTEyLjY3NTc4MSAyOC4yNTM5MDctMjguMjU3ODEyIDAtMTUuNTc4MTI1LTEyLjY3NTc4Mi0yOC4yNTM5MDYtMjguMjUzOTA3LTI4LjI1MzkwNi0xMi41MzUxNTYgMC0yMy4xODM1OTMgOC4yMDcwMzEtMjYuODcxMDkzIDE5LjUyNzM0NHYtNjEuMzk4NDM4YzMuNjgzNTkzIDExLjMyNDIxOSAxNC4zMzU5MzcgMTkuNTMxMjUgMjYuODcxMDkzIDE5LjUzMTI1IDE1LjU3ODEyNSAwIDI4LjI1MzkwNy0xMi42NzU3ODEgMjguMjUzOTA3LTI4LjI1NzgxMiAwLTE1LjU3ODEyNi0xMi42NzU3ODItMjguMjUzOTA3LTI4LjI1MzkwNy0yOC4yNTM5MDctMTMuNjA1NDY5IDAtMjQuOTkyMTg3IDkuNjYwMTU3LTI3LjY2NDA2MiAyMi40ODQzNzUtMS4xMjEwOTQtNC43MDcwMzEtMy4zOTg0MzgtOC45Njg3NS02LjUxMTcxOS0xMi40NzY1NjJ2LTY1LjMyMDMxM2MwLTE4Ljg0Mzc1IDE1LjMzMjAzMS0zNC4xNzk2ODcgMzQuMTc5Njg4LTM0LjE3OTY4NyAxOC44NDM3NSAwIDM0LjE2Nzk2OCAxNS4zMzU5MzcgMzQuMTY3OTY4IDM0LjE3OTY4N3YyNDUuOTg4Mjgxem0tNDcuMzMyMDMxLTQuNzE4NzVjMC03LjI1NzgxMiA1LjkwNjI1LTEzLjE2NDA2MiAxMy4xNjQwNjItMTMuMTY0MDYyIDcuMjU3ODEzIDAgMTMuMTY0MDYzIDUuOTA2MjUgMTMuMTY0MDYzIDEzLjE2NDA2MiAwIDcuMjYxNzE5LTUuOTA2MjUgMTMuMTY3OTY5LTEzLjE2NDA2MyAxMy4xNjc5NjktNy4yNTc4MTIgMC0xMy4xNjQwNjItNS45MDYyNS0xMy4xNjQwNjItMTMuMTY3OTY5em0wLTc4Ljg1MTU2MmMwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2Mi0xMy4xNjQwNjIgNy4yNTc4MTMgMCAxMy4xNjQwNjMgNS45MDYyNSAxMy4xNjQwNjMgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYzIDEzLjE2Nzk2OS03LjI1NzgxMiAwLTEzLjE2NDA2Mi01LjkwNjI1LTEzLjE2NDA2Mi0xMy4xNjc5Njl6bTAtNzguODUxNTYyYzAtNy4yNTc4MTMgNS45MDYyNS0xMy4xNjQwNjMgMTMuMTY0MDYyLTEzLjE2NDA2MyA3LjI1NzgxMyAwIDEzLjE2NDA2MyA1LjkwNjI1IDEzLjE2NDA2MyAxMy4xNjQwNjMgMCA3LjI1NzgxMi01LjkwNjI1IDEzLjE2NDA2Mi0xMy4xNjQwNjMgMTMuMTY0MDYyLTcuMjU3ODEyIDAtMTMuMTY0MDYyLTUuOTA2MjUtMTMuMTY0MDYyLTEzLjE2NDA2MnptMCAwIi8+DQogICAgPHBhdGggZD0ibTQ2Mi43MzgyODEgMjYuMjI2NTYyYy0xNS41ODIwMzEgMC0yOC4yNTc4MTIgMTIuNjc1NzgyLTI4LjI1NzgxMiAyOC4yNTc4MTMgMCAxNS41NzgxMjUgMTIuNjc1NzgxIDI4LjI1MzkwNiAyOC4yNTc4MTIgMjguMjUzOTA2IDE1LjU3ODEyNSAwIDI4LjI1MzkwNy0xMi42NzU3ODEgMjguMjUzOTA3LTI4LjI1MzkwNiAwLTE1LjU4MjAzMS0xMi42NzU3ODItMjguMjU3ODEzLTI4LjI1MzkwNy0yOC4yNTc4MTN6bTAgNDEuNDIxODc2Yy03LjI2MTcxOSAwLTEzLjE2Nzk2OS01LjkwNjI1LTEzLjE2Nzk2OS0xMy4xNjQwNjMgMC03LjI2MTcxOSA1LjkwNjI1LTEzLjE2NDA2MyAxMy4xNjc5NjktMTMuMTY0MDYzIDcuMjU3ODEzIDAgMTMuMTY0MDYzIDUuOTAyMzQ0IDEzLjE2NDA2MyAxMy4xNjQwNjMgMCA3LjI1NzgxMy01LjkwNjI1IDEzLjE2NDA2My0xMy4xNjQwNjMgMTMuMTY0MDYzem0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Kitchen:iSe,"Laundry Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MSAyaC01OGMtLjU1MiAwLTEgLjQ0OC0xIDF2NThjMCAuNTUyLjQ0OCAxIDEgMWg1OGMuNTUyIDAgMS0uNDQ4IDEtMXYtNThjMC0uNTUyLS40NDgtMS0xLTF6bS0xIDZoLTR2LTJjMC0uNTUyLS40NDgtMS0xLTFoLTZjLS41NTIgMC0xIC40NDgtMSAxdjJoLTNjLS41NTIgMC0xIC40NDgtMSAxdjloLTJ2LTE0aDE4em0tMTIuMTQyIDMxLTEuNjkyLTExaDkuNjY5bC0xLjY5MiAxMXptMS4xNDItMTNjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptOC43NTkuMzQ5Yy0uMTktLjIyMi0uNDY3LS4zNDktLjc1OS0uMzQ5aC0yYzAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0aC0yYy0uMjkyIDAtLjU2OS4xMjctLjc1OS4zNDlzLS4yNzQuNTE1LS4yMjkuODAzbDEuODIzIDExLjg0OGgtMy44MzV2LTE5aDE4djE5aC0zLjgzNWwxLjgyMy0xMS44NDhjLjA0NS0uMjg4LS4wMzktLjU4Mi0uMjI5LS44MDN6bS03Ljc1OS0xNy4zNDl2LTJoNHYxMWgtNHptLTIgOWgtMnYtOGgyem04IDB2LThoNHY4em0tMTYtMTR2MTRoLTJ2LTEwYzAtLjU1Mi0uNDQ4LTEtMS0xaC02Yy0uNTUyIDAtMSAuNDQ4LTEgMXYxMGgtMnYtN2MwLS4yNjUtLjEwNS0uNTItLjI5My0uNzA3bC0xLjcwNy0xLjcwN3YtMi41ODZjMC0uNTUyLS40NDgtMS0xLTFoLTRjLS41NTIgMC0xIC40NDgtMSAxdjIuNTg2bC0xLjcwNyAxLjcwN2MtLjE4OC4xODctLjI5My40NDItLjI5My43MDd2N2gtMnYtMTBjMC0uNTUyLS40NDgtMS0xLTFoLThjLS41NTIgMC0xIC40NDgtMSAxdjEwaC0ydi0xNHptLTQgMTRoLTR2LTloNHptLTExLjcwNy04LjI5MyAxLjcwNyAxLjcwN3Y2LjU4NmgtNnYtNi41ODZsMS43MDctMS43MDdjLjE4OC0uMTg3LjI5My0uNDQyLjI5My0uNzA3di0yaDJ2MmMwIC4yNjUuMTA1LjUyLjI5My43MDd6bS0xMC4yOTMgOC4yOTNoLTZ2LTloNnptLTEwIDJoMzZ2NDBoLTM2em00NSAyOGgtMnYtMWgyem0tMyAyaDQuNjQ5bDQuMzUxIDMuNDh2Ni41MmgtOXptMTEgMTB2LTdjMC0uMzA0LS4xMzgtLjU5MS0uMzc1LS43ODFsLTUtNGMtLjE3OC0uMTQyLS4zOTgtLjIxOS0uNjI1LS4yMTl2LTJjMC0uNTUyLS40NDgtMS0xLTFoLTRjLS41NTIgMC0xIC40NDgtMSAxdjJjLS41NTIgMC0xIC40NDgtMSAxdjExaC0ydi0xOWgxOHYxOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDIyaC0zMGMtLjU1MiAwLTEgLjQ0OC0xIDF2MzRjMCAuNTUyLjQ0OCAxIDEgMWgzMGMuNTUyIDAgMS0uNDQ4IDEtMXYtMzRjMC0uNTUyLS40NDgtMS0xLTF6bS0xIDJ2NWgtMjh2LTV6bS0yOCAzMnYtMjVoMjh2MjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMiAzM2MtNi4wNjUgMC0xMSA0LjkzNS0xMSAxMXM0LjkzNSAxMSAxMSAxMSAxMS00LjkzNSAxMS0xMS00LjkzNS0xMS0xMS0xMXptMCAyMGMtNC45NjIgMC05LTQuMDM4LTktOXM0LjAzOC05IDktOSA5IDQuMDM4IDkgOS00LjAzOCA5LTkgOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI2LjE5OSA0OC4yODYgMS4zOTkgMS40MjljLjY3Ny0uNjYzIDEuMjI2LTEuNDMyIDEuNjMxLTIuMjg2bC0xLjgwNy0uODU3Yy0uMzAzLjYzOS0uNzE0IDEuMjE2LTEuMjIzIDEuNzE0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjIgMzZ2MmMzLjMwOSAwIDYgMi42OTEgNiA2aDJjMC00LjQxMS0zLjU4OS04LTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwIDI1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0IDI1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDI1aDJ2MmgtMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Living Area":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5NC41IDI3Ny42NjdoLTUuNXYtMzYuNWMwLTE1LjE2NC0xMi4zMzYtMjcuNS0yNy41LTI3LjVoLTExMGMtNy44NzUgMC0xNC45ODIgMy4zMzItMjAgOC42NTUtNS4wMTgtNS4zMjItMTIuMTI1LTguNjU1LTIwLTguNjU1aC0xMTBjLTcuODc1IDAtMTQuOTgyIDMuMzMyLTIwIDguNjU1LTUuMDE4LTUuMzIyLTEyLjEyNS04LjY1NS0yMC04LjY1NWgtNDAuNWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWg0MC41YzYuODkzIDAgMTIuNSA1LjYwNyAxMi41IDEyLjV2NzcuMDE4Yy0zLjc1My0xLjkyNC04LTMuMDE4LTEyLjUtMy4wMThoLTEwMS41di0yMGMwLTkuNjQ5LTcuODUxLTE3LjUtMTcuNS0xNy41aC0zLjV2LTM2LjVjMC02Ljg5MyA1LjYwNy0xMi41IDEyLjUtMTIuNWgzNC41YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC0zNC41Yy0xNS4xNjQgMC0yNy41IDEyLjMzNi0yNy41IDI3LjV2MzYuNWgtNi41Yy05LjY0OSAwLTE3LjUgNy44NTEtMTcuNSAxNy41djQyLjVjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtNDIuNWMwLTEuMzc4IDEuMTIyLTIuNSAyLjUtMi41aDI1YzEuMzc4IDAgMi41IDEuMTIyIDIuNSAyLjV2MTQwLjVoLTI3LjVjLTEuMzc4IDAtMi41LTEuMTIyLTIuNS0yLjV2LTYwLjVjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NjAuNWMwIDkuNjQ5IDcuODUxIDE3LjUgMTcuNSAxNy41aDI3LjV2MTQuNjY3YzAgNi44OTMgNS42MDcgMTIuNSAxMi41IDEyLjVoMjVjNi44OTMgMCAxMi41LTUuNjA3IDEyLjUtMTIuNXYtMTQuNjY3aDMyMnYxNC42NjdjMCA2Ljg5MyA1LjYwNyAxMi41IDEyLjUgMTIuNWgyNWM2Ljg5MyAwIDEyLjUtNS42MDcgMTIuNS0xMi41di0xNC42NjdoMjcuNWM5LjY0OSAwIDE3LjUtNy44NTEgMTcuNS0xNy41di0xMzhjMC05LjY1LTcuODUxLTE3LjUtMTcuNS0xNy41em0tMTQzLTQ5aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41djM2LjVoLTQuNWMtOS42NDkgMC0xNy41IDcuODUxLTE3LjUgMTcuNXYyMGgtMTAwLjVjLTQuNSAwLTguNzQ3IDEuMDkzLTEyLjUgMy4wMTh2LTc3LjAxOGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41em0tMjkxLjUgMjA3di0xNWgzMjZjNC4xNDIgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjVoLTMyNnYtMTUuNWgxMDEuNWM3Ljg3NSAwIDE0Ljk4Mi0zLjMzMiAyMC04LjY1NSA1LjAxOCA1LjMyMiAxMi4xMjUgOC42NTUgMjAgOC42NTVoMTEwYzcuODc1IDAgMTQuOTgyLTMuMzMyIDIwLTguNjU1IDUuMDE4IDUuMzIyIDEyLjEyNSA4LjY1NSAyMCA4LjY1NWgxMDAuNXYxNS41aC0zMWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWgzMXYxNXptMzkyLTYwLjVoLTEwMC41Yy02Ljg5MyAwLTEyLjUtNS42MDctMTIuNS0xMi41di0yMGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41aDEwMC41em0tMTI4LTEyLjVjMCA2Ljg5My01LjYwNyAxMi41LTEyLjUgMTIuNWgtMTEwYy02Ljg5MyAwLTEyLjUtNS42MDctMTIuNS0xMi41di0yMGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41em0tMTIyLjUtMTM0aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41djc3LjAxOGMtMy43NTMtMS45MjQtOC0zLjAxOC0xMi41LTMuMDE4aC0xMTBjLTQuNSAwLTguNzQ3IDEuMDkzLTEyLjUgMy4wMTh2LTc3LjAxOGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41em0tNDAgMTAxLjVjNi44OTMgMCAxMi41IDUuNjA3IDEyLjUgMTIuNXYyMGMwIDYuODkzLTUuNjA3IDEyLjUtMTIuNSAxMi41aC0xMDEuNXYtNDV6bS04MS41IDEzMi42NjZoLTIwdi0xMi4xNjdoMjB6bTM1MiAwdi0xMi4xNjdoMjB2MTIuMTY3em02NS0yOS42NjZjMCAxLjM3OC0xLjEyMiAyLjUtMi41IDIuNWgtMjcuNXYtMTQwLjVjMC0xLjM3OCAxLjEyMi0yLjUgMi41LTIuNWgyNWMxLjM3OCAwIDIuNSAxLjEyMiAyLjUgMi41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjIgMTczLjY2N2g4OWM2Ljg5MyAwIDEyLjUtNS42MDcgMTIuNS0xMi41di01NmMwLTYuODkzLTUuNjA3LTEyLjUtMTIuNS0xMi41aC04OWMtNi44OTMgMC0xMi41IDUuNjA3LTEyLjUgMTIuNXY1NmMwIDYuODkyIDUuNjA3IDEyLjUgMTIuNSAxMi41em0yLjUtNjZoODR2NTFoLTg0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzYyIDE3My42NjdoODljNi44OTMgMCAxMi41LTUuNjA3IDEyLjUtMTIuNXYtNTZjMC02Ljg5My01LjYwNy0xMi41LTEyLjUtMTIuNWgtODljLTYuODkzIDAtMTIuNSA1LjYwNy0xMi41IDEyLjV2NTZjMCA2Ljg5MiA1LjYwNyAxMi41IDEyLjUgMTIuNXptMi41LTY2aDg0djUxaC04NHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMC40OSAxMzAuMTY3aDExMi4wMmM2Ljg4NyAwIDEyLjQ5LTUuNjAzIDEyLjQ5LTEyLjQ5di0xNi41NDljMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2MTQuMDM5aC0xMDd2LTY2aDEwN3YxNi45NjFjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtMTkuNDcyYzAtNi44ODctNS42MDMtMTIuNDktMTIuNDktMTIuNDloLTExMi4wMmMtNi44ODcgMC0xMi40OSA1LjYwMy0xMi40OSAxMi40OXY3MS4wMjFjMCA2Ljg4NiA1LjYwMyAxMi40OSAxMi40OSAxMi40OXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMS44ODEgMjc4LjEwMmM3LjM0OSA0LjgyOCAxMy41MjIgMTEuMDAyIDE4LjM1MSAxOC4zNTEgMS4zODcgMi4xMSAzLjc0MyAzLjM4MSA2LjI2OCAzLjM4MXM0Ljg4MS0xLjI3MSA2LjI2OC0zLjM4MWM0LjgyOC03LjM0OSAxMS4wMDItMTMuNTIyIDE4LjM1MS0xOC4zNTEgMi4xMS0xLjM4NyAzLjM4MS0zLjc0MyAzLjM4MS02LjI2OHMtMS4yNzEtNC44ODEtMy4zODEtNi4yNjhjLTcuMzQ5LTQuODI4LTEzLjUyMi0xMS4wMDItMTguMzUxLTE4LjM1MS0xLjM4Ny0yLjExLTMuNzQzLTMuMzgxLTYuMjY4LTMuMzgxcy00Ljg4MSAxLjI3MS02LjI2OCAzLjM4MWMtNC44MjggNy4zNDktMTEuMDAyIDEzLjUyMi0xOC4zNTEgMTguMzUxLTIuMTEgMS4zODctMy4zODEgMy43NDMtMy4zODEgNi4yNjhzMS4yNzEgNC44ODEgMy4zODEgNi4yNjh6bTI0LjYxOS0xNC4zNDVjMi40OTQgMi44ODcgNS4xODkgNS41ODMgOC4wNzYgOC4wNzYtMi44ODcgMi40OTQtNS41ODMgNS4xODktOC4wNzYgOC4wNzYtMi40OTQtMi44ODctNS4xODktNS41ODMtOC4wNzYtOC4wNzYgMi44ODctMi40OTMgNS41ODItNS4xODggOC4wNzYtOC4wNzZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zODEuODgxIDI3OC4xMDJjNy4zNDkgNC44MjggMTMuNTIyIDExLjAwMiAxOC4zNTEgMTguMzUxIDEuMzg3IDIuMTEgMy43NDMgMy4zODEgNi4yNjggMy4zODFzNC44ODEtMS4yNzEgNi4yNjgtMy4zODFjNC44MjgtNy4zNDkgMTEuMDAyLTEzLjUyMiAxOC4zNTEtMTguMzUxIDIuMTEtMS4zODcgMy4zODEtMy43NDMgMy4zODEtNi4yNjhzLTEuMjcxLTQuODgxLTMuMzgxLTYuMjY4Yy03LjM0OS00LjgyOC0xMy41MjItMTEuMDAyLTE4LjM1MS0xOC4zNTEtMS4zODctMi4xMS0zLjc0My0zLjM4MS02LjI2OC0zLjM4MXMtNC44ODEgMS4yNzEtNi4yNjggMy4zODFjLTQuODI4IDcuMzQ5LTExLjAwMiAxMy41MjItMTguMzUxIDE4LjM1MS0yLjExIDEuMzg3LTMuMzgxIDMuNzQzLTMuMzgxIDYuMjY4czEuMjcxIDQuODgxIDMuMzgxIDYuMjY4em0yNC42MTktMTQuMzQ1YzIuNDk0IDIuODg3IDUuMTg5IDUuNTgzIDguMDc2IDguMDc2LTIuODg3IDIuNDk0LTUuNTgzIDUuMTg5LTguMDc2IDguMDc2LTIuNDk0LTIuODg3LTUuMTg5LTUuNTgzLTguMDc2LTguMDc2IDIuODg3LTIuNDkzIDUuNTgyLTUuMTg4IDguMDc2LTguMDc2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAwLjIzMiAyNDcuMjE1Yy00LjgyOCA3LjM0OS0xMS4wMDIgMTMuNTIyLTE4LjM1MSAxOC4zNTEtMi4xMSAxLjM4Ny0zLjM4MSAzLjc0My0zLjM4MSA2LjI2OHMxLjI3MSA0Ljg4MSAzLjM4MSA2LjI2OGM3LjM0OSA0LjgyOCAxMy41MjIgMTEuMDAyIDE4LjM1MSAxOC4zNTEgMS4zODcgMi4xMSAzLjc0MyAzLjM4MSA2LjI2OCAzLjM4MXM0Ljg4MS0xLjI3MSA2LjI2OC0zLjM4MWM0LjgyOC03LjM0OSAxMS4wMDItMTMuNTIyIDE4LjM1MS0xOC4zNTEgMi4xMS0xLjM4NyAzLjM4MS0zLjc0MyAzLjM4MS02LjI2OHMtMS4yNzEtNC44ODEtMy4zODEtNi4yNjhjLTcuMzQ5LTQuODI4LTEzLjUyMi0xMS4wMDItMTguMzUxLTE4LjM1MS0xLjM4Ny0yLjExLTMuNzQzLTMuMzgxLTYuMjY4LTMuMzgxcy00Ljg4MSAxLjI3LTYuMjY4IDMuMzgxem0xNC4zNDQgMjQuNjE4Yy0yLjg4NyAyLjQ5NC01LjU4MyA1LjE4OS04LjA3NiA4LjA3Ni0yLjQ5NC0yLjg4Ny01LjE4OS01LjU4My04LjA3Ni04LjA3NiAyLjg4Ny0yLjQ5NCA1LjU4My01LjE4OSA4LjA3Ni04LjA3NiAyLjQ5NCAyLjg4OCA1LjE4OSA1LjU4MyA4LjA3NiA4LjA3NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Living Room":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ3MywzMzEuOTE2VjI3My42NDhBMzkuNzEsMzkuNzEsMCwwLDAsNDMzLjMyOCwyMzRIMzc2VjE3MGg0NC4wMDlhNi4yODksNi4yODksMCwwLDAsNS43NDctOC4wMkw0MDQuODMxLDkyLjI0OEE1Ljk3Niw1Ljk3NiwwLDAsMCwzOTkuMDg0LDg4SDM0MC45MTZhNS45MzIsNS45MzIsMCwwLDAtNS43NDcsNC4yTDMxNC4yNDQsMTYxLjkyYTYuMzcyLDYuMzcyLDAsMCwwLC45MzQsNS40ODMsNi4xNzYsNi4xNzYsMCwwLDAsNC44MTMsMi42SDM2NHY2NEg4OC42NzVBMzkuNzEzLDM5LjcxMywwLDAsMCw0OSwyNzMuNjQ4djU4LjI2OGEzOS40MTcsMzkuNDE3LDAsMCwwLTM3LDM5LjU1NlY0NjMuMWE1LjkxNSw1LjkxNSwwLDAsMCw2LDUuOUgzNXYzMGE2LjI0Niw2LjI0NiwwLDAsMCw2LjI4LDZoNjcuODY3QTUuODc3LDUuODc3LDAsMCwwLDExNSw0OTlWNDY5SDQwN3YzMGE1Ljg3OSw1Ljg3OSwwLDAsMCw1Ljg1NSw2aDY3Ljg2OUE2LjI0Myw2LjI0MywwLDAsMCw0ODcsNDk5VjQ2OWgxN2E1LjkxMyw1LjkxMywwLDAsMCw2LTUuOVYzNzEuNDcyQTM5LjQxNywzOS40MTcsMCwwLDAsNDczLDMzMS45MTZaTTM0NS4zODEsMTAwaDQ5LjIzOGwxNy4zMjYsNThoLTgzLjg5Wk04OC42NzUsMjQ2SDQzMy4zMjhBMjcuNywyNy43LDAsMCwxLDQ2MSwyNzMuNjQ4djU5LjNhMzkuODU0LDM5Ljg1NCwwLDAsMC0zMCwzOC41MjZWMzkwSDkxVjM3MS40NzJhMzkuODU0LDM5Ljg1NCwwLDAsMC0zMC0zOC41MjZ2LTU5LjNBMjcuNywyNy43LDAsMCwxLDg4LjY3NSwyNDZaTTEwMyw0OTNINDdWNDY5aDU2Wm0zNzIsMEg0MTlWNDY5aDU2Wm0yMy0zNkgyNFYzNzEuNDcyYTI3LjUsMjcuNSwwLDEsMSw1NSwwVjM5NS44YTYuNDQ4LDYuNDQ4LDAsMCwwLDYuMzEsNi4ySDQzNi42OTNBNi40NDUsNi40NDUsMCwwLDAsNDQzLDM5NS44VjM3MS40NzJhMjcuNSwyNy41LDAsMSwxLDU1LDBaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTQsMjAzLjIzOFY1Ni42MjZBNS42NCw1LjY0LDAsMCwwLDIwOC4wNjIsNTFoLTUzLjkyTDExMi4yNzIsOC45NDRhNS43MzcsNS43MzcsMCwwLDAtOC40ODQuMDQ3TDYxLjkxOSw1MUg4YTUuNjkzLDUuNjkzLDAsMCwwLTYsNS42MjZWMjAzLjIzOEE1LjgsNS44LDAsMCwwLDgsMjA5SDIwOC4wNjJBNS43NDksNS43NDksMCwwLDAsMjE0LDIwMy4yMzhaTTE3NCwxMzEuOGwtNDIuMjMsMTkuNjg2TDgwLjM2NSwxMTYuNDQzYTYuMjQ1LDYuMjQ1LDAsMCwwLTcuMTMxLjE2M0w0MSwxNDAuNjg2Vjg3SDE3NFpNNDEsMTU1LjY4OWwzNi4wNjItMjYuOTExLDUwLjg4NSwzNC41NDJhNi4xNyw2LjE3LDAsMCwwLDMuNDI3LDEuMDM5LDUuMTY5LDUuMTY5LDAsMCwwLDIuMzMyLS41NTdMMTc0LDE0NS4wMjVWMTczSDQxWk0xNzguMTU1LDc1SDM3LjY4OUwyMy4yNDMsNjNIMTkyLjVaTTI5LDg0LjA5MVYxNzYuMkwxNCwxODkuOTI4VjcwLjQ3M1pNMzcuNywxODVIMTc4LjE0bDEzLjc2NywxMkgyMy44MzVaTTE4NiwxNzYuMjFWODQuMDc4bDE2LTEzLjlWMTkwLjIyNlpNMTA4LjAzLDIxLjg1OSwxMzcuMTcyLDUxSDc4Ljg4OVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyOC4zNzQsMTMzLjJhMjAuMjE0LDIwLjIxNCwwLDEsMC0yMC4yMTQtMjAuMjE0QTIwLjIzNiwyMC4yMzYsMCwwLDAsMTI4LjM3NCwxMzMuMlptMC0yOC40MjdhOC4yMTQsOC4yMTQsMCwxLDEtOC4yMTQsOC4yMTNBOC4yMjMsOC4yMjMsMCwwLDEsMTI4LjM3NCwxMDQuNzY4WiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQ4Ljc4NywzMDguNDRhMjIuMDg3LDIyLjA4NywwLDAsMCwwLDIxLjY2MmwtOC40NzksOC40NzlhNiw2LDAsMSwwLDguNDg0LDguNDg1bDguNDc5LTguNDhhMjIuMDksMjIuMDksMCwwLDAsMjEuNjYyLDBsOC40NzgsOC40NzlhNiw2LDAsMCwwLDguNDg2LTguNDg1bC04LjQ4Ny04LjQ4OGEyMi4yMTEsMjIuMjExLDAsMCwwLDAtMjEuNjQ0bDguNDg3LTguNDg4YTYsNiwwLDAsMC04LjQ4Ni04LjQ4NWwtOC40NzgsOC40NzlhMjIuMDkyLDIyLjA5MiwwLDAsMC0yMS42NjEsMGwtOC40OC04LjQ3OWE2LDYsMCwxLDAtOC40ODQsOC40ODVabTE5LjMxNi42NzhhMTAuMTU2LDEwLjE1NiwwLDEsMS03LjE3OSwyLjk3NEExMC4wODMsMTAuMDgzLDAsMCwxLDM2OC4xLDMwOS4xMThaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMzguNzg3LDMwOC40NGEyMi4wODcsMjIuMDg3LDAsMCwwLDAsMjEuNjYybC04LjQ3OSw4LjQ3OWE2LDYsMCwxLDAsOC40ODQsOC40ODVsOC40NzktOC40OGEyMi4wOSwyMi4wOSwwLDAsMCwyMS42NjIsMGw4LjQ3OCw4LjQ3OWE2LDYsMCwwLDAsOC40ODYtOC40ODVsLTguNDg3LTguNDg4YTIyLjIxMSwyMi4yMTEsMCwwLDAsMC0yMS42NDRsOC40ODctOC40ODhhNiw2LDAsMCwwLTguNDg2LTguNDg1bC04LjQ3OCw4LjQ3OWEyMi4wOTIsMjIuMDkyLDAsMCwwLTIxLjY2MSwwbC04LjQ4LTguNDc5YTYsNiwwLDEsMC04LjQ4NCw4LjQ4NVptMTkuMzE2LjY3OGExMC4xNTYsMTAuMTU2LDAsMSwxLTcuMTc5LDIuOTc0QTEwLjA4MywxMC4wODMsMCwwLDEsMjU4LjEsMzA5LjExOFoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyOC43ODcsMzA4LjQ0YTIyLjA4NywyMi4wODcsMCwwLDAsMCwyMS42NjJsLTguNDc5LDguNDc5YTYsNiwwLDEsMCw4LjQ4NCw4LjQ4NWw4LjQ3OS04LjQ4YTIyLjA5LDIyLjA5LDAsMCwwLDIxLjY2MiwwbDguNDc4LDguNDc5YTYsNiwwLDAsMCw4LjQ4Ni04LjQ4NWwtOC40ODctOC40ODhhMjIuMjExLDIyLjIxMSwwLDAsMCwwLTIxLjY0NGw4LjQ4Ny04LjQ4OGE2LDYsMCwwLDAtOC40ODYtOC40ODVsLTguNDc4LDguNDc5YTIyLjA5MiwyMi4wOTIsMCwwLDAtMjEuNjYxLDBsLTguNDgtOC40NzlhNiw2LDAsMSwwLTguNDg0LDguNDg1Wm0xOS4zMTYuNjc4YTEwLjE1NiwxMC4xNTYsMCwxLDEtNy4xNzksMi45NzRBMTAuMDgzLDEwLjA4MywwLDAsMSwxNDguMSwzMDkuMTE4WiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Locker Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDYwIDYwIiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0yMyA0aC0xNWMtMi4yMDkxMzkgMC00IDEuNzkwODYxLTQgNHYzNGMwIDIuMjA5MTM5IDEuNzkwODYxIDQgNCA0aDZjLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTZjLTEuMTA0NTY5NSAwLTItLjg5NTQzMDUtMi0ydi0zNGMwLTEuMTA0NTY5NS44OTU0MzA1LTIgMi0yaDE1YzEuMTA0NTY5NSAwIDIgLjg5NTQzMDUgMiAydjEyLjA1YzAgLjU1MjI4NDcuNDQ3NzE1MyAxIDEgMXMxLS40NDc3MTUzIDEtMXYtMTIuMDVjMC0yLjIwOTEzOS0xLjc5MDg2MS00LTQtNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExIDEyaDljLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTljLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMSAxNmg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTFzLS40NDc3MTUzLTEtMS0xaC05Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjEgMTljMC0uNTUyMjg0Ny0uNDQ3NzE1My0xLTEtMWgtOWMtLjU1MjI4NDcgMC0xIC40NDc3MTUzLTEgMXMuNDQ3NzE1MyAxIDEgMWg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05IDM1Yy0uNTUyMjg0NzUgMC0xIC40NDc3MTUzLTEgMXY1YzAgLjU1MjI4NDcuNDQ3NzE1MjUgMSAxIDFoM2MuNTUyMjg0NyAwIDEtLjQ0NzcxNTMgMS0xcy0uNDQ3NzE1My0xLTEtMWgtMnYtNGMwLS41NTIyODQ3LS40NDc3MTUyNS0xLTEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUyIDBoLTE1Yy0yLjkxMjIxNDIuMDAxODA2OTEtNS41OTM0MDA4IDEuNTg2MDA1MTgtNyA0LjEzNi0xLjQwNjU5OTItMi41NDk5OTQ4Mi00LjA4Nzc4NTgtNC4xMzQxOTMwOS03LTQuMTM2aC0xNWMtNC40MTYyMjE5Mi4wMDQ5NTk4OC03Ljk5NTA0MDEyIDMuNTgzNzc4MDgtOCA4djM0Yy4wMDQ5NTk4OCA0LjQxNjIyMTkgMy41ODM3NzgwOCA3Ljk5NTA0MDEgOCA4aDZjLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTZjLTMuMzEyMzM3NTctLjAwMzMwNzQtNS45OTY2OTI2Mi0yLjY4NzY2MjQtNi02di0zNGMuMDAzMzA3MzgtMy4zMTIzMzc1NyAyLjY4NzY2MjQzLTUuOTk2NjkyNjIgNi02aDE1YzMuMzEyMzM3Ni4wMDMzMDczOCA1Ljk5NjY5MjYgMi42ODc2NjI0MyA2IDZ2MTJjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xdi0xMmMuMDAzMzA3NC0zLjMxMjMzNzU3IDIuNjg3NjYyNC01Ljk5NjY5MjYyIDYtNmgxNWMzLjMxMjMzNzYuMDAzMzA3MzggNS45OTY2OTI2IDIuNjg3NjYyNDMgNiA2djM0Yy0uMDAzMzA3NCAzLjMxMjMzNzYtMi42ODc2NjI0IDUuOTk2NjkyNi02IDZoLTZjLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDFoNmM0LjQxNjIyMTktLjAwNDk1OTkgNy45OTUwNDAxLTMuNTgzNzc4MSA4LTh2LTM0Yy0uMDA0OTU5OS00LjQxNjIyMTkyLTMuNTgzNzc4MS03Ljk5NTA0MDEyLTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ2IDQ2aDZjMi4yMDkxMzkgMCA0LTEuNzkwODYxIDQtNHYtMzRjMC0yLjIwOTEzOS0xLjc5MDg2MS00LTQtNGgtMTVjLTIuMjA5MTM5IDAtNCAxLjc5MDg2MS00IDR2MTIuMDVjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xdi0xMi4wNWMwLTEuMTA0NTY5NS44OTU0MzA1LTIgMi0yaDE1YzEuMTA0NTY5NSAwIDIgLjg5NTQzMDUgMiAydjM0YzAgMS4xMDQ1Njk1LS44OTU0MzA1IDItMiAyaC02Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMTJoOWMuNTUyMjg0NyAwIDEtLjQ0NzcxNTMgMS0xcy0uNDQ3NzE1My0xLTEtMWgtOWMtLjU1MjI4NDcgMC0xIC40NDc3MTUzLTEgMXMuNDQ3NzE1MyAxIDEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwIDE2aDljLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTljLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyMGg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTFzLS40NDc3MTUzLTEtMS0xaC05Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDkgMjd2M2MwIC41NTIyODQ3LjQ0NzcxNTMgMSAxIDFzMS0uNDQ3NzE1MyAxLTF2LTNjMC0uNTUyMjg0Ny0uNDQ3NzE1My0xLTEtMXMtMSAuNDQ3NzE1My0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNyAyM2MtMy44NjQxNjU3LjAwNDQwODYtNi45OTU1OTE0IDMuMTM1ODM0My03IDd2NmMtMS42NTY4NTQyIDAtMyAxLjM0MzE0NTgtMyAzdjE4YzAgMS42NTY4NTQyIDEuMzQzMTQ1OCAzIDMgM2gyMGMxLjY1Njg1NDIgMCAzLTEuMzQzMTQ1OCAzLTN2LTE4YzAtMS42NTY4NTQyLTEuMzQzMTQ1OC0zLTMtM3YtNmMtLjAwNDQwODYtMy44NjQxNjU3LTMuMTM1ODM0My02Ljk5NTU5MTQtNy03em0xNCAxNnYxOGMwIC41NTIyODQ3LS40NDc3MTUzIDEtMSAxaC0yMGMtLjU1MjI4NDcgMC0xLS40NDc3MTUzLTEtMXYtMThjMC0uNTUyMjg0Ny40NDc3MTUzLTEgMS0xaDIwYy41NTIyODQ3IDAgMSAuNDQ3NzE1MyAxIDF6bS03LTNoLTh2LTZjMC0uNTUyMjg0Ny40NDc3MTUzLTEgMS0xaDZjLjU1MjI4NDcgMCAxIC40NDc3MTUzIDEgMXptNC02djZoLTJ2LTZjMC0xLjY1Njg1NDItMS4zNDMxNDU4LTMtMy0zaC02Yy0xLjY1Njg1NDIgMC0zIDEuMzQzMTQ1OC0zIDN2NmgtMnYtNmMuMDAzMzA2MS0yLjc2MDA1MzIgMi4yMzk5NDY4LTQuOTk2NjkzOSA1LTVoNmMyLjc2MDA1MzIuMDAzMzA2MSA0Ljk5NjY5MzkgMi4yMzk5NDY4IDUgNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxLjIxMyA0MS4xNDRjLTEuNTA0MTcyLS4zNjkzNzI3LTMuMDk0NjQyNi0uMDI1NjA2OC00LjMxMi45MzItMS4yMTc4ODM0Ljk2MTgxMzQtMS45MjAxMjc1IDIuNDM0NjA4OS0xLjkwMDc0MDMgMy45ODYzNjU3LjAxOTM4NzEgMS41NTE3NTY4Ljc1ODIwNzYgMy4wMDY1NDgxIDEuOTk5NzQwMyAzLjkzNzYzNDN2M2MwIDEuNjU2ODU0MiAxLjM0MzE0NTggMyAzIDNzMy0xLjM0MzE0NTggMy0zdi0zYzEuNTQ0NTEwNy0xLjE1Njk1NDQgMi4yODUzNDkyLTMuMDk5NDU1NyAxLjkwMzUxOTEtNC45OTEwODUyLS4zODE4MzAxLTEuODkxNjI5Ni0xLjgxODE1ODctMy4zOTQ2NjQzLTMuNjkwNTE5MS0zLjg2MTkxNDh6bS41ODcgNy4yNTZjLS40OTcxNDc5LjM1NzYwNjYtLjc5NDI0MDEuOTMwNjIzMi0uOCAxLjU0M3YzLjA1N2MwIC41NTIyODQ3LS40NDc3MTUzIDEtMSAxcy0xLS40NDc3MTUzLTEtMXYtMy4wODFjLS4wMDU3MDgyLS42MDIwNTIyLS4yOTk0MjU5LTEuMTY0OTQ5Mi0uNzktMS41MTQtMS4wMzUwNTUzLS43NzE3ODcyLTEuNDYwMjE2NC0yLjExOTI1MDctMS4wNTU1MzY0LTMuMzQ1MzEzMXMxLjU0ODQyMS0yLjA1NTY4NjcgMi44Mzk1MzY0LTIuMDU5Njg2OWMuMjU1MDMwOS4wMDA1MDg1LjUwOTExNDQuMDMxMDUyMi43NTcuMDkxIDEuMDU1ODY4LjI2MzI0NjEgMS44ODI5MDcgMS4wODMzNzcyIDIuMTU1IDIuMTM3LjMxMzM3NDYgMS4xODM5Njk1LS4xMjQ0MTY1IDIuNDM5NTUxMi0xLjEwNiAzLjE3MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Nursery:rSe,Office:oSe,Outdoors:nSe,Playroom:aSe,Pool:MSe,"Rear Wall":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MDMuNDY3LDguNTMzSDM4NGMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdWMjU2djUxLjJoLTY5LjczNWMwLjk0OC0yLjY3MSwxLjQ2OC01LjU0MiwxLjQ2OC04LjUzMw0KCQkJCWMwLTE0LjExNC0xMS40ODYtMjUuNi0yNS42LTI1LjZoLTE3LjA2N1YyNTZoODUuMzMzYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YxMTAuOTMzYzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzMNCgkJCQlIMTYyLjEzM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjEzNi41MzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g4NS4zMzN2MTcuMDY3SDIzMC40DQoJCQkJYy0xNC4xMTQsMC0yNS42LDExLjQ4Ni0yNS42LDI1LjZjMCwyLjk5MSwwLjUyMSw1Ljg2MiwxLjQ2OCw4LjUzM2gtNjkuNzM1VjI1NlYxMzYuNTMzVjE3LjA2N2MwLTQuNzE5LTMuODIzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJSDguNTMzQzMuODIzLDguNTMzLDAsMTIuMzQ4LDAsMTcuMDY3djExOS40NjdWMjU2djExOS40Njd2MTE5LjQ2N2MwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzSDEyOGgyNTZoMTE5LjQ2Nw0KCQkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMzc1LjQ2N1YyNTZWMTM2LjUzM1YxNy4wNjdDNTEyLDEyLjM0OCw1MDguMTc3LDguNTMzLDUwMy40NjcsOC41MzN6IE0xNzAuNjY3LDE1My42aDE3MC42NjcNCgkJCQl2NTEuMkgxNzAuNjY3VjE1My42eiBNMzQxLjMzMywxMTkuNDY3djE3LjA2N0gxNzAuNjY3di0xNy4wNjdIMzQxLjMzM3ogTTE3MC42NjcsMjIxLjg2N2gxNzAuNjY3djE3LjA2N0gxNzAuNjY3VjIyMS44Njd6DQoJCQkJIE0zNzUuNDY3LDQ4Ni40SDI2NC41MzN2LTkzLjg2N2g1MS4yaDU5LjczM1Y0ODYuNHogTTMwNy4yLDM3NS40NjdIMjA0LjhWMzU4LjRoMTAyLjRWMzc1LjQ2N3ogTTQ5NC45MzMsMjQ3LjQ2N2gtMTcuMDY3VjE3OS4yDQoJCQkJYzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzNoLTI1LjZoLTI1LjZjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y2OC4yNjdoLTE3LjA2N3YtMTAyLjRoMTAyLjRWMjQ3LjQ2N3oNCgkJCQkgTTQyNi42NjcsMjQ3LjQ2N3YtNTkuNzMzaDguNTMzdjU5LjczM0g0MjYuNjY3eiBNNDUyLjI2NywxODcuNzMzaDguNTMzdjU5LjczM2gtOC41MzNWMTg3LjczM3ogTTM5Mi41MzMsMzE1LjczM3YtNTEuMmgyNS42DQoJCQkJaDI1LjZoMjUuNmgyNS42djEwMi40aC0xMDIuNFYzMTUuNzMzeiBNMzkyLjUzMywyNS42aDEwMi40VjEyOGgtMTAyLjRWMjUuNnogTTIyMS44NjcsMjk4LjY2N2MwLTQuNzEsMy44MzEtOC41MzMsOC41MzMtOC41MzMNCgkJCQloNTEuMmM0LjcwMiwwLDguNTMzLDMuODIzLDguNTMzLDguNTMzcy0zLjgzMSw4LjUzMy04LjUzMyw4LjUzM2gtNTEuMkMyMjUuNjk4LDMwNy4yLDIyMS44NjcsMzAzLjM3NywyMjEuODY3LDI5OC42Njd6DQoJCQkJIE0yMzAuNCwzMjQuMjY3aDUxLjJoOTMuODY3djUxLjJoLTUxLjJWMzU4LjRjMC05LjQxMi03LjY1NC0xNy4wNjctMTcuMDY3LTE3LjA2N0gyMDQuOGMtOS40MTIsMC0xNy4wNjcsNy42NTQtMTcuMDY3LDE3LjA2Nw0KCQkJCXYxNy4wNjdoLTUxLjJ2LTUxLjJIMjMwLjR6IE01MS4yLDMzMi44aDM0LjEzM3Y4LjUzM0g1MS4yVjMzMi44eiBNODUuMzMzLDMxNS43MzNINTEuMlYzMDcuMmgzNC4xMzNWMzE1LjczM3ogTTUxLjIsMzU4LjQNCgkJCQloMzQuMTMzdjguNTMzSDUxLjJWMzU4LjR6IE0xMDIuNCwzNDkuODY3di0yNS42di0yNS42YzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzNoLTUxLjJjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzMw0KCQkJCXYyNS42djI1LjZ2MTcuMDY3SDE3LjA2N3YtMTAyLjRoMTAyLjR2NTEuMnY1MS4ySDEwMi40VjM0OS44Njd6IE01OS43MzMsMTEwLjkzM0g3Ni44VjEyOEg1OS43MzNWMTEwLjkzM3ogTTUxLjIsMTQ1LjA2N2gzNC4xMzMNCgkJCQloMzQuMTMzdjEwMi40aC0xMDIuNHYtMTAyLjRINTEuMnogTTE3LjA2NywyNS42aDEwMi40VjEyOGgtMjUuNnYtMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzMw0KCQkJCWMwLTQuNzE5LTMuODIzLTguNTMzLTguNTMzLTguNTMzaC04LjUzM0g1MS4yaC04LjUzM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzYzAsNC43MTksMy44MjMsOC41MzMsOC41MzMsOC41MzNWMTI4DQoJCQkJaC0yNS42VjI1LjZ6IE0xNy4wNjcsMzg0aDI1LjZoNTEuMmgyNS42djEwMi40aC0xMDIuNFYzODR6IE0xMzYuNTMzLDM5Mi41MzNoNTkuNzMzaDUxLjJWNDg2LjRIMTM2LjUzM1YzOTIuNTMzeiBNNDk0LjkzMyw0ODYuNA0KCQkJCWgtMTcuMDY3di02OC4yNjdjMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTguNTMzdi02OC4yNjcNCgkJCQljMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTguNTMzdi02OC4yNjdjMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzMw0KCQkJCXMtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTE3LjA2N1YzODRoMTAyLjRWNDg2LjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMjEuODY3LDQwOS42SDIwNC44Yy00LjcxLDAtOC41MzMsMy44MTQtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoOC41MzN2OC41MzMNCgkJCQljMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2M0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzN2LTE3LjA2N0MyMzAuNCw0MTMuNDE0LDIyNi41NzcsNDA5LjYsMjIxLjg2Nyw0MDkuNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwNy4yLDQwOS42aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM1Y0MzUuMmMwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODE0LDguNTMzLTguNTMzDQoJCQkJdi04LjUzM2g4LjUzM2M0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNTMzExLjkxLDQwOS42LDMwNy4yLDQwOS42eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Second Floor":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAyIDUxMi4wMDIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIHN0cm9rZT0iIiBkPSJNNDc3LjQ0NCw0NzEuMDM0aC0zLjgzM2MtMy42NzktMTQuNDM1LTE1LjkyNi0yNS4zNTYtMzAuODU5LTI3LjI0MVYzMDguNTg3aDIuMTM4YzkuOTE3LDAsMTcuOTg1LTguMDY4LDE3Ljk4NS0xNy45ODYNCgkJCWMwLTkuOTE3LTguMDY4LTE3Ljk4NS0xNy45ODUtMTcuOTg1aC0yLjEzOFYxMjkuMzgyaDkuODE1YzcuMTk3LDAsMTMuMDUyLTUuODU1LDEzLjA1Mi0xMy4wNTJ2LTE0LjkwNA0KCQkJYzAtMC4wMzMtMC4wMDUtMC4wNjUtMC4wMDUtMC4wOThjLTAuMDAxLTAuMDk4LTAuMDA5LTAuMTk2LTAuMDE1LTAuMjk0Yy0wLjAwOS0wLjE3MS0wLjAyMS0wLjM0Mi0wLjA0Mi0wLjUxDQoJCQljLTAuMDExLTAuMDg5LTAuMDI2LTAuMTc3LTAuMDQxLTAuMjY2Yy0wLjAyOS0wLjE4My0wLjA2NS0wLjM2NC0wLjEwOC0wLjU0MmMtMC4wMS0wLjA0LTAuMDE0LTAuMDgxLTAuMDI0LTAuMTIxTDQ0Ni4xMjMsMjUuNDINCgkJCWMtMS41NzQtNi4wNi03LjA0Ny0xMC4yOTMtMTMuMzA3LTEwLjI5M2gtNDkuMTA1Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3czMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDQ4LjQ2OGwxNi43MzQsNjQuNDQNCgkJCUgzMzUuMzcyTDI5Mi4zNDcsMjkuN2g0NS44NjZjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N2MwLTQuMDI1LTMuMjYyLTcuMjg3LTcuMjg3LTcuMjg3aC01NS41OTZsLTAuOTI2LTEuMzg3DQoJCQlDMjc1Ljk0OCw1LjEzNywyNjYuMzQyLDAsMjU1Ljk5NywwYy0xMC4zNDUsMC0xOS45NSw1LjEzNi0yNS42OTQsMTMuNzM5bC0wLjkyNywxLjM4OEg3OS4xNzgNCgkJCWMtNi4yNjEsMC0xMS43MzMsNC4yMzItMTMuMzA3LDEwLjI5M0w0Ni42MDksOTkuNTk1Yy0wLjAxLDAuMDQtMC4wMTQsMC4wODEtMC4wMjQsMC4xMjFjLTAuMDQzLDAuMTc4LTAuMDc5LDAuMzU5LTAuMTA4LDAuNTQyDQoJCQljLTAuMDE0LDAuMDg5LTAuMDMsMC4xNzctMC4wNDEsMC4yNjZjLTAuMDIxLDAuMTY4LTAuMDMzLDAuMzM4LTAuMDQyLDAuNTFjLTAuMDA1LDAuMDk4LTAuMDE0LDAuMTk2LTAuMDE1LDAuMjk0DQoJCQljMCwwLjAzMy0wLjAwNSwwLjA2NS0wLjAwNSwwLjA5OHYxNC45MDRjMCw3LjE5Nyw1Ljg1NSwxMy4wNTIsMTMuMDUyLDEzLjA1Mmg5LjgxNXYxNDMuMjMzaC0yLjEzOA0KCQkJYy05LjkxNywwLTE3Ljk4NSw4LjA2OC0xNy45ODUsMTcuOTg1czguMDY4LDE3Ljk4NiwxNy45ODUsMTcuOTg2aDIuMTM4djQ2LjY5NmMwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQlzNy4yODctMy4yNjIsNy4yODctNy4yODd2LTQ2LjY5NmgzNDQuMzY0djEyOS4zMTFjLTAuMDU1LTAuMDMyLTAuMTEzLTAuMDYtMC4xNjktMC4wOTJjLTAuNzE0LTAuNDE1LTEuNDM5LTAuODEtMi4xNzYtMS4xODINCgkJCWMtMC4xNDQtMC4wNzMtMC4yOTEtMC4xMzktMC40MzUtMC4yMWMtMC42MTQtMC4zMDItMS4yMzUtMC41ODgtMS44NjMtMC44NTljLTAuMjEzLTAuMDkyLTAuNDI1LTAuMTgzLTAuNjM5LTAuMjcyDQoJCQljLTAuNzI3LTAuMy0xLjQ1OS0wLjU4NS0yLjIwMi0wLjg0NGMtMC4wNDQtMC4wMTUtMC4wODctMC4wMzMtMC4xMzEtMC4wNDljLTAuNzg0LTAuMjcxLTEuNTc4LTAuNTExLTIuMzc4LTAuNzM2DQoJCQljLTAuMjE5LTAuMDYyLTAuNDQtMC4xMTgtMC42Ni0wLjE3NmMtMC42NDItMC4xNjktMS4yODktMC4zMjMtMS45NC0wLjQ2MmMtMC4xODgtMC4wNC0wLjM3NS0wLjA4NS0wLjU2NC0wLjEyMw0KCQkJYy0wLjgxMi0wLjE2Mi0xLjYyOS0wLjMtMi40NTEtMC40MTRjLTAuMTc4LTAuMDI1LTAuMzU4LTAuMDQyLTAuNTM3LTAuMDY0Yy0wLjY3MS0wLjA4NC0xLjM0NS0wLjE1Mi0yLjAyMi0wLjIwNA0KCQkJYy0wLjIzNC0wLjAxOC0wLjQ2OC0wLjAzNi0wLjcwMi0wLjA1MWMtMC44NDItMC4wNTEtMS42ODUtMC4wODUtMi41MzMtMC4wODVjLTE1LjQ0NiwwLTI5LjY5OSw4LjYxLTM3LjA2MiwyMS45MTUNCgkJCWMtMC44NDYtMC4wMi0xLjY4NCwwLjAwMS0yLjUxNiwwLjA0NmMtMC4xOTUsMC4wMTEtMC4zODcsMC4wMzQtMC41ODEsMC4wNDhjLTAuNjM2LDAuMDQ3LTEuMjY4LDAuMTA3LTEuODk0LDAuMTkNCgkJCWMtMC4yMywwLjAzMS0wLjQ1OCwwLjA3MS0wLjY4NiwwLjEwN2MtMC41ODYsMC4wOTItMS4xNjgsMC4xOTctMS43NDQsMC4zMjFjLTAuMjM0LDAuMDUtMC40NjUsMC4xMDQtMC42OTcsMC4xNTkNCgkJCWMtMC41NzEsMC4xMzctMS4xMzUsMC4yODktMS42OTUsMC40NTdjLTAuMjE3LDAuMDY1LTAuNDM1LDAuMTI4LTAuNjUsMC4xOThjLTAuNTg4LDAuMTktMS4xNjcsMC40LTEuNzQsMC42MjQNCgkJCWMtMC4xNzEsMC4wNjctMC4zNDUsMC4xMjctMC41MTUsMC4xOTdjLTAuNzA1LDAuMjktMS4zOTksMC42MDItMi4wNzksMC45NDFjLTAuMDI4LDAuMDE0LTAuMDU4LDAuMDI2LTAuMDg2LDAuMDQNCgkJCWMtMC43MzMsMC4zNjktMS40NSwwLjc2Ni0yLjE1LDEuMTljLTAuMDY2LDAuMDQtMC4xMjksMC4wODYtMC4xOTUsMC4xMjdjLTAuNiwwLjM3LTEuMTg3LDAuNzU5LTEuNzYsMS4xNjkNCgkJCWMtMC4xODQsMC4xMzItMC4zNjEsMC4yNzItMC41NDIsMC40MDhjLTAuNDQ3LDAuMzM1LTAuODg4LDAuNjc3LTEuMzE2LDEuMDM2Yy0wLjIwNiwwLjE3Mi0wLjQwNywwLjM1MS0wLjYwOSwwLjUyOQ0KCQkJYy0wLjM5MSwwLjM0NS0wLjc3NCwwLjY5OC0xLjE0OCwxLjA2M2MtMC4yMDEsMC4xOTYtMC40MDEsMC4zOTQtMC41OTcsMC41OTZjLTAuMzY1LDAuMzc2LTAuNzE3LDAuNzYzLTEuMDY0LDEuMTU4DQoJCQljLTAuMTc4LDAuMjAzLTAuMzU5LDAuNDA0LTAuNTMzLDAuNjEyYy0wLjM2NywwLjQ0MS0wLjcxNywwLjg5Ny0xLjA2LDEuMzU5Yy0wLjEzMSwwLjE3Ni0wLjI2OSwwLjM0Ni0wLjM5NiwwLjUyNQ0KCQkJYy0wLjg4NSwxLjI0Ni0xLjY4OSwyLjU2LTIuMzkyLDMuOTQ0aC0zNS40NTdWMzQ2LjE4MWMwLTcuMTM1LTUuODA1LTEyLjkzOS0xMi45MzktMTIuOTM5aC03My4zNDkNCgkJCWMtNy4xMzUsMC0xMi45MzksNS44MDUtMTIuOTM5LDEyLjkzOXYxMjQuODUzaC02MC42MzljLTAuMTg4LTAuNDY5LTAuMzk5LTAuOTI1LTAuNjA1LTEuMzgzDQoJCQljLTAuMDg4LTAuMTk0LTAuMTY2LTAuMzk0LTAuMjU2LTAuNTg2Yy0wLjM1My0wLjc0OS0wLjcyOC0xLjQ4My0xLjEyOC0yLjIwMmMtMC4wNzUtMC4xMzUtMC4xNi0wLjI2My0wLjIzNi0wLjM5Nw0KCQkJYy0wLjMzMS0wLjU3Ny0wLjY3My0xLjE0Ny0xLjAzNC0xLjcwM2MtMC4xNTEtMC4yMzItMC4zMTEtMC40NTYtMC40NjctMC42ODVjLTAuMzA1LTAuNDQ4LTAuNjE2LTAuODkxLTAuOTQtMS4zMjQNCgkJCWMtMC4xODMtMC4yNDUtMC4zNzItMC40ODQtMC41NjItMC43MjRjLTAuMzItMC40MDUtMC42NDYtMC44MDMtMC45ODItMS4xOTNjLTAuMjAyLTAuMjM0LTAuNDA1LTAuNDY3LTAuNjEyLTAuNjk1DQoJCQljLTAuMzUyLTAuMzg4LTAuNzE0LTAuNzY2LTEuMDgxLTEuMTM4Yy0wLjIwNS0wLjIwNy0wLjQwNy0wLjQxNy0wLjYxNi0wLjYyYy0wLjQxOS0wLjQwNS0wLjg1Mi0wLjc5NC0xLjI5LTEuMTc4DQoJCQljLTAuMTcyLTAuMTUxLTAuMzM3LTAuMzA4LTAuNTExLTAuNDU1Yy0wLjYyMi0wLjUyNS0xLjI1OS0xLjAzMS0xLjkxNC0xLjUxM2MtMC4wNjctMC4wNDktMC4xMzctMC4wOTMtMC4yMDQtMC4xNDENCgkJCWMtMC41ODgtMC40MjYtMS4xODgtMC44MzYtMS44MDEtMS4yMjZjLTAuMjI1LTAuMTQ0LTAuNDU4LTAuMjc2LTAuNjg2LTAuNDE0Yy0wLjQ2Ny0wLjI4My0wLjkzOC0wLjU2Mi0xLjQxOC0wLjgyNA0KCQkJYy0wLjI3LTAuMTQ4LTAuNTQ1LTAuMjg3LTAuODE5LTAuNDI4Yy0wLjQ1Ni0wLjIzNC0wLjkxNi0wLjQ2MS0xLjM4My0wLjY3NmMtMC4yOS0wLjEzNC0wLjU4MS0wLjI2NC0wLjg3NS0wLjM5MQ0KCQkJYy0wLjQ3My0wLjIwMy0wLjk1My0wLjM5NC0xLjQzNi0wLjU3OGMtMC4yOTEtMC4xMS0wLjU3OS0wLjIyMy0wLjg3My0wLjMyNmMtMC41MjgtMC4xODYtMS4wNjUtMC4zNTMtMS42MDQtMC41MTQNCgkJCWMtMC4yNTYtMC4wNzctMC41MDgtMC4xNjItMC43NjYtMC4yMzNjLTAuOC0wLjIyMS0xLjYwOC0wLjQyMS0yLjQyOC0wLjU4OGMtMC41MjctMC43MTgtMS4wNzQtMS40MTgtMS42MzctMi4wOTkNCgkJCWMtMC4xOTMtMC4yMzMtMC4zOTgtMC40NTItMC41OTUtMC42ODFjLTAuMzc4LTAuNDQtMC43NTQtMC44ODItMS4xNDctMS4zMDZjLTAuMjQ2LTAuMjY1LTAuNTA1LTAuNTE0LTAuNzU3LTAuNzcyDQoJCQljLTAuMzYtMC4zNjktMC43MTYtMC43NDQtMS4wODctMS4xYy0wLjI3Ny0wLjI2NS0wLjU2Ni0wLjUxNC0wLjg0OS0wLjc3MmMtMC4zNjItMC4zMy0wLjcxOS0wLjY2NC0xLjA5MS0wLjk4MQ0KCQkJYy0wLjMwMS0wLjI1Ny0wLjYxNC0wLjQ5OC0wLjkyMS0wLjc0N2MtMC4zNjgtMC4yOTgtMC43MzItMC42LTEuMTA4LTAuODg2Yy0wLjMyMi0wLjI0NC0wLjY1NC0wLjQ3Mi0wLjk4MS0wLjcwNw0KCQkJYy0wLjM3Ni0wLjI3LTAuNzQ5LTAuNTQ0LTEuMTMzLTAuODAxYy0wLjMzOS0wLjIyNy0wLjY4Ny0wLjQzOS0xLjAzMS0wLjY1N2MtMC4zODctMC4yNDUtMC43NzEtMC40OTMtMS4xNjQtMC43MjUNCgkJCWMtMC4zNTMtMC4yMDktMC43MTUtMC40MDItMS4wNzQtMC42MDFjLTAuMzk3LTAuMjItMC43OTItMC40NDMtMS4xOTYtMC42NTFjLTAuMzY4LTAuMTktMC43NDItMC4zNjQtMS4xMTUtMC41NDQNCgkJCWMtMC40MDYtMC4xOTUtMC44MTEtMC4zOTMtMS4yMjQtMC41NzZjLTAuMzgtMC4xNjktMC43NjUtMC4zMjMtMS4xNS0wLjQ4MmMtMC40MTctMC4xNzEtMC44MzItMC4zNDQtMS4yNTUtMC41MDMNCgkJCWMtMC4zODktMC4xNDctMC43ODQtMC4yOC0xLjE3OC0wLjQxNmMtMC40MjctMC4xNDctMC44NTQtMC4yOTYtMS4yODYtMC40M2MtMC4zOTgtMC4xMjQtMC44MDEtMC4yMzYtMS4yMDQtMC4zNDkNCgkJCWMtMC40MzctMC4xMjMtMC44NzMtMC4yNDYtMS4zMTQtMC4zNTZjLTAuNDA3LTAuMTAxLTAuODE3LTAuMTkxLTEuMjI3LTAuMjgxYy0wLjQ0NS0wLjA5OC0wLjg5LTAuMTk0LTEuMzM4LTAuMjc5DQoJCQljLTAuNDE0LTAuMDc4LTAuODMxLTAuMTQ1LTEuMjQ4LTAuMjEyYy0wLjQ1My0wLjA3Mi0wLjkwNS0wLjE0My0xLjM2MS0wLjIwMmMtMC40Mi0wLjA1NC0wLjg0Mi0wLjA5OC0xLjI2NC0wLjE0MQ0KCQkJYy0wLjQ2LTAuMDQ3LTAuOTIxLTAuMDktMS4zODUtMC4xMjJjLTAuNDI0LTAuMDMtMC44NS0wLjA1MS0xLjI3Ni0wLjA2OWMtMC4yNjktMC4wMTItMC41MzQtMC4wMzYtMC44MDQtMC4wNDN2LTI5Ljg1MQ0KCQkJYzAtNC4wMjQtMy4yNjItNy4yODctNy4yODctNy4yODdjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODd2MzEuODU2Yy0xNy4wNTMsNS4yNzktMjkuODM5LDIwLjM1Ni0zMS43NSwzOC42MjNoLTIuOTQyDQoJCQljLTExLjI5NCwwLTIwLjQ4Myw5LjE4OS0yMC40ODMsMjAuNDgzczkuMTg5LDIwLjQ4MywyMC40ODMsMjAuNDgzaDQ0Mi44OTRjMTEuMjk0LDAsMjAuNDgzLTkuMTg5LDIwLjQ4My0yMC40ODMNCgkJCUM0OTcuOTI3LDQ4MC4yMjMsNDg4LjczOCw0NzEuMDM0LDQ3Ny40NDQsNDcxLjAzNHogTTIzOS4zMzMsMjYuNDZjMC0wLjAwMSwwLjAwMS0wLjAwMSwwLjAwMS0wLjAwMWwzLjA4OS00LjYyNw0KCQkJYzMuMDM0LTQuNTQ1LDguMTA5LTcuMjU4LDEzLjU3NC03LjI1OGM1LjQ2NSwwLDEwLjU0LDIuNzEzLDEzLjU3NCw3LjI1OWw0OC4yNzgsNzIuMzA4aC01LjIwMmwtNDYuMTAzLTY5LjA1Mw0KCQkJYy0yLjM1OC0zLjUzMS02LjMtNS42MzktMTAuNTQ2LTUuNjM5Yy00LjI0NiwwLTguMTg5LDIuMTA4LTEwLjU0Niw1LjYzOUwxOTkuMzQ3LDk0LjE0aC01LjIwMmw4Ljc3OC0xMy4xNDhMMjM5LjMzMywyNi40NnoNCgkJCSBNMjk1LjEyNCw5NC4xNEgyMTYuODdsMzkuMTI3LTU4LjYwNEwyOTUuMTI0LDk0LjE0eiBNNzkuODE2LDI5LjdoMTM5LjgzMUwyMDkuNTEsNDQuODgzTDE3Ni42MjIsOTQuMTRINjMuMDgxTDc5LjgxNiwyOS43eg0KCQkJIE02MC45NDgsMTE0LjgwOXYtNi4wOTZoMzkwLjA5OHY2LjA5Nkg2MC45NDh6IE00MjguMTc5LDEyOS4zODJ2MTQzLjIzM0g4My44MTVWMTI5LjM4Mkg0MjguMTc5eiBNNjcuMTA0LDI5NC4wMTQNCgkJCWMtMS44ODEsMC0zLjQxMi0xLjUzMS0zLjQxMi0zLjQxM2MwLTEuODgxLDEuNTMtMy40MTIsMy40MTItMy40MTJINDQ0Ljg5YzEuODgxLDAsMy40MTIsMS41MzEsMy40MTIsMy40MTINCgkJCWMwLDEuODgyLTEuNTMsMy40MTMtMy40MTIsMy40MTNINjcuMTA0eiBNMzYwLjQxNiw0NzAuODkzYzAuMzE3LTAuMTg3LDAuNjM4LTAuMzY4LDAuOTY3LTAuNTM1DQoJCQljMC4xNTYtMC4wNzksMC4zMTYtMC4xNDksMC40NzQtMC4yMjNjMC4yOC0wLjEzMSwwLjU2Mi0wLjI1NiwwLjg1LTAuMzcxYzAuMTgzLTAuMDczLDAuMzY4LTAuMTQyLDAuNTUzLTAuMjA4DQoJCQljMC4yNzItMC4wOTgsMC41NDctMC4xODcsMC44MjQtMC4yNzFjMC4yMDEtMC4wNiwwLjQwMi0wLjEyMSwwLjYwNS0wLjE3NGMwLjI3Ni0wLjA3MiwwLjU1Ni0wLjEzMiwwLjgzNi0wLjE5DQoJCQljMC4yMDctMC4wNDMsMC40MTEtMC4wOTEsMC42Mi0wLjEyNmMwLjM1Ni0wLjA2LDAuNzE4LTAuMTAyLDEuMDgxLTAuMTM5YzAuMTc2LTAuMDE4LDAuMzUyLTAuMDM5LDAuNTI5LTAuMDUyDQoJCQljMC40NDYtMC4wMzEsMC44OTYtMC4wNDcsMS4zNS0wLjA0M2MwLjMzNywwLjAwMywwLjY3OSwwLjAzMiwxLjAyLDAuMDU2YzAuMjM0LDAuMDE2LDAuNDY3LDAuMDIsMC43MDIsMC4wNDYNCgkJCWMwLjU3MiwwLjA2NSwxLjE0NiwwLjE1NSwxLjcxOSwwLjI3OWMzLjUwOSwwLjc1Niw3LjA0Ny0xLjE1NSw4LjMzNy00LjUwN2M0LjA5Mi0xMC42MzksMTQuNDk2LTE3Ljc4NywyNS44OTEtMTcuNzg3DQoJCQljNy45NSwwLDE1LjUzMywzLjQyOCwyMC44MDYsOS40MDZjMC4yMSwwLjIzOCwwLjQzMywwLjQ2LDAuNjY5LDAuNjY2YzAuMDEzLDAuMDExLDAuMDI4LDAuMDIsMC4wNDEsMC4wMzINCgkJCWMwLjkzMiwwLjgwNCwyLjA0MywxLjM1NSwzLjIzLDEuNjA4YzAuOTAzLDAuMTkzLDEuODQ4LDAuMjE2LDIuNzg3LDAuMDUxYzEwLjQxNi0xLjgzMSwxOS45NjQsMy44NjgsMjMuOTIyLDEyLjYyNGgtOTguMDYxDQoJCQlDMzYwLjI1LDQ3MC45ODUsMzYwLjMzNCw0NzAuOTQyLDM2MC40MTYsNDcwLjg5M3ogTTI5MS4wMzgsMzQ3LjgxNXYxMjMuMjE5aC03MC4wODJWMzQ3LjgxNUgyOTEuMDM4eiBNNzcuNzk3LDQ0NS4zNTINCgkJCWMwLjc2Ny0wLjEyMSwxLjUzNi0wLjIxNSwyLjMwNS0wLjI3OWMwLjA2Ni0wLjAwNSwwLjEzMi0wLjAwOSwwLjE5OC0wLjAxNGMwLjc4NC0wLjA2LDEuNTY3LTAuMDk2LDIuMzQzLTAuMDk2DQoJCQljMTAuNjg5LDAsMjAuNDY1LDUuNDI0LDI2LjE1LDE0LjUwOWMxLjE4OCwxLjg5OSwzLjE4NSwzLjE0Nyw1LjQxNCwzLjM4MWMwLjUyMywwLjA1NSwxLjAzOCwwLjEzNSwxLjU0OSwwLjIyNg0KCQkJYzAuMTE1LDAuMDIsMC4yMywwLjA0MSwwLjM0NSwwLjA2M2MwLjUsMC4wOTcsMC45OTUsMC4yMDgsMS40ODMsMC4zMzhjMC4wNjMsMC4wMTcsMC4xMjUsMC4wMzcsMC4xODksMC4wNTUNCgkJCWMwLjQ0NCwwLjEyMywwLjg4MSwwLjI2MSwxLjMxMywwLjQxMWMwLjA5OSwwLjAzNCwwLjE5OSwwLjA2NywwLjI5OCwwLjEwM2MwLjQ2NywwLjE2OSwwLjkyNywwLjM1MywxLjM3OSwwLjU1Mw0KCQkJYzAuMDg4LDAuMDM5LDAuMTc1LDAuMDgxLDAuMjYzLDAuMTIyYzAuNDAzLDAuMTg1LDAuOCwwLjM4LDEuMTksMC41ODhjMC4wNzQsMC4wMzksMC4xNDgsMC4wNzYsMC4yMjIsMC4xMTYNCgkJCWMwLjQzMSwwLjIzNiwwLjg1MiwwLjQ4OCwxLjI2NSwwLjc1MmMwLjA5NCwwLjA2LDAuMTg3LDAuMTIyLDAuMjgsMC4xODRjMC4zODgsMC4yNTcsMC43NjksMC41MjMsMS4xMzksMC44MDMNCgkJCWMwLjAzMiwwLjAyNCwwLjA2NiwwLjA0NywwLjA5OCwwLjA3MmMwLjM5MiwwLjMsMC43NywwLjYxNywxLjE0MSwwLjk0M2MwLjA4NywwLjA3NywwLjE3NCwwLjE1NCwwLjI2LDAuMjMyDQoJCQljMC4zNjUsMC4zMzEsMC43MjIsMC42NzEsMS4wNjQsMS4wMjdjMC4wMjksMC4wMywwLjA1NiwwLjA2MiwwLjA4NCwwLjA5MmMwLjMxOSwwLjMzNiwwLjYyNSwwLjY4MywwLjkyMywxLjAzOQ0KCQkJYzAuMDcyLDAuMDg2LDAuMTQ1LDAuMTcyLDAuMjE2LDAuMjZjMC4wNTMsMC4wNjYsMC4xMDEsMC4xMzYsMC4xNTQsMC4yMDJINTIuMTgxQzU0LjIyOSw0NTcuODY4LDY0LjY0Myw0NDcuNDM5LDc3Ljc5Nyw0NDUuMzUyeg0KCQkJIE00NzcuNDQ0LDQ5Ny40MjdIMzQuNTVjLTMuMjU5LDAtNS45MS0yLjY1MS01LjkxLTUuOTFjMC0zLjI1OSwyLjY1MS01LjkxLDUuOTEtNS45MWg0NDIuODk0YzMuMjU5LDAsNS45MSwyLjY1MSw1LjkxLDUuOTENCgkJCUM0ODMuMzU0LDQ5NC43NzYsNDgwLjcwMyw0OTcuNDI3LDQ3Ny40NDQsNDk3LjQyN3oiLz4NCiAgICAgICAgPHBhdGggIGQ9Ik0xODYuMjEzLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzN2MtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4OCw3LjI4N2g4Ni43OWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkzLjUsMjM0LjgzNSwxOTAuMjM4LDIzMS41NzIsMTg2LjIxMywyMzEuNTcyeiBNMTY4LjMwMywyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTkuNjY4LDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU1Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4Nyw3LjI4N2g4Ni43OTFjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzMwNi45NTUsMjM0LjgzNSwzMDMuNjkzLDIzMS41NzIsMjk5LjY2OCwyMzEuNTcyeiBNMjgxLjc1OCwyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MTIuNTcyLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zNzktMTAuMzhoLTU5LjM1NmMtNS43MjQsMC0xMC4zOCw0LjY1Ny0xMC4zOCwxMC4zOHY2NS43NDYNCgkJCWgtMy4zMzhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMCw0LjAyNCwzLjI2Miw3LjI4Nyw3LjI4Nyw3LjI4N2g4Ni43OTFjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzQxOS44NTksMjM0LjgzNSw0MTYuNTk3LDIzMS41NzIsNDEyLjU3MiwyMzEuNTcyeiBNMzk0LjY2MSwyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIG9wYWNpdHk9IjAuMjUiIGQ9Ik0xODIuODEzLDQxMy44MzNoLTAuNTI4di02MC4wNDVjMC01LjU2Ni00LjUyOS0xMC4wOTUtMTAuMDk1LTEwLjA5NWgtNTMuODg2Yy01LjU2NiwwLTEwLjA5NSw0LjUyOS0xMC4wOTUsMTAuMDk1djYwLjA0NQ0KCQkJaC0wLjUyOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLDQuMDI1LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDcuODE0aDU5LjUwNGg3LjgxNGM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkwLjEsNDE3LjA5NSwxODYuODM4LDQxMy44MzMsMTgyLjgxMyw0MTMuODMzeiBNMTY3LjcxMiw0MTMuODMzaC00NC45MzF2LTU1LjU2N2g0NC45MzFWNDEzLjgzM3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgZD0iTTQwNC4zMTQsNDEzLjgzM2gtMC41Mjh2LTYwLjA0NWMwLTUuNTY2LTQuNTI5LTEwLjA5NS0xMC4wOTUtMTAuMDk1aC01My44ODZjLTUuNTY2LDAtMTAuMDk2LDQuNTI5LTEwLjA5NiwxMC4wOTV2NjAuMDQ1DQoJCQloLTAuNTI4Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3YzAsNC4wMjUsMy4yNjIsNy4yODcsNy4yODcsNy4yODdoNy44MTRIMzk2LjVoNy44MTRjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzQxMS42MDEsNDE3LjA5NSw0MDguMzM5LDQxMy44MzMsNDA0LjMxNCw0MTMuODMzeiBNMzg5LjIxMyw0MTMuODMzaC00NC45MzJ2LTU1LjU2N2g0NC45MzJWNDEzLjgzM3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgZD0iTTI3Ni41NDUsNDA1LjA4OWMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N3YxMi42M2MwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQljNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N3YtMTIuNjNDMjgzLjgzMiw0MDguMzUyLDI4MC41Nyw0MDUuMDg5LDI3Ni41NDUsNDA1LjA4OXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Shed:cSe,"Sleeping Area":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NTYsMjI0Yy0xNC4xMzMsMC0yNCw2LjMwMS0yNCwxNS4zMnYyNy41MDVDNDE5LjMzMywyNDEuNzkzLDM5OS44NSwyMjQsMzc2LDIyNEgxNTJjLTQuNDE3LTAuMDAxLTcuOTk5LDMuNTc5LTgsNy45OTYNCgkJCWMwLDAuMDAxLDAsMC4wMDMsMCwwLjAwNHY0OC4wNjdjMC4wNDUtMTMuMDUyLTUuMjAxLTI2LjA3NS0xNS41ODYtMzUuNTgzYy0xOS41NTItMTcuOTAyLTQ5LjkxNS0xNi41NjQtNjcuODE2LDIuOTg5DQoJCQljLTE2Ljc2NCwxOC4zMDktMTYuODAxLDQ2LjM4LTAuMDg2LDY0LjczNGMtNC42MTIsMC41MDgtOC45NjgsMi4zOC0xMi41MTIsNS4zNzVWMTE1LjE5OUM0OCwxMDQuNDM0LDM3LjQ2MSw5NiwyNCw5Ng0KCQkJcy0yNCw4LjQzNC0yNCwxOS4xOTl2MzQ1LjYwMkMwLDQ3MS41NjYsMTAuNTM5LDQ4MCwyNCw0ODBzMjQtOC40MzQsMjQtMTkuMTk5VjQwOGgzODR2NTYuNjhjMCw5LjAxOSw5Ljg2NywxNS4zMiwyNCwxNS4zMg0KCQkJczI0LTYuMzAxLDI0LTE1LjMyVjIzOS4zMkM0ODAsMjMwLjMwMSw0NzAuMTMzLDIyNCw0NTYsMjI0eiBNMzIsNDYwLjgwMWMtMC4wODYsMC42NTYtMi43NzMsMy4xOTktOCwzLjE5OQ0KCQkJYy01LjI1LDAtNy45MjItMi41NDMtOC0zLjE5OVYxMTUuMTk5YzAuMDc4LTAuNjU2LDIuNzUtMy4xOTksOC0zLjE5OWM1LjIyNywwLDcuOTE0LDIuNTQzLDgsMy4xOTlWNDYwLjgwMXogTTE2MCwyNDBoMjE2DQoJCQljMzAuMTcyLDAsNTMuMTcyLDQ0LjkyNiw1NS43NTgsODhIMTYwVjI0MHogTTE0NCwyODAuMDgzdjM4LjU2Yy0zLjQ1Mi0zLjM1My03Ljg0OC01LjU2Ni0xMi41OTctNi4zNDINCgkJCUMxMzkuNzkzLDMwMy4xMzcsMTQzLjk1NiwyOTEuNiwxNDQsMjgwLjA4M3ogTTk2LDI0OGMxNy42NzMsMCwzMiwxNC4zMjcsMzIsMzJjMCwxNy42NzMtMTQuMzI3LDMyLTMyLDMycy0zMi0xNC4zMjctMzItMzINCgkJCUM2NC4wMTksMjYyLjMzNSw3OC4zMzUsMjQ4LjAxOSw5NiwyNDh6IE00MzIsMzkySDQ4di00OC4wMjNjNC4xNjMtMC4zMjgsNy4zNzQtMy44MDEsNy4zNzUtNy45NzcNCgkJCWMtMC4wNzctNC4zMzEsMy4zNjQtNy45MDksNy42OTUtOGg2NC42MWM0LjMzMSwwLjA5MSw3Ljc3MiwzLjY2OSw3LjY5NSw4Yy0wLjAwMSw0LjQxNywzLjU3OSw3Ljk5OSw3Ljk5Niw4DQoJCQljMC4wMDEsMCwwLjAwMywwLDAuMDA0LDBINDMyVjM5MnogTTQ2NCw0NjIuNTk0Yy01LjE2OSwxLjg3NS0xMC44MzEsMS44NzUtMTYsMFYyNDEuNDA2YzUuMTY5LTEuODc1LDEwLjgzMS0xLjg3NSwxNiwwVjQ2Mi41OTR6Ig0KICAgICAgICAvPg0KICAgICAgICA8cGF0aCBkPSJNMTM3LjA3OCwxNzZsMjkuMDctMzQuODc5YzEuOTg2LTIuMzg2LDIuNDEzLTUuNzA1LDEuMDk0LTguNTE2Yy0xLjMxNi0yLjgxLTQuMTM5LTQuNjA1LTcuMjQyLTQuNjA1aC00OHYxNmgzMC45MjINCgkJCWwtMjkuMDcsMzQuODc5Yy0yLjgyNywzLjM5OC0yLjM2NCw4LjQ0NCwxLjAzNCwxMS4yN2MxLjQzNywxLjE5NSwzLjI0NiwxLjg1LDUuMTE0LDEuODUxaDQ4di0xNkgxMzcuMDc4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjI0LjM1OSwxMzZsNDUuOTUzLTU5LjA5YzEuODc3LTIuNDExLDIuMjE3LTUuNjgxLDAuODc1LTguNDI2Yy0xLjM0NC0yLjc0My00LjEzMi00LjQ4My03LjE4OC00LjQ4NGgtNjR2MTZoNDcuNjQxDQoJCQlsLTQ1Ljk1Myw1OS4wOWMtMi43MTQsMy40ODQtMi4wODksOC41MDksMS4zOTYsMTEuMjIzYzEuNDA1LDEuMDk0LDMuMTM2LDEuNjg4LDQuOTE3LDEuNjg4aDY0di0xNkgyMjQuMzU5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzI4LDk2bDYyLjM5OC04My4xOTljMi42NTItMy41MzMsMS45MzktOC41NDYtMS41OTQtMTEuMTk5QzM4Ny40MTksMC41NjIsMzg1LjczMywwLDM4NCwwaC03MnYxNmg1NmwtNjIuMzk4LDgzLjE5OQ0KCQkJYy0xLjgxOCwyLjQyNC0yLjExMiw1LjY2OC0wLjc1OCw4LjM3OUMzMDYuMiwxMTAuMjg4LDMwOC45NywxMTIsMzEyLDExMmg4MFY5NkgzMjh6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Stairway:uSe,Stairwell:lSe,Storeroom:NSe,"Summer House":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTkgNTExLjk5OSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTE3My44MzIsMjI1LjI2M2gtNDMuMDM5Yy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41djYwLjEzNGMwLDQuMTQyLDMuMzU3LDcuNSw3LjUsNy41aDQzLjAzOWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41DQoJCQl2LTYwLjEzNEMxODEuMzMyLDIyOC42MjIsMTc3Ljk3NCwyMjUuMjYzLDE3My44MzIsMjI1LjI2M3ogTTE2Ni4zMzEsMjg1LjM5N2gtMjguMDM4di00NS4xMzNoMjguMDM4VjI4NS4zOTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NTkuMTI3LDIwMS4xOTNjMy4zMTQsMi4yNzgsOC4wOTEsMS40NzEsMTAuNDMtMS45MzJjMCwwLDIzLjAwOS0zMy40NjksMjMuMDI5LTMzLjQ5OA0KCQkJYzIuMzE1LTMuMzY4LDEuNDI4LTguMTIxLTEuOTMyLTEwLjQzMUwyNzEuNzYzLDQuODYxYy05LjQyOS02LjQ4LTIyLjA5Ny02LjQ4MS0zMS41MjYsMGMwLDAtMTM5Ljc2Miw5Ni4wNzctMTQwLjI3Myw5Ni40MjgNCgkJCWMtNy45MTEsNS40MzgsMC40MjksMTcuOTEsOC40OTcsMTIuMzYzbDE0MC4yNzQtOTYuNDI5YzQuMzQ3LTIuOTg3LDEwLjE4Ny0yLjk4NywxNC41MzEtMC4wMDFsMjEyLjcwOSwxNDYuMjI0bC0xNC41MzEsMjEuMTM3DQoJCQljMCwwLTIwMS4xNDMtMTM4LjI3Mi0yMDEuMTk1LTEzOC4zMDhjLTIuNDk1LTEuNzE1LTUuOTk5LTEuNzE4LTguNDk4LTAuMDAxTDUwLjU1NywxODQuNTgzbC0xNC41My0yMS4xMzcNCgkJCWMwLDAsNDcuMTE3LTMyLjM5LDQ3LjI4OS0zMi41MDljNy44MDctNS4zNjYtMC40MTYtMTcuOTE3LTguNDk4LTEyLjM2MmMwLDAtNTMuMzAxLDM2LjY0LTUzLjQ3MSwzNi43NTcNCgkJCWMtMy4zNzQsMi4zMi00LjI0MSw3LjA3MS0xLjkzMywxMC40MzFsMjEuNzA5LDMxLjU3OXYzMDcuMTU2YzAsNC4xNDIsMy4zNTgsNy41LDcuNSw3LjVIMjU2YzQuMTQyLDAsNy41LTMuMzU4LDcuNS03LjVWMzk1Ljk3MQ0KCQkJSDQwMi42NHYxMDguNTI4YzAsNC4xNDIsMy4zNTgsNy41LDcuNTAxLDcuNWgzMC40ODhjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNVYzOTUuOTcxaDIzLjc2OWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41di0zMC40ODcNCgkJCWMwLTQuMTQzLTMuMzU4LTcuNS03LjUtNy41aC0yMy43Njl2LTU3LjI1OWgyMy43NjljNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNXYtMzAuNDg4YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTIzLjc2OXYtNTQuMTAzDQoJCQlMNDU5LjEyNywyMDEuMTkzeiBNNDE3LjY0MSwxODYuODc2aDE1LjQ4N3Y2MC44NThoLTE1LjQ4N1YxODYuODc2eiBNMjU2LDYxLjU1NmwzOS4wNzUsMjYuODYxaC03OC4xNDlMMjU2LDYxLjU1NnoNCgkJCSBNNTYuMTI1LDI3MC4zMzJoMzguMzk5djUzLjA1NWMwLDQuMTQxLDMuMzU4LDcuNSw3LjUsNy41SDIwMi42YzQuMTQyLDAsNy41MDEtMy4zNTgsNy41MDEtNy41di01My4wNTVoMzguMzk4djY4LjQ1Nkg1Ni4xMjUNCgkJCVYyNzAuMzMyeiBNMTA5LjUyNSwzMTUuODg2VjIwOS43NzdoODUuNTc1djEwNi4xMDlIMTA5LjUyNXogTTk0LjUyNCw0OTYuOTk4SDU2LjEyNXYtNTkuNzU0aDM4LjM5OVY0OTYuOTk4eiBNMTY2LjMzMSw0OTYuOTk3DQoJCQloLTI4LjAzOHYtODUuNzgzaDI4LjAzOFY0OTYuOTk3eiBNMTk1LjA5OSw0OTYuOTk3aC0xMy43Njd2LTkzLjI4M2MwLTQuMTQyLTMuMzU4LTcuNS03LjUtNy41aC00My4wMzkNCgkJCWMtNC4xNDIsMC03LjUwMSwzLjM1OC03LjUwMSw3LjV2OTMuMjgzaC0xMy43NjhWMzgwLjcyN2g4NS41NzVWNDk2Ljk5N3ogTTI0OC40OTksNDk2Ljk5OEgyMTAuMXYtNTkuNzU0aDM4LjM5OFY0OTYuOTk4eg0KCQkJIE0yNDguNSw0MjIuMjQ0aC0zOC4zOTl2LTQ5LjAxOGMtMC4wMDEtNC4xNDItMy4zNTktNy41LTcuNTAyLTcuNUgxMDIuMDI0Yy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41MDF2NDkuMDE4SDU2LjEyNXYtNjguNDU2DQoJCQlIMjQ4LjVWNDIyLjI0NHogTTI0OC41LDI1NS4yMjVjMCwwLjAwMywwLDAuMDA2LDAsMC4wMXYwLjA5NmgtMzguMzk5di01My4wNTVjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNUgxMDIuMDI0DQoJCQljLTQuMTQyLDAtNy41LDMuMzU4LTcuNSw3LjV2NTMuMDU1SDU2LjEyNXYtNTYuMzczbDE3LjY2My0xMi4xNDNjMC4yOTcsMC4wMzYsMC41OTcsMC4wNiwwLjkwNCwwLjA2SDI0OC41VjI1NS4yMjV6DQoJCQkgTTk1LjUyMywxNzEuODc1bDk5LjU4MS02OC40NTZoMTIxLjc5M2w5OS41ODEsNjguNDU2aC02LjMzNkg5NS41MjN6IE00MDIuNjQsMTg2Ljg3NnY2MC44NThIMjYzLjUwMXYtNjAuODU4SDQwMi42NHoNCgkJCSBNMjYzLjUwMSwyOTMuMjIzaDE1LjQ4NnY1Ny4yNTloLTE1LjQ4NlYyOTMuMjIzeiBNNDMzLjEyOCw0OTYuOTk4aC0xNS40ODdWMzk1Ljk3MWgxNS40ODdWNDk2Ljk5OHogTTQ2NC4zOTcsMzY1LjQ4NHYxNS40ODYNCgkJCUgyNjMuNTAxdi0xNS40ODZINDY0LjM5N3ogTTI5My45ODgsMzUwLjQ4MnYtNTcuMjU5aDE1LjQ4N3Y1Ny4yNTlIMjkzLjk4OHogTTMyNC40NzYsMzUwLjQ4MnYtNTcuMjU5aDE2LjMzN3Y1Ny4yNTlIMzI0LjQ3NnoNCgkJCSBNMzU1LjgxNCwzNTAuNDgydi01Ny4yNTloMTUuNDg3djU3LjI1OUgzNTUuODE0eiBNMzg2LjMwMiwzNTAuNDgydi01Ny4yNTloMTYuMzM3djU3LjI1OUgzODYuMzAyeiBNNDE3LjY0MSwzNTAuNDgydi01Ny4yNTkNCgkJCWgxNS40ODd2NTcuMjU5SDQxNy42NDF6IE00NjQuMzk3LDI2Mi43MzV2MTUuNDg3SDI2My41MDF2LTE1LjQ4N0g0NjQuMzk3eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Swimming Pool":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE4Ny43MzMgMTg3LjczMyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTE4Ny41OTksMTUxLjQ1OEwxNTMuNDY1LDMzLjE4NmMtMC40MjItMS40NjEtMS43NTgtMi40NjYtMy4yNzktMi40NjZIMzcuNTQ3Yy0xLjUyMSwwLTIuODU3LDEuMDA1LTMuMjc5LDIuNDY2DQoJCQlMMC4xMzUsMTUxLjQ1OEMwLjA0NCwxNTEuNzY1LDAsMTUyLjA4NSwwLDE1Mi40MDV2MjUuMDg4YzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNIMTg0LjMyDQoJCQljMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxM3YtMjUuMDg4QzE4Ny43MzMsMTUyLjA4NSwxODcuNjg3LDE1MS43NjUsMTg3LjU5OSwxNTEuNDU4eiBNMTgwLjkwNywxNzQuMDhINi44Mjd2LTIxLjE5Mg0KCQkJTDQwLjExNSwzNy41NDdIMTQ3LjYybDMzLjI4NywxMTUuMzQyVjE3NC4wOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTc4LjUwNyw2LjgyN2MtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3Y1MS4yYzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNzMy40MTMtMS41MjksMy40MTMtMy40MTN2LTUxLjINCgkJCUM4MS45Miw4LjM1Niw4MC4zOTEsNi44MjcsNzguNTA3LDYuODI3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA5LjIyNyw2LjgyN2MtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3Y1MS4yYzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJdi01MS4yQzExMi42NCw4LjM1NiwxMTEuMTExLDYuODI3LDEwOS4yMjcsNi44Mjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDkuMjI3LDE3LjA2N2gtMzAuNzJjLTEuODg0LDAtMy40MTMsMS41MjktMy40MTMsMy40MTNzMS41MjksMy40MTMsMy40MTMsMy40MTNoMzAuNzJjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJUzExMS4xMTEsMTcuMDY3LDEwOS4yMjcsMTcuMDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA5LjIyNywzMC43MmgtMzAuNzJjLTEuODg0LDAtMy40MTMsMS41MjktMy40MTMsMy40MTNzMS41MjksMy40MTMsMy40MTMsMy40MTNoMzAuNzJjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJUzExMS4xMTEsMzAuNzIsMTA5LjIyNywzMC43MnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEwOS4yMjcsNDQuMzczaC0zMC43MmMtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3MxLjUyOSwzLjQxMywzLjQxMywzLjQxM2gzMC43MmMxLjg4NCwwLDMuNDEzLTEuNTI5LDMuNDEzLTMuNDEzDQoJCQlTMTExLjExMSw0NC4zNzMsMTA5LjIyNyw0NC4zNzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNjMuNzg5LDE0Ni4xNzlsLTE3LjUxNi05OC45ODdjLTAuMjg4LTEuNjMtMS43MDUtMi44MTgtMy4zNi0yLjgxOEg0OC4zMjhjLTEuNjEzLDAtMy4wMDUsMS4xMjYtMy4zNCwyLjcwMw0KCQkJbC0yMS4wMTksOTguOTg3Yy0wLjIxMywxLjAwNywwLjAzOCwyLjA1NywwLjY4NiwyLjg1N2MwLjY0OSwwLjgsMS42MjEsMS4yNjUsMi42NTIsMS4yNjVoMTMzLjEyYzEuMDA5LDAsMS45NjYtMC40NDcsMi42MTYtMS4yMTkNCgkJCUMxNjMuNjkxLDE0OC4xOTUsMTYzLjk2NSwxNDcuMTc0LDE2My43ODksMTQ2LjE3OXogTTMxLjUyLDE0My4zNkw1MS4wODksNTEuMmg4OC45NThsMTYuMzA5LDkyLjE2SDMxLjUyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Terrace:LSe,Toilet:gSe,Upstairs:jSe,Wardrobe:ySe,Washroom:TSe,Wc:DSe,Windscreen:dSe,Workshop:hSe,Workspace:zSe},ISe=[{_id:"hood",name:{en:"Hood",ru:"Вытяжка",de:"Abzugshaube",fr:"Capot",it:"Cappe",nl:"Hood",pl:"Okapy",pt:"Hood",es:"Campana","zh-cn":"抽油烟机"},icon:"Hoods.svg"},{_id:"alarm_system",name:{en:"Alarm System",ru:"Сигнализация",de:"Alarmanlage",fr:"Systèmes D'Alarme",it:"Sistemi Di Allarme",nl:"Alarm Systems",pl:"Systemy Alarmowe",pt:"Sistemas De Alarme",es:"Sistemas De Alarma","zh-cn":"报警系统"},icon:"Alarm Systems.svg"},{_id:"battery_status",name:{en:"Battery Status",ru:"Заряд батареи",de:"Batteriestatus",fr:"État De La Batterie",it:"Stato Della Batteria",nl:"Batterij Status",pl:"Stan Baterii",pt:"Estado Da Bateria",es:"Estado De La Batería","zh-cn":"电池状态"},icon:"Battery Status.svg"},{_id:"lighting",name:{en:"Lighting",ru:"Светильник",de:"Beleuchtung",fr:"Éclairages",it:"Illuminazione",nl:"Verlichting",pl:"Oprawy Oświetleniowe",pt:"Iluminações",es:"Iluminaciones","zh-cn":"照明"},icon:"Lightings.svg"},{_id:"shading",name:{en:"Shading",ru:"Затенение",de:"Beschattungen",fr:"Ombres",it:"Ombreggiatura",nl:"Shading",pl:"Zacienienie",pt:"Shading",es:"Sombreado","zh-cn":"底纹"},icon:"Shading.svg"},{_id:"irrigation",name:{en:"Irrigation",ru:"Орошение",de:"Bewässerung",fr:"Irrigation",it:"Irrigazione",nl:"Irrigatie",pl:"Nawadnianie",pt:"Irrigação",es:"Irrigación","zh-cn":"灌溉"},icon:"Irrigation.svg"},{_id:"iron",name:{en:"Iron",ru:"Утюг",de:"Bügeleisen",fr:"Le Fer",it:"Ferro",nl:"Ijzer",pl:"Żelazo",pt:"Ferro",es:"Hierro","zh-cn":"铁"},icon:"Iron.svg"},{_id:"computer",name:{en:"Computer",ru:"Компьютер",de:"Rechner",fr:"L'Ordinateur",it:"Computer",nl:"Computer",pl:"Komputer",pt:"Computador",es:"Ordenador","zh-cn":"电脑"},icon:"Computer.svg"},{_id:"ceiling_spotlight",name:{en:"Ceiling Spotlight",ru:"Потолочный прожектор",de:"Deckenspot",fr:"Plafond Spotlight",it:"Faretti A Soffitto",nl:"Plafond Spotlight",pl:"Reflektory Sufitowe",pt:"Tecto Foco",es:"Focos De Techo","zh-cn":"天花射灯"},icon:"Ceiling Spotlights.svg"},{_id:"printer",name:{en:"Printer",de:"Drucker",ru:"Принтер",pt:"Impressora",nl:"Printer",fr:"Imprimante",it:"Stampante",es:"Impresora",pl:"Drukarka","zh-cn":"打印机"},icon:"Printer.svg"},{_id:"power_consumption",name:{en:"Power Consumption",ru:"Потребляемая мощность",de:"Stromverbrauch",fr:"Consommation D'Énergie",it:"Consumo Di Energia",nl:"Energieverbruik",pl:"Pobór Energii",pt:"Consumo De Energia",es:"El Consumo De Energía","zh-cn":"能量消耗"},icon:"Power Consumption.svg"},{_id:"window",name:{en:"Window",ru:"Окно",de:"Fenster",fr:"La Fenêtre",it:"Finestra",nl:"Venster",pl:"Okno",pt:"Janela",es:"Ventana","zh-cn":"窗户"},icon:"Window.svg"},{_id:"garage_door",name:{en:"Garage Door",ru:"Гаражные Ворота",de:"Garagentor",fr:"Portes De Garage",it:"Garage Door",nl:"Garage Door",pl:"Bramy Garażowe",pt:"Portas De Garagem",es:"Las Puertas De Garaje","zh-cn":"车库门"},icon:"Garage Doors.svg"},{_id:"hairdryer",name:{en:"Hairdryer",ru:"Фен",de:"Haartrockner",fr:"Sèche-Cheveux",it:"Asciugacapelli",nl:"Haardroger",pl:"Suszarka Do Włosów",pt:"Secador De Cabelo",es:"Secador De Pelo","zh-cn":"电吹风"},icon:"Hairdryer.svg"},{_id:"hanging_lamp",name:{en:"Hanging Lamp",ru:"Подвесной светильник",de:"Hängelampe",fr:"Lampes Suspendues",it:"Lampade A Sospensione",nl:"Opknoping Lampen",pl:"Lampy Wiszące",pt:"Lâmpadas De Suspensão",es:"Lámparas Colgantes","zh-cn":"挂灯"},icon:"Hanging Lamps.svg"},{_id:"doorstep",name:{en:"Enterance",ru:"Входная дверь",de:"Haustür",fr:"Seuil De Porte",it:"Gradino Della Porta",nl:"Drempel",pl:"Próg",pt:"Porta",es:"Peldaño","zh-cn":"门阶"},icon:"Doorstep.svg"},{_id:"hot_water",name:{en:"Hot Water",ru:"Горячая вода",de:"Heißwasser",fr:"Eau Chaude",it:"Acqua Calda",nl:"Heet Water",pl:"Gorąca Woda",pt:"Água Quente",es:"Agua Caliente","zh-cn":"热水"},icon:"Hot Water.svg"},{_id:"heating",name:{en:"Heating",ru:"Отопление",de:"Heizung",fr:"Chauffe-Eau",it:"Riscaldatore",nl:"Verwarmer",pl:"Podgrzewacz",pt:"Aquecedor",es:"Calentador","zh-cn":"加热器"},icon:"Heater.svg"},{_id:"stove",name:{en:"Stove",ru:"Печь",de:"Herd",fr:"Le Fourneau",it:"Stufa",nl:"Fornuis",pl:"Kuchenka",pt:"Forno",es:"Cocina","zh-cn":"火炉"},icon:"Stove.svg"},{_id:"louvre",name:{en:"Louvre",ru:"Жалюзи",de:"Jalousie",fr:"Persienne",it:"Persiana Di Ventilazione",nl:"Louvre",pl:"Żaluzja",pt:"Trapeira",es:"Lumbrera","zh-cn":"卢浮宫"},icon:"Louvre.svg"},{_id:"coffee_maker",name:{en:"Coffee Maker",ru:"Кофеварка",de:"Kaffemaschine",fr:"Cafetière",it:"Macchine Da Caffè",nl:"Koffie Maker",pl:"Ekspresy Do Kawy",pt:"Cafeteira",es:"Cafetera","zh-cn":"咖啡壶"},icon:"Coffee Makers.svg"},{_id:"cold_water",name:{en:"Cold Water",ru:"Холодная вода",de:"Kaltwasser",fr:"Eau Froide",it:"Acqua Fredda",nl:"Koud Water",pl:"Zimna Woda",pt:"Água Fria",es:"Agua Fría","zh-cn":"冷水"},icon:"Cold Water.svg"},{_id:"climate",name:{en:"Climate",ru:"Климат",de:"Klima",fr:"Climat",it:"Clima",nl:"Klimaat",pl:"Klimat",pt:"Clima",es:"Clima","zh-cn":"气候"},icon:"Climate.svg"},{_id:"speaker",name:{en:"Speaker",ru:"Звуковая система",de:"Lautsprecher",fr:"Orateur",it:"Altoparlante",nl:"Spreker",pl:"Głośnik",pt:"Palestrante",es:"Altavoz","zh-cn":"扬声器"},icon:"Speaker.svg"},{_id:"led_strip",name:{en:"Led Strip",ru:"Светодиодная лента",de:"LED Leiste",fr:"Led Strip",it:"Led Strip",nl:"Loden Strip",pl:"Pasek Ledowy",pt:"Led Faixa",es:"Tira Llevada","zh-cn":"灯带"},icon:"Led Strip.svg"},{_id:"light",name:{en:"Light",ru:"Свет",de:"Licht",fr:"Lumière",it:"Leggero",nl:"Licht",pl:"Lekki",pt:"Luz",es:"Luz","zh-cn":"光"},icon:"Light.svg"},{_id:"fan",name:{en:"Fan",ru:"Вентилятор",de:"Lüfter",fr:"Ventilateur",it:"Fan",nl:"Ventilator",pl:"Wentylator",pt:"Ventilador",es:"Ventilador","zh-cn":"扇子"},icon:"Fan.svg"},{_id:"humidity",name:{en:"Humidity",ru:"Влажность",de:"Luftfeuchtigkeit",fr:"Humidité",it:"Umidità",nl:"Vochtigheid",pl:"Wilgotność",pt:"Umidade",es:"Humedad","zh-cn":"湿度"},icon:"Humidity.svg"},{_id:"ventilation",name:{en:"Ventilation",ru:"Вентиляция",de:"Lüftung",fr:"Ventilation",it:"Ventilazione",nl:"Ventilatie",pl:"Wentylacja",pt:"Ventilação",es:"Ventilación","zh-cn":"通风"},icon:"Ventilation.svg"},{_id:"chandelier",name:{en:"Chandelier",ru:"Люстра",de:"Kronleuchter",fr:"Lustre",it:"Lampadario",nl:"Kroonluchter",pl:"Żyrandol",pt:"Lustre",es:"Candelabro","zh-cn":"枝形吊灯"},icon:"Chandelier.svg"},{_id:"awning",name:{en:"Awning",ru:"Маркиза",de:"Markise",fr:"Auvents",it:"Tende",nl:"Luifels",pl:"Okrycia",pt:"Toldos",es:"Toldos","zh-cn":"遮阳篷"},icon:"Awnings.svg"},{_id:"music",name:{en:"Music",ru:"Музыка",de:"Musik",fr:"Musique",it:"Musica",nl:"Muziek",pl:"Muzyka",pt:"Música",es:"Música","zh-cn":"音乐"},icon:"Music.svg"},{_id:"people",name:{en:"People",ru:"Люди",de:"Personen",fr:"Gens",it:"Persone",nl:"Mensen",pl:"Ludzie",pt:"Pessoas",es:"Personas","zh-cn":"人们"},icon:"People.svg"},{_id:"pool",name:{en:"Pool",ru:"Бассейн",de:"Pool",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"水池"},icon:"Pool.svg"},{_id:"pump",name:{en:"Pump",ru:"Насос",de:"Pumpe",fr:"Pompe",it:"Pompa",nl:"Pomp",pl:"Pompa",pt:"Bombear",es:"Bomba","zh-cn":"泵"},icon:"Pump.svg"},{_id:"outdoor_blinds",name:{en:"Outdoor Blinds",ru:"Внещгте жалюзи",de:"Raffstore",fr:"Volets",it:"Tende Da Esterni",nl:"Outdoor Blinds",pl:"Rolety Zewnętrzne",pt:"Estores Exteriores",es:"Persianas Exteriores","zh-cn":"室外百叶窗"},icon:"Outdoor Blinds.svg"},{_id:"mowing_machine",name:{en:"Mowing Machine",ru:"Газонокосилка",de:"Rasenmäher",fr:"Machine De Fauchage",it:"Macchina Di Falciatura",nl:"Maaimachine",pl:"Kosiarka",pt:"Roçada Máquina",es:"Segadora","zh-cn":"割草机"},icon:"Mowing Machine.svg"},{_id:"receiver",name:{en:"Receiver",ru:"Приставка",de:"Receiver",fr:"Destinataire",it:"Ricevitore",nl:"Ontvanger",pl:"Odbiorca",pt:"Recebedor",es:"Receptor","zh-cn":"接收者"},icon:"Receiver.svg"},{_id:"shutters",name:{en:"Shutters",ru:"Ставни",de:"Rollladen",fr:"Volets",it:"Persiane",nl:"Shutters",pl:"Żaluzje",pt:"Persianas",es:"Persianas","zh-cn":"百叶窗"},icon:"Shutters.svg"},{_id:"smoke_detector",name:{en:"Smoke detector",de:"Rauchmelder",ru:"Детектор дыма",pt:"Detector de fumaça",nl:"Rookdetector",fr:"Détecteur de fumée",it:"Rilevatore di fumo",es:"Detector de humo",pl:"Wykrywacz dymu","zh-cn":"烟雾探测器"},icon:"SmokeDetector.svg"},{_id:"lock",name:{en:"Lock",ru:"Замок",de:"Schloß",fr:"Fermer À Clé",it:"Serratura",nl:"Slot",pl:"Zamek",pt:"Trancar",es:"Cerrar Con Llave","zh-cn":"锁"},icon:"Lock.svg"},{_id:"security",name:{en:"Security",ru:"Безопасность",de:"Sicherheit",fr:"Sécurité",it:"Sicurezza",nl:"Veiligheid",pl:"Bezpieczeństwo",pt:"Segurança",es:"Seguridad","zh-cn":"安全"},icon:"Security.svg"},{_id:"dishwasher",name:{en:"Dishwasher",ru:"Посудомоечная машина",de:"Spülmaschine",fr:"Lave-Vaisselles",it:"Lavastoviglie",nl:"Vaatwassers",pl:"Zmywarki",pt:"Máquinas De Lavar Louça",es:"Lavaplatos","zh-cn":"洗碗机"},icon:"Dishwashers.svg"},{_id:"vacuum_cleaner",name:{en:"Vacuum Cleaner",ru:"Пылесос",de:"Staubsauger",fr:"Aspirateur",it:"Aspirapolvere",nl:"Stofzuiger",pl:"Odkurzacz",pt:"Aspirador De Pó",es:"Aspiradora","zh-cn":"吸尘器"},icon:"Vacuum Cleaner.svg"},{_id:"socket",name:{en:"Socket",ru:"Розетка",de:"Steckdose",fr:"Prise",it:"Socket",nl:"Socket",pl:"Gniazdka",pt:"Tomada",es:"Zócalo","zh-cn":"套接字"},icon:"Sockets.svg"},{_id:"floor_lamp",name:{en:"Floor Lamp",ru:"Торшер",de:"Stehlampe",fr:"Lampes Pour Plancher",it:"Lampade A Stelo",nl:"Vloerlampen",pl:"Lampy Podłogowe",pt:"Lâmpadas Chão",es:"Lámparas De Pie","zh-cn":"落地灯"},icon:"Floor Lamps.svg"},{_id:"power_consumption",name:{en:"Power Consumption",ru:"Потребляемая мощность",de:"Stromverbrauch",fr:"Consommation D'Énergie",it:"Consumo Di Energia",nl:"Energieverbruik",pl:"Pobór Energii",pt:"Consumo De Energia",es:"El Consumo De Energía","zh-cn":"能量消耗"},icon:"Power Consumption.svg"},{_id:"temperature_sensor",name:{en:"Temperature Sensor",ru:"Температурный датчик",de:"Temperatur-Sensor",fr:"Capteur De Température",it:"Sensori Di Temperatura",nl:"Temperatuursensor",pl:"Czujniki Temperatury",pt:"Sensores De Temperatura",es:"Sensores De Temperatura","zh-cn":"温度传感器"},icon:"Temperature Sensors.svg"},{_id:"table_lamp",name:{en:"Table Lamp",ru:"Настольная лампа",de:"Tischlampe",fr:"Lampe De Chevet",it:"Lampade Da Tavolo",nl:"Tafellampen",pl:"Lampy Stołowe",pt:"Lâmpadas De Mesa",es:"Lámparas De Mesa","zh-cn":"台灯"},icon:"Table Lamps.svg"},{_id:"gate",name:{en:"Gate",ru:"Ворота",de:"Tor",fr:"Porte",it:"Gate",nl:"Gate",pl:"Bramy",pt:"Portões",es:"Puertas","zh-cn":"盖茨"},icon:"Gates.svg"},{_id:"dryer",name:{en:"Dryer",ru:"Сушилка",de:"Trockner",fr:"Séchoir",it:"Asciugatrice",nl:"Droger",pl:"Suszarka",pt:"Secador",es:"Secadora","zh-cn":"烘干机"},icon:"Dryer.svg"},{_id:"door",name:{en:"Door",ru:"Дверь",de:"Tür",fr:"Des Portes",it:"Porte",nl:"Deuren",pl:"Drzwi",pt:"Portas",es:"Puertas","zh-cn":"门"},icon:"Doors.svg"},{_id:"tv",name:{en:"Tv",ru:"Телевизор",de:"TV",fr:"La Télé",it:"Tv",nl:"Tv",pl:"Telewizja",pt:"Televisão",es:"Televisor","zh-cn":"电视"},icon:"Tv.svg"},{_id:"consumption",name:{en:"Consumption",ru:"Потребление",de:"Verbrauch",fr:"Consommation",it:"Consumo",nl:"Consumptie",pl:"Konsumpcja",pt:"Consumo",es:"Consumo","zh-cn":"消费"},icon:"Consumption.svg"},{_id:"amplifier",name:{en:"Amplifier",ru:"Усилитель звука",de:"Verstärker",fr:"Amplificateur",it:"Amplificatore",nl:"Versterker",pl:"Wzmacniacz",pt:"Amplificador",es:"Amplificador","zh-cn":"放大器"},icon:"Amplifier.svg"},{_id:"curtains",name:{en:"Curtains",ru:"Шторы",de:"Vorhänge",fr:"Des Rideaux",it:"Le Tende",nl:"Gordijnen",pl:"Zasłony",pt:"Cortinas",es:"Cortinas","zh-cn":"窗帘"},icon:"Curtains.svg"},{_id:"sconce",name:{en:"Sconce",ru:"Настенный светильник",de:"Wandlampe",fr:"Sconce",it:"Sconce",nl:"Sconce",pl:"Kinkiety",pt:"Arandelas",es:"Los Apliques","zh-cn":"壁灯"},icon:"Sconces.svg"},{_id:"washing_machine",name:{en:"Washing Machine",ru:"Стиральная машина",de:"Waschmaschine",fr:"Machines À Laver",it:"Lavatrici",nl:"Wasmachines",pl:"Pralki",pt:"Máquinas De Lavar Roupas",es:"Lavadoras","zh-cn":"洗衣机"},icon:"Washing Machines.svg"},{_id:"water",name:{en:"Water",ru:"Вода",de:"Wasser",fr:"L'Eau",it:"Acqua",nl:"Water",pl:"Woda",pt:"Água",es:"Agua","zh-cn":"水"},icon:"Water.svg"},{_id:"water_heater",name:{en:"Water Heater",ru:"Нагреватель воды",de:"Wasserkocher",fr:"Chauffe-Eau",it:"Scaldabagno",nl:"Waterkoker",pl:"Podgrzewacz Wody",pt:"Aquecedor De Água",es:"Calentador De Agua","zh-cn":"热水器"},icon:"Water Heater.svg"},{_id:"water_consumption",name:{en:"Water Consumption",ru:"Потребление воды",de:"Wasserverbrauch",fr:"Consommation D'Eau",it:"Consumo D'Acqua",nl:"Waterverbruik",pl:"Konsumpcja Wody",pt:"Consumo De Água",es:"Consumo De Agua","zh-cn":"耗水量"},icon:"Water Consumption.svg"},{_id:"weather",name:{en:"Weather",ru:"Погода",de:"Wetter",fr:"La Météo",it:"Tempo Metereologico",nl:"Weer",pl:"Pogoda",pt:"Clima",es:"Tiempo","zh-cn":"天气"},icon:"Weather.svg"}],CSe=[{_id:"storeroom",name:{en:"Storeroom",ru:"Кладовая",de:"Abstellraum",fr:"Débarras",it:"Dispensa",nl:"Bergplaats",pl:"Magazyn",pt:"Despensa",es:"Trastero","zh-cn":"库房"},icon:"Storeroom.svg"},{_id:"second_floor",name:{en:"Second floor",ru:"Второй этаж",de:"Erster OG",pt:"Primeiro andar",nl:"Eerste verdieping",fr:"Premier étage",it:"Primo piano",es:"Primer piso",pl:"Pierwsze piętro","zh-cn":"第一层"},icon:"Second Floor.svg"},{_id:"dressing_room",name:{en:"Dressing Room",ru:"Гардеробная",de:"Ankleide",fr:"Vestiaire",it:"Camerino",nl:"Kleedkamer",pl:"Przebieralnia",pt:"Provador",es:"Vestidor","zh-cn":"更衣室"},icon:"Dressing Room.svg"},{_id:"workspace",name:{en:"Workspace",ru:"Рабочая Среда",de:"Arbeitszimmer",fr:"Espace De Travail",it:"Area Di Lavoro",nl:"Workspace",pl:"Workspace",pt:"Área De Trabalho",es:"Espacio De Trabajo","zh-cn":"工作区"},icon:"Workspace.svg"},{_id:"driveway",name:{en:"Driveway",ru:"Дорога",de:"Auffahrt",fr:"Allée",it:"Viale",nl:"Pad",pl:"Podjazd",pt:"Entrada Da Garagem",es:"Entrada De Coches","zh-cn":"车道"},icon:"Driveway.svg"},{_id:"outdoors",name:{en:"Outdoors",ru:"На Улице",de:"Außenbereich",fr:"En Plein Air",it:"All'Aperto",nl:"Buitenshuis",pl:"Na Dworze",pt:"Ao Ar Livre",es:"Al Aire Libre","zh-cn":"户外"},icon:"Outdoors.svg"},{_id:"bathroom",name:{en:"Bathroom",ru:"Ванная Комната",de:"Badezimmer",fr:"Salle De Bains",it:"Bagno",nl:"Badkamer",pl:"Łazienka",pt:"Banheiro",es:"Baño","zh-cn":"浴室"},icon:"Bathroom.svg"},{_id:"balcony",name:{en:"Balcony",ru:"Балкон",de:"Balkon",fr:"Balcon",it:"Balcone",nl:"Balkon",pl:"Balkon",pt:"Sacada",es:"Balcón","zh-cn":"阳台"},icon:"Balcony.svg"},{_id:"office",name:{en:"Office",ru:"Офис",de:"Office",fr:"Bureau",it:"Ufficio",nl:"Kantoor",pl:"Gabinet",pt:"Escritório",es:"Oficina","zh-cn":"办公室"},icon:"Office.svg"},{_id:"carport",name:{en:"Carport",ru:"Навес",de:"Carport",fr:"Carport",it:"Posto Auto Coperto",nl:"Carport",pl:"Wiata",pt:"Telheiro",es:"Cochera","zh-cn":"车棚"},icon:"Carport.svg"},{_id:"attic",name:{en:"Attic",ru:"Чердак",de:"Dachgeschoss",fr:"Grenier",it:"Attico",nl:"Zolder",pl:"Poddasze",pt:"Sótão",es:"Ático","zh-cn":"阁楼"},icon:"Attic.svg"},{_id:"hall",name:{en:"Hall",ru:"Зал",de:"Diele",fr:"Salle",it:"Sala",nl:"Hal",pl:"Sala",pt:"Corredor",es:"Sala","zh-cn":"大厅"},icon:"Hall.svg"},{_id:"entrance",name:{en:"Entrance",ru:"Вход",de:"Eingang",fr:"Entrée",it:"Ingresso",nl:"Ingang",pl:"Wejście",pt:"Entrada",es:"Entrada","zh-cn":"入口"},icon:"Entrance.svg"},{_id:"ground_floor",name:{en:"Ground Floor",ru:"Первый Этаж",de:"Erdgeschoss",fr:"Rez-De-Chaussée",it:"Piano Terra",nl:"Begane Grond",pl:"Parter",pt:"Térreo",es:"Planta Baja","zh-cn":"一楼"},icon:"Ground Floor.svg"},{_id:"dining_area",name:{en:"Dining Area",ru:"Столовая",de:"Essbereich",fr:"Salle À Manger",it:"Zona Pranzo",nl:"Eethoek",pl:"Jadalnia",pt:"Área De Refeições",es:"Comedor","zh-cn":"用餐区"},icon:"Dining Area.svg"},{_id:"dining_room",name:{en:"Dining Room",ru:"Столовая",de:"Esszimmer",fr:"Salle À Manger",it:"Sala Da Pranzo",nl:"Eetkamer",pl:"Jadalnia",pt:"Sala De Jantar",es:"Comedor","zh-cn":"饭厅"},icon:"Dining Room.svg"},{_id:"gym",name:{en:"Gym",ru:"Спортзал",de:"Fitnessraum",fr:"Gym",it:"Palestra",nl:"Sportschool",pl:"Siłownia",pt:"Ginásio",es:"Gimnasio","zh-cn":"健身房"},icon:"Gym.svg"},{_id:"gallery",name:{en:"Gallery",ru:"Галерея",de:"Galerie",fr:"Galerie",it:"Galleria",nl:"Galerij",pl:"Galeria",pt:"Galeria",es:"Galería","zh-cn":"画廊"},icon:"Gallery.svg"},{_id:"garage",name:{en:"Garage",ru:"Гараж",de:"Garage",fr:"Garage",it:"Box Auto",nl:"Garage",pl:"Garaż",pt:"Garagem",es:"Garaje","zh-cn":"车库"},icon:"Garage.svg"},{_id:"wardrobe",name:{en:"Wardrobe",ru:"Гардероб",de:"Garderobe",fr:"Penderie",it:"Armadio",nl:"Garderobe",pl:"Szafa",pt:"Guarda Roupa",es:"Armario","zh-cn":"衣柜"},icon:"Wardrobe.svg"},{_id:"garden",name:{en:"Garden",ru:"Сад",de:"Garten",fr:"Jardin",it:"Giardino",nl:"Tuin",pl:"Ogród",pt:"Jardim",es:"Jardín","zh-cn":"花园"},icon:"Garden.svg"},{_id:"summer_house",name:{en:"Summer House",ru:"Дача",de:"Gartenhaus",fr:"Maison D'Été",it:"Casa Estiva",nl:"Zomerhuis",pl:"Domek Letniskowy",pt:"Summer House",es:"Casa De Verano","zh-cn":"凉亭"},icon:"Summer House.svg"},{_id:"guest_bathroom",name:{en:"Guest Bathroom",ru:"Гостевая Комната",de:"Gäste-WC",fr:"Salle De Bains Invité",it:"Guest Bathroom",nl:"Gastenbadkamer",pl:"Łazienka Gościnna",pt:"Banheiro De Hóspedes",es:"Baño De Visitas","zh-cn":"客用浴室"},icon:"Guest Bathroom.svg"},{_id:"guest_room",name:{en:"Guest Room",ru:"Гостевая Комната",de:"Gästezimmer",fr:"Chambre D'Amis",it:"Stanza Degli Ospiti",nl:"Guest Room",pl:"Pokój Gościnny",pt:"Quarto De Hóspedes",es:"Habitación De Huéspedes","zh-cn":"客房"},icon:"Guest Room.svg"},{_id:"laundry_room",name:{en:"Laundry Room",ru:"Прачечная",de:"Hauswirtschaftsraum",fr:"Buanderie",it:"Lavanderia",nl:"Wasruimte",pl:"Pralnia",pt:"Lavandaria",es:"Cuarto De Lavado","zh-cn":"洗衣房"},icon:"Laundry Room.svg"},{_id:"home_theater",name:{en:"Home Theater",ru:"Домашний Театр",de:"Heimkino",fr:"Cinéma Maison",it:"Home Theater",nl:"Thuisbioscoop",pl:"Kino Domowe",pt:"Cinema Em Casa",es:"Cine En Casa","zh-cn":"家庭电影院"},icon:"Home Theater.svg"},{_id:"boiler_room",name:{en:"Boiler Room",ru:"Бойлерная",de:"Heizungsraum",fr:"Chaufferie",it:"Locale Caldaia",nl:"Boiler Room",pl:"Kotłownia",pt:"Sala Da Caldeira",es:"Sala De Calderas","zh-cn":"锅炉房"},icon:"Boiler Room.svg"},{_id:"chamber",name:{en:"Chamber",ru:"Камера",de:"Kammer",fr:"Chambre",it:"Camera",nl:"Kamer",pl:"Izba",pt:"Câmara",es:"Cámara","zh-cn":"商会"},icon:"Chamber.svg"},{_id:"basement,_cellar",name:{en:"Basement, Cellar",ru:"Подвал, Погреб",de:"Keller",fr:"Sous-Sol, Cave",it:"Taverna, Cantina",nl:"Kelder, Kelder",pl:"Piwnica, Piwnica",pt:"Porão, Adega",es:"Sótano, Bodega","zh-cn":"地下室,地窖"},icon:"Basement.svg"},{_id:"nursery",name:{en:"Nursery",ru:"Питомник",de:"Kinderzimmer",fr:"Garderie",it:"Asilo",nl:"Kinderkamer",pl:"Żłobek",pt:"Berçário",es:"Guardería","zh-cn":"苗圃"},icon:"Nursery.svg"},{_id:"corridor",name:{en:"Corridor",ru:"Коридор",de:"Korridor",fr:"Couloir",it:"Corridoio",nl:"Gang",pl:"Korytarz",pt:"Corredor",es:"Corredor","zh-cn":"走廊"},icon:"Corridor.svg"},{_id:"kitchen",name:{en:"Kitchen",ru:"Кухня",de:"Küche",fr:"Cuisine",it:"Cucina",nl:"Keuken",pl:"Kuchnia",pt:"Cozinha",es:"Cocina","zh-cn":"厨房"},icon:"Kitchen.svg"},{_id:"upstairs",name:{en:"Upstairs",ru:"Вверх По Лестнице",de:"Obergeschoss",fr:"En Haut",it:"Di Sopra",nl:"Boven",pl:"Na Górę",pt:"Andar De Cima",es:"Piso Superior","zh-cn":"楼上"},icon:"Upstairs.svg"},{_id:"office",name:{en:"Office",ru:"Офис",de:"Office",fr:"Bureau",it:"Ufficio",nl:"Kantoor",pl:"Gabinet",pt:"Escritório",es:"Oficina","zh-cn":"办公室"},icon:"Office.svg"},{_id:"pool",name:{en:"Pool",ru:"Бассейн",de:"Pool",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"水池"},icon:"Pool.svg"},{_id:"rear_wall",name:{en:"Rear Wall",ru:"Задняя Стенка",de:"Rückwand",fr:"Paroi Arrière",it:"Parete Posteriore",nl:"Achterwand",pl:"Tylna Ściana",pt:"Parede Traseira",es:"Pared Posterior","zh-cn":"后墙"},icon:"Rear Wall.svg"},{_id:"barn",name:{en:"Barn",ru:"Амбар",de:"Scheune",fr:"Grange",it:"Fienile",nl:"Schuur",pl:"Stodoła",pt:"Celeiro",es:"Granero","zh-cn":"谷仓"},icon:"Barn.svg"},{_id:"sleeping_area",name:{en:"Sleeping Area",ru:"Спальное Место",de:"Schlafbereich",fr:"Coin Montagne",it:"Area Sleeping",nl:"Sleeping Area",pl:"Powierzchnia Spania",pt:"Sleeping Area",es:"Área De Dormir","zh-cn":"睡眠区"},icon:"Sleeping Area.svg"},{_id:"bedroom",name:{en:"Bedroom",ru:"Спальная Комната",de:"Schlafzimmer",fr:"Chambre",it:"Camera Da Letto",nl:"Slaapkamer",pl:"Sypialnia",pt:"Quarto",es:"Cuarto","zh-cn":"卧室"},icon:"Bedroom.svg"},{_id:"shed",name:{en:"Shed",ru:"Сбрасывать",de:"Schuppen",fr:"Hangar",it:"Capannone",nl:"Schuur",pl:"Budka",pt:"Cabana",es:"Cobertizo","zh-cn":"棚"},icon:"Shed.svg"},{_id:"swimming_pool",name:{en:"Swimming Pool",ru:"Плавательный Бассейн",de:"Schwimmbad",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"游泳池"},icon:"Swimming Pool.svg"},{_id:"dining",name:{en:"Dining",ru:"Обеденный",de:"Speis",fr:"À Manger",it:"Cenare",nl:"Dining",pl:"Jadalnia",pt:"Jantar",es:"Comida","zh-cn":"用餐"},icon:"Dining.svg"},{_id:"playroom",name:{en:"Playroom",ru:"Игровая Комната",de:"Spielzimmer",fr:"Salle De Jeux",it:"Stanza Dei Giochi",nl:"Speelkamer",pl:"Pokój Zabaw",pt:"Sala De Jogos",es:"Cuarto De Jugar","zh-cn":"游戏室"},icon:"Playroom.svg"},{_id:"stairway",name:{en:"Stairway",ru:"Лестница",de:"Treppe",fr:"Escalier",it:"Scala",nl:"Trap",pl:"Klatka Schodowa",pt:"Escada",es:"Escalera","zh-cn":"楼梯"},icon:"Stairway.svg"},{_id:"equipment_room",name:{en:"Equipment Room",ru:"Оборудование Номера",de:"Technikraum",fr:"Salle D'Équipement",it:"Stanza Degli Attrezzi",nl:"Technische Ruimte",pl:"Wyposażenie Pokoi",pt:"Sala De Equipamentos",es:"Cuarto De Equipos","zh-cn":"机房"},icon:"Equipment Room.svg"},{_id:"terrace",name:{en:"Terrace",ru:"Терраса",de:"Terrasse",fr:"Terrasse",it:"Terrazza",nl:"Terras",pl:"Taras",pt:"Terraço",es:"Terraza","zh-cn":"阳台"},icon:"Terrace.svg"},{_id:"toilet",name:{en:"Toilet",ru:"Туалет",de:"Toilette",fr:"Toilette",it:"Gabinetto",nl:"Toilet",pl:"Toaleta",pt:"Banheiro",es:"Inodoro","zh-cn":"洗手间"},icon:"Toilet.svg"},{_id:"stairwell",name:{en:"Stairwell",ru:"Лестничная клетка",de:"Treppenhaus",fr:"Cage D'Escalier",it:"Tromba Delle Scale",nl:"Trappenhuis",pl:"Klatka Schodowa",pt:"Caixa De Escada",es:"Hueco De Escalera","zh-cn":"楼梯间"},icon:"Stairwell.svg"},{_id:"locker_room",name:{en:"Locker Room",ru:"Камера Хранения",de:"Umkleideraum",fr:"Vestiaire",it:"Spogliatoio",nl:"Kleedkamer",pl:"Szatnia",pt:"Vestiário",es:"Vestuario","zh-cn":"更衣室"},icon:"Locker Room.svg"},{_id:"basement",name:{en:"Basement",ru:"Подвал",de:"Untergeschoss",fr:"Sous-Sol",it:"Seminterrato",nl:"Kelder",pl:"Piwnica",pt:"Porão",es:"Sótano","zh-cn":"地下室"},icon:"Basement.svg"},{_id:"front_yard",name:{en:"Front Yard",ru:"Передний Двор",de:"Vorgarten",fr:"Front Yard",it:"Cortile",nl:"Voortuin",pl:"Podwórko",pt:"Jardim Da Frente",es:"Patio Delantero","zh-cn":"前院"},icon:"Front Yard.svg"},{_id:"anteroom",name:{en:"Anteroom",ru:"Передняя",de:"Vorraum",fr:"Antichambre",it:"Anticamera",nl:"Voorkamer",pl:"Przedpokój",pt:"Ante-Sala",es:"Antesala","zh-cn":"接待室"},icon:"Anteroom.svg"},{_id:"washroom",name:{en:"Washroom",ru:"Уборная",de:"Waschraum",fr:"Toilettes",it:"Bagno",nl:"Waskamer",pl:"Umywalnia",pt:"Banheiro",es:"Baño","zh-cn":"卫生间"},icon:"Washroom.svg"},{_id:"wc",name:{en:"Wc",ru:"Туалет",de:"WC",fr:"Toilettes",it:"Bagno",nl:"Wc",pl:"Toaleta",pt:"Banheiro",es:"Wc","zh-cn":"厕所"},icon:"Wc.svg"},{_id:"workshop",name:{en:"Workshop",ru:"Мастерская",de:"Werkstatt",fr:"Atelier",it:"Laboratorio",nl:"Werkplaats",pl:"Warsztat",pt:"Oficina",es:"Taller","zh-cn":"作坊"},icon:"Workshop.svg"},{_id:"windscreen",name:{en:"Windscreen",ru:"Ветровое Стекло",de:"Windfang",fr:"Pare-Brise",it:"Parabrezza",nl:"Voorruit",pl:"Szyba Przednia",pt:"Pára-Brisas",es:"Parabrisas","zh-cn":"风档"},icon:"Windscreen.svg"},{_id:"living_area",name:{en:"Living Area",ru:"Жилая Площадь",de:"Wohnbereich",fr:"Salon",it:"Zona Giorno",nl:"Living Area",pl:"Powierzchnia Mieszkalna",pt:"Sala-De-Estar",es:"Sala De Estar","zh-cn":"生活区域"},icon:"Living Area.svg"},{_id:"living_room",name:{en:"Living Room",ru:"Гостинная",de:"Wohnzimmer",fr:"Le Salon",it:"Soggiorno",nl:"Woonkamer",pl:"Salon",pt:"Sala De Estar",es:"Sala De Estar","zh-cn":"客厅"},icon:"Living Room.svg"},{_id:"living_room",name:{en:"Living Room",ru:"Гостинная",de:"Wohnzimmer",fr:"Le Salon",it:"Soggiorno",nl:"Woonkamer",pl:"Salon",pt:"Sala De Estar",es:"Sala De Estar","zh-cn":"客厅"},icon:"Living Room.svg"}];class pSe extends De{constructor(e){super(e),this.state={opened:!1,names:[],filter:"",icons:null,loading:!1,isAnyName:!1}}loadAllIcons(){this.state.loading||this.state.icons||this.setState({loading:!0},()=>{const e=[],t=[];if(this.props.icons){const i=this.props.icons.map((r,o)=>{let n;if(typeof r=="object"){if(n=r.icon||r.src||r.href||"",t[o]=typeof r.name=="object"?r.name[this.props.lang]||r.name.en||r._id||"":r.name||"",!t[o]){const M=n.split(".");M.pop(),t[o]=M[M.length-1]}}else n=r;return n?n.startsWith("data:")?(e[o]=n,Promise.resolve()):m.getSvg(n).then(M=>e[o]=M):Promise.resolve()});Promise.all(i).catch(r=>console.error(r)).then(()=>this.setState({icons:e,loading:!1,names:t,isAnyName:!!t.find(r=>r)}))}else{let i=this.props.onlyRooms||!this.props.onlyRooms&&!this.props.onlyDevices?CSe:null;if(i&&(i.forEach(r=>{r.name&&typeof r.name=="object"&&(r.name=r.name[this.props.lang]||r.name.en||r._id),r.name=r.name||r._id}),i=i.filter((r,o)=>!(i!=null&&i.find((n,M)=>o!==M&&n.icon===r.icon&&n.name===r.name))),i.forEach((r,o)=>{t[o]=r.name,e[o]=`data:image/svg+xml;base64,${wSe[r.icon.replace(/\.svg$/,"")]}`})),i=this.props.onlyDevices||!this.props.onlyRooms&&!this.props.onlyDevices?ISe:null,i){const r=e.length;i&&i.forEach(o=>{o.name&&typeof o.name=="object"&&(o.name=o.name[this.props.lang]||o.name.en||o._id),o.name=o.name||o._id}),i=i.filter((o,n)=>!(i!=null&&i.find((M,c)=>n!==c&&M.icon===o.icon&&M.name===o.name))),i.forEach((o,n)=>{t[n+r]=o.name,e[n+r]=`data:image/svg+xml;base64,${Qxe[o.icon.replace(/\.svg$/,"")]}`})}this.setState({icons:e,loading:!1,names:t,isAnyName:!!t.find(r=>r)})}})}render(){return this.state.loading?a.createElement(ko,null):a.createElement(a.Fragment,null,a.createElement(q,{color:"grey",variant:"outlined",title:this.props.t("ra_Select predefined icon"),onClick:()=>this.setState({opened:!0},()=>this.loadAllIcons()),style:{minWidth:40,marginRight:8}},"..."),this.state.opened?a.createElement(Ae,{onClose:()=>this.setState({opened:!1}),open:!0},a.createElement(fe,null,this.props.t("ra_Select predefined icon"),this.state.isAnyName?a.createElement(Te,{variant:"standard",margin:"dense",style:{marginLeft:20},value:this.state.filter,onChange:e=>this.setState({filter:e.target.value.toLowerCase()}),placeholder:this.props.t("ra_Filter"),slotProps:{input:{endAdornment:this.state.filter?a.createElement(W,{tabIndex:-1,size:"small",onClick:()=>this.setState({filter:""})},a.createElement(xN,null)):void 0}}}):null),a.createElement(_e,null,a.createElement("div",{style:{width:"100%",textAlign:"center"}},this.state.icons&&this.state.icons.map((e,t)=>!this.state.filter||this.state.names[t]&&this.state.names[t].toLowerCase().includes(this.state.filter)?a.createElement(Le,{title:this.state.names[t]||"",key:t,slotProps:{popper:{sx:{pointerEvents:"none"}}}},a.createElement(W,{onClick:()=>this.setState({opened:!1},()=>{const i=this.props.onSelect||this.props.onChange;i&&i(e)}),size:"large"},a.createElement(be,{src:e,alt:t.toString(),style:{width:32,height:32,borderRadius:5}}))):null))),a.createElement(xe,null,a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.setState({opened:!1}),startIcon:a.createElement(we,null)},this.props.t("ra_Close")))):null)}}const Gt={formContainer:{display:"flex",justifyContent:"left",alignItems:"center"},formControl:{display:"flex",padding:24,flexGrow:1e3},divContainer:{width:64,height:32,whiteSpace:"nowrap",lineHeight:"32px",marginRight:8},dragField:{textAlign:"center",display:"table",minHeight:90,width:"calc(100% - 60px)",border:"2px dashed #777",borderRadius:10,padding:4},formIcon:{margin:10,opacity:.6},text:{display:"table-cell",verticalAlign:"middle"}};function fve(s){var M,c,l,N;const e=s.icon,t=s.onChange,i=Kt(u=>{const L=new FileReader;L.addEventListener("load",()=>t(L.result),!1),u[0]&&L.readAsDataURL(u[0])},[t]),{getRootProps:r,getInputProps:o,isDragActive:n}=sj({onDrop:i});return a.createElement("div",{style:Gt.formContainer},e?a.createElement(e,{style:Gt.formIcon}):null,a.createElement(Qt,{variant:"standard",style:{...Gt.formControl,padding:3}},a.createElement(yi,{shrink:!0,sx:(M=s.customStyles)!=null&&M.label?{"&.MuiInputLabel-root":s.customStyles.label}:void 0,classes:{root:(c=s.customClasses)==null?void 0:c.label}},s.label),a.createElement("div",{style:Gt.formContainer},s.value?a.createElement("div",{style:Gt.divContainer},a.createElement(be,{style:{...s.previewStyle,...((l=s.customStyles)==null?void 0:l.icon)||void 0},src:s.value,className:m.clsx(s.previewClassName,(N=s.customClasses)==null?void 0:N.icon)}),!s.disabled&&a.createElement(W,{style:{verticalAlign:"top"},title:D.t("ra_Clear icon"),size:"small",onClick:()=>s.onChange("")},a.createElement(xN,null))):!s.disabled&&a.createElement(pSe,{icons:s.icons,onlyRooms:s.onlyRooms,onlyDevices:s.onlyDevices,onSelect:u=>s.onChange(u),t:D.t,lang:D.getLanguage()}),!s.disabled&&a.createElement("div",{...r(),style:{...Gt.dragField,...n?{backgroundColor:"rgba(0, 255, 0, 0.1)"}:{cursor:"pointer"}}},a.createElement("input",{...o()}),n?a.createElement("span",{style:Gt.text},D.t("ra_Drop the files here...")):a.createElement("span",{style:Gt.text},D.t("ra_Drag 'n' drop some files here, or click to select files"))))))}function ASe(s){const e=document.createElement("div");e.innerHTML=s;const t=e.firstElementChild;return t!=null&&t.remove?t.remove():t&&e.removeChild(t),e.remove(),t}function mSe(s){const e={};if(!s)return e;for(let t,i=0;io[1].toUpperCase()),e[t]=s[i].value}return e}class No extends De{svg;static REMOTE_SERVER=window.location.hostname.includes("iobroker.in");static REMOTE_PREFIX=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1);constructor(e){var t;super(e),this.state={svg:!!((t=this.props.src)!=null&&t.startsWith("data:")),created:!0,color:this.props.color||"",src:this.props.src||"",imgError:!1,showError:!!this.props.showError},this.svg=this.state.svg&&this.state.src?this.getSvgFromData(this.state.src):null}static getDerivedStateFromProps(e,t){var o;const i={};let r=!1;return e&&t&&e.src!==t.src&&(i.src=e.src,i.svg=(o=e.src)==null?void 0:o.startsWith("data:"),i.created=!1,r=!0),e&&t&&e.color!==t.color&&(i.color=e.color,i.created=!1,r=!0),e&&t&&e.showError!==t.showError&&(i.showError=e.showError,r=!0),r?i:null}getSvgFromData(e){const t="data:image/svg+xml;base64,";if(!e.startsWith(t))return null;e=e.substring(t.length);try{e=atob(e);const i=ASe(e),r=i.innerHTML,o=mSe(i.attributes);return i.remove(),a.createElement(J,{component:"svg",sx:this.props.sx,className:this.props.className,style:this.state.color?{color:this.state.color}:void 0,...o,dangerouslySetInnerHTML:{__html:r}})}catch{}return null}render(){if(this.state.svg)return this.state.created||setTimeout(()=>{this.svg=this.state.src?this.getSvgFromData(this.state.src):null,this.setState({created:!0})},50),this.svg;if(this.state.src){if(this.state.imgError||!this.state.src)return a.createElement(Nc,{className:this.props.className});if(No.REMOTE_SERVER&&!this.state.src.startsWith("http://")&&!this.state.src.startsWith("https://")){let e=(this.props.imagePrefix||"")+this.state.src;return e.startsWith("./")?e=No.REMOTE_PREFIX+e.substring(2):e.startsWith("/")||(e=No.REMOTE_PREFIX+e),a.createElement(J,{component:"img",sx:this.props.sx,className:this.props.className,src:`https://remote-files.iobroker.in${e}`,alt:"",onError:()=>this.props.showError?this.setState({imgError:!0}):this.setState({src:""})})}return a.createElement(J,{component:"img",sx:this.props.sx,className:this.props.className,src:(this.props.imagePrefix||"")+this.state.src,alt:"",onError:()=>this.props.showError?this.setState({imgError:!0}):this.setState({src:""})})}return null}}function fSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z"},child:[]}]})(s)}function OSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"},child:[]}]})(s)}function ESe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"},child:[]}]})(s)}function _Se(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z"},child:[]}]})(s)}function xSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z"},child:[]}]})(s)}function SSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z"},child:[]}]})(s)}function kSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"},child:[]}]})(s)}function vSe(s){return te({attr:{t:"1569683928793",viewBox:"0 0 1024 1024",version:"1.1"},child:[{tag:"path",attr:{d:"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H212V212h200v200zM864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H612V212h200v200zM864 544H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z m-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"},child:[]}]})(s)}function YSe(s){return te({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M24 5.25v13a.75.75 0 0 1-1.136.643L16.5 15.075v2.175A1.75 1.75 0 0 1 14.75 19h-13A1.75 1.75 0 0 1 0 17.25v-11C0 5.284.784 4.5 1.75 4.5h13c.966 0 1.75.784 1.75 1.75v2.175l6.364-3.818A.75.75 0 0 1 24 5.25Zm-9 1a.25.25 0 0 0-.25-.25h-13a.25.25 0 0 0-.25.25v11c0 .138.112.25.25.25h13a.25.25 0 0 0 .25-.25v-11Zm1.5 7.075 6 3.6V6.575l-6 3.6Z"},child:[]}]})(s)}function QSe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M9.91,19.56c0-0.85,0.2-1.64,0.59-2.38s0.94-1.35,1.65-1.84V5.42c0-0.8,0.27-1.48,0.82-2.03S14.2,2.55,15,2.55 + `),a.createElement("div",{style:N.white,className:"saturation-white"},a.createElement("div",{style:N.black,className:"saturation-black"}),a.createElement("div",{style:N.pointer},this.props.pointer?a.createElement(this.props.pointer,this.props):a.createElement("div",{style:N.circle}))))}}]),e})(hr||De);function gfe(s,e){for(var t=-1,i=s==null?0:s.length;++t=0,o=!t&&r&&(e==="hex"||e==="hex6"||e==="hex3"||e==="hex4"||e==="hex8"||e==="name");return o?e==="name"&&this._a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},clone:function(){return U(this.toString())},_applyModification:function(e,t){var i=e.apply(null,[this].concat([].slice.call(t)));return this._r=i._r,this._g=i._g,this._b=i._b,this.setAlpha(i._a),this},lighten:function(){return this._applyModification(Sfe,arguments)},brighten:function(){return this._applyModification(kfe,arguments)},darken:function(){return this._applyModification(vfe,arguments)},desaturate:function(){return this._applyModification(Efe,arguments)},saturate:function(){return this._applyModification(_fe,arguments)},greyscale:function(){return this._applyModification(xfe,arguments)},spin:function(){return this._applyModification(Yfe,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(Ufe,arguments)},complement:function(){return this._applyCombination(Qfe,arguments)},monochromatic:function(){return this._applyCombination($fe,arguments)},splitcomplement:function(){return this._applyCombination(bfe,arguments)},triad:function(){return this._applyCombination(e0,[3])},tetrad:function(){return this._applyCombination(e0,[4])}};U.fromRatio=function(s,e){if(fo(s)=="object"){var t={};for(var i in s)s.hasOwnProperty(i)&&(i==="a"?t[i]=s[i]:t[i]=qi(s[i]));s=t}return U(s,e)};function pfe(s){var e={r:0,g:0,b:0},t=1,i=null,r=null,o=null,n=!1,M=!1;return typeof s=="string"&&(s=Rfe(s)),fo(s)=="object"&&(Et(s.r)&&Et(s.g)&&Et(s.b)?(e=Afe(s.r,s.g,s.b),n=!0,M=String(s.r).substr(-1)==="%"?"prgb":"rgb"):Et(s.h)&&Et(s.s)&&Et(s.v)?(i=qi(s.s),r=qi(s.v),e=ffe(s.h,i,r),n=!0,M="hsv"):Et(s.h)&&Et(s.s)&&Et(s.l)&&(i=qi(s.s),o=qi(s.l),e=mfe(s.h,i,o),n=!0,M="hsl"),s.hasOwnProperty("a")&&(t=s.a)),t=xL(t),{ok:n,format:s.format||M,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}function Afe(s,e,t){return{r:je(s,255)*255,g:je(e,255)*255,b:je(t,255)*255}}function Zl(s,e,t){s=je(s,255),e=je(e,255),t=je(t,255);var i=Math.max(s,e,t),r=Math.min(s,e,t),o,n,M=(i+r)/2;if(i==r)o=n=0;else{var c=i-r;switch(n=M>.5?c/(2-i-r):c/(i+r),i){case s:o=(e-t)/c+(e1&&(u-=1),u<1/6?l+(N-l)*6*u:u<1/2?N:u<2/3?l+(N-l)*(2/3-u)*6:l}if(e===0)i=r=o=t;else{var M=t<.5?t*(1+e):t+e-t*e,c=2*t-M;i=n(c,M,s+1/3),r=n(c,M,s),o=n(c,M,s-1/3)}return{r:i*255,g:r*255,b:o*255}}function Xl(s,e,t){s=je(s,255),e=je(e,255),t=je(t,255);var i=Math.max(s,e,t),r=Math.min(s,e,t),o,n,M=i,c=i-r;if(n=i===0?0:c/i,i==r)o=0;else{switch(i){case s:o=(e-t)/c+(e>1)+720)%360;--e;)i.h=(i.h+r)%360,o.push(U(i));return o}function $fe(s,e){e=e||6;for(var t=U(s).toHsv(),i=t.h,r=t.s,o=t.v,n=[],M=1/e;e--;)n.push(U({h:i,s:r,v:o})),o=(o+M)%1;return n}U.mix=function(s,e,t){t=t===0?0:t||50;var i=U(s).toRgb(),r=U(e).toRgb(),o=t/100,n={r:(r.r-i.r)*o+i.r,g:(r.g-i.g)*o+i.g,b:(r.b-i.b)*o+i.b,a:(r.a-i.a)*o+i.a};return U(n)};U.readability=function(s,e){var t=U(s),i=U(e);return(Math.max(t.getLuminance(),i.getLuminance())+.05)/(Math.min(t.getLuminance(),i.getLuminance())+.05)};U.isReadable=function(s,e,t){var i=U.readability(s,e),r,o;switch(o=!1,r=Ffe(t),r.level+r.size){case"AAsmall":case"AAAlarge":o=i>=4.5;break;case"AAlarge":o=i>=3;break;case"AAAsmall":o=i>=7;break}return o};U.mostReadable=function(s,e,t){var i=null,r=0,o,n,M,c;t=t||{},n=t.includeFallbackColors,M=t.level,c=t.size;for(var l=0;lr&&(r=o,i=U(e[l]));return U.isReadable(s,i,{level:M,size:c})||!n?i:(t.includeFallbackColors=!1,U.mostReadable(s,["#fff","#000"],t))};var Ca=U.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},Pfe=U.hexNames=Wfe(Ca);function Wfe(s){var e={};for(var t in s)s.hasOwnProperty(t)&&(e[s[t]]=t);return e}function xL(s){return s=parseFloat(s),(isNaN(s)||s<0||s>1)&&(s=1),s}function je(s,e){Jfe(s)&&(s="100%");var t=Bfe(s);return s=Math.min(e,Math.max(0,parseFloat(s))),t&&(s=parseInt(s*e,10)/100),Math.abs(s-e)<1e-6?1:s%e/parseFloat(e)}function an(s){return Math.min(1,Math.max(0,s))}function Ke(s){return parseInt(s,16)}function Jfe(s){return typeof s=="string"&&s.indexOf(".")!=-1&&parseFloat(s)===1}function Bfe(s){return typeof s=="string"&&s.indexOf("%")!=-1}function Lt(s){return s.length==1?"0"+s:""+s}function qi(s){return s<=1&&(s=s*100+"%"),s}function SL(s){return Math.round(parseFloat(s)*255).toString(16)}function t0(s){return Ke(s)/255}var Nt=(function(){var s="[-\\+]?\\d+%?",e="[-\\+]?\\d*\\.\\d+%?",t="(?:"+e+")|(?:"+s+")",i="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?",r="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?";return{CSS_UNIT:new RegExp(t),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+r),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+r),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+r),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}})();function Et(s){return!!Nt.CSS_UNIT.exec(s)}function Rfe(s){s=s.replace(Ife,"").replace(Cfe,"").toLowerCase();var e=!1;if(Ca[s])s=Ca[s],e=!0;else if(s=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t;return(t=Nt.rgb.exec(s))?{r:t[1],g:t[2],b:t[3]}:(t=Nt.rgba.exec(s))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=Nt.hsl.exec(s))?{h:t[1],s:t[2],l:t[3]}:(t=Nt.hsla.exec(s))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=Nt.hsv.exec(s))?{h:t[1],s:t[2],v:t[3]}:(t=Nt.hsva.exec(s))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=Nt.hex8.exec(s))?{r:Ke(t[1]),g:Ke(t[2]),b:Ke(t[3]),a:t0(t[4]),format:e?"name":"hex8"}:(t=Nt.hex6.exec(s))?{r:Ke(t[1]),g:Ke(t[2]),b:Ke(t[3]),format:e?"name":"hex"}:(t=Nt.hex4.exec(s))?{r:Ke(t[1]+""+t[1]),g:Ke(t[2]+""+t[2]),b:Ke(t[3]+""+t[3]),a:t0(t[4]+""+t[4]),format:e?"name":"hex8"}:(t=Nt.hex3.exec(s))?{r:Ke(t[1]+""+t[1]),g:Ke(t[2]+""+t[2]),b:Ke(t[3]+""+t[3]),format:e?"name":"hex"}:!1}function Ffe(s){var e,t;return s=s||{level:"AA",size:"small"},e=(s.level||"AA").toUpperCase(),t=(s.size||"small").toLowerCase(),e!=="AA"&&e!=="AAA"&&(e="AA"),t!=="small"&&t!=="large"&&(t="small"),{level:e,size:t}}var s0=function(e){var t=["r","g","b","a","h","s","l","v"],i=0,r=0;return wfe(t,function(o){if(e[o]&&(i+=1,isNaN(e[o])||(r+=1),o==="s"||o==="l")){var n=/^\d+%$/;n.test(e[o])&&(r+=1)}}),i===r?e:!1},er=function(e,t){var i=e.hex?U(e.hex):U(e),r=i.toHsl(),o=i.toHsv(),n=i.toRgb(),M=i.toHex();r.s===0&&(r.h=t||0,o.h=t||0);var c=M==="000000"&&n.a===0;return{hsl:r,hex:c?"transparent":"#"+M,rgb:n,hsv:o,oldHue:e.h||t||r.h,source:e.source}},Ls=function(e){if(e==="transparent")return!0;var t=String(e).charAt(0)==="#"?1:0;return e.length!==4+t&&e.length<7+t&&U(e).isValid()},GM=function(e){if(!e)return"#fff";var t=er(e);if(t.hex==="transparent")return"rgba(0,0,0,0.4)";var i=(t.rgb.r*299+t.rgb.g*587+t.rgb.b*114)/1e3;return i>=128?"#000":"#fff"},vn=function(e,t){var i=e.replace("°","");return U(t+" ("+i+")")._ok},Ri=Object.assign||function(s){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:"span";return(function(i){eOe(r,i);function r(){var o,n,M,c;qfe(this,r);for(var l=arguments.length,N=Array(l),u=0;uM))return!1;var l=o.get(s),N=o.get(e);if(l&&N)return l==e&&N==s;var u=-1,L=!0,g=t&NOe?new Oo:void 0;for(o.set(s,e),o.set(e,s);++u=0||Object.prototype.hasOwnProperty.call(s,i)&&(t[i]=s[i]);return t}var Hr=24,AEe=JL.default=function(s){var e=s.fill,t=e===void 0?"currentColor":e,i=s.width,r=i===void 0?Hr:i,o=s.height,n=o===void 0?Hr:o,M=s.style,c=M===void 0?{}:M,l=pEe(s,["fill","width","height","style"]);return h0.default.createElement("svg",d0({viewBox:"0 0 "+Hr+" "+Hr,style:d0({fill:t,width:r,height:n},c)},l),h0.default.createElement("path",{d:"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"}))},mEe=(function(){function s(e,t){for(var i=0;i1&&(r.a=1),i.props.onChange({h:i.props.hsl.h,s:i.props.hsl.s,l:i.props.hsl.l,a:Math.round(r.a*100)/100,source:"rgb"},o)):(r.h||r.s||r.l)&&(typeof r.s=="string"&&r.s.includes("%")&&(r.s=r.s.replace("%","")),typeof r.l=="string"&&r.l.includes("%")&&(r.l=r.l.replace("%","")),r.s==1?r.s=.01:r.l==1&&(r.l=.01),i.props.onChange({h:r.h||i.props.hsl.h,s:Number(D0(r.s)?i.props.hsl.s:r.s),l:Number(D0(r.l)?i.props.hsl.l:r.l),source:"hsl"},o))},i.showHighlight=function(r){r.currentTarget.style.background="#eee"},i.hideHighlight=function(r){r.currentTarget.style.background="transparent"},t.hsl.a!==1&&t.view==="hex"?i.state={view:"rgb"}:i.state={view:t.view},i}return mEe(e,[{key:"render",value:function(){var i=this,r=Z({default:{wrap:{paddingTop:"16px",display:"flex"},fields:{flex:"1",display:"flex",marginLeft:"-6px"},field:{paddingLeft:"6px",width:"100%"},alpha:{paddingLeft:"6px",width:"100%"},toggle:{width:"32px",textAlign:"right",position:"relative"},icon:{marginRight:"-4px",marginTop:"12px",cursor:"pointer",position:"relative"},iconHighlight:{position:"absolute",width:"24px",height:"28px",background:"#eee",borderRadius:"4px",top:"10px",left:"12px",display:"none"},input:{fontSize:"11px",color:"#333",width:"100%",borderRadius:"2px",border:"none",boxShadow:"inset 0 0 0 1px #dadada",height:"21px",textAlign:"center"},label:{textTransform:"uppercase",fontSize:"11px",lineHeight:"11px",color:"#969696",textAlign:"center",display:"block",marginTop:"12px"},svg:{fill:"#333",width:"24px",height:"24px",border:"1px transparent solid",borderRadius:"5px"}},disableAlpha:{alpha:{display:"none"}}},this.props,this.state),o=void 0;return this.state.view==="hex"?o=a.createElement("div",{style:r.fields,className:"flexbox-fix"},a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"hex",value:this.props.hex,onChange:this.handleChange}))):this.state.view==="rgb"?o=a.createElement("div",{style:r.fields,className:"flexbox-fix"},a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"r",value:this.props.rgb.r,onChange:this.handleChange})),a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"g",value:this.props.rgb.g,onChange:this.handleChange})),a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"b",value:this.props.rgb.b,onChange:this.handleChange})),a.createElement("div",{style:r.alpha},a.createElement(se,{style:{input:r.input,label:r.label},label:"a",value:this.props.rgb.a,arrowOffset:.01,onChange:this.handleChange}))):this.state.view==="hsl"&&(o=a.createElement("div",{style:r.fields,className:"flexbox-fix"},a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"h",value:Math.round(this.props.hsl.h),onChange:this.handleChange})),a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"s",value:Math.round(this.props.hsl.s*100)+"%",onChange:this.handleChange})),a.createElement("div",{style:r.field},a.createElement(se,{style:{input:r.input,label:r.label},label:"l",value:Math.round(this.props.hsl.l*100)+"%",onChange:this.handleChange})),a.createElement("div",{style:r.alpha},a.createElement(se,{style:{input:r.input,label:r.label},label:"a",value:this.props.hsl.a,arrowOffset:.01,onChange:this.handleChange})))),a.createElement("div",{style:r.wrap,className:"flexbox-fix"},o,a.createElement("div",{style:r.toggle},a.createElement("div",{style:r.icon,onClick:this.toggleViews,ref:function(M){return i.icon=M}},a.createElement(AEe,{style:r.svg,onMouseOver:this.showHighlight,onMouseEnter:this.showHighlight,onMouseOut:this.hideHighlight}))))}}],[{key:"getDerivedStateFromProps",value:function(i,r){return i.hsl.a!==1&&r.view==="hex"?{view:"rgb"}:null}}]),e})(a.Component);BL.defaultProps={view:"hex"};var z0=function(){var e=Z({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",transform:"translate(-6px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}}});return a.createElement("div",{style:e.picker})},_Ee=function(){var e=Z({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",boxShadow:"inset 0 0 0 1px #fff",transform:"translate(-6px, -6px)"}}});return a.createElement("div",{style:e.picker})},qM=function(e){var t=e.width,i=e.onChange,r=e.disableAlpha,o=e.rgb,n=e.hsl,M=e.hsv,c=e.hex,l=e.renderers,N=e.styles,u=N===void 0?{}:N,L=e.className,g=L===void 0?"":L,j=e.defaultView,y=Z(Ve({default:{picker:{width:t,background:"#fff",borderRadius:"2px",boxShadow:"0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)",boxSizing:"initial",fontFamily:"Menlo"},saturation:{width:"100%",paddingBottom:"55%",position:"relative",borderRadius:"2px 2px 0 0",overflow:"hidden"},Saturation:{radius:"2px 2px 0 0"},body:{padding:"16px 16px 12px"},controls:{display:"flex"},color:{width:"32px"},swatch:{marginTop:"6px",width:"16px",height:"16px",borderRadius:"8px",position:"relative",overflow:"hidden"},active:{absolute:"0px 0px 0px 0px",borderRadius:"8px",boxShadow:"inset 0 0 0 1px rgba(0,0,0,.1)",background:"rgba("+o.r+", "+o.g+", "+o.b+", "+o.a+")",zIndex:"2"},toggles:{flex:"1"},hue:{height:"10px",position:"relative",marginBottom:"8px"},Hue:{radius:"2px"},alpha:{height:"10px",position:"relative"},Alpha:{radius:"2px"}},disableAlpha:{color:{width:"22px"},alpha:{display:"none"},hue:{marginBottom:"0px"},swatch:{width:"10px",height:"10px",marginTop:"0px"}}},u),{disableAlpha:r});return a.createElement("div",{style:y.picker,className:"chrome-picker "+g},a.createElement("div",{style:y.saturation},a.createElement(nn,{style:y.Saturation,hsl:n,hsv:M,pointer:_Ee,onChange:i})),a.createElement("div",{style:y.body},a.createElement("div",{style:y.controls,className:"flexbox-fix"},a.createElement("div",{style:y.color},a.createElement("div",{style:y.swatch},a.createElement("div",{style:y.active}),a.createElement(vi,{renderers:l}))),a.createElement("div",{style:y.toggles},a.createElement("div",{style:y.hue},a.createElement(Yi,{style:y.Hue,hsl:n,pointer:z0,onChange:i})),a.createElement("div",{style:y.alpha},a.createElement(UM,{style:y.Alpha,rgb:o,hsl:n,pointer:z0,renderers:l,onChange:i})))),a.createElement(BL,{rgb:o,hsl:n,hex:c,view:j,onChange:i,disableAlpha:r})))};qM.propTypes={width:_.oneOfType([_.string,_.number]),disableAlpha:_.bool,styles:_.object,defaultView:_.oneOf(["hex","rgb","hsl"])};qM.defaultProps={width:225,disableAlpha:!1,styles:{}};const xEe=Ze(qM);var SEe=function(e){var t=e.color,i=e.onClick,r=i===void 0?function(){}:i,o=e.onSwatchHover,n=e.active,M=Z({default:{color:{background:t,width:"15px",height:"15px",float:"left",marginRight:"5px",marginBottom:"5px",position:"relative",cursor:"pointer"},dot:{absolute:"5px 5px 5px 5px",background:GM(t),borderRadius:"50%",opacity:"0"}},active:{dot:{opacity:"1"}},"color-#FFFFFF":{color:{boxShadow:"inset 0 0 0 1px #ddd"},dot:{background:"#000"}},transparent:{dot:{background:"#000"}}},{active:n,"color-#FFFFFF":t==="#FFFFFF",transparent:t==="transparent"});return a.createElement(Ys,{style:M.color,color:t,onClick:r,onHover:o,focusStyle:{boxShadow:"0 0 4px "+t}},a.createElement("div",{style:M.dot}))},kEe=function(e){var t=e.hex,i=e.rgb,r=e.onChange,o=Z({default:{fields:{display:"flex",paddingBottom:"6px",paddingRight:"5px",position:"relative"},active:{position:"absolute",top:"6px",left:"5px",height:"9px",width:"9px",background:t},HEXwrap:{flex:"6",position:"relative"},HEXinput:{width:"80%",padding:"0px",paddingLeft:"20%",border:"none",outline:"none",background:"none",fontSize:"12px",color:"#333",height:"16px"},HEXlabel:{display:"none"},RGBwrap:{flex:"3",position:"relative"},RGBinput:{width:"70%",padding:"0px",paddingLeft:"30%",border:"none",outline:"none",background:"none",fontSize:"12px",color:"#333",height:"16px"},RGBlabel:{position:"absolute",top:"3px",left:"0px",lineHeight:"16px",textTransform:"uppercase",fontSize:"12px",color:"#999"}}}),n=function(c,l){c.r||c.g||c.b?r({r:c.r||i.r,g:c.g||i.g,b:c.b||i.b,source:"rgb"},l):r({hex:c.hex,source:"hex"},l)};return a.createElement("div",{style:o.fields,className:"flexbox-fix"},a.createElement("div",{style:o.active}),a.createElement(se,{style:{wrap:o.HEXwrap,input:o.HEXinput,label:o.HEXlabel},label:"hex",value:t,onChange:n}),a.createElement(se,{style:{wrap:o.RGBwrap,input:o.RGBinput,label:o.RGBlabel},label:"r",value:i.r,onChange:n}),a.createElement(se,{style:{wrap:o.RGBwrap,input:o.RGBinput,label:o.RGBlabel},label:"g",value:i.g,onChange:n}),a.createElement(se,{style:{wrap:o.RGBwrap,input:o.RGBinput,label:o.RGBlabel},label:"b",value:i.b,onChange:n}))},ec=function(e){var t=e.onChange,i=e.onSwatchHover,r=e.colors,o=e.hex,n=e.rgb,M=e.styles,c=M===void 0?{}:M,l=e.className,N=l===void 0?"":l,u=Z(Ve({default:{Compact:{background:"#f6f6f6",radius:"4px"},compact:{paddingTop:"5px",paddingLeft:"5px",boxSizing:"initial",width:"240px"},clear:{clear:"both"}}},c)),L=function(j,y){j.hex?Ls(j.hex)&&t({hex:j.hex,source:"hex"},y):t(j,y)};return a.createElement(vr,{style:u.Compact,styles:c},a.createElement("div",{style:u.compact,className:"compact-picker "+N},a.createElement("div",null,Qs(r,function(g){return a.createElement(SEe,{key:g,color:g,active:g.toLowerCase()===o,onClick:L,onSwatchHover:i})}),a.createElement("div",{style:u.clear})),a.createElement(kEe,{hex:o,rgb:n,onChange:L})))};ec.propTypes={colors:_.arrayOf(_.string),styles:_.object};ec.defaultProps={colors:["#4D4D4D","#999999","#FFFFFF","#F44E3B","#FE9200","#FCDC00","#DBDF00","#A4DD00","#68CCCA","#73D8FF","#AEA1FF","#FDA1FF","#333333","#808080","#cccccc","#D33115","#E27300","#FCC400","#B0BC00","#68BC00","#16A5A5","#009CE0","#7B64FF","#FA28FF","#000000","#666666","#B3B3B3","#9F0500","#C45100","#FB9E00","#808900","#194D33","#0C797D","#0062B1","#653294","#AB149E"],styles:{}};Ze(ec);var vEe=function(e){var t=e.hover,i=e.color,r=e.onClick,o=e.onSwatchHover,n={position:"relative",zIndex:"2",outline:"2px solid #fff",boxShadow:"0 0 5px 2px rgba(0,0,0,0.25)"},M=Z({default:{swatch:{width:"25px",height:"25px",fontSize:"0"}},hover:{swatch:n}},{hover:t});return a.createElement("div",{style:M.swatch},a.createElement(Ys,{color:i,onClick:r,onHover:o,focusStyle:n}))};const YEe=bM(vEe);var tc=function(e){var t=e.width,i=e.colors,r=e.onChange,o=e.onSwatchHover,n=e.triangle,M=e.styles,c=M===void 0?{}:M,l=e.className,N=l===void 0?"":l,u=Z(Ve({default:{card:{width:t,background:"#fff",border:"1px solid rgba(0,0,0,0.2)",boxShadow:"0 3px 12px rgba(0,0,0,0.15)",borderRadius:"4px",position:"relative",padding:"5px",display:"flex",flexWrap:"wrap"},triangle:{position:"absolute",border:"7px solid transparent",borderBottomColor:"#fff"},triangleShadow:{position:"absolute",border:"8px solid transparent",borderBottomColor:"rgba(0,0,0,0.15)"}},"hide-triangle":{triangle:{display:"none"},triangleShadow:{display:"none"}},"top-left-triangle":{triangle:{top:"-14px",left:"10px"},triangleShadow:{top:"-16px",left:"9px"}},"top-right-triangle":{triangle:{top:"-14px",right:"10px"},triangleShadow:{top:"-16px",right:"9px"}},"bottom-left-triangle":{triangle:{top:"35px",left:"10px",transform:"rotate(180deg)"},triangleShadow:{top:"37px",left:"9px",transform:"rotate(180deg)"}},"bottom-right-triangle":{triangle:{top:"35px",right:"10px",transform:"rotate(180deg)"},triangleShadow:{top:"37px",right:"9px",transform:"rotate(180deg)"}}},c),{"hide-triangle":n==="hide","top-left-triangle":n==="top-left","top-right-triangle":n==="top-right","bottom-left-triangle":n==="bottom-left","bottom-right-triangle":n==="bottom-right"}),L=function(j,y){return r({hex:j,source:"hex"},y)};return a.createElement("div",{style:u.card,className:"github-picker "+N},a.createElement("div",{style:u.triangleShadow}),a.createElement("div",{style:u.triangle}),Qs(i,function(g){return a.createElement(YEe,{color:g,key:g,onClick:L,onSwatchHover:o})}))};tc.propTypes={width:_.oneOfType([_.string,_.number]),colors:_.arrayOf(_.string),triangle:_.oneOf(["hide","top-left","top-right","bottom-left","bottom-right"]),styles:_.object};tc.defaultProps={width:200,colors:["#B80000","#DB3E00","#FCCB00","#008B02","#006B76","#1273DE","#004DCF","#5300EB","#EB9694","#FAD0C3","#FEF3BD","#C1E1C5","#BEDADC","#C4DEF6","#BED3F3","#D4C4FB"],triangle:"top-left",styles:{}};Ze(tc);var QEe=function(e){var t=e.direction,i=Z({default:{picker:{width:"18px",height:"18px",borderRadius:"50%",transform:"translate(-9px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}},vertical:{picker:{transform:"translate(-3px, -9px)"}}},{vertical:t==="vertical"});return a.createElement("div",{style:i.picker})},bEe=Object.assign||function(s){for(var e=1;e.5});return a.createElement("div",{style:i.picker})},WEe=function(){var e=Z({default:{triangle:{width:0,height:0,borderStyle:"solid",borderWidth:"4px 0 4px 6px",borderColor:"transparent transparent transparent #fff",position:"absolute",top:"1px",left:"1px"},triangleBorder:{width:0,height:0,borderStyle:"solid",borderWidth:"5px 0 5px 8px",borderColor:"transparent transparent transparent #555"},left:{Extend:"triangleBorder",transform:"translate(-13px, -4px)"},leftInside:{Extend:"triangle",transform:"translate(-8px, -5px)"},right:{Extend:"triangleBorder",transform:"translate(20px, -14px) rotate(180deg)"},rightInside:{Extend:"triangle",transform:"translate(-8px, -5px)"}}});return a.createElement("div",{style:e.pointer},a.createElement("div",{style:e.left},a.createElement("div",{style:e.leftInside})),a.createElement("div",{style:e.right},a.createElement("div",{style:e.rightInside})))},w0=function(e){var t=e.onClick,i=e.label,r=e.children,o=e.active,n=Z({default:{button:{backgroundImage:"linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)",border:"1px solid #878787",borderRadius:"2px",height:"20px",boxShadow:"0 1px 0 0 #EAEAEA",fontSize:"14px",color:"#000",lineHeight:"20px",textAlign:"center",marginBottom:"10px",cursor:"pointer"}},active:{button:{boxShadow:"0 0 0 1px #878787"}}},{active:o});return a.createElement("div",{style:n.button,onClick:t},i||r)},JEe=function(e){var t=e.rgb,i=e.currentColor,r=Z({default:{swatches:{border:"1px solid #B3B3B3",borderBottom:"1px solid #F0F0F0",marginBottom:"2px",marginTop:"1px"},new:{height:"34px",background:"rgb("+t.r+","+t.g+", "+t.b+")",boxShadow:"inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000"},current:{height:"34px",background:i,boxShadow:"inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000"},label:{fontSize:"14px",color:"#000",textAlign:"center"}}});return a.createElement("div",null,a.createElement("div",{style:r.label},"new"),a.createElement("div",{style:r.swatches},a.createElement("div",{style:r.new}),a.createElement("div",{style:r.current})),a.createElement("div",{style:r.label},"current"))},BEe=(function(){function s(e,t){for(var i=0;i100&&(N.a=100),N.a/=100,t({h:r.h,s:r.s,l:r.l,a:N.a,source:"rgb"},u))};return a.createElement("div",{style:M.fields,className:"flexbox-fix"},a.createElement("div",{style:M.double},a.createElement(se,{style:{input:M.input,label:M.label},label:"hex",value:o.replace("#",""),onChange:c})),a.createElement("div",{style:M.single},a.createElement(se,{style:{input:M.input,label:M.label},label:"r",value:i.r,onChange:c,dragLabel:"true",dragMax:"255"})),a.createElement("div",{style:M.single},a.createElement(se,{style:{input:M.input,label:M.label},label:"g",value:i.g,onChange:c,dragLabel:"true",dragMax:"255"})),a.createElement("div",{style:M.single},a.createElement(se,{style:{input:M.input,label:M.label},label:"b",value:i.b,onChange:c,dragLabel:"true",dragMax:"255"})),a.createElement("div",{style:M.alpha},a.createElement(se,{style:{input:M.input,label:M.label},label:"a",value:Math.round(i.a*100),onChange:c,dragLabel:"true",dragMax:"100"})))},VEe=Object.assign||function(s){for(var e=1;e=0||Object.prototype.hasOwnProperty.call(s,i)&&(t[i]=s[i]);return t}var Vr=24,s_e=FL.default=function(s){var e=s.fill,t=e===void 0?"currentColor":e,i=s.width,r=i===void 0?Vr:i,o=s.height,n=o===void 0?Vr:o,M=s.style,c=M===void 0?{}:M,l=t_e(s,["fill","width","height","style"]);return C0.default.createElement("svg",I0({viewBox:"0 0 "+Vr+" "+Vr,style:I0({fill:t,width:r,height:n},c)},l),C0.default.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))},i_e=function(e){var t=e.color,i=e.onClick,r=i===void 0?function(){}:i,o=e.onSwatchHover,n=e.first,M=e.last,c=e.active,l=Z({default:{color:{width:"40px",height:"24px",cursor:"pointer",background:t,marginBottom:"1px"},check:{color:GM(t),marginLeft:"8px",display:"none"}},first:{color:{overflow:"hidden",borderRadius:"2px 2px 0 0"}},last:{color:{overflow:"hidden",borderRadius:"0 0 2px 2px"}},active:{check:{display:"block"}},"color-#FFFFFF":{color:{boxShadow:"inset 0 0 0 1px #ddd"},check:{color:"#333"}},transparent:{check:{color:"#333"}}},{first:n,last:M,active:c,"color-#FFFFFF":t==="#FFFFFF",transparent:t==="transparent"});return a.createElement(Ys,{color:t,style:l.color,onClick:r,onHover:o,focusStyle:{boxShadow:"0 0 4px "+t}},a.createElement("div",{style:l.check},a.createElement(s_e,null)))},r_e=function(e){var t=e.onClick,i=e.onSwatchHover,r=e.group,o=e.active,n=Z({default:{group:{paddingBottom:"10px",width:"40px",float:"left",marginRight:"10px"}}});return a.createElement("div",{style:n.group},Qs(r,function(M,c){return a.createElement(i_e,{key:M,color:M,active:M.toLowerCase()===o,first:c===0,last:c===r.length-1,onClick:t,onSwatchHover:i})}))},nc=function(e){var t=e.width,i=e.height,r=e.onChange,o=e.onSwatchHover,n=e.colors,M=e.hex,c=e.styles,l=c===void 0?{}:c,N=e.className,u=N===void 0?"":N,L=Z(Ve({default:{picker:{width:t,height:i},overflow:{height:i,overflowY:"scroll"},body:{padding:"16px 0 6px 16px"},clear:{clear:"both"}}},l)),g=function(y,T){return r({hex:y,source:"hex"},T)};return a.createElement("div",{style:L.picker,className:"swatches-picker "+u},a.createElement(vr,null,a.createElement("div",{style:L.overflow},a.createElement("div",{style:L.body},Qs(n,function(j){return a.createElement(r_e,{key:j.toString(),group:j,active:M,onClick:g,onSwatchHover:o})}),a.createElement("div",{style:L.clear})))))};nc.propTypes={width:_.oneOfType([_.string,_.number]),height:_.oneOfType([_.string,_.number]),colors:_.arrayOf(_.arrayOf(_.string)),styles:_.object};nc.defaultProps={width:320,height:240,colors:[[Hs[900],Hs[700],Hs[500],Hs[300],Hs[100]],[Vs[900],Vs[700],Vs[500],Vs[300],Vs[100]],[Zs[900],Zs[700],Zs[500],Zs[300],Zs[100]],[Xs[900],Xs[700],Xs[500],Xs[300],Xs[100]],[Ks[900],Ks[700],Ks[500],Ks[300],Ks[100]],[qs[900],qs[700],qs[500],qs[300],qs[100]],[ei[900],ei[700],ei[500],ei[300],ei[100]],[ti[900],ti[700],ti[500],ti[300],ti[100]],[si[900],si[700],si[500],si[300],si[100]],["#194D33",tr[700],tr[500],tr[300],tr[100]],[ii[900],ii[700],ii[500],ii[300],ii[100]],[ri[900],ri[700],ri[500],ri[300],ri[100]],[oi[900],oi[700],oi[500],oi[300],oi[100]],[ni[900],ni[700],ni[500],ni[300],ni[100]],[ai[900],ai[700],ai[500],ai[300],ai[100]],[Mi[900],Mi[700],Mi[500],Mi[300],Mi[100]],[ci[900],ci[700],ci[500],ci[300],ci[100]],[ui[900],ui[700],ui[500],ui[300],ui[100]],["#000000","#525252","#969696","#D9D9D9","#FFFFFF"]],styles:{}};Ze(nc);var ac=function(e){var t=e.onChange,i=e.onSwatchHover,r=e.hex,o=e.colors,n=e.width,M=e.triangle,c=e.styles,l=c===void 0?{}:c,N=e.className,u=N===void 0?"":N,L=Z(Ve({default:{card:{width:n,background:"#fff",border:"0 solid rgba(0,0,0,0.25)",boxShadow:"0 1px 4px rgba(0,0,0,0.25)",borderRadius:"4px",position:"relative"},body:{padding:"15px 9px 9px 15px"},label:{fontSize:"18px",color:"#fff"},triangle:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 9px 10px 9px",borderColor:"transparent transparent #fff transparent",position:"absolute"},triangleShadow:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 9px 10px 9px",borderColor:"transparent transparent rgba(0,0,0,.1) transparent",position:"absolute"},hash:{background:"#F0F0F0",height:"30px",width:"30px",borderRadius:"4px 0 0 4px",float:"left",color:"#98A1A4",display:"flex",alignItems:"center",justifyContent:"center"},input:{width:"100px",fontSize:"14px",color:"#666",border:"0px",outline:"none",height:"28px",boxShadow:"inset 0 0 0 1px #F0F0F0",boxSizing:"content-box",borderRadius:"0 4px 4px 0",float:"left",paddingLeft:"8px"},swatch:{width:"30px",height:"30px",float:"left",borderRadius:"4px",margin:"0 6px 6px 0"},clear:{clear:"both"}},"hide-triangle":{triangle:{display:"none"},triangleShadow:{display:"none"}},"top-left-triangle":{triangle:{top:"-10px",left:"12px"},triangleShadow:{top:"-11px",left:"12px"}},"top-right-triangle":{triangle:{top:"-10px",right:"12px"},triangleShadow:{top:"-11px",right:"12px"}}},l),{"hide-triangle":M==="hide","top-left-triangle":M==="top-left","top-right-triangle":M==="top-right"}),g=function(y,T){Ls(y)&&t({hex:y,source:"hex"},T)};return a.createElement("div",{style:L.card,className:"twitter-picker "+u},a.createElement("div",{style:L.triangleShadow}),a.createElement("div",{style:L.triangle}),a.createElement("div",{style:L.body},Qs(o,function(j,y){return a.createElement(Ys,{key:y,color:j,hex:j,style:L.swatch,onClick:g,onHover:i,focusStyle:{boxShadow:"0 0 4px "+j}})}),a.createElement("div",{style:L.hash},"#"),a.createElement(se,{label:null,style:{input:L.input},value:r.replace("#",""),onChange:g}),a.createElement("div",{style:L.clear})))};ac.propTypes={width:_.oneOfType([_.string,_.number]),triangle:_.oneOf(["hide","top-left","top-right"]),colors:_.arrayOf(_.string),styles:_.object};ac.defaultProps={width:276,colors:["#FF6900","#FCB900","#7BDCB5","#00D084","#8ED1FC","#0693E3","#ABB8C3","#EB144C","#F78DA7","#9900EF"],triangle:"top-left",styles:{}};Ze(ac);var Mc=function(e){var t=Z({default:{picker:{width:"20px",height:"20px",borderRadius:"22px",border:"2px #fff solid",transform:"translate(-12px, -13px)",background:"hsl("+Math.round(e.hsl.h)+", "+Math.round(e.hsl.s*100)+"%, "+Math.round(e.hsl.l*100)+"%)"}}});return a.createElement("div",{style:t.picker})};Mc.propTypes={hsl:_.shape({h:_.number,s:_.number,l:_.number,a:_.number})};Mc.defaultProps={hsl:{a:1,h:249.94,l:.2,s:.5}};var cc=function(e){var t=Z({default:{picker:{width:"20px",height:"20px",borderRadius:"22px",transform:"translate(-10px, -7px)",background:"hsl("+Math.round(e.hsl.h)+", 100%, 50%)",border:"2px white solid"}}});return a.createElement("div",{style:t.picker})};cc.propTypes={hsl:_.shape({h:_.number,s:_.number,l:_.number,a:_.number})};cc.defaultProps={hsl:{a:1,h:249.94,l:.2,s:.5}};var o_e=function(e){var t=e.onChange,i=e.rgb,r=e.hsl,o=e.hex,n=e.hsv,M=function(g,j){if(g.hex)Ls(g.hex)&&t({hex:g.hex,source:"hex"},j);else if(g.rgb){var y=g.rgb.split(",");vn(g.rgb,"rgb")&&t({r:y[0],g:y[1],b:y[2],a:1,source:"rgb"},j)}else if(g.hsv){var T=g.hsv.split(",");vn(g.hsv,"hsv")&&(T[2]=T[2].replace("%",""),T[1]=T[1].replace("%",""),T[0]=T[0].replace("°",""),T[1]==1?T[1]=.01:T[2]==1&&(T[2]=.01),t({h:Number(T[0]),s:Number(T[1]),v:Number(T[2]),source:"hsv"},j))}else if(g.hsl){var d=g.hsl.split(",");vn(g.hsl,"hsl")&&(d[2]=d[2].replace("%",""),d[1]=d[1].replace("%",""),d[0]=d[0].replace("°",""),u[1]==1?u[1]=.01:u[2]==1&&(u[2]=.01),t({h:Number(d[0]),s:Number(d[1]),v:Number(d[2]),source:"hsl"},j))}},c=Z({default:{wrap:{display:"flex",height:"100px",marginTop:"4px"},fields:{width:"100%"},column:{paddingTop:"10px",display:"flex",justifyContent:"space-between"},double:{padding:"0px 4.4px",boxSizing:"border-box"},input:{width:"100%",height:"38px",boxSizing:"border-box",padding:"4px 10% 3px",textAlign:"center",border:"1px solid #dadce0",fontSize:"11px",textTransform:"lowercase",borderRadius:"5px",outline:"none",fontFamily:"Roboto,Arial,sans-serif"},input2:{height:"38px",width:"100%",border:"1px solid #dadce0",boxSizing:"border-box",fontSize:"11px",textTransform:"lowercase",borderRadius:"5px",outline:"none",paddingLeft:"10px",fontFamily:"Roboto,Arial,sans-serif"},label:{textAlign:"center",fontSize:"12px",background:"#fff",position:"absolute",textTransform:"uppercase",color:"#3c4043",width:"35px",top:"-6px",left:"0",right:"0",marginLeft:"auto",marginRight:"auto",fontFamily:"Roboto,Arial,sans-serif"},label2:{left:"10px",textAlign:"center",fontSize:"12px",background:"#fff",position:"absolute",textTransform:"uppercase",color:"#3c4043",width:"32px",top:"-6px",fontFamily:"Roboto,Arial,sans-serif"},single:{flexGrow:"1",margin:"0px 4.4px"}}}),l=i.r+", "+i.g+", "+i.b,N=Math.round(r.h)+"°, "+Math.round(r.s*100)+"%, "+Math.round(r.l*100)+"%",u=Math.round(n.h)+"°, "+Math.round(n.s*100)+"%, "+Math.round(n.v*100)+"%";return a.createElement("div",{style:c.wrap,className:"flexbox-fix"},a.createElement("div",{style:c.fields},a.createElement("div",{style:c.double},a.createElement(se,{style:{input:c.input,label:c.label},label:"hex",value:o,onChange:M})),a.createElement("div",{style:c.column},a.createElement("div",{style:c.single},a.createElement(se,{style:{input:c.input2,label:c.label2},label:"rgb",value:l,onChange:M})),a.createElement("div",{style:c.single},a.createElement(se,{style:{input:c.input2,label:c.label2},label:"hsv",value:u,onChange:M})),a.createElement("div",{style:c.single},a.createElement(se,{style:{input:c.input2,label:c.label2},label:"hsl",value:N,onChange:M})))))},uc=function(e){var t=e.width,i=e.onChange,r=e.rgb,o=e.hsl,n=e.hsv,M=e.hex,c=e.header,l=e.styles,N=l===void 0?{}:l,u=e.className,L=u===void 0?"":u,g=Z(Ve({default:{picker:{width:t,background:"#fff",border:"1px solid #dfe1e5",boxSizing:"initial",display:"flex",flexWrap:"wrap",borderRadius:"8px 8px 0px 0px"},head:{height:"57px",width:"100%",paddingTop:"16px",paddingBottom:"16px",paddingLeft:"16px",fontSize:"20px",boxSizing:"border-box",fontFamily:"Roboto-Regular,HelveticaNeue,Arial,sans-serif"},saturation:{width:"70%",padding:"0px",position:"relative",overflow:"hidden"},swatch:{width:"30%",height:"228px",padding:"0px",background:"rgba("+r.r+", "+r.g+", "+r.b+", 1)",position:"relative",overflow:"hidden"},body:{margin:"auto",width:"95%"},controls:{display:"flex",boxSizing:"border-box",height:"52px",paddingTop:"22px"},color:{width:"32px"},hue:{height:"8px",position:"relative",margin:"0px 16px 0px 16px",width:"100%"},Hue:{radius:"2px"}}},N));return a.createElement("div",{style:g.picker,className:"google-picker "+L},a.createElement("div",{style:g.head},c),a.createElement("div",{style:g.swatch}),a.createElement("div",{style:g.saturation},a.createElement(nn,{hsl:o,hsv:n,pointer:Mc,onChange:i})),a.createElement("div",{style:g.body},a.createElement("div",{style:g.controls,className:"flexbox-fix"},a.createElement("div",{style:g.hue},a.createElement(Yi,{style:g.Hue,hsl:o,radius:"4px",pointer:cc,onChange:i}))),a.createElement(o_e,{rgb:r,hsl:o,hex:M,hsv:n,onChange:i})))};uc.propTypes={width:_.oneOfType([_.string,_.number]),styles:_.object,header:_.string};uc.defaultProps={width:652,styles:{},header:"Color picker"};Ze(uc);const ut={color:{width:36,height:14,borderRadius:2},delButton:{marginTop:16},swatch:{mt:"16px",p:"5px",backgroundColor:"background.paper",borderRadius:"1px",boxShadow:"0 0 0 1px rgba(0,0,0,.1)",display:"inline-block",cursor:"pointer",verticalAlign:"middle"},swatchDisabled:{opacity:.5,cursor:"default"},popover:{"& .MuiPaper-root":{textAlign:"right",backgroundColor:"#00000000",boxShadow:"none"}},popoverList:{padding:0},closeButton:s=>({backgroundColor:`${s.palette.background.paper} !important`,borderRadius:"0 0 25% 25%","&:hover":{backgroundColor:`${s.palette.secondary.main} !important`}}),textDense:{mt:0,mb:0},iconButton:{width:16,height:16},button:{width:32,height:32,minWidth:32,minHeight:32}};class sr extends De{constructor(e){super(e),this.state={displayColorPicker:!1,color:this.props.value||this.props.color||"",anchorEl:null}}handleClick=e=>{this.setState({displayColorPicker:!this.state.displayColorPicker,anchorEl:this.state.displayColorPicker?null:e.currentTarget})};handleClose=()=>{this.setState({displayColorPicker:!1,anchorEl:null})};static getColor(e,t){if(e&&typeof e=="object"){const i=e;if(i.rgb)return t?`#${i.rgb.r.toString(16).padStart(2,"0")}${i.rgb.g.toString(16).padStart(2,"0")}${i.rgb.b.toString(16).padStart(2,"0")}`:`rgba(${i.rgb.r},${i.rgb.g},${i.rgb.b},${i.rgb.a})`;const r=e;return t?`#${r.r.toString(16).padStart(2,"0")}${r.g.toString(16).padStart(2,"0")}${r.b.toString(16).padStart(2,"0")}`:`rgba(${r.r},${r.g},${r.b},${r.a})`}return typeof e=="string"?t?sr.rgb2hex(e||""):e||"":""}static rgb2hex(e){const t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(t){const i=parseInt(t[1],10).toString(16).padStart(2,"0"),r=parseInt(t[2],10).toString(16).padStart(2,"0"),o=parseInt(t[3],10).toString(16).padStart(2,"0");return(t==null?void 0:t.length)===4?`#${i}${r}${o}`:e}return e}handleChange=e=>{this.setState({color:e},()=>this.props.onChange&&this.props.onChange(sr.getColor(e)))};componentDidUpdate(e,t){const i=sr.getColor(this.props.color||this.props.value||"");i!==t.color&&this.setState({color:i})}renderCustomPalette(){return this.props.customPalette?a.createElement("div",{style:{width:"100%",display:"flex",flexWrap:"wrap"}},this.props.customPalette.map(e=>a.createElement(q,{style:ut.button,key:e,onClick:()=>{this.handleChange(e),setTimeout(()=>this.handleClose(),300)}},a.createElement("div",{style:{...ut.iconButton,background:e}})))):null}render(){var i;const e={...this.props.style||{}};e.position="relative";const{color:t}=this.state;return a.createElement(J,{component:"div",style:e,sx:this.props.sx||void 0,className:this.props.className||""},this.props.noInputField?null:a.createElement(Te,{disabled:this.props.disabled,variant:"standard",id:"ar_color_picker_name",label:this.props.label||this.props.name,value:t||"",margin:"dense",sx:{"&.MuiFormControl-root":ut.textDense,width:t?"calc(100% - 80px)":"calc(100% - 56px)",mr:t?void 0:1},onChange:r=>this.handleChange(r.target.value)}),!this.props.noInputField&&t?a.createElement(W,{disabled:this.props.disabled,onClick:()=>this.handleChange(""),size:"small",style:this.props.label||this.props.name?ut.delButton:void 0},a.createElement(wt,null)):null,a.createElement(J,{component:"div",onClick:r=>!this.props.disabled&&this.handleClick(r),title:D.t("ra_Select color"),sx:{...ut.swatch,...this.props.disabled?ut.swatchDisabled:void 0,background:t?void 0:"transparent",border:t?void 0:"1px dashed #ccc",boxSizing:"border-box",marginTop:this.props.noInputField||!(this.props.label||this.props.name)?0:void 0}},a.createElement("div",{style:{...ut.color,background:sr.getColor(t),width:this.props.noInputField?this.props.barWidth||16:this.props.barWidth||36}})),this.state.displayColorPicker&&!this.props.disabled?a.createElement(ws,{sx:{...ut.popover,"&. MuiMenu-list":ut.popoverList},anchorEl:this.state.anchorEl,open:!0,onClose:()=>this.handleClose()},a.createElement(xEe,{color:this.state.color||void 0,onChangeComplete:r=>this.handleChange(r.rgb),styles:{default:{picker:{backgroundColor:((i=this.props.theme)==null?void 0:i.palette.background.paper)||"#888"}}}}),t&&this.props.noInputField?a.createElement(W,{sx:ut.closeButton,onClick:()=>this.handleChange("")},a.createElement(wt,null)):null,a.createElement(W,{sx:ut.closeButton,onClick:()=>this.handleClose()},a.createElement(we,null)),this.renderCustomPalette()):null)}}var GL={exports:{}};(function(s,e){(function(i,r){s.exports=r()})(globalThis,()=>(()=>{var t={949(n,M,c){Object.defineProperty(M,"__esModule",{value:!0}),M.CronParser=void 0;var l=c(515),N=(function(){function u(L,g,j){g===void 0&&(g=!0),j===void 0&&(j=!1),this.expression=L,this.dayOfWeekStartIndexZero=g,this.monthStartIndexZero=j}return u.prototype.parse=function(){var L,g,j=(L=this.expression)!==null&&L!==void 0?L:"";if(j==="@reboot")return g=["@reboot","","","","","",""],g;if(j.startsWith("@")){var y=this.parseSpecial(this.expression);g=this.extractParts(y)}else g=this.extractParts(this.expression);return this.normalize(g),this.validate(g),g},u.prototype.parseSpecial=function(L){var g={"@yearly":"0 0 1 1 *","@annually":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *","@reboot":"@reboot"},j=g[L];if(!j)throw new Error("Unknown special expression.");return j},u.prototype.extractParts=function(L){if(!this.expression)throw new Error("cron expression is empty");for(var g=L.trim().split(/[ ]+/),j=0;j7)throw new Error("Expression has ".concat(g.length," parts; too many!"));return g},u.prototype.normalize=function(L){var g=this;if(L[3]=L[3].replace("?","*"),L[5]=L[5].replace("?","*"),L[2]=L[2].replace("?","*"),L[0].indexOf("0/")==0&&(L[0]=L[0].replace("0/","*/")),L[1].indexOf("0/")==0&&(L[1]=L[1].replace("0/","*/")),L[2].indexOf("0/")==0&&(L[2]=L[2].replace("0/","*/")),L[3].indexOf("1/")==0&&(L[3]=L[3].replace("1/","*/")),L[4].indexOf("1/")==0&&(L[4]=L[4].replace("1/","*/")),L[6].indexOf("1/")==0&&(L[6]=L[6].replace("1/","*/")),L[5]=L[5].replace(/(^\d)|([^#/\s]\d)/g,function(p){var h=p.replace(/\D/,""),C=h;return g.dayOfWeekStartIndexZero?h=="7"&&(C="0"):C=(parseInt(h)-1).toString(),p.replace(h,C)}),L[5]=="L"&&(L[5]="6"),L[3]=="?"&&(L[3]="*"),L[3].indexOf("W")>-1&&(L[3].indexOf(",")>-1||L[3].indexOf("-")>-1))throw new Error("The 'W' character can be specified only when the day-of-month is a single day, not a range or list of days.");var j={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6};for(var y in j)L[5]=L[5].replace(new RegExp(y,"gi"),j[y].toString());L[4]=L[4].replace(/(^\d{1,2})|([^#/\s]\d{1,2})/g,function(p){var h=p.replace(/\D/,""),C=h;return g.monthStartIndexZero&&(C=(parseInt(h)+1).toString()),p.replace(h,C)});var T={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12};for(var d in T)L[4]=L[4].replace(new RegExp(d,"gi"),T[d].toString());L[0]=="0"&&(L[0]=""),!/\*|\-|\,|\//.test(L[2])&&(/\*|\//.test(L[1])||/\*|\//.test(L[0]))&&(L[2]+="-".concat(L[2]));for(var I=0;I-1&&!/^\*|\-|\,/.test(L[I])){var w=null;switch(I){case 4:w="12";break;case 5:w="6";break;case 6:w="9999";break;default:w=null;break}if(w!==null){var A=L[I].split("/");L[I]="".concat(A[0],"-").concat(w,"/").concat(A[1])}}},u.prototype.validate=function(L){var g="0-9,\\-*/";this.validateOnlyExpectedCharactersFound(L[0],g),this.validateOnlyExpectedCharactersFound(L[1],g),this.validateOnlyExpectedCharactersFound(L[2],g),this.validateOnlyExpectedCharactersFound(L[3],"0-9,\\-*/LW"),this.validateOnlyExpectedCharactersFound(L[4],g),this.validateOnlyExpectedCharactersFound(L[5],"0-9,\\-*/L#"),this.validateOnlyExpectedCharactersFound(L[6],g),this.validateAnyRanges(L)},u.prototype.validateAnyRanges=function(L){l.default.secondRange(L[0]),l.default.minuteRange(L[1]),l.default.hourRange(L[2]),l.default.dayOfMonthRange(L[3]),l.default.monthRange(L[4],this.monthStartIndexZero),l.default.dayOfWeekRange(L[5],this.dayOfWeekStartIndexZero)},u.prototype.validateOnlyExpectedCharactersFound=function(L,g){var j=L.match(new RegExp("[^".concat(g,"]+"),"gi"));if(j&&j.length)throw new Error("Expression contains invalid values: '".concat(j.toString(),"'"))},u})();M.CronParser=N},333(n,M,c){Object.defineProperty(M,"__esModule",{value:!0}),M.ExpressionDescriptor=void 0;var l=c(823),N=c(949),u=(function(){function L(g,j){if(this.expression=g,this.options=j,this.expressionParts=new Array(5),!this.options.locale&&L.defaultLocale&&(this.options.locale=L.defaultLocale),!L.locales[this.options.locale]){var y=Object.keys(L.locales)[0];console.warn("Locale '".concat(this.options.locale,"' could not be found; falling back to '").concat(y,"'.")),this.options.locale=y}this.i18n=L.locales[this.options.locale],j.use24HourTimeFormat===void 0&&(j.use24HourTimeFormat=this.i18n.use24HourTimeFormatByDefault())}return L.toString=function(g,j){var y=j===void 0?{}:j,T=y.throwExceptionOnParseError,d=T===void 0?!0:T,I=y.verbose,w=I===void 0?!1:I,A=y.dayOfWeekStartIndexZero,p=A===void 0?!0:A,h=y.monthStartIndexZero,C=h===void 0?!1:h,E=y.use24HourTimeFormat,O=y.trimHoursLeadingZero,b=O===void 0?!1:O,k=y.locale,K=k===void 0?null:k,x=y.logicalAndDayFields,S=x===void 0?!1:x,R={throwExceptionOnParseError:d,verbose:w,dayOfWeekStartIndexZero:p,monthStartIndexZero:C,use24HourTimeFormat:E,trimHoursLeadingZero:b,locale:K,logicalAndDayFields:S};R.tzOffset&&console.warn("'tzOffset' option has been deprecated and is no longer supported.");var he=new L(g,R);return he.getFullDescription()},L.initialize=function(g,j){j===void 0&&(j="en"),L.specialCharacters=["/","-",",","*"],L.defaultLocale=j,g.load(L.locales)},L.prototype.getFullDescription=function(){var g,j,y="";try{var T=new N.CronParser(this.expression,this.options.dayOfWeekStartIndexZero,this.options.monthStartIndexZero);if(this.expressionParts=T.parse(),this.expressionParts[0]==="@reboot")return((j=(g=this.i18n).atReboot)===null||j===void 0?void 0:j.call(g))||"Run once, at startup";var d=this.getTimeOfDayDescription(),I=this.getDayOfMonthDescription(),w=this.getMonthDescription(),A=this.getDayOfWeekDescription(),p=this.getYearDescription();y+=d+I+A+w+p,y=this.transformVerbosity(y,!!this.options.verbose),y=y.charAt(0).toLocaleUpperCase()+y.substr(1)}catch(h){if(!this.options.throwExceptionOnParseError)y=this.i18n.anErrorOccuredWhenGeneratingTheExpressionD();else throw"".concat(h)}return y},L.prototype.getTimeOfDayDescription=function(){var g=this.expressionParts[0],j=this.expressionParts[1],y=this.expressionParts[2],T="";if(!l.StringUtilities.containsAny(j,L.specialCharacters)&&!l.StringUtilities.containsAny(y,L.specialCharacters)&&!l.StringUtilities.containsAny(g,L.specialCharacters))T+=this.i18n.atSpace()+this.formatTime(y,j,g);else if(!g&&j.indexOf("-")>-1&&!(j.indexOf(",")>-1)&&!(j.indexOf("/")>-1)&&!l.StringUtilities.containsAny(y,L.specialCharacters)){var d=j.split("-");T+=l.StringUtilities.format(this.i18n.everyMinuteBetweenX0AndX1(),this.formatTime(y,d[0],""),this.formatTime(y,d[1],""))}else if(!g&&y.indexOf(",")>-1&&y.indexOf("-")==-1&&y.indexOf("/")==-1&&!l.StringUtilities.containsAny(j,L.specialCharacters)){var I=y.split(",");T+=this.i18n.at();for(var w=0;w-1?I=T.substring(0,T.indexOf("#")):T.indexOf("L")>-1&&(I=I.replace("L",""));var w=parseInt(I),A=g.i18n.daysOfTheWeekInCase?g.i18n.daysOfTheWeekInCase(d)[w]:j[w];if(T.indexOf("#")>-1){var p=null,h=T.substring(T.indexOf("#")+1),C=T.substring(0,T.indexOf("#"));switch(h){case"1":p=g.i18n.first(C);break;case"2":p=g.i18n.second(C);break;case"3":p=g.i18n.third(C);break;case"4":p=g.i18n.fourth(C);break;case"5":p=g.i18n.fifth(C);break}A=p+" "+A}return A},function(T){return parseInt(T)==1?"":l.StringUtilities.format(g.i18n.commaEveryX0DaysOfTheWeek(T),T)},function(T){var d=T.substring(0,T.indexOf("-")),I=g.expressionParts[3]!="*";return I?g.i18n.commaAndX0ThroughX1(d):g.i18n.commaX0ThroughX1(d)},function(T){var d=null;if(T.indexOf("#")>-1){var I=T.substring(T.indexOf("#")+1),w=T.substring(0,T.indexOf("#"));d=g.i18n.commaOnThe(I,w).trim()+g.i18n.spaceX0OfTheMonth()}else if(T.indexOf("L")>-1)d=g.i18n.commaOnTheLastX0OfTheMonth(T.replace("L",""));else{var A=g.expressionParts[3]!="*";A?g.options.logicalAndDayFields?d=g.i18n.commaOnlyOnX0(T):d=g.i18n.commaAndOnX0():d=g.i18n.commaOnlyOnX0(T)}return d}),y},L.prototype.getMonthDescription=function(){var g=this,j=this.i18n.monthsOfTheYear(),y=this.getSegmentDescription(this.expressionParts[4],"",function(T,d){return d&&g.i18n.monthsOfTheYearInCase?g.i18n.monthsOfTheYearInCase(d)[parseInt(T)-1]:j[parseInt(T)-1]},function(T){return parseInt(T)==1?"":l.StringUtilities.format(g.i18n.commaEveryX0Months(T),T)},function(T){return g.i18n.commaMonthX0ThroughMonthX1()||g.i18n.commaX0ThroughX1()},function(T){return g.i18n.commaOnlyInMonthX0?g.i18n.commaOnlyInMonthX0():g.i18n.commaOnlyInX0()});return y},L.prototype.getDayOfMonthDescription=function(){var g=this,j=null,y=this.expressionParts[3];switch(y){case"L":j=this.i18n.commaOnTheLastDayOfTheMonth();break;case"WL":case"LW":j=this.i18n.commaOnTheLastWeekdayOfTheMonth();break;default:var T=y.match(/(\d{1,2}W)|(W\d{1,2})/);if(T){var d=parseInt(T[0].replace("W","")),I=d==1?this.i18n.firstWeekday():l.StringUtilities.format(this.i18n.weekdayNearestDayX0(),d.toString());j=l.StringUtilities.format(this.i18n.commaOnTheX0OfTheMonth(),I);break}else{var w=y.match(/L-(\d{1,2})/);if(w){var A=w[1];j=l.StringUtilities.format(this.i18n.commaDaysBeforeTheLastDayOfTheMonth(A),A);break}else{if(y=="*"&&this.expressionParts[5]!="*")return"";j=this.getSegmentDescription(y,this.i18n.commaEveryDay(),function(p){return p=="L"?g.i18n.lastDay():g.i18n.dayX0?l.StringUtilities.format(g.i18n.dayX0(),p):p},function(p){return p=="1"?g.i18n.commaEveryDay():g.i18n.commaEveryX0Days(p)},function(p){return g.i18n.commaBetweenDayX0AndX1OfTheMonth(p)},function(p){return g.i18n.commaOnDayX0OfTheMonth(p)})}break}}return j},L.prototype.getYearDescription=function(){var g=this,j=this.getSegmentDescription(this.expressionParts[6],"",function(y){return/^\d+$/.test(y)?new Date(parseInt(y),1).getFullYear().toString():y},function(y){return l.StringUtilities.format(g.i18n.commaEveryX0Years(y),y)},function(y){return g.i18n.commaYearX0ThroughYearX1()||g.i18n.commaX0ThroughX1()},function(y){return g.i18n.commaOnlyInYearX0?g.i18n.commaOnlyInYearX0():g.i18n.commaOnlyInX0()});return j},L.prototype.getSegmentDescription=function(g,j,y,T,d,I){var w=null,A=g.indexOf("/")>-1,p=g.indexOf("-")>-1,h=g.indexOf(",")>-1;if(!g)w="";else if(g==="*")w=j;else if(!A&&!p&&!h)w=l.StringUtilities.format(I(g),y(g));else if(h){for(var C=g.split(","),E="",O=0;O0&&C.length>2&&(E+=",",O0&&C.length>1&&(O==C.length-1||C.length==2)&&(E+="".concat(this.i18n.spaceAnd()," ")),C[O].indexOf("/")>-1||C[O].indexOf("-")>-1){var b=C[O].indexOf("-")>-1&&C[O].indexOf("/")==-1,k=this.getSegmentDescription(C[O],j,y,T,b?this.i18n.commaX0ThroughX1:d,I);b&&(k=k.replace(", ","")),E+=k}else if(!A)E+=y(C[O]);else{var K=this.getSegmentDescription(C[O],j,y,T,d,I);K&&K.startsWith(", ")&&(K=K.substring(2)),E+=K}A?w=E:w=l.StringUtilities.format(I(g),E)}else if(A){var C=g.split("/");if(w=l.StringUtilities.format(T(C[1]),C[1]),C[0].indexOf("-")>-1){var x=this.generateRangeSegmentDescription(C[0],d,y);x.indexOf(", ")!=0&&(w+=", "),w+=x}else if(C[0].indexOf("*")==-1){var S=l.StringUtilities.format(I(C[0]),y(C[0]));S=S.replace(", ",""),w+=l.StringUtilities.format(this.i18n.commaStartingX0(),S)}}else p&&(w=this.generateRangeSegmentDescription(g,d,y));return w},L.prototype.generateRangeSegmentDescription=function(g,j,y){var T="",d=g.split("-"),I=y(d[0],1),w=y(d[1],2),A=j(g);return T+=l.StringUtilities.format(A,I,w),T},L.prototype.formatTime=function(g,j,y){var T=0,d=0,I=parseInt(g)+T,w=parseInt(j)+d;w>=60?(w-=60,I+=1):w<0&&(w+=60,I-=1),I>=24?I=I-24:I<0&&(I=24+I);var A="",p=!1;this.options.use24HourTimeFormat||(p=!!(this.i18n.setPeriodBeforeTime&&this.i18n.setPeriodBeforeTime()),A=p?"".concat(this.getPeriod(I)," "):" ".concat(this.getPeriod(I)),I>12&&(I-=12),I===0&&(I=12));var h="";y&&(h=":".concat(("00"+y).substring(y.length)));var C=I.toString(),E=("00"+C).substring(C.length),O=w.toString(),b=("00"+O).substring(O.length),k=this.options.trimHoursLeadingZero?C:E;return"".concat(p?A:"").concat(k,":").concat(b).concat(h).concat(p?"":A)},L.prototype.transformVerbosity=function(g,j){if(!j&&(g=g.replace(new RegExp(", ".concat(this.i18n.everyMinute()),"g"),""),g=g.replace(new RegExp(", ".concat(this.i18n.everyHour()),"g"),""),g=g.replace(new RegExp(this.i18n.commaEveryDay(),"g"),""),g=g.replace(/\, ?$/,""),this.i18n.conciseVerbosityReplacements))for(var y=0,T=Object.entries(this.i18n.conciseVerbosityReplacements());y=12?this.i18n.pm&&this.i18n.pm()||"PM":this.i18n.am&&this.i18n.am()||"AM"},L.locales={},L})();M.ExpressionDescriptor=u},747(n,M,c){Object.defineProperty(M,"__esModule",{value:!0}),M.enLocaleLoader=void 0;var l=c(486),N=(function(){function u(){}return u.prototype.load=function(L){L.en=new l.en},u})();M.enLocaleLoader=N},486(n,M){Object.defineProperty(M,"__esModule",{value:!0}),M.en=void 0;var c=(function(){function l(){}return l.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},l.prototype.atX0MinutesPastTheHourGt20=function(){return null},l.prototype.commaMonthX0ThroughMonthX1=function(){return null},l.prototype.commaYearX0ThroughYearX1=function(){return null},l.prototype.use24HourTimeFormatByDefault=function(){return!1},l.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"An error occurred when generating the expression description. Check the cron expression syntax."},l.prototype.everyMinute=function(){return"every minute"},l.prototype.everyHour=function(){return"every hour"},l.prototype.atSpace=function(){return"At "},l.prototype.everyMinuteBetweenX0AndX1=function(){return"Every minute between %s and %s"},l.prototype.at=function(){return"At"},l.prototype.spaceAnd=function(){return" and"},l.prototype.everySecond=function(){return"every second"},l.prototype.everyX0Seconds=function(){return"every %s seconds"},l.prototype.secondsX0ThroughX1PastTheMinute=function(){return"seconds %s through %s past the minute"},l.prototype.atX0SecondsPastTheMinute=function(){return"at %s seconds past the minute"},l.prototype.everyX0Minutes=function(){return"every %s minutes"},l.prototype.minutesX0ThroughX1PastTheHour=function(){return"minutes %s through %s past the hour"},l.prototype.atX0MinutesPastTheHour=function(){return"at %s minutes past the hour"},l.prototype.everyX0Hours=function(){return"every %s hours"},l.prototype.betweenX0AndX1=function(){return"between %s and %s"},l.prototype.atX0=function(){return"at %s"},l.prototype.commaEveryDay=function(){return", every day"},l.prototype.commaEveryX0DaysOfTheWeek=function(){return", every %s days of the week"},l.prototype.commaX0ThroughX1=function(){return", %s through %s"},l.prototype.commaAndX0ThroughX1=function(){return", %s through %s"},l.prototype.first=function(){return"first"},l.prototype.second=function(){return"second"},l.prototype.third=function(){return"third"},l.prototype.fourth=function(){return"fourth"},l.prototype.fifth=function(){return"fifth"},l.prototype.commaOnThe=function(){return", on the "},l.prototype.spaceX0OfTheMonth=function(){return" %s of the month"},l.prototype.lastDay=function(){return"the last day"},l.prototype.commaOnTheLastX0OfTheMonth=function(){return", on the last %s of the month"},l.prototype.commaOnlyOnX0=function(){return", only on %s"},l.prototype.commaAndOnX0=function(){return", and on %s"},l.prototype.commaEveryX0Months=function(){return", every %s months"},l.prototype.commaOnlyInX0=function(){return", only in %s"},l.prototype.commaOnTheLastDayOfTheMonth=function(){return", on the last day of the month"},l.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", on the last weekday of the month"},l.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s days before the last day of the month"},l.prototype.firstWeekday=function(){return"first weekday"},l.prototype.weekdayNearestDayX0=function(){return"weekday nearest day %s"},l.prototype.commaOnTheX0OfTheMonth=function(){return", on the %s of the month"},l.prototype.commaEveryX0Days=function(){return", every %s days in a month"},l.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", between day %s and %s of the month"},l.prototype.commaOnDayX0OfTheMonth=function(){return", on day %s of the month"},l.prototype.commaEveryHour=function(){return", every hour"},l.prototype.commaEveryX0Years=function(){return", every %s years"},l.prototype.commaStartingX0=function(){return", starting %s"},l.prototype.daysOfTheWeek=function(){return["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},l.prototype.monthsOfTheYear=function(){return["January","February","March","April","May","June","July","August","September","October","November","December"]},l.prototype.atReboot=function(){return"Run once, at startup"},l.prototype.onTheHour=function(){return"on the hour"},l})();M.en=c},515(n,M){Object.defineProperty(M,"__esModule",{value:!0});function c(N,u){if(!N)throw new Error(u)}var l=(function(){function N(){}return N.secondRange=function(u){for(var L=u.split(","),g=0;g=0&&j<=59,"seconds part must be >= 0 and <= 59")}},N.minuteRange=function(u){for(var L=u.split(","),g=0;g=0&&j<=59,"minutes part must be >= 0 and <= 59")}},N.hourRange=function(u){for(var L=u.split(","),g=0;g=0&&j<=23,"hours part must be >= 0 and <= 23")}},N.dayOfMonthRange=function(u){for(var L=u.split(","),g=0;g=1&&j<=31,"DOM part must be >= 1 and <= 31")}},N.monthRange=function(u,L){for(var g=u.split(","),j=0;j=1&&y<=12,L?"month part must be >= 0 and <= 11":"month part must be >= 1 and <= 12")}},N.dayOfWeekRange=function(u,L){for(var g=u.split(","),j=0;j=0&&y<=6,L?"DOW part must be >= 0 and <= 6":"DOW part must be >= 1 and <= 7")}},N})();M.default=l},823(n,M){Object.defineProperty(M,"__esModule",{value:!0}),M.StringUtilities=void 0;var c=(function(){function l(){}return l.format=function(N){for(var u=[],L=1;L-1})},l})();M.StringUtilities=c}},i={};function r(n){var M=i[n];if(M!==void 0)return M.exports;var c=i[n]={exports:{}};return t[n](c,c.exports,r),c.exports}var o={};return(()=>{var n=o;Object.defineProperty(n,"__esModule",{value:!0}),n.toString=void 0;var M=r(333),c=r(747);M.ExpressionDescriptor.initialize(new c.enLocaleLoader),n.default=M.ExpressionDescriptor;var l=M.ExpressionDescriptor.toString;n.toString=l})(),o})())})(GL);var ft=GL.exports;const n_e=_j(ft);var a_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.fr=void 0;var N=(function(){function u(){}return u.prototype.conciseVerbosityReplacements=function(){return{"de le":"du"}},u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Une erreur est survenue en générant la description de l'expression cron. Vérifiez sa syntaxe."},u.prototype.everyMinute=function(){return"toutes les minutes"},u.prototype.everyHour=function(){return"toutes les heures"},u.prototype.atSpace=function(){return"À "},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Toutes les minutes entre %s et %s"},u.prototype.at=function(){return"À"},u.prototype.spaceAnd=function(){return" et"},u.prototype.everySecond=function(){return"toutes les secondes"},u.prototype.everyX0Seconds=function(){return"toutes les %s secondes"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"les secondes entre %s et %s après la minute"},u.prototype.atX0SecondsPastTheMinute=function(){return"%s secondes après la minute"},u.prototype.everyX0Minutes=function(){return"toutes les %s minutes"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"les minutes entre %s et %s après l'heure"},u.prototype.atX0MinutesPastTheHour=function(){return"%s minutes après l'heure"},u.prototype.everyX0Hours=function(){return"toutes les %s heures"},u.prototype.betweenX0AndX1=function(){return"de %s à %s"},u.prototype.atX0=function(){return"%s"},u.prototype.commaEveryDay=function(){return", tous les jours"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", tous les %s jours de la semaine"},u.prototype.commaX0ThroughX1=function(){return", de %s à %s"},u.prototype.commaAndX0ThroughX1=function(){return", et de %s à %s"},u.prototype.first=function(){return"premier"},u.prototype.second=function(){return"second"},u.prototype.third=function(){return"troisième"},u.prototype.fourth=function(){return"quatrième"},u.prototype.fifth=function(){return"cinquième"},u.prototype.commaOnThe=function(){return", le "},u.prototype.spaceX0OfTheMonth=function(){return" %s du mois"},u.prototype.lastDay=function(){return"le dernier jour"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", le dernier %s du mois"},u.prototype.commaOnlyOnX0=function(){return", uniquement le %s"},u.prototype.commaAndOnX0=function(){return", et %s"},u.prototype.commaEveryX0Months=function(){return", tous les %s mois"},u.prototype.commaOnlyInX0=function(){return", uniquement en %s"},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", le dernier jour du mois"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", le dernier jour ouvrable du mois"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s jours avant le dernier jour du mois"},u.prototype.firstWeekday=function(){return"premier jour ouvrable"},u.prototype.weekdayNearestDayX0=function(){return"jour ouvrable le plus proche du %s"},u.prototype.commaOnTheX0OfTheMonth=function(){return", le %s du mois"},u.prototype.commaEveryX0Days=function(){return", tous les %s jours"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", du %s au %s du mois"},u.prototype.commaOnDayX0OfTheMonth=function(){return", le %s du mois"},u.prototype.commaEveryHour=function(){return", chaque heure"},u.prototype.commaEveryX0Years=function(){return", tous les %s ans"},u.prototype.commaDaysX0ThroughX1=function(){return", du %s au %s"},u.prototype.commaStartingX0=function(){return", à partir de %s"},u.prototype.daysOfTheWeek=function(){return["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},u.prototype.monthsOfTheYear=function(){return["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},u.prototype.onTheHour=function(){return"à l'heure pile"},u})();return l.fr=N,c().locales.fr=new N,n})())})(a_e);var M_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.es=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Ocurrió un error mientras se generaba la descripción de la expresión. Revise la sintaxis de la expresión de cron."},u.prototype.at=function(){return"A las"},u.prototype.atSpace=function(){return"A las "},u.prototype.atX0=function(){return"a las %s"},u.prototype.atX0MinutesPastTheHour=function(){return"a los %s minutos de la hora"},u.prototype.atX0SecondsPastTheMinute=function(){return"a los %s segundos del minuto"},u.prototype.betweenX0AndX1=function(){return"entre las %s y las %s"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", entre los días %s y %s del mes"},u.prototype.commaEveryDay=function(){return", cada día"},u.prototype.commaEveryX0Days=function(){return", cada %s días"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", cada %s días de la semana"},u.prototype.commaEveryX0Months=function(){return", cada %s meses"},u.prototype.commaOnDayX0OfTheMonth=function(){return", el día %s del mes"},u.prototype.commaOnlyInX0=function(){return", sólo en %s"},u.prototype.commaOnlyOnX0=function(){return", sólo el %s"},u.prototype.commaAndOnX0=function(){return", y el %s"},u.prototype.commaOnThe=function(){return", en el "},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", en el último día del mes"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", en el último día de la semana del mes"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s días antes del último día del mes"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", en el último %s del mes"},u.prototype.commaOnTheX0OfTheMonth=function(){return", en el %s del mes"},u.prototype.commaX0ThroughX1=function(){return", de %s a %s"},u.prototype.commaAndX0ThroughX1=function(){return", y de %s a %s"},u.prototype.everyHour=function(){return"cada hora"},u.prototype.everyMinute=function(){return"cada minuto"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"cada minuto entre las %s y las %s"},u.prototype.everySecond=function(){return"cada segundo"},u.prototype.everyX0Hours=function(){return"cada %s horas"},u.prototype.everyX0Minutes=function(){return"cada %s minutos"},u.prototype.everyX0Seconds=function(){return"cada %s segundos"},u.prototype.fifth=function(){return"quinto"},u.prototype.first=function(){return"primero"},u.prototype.firstWeekday=function(){return"primer día de la semana"},u.prototype.fourth=function(){return"cuarto"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"del minuto %s al %s pasada la hora"},u.prototype.second=function(){return"segundo"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"En los segundos %s al %s de cada minuto"},u.prototype.spaceAnd=function(){return" y"},u.prototype.spaceX0OfTheMonth=function(){return" %s del mes"},u.prototype.lastDay=function(){return"el último día"},u.prototype.third=function(){return"tercer"},u.prototype.weekdayNearestDayX0=function(){return"día de la semana más próximo al %s"},u.prototype.commaEveryX0Years=function(){return", cada %s años"},u.prototype.commaStartingX0=function(){return", comenzando %s"},u.prototype.daysOfTheWeek=function(){return["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},u.prototype.monthsOfTheYear=function(){return["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},u.prototype.onTheHour=function(){return"en punto"},u})();return l.es=N,c().locales.es=new N,n})())})(M_e);var c_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.de=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.everyMinute=function(){return"jede Minute"},u.prototype.everyHour=function(){return"jede Stunde"},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Beim Generieren der Ausdrucksbeschreibung ist ein Fehler aufgetreten. Überprüfen Sie die Syntax des Cron-Ausdrucks."},u.prototype.atSpace=function(){return"Um "},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Jede Minute zwischen %s und %s"},u.prototype.at=function(){return"Um"},u.prototype.spaceAnd=function(){return" und"},u.prototype.everySecond=function(){return"Jede Sekunde"},u.prototype.everyX0Seconds=function(){return"alle %s Sekunden"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"Sekunden %s bis %s"},u.prototype.atX0SecondsPastTheMinute=function(){return"bei Sekunde %s"},u.prototype.everyX0Minutes=function(){return"alle %s Minuten"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"Minuten %s bis %s"},u.prototype.atX0MinutesPastTheHour=function(){return"bei Minute %s"},u.prototype.everyX0Hours=function(){return"alle %s Stunden"},u.prototype.betweenX0AndX1=function(){return"zwischen %s und %s"},u.prototype.atX0=function(){return"um %s"},u.prototype.commaEveryDay=function(){return", jeden Tag"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", alle %s Tage der Woche"},u.prototype.commaX0ThroughX1=function(){return", %s bis %s"},u.prototype.commaAndX0ThroughX1=function(){return", und %s bis %s"},u.prototype.first=function(){return"ersten"},u.prototype.second=function(){return"zweiten"},u.prototype.third=function(){return"dritten"},u.prototype.fourth=function(){return"vierten"},u.prototype.fifth=function(){return"fünften"},u.prototype.commaOnThe=function(){return", am "},u.prototype.spaceX0OfTheMonth=function(){return" %s des Monats"},u.prototype.lastDay=function(){return"der letzte Tag"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", am letzten %s des Monats"},u.prototype.commaOnlyOnX0=function(){return", nur jeden %s"},u.prototype.commaAndOnX0=function(){return", und jeden %s"},u.prototype.commaEveryX0Months=function(){return", alle %s Monate"},u.prototype.commaOnlyInX0=function(){return", nur im %s"},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", am letzten Tag des Monats"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", am letzten Werktag des Monats"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s tage vor dem letzten Tag des Monats"},u.prototype.firstWeekday=function(){return"ersten Werktag"},u.prototype.weekdayNearestDayX0=function(){return"Werktag am nächsten zum %s Tag"},u.prototype.commaOnTheX0OfTheMonth=function(){return", am %s des Monats"},u.prototype.commaEveryX0Days=function(){return", alle %s Tage"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", zwischen Tag %s und %s des Monats"},u.prototype.commaOnDayX0OfTheMonth=function(){return", an Tag %s des Monats"},u.prototype.commaEveryX0Years=function(){return", alle %s Jahre"},u.prototype.commaStartingX0=function(){return", beginnend %s"},u.prototype.daysOfTheWeek=function(){return["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},u.prototype.monthsOfTheYear=function(){return["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},u.prototype.onTheHour=function(){return"zur vollen Stunde"},u})();return l.de=N,c().locales.de=new N,n})())})(c_e);var u_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.it=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"È verificato un errore durante la generazione la descrizione espressione. Controllare la sintassi delle espressioni cron."},u.prototype.at=function(){return"Alle"},u.prototype.atSpace=function(){return"Alle "},u.prototype.atX0=function(){return"alle %s"},u.prototype.atX0MinutesPastTheHour=function(){return"al %s minuto passata l'ora"},u.prototype.atX0SecondsPastTheMinute=function(){return"al %s secondo passato il minuto"},u.prototype.betweenX0AndX1=function(){return"tra le %s e le %s"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", tra il giorno %s e %s del mese"},u.prototype.commaEveryDay=function(){return", ogni giorno"},u.prototype.commaEveryX0Days=function(){return", ogni %s giorni"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", ogni %s giorni della settimana"},u.prototype.commaEveryX0Months=function(){return", ogni %s mesi"},u.prototype.commaEveryX0Years=function(){return", ogni %s anni"},u.prototype.commaOnDayX0OfTheMonth=function(){return", il giorno %s del mese"},u.prototype.commaOnlyInX0=function(){return", solo in %s"},u.prototype.commaOnlyOnX0=function(){return", solo il %s"},u.prototype.commaAndOnX0=function(){return", e il %s"},u.prototype.commaOnThe=function(){return", il "},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", l'ultimo giorno del mese"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", nell'ultima settimana del mese"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s giorni prima dell'ultimo giorno del mese"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", l'ultimo %s del mese"},u.prototype.commaOnTheX0OfTheMonth=function(){return", il %s del mese"},u.prototype.commaX0ThroughX1=function(){return", %s al %s"},u.prototype.commaAndX0ThroughX1=function(){return", e %s al %s"},u.prototype.everyHour=function(){return"ogni ora"},u.prototype.everyMinute=function(){return"ogni minuto"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Ogni minuto tra le %s e le %s"},u.prototype.everySecond=function(){return"ogni secondo"},u.prototype.everyX0Hours=function(){return"ogni %s ore"},u.prototype.everyX0Minutes=function(){return"ogni %s minuti"},u.prototype.everyX0Seconds=function(){return"ogni %s secondi"},u.prototype.fifth=function(){return"quinto"},u.prototype.first=function(){return"primo"},u.prototype.firstWeekday=function(){return"primo giorno della settimana"},u.prototype.fourth=function(){return"quarto"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"minuti %s al %s dopo l'ora"},u.prototype.second=function(){return"secondo"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"secondi %s al %s oltre il minuto"},u.prototype.spaceAnd=function(){return" e"},u.prototype.spaceX0OfTheMonth=function(){return" %s del mese"},u.prototype.lastDay=function(){return"l'ultimo giorno"},u.prototype.third=function(){return"terzo"},u.prototype.weekdayNearestDayX0=function(){return"giorno della settimana più vicino al %s"},u.prototype.commaStartingX0=function(){return", a partire %s"},u.prototype.daysOfTheWeek=function(){return["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},u.prototype.monthsOfTheYear=function(){return["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},u.prototype.onTheHour=function(){return"all'ora esatta"},u})();return l.it=N,c().locales.it=new N,n})())})(u_e);var l_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(g){g.exports=t}},r={};function o(g){var j=r[g];if(j!==void 0)return j.exports;var y=r[g]={exports:{}};return i[g](y,y.exports,o),y.exports}o.n=g=>{var j=g&&g.__esModule?()=>g.default:()=>g;return o.d(j,{a:j}),j},o.d=(g,j)=>{for(var y in j)o.o(j,y)&&!o.o(g,y)&&Object.defineProperty(g,y,{enumerable:!0,get:j[y]})},o.o=(g,j)=>Object.prototype.hasOwnProperty.call(g,j),o.r=g=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.ru=void 0;var N=function(g,j){var y=Number(g);return y!==void 0?j[y%100>4&&y%100<20?2:[2,0,1,1,1,2][y%10<5?Math.abs(y)%10:5]]:j[2]},u=function(g,j){var y=Number(g);return y!==void 0?j[y===0?0:y===1||y===2||y===4?1:2]:j[1]},L=(function(){function g(){}return g.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},g.prototype.atX0MinutesPastTheHourGt20=function(){return null},g.prototype.commaMonthX0ThroughMonthX1=function(){return null},g.prototype.commaYearX0ThroughYearX1=function(){return null},g.prototype.use24HourTimeFormatByDefault=function(){return!0},g.prototype.everyMinute=function(){return"каждую минуту"},g.prototype.everyHour=function(){return"каждый час"},g.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Произошла ошибка во время генерации описания выражения. Проверьте синтаксис крон-выражения."},g.prototype.atSpace=function(){return"В "},g.prototype.everyMinuteBetweenX0AndX1=function(){return"Каждую минуту с %s по %s"},g.prototype.at=function(){return"В"},g.prototype.spaceAnd=function(){return" и"},g.prototype.everySecond=function(){return"каждую секунду"},g.prototype.everyX0Seconds=function(j){return N(j,["каждую %s секунду","каждые %s секунды","каждые %s секунд"])},g.prototype.secondsX0ThroughX1PastTheMinute=function(){return"секунды с %s по %s"},g.prototype.atX0SecondsPastTheMinute=function(j){return N(j,["в %s секунду","в %s секунды","в %s секунд"])},g.prototype.everyX0Minutes=function(j){return N(j,["каждую %s минуту","каждые %s минуты","каждые %s минут"])},g.prototype.minutesX0ThroughX1PastTheHour=function(){return"минуты с %s по %s"},g.prototype.atX0MinutesPastTheHour=function(j){return N(j,["в %s минуту","в %s минуты","в %s минут"])},g.prototype.everyX0Hours=function(j){return N(j,["каждый %s час","каждые %s часа","каждые %s часов"])},g.prototype.betweenX0AndX1=function(){return"с %s по %s"},g.prototype.atX0=function(){return"в %s"},g.prototype.commaEveryDay=function(){return", каждый день"},g.prototype.commaEveryX0DaysOfTheWeek=function(j){return N(j,[", каждый %s день недели",", каждые %s дня недели",", каждые %s дней недели"])},g.prototype.commaX0ThroughX1=function(j){return j&&(j[0]=="2"||j[0]=="3")?", со %s по %s":", с %s по %s"},g.prototype.commaAndX0ThroughX1=function(j){return j&&(j[0]=="2"||j[0]=="3")?" и со %s по %s":" и с %s по %s"},g.prototype.first=function(j){return u(j,["первое","первый","первую"])},g.prototype.second=function(j){return u(j,["второе","второй","вторую"])},g.prototype.third=function(j){return u(j,["третье","третий","третью"])},g.prototype.fourth=function(j){return u(j,["четвертое","четвертый","четвертую"])},g.prototype.fifth=function(j){return u(j,["пятое","пятый","пятую"])},g.prototype.commaOnThe=function(j){return j==="2"?", во ":", в "},g.prototype.spaceX0OfTheMonth=function(){return" %s месяца"},g.prototype.lastDay=function(){return"последний день"},g.prototype.commaOnTheLastX0OfTheMonth=function(j){return u(j,[", в последнее %s месяца",", в последний %s месяца",", в последнюю %s месяца"])},g.prototype.commaOnlyOnX0=function(j){return j&&j[0]==="2"?", только во %s":", только в %s"},g.prototype.commaAndOnX0=function(){return", и %s"},g.prototype.commaEveryX0Months=function(j){return N(j,[""," каждые %s месяца"," каждые %s месяцев"])},g.prototype.commaOnlyInMonthX0=function(){return", только %s"},g.prototype.commaOnlyInX0=function(){return", только в %s"},g.prototype.commaOnTheLastDayOfTheMonth=function(){return", в последний день месяца"},g.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", в последний будний день месяца"},g.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(j){return N(j,[", за %s день до конца месяца",", за %s дня до конца месяца",", за %s дней до конца месяца"])},g.prototype.firstWeekday=function(){return"первый будний день"},g.prototype.weekdayNearestDayX0=function(){return"ближайший будний день к %s числу"},g.prototype.commaOnTheX0OfTheMonth=function(){return", в %s месяца"},g.prototype.commaEveryX0Days=function(j){return N(j,[", каждый %s день",", каждые %s дня",", каждые %s дней"])},g.prototype.commaBetweenDayX0AndX1OfTheMonth=function(j){return j&&j.substring(0,j.indexOf("-"))=="2"?", со %s по %s число месяца":", с %s по %s число месяца"},g.prototype.commaOnDayX0OfTheMonth=function(j){return j&&j[0]=="2"?", во %s число месяца":", в %s число месяца"},g.prototype.commaEveryX0Years=function(j){return N(j,[", каждый %s год",", каждые %s года",", каждые %s лет"])},g.prototype.commaStartingX0=function(){return", начало %s"},g.prototype.daysOfTheWeek=function(){return["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},g.prototype.daysOfTheWeekInCase=function(j){return j===void 0&&(j=2),j==1?["воскресенья","понедельника","вторника","среды","четверга","пятницы","субботы"]:["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"]},g.prototype.monthsOfTheYear=function(){return["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},g.prototype.monthsOfTheYearInCase=function(j){return j==1?["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]:this.monthsOfTheYear()},g.prototype.onTheHour=function(){return"ровно в час"},g})();return l.ru=L,c().locales.ru=new L,n})())})(l_e);var N_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.zh_CN=void 0;var N=(function(){function u(){}return u.prototype.setPeriodBeforeTime=function(){return!0},u.prototype.pm=function(){return"下午"},u.prototype.am=function(){return"上午"},u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return", 从%s年至%s年"},u.prototype.use24HourTimeFormatByDefault=function(){return!1},u.prototype.everyMinute=function(){return"每分钟"},u.prototype.everyHour=function(){return"每小时"},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"生成表达式描述时发生了错误,请检查cron表达式语法。"},u.prototype.atSpace=function(){return"在"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"在 %s 至 %s 之间的每分钟"},u.prototype.at=function(){return"在"},u.prototype.spaceAnd=function(){return" 和"},u.prototype.everySecond=function(){return"每秒"},u.prototype.everyX0Seconds=function(){return"每隔 %s 秒"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"在一分钟后的第 %s 到 %s 秒"},u.prototype.atX0SecondsPastTheMinute=function(){return"在一分钟后的第 %s 秒"},u.prototype.everyX0Minutes=function(){return"每隔 %s 分钟"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"在整点后的第 %s 到 %s 分钟"},u.prototype.atX0MinutesPastTheHour=function(){return"在整点后的第 %s 分钟"},u.prototype.everyX0Hours=function(){return"每隔 %s 小时"},u.prototype.betweenX0AndX1=function(){return"在 %s 和 %s 之间"},u.prototype.atX0=function(){return"在%s"},u.prototype.commaEveryDay=function(){return", 每天"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", 每周的每 %s 天"},u.prototype.commaX0ThroughX1=function(){return", %s至%s"},u.prototype.commaAndX0ThroughX1=function(){return", 和%s至%s"},u.prototype.first=function(){return"第一个"},u.prototype.second=function(){return"第二个"},u.prototype.third=function(){return"第三个"},u.prototype.fourth=function(){return"第四个"},u.prototype.fifth=function(){return"第五个"},u.prototype.commaOnThe=function(){return", 限每月的"},u.prototype.spaceX0OfTheMonth=function(){return"%s"},u.prototype.lastDay=function(){return"本月最后一天"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", 限每月的最后一个%s"},u.prototype.commaOnlyOnX0=function(){return", 仅%s"},u.prototype.commaAndOnX0=function(){return", 或者为%s"},u.prototype.commaEveryX0Months=function(){return", 每隔 %s 个月"},u.prototype.commaOnlyInX0=function(){return", 仅限%s"},u.prototype.commaOnlyInMonthX0=function(){return", 仅于%s份"},u.prototype.commaOnlyInYearX0=function(){return", 仅于 %s 年"},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", 限每月的最后一天"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", 限每月的最后一个工作日"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", 限每月最后%s天"},u.prototype.firstWeekday=function(){return"第一个工作日"},u.prototype.weekdayNearestDayX0=function(){return"最接近 %s 号的工作日"},u.prototype.commaOnTheX0OfTheMonth=function(){return", 限每月的%s"},u.prototype.commaEveryX0Days=function(){return", 每隔 %s 天"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", 限每月的 %s 至 %s 之间"},u.prototype.commaOnDayX0OfTheMonth=function(){return", 限每月%s"},u.prototype.commaEveryX0Years=function(){return", 每隔 %s 年"},u.prototype.commaStartingX0=function(){return", %s开始"},u.prototype.dayX0=function(){return" %s 号"},u.prototype.daysOfTheWeek=function(){return["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},u.prototype.monthsOfTheYear=function(){return["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},u.prototype.onTheHour=function(){return"整点"},u})();return l.zh_CN=N,c().locales.zh_CN=new N,n})())})(N_e);var L_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.uk=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.everyMinute=function(){return"щохвилини"},u.prototype.everyHour=function(){return"щогодини"},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"ВІдбулася помилка підчас генерації опису. Перевірта правильність написання cron виразу."},u.prototype.atSpace=function(){return"О "},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Щохвилини між %s та %s"},u.prototype.at=function(){return"О"},u.prototype.spaceAnd=function(){return" та"},u.prototype.everySecond=function(){return"Щосекунди"},u.prototype.everyX0Seconds=function(){return"кожні %s секунд"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"з %s по %s секунду"},u.prototype.atX0SecondsPastTheMinute=function(){return"о %s секунді"},u.prototype.everyX0Minutes=function(){return"кожні %s хвилин"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"з %s по %s хвилину"},u.prototype.atX0MinutesPastTheHour=function(){return"о %s хвилині"},u.prototype.everyX0Hours=function(){return"кожні %s годин"},u.prototype.betweenX0AndX1=function(){return"між %s та %s"},u.prototype.atX0=function(){return"о %s"},u.prototype.commaEveryDay=function(){return", щоденно"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", кожен %s день тижня"},u.prototype.commaX0ThroughX1=function(){return", %s по %s"},u.prototype.commaAndX0ThroughX1=function(){return", та %s по %s"},u.prototype.first=function(){return"перший"},u.prototype.second=function(){return"другий"},u.prototype.third=function(){return"третій"},u.prototype.fourth=function(){return"четвертий"},u.prototype.fifth=function(){return"п'ятий"},u.prototype.commaOnThe=function(){return", в "},u.prototype.spaceX0OfTheMonth=function(){return" %s місяця"},u.prototype.lastDay=function(){return"останній день"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", в останній %s місяця"},u.prototype.commaOnlyOnX0=function(){return", тільки в %s"},u.prototype.commaAndOnX0=function(){return", і в %s"},u.prototype.commaEveryX0Months=function(){return", кожен %s місяць"},u.prototype.commaOnlyInX0=function(){return", тільки в %s"},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", в останній день місяця"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", в останній будень місяця"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s днів до останнього дня місяця"},u.prototype.firstWeekday=function(){return"перший будень"},u.prototype.weekdayNearestDayX0=function(){return"будень найближчий до %s дня"},u.prototype.commaOnTheX0OfTheMonth=function(){return", в %s місяця"},u.prototype.commaEveryX0Days=function(){return", кожен %s день"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", між %s та %s днями місяця"},u.prototype.commaOnDayX0OfTheMonth=function(){return", на %s день місяця"},u.prototype.commaEveryX0Years=function(){return", кожні %s роки"},u.prototype.commaStartingX0=function(){return", початок %s"},u.prototype.daysOfTheWeek=function(){return["неділя","понеділок","вівторок","середа","четвер","п'ятниця","субота"]},u.prototype.monthsOfTheYear=function(){return["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},u.prototype.onTheHour=function(){return"рівно о годині"},u})();return l.uk=N,c().locales.uk=new N,n})())})(L_e);var g_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.pt_BR=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Ocorreu um erro ao gerar a descrição da expressão Cron."},u.prototype.at=function(){return"às"},u.prototype.atSpace=function(){return"às "},u.prototype.atX0=function(){return"Às %s"},u.prototype.atX0MinutesPastTheHour=function(){return"aos %s minutos da hora"},u.prototype.atX0SecondsPastTheMinute=function(){return"aos %s segundos do minuto"},u.prototype.betweenX0AndX1=function(){return"entre %s e %s"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", entre os dias %s e %s do mês"},u.prototype.commaEveryDay=function(){return", a cada dia"},u.prototype.commaEveryX0Days=function(){return", a cada %s dias"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", a cada %s dias de semana"},u.prototype.commaEveryX0Months=function(){return", a cada %s meses"},u.prototype.commaOnDayX0OfTheMonth=function(){return", no dia %s do mês"},u.prototype.commaOnlyInX0=function(L){return L&&L.length>1&&L[1]==="-"?"somente %s":", somente em %s"},u.prototype.commaOnlyOnX0=function(L){return L&&L.length>1&&L[1]==="-"?", somente %s":", somente de %s"},u.prototype.commaAndOnX0=function(){return", e de %s"},u.prototype.commaOnThe=function(L,g){return g==="6"||g==="0"?", no":", na "},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", no último dia do mês"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", no último dia da semana do mês"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s dias antes do último dia do mês"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", na última %s do mês"},u.prototype.commaOnTheX0OfTheMonth=function(){return", no %s do mês"},u.prototype.commaX0ThroughX1=function(){return", de %s a %s"},u.prototype.commaAndX0ThroughX1=function(){return", e de %s a %s"},u.prototype.everyHour=function(){return"a cada hora"},u.prototype.everyMinute=function(){return"a cada minuto"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"a cada minuto entre %s e %s"},u.prototype.everySecond=function(){return"a cada segundo"},u.prototype.everyX0Hours=function(){return"a cada %s horas"},u.prototype.everyX0Minutes=function(){return"a cada %s minutos"},u.prototype.everyX0Seconds=function(){return"a cada %s segundos"},u.prototype.fifth=function(L){return L==="6"||L==="0"?"quinto":"quinta"},u.prototype.first=function(L){return L==="6"||L==="0"?"primeiro":"primeira"},u.prototype.firstWeekday=function(){return"primeiro dia da semana"},u.prototype.fourth=function(L){return L==="6"||L==="0"?"quarto":"quarta"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"do minuto %s até %s de cada hora"},u.prototype.second=function(L){return L==="6"||L==="0"?"segundo":"segunda"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"No segundo %s até %s de cada minuto"},u.prototype.spaceAnd=function(){return" e"},u.prototype.spaceX0OfTheMonth=function(){return" %s do mês"},u.prototype.lastDay=function(){return"o último dia"},u.prototype.third=function(L){return L==="6"||L==="0"?"terceiro":"terceira"},u.prototype.weekdayNearestDayX0=function(){return"dia da semana mais próximo do dia %s"},u.prototype.commaEveryX0Years=function(){return", a cada %s anos"},u.prototype.commaStartingX0=function(){return", iniciando %s"},u.prototype.daysOfTheWeek=function(){return["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},u.prototype.monthsOfTheYear=function(){return["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},u.prototype.onTheHour=function(){return"na hora certa"},u})();return l.pt_BR=N,c().locales.pt_BR=new N,n})())})(g_e);var j_e={exports:{}};(function(s,e){(function(i,r){s.exports=r(ft)})(globalThis,t=>(()=>{var i={93(u){u.exports=t}},r={};function o(u){var L=r[u];if(L!==void 0)return L.exports;var g=r[u]={exports:{}};return i[u](g,g.exports,o),g.exports}o.n=u=>{var L=u&&u.__esModule?()=>u.default:()=>u;return o.d(L,{a:L}),L},o.d=(u,L)=>{for(var g in L)o.o(L,g)&&!o.o(u,g)&&Object.defineProperty(u,g,{enumerable:!0,get:L[g]})},o.o=(u,L)=>Object.prototype.hasOwnProperty.call(u,L),o.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var n={};o.r(n);var M=o(93),c=o.n(M),l=n;Object.defineProperty(l,"__esModule",{value:!0}),l.pl=void 0;var N=(function(){function u(){}return u.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},u.prototype.atX0MinutesPastTheHourGt20=function(){return null},u.prototype.commaMonthX0ThroughMonthX1=function(){return null},u.prototype.commaYearX0ThroughYearX1=function(){return null},u.prototype.use24HourTimeFormatByDefault=function(){return!0},u.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"Wystąpił błąd podczas generowania opisu wyrażenia cron. Sprawdź składnię wyrażenia cron."},u.prototype.at=function(){return"O"},u.prototype.atSpace=function(){return"O "},u.prototype.atX0=function(){return"o %s"},u.prototype.atX0MinutesPastTheHour=function(){return"w %s minucie"},u.prototype.atX0SecondsPastTheMinute=function(){return"w %s sekundzie"},u.prototype.betweenX0AndX1=function(){return"od %s do %s"},u.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", od %s-ego do %s-ego dnia miesiąca"},u.prototype.commaEveryDay=function(){return", co dzień"},u.prototype.commaEveryX0Days=function(){return", co %s dni"},u.prototype.commaEveryX0DaysOfTheWeek=function(){return", co %s dni tygodnia"},u.prototype.commaEveryX0Months=function(){return", co %s miesięcy"},u.prototype.commaEveryX0Years=function(){return", co %s lat"},u.prototype.commaOnDayX0OfTheMonth=function(){return", %s-ego dnia miesiąca"},u.prototype.commaOnlyInX0=function(){return", tylko %s"},u.prototype.commaOnlyOnX0=function(){return", tylko %s"},u.prototype.commaAndOnX0=function(){return", i %s"},u.prototype.commaOnThe=function(){return", "},u.prototype.commaOnTheLastDayOfTheMonth=function(){return", ostatni dzień miesiąca"},u.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", ostatni dzień roboczy miesiąca"},u.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s dni przed ostatnim dniem miesiąca"},u.prototype.commaOnTheLastX0OfTheMonth=function(){return", ostatni %s miesiąca"},u.prototype.commaOnTheX0OfTheMonth=function(){return", %s miesiąca"},u.prototype.commaX0ThroughX1=function(){return", od %s do %s"},u.prototype.commaAndX0ThroughX1=function(){return", i od %s do %s"},u.prototype.everyHour=function(){return"co godzinę"},u.prototype.everyMinute=function(){return"co minutę"},u.prototype.everyMinuteBetweenX0AndX1=function(){return"Co minutę od %s do %s"},u.prototype.everySecond=function(){return"co sekundę"},u.prototype.everyX0Hours=function(){return"co %s godzin"},u.prototype.everyX0Minutes=function(){return"co %s minut"},u.prototype.everyX0Seconds=function(){return"co %s sekund"},u.prototype.fifth=function(){return"piąty"},u.prototype.first=function(){return"pierwszy"},u.prototype.firstWeekday=function(){return"pierwszy dzień roboczy"},u.prototype.fourth=function(){return"czwarty"},u.prototype.minutesX0ThroughX1PastTheHour=function(){return"minuty od %s do %s"},u.prototype.second=function(){return"drugi"},u.prototype.secondsX0ThroughX1PastTheMinute=function(){return"sekundy od %s do %s"},u.prototype.spaceAnd=function(){return" i"},u.prototype.spaceX0OfTheMonth=function(){return" %s miesiąca"},u.prototype.lastDay=function(){return"ostatni dzień"},u.prototype.third=function(){return"trzeci"},u.prototype.weekdayNearestDayX0=function(){return"dzień roboczy najbliższy %s-ego dnia"},u.prototype.commaStartingX0=function(){return", startowy %s"},u.prototype.daysOfTheWeek=function(){return["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},u.prototype.monthsOfTheYear=function(){return["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"]},u.prototype.onTheHour=function(){return"o pełnej godzinie"},u})();return l.pl=N,c().locales.pl=new N,n})())})(j_e);function HL(s,e){return n_e.toString(s,{locale:e})}const Be={mainDiv:{width:"100%",height:"100%"},periodSelect:{display:"block",width:250},tabContent:{padding:20,height:"calc(100% - 240px)",overflow:"auto"},numberButton:{padding:4,minWidth:40,margin:5},appBar:{color:"white"},warning:{marginLeft:16,color:"red",fontSize:12}},y_e=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],T_e=["January","February","March","April","May","June","July","August","September","October","November","December"];function p0(s,e){const t=[];if(s==="*"){if(e===24||e===60||e===7)for(let r=0;r1){const n=parseInt(o[1],10);for(let M=parseInt(o[0],10);M<=n;M++)t.push(M)}else t.push(parseInt(i[r],10))}t.sort();for(let r=t.length-1;r>=0;r--)t[r]===t[r+1]&&t.splice(r+1,1);return t}function A0(s,e){if(typeof s!="object"&&(s=[s]),s.length===e)return"*";const t=[];if(!s.length)return"-";s=s.map(o=>parseInt(o,10)),s.sort((o,n)=>o-n);let i=s[0],r=s[0];for(let o=1;othis.props.onChange&&this.props.onChange(this.state.cron),100)}static cron2state(e){e=e.replace(/['"]/g,"").trim();const t=e.split(" ").map(r=>r.trim());let i;return t.length===6?i={seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",dates:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:i={seconds:!1,minutes:t[0]||"*",hours:t[1]||"*",dates:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},i}static state2cron(e){let t=`${e.minutes} ${e.hours} ${e.dates} ${e.months} ${e.dow}`;return e.seconds!==!1&&(t=`${e.seconds} ${t}`),t}recalcCron(){const e=rs.state2cron(this.state);e!==this.state.cron&&this.setState({cron:e},()=>this.props.onChange&&this.props.onChange(this.state.cron))}onToggle(e,t,i){if(e===!0)this.setCronAttr(t,"*");else if(e===!1)i===60||i===24?this.setCronAttr(t,"0"):this.setCronAttr(t,"1");else{const r=p0(this.state[t],i),o=r.indexOf(e);o!==-1?r.splice(o,1):(r.push(e),r.sort()),this.setCronAttr(t,A0(r,i))}}getDigitsSelector(e,t){let i=[];if(t===7)i=[1,2,3,4,5,6,0];else if(t===60||t===24)for(let o=0;othis.onToggle(!1,e,t)},D.t("ra_Deselect all")),a.createElement(q,{key:"addall",variant:"contained",style:Be.numberButton,color:"secondary",onClick:()=>this.onToggle(!0,e,t)},D.t("ra_Select all")),a.createElement("div",{key:"all"},i.map(o=>[t===7&&o===4||t===12&&o===7||t===31&&!((o-1)%10)||t===60&&o&&!(o%10)||t===24&&o&&!(o%6)?a.createElement("div",{key:`allInner${o}`,style:{width:"100%"}}):null,a.createElement(q,{key:`_${o}`,variant:r.indexOf(o)!==-1?"contained":"outlined",style:Be.numberButton,color:r.indexOf(o)!==-1?"secondary":"primary",onClick:()=>this.onToggle(o,e,t)},t===7?D.t(y_e[o]):t===12?T_e[o-1]:o)]))]}getPeriodsTab(e,t){const i=this.state[e];let r=i==="*",o=i==null?!1:i.toString().includes("/"),n;if(this.state.modes[e]===null){n=r?"every":o?"everyN":"specific";const c=JSON.parse(JSON.stringify(this.state.modes));return c[e]=n,setTimeout(()=>this.setState({modes:c},()=>this.recalcCron()),100),null}r=this.state.modes[e]==="every",o=this.state.modes[e]==="everyN",n=this.state.modes[e];let M=1;return o&&i&&(M=parseInt(i.replace("*/",""),10)||1),a.createElement("div",null,a.createElement(nt,{variant:"standard",style:{...Be.periodSelect,verticalAlign:"bottom"},value:n,onChange:c=>{const l=JSON.parse(JSON.stringify(this.state.modes));if(l[e]=c.target.value,c.target.value==="every")this.setCronAttr(e,"*",l);else if(c.target.value==="everyN"){const N=parseInt((this.state[e]||"").toString().replace("*/",""),10)||1;this.setCronAttr(e,`*/${N}`,l)}else if(c.target.value==="specific"){let N=parseInt((this.state[e]||"").toString().split(",")[0],10)||0;!N&&(e==="months"||e==="dates")&&(N=1),this.setCronAttr(e,A0(N,t),l)}}},a.createElement(re,{key:"every",value:"every"},D.t(`sc_every_${e}`)),a.createElement(re,{key:"everyN",value:"everyN"},D.t(`sc_everyN_${e}`)),a.createElement(re,{key:"specific",value:"specific"},D.t(`sc_specific_${e}`))),o&&a.createElement(Te,{variant:"standard",key:"interval",label:D.t(`sc_${e}`),value:M,slotProps:{htmlInput:{min:1,max:t},inputLabel:{shrink:!0}},onChange:c=>{this.setState({[e]:`*/${c.target.value}`},()=>this.recalcCron())},type:"number",margin:"normal"}),!r&&!o&&this.getDigitsSelector(e,t))}static convertCronToText(e,t){return e.split(" ").includes("-")?D.t("ra_Invalid CRON"):HL(e,t)}setCronAttr(e,t,i){i?e==="seconds"?this.setState({seconds:t,modes:i},()=>this.recalcCron()):e==="minutes"?this.setState({minutes:t,modes:i},()=>this.recalcCron()):e==="hours"?this.setState({hours:t,modes:i},()=>this.recalcCron()):e==="dates"?this.setState({dates:t,modes:i},()=>this.recalcCron()):e==="months"?this.setState({months:t,modes:i},()=>this.recalcCron()):e==="dow"?this.setState({dow:t,modes:i},()=>this.recalcCron()):this.setState({modes:i},()=>this.recalcCron()):e==="seconds"?this.setState({seconds:t},()=>this.recalcCron()):e==="minutes"?this.setState({minutes:t},()=>this.recalcCron()):e==="hours"?this.setState({hours:t},()=>this.recalcCron()):e==="dates"?this.setState({dates:t},()=>this.recalcCron()):e==="months"?this.setState({months:t},()=>this.recalcCron()):e==="dow"&&this.setState({dow:t},()=>this.recalcCron())}render(){const e=this.state.seconds!==!1?this.state.tab:this.state.tab+1,t=this.state.minutes==="*"||this.state.minutes==="*/1",i=this.state.seconds==="*"||this.state.seconds==="*/1";return a.createElement("div",{style:Be.mainDiv},a.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)"}},a.createElement(Te,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0})),a.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)",height:60}},rs.convertCronToText(this.state.cron,this.props.language||"en"),a.createElement("span",{style:Be.warning},i?D.t("ra_warning_every_second"):t?D.t("ra_warning_every_minute"):"")),a.createElement(V,{control:a.createElement(ue,{checked:!!this.state.seconds,onChange:r=>this.setState({seconds:r.target.checked?"*":!1},()=>this.recalcCron())}),label:D.t("ra_use seconds")}),a.createElement(Jg,{position:"static",sx:{"&.MuiAppBar-root":Be.appBar},color:"secondary"},a.createElement(Bg,{value:this.state.tab,style:Be.appBar,color:"secondary",onChange:(r,o)=>this.setState({tab:o})},this.state.seconds!==!1&&a.createElement(Us,{id:"sc_seconds",label:D.t("sc_seconds")}),a.createElement(Us,{id:"minutes",label:D.t("sc_minutes")}),a.createElement(Us,{id:"hours",label:D.t("sc_hours")}),a.createElement(Us,{id:"dates",label:D.t("sc_dates")}),a.createElement(Us,{id:"months",label:D.t("sc_months")}),a.createElement(Us,{id:"dow",label:D.t("sc_dows")}))),e===0&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("seconds",60)),e===1&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("minutes",60)),e===2&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("hours",24)),e===3&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("dates",31)),e===4&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("months",12)),e===5&&a.createElement("div",{style:Be.tabContent},this.getPeriodsTab("dow",7)))}}const Ps={modalDialog:{minWidth:400,maxWidth:800},overflowHidden:{display:"flex",overflow:"hidden"},titleIcon:{marginRight:5},content:{fontSize:16},languageButton:{position:"absolute",right:8,top:8},languageButtonActive:s=>({color:s.palette.primary.main})};function Ive(s){const{open:e,toggleTranslation:t,noTranslation:i,title:r,fullWidth:o,help:n,maxWidth:M,progress:c,icon:l,applyDisabled:N,applyButton:u,onClose:L,children:g,titleButtonApply:j,titleButtonClose:y,onApply:T,textInput:d,defaultValue:I,overflowHidden:w}=s,[A,p]=Ka(I||"");Ce(()=>{p(I||"")},[I]);const h=Rg(),C=pN(h.breakpoints.down("md"));let E=null;return l&&(E=l),a.createElement(Ae,{open:e,maxWidth:C?!1:M||"md",fullWidth:!!o,fullScreen:C,disableEscapeKeyDown:!1,onClose:L,sx:{"& .MuiDialog-paper":C?{}:Ps.modalDialog}},r&&a.createElement(fe,null,l?a.createElement(E,{style:Ps.titleIcon}):null,r,D.getLanguage()!=="en"&&t?a.createElement(W,{size:"large",sx:m.getStyle(s.theme,Ps.languageButton,i&&Ps.languageButtonActive),onClick:()=>t(),title:D.t("Disable/Enable translation")},a.createElement(qg,null)):null),a.createElement(_e,{style:{...Ps.content,...w?Ps.overflowHidden:void 0,paddingTop:8}},d&&a.createElement(Te,{autoComplete:"off",fullWidth:!0,autoFocus:!0,variant:"outlined",size:"medium",multiline:!0,value:A,onChange:O=>p(O.target.value)}),g,n?a.createElement("div",null,n):null),a.createElement(xe,null,u!==!1&&a.createElement(q,{startIcon:a.createElement(We,null),disabled:c||N&&I===A,onClick:()=>T(d?A:""),variant:"contained",color:"primary"},D.t(j||"ra_Ok")),a.createElement(q,{color:"grey",onClick:L,disabled:c,variant:"contained",startIcon:a.createElement(we,null)},D.t(y||"ra_Cancel"))))}function D_e(){const s=xj();return[...s.breakpoints.keys].reverse().reduce((t,i)=>{const r=pN(s.breakpoints.up(i));return!t&&r?i:t},null)||"xs"}function cn(){return s=>function(t){const i=D_e();return a.createElement(s,{...t,width:i})}}function d_e(s){const[e,t]=a.useState(s.input||s.value||""),[i,r]=a.useState("");return a.createElement(Ae,{open:!0,onClose:()=>s.onClose(null),"aria-labelledby":"form-dialog-title",fullWidth:s.fullWidth!==void 0?s.fullWidth:!1},a.createElement(fe,{id:"form-dialog-title"},s.titleText),a.createElement(_e,null,a.createElement(as,null,s.promptText),a.createElement(Te,{variant:"standard",autoFocus:!0,margin:"dense",error:!!i,helperText:i===!0||!i?"":i,value:e,label:s.labelText||"",type:s.type||"text",onKeyUp:o=>o.code==="Enter"&&e&&s.onClose(e),onChange:o=>{let n="";s.verify&&(n=s.verify(o.target.value)),s.rule?t(s.rule(o.target.value)):t(o.target.value),r(n)},fullWidth:!0})),a.createElement(xe,null,a.createElement(q,{variant:"contained",disabled:!e||!!i,onClick:()=>s.onClose(e),color:"primary",startIcon:a.createElement(We,null)},s.applyText||D.t("ra_Ok")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>s.onClose(null),startIcon:a.createElement(we,null)},s.cancelText||D.t("ra_Cancel"))))}const h_e=cn()(d_e);function Oa(s){return a.createElement("svg",{onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 486 486",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),xmlns:"http://www.w3.org/2000/svg",className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"m414.928297,149.715165 c-2.639376,-57.222555 -35.669446,-106.505345 -83.345894,-132.039151 c-3.758948,-2.049842 -7.636885,-3.932022 -11.590542,-5.641125 c-19.303146,-8.394083 -40.607459,-13.050853 -63.004303,-13.050853 c-84.113909,0 -152.791790,65.703174 -157.718988,148.605566 l0.043268,-0.010816 v0.281245 c0,3.061243 -0.146031,16.750306 -0.146031,16.750306 l-2.352723,5.224668 h15.744315 c5.916964,-19.384275 24.078904,-32.635245 45.513024,-32.635245 c26.231510,0 47.573684,21.915481 47.573684,48.146991 c0,26.226103 -21.342174,47.146409 -47.573684,47.146409 c-25.111939,0 -45.734774,-19.735831 -47.443879,-44.658471 h-18.789334 c-0.400232,0 -0.778832,0.638209 -1.162839,0.584122 l-19.762875,55.199753 c-2.774590,7.696379 2.926030,16.214860 11.103771,16.214860 h17.020735 l-0.129805,87.899899 c0,17.356066 14.073071,31.174935 31.429136,31.174935 h56.205745 v82.648189 c0,12.877778 12.937273,22.580734 25.815051,22.580734 h144.597825 c12.877778,0 23.429877,-9.702955 23.429877,-22.580734 v-166.037352 c0,-22.645636 5.976457,-44.761234 16.561008,-64.789128 c11.055093,-20.925714 17.523731,-44.620611 18.129489,-69.792045 c0.027042,-1.260193 0.037858,-2.552839 0.037858,-3.845485 c0,-2.466302 -0.070310,-4.938014 -0.183890,-7.377273 zm-155.393308,-11.731165 h-13.456494 v13.559257 c0,4.732489 -4.267352,8.567157 -8.999842,8.567157 c-4.727079,0 -8.999842,-3.834667 -8.999842,-8.567157 v-13.559257 h-12.185483 c-4.732489,0 -8.567157,-4.267352 -8.567157,-8.999842 c0,-4.727079 3.834667,-8.999842 8.567157,-8.999842 h12.185483 v-12.077311 c0,-4.732489 4.272762,-8.567157 8.999842,-8.567157 c4.732489,0 8.999842,3.834667 8.999842,8.567157 v12.077311 h13.456494 c4.727079,0 8.567157,4.272762 8.567157,8.999842 c0,4.732489 -3.840077,8.999842 -8.567157,8.999842 zm0,0"}),a.createElement("path",{fill:"currentColor",d:"m187.695312 285.875c3.9375-3.980469 6.414063-9.449219 6.414063-15.523438 0-12.128906-9.855469-21.980468-21.984375-21.980468-6.007812 0-11.472656 2.410156-15.457031 6.347656-4.023438 4.003906-6.523438 9.539062-6.523438 15.636719 0 12.125 9.855469 21.980469 21.980469 21.980469 6.078125 0 11.585938-2.476563 15.570312-6.460938zm0 0"}))}function Ti(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 650 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"m524,128l-192,0l-64,-64l-160,0c-26.51,0 -48,21.49 -48,48l0,288c0,26.51 21.49,48 48,48l416,0c26.51,0 48,-21.49 48,-48l0,-224c0,-26.51 -21.49,-48 -48,-48z"}))}function lo(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 650 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"m631.75617,292.093l-72.424,124.155a63.997,63.997 0 0 1 -55.281,31.752l-399.964,0c-18.523,0 -30.064,-20.093 -20.731,-36.093l72.424,-124.155a64,64 0 0 1 55.282,-31.752l399.964,0c18.523,0 30.064,20.093 20.73,36.093zm-420.694,-68.093l328,0l0,-48c0,-26.51 -21.49,-48 -48,-48l-160,0l-64,-64l-160,0c-26.51,0 -48,21.49 -48,48l0,278.046l69.077,-118.418c17.137,-29.378 48.912,-47.628 82.923,-47.628z"}))}function lc(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"#EE3333",d:"M256,0C114.844,0,0,114.844,0,256s114.844,256,256,256s256-114.844,256-256S397.156,0,256,0z M256,448 c-105.865,0-192-86.135-192-192c0-40.406,12.25-78.604,35.542-111.198l267.656,267.656C334.604,435.75,296.406,448,256,448z M412.458,367.198L144.802,99.542C177.396,76.25,215.594,64,256,64c105.865,0,192,86.135,192,192 C448,296.406,435.75,334.604,412.458,367.198z"}))}var z_e=s=>typeof s!="string"?{}:s.split(/ ?; ?/).reduce((e,t)=>{const[i,r]=t.split(/ ?: ?/).map((o,n)=>n===0?o.replace(/\s+/g,""):o.trim());if(i&&r){const o=i.replace(/(\w)-(\w)/g,(M,c,l)=>`${c}${l.toUpperCase()}`);let n=r.trim();Number.isNaN(Number(r))||(n=Number(r)),e[i.startsWith("-")?i:o]=n}return e},{});function w_e(s=6){const e="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let t="";for(let i=s;i>0;--i)t+=e[Math.round(Math.random()*(e.length-1))];return t}var I_e=["br","col","colgroup","dl","hr","iframe","img","input","link","menuitem","meta","ol","param","select","table","tbody","tfoot","thead","tr","ul","wbr"],m0={"accept-charset":"acceptCharset",acceptcharset:"acceptCharset",accesskey:"accessKey",allowfullscreen:"allowFullScreen",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",cellpadding:"cellPadding",cellspacing:"cellSpacing",charset:"charSet",class:"className",classid:"classID",classname:"className",colspan:"colSpan",contenteditable:"contentEditable",contextmenu:"contextMenu",controlslist:"controlsList",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",datetime:"dateTime",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",enctype:"encType",for:"htmlFor",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",innerhtml:"innerHTML",inputmode:"inputMode",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",marginwidth:"marginWidth",marginheight:"marginHeight",maxlength:"maxLength",mediagroup:"mediaGroup",minlength:"minLength",nomodule:"noModule",novalidate:"noValidate",playsinline:"playsInline",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rowspan:"rowSpan",spellcheck:"spellCheck",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",tabindex:"tabIndex",typemustmatch:"typeMustMatch",usemap:"useMap",accentheight:"accentHeight","accent-height":"accentHeight",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",arabicform:"arabicForm","arabic-form":"arabicForm",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",diffuseconstant:"diffuseConstant",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",edgemode:"edgeMode",enablebackground:"enableBackground","enable-background":"enableBackground",externalresourcesrequired:"externalResourcesRequired",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",imagerendering:"imageRendering","image-rendering":"imageRendering",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",vmathematical:"vMathematical","v-mathematical":"vMathematical",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan",onblur:"onBlur",onchange:"onChange",onclick:"onClick",oncontextmenu:"onContextMenu",ondoubleclick:"onDoubleClick",ondrag:"onDrag",ondragend:"onDragEnd",ondragenter:"onDragEnter",ondragexit:"onDragExit",ondragleave:"onDragLeave",ondragover:"onDragOver",ondragstart:"onDragStart",ondrop:"onDrop",onerror:"onError",onfocus:"onFocus",oninput:"onInput",oninvalid:"onInvalid",onkeydown:"onKeyDown",onkeypress:"onKeyPress",onkeyup:"onKeyUp",onload:"onLoad",onmousedown:"onMouseDown",onmouseenter:"onMouseEnter",onmouseleave:"onMouseLeave",onmousemove:"onMouseMove",onmouseout:"onMouseOut",onmouseover:"onMouseOver",onmouseup:"onMouseUp",onscroll:"onScroll",onsubmit:"onSubmit",ontouchcancel:"onTouchCancel",ontouchend:"onTouchEnd",ontouchmove:"onTouchMove",ontouchstart:"onTouchStart",onwheel:"onWheel"};function C_e(s,e){var o;const{key:t,level:i,...r}=e;switch(s.nodeType){case 1:return bg(A_e(s.nodeName),p_e(s,t),f0(s.childNodes,i,r));case 3:{const n=((o=s.nodeValue)==null?void 0:o.toString())??"";if(!r.allowWhiteSpaces&&/^\s+$/.test(n)&&!/[\u00A0\u202F]/.test(n))return null;if(!s.parentNode)return n;const M=s.parentNode.nodeName.toLowerCase();return I_e.includes(M)?(/\S/.test(n)&&console.warn(`A textNode is not allowed inside '${M}'. Your text "${n}" will be ignored`),null):n}case 8:return null;case 11:return f0(s.childNodes,i,e);default:return null}}function p_e(s,e){const t={key:e};if(s instanceof Element){const i=s.getAttribute("class");i&&(t.className=i),[...s.attributes].forEach(r=>{switch(r.name){case"class":break;case"style":t[r.name]=z_e(r.value);break;case"allowfullscreen":case"allowpaymentrequest":case"async":case"autofocus":case"autoplay":case"checked":case"controls":case"default":case"defer":case"disabled":case"formnovalidate":case"hidden":case"ismap":case"itemscope":case"loop":case"multiple":case"muted":case"nomodule":case"novalidate":case"open":case"readonly":case"required":case"reversed":case"selected":case"typemustmatch":t[m0[r.name]||r.name]=!0;break;default:t[m0[r.name]||r.name]=r.value}})}return t}function f0(s,e,t){const i=[...s].map((r,o)=>Eo(r,{...t,index:o,level:e+1})).filter(Boolean);return i.length?i:null}function A_e(s){return/[a-z]+[A-Z]+[a-z]+/.test(s)?s:s.toLowerCase()}function VL(s,e={}){return typeof s=="string"?m_e(s,e):s instanceof Node?Eo(s,e):null}function Eo(s,e={}){if(!s||!(s instanceof Node))return null;const{actions:t=[],index:i=0,level:r=0,randomKey:o}=e;let n=s,M=`${r}-${i}`;const c=[];return o&&r===0&&(M=`${w_e()}-${M}`),Array.isArray(t)&&t.forEach(l=>{l.condition(n,M,r)&&(typeof l.pre=="function"&&(n=l.pre(n,M,r),n instanceof Node||(n=s)),typeof l.post=="function"&&c.push(l.post(n,M,r)))}),c.length?c:C_e(n,{key:M,level:r,...e})}function m_e(s,e={}){if(!s||typeof s!="string")return null;const{includeAllNodes:t=!1,nodeOnly:i=!1,selector:r="body > *",type:o="text/html"}=e;try{const M=new DOMParser().parseFromString(s,o);if(t){const{childNodes:l}=M.body;return i?l:[...l].map(N=>Eo(N,e))}const c=M.querySelector(r)||M.body.childNodes[0];if(!(c instanceof Node))throw new TypeError("Error parsing input");return i?c:Eo(c,e)}catch{}return null}var f_e=Object.defineProperty,O_e=(s,e,t)=>e in s?f_e(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Zr=(s,e,t)=>O_e(s,typeof e!="symbol"?e+"":e,t),O0="react-inlinesvg",E_e=10,ne={IDLE:"idle",LOADING:"loading",LOADED:"loaded",FAILED:"failed",READY:"ready",UNSUPPORTED:"unsupported"};function __e(s){return s[Math.floor(Math.random()*s.length)]}function ir(){var s;return!!(typeof window<"u"&&((s=window.document)!=null&&s.createElement))}function x_e(){return Y_e()&&typeof window<"u"&&window!==null}function S_e(s,...e){const t={};for(const i in s)({}).hasOwnProperty.call(s,i)&&(e.includes(i)||(t[i]=s[i]));return t}function k_e(s){const e="abcdefghijklmnopqrstuvwxyz",i=`${e}${e.toUpperCase()}1234567890`;let r="";for(let o=0;o299)throw new Error("Not found");if(!["image/svg+xml","text/plain"].some(o=>r.includes(o)))throw new Error(`Content type isn't valid: ${r}`);return t.text()}function v_e(s=1){return new Promise(e=>{setTimeout(e,s*1e3)})}function Y_e(){if(!document)return!1;const s=document.createElement("div");s.innerHTML="";const e=s.firstChild;return!!e&&e.namespaceURI==="http://www.w3.org/2000/svg"}var Q_e=class{constructor(){Zr(this,"cacheApi"),Zr(this,"cacheStore"),Zr(this,"subscribers",[]),Zr(this,"isReady",!1),this.cacheStore=new Map;let s=O0,e=!1;ir()&&(s=window.REACT_INLINESVG_CACHE_NAME??O0,e=!!window.REACT_INLINESVG_PERSISTENT_CACHE&&"caches"in window),e?caches.open(s).then(t=>{this.cacheApi=t}).catch(t=>{console.error(`Failed to open cache: ${t.message}`),this.cacheApi=void 0}).finally(()=>{this.isReady=!0;const t=[...this.subscribers];this.subscribers.length=0,t.forEach(i=>{try{i()}catch(r){console.error(`Error in CacheStore subscriber callback: ${r.message}`)}})}):this.isReady=!0}onReady(s){this.isReady?s():this.subscribers.push(s)}async get(s,e){var t;return await(this.cacheApi?this.fetchAndAddToPersistentCache(s,e):this.fetchAndAddToInternalCache(s,e)),((t=this.cacheStore.get(s))==null?void 0:t.content)??""}set(s,e){this.cacheStore.set(s,e)}isCached(s){var e;return((e=this.cacheStore.get(s))==null?void 0:e.status)===ne.LOADED}async fetchAndAddToInternalCache(s,e){const t=this.cacheStore.get(s);if((t==null?void 0:t.status)===ne.LOADING){await this.handleLoading(s,async()=>{this.cacheStore.set(s,{content:"",status:ne.IDLE}),await this.fetchAndAddToInternalCache(s,e)});return}if(!(t!=null&&t.content)){this.cacheStore.set(s,{content:"",status:ne.LOADING});try{const i=await ZL(s,e);this.cacheStore.set(s,{content:i,status:ne.LOADED})}catch(i){throw this.cacheStore.set(s,{content:"",status:ne.FAILED}),i}}}async fetchAndAddToPersistentCache(s,e){var r,o,n;const t=this.cacheStore.get(s);if((t==null?void 0:t.status)===ne.LOADED)return;if((t==null?void 0:t.status)===ne.LOADING){await this.handleLoading(s,async()=>{this.cacheStore.set(s,{content:"",status:ne.IDLE}),await this.fetchAndAddToPersistentCache(s,e)});return}this.cacheStore.set(s,{content:"",status:ne.LOADING});const i=await((r=this.cacheApi)==null?void 0:r.match(s));if(i){const M=await i.text();this.cacheStore.set(s,{content:M,status:ne.LOADED});return}try{await((o=this.cacheApi)==null?void 0:o.add(new Request(s,e)));const M=await((n=this.cacheApi)==null?void 0:n.match(s)),c=await(M==null?void 0:M.text())??"";this.cacheStore.set(s,{content:c,status:ne.LOADED})}catch(M){throw this.cacheStore.set(s,{content:"",status:ne.FAILED}),M}}async handleLoading(s,e){var t;for(let i=0;i({[s]:e}))}async delete(s){this.cacheApi&&await this.cacheApi.delete(s),this.cacheStore.delete(s)}async clear(){if(this.cacheApi){const s=await this.cacheApi.keys();await Promise.allSettled(s.map(e=>this.cacheApi.delete(e)))}this.cacheStore.clear()}};function E0(s){const e=et(void 0);return Ce(()=>{e.current=s}),e.current}function b_e(s){const{baseURL:e,content:t,description:i,handleError:r,hash:o,preProcessor:n,title:M,uniquifyIDs:c=!1}=s;try{const l=U_e(t,n),N=VL(l,{nodeOnly:!0});if(!N||!(N instanceof SVGSVGElement))throw new Error("Could not convert the src to a DOM Node");const u=XL(N,{baseURL:e,hash:o,uniquifyIDs:c});if(i){const L=u.querySelector("desc");L!=null&&L.parentNode&&L.parentNode.removeChild(L);const g=document.createElementNS("http://www.w3.org/2000/svg","desc");g.innerHTML=i,u.prepend(g)}if(typeof M<"u"){const L=u.querySelector("title");if(L!=null&&L.parentNode&&L.parentNode.removeChild(L),M){const g=document.createElementNS("http://www.w3.org/2000/svg","title");g.innerHTML=M,u.prepend(g)}}return u}catch(l){return r(l)}}function U_e(s,e){return e?e(s):s}function XL(s,e){const{baseURL:t="",hash:i,uniquifyIDs:r}=e,o=["id","href","xlink:href","xlink:role","xlink:arcrole"],n=["href","xlink:href"],M=(c,l)=>n.includes(c)&&(l?!l.includes("#"):!1);return r&&[...s.children].forEach(c=>{var l;if((l=c.attributes)!=null&&l.length){const N=Object.values(c.attributes).map(u=>{const L=u,g=/url\((.*?)\)/.exec(u.value);return g!=null&&g[1]&&(L.value=u.value.replace(g[0],`url(${t}${g[1]}__${i})`)),L});o.forEach(u=>{const L=N.find(g=>g.name===u);L&&!M(u,L.value)&&(L.value=`${L.value}__${i}`)})}return c.children.length?XL(c,e):c}),s}var Ni;function $_e(s){const{cacheRequests:e=!0,children:t=null,description:i,fetchOptions:r,innerRef:o,loader:n=null,onError:M,onLoad:c,src:l,title:N,uniqueHash:u}=s,[L,g]=Ug((S,R)=>({...S,...R}),{content:"",element:null,isCached:e&&Ni.isCached(s.src),status:ne.IDLE}),{content:j,element:y,isCached:T,status:d}=L,I=E0(s),w=E0(L),A=et(u??k_e(8)),p=et(!1),h=et(!1),C=Kt(S=>{p.current&&(g({status:S.message==="Browser does not support SVG"?ne.UNSUPPORTED:ne.FAILED}),M==null||M(S))},[M]),E=Kt((S,R=!1)=>{p.current&&g({content:S,isCached:R,status:ne.LOADED})},[]),O=Kt(async()=>{const S=await ZL(l,r);E(S)},[r,E,l]),b=Kt(()=>{try{const S=b_e({...s,handleError:C,hash:A.current,content:j}),R=VL(S);if(!R||!wN(R))throw new Error("Could not convert the src to a React element");g({element:R,status:ne.READY})}catch(S){C(S)}},[j,C,s]),k=Kt(async()=>{const S=/^data:image\/svg[^,]*?(;base64)?,(.*)/u.exec(l);let R;if(S?R=S[1]?window.atob(S[2]):decodeURIComponent(S[2]):l.includes("{p.current&&g({content:"",element:null,isCached:!1,status:ne.LOADING})},[]);Ce(()=>{if(p.current=!0,!(!ir()||h.current)){try{if(d===ne.IDLE){if(!x_e())throw new Error("Browser does not support SVG");if(!l)throw new Error("Missing src");K()}}catch(S){C(S)}return h.current=!0,()=>{p.current=!1}}},[]),Ce(()=>{if(!(!ir()||!I)&&I.src!==l){if(!l){C(new Error("Missing src"));return}K()}},[C,K,I,l]),Ce(()=>{d===ne.LOADED&&b()},[d,b]),Ce(()=>{!ir()||!I||I.src!==l||(I.title!==N||I.description!==i)&&b()},[i,b,I,l,N]),Ce(()=>{if(w)switch(d){case ne.LOADING:{w.status!==ne.LOADING&&k();break}case ne.LOADED:{w.status!==ne.LOADED&&b();break}case ne.READY:{w.status!==ne.READY&&(c==null||c(l,T));break}}},[k,b,T,c,w,l,d]);const x=S_e(s,"baseURL","cacheRequests","children","description","fetchOptions","innerRef","loader","onError","onLoad","preProcessor","src","title","uniqueHash","uniquifyIDs");return ir()?y?$g(y,{ref:o,...x}):[ne.UNSUPPORTED,ne.FAILED].includes(d)?t:n:n}function Ea(s){Ni||(Ni=new Q_e);const{loader:e}=s,[t,i]=Ka(Ni.isReady);return Ce(()=>{t||Ni.onReady(()=>{i(!0)})},[t]),t?a.createElement($_e,{...s}):e}function P_e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"}))}function Cve(s){let e;const t=s==null?void 0:s._id;return t?(t.startsWith("_design/")||t==="system"?e=a.createElement(jo,{className:"iconOwn"}):t==="0_userdata"||t==="0_userdata.0"?e=a.createElement(ly,{className:"iconOwn"}):t==="alias"||t==="alias.0"?e=a.createElement(P_e,{className:"iconOwn"}):t==="system.adapter"?e=a.createElement(jo,{className:"iconOwn"}):t==="system.group"?e=a.createElement(rM,{className:"iconOwn"}):t==="system.user"?e=a.createElement(sM,{className:"iconOwn"}):t==="system.host"?e=a.createElement(iM,{className:"iconOwn"}):t.endsWith(".connection")||t.endsWith(".connected")?e=a.createElement(li,{className:"iconOwn"}):t.endsWith(".info")?e=a.createElement(tM,{className:"iconOwn"}):(s==null?void 0:s.type)==="meta"&&(e=a.createElement(Yo,{className:"iconOwn"})),e||null):null}function pve(s,e){var r;e=e||".";let t="";const i=s==null?void 0:s.common;if(i){const o=i.icon;if(o)if(o.startsWith("data:image/"))t=o;else if(o.includes(".")){let n;s.type==="instance"||s.type==="adapter"?t=`${e}/adapter/${i.name}/${o}`:(r=s._id)!=null&&r.startsWith("system.adapter.")?(n=s._id.split(".",3),o[0]==="/"?n[2]+=o:n[2]+=`/${o}`,t=`${e}/adapter/${n[2]}`):(n=s._id.split(".",2),o[0]==="/"?n[0]+=o:n[0]+=`/${o}`,t=`${e}/adapter/${n[0]}`)}else return null}return t||null}const W_e=window.location.hostname.endsWith("iobroker.in"),_0=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1),be=a.forwardRef(function(e,t){var i,r,o;if(e.src){if(typeof e.src=="string"){if(e.src.length<3)return e.sx?a.createElement(J,{component:"span",sx:e.sx,ref:t,title:e.title||void 0,style:{height:27,marginTop:-8,...e.styleUTF8||e.style},className:e.className?`iconOwn ${e.className}`:"iconOwn"},e.src):a.createElement("span",{ref:t,title:e.title||void 0,style:{height:27,marginTop:-8,...e.styleUTF8||e.style},className:e.className?`iconOwn ${e.className}`:"iconOwn"},e.src);if(e.src.startsWith("data:image/svg"))return a.createElement(Ea,{title:e.title||void 0,src:e.src,className:e.className?`iconOwn ${e.className}`:"iconOwn",width:((i=e.style)==null?void 0:i.width)||28,height:((r=e.style)==null?void 0:r.height)||((o=e.style)==null?void 0:o.width)||28,style:e.style||void 0});if(W_e&&!e.src.startsWith("http://")&&!e.src.startsWith("https://")){let n=e.src;return n.startsWith("./")?n=_0+n.substring(2):n.startsWith("/")||(n=_0+n),e.sx?a.createElement(J,{component:"img",sx:e.sx,title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:`https://remote-files.iobroker.in${n}`,alt:e.alt||void 0,ref:t,onError:M=>{var c;return(c=e.onError)==null?void 0:c.call(e,M)}}):a.createElement("img",{title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:`https://remote-files.iobroker.in${n}`,alt:e.alt||void 0,ref:t,onError:M=>{var c;return(c=e.onError)==null?void 0:c.call(e,M)}})}return e.sx?a.createElement(J,{component:"img",sx:e.sx,title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:e.src,alt:e.alt||void 0,ref:t,onError:e.onError}):a.createElement("img",{title:e.title||void 0,style:e.style||void 0,className:e.className?`iconOwn ${e.className}`:"iconOwn",src:e.src,alt:e.alt||void 0,ref:t,onError:e.onError})}return e.src}return null});be.displayName="Icon";const gs={dialog:{height:"100%"},paper:{height:"calc(100% - 64px)"},content:{textAlign:"center"},textarea:{width:"100%",height:"100%"},img:{width:"auto",height:"calc(100% - 5px)",objectFit:"contain"},dialogTitle:{justifyContent:"space-between",display:"flex"}},ve={images:["png","jpg","svg","jpeg","bmp","gif","apng","avif","webp","ico"],code:["js","json","json5","md"],txt:["log","txt","html","css","xml","ics","csv"],audio:["mp3","wav","ogg","acc"],video:["mp4","mov","avi"]};function x0(s,e){let t="";const i=new Uint8Array((s==null?void 0:s.data)||s),r=i.byteLength;for(let o=0;o{let o="";r.file!==void 0&&(o=r.file);const n={copyPossible:this.state.copyPossible,ext:this.state.ext};if(o.type==="Buffer")if(i.toLowerCase().endsWith(".json5")){n.ext="json5",n.copyPossible=!0;try{o=atob(x0(o,!0))}catch{console.error("Cannot convert base64 to string"),o=""}}else{const M=m.detectMimeType(x0(o));M&&(n.ext=M,n.copyPossible=ve.code.includes(M)||ve.txt.includes(M))}n.copyPossible&&(n.ext&&ve.txt.includes(n.ext)?(n.text=o,n.editingValue=o):n.ext&&ve.code.includes(n.ext)&&(n.code=o,n.editingValue=o)),this.setState(n)}).catch(r=>window.alert(`Cannot read file: ${r}`))}}componentDidMount(){this.readFile();const e=this.props.href.split("/");e.splice(0,2);const t=e[0],i=e.splice(1).join("/");this.props.supportSubscribes&&this.props.socket.subscribeFiles(t,i,this.onFileChanged).catch(r=>window.alert(`Cannot subscribe on file: ${r}`))}componentWillUnmount(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null);const e=this.props.href.split("/");e.splice(0,2);const t=e[0],i=e.splice(1).join("/");this.props.supportSubscribes&&this.props.socket.unsubscribeFiles(t,i,this.onFileChanged)}onFileChanged=(e,t,i)=>{this.state.changed||(this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(()=>{this.timeout=null,i===null?window.alert("Show file was deleted!"):this.state.text!==null||this.state.code!==null?this.readFile():this.setState({forceUpdate:Date.now()})},300))};getEditorOrViewer(){return a.createElement(Te,{variant:"standard",style:gs.textarea,multiline:!0,value:this.state.editingValue||this.state.code||this.state.text,slotProps:{htmlInput:{readOnly:!this.state.editing}}})}getContent(){return this.state.ext&&ve.images.includes(this.state.ext)?this.state.imgError?a.createElement(lc,{style:{...gs.img,...this.props.getStyleBackgroundImage()}}):a.createElement(be,{onError:e=>{e.target.onerror=null,this.setState({imgError:!0})},style:{...gs.img,...this.props.getStyleBackgroundImage()},src:`${this.props.href}?ts=${this.state.forceUpdate}`,alt:this.props.href}):this.state.ext&&ve.audio.includes(this.state.ext)?a.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("audio",{style:{width:"100%"},src:this.props.href,controls:!0})):this.state.ext&&ve.video.includes(this.state.ext)?a.createElement("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"}},a.createElement("video",{style:{width:"100%",height:"100%"},controls:!0},a.createElement("source",{src:this.props.href,type:`video/${this.state.ext}`}))):this.state.code!==null||this.state.text!==null||this.state.editing?this.getEditorOrViewer():null}onSave(){}render(){return a.createElement(Ae,{sx:{"&.MuiDialog-scrollPaper":gs.dialog,"& .MuiDialog-paper":gs.paper},scroll:"paper",open:!!this.props.href,onClose:()=>this.props.onClose(),fullWidth:!0,maxWidth:"xl","aria-labelledby":"ar_dialog_file_view_title"},a.createElement("div",{style:gs.dialogTitle},a.createElement(fe,{id:"ar_dialog_file_view_title"},`${this.props.t(this.state.editing?"Edit":"View")}: ${this.props.href}`),this.state.ext&&ve.images.includes(this.state.ext)&&a.createElement("div",null,a.createElement(W,{size:"large",color:"inherit",onClick:this.props.setStateBackgroundImage},a.createElement(eM,null)))),a.createElement(_e,{style:gs.content},this.getContent()),a.createElement(xe,null,this.state.copyPossible?a.createElement(q,{color:"grey",onClick:e=>{e.stopPropagation(),e.preventDefault(),m.copyToClipboard(this.state.text||this.state.code||"")},startIcon:a.createElement(ej,null)},this.props.t("Copy content")):null,this.state.editing?a.createElement(q,{color:"grey",disabled:this.state.editingValue===this.state.code||this.state.editingValue===this.state.text,variant:"contained",onClick:()=>this.onSave(),startIcon:a.createElement(Xn,null)},this.props.t("Save")):null,a.createElement(q,{variant:"contained",onClick:()=>this.props.onClose(),color:"primary",startIcon:a.createElement(we,null)},this.props.t("Close"))))}}const B_e=cn()(J_e),Ws=32,_t=32,Xr=120,S0=64,k0="Not found",Kr={all:xN,images:ry,code:qa,txt:sy,audio:vj,video:dy},Y={root:{width:"100%",overflow:"hidden",height:"100%",position:"relative"},filesDiv:{width:"calc(100% - 8px)",overflowX:"hidden",overflowY:"auto",padding:8},filesDivHint:{position:"absolute",bottom:0,left:20,opacity:.7,fontStyle:"italic",fontSize:12},filesDivTable:{height:"calc(100% - 56px)"},filesDivTile:{height:"calc(100% - 104px)",display:"flex",alignContent:"flex-start",alignItems:"stretch",flexWrap:"wrap",flex:`0 0 ${S0}px`},itemTile:s=>({position:"relative",userSelect:"none",cursor:"pointer",height:Xr,width:S0,display:"inline-block",textAlign:"center",opacity:.1,transition:"opacity 1s",margin:"4px",borderRadius:"4px","&:hover":{background:s.palette.secondary.light,color:m.invertColor(s.palette.secondary.main,!0)}}),itemNameFolderTile:{fontWeight:"bold"},itemNameTile:{width:"100%",height:32,overflow:"hidden",textOverflow:"ellipsis",fontSize:12,textAlign:"center",wordBreak:"break-all"},itemFolderIconTile:s=>({width:"100%",height:Xr-32-16-8,display:"block",pl:1,color:s.palette.secondary.main||"#fbff7d"}),itemFolderIconBack:s=>({position:"absolute",top:22,left:18,zIndex:1,color:(s.palette.mode==="dark","#FFF")}),itemSizeTile:{width:"100%",height:16,textAlign:"center",fontSize:10},itemImageTile:{width:"calc(100% - 8px)",height:Xr-32-16-8,margin:4,display:"block",textAlign:"center",objectFit:"contain"},itemIconTile:{width:"100%",height:Xr-32-16-8,display:"block",objectFit:"contain"},itemSelected:s=>({background:s.palette.primary.main,color:m.invertColor(s.palette.primary.main,!0)}),itemTable:s=>({userSelect:"none",cursor:"pointer",height:Ws,display:"inline-flex",lineHeight:`${Ws}px`,"&:hover":{background:s.palette.secondary.light,color:m.invertColor(s.palette.secondary.main,!0)}}),itemNameTable:{display:"inline-block",pl:"10px",fontSize:"1rem",verticalAlign:"top",flexGrow:1,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden","@media screen and (max-width: 500px)":{textAlign:"end",direction:"rtl"}},itemNameFolderTable:{fontWeight:"bold"},itemSizeTable:{display:"inline-block",width:60,verticalAlign:"top",textAlign:"right",whiteSpace:"nowrap"},itemAccessTable:{verticalAlign:"top",width:60,textAlign:"right",paddingRight:5,display:"flex",justifyContent:"center"},itemImageTable:{display:"inline-block",width:30,marginTop:1,objectFit:"contain",maxHeight:30},itemNoImageTable:{marginTop:6},itemIconTable:{display:"inline-block",marginTop:1,width:30,height:30},itemFolderTable:{},itemFolderTemp:{opacity:.4},itemFolderIconTable:s=>({marginTop:"1px",marginLeft:"8px",display:"inline-block",width:30,height:30,color:s.palette.secondary.main||"#fbff7d"}),itemDownloadButtonTable:s=>({display:"inline-block",width:_t,height:Ws,minWidth:_t,verticalAlign:"middle",textAlign:"center",padding:0,borderRadius:`${_t/2}px`,"&:hover":{backgroundColor:s.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.08)"},"& span":{pt:"9px"},"& svg":{width:14,height:14,fontSize:"1rem",mt:"-3px",verticalAlign:"middle",color:s.palette.mode==="dark"?"#EEE":"#111"}}),itemDownloadEmptyTable:{display:"inline-block",width:_t,height:Ws,minWidth:_t,padding:0},itemAclButtonTable:{width:_t,height:Ws,minWidth:_t,verticalAlign:"top",padding:0,fontSize:12,display:"flex"},itemDeleteButtonTable:{display:"inline-block",width:_t,height:Ws,minWidth:_t,verticalAlign:"top",padding:0,"& svg":{width:18,height:18,fontSize:"1.5rem"}},uploadDiv:{top:0,zIndex:1,bottom:0,left:0,right:0,position:"absolute",opacity:.9,textAlign:"center",background:"#FFFFFF"},uploadDivDragging:{opacity:1},uploadCenterDiv:s=>({m:"20px",border:"3px dashed grey",borderRadius:"30px",width:"calc(100% - 40px)",height:"calc(100% - 40px)",position:"relative",color:s.palette.mode==="dark"?"#222":"#CCC",display:"flex",alignItems:"center",justifyContent:"center"}),uploadCenterIcon:{width:"25%",height:"25%"},uploadCenterText:{fontSize:24,fontWeight:"bold"},uploadCloseButton:{zIndex:2,position:"absolute",top:30,right:30},uploadCenterTextAndIcon:{position:"absolute",height:"30%",width:"100%",margin:"auto",opacity:.3},menuButtonExpertActive:{color:"#c00000"},menuButtonRestrictActive:{color:"#c05000"},pathDiv:s=>({display:"flex",width:"calc(100% - 16px)",ml:1,mr:1,textOverflow:"clip",overflow:"hidden",whiteSpace:"nowrap",backgroundColor:s.palette.secondary.main,color:s.palette.secondary.contrastText,borderRadius:"4px 4px 0 0"}),pathDivInput:{width:"100%"},pathDivBreadcrumbDir:s=>({pl:"2px",pr:"2px",cursor:"pointer",color:"white","&:hover":{backgroundColor:s.palette.primary.main,color:s.palette.primary.contrastText}}),pathDivBreadcrumbSelected:{color:"#FFF"},backgroundImageLight:{background:"white"},backgroundImageDark:{background:"black"},backgroundImageColored:{background:"silver"},specialFolder:s=>({color:s.palette.mode==="dark"?"#229b0f":"#5dd300"}),tooltip:{pointerEvents:"none"}},Ft="0_userdata.0";function Js(s){const e=(s||"").split("/");return e.length&&e.pop(),e.join("/")}function Qn(s){const e=m.getFileExtension(s);return!!(e!=null&&e.toLowerCase().match(/[a-z]+/)&&e.length<5)}const oe="Table",bn="Tile";function v0(s,e){return s.folder&&e.folder?s.name>e.name?1:s.namee.name?1:s.name{var l;return c.startsWith(`${this.limitToPath}/`)||c===this.limitToPath||((l=this.limitToPath)==null?void 0:l.startsWith(`${c}/`))}))}catch{i=[]}let r;this.props.showViewTypeButton?r=this.localStorage.getItem("files.viewType")||oe:r=oe;let o=this.props.selected||this.localStorage.getItem("files.selected")||Ft,n;if(e.restrictToFolder){o=e.restrictToFolder,n=e.restrictToFolder;const c=e.restrictToFolder.split("/");i=[];let l="";for(let N=0;N{if(this.state.viewType===oe&&!this.findItem(this.state.selected)){const t=this.state.selected.split("/");for(;t.length&&!this.findItem(t.join("/"));)t.pop();let i;t.length?i=t.join("/"):i=Ft,this.setState({selected:i,path:i,pathFocus:!1},()=>this.scrollToSelected())}else this.scrollToSelected();this.initialReadFinished=!0})}scrollToSelected(){if(this.mounted){const e=document.getElementById(this.state.selected);e==null||e.scrollIntoView()}}async componentDidMount(){this.mounted=!0,this.loadFolders().catch(e=>console.error(`Cannot load folders: ${e}`)),this.browseList=[],this.browseListRunning=!1,this.supportSubscribes=await this.props.socket.checkFeatureSupported("BINARY_STATE_EVENT"),this.supportSubscribes&&await this.props.socket.subscribeFiles("*","*",this.onFileChange)}componentWillUnmount(){this.supportSubscribes&&this.props.socket.unsubscribeFiles("*","*",this.onFileChange),this.mounted=!1,this.browseList=null,this.browseListRunning=!1,Object.values(this._tempTimeout).forEach(e=>{e&&clearTimeout(e)}),this._tempTimeout={}}browseFoldersCb(e,t,i){if(!(e!=null&&e.length))i(t);else{const r=e.shift();r?this.browseFolder(r,t).catch(o=>console.error(`Cannot read folder ${r}: ${o.message}`)).then(()=>{setTimeout(()=>this.browseFoldersCb(e,t,i),0)}):setTimeout(()=>this.browseFoldersCb(e,t,i),0)}}browseFolders(e,t){let i;return t?i=t:(i={},Object.keys(this.state.folders).forEach(r=>i[r]=this.state.folders[r])),e!=null&&e.length?new Promise(r=>{this.browseFoldersCb(e,i,r)}):Promise.resolve(i)}readDirSerial(e,t){return new Promise((i,r)=>{this.browseList&&(this.browseList.push({resolve:i,reject:r,adapter:e,relPath:t}),this.browseListRunning||this.processBrowseList())})}processBrowseList(e=0){!this.browseListRunning&&this.browseList&&this.browseList.length&&(this.browseListRunning=!0,this.browseList.length>10?this.browseList.length%10||this.setState({queueLength:this.browseList.length}):this.setState({queueLength:this.browseList.length}),this.browseList[0].processing=!0,this.props.socket.readDir(this.browseList[0].adapter,this.browseList[0].relPath||"").then(t=>{if(this.browseList){const i=this.browseList.shift();if(i){const r=i.resolve;i.resolve=null,i.reject=null,i.adapter=null,i.relPath=null,r&&r(t),this.browseListRunning=!1,this.browseList.length?e<5?this.processBrowseList(e+1):setTimeout(()=>this.processBrowseList(0),0):this.setState({queueLength:0})}else this.setState({queueLength:0})}}).catch(t=>{if(this.browseList){const i=this.browseList.shift();if(i){const r=i.reject;i.resolve=null,i.reject=null,i.adapter=null,i.relPath=null,r&&r(t),this.browseListRunning=!1,this.browseList.length?e<5?this.processBrowseList(e+1):setTimeout(()=>this.processBrowseList(0),0):this.setState({queueLength:0})}else this.setState({queueLength:0})}}))}async browseFolder(e,t,i,r){let o;if(t?o=t:(o={},Object.keys(this.state.folders).forEach(u=>{o[u]=this.state.folders[u]})),o[e]&&!r)return i?Promise.resolve(o):new Promise((u,L)=>{Promise.all(o[e].filter(g=>g.folder).map(g=>this.browseFolder(g.id,o,!0).catch(()=>{}))).then(()=>u(o)).catch(g=>L(new Error(g)))});if(!e||e==="/"){try{let u=await this.props.socket.readMetaItems();const L=[];let g=null;if(this.state.restrictToFolder){const y=this.state.restrictToFolder.split("/")[0];u=u.filter(T=>T._id===y)}else this.state.expertMode||(u=u.filter(y=>!y._id.endsWith(".admin")));const j=u.findIndex(y=>y._id==="system.meta.uuid");if(j!==-1&&u.splice(j,1),u.forEach(y=>{if(this.limitToObjectID&&this.limitToObjectID!==y._id)return;const T={id:y._id,name:y._id,title:y.common&&y.common.name||y._id,meta:!0,from:y.from,ts:y.ts,color:y.common&&y.common.color,icon:y.common&&y.common.icon,folder:!0,acl:y.acl,level:0};T.id===Ft?g=T:L.push(T)}),L.sort((y,T)=>y.id>T.id?1:y.idy.folder).map(y=>this.browseFolder(y.id,o,!0).catch(()=>{}))).then(()=>o)}catch(u){const L=u;this.initialReadFinished&&window.alert(`Cannot read meta items: ${L.message}`),o[e||"/"]=[]}return o}const n=e.split("/"),M=n.length,c=n.shift(),l=n.join("/");let N;try{N=await this.readDirSerial(c||"",l)}catch(u){if(u==="Not exists"&&c==="0_userdata.0")N=[];else throw u}try{const u=[];if(N.forEach(L=>{var j;const g={id:`${e}/${L.file}`,ext:m.getFileExtension(L.file),folder:L.isDir,name:L.file,size:(j=L.stats)==null?void 0:j.size,modified:L.modifiedAt,acl:L.acl,level:M};this.state.restrictToFolder?(g.folder&&(g.id.startsWith(`${this.state.restrictToFolder}/`)||g.id===this.state.restrictToFolder||this.state.restrictToFolder.startsWith(`${g.id}/`))||g.id.startsWith(`${this.state.restrictToFolder}/`))&&u.push(g):this.limitToPath?(g.folder&&(g.id.startsWith(`${this.limitToPath}/`)||g.id===this.limitToPath||this.limitToPath.startsWith(`${g.id}/`))||g.id.startsWith(`${this.limitToPath}/`))&&u.push(g):u.push(g)}),u.sort(v0),o[e]=u,!i)return Promise.all(u.filter(L=>L.folder).map(L=>this.browseFolder(L.id,o,!0))).then(()=>o)}catch(u){const L=u;this.initialReadFinished&&window.alert(`Cannot read ${c}${l?`/${l}`:""}: ${L==null?void 0:L.message}`),o[e]=[]}return o}toggleFolder(e,t){t==null||t.stopPropagation();const i=[...this.state.expanded],r=i.indexOf(e.id);r===-1?(i.push(e.id),i.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(i)),e.temp?this.setState({expanded:i}):this.browseFolder(e.id).then(o=>this.setState({expanded:i,folders:o})).catch(o=>window.alert(o===k0?this.props.t('ra_Cannot find "%s"',e.id):this.props.t('ra_Cannot read "%s"',e.id)))):(i.splice(r,1),this.localStorage.setItem("files.expanded",JSON.stringify(i)),this.setState({expanded:i}))}onFileChange=(e,t,i)=>{const r=`${e}/${t}`,o=r.lastIndexOf("/"),n=r.substring(0,o);console.log(`File changed ${r}[${i}]`),this.state.folders[n]&&(this._tempTimeout[n]&&clearTimeout(this._tempTimeout[n]),this._tempTimeout[n]=setTimeout(()=>{delete this._tempTimeout[n],this.browseFolder(n,null,!1,!0).then(M=>this.setState({folders:M})).catch(M=>console.error(`Cannot read folder: ${M.message}`))},300))};changeFolder(e,t){var r;e==null||e.stopPropagation(),this.lastSelect=Date.now();let i=t||Js(this.state.currentDir);if(i==="/"&&(i=""),this.state.viewType==="Tile"&&((r=this.refFileDiv.current)!=null&&r.scrollTop)&&(this.scrollPositions[this.state.currentDir]=this.refFileDiv.current.scrollTop),this.localStorage.setItem("files.currentDir",i),t&&e&&(e.altKey||e.shiftKey||e.ctrlKey||e.metaKey)){this.setState({selected:i});return}if(i&&!this.state.folders[i]){this.browseFolder(i).then(o=>this.setState({folders:o,path:i,currentDir:i,selected:i,pathFocus:!1},()=>this.props.onSelect&&this.props.onSelect(""))).catch(o=>console.error(`Cannot read folder: ${o.message}`));return}this.setState({currentDir:i,selected:i,path:i,pathFocus:!1},()=>{if(this.props.onSelect&&this.props.onSelect(""),this.state.viewType==="Tile"&&this.scrollPositions[this.state.currentDir]){const o=this.scrollPositions[this.state.currentDir];delete this.scrollPositions[this.state.currentDir],this.refFileDiv.current&&(this.refFileDiv.current.scrollTop=o)}})}select(e,t,i){t&&t.stopPropagation(),this.lastSelect=Date.now(),this.localStorage.setItem("files.selected",e),this.setState({selected:e,path:e,pathFocus:!1},()=>{if(this.props.onSelect){const r=m.getFileExtension(e);(!this.props.filterFiles||r&&this.props.filterFiles.includes(r))&&(!this.state.filterByType||r&&ve[this.state.filterByType].includes(r))?this.props.onSelect(e,!1,!!this.state.folders[e]):this.props.onSelect("")}i&&i()})}getText(e){if(e)return typeof e=="object"?e[this.props.lang]||e.en||void 0:e}renderFolder(e,t){var c;if(this.state.filterEmpty&&!((c=this.state.folders[e.id])!=null&&c.length)&&e.id!==Ft&&!e.temp)return null;const i=t?lo:Ti,r=this.state.viewType===oe?e.level*this.levelPadding:0,o=e.name===Ft,n=o||e.name==="vis.0"||e.name==="vis-2.0",M=m.getStyle(this.props.theme,Y[`itemFolderIcon${this.state.viewType}`],n&&Y.specialFolder);return a.createElement(J,{component:"div",key:e.id,id:e.id,style:this.state.viewType===oe?{marginLeft:r,width:`calc(100% - ${r}px)`}:void 0,onClick:l=>this.state.viewType===oe?this.select(e.id,l):this.changeFolder(l,e.id),onDoubleClick:l=>this.state.viewType===oe&&this.toggleFolder(e,l),title:this.getText(e.title),className:"browserItem",sx:m.getStyle(this.props.theme,Y[`item${this.state.viewType}`],Y[`itemFolder${this.state.viewType}`],this.state.selected===e.id?Y.itemSelected:{},e.temp?Y.itemFolderTemp:{})},a.createElement(i,{style:M,onClick:this.state.viewType===oe?l=>this.toggleFolder(e,l):void 0}),a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,Y[`itemName${this.state.viewType}`],Y[`itemNameFolder${this.state.viewType}`])},o?this.props.t("ra_User files"):e.name),a.createElement(J,{component:"div",style:Y[`itemSize${this.state.viewType}`],sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===oe&&this.state.folders[e.id]?this.state.folders[e.id].length:""),a.createElement(J,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===oe&&this.props.expertMode?this.formatAcl(e.acl):null),this.state.viewType===oe&&this.props.expertMode?a.createElement(J,{component:"div",sx:{...Y.itemDeleteButtonTable,display:{md:"inline-block",sm:"none"}}}):null,this.state.viewType===oe&&this.props.allowDownload?a.createElement("div",{style:Y[`itemDownloadEmpty${this.state.viewType}`]}):null,this.state.viewType===oe&&this.props.allowDelete&&this.state.folders[e.id]&&this.state.folders[e.id].length?a.createElement(W,{"aria-label":"delete",onClick:l=>{l.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(e.id):this.setState({deleteItem:e.id})},sx:Y[`itemDeleteButton${this.state.viewType}`],size:"large"},a.createElement(wt,{fontSize:"small"})):this.state.viewType===oe&&this.props.allowDelete?a.createElement(J,{component:"div",sx:Y[`itemDeleteButton${this.state.viewType}`]}):null)}renderBackFolder(){return a.createElement(J,{component:"div",key:this.state.currentDir,id:this.state.currentDir,onClick:e=>this.changeFolder(e),title:this.props.t("ra_Back to %s",Js(this.state.currentDir)),className:"browserItem",sx:m.getStyle(this.props.theme,Y[`item${this.state.viewType}`],Y[`itemFolder${this.state.viewType}`])},a.createElement(Ti,{style:m.getStyle(this.props.theme,Y[`itemFolderIcon${this.state.viewType}`])}),a.createElement(Sj,{sx:Y.itemFolderIconBack}),a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,Y[`itemName${this.state.viewType}`],Y[`itemNameFolder${this.state.viewType}`])},".."))}formatSize(e){return a.createElement("div",{style:Y[`itemSize${this.state.viewType}`]},e||e===0?m.formatBytes(e):"")}formatAcl(e){const t=e?e.permissions||e.file:0;let i;return t?i=t.toString(16).padStart(3,"0"):i="",a.createElement("div",{style:Y[`itemAccess${this.state.viewType}`]},this.props.modalEditOfAccessControl?a.createElement(W,{size:"large",onClick:()=>this.setState({modalEditOfAccess:!0}),sx:Y[`itemAclButton${this.state.viewType}`]},i||"---"):i||"---")}getFileIcon(e){switch(e){case"json":case"json5":return a.createElement(Qj,{style:Y[`itemIcon${this.state.viewType}`]});case"css":return a.createElement(bj,{style:Y[`itemIcon${this.state.viewType}`]});case"js":case"ts":return a.createElement(qa,{style:Y[`itemIcon${this.state.viewType}`]});case"html":case"md":return a.createElement(Yo,{style:Y[`itemIcon${this.state.viewType}`]});case"mp3":case"ogg":case"wav":case"m4a":case"mp4":case"flac":return a.createElement(cy,{style:Y[`itemIcon${this.state.viewType}`]});default:return a.createElement(xN,{style:Y[`itemIcon${this.state.viewType}`]})}}static getEditFile(e){switch(e){case"json":case"json5":case"js":case"html":case"txt":case"css":case"log":case"csv":return!0;default:return!1}}setStateBackgroundImage=()=>{const e=["light","dark","colored","delete"];this.setState(({backgroundImage:t})=>t&&e.indexOf(t)!==-1&&e.length-1!==e.indexOf(t)?(this.localStorage.setItem("files.backgroundImage",e[e.indexOf(t)+1]),{backgroundImage:e[e.indexOf(t)+1]}):(this.localStorage.setItem("files.backgroundImage",e[0]),{backgroundImage:e[0]}))};getStyleBackgroundImage=()=>{switch(this.state.backgroundImage){case"light":return Y.backgroundImageLight;case"dark":return Y.backgroundImageDark;case"colored":return Y.backgroundImageColored;case"delete":return null;default:return null}};renderFile(e){const t=this.state.viewType===oe?e.level*this.levelPadding:0,i=m.getFileExtension(e.name);return a.createElement(J,{component:"div",key:e.id,id:e.id,onDoubleClick:r=>{r.stopPropagation(),this.props.onSelect?(!this.props.filterFiles||e.ext&&this.props.filterFiles.includes(e.ext))&&(!this.state.filterByType||e.ext&&ve[this.state.filterByType].includes(e.ext))&&this.props.onSelect(e.id,!0,!!this.state.folders[e.id]):this.setState({viewer:this.imagePrefix+e.id,formatEditFile:i})},onClick:r=>this.select(e.id,r),style:this.state.viewType===oe?{marginLeft:t,width:`calc(100% - ${t}px)`}:void 0,className:"browserItem",sx:m.getStyle(this.props.theme,Y[`item${this.state.viewType}`],Y[`itemFile${this.state.viewType}`],this.state.selected===e.id?Y.itemSelected:void 0)},i&&ve.images.includes(i)?this.state.fileErrors.includes(e.id)?a.createElement(lc,{style:{...Y[`itemImage${this.state.viewType}`],...this.getStyleBackgroundImage(),...Y[`itemNoImage${this.state.viewType}`]}}):a.createElement(be,{onError:r=>{r.target.onerror=null;const o=[...this.state.fileErrors];o.includes(e.id)||(o.push(e.id),this.setState({fileErrors:o}))},style:{...Y[`itemImage${this.state.viewType}`],...this.getStyleBackgroundImage()},src:this.imagePrefix+e.id,alt:e.name}):this.getFileIcon(i),a.createElement(J,{component:"div",sx:Y[`itemName${this.state.viewType}`]},e.name),a.createElement(J,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.formatSize(e.size)),a.createElement(J,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===oe&&this.props.expertMode?this.formatAcl(e.acl):null),a.createElement(J,{component:"div",sx:{display:{md:"inline-block",sm:"none"}}},this.state.viewType===oe&&this.props.expertMode&&Nc.getEditFile(i)?a.createElement(W,{"aria-label":"edit",onClick:r=>{r.stopPropagation(),this.props.onSelect?(!this.props.filterFiles||e.ext&&this.props.filterFiles.includes(e.ext))&&(!this.state.filterByType||e.ext&&ve[this.state.filterByType].includes(e.ext))&&this.props.onSelect(e.id,!0,!!this.state.folders[e.id]):this.setState({viewer:this.imagePrefix+e.id,formatEditFile:i})},sx:Y.itemDeleteButtonTable,size:"large"},a.createElement(or,{fontSize:"small"})):a.createElement(J,{component:"div",sx:Y[`itemDeleteButton${this.state.viewType}`]})),this.state.viewType===oe&&this.props.allowDownload?a.createElement(J,{component:"a",className:"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge",sx:Y.itemDownloadButtonTable,tabIndex:0,download:e.id,href:this.imagePrefix+e.id,onClick:r=>r.stopPropagation()},a.createElement(Ny,null)):null,this.state.viewType===oe&&this.props.allowDelete&&e.id!=="vis.0/"&&e.id!=="vis-2.0/"&&e.id!==Ft?a.createElement(W,{"aria-label":"delete",onClick:r=>{r.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(e.id):this.setState({deleteItem:e.id})},sx:Y[`itemDeleteButton${this.state.viewType}`],size:"large"},a.createElement(wt,{fontSize:"small"})):this.state.viewType===oe&&this.props.allowDelete?a.createElement(J,{component:"div",sx:Y[`itemDeleteButton${this.state.viewType}`]}):null)}renderItems(e){var t;if((t=this.state.folders)!=null&&t[e]){if(this.state.viewType===bn){const r=[];return e&&e!=="/"&&r.push(this.renderBackFolder()),this.state.folders[e].forEach(o=>{o.folder?r.push(this.renderFolder(o)):(!this.props.filterFiles||o.ext&&this.props.filterFiles.includes(o.ext))&&(!this.state.filterByType||o.ext&&ve[this.state.filterByType].includes(o.ext))&&r.push(this.renderFile(o))}),r}const i=[];return this.state.folders[e].forEach(r=>{if(r.folder){const o=this.state.expanded.includes(r.id),n=this.renderFolder(r,o);if(Array.isArray(n)?n.forEach(M=>i.push(M)):i.push(n),this.state.folders[r.id]&&o){const M=this.renderItems(r.id);Array.isArray(M)?M.forEach(c=>i.push(c)):i.push(M)}}else(!this.props.filterFiles||r.ext&&this.props.filterFiles.includes(r.ext))&&(!this.state.filterByType||r.ext&&ve[this.state.filterByType].includes(r.ext))&&i.push(this.renderFile(r))}),i}return a.createElement("div",{style:{position:"relative"}},a.createElement(ko,{key:e,color:"secondary",size:24}),a.createElement("div",{style:{position:"absolute",zIndex:2,top:4,width:24,textAlign:"center"}},this.state.queueLength))}renderToolbar(){const e=this.props.showTypeSelector?Kr[this.state.filterByType||"all"]||Kr.all:null,t=this.findFirstFolder(this.state.selected);return a.createElement(CN,{key:"toolbar",variant:"dense"},this.props.allowNonRestricted&&this.props.restrictToFolder?a.createElement(W,{edge:"start",title:this.state.restrictToFolder?this.props.t("ra_Show all folders"):this.props.t("ra_Restrict to folder"),style:{...Y.menuButton,...this.state.restrictToFolder?Y.menuButtonRestrictActive:void 0},"aria-label":"restricted to folder",onClick:()=>this.setState({restrictToFolder:(this.state.restrictToFolder?"":this.props.restrictToFolder)||"",loadAllFolders:!0}),size:"small"},a.createElement(ty,{fontSize:"small"})):null,this.props.showExpertButton?a.createElement(W,{edge:"start",title:this.props.t("ra_Toggle expert mode"),style:{...Y.menuButton,...this.state.expertMode?Y.menuButtonExpertActive:void 0},"aria-label":"expert mode",onClick:()=>this.setState({expertMode:!this.state.expertMode}),size:"small"},a.createElement(Oa,null)):null,this.props.showViewTypeButton?a.createElement(W,{edge:"start",title:this.props.t("ra_Toggle view mode"),style:Y.menuButton,"aria-label":"view mode",onClick:()=>{const i=this.state.viewType===oe?bn:oe;this.localStorage.setItem("files.viewType",i);let r=this.state.selected;Qn(r)&&(r=Js(r)),this.setState({viewType:i,currentDir:r},()=>{this.state.viewType===oe&&this.scrollToSelected()})},size:"small"},this.state.viewType!==oe?a.createElement(ny,{fontSize:"small"}):a.createElement(wy,{fontSize:"small"})):null,a.createElement(W,{edge:"start",title:this.props.t("ra_Hide empty folders"),style:Y.menuButton,color:this.state.filterEmpty?"secondary":"inherit","aria-label":"filter empty",onClick:()=>{this.localStorage.setItem("file.empty",this.state.filterEmpty?"false":"true"),this.setState({filterEmpty:!this.state.filterEmpty})},size:"small"},a.createElement(ey,{fontSize:"small"})),a.createElement(W,{edge:"start",title:this.props.t("ra_Reload files"),style:Y.menuButton,color:"inherit","aria-label":"reload files",onClick:()=>this.setState({folders:{}},()=>this.loadFolders()),size:"small"},a.createElement(_N,{fontSize:"small"})),this.props.allowCreateFolder?a.createElement(W,{edge:"start",disabled:!this.state.selected||!t||!!this.limitToPath&&!this.state.selected.startsWith(`${this.limitToPath}/`)&&this.limitToPath!==this.state.selected,title:this.props.t("ra_Create folder"),style:Y.menuButton,color:"inherit","aria-label":"add folder",onClick:()=>this.setState({addFolder:!0}),size:"small"},a.createElement(fN,{fontSize:"small"})):null,this.props.allowUpload?a.createElement(W,{edge:"start",disabled:!this.state.selected||!t||!!this.limitToPath&&!this.state.selected.startsWith(`${this.limitToPath}/`)&&this.limitToPath!==this.state.selected,title:this.props.t("ra_Upload file"),style:Y.menuButton,color:"inherit","aria-label":"upload file",onClick:()=>this.setState({uploadFile:!0}),size:"small"},a.createElement(go,{fontSize:"small"})):null,this.props.showTypeSelector&&e?a.createElement(Le,{title:this.props.t("ra_Filter files"),slotProps:{popper:{sx:Y.tooltip}}},a.createElement(W,{size:"small",onClick:i=>this.setState({showTypesMenu:i.target})},a.createElement(e,{fontSize:"small"}))):null,this.state.showTypesMenu?a.createElement(ws,{open:!0,anchorEl:this.state.showTypesMenu,onClose:()=>this.setState({showTypesMenu:null})},Object.keys(Kr).map(i=>{const r=Kr[i];return a.createElement(re,{key:i,selected:this.state.filterByType===i,onClick:()=>{i==="all"?(this.localStorage.removeItem("files.filterByType"),this.setState({filterByType:"",showTypesMenu:null})):(this.localStorage.setItem("files.filterByType",i),this.setState({filterByType:i,showTypesMenu:null}))}},a.createElement(Xt,null,a.createElement(r,{fontSize:"small"})),a.createElement(dt,null,this.props.t(`ra_fileType_${i}`)))})):null,a.createElement(Le,{title:this.props.t("ra_Background image"),slotProps:{popper:{sx:Y.tooltip}}},a.createElement(W,{color:"inherit",edge:"start",style:Y.menuButton,onClick:this.setStateBackgroundImage,size:"small"},a.createElement(eM,{fontSize:"small"}))),this.state.viewType!==oe&&this.props.allowDelete?a.createElement(Le,{title:this.props.t("ra_Delete"),slotProps:{popper:{sx:Y.tooltip}}},a.createElement("span",null,a.createElement(W,{"aria-label":"delete",disabled:!this.state.selected||this.state.selected==="vis.0/"||this.state.selected==="vis-2.0/"||this.state.selected===Ft,color:"inherit",edge:"start",style:Y.menuButton,onClick:i=>{i.stopPropagation(),this.suppressDeleteConfirm>Date.now()?this.deleteItem(this.state.selected):this.setState({deleteItem:this.state.selected})},size:"small"},a.createElement(wt,{fontSize:"small"})))):null)}findItem(e,t){if(t=t||this.state.folders,!t)return null;const i=e.split("/");i.pop();const r=i.join("/")||"/";return t[r]&&t[r].find(o=>o.id===e)||null}renderInputDialog(){if(this.state.addFolder){const e=this.findFirstFolder(this.state.selected);return e?a.createElement(h_e,{key:"inputDialog",applyText:this.props.t("ra_Create"),cancelText:this.props.t("ra_Cancel"),titleText:this.props.t("ra_Create new folder in %s",this.state.selected),promptText:this.props.t("ra_If no file will be created in the folder, it will disappear after the browser closed"),labelText:this.props.t("ra_Folder name"),verify:t=>this.state.folders[e].find(i=>i.name===t)?"":this.props.t("ra_Duplicate name"),onClose:t=>{if(t){const i={};Object.keys(this.state.folders).forEach(M=>i[M]=this.state.folders[M]);const r=this.findItem(e),o=`${e}/${t}`;i[e].push({id:o,level:((r==null?void 0:r.level)||0)+1,name:t,folder:!0,temp:!0}),i[e].sort(v0),i[o]=[];const n=[...this.state.expanded];n.includes(e)||(n.push(e),n.sort()),this.localStorage.setItem("files.expanded",JSON.stringify(n)),this.setState({addFolder:!1,folders:i,expanded:n},()=>this.select(o))}else this.setState({addFolder:!1})},replace:t=>t.replace(/[^-_\w]/,"_")}):(window.alert(this.props.t("ra_Invalid parent folder!")),null)}return null}componentDidUpdate(){this.setOpacityTimer&&clearTimeout(this.setOpacityTimer),this.setOpacityTimer=setTimeout(()=>{this.setOpacityTimer=null;const e=window.document.getElementsByClassName("browserItem");for(let t=0;tthis.setState({uploadFile:!1})},a.createElement(we,null)),a.createElement(ON,{key:"dropzone",onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:e=>{let t=e.length;e.forEach(i=>{const r=new FileReader;r.onabort=()=>console.log("file reading was aborted"),r.onerror=()=>console.log("file reading has failed"),r.onload=()=>{const o=this.findFirstFolder(this.state.selected);if(!o)window.alert(this.props.t("ra_Invalid parent folder!"));else{const n=`${o}/${i.name}`;this.uploadFile(n,r.result).then(()=>{--t||this.setState({uploadFile:!1},()=>{if(this.supportSubscribes){const M=[...this.state.expanded];M.includes(o)||(M.push(o),M.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(M))),this.setState({expanded:M},()=>this.select(n))}else setTimeout(()=>this.browseFolder(o,null,!1,!0).then(M=>{const c=[...this.state.expanded];c.includes(o)||(c.push(o),c.sort(),this.localStorage.setItem("files.expanded",JSON.stringify(c))),this.setState({folders:M,expanded:c},()=>this.select(n))}),500)})})}},r.readAsArrayBuffer(i)})}},({getRootProps:e,getInputProps:t})=>a.createElement("div",{style:{...Y.uploadDiv,...this.state.uploadFile==="dragging"?Y.uploadDivDragging:void 0},...e()},a.createElement("input",{...t()}),a.createElement(J,{component:"div",sx:Y.uploadCenterDiv},a.createElement("div",{style:Y.uploadCenterTextAndIcon},a.createElement(go,{style:Y.uploadCenterIcon}),a.createElement("div",{style:Y.uploadCenterText},this.state.uploadFile==="dragging"?this.props.t("ra_Drop file here"):this.props.t("ra_Place your files here or click here to open the browse dialog"))))))]:null}deleteRecursive(e){const t=this.findItem(e);if(t!=null&&t.folder)return(this.state.folders[e]?Promise.all(this.state.folders[e].map(o=>this.deleteRecursive(o.id))):Promise.resolve()).then(()=>{if(t.level>=1){const o=e.split("/"),n=o.shift();this.props.socket.deleteFolder(n||"",o.join("/")).then(()=>{const M=JSON.parse(JSON.stringify(this.state.folders));delete M[t.id];const c=Js(t.id),l=M[c];if(l){const N=l.findIndex(u=>u.id===t.id);N!==-1&&l.splice(N,1),this.select(c,null,()=>this.setState({folders:M}))}})}});const i=e.split("/"),r=i.shift();return i.length?this.props.socket.deleteFile(r||"",i.join("/")).catch(o=>window.alert(`Cannot delete file: ${o}`)):Promise.resolve()}deleteItem(e){e=e||this.state.deleteItem,this.state.suppressDeleteConfirm&&(this.suppressDeleteConfirm=Date.now()+6e4*5),this.setState({deleteItem:"",suppressDeleteConfirm:!1},()=>this.deleteRecursive(e).then(()=>{const t={},i=this.state.expanded.indexOf(e);if(i!==-1){const r=[...this.state.expanded];r.splice(i,1),this.localStorage.setItem("files.expanded",JSON.stringify(r)),t.expanded=r}if(this.state.selected===e){const r=this.state.selected.split("/");r.pop(),t.selected=r.join("/")}if(this.supportSubscribes)this.setState(t);else{const r=this.findFirstFolder(e),o={};Object.keys(this.state.folders).forEach(n=>{n!==r&&!n.startsWith(`${r}/`)&&(o[n]=this.state.folders[n])}),t.folders=o,this.setState(t,()=>setTimeout(()=>{this.browseFolders([...this.state.expanded],o).then(n=>this.setState({folders:n})).catch(n=>console.error(n))},200))}}))}renderDeleteDialog(){return this.state.deleteItem?a.createElement(Ae,{key:"deleteDialog",open:!0,onClose:()=>this.setState({deleteItem:""}),"aria-labelledby":"ar_dialog_file_delete_title"},a.createElement(fe,{id:"ar_dialog_file_delete_title"},this.props.t("ra_Confirm deletion of %s",this.state.deleteItem.split("/").pop())),a.createElement(_e,null,a.createElement(as,null,this.props.t("ra_Are you sure?")),a.createElement(V,{control:a.createElement(ue,{checked:this.state.suppressDeleteConfirm,onChange:()=>{this.setState({suppressDeleteConfirm:!this.state.suppressDeleteConfirm})}}),label:this.props.t("ra_no confirm for 5 mins")})),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.deleteItem(""),color:"primary",autoFocus:!0},this.props.t("ra_Delete")),a.createElement(q,{variant:"contained",onClick:()=>this.setState({deleteItem:""}),color:"grey"},this.props.t("ra_Cancel")))):null}renderViewDialog(){const e=this.props.FileViewer||B_e;return this.state.viewer?a.createElement(e,{supportSubscribes:this.supportSubscribes||void 0,key:this.state.viewer,href:this.state.viewer,formatEditFile:this.state.formatEditFile||void 0,themeType:this.props.themeType||"light",setStateBackgroundImage:this.setStateBackgroundImage,getStyleBackgroundImage:this.getStyleBackgroundImage,t:this.props.t,socket:this.props.socket,onClose:()=>this.setState({viewer:"",formatEditFile:""})}):null}renderError(){return this.state.errorText?a.createElement(x4,{key:"errorDialog",text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}updateItemsAcl(e){this.cacheFolders||=JSON.parse(JSON.stringify(this.state.folders));let t;e.forEach(i=>{const r=this.findItem(i.id,this.cacheFolders);r&&JSON.stringify(r.acl)!==JSON.stringify(i.acl)&&(r.acl=i.acl,t=!0)}),t&&(this.cacheFoldersTimeout&&clearTimeout(this.cacheFoldersTimeout),this.cacheFoldersTimeout=setTimeout(()=>{this.cacheFoldersTimeout=null;const i=this.cacheFolders||{};this.cacheFolders=null,this.setState({folders:i})},200))}changeToPath(){setTimeout(()=>{if(this.state.path!==this.state.selected&&(!this.lastSelect||Date.now()-this.lastSelect>100)){let e=this.state.path;Qn(this.state.path)&&(e=Js(this.state.path)),new Promise(t=>{this.state.folders[e]?t(!0):this.browseFolder(e).then(i=>this.setState({folders:i},()=>t(!0))).catch(i=>this.setState({errorText:i===k0?this.props.t('ra_Cannot find "%s"',e):this.props.t('ra_Cannot read "%s"',e)}))}).then(t=>t&&this.setState({selected:this.state.path,currentDir:e,pathFocus:!1})).catch(t=>console.error(t))}else(!this.lastSelect||Date.now()-this.lastSelect>100)&&this.setState({pathFocus:!1})},100)}renderBreadcrumb(){const e=this.state.currentDir.startsWith("/")?this.state.currentDir.split("/"):`/${this.state.currentDir}`.split("/"),t=[];return a.createElement(Fg,{style:{paddingLeft:8,color:"#FFF"}},e.map((i,r)=>{i&&t.push(i);const o=t.join("/");return rthis.changeFolder(n,o||"/")},i||this.props.t("ra_Root")):a.createElement("div",{style:Y.pathDivBreadcrumbSelected,key:`${this.state.selected}_${r}`,onClick:()=>this.setState({pathFocus:!0})},i)}))}renderPath(){return a.createElement(J,{component:"div",key:"path",sx:Y.pathDiv},this.state.pathFocus?a.createElement(qt,{value:this.state.path,onKeyDown:e=>{e.key==="Enter"?this.changeToPath():e.key==="Escape"&&this.setState({pathFocus:!1})},endAdornment:a.createElement(W,{size:"small",onClick:()=>this.changeToPath()},a.createElement(oy,null)),onBlur:()=>this.changeToPath(),onChange:e=>this.setState({path:e.target.value}),style:Y.pathDivInput}):this.renderBreadcrumb())}render(){return this.props.ready?(this.state.loadAllFolders&&!this.foldersLoading&&(this.foldersLoading=!0,setTimeout(()=>{this.setState({loadAllFolders:!1,folders:{}},()=>{this.foldersLoading=!1,this.loadFolders().catch(e=>console.error(`Cannot load folders: ${e}`))})},300)),a.createElement("div",{style:{...Y.root,...this.props.style},className:this.props.className},this.props.showToolbar?this.renderToolbar():null,this.state.viewType===bn?this.renderPath():null,a.createElement("div",{style:{...Y.filesDiv,...Y[`filesDiv${this.state.viewType}`]},onClick:e=>{this.state.viewType!==oe&&(this.state.selected!==(this.state.currentDir||"/")?this.changeFolder(e,this.state.currentDir||"/"):e.stopPropagation())},id:"dev",ref:this.refFileDiv},this.state.viewType===oe?this.renderItems("/"):this.renderItems(this.state.currentDir||"/"),this.state.viewType!==oe?a.createElement("div",{style:Y.filesDivHint},this.props.t("ra_select_folder_hint")):null),this.props.allowUpload?this.renderInputDialog():null,this.props.allowUpload?this.renderUpload():null,this.props.allowDelete?this.renderDeleteDialog():null,this.props.allowView?this.renderViewDialog():null,this.state.modalEditOfAccess&&this.props.modalEditOfAccessControl?this.props.modalEditOfAccessControl(this):null,this.renderError())):a.createElement(Gg,null)}}const R_e=cn()(Nc),F_e="PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSIwIC0xMjAgNDgwIDQ4MCIgd2lkdGg9IjQ4MHB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00NzIgMGgtNDY0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djE5MmMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDMydjI0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoNDBjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMjRoMjg4djI0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoNDBjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMjRoMzJjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMTkyYzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS0zOTIgMjI0aC0yNHYtMTZoMjR6bTM0NCAwaC0yNHYtMTZoMjR6bTQwLTMyaC00NDh2LTE3Nmg0NDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2IDE3NmMzNS4zNDc2NTYgMCA2NC0yOC42NTIzNDQgNjQtNjRzLTI4LjY1MjM0NC02NC02NC02NC02NCAyOC42NTIzNDQtNjQgNjRjLjAzOTA2MiAzNS4zMjgxMjUgMjguNjcxODc1IDYzLjk2MDkzOCA2NCA2NHptLTgtMTExLjI4MTI1djE1LjI4MTI1aDE2di0xNS4yODEyNWMyNC42MDU0NjkgNC4xNjAxNTYgNDEuOTE3OTY5IDI2LjQ3NjU2MiAzOS44MzIwMzEgNTEuMzQzNzUtMi4wODU5MzcgMjQuODY3MTg4LTIyLjg3ODkwNiA0My45ODQzNzUtNDcuODMyMDMxIDQzLjk4NDM3NXMtNDUuNzQ2MDk0LTE5LjExNzE4Ny00Ny44MzIwMzEtNDMuOTg0Mzc1Yy0yLjA4NTkzOC0yNC44NjcxODggMTUuMjI2NTYyLTQ3LjE4MzU5NCAzOS44MzIwMzEtNTEuMzQzNzV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYwIDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjAgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTEyOCAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im05NiAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTY0IDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im02NCA2NGgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjggMTc2YzE2LjA5Mzc1LjAxOTUzMSAyOS42ODc1LTExLjkzNzUgMzEuNzE4NzUtMjcuOTA2MjUgMi4wMzUxNTYtMTUuOTY0ODQ0LTguMTMyODEyLTMwLjk0NTMxMi0yMy43MTg3NS0zNC45NTcwMzF2LTE3LjEzNjcxOWgtMTZ2MTcuMTM2NzE5Yy0xNS41ODU5MzggNC4wMTE3MTktMjUuNzUzOTA2IDE4Ljk5MjE4Ny0yMy43MTg3NSAzNC45NTcwMzEgMi4wMzEyNSAxNS45Njg3NSAxNS42MjUgMjcuOTI1NzgxIDMxLjcxODc1IDI3LjkwNjI1em0wLTQ4YzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZzLTcuMTY0MDYyIDE2LTE2IDE2LTE2LTcuMTY0MDYyLTE2LTE2IDcuMTY0MDYyLTE2IDE2LTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0NCAxNzZjMTYuMDkzNzUuMDE5NTMxIDI5LjY4NzUtMTEuOTM3NSAzMS43MTg3NS0yNy45MDYyNSAyLjAzNTE1Ni0xNS45NjQ4NDQtOC4xMzI4MTItMzAuOTQ1MzEyLTIzLjcxODc1LTM0Ljk1NzAzMXYtMTcuMTM2NzE5aC0xNnYxNy4xMzY3MTljLTE1LjU4NTkzOCA0LjAxMTcxOS0yNS43NTM5MDYgMTguOTkyMTg3LTIzLjcxODc1IDM0Ljk1NzAzMSAyLjAzMTI1IDE1Ljk2ODc1IDE1LjYyNSAyNy45MjU3ODEgMzEuNzE4NzUgMjcuOTA2MjV6bTAtNDhjOC44MzU5MzggMCAxNiA3LjE2NDA2MiAxNiAxNnMtNy4xNjQwNjIgMTYtMTYgMTYtMTYtNy4xNjQwNjItMTYtMTYgNy4xNjQwNjItMTYgMTYtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNjQgMTc2YzE2LjA5Mzc1LjAxOTUzMSAyOS42ODc1LTExLjkzNzUgMzEuNzE4NzUtMjcuOTA2MjUgMi4wMzUxNTYtMTUuOTY0ODQ0LTguMTMyODEyLTMwLjk0NTMxMi0yMy43MTg3NS0zNC45NTcwMzF2LTE3LjEzNjcxOWgtMTZ2MTcuMTM2NzE5Yy0xNS41ODU5MzggNC4wMTE3MTktMjUuNzUzOTA2IDE4Ljk5MjE4Ny0yMy43MTg3NSAzNC45NTcwMzEgMi4wMzEyNSAxNS45Njg3NSAxNS42MjUgMjcuOTI1NzgxIDMxLjcxODc1IDI3LjkwNjI1em0wLTQ4YzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZzLTcuMTY0MDYyIDE2LTE2IDE2LTE2LTcuMTY0MDYyLTE2LTE2IDcuMTY0MDYyLTE2IDE2LTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwOCAxMTJoMzJjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMzJjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2NjRjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOHptOC02NGgxNnYxNmgtMTZ6bTAgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQzMiAxMzZjMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHMtOC0zLjU4MjAzMS04LTggMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyIDE2OGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",G_e="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNTA3LjU0NiAxMDUuMTI1YzAtMS4wNDQtLjIwNS0yLjA5MS0uNjQ3LTMuMDcybC00My45My05Ny42M2MtMS4yMS0yLjY5Mi0zLjg4OC00LjQyMy02LjgzOS00LjQyM2gtMTgyLjYzYy00LjE0MyAwLTcuNSAzLjM1Ny03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDIzLjgxMnY4Mi42M2gtODIuNjI1di04Mi42M2gyMy44MTNjNC4xNDMgMCA3LjUtMy4zNTcgNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTE4Mi42M2MtMi45NTEgMC01LjYyOSAxLjczMS02Ljg0IDQuNDIzbC00My45MyA5Ny42M2MtLjQ0MS45ODEtLjY0NiAyLjAyOC0uNjQ3IDMuMDcyaC0uMDE1djEyLjIwM2MwIDI5LjUxNCAyMi44MjcgNTMuNzggNTEuNzUxIDU2LjExMmwzMS44NjUgNTguNDE5aC00LjAwN2MtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgxNi42MzNjLjAwNSAwIC4wMS4wMDEuMDE1LjAwMXMuMDExLS4wMDEuMDE2LS4wMDFoMTYuNjE4YzQuMTQzIDAgNy41LTMuMzU3IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xMi4xODlsLTMyLjQ1Ni01OS41MDNjMTUuNzUtMy40MTMgMjkuMDU3LTEzLjQzMyAzNi44NzktMjcuMDAzIDkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzkuNzMzIDE2Ljg4NyAyNy45NjEgMjguMjg4IDQ4LjgxMiAyOC4yODhzMzkuMDc5LTExLjQwMSA0OC44MTItMjguMjg4YzcuODIyIDEzLjU3MSAyMS4xMjkgMjMuNTkxIDM2Ljg3OSAyNy4wMDNsLTMyLjQ1NiA1OS41MDNoLTEyLjE4OGMtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgxNi42MThjLjAwNSAwIC4wMTEuMDAxLjAxNi4wMDFzLjAxLS4wMDEuMDE1LS4wMDFoMTYuNjMzYzQuMTQzIDAgNy41LTMuMzU3IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC00LjAwN2wzMS44NjUtNTguNDE5YzI4LjkyNC0yLjMzMiA1MS43NTEtMjYuNTk4IDUxLjc1MS01Ni4xMTJ2LTEyLjIwM3ptLTE5LjA4NS03LjQ5NWgtNzguNTIzdi04Mi42M2g0MS4zNDN6bS05My41MjMtODIuNjN2ODIuNjNoLTgyLjYyNXYtODIuNjN6bS0xOTUuMjUgODIuNjNoLTgyLjYyNXYtODIuNjNoODIuNjI1em0tMTM4Ljk2OC04Mi42M2g0MS4zNDN2ODIuNjNoLTc4LjUyNHptLjAzNCAxNDMuNjQxYy0uMDExIDAtLjAyMS0uMDAxLS4wMzItLjAwMS0yMi43NjctLjAxNS00MS4yODUtMTguNTQyLTQxLjI4NS00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMwIDIyLjc3OC0xOC41MzEgNDEuMzEtNDEuMzA4IDQxLjMxM3ptOTcuNjIxIDBjLTIyLjc3OSAwLTQxLjMxMi0xOC41MzMtNDEuMzEyLTQxLjMxMnYtNC42OThoODIuNjI1djQuNjk4YzAgMjIuNzc4LTE4LjUzNCA0MS4zMTItNDEuMzEzIDQxLjMxMnptOTcuNjI1IDBjLTIyLjc3OSAwLTQxLjMxMi0xOC41MzMtNDEuMzEyLTQxLjMxMnYtNC42OThoODIuNjI1djQuNjk4Yy0uMDAxIDIyLjc3OC0xOC41MzQgNDEuMzEyLTQxLjMxMyA0MS4zMTJ6bTk3LjYyNSAwYy0yMi43NzkgMC00MS4zMTItMTguNTMzLTQxLjMxMi00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMwIDIyLjc3OC0xOC41MzQgNDEuMzEyLTQxLjMxMyA0MS4zMTJ6bTk3LjY0OC0uMDAxYy0uMDA1IDAtLjAwOSAwLS4wMTQgMC0uMDAzIDAtLjAwNiAwLS4wMDkgMC0yMi43NzkgMC00MS4zMTItMTguNTMzLTQxLjMxMi00MS4zMTJ2LTQuNjk4aDgyLjYyNXY0LjY5OGMtLjAwMSAyMi43NzItMTguNTIxIDQxLjMtNDEuMjkgNDEuMzEyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",H_e="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUwOC41MzYgNTA4LjUzNiIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDk4LjUzNiAzNDQuMzIxaC0xNy4yOThjLjQzNC0xNy42NzItMTAuMjY3LTM0LjIxMi0yOS41NDctMzQuMjEycy0yOS45ODIgMTYuNTQtMjkuNTQ3IDM0LjIxMmgtMTcuMjk4Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwdjI1LjY5N2MwIDI0LjYwMSAxNS43MTIgNDUuNTk2IDM3LjYyNSA1My40OTRsLTExLjYwMSAxMS42MDFjLTExLjA4NiAxMS4wODYtMjUuODI2IDE3LjE5MS00MS41MDMgMTcuMTkxLTMyLjM2NCAwLTU4LjY5My0yNi4zMy01OC42OTMtNTguNjkzdi02Ni42NGMzNi4wODggMS4yNjYgNTcuODQ2LTIyLjM5IDgxLjE0OS00NS42OTQgMjguNTE3LTMuMDI0IDUwLjgwOS0yNy4yMTYgNTAuODA5LTU2LjUyMnYtMjUuNjk4YzAtNS41MjMtNC40NzctMTAtMTAtMTBoLTE3LjI5OGMuNDM0LTE3LjY3MS0xMC4yNjctMzQuMjEyLTI5LjU0Ny0zNC4yMTJzLTI5Ljk4MiAxNi41NC0yOS41NDcgMzQuMjEyaC0xNy4zYy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwdjI1LjY5OGMwIDI0LjYwMSAxNS43MTEgNDUuNTk2IDM3LjYyNSA1My40OTRsLTExLjYwMSAxMS42MDFjLTExLjA4NiAxMS4wODYtMjUuODI2IDE3LjE5MS00MS41MDMgMTcuMTkxLTMyLjM2NCAwLTU4LjY5My0yNi4zMy01OC42OTMtNTguNjk0IDAtMjUuODk1IDAtNTEuNzkxIDAtNzcuNjg2aDIyLjcxNmMxMi4yODUgMCAxOC43MjYgMTUuNTMgMTAuMDMzIDI0LjIyMS05LjEyMiA5LjEyMSA1LjAyIDIzLjI2NCAxNC4xNDIgMTQuMTQzIDYuNDU4LTYuNDU3IDEwLjAxNC0xNS4wNDIgMTAuMDE0LTI0LjE3NSAwLTE4Ljg1Mi0xNS4zMzctMzQuMTg4LTM0LjE4OS0zNC4xODhoLTIyLjcxNnYtMTguODI0YzI2LjI1Ny01LjA0MyA0Ni4xNjEtMjguMTc1IDQ2LjE2MS01NS44ODF2LTIwLjg1MWMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwaC0zNi45MTR2LTI0LjIzNmgzNi45MTRjMTIuODQgMCAxMi44NTktMjAgMC0yMGgtOTMuODI4Yy0xMi44NCAwLTEyLjg1OSAyMCAwIDIwaDM2LjkxNHYyNC4yMzVoLTM2LjkxNGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYyMC44NTFjMCAyOC4yMzMgMjAuNjY5IDUxLjcxOSA0Ny42NjcgNTYuMTUxdjE4LjU1NWgtMjIuNzE2Yy0xOC44NTIgMC0zNC4xODkgMTUuMzM3LTM0LjE4OSAzNC4xODggMCA5LjEzMiAzLjU1NiAxNy43MTcgMTAuMDE0IDI0LjE3NSA5LjEyMSA5LjEyMSAyMy4yNjMtNS4wMjEgMTQuMTQzLTE0LjE0My04LjY4NS04LjY4NC0yLjI2NC0yNC4yMjEgMTAuMDMzLTI0LjIyMWgyMi43MTZ2NzcuNjg2YzAgMzIuMzY0LTI2LjMzIDU4LjY5NC01OC42OTQgNTguNjk0LTE1LjY3NyAwLTMwLjQxNy02LjEwNS00MS41MDItMTcuMTkxbC0xMS4yMTgtMTEuMjE4YzIyLjUtNy41NzUgMzguNzU2LTI4Ljg1NiAzOC43NTYtNTMuODc3di0yNS42OThjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMTcuMjk4Yy40MzQtMTcuNjcxLTEwLjI2Ny0zNC4yMTItMjkuNTQ3LTM0LjIxMnMtMjkuOTgyIDE2LjU0LTI5LjU0NyAzNC4yMTJoLTE3LjNjLTUuNTIzIDAtMTAgNC40NzctMTAgMTB2MjUuNjk4YzAgMjguNzA3IDIxLjM5NCA1Mi40OTggNDkuMDczIDU2LjNsMjIuOTM3IDIyLjkzN2MxNS4xNjQgMTUuMTYzIDM2LjAxIDIzLjQ4NiA1Ny40MzMgMjMuMDAzdjY2LjYxNGMwIDMyLjM2NC0yNi4zMyA1OC42OTMtNTguNjkzIDU4LjY5My0xNS42NzcgMC0zMC40MTctNi4xMDUtNDEuNTAyLTE3LjE5MWwtMTEuNjAyLTExLjYwMmMyMS45MTQtNy44OTggMzcuNjI1LTI4Ljg5MiAzNy42MjUtNTMuNDk0di0yNS42OTdjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMTcuMjk3Yy40MzQtMTcuNjcyLTEwLjI2Ny0zNC4yMTItMjkuNTQ3LTM0LjIxMnMtMjkuOTgyIDE2LjU0LTI5LjU0NyAzNC4yMTJoLTE3LjI5OWMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYyNS42OTdjMCAyOS4zMDUgMjIuMjkyIDUzLjQ5NyA1MC44MDggNTYuNTIxbDIyLjcxNyAyMi43MTZjMTQuODYzIDE0Ljg2MyAzNC42MjUgMjMuMDQ4IDU1LjY0NSAyMy4wNDggNDMuMzkyIDAgNzguNjkzLTM1LjMwMiA3OC42OTMtNzguNjkzdi02OS42NTdjMTQuNDI2LTQuMTY0IDI3LjE2MS0xMi4zNDIgMzYuOTA1LTIzLjI1N3YyMC41MjJjMCAxMi44NCAyMCAxMi44NTkgMjAgMHYtMjAuNTIyYzkuNTIgMTAuNjYzIDIxLjg4OSAxOC43MjMgMzUuOTA1IDIyLjk3MnY2OS45NDZjMCA0My4zOTIgMzUuMzAyIDc4LjY5MyA3OC42OTMgNzguNjkzIDIxLjAyIDAgNDAuNzgxLTguMTg2IDU1LjY0NS0yMy4wNDhsMjIuNzE2LTIyLjcxNmMyOC41MTYtMy4wMjUgNTAuODA4LTI3LjIxNiA1MC44MDgtNTYuNTIxdi0yNS42OTdjLjAwMS01LjUyNC00LjQ3Ni0xMC4wMDEtOS45OTktMTAuMDAxem0tMTEyLjI5OC0xNDkuOTI3YzAtMTIuMzEzIDE5LjA5NS0xMi4zMTMgMTkuMDk1IDB2NC42NjRoLTE5LjA5NXptNDYuMzkzIDI0LjY2NHYxNS42OThjMCAyMC4zMTYtMTYuNTI5IDM2Ljg0NS0zNi44NDUgMzYuODQ1cy0zNi44NDUtMTYuNTI5LTM2Ljg0NS0zNi44NDV2LTE1LjY5OHptLTMyNi45MTQtMjQuNjY0YzAtMTIuMzEzIDE5LjA5NS0xMi4zMTMgMTkuMDk1IDB2NC42NjRoLTE5LjA5NXptNDYuMzkzIDI0LjY2NHYxNS42OThjMCAyMC4zMTYtMTYuNTI5IDM2Ljg0NS0zNi44NDUgMzYuODQ1cy0zNi44NDUtMTYuNTI5LTM2Ljg0NS0zNi44NDV2LTE1LjY5OHptLTEwNC44MTIgMTIwLjU5OWMwLTEyLjMxMyAxOS4wOTUtMTIuMzEzIDE5LjA5NSAwdjQuNjY1aC0xOS4wOTV6bTQ2LjM5MiAyNC42NjR2MTUuNjk3YzAgMjAuMzE2LTE2LjUyOSAzNi44NDUtMzYuODQ1IDM2Ljg0NXMtMzYuODQ1LTE2LjUyOC0zNi44NDUtMzYuODQ1di0xNS42OTd6bTEyMy40MTEtMjc4LjM2NHYtMTAuODUxaDczLjgyOHYxMC44NTFjMCA0Ny41OTYtNzMuODI4IDQ3LjU5Ni03My44MjggMHptMjI1LjA0MiAyNTMuN2MwLTEyLjMxMyAxOS4wOTUtMTIuMzEzIDE5LjA5NSAwdjQuNjY1aC0xOS4wOTV6bTQ2LjM5MyAyNC42NjR2MTUuNjk3YzAgMjAuMzE2LTE2LjUyOSAzNi44NDUtMzYuODQ1IDM2Ljg0NXMtMzYuODQ1LTE2LjUyOS0zNi44NDUtMzYuODQ1di0xNS42OTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yODEuMjA2IDQ0MS44NDctMTYuNDM4LTkuNDl2LTIxLjY0NWMwLTEyLjg0LTIwLTEyLjg1OS0yMCAwdjIxLjYxOWwtMTYuNDgzIDkuNTE2Yy0zLjA5NCAxLjc4Ni01IDUuMDg3LTUgOC42NnYyNC43OGMwIDMuNTczIDEuOTA2IDYuODc0IDUgOC42NmwyMS40NiAxMi4zOWMzLjA2NyAxLjc3MSA2LjkzMyAxLjc3MSAxMCAwbDIxLjQ2LTEyLjM5YzMuMDk0LTEuNzg2IDUtNS4wODcgNS04LjY2di0yNC43OGMuMDAxLTMuNTczLTEuOTA1LTYuODc0LTQuOTk5LTguNjZ6bS0xNSAyNy42NjctMTEuNDYgNi42MTctMTEuNDYtNi42MTd2LTEzLjIzM2wxMS40Ni02LjYxNyAxMS40NiA2LjYxN3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0NS41MzUgMzc0LjE4M2MxLjYzNSAzLjkyNCA1LjcxNiA2LjQ2NiA5Ljk2OCA2LjEzOCA0LjE2OS0uMzIyIDcuNzc4LTMuMjcyIDguODk3LTcuMzAzIDIuMzY0LTguNTEzLTcuMTkxLTE1Ljc1OS0xNC43NzMtMTEuMjM1LTQuMjE0IDIuNTE0LTUuOTQ1IDcuODgtNC4wOTIgMTIuNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",V_e="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im05IDE3YzQuNDExIDAgOC0zLjU4OSA4LTggMC0xLjI1Ni0uMjk5LTIuNDQxLS44MTgtMy41MDEgMS4xMDMtMS41NDggMi44OTgtMi40OTkgNC44MTgtMi40OTkgMi44NCAwIDUuMjc4IDIuMDY0IDUuNzk5IDQuODMxLS4xOS4xMDUtLjM3NS4yMTgtLjU1NC4zNDItMS4yMjQtLjc0Ny0yLjYzNi0xLjE3My00LjA3NC0xLjE3M2gtLjE3MXYyaC4xNzFjLjg5NiAwIDEuNzguMjIxIDIuNTguNjE1LS4wODMuMTA5LS4xNzEuMjExLS4yNDguMzI2bC0uMzM2LjUwNCAxLjY2NCAxLjEwOS4zMzYtLjUwNGMuODU3LTEuMjgzIDIuMjktMi4wNSAzLjgzMy0yLjA1IDEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMmgtN2MtMS4xMDMgMC0yLS44OTctMi0yaC0yYzAgMi4yMDYgMS43OTQgNCA0IDRoMjVjMi4yMDYgMCA0LTEuNzk0IDQtNHMtMS43OTQtNC00LTRjLS40NzMgMC0uOTM1LjA2LTEuMzg3LjE1Ny0xLjE1OS0zLjYyMy00LjU0Mi02LjE1Ny04LjQzLTYuMTU3LTMuNTQ5IDAtNi43NDYgMi4xMDctOC4xNDQgNS4zNjlsLS4yNzcuNjQ2Yy0uMzU2LjAxMy0uNzA2LjA1NS0xLjA1LjEyMy0uODItMy41NDItNC4wMjMtNi4xMzgtNy43MTItNi4xMzgtMi4zMTIgMC00LjQ4OCAxLjAzNC01Ljk3OCAyLjc1MS0xLjQ2Ny0xLjY4Mi0zLjYyLTIuNzUxLTYuMDIyLTIuNzUxLTQuNDExIDAtOCAzLjU4OS04IDhzMy41ODkgOCA4IDh6bTI5LjE4My0xNGMzLjA0NyAwIDUuNjc2IDIuMDE3IDYuNTQxIDQuODc3LS4xNjMuMDkzLS4zMjUuMTg4LS40NzkuMjk1LTEuMjI1LS43NDYtMi42MzYtMS4xNzItNC4wNzQtMS4xNzJoLS4xNzF2MmguMTcxYy44OTUgMCAxLjc4LjIyMSAyLjU4LjYxNS0uMDgzLjEwOS0uMTcxLjIxMS0uMjQ4LjMyNmwtLjMzNi41MDQgMS42NjQgMS4xMDkuMzM2LS41MDRjLjg1Ny0xLjI4MyAyLjI5LTIuMDUgMy44MzMtMi4wNSAxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDJoLTE0LjU1NmMuMzQ0LS41OTEuNTU2LTEuMjY4LjU1Ni0yIDAtMS41NzEtLjkxOC0yLjkxOS0yLjIzOC0zLjU3M2wuMTE2LS4yN2MxLjA4Mi0yLjUyNSAzLjU1Ny00LjE1NyA2LjMwNS00LjE1N3ptLTI5LjE4MyAwYzMuMzA5IDAgNiAyLjY5MSA2IDZzLTIuNjkxIDYtNiA2LTYtMi42OTEtNi02IDIuNjkxLTYgNi02eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMzd2LTQuNWw0LTN2LTIuNWgtMnYxLjVsLTIgMS41di01aC0ydjdsLTItMS41di0xLjVoLTJ2Mi41bDQgM3YyLjVoLTEwdi02LjVsNC0zdi0yLjVoLTJ2MS41bC0yIDEuNXYtNC41ODZsMS43MDctMS43MDctMS40MTQtMS40MTQtMi4yOTMgMi4yOTN2Ny40MTRsLTItMS41di0xLjVoLTJ2Mi41bDQgM3Y0LjVoLTE0di0xLjI3OWwuNDk2LS4xNjVjMy4yOTItMS4wOTggNS41MDQtNC4xNjYgNS41MDQtNy42MzYgMC0yLjE0OS0uODM3LTQuMTcxLTIuMzU3LTUuNjkxbC00LjY0My00LjY0My0zLjgyNSAzLjgyNWMtLjM5LS44MDItLjg5Ni0xLjU0Ni0xLjUzMi0yLjE4M2wtNC42NDMtNC42NDItNC42NDMgNC42NDNjLTEuNTIgMS41Mi0yLjM1NyAzLjU0Mi0yLjM1NyA1LjY5MSAwIDMuNDcgMi4yMTIgNi41MzggNS41MDMgNy42MzVsLjQ5Ny4xNjV2NC4yOGgtMTYuMjgxbC40OSAxLjk1OWMzLjUzOSAxNC4xNTUgMTYuMjAxIDI0LjA0MSAzMC43OTEgMjQuMDQxczI3LjI1Mi05Ljg4NiAzMC43OTEtMjQuMDQxbC40OS0xLjk1OXptLTI3LjM2NCA2LjI1OCAxLjE0NSAxLjcxN2MuMTQzLjIxNC4yMTkuNDY0LjIxOS43MjIgMCAuNzE5LS41ODQgMS4zMDMtMS4zMDMgMS4zMDNoLTE1LjM5NGMtLjcxOSAwLTEuMzAzLS41ODQtMS4zMDMtMS4zMDMgMC0uMjU4LjA3Ni0uNTA4LjIxOS0uNzIzbDEuMTQ2LTEuNzE4Yy40MTUtLjYyNC42MzUtMS4zNTEuNjM1LTIuMTAxIDAtLjc3LS4yNDYtMS41MjUtLjY4MS0yLjE1NWgxNS4zNjJjLS40MzUuNjMxLS42ODEgMS4zODUtLjY4MSAyLjE1NSAwIC43NS4yMiAxLjQ3Ny42MzYgMi4xMDN6bS0xLjYzNi0yMi44NDQgMy4yMjkgMy4yMjljMS4xNDIgMS4xNDIgMS43NzEgMi42NjIgMS43NzEgNC4yNzcgMCAyLjU1Ny0xLjYwNCA0LjgxNy00IDUuNjgxdi0xLjE4NmwyLjcwNy0yLjcwNy0xLjQxNC0xLjQxNC0xLjI5MyAxLjI5MnYtMi4xNzJsMS43MDctMS43MDctMS40MTQtMS40MTQtMi4yOTMgMi4yOTN2Ny4wMTRjLTIuMzk2LS44NjMtNC0zLjEyMi00LTUuNjggMC0xLjYxNS42MjktMy4xMzUgMS43NzEtNC4yNzd6bS0xNSA0LjUwNmMwLTEuNjE1LjYyOS0zLjEzNSAxLjc3MS00LjI3N2wzLjIyOS0zLjIyOSAzLjIyOSAzLjIyOWMuNjY2LjY2NiAxLjE1MyAxLjQ4MSAxLjQ0OSAyLjM3MS0xLjA4NCAxLjQtMS42NzggMy4xMDYtMS42NzggNC45MDYgMCAuNDY0LjA0Ni45MTguMTIyIDEuMzY0LS42MDkuNTgxLTEuMzI5IDEuMDM0LTIuMTIyIDEuMzE5di02LjNsMS44MzItMi43NDgtMS42NjQtMS4xMDktMS4zMjMgMS45ODUtMS4xMzgtMS4xMzgtMS40MTQgMS40MTQgMS43MDcgMS43MDd2Mi4xNzJsLTEuMjkzLTEuMjkzLTEuNDE0IDEuNDE0IDIuNzA3IDIuNzA3djEuMTg2Yy0yLjM5Ni0uODYzLTQtMy4xMjItNC01LjY4em02IDcuODAxLjQ5Ni0uMTY1Yy44MjUtLjI3NSAxLjU4OS0uNjk2IDIuMjgxLTEuMjE2LjkxNiAxLjk0OCAyLjU4NiAzLjUwMiA0LjcyNiA0LjIxNWwuNDk3LjE2NXYxLjI4aC04em0tNy40MTQgNi4yNzkuODkuODljLjMzMy4zMzMuNTI0Ljc5NS41MjQgMS4yNjUgMCAuMzU0LS4xMDQuNjk4LS4zLjk5M2wtMS4xNDUgMS43MTdjLS4zNjMuNTQ0LS41NTUgMS4xNzgtLjU1NSAxLjgzMiAwIDEuODIyIDEuNDgxIDMuMzAzIDMuMzAzIDMuMzAzaDE1LjM5NWMxLjgyMSAwIDMuMzAyLTEuNDgxIDMuMzAyLTMuMzAzIDAtLjY1NC0uMTkyLTEuMjg4LS41NTUtMS44MzJsLTEuMTQ1LTEuNzE2Yy0uMTk2LS4yOTUtLjMtLjYzOS0uMy0uOTk0IDAtLjQ3MS4xOTEtLjkzMy41MjQtMS4yNjZsLjg5LS44OWg2LjgzNmMtLjE2LjM4NS0uMjUuODA2LS4yNSAxLjI0NyAwIDEuNDkyIDEuMDExIDIuNzg4IDIuNDU5IDMuMTQ5bDQuMjIgMS4wNTVjLjc3OC4xOTYgMS4zMjEuODkxIDEuMzIxIDEuNjkzIDAgLjcxNy0uNDMgMS4zNTMtMS4wOTYgMS42MThsLTYuMjc1IDIuNTExYy0xLjU5Ny42MzktMi42MjkgMi4xNjMtMi42MjkgMy44ODIgMCAxLjQ5Ni44MDcgMi44ODggMi4xMDcgMy42M2wyLjcxNSAxLjU1MWMtMy4wMDQgMS4wNDktNi4yMTUgMS42MjEtOS41MzcgMS42NTNsLTUuMDg2LTMuMzkxYy0uMTI0LS4wODItLjE5OS0uMjIxLS4xOTktLjM3MSAwLS4yMTkuMTU3LS40MDQuMzc0LS40NGwzLjQzNS0uNTcyYzEuMjY5LS4yMTMgMi4xOTEtMS4zMDIgMi4xOTEtMi41OSAwLTEuNDQ3LTEuMTc3LTIuNjI0LTIuNjI0LTIuNjI0aC0yMC42MDVjLTIuOTg5LTMuMzY3LTUuMjU2LTcuNDMtNi40ODYtMTJ6bTE0LjUwMyAyMC4yNjIgMi4yMyAxLjQ4N2MtNi4zMjktLjc4NC0xMi4xMDUtMy41NDgtMTYuNjA3LTcuNzQ5aDE4LjY2NGMuMzQ0IDAgLjYyNC4yOC42MjQuNjI0IDAgLjMwNy0uMjE5LjU2NS0uNTIxLjYxNmwtMy40MzQuNTcyYy0xLjE4NS4xOTgtMi4wNDUgMS4yMTItMi4wNDUgMi40MTQgMCAuODE5LjQwNyAxLjU4MSAxLjA4OSAyLjAzNnptMTguMTAzLS44NzUtNC4wOTMtMi4zMzljLS42NzgtLjM4OC0xLjA5OS0xLjExMy0xLjA5OS0xLjg5NCAwLS44OTcuNTM5LTEuNjkyIDEuMzcyLTIuMDI1bDYuMjc1LTIuNTExYzEuNDI5LS41NzEgMi4zNTMtMS45MzUgMi4zNTMtMy40NzUgMC0xLjcyMS0xLjE2Ni0zLjIxNC0yLjgzNS0zLjYzMmwtNC4yMi0xLjA1NWMtLjU1Ny0uMTQtLjk0NS0uNjM3LS45NDUtMS4yMSAwLS42ODcuNTU5LTEuMjQ2IDEuMjQ2LTEuMjQ2aDE4LjQ2OGMtMi4zNzYgOC44MjgtOC41NjUgMTUuODE0LTE2LjUyMiAxOS4zODd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNyAxN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zOSAyMWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MyAxN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyAxOWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAyM2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAxN2gydjJoLTJ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Z_e="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiID4NCjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQoJPHBhdGggZD0iTTUxMS45NzYsNDE2LjA2M2MtMC4wMDUtMC4wNzUtMC4wMDQtMC4xNDktMC4wMTEtMC4yMjRjLTAuMDI3LTAuMjk3LTAuMDctMC41ODgtMC4xMzEtMC44NzMNCgkJYy0wLjAwNi0wLjAyOC0wLjAxNS0wLjA1Ni0wLjAyMi0wLjA4NGMtMC4wNTktMC4yNjItMC4xMzItMC41MTgtMC4yMTgtMC43NjhjLTAuMDIzLTAuMDY3LTAuMDQ4LTAuMTMyLTAuMDczLTAuMTk4DQoJCWMtMC4wODQtMC4yMjctMC4xNzktMC40NDgtMC4yODQtMC42NjNjLTAuMDE4LTAuMDM4LTAuMDMtMC4wNzctMC4wNDktMC4xMTVsLTQwLjExMi03OS4xMThWNzMuNzINCgkJYzAtOC4wMDYtNi41MTMtMTQuNTE5LTE0LjUxOS0xNC41MTlINTUuNDQxYy04LjAwNiwwLTE0LjUxOSw2LjUxMy0xNC41MTksMTQuNTE5djI2MC4yOThMMC44MTEsNDEzLjEzNw0KCQljLTAuMDE5LDAuMDM4LTAuMDMxLDAuMDc3LTAuMDQ5LDAuMTE1Yy0wLjEwNSwwLjIxNS0wLjE5OSwwLjQzNi0wLjI4NCwwLjY2MmMtMC4wMjUsMC4wNjYtMC4wNSwwLjEzMi0wLjA3MywwLjE5OQ0KCQljLTAuMDg1LDAuMjUxLTAuMTU5LDAuNTA4LTAuMjE4LDAuNzdjLTAuMDA2LDAuMDI3LTAuMDE1LDAuMDU0LTAuMDIxLDAuMDgxYy0wLjA2MSwwLjI4Ni0wLjEwNCwwLjU3Ny0wLjEzMSwwLjg3NA0KCQljLTAuMDA3LDAuMDc0LTAuMDA3LDAuMTQ5LTAuMDExLDAuMjIzQzAuMDE0LDQxNi4yMTcsMCw0MTYuMzcxLDAsNDE2LjUyOXYxOS4wMjZjMCw5LjUwOSw3LjczNSwxNy4yNDQsMTcuMjQ0LDE3LjI0NGg0NzcuNTEyDQoJCWM5LjUwOSwwLDE3LjI0NC03LjczNSwxNy4yNDQtMTcuMjQ0di0xOS4wMjZDNTEyLDQxNi4zNzEsNTExLjk4Niw0MTYuMjE3LDUxMS45NzYsNDE2LjA2M3ogTTU1LjkyMyw3NC4yMDNoNDAwLjE1NHYyNTQuMTA5DQoJCUg1NS45MjNWNzQuMjAzeiBNNTMuMDI5LDM0My4zMTFINDU4Ljk3bDMzLjMxOCw2NS43MTdoLTE2NC43OGwtOC4yNzEtMjkuOTg5Yy0xLjY4NC02LjEwNS03LjI4Mi0xMC4zNjktMTMuNjE1LTEwLjM2OWgtOTkuMjQ2DQoJCWMtNi4zMzMsMC0xMS45MzIsNC4yNjQtMTMuNjE1LDEwLjM2OGwtOC4yNzEsMjkuOTlIMTkuNzExTDUzLjAyOSwzNDMuMzExeiBNMzExLjk0OCw0MDkuMDI5SDIwMC4wNTJsNi45OTMtMjUuMzU4aDk3LjkxDQoJCUwzMTEuOTQ4LDQwOS4wMjl6IE00OTcsNDM1LjU1NGMwLDEuMjM3LTEuMDA3LDIuMjQ0LTIuMjQ0LDIuMjQ0SDE3LjI0NGMtMS4yMzcsMC0yLjI0NC0xLjAwNy0yLjI0NC0yLjI0NHYtMTEuNTI2aDQ4MlY0MzUuNTU0eiINCgkJLz4NCgk8cGF0aCBkPSJNNDMyLjU3NywyMTMuNzU2Yy00LjE0MywwLTcuNSwzLjM1Ny03LjUsNy41djc2LjA1NUg4Ni45MjN2LTc2LjA1NWMwLTQuMTQzLTMuMzU3LTcuNS03LjUtNy41DQoJCQljLTQuMTQzLDAtNy41LDMuMzU3LTcuNSw3LjV2NzkuMjk0YzAsNi40ODUsNS4yNzUsMTEuNzYxLDExLjc2MSwxMS43NjFoMzQ0LjYzM2M2LjQ4NSwwLDExLjc2MS01LjI3NSwxMS43NjEtMTEuNzYxdi03OS4yOTQNCgkJCUM0NDAuMDc3LDIxNy4xMTUsNDM2LjcyLDIxMy43NTYsNDMyLjU3NywyMTMuNzU2eiIvPg0KCTxwYXRoIGQ9Ik00MjguMzE2LDkwLjIwM0g4My42ODRjLTYuNDg1LDAtMTEuNzYxLDUuMjc1LTExLjc2MSwxMS43NjF2NzkuMjk0YzAsNC4xNDMsMy4zNTcsNy41LDcuNSw3LjVjNC4xNDMsMCw3LjUtMy4zNTcsNy41LTcuNQ0KCQkJdi03Ni4wNTVoMzM4LjE1NHY3Ni4wNTVjMCw0LjE0MywzLjM1Nyw3LjUsNy41LDcuNXM3LjUtMy4zNTcsNy41LTcuNXYtNzkuMjk0QzQ0MC4wNzcsOTUuNDc3LDQzNC44MDIsOTAuMjAzLDQyOC4zMTYsOTAuMjAzeiIvPg0KPC9nPg0KPC9zdmc+DQo=",X_e="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTY0LjM5OSAyMDUuODcyYzQuMDk5LjY2NCA4LjIwNi0xLjI3MyAxMC4yODQtNC45MWw2MC0xMDVjMS43NjktMy4wOTUgMS43NTYtNi44OTctLjAzMy05Ljk4cy01LjA4NS00Ljk4MS04LjY0OS00Ljk4MWgtMzYuNjgybC0xMy40ODYtNzIuODIxYy0uNzcyLTQuMTY5LTQuMDg5LTcuMzk4LTguMjc3LTguMDU4LTQuMTg1LS42Ni04LjMzNyAxLjM5NC0xMC4zNTMgNS4xMjNsLTYwIDExMWMtMS42NzUgMy4wOTktMS41OTcgNi44NTEuMjA4IDkuODc2IDEuODA0IDMuMDI1IDUuMDY2IDQuODc5IDguNTg5IDQuODc5aDM2LjgwMmwxMy4zOTMgNjYuOTYxYy44MTcgNC4wOSA0LjA4OCA3LjI0MiA4LjIwNCA3LjkxMXptLTEzLjM5OS05NC44NzFoLTI4LjIyOGwzOC41NTQtNzEuMzIzIDkuODQxIDUzLjE0NGMuODc4IDQuNzQgNS4wMTMgOC4xNzkgOS44MzMgOC4xNzloMjcuNzY5bC0zOC4yIDY2Ljg1LTkuNzYzLTQ4LjgxMWMtLjkzNS00LjY3NC01LjAzOS04LjAzOS05LjgwNi04LjAzOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwIDQ1OS4wMDFjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDN2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoNDB2MjNjMCA1LjUyMiA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3OCAxMC0xMHYtMjNoMjZjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzgtMTAtMTAtMTBoLTU2di02OGMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHY2OGgtNDB2LTIyM2g0MHY2NWMwIDUuNTIzIDQuNDc4IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwdi03NWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwaC02MGMtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHYyMzNoLTQwdi0xNzNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTB2MTczaC00MHYtMTEzYzAtNS41MjMtNC40NzgtMTAtMTAtMTBoLTYwYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwdjExM2gtNzN2LTQ0OWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHYyNmgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDBoLTIzYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwczQuNDc4IDEwIDEwIDEwaDIzdjQwaC0yM2MtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGgyM3Y0MGgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDBoLTIzYy01LjUyMiAwLTEwIDQuNDc3LTEwIDEwczQuNDc4IDEwIDEwIDEwaDIzdjQwaC0yM2MtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGgyM3Y0MGgtMjNjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMjN2NDN6bTI1Ni0xNjNoNDB2MTYzaC00MHptLTEyMCA2MGg0MHYxMDNoLTQweiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDM2IDE0Ni4wMDFjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHYtNjBjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoMzUuODU3bC0xMDAgMTAwaC01NS44NTdjLTIuNjUyIDAtNS4xOTUgMS4wNTQtNy4wNzEgMi45MjlsLTkwIDkwYy0zLjkwNSAzLjkwNS0zLjkwNSAxMC4yMzcgMCAxNC4xNDMgMy45MDcgMy45MDUgMTAuMjM2IDMuOTA0IDE0LjE0MyAwbDg3LjA3MS04Ny4wNzFoNTUuODU3YzIuNjUyIDAgNS4xOTUtMS4wNTQgNy4wNzEtMi45MjlsMTAyLjkyOS0xMDIuOTN2MzUuODU3YzAgNS41MjQgNC40NzggMTAuMDAxIDEwIDEwLjAwMXoiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iNDM2IiBjeT0iMzQ2LjAwMSIgcj0iMTAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",K_e="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cmVjdCB4PSIyMTYiIHk9Ijg4LjQ4OSIgd2lkdGg9IjgwIiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjIxNiIgeT0iNjIuNDg5IiB3aWR0aD0iODAiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwLDUyLjQ5NHY5LjI4NWMtMi4zNDctMC44MzItNC44NzItMS4yODUtNy41LTEuMjg1Yy0xMi40MDYsMC0yMi41LDEwLjA5My0yMi41LDIyLjVjMCwxMi40MDcsMTAuMDk0LDIyLjUsMjIuNSwyMi41DQoJCQljMi42MjgsMCw1LjE1My0wLjQ1Myw3LjUtMS4yODV2MzU1LjI5OGg3LjVjOC42OTksMCwxMy4zNTQtMi44MTksMTcuMDk1LTUuMDg1YzIuODk5LTEuNzU1LDQuODE0LTIuOTE1LDkuMzI1LTIuOTE1DQoJCQljNC41MTEsMCw2LjQyNiwxLjE2LDkuMzI1LDIuOTE1YzMuNzQsMi4yNjYsOC4zOTYsNS4wODUsMTcuMDk1LDUuMDg1YzguNjk4LDAsMTMuMzU0LTIuODE5LDE3LjA5NC01LjA4NQ0KCQkJYzIuODk3LTEuNzU1LDQuODEzLTIuOTE1LDkuMzIyLTIuOTE1YzQuNTA5LDAsNi40MjQsMS4xNiw5LjMyMSwyLjkxNWMzLjc0LDIuMjY2LDguMzk1LDUuMDg1LDE3LjA5Myw1LjA4NQ0KCQkJczEzLjM1NC0yLjgxOSwxNy4wOTQtNS4wODVjMi44OTctMS43NTUsNC44MTMtMi45MTUsOS4zMjEtMi45MTVjNC41MSwwLDYuNDI1LDEuMTYsOS4zMjIsMi45MTUNCgkJCWMzLjc0LDIuMjY2LDguMzk2LDUuMDg1LDE3LjA5Myw1LjA4NWw3LjUtMC4wMTN2LTQwN0gzMHogTTIyLjUsOTAuNDk0Yy00LjEzNiwwLTcuNS0zLjM2NC03LjUtNy41YzAtNC4xMzYsMy4zNjQtNy41LDcuNS03LjUNCgkJCXM3LjUsMy4zNjQsNy41LDcuNUMzMCw4Ny4xMywyNi42MzYsOTAuNDk0LDIyLjUsOTAuNDk0eiBNMTg4LjUsNDQyLjY2NGMtMC41ODUtMC4zMjUtMS4xNzktMC42ODUtMS44MjEtMS4wNzQNCgkJCWMtMy4zMzktMi4wMjItNy40MDctNC40ODYtMTQuNDI5LTQuOTkxVjIyNi41NTVoLTE1djIxMi40MzFjLTEuODI0LDAuODI3LTMuMzU1LDEuNzU1LTQuNzU4LDIuNjA0DQoJCQljLTIuODk3LDEuNzU1LTQuODEzLDIuOTE1LTkuMzIyLDIuOTE1Yy0xLjY0OCwwLTIuOTUtMC4xNTUtNC4wNzktMC40MzhoMy4xNTlWMTQxLjk5NGgtMTV2Mjk2LjIzOA0KCQkJYy0yLjczNC0xLjAwNS02LjA5Ny0xLjcyNi0xMC40OTQtMS43MjZjLTEuNjM4LDAtMy4xMzMsMC4xLTQuNTA2LDAuMjc4di0yMTYuNzloLTE1djIyMi45ODhjLTEuODQ5LDAuOTUxLTMuNzM4LDEuNTI1LTYuOTEsMS41MjUNCgkJCWMtMy44NDMsMC01LjgwMi0wLjg0Mi04LjA5LTIuMTc2VjE0MS45OTRoLTE1djI5NC42NjFjLTEuMDQxLTAuMDk2LTIuMTQ4LTAuMTQ4LTMuMzMtMC4xNDhjLTguNjk5LDAtMTMuMzU0LDIuODE5LTE3LjA5NSw1LjA4NQ0KCQkJYy0wLjY0NCwwLjM5LTEuMjM5LDAuNzUtMS44MjUsMS4wNzVWNjcuNDk0aDIyLjI1djQxaDE1di00MWg0NXY0MWgxNXYtNDFoNDYuMjVWNDQyLjY2NHoiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSIxMzYuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iNjYiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSIxMTEuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMTU3LjI1IiB5PSI4Ni45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSI5Ny4yNSIgeT0iMTMwLjk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjY2Ii8+DQogICAgICAgIDxyZWN0IHg9Ijk3LjI1IiB5PSI4MC45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSI5Ny4yNSIgeT0iMTA1Ljk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iMTEzLjk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iMTM4Ljk4OSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjY2Ii8+DQogICAgICAgIDxyZWN0IHg9IjQzNS43NSIgeT0iODguOTk0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzc1Ljc1IiB5PSIxNTUuOTg5IiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzc1Ljc1IiB5PSI4MC45OTQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSIzNzUuNzUiIHk9IjEwNS45ODkiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cmVjdCB4PSIzNzUuNzUiIHk9IjEzMC45ODkiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIvPg0KICAgICAgICA8cGF0aCBkPSJNNDg5LjUsNjAuNDk0Yy0yLjYyOCwwLTUuMTUzLDAuNDUzLTcuNSwxLjI4NXYtOS4yODVIMzA4LjV2NDA3LjAxM2g3LjVjOC42OTksMCwxMy4zNTQtMi44MTksMTcuMDk1LTUuMDg1DQoJCQljMi44OTktMS43NTUsNC44MTQtMi45MTUsOS4zMjUtMi45MTVjNC41MTEsMCw2LjQyNiwxLjE2LDkuMzI1LDIuOTE1YzMuNzQsMi4yNjYsOC4zOTYsNS4wODUsMTcuMDk1LDUuMDg1DQoJCQljOC42OTgsMCwxMy4zNTQtMi44MTksMTcuMDk0LTUuMDg1YzIuODk3LTEuNzU1LDQuODEzLTIuOTE1LDkuMzIyLTIuOTE1YzQuNTA5LDAsNi40MjQsMS4xNiw5LjMyMSwyLjkxNQ0KCQkJYzMuNzQsMi4yNjYsOC4zOTUsNS4wODUsMTcuMDkzLDUuMDg1czEzLjM1NC0yLjgxOSwxNy4wOTQtNS4wODVjMi44OTctMS43NTUsNC44MTMtMi45MTUsOS4zMjEtMi45MTUNCgkJCWM0LjUxLDAsNi40MjUsMS4xNiw5LjMyMiwyLjkxNWMzLjc0LDIuMjY2LDguMzk2LDUuMDg1LDE3LjA5Myw1LjA4NWw3LjUtMC4wMTNWMTA0LjIwOGMyLjM0NywwLjgzMiw0Ljg3MiwxLjI4NSw3LjUsMS4yODUNCgkJCWMxMi40MDYsMCwyMi41LTEwLjA5MywyMi41LTIyLjVDNTEyLDcwLjU4NSw1MDEuOTA2LDYwLjQ5NCw0ODkuNSw2MC40OTR6IE00NjcsNDQyLjY2NGMtMC41ODUtMC4zMjUtMS4xNzktMC42ODUtMS44MjEtMS4wNzQNCgkJCWMtMy4zMzktMi4wMjItNy40MDctNC40ODYtMTQuNDI5LTQuOTkxVjIyNi41NTVoLTE1djIxMi40MzFjLTEuODI0LDAuODI3LTMuMzU1LDEuNzU1LTQuNzU4LDIuNjA0DQoJCQljLTIuODk3LDEuNzU1LTQuODEzLDIuOTE1LTkuMzIyLDIuOTE1Yy0xLjY0OCwwLTIuOTUtMC4xNTUtNC4wNzktMC40MzhoMy4xNTlWMTQxLjk5NGgtMTV2Mjk2LjIzOA0KCQkJYy0yLjczNC0xLjAwNS02LjA5Ny0xLjcyNi0xMC40OTQtMS43MjZjLTEuNjM4LDAtMy4xMzMsMC4xLTQuNTA2LDAuMjc4di0yNTAuNzloLTE1djI1Ni45ODhjLTEuODQ5LDAuOTUxLTMuNzM4LDEuNTI1LTYuOTEsMS41MjUNCgkJCWMtMy44NDMsMC01LjgwMi0wLjg0Mi04LjA5LTIuMTc2VjE0MS45OTRoLTE1djI5NC42NjFjLTEuMDQxLTAuMDk2LTIuMTQ4LTAuMTQ4LTMuMzMtMC4xNDhjLTguNjk5LDAtMTMuMzU0LDIuODE5LTE3LjA5NSw1LjA4NQ0KCQkJYy0wLjY0NCwwLjM5LTEuMjM5LDAuNzUtMS44MjUsMS4wNzVWNjcuNDk0aDIyLjI1djQxaDE1di00MWg0NXY0MWgxNXYtNDFINDY3VjQ0Mi42NjR6IE00ODkuNSw5MC40OTRjLTQuMTM2LDAtNy41LTMuMzY0LTcuNS03LjUNCgkJCWMwLTQuMTM2LDMuMzY0LTcuNSw3LjUtNy41czcuNSwzLjM2NCw3LjUsNy41QzQ5Nyw4Ny4xMyw0OTMuNjM2LDkwLjQ5NCw0ODkuNSw5MC40OTR6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",q_e="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00MiAxMmMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMi00YzAgMS4xMDMtLjg5NyAyLTIgMnMtMi0uODk3LTItMmMwLS4xNzguMDMxLS4zNDcuMDc1LS41MTFsMS4yMTggMS4yMTggMS40MTQtMS40MTQtMS4yMTgtMS4yMThjLjE2NC0uMDQ0LjMzMy0uMDc1LjUxMS0uMDc1IDEuMTAzIDAgMiAuODk3IDIgMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyIDRjLTIuMjA2IDAtNCAxLjc5NC00IDRzMS43OTQgNCA0IDQgNC0xLjc5NCA0LTQtMS43OTQtNC00LTR6bTAgNmMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTJjLjE3OCAwIC4zNDcuMDMxLjUxMS4wNzVsLTEuMjE4IDEuMjE4IDEuNDE0IDEuNDE0IDEuMjE4LTEuMjE4Yy4wNDQuMTY0LjA3NS4zMzMuMDc1LjUxMSAwIDEuMTAzLS44OTcgMi0yIDJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSAxMmgyYzEuNjU0IDAgMy0xLjM0NiAzLTNzLTEuMzQ2LTMtMy0zaC0yYy0xLjY1NCAwLTMgMS4zNDYtMyAzczEuMzQ2IDMgMyAzem0wLTRoMmMuNTUxIDAgMSAuNDQ5IDEgMXMtLjQ0OSAxLTEgMWgtMmMtLjU1MSAwLTEtLjQ0OS0xLTFzLjQ0OS0xIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzIDZoLTJjLTEuNjU0IDAtMyAxLjM0Ni0zIDNzMS4zNDYgMyAzIDNoMmMxLjY1NCAwIDMtMS4zNDYgMy0zcy0xLjM0Ni0zLTMtM3ptMCA0aC0yYy0uNTUxIDAtMS0uNDQ5LTEtMXMuNDQ5LTEgMS0xaDJjLjU1MSAwIDEgLjQ0OSAxIDFzLS40NDkgMS0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02Mi45OTcgNThjMC0uMTYzLS4wMzctLjMyNi0uMTE3LS40NzRsLTIuODgtNS4zNDl2LTM4LjE3Ny0xMGMwLTEuNjU0LTEuMzQ2LTMtMy0zaC01MGMtMS42NTQgMC0zIDEuMzQ2LTMgM3YxMCAzOC4xNzdsLTIuODggNS4zNDljLS4wOC4xNDgtLjExNy4zMTEtLjExNy40NzRoLS4wMDN2MmMwIDEuNjU0IDEuMzQ2IDMgMyAzaDU2YzEuNjU0IDAgMy0xLjM0NiAzLTN2LTJ6bS02Ljk5Ny0xMy4yNTF2LTI5Ljc0OWgydjMzLjQ2M3ptLTQxLjkzMS0yLjc0OWMuMTg5IDEuNTAyLjc5MiAyLjg3NSAxLjY5NSA0aC0yLjc2NHYtNHptMzYuOTMxIDB2NGgtMi43NjVjLjkwNC0xLjEyNSAxLjUwNy0yLjQ5OCAxLjY5NS00em0tNS42OSA0aC0uMzF2LTIuMzgyYy40MDItLjQ2LjctMS4wMDkuODU4LTEuNjE4aDIuMDUyYy0uMjgyIDEuNjY2LTEuMjQ2IDMuMTAxLTIuNiA0em0tOC4zMS0xLjY5di0yLjMxaDEuMTQyYy40NDcgMS43MjEgMiAzIDMuODU4IDMgLjM0NyAwIC42NzgtLjA1OCAxLS4xNDJ2MS4xNDJoLTQuMzFjLS42Ny0uNDQ1LTEuMjQ1LTEuMDItMS42OS0xLjY5em0zLjI3OC00LjMxYy4zNDctLjU5NS45ODUtMSAxLjcyMi0xczEuMzc1LjQwNSAxLjcyMiAxem0yLjcyMiAydi43MjJjLS4yOTUuMTcyLS42MzQuMjc4LTEgLjI3OC0uNzM3IDAtMS4zNzUtLjQwNS0xLjcyMi0xem0yLjg1OC0yYy0uNDQ3LTEuNzIxLTItMy0zLjg1OC0zcy0zLjQxMSAxLjI3OS0zLjg1OCAzaC0yLjA1MmMuNDc4LTIuODMzIDIuOTQyLTUgNS45MS01czUuNDMxIDIuMTY3IDUuOTEgNXptLTExLjcyNS03LjA4NGMuNTEzLTIuNzkyIDIuOTU5LTQuOTE2IDUuODk3LTQuOTE2IDEuNjEgMCAzLjA2NS42MzEgNC4xNDMgMS42Ni0uOTczLS40MjMtMi4wNDYtLjY2LTMuMTczLS42Ni0yLjkxOCAwLTUuNDY5IDEuNTc2LTYuODY3IDMuOTE2em0uODY3IDQuMDg0YzAtMy4zMDkgMi42OTEtNiA2LTYgMi4zMzUgMCA0LjM1NyAxLjM0MyA1LjM0OCAzLjI5NC0xLjI1My0uODE1LTIuNzQ1LTEuMjk0LTQuMzQ4LTEuMjk0LTMuMDA0IDAtNS42MjQgMS42NjctNi45OTIgNC4xMjItLjAwMS0uMDQxLS4wMDgtLjA4MS0uMDA4LS4xMjJ6bS0uOTMxIDVjLjEyOSAxLjAyNy40NDkgMS45OTYuOTMxIDIuODY0djEuMTM2aC02di0xLjEzNmMuNDgyLS44NjkuODAyLTEuODM3LjkzMS0yLjg2NHptLTEzLjA2OSA0di0xLjE0MmMuMzIyLjA4NC42NTMuMTQyIDEgLjE0MiAxLjg1OCAwIDMuNDExLTEuMjc5IDMuODU4LTNoMS4xNDJ2Mi4zMWMtLjQ0NS42Ny0xLjAyIDEuMjQ1LTEuNjkgMS42OXptMC00aDIuNzIyYy0uMzQ3LjU5NS0uOTg1IDEtMS43MjIgMS0uMzY2IDAtLjcwNS0uMTA2LTEtLjI3OHptLS43MjItMmMuMzQ3LS41OTUuOTg1LTEgMS43MjItMXMxLjM3NS40MDUgMS43MjIgMXptOC43MTQtMi44NzhjLTEuMzY4LTIuNDU1LTMuOTg4LTQuMTIyLTYuOTkyLTQuMTIyLTEuNjAzIDAtMy4wOTUuNDc5LTQuMzQ4IDEuMjk0Ljk5MS0xLjk1MSAzLjAxMy0zLjI5NCA1LjM0OC0zLjI5NCAzLjMwOSAwIDYgMi42OTEgNiA2IDAgLjA0MS0uMDA3LjA4MS0uMDA4LjEyMnptLTUuOTkyLTguMTIyYy0xLjEwNiAwLTIuMTYuMjI2LTMuMTE5LjYzNCAxLjA3Ni0xLjAxNSAyLjUyMi0xLjYzNCA0LjExOS0xLjYzNCAyLjk2MSAwIDUuNDIyIDIuMTU4IDUuOTA3IDQuOTgzLTEuMzg4LTIuMzc4LTMuOTYxLTMuOTgzLTYuOTA3LTMuOTgzem0tMSA2YzIuOTY3IDAgNS40MzEgMi4xNjcgNS45MSA1aC0yLjA1MmMtLjQ0Ny0xLjcyMS0yLTMtMy44NTgtM3MtMy40MTEgMS4yNzktMy44NTggM2gtMi4wNTJjLjQ3OS0yLjgzMyAyLjk0My01IDUuOTEtNXptLTMuODU4IDdjLjE1OC42MDkuNDU2IDEuMTU3Ljg1OCAxLjYxOHYyLjM4MmgtLjMxYy0xLjM1NC0uODk5LTIuMzE5LTIuMzM0LTIuNi00em0tNS4xNDIgNmg1LjEzNmMuMjc4LjE1NC41NjcuMjkuODY0LjQxMXYzLjU4OWgtNnptOCAuOTMxYy4zMjguMDQxLjY2MS4wNjkgMSAuMDY5IDEuNDAxIDAgMi43MTgtLjM2NCAzLjg2NC0xaDEuMTM2djRoLTZ6bTgtLjkzMWg2djRoLTZ6bTggMGgxLjEzNmMxLjE0Ny42MzYgMi40NjMgMSAzLjg2NCAxIC4zMzkgMCAuNjcyLS4wMjggMS0uMDY5djMuMDY5aC02em04IC40MTFjLjI5Ny0uMTIxLjU4Ni0uMjU3Ljg2NC0uNDExaDUuMTM2djRoLTZ6bTcuOTY4LTcuNTcyLjAxOS0uMDAzLTIuNzc0LTE2LjY0M2MtLjIxMi0xLjI3MS0xLjMwMS0yLjE5My0yLjU4OS0yLjE5My0xLjQ0NyAwLTIuNjI0IDEuMTc3LTIuNjI0IDIuNjI0djEuMzc2aDJ2LTEuMzc2YzAtLjM0NC4yOC0uNjI0LjYyNC0uNjI0LjMwNyAwIC41NjUuMjE5LjYxNi41MjFsMi41OCAxNS40NzloLS44ODljLS4xMjktMS4wMy0uNDUxLTItLjkzNC0yLjg3IDAtLjA0NC4wMDMtLjA4Ni4wMDMtLjEzIDAtMS40Mi0uMzc2LTIuNzUxLTEuMDI3LTMuOTA4LS40NTctNC4wNTQtMy44NDEtNy4wOTItNy45NDMtNy4wOTItNC40MTEgMC04IDMuNTg5LTggOCAwIDEuMzczLjM2NCAyLjcxMyAxLjAzMSAzLjkwNC4wODIuNzIxLjI2MSAxLjQyNS41MzIgMi4wOTZoLTMuMTg3Yy4yNjMtLjY1LjQ0Mi0xLjMzLjUyNy0yLjAyOC42OTItMS4yMDggMS4wNjctMi41NzQgMS4wNjctMy45NzIgMC00LjQxMS0zLjU4OS04LTgtOC00LjA4IDAtNy40NDggMy4wMDYtNy45MzQgNy4wMjctLjY3NCAxLjE3Mi0xLjA2NiAyLjUyNi0xLjA2NiAzLjk3MyAwIC4wNDQuMDAzLjA4Ni4wMDQuMTMtLjQ4NC44Ny0uODA1IDEuODQtLjkzNSAyLjg3aC0uODg5bDIuNTgtMTUuNDc5Yy4wNTEtLjMwMi4zMDktLjUyMS42MTYtLjUyMS4zNDQgMCAuNjI0LjI4LjYyNC42MjR2MS4zNzZoMnYtMS4zNzZjMC0xLjQ0Ny0xLjE3Ny0yLjYyNC0yLjYyNC0yLjYyNC0xLjI4OCAwLTIuMzc3LjkyMi0yLjU4OCAyLjE5MmwtMi43NzQgMTYuNjQ0LjAxOS4wMDNjLS4wMS4wNTQtLjAzMy4xMDQtLjAzMy4xNjF2M2gtMXYtMjNoNDR2MjNoLTF2LTNjMC0uMDU3LS4wMjMtLjEwNy0uMDMyLS4xNjF6bTEuMDMyLTI1LjgzOXY0aC00NHYtNHptLTIwLTJoLTR2LTRjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptLTI4LTljMC0uNTUxLjQ0OS0xIDEtMWg1MGMuNTUxIDAgMSAuNDQ5IDEgMXY5aC0yMnYtNGMwLTIuMjA2LTEuNzk0LTQtNC00cy00IDEuNzk0LTQgNHY0aC0yMnptMCAxMWgydjI5Ljc0OWwtMiAzLjcxNHptMy41OTcgMzFoMS40MDN2N2MwIC41NTMuNDQ4IDEgMSAxaDQwYy41NTIgMCAxLS40NDcgMS0xdi03aDEuNDAzbDUuOTIzIDExaC01Ni42NTJ6bTUwLjQwMyAxNWgtNTZjLS41NTEgMC0xLS40NDgtMS0xdi0xaDU4djFjMCAuNTUyLS40NDkgMS0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMiAxNmg0djJoLTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCAxNmg0djJoLTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMSA5aDJ2MmgtMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",exe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTExMy4yMDYgMTA2LjI2NWgtMTMuNjIzdi04Ni4yOGExLjc0OSAxLjc0OSAwIDAgMCAtMS41NTQtMS43MzhsLTQ2LTUuMTkyYTEuNzUgMS43NSAwIDAgMCAtMS45NDYgMS43Mzl2My40NDFoLTE5LjkxNmExLjc1IDEuNzUgMCAwIDAgLTEuNzUgMS43NXY4Ni4yOGgtMTMuNjIzYTEuNzUgMS43NSAwIDEgMCAwIDMuNWgzNS4yODl2My40NDFhMS43NSAxLjc1IDAgMCAwIDEuNzUgMS43NSAxLjYxIDEuNjEgMCAwIDAgLjItLjAxMWw0NS45LTUuMThoMTUuMjc2YTEuNzUgMS43NSAwIDAgMCAwLTMuNXptLTgxLjI4OS04NC41M2gxOC4xNjZ2NC41aC0xMS45MTdhMS43NSAxLjc1IDAgMCAwIC0xLjc1IDEuNzV2NzguMjhoLTQuNXptOCA4NC41M3YtNzYuNTNoMTAuMTY2djc2LjUzem0xMy42NjYtODkuNTEzIDQyLjUgNC44djg0LjlsLTQyLjUgNC44eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjEuMTI1IDU4Ljc5MmE1LjIwOCA1LjIwOCAwIDEgMCA1LjIwOCA1LjIwOCA1LjIxNCA1LjIxNCAwIDAgMCAtNS4yMDgtNS4yMDh6bTAgNi45MTZhMS43MDggMS43MDggMCAxIDEgMS43MDgtMS43MDggMS43MSAxLjcxIDAgMCAxIC0xLjcwOCAxLjcwOHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",txe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDAxLjA2NywwSDExMC45MzNjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y0OTQuOTMzYzAsNC43MTksMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjkwLjEzMw0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1Y4LjUzM0M0MDkuNiwzLjgxNCw0MDUuNzc3LDAsNDAxLjA2NywweiBNMzkyLjUzMyw0OTQuOTMzSDExOS40NjdWMTcuMDY3aDI3My4wNjdWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Ni45MzMsMzQuMTMzSDE0NS4wNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y0NjAuOGMwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzaDIyMS44NjcNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzN2LTQ2MC44QzM3NS40NjcsMzcuOTQ4LDM3MS42NDQsMzQuMTMzLDM2Ni45MzMsMzQuMTMzeiBNMzU4LjQsNDk0LjkzM0gxNTMuNlY1MS4yaDIwNC44VjQ5NC45MzN6DQoJCQkiLz4NCiAgICAgICAgPHBhdGggZD0iTTI1Niw2OC4yNjdjLTQ3LjA1MywwLTg1LjMzMywzOC4yODEtODUuMzMzLDg1LjMzM3Y4LjUzM2MwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzaDE1My42DQoJCQljNC43MSwwLDguNTMzLTMuODE0LDguNTMzLTguNTMzVjE1My42QzM0MS4zMzMsMTA2LjU0NywzMDMuMDUzLDY4LjI2NywyNTYsNjguMjY3eiBNMTg3LjczMywxNTMuNg0KCQkJYzAtMzcuNjQxLDMwLjYyNi02OC4yNjcsNjguMjY3LTY4LjI2N2MzNy42NDEsMCw2OC4yNjcsMzAuNjI2LDY4LjI2Nyw2OC4yNjdIMTg3LjczM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzOC45MzMsMTg3LjczM0gxNzkuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzMNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMTk2LjI2N0MyNDcuNDY3LDE5MS41NDgsMjQzLjY0NCwxODcuNzMzLDIzOC45MzMsMTg3LjczM3ogTTIzMC40LDMwNy4yaC00Mi42NjdWMjA0LjhIMjMwLjQNCgkJCVYzMDcuMnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMi44LDE4Ny43MzNoLTU5LjczM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YxOTYuMjY3QzM0MS4zMzMsMTkxLjU0OCwzMzcuNTEsMTg3LjczMywzMzIuOCwxODcuNzMzeiBNMzI0LjI2NywzMDcuMkgyODEuNlYyMDQuOGg0Mi42NjdWMzA3LjINCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzOC45MzMsMzQxLjMzM0gxNzkuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzMNCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMzQ5Ljg2N0MyNDcuNDY3LDM0NS4xNDgsMjQzLjY0NCwzNDEuMzMzLDIzOC45MzMsMzQxLjMzM3ogTTIzMC40LDQ2MC44aC00Mi42NjdWMzU4LjRIMjMwLjQNCgkJCVY0NjAuOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMi44LDM0MS4zMzNoLTU5LjczM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YzNDkuODY3QzM0MS4zMzMsMzQ1LjE0OCwzMzcuNTEsMzQxLjMzMywzMzIuOCwzNDEuMzMzeiBNMzI0LjI2Nyw0NjAuOEgyODEuNlYzNTguNGg0Mi42NjdWNDYwLjgNCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI1Niw2OC4yNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y4NS4zMzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1Y3Ni44DQoJCQlDMjY0LjUzMyw3Mi4wODEsMjYwLjcxLDY4LjI2NywyNTYsNjguMjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzIwLjQzNSw5Ny42OThjLTMuMzI4LTMuMzM2LTguNzMtMy4zMzYtMTIuMDY2LDBMMjQ5Ljk2NywxNTYuMWMtMy4zMzcsMy4zMzctMy4zMzcsOC43MywwLDEyLjA2Ng0KCQkJYzEuNjY0LDEuNjY0LDMuODQ5LDIuNSw2LjAzMywyLjVjMi4xODUsMCw0LjM2OS0wLjgzNiw2LjAzMy0yLjVsNTguNDAyLTU4LjQwMkMzMjMuNzcyLDEwNi40MjgsMzIzLjc3MiwxMDEuMDM1LDMyMC40MzUsOTcuNjk4eiINCiAgICAgICAgLz4NCiAgICAgICAgPHBhdGggZD0iTTI2Mi4wMzMsMTU2LjFMMjAzLjYzMSw5Ny42OWMtMy4zMjgtMy4zMzctOC43My0zLjMzNy0xMi4wNjYsMGMtMy4zMzcsMy4zMzYtMy4zMzcsOC43MywwLDEyLjA2Nmw1OC40MDIsNTguNDExDQoJCQljMS42NjQsMS42NjQsMy44NDksMi41LDYuMDMzLDIuNWMyLjE4NSwwLDQuMzY5LTAuODM2LDYuMDMzLTIuNUMyNjUuMzcsMTY0LjgzLDI2NS4zNywxNTkuNDM3LDI2Mi4wMzMsMTU2LjF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01OS43MzMsNDk0LjkzM2gtNTEuMmMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzQzAsNTA4LjE4NiwzLjgyMyw1MTIsOC41MzMsNTEyaDUxLjINCgkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNDNjguMjY3LDQ5OC43NDgsNjQuNDQ0LDQ5NC45MzMsNTkuNzMzLDQ5NC45MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDMuNDY3LDQ5NC45MzNoLTEwMi40Yy00LjcxLDAtOC41MzMsMy44MTQtOC41MzMsOC41MzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gxMDIuNA0KCQkJYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM0M1MTIsNDk4Ljc0OCw1MDguMTc3LDQ5NC45MzMsNTAzLjQ2Nyw0OTQuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",sxe="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMjU2IDE2MGE5NiA5NiAwIDEgMCA5NiA5NiA5Ni4xMDggOTYuMTA4IDAgMCAwIC05Ni05NnptMCAxNzZhODAgODAgMCAxIDEgODAtODAgODAuMDkxIDgwLjA5MSAwIDAgMSAtODAgODB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTI4YTEyOCAxMjggMCAxIDAgMTI4IDEyOCAxMjguMTQ1IDEyOC4xNDUgMCAwIDAgLTEyOC0xMjh6bTAgMjQwYTExMiAxMTIgMCAxIDEgMTEyLTExMiAxMTIuMTI3IDExMi4xMjcgMCAwIDEgLTExMiAxMTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzIgNDg4di00NjRhOCA4IDAgMCAwIC04LThoLTMzNmE4IDggMCAwIDAgLTggOHY0NjRhOCA4IDAgMCAwIDggOGgzMzZhOCA4IDAgMCAwIDgtOHptLTMzNi0zNzZoMzIwdjMwNGgtMzIwem05Ni04MGgxNDR2NDBhOCA4IDAgMCAwIDggOGg3MnYxNmgtMjI0em0yMjQgMzJoLTY0di0zMmg2NHptLTI0MC0zMnY2NGgtODB2LTY0em0tODAgNDQ4di00OGgzMjB2NDh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDggNDBhMjQgMjQgMCAxIDAgMjQgMjQgMjQuMDI3IDI0LjAyNyAwIDAgMCAtMjQtMjR6bTAgMzJhOCA4IDAgMSAxIDgtOCA4LjAwOSA4LjAwOSAwIDAgMSAtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTEyIDU2aDQ4djE2aC00OHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI4OCA0MGgzMnYxNmgtMzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yODggNzJoMzJ2MTZoLTMyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjcyIDIwMGE4IDggMCAwIDAgLTE2IDBjMCA2LjM3My0yLjQxNyA5LjE5MS02LjA3NCAxMy40NTgtNC40MjYgNS4xNTktOS45MjYgMTEuNTgtOS45MjYgMjMuODcyczUuNSAxOC43MTQgOS45MjYgMjMuODczYzMuNjU3IDQuMjY4IDYuMDc0IDcuMDg3IDYuMDc0IDEzLjQ2MnMtMi40MTcgOS4xOTMtNi4wNzQgMTMuNDYxYy00LjQyNiA1LjE1OS05LjkyNiAxMS41ODEtOS45MjYgMjMuODc0YTggOCAwIDAgMCAxNiAwYzAtNi4zNzUgMi40MTctOS4xOTQgNi4wNzQtMTMuNDYyIDQuNDIzLTUuMTU5IDkuOTI2LTExLjU4IDkuOTI2LTIzLjg3M3MtNS41LTE4LjcxNS05LjkyNi0yMy44NzRjLTMuNjU3LTQuMjY4LTYuMDc0LTcuMDkxLTYuMDc0LTEzLjQ2MXMyLjQxNy05LjE5MSA2LjA3NC0xMy40NThjNC40MjYtNS4xNTkgOS45MjYtMTEuNTggOS45MjYtMjMuODcyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjk2IDIzNy4zM2MwLTYuMzczIDIuNDE3LTkuMTkyIDYuMDc1LTEzLjQ2LjgxMi0uOTQ3IDEuNjIzLTEuOSAyLjQwNy0yLjg3OGE4IDggMCAwIDAgLTEyLjUtOS45ODRjLS42NjguODM2LTEuMzYxIDEuNjQxLTIuMDUzIDIuNDQ5LTQuNDI5IDUuMTU5LTkuOTI5IDExLjU4MS05LjkyOSAyMy44NzNzNS41IDE4LjcxNCA5LjkyNiAyMy44NzNjMy42NTcgNC4yNjggNi4wNzQgNy4wODcgNi4wNzQgMTMuNDYycy0yLjQxNyA5LjE5NC02LjA3NSAxMy40NjJjLS44MTMuOTQ5LTEuNjI1IDEuOS0yLjQwOSAyLjg4MWE4IDggMCAwIDAgMTIuNSA5Ljk4NGMuNjY4LS44MzcgMS4zNjItMS42NDQgMi4wNTQtMi40NTIgNC40My01LjE2IDkuOTMtMTEuNTgyIDkuOTMtMjMuODc1cy01LjUtMTguNzE1LTkuOTI2LTIzLjg3NGMtMy42NTctNC4yNjgtNi4wNzQtNy4wOTEtNi4wNzQtMTMuNDYxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjE2IDIzNy4zM2MwLTYuMzczIDIuNDE3LTkuMTkyIDYuMDc1LTEzLjQ2LjgxMi0uOTQ3IDEuNjIzLTEuOSAyLjQwNy0yLjg3OGE4IDggMCAwIDAgLTEyLjUtOS45ODRjLS42NjguODM2LTEuMzYxIDEuNjQxLTIuMDUzIDIuNDQ5LTQuNDI5IDUuMTU5LTkuOTI5IDExLjU4MS05LjkyOSAyMy44NzNzNS41IDE4LjcxNCA5LjkyNiAyMy44NzNjMy42NTcgNC4yNjggNi4wNzQgNy4wODcgNi4wNzQgMTMuNDYycy0yLjQxNyA5LjE5NC02LjA3NSAxMy40NjJjLS44MTMuOTQ5LTEuNjI1IDEuOS0yLjQwOSAyLjg4MWE4IDggMCAwIDAgMTIuNSA5Ljk4NGMuNjY4LS44MzcgMS4zNjItMS42NDQgMi4wNTQtMi40NTIgNC40My01LjE2IDkuOTMtMTEuNTgyIDkuOTMtMjMuODc1cy01LjUtMTguNzE1LTkuOTI2LTIzLjg3NGMtMy42NTctNC4yNjgtNi4wNzQtNy4wOTEtNi4wNzQtMTMuNDYxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",ixe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ3Ni4wNjUgNDc2LjA2NSI+DQo8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KCTxwYXRoIGQ9Ik00MzIuNTU4LDE3Mi4wMkM0MTkuMzAzLDY0LjU4NywzMjEuNDY2LTExLjc2LDIxNC4wMzMsMS40OTVTMzAuMjUzLDExMi41ODcsNDMuNTA4LDIyMC4wMg0KCQljMTEuMDA4LDg5LjIyMiw4MS4zMDMsMTU5LjUxNywxNzAuNTI1LDE3MC41MjV2MzcuNTJoLTU2Yy0xMy4yNTUsMC0yNCwxMC43NDUtMjQsMjR2MjRoMjA4di0yNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTU2DQoJCXYtMzcuNTJDMzY5LjQ2NiwzNzcuMjksNDQ1LjgxMywyNzkuNDUzLDQzMi41NTgsMTcyLjAyeiBNMzE4LjAzMyw0NDQuMDY1YzQuNDE4LDAsOCwzLjU4Miw4LDh2OGgtMTc2di04YzAtNC40MTgsMy41ODItOCw4LTgNCgkJSDMxOC4wMzN6IE0yMzAuMDMzLDQyOC4wNjV2LTMyaDE2djMySDIzMC4wMzN6IE0yMzguMDMzLDM3Ni4wNjVjLTk5LjQxMSwwLTE4MC04MC41ODktMTgwLTE4MA0KCQljMC4xMTUtOTkuMzY0LDgwLjYzNi0xNzkuODg1LDE4MC0xODBjOTkuNDExLDAsMTgwLDgwLjU4OSwxODAsMTgwUzMzNy40NDQsMzc2LjA2NSwyMzguMDMzLDM3Ni4wNjV6Ii8+DQoJPHBhdGggZD0iTTQwNi4wMzMsMjEyLjA2NXYtMTZjMC00LjQxOC0zLjU4Mi04LTgtOGgtOTMuNTM2YzM5LjgtMjcuODMyLDQ5LjUwMi04Mi42NTgsMjEuNjctMTIyLjQ1OA0KCQljLTE2LjQ2Ny0yMy41NDgtNDMuNC0zNy41NjUtNzIuMTM0LTM3LjU0MmgtMTZjLTQuNDE4LDAtOCwzLjU4Mi04LDh2OTMuNTM2Yy0yNy44MzItMzkuOC04Mi42NTgtNDkuNTAyLTEyMi40NTgtMjEuNjcNCgkJYy0yMy41NDgsMTYuNDY3LTM3LjU2NSw0My40LTM3LjU0Miw3Mi4xMzR2MTZjMCw0LjQxOCwzLjU4Miw4LDgsOGg5My41MzZjLTIzLjQ2NSwxNi40NzgtMzcuNDYzLDQzLjMyOC0zNy41MzYsNzINCgkJYzAuMDU3LDQ4LjU3NywzOS40MjMsODcuOTQzLDg4LDg4aDE2YzQuNDE4LDAsOC0zLjU4Miw4LTh2LTkzLjUzNmMyNy44MzIsMzkuOCw4Mi42NTgsNDkuNTAyLDEyMi40NTgsMjEuNjcNCgkJQzM5Mi4wMzgsMjY3LjczMyw0MDYuMDU2LDI0MC44LDQwNi4wMzMsMjEyLjA2NXogTTI0Ni4wMzMsNDQuMDY1aDhjMzkuNzY0LDAuMDU1LDcxLjk1NSwzMi4zMzYsNzEuOSw3Mi4xDQoJCWMtMC4wNDMsMzEuMTctMjAuMTM4LDU4Ljc3Mi00OS43ODgsNjguMzg4Yy00LjIwMi0xNC4wNTItMTUuNzU4LTI0LjY3Ny0zMC4xMTItMjcuNjg4VjQ0LjA2NXogTTg2LjAzMywxODguMDY1di04DQoJCWMwLjA3My0zOS43NjQsMzIuMzY4LTcxLjk0LDcyLjEzMy03MS44NjdjMzEuMTQ4LDAuMDU3LDU4LjcyNywyMC4xMzgsNjguMzQ3LDQ5Ljc2M2MtMTQuMDQ3LDQuMjAzLTI0LjY2OCwxNS43NTUtMjcuNjgsMzAuMTA0DQoJCUg4Ni4wMzN6IE0yMzAuMDMzLDM0OC4wNjVoLThjLTM5Ljc2NC0wLjA1NS03MS45NTUtMzIuMzM2LTcxLjktNzIuMWMwLjA0My0zMS4xNywyMC4xMzgtNTguNzcyLDQ5Ljc4OC02OC4zODgNCgkJYzQuMjAyLDE0LjA1MiwxNS43NTgsMjQuNjc3LDMwLjExMiwyNy42ODhWMzQ4LjA2NXogTTIzOC4wMzMsMjIwLjA2NWMtMTMuMjU1LDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCwyNC0yNA0KCQlzMjQsMTAuNzQ1LDI0LDI0UzI1MS4yODcsMjIwLjA2NSwyMzguMDMzLDIyMC4wNjV6IE0zMTcuOSwyODMuOTMyYy0zMS4xNDgtMC4wNTctNTguNzI3LTIwLjEzOC02OC4zNDctNDkuNzYzDQoJCWMxNC4wNDctNC4yMDMsMjQuNjY4LTE1Ljc1NSwyNy42OC0zMC4xMDRoMTEyLjh2OEMzODkuOTU5LDI1MS44MywzNTcuNjY0LDI4NC4wMDYsMzE3LjksMjgzLjkzMnoiLz4NCjwvZz4NCjwvc3ZnPg0K",rxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTkgNTExLjk5OSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS45OTksMTI2LjAwMWgtMC4wMjdjNi4yOTItOC4zNjIsMTAuMDI3LTE4Ljc1MiwxMC4wMjctMzBjMC0yNy41Ny0yMi40My01MC4wMDEtNTAtNTAuMDAxDQoJCXMtNTAuMDAxLDIyLjQzLTUwLjAwMSw1MC4wMDFjMCwxMS4yNDgsMy43MzYsMjEuNjM4LDEwLjAyNywzMGgtMC4wMjdjLTUuNTIyLDAtMTAsNC40NzctMTAsMTB2MzUuNTQ1DQoJCWMtMTEuMzI4LTcuMjMzLTIzLjEyOC0xMy42NTgtMzUuMzM0LTE5LjI0MXYtMTYuMzA0YzAtNS41MjMtNC40NzctMTAtMTAtMTBzLTEwLDQuNDc3LTEwLDEwdjguMDM3DQoJCWMtMy4zNjktMS4yNDctNi43NjQtMi40MzgtMTAuMTg2LTMuNTYyYy04LjI5MS0yLjcyMy0xNi42ODMtNS4wNTItMjUuMTQ2LTcuMDExdi0yMC44MzNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMA0KCQljLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2MTYuOTMyYy0xMS42OC0xLjg0OS0yMy40NzQtMi45NzQtMzUuMzMyLTMuMzgxVjk2LjAwMWMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwDQoJCXYzMC4xODNjLTExLjg1OSwwLjQwNy0yMy42NTMsMS41MzItMzUuMzMzLDMuMzgxdi0xNi45MzJjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHYyMC44MzMNCgkJYy04LjQ2MiwxLjk1OS0xNi44NTIsNC4yODctMjUuMTQyLDcuMDA5Yy0zLjQyNCwxLjEyNC02LjgxOSwyLjMxNi0xMC4xOTEsMy41NjN2LTguMDM3YzAtNS41MjMtNC40NzctMTAtMTAtMTANCgkJYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjE2LjMwNGMtMTIuMjA1LDUuNTgzLTI0LjAwNCwxMi4wMDctMzUuMzM0LDE5LjI0di0zNS41NDRjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMGgtMC4wMjcNCgkJYzYuMjkzLTguMzYyLDEwLjAyNy0xOC43NTIsMTAuMDI3LTMwYzAtMjcuNTctMjIuNDMtNTAtNTAtNTBzLTUwLDIyLjQzLTUwLDUwYzAsMTEuMjQ4LDMuNzM0LDIxLjYzOCwxMC4wMjcsMzBIMTANCgkJYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjMxOS45OTljMCw1LjUyMyw0LjQ3NywxMCwxMCwxMGg0MGg0MGgzMS4wMzNjNS41MjIsMCwxMC00LjQ3NywxMC0xMGMwLTUuNTIyLTQuNDc4LTEwLTEwLTEwSDEwMA0KCQl2LTIwLjAwMWgzMTEuOTk4djIwLjAwMWgtMjEuMDMzYy01LjUyMywwLTEwLDQuNDc4LTEwLDEwYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMzEuMDMzaDQwLjAwMWg0MGM1LjUyMiwwLDEwLTQuNDc3LDEwLTEwDQoJCVYxMzYuMDAxQzUxMS45OTksMTMwLjQ3Nyw1MDcuNTIxLDEyNi4wMDEsNTAxLjk5OSwxMjYuMDAxeiBNODAsNDQ1Ljk5OUg1MEgyMFYxNDYuMDAxaDIwdjQxLjg5OGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwDQoJCXMxMC00LjQ3NywxMC0xMHYtNDEuODk4aDIwVjQ0NS45OTl6IE01MCwxMjYuMDAxYy0xNi41NDMsMC0zMC0xMy40NTgtMzAtMzBzMTMuNDU3LTMwLDMwLTMwYzE2LjU0MywwLDMwLDEzLjQ1OCwzMCwzMA0KCQlTNjYuNTQzLDEyNi4wMDEsNTAsMTI2LjAwMXogTTEzNS4zMzQsNDA1Ljk5OEgxMDBWMTk1LjYyOWMxMS4zMTgtOC4wMiwyMy4xMjYtMTUuMDk1LDM1LjMzNC0yMS4yMThWNDA1Ljk5OHogTTE5MC42NjcsNDA2DQoJCWgtMzUuMzMzVjE2NS4zODRjMTEuNS00LjYzLDIzLjI5OC04LjQ0OSwzNS4zMzMtMTEuNDM3VjQwNnogTTI0Niw0MDZoLTM1LjMzM1YxNDkuNzg3YzExLjYxNC0xLjk1OCwyMy40MDktMy4xNjgsMzUuMzMzLTMuNTk5DQoJCVY0MDZ6IE0zMDEuMzMyLDQwNS45OThIMjY2di0yNTkuODFjMTEuOTI0LDAuNDMxLDIzLjcxNywxLjY0MSwzNS4zMzIsMy41OTlWNDA1Ljk5OHogTTM1Ni42NjQsNDA1Ljk5OWgtMzUuMzMyVjE1My45NDgNCgkJYzEyLjAzNSwyLjk4OCwyMy44MzIsNi44MDcsMzUuMzMyLDExLjQzOFY0MDUuOTk5eiBNNDExLjk5OCw0MDUuOTk4aC0zNS4zMzRWMTc0LjQxMmMxMi4yMDksNi4xMjMsMjQuMDE3LDEzLjIsMzUuMzM0LDIxLjIyDQoJCVY0MDUuOTk4eiBNNDkxLjk5OSw0NDUuOTk5aC0zMGgtMzAuMDAxVjE0Ni4wMDFoMjAuMDAxdjQxLjg5OGMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwYzUuNTIyLDAsMTAtNC40NzcsMTAtMTB2LTQxLjg5OGgyMA0KCQlWNDQ1Ljk5OXogTTQ2MS45OTksMTI2LjAwMWMtMTYuNTQyLDAtMzAuMDAxLTEzLjQ1OC0zMC4wMDEtMzBjMC0xNi41NDMsMTMuNDU5LTMwLjAwMSwzMC4wMDEtMzAuMDAxDQoJCWMxNi41NDIsMCwzMCwxMy40NTgsMzAsMzAuMDAxQzQ5MS45OTksMTEyLjU0Miw0NzguNTQxLDEyNi4wMDEsNDYxLjk5OSwxMjYuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTUwLDQ0NS45OTloLTAuMjM2Yy01LjUyMywwLTEwLDQuNDc4LTEwLDEwYzAsNS41MjMsNC40NzcsMTAsMTAsMTBIMTUwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTANCgkJQzE2MCw0NTAuNDc3LDE1NS41MjMsNDQ1Ljk5OSwxNTAsNDQ1Ljk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Mi4yMzQsNDQ1Ljk5OWgtMC4yMzdjLTUuNTIyLDAtMTAsNC40NzgtMTAsMTBjMCw1LjUyMyw0LjQ3OCwxMCwxMCwxMGgwLjIzN2M1LjUyMywwLDEwLTQuNDc3LDEwLTEwDQoJCUMzNzIuMjM0LDQ1MC40NzcsMzY3Ljc1OCw0NDUuOTk5LDM2Mi4yMzQsNDQ1Ljk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwLDIwNi42MzFjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2MC4yMzVjMCw1LjUyMyw0LjQ3NywxMCwxMCwxMHMxMC00LjQ3NywxMC0xMHYtMC4yMzUNCgkJQzYwLDIxMS4xMDgsNTUuNTIzLDIwNi42MzEsNTAsMjA2LjYzMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ2MS45OTksMjA2LjYzMWMtNS41MjIsMC0xMCw0LjQ3Ny0xMCwxMHYwLjIzNWMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwYzUuNTIyLDAsMTAtNC40NzcsMTAtMTB2LTAuMjM1DQoJCUM0NzEuOTk5LDIxMS4xMDgsNDY3LjUyMSwyMDYuNjMxLDQ2MS45OTksMjA2LjYzMXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",oxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MC4wMDUgNDgwLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTEwNC4wMDUsMTA4LjAwM2MtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0YzAsNC40MTgsMy41ODIsOCw4LDhzOC0zLjU4Miw4LThzMy41ODItOCw4LThzOC0zLjU4Miw4LTgNCgkJCVMxMDguNDIzLDEwOC4wMDMsMTA0LjAwNSwxMDguMDAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzg1LjM1Nyw3Ni4xMTVsLTI4MC00OGMtMC40NDctMC4wNzMtMC44OTktMC4xMTEtMS4zNTItMC4xMTJDNDYuNjEyLDI3Ljk1NiwwLjA0Nyw3NC40NDQsMCwxMzEuODM3DQoJCQljLTAuMDI2LDMxLjA1OSwxMy44NDMsNjAuNTAxLDM3LjgwNSw4MC4yNjFsNTguNDQsMjMzLjg0OGMwLjg5MiwzLjU1OSw0LjA5MSw2LjA1Niw3Ljc2LDYuMDU2aDY0DQoJCQljNC40MTgsMC4wMDgsOC4wMDctMy41NjYsOC4wMTUtNy45ODVjMC0wLjE3MS0wLjAwNS0wLjM0MS0wLjAxNS0wLjUxMWwtMTMuNi0yMTcuNGwyMjIuOTItMzguMjE2DQoJCQljMy44NTQtMC42NDUsNi42NzktMy45OCw2LjY4LTcuODg4di05NkMzOTIuMDA3LDgwLjEwNSwzODkuMTk5LDc2Ljc3MywzODUuMzU3LDc2LjExNXogTTExMC4yNTMsNDM2LjAwM0w1Ny42MDUsMjI1LjE3MQ0KCQkJYzAuNTA0LDAuMjQ4LDEuMDQsMC40MTYsMS41NDQsMC42NjRjMi41NzYsMS4yMzIsNS4xODksMi4zNTIsNy44NCwzLjM2YzAuNzQ0LDAuMjgsMS40NjQsMC42LDIuMjA4LDAuODY0DQoJCQljMy4zMTksMS4xNzQsNi42OTcsMi4xNzUsMTAuMTIsM2MwLjgsMC4xOTIsMS42LDAuMzI4LDIuNCwwLjUwNGMyLjc2OCwwLjU5Miw1LjU2NSwxLjA3Nyw4LjM5MiwxLjQ1Ng0KCQkJYzEuMDA4LDAuMTI4LDIuMDE2LDAuMjY0LDMuMDI0LDAuMzY4YzMuNjExLDAuMzksNy4yNCwwLjU5NiwxMC44NzIsMC42MTZjMC40NTMtMC4wMDEsMC45MDUtMC4wMzksMS4zNTItMC4xMTJsNDEuMjE2LTcuMDg4DQoJCQlsMTIuOTIsMjA3LjJIMTEwLjI1M3ogTTM0NC4wMDUsMTc4LjczOWwtMjM4LjA4OCw0MC44bC0yLjU3NiwwLjQ2NGMtNDguMzY3LTAuMzA0LTg3LjM5OS0zOS42MzItODcuMzM2LTg4DQoJCQljMC4wNTUtNDguMzIsMzkuMDE4LTg3LjU3OSw4Ny4zMzYtODhsMjQwLjY2NCw0MS4yNjRWMTc4LjczOXogTTM3Ni4wMDUsMTczLjI1OWwtMTYsMi43NDR2LTg4bDE2LDIuNzQ0VjE3My4yNTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDQuMDA1LDc2LjAwM2MtMzAuOTI4LDAtNTYsMjUuMDcyLTU2LDU2YzAuMDM1LDMwLjkxMywyNS4wODcsNTUuOTY1LDU2LDU2YzMwLjkyOCwwLDU2LTI1LjA3Miw1Ni01Ng0KCQkJQzE2MC4wMDUsMTAxLjA3NSwxMzQuOTMzLDc2LjAwMywxMDQuMDA1LDc2LjAwM3ogTTEwNC4wMDUsMTcyLjAwM2MtMjIuMDkxLDAtNDAtMTcuOTA5LTQwLTQwYzAuMDI2LTIyLjA4LDE3LjkyLTM5Ljk3NCw0MC00MA0KCQkJYzIyLjA5MSwwLDQwLDE3LjkwOSw0MCw0MFMxMjYuMDk3LDE3Mi4wMDMsMTA0LjAwNSwxNzIuMDAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQxLjkzMyw0MTEuNTIzbC05LjY2NC0xNTUuMDI0Yy0wLjI3Ni00LjQxOC00LjA4Mi03Ljc3Ni04LjUtNy41Yy00LjQxOCwwLjI3Ni03Ljc3Niw0LjA4Mi03LjUsOC41bDkuNjY0LDE1NQ0KCQkJYzAuMjYzLDQuMjI3LDMuNzczLDcuNTE2LDguMDA4LDcuNTA0YzAuMTY4LDAsMC4zMzYsMCwwLjUwNCwwQzEzOC44NTQsNDE5LjcyOCwxNDIuMjA3LDQxNS45MzIsMTQxLjkzMyw0MTEuNTIzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDcyLjAwNSwxMjQuMDAzaC00OGMtNC40MTgsMC04LDMuNTgyLTgsOHMzLjU4Miw4LDgsOGg0OGM0LjQxOCwwLDgtMy41ODIsOC04UzQ3Ni40MjMsMTI0LjAwMyw0NzIuMDA1LDEyNC4wMDN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIuMDA1LDE1Ni4wMDNoLTQ4Yy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDQ4YzQuNDE4LDAsOC0zLjU4Miw4LThTNDc2LjQyMywxNTYuMDAzLDQ3Mi4wMDUsMTU2LjAwM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ3Mi4wMDUsOTIuMDAzaC00OGMtNC40MTgsMC04LDMuNTgyLTgsOHMzLjU4Miw4LDgsOGg0OGM0LjQxOCwwLDgtMy41ODIsOC04UzQ3Ni40MjMsOTIuMDAzLDQ3Mi4wMDUsOTIuMDAzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",nxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ4LjQ1Nyw3Ny4yMjdhOC4wNjMsOC4wNjMsMCwwLDAtMTAuNCwxMi4zMjV2Ni45MjdhNS4yNzMsNS4yNzMsMCwwLDAsMTAuNTQ1LDBWODkuNTUzYTguMDYzLDguMDYzLDAsMCwwLS4xNDYtMTIuMzI2Wk00NS44NzQsODcuMjRhMS43NSwxLjc1LDAsMCwwLS43NzEsMS40NTF2Ny43ODdhMS43NzMsMS43NzMsMCwwLDEtMy41NDUsMFY4OC42OTFhMS43NDcsMS43NDcsMCwwLDAtLjc3My0xLjQ1MUE0LjU2Niw0LjU2NiwwLDAsMSw0Mi40LDc4Ljk3OGE0Ljg3Niw0Ljg3NiwwLDAsMSwuOTQtLjA5Miw0LjUsNC41LDAsMCwxLDIuODkzLDEuMDQxLDQuNTYyLDQuNTYyLDAsMCwxLS4zNTYsNy4zMTNaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDUuMjI4LDQ0LjY2Myw2NS41OCw0My4zNlYxOS41MTRhNS4zNyw1LjM3LDAsMCwwLTUuMzYzLTUuMzY0SDI2LjQ0M2E1LjM3LDUuMzcsMCwwLDAtNS4zNjMsNS4zNjR2ODguOTcyYTUuMzcsNS4zNywwLDAsMCw1LjM2Myw1LjM2NEg2MC4yMTdhNS4zNyw1LjM3LDAsMCwwLDUuMzYzLTUuMzY0VjU5LjhsMzkuNjQ4LTEuM2ExLjc1LDEuNzUsMCwwLDAsMS42OTItMS43NDlWNDYuNDEyQTEuNzUsMS43NSwwLDAsMCwxMDUuMjI4LDQ0LjY2M1pNNjIuMDgsMTA4LjQ4NmExLjg2NiwxLjg2NiwwLDAsMS0xLjg2MywxLjg2NEgyNi40NDNhMS44NjYsMS44NjYsMCwwLDEtMS44NjMtMS44NjRWMTkuNTE0YTEuODY2LDEuODY2LDAsMCwxLDEuODYzLTEuODY0SDYwLjIxN2ExLjg2NiwxLjg2NiwwLDAsMSwxLjg2MywxLjg2NFY0My4yNDVsLTYuMjY3LS4yMDZhMTUuMTI3LDE1LjEyNywwLDEsMCwwLDE3LjA4Nmw2LjI2NC0uMjA2Wk00NC4zOSw2MC41aDBMNTEsNjAuMjg0YTExLjYxMiwxMS42MTIsMCwxLDEsLjA0LTE3LjRsLTYuNjQ5LS4yMTloLS4wNThBOC45Miw4LjkyLDAsMSwwLDQ0LjM5LDYwLjVabTU5LjAzLTUuNDQyLTM5LjU4NywxLjNoLS4wMDhMNDQuMzM0LDU3YTUuNDIsNS40MiwwLDAsMS0uMDI3LTEwLjg0bDU5LjExMywxLjk0M1oiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",axe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTggNTExLjk5OCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS4zNCwxMTcuMzM2Yy01LjkwNiwwLTEwLjY4OCw0Ljc3My0xMC42ODgsMTAuNjY0djg1LjMzNUg0NjkuMzR2LTIxLjMzNmMwLTIzLjUyMy0xOS4xNTYtNDIuNjYzLTQyLjY4OC00Mi42NjMNCgkJYy0xMi43MTgsMC0yNC4xNTUsNS42MDktMzEuOTk5LDE0LjQ5MWMtNy44MTItOC44ODItMTkuMjUtMTQuNDkxLTMyLTE0LjQ5MWMtMTIuNzE4LDAtMjQuMTU1LDUuNjA5LTMxLjk5OSwxNC40OTENCgkJYy03LjgxMi04Ljg4Mi0xOS4yNS0xNC40OTEtMzItMTQuNDkxYy0xMi43MTksMC0yNC4xNTYsNS42MDktMzEuOTkyLDE0LjQ5MWMtNy44Mi04Ljg4Mi0xOS4yNTgtMTQuNDkxLTMyLTE0LjQ5MQ0KCQljLTEyLjcyNiwwLTI0LjE3MSw1LjYwOS0zMiwxNC40OTFjLTcuODItOC44ODItMTkuMjU4LTE0LjQ5MS0zMi0xNC40OTFjLTEyLjcyNiwwLTI0LjE3MSw1LjYwOS0zMiwxNC40OTENCgkJYy03LjgyLTguODgyLTE5LjI1OC0xNC40OTEtMzItMTQuNDkxYy0xOS44MzUsMC0zNi41NywxMy42MTYtNDEuMzIsMzEuOTk5SDMyYy01Ljg5MSwwLTEwLjY2NCw0Ljc3My0xMC42NjQsMTAuNjY0djIxLjMzNkgxMC42NjQNCgkJQzQuNzczLDIxMy4zMzUsMCwyMTguMTA4LDAsMjIzLjk5OXM0Ljc3MywxMC42NjQsMTAuNjY0LDEwLjY2NGgxMC42NzJ2MjEuMzM2YzAsNS44OTEsNC43NzMsMTAuNjY0LDEwLjY2NCwxMC42NjRoMzJ2MjAyLjY3OA0KCQljMCwyMy41MTYsMTkuMTQxLDQyLjY1Niw0Mi42NjQsNDIuNjU2YzEyLjc0MiwwLDI0LjE4LTUuNjI1LDMyLTE0LjVjNy44MjgsOC44NzUsMTkuMjczLDE0LjUsMzIsMTQuNQ0KCQljMTIuNzQyLDAsMjQuMTgtNS42MjUsMzItMTQuNWM3LjgyOCw4Ljg3NSwxOS4yNzMsMTQuNSwzMiwxNC41YzEyLjc0MiwwLDI0LjE4LTUuNjI1LDMyLTE0LjUNCgkJYzcuODM2LDguODc1LDE5LjI3MywxNC41LDMxLjk5MiwxNC41YzEyLjc1LDAsMjQuMTg4LTUuNjI1LDMyLTE0LjVjNy44NDQsOC44NzUsMTkuMjgxLDE0LjUsMzEuOTk5LDE0LjUNCgkJYzEyLjc1LDAsMjQuMTg4LTUuNjI1LDMyLTE0LjVjNy44NDQsOC44NzUsMTkuMjgxLDE0LjUsMzEuOTk5LDE0LjVjMjMuNTMxLDAsNDIuNjg4LTE5LjE0MSw0Mi42ODgtNDIuNjU2VjIzNC42NjNoMzINCgkJYzUuODc1LDAsMTAuNjU2LTQuNzczLDEwLjY1Ni0xMC42NjRWMTI4QzUxMS45OTYsMTIyLjEwOSw1MDcuMjE1LDExNy4zMzYsNTAxLjM0LDExNy4zMzZ6IE02NCwyNDUuMzM1SDQyLjY2NHYtNDIuNjcySDY0VjI0NS4zMzUNCgkJeiBNMTI3Ljk5OSw0NjkuMzQxYzAsMTEuNzUtOS41NjMsMjEuMzEyLTIxLjMzNiwyMS4zMTJjLTExLjc1NywwLTIxLjMyOC05LjU2Mi0yMS4zMjgtMjEuMzEyVjI1NS45OTl2LTY0DQoJCWMwLTExLjc1OCw5LjU3LTIxLjMzNiwyMS4zMjgtMjEuMzM2YzExLjc3MywwLDIxLjMzNiw5LjU3OCwyMS4zMzYsMjEuMzM2VjQ2OS4zNDF6IE0xOTEuOTk5LDQ2OS4zNDENCgkJYy0wLjAwMSwxMS43NS05LjU2MywyMS4zMTItMjEuMzM2LDIxLjMxMmMtMTEuNzU3LDAtMjEuMzI4LTkuNTYyLTIxLjMyOC0yMS4zMTJWMTkxLjk5OWMwLTExLjc1OCw5LjU3LTIxLjMzNiwyMS4zMjgtMjEuMzM2DQoJCWMxMS43NzMsMCwyMS4zMzYsOS41NzgsMjEuMzM2LDIxLjMzNlY0NjkuMzQxeiBNMjU1Ljk5OCw0NjkuMzQxYzAsMTEuNzUtOS41NjIsMjEuMzEyLTIxLjMzNiwyMS4zMTINCgkJYy0xMS43NTcsMC0yMS4zMjgtOS41NjItMjEuMzI4LTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTctMjEuMzM2LDIxLjMyOC0yMS4zMzZjMTEuNzczLDAsMjEuMzM2LDkuNTc4LDIxLjMzNiwyMS4zMzZWNDY5LjM0MXoNCgkJIE0zMTkuOTk4LDQ2OS4zNDFjMCwxMS43NS05LjU2MiwyMS4zMTItMjEuMzQ0LDIxLjMxMmMtMTEuNzUsMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5DQoJCWMwLTExLjc1OCw5LjU2Mi0yMS4zMzYsMjEuMzEyLTIxLjMzNmMxMS43ODEsMCwyMS4zNDQsOS41NzgsMjEuMzQ0LDIxLjMzNlY0NjkuMzQxeiBNMzgzLjk5Nyw0NjkuMzQxDQoJCWMwLDExLjc1LTkuNTYyLDIxLjMxMi0yMS4zNDQsMjEuMzEyYy0xMS43NDksMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTYyLTIxLjMzNiwyMS4zMTItMjEuMzM2DQoJCWMxMS43ODEsMCwyMS4zNDQsOS41NzgsMjEuMzQ0LDIxLjMzNlY0NjkuMzQxeiBNNDQ3Ljk5Niw0NjkuMzQxYzAsMTEuNzUtOS41NjIsMjEuMzEyLTIxLjM0NCwyMS4zMTINCgkJYy0xMS43NDksMC0yMS4zMTItOS41NjItMjEuMzEyLTIxLjMxMlYxOTEuOTk5YzAtMTEuNzU4LDkuNTYyLTIxLjMzNiwyMS4zMTItMjEuMzM2YzExLjc4MSwwLDIxLjM0NCw5LjU3OCwyMS4zNDQsMjEuMzM2VjQ2OS4zNDENCgkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzU2Ljg3MSwxMDMuNjcyYy0xLjMxMi00LjUzOS0wLjUtNy44NDQsMi42ODgtMTEuMDU1YzguNjU2LTguNjk1LDExLjUzMS0xOS45ODQsOC4wNjItMzEuODEyDQoJCQljLTIuMzEyLTcuOTM4LTYuODEyLTEzLjU0Ny03LjM3NS0xNC4yNWMtMC4wMzEsMC0wLjAzMS0wLjAwOC0wLjAzMS0wLjAwOHYtMC4wMTVjLTEuOTY5LTIuMzU5LTQuOTA2LTMuODY3LTguMjE5LTMuODY3DQoJCQljLTUuODksMC0xMC42NTUsNC43ODEtMTAuNjU1LDEwLjY3MmMwLDIuNTg2LDAuOTA2LDQuOTYxLDIuNDM4LDYuODA1YzAuMDMxLDAuMDIzLDIuMjgxLDIuOTM4LDMuMzc1LDYuNjU2DQoJCQljMS4yNjYsNC4zNjcsMC40NjksNy41ODYtMi43MTksMTAuNzY2Yy04LjYyNSw4LjY3OC0xMS41MTUsMjAuMDQ1LTguMDc4LDMxLjk5OGMyLjMyOCw4LjEwMiw2LjgyOCwxMy44MzYsNy4zMjgsMTQuNDY5di0wLjAwOA0KCQkJYzEuOTY5LDIuNDIyLDQuOTUzLDMuOTc3LDguMzEyLDMuOTc3YzUuODkxLDAsMTAuNjU2LTQuNzczLDEwLjY1Ni0xMC42NjRjMC0yLjUzOS0wLjg3NS00Ljg2Ny0yLjM0NC02LjY5NQ0KCQkJQzM2MC4yNzgsMTEwLjYxLDM1Ny45NjUsMTA3LjU1NSwzNTYuODcxLDEwMy42NzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNjguNjU2LDk2LjYxYy0yLjQ2MS05LjgzNi0wLjQ5Mi0xOC4xOTUsNi0yNS41NDdjMTEuNDA2LTEyLjg5MSwxNS4wMzEtMjguNjk1LDEwLjUtNDUuNzI2DQoJCQljLTMuMTg4LTExLjkzOC05LjMxMi0yMC4yMjctMTAtMjEuMTMzVjQuMjJjLTEuOTY5LTIuNTU1LTUuMDIzLTQuMjE5LTguNDkyLTQuMjE5Yy01Ljg5MywwLTEwLjY2Niw0Ljc3My0xMC42NjYsMTAuNjY0DQoJCQljMCwyLjQxNCwwLjgwNSw0LjYzMywyLjE1Niw2LjQxNGgtMC4wMTZjMC4wNDcsMC4wNjIsNC40OTIsNi4xMDksNi41NDcsMTQuMzJjMi40NTMsOS44MjcsMC40ODQsMTguMTg3LTYuMDE2LDI1LjUzOA0KCQkJYy0xMS4zOSwxMi44OTEtMTUuMDE1LDI4LjY5Ni0xMC40ODMsNDUuNzI3YzMuMTcyLDExLjkzOCw5LjMwNSwyMC4yMjcsOS45ODQsMjEuMTMzbDAuMDE2LTAuMDE2DQoJCQljMS45NDUsMi41Nyw1LjAxNiw0LjIxOSw4LjQ3Nyw0LjIxOWM1Ljg5OCwwLDEwLjY4LTQuNzczLDEwLjY4LTEwLjY2NGMwLTIuNDE0LTAuODEyLTQuNjMzLTIuMTU2LTYuNDE0DQoJCQlDMjc1LjE0LDExMC44NiwyNzAuNjk1LDEwNC44MTMsMjY4LjY1Niw5Ni42MXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4OS42NCwxMTAuNjQxYy0wLjAyMy0wLjAzMS0yLjMyOC0zLjA4Ni0zLjQ0NS02Ljk2OWMtMS4zMDUtNC41MzktMC41LTcuODQ0LDIuNjk1LTExLjA1NQ0KCQkJYzguNjY0LTguNjk1LDExLjUyMy0xOS45ODQsOC4wNjItMzEuODEyYy0yLjMyLTcuOTM4LTYuNzg5LTEzLjUzMS03LjM5MS0xNC4yNWMwLDAsMC0wLjAwOC0wLjAwOC0wLjAwOGwtMC4wMDgtMC4wMjN2MC4wMDgNCgkJCWMtMS45NjEtMi4zNTktNC45MDYtMy44NjctOC4yMTEtMy44NjdjLTUuODkxLDAtMTAuNjcyLDQuNzgxLTEwLjY3MiwxMC42NzJjMCwyLjU4NiwwLjkyMiw0Ljk2MSwyLjQ1Myw2LjgwNQ0KCQkJYzAuMDIzLDAuMDIzLDIuMjczLDIuOTM4LDMuMzU5LDYuNjU2YzEuMjgxLDQuMzY3LDAuNDY5LDcuNTg2LTIuNzAzLDEwLjc2NmMtOC42NCw4LjY3OC0xMS41MTUsMjAuMDQ1LTguMDc3LDMxLjk5OA0KCQkJYzIuMzI4LDguMTAyLDYuODI4LDEzLjgzNiw3LjMzNiwxNC40Njl2LTAuMDA4YzEuOTYxLDIuNDIyLDQuOTQ1LDMuOTc3LDguMzA1LDMuOTc3YzUuODkxLDAsMTAuNjY0LTQuNzczLDEwLjY2NC0xMC42NjQNCgkJCWMwLTIuNTM5LTAuODkxLTQuODY3LTIuMzY3LTYuNjk1SDE4OS42NHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Mxe="PHN2ZyBoZWlnaHQ9IjQ5NnB0IiB2aWV3Qm94PSIwIC0xIDQ5NiA0OTUiIHdpZHRoPSI0OTZwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDg4IDMyMC41aC00MHYtMzJjMC0yLjEyODkwNi0uODM5ODQ0LTQuMTYwMTU2LTIuMzQzNzUtNS42NTYyNWwtMTIwLTEyMGMtMS40OTYwOTQtMS41MDM5MDYtMy41MjczNDQtMi4zNDM3NS01LjY1NjI1LTIuMzQzNzVoLTE2di0xNTJjMC00LjQyNTc4MS0zLjU3NDIxOS04LTgtOGgtOTZjLTQuNDI1NzgxIDAtOCAzLjU3NDIxOS04IDh2MTUyaC0yNGMtMi4xMjg5MDYgMC00LjE2MDE1Ni44Mzk4NDQtNS42NTYyNSAyLjM0Mzc1bC0xMjAgMTIwYy0xLjUwMzkwNiAxLjQ5NjA5NC0yLjM0Mzc1IDMuNTI3MzQ0LTIuMzQzNzUgNS42NTYyNXYzMmgtMzJjLTQuNDI1NzgxIDAtOCAzLjU3NDIxOS04IDh2NDhjMCA0LjQyNTc4MSAzLjU3NDIxOSA4IDggOGg0ODBjNC40MjU3ODEgMCA4LTMuNTc0MjE5IDgtOHYtNDhjMC00LjQyNTc4MS0zLjU3NDIxOS04LTgtOHptLTI4MC0zMDRoODB2MTkyaC04MHptLTE1MiAyNzUuMzEyNSAxMTUuMzEyNS0xMTUuMzEyNWgyMC42ODc1djQwYzAgNC40MjU3ODEgMy41NzQyMTkgOCA4IDhoOTZjNC40MjU3ODEgMCA4LTMuNTc0MjE5IDgtOHYtNDBoMTIuNjg3NWwxMTUuMzEyNSAxMTUuMzEyNXYyOC42ODc1aC0zNzZ6bTQyNCA3Ni42ODc1aC00NjR2LTMyaDQ2NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuMzEyNSA0NDAuNWMtMi4xMzY3MTktMi4xNDQ1MzEtMy4zMTI1LTQuOTc2NTYyLTMuMzEyNS04czEuMTc1NzgxLTUuODU1NDY5IDMuMzEyNS04bDEwLjM0Mzc1LTEwLjM0Mzc1LTExLjMxMjUtMTEuMzEyNS0xMC4zNDM3NSAxMC4zNDM3NWMtNS4xNjAxNTYgNS4xNjAxNTYtOCAxMi4wMTU2MjUtOCAxOS4zMTI1czIuODM5ODQ0IDE0LjE2MDE1NiA4IDE5LjMxMjVsNC42ODc1IDQuNjg3NWMyLjEzNjcxOSAyLjE0NDUzMSAzLjMxMjUgNC45NzY1NjIgMy4zMTI1IDhzLTEuMTc1NzgxIDUuODU1NDY5LTMuMzEyNSA4bC0xMC4zNDM3NSAxMC4zNDM3NSAxMS4zMTI1IDExLjMxMjUgMTAuMzQzNzUtMTAuMzQzNzVjNS4xNjAxNTYtNS4xNjAxNTYgOC0xMi4wMTU2MjUgOC0xOS4zMTI1cy0yLjgzOTg0NC0xNC4xNjAxNTYtOC0xOS4zMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNy4zMTI1IDQ0MC41Yy0yLjEzNjcxOS0yLjE0NDUzMS0zLjMxMjUtNC45NzY1NjItMy4zMTI1LThzMS4xNzU3ODEtNS44NTU0NjkgMy4zMTI1LThsMTAuMzQzNzUtMTAuMzQzNzUtMTEuMzEyNS0xMS4zMTI1LTEwLjM0Mzc1IDEwLjM0Mzc1Yy01LjE2MDE1NiA1LjE2MDE1Ni04IDEyLjAxNTYyNS04IDE5LjMxMjVzMi44Mzk4NDQgMTQuMTYwMTU2IDggMTkuMzEyNWw0LjY4NzUgNC42ODc1YzIuMTM2NzE5IDIuMTQ0NTMxIDMuMzEyNSA0Ljk3NjU2MiAzLjMxMjUgOHMtMS4xNzU3ODEgNS44NTU0NjktMy4zMTI1IDhsLTEwLjM0Mzc1IDEwLjM0Mzc1IDExLjMxMjUgMTEuMzEyNSAxMC4zNDM3NS0xMC4zNDM3NWM1LjE2MDE1Ni01LjE2MDE1NiA4LTEyLjAxNTYyNSA4LTE5LjMxMjVzLTIuODM5ODQ0LTE0LjE2MDE1Ni04LTE5LjMxMjV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjc1LjMxMjUgNDQwLjVjLTIuMTM2NzE5LTIuMTQ0NTMxLTMuMzEyNS00Ljk3NjU2Mi0zLjMxMjUtOHMxLjE3NTc4MS01Ljg1NTQ2OSAzLjMxMjUtOGwxMC4zNDM3NS0xMC4zNDM3NS0xMS4zMTI1LTExLjMxMjUtMTAuMzQzNzUgMTAuMzQzNzVjLTUuMTYwMTU2IDUuMTYwMTU2LTggMTIuMDE1NjI1LTggMTkuMzEyNXMyLjgzOTg0NCAxNC4xNjAxNTYgOCAxOS4zMTI1bDQuNjg3NSA0LjY4NzVjMi4xMzY3MTkgMi4xNDQ1MzEgMy4zMTI1IDQuOTc2NTYyIDMuMzEyNSA4cy0xLjE3NTc4MSA1Ljg1NTQ2OS0zLjMxMjUgOGwtMTAuMzQzNzUgMTAuMzQzNzUgMTEuMzEyNSAxMS4zMTI1IDEwLjM0Mzc1LTEwLjM0Mzc1YzUuMTYwMTU2LTUuMTYwMTU2IDgtMTIuMDE1NjI1IDgtMTkuMzEyNXMtMi44Mzk4NDQtMTQuMTYwMTU2LTgtMTkuMzEyNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjMuMzEyNSA0NDAuNWMtMi4xMzY3MTktMi4xNDQ1MzEtMy4zMTI1LTQuOTc2NTYyLTMuMzEyNS04czEuMTc1NzgxLTUuODU1NDY5IDMuMzEyNS04bDEwLjM0Mzc1LTEwLjM0Mzc1LTExLjMxMjUtMTEuMzEyNS0xMC4zNDM3NSAxMC4zNDM3NWMtNS4xNjAxNTYgNS4xNjAxNTYtOCAxMi4wMTU2MjUtOCAxOS4zMTI1czIuODM5ODQ0IDE0LjE2MDE1NiA4IDE5LjMxMjVsNC42ODc1IDQuNjg3NWMyLjEzNjcxOSAyLjE0NDUzMSAzLjMxMjUgNC45NzY1NjIgMy4zMTI1IDhzLTEuMTc1NzgxIDUuODU1NDY5LTMuMzEyNSA4bC0xMC4zNDM3NSAxMC4zNDM3NSAxMS4zMTI1IDExLjMxMjUgMTAuMzQzNzUtMTAuMzQzNzVjNS4xNjAxNTYtNS4xNjAxNTYgOC0xMi4wMTU2MjUgOC0xOS4zMTI1cy0yLjgzOTg0NC0xNC4xNjAxNTYtOC0xOS4zMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAyODguNWgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzUyIDI4OC41aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAgMjg4LjVoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",cxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDUgNTEyLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTMyNy4xNTksMi43NjZjLTQuMDYzLTMuNjg4LTEwLjI1LTMuNjg4LTE0LjMxMywwYy00LjY0Miw0LjE4Ni0xMTAuODg5LDEwMS4yOTItMTYwLjIyOCwyMTMuODM5DQoJCQkJYy01LjMxOC0xLjg2Ny0xMS40NC0zLjI2Ni0xOS4zNTUtMy4yNjZjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzNjLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2DQoJCQkJYy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4M2MtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2Nw0KCQkJCWMwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3YzExLjk2OSwwLDE3LjUyMSwzLjg2NSwyNC41NDIsOC43NWM4LjA0Miw1LjYwNCwxOC4wNjMsMTIuNTgzLDM2LjcyOSwxMi41ODMNCgkJCQljMTguNjc3LDAsMjguNzA4LTYuOTc5LDM2Ljc2LTEyLjU4M2M3LjAzMS00Ljg4NSwxMi41ODMtOC43NSwyNC41NjMtOC43NWMxMiwwLDE3LjU2MywzLjg2NSwyNC42MDQsOC43Ng0KCQkJCWM4LjA1Miw1LjYwNCwxOC4wODMsMTIuNTczLDM2Ljc3MSwxMi41NzNjMTguNjc3LDAsMjguNzA4LTYuOTY5LDM2Ljc3MS0xMi41NzNjNy4wMzEtNC44OTYsMTIuNTk0LTguNzYsMjQuNTk0LTguNzYNCgkJCQljNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3Yy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3Mw0KCQkJCWMtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzZjLTExLjIwOCwwLTE2LjgyMy0zLjQxOS0yMy4yNDItNy44NTRjNDAuMTIxLTkyLjY2MSwxMjMuNjYxLTE3Ny40NjYsMTQ4LjYwNy0yMDEuNDkNCgkJCQljMzMuMjE5LDMyLjAxLDE3MC42NjcsMTcxLjg2NSwxNzAuNjY3LDI5NC42NzdjMCw5NC4xMDQtNzYuNTYzLDE3MC42NjctMTcwLjY2NywxNzAuNjY3Yy00Mi40NzcsMC04Mi42NjktMTUuODIyLTExMy43OC00My43NTgNCgkJCQljMTEuNTQyLTIuMTM4LDE4Ljk5NC03LjE3NywyNS4xODYtMTEuNDgyYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2YzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjcNCgkJCQlzLTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3Yy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3M2MtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzYNCgkJCQljLTEyLDAtMTcuNTYzLTMuODY1LTI0LjU5NC04Ljc2Yy04LjA2My01LjYwNC0xOC4wOTQtMTIuNTczLTM2Ljc4MS0xMi41NzNjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzMNCgkJCQljLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2Yy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4Mw0KCQkJCWMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N3M0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2MxMS45NjksMCwxNy41MjEsMy44NjUsMjQuNTQyLDguNzUNCgkJCQljOC4wNDIsNS42MDQsMTguMDYzLDEyLjU4MywzNi43MjksMTIuNTgzYzE4LjY3NywwLDI4LjcwOC02Ljk3OSwzNi43Ni0xMi41ODNjNy4wMzEtNC44ODUsMTIuNTgzLTguNzUsMjQuNTYzLTguNzUNCgkJCQljMTIsMCwxNy41NjMsMy44NjUsMjQuNjA0LDguNzZjNC4zNDUsMy4wMjMsOS40MTQsNi4zNTUsMTUuOTYxLDguODY1YzM2LjYsNDIuOTk2LDg5LjY1NSw2Ny43MDgsMTQ2LjE3NCw2Ny43MDgNCgkJCQljMTA1Ljg2NSwwLDE5Mi04Ni4xMzUsMTkyLTE5MkM1MTIuMDAzLDE3MS42NDEsMzM0LjcwMSw5LjU4OSwzMjcuMTU5LDIuNzY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTAuNjY5LDM2Mi42NzJjMTEuOTY5LDAsMTcuNTIxLDMuODY1LDI0LjU0Miw4Ljc1YzguMDQyLDUuNjA0LDE4LjA2MywxMi41ODMsMzYuNzI5LDEyLjU4Mw0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3YzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdjLTExLjk2OSwwLTE3LjUyMS0zLjg2NS0yNC41NDItOC43NQ0KCQkJCWMtOC4wNDItNS42MDQtMTguMDYzLTEyLjU4My0zNi43MjktMTIuNTgzYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzQuNzczLDM2Mi42NzIsMTAuNjY5LDM2Mi42NzJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMzMuMjYzLDM0MS4zMzljLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjdzNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdjMTIsMCwxNy41NjMsMy44NjUsMjQuNTk0LDguNzYNCgkJCQljOC4wNjMsNS42MDQsMTguMDk0LDEyLjU3MywzNi43ODEsMTIuNTczYzE4LjY3NywwLDI4LjcwOC02Ljk2OSwzNi43NzEtMTIuNTczYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2DQoJCQkJYzEyLjE5OCwwLDE4LjQwNiwzLjk2OSwyNi4yNSw4Ljk5YzkuMDUyLDUuNzgxLDE5LjMxMywxMi4zNDQsMzcuNzUsMTIuMzQ0YzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjcNCgkJCQljMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N2MtMTIuMTk4LDAtMTguNDA2LTMuOTY5LTI2LjI1LTguOTljLTkuMDUyLTUuNzgxLTE5LjMxMy0xMi4zNDQtMzcuNzUtMTIuMzQ0DQoJCQkJYy0xOC42ODcsMC0yOC43MTksNi45NjktMzYuNzgxLDEyLjU3M2MtNy4wMzEsNC44OTYtMTIuNTk0LDguNzYtMjQuNTgzLDguNzZjLTEyLDAtMTcuNTYzLTMuODY1LTI0LjYwNC04Ljc2DQoJCQkJQzE2MS45ODIsMzQ4LjMwNywxNTEuOTUxLDM0MS4zMzksMTMzLjI2MywzNDEuMzM5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTMzLjI2MywyNzcuMzM5Yy0xOC42NzcsMC0yOC42OTgsNi45NjktMzYuNzUsMTIuNTczYy03LjAzMSw0Ljg5Ni0xMi41ODMsOC43Ni0yNC41NzMsOC43Ng0KCQkJCWMtMTEuOTY5LDAtMTcuNTIxLTMuODY1LTI0LjU0Mi04Ljc1Yy04LjA0Mi01LjYwNC0xOC4wNjMtMTIuNTgzLTM2LjcyOS0xMi41ODNjLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjcNCgkJCQljMCw1Ljg5Niw0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2MxMS45NjksMCwxNy41MjEsMy44NjUsMjQuNTQyLDguNzVjOC4wNDIsNS42MDQsMTguMDYzLDEyLjU4MywzNi43MjksMTIuNTgzDQoJCQkJYzE4LjY3NywwLDI4LjcwOC02Ljk3OSwzNi43Ni0xMi41ODNjNy4wMzEtNC44ODUsMTIuNTgzLTguNzUsMjQuNTYzLTguNzVjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2Nw0KCQkJCUMxNDMuOTMsMjgyLjEwOSwxMzkuMTU5LDI3Ny4zMzksMTMzLjI2MywyNzcuMzM5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjMxLjQwOSwzMDcuNDMyYzcuMDMxLTQuODk2LDEyLjU5NC04Ljc2LDI0LjU5NC04Ljc2YzExLjk2OSwwLDE3LjUyMSwzLjg2NSwyNC41NDIsOC43NQ0KCQkJCWM4LjA0Miw1LjYwNCwxOC4wNjMsMTIuNTgzLDM2LjcyOSwxMi41ODNjMTguNjc3LDAsMjguNzA4LTYuOTc5LDM2Ljc2LTEyLjU4M2M3LjAzMS00Ljg4NSwxMi41ODMtOC43NSwyNC41NjMtOC43NQ0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3YzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdjLTE4LjY3NywwLTI4LjY5OCw2Ljk2OS0zNi43NSwxMi41NzMNCgkJCQljLTcuMDMxLDQuODk2LTEyLjU4Myw4Ljc2LTI0LjU3Myw4Ljc2Yy0xMS45NjksMC0xNy41MjEtMy44NjUtMjQuNTQyLTguNzVjLTguMDQyLTUuNjA0LTE4LjA2My0xMi41ODMtMzYuNzI5LTEyLjU4Mw0KCQkJCWMtMTguNjg3LDAtMjguNzE5LDYuOTY5LTM2Ljc4MSwxMi41NzNjLTcuMDMxLDQuODk2LTEyLjU5NCw4Ljc2LTI0LjU4Myw4Ljc2Yy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3DQoJCQkJczQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3QzIxMy4zMTUsMzIwLjAwNSwyMjMuMzQ2LDMxMy4wMzYsMjMxLjQwOSwzMDcuNDMyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",uxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUxMiAxNjMuODdjMC0xMy45LTUuNDEyLTI2Ljk2MS0xNS4yMzMtMzYuNzctOS44MTUtOS44MjgtMjIuODc2LTE1LjI0LTM2Ljc3Ni0xNS4yNGgtODAuOTdjLTI2LjcwNSAwLTQ4LjQzLTIxLjcyNi00OC40My00OC40MyAwLTEyLjkzOCA1LjAzNy0yNS4xMDEgMTQuMTg0LTM0LjI0NyA5LjE0NC05LjE0NiAyMS4zMDctMTQuMTgzIDM0LjI0NS0xNC4xODNoMTI1LjQ4YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC0xMjUuNDhjLTE2Ljk0NSAwLTMyLjg3NCA2LjU5Ny00NC44NTMgMTguNTc3LTExLjk3OSAxMS45NzktMTguNTc3IDI3LjkwOC0xOC41NzcgNDQuODUzIDAgMzQuOTc1IDI4LjQ1NSA2My40MyA2My40MyA2My40M2g4MC45N2M5Ljg5IDAgMTkuMTgyIDMuODUgMjYuMTY5IDEwLjg0NyA2Ljk5MSA2Ljk4MiAxMC44NDEgMTYuMjczIDEwLjg0MSAyNi4xNjMgMCA4LjYzNy0zLjAzOCAxNy4wNDQtOC41NTcgMjMuNjc0bC0yMi4zMDUgMjYuODIyYy03Ljg4NC0yLjcyNS0xNi45ODktLjk3Mi0yMy4yODIgNS4zMTFsLTkuMDU4IDkuMDU4Yy0yMC4zMi0uNDItNDMuMDk4IDMuOTQtNjIuODIxIDcuNDI3LTQuMDc5LjcyMS02LjgwMSA0LjYxMy02LjA3OSA4LjY5MS43MjEgNC4wNzkgNC42MTMgNi43OTkgOC42OTEgNi4wNzkgMTguOTQyLTMuMzUgMzguMzkyLTUuNzY4IDU3LjgwOS03LjE4NSA3LjY4MS0uNTY2IDE0LjgzMyA0LjM5MyAxNi45ODUgMTEuNzggMS44MjcgNi4yNyA0Ny4wMjcgMTYwLjE2NyA0OC41MzMgMTY2LjU3NS40OTggMi4xMTktLjczOCAzLjY2LTIuOTEyIDMuNjYtMjIuNzg2IDAtNDEuMDQyIDE1LjY2LTQ4LjQ2NCAzNi40ODhoLTMyMC4zNzFjLTQuMTQyIDAtNy41IDMuMzU3LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVoMzI3Ljc4N2M1LjQ0NSAwIDkuODc1IDQuNDMgOS44NzUgOS44NzVzLTQuNDMxIDkuODc1LTkuODc2IDkuODc1aC00MzYuOTA2YzMuMjY1LTExLjM5MSAxMy43NzUtMTkuNzUgMjYuMi0xOS43NWg1Mi45MTljNC4xNDIgMCA3LjUtMy4zNTcgNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjVoLTQ0Ljk0NGM2Mi40NjItMTExLjU5OCAxNzEuOTAzLTE3Ny4wMjcgMjk0Ljc3OC0yMDUuNDg2IDQuMDM1LS45MzUgNi41NDktNC45NjMgNS42MTQtOC45OTktLjkzNC00LjAzNS00Ljk2NC02LjU0OS04Ljk5OS01LjYxNC03MS42MzIgMTYuNTk5LTE0My41OTMgNDcuMDUxLTIwMS40NzMgOTIuNjA2bC0xMC4wNzEtMTAuMDdjLTguNjM1LTguNzUyLTIzLjE1OS04LjY3OC0zMS44MjYtLjAxLTguNjMxIDguNjMyLTguNzI4IDIzLjE2NiAwIDMxLjgwN2w4LjA1MSA4LjA1MWMtMjkuNDY3IDI4Ljk1OS01NC4xMDIgNjIuMzItNzQuMDQyIDk4LjkyLTE4LjQ4NyA0LjUwMi0zMi4yNTYgMjEuMTkxLTMyLjI1NiA0MS4wNDUgMCA0LjE0MyAzLjM1OCA3LjUgNy41IDcuNWg0NDUuNDU1YzEzLjcxNiAwIDI0Ljg3NS0xMS4xNTkgMjQuODc1LTI0Ljg3NSAwLTEwLjc1LTYuODU1LTE5LjkyNy0xNi40MjQtMjMuMzk1IDUuMjYzLTEzLjU3MyAxNy45MDMtMjIuOTY5IDMyLjU5OC0yMi45NjkgMTEuNDgzIDAgMjAuMzAyLTExLjQwMSAxNy40MTEtMjIuNTEtLjAxOC0uMDcxLS4wMzgtLjE0Mi0uMDU4LS4yMTFsLTQ1Ljg1Ny0xNTcuMzkxIDkuMTYzLTkuMTU2YzcuMzU5LTcuMzAzIDguNjQ0LTE5LjA5MyAzLjE5Ny0yNy43NjJsMjIuMTE1LTI2LjU5M2M3Ljc1NC05LjMxOCAxMi4wMjUtMjEuMTMyIDEyLjAyNS0zMy4yNjh6bS00MDMuMTQ2IDE3MS40MTNjMS40Mi0xLjQyMSAzLjMwNS0yLjIwMyA1LjMwNy0yLjIwMyAxLjk5OSAwIDMuODc3Ljc3OSA1LjI5NiAyLjIwNGw5LjAxNCA5LjAxNGMtMy44MjUgMy4yNDMtNy41ODIgNi41NTEtMTEuMjc0IDkuOTIybC04LjM0NC04LjM0NGMtMi45Mi0yLjkyLTIuOTItNy42NzIuMDAxLTEwLjU5M3ptMzU1LjIwNS05NC4zOTgtMy45ODYgMy45ODNjLTIuNDk2LTQuNDYxLTYuMDM3LTguMjAzLTEwLjIzMy0xMC45NjFsMy42MTktMy42MTljMi45MjYtMi45MiA3LjY4LTIuOTIyIDEwLjU5OC0uMDA0IDEuNDIxIDEuNDIxIDIuMjAzIDMuMzAyIDIuMjAzIDUuMjk3IDAgMi0uNzgyIDMuODg1LTIuMjAxIDUuMzA0em0tMjE1Ljc2NSA5NC43NjRjLTEzLjgyNCA3LjY1My0yMi40MTIgMjIuMjM1LTIyLjQxMiAzOC4wNTYgMCAxMS45ODcgNS4wMTkgMjMuNTYzIDEzLjc3MSAzMS43NTggOC4wNjYgNy41NTMgMTguNzg4IDExLjc1NiAyOS43ODYgMTEuNzU1Ljk0IDAgMTUxLjA4LTkuODM4IDE1MS4wOC05LjgzOCA2LjkxMS0uNDU0IDEzLjIyNS0zLjkxNiAxNy4zMjItOS40OTggNC4wOTYtNS41NzkgNS41MDctMTIuNjM3IDMuODcyLTE5LjM2MmwtMTkuNTM4LTgwLjMyM2MtMy4wMTctMTIuNDA0LTE1LjE4My0yMC4wMTMtMjcuNjkzLTE3LjMyOS0zMC4wOTQgNi40NjYtNTkuNzg3IDE1LjU5NC04OC4yNTYgMjcuMTMtMTkuNzY4IDguMDEtMzkuMjU5IDE3LjMxMy01Ny45MzIgMjcuNjUxem0xMDcuMjY2IDYwLjk2OS02Ny40MyA0LjQzM3YtMTcuNjgxYzAtLjIzOC4yMDItLjQ0LjQ0LS40NGg2Ni41NWMuMjQzIDAgLjQ0LjE5Ny40NC40NHptNDIuMDcxLTEwMS4wODVjLjYxMy0uMTMyIDEuMjIzLS4xOTUgMS44MjMtLjE5NSAzLjgxNCAwIDcuMjEgMi41NTkgOC4xNDUgNi40MDNsMTkuNTM4IDgwLjMyM2MuNTk1IDIuNDQ2LjEwMiA0LjkxMS0xLjM4OCA2Ljk0LTEuNDkyIDIuMDMyLTMuNjk5IDMuMjQyLTYuMjE1IDMuNDA4bC00OC45NzQgMy4yMTl2LTEyLjI2MWMwLTguNTE0LTYuOTI2LTE1LjQ0LTE1LjQ0LTE1LjQ0aC02Ni41NWMtOC41MTQgMC0xNS40NCA2LjkyNy0xNS40NCAxNS40NHYxOC42NjdsLTEuODUuMTIyYy03Ljk1Ny41MTgtMTUuNTUyLTIuMTkyLTIxLjM3NS03LjY0NS01LjgxOS01LjQ0OS05LjAyNC0xMi44MzktOS4wMjQtMjAuODA5IDAtMTAuMzY3IDUuNjI0LTE5LjkyMSAxNC42NzctMjQuOTMzIDE4LjE0OC0xMC4wNDcgMzcuMDktMTkuMDg4IDU2LjMwMS0yNi44NzMgMjcuNjY2LTExLjIxMSA1Ni41MjUtMjAuMDgzIDg1Ljc3Mi0yNi4zNjZ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",lxe="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDM1LjIgMzI0LjI2N2gtMTAuOTA2Yy0zLjAyNC01LjI2My04LjYyNC04LjUxNS0xNC42OTQtOC41MzN2LTE3LjA2N2MwLTkuNDI2LTcuNjQxLTE3LjA2Ny0xNy4wNjctMTcuMDY3aC0xNy4wNjdjLTkuNDI2IDAtMTcuMDY3IDcuNjQxLTE3LjA2NyAxNy4wNjd2MTcuMDY3Yy02LjA3LjAxOC0xMS42NyAzLjI3LTE0LjY5NCA4LjUzM2gtMjMyLjc3MmMtMTQuMTM4IDAtMjUuNi0xMS40NjItMjUuNi0yNS42czExLjQ2Mi0yNS42IDI1LjYtMjUuNmgzNi41MDZjMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDYyLjEwNmMxNC4xMzggMCAyNS42LTExLjQ2MiAyNS42LTI1LjZzLTExLjQ2Mi0yNS42LTI1LjYtMjUuNmgtNjIuMTA2Yy0zLjAyNC01LjI2My04LjYyNC04LjUxNS0xNC42OTQtOC41MzN2LTE3LjA2N2MwLTkuNDI2LTcuNjQxLTE3LjA2Ny0xNy4wNjctMTcuMDY3aC0xNy4wNjZjLTkuNDI2IDAtMTcuMDY3IDcuNjQxLTE3LjA2NyAxNy4wNjd2MTcuMDY3Yy02LjA3LjAxOC0xMS42NyAzLjI3LTE0LjY5NCA4LjUzM2gtMzYuNTA2Yy00Mi40MTUgMC03Ni44IDM0LjM4NS03Ni44IDc2LjhzMzQuMzg1IDc2LjggNzYuOCA3Ni44aDIzMi43NzJjMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDEwLjkwN2MxNC4xMzggMCAyNS42IDExLjQ2MiAyNS42IDI1LjZzLTExLjQ2MiAyNS42LTI1LjYgMjUuNmgtMzA5LjU3MmMtMy4wMjQtNS4yNjMtOC42MjQtOC41MTUtMTQuNjk0LTguNTMzdi0xNy4wNjdjMC05LjQyNi03LjY0MS0xNy4wNjctMTcuMDY3LTE3LjA2N2gtMTcuMDY3Yy05LjQyNiAwLTE3LjA2NyA3LjY0MS0xNy4wNjcgMTcuMDY3djE3LjA2N2MtNi4wNy4wMTgtMTEuNjcgMy4yNy0xNC42OTQgOC41MzNoLTE5LjQzOWMtMTQuMTM4IDAtMjUuNiAxMS40NjItMjUuNiAyNS42czExLjQ2MiAyNS42IDI1LjYgMjUuNmgxOS40MzljMy4wMjQgNS4yNjMgOC42MjQgOC41MTUgMTQuNjk0IDguNTMzaDUxLjJjNi4wNy0uMDE4IDExLjY3LTMuMjcgMTQuNjk0LTguNTMzaDMwOS41NzNjNDIuNDE1IDAgNzYuOC0zNC4zODUgNzYuOC03Ni44cy0zNC4zODUtNzYuOC03Ni44LTc2Ljh6bS01OS43MzMtMjUuNmgxNy4wNjd2MTcuMDY3aC0xNy4wNjd6bS03Ni44LTUxLjJjMCA0LjcxMy0zLjgyMSA4LjUzMy04LjUzMyA4LjUzM2gtNTkuNzM0di0xNy4wNjdoNTkuNzMzYzQuNzEzIDAgOC41MzQgMy44MjEgOC41MzQgOC41MzR6bS0xMTkuNDY3LTUxLjJoMTcuMDY3djE3LjA2N2gtMTcuMDY3em0tOC41MzMgMzQuMTMzaDQyLjY2N3YzNC4xMzNoLTUxLjJ2LTM0LjEzM3ptLTExOS40NjcgNjguMjY3Yy4wMzgtMzIuOTc0IDI2Ljc1OS01OS42OTYgNTkuNzMzLTU5LjczM2gzNC4xMzN2MTcuMDY2aC0zNC4xMzNjLTIzLjU2NCAwLTQyLjY2NyAxOS4xMDMtNDIuNjY3IDQyLjY2N3MxOS4xMDMgNDIuNjY3IDQyLjY2NyA0Mi42NjdoMjMwLjR2MTcuMDY2aC0yMzAuNGMtMzIuOTc0LS4wMzgtNTkuNjk1LTI2Ljc1OS01OS43MzMtNTkuNzMzem0zMDcuMiA2OC4yNjZ2LTM0LjEzM2g1MS4ydjM0LjEzM3ptLTI4MS42IDM0LjEzNGgxNy4wNjd2MTcuMDY3aC0xNy4wNjd6bS01OS43MzMgNTEuMmMwLTQuNzEzIDMuODIxLTguNTMzIDguNTMzLTguNTMzaDE3LjA2N3YxNy4wNjZoLTE3LjA2N2MtNC43MTMgMC04LjUzMy0zLjgyLTguNTMzLTguNTMzem00Mi42NjYgMTcuMDY2di0zNC4xMzNoNTEuMnYzNC4xMzN6bTM3NS40NjctOC41MzNoLTMwNy4ydi0xNy4wNjdoMzA3LjJjMjMuNTY0IDAgNDIuNjY3LTE5LjEwMyA0Mi42NjctNDIuNjY3cy0xOS4xMDMtNDIuNjY3LTQyLjY2Ny00Mi42NjdoLTguNTMzdi0xNy4wNjdoOC41MzNjMzIuOTkgMCA1OS43MzMgMjYuNzQ0IDU5LjczMyA1OS43MzNzLTI2Ljc0MyA1OS43MzUtNTkuNzMzIDU5LjczNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4Ny43MzMgMTYyLjEzM2M0LjcxMyAwIDguNTMzLTMuODIxIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyMS04LjUzMy04LjUzMy04LjUzMy00LjcxMyAwLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEzIDMuODIxIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg3LjczMyAxMTAuOTMzYzQuNzEzIDAgOC41MzMtMy44MjEgOC41MzMtOC41MzN2LTE3LjA2N2MwLTQuNzEzLTMuODIxLTguNTMzLTguNTMzLTguNTMzLTQuNzEzIDAtOC41MzMgMy44MjEtOC41MzMgOC41MzN2MTcuMDY3YzAgNC43MTMgMy44MjEgOC41MzMgOC41MzMgOC41MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xODcuNzMzIDU5LjczM2M0LjcxMyAwIDguNTMzLTMuODIxIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyMS04LjUzMy04LjUzMy04LjUzMy00LjcxMyAwLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEzIDMuODIxIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTU0Ljc0MyAxNTcuODY3YzEuNTEzIDIuNjYyIDQuMzM3IDQuMzA5IDcuMzk5IDQuMzE2czUuODkzLTEuNjI4IDcuNDE4LTQuMjgzIDEuNTExLTUuOTI0LS4wMzgtOC41NjZsLTguNTMzLTE0Ljc4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI5LjE0MyAxMTMuNDkzYzEuNTEzIDIuNjYyIDQuMzM3IDQuMzA5IDcuMzk5IDQuMzE2czUuODkzLTEuNjI4IDcuNDE4LTQuMjgzIDEuNTExLTUuOTI0LS4wMzgtOC41NjZsLTguNTMzLTE0Ljc4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAzLjU0MyA2OS4xODhjMi4zNzIgNC4wNDcgNy41NjYgNS40MiAxMS42MjggMy4wNzQgNC4wNjItMi4zNDUgNS40Ny03LjUzIDMuMTUxLTExLjYwOGwtOC41MzMtMTQuNzg4Yy0xLjUxMy0yLjY2Mi00LjMzNy00LjMwOS03LjM5OS00LjMxNnMtNS44OTMgMS42MjgtNy40MTggNC4yODMtMS41MTEgNS45MjQuMDM4IDguNTY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjA5LjA2NyAxNjAuOTljNC4wODEgMi4zNTYgOS4zLjk1OCAxMS42NTctMy4xMjNsOC41MzMtMTQuNzhjMS41NDktMi42NDIgMS41NjMtNS45MTEuMDM4LTguNTY2cy00LjM1Ni00LjI5LTcuNDE4LTQuMjgzLTUuODg2IDEuNjU0LTcuMzk5IDQuMzE2bC04LjUzMyAxNC43OGMtMi4zNTggNC4wODEtLjk2IDkuMjk5IDMuMTIyIDExLjY1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzNC42NjcgMTE2LjY1MWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43OGMxLjU0OS0yLjY0MiAxLjU2My01LjkxMS4wMzgtOC41NjZzLTQuMzU2LTQuMjktNy40MTgtNC4yODMtNS44ODYgMS42NTQtNy4zOTkgNC4zMTZsLTguNTMzIDE0Ljc4Yy0yLjM1OCA0LjA4LS45NiA5LjI5OSAzLjEyMiAxMS42NTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjAuMjY3IDcyLjMxMWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43ODhjMS41NDktMi42NDIgMS41NjMtNS45MTEuMDM4LTguNTY2cy00LjM1Ni00LjI5LTcuNDE4LTQuMjgzLTUuODg2IDEuNjU0LTcuMzk5IDQuMzE2bC04LjUzMyAxNC43ODhjLTIuMzU4IDQuMDgxLS45NiA5LjMgMy4xMjIgMTEuNjU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzg0IDI3My4wNjdjNC43MTMgMCA4LjUzMy0zLjgyIDguNTMzLTguNTMzdi0xNy4wNjdjMC00LjcxMy0zLjgyLTguNTMzLTguNTMzLTguNTMzcy04LjUzMyAzLjgyMS04LjUzMyA4LjUzM3YxNy4wNjdjMCA0LjcxMiAzLjgyIDguNTMzIDguNTMzIDguNTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzg0IDIyMS44NjdjNC43MTMgMCA4LjUzMy0zLjgyMSA4LjUzMy04LjUzM3YtMTcuMDY3YzAtNC43MTMtMy44Mi04LjUzMy04LjUzMy04LjUzM3MtOC41MzMgMy44MjEtOC41MzMgOC41MzN2MTcuMDY3YzAgNC43MTIgMy44MiA4LjUzMyA4LjUzMyA4LjUzM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAxNzAuNjY3YzQuNzEzIDAgOC41MzMtMy44MjEgOC41MzMtOC41MzN2LTE3LjA2N2MwLTQuNzEzLTMuODItOC41MzMtOC41MzMtOC41MzNzLTguNTMzIDMuODIxLTguNTMzIDguNTMzdjE3LjA2N2MwIDQuNzEyIDMuODIgOC41MzMgOC41MzMgOC41MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNTEuMDEgMjY4LjhjMi4zNzIgNC4wNDcgNy41NjYgNS40MiAxMS42MjggMy4wNzQgNC4wNjItMi4zNDUgNS40Ny03LjUzIDMuMTUxLTExLjYwOGwtOC41MzMtMTQuNzhjLTEuNTE0LTIuNjYyLTQuMzM3LTQuMzA5LTcuMzk5LTQuMzE2cy01Ljg5MyAxLjYyOC03LjQxOCA0LjI4My0xLjUxMSA1LjkyNC4wMzggOC41NjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjUuNDEgMjI0LjQyN2MxLjUxNCAyLjY2MiA0LjMzNyA0LjMwOSA3LjM5OSA0LjMxNnM1Ljg5My0xLjYyOCA3LjQxOC00LjI4MyAxLjUxMS01LjkyNC0uMDM4LTguNTY2bC04LjUzMy0xNC43OGMtMS41MTQtMi42NjItNC4zMzctNC4zMDktNy4zOTktNC4zMTZzLTUuODkzIDEuNjI4LTcuNDE4IDQuMjgzLTEuNTExIDUuOTI0LjAzOCA4LjU2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5OS44MSAxODAuMTIyYzIuMzcyIDQuMDQ3IDcuNTY2IDUuNDIgMTEuNjI4IDMuMDc0IDQuMDYyLTIuMzQ1IDUuNDctNy41MyAzLjE1MS0xMS42MDhsLTguNTMzLTE0Ljc4OGMtMS41MTMtMi42NjItNC4zMzctNC4zMDktNy4zOTktNC4zMTZzLTUuODkzIDEuNjI4LTcuNDE4IDQuMjgzLTEuNTExIDUuOTI0LjAzOCA4LjU2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwNS4zMzMgMjcxLjkyM2M0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43OGMyLjMxOC00LjA3OC45MTEtOS4yNjItMy4xNTEtMTEuNjA4LTQuMDYyLTIuMzQ1LTkuMjU2LS45NzItMTEuNjI4IDMuMDc0bC04LjUzMyAxNC43OGMtMi4zNTcgNC4wODItLjk1OSA5LjMwMSAzLjEyMiAxMS42NTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzAuOTMzIDIyNy41ODRjNC4wODEgMi4zNTYgOS4zLjk1OCAxMS42NTctMy4xMjNsOC41MzMtMTQuNzhjMi4zMTgtNC4wNzguOTExLTkuMjYyLTMuMTUxLTExLjYwOHMtOS4yNTYtLjk3Mi0xMS42MjggMy4wNzRsLTguNTMzIDE0Ljc4Yy0yLjM1NyA0LjA4Mi0uOTU5IDkuMzAxIDMuMTIyIDExLjY1N3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1Ni41MzMgMTgzLjI0NWM0LjA4MSAyLjM1NiA5LjMuOTU4IDExLjY1Ny0zLjEyM2w4LjUzMy0xNC43ODhjMi4zMTgtNC4wNzguOTExLTkuMjYyLTMuMTUxLTExLjYwOC00LjA2Mi0yLjM0NS05LjI1Ni0uOTcyLTExLjYyOCAzLjA3NGwtOC41MzMgMTQuNzg4Yy0yLjM1NyA0LjA4Mi0uOTU5IDkuMyAzLjEyMiAxMS42NTd6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Nxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4wMDIgNTEyLjAwMiIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzk4LjU4OSAyNDYuMzQyYy02NC42NjYtMTcuMzI4LTExNS42MDEtNjguMjY0LTEzMi45MjktMTMyLjkyOS0xLjE3MS00LjM3Mi01LjEzMy03LjQxMi05LjY1OS03LjQxMnMtOC40ODggMy4wNC05LjY1OSA3LjQxMmMtMTcuMzI4IDY0LjY2Ni02OC4yNjMgMTE1LjYwMS0xMzIuOTI5IDEzMi45MjktNC4zNzIgMS4xNzEtNy40MTIgNS4xMzMtNy40MTIgOS42NTlzMy4wNCA4LjQ4OCA3LjQxMiA5LjY1OWM2NC42NjYgMTcuMzI5IDExNS42MDEgNjguMjY0IDEzMi45MjkgMTMyLjkyOSAxLjE3MSA0LjM3MiA1LjEzMyA3LjQxMiA5LjY1OSA3LjQxMnM4LjQ4OC0zLjA0IDkuNjU5LTcuNDEyYzE3LjMyOC02NC42NjUgNjguMjY0LTExNS42MDEgMTMyLjkyOS0xMzIuOTI5IDQuMzcyLTEuMTcxIDcuNDEyLTUuMTMzIDcuNDEyLTkuNjU5cy0zLjA0LTguNDg4LTcuNDEyLTkuNjU5em0tMTQyLjU4OCAxMTkuMTc2Yy0yMS4wMzktNDkuMDk2LTYwLjQyLTg4LjQ3OC0xMDkuNTE2LTEwOS41MTcgNDkuMDk2LTIxLjAzOSA4OC40NzgtNjAuNDIgMTA5LjUxNi0xMDkuNTE3IDIxLjAzOSA0OS4wOTcgNjAuNDIgODguNDc4IDEwOS41MTcgMTA5LjUxNy00OS4wOTcgMjEuMDM5LTg4LjQ3OCA2MC40Mi0xMDkuNTE3IDEwOS41MTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjQuMDM2IDIwMC40NThjLTEuODg2LTIuNTQ1LTQuODY3LTQuMDQ3LTguMDM1LTQuMDQ3cy02LjE0OSAxLjUwMS04LjAzNSA0LjA0N2MtMTMuNDE2IDE4LjEwNy0yOS40IDM0LjA5MS00Ny41MDggNDcuNTA4LTIuNTQ1IDEuODg2LTQuMDQ3IDQuODY3LTQuMDQ3IDguMDM1czEuNTAxIDYuMTQ5IDQuMDQ3IDguMDM1YzE4LjEwOCAxMy40MTYgMzQuMDkyIDI5LjQgNDcuNTA4IDQ3LjUwOCAxLjg4NiAyLjU0NSA0Ljg2NyA0LjA0NyA4LjAzNSA0LjA0N3M2LjE0OS0xLjUwMSA4LjAzNS00LjA0N2MxMy40MTYtMTguMTA4IDI5LjQtMzQuMDkyIDQ3LjUwOC00Ny41MDggMi41NDUtMS44ODYgNC4wNDctNC44NjcgNC4wNDctOC4wMzVzLTEuNTAxLTYuMTQ5LTQuMDQ3LTguMDM1Yy0xOC4xMDgtMTMuNDE3LTM0LjA5Mi0yOS40MDEtNDcuNTA4LTQ3LjUwOHptLTguMDM1IDg4LjkwOWMtMTAuMDQtMTIuMTYyLTIxLjIwNC0yMy4zMjYtMzMuMzY2LTMzLjM2NiAxMi4xNjMtMTAuMDQgMjMuMzI2LTIxLjIwNCAzMy4zNjYtMzMuMzY2IDEwLjA0IDEyLjE2MyAyMS4yMDQgMjMuMzI2IDMzLjM2NiAzMy4zNjYtMTIuMTYyIDEwLjA0LTIzLjMyNiAyMS4yMDQtMzMuMzY2IDMzLjM2NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1Ni4wMDEgNzUuOTk5YzUuNTIzIDAgMTAtNC40NzcgMTAtMTB2LTU1Ljk5OWMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwcy0xMCA0LjQ3Ny0xMCAxMHY1NS45OTljMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExNC41NzkgMTI4LjcyMWMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOS0uOTc2IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0M2wtMzkuNTk3LTM5LjU5OGMtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MyAwcy0zLjkwNSAxMC4yMzcgMCAxNC4xNDN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im03NiAyNTYuMDAxYzAtNS41MjMtNC40NzctMTAtMTAtMTBoLTU2Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwczQuNDc3IDEwIDEwIDEwaDU2YzUuNTIyIDAgMTAtNC40NzcgMTAtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTQuNTc5IDM4My4yODEtMzkuNTk4IDM5LjU5OGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQzIDEuOTUzIDEuOTUzIDQuNTEyIDIuOTI5IDcuMDcxIDIuOTI5czUuMTE5LS45NzYgNy4wNzEtMi45MjlsMzkuNTk4LTM5LjU5OGMzLjkwNS0zLjkwNSAzLjkwNS0xMC4yMzcgMC0xNC4xNDNzLTEwLjIzNy0zLjkwNi0xNC4xNDIgMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1Ni4wMDEgNDM2LjAwM2MtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHY1NS45OTljMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtNTUuOTk5YzAtNS41MjMtNC40NzctMTAtMTAtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zOTcuNDI0IDM4My4yODFjLTMuOTA1LTMuOTA0LTEwLjIzNi0zLjkwNC0xNC4xNDMgMC0zLjkwNSAzLjkwNS0zLjkwNSAxMC4yMzcgMCAxNC4xNDNsMzkuNTk3IDM5LjU5OGMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOS0uOTc3IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0M3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwMi4wMDIgMjQ2LjAwMWgtNTUuOTk5Yy01LjUyMyAwLTEwIDQuNDc3LTEwIDEwczQuNDc3IDEwIDEwIDEwaDU1Ljk5OWM1LjUyMyAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM5MC4zNTMgMTMxLjY0OWMyLjU1OSAwIDUuMTE5LS45NzYgNy4wNzEtMi45MjlsMzkuNTk3LTM5LjU5OGMzLjkwNS0zLjkwNSAzLjkwNS0xMC4yMzcgMC0xNC4xNDNzLTEwLjIzNy0zLjkwNS0xNC4xNDMgMGwtMzkuNTk3IDM5LjU5OGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQzIDEuOTUzIDEuOTUzIDQuNTEyIDIuOTI5IDcuMDcyIDIuOTI5eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYxLjg2OCAzOC43MzVjMS4zMTQgMCAyLjY1LS4yNjEgMy45MzQtLjgxMSA1LjA3Ny0yLjE3NSA3LjQyOC04LjA1NCA1LjI1Mi0xMy4xM2wtLjAwMy0uMDA3Yy0yLjE3NS01LjA3Ni04LjA1MS03LjQyMy0xMy4xMjktNS4yNDktNS4wNzYgMi4xNzUtNy40MjYgOC4wNTgtNS4yNSAxMy4xMzQgMS42MjUgMy43OTIgNS4zMTYgNi4wNjMgOS4xOTYgNi4wNjN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjkuODQ0IDc0LjEzMSAxMy4wNTQgMzEuNTE0YzEuNTk1IDMuODUxIDUuMzE4IDYuMTc1IDkuMjQzIDYuMTc1IDEuMjc1IDAgMi41NzItLjI0NSAzLjgyMy0uNzY0IDUuMTAyLTIuMTE0IDcuNTI1LTcuOTYzIDUuNDEyLTEzLjA2NmwtMTMuMDU0LTMxLjUxNGMtMi4xMTQtNS4xMDMtNy45NjMtNy41MjctMTMuMDY2LTUuNDEycy03LjUyNiA3Ljk2NC01LjQxMiAxMy4wNjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNC41NDIgMTcwLjk0M2MxLjM1Ny42MjYgMi43ODIuOTIzIDQuMTg0LjkyMyAzLjc4IDAgNy4zOTgtMi4xNTQgOS4wODYtNS44MTIgMi4zMTQtNS4wMTQuMTI1LTEwLjk1Ni00Ljg4OS0xMy4yN2wtLjAwNi0uMDAzYy01LjAxMy0yLjMxNS0xMC45NTItLjEyNS0xMy4yNjcgNC44OTEtMi4zMTYgNS4wMTQtLjEyMyAxMC45NTYgNC44OTIgMTMuMjcxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjYuNDc3IDE4OC4zMjEgMzEuNTE1IDEzLjA1NGMxLjI1MS41MTkgMi41NDcuNzY0IDMuODIzLjc2NCAzLjkyNCAwIDcuNjQ3LTIuMzI1IDkuMjQzLTYuMTc2IDIuMTE0LTUuMTAzLS4zMS0xMC45NTItNS40MTItMTMuMDY1bC0zMS41MTYtMTMuMDU0Yy01LjEwMS0yLjExMy0xMC45NTIuMzEtMTMuMDY1IDUuNDEyLTIuMTE0IDUuMTAyLjMxIDEwLjk1MiA1LjQxMiAxMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDUuNjQ1IDMyOS4xMDRjNS4xMDMtMi4xMTMgNy41MjYtNy45NjMgNS40MTItMTMuMDY1LTIuMTEzLTUuMTAzLTcuOTY0LTcuNTI3LTEzLjA2NS01LjQxMmwtMzEuNTE0IDEzLjA1NGMtNS4xMDMgMi4xMTMtNy41MjYgNy45NjMtNS40MTIgMTMuMDY1IDEuNTk1IDMuODUyIDUuMzE4IDYuMTc2IDkuMjQzIDYuMTc2IDEuMjc1IDAgMi41NzItLjI0NSAzLjgyMy0uNzY0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQuNzkzIDM0MC45NDctLjAwNy4wMDNjLTUuMDc2IDIuMTc1LTcuNDI0IDguMDUzLTUuMjQ5IDEzLjEyOSAxLjYyNSAzLjc5MiA1LjMxNyA2LjA2MiA5LjE5OCA2LjA2MiAxLjMxNSAwIDIuNjUyLS4yNjEgMy45MzYtLjgxMiA1LjA3Ny0yLjE3NSA3LjQyOC04LjA1NCA1LjI1Mi0xMy4xMzEtMi4xNzQtNS4wNzUtOC4wNTMtNy40MjYtMTMuMTMtNS4yNTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNjYuMDU0IDQ3NC4xOWMtNS4wMTUtMi4zMTUtMTAuOTU2LS4xMjUtMTMuMjcgNC44ODlsLS4wMDMuMDA2Yy0yLjMxNCA1LjAxNC0uMTI0IDEwLjk1MyA0Ljg5MSAxMy4yNjcgMS4zNTYuNjI2IDIuNzguOTIyIDQuMTgyLjkyMiAzLjc4MSAwIDcuNDAxLTIuMTU2IDkuMDg5LTUuODE0IDIuMzE0LTUuMDE0LjEyNS0xMC45NTUtNC44ODktMTMuMjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTUuOTYzIDQwMC45NDVjLTUuMTAxLTIuMTE0LTEwLjk1Mi4zMS0xMy4wNjUgNS40MTJsLTEzLjA1NCAzMS41MTVjLTIuMTE0IDUuMTAzLjMxIDEwLjk1MiA1LjQxMiAxMy4wNjUgMS4yNTEuNTE5IDIuNTQ3Ljc2NCAzLjgyMy43NjQgMy45MjQgMCA3LjY0Ny0yLjMyNSA5LjI0My02LjE3NmwxMy4wNTQtMzEuNTE1YzIuMTEzLTUuMTAyLS4zMTEtMTAuOTUyLTUuNDEzLTEzLjA2NXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0Ni4xOTkgNDc0LjA3OGMtNS4wNzYgMi4xNzUtNy40MjggOC4wNTQtNS4yNTIgMTMuMTNsLjAwMy4wMDdjMS42MjUgMy43OTEgNS4zMTQgNi4wNiA5LjE5MiA2LjA2IDEuMzE1IDAgMi42NTEtLjI2MSAzLjkzNy0uODEyIDUuMDc2LTIuMTc1IDcuNDI2LTguMDU4IDUuMjUtMTMuMTM0LTIuMTc0LTUuMDc2LTguMDUxLTcuNDI2LTEzLjEzLTUuMjUxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQyLjE1OCA0MzcuODcxLTEzLjA1NC0zMS41MTRjLTIuMTE0LTUuMTAzLTcuOTY1LTcuNTI3LTEzLjA2NS01LjQxMi01LjEwMyAyLjExMy03LjUyNiA3Ljk2My01LjQxMiAxMy4wNjVsMTMuMDU0IDMxLjUxNGMxLjU5NSAzLjg1MiA1LjMxOCA2LjE3NiA5LjI0MyA2LjE3NiAxLjI3NSAwIDIuNTcyLS4yNDUgMy44MjMtLjc2NCA1LjEwMi0yLjExMiA3LjUyNS03Ljk2MiA1LjQxMS0xMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00ODcuMjA4IDM0MC45NDdjLTUuMDc2LTIuMTc3LTEwLjk1NS4xNzctMTMuMTMgNS4yNTItMi4xNzYgNS4wNzcuMTc2IDEwLjk1NiA1LjI1MiAxMy4xMzFsLjAwNi4wMDNjMS4yODUuNTUgMi42MTkuODExIDMuOTMzLjgxMSAzLjg3OSAwIDcuNTY5LTIuMjcyIDkuMTk0LTYuMDY0IDIuMTc3LTUuMDc3LS4xNzgtMTAuOTU3LTUuMjU1LTEzLjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0NS41MjUgMzIzLjY4MS0zMS41MTQtMTMuMDU0Yy01LjEwMi0yLjExMy0xMC45NTEuMzEtMTMuMDY1IDUuNDEycy4zMSAxMC45NTIgNS40MTIgMTMuMDY1bDMxLjUxNCAxMy4wNTRjMS4yNTIuNTE5IDIuNTQ4Ljc2NCAzLjgyMy43NjQgMy45MjQgMCA3LjY0Ny0yLjMyNSA5LjI0My02LjE3NiAyLjExMy01LjEwMi0uMzExLTEwLjk1Mi01LjQxMy0xMy4wNjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00ODMuMjc0IDE3MS44NjZjMS4zMTQgMCAyLjY1LS4yNjEgMy45MzQtLjgxMWwuMDA3LS4wMDNjNS4wNzYtMi4xNzUgNy40MjQtOC4wNTMgNS4yNDktMTMuMTI5cy04LjA2LTcuNDI3LTEzLjEzNC01LjI1Yy01LjA3NyAyLjE3NS03LjQyOCA4LjA1NC01LjI1MiAxMy4xMzEgMS42MjUgMy43OTEgNS4zMTYgNi4wNjIgOS4xOTYgNi4wNjJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MDYuMzU3IDE4Mi44OTdjLTUuMTAzIDIuMTEzLTcuNTI2IDcuOTYzLTUuNDEyIDEzLjA2NSAxLjU5NSAzLjg1MiA1LjMxOCA2LjE3NiA5LjI0MyA2LjE3NiAxLjI3NSAwIDIuNTcyLS4yNDUgMy44MjMtLjc2NGwzMS41MTQtMTMuMDU0YzUuMTAzLTIuMTEzIDcuNTI2LTcuOTYzIDUuNDEyLTEzLjA2NS0yLjExNC01LjEwMy03Ljk2My03LjUyNy0xMy4wNjYtNS40MTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNDYuMTk5IDM3LjkyM2MxLjI4NS41NTEgMi42MjEuODExIDMuOTM1LjgxMSAzLjg4IDAgNy41NzEtMi4yNzEgOS4xOTYtNi4wNjNsLjAwMy0uMDA3YzIuMTc2LTUuMDc2LS4xNzctMTAuOTUyLTUuMjUzLTEzLjEyNy01LjA3NC0yLjE3Ni0xMC45NTcuMTc5LTEzLjEzMiA1LjI1Ni0yLjE3NyA1LjA3Ni4xNzUgMTAuOTU1IDUuMjUxIDEzLjEzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzE2LjAzOSAxMTEuMDU3YzEuMjUxLjUxOSAyLjU0Ny43NjQgMy44MjMuNzY0IDMuOTI0IDAgNy42NDctMi4zMjUgOS4yNDMtNi4xNzZsMTMuMDU0LTMxLjUxNGMyLjExNC01LjEwMy0uMzEtMTAuOTUzLTUuNDEyLTEzLjA2Ni01LjEwMS0yLjExNC0xMC45NTEuMzEtMTMuMDY1IDUuNDEybC0xMy4wNTQgMzEuNTE0Yy0yLjExNSA1LjEwMi4zMDkgMTAuOTUyIDUuNDExIDEzLjA2NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Lxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MC4wMDUgNDgwLjAwNSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTI0MC4wMDMsNDhjNC40MTgsMCw4LTMuNTgyLDgtOFY4YzAtNC40MTgtMy41ODItOC04LThzLTgsMy41ODItOCw4djMyQzIzMi4wMDMsNDQuNDE4LDIzNS41ODQsNDgsMjQwLjAwMyw0OHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE0MS4wNzUsMzYuNjU2bDE2LDI3LjcwNGMyLjE4NCwzLjg0MSw3LjA2OCw1LjE4NCwxMC45MDksM3M1LjE4NC03LjA2OCwzLTEwLjkwOWMtMC4wMTctMC4wMzEtMC4wMzUtMC4wNjEtMC4wNTMtMC4wOTINCgkJCQlsLTE2LTI3LjcwNGMtMi4xODQtMy44NDEtNy4wNjgtNS4xODQtMTAuOTA5LTNjLTMuODQxLDIuMTg0LTUuMTg0LDcuMDY4LTMsMTAuOTA5QzE0MS4wMzksMzYuNTk1LDE0MS4wNTcsMzYuNjI2LDE0MS4wNzUsMzYuNjU2DQoJCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNzYuNTY3LDEwNi44NzVjMC4wMywwLjAxOCwwLjA2MSwwLjAzNSwwLjA5MiwwLjA1M2wyNy43MDQsMTZjMy44MTIsMi4yMzQsOC43MTMsMC45NTYsMTAuOTQ3LTIuODU2DQoJCQkJYzIuMjM0LTMuODEyLDAuOTU2LTguNzEzLTIuODU2LTEwLjk0N2MtMC4wMy0wLjAxOC0wLjA2MS0wLjAzNS0wLjA5Mi0wLjA1M2wtMjcuNzA0LTE2Yy0zLjgxMi0yLjIzNC04LjcxMy0wLjk1Ni0xMC45NDcsMi44NTYNCgkJCQlDNzEuNDc3LDk5LjczOSw3Mi43NTUsMTA0LjY0MSw3Ni41NjcsMTA2Ljg3NXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTk2LjAwMywxOTJjMC00LjQxOC0zLjU4Mi04LTgtOGgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJDOTIuNDIxLDIwMCw5Ni4wMDMsMTk2LjQxOCw5Ni4wMDMsMTkyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA0LjQ1NiwyNjEuMDE4Yy0wLjAzMSwwLjAxOC0wLjA2MiwwLjAzNi0wLjA5MywwLjA1NGwtMjcuNzA0LDE2Yy0zLjg0MSwyLjE4My01LjE4NSw3LjA2Ny0zLjAwMiwxMC45MDgNCgkJCQljMi4xODMsMy44NDEsNy4wNjcsNS4xODUsMTAuOTA4LDMuMDAyYzAuMDMxLTAuMDE4LDAuMDYyLTAuMDM2LDAuMDkzLTAuMDU0bDI3LjcwNC0xNmMzLjg0MS0yLjE4Myw1LjE4NS03LjA2NywzLjAwMi0xMC45MDgNCgkJCQlDMTEzLjE4MSwyNjAuMTc5LDEwOC4yOTcsMjU4LjgzNSwxMDQuNDU2LDI2MS4wMTh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MDMuNDQsMjc3LjEyNmMtMC4wMzEtMC4wMTgtMC4wNjItMC4wMzYtMC4wOTMtMC4wNTRsLTI3LjcwNC0xNmMtMy44MTEtMi4yMzUtOC43MTMtMC45NTctMTAuOTQ4LDIuODU0DQoJCQkJYy0yLjIzNSwzLjgxMS0wLjk1Nyw4LjcxMywyLjg1NCwxMC45NDhjMC4wMzEsMC4wMTgsMC4wNjIsMC4wMzYsMC4wOTMsMC4wNTRsMjcuNzA0LDE2YzMuODExLDIuMjM1LDguNzEzLDAuOTU3LDEwLjk0OC0yLjg1NA0KCQkJCUM0MDguNTI5LDI4NC4yNjIsNDA3LjI1MSwyNzkuMzYxLDQwMy40NCwyNzcuMTI2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI0LjAwMywxODRoLTMyYy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDMyYzQuNDE4LDAsOC0zLjU4Miw4LThTNDI4LjQyMSwxODQsNDI0LjAwMywxODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNzEuNjUxLDEyNGMxLjQwNCwwLDIuNzg0LTAuMzcsNC0xLjA3MmwyNy43MDQtMTZjMy44NDEtMi4xODQsNS4xODQtNy4wNjgsMy0xMC45MDlzLTcuMDY4LTUuMTg0LTEwLjkwOS0zDQoJCQkJYy0wLjAzMSwwLjAxNy0wLjA2MSwwLjAzNS0wLjA5MiwwLjA1M2wtMjcuNzA0LDE2Yy0zLjgyNiwyLjIwOS01LjEzNyw3LjEwMi0yLjkyOCwxMC45MjgNCgkJCQlDMzY2LjE1MiwxMjIuNDc1LDM2OC43OTMsMTI0LDM3MS42NTEsMTI0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzExLjk5Myw2Ny4yOTFjMC4wMDMsMC4wMDIsMC4wMDYsMC4wMDQsMC4wMDksMC4wMDVjMy44MjcsMi4yMDcsOC43MiwwLjg5NCwxMC45MjctMi45MzQNCgkJCQljMC0wLjAwMSwwLjAwMS0wLjAwMiwwLjAwMS0wLjAwMmwxNi0yNy43MDRjMi4yMzUtMy44MTEsMC45NTctOC43MTMtMi44NTQtMTAuOTQ4Yy0zLjgxMS0yLjIzNS04LjcxMy0wLjk1Ny0xMC45NDgsMi44NTQNCgkJCQljLTAuMDE4LDAuMDMxLTAuMDM2LDAuMDYyLTAuMDU0LDAuMDkzbC0xNiwyNy43MDRDMzA2Ljg2Miw2MC4xODQsMzA4LjE2OSw2NS4wNzgsMzExLjk5Myw2Ny4yOTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNTYuMDAzLDMyMGM0LjQxOCwwLDgtMy41ODIsOC04di04OGgxNmMxNy42NzMsMCwzMi0xNC4zMjcsMzItMzJzLTE0LjMyNy0zMi0zMi0zMmMtMTcuNjczLDAtMzIsMTQuMzI3LTMyLDMydjE2aC0xNg0KCQkJCXYtMTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMycy0zMiwxNC4zMjctMzIsMzJzMTQuMzI3LDMyLDMyLDMyaDE2djg4YzAsNC40MTgsMy41ODIsOCw4LDhzOC0zLjU4Miw4LTh2LTg4aDE2djg4DQoJCQkJQzI0OC4wMDMsMzE2LjQxOCwyNTEuNTg0LDMyMCwyNTYuMDAzLDMyMHogTTI2NC4wMDMsMTkyYzAtOC44MzcsNy4xNjMtMTYsMTYtMTZzMTYsNy4xNjMsMTYsMTZzLTcuMTYzLDE2LTE2LDE2aC0xNlYxOTJ6DQoJCQkJIE0yMTYuMDAzLDIwOGgtMTZjLTguODM3LDAtMTYtNy4xNjMtMTYtMTZzNy4xNjMtMTYsMTYtMTZzMTYsNy4xNjMsMTYsMTZWMjA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjQ2LjIxOSw2NC4xNTJjLTcwLjYxMS0zLjM5Mi0xMzAuNjAzLDUxLjA5OS0xMzMuOTk1LDEyMS43MWMtMS45NDMsNDAuNDMyLDE1LjM1NCw3OS40LDQ2LjY0MywxMDUuMDgyDQoJCQkJYzUuNjM5LDQuNDE3LDguOTk0LDExLjEzNSw5LjEzNiwxOC4yOTZWMzI4YzAuMDQyLDEwLjEzNCw2LjQ0NSwxOS4xNSwxNiwyMi41MjhWMzYwYzAuMDIxLDUuOTIzLDIuMjQ1LDExLjYyNyw2LjI0LDE2DQoJCQkJYy04LjMyLDkuMDQ0LTguMzIsMjIuOTU2LDAsMzJjLTguODk0LDkuNzUtOC4yLDI0Ljg2NCwxLjU1LDMzLjc1OGM0LjQyOSw0LjA0LDEwLjIxNSw2LjI2OCwxNi4yMSw2LjI0Mg0KCQkJCWM0LjMwNiwwLjExMyw3Ljg4OS0zLjI4Nyw4LjAwMS03LjU5M2MwLjA0NC0xLjY4LTAuNDU2LTMuMzMtMS40MjUtNC43MDNjLTAuMjUzLTAuNDg5LTAuNTUzLTAuOTUzLTAuODk2LTEuMzg0DQoJCQkJYy0wLjY1OC0wLjYwMi0xLjQwOS0xLjA5NC0yLjIyNC0xLjQ1NmMtMC4yMzItMC4xMi0wLjQ2NC0wLjIxNi0wLjcwNC0wLjMxMmMtMC44MS0wLjI5NS0xLjY1OS0wLjQ2NS0yLjUyLTAuNTA0DQoJCQkJYy0wLjA4LDAtMC4xNTItMC4wNDgtMC4yMzItMC4wNDhjLTQuNDE4LDAtOC0zLjU4Mi04LThzMy41ODItOCw4LThoMzJjNC40MTgsMCw4LTMuNTgyLDgtOHMtMy41ODItOC04LThoLTMyDQoJCQkJYy00LjQxOCwwLTgtMy41ODItOC04czMuNTgyLTgsOC04aDMyYzQuNDE4LDAsOC0zLjU4Miw4LThzLTMuNTgyLTgtOC04aC0zMmMtNC40MTgsMC04LTMuNTgyLTgtOHYtOGg0MGM0LjQxOCwwLDgtMy41ODIsOC04DQoJCQkJcy0zLjU4Mi04LTgtOGgtNDhjLTQuNDE4LDAtOC0zLjU4Mi04LTh2LTE4Ljc2Yy0wLjEzMS0xMS45NjItNS42NC0yMy4yMy0xNS0zMC42OGMtNDcuNzg4LTM5LjI3NC01NC42ODktMTA5Ljg1Mi0xNS40MTUtMTU3LjY0DQoJCQkJYzIyLjQ2Ni0yNy4zMzYsNTYuNTI4LTQyLjQ0OCw5MS44NzEtNDAuNzZjNTkuMTA3LDMuNTE2LDEwNS41MzYsNTEuOTU3LDEwNi41NDQsMTExLjE2YzAuMjg3LDM0LjA1Mi0xNS4wMjQsNjYuMzYzLTQxLjU2LDg3LjcwNA0KCQkJCWMtOS4yOSw3LjY1Mi0xNC42MDIsMTkuMTA5LTE0LjQ0LDMxLjE0NFYzMjhjMCw0LjQxOC0zLjU4Miw4LTgsOGgtMjRjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMTZ2OA0KCQkJCWMwLDQuNDE4LTMuNTgyLDgtOCw4aC04Yy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDhjNC40MTgsMCw4LDMuNTgyLDgsOHMtMy41ODIsOC04LDhoLThjLTQuNDE4LDAtOCwzLjU4Mi04LDgNCgkJCQlzMy41ODIsOCw4LDhoOGM0LjQxOCwwLDgsMy41ODIsOCw4cy0zLjU4Miw4LTgsOGgtNDBjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzAuNjMyDQoJCQkJYy00LjQxNywxMi40OTctMTguMTI5LDE5LjA0Ny0zMC42MjYsMTQuNjNjLTMuODI2LTEuMzUyLTcuMjQ2LTMuNjUzLTkuOTQyLTYuNjg2Yy0yLjkzOC0zLjMtNy45OTYtMy41OTQtMTEuMjk2LTAuNjU2DQoJCQkJYy0zLjMsMi45MzgtMy41OTQsNy45OTYtMC42NTYsMTEuMjk2YzE0LjYzMSwxNi40ODcsMzkuODU3LDE3Ljk5Miw1Ni4zNDQsMy4zNjJjNi44MS02LjA0MywxMS4zNDktMTQuMjMyLDEyLjg2NC0yMy4yMQ0KCQkJCWMxMi41MjktMy45MTYsMTkuNTExLTE3LjI0NywxNS41OTYtMjkuNzc2Yy0xLjA0LTMuMzI5LTIuODAxLTYuMzg4LTUuMTU2LTguOTZjOC4zMi05LjA0NCw4LjMyLTIyLjk1NiwwLTMyDQoJCQkJYzMuOTk1LTQuMzczLDYuMjE5LTEwLjA3Nyw2LjI0LTE2di05LjQ3MmM5LjU1NS0zLjM3OCwxNS45NTgtMTIuMzk0LDE2LTIyLjUyOHYtMTcuODMyYy0wLjEwNy03LjE4NywzLjAwNy0xNC4wNDYsOC40ODgtMTguNjk2DQoJCQkJYzMwLjM0NC0yNC4zOTUsNDcuODUtNjEuMzM5LDQ3LjUxMi0xMDAuMjcyQzM2Ni44NDcsMTIzLjUzMiwzMTMuNzc3LDY4LjE2OSwyNDYuMjE5LDY0LjE1MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",gxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yNTUuOTk5LDBjLTc5LjA0NCwwLTE0My4zNTIsNjQuMzA4LTE0My4zNTIsMTQzLjM1M3Y3MC4xOTNjMCw0Ljc4LDMuODc5LDguNjU2LDguNjU5LDguNjU2aDQ4LjA1Nw0KCQkJYzQuNzgsMCw4LjY1Ni0zLjg3Niw4LjY1Ni04LjY1NnYtNzAuMTkzYzAtNDIuOTk4LDM0Ljk4MS03Ny45OCw3Ny45NzktNzcuOThzNzcuOTc5LDM0Ljk4Miw3Ny45NzksNzcuOTh2NzAuMTkzDQoJCQljMCw0Ljc4LDMuODgsOC42NTYsOC42NjEsOC42NTZoNDguMDU3YzQuNzgsMCw4LjY1Ni0zLjg3Niw4LjY1Ni04LjY1NnYtNzAuMTkzQzM5OS4zNTIsNjQuMzA4LDMzNS4wNDQsMCwyNTUuOTk5LDB6DQoJCQkgTTM4Mi4wNCwyMDQuODloLTMwLjc0OHYtNjEuNTM3YzAtNTIuNTQ0LTQyLjc0OC05NS4yOTItOTUuMjkxLTk1LjI5MnMtOTUuMjkxLDQyLjc0OC05NS4yOTEsOTUuMjkydjYxLjUzN2gtMzAuNzQ4di02MS41MzcNCgkJCWMwLTY5LjQ5OSw1Ni41NC0xMjYuMDQsMTI2LjAzOC0xMjYuMDRjNjkuNDk5LDAsMTI2LjA0LDU2LjU0MSwxMjYuMDQsMTI2LjA0VjIwNC44OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQxMC42MywyMDQuODlIMTAxLjM3MWMtMjAuNTA1LDAtMzcuMTg4LDE2LjY4My0zNy4xODgsMzcuMTg4djIzMi43MzRjMCwyMC41MDUsMTYuNjgzLDM3LjE4OCwzNy4xODgsMzcuMTg4SDQxMC42Mw0KCQkJYzIwLjUwNSwwLDM3LjE4Ny0xNi42ODMsMzcuMTg3LTM3LjE4OVYyNDIuMDc4QzQ0Ny44MTcsMjIxLjU3Myw0MzEuMTM1LDIwNC44OSw0MTAuNjMsMjA0Ljg5eiBNNDMwLjUwNSw0NzQuODExDQoJCQljMCwxMC45Ni04LjkxNiwxOS44NzYtMTkuODc1LDE5Ljg3NkgxMDEuMzcxYy0xMC45NiwwLTE5Ljg3Ni04LjkxNi0xOS44NzYtMTkuODc2VjI0Mi4wNzhjMC0xMC45Niw4LjkxNi0xOS44NzYsMTkuODc2LTE5Ljg3Ng0KCQkJSDQxMC42M2MxMC45NTksMCwxOS44NzUsOC45MTYsMTkuODc1LDE5Ljg3NlY0NzQuODExeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjg1LjExLDM2OS43ODFjMTAuMTEzLTguNTIxLDE1Ljk5OC0yMC45NzgsMTUuOTk4LTM0LjM2NWMwLTI0Ljg3My0yMC4yMzYtNDUuMTA5LTQ1LjEwOS00NS4xMDkNCgkJCWMtMjQuODc0LDAtNDUuMTEsMjAuMjM2LTQ1LjExLDQ1LjEwOWMwLDEzLjM4Nyw1Ljg4NSwyNS44NDQsMTYsMzQuMzY3bC05LjczMSw0Ni4zNjJjLTAuNTM1LDIuNTU0LDAuMTA4LDUuMjExLDEuNzUyLDcuMjM2DQoJCQljMS42NDUsMi4wMjMsNC4xMTMsMy4yLDYuNzIsMy4yaDYwLjczOGMyLjYwOCwwLDUuMDc2LTEuMTc2LDYuNzE5LTMuMmMxLjY0My0yLjAyNiwyLjI4Ni00LjY4MywxLjc1MS03LjIzNEwyODUuMTEsMzY5Ljc4MXoNCgkJCSBNMjcwLjg1MSwzNTguODJjLTMuMDQsMS45MzYtNC41NjUsNS41NTMtMy44MjQsOS4wODFsOC42OCw0MS4zNjZoLTM5LjQxNWw4LjY4Mi00MS4zNjNjMC43NC0zLjUyOS0wLjc4Mi03LjE0Ni0zLjgyNC05LjA4MQ0KCQkJYy04LjEwOC01LjE2LTEyLjk0OC0xMy45MTEtMTIuOTQ4LTIzLjQwNmMwLTE1LjMyNywxMi40NjktMjcuNzk2LDI3Ljc5Ny0yNy43OTZjMTUuMzI3LDAsMjcuNzk2LDEyLjQ2OSwyNy43OTYsMjcuNzk2DQoJCQlDMjgzLjc5NywzNDQuOTE0LDI3OC45NTcsMzUzLjY2MywyNzAuODUxLDM1OC44MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",jxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00OTQuOTMzNTk0IDBoLTQ3Ny44NjcxODhjLTkuNDIxODc1LjAwNzgxMjUtMTcuMDU4NTkzNSA3LjY0NDUzMS0xNy4wNjY0MDYgMTcuMDY2NDA2djU5LjczNDM3NWMuMDA3ODEyNSA5LjQyMTg3NSA3LjY0NDUzMSAxNy4wNTQ2ODggMTcuMDY2NDA2IDE3LjA2NjQwN2gxMC44OTQ1MzJsLTI2LjgzNTkzOCA0Ni45NjQ4NDNjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTk1MzEgMS41MjczNDQgMi42Mjg5MDcgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2NDg0NGMtMS41MDc4MTIgMi42NDA2MjUtMS41IDUuODg2NzE5LjAyNzM0NCA4LjUxNTYyNSAxLjUyNzM0NCAyLjYzMjgxMyA0LjMzOTg0NCA0LjI1IDcuMzgyODEyIDQuMjVoMTkuNDI1NzgybC0yNi44MzU5MzggNDYuOTY4NzVjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4MjgxMy4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42Mjg5MDYgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2ODc1Yy0xLjUwNzgxMiAyLjY0MDYyNS0xLjUgNS44ODI4MTMuMDI3MzQ0IDguNTE1NjI1IDEuNTI3MzQ0IDIuNjI4OTA3IDQuMzM5ODQ0IDQuMjUgNy4zODI4MTIgNC4yNWgxOS40MjU3ODJsLTI2LjgzNTkzOCA0Ni45NjQ4NDRjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42MzI4MTIgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1MzkwNmgxOS40MjU3ODJsLTI2LjgzNTkzOCA0Ni45NjQ4NDRjLTEuNTA3ODEyIDIuNjQwNjI1LTEuNSA1Ljg4NjcxOS4wMjczNDQgOC41MTU2MjUgMS41MjczNDQgMi42MzI4MTMgNC4zMzk4NDQgNC4yNSA3LjM4MjgxMiA0LjI1aDE5LjQyNTc4MmwtMjYuODM1OTM4IDQ2Ljk2ODc1Yy0xLjUwNzgxMiAyLjY0MDYyNS0xLjUgNS44ODI4MTMuMDI3MzQ0IDguNTE1NjI1IDEuNTI3MzQ0IDIuNjI4OTA2IDQuMzM5ODQ0IDQuMjUgNy4zODI4MTIgNC4yNWg0OTQuOTI5Njg4YzMuMDQyOTY4IDAgNS44NTU0NjgtMS42MjEwOTQgNy4zODI4MTItNC4yNSAxLjUyNzM0NC0yLjYzMjgxMiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45Njg3NWgxOS40MjU3ODJjMy4wNDI5NjggMCA1Ljg1NTQ2OC0xLjYxNzE4NyA3LjM4MjgxMi00LjI1IDEuNTI3MzQ0LTIuNjI4OTA2IDEuNTM1MTU2LTUuODc1LjAyNzM0NC04LjUxNTYyNWwtMjYuODM1OTM4LTQ2Ljk2NDg0NGgxOS40MjU3ODJjMy4wNDI5NjgtLjAwMzkwNiA1Ljg1NTQ2OC0xLjYyMTA5NCA3LjM4MjgxMi00LjI1MzkwNiAxLjUyNzM0NC0yLjYyODkwNiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45NjQ4NDRoMTkuNDI1NzgyYzMuMDQyOTY4IDAgNS44NTU0NjgtMS42MjEwOTMgNy4zODI4MTItNC4yNSAxLjUyNzM0NC0yLjYzMjgxMiAxLjUzNTE1Ni01Ljg3NS4wMjczNDQtOC41MTU2MjVsLTI2LjgzNTkzOC00Ni45Njg3NWgxOS40MjU3ODJjMy4wNDI5NjggMCA1Ljg1NTQ2OC0xLjYyMTA5NCA3LjM4MjgxMi00LjI1IDEuNTI3MzQ0LTIuNjMyODEyIDEuNTM1MTU2LTUuODc1LjAyNzM0NC04LjUxNTYyNWwtMjYuODM1OTM4LTQ2Ljk2ODc1aDE5LjQyNTc4MmMzLjA0Mjk2OCAwIDUuODU1NDY4LTEuNjE3MTg3IDcuMzgyODEyLTQuMjUgMS41MjczNDQtMi42Mjg5MDYgMS41MzUxNTYtNS44NzUuMDI3MzQ0LTguNTE1NjI1bC0yNi44MzU5MzgtNDYuOTY0ODQ0aDE5LjQyNTc4MmMzLjA0Mjk2OCAwIDUuODU1NDY4LTEuNjIxMDkzIDcuMzgyODEyLTQuMjUgMS41MjczNDQtMi42MzI4MTIgMS41MzUxNTYtNS44Nzg5MDYuMDI3MzQ0LTguNTE5NTMxbC0yNi44MzU5MzgtNDYuOTY0ODQzaDEwLjg5NDUzMmM5LjQyMTg3NS0uMDExNzE5IDE3LjA1NDY4Ny03LjY0NDUzMiAxNy4wNjY0MDYtMTcuMDY2NDA3di01OS43MzQzNzVjLS4wMTE3MTktOS40MjE4NzUtNy42NDQ1MzEtMTcuMDU0Njg3Mi0xNy4wNjY0MDYtMTcuMDY2NDA2em0tNDQ3LjMxNjQwNiA5My44NjcxODhoNDYuMjV2NDIuNjY3OTY4aC03MC42Mjg5MDd6bTMxOS4zMTY0MDYgMHY0Mi42Njc5NjhoLTIyMS44NjcxODh2LTQyLjY2Nzk2OHptNjguMjY1NjI1IDB2NDIuNjY3OTY4aC0xNy4wNjY0MDd2LTQyLjY2Nzk2OHptLTI5MC4xMzI4MTMgMzQxLjMzMjAzMXYtNDIuNjY0MDYzaDIyMS44NjcxODh2NDIuNjY0MDYzem0yMjEuODY3MTg4IDE3LjA2NjQwNnY0Mi42Njc5NjloLTIyMS44NjcxODh2LTQyLjY2Nzk2OXptMC0yNTZoLTIyMS44NjcxODh2LTQyLjY2NDA2M2gyMjEuODY3MTg4em0xNy4wNjY0MDYtNDIuNjY0MDYzaDE3LjA2NjQwNnY0Mi42NjQwNjNoLTE3LjA2NjQwNnptLTIzOC45MzM1OTQgMTYyLjEzMjgxM3YtNDIuNjY3OTY5aDIyMS44NjcxODh2NDIuNjY3OTY5em0yMjEuODY3MTg4IDE3LjA2NjQwNnY0Mi42NjQwNjNoLTIyMS44NjcxODh2LTQyLjY2NDA2M3ptLTIyMS44NjcxODgtNzYuODAwNzgxdi00Mi42Njc5NjloMjIxLjg2NzE4OHY0Mi42Njc5Njl6bS0xNy4wNjY0MDYtNTkuNzM0Mzc1aC0xNy4wNjY0MDZ2LTQyLjY2NDA2M2gxNy4wNjY0MDZ6bTAgMTcuMDY2NDA2djQyLjY2Nzk2OWgtMTcuMDY2NDA2di00Mi42Njc5Njl6bTAgNTkuNzM0Mzc1djQyLjY2Nzk2OWgtMTcuMDY2NDA2di00Mi42Njc5Njl6bTAgNTkuNzM0Mzc1djQyLjY2NDA2M2gtMTcuMDY2NDA2di00Mi42NjQwNjN6bTAgNTkuNzM0Mzc1djQyLjY2NDA2M2gtMTcuMDY2NDA2di00Mi42NjQwNjN6bTI1NiAwaDE3LjA2NjQwNnY0Mi42NjQwNjNoLTE3LjA2NjQwNnptMC0xNy4wNzAzMTJ2LTQyLjY2NDA2M2gxNy4wNjY0MDZ2NDIuNjY0MDYzem0wLTU5LjczMDQ2OXYtNDIuNjY3OTY5aDE3LjA2NjQwNnY0Mi42Njc5Njl6bTAtNTkuNzM0Mzc1di00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMzQuMTMyODEyLTQyLjY2Nzk2OWgxNy4wNjY0MDd2NDIuNjY3OTY5aC0xNy4wNjY0MDd6bTAtMTcuMDY2NDA2di00Mi42NjQwNjNoMTcuMDY2NDA3djQyLjY2NDA2M3ptLTE3LjA2NjQwNi01OS43MzA0NjloLTE3LjA2NjQwNnYtNDIuNjY3OTY4aDE3LjA2NjQwNnptLTI3My4wNjY0MDYgMGgtMTcuMDY2NDA2di00Mi42Njc5NjhoMTcuMDY2NDA2em0tODAuMzgyODEyIDE3LjA2NjQwNmg0Ni4yNXY0Mi42NjQwNjNoLTcwLjYyODkwN3ptMCA1OS43MzA0NjloNDYuMjV2NDIuNjY3OTY5aC03MC42Mjg5MDd6bTAgNTkuNzM0Mzc1aDQ2LjI1djQyLjY2Nzk2OWgtNzAuNjI4OTA3em0wIDU5LjczNDM3NWg0Ni4yNXY0Mi42NjQwNjNoLTcwLjYyODkwN3ptMCA1OS43MzQzNzVoNDYuMjV2NDIuNjY0MDYzaC03MC42Mjg5MDd6bTAgNTkuNzMwNDY5aDQ2LjI1djQyLjY2Nzk2OWgtNzAuNjI4OTA3em02My4zMTY0MDYgNDIuNjY3OTY5di00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMjczLjA2NjQwNiAwdi00Mi42Njc5NjloMTcuMDY2NDA2djQyLjY2Nzk2OXptMTA0Ljc1NzgxMiAwaC03MC42MjV2LTQyLjY2Nzk2OWg0Ni4yNXptMC01OS43MzQzNzVoLTcwLjYyNXYtNDIuNjY0MDYzaDQ2LjI1em0wLTU5LjczNDM3NWgtNzAuNjI1di00Mi42NjQwNjNoNDYuMjV6bTAtNTkuNzMwNDY5aC03MC42MjV2LTQyLjY2Nzk2OWgxNy4wNjY0MDd2MTcuMDY2NDA2YzAgNC43MTQ4NDQgMy44MjAzMTIgOC41MzUxNTcgOC41MzUxNTYgOC41MzUxNTcgNC43MTA5MzcgMCA4LjUzMTI1LTMuODIwMzEzIDguNTMxMjUtOC41MzUxNTd2LTE3LjA2NjQwNmgxMi4xMTcxODd6bTAtNTkuNzM0Mzc1aC0zNi40OTIxODd2LTQyLjY2Nzk2OWgxMi4xMTcxODd6bTAtNTkuNzM0Mzc1aC0zNi40OTIxODd2LTQyLjY2NDA2M2gxMi4xMTcxODd6bTAtNTkuNzMwNDY5aC0zNi40OTIxODd2LTQyLjY2Nzk2OGgxMi4xMTcxODd6bS0xOS40MjU3ODEtNTkuNzM0Mzc1aC00NTIuMjY1NjI1di01OS43MzQzNzVoNDc3Ljg2NzE4OGwuMDA3ODEyIDU5LjczNDM3NXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im01OS43MzQzNzUgNDIuNjY3OTY5aC0xNy4wNjY0MDZjLTQuNzE0ODQ0IDAtOC41MzUxNTcgMy44MjAzMTItOC41MzUxNTcgOC41MzEyNSAwIDQuNzE0ODQzIDMuODIwMzEzIDguNTM1MTU2IDguNTM1MTU3IDguNTM1MTU2aDE3LjA2NjQwNmM0LjcxMDkzNyAwIDguNTMxMjUtMy44MjAzMTMgOC41MzEyNS04LjUzNTE1NiAwLTQuNzEwOTM4LTMuODIwMzEzLTguNTMxMjUtOC41MzEyNS04LjUzMTI1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0NS4wNjY0MDYgNDIuNjY3OTY5aC01MS4xOTkyMThjLTQuNzE0ODQ0IDAtOC41MzUxNTcgMy44MjAzMTItOC41MzUxNTcgOC41MzEyNSAwIDQuNzE0ODQzIDMuODIwMzEzIDguNTM1MTU2IDguNTM1MTU3IDguNTM1MTU2aDUxLjE5OTIxOGM0LjcxNDg0NCAwIDguNTM1MTU2LTMuODIwMzEzIDguNTM1MTU2LTguNTM1MTU2IDAtNC43MTA5MzgtMy44MjAzMTItOC41MzEyNS04LjUzNTE1Ni04LjUzMTI1em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",yxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTIzNCAyNDMuNzgzYy0uOTUxIDAtMS44NjguMTQxLTIuNzM5LjM4OWwtLjAwMi0uMDA3LTI4LjcyMiA4LjE4N2MtNS4zMTEgMS41MTQtOC4zOSA3LjA0Ny02Ljg3NiAxMi4zNTggMS4yNTMgNC4zOTYgNS4yNTggNy4yNjEgOS42MTIgNy4yNjEuOTA3IDAgMS44My0uMTI1IDIuNzQ2LS4zODVsMTUuOTgxLTQuNTU0djM1LjQybC0xMjQgMzUuMzQ1di0zNS40MmwyMS40NjQtNi4xMThjNS4zMTEtMS41MTQgOC4zOS03LjA0NyA2Ljg3Ni0xMi4zNThzLTcuMDQ1LTguMzg3LTEyLjM1OC02Ljg3NmwtMjguNzIzIDguMTg3LjAwMS4wMDdjLTQuMTg5IDEuMTkzLTcuMjYgNS4wMzktNy4yNiA5LjYxdjEyNy4xOTljLTguMzYzLTYuMjkzLTE4Ljc1Mi0xMC4wMjgtMzAtMTAuMDI4LTI3LjU3IDAtNTAgMjIuNDMtNTAgNTBzMjIuNDMgNTAgNTAgNTAgNTAtMjIuNDMgNTAtNTB2LTEwMy40MDZsMTI0LTM1LjM0NXY1Ny43MzNjLTguMzYzLTYuMjkyLTE4Ljc1Mi0xMC4wMjctMzAtMTAuMDI3LTI3LjU3IDAtNTAgMjIuNDMtNTAgNTBzMjIuNDMgNTAgNTAgNTAgNTAtMjIuNDMgNTAtNTB2LTE2Ny4xNzJjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMHptLTE4NCAyNDguMjE3Yy0xNi41NDIgMC0zMC0xMy40NTgtMzAtMzBzMTMuNDU4LTMwIDMwLTMwIDMwIDEzLjQ1OCAzMCAzMC0xMy40NTggMzAtMzAgMzB6bTE0NC00MS4wNDVjLTE2LjU0MiAwLTMwLTEzLjQ1OC0zMC0zMHMxMy40NTgtMzAgMzAtMzAgMzAgMTMuNDU4IDMwIDMwLTEzLjQ1OCAzMC0zMCAzMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwOC4wMTMgMi4wMWMtMi41MTEtMS44ODktNS43NjMtMi40ODctOC43ODItMS42MTlsLTEwNC40MDggMzAuMDg5Yy00LjI4MiAxLjIzNC03LjIzMSA1LjE1Mi03LjIzMSA5LjYwOXYxMjcuMTk5Yy04LjM2My02LjI5Mi0xOC43NTItMTAuMDI3LTMwLTEwLjAyNy0yNy41NyAwLTUwIDIyLjQzLTUwIDUwczIyLjQzIDUwIDUwIDUwIDUwLTIyLjQzIDUwLTUwdi0xMDMuNDNsOTcuMTc3LTI4LjAwNWM0LjI4Mi0xLjIzNCA3LjIzMS01LjE1MiA3LjIzMS05LjYwOXYtNTYuMjE3YzAtMy4xNDItMS40NzctNi4xMDEtMy45ODctNy45OXptLTE1MC40MjEgMjM1LjI1MWMtMTYuNTQyIDAtMzAtMTMuNDU4LTMwLTMwczEzLjQ1OC0zMCAzMC0zMCAzMCAxMy40NTggMzAgMzAtMTMuNDU4IDMwLTMwIDMwem0xMzQuNDA4LTE3OC41NjktODQuNDA4IDI0LjMyNXYtMzUuNDAzbDg0LjQwOC0yNC4zMjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NzEuNTkxIDM0OC43NjItNDguMjg4LTcuMDE3LTIxLjU5NS00My43NTZjLTEuNjg1LTMuNDEzLTUuMTYxLTUuNTc0LTguOTY3LTUuNTc0cy03LjI4MyAyLjE2MS04Ljk2NyA1LjU3NGwtMjEuNTk1IDQzLjc1Ni00OC4yODggNy4wMTdjLTMuNzY3LjU0Ny02Ljg5NiAzLjE4Ni04LjA3MyA2LjgwNnMtLjE5NSA3LjU5NCAyLjUzMSAxMC4yNTFsMzQuOTQxIDM0LjA2LTguMjQ5IDQ4LjA5M2MtLjY0NCAzLjc1MS44OTggNy41NDMgMy45NzggOS43ODEgMy4wNzkgMi4yMzYgNy4xNjIgMi41MzIgMTAuNTMxLjc2MWw0My4xOS0yMi43MDcgNDMuMTkgMjIuNzA2YzEuNDYzLjc3IDMuMDYxIDEuMTQ5IDQuNjUyIDEuMTQ5IDIuMDczIDAgNC4xMzctLjY0NCA1Ljg3OS0xLjkxIDMuMDgtMi4yMzcgNC42MjItNi4wMjkgMy45NzgtOS43ODFsLTguMjQ5LTQ4LjA5MyAzNC45NDEtMzQuMDZjMi43MjYtMi42NTcgMy43MDctNi42MzEgMi41MzEtMTAuMjUxcy00LjMwNC02LjI1OC04LjA3MS02LjgwNXptLTQ3LjEyNCA0MC40NjRjLTIuMzU3IDIuMjk3LTMuNDMzIDUuNjA3LTIuODc2IDguODUxbDUuNzEyIDMzLjMwNC0yOS45MDktMTUuNzI0Yy0yLjkxMy0xLjUzMi02LjM5My0xLjUzMi05LjMwNyAwbC0yOS45MDkgMTUuNzI0IDUuNzEyLTMzLjMwNGMuNTU3LTMuMjQ0LS41MTktNi41NTQtMi44NzYtOC44NTFsLTI0LjE5Ni0yMy41ODYgMzMuNDM5LTQuODU5YzMuMjU3LS40NzMgNi4wNzMtMi41MTkgNy41MjktNS40N2wxNC45NTUtMzAuMzAxIDE0Ljk1NCAzMC4zMDFjMS40NTcgMi45NTEgNC4yNzIgNC45OTcgNy41MjkgNS40N2wzMy40MzkgNC44NTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMi42MiA5MC43MDYtNi42MiAzOC41OTNjLS42NDQgMy43NTEuODk4IDcuNTQzIDMuOTc4IDkuNzgxIDMuMDc5IDIuMjM3IDcuMTYzIDIuNTMzIDEwLjUzMS43NjFsMzQuNjU4LTE4LjIyMSAzNC42NTkgMTguMjIxYzEuNDYzLjc2OSAzLjA2MSAxLjE0OCA0LjY1MiAxLjE0OCAyLjA3MyAwIDQuMTM3LS42NDQgNS44NzktMS45MSAzLjA4LTIuMjM4IDQuNjIyLTYuMDI5IDMuOTc4LTkuNzgxbC02LjYyLTM4LjU5MyAyOC4wNC0yNy4zMzFjMi43MjYtMi42NTcgMy43MDctNi42MzEgMi41MzEtMTAuMjUxcy00LjMwNi02LjI1OC04LjA3My02LjgwNmwtMzguNzUtNS42MzEtMTcuMzI4LTM1LjExMmMtMS42ODQtMy40MTMtNS4xNi01LjU3NC04Ljk2Ny01LjU3NHMtNy4yODMgMi4xNjEtOC45NjcgNS41NzRsLTE3LjMyOSAzNS4xMTMtMzguNzUgNS42MzFjLTMuNzY3LjU0Ny02Ljg5NiAzLjE4Ni04LjA3MyA2LjgwNnMtLjE5NSA3LjU5NCAyLjUzMSAxMC4yNTF6bTI0LjMzLTMwLjk4M2MzLjI1Ny0uNDczIDYuMDczLTIuNTE5IDcuNTI5LTUuNDdsMTAuNjg4LTIxLjY1NyAxMC42ODggMjEuNjU3YzEuNDU3IDIuOTUxIDQuMjcyIDQuOTk3IDcuNTI5IDUuNDdsMjMuOSAzLjQ3My0xNy4yOTIgMTYuODU4Yy0yLjM1NyAyLjI5OC0zLjQzMyA1LjYwOC0yLjg3NiA4Ljg1Mmw0LjA4MyAyMy44MDQtMjEuMzc3LTExLjIzOGMtMS40NTctLjc2Ni0zLjA1NS0xLjE0OS00LjY1My0xLjE0OS0xLjU5OSAwLTMuMTk3LjM4My00LjY1MyAxLjE0OWwtMjEuMzc3IDExLjIzOCA0LjA4My0yMy44MDRjLjU1Ny0zLjI0NC0uNTE5LTYuNTU0LTIuODc2LTguODUybC0xNy4yOTYtMTYuODU4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjM0IDg2LjMwNmMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHYxMGMwIDUuNTIzIDQuNDc3IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwdi0xMGMwLTUuNTIzLTQuNDc3LTEwLTEwLTEweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjM0IDE1Ni4zMDZjLTUuNTIzIDAtMTAgNC40NzctMTAgMTB2MTBjMCA1LjUyMyA0LjQ3NyAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtMTBjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3NCAxMjYuMzA2aC0xMGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3NyAxMCAxMCAxMGgxMGM1LjUyMyAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3Ny0xMC0xMC0xMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE5NCAxNDYuMzA2aDEwYzUuNTIzIDAgMTAtNC40NzcgMTAtMTBzLTQuNDc3LTEwLTEwLTEwaC0xMGMtNS41MjMgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3NyAxMCAxMCAxMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2MiAyODQuMzFjMi42MyAwIDUuMjEtMS4wNyA3LjA3LTIuOTNzMi45My00LjQ0IDIuOTMtNy4wN2MwLTIuNjQtMS4wNy01LjIxLTIuOTMtNy4wOC0xLjg2LTEuODYtNC40NC0yLjkyLTcuMDctMi45MnMtNS4yMSAxLjA2LTcuMDcgMi45MmMtMS44NiAxLjg3LTIuOTMgNC40NC0yLjkzIDcuMDggMCAyLjYzIDEuMDcgNS4yMSAyLjkzIDcuMDdzNC40NCAyLjkzIDcuMDcgMi45M3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Txe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUwNS40IDUwNS40Ij4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDM3LjEsMjMzLjQ1YzE0LjgtMTAuNCwyNC42LTI3LjcsMjQuNi00Ny4yYzAtMzEuOS0yNS44LTU3LjctNTcuNy01Ny43Yy0zMS45LDAtNTcuNywyNS44LTU3LjcsNTcuNw0KCQkJYzAsMTkuNSw5LjcsMzYuOCwyNC42LDQ3LjJjLTEyLjcsNC40LTI0LjMsMTEuMi0zNC4xLDIwYy0xMy41LTExLjUtMjkuNC0yMC4zLTQ2LjgtMjUuNWMyMS4xLTEyLjgsMzUuMy0zNi4xLDM1LjMtNjIuNg0KCQkJYzAtNDAuNC0zMi43LTczLjEtNzMuMS03My4xYy00MC40LDAtNzMuMSwzMi44LTczLjEsNzMuMWMwLDI2LjUsMTQuMSw0OS44LDM1LjMsNjIuNmMtMTcuMiw1LjItMzIuOSwxMy45LTQ2LjMsMjUuMg0KCQkJYy05LjgtOC42LTIxLjItMTUuMy0zMy43LTE5LjZjMTQuOC0xMC40LDI0LjYtMjcuNywyNC42LTQ3LjJjMC0zMS45LTI1LjgtNTcuNy01Ny43LTU3LjdzLTU3LjcsMjUuOC01Ny43LDU3LjcNCgkJCWMwLDE5LjUsOS43LDM2LjgsMjQuNiw0Ny4yQzI4LjUsMjQ3LjI1LDAsMjg0Ljk1LDAsMzI5LjI1djYuNmMwLDAuMiwwLjIsMC40LDAuNCwwLjRoMTIyLjNjLTAuNyw1LjUtMS4xLDExLjItMS4xLDE2Ljl2Ni44DQoJCQljMCwyOS40LDIzLjgsNTMuMiw1My4yLDUzLjJoMTU1YzI5LjQsMCw1My4yLTIzLjgsNTMuMi01My4ydi02LjhjMC01LjctMC40LTExLjQtMS4xLTE2LjlINTA1YzAuMiwwLDAuNC0wLjIsMC40LTAuNHYtNi42DQoJCQlDNTA1LjIsMjg0Ljg1LDQ3Ni44LDI0Ny4xNSw0MzcuMSwyMzMuNDV6IE0zNjIuMywxODYuMTVjMC0yMywxOC43LTQxLjcsNDEuNy00MS43czQxLjcsMTguNyw0MS43LDQxLjcNCgkJCWMwLDIyLjctMTguMyw0MS4yLTQwLjksNDEuN2MtMC4zLDAtMC41LDAtMC44LDBzLTAuNSwwLTAuOCwwQzM4MC41LDIyNy40NSwzNjIuMywyMDguOTUsMzYyLjMsMTg2LjE1eiBNMTk0LjksMTY1LjM1DQoJCQljMC0zMS41LDI1LjYtNTcuMSw1Ny4xLTU3LjFzNTcuMSwyNS42LDU3LjEsNTcuMWMwLDMwLjQtMjMuOSw1NS4zLTUzLjgsNTdjLTEuMSwwLTIuMiwwLTMuMywwYy0xLjEsMC0yLjIsMC0zLjMsMA0KCQkJQzIxOC44LDIyMC42NSwxOTQuOSwxOTUuNzUsMTk0LjksMTY1LjM1eiBNNTkuMywxODYuMTVjMC0yMywxOC43LTQxLjcsNDEuNy00MS43czQxLjcsMTguNyw0MS43LDQxLjdjMCwyMi43LTE4LjMsNDEuMi00MC45LDQxLjcNCgkJCWMtMC4zLDAtMC41LDAtMC44LDBzLTAuNSwwLTAuOCwwQzc3LjYsMjI3LjQ1LDU5LjMsMjA4Ljk1LDU5LjMsMTg2LjE1eiBNMTI1LjUsMzIwLjE1SDE2LjJjNC41LTQyLjYsNDAuNS03Niw4NC4yLTc2LjMNCgkJCWMwLjIsMCwwLjQsMCwwLjYsMHMwLjQsMCwwLjYsMGMyMC44LDAuMSwzOS44LDcuOCw1NC41LDIwLjNDMTQxLjcsMjc5Ljc1LDEzMSwyOTguOTUsMTI1LjUsMzIwLjE1eiBNMzY2LjgsMzU5Ljk1DQoJCQljMCwyMC41LTE2LjcsMzcuMi0zNy4yLDM3LjJoLTE1NWMtMjAuNSwwLTM3LjItMTYuNy0zNy4yLTM3LjJ2LTYuOGMwLTYyLjEsNDkuNi0xMTIuOSwxMTEuMy0xMTQuN2MxLjEsMC4xLDIuMywwLjEsMy40LDAuMQ0KCQkJczIuMywwLDMuNC0wLjFjNjEuNywxLjgsMTExLjMsNTIuNiwxMTEuMywxMTQuN1YzNTkuOTV6IE0zNzguNywzMjAuMTVjLTUuNS0yMS4xLTE2LTQwLTMwLjMtNTUuNmMxNC44LTEyLjgsMzQtMjAuNSw1NS0yMC43DQoJCQljMC4yLDAsMC40LDAsMC42LDBzMC40LDAsMC42LDBjNDMuNywwLjMsNzkuNywzMy43LDg0LjIsNzYuM0gzNzguN3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Dxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM2Ny4wNDMgMTcwLjQxNGMtMTAuNTE2LS4zNjUtMjAuMDE2LTUuMDQ3LTI2Ljc0OS0xMy4xODEtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC02LjczMyA4LjEzNS0xNi4yMzMgMTIuODE2LTI2Ljc0OSAxMy4xODItNC4xNC4xNDQtNy4zNzkgMy42MTYtNy4yMzQgNy43NTYuMTQ0IDQuMTQgMy41OTQgNy4zNzEgNy43NTYgNy4yMzUgMTMuNTY2LS40NzIgMjYuMzg2LTYuMzI4IDM1LjY0Ni0xNi4xODcgMjAuMjc2IDIxLjYyOSA1NC41NjkgMjEuNjU3IDc0Ljg3NS4wMDEgMjAuMjc4IDIxLjYyOSA1NC41NzEgMjEuNjU0IDc0Ljg3NC0uMDAxIDkuMjYyIDkuODU5IDIyLjA4IDE1LjcxNSAzNS42NDcgMTYuMTg3IDQuMTIxLjE0OSA3LjYxMy0zLjA5NSA3Ljc1Ni03LjIzNS4xNDUtNC4xNC0zLjA5NC03LjYxMi03LjIzNC03Ljc1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MC4yOTQgMjE4Ljc1N2MtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NiAxNy42MzYtNDEuNDYxIDE3LjYwNy01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTk2IDE3LjYzOS00MS40NjEgMTcuNjA2LTU2LjAzMS0uMDAxLTQuOTA0LTUuOTIyLTEzLjkyNy01LjkzOC0xOC44NDEuMDAxLTcuOTk0IDkuNjU4LTIwLjE4MiAxNC40ODQtMzIuNjEyIDEyLjkxNC00LjEtLjUxOS03Ljg2MSAyLjM4OS04LjM4MiA2LjQ5OS0uNTIxIDQuMTA5IDIuMzkgNy44NjIgNi40OTkgOC4zODIgMTYuNDgxIDIuMDg5IDMyLjY1OC0zLjc5NSA0My45MTYtMTUuODA4IDIwLjI3NyAyMS42MjggNTQuNTY4IDIxLjY1NCA3NC44NzMgMCAyMC4yNzYgMjEuNjI3IDU0LjU3IDIxLjY1NiA3NC44NzMgMCAxMS4yNTggMTIuMDEzIDI3LjQzNiAxNy44OTYgNDMuOTE1IDE1LjgwOCA0LjEwOS0uNTIgNy4wMi00LjI3MiA2LjQ5OS04LjM4MnMtNC4yODktNy4wMTktOC4zODItNi40OTljLTEyLjQzNSAxLjU2OS0yNC42MTgtMy4yNTUtMzIuNjExLTEyLjkxNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC43ODIgMTA3LjdjLTguMDgyLTEuNzAzLTE1LjE2Ny02LTIwLjQ4Ny0xMi40MjctNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC01LjMyIDYuNDI3LTEyLjQwNCAxMC43MjUtMjAuNDg2IDEyLjQyOC00LjA1NC44NTQtNi42NDcgNC44MzItNS43OTMgOC44ODVzNC44NCA2LjY0NyA4Ljg4NSA1Ljc5MmMxMC4zODMtMi4xODggMTkuNTkyLTcuMzkgMjYuODE2LTE1LjExNyAyMC4yODIgMjEuNjMxIDU0LjU3MiAyMS42NDggNzQuODcyLS4wMDEgMjAuMjc2IDIxLjYyNiA1NC41NjcgMjEuNjU2IDc0Ljg3MS4wMDIgNy4yMjYgNy43MjcgMTYuNDM2IDEyLjkzIDI2LjgxOCAxNS4xMTYgNC4wNDguODU1IDguMDMtMS43NCA4Ljg4NS01Ljc5My44NTMtNC4wNTMtMS43NDEtOC4wMzEtNS43OTMtOC44ODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01NC45ODUgNDI5LjI3M2gxNjkuNzMydjY5LjU3OWMwIDcuMjUgNS44OTggMTMuMTQ4IDEzLjE0OSAxMy4xNDhoMjUuMTkyYzcuMjUgMCAxMy4xNDgtNS44OTggMTMuMTQ4LTEzLjE0OHYtMS40NjRoNzQuMTk5djEuNDY0YzAgNy4yNSA1Ljg5OCAxMy4xNDggMTMuMTQ5IDEzLjE0OGgyNS4xOTJjNy4yNSAwIDEzLjE0OC01Ljg5OCAxMy4xNDgtMTMuMTQ4di02OS41NzloNTUuMTE5YzI0LjEyMSAwIDQzLjA4MS0yMC44ODYgNDAuNjU3LTQ0Ljk1Ni0uMDA0LS4wNC0uMDA4LS4wOC0uMDEzLS4xMmwtMTMuMDM1LTExMS41NjdjLS40ODEtNC4xMTQtNC4yMTUtNy4wNjItOC4zMTktNi41NzktNC4xMTQuNDgxLTcuMDYgNC4yMDYtNi41NzkgOC4zMmwxMy4wMyAxMTEuNTAzYzEuNDYgMTQuODMzLTEwLjA5NCAyOC4zOTgtMjUuNzM4IDI4LjM5OGgtNTUuMTE5di0xOS4wNThoNDQuOTM3YzkuNDcgMCAxNi44OC04LjE5MSAxNS45MzUtMTcuNjE2LS4wMDUtLjA0My0uMDEtLjA4Ni0uMDE1LS4xMjlsLTM4Ljc1Ni0zMjkuMDc0Yy0uODYxLTguMTc5LTcuNjk1LTE0LjMzNy0xNS45MjctMTQuMzM3aC0xMzQuNTcxYy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDEzNC41NzFjLjUyMyAwIC45NTcuMzkzIDEuMDEuOTE0LjAwNC4wNDIuMDA5LjA4My4wMTQuMTI1bDM4Ljc1IDMyOS4wMzRjLjAxOS4yNzUtLjA3NC41NDctLjI2Ljc1MS0uMTkxLjIxMi0uNDY2LjMzMy0uNzUyLjMzM2gtNDQuOTM3di0yMi44OTJjMC0zOS40NzctMzIuMjU2LTcwLjM0NC03MC4zNDUtNzAuMzQ0LTI2Ljc3OCAwLTUwLjk0NyAxNS4xODktNjIuODM5IDM4Ljc0NC0xMi4wMDgtMjMuNzcyLTM2LjcyNS0zOS4yNS02NC4yMDYtMzguNzMxLTM3LjcuNzA5LTY4Ljk4OCAzMS41OTMtNjguOTg4IDcwLjMzMnYyMi44OTJoLTcwLjM1MmMtLjI4NiAwLS41Ni0uMTIyLS43NTMtLjMzNS0uMTg1LS4yMDQtLjI3Ny0uNDc2LS4yNTktLjc1MWwzOC43NTItMzI5LjAzMmMuMDA1LS4wNDIuMDEtLjA4NC4wMTQtLjEyNy4wNTMtLjUyLjQ4Ni0uOTEyIDEuMDEtLjkxMmgxMzQuNTdjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEzNC41N2MtOC4yMzMgMC0xNS4wNjcgNi4xNi0xNS45MjcgMTQuMzM5bC0zOC43NTcgMzI5LjA3M2MtLjAwNS4wNDMtLjAxLjA4Ni0uMDE1LjEyOS0uOTQ2IDkuNDIyIDYuNDY0IDE3LjYxNiAxNS45MzUgMTcuNjE2aDE1OS41NTF2MTkuMDU4aC0xNjkuNzMyYy0xNC44NTIgMC0yNy4yNzktMTIuNzgyLTI1LjczOS0yOC4zOTlsNDAuNjA5LTM0Ny40ODNjLjAwNS0uMDQuMDA5LS4wOC4wMTMtLjExOSAxLjMzNi0xMy4yNjggMTIuMzk5LTIzLjI3MyAyNS43MzQtMjMuMjczaDMyMC43OThjMTMuMzM1IDAgMjQuMzk3IDEwLjAwNSAyNS43MzMgMjMuMjcyLjAwNC4wNC4wMDguMDguMDEzLjEybDIzLjQ4NyAyMDAuOTc5Yy40ODEgNC4xMTUgNC4yMTcgNy4wNjMgOC4zMTkgNi41NzkgNC4xMTQtLjQ4IDcuMDYtNC4yMDYgNi41NzktOC4zMmwtMjMuNDgtMjAwLjkyMmMtMi4xMzgtMjAuOTMyLTE5LjYwMy0zNi43MDgtNDAuNjUxLTM2LjcwOGgtMzIwLjc5OGMtMjEuMDQ5IDAtMzguNTE2IDE1Ljc3Ny00MC42NTIgMzYuNzFsLTQwLjYxIDM0Ny40ODhjLS4wMDUuMDQtLjAwOS4wOC0uMDEzLjEyLTIuNDE1IDIzLjk5OSAxNi40NjYgNDQuOTU1IDQwLjY1OCA0NC45NTV6bTI1Ny43MTMtNzEuMzAyYzAtMTAuMzI1IDguMTIyLTE5LjI4OSAxOC41LTE5LjQ4MyAxMC42ODItLjIwNCAxOS4yMDkgOC40OTEgMTkuMjA5IDE4LjgzNnYyMi44OTJoLTM3LjcwOXptLTM2LjQ5MSA3MS4zMDJoNzQuMTk5djE5LjA1OGgtNzQuMTk5em03OC4yMTUtMzQuMDU4YzUuNTY5IDAgMTAuMDE0IDQuODE4IDkuNDg0IDEwLjQzLS40NzMgNC44ODQtNC41OSA4LjYyNy05LjQ4NCA4LjYyN2gtNzguMjE1di0xOS4wNThjMjYuMTEyLjAwMSA1Mi4xNjcuMDAxIDc4LjIxNS4wMDF6bS03OC4yMTUgNjguMTE2aDc4LjIxNWM1LjUzNyAwIDEwLjAxNiA0Ljc5NiA5LjQ4NCAxMC40My0uNDcyIDQuODc0LTQuNTg3IDguNjI3LTkuNDg0IDguNjI3aC03OC4yMTV6bTExMC42OSAzMy42NjloLTIxLjQ5di0yLjIxM2MxOC4wMTQtOS4xMjcgMTguMDU0LTM0LjcwOCAwLTQzLjg1NXYtMjQuMjZjMTguMDk4LTkuMTcgMTcuOTY4LTM0Ljc1MiAwLTQzLjg1NXYtMjUuNDkzYzAtMjAuNDg2LTE4LjIwMi0zNi41MTctMzguNzk0LTMzLjQ5LTE2LjM1MyAyLjQtMjguOTE1IDE2LjUyNi0yOC45MTUgMzMuNDl2MjIuODkyaC0yMS40OXYtMjEuODM3YzAtMzAuNTUyIDI0LjQ2LTU2LjA5NCA1NC44MjItNTYuMzg2IDMxLjIxOC0uMjYyIDU1Ljg2NyAyNS4wNTggNTUuODY3IDU1LjMzMXptLTIzNi4zNzctMTE2Ljc4NXYtMjEuODM4YzAtMzIuMjI0IDI2LjY5Ni01Ny41ODMgNTcuNTg5LTU2LjM0MiAyOS40ODMgMS4yMDQgNTMuMDk5IDI1LjUwMyA1My4wOTkgNTUuMjg3djEzOS42NzdoLTIxLjQ5YzAtMTQuNDE4IDAtMTIxLjA2MyAwLTEzOS42NzcgMC0xNy45NS0xNC4wNjUtMzIuODA0LTMxLjkxNS0zMy43OTUtMTkuMjc2LTEuMDk2LTM1Ljc5MyAxNC4yNjEtMzUuNzkzIDMzLjc5NXYyMi44OTJoLTIxLjQ5em0zNi40OSAwdi0yMi4yNDVjMC05LjQyNSA2Ljc2Mi0xNy43MjQgMTUuODc3LTE5LjI0MyAxMS42MzktMS44NTIgMjEuODMgNy4yMzcgMjEuODMgMTguNTk2djIyLjg5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",dxe="PHN2ZyB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MGgtMzJ2LTgwYzAtOC44MjItNy4xNzgtMTYtMTYtMTZoLTMydi00MGMwLTEzLjIzMy0xMC43NjctMjQtMjQtMjRoLTIyNGMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0djQwaC0zMmMtOC44MjIgMC0xNiA3LjE3OC0xNiAxNnY4MGgtMzJjLTIyLjA1NiAwLTQwIDE3Ljk0NC00MCA0MHYxNzZjMCAyMi4wNTYgMTcuOTQ0IDQwIDQwIDQwaDgwdjcyYzAgMTMuMjMzIDEwLjc2NyAyNCAyNCAyNGgyMjRjMTMuMjMzIDAgMjQtMTAuNzY3IDI0LTI0di03Mmg4MGMyMi4wNTYgMCA0MC0xNy45NDQgNDAtNDB2LTE3NmMwLTIyLjA1Ni0xNy45NDQtNDAtNDAtNDB6bS00OC04MHY4MGgtMzJ2LTgwem0tMjg4LTU2YzAtNC40MTEgMy41ODktOCA4LThoMjI0YzQuNDExIDAgOCAzLjU4OSA4IDh2MTM2aC0yNDBjMC0xLjYzNSAwLTEzMC4yMTEgMC0xMzZ6bS00OCA1NmgzMnY4MGgtMzJ6bTI4OCA0MDhjMCA0LjQxMS0zLjU4OSA4LTggOGgtMjI0Yy00LjQxMSAwLTgtMy41ODktOC04di0xMzZoMjQwem0xMjAtMTEyYzAgMTMuMjMzLTEwLjc2NyAyNC0yNCAyNGgtODB2LTQ4aDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04Yy0yOC42NTcgMC0yOTAuODgzIDAtMzA0IDAtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGgxNnY0OGgtODBjLTEzLjIzMyAwLTI0LTEwLjc2Ny0yNC0yNHYtMTc2YzAtMTMuMjMzIDEwLjc2Ny0yNCAyNC0yNGg0MzJjMTMuMjMzIDAgMjQgMTAuNzY3IDI0IDI0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDU2IDE5MmMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0czEwLjc2NyAyNCAyNCAyNCAyNC0xMC43NjcgMjQtMjQtMTAuNzY3LTI0LTI0LTI0em0wIDMyYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkyIDE5MmMtMTMuMjMzIDAtMjQgMTAuNzY3LTI0IDI0czEwLjc2NyAyNCAyNCAyNCAyNC0xMC43NjcgMjQtMjQtMTAuNzY3LTI0LTI0LTI0em0wIDMyYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQ0IDM3NmgtMTY4Yy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4aDE2OGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0NCA0MTZoLTE2OGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGgxNjhjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNDQgNDU2aC0xNjhjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDhoMTY4YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",hxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ3My41NzQgMjUyLjQzMmgtNzMuMTg0di00My43NjFjMC0xMS40NzMtOS4zMzQtMjAuODA3LTIwLjgwNy0yMC44MDctOS44ODYgMC0zNC4yOTUgMC00NC4zMDIgMHYtMTcuODQxYzAtMTIuMzk5LTEwLjA4Ny0yMi40ODYtMjIuNDg2LTIyLjQ4NmgtMTcuNTk1bDE0LjcyNC00Ny41MzVjMTYuNzU5LjY5MiAzMC41MzktMTIuNzUgMzAuNTM5LTI5LjI4NCAwLTE2LjE2NC0xMy4xNTEtMjkuMzE1LTI5LjMxNS0yOS4zMTUtMjkuMjY4IDAtNDAuNDU1IDM4LjUxLTE1LjU0MSA1NC4xNTRsLTE2LjEwMSA1MS45NzloLTMwLjEzM2MtMTAuNTc2IDAtMTkuODMxIDcuNTE0LTIyLjAwNiAxNy44NjYtLjEwNi41MDctLjE2IDEuMDI0LS4xNiAxLjU0MnYyMC45MTloLTM4LjE0NnYtMTguODAxYzAtOC42NzMtNy4wNTctMTUuNzMtMTUuNzMtMTUuNzNoLTEuMzc5di0xOS41NzJjOS40NjktLjIwMyAxNy4xMTMtNy45NTMgMTcuMTEzLTE3LjQ3di0xNS42MTZjMC05LjUxNy03LjY0NC0xNy4yNjctMTcuMTEzLTE3LjQ3di00My42OTljMC0yMS42OTUtMTcuNjUtMzkuMzQ2LTM5LjM0Ni0zOS4zNDZoLTUxLjY3N2MtNC4xNCAwLTcuNDk1IDMuMzU2LTcuNDk1IDcuNDk1czMuMzU2IDcuNDk1IDcuNDk1IDcuNDk1aDUxLjY3OGMxMy40MjkgMCAyNC4zNTUgMTAuOTI2IDI0LjM1NSAyNC4zNTV2NDMuNjgyaC0zNy45NTd2LTIyLjU4NGMwLTQuMTQtMy4zNTYtNy40OTUtNy40OTUtNy40OTVoLTk2LjJ2LTM3Ljk1N2gzNS42MzhjNC4xNCAwIDcuNDk1LTMuMzU2IDcuNDk1LTcuNDk1cy0zLjM1NS03LjQ5NS03LjQ5NS03LjQ5NWgtNDMuMTMzYy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2NTIuOTQ3YzAgNC4xNCAzLjM1NiA3LjQ5NSA3LjQ5NSA3LjQ5NWg5Ni4ydjE1LjEwOWMtOS40NjguMjAzLTE3LjExMiA3Ljk1NC0xNy4xMTIgMTcuNDd2MTUuNjE2YzAgOS41MTYgNy42NDQgMTcuMjY3IDE3LjExMiAxNy40N3YxOS41NzJoLTEuMzc5Yy04LjY3MyAwLTE1LjczIDcuMDU3LTE1LjczIDE1LjczdjE4LjgwMWgtMjIuNTU1Yy0xMS40NzMgMC0yMC44MDcgOS4zMzQtMjAuODA3IDIwLjgwN3YyLjQ4OWwtMzMuNDAyIDcuNTg5Yy0zLjQxMy43NzUtNS44MzUgMy44MDktNS44MzUgNy4zMDl2MTA3LjI0M2MwIDMuNDk5IDIuNDIxIDYuNTMzIDUuODMzIDcuMzA4bDMzLjQwNCA3LjU5OHYyLjQ4N2MwIDExLjQ3MyA5LjMzNCAyMC44MDcgMjAuODA3IDIwLjgwN2g2LjQyNHYyNy43OTloLTE1LjEyN2MtNC4xNCAwLTcuNDk1IDMuMzU2LTcuNDk1IDcuNDk1IDAgNC4xNCAzLjM1NiA3LjQ5NSA3LjQ5NSA3LjQ5NWgzMzMuODQ5YzEuMzc4IDAgMi40OTggMS4xMjEgMi40OTggMi40OTh2MjUuNTJjLTE1LjgzNi0yLjgzLTMyLjQxOC4xMDMtNDYuNzA3IDguODExLTE2Ljc1NCAxMC4yMTEtMzcuNTcgMTAuMjEyLTU0LjMyNCAwLTIxLjU2Ny0xMy4xNDQtNDguMzYxLTEzLjE0NS02OS45MjggMC0xNi43NTQgMTAuMjExLTM3LjU3IDEwLjIxMi01NC4zMjQgMC0yMS41NjctMTMuMTQ0LTQ4LjM2MS0xMy4xNDUtNjkuOTI4IDAtMTYuNzU0IDEwLjIxMi0zNy41NyAxMC4yMTItNTQuMzI0IDBsLTI3LjQ2OS0xNi43NDJ2LTIwLjA4N2gxMC42NzZjNC4xNCAwIDcuNDk1LTMuMzU2IDcuNDk1LTcuNDk1cy0zLjM1Ni03LjQ5NS03LjQ5NS03LjQ5NWgtMTguMTcyYy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2OTcuNTQ5YzAgNC4xMzkgMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNDk3LjAwOWM0LjE0IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTUgMC04OC41MDYgMC0xMTguMDA5IDAtMjEzLjQ4Ny4wMDEtMjEuMTg4LTE3LjIzNy0zOC40MjYtMzguNDI1LTM4LjQyNnptLTE2Mi40MjUtMTk2LjAzN2M3Ljg5OCAwIDE0LjMyNSA2LjQyNiAxNC4zMjUgMTQuMzI0cy02LjQyNiAxNC4zMjUtMTQuMzI1IDE0LjMyNWMtNy44OTggMC0xNC4zMjQtNi40MjYtMTQuMzI0LTE0LjMyNXM2LjQyNi0xNC4zMjQgMTQuMzI0LTE0LjMyNHptLTI2Ny42MDQgMjc2LjQ0LTI0LjI0Ny01LjUxNXYtOTUuMjc3bDI0LjI0Ny01LjUwOXptMTk4LjY1My0xNjQuOTc0Yy45NDctMy4xMjUgMy44NjctNS4zMzMgNy4xNzYtNS4zMzNoNjMuNDJjNC4xMzMgMCA3LjQ5NSAzLjM2MiA3LjQ5NSA3LjQ5NXYxNy44NDFoLTc4LjA5MXptLTE0MC4zMDUtNTEuNTY5di0xNS42MTZjMC0xLjM3OCAxLjEyMS0yLjQ5OCAyLjQ5OC0yLjQ5OGg2Ny4xODVjMS4zNzggMCAyLjQ5OCAxLjEyMSAyLjQ5OCAyLjQ5OHYxNS42MTZjMCAxLjM3OC0xLjEyMSAyLjQ5OC0yLjQ5OCAyLjQ5OGgtNjcuMTg1Yy0xLjM3Ny4wMDEtMi40OTgtMS4xMi0yLjQ5OC0yLjQ5OHptNTUuMDY5IDE3LjQ4OXYxOS41NTNoLTM3Ljk1N3YtMTkuNTUzem0tNTUuMDY2IDM1LjI4M2MwLS40MDcuMzMyLS43MzkuNzM5LS43MzloNzAuNjk2Yy40MDcgMCAuNzM5LjMzMi43MzkuNzM5djE4LjgwMWgtNzIuMTc1di0xOC44MDF6bS0uMDAzIDMzLjc5MWgyNDAuMTQ4djE1My42NTZoLTI0MC4xNDh6bS0zNy41NDIgMTUzLjY1NmMtMy4yMDcgMC01LjgxNi0yLjYwOS01LjgxNi01LjgxNnYtMTQyLjAyM2MwLTMuMjA3IDIuNjA5LTUuODE2IDUuODE2LTUuODE2aDIyLjU1MXYxNTMuNjU2Yy01LjIxMS0uMDAxLTE3LjQ4OC0uMDAxLTIyLjU1MS0uMDAxem0yOTkuMzcyIDQyLjc5aC0yNzcuOTU3di0yNy43OTloMjc3Ljk1NnYyNy43OTl6bTcuNDk1LTQyLjc5NGMtLjAyOSAwLS4wNTguMDA0LS4wODcuMDA0aC0xNC4wOTl2LTE1My42NTZoMjIuNTUxYzMuMjA3IDAgNS44MTYgMi42MDkgNS44MTYgNS44MTZ2MTQyLjAyNGMwIDMuMjA3LTIuNjA5IDUuODE2LTUuODE2IDUuODE2aC04LjI3OGMtLjAyOSAwLS4wNTgtLjAwNC0uMDg3LS4wMDR6bTEyNS43OTEgMTQwLjM0M2MtOS4zNzkgMC00NzEuMTA3IDAtNDgyLjAxOSAwdi00NC45MTZsMTkuNjY3IDExLjk4N2MyMS41NjcgMTMuMTQ1IDQ4LjM2MSAxMy4xNDUgNjkuOTI4IDAgMTYuNzU0LTEwLjIxMSAzNy41Ny0xMC4yMTIgNTQuMzI0IDAgMjEuNTY4IDEzLjE0NSA0OC4zNjEgMTMuMTQ1IDY5LjkyOCAwIDE2Ljc1NC0xMC4yMTEgMzcuNTctMTAuMjEyIDU0LjMyNCAwIDIxLjU2OCAxMy4xNDUgNDguMzYxIDEzLjE0NSA2OS45MjggMCAxNy4wOTctMTAuNDIxIDM3Ljk0MS05Ljk4NiA1NC4zMjQgMCAyMS41NjcgMTMuMTQ0IDQ4LjM2MiAxMy4xNDQgNjkuOTI4IDBsMTkuNjY3LTExLjk4N2MuMDAxIDEwLjU1Ni4wMDEgMjIuMzguMDAxIDQ0LjkxNnptMC02Mi40NzJjLTI5Ljc4OSAxOC4xNTYtMzAuMzUzIDE4LjgzNi0zNi41MjcgMjEuMTMydi00NC4yNTdjMC00LjEzOS0zLjM1Ni03LjQ5NS03LjQ5NS03LjQ5NXMtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2NDcuNDI3Yy0xOS40NzIgMS4xNzItMjguOTg0LTcuNjg4LTM4LjUwNi0xMS44MzZ2LTMwLjA1NGMwLTkuNjQzLTcuODQ2LTE3LjQ4OS0xNy40ODktMTcuNDg5aC0xMC43ODN2LTI3Ljc5OWMxMy4zNDIgMCAyMS42NzYtMTAuMDQ5IDIxLjY3Ni0yMC44MDd2LTMxLjc1NWg0NS4xMDJ2NjIuMzMxYzAgNC4xMzkgMy4zNTYgNy40OTUgNy40OTUgNy40OTVzNy40OTUtMy4zNTYgNy40OTUtNy40OTV2LTY5LjgyNmMwLTQuMTM5LTMuMzU2LTcuNDk1LTcuNDk1LTcuNDk1aC01Mi41OTd2LTM2LjUyN2g3My4xODRjMTIuOTIzIDAgMjMuNDM2IDEwLjUxMyAyMy40MzYgMjMuNDM1djE0My41MnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxMS4wMjQgMjI3LjE1M2gtNzkuNzI2Yy00LjE0IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTV2OTAuMDdjMCA0LjE0IDMuMzU2IDcuNDk1IDcuNDk1IDcuNDk1aDc5LjcyNmM0LjE0IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTV2LTkwLjA3Yy4wMDEtNC4xMzktMy4zNTUtNy40OTUtNy40OTUtNy40OTV6bS03LjQ5NSA5MC4wN2gtNjQuNzM1di03NS4wNzloNjQuNzM1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAyNDAuOTdoLTY0LjUwNWMtNC4xMzkgMC03LjQ5NSAzLjM1Ni03LjQ5NSA3LjQ5NSAwIDQuMTQgMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTUuMDAxLTQuMTM5LTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAyNzIuMTg4aC02NC41MDVjLTQuMTM5IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTVzMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTVzLTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzEyLjYzNSAzMDMuNDA2aC02NC41MDVjLTQuMTM5IDAtNy40OTUgMy4zNTYtNy40OTUgNy40OTVzMy4zNTYgNy40OTUgNy40OTUgNy40OTVoNjQuNTA1YzQuMTM5IDAgNy40OTUtMy4zNTYgNy40OTUtNy40OTVzLTMuMzU1LTcuNDk1LTcuNDk1LTcuNDk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYxLjg5OSAyODcuMTc5aDcuNTQ4bC0yLjkwNCA3LjQzMmMtMS41MDcgMy44NTUuMzk3IDguMjAyIDQuMjUzIDkuNzA5Ljg5Ni4zNSAxLjgxOS41MTYgMi43MjYuNTE2IDIuOTk3IDAgNS44MjYtMS44MDkgNi45ODMtNC43NjlsNi45LTE3LjY1NWMuOTAyLTIuMzA3LjYwNi00LjkxLS43OTEtNi45NTVzLTMuNzEzLTMuMjY4LTYuMTktMy4yNjhoLTcuNTQ4bDIuOTA0LTcuNDMyYzEuNTA3LTMuODU1LS4zOTctOC4yMDItNC4yNTMtOS43MDktMy44NTUtMS41MDktOC4yMDMuMzk2LTkuNzA5IDQuMjUzbC02LjkgMTcuNjU1Yy0uOTAyIDIuMzA3LS42MDYgNC45MS43OTEgNi45NTUgMS4zOTYgMi4wNDQgMy43MTMgMy4yNjggNi4xOSAzLjI2OHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",zxe="PHN2ZyB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtOTQuNzI3IDczLjcwOGE2Ljc1IDYuNzUgMCAxIDAgNi43NSA2Ljc1IDYuNzU2IDYuNzU2IDAgMCAwIC02Ljc1LTYuNzV6bTAgMTBhMy4yNSAzLjI1IDAgMSAxIDMuMjUtMy4yNSAzLjI1NCAzLjI1NCAwIDAgMSAtMy4yNSAzLjI1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNzMuMDgxIDczLjcwOGE2Ljc1IDYuNzUgMCAxIDAgNi43NSA2Ljc1IDYuNzU3IDYuNzU3IDAgMCAwIC02Ljc1LTYuNzV6bTAgMTBhMy4yNSAzLjI1IDAgMSAxIDMuMjUtMy4yNSAzLjI1NCAzLjI1NCAwIDAgMSAtMy4yNSAzLjI1eiIvPg0KICAgICAgICA8Y2lyY2xlIGN4PSI2NC45NjYiIGN5PSI0OC4wMjEiIHI9IjMiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iNzcuNTkxIiBjeT0iNDguMDIxIiByPSIzIi8+DQogICAgICAgIDxjaXJjbGUgY3g9IjkwLjIxNiIgY3k9IjQ4LjAyMSIgcj0iMyIvPg0KICAgICAgICA8Y2lyY2xlIGN4PSIxMDIuODQxIiBjeT0iNDguMDIxIiByPSIzIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjEuNSAzMy41aC0xMTVhMS43NTEgMS43NTEgMCAwIDAgLTEuNzUgMS43NXY1Ny41YTEuNzUxIDEuNzUxIDAgMCAwIDEuNzUgMS43NWgxNS45NDJ2OC4yNWExLjc1MSAxLjc1MSAwIDAgMCAxLjc1IDEuNzVoMTBhMS43NSAxLjc1IDAgMCAwIDEuNzUtMS43NXYtOC4yNWg1Ni4xMTZ2OC4yNWExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1aDEwYTEuNzUxIDEuNzUxIDAgMCAwIDEuNzUtMS43NXYtOC4yNWgxNS45NDJhMS43NTEgMS43NTEgMCAwIDAgMS43NS0xLjc1di01Ny41YTEuNzUxIDEuNzUxIDAgMCAwIC0xLjc1LTEuNzV6bS04OS4wNTggNjcuNWgtNi41di02LjVoNi41em02OS42MTYgMGgtNi41di02LjVoNi41em0xNy42OTItMTBoLTExMS41di01NGgxMTEuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyLjY5MiA3NC4yNWExMC4yNSAxMC4yNSAwIDEgMCAtMTAuMjUtMTAuMjUgMTAuMjYxIDEwLjI2MSAwIDAgMCAxMC4yNSAxMC4yNXptLTEuNzUtMTYuNzYydjQuMDEyYTEuNzUgMS43NSAwIDAgMCAzLjUgMHYtNC4wMTJhNi43NSA2Ljc1IDAgMSAxIC0zLjUgMHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyLjY5MiA0OS45NThhMS43NDkgMS43NDkgMCAwIDAgMS43NS0xLjc1di0zYTEuNzUgMS43NSAwIDAgMCAtMy41IDB2M2ExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzguNzkyIDUxLjM1M2ExLjc1IDEuNzUgMCAwIDAgMi4zMzctLjgxNmwxLjMtMi43YTEuNzUgMS43NSAwIDAgMCAtMy4xNTItMS41MmwtMS4zIDIuN2ExLjc1IDEuNzUgMCAwIDAgLjgxNSAyLjMzNnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1LjA1MiA1NS45MTlhMS43NDggMS43NDggMCAwIDAgMS4wODgtLjM4bDIuMzQ4LTEuODY4YTEuNzUgMS43NSAwIDAgMCAtMi4xNzktMi43MzlsLTIuMzQ4IDEuODY4YTEuNzUgMS43NSAwIDAgMCAxLjA5MSAzLjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQuMjU2IDUwLjUzN2ExLjc1IDEuNzUgMCAxIDAgMy4xNTItMS41MjFsLTEuMy0yLjdhMS43NSAxLjc1IDAgMCAwIC0zLjE1MiAxLjUyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYuOSA1My42NzEgMi4zNDkgMS44NjhhMS43NSAxLjc1IDAgMCAwIDIuMTc4LTIuNzRsLTIuMzQ4LTEuODY3YTEuNzUgMS43NSAwIDEgMCAtMi4xNzkgMi43Mzl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01OC44MDggNzAuMjkyaDUwLjE5MmExLjc1MSAxLjc1MSAwIDAgMCAxLjc1LTEuNzV2LTEwYTEuNzUgMS43NSAwIDAgMCAtMS43NS0xLjc1aC01MC4xOTJhMS43NDkgMS43NDkgMCAwIDAgLTEuNzUgMS43NXYxMGExLjc1IDEuNzUgMCAwIDAgMS43NSAxLjc1em0xLjc1LTEwaDQ2LjY5MnY2LjVoLTQ2LjY5MnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2LjEzNSA4Ny4yMDhoMzMuMTE1YTEuNzUgMS43NSAwIDAgMCAwLTMuNWgtMzMuMTE1YTEuNzUgMS43NSAwIDAgMCAwIDMuNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",wxe="PHN2ZyBoZWlnaHQ9IjYwMHB0IiB2aWV3Qm94PSItNDUgLTE5IDYwMCA2MDAuMDAxIiB3aWR0aD0iNjAwcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5OC4yMTQ4NDQgMGgtNTAuOTc2NTYzYy0xOC4xOTUzMTIuMDI3MzQzOC0zMi45MzM1OTMgMTQuNzY5NTMxLTMyLjk2NDg0MyAzMi45NjQ4NDR2MjQuODcxMDk0aC0xNDQuODI0MjE5Yy02MS40Mzc1LjA5Mzc1LTExMi4yNTM5MDcgNDcuODcxMDkzLTExNi4xMzI4MTMgMTA5LjE4NzVoLTM5LjA2NjQwNmMtNS41MTU2MjUgMC05Ljk4ODI4MSA0LjQ2ODc1LTkuOTg4MjgxIDkuOTg4MjgxdjMwLjUxMTcxOWgtMTAuMjg1MTU3Yy0zLjcwNzAzMSAwLTcuMTA1NDY4IDIuMDQ2ODc0LTguODM1OTM3IDUuMzI4MTI0bC04NS43Njk1MzEgMTYyLjU1NDY4OGMtMS42MzY3MTkgMy4wOTc2NTYtMS41MzEyNSA2LjgyNDIxOS4yNzczNDQgOS44MjQyMTkgMS44MDg1OTMgMyA1LjA1MDc4MSA0LjgyODEyNSA4LjU1NDY4NyA0LjgyODEyNWgxMDguMTIxMDk0Yy4xNzU3ODEgMy45NTcwMzEuNjc1NzgxIDcuODg2NzE4IDEuNDk2MDkzIDExLjc2MTcxOCA3LjU3MDMxMyAzNS4wNTQ2ODggMzguNTU4NTk0IDYwLjA5Mzc1IDc0LjQyNTc4MiA2MC4xMjUgMzUuODcxMDk0LjAzNTE1NyA2Ni45MDIzNDQtMjQuOTQ5MjE4IDc0LjUzNTE1Ni01OS45OTYwOTMuODQzNzUtMy45MTAxNTcgMS4zNjcxODgtNy44OTA2MjUgMS41NTA3ODEtMTEuODk0NTMxaDEwOC4xMzY3MTljMy41IDAgNi43NS0xLjgzMjAzMiA4LjU1NDY4OC00LjgzMjAzMiAxLjgwODU5My0zIDEuOTE3OTY4LTYuNzI2NTYyLjI3NzM0My05LjgyMDMxMmwtODUuNzY5NTMxLTE2Mi41NDY4NzVjLTEuNzMwNDY5LTMuMjg5MDYzLTUuMTQ0NTMxLTUuMzM5ODQ0LTguODU5Mzc1LTUuMzMyMDMxaC0xMC4yNjE3MTl2LTMwLjUxMTcxOWMwLTUuNTE5NTMxLTQuNDcyNjU2LTkuOTg4MjgxLTkuOTg4MjgxLTkuOTg4MjgxaC00NC41MzUxNTZjMi4xNDA2MjUtMjIuNDcyNjU3IDIwLjk4ODI4MS0zOS42NDQ1MzIgNDMuNTYyNS0zOS42OTkyMTloMTQ0LjgwNDY4N3YyOC4xNjAxNTZjLjAzNTE1NiAxOC4xOTE0MDYgMTQuNzc3MzQ0IDMyLjkzMzU5NCAzMi45Njg3NSAzMi45NjA5MzdoNTAuOTgwNDY5YzUuNTE1NjI1IDAgOS45ODgyODEtNC40NjQ4NDMgOS45ODgyODEtOS45ODgyODF2LTE2OC40Njg3NWMwLTUuNTExNzE5LTQuNDY0ODQ0LTkuOTgwNDY4NS05Ljk3NjU2Mi05Ljk4ODI4MXptLTI1MC45MTc5NjkgMzk3LjYzMjgxMmMtNS41NjY0MDYgMjUuOTMzNTk0LTI4LjUwNzgxMyA0NC40NTMxMjYtNTUuMDMxMjUgNDQuNDIxODc2LTI2LjUzMTI1LS4wMjczNDQtNDkuNDI1NzgxLTE4LjU5NzY1Ny01NC45MzM1OTQtNDQuNTQ2ODc2LS41NTQ2ODctMi40NTMxMjQtLjkyNTc4MS00Ljk0OTIxOC0xLjEyMTA5My03LjQ1MzEyNGgxMTIuMjM0Mzc0Yy0uMTk5MjE4IDIuNTUwNzgxLS41ODU5MzcgNS4wODIwMzEtMS4xNDg0MzcgNy41NzgxMjR6bTExMi42MDU0NjktMjcuNTc0MjE4aC0xMDEuMzk0NTMyYy0uMDY2NDA2IDAtLjEzNjcxOCAwLS4yMDMxMjQgMGgtMTMxLjk2MDkzOGMtLjA3MDMxMiAwLS4xMzY3MTkgMC0uMjA3MDMxIDBoLTEwMS4zOTQ1MzFsNzUuMjUzOTA2LTE0Mi41NTQ2ODhoMTg0LjY4MzU5NHptLTk5LjQ3MjY1Ni0xNjIuNTM1MTU2aC0xMzYuMTkxNDA3di0yMC41MTk1MzJoMTM2LjE5MTQwN3ptOC45OTYwOTMtMTAwLjE4MzU5NGMtMzMuNTM1MTU2LjI3MzQzNy02MS4yNDYwOTMgMjYuMjM4MjgxLTYzLjY5NTMxMiA1OS42ODM1OTRoLTMyLjQzMzU5NGMzLjg0NzY1Ni01MC4yNzM0MzggNDUuNzMwNDY5LTg5LjEyNSA5Ni4xNTIzNDQtODkuMTg3NWgxNDQuODA0Njg3djI5LjUwMzkwNnptMjE4Ljc2OTUzMSA2MS4xNDA2MjVoLTQwLjk4NDM3NGMtNy4xNjc5NjktLjAxOTUzMS0xMi45NzI2NTctNS44MjQyMTktMTIuOTkyMTg4LTEyLjk4ODI4MXYtMTIyLjUwNzgxM2MuMDE5NTMxLTcuMTYwMTU2IDUuODI0MjE5LTEyLjk2NDg0NCAxMi45OTIxODgtMTIuOTg0Mzc1aDQwLjk4NDM3NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im05MC41MTU2MjUgNDE1Ljk5MjE4OGMwLTUuNTE1NjI2LTQuNDcyNjU2LTkuOTg4MjgyLTkuOTg4MjgxLTkuOTg4MjgyaC02MS4zOTg0MzhjLTUuNTE1NjI1IDAtOS45ODgyODEgNC40NzI2NTYtOS45ODgyODEgOS45ODgyODIgMCA1LjUxOTUzMSA0LjQ3MjY1NiA5Ljk5MjE4NyA5Ljk4ODI4MSA5Ljk5MjE4N2g2MS4zOTg0MzhjNS41MTU2MjUgMCA5Ljk4ODI4MS00LjQ3MjY1NiA5Ljk4ODI4MS05Ljk5MjE4N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTcuNTM5MDYyIDQ3Mi42NzE4NzUtNDAuMDcwMzEyIDM3Ljc0NjA5NGMtMi42NDA2MjUgMi40MzM1OTMtMy43NzM0MzggNi4xMDE1NjItMi45NTcwMzEgOS41OTc2NTYuODEyNSAzLjUwMzkwNiAzLjQ0MTQwNiA2LjI5Njg3NSA2Ljg4NjcxOSA3LjMxNjQwNiAzLjQ0NTMxMiAxLjAyMzQzOCA3LjE3NTc4MS4xMTcxODggOS43NjU2MjQtMi4zNzVsNDAuMDcwMzEzLTM3LjczODI4MWMyLjY0MDYyNS0yLjQzMzU5NCAzLjc2OTUzMS02LjEwMTU2MiAyLjk1NzAzMS05LjYwNTQ2OS0uODE2NDA2LTMuNDk2MDkzLTMuNDQ1MzEyLTYuMjkyOTY5LTYuODg2NzE4LTcuMzE2NDA2LTMuNDQ5MjE5LTEuMDE5NTMxLTcuMTc1NzgyLS4xMTMyODEtOS43NjU2MjYgMi4zNzV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzY1LjU0Njg3NSA0MDYuMDAzOTA2aC02MS4zOTA2MjVjLTUuNTE5NTMxIDAtOS45OTIxODggNC40NzI2NTYtOS45OTIxODggOS45ODgyODIgMCA1LjUxOTUzMSA0LjQ3MjY1NyA5Ljk5MjE4NyA5Ljk5MjE4OCA5Ljk5MjE4N2g2MS4zOTA2MjVjNS41MTk1MzEgMCA5Ljk4ODI4MS00LjQ3MjY1NiA5Ljk4ODI4MS05Ljk5MjE4NyAwLTUuNTE1NjI2LTQuNDY4NzUtOS45ODgyODItOS45ODgyODEtOS45ODgyODJ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY3LjA0Njg3NSA0NzIuNjcxODc1Yy0yLjU4OTg0NC0yLjQ4ODI4MS02LjMxNjQwNi0zLjM5NDUzMS05Ljc2NTYyNS0yLjM3NS0zLjQ0NTMxMiAxLjAyMzQzNy02LjA3NDIxOSAzLjgyMDMxMy02Ljg4NjcxOSA3LjMxNjQwNi0uODE2NDA2IDMuNTAzOTA3LjMxNjQwNyA3LjE3MTg3NSAyLjk1MzEyNSA5LjYwNTQ2OWw0MC4wNjI1IDM3LjcyMjY1NmMyLjU4OTg0NCAyLjQ5MjE4OCA2LjMxNjQwNiAzLjQwMjM0NCA5Ljc2NTYyNSAyLjM3NSAzLjQ0MTQwNy0xLjAxOTUzMSA2LjA3MDMxMy0zLjgxMjUgNi44ODY3MTktNy4zMTY0MDYuODEyNS0zLjQ5NjA5NC0uMzE2NDA2LTcuMTY0MDYyLTIuOTU3MDMxLTkuNjAxNTYyem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE5Mi4yNzM0MzggNDkwLjkzMzU5NGMtNS41MTU2MjYgMC05Ljk4ODI4MiA0LjQ3MjY1Ni05Ljk4ODI4MiA5Ljk5MjE4N3Y1MC44NDc2NTdjMCAuMjQ2MDkzLS4wMjM0MzcuNTAzOTA2LS4wMjM0MzcuNzM4MjgxIDAgNS41MTU2MjUgNC40NzI2NTYgOS45ODgyODEgOS45ODgyODEgOS45ODgyODEuNDI1NzgxLS4wMDM5MDYuODU1NDY5LS4wMjczNDQgMS4yNzczNDQtLjA4NTkzOCA0Ljk5MjE4Ny0uNjI4OTA2IDguNzM4MjgxLTQuODc4OTA2IDguNzM4MjgxLTkuOTA2MjV2LTUxLjU4MjAzMWMwLTUuNTE5NTMxLTQuNDcyNjU2LTkuOTkyMTg3LTkuOTkyMTg3LTkuOTkyMTg3em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Ixe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ3OC41MTEsODguNjIyQzQwMy42OTQsNjkuMjIzLDMyOC40MzcsMzkuMDE3LDI2MC44NzgsMS4yNjljLTMuMDMtMS42OTItNi43MjMtMS42OTMtOS43NTUsMA0KCQkJQzE4MS42MjEsNDAuMDk5LDExMC40MzIsNjguNjcyLDMzLjQ4OSw4OC42MjNjLTQuNDEsMS4xNDQtNy40OSw1LjEyNC03LjQ5LDkuNjh2MTEwLjM5NGMwLDExMy41MzUsNTUuMjkyLDE4OC42MzksMTAxLjY3OCwyMzEuNjUNCgkJCWM0OS43NTcsNDYuMTM4LDEwNy40Niw3MS42NTUsMTI4LjMyNCw3MS42NTVjMjAuODY0LDAsNzguNTY3LTI1LjUxNywxMjguMzI0LTcxLjY1NQ0KCQkJYzQ2LjM4NC00My4wMTEsMTAxLjY3OC0xMTguMTE0LDEwMS42NzgtMjMxLjY1Vjk4LjMwMkM0ODYuMDAyLDkzLjc0Niw0ODIuOTIyLDg5Ljc2Niw0NzguNTExLDg4LjYyMnogTTM3MC43MjYsNDI1LjY3OA0KCQkJYy0yNy41NTcsMjUuNTUzLTU0LjMzNiw0MS42ODUtNzEuOTUsNTAuNzE4Yy0yMi4zMTksMTEuNDQ3LTM3LjgxLDE1LjYwMy00Mi43NzYsMTUuNjAzYy00Ljk2NiwwLTIwLjQ1Ni00LjE1NS00Mi43NzYtMTUuNjAzDQoJCQljLTE3LjYxMi05LjAzMy00NC4zOTItMjUuMTY1LTcxLjk1LTUwLjcxOGMtNDMuNDY0LTQwLjMwMy05NS4yNzYtMTEwLjY2My05NS4yNzYtMjE2Ljk4M1YxMDYuMDA4DQoJCQljNzMuOTY0LTE5LjgsMTQyLjgwMS00Ny41MjMsMjEwLjAwMy04NC41NzRjNjUuNDk4LDM2LjA1OSwxMzcuODI3LDY1LjE4NSwyMTAsODQuNTcxdjEwMi42OWgwLjAwMQ0KCQkJQzQ2Ni4wMDEsMzE1LjAxNSw0MTQuMTksMzg1LjM3NSwzNzAuNzI2LDQyNS42Nzh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NDMuNzkzLDExNS4zNjhjLTYzLjMzNi0xOC40MTMtMTI0LjkzNi00My40MjQtMTgzLjA4Ny03NC4zMzdjLTIuOTM4LTEuNTYzLTYuNDYxLTEuNTYtOS4zOTcsMC4wMDYNCgkJCUMxOTMuMDY5LDcyLjA3OSwxMzEuNDcsOTcuMDk0LDY4LjIyLDExNS4zODdjLTQuMjc3LDEuMjM3LTcuMjIyLDUuMTUzLTcuMjIyLDkuNjA2djgzLjcwMmMwLDM5LjA3Nyw3LjQwNSw3Ni4xNjEsMjIuMDA4LDExMC4yMjINCgkJCWMxNC41MywzMy44OTEsMzYuMjAxLDY0LjgyLDY0LjQwOSw5MS45MzNjMjAuMTc1LDE5LjM5LDQzLjQ2OSwzNi40NzcsNjcuMzY3LDQ5LjQxM2M0LjI4MiwyLjMxOCwyNi4zMDUsMTQuMDAzLDM5LjQwMiwxNi40MjENCgkJCWMwLjYsMC4xMSwxLjIwNywwLjE2NiwxLjgxNSwwLjE2NmMwLjYwOCwwLDEuMjE1LTAuMDU2LDEuODE1LTAuMTY2YzEzLjA5Ny0yLjQxOCwzNS4xMi0xNC4xMDMsMzkuNDAyLTE2LjQyMQ0KCQkJYzIzLjg5NS0xMi45MzYsNDcuMTktMzAuMDIzLDY3LjM2Ny00OS40MTNjMjguMjA4LTI3LjExMSw0OS44NzgtNTguMDQxLDY0LjQwOS05MS45MzNjMTQuNjAzLTM0LjA2LDIyLjAwOC03MS4xNDQsMjIuMDA4LTExMC4yMjINCgkJCXYtODMuNzI0QzQ1MS4wMDEsMTIwLjUyNCw0NDguMDYzLDExNi42MTEsNDQzLjc5MywxMTUuMzY4eiBNNDMxLjAwMSwyMDguNjk1YzAsNzMuMzc2LTI3LjAwOCwxMzYuNTM4LTgwLjI3NiwxODcuNzM0DQoJCQljLTE4Ljg5OCwxOC4xNjItNDAuNjkzLDM0LjE1My02My4wMjksNDYuMjQ1Yy0xMC4xNjcsNS41MDMtMjMuODkyLDExLjkxOS0zMS42OTcsMTMuOTM0Yy03LjgwNS0yLjAxNS0yMS41My04LjQzMS0zMS42OTYtMTMuOTM0DQoJCQljLTIyLjMzNy0xMi4wOTMtNDQuMTMyLTI4LjA4NC02My4wMjktNDYuMjQ1Yy01My4yNjctNTEuMTk1LTgwLjI3Ni0xMTQuMzU5LTgwLjI3Ni0xODcuNzM0VjEzMi40OA0KCQkJYzYwLjM1NC0xNy45NjksMTE5LjE3Mi00MS45MzEsMTc1LjAxOS03MS4zMDZjNTUuNzU3LDI5LjI1MSwxMTQuNTY5LDUzLjIwNCwxNzQuOTgzLDcxLjI3NFYyMDguNjk1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTczLjAyNywzNTguMzA1bC0wLjItMC4yMTVjLTMuNzAxLTQuMDU1LTkuOTg3LTQuMzY3LTE0LjA3My0wLjY4OWMtNC4xMDUsMy42OTQtNC40MzgsMTAuMDE3LTAuNzQ0LDE0LjEyMmwwLjIsMC4yMTUNCgkJCWMxLjk3MSwyLjE1OCw0LjY3MywzLjI1Niw3LjM4NywzLjI1NmMyLjM4MywwLDQuNzc1LTAuODQ4LDYuNjg2LTIuNTY3QzE3Ni4zODgsMzY4LjczMywxNzYuNzIxLDM2Mi40MDksMTczLjAyNywzNTguMzA1eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjI2Ljk2Myw0MDMuNjk1Yy0xMi4wNDYtNy42MDItMjMuNjQ1LTE2LjM2NC0zNC40NzMtMjYuMDQ0Yy00LjExNy0zLjY4Mi0xMC40MzktMy4zMjctMTQuMTIsMC43OQ0KCQkJYy0zLjY4LDQuMTE4LTMuMzI2LDEwLjQzOSwwLjc5MiwxNC4xMmMxMS42NTMsMTAuNDE4LDI0LjE0NSwxOS44NTQsMzcuMTI5LDI4LjA0OGMxLjY1NywxLjA0NSwzLjUwMiwxLjU0NCw1LjMyNywxLjU0NA0KCQkJYzMuMzE4LDAsNi41NjQtMS42NSw4LjQ2Ni00LjY2NEMyMzMuMDMyLDQxMi44MTgsMjMxLjYzNSw0MDYuNjQyLDIyNi45NjMsNDAzLjY5NXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwOC44OTgsMjA5LjA3N3YtMzIuOTIxYzAtMjkuMTY4LTIzLjczLTUyLjg5OC01Mi45LTUyLjg5OGMtMjkuMTY4LDAtNTIuODk4LDIzLjczLTUyLjg5OCw1Mi44OTh2MzIuOTIxDQoJCQljLTExLjg5OCwwLjQyOS0yMS40NDcsMTAuMjM1LTIxLjQ0NywyMi4yMzZ2NzYuNzY5Yy0wLjAwMSwxMi4yNzMsOS45ODQsMjIuMjU3LDIyLjI1NywyMi4yNTdIMzA4LjA5DQoJCQljMTIuMjczLDAsMjIuMjU4LTkuOTg0LDIyLjI1OC0yMi4yNTd2LTc2Ljc2OUMzMzAuMzQ4LDIxOS4zMTEsMzIwLjc5OCwyMDkuNTA0LDMwOC44OTgsMjA5LjA3N3ogTTIyMy4wOTksMTc2LjE1Ng0KCQkJYzAtMTguMTQsMTQuNzU5LTMyLjg5OCwzMi45LTMyLjg5OGMxOC4xNCwwLDMyLjg5OCwxNC43NTgsMzIuODk4LDMyLjg5OHYzMi45aC02NS43OTlWMTc2LjE1NnogTTMxMC4zNDcsMzA4LjA4Mw0KCQkJYzAsMS4yMjQtMS4wMzQsMi4yNTctMi4yNTgsMi4yNTdIMjAzLjkwOGMtMS4yMjQsMC0yLjI1OC0xLjAzMy0yLjI1OC0yLjI1N3YtNzYuNzY5aDAuMDAxYzAtMS4yMjQsMS4wMzQtMi4yNTcsMi4yNTgtMi4yNTdoOS4xODkNCgkJCWg4NS43OTloOS4xOTJjMS4yMjQsMCwyLjI1OCwxLjAzMywyLjI1OCwyLjI1N1YzMDguMDgzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDI0OS42NGMtNy43MDEsMC0xMy45ODIsNi4yODEtMTMuOTgyLDEzLjk4MmMwLDMuNzg2LDEuNTIzLDcuMjI1LDMuOTgyLDkuNzQ2djkuNzg3YzAsNS41MjIsNC40NzcsMTAsMTAsMTANCgkJCWM1LjUyMywwLDEwLTQuNDc4LDEwLTEwdi05Ljc4N2MyLjQ1OS0yLjUyMiwzLjk4Mi01Ljk2LDMuOTgyLTkuNzQ2QzI2OS45ODIsMjU1LjkyMSwyNjMuNzAxLDI0OS42NCwyNTYsMjQ5LjY0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Cxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00OTYuODgyODEyIDBoLTQ4MS43NjU2MjRjLTguMzQ3NjU3IDAtMTUuMTE3MTg4IDYuNzY5NTMxLTE1LjExNzE4OCAxNS4xMTcxODh2NDgxLjc2NTYyNGMwIDguMzQ3NjU3IDYuNzY5NTMxIDE1LjExNzE4OCAxNS4xMTcxODggMTUuMTE3MTg4aDQ4MS43NjU2MjRjOC4zNDc2NTcgMCAxNS4xMTcxODgtNi43Njk1MzEgMTUuMTE3MTg4LTE1LjExNzE4OHYtNDgxLjc2NTYyNGMwLTguMzQ3NjU3LTYuNzY5NTMxLTE1LjExNzE4OC0xNS4xMTcxODgtMTUuMTE3MTg4em0tNDA2LjE3NTc4MSA0MjEuMjkyOTY5di04OC42OTUzMTNoMTE5LjA3NDIxOXY4OC42OTUzMTN6bS02MC40NzI2NTYtMzkxLjA1ODU5NGg2OC40NTMxMjV2MzAuMjM4MjgxaC02OC40NTMxMjV6bTAgNjAuNDcyNjU2aDY4LjQ1MzEyNXYzMC4yMzgyODFoLTY4LjQ1MzEyNXptMzUyLjgzOTg0NC01OC40NTMxMjV2MjguMjE4NzVoLTI1NC4xNDg0Mzh2LTI4LjIxODc1em0tMjU0LjE0ODQzOCAyMzkuODcxMDk0aDI1NC4xNTIzNDR2MzAuMjM4MjgxaC0yNTQuMTUyMzQ0em0wLTMwLjIzNDM3NXYtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0wLTYwLjQ3MjY1NnYtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0wLTYwLjQ3MjY1N3YtMzAuMjM4MjgxaDI1NC4xNTIzNDR2MzAuMjM4Mjgxem0tOTguNjkxNDA2IDMwLjIzNDM3Nmg2OC40NTMxMjV2MzAuMjM4MjgxaC02OC40NTMxMjV6bTAgNjAuNDcyNjU2aDY4LjQ1MzEyNXYzMC4yMzgyODFoLTY4LjQ1MzEyNXptMCA2MC40NzI2NTZoNjguNDUzMTI1djMwLjIzODI4MWgtNjguNDUzMTI1em0zODMuMDc4MTI1IDBoNjguNDUzMTI1djMwLjIzODI4MWgtNjguNDUzMTI1em02OC40NTMxMjUtMzAuMjM0Mzc1aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU2aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU3aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bTAtNjAuNDcyNjU2aC02OC40NTMxMjV2LTMwLjIzODI4MWg2OC40NTMxMjV6bS0yNDEuNzUgMjcyLjEyNWgzMC4yMzgyODF2ODguNjk1MzEzaC0zMC4yMzgyODF6bTYwLjQ3NjU2MyAwaDEyMC44MDA3ODF2ODguNjk1MzEzaC0xMjAuODAwNzgxem0tMjcwLjI1NzgxMyAxNDkuMTY3OTY5di0xNDkuMTY3OTY5aDMwLjIzODI4MXYxMDMuODEyNWMwIDguMzQ3NjU2IDYuNzY5NTMyIDE1LjExNzE4OCAxNS4xMTcxODggMTUuMTE3MTg4aDM2MC44MjAzMTJjOC4zNDc2NTYgMCAxNS4xMTcxODgtNi43Njk1MzIgMTUuMTE3MTg4LTE1LjExNzE4OHYtMTAzLjgxMjVoMzAuMjM4MjgxdjE0OS4xNjc5Njl6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",pxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0yIDUxMiA1MTIiIHdpZHRoPSI1MTJwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzQ4LjI0NjA5NCAzNzYuNzg1MTU2Yy0zLjI1LTIuNjA1NDY4LTcuOTkyMTg4LTIuMDgyMDMxLTEwLjU5NzY1NiAxLjE2NDA2M2wtMjguOTQ5MjE5IDM2LjA5Mzc1Yy0zLjk4NDM3NSA0Ljk2ODc1LS4zNjcxODggMTIuMjU3ODEyIDUuODc1IDEyLjI1NzgxMiAyLjIxMDkzNyAwIDQuMzk4NDM3LS45Njg3NSA1Ljg4NjcxOS0yLjgyNDIxOWwyOC45NDkyMTgtMzYuMDkzNzVjMi42MDU0NjktMy4yNSAyLjA4NTkzOC03Ljk5MjE4Ny0xLjE2NDA2Mi0xMC41OTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkwLjM1OTM3NSAzNTguNzM4MjgxYy0zLjI1LTIuNjA1NDY5LTcuOTkyMTg3LTIuMDgyMDMxLTEwLjU5NzY1NiAxLjE2NDA2M2wtMjguOTQ5MjE5IDM2LjA5Mzc1Yy0zLjk4NDM3NSA0Ljk2ODc1LS4zNjcxODggMTIuMjU3ODEyIDUuODc1IDEyLjI1NzgxMiAyLjIxMDkzOCAwIDQuMzk4NDM4LS45Njg3NSA1Ljg4NjcxOS0yLjgyNDIxOGwyOC45NDkyMTktMzYuMDkzNzVjMi42MDU0NjgtMy4yNDYwOTQgMi4wODU5MzctNy45OTIxODgtMS4xNjQwNjMtMTAuNTk3NjU3em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTExMS43NSA0MjIuMDUwNzgxYzIuMTA5Mzc1IDAgNC4yMDcwMzEtLjg3ODkwNiA1LjY5OTIxOS0yLjU5NzY1NmwzOS42MTMyODEtNDUuNjQ0NTMxYzIuNzMwNDY5LTMuMTQ0NTMyIDIuMzk0NTMxLTcuOTA2MjUtLjc1LTEwLjYzMjgxMy0zLjE0NDUzMS0yLjczMDQ2OS03LjkxMDE1Ni0yLjM5NDUzMS0xMC42MzY3MTkuNzVsLTM5LjYxNzE4NyA0NS42NDQ1MzFjLTQuMjUzOTA2IDQuOTAyMzQ0LS42OTUzMTMgMTIuNDgwNDY5IDUuNjkxNDA2IDEyLjQ4MDQ2OXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTYuNjIxMDk0IDM3Ni43ODUxNTZjLTMuMjUtMi42MDU0NjgtNy45OTYwOTQtMi4wODIwMzEtMTAuNjAxNTYzIDEuMTY0MDYzbC0xNC40NzI2NTYgMTguMDQ2ODc1Yy0yLjYwNTQ2OSAzLjI1LTIuMDgyMDMxIDcuOTk2MDk0IDEuMTY0MDYzIDEwLjU5NzY1NiAzLjI2OTUzMSAyLjYyNSA4LjAxMTcxOCAyLjA2MjUgMTAuNTk3NjU2LTEuMTY0MDYybDE0LjQ3NjU2Mi0xOC4wNDY4NzZjMi42MDU0NjktMy4yNSAyLjA4MjAzMi03Ljk5MjE4Ny0xLjE2NDA2Mi0xMC41OTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDM3Ljk5MjE4OCAzOTQuODMyMDMxYy0zLjI1LTIuNjA1NDY5LTcuOTkyMTg4LTIuMDgyMDMxLTEwLjU5NzY1NyAxLjE2NDA2M2wtMTQuNDc2NTYyIDE4LjA0Njg3NWMtMi42MDU0NjkgMy4yNS0yLjA4MjAzMSA3Ljk5MjE4NyAxLjE2NDA2MiAxMC41OTc2NTYgMy4yNjk1MzEgMi42MjEwOTQgOC4wMTE3MTkgMi4wNjI1IDEwLjYwMTU2My0xLjE2NDA2M2wxNC40NzI2NTYtMTguMDQ2ODc0YzIuNjA1NDY5LTMuMjQ2MDk0IDIuMDgyMDMxLTcuOTkyMTg4LTEuMTY0MDYyLTEwLjU5NzY1N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTYuNDcyNjU2IDM2Mi45ODQzNzVjLTMuMjUtMi42MDU0NjktNy45OTIxODctMi4wODIwMzEtMTAuNTk3NjU2IDEuMTY0MDYzbC0xNC40NzY1NjIgMTguMDUwNzgxYy0yLjYwNTQ2OSAzLjI0NjA5My0yLjA4MjAzMiA3Ljk5MjE4NyAxLjE2NDA2MiAxMC41OTc2NTYgMy4yNjk1MzEgMi42MjEwOTQgOC4wMTE3MTkgMi4wNjI1IDEwLjU5NzY1Ni0xLjE2NDA2M2wxNC40NzI2NTYtMTguMDQ2ODc0YzIuNjA5Mzc2LTMuMjUgMi4wODU5MzgtNy45OTYwOTQtMS4xNjAxNTYtMTAuNjAxNTYzem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTUwNC40NjA5MzggMGMtMTcuMjUzOTA3IDAtNDY2LjU5Mzc1IDAtNDk2LjkyMTg3NiAwLTQuMTYwMTU2IDAtNy41MzkwNjIgMy4zNjcxODgtNy41MzkwNjIgNy41MzkwNjJ2NDkzLjg2NzE4OGMwIDQuMTcxODc1IDMuMzc4OTA2IDcuNTM5MDYyIDcuNTM5MDYyIDcuNTM5MDYyaDQyMi4yMTA5MzhjNC4xNjAxNTYgMCA3LjUzOTA2Mi0zLjM2NzE4NyA3LjUzOTA2Mi03LjUzOTA2MiAwLTQuMTY0MDYyLTMuMzc4OTA2LTcuNTQyOTY5LTcuNTM5MDYyLTcuNTQyOTY5aC00MTQuNjcxODc1di0xNDMuODgyODEyaDE0LjM2NzE4N3Y5MC45NTcwMzFjMCA0LjE2NDA2MiAzLjM3NSA3LjUzOTA2MiA3LjUzOTA2MyA3LjUzOTA2MmgxMjYuNDAyMzQ0YzQuMTYwMTU2IDAgNy41MzkwNjItMy4zNzUgNy41MzkwNjItNy41MzkwNjIgMC00LjE2MDE1Ni0zLjM3ODkwNi03LjUzOTA2Mi03LjUzOTA2Mi03LjUzOTA2MmgtMTE4Ljg2MzI4MXYtODMuNDE3OTY5aDE0LjUzOTA2MnYyNi4xMjEwOTNjMCA0LjE2NDA2MyAzLjM3NSA3LjUzOTA2MyA3LjUzOTA2MiA3LjUzOTA2MyA0LjE2NDA2MyAwIDcuNTM5MDYzLTMuMzc1IDcuNTM5MDYzLTcuNTM5MDYzdi0yNi4xMjEwOTNoMTUzLjcxMDkzN3Y4My40MTc5NjloLTM0LjMwODU5M2MtNC4xNjAxNTcgMC03LjUzOTA2MyAzLjM3ODkwNi03LjUzOTA2MyA3LjUzOTA2MiAwIDQuMTY0MDYyIDMuMzc4OTA2IDcuNTM5MDYyIDcuNTM5MDYzIDcuNTM5MDYyaDI4MS40NzI2NTZjNC4xNjQwNjMgMCA3LjUzOTA2My0zLjM3NSA3LjUzOTA2My03LjUzOTA2MnYtOTAuOTU3MDMxaDE0LjM2NzE4N3YxNDMuODgyODEyaC0zNy4wMTU2MjVjLTQuMTYwMTU2IDAtNy41MzkwNjIgMy4zNzg5MDctNy41MzkwNjIgNy41NDI5NjkgMCA0LjE3MTg3NSAzLjM3ODkwNiA3LjUzOTA2MiA3LjUzOTA2MiA3LjUzOTA2Mmg0NC41NTQ2ODhjNC4xNjAxNTYgMCA3LjUzOTA2Mi0zLjM2NzE4NyA3LjUzOTA2Mi03LjUzOTA2MiAwLTUzLjg2MzI4MSAwLTQzNy40OTYwOTQgMC00OTMuODY3MTg4IDAtNC4xNzE4NzQtMy4zNzg5MDYtNy41MzkwNjItNy41MzkwNjItNy41MzkwNjJ6bS00NDUuMzk4NDM4IDMzNC45MDIzNDRjLTEzLjcxNDg0NCAwLTMwLjA1ODU5NCAwLTQzLjk4NDM3NSAwIDAtOS41NTA3ODIgMC0xNi4yNTc4MTMgMC0yNi43ODEyNWg0My45ODQzNzV6bTAtNDEuODU5Mzc1aC00My45ODQzNzV2LTI2Ljc4OTA2M2g0My45ODQzNzV6bTAtNDEuODY3MTg4aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzg5MDYyaDQzLjk4NDM3NXptMC00MS44NzEwOTRoLTQzLjk4NDM3NXYtMjYuNzc3MzQzaDQzLjk4NDM3NXptMC00MS44NTkzNzRjLTkuNzAzMTI1IDAtMzMuOTE3OTY5IDAtNDMuOTg0Mzc1IDB2LTI2Ljc4OTA2M2g0My45ODQzNzV6bTAtNDEuODY3MTg4aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzgxMjVoNDMuOTg0Mzc1em0xNS4wNzgxMjUtMjYuNzgxMjVoMzYzLjcxODc1djI2Ljc4MTI1aC0zNjMuNzE4NzV6bTAgODMuNzE4NzVoMjg5LjMwMDc4MWM0LjE2NDA2MyAwIDcuNTM5MDYzLTMuMzY3MTg3IDcuNTM5MDYzLTcuNTM5MDYzIDAtNC4xNjAxNTYtMy4zNzUtNy41MzkwNjItNy41MzkwNjMtNy41MzkwNjItMS4yMzQzNzUgMC0yODIuOTQxNDA2IDAtMjg5LjMwMDc4MSAwdi0yNi43ODEyNWgzNjMuNzE4NzV2MjYuNzgxMjVoLTQ0LjI1NzgxM2MtNC4xNjQwNjIgMC03LjUzOTA2MiAzLjM3ODkwNi03LjUzOTA2MiA3LjUzOTA2MiAwIDQuMTcxODc2IDMuMzc1IDcuNTM5MDYzIDcuNTM5MDYyIDcuNTM5MDYzaDQ0LjI1NzgxM3YyNi43ODkwNjNjLTExLjYyNSAwLTM1NC40OTIxODcgMC0zNjMuNzE4NzUgMHptMCA0MS44NzEwOTRoMzYzLjcxODc1djI2Ljc3NzM0M2gtMzYzLjcxODc1em0wIDQxLjg1OTM3NWgzNjMuNzE4NzV2MjYuNzg5MDYyaC0zNjMuNzE4NzV6bTAgNDEuODY3MTg3aDM2My43MTg3NXYyNi43ODEyNWgtMzYzLjcxODc1em0wIDQxLjg1OTM3NWgzNjMuNzE4NzV2MjYuNzg5MDYzaC0zNjMuNzE4NzV6bTAgNjguNjQ4NDM4di0yNi43ODEyNWgzNjMuNzE4NzV2MjYuNzgxMjVjLTM1LjYxNzE4NyAwLTMyNi45NTMxMjUgMC0zNjMuNzE4NzUgMHptMzkzLjMzNTkzNyA5OC40OTYwOTRoLTE4My4zMjgxMjR2LTQwLjY2Nzk2OWMwLTQuMTY0MDYzLTMuMzc1LTcuNTM5MDYzLTcuNTM5MDYzLTcuNTM5MDYzcy03LjUzOTA2MyAzLjM3NS03LjUzOTA2MyA3LjUzOTA2M3Y0MC42Njc5NjloLTI2LjE0MDYyNHYtODMuNDE0MDYzaDI2LjE0MDYyNHYxMi41ODU5MzdjMCA0LjE2Nzk2OSAzLjM3NSA3LjUzOTA2MyA3LjUzOTA2MyA3LjUzOTA2M3M3LjUzOTA2My0zLjM3MTA5NCA3LjUzOTA2My03LjUzOTA2M3YtMTIuNTg5ODQzaDE1My43MTA5Mzd2MjYuMTIxMDkzYzAgNC4xNjQwNjMgMy4zNzUgNy41MzkwNjMgNy41MzkwNjMgNy41MzkwNjMgNC4xNjQwNjIgMCA3LjUzOTA2Mi0zLjM3NSA3LjUzOTA2Mi03LjUzOTA2M3YtMjYuMTIxMDkzaDE0LjUzOTA2MnptMjkuNDQ1MzEzLTk4LjQ5NjA5NGMtMTMuNzg5MDYzIDAtMjkuODY3MTg3IDAtNDMuOTg0Mzc1IDB2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMC00MS44NTkzNzVoLTQzLjk4NDM3NXYtMjYuNzg5MDYzaDQzLjk4NDM3NXptMC00MS44NjcxODhoLTQzLjk4NDM3NXYtMjYuNzgxMjVoNDMuOTg0Mzc1em0wLTQxLjg1OTM3NWgtNDMuOTg0Mzc1di0yNi43ODkwNjJoNDMuOTg0Mzc1em0wLTQxLjg3MTA5NGgtNDMuOTg0Mzc1di0yNi43NzczNDNoNDMuOTg0Mzc1em0wLTQxLjg1OTM3NGgtNDMuOTg0Mzc1di0yNi43ODkwNjNoNDMuOTg0Mzc1em0wLTQxLjg2NzE4OGgtNDMuOTg0Mzc1di0yNi43ODEyNWg0My45ODQzNzV6bTAtNDEuODU5Mzc1aC00My45ODQzNzV2LTI2Ljc4MTI1aDQzLjk4NDM3NXptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",Axe="PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTU2LjgzOCAxaC00OS42NzZjLTMuMzk4IDAtNi4xNjIgMi43NjQtNi4xNjIgNi4xNjIgMCAuNjY1LjEwNiAxLjMyLjMxNiAxLjk0OWwuNTU4IDEuNjc2Yy44NDEgMi41MiAzLjE5IDQuMjEzIDUuODQ3IDQuMjEzaDQuMzg0bDEuNTA2IDEzLjU1MmMuMjgyIDIuNTM2IDIuNDE4IDQuNDQ4IDQuOTY5IDQuNDQ4aDI2Ljg0YzIuNTUxIDAgNC42ODgtMS45MTIgNC45NjktNC40NDhsMS41MDYtMTMuNTUyaDQuMzg0YzIuNjU3IDAgNS4wMDYtMS42OTMgNS44NDYtNC4yMTRsLjU1OC0xLjY3NGMuMjExLS42My4zMTctMS4yODUuMzE3LTEuOTUgMC0zLjM5OC0yLjc2NC02LjE2Mi02LjE2Mi02LjE2MnptLTMyLjgzOCAzMGgtNHYtOGMwLTEuMTAzLjg5Ny0yIDItMnMyIC44OTcgMiAyem0xMCAwaC00di04YzAtMS4xMDMuODk3LTIgMi0yczIgLjg5NyAyIDJ6bTEwIDBoLTR2LThjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptNC40MDItMi42NjhjLS4xNDcgMS4zMjQtMS4xMzggMi4zNjMtMi40MDIgMi42MTF2LTcuOTQzYzAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0djhoLTJ2LThjMC0yLjIwNi0xLjc5NC00LTQtNHMtNCAxLjc5NC00IDR2OGgtMnYtOGMwLTIuMjA2LTEuNzk0LTQtNC00cy00IDEuNzk0LTQgNHY3Ljk0MmMtMS4yNjQtLjI0OC0yLjI1NC0xLjI4Ny0yLjQwMi0yLjYxMWwtMS40ODEtMTMuMzMxaDM1Ljc2NnptMTIuMzg0LTE5Ljg1My0uNTU4IDEuNjc1Yy0uNTY3IDEuNzAyLTIuMTU0IDIuODQ2LTMuOTQ5IDIuODQ2aC00OC41NThjLTEuNzk0IDAtMy4zODEtMS4xNDQtMy45NDktMi44NDZsLS41NTgtMS42NzZjLS4xNDItLjQyNC0uMjE0LS44NjctLjIxNC0xLjMxNiAwLTIuMjk1IDEuODY3LTQuMTYyIDQuMTYyLTQuMTYyaDQ5LjY3NmMyLjI5NSAwIDQuMTYyIDEuODY3IDQuMTYyIDQuMTYyIDAgLjQ0OS0uMDcyLjg5Mi0uMjE0IDEuMzE3eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUgNWgtNmMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJoNmMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0yem0tNiA0di0yaDZsLjAwMSAyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTEgNWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcgOWgydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01MSA5aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDloMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQgNDB2LTFoLTFjLS4xMTkgMC0xLjc5OS4wNDItMy4xNzkgMi4wMzUtLjA0Ni0uMDYzLS4wOTItLjEzMS0uMTM4LS4xOTMtLjkwMy0xLjIzLTEuNjgzLTIuMjkzLTEuNjgzLTQuODQydi0xaC0xYy0uMTM5IDAtMi44OTMuMDU3LTQuNjI0IDMuMjc4LTIuMDUzLTMuMjIzLTUuMzI4LTMuMjc4LTUuMzc2LTMuMjc4aC0xdjFjMCAyLjU1OS0uNzg0IDMuNjMzLTEuNjkyIDQuODc3LS4wNC4wNTUtLjA4LjExNC0uMTIuMTY5LTEuMzgzLTIuMDA0LTMuMDY5LTIuMDQ2LTMuMTg4LTIuMDQ2aC0xdjFjMCAyLjU0My0uOTk1IDMuODMzLTIuMTQ3IDUuMzI3LTEuMzM3IDEuNzMzLTIuODUzIDMuNjk3LTIuODUzIDcuNjczIDAgNi4wNzUgMy45MjUgMTAgMTAgMTBoMTRjNi4wNzUgMCAxMC0zLjkyNSAxMC0xMCAwLTMuOTc2LTEuNTE2LTUuOTQtMi44NTMtNy42NzMtMS4xNTItMS40OTQtMi4xNDctMi43ODQtMi4xNDctNS4zMjd6bS0xOSAxN2MwLTIuMzk2IDEuMzU4LTMuNzE5IDIuNjcyLTUgLjg1MS0uODMgMS43MjQtMS42OCAyLjExNS0yLjc3My41Ni4zMSAxLjIxMyAxLjA0MyAxLjIxMyAyLjc3M3YzaDJ2LTFjMC0xLjk4NiAxLjIzOS0yLjY2IDIuMTQ3LTIuODg3LjM1NSAxLjMwNCAxLjI5NSAyLjI0NCAyLjE0NiAzLjA5NC45MTYuOTE2IDEuNzA3IDEuNzA3IDEuNzA3IDIuNzkzIDAgMS4zODMtMS40NjMgNC03IDRzLTctMi42MTctNy00em0xNCA0aC0uMTAyYzEuNTYyLTEuMjggMi4xMDItMi44OTkgMi4xMDItNCAwLTEuOTE0LTEuMjE4LTMuMTMyLTIuMjkzLTQuMjA3LS45MTYtLjkxNi0xLjcwNy0xLjcwNy0xLjcwNy0yLjc5M3YtMWgtMWMtLjg5MiAwLTIuMTkzLjI3OC0zLjI0NSAxLjA4OS0uNjgyLTIuMzk1LTIuNjI4LTMuMDg5LTMuNzU1LTMuMDg5aC0xdjFjMCAuODQ1LS42NTUgMS41MjYtMS43MjQgMi41NjgtMS40NiAxLjQyMy0zLjI3NiAzLjE5My0zLjI3NiA2LjQzMiAwIDEuMTAxLjU0IDIuNzIgMi4xMDIgNGgtLjEwMmMtMy44NjggMC04LTIuMTAyLTgtOCAwLTMuMjk0IDEuMTgzLTQuODI4IDIuNDM2LTYuNDUyIDEuMDU1LTEuMzY3IDIuMTM5LTIuNzcyIDIuNDY1LTUuMDg0Ljg5MS43MzkgMi4wOTkgMi42NDIgMi4wOTkgNy41MzZoMmMwLTIuNTYtLjMyMy00LjQ2MS0uODAzLTUuODc4LjIyOC0uMzY2LjQ2OS0uNzEzLjcyNi0xLjA2Ni44NDYtMS4xNTkgMS43OTEtMi40NTMgMi4wMjMtNC44NzkgMS40NTYuNDUzIDQuMDU0IDIuMDY5IDQuMDU0IDcuODIzaDJjMC0xLjYzLS4xOTEtMi45OS0uNTA2LTQuMTMyLjYzNy0yLjI3MyAxLjc2MS0zLjIxOCAyLjU2Ny0zLjYwMS4yMzggMi4zNDYgMS4xMzcgMy41NyAyLjAxIDQuNzU5LjI2Mi4zNTcuNTA3LjcwOC43MzggMS4wOC0uNDgzIDEuNDE4LS44MDkgMy4zMjQtLjgwOSA1Ljg5NGgyYzAtNC45MDYgMS4yMTQtNi44MDcgMi4wOTgtNy41NDIuMzI1IDIuMzE1IDEuNDExIDMuNzIyIDIuNDY2IDUuMDkgMS4yNTMgMS42MjQgMi40MzYgMy4xNTggMi40MzYgNi40NTIgMCA1Ljg5OC00LjEzMiA4LTggOHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",mxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDY3LDBINDVDMjAuMTg3LDAsMCwyMC4xODcsMCw0NXY0MjJjMCwyNC44MTMsMjAuMTg3LDQ1LDQ1LDQ1aDQyMmMyNC44MTMsMCw0NS0yMC4xODcsNDUtNDVWNDUNCgkJCUM1MTIsMjAuMTg3LDQ5MS44MTMsMCw0NjcsMHogTTQ4Miw0NjdjMCw4LjI3MS02LjcyOSwxNS0xNSwxNUg0NWMtOC4yNzEsMC0xNS02LjcyOS0xNS0xNVY0NWMwLTguMjcxLDYuNzI5LTE1LDE1LTE1aDQyMg0KCQkJYzguMjcxLDAsMTUsNi43MjksMTUsMTVWNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDgxYy05Ni40OTUsMC0xNzUsNzguNTA1LTE3NSwxNzVzNzguNTA1LDE3NSwxNzUsMTc1czE3NS03OC41MDUsMTc1LTE3NVMzNTIuNDk1LDgxLDI1Niw4MXogTTI1Niw0MDENCgkJCWMtNzkuOTUzLDAtMTQ1LTY1LjA0Ny0xNDUtMTQ1czY1LjA0Ny0xNDUsMTQ1LTE0NXMxNDUsNjUuMDQ3LDE0NSwxNDVTMzM1Ljk1Myw0MDEsMjU2LDQwMXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4NywyMTZjLTIyLjA1NiwwLTQwLDE3Ljk0NC00MCw0MGMwLDIyLjA1NiwxNy45NDQsNDAsNDAsNDBjMjIuMDU2LDAsNDAtMTcuOTQ0LDQwLTQwQzIyNywyMzMuOTQ0LDIwOS4wNTYsMjE2LDE4NywyMTZ6DQoJCQkgTTE4NywyNjZjLTUuNTE0LDAtMTAtNC40ODYtMTAtMTBjMC01LjUxNCw0LjQ4Ni0xMCwxMC0xMGM1LjUxNCwwLDEwLDQuNDg2LDEwLDEwQzE5NywyNjEuNTE0LDE5Mi41MTQsMjY2LDE4NywyNjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zMjUsMjE2Yy0yMi4wNTYsMC00MCwxNy45NDQtNDAsNDBjMCwyMi4wNTYsMTcuOTQ0LDQwLDQwLDQwYzIyLjA1NiwwLDQwLTE3Ljk0NCw0MC00MEMzNjUsMjMzLjk0NCwzNDcuMDU2LDIxNiwzMjUsMjE2eg0KCQkJIE0zMjUsMjY2Yy01LjUxNCwwLTEwLTQuNDg2LTEwLTEwYzAtNS41MTQsNC40ODYtMTAsMTAtMTBjNS41MTQsMCwxMCw0LjQ4NiwxMCwxMEMzMzUsMjYxLjUxNCwzMzAuNTE0LDI2NiwzMjUsMjY2eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",fxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0zNjAsMEgxMjBDOTcuOTIsMC4wMjYsODAuMDI2LDE3LjkyLDgwLDQwdjM2OGMwLjAyNCwxOS4wMDEsMTMuMzg5LDM1LjM3MywzMiwzOS4yVjQ4MGg0OHYtMzJoMTYwdjMyaDQ4di0zMi44DQoJCQljMTguNjExLTMuODI3LDMxLjk3Ni0yMC4xOTksMzItMzkuMlY0MEMzOTkuOTc0LDE3LjkyLDM4Mi4wOCwwLjAyNiwzNjAsMHogTTE0NCw0NjRoLTE2di0xNmgxNlY0NjR6IE0zNTIsNDY0aC0xNnYtMTZoMTZWNDY0eg0KCQkJIE0zODQsNDA4YzAsMTMuMjU1LTEwLjc0NSwyNC0yNCwyNEgxMjBjLTEzLjI1NSwwLTI0LTEwLjc0NS0yNC0yNFY0MGMwLTEzLjI1NSwxMC43NDUtMjQsMjQtMjRoMjQwYzEzLjI1NSwwLDI0LDEwLjc0NSwyNCwyNFY0MDgNCgkJCXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCwxNjBjLTcwLjY5MiwwLTEyOCw1Ny4zMDgtMTI4LDEyOGMwLjA4NCw3MC42NTgsNTcuMzQyLDEyNy45MTYsMTI4LDEyOGM3MC42OTIsMCwxMjgtNTcuMzA4LDEyOC0xMjgNCgkJCVMzMTAuNjkyLDE2MCwyNDAsMTYweiBNMjQwLDQwMGMtNjEuODU2LDAtMTEyLTUwLjE0NC0xMTItMTEyYzAuMDY2LTYxLjgyOCw1MC4xNzItMTExLjkzNCwxMTItMTEyYzYxLjg1NiwwLDExMiw1MC4xNDQsMTEyLDExMg0KCQkJUzMwMS44NTYsNDAwLDI0MCw0MDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yNDAsMTkyYy01My4wMTksMC05Niw0Mi45ODEtOTYsOTZjMC4wNTcsNTIuOTk2LDQzLjAwNCw5NS45NDMsOTYsOTZjNTMuMDE5LDAsOTYtNDIuOTgxLDk2LTk2UzI5My4wMTksMTkyLDI0MCwxOTJ6DQoJCQkgTTI0MCwzNjhjLTQ0LjE4MywwLTgwLTM1LjgxNy04MC04MGMwLjA0OS00NC4xNjMsMzUuODM3LTc5Ljk1Miw4MC04MGM0NC4xODMsMCw4MCwzNS44MTcsODAsODBDMzIwLDMzMi4xODMsMjg0LjE4MywzNjgsMjQwLDM2OA0KCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjQwLDMyYy0zMC45MjgsMC01NiwyNS4wNzItNTYsNTZjMC4wMzUsMzAuOTEzLDI1LjA4Nyw1NS45NjUsNTYsNTZjMzAuOTI4LDAsNTYtMjUuMDcyLDU2LTU2DQoJCQlDMjk2LDU3LjA3MiwyNzAuOTI4LDMyLDI0MCwzMnogTTI0MCwxMjhjLTIyLjA5MSwwLTQwLTE3LjkwOS00MC00MGMwLjAyNi0yMi4wOCwxNy45Mi0zOS45NzQsNDAtNDBjMjIuMDkxLDAsNDAsMTcuOTA5LDQwLDQwDQoJCQlTMjYyLjA5MSwxMjgsMjQwLDEyOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCw2NGMtMTMuMjU1LDAtMjQsMTAuNzQ1LTI0LDI0czEwLjc0NSwyNCwyNCwyNHMyNC0xMC43NDUsMjQtMjRTMjUzLjI1NSw2NCwyNDAsNjR6IE0yNDAsOTZjLTQuNDE4LDAtOC0zLjU4Mi04LTgNCgkJCXMzLjU4Mi04LDgtOHM4LDMuNTgyLDgsOFMyNDQuNDE4LDk2LDI0MCw5NnoiLz4NCiAgICAgICAgPHJlY3QgeD0iMTEyIiB5PSIzMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1MiIgeT0iMzIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIvPg0KICAgICAgICA8cmVjdCB4PSIxMTIiIHk9IjQwMCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1MiIgeT0iNDAwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiLz4NCiAgICAgICAgPHBhdGggZD0iTTI0MCwyNDhjLTIyLjA5MSwwLTQwLDE3LjkwOS00MCw0MGMwLjAyNiwyMi4wOCwxNy45MiwzOS45NzQsNDAsNDBjMjIuMDkxLDAsNDAtMTcuOTA5LDQwLTQwDQoJCQlDMjgwLDI2NS45MDksMjYyLjA5MSwyNDgsMjQwLDI0OHogTTI0MCwzMTJjLTEzLjI1NSwwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQsMjQtMjRzMjQsMTAuNzQ1LDI0LDI0UzI1My4yNTUsMzEyLDI0MCwzMTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00OCwyODBIMTZjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJjNC40MTgsMCw4LTMuNTgyLDgtOFM1Mi40MTgsMjgwLDQ4LDI4MHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUzLjY1NiwyMjYuMzQ0bC0yNC0yNGMtMy4xNzgtMy4wNjktOC4yNDMtMi45ODEtMTEuMzEyLDAuMTk3Yy0yLjk5NCwzLjEtMi45OTQsOC4wMTUsMCwxMS4xMTVsMjQsMjQNCgkJCWMzLjE3OCwzLjA2OSw4LjI0MywyLjk4MSwxMS4zMTItMC4xOTdDNTYuNjUsMjM0LjM1OSw1Ni42NSwyMjkuNDQ0LDUzLjY1NiwyMjYuMzQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTMuNDYsMzM4LjM0NGMtMy4xLTIuOTk1LTguMDE2LTIuOTk1LTExLjExNiwwbC0yNCwyNGMtMy4xNzgsMy4wNy0zLjI2Niw4LjEzNC0wLjE5NiwxMS4zMTJzOC4xMzQsMy4yNjYsMTEuMzEyLDAuMTk2DQoJCQljMC4wNjctMC4wNjQsMC4xMzItMC4xMywwLjE5Ni0wLjE5NmwyNC0yNEM1Ni43MjYsMzQ2LjQ3OCw1Ni42MzgsMzQxLjQxNCw1My40NiwzMzguMzQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY0LDI4MGgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDhzMy41ODIsOCw4LDhoMzJjNC40MTgsMCw4LTMuNTgyLDgtOFM0NjguNDE4LDI4MCw0NjQsMjgweiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDYxLjQ2LDIwMi4zNDRjLTMuMS0yLjk5NC04LjAxNS0yLjk5NC0xMS4xMTYsMGwtMjQsMjRjLTMuMTI0LDMuMTI1LTMuMTIzLDguMTksMC4wMDIsMTEuMzE0DQoJCQljMS41LDEuNDk5LDMuNTM0LDIuMzQyLDUuNjU0LDIuMzQyYzIuMTIyLDAsNC4xNTYtMC44NDQsNS42NTYtMi4zNDRsMjQtMjRDNDY0LjcyNiwyMTAuNDc4LDQ2NC42MzgsMjA1LjQxNCw0NjEuNDYsMjAyLjM0NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ2MS42NTYsMzYyLjM0NGwtMjQtMjRjLTMuMTc4LTMuMDctOC4yNDItMi45ODItMTEuMzEyLDAuMTk2Yy0yLjk5NSwzLjEtMi45OTUsOC4wMTYsMCwxMS4xMTZsMjQsMjQNCgkJCWMzLjE3OCwzLjA3LDguMjQyLDIuOTgyLDExLjMxMi0wLjE5NkM0NjQuNjUxLDM3MC4zNiw0NjQuNjUxLDM2NS40NDQsNDYxLjY1NiwzNjIuMzQ0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Oxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MTIgNTYuMTY0MDYyYzAtMTIuNzk2ODc0LTEwLjQwNjI1LTIzLjIwMzEyNC0yMy4yMDMxMjUtMjMuMjAzMTI0aC00OS45Njg3NXYtMTUuMDQ2ODc2YzAtOS44Nzg5MDYtOC4wMzUxNTYtMTcuOTE0MDYyLTE3LjkxNDA2My0xNy45MTQwNjJoLTEwMy4wODk4NDNjLTkuODc4OTA3IDAtMTcuOTE0MDYzIDguMDM5MDYyLTE3LjkxNDA2MyAxNy45MTQwNjJ2MTUuMDQ2ODc2aC04Ny44MTY0MDZ2LTE1LjA0Njg3NmMwLTkuODc4OTA2LTguMDM5MDYyLTE3LjkxNDA2Mi0xNy45MTc5NjktMTcuOTE0MDYyaC0xMDMuMDg5ODQzYy05Ljg3ODkwNyAwLTE3LjkxNDA2MyA4LjAzOTA2Mi0xNy45MTQwNjMgMTcuOTE0MDYydjE1LjA0Njg3NmgtNDkuOTY4NzVjLTEyLjc5Njg3NSAwLTIzLjIwMzEyNSAxMC40MDYyNS0yMy4yMDMxMjUgMjMuMjAzMTI0djQ5LjVjMCA2LjA1MDc4MiAyLjMyODEyNSAxMS41NjI1IDYuMTM2NzE5IDE1LjY5OTIxOS0zLjgwODU5NCA0LjEzMjgxMy02LjEzNjcxOSA5LjY0ODQzOC02LjEzNjcxOSAxNS42OTkyMTl2MzA1LjgwODU5NGMwIDEyLjc5Mjk2OCAxMC40MDYyNSAyMy4yMDMxMjUgMjMuMjAzMTI1IDIzLjIwMzEyNWgyLjM3ODkwNnYyMi40NTMxMjVjMCAxMi43ODEyNSAxMC4zOTg0MzggMjMuMTc1NzgxIDIzLjE3OTY4OCAyMy4xNzU3ODFoMjMyLjYxNzE4N2M0LjE0NDUzMiAwIDcuNTAzOTA2LTMuMzU5Mzc1IDcuNTAzOTA2LTcuNSAwLTQuMTQ0NTMxLTMuMzU5Mzc0LTcuNTAzOTA2LTcuNTAzOTA2LTcuNTAzOTA2aC0yMzIuNjE3MTg3Yy00LjUwNzgxMyAwLTguMTcxODc1LTMuNjY3OTY5LTguMTcxODc1LTguMTcxODc1di0yMi40NTMxMjVoNDMwLjgyMDMxMnYyMi40NTMxMjVjMCA0LjUwNzgxMi0zLjY2NDA2MiA4LjE3MTg3NS04LjE3MTg3NSA4LjE3MTg3NWgtMTQ3LjEyNWMtNC4xNDg0MzcgMC03LjUwMzkwNiAzLjM1OTM3NS03LjUwMzkwNiA3LjUwMzkwNiAwIDQuMTQwNjI1IDMuMzU1NDY5IDcuNSA3LjUwMzkwNiA3LjVoMTQ3LjEyNWMxMi43ODEyNSAwIDIzLjE3OTY4OC0xMC4zOTQ1MzEgMjMuMTc5Njg4LTIzLjE3NTc4MXYtMjIuNDUzMTI1aDIuMzc4OTA2YzEyLjc5Mjk2OSAwIDIzLjIwMzEyNS0xMC40MTAxNTcgMjMuMjAzMTI1LTIzLjIwMzEyNXYtMzA1LjgwODU5NGMwLTYuMDUwNzgxLTIuMzMyMDMxLTExLjU2NjQwNi02LjEzNjcxOS0xNS42OTkyMTkgMy44MDQ2ODgtNC4xMzY3MTkgNi4xMzY3MTktOS42NDg0MzcgNi4xMzY3MTktMTUuNjk5MjE5em0tMTk3LjA4NTkzOC0zOC4yNWMwLTEuNjA1NDY4IDEuMzA0Njg4LTIuOTA2MjUgMi45MTAxNTctMi45MDYyNWgxMDMuMDg5ODQzYzEuNjA1NDY5IDAgMi45MTAxNTcgMS4zMDQ2ODggMi45MTAxNTcgMi45MDYyNXYxNS4wNDY4NzZoLTEwOC45MTAxNTd6bS0yMjYuNzM4MjgxIDBjMC0xLjYwNTQ2OCAxLjMwNDY4OC0yLjkwNjI1IDIuOTEwMTU3LTIuOTA2MjVoMTAzLjA4OTg0M2MxLjYwNTQ2OSAwIDIuOTEwMTU3IDEuMzA0Njg4IDIuOTEwMTU3IDIuOTA2MjV2MTUuMDQ2ODc2aC0xMDguOTEwMTU3em00MDguODE2NDA3IDQyNC45NTcwMzJjMCA0LjUxOTUzMS0zLjY3NTc4MiA4LjE5OTIxOC04LjE5NTMxMyA4LjE5OTIxOGgtNDY1LjU5Mzc1Yy00LjUxOTUzMSAwLTguMTk1MzEzLTMuNjc5Njg3LTguMTk1MzEzLTguMTk5MjE4di0zMDUuODA4NTk0YzAtNC41MTk1MzEgMy42NzU3ODItOC4xOTkyMTkgOC4xOTUzMTMtOC4xOTkyMTloNDY1LjU5Mzc1YzQuNTIzNDM3IDAgOC4xOTUzMTMgMy42Nzk2ODggOC4xOTUzMTMgOC4xOTkyMTl6bTAtMzM3LjIwNzAzMmMwIDQuNTE5NTMyLTMuNjc1NzgyIDguMTk1MzEzLTguMTk1MzEzIDguMTk1MzEzaC00NjUuNTkzNzVjLTQuNTE5NTMxIDAtOC4xOTUzMTMtMy42NzU3ODEtOC4xOTUzMTMtOC4xOTUzMTN2LTQ5LjVjMC00LjUyMzQzNyAzLjY3NTc4Mi04LjE5OTIxOCA4LjE5NTMxMy04LjE5OTIxOGg0NjUuNTkzNzVjNC41MTk1MzEgMCA4LjE5NTMxMyAzLjY3NTc4MSA4LjE5NTMxMyA4LjE5OTIxOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDYuMDk3NjU2IDU1LjE1MjM0NGMtMTQuMjA3MDMxIDAtMjUuNzYxNzE4IDExLjU1NDY4Ny0yNS43NjE3MTggMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4NyAyNS43NjE3MTkgMjUuNzYxNzE4IDI1Ljc2MTcxOSAxNC4yMDMxMjUgMCAyNS43NjE3MTktMTEuNTU0Njg3IDI1Ljc2MTcxOS0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU4NTk0LTI1Ljc1NzgxMi0yNS43NjE3MTktMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODcgMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTI5Njg4IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOCAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuMTY3OTY5IDU1LjE1MjM0NGMtMTQuMjA3MDMxIDAtMjUuNzYxNzE5IDExLjU1NDY4Ny0yNS43NjE3MTkgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4OCAyNS43NjE3MTkgMjUuNzYxNzE5IDI1Ljc2MTcxOSAxNC4yMDMxMjUgMCAyNS43NTc4MTItMTEuNTU0Njg3IDI1Ljc1NzgxMi0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg3LTI1Ljc1NzgxMi0yNS43NTc4MTItMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45MzM1OTQgMC0xMC43NTc4MTMtNC44MjQyMTktMTAuNzU3ODEzLTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTc4MTMtMTAuNzU3ODEyIDUuOTI5Njg3IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzIuODMyMDMxIDU1LjE1MjM0NGMtMTQuMjAzMTI1IDAtMjUuNzU3ODEyIDExLjU1NDY4Ny0yNS43NTc4MTIgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1NDY4NyAyNS43NjE3MTkgMjUuNzU3ODEyIDI1Ljc2MTcxOSAxNC4yMDcwMzEgMCAyNS43NjE3MTktMTEuNTU0Njg3IDI1Ljc2MTcxOS0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg4LTI1Ljc1NzgxMi0yNS43NjE3MTktMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODcgMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE5LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTMzNTk0IDAgMTAuNzU3ODEzIDQuODI4MTI1IDEwLjc1NzgxMyAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzU3ODEzIDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MDUuOTAyMzQ0IDU1LjE1MjM0NGMtMTQuMjAzMTI1IDAtMjUuNzYxNzE5IDExLjU1NDY4Ny0yNS43NjE3MTkgMjUuNzU3ODEyIDAgMTQuMjA3MDMyIDExLjU1ODU5NCAyNS43NjE3MTkgMjUuNzYxNzE5IDI1Ljc2MTcxOSAxNC4yMDcwMzEgMCAyNS43NjE3MTgtMTEuNTU0Njg3IDI1Ljc2MTcxOC0yNS43NjE3MTkgMC0xNC4yMDMxMjUtMTEuNTU0Njg3LTI1Ljc1NzgxMi0yNS43NjE3MTgtMjUuNzU3ODEyem0wIDM2LjUxNTYyNWMtNS45Mjk2ODggMC0xMC43NTM5MDYtNC44MjQyMTktMTAuNzUzOTA2LTEwLjc1MzkwNyAwLTUuOTI5Njg3IDQuODI0MjE4LTEwLjc1NzgxMiAxMC43NTM5MDYtMTAuNzU3ODEyIDUuOTI5Njg3IDAgMTAuNzUzOTA2IDQuODI4MTI1IDEwLjc1MzkwNiAxMC43NTc4MTIgMCA1LjkyOTY4OC00LjgyNDIxOSAxMC43NTM5MDctMTAuNzUzOTA2IDEwLjc1MzkwN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MzQuNzQyMTg4IDE3MS45Mzc1aC0yMTguMTQ4NDM4Yy00LjE0NDUzMSAwLTcuNTAzOTA2IDMuMzU5Mzc1LTcuNTAzOTA2IDcuNSAwIDQuMTQ0NTMxIDMuMzU5Mzc1IDcuNTAzOTA2IDcuNTAzOTA2IDcuNTAzOTA2aDIxOC4xNDg0MzhjMS40Mzc1IDAgMi42MDU0NjggMS4xNzE4NzUgMi42MDU0NjggMi42MDkzNzV2MTkuODUxNTYzYzAgMS40Mzc1LTEuMTY3OTY4IDIuNjA5Mzc1LTIuNjA1NDY4IDIuNjA5Mzc1aC0zNTcuNDg0Mzc2Yy0xLjQzNzUgMC0yLjYwNTQ2OC0xLjE3MTg3NS0yLjYwNTQ2OC0yLjYwOTM3NXYtMTkuODUxNTYzYzAtMS40Mzc1IDEuMTY3OTY4LTIuNjA5Mzc1IDIuNjA1NDY4LTIuNjA5Mzc1aDEwNC4yNjk1MzJjNC4xNDQ1MzEgMCA3LjUwMzkwNi0zLjM1OTM3NSA3LjUwMzkwNi03LjUwMzkwNiAwLTQuMTQwNjI1LTMuMzU5Mzc1LTcuNS03LjUwMzkwNi03LjVoLTEwNC4yNjk1MzJjLTkuNzEwOTM3IDAtMTcuNjA5Mzc0IDcuODk4NDM4LTE3LjYwOTM3NCAxNy42MTMyODF2MTkuODUxNTYzYzAgOS43MTA5MzcgNy44OTg0MzcgMTcuNjEzMjgxIDE3LjYwOTM3NCAxNy42MTMyODFoMTAuMDM1MTU3djE2Ni40NjQ4NDRjMCAxNC4yNzczNDMgMTEuNjE3MTg3IDI1Ljg5NDUzMSAyNS44OTQ1MzEgMjUuODk0NTMxaDI4NS42MjVjMTQuMjc3MzQ0IDAgMjUuODk0NTMxLTExLjYxNzE4OCAyNS44OTQ1MzEtMjUuODk0NTMxdi0xNjYuNDY0ODQ0aDEwLjAzNTE1N2M5LjcxMDkzNyAwIDE3LjYxMzI4MS03Ljg5ODQzNyAxNy42MTMyODEtMTcuNjEzMjgxdi0xOS44NTE1NjNjMC05LjcxMDkzNy03LjkwMjM0NC0xNy42MTMyODEtMTcuNjEzMjgxLTE3LjYxMzI4MXptLTI1LjA0Mjk2OSAyMjEuNTQyOTY5YzAgNi4wMDM5MDYtNC44ODI4MTMgMTAuODg2NzE5LTEwLjg4NjcxOSAxMC44ODY3MTloLTI4NS42MjVjLTYuMDAzOTA2IDAtMTAuODkwNjI1LTQuODgyODEzLTEwLjg5MDYyNS0xMC44ODY3MTl2LTE2Ni40NjQ4NDRoMzA3LjQwMjM0NHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTIuNTQyOTY5IDI5NC44NTkzNzVjMi4wMjM0MzcgMCA0LjA0Mjk2OS0uODE2NDA2IDUuNTIzNDM3LTIuNDIxODc1bDIzLjAxMTcxOS0yNS4wMTU2MjVjMi44MDg1OTQtMy4wNTA3ODEgMi42MDkzNzUtNy43OTY4NzUtLjQ0MTQwNi0xMC42MDE1NjMtMy4wNTA3ODEtMi44MDQ2ODctNy43OTI5NjktMi42MDkzNzQtMTAuNjAxNTYzLjQ0MTQwN2wtMjMuMDExNzE4IDI1LjAxNTYyNWMtMi44MDQ2ODggMy4wNDY4NzUtMi42MDkzNzYgNy43OTI5NjguNDQxNDA2IDEwLjYwMTU2MiAxLjQ0MTQwNiAxLjMyNDIxOSAzLjI2MTcxOCAxLjk4MDQ2OSA1LjA3ODEyNSAxLjk4MDQ2OXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTQuMTg3NSAzMjQuMTM2NzE5YzEuNDQxNDA2IDEuMzI4MTI1IDMuMjYxNzE5IDEuOTgwNDY5IDUuMDc4MTI1IDEuOTgwNDY5IDIuMDIzNDM3IDAgNC4wNDI5NjktLjgxNjQwNyA1LjUyMzQzNy0yLjQyMTg3Nmw0Ny4zMTY0MDctNTEuNDI5Njg3YzIuODA0Njg3LTMuMDUwNzgxIDIuNjA5Mzc1LTcuNzk2ODc1LS40NDE0MDctMTAuNjA1NDY5LTMuMDUwNzgxLTIuODA0Njg3LTcuNzk2ODc0LTIuNjA1NDY4LTEwLjYwMTU2Mi40NDE0MDZsLTQ3LjMxNjQwNiA1MS40MzM1OTRjLTIuODA0Njg4IDMuMDQ2ODc1LTIuNjA1NDY5IDcuNzk2ODc1LjQ0MTQwNiAxMC42MDE1NjN6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Exe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTEyMi4yNSAxNy4yNjZoLTExNi41YTUuNzU2IDUuNzU2IDAgMCAwIC01Ljc1IDUuNzV2NjcuOTk0YTUuNzU3IDUuNzU3IDAgMCAwIDUuNzUgNS43NWg5Ljg4M2wtMy4wNjggNC40NGE2LjA3OSA2LjA3OSAwIDAgMCAxMCA2LjkxMmw3Ljg0Ny0xMS4zNTJoNjcuMTc2bDcuODQ0IDExLjM1MWE2LjA3OSA2LjA3OSAwIDAgMCAxMC02LjkxMmwtMy4wNjgtNC40MzloOS44ODNhNS43NTcgNS43NTcgMCAwIDAgNS43NTMtNS43NXYtNjcuOTk0YTUuNzU2IDUuNzU2IDAgMCAwIC01Ljc1LTUuNzV6bS0xMDIuNTYxIDg4Ljg1NmEyLjU4MiAyLjU4MiAwIDAgMSAtMi4xMjIgMS4xMTIgMi41OCAyLjU4IDAgMCAxIC0yLjEyMy00LjA0Nmw0LjQ0My02LjQyOGg2LjI3MXptOTIuODY3LTIuOTM0YTIuNTggMi41OCAwIDAgMSAtMi4xMjMgNC4wNDYgMi41ODUgMi41ODUgMCAwIDEgLTIuMTIzLTEuMTEybC02LjQ2OC05LjM2Mmg2LjI3MXptMTEuOTQ0LTEyLjE3OGEyLjI1MyAyLjI1MyAwIDAgMSAtMi4yNSAyLjI1aC0xMTYuNWEyLjI1MyAyLjI1MyAwIDAgMSAtMi4yNS0yLjI1di02Ny45OTRhMi4yNTMgMi4yNTMgMCAwIDEgMi4yNS0yLjI1aDExNi41YTIuMjUzIDIuMjUzIDAgMCAxIDIuMjUgMi4yNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExOC4yNSAyNS4yNjZoLTEwOC41YTEuNzQ5IDEuNzQ5IDAgMCAwIC0xLjc1IDEuNzV2NTkuOTk0YTEuNzUgMS43NSAwIDAgMCAxLjc1IDEuNzVoMTA4LjVhMS43NSAxLjc1IDAgMCAwIDEuNzUtMS43NXYtNTkuOTk0YTEuNzQ5IDEuNzQ5IDAgMCAwIC0xLjc1LTEuNzV6bS0xLjc1IDU5Ljk5NGgtMTA1di01Ni40OTRoMTA1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDEuMzc1IDQ3LjkyMmg3LjN2MTkuOTMyYTEuNzUgMS43NSAwIDAgMCAzLjUgMHYtMTkuOTMyaDcuM2ExLjc1IDEuNzUgMCAwIDAgMC0zLjVoLTE4LjFhMS43NSAxLjc1IDAgMCAwIDAgMy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNzUuOTYzIDY4LjUyN2ExLjc0OSAxLjc0OSAwIDAgMCAzLjIzIDBsOS4wNDctMjEuNjgxYTEuNzUgMS43NSAwIDEgMCAtMy4yMy0xLjM0NmwtNy40MzIgMTcuODA5LTcuNDMyLTE3LjgwOWExLjc1IDEuNzUgMCAxIDAgLTMuMjMgMS4zNDh6Ii8+DQogICAgPC9nPg0KPC9zdmc+",_xe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01OSwySDVBMywzLDAsMCwwLDIsNVY1OWEzLDMsMCwwLDAsMywzSDU5YTMsMywwLDAsMCwzLTNWNUEzLDMsMCwwLDAsNTksMlptMSw1N2ExLDEsMCwwLDEtMSwxSDVhMSwxLDAsMCwxLTEtMVY1QTEsMSwwLDAsMSw1LDRINTlhMSwxLDAsMCwxLDEsMVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMyLDZBMjYsMjYsMCwxLDAsNTgsMzIsMjYuMDI5LDI2LjAyOSwwLDAsMCwzMiw2Wm0wLDUwQTI0LDI0LDAsMSwxLDU2LDMyLDI0LjAyOCwyNC4wMjgsMCwwLDEsMzIsNTZaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0zMiwxMEEyMiwyMiwwLDEsMCw1NCwzMiwyMi4wMjUsMjIuMDI1LDAsMCwwLDMyLDEwWm0xMC4xNzUsNC44MTNjMi40NjksOS41NS0zLjYxMywxMi45LTYuNDI4LDEzLjkxMWE1LDUsMCwwLDAtMS42NS0xLjI0NywxMS4zNzQsMTEuMzc0LDAsMCwwLDMuMzExLTYuNzk0Yy4yNDktMi44NDUtLjc5LTUuNzA2LTMuMDUtOC41MzFBMTkuODI0LDE5LjgyNCwwLDAsMSw0Mi4xNzUsMTQuODEzWk0zNSwzMmEzLDMsMCwxLDEtMy0zQTMsMywwLDAsMSwzNSwzMlpNMzEuNTg2LDEyLjAyMWMyLjc2NywyLjg3Myw0LjA2Niw1LjcyMiwzLjgzMSw4LjQ3YTEwLjEsMTAuMSwwLDAsMS0zLjc4NCw2LjUzLDE5LjY1MiwxOS42NTIsMCwwLDAtOS41ODUtMTIuMzQ0QTE5LjgzOCwxOS44MzgsMCwwLDEsMzEuNTg2LDEyLjAyMVpNMjAuMTIsMTUuOTQ4YTE3LjY1NywxNy42NTcsMCwwLDEsOS41OTIsMTEuNjMzLDQuOTUxLDQuOTUxLDAsMCwwLS45NTcuNjQ3LDE4Ljg4NiwxOC44ODYsMCwwLDAtMTQuMzM4LTUuNzUyQTIwLjEyNiwyMC4xMjYsMCwwLDEsMjAuMTIsMTUuOTQ4Wk0xMiwzMmExOS44NywxOS44NywwLDAsMSwxLjQ0Mi03LjQxNkExNi4zODUsMTYuMzg1LDAsMCwxLDI1LjgxNiwyOC4yNmExMy43OSwxMy43OSwwLDAsMC04LjA2NCwxLjI5MUExMi42NDQsMTIuNjQ0LDAsMCwwLDEyLjMxMSwzNS40LDE5LjkxMywxOS45MTMsMCwwLDEsMTIsMzJabTEuMTY0LDYuNjZjMS4xMy0zLjUyOSwyLjk4Mi02LDUuNTItNy4zNGExMi42NDMsMTIuNjQzLDAsMCwxLDguNTYxLS43ODdBNC45MTksNC45MTksMCwwLDAsMjcsMzJjMCwuMTA5LjAyNS4yMTEuMDMyLjMxOC0yLjAwOC45MTUtNy45NjEsNC40Mi04LjksMTQuMDYzQTIwLjAzNCwyMC4wMzQsMCwwLDEsMTMuMTY0LDM4LjY2Wm02Ljg3OCw5LjMzM2MuMzY0LTkuMjc5LDUuNTYzLTEyLjc0Myw3LjUzMS0xMy43MTlhNSw1LDAsMCwwLDEuMDY1LDEuNGMtLjk1OCwyLjYwOS0yLjg1Myw5Ljc5MSwyLjEwOCwxNi4yNjFBMTkuODU2LDE5Ljg1NiwwLDAsMSwyMC4wNDIsNDcuOTkzWk0zMy4zODEsNTEuOTNjLTUuNC01LjczMy0zLjkyLTEyLjQ5NS0yLjk4OC0xNS4yMTlBNC45MjksNC45MjksMCwwLDAsMzIsMzdjLjA4MSwwLC4xNTYtLjAyLjIzNS0uMDI0LjYsMy4wNDksMi44MjksOS4yMjMsMTEuMTExLDExLjQ3NUExOS44NTYsMTkuODU2LDAsMCwxLDMzLjM4MSw1MS45M1ptMTEuOTY2LTUuMDc4Yy04LjQ0MS0xLjYxNy0xMC42MjMtNy4yOTItMTEuMTc0LTEwLjM3YTUuMDA2LDUuMDA2LDAsMCwwLDEuMDg0LS43MTljMS44NjgsMS45LDYuMjE1LDUuNjMzLDExLjUyMiw1LjYzM2ExMS4yMDgsMTEuMjA4LDAsMCwwLDMuMDg1LS40NTVBMjAuMDY5LDIwLjA2OSwwLDAsMSw0NS4zNDcsNDYuODUyWk01MiwzMmExOS45LDE5LjksMCwwLDEtMS4wNzQsNi40MTRjLTYuNTA3LDMuMTItMTIuNDYyLTIuMTg0LTE0LjQzOC00LjI1MWE0LjkyNyw0LjkyNywwLDAsMCwuMzY5LTEuMDI1LDE2LjYsMTYuNiwwLDAsMCwxLjc4OS4wOTQsMTguMzI4LDE4LjMyOCwwLDAsMCwxMi45MjYtNS4zMzlBMjAsMjAsMCwwLDEsNTIsMzJabS0xNS4wODgtLjg2OGE0Ljc0NSw0Ljc0NSwwLDAsMC0uMTczLS42NWMyLjkyNi0xLjE1NSw5LjIzNC00Ljc2Niw3LjgxNy0xNC4wMjhhMjAuMDU3LDIwLjA1NywwLDAsMSw2LjM5NCw5LjJBMTYuMzQ0LDE2LjM0NCwwLDAsMSwzNi45MTIsMzEuMTMyWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOSwxMkEzLDMsMCwxLDAsNiw5LDMsMywwLDAsMCw5LDEyWk05LDhBMSwxLDAsMSwxLDgsOSwxLDEsMCwwLDEsOSw4WiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTUsNmEzLDMsMCwxLDAsMywzQTMsMywwLDAsMCw1NSw2Wm0wLDRhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsNTUsMTBaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMiw1NWEzLDMsMCwwLDAtMy0zLDIuOTY2LDIuOTY2LDAsMCwwLTEsLjE4NFY0NUg2VjU1YTMsMywwLDAsMCwzLDNoNlY1NkgxMS44MTZBMi45NjYsMi45NjYsMCwwLDAsMTIsNTVaTTksNTZhMSwxLDAsMSwxLDEtMUExLDEsMCwwLDEsOSw1NloiLz4NCiAgICAgICAgPHBhdGggZD0iTTU2LDUyLjE4NEEyLjk2NiwyLjk2NiwwLDAsMCw1NSw1MmEzLDMsMCwwLDAtMywzLDIuOTY2LDIuOTY2LDAsMCwwLC4xODQsMUg0NXYySDU1YTMsMywwLDAsMCwzLTNWNDlINTZaTTU1LDU2YTEsMSwwLDEsMSwxLTFBMSwxLDAsMCwxLDU1LDU2WiIvPg0KICAgICAgICA8cmVjdCB4PSIxNyIgeT0iNTYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",xxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyOC42MDcgNDI4LjYwNyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQyMy43NzMsMzQzLjg3MUw0MjMuNzczLDM0My44NzFjLTYuNjE3LTQuNTk5LTEyLjQ0LTEwLjI0Ni0xNy4yNDEtMTYuNzE4Yy0xMS40OTQtMTMuMDYxLTI2LjEyMi0yOS4yNTctNTMuMjktMjkuMjU3DQoJCQkJYy0yNy4xNjcsMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjUNCgkJCQljLTEwLjk3MS0xMi41MzktMjUuNi0yOS43OC01My4yOS0yOS43OGMtMjcuNjksMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NQ0KCQkJCXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjVjLTcuNDU4LTkuODUtMTYuODg5LTE4LjAzNS0yNy42OS0yNC4wMzNjLTUuMTk0LTIuNTk3LTExLjUwOS0wLjQ5Mi0xNC4xMDYsNC43MDINCgkJCQljLTIuNTk3LDUuMTk0LTAuNDkyLDExLjUwOSw0LjcwMiwxNC4xMDZjOC4yMDMsNC45NDQsMTUuNDU3LDExLjMxNCwyMS40MiwxOC44MDhjMTIuMDE2LDE0LjEwNiwyNi4xMjIsMjkuNzgsNTMuMjksMjkuNzgNCgkJCQlzNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NXMyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NQ0KCQkJCWMxMC45NzEsMTIuNTM5LDI1LjYsMjkuNzgsNTMuMjksMjkuNzhjMjcuNjksMCw0MS4yNzMtMTUuNjczLDUzLjI5LTI5Ljc4YzEyLjAxNi0xNC4xMDYsMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1DQoJCQkJYzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1YzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc1YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3MSwxNC42MjktMy4xMzUNCgkJCQlDNDMwLjA4MiwzNTMuNTk0LDQyOC42NzksMzQ3LjA0NSw0MjMuNzczLDM0My44NzF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MjMuNzczLDI2NS41MDNMNDIzLjc3MywyNjUuNTAzYy02LjYxNy00LjU5OS0xMi40NC0xMC4yNDYtMTcuMjQxLTE2LjcxOGMtMTEuNDk0LTEzLjA2MS0yNi4xMjItMjkuMjU3LTUzLjI5LTI5LjI1Nw0KCQkJCWMtMjcuMTY3LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjVzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1DQoJCQkJYy0xMC45NzEtMTIuNTM5LTI1LjYtMjkuNzgtNTMuMjktMjkuNzhjLTI3LjY5LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjUNCgkJCQlzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1Yy03LjQ1OC05Ljg1LTE2Ljg4OS0xOC4wMzUtMjcuNjktMjQuMDMzYy01LjE5NC0yLjU5Ny0xMS41MDktMC40OTItMTQuMTA2LDQuNzAyDQoJCQkJcy0wLjQ5MiwxMS41MDksNC43MDIsMTQuMTA2YzguMjAzLDQuOTQ0LDE1LjQ1NywxMS4zMTQsMjEuNDIsMTguODA4YzEyLjAxNiwxNC4xMDYsMjYuMTIyLDI5Ljc4LDUzLjI5LDI5Ljc4DQoJCQkJczQxLjI3My0xNS42NzMsNTMuMjktMjkuNzhjMTIuMDE2LTE0LjEwNiwxOS44NTMtMjIuNDY1LDM3LjYxNi0yMi40NjVzMjYuNjQ1LDkuOTI3LDM3LjYxNiwyMi40NjUNCgkJCQljMTAuOTcxLDEyLjUzOSwyNS42LDI5Ljc4LDUzLjI5LDI5Ljc4YzI3LjY5LDAsNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NQ0KCQkJCWMxNy43NjMsMCwyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NWM2LjA4OSw3LjgxOCwxMy4zMDgsMTQuNjg1LDIxLjQyLDIwLjM3NWM0LjkwNSwzLjE3NCwxMS40NTUsMS43NzEsMTQuNjI5LTMuMTM1DQoJCQkJQzQzMC4wODIsMjc1LjIyNyw0MjguNjc5LDI2OC42NzcsNDIzLjc3MywyNjUuNTAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDIzLjc3MywxODEuOTExTDQyMy43NzMsMTgxLjkxMWMtNi42MTctNC41OTktMTIuNDQtMTAuMjQ2LTE3LjI0MS0xNi43MThjLTExLjQ5NC0xMy4wNjEtMjYuMTIyLTI5LjI1Ny01My4yOS0yOS4yNTcNCgkJCQljLTI3LjE2NywwLTQxLjI3MywxNS42NzMtNTMuMjksMjkuNzhzLTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjVzLTI1LjYtMjkuNzgtNTMuMjktMjkuNzgNCgkJCQljLTI3LjY5LDAtNDEuMjczLDE1LjY3My01My4yOSwyOS43OGMtMTIuMDE2LDE0LjEwNi0xOS44NTMsMjIuNDY1LTM3LjYxNiwyMi40NjVzLTI2LjY0NS05LjkyNy0zNy42MTYtMjIuNDY1DQoJCQkJYy03LjQ1OC05Ljg1LTE2Ljg4OS0xOC4wMzUtMjcuNjktMjQuMDMzYy01LjE5NC0yLjU5Ny0xMS41MDktMC40OTItMTQuMTA2LDQuNzAyYy0yLjU5Nyw1LjE5NC0wLjQ5MiwxMS41MDksNC43MDIsMTQuMTA2DQoJCQkJYzguMjAzLDQuOTQ0LDE1LjQ1NywxMS4zMTQsMjEuNDIsMTguODA4YzEyLjAxNiwxNC4xMDYsMjYuMTIyLDI5Ljc4LDUzLjI5LDI5Ljc4czQxLjI3My0xNS42NzMsNTMuMjktMjkuNzgNCgkJCQljMTIuMDE2LTE0LjEwNiwxOS44NTMtMjIuNDY1LDM3LjYxNi0yMi40NjVzMjYuNjQ1LDkuOTI3LDM3LjYxNiwyMi40NjVzMjUuNiwyOS43OCw1My4yOSwyOS43OA0KCQkJCWMyNy42OSwwLDQxLjI3My0xNS42NzMsNTMuMjktMjkuNzhzMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1YzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1DQoJCQkJYzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc1YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3MSwxNC42MjktMy4xMzUNCgkJCQlDNDMwLjA4MiwxOTEuNjM1LDQyOC42NzksMTg1LjA4NSw0MjMuNzczLDE4MS45MTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01LjgxNCw4Mi4xMjRjOC4yMDMsNC45NDQsMTUuNDU3LDExLjMxNCwyMS40MiwxOC44MDhjMTIuMDE2LDE0LjEwNiwyNi4xMjIsMjkuNzgsNTMuMjksMjkuNzgNCgkJCQlzNDEuMjczLTE1LjY3Myw1My4yOS0yOS43OGMxMi4wMTYtMTQuMTA2LDE5Ljg1My0yMi40NjUsMzcuNjE2LTIyLjQ2NXMyNi42NDUsOS45MjcsMzcuNjE2LDIyLjQ2NQ0KCQkJCWMxMC45NzEsMTIuNTM5LDI1LjYsMjkuNzgsNTMuMjksMjkuNzhjMjcuNjksMCw0MS4yNzMtMTUuNjczLDUzLjI5LTI5Ljc4YzEyLjAxNi0xNC4xMDYsMTkuODUzLTIyLjQ2NSwzNy42MTYtMjIuNDY1DQoJCQkJYzE3Ljc2MywwLDI2LjY0NSw5LjkyNywzNy42MTYsMjIuNDY1YzYuMDg5LDcuODE4LDEzLjMwOCwxNC42ODUsMjEuNDIsMjAuMzc2YzQuOTA1LDMuMTc0LDExLjQ1NSwxLjc3LDE0LjYyOS0zLjEzNQ0KCQkJCWMzLjE3NC00LjkwNSwxLjc3MS0xMS40NTUtMy4xMzUtMTQuNjI5aDBjLTYuNjE3LTQuNTk5LTEyLjQ0LTEwLjI0Ni0xNy4yNDEtMTYuNzE4Yy0xMS40OTQtMTMuMDYxLTI2LjEyMi0yOS4yNTctNTMuMjktMjkuMjU3DQoJCQkJYy0yNy4xNjcsMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NXMtMjYuNjQ1LTkuOTI3LTM3LjYxNi0yMi40NjUNCgkJCQljLTEwLjk3MS0xMi41MzktMjUuNi0yOS43OC01My4yOS0yOS43OGMtMjcuNjksMC00MS4yNzMsMTUuNjczLTUzLjI5LDI5Ljc4Yy0xMi4wMTYsMTQuMTA2LTE5Ljg1MywyMi40NjUtMzcuNjE2LDIyLjQ2NQ0KCQkJCVM1My44OCw5OS44ODcsNDIuOTA4LDg3LjM0OGMtNy40NTgtOS44NS0xNi44ODktMTguMDM1LTI3LjY5LTI0LjAzM2MtNS4xOTQtMi41OTctMTEuNTA5LTAuNDkyLTE0LjEwNiw0LjcwMg0KCQkJCVMwLjYyMSw3OS41MjcsNS44MTQsODIuMTI0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Sxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUwOCA1MDgiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxyZWN0IHg9IjEzOS4zIiB3aWR0aD0iMTYuNCIgaGVpZ2h0PSIzOC4yIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTA0LjEsMjEuNCA4OC45LDI3LjcgOTgsNDkuOCAxMTMuMiw0My41IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjcuNSw4OS40IDIxLjMsMTA0LjYgNDMuMywxMTMuNyA0OS41LDk4LjUgCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOTAuOSwyMS40IDE4MS44LDQzLjUgMTk2LjksNDkuOCAyMDYsMjcuNyAJCSIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9IjQzLjMsMTgyLjcgMjEuMywxOTEuOCAyNy41LDIwNyA0OS41LDE5Ny45IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjY3LjQsODkuNCAyNDUuNCw5OC41IDI1MS43LDExMy43IDI3My43LDEwNC42IAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjQ2LDM3LjYgMjE5LjEsNjQuNiAyMzAuNyw3Ni4zIDI1Ny42LDQ5LjIgCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI2NC4zLDIyMC4xIDM3LjQsMjQ3LjEgNDksMjU4LjggNzUuOSwyMzEuNyAJCSIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE0LjMsMTQwIDAsMTQwIDAsMTU2LjQgMTQuMywxNTYuNCAzOC4xLDE1Ni40IDM4LjEsMTQwIAkJIi8+DQogICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNTkuMSw0Ny43IDQ5LDM3LjYgMzcuNCw0OS4yIDY0LjMsNzYuMyA3NS45LDY0LjYgCQkiLz4NCiAgICAgICAgPHBhdGggZD0iTTMxOS41LDE3Mi45djE2LjVjNDkuNywwLDkwLjEsNDAuNiw5MC4xLDkwLjZINDI2QzQyNi4xLDIyMC45LDM3OC4zLDE3Mi45LDMxOS41LDE3Mi45eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY2LjEsMjk1LjVjMC42LTUuNiwwLjktMTAuNiwwLjktMTUuNmMwLTgxLjctNjYuMi0xNDguMi0xNDcuNS0xNDguMmMtMjguNCwwLTU1LjUsOC4yLTc4LjcsMjNjMC4yLTIuMiwwLjUtNC4zLDAuNS02LjUNCgkJCWMwLTUyLTQyLjEtOTQuMy05My44LTk0LjNzLTkzLjgsNDIuMy05My44LDk0LjNjMCwzMC42LDE0LjksNTkuMSwzOS41LDc2LjdjLTE1LjQsMTcuMi0yNS41LDM5LjMtMjcuMyw2My43DQoJCQljLTM3LDQtNjUuOCwzNS41LTY1LjgsNzMuN2MwLDQwLjksMzMuMSw3NC4xLDczLjcsNzQuMWgzNjAuNWM0MC43LDAsNzMuNy0zMy4yLDczLjctNzQuMUM1MDgsMzMzLjcsNDkxLjQsMzA3LjcsNDY2LjEsMjk1LjV6DQoJCQkgTTcwLDE0OC4yYzAtNDIuOSwzNC43LTc3LjgsNzcuNC03Ny44YzQyLjcsMCw3Ny40LDM0LjksNzcuNCw3Ny44YzAsNi45LTAuOSwxMy45LTIuNywyMC42Yy04LjMsNy40LTE1LjcsMTUuNS0yMi4xLDI0LjQNCgkJCWMtMzMuMS05LjEtNjguNy0xLjMtOTQuOSwyMC4xQzgzLjMsMTk5LDcwLDE3NC41LDcwLDE0OC4yeiBNNDM0LjMsNDE5LjlINzMuN2MtMzEuNiwwLTU3LjQtMjUuOS01Ny40LTU3LjYNCgkJCWMwLTMxLjgsMjUuNy01Ny42LDU3LjQtNTcuNmg4LjJ2LTguMmMwLTQ5LjksNDAuNC05MC42LDkwLjEtOTAuNmMxNC40LDAsMzQuNyw2LjgsMzQuNyw2LjhzMzguNy02NC40LDExMi44LTY0LjQNCgkJCWM3Mi4zLDAsMTMxLjEsNTkuMSwxMzEuMSwxMzEuN2MwLDEzLjktMi42LDI2LjEtMi42LDI2LjFsNi4yLDIuM2MyMi4zLDguNCwzNy4zLDMwLjEsMzcuMyw1My45DQoJCQlDNDkxLjYsMzk0LDQ2NS45LDQxOS45LDQzNC4zLDQxOS45eiIvPg0KICAgICAgICA8cG9seWdvbiBwb2ludHM9Ijg4LjQsNDU1LjIgNDcuNSw0OTYuNCA1OS4xLDUwOCAxMDAsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNzguNiw0NTUuMiAxMzcuNiw0OTYuNCAxNDkuMiw1MDggMTkwLjEsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyNjguNyw0NTUuMiAyMjcuNyw0OTYuNCAyMzkuMyw1MDggMjgwLjMsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzNTguOCw0NTUuMiAzMTcuOSw0OTYuNCAzMjkuNCw1MDggMzcwLjQsNDY2LjggCQkiLz4NCiAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI0NDguOSw0NTUuMiA0MDgsNDk2LjQgNDE5LjYsNTA4IDQ2MC41LDQ2Ni44IAkJIi8+DQogICAgPC9nPg0KPC9zdmc+DQo=",kxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MSA1NWgtNXYtNDRhMy4wMDkgMy4wMDkgMCAwIDAgMy0zdi01YTEgMSAwIDAgMCAtMS0xaC01MmExIDEgMCAwIDAgLTEgMXY1YTMuMDA5IDMuMDA5IDAgMCAwIDMgM3Y0NGgtNWExIDEgMCAwIDAgLTEgMXY1YTEgMSAwIDAgMCAxIDFoNThhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAgLTEtMXptLTU0LTQ3di00aDUwdjRhMSAxIDAgMCAxIC0xIDFoLTQ4YTEgMSAwIDAgMSAtMS0xem00NyAzdjQ0aC00NHYtNDR6bTYgNDloLTU2di0zaDU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTIgMTJoLTQwYTEgMSAwIDAgMCAtMSAxdjQwYTEgMSAwIDAgMCAxIDFoNDBhMSAxIDAgMCAwIDEtMXYtNDBhMSAxIDAgMCAwIC0xLTF6bS0yMSA0MGgtMTh2LTE5aDE4em0wLTIxaC0xOHYtMTdoMTh6bTIwIDIxaC0xOHYtMTloMTh6bTAtMjFoLTE4di0xN2gxOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE1LjE3MiAxOGg1LjY1N3YyaC01LjY1N3oiIHRyYW5zZm9ybT0ibWF0cml4KC43MDcgLS43MDcgLjcwNyAuNzA3IC04LjE2MyAxOC4yOTMpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNC4xMzYgMjAuNWgxMi43Mjh2MmgtMTIuNzI4eiIgdHJhbnNmb3JtPSJtYXRyaXgoLjcwNyAtLjcwNyAuNzA3IC43MDcgLTkuMTk4IDIwLjc5MykiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",vxe={"Alarm Systems":"PHN2ZyBoZWlnaHQ9IjUxMXB0IiB2aWV3Qm94PSItMzEgMCA1MTEgNTExLjk5OTk4IiB3aWR0aD0iNTExcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTIzNS4zMjgxMjUgMTE5LjE2Nzk2OWMyMC44Mzk4NDQgOC4wNTg1OTMgMzUuNjQ0NTMxIDIxLjE0ODQzNyA0NC42MzI4MTMgNDEuNTAzOTA2Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzEuNjg3NSAxMjguNTg1OTM4YzE4Ljk4MDQ2OSA3LjMzOTg0MyAzMS4zODI4MTIgMTguODMyMDMxIDM5LjAzNTE1NiAzNi4xNjQwNjIgMS42Njc5NjkgMy43NzM0MzggNS4zNjMyODIgNi4wMjM0MzggOS4yNDIxODggNi4wMjM0MzggMS4zNjMyODEgMCAyLjc0NjA5NC0uMjc3MzQ0IDQuMDcwMzEyLS44NjMyODIgNS4xMDU0NjktMi4yNTM5MDYgNy40MTQwNjMtOC4yMTQ4NDQgNS4xNjAxNTYtMTMuMzE2NDA2LTkuODIwMzEyLTIyLjI1LTI2LjI1LTM3LjU3NDIxOS01MC4yMjY1NjItNDYuODQzNzUtNS4xOTkyMTktMi4wMTE3MTktMTEuMDQ2ODc1LjU3NDIxOS0xMy4wNTg1OTQgNS43NzczNDQtMi4wMTE3MTggNS4yMDMxMjUuNTc4MTI1IDExLjA0Njg3NSA1Ljc3NzM0NCAxMy4wNTg1OTR6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjA3LjEwNTQ2OSAyMzcuODEyNWMyMC4wODk4NDMgMCAzNi40Mzc1LTE2LjM0Mzc1IDM2LjQzNzUtMzYuNDMzNTk0IDAtMjAuMDkzNzUtMTYuMzQ3NjU3LTM2LjQzNzUtMzYuNDM3NS0zNi40Mzc1LTIwLjA4OTg0NCAwLTM2LjQzNzUgMTYuMzQzNzUtMzYuNDM3NSAzNi40Mzc1IDAgMjAuMDg5ODQ0IDE2LjM0NzY1NiAzNi40MzM1OTQgMzYuNDM3NSAzNi40MzM1OTR6bTAtNTIuNjc1NzgxYzguOTUzMTI1IDAgMTYuMjQyMTg3IDcuMjg1MTU2IDE2LjI0MjE4NyAxNi4yNDIxODcgMCA4Ljk1MzEyNS03LjI4OTA2MiAxNi4yMzgyODItMTYuMjQyMTg3IDE2LjIzODI4Mi04Ljk1NzAzMSAwLTE2LjI0MjE4OC03LjI4NTE1Ny0xNi4yNDIxODgtMTYuMjM4MjgyIDAtOC45NTcwMzEgNy4yODUxNTctMTYuMjQyMTg3IDE2LjI0MjE4OC0xNi4yNDIxODd6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzkwLjE3OTY4OCAxNDcuMDE1NjI1YzMuNzY1NjI0IDAgNy4zOTg0MzctLjU3NDIxOSAxMC44MjAzMTItMS42MzY3MTlsNy4zMzk4NDQgOS44NzEwOTRjMTMuOTQxNDA2IDE4Ljc1IDIxLjYyMTA5NCA0MS45NDUzMTIgMjEuNjIxMDk0IDY1LjMxMjV2NTkuMTUyMzQ0YzAgNS41NzgxMjUgNC41MjM0MzcgMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTYgNS41NzQyMTggMCAxMC4wOTc2NTYtNC41MTk1MzEgMTAuMDk3NjU2LTEwLjA5NzY1NnYtNTkuMTUyMzQ0YzAtMjcuNjc1NzgxLTkuMDkzNzUtNTUuMTUyMzQ0LTI1LjYwOTM3NS03Ny4zNTkzNzVsLTYuNjc1NzgxLTguOTgwNDY5YzUuNDQ5MjE4LTYuMzY3MTg3IDguNzQ2MDk0LTE0LjYyNSA4Ljc0NjA5NC0yMy42NDA2MjUgMC0yMC4wOTM3NS0xNi4zNDM3NS0zNi40Mzc1LTM2LjQzNzUtMzYuNDM3NS0yMC4wODk4NDQgMC0zNi40MzM1OTQgMTYuMzQzNzUtMzYuNDMzNTk0IDM2LjQzNzUgMCAyMC4wODk4NDQgMTYuMzQzNzUgMzYuNDMzNTk0IDM2LjQzMzU5NCAzNi40MzM1OTR6bTAtNTIuNjc1NzgxYzguOTU3MDMxIDAgMTYuMjQyMTg3IDcuMjg1MTU2IDE2LjI0MjE4NyAxNi4yNDIxODcgMCA4Ljk1MzEyNS03LjI4NTE1NiAxNi4yNDIxODgtMTYuMjQyMTg3IDE2LjI0MjE4OC04Ljk1MzEyNiAwLTE2LjI0MjE4OC03LjI4OTA2My0xNi4yNDIxODgtMTYuMjQyMTg4IDAtOC45NTcwMzEgNy4yODkwNjItMTYuMjQyMTg3IDE2LjI0MjE4OC0xNi4yNDIxODd6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjA1ODU5NCAzNDkuMDUwNzgxYy01LjU3ODEyNSAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU3djYzLjMyMDMxMmMwIDE0LjIzMDQ2OS0xMS41NzgxMjYgMjUuODA4NTk0LTI1LjgwODU5NCAyNS44MDg1OTRoLTQ0LjU5NzY1NnYtMzMuNDI5Njg4YzAtNS41NzgxMjUtNC41MTk1MzItMTAuMDk3NjU2LTEwLjA5Mzc1LTEwLjA5NzY1NmgtNDIuMjY1NjI2di0xMTIuNDUzMTI1YzIxLjg1NTQ2OS0yNC4wMzUxNTYgMzUuMTkxNDA3LTU1Ljk0OTIxOSAzNS4xOTE0MDctOTAuOTE3OTY5IDAtNzQuNTk3NjU2LTYwLjY4NzUtMTM1LjI4NTE1Ni0xMzUuMjgxMjUtMTM1LjI4NTE1NnMtMTM1LjI4MTI1IDYwLjY4NzUtMTM1LjI4MTI1IDEzNS4yODUxNTZjMCAzMy4xMDU0NjkgMTEuOTU3MDMxIDYzLjQ2NDg0NCAzMS43NzczNDMgODcuMDAzOTA2djIxMy41MTk1MzJjMCA1LjU3ODEyNSA0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU3IDEwLjA5NzY1NmgyMzUuNzYxNzE5YzUuNTc0MjE4IDAgMTAuMDkzNzUtNC41MTk1MzEgMTAuMDkzNzUtMTAuMDk3NjU2di0zMy40Mjk2ODhoNDQuNTk3NjU2YzI1LjM2NzE4NyAwIDQ2LjAwMzkwNi0yMC42MzY3MTggNDYuMDAzOTA2LTQ2LjAwMzkwNnYtNjMuMzIwMzEyYzAtNS41NzgxMjYtNC41MjM0MzgtMTAuMDk3NjU3LTEwLjA5NzY1Ni0xMC4wOTc2NTd6bS0yMzIuOTUzMTI1LTI2Mi43NjE3MTljNjMuNDU3MDMxIDAgMTE1LjA4NTkzNyA1MS42Mjg5MDcgMTE1LjA4NTkzNyAxMTUuMDg5ODQ0IDAgNjMuNDU3MDMyLTUxLjYyODkwNiAxMTUuMDg1OTM4LTExNS4wODU5MzcgMTE1LjA4NTkzOC02My40NjA5MzggMC0xMTUuMDg1OTM4LTUxLjYyODkwNi0xMTUuMDg1OTM4LTExNS4wODU5MzggMC02My40NjA5MzcgNTEuNjI1LTExNS4wODk4NDQgMTE1LjA4NTkzOC0xMTUuMDg5ODQ0em0tODMuMzA4NTk0IDIyMS42MDE1NjNjMjIuOTgwNDY5IDE4LjAxNTYyNSA1MS45MTAxNTYgMjguNzY5NTMxIDgzLjMwODU5NCAyOC43Njk1MzEgMjkuODYzMjgxIDAgNTcuNDkyMTg3LTkuNzM0Mzc1IDc5Ljg5NDUzMS0yNi4xODc1djE4MS4zMzIwMzJoLTE2My4yMDMxMjV6bTIxNS41NjY0MDYgMTgzLjkxNDA2M2gtMzIuMTY3OTY5di02Ni44NTkzNzZoMzIuMTY3OTY5em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0OC4xNjAxNTYgMzc3Ljc4OTA2MmgxNy45MjU3ODJjNS41NzQyMTggMCAxMC4wOTc2NTYtNC41MjM0MzcgMTAuMDk3NjU2LTEwLjA5NzY1NiAwLTUuNTc4MTI1LTQuNTIzNDM4LTEwLjA5NzY1Ni0xMC4wOTc2NTYtMTAuMDk3NjU2aC0xNy45MjU3ODJjLTUuNTc0MjE4IDAtMTAuMDk3NjU2IDQuNTE5NTMxLTEwLjA5NzY1NiAxMC4wOTc2NTYgMCA1LjU3NDIxOSA0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU2IDEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTguMTQ0NTMxIDM3Ny43ODkwNjJoMTcuOTIxODc1YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTIzNDM3IDEwLjA5NzY1Ni0xMC4wOTc2NTYgMC01LjU3ODEyNS00LjUyMzQzNy0xMC4wOTc2NTYtMTAuMDk3NjU2LTEwLjA5NzY1NmgtMTcuOTIxODc1Yy01LjU3ODEyNSAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU2IDAgNS41NzQyMTkgNC41MTk1MzEgMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY2LjA0Njg3NSAzNTcuNTkzNzVoLTE3LjkyMTg3NWMtNS41NzQyMTkgMC0xMC4wOTc2NTYgNC41MTk1MzEtMTAuMDk3NjU2IDEwLjA5NzY1NiAwIDUuNTc0MjE5IDQuNTIzNDM3IDEwLjA5NzY1NiAxMC4wOTc2NTYgMTAuMDk3NjU2aDE3LjkyMTg3NWM1LjU3ODEyNSAwIDEwLjA5NzY1Ni00LjUyMzQzNyAxMC4wOTc2NTYtMTAuMDk3NjU2IDAtNS41NzgxMjUtNC41MTk1MzEtMTAuMDk3NjU2LTEwLjA5NzY1Ni0xMC4wOTc2NTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ4LjE2MDE1NiA0MjAuNjc1NzgxaDY3LjkwNjI1YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTE5NTMxIDEwLjA5NzY1Ni0xMC4wOTc2NTZzLTQuNTIzNDM3LTEwLjA5NzY1Ni0xMC4wOTc2NTYtMTAuMDk3NjU2aC02Ny45MDYyNWMtNS41NzQyMTggMC0xMC4wOTc2NTYgNC41MTk1MzEtMTAuMDk3NjU2IDEwLjA5NzY1NnM0LjUyMzQzOCAxMC4wOTc2NTYgMTAuMDk3NjU2IDEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDguMTI1IDQ0My4xNTYyNWgtOTkuOTY0ODQ0Yy01LjU3NDIxOCAwLTEwLjA5NzY1NiA0LjUxOTUzMS0xMC4wOTc2NTYgMTAuMDk3NjU2IDAgNS41NzQyMTkgNC41MjM0MzggMTAuMDk3NjU2IDEwLjA5NzY1NiAxMC4wOTc2NTZoOTkuOTY0ODQ0YzUuNTc0MjE5IDAgMTAuMDk3NjU2LTQuNTIzNDM3IDEwLjA5NzY1Ni0xMC4wOTc2NTYgMC01LjU3ODEyNS00LjUxOTUzMS0xMC4wOTc2NTYtMTAuMDk3NjU2LTEwLjA5NzY1NnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMDYuMzU1NDY5IDQwLjEzNjcxOWMxLjg0Mzc1IDMuMzIwMzEyIDUuMjg1MTU2IDUuMTkxNDA2IDguODMyMDMxIDUuMTkxNDA2IDEuNjYwMTU2IDAgMy4zNDM3NS0uNDE0MDYzIDQuODk4NDM4LTEuMjc3MzQ0IDQuODc1LTIuNzEwOTM3IDYuNjI1LTguODU5Mzc1IDMuOTE0MDYyLTEzLjczNDM3NWwtMTMuOTg0Mzc1LTI1LjEyODkwNmMtMi43MTA5MzctNC44NzEwOTQtOC44NTkzNzUtNi42MjUtMTMuNzM0Mzc1LTMuOTEwMTU2LTQuODcxMDk0IDIuNzEwOTM3LTYuNjI1IDguODU5Mzc1LTMuOTE0MDYyIDEzLjczNDM3NXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im02My4xNDQ1MzEgODMuMDE1NjI1LTI2LjA1NDY4Ny0xNS4wMzkwNjNjLTQuODMyMDMyLTIuNzg5MDYyLTExLjAwMzkwNi0xLjEzMjgxMi0xMy43OTI5NjkgMy42OTUzMTNzLTEuMTMyODEzIDExLjAwMzkwNiAzLjY5NTMxMyAxMy43OTI5NjlsMjYuMDU0Njg3IDE1LjA0Mjk2OGMxLjU4OTg0NC45MTc5NjkgMy4zMjgxMjUgMS4zNTE1NjMgNS4wMzkwNjMgMS4zNTE1NjMgMy40ODgyODEgMCA2Ljg4MjgxMi0xLjgwODU5NCA4Ljc1MzkwNi01LjA0Njg3NSAyLjc4OTA2Mi00LjgzMjAzMSAxLjEzMjgxMi0xMS4wMDc4MTItMy42OTUzMTMtMTMuNzk2ODc1em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxLjExMzI4MSAxNDYuMjEwOTM4LTMwLjA4NTkzNy0xLjI4MTI1Yy01LjU4MjAzMi0uMjUtMTAuMjgxMjUgNC4wODk4NDMtMTAuNTE5NTMyIDkuNjYwMTU2LS4yMzQzNzQgNS41NzAzMTIgNC4wODk4NDQgMTAuMjgxMjUgOS42NjAxNTcgMTAuNTE1NjI1bDMwLjA4NTkzNyAxLjI4MTI1Yy4xNDQ1MzIuMDA3ODEyLjI5Mjk2OS4wMDc4MTIuNDM3NS4wMDc4MTIgNS4zNzg5MDYgMCA5Ljg1MTU2My00LjI0MjE4NyAxMC4wNzgxMjUtOS42Njc5NjkuMjM4MjgxLTUuNTcwMzEyLTQuMDg1OTM3LTEwLjI3NzM0My05LjY1NjI1LTEwLjUxNTYyNHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yODMuNjQwNjI1IDE5OC42MjUuMTIxMDk0LjI5Njg3NWMxLjU4OTg0MyAzLjkyNTc4MSA1LjM2NzE4NyA2LjMwNDY4NyA5LjM1OTM3NSA2LjMwNDY4NyAxLjI2MTcxOCAwIDIuNTQ2ODc1LS4yMzgyODEgMy43ODkwNjItLjc0MjE4NyA1LjE2Nzk2OS0yLjA5Mzc1IDcuNjYwMTU2LTcuOTgwNDY5IDUuNTY2NDA2LTEzLjE0ODQzN2wtLjEyMTA5My0uMjk2ODc2Yy0yLjA5Mzc1LTUuMTY3OTY4LTcuOTgwNDY5LTcuNjU2MjUtMTMuMTQ4NDM4LTUuNTYyNXMtNy42NjAxNTYgNy45ODA0NjktNS41NjY0MDYgMTMuMTQ4NDM4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0OS4zNjcxODggMzE1LjY2Nzk2OWMtMi4wNzgxMjYtNS4xNzE4NzUtNy45NjQ4NDQtNy42Nzk2ODgtMTMuMTM2NzE5LTUuNjAxNTYzLTUuMTcxODc1IDIuMDgyMDMyLTcuNjc5Njg4IDcuOTYwOTM4LTUuNjAxNTYzIDEzLjEzNjcxOWwuMTE3MTg4LjI5Mjk2OWMxLjU4NTkzNyAzLjk0MTQwNiA1LjM3MTA5NCA2LjMzNTkzNyA5LjM3NSA2LjMzNTkzNyAxLjI1MzkwNiAwIDIuNTI3MzQ0LS4yMzQzNzUgMy43NjE3MTgtLjczNDM3NSA1LjE3NTc4Mi0yLjA3ODEyNSA3LjY4MzU5NC03Ljk2MDkzNyA1LjYwMTU2My0xMy4xMzI4MTJ6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Amplifier:F_e,Awnings:G_e,"Battery Status":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM5NC4wNjMgMzkxLjk5NmMtOS4xOTgtNS4yOS0xOC4zNzMtMTAuNjIzLTI3LjU1OC0xNS45MzcgNS4wMDItMTEuNzY5IDEwLjE5NC0yMy45MDIgMTQuOTAzLTM2LjA1MyAxLjgwOS00LjY2NyAxLjE4OS05LjkxMS0xLjY1NS0xNC4wMjgtNS43NzYtOC4zNjEtMTYuODYzLTguODU1LTI0LjM0NC0xLjc0LTE5LjY2MSAxOC43LTM5LjA4NSAzNy01OC42NTIgNTUuNTM3LTMuNzc1IDMuNTc3LTUuNjM5IDguNDM0LTUuMTEgMTMuMzI3LjUyMyA0Ljg0NiAzLjMzOSA5LjE0NCA3LjcyNSAxMS43OTIgOS4zNDUgNS42NDEgMTguNzYxIDEwLjk1NSAyOC4wOTggMTYuMjkxLTQuNjQ0IDEwLjk1MS0xMC4zNzIgMjQuMjQ2LTE0LjkyIDM2LjAwMi0yLjg4NyA3LjQ2Mi40MjEgMTUuNzQ0IDcuNjkzIDE5LjI2NCA1LjcxNCAyLjc2NiAxMi4yOCAyLjIxMSAxOC4yOTktMy40ODMgMTkuMzQ0LTE4LjMgMzkuMzQzLTM3LjIxNCA1OC42Ny01NS41NDcgMy44MTgtMy42MjIgNS42NzQtOC41MTIgNS4wOS0xMy40MTYtLjU5MS00Ljk2Mi0zLjU5NC05LjMzOC04LjIzOS0xMi4wMDl6bS03LjE3NCAxNC41NGMtMTUuNjM0IDE0LjgzMi01OC45NDkgNTYuOTczLTYwLjEwOSA1Ni40MTItLjExOC0uMDU3LS4zMDYtLjE3OC0uMjQtLjM0OSA1LjE3OS0xMy41MjYgMTEuNjM1LTI4LjI3MiAxNi45MTgtNDAuNzMyIDEuNDkzLTMuNTIyLjkwNy04LjI4LTMuNzY4LTEwLjk3LTEwLjg0LTYuMjM3LTIxLjc5MS0xMi4zNTQtMzIuNTY0LTE4Ljg0NS0uODAyLS40ODMtLjc2Ny0uNzEtLjA1MS0xLjM4OCAyMC44NzQtMTkuNzc5IDU3Ljk1OS01NS4zMTEgNTkuODAzLTU2LjQ1OS4zOTYuMDg0LjU0NC4yOTkuNTQ1LjM4NC01LjMwNyAxMy42ODQtMTEuMjEzIDI3LjMwNS0xNi45IDQwLjczOS0xLjc5NCA0LjIzNy0uMjkzIDguNjQ5IDMuNzM5IDEwLjk4IDQuMzk5IDIuNTQgOC43OTYgNS4wODcgMTMuMTkxIDcuNjM0IDYuMzc0IDMuNjkzIDEyLjc0OCA3LjM4NyAxOS4xMzQgMTEuMDU5IDEuMTA2LjYzNSAxLjEzNi43NDQuMzAyIDEuNTM1em0tODEuNzg0LTIwOC40aC0yMDEuNDZjLTEwLjI3MyAwLTE4LjYzMSA4LjMzLTE4LjYzMSAxOC41Njl2NDQuMjc2YzAgMTAuMjM5IDguMzU3IDE4LjU2OSAxOC42MzEgMTguNTY5aDIwMS40NjFjMTAuMjczIDAgMTguNjMxLTguMzMgMTguNjMxLTE4LjU2OXYtNDQuMjc2Yy0uMDAxLTEwLjIzOS04LjM1OC0xOC41NjktMTguNjMyLTE4LjU2OXptMy42MzEgNjIuODQ1YzAgMS45NjgtMS42MjkgMy41NjktMy42MzEgMy41NjloLTIwMS40NmMtMi4wMDIgMC0zLjYzMS0xLjYwMS0zLjYzMS0zLjU2OXYtNDQuMjc2YzAtMS45NjggMS42MjktMy41NjkgMy42MzEtMy41NjloMjAxLjQ2MWMyLjAwMiAwIDMuNjMxIDEuNjAxIDMuNjMxIDMuNTY5djQ0LjI3NnptMTUtMTQzLjg5OGMwLTEwLjIzOS04LjM1Ny0xOC41NjktMTguNjMxLTE4LjU2OWgtMjAxLjQ2Yy0xMC4yNzMgMC0xOC42MzEgOC4zMy0xOC42MzEgMTguNTY5djQ0LjI3NmMwIDEwLjIzOSA4LjM1NyAxOC41NjkgMTguNjMxIDE4LjU2OWgyMDEuNDYxYzEwLjI3MyAwIDE4LjYzMS04LjMzIDE4LjYzMS0xOC41Njl2LTQ0LjI3NnptLTE1IDQ0LjI3N2MwIDEuOTY4LTEuNjI5IDMuNTY5LTMuNjMxIDMuNTY5aC0yMDEuNDZjLTIuMDAyIDAtMy42MzEtMS42MDEtMy42MzEtMy41Njl2LTQ0LjI3NmMwLTEuOTY4IDEuNjI5LTMuNTY5IDMuNjMxLTMuNTY5aDIwMS40NjFjMi4wMDIgMCAzLjYzMSAxLjYwMSAzLjYzMSAzLjU2OXY0NC4yNzZ6bTM4LjI0NyAxMjMuODU3Yy0xOC42NTMgMC0zNi4yNjYgNC41MjktNTEuODAzIDEyLjU0MmgtMTkxLjUzNWMtMTAuMjcyIDAtMTguNjMgOC4zMzEtMTguNjMgMTguNTd2NDQuMjdjMCAxMC4yMzkgOC4zNTcgMTguNTcgMTguNjMgMTguNTdoMTMxLjYyMWMtMS4wOTYgNi4zMTgtMS42NzMgMTIuODEyLTEuNjczIDE5LjQzOCAwIDI0LjI0MyA3LjY1MSA0Ni43MjkgMjAuNjYgNjUuMTgyaC0xNTAuNjA4Yy0yLjAwMiAwLTMuNjMtMS42MDItMy42My0zLjU3di00NC4yN2MwLTEuOTY5IDEuNjI4LTMuNTcgMy42My0zLjU3aDEwNy42NDFjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEwNy42NDFjLTEwLjI3MiAwLTE4LjYzIDguMzMxLTE4LjYzIDE4LjU3djQ0LjI3YzAgMTAuMjM5IDguMzU3IDE4LjU3IDE4LjYzIDE4LjU3aDE2My4yMzdjNy4wNyA3LjA2MyAxNS4wNjUgMTMuMTk5IDIzLjc4NSAxOC4yMWgtMTk4LjI0MmMtMTQuMjI3IDAtMjUuOC0xMS41NzQtMjUuOC0yNS44di0zNjUuMDg5YzAtMTQuMjI2IDExLjU3My0yNS44IDI1LjgtMjUuOGgyMjMuOWMxNC4yMjcgMCAyNS44IDExLjU3NCAyNS44IDI1Ljh2MTU2LjY0YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTE1Ni42NGMwLTIyLjQ5Ny0xOC4zMDMtNDAuOC00MC44LTQwLjhoLTQwLjA2N3YtMzUuNjExYzAtMTYuMzc2LTEzLjMyMy0yOS42OTktMjkuNjk5LTI5LjY5OWgtODQuMzY3Yy0xNi4zNzYgMC0yOS42OTkgMTMuMzIzLTI5LjY5OSAyOS42OTl2MzUuNjExaC00MC4wNjhjLTIyLjQ5NyAwLTQwLjggMTguMzAzLTQwLjggNDAuOHYzNjUuMDljMCAyMi40OTcgMTguMzAzIDQwLjggNDAuOCA0MC44aDIyMy45YzMuODkyIDAgNy43MzEtLjU1MyAxMS40NDItMS42MzYgNi4yNDggMS4wNzEgMTIuNjY3IDEuNjM2IDE5LjIxNiAxLjYzNiA2Mi41MjQgMCAxMTMuMzkyLTUwLjg2NyAxMTMuMzkyLTExMy4zOTIgMC02Mi41MjQtNTAuODY3LTExMy4zOTEtMTEzLjM5Mi0xMTMuMzkxem0tMTk5LjQ5MS0yNTUuNTE4YzAtOC4xMDUgNi41OTQtMTQuNjk5IDE0LjY5OS0xNC42OTloODQuMzY3YzguMTA1IDAgMTQuNjk5IDYuNTk0IDE0LjY5OSAxNC42OTl2MzUuNjExaC0xMTMuNzY1em0tNDMuODQ3IDMzNC40NzFjLTIuMDAyIDAtMy42My0xLjYwMi0zLjYzLTMuNTd2LTQ0LjI3YzAtMS45NjkgMS42MjgtMy41NyAzLjYzLTMuNTdoMTY5LjM0MWMtMTUuNjY2IDEzLjUyMS0yNy42IDMxLjI1LTM0LjA0MSA1MS40MXptMjQzLjMzOCAxMzIuODNjLTU0LjI1MyAwLTk4LjM5Mi00NC4xMzgtOTguMzkyLTk4LjM5MiAwLTU0LjI1MyA0NC4xMzktOTguMzkxIDk4LjM5Mi05OC4zOTFzOTguMzkyIDQ0LjEzOCA5OC4zOTIgOTguMzkxYzAgNTQuMjU0LTQ0LjEzOSA5OC4zOTItOTguMzkyIDk4LjM5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Ceiling Spotlights":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDc0IDc0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00Ni40NCA0aC0yLjk3YTEgMSAwIDAgMSAwLTJoMi45N2ExIDEgMCAwIDEgMCAyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjguNjQgMTAuMzhoLTYzLjI4YTEgMSAwIDAgMSAtMS0xdi02LjM4YTEgMSAwIDAgMSAxLTFoMjEuMmExIDEgMCAwIDEgMCAyaC0yMC4ydjQuMzhoNjEuMjh2LTQuMzhoLTE0LjJhMSAxIDAgMCAxIDAtMmgxNS4yYTEgMSAwIDAgMSAxIDF2Ni4zOGExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2LjQ3IDRoLTIuOTFhMSAxIDAgMCAxIDAtMmgyLjkxYTEgMSAwIDAgMSAwIDJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNyA1MS4yMDdhMSAxIDAgMCAxIC0xLTF2LTQwLjgyOGExIDEgMCAxIDEgMiAwdjQwLjgyOGExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ2Ljc3MSA2Ny4wN2gtMTkuNTQyYTEgMSAwIDAgMSAtLjk3Ny0xLjIxNWwzLjQ5LTE1Ljg1NWExIDEgMCAwIDEgLjk3Ny0uNzg1aDEyLjU2MmExIDEgMCAwIDEgLjk3Ny43ODVsMy40OSAxNS44NmExIDEgMCAwIDEgLS45NzcgMS4yMTV6bS0xOC4zLTJoMTcuMDU2bC0zLjA0OS0xMy44NmgtMTAuOTU2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzcgNzJhNS45MzYgNS45MzYgMCAwIDEgLTUuOTMtNS45MyAxIDEgMCAwIDEgMiAwIDMuOTMgMy45MyAwIDAgMCA3Ljg2IDAgMSAxIDAgMCAxIDIgMCA1LjkzNiA1LjkzNiAwIDAgMSAtNS45MyA1LjkzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjAuNDE2IDM1LjExNGExIDEgMCAwIDEgLTEtMXYtMjQuNzM1YTEgMSAwIDAgMSAyIDB2MjQuNzM1YTEgMSAwIDAgMSAtMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjkuNiA1MC4wMjZoLTE4LjM3YTEgMSAwIDAgMSAtLjk3Ni0xLjIxNWwzLjI4LTE0LjkxMWExIDEgMCAwIDEgLjk3Ny0uNzg1aDExLjgwOWExIDEgMCAwIDEgLjk3Ny43ODVsMy4yOCAxNC45MDlhMSAxIDAgMCAxIC0uOTc2IDEuMjE1em0tMTcuMTI2LTJoMTUuODgybC0yLjgzOS0xMi45MDloLTEwLjJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02MC40MTYgNTQuNjZhNS42NDEgNS42NDEgMCAwIDEgLTUuNjM0LTUuNjM0IDEgMSAwIDEgMSAyIDAgMy42MzQgMy42MzQgMCAxIDAgNy4yNjggMCAxIDEgMCAxIDEgMiAwIDUuNjQxIDUuNjQxIDAgMCAxIC01LjYzNCA1LjYzNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzLjU4NCAzNS4xMTRhMSAxIDAgMCAxIC0xLTF2LTI0LjczNWExIDEgMCAwIDEgMiAwdjI0LjczNWExIDEgMCAwIDEgLTEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyLjc3IDUwLjAyNmgtMTguMzdhMSAxIDAgMCAxIC0uOTc2LTEuMjE1bDMuMjc2LTE0LjkxMWExIDEgMCAwIDEgLjk3Ny0uNzg1aDExLjgxMmExIDEgMCAwIDEgLjk3Ny43ODVsMy4yOCAxNC45MDlhMSAxIDAgMCAxIC0uOTc2IDEuMjE1em0tMTcuMTI2LTJoMTUuODgxbC0yLjgzOS0xMi45MDloLTEwLjIwM3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzLjU4NCA1NC42NmE1LjY0MSA1LjY0MSAwIDAgMSAtNS42MzQtNS42MzQgMSAxIDAgMCAxIDIgMCAzLjYzNCAzLjYzNCAwIDAgMCA3LjI2OCAwIDEgMSAwIDAgMSAyIDAgNS42NDEgNS42NDEgMCAwIDEgLTUuNjM0IDUuNjM0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Chandelier:H_e,Climate:V_e,"Coffee Makers":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ2NiAxMTEuOTk2aC00OS43MTlsLTEwOS4yMTUtNDYuMzYxIDQuODg5LTU0Ljc0NmMuMjUtMi43OTYtLjY4Ny01LjU2OC0yLjU4Mi03LjYzOS0xLjg5NC0yLjA3LTQuNTcyLTMuMjUtNy4zNzgtMy4yNWgtNjBjLTIuODA3IDAtNS40ODQgMS4xOC03LjM3OSAzLjI1LTEuODk1IDIuMDcxLTIuODMxIDQuODQzLTIuNTgyIDcuNjM5bDQuODk4IDU0Ljg1NC0xMDQuNzk1IDQ2LjI1M2gtMjYuMTM3Yy0zOC41OTggMC03MCAzMS40MDItNzAgNzB2NjkuOTk3YzAgMTYuNTQyIDEzLjQ1OCAzMCAzMCAzMHMzMC0xMy40NTggMzAtMzB2LTY5Ljk5N2MwLTUuNDIgNC41OC0xMCAxMC0xMGgyNi45MTVsMjEuNDgzIDEyMS43MzhjMS45MjcgMTAuOTIzIDkuOTA0IDE4LjI2MyAxOS44NDggMTguMjYzdjQwLjAwM2MtOS42NTIgMC0xNy4yMTcgNi44MDItMTkuNzQ0IDE3Ljc1MWwtMzAuMDAxIDEzMGMtLjY4NSAyLjk2OS4wMjEgNi4wODkgMS45MTggOC40NzRzNC43NzggMy43NzQgNy44MjYgMy43NzRoMjgwYzMuMDQ3IDAgNS45MjktMS4zOSA3LjgyNi0zLjc3NCAxLjg5Ny0yLjM4NSAyLjYwNC01LjUwNSAxLjkxOC04LjQ3NGwtMzAuMDAxLTEzMGMtMi41MjUtMTAuOTQ5LTEwLjA5MS0xNy43NTEtMTkuNzQzLTE3Ljc1MXYtNDAuMDAyYzkuOTQ0IDAgMTcuOTItNy4zMzkgMTkuODQ3LTE4LjI2MmwxNC4zODEtODEuNDkyIDY0LjA1Ni01NS4yMzZjMi4yMDMtMS44OTkgMy40Ny00LjY2NSAzLjQ3LTcuNTczdi0yNy40MzhjLjAwMS01LjUyNC00LjQ3Ny0xMC4wMDEtOS45OTktMTAuMDAxem0tMTc0LjkzOC05MS45OTYtMy43NSA0MS45OTZoLTMwLjYzNGwtMy43NTEtNDEuOTk2em0tNDEuNDIzIDYxLjk5Nmg0NC43ODVsNzAuNjcyIDMwaC0xODMuNDI4em0tMTQzLjYzOSA3MC4wMDFjLTE2LjU0MiAwLTMwIDEzLjQ1OC0zMCAzMHY2OS45OTdjMCA1LjUxNC00LjQ4NiAxMC0xMCAxMHMtMTAtNC40ODYtMTAtMTB2LTY5Ljk5N2MwLTI3LjU3IDIyLjQzLTUwIDUwLTUwaDE5Ljg1NmwzLjUzIDIwem02OC4wOTQgMTM4LjI2My0yNy45MjktMTU4LjI2NGg2Mi43NjJsMi41MjggMzUuODE3Yy4zNzIgNS4yNyA0Ljc2MiA5LjI5NiA5Ljk2NSA5LjI5Ni4yMzYgMCAuNDc1LS4wMDguNzE0LS4wMjUgNS41MDktLjM4OSA5LjY2LTUuMTcgOS4yNzEtMTAuNjc5bC0yLjQyOS0zNC40MDloOTAuNTM5bC0xMS4yOTUgMTYwLjAwMmgtNjcuOTQ5bC0yLjUyOS0zNS44MTdjLS4zODktNS41MDktNS4xNjYtOS42NjEtMTAuNjc5LTkuMjcxLTUuNTA5LjM4OS05LjY2IDUuMTctOS4yNzEgMTAuNjc5bDIuNDI5IDM0LjQwOWgtNDUuNTE4Yy0uMTk5LS4zMjEtLjQ2My0uOTE0LS42MDktMS43Mzh6bS0uMTAzIDgzLjk4OGMuMjU5LTEuMTI1LjYxLTEuODU3Ljg1My0yLjI0OWg0NS4zNmwtMTEuMDc3IDEyMGgtNjIuMzF6bTEzNC4yMTItMi4yNDggMTEuMDc3IDEyMGgtOTAuMDY5bDExLjA3Ny0xMjB6bTY2LjI5NyAyLjI0OCAyNy4xNzUgMTE3Ljc1MmgtNjIuMzFsLTExLjA3Ny0xMjBoNDUuMzZjLjI0My4zOTEuNTkzIDEuMTIzLjg1MiAyLjI0OHptLTIwLjI1NS0yMi4yNDhoLTE1OS45OTh2LTQwLjAwMmgxNTkuOTk4em0yMC4xNTEtNjEuNzRjLS4xNDYuODI0LS40MDkgMS40MTctLjYwOCAxLjczN2gtNDUuNTE4bDExLjI5NS0xNjAuMDAxaDYyLjc2MmwtMTIuOTM3IDczLjMwOWMwIC4wMDEgMCAuMDAyLS4wMDEuMDAzem04MS42MDQtMTQ1LjQwNy00Mi4wMjkgMzYuMjQyIDguNjY1LTQ5LjA5OWgzMy4zNjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMjQuNTk5IDIyMS45OTdjNS41MjMgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzctMTAtMTAtMTBoLS4wMDdjLTUuNTIzIDAtOS45OTYgNC40NzctOS45OTYgMTBzNC40OCAxMCAxMC4wMDMgMTB6Ii8+DQogICAgPC9nPg0KPC9zdmc+","Cold Water":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ3NSA0NzUiID4NCjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQoJPHBhdGggZD0iTTQzOC40MTMsMzQzLjE4OEM0MjguMDU5LDMzNS4wODUsNDE1LjE3NCwzMjUsMzkwLjgzNSwzMjVjLTI0LjMzOSwwLTM3LjIyNCwxMC4wODUtNDcuNTc3LDE4LjE4OA0KCQlDMzM0LjQ5NiwzNTAuMDQ1LDMyOC4xNjUsMzU1LDMxNC4xNywzNTVjLTEzLjk5NCwwLTIwLjMyNS00Ljk1NS0yOS4wODctMTEuODEzQzI3NC43MjksMzM1LjA4NSwyNjEuODQ0LDMyNSwyMzcuNTA2LDMyNQ0KCQljLTI0LjMzOSwwLTM3LjIyNCwxMC4wODUtNDcuNTc4LDE4LjE4OEMxODEuMTY2LDM1MC4wNDUsMTc0LjgzNCwzNTUsMTYwLjg0LDM1NWMtMTMuOTk2LDAtMjAuMzI3LTQuOTU1LTI5LjA5LTExLjgxMw0KCQlDMTIxLjM5NSwzMzUuMDg0LDEwOC41MDksMzI1LDg0LjE3LDMyNWMtMjQuMzM5LDAtMzcuMjI1LDEwLjA4NC00Ny41NzksMTguMTg4QzI3LjgyOCwzNTAuMDQ1LDIxLjQ5NiwzNTUsNy41LDM1NXYzMA0KCQljMjQuMzM5LDAsMzcuMjI1LTEwLjA4NCw0Ny41NzktMTguMTg4QzYzLjg0MiwzNTkuOTU1LDcwLjE3NCwzNTUsODQuMTcsMzU1YzEzLjk5NiwwLDIwLjMyNyw0Ljk1NSwyOS4wOTEsMTEuODEzDQoJCUMxMjMuNjE1LDM3NC45MTYsMTM2LjUsMzg1LDE2MC44NCwzODVjMjQuMzM4LDAsMzcuMjI0LTEwLjA4NCw0Ny41NzgtMTguMTg4QzIxNy4xOCwzNTkuOTU1LDIyMy41MTEsMzU1LDIzNy41MDYsMzU1DQoJCWMxMy45OTQsMCwyMC4zMjUsNC45NTUsMjkuMDg3LDExLjgxM0MyNzYuOTQ3LDM3NC45MTUsMjg5LjgzMywzODUsMzE0LjE3LDM4NWMyNC4zMzgsMCwzNy4yMjQtMTAuMDg1LDQ3LjU3Ny0xOC4xODgNCgkJQzM3MC41MSwzNTkuOTU1LDM3Ni44NDEsMzU1LDM5MC44MzUsMzU1YzEzLjk5NSwwLDIwLjMyNSw0Ljk1NSwyOS4wODgsMTEuODEzQzQzMC4yNzcsMzc0LjkxNSw0NDMuMTYyLDM4NSw0NjcuNSwzODV2LTMwDQoJCUM0NTMuNTA2LDM1NSw0NDcuMTc1LDM1MC4wNDUsNDM4LjQxMywzNDMuMTg4eiIvPg0KCTxwYXRoIGQ9Ik0zOTAuODM1LDQxNWMtMjQuMzM4LDAtMzcuMjI0LDEwLjA4NS00Ny41NzcsMTguMTg4QzMzNC40OTYsNDQwLjA0NSwzMjguMTY1LDQ0NSwzMTQuMTcsNDQ1DQoJCWMtMTMuOTk0LDAtMjAuMzI1LTQuOTU1LTI5LjA4Ny0xMS44MTNDMjc0LjcyOSw0MjUuMDg1LDI2MS44NDQsNDE1LDIzNy41MDYsNDE1Yy0yNC4zMzksMC0zNy4yMjQsMTAuMDg1LTQ3LjU3OCwxOC4xODgNCgkJQzE4MS4xNjYsNDQwLjA0NSwxNzQuODM0LDQ0NSwxNjAuODQsNDQ1Yy0xMy45OTYsMC0yMC4zMjctNC45NTUtMjkuMDktMTEuODEzQzEyMS4zOTUsNDI1LjA4NCwxMDguNTA5LDQxNSw4NC4xNyw0MTUNCgkJYy0yNC4zMzksMC0zNy4yMjUsMTAuMDg0LTQ3LjU3OSwxOC4xODhDMjcuODI4LDQ0MC4wNDUsMjEuNDk2LDQ0NSw3LjUsNDQ1djMwYzI0LjMzOSwwLDM3LjIyNS0xMC4wODQsNDcuNTc5LTE4LjE4OA0KCQlDNjMuODQyLDQ0OS45NTUsNzAuMTc0LDQ0NSw4NC4xNyw0NDVjMTMuOTk2LDAsMjAuMzI3LDQuOTU1LDI5LjA5MSwxMS44MTNDMTIzLjYxNSw0NjQuOTE2LDEzNi41LDQ3NSwxNjAuODQsNDc1DQoJCWMyNC4zMzgsMCwzNy4yMjQtMTAuMDg0LDQ3LjU3OC0xOC4xODhDMjE3LjE4LDQ0OS45NTUsMjIzLjUxMSw0NDUsMjM3LjUwNiw0NDVjMTMuOTk0LDAsMjAuMzI1LDQuOTU1LDI5LjA4NywxMS44MTMNCgkJQzI3Ni45NDcsNDY0LjkxNSwyODkuODMzLDQ3NSwzMTQuMTcsNDc1YzI0LjMzOCwwLDM3LjIyNC0xMC4wODUsNDcuNTc3LTE4LjE4OEMzNzAuNTEsNDQ5Ljk1NSwzNzYuODQxLDQ0NSwzOTAuODM1LDQ0NQ0KCQljMTMuOTk1LDAsMjAuMzI1LDQuOTU1LDI5LjA4OCwxMS44MTNDNDMwLjI3Nyw0NjQuOTE1LDQ0My4xNjIsNDc1LDQ2Ny41LDQ3NXYtMzBjLTEzLjk5NCwwLTIwLjMyNS00Ljk1NS0yOS4wODctMTEuODEzDQoJCUM0MjguMDU5LDQyNS4wODUsNDE1LjE3NCw0MTUsMzkwLjgzNSw0MTV6Ii8+DQoJPHBvbHlnb24gcG9pbnRzPSIxODQuMzc4LDI1OC4zMjMgMjIyLjUsMjM2LjMxMyAyMjIuNSwyODAuMzMzIDI1Mi41LDI4MC4zMzMgMjUyLjUsMjM2LjMxMyAyOTAuNjIyLDI1OC4zMjMgMzA1LjYyMiwyMzIuMzQzDQoJCTI2Ny41LDIxMC4zMzMgMzA1LjYyMiwxODguMzIzIDI5MC42MjIsMTYyLjM0MyAyNTIuNSwxODQuMzUzIDI1Mi41LDE0MC4zMzMgMjIyLjUsMTQwLjMzMyAyMjIuNSwxODQuMzUzIDE4NC4zNzgsMTYyLjM0Mw0KCQkxNjkuMzc4LDE4OC4zMjMgMjA3LjUsMjEwLjMzMyAxNjkuMzc4LDIzMi4zNDMgCQkJIi8+DQoJPHBvbHlnb24gcG9pbnRzPSIyNC4wOTUsMTE3Ljk5IDYyLjIxNiw5NS45OCA2Mi4yMTYsMTQwIDkyLjIxNiwxNDAgOTIuMjE2LDk1Ljk4IDEzMC4zMzgsMTE3Ljk5IDE0NS4zMzgsOTIuMDEgMTA3LjIxNiw3MA0KCQkxNDUuMzM4LDQ3Ljk5IDEzMC4zMzgsMjIuMDEgOTIuMjE2LDQ0LjAyIDkyLjIxNiwwIDYyLjIxNiwwIDYyLjIxNiw0NC4wMiAyNC4wOTUsMjIuMDEgOS4wOTUsNDcuOTkgNDcuMjE3LDcwIDkuMDk1LDkyLjAxDQoJCSIvPg0KCTxwb2x5Z29uIHBvaW50cz0iMzQ0LjY2MiwxMTcuOTkgMzgyLjc4NCw5NS45OCAzODIuNzg0LDE0MCA0MTIuNzg0LDE0MCA0MTIuNzg0LDk1Ljk4IDQ1MC45MDUsMTE3Ljk5IDQ2NS45MDUsOTIuMDEgNDI3Ljc4Myw3MA0KCQk0NjUuOTA1LDQ3Ljk5IDQ1MC45MDUsMjIuMDEgNDEyLjc4NCw0NC4wMiA0MTIuNzg0LDAgMzgyLjc4NCwwIDM4Mi43ODQsNDQuMDIgMzQ0LjY2MiwyMi4wMSAzMjkuNjYyLDQ3Ljk5IDM2Ny43ODQsNzANCgkJMzI5LjY2Miw5Mi4wMSAJCQkiLz4NCjwvZz4NCjwvc3ZnPg0K",Computer:Z_e,Consumption:X_e,Curtains:K_e,Dishwashers:q_e,Doors:exe,Doorstep:txe,Dryer:sxe,Fan:ixe,"Floor Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM3Ny4wMTggMTA0LjQtNTQuODYxLTkzLjQxNmMtMy45OC02Ljc3NS0xMS4zMzQtMTAuOTg0LTE5LjE5MS0xMC45ODRoLTkxLjY1NWMtNy42OTcgMC0xNC45NzMgNC4wNzktMTguOTg3IDEwLjY0NGwtNTcuMTM1IDkzLjQxNGMtOS4wNTUgMTQuODAzIDEuNjI2IDMzLjg3IDE4Ljk4NyAzMy44N2gyOC4xODJjMi4yMjIgMzMuNDUyIDI2LjgwOCA2MC44ODQgNTguOTE2IDY3LjQxLS4yNzQgMS44MjYtLjE4NC0xMy41MS0uMTg0IDIxNy4xOTVoLTM3LjQ4NGMtMTEuODk4IDAtMjEuNTc5IDkuNjgtMjEuNTc5IDIxLjU3OXY0Ni4zMWMwIDExLjg5OCA5LjY4IDIxLjU3OSAyMS41NzkgMjEuNTc5aDEwNC43OWMxMS44OTkgMCAyMS41NzktOS42OCAyMS41NzktMjEuNTc5di00Ni4zMWMwLTExLjg5OC05LjY4LTIxLjU3OS0yMS41NzktMjEuNTc5aC0zNy40ODRjMC0yMzAuNzY2LjA5LTIxNS4zNy0uMTg0LTIxNy4xOTUgMjIuMDI1LTQuNDc2IDQwLjUwNS0xOC43OTUgNTAuNjY2LTM4LjE0MXYzNy42MzFjMCA4LjIzNSA2LjY3NiAxNC45MTEgMTQuOTExIDE0LjkxMXMxNC45MTEtNi42NzYgMTQuOTExLTE0LjkxMXYtNjYuOWg2LjYxYzE3LjE2NiAwIDI3Ljg5My0xOC43MDggMTkuMTkyLTMzLjUyOHptLTc2Ljg2NiAzNzcuNzc4aC04OC4zMDJ2LTI5LjgyMmg4OC4zMDJ6bS04NC41OTktNDUyLjM1Nmg4My4wODNsNDUuOTc0IDc4LjI4NGMtNy4wNjEgMC0xNjkuOTAzIDAtMTc2LjkzOCAwem00MC40NDcgMTQ3LjE3MmMtMjIuNTk1IDAtNDEuMjY3LTE3LjExNy00My43MjktMzkuMDY2aDg3LjQ1OGMtMi40NjIgMjEuOTQ5LTIxLjEzNCAzOS4wNjYtNDMuNzI5IDM5LjA2NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Garage Doors":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIsNjRjNC40MTgsMCw4LTMuNTgyLDgtOFY4YzAtNC40MTgtMy41ODItOC04LThIOEMzLjU4MiwwLDAsMy41ODIsMCw4djQ4YzAsNC40MTgsMy41ODIsOCw4LDhoMTZ2NDAwSDgNCgkJYy00LjQxOCwwLTgsMy41ODItOCw4czMuNTgyLDgsOCw4aDQ2NGM0LjQxOCwwLDgtMy41ODIsOC04cy0zLjU4Mi04LTgtOGgtMTZWNjRINDcyeiBNNDA4LDQ2NEg3MnYtNDhoMzM2VjQ2NHogTTQwOCw0MDBINzJ2LTQ4DQoJCWgzMzZWNDAweiBNNDA4LDMzNkg3MnYtNDhoMzM2VjMzNnogTTQwOCwyNzJINzJ2LTQ4aDMzNlYyNzJ6IE00MDgsMjA4SDcydi00OGgzMzZWMjA4eiBNNDA4LDE0NEg3MlY5NmgzMzZWMTQ0eiBNNDQwLDQ2NGgtMTZWODgNCgkJYzAtNC40MTgtMy41ODItOC04LThINjRjLTQuNDE4LDAtOCwzLjU4Mi04LDh2Mzc2SDQwVjY0aDQwMFY0NjR6IE0xNiw0OFYxNmg0NDh2MzJIMTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTYsNDU2aDQ4YzQuNDE4LDAsOC0zLjU4Miw4LThzLTMuNTgyLTgtOC04aC00OGMtNC40MTgsMC04LDMuNTgyLTgsOFMyMTEuNTgyLDQ1NiwyMTYsNDU2eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Gates:rxe,Hairdryer:oxe,Handle:nxe,"Hanging Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTkzLjUyNSAzNTkuNzcxaDEwNy44ODV2NC4xMjlhNTMuMDcyIDUzLjA3MiAwIDEgMCAxMDYuMTQ0IDB2LTQuMTI0aDExMC45MjFhNiA2IDAgMCAwIDYtNmMwLTgyLjAxNS01OC45MTMtMTUwLjUxOC0xMzYuNjQtMTY1LjQ0NHYtMjAuMzE5YTMxLjg4MyAzMS44ODMgMCAwIDAgLTI1LjgzNS0zMS4yNnYtMTIwLjc1M2E2IDYgMCAwIDAgLTEyIDB2MTIwLjc1M2EzMS44ODMgMzEuODgzIDAgMCAwIC0yNS44MzUgMzEuMjZ2MjAuMzE0Yy03Ny43MjcgMTQuOTI2LTEzNi42NCA4My40MjktMTM2LjY0IDE2NS40NDRhNiA2IDAgMCAwIDYgNnptMjAyLjAyOSA0LjEyOWE0MS4wNzIgNDEuMDcyIDAgMSAxIC04Mi4xNDQgMHYtNC4xMjRoODIuMTQ0em0tMzkuNTU0LTIxNS43MjJhMTkuODUxIDE5Ljg1MSAwIDAgMSAxOS4xOCAxNC44NjhoLTM4LjM2YTE5Ljg1MSAxOS44NTEgMCAwIDEgMTkuMTgtMTQuODY4em0tMTkuODM1IDI2Ljg2OGgzOS42N3YxMS40MjRhMTY4LjI4OCAxNjguMjg4IDAgMCAwIC0zOS42NyAwem0xOS44MzUgMjIuMjU0Yzg0LjI3NCAwIDE1My4yIDY2Ljk2IDE1Ni4zNjEgMTUwLjQ3NGgtMzEyLjcyMmMzLjE2MS04My41MTcgNzIuMDg3LTE1MC40NzQgMTU2LjM2MS0xNTAuNDc0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjUwIDQ1NS41MDh2NDAuNDkyYTYgNiAwIDAgMCAxMiAwdi00MC40OTJhNiA2IDAgMCAwIC0xMiAweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzAzLjQyMiA0MzEuNDg4YTYgNiAwIDAgMCAtLjA3NSA4LjQ4NWwyOC4zNDQgMjguODUxYTYgNiAwIDAgMCA4LjU2MS04LjQxbC0yOC4zNDQtMjguODUxYTYgNiAwIDAgMCAtOC40ODYtLjA3NXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMC4wOTIgNDMxLjU2My0yOC4zNDQgMjguODUxYTYgNiAwIDAgMCA4LjU2MSA4LjQxbDI4LjM0NC0yOC44NTFhNiA2IDAgMCAwIC04LjU2MS04LjQxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg2Ljc1IDIzNi44MWExNjguNzMxIDE2OC43MzEgMCAwIDAgLTQ1LjkyNyA0OC4xNDMgNiA2IDAgMSAwIDEwLjE0MSA2LjQxNyAxNTYuNzgxIDE1Ni43ODEgMCAwIDEgNDIuNjc3LTQ0LjczNiA2IDYgMCAwIDAgLTYuODkxLTkuODI0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Heater:axe,Hoods:Mxe,"Hot Water":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMCA1MTAiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5NSAyNDEuOTAyYy0xOC4yMjMgMC0zMy4zNTgtNS45MzctNDUuMDkyLTE3LjYydi0xNDkuMzU0YzAtNDEuMzE1LTMzLjYxMy03NC45MjgtNzQuOTI5LTc0LjkyOHMtNzQuOTI4IDMzLjYxMy03NC45MjggNzQuOTI4djE0OS4zOTVjLTI0LjI1NCAyNC4xMDctNjkuNDc2IDI0LjQxNS05My42NjMtMy44MDMtNS45ODEtNi45NzgtMTYuNzkzLTYuOTgyLTIyLjc3NyAwLTI0LjU4NiAyOC42ODUtNzIuNTM4IDI4Ljc5OC05Ny4yMjMgMC02LjMyMi03LjM3OC0xNy44NjctNi44NjctMjMuNTM3Ljk2My0uMTQ4LjIwNC0xNS42ODggMjAuNDE4LTQ3Ljg1MiAyMC40MTgtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXM2LjcxNiAxNSAxNSAxNWMyOC42MzIgMCA0OC40ODktMTEuMjggNjAuMDI3LTIwLjYyNCAzMy40NDcgMjcuNjE1IDg2LjUxMiAyNy42MjUgMTE5Ljk3My0uMDIyIDMwLjE5MSAyNC45NDQgNzQuMzYyIDI2LjE3OSAxMDUuMDUyIDkuOTU3djQwLjQ3MWMtMjcuOTg0IDIzLjEzMS00My44MTEgNTcuODc4LTQyLjY1OCA5NC40NTMgMS45NzQgNjIuNzI4IDUzLjc0MyAxMTMuODY0IDExNy41ODYgMTEzLjg2NCA2NC44NzEgMCAxMTcuNjQ3LTUyLjc3NiAxMTcuNjQ3LTExNy42NDYgMC0zNS4wNy0xNS44MzctNjguNDA2LTQyLjcxOS05MC42NjZ2LTQwLjQ5N2MxMy4zMjUgNy4wNTIgMjguNTE3IDEwLjcxIDQ1LjA5MiAxMC43MSA4LjI4NCAwIDE1LTYuNzE2IDE1LTE1cy02LjcxNS0xNC45OTktMTQuOTk5LTE0Ljk5OXptLTEyMC4wMi0yMTEuOTAyYzI0Ljc3MyAwIDQ0LjkyOCAyMC4xNTUgNDQuOTI4IDQ0LjkyOHYxNDkuNTM3Yy04LjMxNCA4LjIxMS0xOC4zMjcgMTMuNTUxLTI5LjkyOSAxNS45NTN2LTE0My45NTdjMC04LjI4NC02LjcxNi0xNS0xNS0xNXMtMTUgNi43MTYtMTUgMTV2MTQzLjk0N2MtMTEuNjAzLTIuNDA5LTIxLjYxNS03Ljc1OS0yOS45MjgtMTUuOTgzdi0xNDkuNDk3Yy4wMDEtMjQuNzczIDIwLjE1Ni00NC45MjggNDQuOTI5LTQ0LjkyOHptLS4wMDEgMzQzLjUwNGMxMC41MzIgMCAxOS4xMDEgOC41NjggMTkuMTAxIDE5LjFzLTguNTY4IDE5LjEtMTkuMTAxIDE5LjFjLTEwLjUzMSAwLTE5LjEtOC41NjgtMTkuMS0xOS4xczguNTY5LTE5LjEgMTkuMS0xOS4xem04Ny42NDggMTguODVjMCA0OC4zMjktMzkuMzE4IDg3LjY0Ni04Ny42NDcgODcuNjQ2LTQ2LjgzMSAwLTg2LjEyOS0zOC4wNDQtODcuNjAyLTg0LjgwOC0uOTItMjkuMjE4IDEyLjcwNC01Ni44NzUgMzYuNDQzLTczLjk4MSAzLjkxMi0yLjgxOSA2LjIzLTcuMzQ3IDYuMjMtMTIuMTY5di00Ny43NzRjOS4xNDggNC44MiAxOS4xNzcgOC4wMzMgMjkuOTI4IDkuNTY4djc1LjAyYy0xOS43NTggNi4zNTUtMzQuMSAyNC45MDUtMzQuMSA0Ni43NDggMCAyNy4wNzQgMjIuMDI2IDQ5LjEgNDkuMSA0OS4xczQ5LjEwMS0yMi4wMjYgNDkuMTAxLTQ5LjFjMC0yMS44NDMtMTQuMzQyLTQwLjM5My0zNC4xMDEtNDYuNzQ4di03NS4wMTRjMTAuNzUtMS41MzEgMjAuNzgtNC43MzggMjkuOTI5LTkuNTUydjQ3Ljc1M2MwIDQuODIyIDIuMzE4IDkuMzUxIDYuMjMgMTIuMTY5IDIyLjg0OCAxNi40NjMgMzYuNDg5IDQzLjA1OSAzNi40ODkgNzEuMTQyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTc4LjE5IDMwOC4zMzJjLTI0LjgxMyAwLTQ1IDIwLjE4Ny00NSA0NXMyMC4xODcgNDUgNDUgNDUgNDUtMjAuMTg3IDQ1LTQ1LTIwLjE4Ni00NS00NS00NXptMCA2MGMtOC4yNzEgMC0xNS02LjcyOS0xNS0xNXM2LjcyOS0xNSAxNS0xNSAxNSA2LjcyOSAxNSAxNS02LjcyOCAxNS0xNSAxNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTczLjg1NyAzNzkuMTE3Yy0yNC44MTMgMC00NSAyMC4xODctNDUgNDVzMjAuMTg3IDQ1IDQ1IDQ1IDQ1LTIwLjE4NyA0NS00NS0yMC4xODYtNDUtNDUtNDV6bTAgNjBjLTguMjcxIDAtMTUtNi43MjktMTUtMTVzNi43MjktMTUgMTUtMTUgMTUgNi43MjkgMTUgMTUtNi43MjggMTUtMTUgMTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02NC44NjMgMTU0LjE0M2MtNS44NTggNS44NTgtNS44NTggMTUuMzU1IDAgMjEuMjEzIDUuODU3IDUuODU3IDE1LjM1NSA1Ljg1OCAyMS4yMTMgMCAyMS4wNDYtMjEuMDQ2IDIxLjA0Ni01NS4yOTEgMC03Ni4zMzgtOS4zNzEtOS4zNy05LjM3My0yNC41MzkgMC0zMy45MTEgNS44NTgtNS44NTggNS44NTgtMTUuMzU1IDAtMjEuMjEzLTUuODU3LTUuODU4LTE1LjM1NS01Ljg1Ny0yMS4yMTMgMC0yMS4wOTYgMjEuMDk2LTIxLjA5OCA1NS4yNDEgMCA3Ni4zMzggOS4zNDkgOS4zNDkgOS4zNDkgMjQuNTYxIDAgMzMuOTExeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQyLjI1MSAxNTQuMTQzYy01Ljg1OCA1Ljg1OC01Ljg1OCAxNS4zNTUgMCAyMS4yMTMgNS44NTcgNS44NTggMTUuMzU0IDUuODU4IDIxLjIxMyAwIDIxLjA5Ny0yMS4wOTcgMjEuMDk4LTU1LjI0IDAtNzYuMzM5LTkuMzcxLTkuMzctOS4zNzMtMjQuNTM5IDAtMzMuOTExIDUuODU4LTUuODU4IDUuODU4LTE1LjM1NSAwLTIxLjIxMy01Ljg1Ni01Ljg1OC0xNS4zNTQtNS44NTctMjEuMjEzIDAtMjEuMDk2IDIxLjA5Ni0yMS4wOTggNTUuMjQxIDAgNzYuMzM4IDkuMzcxIDkuMzcxIDkuMzczIDI0LjUzOSAwIDMzLjkxMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxOS42MzkgMTU0LjE0M2MtNS44NTggNS44NTgtNS44NTggMTUuMzU1IDAgMjEuMjEzIDUuODU3IDUuODU4IDE1LjM1NCA1Ljg1OCAyMS4yMTMgMCAyMS4wOTctMjEuMDk3IDIxLjA5OC01NS4yNCAwLTc2LjMzOS05LjM3MS05LjM3LTkuMzczLTI0LjUzOSAwLTMzLjkxMSA1Ljg1OC01Ljg1OCA1Ljg1OC0xNS4zNTUgMC0yMS4yMTMtNS44NTYtNS44NTgtMTUuMzU0LTUuODU3LTIxLjIxMyAwLTIxLjA5NiAyMS4wOTYtMjEuMDk4IDU1LjI0MSAwIDc2LjMzOCA5LjM3IDkuMzcxIDkuMzczIDI0LjUzOSAwIDMzLjkxMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Humidity:cxe,Iron:uxe,Irrigation:lxe,"Led Strip":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0xNiAxOGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2IDI2YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgNDJhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNiA1MGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE2IDU4YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMzRhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMiA2Mmg4YTEgMSAwIDAgMCAxLTF2LTQ5aDZ2NDFhMSAxIDAgMCAwIC4yOTMuNzA3bDggOGExIDEgMCAwIDAgLjcwNy4yOTNoOGExIDEgMCAwIDAgLjcwNy0uMjkzbDgtOGExIDEgMCAwIDAgLjI5My0uNzA3di01MGExIDEgMCAwIDAgLTEtMWgtOGExIDEgMCAwIDAgLTEgMXY0OWgtNnYtNDlhMSAxIDAgMCAwIC0xLTFoLTE2YTEgMSAwIDAgMCAtLjcwNy4yOTNsLTggOGExIDEgMCAwIDAgLS4yOTMuNzA3djUwYTEgMSAwIDAgMCAxIDF6bTMzLTEzdi00NWg2djQ4LjU4NmwtNiA2em0tOCA1aDZ2NmgtNnptLTgtNXYtNDVoNnY1NC41ODZsLTYtNnptLTgtNDVoNnY2aC02em0tOCA1MXYtNDMuNTg2bDYtNnY1NC41ODZoLTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCA1MmEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDQ0YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDggMjhhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00OCAyMGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDEyYTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDggMzZhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMiA1MmEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDQ0YTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMjhhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMiAyMGEzIDMgMCAxIDAgLTMtMyAzIDMgMCAwIDAgMyAzem0wLTRhMSAxIDAgMSAxIC0xIDEgMSAxIDAgMCAxIDEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDEyYTMgMyAwIDEgMCAtMy0zIDMgMyAwIDAgMCAzIDN6bTAtNGExIDEgMCAxIDEgLTEgMSAxIDEgMCAwIDEgMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIgMzZhMyAzIDAgMSAwIC0zLTMgMyAzIDAgMCAwIDMgM3ptMC00YTEgMSAwIDEgMSAtMSAxIDEgMSAwIDAgMSAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMyA2aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM5IDU2aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQgMzFoNXYyaC01eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNiAyNWgydjVoLTJ6IiB0cmFuc2Zvcm09Im1hdHJpeCguNiAtLjggLjggLjYgLTE5LjIgMTYuNikiLz4NCiAgICAgICAgPHBhdGggZD0ibTQuNSAzNS41aDV2MmgtNXoiIHRyYW5zZm9ybT0ibWF0cml4KC44IC0uNiAuNiAuOCAtMjAuNTA1IDExLjUwNSkiLz4NCiAgICAgICAgPHBhdGggZD0ibTU1IDMxaDV2MmgtNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTU0LjUgMjYuNWg1djJoLTV6IiB0cmFuc2Zvcm09Im1hdHJpeCguOCAtLjYgLjYgLjggLTUuMDk4IDM5LjcxMikiLz4NCiAgICAgICAgPHBhdGggZD0ibTU2IDM0aDJ2NWgtMnoiIHRyYW5zZm9ybT0ibWF0cml4KC42IC0uOCAuOCAuNiAtNi40IDYwLjIpIi8+DQogICAgPC9nPg0KPC9zdmc+",Light:Nxe,Lightings:Lxe,Lock:gxe,Louvre:jxe,"Mowing Machine":"PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ3IDU0YzUuNTE0IDAgMTAtNC40ODYgMTAtMTBzLTQuNDg2LTEwLTEwLTEwLTEwIDQuNDg2LTEwIDEwIDQuNDg2IDEwIDEwIDEwem0tNy45MzEtMTFjLjE4My0xLjQ1OC43NTktMi43OTIgMS42MTktMy44OThsMS4zNjIgMS4zNjMgMS40MTQtMS40MTQtMS4zNjItMS4zNjJjMS4xMDYtLjg2IDIuNDQtMS40MzYgMy44OTgtMS42MTl2MS45M2gydi0xLjkzMWMxLjQ1OC4xODMgMi43OTIuNzU5IDMuODk4IDEuNjE5bC0xLjM2MiAxLjM2MiAxLjQxNCAxLjQxNCAxLjM2Mi0xLjM2M2MuODYgMS4xMDYgMS40MzYgMi40NCAxLjYxOSAzLjg5OGgtMS45MzF2MmgxLjkzMWMtLjE4MyAxLjQ1OC0uNzU5IDIuNzkyLTEuNjE5IDMuODk4bC0xLjM2Mi0xLjM2My0xLjQxNCAxLjQxNCAxLjM2MiAxLjM2MmMtMS4xMDYuODYtMi40NCAxLjQzNi0zLjg5OCAxLjYxOXYtMS45MjloLTJ2MS45MzFjLTEuNDU4LS4xODMtMi43OTItLjc1OS0zLjg5OC0xLjYxOWwxLjM2Mi0xLjM2Mi0xLjQxNC0xLjQxNC0xLjM2MiAxLjM2M2MtLjg2LTEuMTA2LTEuNDM2LTIuNDQtMS42MTktMy44OThoMS45MzF2LTJoLTEuOTMxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMjFoLTI0Ljk4Yy0xLjUxMSAwLTIuOTg0LjQyNi00LjI2MiAxLjIyOWwtMjIuMDIxIDEzLjg2NmMtMi4zNCAxLjQ3My0zLjczNyA0LjAwNS0zLjczNyA2Ljc2OXY2LjEzNmMwIC41NTMuNDQ4IDEgMSAxaDMzLjA4OGMuMzQxIDAgLjY1OC0uMTc0Ljg0Mi0uNDYuMTg0LS4yODcuMjA5LS42NDcuMDY3LS45NTctLjc1LTEuNjM1LTEuMDgtMy4zODctLjk3OS01LjIwOC4zMDktNS41OTEgNC45MzYtMTAuMTQ1IDEwLjUzNS0xMC4zNjYgMy4wMjgtLjExNiA1Ljg5Mi45NjcgOC4wNjkgMy4wNiAyLjE3OCAyLjA5MyAzLjM3OCA0LjkxIDMuMzc4IDcuOTMxIDAgLjU1My40NDggMSAxIDFoM2MuNTUyIDAgMS0uNDQ3IDEtMXYtMTdjMC0zLjMwOS0yLjY5MS02LTYtNnptLTI4LjE3NyAyLjkyM2MuOTU5LS42MDQgMi4wNjQtLjkyMyAzLjE5Ny0uOTIzaDEwLjM3bC04LjM5MSA1LjAzNXYtLjAzNWgtMTEuNjUxem0tMjIuMDIgMTMuODY0IDEyLjM2OC03Ljc4N2gxMS41NTJsLTE4LjIzMyAxMC45NGMtMS4xNTcuNjk0LTIuNDggMS4wNi0zLjgyNyAxLjA2aC00LjU5NmMuMjQ4LTEuNzI4IDEuMjI5LTMuMjYzIDIuNzM2LTQuMjEzem01NC4xOTcgNS4yMTNoLTEuMDM4Yy0uMjM5LTMuMTg4LTEuNjIzLTYuMTMyLTMuOTU1LTguMzc0LTIuNTczLTIuNDczLTUuOTYzLTMuNzUtOS41MzQtMy42MTUtNi4xOS4yNDUtMTEuMzc0IDQuOTctMTIuMzE3IDEwLjk4OWgtMTcuMTU2djJoMTcuMDEzYy4wMDIgMS4zNjEuMjAyIDIuNzE1LjYxNSA0aC0zMC42Mjh2LTRoNC42NjNjMS43MDkgMCAzLjM4OS0uNDY1IDQuODU2LTEuMzQ1bDMyLjc1OC0xOS42NTVoMTAuNzIzYzIuMjA2IDAgNCAxLjc5NCA0IDR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA0OGMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMC02YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMi0yLS44OTctMi0yIC44OTctMiAyLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02LjY1MSAxNS42MzVjLTEuNzU3IDIuMTI1LTEuNDU4IDUuMjgyLjY2NyA3LjA0bDQuNjI0IDMuODIzYy4xODcuMTU0LjQxMi4yMjkuNjM3LjIyOS4yODggMCAuNTczLS4xMjQuNzcxLS4zNjIgMS43NTctMi4xMjUgMS40NTgtNS4yODItLjY2Ny03LjA0bC00LjYyNC0zLjgyM2MtLjQyNi0uMzUyLTEuMDU2LS4yOTItMS40MDguMTMzem01LjY2MiA4LjU3Ni0zLjcyMS0zLjA3N2MtMS4wMDQtLjgzMS0xLjMyOS0yLjE4NS0uOTA1LTMuMzQ1bDMuNzIxIDMuMDc3YzEuMDA1LjgzMSAxLjMyOSAyLjE4NS45MDUgMy4zNDV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMS40NDUgOS4yMjktNC42MjQgMy44MjNjLTIuMTI1IDEuNzU4LTIuNDI0IDQuOTE2LS42NjcgNy4wNC4xOTguMjM5LjQ4My4zNjIuNzcxLjM2Mi4yMjUgMCAuNDUtLjA3NS42MzctLjIyOWw0LjYyNC0zLjgyM2MyLjEyNS0xLjc1NyAyLjQyNC00LjkxNS42NjctNy4wNC0uMzUyLS40MjQtLjk4My0uNDg0LTEuNDA4LS4xMzN6bS0uNTMzIDUuNjMyLTMuNzIyIDMuMDc4Yy0uMTUyLS40MTUtLjIxMS0uODYzLS4xNjgtMS4zMTYuMDc2LS43OTguNDU4LTEuNTE5IDEuMDc1LTIuMDI5bDMuNzIxLTMuMDc3Yy40MjMgMS4xNi4wOTkgMi41MTMtLjkwNiAzLjM0NHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Music:yxe,"Outdoor Blinds":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ1NyAwaC00MDJjLTMwLjMyNyAwLTU1IDI0LjY3My01NSA1NXY0NTdoNDMydi00MDguMDM1YzcuNTA3IDMuODQ4IDE2IDYuMDM1IDI1IDYuMDM1IDMwLjMyNyAwIDU1LTI0LjY3MyA1NS01NXMtMjQuNjczLTU1LTU1LTU1em0tNDAyIDMwaDM1My4wMzVjLTMuODQ4IDcuNTA3LTYuMDM1IDE2LTYuMDM1IDI1djdoLTM3MnYtN2MwLTEzLjc4NSAxMS4yMTUtMjUgMjUtMjV6bS0yNSAyNzJ2LTMwaDM3MnYzMHptMzcyIDMwdjMwaC0zNzJ2LTMwem0tMzcyLTkwdi0zMGgzNzJ2MzB6bTAtNjB2LTMwaDM3MnYzMHptMC02MHYtMzBoMzcydjMwem0wIDM2MHYtOTBoMzcydjkwem00MjctNDAyYy0xMy43ODUgMC0yNS0xMS4yMTUtMjUtMjVzMTEuMjE1LTI1IDI1LTI1IDI1IDExLjIxNSAyNSAyNS0xMS4yMTUgMjUtMjUgMjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02MCA0MjJoMzB2MzBoLTMweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQyIDQyMmgzMHYzMGgtMzB6Ii8+DQogICAgPC9nPg0KPC9zdmc+",People:Txe,Pool:Dxe,"Power Consumption":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0xMiAzYy0uMjc2IDAtLjUtLjIyNC0uNS0uNXYtMmMwLS4yNzYuMjI0LS41LjUtLjVzLjUuMjI0LjUuNXYyYzAgLjI3Ni0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4LjcxOCA1Ljc4MmMtLjEyOCAwLS4yNTYtLjA0OS0uMzU0LS4xNDYtLjE5NS0uMTk1LS4xOTUtLjUxMiAwLS43MDdsMS40MTQtMS40MTRjLjE5NS0uMTk1LjUxMi0uMTk1LjcwNyAwcy4xOTUuNTEyIDAgLjcwN2wtMS40MTQgMS40MTRjLS4wOTcuMDk3LS4yMjUuMTQ2LS4zNTMuMTQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjMuNSAxMi41aC0yYy0uMjc2IDAtLjUtLjIyNC0uNS0uNXMuMjI0LS41LjUtLjVoMmMuMjc2IDAgLjUuMjI0LjUuNXMtLjIyNC41LS41LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMC4xMzIgMjAuNjMyYy0uMTI4IDAtLjI1Ni0uMDQ5LS4zNTQtLjE0NmwtMS40MTQtMS40MTRjLS4xOTUtLjE5NS0uMTk1LS41MTIgMC0uNzA3cy41MTItLjE5NS43MDcgMGwxLjQxNCAxLjQxNGMuMTk1LjE5NS4xOTUuNTEyIDAgLjcwNy0uMDk3LjA5Ny0uMjI1LjE0Ni0uMzUzLjE0NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEyIDI0Yy0uMjc2IDAtLjUtLjIyNC0uNS0uNXYtMmMwLS4yNzYuMjI0LS41LjUtLjVzLjUuMjI0LjUuNXYyYzAgLjI3Ni0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMuODY4IDIwLjYzMmMtLjEyOCAwLS4yNTYtLjA0OS0uMzU0LS4xNDYtLjE5NS0uMTk1LS4xOTUtLjUxMiAwLS43MDdsMS40MTQtMS40MTRjLjE5NS0uMTk1LjUxMi0uMTk1LjcwNyAwcy4xOTUuNTEyIDAgLjcwN2wtMS40MTQgMS40MTRjLS4wOTcuMDk3LS4yMjUuMTQ2LS4zNTMuMTQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMi41IDEyLjVoLTJjLS4yNzYgMC0uNS0uMjI0LS41LS41cy4yMjQtLjUuNS0uNWgyYy4yNzYgMCAuNS4yMjQuNS41cy0uMjI0LjUtLjUuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUuMjgyIDUuNzgyYy0uMTI4IDAtLjI1Ni0uMDQ5LS4zNTQtLjE0NmwtMS40MTMtMS40MTRjLS4xOTUtLjE5NS0uMTk1LS41MTIgMC0uNzA3cy41MTItLjE5NS43MDcgMGwxLjQxNCAxLjQxNGMuMTk1LjE5NS4xOTUuNTEyIDAgLjcwNy0uMDk4LjA5Ny0uMjI2LjE0Ni0uMzU0LjE0NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwLjU3MyAyMGMtLjA1OSAwLS4xMTctLjAxLS4xNzUtLjAzMS0uMjE5LS4wODItLjM1Mi0uMzA0LS4zMjEtLjUzNGwuODUzLTYuNDM1aC0zLjQzYy0uMTg5IDAtLjM2Mi0uMTA3LS40NDctLjI3NnMtLjA2Ny0uMzcyLjA0Ny0uNTI0bDYtOGMuMTM5LS4xODYuMzg2LS4yNTIuNTk3LS4xNi4yMTIuMDkxLjMzNS4zMTQuMjk3LjU0MmwtLjkwNCA1LjQxOGgzLjQxYy4xODQgMCAuMzUzLjEwMS40NC4yNjNzLjA3OC4zNTgtLjAyMi41MTNsLTUuOTI3IDljLS4wOTUuMTQzLS4yNTQuMjI0LS40MTguMjI0em0tMi4wNzMtOGgzYy4xNDUgMCAuMjgxLjA2My4zNzYuMTcxLjA5NS4xMDcuMTM5LjI1Mi4xMi4zOTVsLS42NDEgNC44MzggNC4yMTctNi40MDRoLTMuMDcyYy0uMTQ3IDAtLjI4Ni0uMDY0LS4zODItLjE3Ny0uMDk1LS4xMTItLjEzNi0uMjYxLS4xMTEtLjQwNWwuNjYzLTMuOTc4eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Printer:dxe,Pump:hxe,Receiver:zxe,Sconces:wxe,Security:Ixe,Shading:Cxe,Shutters:pxe,SmokeDetector:Axe,Sockets:mxe,Speaker:fxe,Stove:Oxe,"Table Lamps":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTk3LjUgMjIwLjM2MS0xNS45MTQgMTUuOTE0YTYgNiAwIDEgMCA4LjQ4NCA4LjQ4NmwxNS45MTUtMTUuOTE1YTYgNiAwIDEgMCAtOC40ODQtOC40ODV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05NS41MSAxMTdhNiA2IDAgMCAwIDQuMjQzLTEwLjI0MmwtMTUuOTE0LTE1LjkxNWE2IDYgMCAwIDAgLTguNDg2IDguNDg2bDE1LjkxNCAxNS45MTRhNS45NzggNS45NzggMCAwIDAgNC4yNDMgMS43NTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzUuNSAyNDIuNTA4LTE1LjkxLTE1LjkxNGE2IDYgMCAwIDAgLTguNDg2IDguNDg1bDE1LjkxNCAxNS45MTVhNiA2IDAgMCAwIDguNDg2LTguNDg2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtODYuODI2IDE3MWE2IDYgMCAwIDAgLTYtNmgtMjQuODM3YTYgNiAwIDAgMCAwIDEyaDI0LjgzN2E2IDYgMCAwIDAgNi02eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTU1IDIzOS41MjFhNiA2IDAgMCAwIC02IDZ2MjQuODM2YTYgNiAwIDAgMCAxMiAwdi0yNC44MzZhNiA2IDAgMCAwIC02LTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MzguODUyIDQ1MS45NjlhNDEuODM3IDQxLjgzNyAwIDAgMCAtNDEuMTY2LTM1Ljk2OWgtMjguNjg2di0zMjYuNjg0YTY5LjMwOSA2OS4zMDkgMCAwIDAgLTEyMS43LTQ1LjM4MiA1Ni4wMjIgNTYuMDIyIDAgMCAwIC00OC43MDkgNi4zNDlsLTgxLjUxOSA1NC4wNjhhNiA2IDAgMCAwIC0uOTI1IDkuMjQybDIzLjQyMiAyMy40MjMtMS40NDIgMS40NDJhMzUuMTg4IDM1LjE4OCAwIDAgMCA0OS43NjMgNDkuNzYzbDEuNDQyLTEuNDQyIDIzLjQyMiAyMy40MjFhNiA2IDAgMCAwIDQuMjQ2IDEuNzU5Yy4yIDAgLjQtLjAxLjYtLjAzYTYgNiAwIDAgMCA0LjQtMi42NTRsNTQuMDY3LTgxLjUxOWE1Ni4wODggNTYuMDg4IDAgMCAwIDMuNDg4LTU1LjY1NiAyNi4zODYgMjYuMzg2IDAgMCAxIDQ2LjQ0NSAxNy4yMTZ2MzI2LjY4NGgtMjkuMTgyYTQyIDQyIDAgMCAwIC00MS4zNDMgMzYuMDc2IDI2LjQgMjYuNCAwIDAgMCAtMjIuNDc1IDI1Ljk1NnY3Ljk2OGE2LjI4MiA2LjI4MiAwIDAgMCA2LjMxOSA2aDIxNi42OTJhNS45OTIgNS45OTIgMCAwIDAgNS45ODktNnYtNy45NjhhMjYuMjQ3IDI2LjI0NyAwIDAgMCAtMjMuMTQ4LTI2LjA2M3ptLTI1OS40NTItMjcyLjIzNGEyMy4xODggMjMuMTg4IDAgMCAxIC0zMi43OTMtMzIuNzkybDEuNDQzLTEuNDQzIDMyLjc5MyAzMi43OTN6bTM2LjY0OCAxNi43OTQtODYuMjMtODYuMjI5IDE4LjA5My0xMiA4MC4xNCA4MC4xNHptNTAuMDEyLTc1LjQtMzEuMjQ2IDQ3LjExLTc2LjctNzYuNzA1IDQ3LjExLTMxLjI0NmE0My44OTQgNDMuODk0IDAgMCAxIDYwLjg0IDYwLjg0MXptMzMuNTI4LTcwLjI3MmEzOC4yNTIgMzguMjUyIDAgMCAwIC0yNi42ODggMTAuODIzIDU0LjYyIDU0LjYyIDAgMCAwIC0xNC4xODYtMTIuNDM1IDU3LjMxIDU3LjMxIDAgMCAxIDk4LjI4NiA0MC4wNzF2MzI2LjY4NGgtMTl2LTMyNi42ODRhMzguNDYxIDM4LjQ2MSAwIDAgMCAtMzguNDA5LTM4LjQ2NHptLTIuNzcgMzc3LjE0M2gxMDAuODY4YzE0LjI1OSAwIDI2LjE5NSAxMSAyOC45NzYgMjRoLTE1OC44MTljMi43ODEtMTMgMTQuNzE2LTI0IDI4Ljk3NS0yNHptMTUzLjE4MiA1MmgtMjA1di0xLjk2OGExNC4zMiAxNC4zMiAwIDAgMSAxNC4zMTktMTQuMDMyaDE3Ni42OTJhMTQuMDM0IDE0LjAzNCAwIDAgMSAxMy45ODkgMTQuMDMyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzA1IDM4MS4wMzFhNiA2IDAgMCAwIDEyIDB2LTc1LjgwNmE2IDYgMCAwIDAgLTEyIDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMTEgMjkwLjg0NGE2IDYgMCAwIDAgNi02di00LjgzNGE2IDYgMCAwIDAgLTEyIDB2NC44MzRhNiA2IDAgMCAwIDYgNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Temperature Sensors":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNMzUyLDM4NS40MDZWNTMuMzMzQzM1MiwyMy45MjcsMzI4LjA3MywwLDI5OC42NjcsMHMtNTMuMzMzLDIzLjkyNy01My4zMzMsNTMuMzMzdjMzMi4wNzMNCgkJCQlDMjMxLjcxOSwzOTkuMzY1LDIyNCw0MTguMDMxLDIyNCw0MzcuMzMzQzIyNCw0NzguNSwyNTcuNSw1MTIsMjk4LjY2Nyw1MTJjNDEuMTY3LDAsNzQuNjY3LTMzLjUsNzQuNjY3LTc0LjY2Nw0KCQkJCUMzNzMuMzMzLDQxOC4wMzEsMzY1LjYxNSwzOTkuMzY1LDM1MiwzODUuNDA2eiBNMjk4LjY2Nyw0OTAuNjY3Yy0yOS40MDYsMC01My4zMzMtMjMuOTI3LTUzLjMzMy01My4zMzMNCgkJCQljMC0xNS4xMDQsNi4zMjMtMjkuMTI1LDE3LjgxMy0zOS40NjljMi4yNC0yLjAzMSwzLjUyMS00LjkwNiwzLjUyMS03LjkyN1Y1My4zMzNjMC0xNy42NDYsMTQuMzU0LTMyLDMyLTMyDQoJCQkJYzE3LjY0NiwwLDMyLDE0LjM1NCwzMiwzMnYzMzYuNjA0YzAsMy4wMjEsMS4yODEsNS44OTYsMy41MjEsNy45MjdDMzQ1LjY3Nyw0MDguMjA4LDM1Miw0MjIuMjI5LDM1Miw0MzcuMzMzDQoJCQkJQzM1Miw0NjYuNzQsMzI4LjA3Myw0OTAuNjY3LDI5OC42NjcsNDkwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwOS4zMzMsNDA3LjI5OFYyMjRjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N2MtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N3YxODMuMjk4DQoJCQkJYy0xMi4zODksNC40MTgtMjEuMzMzLDE2LjE0Ny0yMS4zMzMsMzAuMDM1YzAsMTcuNjQ2LDE0LjM1NCwzMiwzMiwzMmMxNy42NDYsMCwzMi0xNC4zNTQsMzItMzINCgkJCQlDMzMwLjY2Nyw0MjMuNDQ1LDMyMS43MjMsNDExLjcxNiwzMDkuMzMzLDQwNy4yOTh6IE0yOTguNjY3LDQ0OGMtNS44ODUsMC0xMC42NjctNC43ODEtMTAuNjY3LTEwLjY2Nw0KCQkJCWMwLTUuODg1LDQuNzgxLTEwLjY2NywxMC42NjctMTAuNjY3YzUuODg1LDAsMTAuNjY3LDQuNzgxLDEwLjY2NywxMC42NjdDMzA5LjMzMyw0NDMuMjE5LDMwNC41NTIsNDQ4LDI5OC42NjcsNDQ4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEzLjMzMywzNDEuMzMzaC02NGMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N2MwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3aDY0DQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDM0Ni4xMDQsMjE5LjIyOSwzNDEuMzMzLDIxMy4zMzMsMzQxLjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMy4zMzMsMjk4LjY2N0gxOTJjLTUuODk2LDAtMTAuNjY3LDQuNzcxLTEwLjY2NywxMC42NjdjMCw1Ljg5Niw0Ljc3MSwxMC42NjcsMTAuNjY3LDEwLjY2N2gyMS4zMzMNCgkJCQljNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N0MyMjQsMzAzLjQzOCwyMTkuMjI5LDI5OC42NjcsMjEzLjMzMywyOTguNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEzLjMzMywyNTZIMTkyYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3YzAsNS44OTYsNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdoMjEuMzMzDQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDI2MC43NzEsMjE5LjIyOSwyNTYsMjEzLjMzMywyNTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzMzLDIzNC42NjdoNjRjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N3MtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdoLTY0DQoJCQkJYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzE0My40MzgsMjM0LjY2NywxNDkuMzMzLDIzNC42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNDkuMzMzLDEwNi42NjdoNjRjNS44OTYsMCwxMC42NjctNC43NzEsMTAuNjY3LTEwLjY2N3MtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42NjdoLTY0DQoJCQkJYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3UzE0My40MzgsMTA2LjY2NywxNDkuMzMzLDEwNi42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTMuMzMzLDE3MC42NjdIMTkyYy01Ljg5NiwwLTEwLjY2Nyw0Ljc3MS0xMC42NjcsMTAuNjY3YzAsNS44OTYsNC43NzEsMTAuNjY3LDEwLjY2NywxMC42NjdoMjEuMzMzDQoJCQkJYzUuODk2LDAsMTAuNjY3LTQuNzcxLDEwLjY2Ny0xMC42NjdDMjI0LDE3NS40MzgsMjE5LjIyOSwxNzAuNjY3LDIxMy4zMzMsMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTIxMy4zMzMsMTI4SDE5MmMtNS44OTYsMC0xMC42NjcsNC43NzEtMTAuNjY3LDEwLjY2N2MwLDUuODk2LDQuNzcxLDEwLjY2NywxMC42NjcsMTAuNjY3aDIxLjMzMw0KCQkJCWM1Ljg5NiwwLDEwLjY2Ny00Ljc3MSwxMC42NjctMTAuNjY3QzIyNCwxMzIuNzcxLDIxOS4yMjksMTI4LDIxMy4zMzMsMTI4eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Tv:Exe,"Vacuum Cleaner":"PHN2ZyB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNDQwIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04LS4wMjczNDQtMjIuMDgyMDMxLTE3LjkxNzk2OS0zOS45NzI2NTYtNDAtNDAtNC40MTc5NjkgMC04LTMuNTgyMDMxLTgtOHMzLjU4MjAzMS04IDgtOGMzMC45MTQwNjIuMDM1MTU2IDU1Ljk2NDg0NCAyNS4wODU5MzggNTYgNTYgMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MDggOTZjLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzLTMuNTgyMDMxLTgtOC04LTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04YzEzLjI1MzkwNiAwIDI0IDEwLjc0NjA5NCAyNCAyNCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ3MiA5NmMtNC40MTc5NjkgMC04LTMuNTgyMDMxLTgtOC0uMDQ2ODc1LTM5Ljc0NjA5NC0zMi4yNTM5MDYtNzEuOTUzMTI1LTcyLTcyLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzMy41ODIwMzEtOCA4LThjNDguNTc4MTI1LjA1ODU5MzggODcuOTQxNDA2IDM5LjQyMTg3NSA4OCA4OCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IC4wMzUxNTYtMzAuOTE0MDYyIDI1LjA4NTkzOC01NS45NjQ4NDQgNTYtNTYgNC40MTc5NjkgMCA4IDMuNTgyMDMxIDggOHMtMy41ODIwMzEgOC04IDhjLTIyLjA4MjAzMS4wMjczNDQtMzkuOTcyNjU2IDE3LjkxNzk2OS00MCA0MCAwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTcyIDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IDAtMTMuMjUzOTA2IDEwLjc0NjA5NC0yNCAyNC0yNCA0LjQxNzk2OSAwIDggMy41ODIwMzEgOCA4cy0zLjU4MjAzMSA4LTggOC04IDMuNTgyMDMxLTggOC0zLjU4MjAzMSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04IDk2Yy00LjQxNzk2OSAwLTgtMy41ODIwMzEtOC04IC4wNTg1OTM4LTQ4LjU3ODEyNSAzOS40MjE4NzUtODcuOTQxNDA2MiA4OC04OCA0LjQxNzk2OSAwIDggMy41ODIwMzEgOCA4cy0zLjU4MjAzMSA4LTggOGMtMzkuNzQ2MDk0LjA0Njg3NS03MS45NTMxMjUgMzIuMjUzOTA2LTcyIDcyIDAgNC40MTc5NjktMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQwIDQxNmMyNi41MDc4MTIgMCA0OC0yMS40OTIxODggNDgtNDhzLTIxLjQ5MjE4OC00OC00OC00OC00OCAyMS40OTIxODgtNDggNDhjLjAyNzM0NCAyNi41IDIxLjUgNDcuOTcyNjU2IDQ4IDQ4em0wLTgwYzE3LjY3MTg3NSAwIDMyIDE0LjMyODEyNSAzMiAzMnMtMTQuMzI4MTI1IDMyLTMyIDMyLTMyLTE0LjMyODEyNS0zMi0zMiAxNC4zMjgxMjUtMzIgMzItMzJ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQwIDE4NGMxMy4yNTM5MDYgMCAyNC0xMC43NDYwOTQgMjQtMjRzLTEwLjc0NjA5NC0yNC0yNC0yNC0yNCAxMC43NDYwOTQtMjQgMjQgMTAuNzQ2MDk0IDI0IDI0IDI0em0wLTMyYzQuNDE3OTY5IDAgOCAzLjU4MjAzMSA4IDhzLTMuNTgyMDMxIDgtOCA4LTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxNy45NDUzMTIgMTUydi4wNDY4NzVoLjA1NDY4OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTIgMTUyaDQ4djE2aC00OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yODAgMTUyaDQ4djE2aC00OHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNDAgNDhjLTEwMS4yNjU2MjUtLjAxMTcxOS0xODguOTQ1MzEyIDcwLjMzMjAzMS0yMTAuODkwNjI1IDE2OS4xODc1LTIxLjk0NTMxMyA5OC44NTkzNzUgMjcuNzM0Mzc1IDE5OS42OTE0MDYgMTE5LjQ5MjE4NyAyNDIuNTMxMjUgNTcuOTI1NzgyIDI3LjAzNTE1NiAxMjQuODUxNTYzIDI3LjAzNTE1NiAxODIuNzgxMjUgMCA5MS43NTc4MTMtNDIuODM1OTM4IDE0MS40MzM1OTQtMTQzLjY2NDA2MiAxMTkuNDkyMTg4LTI0Mi41MjM0MzgtMjEuOTQxNDA2LTk4Ljg1NTQ2OC0xMDkuNjEzMjgxLTE2OS4xOTkyMTgtMjEwLjg3NS0xNjkuMTk1MzEyem0wIDE2YzEwNy4yODUxNTYuMTMyODEyIDE5NS4zOTg0MzggODQuODA0Njg4IDE5OS44MDA3ODEgMTkyaC0xNmMtNC41ODIwMzEtOTguMTc5Njg4LTg1LjUxNTYyNS0xNzUuNDIxODc1LTE4My44MDA3ODEtMTc1LjQyMTg3NXMtMTc5LjIxODc1IDc3LjI0MjE4Ny0xODMuODAwNzgxIDE3NS40MjE4NzVoLTE2YzQuNDAyMzQzLTEwNy4xOTUzMTIgOTIuNTE1NjI1LTE5MS44NjcxODggMTk5LjgwMDc4MS0xOTJ6bTI5LjExMzI4MSAyNDUuNDk2MDk0YzMwLjY4MzU5NCAxMS45ODgyODEgNTAuODgyODEzIDQxLjU1ODU5NCA1MC44ODY3MTkgNzQuNTAzOTA2djI3LjY0MDYyNWMtNDkuODc4OTA2IDI3LjE0NDUzMS0xMTAuMTIxMDk0IDI3LjE0NDUzMS0xNjAgMHYtMjcuNjQwNjI1Yy4wMDM5MDYtMjYuNDI5Njg4IDEzLjA2MjUtNTEuMTUyMzQ0IDM0Ljg4NjcxOS02Ni4wNTQ2ODggMjEuODI4MTI1LTE0LjkwNjI1IDQ5LjYwOTM3NS0xOC4wNjY0MDYgNzQuMjI2NTYyLTguNDQ5MjE4em02Ni44ODY3MTkgNzQuNTAzOTA2YzAtNTMuMDE5NTMxLTQyLjk4MDQ2OS05Ni05Ni05NnMtOTYgNDIuOTgwNDY5LTk2IDk2djE3LjczNDM3NWMtMzguODYzMjgxLTI2Ljk4MDQ2OS02NC41MDc4MTItNjkuMTMyODEzLTcwLjYwMTU2Mi0xMTYuMDQ2ODc1LTYuMDk3NjU3LTQ2LjkxNzk2OSA3LjkyNTc4MS05NC4yMjI2NTYgMzguNjAxNTYyLTEzMC4yMzgyODF2MzYuNTUwNzgxYy4wMjczNDQgMjIuMDgyMDMxIDE3LjkxNzk2OSAzOS45NzI2NTYgNDAgNDBoMTc2YzIyLjA4MjAzMS0uMDI3MzQ0IDM5Ljk3MjY1Ni0xNy45MTc5NjkgNDAtNDB2LTM2LjU1MDc4MWMzMC42NzU3ODEgMzYuMDE1NjI1IDQ0LjY5OTIxOSA4My4zMjAzMTIgMzguNjAxNTYyIDEzMC4yMzgyODEtNi4wOTM3NSA0Ni45MTQwNjItMzEuNzM4MjgxIDg5LjA2NjQwNi03MC42MDE1NjIgMTE2LjA0Njg3NXptLTIwOC0yNDQuODYzMjgxYzYzLjU4OTg0NC01Ny41MTU2MjUgMTYwLjQxMDE1Ni01Ny41MTU2MjUgMjI0IDB2NTIuODYzMjgxYzAgMTMuMjUzOTA2LTEwLjc0NjA5NCAyNC0yNCAyNGgtMTc2Yy0xMy4yNTM5MDYgMC0yNC0xMC43NDYwOTQtMjQtMjR6bS04Ny43MTA5MzggMTMyLjg2MzI4MWgxNmMyLjgzNTkzOCA2MS4wMzkwNjIgMzUuNjcxODc2IDExNi43MjI2NTYgODcuNzEwOTM4IDE0OC43NTM5MDZ2MTguNjQ0NTMyYy02MS40Mzc1LTMzLjg1MTU2My0xMDAuNzUzOTA2LTk3LjMxMjUtMTAzLjcxMDkzOC0xNjcuMzk4NDM4em0xMTkuNzEwOTM4IDE3NS4yNDYwOTR2LTE3LjY0NDUzMmM1MC41MDM5MDYgMjQuNTYyNSAxMDkuNDk2MDk0IDI0LjU2MjUgMTYwIDB2MTcuNjcxODc2Yy01MC45OTYwOTQgMjIuMzM1OTM3LTEwOS4wMDM5MDYgMjIuMzM1OTM3LTE2MCAwem0xNzYtNy44NDc2NTZ2LTE4LjY0NDUzMmM1Mi4wNDI5NjktMzIuMDI3MzQ0IDg0Ljg4NjcxOS04Ny43MTA5MzcgODcuNzI2NTYyLTE0OC43NTM5MDZoMTZjLTIuOTYwOTM3IDcwLjA4OTg0NC00Mi4yODUxNTYgMTMzLjU1MDc4MS0xMDMuNzI2NTYyIDE2Ny4zOTg0Mzh6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Ventilation:_xe,"Washing Machines":"PHN2ZyBoZWlnaHQ9IjQ5NnB0IiB2aWV3Qm94PSIwIDAgNDk2IDQ5NiIgd2lkdGg9IjQ5NnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00ODggMGgtNDAwYy00LjQyNTc4MSAwLTggMy41ODU5MzgtOCA4djI5Ni44MzIwMzFjLTIuNjAxNTYyLS41MjczNDMtNS4yNzM0MzgtLjgzMjAzMS04LS44MzIwMzEtMjIuMDU0Njg4IDAtNDAgMTcuOTQ1MzEyLTQwIDQwdi4xNjc5NjljLTcuODI0MjE5IDUuODg2NzE5LTEzLjE1MjM0NCAxNC4zOTg0MzctMTUuMTIxMDk0IDIzLjgzMjAzMWgtOC44Nzg5MDZjLTQuNDI1NzgxIDAtOCAzLjU4NTkzOC04IDh2MzJjMCA0LjQxNDA2MiAzLjU3NDIxOSA4IDggOGg4djI0YzAgMzAuODc4OTA2IDI1LjEyODkwNiA1NiA1NiA1Nmg0MTZjNC40MjU3ODEgMCA4LTMuNTg1OTM4IDgtOHYtNDgwYzAtNC40MTQwNjItMy41NzQyMTktOC04LTh6bS04IDE2djgwaC0zODR2LTgwem0tNDM1LjY1NjI1IDMzOS4xNzU3ODFjMi44Mzk4NDQtMS42MDE1NjIgNC40MzM1OTQtNC43NjE3MTkgNC4wMTU2MjUtOGwtLjEyODkwNi0uOTI5Njg3Yy0uMTAxNTYzLS43MzQzNzUtLjIzMDQ2OS0xLjQ2ODc1LS4yMzA0NjktMi4yNDYwOTQgMC0xMy4yMzA0NjkgMTAuNzY5NTMxLTI0IDI0LTI0IDguNDQ5MjE5IDAgMTYuMTIxMDk0IDQuNDA2MjUgMjAuNTI3MzQ0IDExLjgwMDc4MSAxLjE5OTIxOCAyLjAxNTYyNSAzLjIzNDM3NSAzLjQwNjI1IDUuNTUwNzgxIDMuNzkyOTY5IDIuMzI4MTI1LjM5ODQzOCA0LjY5OTIxOS0uMjY1NjI1IDYuNDk2MDk0LTEuNzkyOTY5IDMuMTIxMDkzLTIuNjQ4NDM3IDguMzIwMzEyLTUuODAwNzgxIDE1LjQyNTc4MS01LjgwMDc4MSA4LjU1ODU5NCAwIDE2LjUzNTE1NiA0LjcyNjU2MiAyMC44MTY0MDYgMTIuMzM1OTM4IDEuNjY0MDYzIDIuOTc2NTYyIDUuMDU0Njg4IDQuNTU4NTkzIDguMzgyODEzIDMuOTYwOTM3IDguMzUxNTYyLTEuNDg4MjgxIDE2LjkwNjI1IDQuMjQ2MDk0IDE4LjQ5NjA5MyAxMi43NDIxODcuNTcwMzEzIDMuMDM5MDYzIDIuODM5ODQ0IDUuNDg4MjgyIDUuODM5ODQ0IDYuMjczNDM4IDMuMDE1NjI1LjgwMDc4MSA2LjE2Nzk2OS0uMjM0Mzc1IDguMTY3OTY5LTIuNjA5Mzc1IDQuNjE3MTg3LTUuNTI3MzQ0IDExLjI4OTA2My04LjcwMzEyNSAxOC4yOTY4NzUtOC43MDMxMjUgMTAuNDE0MDYyIDAgMTkuMjE0ODQ0IDYuNzEwOTM4IDIyLjUyNzM0NCAxNmgtMTg4LjkyNTc4MmMxLjk0MTQwNy01LjI5Njg3NSA1LjYwNTQ2OS05LjkzNzUgMTAuNzQyMTg4LTEyLjgyNDIxOXptMTA3LjY1NjI1LTc1LjE3NTc4MWMwLTc0Ljk5MjE4OCA2MS4wMDc4MTItMTM2IDEzNi0xMzZzMTM2IDYxLjAwNzgxMiAxMzYgMTM2LTYxLjAwNzgxMiAxMzYtMTM2IDEzNmMtMTEuMjg5MDYyIDAtMjIuMzI4MTI1LTEuNTE5NTMxLTMzLjA3ODEyNS00LjIxNDg0NC42Mjg5MDYtMS4xNDQ1MzEgMS4wNzgxMjUtMi4zOTQ1MzEgMS4wNzgxMjUtMy43ODUxNTZ2LTEyLjMzNTkzOGMxMC4zNjcxODggMi44NjMyODIgMjEuMDc4MTI1IDQuMzM1OTM4IDMyIDQuMzM1OTM4IDY2LjE2Nzk2OSAwIDEyMC01My44MzIwMzEgMTIwLTEyMHMtNTMuODMyMDMxLTEyMC0xMjAtMTIwLTEyMCA1My44MzIwMzEtMTIwIDEyMGMwIDIxLjA4OTg0NCA1LjQ4MDQ2OSA0MS40MzM1OTQgMTUuODI0MjE5IDU5LjUwMzkwNi0xLjc5Mjk2OS44MDg1OTQtMy41MzUxNTcgMS43MjY1NjMtNS4xOTE0MDcgMi44MDA3ODItNC4wNTg1OTMtNi4xMTMyODItMTAuMTUyMzQzLTEwLjYzMjgxMy0xNy4yMDcwMzEtMTIuODI0MjE5LTYuMTY3OTY5LTE1Ljc2MTcxOS05LjQyNTc4MS0zMi4zNTkzNzUtOS40MjU3ODEtNDkuNDgwNDY5em00OC40NjQ4NDQgNTYuMDQ2ODc1Yy02LjM2NzE4OC05LjkxMDE1Ni0xMS0yMC43MDMxMjUtMTMuNjc5Njg4LTMyLjA0Njg3NWg1LjIxNDg0NGM3LjI4OTA2MiAwIDE0LjE1MjM0NC0yLjgzOTg0NCAxOS4zMTI1LThsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzEwLjMyODEyNSAxMC4zMTI1IDI4LjI5Njg3NSAxMC4zMjAzMTIgMzguNjI1IDBsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzEwLjMyODEyNSAxMC4zMTI1IDI4LjI5Njg3NSAxMC4zMjAzMTIgMzguNjI1IDBsNC42ODc1LTQuNjc5Njg4YzQuMjgxMjUtNC4yODEyNSAxMS43MTg3NS00LjI4MTI1IDE2IDBsNC42ODc1IDQuNjc5Njg4YzUuMTY3OTY5IDUuMTYwMTU2IDEyLjAyMzQzOCA4IDE5LjMxMjUgOGg1LjA5NzY1NmMtMTAuODgyODEyIDQ1Ljc5Mjk2OS01Mi4wMjczNDQgODAtMTAxLjA5NzY1NiA4MC0xMC45NzY1NjIgMC0yMS42OTUzMTItMS43OTI5NjktMzItNS4xMjg5MDZ2LTIuODcxMDk0YzAtNC40MTQwNjItMy41NzQyMTktOC04LThoLTguODA4NTk0Yy0zLjY4NzUtMTguMDg5ODQ0LTE5LjYyNS0zMS43MjY1NjItMzguNzI2NTYyLTMxLjk1MzEyNXptLTE2LjQ2NDg0NC01Ni4wNDY4NzVjMC01Ny4zNDM3NSA0Ni42NTYyNS0xMDQgMTA0LTEwNHMxMDQgNDYuNjU2MjUgMTA0IDEwNGMwIDIuNzAzMTI1LS4xOTkyMTkgNS4zNTE1NjItLjQwNjI1IDhoLTcuNTkzNzVjLTMuMDIzNDM4IDAtNS44NTU0NjktMS4xNzU3ODEtOC0zLjMxMjVsLTQuNjg3NS00LjY4NzVjLTEwLjMyODEyNS0xMC4zMTI1LTI4LjI5Njg3NS0xMC4zMjAzMTItMzguNjI1IDBsLTQuNjg3NSA0LjY3OTY4OGMtNC4yODEyNSA0LjI4MTI1LTExLjcxODc1IDQuMjgxMjUtMTYgMGwtNC42ODc1LTQuNjc5Njg4Yy0xMC4zMjgxMjUtMTAuMzEyNS0yOC4yOTY4NzUtMTAuMzIwMzEyLTM4LjYyNSAwbC00LjY4NzUgNC42Nzk2ODhjLTQuMjgxMjUgNC4yODEyNS0xMS43MTg3NSA0LjI4MTI1LTE2IDBsLTQuNjg3NS00LjY3OTY4OGMtMTAuMzI4MTI1LTEwLjMxMjUtMjguMjk2ODc1LTEwLjMyMDMxMi0zOC42MjUgMGwtNC42ODc1IDQuNjc5Njg4Yy0yLjE0NDUzMSAyLjE0NDUzMS00Ljk3NjU2MiAzLjMyMDMxMi04IDMuMzIwMzEyaC03LjY5NTMxMmMtLjE5OTIxOS0yLjY0ODQzOC0uMzA0Njg4LTUuMzIwMzEyLS4zMDQ2ODgtOHptLTE2OCAxMDRoMjI0djE2aC0yMjR6bTE2MCA5NmgtMTA0Yy0yMi4wNTQ2ODggMC00MC0xNy45NDUzMTItNDAtNDB2LTI0aDE5MnYyNGMwIDIyLjA1NDY4OC0xNy45NDUzMTIgNDAtNDAgNDB6bTQ3LjExMzI4MSAwYzEwLjQwNjI1LTEwLjE3NTc4MSAxNi44ODY3MTktMjQuMzM1OTM4IDE2Ljg4NjcxOS00MHYtMTUuODcxMDk0YzE1LjQyNTc4MSA1LjE0NDUzMiAzMS41MDM5MDYgNy44NzEwOTQgNDggNy44NzEwOTQgODMuODE2NDA2IDAgMTUyLTY4LjE4MzU5NCAxNTItMTUycy02OC4xODM1OTQtMTUyLTE1Mi0xNTItMTUyIDY4LjE4MzU5NC0xNTIgMTUyYzAgMTMuMDE1NjI1IDEuODAwNzgxIDI1LjczNDM3NSA1LjAwNzgxMiAzOC4xMTMyODEtNi4yMjI2NTYtMy45MDYyNS0xMy40NjQ4NDMtNi4xMTMyODEtMjEuMDA3ODEyLTYuMTEzMjgxLTYuNTM1MTU2IDAtMTMgMS42NzE4NzUtMTguNzg1MTU2IDQuODE2NDA2LTEuNTg5ODQ0LTEuNzI2NTYyLTMuMzc1LTMuMjE0ODQ0LTUuMjE0ODQ0LTQuNjI1di0yMDAuMTkxNDA2aDM4NHYzNjh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM2IDgwYzEzLjIzMDQ2OSAwIDI0LTEwLjc2OTUzMSAyNC0yNHMtMTAuNzY5NTMxLTI0LTI0LTI0LTI0IDEwLjc2OTUzMS0yNCAyNCAxMC43Njk1MzEgMjQgMjQgMjR6bTAtMzJjNC40MTQwNjIgMCA4IDMuNTkzNzUgOCA4cy0zLjU4NTkzOCA4LTggOC04LTMuNTkzNzUtOC04IDMuNTg1OTM4LTggOC04em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMCA4MGMxMy4yMzA0NjkgMCAyNC0xMC43Njk1MzEgMjQtMjRzLTEwLjc2OTUzMS0yNC0yNC0yNC0yNCAxMC43Njk1MzEtMjQgMjQgMTAuNzY5NTMxIDI0IDI0IDI0em0wLTMyYzQuNDE0MDYyIDAgOCAzLjU5Mzc1IDggOHMtMy41ODU5MzggOC04IDgtOC0zLjU5Mzc1LTgtOCAzLjU4NTkzOC04IDgtOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjQgODBjMTMuMjMwNDY5IDAgMjQtMTAuNzY5NTMxIDI0LTI0cy0xMC43Njk1MzEtMjQtMjQtMjQtMjQgMTAuNzY5NTMxLTI0IDI0IDEwLjc2OTUzMSAyNCAyNCAyNHptMC0zMmM0LjQxNDA2MiAwIDggMy41OTM3NSA4IDhzLTMuNTg1OTM4IDgtOCA4LTgtMy41OTM3NS04LTggMy41ODU5MzgtOCA4LTh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQ4IDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00NDggMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxNiA2NGgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDE2IDMyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zODQgNjRoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM4NCAzMmgxNnYxNmgtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzUyIDY0aDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNTIgMzJoMTZ2MTZoLTE2em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Water Consumption":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTI2OC45OSAxODcuNDk5Yy01Ljc1MS05Ljk1OS0yMC4xOTYtMTAuMDE2LTI1Ljk3OSAwLTIxLjgxIDQwLjYxMS0zMi4wMTEgNDguMDYxLTMyLjAxMSA2Ny41MDEgMCAyNC44MTMgMjAuMTg3IDQ1IDQ1IDQ1czQ1LTIwLjE4NyA0NS00NWMwLTE5LjQ1OC0xMC40ODYtMjcuNDIxLTMyLjAxLTY3LjUwMXptLTEyLjk5IDgyLjUwMWMtOC4yNzEgMC0xNS02LjcyOS0xNS0xNSAwLTYuNjg3IDMuMDQyLTguMjE1IDE1LTMwLjAwNSAxMS45NzQgMjEuODE4IDE1IDIzLjMxOCAxNSAzMC4wMDUgMCA4LjI3MS02LjcyOSAxNS0xNSAxNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwNiAwaC0zMDBjLTguNzY5IDAtMTUuNjc2IDcuNTAyLTE0Ljk0OCAxNi4yNDZsMzAgMzYwYy42NDggNy43NzQgNy4xNDcgMTMuNzU0IDE0Ljk0OCAxMy43NTRoNzV2MzJoLTE1Yy0xMy4zMTggMC0yMC4wNDggMTYuMTY1LTEwLjYwNiAyNS42MDZsNjAgNjBjNS44NTcgNS44NTggMTUuMzU1IDUuODU5IDIxLjIxMyAwbDYwLTYwYzkuNDE3LTkuNDE3IDIuNzQ1LTI1LjYwNi0xMC42MDctMjUuNjA2aC0xNXYtMzJoNzVjNy44MDEgMCAxNC4zLTUuOTggMTQuOTQ4LTEzLjc1NGwzMC0zNjBjLjcyOC04LjczOS02LjE3NC0xNi4yNDYtMTQuOTQ4LTE2LjI0NnptLTE2LjMwMiAzMC01LjM0NiA2NC4xNDdjLTIxLjc2OCA4LjM0My0zNS44NzEgMjUuODUzLTUzLjM1MiAyNS44NTMtMjIuNzE3IDAtNDAuNDIzLTMwLTc1LTMwLTM0LjcyNyAwLTUyLjE3NiAzMC03NSAzMC0xNy40ODUgMC0zMS41NTYtMTcuNDk5LTUzLjM1Mi0yNS44NTNsLTUuMzQ2LTY0LjE0N3ptLTI3LjUgMzMwaC03Ni4xOThjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2NjJjMCA2LjQzMiA0LjA0OCAxMS45MTkgOS43MzYgMTQuMDVsLTI0LjczNiAyNC43MzctMjQuNzM2LTI0LjczNmM1LjY4OC0yLjEzMSA5LjczNi03LjYxOCA5LjczNi0xNC4wNXYtNjJjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtNzYuMTk4bC0xOS4yMDgtMjMwLjUwMmMxNC4zMTUgOS4xNTMgMjkuMDc2IDIwLjUwMSA1MC40MDYgMjAuNTAxIDM0LjcyNyAwIDUyLjE3Ni0zMCA3NS0zMCAyMi43MTcgMCA0MC40MjMgMzAgNzUgMzAgMjEuMDE5IDAgMzUuNDQ5LTEwLjkzNyA1MC40MDYtMjAuNTAyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==","Water Heater":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNjcsMTg1LjMyNXYyODFhMzUuNTQxLDM1LjU0MSwwLDAsMCwzNS40NjksMzUuNjMxTDMxOS4wNiw1MDJoLjAwNkEzNS44OTEsMzUuODkxLDAsMCwwLDM1NSw0NjYuMzY5VjQ2NGg2MC42MmMzNC44MzcsMCw2My4zOC0yNy44Nyw2My4zOC02Mi43MTVWMTg5LjczYzAtMzQuODQ0LTI4LjU0My02Mi43My02My4zOC02Mi43M0gzNTV2LTkuNjg5YzAtLjA3NC0uMTYtLjE0Ni0uMTYyLS4yMTlzLS4wNjUtLjExNC0uMDY1LS4xODdBNjIuMDQ0LDYyLjA0NCwwLDAsMCwyOTIuNzYzLDU1SDIxOVY0NGgxNy44MjhDMjQ1LjY1LDQ0LDI1MywzNy4yLDI1MywyOC4zNzRWMjZhMTYuMTY3LDE2LjE2NywwLDAsMC0xNi4xNzItMTZIMTg5LjcwNkExNS43NywxNS43NywwLDAsMCwxNzQsMjZ2Mi4zNzRBMTUuNDU0LDE1LjQ1NCwwLDAsMCwxODkuNzA2LDQ0SDIwN1Y1NUgxMzMuNzcxQzEwMS41LDU1LDc0LjkyNCw4MCw3Mi4xLDExMUgzOS4yYTYuMDU2LDYuMDU2LDAsMCwwLTUuMiw4LjkyOVpNMzU1LDE2MWg2MC42MkEyOC41ODEsMjguNTgxLDAsMCwxLDQ0NCwxODkuNzNWNDAxLjI4NUEyOC41NjgsMjguNTY4LDAsMCwxLDQxNS42Miw0MzBIMzU1Wm0wLDI4MWg2MC42MkE0MC41ODEsNDAuNTgxLDAsMCwwLDQ1Niw0MDEuMjg1VjE4OS43M0E0MC41OTQsNDAuNTk0LDAsMCwwLDQxNS42MiwxNDlIMzU1VjEzOWg2MC42MmMyOC4yMjEsMCw1MS4zOCwyMi41LDUxLjM4LDUwLjczVjQwMS4yODVDNDY3LDQyOS41MTMsNDQzLjg0MSw0NTIsNDE1LjYyLDQ1MkgzNTVabS0xMiwyNC4zNjlBMjMuODkxLDIzLjg5MSwwLDAsMSwzMTkuMDY2LDQ5MGgwbC0yMTYuNTkxLS4wNDFBMjMuNTI3LDIzLjUyNywwLDAsMSw3OSw0NjYuMzI4VjQ1Mi41N2wyNjQsLjA0OVpNMTkwLDMyYTQsNCwwLDAsMS00LTRWMjZhNCw0LDAsMCwxLDQtNGg0N2E0LDQsMCwwLDEsNCw0djJhNCw0LDAsMCwxLTQsNFpNMTMzLjc3MSw2N0gyOTIuNzYzYTQ5LjgyOSw0OS44MjksMCwwLDEsNDkuNTc2LDQ0SDg0LjJBNDkuODMsNDkuODMsMCwwLDEsMTMzLjc3MSw2N1pNMzQzLDEyM1Y0NDAuNjE5TDc5LDQ0MC41N1YxODMuOWE2Ljg1Myw2Ljg1MywwLDAsMC0uOC0yLjg1MUw0OC45MzQsMTIzWiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjAzLDM4OC40NDNBMzUuMDE3LDM1LjAxNywwLDAsMCwyMzgsMzUzLjZWMjM2Ljg0NGEzNSwzNSwwLDAsMC03MCwwVjM1My42QTM1LjAxNywzNS4wMTcsMCwwLDAsMjAzLDM4OC40NDNabS0yMy0xNTEuNmEyMywyMywwLDAsMSw0NiwwVjI4OUgxODBaTTE4MCwzMDFoNDZ2NTIuNmEyMywyMywwLDAsMS00NiwwWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOTksMzE0LjkxM2E2LDYsMCwwLDAsNi02VjIzMy4xMDZhNiw2LDAsMCwwLTEyLDB2NzUuODA3QTYsNiwwLDAsMCw5OSwzMTQuOTEzWiIvPg0KICAgICAgICA8cGF0aCBkPSJNOTksMjE4LjcyNmE2LDYsMCwwLDAsNi02di00LjgzNGE2LDYsMCwwLDAtMTIsMHY0LjgzNEE2LDYsMCwwLDAsOTksMjE4LjcyNloiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Water:xxe,Weather:Sxe,Window:kxe},Yxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0xMDggNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MDQgNDguMDE1NjI1aC00OTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOS04LTh2LTMyLjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQ5NmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4djMyLjAxNTYyNWMwIDQuNDI1NzgxLTMuNTc0MjE5IDgtOCA4em0tNDg4LTE2aDQ4MHYtMTYuMDE1NjI1aC00ODB6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTI0Ni43MTg3NWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0Ni43MTg3NWMwIDQuNDI1NzgyLTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NiAyOTYuMTYwMTU2Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04di0yNDYuNzE4NzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNDYuNzE4NzVjMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyOTYuMTYwMTU2aC0yNGMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDI0YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00OTYgMjk2LjE2MDE1NmgtMjRjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgyNGM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MC4xMTMyODFoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE4NC4xMjg5MDZoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNzEuOTg0Mzc1IDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0yMi4wNTg1OTQgMTcuOTM3NS00MCAzOS45OTIxODctNDAgNC40MjE4NzYgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI0IDgtOCA4LTEzLjIyMjY1NiAwLTIzLjk5MjE4NyAxMC43NjU2MjUtMjMuOTkyMTg3IDI0IDAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUyIDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yMzQzNzUtMTAuNzY5NTMxLTI0LTIzLjk5MjE4OC0yNC00LjQyMTg3NCAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzgxMjYtOCA4LTggMjIuMDU0Njg4IDAgMzkuOTkyMTg4IDE3Ljk0MTQwNiAzOS45OTIxODggNDAgMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im03OS45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0My45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgMTA0LjE0NDUzMWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtMjQuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQuMDE1NjI1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDgwLjEyODkwNmgtMzJjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTk2IDk2LjEyODkwNmgtMTYuMDE1NjI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDE1NjI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDMuOTY4NzUgOTYuMTI4OTA2aC0xNS45Njg3NWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDE1Ljk2ODc1YzQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjAuMDA3ODEyIDEyOC4xMjg5MDZoLTE2LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDMxMjVjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE3NS45ODQzNzUgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTIyLjA1ODU5NCAxNy45Mzc1LTQwIDM5Ljk5MjE4Ny00MCA0LjQyMTg3NiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzgxMjQgOC04IDgtMTMuMjIyNjU2IDAtMjMuOTkyMTg3IDEwLjc2NTYyNS0yMy45OTIxODcgMjQgMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTEzLjIzNDM3NS0xMC43Njk1MzEtMjQtMjMuOTkyMTg4LTI0LTQuNDIxODc0IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNi04IDgtOCAyMi4wNTQ2ODggMCAzOS45OTIxODggMTcuOTQxNDA2IDM5Ljk5MjE4OCA0MCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4My45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjAwIDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiA4MC4xMjg5MDZoLTMyYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMzJjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiAxMDQuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di0yNC4wMTU2MjVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNC4wMTU2MjVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDAgOTYuMTI4OTA2aC0xNi4wMTU2MjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMTU2MjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSA5Ni4xMjg5MDZoLTE1Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTUuOTY4NzVjNC40MjE4NzUgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNC4wMDc4MTIgMTI4LjEyODkwNmgtMTYuMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMzEyNWM0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTggOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2LjE2Nzk2OSAyODAuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtMTMuMjQyMTg3IDEwLjc3NzM0My0yNC4wMTU2MjUgMjQuMDE1NjI1LTI0LjAxNTYyNSA0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDgtNC40MjE4NzUgMC04LjAxNTYyNSAzLjU4OTg0NC04LjAxNTYyNSA4LjAxNTYyNSAwIDQuNDIxODc1LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjgwLjE0NDUzMWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04LTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCAxMy4yMzQzNzUgMCAyNCAxMC43NjU2MjUgMjQgMjQgMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzYuMTkxNDA2IDI5Ni4xNjAxNTZoLTgwLjAyMzQzN2MtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDgwLjAzMTI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU4MjAzMSA4LTguMDA3ODEzIDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjgzMjAzMSAyNjQuMTI4OTA2aC00OS4yOTY4NzVjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOGg0OS4yOTY4NzVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3Mi4xNjc5NjkgMjY0LjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtNDcuOTg0Mzc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2NDcuOTg0Mzc1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjE5OTIxOSAyNjQuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04di00OGMwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDh2NDhjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYuMTY3OTY5IDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTE2LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjk2LjE2MDE1NmMtNC40MjE4NzUgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOHYxNi4wMTU2MjVjMCA0LjQyNTc4Mi0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAuMTk5MjE5IDIxNi4xNDQ1MzFoLTQ4LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNDguMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyOC4xOTE0MDYgMjQwLjE0NDUzMWgtNjQuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNjQuMDIzNDM3YzQuNDI1NzgyIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjAuMTY3OTY5IDI4MC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yNDIxODcgMTAuNzc3MzQzLTI0LjAxNTYyNSAyNC4wMTU2MjUtMjQuMDE1NjI1IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOC00LjQyMTg3NSAwLTguMDE1NjI1IDMuNTg5ODQ0LTguMDE1NjI1IDguMDE1NjI1IDAgNC40MjE4NzUtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyODAuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04IDAtNC40MTc5NjktMy41ODIwMzEtOC04LTgtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDEzLjIzNDM3NSAwIDI0IDEwLjc2NTYyNSAyNCAyNCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0MC4xOTE0MDYgMjk2LjE2MDE1NmgtODAuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoODAuMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOC4wMDc4MTMgOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuODMyMDMxIDI2NC4xMjg5MDZoLTQ5LjI5Njg3NWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04aDQ5LjI5Njg3NWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjE2Nzk2OSAyNjQuMTI4OTA2Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Ny45ODQzNzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHY0Ny45ODQzNzVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuMTk5MjE5IDI2NC4xNDQ1MzFjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTh2LTQ4YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOHY0OGMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC4xNjc5NjkgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MTYuMDE1NjI1YzAgNC40MjU3ODItMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyOTYuMTYwMTU2Yy00LjQyMTg3NSAwLTgtMy41NzQyMTgtOC04di0xNi4wMTU2MjVjMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCA0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQyNC4xOTkyMTkgMjE2LjE0NDUzMWgtNDguMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg0OC4wMzEyNWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyLjE5MTQwNiAyNDAuMTQ0NTMxaC02NC4wMjM0MzdjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg2NC4wMjM0MzdjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Qxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM2Mi43ODcgMzYyLjc4NyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTI2MC45NDUsMTQ0Ljk3OWMtMi42NjcsMC01LjEzMywxLjQxNi02LjQ3NywzLjcxOWwtNDcuNDg0LDgxLjMzM2MtMS4zNTQsMi4zMTktMS4zNjUsNS4xODYtMC4wMjcsNy41MTYNCgkJYzEuMzM3LDIuMzI5LDMuODE4LDMuNzY2LDYuNTA0LDMuNzY2aDk0Ljk2OGMyLjY4NiwwLDUuMTY3LTEuNDM3LDYuNTA0LTMuNzY2YzEuMzM4LTIuMzMsMS4zMjctNS4xOTYtMC4wMjctNy41MTZsLTQ3LjQ4My04MS4zMzMNCgkJQzI2Ni4wNzgsMTQ2LjM5NSwyNjMuNjEyLDE0NC45NzksMjYwLjk0NSwxNDQuOTc5eiBNMjI2LjUyNCwyMjYuMzEybDM0LjQyMS01OC45NThsMzQuNDIsNTguOTU4SDIyNi41MjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTUuMjg3LDI1NC42OWgtMTc1LjYybDgxLjI3OC0xMzkuMjE4bDYyLjkyNiwxMDcuNzgzYzIuMDg4LDMuNTc4LDYuNjgzLDQuNzg0LDEwLjI1OCwyLjY5Ng0KCQljMy41NzctMi4wODgsNC43ODQtNi42ODEsMi42OTUtMTAuMjU4TDI2Ny40MjIsOTYuODE1Yy0wLjAyMS0wLjAzNi0wLjA0OC0wLjA2Ny0wLjA2OS0wLjEwM2MtMC4xMjYtMC4yMDgtMC4yNjItMC40MDgtMC40MDctMC42MDMNCgkJYy0wLjA0NC0wLjA1OS0wLjA4Ni0wLjExOC0wLjEzMS0wLjE3NmMtMC4xODMtMC4yMy0wLjM3Ni0wLjQ1MS0wLjU4NC0wLjY1OGMtMC4wMjQtMC4wMjQtMC4wNTEtMC4wNDUtMC4wNzYtMC4wNjkNCgkJYy0wLjE4Ni0wLjE4LTAuMzgzLTAuMzQ5LTAuNTg3LTAuNTA5Yy0wLjA2NS0wLjA1MS0wLjEzMi0wLjEtMC4xOTktMC4xNDhjLTAuMTg3LTAuMTM3LTAuMzc5LTAuMjY0LTAuNTc4LTAuMzg0DQoJCWMtMC4wNTUtMC4wMzMtMC4xMDgtMC4wNjgtMC4xNjQtMC4xYy0wLjI2MS0wLjE0Ny0wLjUzLTAuMjgyLTAuODA5LTAuMzk3Yy0wLjAxMS0wLjAwNC0wLjAyMi0wLjAwOC0wLjAzMy0wLjAxMg0KCQljLTAuMjYtMC4xMDYtMC41MjgtMC4xOTYtMC44MDItMC4yNzNjLTAuMDczLTAuMDIxLTAuMTQ2LTAuMDM4LTAuMjItMC4wNTZjLTAuMjIyLTAuMDU1LTAuNDQ3LTAuMS0wLjY3Ny0wLjEzNQ0KCQljLTAuMDc5LTAuMDEyLTAuMTU3LTAuMDI2LTAuMjM2LTAuMDM2Yy0wLjI5Ny0wLjAzNi0wLjU5OC0wLjA2LTAuOTA2LTAuMDZIMTAxLjg0MmMtMi42NjcsMC01LjEzMywxLjQxNi02LjQ3NywzLjcxOQ0KCQlMMS4wMjMsMjU4LjQwOGMtMS4zNTQsMi4zMTktMS4zNjUsNS4xODYtMC4wMjcsNy41MTZjMS4zMzcsMi4zMjksMy44MTgsMy43NjYsNi41MDQsMy43NjZoODYuNTM4YzAuMDA4LDAsMC4wMTUsMC4wMDEsMC4wMjMsMC4wMDENCgkJczAuMDE1LTAuMDAxLDAuMDIzLTAuMDAxaDM1Ljg4OWMwLjAwOCwwLDAuMDE1LDAuMDAxLDAuMDIzLDAuMDAxczAuMDE1LTAuMDAxLDAuMDIzLTAuMDAxaDM2LjU4NmgxODguNjg0DQoJCWM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41UzM1OS40MywyNTQuNjksMzU1LjI4NywyNTQuNjl6IE0xNjIuMjk4LDI1NC42OWgtMTkuMjYzbDY5LjQzLTExOS40Nw0KCQljMi4wODEtMy41ODIsMC44NjUtOC4xNzItMi43MTYtMTAuMjUzYy0zLjU4LTIuMDgzLTguMTczLTAuODY2LTEwLjI1MywyLjcxNmwtNzMuODEsMTI3LjAwN0gxMDcuMWw4NS4xOTItMTQ2LjU5NGg1NS41OQ0KCQlMMTYyLjI5OCwyNTQuNjl6IE0xMDYuMTQ3LDEwOC4wOTZoMzQuMDkxTDc0Ljc4OSwyMjAuNzE3Yy0yLjA4MSwzLjU4Mi0wLjg2NSw4LjE3MiwyLjcxNiwxMC4yNTMNCgkJYzEuMTg2LDAuNjg5LDIuNDgyLDEuMDE3LDMuNzYyLDEuMDE3YzIuNTg0LDAsNS4xLTEuMzM3LDYuNDkxLTMuNzMzbDY5LjgzLTEyMC4xNThoMTcuMzU2TDg5Ljc1MSwyNTQuNjlIMjAuNTYzTDEwNi4xNDcsMTA4LjA5NnoiDQogICAgICAgIC8+DQogICAgPC9nPg0KPC9zdmc+DQo=",bxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Ni43MDQgMjcyLjA4NmgtODEuNzA0di04OC4wNzNjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2ODguMDczaC0xNXYtMTkzLjcxYzAtOC4yNDktNi43MTEtMTQuOTU5LTE0Ljk1OS0xNC45NTloLTkxLjU4MmMtOC4yNDggMC0xNC45NTkgNi43MS0xNC45NTkgMTQuOTU5djE5My43MWgtMTV2LTE5My43MWMwLTguMjQ5LTYuNzExLTE0Ljk1OS0xNC45NTktMTQuOTU5aC05MS41ODJjLTguMjQ4IDAtMTQuOTU5IDYuNzEtMTQuOTU5IDE0Ljk1OXYxOTMuNzFoLTE1di0yMjMuNjY5aDI4OHYxMDAuNTk2YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTEwMC41OTZoMy4yMDRjOC40MzUgMCAxNS4yOTYtNi44ODMgMTUuMjk2LTE1LjM0NHYtMTcuNzNjMC04LjQ2LTYuODYxLTE1LjM0My0xNS4yOTYtMTUuMzQzaC0zMjQuNDA4Yy04LjQzNSAwLTE1LjI5NiA2Ljg4My0xNS4yOTYgMTUuMzQ0djE3LjczYzAgOC40NiA2Ljg2MSAxNS4zNDQgMTUuMjk2IDE1LjM0NGgzLjIwNHYyMjMuNjY5aC04MS43MDRjLTguNDM1LS4wMDEtMTUuMjk2IDYuODYxLTE1LjI5NiAxNS4yOTV2MTcuNjIyYzAgOC40MzUgNi44NjEgMTUuMjk2IDE1LjI5NiAxNS4yOTZoLjV2MTQzLjQ4NmgtLjVjLTguNDM1IDAtMTUuMjk2IDYuODYyLTE1LjI5NiAxNS4yOTZ2MTcuNjIyYzAgOC40MzQgNi44NjEgMTUuMjk2IDE1LjI5NiAxNS4yOTZoMjIzLjIwNGM0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMjIzLjIwNGMtLjE2MyAwLS4yOTYtLjEzMy0uMjk2LS4yOTZ2LTE3LjYyMmMwLS4xNjMuMTMzLS4yOTYuMjk2LS4yOTZoNDgxLjQwOGMuMTYzIDAgLjI5Ni4xMzMuMjk2LjI5NnYxNy42MjJjMCAuMTYzLS4xMzMuMjk2LS4yOTYuMjk2aC0yMjMuMjA0Yy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDIyMy4yMDRjOC40MzUgMCAxNS4yOTYtNi44NjIgMTUuMjk2LTE1LjI5NnYtMTcuNjIyYzAtOC40MzQtNi44NjEtMTUuMjk2LTE1LjI5Ni0xNS4yOTZoLS41di0xNDMuNDg2aC41YzguNDM1IDAgMTUuMjk2LTYuODYyIDE1LjI5Ni0xNS4yOTZ2LTE3LjYyMmMwLTguNDM0LTYuODYxLTE1LjI5Ni0xNS4yOTYtMTUuMjk2em0tNDAzLjIwNC0yMzkuMDEydi0xNy43M2MwLS4yMTIuMTUzLS4zNDQuMjk2LS4zNDRoMzI0LjQwOGMuMTQzIDAgLjI5Ni4xMzEuMjk2LjM0NHYxNy43M2MwIC4yMTItLjE1My4zNDQtLjI5Ni4zNDQtMTUuMzY3IDAtMzA5LjA1MSAwLTMyNC40MDggMC0uMTQzLS4wMDEtLjI5Ni0uMTMyLS4yOTYtLjM0NHptMTg0Ljk1OSA0NS4zNDMgOTEuNTQxLS4wNDF2MTkzLjcxaC05MS41MDJ6bS0xMzYuNSAwIDkxLjU0MS0uMDQxdjE5My43MWgtOTEuNTAyem0zMzkuMjQ1IDM4NC44MTdoLTQ1MC40MDh2LTE0Mi45MzRoNDUwLjQwOHptMTUuNzk2LTE1OC4yM2MwIC4xNjQtLjEzMy4yOTYtLjI5Ni4yOTYtMi44MjQgMC00NzEuMTUzIDAtNDgxLjQwOCAwLS4xNjMgMC0uMjk2LS4xMzMtLjI5Ni0uMjk2di0xNy42MjJjMC0uMTYzLjEzMy0uMjk2LjI5Ni0uMjk2aDQ4MS40MDhjLjE2MyAwIC4yOTYuMTMzLjI5Ni4yOTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im02Ny42NTUgNDQyLjcwNGgxOC45OWM4Ljc2OCAwIDE1LjktNy4xMzMgMTUuOS0xNS45MDF2LTY5LjUyYzAtOC43NjgtNy4xMzMtMTUuOTAxLTE1LjktMTUuOTAxaC0xOC45OWMtOC43NjggMC0xNS45IDcuMTMzLTE1LjkgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzMgMTUuOTAxIDE1LjkgMTUuOTAxem0tLjktODUuNDIxYzAtLjQ5Ny40MDQtLjkwMS45LS45MDFoMTguOTljLjQ5NiAwIC45LjQwNC45LjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkuOTAxaC0xOC45OWMtLjQ5NiAwLS45LS40MDQtLjktLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzOS40MDYgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzQgMTUuOTAxIDE1LjkwMSAxNS45MDF6bS0uOTAxLTg1LjQyMWMwLS40OTcuNDA0LS45MDEuOTAxLS45MDFoMTguOTg5Yy40OTcgMCAuOTAxLjQwNC45MDEuOTAxdjY5LjUyYzAgLjQ5Ny0uNDA0LjkwMS0uOTAxLjkwMWgtMTguOTg5Yy0uNDk3IDAtLjkwMS0uNDA0LS45MDEtLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIxMC43OTYgNDQyLjcwNGgxOC45OWM4Ljc2OCAwIDE1LjkwMS03LjEzMyAxNS45MDEtMTUuOTAxdi02OS41MmMwLTguNzY4LTcuMTM0LTE1LjkwMS0xNS45MDEtMTUuOTAxaC0xOC45OWMtOC43NjggMC0xNS45IDcuMTMzLTE1LjkgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzIgMTUuOTAxIDE1LjkgMTUuOTAxem0tLjktODUuNDIxYzAtLjQ5Ny40MDQtLjkwMS45LS45MDFoMTguOTljLjQ5NyAwIC45MDEuNDA0LjkwMS45MDF2NjkuNTJjMCAuNDk3LS40MDQuOTAxLS45MDEuOTAxaC0xOC45OWMtLjQ5NiAwLS45LS40MDQtLjktLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI4Mi41NDcgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYzAgOC43NjggNy4xMzMgMTUuOTAxIDE1LjkwMSAxNS45MDF6bS0uOTAxLTg1LjQyMWMwLS40OTcuNDA0LS45MDEuOTAxLS45MDFoMTguOTg5Yy40OTcgMCAuOTAxLjQwNC45MDEuOTAxdjY5LjUyYzAgLjQ5Ny0uNDA0LjkwMS0uOTAxLjkwMWgtMTguOTg5Yy0uNDk3IDAtLjkwMS0uNDA0LS45MDEtLjkwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1NC4xMzEgNDQyLjcwNGgxOC45ODljOC43NjggMCAxNS45MDEtNy4xMzMgMTUuOTAxLTE1LjkwMXYtNjkuNTJjMC04Ljc2OC03LjEzNC0xNS45MDEtMTUuOTAxLTE1LjkwMWgtMTguOTg5Yy04Ljc2OCAwLTE1LjkwMSA3LjEzMy0xNS45MDEgMTUuOTAxdjY5LjUyYy0uMDAxIDguNzY4IDcuMTMzIDE1LjkwMSAxNS45MDEgMTUuOTAxem0tLjkwMi04NS40MjFjMC0uNDk3LjQwNC0uOTAxLjkwMS0uOTAxaDE4Ljk4OWMuNDk3IDAgLjkwMS40MDQuOTAxLjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkwMS45MDFoLTE4Ljk4OWMtLjQ5NyAwLS45MDEtLjQwNC0uOTAxLS45MDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MjUuNTIxIDQ0Mi43MDRoMTguOTg5YzguNzY4IDAgMTUuOTAxLTcuMTMzIDE1LjkwMS0xNS45MDF2LTY5LjUyYzAtOC43NjgtNy4xMzQtMTUuOTAxLTE1LjkwMS0xNS45MDFoLTE4Ljk4OWMtOC43NjggMC0xNS45MDEgNy4xMzMtMTUuOTAxIDE1LjkwMXY2OS41MmMwIDguNzY4IDcuMTM0IDE1LjkwMSAxNS45MDEgMTUuOTAxem0tLjkwMS04NS40MjFjMC0uNDk3LjQwNC0uOTAxLjkwMS0uOTAxaDE4Ljk4OWMuNDk3IDAgLjkwMS40MDQuOTAxLjkwMXY2OS41MmMwIC40OTctLjQwNC45MDEtLjkwMS45MDFoLTE4Ljk4OWMtLjQ5NyAwLS45MDEtLjQwNC0uOTAxLS45MDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMTYuNDExIDEwNy4yNjhjLTIuOTMtMi45MjktNy42NzgtMi45MjktMTAuNjA3IDBzLTIuOTI5IDcuNjc4IDAgMTAuNjA2bDIzLjUxMiAyMy41MTJjMi45MyAyLjkyOSA3LjY3OCAyLjkyOSAxMC42MDcgMHMyLjkyOS03LjY3OCAwLTEwLjYwNnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0Mi42MDQgOTIuODMyYy0yLjkzLTIuOTI5LTcuNjc4LTIuOTI5LTEwLjYwNyAwcy0yLjkyOSA3LjY3OCAwIDEwLjYwNmwxMS43NTYgMTEuNzU2YzIuOTMgMi45MjkgNy42NzggMi45MjkgMTAuNjA3IDBzMi45MjktNy42NzggMC0xMC42MDZ6Ii8+DQogICAgPC9nPg0KPC9zdmc+",Uxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQxMy45MDcgMGMtNTQuMTA0IDAtOTguMTIyIDQ0LjAwNS05OC4xMjIgOTguMDk2djQzLjU4MnMtNjkuODMxLTM2LjkxMi03MS4wNjUtMzcuNTkzYy05LjU0NC01LjI2Ni0xMi4xODUtNS4yNjctMjEuNzMxIDAtMS4yMzQuNjgxLTEzNi4xNDEgNzEuOTU4LTEzNi4xNDEgNzEuOTU4LTExLjQzNyA2LjAxNy0xMy4wNDUgNy43NDUtMTcuODc4IDE1Ljc4My0uNzg4IDEuMzExLTY1LjY5OCAxMDQuMjMtNjUuNjk4IDEwNC4yMy0zLjE3NSA1LjAyMy00LjA3NyAxMC45NjItMi41MzkgMTYuNzIyIDEuNjE3IDYuMDU2IDUuODQgMTEuMjY5IDExLjU3NyAxNC4yOTUgMy42NDYgMS45MyA3LjU4MiAyLjg1IDExLjQ2NSAyLjg1IDYuMjAyIDAgMTIuMjU1LTIuMzU4IDE2Ljc0NS02LjY4OHY2NS4wNDRjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtODcuNTQxczQ5LjEzNC03Ny44NTUgNDkuNjUyLTc4LjY4MmMyLjMzNC0zLjcyOSAzLjMyOC01LjI4MyA0LjQ5Ni02LjMxOCAxLjMzMy0xLjE4MSAzLjY2NS0yLjQ2NCA4LjY2NS01LjEwN2wxMTMuMDAyLTU5LjY0OWMuODAxLS40MjUgMS40OS0uODAzIDIuMDkzLTEuMTMzLjE0MS0uMDc3LjI4NS0uMTU2LjQyOC0uMjM0LjE0My4wNzguMjg3LjE1Ny40MjguMjM0LjYwMy4zMzEgMS4yOTIuNzA4IDIuMTA5IDEuMTQyIDAgMCAxMTguMTkzIDYyLjQxMyAxMTkuNjQyIDYzLjMxLjg2OS41MzggMS41MDkuOTk1IDIuMDA5IDEuNDM4IDEuMTY3IDEuMDM1IDIuMTYyIDIuNTg5IDQuNDk2IDYuMzE4LjUxOC44MjcgNDkuNjUxIDc4LjY4MSA0OS42NTEgNzguNjgxdjE2MC43MTZoLTg0LjkyMXYtMTA0LjM0aDEyLjYyNWM3LjY1MiAwIDEzLjg3OC02LjIyNiAxMy44NzgtMTMuODc4di0yMS40M2MwLTcuNjUyLTYuMjI2LTEzLjg3OC0xMy44NzgtMTMuODc4aC04NS4xMjJjLTQuMTQyIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVoODR2MTkuMTg2aC0yMDkuODF2LTE5LjE4Nmg5MS4yYzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC05Mi4zMjJjLTcuNjUyIDAtMTMuODc4IDYuMjI2LTEzLjg3OCAxMy44Nzh2MjEuNDNjMCA3LjY1MiA2LjIyNiAxMy44NzggMTMuODc4IDEzLjg3OGgxMi42MjV2MTA0LjMzOWgtODQuOTQ3di0zOC41NjNjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NzYuNTM2YzAgNi45MzQgNS42NDEgMTIuNTc0IDEyLjU3NCAxMi41NzRoNDQ1LjkwN2M3LjE2NyAwIDEyLjk5OS01LjgzMiAxMi45OTktMTIuOTk5di00MDAuOTA1Yy4wMDEtNTQuMDkxLTQ0LjAwNC05OC4wOTYtOTguMDkyLTk4LjA5NnptLTI3My40NCA0OTdoLTg0Ljk0OHYtMjAuNTQ2aDg0Ljk0N3YyMC41NDZ6bTE1OS43ODMtMTM5Ljg4Ni02Ni4zODIgNTkuODQ1LTY2LjM4Mi01OS44NDV6bS0xNDQuNzgzIDkuMzU5IDY3LjIwMSA2MC41ODQtNjcuMjAxIDYwLjU4NHptMTIuMDIgMTMwLjUyNyA2Ni4zODItNTkuODQ1IDY2LjM4MSA1OS44NDV6bTE0NC43ODMtOS4zNTktNjcuMjAxLTYwLjU4NCA2Ny4yMDEtNjAuNTg0em05OS45MTkgOS4zNTloLTg0LjkxOXYtMjAuNTQ2aDg0LjkxOXptNTMuNDQ1LTE5OC44MjNjLS4zNDctLjcyLS43MzMtMS40MjctMS4xNjYtMi4xMTdsLTUxLjk0NS04Mi4yNjZoODQuNDc3djg0LjM4M3ptLTEzNC44NDgtMjAwLjA4MWMwLTQ1LjgxOSAzNy4yODgtODMuMDk2IDgzLjEyMi04My4wOTYgNDUuODE2IDAgODMuMDkyIDM3LjI3NiA4My4wOTIgODMuMDk2djEuMjg3aC0xNjYuMjE0em0wIDE2LjI4N2gxNjYuMjE0djg0LjQxMmgtOTMuOTQ5cy0zLjUyMy01LjY1Ni00LjMxMi02Ljk2NmMtNC44MzEtOC4wMzYtNi40NC05Ljc2Ni0xNy44NjgtMTUuNzc4bC01MC4wODYtMjYuNDV2LTM1LjIxOHptOTUuMjQ2IDE4MC4xNzdzLTUwLjI3NS03OS42NTYtNTAuNzgtODAuNDYzYy00Ljc5OS03LjY2NS02LjUxNC05LjgyNS0xMy4yODEtMTMuNjkyLS41MjEtLjI5Ny0xMTkuOTI5LTYzLjQwOC0xMjAuNDgyLTYzLjcxMS01LjEwMS0yLjc5NS03Ljg0Ny0zLjMyLTEyLjA2Ny0xLjU3Mi0uMDM3LjAxNS0uMDc2LjAzNC0uMTEzLjA1LS42MTYuMjU5LTExNy45ODUgNjIuMTk3LTExNy45ODUgNjIuMTk3LTExLjcyNyA2LjItMTIuOTYxIDcuMjk1LTE4Ljg2OCAxNi43MjktLjUwNS44MDctNTAuNzggODAuNDYzLTUwLjc4IDgwLjQ2My0uMDEuMDE2LS4wMTYuMDMzLS4wMjYuMDQ5bC0xMC4yOTQgMTYuMzFjLTIuMzc1IDMuNzY3LTcuODg1IDUuMDk2LTEyLjAzOSAyLjg5NC0yLjA2LTEuMDg2LTMuNTUyLTIuODczLTQuMDkzLTQuOTAxLS4zMTYtMS4xODQtLjQ0Ni0yLjk4NC43MjktNC44NDMgMCAwIDY1LjAzNy0xMDMuMTI0IDY1Ljg3Mi0xMDQuNTEyIDMuNDQ4LTUuNzM0IDMuNDQ4LTUuNzM0IDEyLjAxNy0xMC4yNDMgMCAwIDEzOS4xOTMtNzMuNjM5IDE0MC4wMTItNzQuMDEzLjgyLjM3NCAxNDAuMDEyIDc0LjAxMyAxNDAuMDEyIDc0LjAxMy4wMDMuMDAyLjAwNy4wMDQuMDExLjAwNiA4LjU1OSA0LjUwMiA4LjU1OSA0LjUwMiAxMi4wMDcgMTAuMjM4LjgzNCAxLjM4OCAxLjgxNiAzLjAyIDMuMDU4IDQuOTg3bDYyLjgzMyA5OS41MDljMS4xNjggMS44NiAxLjAzNCAzLjY2OS43MTYgNC44NTktLjU0NCAyLjAzMi0yLjAzMiAzLjgyLTQuMDcyIDQuODk5LTQuMjI2IDIuMjMxLTkuNjQ1LjkyNC0xMi4wNjktMi44OTZsLTEwLjI5Mi0xNi4zMDdjLS4wMS0uMDE3LS4wMTYtLjAzNS0uMDI2LS4wNXptNzAuOTY4IDIwMi40NGgtNjkuODExdi04NC40MTFoNjkuODExem0tNjkuODExLTk5LjQxMXYtNzQuMzg5YzcuMzEzIDcuMDQyIDE4Ljc2MyA4Ljg3NCAyOC4yMzggMy44NzUgNS42LTIuOTY1IDkuNzQ2LTguMDE2IDExLjQzOC0xMy44OTdoMzAuMTM1djg0LjQxMmgtNjkuODExeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjg1LjI2MiAyMzcuODczYzAtMjguMzQ3LTIzLjA2Mi01MS40MDktNTEuNDA4LTUxLjQwOS0yOC4zMzEgMC01MS4zNzkgMjMuMDYyLTUxLjM3OSA1MS40MDlzMjMuMDQ5IDUxLjQwOSA1MS4zNzkgNTEuNDA5YzI4LjM0Ny0uMDAxIDUxLjQwOC0yMy4wNjMgNTEuNDA4LTUxLjQwOXptLTg3Ljc4NyAwYzAtMjAuMDc2IDE2LjMyLTM2LjQwOSAzNi4zNzktMzYuNDA5IDIwLjA3NSAwIDM2LjQwOCAxNi4zMzMgMzYuNDA4IDM2LjQwOXMtMTYuMzMzIDM2LjQwOS0zNi40MDggMzYuNDA5Yy0yMC4wNTktLjAwMS0zNi4zNzktMTYuMzM0LTM2LjM3OS0zNi40MDl6Ii8+DQogICAgPC9nPg0KPC9zdmc+",$xe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Mi45OTUgMTY2LjQ4OS0zMS45OTUtMjMuOTk2di0xMTIuNDkzYzguMjg0IDAgMTUtNi43MTYgMTUtMTVzLTYuNzE2LTE1LTE1LTE1aC05MGMtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXM2LjcxNiAxNSAxNSAxNXY0NC45OTJsLTg4LjAwOS02Ni4wMDZjLTE1Ljg5My0xMS45MDQtMzguMDktMTEuOTA1LTUzLjk4OS4wMDVsLTIwOS45OTkgMTU3LjVjLTE5Ljg1MyAxNC44OTMtMjMuODkxIDQzLjE1NS05LjAwMSA2My4wMDQgNy4yMiA5LjYyIDE3Ljc1MiAxNS44NTMgMjkuNjU3IDE3LjU1IDIuMTU3LjMwOCA0LjMxLjQ2IDYuNDUuNDU5IDUuMTA5IDAgMTAuMTMtLjg3NiAxNC44OTEtMi41NjR2MjUyLjA2YzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMzYwYzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTI1Mi4wNjhjNC43NjMgMS42ODUgOS44MDMgMi41NiAxNC45NzggMi41NiAxNC4xIDAgMjcuNTY1LTYuNzI5IDM2LjAyMi0xOCAxNC44ODgtMTkuODQ2IDEwLjg0OS00OC4xMDgtOS4wMDUtNjMuMDAzem0tOTEuOTk1LTEzNi40ODloMzB2ODkuOTkybC0zMC0yMi41em0tMTIwIDI3MmgtNTB2LTkyaDUwem0zMCAwdi0xMDdjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtODBjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2MTA3aC0xMDkuOTk5di03Ny4wMDRsMTY0Ljk5OS0xMjMuNzUyIDE2NSAxMjMuNzUzdjc3LjAwM3ptLTIxOS45OTkgMzBoMjA5Ljk5OXYzMGgtNDVjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2NDVoLTQ1Yy04LjI4NCAwLTE1IDYuNzE2LTE1IDE1djQ1aC05MHptMTE5Ljk5OSAxNTB2LTMwaDQ1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTQ1aDQ1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTQ1aDkwdjE1MHptMjY3LjAwMi0yNzAuNTExYy0yLjg2MyAzLjgxNS03LjI0NSA2LjAwNC0xMi4wMjQgNi4wMDQtMy4yNiAwLTYuMzY1LTEuMDM2LTguOTc5LTIuOTk2bC0xOTEuOTk5LTE0NC4wMDNjLTUuMzMzLTQtMTIuNjY3LTQtMTggMGwtMTkyLjAwOCAxNDQuMDA5Yy0zLjE5MyAyLjM5Ny03LjEzNiAzLjQwOC0xMS4wOTggMi44NDItMy45NzMtLjU2Ni03LjQ4OC0yLjY0Ny05Ljg5Ni01Ljg1Ni00Ljk2MS02LjYxNC0zLjYxMi0xNi4wMzUgMy4wMDYtMjFsMjA5Ljk5MS0xNTcuNDkyYzIuNjUyLTEuOTg3IDUuODMtMi45NzkgOS4wMDctMi45NzkgMy4xNzUgMCA2LjM0OS45OTIgOC45OTYgMi45NzRsMjA5Ljk5NiAxNTcuNDk3YzYuNjIgNC45NjYgNy45NjkgMTQuMzg2IDMuMDA4IDIxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Pxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00ODUuNCwyNzIuMDY3aC04LjUzM3YtMTc5LjJjMC00Mi42NjctMzQuMTMzLTc2LjgtNzYuOC03Ni44Yy0zNy43NywwLTY0LjkzNSwyOC4wMDYtNjcuOTc0LDY5LjA0MQ0KCQkJCWMtMTkuODI5LDMuNzQ4LTM0LjQyNiwyMC44MjYtMzQuNDI2LDQxLjg5MmMwLDUuMTIsMy40MTMsOC41MzMsOC41MzMsOC41MzNoNjguMjY3YzUuMTIsMCw4LjUzMy0zLjQxMyw4LjUzMy04LjUzMw0KCQkJCWMwLTIwLjgzMy0xNC4yNzQtMzcuNzY5LTMzLjc2Ny00MS43NjdjMi41NS0yNy4xMTYsMTguODM2LTUyLjEsNTAuODM0LTUyLjFjMzMuMjgsMCw1OS43MzMsMjYuNDUzLDU5LjczMyw1OS43MzN2MTc5LjJIMjAyLjk3NQ0KCQkJCWMtMy44Ni0xOS42ODEtMjAuODc4LTM0LjEzMy00MS44NDEtMzQuMTMzYy04LjUzMy0xMC4yNC0yMC40OC0xNy4wNjctMzQuMTMzLTE3LjA2N2MtMTYuMjEzLDAtMzAuNzIsOS4zODctMzcuNTQ3LDIzLjA0DQoJCQkJYy02LjgyNy0zLjQxMy0xNC41MDctNS45NzMtMjIuMTg3LTUuOTczYy0yMC45NjMsMC0zNy45ODEsMTQuNDUyLTQxLjg0MSwzNC4xMzNIMjQuNmMtMTQuNTA3LDAtMjUuNiwxMS4wOTMtMjUuNiwyNS42DQoJCQkJYzAsMTQuNTA3LDExLjA5MywyNS42LDI1LjYsMjUuNmgxMC4yNTVsMjMuMDI1LDkxLjMwN2M2LjgyNywyNi40NTMsMzAuNzIsNDUuMjI3LDU4LjAyNyw0NS4yMjdoNi44MjdsLTExLjA5MywyMi4xODcNCgkJCQljLTIuNTYsNC4yNjctMC44NTMsOS4zODcsMy40MTMsMTEuMDkzYzAuODUzLDAuODUzLDIuNTYsMC44NTMsMy40MTMsMC44NTNjMy40MTMsMCw1Ljk3My0xLjcwNyw3LjY4LTQuMjY3TDE0MS4wOCw0NTkuOGgyMzYuOA0KCQkJCWwxNC41MDcsMjkuMDEzYzEuNzA3LDMuNDEzLDQuMjY3LDUuMTIsNy42OCw1LjEyYzEuNzA3LDAsMi41NiwwLDMuNDEzLTEuNzA3YzMuNDEzLTEuNzA3LDUuMTItNi44MjcsMy40MTMtMTEuMDkzDQoJCQkJbC0xMC42ODktMjEuMzc5YzI2LjQxOS0wLjkzOCw0OS4yNjYtMTkuMzksNTUuOTE2LTQ0LjMyOGwyMy4yNC05Mi4xNmgxMC4wNGMxNC41MDcsMCwyNS42LTExLjA5MywyNS42LTI1LjYNCgkJCQlDNTExLDI4My4xNiw0OTkuOTA3LDI3Mi4wNjcsNDg1LjQsMjcyLjA2N3ogTTM2NS4wOCwxMTguNDY3aC00OC42NGMzLjQxMy0xMC4yNCwxMy42NTMtMTcuMDY3LDI0Ljc0Ny0xNy4wNjcNCgkJCQlTMzYxLjY2NywxMDguMjI3LDM2NS4wOCwxMTguNDY3eiBNNjcuMjY3LDI1NWM3LjY4LDAsMTQuNTA3LDMuNDEzLDIwLjQ4LDkuMzg3YzEuNzA3LDIuNTYsNS4xMiwzLjQxMyw4LjUzMywyLjU2DQoJCQkJczUuMTItMy40MTMsNS45NzMtNi44MjdjMi41Ni0xMi44LDEyLjgtMjIuMTg3LDI1LjYtMjIuMTg3YzkuMzg3LDAsMTcuOTIsNC4yNjcsMjIuMTg3LDEyLjhjMS43MDcsMy40MTMsNS45NzMsNS4xMiw5LjM4Nyw0LjI2Nw0KCQkJCWMwLjg1MywwLDEuNzA3LDAsMi41NiwwYzExLjA5MywwLDIwLjQ4LDYuODI3LDIzLjg5MywxNy4wNjdINDMuMzczQzQ2Ljc4NywyNjEuODI3LDU2LjE3MywyNTUsNjcuMjY3LDI1NXogTTQzNi43Niw0MTAuMzA3DQoJCQkJYy01LjEyLDE4Ljc3My0yMi4xODcsMzIuNDI3LTQxLjgxMywzMi40MjdIMTE2Ljc2Yy0xOS42MjcsMC0zNi42OTMtMTMuNjUzLTQxLjgxMy0zMi40MjdsLTIyLjE4Ny04Ny4wNGg0MDQuNDhMNDM2Ljc2LDQxMC4zMDd6DQoJCQkJIE00ODUuNCwzMDYuMmgtMTcuMDY3SDQxLjY2N0gyNC42Yy01LjEyLDAtOC41MzMtMy40MTMtOC41MzMtOC41MzNzMy40MTMtOC41MzMsOC41MzMtOC41MzNoOC41MzNoMTYyLjEzM0g0ODUuNA0KCQkJCWM1LjEyLDAsOC41MzMsMy40MTMsOC41MzMsOC41MzNTNDkwLjUyLDMwNi4yLDQ4NS40LDMwNi4yeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzA2LjIsMTczLjkzM2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMjk3LjY2NywxNzAuNTIsMzAxLjA4LDE3My45MzMsMzA2LjIsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwNi4yLDIxMy4xODdjNS4xMiwwLDguNTMzLTQuMjY3LDguNTMzLTguNTMzdi05LjM4N2MwLTUuMTItMy40MTMtOC41MzMtOC41MzMtOC41MzNzLTguNTMzLDMuNDEzLTguNTMzLDguNTMzdjkuMzg3DQoJCQkJQzI5Ny42NjcsMjA5Ljc3MywzMDEuMDgsMjEzLjE4NywzMDYuMiwyMTMuMTg3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzA2LjIsMjQ2LjQ2N2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMjk3LjY2NywyNDMuMDUzLDMwMS4wOCwyNDYuNDY3LDMwNi4yLDI0Ni40Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNDAuMzMzLDE3My45MzNjNS4xMiwwLDguNTMzLTMuNDEzLDguNTMzLTguNTMzdi00LjI2N2MwLTUuMTItMy40MTMtOC41MzMtOC41MzMtOC41MzMNCgkJCQljLTUuMTIsMC04LjUzMywzLjQxMy04LjUzMyw4LjUzM3Y0LjI2N0MzMzEuOCwxNzAuNTIsMzM1LjIxMywxNzMuOTMzLDM0MC4zMzMsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMS44LDIwNC42NTNjMCw1LjEyLDMuNDEzLDguNTMzLDguNTMzLDguNTMzYzUuMTIsMCw4LjUzMy00LjI2Nyw4LjUzMy04LjUzM3YtOS4zODdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJYy01LjEyLDAtOC41MzMsMy40MTMtOC41MzMsOC41MzNWMjA0LjY1M3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTMzMS44LDIzNy45MzNjMCw1LjEyLDMuNDEzLDguNTMzLDguNTMzLDguNTMzYzUuMTIsMCw4LjUzMy0zLjQxMyw4LjUzMy04LjUzM3YtNC4yNjdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJYy01LjEyLDAtOC41MzMsMy40MTMtOC41MzMsOC41MzNWMjM3LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM3NC40NjcsMTczLjkzM2M1LjEyLDAsOC41MzMtMy40MTMsOC41MzMtOC41MzN2LTQuMjY3YzAtNS4xMi0zLjQxMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy40MTMtOC41MzMsOC41MzN2NC4yNjcNCgkJCQlDMzY1LjkzMywxNzAuNTIsMzY5LjM0NywxNzMuOTMzLDM3NC40NjcsMTczLjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2NS45MzMsMjA0LjY1M2MwLDUuMTIsMy40MTMsOC41MzMsOC41MzMsOC41MzNTMzgzLDIwOC45MiwzODMsMjA0LjY1M3YtOS4zODdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJcy04LjUzMywzLjQxMy04LjUzMyw4LjUzM1YyMDQuNjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjkzMywyMzcuOTMzYzAsNS4xMiwzLjQxMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjQxMyw4LjUzMy04LjUzM3YtNC4yNjdjMC01LjEyLTMuNDEzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJcy04LjUzMywzLjQxMy04LjUzMyw4LjUzM1YyMzcuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Wxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ5NiwzNDRoLThWMjgwYTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJWMTEyYTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJIODhhMzIuMDQyLDMyLjA0MiwwLDAsMC0zMiwzMlYyNDhhMzIuMDQyLDMyLjA0MiwwLDAsMC0zMiwzMnY2NEgxNmE4LDgsMCwwLDAtOCw4djMyYTgsOCwwLDAsMCw4LDhoOHYzMmE4LDgsMCwwLDAsOCw4SDU2YTcuOTksNy45OSwwLDAsMCw3Ljg0LTYuNDNMNzAuNTYsMzkySDQ0MS40NGw2LjcyLDMzLjU3QTcuOTksNy45OSwwLDAsMCw0NTYsNDMyaDI0YTgsOCwwLDAsMCw4LThWMzkyaDhhOCw4LDAsMCwwLDgtOFYzNTJBOCw4LDAsMCwwLDQ5NiwzNDRaTTcyLDExMkExNi4wMjEsMTYuMDIxLDAsMCwxLDg4LDk2SDQyNGExNi4wMjEsMTYuMDIxLDAsMCwxLDE2LDE2VjI0OEg0MjRWMjE2YTMyLjA0MiwzMi4wNDIsMCwwLDAtMzItMzJIMjk2YTMyLjA0MiwzMi4wNDIsMCwwLDAtMzIsMzJ2MzJIMjQ4VjIxNmEzMi4wNDIsMzIuMDQyLDAsMCwwLTMyLTMySDEyMGEzMi4wNDIsMzIuMDQyLDAsMCwwLTMyLDMydjMySDcyWk00MDgsMjE2djMySDI4MFYyMTZhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNi0xNmg5NkExNi4wMjEsMTYuMDIxLDAsMCwxLDQwOCwyMTZabS0xNzYsMHYzMkgxMDRWMjE2YTE2LjAyMSwxNi4wMjEsMCwwLDEsMTYtMTZoOTZBMTYuMDIxLDE2LjAyMSwwLDAsMSwyMzIsMjE2Wk00MCwyODBhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNi0xNkg0NTZhMTYuMDIxLDE2LjAyMSwwLDAsMSwxNiwxNnY2NEg0MFptOS40NCwxMzZINDBWMzkySDU0LjI0Wk00NzIsNDE2aC05LjQ0bC00LjgtMjRINDcyWm0xNi00MEgyNFYzNjBINDg4WiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Jxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NS4zOTMgNDUuMzkzIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNNDMuNTE4LDEyLjcwOUwyNS4xNzgsMC43MjhjLTEuNTExLTAuOTc4LTMuNDU4LTAuOTY4LTQuOTYsMC4wMjFMMS44NTksMTIuNzE5Yy0xLjE0LDAuNzUxLTEuNDU1LDIuMjg0LTAuNzA1LDMuNDI0DQoJCQljMC43NTEsMS4xNCwyLjI4MywxLjQ1NiwzLjQyNCwwLjcwNEwyMi43MTUsNS4wMjFMNDAuODMsMTYuODU3YzAuNDE2LDAuMjY5LDAuODgxLDAuMzk2LDEuMzQxLDAuMzk2DQoJCQljMC44MTIsMCwxLjYwNC0wLjM5NywyLjA3Ny0xLjEyN0M0NC45OSwxNC45OCw0NC42NjIsMTMuNDUyLDQzLjUxOCwxMi43MDl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zOC44NzksMjcuNjE2Yy0wLjE1MS0wLjg2NS0wLjkwMy0xLjUwNS0xLjc4LTEuNTA1aC0xLjAwOGwtMC4zODMtMy45ODdjLTAuNDA5LTQuMjY0LTMuOTQ4LTcuNDktOC4yMzItNy40OUgxNy45Mg0KCQkJYy00LjI4NSwwLTcuODIzLDMuMjI3LTguMjMzLDcuNDlsLTAuMzgyLDMuOTg3SDguMjk2Yy0wLjg3OCwwLTEuNjI5LDAuNjQtMS43ODIsMS41MDVsLTEuNSw4LjUwNA0KCQkJYy0wLjE4NiwxLjA1NCwwLjExMiwyLjEzOSwwLjgsMi45NTdjMC42NjIsMC43ODgsMS42MzcsMS4yNTgsMi42NTcsMS4yOTN2MS40MTJjMCwxLjk5OSwxLjYwMiwzLjYxLDMuNjAzLDMuNjFoMS4xMzgNCgkJCWMxLjk5OSwwLDMuNjI1LTEuNjExLDMuNjI1LTMuNjF2LTEuMzg5aDExLjczMnYxLjM4NmMwLDIsMS42MTMsMy42MTMsMy42MTIsMy42MTNoMS4xMzljMS45OTksMCwzLjYxNC0xLjYxMywzLjYxNC0zLjYxM1Y0MC4zNw0KCQkJYzEuMDItMC4wMzUsMS45ODktMC41MDEsMi42NDktMS4yODhjMC42ODgtMC44MiwwLjk4Mi0xLjg5OSwwLjc5OC0yLjk1NUwzOC44NzksMjcuNjE2eiBNMTEuNjQyLDM3LjExMw0KCQkJYy0xLjY4NywwLTMuMDU1LTEuMzY3LTMuMDU1LTMuMDU2YzAtMS42ODksMS4zNjgtMy4wNTcsMy4wNTUtMy4wNTdjMS42ODgsMCwzLjA1NywxLjM2NywzLjA1NywzLjA1Nw0KCQkJQzE0LjY5OSwzNS43NDYsMTMuMzMsMzcuMTEzLDExLjY0MiwzNy4xMTN6IE0xMi40MDQsMjYuMTExbDAuMzUzLTMuNjc4YzAuMjU3LTIuNjc0LDIuNDc2LTQuNjg4LDUuMTYzLTQuNjg4aDAuNTUxdjEuMTU2DQoJCQljMCwxLjAwMywwLjc5NywxLjgwMiwxLjc5OSwxLjgwMmg0Ljg1NmMxLjAwMiwwLDEuODEzLTAuNzk5LDEuODEzLTEuODAydi0xLjE1NWgwLjUzN2MyLjY4NywwLDQuOTA2LDIuMDE0LDUuMTYyLDQuNjg4DQoJCQlsMC4zNTQsMy42NzhMMTIuNDA0LDI2LjExMUwxMi40MDQsMjYuMTExeiBNMzMuNzUsMzcuMTEzYy0xLjY4NywwLTMuMDU1LTEuMzY3LTMuMDU1LTMuMDU2YzAtMS42ODksMS4zNjgtMy4wNTcsMy4wNTUtMy4wNTcNCgkJCWMxLjY4OCwwLDMuMDU3LDEuMzY3LDMuMDU3LDMuMDU3QzM2LjgwNywzNS43NDYsMzUuNDM4LDM3LjExMywzMy43NSwzNy4xMTN6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Bxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00OTQuNTk0LDM5NC4yMzdoLTE5LjQ2MWMxMi45NTQtMTkuNTQzLDIwLjUxMi00Mi45NTgsMjAuNTEyLTY4LjEwOWMwLTY4LjE1Ny01NS40NDktMTIzLjYwNi0xMjMuNjA2LTEyMy42MDYNCgkJCWMtNy4xNzEsMC0xNC4yLDAuNjIyLTIxLjA0LDEuNzk5YzE3Ljg1My0yMS40MzUsMjguNjA4LTQ4Ljk3OSwyOC42MDgtNzguOTlDMzc5LjYwNiw1Ny4xNzQsMzI0LjE1NywxLjcyNCwyNTYsMS43MjQNCgkJCWMtNjguMTU3LDAtMTIzLjYwNiw1NS40NDktMTIzLjYwNiwxMjMuNjA2YzAsMzAuMDEyLDEwLjc1NSw1Ny41NTUsMjguNjA4LDc4Ljk5Yy02Ljg0LTEuMTc4LTEzLjg2OS0xLjc5OS0yMS4wNC0xLjc5OQ0KCQkJYy02OC4xNTcsMC0xMjMuNjA2LDU1LjQ0OS0xMjMuNjA2LDEyMy42MDZjMCwyNS4xNTEsNy41NTgsNDguNTY3LDIwLjUxMiw2OC4xMDlIMTcuNDA2TDAsNTEwLjI3Nmg5My4yOTRsMTUuMTM1LTIwLjE4MWg2My4wNjQNCgkJCWwxNS4xMzUsMjAuMTgxaDEzOC43NDJsMTUuMTM1LTIwLjE4MWg2My4wNjRsMTUuMTM1LDIwLjE4MUg1MTJMNDk0LjU5NCwzOTQuMjM3eiBNNDY5LjUxOSwzNzMuNjdsLTEzLjE0Mi03LjU4OA0KCQkJYzQuNzM2LTkuOTU4LDcuNzYtMjAuODgxLDguNjg4LTMyLjM4N2gxNS4xNzVDNDc5LjI1NCwzNDcuOTQ4LDQ3NS41MDMsMzYxLjQ1LDQ2OS41MTksMzczLjY3eiBNNDA5Ljg3NywzOTQuNTMzdi0xMzYuODENCgkJCWMyNC4wNDUsMTMuMzU0LDQwLjM2MSwzOS4wMDUsNDAuMzYxLDY4LjQwNVM0MzMuOTIyLDM4MS4xNzgsNDA5Ljg3NywzOTQuNTMzeiBNNDE5LjU4MSw0MjMuNjA4DQoJCQljLTEyLjIyLDUuOTg0LTI1LjcyMiw5LjczNC0zOS45NzUsMTAuNzIydi0xNS4xNzVjMTEuNTA2LTAuOTI3LDIyLjQyOS0zLjk1MSwzMi4zODctOC42ODhMNDE5LjU4MSw0MjMuNjA4eiBNNDQ4Ljc4NywzNzkuMTc2DQoJCQlsMTMuMTQ4LDcuNTkxYy03Ljc5NCwxMS41MTctMTcuNzQsMjEuNDYzLTI5LjI1NiwyOS4yNTZsLTcuNTkxLTEzLjE0OEM0MzQuMzM2LDM5Ni40NjQsNDQyLjM3NSwzODguNDI1LDQ0OC43ODcsMzc5LjE3NnoNCgkJCSBNNDgwLjI0MSwzMTguNTZoLTE1LjE3NWMtMC45MjctMTEuNTA2LTMuOTUxLTIyLjQyOS04LjY4OC0zMi4zODdsMTMuMTQyLTcuNTg4QzQ3NS41MDMsMjkwLjgwNSw0NzkuMjU0LDMwNC4zMDcsNDgwLjI0MSwzMTguNTZ6DQoJCQkgTTQzMi42NzgsMjM2LjIzMWMxMS41MTYsNy43OTQsMjEuNDYzLDE3Ljc0LDI5LjI1NiwyOS4yNTZsLTEzLjE0OCw3LjU5MWMtNi40MTItOS4yNDktMTQuNDUtMTcuMjg3LTIzLjY5OS0yMy42OTkNCgkJCUw0MzIuNjc4LDIzNi4yMzF6IE00MTEuOTk0LDI0MS43ODljLTkuOTU4LTQuNzM2LTIwLjg4MS03Ljc2LTMyLjM4Ny04LjY4OHYtMTUuMTc2YzE0LjI1MiwwLjk4NywyNy43NTQsNC43MzgsMzkuOTc0LDEwLjcyMg0KCQkJTDQxMS45OTQsMjQxLjc4OXogTTM5NC43NDIsMjUxLjN2MTQ5LjY1NWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyYy03Ljg5NCwwLTE1LjUxNC0xLjE4Ny0yMi43MDMtMy4zNzJWMjUxLjMNCgkJCWM3LjE4OS0yLjE4NiwxNC44MS0zLjM3MiwyMi43MDMtMy4zNzJDMzc5LjkzMiwyNDcuOTI4LDM4Ny41NTIsMjQ5LjExNCwzOTQuNzQyLDI1MS4zeiBNMTc3LjgsMzk0LjUzM3YtMTM2LjgxDQoJCQljMjQuMDQ1LDEzLjM1NCw0MC4zNjEsMzkuMDA1LDQwLjM2MSw2OC40MDVTMjAxLjg0NSwzODEuMTc4LDE3Ny44LDM5NC41MzN6IE0xODcuNTA0LDQyMy42MDgNCgkJCWMtMTIuMjIsNS45ODQtMjUuNzIyLDkuNzM0LTM5Ljk3NSwxMC43MjJ2LTE1LjE3NWMxMS41MDYtMC45MjcsMjIuNDI5LTMuOTUxLDMyLjM4Ny04LjY4OEwxODcuNTA0LDQyMy42MDh6IE0yODIuMTQyLDI2NS40ODgNCgkJCWM3Ljc5NC0xMS41MTcsMTcuNzQtMjEuNDYzLDI5LjI1Ni0yOS4yNTZsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OUwyODIuMTQyLDI2NS40ODh6IE0yODcuNywyODYuMTczDQoJCQljLTQuNzM2LDkuOTU4LTcuNzYsMjAuODgxLTguNjg4LDMyLjM4N2gtMTUuMTc1YzAuOTg3LTE0LjI1Myw0LjczNy0yNy43NTQsMTAuNzIyLTM5Ljk3NUwyODcuNywyODYuMTczeiBNMzE2LjY0LDIxNS4yMjcNCgkJCWwtNy41OTEtMTMuMTQ4YzkuMjQ5LTYuNDEyLDE3LjI4Ny0xNC40NSwyMy42OTktMjMuNjk5bDEzLjE0OCw3LjU5MUMzMzguMTAzLDE5Ny40ODcsMzI4LjE1NywyMDcuNDMzLDMxNi42NCwyMTUuMjI3eg0KCQkJIE0yOTMuODM5LDE5My43MzZWNTYuOTI1QzMxNy44ODQsNzAuMjgsMzM0LjIsOTUuOTMsMzM0LjIsMTI1LjMzMVMzMTcuODg0LDE4MC4zODEsMjkzLjgzOSwxOTMuNzM2eiBNMjk1Ljk1NSwyMDkuNjY5DQoJCQlsNy41ODcsMTMuMTQyYy0xMi4yMiw1Ljk4NC0yNS43MjIsOS43MzQtMzkuOTc1LDEwLjcyMnYtMTUuMTc1QzI3NS4wNzQsMjE3LjQzLDI4NS45OTYsMjE0LjQwNywyOTUuOTU1LDIwOS42Njl6IE0yNzcuMDQsMjQ3LjEzOA0KCQkJYy04Ljk1MSwxMC43NDctMTYuMTE5LDIzLjAyOC0yMS4wNCwzNi4zODljLTQuOTIxLTEzLjM2MS0xMi4wODktMjUuNjQxLTIxLjA0LTM2LjM4OWM2Ljg0LDEuMTc4LDEzLjg2OSwxLjc5OSwyMS4wNCwxLjc5OQ0KCQkJQzI2My4xNzEsMjQ4LjkzNywyNzAuMiwyNDguMzE1LDI3Ny4wNCwyNDcuMTM4eiBNMjQ4LjE2NCwzMTguNTZoLTE1LjE3NWMtMC45MjctMTEuNTA2LTMuOTUxLTIyLjQyOS04LjY4OC0zMi4zODdsMTMuMTQyLTcuNTg4DQoJCQlDMjQzLjQyNiwyOTAuODA1LDI0Ny4xNzcsMzA0LjMwNywyNDguMTY0LDMxOC41NnogTTI0OC40MzEsMjMzLjUzM2MtMTQuMjUyLTAuOTg3LTI3Ljc1NC00LjczOC0zOS45NzQtMTAuNzIybDcuNTg3LTEzLjE0Mg0KCQkJYzkuOTU4LDQuNzM2LDIwLjg4MSw3Ljc2LDMyLjM4Nyw4LjY4OFYyMzMuNTMzeiBNMjE4LjE2MSwxOTMuNzM2Yy0yNC4wNDUtMTMuMzU0LTQwLjM2MS0zOS4wMDUtNDAuMzYxLTY4LjQwNQ0KCQkJYzAtMjkuNCwxNi4zMTYtNTUuMDUxLDQwLjM2MS02OC40MDVWMTkzLjczNnogTTE3OS4yNTEsMTc4LjM3OWM2LjQxMiw5LjI0OSwxNC40NSwxNy4yODcsMjMuNjk5LDIzLjY5OWwtNy41OTEsMTMuMTQ4DQoJCQljLTExLjUxNi03Ljc5NC0yMS40NjMtMTcuNzQtMjkuMjU2LTI5LjI1NkwxNzkuMjUxLDE3OC4zNzl6IE0yMDAuNjAxLDIzNi4yMzFjMTEuNTE2LDcuNzk0LDIxLjQ2MywxNy43NCwyOS4yNTYsMjkuMjU2DQoJCQlsLTEzLjE0OCw3LjU5MWMtNi40MTItOS4yNDktMTQuNDUtMTcuMjg3LTIzLjY5OS0yMy42OTlMMjAwLjYwMSwyMzYuMjMxeiBNMjE2LjcxLDM3OS4xNzZsMTMuMTQ4LDcuNTkxDQoJCQljLTcuNzk0LDExLjUxNy0xNy43NCwyMS40NjMtMjkuMjU2LDI5LjI1NmwtNy41OTEtMTMuMTQ4QzIwMi4yNTksMzk2LjQ2NCwyMTAuMjk4LDM4OC40MjUsMjE2LjcxLDM3OS4xNzZ6IE0yMjQuMywzNjYuMDgyDQoJCQljNC43MzYtOS45NTgsNy43Ni0yMC44ODEsOC42ODgtMzIuMzg3aDE1LjE3NWMtMC45ODcsMTQuMjUzLTQuNzM3LDI3Ljc1NC0xMC43MjIsMzkuOTc1TDIyNC4zLDM2Ni4wODJ6IE0yNTYsMzY4LjcyOQ0KCQkJYzMuMzMyLDkuMDQ1LDcuNjk3LDE3LjU5MywxMi45NDQsMjUuNTA4aC0yNS44ODhDMjQ4LjMwMywzODYuMzIxLDI1Mi42NjgsMzc3Ljc3NCwyNTYsMzY4LjcyOXogTTI2My44MzYsMzMzLjY5NWgxNS4xNzUNCgkJCWMwLjkyNywxMS41MDYsMy45NTEsMjIuNDI5LDguNjg4LDMyLjM4N2wtMTMuMTQyLDcuNTg4QzI2OC41NzQsMzYxLjQ1LDI2NC44MjMsMzQ3Ljk0OCwyNjMuODM2LDMzMy42OTV6IE0yOTUuMjksMzc5LjE3Ng0KCQkJYzYuNDEyLDkuMjQ5LDE0LjQ1LDE3LjI4NywyMy42OTksMjMuNjk5bC03LjU5MSwxMy4xNDhjLTExLjUxNi03Ljc5NC0yMS40NjMtMTcuNzQtMjkuMjU2LTI5LjI1NkwyOTUuMjksMzc5LjE3NnoNCgkJCSBNMjkzLjgzOSwzMjYuMTI4YzAtMjkuNCwxNi4zMTYtNTUuMDUxLDQwLjM2MS02OC40MDV2MTM2LjgxQzMxMC4xNTUsMzgxLjE3OCwyOTMuODM5LDM1NS41MjgsMjkzLjgzOSwzMjYuMTI4eiBNMzMyLjA4NCw0MTAuNDY2DQoJCQljOS45NTgsNC43MzYsMjAuODgxLDcuNzYsMzIuMzg3LDguNjg4djE1LjE3NWMtMTQuMjUzLTAuOTg3LTI3Ljc1NC00LjczOC0zOS45NzUtMTAuNzIyTDMzMi4wODQsNDEwLjQ2NnogTTM2NC40NzEsMjE3LjkyNVYyMzMuMQ0KCQkJYy0xMS41MDYsMC45MjctMjIuNDI5LDMuOTUxLTMyLjM4Nyw4LjY4OGwtNy41ODctMTMuMTQyQzMzNi43MTYsMjIyLjY2MywzNTAuMjE4LDIxOC45MTIsMzY0LjQ3MSwyMTcuOTI1eiBNMzUzLjQ4LDE3Mi44NzMNCgkJCWwtMTMuMTQyLTcuNTg4YzQuNzM2LTkuOTU4LDcuNzYtMjAuODgxLDguNjg4LTMyLjM4N2gxNS4xNzVDMzYzLjIxNiwxNDcuMTUxLDM1OS40NjUsMTYwLjY1MywzNTMuNDgsMTcyLjg3M3ogTTM2NC4yMDIsMTE3Ljc2Mw0KCQkJaC0xNS4xNzVjLTAuOTI3LTExLjUwNi0zLjk1MS0yMi40MjktOC42ODgtMzIuMzg3bDEzLjE0Mi03LjU4OEMzNTkuNDY1LDkwLjAwOCwzNjMuMjE2LDEwMy41MSwzNjQuMjAyLDExNy43NjN6IE0zMTYuNjQsMzUuNDM0DQoJCQljMTEuNTE2LDcuNzk0LDIxLjQ2MywxNy43NCwyOS4yNTYsMjkuMjU2bC0xMy4xNDgsNy41OTFjLTYuNDEyLTkuMjQ5LTE0LjQ1LTE3LjI4Ny0yMy42OTktMjMuNjk5TDMxNi42NCwzNS40MzR6IE0yOTUuOTU2LDQwLjk5Mg0KCQkJYy05Ljk1OC00LjczNi0yMC44ODEtNy43Ni0zMi4zODctOC42ODhWMTcuMTI4YzE0LjI1MiwwLjk4NywyNy43NTQsNC43MzgsMzkuOTc0LDEwLjcyMkwyOTUuOTU2LDQwLjk5MnogTTI3OC43MDMsNTAuNTAzdjE0OS42NTUNCgkJCWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyYy03Ljg5NCwwLTE1LjUxNC0xLjE4Ny0yMi43MDMtMy4zNzJWNTAuNTAzYzcuMTg5LTIuMTg2LDE0LjgxLTMuMzcyLDIyLjcwMy0zLjM3Mg0KCQkJQzI2My44OTQsNDcuMTMxLDI3MS41MTQsNDguMzE3LDI3OC43MDMsNTAuNTAzeiBNMjQ4LjQzMiwxNy4xMjh2MTUuMTc1Yy0xMS41MDYsMC45MjctMjIuNDI5LDMuOTUxLTMyLjM4Nyw4LjY4OGwtNy41ODctMTMuMTQyDQoJCQlDMjIwLjY3OCwyMS44NjYsMjM0LjE4LDE4LjExNSwyNDguNDMyLDE3LjEyOHogTTE5NS4zNiwzNS40MzRsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OQ0KCQkJbC0xMy4xNDgtNy41OTFDMTczLjg5Nyw1My4xNzQsMTgzLjg0Myw0My4yMjgsMTk1LjM2LDM1LjQzNHogTTE1OC41Miw3Ny43ODhsMTMuMTQyLDcuNTg4Yy00LjczNiw5Ljk1OC03Ljc2LDIwLjg4MS04LjY4OCwzMi4zODcNCgkJCWgtMTUuMTc1QzE0OC43ODUsMTAzLjUxLDE1Mi41MzUsOTAuMDA4LDE1OC41Miw3Ny43ODh6IE0xNTguNTIsMTcyLjg3M2MtNS45ODQtMTIuMjItOS43MzUtMjUuNzIyLTEwLjcyMi0zOS45NzVoMTUuMTc1DQoJCQljMC45MjcsMTEuNTA2LDMuOTUxLDIyLjQyOSw4LjY4OCwzMi4zODdMMTU4LjUyLDE3Mi44NzN6IE0xODcuNTA0LDIyOC42NDdsLTcuNTg3LDEzLjE0MmMtOS45NTgtNC43MzYtMjAuODgxLTcuNzYtMzIuMzg3LTguNjg4DQoJCQl2LTE1LjE3NkMxNjEuNzgyLDIxOC45MTIsMTc1LjI4NCwyMjIuNjY0LDE4Ny41MDQsMjI4LjY0N3ogTTE2Mi42NjUsMjUxLjN2MTQ5LjY1NWMtNy4xODksMi4xODYtMTQuODEsMy4zNzItMjIuNzAzLDMuMzcyDQoJCQljLTcuODk0LDAtMTUuNTE0LTEuMTg3LTIyLjcwMy0zLjM3MlYyNTEuM2M3LjE4OS0yLjE4NiwxNC44MS0zLjM3MiwyMi43MDMtMy4zNzJDMTQ3Ljg1NSwyNDcuOTI4LDE1NS40NzUsMjQ5LjExNCwxNjIuNjY1LDI1MS4zeg0KCQkJIE02MS43NjIsMzI2LjEyOGMwLTI5LjQsMTYuMzE2LTU1LjA1MSw0MC4zNjEtNjguNDA1djEzNi44MUM3OC4wNzgsMzgxLjE3OCw2MS43NjIsMzU1LjUyOCw2MS43NjIsMzI2LjEyOHogTTg2LjkxMyw0MDIuODc2DQoJCQlsLTcuNTkxLDEzLjE0OGMtMTEuNTE2LTcuNzk0LTIxLjQ2My0xNy43NC0yOS4yNTYtMjkuMjU2bDEzLjE0OC03LjU5MUM2OS42MjUsMzg4LjQyNSw3Ny42NjQsMzk2LjQ2NCw4Ni45MTMsNDAyLjg3NnoNCgkJCSBNMTAwLjAwNyw0MTAuNDY2YzkuOTU4LDQuNzM2LDIwLjg4MSw3Ljc2LDMyLjM4Nyw4LjY4OHYxNS4xNzVjLTE0LjI1My0wLjk4Ny0yNy43NTQtNC43MzgtMzkuOTc1LTEwLjcyMkwxMDAuMDA3LDQxMC40NjZ6DQoJCQkgTTEzMi4zOTQsMjE3LjkyNVYyMzMuMWMtMTEuNTA2LDAuOTI3LTIyLjQyOSwzLjk1MS0zMi4zODcsOC42ODhsLTcuNTg3LTEzLjE0MkMxMDQuNjM5LDIyMi42NjMsMTE4LjE0MSwyMTguOTEyLDEzMi4zOTQsMjE3LjkyNQ0KCQkJeiBNNzkuMzIyLDIzNi4yMzFsNy41OTEsMTMuMTQ4Yy05LjI0OSw2LjQxMi0xNy4yODcsMTQuNDUtMjMuNjk5LDIzLjY5OWwtMTMuMTQ4LTcuNTkxDQoJCQlDNTcuODU5LDI1My45NzEsNjcuODA1LDI0NC4wMjUsNzkuMzIyLDIzNi4yMzF6IE00Mi40ODEsMjc4LjU4NWwxMy4xNDIsNy41ODhjLTQuNzM2LDkuOTU4LTcuNzYsMjAuODgxLTguNjg4LDMyLjM4N0gzMS43NTkNCgkJCUMzMi43NDYsMzA0LjMwNywzNi40OTcsMjkwLjgwNSw0Mi40ODEsMjc4LjU4NXogTTMxLjc1OSwzMzMuNjk1aDE1LjE3NWMwLjkyNywxMS41MDYsMy45NTEsMjIuNDI5LDguNjg4LDMyLjM4N0w0Mi40OCwzNzMuNjcNCgkJCUMzNi40OTcsMzYxLjQ1LDMyLjc0NiwzNDcuOTQ4LDMxLjc1OSwzMzMuNjk1eiBNNDI2LjI3NCw0OTUuMTRsLTE1LjEzNS0yMC4xODFoLTc4LjJsLTE1LjEzNSwyMC4xODFIMTk0LjE5N2wtMTUuMTM1LTIwLjE4MQ0KCQkJaC03OC4yTDg1LjcyNiw0OTUuMTRIMTcuNTc1bDEyLjg2NS04NS43NjhoMTguMjNjMjIuNjIsMjQuNzg2LDU1LjE3MSw0MC4zNjEsOTEuMjkxLDQwLjM2MXM2OC42NzEtMTUuNTc1LDkxLjI5MS00MC4zNjFoNDkuNDk0DQoJCQljMjIuNjIsMjQuNzg2LDU1LjE3MSw0MC4zNjEsOTEuMjkxLDQwLjM2MXM2OC42NzEtMTUuNTc1LDkxLjI5MS00MC4zNjFoMTguMjNsMTIuODY1LDg1Ljc2OEg0MjYuMjc0eiIvPg0KICAgICAgICA8cmVjdCB4PSIzMDUuOTQ4IiB5PSIxMTYuNzU1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIxOTAuOTE5IiB5PSIxMTYuNzU1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSIxMTEuMjA1IiB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjE1LjEzNSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSI2NS43OTkiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjI0OC40MzMiIHk9IjE3MS43NDciIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQyMS45ODYiIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjMwNi45NTciIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjMxMi4wMDIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjI2Ni41OTYiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjM2NC40NzIiIHk9IjM3Mi41NDQiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjE4OS45MSIgeT0iMzE3LjU1MiIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iNzQuODgiIHk9IjMxNy41NTIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjMxMi4wMDIiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjI2Ni41OTYiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMzAuMjcxIi8+DQogICAgICAgIDxyZWN0IHg9IjEzMi4zOTUiIHk9IjM3Mi41NDQiIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjQ2MS4zODciIHk9IjQ3MC44ODEiIHRyYW5zZm9ybT0ibWF0cml4KDAuOTg4OSAtMC4xNDgzIDAuMTQ4MyAwLjk4ODkgLTY1Ljc3MiA3NC44NDExKSINCiAgICAgICAgICAgICAgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iNDU2LjIxIiB5PSI0MzEuOTM1IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjk4ODkgLTAuMTQ4MyAwLjE0ODMgMC45ODg5IC02MC43MTk5IDczLjY5MDMpIg0KICAgICAgICAgICAgICB3aWR0aD0iMTUuMTM1IiBoZWlnaHQ9IjI0LjE0NSIvPg0KICAgICAgICA8cmVjdCB4PSIyNDguNDMzIiB5PSI0NjQuODciIHdpZHRoPSI0NS40MDYiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjIxOC4xNjIiIHk9IjQ2NC44NyIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMjYzLjU2OSIgeT0iNDI0LjUwOSIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMjMzLjI5OCIgeT0iNDI0LjUwOSIgd2lkdGg9IjE1LjEzNSIgaGVpZ2h0PSIxNS4xMzUiLz4NCiAgICAgICAgPHJlY3QgeD0iMzYuMTI3IiB5PSI0MzYuNDYxIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjE0ODMgLTAuOTg4OSAwLjk4ODkgMC4xNDgzIC0zOTguMDY3NSA0MjUuODQyNykiDQogICAgICAgICAgICAgIHdpZHRoPSIyNC4xNDUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgICAgIDxyZWN0IHg9IjM1LjQ2OCIgeT0iNDcwLjg2IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjE0ODMgLTAuOTg4OSAwLjk4ODkgMC4xNDgzIC00MzYuNDgzOCA0NTAuMDMyNSkiDQogICAgICAgICAgICAgIHdpZHRoPSIxNS4xMzUiIGhlaWdodD0iMTUuMTM1Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Rxe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTYxLDIxSDNhMSwxLDAsMCwwLDAsMkg2MWExLDEsMCwwLDAsMC0yWiIvPg0KICAgICAgICA8cGF0aCBkPSJNNjEsMkg0OWExLDEsMCwwLDAtMSwxVjE3SDQ2di0uNzY0YTEwLjUzMywxMC41MzMsMCwwLDAtMS4xLTQuNjgzQTguNTIyLDguNTIyLDAsMCwxLDQ0LDcuNzY0VjNhMSwxLDAsMCwwLTEtMUgzOWExLDEsMCwwLDAtMSwxVjcuNzY0YTguNTIyLDguNTIyLDAsMCwxLS45LDMuNzg5Yy0uMDM5LjA4LS4wNjcuMTY1LS4xLjI0Ni0uMDM4LS4wODEtLjA2Ni0uMTY2LS4xLS4yNDZBOC41MjIsOC41MjIsMCwwLDEsMzYsNy43NjRWM2ExLDEsMCwwLDAtMS0xSDMxYTEsMSwwLDAsMC0xLDFWNy43NjRhOC41MjIsOC41MjIsMCwwLDEtLjg5NSwzLjc4OUExMC41MzMsMTAuNTMzLDAsMCwwLDI4LDE2LjIzNlYxN0gxOFYxMC40MTRhMi4zOTQsMi4zOTQsMCwwLDEsLjcwNy0xLjcwNkE0LjM4NSw0LjM4NSwwLDAsMCwyMCw1LjU4NlY0aDJWNS41ODZhNC4zODUsNC4zODUsMCwwLDAsMS4yOTMsMy4xMjJBMi4zOTQsMi4zOTQsMCwwLDEsMjQsMTAuNDE0VjE0YTEsMSwwLDAsMCwyLDBWMTAuNDE0YTQuMzg1LDQuMzg1LDAsMCwwLTEuMjkzLTMuMTIyQTIuMzk0LDIuMzk0LDAsMCwxLDI0LDUuNTg2VjNhMSwxLDAsMCwwLTEtMUgxOWExLDEsMCwwLDAtMSwxVjUuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDZBNC41MTUsNC41MTUsMCwwLDAsMTcsNy42NDlhNC41MTUsNC41MTUsMCwwLDAtLjI5My0uMzU3QTIuMzk0LDIuMzk0LDAsMCwxLDE2LDUuNTg2VjNhMSwxLDAsMCwwLTEtMUgxMWExLDEsMCwwLDAtMSwxVjUuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDZBNC4zODUsNC4zODUsMCwwLDAsOCwxMC40MTRWMTdIM2ExLDEsMCwwLDAsMCwySDYxYTEsMSwwLDAsMCwwLTJINTBWMTRINjBhMSwxLDAsMCwwLDIsMFYzQTEsMSwwLDAsMCw2MSwyWk00Miw0VjdINDBWNFpNMTAuNzA3LDguNzA4QTQuMzg1LDQuMzg1LDAsMCwwLDEyLDUuNTg2VjRoMlY1LjU4NmE0LjM4NSw0LjM4NSwwLDAsMCwxLjI5MywzLjEyMkEyLjM5NCwyLjM5NCwwLDAsMSwxNiwxMC40MTRWMTJIMTBWMTAuNDE0QTIuMzk0LDIuMzk0LDAsMCwxLDEwLjcwNyw4LjcwOFpNMTAsMTRoNnYzSDEwWm0yMCwyLjIzNmE4LjUyMiw4LjUyMiwwLDAsMSwuODk1LTMuNzg5QTEwLjUzMywxMC41MzMsMCwwLDAsMzIsNy43NjRWNGgyVjcuNzY0YTEwLjUzMywxMC41MzMsMCwwLDAsMS4xLDQuNjgzLDguNTIyLDguNTIyLDAsMCwxLC45LDMuNzg5VjE3SDMwWk0zOCwxN3YtLjc2NGE4LjUyMiw4LjUyMiwwLDAsMSwuOS0zLjc4OUExMC41NDEsMTAuNTQxLDAsMCwwLDM5LjkyNCw5aDIuMTUyYTEwLjU0MSwxMC41NDEsMCwwLDAsMS4wMjksMy40NDcsOC41MjIsOC41MjIsMCwwLDEsLjksMy43ODlWMTdaTTYwLDRWNkg1MFY0Wk01MCwxMlY4SDYwdjRaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik02MSw0NEgzYTEsMSwwLDAsMCwwLDJINjBWNjBINDZWNDlhMSwxLDAsMCwwLTIsMFY2MEg0MlY1M2ExLDEsMCwwLDAtMS0xSDI2YTEsMSwwLDAsMC0xLDF2N0gyMlY0OWExLDEsMCwwLDAtMS0xSDVhMSwxLDAsMCwwLTEsMVY2MEgzYTEsMSwwLDAsMCwwLDJINjFhMSwxLDAsMCwwLDEtMVY0NUExLDEsMCwwLDAsNjEsNDRaTTQwLDU2SDM3VjU0aDNabS01LDBIMzJWNTRoM1ptLTUtMnYySDI3VjU0Wk0yMCw1Mi4zODJhMy45NDcsMy45NDcsMCwwLDAtNiwwVjUwaDZaTTE5LDU1YTIsMiwwLDEsMS0yLTJBMiwyLDAsMCwxLDE5LDU1Wk02LDU0aDZ2Mkg2Wm02LTR2Mkg2VjUwWk02LDU4aDZ2Mkg2Wm04LDJWNTcuNjE4YTMuOTQ3LDMuOTQ3LDAsMCwwLDYsMFY2MFptMTMtMmgzdjJIMjdabTUsMGgzdjJIMzJabTUsMlY1OGgzdjJaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik01Nyw1NmExLDEsMCwwLDAsMS0xVjUxYTEsMSwwLDAsMC0xLTFINDlhMSwxLDAsMCwwLTEsMXY0YTEsMSwwLDAsMCwxLDFabS03LTRoNnYySDUwWiIvPg0KICAgICAgICA8cGF0aCBkPSJNNjAsMjkuMTg0VjI2YTEsMSwwLDAsMC0xLTFINTVhMSwxLDAsMCwwLTEsMXYzLjE4NEEzLDMsMCwwLDAsNTIsMzJ2N2EyLjk2NiwyLjk2NiwwLDAsMCwuMTg0LDFINDlWMzRhMSwxLDAsMCwwLDAtMkg0MWExLDEsMCwwLDAsMCwydjZIMzhWMzFhMSwxLDAsMCwwLTEtMUgyNWExLDEsMCwwLDAtMSwxdjlIMjJWMzlhMSwxLDAsMCwwLTIsMHYxSDE0VjMzLjQxNGEyLjM5NCwyLjM5NCwwLDAsMSwuNzA3LTEuNzA2QTQuMzg1LDQuMzg1LDAsMCwwLDE2LDI4LjU4NlYyN2gydjEuNTg2YTQuMzg1LDQuMzg1LDAsMCwwLDEuMjkzLDMuMTIyQTIuMzk0LDIuMzk0LDAsMCwxLDIwLDMzLjQxNFYzNWExLDEsMCwwLDAsMiwwVjMzLjQxNGE0LjM4NSw0LjM4NSwwLDAsMC0xLjI5My0zLjEyMkEyLjM5NCwyLjM5NCwwLDAsMSwyMCwyOC41ODZWMjZhMSwxLDAsMCwwLTEtMUgxNWExLDEsMCwwLDAtMSwxdjIuNTg2YTIuMzk0LDIuMzk0LDAsMCwxLS43MDcsMS43MDYsNC41MTUsNC41MTUsMCwwLDAtLjI5My4zNTcsNC41MTUsNC41MTUsMCwwLDAtLjI5My0uMzU3QTIuMzk0LDIuMzk0LDAsMCwxLDEyLDI4LjU4NlYyNmExLDEsMCwwLDAtMS0xSDdhMSwxLDAsMCwwLTEsMXYyLjU4NmEyLjM5NCwyLjM5NCwwLDAsMS0uNzA3LDEuNzA2QTQuMzg1LDQuMzg1LDAsMCwwLDQsMzMuNDE0VjQwSDNhMSwxLDAsMCwwLDAsMkg2MWExLDEsMCwwLDAsLjctMS43MTNBMi45NjQsMi45NjQsMCwwLDAsNjIsMzlWMzJBMywzLDAsMCwwLDYwLDI5LjE4NFpNNi43MDcsMzEuNzA4QTQuMzg1LDQuMzg1LDAsMCwwLDgsMjguNTg2VjI3aDJ2MS41ODZhNC4zODUsNC4zODUsMCwwLDAsMS4yOTMsMy4xMjJBMi4zOTQsMi4zOTQsMCwwLDEsMTIsMzMuNDE0VjM1SDZWMzMuNDE0QTIuMzk0LDIuMzk0LDAsMCwxLDYuNzA3LDMxLjcwOFpNNiwzN2g2djNINlpNNTYsMjdoMnYySDU2Wm0tMSw0aDRhMSwxLDAsMCwxLDEsMXYzSDU0VjMyQTEsMSwwLDAsMSw1NSwzMVpNMzYsMzZIMzJWMzJoNFptLTYtNHYySDI2VjMyWm0tNCw0aDR2NEgyNlptNiw0VjM4aDR2MlptMTEsMFYzNGg0djZabTEyLDBhMSwxLDAsMCwxLTEtMVYzN2g2djJhMSwxLDAsMCwxLTEsMVoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Fxe="PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC0xMDggNTEyIDUxMiIgd2lkdGg9IjUxMnB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01MDQgNDguMDE1NjI1aC00OTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOS04LTh2LTMyLjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQ5NmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4djMyLjAxNTYyNWMwIDQuNDI1NzgxLTMuNTc0MjE5IDgtOCA4em0tNDg4LTE2aDQ4MHYtMTYuMDE1NjI1aC00ODB6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMjQ2LjcxODc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQ2LjcxODc1YzAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTI0Ni43MTg3NWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0Ni43MTg3NWMwIDQuNDI1NzgyLTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NiAyOTYuMTYwMTU2Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04di0yNDYuNzE4NzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNDYuNzE4NzVjMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyOTYuMTYwMTU2aC0yNGMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDI0YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00OTYgMjk2LjE2MDE1NmgtMjRjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgyNGM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjU3ODItMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE2MC4xMTMyODFoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDcyIDE4NC4xMjg5MDZoLTQzMmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDQzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNzEuOTg0Mzc1IDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0yMi4wNTg1OTQgMTcuOTM3NS00MCAzOS45OTIxODctNDAgNC40MjE4NzYgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI0IDgtOCA4LTEzLjIyMjY1NiAwLTIzLjk5MjE4NyAxMC43NjU2MjUtMjMuOTkyMTg3IDI0IDAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUyIDE2MC4xMjg5MDZjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yMzQzNzUtMTAuNzY5NTMxLTI0LTIzLjk5MjE4OC0yNC00LjQyMTg3NCAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzgxMjYtOCA4LTggMjIuMDU0Njg4IDAgMzkuOTkyMTg4IDE3Ljk0MTQwNiAzOS45OTIxODggNDAgMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im03OS45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0My45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtOTYgMTA0LjE0NDUzMWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtMjQuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MjQuMDE1NjI1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDgwLjEyODkwNmgtMzJjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgzMmM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTI4IDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTk2IDk2LjEyODkwNmgtMTYuMDE1NjI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDE1NjI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDMuOTY4NzUgOTYuMTI4OTA2aC0xNS45Njg3NWMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDE1Ljk2ODc1YzQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjAuMDA3ODEyIDEyOC4xMjg5MDZoLTE2LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTYuMDMxMjVjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE3NS45ODQzNzUgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTIyLjA1ODU5NCAxNy45Mzc1LTQwIDM5Ljk5MjE4Ny00MCA0LjQyMTg3NiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzgxMjQgOC04IDgtMTMuMjIyNjU2IDAtMjMuOTkyMTg3IDEwLjc2NTYyNS0yMy45OTIxODcgMjQgMCA0LjQyMTg3NS0zLjU3ODEyNSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYgMTYwLjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOCAwLTEzLjIzNDM3NS0xMC43Njk1MzEtMjQtMjMuOTkyMTg4LTI0LTQuNDIxODc0IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNi04IDgtOCAyMi4wNTQ2ODggMCAzOS45OTIxODggMTcuOTQxNDA2IDM5Ljk5MjE4OCA0MCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE4My45ODQzNzUgMTM4Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Mi44Mzk4NDRjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOCA0LjQyMTg3NSAwIDggMy41NzQyMTkgOCA4djQyLjgzOTg0NGMwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSAxMzguOTY4NzVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTQyLjgzOTg0NGMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04IDQuNDIxODc1IDAgOCAzLjU3NDIxOSA4IDh2NDIuODM5ODQ0YzAgNC40MjE4NzUtMy41NzgxMjUgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjAwIDEwNC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTh2LTI0LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djI0LjAxNTYyNWMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiA4MC4xMjg5MDZoLTMyYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMzJjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMiAxMDQuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di0yNC4wMTU2MjVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHYyNC4wMTU2MjVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDAgOTYuMTI4OTA2aC0xNi4wMTU2MjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMTU2MjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI0Ny45Njg3NSA5Ni4xMjg5MDZoLTE1Ljk2ODc1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoMTUuOTY4NzVjNC40MjE4NzUgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc4MTI1IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyNC4wMDc4MTIgMTI4LjEyODkwNmgtMTYuMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGgxNi4wMzEyNWM0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTggOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjU2LjE2Nzk2OSAyODAuMTQ0NTMxYy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtMTMuMjQyMTg3IDEwLjc3NzM0My0yNC4wMTU2MjUgMjQuMDE1NjI1LTI0LjAxNTYyNSA0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDgtNC40MjE4NzUgMC04LjAxNTYyNSAzLjU4OTg0NC04LjAxNTYyNSA4LjAxNTYyNSAwIDQuNDIxODc1LTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjgwLjE0NDUzMWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04LTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCAxMy4yMzQzNzUgMCAyNCAxMC43NjU2MjUgMjQgMjQgMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMzYuMTkxNDA2IDI5Ni4xNjAxNTZoLTgwLjAyMzQzN2MtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOCAwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04aDgwLjAzMTI1YzQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyNTc4Mi0zLjU4MjAzMSA4LTguMDA3ODEzIDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjgzMjAzMSAyNjQuMTI4OTA2aC00OS4yOTY4NzVjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOGg0OS4yOTY4NzVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTI3Mi4xNjc5NjkgMjY0LjEyODkwNmMtNC40MjU3ODEgMC04LTMuNTc4MTI1LTgtOHYtNDcuOTg0Mzc1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2NDcuOTg0Mzc1YzAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzIwLjE5OTIxOSAyNjQuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04di00OGMwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDh2NDhjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNTYuMTY3OTY5IDI5Ni4xNjAxNTZjLTQuNDI1NzgxIDAtOC0zLjU3NDIxOC04LTh2LTE2LjAxNTYyNWMwLTQuNDI1NzgxIDMuNTc0MjE5LTggOC04czggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzNi4xOTE0MDYgMjk2LjE2MDE1NmMtNC40MjE4NzUgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOHYxNi4wMTU2MjVjMCA0LjQyNTc4Mi0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMjAuMTk5MjE5IDIxNi4xNDQ1MzFoLTQ4LjAzMTI1Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNDguMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyOC4xOTE0MDYgMjQwLjE0NDUzMWgtNjQuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoNjQuMDIzNDM3YzQuNDI1NzgyIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOCA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjAuMTY3OTY5IDI4MC4xNDQ1MzFjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC0xMy4yNDIxODcgMTAuNzc3MzQzLTI0LjAxNTYyNSAyNC4wMTU2MjUtMjQuMDE1NjI1IDQuNDI1NzgxIDAgOCAzLjU3NDIxOSA4IDggMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOC00LjQyMTg3NSAwLTguMDE1NjI1IDMuNTg5ODQ0LTguMDE1NjI1IDguMDE1NjI1IDAgNC40MjE4NzUtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyODAuMTQ0NTMxYy00LjQyMTg3NSAwLTgtMy41NzgxMjUtOC04IDAtNC40MTc5NjktMy41ODIwMzEtOC04LTgtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04IDEzLjIzNDM3NSAwIDI0IDEwLjc2NTYyNSAyNCAyNCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ0MC4xOTE0MDYgMjk2LjE2MDE1NmgtODAuMDIzNDM3Yy00LjQyNTc4MSAwLTgtMy41NzQyMTgtOC04IDAtNC40MjU3ODEgMy41NzQyMTktOCA4LThoODAuMDMxMjVjNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDI1NzgyLTMuNTgyMDMxIDgtOC4wMDc4MTMgOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuODMyMDMxIDI2NC4xMjg5MDZoLTQ5LjI5Njg3NWMtNC40MjE4NzUgMC04LTMuNTc4MTI1LTgtOCAwLTQuNDI1NzgxIDMuNTc4MTI1LTggOC04aDQ5LjI5Njg3NWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjE2Nzk2OSAyNjQuMTI4OTA2Yy00LjQyNTc4MSAwLTgtMy41NzgxMjUtOC04di00Ny45ODQzNzVjMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOHM4IDMuNTc0MjE5IDggOHY0Ny45ODQzNzVjMCA0LjQyMTg3NS0zLjU3NDIxOSA4LTggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im00MjQuMTk5MjE5IDI2NC4xNDQ1MzFjLTQuNDIxODc1IDAtOC0zLjU3ODEyNS04LTh2LTQ4YzAtNC40MjU3ODEgMy41NzgxMjUtOCA4LTggNC40MjU3ODEgMCA4IDMuNTc0MjE5IDggOHY0OGMwIDQuNDIxODc1LTMuNTc0MjE5IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC4xNjc5NjkgMjk2LjE2MDE1NmMtNC40MjU3ODEgMC04LTMuNTc0MjE4LTgtOHYtMTYuMDE1NjI1YzAtNC40MjU3ODEgMy41NzQyMTktOCA4LThzOCAzLjU3NDIxOSA4IDh2MTYuMDE1NjI1YzAgNC40MjU3ODItMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDQwLjE5MTQwNiAyOTYuMTYwMTU2Yy00LjQyMTg3NSAwLTgtMy41NzQyMTgtOC04di0xNi4wMTU2MjVjMC00LjQyNTc4MSAzLjU3ODEyNS04IDgtOCA0LjQyNTc4MiAwIDggMy41NzQyMTkgOCA4djE2LjAxNTYyNWMwIDQuNDI1NzgyLTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQyNC4xOTkyMTkgMjE2LjE0NDUzMWgtNDguMDMxMjVjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg0OC4wMzEyNWM0LjQyNTc4MSAwIDggMy41NzQyMTkgOCA4IDAgNC40MjE4NzUtMy41NzQyMTkgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDMyLjE5MTQwNiAyNDAuMTQ0NTMxaC02NC4wMjM0MzdjLTQuNDI1NzgxIDAtOC0zLjU3ODEyNS04LTggMC00LjQyNTc4MSAzLjU3NDIxOS04IDgtOGg2NC4wMjM0MzdjNC40MjU3ODIgMCA4IDMuNTc0MjE5IDggOCAwIDQuNDIxODc1LTMuNTc0MjE4IDgtOCA4em0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Gxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Hxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4yNzMgNTEyLjI3MyIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtNTA3Ljg5MSAyMzguMzk5Yy02LjcyMy0zNS44ODEtMjEuODUzLTY2LjkwNS00My43NTUtODkuNzE4LTkuODQ1LTEwLjI1My0yMS40NTYtMTkuNzUtMzQuNTE0LTI4LjIyNy0xNC45NC05LjY5OS0zMi4xOTItMTguNDM4LTU0LjI5My0yNy41MDMtOS42ODQtMy45NzItMTkuMzc1LTcuNjM3LTI4LjQwNi0xMS4wMDUtMTQuNjQyLTUuNDYtMzAuMDY0LTEwLjk1OC00NS44NDMtMTYuMzM3LTUuNDI3LTEuODUxLTEwLjkyMS0zLjYwNi0xNi4yMzQtNS4zMDMtOC41MDUtMi43MTctMTcuMy01LjUyNy0yNS43NzEtOC43MjEtNS4yMjQtMS45Ny03LjQyNi0zLjQ2NC04LjMyMS00LjI1OC4wNDYtLjA1Ni4wOTYtLjExNS4xNTEtLjE3NyA0LjA0OC00LjYxNSAyNy42MDMtMjMuMTA1IDQxLjUwMS0zMy42NzcgMi41NjItMS45NDkgMy41OTUtNS4zMTUgMi41NjYtOC4zNjVzLTMuODg5LTUuMTA0LTcuMTA3LTUuMTA0bC0xNTQuMDUyLS4wMDRjLTEuMzIxIDAtMi42MTkuMzQ5LTMuNzYyIDEuMDEyLTE3LjI4MiAxMC4wMjEtMzEuNjIzIDI1Ljc5LTM5LjM0NiA0My4yNjItOC45NDYgMjAuMjQtOS4wMTYgNDEuNDI1LS4yMDIgNjEuMjYzIDEyLjA3IDI3LjE2NyAzNy41NjcgNDIuMjM3IDYwLjA2MyA1NS41MzMgNS44NyAzLjQ2OSAxMS40MTQgNi43NDYgMTYuNjU1IDEwLjE2NyAzLjA5NSAyLjAyIDYuMjczIDQuMDAzIDkuMzQ3IDUuOTIyIDExLjU0NSA3LjIwOCAyMi40NSAxNC4wMTYgMzEuMTY3IDIzLjYwNCA4Ljk4MSA5Ljg3NyAxMS42OTMgMjIuNTAxIDcuODQyIDM2LjUwNy04Ljk0OCAzMi41NDQtMzUuNTQ0IDYxLjc4MS01OS4wMDkgODcuNTc2LTQuMzQyIDQuNzczLTguNDQyIDkuMjgxLTEyLjQwOSAxMy43NzYtMTEuMTA3IDEyLjU4Ny0yNy4zOTMgMzAuODktNDQuNjM0IDUwLjI2Ny01Ni44NjkgNjMuOTE0LTk0LjQxNSAxMDYuMjI5LTk4IDExMS44NDYtMS40NzQgMi4zMDktMS41NzEgNS4yMzgtLjI1NCA3LjY0IDEuMzE2IDIuNDAyIDMuODM4IDMuODk1IDYuNTc3IDMuODk1bDQ0Ni4zMTYuMDAzaC4wMDFjMy4yNTEgMCA2LjEzMi0yLjA5NCA3LjEzNS01LjE4NyAxMS42NTktMzUuOTYgMjIuMjEyLTcyLjIzMiAzNS4yODMtMTIxLjI4MyAxNS41OTEtNTguNTE1IDE5LjE4NS0xMDUuMzU0IDExLjMwOC0xNDcuNDA0em0tMjUuODAzIDE0My41NDNjLTEyLjM3IDQ2LjQyLTIyLjQ2NCA4MS4zMDUtMzMuMzg1IDExNS4zMzFsLTI2Ljk0LS4wMDJjMS4yODgtMy45NDggMi41NzMtNy45MDMgMy44NjEtMTEuODQyIDExLjU4LTM1LjQxIDIyLjg3Ny03MC45MjUgMzIuNTA0LTEwNi44ODggMS41MzUtNS43NCAzLjEyMi0xMS42NzQgNC42Ny0xNy42NDUgMS4wNC00LjAwOS0xLjM2OC04LjEwMy01LjM3OC05LjE0Mi00LjAwOS0xLjAzOC04LjEwMiAxLjM2OS05LjE0MiA1LjM3OC0xLjUzMyA1LjkxNC0zLjExMyAxMS44Mi00LjY0MSAxNy41MzEtOS40MzkgMzUuMjc1LTIwLjc5NyA3MS4wMjUtMzIuMjcgMTA2LjEwNC0xLjc5NyA1LjQ5My0zLjU5NSAxMC45OTItNS4zODkgMTYuNTA0aC0xNTcuOTc4Yy0uNDMyLTEuODU4LTEuNTY3LTMuNTUzLTMuMzA5LTQuNjQ5LTMuNTA0LTIuMjA2LTguMTM2LTEuMTUyLTEwLjM0MiAyLjM1My0uNDk1Ljc4Ni0uOTczIDEuNTQyLTEuNDQ5IDIuMjk2aC0xNTYuMjM0YzI0LjQ3My0zMC41NTEgOTEuODk3LTExMi4wNzMgMTI0LjIzOC0xNDguNzI0IDE3LjI0LTE5LjUzNyAzMS4zNjgtMzguNzI2IDQxLjk5NC01Ny4wMzMgMTcuNTk4LTMwLjMxOSAyNC41NjctNTYuNzY1IDIwLjcxNi03OC42MDEtOC4yNzMtNDYuOTA5LTQ1LjEyNy02NS43NjQtNzcuNjQzLTgyLjM5OC0zLjQzOS0xLjc1OS02Ljk5NS0zLjU3OS0xMC40MDctNS4zNzVsLS42MDktLjMyMWMtMy42NjMtMS45MzMtOC4yLS41My0xMC4xMzMgMy4xMzNzLS41MyA4LjIgMy4xMzMgMTAuMTMzbC42MTYuMzI1YzMuNDk2IDEuODQgNy4wOTEgMy42OCAxMC41NjggNS40NTggMzIuMjU3IDE2LjUwMiA2Mi43MjYgMzIuMDkgNjkuNzAzIDcxLjY1IDMuMjIgMTguMjU2LTMuMTQ1IDQxLjI5MS0xOC45MTcgNjguNDY2LTkuOTg5IDE3LjIxLTIzLjkxNCAzNi4xMDQtNDAuMjY4IDU0LjYzOC0zNS4yODYgMzkuOTg4LTExNi4wOTggMTM3LjgzOC0xMzIuMDU2IDE1OC42NDhoLTMzLjg1YzE3Ljg4Mi0yMC43NTMgNTYuNzQ0LTY0LjQyOCA4Ni45ODEtOTguNDExIDE3LjI1Mi0xOS4zODkgMzMuNTQ3LTM3LjcwMiA0NC42NzUtNTAuMzEzIDMuODkyLTQuNDEgNy45NTYtOC44NzggMTIuMjU4LTEzLjYwNyAyNC41OTctMjcuMDQgNTIuNDc2LTU3LjY4OCA2Mi4zNzUtOTMuNjkzIDUuMjA3LTE4LjkzOSAxLjIyNy0zNi45LTExLjIwNy01MC41NzUtMTYuNDIzLTE4LjA2Mi0zOS44NjMtMzAuMjM3LTYwLjYzNS00Mi41MTQtMjEuNTY1LTEyLjc0Ni00My44NjQtMjUuOTI2LTUzLjk4Ny00OC43MS0xNS4wMjMtMzMuODE1IDQuMzY2LTY3LjcxOCAzMS42NjctODQuNDQ3aDEzLjYzOWMtMjAuNTU3IDE1LjA3NC0zMi41NjggMzAuMzA1LTM2LjQ5NCA0Ni4xOTUtMy4xODMgMTIuODgyLS44MTMgMjUuNzU2IDcuMDQ1IDM4LjI2NSA0LjMyNCA2Ljg4MyA5LjkwNCAxMy4xMTIgMTcuMDU4IDE5LjA0MiAzLjE4OCAyLjY0MyA3LjkxNiAyLjIwMSAxMC41NjEtLjk4OCAyLjY0My0zLjE4OSAyLjIwMS03LjkxNy0uOTg4LTEwLjU2MS01LjkwOS00Ljg5OC0xMC40NjUtOS45NTktMTMuOTI5LTE1LjQ3Mi01LjY4OC05LjA1Ni03LjM4NC0xNy43ODYtNS4xODUtMjYuNjg4IDMuOTc5LTE2LjEwMyAyMC41NjgtMzIuODUxIDQ5LjMxNC00OS43OTNoNTAuNzE1Yy0xMy4zMDYgMTAuNDc5LTI4LjEwNSAyNC43NzUtMjQuMDk1IDQyLjM1MyAzLjk3OSAxNy40NDEgMjQuMTc3IDI3LjE3OSAzOS4xNzggMzMuNDcyIDE5LjU1OCA4LjIwNSAzOS44MzUgMTQuNzIgNTkuNDQ1IDIxLjAyMSAzMi4wODggMTAuMzEgNjUuMjY5IDIwLjk3MSA5NS4wMDMgMzkuMTM3IDMzLjkzNCAyMC43MzEgNTUuNTE4IDUxLjE1OCA2Mi40MiA4Ny45ODkgNC40NzggMjMuODk2IDMuNDI2IDUwLjYzNC0zLjMxMSA4NC4xNTJsLS4xMDcuNTM2Yy0uODE0IDQuMDYyIDEuODE4IDguMDE0IDUuODggOC44MjguNDk4LjEuOTkzLjE0NyAxLjQ4MS4xNDcgMy41MDEgMCA2LjYzMi0yLjQ2NCA3LjM0Ni02LjAyOGwuMTA2LS41MzJjNy4xMjgtMzUuNDYyIDguMTkxLTY0LjAxOCAzLjM0OS04OS44NjctNy43MDctNDEuMTIzLTMxLjY4Ni03NS4wMi02OS4zNDQtOTguMDI2LTMxLjI2Mi0xOS4wOTktNjUuMzA5LTMwLjAzOS05OC4yMzQtNDAuNjE4LTE5LjMwNy02LjIwMy0zOS4yNzEtMTIuNjE4LTU4LjIzLTIwLjU3Mi01Ljc4Ny0yLjQyOS0xMC43MTItNC45MTItMTUuMDU3LTcuNTktNS40NjQtMy4zNjgtMTMuNzIxLTguNDU3LTE1LjMwMi0xNS4zODgtMi41NzktMTEuMzA5IDE0LjMzLTIzLjk5OCAyNS41Mi0zMi4zOTUgMy4yMTYtMi40MTQgNi4xMDYtNC41ODUgOC40NzMtNi42MTcgMCAwIDEzLjc4OSAwIDEzLjc4Ny4wMDItOS44OTIgNy43ODYtMzQuMTU2IDE5LjczMy0zMC4xNzQgMzUuNjUzIDEuOTk4IDcuOTg2IDEwLjY4OCAxMi4xOTEgMTguMDM1IDE0Ljk2MiAxMy45ODEgNS4yNzIgMjguMzI0IDkuMzY3IDQyLjQ1NiAxNC4xODYgMTUuNjQ0IDUuMzM1IDMwLjkzMyAxMC43ODMgNDUuNDQyIDE2LjE5NSA4LjkxMyAzLjMyNSAxOC40NyA2LjkzOCAyNy45NTcgMTAuODI5IDIxLjIxNCA4LjcwMSAzNy42NzkgMTcuMDI4IDUxLjgxNiAyNi4yMDYgMTIuMDk0IDcuODUyIDIyLjgxMyAxNi42MTEgMzEuODYxIDI2LjAzNSAxOS44NzUgMjAuNzAxIDMzLjY0OCA0OS4wODggMzkuODMxIDgyLjA5MSA3LjQ1MSAzOS43NzEgMy45MzcgODQuNTA1LTExLjA1OCAxNDAuNzgxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzQ0LjM2NSAxOTkuNDA3YzEuNDYxIDIuMDczIDMuNzggMy4xOCA2LjEzOCAzLjE4IDEuNDkyIDAgMy0uNDQ0IDQuMzEzLTEuMzcgMy4zODYtMi4zODYgNC4xOTYtNy4wNjUgMS44MTEtMTAuNDUxLTQuMTA5LTUuODMxLTguODExLTExLjI5My0xMy45NzMtMTYuMjMzLTIuOTkzLTIuODY1LTcuNzQxLTIuNzYtMTAuNjA0LjIzMi0yLjg2NCAyLjk5My0yLjc2MSA3Ljc0LjIzMiAxMC42MDQgNC40NjUgNC4yNzQgOC41MzEgOC45OTcgMTIuMDgzIDE0LjAzOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1NS4wODMgMTIyLjUxOC0uNDczLS4yNDZjLTUuNzc2LTIuOTkzLTExLjU0NS01Ljk4My0xNy4zMzQtOC45NDUtMy42ODQtMS44ODMtOC4yMDYtLjQyNi0xMC4wOTMgMy4yNjItMS44ODYgMy42ODgtLjQyNiA4LjIwNiAzLjI2MiAxMC4wOTMgNS43NjUgMi45NDkgMTEuNTExIDUuOTI3IDE3LjI2MyA4LjkwOGwuNDczLjI0NWMxLjEwNC41NzIgMi4yODMuODQzIDMuNDQ1Ljg0MyAyLjcxMiAwIDUuMzMxLTEuNDc2IDYuNjY1LTQuMDUgMS45MDYtMy42NzguNDctOC4yMDQtMy4yMDgtMTAuMTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzkuNjgzIDU3LjU4NGMxLjc0NC01LjUxIDQuNzE5LTEwLjE5NiA4LjE2My0xMi44NTYgMy4yNzgtMi41MzIgMy44ODItNy4yNDIgMS4zNTEtMTAuNTItMi41MzQtMy4yNzktNy4yNDQtMy44ODItMTAuNTIxLTEuMzUxLTUuODg5IDQuNTQ5LTEwLjYxIDExLjcyNC0xMy4yOTMgMjAuMjAxLTEuMjUgMy45NDkuOTM4IDguMTY0IDQuODg3IDkuNDE0Ljc1My4yMzggMS41MTUuMzUyIDIuMjY1LjM1MiAzLjE4Mi0uMDAxIDYuMTM2LTIuMDQzIDcuMTQ4LTUuMjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDEuMTM2IDk1LjkwM2MtNi43NTEtMy4zMTQtMTEuNDI0LTYuMjY4LTE1LjE1Mi05LjU3Ni0zLjA5OC0yLjc1LTcuODM4LTIuNDY2LTEwLjU4OC42MzEtMi43NSAzLjA5OC0yLjQ2NyA3LjgzOC42MzEgMTAuNTg4IDQuNzc5IDQuMjQyIDEwLjQ4NCA3Ljg4OCAxOC40OTkgMTEuODIyIDEuMDYzLjUyMiAyLjE5Ljc2OSAzLjMuNzY5IDIuNzcgMCA1LjQzNS0xLjU0MiA2LjczOC00LjE5NiAxLjgyNS0zLjcxOC4yOS04LjIxMi0zLjQyOC0xMC4wMzh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNzUuODU1IDQ0MS4yNzZjLTMuNTUzLTIuMTI2LTguMTU5LS45NzItMTAuMjg3IDIuNTgzLTMuNDk0IDUuODM1LTYuOTQ5IDExLjU3Ni0xMC4zMDYgMTcuMTIyLTIuMTQ1IDMuNTQzLTEuMDExIDguMTU1IDIuNTMzIDEwLjI5OSAxLjIxNS43MzUgMi41NTQgMS4wODUgMy44NzcgMS4wODUgMi41MzcgMCA1LjAxNC0xLjI4OCA2LjQyMy0zLjYxOCAzLjM2OC01LjU2NSA2LjgzNy0xMS4zMjcgMTAuMzQzLTE3LjE4MyAyLjEyNy0zLjU1NC45NzEtOC4xNi0yLjU4My0xMC4yODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zNjQuODY0IDIyNC4xNTJjLTQuMDY3Ljc4Ni02LjcyNyA0LjcyLTUuOTQgOC43ODcuOTEgNC43MTMgMS4zNzIgOS40NjggMS4zNzIgMTQuMTMyIDAgLjM1OC0uMDAzLjcxNi0uMDA5IDEuMDktLjAxNS45NzYtLjA0NCAxLjk0Ny0uMDg3IDIuOTE1LS4xODcgNC4xMzggMy4wMTggNy42NDMgNy4xNTUgNy44MjkuMTE1LjAwNS4yMjkuMDA4LjM0My4wMDggMy45ODYgMCA3LjMwNi0zLjE0IDcuNDg2LTcuMTYzLjA1MS0xLjExNy4wODQtMi4yMzkuMTAxLTMuMzUuMDA4LS40NDMuMDExLS44ODcuMDExLTEuMzMgMC01LjYxNy0uNTU0LTExLjMzLTEuNjQ1LTE2Ljk3OC0uNzg3LTQuMDY3LTQuNzI4LTYuNzI1LTguNzg3LTUuOTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zMDYuMjU0IDM4OS40ODFjLTMuNTgyLTIuMDczLTguMTcyLS44NTMtMTAuMjQ5IDIuNzMxLTMuMjMyIDUuNTgyLTYuNjA2IDExLjM3LTEwLjA2MiAxNy4yNjEtMi4wOTYgMy41NzMtLjg5NyA4LjE2OCAyLjY3NiAxMC4yNjQgMS4xOTIuNjk5IDIuNDk4IDEuMDMxIDMuNzg3IDEuMDMxIDIuNTc0IDAgNS4wOC0xLjMyNiA2LjQ3Ny0zLjcwNyAzLjQ2OS01LjkxNSA2Ljg1Ni0xMS43MjggMTAuMTAzLTE3LjMzMiAyLjA3Ni0zLjU4My44NTItOC4xNzEtMi43MzItMTAuMjQ4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzYxLjkyOSAyODMuMzE0Yy0zLjg4My0xLjQ0Ni04LjIwMS41My05LjY0NiA0LjQxMy0yLjA5MSA1LjYxOS00LjU5MiAxMS40MDQtNy42NDYgMTcuNjg2LTEuODExIDMuNzI1LS4yNTkgOC4yMTMgMy40NjYgMTAuMDI0IDEuMDU3LjUxNCAyLjE3NC43NTYgMy4yNzMuNzU2IDIuNzgxIDAgNS40NTQtMS41NTMgNi43NTEtNC4yMjMgMy4yNjYtNi43MTggNS45NTItMTIuOTM3IDguMjE0LTE5LjAxMSAxLjQ0NS0zLjg4Mi0uNTMtOC4yLTQuNDEyLTkuNjQ1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzM1LjkyIDMzNy4yNzVjLTMuNTg1LTIuMDc1LTguMTczLS44NTItMTAuMjQ5IDIuNzMzLTMuMTA5IDUuMzcyLTYuNjM0IDExLjQ2LTkuOTc1IDE3LjUxNy0yIDMuNjI3LS42ODIgOC4xODkgMi45NDUgMTAuMTkgMS4xNDguNjMzIDIuMzkxLjkzNCAzLjYxNS45MzQgMi42NDQgMCA1LjIwNy0xLjQwMSA2LjU3NC0zLjg3OSAzLjI2Ni01LjkyIDYuNzQ5LTExLjkzOCA5LjgyMi0xNy4yNDcgMi4wNzctMy41ODUuODUyLTguMTcyLTIuNzMyLTEwLjI0OHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMwOC4wMDEgMTUxLjQwMmMtMy4yMTgtMS44MzgtNi40NzQtMy43NjMtOS42MjEtNS42MjQtMi41MzEtMS40OTYtNS4wNTktMi45OS03LjYtNC40NjEtMy41ODYtMi4wNzUtOC4xNzQtLjg1Mi0xMC4yNDggMi43MzMtMi4wNzYgMy41ODQtLjg1MyA4LjE3MyAyLjczMiAxMC4yNDkgMi41MDEgMS40NDggNC45OSAyLjkxOSA3LjQ4MiA0LjM5MyAzLjE5NCAxLjg4OCA2LjQ5OCAzLjg0MSA5LjgxMyA1LjczNSAxLjE3NC42NyAyLjQ1Mi45ODkgMy43MTQuOTg5IDIuNjA0IDAgNS4xMzUtMS4zNTggNi41MTktMy43ODEgMi4wNTYtMy41OTcuODA2LTguMTc4LTIuNzkxLTEwLjIzM3oiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Vxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxyZWN0IHg9IjE4OC42MzIiIHk9IjI1NiIgd2lkdGg9IjM1LjkzIiBoZWlnaHQ9IjE3Ljk2NSIvPg0KICAgICAgICA8cGF0aCBkPSJNNDQxLjkxNyw0NzEuNTc5bDE2LjAzOS04OC4yMTljMC40ODItMi42MjMtMC4yMjgtNS4zMTYtMS45MzktNy4zNmMtMS43MDItMi4wNDQtNC4yMjgtMy4yMjgtNi44OTUtMy4yMjhoLTg5LjgyNQ0KCQkJYy0yLjY2NywwLTUuMTkzLDEuMTg0LTYuODk1LDMuMjI4Yy0xLjcxMSwyLjA0NC0yLjQyMSw0LjczNy0xLjkzOSw3LjM2bDE2LjAzOSw4OC4yMTlIMjYwLjQ5MVYzMS40MzkNCgkJCWMwLTQuOTY1LTQuMDE4LTguOTgyLTguOTgyLTguOTgySDUzLjg5NWMtNC45NjUsMC04Ljk4Miw0LjAxOC04Ljk4Miw4Ljk4MnY0NDAuMTRIMHYxNy45NjVoNTMuODk1aDE5Ny42MTRoMTI1Ljc1NGg1My44OTVINTEyDQoJCQl2LTE3Ljk2NUg0NDEuOTE3eiBNMjQyLjUyNiw0NzEuNTc5SDYyLjg3N1Y0MC40MjFoMTc5LjY0OVY0NzEuNTc5eiBNNDIzLjY1OCw0NzEuNTc5aC0zOC44OTVsLTE0LjcwMi04MC44NDJoNjguMjk4DQoJCQlMNDIzLjY1OCw0NzEuNTc5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDU4LjEwNSw3Ni4zNTFjLTI3LjQ1NiwwLTQ0LjQ4OSwxMi40OTYtNTMuODk1LDI1LjE5NWMtOS40MDgtMTIuNjk5LTI2LjQzOS0yNS4xOTUtNTMuODk1LTI1LjE5NQ0KCQkJYy00Ljk2NSwwLTguOTgyLDQuMDE4LTguOTgyLDguOTgyYzAsNC45NjUsNC4wMTgsOC45ODIsOC45ODIsOC45ODJjMzMuNzU0LDAsNDMuMjcyLDIzLjMwNyw0NC45MTIsMjguMjQ2djIzMi4yNDYNCgkJCWMwLDQuOTY1LDQuMDE4LDguOTgyLDguOTgyLDguOTgyczguOTgyLTQuMDE4LDguOTgyLTguOTgyVjEyMi41NzJjMS41NDQtNC42OCwxMC45ODctMjguMjU3LDQ0LjkxMi0yOC4yNTcNCgkJCWM0Ljk2NSwwLDguOTgyLTQuMDE4LDguOTgyLTguOTgyQzQ2Ny4wODgsODAuMzY4LDQ2My4wNyw3Ni4zNTEsNDU4LjEwNSw3Ni4zNTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNjUuODMzLDExOS4yNjNjLTE1LjU1My0xNS41NTMtMzYuODQyLTIyLjM3Ny01NS42NjctMTcuNzk4Yy0zLjI1NCwwLjc5OC01Ljc5OCwzLjM0Mi02LjU5Niw2LjU5Ng0KCQkJYy00LjU3OSwxOC43NzIsMi4yMzcsNDAuMDk3LDE3Ljc5OCw1NS42NjdjMTIuMzYsMTIuMzYsMjguMzYsMTkuMjAyLDQzLjgxNiwxOS4yMDJjNC4wMDksMCw3Ljk4Mi0wLjQ2NSwxMS44NTEtMS40MDQNCgkJCWMzLjI1NS0wLjc5OCw1Ljc5OC0zLjM0Miw2LjU5Ni02LjU5NkMzODguMjExLDE1Ni4xNTgsMzgxLjM5NSwxMzQuODMzLDM2NS44MzMsMTE5LjI2M3ogTTM2Ny4wMDksMTY0LjkwMw0KCQkJYy0xMS4xNTgsMC40MzktMjMuNTk2LTQuNTM1LTMyLjkzOS0xMy44NzdjLTkuMzQyLTkuMzUxLTE0LjQzOS0yMS43MzctMTMuODc3LTMyLjkzOWMxMS4xMjMtMC41NzksMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDE0MS4zMTYsMzY3LjU3LDE1My43MDIsMzY3LjAwOSwxNjQuOTAzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjgzMywyMDAuMTA1Yy0xNS41NTMtMTUuNTUzLTM2Ljg0Mi0yMi4zNjktNTUuNjY3LTE3Ljc5OGMtMy4yNTQsMC43OTgtNS43OTgsMy4zNDItNi41OTYsNi41OTYNCgkJCWMtNC41NzksMTguNzcyLDIuMjM3LDQwLjA5NywxNy43OTgsNTUuNjY3YzEyLjM2LDEyLjM2LDI4LjM2LDE5LjIwMiw0My44MTYsMTkuMjAyYzQuMDA5LDAsNy45ODItMC40NjUsMTEuODUxLTEuNDA0DQoJCQljMy4yNTUtMC43OTgsNS43OTgtMy4zNDIsNi41OTYtNi41OTZDMzg4LjIxMSwyMzcsMzgxLjM5NSwyMTUuNjc2LDM2NS44MzMsMjAwLjEwNXogTTM2Ny4wMDksMjQ1Ljc0Ng0KCQkJYy0xMS4xNTgsMC40OTEtMjMuNTk2LTQuNTQ0LTMyLjkzOS0xMy44NzdjLTkuMzQyLTkuMzUxLTE0LjQzOS0yMS43MzctMTMuODc3LTMyLjkzOWMxMS4xMjMtMC41MzUsMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDIyMi4xNTgsMzY3LjU3LDIzNC41NDQsMzY3LjAwOSwyNDUuNzQ2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY1LjgzMywyODAuOTQ3Yy0xNS41NTMtMTUuNTYxLTM2Ljg0Mi0yMi4zNjktNTUuNjY3LTE3Ljc5OGMtMy4yNTQsMC43OTgtNS43OTgsMy4zNDItNi41OTYsNi41OTYNCgkJCWMtNC41NzksMTguNzcyLDIuMjM3LDQwLjA5NywxNy43OTgsNTUuNjY3YzEyLjM2LDEyLjM2LDI4LjM2LDE5LjIwMiw0My44MTYsMTkuMjAyYzQuMDA5LDAsNy45ODItMC40NjUsMTEuODUxLTEuNDA0DQoJCQljMy4yNTUtMC43OTgsNS43OTgtMy4zNDIsNi41OTYtNi41OTZDMzg4LjIxMSwzMTcuODQyLDM4MS4zOTUsMjk2LjUxOCwzNjUuODMzLDI4MC45NDd6IE0zNjcuMDA5LDMyNi41ODgNCgkJCWMtMTEuMTU4LDAuNDQ3LTIzLjU5Ni00LjUzNS0zMi45MzktMTMuODc3Yy05LjM0Mi05LjM1MS0xNC40MzktMjEuNzM3LTEzLjg3Ny0zMi45MzljMTEuMTIzLTAuNTcsMjMuNTg4LDQuNTM1LDMyLjkzOSwxMy44NzcNCgkJCUMzNjIuNDc0LDMwMywzNjcuNTcsMzE1LjM4NiwzNjcuMDA5LDMyNi41ODh6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDkuMzg2LDEwOC4wNjFjLTAuNzk4LTMuMjU0LTMuMzQyLTUuNzk4LTYuNTk2LTYuNTk2Yy0xOC43ODktNC41Ny00MC4xMDUsMi4yMzctNTUuNjY3LDE3Ljc5OA0KCQkJYy0xNS41NjEsMTUuNTctMjIuMzc3LDM2Ljg5NS0xNy43OTgsNTUuNjY3YzAuNzk4LDMuMjU1LDMuMzQyLDUuNzk4LDYuNTk2LDYuNTk2YzMuODY4LDAuOTM5LDcuODMzLDEuNDA0LDExLjg0MiwxLjQwNA0KCQkJYzE1LjQ2NSwwLDMxLjQ2NS02Ljg0Miw0My44MjUtMTkuMjAyQzUwNy4xNDksMTQ4LjE1OCw1MTMuOTY1LDEyNi44MzMsNTA5LjM4NiwxMDguMDYxeiBNNDc4Ljg4NiwxNTEuMDI2DQoJCQljLTkuMzUxLDkuMzQyLTIxLjg3NywxNC4zMjUtMzIuOTM5LDEzLjg3N2MtMC41NjEtMTEuMjAyLDQuNTM1LTIzLjU4OCwxMy44NzctMzIuOTM5YzkuMzUxLTkuMzQyLDIxLjc5OC0xNC40NDcsMzIuOTM5LTEzLjg3Nw0KCQkJQzQ5My4zMjUsMTI5LjI4OSw0ODguMjI4LDE0MS42NzUsNDc4Ljg4NiwxNTEuMDI2eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTA5LjM4NiwxODguOTAzYy0wLjc5OC0zLjI1NC0zLjM0Mi01Ljc5OC02LjU5Ni02LjU5NmMtMTguNzg5LTQuNTc5LTQwLjEwNSwyLjIzNy01NS42NjcsMTcuNzk4DQoJCQljLTE1LjU2MSwxNS41Ny0yMi4zNzcsMzYuODk1LTE3Ljc5OCw1NS42NjdjMC43OTgsMy4yNTUsMy4zNDIsNS43OTgsNi41OTYsNi41OTZjMy44NjksMC45MzksNy44MzMsMS40MDQsMTEuODQyLDEuNDA0DQoJCQljMTUuNDY1LDAsMzEuNDY1LTYuODQyLDQzLjgyNS0xOS4yMDJDNTA3LjE0OSwyMjksNTEzLjk2NSwyMDcuNjc2LDUwOS4zODYsMTg4LjkwM3ogTTQ3OC44ODYsMjMxLjg2OA0KCQkJYy05LjM1MSw5LjMzMy0yMS44NzcsMTQuMzY4LTMyLjkzOSwxMy44NzdjLTAuNTYxLTExLjIwMiw0LjUzNS0yMy41ODgsMTMuODc3LTMyLjkzOWM5LjM1MS05LjM0MiwyMS43OTgtMTQuNDAzLDMyLjkzOS0xMy44NzcNCgkJCUM0OTMuMzI1LDIxMC4xMzIsNDg4LjIyOCwyMjIuNTE3LDQ3OC44ODYsMjMxLjg2OHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwOS4zODYsMjY5Ljc0NmMtMC43OTgtMy4yNTQtMy4zNDItNS43OTgtNi41OTYtNi41OTZjLTE4Ljc4OS00LjU3OS00MC4xMDUsMi4yMzctNTUuNjY3LDE3Ljc5OA0KCQkJYy0xNS41NjEsMTUuNTctMjIuMzc3LDM2Ljg5NS0xNy43OTgsNTUuNjY3YzAuNzk4LDMuMjU1LDMuMzQyLDUuNzk4LDYuNTk2LDYuNTk2YzMuODY5LDAuOTM5LDcuODMzLDEuNDA0LDExLjg0MiwxLjQwNA0KCQkJYzE1LjQ2NSwwLDMxLjQ2NS02Ljg0Miw0My44MjUtMTkuMjAyQzUwNy4xNDksMzA5Ljg0Miw1MTMuOTY1LDI4OC41MTgsNTA5LjM4NiwyNjkuNzQ2eiBNNDc4Ljg4NiwzMTIuNzENCgkJCWMtOS4zNTEsOS4zNDItMjEuODc3LDE0LjMzMy0zMi45MzksMTMuODc3Yy0wLjU2MS0xMS4yMDIsNC41MzUtMjMuNTg4LDEzLjg3Ny0zMi45MzljOS4zNTEtOS4zNDIsMjEuNzk4LTE0LjQ0NywzMi45MzktMTMuODc3DQoJCQlDNDkzLjMyNSwyOTAuOTc0LDQ4OC4yMjgsMzAzLjM2LDQ3OC44ODYsMzEyLjcxeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Zxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTEzOS45MzMgMjMwLjU2NmgyMzIuMTM1YzIyLjQwNSAwIDQwLjYzNC0xOC4yMjggNDAuNjM0LTQwLjYzM3YtMTQ5LjNjLS4wMDEtMjIuNDA1LTE4LjIyOS00MC42MzMtNDAuNjM1LTQwLjYzM2gtMjMyLjEzNGMtMjIuNDA1IDAtNDAuNjM0IDE4LjIyOC00MC42MzQgNDAuNjMzdjE0OS4yOTljMCAyMi40MDYgMTguMjI4IDQwLjYzNCA0MC42MzQgNDAuNjM0em0tMjUuNjM0LTE4OS45MzNjMC0xNC4xMzQgMTEuNDk5LTI1LjYzMyAyNS42MzQtMjUuNjMzaDIzMi4xMzVjMTQuMTM1IDAgMjUuNjM0IDExLjQ5OSAyNS42MzQgMjUuNjMzdjE0OS4yOTljMCAxNC4xMzQtMTEuNDk5IDI1LjYzMy0yNS42MzQgMjUuNjMzaC0yMzIuMTM1Yy0xNC4xMzUgMC0yNS42MzQtMTEuNDk5LTI1LjYzNC0yNS42MzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzkuOTMzIDUwLjIwNGM0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41di00LjE0MmMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41cy03LjUgMy4zNTgtNy41IDcuNXY0LjE0MmMwIDQuMTQyIDMuMzU3IDcuNSA3LjUgNy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ1LjExIDE2NC44MTNjMTAuNDIzIDIuMDgxIDE4Ljg1IDEwLjE4IDIwLjk3IDIwLjE1NyAxLjUzNiA3LjIyMiA4LjAyMiAxMi40NjMgMTUuNDIyIDEyLjQ2M2gxNDguOTQ3YzcuNDggMCAxMy45OC01LjMxIDE1LjQ1NS0xMi42MjQgMi4xMTUtMTAuNDgyIDEwLjU3Ni0xOC45MzYgMjEuMDUyLTIxLjAzOCA3LjMwOC0xLjQ2NiAxMi42MTEtNy45NjUgMTIuNjExLTE1LjQ1NHYtNjYuMDY3YzAtNy40ODQtNS4zMTEtMTMuOTg1LTEyLjYyNy0xNS40NTctMTAuNDcyLTIuMTA3LTE4LjkyNS0xMC41NjMtMjEuMDM2LTIxLjA0MS0xLjQ3NS03LjMxMi03Ljk2Ny0xMi42MTgtMTUuNDM5LTEyLjYxOGgtMTQ4Ljk3MWMtNy4zOTUgMC0xMy44NzggNS4yNDItMTUuNDE0IDEyLjQ2NS0yLjExOCA5Ljk2OS0xMC41NCAxOC4wNjctMjAuOTU1IDIwLjE1My03LjM1NSAxLjQ3Mi0xMi42OTIgNy45NzktMTIuNjkyIDE1LjQ3djY4LjEyNWMwIDcuNDk0IDUuMzMxIDEzLjk5OSAxMi42NzcgMTUuNDY2em0yLjMyMy04My41OTJjMC0uMzc0LjI2Mi0uNjg3LjYzOC0uNzYyIDE2LjIwMy0zLjI0NCAyOS4zMzctMTYgMzIuNjgyLTMxLjc0MS4wNzMtLjM0NC4zNzgtLjU4NS43NDItLjU4NWgxNDguOTcyYy4zNTcgMCAuNjY2LjI0NS43MzMuNTgzIDMuMjkgMTYuMzI1IDE2LjQ2NCAyOS40OTkgMzIuNzgyIDMyLjc4Mi4zNC4wNjguNTg2LjM4NS41ODYuNzUydjY2LjA2N2MwIC4zNjEtLjI0MS42ODMtLjU2MS43NDctMTYuMzI2IDMuMjc0LTI5LjUxIDE2LjQ0Ny0zMi44MDYgMzIuNzc4LS4wNjkuMzQyLS4zODYuNTkxLS43NTIuNTkxaC0xNDguOTQ3Yy0uMzYyIDAtLjY3OC0uMjQ2LS43NS0uNTgyLTMuMzQ3LTE1Ljc1Mi0xNi40OS0yOC41MTEtMzIuNzA1LTMxLjc0OC0uMzU3LS4wNzEtLjYxNC0uMzg5LS42MTQtLjc1N3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3Mi4wNjcgNTAuMjA0YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTQuMTQyYzAtNC4xNDItMy4zNTctNy41LTcuNS03LjVzLTcuNSAzLjM1OC03LjUgNy41djQuMTQyYzAgNC4xNDIgMy4zNTggNy41IDcuNSA3LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzkuOTMzIDE5OS41MDNjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXYtNC4xNDJjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NC4xNDJjMCA0LjE0MyAzLjM1NyA3LjUgNy41IDcuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3Mi4wNjcgMTgwLjM2MmMtNC4xNDMgMC03LjUgMy4zNTgtNy41IDcuNXY0LjE0MmMwIDQuMTQyIDMuMzU3IDcuNSA3LjUgNy41czcuNS0zLjM1OCA3LjUtNy41di00LjE0MmMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTg5LjczMyAxNjQuMWg0OS43YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTI1LjYzM2gxNy4zNWMyLjYgMCA1LjAxNC0xLjM0NiA2LjM4LTMuNTU3czEuNDkxLTQuOTcyLjMyOC03LjI5N2wtMjQuODUtNDkuN2MtMS4yNzEtMi41NDEtMy44NjctNC4xNDYtNi43MDgtNC4xNDZzLTUuNDM4IDEuNjA1LTYuNzA4IDQuMTQ2bC0xNC40OTMgMjguOTg3aC0yOC40OThjLTQuMTQzIDAtNy41IDMuMzU4LTcuNSA3LjV2NDkuN2MtLjAwMSA0LjE0MiAzLjM1NyA3LjUgNy40OTkgNy41em00OS43MDEtNzMuNTYzIDEyLjcxNSAyNS40M2gtMjUuNDN6bS00Mi4yMDEgMjMuODYzaDEzLjQ5OGwtMi44NTYgNS43MTNjLTEuMTYzIDIuMzI1LTEuMDM4IDUuMDg2LjMyOCA3LjI5N3MzLjc4IDMuNTU3IDYuMzggMy41NTdoMTcuMzUxdjE4LjEzM2gtMzQuN3YtMzQuN3oiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxMy45ODMgMTQ3LjUzM2MxNy44MzggMCAzMi4zNS0xNC41MTIgMzIuMzUtMzIuMzUgMC0xNy44MzctMTQuNTEyLTMyLjM1LTMyLjM1LTMyLjM1cy0zMi4zNTEgMTQuNTEyLTMyLjM1MSAzMi4zNWMuMDAxIDE3LjgzOCAxNC41MTQgMzIuMzUgMzIuMzUxIDMyLjM1em0wLTQ5LjY5OWM5LjU2NiAwIDE3LjM1IDcuNzgzIDE3LjM1IDE3LjM1cy03Ljc4MyAxNy4zNS0xNy4zNSAxNy4zNS0xNy4zNTEtNy43ODMtMTcuMzUxLTE3LjM1Yy4wMDEtOS41NjcgNy43ODQtMTcuMzUgMTcuMzUxLTE3LjM1eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjMwLjg2NyAyNDguNWMtOC41NDcgMC0xNS41IDYuOTUzLTE1LjUgMTUuNXYxNy4xMzNjMCA4LjU0NyA2Ljk1MyAxNS41IDE1LjUgMTUuNWg1MC4yNjZjOC41NDcgMCAxNS41LTYuOTUzIDE1LjUtMTUuNXYtMTcuMTMzYzAtOC41NDctNi45NTMtMTUuNS0xNS41LTE1LjV6bTUwLjc2NiAxNS41djE3LjEzM2MwIC4yNzYtLjIyNS41LS41LjVoLTUwLjI2NmMtLjI3NSAwLS41LS4yMjQtLjUtLjV2LTE3LjEzM2MwLS4yNzYuMjI1LS41LjUtLjVoNTAuMjY2Yy4yNzUgMCAuNS4yMjQuNS41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDk2LjUgNDYzLjg2N2gtMTcuNjcyYy4wMTMtLjI2MS4wNC0uNTE5LjA0LS43ODN2LTguMjg0YzAtMTAuNjUyLTYuOTU5LTE5LjcwNC0xNi41NjctMjIuODY0di0xMzYuNTA1YzkuNjA4LTMuMTYgMTYuNTY3LTEyLjIxMiAxNi41NjctMjIuODY0di04LjI4NGMwLTguNzAzLTcuMDgxLTE1Ljc4My0xNS43ODQtMTUuNzgzaC0yLjU2MmMxLjE0My0yLjggMS43NzktNS44NiAxLjc3OS05LjA2NyAwLTEzLjI3LTEwLjc5Ni0yNC4wNjYtMjQuMDY2LTI0LjA2NnMtMjQuMDY2IDEwLjc5Ni0yNC4wNjYgMjQuMDY2YzAgMy4yMDcuNjM1IDYuMjY2IDEuNzc5IDkuMDY3aC0yLjU2M2MtOC43MDMgMC0xNS43ODMgNy4wODEtMTUuNzgzIDE1Ljc4M3Y4LjI4NGMwIDEwLjUxOCA2Ljc4NiAxOS40NzYgMTYuMjA3IDIyLjc0MS0xOC42MTYgMTguNDM4LTQwLjAzNyAzMy4zNTEtNjMuNzM0IDQ0LjMzNy0zLjc1OCAxLjc0Mi01LjM5MyA2LjIwMS0zLjY1IDkuOTU4IDEuMjcgMi43MzcgMy45NzggNC4zNDggNi44MSA0LjM0OCAxLjA1NiAwIDIuMTI5LS4yMjQgMy4xNDktLjY5OCAyMS4wNTgtOS43NjIgNDAuNDI3LTIyLjQzMiA1Ny43ODYtMzcuNzU0djIzLjcxMmMtNDUuNDEgMzUuNDk1LTEwMC4wMTQgNTQuMjQ3LTE1OC4xNjcgNTQuMjQ3LTU4LjE0OCAwLTExMi43NTYtMTguNzUzLTE1OC4xNjctNTQuMjQ5di0yMy42OWM0My43NjQgMzguNjkgOTkuMjggNTkuODA1IDE1OC4xNjcgNTkuODA1IDIzLjU5MiAwIDQ2LjkxMy0zLjQ0MSA2OS4zMTQtMTAuMjI4IDMuOTY0LTEuMjAxIDYuMjA0LTUuMzg4IDUuMDAzLTkuMzUzLTEuMjAxLTMuOTY0LTUuMzg5LTYuMjA3LTkuMzUzLTUuMDAzLTIwLjk4OSA2LjM1OS00Mi44NDcgOS41ODMtNjQuOTY0IDkuNTgzLTU5LjU3MiAwLTExNS40NjItMjMuMDctMTU3LjgwMi02NS4wMTggOS40MTktMy4yNjcgMTYuMjAyLTEyLjIyNCAxNi4yMDItMjIuNzR2LTguMjg0YzAtOC43MDMtNy4wOC0xNS43ODMtMTUuNzgzLTE1Ljc4M2gtMi41NjNjMS4xNDMtMi44IDEuNzc5LTUuODYgMS43NzktOS4wNjcgMC0xMy4yNy0xMC43OTYtMjQuMDY2LTI0LjA2Ni0yNC4wNjZzLTI0LjA3IDEwLjc5OC0yNC4wNyAyNC4wNjhjMCAzLjIwNy42MzYgNi4yNjYgMS43NzkgOS4wNjdoLTIuNTYyYy04LjcwMyAwLTE1Ljc4NCA3LjA4MS0xNS43ODQgMTUuNzgzdjguMjg0YzAgMTAuNjUyIDYuOTU5IDE5LjcwNCAxNi41NjcgMjIuODY0djEzNi41MDZjLTkuNjA4IDMuMTYtMTYuNTY3IDEyLjIxMi0xNi41NjcgMjIuODY0djguMjg0YzAgLjI2NC4wMjcuNTIyLjA0Ljc4M2gtMTcuNjczYy04LjU0NyAwLTE1LjUgNi45NTMtMTUuNSAxNS41djE3LjEzMmMwIDguNTQ3IDYuOTUzIDE1LjUgMTUuNSAxNS41aDU5LjgzM2M0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtNTkuODMzYy0uMjc1IDAtLjUtLjIyNC0uNS0uNXYtMTcuMTMzYzAtLjI3Ni4yMjUtLjUuNS0uNWg0ODFjLjI3NSAwIC41LjIyNC41LjV2MTcuMTMzYzAgLjI3Ni0uMjI1LjUtLjUuNWgtMzkxLjE2N2MtNC4xNDMgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWgzOTEuMTY3YzguNTQ3IDAgMTUuNS02Ljk1MyAxNS41LTE1LjV2LTE3LjEzM2MwLTguNTQ3LTYuOTUzLTE1LjUtMTUuNS0xNS41em0tNjcuMzMzLTE2NC41NzdjLjE2MS0uODc4LjE1OC0xLjc3OC4wMDUtMi42NTZoMTguMTI4djE4LjEzM2gtMTguMTMzem0wIDQzLjkwNGMuMDEyLS4yMzkuMDEyLS40NzkgMC0uNzE5di0xMi43MDloMTguMTMzdjEwMC45NjdoLTE4LjEzM3ptMC0xMDMuNzYxYzAtNC45OTkgNC4wNjctOS4wNjYgOS4wNjYtOS4wNjZzOS4wNjYgNC4wNjcgOS4wNjYgOS4wNjYtNC4wNjcgOS4wNjctOS4wNjYgOS4wNjctOS4wNjYtNC4wNjctOS4wNjYtOS4wNjd6bS0xNi41NjcgMjQuODVjMC0uNDMyLjM1Mi0uNzgzLjc4My0uNzgzaDQ5LjdjLjQzMyAwIC43ODQuMzUyLjc4NC43ODN2OC4yODRjMCA0Ljk5OS00LjA2NyA5LjA2Ni05LjA2NyA5LjA2NmgtMzMuMTMzYy01IDAtOS4wNjctNC4wNjctOS4wNjctOS4wNjZ6bS0xNTYuNiAxNDQuMTc2YzU3LjY0OCAwIDExMi4wMDctMTcuNDIyIDE1OC4xNjctNTAuNTE0djczLjk5MWMtOS42MDggMy4xNi0xNi41NjcgMTIuMjEyLTE2LjU2NyAyMi44NjR2OC4yODRjMCAuMjY0LjAyNy41MjIuMDQuNzgzaC0yODMuMjc5Yy4wMTMtLjI2MS4wNC0uNTE5LjA0LS43ODN2LTguMjg0YzAtMTAuNjUyLTYuOTU5LTE5LjcwNC0xNi41NjctMjIuODY0di03My45OTJjNDYuMTYxIDMzLjA5MiAxMDAuNTIzIDUwLjUxNSAxNTguMTY2IDUwLjUxNXptLTE3My4xNjctMTEwLjc4OWMtLjAxMi4yNDctLjAxMi40OTUgMCAuNzQydjE2LjM1NWgtMTguMTMzdi0xOC4xMzNoMTguMTMzem0tMTguMTMzIDMyLjA5N2gxOC4xMzN2MTAwLjk2N2gtMTguMTMzem0wLTkwLjMzNGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY2LTkuMDY2czkuMDY2IDQuMDY3IDkuMDY2IDkuMDY2LTQuMDY3IDkuMDY3LTkuMDY2IDkuMDY3LTkuMDY2LTQuMDY3LTkuMDY2LTkuMDY3em0tMTYuNTY3IDI0Ljg1YzAtLjQzMi4zNTItLjc4My43ODQtLjc4M2g0OS43Yy40MzIgMCAuNzgzLjM1Mi43ODMuNzgzdjguMjg0YzAgNC45OTktNC4wNjcgOS4wNjYtOS4wNjcgOS4wNjZoLTMzLjEzM2MtNSAwLTkuMDY3LTQuMDY3LTkuMDY3LTkuMDY2em0uNzg0IDE5OS41ODRjLS40MzMgMC0uNzg0LS4zNTItLjc4NC0uNzgzdi04LjI4NGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY3LTkuMDY2aDMzLjEzM2M1IDAgOS4wNjcgNC4wNjcgOS4wNjcgOS4wNjZ2OC4yODRjMCAuNDMyLS4zNTIuNzgzLS43ODMuNzgzem0zNjQuNDY2IDBjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzgzdi04LjI4NGMwLTQuOTk5IDQuMDY3LTkuMDY2IDkuMDY3LTkuMDY2aDMzLjEzM2M1IDAgOS4wNjcgNC4wNjcgOS4wNjcgOS4wNjZ2OC4yODRjMCAuNDMyLS4zNTIuNzgzLS43ODQuNzgzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Xxe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzQuNjA4LDgwLjQzOWwtMjMyLTgwYy0xLjY5LTAuNTgzLTMuNTI2LTAuNTgzLTUuMjE2LDBsLTIzMiw4MEMyLjE2Niw4MS41NTEsMC4wMDEsODQuNTg3LDAsODcuOTk5djM4NA0KCQkJYzAsNC40MTgsMy41ODIsOCw4LDhoNDBjNC40MTgsMCw4LTMuNTgyLDgtOHYtMjQ4aDM2OHYyNDhjMCw0LjQxOCwzLjU4Miw4LDgsOGg0MGM0LjQxOCwwLDgtMy41ODIsOC04di0zODQNCgkJCUM0NzkuOTk5LDg0LjU4Nyw0NzcuODM0LDgxLjU1MSw0NzQuNjA4LDgwLjQzOXogTTQwLDIxNS45OTl2MjQ4SDE2di0zMDRoMjRWMjE1Ljk5OXogTTQyNCwyMDcuOTk5SDU2di0xNmgzNjhWMjA3Ljk5OXoNCgkJCSBNNDI0LDE3NS45OTlINTZ2LTE2aDM2OFYxNzUuOTk5eiBNNDY0LDQ2My45OTloLTI0di0zMDRoMjRWNDYzLjk5OXogTTQ2NCwxNDMuOTk5SDE2VjkzLjcwM2wyMjQtNzcuMjRsMjI0LDc3LjI0VjE0My45OTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zOTUuNTc2LDM0NC43OTlsLTI5LjYtMTQuOGwtMjYuNC01Mi44Yy00LjA2MS04LjEyNS0xMi4zODEtMTMuMjQyLTIxLjQ2NC0xMy4ySDE2MS44ODgNCgkJCWMtOS4wOTgtMC4wMy0xNy40MjEsNS4xMTQtMjEuNDY0LDEzLjI2NGwtMjYuNCw1Mi44bC0yOS42LDE0LjhjLTIuNzA1LDEuMzUyLTQuNDE2LDQuMTEyLTQuNDI0LDcuMTM2djExMmMwLDguODM3LDcuMTYzLDE2LDE2LDE2DQoJCQloMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMjRoMTkydjI0YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMzJjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMTEyDQoJCQlDNDAwLjAxNywzNDguOTUyLDM5OC4zMDEsMzQ2LjE2LDM5NS41NzYsMzQ0Ljc5OXogTTE1NC43MzYsMjg0LjQyM2MxLjM0NS0yLjcxOCw0LjExOS00LjQzNCw3LjE1Mi00LjQyNGgxNTYuMjI0DQoJCQljMy4wMzMtMC4wMSw1LjgwNywxLjcwNiw3LjE1Miw0LjQyNGwyMS43OTIsNDMuNTc2SDEzMi45NDRMMTU0LjczNiwyODQuNDIzeiBNMTI4LDQ2My45OTlIOTZ2LTI0aDMyVjQ2My45OTl6IE0zODQsNDYzLjk5OWgtMzINCgkJCXYtMjRoMzJWNDYzLjk5OXogTTM4NCw0MjMuOTk5SDEzNkg5NnYtNjcuMDU2bDI1Ljg4OC0xMi45NDRoMjM2LjIyNEwzODQsMzU2Ljk0M1Y0MjMuOTk5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTUyLDM1OS45OTloLTI0Yy04LjgzNywwLTE2LDcuMTYzLTE2LDE2djE2YzAsOC44MzcsNy4xNjMsMTYsMTYsMTZoMjRjOC44MzcsMCwxNi03LjE2MywxNi0xNnYtMTYNCgkJCUMxNjgsMzY3LjE2MiwxNjAuODM3LDM1OS45OTksMTUyLDM1OS45OTl6IE0xNTIsMzkxLjk5OWgtMjR2LTE2aDI0VjM5MS45OTl6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTIsMzU5Ljk5OWgtMjRjLTguODM3LDAtMTYsNy4xNjMtMTYsMTZ2MTZjMCw4LjgzNyw3LjE2MywxNiwxNiwxNmgyNGM4LjgzNywwLDE2LTcuMTYzLDE2LTE2di0xNg0KCQkJQzM2OCwzNjcuMTYyLDM2MC44MzcsMzU5Ljk5OSwzNTIsMzU5Ljk5OXogTTM1MiwzOTEuOTk5aC0yNHYtMTZoMjRWMzkxLjk5OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTI4MCwzNTkuOTk5aC04MGMtOC44MzcsMC0xNiw3LjE2My0xNiwxNnYxNmMwLDguODM3LDcuMTYzLDE2LDE2LDE2aDgwYzguODM3LDAsMTYtNy4xNjMsMTYtMTZ2LTE2DQoJCQlDMjk2LDM2Ny4xNjIsMjg4LjgzNywzNTkuOTk5LDI4MCwzNTkuOTk5eiBNMjgwLDM5MS45OTloLTgwdi0xNmg4MFYzOTEuOTk5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Kxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMS45NzggNTExLjk3OCIgd2lkdGg9IjUxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTMwLjAwOSAyMjMuMjQ4YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjV2LTE2LjY5NmMwLTEyLjU1NyAxMC4yMTYtMjIuNzczIDIyLjc3Mi0yMi43NzNoMTUuMzkyYzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xNS4zOTJjLTIwLjgyOCAwLTM3Ljc3MiAxNi45NDUtMzcuNzcyIDM3Ljc3M3YxNi42OTZjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzMC4wMDkgMjgxLjE4N2M0LjE0MyAwIDcuNS0zLjM1OCA3LjUtNy41di0yNC43NDZjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2MjQuNzQ2YzAgNC4xNDIgMy4zNTggNy41IDcuNSA3LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNTcuODU2IDIwOC44NnYzNi4zMzljMCA0LjE0MiAzLjM1NyA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtMzYuMzM5YzAtMy4yOTQgMi43OTYtNi4wNzggNi4xMDUtNi4wNzhoMTMuMjM3YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41aC0xMy4yMzdjLTExLjYzNyAwLTIxLjEwNSA5LjQ1NS0yMS4xMDUgMjEuMDc4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjI4LjE4MSAyMTEuNDNjMi45NDIgMS45NjQgNi4zODIgMi45NjMgOS44ODkgMi45NjMgMi40NDIgMCA0LjkxOS0uNDg1IDcuMjgyLTEuNDY3bDI0Ljc2LTEwLjI1NSA2My41OTUgNC45MDYgNC42NjEgMTYuMTIxYzEuNjE5IDUuNjAxIDUuNTk2IDEwLjA3NCAxMS4xOTcgMTIuNTk1IDMuMTQ4IDEuNDE3IDYuNTkxIDIuMTI0IDEwLjA0MSAyLjEyNCAzLjY1MyAwIDcuMzE2LS43OTMgMTAuNjQ0LTIuMzc0bDExNy4yOTEtNTUuNzI5YzYuNDY5LTMuMDc0IDExLjQyNS05LjAxIDEzLjI1OC0xNS44OCAxLjU4Mi01LjkzMi42MjktMTEuODM1LTIuNjg0LTE2LjYxOWwtMjMuNjM5LTM0LjE2NGMxNy43NjMtMjAuNDYyIDIxLjk0MS00OS41OTUgMTAuMTI3LTc0LjQ2MS0xNi4yNzItMzQuMjAxLTU3LjMzMi00OC43OTctOTEuNTEtMzIuNTUtMjYuMTgxIDEyLjQzNS00MS41OTIgNDAuMDA4LTM4LjkxIDY4LjQ1OGwtMzMuNzY2IDE2LjA0MmMtLjAwMSAwLS4wMDEgMC0uMDAxIDAtMTAuNzI1IDUuMDk2LTE1LjM5MSAxNy4yODEtMTEuNjExIDMwLjMxNWw4Ljc0NSAzMC4yNDJoLTQ3LjE1N2wtMjUuMDU1LTEwLjM3N2MtNS43NjMtMi4zNzEtMTIuMTc5LTEuNzkzLTE3LjE2NyAxLjU0Ni00LjcxMyAzLjE1Ny03LjQxNiA4LjIyMS03LjQxNiAxMy44OTN2NDAuNzYxYy0uMDAyIDUuNjkxIDIuNzA2IDEwLjc2IDcuNDI2IDEzLjkxem0yNTcuNi01NS4wNzdjLjc5IDEuMTQuOTY2IDIuNTU4LjUyNCA0LjIxNC0uNjkyIDIuNTkzLTIuNzM0IDUuMDI2LTUuMjAyIDYuMTk5bC0xMTcuMjkxIDU1LjcyOGMtMi40NyAxLjE3My01LjY0NiAxLjIyMS04LjA5MS4xMi0xLjU2NS0uNzA0LTIuNTU2LTEuNzQxLTIuOTQzLTMuMDgzbC0yMi4zNzYtNzcuMzg1IDEwOS41NDItNTIuMDR6bS04Ni4yNTItMTM2LjE2MmMuMDAxIDAgLjAwMi0uMDAxLjAwMy0uMDAxIDI2LjcxNi0xMi43MDMgNTguODA2LTEuMjg4IDcxLjUyNCAyNS40NDIgOC42NjQgMTguMjM3IDYuMzMgMzkuNDE3LTUuNDYzIDU1LjE3M2wtLjAyNC0uMDI2LTI4LjAwMi00MC40N2MtNy43MjktMTEuMTYtMjAuMTM1LTE1LjI0MS0zMC44NjgtMTAuMTU3bC0zNy44MDMgMTcuOTU4LS4wMTIuMDAzYy4yMTctMjAuMTkgMTEuODk5LTM5LjAxOSAzMC42NDUtNDcuOTIyem0tNzIuNjc2IDg0LjQ5OCA4Ni4yNzMtNDAuOTg0YzQuNzUtMi4yNTEgOS40OTIgMS4zNjYgMTIuMTA3IDUuMTQzbDYuMDYyIDguNzYtMTA1LjExNSA0OS45MzctMi45NjctMTAuMjYyYy0xLjI3OC00LjQwNC0xLjA5LTEwLjM0NiAzLjY0LTEyLjU5NHptLTUwLjQ1MyA2Mi4wMDloNDUuNDc4bDcuMzY1IDI1LjQ5LTUyLjg0My00LjA3N3ptLTQwLjY0Ny05LjkzOGMwLS4zOTUuMDc5LS45NzIuNzY1LTEuNDMxLjIwNC0uMTM3Ljc3MS0uNDU1IDEuNjEzLS40NTUuNDI3IDAgLjkyNC4wODIgMS40OC4zMTFsMjEuNzg4IDkuMDI0djI1LjgzNGwtMjEuNzk3IDkuMDI3Yy0xLjY2NS42OTQtMi43OTIuMDg1LTMuMDk2LS4xMTgtLjY2OC0uNDQ2LS43NTQtLjk5OS0uNzU0LTEuNDMxdi00MC43NjF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTcuOTYgNDY0LjQ3OWMtMi45MjkgMi45MjktMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjEgMy4zNzEgMi4xOSA1LjI4MyAyLjE5IDEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOC03LjY3OC0yLjkyOC0xMC42MDcuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTkwLjkyIDQ2OC4yNzdjLTIuOTI5IDIuOTI5LTIuOTI5IDcuNjc4IDAgMTAuNjA2bC4wMjguMDI4YzEuNDYyIDEuNDYxIDMuMzcxIDIuMTkgNS4yODMgMi4xOSAxLjkyIDAgMy44NDItLjczNiA1LjMxLTIuMjA0IDIuOTI5LTIuOTI5IDIuOTE1LTcuNjkyLS4wMTQtMTAuNjIxLTIuOTMtMi45MjctNy42NzgtMi45MjctMTAuNjA3LjAwMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMwNy45NTcgNDY0LjQ3OWMtMi45MjkgMi45MjktMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjEgMy4zNzEgMi4xOSA1LjI4MyAyLjE5IDEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOC03LjY3OC0yLjkyOC0xMC42MDcuMDAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzc2LjIyMiA0ODEuMTAyYzEuOTIgMCAzLjg0Mi0uNzM2IDUuMzEtMi4yMDQgMi45MjktMi45MjkgMi45MTUtNy42OTItLjAxNC0xMC42MjEtMi45My0yLjkyOS03LjY3OC0yLjkyOS0xMC42MDcgMHMtMi45MjkgNy42NzggMCAxMC42MDZsLjAyOC4wMjhjMS40NjIgMS40NjIgMy4zNzEgMi4xOTEgNS4yODMgMi4xOTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NzAuNzg0IDQwOS4zODVjMjIuNzEzLTIuMjc4IDQxLjE5MS0yMi43OTIgNDEuMTkxLTQ1LjcyOXYtMjguNzQzYzAtMy43MDktMS41NDktNy4yMzQtNC4yNDgtOS42NzEtMi42OTItMi40MzEtNi4zNTItMy42MDktMTAuMDEtMy4yMzNsLTI4LjgxIDIuODkyYy05LjkyMyAxLjAxLTE5LjAzNyA1LjUwMi0yNi4xNTEgMTIuMTUybC4wNjMtNS4xNTRjMC0yMi45MDMtMTguMzM3LTQzLjI2Ni00MS4wNTQtNDUuNTc4bC0yOC43ODMtMi44OWMtMy42ODctLjM3OS03LjMzNC44MDItMTAuMDI1IDMuMjMyLTIuNjk5IDIuNDM4LTQuMjQ4IDUuOTYyLTQuMjQ4IDkuNjcxdjI4Ljc0M2MwIDIyLjkwMyAxOC40NzMgNDMuNDE3IDQxLjE4NSA0NS43MjlsMjcuODYzIDIuODE0djUzLjk5NmgtNTQuNTE5Yy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDExOS4zMDRjMi40NDQgMCA0LjQzNCAxLjk3NiA0LjQzNCA0LjQwNXY0NS41MjNjMCAyLjQwMy0yLjAzIDQuNDM0LTQuNDM0IDQuNDM0aC00NzMuMTM0Yy0yLjM4OCAwLTQuNDA1LTIuMDMtNC40MDUtNC40MzR2LTQ1LjUyM2MwLTIuMzg4IDIuMDE4LTQuNDA1IDQuNDA1LTQuNDA1aDMxOS4xOTJjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTc1LjEyNnYtMTUuMzk3bDI4LjA1Ny0yLjgzM2MyMi43MTMtMi4yNzggNDEuMTktMjIuNzkyIDQxLjE5LTQ1LjcyOXYtMjguNzQzYzAtMy43MDUtMS41NTItNy4yMjktNC4yNTctOS42NjktMi43LTIuNDM1LTYuMzU5LTMuNjEyLTEwLjAwMS0zLjIzNWwtMjguODEgMi44OTJjLTkuOTM0IDEuMDExLTE5LjA1OCA1LjUwNy0yNi4xOCAxMi4xNjMgMCAwIC4xOTktNC40MjkuMTk5LTUuMDEzIDAtMjIuOTA3LTE4LjQ3NC00My40Mi00MS4xOS00NS43MjlsLTI4Ljc3Ni0yLjg5Yy0zLjY2Ni0uMzc1LTcuMzA4Ljc5Ni05Ljk5NyAzLjIyMi0yLjcwNCAyLjQzOS00LjI1NSA1Ljk2Ny00LjI1NSA5LjY4MXYyOC43NDNjMCAyMi45MDMgMTguNDc0IDQzLjQxNyA0MS4xODYgNDUuNzI5bDI3LjgzNCAyLjgxM3Y1My45OTZoLTE2NC4yNTN2LTE1LjM5OGwyOC4wMjYtMi44MzJjMjIuNzEzLTIuMjc0IDQxLjE5MS0yMi43ODkgNDEuMTkxLTQ1LjcyOXYtMjguNzQzYzAtMy43MTMtMS41NTEtNy4yNDItNC4yNTUtOS42ODEtMi42ODktMi40MjYtNi4zMzMtMy42MDQtOS45NzUtMy4yMjRsLTI4LjgxIDIuODkyYy05LjkzNCAxLjAxMS0xOS4wNTggNS41MDctMjYuMTc5IDEyLjE2MiAwIDAgLjE5OC00LjQzLjE5OC01LjAxMiAwLTIyLjkwMy0xOC40NzQtNDMuNDE3LTQxLjE5LTQ1LjcyOWwtMjguNzc2LTIuODljLTMuNjYtLjM3NC03LjMwNi43OTUtOS45OTcgMy4yMjItMi43MDQgMi40MzktNC4yNTUgNS45NjgtNC4yNTUgOS42ODF2MjguNzQzYzAgMjIuOTAzIDE4LjQ3NCA0My40MTcgNDEuMTg2IDQ1LjcyOWwyNy44MzUgMi44MTN2MzEuNzk1IDIyLjIwMWgtNDkuODEyYy0xMC43IDAtMTkuNDA1IDguNzA1LTE5LjQwNSAxOS40MDV2NDUuNTIzYzAgMTAuNzE2IDguNzA1IDE5LjQzNCAxOS40MDUgMTkuNDM0aDQ3My4xMzRjMTAuNzE2IDAgMTkuNDM0LTguNzE4IDE5LjQzNC0xOS40MzR2LTQ1LjUyM2MwLTEwLjctOC43MTgtMTkuNDA1LTE5LjQzNC0xOS40MDVoLTQ5Ljc4NXYtMTUuMzk4em0tMjguMDI4LTM4Ljc1NmMwLTE1LjE3MSAxMi42NzItMjkuMjc5IDI3LjY2LTMwLjgwNWwyNi41NTktMi42NjZ2MjYuNDk4YzAgMTUuMTkyLTEyLjY4IDI5LjI5OS0yNy42OTMgMzAuODA1bC0xNS40MTUgMS41NTggMTkuMDY5LTIxLjA5N2MyLjc3Ny0zLjA3MyAyLjUzNy03LjgxNi0uNTM1LTEwLjU5My0zLjA3Mi0yLjc3NS03LjgxNC0yLjUzOS0xMC41OTQuNTM1bC0xOS4wNTEgMjEuMDc3em0tMTUtMjMuNDU3LTE4Ljg4LTIwLjg4OGMtMi43NzktMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTItLjUzNSAxMC41OTNsMTkuMDY3IDIxLjA5Ni0xNS40MDgtMS41NTZjLTE1LjAxNC0xLjUyOC0yNy42OTgtMTUuNjM1LTI3LjY5OC0zMC44MDV2LTI2LjQ5N2wyNi41NDggMi42NjZjMTUuMDE1IDEuNTI4IDI3LjUgMTUuNjM1IDI3LjUgMzAuODA1em0tMTY0LjI4MiAyMy40NTdjMC0xNS4xNyAxMi42ODUtMjkuMjc3IDI3LjY4OC0zMC44MDVsMjYuNTU5LTIuNjY2djI2LjQ5OGMwIDE1LjE5Mi0xMi42NzkgMjkuMjk5LTI3LjY5MiAzMC44MDVsLTE1LjQxNCAxLjU1NyAxOS4wNjgtMjEuMDk2YzIuNzc3LTMuMDczIDIuNTM3LTcuODE2LS41MzUtMTAuNTkzLTMuMDcyLTIuNzc1LTcuODE0LTIuNTM5LTEwLjU5NC41MzVsLTE5LjA3OSAyMS4xMDh2LTE1LjM0M3ptLTQ0Ljk4LTM0LjI4NiAxOS4wNjkgMjEuMDk3LTE1LjQwOS0xLjU1N2MtMTUuMDE1LTEuNTI4LTI3LjY5OS0xNS42MzUtMjcuNjk5LTMwLjgwNXYtMjYuNDk1bDI2LjUyMSAyLjY2M2MxNS4wMTUgMS41MjYgMjcuNDk5IDE1LjYzMyAyNy40OTkgMzAuODA1djE1LjA5MWwtMTguODUyLTIwLjg1N2MtMi43NzgtMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTItLjUzNSAxMC41OTN6bS0xMzQuMjczIDM0LjI4NmMwLTE1LjE3IDEyLjY4NS0yOS4yNzcgMjcuNjg4LTMwLjgwNWwyNi41My0yLjY2M3YyNi40OTVjMCAxNS4xOTUtMTIuNjc5IDI5LjMwMS0yNy42OTIgMzAuODA1bC0xNS40MDUgMS41NTcgMTkuMDgzLTIxLjA5NGMyLjc3OS0zLjA3MiAyLjU0Mi03LjgxNC0uNTMtMTAuNTkzLTMuMDY4LTIuNzc4LTcuODEzLTIuNTQyLTEwLjU5My41M2wtMTkuMDgxIDIxLjA5MXptLTQ0Ljk4MS0zNC4yODYgMTkuMDY5IDIxLjA5Ny0xNS40MDktMS41NThjLTE1LjAxNS0xLjUyOC0yNy42OTktMTUuNjM1LTI3LjY5OS0zMC44MDV2LTI2LjQ5NWwyNi41MiAyLjY2M2MxNS4wMTUgMS41MjggMjcuNTAxIDE1LjYzNSAyNy41MDEgMzAuODA1djE1LjA5MmwtMTguODUzLTIwLjg1OGMtMi43NzktMy4wNzItNy41MjEtMy4zMTItMTAuNTk0LS41MzVzLTMuMzEzIDcuNTIxLS41MzUgMTAuNTk0eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",qxe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTI2LjYyMiAxNTEuNzQxaDEwLjh2MzUuNjgxYzAgMTEuMTI1IDkuMDUxIDIwLjE3NSAyMC4xNzUgMjAuMTc1aDE0LjgxNGM0Ljc5OSAwIDkuMjA4LTEuNjkxIDEyLjY3NS00LjUgMy40NjcgMi44MDkgNy44NzUgNC41IDEyLjY3NSA0LjVoMTQuODE0YzExLjEyNCAwIDIwLjE3NS05LjA1IDIwLjE3NS0yMC4xNzV2LTM5Ljk0aDIwLjEzOXYxODUuMTE1aC0yMy40NTdjLTEwLjkzOCAwLTE5LjgzNyA4Ljg5OC0xOS44MzcgMTkuODM2djM3LjMyNGMwIDkuOTY4IDcuMzk4IDE4LjIxOSAxNi45ODggMTkuNjA4djg3LjU3NmMwIDguMzA0IDYuNzU1IDE1LjA1OSAxNS4wNTkgMTUuMDU5aDMwLjMzNWM4LjMwNCAwIDE1LjA1OS02Ljc1NSAxNS4wNTktMTUuMDU5di01My44NDRoNTEuNDY0YzQuMTQzIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU3LTcuNS03LjUtNy41Yy05Ljc2NSAwLTg1Ljc4NSAwLTk2LjkxNyAwdi0xOC41MDNoMjI4LjgzNHYxOC41MDNjLTExLjEzNyAwLTg3LjIxNyAwLTk2LjkxNyAwLTQuMTQzIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTcgNy41IDcuNSA3LjVoNTEuNDY1djUzLjg0NGMwIDguMzA0IDYuNzU1IDE1LjA1OSAxNS4wNTkgMTUuMDU5aDMwLjMzNGM4LjMwNCAwIDE1LjA2LTYuNzU1IDE1LjA2LTE1LjA1OSAwLTEwLjE1NCAwLTc3LjAzNiAwLTg3LjU3NiA5LjU5LTEuMzg5IDE2Ljk4OC05LjY0IDE2Ljk4OC0xOS42MDh2LTM3LjMyNGMwLTEwLjkzOC04Ljg5OC0xOS44MzYtMTkuODM3LTE5LjgzNmgtMjMuNDU3di03NS4wNThjMC00LjE0Mi0zLjM1Ny03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NzUuMDU4aC0yNS4xNjRjMC0yMS43MTMgMC0xNjIuOTEyIDAtMTg1LjExNWgyNS4xNjR2NzUuMDU4YzAgNC4xNDIgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU4IDcuNS03LjV2LTc1LjA1OGgyMC4xMzl2MzkuOTRjMCAxMS4xMjUgOS4wNTEgMjAuMTc1IDIwLjE3NSAyMC4xNzVoMTQuODE0YzQuNzk5IDAgOS4yMDgtMS42OTEgMTIuNjc1LTQuNSAzLjQ2NyAyLjgwOSA3Ljg3NSA0LjUgMTIuNjc0IDQuNWgxNC44MTVjMTEuMTI0IDAgMjAuMTc1LTkuMDUgMjAuMTc1LTIwLjE3NXYtMzUuNjgxaDEwLjhjMTEuMTI0IDAgMjAuMTc1LTkuMDUgMjAuMTc1LTIwLjE3NXYtMTQuODE0YzAtMTEuMTI1LTkuMDUxLTIwLjE3NS0yMC4xNzUtMjAuMTc1aC0xMC44di0zNS42ODFjMC0xMS4xMjQtOS4wNTEtMjAuMTc0LTIwLjE3NS0yMC4xNzRoLTE0LjgxNWMtNC43OTkgMC05LjIwNyAxLjY5MS0xMi42NzQgNC41LTMuNDY3LTIuODA5LTcuODc1LTQuNS0xMi42NzUtNC41aC0xNC44MTRjLTExLjEyNCAwLTIwLjE3NSA5LjA1LTIwLjE3NSAyMC4xNzR2MzkuOTQxaC0yMC4xMzl2LTgwLjY2M2MtLjAwMS0xMS4xMjQtOS4wNTEtMjAuMTc0LTIwLjE3NS0yMC4xNzRoLTE0LjgxNGMtMTEuMTI0IDAtMjAuMTc1IDkuMDUtMjAuMTc1IDIwLjE3NHY1MC41MzRoLTk1Ljg5NnYtNTAuNTM0YzAtMTEuMTI0LTkuMDUtMjAuMTc0LTIwLjE3NC0yMC4xNzRoLTE0LjgxNWMtMTEuMTI0IDAtMjAuMTc0IDkuMDUtMjAuMTc0IDIwLjE3NHY4MC42NjNoLTIwLjEzOXYtMzkuOTQxYzAtMTEuMTI0LTkuMDUxLTIwLjE3NC0yMC4xNzUtMjAuMTc0aC0xNC44MTRjLTQuNzk5IDAtOS4yMDggMS42OTEtMTIuNjc1IDQuNS0zLjQ2Ny0yLjgwOS03Ljg3NS00LjUtMTIuNjc1LTQuNWgtMTQuODE0Yy0xMS4xMjQgMC0yMC4xNzUgOS4wNS0yMC4xNzUgMjAuMTc0djM1LjY4MWgtMTAuOGMtMTEuMTI0IDAtMjAuMTc1IDkuMDUtMjAuMTc1IDIwLjE3NXYxNC44MTRjMCAxMS4xMjUgOS4wNTEgMjAuMTc1IDIwLjE3NSAyMC4xNzV6bTE0MS4yNjctNC4yNmgyNS4xNjN2MTg1LjExNWgtMjUuMTYzem00MC4xNjMgNjguNzEyaDk1Ljg5NnY3Ni45MDFoLTk1Ljg5NnptOTUuODk1LTE1aC05NS44OTZ2LTIzLjU4M2g5NS44OTZ6bS0xMzEuOTE5IDI0MS45MDQtLjA1MSA1My45MDMtMzAuMzkzLS4wMzljMC0uMDAxLS4wMDEtLjAwOC0uMDAxLS4wMnYtNTMuODQ0em0xOTguMzI5IDUzLjkwMy0zMC4zOTMtLjA1OXYtNTMuODQ0aDMwLjQ0NXptMTIuMjExLTE0OS40MDNjMi42NjcgMCA0LjgzNyAyLjE2OSA0LjgzNyA0LjgzNnYzNy4zMjRjMCAyLjY2Ny0yLjE3IDQuODM2LTQuODM3IDQuODM2LTEzLjIwMiAwLTI0MS4yNTYgMC0yNTMuMTM3IDAtMi42NjcgMC00LjgzNy0yLjE2OS00LjgzNy00LjgzNnYtMzcuMzI0YzAtMi42NjcgMi4xNy00LjgzNiA0LjgzNy00LjgzNnptLTE3NC41MTYtMTV2LTI0LjUwM2g5NS44OTZ2MjQuNTAzem05NS44OTUtMTY5Ljk4N2gtOTUuODk2di0xNS4xMjhoOTUuODk2em0tMTE1Ljk3Ny0zMC4xMjl2LTE2LjY0NWgxMzYuMDZ2MTYuNjQ1Yy00LjY1MyAwLTEzMC40MTEgMC0xMzYuMDYgMHptMjk3LjQwOC0yMC45MDRjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc1djE0LjgxNGMwIDIuODA1LTIuMzcgNS4xNzUtNS4xNzUgNS4xNzVoLTEwLjh2LTI1LjE2NHptLTQ1Ljc5LTU1Ljg1NWgxNC44MTVjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc0djEyNi41MjZjMCAyLjgwNS0yLjM3IDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTVjLTIuODA1IDAtNS4xNzQtMi4zNy01LjE3NC01LjE3NXYtMTI2LjUyNmMwLTIuODA1IDIuMzY5LTUuMTc0IDUuMTc0LTUuMTc0em0tNDUuMzM4IDUuMTc0YzAtMi44MDUgMi4zNy01LjE3NCA1LjE3NS01LjE3NGgxNC44MTRjMi44MDUgMCA1LjE3NSAyLjM3IDUuMTc1IDUuMTc0djEyNi41MjZjMCAyLjgwNS0yLjM3IDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODU0IDAtNS4xNzUtMi4zMjEtNS4xNzUtNS4xNzUgMC0yLjkwNCAwLTEyMi42MDIgMC0xMjYuNTI2em0tMTUgNzEuNTg1Yy0xMy40NjMgMC0yNS4xODYgMC00MC4yMjEgMHYtMTYuNjQ1aDQwLjIyMXptLTYwLjMwMy0xMTIuMzA3YzAtMi44MDUgMi4zNy01LjE3NCA1LjE3NS01LjE3NGgxNC44MTRjMi44NTQgMCA1LjE3NSAyLjMyMSA1LjE3NSA1LjE3NHY4MC42NjNjLTkuMTA2IDAtMTYuMDU4IDAtMjUuMTY0IDAgMC05LjM3MyAwLTcwLjg4NSAwLTgwLjY2M3ptLTE1IDY1LjUzNHYxNS4xMjhoLTk1Ljg5NnYtMTUuMTI4em0tMTM2LjA1OC02NS41MzRjMC0yLjgwNSAyLjM2OS01LjE3NCA1LjE3NC01LjE3NGgxNC44MTVjMi44MDUgMCA1LjE3NCAyLjM3IDUuMTc0IDUuMTc0djgwLjY2M2MtOS4xMDQgMC0xNi4wMzkgMC0yNS4xNjMgMHptNS4wODEgOTUuNjYzdjE2LjY0NWMtMTUuMjczIDAtMjYuNDYgMC00MC4yMiAwdi0xNi42NDV6bS03NS4yMDktNjAuMTE1aDE0LjgxNGMyLjgwNSAwIDUuMTc1IDIuMzcgNS4xNzUgNS4xNzR2MTI2LjUyNmMwIDIuODU0LTIuMzIxIDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODA1IDAtNS4xNzUtMi4zNy01LjE3NS01LjE3NXYtMTI2LjUyNmMwLTIuODA1IDIuMzctNS4xNzQgNS4xNzUtNS4xNzR6bS00NS4zMzkgNS4xNzRjMC0yLjgwNSAyLjM3LTUuMTc0IDUuMTc1LTUuMTc0aDE0LjgxNGMyLjgwNSAwIDUuMTc1IDIuMzcgNS4xNzUgNS4xNzR2MTI2LjUyNmMwIDIuODU0LTIuMzIxIDUuMTc1LTUuMTc1IDUuMTc1aC0xNC44MTRjLTIuODU0IDAtNS4xNzUtMi4zMjEtNS4xNzUtNS4xNzUgMC01LjY3OSAwLTEyMC44MjcgMC0xMjYuNTI2em0tMzAuOTc1IDU1Ljg1NmMwLTIuODU0IDIuMzIxLTUuMTc1IDUuMTc1LTUuMTc1aDEwLjh2MjUuMTY0aC0xMC44Yy0yLjg1NCAwLTUuMTc1LTIuMzIxLTUuMTc1LTUuMTc1eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",eSe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NzIsMjgwaC0xNlYxNjYuNGMwLTEyLTkuNi0yMi40LTIyLjQtMjIuNGgtNGMtMTIsMC0yMi40LDkuNi0yMi40LDIyLjRWMjgwaC0yNHYtMTZjMC0xMy42LTEwLjQtMjQtMjQtMjRIMTIwDQoJCQljLTEzLjYsMC0yNCwxMC40LTI0LDI0djE2SDcyVjE2Ni40YzAtMTItOS42LTIyLjQtMjIuNC0yMi40aC0zLjJjLTEyLjgsMC0yMi40LDkuNi0yMi40LDIyLjRWMjgwSDhjLTQuOCwwLTgsMy4yLTgsOHMzLjIsOCw4LDhoOA0KCQkJdjE0NGMwLDQuOCwzLjIsOCw4LDhoOHY4YzAsNC44LDMuMiw4LDgsOHM4LTMuMiw4LTh2LThoMzg0djhjMCw0LjgsMy4yLDgsOCw4czgtMy4yLDgtOHYtOGg4YzQuOCwwLDgtMy4yLDgtOFYyOTZoOA0KCQkJYzQuOCwwLDgtMy4yLDgtOFM0NzYuOCwyODAsNDcyLDI4MHogTTQzMC40LDE2MGg0YzMuMiwwLDYuNCwyLjQsNi40LDYuNFYyODBoLTE2VjE2Ni40SDQyNEM0MjQsMTYzLjIsNDI2LjQsMTYwLDQzMC40LDE2MHoNCgkJCSBNMTEyLDI2NGMwLTQuOCwzLjItOCw4LThoMjQwYzQuOCwwLDgsMy4yLDgsOHYxNkgxMTJWMjY0eiBNNDAsMTY2LjRjMC00LDIuNC02LjQsNi40LTYuNGg0YzMuMiwwLDUuNiwyLjQsNS42LDYuNFYyODBINDBWMTY2LjR6DQoJCQkgTTIzMiw0MzJIMzJ2LTY0aDIwMFY0MzJ6IE00NDgsNDMySDI0OHYtNjRoMjAwVjQzMnogTTQ0OCwzNTJIMzJ2LTU2aDQxNlYzNTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMDgsMzg0Yy00LjgsMC04LDMuMi04LDh2MTZjMCw0LjgsMy4yLDgsOCw4czgtMy4yLDgtOHYtMTZDMjE2LDM4Ny4yLDIxMi44LDM4NCwyMDgsMzg0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjcyLDM4NGMtNC44LDAtOCwzLjItOCw4djE2YzAsNC44LDMuMiw4LDgsOHM4LTMuMiw4LTh2LTE2QzI4MCwzODcuMiwyNzYuOCwzODQsMjcyLDM4NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM4NCwxNkg5NmMtNC44LDAtOCwzLjItOCw4djE2MGMwLDQuOCwzLjIsOCw4LDhoMjg4YzQuOCwwLDgtMy4yLDgtOFYyNEMzOTIsMTkuMiwzODguOCwxNiwzODQsMTZ6IE0zNzYsMTc2SDEwNFYzMmgyNzINCgkJCVYxNzZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTIsMTQ0aC04Yy00LjgsMC04LDMuMi04LDhzMy4yLDgsOCw4aDhjNC44LDAsOC0zLjIsOC04UzM1Ni44LDE0NCwzNTIsMTQ0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTU3LjYsNTAuNGMtMy4yLTMuMi04LTMuMi0xMS4yLDBsLTI0LDI0Yy0zLjIsMy4yLTMuMiw4LDAsMTEuMmMzLjIsMy4yLDgsMy4yLDExLjIsMGwyNC0yNA0KCQkJQzE2MC44LDU4LjQsMTYwLjgsNTMuNiwxNTcuNiw1MC40eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTk3LjYsNTAuNGMtMy4yLTMuMi04LTMuMi0xMS4yLDBsLTU2LDU2Yy0zLjIsMy4yLTMuMiw4LDAsMTEuMmMzLjIsMy4yLDgsMy4yLDExLjIsMGw1Ni01Ng0KCQkJQzIwMC44LDU4LjQsMjAwLjgsNTMuNiwxOTcuNiw1MC40eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",tSe="PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgd2lkdGg9IjQ4MHB0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im00NzIgOTZoLTE0NGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHYxODRoLTE3NnYtMjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMjR2MTZoMTZ2MTZoLTMydi0zMmgtMTZ2MzJoLTMydi0xNmgxNnYtMTZoLTI0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djI0aC0yNGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHYxNzZjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg0NjRjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtMzY4YzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS0xMzYgMTZoMTI4djk2aC0xMjh6bS0xNiAyMjRoLTE0NHYtMzJoMTQ0em0tMzA0LTMyaDE0NHYzMmgtMTQ0em0wIDQ4aDE0NHYxMTJoLTE0NHptMTYwIDBoNjR2MTEyaC02NHptODAgMGg2NHYxMTJoLTY0em04MCAxMTJ2LTI0MGgxMjh2MjQwem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1MiAxNDRoMTZ2MzJoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1MiAyNTZoMTZ2MzJoLTE2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ4IDMyMGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04MCAzMjBjMCA0LjQxNzk2OS0zLjU4MjAzMSA4LTggOHMtOC0zLjU4MjAzMS04LTggMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTEyIDMyMGMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4cy04LTMuNTgyMDMxLTgtOCAzLjU4MjAzMS04IDgtOCA4IDMuNTgyMDMxIDggOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDQgMzIwYzAgNC40MTc5NjktMy41ODIwMzEgOC04IDhzLTgtMy41ODIwMzEtOC04IDMuNTgyMDMxLTggOC04IDggMy41ODIwMzEgOCA4em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTggMTUyaDE2MGM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0yNGMwLTIuMTIxMDk0LS44NDM3NS00LjE1NjI1LTIuMzQzNzUtNS42NTYyNWwtMzItMzJjLTEuNS0xLjUtMy41MzUxNTYtMi4zNDM3NS01LjY1NjI1LTIuMzQzNzVoLTh2LTcyYzAtNC40MTc5NjktMy41ODIwMzEtOC04LThoLTY0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djcyaC04Yy0yLjEyMTA5NCAwLTQuMTU2MjUuODQzNzUtNS42NTYyNSAyLjM0Mzc1bC0zMiAzMmMtMS41IDEuNS0yLjM0Mzc1IDMuNTM1MTU2LTIuMzQzNzUgNS42NTYyNXYyNGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4em01Ni0xMzZoNDh2NjRoLTQ4em0tNDggMTA3LjMxMjUgMjcuMzEyNS0yNy4zMTI1aDg5LjM3NWwyNy4zMTI1IDI3LjMxMjV2MTIuNjg3NWgtMTQ0em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzNiAzNjhoLTk2Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djY0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoOTZjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNjRjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOHptLTggNjRoLTgwdi00OGg4MHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzIgMzEyaDMydjE2aC0zMnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMDggMzkyaDE2djMyaC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNzIgMzkyaDE2djMyaC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xOTIgMjAwaDQ4YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LThjLS4wNTQ2ODgtMTQuNTQ2ODc1LTkuOTE0MDYyLTI3LjIyNjU2Mi0yNC0zMC44NjMyODF2LTE1My4xMzY3MTloLTE2djE1My4xMzY3MTljLTE0LjA4NTkzOCAzLjYzNjcxOS0yMy45NDUzMTIgMTYuMzE2NDA2LTI0IDMwLjg2MzI4MXY4YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDh6bTI0LTMyYzguODM1OTM4IDAgMTYgNy4xNjQwNjIgMTYgMTZoLTMyYzAtOC44MzU5MzggNy4xNjQwNjItMTYgMTYtMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMjQ4IDEzNmg0OGM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di04Yy0uMDU0Njg4LTE0LjU0Njg3NS05LjkxNDA2Mi0yNy4yMjY1NjItMjQtMzAuODYzMjgxdi04OS4xMzY3MTloLTE2djg5LjEzNjcxOWMtMTQuMDg1OTM4IDMuNjM2NzE5LTIzLjk0NTMxMiAxNi4zMTY0MDYtMjQgMzAuODYzMjgxdjhjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOHptMjQtMzJjOC44MzU5MzggMCAxNiA3LjE2NDA2MiAxNiAxNmgtMzJjMC04LjgzNTkzOCA3LjE2NDA2Mi0xNiAxNi0xNnptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+",sSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUxMC40MTcgMjMzLjIyNS01OC42NDQtMTE3LjI3OWMtMTUuOTM5LTMxLjg3Ny00Ny45NzgtNTEuNjgtODMuNjItNTEuNjgtOC41ODYgMC0xNi45ODQgMS4xODgtMjUuMDMyIDMuNDM3LjEwNS0xLjQ4OS4xNzgtMi45ODguMTc4LTQuNTAzIDAtMzQuODQ5LTI4LjM1MS02My4yLTYzLjItNjMuMnMtNjMuMiAyOC4zNTItNjMuMiA2My4yYzAgMzAuOTkzIDIyLjQzMiA1Ni44MjggNTEuOTA5IDYyLjE2OWwtNjEuMzY2IDYxLjQ3Yy02Ljg3NSA2Ljg4Ni0yMS44NzEgMjcuODItMTAuMzMzIDU0LjQ2LTEuNzA1LS4xOTEtMy40MjEtLjI5OS01LjE0NC0uMjk5LTIzLjA4NyAwLTQyLjMzNiAxNi42OS00Ni4zNTEgMzguNjM1LTcuNzQtNC4xNDQtMTYuNTczLTYuNTAxLTI1Ljk0OS02LjUwMS0zMC40MTkgMC01NS4xNjcgMjQuNzQ4LTU1LjE2NyA1NS4xNjcgMCA5LjA2MyAyLjIxMSAxNy42MTUgNi4xIDI1LjE2N2gtNDAuNTk4di0zMzguNDY4YzAtOC4yODQtNi43MTYtMTUtMTUtMTVzLTE1IDYuNzE2LTE1IDE1djQ4MmMwIDguMjg0IDYuNzE2IDE1IDE1IDE1czE1LTYuNzE2IDE1LTE1di00OS4yNjdoMzA2LjU2M2M4LjI4NCAwIDE1LTYuNzE2IDE1LTE1di02NC4yNjdjMC04LjI4NC02LjcxNi0xNS0xNS0xNWgtMzYuNDEyYzMuMjc0LTguMzk1IDMuMjE0LTE1LjI2MyAzLjIxNC0xOC4yIDI4LjQ2OSAwIDQ4LjItMjIuMDk4IDQ4LjItNDcuMTMzIDAtMjUuOTg5LTIxLjE0NC00Ny4xMzMtNDcuMTMzLTQ3LjEzM2gtMTIuMzA0bDU1LjkwNC01Ni4wODYgNTMuNzM2IDEwNi43NzctLjEwMyAyMDUuMzAxYy0uMDAyIDMuOTc5IDEuNTc4IDcuNzk2IDQuMzkxIDEwLjYxMSAyLjgxMyAyLjgxNCA2LjYzIDQuMzk2IDEwLjYwOSA0LjM5Nmg4MC4zMzVjOC4yODQgMCAxNS02LjcxNiAxNS0xNXYtMjU3LjA2NmMwLTIuMzI5LS41NDItNC42MjUtMS41ODMtNi43MDh6bS0yNjMuNTE3LTE3MC4wMjVjMC0xOC4zMDcgMTQuODk0LTMzLjIgMzMuMi0zMy4yczMzLjIgMTQuODk0IDMzLjIgMzMuMi0xNC44OTQgMzMuMi0zMy4yIDMzLjJjLTE4LjMwNyAwLTMzLjItMTQuODkzLTMzLjItMzMuMnptLTEyNy4yMzMgMjM5LjkzM2MxMy44NzcgMCAyNS4xNjcgMTEuMjkgMjUuMTY3IDI1LjE2N3MtMTEuMjkgMjUuMTY3LTI1LjE2NyAyNS4xNjctMjUuMTY3LTExLjI5LTI1LjE2Ny0yNS4xNjcgMTEuMjktMjUuMTY3IDI1LjE2Ny0yNS4xNjd6bTIwMS44OTYgODAuMzM0djM0LjI2N2gtMjkxLjU2M3YtMzQuMjY3em0tMTcuMTMtMTEyLjQ2N2M5LjQ0NyAwIDE3LjEzMyA3LjY4NiAxNy4xMzMgMTcuMTMzIDAgOS41ODMtNy44MTQgMTcuMTMzLTE3LjEzMyAxNy4xMzNoLTE2LjA2N2MtOC4yODQgMC0xNSA2LjcxNi0xNSAxNXYxNi4wNjdjMCA5LjU4My03LjgxNCAxNy4xMzMtMTcuMTMzIDE3LjEzM2gtNjQuMjY3Yy05LjQ0NyAwLTE3LjEzMy03LjY4Ni0xNy4xMzMtMTcuMTMzdi00OC4yYzAtOS40NDcgNy42ODYtMTcuMTMzIDE3LjEzMy0xNy4xMzMgOS4yOTcgMCAxNy4xMzMgNy41MjYgMTcuMTMzIDE3LjEzM3YxNi4wNjdjMCA4LjI4NCA2LjcxNiAxNSAxNSAxNXMxNS02LjcxNiAxNS0xNXYtMTYuMDY3YzAtOS40MjkgNy42MTYtMTcuMTMzIDE3LjEzMy0xNy4xMzN6bTE3Ny41NjcgMjExaC01MC4zMjZsLjA5Ny0xOTMuODU5Yy4wMDEtMi4zNDQtLjU0Ny00LjY1Ni0xLjYwMS02Ljc1bC02NC42ODUtMTI4LjUzM2MtMi4xNjctNC4zMDUtNi4yNjktNy4zMDYtMTEuMDI3LTguMDY4LTQuNzYxLS43NjItOS41OTQuODEtMTIuOTk1IDQuMjIybC04Ni40NTggODYuNzM5Yy03LjI2MyA3LjI5MS0xOS4xMTUgNi44MDctMjYuMzA4LS4zODYtNy4zODEtNy4zODEtNy43MjgtMTkuNjExLS4wMjItMjcuMzI5bDk1LjI3LTk1LjQzMWMxMS43OTktMTEuODI1IDI3LjUtMTguMzM3IDQ0LjIxNy0xOC4zMzcgMjQuMTk5IDAgNDUuOTU1IDEzLjQ0OCA1Ni43NzkgMzUuMDk3bDU3LjA1OSAxMTQuMTA5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",iSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNOTIuNTQ1LDE4NS4wOWM1MS4wMjksMCw5Mi41NDUtNDEuNTE2LDkyLjU0NS05Mi41NDVTMTQzLjU3NCwwLDkyLjU0NSwwUzAsNDEuNTE2LDAsOTIuNTQ1ICAgIFM0MS41MTYsMTg1LjA5LDkyLjU0NSwxODUuMDl6IE05Mi41NDUsMjBjNDAuMDAxLDAsNzIuNTQ1LDMyLjU0NCw3Mi41NDUsNzIuNTQ1cy0zMi41NDQsNzIuNTQ1LTcyLjU0NSw3Mi41NDUgICAgUzIwLDEzMi41NDYsMjAsOTIuNTQ1UzUyLjU0NCwyMCw5Mi41NDUsMjB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDAuNTAxLDExNC41MjZjMS45NTIsMS45NDUsNC41MDYsMi45MTcsNy4wNiwyLjkxN2MyLjU2NCwwLDUuMTMtMC45OCw3LjA4My0yLjk0ICAgIGMzLjg5OC0zLjkxMiwzLjg4OC0xMC4yNDQtMC4wMjMtMTQuMTQzbC0xMi4wMDgtMTEuOTY4VjQ0YzAtNS41MjItNC40NzgtMTAtMTAtMTBzLTEwLDQuNDc4LTEwLDEwdjQ4LjU0NSAgICBjMCwyLjY1OCwxLjA1OSw1LjIwNywyLjk0LDcuMDgzTDEwMC41MDEsMTE0LjUyNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMiwzMzJoLTYxLjU0N2MtOC40Ni0xMi4wMzQtMjEuMTcyLTIwLjU1OC0zNS42NzEtMjMuNzI4bC00My45NjQtOS42MTMgICAgYzE3Ljk5MS0xMi4xMzQsMjkuODQ3LTMyLjcwMiwyOS44NDctNTUuOTg4di0yNC40MTd2LTExLjI5N3YtMi41NDJjMC0zNy4yMTItMzAuMjc0LTY3LjQ4Ni02Ny40ODYtNjcuNDg2ICAgIHMtNjcuNDg2LDMwLjI3NC02Ny40ODYsNjcuNDg2djIuNTQydjExLjI5N3YyNC40MTdjMCwyMy4yNTYsMTEuODI1LDQzLjgwMywyOS43NzgsNTUuOTQzbC00My45MzYsOS42MzkgICAgYy0xLjg3NywwLjQxMi0zLjcyMiwwLjkxNy01LjUzNSwxLjUwMlYyMjdjMC01LjUyMi00LjQ3OC0xMC0xMC0xMGgtNjhjLTUuNTIyLDAtMTAsNC40NzgtMTAsMTBzNC40NzgsMTAsMTAsMTBoNTh2MTQwaC02OHYtNTAgICAgYzAtMTYuNTQyLTEzLjQ1OC0zMC0zMC0zMHMtMzAsMTMuNDU4LTMwLDMwdjUwSDIwVjIzN2g1OGM1LjUyMiwwLDEwLTQuNDc4LDEwLTEwcy00LjQ3OC0xMC0xMC0xMEgxMGMtNS41MjIsMC0xMCw0LjQ3OC0xMCwxMHYxNjAgICAgYzAsNS41MjIsNC40NzgsMTAsMTAsMTBoNzh2MTloLTFjLTE3LjA5NCwwLTMxLDEzLjkwNi0zMSwzMXY1SDEwYy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjQwYzAsNS41MjIsNC40NzgsMTAsMTAsMTBoNDkyICAgIGM1LjUyMiwwLDEwLTQuNDc4LDEwLTEwdi00MHYtNDB2LTQwdi00MEM1MTIsMzM2LjQ3OCw1MDcuNTIyLDMzMiw1MDIsMzMyeiBNNDQxLjE3OSw0NTJIMzg0di0yMGgxMDh2MjBINDQxLjE3OXogTTQ5Miw0MTJIMzg0ICAgIHYtMjBoMTA4VjQxMnogTTQ5MiwzNzJIMzg0di0yMGg1MC44NzRjMC4wMywwLDAuMDYsMC4wMDYsMC4wODksMC4wMDZjMC4wMzEsMCwwLjA2My0wLjAwNiwwLjA5NC0wLjAwNkg0OTJWMzcyeiBNMjc1LjY5MiwyMDQuNDE2ICAgIGMwLTI2LjE4NCwyMS4zMDMtNDcuNDg2LDQ3LjQ4Ni00Ny40ODZjMjQuOTMzLDAsNDUuNDM5LDE5LjMxNCw0Ny4zNDIsNDMuNzY3bC0yMy4yNDYtMTMuNjU3ICAgIGMtNC4yMTEtMi40NzUtOS41OTMtMS41NDQtMTIuNzMsMi4xOTljLTEwLjEyNiwxMi4wODUtMjQuOTc3LDE5LjAxNy00MC43NDQsMTkuMDE3aC0xOC4xMDd2LTEuMjk3VjIwNC40MTZ6IE0yNzUuNjkyLDIyOC4yNTUgICAgSDI5My44YzE4LjgyNSwwLDM2LjctNy4xNzksNTAuMjA1LTE5Ljk0bDI2LjY2LDE1LjY2M3YxOC42OTRjMCwyNi4xODQtMjEuMzAzLDQ3LjQ4Ni00Ny40ODYsNDcuNDg2cy00Ny40ODYtMjEuMzAzLTQ3LjQ4Ni00Ny40ODYgICAgVjIyOC4yNTV6IE0zMzguODQ0LDMwOC4zMDNsLTE1LjgxNSw0Mi4yOTRsLTE1Ljg0NC00Mi4zN2M1LjEzLDEuMjUyLDEwLjQ4MywxLjkzMSwxNS45OTMsMS45MzEgICAgQzMyOC41NzIsMzEwLjE1OCwzMzMuODEzLDMwOS41MDQsMzM4Ljg0NCwzMDguMzAzeiBNMjI2LDM5N2M1LjUyMiwwLDEwLTQuNDc4LDEwLTEwdi01NS42MjNjMy4wODUtMS42MjYsNi4zNzQtMi44MzIsOS44Mi0zLjU4OCAgICBsNDMuNzQtOS41OTZsMjQuMTAzLDY0LjQ1N2MxLjQ2MSwzLjkwNyw1LjE5NCw2LjQ5Nyw5LjM2Niw2LjQ5N3M3LjkwNS0yLjU5LDkuMzY2LTYuNDk4bDI0LjEwNC02NC40NjFsNDQuMDExLDkuNjIzICAgIGMzLjg2MywwLjg0NCw3LjUyOSwyLjI3NCwxMC45MDIsNC4xODhIMzc0Yy01LjUyMiwwLTEwLDQuNDc4LTEwLDEwdjQwdjQwdjMwSDIxNS4xNzl2LTU1SDIyNnogTTE5NS4xNzksMzk3djU1SDE4MHYtNSAgICBjMC0xNy4wOTQtMTMuOTA2LTMxLTMxLTMxaC0xdi0xOUgxOTUuMTc5eiBNMTA4LDMyN2MwLTUuNTE0LDQuNDg2LTEwLDEwLTEwczEwLDQuNDg2LDEwLDEwdjg5aC0yMFYzMjd6IE03Niw0NDcgICAgYzAtNi4wNjUsNC45MzUtMTEsMTEtMTFoMTFoNDBoMTFjNi4wNjUsMCwxMSw0LjkzNSwxMSwxMXY1SDc2VjQ0N3ogTTQ5Miw0OTJIMjB2LTIwaDQ3MlY0OTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTAuOTMsMjE5LjkzYy0xLjg2LDEuODYtMi45Myw0LjQ0LTIuOTMsNy4wN3MxLjA2OSw1LjIxLDIuOTMsNy4wNjljMS44NiwxLjg2LDQuNDQsMi45MzEsNy4wNywyLjkzMSAgICBzNS4yMS0xLjA3LDcuMDY5LTIuOTMxQzEyNi45MywyMzIuMjEsMTI4LDIyOS42MywxMjgsMjI3cy0xLjA3LTUuMjEtMi45MzEtNy4wN2MtMS44NTktMS44Ni00LjQzOS0yLjkzLTcuMDY5LTIuOTMgICAgUzExMi43OSwyMTguMDY5LDExMC45MywyMTkuOTN6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",rSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01NSwzNS45MzVjNC40OTMtLjU1NSw4LTQuOCw4LTkuOTM1LDAtNC44ODUtMy41MzUtMTktOS0xOXMtOSwxNC4xMTUtOSwxOWMwLDUuMTM4LDMuNTA3LDkuMzgsOCw5LjkzNVY0Mkg0OS45NDlhOS45NzgsOS45NzgsMCwwLDAtMTQuNDQxLTcuOTIybC0xLjYtMi41MTNMMzIuMzg4LDI3SDM2LjVhMS41LDEuNSwwLDAsMSwwLDNIMzZ2MmguNWEzLjUsMy41LDAsMCwwLDAtN0gzMWExLDEsMCwwLDAtLjk0OCwxLjMxNkwzMS42MTMsMzFIMjBWMjloM2ExLDEsMCwwLDAsMS0xLDUsNSwwLDAsMC0xMCwwLDEsMSwwLDAsMCwxLDFoM3YyLjY3NWwtMS45NjQsMi43YTkuOTkxLDkuOTkxLDAsMSwwLDQuNTEsMTEuNjA2LDMuOTg1LDMuOTg1LDAsMSwwLDYuNDI1LTQuNjM0bDUuNTIxLTguMjgzLDEuMzI5LDIuMDg5QTkuOTk1LDkuOTk1LDAsMSwwLDQ5Ljk0OSw0NEg2M1Y0Mkg1NVpNNDcsMjZjMC01LjA2NywzLjY2MS0xNyw3LTE3czcsMTEuOTMzLDcsMTdjMCw0LjAyMi0yLjYxNCw3LjM1MS02LDcuOTA5VjE4LjUzNWwyLjU1NS0xLjctMS4xMS0xLjY2NC0zLDJBMSwxLDAsMCwwLDUzLDE4djdsLTIuNC0xLjgtMS4yLDEuNkw1MywyNy41djYuNDA5QzQ5LjYxNCwzMy4zNTEsNDcsMzAuMDIyLDQ3LDI2Wk0xOSwyNWEzLjAwNiwzLjAwNiwwLDAsMSwyLjgyOSwySDE2LjE3MUEzLjAwNiwzLjAwNiwwLDAsMSwxOSwyNVptNSwxNWEzLjgzNiwzLjgzNiwwLDAsMC0uNTYuMDU3TDIwLjUsMzNoOS42MzJsLTQuODI1LDcuMjM3QTMuOTY4LDMuOTY4LDAsMCwwLDI0LDQwWk0xMSw1MWE4LDgsMCwxLDEsMy44NTctMTVsLTMuMDExLDQuMTRBMi45NiwyLjk2LDAsMCwwLDExLDQwYTMsMywwLDEsMCwyLjczOCw0LjIxNGw1LjEuMzkyQTguMDE0LDguMDE0LDAsMCwxLDExLDUxWm03Ljk4LTguMzg5LTUuMS0uMzkyYTMuMDA1LDMuMDA1LDAsMCwwLS40MTQtLjkxNmwzLTQuMTI1QTcuOTY5LDcuOTY5LDAsMCwxLDE4Ljk4LDQyLjYxMVpNMTIsNDNhMSwxLDAsMSwxLTEtMUExLDEsMCwwLDEsMTIsNDNabTguODc5LTEuNDcyYTkuOTY4LDkuOTY4LDAsMCwwLTMuMjI4LTUuOTc0bDEuMTExLTEuNTI3LDIuODMyLDYuOEE0LjAzMiw0LjAzMiwwLDAsMCwyMC44NzksNDEuNTI4Wk0yNCw0NmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNCw0NlptMTYsNWE4LDgsMCwwLDEtNS4xLTE0LjE1NmwyLjc0OCw0LjMxOUEyLjk2NiwyLjk2NiwwLDAsMCwzNyw0M2EzLDMsMCwxLDAsMy0zLDIuOTYzLDIuOTYzLDAsMCwwLS42NzEuMDgybC0yLjc0MS00LjMwN0E4LDgsMCwxLDEsNDAsNTFabTAtOWExLDEsMCwxLDEtMSwxQTEsMSwwLDAsMSw0MCw0MloiLz4NCiAgICAgICAgPHBhdGggZD0iTTcsMThhNCw0LDAsMCwwLDIuNzg4LTEuMTM5LDUuNjMzLDUuNjMzLDAsMCwwLDMuOTYxLS41NDVBMy45NTQsMy45NTQsMCwwLDAsMTcsMThhNCw0LDAsMSwwLS4wODMtOCw2LDYsMCwwLDAtMTEuOS41MzhBMy45OTIsMy45OTIsMCwwLDAsNywxOFptLS42NTMtNS44NzdhMSwxLDAsMCwwLC42Ny0uOTc3QS42LjYsMCwwLDAsNywxMWE0LDQsMCwwLDEsOC0uMDQxYzAsLjAzMy0uMDE4LjE1Mi0uMDIuMTg1YTEsMSwwLDAsMCwxLjMzOS45ODZBMS45NywxLjk3LDAsMCwxLDE3LDEyYTIsMiwwLDEsMS0xLjksMi41NzMsMSwxLDAsMCwwLTEuNTg5LS40ODcsMy44LDMuOCwwLDAsMS0zLjc1MS42OTMsMSwxLDAsMCwwLTEuMTI5LjM3MiwxLjk5NCwxLjk5NCwwLDEsMS0yLjI4Mi0zLjAyOFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMSIgeT0iNTUiIHdpZHRoPSI2MiIgaGVpZ2h0PSIyIi8+DQogICAgPC9nPg0KPC9zdmc+DQo=",oSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTE2OC45OTIgMjc3LjU5MWMwLTI2LjU1MS0yMS42MDEtNDguMTUxLTQ4LjE1MS00OC4xNTFzLTQ4LjE1MSAyMS42MDEtNDguMTUxIDQ4LjE1MSAyMS42MDEgNDguMTUgNDguMTUxIDQ4LjE1IDQ4LjE1MS0yMS42IDQ4LjE1MS00OC4xNXptLTgxLjMwMyAwYzAtMTguMjc5IDE0Ljg3Mi0zMy4xNTEgMzMuMTUxLTMzLjE1MXMzMy4xNTEgMTQuODcyIDMzLjE1MSAzMy4xNTEtMTQuODcyIDMzLjE1LTMzLjE1MSAzMy4xNS0zMy4xNTEtMTQuODcxLTMzLjE1MS0zMy4xNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ3OS4yNzIgNDYyaC0zNC4wNjJsLTM5LjE1OC0zNi42NjdjLTMuMDIzLTIuODMxLTcuNzctMi42NzUtMTAuNjAxLjM0OXMtMi42NzUgNy43Ny4zNDkgMTAuNjAxbDQxLjMyMSAzOC42OTJjMS4zOSAxLjMwMiAzLjIyMiAyLjAyNSA1LjEyNiAyLjAyNWgzNy4wMjRjOS43NzUgMCAxNy43MjggNy45NTMgMTcuNzI4IDE3LjcyOXYyLjI3MWgtNjAuODQ0Yy0yLjE0OCAwLTQuMjYxLS43MDMtNS45ODEtMS45ODZsLTE4OC40OTItMTc4LjkxNHYtMjQuMTMybDEzMi4yMDcgMTIzLjc5NmMzLjAyMyAyLjgzMSA3Ljc3IDIuNjc1IDEwLjYwMS0uMzQ5czIuNjc1LTcuNzctLjM0OS0xMC42MDFsLTE0Mi40NTktMTMzLjM5NnYtMi40NThjMC04LjI4NC02Ljc0LTE1LjAyNC0xNS4wMjUtMTUuMDI0aC0xMi41NDh2LTQyLjc4NmgxMS40MzhjNi41MzYgMCAxMi4zOC0zLjkwMSAxNC44ODYtOS45MzggMi41MDctNi4wMzcgMS4xNDUtMTIuOTMtMy40NzEtMTcuNTZsLTEwNC43MDYtMTA1LjAzNmMtMS4xNjgtMS4xNzItMi40ODctMi4xMzgtMy45MS0yLjg4OXYtMTAuODY5aDUwLjE0OGM4Ljk1OSAwIDE2LjI0OC03LjI4OSAxNi4yNDgtMTYuMjQ4di0yNS4yMTNjMC04Ljk1OS03LjI4OS0xNi4yNDgtMTYuMjQ4LTE2LjI0OGgtNTAuMTY2Yy0uMTg0LTMuOTc4LTMuNDU4LTcuMTQ5LTcuNDgyLTcuMTQ5LTQuMTQzIDAtNy41IDMuMzU3LTcuNSA3LjV2NjguMjIzYy0xLjQyNy43NTEtMi43NDkgMS43MTktMy45MiAyLjg5NGwtNDAuMDE1IDQwLjE0Yy0yLjkyNSAyLjkzNC0yLjkxNyA3LjY4Mi4wMTcgMTAuNjA2IDIuOTMzIDIuOTIzIDcuNjgxIDIuOTE3IDEwLjYwNi0uMDE3bDQwLjAxNi00MC4xNDFjLjI3MS0uMjcxLjU3OS0uMzI4Ljc5MS0uMzI4LjIxMSAwIC41MjEuMDU3Ljc5Mi4zMjlsMTA0LjcwNSAxMDUuMDM1Yy4xNTcuMTU4LjUyNy41MjkuMjQgMS4yMTktLjI4Ni42ODktLjgwOS42ODktMS4wMzIuNjg5aC0yMDkuNDFjLS4yMjQgMC0uNzQ3IDAtMS4wMzMtLjY4OXMuMDg0LTEuMDYxLjI0MS0xLjIxOWw0My41MjEtNDMuNjU4YzIuOTI1LTIuOTM0IDIuOTE3LTcuNjgzLS4wMTctMTAuNjA2LTIuOTM0LTIuOTI1LTcuNjgzLTIuOTE4LTEwLjYwNi4wMTdsLTQzLjUyMSA0My42NTdjLTQuNjE1IDQuNjMtNS45NzggMTEuNTIyLTMuNDcyIDE3LjU2MSAyLjUwNyA2LjAzNyA4LjM1IDkuOTM4IDE0Ljg4NyA5LjkzOGgxMS40Mzh2NjkuNDQ0YzAgNC4xNDMgMy4zNTcgNy41IDcuNSA3LjVzNy41LTMuMzU3IDcuNS03LjV2LTY5LjQ0NGgxNTYuNTM1djEzMi44ODJoLTE1Ni41MzZ2LTMzLjQ1MmMwLTQuMTQzLTMuMzU3LTcuNS03LjUtNy41cy03LjUgMy4zNTctNy41IDcuNXYxODYuNDJoLTIwLjA3M2MtNC4xNDMgMC03LjUgMy4zNTctNy41IDcuNXMzLjM1NyA3LjUgNy41IDcuNWg0OTdjNC4xNDMgMCA3LjUtMy4zNTcgNy41LTcuNXYtOS43NzFjMC0xOC4wNDctMTQuNjgyLTMyLjcyOS0zMi43MjgtMzIuNzI5em0tMjk5LjUzLTQzOC42MDN2MjUuMjEzYzAgLjY4OC0uNTYgMS4yNDgtMS4yNDggMS4yNDhoLTUwLjE0OHYtMjcuNzA5aDUwLjE0OGMuNjg5IDAgMS4yNDguNTYgMS4yNDggMS4yNDh6bTE2Ny4xOTYgNDEzLjI5MSA2My41NDEgNjAuMzEyaC02My41NDF6bS0xNSA2MC4zMTJoLTYwLjgxMXYtMTMyLjI3bDYwLjgxMSA1Ny43MnptLTc1LjgxLTE0Ni41MDh2MTQ2LjUwOGgtNDIuMDJ2LTE1Ni45NDJoMTIuNTQ4YzQuOTM5IDAgOS4zMTYtMi40MDYgMTIuMDU2LTYuMDk2em0tMjkuNDQ2LTgxLjUzMi0uMDEyIDU2LjA5N3MtLjAwNC4wMDEtLjAxNC4wMDFoLTEyLjU0OHYtNTYuMTEzem0tMjcuNTc0IDIyOC4wNGgtMzcuMTV2LTEzNy45NjloMzcuMTV6bS0xMDQuMzg0LTYxLjQ4NGg1Mi4yMzR2MjEuNDM2aC01Mi4yMzR6bTUyLjIzNC0xNWgtNTIuMjM0di0yMS40MzZoNTIuMjM0em0tNTIuMjM0IDUxLjQzNWg1Mi4yMzR2MjUuMDQ5aC01Mi4yMzR6bTUyLjIzNC0xMTIuOTJ2MjUuMDQ5aC01Mi4yMzR2LTI1LjA0OXptLTEwNC4zODUgMGgzNy4xNXYxMzcuOTY5aC0zNy4xNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",nSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM2Ny4wNDMgMTcwLjQxNGMtMTAuNTE2LS4zNjUtMjAuMDE2LTUuMDQ3LTI2Ljc0OS0xMy4xODEtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC02LjczMyA4LjEzNS0xNi4yMzMgMTIuODE2LTI2Ljc0OSAxMy4xODItNC4xNC4xNDQtNy4zNzkgMy42MTYtNy4yMzQgNy43NTYuMTQ0IDQuMTQgMy41OTQgNy4zNzEgNy43NTYgNy4yMzUgMTMuNTY2LS40NzIgMjYuMzg2LTYuMzI4IDM1LjY0Ni0xNi4xODcgMjAuMjc2IDIxLjYyOSA1NC41NjkgMjEuNjU3IDc0Ljg3NS4wMDEgMjAuMjc4IDIxLjYyOSA1NC41NzEgMjEuNjU0IDc0Ljg3NC0uMDAxIDkuMjYyIDkuODU5IDIyLjA4IDE1LjcxNSAzNS42NDcgMTYuMTg3IDQuMTIxLjE0OSA3LjYxMy0zLjA5NSA3Ljc1Ni03LjIzNS4xNDUtNC4xNC0zLjA5NC03LjYxMi03LjIzNC03Ljc1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MC4yOTQgMjE4Ljc1N2MtNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NiAxNy42MzYtNDEuNDYxIDE3LjYwNy01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTk2IDE3LjYzOS00MS40NjEgMTcuNjA2LTU2LjAzMS0uMDAxLTQuOTA0LTUuOTIyLTEzLjkyNy01LjkzOC0xOC44NDEuMDAxLTcuOTk0IDkuNjU4LTIwLjE4MiAxNC40ODQtMzIuNjEyIDEyLjkxNC00LjEtLjUxOS03Ljg2MSAyLjM4OS04LjM4MiA2LjQ5OS0uNTIxIDQuMTA5IDIuMzkgNy44NjIgNi40OTkgOC4zODIgMTYuNDgxIDIuMDg5IDMyLjY1OC0zLjc5NSA0My45MTYtMTUuODA4IDIwLjI3NyAyMS42MjggNTQuNTY4IDIxLjY1NCA3NC44NzMgMCAyMC4yNzYgMjEuNjI3IDU0LjU3IDIxLjY1NiA3NC44NzMgMCAxMS4yNTggMTIuMDEzIDI3LjQzNiAxNy44OTYgNDMuOTE1IDE1LjgwOCA0LjEwOS0uNTIgNy4wMi00LjI3MiA2LjQ5OS04LjM4MnMtNC4yODktNy4wMTktOC4zODItNi40OTljLTEyLjQzNSAxLjU2OS0yNC42MTgtMy4yNTUtMzIuNjExLTEyLjkxNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM2MC43ODIgMTA3LjdjLTguMDgyLTEuNzAzLTE1LjE2Ny02LTIwLjQ4Ny0xMi40MjctNC45MTQtNS45MzctMTMuOTM4LTUuOTI1LTE4Ljg0MiAwLTE0LjU5NyAxNy42MzctNDEuNDYyIDE3LjYwNi01Ni4wMzEgMC00Ljk3My02LjAwNy0xNC4wMDUtNS44NDItMTguODQzIDAtMTQuNTkyIDE3LjYzMy00MS40NTUgMTcuNjEzLTU2LjAzMS0uMDAxLTQuOTIyLTUuOTQ1LTEzLjk0NS01LjkxNS0xOC44NDEgMC01LjMyIDYuNDI3LTEyLjQwNCAxMC43MjUtMjAuNDg2IDEyLjQyOC00LjA1NC44NTQtNi42NDcgNC44MzItNS43OTMgOC44ODVzNC44NCA2LjY0NyA4Ljg4NSA1Ljc5MmMxMC4zODMtMi4xODggMTkuNTkyLTcuMzkgMjYuODE2LTE1LjExNyAyMC4yODIgMjEuNjMxIDU0LjU3MiAyMS42NDggNzQuODcyLS4wMDEgMjAuMjc2IDIxLjYyNiA1NC41NjcgMjEuNjU2IDc0Ljg3MS4wMDIgNy4yMjYgNy43MjcgMTYuNDM2IDEyLjkzIDI2LjgxOCAxNS4xMTYgNC4wNDguODU1IDguMDMtMS43NCA4Ljg4NS01Ljc5My44NTMtNC4wNTMtMS43NDEtOC4wMzEtNS43OTMtOC44ODR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01NC45ODUgNDI5LjI3M2gxNjkuNzMydjY5LjU3OWMwIDcuMjUgNS44OTggMTMuMTQ4IDEzLjE0OSAxMy4xNDhoMjUuMTkyYzcuMjUgMCAxMy4xNDgtNS44OTggMTMuMTQ4LTEzLjE0OHYtMS40NjRoNzQuMTk5djEuNDY0YzAgNy4yNSA1Ljg5OCAxMy4xNDggMTMuMTQ5IDEzLjE0OGgyNS4xOTJjNy4yNSAwIDEzLjE0OC01Ljg5OCAxMy4xNDgtMTMuMTQ4di02OS41NzloNTUuMTE5YzI0LjEyMSAwIDQzLjA4MS0yMC44ODYgNDAuNjU3LTQ0Ljk1Ni0uMDA0LS4wNC0uMDA4LS4wOC0uMDEzLS4xMmwtMTMuMDM1LTExMS41NjdjLS40ODEtNC4xMTQtNC4yMTUtNy4wNjItOC4zMTktNi41NzktNC4xMTQuNDgxLTcuMDYgNC4yMDYtNi41NzkgOC4zMmwxMy4wMyAxMTEuNTAzYzEuNDYgMTQuODMzLTEwLjA5NCAyOC4zOTgtMjUuNzM4IDI4LjM5OGgtNTUuMTE5di0xOS4wNThoNDQuOTM3YzkuNDcgMCAxNi44OC04LjE5MSAxNS45MzUtMTcuNjE2LS4wMDUtLjA0My0uMDEtLjA4Ni0uMDE1LS4xMjlsLTM4Ljc1Ni0zMjkuMDc0Yy0uODYxLTguMTc5LTcuNjk1LTE0LjMzNy0xNS45MjctMTQuMzM3aC0xMzQuNTcxYy00LjE0MyAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU3IDcuNSA3LjUgNy41aDEzNC41NzFjLjUyMyAwIC45NTcuMzkzIDEuMDEuOTE0LjAwNC4wNDIuMDA5LjA4My4wMTQuMTI1bDM4Ljc1IDMyOS4wMzRjLjAxOS4yNzUtLjA3NC41NDctLjI2Ljc1MS0uMTkxLjIxMi0uNDY2LjMzMy0uNzUyLjMzM2gtNDQuOTM3di0yMi44OTJjMC0zOS40NzctMzIuMjU2LTcwLjM0NC03MC4zNDUtNzAuMzQ0LTI2Ljc3OCAwLTUwLjk0NyAxNS4xODktNjIuODM5IDM4Ljc0NC0xMi4wMDgtMjMuNzcyLTM2LjcyNS0zOS4yNS02NC4yMDYtMzguNzMxLTM3LjcuNzA5LTY4Ljk4OCAzMS41OTMtNjguOTg4IDcwLjMzMnYyMi44OTJoLTcwLjM1MmMtLjI4NiAwLS41Ni0uMTIyLS43NTMtLjMzNS0uMTg1LS4yMDQtLjI3Ny0uNDc2LS4yNTktLjc1MWwzOC43NTItMzI5LjAzMmMuMDA1LS4wNDIuMDEtLjA4NC4wMTQtLjEyNy4wNTMtLjUyLjQ4Ni0uOTEyIDEuMDEtLjkxMmgxMzQuNTdjNC4xNDMgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTctNy41LTcuNS03LjVoLTEzNC41N2MtOC4yMzMgMC0xNS4wNjcgNi4xNi0xNS45MjcgMTQuMzM5bC0zOC43NTcgMzI5LjA3M2MtLjAwNS4wNDMtLjAxLjA4Ni0uMDE1LjEyOS0uOTQ2IDkuNDIyIDYuNDY0IDE3LjYxNiAxNS45MzUgMTcuNjE2aDE1OS41NTF2MTkuMDU4aC0xNjkuNzMyYy0xNC44NTIgMC0yNy4yNzktMTIuNzgyLTI1LjczOS0yOC4zOTlsNDAuNjA5LTM0Ny40ODNjLjAwNS0uMDQuMDA5LS4wOC4wMTMtLjExOSAxLjMzNi0xMy4yNjggMTIuMzk5LTIzLjI3MyAyNS43MzQtMjMuMjczaDMyMC43OThjMTMuMzM1IDAgMjQuMzk3IDEwLjAwNSAyNS43MzMgMjMuMjcyLjAwNC4wNC4wMDguMDguMDEzLjEybDIzLjQ4NyAyMDAuOTc5Yy40ODEgNC4xMTUgNC4yMTcgNy4wNjMgOC4zMTkgNi41NzkgNC4xMTQtLjQ4IDcuMDYtNC4yMDYgNi41NzktOC4zMmwtMjMuNDgtMjAwLjkyMmMtMi4xMzgtMjAuOTMyLTE5LjYwMy0zNi43MDgtNDAuNjUxLTM2LjcwOGgtMzIwLjc5OGMtMjEuMDQ5IDAtMzguNTE2IDE1Ljc3Ny00MC42NTIgMzYuNzFsLTQwLjYxIDM0Ny40ODhjLS4wMDUuMDQtLjAwOS4wOC0uMDEzLjEyLTIuNDE1IDIzLjk5OSAxNi40NjYgNDQuOTU1IDQwLjY1OCA0NC45NTV6bTI1Ny43MTMtNzEuMzAyYzAtMTAuMzI1IDguMTIyLTE5LjI4OSAxOC41LTE5LjQ4MyAxMC42ODItLjIwNCAxOS4yMDkgOC40OTEgMTkuMjA5IDE4LjgzNnYyMi44OTJoLTM3LjcwOXptLTM2LjQ5MSA3MS4zMDJoNzQuMTk5djE5LjA1OGgtNzQuMTk5em03OC4yMTUtMzQuMDU4YzUuNTY5IDAgMTAuMDE0IDQuODE4IDkuNDg0IDEwLjQzLS40NzMgNC44ODQtNC41OSA4LjYyNy05LjQ4NCA4LjYyN2gtNzguMjE1di0xOS4wNThjMjYuMTEyLjAwMSA1Mi4xNjcuMDAxIDc4LjIxNS4wMDF6bS03OC4yMTUgNjguMTE2aDc4LjIxNWM1LjUzNyAwIDEwLjAxNiA0Ljc5NiA5LjQ4NCAxMC40My0uNDcyIDQuODc0LTQuNTg3IDguNjI3LTkuNDg0IDguNjI3aC03OC4yMTV6bTExMC42OSAzMy42NjloLTIxLjQ5di0yLjIxM2MxOC4wMTQtOS4xMjcgMTguMDU0LTM0LjcwOCAwLTQzLjg1NXYtMjQuMjZjMTguMDk4LTkuMTcgMTcuOTY4LTM0Ljc1MiAwLTQzLjg1NXYtMjUuNDkzYzAtMjAuNDg2LTE4LjIwMi0zNi41MTctMzguNzk0LTMzLjQ5LTE2LjM1MyAyLjQtMjguOTE1IDE2LjUyNi0yOC45MTUgMzMuNDl2MjIuODkyaC0yMS40OXYtMjEuODM3YzAtMzAuNTUyIDI0LjQ2LTU2LjA5NCA1NC44MjItNTYuMzg2IDMxLjIxOC0uMjYyIDU1Ljg2NyAyNS4wNTggNTUuODY3IDU1LjMzMXptLTIzNi4zNzctMTE2Ljc4NXYtMjEuODM4YzAtMzIuMjI0IDI2LjY5Ni01Ny41ODMgNTcuNTg5LTU2LjM0MiAyOS40ODMgMS4yMDQgNTMuMDk5IDI1LjUwMyA1My4wOTkgNTUuMjg3djEzOS42NzdoLTIxLjQ5YzAtMTQuNDE4IDAtMTIxLjA2MyAwLTEzOS42NzcgMC0xNy45NS0xNC4wNjUtMzIuODA0LTMxLjkxNS0zMy43OTUtMTkuMjc2LTEuMDk2LTM1Ljc5MyAxNC4yNjEtMzUuNzkzIDMzLjc5NXYyMi44OTJoLTIxLjQ5em0zNi40OSAwdi0yMi4yNDVjMC05LjQyNSA2Ljc2Mi0xNy43MjQgMTUuODc3LTE5LjI0MyAxMS42MzktMS44NTIgMjEuODMgNy4yMzcgMjEuODMgMTguNTk2djIyLjg5MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",aSe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTYsMjUySDExNmMtNS41MSwwLTEwLDQuNDktMTAsMTBzNC40OSwxMCwxMCwxMGgxMDBjNS41MSwwLDEwLTQuNDksMTAtMTBTMjIxLjUxLDI1MiwyMTYsMjUyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1MmMtNS41MSwwLTEwLDQuNDktMTAsMTBzNC40OSwxMCwxMCwxMHMxMC00LjQ5LDEwLTEwUzI2MS41MSwyNTIsMjU2LDI1MnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTM5NiwyNTJIMjk2Yy01LjUxLDAtMTAsNC40OS0xMCwxMHM0LjQ5LDEwLDEwLDEwaDEwMGM1LjUxLDAsMTAtNC40OSwxMC0xMFM0MDEuNTEsMjUyLDM5NiwyNTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yODYsMTA3aC02MGMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHY2MGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwaDYwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTB2LTYwDQoJCQlDMjk2LDExMS40NzcsMjkxLjUyMywxMDcsMjg2LDEwN3ogTTI3NiwxNjdoLTQwdi00MGg0MFYxNjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDIsNDkyaC0xM1YyMzNjMC02Mi4yMzctMjQuMjM2LTEyMC43NDgtNjguMjQ0LTE2NC43NTZDMzc2Ljc0OCwyNC4yMzYsMzE4LjIzNywwLDI1NiwwUzEzNS4yNTIsMjQuMjM2LDkxLjI0NCw2OC4yNDQNCgkJCVMyMywxNzAuNzYzLDIzLDIzM3YyNTlIMTBjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoNDkyYzUuNTIzLDAsMTAtNC40NzcsMTAtMTBTNTA3LjUyMyw0OTIsNTAyLDQ5MnogTTM4Niw0OTJIMTI2DQoJCQl2LTIwaDI2MFY0OTJ6IE0zODYsNDUySDEyNnYtMjBoMjYwVjQ1MnogTTM4Niw0MTJIMTI2di0yMGgyNjBWNDEyeiBNMzg2LDM3MkgxMjZ2LTIwaDI2MFYzNzJ6IE0zODYsMzMySDEyNnYtMjBoMjYwVjMzMnoNCgkJCSBNNDI5LDQ5MmgtMjNWMzAyYzAtNS41MjMtNC40NzctMTAtMTAtMTBIMTE2Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjE5MEg4M1YyMzNjMC05NS42NjgsNzcuMzgzLTE3My41LDE3Mi41LTE3My41DQoJCQlDMzUxLjE2OCw1OS41LDQyOSwxMzcuMzMyLDQyOSwyMzNWNDkyeiBNNDY5LDQ5MmgtMjBWMjMzYzAtMTA2LjY5Ni04Ni44MDQtMTkzLjUtMTkzLjUtMTkzLjUNCgkJCWMtNTEuNjM5LDAtMTAwLjA2MywyMC4xMzctMTM2LjM1Miw1Ni43MDJDODIuOTQsMTMyLjY4NCw2MywxODEuMjY3LDYzLDIzM3YyNTlINDNWMjMzYzAtMTE3LjQ0OSw5NS41NTEtMjEzLDIxMy0yMTMNCgkJCXMyMTMsOTUuNTUxLDIxMywyMTNWNDkyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",MSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTUwOC41NDEgMjE4LjM4NC0xNjIuNTA3LTIwMy4xMzRjLTcuNzUzLTkuNjkyLTE5LjMxOC0xNS4yNS0zMS43MjktMTUuMjVoLTgzLjE1NWMtOC43MDMgMC0xNS43ODMgNy4wOC0xNS43ODMgMTUuNzgzdjE2LjU2N2MwIDguNzAzIDcuMDggMTUuNzgzIDE1Ljc4MyAxNS43ODNoMzMuOTE3djExNy41MzNoLTMwLjYzMmwtMTIwLjMzNC0xNTAuNDE2Yy03Ljc1My05LjY5MS0xOS4zMTgtMTUuMjUtMzEuNzI5LTE1LjI1aC02Ni41ODljLTguNzAzIDAtMTUuNzgzIDcuMDgtMTUuNzgzIDE1Ljc4M3YxNi41NjdjMCA4LjcwMyA3LjA4IDE1Ljc4MyAxNS43ODMgMTUuNzgzaDE3LjM1djExNy41MzNoLTE3LjM1Yy04LjcwMy4wMDEtMTUuNzgzIDcuMDgxLTE1Ljc4MyAxNS43ODR2MzA2LjQ4M2MwIDEzLjI3MSAxMC43OTYgMjQuMDY3IDI0LjA2NyAyNC4wNjdoNDcyLjE1YzguNzAzIDAgMTUuNzgzLTcuMDggMTUuNzgzLTE1Ljc4M3YtNzQuNTUtMTQzLjI4OS01MC4xMzRjMC0zLjU3MS0xLjIyOC03LjA3My0zLjQ1OS05Ljg2em0tNjIuMDI0IDE5NS43ODNjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzgzdi03NC41NS0xMjEuOTA4bDE4LjEzNCAyMi42Njd2MTc0LjU3NHptLTIzMS45MzQgMGMtLjQzMiAwLS43ODQtLjM1Mi0uNzg0LS43ODN2LTY3LjA1aDE4LjEzM3Y2Ny44MzN6bS02Ni4yNjYtODIuODM0Yy0uNDMyIDAtLjc4NC0uMzUyLS43ODQtLjc4NHYtNjcuMDQ5aDE4LjEzM3Y2Ny44MzN6bS02Ni4yNjctODIuODMzYy0uNDMyIDAtLjc4My0uMzUyLS43ODMtLjc4M3YtNjcuMDVoMTguMTMzdjY3LjgzM3ptODMuNjE2LTkxLjc0MXY4LjkwOGgtMTguMTMzdi0zMS41NzR6bTY2LjI2NyA4Mi44MzN2OC45MDhoLTE4LjEzM3YtMzEuNTc0em04MS4yNjcgOC4xMjV2LTE5Ni40MjhjLjA3Mi4wODQuMTUyLjE2LjIyMi4yNDdsMTcuOTExIDIyLjM4OXYxNzQuNTc1aC0xNy4zNWMtLjQzMSAwLS43ODMtLjM1Mi0uNzgzLS43ODN6bTExNy41MzMgNTAuNDgzaC0xOC4xMzN2LTEyMi42OTFsMTguMTM0IDIyLjY2N3YxMDAuMDI0em0tMTguMTMzIDE1aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptLTE1IDE4LjEzM2gtMTcuMzVjLS40MzIgMC0uNzgzLS4zNTItLjc4My0uNzg0di03NC41NDktMTIxLjkwOGwxOC4xMzMgMjIuNjY2em0tMzMuMTMzLTExNS45NjZoLTE4LjEzNHYtMTIyLjY5MWwxOC4xMzQgMjIuNjY3em0tMTguMTM0IDE1aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptMTguMTM0IDMzLjEzM3Y2Ny4wNWMwIC4yNjQuMDI3LjUyMi4wNC43ODRoLTg0LjQ0di01Mi45NTUtMTQuODc5em0tOTkuNDAxIDE3LjUwOXYxMDAuMDI0aC0xOC4xMzN2LTEyMi42OTFsNS4wODYgNi4zNTd6bS0xNTAuNjY2LTE4OC4zMzMgMTguMTMzIDIyLjY2N3YxMDAuMDI0aC0xOC4xMzN6bTMzLjEzMyA4Ny45OTFoMTguMTMzdjY3LjgzM2gtMTguMTMzem0zMy4xMzMtNS4xNTggMTguMTMzIDIyLjY2N3YxMDAuMDI0aC0xOC4xMzN6bTMzLjEzNCA4Ny45OTFoMTguMTMzdjY3LjgzM2gtMTguMTMzem0tMTE0LjQtOTcuODMzaC0xOC4xMzN2LTExNC4zNzhjLjA3My4wODQuMTUyLjE2LjIyMi4yNDdsMTcuOTExIDIyLjM5em0xNSA2NC43aDE4LjEzM3YxOC4xMzNoLTE4LjEzM3ptNjYuMjY2IDgyLjgzM2gxOC4xMzR2MTguMTMzaC0xOC4xMzN2LTE4LjEzM3ptNjYuMjY3IDgyLjgzM2gxOC4xMzN2MTguMTMzaC0xOC4xMzN6bTMzLjEzMy00OS43aDE1MC42Njd2NjcuMDVjMCAuMjY0LjAyNy41MjIuMDQuNzgzaC0xNTAuNzA3em0yMDcuMzE2LTc3LjM0NiA5LjYxOCAxMi4wMjJ2MTAwLjAyNGgtMTguMTMzdi0xMjIuNjl6bS04LjUxNSAxMjcuMDQ2aDE4LjEzM3YxOC4xMzNoLTE4LjEzM3ptLTI0OC41LTM2My42ODN2LTE2LjU2N2MwLS40MzIuMzUyLS43ODMuNzgzLS43ODNoODMuMTU1YzcuODMgMCAxNS4xMjUgMy41MDYgMjAuMDE3IDkuNjJsMTYyLjUwNyAyMDMuMTM0YzAgLjAwMS4wMDEuMDAxLjAwMi4wMDIuMTA5LjEzNy4xNy4zMTEuMTcuNDg4djI4Ljc1M2wtMTcxLjg2Ni0yMTQuODMxYy00LjU5My01Ljc0LTExLjQ0Mi05LjAzMi0xOC43OTMtOS4wMzJoLS42NDItNzQuNTVjLS40MzItLjAwMS0uNzgzLS4zNTItLjc4My0uNzg0em02Ny44MzMgMTUuNzgzdjg0LjRoLTE4LjEzNHYtODQuNHptLTE4LjEzNCA5OS40aDE4LjEzNHYxOC4xMzNoLTE4LjEzNHptMTguMTM0IDMzLjEzNHY2Ny4wNWMwIC4yNjQuMDI3LjUyMi4wNC43ODNoLTE4LjE3NHYtMjAuMjU2YzAtMy41Ny0xLjIyOC03LjA3Mi0zLjQ1OC05Ljg1OSAwLS4wMDEgMC0uMDAxIDAtLjAwMWwtMzAuMTc0LTM3LjcxOGg1MS43NjZ6bS0yODMuMi0xNDguMzE3di0xNi41NjdjMC0uNDMxLjM1Mi0uNzgzLjc4My0uNzgzaDY2LjU4OGM3LjgzIDAgMTUuMTI1IDMuNTA2IDIwLjAxNiA5LjYybDE2Mi41MDggMjAzLjEzNGMuMTEuMTM4LjE3MS4zMTMuMTcxLjQ5djI4Ljc1NGwtMTcxLjg2NS0yMTQuODMyYy00LjU5Mi01Ljc0LTExLjQ0Mi05LjAzMy0xOC43OTMtOS4wMzNoLS42NDItNTcuOTgzYy0uNDMxIDAtLjc4My0uMzUxLS43ODMtLjc4M3ptNTEuMjY3IDE1Ljc4M3Y4NC40aC0xOC4xMzR2LTg0LjR6bS0xOC4xMzQgOTkuNGgxOC4xMzN2MTguMTMzaC0xOC4xMzN6bS0yNC4wNjYgMzQ5LjQ2N2MtNSAwLTkuMDY3LTQuMDY3LTkuMDY3LTkuMDY3di0zMDYuNDgzYzAtLjQzMi4zNTItLjc4NC43ODMtLjc4NGg1MC40ODN2NjcuMDVjMCA4LjcwMyA3LjA4IDE1Ljc4MyAxNS43ODMgMTUuNzgzaDUwLjQ4M3Y2Ny4wNWMwIDguNzAzIDcuMDgxIDE1Ljc4NCAxNS43ODQgMTUuNzg0aDUwLjQ4NHY2Ny4wNWMwIDguNzAzIDcuMDgxIDE1Ljc4MyAxNS43ODQgMTUuNzgzaDUwLjQ4M3Y2Ny4wNWMwIC40MzItLjM1Mi43ODMtLjc4My43ODNoLTI0MC4yMTd6bTQ3Mi45MzMtLjc4M2MwIC40MzItLjM1Mi43ODMtLjc4My43ODNoLTIxNi4xOWMuMDEzLS4yNjEuMDQtLjUxOS4wNC0uNzgzdi02Ny4wNWgyMTYuOTMzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",cSe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTggNTExLjk5OCI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwMS45OTgsMzAuNTk4aC0xNTJjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2NDAuMDAzYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMjAuMDAxdjc0Ljc5NGgtMTkwDQoJCQkJYy01LjUyMiwwLTEwLDQuNDc3LTEwLDEwdjQwLjAwMmMwLDUuNTIzLDQuNDc4LDEwLDEwLDEwSDIwMHY3NC43OTZIMTBjLTUuNTIzLDAtMTAsNC40NzctMTAsMTB2NDAuMDAxYzAsNS41MjMsNC40NzcsMTAsMTAsMTANCgkJCQloMTMuOTk2VjQ3MS40YzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMTgxLjc2YzIuMjU2LDAsNC40NDUtMC43NjMsNi4yMTMtMi4xNjVsMjg2LjI0My0yMjYuOTcyDQoJCQkJYzIuMzkyLTEuODk2LDMuNzg2LTQuNzgyLDMuNzg2LTcuODM1VjgwLjYwMVY0MC41OThDNTExLjk5OCwzNS4wNzUsNTA3LjUyMiwzMC41OTgsNTAxLjk5OCwzMC41OTh6IE0xODkuOTk5LDIwNS4zOTd2LTIwLjAwMg0KCQkJCWgxODB2MjAuMDAySDE4OS45OTl6IE0yMCwzNDAuMTk0di0yMC4wMDFoMTgwdjIwLjAwMUgyMHogTTQ5MS45OTgsMTA5Ljg3OWgtNDEuMDM1Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwDQoJCQkJYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoNDEuMDM1djEwOS43MTVMMjEyLjI3MSw0NjEuNEg0My45OTZ2LTYyLjI1M2g0MS4wMzZjNS41MjIsMCwxMC00LjQ3NywxMC0xMHMtNC40NzgtMTAtMTAtMTBINDMuOTk2DQoJCQkJdi0xOC45NTNIMjEwYzUuNTIzLDAsMTAtNC40NzcsMTAtMTB2LTQwLjAwMXYtODQuNzk2aDE1OS45OTljNS41MjMsMCwxMC00LjQ3NywxMC0xMHYtNDAuMDAyVjkwLjYwMWgxMDEuOTk5VjEwOS44Nzl6DQoJCQkJIE00OTEuOTk4LDcwLjYwMWgtMTMyVjUwLjU5OGgxMzJWNzAuNjAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTE0LDM3OS4xNDRoLTAuMjM2Yy01LjUyNCwwLTEwLDQuNDc3LTEwLDEwczQuNDc2LDEwLDEwLDEwSDExNGM1LjUyMiwwLDEwLTQuNDc3LDEwLTEwUzExOS41MjIsMzc5LjE0NCwxMTQsMzc5LjE0NHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQyMS45OTgsMTI5Ljg4aDAuMjM1YzUuNTIyLDAsMTAtNC40NzcsMTAtMTBzLTQuNDc4LTEwLTEwLTEwaC0wLjIzNWMtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMA0KCQkJCVM0MTYuNDc1LDEyOS44OCw0MjEuOTk4LDEyOS44OHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",uSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01LjUxOCA2NGgyLjk4NmMuNTUzIDAgMS0uNDQ3IDEtMXYtMi4wMjFoNDQuOTkydjIuMDIxYzAgLjU1My40NDcgMSAxIDFoM2MuNTUzIDAgMS0uNDQ3IDEtMXYtNjAuNWMwLTEuMzc4LTEuMTIxLTIuNS0yLjUtMi41cy0yLjUgMS4xMjItMi41IDIuNXYxNS41MDRoLTIuOTk4di0xMy45OTZjMC0uNTUyLS40NDctMS0xLTFoLTE1Ljk5NmMtLjU1MyAwLTEgLjQ0OC0xIDF2MTMuOTk1aC0zLjAwMnYtMTMuOTk1YzAtLjU1Mi0uNDQ3LTEtMS0xaC0xNS45OTZjLS41NTMgMC0xIC40NDgtMSAxdjEzLjk5NWgtM3YtMTUuNTAzYzAtMS4zNzgtMS4xMjEtMi41LTIuNS0yLjVzLTIuNSAxLjEyMi0yLjUgMi41bC4wMTQgNjAuNWMwIC41NTMuNDQ3IDEgMSAxem01MC45NzgtNjEuNWMwLS4yNzYuMjI1LS41LjUtLjVzLjUuMjI0LjUuNXY1OS41aC0xem0tMTQuOTk4IDIuNTA4aDIuMDAydjEuMDA4aC0yLjAwMnptLTUuOTk2IDBoMy45OTZ2Mi4wMDhjMCAuNTUyLjQ0NyAxIDEgMWg0LjAwMmMuNTUzIDAgMS0uNDQ4IDEtMXYtMi4wMDhoMy45OTh2MTIuOTk1aC0xMy45OTZ6bS0xNS4wMDIgMGgydjEuMDA4aC0yem0tNS45OTYgMGgzLjk5NnYyLjAwOGMwIC41NTIuNDQ3IDEgMSAxaDRjLjU1MyAwIDEtLjQ0OCAxLTF2LTIuMDA4aDR2MTIuOTk1aC0xMy45OTZ6bS01IDE0Ljk5NWg0IDE1Ljk5NiA1LjAwMiAxNS45OTYgMy45OTh2MWgtNDQuOTkyem0wIDNoNDQuOTkydjEzLjk3MWgtMi45OTZ2LTEwLjk5YzAtLjU1Mi0uNDQ3LTEtMS0xaC0zN2MtLjU1MyAwLTEgLjQ0OC0xIDF2MTAuOTkxaC0yLjk5NnptMTkuOTk2IDYuOTgxaDVjLjU1MyAwIDEtLjQ0OCAxLTF2LTJoMTR2OS45OTFoLTM1di05Ljk5MWgxNHYyYzAgLjU1Mi40NDcgMSAxIDF6bTEtMnYtMWgzdjF6bS0yMC45OTYgMTAuOTkxaDMuOTk2IDM3IDMuOTk2djEuMDAyaC00NC45OTJ6bTAgMy4wMDJoNDQuOTkydjE0aC0yLjk5NHYtMTEuOTljMC0uNTUzLS40NDctMS0xLTFoLTE0LjAwMmMtLjU1MyAwLTEgLjQ0Ny0xIDF2MTEuOTloLTIuOTk0di04Ljk4OGMwLS41NTMtLjQ0Ny0xLTEtMWgtNi45OTRjLS4wMDQgMC0uMDA2LS4wMDItLjAxLS4wMDJzLS4wMDYuMDAyLS4wMS4wMDJoLTMuOTgyYy0uMDA0IDAtLjAwNi0uMDAyLS4wMS0uMDAycy0uMDA2LjAwMi0uMDEuMDAyaC02Ljk4NmMtLjU1MyAwLTEgLjQ0Ny0xIDF2OC45ODhoLTN6bTMxLjk5NiA2LjAxN2g0LjAwMmMuNTUzIDAgMS0uNDQ3IDEtMXYtMi4wMDhoM3YxMC45OWgtMTIuMDAydi0xMC45OWgzdjIuMDA4YzAgLjU1My40NDcgMSAxIDF6bTEtMnYtMS4wMDhoMi4wMDJ2MS4wMDh6bS0yMiA1aDQuMDAyYy41NTMgMCAxLS40NDcgMS0xdi0yLjAwNmg1LjAwNHY3Ljk4OGgtMTYuMDAydi03Ljk4OGg0Ljk5NnYyLjAwNmMwIC41NTMuNDQ3IDEgMSAxem0xLTJ2LTEuMDA2aDIuMDAydjEuMDA2em0tMTEuOTk2IDguOTgzaDQgMTguMDAyIDQuOTk0IDE0LjAwMiAzLjk5NHYxLjAwMmgtNDQuOTkyem0tMi41LTU1Ljk3N2MuMjc1IDAgLjUuMjI0LjUuNXY1OS41aC0uOTg2bC0uMDE0LTU5LjVjMC0uMjc2LjIyNS0uNS41LS41eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",lSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MyAzdi0yaC0zMWMtLjU1MyAwLTEgLjQ0Ny0xIDF2OGMwIC41NTMuNDQ3IDEgMSAxaDF2NTBoLTMydjJoMzMgNCA4IDQgMTN2LTJoLTEydi01aDEydi0yaC0xMy00LTN2LTJoMjB2LTJoLTIxYy0uNTUzIDAtMSAuNDQ3LTEgMXY0YzAgLjU1My40NDcgMSAxIDFoM3Y1aC02di01MGgyNHYtMmgtMjUtNC0xdi02em0tMTYgNTNoMnY1aC0yem0tMTAtNDV2NTBoLTJ2LTUweiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjEgMzJjMC0yLjExOC0uNTAxLTQuMjM4LTEuNDQ3LTYuMTMxbC0uNjU4LTEuMzE2Yy0uMzQtLjY3OC0xLjQ0OS0uNjc4LTEuNzg5IDBsLS42NTggMS4zMTZjLS45NDcgMS44OTMtMS40NDggNC4wMTMtMS40NDggNi4xMzEgMCAuMjQxLjAyOS40ODEuMDQyLjcyMi0uNjQ2LS40ODMtMS4zODMtLjgzNy0yLjE3Mi0xLjAzNGwtMi42MjgtLjY1N2MtLjMzOC0uMDg3LS43MDEuMDE1LS45NDkuMjYzcy0uMzQ5LjYwOC0uMjYzLjk0OWwuNjU3IDIuNjI5Yy4yNjkgMS4wNzMuODIzIDIuMDU1IDEuNjA1IDIuODM2Ljc4MS43ODIgMS43NjMgMS4zMzcgMi44MzYgMS42MDVoLjAwMWwuNjcyLjE2OC0xLjI1LjYyNS44OTUgMS43ODkgMi41NTQtMS4yNzd2Mi4zODJoLTdjLS41NTMgMC0xIC40NDctMSAxdjRjMCAuNTUzLjQ0NyAxIDEgMWgxLjA5NWwuOTEgOS4xYy4wNTEuNTEuNDgxLjkuOTk1LjloMTBjLjUxNCAwIC45NDQtLjM5Ljk5NS0uOWwuOTEtOS4xaDEuMDk1Yy41NTMgMCAxLS40NDcgMS0xdi00YzAtLjU1My0uNDQ3LTEtMS0xaC03di0yLjM4MmwyLjU1MyAxLjI3Ni44OTUtMS43ODktMS4yNS0uNjI1LjY3Mi0uMTY4aC4wMDFjMS4wNzMtLjI2OSAyLjA1NS0uODIzIDIuODM2LTEuNjA1Ljc4Mi0uNzgxIDEuMzM3LTEuNzYzIDEuNjA1LTIuODM3bC42NTctMi42MjhjLjA4Ni0uMzQxLS4wMTUtLjcwMS0uMjYzLS45NDlzLS42MDktLjM1LS45NDktLjI2M2wtMi42MjkuNjU3Yy0uNzg4LjE5Ny0xLjUyNS41NTEtMi4xNzEgMS4wMzQuMDE0LS4yNC4wNDMtLjQ4LjA0My0uNzIxem0xLjA5NSAyNWgtOC4xODlsLS44LThoOS43OXptMi45MDUtMTBoLTE0di0yaDE0em0tNy0xOS43MzRjLjY1NSAxLjQ4NSAxIDMuMTEgMSA0LjczNHMtLjM0NSAzLjI0OS0xIDQuNzM0Yy0uNjU1LTEuNDg1LTEtMy4xMS0xLTQuNzM0cy4zNDUtMy4yNDkgMS00LjczNHptLTUuMjkzIDkuMDI3Yy0uNTI1LS41MjUtLjg5OC0xLjE4Ni0xLjA4LTEuOTA3bC0uMjUyLTEuMDExIDEuMDEuMjUyYy43MjMuMTgyIDEuMzgzLjU1NSAxLjkwOCAxLjA4cy44OTggMS4xODYgMS4wOCAxLjkwN2wuMjUyIDEuMDExLTEuMDEtLjI1MmMtLjcyMi0uMTgyLTEuMzgzLS41NTUtMS45MDgtMS4wOHptMTAuOTA3LTIuNjY2IDEuMDExLS4yNTItLjI1MiAxLjAxYy0uMTgyLjcyMy0uNTU1IDEuMzgzLTEuMDggMS45MDhzLTEuMTg2Ljg5OC0xLjkwOCAxLjA4bC0xLjAxLjI1Mi4yNTItMS4wMWMuMTgyLS43MjMuNTU1LTEuMzgzIDEuMDgtMS45MDhzMS4xODYtLjg5OCAxLjkwNy0xLjA4eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNSAxNWgxM2MyLjc1NyAwIDUtMi4yNDMgNS01cy0yLjI0My01LTUtNWMtLjQzOCAwLS44NzcuMDYxLTEuMzAzLjE4LS43NjYtMi40NTUtMy4wMjMtNC4xOC01LjY5Ny00LjE4LTMuMzA5IDAtNiAyLjY5MS02IDYtMi4yMDYgMC00IDEuNzk0LTQgNHMxLjc5NCA0IDQgNHptMC02Yy4yNyAwIC41MzMuMDU0Ljc4My4xNi4zNTIuMTQ3Ljc1Ni4wODUgMS4wNDMtLjE2My4yODgtLjI0OC40MTEtLjYzOS4zMTctMS4wMDctLjA5OC0uMzc3LS4xNDMtLjY5Mi0uMTQzLS45OSAwLTIuMjA2IDEuNzk0LTQgNC00IDIuMDgxIDAgMy43ODQgMS41NzQgMy45NjEgMy42NjIuMDI4LjM0NS4yMzMuNjQ4LjU0LjgwNi4zMDguMTU4LjY3NS4xNDUuOTctLjAzMi40ODMtLjI5Ljk5Ny0uNDM2IDEuNTI5LS40MzYgMS42NTQgMCAzIDEuMzQ2IDMgM3MtMS4zNDYgMy0zIDNoLTEzYy0xLjEwMyAwLTItLjg5Ny0yLTJzLjg5Ny0yIDItMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",NSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MSw1N0g0OC40MTRsLS44NzktLjg3OWE4LjU4Nyw4LjU4NywwLDAsMS0yLjQ3MS01LjExMkM1MS4xNTMsNDguNTg3LDU1LjYwNyw0MS45MzQsNTUuOTU3LDM0SDU2YTEsMSwwLDAsMCwxLTFWMzBhMSwxLDAsMCwwLTEtMUg1Mi40NjRhMTkuNTgyLDE5LjU4MiwwLDAsMCwxLjY3My00SDU3YTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMS0xSDQ2Ljg0MUExMi43LDEyLjcsMCwwLDAsMzMuMTU5LDNIMjNhMSwxLDAsMCwwLTEsMVYyNGExLDEsMCwwLDAsMSwxaDIuODYzYTE5LjU4MiwxOS41ODIsMCwwLDAsMS42NzMsNEgyNGExLDEsMCwwLDAtMSwxdjNhMSwxLDAsMCwwLDEsMWguMDQzYy4zNSw3LjkzNCw0LjgsMTQuNTg3LDEwLjg5MywxNy4wMDlhOC41ODcsOC41ODcsMCwwLDEtMi40NzEsNS4xMTJMMzEuNTg2LDU3SDI5YTEsMSwwLDAsMC0xLDF2NGExLDEsMCwwLDAsMSwxSDUxYTEsMSwwLDAsMCwxLTFWNThBMSwxLDAsMCwwLDUxLDU3Wk01Niw1VjIzSDU0LjYxMUEyMS40NDcsMjEuNDQ3LDAsMCwwLDU1LDE5LDE5LjQ5MywxOS40OTMsMCwwLDAsNDkuNDA3LDVaTTI0LDIzVjVoNi41OTNBMTkuNDkzLDE5LjQ5MywwLDAsMCwyNSwxOWEyMS40NDcsMjEuNDQ3LDAsMCwwLC4zODksNFptMy00YzAtOC44MjIsNS44MzItMTYsMTMtMTZzMTMsNy4xNzgsMTMsMTZhMTguNDA3LDE4LjQwNywwLDAsMS0yLjg3MiwxMEg0Ny42ODJBMTYsMTYsMCwwLDAsNTEsMTljMC03LjcyLTQuOTM1LTE0LTExLTE0UzI5LDExLjI4LDI5LDE5YTE2LDE2LDAsMCwwLDMuMzE4LDEwSDI5Ljg3MkExOC40MDcsMTguNDA3LDAsMCwxLDI3LDE5Wm04LjA2MSwxMEExMy4zMDgsMTMuMzA4LDAsMCwxLDMxLDE5YzAtNi42MTcsNC4wMzctMTIsOS0xMnM5LDUuMzgzLDksMTJhMTMuMzA4LDEzLjMwOCwwLDAsMS00LjA2MSwxMFpNMjUsMzFINTV2MUgyNVptMS4wNDIsM0g1My45NThDNTMuNTI4LDQyLjkwOCw0Ny40NDIsNTAsNDAsNTBTMjYuNDcyLDQyLjkwOCwyNi4wNDIsMzRaTTM2Ljg2NCw1MS42MjlhMTMuNDQsMTMuNDQsMCwwLDAsNi4yNzIsMEExMC41MzksMTAuNTM5LDAsMCwwLDQ1LjYzNiw1N0gzNC4zNjRBMTAuNTM5LDEwLjUzOSwwLDAsMCwzNi44NjQsNTEuNjI5Wk01MCw2MUgzMFY1OUg1MFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzLDU3aC0uMDhBNy4wMSw3LjAxLDAsMCwwLDE5LDUxLjY4NVY0OGExLDEsMCwwLDAtMS0xSDE3VjI2LjgxNmEzLDMsMCwxLDAtMiwwVjQ3SDE0YTEsMSwwLDAsMC0xLDF2My42ODVBNy4wMSw3LjAxLDAsMCwwLDkuMDgsNTdIOWEzLDMsMCwwLDAsMCw2SDIzYTMsMywwLDAsMCwwLTZaTTE2LDIzYTEsMSwwLDEsMS0xLDFBMSwxLDAsMCwxLDE2LDIzWk0xNSw0OWgydjIuMDhhNi4yOSw2LjI5LDAsMCwwLTIsMFptMSw0YTUuMDA2LDUuMDA2LDAsMCwxLDUsNUgxMUE1LjAwNiw1LjAwNiwwLDAsMSwxNiw1M1ptNyw4SDlhMSwxLDAsMCwxLDAtMiwxLDEsMCwwLDAsMSwxSDIyYTEsMSwwLDAsMCwxLTEsMSwxLDAsMCwxLDAsMloiLz4NCiAgICAgICAgPHBhdGggZD0iTTgsMTVhMSwxLDAsMCwwLDEtMSw1LjAwNiw1LjAwNiwwLDAsMSw1LTUsMSwxLDAsMCwwLDAtMkE1LjAwNiw1LjAwNiwwLDAsMSw5LDIsMSwxLDAsMCwwLDcsMiw1LjAwNiw1LjAwNiwwLDAsMSwyLDcsMSwxLDAsMCwwLDIsOWE1LjAwNiw1LjAwNiwwLDAsMSw1LDVBMSwxLDAsMCwwLDgsMTVaTTUuNiw4QTcuMDY2LDcuMDY2LDAsMCwwLDgsNS42LDcuMDY2LDcuMDY2LDAsMCwwLDEwLjQsOCw3LjA2Niw3LjA2NiwwLDAsMCw4LDEwLjQsNy4wNjYsNy4wNjYsMCwwLDAsNS42LDhaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNCwxMWEzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMiwzLDMsMCwwLDEtMy0zLDEsMSwwLDAsMC0yLDBabTIsNGE1LjAxNyw1LjAxNywwLDAsMC0xLDEsNS4wMTcsNS4wMTcsMCwwLDAtMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEtMUE1LjAxNyw1LjAxNywwLDAsMCwxNiwxNVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTYyLDQ4YTMsMywwLDAsMS0zLTMsMSwxLDAsMCwwLTIsMCwzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMlptLTQsMmE1LjAxNyw1LjAxNywwLDAsMC0xLTEsNS4wMTcsNS4wMTcsMCwwLDAsMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEsMUE1LjAxNyw1LjAxNywwLDAsMCw1OCw1MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",LSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUwOSA1MDkiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTM1OS4yIDB2ODkuOGgtODkuODAxdjg5LjhoLTg5Ljh2ODkuOGgtODkuNzk5djg5LjhoLTg5Ljh2MTQ5LjhoNTA5di01MDl6bTExOS44IDQ3OWgtNDQ5di04OS44aDg5Ljh2LTg5LjhoODkuOHYtODkuOGg4OS44di04OS44aDg5Ljh2LTg5LjhoODkuOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTY4LjQ0OCAxNzYuOTU2IDk0LjA0MS05NC4wNC0zLjYyOSA0My4wNjYgMjkuODk1IDIuNTE5IDguNTYyLTEwMS42MjYtMTAxLjYyNyA4LjU2MiAyLjUxOCAyOS44OTQgNDMuMDY4LTMuNjI4LTk0LjA0MSA5NC4wNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",gSe="PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0yMzguOTMzLDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjc2LjhjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzVjQyLjY2Nw0KCQkJQzI0Ny40NjcsMzcuOTU2LDI0My42NDQsMzQuMTMzLDIzOC45MzMsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDc3Ljg2NywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1Y3Ni44YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM1M0ODYuNCw4MS41MSw0ODYuNCw3Ni44VjQyLjY2Nw0KCQkJQzQ4Ni40LDM3Ljk1Niw0ODIuNTc3LDM0LjEzMyw0NzcuODY3LDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTE3OS4yLDBIOC41MzNDMy44MjMsMCwwLDMuODIzLDAsOC41MzN2NDk0LjkzM0MwLDUwOC4xNzcsMy44MjMsNTEyLDguNTMzLDUxMkgxNzkuMmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVY4LjUzM0MxODcuNzMzLDMuODIzLDE4My45MSwwLDE3OS4yLDB6IE0xNzAuNjY3LDQ5NC45MzNoLTE1My42VjE3LjA2N2gxNTMuNlY0OTQuOTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTAzLjQ2NywzNTguNEgxNzkuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjEzNi41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDMyNC4yNjcNCgkJCWM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzNWMzY2LjkzM0M1MTIsMzYyLjIyMyw1MDguMTc3LDM1OC40LDUwMy40NjcsMzU4LjR6IE00OTQuOTMzLDQ5NC45MzNoLTMwNy4yVjM3NS40NjdoMzA3LjINCgkJCVY0OTQuOTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNTAzLjQ2NywwSDE3OS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MzQuMTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMjQuMjY3DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjguNTMzQzUxMiwzLjgyMyw1MDguMTc3LDAsNTAzLjQ2NywweiBNNDk0LjkzMywzNC4xMzNoLTMwNy4yVjE3LjA2N2gzMDcuMlYzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMzYuNTMzLDI0Ny40NjdoLTI1LjZjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gyNS42YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzMw0KCQkJUzE0MS4yNDQsMjQ3LjQ2NywxMzYuNTMzLDI0Ny40Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTAuOTMzLDI0Ny40NjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YyNS42YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1YyNTYNCgkJCUMxMTkuNDY3LDI1MS4yOSwxMTUuNjQ0LDI0Ny40NjcsMTEwLjkzMywyNDcuNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzY2LjkzMyw0MTguMTMzaC01MS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoNTEuMmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVMzNzEuNjQ0LDQxOC4xMzMsMzY2LjkzMyw0MTguMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQxLjMzMyw0MTguMTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MTcuMDY3YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzMw0KCQkJdi0xNy4wNjdDMzQ5Ljg2Nyw0MjEuOTU2LDM0Ni4wNDQsNDE4LjEzMywzNDEuMzMzLDQxOC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTAuMTMzLDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDMjk4LjY2NywzNy45NTYsMjk0Ljg0NCwzNC4xMzMsMjkwLjEzMywzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTAuMTMzLDExOS40NjdjLTQ1LjkzNSwwLTc2LjgsMTcuMTQzLTc2LjgsNDIuNjY3VjE3OS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gxNy4wNjd2NzYuOA0KCQkJYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM0gzMzIuOGM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhIMzU4LjRjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjcNCgkJCUMzNjYuOTMzLDEzNi42MSwzMzYuMDY4LDExOS40NjcsMjkwLjEzMywxMTkuNDY3eiBNMzQ5Ljg2NywxNzAuNjY3SDMzMi44Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNWMjU2SDI1NnYtNzYuOA0KCQkJYzAtNC43MS0zLjgyMy04LjUzMy04LjUzMy04LjUzM0gyMzAuNHYtOC41MzNjMC0xMi40MDcsMjAuOTMyLTI1LjYsNTkuNzMzLTI1LjZzNTkuNzMzLDEzLjE5Myw1OS43MzMsMjUuNlYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQ5Ljg2NywxMTkuNDY3Yy0xMS4zNzUsMC0yMi4wNDIsMS4wNzUtMzEuNjkzLDMuMTkxYy0zLjkxNywwLjg2Mi02LjcwNyw0LjMyNi02LjcwNyw4LjMzNw0KCQkJYzAsNC4wMTEsMi43OSw3LjQ3NSw2LjcwNyw4LjMzN2MxOS4yNTEsNC4yMTUsMzEuNjkzLDEzLjE2NywzMS42OTMsMjIuODAxdjguNTMzSDMzMi44Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2ODUuMzMzDQoJCQljMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDU5LjczM2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhoMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDNDI2LjY2NywxMzYuNjEsMzk1LjgwMiwxMTkuNDY3LDM0OS44NjcsMTE5LjQ2N3ogTTQwOS42LDE3MC42NjdoLTE3LjA2N2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NmgtNDIuNjY3di02OC4yNjcNCgkJCUgzNTguNGM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTE3LjA2N2MwLTkuODEzLTQuNzM2LTE4LjU3Ny0xMy4zOC0yNS41NTdjMzYuNDM3LDAuODAyLDU2LjA0NywxMy41NDIsNTYuMDQ3LDI1LjU1Nw0KCQkJVjE3MC42Njd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MDkuNiwxMTkuNDY3Yy0xMS4zNzUsMC0yMi4wNDIsMS4wNzUtMzEuNjkzLDMuMTkxYy0zLjkxNywwLjg2Mi02LjcwNyw0LjMyNi02LjcwNyw4LjMzNw0KCQkJYzAsNC4wMTEsMi43OSw3LjQ3NSw2LjcwNyw4LjMzN2MxOS4yNTEsNC4yMTUsMzEuNjkzLDEzLjE2NywzMS42OTMsMjIuODAxdjguNTMzaC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y4NS4zMzMNCgkJCWMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoNTkuNzMzYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNzYuOGgxNy4wNjdjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjcNCgkJCUM0ODYuNCwxMzYuNjEsNDU1LjUzNSwxMTkuNDY3LDQwOS42LDExOS40Njd6IE00NjkuMzMzLDE3MC42NjdoLTE3LjA2N2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NmgtNDIuNjY3di02OC4yNjcNCgkJCWgxNy4wNjdjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjdjMC05LjgxMy00LjczNi0xOC41NzctMTMuMzgtMjUuNTU3YzM2LjQzNywwLjgwMiw1Ni4wNDcsMTMuNTQyLDU2LjA0NywyNS41NTcNCgkJCVYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMyw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVMzMDQuMjQ3LDg1LjMzMywyOTAuMTMzLDg1LjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM1OC40LDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDMzY2LjkzMywzNy45NTYsMzYzLjExLDM0LjEzMywzNTguNCwzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTguNCw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVMzNzIuNTE0LDg1LjMzMywzNTguNCw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MjYuNjY3LDM0LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjUxLjJjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODIzLDguNTMzLTguNTMzdi01MS4yDQoJCQlDNDM1LjIsMzcuOTU2LDQzMS4zNzcsMzQuMTMzLDQyNi42NjcsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI2LjY2Nyw4NS4zMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNjNC43MDIsMCw4LjUzMywzLjgzMSw4LjUzMyw4LjUzMw0KCQkJYzAsNC43MDItMy44MzEsOC41MzMtOC41MzMsOC41MzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3MzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2MxNC4xMTQsMCwyNS42LTExLjQ4NiwyNS42LTI1LjYNCgkJCVM0NDAuNzgxLDg1LjMzMyw0MjYuNjY3LDg1LjMzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ4Ni40LDMyNC4yNjdIMTc5LjJjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YzNC4xMzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDMwNy4yDQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjMzMi44QzQ5NC45MzMsMzI4LjA5LDQ5MS4xMSwzMjQuMjY3LDQ4Ni40LDMyNC4yNjd6IE00NzcuODY3LDM1OC40SDE4Ny43MzN2LTE3LjA2N2gyOTAuMTMzDQoJCQlWMzU4LjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NjkuMzMzLDM5Mi41MzNoLTI1NmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjY4LjI2N2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjU2DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi02OC4yNjdDNDc3Ljg2NywzOTYuMzU2LDQ3NC4wNDQsMzkyLjUzMyw0NjkuMzMzLDM5Mi41MzN6IE00NjAuOCw0NjAuOEgyMjEuODY3di01MS4ySDQ2MC44DQoJCQlWNDYwLjh6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",jSe="PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im01NS43NTggNjEtMS41NjktNS41N2M0LjA1My0yLjIwNCA2LjgxMS02LjUwMSA2LjgxMS0xMS40M3YtMWMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0ydi0xMGMxLjEwMyAwIDItLjg5NyAyLTJ2LTJjMC0xLjEwMy0uODk3LTItMi0yaC0yNmMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJ2MTBjLTEuMTAzIDAtMiAuODk3LTIgMnYyYzAgMS4xMDMuODk3IDIgMiAydjFjMCA0LjkyOSAyLjc1OCA5LjIyNiA2LjgxMSAxMS40M2wtMS41NjkgNS41N2gtMTMuMzQzYy0uNDY1LTIuMjc5LTIuNDg0LTQtNC44OTktNGgtMXYtOS4wMDNjNC42OTMtMS45NjMgOC02LjYgOC0xMS45OTd2LTdoLTE4di00aDR2Mmgydi0yYzAtMS4xMDMtLjg5Ny0yLTItMmgtNi0xLTFjLTEuMTAzIDAtMiAuODk3LTIgMnY0aC0ydjdjMCA1LjM5NyAzLjMwNyAxMC4wMzQgOCAxMS45OTd2OS4wMDNoLTFjLTIuNDE0IDAtNC40MzQgMS43MjEtNC44OTkgNGgtNS4xMDF2Mmg2NHYtMnptLTIwLjc1OS0zOGgyNi4wMDF2MmgtMjZ6bTIuMDAxIDhoNHYtMmgtNHYtMmgyMnYxMGgtMjJ6bS0yLjAwMSA4aDI2LjAwMXYyaC0yNnptMi4wMDEgNXYtMWgyMnYxYzAgNi4wNjUtNC45MzUgMTEtMTEgMTFzLTExLTQuOTM1LTExLTExem02LjY2MSAxMi4yNGMxLjM2LjQ4MyAyLjgxNi43NiA0LjMzOS43NnMyLjk3OS0uMjc3IDQuMzM5LS43NmwxLjM0IDQuNzZoLTExLjM1OHptLTM2LjY2MS0zMS4yNGgxIDF2NGgtMnptMjAgNnYyaC0yMnYtMnptLTIyIDV2LTFoMjJ2MWMwIDYuMDY1LTQuOTM1IDExLTExIDExcy0xMS00LjkzNS0xMS0xMXptOCAxMi42MzdjLjk2NS4yMjkgMS45NjYuMzYzIDMgLjM2M3MyLjAzNS0uMTM0IDMtLjM2M3Y4LjM2M2gtNnptLTMgMTAuMzYzaDEyYzEuMzAyIDAgMi40MDIuODM5IDIuODE2IDJoLTE3LjYzMmMuNDE0LTEuMTYxIDEuNTE0LTIgMi44MTYtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQgMjFoMjRjMS42NTQgMCAzLTEuMzQ2IDMtM3YtMTRjMC0xLjY1NC0xLjM0Ni0zLTMtM2gtMjRjLTEuNjU0IDAtMyAxLjM0Ni0zIDN2MTRjMCAxLjY1NCAxLjM0NiAzIDMgM3ptLTEtMTdjMC0uNTUxLjQ0OC0xIDEtMWgyNGMuNTUyIDAgMSAuNDQ5IDEgMXYxNGMwIC41NTEtLjQ0OCAxLTEgMWgtMjRjLS41NTIgMC0xLS40NDktMS0xeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAgMi41MTVoMnYxNi45NzFoLTJ6IiB0cmFuc2Zvcm09Im1hdHJpeCguNzA3IC0uNzA3IC43MDcgLjcwNyAtNC41NTYgMTEpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMCAyLjUxNWgydjE2Ljk3MWgtMnoiIHRyYW5zZm9ybT0ibWF0cml4KC43MDcgLS43MDcgLjcwNyAuNzA3IC0xLjYyNyAxOC4wNzEpIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNSA5aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM1IDEzaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDExaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDExaDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDNoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDUgN2gydjJoLTJ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00NyA1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQzIDVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTUgMTNoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTUgMTdoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTcgMTVoMnYyaC0yeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNTMgMTVoMnYyaC0yeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",ySe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MSw1N0g0OC40MTRsLS44NzktLjg3OWE4LjU4Nyw4LjU4NywwLDAsMS0yLjQ3MS01LjExMkM1MS4xNTMsNDguNTg3LDU1LjYwNyw0MS45MzQsNTUuOTU3LDM0SDU2YTEsMSwwLDAsMCwxLTFWMzBhMSwxLDAsMCwwLTEtMUg1Mi40NjRhMTkuNTgyLDE5LjU4MiwwLDAsMCwxLjY3My00SDU3YTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMS0xSDQ2Ljg0MUExMi43LDEyLjcsMCwwLDAsMzMuMTU5LDNIMjNhMSwxLDAsMCwwLTEsMVYyNGExLDEsMCwwLDAsMSwxaDIuODYzYTE5LjU4MiwxOS41ODIsMCwwLDAsMS42NzMsNEgyNGExLDEsMCwwLDAtMSwxdjNhMSwxLDAsMCwwLDEsMWguMDQzYy4zNSw3LjkzNCw0LjgsMTQuNTg3LDEwLjg5MywxNy4wMDlhOC41ODcsOC41ODcsMCwwLDEtMi40NzEsNS4xMTJMMzEuNTg2LDU3SDI5YTEsMSwwLDAsMC0xLDF2NGExLDEsMCwwLDAsMSwxSDUxYTEsMSwwLDAsMCwxLTFWNThBMSwxLDAsMCwwLDUxLDU3Wk01Niw1VjIzSDU0LjYxMUEyMS40NDcsMjEuNDQ3LDAsMCwwLDU1LDE5LDE5LjQ5MywxOS40OTMsMCwwLDAsNDkuNDA3LDVaTTI0LDIzVjVoNi41OTNBMTkuNDkzLDE5LjQ5MywwLDAsMCwyNSwxOWEyMS40NDcsMjEuNDQ3LDAsMCwwLC4zODksNFptMy00YzAtOC44MjIsNS44MzItMTYsMTMtMTZzMTMsNy4xNzgsMTMsMTZhMTguNDA3LDE4LjQwNywwLDAsMS0yLjg3MiwxMEg0Ny42ODJBMTYsMTYsMCwwLDAsNTEsMTljMC03LjcyLTQuOTM1LTE0LTExLTE0UzI5LDExLjI4LDI5LDE5YTE2LDE2LDAsMCwwLDMuMzE4LDEwSDI5Ljg3MkExOC40MDcsMTguNDA3LDAsMCwxLDI3LDE5Wm04LjA2MSwxMEExMy4zMDgsMTMuMzA4LDAsMCwxLDMxLDE5YzAtNi42MTcsNC4wMzctMTIsOS0xMnM5LDUuMzgzLDksMTJhMTMuMzA4LDEzLjMwOCwwLDAsMS00LjA2MSwxMFpNMjUsMzFINTV2MUgyNVptMS4wNDIsM0g1My45NThDNTMuNTI4LDQyLjkwOCw0Ny40NDIsNTAsNDAsNTBTMjYuNDcyLDQyLjkwOCwyNi4wNDIsMzRaTTM2Ljg2NCw1MS42MjlhMTMuNDQsMTMuNDQsMCwwLDAsNi4yNzIsMEExMC41MzksMTAuNTM5LDAsMCwwLDQ1LjYzNiw1N0gzNC4zNjRBMTAuNTM5LDEwLjUzOSwwLDAsMCwzNi44NjQsNTEuNjI5Wk01MCw2MUgzMFY1OUg1MFoiLz4NCiAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz4NCiAgICAgICAgPHBhdGggZD0iTTIzLDU3aC0uMDhBNy4wMSw3LjAxLDAsMCwwLDE5LDUxLjY4NVY0OGExLDEsMCwwLDAtMS0xSDE3VjI2LjgxNmEzLDMsMCwxLDAtMiwwVjQ3SDE0YTEsMSwwLDAsMC0xLDF2My42ODVBNy4wMSw3LjAxLDAsMCwwLDkuMDgsNTdIOWEzLDMsMCwwLDAsMCw2SDIzYTMsMywwLDAsMCwwLTZaTTE2LDIzYTEsMSwwLDEsMS0xLDFBMSwxLDAsMCwxLDE2LDIzWk0xNSw0OWgydjIuMDhhNi4yOSw2LjI5LDAsMCwwLTIsMFptMSw0YTUuMDA2LDUuMDA2LDAsMCwxLDUsNUgxMUE1LjAwNiw1LjAwNiwwLDAsMSwxNiw1M1ptNyw4SDlhMSwxLDAsMCwxLDAtMiwxLDEsMCwwLDAsMSwxSDIyYTEsMSwwLDAsMCwxLTEsMSwxLDAsMCwxLDAsMloiLz4NCiAgICAgICAgPHBhdGggZD0iTTgsMTVhMSwxLDAsMCwwLDEtMSw1LjAwNiw1LjAwNiwwLDAsMSw1LTUsMSwxLDAsMCwwLDAtMkE1LjAwNiw1LjAwNiwwLDAsMSw5LDIsMSwxLDAsMCwwLDcsMiw1LjAwNiw1LjAwNiwwLDAsMSwyLDcsMSwxLDAsMCwwLDIsOWE1LjAwNiw1LjAwNiwwLDAsMSw1LDVBMSwxLDAsMCwwLDgsMTVaTTUuNiw4QTcuMDY2LDcuMDY2LDAsMCwwLDgsNS42LDcuMDY2LDcuMDY2LDAsMCwwLDEwLjQsOCw3LjA2Niw3LjA2NiwwLDAsMCw4LDEwLjQsNy4wNjYsNy4wNjYsMCwwLDAsNS42LDhaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNCwxMWEzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMiwzLDMsMCwwLDEtMy0zLDEsMSwwLDAsMC0yLDBabTIsNGE1LjAxNyw1LjAxNywwLDAsMC0xLDEsNS4wMTcsNS4wMTcsMCwwLDAtMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEtMUE1LjAxNyw1LjAxNywwLDAsMCwxNiwxNVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTYyLDQ4YTMsMywwLDAsMS0zLTMsMSwxLDAsMCwwLTIsMCwzLDMsMCwwLDEtMywzLDEsMSwwLDAsMCwwLDIsMywzLDAsMCwxLDMsMywxLDEsMCwwLDAsMiwwLDMsMywwLDAsMSwzLTMsMSwxLDAsMCwwLDAtMlptLTQsMmE1LjAxNyw1LjAxNywwLDAsMC0xLTEsNS4wMTcsNS4wMTcsMCwwLDAsMS0xLDUuMDE3LDUuMDE3LDAsMCwwLDEsMUE1LjAxNyw1LjAxNywwLDAsMCw1OCw1MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",TSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJNMjM4LjkzMywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1Y3Ni44YzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1Y0Mi42NjcNCgkJCUMyNDcuNDY3LDM3Ljk1NiwyNDMuNjQ0LDM0LjEzMywyMzguOTMzLDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ3Ny44NjcsMzQuMTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNWNzYuOGMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNTNDg2LjQsODEuNTEsNDg2LjQsNzYuOFY0Mi42NjcNCgkJCUM0ODYuNCwzNy45NTYsNDgyLjU3NywzNC4xMzMsNDc3Ljg2NywzNC4xMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNzkuMiwwSDguNTMzQzMuODIzLDAsMCwzLjgyMywwLDguNTMzdjQ5NC45MzNDMCw1MDguMTc3LDMuODIzLDUxMiw4LjUzMyw1MTJIMTc5LjJjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzDQoJCQlWOC41MzNDMTg3LjczMywzLjgyMywxODMuOTEsMCwxNzkuMiwweiBNMTcwLjY2Nyw0OTQuOTMzaC0xNTMuNlYxNy4wNjdoMTUzLjZWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMy40NjcsMzU4LjRIMTc5LjJjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3YxMzYuNTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMjQuMjY3DQoJCQljNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzVjM2Ni45MzNDNTEyLDM2Mi4yMjMsNTA4LjE3NywzNTguNCw1MDMuNDY3LDM1OC40eiBNNDk0LjkzMyw0OTQuOTMzaC0zMDcuMlYzNzUuNDY3aDMwNy4yDQoJCQlWNDk0LjkzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMy40NjcsMEgxNzkuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjM0LjEzM2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMzI0LjI2Nw0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1Y4LjUzM0M1MTIsMy44MjMsNTA4LjE3NywwLDUwMy40NjcsMHogTTQ5NC45MzMsMzQuMTMzaC0zMDcuMlYxNy4wNjdoMzA3LjJWMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTM2LjUzMywyNDcuNDY3aC0yNS42Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoMjUuNmM0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCVMxNDEuMjQ0LDI0Ny40NjcsMTM2LjUzMywyNDcuNDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTEwLjkzMywyNDcuNDY3Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MjUuNmMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNzOC41MzMtMy44MjMsOC41MzMtOC41MzNWMjU2DQoJCQlDMTE5LjQ2NywyNTEuMjksMTE1LjY0NCwyNDcuNDY3LDExMC45MzMsMjQ3LjQ2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM2Ni45MzMsNDE4LjEzM2gtNTEuMmMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzczMuODIzLDguNTMzLDguNTMzLDguNTMzaDUxLjJjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzDQoJCQlTMzcxLjY0NCw0MTguMTMzLDM2Ni45MzMsNDE4LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM0MS4zMzMsNDE4LjEzM2MtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjE3LjA2N2MwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNzOC41MzMtMy44MjMsOC41MzMtOC41MzMNCgkJCXYtMTcuMDY3QzM0OS44NjcsNDIxLjk1NiwzNDYuMDQ0LDQxOC4xMzMsMzQxLjMzMyw0MTguMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzI5OC42NjcsMzcuOTU2LDI5NC44NDQsMzQuMTMzLDI5MC4xMzMsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjkwLjEzMywxMTkuNDY3Yy00NS45MzUsMC03Ni44LDE3LjE0My03Ni44LDQyLjY2N1YxNzkuMmMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNoMTcuMDY3djc2LjgNCgkJCWMwLDQuNzEsMy44MjMsOC41MzMsOC41MzMsOC41MzNIMzMyLjhjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi03Ni44SDM1OC40YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDMzY2LjkzMywxMzYuNjEsMzM2LjA2OCwxMTkuNDY3LDI5MC4xMzMsMTE5LjQ2N3ogTTM0OS44NjcsMTcwLjY2N0gzMzIuOGMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzVjI1NkgyNTZ2LTc2LjgNCgkJCWMwLTQuNzEtMy44MjMtOC41MzMtOC41MzMtOC41MzNIMjMwLjR2LTguNTMzYzAtMTIuNDA3LDIwLjkzMi0yNS42LDU5LjczMy0yNS42czU5LjczMywxMy4xOTMsNTkuNzMzLDI1LjZWMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTM0OS44NjcsMTE5LjQ2N2MtMTEuMzc1LDAtMjIuMDQyLDEuMDc1LTMxLjY5MywzLjE5MWMtMy45MTcsMC44NjItNi43MDcsNC4zMjYtNi43MDcsOC4zMzcNCgkJCWMwLDQuMDExLDIuNzksNy40NzUsNi43MDcsOC4zMzdjMTkuMjUxLDQuMjE1LDMxLjY5MywxMy4xNjcsMzEuNjkzLDIyLjgwMXY4LjUzM0gzMzIuOGMtNC43MSwwLTguNTMzLDMuODIzLTguNTMzLDguNTMzdjg1LjMzMw0KCQkJYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g1OS43MzNjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi03Ni44aDE3LjA2N2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTE3LjA2Nw0KCQkJQzQyNi42NjcsMTM2LjYxLDM5NS44MDIsMTE5LjQ2NywzNDkuODY3LDExOS40Njd6IE00MDkuNiwxNzAuNjY3aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1YyNTZoLTQyLjY2N3YtNjguMjY3DQoJCQlIMzU4LjRjNC43MSwwLDguNTMzLTMuODIzLDguNTMzLTguNTMzdi0xNy4wNjdjMC05LjgxMy00LjczNi0xOC41NzctMTMuMzgtMjUuNTU3YzM2LjQzNywwLjgwMiw1Ni4wNDcsMTMuNTQyLDU2LjA0NywyNS41NTcNCgkJCVYxNzAuNjY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDA5LjYsMTE5LjQ2N2MtMTEuMzc1LDAtMjIuMDQyLDEuMDc1LTMxLjY5MywzLjE5MWMtMy45MTcsMC44NjItNi43MDcsNC4zMjYtNi43MDcsOC4zMzcNCgkJCWMwLDQuMDExLDIuNzksNy40NzUsNi43MDcsOC4zMzdjMTkuMjUxLDQuMjE1LDMxLjY5MywxMy4xNjcsMzEuNjkzLDIyLjgwMXY4LjUzM2gtMTcuMDY3Yy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2ODUuMzMzDQoJCQljMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDU5LjczM2M0LjcxLDAsOC41MzMtMy44MjMsOC41MzMtOC41MzN2LTc2LjhoMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3DQoJCQlDNDg2LjQsMTM2LjYxLDQ1NS41MzUsMTE5LjQ2Nyw0MDkuNiwxMTkuNDY3eiBNNDY5LjMzMywxNzAuNjY3aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM1YyNTZoLTQyLjY2N3YtNjguMjY3DQoJCQloMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtMTcuMDY3YzAtOS44MTMtNC43MzYtMTguNTc3LTEzLjM4LTI1LjU1N2MzNi40MzcsMC44MDIsNTYuMDQ3LDEzLjU0Miw1Ni4wNDcsMjUuNTU3DQoJCQlWMTcwLjY2N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTI5MC4xMzMsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTMzA0LjI0Nyw4NS4zMzMsMjkwLjEzMyw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0zNTguNCwzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzM2Ni45MzMsMzcuOTU2LDM2My4xMSwzNC4xMzMsMzU4LjQsMzQuMTMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzU4LjQsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTMzcyLjUxNCw4NS4zMzMsMzU4LjQsODUuMzMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDI2LjY2NywzNC4xMzNjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y1MS4yYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM3M4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNTEuMg0KCQkJQzQzNS4yLDM3Ljk1Niw0MzEuMzc3LDM0LjEzMyw0MjYuNjY3LDM0LjEzM3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTQyNi42NjcsODUuMzMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzYzQuNzAyLDAsOC41MzMsMy44MzEsOC41MzMsOC41MzMNCgkJCWMwLDQuNzAyLTMuODMxLDguNTMzLTguNTMzLDguNTMzYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNjMTQuMTE0LDAsMjUuNi0xMS40ODYsMjUuNi0yNS42DQoJCQlTNDQwLjc4MSw4NS4zMzMsNDI2LjY2Nyw4NS4zMzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00ODYuNCwzMjQuMjY3SDE3OS4yYy00LjcxLDAtOC41MzMsMy44MjMtOC41MzMsOC41MzN2MzQuMTMzYzAsNC43MSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2gzMDcuMg0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM1YzMzIuOEM0OTQuOTMzLDMyOC4wOSw0OTEuMTEsMzI0LjI2Nyw0ODYuNCwzMjQuMjY3eiBNNDc3Ljg2NywzNTguNEgxODcuNzMzdi0xNy4wNjdoMjkwLjEzMw0KCQkJVjM1OC40eiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDY5LjMzMywzOTIuNTMzaC0yNTZjLTQuNzEsMC04LjUzMywzLjgyMy04LjUzMyw4LjUzM3Y2OC4yNjdjMCw0LjcxLDMuODIzLDguNTMzLDguNTMzLDguNTMzaDI1Ng0KCQkJYzQuNzEsMCw4LjUzMy0zLjgyMyw4LjUzMy04LjUzM3YtNjguMjY3QzQ3Ny44NjcsMzk2LjM1Niw0NzQuMDQ0LDM5Mi41MzMsNDY5LjMzMywzOTIuNTMzeiBNNDYwLjgsNDYwLjhIMjIxLjg2N3YtNTEuMkg0NjAuOA0KCQkJVjQ2MC44eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",DSe="PHN2ZyB2aWV3Qm94PSIwIDAgMzAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMTk0LjgzNiA1OGgtMTE5LjMyOGMtMjQuNDQ1IDAtNDQuMzM2IDE5Ljg4OS00NC4zMzYgNDQuMzM2djExOS4zMjhjMCAyNC40NDcgMTkuODkxIDQ0LjMzNiA0NC4zMzYgNDQuMzM2aDExOS4zMjhjMjQuNDQ1IDAgNDQuMzM2LTE5Ljg4OSA0NC4zMzYtNDQuMzM2di0xMTkuMzI4YzAtMjQuNDQ3LTE5Ljg5MS00NC4zMzYtNDQuMzM2LTQ0LjMzNnptMzYuMzM2IDE2My42NjRjMCAyMC4wMzUtMTYuMzAxIDM2LjMzNi0zNi4zMzYgMzYuMzM2aC0xMTkuMzI4Yy0yMC4wMzUgMC0zNi4zMzYtMTYuMzAxLTM2LjMzNi0zNi4zMzZ2LTExOS4zMjhjMC0yMC4wMzUgMTYuMzAxLTM2LjMzNiAzNi4zMzYtMzYuMzM2aDExOS4zMjhjMjAuMDM1IDAgMzYuMzM2IDE2LjMwMSAzNi4zMzYgMzYuMzM2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM1LjE3MiA3NGMtNDkuNjI1IDAtOTAgNDAuMzczLTkwIDkwczQwLjM3NSA5MCA5MCA5MCA5MC00MC4zNzMgOTAtOTAtNDAuMzc1LTkwLTkwLTkwem0wIDE3MmMtNDUuMjE1IDAtODItMzYuNzg1LTgyLTgyczM2Ljc4NS04MiA4Mi04MiA4MiAzNi43ODUgODIgODItMzYuNzg1IDgyLTgyIDgyeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTM1LjE3MiA5MGMtNDAuODA1IDAtNzQgMzMuMTk1LTc0IDc0czMzLjE5NSA3NCA3NCA3NCA3NC0zMy4xOTUgNzQtNzQtMzMuMTk1LTc0LTc0LTc0em0wIDE0MGMtMzYuMzkxIDAtNjYtMjkuNjA3LTY2LTY2czI5LjYwOS02NiA2Ni02NiA2NiAyOS42MDcgNjYgNjYtMjkuNjEgNjYtNjYgNjZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im03OS4xNzIgMTM4djMyYzAgMi4yMDkgMS43ODkgNCA0IDRoMTA0YzIuMjExIDAgNC0xLjc5MSA0LTR2LTMyYzAtMi4yMDktMS43ODktNC00LTRoLTEwNGMtMi4yMTEgMC00IDEuNzkxLTQgNHptOCA0aDk2djI0aC05NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExNy4xNzIgMTI4LjUzYzIuNTAxIDAgNC41My0yLjAyOCA0LjUzLTQuNTNzLTIuMDI4LTQuNTMtNC41My00LjUzLTQuNTMgMi4wMjgtNC41MyA0LjUzYzAgMi41MDEgMi4wMjggNC41MyA0LjUzIDQuNTN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMjkuMTcyIDEyOC41M2MyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzcy0yLjAyOC00LjUzLTQuNTMtNC41My00LjUzIDIuMDI4LTQuNTMgNC41M2MwIDIuNTAxIDIuMDI4IDQuNTMgNC41MyA0LjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQ1LjE3MiAxNTEuNDdjLTIuNTAyIDAtNC41MyAyLjAyOC00LjUzIDQuNTMgMCAyLjUwMSAyLjAyOCA0LjUzIDQuNTMgNC41MyAyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzLS4wMDEtMi41MDItMi4wMjktNC41My00LjUzLTQuNTN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDEuMTcyIDEyOC41M2MyLjUwMSAwIDQuNTMtMi4wMjggNC41My00LjUzcy0yLjAyOC00LjUzLTQuNTMtNC41My00LjUzIDIuMDI4LTQuNTMgNC41M2MwIDIuNTAxIDIuMDI4IDQuNTMgNC41MyA0LjUzeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTUzLjE3MiAxMjguNTNjMi41MDEgMCA0LjUzLTIuMDI4IDQuNTMtNC41M3MtMi4wMjgtNC41My00LjUzLTQuNTMtNC41MyAyLjAyOC00LjUzIDQuNTNjMCAyLjUwMSAyLjAyOCA0LjUzIDQuNTMgNC41M3oiLz4NCiAgICAgICAgPGNpcmNsZSBjeD0iMTk5LjE3MiIgY3k9IjM4IiByPSI0Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMzkuMTcyIDQ2Yy02LjYxNyAwLTEyIDUuMzgzLTEyIDEyczUuMzgzIDEyIDEyIDEyIDEyLTUuMzgzIDEyLTEyLTUuMzgzLTEyLTEyLTEyem0wIDE2Yy0yLjIwNyAwLTQtMS43OTUtNC00czEuNzkzLTQgNC00IDQgMS43OTUgNCA0LTEuNzkzIDQtNCA0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjY0LjgyOCAxMTAgMi44MjgtMi44MjhjMS41NjItMS41NjIgMS41NjItNC4wOTQgMC01LjY1NnMtNC4wOTQtMS41NjItNS42NTYgMGwtMi44MjggMi44MjgtMi44MjgtMi44MjhjLTEuNTYyLTEuNTYyLTQuMDk0LTEuNTYyLTUuNjU2IDBzLTEuNTYyIDQuMDk0IDAgNS42NTZsMi44MjggMi44MjgtMi44MjggMi44MjhjLTEuNTYyIDEuNTYyLTEuNTYyIDQuMDk0IDAgNS42NTYuNzgxLjc4MSAxLjgwNSAxLjE3MiAyLjgyOCAxLjE3MnMyLjA0Ny0uMzkxIDIuODI4LTEuMTcybDIuODI4LTIuODI4IDIuODI4IDIuODI4Yy43ODEuNzgxIDEuODA1IDEuMTcyIDIuODI4IDEuMTcyczIuMDQ3LS4zOTEgMi44MjgtMS4xNzJjMS41NjItMS41NjIgMS41NjItNC4wOTQgMC01LjY1NnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzOS4xNzIgMTk0aC00LjkzNGw1Ljg1OS05Ljc2OGMxLjEzNy0xLjg5NS41MjMtNC4zNTItMS4zNzEtNS40ODgtMS44OTgtMS4xMzctNC4zNTItLjUyMS01LjQ4OCAxLjM3MWwtOS40OTYgMTUuODI2Yy0uNzQyIDEuMjM2LS43NjIgMi43NzUtLjA1MSA0LjAyOXMyLjAzOSAyLjAyOSAzLjQ4IDIuMDI5aDUuNTI3bC01LjEwNSAxMC4yMTFjLS45ODggMS45NzctLjE4OCA0LjM3OSAxLjc4OSA1LjM2Ny41NzQuMjg3IDEuMTg0LjQyMiAxLjc4NS40MjIgMS40NjkgMCAyLjg3OS0uODA5IDMuNTgyLTIuMjExbDgtMTZjLjYyMS0xLjI0LjU1NS0yLjcxMy0uMTc2LTMuODkzLS43MjktMS4xNzYtMi4wMTQtMS44OTUtMy40MDEtMS44OTV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05NS4xNzIgMTQ2Yy0yLjIxMSAwLTQgMS43OTEtNCA0djhjMCAyLjIwOSAxLjc4OSA0IDQgNHM0LTEuNzkxIDQtNHYtOGMwLTIuMjA5LTEuNzg5LTQtNC00eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTA3LjE3MiAxNDZjLTIuMjExIDAtNCAxLjc5MS00IDR2OGMwIDIuMjA5IDEuNzg5IDQgNCA0czQtMS43OTEgNC00di04YzAtMi4yMDktMS43ODktNC00LTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMTkuMTcyIDE0NmMtMi4yMTEgMC00IDEuNzkxLTQgNHY4YzAgMi4yMDkgMS43ODkgNCA0IDRzNC0xLjc5MSA0LTR2LThjMC0yLjIwOS0xLjc4OS00LTQtNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEzMS4xNzIgMTQ2Yy0yLjIxMSAwLTQgMS43OTEtNCA0djhjMCAyLjIwOSAxLjc4OSA0IDQgNHM0LTEuNzkxIDQtNHYtOGMwLTIuMjA5LTEuNzg5LTQtNC00eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTYzLjE3MiAxNDZjLTIuMjExIDAtNCAxLjc5MS00IDR2OGMwIDIuMjA5IDEuNzg5IDQgNCA0czQtMS43OTEgNC00di04YzAtMi4yMDktMS43ODktNC00LTR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xNzUuMTcyIDE0NmMtMi4yMTEgMC00IDEuNzkxLTQgNHY4YzAgMi4yMDkgMS43ODkgNCA0IDRzNC0xLjc5MSA0LTR2LThjMC0yLjIwOS0xLjc4OS00LTQtNHoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",dSe="PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMi41IDUxMi41IiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNC43NSw0MTguNWMtNC4xNDMsMC03LjUsMy4zNTgtNy41LDcuNXY3OC41YzAsOS42NzMsMTUsOS42NzMsMTUsMFY0MjZDNTEyLjI1LDQyMS44NTgsNTA4Ljg5Myw0MTguNSw1MDQuNzUsNDE4LjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01MDQuNzUsMjQ5LjM1NWgtNTguODk0di0yNy4wNDNoMTguMDExYzEwLjk2NCwwLDE5Ljg4My04LjkxOSwxOS44ODMtMTkuODgzVjE5Ljg4NEM0ODMuNzUsOC45Miw0NzQuODMxLDAsNDYzLjg2NywwICAgSDE4NC4wNTljLTEwLjk2NCwwLTE5Ljg4Myw4LjkyLTE5Ljg4MywxOS44ODR2MjYuOTI5YzAsOS42NzMsMTUsOS42NzMsMTUsMFYxOS44ODRjMC0yLjY5MywyLjE5LTQuODg0LDQuODgzLTQuODg0aDI3OS44MDkgICBjMi42OTIsMCw0Ljg4MywyLjE5MSw0Ljg4Myw0Ljg4NHYxNDUuNDI5aC0yMi44OTRWODUuNDA2YzAtMi40NzUtMS4yMjEtNC43OS0zLjI2My02LjE4OGMtMi4wNDEtMS4zOTgtNC42NDEtMS42OTktNi45NDktMC44MDUgICBjLTEuOTYyLDAuNzYxLTQzLjM0LDE3LjY1OS01Mi4xNDYsODYuODk5SDE3OS4xNzZ2LTc5LjVjMC05LjY3My0xNS05LjY3My0xNSwwdjExNi42MTdjMCwxMC45NjQsOC45MTksMTkuODgzLDE5Ljg4MywxOS44ODMgICBoMTAwLjc0NnYyNy4wNDNIMTE0LjUxNmMxNi42MTItMTYuNTk0LDE4LjIzNC00Mi44NzEsMTguMjM0LTY0Ljk0OWMwLTQuMTQyLTMuMzU3LTcuNS03LjUtNy41aC00MC41di0xNC4xNTkgICBjMjQuMDYsNS4xMTQsNTAuMjg4LTE0LjYxNiw0OS45NjctMzkuNjQ1Yy0wLjA0My0zLjM1Mi0wLjQ1OS02Ljc1OC0zLjU1Ni04LjgwM2MtMTQuMjQ2LTkuNDAzLTMzLjg2Ni01LjQ4NS00Ni40MTEsNC43ODN2LTEzLjUyOSAgIGMyMS40MzMtMTQuNzkzLDIzLjAyNS00OS42MjksMi40MjktNjUuODg5Yy0yLjA3NS0xLjYzOC00LjM3MS0zLjE5Ny02LjgzNC00LjIwMWMtMTAuNTcxLTQuMzE2LTIyLjE5MSwxNC41MTMtMjQuNzEsMjEuNzgxICAgYy01Ljk1MSwxNy4xNzQtMC41NjgsMzYuOTI2LDE0LjExNCw0Ny44MjR2MTMuOTMxYy05LjYyNy03LjgzMy0yMi4yLTExLjY5Ni0zNC40ODMtOS4yMzZjLTUuMDc2LDEuMDE3LTEzLjk3MSwzLjMxNC0xNS4wNzgsOS40NjcgICBjLTQuNzU4LDI2LjQ3NiwyNS4yMzUsNDguNjQzLDQ5LjU2Miw0My41Mzl2MTQuMTM3aC00My41Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41YzAsMjIuMDQ3LDEuMTk2LDQ4LjM1NywxNy44MDYsNjQuOTQ5SDcuNzUgICBjLTQuMTQzLDAtNy41LDMuMzU4LTcuNSw3LjVWNTA0LjVjMCw5LjY3MywxNSw5LjY3MywxNSwwdi0zNWgxMzUuNXYzNWMwLDkuNjczLDE1LDkuNjczLDE1LDB2LTE5MWgyNjUuMjE1ICAgYzAuMDM5LDIuNjEzLDAuMjg5LDE2LjY4OCwwLjMyLDIwLjkwNkgzMDQuMzU2Yy0yOS42NTEsMC01MS42Miw3LjcxOC02NS4yOTgsMjIuOTM5Yy0xNi40MjIsMTguMjc0LTE0LjI2LDQwLjQyNi0xNC4xNTksNDEuMzU5ICAgYzAuNDA4LDMuODExLDMuNjI0LDYuNzAxLDcuNDU3LDYuNzAxaDk2Ljg5NHYxMy41aC0yOS41Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoMjkuNVY0OTdoLTk2Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoMTAwLjgyNSAgIGMwLjgzMiwwLjMxOCwxLjczMSwwLjUsMi42NzUsMC41czEuODQzLTAuMTgyLDIuNjc1LTAuNUg0NDAuMjVjOS42NzMsMCw5LjY3My0xNSwwLTE1aC05NnYtOTEuNTk0aDUwLjEwNiAgIGMxNy4yMTgsMCwyOS42NjQtNC4xNTEsMzguMDUyLTEyLjY5YzE0LjY5OS0xNC45NjUsMTQuMjUxLTQwLjAyMiwxMy42ODQtNzEuNzQ3Yy0wLjA0NC0yLjQ1NC0wLjA4Ny00Ljk1LTAuMTI1LTcuNDdoNTEuMjgzVjM4NCAgIGMwLDkuNjczLDE1LDkuNjczLDE1LDBWMjU2Ljg1NUM1MTIuMjUsMjUyLjcxMyw1MDguODkzLDI0OS4zNTUsNTA0Ljc1LDI0OS4zNTV6IE05Ny4yNzYsMTI4LjQ5NiAgIGM5LjY1Mi02LjEyNCwxOC4wNDktNC42ODEsMjIuNDIxLTMuMTM3Yy0xLjMyLDE1LjU0Ny0yMC4yMjEsMjYuODYtMzQuNjY4LDIxLjk2M0M4NS42MzUsMTQyLjUxMSw4OC4wNzcsMTM0LjMzMiw5Ny4yNzYsMTI4LjQ5NnogICAgTTQ3LjQyNCwxNDQuMDk3Yy02LjM3Mi00LjA0My0xMS43OTItMTEuMDA1LTEyLjQ5My0xOC43NDJjMTUuMDItNS4yOCwzMi42ODMsNi40MTgsMzQuNjQsMjEuOTY3ICAgQzYyLjI4NiwxNDkuNzkyLDUzLjgxLDE0OC4xNDgsNDcuNDI0LDE0NC4wOTd6IE03Ny42MzcsNTEuMTY5YzEyLjU2LDkuNTU0LDExLjk5NywzMS4zNTktMC4wNDQsNDEuMDU0ICAgYy0zLjcxNS0zLjA1NS05LjMxOS05LjQ4MS05LjMxOS0yMC40NDFDNjguMjczLDYwLjM1Miw3My45OTEsNTQuMDM1LDc3LjYzNyw1MS4xNjl6IE0zMy44NTYsMTkxLjkwNmg4My43ODEgICBjLTEuMjcsNDAuNTE1LTEzLjM2Miw1Ni41LTQxLjg4OCw1Ni41QzQ2LjgzMiwyNDguNDA3LDM1LjA3MiwyMzIuOTM2LDMzLjg1NiwxOTEuOTA2eiBNNDIxLjcwNywzODIuMjA1ICAgYy01LjQyMSw1LjUxOS0xNC4zNjcsOC4yMDEtMjcuMzUxLDguMjAxSDI0MC4wMTNjMC42OTQtNS45ODgsMy4wMDYtMTUuMDI2LDEwLjIwMy0yMy4wMzUgICBjMTAuNzEyLTExLjkyMSwyOC45MjctMTcuOTY1LDU0LjE0MS0xNy45NjVoMTI2LjczNkM0MzAuNDczLDM2NC4xMDUsNDI4LjI1MSwzNzUuNTQzLDQyMS43MDcsMzgyLjIwNXogTTQ2OC43NSwxODAuMzEzdjIyLjExNyAgIGMwLDIuNjkzLTIuMTksNC44ODMtNC44ODMsNC44ODNoLTE4LjAxMXYtMjdINDY4Ljc1eiBNNDE5LjEyNiwxMTEuMzU4YzQuMDg0LTUuMzk1LDguMTktOS40MSwxMS43My0xMi4zMjJ2MTg3Ljg2MyAgIGMtMy41MjgtMy4wMjMtNy42MDQtNy4xNDYtMTEuNjU5LTEyLjYyMmMtMTQuNjE1LTE5LjczOS0yMi4zNDEtNDguMDQ5LTIyLjM0MS04MS44NzIgICBDMzk2Ljg1NiwxNTguNjMyLDQwNC41NTgsMTMwLjYwNiw0MTkuMTI2LDExMS4zNTh6IE0zODMuODczLDIyMi4zMTNjMS40MzIsMTAuMDk1LDMuNTUzLDE5LjA3Nyw2LjEzOCwyNy4wNDNoLTI2Ljg5di0yNy4wNDMgICBIMzgzLjg3M3ogTTE3OS4xNzYsMjAyLjQyOXYtMjIuMTE3aDIwMi45OTNjLTAuNDY5LDguOTkyLTAuNDE1LDE4LjAxNSwwLjE2OSwyN0gxODQuMDU5ICAgQzE4MS4zNjYsMjA3LjMxMywxNzkuMTc2LDIwNS4xMjIsMTc5LjE3NiwyMDIuNDI5eiBNMjk5LjgwNSwyMjIuMzEzaDQ4LjMxNnYyNy4wNDNoLTQ4LjMxNlYyMjIuMzEzeiBNMzk1LjkwMSwyNjQuMzU1ICAgYzcuODE1LDE2LjcsMTcuNTE2LDI3LjQ4OCwyNS4zNjUsMzQuMTQ1SDE1LjI1di0zNC4xNDVIMzk1LjkwMXogTTE1LjI1LDQ1NC41di02M2gxMzUuNXY2M0gxNS4yNXogTTE1MC43NSwzNzYuNUgxNS4yNXYtNjNoMTM1LjUgICBWMzc2LjV6IE00NDUuODU2LDI5OC41di0zNC4xNDVoNTEuMzk0VjI5OC41SDQ0NS44NTZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik01NC43NSwzNTIuNWg1N2M5LjY3MywwLDkuNjczLTE1LDAtMTVoLTU3QzQ1LjA3NywzMzcuNSw0NS4wNzcsMzUyLjUsNTQuNzUsMzUyLjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMTEuNzUsNDE1LjVoLTU3Yy05LjY3MywwLTkuNjczLDE1LDAsMTVoNTdDMTIxLjQyMyw0MzAuNSwxMjEuNDIzLDQxNS41LDExMS43NSw0MTUuNXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",hSe={Anteroom:Yxe,Attic:Qxe,Balcony:bxe,Barn:Uxe,Basement:$xe,Bathroom:Pxe,Bedroom:Wxe,"Boiler Room":"PHN2ZyBoZWlnaHQ9IjQ4MHB0IiB2aWV3Qm94PSItMyAwIDQ4MCA0ODAiIHdpZHRoPSI0ODBwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMjM0Ljk2ODc1IDY0Yy0xMy4yNTM5MDYgMC0yNCAxMC43NDYwOTQtMjQgMjRzMTAuNzQ2MDk0IDI0IDI0IDI0IDI0LTEwLjc0NjA5NCAyNC0yNC0xMC43NDYwOTQtMjQtMjQtMjR6bTAgMzJjLTQuNDE3OTY5IDAtOC0zLjU4MjAzMS04LThzMy41ODIwMzEtOCA4LTggOCAzLjU4MjAzMSA4IDgtMy41ODIwMzEgOC04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMzA2Ljk2ODc1IDE2MGgtMTQ0Yy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djY0YzAgNC40MTc5NjkgMy41ODIwMzEgOCA4IDhoMTQ0YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LTY0YzAtNC40MTc5NjktMy41ODIwMzEtOC04LTh6bS04IDY0aC0xMjh2LTQ4aDEyOHptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xODYuOTY4NzUgMTkyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yMTguOTY4NzUgMTkyaDMydjE2aC0zMnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0yNjYuOTY4NzUgMTkyaDE2djE2aC0xNnptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xMzguOTY4NzUgNzJ2MzJoMTZ2LTI0aDE2di0xNmgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNDY2Ljk2ODc1IDBoLTMyYy00LjQxNzk2OSAwLTggMy41ODIwMzEtOCA4djE5MmMwIDQuNDE3OTY5LTMuNTgyMDMxIDgtOCA4aC01NnYtNTZoMjRjNC40MTc5NjkgMCA4LTMuNTgyMDMxIDgtOHYtNDhjMC00LjQxNzk2OS0zLjU4MjAzMS04LTgtOGgtMjR2LTE2Yy0uMDI3MzQ0LTIyLjA4MjAzMS0xNy45MjE4NzUtMzkuOTcyNjU2LTQwLTQwaC0xNnYtMTZoLTE2djE2aC0xNy43NjE3MTlsLTYuNDgwNDY5LTI1LjkzNzVjLS44ODY3MTgtMy41NjI1LTQuMDg1OTM3LTYuMDYyNS03Ljc1NzgxMi02LjA2MjVoLTQ4Yy0zLjY3MTg3NSAwLTYuODcxMDk0IDIuNS03Ljc2MTcxOSA2LjA2MjVsLTYuNDgwNDY5IDI1LjkzNzVoLTE3Ljc1NzgxMnYtMTZoLTE2djE2aC0xNmMtMjIuMDgyMDMxLjAyNzM0NC0zOS45NzI2NTYgMTcuOTE3OTY5LTQwIDQwdjU2aC0yNGMtNC40MTc5NjkgMC04IDMuNTgyMDMxLTggOHY2NGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDI0djIyNGgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2MzJjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg5NmM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0zMmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04aC0yNHYtNDEuNzEwOTM4YzEyLjM3MTA5NCA2LjM3NSAyNi4wODIwMzEgOS43MDMxMjYgNDAgOS43MTA5MzhoOHYyNGMwIDQuNDE3OTY5IDMuNTgyMDMxIDggOCA4aDQ4YzQuNDE3OTY5IDAgOC0zLjU4MjAzMSA4LTh2LTI0aDhjMTMuOTE0MDYyLS4wMDc4MTIgMjcuNjI4OTA2LTMuMzM1OTM4IDQwLTkuNzEwOTM4djQxLjcxMDkzOGgtMjRjLTQuNDE3OTY5IDAtOCAzLjU4MjAzMS04IDh2MzJjMCA0LjQxNzk2OSAzLjU4MjAzMSA4IDggOGg5NmM0LjQxNzk2OSAwIDgtMy41ODIwMzEgOC04di0zMmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04aC0yNHYtMTc2aDU2YzMwLjkxMDE1Ni0uMDM5MDYyIDU1Ljk2MDkzOC0yNS4wODk4NDQgNTYtNTZ2LTE5MmMwLTQuNDE3OTY5LTMuNTgyMDMxLTgtOC04em0tODggMTA0djMyaC0xNnYtMzJ6bS0xNjEuNzUzOTA2LTg4aDM1LjUwMzkwNmw0IDE2aC00My41MDM5MDZ6bS05NC4yNDYwOTQgNTZjMC0xMy4yNTM5MDYgMTAuNzQ2MDk0LTI0IDI0LTI0aDE3NmMxMy4yNTM5MDYgMCAyNCAxMC43NDYwOTQgMjQgMjR2NTZoLTIyNHptLTMyIDEyMHYtNDhoMTZ2NDh6bTgwIDI3MmgtODB2LTE2aDgwem0tMzItMzJoLTE2di02OS41NTg1OTRjNC41MzUxNTYgNi40ODQzNzUgOS45MTQwNjIgMTIuMzMyMDMyIDE2IDE3LjM5MDYyNXptMTEyLTE2aC0zMnYtMTZoMzJ6bTEyOCA0OGgtODB2LTE2aDgwem0tMzItMzJoLTE2di01Mi4xNjc5NjljNi4wODIwMzEtNS4wNTg1OTMgMTEuNDY0ODQ0LTEwLjkwNjI1IDE2LTE3LjM5MDYyNXptMC0xMjBjLS4wNDI5NjkgMzkuNzQ2MDk0LTMyLjI1MzkwNiA3MS45NTcwMzEtNzIgNzJoLTgwYy0zOS43NDYwOTQtLjA0Mjk2OS03MS45NTcwMzEtMzIuMjUzOTA2LTcyLTcydi0xNjhoMjI0em0xMTItMTEyYy0uMDI3MzQ0IDIyLjA4MjAzMS0xNy45MjE4NzUgMzkuOTcyNjU2LTQwIDQwaC01NnYtMTZoNTZjMTMuMjUzOTA2IDAgMjQtMTAuNzQ2MDk0IDI0LTI0di0xODRoMTZ6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtNTYuNjI1IDUzLjY1NjI1IDEwLjM0Mzc1LTEwLjM0Mzc1IDE4LjM0Mzc1IDE4LjM0Mzc1IDExLjMxMjUtMTEuMzEyNS0yNC0yNGMtMy4xMjUtMy4xMjEwOTQtOC4xODc1LTMuMTIxMDk0LTExLjMxMjUgMGwtMTAuOTM3NSAxMC45Mzc1LTM0LjM5ODQzOC0yNy41MjczNDQtMTAuMDA3ODEyIDEyLjQ5MjE4OCA0MCAzMmMzLjE4MzU5NCAyLjU1MDc4MSA3Ljc3MzQzOCAyLjI5Mjk2OCAxMC42NTYyNS0uNTg5ODQ0em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTAgODcuNDMzNTk0IDQwIDE2YzIuOTcyNjU2IDEuMTgzNTk0IDYuMzYzMjgxLjQ4NDM3NSA4LjYyNS0xLjc3NzM0NGwxMS45MTc5NjktMTEuOTIxODc1IDI2Ljg0NzY1NiAxMy40NjQ4NDQgNy4xNTIzNDQtMTQuMzIwMzEzLTMyLTE2Yy0zLjA3ODEyNS0xLjUzNTE1Ni02Ljc5Njg3NS0uOTI5Njg3LTkuMjMwNDY5IDEuNTAzOTA2bC0xMi4yNzM0MzggMTIuMjI2NTYzLTM1LjEwMTU2Mi0xNC4wNDI5Njl6bTAgMCIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Carport:Jxe,Cellar:Bxe,Chamber:Rxe,Corridor:Fxe,"Dining Area":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==","Dining Room":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMi4wMDEgNTEyLjAwMSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTUwNS45NDcsMTIzLjU5N2MtNC4zNTMtNC43NTItMTAuNTQ2LTcuNDc3LTE2Ljk5LTcuNDc3aC02LjgzN2MtMTcuOTI5LDAtMzIuNjMxLDEzLjQ2OC0zNC4xOTgsMzEuMzI4bC03LjM5Nyw4NC4yNzkNCgkJCQljLTAuNjU1LDcuNDY5LTYuODA0LDEzLjEwMi0xNC4zMDMsMTMuMTAyaC02NC4wMjZjLTIwLjUxNiwwLTM3LjIwNywxNi42OTEtMzcuMjA3LDM3LjIwN3YzLjY5Nw0KCQkJCWMwLDEyLjM5NSwxMC4wODMsMjIuNDc4LDIyLjQ3OCwyMi40NzhoMTMuNzIzbC0xMy41MTQsNDQuMTM1Yy0wLjAxLDAuMDMzLTAuMDIsMC4wNjYtMC4wMywwLjA5OWwtMTAuMzMsMzMuNzM2DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDQ2My4yNA0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0yNC41MTctODAuMDY2YzQuMzA1LTEuMjE5LDguNDYyLTIuOTUzLDEyLjM2Mi01LjE4OGMzLjU5My0yLjA2LDQuODM2LTYuNjQzLDIuNzc2LTEwLjIzNg0KCQkJCWMtMi4wNi0zLjU5My02LjY0NC00LjgzNi0xMC4yMzctMi43NzZjLTYuMDQ0LDMuNDY1LTEyLjkzOSw1LjI5Ny0xOS45NCw1LjI5N2gtNzUuNDAyYy0wLjAyNSwwLTAuMDUsMC0wLjA3NCwwaC0yMy43OTMNCgkJCQljLTQuMTIzLDAtNy40NzgtMy4zNTQtNy40NzgtNy40Nzh2LTMuNjk3YzAtMTIuMjQ1LDkuOTYyLTIyLjIwNywyMi4yMDctMjIuMjA3aDY0LjAyNmMxNS4zMzMsMCwyNy45MDYtMTEuNTE4LDI5LjI0Ni0yNi43OTENCgkJCQlsNy4zOTYtODQuMjhjMC44ODItMTAuMDU2LDkuMTYtMTcuNjQsMTkuMjU1LTE3LjY0aDYuODM3YzIuMjgyLDAsNC4zODksMC45MjcsNS45MywyLjYxYzEuNTQyLDEuNjgzLDIuMjgyLDMuODYyLDIuMDgyLDYuMTM2DQoJCQkJbC0xMC4yNDIsMTE2LjcxMWMtMC4yNTIsMi44NzgtMC44MTMsNS43MjYtMS42NjYsOC40NjRjLTEuMjMyLDMuOTU1LDAuOTc2LDguMTYsNC45MzEsOS4zOTFjMy45NiwxLjIzMiw4LjE1OS0wLjk3Nyw5LjM5Mi00LjkzDQoJCQkJYzEuMTcxLTMuNzYyLDEuOTQtNy42NjksMi4yODctMTEuNjE0bDEwLjI0Mi0xMTYuNzExQzUxMi40NzQsMTM0Ljc1Nyw1MTAuMywxMjguMzQ5LDUwNS45NDcsMTIzLjU5N3ogTTM3Ni44NzUsMzA4LjIxMmg2OS44NTUNCgkJCQlsMTEuOTE0LDM4LjkxaC05My42ODRMMzc2Ljg3NSwzMDguMjEyeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTQ5LjgwMywyNDQuODNIODUuNzc3Yy03LjQ5OSwwLTEzLjY0Ny01LjYzMi0xNC4zMDMtMTMuMTAybC03LjM5Ni04NC4yNzljLTEuNTY3LTE3Ljg2LTE2LjI2OS0zMS4zMjgtMzQuMTk4LTMxLjMyOA0KCQkJCWgtNi44MzdjLTYuNDQ0LDAtMTIuNjM3LDIuNzI1LTE2Ljk5LDcuNDc3Yy00LjM1Myw0Ljc1Mi02LjUyNywxMS4xNi01Ljk2NSwxNy41ODFsMTAuMjQyLDExNi43MTENCgkJCQljMS4yMDksMTMuNzczLDcuNDg5LDI2LjUwMSwxNy42ODQsMzUuODQxYzYuNDA1LDUuODY4LDE0LjAxLDEwLjA3NywyMi4yMDYsMTIuMzk3bC0yNC41MTQsODAuMDU1DQoJCQkJYy0xLjIxMywzLjk2MSwxLjAxNSw4LjE1NCw0Ljk3NSw5LjM2N2MwLjczMiwwLjIyNCwxLjQ3MiwwLjMzMSwyLjE5OSwwLjMzMWMzLjIwOSwwLDYuMTgtMi4wNzcsNy4xNjgtNS4zMDZsOC43MTItMjguNDUxSDE1MS42Mw0KCQkJCWw4LjcxMiwyOC40NTFjMC45ODgsMy4yMjksMy45NTgsNS4zMDYsNy4xNjgsNS4zMDZjMC43MjgsMCwxLjQ2OC0wLjEwNywyLjE5OS0wLjMzMWMzLjk2LTEuMjEzLDYuMTg4LTUuNDA3LDQuOTc1LTkuMzY3DQoJCQkJbC0xMC4zMy0zMy43MzZjLTAuMDEtMC4wMzMtMC4wMi0wLjA2Ni0wLjAzLTAuMDk5bC0xMy41MTQtNDQuMTM1aDEzLjcyM2MxMi4zOTUsMCwyMi40NzctMTAuMDgzLDIyLjQ3Ny0yMi40Nzh2LTMuNjk3DQoJCQkJQzE4Ny4wMSwyNjEuNTIxLDE3MC4zMTksMjQ0LjgzLDE0OS44MDMsMjQ0LjgzeiBNNTMuMzUzLDM0Ny4xMjJsMTEuOTE0LTM4LjkxaDY5Ljg1NWwxMS45MTQsMzguOTFINTMuMzUzeiBNMTcyLjAxLDI4NS43MzQNCgkJCQljMCw0LjEyNC0zLjM1NCw3LjQ3OC03LjQ3Nyw3LjQ3OGgtMjMuNzg4Yy0wLjAzLDAtMC4wNTksMC0wLjA4OSwwSDY1LjI2M2MtMS42MDQsMC0zLjE4Mi0wLjEwMy00LjczNi0wLjI4Mw0KCQkJCWMtMC4wMDEsMC0wLjAwMywwLTAuMDA1LDBjLTE4Ljc2NC0yLjE2OS0zMy41NTgtMTcuMDY1LTM1LjI1LTM2LjM1MkwxNS4wMywxMzkuODY3Yy0wLjItMi4yNzUsMC41NC00LjQ1NCwyLjA4Mi02LjEzNw0KCQkJCWMxLjU0MS0xLjY4MywzLjY0Ny0yLjYxLDUuOTMtMi42MWg2LjgzN2MxMC4wOTUsMCwxOC4zNzMsNy41ODMsMTkuMjU1LDE3LjY0bDcuMzk2LDg0LjI3OXYtMC4wMDENCgkJCQljMS4zNCwxNS4yNzMsMTMuOTEzLDI2Ljc5MSwyOS4yNDYsMjYuNzkxaDY0LjAyNmMxMi4yNDUsMCwyMi4yMDcsOS45NjIsMjIuMjA3LDIyLjIwN1YyODUuNzM0eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzEyLjk0OCwzNzEuMTQxYy0zLjA5NS0xMS44OTctMTMuODQxLTIwLjIwNi0yNi4xMzQtMjAuMjA2aC00LjY0MlYyMTQuNDAxaDkyLjM1NGM1LjMyLDAsMTAuMjk5LTIuMzY1LDEzLjY2MS02LjQ4OA0KCQkJCWMzLjM2Mi00LjEyNCw0LjY3Ny05LjQ3OCwzLjYwNS0xNC42OWMtMy4yMjYtMTUuNjg0LTE3LjE4OC0yNy4wNjctMzMuMTk5LTI3LjA2N0gyMDIuNjY1Yy00LjE0MywwLTcuNSwzLjM1OC03LjUsNy41DQoJCQkJczMuMzU3LDcuNSw3LjUsNy41aDE1NS45MjhjOC45MjYsMCwxNi43MDgsNi4zNDYsMTguNTA2LDE1LjA4OGMwLjIxOSwxLjA2NC0wLjI0MywxLjgyOS0wLjUzNywyLjE5MQ0KCQkJCWMtMC4yOTUsMC4zNjEtMC45NTEsMC45NjctMi4wMzYsMC45NjdIMTM3LjQ3MmMtMS4wODUsMC0xLjc0MS0wLjYwNi0yLjAzNi0wLjk2N2MtMC4yOTQtMC4zNjEtMC43NTYtMS4xMjctMC41MzctMi4xOQ0KCQkJCWMxLjc5OC04Ljc0Myw5LjU4LTE1LjA4OSwxOC41MDYtMTUuMDg5aDE0LjA4NGM0LjE0MywwLDcuNS0zLjM1OCw3LjUtNy41cy0zLjM1Ny03LjUtNy41LTcuNWgtMTQuMDg0DQoJCQkJYy0xNi4wMTIsMC0yOS45NzQsMTEuMzgzLTMzLjE5OSwyNy4wNjhjLTEuMDcxLDUuMjEyLDAuMjQzLDEwLjU2NiwzLjYwNSwxNC42ODljMy4zNjIsNC4xMjMsOC4zNDEsNi40ODgsMTMuNjYxLDYuNDg4aDkyLjM1NQ0KCQkJCXYxMzYuNTM1aC00LjY0MmMtMTIuMjkzLDAtMjMuMDM5LDguMzA5LTI2LjEzNCwyMC4yMDVsLTEuNzYxLDYuNzY3Yy0xLjEyNyw0LjMzNS0wLjIwMyw4Ljg1MiwyLjUzNiwxMi4zOTYNCgkJCQljMi43NCwzLjU0Myw2Ljg4LDUuNTc2LDExLjM1OCw1LjU3Nmg4OS42M2M0LjQ3OSwwLDguNjE4LTIuMDMyLDExLjM1OC01LjU3NmMyLjczOS0zLjU0MywzLjY2My04LjA2MSwyLjUzNi0xMi4zOTYNCgkJCQlMMzEyLjk0OCwzNzEuMTQxeiBNMjQ0LjgyNywyMTQuNDAxTDI0NC44MjcsMjE0LjQwMWgyMi4zNDZ2MTM2LjUzNWgtMjIuMzQ2VjIxNC40MDF6IE0yMTIuMDE2LDM4MC44NzlsMS41NTItNS45NjINCgkJCQljMS4zNzUtNS4yODgsNi4xNTItOC45ODEsMTEuNjE2LTguOTgxaDYxLjYyOWM1LjQ2NCwwLDEwLjI0MSwzLjY5MywxMS42MTYsOC45ODFsMS41NTIsNS45NjJIMjEyLjAxNnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Dining:Gxe,"Dressing Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5Ny4wMDQgMjc2LjE2OWMwLTQuMTM5IDMuMzc0LTcuNTEyIDcuNTEyLTcuNTEyczcuNDgzIDMuMzczIDcuNDgzIDcuNTEydjEzNy4zNCAzOS45OTdjMCA0LjEzOS0zLjM0NSA3LjQ4My03LjQ4MyA3LjQ4M2gtNDk3LjAwNGMtNC4xMzkgMC03LjUxMi0zLjM0NS03LjUxMi03LjQ4MyAwLTEyNC43NTQgMC0yNDkuNTM2IDAtMzc0LjI5MSAwLTcuNzY3IDMuMTc1LTE0LjgyNSA4LjI3Ny0xOS45MjggNS4xMDMtNS4xMDMgMTIuMTYxLTguMjc3IDE5LjkyOC04LjI3N2gxMjQuMjQ0YzcuOTA5IDAgMTUuMzY0IDMuMzE2IDIwLjcyMiA5LjA5OSA1LjM1Ny01Ljc4MyAxMi44MTItOS4wOTkgMjAuNzIyLTkuMDk5aDEyNC4yNDNjNy44ODEgMCAxNS4zNjQgMy4zMTYgMjAuNjkzIDkuMDk5IDUuMzU4LTUuNzgzIDEyLjgxMy05LjA5OSAyMC43MjItOS4wOTloMTI0LjI0NGM3Ljc2NyAwIDE0LjgyNiAzLjE3NSAxOS45MjggOC4yNzcgNS4xMDIgNS4xMDMgOC4yNzcgMTIuMTYxIDguMjc3IDE5LjkyOHYyNS42MjUgMTM3LjM0YzAgNC4xMzktMy4zNDUgNy41MTItNy40ODMgNy41MTItNC4xMzkgMC03LjUxMi0zLjM3My03LjUxMi03LjUxMnYtMTI5Ljg1NWgtNjcuODM1djEyLjkyNmw0Ni44MyAyMy44MzljNC4xOTUgMi4xMjYgNy4xMTUgNS43NTUgOC40NDcgOS44OTQgMS4zNiA0LjEzOSAxLjEzNCA4Ljc4Ny0uOTkyIDEyLjk1NC0xLjQ0NiAyLjgzNS0zLjY1NyA1LjE1OS02LjI5MyA2Ljc3NS0yLjY2NCAxLjY0NC01LjcyNiAyLjUyMy04Ljg3MiAyLjUyM2gtMy4zNDV2OTUuNjEzYzAgNC4xMzktMy4zNDUgNy40ODQtNy40ODQgNy40ODRoLTcxLjE1Yy00LjEzOSAwLTcuNDgzLTMuMzQ1LTcuNDgzLTcuNDg0di0zNC41NTRjMC00LjE2NyAzLjM0NS03LjUxMiA3LjQ4My03LjUxMiA0LjEzOSAwIDcuNTEyIDMuMzQ1IDcuNTEyIDcuNTEydjI3LjA0M2g1Ni4xMjd2LTg4LjEwMmgtNTYuMTI3djI3LjA3MWMwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEycy03LjQ4My0zLjM3My03LjQ4My03LjUxMnYtMjcuMDcxaC0zLjM0NWMtNC43MDYgMC04Ljk1Ny0xLjg5OS0xMi4wMTktNC45ODktMy4wOS0zLjA2MS00Ljk4OS03LjMxMy00Ljk4OS0xMi4wMTkgMC0zLjM0NS45OTItNi41MiAyLjY5My05LjE1NiAxLjcyOS0yLjY2NCA0LjEzOS00LjgxOSA2Ljk3NC02LjE4bDQ2LjAzNS0yMy40NDN2LTEzLjEyNGgtNjcuODM0djI5My43MDFoMTUwLjY2M3YtMTI5Ljg1N3ptLTczLjg0My0xMzcuMTk5Yy0uODIyLS41MS0xLjY3Mi0uNTEtMi40OTUgMGwtNDUuNzIzIDIzLjMwMWMtLjkwNy4zNC0xLjQ3NC45MzYtMS40NzQgMS45NTYgMCAxLjEwNS45MDcgMi4wMTMgMi4wMTMgMi4wMTNoOTIuODA3Yy43OTMgMCAxLjQ0Ni0uMzk3IDEuNzg2LTEuMTA1LjUxLS45OTIuMTQyLTIuMTgzLS44NzgtMi42OTNsLTE1LjMzNi03LjgyM2MtOS4wNDMtNC41OTMtMTguMDU3LTkuMTU4LTMwLjctMTUuNjQ5em0tMTY1LjgtLjA4NWMtLjcwOS0uNDI1LTEuNDc0LS40MjUtMi4yNCAwbC00NS44NjUgMjMuMzg2Yy0uODc5LjM0LTEuNDQ2LjkzNi0xLjQ0NiAxLjk1NiAwIDEuMTA1LjkwNyAyLjAxMyAyLjAxMyAyLjAxM2g5Mi44MDdjLjc5NCAwIDEuNDQ2LS4zOTcgMS43ODYtMS4xMDUuNTEtLjk5Mi4xNDItMi4xODMtLjg3OS0yLjY5My0xNS4zOTItNy44MjQtMzAuODEyLTE1LjY0OC00Ni4xNzYtMjMuNTU3em0tMjExLjY2Ni0yNi41NmMtNC4xMzkgMC03LjUxMi0zLjM0NS03LjUxMi03LjQ4NHMzLjM3My03LjUxMiA3LjUxMi03LjUxMmg4OS4yOTJjNC4xMzggMCA3LjUxMiAzLjM3NCA3LjUxMiA3LjUxMiAwIDQuMTM5LTMuMzczIDcuNDg0LTcuNTEyIDcuNDg0em0wIDEwMS45MzRjLTQuMTM5IDAtNy41MTItMy4zNzMtNy41MTItNy41MTJzMy4zNzMtNy40ODMgNy41MTItNy40ODNoODkuMjkyYzQuMTM4IDAgNy41MTIgMy4zNDUgNy41MTIgNy40ODMgMCA0LjEzOS0zLjM3MyA3LjUxMi03LjUxMiA3LjUxMnptMC0zMy45ODhjLTQuMTM5IDAtNy41MTItMy4zNDUtNy41MTItNy40ODNzMy4zNzMtNy41MTIgNy41MTItNy41MTJoODkuMjkyYzQuMTM4IDAgNy41MTIgMy4zNzMgNy41MTIgNy41MTJzLTMuMzczIDcuNDgzLTcuNTEyIDcuNDgzem0wLTMzLjk1OWMtNC4xMzkgMC03LjUxMi0zLjM3My03LjUxMi03LjUxMnMzLjM3My03LjQ4MyA3LjUxMi03LjQ4M2g4OS4yOTJjNC4xMzggMCA3LjUxMiAzLjM0NSA3LjUxMiA3LjQ4MyAwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEyem0yMDIuODIyLTIwLjg2M3YtMTMuMTI0aC02Ny44MzR2MTI5Ljg1N2MwIDQuMTM5LTMuMzczIDcuNTEyLTcuNTEyIDcuNTEycy03LjUxMi0zLjM3My03LjUxMi03LjUxMnYtMTYyLjk2N2MwLTMuNjI4LTEuNDc0LTYuOTE3LTMuODgzLTkuMzI2LTIuMzgxLTIuMzgxLTUuNjk4LTMuODg0LTkuMzI2LTMuODg0aC0xMjQuMjQ0Yy0zLjYyOCAwLTYuOTE3IDEuNTAyLTkuMzI3IDMuODg0LTIuMzgxIDIuNDA5LTMuODgzIDUuNjk3LTMuODgzIDkuMzI2djE5Mi4zNjFoMTUuMzA4YzYuMDk0IDAgMTEuNTk0IDIuNDY2IDE1LjU5IDYuNDY0IDMuOTk3IDMuOTk3IDYuNDkyIDkuNTI1IDYuNDkyIDE1LjU5djIzLjMwMWMwIDYuMDY3LTIuNDk1IDExLjU5NC02LjQ5MiAxNS41OTFzLTkuNDk2IDYuNDYzLTE1LjU5IDYuNDYzaC0xNS4zMDh2MTA3LjAwOWgxNTAuNjYzdi0xNjkuODI1YzAtNC4xMzkgMy4zNzQtNy41MTIgNy41MTItNy41MTJzNy41MTIgMy4zNzMgNy41MTIgNy41MTJ2MTI5Ljg1NmgxNTAuNjYzdi0yOTMuN2gtNjcuODM0djEyLjkyNmw0Ni42MyAyMy43MjZjNC4xNjcgMi4xMjYgNy4yIDUuNTI4IDguNjQ2IDEwLjAwNyAyLjQ2NiA3LjU2OC0uNTM5IDE1LjU5LTcuMjg1IDE5LjcyOS0yLjY2NCAxLjY0NC01Ljc1NCAyLjUyMy04Ljg3MiAyLjUyM2gtOTIuODA3Yy00LjcwNiAwLTguOTU4LTEuODk5LTEyLjA0Ny00Ljk4OS0zLjA2MS0zLjA2MS00Ljk2LTcuMzEzLTQuOTYtMTIuMDE5IDAtMy4zNDUuOTkyLTYuNTIgMi42OTMtOS4xNTYgMS43MDEtMi42NjQgNC4xMS00LjgxOSA2Ljk3My02LjE4em0tMjMzLjUyMSAxNzIuMzJoNi4wOTRjNC4xMzkgMCA3LjUxMiAzLjM3MyA3LjUxMiA3LjUxMnMtMy4zNzMgNy41MTItNy41MTIgNy41MTJoLTYuMDk0djExLjE5OGgxNS4zMDhjMS45NTYgMCAzLjcxMy0uNzk0IDQuOTg5LTIuMDY5IDEuMjc2LTEuMzA1IDIuMDk4LTMuMDYxIDIuMDk4LTQuOTl2LTIzLjMwMmMwLTEuOTI4LS44MjItMy42ODUtMi4wOTgtNC45ODktMS4yNzUtMS4yNzYtMy4wMzMtMi4wNjktNC45ODktMi4wNjloLTE1LjMwOHptMzMxLjM0NS0yMTguNTU0djE4LjExM2gxNTAuNjYzdi0xOC4xMTNjMC0zLjYyOC0xLjQ3NC02LjkxNy0zLjg4My05LjMyNi0yLjQwOS0yLjM4MS01LjY5OC0zLjg4NC05LjMyNy0zLjg4NGgtMTI0LjI0M2MtMy42MjggMC02LjkxNyAxLjUwMi05LjMyNiAzLjg4NC0yLjQxIDIuNDEtMy44ODQgNS42OTgtMy44ODQgOS4zMjZ6bS0xNjUuNjU4IDE4LjExNGgxNTAuNjYzdi0xOC4xMTRjMC0zLjYyOC0xLjUwMi02LjkxNy0zLjg4My05LjMyNi0yLjQxLTIuMzgxLTUuNjk4LTMuODg0LTkuMzI3LTMuODg0aC0xMjQuMjQzYy0zLjYyOSAwLTYuOTQ1IDEuNTAyLTkuMzI3IDMuODg0LTIuNDEgMi40MDktMy44ODMgNS42OTctMy44ODMgOS4zMjZ6bTMxNi4zMjEgMzIzLjY5MmgtMzE2LjMyMXYyNC45NzNoMzE2LjMyMnYtMjQuOTczeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg==",Driveway:Hxe,Entrance:Vxe,"Equipment Room":"PHN2ZyBoZWlnaHQ9IjUxMnB0IiB2aWV3Qm94PSIwIC00IDUxMiA1MTIiIHdpZHRoPSI1MTJwdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiPg0KICAgICAgICA8cGF0aCBkPSJtMzAzLjA5Mzc1IDE3NC4yNWMzLjM5NDUzMSAyLjM3ODkwNiA4LjA3MDMxMiAxLjU1MDc4MSAxMC40NDUzMTItMS44Mzk4NDRsMTUuOTUzMTI2LTIyLjc4OTA2MmMyLjM3ODkwNi0zLjM5NDUzMiAxLjU1NDY4Ny04LjA3MDMxMy0xLjgzOTg0NC0xMC40NDUzMTMtMy4zOTQ1MzItMi4zNzUtOC4wNzAzMTMtMS41NTA3ODEtMTAuNDQ1MzEzIDEuODQzNzVsLTE1Ljk1NzAzMSAyMi43ODUxNTdjLTIuMzc1IDMuMzk0NTMxLTEuNTUwNzgxIDguMDcwMzEyIDEuODQzNzUgMTAuNDQ1MzEyem0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTM0MS42NzE4NzUgMTU1Ljk4NDM3NS01LjQxNzk2OSAyNy4yODUxNTZjLS45MTc5NjggNC42NDA2MjUgMi42MzI4MTMgOC45NjA5MzggNy4zNjcxODggOC45NjA5MzggMy41MDc4MTIgMCA2LjY0MDYyNS0yLjQ3MjY1NyA3LjM0NzY1Ni02LjAzOTA2M2w1LjQxNDA2Mi0yNy4yODkwNjJjLjgwODU5NC00LjA2MjUtMS44MzIwMzEtOC4wMTE3MTktNS44OTQ1MzEtOC44MTY0MDYtNC4wNjY0MDYtLjgwNDY4OC04LjAxMTcxOSAxLjgzMjAzMS04LjgxNjQwNiA1Ljg5ODQzN3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zMDkuNTg5ODQ0IDEyMS40NDkyMTljLTIuMTQ0NTMyLTMuNTQyOTY5LTYuNzU3ODEzLTQuNjcxODc1LTEwLjMwMDc4Mi0yLjUyNzM0NGwtMjMuNzg5MDYyIDE0LjQyMTg3NWMtMy41NDI5NjkgMi4xNDg0MzgtNC42NzE4NzUgNi43NjE3MTktMi41MjczNDQgMTAuMzA0Njg4IDIuMTUyMzQ0IDMuNTQyOTY4IDYuNzY1NjI1IDQuNjY3OTY4IDEwLjMwNDY4OCAyLjUyMzQzN2wyMy43ODkwNjItMTQuNDE3OTY5YzMuNTQyOTY5LTIuMTQ4NDM3IDQuNjcxODc1LTYuNzYxNzE4IDIuNTIzNDM4LTEwLjMwNDY4N3ptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im04My42NTIzNDQgMTUyLjE3OTY4OGMyLjc1NzgxMiAxLjM1OTM3NCA2LjExMzI4MSAxLjQwNjI1IDguOTY4NzUgMCA3LTMuNDUzMTI2IDI5LjgzNTkzNy0xNi41MDc4MTMgMjkuODM1OTM3LTM5LjQ2NDg0NCAwLTE4LjIwMzEyNS0yMS4yMTQ4NDMtMjcuMDY2NDA2LTM0LjMxMjUtMTYuMDc0MjE5LTUuMDYyNS00LjI2MTcxOS0xMS45NDE0MDYtNS44OTA2MjUtMTguNzUzOTA2LTQuMDg5ODQ0LTkuMzE2NDA2IDIuNDU3MDMxLTE1LjU3MDMxMyAxMC41NjI1LTE1LjU3MDMxMyAyMC4xNjQwNjMgMCAyMy4wMTU2MjUgMjIuODQzNzUgMzYuMDMxMjUgMjkuODMyMDMyIDM5LjQ2NDg0NHptLTMuNzc3MzQ0LTQyLjM2NzE4OGMxLjM5ODQzOCAyLjQ2ODc1IDQuNDY4NzUgNC42MjUgOC4wMjM0MzggNC43MTA5MzggMy41ODIwMzEuMTEzMjgxIDYuOTcyNjU2LTIuMDQ2ODc2IDguNDYwOTM3LTQuNjUyMzQ0IDMuMDU0Njg3LTUuMzU1NDY5IDExLjA5NzY1Ni0zLjE0NDUzMiAxMS4wOTc2NTYgMi44NDc2NTYgMCAxMi42OTE0MDYtMTMuMzk0NTMxIDIxLjU2NjQwNi0xOS4zMjQyMTkgMjQuODc1LTUuOTI5Njg3LTMuMjkyOTY5LTE5LjMxMjUtMTIuMTQ0NTMxLTE5LjMxMjUtMjQuODc1IDAtNi4wNDI5NjkgOC4wODU5MzgtOC4xMzI4MTIgMTEuMDU0Njg4LTIuOTA2MjV6bTAgMCIvPg0KICAgICAgICA8cGF0aCBkPSJtMTQxLjE0MDYyNSAxMDMuNjE3MTg4aDI5LjYzNjcxOWM0LjE0NDUzMSAwIDcuNS0zLjM1NTQ2OSA3LjUtNy41IDAtNC4xNDA2MjYtMy4zNTU0NjktNy41LTcuNS03LjVoLTI5LjYzNjcxOWMtNC4xNDQ1MzEgMC03LjUgMy4zNTkzNzQtNy41IDcuNSAwIDQuMTQ0NTMxIDMuMzU1NDY5IDcuNSA3LjUgNy41em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0MS4xNDA2MjUgMTMwLjAyNzM0NGgyOS42MzY3MTljNC4xNDQ1MzEgMCA3LjUtMy4zNTU0NjkgNy41LTcuNSAwLTQuMTQ0NTMyLTMuMzU1NDY5LTcuNS03LjUtNy41aC0yOS42MzY3MTljLTQuMTQ0NTMxIDAtNy41IDMuMzU1NDY4LTcuNSA3LjUgMCA0LjE0MDYyNSAzLjM1NTQ2OSA3LjUgNy41IDcuNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0xNDEuMTQwNjI1IDE1Ni40Mzc1aDI5LjYzNjcxOWM0LjE0NDUzMSAwIDcuNS0zLjM1NTQ2OSA3LjUtNy41cy0zLjM1NTQ2OS03LjUtNy41LTcuNWgtMjkuNjM2NzE5Yy00LjE0NDUzMSAwLTcuNSAzLjM1NTQ2OS03LjUgNy41czMuMzU1NDY5IDcuNSA3LjUgNy41em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5NS43Njk1MzEgMTUuMDA3ODEyYzQuMTQ0NTMxIDAgNy41LTMuMzU1NDY4IDcuNS03LjUgMC00LjE0NDUzMS0zLjM1NTQ2OS03LjQ5OTk5OTUtNy41LTcuNDk5OTk5NWgtNzMuNzEwOTM3Yy0uMTE3MTg4IDAtLjIzMDQ2OS4wMTE3MTg3LS4zNDc2NTYuMDE1NjI1LTIuNDk2MDk0LS4xMjg5MDY1LTUgLjk4NDM3NDUtNi41MzkwNjMgMy4xODM1OTM1bC0yNS44OTA2MjUgMzYuOTcyNjU3LTMyLjgzOTg0NC0yMi45OTYwOTRjLTE3LjM3MTA5NC0xMi4xNjQwNjMtMzguOTAyMzQ0LTE2LjI4OTA2My01OS41OTM3NS0xMS41MzkwNjNsLTIuNTk3NjU2LTEuODIwMzEyYy05LjU4OTg0NC02LjcxMDkzOC0yMi44MTY0MDYtNC4zNDc2NTctMjkuNSA1LjE5OTIxOWwtNS45Njg3NSA4LjUyMzQzN2MtNi42OTUzMTIgOS41NjI1LTQuMzYzMjgxIDIyLjgwMDc4MSA1LjIwMzEyNSAyOS40OTYwOTRsMi4wNDY4NzUgMS40MzM1OTNjLTYuODU5Mzc1IDMwLjYxNzE4OCAyNi44NjMyODEgNTQuMDgyMDMyIDUzLjE3OTY4OCAzNy4yMzgyODJsNC4xOTE0MDYgMi45MzM1OTRjLTYuODUxNTYzIDMwLjU3MDMxMiAyNi44MDQ2ODcgNTQuMTE3MTg3IDUzLjE3NTc4MSAzNy4yMzgyODFsNC4xOTUzMTMgMi45MzM1OTNjLTYuODU5Mzc2IDMwLjYxNzE4OCAyNi44NjMyODEgNTQuMDc4MTI2IDUzLjE3NTc4MSAzNy4yMzQzNzZsMi4wNTQ2ODcgMS40NDE0MDZjOS41NjY0MDYgNi42OTUzMTIgMjIuODAwNzgyIDQuMzYzMjgxIDI5LjQ5NjA5NC01LjIwMzEyNWw1Ljk2ODc1LTguNTIzNDM4YzYuNjk1MzEyLTkuNTYyNSA0LjM2MzI4MS0yMi44MDA3ODEtNS4xOTkyMTktMjkuNDk2MDkzbC0zLjI3MzQzNy0yLjI5Mjk2OWMtMi42MTMyODItMjEuMDY2NDA3LTEzLjg1NTQ2OS0zOS44ODY3MTktMzEuMjI2NTYzLTUyLjA1NDY4OGwtMzAuMTk5MjE5LTIxLjE0MDYyNSAyMy42NTIzNDQtMzMuNzc3MzQ0em0tMjE1LjQ1NzAzMSA0My40NzI2NTcgMjQuNjIxMDk0IDE3LjI0MjE4N2MtMTEuNzk2ODc1IDIuNzkyOTY5LTIzLjIyMjY1Ni01LjIzNDM3NS0yNC42MjEwOTQtMTcuMjQyMTg3em01Ny4zNjcxODggNDAuMTY3OTY5IDI0LjYyNSAxNy4yNDIxODdjLTExLjc2OTUzMiAyLjc5Njg3NS0yMy4yMjI2NTctNS4yMDcwMzEtMjQuNjI1LTE3LjI0MjE4N3ptNTcuMzcxMDkzIDQwLjE3MTg3NGMxNC45MTc5NjkgMTAuNDQ1MzEzIDkuNzc3MzQ0IDYuODQzNzUgMjQuNjI1IDE3LjI0MjE4OC0xMS43NzM0MzcgMi43OTY4NzUtMjMuMjIyNjU2LTUuMjE0ODQ0LTI0LjYyNS0xNy4yNDIxODh6bTY0LjEyODkwNyA2LjM0Mzc1LTUuOTY4NzUgOC41MjM0MzhjLTEuOTUzMTI2IDIuNzg5MDYyLTUuODEyNSAzLjQ3MjY1Ni04LjYwNTQ2OSAxLjUxOTUzMS0yLjQxMDE1Ny0xLjY4NzUtMTY5Ljg1OTM3NS0xMTguOTQxNDA2LTE3Mi4wMTk1MzEtMTIwLjQ0OTIxOS0yLjc2OTUzMi0xLjk0MTQwNi0zLjQ1NzAzMi01LjgzMjAzMS0xLjUxNTYyNi04LjYwNTQ2OGw1Ljk2ODc1LTguNTIzNDM4YzEuOTQ5MjE5LTIuNzgxMjUgNS44NDM3NS0zLjQ0OTIxOCA4LjYwNTQ2OS0xLjUxNTYyNWwxNzIuMDE5NTMxIDEyMC40NDUzMTNjMi43NzM0MzggMS45NDE0MDYgMy40NTcwMzIgNS44MzU5MzcgMS41MTU2MjYgOC42MDU0Njh6bS0xNC45MDIzNDQtMzYuMjg5MDYyYy03Ljg5NDUzMi01LjUzMTI1LTEyNS4wNDY4NzUtODcuNTU4NTk0LTEyOC43MTA5MzgtOTAuMTI1IDExLjQ3MjY1Ni4zNTE1NjIgMjIuNjcxODc1IDQgMzIuMjczNDM4IDEwLjcyMjY1Nmw3NS4zMjQyMTggNTIuNzQyMTg4YzkuNTk3NjU3IDYuNzIyNjU2IDE2Ljg1OTM3NiAxNiAyMS4xMTMyODIgMjYuNjYwMTU2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ5MC44MjAzMTIgMzEwLjUxNTYyNWgtMjE3LjMyMDMxMmMtNC4xNDQ1MzEgMC03LjUgMy4zNTkzNzUtNy41IDcuNSAwIDQuMTQ0NTMxIDMuMzU1NDY5IDcuNTAzOTA2IDcuNSA3LjUwMzkwNmgyMTcuMzIwMzEyYzMuNDA2MjUgMCA2LjE3OTY4OCAyLjc2OTUzMSA2LjE3OTY4OCA2LjE3NTc4MXYxMy42Nzk2ODhjMCAzLjQwNjI1LTIuNzczNDM4IDYuMTc5Njg4LTYuMTc5Njg4IDYuMTc5Njg4LTMuNDQ1MzEyIDAtNDYzLjYwOTM3NCAwLTQ2OS42NDA2MjQgMC0zLjQwNjI1IDAtNi4xNzk2ODgtMi43Njk1MzItNi4xNzk2ODgtNi4xNzk2ODh2LTEzLjY3OTY4OGMwLTMuNDA2MjUgMi43NzM0MzgtNi4xNzU3ODEgNi4xNzk2ODgtNi4xNzU3ODFoMjE3LjMyMDMxMmM0LjE0NDUzMSAwIDcuNS0zLjM1OTM3NSA3LjUtNy41MDM5MDYgMC00LjE0MDYyNS0zLjM1NTQ2OS03LjUtNy41LTcuNWgtODUuMzU1NDY5Yy41OTc2NTctMS45NTMxMjUuOTI1NzgxLTQuMDI3MzQ0LjkyNTc4MS02LjE3NTc4MXYtMTMuNjc5Njg4YzAtMTEuNjc5Njg3LTkuNS0yMS4xNzk2ODctMjEuMTc5Njg3LTIxLjE3OTY4N2gtMTExLjcxMDkzN2MtMTEuNjc5Njg4IDAtMjEuMTc5Njg4IDkuNS0yMS4xNzk2ODggMjEuMTc5Njg3djEzLjY3OTY4OGMwIDUuMjE0ODQ0IDEuOTAyMzQ0IDkuOTg0Mzc1IDUuMDM5MDYyIDEzLjY3OTY4Ny0zLjEzNjcxOCAzLjY5MTQwNy01LjAzOTA2MiA4LjQ2NDg0NC01LjAzOTA2MiAxMy42NzU3ODF2MTMuNjc5Njg4YzAgMTEuMzI4MTI1IDguOTQ1MzEyIDIwLjU3ODEyNSAyMC4xMzY3MTkgMjEuMTI4OTA2djYuNjA5Mzc1YzAgMTEuNjc5Njg4IDkuNTAzOTA2IDIxLjE3OTY4OCAyMS4xNzk2ODcgMjEuMTc5Njg4aDIwLjcxNDg0NHY5NS4xNDA2MjVjMCA3Ljg3ODkwNiA2LjQxMDE1NiAxNC4yODkwNjIgMTQuMjkyOTY5IDE0LjI4OTA2MmgxNC4xNTIzNDNjNy44Nzg5MDcgMCAxNC4yOTI5NjktNi40MTAxNTYgMTQuMjkyOTY5LTE0LjI4OTA2MnYtOTUuMTQwNjI1aDMwMi40NjA5Mzh2OTUuMTQwNjI1YzAgNy44Nzg5MDYgNi40MTAxNTYgMTQuMjg5MDYyIDE0LjI5Mjk2OSAxNC4yODkwNjJoMTQuMTUyMzQzYzcuODgyODEzIDAgMTQuMjkyOTY5LTYuNDEwMTU2IDE0LjI5Mjk2OS0xNC4yODkwNjJ2LTk1LjE0MDYyNWgyMC43MTA5MzhjMTEuNjc5Njg3IDAgMjEuMTc5Njg3LTkuNSAyMS4xNzk2ODctMjEuMTc5Njg4di02LjYwOTM3NWMxMS4xOTUzMTMtLjU1MDc4MSAyMC4xNDA2MjUtOS44MDA3ODEgMjAuMTQwNjI1LTIxLjEyODkwNnYtMTMuNjc5Njg4YzAtMTEuNjc1NzgxLTkuNS0yMS4xNzk2ODctMjEuMTc5Njg4LTIxLjE3OTY4N3ptLTQ3NS44MjAzMTItMTkuODU1NDY5YzAtMy40MDYyNSAyLjc3MzQzOC02LjE3OTY4NyA2LjE3OTY4OC02LjE3OTY4N2gxMTEuNzEwOTM3YzMuNDA2MjUgMCA2LjE3OTY4NyAyLjc3MzQzNyA2LjE3OTY4NyA2LjE3OTY4N3YxMy42Nzk2ODhjMCAzLjQwNjI1LTIuNzczNDM3IDYuMTc5Njg3LTYuMTc5Njg3IDYuMTc5Njg3aC0xMTEuNzEwOTM3Yy0zLjQwNjI1IDAtNi4xNzk2ODgtMi43NzM0MzctNi4xNzk2ODgtNi4xNzk2ODd6bTc0Ljc2NTYyNSAxOTguMDYyNWgtMTIuNzM0Mzc1di05NC40Mjk2ODdoMTIuNzM0Mzc1em0zNDUuMjAzMTI1IDBoLTEyLjczODI4MXYtOTQuNDI5Njg3aDEyLjczODI4MXptNDEuODkwNjI1LTExNS42MDkzNzVjMCAzLjQwNjI1LTIuNzY5NTMxIDYuMTc5Njg4LTYuMTc5Njg3IDYuMTc5Njg4LTEzLjcxNDg0NCAwLTQxNS4wMzUxNTcgMC00MjkuMzYzMjgyIDAtMy40MDYyNSAwLTYuMTc5Njg3LTIuNzczNDM4LTYuMTc5Njg3LTYuMTc5Njg4di02LjU1ODU5M2g0NDEuNzIyNjU2em0wIDAiLz4NCiAgICAgICAgPHBhdGggZD0ibTIyOC45NjA5MzggMTEyLjUyNzM0NGM0LjE0NDUzMSAwIDcuNS0zLjM1OTM3NSA3LjUtNy41di00MS4xMzY3MTljMC0xNi4zMTY0MDYtMTMuMjczNDM4LTI5LjU5Mzc1LTI5LjU4OTg0NC0yOS41OTM3NWgtMTc3LjI4MTI1Yy0xNi4zMTY0MDYgMC0yOS41ODk4NDQgMTMuMjczNDM3LTI5LjU4OTg0NCAyOS41OTM3NXYxMTcuMjc3MzQ0YzAgMTYuMzE2NDA2IDEzLjI3MzQzOCAyOS41ODk4NDMgMjkuNTg5ODQ0IDI5LjU4OTg0M2gxNzcuMjgxMjVjMTYuMzE2NDA2IDAgMjkuNTkzNzUtMTMuMjczNDM3IDI5LjU5Mzc1LTI5LjU4OTg0M3YtNDEuMTQwNjI1YzAtNC4xNDA2MjUtMy4zNTkzNzUtNy41LTcuNTAzOTA2LTcuNS00LjE0MDYyNiAwLTcuNSAzLjM1OTM3NS03LjUgNy41djQxLjE0MDYyNWMwIDguMDQyOTY5LTYuNTQ2ODc2IDE0LjU4OTg0My0xNC41ODk4NDQgMTQuNTg5ODQzaC0xNzcuMjgxMjVjLTguMDQyOTY5IDAtMTQuNTg5ODQ0LTYuNTQ2ODc0LTE0LjU4OTg0NC0xNC41ODk4NDN2LTExNy4yNzczNDRjMC04LjA0Njg3NSA2LjU0Njg3NS0xNC41OTM3NSAxNC41ODk4NDQtMTQuNTkzNzVoMTc3LjI4MTI1YzguMDQyOTY4IDAgMTQuNTg5ODQ0IDYuNTQ2ODc1IDE0LjU4OTg0NCAxNC41OTM3NXY0MS4xMzY3MTljMCA0LjE0MDYyNSAzLjM1OTM3NCA3LjUgNy41IDcuNXptMCAwIi8+DQogICAgICAgIDxwYXRoIGQ9Im0zNC43NzM0MzggNjEuNTcwMzEyYy00LjE0NDUzMiAwLTcuNSAzLjM1OTM3Ni03LjUgNy41djEwNi45MTQwNjNjMCA0LjE0NDUzMSAzLjM1NTQ2OCA3LjUgNy41IDcuNWgxNjYuOTE0MDYyYzQuMTQ0NTMxIDAgNy41LTMuMzU1NDY5IDcuNS03LjV2LTEwNi45MTQwNjNjMC00LjE0MDYyNC0zLjM1NTQ2OS03LjUtNy41LTcuNXptMTU5LjQxNDA2MiAxMDYuOTE0MDYzaC0xNTEuOTE0MDYydi05MS45MTQwNjNoMTUxLjkxNDA2MnptMCAwIi8+DQogICAgPC9nPg0KPC9zdmc+","Front Yard":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjYuNDksMzYuOTQ3Yy0zMS41NzksMC01Ny4yNywyNS42OTEtNTcuMjcsNTcuMjdjMCwzMS41NzksMjUuNjkxLDU3LjI3LDU3LjI3LDU3LjI3YzMxLjU3OCwwLDU3LjI3LTI1LjY5MSw1Ny4yNy01Ny4yNw0KCQkJQzE4My43NjEsNjIuNjM4LDE1OC4wNywzNi45NDcsMTI2LjQ5LDM2Ljk0N3ogTTEyNi40OSwxMzEuNDg3Yy0yMC41NTEsMC0zNy4yNy0xNi43MTktMzcuMjctMzcuMjcNCgkJCWMwLTIwLjU1MSwxNi43MTktMzcuMjcsMzcuMjctMzcuMjdjMjAuNTUsMCwzNy4yNywxNi43MTksMzcuMjcsMzcuMjdDMTYzLjc2MSwxMTQuNzY4LDE0Ny4wNDIsMTMxLjQ4NywxMjYuNDksMTMxLjQ4N3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyNi40OSwwYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjEyLjMzOGMwLDUuNTIzLDQuNDc3LDEwLDEwLDEwczEwLTQuNDc3LDEwLTEwVjEwQzEzNi40OSw0LjQ3NywxMzIuMDE0LDAsMTI2LjQ5LDB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMjYuNDksMTU2LjA5N2MtNS41MjMsMC0xMCw0LjQ3Ny0xMCwxMHYxMi4zMzhjMCw1LjUyMyw0LjQ3NywxMCwxMCwxMHMxMC00LjQ3NywxMC0xMHYtMTIuMzM4DQoJCQlDMTM2LjQ5LDE2MC41NzQsMTMyLjAxNCwxNTYuMDk3LDEyNi40OSwxNTYuMDk3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjEwLjcwOCw4NC4yMTdIMTk4LjM3Yy01LjUyMywwLTEwLDQuNDc3LTEwLDEwczQuNDc3LDEwLDEwLDEwaDEyLjMzOGM1LjUyMywwLDEwLTQuNDc3LDEwLTEwDQoJCQlTMjE2LjIzLDg0LjIxNywyMTAuNzA4LDg0LjIxN3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTU0LjYxLDg0LjIxN0g0Mi4yNzJjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoMTIuMzM5YzUuNTIzLDAsMTAtNC40NzcsOS45OTktMTANCgkJCUM2NC42MSw4OC42OTQsNjAuMTM0LDg0LjIxNyw1NC42MSw4NC4yMTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMDAuOTc3LDE5LjcyOWMtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MiwwbC05Ljg3Nyw5Ljg3N2MtMy45MDUsMy45MDYtMy45MDUsMTAuMjM4LDAsMTQuMTQzDQoJCQljMS45NTIsMS45NTMsNC41MTIsMi45MjksNy4wNzEsMi45MjljMi41NTksMCw1LjExOS0wLjk3Niw3LjA3MS0yLjkyOWw5Ljg3Ny05Ljg3N0MyMDQuODgzLDI5Ljk2NiwyMDQuODgzLDIzLjYzNCwyMDAuOTc3LDE5LjcyOQ0KCQkJeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNzYuMDIzLDE0NC42ODVjLTMuOTA2LTMuOTA1LTEwLjIzOC0zLjkwNS0xNC4xNDMsMGwtOS44NzcsOS44NzdjLTMuOTA1LDMuOTA2LTMuOTA1LDEwLjIzOCwwLDE0LjE0Mw0KCQkJYzEuOTUyLDEuOTUzLDQuNTEyLDIuOTI5LDcuMDcxLDIuOTI5czUuMTE5LTAuOTc2LDcuMDcyLTIuOTI5bDkuODc3LTkuODc3Qzc5LjkyOCwxNTQuOTIyLDc5LjkyOCwxNDguNTksNzYuMDIzLDE0NC42ODV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik03Ni4wMjEsMjkuNjA2bC05Ljg3Ny05Ljg3N2MtMy45MDUtMy45MDUtMTAuMjM3LTMuOTA1LTE0LjE0MiwwYy0zLjkwNSwzLjkwNi0zLjkwNSwxMC4yMzgsMCwxNC4xNDNsOS44NzcsOS44NzcNCgkJCWMxLjk1MiwxLjk1Myw0LjUxMiwyLjkyOSw3LjA3MSwyLjkyOXM1LjExOS0wLjk3Niw3LjA3MS0yLjkyOUM3OS45MjcsMzkuODQzLDc5LjkyNywzMy41MTEsNzYuMDIxLDI5LjYwNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQ1OS41NCw0NjguMzg5Yy0wLjEyOS0wLjY0LTAuMzItMS4yNy0wLjU3LTEuODdjLTAuMjUtMC42LTAuNTYtMS4xOC0wLjkyLTEuNzJjLTAuMzYtMC41NS0wLjc4LTEuMDYtMS4yNC0xLjUzDQoJCQljLTAuNDYtMC40Ni0wLjk3LTAuODctMS41Mi0xLjI0Yy0wLjU0LTAuMzYtMS4xMi0wLjY3LTEuNzMtMC45MmMtMC41OTktMC4yNS0xLjIyOS0wLjQ0LTEuODctMC41N2MtMS4yOS0wLjI2LTIuNjItMC4yNi0zLjkwOSwwDQoJCQljLTAuNjMxLDAuMTMtMS4yNjEsMC4zMi0xLjg3LDAuNTdjLTAuNjAxLDAuMjUtMS4xODEsMC41Ni0xLjcyMSwwLjkyYy0wLjU1LDAuMzctMS4wNiwwLjc4LTEuNTIsMS4yNA0KCQkJYy0wLjQ2LDAuNDctMC44OCwwLjk4LTEuMjUsMS41M2MtMC4zNiwwLjU0LTAuNjcsMS4xMi0wLjkyLDEuNzJjLTAuMjUsMC42LTAuNDQsMS4yMy0wLjU3LDEuODcNCgkJCWMtMC4xMywwLjY1MS0wLjE5LDEuMzAxLTAuMTksMS45NjFjMCwwLjY1LDAuMDYsMS4zMSwwLjE5LDEuOTVjMC4xMywwLjY0LDAuMzIsMS4yNywwLjU3LDEuODdjMC4yNSwwLjYsMC41NiwxLjE4LDAuOTIsMS43Mw0KCQkJYzAuMzcsMC41NCwwLjc5LDEuMDYsMS4yNSwxLjUyYzAuNDYsMC40NiwwLjk3LDAuODgsMS41MiwxLjI0YzAuNTQsMC4zNiwxLjEyLDAuNjcsMS43MjEsMC45MmMwLjYwOSwwLjI1LDEuMjM5LDAuNDQsMS44NywwLjU3DQoJCQljMC42NSwwLjEzLDEuMzEsMC4yLDEuOTYsMC4yYzAuNjUsMCwxLjMxLTAuMDcsMS45NDktMC4yYzAuNjQxLTAuMTMsMS4yNy0wLjMyLDEuODctMC41N2MwLjYxLTAuMjUsMS4xOS0wLjU2LDEuNzMtMC45Mg0KCQkJYzAuNTUtMC4zNiwxLjA2LTAuNzgsMS41Mi0xLjI0YzAuNDYtMC40NiwwLjg4LTAuOTgsMS4yNC0xLjUyYzAuMzYxLTAuNTUsMC42Ny0xLjEzLDAuOTItMS43M2MwLjI1LTAuNiwwLjQ0LTEuMjMsMC41Ny0xLjg3DQoJCQlzMC4yLTEuMywwLjItMS45NUM0NTkuNzQsNDY5LjY4OSw0NTkuNjcsNDY5LjAzOSw0NTkuNTQsNDY4LjM4OXoiLz4NCiAgICAgICAgPHBhdGggZD0iTTQwOS43MzksNDYwLjM0Nkg2Mi4xMzhjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBzNC40NzcsMTAsMTAsMTBoMzQ3LjZjNS41MjMsMCwxMC00LjQ3NywxMC4wMDEtMTANCgkJCUM0MTkuNzM5LDQ2NC44MjMsNDE1LjI2MSw0NjAuMzQ2LDQwOS43MzksNDYwLjM0NnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTUwMS41NjMsNDI3LjkzMWgtNi44MDljLTMuODA2LTIxLjMxMi0yMi40NzYtMzcuNTQtNDQuODY0LTM3LjU0Yy0zLjMsMC02LjU5MSwwLjM2Mi05LjgwMywxLjA2N1YyOTMuMjkNCgkJCWMzNi40ODItNC45MDIsNjQuNzA0LTM2LjIzNiw2NC43MDQtNzQuMDM3YzAtMTkuNzA5LTcuNzgxLTM4LjUzMS0yMS41MjQtNTIuNDY0YzAuMTg2LTEuODE0LDAuMjc4LTMuNjQxLDAuMjc4LTUuNDY4DQoJCQljMC0yOS40NzctMjMuOTgxLTUzLjQ1OC01My40NTgtNTMuNDU4Yy0yOS40NzcsMC01My40NTgsMjMuOTgyLTUzLjQ1OCw1My40NThjMCwxLjgyNywwLjA5MywzLjY1MywwLjI3Nyw1LjQ2Nw0KCQkJYy0xMy43NDEsMTMuOTM0LTIxLjUyMywzMi43NTYtMjEuNTIzLDUyLjQ2NWMwLDM3LjgwMiwyOC4yMjMsNjkuMTM2LDY0LjcwNCw3NC4wMzd2ODkuNjJjLTQuNjg1LTEuNjMyLTkuNzE2LTIuNTItMTQuOTUxLTIuNTINCgkJCWMtMjUuMTI5LDAtNDUuNTczLDIwLjQ0NC00NS41NzMsNDUuNTc0djEuOTY4aC04LjUwNnYtMzUuMTNoMC4wMDFjNS41MjIsMCwxMC00LjQ3NywxMC0xMHYtNDNjMC01LjUyMy00LjQ3OC0xMC0xMC0xMGgtMC4wMDENCgkJCXYtNDcuMzI5YzAtMi44NDQtMS4yMTEtNS41NTMtMy4zMy03LjQ1TDMxNi4yNywyNDYuODZjLTMuNzk3LTMuMzk5LTkuNTQzLTMuMzk5LTEzLjM0LDBsLTI0Ljc4NywyMi4xOTFsLTI0Ljc4OC0yMi4xOTENCgkJCWMtMy43OTctMy4zOTgtOS41NDMtMy4zOTgtMTMuMzQsMGwtMjQuNzg4LDIyLjE5MWwtMjQuNzg4LTIyLjE5MWMtMy43OTctMy4zOTktOS41NDMtMy4zOTktMTMuMzQsMC4wMDFsLTI0Ljc4NywyMi4xOTENCgkJCWwtMjQuNzg4LTIyLjE5MWMtMy43OTctMy4zOTgtOS41NDMtMy4zOTgtMTMuMzQsMEw4OS4zOTgsMjY5LjA1TDY0LjYxLDI0Ni44NTljLTMuNzk2LTMuMzk5LTkuNTQzLTMuMzk5LTEzLjM0LTAuMDAxDQoJCQlsLTMxLjQ1OCwyOC4xNjNjLTIuMTE5LDEuODk3LTMuMzMsNC42MDYtMy4zMyw3LjQ1MXY0Ny4zMjloLTAuMDAxYy01LjUyMywwLTEwLDQuNDc3LTEwLDEwdjQzYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoMC4wMDENCgkJCXYzNS4xM2gtNi4wNDRjLTUuNTIzLDAtMTAsNC40NzctMTAsMTBWNTAyYzAsNS41MjMsNC40NzcsMTAsMTAsMTBoNDkxLjEyM2M1LjUyMiwwLDEwLTQuNDc3LDEwLTEwdi02NC4wNjkNCgkJCUM1MTEuNTYzLDQzMi40MDgsNTA3LjA4NSw0MjcuOTMxLDUwMS41NjMsNDI3LjkzMXogTTQ0OS44OSw0MTAuMzkxYzExLjI5NiwwLDIwLjkwNSw3LjM2MiwyNC4yODEsMTcuNTRoLTIzLjQ2MnYtMS45NjgNCgkJCWMwLTUuNDQxLTAuOTU5LTEwLjY2Mi0yLjcxNi0xNS41MDRDNDQ4LjYyLDQxMC40MTQsNDQ5LjI1Myw0MTAuMzkxLDQ0OS44OSw0MTAuMzkxeiBNNDIwLjA4NywxODUuNTc0djMzLjExOGwtMTAuNDA3LTEwLjQwNw0KCQkJYy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBjLTMuOTA1LDMuOTA1LTMuOTA1LDEwLjIzNywwLDE0LjE0M2wyMy4yNTcsMjMuMjU3YzAuNDA3LDAuNDA2LDAuODM5LDAuNzcsMS4yOTMsMS4wOTENCgkJCXYyNi4yNjVjLTI1LjQwNS00LjcxMi00NC43MDQtMjcuMDM5LTQ0LjcwNC01My43ODljMC0xNS44MTYsNi44NDUtMzAuODU0LDE4Ljc3OC00MS4yNTZjMi43NC0yLjM4OCwzLjk2OS02LjA3NSwzLjIwOS05LjYyOQ0KCQkJYy0wLjQ5Mi0yLjI5OS0wLjc0MS00LjY3LTAuNzQxLTcuMDQ3YzAtMTguNDQ5LDE1LjAwOS0zMy40NTgsMzMuNDU4LTMzLjQ1OGMxOC40NDksMCwzMy40NTgsMTUuMDA5LDMzLjQ1OCwzMy40NTgNCgkJCWMwLDIuMzc4LTAuMjQ5LDQuNzQ4LTAuNzQxLDcuMDQ1Yy0wLjc2MiwzLjU1NSwwLjQ2Nyw3LjI0MywzLjIwOCw5LjYzMmMxMS45MzUsMTAuNDAzLDE4Ljc3OSwyNS40NCwxOC43NzksNDEuMjU2DQoJCQljMCwyNi43NS0xOS4yOTksNDkuMDc2LTQ0LjcwNCw1My43ODh2LTI2LjI2NWMwLjQ1My0wLjMyMiwwLjg4Ny0wLjY4NSwxLjI5My0xLjA5MWwyMy4yNTctMjMuMjU3DQoJCQljMy45MDUtMy45MDUsMy45MDUtMTAuMjM3LDAtMTQuMTQzYy0zLjkwNi0zLjkwNC0xMC4yMzYtMy45MDQtMTQuMTQzLDBsLTEwLjQwNywxMC40MDd2LTMzLjExOGMwLTUuNTIzLTQuNDc4LTEwLTEwLTEwDQoJCQlDNDI0LjU2NCwxNzUuNTc0LDQyMC4wODcsMTgwLjA1MSw0MjAuMDg3LDE4NS41NzR6IE0zNzkuNTYzLDQyNS45NjNjMC0xNC4xMDIsMTEuNDcyLTI1LjU3NCwyNS41NzMtMjUuNTc0DQoJCQljMTQuMTAyLDAsMjUuNTczLDExLjQ3MiwyNS41NzMsMjUuNTc0djEuOTY4aC01MS4xNDZWNDI1Ljk2M3ogTTI4OC4xNDMsMjg2Ljk0MWwyMS40NTctMTkuMjFsMjEuNDU3LDE5LjIxVjMyOS44aC00Mi45MTRWMjg2Ljk0MQ0KCQkJeiBNMjI1LjIyNywyODYuOTQxbDIxLjQ1OC0xOS4yMWwyMS40NTcsMTkuMjFWMzI5LjhoLTQyLjkxNVYyODYuOTQxeiBNMTYyLjMxMywyODYuOTQxbDIxLjQ1Ny0xOS4yMWwyMS40NTgsMTkuMjFWMzI5LjhoLTQyLjkxNQ0KCQkJVjI4Ni45NDF6IE05OS4zOTgsMjg2Ljk0MWwyMS40NTctMTkuMjFsMjEuNDU4LDE5LjIxVjMyOS44SDk5LjM5OFYyODYuOTQxeiBNMzYuNDgzLDI4Ni45NDFsMjEuNDU3LTE5LjIxbDIxLjQ1NywxOS4yMVYzMjkuOA0KCQkJSDM2LjQ4M1YyODYuOTQxeiBNMjYuNDgyLDM0OS44MDFoMzE0LjU3NXYyM0gyNi40ODJWMzQ5LjgwMXogTTMzMS4wNTcsMzkyLjgwMXYzNS4xM2gtNDIuOTE0di0zNS4xM0gzMzEuMDU3eiBNMjY4LjE0MywzOTIuODAxDQoJCQl2MzUuMTNoLTQyLjkxNXYtMzUuMTNIMjY4LjE0M3ogTTIwNS4yMjcsMzkyLjgwMXYzNS4xM2gtNDIuOTE1di0zNS4xM0gyMDUuMjI3eiBNMTQyLjMxMywzOTIuODAxdjM1LjEzSDk5LjM5OHYtMzUuMTNIMTQyLjMxM3oNCgkJCSBNNzkuMzk4LDM5Mi44MDF2MzUuMTNIMzYuNDgzdi0zNS4xM0g3OS4zOTh6IE0yMC40MzgsNDkydi00NC4wNjloNDcxLjEyM1Y0OTJIMjAuNDM4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjc4LjQ4NywxMjcuODQzYy0wLjU1NiwwLTEuMTEyLDAuMDExLTEuNjY4LDAuMDMzYy03LjU0My0xNC40Mi0yMi41MTktMjMuOTIzLTM4Ljg5NC0yMy45MjMNCgkJCWMtMjAuNTg3LDAtMzguMDQ3LDE0LjY4My00Mi43NzMsMzQuMzQ2Yy0xOS43ODMsMS45My0zNS4zMDksMTkuMDAxLTM1LjMwOSwzOS43MDdjMCwyMS45OTQsMTcuNTE3LDM5Ljg4NywzOS4wNDgsMzkuODg3aDc5LjU5Ng0KCQkJYzI0LjI4NSwwLDQ0LjA0MS0yMC4xOTgsNDQuMDQxLTQ1LjAyNUMzMjIuNTI3LDE0OC4wNDEsMzAyLjc3MSwxMjcuODQzLDI3OC40ODcsMTI3Ljg0M3ogTTI3OC40ODcsMTk3Ljg5M2gtNzkuNTk2DQoJCQljLTEwLjUwMywwLTE5LjA0OC04LjkyMS0xOS4wNDgtMTkuODg3YzAtMTAuOTY3LDguNTQ1LTE5Ljg4OCwxOS4wNDgtMTkuODg4YzEuMDU2LDAsMi4xNDgsMC4wOTksMy4yNDQsMC4yOTYNCgkJCWMyLjg5MywwLjUxNiw1Ljg3LTAuMjY3LDguMTM1LTIuMTQxYzIuMjY1LTEuODc1LDMuNTktNC42NTIsMy42MjMtNy41OTJjMC4xNTMtMTMuNjM1LDEwLjkzMy0yNC43MjgsMjQuMDMyLTI0LjcyOA0KCQkJYzEwLjYzOCwwLDE5Ljg3Nyw3LjEwOCwyMi45ODgsMTcuNjg5YzEuNTExLDUuMTM1LDYuNzk0LDguMTczLDExLjk5NCw2Ljg4NmMxLjgzOC0wLjQ1NCwzLjcxNS0wLjY4NCw1LjU4LTAuNjg0DQoJCQljMTMuMjU2LDAsMjQuMDQxLDExLjIyNiwyNC4wNDEsMjUuMDI1QzMwMi41MjcsMTg2LjY2NywyOTEuNzQzLDE5Ny44OTMsMjc4LjQ4NywxOTcuODkzeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Gallery:Zxe,Garage:Xxe,Garden:Kxe,"Ground Floor":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAyIDUxMi4wMDIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIHN0cm9rZT0iIiBkPSJNNDc3LjQ0NCw0NzEuMDM0aC0zLjgzM2MtMy42NzktMTQuNDM1LTE1LjkyNi0yNS4zNTYtMzAuODU5LTI3LjI0MVYzMDguNTg3aDIuMTM4YzkuOTE3LDAsMTcuOTg1LTguMDY4LDE3Ljk4NS0xNy45ODYNCgkJCWMwLTkuOTE3LTguMDY4LTE3Ljk4NS0xNy45ODUtMTcuOTg1aC0yLjEzOFYxMjkuMzgyaDkuODE1YzcuMTk3LDAsMTMuMDUyLTUuODU1LDEzLjA1Mi0xMy4wNTJ2LTE0LjkwNA0KCQkJYzAtMC4wMzMtMC4wMDUtMC4wNjUtMC4wMDUtMC4wOThjLTAuMDAxLTAuMDk4LTAuMDA5LTAuMTk2LTAuMDE1LTAuMjk0Yy0wLjAwOS0wLjE3MS0wLjAyMS0wLjM0Mi0wLjA0Mi0wLjUxDQoJCQljLTAuMDExLTAuMDg5LTAuMDI2LTAuMTc3LTAuMDQxLTAuMjY2Yy0wLjAyOS0wLjE4My0wLjA2NS0wLjM2NC0wLjEwOC0wLjU0MmMtMC4wMS0wLjA0LTAuMDE0LTAuMDgxLTAuMDI0LTAuMTIxTDQ0Ni4xMjMsMjUuNDINCgkJCWMtMS41NzQtNi4wNi03LjA0Ny0xMC4yOTMtMTMuMzA3LTEwLjI5M2gtNDkuMTA1Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3czMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDQ4LjQ2OGwxNi43MzQsNjQuNDQNCgkJCUgzMzUuMzcyTDI5Mi4zNDcsMjkuN2g0NS44NjZjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N2MwLTQuMDI1LTMuMjYyLTcuMjg3LTcuMjg3LTcuMjg3aC01NS41OTZsLTAuOTI2LTEuMzg3DQoJCQlDMjc1Ljk0OCw1LjEzNywyNjYuMzQyLDAsMjU1Ljk5NywwYy0xMC4zNDUsMC0xOS45NSw1LjEzNi0yNS42OTQsMTMuNzM5bC0wLjkyNywxLjM4OEg3OS4xNzgNCgkJCWMtNi4yNjEsMC0xMS43MzMsNC4yMzItMTMuMzA3LDEwLjI5M0w0Ni42MDksOTkuNTk1Yy0wLjAxLDAuMDQtMC4wMTQsMC4wODEtMC4wMjQsMC4xMjFjLTAuMDQzLDAuMTc4LTAuMDc5LDAuMzU5LTAuMTA4LDAuNTQyDQoJCQljLTAuMDE0LDAuMDg5LTAuMDMsMC4xNzctMC4wNDEsMC4yNjZjLTAuMDIxLDAuMTY4LTAuMDMzLDAuMzM4LTAuMDQyLDAuNTFjLTAuMDA1LDAuMDk4LTAuMDE0LDAuMTk2LTAuMDE1LDAuMjk0DQoJCQljMCwwLjAzMy0wLjAwNSwwLjA2NS0wLjAwNSwwLjA5OHYxNC45MDRjMCw3LjE5Nyw1Ljg1NSwxMy4wNTIsMTMuMDUyLDEzLjA1Mmg5LjgxNXYxNDMuMjMzaC0yLjEzOA0KCQkJYy05LjkxNywwLTE3Ljk4NSw4LjA2OC0xNy45ODUsMTcuOTg1czguMDY4LDE3Ljk4NiwxNy45ODUsMTcuOTg2aDIuMTM4djQ2LjY5NmMwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQlzNy4yODctMy4yNjIsNy4yODctNy4yODd2LTQ2LjY5NmgzNDQuMzY0djEyOS4zMTFjLTAuMDU1LTAuMDMyLTAuMTEzLTAuMDYtMC4xNjktMC4wOTJjLTAuNzE0LTAuNDE1LTEuNDM5LTAuODEtMi4xNzYtMS4xODINCgkJCWMtMC4xNDQtMC4wNzMtMC4yOTEtMC4xMzktMC40MzUtMC4yMWMtMC42MTQtMC4zMDItMS4yMzUtMC41ODgtMS44NjMtMC44NTljLTAuMjEzLTAuMDkyLTAuNDI1LTAuMTgzLTAuNjM5LTAuMjcyDQoJCQljLTAuNzI3LTAuMy0xLjQ1OS0wLjU4NS0yLjIwMi0wLjg0NGMtMC4wNDQtMC4wMTUtMC4wODctMC4wMzMtMC4xMzEtMC4wNDljLTAuNzg0LTAuMjcxLTEuNTc4LTAuNTExLTIuMzc4LTAuNzM2DQoJCQljLTAuMjE5LTAuMDYyLTAuNDQtMC4xMTgtMC42Ni0wLjE3NmMtMC42NDItMC4xNjktMS4yODktMC4zMjMtMS45NC0wLjQ2MmMtMC4xODgtMC4wNC0wLjM3NS0wLjA4NS0wLjU2NC0wLjEyMw0KCQkJYy0wLjgxMi0wLjE2Mi0xLjYyOS0wLjMtMi40NTEtMC40MTRjLTAuMTc4LTAuMDI1LTAuMzU4LTAuMDQyLTAuNTM3LTAuMDY0Yy0wLjY3MS0wLjA4NC0xLjM0NS0wLjE1Mi0yLjAyMi0wLjIwNA0KCQkJYy0wLjIzNC0wLjAxOC0wLjQ2OC0wLjAzNi0wLjcwMi0wLjA1MWMtMC44NDItMC4wNTEtMS42ODUtMC4wODUtMi41MzMtMC4wODVjLTE1LjQ0NiwwLTI5LjY5OSw4LjYxLTM3LjA2MiwyMS45MTUNCgkJCWMtMC44NDYtMC4wMi0xLjY4NCwwLjAwMS0yLjUxNiwwLjA0NmMtMC4xOTUsMC4wMTEtMC4zODcsMC4wMzQtMC41ODEsMC4wNDhjLTAuNjM2LDAuMDQ3LTEuMjY4LDAuMTA3LTEuODk0LDAuMTkNCgkJCWMtMC4yMywwLjAzMS0wLjQ1OCwwLjA3MS0wLjY4NiwwLjEwN2MtMC41ODYsMC4wOTItMS4xNjgsMC4xOTctMS43NDQsMC4zMjFjLTAuMjM0LDAuMDUtMC40NjUsMC4xMDQtMC42OTcsMC4xNTkNCgkJCWMtMC41NzEsMC4xMzctMS4xMzUsMC4yODktMS42OTUsMC40NTdjLTAuMjE3LDAuMDY1LTAuNDM1LDAuMTI4LTAuNjUsMC4xOThjLTAuNTg4LDAuMTktMS4xNjcsMC40LTEuNzQsMC42MjQNCgkJCWMtMC4xNzEsMC4wNjctMC4zNDUsMC4xMjctMC41MTUsMC4xOTdjLTAuNzA1LDAuMjktMS4zOTksMC42MDItMi4wNzksMC45NDFjLTAuMDI4LDAuMDE0LTAuMDU4LDAuMDI2LTAuMDg2LDAuMDQNCgkJCWMtMC43MzMsMC4zNjktMS40NSwwLjc2Ni0yLjE1LDEuMTljLTAuMDY2LDAuMDQtMC4xMjksMC4wODYtMC4xOTUsMC4xMjdjLTAuNiwwLjM3LTEuMTg3LDAuNzU5LTEuNzYsMS4xNjkNCgkJCWMtMC4xODQsMC4xMzItMC4zNjEsMC4yNzItMC41NDIsMC40MDhjLTAuNDQ3LDAuMzM1LTAuODg4LDAuNjc3LTEuMzE2LDEuMDM2Yy0wLjIwNiwwLjE3Mi0wLjQwNywwLjM1MS0wLjYwOSwwLjUyOQ0KCQkJYy0wLjM5MSwwLjM0NS0wLjc3NCwwLjY5OC0xLjE0OCwxLjA2M2MtMC4yMDEsMC4xOTYtMC40MDEsMC4zOTQtMC41OTcsMC41OTZjLTAuMzY1LDAuMzc2LTAuNzE3LDAuNzYzLTEuMDY0LDEuMTU4DQoJCQljLTAuMTc4LDAuMjAzLTAuMzU5LDAuNDA0LTAuNTMzLDAuNjEyYy0wLjM2NywwLjQ0MS0wLjcxNywwLjg5Ny0xLjA2LDEuMzU5Yy0wLjEzMSwwLjE3Ni0wLjI2OSwwLjM0Ni0wLjM5NiwwLjUyNQ0KCQkJYy0wLjg4NSwxLjI0Ni0xLjY4OSwyLjU2LTIuMzkyLDMuOTQ0aC0zNS40NTdWMzQ2LjE4MWMwLTcuMTM1LTUuODA1LTEyLjkzOS0xMi45MzktMTIuOTM5aC03My4zNDkNCgkJCWMtNy4xMzUsMC0xMi45MzksNS44MDUtMTIuOTM5LDEyLjkzOXYxMjQuODUzaC02MC42MzljLTAuMTg4LTAuNDY5LTAuMzk5LTAuOTI1LTAuNjA1LTEuMzgzDQoJCQljLTAuMDg4LTAuMTk0LTAuMTY2LTAuMzk0LTAuMjU2LTAuNTg2Yy0wLjM1My0wLjc0OS0wLjcyOC0xLjQ4My0xLjEyOC0yLjIwMmMtMC4wNzUtMC4xMzUtMC4xNi0wLjI2My0wLjIzNi0wLjM5Nw0KCQkJYy0wLjMzMS0wLjU3Ny0wLjY3My0xLjE0Ny0xLjAzNC0xLjcwM2MtMC4xNTEtMC4yMzItMC4zMTEtMC40NTYtMC40NjctMC42ODVjLTAuMzA1LTAuNDQ4LTAuNjE2LTAuODkxLTAuOTQtMS4zMjQNCgkJCWMtMC4xODMtMC4yNDUtMC4zNzItMC40ODQtMC41NjItMC43MjRjLTAuMzItMC40MDUtMC42NDYtMC44MDMtMC45ODItMS4xOTNjLTAuMjAyLTAuMjM0LTAuNDA1LTAuNDY3LTAuNjEyLTAuNjk1DQoJCQljLTAuMzUyLTAuMzg4LTAuNzE0LTAuNzY2LTEuMDgxLTEuMTM4Yy0wLjIwNS0wLjIwNy0wLjQwNy0wLjQxNy0wLjYxNi0wLjYyYy0wLjQxOS0wLjQwNS0wLjg1Mi0wLjc5NC0xLjI5LTEuMTc4DQoJCQljLTAuMTcyLTAuMTUxLTAuMzM3LTAuMzA4LTAuNTExLTAuNDU1Yy0wLjYyMi0wLjUyNS0xLjI1OS0xLjAzMS0xLjkxNC0xLjUxM2MtMC4wNjctMC4wNDktMC4xMzctMC4wOTMtMC4yMDQtMC4xNDENCgkJCWMtMC41ODgtMC40MjYtMS4xODgtMC44MzYtMS44MDEtMS4yMjZjLTAuMjI1LTAuMTQ0LTAuNDU4LTAuMjc2LTAuNjg2LTAuNDE0Yy0wLjQ2Ny0wLjI4My0wLjkzOC0wLjU2Mi0xLjQxOC0wLjgyNA0KCQkJYy0wLjI3LTAuMTQ4LTAuNTQ1LTAuMjg3LTAuODE5LTAuNDI4Yy0wLjQ1Ni0wLjIzNC0wLjkxNi0wLjQ2MS0xLjM4My0wLjY3NmMtMC4yOS0wLjEzNC0wLjU4MS0wLjI2NC0wLjg3NS0wLjM5MQ0KCQkJYy0wLjQ3My0wLjIwMy0wLjk1My0wLjM5NC0xLjQzNi0wLjU3OGMtMC4yOTEtMC4xMS0wLjU3OS0wLjIyMy0wLjg3My0wLjMyNmMtMC41MjgtMC4xODYtMS4wNjUtMC4zNTMtMS42MDQtMC41MTQNCgkJCWMtMC4yNTYtMC4wNzctMC41MDgtMC4xNjItMC43NjYtMC4yMzNjLTAuOC0wLjIyMS0xLjYwOC0wLjQyMS0yLjQyOC0wLjU4OGMtMC41MjctMC43MTgtMS4wNzQtMS40MTgtMS42MzctMi4wOTkNCgkJCWMtMC4xOTMtMC4yMzMtMC4zOTgtMC40NTItMC41OTUtMC42ODFjLTAuMzc4LTAuNDQtMC43NTQtMC44ODItMS4xNDctMS4zMDZjLTAuMjQ2LTAuMjY1LTAuNTA1LTAuNTE0LTAuNzU3LTAuNzcyDQoJCQljLTAuMzYtMC4zNjktMC43MTYtMC43NDQtMS4wODctMS4xYy0wLjI3Ny0wLjI2NS0wLjU2Ni0wLjUxNC0wLjg0OS0wLjc3MmMtMC4zNjItMC4zMy0wLjcxOS0wLjY2NC0xLjA5MS0wLjk4MQ0KCQkJYy0wLjMwMS0wLjI1Ny0wLjYxNC0wLjQ5OC0wLjkyMS0wLjc0N2MtMC4zNjgtMC4yOTgtMC43MzItMC42LTEuMTA4LTAuODg2Yy0wLjMyMi0wLjI0NC0wLjY1NC0wLjQ3Mi0wLjk4MS0wLjcwNw0KCQkJYy0wLjM3Ni0wLjI3LTAuNzQ5LTAuNTQ0LTEuMTMzLTAuODAxYy0wLjMzOS0wLjIyNy0wLjY4Ny0wLjQzOS0xLjAzMS0wLjY1N2MtMC4zODctMC4yNDUtMC43NzEtMC40OTMtMS4xNjQtMC43MjUNCgkJCWMtMC4zNTMtMC4yMDktMC43MTUtMC40MDItMS4wNzQtMC42MDFjLTAuMzk3LTAuMjItMC43OTItMC40NDMtMS4xOTYtMC42NTFjLTAuMzY4LTAuMTktMC43NDItMC4zNjQtMS4xMTUtMC41NDQNCgkJCWMtMC40MDYtMC4xOTUtMC44MTEtMC4zOTMtMS4yMjQtMC41NzZjLTAuMzgtMC4xNjktMC43NjUtMC4zMjMtMS4xNS0wLjQ4MmMtMC40MTctMC4xNzEtMC44MzItMC4zNDQtMS4yNTUtMC41MDMNCgkJCWMtMC4zODktMC4xNDctMC43ODQtMC4yOC0xLjE3OC0wLjQxNmMtMC40MjctMC4xNDctMC44NTQtMC4yOTYtMS4yODYtMC40M2MtMC4zOTgtMC4xMjQtMC44MDEtMC4yMzYtMS4yMDQtMC4zNDkNCgkJCWMtMC40MzctMC4xMjMtMC44NzMtMC4yNDYtMS4zMTQtMC4zNTZjLTAuNDA3LTAuMTAxLTAuODE3LTAuMTkxLTEuMjI3LTAuMjgxYy0wLjQ0NS0wLjA5OC0wLjg5LTAuMTk0LTEuMzM4LTAuMjc5DQoJCQljLTAuNDE0LTAuMDc4LTAuODMxLTAuMTQ1LTEuMjQ4LTAuMjEyYy0wLjQ1My0wLjA3Mi0wLjkwNS0wLjE0My0xLjM2MS0wLjIwMmMtMC40Mi0wLjA1NC0wLjg0Mi0wLjA5OC0xLjI2NC0wLjE0MQ0KCQkJYy0wLjQ2LTAuMDQ3LTAuOTIxLTAuMDktMS4zODUtMC4xMjJjLTAuNDI0LTAuMDMtMC44NS0wLjA1MS0xLjI3Ni0wLjA2OWMtMC4yNjktMC4wMTItMC41MzQtMC4wMzYtMC44MDQtMC4wNDN2LTI5Ljg1MQ0KCQkJYzAtNC4wMjQtMy4yNjItNy4yODctNy4yODctNy4yODdjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODd2MzEuODU2Yy0xNy4wNTMsNS4yNzktMjkuODM5LDIwLjM1Ni0zMS43NSwzOC42MjNoLTIuOTQyDQoJCQljLTExLjI5NCwwLTIwLjQ4Myw5LjE4OS0yMC40ODMsMjAuNDgzczkuMTg5LDIwLjQ4MywyMC40ODMsMjAuNDgzaDQ0Mi44OTRjMTEuMjk0LDAsMjAuNDgzLTkuMTg5LDIwLjQ4My0yMC40ODMNCgkJCUM0OTcuOTI3LDQ4MC4yMjMsNDg4LjczOCw0NzEuMDM0LDQ3Ny40NDQsNDcxLjAzNHogTTIzOS4zMzMsMjYuNDZjMC0wLjAwMSwwLjAwMS0wLjAwMSwwLjAwMS0wLjAwMWwzLjA4OS00LjYyNw0KCQkJYzMuMDM0LTQuNTQ1LDguMTA5LTcuMjU4LDEzLjU3NC03LjI1OGM1LjQ2NSwwLDEwLjU0LDIuNzEzLDEzLjU3NCw3LjI1OWw0OC4yNzgsNzIuMzA4aC01LjIwMmwtNDYuMTAzLTY5LjA1Mw0KCQkJYy0yLjM1OC0zLjUzMS02LjMtNS42MzktMTAuNTQ2LTUuNjM5Yy00LjI0NiwwLTguMTg5LDIuMTA4LTEwLjU0Niw1LjYzOUwxOTkuMzQ3LDk0LjE0aC01LjIwMmw4Ljc3OC0xMy4xNDhMMjM5LjMzMywyNi40NnoNCgkJCSBNMjk1LjEyNCw5NC4xNEgyMTYuODdsMzkuMTI3LTU4LjYwNEwyOTUuMTI0LDk0LjE0eiBNNzkuODE2LDI5LjdoMTM5LjgzMUwyMDkuNTEsNDQuODgzTDE3Ni42MjIsOTQuMTRINjMuMDgxTDc5LjgxNiwyOS43eg0KCQkJIE02MC45NDgsMTE0LjgwOXYtNi4wOTZoMzkwLjA5OHY2LjA5Nkg2MC45NDh6IE00MjguMTc5LDEyOS4zODJ2MTQzLjIzM0g4My44MTVWMTI5LjM4Mkg0MjguMTc5eiBNNjcuMTA0LDI5NC4wMTQNCgkJCWMtMS44ODEsMC0zLjQxMi0xLjUzMS0zLjQxMi0zLjQxM2MwLTEuODgxLDEuNTMtMy40MTIsMy40MTItMy40MTJINDQ0Ljg5YzEuODgxLDAsMy40MTIsMS41MzEsMy40MTIsMy40MTINCgkJCWMwLDEuODgyLTEuNTMsMy40MTMtMy40MTIsMy40MTNINjcuMTA0eiBNMzYwLjQxNiw0NzAuODkzYzAuMzE3LTAuMTg3LDAuNjM4LTAuMzY4LDAuOTY3LTAuNTM1DQoJCQljMC4xNTYtMC4wNzksMC4zMTYtMC4xNDksMC40NzQtMC4yMjNjMC4yOC0wLjEzMSwwLjU2Mi0wLjI1NiwwLjg1LTAuMzcxYzAuMTgzLTAuMDczLDAuMzY4LTAuMTQyLDAuNTUzLTAuMjA4DQoJCQljMC4yNzItMC4wOTgsMC41NDctMC4xODcsMC44MjQtMC4yNzFjMC4yMDEtMC4wNiwwLjQwMi0wLjEyMSwwLjYwNS0wLjE3NGMwLjI3Ni0wLjA3MiwwLjU1Ni0wLjEzMiwwLjgzNi0wLjE5DQoJCQljMC4yMDctMC4wNDMsMC40MTEtMC4wOTEsMC42Mi0wLjEyNmMwLjM1Ni0wLjA2LDAuNzE4LTAuMTAyLDEuMDgxLTAuMTM5YzAuMTc2LTAuMDE4LDAuMzUyLTAuMDM5LDAuNTI5LTAuMDUyDQoJCQljMC40NDYtMC4wMzEsMC44OTYtMC4wNDcsMS4zNS0wLjA0M2MwLjMzNywwLjAwMywwLjY3OSwwLjAzMiwxLjAyLDAuMDU2YzAuMjM0LDAuMDE2LDAuNDY3LDAuMDIsMC43MDIsMC4wNDYNCgkJCWMwLjU3MiwwLjA2NSwxLjE0NiwwLjE1NSwxLjcxOSwwLjI3OWMzLjUwOSwwLjc1Niw3LjA0Ny0xLjE1NSw4LjMzNy00LjUwN2M0LjA5Mi0xMC42MzksMTQuNDk2LTE3Ljc4NywyNS44OTEtMTcuNzg3DQoJCQljNy45NSwwLDE1LjUzMywzLjQyOCwyMC44MDYsOS40MDZjMC4yMSwwLjIzOCwwLjQzMywwLjQ2LDAuNjY5LDAuNjY2YzAuMDEzLDAuMDExLDAuMDI4LDAuMDIsMC4wNDEsMC4wMzINCgkJCWMwLjkzMiwwLjgwNCwyLjA0MywxLjM1NSwzLjIzLDEuNjA4YzAuOTAzLDAuMTkzLDEuODQ4LDAuMjE2LDIuNzg3LDAuMDUxYzEwLjQxNi0xLjgzMSwxOS45NjQsMy44NjgsMjMuOTIyLDEyLjYyNGgtOTguMDYxDQoJCQlDMzYwLjI1LDQ3MC45ODUsMzYwLjMzNCw0NzAuOTQyLDM2MC40MTYsNDcwLjg5M3ogTTI5MS4wMzgsMzQ3LjgxNXYxMjMuMjE5aC03MC4wODJWMzQ3LjgxNUgyOTEuMDM4eiBNNzcuNzk3LDQ0NS4zNTINCgkJCWMwLjc2Ny0wLjEyMSwxLjUzNi0wLjIxNSwyLjMwNS0wLjI3OWMwLjA2Ni0wLjAwNSwwLjEzMi0wLjAwOSwwLjE5OC0wLjAxNGMwLjc4NC0wLjA2LDEuNTY3LTAuMDk2LDIuMzQzLTAuMDk2DQoJCQljMTAuNjg5LDAsMjAuNDY1LDUuNDI0LDI2LjE1LDE0LjUwOWMxLjE4OCwxLjg5OSwzLjE4NSwzLjE0Nyw1LjQxNCwzLjM4MWMwLjUyMywwLjA1NSwxLjAzOCwwLjEzNSwxLjU0OSwwLjIyNg0KCQkJYzAuMTE1LDAuMDIsMC4yMywwLjA0MSwwLjM0NSwwLjA2M2MwLjUsMC4wOTcsMC45OTUsMC4yMDgsMS40ODMsMC4zMzhjMC4wNjMsMC4wMTcsMC4xMjUsMC4wMzcsMC4xODksMC4wNTUNCgkJCWMwLjQ0NCwwLjEyMywwLjg4MSwwLjI2MSwxLjMxMywwLjQxMWMwLjA5OSwwLjAzNCwwLjE5OSwwLjA2NywwLjI5OCwwLjEwM2MwLjQ2NywwLjE2OSwwLjkyNywwLjM1MywxLjM3OSwwLjU1Mw0KCQkJYzAuMDg4LDAuMDM5LDAuMTc1LDAuMDgxLDAuMjYzLDAuMTIyYzAuNDAzLDAuMTg1LDAuOCwwLjM4LDEuMTksMC41ODhjMC4wNzQsMC4wMzksMC4xNDgsMC4wNzYsMC4yMjIsMC4xMTYNCgkJCWMwLjQzMSwwLjIzNiwwLjg1MiwwLjQ4OCwxLjI2NSwwLjc1MmMwLjA5NCwwLjA2LDAuMTg3LDAuMTIyLDAuMjgsMC4xODRjMC4zODgsMC4yNTcsMC43NjksMC41MjMsMS4xMzksMC44MDMNCgkJCWMwLjAzMiwwLjAyNCwwLjA2NiwwLjA0NywwLjA5OCwwLjA3MmMwLjM5MiwwLjMsMC43NywwLjYxNywxLjE0MSwwLjk0M2MwLjA4NywwLjA3NywwLjE3NCwwLjE1NCwwLjI2LDAuMjMyDQoJCQljMC4zNjUsMC4zMzEsMC43MjIsMC42NzEsMS4wNjQsMS4wMjdjMC4wMjksMC4wMywwLjA1NiwwLjA2MiwwLjA4NCwwLjA5MmMwLjMxOSwwLjMzNiwwLjYyNSwwLjY4MywwLjkyMywxLjAzOQ0KCQkJYzAuMDcyLDAuMDg2LDAuMTQ1LDAuMTcyLDAuMjE2LDAuMjZjMC4wNTMsMC4wNjYsMC4xMDEsMC4xMzYsMC4xNTQsMC4yMDJINTIuMTgxQzU0LjIyOSw0NTcuODY4LDY0LjY0Myw0NDcuNDM5LDc3Ljc5Nyw0NDUuMzUyeg0KCQkJIE00NzcuNDQ0LDQ5Ny40MjdIMzQuNTVjLTMuMjU5LDAtNS45MS0yLjY1MS01LjkxLTUuOTFjMC0zLjI1OSwyLjY1MS01LjkxLDUuOTEtNS45MWg0NDIuODk0YzMuMjU5LDAsNS45MSwyLjY1MSw1LjkxLDUuOTENCgkJCUM0ODMuMzU0LDQ5NC43NzYsNDgwLjcwMyw0OTcuNDI3LDQ3Ny40NDQsNDk3LjQyN3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgIGQ9Ik0xODYuMjEzLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzN2MtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4OCw3LjI4N2g4Ni43OWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkzLjUsMjM0LjgzNSwxOTAuMjM4LDIzMS41NzIsMTg2LjIxMywyMzEuNTcyeiBNMTY4LjMwMywyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIG9wYWNpdHk9IjAuMjUiICBkPSJNMjk5LjY2OCwyMzEuNTcyaC0zLjMzOHYtNjUuNzQ2YzAtNS43MjQtNC42NTctMTAuMzgtMTAuMzgtMTAuMzhoLTU5LjM1NWMtNS43MjQsMC0xMC4zOCw0LjY1Ny0xMC4zOCwxMC4zOHY2NS43NDYNCgkJCWgtMy4zMzhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMC4wMDEsNC4wMjQsMy4yNjMsNy4yODcsNy4yODcsNy4yODdoODYuNzkxYzQuMDI1LDAsNy4yODctMy4yNjIsNy4yODctNy4yODcNCgkJCUMzMDYuOTU1LDIzNC44MzUsMzAzLjY5MywyMzEuNTcyLDI5OS42NjgsMjMxLjU3MnogTTI4MS43NTgsMjMxLjU3M2gtNTAuOTd2LTYxLjU1NGg1MC45N1YyMzEuNTczeiIvPg0KICAgICAgICA8cGF0aCBvcGFjaXR5PSIwLjI1IiAgZD0iTTQxMi41NzIsMjMxLjU3MmgtMy4zMzh2LTY1Ljc0NmMwLTUuNzI0LTQuNjU3LTEwLjM4LTEwLjM3OS0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDg2Ljc5MWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDNDE5Ljg1OSwyMzQuODM1LDQxNi41OTcsMjMxLjU3Miw0MTIuNTcyLDIzMS41NzJ6IE0zOTQuNjYxLDIzMS41NzNoLTUwLjk3di02MS41NTRoNTAuOTdWMjMxLjU3M3oiLz4NCiAgICAgICAgPHBhdGggZD0iTTE4Mi44MTMsNDEzLjgzM2gtMC41Mjh2LTYwLjA0NWMwLTUuNTY2LTQuNTI5LTEwLjA5NS0xMC4wOTUtMTAuMDk1aC01My44ODZjLTUuNTY2LDAtMTAuMDk1LDQuNTI5LTEwLjA5NSwxMC4wOTV2NjAuMDQ1DQoJCQloLTAuNTI4Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3YzAsNC4wMjUsMy4yNjIsNy4yODcsNy4yODcsNy4yODdoNy44MTRoNTkuNTA0aDcuODE0YzQuMDI1LDAsNy4yODctMy4yNjIsNy4yODctNy4yODcNCgkJCUMxOTAuMSw0MTcuMDk1LDE4Ni44MzgsNDEzLjgzMywxODIuODEzLDQxMy44MzN6IE0xNjcuNzEyLDQxMy44MzNoLTQ0LjkzMXYtNTUuNTY3aDQ0LjkzMVY0MTMuODMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNNDA0LjMxNCw0MTMuODMzaC0wLjUyOHYtNjAuMDQ1YzAtNS41NjYtNC41MjktMTAuMDk1LTEwLjA5NS0xMC4wOTVoLTUzLjg4NmMtNS41NjYsMC0xMC4wOTYsNC41MjktMTAuMDk2LDEwLjA5NXY2MC4wNDUNCgkJCWgtMC41MjhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMCw0LjAyNSwzLjI2Miw3LjI4Nyw3LjI4Nyw3LjI4N2g3LjgxNEgzOTYuNWg3LjgxNGM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDNDExLjYwMSw0MTcuMDk1LDQwOC4zMzksNDEzLjgzMyw0MDQuMzE0LDQxMy44MzN6IE0zODkuMjEzLDQxMy44MzNoLTQ0LjkzMnYtNTUuNTY3aDQ0LjkzMlY0MTMuODMzeiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjc2LjU0NSw0MDUuMDg5Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3djEyLjYzYzAsNC4wMjQsMy4yNjIsNy4yODcsNy4yODcsNy4yODcNCgkJCWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3di0xMi42M0MyODMuODMyLDQwOC4zNTIsMjgwLjU3LDQwNS4wODksMjc2LjU0NSw0MDUuMDg5eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Guest Bathroom":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02My42MTggNjItMi43MTgtNS40NDdhMSAxIDAgMCAwIC0uOS0uNTUzaC0xdi0zMGgzdi0yaC0zdi0xOWE1LjAwNiA1LjAwNiAwIDAgMCAtNS01aC0xNGE1LjAwNiA1LjAwNiAwIDAgMCAtNSA1djFhMyAzIDAgMCAwIC0zIDN2MWgtNWEzIDMgMCAwIDAgLTMgM3YyYTEgMSAwIDAgMCAxIDFoMTV2LTJoLTE0di0xYTEgMSAwIDAgMSAxLTFoMThhMSAxIDAgMCAxIDEgMXYxaC00djJoNWExIDEgMCAwIDAgMS0xdi0yYTMgMyAwIDAgMCAtMy0zaC01di0xYTMgMyAwIDAgMCAtMy0zdi0xYTMgMyAwIDAgMSAzLTNoMTRhMyAzIDAgMCAxIDMgM3YxOWgtNXYyaDV2MTRoLTN2LTJoLTJ2Nmgydi0yaDN2MTRoLTFhMSAxIDAgMCAwIC0uOS41NTNsLTIuNzE4IDUuNDQ3aC01Mi4zODJ2Mmg2NHYtMnptLTI1LjYxOC01M3YxaC00di0xYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxem0xOC42MTggNDloMi43NjRsMiA0aC02Ljc2NHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI5IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDM0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDE4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDI0aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ1IDI4aDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQxIDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMzIDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDIyaDJ2NGgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDI4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDMyaDJ2NmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI1IDE4aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIgMzcuOTg3djE5LjAxM2ExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LTE5LjFsMi0uMDEzdjIuMTEzaDJ2LTZoLTJ2MS44ODJsLTE4LjAwNi4xMTguMDEyIDJ6bTIgMTIuMDEzaDEwdjFoLTEwem0wIDZ2LTNoMTB2M3ptMTAtOGgtMTB2LTEwLjAyNmwxMC0uMDY2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAgMjljNC40ODYgMCA4LTUuMjcxIDgtMTJzLTMuNTE0LTEyLTgtMTItOCA1LjI3MS04IDEyIDMuNTE0IDEyIDggMTJ6bTAtMjJjMy4yNTIgMCA2IDQuNTc5IDYgMTBzLTIuNzQ4IDEwLTYgMTAtNi00LjU3OS02LTEwIDIuNzQ4LTEwIDYtMTB6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im01LjA5NSAxMy41aDcuODF2MmgtNy44MXoiIHRyYW5zZm9ybT0ibWF0cml4KC43NjggLS42NCAuNjQgLjc2OCAtNy4xOTcgOS4xMjIpIi8+DQogICAgICAgIDxwYXRoIGQ9Im03LjA5NSAxOC41aDcuODF2MmgtNy44MXoiIHRyYW5zZm9ybT0ibWF0cml4KC43NjggLS42NCAuNjQgLjc2OCAtOS45MzQgMTEuNTYyKSIvPg0KICAgIDwvZz4NCjwvc3ZnPg==","Guest Room":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ1NiwzMjhhNDAuMDM3LDQwLjAzNywwLDAsMC04LC44MDQ5M1YxNDRhNy45NzUyMiw3Ljk3NTIyLDAsMCwwLTIuMzQzODEtNS42NTc0NywxNC42NDUzNSwxNC42NDUzNSwwLDAsMSwwLTIwLjY4NTA2QTcuOTc1MjIsNy45NzUyMiwwLDAsMCw0NDgsMTEyVjg4aDQwYTcuOTk5NDYsNy45OTk0NiwwLDAsMCw2Ljk0NTgtMTEuOTY4NzVsLTMyLTU2QTcuOTk4NjMsNy45OTg2MywwLDAsMCw0NTYsMTZIMzg0YTcuOTk4NjMsNy45OTg2MywwLDAsMC02Ljk0NTgsNC4wMzEyNWwtMzIsNTZBNy45OTk0Niw3Ljk5OTQ2LDAsMCwwLDM1Miw4OGg0MHYyNGE3Ljk3NTIyLDcuOTc1MjIsMCwwLDAsMi4zNDM4MSw1LjY1NzQ3LDE0LjY0NTM1LDE0LjY0NTM1LDAsMCwxLDAsMjAuNjg1MDZBNy45NzUyMiw3Ljk3NTIyLDAsMCwwLDM5MiwxNDRWMzIwSDMxMlYyODhoMjRhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgtOFYyNDhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLTgtOEgzMTJWMjE2aDQ4YTguMDAwMDgsOC4wMDAwOCwwLDAsMCw4LThWMTEyYTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThIMjA4YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LDh2OTZhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgsOGg0OHYyNEgyMDUuNDE2MDhsLTEzLjYwNTUzLTM0LjAxNDY1LTQuOTc0MTItMzkuNzkzQTU2LjUzMTQ4LDU2LjUzMTQ4LDAsMCwwLDE4NCwxNTQuMjZWODBBNjQsNjQsMCwwLDAsNTYsODB2NTIuODI4NjFBNTYuMDQxOTMsNTYuMDQxOTMsMCwwLDAsMzMuNTk0MjQsMTYxLjkxOWwtMTcuMTgzNiw1MS41NTA3OGE3Ljk5OCw3Ljk5OCwwLDAsMC0uMTcxODcsNC40NzA3bDUuNTkxMzcsMjIuMzY1NDhBNy45OTc0NSw3Ljk5NzQ1LDAsMCwwLDE2LDI0OFY0ODhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgsOEg0ODhhOC4wMDAwOCw4LjAwMDA4LDAsMCwwLDgtOFYzNjhBNDAuMDQ1NTIsNDAuMDQ1NTIsMCwwLDAsNDU2LDMyOFptMjQsNDB2NTZINDMyVjM2OGEyNCwyNCwwLDAsMSw0OCwwWk0yNjQsNDI0VjQwMGE4LjAwOTE3LDguMDA5MTcsMCwwLDEsOC04SDQwOGE4LjAwOTE3LDguMDA5MTcsMCwwLDEsOCw4djI0Wk05Niw0MjRWNDAwYTguMDA5MTcsOC4wMDkxNywwLDAsMSw4LThIMjQwYTguMDA5MTcsOC4wMDkxNywwLDAsMSw4LDh2MjRabTMyMC04MHYzMy4zNzYyMkEyMy44ODIxMiwyMy44ODIxMiwwLDAsMCw0MDgsMzc2SDI3MmEyMy45MDExMSwyMy45MDExMSwwLDAsMC0xNiw2LjEzMDg2QTIzLjkwMTExLDIzLjkwMTExLDAsMCwwLDI0MCwzNzZIMTA0YTIzLjg4MjEyLDIzLjg4MjEyLDAsMCwwLTgsMS4zNzYyMlYzNDRhOC4wMDkxNyw4LjAwOTE3LDAsMCwxLDgtOEg0MDhBOC4wMDkxNyw4LjAwOTE3LDAsMCwxLDQxNiwzNDRabTEwLjQ1MTcyLTIwOEg0MTMuNTQ4MjhhMzAuODQzNTEsMzAuODQzNTEsMCwwLDAsMC0xNmgxMi45MDM0NEEzMC44NDM1MSwzMC44NDM1MSwwLDAsMCw0MjYuNDUxNzIsMTM2Wk0zODguNjQyNTgsMzJoNjIuNzE0ODRsMjIuODU2OTQsNDBIMzY1Ljc4NTY0Wk00MzIsODh2MTZINDA4Vjg4Wm0tMjQsNjRoMjRWMzM2LjAyMmMtLjM2NjMzLjI3NTY0LS43MjQxOC41NjItMS4wODA2OS44NDk2MUEyNC4wNDM2OSwyNC4wNDM2OSwwLDAsMCw0MDgsMzIwWk0yOTYsMzIwSDEwNGEyNC4wNDM2OSwyNC4wNDM2OSwwLDAsMC0yMi45MTkzMSwxNi44NzE1OEEzOS45LDM5LjksMCwwLDAsMzIsMzM2LjAyMlYyODhIMjk2Wm0zMi00OEgzMlYyNTZIMzI4Wk03MiwyNDBINjRWMjI1LjU0MWw3LjMxNjg5LTE4LjI5Mkw3MiwyMDkuMjk3ODVabTg4LS4wMDAyNC4wMDAyNC4wMDAyNEgxNjBaTTIxNiwyMDBWMTIwSDM1MnY4MEgzMTJWMTY4YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThIMjY0YTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LDh2MzJabTU2LTI0aDI0djY0SDI3MlpNMTIwLDMyYTQ4LjA1NCw0OC4wNTQsMCwwLDEsNDgsNDh2NTAuODUzNTJhNTYuNzI1NjIsNTYuNzI1NjIsMCwwLDAtNy45MTk5Mi01LjczNTM2bC0xMS40NDE2NS02Ljg2NUEzMS43OTQwNSwzMS43OTQwNSwwLDAsMCwxNTIsMTA0VjgwYTguMDAwMDgsOC4wMDAwOCwwLDAsMC04LThoLTYuMTExMzNhMjAuODMwNTMsMjAuODMwNTMsMCwwLDEtMTguNzMzNC0xMS41NzgxMiw4LjAwMDY0LDguMDAwNjQsMCwwLDAtMTIuODEyLTIuMDc5MTFsLTE2LDE2QTguMDAwNzYsOC4wMDA3NiwwLDAsMCw4OCw4MHYyNGEzMS44MDE4OCwzMS44MDE4OCwwLDAsMCwyLjc1NzUxLDEyLjk3MTE5TDcyLDEyNS4wMVY4MEE0OC4wNTQsNDguMDU0LDAsMCwxLDEyMCwzMlptMTYsNzJhMTYsMTYsMCwwLDEtMzIsMFY4My4zMTM0OGw2Ljk0Njc4LTYuOTQ2MjlBMzYuNjk4MTYsMzYuNjk4MTYsMCwwLDAsMTM2LDg3Ljk1MzEyWm0tMzQuNzcxOTEsMjUuODkyMDlhMzEuOTE2MTMsMzEuOTE2MTMsMCwwLDAsMzYuNzA0NDcuNTk3MTdsMS4yMzcxOC43NDI0M0wxMjAsMTU1LjE5MzM2bC0xOS44NjYyNy0yNC44MzIyOFpNNDguNzczLDE2Ni45Nzk0OUE0MC4wMzUzOCw0MC4wMzUzOCwwLDAsMSw3MC45NjM4NywxNDIuODYyM2wxMy45MTE2Mi01Ljk2MTkxLDI4Ljg3NzQ0LDM2LjA5NjY4YTcuOTk5NDMsNy45OTk0MywwLDAsMCwxMi40OTQxNCwwTDE1Mi45OSwxMzkuNTY4MzZhMzkuNzI3NzksMzkuNzI3NzksMCwwLDEsMTcuOTY5NDgsMjguNjA4NGw1LjEwMjU0LDQwLjgxNTQzYTcuOTgyODEsNy45ODI4MSwwLDAsMCwuNTEwMjYsMS45Nzg1MUwxODguMTgzNTksMjQwSDE4MGwtMjAtMjYuNjY3VjIwMS44MDY2NGE1MC44MjMzOCw1MC44MjMzOCwwLDAsMCwxLjkzMjYyLTM3LjMwNzYybC0yLjM0MzI2LTcuMDI5MjktMTUuMTc4NzIsNS4wNjA1NCwyLjM0MzI3LDcuMDI5M2EzNC45NTUxMywzNC45NTUxMywwLDAsMS0xLjkwOTE4LDI2Ljg2MjMxQTcuOTk5MzQsNy45OTkzNCwwLDAsMCwxNDQsMjAwdjQwSDg4VjIwOGE4LjAwNjQzLDguMDA2NDMsMCwwLDAtLjQxMDY0LTIuNTMwMjdsLTgtMjRhOC4wMDAwOSw4LjAwMDA5LDAsMCwwLTE1LjAxNzA5LS40NDA0M2wtMTYsNDBBNy45OTcyMyw3Ljk5NzIzLDAsMCwwLDQ4LDIyNHYxNkgzOC4yNDYwOWwtNS45MTk5Mi0yMy42ODA2NlpNMzIsMzY4YTI0LDI0LDAsMCwxLDQ4LDB2NTZIMzJaTTQ4MCw0ODBIMzJWNDQwSDQ4MFoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Gym:qxe,Hall:eSe,"Home Theater":"PHN2ZyBoZWlnaHQ9IjUxMXB0IiB2aWV3Qm94PSIxIC00NCA1MTEuOTk4OTkgNTExIiB3aWR0aD0iNTExcHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICA8cGF0aCBkPSJtMjgyLjUxOTUzMSAzMzMuOTg4MjgxYy00LjE3MTg3NSAwLTcuNTQ2ODc1IDMuMzc4OTA3LTcuNTQ2ODc1IDcuNTQ2ODc1IDAgNC4xNjc5NjkgMy4zNzUgNy41NDY4NzUgNy41NDY4NzUgNy41NDY4NzVoMTE0LjMzOTg0NGM3LjA4MjAzMSAwIDEyLjg0Mzc1LTUuNzYxNzE5IDEyLjg0Mzc1LTEyLjg0NzY1NnYtMTkxLjkyOTY4N2MwLTcuMDgyMDMyLTUuNzYxNzE5LTEyLjg0NzY1Ny0xMi44NDM3NS0xMi44NDc2NTdoLTI4MS43MTg3NWMtNy4wODIwMzEgMC0xMi44NDM3NSA1Ljc2NTYyNS0xMi44NDM3NSAxMi44NDc2NTd2MTkxLjkyOTY4N2MwIDcuMDg1OTM3IDUuNzYxNzE5IDEyLjg0NzY1NiAxMi44NDM3NSAxMi44NDc2NTZoMTM3LjE5MTQwNmM0LjE2Nzk2OSAwIDcuNTQ2ODc1LTMuMzc4OTA2IDcuNTQ2ODc1LTcuNTQ2ODc1IDAtNC4xNjc5NjgtMy4zNzg5MDYtNy41NDY4NzUtNy41NDY4NzUtNy41NDY4NzVoLTEzNC45NDUzMTJ2LTE4Ny40Mzc1aDI3Ny4yMjY1NjJ2MTg3LjQzNzV6bTAgMCIvPg0KICAgIDxwYXRoIGQ9Im00OS4yNjE3MTkgODIuNzQyMTg4YzE1LjU4MjAzMSAwIDI4LjI2MTcxOS0xMi42Nzk2ODggMjguMjYxNzE5LTI4LjI1MzkwNyAwLTE1LjU4NTkzNy0xMi42Nzk2ODgtMjguMjYxNzE5LTI4LjI2MTcxOS0yOC4yNjE3MTktMTUuNTc4MTI1IDAtMjguMjUzOTA3IDEyLjY3NTc4Mi0yOC4yNTM5MDcgMjguMjYxNzE5IDAgMTUuNTc0MjE5IDEyLjY3NTc4MiAyOC4yNTM5MDcgMjguMjUzOTA3IDI4LjI1MzkwN3ptMC00MS40MjU3ODJjNy4yNjE3MTkgMCAxMy4xNjc5NjkgNS45MDYyNSAxMy4xNjc5NjkgMTMuMTcxODc1IDAgNy4yNTM5MDctNS45MDYyNSAxMy4xNjAxNTctMTMuMTY3OTY5IDEzLjE2MDE1Ny03LjI1MzkwNyAwLTEzLjE2MDE1Ny01LjkwNjI1LTEzLjE2MDE1Ny0xMy4xNjAxNTcgMC03LjI2NTYyNSA1LjkwNjI1LTEzLjE3MTg3NSAxMy4xNjAxNTctMTMuMTcxODc1em0wIDAiLz4NCiAgICA8cGF0aCBkPSJtNDYyLjczODI4MS41Yy0yNy4xNjQwNjIgMC00OS4yNjk1MzEgMjIuMTA1NDY5LTQ5LjI2OTUzMSA0OS4yNjk1MzF2NTYuMzA0Njg4Yy01LjY1MjM0NC0xLjM2NzE4OC02LjA0Mjk2OS0uNTM1MTU3LTU0LjMzMjAzMS0uNzc3MzQ0LTQuMTY0MDYzIDAtNy41NDI5NjkgMy4zODI4MTMtNy41NDI5NjkgNy41NDY4NzVzMy4zNzg5MDYgNy41NDY4NzUgNy41NDI5NjkgNy41NDY4NzVoNDcuNzIyNjU2YzcuNzMwNDY5IDAgMTMuOTE0MDYzIDYuMzA0Njg3IDEzLjkxNDA2MyAxMy45MTQwNjN2MjExLjkzMzU5M2MwIDcuNjY0MDYzLTYuMjQ2MDk0IDEzLjkxNDA2My0xMy45MTQwNjMgMTMuOTE0MDYzLTU5LjQxNzk2OSAwLTIzMS41NTQ2ODcgMC0zMDEuNzE4NzUgMC03LjY2Nzk2OSAwLTEzLjkxNDA2My02LjI1LTEzLjkxNDA2My0xMy45MTQwNjMgMC0xMC43NDYwOTMgMC0yMDQuNTg5ODQzIDAtMjExLjkzMzU5MyAwLTUuMjczNDM4IDIuOTU3MDMyLTkuODc4OTA3IDcuMzA0Njg4LTEyLjI0NjA5NCA1Ljg0Mzc1LTMuMTc1NzgyLTQuMjQyMTg4LTEuMDQ2ODc1IDIzMC40MjE4NzUtMS42Njc5NjkgNC4xNzU3ODEgMCA3LjU0Njg3NS0zLjM4MjgxMyA3LjU0Njg3NS03LjU0Njg3NXMtMy4zNzEwOTQtNy41NDY4NzUtNy41NDY4NzUtNy41NDY4NzVjLTIzNi4zNTE1NjMuMjczNDM3LTIyNC41NTA3ODEtLjY0NDUzMS0yMzAuNDIxODc1Ljc3NzM0NHYtNTYuMzA0Njg4YzAtMjcuMTY0MDYyLTIyLjEwNTQ2OS00OS4yNjk1MzEtNDkuMjY5NTMxLTQ5LjI2OTUzMS0yMi43Njk1MzEgMC00Mi40NDkyMTkgMTUuNDMzNTk0LTQ3Ljg2MzI4MSAzNy41MjczNDQtLjk4NDM3NiA0LjA1NDY4NyAxLjUgOC4xNDA2MjUgNS41NDI5NjggOS4xMjUgNC4wNDY4NzUuOTg4MjgxIDguMTI4OTA2LTEuNDg4MjgyIDkuMTI1LTUuNTMxMjUgMy43NDYwOTQtMTUuMzI0MjE5IDE3LjM5ODQzOC0yNi4wMzEyNSAzMy4xOTUzMTMtMjYuMDMxMjUgMTguODQzNzUgMCAzNC4xNzU3ODEgMTUuMzM1OTM3IDM0LjE3NTc4MSAzNC4xNzk2ODd2NjUuMzE2NDA3Yy0zLjExMzI4MSAzLjUxMTcxOC01LjM5MDYyNSA3Ljc3MzQzNy02LjUxMTcxOSAxMi40ODA0NjgtMi42NzE4NzUtMTIuODI0MjE4LTE0LjA1ODU5My0yMi40ODgyODEtMjcuNjY0MDYyLTIyLjQ4ODI4MS0xNS41NzgxMjUgMC0yOC4yNTM5MDcgMTIuNjc5Njg3LTI4LjI1MzkwNyAyOC4yNTc4MTMgMCAxNS41NzgxMjQgMTIuNjc1NzgyIDI4LjI1NzgxMiAyOC4yNTM5MDcgMjguMjU3ODEyIDEyLjUzNTE1NiAwIDIzLjE4NzUtOC4yMTA5MzggMjYuODcxMDkzLTE5LjUzMTI1djYxLjM5ODQzOGMtMy42ODM1OTMtMTEuMzIwMzEzLTE0LjMzNTkzNy0xOS41MjczNDQtMjYuODcxMDkzLTE5LjUyNzM0NC0xNS41NzgxMjUgMC0yOC4yNTM5MDcgMTIuNjc1NzgxLTI4LjI1MzkwNyAyOC4yNTM5MDYgMCAxNS41ODIwMzEgMTIuNjc1NzgyIDI4LjI1NzgxMiAyOC4yNTM5MDcgMjguMjU3ODEyIDEyLjUzNTE1NiAwIDIzLjE4NzUtOC4yMDcwMzEgMjYuODcxMDkzLTE5LjUzMTI1djYxLjQwMjM0NGMtMy42ODM1OTMtMTEuMzI0MjE4LTE0LjMzNTkzNy0xOS41MzEyNS0yNi44NzEwOTMtMTkuNTMxMjUtMTUuNTc4MTI1IDAtMjguMjUzOTA3IDEyLjY3NTc4Mi0yOC4yNTM5MDcgMjguMjUzOTA2IDAgMTUuNTgyMDMyIDEyLjY3NTc4MiAyOC4yNTc4MTMgMjguMjUzOTA3IDI4LjI1NzgxMyAxMi41MzUxNTYgMCAyMy4xODc1LTguMjA3MDMxIDI2Ljg3MTA5My0xOS41MzEyNXYxNy4wODk4NDRjLTIwLjEwNTQ2OCAyNS41MzEyNS02MS4wMzkwNjIgMTEuMTI1LTYxLjAzOTA2Mi0yMS4wOTc2NTd2LTIyNS44NDM3NWMwLTQuMTc1NzgxLTMuMzgyODEyLTcuNTQ2ODc0LTcuNTQ2ODc1LTcuNTQ2ODc0LTQuMTc1NzgxIDAtNy41NDY4NzUgMy4zNzEwOTMtNy41NDY4NzUgNy41NDY4NzR2MjI1Ljg0Mzc1YzAgMjQuNjAxNTYzIDE4LjEyMTA5NCA0NS4wNTA3ODIgNDEuNzE4NzUgNDguNjk1MzEzdjYyLjUyNzM0NGgtMTguOTY0ODQ0Yy00LjE2Nzk2OCAwLTcuNTQ2ODc1IDMuMzc4OTA2LTcuNTQ2ODc1IDcuNTQ2ODc1IDAgNC4xNjc5NjggMy4zNzg5MDcgNy41NDY4NzUgNy41NDY4NzUgNy41NDY4NzVoNTMuMDE5NTMyYzQuMTY3OTY4IDAgNy41NDY4NzQtMy4zNzg5MDcgNy41NDY4NzQtNy41NDY4NzUgMC00LjE2Nzk2OS0zLjM3ODkwNi03LjU0Njg3NS03LjU0Njg3NC03LjU0Njg3NWgtMTguOTY0ODQ0di02Mi41MzEyNWM3LjA0Mjk2OC0xLjA4NTkzOCAxMy41OTc2NTYtMy42Njc5NjkgMTkuMzI0MjE4LTcuNDEwMTU3djkuMTk5MjE5YzAgMTUuOTg0Mzc1IDEzLjAxOTUzMiAyOS4wMDM5MDcgMjkuMDA3ODEzIDI5LjAwMzkwN2g0NS44MjAzMTN2MzUuODk4NDM3YzAgNi4yODkwNjMgNS4xMDkzNzQgMTEuNDEwMTU2IDExLjM5ODQzNyAxMS40MTAxNTZoMjEuMTI4OTA2YzYuMjg5MDYzIDAgMTEuMzk4NDM4LTUuMTIxMDkzIDExLjM5ODQzOC0xMS40MTAxNTZ2LTM1Ljg5ODQzN2gxMjIuMjI2NTYydjM1Ljg5ODQzN2MwIDYuMjg5MDYzIDUuMTA5Mzc1IDExLjQxMDE1NiAxMS4zOTg0MzggMTEuNDEwMTU2aDIxLjEyODkwNmM2LjI4OTA2MyAwIDExLjM5ODQzNy01LjEyMTA5MyAxMS4zOTg0MzctMTEuNDEwMTU2di0zNS44OTg0MzdoNDUuODIwMzEzYzE1Ljk4ODI4MSAwIDI5LjAwNzgxMy0xMy4wMTk1MzIgMjkuMDA3ODEzLTI5LjAwMzkwN3YtOS4xOTkyMTljNS43MjY1NjIgMy43NDIxODggMTIuMjgxMjUgNi4zMjQyMTkgMTkuMzI0MjE4IDcuNDEwMTU3djYyLjUzMTI1aC0xOC45NjQ4NDRjLTQuMTY3OTY4IDAtNy41NDY4NzQgMy4zNzg5MDYtNy41NDY4NzQgNy41NDY4NzUgMCA0LjE2Nzk2OCAzLjM3ODkwNiA3LjU0Njg3NSA3LjU0Njg3NCA3LjU0Njg3NWg1My4wMTk1MzJjNC4xNjc5NjggMCA3LjU0Njg3NS0zLjM3ODkwNyA3LjU0Njg3NS03LjU0Njg3NSAwLTQuMTY3OTY5LTMuMzc4OTA3LTcuNTQ2ODc1LTcuNTQ2ODc1LTcuNTQ2ODc1aC0xOC45NjQ4NDR2LTYyLjUyNzM0NGMyMy41OTc2NTYtMy42NDQ1MzEgNDEuNzE4NzUtMjQuMDkzNzUgNDEuNzE4NzUtNDguNjk1MzEzdi0yNDUuOTg4MjgxYzAtMjcuMTY0MDYyLTIyLjA5Mzc1LTQ5LjI2OTUzMS00OS4yNjE3MTktNDkuMjY5NTMxem0tNDEzLjQ3NjU2MiAxNDZjLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2NDA2MiAwLTcuMjU3ODEzIDUuOTA2MjUtMTMuMTY0MDYzIDEzLjE2NDA2My0xMy4xNjQwNjMgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYzIDAgNy4yNTc4MTItNS45MDYyNSAxMy4xNjQwNjItMTMuMTY0MDYyIDEzLjE2NDA2MnptMCA3OC44NTU0NjljLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2Nzk2OSAwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2My0xMy4xNjQwNjIgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYyIDEzLjE2Nzk2OXptMCA3OC44NTE1NjJjLTcuMjU3ODEzIDAtMTMuMTY0MDYzLTUuOTA2MjUtMTMuMTY0MDYzLTEzLjE2Nzk2OSAwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2My0xMy4xNjQwNjIgNy4yNTc4MTIgMCAxMy4xNjQwNjIgNS45MDYyNSAxMy4xNjQwNjIgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYyIDEzLjE2Nzk2OXptMTMwLjUzNTE1NiAxMDMuMjUzOTA3aC0xMy43NDYwOTR2LTMyLjIxODc1aDEzLjc0NjA5NHptMTY2LjE1MjM0NCAwaC0xMy43NDYwOTR2LTMyLjIxODc1aDEzLjc0NjA5NHptMTUwLjk1NzAzMS0xMTEuNzAzMTI2YzAgMzIuMjM4MjgyLTQwLjk0MTQwNiA0Ni42MjEwOTQtNjEuMDM5MDYyIDIxLjA5NzY1N3YtMTcuMDg1OTM4YzMuNjgzNTkzIDExLjMyMDMxMyAxNC4zMzU5MzcgMTkuNTI3MzQ0IDI2Ljg3MTA5MyAxOS41MjczNDQgMTUuNTc4MTI1IDAgMjguMjUzOTA3LTEyLjY3NTc4MSAyOC4yNTM5MDctMjguMjU3ODEzIDAtMTUuNTc4MTI0LTEyLjY3NTc4Mi0yOC4yNTM5MDYtMjguMjUzOTA3LTI4LjI1MzkwNi0xMi41MzUxNTYgMC0yMy4xODM1OTMgOC4yMDcwMzItMjYuODcxMDkzIDE5LjUyNzM0NHYtNjEuMzk0NTMxYzMuNjgzNTkzIDExLjMyMDMxMiAxNC4zMzU5MzcgMTkuNTI3MzQzIDI2Ljg3MTA5MyAxOS41MjczNDMgMTUuNTc4MTI1IDAgMjguMjUzOTA3LTEyLjY3NTc4MSAyOC4yNTM5MDctMjguMjU3ODEyIDAtMTUuNTc4MTI1LTEyLjY3NTc4Mi0yOC4yNTM5MDYtMjguMjUzOTA3LTI4LjI1MzkwNi0xMi41MzUxNTYgMC0yMy4xODM1OTMgOC4yMDcwMzEtMjYuODcxMDkzIDE5LjUyNzM0NHYtNjEuMzk4NDM4YzMuNjgzNTkzIDExLjMyNDIxOSAxNC4zMzU5MzcgMTkuNTMxMjUgMjYuODcxMDkzIDE5LjUzMTI1IDE1LjU3ODEyNSAwIDI4LjI1MzkwNy0xMi42NzU3ODEgMjguMjUzOTA3LTI4LjI1NzgxMiAwLTE1LjU3ODEyNi0xMi42NzU3ODItMjguMjUzOTA3LTI4LjI1MzkwNy0yOC4yNTM5MDctMTMuNjA1NDY5IDAtMjQuOTkyMTg3IDkuNjYwMTU3LTI3LjY2NDA2MiAyMi40ODQzNzUtMS4xMjEwOTQtNC43MDcwMzEtMy4zOTg0MzgtOC45Njg3NS02LjUxMTcxOS0xMi40NzY1NjJ2LTY1LjMyMDMxM2MwLTE4Ljg0Mzc1IDE1LjMzMjAzMS0zNC4xNzk2ODcgMzQuMTc5Njg4LTM0LjE3OTY4NyAxOC44NDM3NSAwIDM0LjE2Nzk2OCAxNS4zMzU5MzcgMzQuMTY3OTY4IDM0LjE3OTY4N3YyNDUuOTg4Mjgxem0tNDcuMzMyMDMxLTQuNzE4NzVjMC03LjI1NzgxMiA1LjkwNjI1LTEzLjE2NDA2MiAxMy4xNjQwNjItMTMuMTY0MDYyIDcuMjU3ODEzIDAgMTMuMTY0MDYzIDUuOTA2MjUgMTMuMTY0MDYzIDEzLjE2NDA2MiAwIDcuMjYxNzE5LTUuOTA2MjUgMTMuMTY3OTY5LTEzLjE2NDA2MyAxMy4xNjc5NjktNy4yNTc4MTIgMC0xMy4xNjQwNjItNS45MDYyNS0xMy4xNjQwNjItMTMuMTY3OTY5em0wLTc4Ljg1MTU2MmMwLTcuMjU3ODEyIDUuOTA2MjUtMTMuMTY0MDYyIDEzLjE2NDA2Mi0xMy4xNjQwNjIgNy4yNTc4MTMgMCAxMy4xNjQwNjMgNS45MDYyNSAxMy4xNjQwNjMgMTMuMTY0MDYyIDAgNy4yNjE3MTktNS45MDYyNSAxMy4xNjc5NjktMTMuMTY0MDYzIDEzLjE2Nzk2OS03LjI1NzgxMiAwLTEzLjE2NDA2Mi01LjkwNjI1LTEzLjE2NDA2Mi0xMy4xNjc5Njl6bTAtNzguODUxNTYyYzAtNy4yNTc4MTMgNS45MDYyNS0xMy4xNjQwNjMgMTMuMTY0MDYyLTEzLjE2NDA2MyA3LjI1NzgxMyAwIDEzLjE2NDA2MyA1LjkwNjI1IDEzLjE2NDA2MyAxMy4xNjQwNjMgMCA3LjI1NzgxMi01LjkwNjI1IDEzLjE2NDA2Mi0xMy4xNjQwNjMgMTMuMTY0MDYyLTcuMjU3ODEyIDAtMTMuMTY0MDYyLTUuOTA2MjUtMTMuMTY0MDYyLTEzLjE2NDA2MnptMCAwIi8+DQogICAgPHBhdGggZD0ibTQ2Mi43MzgyODEgMjYuMjI2NTYyYy0xNS41ODIwMzEgMC0yOC4yNTc4MTIgMTIuNjc1NzgyLTI4LjI1NzgxMiAyOC4yNTc4MTMgMCAxNS41NzgxMjUgMTIuNjc1NzgxIDI4LjI1MzkwNiAyOC4yNTc4MTIgMjguMjUzOTA2IDE1LjU3ODEyNSAwIDI4LjI1MzkwNy0xMi42NzU3ODEgMjguMjUzOTA3LTI4LjI1MzkwNiAwLTE1LjU4MjAzMS0xMi42NzU3ODItMjguMjU3ODEzLTI4LjI1MzkwNy0yOC4yNTc4MTN6bTAgNDEuNDIxODc2Yy03LjI2MTcxOSAwLTEzLjE2Nzk2OS01LjkwNjI1LTEzLjE2Nzk2OS0xMy4xNjQwNjMgMC03LjI2MTcxOSA1LjkwNjI1LTEzLjE2NDA2MyAxMy4xNjc5NjktMTMuMTY0MDYzIDcuMjU3ODEzIDAgMTMuMTY0MDYzIDUuOTAyMzQ0IDEzLjE2NDA2MyAxMy4xNjQwNjMgMCA3LjI1NzgxMy01LjkwNjI1IDEzLjE2NDA2My0xMy4xNjQwNjMgMTMuMTY0MDYzem0wIDAiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Kitchen:tSe,"Laundry Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDY0IDY0IiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im02MSAyaC01OGMtLjU1MiAwLTEgLjQ0OC0xIDF2NThjMCAuNTUyLjQ0OCAxIDEgMWg1OGMuNTUyIDAgMS0uNDQ4IDEtMXYtNThjMC0uNTUyLS40NDgtMS0xLTF6bS0xIDZoLTR2LTJjMC0uNTUyLS40NDgtMS0xLTFoLTZjLS41NTIgMC0xIC40NDgtMSAxdjJoLTNjLS41NTIgMC0xIC40NDgtMSAxdjloLTJ2LTE0aDE4em0tMTIuMTQyIDMxLTEuNjkyLTExaDkuNjY5bC0xLjY5MiAxMXptMS4xNDItMTNjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMnptOC43NTkuMzQ5Yy0uMTktLjIyMi0uNDY3LS4zNDktLjc1OS0uMzQ5aC0yYzAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0aC0yYy0uMjkyIDAtLjU2OS4xMjctLjc1OS4zNDlzLS4yNzQuNTE1LS4yMjkuODAzbDEuODIzIDExLjg0OGgtMy44MzV2LTE5aDE4djE5aC0zLjgzNWwxLjgyMy0xMS44NDhjLjA0NS0uMjg4LS4wMzktLjU4Mi0uMjI5LS44MDN6bS03Ljc1OS0xNy4zNDl2LTJoNHYxMWgtNHptLTIgOWgtMnYtOGgyem04IDB2LThoNHY4em0tMTYtMTR2MTRoLTJ2LTEwYzAtLjU1Mi0uNDQ4LTEtMS0xaC02Yy0uNTUyIDAtMSAuNDQ4LTEgMXYxMGgtMnYtN2MwLS4yNjUtLjEwNS0uNTItLjI5My0uNzA3bC0xLjcwNy0xLjcwN3YtMi41ODZjMC0uNTUyLS40NDgtMS0xLTFoLTRjLS41NTIgMC0xIC40NDgtMSAxdjIuNTg2bC0xLjcwNyAxLjcwN2MtLjE4OC4xODctLjI5My40NDItLjI5My43MDd2N2gtMnYtMTBjMC0uNTUyLS40NDgtMS0xLTFoLThjLS41NTIgMC0xIC40NDgtMSAxdjEwaC0ydi0xNHptLTQgMTRoLTR2LTloNHptLTExLjcwNy04LjI5MyAxLjcwNyAxLjcwN3Y2LjU4NmgtNnYtNi41ODZsMS43MDctMS43MDdjLjE4OC0uMTg3LjI5My0uNDQyLjI5My0uNzA3di0yaDJ2MmMwIC4yNjUuMTA1LjUyLjI5My43MDd6bS0xMC4yOTMgOC4yOTNoLTZ2LTloNnptLTEwIDJoMzZ2NDBoLTM2em00NSAyOGgtMnYtMWgyem0tMyAyaDQuNjQ5bDQuMzUxIDMuNDh2Ni41MmgtOXptMTEgMTB2LTdjMC0uMzA0LS4xMzgtLjU5MS0uMzc1LS43ODFsLTUtNGMtLjE3OC0uMTQyLS4zOTgtLjIxOS0uNjI1LS4yMTl2LTJjMC0uNTUyLS40NDgtMS0xLTFoLTRjLS41NTIgMC0xIC40NDgtMSAxdjJjLS41NTIgMC0xIC40NDgtMSAxdjExaC0ydi0xOWgxOHYxOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTM3IDIyaC0zMGMtLjU1MiAwLTEgLjQ0OC0xIDF2MzRjMCAuNTUyLjQ0OCAxIDEgMWgzMGMuNTUyIDAgMS0uNDQ4IDEtMXYtMzRjMC0uNTUyLS40NDgtMS0xLTF6bS0xIDJ2NWgtMjh2LTV6bS0yOCAzMnYtMjVoMjh2MjV6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yMiAzM2MtNi4wNjUgMC0xMSA0LjkzNS0xMSAxMXM0LjkzNSAxMSAxMSAxMSAxMS00LjkzNSAxMS0xMS00LjkzNS0xMS0xMS0xMXptMCAyMGMtNC45NjIgMC05LTQuMDM4LTktOXM0LjAzOC05IDktOSA5IDQuMDM4IDkgOS00LjAzOCA5LTkgOXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTI2LjE5OSA0OC4yODYgMS4zOTkgMS40MjljLjY3Ny0uNjYzIDEuMjI2LTEuNDMyIDEuNjMxLTIuMjg2bC0xLjgwNy0uODU3Yy0uMzAzLjYzOS0uNzE0IDEuMjE2LTEuMjIzIDEuNzE0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjIgMzZ2MmMzLjMwOSAwIDYgMi42OTEgNiA2aDJjMC00LjQxMS0zLjU4OS04LTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTEwIDI1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTE0IDI1aDJ2MmgtMnoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMyIDI1aDJ2MmgtMnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Living Area":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0ibTQ5NC41IDI3Ny42NjdoLTUuNXYtMzYuNWMwLTE1LjE2NC0xMi4zMzYtMjcuNS0yNy41LTI3LjVoLTExMGMtNy44NzUgMC0xNC45ODIgMy4zMzItMjAgOC42NTUtNS4wMTgtNS4zMjItMTIuMTI1LTguNjU1LTIwLTguNjU1aC0xMTBjLTcuODc1IDAtMTQuOTgyIDMuMzMyLTIwIDguNjU1LTUuMDE4LTUuMzIyLTEyLjEyNS04LjY1NS0yMC04LjY1NWgtNDAuNWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWg0MC41YzYuODkzIDAgMTIuNSA1LjYwNyAxMi41IDEyLjV2NzcuMDE4Yy0zLjc1My0xLjkyNC04LTMuMDE4LTEyLjUtMy4wMThoLTEwMS41di0yMGMwLTkuNjQ5LTcuODUxLTE3LjUtMTcuNS0xNy41aC0zLjV2LTM2LjVjMC02Ljg5MyA1LjYwNy0xMi41IDEyLjUtMTIuNWgzNC41YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41aC0zNC41Yy0xNS4xNjQgMC0yNy41IDEyLjMzNi0yNy41IDI3LjV2MzYuNWgtNi41Yy05LjY0OSAwLTE3LjUgNy44NTEtMTcuNSAxNy41djQyLjVjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtNDIuNWMwLTEuMzc4IDEuMTIyLTIuNSAyLjUtMi41aDI1YzEuMzc4IDAgMi41IDEuMTIyIDIuNSAyLjV2MTQwLjVoLTI3LjVjLTEuMzc4IDAtMi41LTEuMTIyLTIuNS0yLjV2LTYwLjVjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2NjAuNWMwIDkuNjQ5IDcuODUxIDE3LjUgMTcuNSAxNy41aDI3LjV2MTQuNjY3YzAgNi44OTMgNS42MDcgMTIuNSAxMi41IDEyLjVoMjVjNi44OTMgMCAxMi41LTUuNjA3IDEyLjUtMTIuNXYtMTQuNjY3aDMyMnYxNC42NjdjMCA2Ljg5MyA1LjYwNyAxMi41IDEyLjUgMTIuNWgyNWM2Ljg5MyAwIDEyLjUtNS42MDcgMTIuNS0xMi41di0xNC42NjdoMjcuNWM5LjY0OSAwIDE3LjUtNy44NTEgMTcuNS0xNy41di0xMzhjMC05LjY1LTcuODUxLTE3LjUtMTcuNS0xNy41em0tMTQzLTQ5aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41djM2LjVoLTQuNWMtOS42NDkgMC0xNy41IDcuODUxLTE3LjUgMTcuNXYyMGgtMTAwLjVjLTQuNSAwLTguNzQ3IDEuMDkzLTEyLjUgMy4wMTh2LTc3LjAxOGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41em0tMjkxLjUgMjA3di0xNWgzMjZjNC4xNDIgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjVoLTMyNnYtMTUuNWgxMDEuNWM3Ljg3NSAwIDE0Ljk4Mi0zLjMzMiAyMC04LjY1NSA1LjAxOCA1LjMyMiAxMi4xMjUgOC42NTUgMjAgOC42NTVoMTEwYzcuODc1IDAgMTQuOTgyLTMuMzMyIDIwLTguNjU1IDUuMDE4IDUuMzIyIDEyLjEyNSA4LjY1NSAyMCA4LjY1NWgxMDAuNXYxNS41aC0zMWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWgzMXYxNXptMzkyLTYwLjVoLTEwMC41Yy02Ljg5MyAwLTEyLjUtNS42MDctMTIuNS0xMi41di0yMGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41aDEwMC41em0tMTI4LTEyLjVjMCA2Ljg5My01LjYwNyAxMi41LTEyLjUgMTIuNWgtMTEwYy02Ljg5MyAwLTEyLjUtNS42MDctMTIuNS0xMi41di0yMGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41em0tMTIyLjUtMTM0aDExMGM2Ljg5MyAwIDEyLjUgNS42MDcgMTIuNSAxMi41djc3LjAxOGMtMy43NTMtMS45MjQtOC0zLjAxOC0xMi41LTMuMDE4aC0xMTBjLTQuNSAwLTguNzQ3IDEuMDkzLTEyLjUgMy4wMTh2LTc3LjAxOGMwLTYuODkzIDUuNjA3LTEyLjUgMTIuNS0xMi41em0tNDAgMTAxLjVjNi44OTMgMCAxMi41IDUuNjA3IDEyLjUgMTIuNXYyMGMwIDYuODkzLTUuNjA3IDEyLjUtMTIuNSAxMi41aC0xMDEuNXYtNDV6bS04MS41IDEzMi42NjZoLTIwdi0xMi4xNjdoMjB6bTM1MiAwdi0xMi4xNjdoMjB2MTIuMTY3em02NS0yOS42NjZjMCAxLjM3OC0xLjEyMiAyLjUtMi41IDIuNWgtMjcuNXYtMTQwLjVjMC0xLjM3OCAxLjEyMi0yLjUgMi41LTIuNWgyNWMxLjM3OCAwIDIuNSAxLjEyMiAyLjUgMi41eiIvPg0KICAgICAgICA8cGF0aCBkPSJtNjIgMTczLjY2N2g4OWM2Ljg5MyAwIDEyLjUtNS42MDcgMTIuNS0xMi41di01NmMwLTYuODkzLTUuNjA3LTEyLjUtMTIuNS0xMi41aC04OWMtNi44OTMgMC0xMi41IDUuNjA3LTEyLjUgMTIuNXY1NmMwIDYuODkyIDUuNjA3IDEyLjUgMTIuNSAxMi41em0yLjUtNjZoODR2NTFoLTg0eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMzYyIDE3My42NjdoODljNi44OTMgMCAxMi41LTUuNjA3IDEyLjUtMTIuNXYtNTZjMC02Ljg5My01LjYwNy0xMi41LTEyLjUtMTIuNWgtODljLTYuODkzIDAtMTIuNSA1LjYwNy0xMi41IDEyLjV2NTZjMCA2Ljg5MiA1LjYwNyAxMi41IDEyLjUgMTIuNXptMi41LTY2aDg0djUxaC04NHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIwMC40OSAxMzAuMTY3aDExMi4wMmM2Ljg4NyAwIDEyLjQ5LTUuNjAzIDEyLjQ5LTEyLjQ5di0xNi41NDljMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNXMtNy41IDMuMzU4LTcuNSA3LjV2MTQuMDM5aC0xMDd2LTY2aDEwN3YxNi45NjFjMCA0LjE0MiAzLjM1OCA3LjUgNy41IDcuNXM3LjUtMy4zNTggNy41LTcuNXYtMTkuNDcyYzAtNi44ODctNS42MDMtMTIuNDktMTIuNDktMTIuNDloLTExMi4wMmMtNi44ODcgMC0xMi40OSA1LjYwMy0xMi40OSAxMi40OXY3MS4wMjFjMCA2Ljg4NiA1LjYwMyAxMi40OSAxMi40OSAxMi40OXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTIzMS44ODEgMjc4LjEwMmM3LjM0OSA0LjgyOCAxMy41MjIgMTEuMDAyIDE4LjM1MSAxOC4zNTEgMS4zODcgMi4xMSAzLjc0MyAzLjM4MSA2LjI2OCAzLjM4MXM0Ljg4MS0xLjI3MSA2LjI2OC0zLjM4MWM0LjgyOC03LjM0OSAxMS4wMDItMTMuNTIyIDE4LjM1MS0xOC4zNTEgMi4xMS0xLjM4NyAzLjM4MS0zLjc0MyAzLjM4MS02LjI2OHMtMS4yNzEtNC44ODEtMy4zODEtNi4yNjhjLTcuMzQ5LTQuODI4LTEzLjUyMi0xMS4wMDItMTguMzUxLTE4LjM1MS0xLjM4Ny0yLjExLTMuNzQzLTMuMzgxLTYuMjY4LTMuMzgxcy00Ljg4MSAxLjI3MS02LjI2OCAzLjM4MWMtNC44MjggNy4zNDktMTEuMDAyIDEzLjUyMi0xOC4zNTEgMTguMzUxLTIuMTEgMS4zODctMy4zODEgMy43NDMtMy4zODEgNi4yNjhzMS4yNzEgNC44ODEgMy4zODEgNi4yNjh6bTI0LjYxOS0xNC4zNDVjMi40OTQgMi44ODcgNS4xODkgNS41ODMgOC4wNzYgOC4wNzYtMi44ODcgMi40OTQtNS41ODMgNS4xODktOC4wNzYgOC4wNzYtMi40OTQtMi44ODctNS4xODktNS41ODMtOC4wNzYtOC4wNzYgMi44ODctMi40OTMgNS41ODItNS4xODggOC4wNzYtOC4wNzZ6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0zODEuODgxIDI3OC4xMDJjNy4zNDkgNC44MjggMTMuNTIyIDExLjAwMiAxOC4zNTEgMTguMzUxIDEuMzg3IDIuMTEgMy43NDMgMy4zODEgNi4yNjggMy4zODFzNC44ODEtMS4yNzEgNi4yNjgtMy4zODFjNC44MjgtNy4zNDkgMTEuMDAyLTEzLjUyMiAxOC4zNTEtMTguMzUxIDIuMTEtMS4zODcgMy4zODEtMy43NDMgMy4zODEtNi4yNjhzLTEuMjcxLTQuODgxLTMuMzgxLTYuMjY4Yy03LjM0OS00LjgyOC0xMy41MjItMTEuMDAyLTE4LjM1MS0xOC4zNTEtMS4zODctMi4xMS0zLjc0My0zLjM4MS02LjI2OC0zLjM4MXMtNC44ODEgMS4yNzEtNi4yNjggMy4zODFjLTQuODI4IDcuMzQ5LTExLjAwMiAxMy41MjItMTguMzUxIDE4LjM1MS0yLjExIDEuMzg3LTMuMzgxIDMuNzQzLTMuMzgxIDYuMjY4czEuMjcxIDQuODgxIDMuMzgxIDYuMjY4em0yNC42MTktMTQuMzQ1YzIuNDk0IDIuODg3IDUuMTg5IDUuNTgzIDguMDc2IDguMDc2LTIuODg3IDIuNDk0LTUuNTgzIDUuMTg5LTguMDc2IDguMDc2LTIuNDk0LTIuODg3LTUuMTg5LTUuNTgzLTguMDc2LTguMDc2IDIuODg3LTIuNDkzIDUuNTgyLTUuMTg4IDguMDc2LTguMDc2eiIvPg0KICAgICAgICA8cGF0aCBkPSJtMTAwLjIzMiAyNDcuMjE1Yy00LjgyOCA3LjM0OS0xMS4wMDIgMTMuNTIyLTE4LjM1MSAxOC4zNTEtMi4xMSAxLjM4Ny0zLjM4MSAzLjc0My0zLjM4MSA2LjI2OHMxLjI3MSA0Ljg4MSAzLjM4MSA2LjI2OGM3LjM0OSA0LjgyOCAxMy41MjIgMTEuMDAyIDE4LjM1MSAxOC4zNTEgMS4zODcgMi4xMSAzLjc0MyAzLjM4MSA2LjI2OCAzLjM4MXM0Ljg4MS0xLjI3MSA2LjI2OC0zLjM4MWM0LjgyOC03LjM0OSAxMS4wMDItMTMuNTIyIDE4LjM1MS0xOC4zNTEgMi4xMS0xLjM4NyAzLjM4MS0zLjc0MyAzLjM4MS02LjI2OHMtMS4yNzEtNC44ODEtMy4zODEtNi4yNjhjLTcuMzQ5LTQuODI4LTEzLjUyMi0xMS4wMDItMTguMzUxLTE4LjM1MS0xLjM4Ny0yLjExLTMuNzQzLTMuMzgxLTYuMjY4LTMuMzgxcy00Ljg4MSAxLjI3LTYuMjY4IDMuMzgxem0xNC4zNDQgMjQuNjE4Yy0yLjg4NyAyLjQ5NC01LjU4MyA1LjE4OS04LjA3NiA4LjA3Ni0yLjQ5NC0yLjg4Ny01LjE4OS01LjU4My04LjA3Ni04LjA3NiAyLjg4Ny0yLjQ5NCA1LjU4My01LjE4OSA4LjA3Ni04LjA3NiAyLjQ5NCAyLjg4OCA1LjE4OSA1LjU4MyA4LjA3NiA4LjA3NnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=","Living Room":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTQ3MywzMzEuOTE2VjI3My42NDhBMzkuNzEsMzkuNzEsMCwwLDAsNDMzLjMyOCwyMzRIMzc2VjE3MGg0NC4wMDlhNi4yODksNi4yODksMCwwLDAsNS43NDctOC4wMkw0MDQuODMxLDkyLjI0OEE1Ljk3Niw1Ljk3NiwwLDAsMCwzOTkuMDg0LDg4SDM0MC45MTZhNS45MzIsNS45MzIsMCwwLDAtNS43NDcsNC4yTDMxNC4yNDQsMTYxLjkyYTYuMzcyLDYuMzcyLDAsMCwwLC45MzQsNS40ODMsNi4xNzYsNi4xNzYsMCwwLDAsNC44MTMsMi42SDM2NHY2NEg4OC42NzVBMzkuNzEzLDM5LjcxMywwLDAsMCw0OSwyNzMuNjQ4djU4LjI2OGEzOS40MTcsMzkuNDE3LDAsMCwwLTM3LDM5LjU1NlY0NjMuMWE1LjkxNSw1LjkxNSwwLDAsMCw2LDUuOUgzNXYzMGE2LjI0Niw2LjI0NiwwLDAsMCw2LjI4LDZoNjcuODY3QTUuODc3LDUuODc3LDAsMCwwLDExNSw0OTlWNDY5SDQwN3YzMGE1Ljg3OSw1Ljg3OSwwLDAsMCw1Ljg1NSw2aDY3Ljg2OUE2LjI0Myw2LjI0MywwLDAsMCw0ODcsNDk5VjQ2OWgxN2E1LjkxMyw1LjkxMywwLDAsMCw2LTUuOVYzNzEuNDcyQTM5LjQxNywzOS40MTcsMCwwLDAsNDczLDMzMS45MTZaTTM0NS4zODEsMTAwaDQ5LjIzOGwxNy4zMjYsNThoLTgzLjg5Wk04OC42NzUsMjQ2SDQzMy4zMjhBMjcuNywyNy43LDAsMCwxLDQ2MSwyNzMuNjQ4djU5LjNhMzkuODU0LDM5Ljg1NCwwLDAsMC0zMCwzOC41MjZWMzkwSDkxVjM3MS40NzJhMzkuODU0LDM5Ljg1NCwwLDAsMC0zMC0zOC41MjZ2LTU5LjNBMjcuNywyNy43LDAsMCwxLDg4LjY3NSwyNDZaTTEwMyw0OTNINDdWNDY5aDU2Wm0zNzIsMEg0MTlWNDY5aDU2Wm0yMy0zNkgyNFYzNzEuNDcyYTI3LjUsMjcuNSwwLDEsMSw1NSwwVjM5NS44YTYuNDQ4LDYuNDQ4LDAsMCwwLDYuMzEsNi4ySDQzNi42OTNBNi40NDUsNi40NDUsMCwwLDAsNDQzLDM5NS44VjM3MS40NzJhMjcuNSwyNy41LDAsMSwxLDU1LDBaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMTQsMjAzLjIzOFY1Ni42MjZBNS42NCw1LjY0LDAsMCwwLDIwOC4wNjIsNTFoLTUzLjkyTDExMi4yNzIsOC45NDRhNS43MzcsNS43MzcsMCwwLDAtOC40ODQuMDQ3TDYxLjkxOSw1MUg4YTUuNjkzLDUuNjkzLDAsMCwwLTYsNS42MjZWMjAzLjIzOEE1LjgsNS44LDAsMCwwLDgsMjA5SDIwOC4wNjJBNS43NDksNS43NDksMCwwLDAsMjE0LDIwMy4yMzhaTTE3NCwxMzEuOGwtNDIuMjMsMTkuNjg2TDgwLjM2NSwxMTYuNDQzYTYuMjQ1LDYuMjQ1LDAsMCwwLTcuMTMxLjE2M0w0MSwxNDAuNjg2Vjg3SDE3NFpNNDEsMTU1LjY4OWwzNi4wNjItMjYuOTExLDUwLjg4NSwzNC41NDJhNi4xNyw2LjE3LDAsMCwwLDMuNDI3LDEuMDM5LDUuMTY5LDUuMTY5LDAsMCwwLDIuMzMyLS41NTdMMTc0LDE0NS4wMjVWMTczSDQxWk0xNzguMTU1LDc1SDM3LjY4OUwyMy4yNDMsNjNIMTkyLjVaTTI5LDg0LjA5MVYxNzYuMkwxNCwxODkuOTI4VjcwLjQ3M1pNMzcuNywxODVIMTc4LjE0bDEzLjc2NywxMkgyMy44MzVaTTE4NiwxNzYuMjFWODQuMDc4bDE2LTEzLjlWMTkwLjIyNlpNMTA4LjAzLDIxLjg1OSwxMzcuMTcyLDUxSDc4Ljg4OVoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyOC4zNzQsMTMzLjJhMjAuMjE0LDIwLjIxNCwwLDEsMC0yMC4yMTQtMjAuMjE0QTIwLjIzNiwyMC4yMzYsMCwwLDAsMTI4LjM3NCwxMzMuMlptMC0yOC40MjdhOC4yMTQsOC4yMTQsMCwxLDEtOC4yMTQsOC4yMTNBOC4yMjMsOC4yMjMsMCwwLDEsMTI4LjM3NCwxMDQuNzY4WiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzQ4Ljc4NywzMDguNDRhMjIuMDg3LDIyLjA4NywwLDAsMCwwLDIxLjY2MmwtOC40NzksOC40NzlhNiw2LDAsMSwwLDguNDg0LDguNDg1bDguNDc5LTguNDhhMjIuMDksMjIuMDksMCwwLDAsMjEuNjYyLDBsOC40NzgsOC40NzlhNiw2LDAsMCwwLDguNDg2LTguNDg1bC04LjQ4Ny04LjQ4OGEyMi4yMTEsMjIuMjExLDAsMCwwLDAtMjEuNjQ0bDguNDg3LTguNDg4YTYsNiwwLDAsMC04LjQ4Ni04LjQ4NWwtOC40NzgsOC40NzlhMjIuMDkyLDIyLjA5MiwwLDAsMC0yMS42NjEsMGwtOC40OC04LjQ3OWE2LDYsMCwxLDAtOC40ODQsOC40ODVabTE5LjMxNi42NzhhMTAuMTU2LDEwLjE1NiwwLDEsMS03LjE3OSwyLjk3NEExMC4wODMsMTAuMDgzLDAsMCwxLDM2OC4xLDMwOS4xMThaIi8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMzguNzg3LDMwOC40NGEyMi4wODcsMjIuMDg3LDAsMCwwLDAsMjEuNjYybC04LjQ3OSw4LjQ3OWE2LDYsMCwxLDAsOC40ODQsOC40ODVsOC40NzktOC40OGEyMi4wOSwyMi4wOSwwLDAsMCwyMS42NjIsMGw4LjQ3OCw4LjQ3OWE2LDYsMCwwLDAsOC40ODYtOC40ODVsLTguNDg3LTguNDg4YTIyLjIxMSwyMi4yMTEsMCwwLDAsMC0yMS42NDRsOC40ODctOC40ODhhNiw2LDAsMCwwLTguNDg2LTguNDg1bC04LjQ3OCw4LjQ3OWEyMi4wOTIsMjIuMDkyLDAsMCwwLTIxLjY2MSwwbC04LjQ4LTguNDc5YTYsNiwwLDEsMC04LjQ4NCw4LjQ4NVptMTkuMzE2LjY3OGExMC4xNTYsMTAuMTU2LDAsMSwxLTcuMTc5LDIuOTc0QTEwLjA4MywxMC4wODMsMCwwLDEsMjU4LjEsMzA5LjExOFoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEyOC43ODcsMzA4LjQ0YTIyLjA4NywyMi4wODcsMCwwLDAsMCwyMS42NjJsLTguNDc5LDguNDc5YTYsNiwwLDEsMCw4LjQ4NCw4LjQ4NWw4LjQ3OS04LjQ4YTIyLjA5LDIyLjA5LDAsMCwwLDIxLjY2MiwwbDguNDc4LDguNDc5YTYsNiwwLDAsMCw4LjQ4Ni04LjQ4NWwtOC40ODctOC40ODhhMjIuMjExLDIyLjIxMSwwLDAsMCwwLTIxLjY0NGw4LjQ4Ny04LjQ4OGE2LDYsMCwwLDAtOC40ODYtOC40ODVsLTguNDc4LDguNDc5YTIyLjA5MiwyMi4wOTIsMCwwLDAtMjEuNjYxLDBsLTguNDgtOC40NzlhNiw2LDAsMSwwLTguNDg0LDguNDg1Wm0xOS4zMTYuNjc4YTEwLjE1NiwxMC4xNTYsMCwxLDEtNy4xNzksMi45NzRBMTAuMDgzLDEwLjA4MywwLDAsMSwxNDguMSwzMDkuMTE4WiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Locker Room":"PHN2ZyBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDYwIDYwIiB3aWR0aD0iNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Im0yMyA0aC0xNWMtMi4yMDkxMzkgMC00IDEuNzkwODYxLTQgNHYzNGMwIDIuMjA5MTM5IDEuNzkwODYxIDQgNCA0aDZjLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTZjLTEuMTA0NTY5NSAwLTItLjg5NTQzMDUtMi0ydi0zNGMwLTEuMTA0NTY5NS44OTU0MzA1LTIgMi0yaDE1YzEuMTA0NTY5NSAwIDIgLjg5NTQzMDUgMiAydjEyLjA1YzAgLjU1MjI4NDcuNDQ3NzE1MyAxIDEgMXMxLS40NDc3MTUzIDEtMXYtMTIuMDVjMC0yLjIwOTEzOS0xLjc5MDg2MS00LTQtNHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTExIDEyaDljLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTljLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0xMSAxNmg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTFzLS40NDc3MTUzLTEtMS0xaC05Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtMjEgMTljMC0uNTUyMjg0Ny0uNDQ3NzE1My0xLTEtMWgtOWMtLjU1MjI4NDcgMC0xIC40NDc3MTUzLTEgMXMuNDQ3NzE1MyAxIDEgMWg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im05IDM1Yy0uNTUyMjg0NzUgMC0xIC40NDc3MTUzLTEgMXY1YzAgLjU1MjI4NDcuNDQ3NzE1MjUgMSAxIDFoM2MuNTUyMjg0NyAwIDEtLjQ0NzcxNTMgMS0xcy0uNDQ3NzE1My0xLTEtMWgtMnYtNGMwLS41NTIyODQ3LS40NDc3MTUyNS0xLTEtMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTUyIDBoLTE1Yy0yLjkxMjIxNDIuMDAxODA2OTEtNS41OTM0MDA4IDEuNTg2MDA1MTgtNyA0LjEzNi0xLjQwNjU5OTItMi41NDk5OTQ4Mi00LjA4Nzc4NTgtNC4xMzQxOTMwOS03LTQuMTM2aC0xNWMtNC40MTYyMjE5Mi4wMDQ5NTk4OC03Ljk5NTA0MDEyIDMuNTgzNzc4MDgtOCA4djM0Yy4wMDQ5NTk4OCA0LjQxNjIyMTkgMy41ODM3NzgwOCA3Ljk5NTA0MDEgOCA4aDZjLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTZjLTMuMzEyMzM3NTctLjAwMzMwNzQtNS45OTY2OTI2Mi0yLjY4NzY2MjQtNi02di0zNGMuMDAzMzA3MzgtMy4zMTIzMzc1NyAyLjY4NzY2MjQzLTUuOTk2NjkyNjIgNi02aDE1YzMuMzEyMzM3Ni4wMDMzMDczOCA1Ljk5NjY5MjYgMi42ODc2NjI0MyA2IDZ2MTJjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xdi0xMmMuMDAzMzA3NC0zLjMxMjMzNzU3IDIuNjg3NjYyNC01Ljk5NjY5MjYyIDYtNmgxNWMzLjMxMjMzNzYuMDAzMzA3MzggNS45OTY2OTI2IDIuNjg3NjYyNDMgNiA2djM0Yy0uMDAzMzA3NCAzLjMxMjMzNzYtMi42ODc2NjI0IDUuOTk2NjkyNi02IDZoLTZjLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDFoNmM0LjQxNjIyMTktLjAwNDk1OTkgNy45OTUwNDAxLTMuNTgzNzc4MSA4LTh2LTM0Yy0uMDA0OTU5OS00LjQxNjIyMTkyLTMuNTgzNzc4MS03Ljk5NTA0MDEyLTgtOHoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQ2IDQ2aDZjMi4yMDkxMzkgMCA0LTEuNzkwODYxIDQtNHYtMzRjMC0yLjIwOTEzOS0xLjc5MDg2MS00LTQtNGgtMTVjLTIuMjA5MTM5IDAtNCAxLjc5MDg2MS00IDR2MTIuMDVjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xdi0xMi4wNWMwLTEuMTA0NTY5NS44OTU0MzA1LTIgMi0yaDE1YzEuMTA0NTY5NSAwIDIgLjg5NTQzMDUgMiAydjM0YzAgMS4xMDQ1Njk1LS44OTU0MzA1IDItMiAyaC02Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDAgMTJoOWMuNTUyMjg0NyAwIDEtLjQ0NzcxNTMgMS0xcy0uNDQ3NzE1My0xLTEtMWgtOWMtLjU1MjI4NDcgMC0xIC40NDc3MTUzLTEgMXMuNDQ3NzE1MyAxIDEgMXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTQwIDE2aDljLjU1MjI4NDcgMCAxLS40NDc3MTUzIDEtMXMtLjQ0NzcxNTMtMS0xLTFoLTljLS41NTIyODQ3IDAtMSAuNDQ3NzE1My0xIDFzLjQ0NzcxNTMgMSAxIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im00MCAyMGg5Yy41NTIyODQ3IDAgMS0uNDQ3NzE1MyAxLTFzLS40NDc3MTUzLTEtMS0xaC05Yy0uNTUyMjg0NyAwLTEgLjQ0NzcxNTMtMSAxcy40NDc3MTUzIDEgMSAxeiIvPg0KICAgICAgICA8cGF0aCBkPSJtNDkgMjd2M2MwIC41NTIyODQ3LjQ0NzcxNTMgMSAxIDFzMS0uNDQ3NzE1MyAxLTF2LTNjMC0uNTUyMjg0Ny0uNDQ3NzE1My0xLTEtMXMtMSAuNDQ3NzE1My0xIDF6Ii8+DQogICAgICAgIDxwYXRoIGQ9Im0yNyAyM2MtMy44NjQxNjU3LjAwNDQwODYtNi45OTU1OTE0IDMuMTM1ODM0My03IDd2NmMtMS42NTY4NTQyIDAtMyAxLjM0MzE0NTgtMyAzdjE4YzAgMS42NTY4NTQyIDEuMzQzMTQ1OCAzIDMgM2gyMGMxLjY1Njg1NDIgMCAzLTEuMzQzMTQ1OCAzLTN2LTE4YzAtMS42NTY4NTQyLTEuMzQzMTQ1OC0zLTMtM3YtNmMtLjAwNDQwODYtMy44NjQxNjU3LTMuMTM1ODM0My02Ljk5NTU5MTQtNy03em0xNCAxNnYxOGMwIC41NTIyODQ3LS40NDc3MTUzIDEtMSAxaC0yMGMtLjU1MjI4NDcgMC0xLS40NDc3MTUzLTEtMXYtMThjMC0uNTUyMjg0Ny40NDc3MTUzLTEgMS0xaDIwYy41NTIyODQ3IDAgMSAuNDQ3NzE1MyAxIDF6bS03LTNoLTh2LTZjMC0uNTUyMjg0Ny40NDc3MTUzLTEgMS0xaDZjLjU1MjI4NDcgMCAxIC40NDc3MTUzIDEgMXptNC02djZoLTJ2LTZjMC0xLjY1Njg1NDItMS4zNDMxNDU4LTMtMy0zaC02Yy0xLjY1Njg1NDIgMC0zIDEuMzQzMTQ1OC0zIDN2NmgtMnYtNmMuMDAzMzA2MS0yLjc2MDA1MzIgMi4yMzk5NDY4LTQuOTk2NjkzOSA1LTVoNmMyLjc2MDA1MzIuMDAzMzA2MSA0Ljk5NjY5MzkgMi4yMzk5NDY4IDUgNXoiLz4NCiAgICAgICAgPHBhdGggZD0ibTMxLjIxMyA0MS4xNDRjLTEuNTA0MTcyLS4zNjkzNzI3LTMuMDk0NjQyNi0uMDI1NjA2OC00LjMxMi45MzItMS4yMTc4ODM0Ljk2MTgxMzQtMS45MjAxMjc1IDIuNDM0NjA4OS0xLjkwMDc0MDMgMy45ODYzNjU3LjAxOTM4NzEgMS41NTE3NTY4Ljc1ODIwNzYgMy4wMDY1NDgxIDEuOTk5NzQwMyAzLjkzNzYzNDN2M2MwIDEuNjU2ODU0MiAxLjM0MzE0NTggMyAzIDNzMy0xLjM0MzE0NTggMy0zdi0zYzEuNTQ0NTEwNy0xLjE1Njk1NDQgMi4yODUzNDkyLTMuMDk5NDU1NyAxLjkwMzUxOTEtNC45OTEwODUyLS4zODE4MzAxLTEuODkxNjI5Ni0xLjgxODE1ODctMy4zOTQ2NjQzLTMuNjkwNTE5MS0zLjg2MTkxNDh6bS41ODcgNy4yNTZjLS40OTcxNDc5LjM1NzYwNjYtLjc5NDI0MDEuOTMwNjIzMi0uOCAxLjU0M3YzLjA1N2MwIC41NTIyODQ3LS40NDc3MTUzIDEtMSAxcy0xLS40NDc3MTUzLTEtMXYtMy4wODFjLS4wMDU3MDgyLS42MDIwNTIyLS4yOTk0MjU5LTEuMTY0OTQ5Mi0uNzktMS41MTQtMS4wMzUwNTUzLS43NzE3ODcyLTEuNDYwMjE2NC0yLjExOTI1MDctMS4wNTU1MzY0LTMuMzQ1MzEzMXMxLjU0ODQyMS0yLjA1NTY4NjcgMi44Mzk1MzY0LTIuMDU5Njg2OWMuMjU1MDMwOS4wMDA1MDg1LjUwOTExNDQuMDMxMDUyMi43NTcuMDkxIDEuMDU1ODY4LjI2MzI0NjEgMS44ODI5MDcgMS4wODMzNzcyIDIuMTU1IDIuMTM3LjMxMzM3NDYgMS4xODM5Njk1LS4xMjQ0MTY1IDIuNDM5NTUxMi0xLjEwNiAzLjE3MnoiLz4NCiAgICA8L2c+DQo8L3N2Zz4=",Nursery:sSe,Office:iSe,Outdoors:rSe,Playroom:oSe,Pool:nSe,"Rear Wall":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik01MDMuNDY3LDguNTMzSDM4NGMtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjExOS40NjdWMjU2djUxLjJoLTY5LjczNWMwLjk0OC0yLjY3MSwxLjQ2OC01LjU0MiwxLjQ2OC04LjUzMw0KCQkJCWMwLTE0LjExNC0xMS40ODYtMjUuNi0yNS42LTI1LjZoLTE3LjA2N1YyNTZoODUuMzMzYzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzM1YxMTAuOTMzYzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzMNCgkJCQlIMTYyLjEzM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzdjEzNi41MzNjMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2g4NS4zMzN2MTcuMDY3SDIzMC40DQoJCQkJYy0xNC4xMTQsMC0yNS42LDExLjQ4Ni0yNS42LDI1LjZjMCwyLjk5MSwwLjUyMSw1Ljg2MiwxLjQ2OCw4LjUzM2gtNjkuNzM1VjI1NlYxMzYuNTMzVjE3LjA2N2MwLTQuNzE5LTMuODIzLTguNTMzLTguNTMzLTguNTMzDQoJCQkJSDguNTMzQzMuODIzLDguNTMzLDAsMTIuMzQ4LDAsMTcuMDY3djExOS40NjdWMjU2djExOS40Njd2MTE5LjQ2N2MwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzSDEyOGgyNTZoMTE5LjQ2Nw0KCQkJCWM0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNWMzc1LjQ2N1YyNTZWMTM2LjUzM1YxNy4wNjdDNTEyLDEyLjM0OCw1MDguMTc3LDguNTMzLDUwMy40NjcsOC41MzN6IE0xNzAuNjY3LDE1My42aDE3MC42NjcNCgkJCQl2NTEuMkgxNzAuNjY3VjE1My42eiBNMzQxLjMzMywxMTkuNDY3djE3LjA2N0gxNzAuNjY3di0xNy4wNjdIMzQxLjMzM3ogTTE3MC42NjcsMjIxLjg2N2gxNzAuNjY3djE3LjA2N0gxNzAuNjY3VjIyMS44Njd6DQoJCQkJIE0zNzUuNDY3LDQ4Ni40SDI2NC41MzN2LTkzLjg2N2g1MS4yaDU5LjczM1Y0ODYuNHogTTMwNy4yLDM3NS40NjdIMjA0LjhWMzU4LjRoMTAyLjRWMzc1LjQ2N3ogTTQ5NC45MzMsMjQ3LjQ2N2gtMTcuMDY3VjE3OS4yDQoJCQkJYzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzNoLTI1LjZoLTI1LjZjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM3Y2OC4yNjdoLTE3LjA2N3YtMTAyLjRoMTAyLjRWMjQ3LjQ2N3oNCgkJCQkgTTQyNi42NjcsMjQ3LjQ2N3YtNTkuNzMzaDguNTMzdjU5LjczM0g0MjYuNjY3eiBNNDUyLjI2NywxODcuNzMzaDguNTMzdjU5LjczM2gtOC41MzNWMTg3LjczM3ogTTM5Mi41MzMsMzE1LjczM3YtNTEuMmgyNS42DQoJCQkJaDI1LjZoMjUuNmgyNS42djEwMi40aC0xMDIuNFYzMTUuNzMzeiBNMzkyLjUzMywyNS42aDEwMi40VjEyOGgtMTAyLjRWMjUuNnogTTIyMS44NjcsMjk4LjY2N2MwLTQuNzEsMy44MzEtOC41MzMsOC41MzMtOC41MzMNCgkJCQloNTEuMmM0LjcwMiwwLDguNTMzLDMuODIzLDguNTMzLDguNTMzcy0zLjgzMSw4LjUzMy04LjUzMyw4LjUzM2gtNTEuMkMyMjUuNjk4LDMwNy4yLDIyMS44NjcsMzAzLjM3NywyMjEuODY3LDI5OC42Njd6DQoJCQkJIE0yMzAuNCwzMjQuMjY3aDUxLjJoOTMuODY3djUxLjJoLTUxLjJWMzU4LjRjMC05LjQxMi03LjY1NC0xNy4wNjctMTcuMDY3LTE3LjA2N0gyMDQuOGMtOS40MTIsMC0xNy4wNjcsNy42NTQtMTcuMDY3LDE3LjA2Nw0KCQkJCXYxNy4wNjdoLTUxLjJ2LTUxLjJIMjMwLjR6IE01MS4yLDMzMi44aDM0LjEzM3Y4LjUzM0g1MS4yVjMzMi44eiBNODUuMzMzLDMxNS43MzNINTEuMlYzMDcuMmgzNC4xMzNWMzE1LjczM3ogTTUxLjIsMzU4LjQNCgkJCQloMzQuMTMzdjguNTMzSDUxLjJWMzU4LjR6IE0xMDIuNCwzNDkuODY3di0yNS42di0yNS42YzAtNC43MTktMy44MjMtOC41MzMtOC41MzMtOC41MzNoLTUxLjJjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzMw0KCQkJCXYyNS42djI1LjZ2MTcuMDY3SDE3LjA2N3YtMTAyLjRoMTAyLjR2NTEuMnY1MS4ySDEwMi40VjM0OS44Njd6IE01OS43MzMsMTEwLjkzM0g3Ni44VjEyOEg1OS43MzNWMTEwLjkzM3ogTTUxLjIsMTQ1LjA2N2gzNC4xMzMNCgkJCQloMzQuMTMzdjEwMi40aC0xMDIuNHYtMTAyLjRINTEuMnogTTE3LjA2NywyNS42aDEwMi40VjEyOGgtMjUuNnYtMTcuMDY3YzQuNzEsMCw4LjUzMy0zLjgxNCw4LjUzMy04LjUzMw0KCQkJCWMwLTQuNzE5LTMuODIzLTguNTMzLTguNTMzLTguNTMzaC04LjUzM0g1MS4yaC04LjUzM2MtNC43MSwwLTguNTMzLDMuODE0LTguNTMzLDguNTMzYzAsNC43MTksMy44MjMsOC41MzMsOC41MzMsOC41MzNWMTI4DQoJCQkJaC0yNS42VjI1LjZ6IE0xNy4wNjcsMzg0aDI1LjZoNTEuMmgyNS42djEwMi40aC0xMDIuNFYzODR6IE0xMzYuNTMzLDM5Mi41MzNoNTkuNzMzaDUxLjJWNDg2LjRIMTM2LjUzM1YzOTIuNTMzeiBNNDk0LjkzMyw0ODYuNA0KCQkJCWgtMTcuMDY3di02OC4yNjdjMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTguNTMzdi02OC4yNjcNCgkJCQljMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzM3MtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTguNTMzdi02OC4yNjdjMC00LjcxOS0zLjgyMy04LjUzMy04LjUzMy04LjUzMw0KCQkJCXMtOC41MzMsMy44MTQtOC41MzMsOC41MzNWNDg2LjRoLTE3LjA2N1YzODRoMTAyLjRWNDg2LjR6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yMjEuODY3LDQwOS42SDIwNC44Yy00LjcxLDAtOC41MzMsMy44MTQtOC41MzMsOC41MzNzMy44MjMsOC41MzMsOC41MzMsOC41MzNoOC41MzN2OC41MzMNCgkJCQljMCw0LjcxOSwzLjgyMyw4LjUzMyw4LjUzMyw4LjUzM2M0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzN2LTE3LjA2N0MyMzAuNCw0MTMuNDE0LDIyNi41NzcsNDA5LjYsMjIxLjg2Nyw0MDkuNnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTMwNy4yLDQwOS42aC0xNy4wNjdjLTQuNzEsMC04LjUzMywzLjgxNC04LjUzMyw4LjUzM1Y0MzUuMmMwLDQuNzE5LDMuODIzLDguNTMzLDguNTMzLDguNTMzczguNTMzLTMuODE0LDguNTMzLTguNTMzDQoJCQkJdi04LjUzM2g4LjUzM2M0LjcxLDAsOC41MzMtMy44MTQsOC41MzMtOC41MzNTMzExLjkxLDQwOS42LDMwNy4yLDQwOS42eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Second Floor":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAyIDUxMi4wMDIiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIHN0cm9rZT0iIiBkPSJNNDc3LjQ0NCw0NzEuMDM0aC0zLjgzM2MtMy42NzktMTQuNDM1LTE1LjkyNi0yNS4zNTYtMzAuODU5LTI3LjI0MVYzMDguNTg3aDIuMTM4YzkuOTE3LDAsMTcuOTg1LTguMDY4LDE3Ljk4NS0xNy45ODYNCgkJCWMwLTkuOTE3LTguMDY4LTE3Ljk4NS0xNy45ODUtMTcuOTg1aC0yLjEzOFYxMjkuMzgyaDkuODE1YzcuMTk3LDAsMTMuMDUyLTUuODU1LDEzLjA1Mi0xMy4wNTJ2LTE0LjkwNA0KCQkJYzAtMC4wMzMtMC4wMDUtMC4wNjUtMC4wMDUtMC4wOThjLTAuMDAxLTAuMDk4LTAuMDA5LTAuMTk2LTAuMDE1LTAuMjk0Yy0wLjAwOS0wLjE3MS0wLjAyMS0wLjM0Mi0wLjA0Mi0wLjUxDQoJCQljLTAuMDExLTAuMDg5LTAuMDI2LTAuMTc3LTAuMDQxLTAuMjY2Yy0wLjAyOS0wLjE4My0wLjA2NS0wLjM2NC0wLjEwOC0wLjU0MmMtMC4wMS0wLjA0LTAuMDE0LTAuMDgxLTAuMDI0LTAuMTIxTDQ0Ni4xMjMsMjUuNDINCgkJCWMtMS41NzQtNi4wNi03LjA0Ny0xMC4yOTMtMTMuMzA3LTEwLjI5M2gtNDkuMTA1Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3czMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDQ4LjQ2OGwxNi43MzQsNjQuNDQNCgkJCUgzMzUuMzcyTDI5Mi4zNDcsMjkuN2g0NS44NjZjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N2MwLTQuMDI1LTMuMjYyLTcuMjg3LTcuMjg3LTcuMjg3aC01NS41OTZsLTAuOTI2LTEuMzg3DQoJCQlDMjc1Ljk0OCw1LjEzNywyNjYuMzQyLDAsMjU1Ljk5NywwYy0xMC4zNDUsMC0xOS45NSw1LjEzNi0yNS42OTQsMTMuNzM5bC0wLjkyNywxLjM4OEg3OS4xNzgNCgkJCWMtNi4yNjEsMC0xMS43MzMsNC4yMzItMTMuMzA3LDEwLjI5M0w0Ni42MDksOTkuNTk1Yy0wLjAxLDAuMDQtMC4wMTQsMC4wODEtMC4wMjQsMC4xMjFjLTAuMDQzLDAuMTc4LTAuMDc5LDAuMzU5LTAuMTA4LDAuNTQyDQoJCQljLTAuMDE0LDAuMDg5LTAuMDMsMC4xNzctMC4wNDEsMC4yNjZjLTAuMDIxLDAuMTY4LTAuMDMzLDAuMzM4LTAuMDQyLDAuNTFjLTAuMDA1LDAuMDk4LTAuMDE0LDAuMTk2LTAuMDE1LDAuMjk0DQoJCQljMCwwLjAzMy0wLjAwNSwwLjA2NS0wLjAwNSwwLjA5OHYxNC45MDRjMCw3LjE5Nyw1Ljg1NSwxMy4wNTIsMTMuMDUyLDEzLjA1Mmg5LjgxNXYxNDMuMjMzaC0yLjEzOA0KCQkJYy05LjkxNywwLTE3Ljk4NSw4LjA2OC0xNy45ODUsMTcuOTg1czguMDY4LDE3Ljk4NiwxNy45ODUsMTcuOTg2aDIuMTM4djQ2LjY5NmMwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQlzNy4yODctMy4yNjIsNy4yODctNy4yODd2LTQ2LjY5NmgzNDQuMzY0djEyOS4zMTFjLTAuMDU1LTAuMDMyLTAuMTEzLTAuMDYtMC4xNjktMC4wOTJjLTAuNzE0LTAuNDE1LTEuNDM5LTAuODEtMi4xNzYtMS4xODINCgkJCWMtMC4xNDQtMC4wNzMtMC4yOTEtMC4xMzktMC40MzUtMC4yMWMtMC42MTQtMC4zMDItMS4yMzUtMC41ODgtMS44NjMtMC44NTljLTAuMjEzLTAuMDkyLTAuNDI1LTAuMTgzLTAuNjM5LTAuMjcyDQoJCQljLTAuNzI3LTAuMy0xLjQ1OS0wLjU4NS0yLjIwMi0wLjg0NGMtMC4wNDQtMC4wMTUtMC4wODctMC4wMzMtMC4xMzEtMC4wNDljLTAuNzg0LTAuMjcxLTEuNTc4LTAuNTExLTIuMzc4LTAuNzM2DQoJCQljLTAuMjE5LTAuMDYyLTAuNDQtMC4xMTgtMC42Ni0wLjE3NmMtMC42NDItMC4xNjktMS4yODktMC4zMjMtMS45NC0wLjQ2MmMtMC4xODgtMC4wNC0wLjM3NS0wLjA4NS0wLjU2NC0wLjEyMw0KCQkJYy0wLjgxMi0wLjE2Mi0xLjYyOS0wLjMtMi40NTEtMC40MTRjLTAuMTc4LTAuMDI1LTAuMzU4LTAuMDQyLTAuNTM3LTAuMDY0Yy0wLjY3MS0wLjA4NC0xLjM0NS0wLjE1Mi0yLjAyMi0wLjIwNA0KCQkJYy0wLjIzNC0wLjAxOC0wLjQ2OC0wLjAzNi0wLjcwMi0wLjA1MWMtMC44NDItMC4wNTEtMS42ODUtMC4wODUtMi41MzMtMC4wODVjLTE1LjQ0NiwwLTI5LjY5OSw4LjYxLTM3LjA2MiwyMS45MTUNCgkJCWMtMC44NDYtMC4wMi0xLjY4NCwwLjAwMS0yLjUxNiwwLjA0NmMtMC4xOTUsMC4wMTEtMC4zODcsMC4wMzQtMC41ODEsMC4wNDhjLTAuNjM2LDAuMDQ3LTEuMjY4LDAuMTA3LTEuODk0LDAuMTkNCgkJCWMtMC4yMywwLjAzMS0wLjQ1OCwwLjA3MS0wLjY4NiwwLjEwN2MtMC41ODYsMC4wOTItMS4xNjgsMC4xOTctMS43NDQsMC4zMjFjLTAuMjM0LDAuMDUtMC40NjUsMC4xMDQtMC42OTcsMC4xNTkNCgkJCWMtMC41NzEsMC4xMzctMS4xMzUsMC4yODktMS42OTUsMC40NTdjLTAuMjE3LDAuMDY1LTAuNDM1LDAuMTI4LTAuNjUsMC4xOThjLTAuNTg4LDAuMTktMS4xNjcsMC40LTEuNzQsMC42MjQNCgkJCWMtMC4xNzEsMC4wNjctMC4zNDUsMC4xMjctMC41MTUsMC4xOTdjLTAuNzA1LDAuMjktMS4zOTksMC42MDItMi4wNzksMC45NDFjLTAuMDI4LDAuMDE0LTAuMDU4LDAuMDI2LTAuMDg2LDAuMDQNCgkJCWMtMC43MzMsMC4zNjktMS40NSwwLjc2Ni0yLjE1LDEuMTljLTAuMDY2LDAuMDQtMC4xMjksMC4wODYtMC4xOTUsMC4xMjdjLTAuNiwwLjM3LTEuMTg3LDAuNzU5LTEuNzYsMS4xNjkNCgkJCWMtMC4xODQsMC4xMzItMC4zNjEsMC4yNzItMC41NDIsMC40MDhjLTAuNDQ3LDAuMzM1LTAuODg4LDAuNjc3LTEuMzE2LDEuMDM2Yy0wLjIwNiwwLjE3Mi0wLjQwNywwLjM1MS0wLjYwOSwwLjUyOQ0KCQkJYy0wLjM5MSwwLjM0NS0wLjc3NCwwLjY5OC0xLjE0OCwxLjA2M2MtMC4yMDEsMC4xOTYtMC40MDEsMC4zOTQtMC41OTcsMC41OTZjLTAuMzY1LDAuMzc2LTAuNzE3LDAuNzYzLTEuMDY0LDEuMTU4DQoJCQljLTAuMTc4LDAuMjAzLTAuMzU5LDAuNDA0LTAuNTMzLDAuNjEyYy0wLjM2NywwLjQ0MS0wLjcxNywwLjg5Ny0xLjA2LDEuMzU5Yy0wLjEzMSwwLjE3Ni0wLjI2OSwwLjM0Ni0wLjM5NiwwLjUyNQ0KCQkJYy0wLjg4NSwxLjI0Ni0xLjY4OSwyLjU2LTIuMzkyLDMuOTQ0aC0zNS40NTdWMzQ2LjE4MWMwLTcuMTM1LTUuODA1LTEyLjkzOS0xMi45MzktMTIuOTM5aC03My4zNDkNCgkJCWMtNy4xMzUsMC0xMi45MzksNS44MDUtMTIuOTM5LDEyLjkzOXYxMjQuODUzaC02MC42MzljLTAuMTg4LTAuNDY5LTAuMzk5LTAuOTI1LTAuNjA1LTEuMzgzDQoJCQljLTAuMDg4LTAuMTk0LTAuMTY2LTAuMzk0LTAuMjU2LTAuNTg2Yy0wLjM1My0wLjc0OS0wLjcyOC0xLjQ4My0xLjEyOC0yLjIwMmMtMC4wNzUtMC4xMzUtMC4xNi0wLjI2My0wLjIzNi0wLjM5Nw0KCQkJYy0wLjMzMS0wLjU3Ny0wLjY3My0xLjE0Ny0xLjAzNC0xLjcwM2MtMC4xNTEtMC4yMzItMC4zMTEtMC40NTYtMC40NjctMC42ODVjLTAuMzA1LTAuNDQ4LTAuNjE2LTAuODkxLTAuOTQtMS4zMjQNCgkJCWMtMC4xODMtMC4yNDUtMC4zNzItMC40ODQtMC41NjItMC43MjRjLTAuMzItMC40MDUtMC42NDYtMC44MDMtMC45ODItMS4xOTNjLTAuMjAyLTAuMjM0LTAuNDA1LTAuNDY3LTAuNjEyLTAuNjk1DQoJCQljLTAuMzUyLTAuMzg4LTAuNzE0LTAuNzY2LTEuMDgxLTEuMTM4Yy0wLjIwNS0wLjIwNy0wLjQwNy0wLjQxNy0wLjYxNi0wLjYyYy0wLjQxOS0wLjQwNS0wLjg1Mi0wLjc5NC0xLjI5LTEuMTc4DQoJCQljLTAuMTcyLTAuMTUxLTAuMzM3LTAuMzA4LTAuNTExLTAuNDU1Yy0wLjYyMi0wLjUyNS0xLjI1OS0xLjAzMS0xLjkxNC0xLjUxM2MtMC4wNjctMC4wNDktMC4xMzctMC4wOTMtMC4yMDQtMC4xNDENCgkJCWMtMC41ODgtMC40MjYtMS4xODgtMC44MzYtMS44MDEtMS4yMjZjLTAuMjI1LTAuMTQ0LTAuNDU4LTAuMjc2LTAuNjg2LTAuNDE0Yy0wLjQ2Ny0wLjI4My0wLjkzOC0wLjU2Mi0xLjQxOC0wLjgyNA0KCQkJYy0wLjI3LTAuMTQ4LTAuNTQ1LTAuMjg3LTAuODE5LTAuNDI4Yy0wLjQ1Ni0wLjIzNC0wLjkxNi0wLjQ2MS0xLjM4My0wLjY3NmMtMC4yOS0wLjEzNC0wLjU4MS0wLjI2NC0wLjg3NS0wLjM5MQ0KCQkJYy0wLjQ3My0wLjIwMy0wLjk1My0wLjM5NC0xLjQzNi0wLjU3OGMtMC4yOTEtMC4xMS0wLjU3OS0wLjIyMy0wLjg3My0wLjMyNmMtMC41MjgtMC4xODYtMS4wNjUtMC4zNTMtMS42MDQtMC41MTQNCgkJCWMtMC4yNTYtMC4wNzctMC41MDgtMC4xNjItMC43NjYtMC4yMzNjLTAuOC0wLjIyMS0xLjYwOC0wLjQyMS0yLjQyOC0wLjU4OGMtMC41MjctMC43MTgtMS4wNzQtMS40MTgtMS42MzctMi4wOTkNCgkJCWMtMC4xOTMtMC4yMzMtMC4zOTgtMC40NTItMC41OTUtMC42ODFjLTAuMzc4LTAuNDQtMC43NTQtMC44ODItMS4xNDctMS4zMDZjLTAuMjQ2LTAuMjY1LTAuNTA1LTAuNTE0LTAuNzU3LTAuNzcyDQoJCQljLTAuMzYtMC4zNjktMC43MTYtMC43NDQtMS4wODctMS4xYy0wLjI3Ny0wLjI2NS0wLjU2Ni0wLjUxNC0wLjg0OS0wLjc3MmMtMC4zNjItMC4zMy0wLjcxOS0wLjY2NC0xLjA5MS0wLjk4MQ0KCQkJYy0wLjMwMS0wLjI1Ny0wLjYxNC0wLjQ5OC0wLjkyMS0wLjc0N2MtMC4zNjgtMC4yOTgtMC43MzItMC42LTEuMTA4LTAuODg2Yy0wLjMyMi0wLjI0NC0wLjY1NC0wLjQ3Mi0wLjk4MS0wLjcwNw0KCQkJYy0wLjM3Ni0wLjI3LTAuNzQ5LTAuNTQ0LTEuMTMzLTAuODAxYy0wLjMzOS0wLjIyNy0wLjY4Ny0wLjQzOS0xLjAzMS0wLjY1N2MtMC4zODctMC4yNDUtMC43NzEtMC40OTMtMS4xNjQtMC43MjUNCgkJCWMtMC4zNTMtMC4yMDktMC43MTUtMC40MDItMS4wNzQtMC42MDFjLTAuMzk3LTAuMjItMC43OTItMC40NDMtMS4xOTYtMC42NTFjLTAuMzY4LTAuMTktMC43NDItMC4zNjQtMS4xMTUtMC41NDQNCgkJCWMtMC40MDYtMC4xOTUtMC44MTEtMC4zOTMtMS4yMjQtMC41NzZjLTAuMzgtMC4xNjktMC43NjUtMC4zMjMtMS4xNS0wLjQ4MmMtMC40MTctMC4xNzEtMC44MzItMC4zNDQtMS4yNTUtMC41MDMNCgkJCWMtMC4zODktMC4xNDctMC43ODQtMC4yOC0xLjE3OC0wLjQxNmMtMC40MjctMC4xNDctMC44NTQtMC4yOTYtMS4yODYtMC40M2MtMC4zOTgtMC4xMjQtMC44MDEtMC4yMzYtMS4yMDQtMC4zNDkNCgkJCWMtMC40MzctMC4xMjMtMC44NzMtMC4yNDYtMS4zMTQtMC4zNTZjLTAuNDA3LTAuMTAxLTAuODE3LTAuMTkxLTEuMjI3LTAuMjgxYy0wLjQ0NS0wLjA5OC0wLjg5LTAuMTk0LTEuMzM4LTAuMjc5DQoJCQljLTAuNDE0LTAuMDc4LTAuODMxLTAuMTQ1LTEuMjQ4LTAuMjEyYy0wLjQ1My0wLjA3Mi0wLjkwNS0wLjE0My0xLjM2MS0wLjIwMmMtMC40Mi0wLjA1NC0wLjg0Mi0wLjA5OC0xLjI2NC0wLjE0MQ0KCQkJYy0wLjQ2LTAuMDQ3LTAuOTIxLTAuMDktMS4zODUtMC4xMjJjLTAuNDI0LTAuMDMtMC44NS0wLjA1MS0xLjI3Ni0wLjA2OWMtMC4yNjktMC4wMTItMC41MzQtMC4wMzYtMC44MDQtMC4wNDN2LTI5Ljg1MQ0KCQkJYzAtNC4wMjQtMy4yNjItNy4yODctNy4yODctNy4yODdjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODd2MzEuODU2Yy0xNy4wNTMsNS4yNzktMjkuODM5LDIwLjM1Ni0zMS43NSwzOC42MjNoLTIuOTQyDQoJCQljLTExLjI5NCwwLTIwLjQ4Myw5LjE4OS0yMC40ODMsMjAuNDgzczkuMTg5LDIwLjQ4MywyMC40ODMsMjAuNDgzaDQ0Mi44OTRjMTEuMjk0LDAsMjAuNDgzLTkuMTg5LDIwLjQ4My0yMC40ODMNCgkJCUM0OTcuOTI3LDQ4MC4yMjMsNDg4LjczOCw0NzEuMDM0LDQ3Ny40NDQsNDcxLjAzNHogTTIzOS4zMzMsMjYuNDZjMC0wLjAwMSwwLjAwMS0wLjAwMSwwLjAwMS0wLjAwMWwzLjA4OS00LjYyNw0KCQkJYzMuMDM0LTQuNTQ1LDguMTA5LTcuMjU4LDEzLjU3NC03LjI1OGM1LjQ2NSwwLDEwLjU0LDIuNzEzLDEzLjU3NCw3LjI1OWw0OC4yNzgsNzIuMzA4aC01LjIwMmwtNDYuMTAzLTY5LjA1Mw0KCQkJYy0yLjM1OC0zLjUzMS02LjMtNS42MzktMTAuNTQ2LTUuNjM5Yy00LjI0NiwwLTguMTg5LDIuMTA4LTEwLjU0Niw1LjYzOUwxOTkuMzQ3LDk0LjE0aC01LjIwMmw4Ljc3OC0xMy4xNDhMMjM5LjMzMywyNi40NnoNCgkJCSBNMjk1LjEyNCw5NC4xNEgyMTYuODdsMzkuMTI3LTU4LjYwNEwyOTUuMTI0LDk0LjE0eiBNNzkuODE2LDI5LjdoMTM5LjgzMUwyMDkuNTEsNDQuODgzTDE3Ni42MjIsOTQuMTRINjMuMDgxTDc5LjgxNiwyOS43eg0KCQkJIE02MC45NDgsMTE0LjgwOXYtNi4wOTZoMzkwLjA5OHY2LjA5Nkg2MC45NDh6IE00MjguMTc5LDEyOS4zODJ2MTQzLjIzM0g4My44MTVWMTI5LjM4Mkg0MjguMTc5eiBNNjcuMTA0LDI5NC4wMTQNCgkJCWMtMS44ODEsMC0zLjQxMi0xLjUzMS0zLjQxMi0zLjQxM2MwLTEuODgxLDEuNTMtMy40MTIsMy40MTItMy40MTJINDQ0Ljg5YzEuODgxLDAsMy40MTIsMS41MzEsMy40MTIsMy40MTINCgkJCWMwLDEuODgyLTEuNTMsMy40MTMtMy40MTIsMy40MTNINjcuMTA0eiBNMzYwLjQxNiw0NzAuODkzYzAuMzE3LTAuMTg3LDAuNjM4LTAuMzY4LDAuOTY3LTAuNTM1DQoJCQljMC4xNTYtMC4wNzksMC4zMTYtMC4xNDksMC40NzQtMC4yMjNjMC4yOC0wLjEzMSwwLjU2Mi0wLjI1NiwwLjg1LTAuMzcxYzAuMTgzLTAuMDczLDAuMzY4LTAuMTQyLDAuNTUzLTAuMjA4DQoJCQljMC4yNzItMC4wOTgsMC41NDctMC4xODcsMC44MjQtMC4yNzFjMC4yMDEtMC4wNiwwLjQwMi0wLjEyMSwwLjYwNS0wLjE3NGMwLjI3Ni0wLjA3MiwwLjU1Ni0wLjEzMiwwLjgzNi0wLjE5DQoJCQljMC4yMDctMC4wNDMsMC40MTEtMC4wOTEsMC42Mi0wLjEyNmMwLjM1Ni0wLjA2LDAuNzE4LTAuMTAyLDEuMDgxLTAuMTM5YzAuMTc2LTAuMDE4LDAuMzUyLTAuMDM5LDAuNTI5LTAuMDUyDQoJCQljMC40NDYtMC4wMzEsMC44OTYtMC4wNDcsMS4zNS0wLjA0M2MwLjMzNywwLjAwMywwLjY3OSwwLjAzMiwxLjAyLDAuMDU2YzAuMjM0LDAuMDE2LDAuNDY3LDAuMDIsMC43MDIsMC4wNDYNCgkJCWMwLjU3MiwwLjA2NSwxLjE0NiwwLjE1NSwxLjcxOSwwLjI3OWMzLjUwOSwwLjc1Niw3LjA0Ny0xLjE1NSw4LjMzNy00LjUwN2M0LjA5Mi0xMC42MzksMTQuNDk2LTE3Ljc4NywyNS44OTEtMTcuNzg3DQoJCQljNy45NSwwLDE1LjUzMywzLjQyOCwyMC44MDYsOS40MDZjMC4yMSwwLjIzOCwwLjQzMywwLjQ2LDAuNjY5LDAuNjY2YzAuMDEzLDAuMDExLDAuMDI4LDAuMDIsMC4wNDEsMC4wMzINCgkJCWMwLjkzMiwwLjgwNCwyLjA0MywxLjM1NSwzLjIzLDEuNjA4YzAuOTAzLDAuMTkzLDEuODQ4LDAuMjE2LDIuNzg3LDAuMDUxYzEwLjQxNi0xLjgzMSwxOS45NjQsMy44NjgsMjMuOTIyLDEyLjYyNGgtOTguMDYxDQoJCQlDMzYwLjI1LDQ3MC45ODUsMzYwLjMzNCw0NzAuOTQyLDM2MC40MTYsNDcwLjg5M3ogTTI5MS4wMzgsMzQ3LjgxNXYxMjMuMjE5aC03MC4wODJWMzQ3LjgxNUgyOTEuMDM4eiBNNzcuNzk3LDQ0NS4zNTINCgkJCWMwLjc2Ny0wLjEyMSwxLjUzNi0wLjIxNSwyLjMwNS0wLjI3OWMwLjA2Ni0wLjAwNSwwLjEzMi0wLjAwOSwwLjE5OC0wLjAxNGMwLjc4NC0wLjA2LDEuNTY3LTAuMDk2LDIuMzQzLTAuMDk2DQoJCQljMTAuNjg5LDAsMjAuNDY1LDUuNDI0LDI2LjE1LDE0LjUwOWMxLjE4OCwxLjg5OSwzLjE4NSwzLjE0Nyw1LjQxNCwzLjM4MWMwLjUyMywwLjA1NSwxLjAzOCwwLjEzNSwxLjU0OSwwLjIyNg0KCQkJYzAuMTE1LDAuMDIsMC4yMywwLjA0MSwwLjM0NSwwLjA2M2MwLjUsMC4wOTcsMC45OTUsMC4yMDgsMS40ODMsMC4zMzhjMC4wNjMsMC4wMTcsMC4xMjUsMC4wMzcsMC4xODksMC4wNTUNCgkJCWMwLjQ0NCwwLjEyMywwLjg4MSwwLjI2MSwxLjMxMywwLjQxMWMwLjA5OSwwLjAzNCwwLjE5OSwwLjA2NywwLjI5OCwwLjEwM2MwLjQ2NywwLjE2OSwwLjkyNywwLjM1MywxLjM3OSwwLjU1Mw0KCQkJYzAuMDg4LDAuMDM5LDAuMTc1LDAuMDgxLDAuMjYzLDAuMTIyYzAuNDAzLDAuMTg1LDAuOCwwLjM4LDEuMTksMC41ODhjMC4wNzQsMC4wMzksMC4xNDgsMC4wNzYsMC4yMjIsMC4xMTYNCgkJCWMwLjQzMSwwLjIzNiwwLjg1MiwwLjQ4OCwxLjI2NSwwLjc1MmMwLjA5NCwwLjA2LDAuMTg3LDAuMTIyLDAuMjgsMC4xODRjMC4zODgsMC4yNTcsMC43NjksMC41MjMsMS4xMzksMC44MDMNCgkJCWMwLjAzMiwwLjAyNCwwLjA2NiwwLjA0NywwLjA5OCwwLjA3MmMwLjM5MiwwLjMsMC43NywwLjYxNywxLjE0MSwwLjk0M2MwLjA4NywwLjA3NywwLjE3NCwwLjE1NCwwLjI2LDAuMjMyDQoJCQljMC4zNjUsMC4zMzEsMC43MjIsMC42NzEsMS4wNjQsMS4wMjdjMC4wMjksMC4wMywwLjA1NiwwLjA2MiwwLjA4NCwwLjA5MmMwLjMxOSwwLjMzNiwwLjYyNSwwLjY4MywwLjkyMywxLjAzOQ0KCQkJYzAuMDcyLDAuMDg2LDAuMTQ1LDAuMTcyLDAuMjE2LDAuMjZjMC4wNTMsMC4wNjYsMC4xMDEsMC4xMzYsMC4xNTQsMC4yMDJINTIuMTgxQzU0LjIyOSw0NTcuODY4LDY0LjY0Myw0NDcuNDM5LDc3Ljc5Nyw0NDUuMzUyeg0KCQkJIE00NzcuNDQ0LDQ5Ny40MjdIMzQuNTVjLTMuMjU5LDAtNS45MS0yLjY1MS01LjkxLTUuOTFjMC0zLjI1OSwyLjY1MS01LjkxLDUuOTEtNS45MWg0NDIuODk0YzMuMjU5LDAsNS45MSwyLjY1MSw1LjkxLDUuOTENCgkJCUM0ODMuMzU0LDQ5NC43NzYsNDgwLjcwMyw0OTcuNDI3LDQ3Ny40NDQsNDk3LjQyN3oiLz4NCiAgICAgICAgPHBhdGggIGQ9Ik0xODYuMjEzLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU2Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzN2MtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4OCw3LjI4N2g4Ni43OWM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkzLjUsMjM0LjgzNSwxOTAuMjM4LDIzMS41NzIsMTg2LjIxMywyMzEuNTcyeiBNMTY4LjMwMywyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0yOTkuNjY4LDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zOC0xMC4zOGgtNTkuMzU1Yy01LjcyNCwwLTEwLjM4LDQuNjU3LTEwLjM4LDEwLjM4djY1Ljc0Ng0KCQkJaC0zLjMzOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLjAwMSw0LjAyNCwzLjI2Myw3LjI4Nyw3LjI4Nyw3LjI4N2g4Ni43OTFjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzMwNi45NTUsMjM0LjgzNSwzMDMuNjkzLDIzMS41NzIsMjk5LjY2OCwyMzEuNTcyeiBNMjgxLjc1OCwyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00MTIuNTcyLDIzMS41NzJoLTMuMzM4di02NS43NDZjMC01LjcyNC00LjY1Ny0xMC4zOC0xMC4zNzktMTAuMzhoLTU5LjM1NmMtNS43MjQsMC0xMC4zOCw0LjY1Ny0xMC4zOCwxMC4zOHY2NS43NDYNCgkJCWgtMy4zMzhjLTQuMDI1LDAtNy4yODcsMy4yNjItNy4yODcsNy4yODdjMCw0LjAyNCwzLjI2Miw3LjI4Nyw3LjI4Nyw3LjI4N2g4Ni43OTFjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzQxOS44NTksMjM0LjgzNSw0MTYuNTk3LDIzMS41NzIsNDEyLjU3MiwyMzEuNTcyeiBNMzk0LjY2MSwyMzEuNTczaC01MC45N3YtNjEuNTU0aDUwLjk3VjIzMS41NzN6Ii8+DQogICAgICAgIDxwYXRoIG9wYWNpdHk9IjAuMjUiIGQ9Ik0xODIuODEzLDQxMy44MzNoLTAuNTI4di02MC4wNDVjMC01LjU2Ni00LjUyOS0xMC4wOTUtMTAuMDk1LTEwLjA5NWgtNTMuODg2Yy01LjU2NiwwLTEwLjA5NSw0LjUyOS0xMC4wOTUsMTAuMDk1djYwLjA0NQ0KCQkJaC0wLjUyOGMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N2MwLDQuMDI1LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3aDcuODE0aDU5LjUwNGg3LjgxNGM0LjAyNSwwLDcuMjg3LTMuMjYyLDcuMjg3LTcuMjg3DQoJCQlDMTkwLjEsNDE3LjA5NSwxODYuODM4LDQxMy44MzMsMTgyLjgxMyw0MTMuODMzeiBNMTY3LjcxMiw0MTMuODMzaC00NC45MzF2LTU1LjU2N2g0NC45MzFWNDEzLjgzM3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgZD0iTTQwNC4zMTQsNDEzLjgzM2gtMC41Mjh2LTYwLjA0NWMwLTUuNTY2LTQuNTI5LTEwLjA5NS0xMC4wOTUtMTAuMDk1aC01My44ODZjLTUuNTY2LDAtMTAuMDk2LDQuNTI5LTEwLjA5NiwxMC4wOTV2NjAuMDQ1DQoJCQloLTAuNTI4Yy00LjAyNSwwLTcuMjg3LDMuMjYyLTcuMjg3LDcuMjg3YzAsNC4wMjUsMy4yNjIsNy4yODcsNy4yODcsNy4yODdoNy44MTRIMzk2LjVoNy44MTRjNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4Nw0KCQkJQzQxMS42MDEsNDE3LjA5NSw0MDguMzM5LDQxMy44MzMsNDA0LjMxNCw0MTMuODMzeiBNMzg5LjIxMyw0MTMuODMzaC00NC45MzJ2LTU1LjU2N2g0NC45MzJWNDEzLjgzM3oiLz4NCiAgICAgICAgPHBhdGggb3BhY2l0eT0iMC4yNSIgZD0iTTI3Ni41NDUsNDA1LjA4OWMtNC4wMjUsMC03LjI4NywzLjI2Mi03LjI4Nyw3LjI4N3YxMi42M2MwLDQuMDI0LDMuMjYyLDcuMjg3LDcuMjg3LDcuMjg3DQoJCQljNC4wMjUsMCw3LjI4Ny0zLjI2Miw3LjI4Ny03LjI4N3YtMTIuNjNDMjgzLjgzMiw0MDguMzUyLDI4MC41Nyw0MDUuMDg5LDI3Ni41NDUsNDA1LjA4OXoiLz4NCiAgICA8L2c+DQo8L3N2Zz4NCg==",Shed:aSe,"Sleeping Area":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ4MCA0ODAiPg0KICAgIDxnIGZpbGw9ImN1cnJlbnRDb2xvciI+DQogICAgICAgIDxwYXRoIGQ9Ik00NTYsMjI0Yy0xNC4xMzMsMC0yNCw2LjMwMS0yNCwxNS4zMnYyNy41MDVDNDE5LjMzMywyNDEuNzkzLDM5OS44NSwyMjQsMzc2LDIyNEgxNTJjLTQuNDE3LTAuMDAxLTcuOTk5LDMuNTc5LTgsNy45OTYNCgkJCWMwLDAuMDAxLDAsMC4wMDMsMCwwLjAwNHY0OC4wNjdjMC4wNDUtMTMuMDUyLTUuMjAxLTI2LjA3NS0xNS41ODYtMzUuNTgzYy0xOS41NTItMTcuOTAyLTQ5LjkxNS0xNi41NjQtNjcuODE2LDIuOTg5DQoJCQljLTE2Ljc2NCwxOC4zMDktMTYuODAxLDQ2LjM4LTAuMDg2LDY0LjczNGMtNC42MTIsMC41MDgtOC45NjgsMi4zOC0xMi41MTIsNS4zNzVWMTE1LjE5OUM0OCwxMDQuNDM0LDM3LjQ2MSw5NiwyNCw5Ng0KCQkJcy0yNCw4LjQzNC0yNCwxOS4xOTl2MzQ1LjYwMkMwLDQ3MS41NjYsMTAuNTM5LDQ4MCwyNCw0ODBzMjQtOC40MzQsMjQtMTkuMTk5VjQwOGgzODR2NTYuNjhjMCw5LjAxOSw5Ljg2NywxNS4zMiwyNCwxNS4zMg0KCQkJczI0LTYuMzAxLDI0LTE1LjMyVjIzOS4zMkM0ODAsMjMwLjMwMSw0NzAuMTMzLDIyNCw0NTYsMjI0eiBNMzIsNDYwLjgwMWMtMC4wODYsMC42NTYtMi43NzMsMy4xOTktOCwzLjE5OQ0KCQkJYy01LjI1LDAtNy45MjItMi41NDMtOC0zLjE5OVYxMTUuMTk5YzAuMDc4LTAuNjU2LDIuNzUtMy4xOTksOC0zLjE5OWM1LjIyNywwLDcuOTE0LDIuNTQzLDgsMy4xOTlWNDYwLjgwMXogTTE2MCwyNDBoMjE2DQoJCQljMzAuMTcyLDAsNTMuMTcyLDQ0LjkyNiw1NS43NTgsODhIMTYwVjI0MHogTTE0NCwyODAuMDgzdjM4LjU2Yy0zLjQ1Mi0zLjM1My03Ljg0OC01LjU2Ni0xMi41OTctNi4zNDINCgkJCUMxMzkuNzkzLDMwMy4xMzcsMTQzLjk1NiwyOTEuNiwxNDQsMjgwLjA4M3ogTTk2LDI0OGMxNy42NzMsMCwzMiwxNC4zMjcsMzIsMzJjMCwxNy42NzMtMTQuMzI3LDMyLTMyLDMycy0zMi0xNC4zMjctMzItMzINCgkJCUM2NC4wMTksMjYyLjMzNSw3OC4zMzUsMjQ4LjAxOSw5NiwyNDh6IE00MzIsMzkySDQ4di00OC4wMjNjNC4xNjMtMC4zMjgsNy4zNzQtMy44MDEsNy4zNzUtNy45NzcNCgkJCWMtMC4wNzctNC4zMzEsMy4zNjQtNy45MDksNy42OTUtOGg2NC42MWM0LjMzMSwwLjA5MSw3Ljc3MiwzLjY2OSw3LjY5NSw4Yy0wLjAwMSw0LjQxNywzLjU3OSw3Ljk5OSw3Ljk5Niw4DQoJCQljMC4wMDEsMCwwLjAwMywwLDAuMDA0LDBINDMyVjM5MnogTTQ2NCw0NjIuNTk0Yy01LjE2OSwxLjg3NS0xMC44MzEsMS44NzUtMTYsMFYyNDEuNDA2YzUuMTY5LTEuODc1LDEwLjgzMS0xLjg3NSwxNiwwVjQ2Mi41OTR6Ig0KICAgICAgICAvPg0KICAgICAgICA8cGF0aCBkPSJNMTM3LjA3OCwxNzZsMjkuMDctMzQuODc5YzEuOTg2LTIuMzg2LDIuNDEzLTUuNzA1LDEuMDk0LTguNTE2Yy0xLjMxNi0yLjgxLTQuMTM5LTQuNjA1LTcuMjQyLTQuNjA1aC00OHYxNmgzMC45MjINCgkJCWwtMjkuMDcsMzQuODc5Yy0yLjgyNywzLjM5OC0yLjM2NCw4LjQ0NCwxLjAzNCwxMS4yN2MxLjQzNywxLjE5NSwzLjI0NiwxLjg1LDUuMTE0LDEuODUxaDQ4di0xNkgxMzcuMDc4eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMjI0LjM1OSwxMzZsNDUuOTUzLTU5LjA5YzEuODc3LTIuNDExLDIuMjE3LTUuNjgxLDAuODc1LTguNDI2Yy0xLjM0NC0yLjc0My00LjEzMi00LjQ4My03LjE4OC00LjQ4NGgtNjR2MTZoNDcuNjQxDQoJCQlsLTQ1Ljk1Myw1OS4wOWMtMi43MTQsMy40ODQtMi4wODksOC41MDksMS4zOTYsMTEuMjIzYzEuNDA1LDEuMDk0LDMuMTM2LDEuNjg4LDQuOTE3LDEuNjg4aDY0di0xNkgyMjQuMzU5eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMzI4LDk2bDYyLjM5OC04My4xOTljMi42NTItMy41MzMsMS45MzktOC41NDYtMS41OTQtMTEuMTk5QzM4Ny40MTksMC41NjIsMzg1LjczMywwLDM4NCwwaC03MnYxNmg1NmwtNjIuMzk4LDgzLjE5OQ0KCQkJYy0xLjgxOCwyLjQyNC0yLjExMiw1LjY2OC0wLjc1OCw4LjM3OUMzMDYuMiwxMTAuMjg4LDMwOC45NywxMTIsMzEyLDExMmg4MFY5NkgzMjh6Ii8+DQogICAgPC9nPg0KPC9zdmc+DQo=",Stairway:MSe,Stairwell:cSe,Storeroom:uSe,"Summer House":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMS45OTkgNTExLjk5OSI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTE3My44MzIsMjI1LjI2M2gtNDMuMDM5Yy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41djYwLjEzNGMwLDQuMTQyLDMuMzU3LDcuNSw3LjUsNy41aDQzLjAzOWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41DQoJCQl2LTYwLjEzNEMxODEuMzMyLDIyOC42MjIsMTc3Ljk3NCwyMjUuMjYzLDE3My44MzIsMjI1LjI2M3ogTTE2Ni4zMzEsMjg1LjM5N2gtMjguMDM4di00NS4xMzNoMjguMDM4VjI4NS4zOTd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik00NTkuMTI3LDIwMS4xOTNjMy4zMTQsMi4yNzgsOC4wOTEsMS40NzEsMTAuNDMtMS45MzJjMCwwLDIzLjAwOS0zMy40NjksMjMuMDI5LTMzLjQ5OA0KCQkJYzIuMzE1LTMuMzY4LDEuNDI4LTguMTIxLTEuOTMyLTEwLjQzMUwyNzEuNzYzLDQuODYxYy05LjQyOS02LjQ4LTIyLjA5Ny02LjQ4MS0zMS41MjYsMGMwLDAtMTM5Ljc2Miw5Ni4wNzctMTQwLjI3Myw5Ni40MjgNCgkJCWMtNy45MTEsNS40MzgsMC40MjksMTcuOTEsOC40OTcsMTIuMzYzbDE0MC4yNzQtOTYuNDI5YzQuMzQ3LTIuOTg3LDEwLjE4Ny0yLjk4NywxNC41MzEtMC4wMDFsMjEyLjcwOSwxNDYuMjI0bC0xNC41MzEsMjEuMTM3DQoJCQljMCwwLTIwMS4xNDMtMTM4LjI3Mi0yMDEuMTk1LTEzOC4zMDhjLTIuNDk1LTEuNzE1LTUuOTk5LTEuNzE4LTguNDk4LTAuMDAxTDUwLjU1NywxODQuNTgzbC0xNC41My0yMS4xMzcNCgkJCWMwLDAsNDcuMTE3LTMyLjM5LDQ3LjI4OS0zMi41MDljNy44MDctNS4zNjYtMC40MTYtMTcuOTE3LTguNDk4LTEyLjM2MmMwLDAtNTMuMzAxLDM2LjY0LTUzLjQ3MSwzNi43NTcNCgkJCWMtMy4zNzQsMi4zMi00LjI0MSw3LjA3MS0xLjkzMywxMC40MzFsMjEuNzA5LDMxLjU3OXYzMDcuMTU2YzAsNC4xNDIsMy4zNTgsNy41LDcuNSw3LjVIMjU2YzQuMTQyLDAsNy41LTMuMzU4LDcuNS03LjVWMzk1Ljk3MQ0KCQkJSDQwMi42NHYxMDguNTI4YzAsNC4xNDIsMy4zNTgsNy41LDcuNTAxLDcuNWgzMC40ODhjNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNVYzOTUuOTcxaDIzLjc2OWM0LjE0MiwwLDcuNS0zLjM1OCw3LjUtNy41di0zMC40ODcNCgkJCWMwLTQuMTQzLTMuMzU4LTcuNS03LjUtNy41aC0yMy43Njl2LTU3LjI1OWgyMy43NjljNC4xNDIsMCw3LjUtMy4zNTgsNy41LTcuNXYtMzAuNDg4YzAtNC4xNDItMy4zNTgtNy41LTcuNS03LjVoLTIzLjc2OXYtNTQuMTAzDQoJCQlMNDU5LjEyNywyMDEuMTkzeiBNNDE3LjY0MSwxODYuODc2aDE1LjQ4N3Y2MC44NThoLTE1LjQ4N1YxODYuODc2eiBNMjU2LDYxLjU1NmwzOS4wNzUsMjYuODYxaC03OC4xNDlMMjU2LDYxLjU1NnoNCgkJCSBNNTYuMTI1LDI3MC4zMzJoMzguMzk5djUzLjA1NWMwLDQuMTQxLDMuMzU4LDcuNSw3LjUsNy41SDIwMi42YzQuMTQyLDAsNy41MDEtMy4zNTgsNy41MDEtNy41di01My4wNTVoMzguMzk4djY4LjQ1Nkg1Ni4xMjUNCgkJCVYyNzAuMzMyeiBNMTA5LjUyNSwzMTUuODg2VjIwOS43NzdoODUuNTc1djEwNi4xMDlIMTA5LjUyNXogTTk0LjUyNCw0OTYuOTk4SDU2LjEyNXYtNTkuNzU0aDM4LjM5OVY0OTYuOTk4eiBNMTY2LjMzMSw0OTYuOTk3DQoJCQloLTI4LjAzOHYtODUuNzgzaDI4LjAzOFY0OTYuOTk3eiBNMTk1LjA5OSw0OTYuOTk3aC0xMy43Njd2LTkzLjI4M2MwLTQuMTQyLTMuMzU4LTcuNS03LjUtNy41aC00My4wMzkNCgkJCWMtNC4xNDIsMC03LjUwMSwzLjM1OC03LjUwMSw3LjV2OTMuMjgzaC0xMy43NjhWMzgwLjcyN2g4NS41NzVWNDk2Ljk5N3ogTTI0OC40OTksNDk2Ljk5OEgyMTAuMXYtNTkuNzU0aDM4LjM5OFY0OTYuOTk4eg0KCQkJIE0yNDguNSw0MjIuMjQ0aC0zOC4zOTl2LTQ5LjAxOGMtMC4wMDEtNC4xNDItMy4zNTktNy41LTcuNTAyLTcuNUgxMDIuMDI0Yy00LjE0MiwwLTcuNSwzLjM1OC03LjUsNy41MDF2NDkuMDE4SDU2LjEyNXYtNjguNDU2DQoJCQlIMjQ4LjVWNDIyLjI0NHogTTI0OC41LDI1NS4yMjVjMCwwLjAwMywwLDAuMDA2LDAsMC4wMXYwLjA5NmgtMzguMzk5di01My4wNTVjMC00LjE0Mi0zLjM1OC03LjUtNy41LTcuNUgxMDIuMDI0DQoJCQljLTQuMTQyLDAtNy41LDMuMzU4LTcuNSw3LjV2NTMuMDU1SDU2LjEyNXYtNTYuMzczbDE3LjY2My0xMi4xNDNjMC4yOTcsMC4wMzYsMC41OTcsMC4wNiwwLjkwNCwwLjA2SDI0OC41VjI1NS4yMjV6DQoJCQkgTTk1LjUyMywxNzEuODc1bDk5LjU4MS02OC40NTZoMTIxLjc5M2w5OS41ODEsNjguNDU2aC02LjMzNkg5NS41MjN6IE00MDIuNjQsMTg2Ljg3NnY2MC44NThIMjYzLjUwMXYtNjAuODU4SDQwMi42NHoNCgkJCSBNMjYzLjUwMSwyOTMuMjIzaDE1LjQ4NnY1Ny4yNTloLTE1LjQ4NlYyOTMuMjIzeiBNNDMzLjEyOCw0OTYuOTk4aC0xNS40ODdWMzk1Ljk3MWgxNS40ODdWNDk2Ljk5OHogTTQ2NC4zOTcsMzY1LjQ4NHYxNS40ODYNCgkJCUgyNjMuNTAxdi0xNS40ODZINDY0LjM5N3ogTTI5My45ODgsMzUwLjQ4MnYtNTcuMjU5aDE1LjQ4N3Y1Ny4yNTlIMjkzLjk4OHogTTMyNC40NzYsMzUwLjQ4MnYtNTcuMjU5aDE2LjMzN3Y1Ny4yNTlIMzI0LjQ3NnoNCgkJCSBNMzU1LjgxNCwzNTAuNDgydi01Ny4yNTloMTUuNDg3djU3LjI1OUgzNTUuODE0eiBNMzg2LjMwMiwzNTAuNDgydi01Ny4yNTloMTYuMzM3djU3LjI1OUgzODYuMzAyeiBNNDE3LjY0MSwzNTAuNDgydi01Ny4yNTkNCgkJCWgxNS40ODd2NTcuMjU5SDQxNy42NDF6IE00NjQuMzk3LDI2Mi43MzV2MTUuNDg3SDI2My41MDF2LTE1LjQ4N0g0NjQuMzk3eiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K","Swimming Pool":"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE4Ny43MzMgMTg3LjczMyI+DQogICAgPGcgZmlsbD0iY3VycmVudENvbG9yIj4NCiAgICAgICAgPHBhdGggZD0iTTE4Ny41OTksMTUxLjQ1OEwxNTMuNDY1LDMzLjE4NmMtMC40MjItMS40NjEtMS43NTgtMi40NjYtMy4yNzktMi40NjZIMzcuNTQ3Yy0xLjUyMSwwLTIuODU3LDEuMDA1LTMuMjc5LDIuNDY2DQoJCQlMMC4xMzUsMTUxLjQ1OEMwLjA0NCwxNTEuNzY1LDAsMTUyLjA4NSwwLDE1Mi40MDV2MjUuMDg4YzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNIMTg0LjMyDQoJCQljMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxM3YtMjUuMDg4QzE4Ny43MzMsMTUyLjA4NSwxODcuNjg3LDE1MS43NjUsMTg3LjU5OSwxNTEuNDU4eiBNMTgwLjkwNywxNzQuMDhINi44Mjd2LTIxLjE5Mg0KCQkJTDQwLjExNSwzNy41NDdIMTQ3LjYybDMzLjI4NywxMTUuMzQyVjE3NC4wOHoiLz4NCiAgICAgICAgPHBhdGggZD0iTTc4LjUwNyw2LjgyN2MtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3Y1MS4yYzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNzMy40MTMtMS41MjksMy40MTMtMy40MTN2LTUxLjINCgkJCUM4MS45Miw4LjM1Niw4MC4zOTEsNi44MjcsNzguNTA3LDYuODI3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA5LjIyNyw2LjgyN2MtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3Y1MS4yYzAsMS44ODQsMS41MjksMy40MTMsMy40MTMsMy40MTNjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJdi01MS4yQzExMi42NCw4LjM1NiwxMTEuMTExLDYuODI3LDEwOS4yMjcsNi44Mjd6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xMDkuMjI3LDE3LjA2N2gtMzAuNzJjLTEuODg0LDAtMy40MTMsMS41MjktMy40MTMsMy40MTNzMS41MjksMy40MTMsMy40MTMsMy40MTNoMzAuNzJjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJUzExMS4xMTEsMTcuMDY3LDEwOS4yMjcsMTcuMDY3eiIvPg0KICAgICAgICA8cGF0aCBkPSJNMTA5LjIyNywzMC43MmgtMzAuNzJjLTEuODg0LDAtMy40MTMsMS41MjktMy40MTMsMy40MTNzMS41MjksMy40MTMsMy40MTMsMy40MTNoMzAuNzJjMS44ODQsMCwzLjQxMy0xLjUyOSwzLjQxMy0zLjQxMw0KCQkJUzExMS4xMTEsMzAuNzIsMTA5LjIyNywzMC43MnoiLz4NCiAgICAgICAgPHBhdGggZD0iTTEwOS4yMjcsNDQuMzczaC0zMC43MmMtMS44ODQsMC0zLjQxMywxLjUyOS0zLjQxMywzLjQxM3MxLjUyOSwzLjQxMywzLjQxMywzLjQxM2gzMC43MmMxLjg4NCwwLDMuNDEzLTEuNTI5LDMuNDEzLTMuNDEzDQoJCQlTMTExLjExMSw0NC4zNzMsMTA5LjIyNyw0NC4zNzN6Ii8+DQogICAgICAgIDxwYXRoIGQ9Ik0xNjMuNzg5LDE0Ni4xNzlsLTE3LjUxNi05OC45ODdjLTAuMjg4LTEuNjMtMS43MDUtMi44MTgtMy4zNi0yLjgxOEg0OC4zMjhjLTEuNjEzLDAtMy4wMDUsMS4xMjYtMy4zNCwyLjcwMw0KCQkJbC0yMS4wMTksOTguOTg3Yy0wLjIxMywxLjAwNywwLjAzOCwyLjA1NywwLjY4NiwyLjg1N2MwLjY0OSwwLjgsMS42MjEsMS4yNjUsMi42NTIsMS4yNjVoMTMzLjEyYzEuMDA5LDAsMS45NjYtMC40NDcsMi42MTYtMS4yMTkNCgkJCUMxNjMuNjkxLDE0OC4xOTUsMTYzLjk2NSwxNDcuMTc0LDE2My43ODksMTQ2LjE3OXogTTMxLjUyLDE0My4zNkw1MS4wODksNTEuMmg4OC45NThsMTYuMzA5LDkyLjE2SDMxLjUyeiIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K",Terrace:lSe,Toilet:NSe,Upstairs:LSe,Wardrobe:gSe,Washroom:jSe,Wc:ySe,Windscreen:TSe,Workshop:DSe,Workspace:dSe},zSe=[{_id:"hood",name:{en:"Hood",ru:"Вытяжка",de:"Abzugshaube",fr:"Capot",it:"Cappe",nl:"Hood",pl:"Okapy",pt:"Hood",es:"Campana","zh-cn":"抽油烟机"},icon:"Hoods.svg"},{_id:"alarm_system",name:{en:"Alarm System",ru:"Сигнализация",de:"Alarmanlage",fr:"Systèmes D'Alarme",it:"Sistemi Di Allarme",nl:"Alarm Systems",pl:"Systemy Alarmowe",pt:"Sistemas De Alarme",es:"Sistemas De Alarma","zh-cn":"报警系统"},icon:"Alarm Systems.svg"},{_id:"battery_status",name:{en:"Battery Status",ru:"Заряд батареи",de:"Batteriestatus",fr:"État De La Batterie",it:"Stato Della Batteria",nl:"Batterij Status",pl:"Stan Baterii",pt:"Estado Da Bateria",es:"Estado De La Batería","zh-cn":"电池状态"},icon:"Battery Status.svg"},{_id:"lighting",name:{en:"Lighting",ru:"Светильник",de:"Beleuchtung",fr:"Éclairages",it:"Illuminazione",nl:"Verlichting",pl:"Oprawy Oświetleniowe",pt:"Iluminações",es:"Iluminaciones","zh-cn":"照明"},icon:"Lightings.svg"},{_id:"shading",name:{en:"Shading",ru:"Затенение",de:"Beschattungen",fr:"Ombres",it:"Ombreggiatura",nl:"Shading",pl:"Zacienienie",pt:"Shading",es:"Sombreado","zh-cn":"底纹"},icon:"Shading.svg"},{_id:"irrigation",name:{en:"Irrigation",ru:"Орошение",de:"Bewässerung",fr:"Irrigation",it:"Irrigazione",nl:"Irrigatie",pl:"Nawadnianie",pt:"Irrigação",es:"Irrigación","zh-cn":"灌溉"},icon:"Irrigation.svg"},{_id:"iron",name:{en:"Iron",ru:"Утюг",de:"Bügeleisen",fr:"Le Fer",it:"Ferro",nl:"Ijzer",pl:"Żelazo",pt:"Ferro",es:"Hierro","zh-cn":"铁"},icon:"Iron.svg"},{_id:"computer",name:{en:"Computer",ru:"Компьютер",de:"Rechner",fr:"L'Ordinateur",it:"Computer",nl:"Computer",pl:"Komputer",pt:"Computador",es:"Ordenador","zh-cn":"电脑"},icon:"Computer.svg"},{_id:"ceiling_spotlight",name:{en:"Ceiling Spotlight",ru:"Потолочный прожектор",de:"Deckenspot",fr:"Plafond Spotlight",it:"Faretti A Soffitto",nl:"Plafond Spotlight",pl:"Reflektory Sufitowe",pt:"Tecto Foco",es:"Focos De Techo","zh-cn":"天花射灯"},icon:"Ceiling Spotlights.svg"},{_id:"printer",name:{en:"Printer",de:"Drucker",ru:"Принтер",pt:"Impressora",nl:"Printer",fr:"Imprimante",it:"Stampante",es:"Impresora",pl:"Drukarka","zh-cn":"打印机"},icon:"Printer.svg"},{_id:"power_consumption",name:{en:"Power Consumption",ru:"Потребляемая мощность",de:"Stromverbrauch",fr:"Consommation D'Énergie",it:"Consumo Di Energia",nl:"Energieverbruik",pl:"Pobór Energii",pt:"Consumo De Energia",es:"El Consumo De Energía","zh-cn":"能量消耗"},icon:"Power Consumption.svg"},{_id:"window",name:{en:"Window",ru:"Окно",de:"Fenster",fr:"La Fenêtre",it:"Finestra",nl:"Venster",pl:"Okno",pt:"Janela",es:"Ventana","zh-cn":"窗户"},icon:"Window.svg"},{_id:"garage_door",name:{en:"Garage Door",ru:"Гаражные Ворота",de:"Garagentor",fr:"Portes De Garage",it:"Garage Door",nl:"Garage Door",pl:"Bramy Garażowe",pt:"Portas De Garagem",es:"Las Puertas De Garaje","zh-cn":"车库门"},icon:"Garage Doors.svg"},{_id:"hairdryer",name:{en:"Hairdryer",ru:"Фен",de:"Haartrockner",fr:"Sèche-Cheveux",it:"Asciugacapelli",nl:"Haardroger",pl:"Suszarka Do Włosów",pt:"Secador De Cabelo",es:"Secador De Pelo","zh-cn":"电吹风"},icon:"Hairdryer.svg"},{_id:"hanging_lamp",name:{en:"Hanging Lamp",ru:"Подвесной светильник",de:"Hängelampe",fr:"Lampes Suspendues",it:"Lampade A Sospensione",nl:"Opknoping Lampen",pl:"Lampy Wiszące",pt:"Lâmpadas De Suspensão",es:"Lámparas Colgantes","zh-cn":"挂灯"},icon:"Hanging Lamps.svg"},{_id:"doorstep",name:{en:"Enterance",ru:"Входная дверь",de:"Haustür",fr:"Seuil De Porte",it:"Gradino Della Porta",nl:"Drempel",pl:"Próg",pt:"Porta",es:"Peldaño","zh-cn":"门阶"},icon:"Doorstep.svg"},{_id:"hot_water",name:{en:"Hot Water",ru:"Горячая вода",de:"Heißwasser",fr:"Eau Chaude",it:"Acqua Calda",nl:"Heet Water",pl:"Gorąca Woda",pt:"Água Quente",es:"Agua Caliente","zh-cn":"热水"},icon:"Hot Water.svg"},{_id:"heating",name:{en:"Heating",ru:"Отопление",de:"Heizung",fr:"Chauffe-Eau",it:"Riscaldatore",nl:"Verwarmer",pl:"Podgrzewacz",pt:"Aquecedor",es:"Calentador","zh-cn":"加热器"},icon:"Heater.svg"},{_id:"stove",name:{en:"Stove",ru:"Печь",de:"Herd",fr:"Le Fourneau",it:"Stufa",nl:"Fornuis",pl:"Kuchenka",pt:"Forno",es:"Cocina","zh-cn":"火炉"},icon:"Stove.svg"},{_id:"louvre",name:{en:"Louvre",ru:"Жалюзи",de:"Jalousie",fr:"Persienne",it:"Persiana Di Ventilazione",nl:"Louvre",pl:"Żaluzja",pt:"Trapeira",es:"Lumbrera","zh-cn":"卢浮宫"},icon:"Louvre.svg"},{_id:"coffee_maker",name:{en:"Coffee Maker",ru:"Кофеварка",de:"Kaffemaschine",fr:"Cafetière",it:"Macchine Da Caffè",nl:"Koffie Maker",pl:"Ekspresy Do Kawy",pt:"Cafeteira",es:"Cafetera","zh-cn":"咖啡壶"},icon:"Coffee Makers.svg"},{_id:"cold_water",name:{en:"Cold Water",ru:"Холодная вода",de:"Kaltwasser",fr:"Eau Froide",it:"Acqua Fredda",nl:"Koud Water",pl:"Zimna Woda",pt:"Água Fria",es:"Agua Fría","zh-cn":"冷水"},icon:"Cold Water.svg"},{_id:"climate",name:{en:"Climate",ru:"Климат",de:"Klima",fr:"Climat",it:"Clima",nl:"Klimaat",pl:"Klimat",pt:"Clima",es:"Clima","zh-cn":"气候"},icon:"Climate.svg"},{_id:"speaker",name:{en:"Speaker",ru:"Звуковая система",de:"Lautsprecher",fr:"Orateur",it:"Altoparlante",nl:"Spreker",pl:"Głośnik",pt:"Palestrante",es:"Altavoz","zh-cn":"扬声器"},icon:"Speaker.svg"},{_id:"led_strip",name:{en:"Led Strip",ru:"Светодиодная лента",de:"LED Leiste",fr:"Led Strip",it:"Led Strip",nl:"Loden Strip",pl:"Pasek Ledowy",pt:"Led Faixa",es:"Tira Llevada","zh-cn":"灯带"},icon:"Led Strip.svg"},{_id:"light",name:{en:"Light",ru:"Свет",de:"Licht",fr:"Lumière",it:"Leggero",nl:"Licht",pl:"Lekki",pt:"Luz",es:"Luz","zh-cn":"光"},icon:"Light.svg"},{_id:"fan",name:{en:"Fan",ru:"Вентилятор",de:"Lüfter",fr:"Ventilateur",it:"Fan",nl:"Ventilator",pl:"Wentylator",pt:"Ventilador",es:"Ventilador","zh-cn":"扇子"},icon:"Fan.svg"},{_id:"humidity",name:{en:"Humidity",ru:"Влажность",de:"Luftfeuchtigkeit",fr:"Humidité",it:"Umidità",nl:"Vochtigheid",pl:"Wilgotność",pt:"Umidade",es:"Humedad","zh-cn":"湿度"},icon:"Humidity.svg"},{_id:"ventilation",name:{en:"Ventilation",ru:"Вентиляция",de:"Lüftung",fr:"Ventilation",it:"Ventilazione",nl:"Ventilatie",pl:"Wentylacja",pt:"Ventilação",es:"Ventilación","zh-cn":"通风"},icon:"Ventilation.svg"},{_id:"chandelier",name:{en:"Chandelier",ru:"Люстра",de:"Kronleuchter",fr:"Lustre",it:"Lampadario",nl:"Kroonluchter",pl:"Żyrandol",pt:"Lustre",es:"Candelabro","zh-cn":"枝形吊灯"},icon:"Chandelier.svg"},{_id:"awning",name:{en:"Awning",ru:"Маркиза",de:"Markise",fr:"Auvents",it:"Tende",nl:"Luifels",pl:"Okrycia",pt:"Toldos",es:"Toldos","zh-cn":"遮阳篷"},icon:"Awnings.svg"},{_id:"music",name:{en:"Music",ru:"Музыка",de:"Musik",fr:"Musique",it:"Musica",nl:"Muziek",pl:"Muzyka",pt:"Música",es:"Música","zh-cn":"音乐"},icon:"Music.svg"},{_id:"people",name:{en:"People",ru:"Люди",de:"Personen",fr:"Gens",it:"Persone",nl:"Mensen",pl:"Ludzie",pt:"Pessoas",es:"Personas","zh-cn":"人们"},icon:"People.svg"},{_id:"pool",name:{en:"Pool",ru:"Бассейн",de:"Pool",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"水池"},icon:"Pool.svg"},{_id:"pump",name:{en:"Pump",ru:"Насос",de:"Pumpe",fr:"Pompe",it:"Pompa",nl:"Pomp",pl:"Pompa",pt:"Bombear",es:"Bomba","zh-cn":"泵"},icon:"Pump.svg"},{_id:"outdoor_blinds",name:{en:"Outdoor Blinds",ru:"Внещгте жалюзи",de:"Raffstore",fr:"Volets",it:"Tende Da Esterni",nl:"Outdoor Blinds",pl:"Rolety Zewnętrzne",pt:"Estores Exteriores",es:"Persianas Exteriores","zh-cn":"室外百叶窗"},icon:"Outdoor Blinds.svg"},{_id:"mowing_machine",name:{en:"Mowing Machine",ru:"Газонокосилка",de:"Rasenmäher",fr:"Machine De Fauchage",it:"Macchina Di Falciatura",nl:"Maaimachine",pl:"Kosiarka",pt:"Roçada Máquina",es:"Segadora","zh-cn":"割草机"},icon:"Mowing Machine.svg"},{_id:"receiver",name:{en:"Receiver",ru:"Приставка",de:"Receiver",fr:"Destinataire",it:"Ricevitore",nl:"Ontvanger",pl:"Odbiorca",pt:"Recebedor",es:"Receptor","zh-cn":"接收者"},icon:"Receiver.svg"},{_id:"shutters",name:{en:"Shutters",ru:"Ставни",de:"Rollladen",fr:"Volets",it:"Persiane",nl:"Shutters",pl:"Żaluzje",pt:"Persianas",es:"Persianas","zh-cn":"百叶窗"},icon:"Shutters.svg"},{_id:"smoke_detector",name:{en:"Smoke detector",de:"Rauchmelder",ru:"Детектор дыма",pt:"Detector de fumaça",nl:"Rookdetector",fr:"Détecteur de fumée",it:"Rilevatore di fumo",es:"Detector de humo",pl:"Wykrywacz dymu","zh-cn":"烟雾探测器"},icon:"SmokeDetector.svg"},{_id:"lock",name:{en:"Lock",ru:"Замок",de:"Schloß",fr:"Fermer À Clé",it:"Serratura",nl:"Slot",pl:"Zamek",pt:"Trancar",es:"Cerrar Con Llave","zh-cn":"锁"},icon:"Lock.svg"},{_id:"security",name:{en:"Security",ru:"Безопасность",de:"Sicherheit",fr:"Sécurité",it:"Sicurezza",nl:"Veiligheid",pl:"Bezpieczeństwo",pt:"Segurança",es:"Seguridad","zh-cn":"安全"},icon:"Security.svg"},{_id:"dishwasher",name:{en:"Dishwasher",ru:"Посудомоечная машина",de:"Spülmaschine",fr:"Lave-Vaisselles",it:"Lavastoviglie",nl:"Vaatwassers",pl:"Zmywarki",pt:"Máquinas De Lavar Louça",es:"Lavaplatos","zh-cn":"洗碗机"},icon:"Dishwashers.svg"},{_id:"vacuum_cleaner",name:{en:"Vacuum Cleaner",ru:"Пылесос",de:"Staubsauger",fr:"Aspirateur",it:"Aspirapolvere",nl:"Stofzuiger",pl:"Odkurzacz",pt:"Aspirador De Pó",es:"Aspiradora","zh-cn":"吸尘器"},icon:"Vacuum Cleaner.svg"},{_id:"socket",name:{en:"Socket",ru:"Розетка",de:"Steckdose",fr:"Prise",it:"Socket",nl:"Socket",pl:"Gniazdka",pt:"Tomada",es:"Zócalo","zh-cn":"套接字"},icon:"Sockets.svg"},{_id:"floor_lamp",name:{en:"Floor Lamp",ru:"Торшер",de:"Stehlampe",fr:"Lampes Pour Plancher",it:"Lampade A Stelo",nl:"Vloerlampen",pl:"Lampy Podłogowe",pt:"Lâmpadas Chão",es:"Lámparas De Pie","zh-cn":"落地灯"},icon:"Floor Lamps.svg"},{_id:"power_consumption",name:{en:"Power Consumption",ru:"Потребляемая мощность",de:"Stromverbrauch",fr:"Consommation D'Énergie",it:"Consumo Di Energia",nl:"Energieverbruik",pl:"Pobór Energii",pt:"Consumo De Energia",es:"El Consumo De Energía","zh-cn":"能量消耗"},icon:"Power Consumption.svg"},{_id:"temperature_sensor",name:{en:"Temperature Sensor",ru:"Температурный датчик",de:"Temperatur-Sensor",fr:"Capteur De Température",it:"Sensori Di Temperatura",nl:"Temperatuursensor",pl:"Czujniki Temperatury",pt:"Sensores De Temperatura",es:"Sensores De Temperatura","zh-cn":"温度传感器"},icon:"Temperature Sensors.svg"},{_id:"table_lamp",name:{en:"Table Lamp",ru:"Настольная лампа",de:"Tischlampe",fr:"Lampe De Chevet",it:"Lampade Da Tavolo",nl:"Tafellampen",pl:"Lampy Stołowe",pt:"Lâmpadas De Mesa",es:"Lámparas De Mesa","zh-cn":"台灯"},icon:"Table Lamps.svg"},{_id:"gate",name:{en:"Gate",ru:"Ворота",de:"Tor",fr:"Porte",it:"Gate",nl:"Gate",pl:"Bramy",pt:"Portões",es:"Puertas","zh-cn":"盖茨"},icon:"Gates.svg"},{_id:"dryer",name:{en:"Dryer",ru:"Сушилка",de:"Trockner",fr:"Séchoir",it:"Asciugatrice",nl:"Droger",pl:"Suszarka",pt:"Secador",es:"Secadora","zh-cn":"烘干机"},icon:"Dryer.svg"},{_id:"door",name:{en:"Door",ru:"Дверь",de:"Tür",fr:"Des Portes",it:"Porte",nl:"Deuren",pl:"Drzwi",pt:"Portas",es:"Puertas","zh-cn":"门"},icon:"Doors.svg"},{_id:"tv",name:{en:"Tv",ru:"Телевизор",de:"TV",fr:"La Télé",it:"Tv",nl:"Tv",pl:"Telewizja",pt:"Televisão",es:"Televisor","zh-cn":"电视"},icon:"Tv.svg"},{_id:"consumption",name:{en:"Consumption",ru:"Потребление",de:"Verbrauch",fr:"Consommation",it:"Consumo",nl:"Consumptie",pl:"Konsumpcja",pt:"Consumo",es:"Consumo","zh-cn":"消费"},icon:"Consumption.svg"},{_id:"amplifier",name:{en:"Amplifier",ru:"Усилитель звука",de:"Verstärker",fr:"Amplificateur",it:"Amplificatore",nl:"Versterker",pl:"Wzmacniacz",pt:"Amplificador",es:"Amplificador","zh-cn":"放大器"},icon:"Amplifier.svg"},{_id:"curtains",name:{en:"Curtains",ru:"Шторы",de:"Vorhänge",fr:"Des Rideaux",it:"Le Tende",nl:"Gordijnen",pl:"Zasłony",pt:"Cortinas",es:"Cortinas","zh-cn":"窗帘"},icon:"Curtains.svg"},{_id:"sconce",name:{en:"Sconce",ru:"Настенный светильник",de:"Wandlampe",fr:"Sconce",it:"Sconce",nl:"Sconce",pl:"Kinkiety",pt:"Arandelas",es:"Los Apliques","zh-cn":"壁灯"},icon:"Sconces.svg"},{_id:"washing_machine",name:{en:"Washing Machine",ru:"Стиральная машина",de:"Waschmaschine",fr:"Machines À Laver",it:"Lavatrici",nl:"Wasmachines",pl:"Pralki",pt:"Máquinas De Lavar Roupas",es:"Lavadoras","zh-cn":"洗衣机"},icon:"Washing Machines.svg"},{_id:"water",name:{en:"Water",ru:"Вода",de:"Wasser",fr:"L'Eau",it:"Acqua",nl:"Water",pl:"Woda",pt:"Água",es:"Agua","zh-cn":"水"},icon:"Water.svg"},{_id:"water_heater",name:{en:"Water Heater",ru:"Нагреватель воды",de:"Wasserkocher",fr:"Chauffe-Eau",it:"Scaldabagno",nl:"Waterkoker",pl:"Podgrzewacz Wody",pt:"Aquecedor De Água",es:"Calentador De Agua","zh-cn":"热水器"},icon:"Water Heater.svg"},{_id:"water_consumption",name:{en:"Water Consumption",ru:"Потребление воды",de:"Wasserverbrauch",fr:"Consommation D'Eau",it:"Consumo D'Acqua",nl:"Waterverbruik",pl:"Konsumpcja Wody",pt:"Consumo De Água",es:"Consumo De Agua","zh-cn":"耗水量"},icon:"Water Consumption.svg"},{_id:"weather",name:{en:"Weather",ru:"Погода",de:"Wetter",fr:"La Météo",it:"Tempo Metereologico",nl:"Weer",pl:"Pogoda",pt:"Clima",es:"Tiempo","zh-cn":"天气"},icon:"Weather.svg"}],wSe=[{_id:"storeroom",name:{en:"Storeroom",ru:"Кладовая",de:"Abstellraum",fr:"Débarras",it:"Dispensa",nl:"Bergplaats",pl:"Magazyn",pt:"Despensa",es:"Trastero","zh-cn":"库房"},icon:"Storeroom.svg"},{_id:"second_floor",name:{en:"Second floor",ru:"Второй этаж",de:"Erster OG",pt:"Primeiro andar",nl:"Eerste verdieping",fr:"Premier étage",it:"Primo piano",es:"Primer piso",pl:"Pierwsze piętro","zh-cn":"第一层"},icon:"Second Floor.svg"},{_id:"dressing_room",name:{en:"Dressing Room",ru:"Гардеробная",de:"Ankleide",fr:"Vestiaire",it:"Camerino",nl:"Kleedkamer",pl:"Przebieralnia",pt:"Provador",es:"Vestidor","zh-cn":"更衣室"},icon:"Dressing Room.svg"},{_id:"workspace",name:{en:"Workspace",ru:"Рабочая Среда",de:"Arbeitszimmer",fr:"Espace De Travail",it:"Area Di Lavoro",nl:"Workspace",pl:"Workspace",pt:"Área De Trabalho",es:"Espacio De Trabajo","zh-cn":"工作区"},icon:"Workspace.svg"},{_id:"driveway",name:{en:"Driveway",ru:"Дорога",de:"Auffahrt",fr:"Allée",it:"Viale",nl:"Pad",pl:"Podjazd",pt:"Entrada Da Garagem",es:"Entrada De Coches","zh-cn":"车道"},icon:"Driveway.svg"},{_id:"outdoors",name:{en:"Outdoors",ru:"На Улице",de:"Außenbereich",fr:"En Plein Air",it:"All'Aperto",nl:"Buitenshuis",pl:"Na Dworze",pt:"Ao Ar Livre",es:"Al Aire Libre","zh-cn":"户外"},icon:"Outdoors.svg"},{_id:"bathroom",name:{en:"Bathroom",ru:"Ванная Комната",de:"Badezimmer",fr:"Salle De Bains",it:"Bagno",nl:"Badkamer",pl:"Łazienka",pt:"Banheiro",es:"Baño","zh-cn":"浴室"},icon:"Bathroom.svg"},{_id:"balcony",name:{en:"Balcony",ru:"Балкон",de:"Balkon",fr:"Balcon",it:"Balcone",nl:"Balkon",pl:"Balkon",pt:"Sacada",es:"Balcón","zh-cn":"阳台"},icon:"Balcony.svg"},{_id:"office",name:{en:"Office",ru:"Офис",de:"Office",fr:"Bureau",it:"Ufficio",nl:"Kantoor",pl:"Gabinet",pt:"Escritório",es:"Oficina","zh-cn":"办公室"},icon:"Office.svg"},{_id:"carport",name:{en:"Carport",ru:"Навес",de:"Carport",fr:"Carport",it:"Posto Auto Coperto",nl:"Carport",pl:"Wiata",pt:"Telheiro",es:"Cochera","zh-cn":"车棚"},icon:"Carport.svg"},{_id:"attic",name:{en:"Attic",ru:"Чердак",de:"Dachgeschoss",fr:"Grenier",it:"Attico",nl:"Zolder",pl:"Poddasze",pt:"Sótão",es:"Ático","zh-cn":"阁楼"},icon:"Attic.svg"},{_id:"hall",name:{en:"Hall",ru:"Зал",de:"Diele",fr:"Salle",it:"Sala",nl:"Hal",pl:"Sala",pt:"Corredor",es:"Sala","zh-cn":"大厅"},icon:"Hall.svg"},{_id:"entrance",name:{en:"Entrance",ru:"Вход",de:"Eingang",fr:"Entrée",it:"Ingresso",nl:"Ingang",pl:"Wejście",pt:"Entrada",es:"Entrada","zh-cn":"入口"},icon:"Entrance.svg"},{_id:"ground_floor",name:{en:"Ground Floor",ru:"Первый Этаж",de:"Erdgeschoss",fr:"Rez-De-Chaussée",it:"Piano Terra",nl:"Begane Grond",pl:"Parter",pt:"Térreo",es:"Planta Baja","zh-cn":"一楼"},icon:"Ground Floor.svg"},{_id:"dining_area",name:{en:"Dining Area",ru:"Столовая",de:"Essbereich",fr:"Salle À Manger",it:"Zona Pranzo",nl:"Eethoek",pl:"Jadalnia",pt:"Área De Refeições",es:"Comedor","zh-cn":"用餐区"},icon:"Dining Area.svg"},{_id:"dining_room",name:{en:"Dining Room",ru:"Столовая",de:"Esszimmer",fr:"Salle À Manger",it:"Sala Da Pranzo",nl:"Eetkamer",pl:"Jadalnia",pt:"Sala De Jantar",es:"Comedor","zh-cn":"饭厅"},icon:"Dining Room.svg"},{_id:"gym",name:{en:"Gym",ru:"Спортзал",de:"Fitnessraum",fr:"Gym",it:"Palestra",nl:"Sportschool",pl:"Siłownia",pt:"Ginásio",es:"Gimnasio","zh-cn":"健身房"},icon:"Gym.svg"},{_id:"gallery",name:{en:"Gallery",ru:"Галерея",de:"Galerie",fr:"Galerie",it:"Galleria",nl:"Galerij",pl:"Galeria",pt:"Galeria",es:"Galería","zh-cn":"画廊"},icon:"Gallery.svg"},{_id:"garage",name:{en:"Garage",ru:"Гараж",de:"Garage",fr:"Garage",it:"Box Auto",nl:"Garage",pl:"Garaż",pt:"Garagem",es:"Garaje","zh-cn":"车库"},icon:"Garage.svg"},{_id:"wardrobe",name:{en:"Wardrobe",ru:"Гардероб",de:"Garderobe",fr:"Penderie",it:"Armadio",nl:"Garderobe",pl:"Szafa",pt:"Guarda Roupa",es:"Armario","zh-cn":"衣柜"},icon:"Wardrobe.svg"},{_id:"garden",name:{en:"Garden",ru:"Сад",de:"Garten",fr:"Jardin",it:"Giardino",nl:"Tuin",pl:"Ogród",pt:"Jardim",es:"Jardín","zh-cn":"花园"},icon:"Garden.svg"},{_id:"summer_house",name:{en:"Summer House",ru:"Дача",de:"Gartenhaus",fr:"Maison D'Été",it:"Casa Estiva",nl:"Zomerhuis",pl:"Domek Letniskowy",pt:"Summer House",es:"Casa De Verano","zh-cn":"凉亭"},icon:"Summer House.svg"},{_id:"guest_bathroom",name:{en:"Guest Bathroom",ru:"Гостевая Комната",de:"Gäste-WC",fr:"Salle De Bains Invité",it:"Guest Bathroom",nl:"Gastenbadkamer",pl:"Łazienka Gościnna",pt:"Banheiro De Hóspedes",es:"Baño De Visitas","zh-cn":"客用浴室"},icon:"Guest Bathroom.svg"},{_id:"guest_room",name:{en:"Guest Room",ru:"Гостевая Комната",de:"Gästezimmer",fr:"Chambre D'Amis",it:"Stanza Degli Ospiti",nl:"Guest Room",pl:"Pokój Gościnny",pt:"Quarto De Hóspedes",es:"Habitación De Huéspedes","zh-cn":"客房"},icon:"Guest Room.svg"},{_id:"laundry_room",name:{en:"Laundry Room",ru:"Прачечная",de:"Hauswirtschaftsraum",fr:"Buanderie",it:"Lavanderia",nl:"Wasruimte",pl:"Pralnia",pt:"Lavandaria",es:"Cuarto De Lavado","zh-cn":"洗衣房"},icon:"Laundry Room.svg"},{_id:"home_theater",name:{en:"Home Theater",ru:"Домашний Театр",de:"Heimkino",fr:"Cinéma Maison",it:"Home Theater",nl:"Thuisbioscoop",pl:"Kino Domowe",pt:"Cinema Em Casa",es:"Cine En Casa","zh-cn":"家庭电影院"},icon:"Home Theater.svg"},{_id:"boiler_room",name:{en:"Boiler Room",ru:"Бойлерная",de:"Heizungsraum",fr:"Chaufferie",it:"Locale Caldaia",nl:"Boiler Room",pl:"Kotłownia",pt:"Sala Da Caldeira",es:"Sala De Calderas","zh-cn":"锅炉房"},icon:"Boiler Room.svg"},{_id:"chamber",name:{en:"Chamber",ru:"Камера",de:"Kammer",fr:"Chambre",it:"Camera",nl:"Kamer",pl:"Izba",pt:"Câmara",es:"Cámara","zh-cn":"商会"},icon:"Chamber.svg"},{_id:"basement,_cellar",name:{en:"Basement, Cellar",ru:"Подвал, Погреб",de:"Keller",fr:"Sous-Sol, Cave",it:"Taverna, Cantina",nl:"Kelder, Kelder",pl:"Piwnica, Piwnica",pt:"Porão, Adega",es:"Sótano, Bodega","zh-cn":"地下室,地窖"},icon:"Basement.svg"},{_id:"nursery",name:{en:"Nursery",ru:"Питомник",de:"Kinderzimmer",fr:"Garderie",it:"Asilo",nl:"Kinderkamer",pl:"Żłobek",pt:"Berçário",es:"Guardería","zh-cn":"苗圃"},icon:"Nursery.svg"},{_id:"corridor",name:{en:"Corridor",ru:"Коридор",de:"Korridor",fr:"Couloir",it:"Corridoio",nl:"Gang",pl:"Korytarz",pt:"Corredor",es:"Corredor","zh-cn":"走廊"},icon:"Corridor.svg"},{_id:"kitchen",name:{en:"Kitchen",ru:"Кухня",de:"Küche",fr:"Cuisine",it:"Cucina",nl:"Keuken",pl:"Kuchnia",pt:"Cozinha",es:"Cocina","zh-cn":"厨房"},icon:"Kitchen.svg"},{_id:"upstairs",name:{en:"Upstairs",ru:"Вверх По Лестнице",de:"Obergeschoss",fr:"En Haut",it:"Di Sopra",nl:"Boven",pl:"Na Górę",pt:"Andar De Cima",es:"Piso Superior","zh-cn":"楼上"},icon:"Upstairs.svg"},{_id:"office",name:{en:"Office",ru:"Офис",de:"Office",fr:"Bureau",it:"Ufficio",nl:"Kantoor",pl:"Gabinet",pt:"Escritório",es:"Oficina","zh-cn":"办公室"},icon:"Office.svg"},{_id:"pool",name:{en:"Pool",ru:"Бассейн",de:"Pool",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"水池"},icon:"Pool.svg"},{_id:"rear_wall",name:{en:"Rear Wall",ru:"Задняя Стенка",de:"Rückwand",fr:"Paroi Arrière",it:"Parete Posteriore",nl:"Achterwand",pl:"Tylna Ściana",pt:"Parede Traseira",es:"Pared Posterior","zh-cn":"后墙"},icon:"Rear Wall.svg"},{_id:"barn",name:{en:"Barn",ru:"Амбар",de:"Scheune",fr:"Grange",it:"Fienile",nl:"Schuur",pl:"Stodoła",pt:"Celeiro",es:"Granero","zh-cn":"谷仓"},icon:"Barn.svg"},{_id:"sleeping_area",name:{en:"Sleeping Area",ru:"Спальное Место",de:"Schlafbereich",fr:"Coin Montagne",it:"Area Sleeping",nl:"Sleeping Area",pl:"Powierzchnia Spania",pt:"Sleeping Area",es:"Área De Dormir","zh-cn":"睡眠区"},icon:"Sleeping Area.svg"},{_id:"bedroom",name:{en:"Bedroom",ru:"Спальная Комната",de:"Schlafzimmer",fr:"Chambre",it:"Camera Da Letto",nl:"Slaapkamer",pl:"Sypialnia",pt:"Quarto",es:"Cuarto","zh-cn":"卧室"},icon:"Bedroom.svg"},{_id:"shed",name:{en:"Shed",ru:"Сбрасывать",de:"Schuppen",fr:"Hangar",it:"Capannone",nl:"Schuur",pl:"Budka",pt:"Cabana",es:"Cobertizo","zh-cn":"棚"},icon:"Shed.svg"},{_id:"swimming_pool",name:{en:"Swimming Pool",ru:"Плавательный Бассейн",de:"Schwimmbad",fr:"Piscine",it:"Piscina",nl:"Zwembad",pl:"Basen",pt:"Piscina",es:"Piscina","zh-cn":"游泳池"},icon:"Swimming Pool.svg"},{_id:"dining",name:{en:"Dining",ru:"Обеденный",de:"Speis",fr:"À Manger",it:"Cenare",nl:"Dining",pl:"Jadalnia",pt:"Jantar",es:"Comida","zh-cn":"用餐"},icon:"Dining.svg"},{_id:"playroom",name:{en:"Playroom",ru:"Игровая Комната",de:"Spielzimmer",fr:"Salle De Jeux",it:"Stanza Dei Giochi",nl:"Speelkamer",pl:"Pokój Zabaw",pt:"Sala De Jogos",es:"Cuarto De Jugar","zh-cn":"游戏室"},icon:"Playroom.svg"},{_id:"stairway",name:{en:"Stairway",ru:"Лестница",de:"Treppe",fr:"Escalier",it:"Scala",nl:"Trap",pl:"Klatka Schodowa",pt:"Escada",es:"Escalera","zh-cn":"楼梯"},icon:"Stairway.svg"},{_id:"equipment_room",name:{en:"Equipment Room",ru:"Оборудование Номера",de:"Technikraum",fr:"Salle D'Équipement",it:"Stanza Degli Attrezzi",nl:"Technische Ruimte",pl:"Wyposażenie Pokoi",pt:"Sala De Equipamentos",es:"Cuarto De Equipos","zh-cn":"机房"},icon:"Equipment Room.svg"},{_id:"terrace",name:{en:"Terrace",ru:"Терраса",de:"Terrasse",fr:"Terrasse",it:"Terrazza",nl:"Terras",pl:"Taras",pt:"Terraço",es:"Terraza","zh-cn":"阳台"},icon:"Terrace.svg"},{_id:"toilet",name:{en:"Toilet",ru:"Туалет",de:"Toilette",fr:"Toilette",it:"Gabinetto",nl:"Toilet",pl:"Toaleta",pt:"Banheiro",es:"Inodoro","zh-cn":"洗手间"},icon:"Toilet.svg"},{_id:"stairwell",name:{en:"Stairwell",ru:"Лестничная клетка",de:"Treppenhaus",fr:"Cage D'Escalier",it:"Tromba Delle Scale",nl:"Trappenhuis",pl:"Klatka Schodowa",pt:"Caixa De Escada",es:"Hueco De Escalera","zh-cn":"楼梯间"},icon:"Stairwell.svg"},{_id:"locker_room",name:{en:"Locker Room",ru:"Камера Хранения",de:"Umkleideraum",fr:"Vestiaire",it:"Spogliatoio",nl:"Kleedkamer",pl:"Szatnia",pt:"Vestiário",es:"Vestuario","zh-cn":"更衣室"},icon:"Locker Room.svg"},{_id:"basement",name:{en:"Basement",ru:"Подвал",de:"Untergeschoss",fr:"Sous-Sol",it:"Seminterrato",nl:"Kelder",pl:"Piwnica",pt:"Porão",es:"Sótano","zh-cn":"地下室"},icon:"Basement.svg"},{_id:"front_yard",name:{en:"Front Yard",ru:"Передний Двор",de:"Vorgarten",fr:"Front Yard",it:"Cortile",nl:"Voortuin",pl:"Podwórko",pt:"Jardim Da Frente",es:"Patio Delantero","zh-cn":"前院"},icon:"Front Yard.svg"},{_id:"anteroom",name:{en:"Anteroom",ru:"Передняя",de:"Vorraum",fr:"Antichambre",it:"Anticamera",nl:"Voorkamer",pl:"Przedpokój",pt:"Ante-Sala",es:"Antesala","zh-cn":"接待室"},icon:"Anteroom.svg"},{_id:"washroom",name:{en:"Washroom",ru:"Уборная",de:"Waschraum",fr:"Toilettes",it:"Bagno",nl:"Waskamer",pl:"Umywalnia",pt:"Banheiro",es:"Baño","zh-cn":"卫生间"},icon:"Washroom.svg"},{_id:"wc",name:{en:"Wc",ru:"Туалет",de:"WC",fr:"Toilettes",it:"Bagno",nl:"Wc",pl:"Toaleta",pt:"Banheiro",es:"Wc","zh-cn":"厕所"},icon:"Wc.svg"},{_id:"workshop",name:{en:"Workshop",ru:"Мастерская",de:"Werkstatt",fr:"Atelier",it:"Laboratorio",nl:"Werkplaats",pl:"Warsztat",pt:"Oficina",es:"Taller","zh-cn":"作坊"},icon:"Workshop.svg"},{_id:"windscreen",name:{en:"Windscreen",ru:"Ветровое Стекло",de:"Windfang",fr:"Pare-Brise",it:"Parabrezza",nl:"Voorruit",pl:"Szyba Przednia",pt:"Pára-Brisas",es:"Parabrisas","zh-cn":"风档"},icon:"Windscreen.svg"},{_id:"living_area",name:{en:"Living Area",ru:"Жилая Площадь",de:"Wohnbereich",fr:"Salon",it:"Zona Giorno",nl:"Living Area",pl:"Powierzchnia Mieszkalna",pt:"Sala-De-Estar",es:"Sala De Estar","zh-cn":"生活区域"},icon:"Living Area.svg"},{_id:"living_room",name:{en:"Living Room",ru:"Гостинная",de:"Wohnzimmer",fr:"Le Salon",it:"Soggiorno",nl:"Woonkamer",pl:"Salon",pt:"Sala De Estar",es:"Sala De Estar","zh-cn":"客厅"},icon:"Living Room.svg"},{_id:"living_room",name:{en:"Living Room",ru:"Гостинная",de:"Wohnzimmer",fr:"Le Salon",it:"Soggiorno",nl:"Woonkamer",pl:"Salon",pt:"Sala De Estar",es:"Sala De Estar","zh-cn":"客厅"},icon:"Living Room.svg"}];class ISe extends De{constructor(e){super(e),this.state={opened:!1,names:[],filter:"",icons:null,loading:!1,isAnyName:!1}}loadAllIcons(){this.state.loading||this.state.icons||this.setState({loading:!0},()=>{const e=[],t=[];if(this.props.icons){const i=this.props.icons.map((r,o)=>{let n;if(typeof r=="object"){if(n=r.icon||r.src||r.href||"",t[o]=typeof r.name=="object"?r.name[this.props.lang]||r.name.en||r._id||"":r.name||"",!t[o]){const M=n.split(".");M.pop(),t[o]=M[M.length-1]}}else n=r;return n?n.startsWith("data:")?(e[o]=n,Promise.resolve()):m.getSvg(n).then(M=>e[o]=M):Promise.resolve()});Promise.all(i).catch(r=>console.error(r)).then(()=>this.setState({icons:e,loading:!1,names:t,isAnyName:!!t.find(r=>r)}))}else{let i=this.props.onlyRooms||!this.props.onlyRooms&&!this.props.onlyDevices?wSe:null;if(i&&(i.forEach(r=>{r.name&&typeof r.name=="object"&&(r.name=r.name[this.props.lang]||r.name.en||r._id),r.name=r.name||r._id}),i=i.filter((r,o)=>!(i!=null&&i.find((n,M)=>o!==M&&n.icon===r.icon&&n.name===r.name))),i.forEach((r,o)=>{t[o]=r.name,e[o]=`data:image/svg+xml;base64,${hSe[r.icon.replace(/\.svg$/,"")]}`})),i=this.props.onlyDevices||!this.props.onlyRooms&&!this.props.onlyDevices?zSe:null,i){const r=e.length;i&&i.forEach(o=>{o.name&&typeof o.name=="object"&&(o.name=o.name[this.props.lang]||o.name.en||o._id),o.name=o.name||o._id}),i=i.filter((o,n)=>!(i!=null&&i.find((M,c)=>n!==c&&M.icon===o.icon&&M.name===o.name))),i.forEach((o,n)=>{t[n+r]=o.name,e[n+r]=`data:image/svg+xml;base64,${vxe[o.icon.replace(/\.svg$/,"")]}`})}this.setState({icons:e,loading:!1,names:t,isAnyName:!!t.find(r=>r)})}})}render(){return this.state.loading?a.createElement(ko,null):a.createElement(a.Fragment,null,a.createElement(q,{color:"grey",variant:"outlined",title:this.props.t("ra_Select predefined icon"),onClick:()=>this.setState({opened:!0},()=>this.loadAllIcons()),style:{minWidth:40,marginRight:8}},"..."),this.state.opened?a.createElement(Ae,{onClose:()=>this.setState({opened:!1}),open:!0},a.createElement(fe,null,this.props.t("ra_Select predefined icon"),this.state.isAnyName?a.createElement(Te,{variant:"standard",margin:"dense",style:{marginLeft:20},value:this.state.filter,onChange:e=>this.setState({filter:e.target.value.toLowerCase()}),placeholder:this.props.t("ra_Filter"),slotProps:{input:{endAdornment:this.state.filter?a.createElement(W,{tabIndex:-1,size:"small",onClick:()=>this.setState({filter:""})},a.createElement(EN,null)):void 0}}}):null),a.createElement(_e,null,a.createElement("div",{style:{width:"100%",textAlign:"center"}},this.state.icons&&this.state.icons.map((e,t)=>!this.state.filter||this.state.names[t]&&this.state.names[t].toLowerCase().includes(this.state.filter)?a.createElement(Le,{title:this.state.names[t]||"",key:t,slotProps:{popper:{sx:{pointerEvents:"none"}}}},a.createElement(W,{onClick:()=>this.setState({opened:!1},()=>{const i=this.props.onSelect||this.props.onChange;i&&i(e)}),size:"large"},a.createElement(be,{src:e,alt:t.toString(),style:{width:32,height:32,borderRadius:5}}))):null))),a.createElement(xe,null,a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.setState({opened:!1}),startIcon:a.createElement(we,null)},this.props.t("ra_Close")))):null)}}const Gt={formContainer:{display:"flex",justifyContent:"left",alignItems:"center"},formControl:{display:"flex",padding:24,flexGrow:1e3},divContainer:{width:64,height:32,whiteSpace:"nowrap",lineHeight:"32px",marginRight:8},dragField:{textAlign:"center",display:"table",minHeight:90,width:"calc(100% - 60px)",border:"2px dashed #777",borderRadius:10,padding:4},formIcon:{margin:10,opacity:.6},text:{display:"table-cell",verticalAlign:"middle"}};function Ave(s){var M,c,l,N;const e=s.icon,t=s.onChange,i=Kt(u=>{const L=new FileReader;L.addEventListener("load",()=>t(L.result),!1),u[0]&&L.readAsDataURL(u[0])},[t]),{getRootProps:r,getInputProps:o,isDragActive:n}=tj({onDrop:i});return a.createElement("div",{style:Gt.formContainer},e?a.createElement(e,{style:Gt.formIcon}):null,a.createElement(Qt,{variant:"standard",style:{...Gt.formControl,padding:3}},a.createElement(yi,{shrink:!0,sx:(M=s.customStyles)!=null&&M.label?{"&.MuiInputLabel-root":s.customStyles.label}:void 0,classes:{root:(c=s.customClasses)==null?void 0:c.label}},s.label),a.createElement("div",{style:Gt.formContainer},s.value?a.createElement("div",{style:Gt.divContainer},a.createElement(be,{style:{...s.previewStyle,...((l=s.customStyles)==null?void 0:l.icon)||void 0},src:s.value,className:m.clsx(s.previewClassName,(N=s.customClasses)==null?void 0:N.icon)}),!s.disabled&&a.createElement(W,{style:{verticalAlign:"top"},title:D.t("ra_Clear icon"),size:"small",onClick:()=>s.onChange("")},a.createElement(EN,null))):!s.disabled&&a.createElement(ISe,{icons:s.icons,onlyRooms:s.onlyRooms,onlyDevices:s.onlyDevices,onSelect:u=>s.onChange(u),t:D.t,lang:D.getLanguage()}),!s.disabled&&a.createElement("div",{...r(),style:{...Gt.dragField,...n?{backgroundColor:"rgba(0, 255, 0, 0.1)"}:{cursor:"pointer"}}},a.createElement("input",{...o()}),n?a.createElement("span",{style:Gt.text},D.t("ra_Drop the files here...")):a.createElement("span",{style:Gt.text},D.t("ra_Drag 'n' drop some files here, or click to select files"))))))}function CSe(s){const e=document.createElement("div");e.innerHTML=s;const t=e.firstElementChild;return t!=null&&t.remove?t.remove():t&&e.removeChild(t),e.remove(),t}function pSe(s){const e={};if(!s)return e;for(let t,i=0;io[1].toUpperCase()),e[t]=s[i].value}return e}class No extends De{svg;static REMOTE_SERVER=window.location.hostname.includes("iobroker.in");static REMOTE_PREFIX=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1);constructor(e){var t;super(e),this.state={svg:!!((t=this.props.src)!=null&&t.startsWith("data:")),created:!0,color:this.props.color||"",src:this.props.src||"",imgError:!1,showError:!!this.props.showError},this.svg=this.state.svg&&this.state.src?this.getSvgFromData(this.state.src):null}static getDerivedStateFromProps(e,t){var o;const i={};let r=!1;return e&&t&&e.src!==t.src&&(i.src=e.src,i.svg=(o=e.src)==null?void 0:o.startsWith("data:"),i.created=!1,r=!0),e&&t&&e.color!==t.color&&(i.color=e.color,i.created=!1,r=!0),e&&t&&e.showError!==t.showError&&(i.showError=e.showError,r=!0),r?i:null}getSvgFromData(e){const t="data:image/svg+xml;base64,";if(!e.startsWith(t))return null;e=e.substring(t.length);try{e=atob(e);const i=CSe(e),r=i.innerHTML,o=pSe(i.attributes);return i.remove(),a.createElement(J,{component:"svg",sx:this.props.sx,className:this.props.className,style:this.state.color?{color:this.state.color}:void 0,...o,dangerouslySetInnerHTML:{__html:r}})}catch{}return null}render(){if(this.state.svg)return this.state.created||setTimeout(()=>{this.svg=this.state.src?this.getSvgFromData(this.state.src):null,this.setState({created:!0})},50),this.svg;if(this.state.src){if(this.state.imgError||!this.state.src)return a.createElement(lc,{className:this.props.className});if(No.REMOTE_SERVER&&!this.state.src.startsWith("http://")&&!this.state.src.startsWith("https://")){let e=(this.props.imagePrefix||"")+this.state.src;return e.startsWith("./")?e=No.REMOTE_PREFIX+e.substring(2):e.startsWith("/")||(e=No.REMOTE_PREFIX+e),a.createElement(J,{component:"img",sx:this.props.sx,className:this.props.className,src:`https://remote-files.iobroker.in${e}`,alt:"",onError:()=>this.props.showError?this.setState({imgError:!0}):this.setState({src:""})})}return a.createElement(J,{component:"img",sx:this.props.sx,className:this.props.className,src:(this.props.imagePrefix||"")+this.state.src,alt:"",onError:()=>this.props.showError?this.setState({imgError:!0}):this.setState({src:""})})}return null}}function ASe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z"},child:[]}]})(s)}function mSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"},child:[]}]})(s)}function fSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"},child:[]}]})(s)}function OSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z"},child:[]}]})(s)}function ESe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z"},child:[]}]})(s)}function _Se(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z"},child:[]}]})(s)}function xSe(s){return te({attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"},child:[]}]})(s)}function SSe(s){return te({attr:{t:"1569683928793",viewBox:"0 0 1024 1024",version:"1.1"},child:[{tag:"path",attr:{d:"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H212V212h200v200zM864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H612V212h200v200zM864 544H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z m-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"},child:[]}]})(s)}function kSe(s){return te({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M24 5.25v13a.75.75 0 0 1-1.136.643L16.5 15.075v2.175A1.75 1.75 0 0 1 14.75 19h-13A1.75 1.75 0 0 1 0 17.25v-11C0 5.284.784 4.5 1.75 4.5h13c.966 0 1.75.784 1.75 1.75v2.175l6.364-3.818A.75.75 0 0 1 24 5.25Zm-9 1a.25.25 0 0 0-.25-.25h-13a.25.25 0 0 0-.25.25v11c0 .138.112.25.25.25h13a.25.25 0 0 0 .25-.25v-11Zm1.5 7.075 6 3.6V6.575l-6 3.6Z"},child:[]}]})(s)}function vSe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M9.91,19.56c0-0.85,0.2-1.64,0.59-2.38s0.94-1.35,1.65-1.84V5.42c0-0.8,0.27-1.48,0.82-2.03S14.2,2.55,15,2.55 c0.81,0,1.49,0.28,2.04,0.83c0.55,0.56,0.83,1.23,0.83,2.03v9.92c0.71,0.49,1.25,1.11,1.64,1.84s0.58,1.53,0.58,2.38 c0,0.92-0.23,1.78-0.68,2.56s-1.07,1.4-1.85,1.85s-1.63,0.68-2.56,0.68c-0.92,0-1.77-0.23-2.55-0.68s-1.4-1.07-1.86-1.85 S9.91,20.48,9.91,19.56z M11.67,19.56c0,0.93,0.33,1.73,0.98,2.39c0.65,0.66,1.44,0.99,2.36,0.99c0.93,0,1.73-0.33,2.4-1 @@ -455,7 +455,7 @@ body { c0,0.15-0.05,0.25-0.14,0.29l-0.27,0.14c-0.55,0.29-0.98,0.7-1.29,1.23C11.82,18.35,11.67,18.92,11.67,19.56z M12.45,19.56 c0,0.71,0.24,1.32,0.73,1.82s1.07,0.75,1.76,0.75s1.28-0.25,1.79-0.75c0.51-0.5,0.76-1.11,0.76-1.81c0-0.63-0.22-1.19-0.65-1.67 c-0.43-0.48-0.96-0.77-1.58-0.85V9.69c0-0.06-0.03-0.13-0.1-0.19c-0.07-0.07-0.14-0.1-0.22-0.1c-0.09,0-0.16,0.03-0.21,0.08 - c-0.05,0.06-0.08,0.12-0.08,0.21v7.34c-0.61,0.09-1.13,0.37-1.56,0.85C12.66,18.37,12.45,18.92,12.45,19.56z`},child:[]}]})(s)}function bSe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M6.34,12.48c0-0.94,0.3-1.78,0.89-2.52s1.34-1.21,2.25-1.41C9.73,7.43,10.3,6.5,11.2,5.78s1.92-1.08,3.08-1.08 + c-0.05,0.06-0.08,0.12-0.08,0.21v7.34c-0.61,0.09-1.13,0.37-1.56,0.85C12.66,18.37,12.45,18.92,12.45,19.56z`},child:[]}]})(s)}function YSe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M6.34,12.48c0-0.94,0.3-1.78,0.89-2.52s1.34-1.21,2.25-1.41C9.73,7.43,10.3,6.5,11.2,5.78s1.92-1.08,3.08-1.08 c1.12,0,2.13,0.35,3.02,1.05c0.89,0.7,1.46,1.6,1.73,2.69h0.27c1.12,0,2.08,0.39,2.88,1.18c0.79,0.78,1.19,1.74,1.19,2.85 c0,0.6-0.12,1.17-0.37,1.7c-0.25,0.53-0.59,0.99-1.03,1.37v0.03c0,0.59-0.19,1.12-0.56,1.59c-0.37,0.47-0.84,0.76-1.4,0.89 c-0.14,0.62-0.45,1.15-0.91,1.58c-0.46,0.43-1.01,0.7-1.63,0.8c0.29,0.34,0.43,0.72,0.43,1.13c0,0.48-0.17,0.89-0.51,1.24 @@ -466,7 +466,7 @@ body { c0.41,0.48,0.92,0.71,1.54,0.71c0.57,0,1.05-0.2,1.46-0.6c0.4-0.4,0.6-0.89,0.6-1.46c0.4-0.27,0.72-0.61,0.95-1.04 c0.23-0.42,0.35-0.88,0.35-1.37c0-0.79-0.28-1.47-0.85-2.02c-0.57-0.55-1.25-0.83-2.05-0.83c-0.56,0-1.07,0.15-1.53,0.44 c0.06-0.24,0.08-0.51,0.08-0.79c0-0.96-0.34-1.78-1.03-2.46c-0.69-0.68-1.52-1.01-2.49-1.01c-0.94,0-1.75,0.33-2.43,0.97 - s-1.04,1.44-1.07,2.37c-0.02,0-0.05,0-0.08,0c-0.04,0-0.07,0-0.09,0c-0.79,0-1.46,0.28-2.03,0.84S7.74,11.45,7.74,12.23z`},child:[]}]})(s)}function USe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M7.56,17.19c0-0.88,0.24-1.89,0.72-3.03s1.1-2.25,1.86-3.31c1.56-2.06,2.92-3.62,4.06-4.67l0.75-0.72 + s-1.04,1.44-1.07,2.37c-0.02,0-0.05,0-0.08,0c-0.04,0-0.07,0-0.09,0c-0.79,0-1.46,0.28-2.03,0.84S7.74,11.45,7.74,12.23z`},child:[]}]})(s)}function QSe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M7.56,17.19c0-0.88,0.24-1.89,0.72-3.03s1.1-2.25,1.86-3.31c1.56-2.06,2.92-3.62,4.06-4.67l0.75-0.72 c0.25,0.26,0.53,0.5,0.83,0.72c0.41,0.42,1.04,1.11,1.88,2.09s1.57,1.85,2.17,2.65c0.71,1.01,1.32,2.1,1.81,3.25 s0.74,2.16,0.74,3.03c0,1-0.19,1.95-0.58,2.86c-0.39,0.91-0.91,1.7-1.57,2.36c-0.66,0.66-1.45,1.19-2.37,1.58 c-0.92,0.39-1.89,0.59-2.91,0.59c-1,0-1.95-0.19-2.86-0.57c-0.91-0.38-1.7-0.89-2.36-1.55c-0.66-0.65-1.19-1.44-1.58-2.35 @@ -483,7 +483,7 @@ body { c0.01-0.12,0.03-0.27,0.06-0.45s0.09-0.3,0.17-0.38s0.19-0.12,0.33-0.12c0.09,0,0.17,0.02,0.24,0.06c0.07,0.04,0.12,0.1,0.16,0.19 c0.04,0.09,0.07,0.17,0.1,0.24s0.04,0.18,0.05,0.32l0.01,0.32l0,0.34c0,0.16,0,0.28,0,0.35l-0.01,0.32l-0.05,0.32l-0.1,0.24 l-0.16,0.19l-0.24,0.06c-0.14,0-0.25-0.04-0.33-0.12s-0.14-0.21-0.17-0.38c-0.03-0.18-0.05-0.33-0.06-0.45S17.85,19.25,17.85,19.02z - `},child:[]}]})(s)}function $Se(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M7.38,21.83c0-0.3,0.1-0.55,0.29-0.76c0.19-0.21,0.43-0.31,0.7-0.31v-0.02l13.16,0.04c0.06-0.01,0.1-0.02,0.1-0.02 + `},child:[]}]})(s)}function bSe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M7.38,21.83c0-0.3,0.1-0.55,0.29-0.76c0.19-0.21,0.43-0.31,0.7-0.31v-0.02l13.16,0.04c0.06-0.01,0.1-0.02,0.1-0.02 c0.27,0.01,0.51,0.12,0.7,0.33c0.19,0.21,0.29,0.47,0.28,0.77c0,0.3-0.1,0.55-0.29,0.76c-0.19,0.21-0.43,0.31-0.7,0.31v0.01 L8.59,22.9c-0.1,0.01-0.17,0.02-0.22,0.02c-0.28-0.01-0.51-0.11-0.7-0.32C7.47,22.39,7.37,22.13,7.38,21.83z M8.2,16.37 c-0.01-0.43,0.04-0.93,0.16-1.52c0.06-0.3,0.2-0.76,0.44-1.37c0.02-0.05,0.07-0.14,0.13-0.28c0.01,0.02,0.03,0.03,0.04,0.05 @@ -499,7 +499,7 @@ body { c0.02,0.04,0.04,0.07,0.05,0.1c0.13,0.31,0.22,0.63,0.27,0.97c0.08,0.38,0.1,0.75,0.08,1.13c-0.02,0.29-0.07,0.56-0.16,0.81 c-0.08,0.24-0.16,0.43-0.22,0.58c-0.19,0.38-0.39,0.71-0.62,0.98c-0.06,0.07-0.11,0.13-0.14,0.16H9.67 c-0.01-0.01-0.03-0.03-0.07-0.06s-0.06-0.05-0.08-0.07C9.26,18.98,8.98,18.6,8.7,18.1c-0.08-0.15-0.18-0.38-0.29-0.69 - C8.29,17.1,8.22,16.75,8.2,16.37z`},child:[]}]})(s)}function PSe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M4.37,14.62c0-0.24,0.08-0.45,0.25-0.62c0.17-0.16,0.38-0.24,0.6-0.24h2.04c0.23,0,0.42,0.08,0.58,0.25 + C8.29,17.1,8.22,16.75,8.2,16.37z`},child:[]}]})(s)}function USe(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M4.37,14.62c0-0.24,0.08-0.45,0.25-0.62c0.17-0.16,0.38-0.24,0.6-0.24h2.04c0.23,0,0.42,0.08,0.58,0.25 c0.15,0.17,0.23,0.37,0.23,0.61S8,15.06,7.85,15.23c-0.15,0.17-0.35,0.25-0.58,0.25H5.23c-0.23,0-0.43-0.08-0.6-0.25 C4.46,15.06,4.37,14.86,4.37,14.62z M7.23,21.55c0-0.23,0.08-0.43,0.23-0.61l1.47-1.43c0.15-0.16,0.35-0.23,0.59-0.23 c0.24,0,0.44,0.08,0.6,0.23s0.24,0.34,0.24,0.57c0,0.24-0.08,0.46-0.24,0.64L8.7,22.14c-0.41,0.32-0.82,0.32-1.23,0 @@ -520,7 +520,7 @@ body { c0.24,0,0.44,0.08,0.6,0.25c0.17,0.17,0.25,0.37,0.25,0.6c0,0.25-0.08,0.46-0.24,0.62l-1.46,1.43c-0.18,0.16-0.38,0.24-0.6,0.24 c-0.23,0-0.41-0.08-0.56-0.24S19.66,9.4,19.66,9.16z M21.92,14.62c0-0.24,0.08-0.44,0.24-0.62c0.16-0.16,0.35-0.24,0.57-0.24h2.02 c0.23,0,0.43,0.09,0.6,0.26c0.17,0.17,0.26,0.37,0.26,0.6s-0.09,0.43-0.26,0.6c-0.17,0.17-0.37,0.25-0.6,0.25h-2.02 - c-0.23,0-0.43-0.08-0.58-0.25S21.92,14.86,21.92,14.62z`},child:[]}]})(s)}function b0(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M3.89,17.6c0-0.99,0.31-1.88,0.93-2.65s1.41-1.27,2.38-1.49c0.26-1.17,0.85-2.14,1.78-2.88c0.93-0.75,2-1.12,3.22-1.12 + c-0.23,0-0.43-0.08-0.58-0.25S21.92,14.86,21.92,14.62z`},child:[]}]})(s)}function Y0(s){return te({attr:{version:"1.1",id:"Layer_1",x:"0px",y:"0px",viewBox:"0 0 30 30",style:"enable-background:new 0 0 30 30;"},child:[{tag:"path",attr:{d:`M3.89,17.6c0-0.99,0.31-1.88,0.93-2.65s1.41-1.27,2.38-1.49c0.26-1.17,0.85-2.14,1.78-2.88c0.93-0.75,2-1.12,3.22-1.12 c1.18,0,2.24,0.36,3.16,1.09c0.93,0.73,1.53,1.66,1.8,2.8h0.27c1.18,0,2.18,0.41,3.01,1.24s1.25,1.83,1.25,3 c0,1.18-0.42,2.18-1.25,3.01s-1.83,1.25-3.01,1.25H8.16c-0.58,0-1.13-0.11-1.65-0.34S5.52,21,5.14,20.62 c-0.38-0.38-0.68-0.84-0.91-1.36S3.89,18.17,3.89,17.6z M5.34,17.6c0,0.76,0.28,1.42,0.82,1.96s1.21,0.82,1.99,0.82h9.28 @@ -532,7 +532,7 @@ body { c0.65,0,1.21,0.23,1.68,0.7c0.47,0.47,0.7,1.02,0.7,1.66c0,0.6-0.21,1.12-0.62,1.57s-0.92,0.7-1.53,0.77c-0.1,0-0.15,0.05-0.15,0.16 v1.13c0,0.11,0.05,0.16,0.15,0.16c1.01-0.06,1.86-0.46,2.55-1.19s1.04-1.6,1.04-2.6c0-1.06-0.37-1.96-1.12-2.7 c-0.75-0.75-1.65-1.12-2.7-1.12h-0.15c-0.26-1-0.81-1.82-1.65-2.47c-0.83-0.65-1.77-0.97-2.8-0.97C16.28,7.29,15.11,7.82,14.19,8.88 - z`},child:[]}]})(s)}function U0(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352 146.4c-34.4-48.6-67.5-78.5-90.8-96.6-3.1-2.4-7.3-2.4-10.4-.1-23 17.1-56.1 48.4-90.5 96.5-37.3 52-63 108.4-64.2 170.9 0 1.2-.1 2.5-.1 3.7 0 18.4 3.9 35.9 10.9 52.1 4.1 9.3 9.2 18.1 15.2 26.3 28.5 39 77.8 64.8 133.8 64.8 88.4 0 160.1-64.1 160.1-143.2 0-63.7-27-122.2-64-174.4zm-86 264.3h-.5c-9.9 0-12-14.1-2.6-17.1 45.1-14.2 69.6-38.5 86.4-80.8 3.5-8.9 16.7-6.5 16.8 3.1v1.4c-.1 51.6-44.9 93.4-100.1 93.4z"},child:[]}]})(s)}function WSe(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 76c48.1 0 93.3 18.7 127.3 52.7S436 207.9 436 256s-18.7 93.3-52.7 127.3S304.1 436 256 436c-48.1 0-93.3-18.7-127.3-52.7S76 304.1 76 256s18.7-93.3 52.7-127.3S207.9 76 256 76m0-28C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48z"},child:[]},{tag:"path",attr:{d:"M363.5 148.5C334.8 119.8 296.6 104 256 104c-40.6 0-78.8 15.8-107.5 44.5C119.8 177.2 104 215.4 104 256s15.8 78.8 44.5 107.5C177.2 392.2 215.4 408 256 408c40.6 0 78.8-15.8 107.5-44.5C392.2 334.8 408 296.6 408 256s-15.8-78.8-44.5-107.5z"},child:[]}]})(s)}function JSe(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M430.1 347.9c-6.6-6.1-16.3-7.6-24.6-9-11.5-1.9-15.9-4-22.6-10-14.3-12.7-14.3-31.1 0-43.8l30.3-26.9c46.4-41 46.4-108.2 0-149.2-34.2-30.1-80.1-45-127.8-45-55.7 0-113.9 20.3-158.8 60.1-83.5 73.8-83.5 194.7 0 268.5 41.5 36.7 97.5 55 152.9 55.4h1.7c55.4 0 110-17.9 148.8-52.4 14.4-12.7 12-36.6.1-47.7zM120 216c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm40 126c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-161c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm72 219c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm24-208c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"},child:[]}]})(s)}function BSe(s){return te({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M8 12a4 4 0 0 0 4 4m0 -8a4 4 0 0 0 -4 4"},child:[]},{tag:"path",attr:{d:"M3 12h1"},child:[]},{tag:"path",attr:{d:"M12 3v1"},child:[]},{tag:"path",attr:{d:"M12 20v1"},child:[]},{tag:"path",attr:{d:"M5.6 5.6l.7 .7"},child:[]},{tag:"path",attr:{d:"M6.3 17.7l-.7 .7"},child:[]},{tag:"path",attr:{d:"M20 7l-3 5h4l-3 5"},child:[]}]})(s)}function RSe(s){return te({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M224,127.17a96.48,96.48,0,0,1-2.39,22.18A24,24,0,0,1,198.21,168H152a24,24,0,0,0-24,24,24,24,0,0,1-32,22.61C58.73,201.44,32,169.81,32,128a96,96,0,0,1,95-96C179.84,31.47,223.55,74.35,224,127.17Z",opacity:"0.2"},child:[]},{tag:"path",attr:{d:"M200.77,53.89A103.27,103.27,0,0,0,128,24h-1.07A104,104,0,0,0,24,128c0,43,26.58,79.06,69.36,94.17A32,32,0,0,0,136,192a16,16,0,0,1,16-16h46.21a31.81,31.81,0,0,0,31.2-24.88,104.43,104.43,0,0,0,2.59-24A103.28,103.28,0,0,0,200.77,53.89Zm13,93.71A15.89,15.89,0,0,1,198.21,160H152a32,32,0,0,0-32,32,16,16,0,0,1-21.31,15.07C62.49,194.3,40,164,40,128a88,88,0,0,1,87.09-88h.9a88.35,88.35,0,0,1,88,87.25A88.86,88.86,0,0,1,213.81,147.6ZM140,76a12,12,0,1,1-12-12A12,12,0,0,1,140,76ZM96,100A12,12,0,1,1,84,88,12,12,0,0,1,96,100Zm0,56a12,12,0,1,1-12-12A12,12,0,0,1,96,156Zm88-56a12,12,0,1,1-12-12A12,12,0,0,1,184,100Z"},child:[]}]})(s)}function FSe(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"M296,320H216a24,24,0,0,0,0,48h80a24,24,0,0,0,0-48Zm0,32H216a8,8,0,0,1,0-16h80a8,8,0,0,1,0,16Z"}),a.createElement("path",{d:"M68.071,123.492c22.578-13.918,52.2-25.229,85.674-32.71l-3.49-15.615c-35.688,7.977-66.163,19.653-90.58,34.705-17.914,11.043-32.041,23.643-41.99,37.451l12.98,9.354C39.376,144.588,51.961,133.423,68.071,123.492Z"}),a.createElement("path",{d:"M435.533,137.112C409.439,121.027,374,108.967,332.845,102.144,322.474,87,288.213,80,256,80s-66.474,7-76.845,22.144C138,108.967,102.561,121.027,76.467,137.112,47.376,155.045,32,176.792,32,200v96c0,29,24.155,55.7,68.016,75.193C141.813,389.77,197.209,400,256,400s114.187-10.23,155.984-28.807C455.845,351.7,480,325,480,296V200C480,176.792,464.624,155.045,435.533,137.112ZM177.64,151.23C185.676,168.192,221.98,176,256,176s70.324-7.808,78.36-24.77c21.862,4.212,41.832,10.19,58.13,17.44C422.343,181.941,432,195.509,432,200s-9.657,18.059-39.51,31.33C357.224,247.008,307.475,256,256,256s-101.224-8.992-136.49-24.67C89.657,218.059,80,204.491,80,200s9.657-18.059,39.512-31.331C135.808,161.42,155.778,155.442,177.64,151.23Zm14.36-19c15.6,8,40.35,11.773,64,11.773s48.4-3.775,64-11.773V144c0,.687-2.715,5.08-15.618,9.381C291.577,157.649,274.4,160,256,160s-35.577-2.351-48.382-6.619C194.715,149.08,192,144.687,192,144Zm15.618-29.608C220.423,98.351,237.605,96,256,96s35.577,2.351,48.382,6.619C317.285,106.92,320,111.313,320,112s-2.715,5.08-15.618,9.381C291.577,125.649,274.4,128,256,128s-35.577-2.351-48.382-6.619C194.715,117.08,192,112.687,192,112S194.715,106.92,207.618,102.619ZM176,118.937v16.319c-23.589,4.453-45.254,10.9-62.99,18.794C82.779,167.489,64,185.1,64,200s18.779,32.511,49.01,45.95C150.249,262.505,202.367,272,256,272s105.751-9.5,142.99-26.05C429.221,232.511,448,214.9,448,200s-18.779-32.511-49.008-45.95c-17.738-7.89-39.4-14.341-62.992-18.794V118.937C411.852,132.7,464,165.41,464,200c0,21.967-21.328,44.044-58.516,60.572C365.688,278.259,312.6,288,256,288s-109.688-9.741-149.484-27.428C69.328,244.044,48,221.967,48,200,48,165.41,100.148,132.7,176,118.937ZM464,296c0,21.967-21.327,44.044-58.514,60.572C365.689,374.259,312.6,384,256,384s-109.689-9.741-149.486-27.428C69.327,340.044,48,317.967,48,296V239.371c11.522,13.444,29.066,25.621,52.018,35.822C141.814,293.77,197.211,304,256,304s114.186-10.23,155.982-28.807c22.952-10.2,40.5-22.378,52.018-35.822Z"}),a.createElement("path",{d:"M418.482,385.814C374.684,405.28,316.979,416,256,416a488.01,488.01,0,0,1-78.705-6.23l-2.59,15.789A504.064,504.064,0,0,0,256,432c63.169,0,123.181-11.21,168.981-31.565q1.3-.576,2.572-1.16l-6.655-14.55Q419.7,385.274,418.482,385.814Z"}),a.createElement("path",{d:"M436.123,377.062l7.754,14c5.883-3.259,11.492-6.728,16.674-10.31l-9.1-13.161C446.7,370.871,441.546,374.059,436.123,377.062Z"}),a.createElement("rect",{x:"248",y:"192",width:"16",height:"16"}),a.createElement("rect",{x:"280",y:"192",width:"16",height:"16"}),a.createElement("rect",{x:"216",y:"192",width:"16",height:"16"})))}function Ove(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M448 490.667h-32v-480C416 4.779 411.221 0 405.333 0H106.667C100.779 0 96 4.779 96 10.667v480H64c-5.888 0-10.667 4.779-10.667 10.667C53.333 507.221 58.112 512 64 512h384c5.888 0 10.667-4.779 10.667-10.667s-4.779-10.666-10.667-10.666zm-53.333 0H117.333V21.333h277.333v469.334z"}),a.createElement("path",{fill:"currentColor",d:"M341.333 277.333c17.643 0 32-14.357 32-32s-14.357-32-32-32-32 14.357-32 32 14.358 32 32 32zm0-42.666c5.888 0 10.667 4.779 10.667 10.667S347.221 256 341.333 256s-10.667-4.779-10.667-10.667 4.779-10.666 10.667-10.666z"}))}function GSe(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M298.667 298.667c17.643 0 32-14.357 32-32s-14.357-32-32-32-32 14.357-32 32c0 17.642 14.357 32 32 32zm0-42.667c5.867 0 10.667 4.779 10.667 10.667s-4.8 10.667-10.667 10.667S288 272.555 288 266.667 292.8 256 298.667 256z"}),a.createElement("path",{fill:"currentColor",d:"M448 490.667h-32v-480C416 4.779 411.221 0 405.333 0H106.667c-.597 0-1.131.256-1.707.341-.555.085-1.088.149-1.621.32-.939.32-1.749.789-2.56 1.344-.32.213-.704.277-1.003.533-.107.085-.149.213-.256.32-.768.704-1.365 1.579-1.899 2.496-.213.341-.512.619-.661.981-.597 1.345-.96 2.774-.96 4.332v480H64c-5.888 0-10.667 4.779-10.667 10.667C53.333 507.221 58.112 512 64 512h42.667c.576 0 1.173-.043 1.749-.149l256-42.667a10.672 10.672 0 0 0 8.917-10.517V53.333c0-5.227-3.776-9.664-8.917-10.517L235.541 21.333h159.125v480c0 5.888 4.779 10.667 10.667 10.667H448c5.888 0 10.667-4.779 10.667-10.667s-4.779-10.666-10.667-10.666zm-96-428.31v387.264l-234.667 39.125V23.253L352 62.357z"}))}function Eve(s){return a.createElement("svg",{viewBox:"0 0 452.498 452.498",...s},a.createElement("path",{fill:"currentColor",d:"M301.317 295.155c-51.157-10.946-87.714-56.144-87.723-108.459a112.981 112.981 0 0 1 2.304-23.381 107.145 107.145 0 0 1 8.533-23.723 8.53 8.53 0 0 0-.427-8.533c-21.845-35.413-48.213-74.752-84.48-103.68a151.775 151.775 0 0 0-13.653-9.899 79.82 79.82 0 0 0-13.653-7.083 8.535 8.535 0 0 0-11.691 9.728l1.024 4.523c1.109 4.864 2.219 9.728 3.072 14.763a151.95 151.95 0 0 1 2.475 22.613v5.973a160.68 160.68 0 0 1-51.2 117.077 187.752 187.752 0 0 0-40.619 49.323 140.292 140.292 0 0 0-6.485 112.555C28.65 398.37 74.79 435.008 129.37 442.696h1.28a8.629 8.629 0 0 0 2.56-17.066 67.41 67.41 0 0 1-43.776-39.339 61.78 61.78 0 0 1 2.731-49.493 91.4 91.4 0 0 1 19.029-22.784 98.216 98.216 0 0 0 31.317-71.851v-3.669-5.12a86.72 86.72 0 0 1 17.067 19.029 80.214 80.214 0 0 1 12.885 42.667v.683a80.558 80.558 0 0 1-14.592 46.336 8.534 8.534 0 0 0 2.816 12.288 29.268 29.268 0 0 0 29.525 1.28 50.175 50.175 0 0 0 21.333-27.477 59.734 59.734 0 0 1 12.715 36.011c-.579 27.882-18.718 52.352-45.227 61.013a8.534 8.534 0 0 0 4.266 16.469c70.656-12.715 121.941-69.717 124.757-137.984a8.53 8.53 0 0 0-6.739-8.534zm-72.022 111.104a79.103 79.103 0 0 0 12.117-41.899 84.48 84.48 0 0 0-28.416-60.245 8.535 8.535 0 0 0-14.507 5.376c-.939 11.435-7.68 26.624-16.213 31.317a11.012 11.012 0 0 1-4.181 1.28 97.453 97.453 0 0 0 11.52-46.08v-1.024a97.279 97.279 0 0 0-15.616-52.053 105.562 105.562 0 0 0-39.509-35.925 8.535 8.535 0 0 0-12.117 10.155 78.449 78.449 0 0 1 3.755 22.016v2.731a81.32 81.32 0 0 1-26.027 59.733 105.478 105.478 0 0 0-22.443 27.477 80.723 80.723 0 0 0-8.533 35.499 79.108 79.108 0 0 0 13.397 43.947 131.416 131.416 0 0 1-57.941-67.669 123.223 123.223 0 0 1 5.717-98.901 170.67 170.67 0 0 1 37.205-44.629 177.58 177.58 0 0 0 56.405-129.451v-6.571a167.053 167.053 0 0 0-2.731-24.917V34.89a100.687 100.687 0 0 1 7.509 5.717c32.939 26.197 57.685 62.72 78.251 95.488a123.351 123.351 0 0 0-7.509 23.211 129.741 129.741 0 0 0-2.901 27.392c-.012 57.557 38.394 108.044 93.867 123.392a129.706 129.706 0 0 1-61.099 96.169z"}),a.createElement("path",{fill:"currentColor",d:"M324.527 58.697c-49.399.039-94.366 28.501-115.541 73.131a123.96 123.96 0 0 0-9.557 27.477 129.741 129.741 0 0 0-2.901 27.392 127.147 127.147 0 0 0 48.896 100.608 128.002 128.002 0 0 0 79.104 27.392 126.807 126.807 0 0 0 79.104-27.392 128.001 128.001 0 0 0 48.867-100.579c.015-70.693-57.279-128.013-127.972-128.029zm0 238.933a110.91 110.91 0 0 1-23.211-2.475c-51.157-10.946-87.714-56.144-87.723-108.459a112.938 112.938 0 0 1 2.219-23.723 107.639 107.639 0 0 1 8.533-23.808c18.353-38.703 57.347-63.382 100.181-63.403 61.267 0 110.933 49.667 110.933 110.933S385.794 297.63 324.527 297.63z"}),a.createElement("path",{fill:"currentColor",d:"M354.565 106.91a16.212 16.212 0 0 0-11.947-5.205h-36.267a16.216 16.216 0 0 0-11.947 5.205 15.19 15.19 0 0 0-4.011 11.52l6.4 79.616c.837 8.16 7.755 14.338 15.957 14.251h23.552c8.086.105 14.958-5.885 15.957-13.909l6.4-79.957a15.187 15.187 0 0 0-4.094-11.521zm-19.115 88.32h-21.675l-6.315-76.8h34.133l-6.143 76.8zM328.965 229.363h-8.96c-11.621.047-21.031 9.456-21.077 21.077v9.045c.047 11.621 9.456 21.031 21.077 21.077h9.045c11.654-.047 21.077-9.508 21.077-21.163v-8.96c-.047-11.653-9.508-21.076-21.162-21.076zm4.096 30.038a4.097 4.097 0 0 1-4.011 4.011h-8.96a4.097 4.097 0 0 1-4.011-4.011v-8.96a4.097 4.097 0 0 1 4.011-4.011h8.96a4.097 4.097 0 0 1 4.011 4.011v8.96z"}))}function $0(s){return a.createElement("svg",{viewBox:"0 0 512.006 512.006",...s},a.createElement("path",{d:"M502.379 211.249c0 74.656-60.52 135.176-135.176 135.176-6.469.01-12.919-.473-19.311-1.448-66.487-9.598-115.837-66.555-115.866-133.728-.019-67.212 49.349-124.227 115.866-133.825a142.128 142.128 0 0 1 19.311-1.352c74.656 0 135.176 60.521 135.176 135.177z",fill:"#c52828"}),a.createElement("path",{d:"M463.757 211.249c-.029 67.173-49.378 124.131-115.865 133.728-66.487-9.598-115.837-66.555-115.866-133.728-.019-67.212 49.349-124.227 115.866-133.825 66.516 9.598 115.875 66.613 115.865 133.825z",fill:"#f44335"}),a.createElement("g",{fill:"#fdd834"},a.createElement("path",{d:"M380.527 230.56h-26.649a8.208 8.208 0 0 1-8.4-7.242l-7.242-90.472c-.212-4.47 3.235-8.275 7.705-8.497.232-.01.463-.01.695 0h41.036a8.105 8.105 0 0 1 8.4 7.802c.01.232.01.463 0 .695l-7.242 90.472c-.501 4.181-4.093 7.319-8.303 7.242zM362.085 269.181h10.235c7.84 0 14.194 6.353 14.194 14.194v10.235c0 7.84-6.353 14.194-14.194 14.194h-10.235c-7.84 0-14.194-6.353-14.194-14.194v-10.235c.001-7.84 6.354-14.194 14.194-14.194z"})),a.createElement("path",{d:"M308.015 332.714a132.057 132.057 0 0 1-24.332-15.256 138.367 138.367 0 0 1-25.587-26.456 134.123 134.123 0 0 1-26.07-79.754 136.453 136.453 0 0 1 3.09-28.966 129.801 129.801 0 0 1 9.655-28.966c-24.428-39.201-50.691-78.113-85.547-108.334-2.607-2.221-5.214-4.442-7.917-6.566a161.051 161.051 0 0 0-14.387-10.621 80.965 80.965 0 0 0-13.807-7.145c1.641 7.338 3.476 14.773 4.731 22.208a180.355 180.355 0 0 1 2.993 26.939v7.145a192.012 192.012 0 0 1-60.829 139.521 202.647 202.647 0 0 0-43.836 52.719 149.063 149.063 0 0 0-6.566 120.017 152.006 152.006 0 0 0 22.208 40.167 164.926 164.926 0 0 0 106.21 61.891 86.874 86.874 0 0 1-44.801-32.249 51.315 51.315 0 0 1-3.669-5.6 77.46 77.46 0 0 1-6.469-13.325 79.464 79.464 0 0 1 3.766-63.726 111.914 111.914 0 0 1 23.463-28.387 101.983 101.983 0 0 0 32.442-74.25v-3.862a97.875 97.875 0 0 0-4.731-27.132 112.539 112.539 0 0 1 10.911 6.566 108.053 108.053 0 0 1 30.222 30.801 100.963 100.963 0 0 1 15.835 46.443v8.4a100.92 100.92 0 0 1-18.249 57.933c22.98 13.035 38.622-8.593 44.994-28.966a60.067 60.067 0 0 0 2.51-12.842 88.458 88.458 0 0 1 28.966 61.312v5.214c-2.704 33.678-25.346 62.451-57.45 72.995 73.353-11.789 128.717-72.889 133.245-147.053a131.977 131.977 0 0 1-30.994-10.815z",fill:"#f57c00"}),a.createElement("path",{d:"M263.117 417.489v-5.214a88.462 88.462 0 0 0-28.966-61.312 60.129 60.129 0 0 1-2.51 12.842c-5.986 20.47-22.014 42.098-44.994 28.966a100.923 100.923 0 0 0 18.249-57.933v-.966-7.338a100.971 100.971 0 0 0-15.835-46.443 108.027 108.027 0 0 0-30.222-30.801 108.949 108.949 0 0 0-39.877-35.532 97.838 97.838 0 0 1 4.731 27.132v3.862a101.988 101.988 0 0 1-32.442 74.25 111.924 111.924 0 0 0-23.366 28.387 79.491 79.491 0 0 0-3.573 63.726 83.948 83.948 0 0 0 35.436 42.291 51.315 51.315 0 0 0 3.669 5.6 86.886 86.886 0 0 0 44.415 32.249 164.927 164.927 0 0 1-106.21-61.892 152.082 152.082 0 0 1-22.014-40.167 149.055 149.055 0 0 1 6.564-120.015 202.714 202.714 0 0 1 44.029-53.202A192.012 192.012 0 0 0 131.03 76.458v-7.145a180.486 180.486 0 0 0-2.993-26.939c-1.255-7.435-3.09-14.869-4.731-22.208a80.965 80.965 0 0 1 13.807 7.145 159.446 159.446 0 0 1 14.773 10.718c2.704 2.124 5.311 4.345 7.917 6.566 34.856 30.222 61.119 69.133 85.547 108.334a129.75 129.75 0 0 0-9.655 28.966 136.634 136.634 0 0 0-3.669 29.353 134.116 134.116 0 0 0 26.07 79.754 138.396 138.396 0 0 0 25.587 26.456 132.164 132.164 0 0 0 24.332 15.256 152.203 152.203 0 0 1-44.898 84.775z",fill:"#ff9801"}),a.createElement("path",{d:"M147.831 500.912h-1.448c-61.756-8.7-113.963-50.15-136.432-108.334a158.725 158.725 0 0 1 7.338-127.355 212.528 212.528 0 0 1 45.96-55.809 181.787 181.787 0 0 0 57.933-132.473v-6.759a171.298 171.298 0 0 0-2.8-25.587c-.966-5.697-2.221-11.2-3.476-16.704l-1.159-5.117c-1.178-5.204 2.076-10.37 7.28-11.548a9.663 9.663 0 0 1 5.948.541 89.473 89.473 0 0 1 15.449 8.014 172.47 172.47 0 0 1 15.449 11.2c41.036 32.732 70.871 77.244 95.589 117.314a9.673 9.673 0 0 1 .483 9.655 121.056 121.056 0 0 0-9.655 26.842 128.158 128.158 0 0 0-2.607 26.456c.01 59.198 41.374 110.333 99.258 122.721a9.655 9.655 0 0 1 7.628 9.655c-3.186 77.244-61.216 141.742-141.163 156.129-5.253.927-10.254-2.588-11.181-7.84a9.65 9.65 0 0 1 6.353-10.795c29.99-9.8 50.517-37.492 51.174-69.037a67.618 67.618 0 0 0-14.387-40.746 56.78 56.78 0 0 1-24.139 31.091 33.122 33.122 0 0 1-33.408-1.448c-4.644-2.626-6.276-8.516-3.659-13.16.145-.261.299-.502.473-.743a91.187 91.187 0 0 0 16.511-52.429v-.772a90.743 90.743 0 0 0-14.58-48.277 98.107 98.107 0 0 0-19.311-21.532v9.945a111.13 111.13 0 0 1-35.436 81.299 103.445 103.445 0 0 0-21.532 25.78 69.873 69.873 0 0 0-3.09 56.002 76.304 76.304 0 0 0 49.533 44.512c5.33.801 9.009 5.774 8.207 11.104-.801 5.328-5.774 8.997-11.103 8.205zM137.113 39.478v1.738a188.136 188.136 0 0 1 3.09 28.194v7.435A200.926 200.926 0 0 1 76.38 223.318a192.998 192.998 0 0 0-42.098 50.498 139.414 139.414 0 0 0-6.469 111.907 148.682 148.682 0 0 0 65.561 76.568 89.522 89.522 0 0 1-15.159-49.726 91.25 91.25 0 0 1 9.655-40.167 119.46 119.46 0 0 1 25.394-31.091 92.026 92.026 0 0 0 29.449-67.588v-3.09a88.799 88.799 0 0 0-4.248-24.911 9.653 9.653 0 0 1 6.237-12.147 9.638 9.638 0 0 1 7.473.657 119.392 119.392 0 0 1 44.705 40.649 110.062 110.062 0 0 1 17.669 58.898v1.159a110.343 110.343 0 0 1-13.035 52.139 12.555 12.555 0 0 0 4.731-1.448c9.655-5.31 17.283-22.497 18.345-35.436.434-5.31 5.088-9.269 10.409-8.844a9.61 9.61 0 0 1 6.006 2.761 95.586 95.586 0 0 1 32.153 68.168 89.528 89.528 0 0 1-13.711 47.408 146.774 146.774 0 0 0 69.133-108.817c-62.77-17.37-106.22-74.492-106.21-139.618a146.655 146.655 0 0 1 3.283-30.994 139.876 139.876 0 0 1 8.497-26.263c-23.27-37.077-51.27-78.402-88.541-108.045a113.049 113.049 0 0 0-8.496-6.467z"}),a.createElement("path",{d:"M367.203 356.081a144.841 144.841 0 0 1-89.506-30.994 143.882 143.882 0 0 1-55.326-113.838 146.655 146.655 0 0 1 3.283-30.994 140.652 140.652 0 0 1 10.814-31.091c23.965-50.498 74.839-82.699 130.735-82.747 79.986.019 144.813 64.875 144.803 144.861a144.848 144.848 0 0 1-55.297 113.809 143.543 143.543 0 0 1-89.506 30.994zm0-270.353c-48.47.019-92.586 27.943-113.355 71.74a121.83 121.83 0 0 0-9.655 26.939 127.805 127.805 0 0 0-2.51 26.842c.01 59.198 41.374 110.333 99.258 122.721a125.763 125.763 0 0 0 26.263 2.8c69.326 0 125.521-56.195 125.521-125.521S436.519 85.728 367.203 85.728z"}),a.createElement("path",{d:"M380.527 240.215h-26.649c-9.279.097-17.109-6.894-18.056-16.125l-7.242-90.085a17.201 17.201 0 0 1 4.538-13.035 18.38 18.38 0 0 1 13.518-5.89h41.036a18.375 18.375 0 0 1 13.518 5.89 17.204 17.204 0 0 1 4.635 13.035l-7.242 90.472c-1.139 9.076-8.912 15.854-18.056 15.738zm-25.49-19.311h24.525l6.952-86.899h-38.622l7.145 86.899zM372.32 317.459h-10.235c-13.151-.048-23.801-10.698-23.849-23.849v-10.235c.048-13.151 10.698-23.801 23.849-23.849h10.138c13.189 0 23.888 10.66 23.946 23.849v10.138c0 13.18-10.669 23.888-23.849 23.946zm-10.138-38.622a4.635 4.635 0 0 0-4.538 4.538v10.138a4.635 4.635 0 0 0 4.538 4.538h10.138a4.635 4.635 0 0 0 4.538-4.538v-10.138a4.635 4.635 0 0 0-4.538-4.538h-10.138z"}))}function _ve(s){return a.createElement("svg",{viewBox:"0 0 512.224 512.224",...s},a.createElement("path",{fill:"currentColor",d:"M321.71 427.573c-42.239-16.782-69.968-57.632-69.973-103.083.012-7.976.87-15.928 2.56-23.723a107.066 107.066 0 0 1 10.752-28.757 8.534 8.534 0 0 0-2.304-10.923 98.766 98.766 0 0 1-9.216-7.851 92.567 92.567 0 0 1-20.053-28.843 89.437 89.437 0 0 1-7.339-35.413 87.726 87.726 0 0 1 10.069-40.107c2.219-4.096 4.437-8.107 6.997-12.117a8.536 8.536 0 0 0 0-9.387l-17.835-28.416-17.067-27.392a24.148 24.148 0 0 0-7.906-7.906c-11.358-6.992-26.233-3.452-33.225 7.906l-50.176 80.64c-11.264 18.091-22.869 36.779-34.901 54.784l-3.413 5.035A698.15 698.15 0 0 0 39 275.935a158.81 158.81 0 0 0-17.664 72.96 160.509 160.509 0 0 0 13.056 63.659 165.287 165.287 0 0 0 88.661 86.784 167.511 167.511 0 0 0 64.683 12.885 167.509 167.509 0 0 0 64.683-12.8 164.36 164.36 0 0 0 52.907-34.901 162.072 162.072 0 0 0 20.309-24.149 8.532 8.532 0 0 0-3.925-12.8zm-28.331 24.917a147.644 147.644 0 0 1-47.445 31.147 152.92 152.92 0 0 1-116.395 0 148.222 148.222 0 0 1-79.445-77.824 143.623 143.623 0 0 1-11.691-56.917 141.656 141.656 0 0 1 15.701-65.195 688.246 688.246 0 0 1 38.741-62.293l3.413-5.035c12.203-18.176 23.893-37.035 35.243-55.211l50.176-80.725a6.995 6.995 0 0 1 6.059-3.413 7.082 7.082 0 0 1 6.144 3.84l17.067 27.392 14.933 24.064c-1.621 2.56-3.243 5.461-4.864 8.533a104.964 104.964 0 0 0-11.776 48.299 106.408 106.408 0 0 0 8.533 42.155 109.907 109.907 0 0 0 23.808 34.133 136.402 136.402 0 0 0 5.205 4.693 124.263 124.263 0 0 0-9.216 26.965 129.873 129.873 0 0 0-2.901 27.392c.04 48.518 27.402 92.877 70.741 114.688a143.263 143.263 0 0 1-12.031 13.312z"}),a.createElement("path",{fill:"currentColor",d:"M100.014 442.592c-.058 0-.114-.008-.172-.009-.057.001-.113.009-.17.009h.342z"}),a.createElement("path",{fill:"currentColor",d:"M105.646 428a112.632 112.632 0 0 1-24.576-35.755 109.311 109.311 0 0 1-8.533-43.349 107.531 107.531 0 0 1 11.861-49.408 8.533 8.533 0 0 0-3.889-12.306 8.533 8.533 0 0 0-11.216 4.455 124.582 124.582 0 0 0-13.824 57.259 126.296 126.296 0 0 0 10.24 50.091 129.715 129.715 0 0 0 28.331 41.131 8.535 8.535 0 0 0 5.802 2.466 8.527 8.527 0 0 0 5.853-2.515 8.534 8.534 0 0 0-.049-12.069zM419.161 140.597a456.86 456.86 0 0 0-26.453-42.155l-1.707-2.475C381.443 82.4 372.91 68.149 364.377 54.41L335.79 8.757a18.69 18.69 0 0 0-5.896-5.896c-8.742-5.486-20.277-2.846-25.763 5.896L275.63 54.41c-8.533 14.08-17.408 27.989-26.453 41.899-6.997 10.155-14.08 20.565-20.395 31.232-2.56 4.096-5.12 8.448-7.68 13.312a104.964 104.964 0 0 0-11.776 48.299 106.408 106.408 0 0 0 8.533 42.155 109.918 109.918 0 0 0 23.808 34.133 115.197 115.197 0 0 0 10.752 9.216 8.533 8.533 0 0 0 5.12 1.707l1.877-.256a8.532 8.532 0 0 0 5.717-4.267 110.25 110.25 0 0 1 42.155-43.435 112.64 112.64 0 0 1 106.581-2.389 8.533 8.533 0 0 0 12.117-4.95 105.041 105.041 0 0 0-6.825-80.469zm-7.083 65.707a129.795 129.795 0 0 0-113.408 7.253 127.305 127.305 0 0 0-43.349 41.387l-1.792-1.707a92.567 92.567 0 0 1-20.053-28.843 89.437 89.437 0 0 1-7.339-35.413 87.734 87.734 0 0 1 9.813-40.363c2.219-3.84 4.523-8.192 7.168-12.373 6.144-10.411 13.141-20.651 20.053-30.72 9.387-13.824 18.432-28.16 26.965-42.069l28.501-45.397a1.536 1.536 0 0 1 1.365-.768 1.535 1.535 0 0 1 1.365.768l27.904 45.312c8.619 13.909 17.579 28.245 26.965 42.069l1.707 2.475a443.768 443.768 0 0 1 25.6 40.533 87.883 87.883 0 0 1 8.535 57.856z"}),a.createElement("path",{fill:"currentColor",d:"M277.337 228.746a58.176 58.176 0 0 1-12.629-18.091 54.768 54.768 0 0 1-4.437-21.675 53.425 53.425 0 0 1 5.973-24.576c1.707-3.157 3.499-6.4 5.632-9.728l.512-.853a8.533 8.533 0 0 0-2.894-12.242 8.533 8.533 0 0 0-11.613 3.282l-.512.768c-2.219 3.584-4.352 7.253-6.229 10.837a70.656 70.656 0 0 0-7.936 32.512 71.854 71.854 0 0 0 5.888 28.501 75.615 75.615 0 0 0 16.299 23.467 8.531 8.531 0 0 0 5.973 2.389v.085a8.533 8.533 0 0 0 5.973-14.676z"}),a.createElement("path",{fill:"currentColor",d:"M421.721 210.826a129.961 129.961 0 0 0-123.051 2.731 127.233 127.233 0 0 0-48.64 50.176 124.24 124.24 0 0 0-12.459 33.365 129.873 129.873 0 0 0-2.901 27.392c0 70.692 57.308 128 128 128 47.899.071 91.829-26.606 113.855-69.14 32.508-62.775 7.971-140.016-54.804-172.524zM362.67 435.424c-61.267 0-110.933-49.667-110.933-110.933.006-8.004.864-15.985 2.56-23.808a107.209 107.209 0 0 1 10.752-28.843c19.355-35.894 56.842-58.275 97.621-58.283 61.267 0 110.933 49.666 110.933 110.933S423.937 435.424 362.67 435.424z"}),a.createElement("path",{fill:"currentColor",d:"M392.707 244.704a16.296 16.296 0 0 0-11.947-5.205h-36.267a16.296 16.296 0 0 0-11.947 5.205 15.274 15.274 0 0 0-4.011 11.52l6.4 79.531c.796 8.194 7.725 14.419 15.957 14.336h23.552c8.086.105 14.958-5.885 15.957-13.909l6.4-79.957a15.26 15.26 0 0 0-4.094-11.521zm-19.114 88.32h-21.675l-6.315-76.8h34.133l-6.143 76.8zM367.107 367.157h-8.96c-11.621.047-21.031 9.456-21.077 21.077v9.045c.047 11.621 9.456 21.031 21.077 21.077h9.045c11.654-.047 21.077-9.508 21.077-21.163v-8.96c-.046-11.653-9.507-21.076-21.162-21.076zm4.096 30.037a4.097 4.097 0 0 1-4.011 4.011h-8.96a4.097 4.097 0 0 1-4.011-4.011v-8.96a4.097 4.097 0 0 1 4.011-4.011h8.96a4.097 4.097 0 0 1 4.011 4.011v8.96z"}))}function P0(s){return a.createElement("svg",{viewBox:"0 0 512.002 512.002",...s},a.createElement("path",{d:"M481.929 324.35c0 65.951-53.464 119.415-119.415 119.415a111.938 111.938 0 0 1-17.059-1.279c-58.735-8.478-102.33-58.795-102.356-118.135-.017-59.375 43.595-109.742 102.356-118.221a125.333 125.333 0 0 1 17.059-1.194c65.951-.001 119.415 53.462 119.415 119.414z",fill:"#c52828"}),a.createElement("path",{d:"M447.81 324.35c-.026 59.341-43.621 109.657-102.356 118.135-58.735-8.478-102.33-58.795-102.356-118.135-.017-59.375 43.595-109.742 102.356-118.221 58.77 8.487 102.373 58.846 102.356 118.221z",fill:"#f44335"}),a.createElement("g",{fill:"#fdd834"},a.createElement("path",{d:"M374.285 341.409h-23.542a7.251 7.251 0 0 1-7.421-6.397l-6.397-79.923a7.174 7.174 0 0 1 6.807-7.506c.205-.009.409-.009.614 0h36.251a7.16 7.16 0 0 1 7.421 6.892c.009.205.009.409 0 .614l-6.397 79.923a7.249 7.249 0 0 1-7.336 6.397zM357.993 375.527h9.041c6.926 0 12.539 5.612 12.539 12.539v9.041c0 6.926-5.612 12.539-12.539 12.539h-9.041c-6.926 0-12.539-5.612-12.539-12.539v-9.041c0-6.926 5.621-12.539 12.539-12.539z"})),a.createElement("path",{d:"M318.415 435.235a153.553 153.553 0 0 1-19.192 22.859 157.081 157.081 0 0 1-50.154 33.095 159.575 159.575 0 0 1-61.413 12.283 149.268 149.268 0 0 1-20.556-1.365 155.17 155.17 0 0 1-40.857-10.833 156.698 156.698 0 0 1-84.017-82.311 152.753 152.753 0 0 1-12.368-60.219 150.27 150.27 0 0 1 17.059-69.005 752.602 752.602 0 0 1 42.648-68.237c15.268-22.774 29.513-46.145 44.013-69.346l34.119-54.504 7.335-11.771c4.504-7.353 14.117-9.656 21.469-5.143a15.525 15.525 0 0 1 5.143 5.143l34.716 55.869c-2.644 4.18-5.032 8.53-7.335 12.709a96.424 96.424 0 0 0-11.515 44.439 98.026 98.026 0 0 0 8.018 38.725 100.313 100.313 0 0 0 21.921 31.56 106.83 106.83 0 0 0 9.98 8.53 115.344 115.344 0 0 0-11.6 31.048 120.546 120.546 0 0 0-2.729 25.589c.041 48.9 29.878 92.828 75.315 110.885z",fill:"#0377bc"}),a.createElement("path",{d:"M277.217 435.235a153.553 153.553 0 0 1-19.192 22.859 157.081 157.081 0 0 1-50.154 33.095 158.847 158.847 0 0 1-40.772 10.833 155.17 155.17 0 0 1-40.857-10.833 156.698 156.698 0 0 1-84.017-82.311 152.657 152.657 0 0 1-12.368-60.134 150.27 150.27 0 0 1 17.059-69.005 752.602 752.602 0 0 1 42.648-68.237c15.268-22.774 29.513-46.145 44.013-69.346l34.119-54.504c9.212 14.671 18.339 29.427 27.465 44.098-2.644 4.18-5.032 8.53-7.335 12.709a96.502 96.502 0 0 0-10.833 44.354 98.026 98.026 0 0 0 8.018 38.725 100.313 100.313 0 0 0 21.921 31.56 106.83 106.83 0 0 0 9.98 8.53 115.323 115.323 0 0 0-12.283 31.133 120.546 120.546 0 0 0-2.729 25.589c.043 48.9 29.88 92.828 75.317 110.885z",fill:"#02a9f4"}),a.createElement("path",{d:"M411.388 144.545a477.911 477.911 0 0 0-27.636-43.842c-9.894-14.586-19.192-29.598-28.489-44.525L328.395 13.53c-3.037-4.708-9.323-6.065-14.031-3.028a10.259 10.259 0 0 0-3.028 3.028l-12.794 20.215-14.074 22.433c-9.297 14.927-18.595 29.939-28.489 44.525-6.994 10.236-13.989 20.471-20.301 31.133-2.644 4.18-5.032 8.53-7.335 12.709a96.502 96.502 0 0 0-10.833 44.354 98.758 98.758 0 0 0 29.939 70.284 106.83 106.83 0 0 0 9.98 8.53 119.423 119.423 0 0 1 84.017-60.902 114.9 114.9 0 0 1 21.068-1.877c5.186.009 10.372.324 15.524.938a119.369 119.369 0 0 1 39.578 12.539 96.462 96.462 0 0 0-6.228-73.866z",fill:"#0377bc"}),a.createElement("path",{d:"M379.573 188.899a93.046 93.046 0 0 1-1.535 17.059 131.537 131.537 0 0 0-15.524-1.024 114.797 114.797 0 0 0-21.068 1.877 119.425 119.425 0 0 0-84.017 60.902 106.96 106.96 0 0 1-9.98-8.53c-31.099-29.743-38.878-76.417-19.106-114.638 2.303-4.35 4.691-8.53 7.335-12.709 6.312-10.662 13.306-20.898 20.301-31.133 9.894-14.586 19.192-29.598 28.489-44.525l14.074-22.433 14.074 22.433c9.297 14.927 18.595 29.939 28.489 44.525a477.911 477.911 0 0 1 27.636 43.842 96.401 96.401 0 0 1 10.832 44.354z",fill:"#02a9f4"}),a.createElement("path",{d:"M187.656 512.002a167.398 167.398 0 0 1-64.655-12.88 165.226 165.226 0 0 1-88.623-86.746 160.466 160.466 0 0 1-13.05-63.631 158.81 158.81 0 0 1 17.656-72.928 698.388 698.388 0 0 1 39.663-63.887l3.412-5.032c12.027-17.998 23.627-36.677 34.886-54.76L167.1 71.531c6.986-11.353 21.861-14.893 33.214-7.898a24.1 24.1 0 0 1 7.898 7.898l17.059 27.38 17.827 28.404a8.521 8.521 0 0 1 0 9.383c-2.559 4.009-4.777 8.018-6.994 12.112a87.69 87.69 0 0 0-10.065 40.089 89.456 89.456 0 0 0 7.335 35.398 92.438 92.438 0 0 0 20.045 28.83 99.608 99.608 0 0 0 9.212 7.847 8.534 8.534 0 0 1 2.303 10.918 106.955 106.955 0 0 0-10.747 28.745 112.483 112.483 0 0 0-2.559 23.712c.009 45.429 27.721 86.26 69.943 103.038 4.393 1.706 6.559 6.653 4.853 11.046a8.584 8.584 0 0 1-.93 1.749 162.407 162.407 0 0 1-20.301 24.139 164.29 164.29 0 0 1-52.884 34.886 167.489 167.489 0 0 1-64.653 12.795zm0-435.012a6.99 6.99 0 0 0-6.056 3.412l-50.154 80.69c-11.344 18.168-23.03 37.019-35.227 55.187l-3.412 5.032a687.543 687.543 0 0 0-38.725 62.266 141.613 141.613 0 0 0-15.695 65.166 143.56 143.56 0 0 0 11.686 56.893 148.16 148.16 0 0 0 79.411 77.79 152.855 152.855 0 0 0 116.344 0 147.616 147.616 0 0 0 47.425-31.133 143.446 143.446 0 0 0 12.027-13.306c-43.322-21.802-70.668-66.139-70.711-114.638a129.576 129.576 0 0 1 2.9-27.38 124.357 124.357 0 0 1 9.212-26.954 136.293 136.293 0 0 1-5.203-4.691 109.87 109.87 0 0 1-23.798-34.119 106.411 106.411 0 0 1-8.53-42.136c0-16.803 4.035-33.359 11.771-48.278 1.621-3.071 3.241-5.971 4.862-8.53l-14.927-24.054-17.059-27.38a7.087 7.087 0 0 0-6.141-3.837z"}),a.createElement("path",{d:"M99.971 442.4A8.521 8.521 0 0 1 94 439.926a129.631 129.631 0 0 1-28.318-41.113 126.28 126.28 0 0 1-10.236-50.069 124.503 124.503 0 0 1 13.818-57.234c1.868-4.325 6.883-6.32 11.208-4.452s6.32 6.883 4.452 11.208c-.162.375-.35.742-.563 1.092a107.494 107.494 0 0 0-11.856 49.387 109.211 109.211 0 0 0 8.53 43.331 112.626 112.626 0 0 0 24.565 35.739c3.344 3.318 3.369 8.717.051 12.061a8.549 8.549 0 0 1-6.022 2.525l.342-.001zM257.428 276.242a8.526 8.526 0 0 1-5.118-1.706 115.222 115.222 0 0 1-10.747-9.212 109.87 109.87 0 0 1-23.798-34.119 106.411 106.411 0 0 1-8.53-42.136c0-16.803 4.035-33.359 11.771-48.278 2.559-4.862 5.118-9.212 7.677-13.306 6.312-10.662 13.392-21.068 20.386-31.218 9.041-13.903 17.912-27.807 26.442-41.881L304 8.753c5.485-8.734 17.017-11.379 25.751-5.894a18.698 18.698 0 0 1 5.894 5.894l28.574 45.634c8.53 13.733 17.059 27.977 26.612 41.539l1.706 2.474a457.473 457.473 0 0 1 26.442 42.136 104.968 104.968 0 0 1 6.824 80.434c-1.433 4.487-6.235 6.969-10.722 5.536a8.282 8.282 0 0 1-1.39-.589 112.612 112.612 0 0 0-106.535 2.388 110.28 110.28 0 0 0-42.136 43.416 8.52 8.52 0 0 1-5.715 4.265l-1.877.256zm62.437-258.959a1.541 1.541 0 0 0-1.365.768l-28.489 45.378c-8.53 13.903-17.571 28.233-26.954 42.051-6.909 10.065-13.903 20.301-20.045 30.707-2.644 4.18-4.947 8.53-7.165 12.368a87.722 87.722 0 0 0-9.809 40.345 89.456 89.456 0 0 0 7.335 35.398 92.438 92.438 0 0 0 20.045 28.83l1.791 1.706a127.216 127.216 0 0 1 43.331-41.369 129.73 129.73 0 0 1 113.359-7.25 87.904 87.904 0 0 0-8.53-57.831 444.102 444.102 0 0 0-25.589-40.516l-1.706-2.474c-9.383-13.818-18.339-28.148-26.954-42.051L321.23 18.05a1.532 1.532 0 0 0-1.365-.767z"}),a.createElement("path",{d:"M271.246 243.233a8.519 8.519 0 0 1-5.971-2.388 75.502 75.502 0 0 1-16.292-23.456 71.923 71.923 0 0 1-5.885-28.489 70.537 70.537 0 0 1 7.933-32.498c1.877-3.582 4.009-7.25 6.227-10.833l.512-.768a8.538 8.538 0 0 1 11.609-3.284 8.538 8.538 0 0 1 3.284 11.609 6.997 6.997 0 0 1-.392.631l-.512.853c-2.132 3.327-3.924 6.568-5.63 9.724a53.307 53.307 0 0 0-5.971 24.565 54.816 54.816 0 0 0 4.435 21.665 58.198 58.198 0 0 0 12.624 18.083c3.395 3.267 3.489 8.666.222 12.061a8.518 8.518 0 0 1-6.193 2.61v-.085z"}),a.createElement("path",{d:"M362.514 452.294c-70.66 0-127.945-57.285-127.945-127.945a129.576 129.576 0 0 1 2.9-27.38 123.98 123.98 0 0 1 12.453-33.351 127.15 127.15 0 0 1 48.619-50.154c37.94-21.495 84.136-22.518 122.997-2.729 62.744 32.489 87.275 109.7 54.777 172.452-22.005 42.512-65.916 69.184-113.801 69.107zm0-238.83c-40.763.009-78.234 22.382-97.579 58.257a107.238 107.238 0 0 0-10.747 28.83 112.818 112.818 0 0 0-2.559 23.798c0 61.243 49.643 110.885 110.885 110.885s110.885-49.642 110.885-110.885-49.643-110.885-110.885-110.885z"}),a.createElement("path",{d:"M374.285 349.939h-23.542c-8.231.085-15.157-6.141-15.95-14.33l-6.397-79.496a15.26 15.26 0 0 1 4.009-11.515 16.312 16.312 0 0 1 11.942-5.203h36.251a16.31 16.31 0 0 1 11.941 5.203 15.27 15.27 0 0 1 4.094 11.515l-6.397 79.923c-.999 8.026-7.865 14.013-15.951 13.903zm-22.519-17.06h21.665l6.141-76.767h-34.119l6.313 76.767zM367.034 418.176h-9.041c-11.617-.043-21.026-9.451-21.068-21.068v-9.041c.043-11.617 9.451-21.026 21.068-21.068h8.956c11.651 0 21.102 9.417 21.153 21.068v8.956c.001 11.651-9.416 21.11-21.068 21.153zm-8.956-34.119a4.095 4.095 0 0 0-4.009 4.009v8.956a4.095 4.095 0 0 0 4.009 4.009h8.956a4.095 4.095 0 0 0 4.009-4.009v-8.956a4.095 4.095 0 0 0-4.009-4.009h-8.956z"}))}function HSe(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M462,226c-5.52,0-10,4.48-10,10s4.48,10,10,10c5.52,0,10-4.48,10-10S467.52,226,462,226z"}),a.createElement("path",{fill:"currentColor",d:"M50,226c-5.52,0-10,4.48-10,10s4.48,10,10,10s10-4.48,10-10S55.52,226,50,226z"}),a.createElement("path",{fill:"currentColor",d:`M502,126h-0.027C508.265,117.637,512,107.248,512,96c0-27.57-22.43-50-50-50s-50,22.43-50,50 + z`},child:[]}]})(s)}function Q0(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352 146.4c-34.4-48.6-67.5-78.5-90.8-96.6-3.1-2.4-7.3-2.4-10.4-.1-23 17.1-56.1 48.4-90.5 96.5-37.3 52-63 108.4-64.2 170.9 0 1.2-.1 2.5-.1 3.7 0 18.4 3.9 35.9 10.9 52.1 4.1 9.3 9.2 18.1 15.2 26.3 28.5 39 77.8 64.8 133.8 64.8 88.4 0 160.1-64.1 160.1-143.2 0-63.7-27-122.2-64-174.4zm-86 264.3h-.5c-9.9 0-12-14.1-2.6-17.1 45.1-14.2 69.6-38.5 86.4-80.8 3.5-8.9 16.7-6.5 16.8 3.1v1.4c-.1 51.6-44.9 93.4-100.1 93.4z"},child:[]}]})(s)}function $Se(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 76c48.1 0 93.3 18.7 127.3 52.7S436 207.9 436 256s-18.7 93.3-52.7 127.3S304.1 436 256 436c-48.1 0-93.3-18.7-127.3-52.7S76 304.1 76 256s18.7-93.3 52.7-127.3S207.9 76 256 76m0-28C141.1 48 48 141.1 48 256s93.1 208 208 208 208-93.1 208-208S370.9 48 256 48z"},child:[]},{tag:"path",attr:{d:"M363.5 148.5C334.8 119.8 296.6 104 256 104c-40.6 0-78.8 15.8-107.5 44.5C119.8 177.2 104 215.4 104 256s15.8 78.8 44.5 107.5C177.2 392.2 215.4 408 256 408c40.6 0 78.8-15.8 107.5-44.5C392.2 334.8 408 296.6 408 256s-15.8-78.8-44.5-107.5z"},child:[]}]})(s)}function PSe(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M430.1 347.9c-6.6-6.1-16.3-7.6-24.6-9-11.5-1.9-15.9-4-22.6-10-14.3-12.7-14.3-31.1 0-43.8l30.3-26.9c46.4-41 46.4-108.2 0-149.2-34.2-30.1-80.1-45-127.8-45-55.7 0-113.9 20.3-158.8 60.1-83.5 73.8-83.5 194.7 0 268.5 41.5 36.7 97.5 55 152.9 55.4h1.7c55.4 0 110-17.9 148.8-52.4 14.4-12.7 12-36.6.1-47.7zM120 216c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm40 126c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-161c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm72 219c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm24-208c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"},child:[]}]})(s)}function WSe(s){return te({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M8 12a4 4 0 0 0 4 4m0 -8a4 4 0 0 0 -4 4"},child:[]},{tag:"path",attr:{d:"M3 12h1"},child:[]},{tag:"path",attr:{d:"M12 3v1"},child:[]},{tag:"path",attr:{d:"M12 20v1"},child:[]},{tag:"path",attr:{d:"M5.6 5.6l.7 .7"},child:[]},{tag:"path",attr:{d:"M6.3 17.7l-.7 .7"},child:[]},{tag:"path",attr:{d:"M20 7l-3 5h4l-3 5"},child:[]}]})(s)}function JSe(s){return te({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M224,127.17a96.48,96.48,0,0,1-2.39,22.18A24,24,0,0,1,198.21,168H152a24,24,0,0,0-24,24,24,24,0,0,1-32,22.61C58.73,201.44,32,169.81,32,128a96,96,0,0,1,95-96C179.84,31.47,223.55,74.35,224,127.17Z",opacity:"0.2"},child:[]},{tag:"path",attr:{d:"M200.77,53.89A103.27,103.27,0,0,0,128,24h-1.07A104,104,0,0,0,24,128c0,43,26.58,79.06,69.36,94.17A32,32,0,0,0,136,192a16,16,0,0,1,16-16h46.21a31.81,31.81,0,0,0,31.2-24.88,104.43,104.43,0,0,0,2.59-24A103.28,103.28,0,0,0,200.77,53.89Zm13,93.71A15.89,15.89,0,0,1,198.21,160H152a32,32,0,0,0-32,32,16,16,0,0,1-21.31,15.07C62.49,194.3,40,164,40,128a88,88,0,0,1,87.09-88h.9a88.35,88.35,0,0,1,88,87.25A88.86,88.86,0,0,1,213.81,147.6ZM140,76a12,12,0,1,1-12-12A12,12,0,0,1,140,76ZM96,100A12,12,0,1,1,84,88,12,12,0,0,1,96,100Zm0,56a12,12,0,1,1-12-12A12,12,0,0,1,96,156Zm88-56a12,12,0,1,1-12-12A12,12,0,0,1,184,100Z"},child:[]}]})(s)}function BSe(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"M296,320H216a24,24,0,0,0,0,48h80a24,24,0,0,0,0-48Zm0,32H216a8,8,0,0,1,0-16h80a8,8,0,0,1,0,16Z"}),a.createElement("path",{d:"M68.071,123.492c22.578-13.918,52.2-25.229,85.674-32.71l-3.49-15.615c-35.688,7.977-66.163,19.653-90.58,34.705-17.914,11.043-32.041,23.643-41.99,37.451l12.98,9.354C39.376,144.588,51.961,133.423,68.071,123.492Z"}),a.createElement("path",{d:"M435.533,137.112C409.439,121.027,374,108.967,332.845,102.144,322.474,87,288.213,80,256,80s-66.474,7-76.845,22.144C138,108.967,102.561,121.027,76.467,137.112,47.376,155.045,32,176.792,32,200v96c0,29,24.155,55.7,68.016,75.193C141.813,389.77,197.209,400,256,400s114.187-10.23,155.984-28.807C455.845,351.7,480,325,480,296V200C480,176.792,464.624,155.045,435.533,137.112ZM177.64,151.23C185.676,168.192,221.98,176,256,176s70.324-7.808,78.36-24.77c21.862,4.212,41.832,10.19,58.13,17.44C422.343,181.941,432,195.509,432,200s-9.657,18.059-39.51,31.33C357.224,247.008,307.475,256,256,256s-101.224-8.992-136.49-24.67C89.657,218.059,80,204.491,80,200s9.657-18.059,39.512-31.331C135.808,161.42,155.778,155.442,177.64,151.23Zm14.36-19c15.6,8,40.35,11.773,64,11.773s48.4-3.775,64-11.773V144c0,.687-2.715,5.08-15.618,9.381C291.577,157.649,274.4,160,256,160s-35.577-2.351-48.382-6.619C194.715,149.08,192,144.687,192,144Zm15.618-29.608C220.423,98.351,237.605,96,256,96s35.577,2.351,48.382,6.619C317.285,106.92,320,111.313,320,112s-2.715,5.08-15.618,9.381C291.577,125.649,274.4,128,256,128s-35.577-2.351-48.382-6.619C194.715,117.08,192,112.687,192,112S194.715,106.92,207.618,102.619ZM176,118.937v16.319c-23.589,4.453-45.254,10.9-62.99,18.794C82.779,167.489,64,185.1,64,200s18.779,32.511,49.01,45.95C150.249,262.505,202.367,272,256,272s105.751-9.5,142.99-26.05C429.221,232.511,448,214.9,448,200s-18.779-32.511-49.008-45.95c-17.738-7.89-39.4-14.341-62.992-18.794V118.937C411.852,132.7,464,165.41,464,200c0,21.967-21.328,44.044-58.516,60.572C365.688,278.259,312.6,288,256,288s-109.688-9.741-149.484-27.428C69.328,244.044,48,221.967,48,200,48,165.41,100.148,132.7,176,118.937ZM464,296c0,21.967-21.327,44.044-58.514,60.572C365.689,374.259,312.6,384,256,384s-109.689-9.741-149.486-27.428C69.327,340.044,48,317.967,48,296V239.371c11.522,13.444,29.066,25.621,52.018,35.822C141.814,293.77,197.211,304,256,304s114.186-10.23,155.982-28.807c22.952-10.2,40.5-22.378,52.018-35.822Z"}),a.createElement("path",{d:"M418.482,385.814C374.684,405.28,316.979,416,256,416a488.01,488.01,0,0,1-78.705-6.23l-2.59,15.789A504.064,504.064,0,0,0,256,432c63.169,0,123.181-11.21,168.981-31.565q1.3-.576,2.572-1.16l-6.655-14.55Q419.7,385.274,418.482,385.814Z"}),a.createElement("path",{d:"M436.123,377.062l7.754,14c5.883-3.259,11.492-6.728,16.674-10.31l-9.1-13.161C446.7,370.871,441.546,374.059,436.123,377.062Z"}),a.createElement("rect",{x:"248",y:"192",width:"16",height:"16"}),a.createElement("rect",{x:"280",y:"192",width:"16",height:"16"}),a.createElement("rect",{x:"216",y:"192",width:"16",height:"16"})))}function mve(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M448 490.667h-32v-480C416 4.779 411.221 0 405.333 0H106.667C100.779 0 96 4.779 96 10.667v480H64c-5.888 0-10.667 4.779-10.667 10.667C53.333 507.221 58.112 512 64 512h384c5.888 0 10.667-4.779 10.667-10.667s-4.779-10.666-10.667-10.666zm-53.333 0H117.333V21.333h277.333v469.334z"}),a.createElement("path",{fill:"currentColor",d:"M341.333 277.333c17.643 0 32-14.357 32-32s-14.357-32-32-32-32 14.357-32 32 14.358 32 32 32zm0-42.666c5.888 0 10.667 4.779 10.667 10.667S347.221 256 341.333 256s-10.667-4.779-10.667-10.667 4.779-10.666 10.667-10.666z"}))}function RSe(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M298.667 298.667c17.643 0 32-14.357 32-32s-14.357-32-32-32-32 14.357-32 32c0 17.642 14.357 32 32 32zm0-42.667c5.867 0 10.667 4.779 10.667 10.667s-4.8 10.667-10.667 10.667S288 272.555 288 266.667 292.8 256 298.667 256z"}),a.createElement("path",{fill:"currentColor",d:"M448 490.667h-32v-480C416 4.779 411.221 0 405.333 0H106.667c-.597 0-1.131.256-1.707.341-.555.085-1.088.149-1.621.32-.939.32-1.749.789-2.56 1.344-.32.213-.704.277-1.003.533-.107.085-.149.213-.256.32-.768.704-1.365 1.579-1.899 2.496-.213.341-.512.619-.661.981-.597 1.345-.96 2.774-.96 4.332v480H64c-5.888 0-10.667 4.779-10.667 10.667C53.333 507.221 58.112 512 64 512h42.667c.576 0 1.173-.043 1.749-.149l256-42.667a10.672 10.672 0 0 0 8.917-10.517V53.333c0-5.227-3.776-9.664-8.917-10.517L235.541 21.333h159.125v480c0 5.888 4.779 10.667 10.667 10.667H448c5.888 0 10.667-4.779 10.667-10.667s-4.779-10.666-10.667-10.666zm-96-428.31v387.264l-234.667 39.125V23.253L352 62.357z"}))}function fve(s){return a.createElement("svg",{viewBox:"0 0 452.498 452.498",...s},a.createElement("path",{fill:"currentColor",d:"M301.317 295.155c-51.157-10.946-87.714-56.144-87.723-108.459a112.981 112.981 0 0 1 2.304-23.381 107.145 107.145 0 0 1 8.533-23.723 8.53 8.53 0 0 0-.427-8.533c-21.845-35.413-48.213-74.752-84.48-103.68a151.775 151.775 0 0 0-13.653-9.899 79.82 79.82 0 0 0-13.653-7.083 8.535 8.535 0 0 0-11.691 9.728l1.024 4.523c1.109 4.864 2.219 9.728 3.072 14.763a151.95 151.95 0 0 1 2.475 22.613v5.973a160.68 160.68 0 0 1-51.2 117.077 187.752 187.752 0 0 0-40.619 49.323 140.292 140.292 0 0 0-6.485 112.555C28.65 398.37 74.79 435.008 129.37 442.696h1.28a8.629 8.629 0 0 0 2.56-17.066 67.41 67.41 0 0 1-43.776-39.339 61.78 61.78 0 0 1 2.731-49.493 91.4 91.4 0 0 1 19.029-22.784 98.216 98.216 0 0 0 31.317-71.851v-3.669-5.12a86.72 86.72 0 0 1 17.067 19.029 80.214 80.214 0 0 1 12.885 42.667v.683a80.558 80.558 0 0 1-14.592 46.336 8.534 8.534 0 0 0 2.816 12.288 29.268 29.268 0 0 0 29.525 1.28 50.175 50.175 0 0 0 21.333-27.477 59.734 59.734 0 0 1 12.715 36.011c-.579 27.882-18.718 52.352-45.227 61.013a8.534 8.534 0 0 0 4.266 16.469c70.656-12.715 121.941-69.717 124.757-137.984a8.53 8.53 0 0 0-6.739-8.534zm-72.022 111.104a79.103 79.103 0 0 0 12.117-41.899 84.48 84.48 0 0 0-28.416-60.245 8.535 8.535 0 0 0-14.507 5.376c-.939 11.435-7.68 26.624-16.213 31.317a11.012 11.012 0 0 1-4.181 1.28 97.453 97.453 0 0 0 11.52-46.08v-1.024a97.279 97.279 0 0 0-15.616-52.053 105.562 105.562 0 0 0-39.509-35.925 8.535 8.535 0 0 0-12.117 10.155 78.449 78.449 0 0 1 3.755 22.016v2.731a81.32 81.32 0 0 1-26.027 59.733 105.478 105.478 0 0 0-22.443 27.477 80.723 80.723 0 0 0-8.533 35.499 79.108 79.108 0 0 0 13.397 43.947 131.416 131.416 0 0 1-57.941-67.669 123.223 123.223 0 0 1 5.717-98.901 170.67 170.67 0 0 1 37.205-44.629 177.58 177.58 0 0 0 56.405-129.451v-6.571a167.053 167.053 0 0 0-2.731-24.917V34.89a100.687 100.687 0 0 1 7.509 5.717c32.939 26.197 57.685 62.72 78.251 95.488a123.351 123.351 0 0 0-7.509 23.211 129.741 129.741 0 0 0-2.901 27.392c-.012 57.557 38.394 108.044 93.867 123.392a129.706 129.706 0 0 1-61.099 96.169z"}),a.createElement("path",{fill:"currentColor",d:"M324.527 58.697c-49.399.039-94.366 28.501-115.541 73.131a123.96 123.96 0 0 0-9.557 27.477 129.741 129.741 0 0 0-2.901 27.392 127.147 127.147 0 0 0 48.896 100.608 128.002 128.002 0 0 0 79.104 27.392 126.807 126.807 0 0 0 79.104-27.392 128.001 128.001 0 0 0 48.867-100.579c.015-70.693-57.279-128.013-127.972-128.029zm0 238.933a110.91 110.91 0 0 1-23.211-2.475c-51.157-10.946-87.714-56.144-87.723-108.459a112.938 112.938 0 0 1 2.219-23.723 107.639 107.639 0 0 1 8.533-23.808c18.353-38.703 57.347-63.382 100.181-63.403 61.267 0 110.933 49.667 110.933 110.933S385.794 297.63 324.527 297.63z"}),a.createElement("path",{fill:"currentColor",d:"M354.565 106.91a16.212 16.212 0 0 0-11.947-5.205h-36.267a16.216 16.216 0 0 0-11.947 5.205 15.19 15.19 0 0 0-4.011 11.52l6.4 79.616c.837 8.16 7.755 14.338 15.957 14.251h23.552c8.086.105 14.958-5.885 15.957-13.909l6.4-79.957a15.187 15.187 0 0 0-4.094-11.521zm-19.115 88.32h-21.675l-6.315-76.8h34.133l-6.143 76.8zM328.965 229.363h-8.96c-11.621.047-21.031 9.456-21.077 21.077v9.045c.047 11.621 9.456 21.031 21.077 21.077h9.045c11.654-.047 21.077-9.508 21.077-21.163v-8.96c-.047-11.653-9.508-21.076-21.162-21.076zm4.096 30.038a4.097 4.097 0 0 1-4.011 4.011h-8.96a4.097 4.097 0 0 1-4.011-4.011v-8.96a4.097 4.097 0 0 1 4.011-4.011h8.96a4.097 4.097 0 0 1 4.011 4.011v8.96z"}))}function b0(s){return a.createElement("svg",{viewBox:"0 0 512.006 512.006",...s},a.createElement("path",{d:"M502.379 211.249c0 74.656-60.52 135.176-135.176 135.176-6.469.01-12.919-.473-19.311-1.448-66.487-9.598-115.837-66.555-115.866-133.728-.019-67.212 49.349-124.227 115.866-133.825a142.128 142.128 0 0 1 19.311-1.352c74.656 0 135.176 60.521 135.176 135.177z",fill:"#c52828"}),a.createElement("path",{d:"M463.757 211.249c-.029 67.173-49.378 124.131-115.865 133.728-66.487-9.598-115.837-66.555-115.866-133.728-.019-67.212 49.349-124.227 115.866-133.825 66.516 9.598 115.875 66.613 115.865 133.825z",fill:"#f44335"}),a.createElement("g",{fill:"#fdd834"},a.createElement("path",{d:"M380.527 230.56h-26.649a8.208 8.208 0 0 1-8.4-7.242l-7.242-90.472c-.212-4.47 3.235-8.275 7.705-8.497.232-.01.463-.01.695 0h41.036a8.105 8.105 0 0 1 8.4 7.802c.01.232.01.463 0 .695l-7.242 90.472c-.501 4.181-4.093 7.319-8.303 7.242zM362.085 269.181h10.235c7.84 0 14.194 6.353 14.194 14.194v10.235c0 7.84-6.353 14.194-14.194 14.194h-10.235c-7.84 0-14.194-6.353-14.194-14.194v-10.235c.001-7.84 6.354-14.194 14.194-14.194z"})),a.createElement("path",{d:"M308.015 332.714a132.057 132.057 0 0 1-24.332-15.256 138.367 138.367 0 0 1-25.587-26.456 134.123 134.123 0 0 1-26.07-79.754 136.453 136.453 0 0 1 3.09-28.966 129.801 129.801 0 0 1 9.655-28.966c-24.428-39.201-50.691-78.113-85.547-108.334-2.607-2.221-5.214-4.442-7.917-6.566a161.051 161.051 0 0 0-14.387-10.621 80.965 80.965 0 0 0-13.807-7.145c1.641 7.338 3.476 14.773 4.731 22.208a180.355 180.355 0 0 1 2.993 26.939v7.145a192.012 192.012 0 0 1-60.829 139.521 202.647 202.647 0 0 0-43.836 52.719 149.063 149.063 0 0 0-6.566 120.017 152.006 152.006 0 0 0 22.208 40.167 164.926 164.926 0 0 0 106.21 61.891 86.874 86.874 0 0 1-44.801-32.249 51.315 51.315 0 0 1-3.669-5.6 77.46 77.46 0 0 1-6.469-13.325 79.464 79.464 0 0 1 3.766-63.726 111.914 111.914 0 0 1 23.463-28.387 101.983 101.983 0 0 0 32.442-74.25v-3.862a97.875 97.875 0 0 0-4.731-27.132 112.539 112.539 0 0 1 10.911 6.566 108.053 108.053 0 0 1 30.222 30.801 100.963 100.963 0 0 1 15.835 46.443v8.4a100.92 100.92 0 0 1-18.249 57.933c22.98 13.035 38.622-8.593 44.994-28.966a60.067 60.067 0 0 0 2.51-12.842 88.458 88.458 0 0 1 28.966 61.312v5.214c-2.704 33.678-25.346 62.451-57.45 72.995 73.353-11.789 128.717-72.889 133.245-147.053a131.977 131.977 0 0 1-30.994-10.815z",fill:"#f57c00"}),a.createElement("path",{d:"M263.117 417.489v-5.214a88.462 88.462 0 0 0-28.966-61.312 60.129 60.129 0 0 1-2.51 12.842c-5.986 20.47-22.014 42.098-44.994 28.966a100.923 100.923 0 0 0 18.249-57.933v-.966-7.338a100.971 100.971 0 0 0-15.835-46.443 108.027 108.027 0 0 0-30.222-30.801 108.949 108.949 0 0 0-39.877-35.532 97.838 97.838 0 0 1 4.731 27.132v3.862a101.988 101.988 0 0 1-32.442 74.25 111.924 111.924 0 0 0-23.366 28.387 79.491 79.491 0 0 0-3.573 63.726 83.948 83.948 0 0 0 35.436 42.291 51.315 51.315 0 0 0 3.669 5.6 86.886 86.886 0 0 0 44.415 32.249 164.927 164.927 0 0 1-106.21-61.892 152.082 152.082 0 0 1-22.014-40.167 149.055 149.055 0 0 1 6.564-120.015 202.714 202.714 0 0 1 44.029-53.202A192.012 192.012 0 0 0 131.03 76.458v-7.145a180.486 180.486 0 0 0-2.993-26.939c-1.255-7.435-3.09-14.869-4.731-22.208a80.965 80.965 0 0 1 13.807 7.145 159.446 159.446 0 0 1 14.773 10.718c2.704 2.124 5.311 4.345 7.917 6.566 34.856 30.222 61.119 69.133 85.547 108.334a129.75 129.75 0 0 0-9.655 28.966 136.634 136.634 0 0 0-3.669 29.353 134.116 134.116 0 0 0 26.07 79.754 138.396 138.396 0 0 0 25.587 26.456 132.164 132.164 0 0 0 24.332 15.256 152.203 152.203 0 0 1-44.898 84.775z",fill:"#ff9801"}),a.createElement("path",{d:"M147.831 500.912h-1.448c-61.756-8.7-113.963-50.15-136.432-108.334a158.725 158.725 0 0 1 7.338-127.355 212.528 212.528 0 0 1 45.96-55.809 181.787 181.787 0 0 0 57.933-132.473v-6.759a171.298 171.298 0 0 0-2.8-25.587c-.966-5.697-2.221-11.2-3.476-16.704l-1.159-5.117c-1.178-5.204 2.076-10.37 7.28-11.548a9.663 9.663 0 0 1 5.948.541 89.473 89.473 0 0 1 15.449 8.014 172.47 172.47 0 0 1 15.449 11.2c41.036 32.732 70.871 77.244 95.589 117.314a9.673 9.673 0 0 1 .483 9.655 121.056 121.056 0 0 0-9.655 26.842 128.158 128.158 0 0 0-2.607 26.456c.01 59.198 41.374 110.333 99.258 122.721a9.655 9.655 0 0 1 7.628 9.655c-3.186 77.244-61.216 141.742-141.163 156.129-5.253.927-10.254-2.588-11.181-7.84a9.65 9.65 0 0 1 6.353-10.795c29.99-9.8 50.517-37.492 51.174-69.037a67.618 67.618 0 0 0-14.387-40.746 56.78 56.78 0 0 1-24.139 31.091 33.122 33.122 0 0 1-33.408-1.448c-4.644-2.626-6.276-8.516-3.659-13.16.145-.261.299-.502.473-.743a91.187 91.187 0 0 0 16.511-52.429v-.772a90.743 90.743 0 0 0-14.58-48.277 98.107 98.107 0 0 0-19.311-21.532v9.945a111.13 111.13 0 0 1-35.436 81.299 103.445 103.445 0 0 0-21.532 25.78 69.873 69.873 0 0 0-3.09 56.002 76.304 76.304 0 0 0 49.533 44.512c5.33.801 9.009 5.774 8.207 11.104-.801 5.328-5.774 8.997-11.103 8.205zM137.113 39.478v1.738a188.136 188.136 0 0 1 3.09 28.194v7.435A200.926 200.926 0 0 1 76.38 223.318a192.998 192.998 0 0 0-42.098 50.498 139.414 139.414 0 0 0-6.469 111.907 148.682 148.682 0 0 0 65.561 76.568 89.522 89.522 0 0 1-15.159-49.726 91.25 91.25 0 0 1 9.655-40.167 119.46 119.46 0 0 1 25.394-31.091 92.026 92.026 0 0 0 29.449-67.588v-3.09a88.799 88.799 0 0 0-4.248-24.911 9.653 9.653 0 0 1 6.237-12.147 9.638 9.638 0 0 1 7.473.657 119.392 119.392 0 0 1 44.705 40.649 110.062 110.062 0 0 1 17.669 58.898v1.159a110.343 110.343 0 0 1-13.035 52.139 12.555 12.555 0 0 0 4.731-1.448c9.655-5.31 17.283-22.497 18.345-35.436.434-5.31 5.088-9.269 10.409-8.844a9.61 9.61 0 0 1 6.006 2.761 95.586 95.586 0 0 1 32.153 68.168 89.528 89.528 0 0 1-13.711 47.408 146.774 146.774 0 0 0 69.133-108.817c-62.77-17.37-106.22-74.492-106.21-139.618a146.655 146.655 0 0 1 3.283-30.994 139.876 139.876 0 0 1 8.497-26.263c-23.27-37.077-51.27-78.402-88.541-108.045a113.049 113.049 0 0 0-8.496-6.467z"}),a.createElement("path",{d:"M367.203 356.081a144.841 144.841 0 0 1-89.506-30.994 143.882 143.882 0 0 1-55.326-113.838 146.655 146.655 0 0 1 3.283-30.994 140.652 140.652 0 0 1 10.814-31.091c23.965-50.498 74.839-82.699 130.735-82.747 79.986.019 144.813 64.875 144.803 144.861a144.848 144.848 0 0 1-55.297 113.809 143.543 143.543 0 0 1-89.506 30.994zm0-270.353c-48.47.019-92.586 27.943-113.355 71.74a121.83 121.83 0 0 0-9.655 26.939 127.805 127.805 0 0 0-2.51 26.842c.01 59.198 41.374 110.333 99.258 122.721a125.763 125.763 0 0 0 26.263 2.8c69.326 0 125.521-56.195 125.521-125.521S436.519 85.728 367.203 85.728z"}),a.createElement("path",{d:"M380.527 240.215h-26.649c-9.279.097-17.109-6.894-18.056-16.125l-7.242-90.085a17.201 17.201 0 0 1 4.538-13.035 18.38 18.38 0 0 1 13.518-5.89h41.036a18.375 18.375 0 0 1 13.518 5.89 17.204 17.204 0 0 1 4.635 13.035l-7.242 90.472c-1.139 9.076-8.912 15.854-18.056 15.738zm-25.49-19.311h24.525l6.952-86.899h-38.622l7.145 86.899zM372.32 317.459h-10.235c-13.151-.048-23.801-10.698-23.849-23.849v-10.235c.048-13.151 10.698-23.801 23.849-23.849h10.138c13.189 0 23.888 10.66 23.946 23.849v10.138c0 13.18-10.669 23.888-23.849 23.946zm-10.138-38.622a4.635 4.635 0 0 0-4.538 4.538v10.138a4.635 4.635 0 0 0 4.538 4.538h10.138a4.635 4.635 0 0 0 4.538-4.538v-10.138a4.635 4.635 0 0 0-4.538-4.538h-10.138z"}))}function Ove(s){return a.createElement("svg",{viewBox:"0 0 512.224 512.224",...s},a.createElement("path",{fill:"currentColor",d:"M321.71 427.573c-42.239-16.782-69.968-57.632-69.973-103.083.012-7.976.87-15.928 2.56-23.723a107.066 107.066 0 0 1 10.752-28.757 8.534 8.534 0 0 0-2.304-10.923 98.766 98.766 0 0 1-9.216-7.851 92.567 92.567 0 0 1-20.053-28.843 89.437 89.437 0 0 1-7.339-35.413 87.726 87.726 0 0 1 10.069-40.107c2.219-4.096 4.437-8.107 6.997-12.117a8.536 8.536 0 0 0 0-9.387l-17.835-28.416-17.067-27.392a24.148 24.148 0 0 0-7.906-7.906c-11.358-6.992-26.233-3.452-33.225 7.906l-50.176 80.64c-11.264 18.091-22.869 36.779-34.901 54.784l-3.413 5.035A698.15 698.15 0 0 0 39 275.935a158.81 158.81 0 0 0-17.664 72.96 160.509 160.509 0 0 0 13.056 63.659 165.287 165.287 0 0 0 88.661 86.784 167.511 167.511 0 0 0 64.683 12.885 167.509 167.509 0 0 0 64.683-12.8 164.36 164.36 0 0 0 52.907-34.901 162.072 162.072 0 0 0 20.309-24.149 8.532 8.532 0 0 0-3.925-12.8zm-28.331 24.917a147.644 147.644 0 0 1-47.445 31.147 152.92 152.92 0 0 1-116.395 0 148.222 148.222 0 0 1-79.445-77.824 143.623 143.623 0 0 1-11.691-56.917 141.656 141.656 0 0 1 15.701-65.195 688.246 688.246 0 0 1 38.741-62.293l3.413-5.035c12.203-18.176 23.893-37.035 35.243-55.211l50.176-80.725a6.995 6.995 0 0 1 6.059-3.413 7.082 7.082 0 0 1 6.144 3.84l17.067 27.392 14.933 24.064c-1.621 2.56-3.243 5.461-4.864 8.533a104.964 104.964 0 0 0-11.776 48.299 106.408 106.408 0 0 0 8.533 42.155 109.907 109.907 0 0 0 23.808 34.133 136.402 136.402 0 0 0 5.205 4.693 124.263 124.263 0 0 0-9.216 26.965 129.873 129.873 0 0 0-2.901 27.392c.04 48.518 27.402 92.877 70.741 114.688a143.263 143.263 0 0 1-12.031 13.312z"}),a.createElement("path",{fill:"currentColor",d:"M100.014 442.592c-.058 0-.114-.008-.172-.009-.057.001-.113.009-.17.009h.342z"}),a.createElement("path",{fill:"currentColor",d:"M105.646 428a112.632 112.632 0 0 1-24.576-35.755 109.311 109.311 0 0 1-8.533-43.349 107.531 107.531 0 0 1 11.861-49.408 8.533 8.533 0 0 0-3.889-12.306 8.533 8.533 0 0 0-11.216 4.455 124.582 124.582 0 0 0-13.824 57.259 126.296 126.296 0 0 0 10.24 50.091 129.715 129.715 0 0 0 28.331 41.131 8.535 8.535 0 0 0 5.802 2.466 8.527 8.527 0 0 0 5.853-2.515 8.534 8.534 0 0 0-.049-12.069zM419.161 140.597a456.86 456.86 0 0 0-26.453-42.155l-1.707-2.475C381.443 82.4 372.91 68.149 364.377 54.41L335.79 8.757a18.69 18.69 0 0 0-5.896-5.896c-8.742-5.486-20.277-2.846-25.763 5.896L275.63 54.41c-8.533 14.08-17.408 27.989-26.453 41.899-6.997 10.155-14.08 20.565-20.395 31.232-2.56 4.096-5.12 8.448-7.68 13.312a104.964 104.964 0 0 0-11.776 48.299 106.408 106.408 0 0 0 8.533 42.155 109.918 109.918 0 0 0 23.808 34.133 115.197 115.197 0 0 0 10.752 9.216 8.533 8.533 0 0 0 5.12 1.707l1.877-.256a8.532 8.532 0 0 0 5.717-4.267 110.25 110.25 0 0 1 42.155-43.435 112.64 112.64 0 0 1 106.581-2.389 8.533 8.533 0 0 0 12.117-4.95 105.041 105.041 0 0 0-6.825-80.469zm-7.083 65.707a129.795 129.795 0 0 0-113.408 7.253 127.305 127.305 0 0 0-43.349 41.387l-1.792-1.707a92.567 92.567 0 0 1-20.053-28.843 89.437 89.437 0 0 1-7.339-35.413 87.734 87.734 0 0 1 9.813-40.363c2.219-3.84 4.523-8.192 7.168-12.373 6.144-10.411 13.141-20.651 20.053-30.72 9.387-13.824 18.432-28.16 26.965-42.069l28.501-45.397a1.536 1.536 0 0 1 1.365-.768 1.535 1.535 0 0 1 1.365.768l27.904 45.312c8.619 13.909 17.579 28.245 26.965 42.069l1.707 2.475a443.768 443.768 0 0 1 25.6 40.533 87.883 87.883 0 0 1 8.535 57.856z"}),a.createElement("path",{fill:"currentColor",d:"M277.337 228.746a58.176 58.176 0 0 1-12.629-18.091 54.768 54.768 0 0 1-4.437-21.675 53.425 53.425 0 0 1 5.973-24.576c1.707-3.157 3.499-6.4 5.632-9.728l.512-.853a8.533 8.533 0 0 0-2.894-12.242 8.533 8.533 0 0 0-11.613 3.282l-.512.768c-2.219 3.584-4.352 7.253-6.229 10.837a70.656 70.656 0 0 0-7.936 32.512 71.854 71.854 0 0 0 5.888 28.501 75.615 75.615 0 0 0 16.299 23.467 8.531 8.531 0 0 0 5.973 2.389v.085a8.533 8.533 0 0 0 5.973-14.676z"}),a.createElement("path",{fill:"currentColor",d:"M421.721 210.826a129.961 129.961 0 0 0-123.051 2.731 127.233 127.233 0 0 0-48.64 50.176 124.24 124.24 0 0 0-12.459 33.365 129.873 129.873 0 0 0-2.901 27.392c0 70.692 57.308 128 128 128 47.899.071 91.829-26.606 113.855-69.14 32.508-62.775 7.971-140.016-54.804-172.524zM362.67 435.424c-61.267 0-110.933-49.667-110.933-110.933.006-8.004.864-15.985 2.56-23.808a107.209 107.209 0 0 1 10.752-28.843c19.355-35.894 56.842-58.275 97.621-58.283 61.267 0 110.933 49.666 110.933 110.933S423.937 435.424 362.67 435.424z"}),a.createElement("path",{fill:"currentColor",d:"M392.707 244.704a16.296 16.296 0 0 0-11.947-5.205h-36.267a16.296 16.296 0 0 0-11.947 5.205 15.274 15.274 0 0 0-4.011 11.52l6.4 79.531c.796 8.194 7.725 14.419 15.957 14.336h23.552c8.086.105 14.958-5.885 15.957-13.909l6.4-79.957a15.26 15.26 0 0 0-4.094-11.521zm-19.114 88.32h-21.675l-6.315-76.8h34.133l-6.143 76.8zM367.107 367.157h-8.96c-11.621.047-21.031 9.456-21.077 21.077v9.045c.047 11.621 9.456 21.031 21.077 21.077h9.045c11.654-.047 21.077-9.508 21.077-21.163v-8.96c-.046-11.653-9.507-21.076-21.162-21.076zm4.096 30.037a4.097 4.097 0 0 1-4.011 4.011h-8.96a4.097 4.097 0 0 1-4.011-4.011v-8.96a4.097 4.097 0 0 1 4.011-4.011h8.96a4.097 4.097 0 0 1 4.011 4.011v8.96z"}))}function U0(s){return a.createElement("svg",{viewBox:"0 0 512.002 512.002",...s},a.createElement("path",{d:"M481.929 324.35c0 65.951-53.464 119.415-119.415 119.415a111.938 111.938 0 0 1-17.059-1.279c-58.735-8.478-102.33-58.795-102.356-118.135-.017-59.375 43.595-109.742 102.356-118.221a125.333 125.333 0 0 1 17.059-1.194c65.951-.001 119.415 53.462 119.415 119.414z",fill:"#c52828"}),a.createElement("path",{d:"M447.81 324.35c-.026 59.341-43.621 109.657-102.356 118.135-58.735-8.478-102.33-58.795-102.356-118.135-.017-59.375 43.595-109.742 102.356-118.221 58.77 8.487 102.373 58.846 102.356 118.221z",fill:"#f44335"}),a.createElement("g",{fill:"#fdd834"},a.createElement("path",{d:"M374.285 341.409h-23.542a7.251 7.251 0 0 1-7.421-6.397l-6.397-79.923a7.174 7.174 0 0 1 6.807-7.506c.205-.009.409-.009.614 0h36.251a7.16 7.16 0 0 1 7.421 6.892c.009.205.009.409 0 .614l-6.397 79.923a7.249 7.249 0 0 1-7.336 6.397zM357.993 375.527h9.041c6.926 0 12.539 5.612 12.539 12.539v9.041c0 6.926-5.612 12.539-12.539 12.539h-9.041c-6.926 0-12.539-5.612-12.539-12.539v-9.041c0-6.926 5.621-12.539 12.539-12.539z"})),a.createElement("path",{d:"M318.415 435.235a153.553 153.553 0 0 1-19.192 22.859 157.081 157.081 0 0 1-50.154 33.095 159.575 159.575 0 0 1-61.413 12.283 149.268 149.268 0 0 1-20.556-1.365 155.17 155.17 0 0 1-40.857-10.833 156.698 156.698 0 0 1-84.017-82.311 152.753 152.753 0 0 1-12.368-60.219 150.27 150.27 0 0 1 17.059-69.005 752.602 752.602 0 0 1 42.648-68.237c15.268-22.774 29.513-46.145 44.013-69.346l34.119-54.504 7.335-11.771c4.504-7.353 14.117-9.656 21.469-5.143a15.525 15.525 0 0 1 5.143 5.143l34.716 55.869c-2.644 4.18-5.032 8.53-7.335 12.709a96.424 96.424 0 0 0-11.515 44.439 98.026 98.026 0 0 0 8.018 38.725 100.313 100.313 0 0 0 21.921 31.56 106.83 106.83 0 0 0 9.98 8.53 115.344 115.344 0 0 0-11.6 31.048 120.546 120.546 0 0 0-2.729 25.589c.041 48.9 29.878 92.828 75.315 110.885z",fill:"#0377bc"}),a.createElement("path",{d:"M277.217 435.235a153.553 153.553 0 0 1-19.192 22.859 157.081 157.081 0 0 1-50.154 33.095 158.847 158.847 0 0 1-40.772 10.833 155.17 155.17 0 0 1-40.857-10.833 156.698 156.698 0 0 1-84.017-82.311 152.657 152.657 0 0 1-12.368-60.134 150.27 150.27 0 0 1 17.059-69.005 752.602 752.602 0 0 1 42.648-68.237c15.268-22.774 29.513-46.145 44.013-69.346l34.119-54.504c9.212 14.671 18.339 29.427 27.465 44.098-2.644 4.18-5.032 8.53-7.335 12.709a96.502 96.502 0 0 0-10.833 44.354 98.026 98.026 0 0 0 8.018 38.725 100.313 100.313 0 0 0 21.921 31.56 106.83 106.83 0 0 0 9.98 8.53 115.323 115.323 0 0 0-12.283 31.133 120.546 120.546 0 0 0-2.729 25.589c.043 48.9 29.88 92.828 75.317 110.885z",fill:"#02a9f4"}),a.createElement("path",{d:"M411.388 144.545a477.911 477.911 0 0 0-27.636-43.842c-9.894-14.586-19.192-29.598-28.489-44.525L328.395 13.53c-3.037-4.708-9.323-6.065-14.031-3.028a10.259 10.259 0 0 0-3.028 3.028l-12.794 20.215-14.074 22.433c-9.297 14.927-18.595 29.939-28.489 44.525-6.994 10.236-13.989 20.471-20.301 31.133-2.644 4.18-5.032 8.53-7.335 12.709a96.502 96.502 0 0 0-10.833 44.354 98.758 98.758 0 0 0 29.939 70.284 106.83 106.83 0 0 0 9.98 8.53 119.423 119.423 0 0 1 84.017-60.902 114.9 114.9 0 0 1 21.068-1.877c5.186.009 10.372.324 15.524.938a119.369 119.369 0 0 1 39.578 12.539 96.462 96.462 0 0 0-6.228-73.866z",fill:"#0377bc"}),a.createElement("path",{d:"M379.573 188.899a93.046 93.046 0 0 1-1.535 17.059 131.537 131.537 0 0 0-15.524-1.024 114.797 114.797 0 0 0-21.068 1.877 119.425 119.425 0 0 0-84.017 60.902 106.96 106.96 0 0 1-9.98-8.53c-31.099-29.743-38.878-76.417-19.106-114.638 2.303-4.35 4.691-8.53 7.335-12.709 6.312-10.662 13.306-20.898 20.301-31.133 9.894-14.586 19.192-29.598 28.489-44.525l14.074-22.433 14.074 22.433c9.297 14.927 18.595 29.939 28.489 44.525a477.911 477.911 0 0 1 27.636 43.842 96.401 96.401 0 0 1 10.832 44.354z",fill:"#02a9f4"}),a.createElement("path",{d:"M187.656 512.002a167.398 167.398 0 0 1-64.655-12.88 165.226 165.226 0 0 1-88.623-86.746 160.466 160.466 0 0 1-13.05-63.631 158.81 158.81 0 0 1 17.656-72.928 698.388 698.388 0 0 1 39.663-63.887l3.412-5.032c12.027-17.998 23.627-36.677 34.886-54.76L167.1 71.531c6.986-11.353 21.861-14.893 33.214-7.898a24.1 24.1 0 0 1 7.898 7.898l17.059 27.38 17.827 28.404a8.521 8.521 0 0 1 0 9.383c-2.559 4.009-4.777 8.018-6.994 12.112a87.69 87.69 0 0 0-10.065 40.089 89.456 89.456 0 0 0 7.335 35.398 92.438 92.438 0 0 0 20.045 28.83 99.608 99.608 0 0 0 9.212 7.847 8.534 8.534 0 0 1 2.303 10.918 106.955 106.955 0 0 0-10.747 28.745 112.483 112.483 0 0 0-2.559 23.712c.009 45.429 27.721 86.26 69.943 103.038 4.393 1.706 6.559 6.653 4.853 11.046a8.584 8.584 0 0 1-.93 1.749 162.407 162.407 0 0 1-20.301 24.139 164.29 164.29 0 0 1-52.884 34.886 167.489 167.489 0 0 1-64.653 12.795zm0-435.012a6.99 6.99 0 0 0-6.056 3.412l-50.154 80.69c-11.344 18.168-23.03 37.019-35.227 55.187l-3.412 5.032a687.543 687.543 0 0 0-38.725 62.266 141.613 141.613 0 0 0-15.695 65.166 143.56 143.56 0 0 0 11.686 56.893 148.16 148.16 0 0 0 79.411 77.79 152.855 152.855 0 0 0 116.344 0 147.616 147.616 0 0 0 47.425-31.133 143.446 143.446 0 0 0 12.027-13.306c-43.322-21.802-70.668-66.139-70.711-114.638a129.576 129.576 0 0 1 2.9-27.38 124.357 124.357 0 0 1 9.212-26.954 136.293 136.293 0 0 1-5.203-4.691 109.87 109.87 0 0 1-23.798-34.119 106.411 106.411 0 0 1-8.53-42.136c0-16.803 4.035-33.359 11.771-48.278 1.621-3.071 3.241-5.971 4.862-8.53l-14.927-24.054-17.059-27.38a7.087 7.087 0 0 0-6.141-3.837z"}),a.createElement("path",{d:"M99.971 442.4A8.521 8.521 0 0 1 94 439.926a129.631 129.631 0 0 1-28.318-41.113 126.28 126.28 0 0 1-10.236-50.069 124.503 124.503 0 0 1 13.818-57.234c1.868-4.325 6.883-6.32 11.208-4.452s6.32 6.883 4.452 11.208c-.162.375-.35.742-.563 1.092a107.494 107.494 0 0 0-11.856 49.387 109.211 109.211 0 0 0 8.53 43.331 112.626 112.626 0 0 0 24.565 35.739c3.344 3.318 3.369 8.717.051 12.061a8.549 8.549 0 0 1-6.022 2.525l.342-.001zM257.428 276.242a8.526 8.526 0 0 1-5.118-1.706 115.222 115.222 0 0 1-10.747-9.212 109.87 109.87 0 0 1-23.798-34.119 106.411 106.411 0 0 1-8.53-42.136c0-16.803 4.035-33.359 11.771-48.278 2.559-4.862 5.118-9.212 7.677-13.306 6.312-10.662 13.392-21.068 20.386-31.218 9.041-13.903 17.912-27.807 26.442-41.881L304 8.753c5.485-8.734 17.017-11.379 25.751-5.894a18.698 18.698 0 0 1 5.894 5.894l28.574 45.634c8.53 13.733 17.059 27.977 26.612 41.539l1.706 2.474a457.473 457.473 0 0 1 26.442 42.136 104.968 104.968 0 0 1 6.824 80.434c-1.433 4.487-6.235 6.969-10.722 5.536a8.282 8.282 0 0 1-1.39-.589 112.612 112.612 0 0 0-106.535 2.388 110.28 110.28 0 0 0-42.136 43.416 8.52 8.52 0 0 1-5.715 4.265l-1.877.256zm62.437-258.959a1.541 1.541 0 0 0-1.365.768l-28.489 45.378c-8.53 13.903-17.571 28.233-26.954 42.051-6.909 10.065-13.903 20.301-20.045 30.707-2.644 4.18-4.947 8.53-7.165 12.368a87.722 87.722 0 0 0-9.809 40.345 89.456 89.456 0 0 0 7.335 35.398 92.438 92.438 0 0 0 20.045 28.83l1.791 1.706a127.216 127.216 0 0 1 43.331-41.369 129.73 129.73 0 0 1 113.359-7.25 87.904 87.904 0 0 0-8.53-57.831 444.102 444.102 0 0 0-25.589-40.516l-1.706-2.474c-9.383-13.818-18.339-28.148-26.954-42.051L321.23 18.05a1.532 1.532 0 0 0-1.365-.767z"}),a.createElement("path",{d:"M271.246 243.233a8.519 8.519 0 0 1-5.971-2.388 75.502 75.502 0 0 1-16.292-23.456 71.923 71.923 0 0 1-5.885-28.489 70.537 70.537 0 0 1 7.933-32.498c1.877-3.582 4.009-7.25 6.227-10.833l.512-.768a8.538 8.538 0 0 1 11.609-3.284 8.538 8.538 0 0 1 3.284 11.609 6.997 6.997 0 0 1-.392.631l-.512.853c-2.132 3.327-3.924 6.568-5.63 9.724a53.307 53.307 0 0 0-5.971 24.565 54.816 54.816 0 0 0 4.435 21.665 58.198 58.198 0 0 0 12.624 18.083c3.395 3.267 3.489 8.666.222 12.061a8.518 8.518 0 0 1-6.193 2.61v-.085z"}),a.createElement("path",{d:"M362.514 452.294c-70.66 0-127.945-57.285-127.945-127.945a129.576 129.576 0 0 1 2.9-27.38 123.98 123.98 0 0 1 12.453-33.351 127.15 127.15 0 0 1 48.619-50.154c37.94-21.495 84.136-22.518 122.997-2.729 62.744 32.489 87.275 109.7 54.777 172.452-22.005 42.512-65.916 69.184-113.801 69.107zm0-238.83c-40.763.009-78.234 22.382-97.579 58.257a107.238 107.238 0 0 0-10.747 28.83 112.818 112.818 0 0 0-2.559 23.798c0 61.243 49.643 110.885 110.885 110.885s110.885-49.642 110.885-110.885-49.643-110.885-110.885-110.885z"}),a.createElement("path",{d:"M374.285 349.939h-23.542c-8.231.085-15.157-6.141-15.95-14.33l-6.397-79.496a15.26 15.26 0 0 1 4.009-11.515 16.312 16.312 0 0 1 11.942-5.203h36.251a16.31 16.31 0 0 1 11.941 5.203 15.27 15.27 0 0 1 4.094 11.515l-6.397 79.923c-.999 8.026-7.865 14.013-15.951 13.903zm-22.519-17.06h21.665l6.141-76.767h-34.119l6.313 76.767zM367.034 418.176h-9.041c-11.617-.043-21.026-9.451-21.068-21.068v-9.041c.043-11.617 9.451-21.026 21.068-21.068h8.956c11.651 0 21.102 9.417 21.153 21.068v8.956c.001 11.651-9.416 21.11-21.068 21.153zm-8.956-34.119a4.095 4.095 0 0 0-4.009 4.009v8.956a4.095 4.095 0 0 0 4.009 4.009h8.956a4.095 4.095 0 0 0 4.009-4.009v-8.956a4.095 4.095 0 0 0-4.009-4.009h-8.956z"}))}function FSe(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M462,226c-5.52,0-10,4.48-10,10s4.48,10,10,10c5.52,0,10-4.48,10-10S467.52,226,462,226z"}),a.createElement("path",{fill:"currentColor",d:"M50,226c-5.52,0-10,4.48-10,10s4.48,10,10,10s10-4.48,10-10S55.52,226,50,226z"}),a.createElement("path",{fill:"currentColor",d:`M502,126h-0.027C508.265,117.637,512,107.248,512,96c0-27.57-22.43-50-50-50s-50,22.43-50,50 c0,11.248,3.735,21.637,10.027,30H422c-5.522,0-10,4.478-10,10v50.03c-7.399,0.025-17.158,0.065-23,0.113V166.63 c0-5.522-4.478-10-10-10c-5.522,0-10,4.478-10,10v12.435c-0.931-0.964-1.899-2.045-2.923-3.258 c-10.745-12.754-24.515-23.761-40.077-32.106V121.83c0-5.522-4.478-10-10-10c-5.522,0-10,4.478-10,10v12.983 @@ -555,7 +555,7 @@ body { c-14.663-3.788-27.83-11.575-36.517-21.887c-2.039-2.417-4.216-4.742-6.483-6.965v-27.672c9.465,6.201,17.88,13.567,24.789,21.767 c4.64,5.496,10.324,11.234,18.211,14.57V223.458z M412,425h-23v-19h23V425z M412,386h-23V246h23V386z M412,226h-23v-19.856 c5.683-0.048,15.526-0.088,23-0.113V226z M492,446h-60V146h20v50c0,5.522,4.478,10,10,10c5.522,0,10-4.478,10-10v-50h20V446z - M462,126c-16.542,0-30-13.458-30-30s13.458-30,30-30s30,13.458,30,30S478.542,126,462,126z`}))}function xve(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M391,362h77.417L440.989,58.467C438.075,26.229,409.37,0,377,0H135c-32.37,0-61.075,26.229-63.989,58.467L43.583,362H121v30 H91v120h330V392h-30V362z M135,30h242c16.963,0,32.584,14.273,34.11,31.167L416.427,120H95.573l5.316-58.833 C102.416,44.273,118.037,30,135,30z M92.862,150h326.275l16.446,182H76.416L92.862,150z M151,362h210v30H151V362z M241,422v60h-45 v-60H241z M271,422h45v60h-45V422z M121,422h45v60h-45V422z M391,482h-45v-60h45V482z"}))}function Sve(s){return a.createElement("svg",{width:170,height:170,viewBox:"-20 -20 190 190",...s},a.createElement("path",{className:"path stOff",d:"M0 109v36.3c0 5.3 3.7 9.7 8.3 9.7h50.1v-23h37v23H153V84H0l28.4-29V13h18.1v24l30-37 66.2 69",fill:"none"}))}function VSe(s){return a.createElement("svg",{viewBox:"0 0 511.448 511.448",...s},a.createElement("path",{d:"M344.556 112.216C318.38 78.84 291.34 44.344 269.516 7.32c-5.76-9.76-21.824-9.76-27.552 0-21.856 37.024-48.896 71.52-75.072 104.896-53.056 67.68-103.168 131.616-103.168 207.232 0 105.888 86.112 192 192 192s192-86.112 192-192c0-75.616-50.112-139.552-103.168-207.232z",fill:"#2196f3"}),a.createElement("g",{fill:"#fafafa"},a.createElement("path",{d:"M207.724 287.448c-26.464 0-48-21.536-48-48s21.536-48 48-48 48 21.536 48 48-21.536 48-48 48zm0-64c-8.832 0-16 7.168-16 16s7.168 16 16 16 16-7.168 16-16-7.168-16-16-16zM303.724 447.448c-26.464 0-48-21.536-48-48s21.536-48 48-48 48 21.536 48 48-21.536 48-48 48zm0-64c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zM175.724 415.448a16.07 16.07 0 0 1-11.328-4.672c-6.24-6.24-6.24-16.384 0-22.624l160-160c6.24-6.24 16.384-6.24 22.624 0s6.24 16.384 0 22.624l-160 160a15.943 15.943 0 0 1-11.296 4.672z"})))}function kve(s){return a.createElement("svg",{viewBox:"-20 -20 190 190",...s},a.createElement("defs",null,a.createElement("filter",{id:"glow",x:"-5000%",y:"-5000%",width:"10000%",height:"10000%"},a.createElement("feFlood",{result:"flood",floodColor:"#70C5FF",floodOpacity:"1"}),a.createElement("feComposite",{in:"flood",result:"mask",in2:"SourceGraphic",operator:"in"}),a.createElement("feMorphology",{in:"mask",result:"dilated",operator:"dilate",radius:"2"}),a.createElement("feGaussianBlur",{in:"dilated",result:"blurred",stdDeviation:"5"}),a.createElement("feMerge",null,a.createElement("feMergeNode",{in:"blurred"}),a.createElement("feMergeNode",{in:"SourceGraphic"})))),a.createElement("path",{style:{stroke:"currentColor",fill:"none",strokeWidth:12,strokeLinejoin:"round",strokeMiterlimit:10},filter:s.isOn?"url(#glow)":"",className:"path",d:"M0,109v36.3c0,5.3,3.7,9.7,8.3,9.7h50.1v-23h37v23H153V84H0l28.4-29V13h18.1v24L76.5,0l66.2,69"}))}function W0(s){return a.createElement("svg",{viewBox:"0 0 508.16 508.16",...s},a.createElement("path",{d:"M504.18 13.67a3.924 3.924 0 0 0-.42.02H4a4 4 0 0 0-4 4v47.28a4 4 0 0 0 4 4h19.72l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.16a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h479.8a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.64-42.08h9.84a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h19.72a4 4 0 0 0 4-4V17.69a4 4 0 0 0-3.98-4.02zM99.08 486.49H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm26.8 378.24h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm.16-47.28h-18.96V68.97h18.96v39.28zm247.84 378.24h-240v-39.28h240v39.28zm-240-47.28v-39.28h239.68v39.28H133.88zm240-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm-240-47.28V68.97h239.84v39.28H133.88zm266.64 378.24h-18.64l-.32-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm.32-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm-18.96-47.28V68.97h18.8v39.28h-18.8zm63.56 8v39.28h-36.92v-39.28h36.92zm-36.76-8V68.97h36.92v39.28h-36.92zm36.76 55.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.76l-.16-39.28h36.92zm42.68 181.12h-79.44v-39.28h66.96l12.48 39.28zm0-47.28h-79.44v-39.28h66.96l12.48 39.28zm0-47.28h-79.44v-39.28h36.92v17.44a4 4 0 0 0 8 0v-17.44h22.04l12.48 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6V68.97h22.04l12.56 39.28zm11.56-47.28H8V21.69h491.76l-.08 39.28z",fill:"currentColor"}),a.createElement("path",{d:"M454.32 37.33h-13.76a4 4 0 0 0 0 8h13.76a4 4 0 0 0 0-8zM414.84 37.33h-96a4 4 0 0 0 0 8h96a4 4 0 0 0 0-8z",fill:"currentColor"}))}function vve(s){return a.createElement("svg",{viewBox:"0 0 230 230",...s},a.createElement("ellipse",{fill:"#2979ff",stroke:"#2979ff",strokeWidth:"1.5",cx:"112.9",cy:"114",rx:"112",ry:"112"}),a.createElement("ellipse",{fill:"#40c4ff",strokeWidth:"1.5",cx:"112.900006",cy:"113.999995",rx:"73.684216",ry:"73.684216",stroke:"#40c4ff"}),a.createElement("ellipse",{fill:"#ffffff",strokeWidth:"1.5",cx:"112.900003",cy:"114",rx:"33.578948",ry:"33.578948",stroke:"#ffffff"}))}function Yve(s){return a.createElement("svg",{viewBox:"0 0 24.986 24.986",...s},a.createElement("g",{fill:"currentColor"},a.createElement("path",{fill:"currentColor",d:"M17.548 17.961l-.771-.769s-1.225 1.305-1.304 1.305c-.081 0-1.308-1.305-1.308-1.305l-.771.769s1.306 1.198 1.306 1.308c0 .106-1.306 1.308-1.306 1.308l.771.767s1.217-1.305 1.308-1.305c.089 0 1.304 1.305 1.304 1.305l.771-.767s-1.307-1.218-1.307-1.308c.001-.092 1.307-1.308 1.307-1.308z"}),a.createElement("path",{fill:"currentColor",d:"M15.472 14.435a4.832 4.832 0 0 0 0 9.661 4.83 4.83 0 0 0 0-9.661zm0 8.913a4.083 4.083 0 0 1-4.081-4.082 4.079 4.079 0 0 1 4.081-4.081 4.083 4.083 0 0 1 0 8.163z"}),a.createElement("circle",{fill:"currentColor",cx:10.06,cy:2.207,r:2.207}),a.createElement("path",{fill:"currentColor",d:"M10.2 20.476v3.26l.009.009a1.25 1.25 0 0 0 1.251 1.238c.643 0 1.167-.487 1.236-1.11-.083-.052-.173-.093-.253-.146a5.425 5.425 0 0 1-2.243-3.251z"}),a.createElement("path",{fill:"currentColor",d:"M12.455 14.724c.08-.057.168-.097.253-.146l-.002-6.687h.606V12.945c0 .516.417.932.932.932a.931.931 0 0 0 .933-.932V7.51c-.206-2.42-3.013-2.385-3.013-2.385H7.74c-3.168.06-3.055 2.385-3.055 2.385l-.001 5.428h.003c-.002.014-.002.025-.002.04a.932.932 0 1 0 1.861 0l-.001-.04h.001V7.914h.584l-.007 15.811c0 .693.562 1.261 1.257 1.261s1.257-.565 1.257-1.261V13.523h.562v4.457a5.414 5.414 0 0 1 2.256-3.256z"})))}function ZSe(s){return a.createElement("svg",{viewBox:"0 0 63.907 63.907",fill:"currentColor",...s},a.createElement("circle",{fill:"currentColor",cx:30.515,cy:6.136,r:6.136}),a.createElement("path",{fill:"currentColor",d:"M47.399 27.455C42.346 24.53 38.2 20.579 34.71 15.931c-2.193-3.084-7.991-2.923-10.347-.097-3.584 3.487-6.625 7.081-9.037 10.677a3.209 3.209 0 0 0 5.329 3.573 54.205 54.205 0 0 1 3.59-4.734c-.051 3.333.116 9.347.2 12.05.028.9-.177 1.78-.595 2.579-3.308 6.317-5.424 12.294-7.572 19.606a3.37 3.37 0 1 0 6.465 1.901c1.982-6.742 3.897-12.201 6.884-17.981.152.006.304.006.458-.001 1.907 5.69 3.815 11.383 5.725 17.073 1.387 4.147 7.822 1.993 6.431-2.155-2.087-6.221-4.171-12.439-6.251-18.659-.121-.357-.414-1.755-.455-2.211-.344-3.832-.469-7.652-.432-11.477a51.027 51.027 0 0 0 9.782 7.328c3.597 2.088 6.063-3.891 2.514-5.948z"}))}function XSe(s){return a.createElement("svg",{viewBox:"0 0 285 285",...s},a.createElement("g",null,a.createElement("path",{fill:"currentColor",d:`M88.4,87.996c2.525-2.146,2.832-5.933,0.687-8.458C82.801,72.144,79.34,62.719,79.34,53c0-22.607,18.393-41,41-41 + M462,126c-16.542,0-30-13.458-30-30s13.458-30,30-30s30,13.458,30,30S478.542,126,462,126z`}))}function Eve(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M391,362h77.417L440.989,58.467C438.075,26.229,409.37,0,377,0H135c-32.37,0-61.075,26.229-63.989,58.467L43.583,362H121v30 H91v120h330V392h-30V362z M135,30h242c16.963,0,32.584,14.273,34.11,31.167L416.427,120H95.573l5.316-58.833 C102.416,44.273,118.037,30,135,30z M92.862,150h326.275l16.446,182H76.416L92.862,150z M151,362h210v30H151V362z M241,422v60h-45 v-60H241z M271,422h45v60h-45V422z M121,422h45v60h-45V422z M391,482h-45v-60h45V482z"}))}function _ve(s){return a.createElement("svg",{width:170,height:170,viewBox:"-20 -20 190 190",...s},a.createElement("path",{className:"path stOff",d:"M0 109v36.3c0 5.3 3.7 9.7 8.3 9.7h50.1v-23h37v23H153V84H0l28.4-29V13h18.1v24l30-37 66.2 69",fill:"none"}))}function GSe(s){return a.createElement("svg",{viewBox:"0 0 511.448 511.448",...s},a.createElement("path",{d:"M344.556 112.216C318.38 78.84 291.34 44.344 269.516 7.32c-5.76-9.76-21.824-9.76-27.552 0-21.856 37.024-48.896 71.52-75.072 104.896-53.056 67.68-103.168 131.616-103.168 207.232 0 105.888 86.112 192 192 192s192-86.112 192-192c0-75.616-50.112-139.552-103.168-207.232z",fill:"#2196f3"}),a.createElement("g",{fill:"#fafafa"},a.createElement("path",{d:"M207.724 287.448c-26.464 0-48-21.536-48-48s21.536-48 48-48 48 21.536 48 48-21.536 48-48 48zm0-64c-8.832 0-16 7.168-16 16s7.168 16 16 16 16-7.168 16-16-7.168-16-16-16zM303.724 447.448c-26.464 0-48-21.536-48-48s21.536-48 48-48 48 21.536 48 48-21.536 48-48 48zm0-64c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zM175.724 415.448a16.07 16.07 0 0 1-11.328-4.672c-6.24-6.24-6.24-16.384 0-22.624l160-160c6.24-6.24 16.384-6.24 22.624 0s6.24 16.384 0 22.624l-160 160a15.943 15.943 0 0 1-11.296 4.672z"})))}function xve(s){return a.createElement("svg",{viewBox:"-20 -20 190 190",...s},a.createElement("defs",null,a.createElement("filter",{id:"glow",x:"-5000%",y:"-5000%",width:"10000%",height:"10000%"},a.createElement("feFlood",{result:"flood",floodColor:"#70C5FF",floodOpacity:"1"}),a.createElement("feComposite",{in:"flood",result:"mask",in2:"SourceGraphic",operator:"in"}),a.createElement("feMorphology",{in:"mask",result:"dilated",operator:"dilate",radius:"2"}),a.createElement("feGaussianBlur",{in:"dilated",result:"blurred",stdDeviation:"5"}),a.createElement("feMerge",null,a.createElement("feMergeNode",{in:"blurred"}),a.createElement("feMergeNode",{in:"SourceGraphic"})))),a.createElement("path",{style:{stroke:"currentColor",fill:"none",strokeWidth:12,strokeLinejoin:"round",strokeMiterlimit:10},filter:s.isOn?"url(#glow)":"",className:"path",d:"M0,109v36.3c0,5.3,3.7,9.7,8.3,9.7h50.1v-23h37v23H153V84H0l28.4-29V13h18.1v24L76.5,0l66.2,69"}))}function $0(s){return a.createElement("svg",{viewBox:"0 0 508.16 508.16",...s},a.createElement("path",{d:"M504.18 13.67a3.924 3.924 0 0 0-.42.02H4a4 4 0 0 0-4 4v47.28a4 4 0 0 0 4 4h19.72l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.04a4 4 0 0 0 3.8 5.24h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.08a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42.16a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h9.64l-13.44 42a4 4 0 0 0 .56 3.56 4 4 0 0 0 3.24 1.64h479.8a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.44-42.08h9.64a4 4 0 0 0 3.24-1.64 4 4 0 0 0 .56-3.56l-13.64-42.08h9.84a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h9.44a4 4 0 0 0 4-5.24l-13.44-42.04h19.72a4 4 0 0 0 4-4V17.69a4 4 0 0 0-3.98-4.02zM99.08 486.49H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm0-47.28H19.56l12.56-39.28h66.96v39.28zm26.8 378.24h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm0-47.28h-18.8v-39.28h18.8v39.28zm.16-47.28h-18.96V68.97h18.96v39.28zm247.84 378.24h-240v-39.28h240v39.28zm-240-47.28v-39.28h239.68v39.28H133.88zm240-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm0-47.28h-240v-39.28h240v39.28zm-240-47.28V68.97h239.84v39.28H133.88zm266.64 378.24h-18.64l-.32-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm.32-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm0-47.28h-18.96v-39.28h18.96v39.28zm-18.96-47.28V68.97h18.8v39.28h-18.8zm63.56 8v39.28h-36.92v-39.28h36.92zm-36.76-8V68.97h36.92v39.28h-36.92zm36.76 55.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.92v-39.28h36.92zm0 47.28v39.28h-36.76l-.16-39.28h36.92zm42.68 181.12h-79.44v-39.28h66.96l12.48 39.28zm0-47.28h-79.44v-39.28h66.96l12.48 39.28zm0-47.28h-79.44v-39.28h36.92v17.44a4 4 0 0 0 8 0v-17.44h22.04l12.48 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6v-39.28h22.04l12.56 39.28zm0-47.28h-34.6V68.97h22.04l12.56 39.28zm11.56-47.28H8V21.69h491.76l-.08 39.28z",fill:"currentColor"}),a.createElement("path",{d:"M454.32 37.33h-13.76a4 4 0 0 0 0 8h13.76a4 4 0 0 0 0-8zM414.84 37.33h-96a4 4 0 0 0 0 8h96a4 4 0 0 0 0-8z",fill:"currentColor"}))}function Sve(s){return a.createElement("svg",{viewBox:"0 0 230 230",...s},a.createElement("ellipse",{fill:"#2979ff",stroke:"#2979ff",strokeWidth:"1.5",cx:"112.9",cy:"114",rx:"112",ry:"112"}),a.createElement("ellipse",{fill:"#40c4ff",strokeWidth:"1.5",cx:"112.900006",cy:"113.999995",rx:"73.684216",ry:"73.684216",stroke:"#40c4ff"}),a.createElement("ellipse",{fill:"#ffffff",strokeWidth:"1.5",cx:"112.900003",cy:"114",rx:"33.578948",ry:"33.578948",stroke:"#ffffff"}))}function kve(s){return a.createElement("svg",{viewBox:"0 0 24.986 24.986",...s},a.createElement("g",{fill:"currentColor"},a.createElement("path",{fill:"currentColor",d:"M17.548 17.961l-.771-.769s-1.225 1.305-1.304 1.305c-.081 0-1.308-1.305-1.308-1.305l-.771.769s1.306 1.198 1.306 1.308c0 .106-1.306 1.308-1.306 1.308l.771.767s1.217-1.305 1.308-1.305c.089 0 1.304 1.305 1.304 1.305l.771-.767s-1.307-1.218-1.307-1.308c.001-.092 1.307-1.308 1.307-1.308z"}),a.createElement("path",{fill:"currentColor",d:"M15.472 14.435a4.832 4.832 0 0 0 0 9.661 4.83 4.83 0 0 0 0-9.661zm0 8.913a4.083 4.083 0 0 1-4.081-4.082 4.079 4.079 0 0 1 4.081-4.081 4.083 4.083 0 0 1 0 8.163z"}),a.createElement("circle",{fill:"currentColor",cx:10.06,cy:2.207,r:2.207}),a.createElement("path",{fill:"currentColor",d:"M10.2 20.476v3.26l.009.009a1.25 1.25 0 0 0 1.251 1.238c.643 0 1.167-.487 1.236-1.11-.083-.052-.173-.093-.253-.146a5.425 5.425 0 0 1-2.243-3.251z"}),a.createElement("path",{fill:"currentColor",d:"M12.455 14.724c.08-.057.168-.097.253-.146l-.002-6.687h.606V12.945c0 .516.417.932.932.932a.931.931 0 0 0 .933-.932V7.51c-.206-2.42-3.013-2.385-3.013-2.385H7.74c-3.168.06-3.055 2.385-3.055 2.385l-.001 5.428h.003c-.002.014-.002.025-.002.04a.932.932 0 1 0 1.861 0l-.001-.04h.001V7.914h.584l-.007 15.811c0 .693.562 1.261 1.257 1.261s1.257-.565 1.257-1.261V13.523h.562v4.457a5.414 5.414 0 0 1 2.256-3.256z"})))}function HSe(s){return a.createElement("svg",{viewBox:"0 0 63.907 63.907",fill:"currentColor",...s},a.createElement("circle",{fill:"currentColor",cx:30.515,cy:6.136,r:6.136}),a.createElement("path",{fill:"currentColor",d:"M47.399 27.455C42.346 24.53 38.2 20.579 34.71 15.931c-2.193-3.084-7.991-2.923-10.347-.097-3.584 3.487-6.625 7.081-9.037 10.677a3.209 3.209 0 0 0 5.329 3.573 54.205 54.205 0 0 1 3.59-4.734c-.051 3.333.116 9.347.2 12.05.028.9-.177 1.78-.595 2.579-3.308 6.317-5.424 12.294-7.572 19.606a3.37 3.37 0 1 0 6.465 1.901c1.982-6.742 3.897-12.201 6.884-17.981.152.006.304.006.458-.001 1.907 5.69 3.815 11.383 5.725 17.073 1.387 4.147 7.822 1.993 6.431-2.155-2.087-6.221-4.171-12.439-6.251-18.659-.121-.357-.414-1.755-.455-2.211-.344-3.832-.469-7.652-.432-11.477a51.027 51.027 0 0 0 9.782 7.328c3.597 2.088 6.063-3.891 2.514-5.948z"}))}function VSe(s){return a.createElement("svg",{viewBox:"0 0 285 285",...s},a.createElement("g",null,a.createElement("path",{fill:"currentColor",d:`M88.4,87.996c2.525-2.146,2.832-5.933,0.687-8.458C82.801,72.144,79.34,62.719,79.34,53c0-22.607,18.393-41,41-41 c22.607,0,41,18.393,41,41c0,9.729-3.467,19.161-9.761,26.557c-2.148,2.523-1.843,6.311,0.681,8.458 c1.129,0.961,2.511,1.431,3.886,1.431c1.698,0,3.386-0.717,4.572-2.111C168.858,77.77,173.34,65.576,173.34,53 c0-29.225-23.775-53-53-53c-29.225,0-53,23.775-53,53c0,12.563,4.476,24.748,12.602,34.31C82.089,89.835,85.873,90.141,88.4,87.996 @@ -568,7 +568,7 @@ body { c-8.276,0-16.5,5.517-16.5,16.552v84.912c0,4.989-3.811,8.074-7.918,8.074c-2.495,0-4.899-1.138-6.552-3.678l-7.937-12.281 c-3.508-5.788-8.576-8.188-13.625-8.189c-11.412-0.001-22.574,12.258-14.644,25.344l62.491,119.692 c0.408,0.782,1.225,1.373,2.108,1.373h87.757c1.253,0,2.289-1.075,2.365-2.325l2.196-35.816c0.025-0.413,0.162-0.84,0.39-1.186 - C231.591,212.679,237.828,191.414,234.21,169.856z`})))}function Qve(s){return a.createElement("svg",{viewBox:"0 0 384.754 384.754",...s},a.createElement("path",{fill:"currentColor",d:`M214.86,374.508c0,4.971-4.029,9-9,9h-65.01c-4.971,0-9.223-3.57-9.223-8.541V288.87c0-4.971,4.252-9.361,9.223-9.361 + C231.591,212.679,237.828,191.414,234.21,169.856z`})))}function vve(s){return a.createElement("svg",{viewBox:"0 0 384.754 384.754",...s},a.createElement("path",{fill:"currentColor",d:`M214.86,374.508c0,4.971-4.029,9-9,9h-65.01c-4.971,0-9.223-3.57-9.223-8.541V288.87c0-4.971,4.252-9.361,9.223-9.361 h99.585c4.971,0,9,4.029,9,9s-4.029,9-9,9h-90.808v68h56.232C210.83,365.508,214.86,369.538,214.86,374.508z M136.65,115.508h10 c4.971,0,9-4.029,9-9s-4.029-9-9-9h-10c-4.971,0-9,4.029-9,9S131.679,115.508,136.65,115.508z M180.947,115.508h10 c4.97,0,9-4.029,9-9s-4.029-9-9-9h-10c-4.971,0-9,4.029-9,9S175.976,115.508,180.947,115.508z M152.056,142.508c0,4.971,4.029,9,9,9 @@ -602,7 +602,7 @@ body { c1.23,0.573,2.524,0.845,3.798,0.845c3.39,0,6.636-1.924,8.163-5.198l36.082-77.146l13.012-0.902c0.002,0,0.004,0,0.006,0 l18.021-1.813c0.358-0.024,0.714-0.188,1.064-0.256c1.292-0.243,2.477-0.817,3.501-1.539c1.014-0.711,1.891-1.669,2.555-2.786 c0.185-0.309,0.351-0.644,0.497-0.975l7.644-16.398c0.001-0.002,0.002-0.008,0.003-0.009l7.644-16.396 - c0.159-0.326,0.299-0.66,0.417-1.001C344.392,259.102,344.538,257.825,344.428,256.584z`}))}function $n(s){return a.createElement("svg",{viewBox:"1 -10 511.99999 511",...s},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"M 405.5 150 C 405.5 232.566406 338.566406 299.5 256 299.5 C 173.433594 299.5 106.5 232.566406 106.5 150 C 106.5 67.433594 173.433594 0.5 256 0.5 C 338.566406 0.5 405.5 67.433594 405.5 150 Z M 405.5 150 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(25.882353%,75.294118%,88.627451%)",fillOpacity:1}}),a.createElement("path",{d:"M 512 342.921875 C 512 425.488281 445.066406 492.421875 362.5 492.421875 C 279.933594 492.421875 213 425.488281 213 342.921875 C 213 260.355469 279.933594 193.421875 362.5 193.421875 C 445.066406 193.421875 512 260.355469 512 342.921875 Z M 512 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(100%,81.568627%,38.039216%)",fillOpacity:1}}),a.createElement("path",{d:"M 220.746094 295.308594 C 232.050781 298.039062 243.855469 299.5 256 299.5 C 321.917969 299.5 377.871094 256.835938 397.753906 197.613281 C 386.449219 194.878906 374.644531 193.421875 362.5 193.421875 C 296.582031 193.421875 240.628906 236.085938 220.746094 295.308594 Z M 220.746094 295.308594 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(28.627451%,74.117647%,56.470588%)",fillOpacity:1}}),a.createElement("path",{d:"M 299 342.921875 C 299 425.488281 232.066406 492.421875 149.5 492.421875 C 66.933594 492.421875 0 425.488281 0 342.921875 C 0 260.355469 66.933594 193.421875 149.5 193.421875 C 232.066406 193.421875 299 260.355469 299 342.921875 Z M 299 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(98.039216%,43.921569%,69.803922%)",fillOpacity:1}}),a.createElement("path",{d:"M 114.246094 197.613281 C 134.128906 256.835938 190.082031 299.5 256 299.5 C 268.144531 299.5 279.949219 298.039062 291.253906 295.308594 C 271.371094 236.085938 215.417969 193.421875 149.5 193.421875 C 137.355469 193.421875 125.550781 194.878906 114.246094 197.613281 Z M 114.246094 197.613281 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(68.627451%,48.235294%,77.647059%)",fillOpacity:1}}),a.createElement("path",{d:"M 213 342.921875 C 213 383.800781 229.414062 420.839844 256 447.828125 C 282.585938 420.839844 299 383.800781 299 342.921875 C 299 302.042969 282.585938 265.003906 256 238.015625 C 229.414062 265.003906 213 302.042969 213 342.921875 Z M 213 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(93.72549%,38.039216%,13.333333%)",fillOpacity:1}}),a.createElement("path",{d:"M 291.253906 295.320312 C 279.949219 298.046875 268.140625 299.5 256 299.5 C 243.859375 299.5 232.050781 298.046875 220.746094 295.320312 C 228.058594 273.542969 240.242188 254.015625 256 238.015625 C 271.757812 254.015625 283.941406 273.542969 291.253906 295.320312 Z M 291.253906 295.320312 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(100%,100%,100%)",fillOpacity:1}})))}function KSe(s){return a.createElement("svg",{width:32,height:32,viewBox:"0 0 365.445 365.445",...s},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"M146.7 162.775h-26.8a6.655 6.655 0 0 0-6.647 6.647v26.602a6.653 6.653 0 0 0 6.647 6.646h26.8a6.654 6.654 0 0 0 6.647-6.646v-26.602a6.655 6.655 0 0 0-6.647-6.647zM245.547 162.775h-26.801a6.653 6.653 0 0 0-6.646 6.647v26.602a6.652 6.652 0 0 0 6.646 6.646h26.801a6.654 6.654 0 0 0 6.646-6.646v-26.602a6.655 6.655 0 0 0-6.646-6.647z"})),a.createElement("path",{d:"M345.445 1.204H20c-11.046 0-20 8.954-20 20v323.037c0 11.045 8.954 20 20 20h325.445c11.045 0 20-8.955 20-20V21.204c0-11.045-8.953-20-20-20zM182.723 287.66c-57.955 0-104.937-46.981-104.937-104.937 0-57.957 46.982-104.938 104.937-104.938S287.66 124.767 287.66 182.723 240.678 287.66 182.723 287.66z",fill:"currentColor"}))}function qSe(s){return a.createElement("svg",{width:32,height:32,viewBox:"0 0 45.659 45.659",...s},a.createElement("path",{fill:"currentColor",d:"M30.619 27.309V7.781C30.619 3.49 27.124 0 22.833 0c-4.29 0-7.785 3.491-7.785 7.78v19.528a10.722 10.722 0 0 0-3.05 7.522c0 5.972 4.857 10.828 10.829 10.828 5.97 0 10.834-4.856 10.834-10.828 0-2.918-1.141-5.572-3.042-7.521zM22.825 42.66c-4.316 0-7.824-3.512-7.824-7.828 0-2.527 1.174-4.779 3.077-6.211V16.237h3.372c.552 0 1-.47 1-1.022 0-.553-.448-1.021-1-1.021h-3.372v-2.466h3.372c.552 0 1-.434 1-.986a.989.989 0 0 0-1-.986h-3.372V7.78c0-2.636 2.119-4.78 4.754-4.78 2.637 0 4.756 2.144 4.756 4.781v20.871c1.903 1.434 3.047 3.671 3.047 6.18 0 4.316-3.494 7.828-7.81 7.828z"}),a.createElement("path",{fill:"currentColor",d:"M25.334 30.463V18.632h-5.002v11.831a4.973 4.973 0 0 0-2.537 4.369 5.038 5.038 0 0 0 5.038 5.046 5.034 5.034 0 0 0 5.034-5.046c0-1.866-.982-3.495-2.533-4.369z"}))}function bve(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M341.333 288.593V85.333C341.333 38.205 303.128 0 256 0s-85.333 38.205-85.333 85.333v203.259C144.48 312.03 128 346.091 128 384c0 70.693 57.308 128 128 128s128-57.307 128-128c0-37.909-16.48-71.97-42.667-95.407zM256 469.333c-47.128 0-85.333-38.205-85.333-85.333 0-24.637 10.441-47.492 28.455-63.615l14.212-12.72V85.333c0-23.564 19.103-42.667 42.667-42.667s42.667 19.102 42.667 42.667v222.332l14.212 12.72c18.014 16.123 28.455 38.977 28.455 63.615-.002 47.128-38.207 85.333-85.335 85.333z"}),a.createElement("path",{fill:"currentColor",d:"M234.667 170.667h42.667v256h-42.667z"}),a.createElement("circle",{fill:"currentColor",cx:256,cy:384,r:64}))}function e5e(s){return a.createElement("svg",{viewBox:"0 0 297 297",...s},a.createElement("g",null,a.createElement("path",{fill:"currentColor",d:"m243.404,138.042c-5.775,0-10.458,4.683-10.458,10.458 0,46.564-37.883,84.446-84.446,84.446s-84.446-37.882-84.446-84.446 37.883-84.446 84.446-84.446c5.775,0 10.458-4.683 10.458-10.458s-4.683-10.457-10.458-10.457c-58.097,0-105.361,47.265-105.361,105.361s47.264,105.361 105.361,105.361 105.361-47.264 105.361-105.361c0-5.775-4.681-10.458-10.457-10.458z"}),a.createElement("path",{fill:"currentColor",d:"m142.963,121.344l-20.272-30.41c-3.203-4.807-9.695-6.104-14.502-2.9-4.805,3.202-6.104,9.695-2.9,14.502l20.279,30.422c-3.015,4.436-4.78,9.787-4.78,15.543 0,15.281 12.432,27.713 27.713,27.713 15.281,0 27.713-12.432 27.713-27.713 0-15.281-12.432-27.713-27.713-27.713-1.897-0.001-3.749,0.191-5.538,0.556zm12.335,27.156c0,3.748-3.05,6.798-6.798,6.798s-6.798-3.05-6.798-6.798 3.05-6.798 6.798-6.798 6.798,3.05 6.798,6.798z"}),a.createElement("path",{fill:"currentColor",d:"M148.5,0C66.617,0,0,66.617,0,148.5S66.617,297,148.5,297S297,230.383,297,148.5S230.383,0,148.5,0z M158.958,275.653 v-6.366c0-5.775-4.683-10.458-10.458-10.458c-5.775,0-10.458,4.683-10.458,10.458v6.366 c-62.027-5.056-111.64-54.668-116.695-116.695h6.366c5.775,0,10.458-4.683,10.458-10.458s-4.683-10.458-10.458-10.458h-6.366 c5.056-62.027,54.668-111.64,116.695-116.695v6.366c0,5.775,4.683,10.458,10.458,10.458c5.775,0,10.458-4.683,10.458-10.458v-6.366 c62.027,5.056,111.64,54.668,116.695,116.695h-6.366c-5.775,0-10.458,4.683-10.458,10.458s4.683,10.458,10.458,10.458h6.366 C270.598,220.985,220.985,270.598,158.958,275.653z"})))}function Uve(s){return a.createElement("svg",{viewBox:"0 0 480 480",...s},a.createElement("g",null,a.createElement("path",{fill:"currentColor",d:`M472,304h-80v-8c0-4.418-3.582-8-8-8h-32c-4.418,0-8,3.582-8,8v8h-48v-48c0-4.418-3.582-8-8-8h-8v-24c0-4.418-3.582-8-8-8 + c0.159-0.326,0.299-0.66,0.417-1.001C344.392,259.102,344.538,257.825,344.428,256.584z`}))}function Un(s){return a.createElement("svg",{viewBox:"1 -10 511.99999 511",...s},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"M 405.5 150 C 405.5 232.566406 338.566406 299.5 256 299.5 C 173.433594 299.5 106.5 232.566406 106.5 150 C 106.5 67.433594 173.433594 0.5 256 0.5 C 338.566406 0.5 405.5 67.433594 405.5 150 Z M 405.5 150 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(25.882353%,75.294118%,88.627451%)",fillOpacity:1}}),a.createElement("path",{d:"M 512 342.921875 C 512 425.488281 445.066406 492.421875 362.5 492.421875 C 279.933594 492.421875 213 425.488281 213 342.921875 C 213 260.355469 279.933594 193.421875 362.5 193.421875 C 445.066406 193.421875 512 260.355469 512 342.921875 Z M 512 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(100%,81.568627%,38.039216%)",fillOpacity:1}}),a.createElement("path",{d:"M 220.746094 295.308594 C 232.050781 298.039062 243.855469 299.5 256 299.5 C 321.917969 299.5 377.871094 256.835938 397.753906 197.613281 C 386.449219 194.878906 374.644531 193.421875 362.5 193.421875 C 296.582031 193.421875 240.628906 236.085938 220.746094 295.308594 Z M 220.746094 295.308594 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(28.627451%,74.117647%,56.470588%)",fillOpacity:1}}),a.createElement("path",{d:"M 299 342.921875 C 299 425.488281 232.066406 492.421875 149.5 492.421875 C 66.933594 492.421875 0 425.488281 0 342.921875 C 0 260.355469 66.933594 193.421875 149.5 193.421875 C 232.066406 193.421875 299 260.355469 299 342.921875 Z M 299 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(98.039216%,43.921569%,69.803922%)",fillOpacity:1}}),a.createElement("path",{d:"M 114.246094 197.613281 C 134.128906 256.835938 190.082031 299.5 256 299.5 C 268.144531 299.5 279.949219 298.039062 291.253906 295.308594 C 271.371094 236.085938 215.417969 193.421875 149.5 193.421875 C 137.355469 193.421875 125.550781 194.878906 114.246094 197.613281 Z M 114.246094 197.613281 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(68.627451%,48.235294%,77.647059%)",fillOpacity:1}}),a.createElement("path",{d:"M 213 342.921875 C 213 383.800781 229.414062 420.839844 256 447.828125 C 282.585938 420.839844 299 383.800781 299 342.921875 C 299 302.042969 282.585938 265.003906 256 238.015625 C 229.414062 265.003906 213 302.042969 213 342.921875 Z M 213 342.921875 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(93.72549%,38.039216%,13.333333%)",fillOpacity:1}}),a.createElement("path",{d:"M 291.253906 295.320312 C 279.949219 298.046875 268.140625 299.5 256 299.5 C 243.859375 299.5 232.050781 298.046875 220.746094 295.320312 C 228.058594 273.542969 240.242188 254.015625 256 238.015625 C 271.757812 254.015625 283.941406 273.542969 291.253906 295.320312 Z M 291.253906 295.320312 ",style:{stroke:"none",fillRule:"nonzero",fill:"rgb(100%,100%,100%)",fillOpacity:1}})))}function ZSe(s){return a.createElement("svg",{width:32,height:32,viewBox:"0 0 365.445 365.445",...s},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"M146.7 162.775h-26.8a6.655 6.655 0 0 0-6.647 6.647v26.602a6.653 6.653 0 0 0 6.647 6.646h26.8a6.654 6.654 0 0 0 6.647-6.646v-26.602a6.655 6.655 0 0 0-6.647-6.647zM245.547 162.775h-26.801a6.653 6.653 0 0 0-6.646 6.647v26.602a6.652 6.652 0 0 0 6.646 6.646h26.801a6.654 6.654 0 0 0 6.646-6.646v-26.602a6.655 6.655 0 0 0-6.646-6.647z"})),a.createElement("path",{d:"M345.445 1.204H20c-11.046 0-20 8.954-20 20v323.037c0 11.045 8.954 20 20 20h325.445c11.045 0 20-8.955 20-20V21.204c0-11.045-8.953-20-20-20zM182.723 287.66c-57.955 0-104.937-46.981-104.937-104.937 0-57.957 46.982-104.938 104.937-104.938S287.66 124.767 287.66 182.723 240.678 287.66 182.723 287.66z",fill:"currentColor"}))}function XSe(s){return a.createElement("svg",{width:32,height:32,viewBox:"0 0 45.659 45.659",...s},a.createElement("path",{fill:"currentColor",d:"M30.619 27.309V7.781C30.619 3.49 27.124 0 22.833 0c-4.29 0-7.785 3.491-7.785 7.78v19.528a10.722 10.722 0 0 0-3.05 7.522c0 5.972 4.857 10.828 10.829 10.828 5.97 0 10.834-4.856 10.834-10.828 0-2.918-1.141-5.572-3.042-7.521zM22.825 42.66c-4.316 0-7.824-3.512-7.824-7.828 0-2.527 1.174-4.779 3.077-6.211V16.237h3.372c.552 0 1-.47 1-1.022 0-.553-.448-1.021-1-1.021h-3.372v-2.466h3.372c.552 0 1-.434 1-.986a.989.989 0 0 0-1-.986h-3.372V7.78c0-2.636 2.119-4.78 4.754-4.78 2.637 0 4.756 2.144 4.756 4.781v20.871c1.903 1.434 3.047 3.671 3.047 6.18 0 4.316-3.494 7.828-7.81 7.828z"}),a.createElement("path",{fill:"currentColor",d:"M25.334 30.463V18.632h-5.002v11.831a4.973 4.973 0 0 0-2.537 4.369 5.038 5.038 0 0 0 5.038 5.046 5.034 5.034 0 0 0 5.034-5.046c0-1.866-.982-3.495-2.533-4.369z"}))}function Yve(s){return a.createElement("svg",{viewBox:"0 0 512 512",...s},a.createElement("path",{fill:"currentColor",d:"M341.333 288.593V85.333C341.333 38.205 303.128 0 256 0s-85.333 38.205-85.333 85.333v203.259C144.48 312.03 128 346.091 128 384c0 70.693 57.308 128 128 128s128-57.307 128-128c0-37.909-16.48-71.97-42.667-95.407zM256 469.333c-47.128 0-85.333-38.205-85.333-85.333 0-24.637 10.441-47.492 28.455-63.615l14.212-12.72V85.333c0-23.564 19.103-42.667 42.667-42.667s42.667 19.102 42.667 42.667v222.332l14.212 12.72c18.014 16.123 28.455 38.977 28.455 63.615-.002 47.128-38.207 85.333-85.335 85.333z"}),a.createElement("path",{fill:"currentColor",d:"M234.667 170.667h42.667v256h-42.667z"}),a.createElement("circle",{fill:"currentColor",cx:256,cy:384,r:64}))}function KSe(s){return a.createElement("svg",{viewBox:"0 0 297 297",...s},a.createElement("g",null,a.createElement("path",{fill:"currentColor",d:"m243.404,138.042c-5.775,0-10.458,4.683-10.458,10.458 0,46.564-37.883,84.446-84.446,84.446s-84.446-37.882-84.446-84.446 37.883-84.446 84.446-84.446c5.775,0 10.458-4.683 10.458-10.458s-4.683-10.457-10.458-10.457c-58.097,0-105.361,47.265-105.361,105.361s47.264,105.361 105.361,105.361 105.361-47.264 105.361-105.361c0-5.775-4.681-10.458-10.457-10.458z"}),a.createElement("path",{fill:"currentColor",d:"m142.963,121.344l-20.272-30.41c-3.203-4.807-9.695-6.104-14.502-2.9-4.805,3.202-6.104,9.695-2.9,14.502l20.279,30.422c-3.015,4.436-4.78,9.787-4.78,15.543 0,15.281 12.432,27.713 27.713,27.713 15.281,0 27.713-12.432 27.713-27.713 0-15.281-12.432-27.713-27.713-27.713-1.897-0.001-3.749,0.191-5.538,0.556zm12.335,27.156c0,3.748-3.05,6.798-6.798,6.798s-6.798-3.05-6.798-6.798 3.05-6.798 6.798-6.798 6.798,3.05 6.798,6.798z"}),a.createElement("path",{fill:"currentColor",d:"M148.5,0C66.617,0,0,66.617,0,148.5S66.617,297,148.5,297S297,230.383,297,148.5S230.383,0,148.5,0z M158.958,275.653 v-6.366c0-5.775-4.683-10.458-10.458-10.458c-5.775,0-10.458,4.683-10.458,10.458v6.366 c-62.027-5.056-111.64-54.668-116.695-116.695h6.366c5.775,0,10.458-4.683,10.458-10.458s-4.683-10.458-10.458-10.458h-6.366 c5.056-62.027,54.668-111.64,116.695-116.695v6.366c0,5.775,4.683,10.458,10.458,10.458c5.775,0,10.458-4.683,10.458-10.458v-6.366 c62.027,5.056,111.64,54.668,116.695,116.695h-6.366c-5.775,0-10.458,4.683-10.458,10.458s4.683,10.458,10.458,10.458h6.366 C270.598,220.985,220.985,270.598,158.958,275.653z"})))}function Qve(s){return a.createElement("svg",{viewBox:"0 0 480 480",...s},a.createElement("g",null,a.createElement("path",{fill:"currentColor",d:`M472,304h-80v-8c0-4.418-3.582-8-8-8h-32c-4.418,0-8,3.582-8,8v8h-48v-48c0-4.418-3.582-8-8-8h-8v-24c0-4.418-3.582-8-8-8 h-8v-16h8c4.418,0,8-3.582,8-8v-32c0-4.418-3.582-8-8-8h-8v-24h44.28c5.382-0.016,10.547,2.121,14.344,5.936l7.44,7.44 c14.167,14.169,37.138,14.171,51.308,0.004c6.806-6.805,10.629-16.036,10.628-25.66V92.28 c0.002-20.037-16.239-36.282-36.276-36.284c-9.625-0.001-18.855,3.822-25.66,10.628l-7.44,7.44 @@ -620,11 +620,11 @@ body { v23.44c-0.006,11.205-9.095,20.283-20.3,20.276c-5.372-0.003-10.523-2.136-14.324-5.932l-7.44-7.44 c-6.79-6.826-16.028-10.652-25.656-10.624H163.72z M248,128v24h-16v-24H248z M216,168h48v16h-48V168z M248,200v16h-16v-16H248z M216,232h48v16h-48V232z M344,400H136v-80h56c4.418,0,8-3.582,8-8v-48h80v48c0,4.418,3.582,8,8,8h56V400z M376,416h-16V304h16 - V416z M464,400h-72v-80h72V400z`})))}function $ve(s){return a.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M258.5 185.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H258.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}))}function t5e(s){return a.createElement("svg",{viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M228.5 205.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H228.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M232.826 280.905c-.339 3.356-18.813-.782-20.919-1.06l-45.073-5.94-45.074-5.94-14.507-1.912c-1.456-.192-6.201-.055-6.412-2.147-.621-6.157 0-12.699 0-18.878v-43.5-82.076-5.13c0-2.551 5.184-1.015 6.412-.853l35.438 4.67 83.723 11.035c1.457.192 6.201.055 6.412 2.147.169 1.673 0 3.451 0 5.13v144.454c0 6.448 10 6.448 10 0V136.451v-5.13c0-7.619-6.137-10.793-12.673-11.655l-28.531-3.76-88.411-11.652-9.897-1.304c-6.555-.864-12.473 4.9-12.473 11.38v144.832c0 2.023-.071 4.04.132 6.053.717 7.111 6.606 9.563 12.759 10.374l76.827 10.125 39.896 5.259 9.697 1.278c7.063.931 12.011-4.778 12.673-11.346.648-6.415-9.358-6.352-9.999 0z",fill:"currentColor"}))}function qL(s){return a.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9zM265.732 265.178c.584 2.887-1.629 5.228-4.942 5.228H103.457c-3.313 0-6.474-2.341-7.058-5.228L75.24 130.633c-.584-2.887 1.628-5.228 4.942-5.228h157.333c3.313 0 6.474 2.34 7.058 5.228l21.159 134.545z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M247.194 199.667h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5h-6.639c-2.726 0-5 2.274-5 5s2.275 5 5 5z",fill:"currentColor"}))}const s5e={"type-Device type":"Device type","type-airCondition":"Air conditioner","type-blind":"Blinds","type-blindButtons":"Blind controlled by buttons","type-button":"Button","type-buttonSensor":"Button with feedback","type-camera":"Camera","type-chart":"Chart","type-cie":"CIE color light","type-ct":"Color temperature","type-dimmer":"Dimmer","type-door":"Door","type-fireAlarm":"Fire alarm","type-floodAlarm":"Flood alarm","type-gate":"Gate","type-hue":"HUE light","type-humidity":"Humidity","type-illuminance":"Illuminance","type-image":"Image","type-info":"Information","type-instance":"Instance","type-light":"Light","type-location":"Position","type-locationOne":"Position as one state","type-lock":"Lock","type-media":"Media-player","type-motion":"Motion sensor","type-percentage":"Percentage","type-rgb":"RGB light","type-rgbSingle":"R,G,B light - single states","type-rgbwSingle":"R,G,B,W light - single states","type-slider":"Slider","type-socket":"Socket","type-temperature":"Temperature","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Vacuum cleaner","type-valve":"Valve","type-volume":"Volume","type-volumeGroup":"Volume group","type-warning":"Warning","type-weatherCurrent":"Current weather","type-weatherForecast":"Weather forecast","type-window":"Window sensor","type-windowTilt":"Window tilt sensor"},i5e={"type-Device type":"Gerätetyp","type-airCondition":"Klimaanlage","type-blind":"Jalousien","type-blindButtons":"Jalousie über Tasten gesteuert","type-button":"Taste","type-buttonSensor":"Taste mit Rückmeldung","type-camera":"Kamera","type-chart":"Diagramm","type-cie":"CIE Farblicht","type-ct":"Farbtemperatur","type-dimmer":"Dimmer","type-door":"Türsensor","type-fireAlarm":"Feueralarm","type-floodAlarm":"Wasseralarm","type-gate":"Tor-Steuerung","type-hue":"HUE-Licht","type-humidity":"Feuchtigkeit","type-illuminance":"Beleuchtungsstärke","type-image":"Bild","type-info":"Information","type-instance":"Instanz","type-light":"Licht","type-location":"Position","type-locationOne":"Position als ein Zustand","type-lock":"Schloss","type-media":"Mediaplayer","type-motion":"Bewegungssensor","type-percentage":"Prozentsatz","type-rgb":"RGB-Licht","type-rgbSingle":"R,G,B-Licht Einzelwerte","type-rgbwSingle":"R,G,B,W-Licht Einzelwerte","type-slider":"Schieberegler","type-socket":"Steckdose","type-temperature":"Temperatur","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Staubsauger","type-valve":"Ventil","type-volume":"Lautstärke","type-volumeGroup":"Lautstärke-Gruppe","type-warning":"Warnung","type-weatherCurrent":"Aktuelle Wetterlage","type-weatherForecast":"Wettervorhersage","type-window":"Fenstersensor","type-windowTilt":"Fensterkippung-Sensor"},r5e={"type-Device type":"Тип устройства","type-airCondition":"Кондиционер","type-blind":"Рольставни/Жалюзи","type-blindButtons":"Жалюзи управляющиеся кнопками","type-button":"Кнопка","type-buttonSensor":"Кнопка с обратной связью","type-camera":"Камера","type-chart":"Диаграмма","type-cie":"CIE свет","type-ct":"Цветовая температура","type-dimmer":"Диммер","type-door":"Датчик положения двери","type-fireAlarm":"Датчик дыма","type-floodAlarm":"Датчик затопления","type-gate":"Ворота","type-hue":"HUE свет","type-humidity":"Влажность","type-illuminance":"Освещенность","type-image":"Изображение","type-info":"Информация","type-instance":"Инстанция","type-light":"Свет","type-location":"Местоположение","type-locationOne":"Позиция в одном состоянии","type-lock":"Замок","type-media":"Медиа-плейер","type-motion":"Датчик движения","type-percentage":"Проценты","type-rgb":"RGB свет","type-rgbSingle":"R,G,B как отдельные значение","type-rgbwSingle":"R,G,B,W как отдельные значение","type-slider":"Ползунок","type-socket":"Розетка","type-temperature":"Температура","type-thermostat":"Термостат","type-url":"URL","type-vacuumCleaner":"Пылесос","type-valve":"Вентиль","type-volume":"Громкость","type-volumeGroup":"Группа громкости","type-warning":"Предупреждение","type-weatherCurrent":"Актуальная погода","type-weatherForecast":"Прогноз погоды","type-window":"Датчик открытия окна","type-windowTilt":"Датчик наклона окна"},o5e={"type-Device type":"Tipo de dispositivo","type-airCondition":"Ar condicionado","type-blind":"persianas","type-blindButtons":"Persiana controlada por botões","type-button":"botão","type-buttonSensor":"Sensor de botão","type-camera":"câmera","type-chart":"Gráfico","type-cie":"Luz colorida CIE","type-ct":"Temperatura de cor","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"alarme de incêndio","type-floodAlarm":"alarme de inundação","type-gate":"portão","type-hue":"Luz HUE","type-humidity":"umidade","type-illuminance":"Iluminância","type-image":"imagem","type-info":"informação","type-instance":"exemplo","type-light":"luz","type-location":"localização","type-locationOne":"Posição como um estado","type-lock":"trancar","type-media":"mídia","type-motion":"movimento","type-percentage":"Percentagem","type-rgb":"Luz RGB","type-rgbSingle":"Luz RGB única","type-rgbwSingle":"RGBW como valor único","type-slider":"controle deslizante","type-socket":"soquete","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirador de pó","type-valve":"válvula","type-volume":"volume","type-volumeGroup":"grupo de volume","type-warning":"aviso","type-weatherCurrent":"clima atual","type-weatherForecast":"previsão do tempo","type-window":"janela","type-windowTilt":"inclinação da janela"},n5e={"type-Device type":"Typ urządzenia","type-airCondition":"Klimatyzator","type-blind":"żaluzje","type-blindButtons":"Roleta sterowana przyciskami","type-button":"przycisk","type-buttonSensor":"Czujnik przycisku","type-camera":"kamera","type-chart":"Wykres","type-cie":"Światło kolorowe CIE","type-ct":"Temperatura barwowa","type-dimmer":"opornik","type-door":"drzwi","type-fireAlarm":"alarm pożarowy","type-floodAlarm":"alarm przeciwpowodziowy","type-gate":"brama","type-hue":"Światło HUE","type-humidity":"wilgotność","type-illuminance":"Natężenie oświetlenia","type-image":"obraz","type-info":"Informacje","type-instance":"przykład","type-light":"światło","type-location":"lokalizacja","type-locationOne":"Pozycja jako państwa","type-lock":"zamek","type-media":"głoska bezdźwięczna","type-motion":"ruch","type-percentage":"Procent","type-rgb":"Światło RGB","type-rgbSingle":"Pojedyncze światło RGB","type-rgbwSingle":"RGBW jako pojedyncza wartość","type-slider":"suwak","type-socket":"gniazdo","type-temperature":"temperatura","type-thermostat":"termostat","type-url":"Adres URL","type-vacuumCleaner":"Odkurzacz","type-valve":"zawór","type-volume":"tom","type-volumeGroup":"grupa woluminów","type-warning":"ostrzeżenie","type-weatherCurrent":"aktualna pogoda","type-weatherForecast":"prognoza pogody","type-window":"okno","type-windowTilt":"pochylenie okna"},a5e={"type-Device type":"Type d'appareil","type-airCondition":"Climatiseur","type-blind":"stores","type-blindButtons":"Store commandé par boutons","type-button":"bouton","type-buttonSensor":"Capteur de bouton","type-camera":"caméra","type-chart":"Graphique","type-cie":"lumière colorée CIE","type-ct":"Température de couleur","type-dimmer":"variateur","type-door":"porte","type-fireAlarm":"alarme incendie","type-floodAlarm":"alarme d'inondation","type-gate":"grille","type-hue":"Lumière HUE","type-humidity":"humidité","type-illuminance":"Éclairement","type-image":"image","type-info":"informations","type-instance":"exemple","type-light":"lumière","type-location":"emplacement","type-locationOne":"Position en tant qu'État","type-lock":"verrouillage","type-media":"médias","type-motion":"mouvement","type-percentage":"Pourcentage","type-rgb":"lumière RVB","type-rgbSingle":"Lumière RVB simple","type-rgbwSingle":"RGBW comme valeur unique","type-slider":"curseur","type-socket":"douille","type-temperature":"température","type-thermostat":"thermostat","type-url":"URL","type-vacuumCleaner":"Aspirateur","type-valve":"soupape","type-volume":"volume","type-volumeGroup":"groupe de volumes","type-warning":"avertissement","type-weatherCurrent":"météo actuelle","type-weatherForecast":"prévisions météorologiques","type-window":"fenêtre","type-windowTilt":"inclinaison de la fenêtre"},M5e={"type-Device type":"Tipo di dispositivo","type-airCondition":"Condizionatore d'aria","type-blind":"tende","type-blindButtons":"Tenda controllata da pulsanti","type-button":"pulsante","type-buttonSensor":"Sensore del pulsante","type-camera":"telecamera","type-chart":"Grafico","type-cie":"Luce colorata CIE","type-ct":"Temperatura del colore","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"allarme antincendio","type-floodAlarm":"allarme allagamento","type-gate":"cancello","type-hue":"Luce HUE","type-humidity":"umidità","type-illuminance":"Illuminamento","type-image":"immagine","type-info":"informazioni","type-instance":"esempio","type-light":"leggero","type-location":"posizione","type-locationOne":"Posizione come stato","type-lock":"serratura","type-media":"media","type-motion":"movimento","type-percentage":"Percentuale","type-rgb":"luce RGB","type-rgbSingle":"Luce RGB singola","type-rgbwSingle":"RGBW come valore singolo","type-slider":"cursore","type-socket":"PRESA","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirapolvere","type-valve":"valvola","type-volume":"volume","type-volumeGroup":"gruppo di volumi","type-warning":"avvertimento","type-weatherCurrent":"meteo attuale","type-weatherForecast":"previsioni del tempo","type-window":"finestra","type-windowTilt":"inclinazione della finestra"},c5e={"type-Device type":"Apparaattype","type-airCondition":"Airconditioner","type-blind":"jaloezieën","type-blindButtons":"Jaloezie bediend door knoppen","type-button":"knop","type-buttonSensor":"Knopsensor","type-camera":"camera","type-chart":"Grafiek","type-cie":"CIE-kleurenlicht","type-ct":"Kleurtemperatuur","type-dimmer":"dimmer","type-door":"deur","type-fireAlarm":"brandalarm","type-floodAlarm":"overstromingsalarm","type-gate":"hek","type-hue":"HUE-licht","type-humidity":"vochtigheid","type-illuminance":"Verlichtingssterkte","type-image":"afbeelding","type-info":"informatie","type-instance":"aanleg","type-light":"licht","type-location":"locatie","type-locationOne":"Positie als staat","type-lock":"slot","type-media":"media","type-motion":"beweging","type-percentage":"Percentage","type-rgb":"RGB-licht","type-rgbSingle":"RGB-licht enkel","type-rgbwSingle":"RGBW als enkele waarde","type-slider":"schuifregelaar","type-socket":"stopcontact","type-temperature":"temperatuur","type-thermostat":"thermostaat","type-url":"URL","type-vacuumCleaner":"Stofzuiger","type-valve":"ventiel","type-volume":"volume","type-volumeGroup":"volumegroep","type-warning":"waarschuwing","type-weatherCurrent":"huidige weersomstandigheden","type-weatherForecast":"weersvoorspelling","type-window":"raam","type-windowTilt":"raamkanteling"},u5e={"type-Device type":"Тип пристрою","type-airCondition":"Кондиціонер","type-blind":"жалюзі","type-blindButtons":"Штора керується кнопками","type-button":"кнопку","type-buttonSensor":"Датчик кнопки","type-camera":"камера","type-chart":"Діаграма","type-cie":"Кольорове світло CIE","type-ct":"Колірна температура","type-dimmer":"диммер","type-door":"двері","type-fireAlarm":"пожежна сигналізація","type-floodAlarm":"сигналізація про повінь","type-gate":"ворота","type-hue":"світло HUE","type-humidity":"вологість","type-illuminance":"Освітленість","type-image":"зображення","type-info":"інформація","type-instance":"екземпляр","type-light":"світло","type-location":"розташування","type-locationOne":"Позиція як держави","type-lock":"замок","type-media":"ЗМІ","type-motion":"руху","type-percentage":"Відсоток","type-rgb":"RGB світло","type-rgbSingle":"Одиночне світло RGB","type-rgbwSingle":"RGBW як одне значення","type-slider":"повзунок","type-socket":"гніздо","type-temperature":"температура","type-thermostat":"термостат","type-url":"URL","type-vacuumCleaner":"Пилосос","type-valve":"клапан","type-volume":"обсяг","type-volumeGroup":"група обсягів","type-warning":"УВАГА","type-weatherCurrent":"поточна погода","type-weatherForecast":"прогноз погоди","type-window":"вікно","type-windowTilt":"нахил вікна"},l5e={"type-Device type":"设备类型","type-airCondition":"空调","type-blind":"百叶窗","type-blindButtons":"按钮控制百叶窗","type-button":"按钮","type-buttonSensor":"按钮传感器","type-camera":"相机","type-chart":"图表","type-cie":"CIE色光","type-ct":"色温","type-dimmer":"调光器","type-door":"门","type-fireAlarm":"火灾报警","type-floodAlarm":"洪水警报","type-gate":"门","type-hue":"色调灯","type-humidity":"湿度","type-illuminance":"照度","type-image":"图像","type-info":"信息","type-instance":"实例","type-light":"光","type-location":"地点","type-locationOne":"作为一个国家的地位","type-lock":"锁","type-media":"媒体","type-motion":"运动","type-percentage":"百分比","type-rgb":"RGB灯","type-rgbSingle":"RGB灯单","type-rgbwSingle":"RGBW 作为单一值","type-slider":"滑块","type-socket":"插座","type-temperature":"温度","type-thermostat":"恒温器","type-url":"网址","type-vacuumCleaner":"吸尘器","type-valve":"阀门","type-volume":"体积","type-volumeGroup":"卷组","type-warning":"警告","type-weatherCurrent":"当前天气","type-weatherForecast":"天气预报","type-window":"窗户","type-windowTilt":"窗户倾斜"};let J0=!1;function eg(){J0||(J0=!0,D.extendTranslations({en:s5e,de:i5e,ru:r5e,pt:o5e,pl:n5e,fr:a5e,it:M5e,nl:c5e,uk:u5e,"zh-cn":l5e}))}const B0={[G.Types.airCondition]:dj,[G.Types.blind]:W0,[G.Types.blindButtons]:W0,[G.Types.button]:XSe,[G.Types.buttonSensor]:WSe,[G.Types.camera]:YSe,[G.Types.chart]:xSe,[G.Types.image]:Dj,[G.Types.dimmer]:Tj,[G.Types.door]:GSe,[G.Types.fireAlarm]:$0,"sensor.alarm.fire":$0,[G.Types.floodAlarm]:P0,"sensor.alarm.flood":P0,[G.Types.gate]:HSe,[G.Types.humidity]:VSe,[G.Types.illuminance]:BSe,[G.Types.info]:yj,[G.Types.light]:jj,[G.Types.lock]:gj,[G.Types.location]:Lj,[G.Types.locationOne]:Nj,[G.Types.media]:lj,[G.Types.motion]:ZSe,[G.Types.ct]:Uc,[G.Types.percentage]:bc,[G.Types.rgb]:$n,[G.Types.rgbSingle]:$n,[G.Types.rgbwSingle]:RSe,[G.Types.hue]:Uc,[G.Types.cie]:$n,[G.Types.slider]:bc,[G.Types.socket]:KSe,[G.Types.temperature]:qSe,[G.Types.thermostat]:e5e,[G.Types.vacuumCleaner]:FSe,[G.Types.volume]:uj,[G.Types.volumeGroup]:cj,[G.Types.window]:t5e,[G.Types.windowTilt]:qL,[G.Types.weatherCurrent]:b0,[G.Types.weatherForecast]:b0,[G.Types.warning]:Qc,[G.Types.unknown]:Mj,[G.Types.instance]:aj,invalid:Qc,hub3:nj,node:oj,hub5:rj,controller:ij},qr={width:32,height:32};function N5e(s){const[e,t]=a.useState(!1);if(Ce(()=>{s.title&&!e&&(eg(),t(!0))},[s.title,e]),!e&&s.title)return a.createElement(J,{style:{...qr,...s.style||void 0},className:s.className,sx:s.sx});const i=s.type||(s.src?Object.keys(B0).find(n=>s.src===n):void 0);if(!i&&s.src)return a.createElement(be,{style:qr,...s,title:s.title===!0?void 0:s.title,src:s.src});const r=i&&B0[i];if(!r)return i?a.createElement("span",{style:{...qr,...s.style||void 0}},i[0].toUpperCase()):null;const o=a.createElement(r,{style:{...qr,...s.style||void 0},onClick:s.onClick,className:s.className,sx:s.sx});return s.title?a.createElement(Le,{slotProps:{popper:{sx:{pointerEvents:"none"}}},title:s.title===!0?D.t(`type-${i}`):s.title},a.createElement("div",{style:{display:"flex"}},o)):o}const Ht={itemChildrenWrapper:{display:"flex",width:"100%",justifyContent:"space-between"},type:{marginTop:10},selectIcon:{paddingRight:8,verticalAlign:"middle",width:20,height:20},selectText:{verticalAlign:"middle"},iconWrapper:{display:"flex",alignItems:"center"},iconStyle:{width:16,height:16,margin:"0 3px"},emptyIcon:{width:16,height:16,margin:"0 3px"}};function Pve(s){const[e,t]=a.useState({}),[i,r]=a.useState([]);return Ce(()=>{const o={};Object.keys(G.Types).filter(M=>{var c,l;return(!s.supportedDevices||((c=s.supportedDevices)==null?void 0:c.includes(M)))&&!((l=s.unsupportedDevices)!=null&&l.includes(M))}).forEach(M=>o[M]=D.t(`type-${G.Types[M]}`));const n=Object.keys(o);n.sort((M,c)=>o[M]===o[c]?0:o[M].localeCompare(o[c],"de")),eg(),r(n),t(o)},[s.supportedDevices,s.unsupportedDevices]),i?a.createElement(Qt,{style:{...Ht.type,...s.style},sx:s.sx,variant:"standard",error:!!s.error},a.createElement(yi,null,s.label||D.t("type-Device type")),a.createElement(nt,{variant:"standard",disabled:!!s.disabled,value:s.value,onChange:o=>s.onChange(o.target.value)},i.map(o=>{var n;return a.createElement(re,{key:G.Types[o],value:G.Types[o]},a.createElement("div",{style:Ht.itemChildrenWrapper},a.createElement("div",null,a.createElement(N5e,{type:G.Types[o],style:{...Ht.selectIcon,color:s.themeType==="dark"?"#FFFFFF":"#000"}}),a.createElement("span",{style:Ht.selectText},e[o])),(n=s.showApplications)!=null&&n.TYPE_OPTIONS[o]?a.createElement("div",{style:Ht.iconWrapper},Object.keys(s.showApplications.TYPE_OPTIONS[o]).map(M=>s.showApplications.TYPE_OPTIONS[o][M]?a.createElement(be,{key:M,style:Ht.iconStyle,src:s.showApplications.ICONS_TYPE[M]}):a.createElement("div",{key:M,style:Ht.emptyIcon}))):null))}))):a.createElement(J,{style:{...Ht.type,...s.style},sx:s.sx})}function L5e(s){return te({attr:{version:"1",viewBox:"0 0 48 48",enableBackground:"new 0 0 48 48"},child:[{tag:"circle",attr:{fill:"#B2EBF2",cx:"32",cy:"24",r:"9"},child:[]},{tag:"path",attr:{fill:"#4DD0E1",d:"M32,12c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C44,17.4,38.6,12,32,12z M32,32 c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S36.4,32,32,32z"},child:[]},{tag:"g",attr:{fill:"#3F51B5"},child:[{tag:"polygon",attr:{points:"25.4,22 19.8,5.1 13.6,27.7 11.4,22 4,22 4,26 8.6,26 14.4,40.3 20.2,18.9 22.6,26 30,26 30,22"},child:[]},{tag:"circle",attr:{cx:"32",cy:"24",r:"4"},child:[]}]}]})(s)}function g5e(s){return te({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M4.428 2.727l3.335 3.335c-.486.07-.903.276-1.32.624L.886 12.383c-1.181 1.18-1.181 3.194 0 4.375a2.41 2.41 0 0 0 1.598.834l17.088 3.681-3.335-3.333c.486-.07.903-.278 1.32-.626l5.557-5.695c1.181-1.181 1.181-3.196 0-4.377a2.411 2.411 0 0 0-1.598-.833zM11.653 6.2c.694 0 1.25.486 1.25 1.18 0 .695-.486 1.251-1.181 1.251-.695 0-1.25-.485-1.25-1.18s.555-1.251 1.18-1.251zm1.51 3.792c.049-.006.088.046.088.098-.139.694-.695 1.181-1.39 1.181-.694 0-1.32-.487-1.46-1.112 0 0 .002-.07.071 0 .487.278.972.348 1.32.278.346 0 .833-.07 1.32-.416a.092.092 0 0 1 .05-.029zm.723 2.511c.058.013.06.106.06.158-.209.903-.973 1.666-1.946 1.666a2.167 2.167 0 0 1-2.084-1.528c-.07-.07 0-.138.138-.138.695.347 1.39.416 1.877.416.486 0 1.18-.14 1.875-.556.035-.017.06-.022.08-.018zm.597 3.018c.049-.013.087.09.087.195-.278 1.181-1.25 2.085-2.5 2.155-1.251 0-2.293-.835-2.57-1.946 0-.139.068-.278.207-.209.834.486 1.737.556 2.362.556s1.529-.208 2.362-.694c.018-.035.036-.053.052-.057z"},child:[]}]})(s)}function j5e(s){return te({attr:{version:"1.2",baseProfile:"tiny",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13 5l.855 3.42 3.389-.971 1.501 2.6-2.535 2.449 2.535 2.451-1.5 2.6-3.39-.971-.855 3.422h-3l-.855-3.422-3.39.971-1.501-2.6 2.535-2.451-2.534-2.449 1.5-2.6 3.39.971.855-3.42h3m0-2h-3c-.918 0-1.718.625-1.939 1.516l-.354 1.412-1.4-.4c-.184-.053-.369-.078-.552-.078-.7 0-1.368.37-1.731 1l-1.5 2.6c-.459.796-.317 1.802.342 2.438l1.047 1.011-1.048 1.015c-.66.637-.802 1.643-.343 2.438l1.502 2.6c.363.631 1.031 1 1.731 1 .183 0 .368-.025.552-.076l1.399-.401.354 1.415c.222.885 1.022 1.51 1.94 1.51h3c.918 0 1.718-.625 1.939-1.516l.354-1.414 1.399.4c.184.053.369.077.552.077.7 0 1.368-.37 1.731-1l1.5-2.6c.459-.796.317-1.8-.342-2.438l-1.047-1.013 1.047-1.013c.66-.637.801-1.644.342-2.438l-1.5-2.6c-.365-.631-1.031-1-1.732-1-.184 0-.368.025-.551.076l-1.4.401-.354-1.413c-.22-.884-1.02-1.509-1.938-1.509zM11.5 10.5c1.104 0 2 .895 2 2 0 1.104-.896 2-2 2s-2-.896-2-2c0-1.105.896-2 2-2m0-1c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3z"},child:[]}]})(s)}function y5e(s){return te({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M7.707 17.707 13.414 12 7.707 6.293 6.293 7.707 10.586 12l-4.293 4.293zM15 6h2v12h-2z"},child:[]}]})(s)}function T5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M327.467 19.992c.748 14.94 2.317 51.268 2.59 98.76 3.474-.286 6.557-.381 9.72 1.08 18.04 8.345 27.243 29.326 27.026 50.506-.217 21.18-11.283 44.136-36.104 54.307a41.62 41.62 0 0 1-2.486.923c-3.408 80.504-12.307 166.37-33.754 225.5-6.876 15.831-17.029 29.217-26.828 40.94l55.27.422c20.676-12.19 32.041-27.395 36.32-46.407l17.558 3.954c-3.67 16.312-11.99 30.662-24.511 42.677l143.052 1.094c-5.13-14.524-16.16-46.501-20.357-70.217C451.89 293.171 450.15 45 450.025 19.992zM18.279 38.984l.881 18.725c17.856 12.047 32.035 23.91 45.969 35.527 12.887-11.156 2.404-29.725-5.82-39.091-13.668-5.346-27.335-10.467-41.03-15.16zM86.723 65.13c4.77 14.56 3.347 29.656-7.477 39.746 24.105 19.479 50.832 38.151 97.1 55.635 13.836-22.588 12.08-43.852-3.338-60.739-29.03-10.9-57.703-22.997-86.285-34.642zm-31.721 42.988V400h17.996V122.723c-6.187-4.856-12.114-9.73-17.996-14.606zm145.264 1.434c3.253 8.283 4.54 16.754 3.982 25.043-.765 11.35-4.673 22.135-10.545 32.095 16.926 5.691 36.192 11.248 58.451 16.655l2.604.633 1.834 1.953c9.223 9.826 22.535 17.206 35.469 21.006 12.933 3.8 25.473 3.655 31.814 1.056 18.024-7.385 24.773-22.363 24.932-37.84.152-14.822-7.069-28.554-15.479-33.306-45.88-1.699-89.948-12.607-133.062-27.295zm-33.264 66.476V400h17.996V182.605a502.784 502.784 0 0 1-17.996-6.578zM32 419.002v17.996h176v-17.996z"},child:[]}]})(s)}function D5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.7 21.04l-194.4.41L21.04 159.3l.41 194.4L159.3 491l194.4-.4L491 352.7l-.4-194.4L352.7 21.04zm-8 19.66l126.2 125.7.4 178.3-123.1 123.6-2.6 2.6-178.3.4L41.08 345.6l-.38-178.3L166.4 41.08l178.3-.38zm-7.5 18.01l-163.3.34L58.71 174.8l.34 163.3L174.8 453.3l163.3-.3 115.2-115.8-.3-163.3L337.2 58.71zM108.4 210.4c5.3 0 10.8.5 16.4 1.3 5.7.8 11.5 2 17.5 3.6v20.5c-5.3-2.4-10.5-4.2-15.6-5.4-5.1-1.2-9.9-1.8-14.4-1.8-6 0-10.4.8-13.25 2.5-2.87 1.6-4.3 4.2-4.3 7.7 0 2.6.96 4.6 2.87 6.1 1.95 1.4 5.48 2.7 10.58 3.7l10.6 2.1c10.8 2.2 18.5 5.5 23.1 9.9 4.5 4.5 6.8 10.8 6.8 18.9 0 10.7-3.2 18.7-9.5 24-6.4 5.2-16.1 7.8-29.2 7.8-6.1 0-12.3-.6-18.51-1.8-6.2-1.1-12.41-2.9-18.61-5.2v-21.1c6.2 3.3 12.19 5.8 17.96 7.5 5.82 1.6 11.46 2.4 16.76 2.4 5.5 0 9.7-.9 12.6-2.7 2.9-1.8 4.4-4.4 4.4-7.8 0-3.1-1-5.4-3-7.1-2-1.6-5.9-3.1-11.8-4.4l-9.7-2.1c-9.73-2.1-16.85-5.4-21.37-10-4.47-4.5-6.7-10.7-6.7-18.4 0-9.7 3.12-17.1 9.37-22.3 6.25-5.3 15.24-7.9 27-7.9zm187.7 0c15.6 0 27.8 4.5 36.7 13.5 8.9 8.9 13.3 21.2 13.3 37 0 15.7-4.4 28-13.3 37-8.9 8.9-21.1 13.4-36.7 13.4-15.6 0-27.8-4.5-36.7-13.4-8.9-9-13.3-21.3-13.3-37 0-15.8 4.4-28.1 13.3-37 8.9-9 21.1-13.5 36.7-13.5zm-141.9 1.8h89.6v18.9h-32.2v78.3h-25.1v-78.3h-32.3v-18.9zm205.8 0h41.6c12.3 0 21.8 2.8 28.4 8.3 6.7 5.4 10 13.2 10 23.4s-3.3 18.1-10 23.6c-6.6 5.4-16.1 8.2-28.4 8.2H385v33.7h-25v-97.2zm-63.9 16.4c-7.7 0-13.6 2.8-17.8 8.5-4.2 5.6-6.3 13.6-6.3 23.8 0 10.2 2.1 18.1 6.3 23.8 4.2 5.6 10.1 8.4 17.8 8.4 7.7 0 13.6-2.8 17.8-8.4 4.2-5.7 6.3-13.6 6.3-23.8 0-10.2-2.1-18.2-6.3-23.8-4.2-5.7-10.1-8.5-17.8-8.5zm88.9 1.8v27.1h13.9c4.9 0 8.6-1.2 11.3-3.5 2.6-2.4 3.9-5.8 3.9-10.1s-1.3-7.7-3.9-10c-2.7-2.4-6.4-3.5-11.3-3.5H385z"},child:[]}]})(s)}function d5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 54.28c-124.603 0-226 101.398-226 226 0 47.864 14.975 92.293 40.465 128.876l29.79-19.86c-17.188-24.545-28.708-53.362-32.696-84.577H96v-18H66.115c-.07-2.14-.115-4.284-.115-6.44 0-45.378 15.816-86.97 42.236-119.598l17.4 17.4 12.727-12.727-18.133-18.132C152.735 114.057 197.335 92.8 247 90.498v29.22h18V90.5c49.665 2.302 94.265 23.56 126.77 56.725l-18.133 18.132 12.726 12.727 17.4-17.4c26.42 32.63 42.237 74.22 42.237 119.6 0 2.154-.044 4.3-.115 6.437H416v18h28.44c-3.987 31.214-15.507 60.03-32.694 84.575l29.79 19.86C467.025 372.574 482 328.146 482 280.282c0-124.602-101.397-226-226-226zm15.83 66.23a144 160 0 0 1 74.608 100.062l49.966-17.568a160 160 0 0 0-4.3-7.012l-5.135 5.153-30.368-30.29-5.76-5.746 7.85-7.874a160 160 0 0 0-86.862-36.726zm156.15 89.844l-175.332 60.6C240.505 272.618 231 283.155 231 295.72c0 13.7 11.3 25 25 25 6.77 0 12.95-2.764 17.473-7.208L427.98 210.354zm-16.513 32.322l-60.713 40.72a144 160 0 0 1-56.6 108.323h76.057a160 160 0 0 0 39.763-68.572H398.48v-52.515h17.022a160 160 0 0 0-4.035-27.957zM128 421.72v36h256v-36H128z"},child:[]}]})(s)}function R0(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M140 29.92c-31.4 0-59.89 3.25-79.89 8.25-9.9 2.5-17.8 5.51-22.4 8.25-3.2 1.87-4.1 3.15-4.5 3.58.4.43 1.3 1.71 4.5 3.58 4.6 2.74 12.5 5.75 22.4 8.25 20 5 48.49 8.25 79.89 8.25h5.7c5.3-2 11.1-3.78 17.6-5.4 20.3-5.08 46.5-8.42 75.8-9.36 1.2-.57 2.3-1.14 3.2-1.7 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zm232 0c-31.4 0-59.9 3.25-79.8 8.25-10 2.5-17.9 5.51-22.5 8.25-3.1 1.87-4.1 3.15-4.5 3.58.4.43 1.4 1.71 4.5 3.58.9.56 2 1.13 3.2 1.7 29.3.94 55.5 4.28 75.8 9.36 6.5 1.62 12.3 3.4 17.6 5.4h5.7c31.4 0 59.9-3.25 79.8-8.25 10-2.5 17.9-5.51 22.5-8.25 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zM33.01 71.44V369.9c0 4.3 1.8 8 6.8 12.3 5 4.3 13.1 8.5 23.3 11.9 15.3 5.1 35 8.5 55.89 9.8V278.3l-16.5 28.6-7.79-4.5c-27.4-15.9-44.3-45.3-44.4-77v-9h52.59c-.6 2.6-.9 5.3-.9 8.1 0 13.1 6.8 24.8 17 31.7v-63.4c-1.9 1.3-3.6 2.7-5.2 4.2l-25.99-45.1 7.8-4.5c7.49-4.2 15.29-7.3 23.39-9.3V87.61c-24.19-1.08-45.99-4.01-63.19-8.32-8.9-2.21-16.5-4.76-22.8-7.85zm445.99 0c-6.3 3.09-14 5.63-22.8 7.84-17.2 4.31-39 7.24-63.2 8.32v50.6c8.1 2 16 5.1 23.4 9.3l7.7 4.5-4.4 7.8-21.5 37.2c-1.6-1.5-3.3-2.9-5.2-4.2v63.4c10.2-6.9 17-18.6 17-31.7 0-2.8-.3-5.5-.9-8.1h50.8v9c0 31.8-17 61.1-44.4 77l-7.8 4.5-14.7-25.5v122.5c20.9-1.3 40.7-4.7 55.9-9.8 10.2-3.4 18.3-7.6 23.3-11.9 5-4.3 6.8-8 6.8-12.3zM256 73c-34.7 0-66.2 3.57-88.3 9.1-11.1 2.77-19.8 6.09-25.1 9.19-4.3 2.58-5.3 4.42-5.5 4.71.2.29 1.2 2.12 5.5 4.7 5.3 3.1 14 6.4 25.1 9.2 22.1 5.5 53.6 9.1 88.3 9.1 34.7 0 66.2-3.6 88.3-9.1 11.1-2.8 19.8-6.1 25.1-9.2 4.3-2.58 5.3-4.41 5.5-4.7-.2-.29-1.2-2.13-5.5-4.71-5.3-3.1-14-6.42-25.1-9.19-22.1-5.53-53.6-9.1-88.3-9.1zm118.9 23c.1.1.1.1.1 0s0-.1-.1 0zm-237.8 0c-.1-.1-.1-.1-.1 0s0 .1.1 0zm-.1 22.1V448c0 5 2.2 9.3 7.9 14.2 5.6 4.8 14.7 9.5 25.9 13.3 22.6 7.5 54 11.5 85.2 11.5 31.2 0 62.6-4 85.2-11.5 11.2-3.8 20.3-8.5 25.9-13.3 5.7-4.9 7.9-9.2 7.9-14.2V118.1c-7.2 3.7-16 6.6-26.3 9.3-24.2 6-56.7 9.6-92.7 9.6s-68.5-3.6-92.7-9.6c-10.3-2.7-19.1-5.6-26.3-9.3zM256 191c16.8 0 33.5 4.4 48.5 13l7.8 4.5-4.5 7.8-24.1 41.6c-7.3-6.7-17-10.9-27.7-10.9s-20.4 4.2-27.7 10.9l-28.6-49.4 7.8-4.5c15-8.7 31.7-13 48.5-13zm0 74c12.8 0 23 10.2 23 23s-10.2 23-23 23-23-10.2-23-23 10.2-23 23-23zm-98 15h57.8c-.5 2.6-.8 5.3-.8 8 0 18.1 12 33.7 28.5 39l-29.2 50.5-7.8-4.5c-30-17.3-48.5-49.4-48.5-84zm138.2 0H352v9c0 34.6-18.5 66.7-48.5 84l-7.8 4.5-28.8-50c17.3-4.8 30.1-20.8 30.1-39.5 0-2.7-.3-5.4-.8-8z"},child:[]}]})(s)}function h5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M288.3 13.4c-12.3-.01-23 6.49-27.3 15.31l-2.9 5.95-6.6-1.01c-5.5-.85-11.3-1.32-17.1-1.32-18.8 0-35.7 4.5-47.3 11.14-11.5 6.64-16.9 14.59-16.9 22 0 7.42 5.4 15.37 16.9 22 11.6 6.64 28.5 11.13 47.3 11.13 7.5-.02 14.9-.74 21.8-2.13l6.3-1.23 3.2 5.46c5.6 9.2 23.7 18.2 44.7 18.2 13.9 0 26.4-3.6 34.8-8.8 8.4-5.2 12.2-11.23 12.2-16.9 0-5.09-3-10.48-10-15.44-6.9-4.97-17.6-8.87-30-9.95l-18.3-1.59 12.5-13.49c4.1-4.41 6.1-9.6 6.1-14.87 0-12.88-12.4-24.46-29.4-24.46zM152.2 65.46C84.8 102.3 39 173.9 39 256c0 32.1 7 62.6 19.54 90 5.95-7.9 10.48-13.4 12.67-16C62.05 307.2 57 282.2 57 256c0-74 40.27-138.5 100.1-172.78-3.1-5.39-4.9-11.34-4.9-17.74v-.02zm210.7 1.75c7.5 6.93 12.5 15.9 12.5 25.99 0 1.14-.1 2.27-.2 3.38C423.7 132.9 455 190.7 455 256c0 23.7-4.2 46.5-11.8 67.6l18.3 2.2c7.4-21.9 11.5-45.4 11.5-69.8 0-80.8-44.4-151.5-110.1-188.79zm58.6 270.49c-11.1.2-23 1.1-35.9 3.1l-.5.1-.5.1c-25.8 7.3-37.1 15.2-46.4 24.7l-2.2 2.2-.3 3.1c-3.4 29.6-5.8 60 0 91.8l1.3 6.8 6.8.6c30.6 2.6 58.7 1.4 86.2 0l1-.1.9-.2c18.5-5.2 34.4-12.8 46.4-24.6l1.7-1.6.6-2.2c10-33.4 3.4-63.8.4-92.7l-.8-7.4-7.3-.7c-16.2-1.5-32.8-3.2-51.4-3zM79.62 348.2c-4.94 6.1-11.43 14.5-18.58 25.6-12.29 18.9-22.53 42.4-20.51 54.9 1.43 8.8 6.97 19.6 14.51 27.6 7.54 7.9 16.69 12.8 24.58 12.8 7.87 0 17.03-4.9 24.58-12.8 7.5-8 13.1-18.8 14.5-27.6 2-12.5-8.2-36-20.5-54.9-7.15-11-13.64-19.5-18.58-25.6zM427 355.7c1.7 0 3.3 0 5 .1 5.4.1 10.7.4 16 .8-5.9 3.4-12.1 6.8-19.5 9.9l-2.4.2c-19.5 1.4-37.7.3-55.4-2 4.7-2 10.5-4 18.3-6.2 13.8-2.2 26.3-2.9 38-2.8zm38 11.6c2.8 22.9 5 44.5-1 66.6-7 6.3-16 11.4-27 15.4 3-22.5 2-44.8-.5-66.6 11.3-5 20.2-10.2 28.5-15.4zm-112.2 13.1c20.7 3.2 42.3 5.4 65.8 4.5 2.5 23 3.5 45.6-.4 67.8-21.5 1-43.1 1.5-65.8-.1-3.5-24-2.2-47.9.4-72.2zm-216.4 34.7c.9 5.5 1 11 .1 16.4-.3 1.6-.6 3.3-1 4.9C170 459.5 211.4 473 256 473c21.6 0 42.5-3.2 62.3-9.1l-2-18.2c-19 6-39.3 9.3-60.3 9.3-44.9 0-86.3-14.8-119.6-39.9z"},child:[]}]})(s)}function z5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M33.125 19.406L135.5 128.22l81-23.157 18.72-5.344-7.564 17.936-46.125 109.78 134.282-70 26.157-13.655L328.436 170 256.5 309.25l91.25-57.125 22.97-14.375-9.22 25.47-34.625 95.624 71-36.375 21.188-10.845L410.906 334l-33.937 93.063 45.124-6.688 4.53-.656 3.313 3.155 64.313 61.47-30.5-80.5 23.313-46.908-72.5 39.532 51.062-141.158-91.188 47.47 72.344-142.813-128.217 82.81L421.875 70.063 239.03 168.69l30.44-99.563-103.845 25.25-132.5-74.97zM18.155 30.78l77.876 108.25-31.124 75.532 94.125-46.78-98.905 166.812 190.25-99.656-101.03 185.406 140.25-79.063-46.94 102.22 106.5-53-45.655 92.28 86.5-14.467 93.47 31.562-63.158-60.344-56.125 8.314-15.53 2.312 5.374-14.75 31.158-85.437-70.907 36.31-21.124 10.814 8.094-22.313 33.47-92.436-97.22 60.875-28.938 18.092L224.22 331l74.06-143.344-131.06 68.313-22.97 12 10.03-23.908 48.626-115.687-67.75 19.375-5.5 1.563-3.875-4.157L18.157 30.78z"},child:[]}]})(s)}function w5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M20.127 52.803v58.986L250.46 245.153c26.367-28.823 70.087-36.533 105.313-16.195 35.29 20.374 50.465 62.207 38.567 99.503l101.648 58.855-64.728-74.65 35.638-37.352-57.27-7.687 84.72-86.92-125.71 33.186 12.995-120.208-66.578 96.363-27.448-80.593-16.353 88.77L20.127 52.803zm0 105.12l-.008.018.007.005v-.02zm0 .022l-.002 87.582 155.344 89.95-89.94 33.287h135.493l-63.658 99.87 116.22-70.083 15.77 85.852 38.543-80.01 63.66 87.018-5.853-87.047 90.54 17.268-102.4-59.198c-26.546 26.964-68.89 33.744-103.183 13.945-34.322-19.816-49.62-59.928-39.49-96.424L20.127 157.945zm316.6 119.442c-.938-.003-1.874.027-2.805.092-12.42.86-24.164 7.707-30.9 19.375-10.78 18.67-4.455 42.27 14.214 53.047 18.67 10.78 42.27 4.455 53.047-14.214 10.78-18.67 4.454-42.27-14.215-53.047-6.125-3.536-12.78-5.23-19.34-5.253z"},child:[]}]})(s)}function I5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 32l-64 96 80 16-16 80 64-96-80-16 16-80zm-96 217c-1.9 0-9.8 3-15.8 6.7-2.8 1.7-5.3 3.5-7.2 4.8v119c1.9 1.3 4.4 3.1 7.2 4.8 6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 5.9-3.7 10.6-7.3 10.6-7.3l2.5-2H201V265h-12.1l-2.5-2s-4.7-3.6-10.6-7.3c-6-3.7-13.9-6.7-15.8-6.7zm192 0c-1.9 0-9.8 3-15.8 6.7-5.9 3.7-10.6 7.3-10.6 7.3l-2.5 2H311v110h12.1l2.5 2s4.7 3.6 10.6 7.3c6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 2.8-1.7 5.3-3.5 7.2-4.8v-119c-1.9-1.3-4.4-3.1-7.2-4.8-6-3.7-13.9-6.7-15.8-6.7zm-133 16v110h14V265h-14zm32 0v110h42V265h-42zM95.5 311c-18.8 0-36.6 9.2-49.94 22.7C32.22 347.1 23 365 23 384v106h18V384c0-13 6.78-27.1 17.32-37.7C68.85 335.8 82.8 329 95.5 329H119v-18H95.5zm297.5 0v18h22.9c13.1 0 27.1 6.8 37.7 17.4C464.2 357 471 371 471 384v106h18V384c0-19-9.2-37-22.7-50.4-13.4-13.4-31.4-22.6-50.4-22.6H393z"},child:[]}]})(s)}function C5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M376 211H256V16L136 301h120v195z"},child:[]}]})(s)}function p5e(s){return te({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M18.36 6.64a9 9 0 1 1-12.73 0"},child:[]},{tag:"line",attr:{x1:"12",y1:"2",x2:"12",y2:"12"},child:[]}]})(s)}function A5e(s){return te({attr:{fill:"none",viewBox:"0 0 24 24",strokeWidth:"2",stroke:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},child:[]}]})(s)}function m5e(s){return te({attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M6 0l-6 8h6l-4 8 14-10h-8l6-6z"},child:[]}]})(s)}const Wve={SET:vSe,WORKING:$c,UNREACH:Jc,LOWBAT:Pc,MAINTAIN:Ej,ERROR:Oj,DIRECTION:fj,CONNECTED:Jc,ACTUAL:j5e,SECOND:y5e,PRESS_LONG:mj,PRESS:Aj,MUTE:pj,ACCURACY:w5e,RADIUS:ESe,ELEVATION:kSe,LATITUDE:SSe,LONGITUDE:OSe,GPS:Cj,ON_ACTUAL:Wc,ON_SET:Wc,OPEN:Ij,STOP:D5e,WATER_ALARM:U0,WASTE_ALARM:R0,PAUSE:fSe,STATE:h5e,BATTERY:Pc,WASTE:R0,WATER:U0,WORK_MODE:$c,MODE:wj,POWER:_Se,BOOST:g5e,HUMIDITY:USe,TEMPERATURE:QSe,BRIGHTNESS:PSe,MOTION:zj,FIRE:$Se,WINDOW:qL,SMOKE:bSe,SWING:T5e,SPEED:d5e,DIMMER:A5e,ON:p5e,COLOR_TEMP:hj,ELECTRIC_POWER:m5e,CURRENT:C5e,VOLTAGE:I5e,CONSUMPTION:L5e,FREQUENCY:z5e,HUE:JSe};class tg extends a.Component{static generateFile(e,t){const i=window.document.createElement("a");i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),i.setAttribute("download",e),i.style.display="none",window.document.body.appendChild(i),i.click(),window.document.body.removeChild(i)}handleFileSelect=e=>{const t=e.target,i=t==null?void 0:t.files;if(!i||!i.length){console.error("No files found. Please report to developers");return}const r=i[0];if(r){const o=new window.FileReader;o.onload=()=>{var M;const n=((M=o.result)==null?void 0:M.toString())||"";try{const c=JSON.parse(n);c.native&&c.common?c.common.name!==this.props.common.name?this.props.onError&&this.props.onError(D.t("ra_otherConfig",c.common.name)):this.props.onLoad&&this.props.onLoad(c.native):this.props.onError&&this.props.onError(D.t("ra_invalidConfig"))}catch(c){this.props.onError&&this.props.onError(c==null?void 0:c.toString())}},o.readAsText(r)}else alert("Failed to open JSON File")};download(){const e={_id:`system.adapter.${this.props.common.name}.${this.props.instance}`,common:JSON.parse(JSON.stringify(this.props.common)),native:this.props.native};e.common.news&&delete e.common.news,e.common.titleLang&&delete e.common.titleLang,e.common.desc&&delete e.common.desc,tg.generateFile(`${e._id}.json`,e)}upload(){const e=window.document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",this.handleFileSelect,!1),e.click()}render(){return a.createElement("div",{className:this.props.className,style:this.props.style},this.props.common.icon?a.createElement(be,{src:this.props.common.icon,style:{padding:8,width:64},alt:"logo"}):null,this.props.common.readme?a.createElement(bt,{size:"small",color:"primary","aria-label":"Help",style:{marginRight:5,marginTop:5,float:"right"},onClick:()=>{const e=window.open(this.props.common.readme,"_blank");e==null||e.focus()}},a.createElement(_j,null)):null,a.createElement(bt,{size:"small",color:"primary","aria-label":"Load config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Load configuration from file"),onClick:()=>this.upload()},a.createElement(dy,null)),a.createElement(bt,{size:"small",color:"primary","aria-label":"Save config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Save configuration to file"),onClick:()=>this.download()},a.createElement(Dy,null)))}}class sg{static text2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static getTitle(e){const t=sg.extractHeader(e);let i=t.body;const r=t.header;if(!r.title){i=i.replace(/{[^}]*}/g,""),i=i.trim();const o=i.replace(/\r/g,"").split(` + V416z M464,400h-72v-80h72V400z`})))}function bve(s){return a.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M258.5 185.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H258.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}))}function qSe(s){return a.createElement("svg",{viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M228.5 205.584h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5H228.5c-2.726 0-5 2.274-5 5s2.274 5 5 5z",fill:"currentColor"}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M232.826 280.905c-.339 3.356-18.813-.782-20.919-1.06l-45.073-5.94-45.074-5.94-14.507-1.912c-1.456-.192-6.201-.055-6.412-2.147-.621-6.157 0-12.699 0-18.878v-43.5-82.076-5.13c0-2.551 5.184-1.015 6.412-.853l35.438 4.67 83.723 11.035c1.457.192 6.201.055 6.412 2.147.169 1.673 0 3.451 0 5.13v144.454c0 6.448 10 6.448 10 0V136.451v-5.13c0-7.619-6.137-10.793-12.673-11.655l-28.531-3.76-88.411-11.652-9.897-1.304c-6.555-.864-12.473 4.9-12.473 11.38v144.832c0 2.023-.071 4.04.132 6.053.717 7.111 6.606 9.563 12.759 10.374l76.827 10.125 39.896 5.259 9.697 1.278c7.063.931 12.011-4.778 12.673-11.346.648-6.415-9.358-6.352-9.999 0z",fill:"currentColor"}))}function KL(s){return a.createElement("svg",{width:361,height:361,viewBox:"0 0 361 361",...s},a.createElement("path",{d:"M267.826 263.303c0 3.91-3.156 7.082-7.05 7.082l-157.885.021c-3.894 0-7.05-3.171-7.05-7.083v-157.5c0-3.911 3.156-7.083 7.05-7.083l157.885-.021c3.894 0 7.05 3.172 7.05 7.083v157.501z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M267.826 103.208c0 2.485-2.711 4.5-6.053 4.5l-159.88.021c-3.342 0-6.052-2.015-6.052-4.5v-9c0-2.485 2.71-4.5 6.052-4.5l159.88-.021c3.342 0 6.053 2.015 6.053 4.5v9zM265.732 265.178c.584 2.887-1.629 5.228-4.942 5.228H103.457c-3.313 0-6.474-2.341-7.058-5.228L75.24 130.633c-.584-2.887 1.628-5.228 4.942-5.228h157.333c3.313 0 6.474 2.34 7.058 5.228l21.159 134.545z",fill:"none",stroke:"currentColor",strokeWidth:10,strokeMiterlimit:10}),a.createElement("path",{d:"M247.194 199.667h6.639c2.726 0 5-2.274 5-5s-2.274-5-5-5h-6.639c-2.726 0-5 2.274-5 5s2.275 5 5 5z",fill:"currentColor"}))}const e5e={"type-Device type":"Device type","type-airCondition":"Air conditioner","type-blind":"Blinds","type-blindButtons":"Blind controlled by buttons","type-button":"Button","type-buttonSensor":"Button with feedback","type-camera":"Camera","type-chart":"Chart","type-cie":"CIE color light","type-ct":"Color temperature","type-dimmer":"Dimmer","type-door":"Door","type-fireAlarm":"Fire alarm","type-floodAlarm":"Flood alarm","type-gate":"Gate","type-hue":"HUE light","type-humidity":"Humidity","type-illuminance":"Illuminance","type-image":"Image","type-info":"Information","type-instance":"Instance","type-light":"Light","type-location":"Position","type-locationOne":"Position as one state","type-lock":"Lock","type-media":"Media-player","type-motion":"Motion sensor","type-percentage":"Percentage","type-rgb":"RGB light","type-rgbSingle":"R,G,B light - single states","type-rgbwSingle":"R,G,B,W light - single states","type-slider":"Slider","type-socket":"Socket","type-temperature":"Temperature","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Vacuum cleaner","type-valve":"Valve","type-volume":"Volume","type-volumeGroup":"Volume group","type-warning":"Warning","type-weatherCurrent":"Current weather","type-weatherForecast":"Weather forecast","type-window":"Window sensor","type-windowTilt":"Window tilt sensor"},t5e={"type-Device type":"Gerätetyp","type-airCondition":"Klimaanlage","type-blind":"Jalousien","type-blindButtons":"Jalousie über Tasten gesteuert","type-button":"Taste","type-buttonSensor":"Taste mit Rückmeldung","type-camera":"Kamera","type-chart":"Diagramm","type-cie":"CIE Farblicht","type-ct":"Farbtemperatur","type-dimmer":"Dimmer","type-door":"Türsensor","type-fireAlarm":"Feueralarm","type-floodAlarm":"Wasseralarm","type-gate":"Tor-Steuerung","type-hue":"HUE-Licht","type-humidity":"Feuchtigkeit","type-illuminance":"Beleuchtungsstärke","type-image":"Bild","type-info":"Information","type-instance":"Instanz","type-light":"Licht","type-location":"Position","type-locationOne":"Position als ein Zustand","type-lock":"Schloss","type-media":"Mediaplayer","type-motion":"Bewegungssensor","type-percentage":"Prozentsatz","type-rgb":"RGB-Licht","type-rgbSingle":"R,G,B-Licht Einzelwerte","type-rgbwSingle":"R,G,B,W-Licht Einzelwerte","type-slider":"Schieberegler","type-socket":"Steckdose","type-temperature":"Temperatur","type-thermostat":"Thermostat","type-url":"URL","type-vacuumCleaner":"Staubsauger","type-valve":"Ventil","type-volume":"Lautstärke","type-volumeGroup":"Lautstärke-Gruppe","type-warning":"Warnung","type-weatherCurrent":"Aktuelle Wetterlage","type-weatherForecast":"Wettervorhersage","type-window":"Fenstersensor","type-windowTilt":"Fensterkippung-Sensor"},s5e={"type-Device type":"Тип устройства","type-airCondition":"Кондиционер","type-blind":"Рольставни/Жалюзи","type-blindButtons":"Жалюзи управляющиеся кнопками","type-button":"Кнопка","type-buttonSensor":"Кнопка с обратной связью","type-camera":"Камера","type-chart":"Диаграмма","type-cie":"CIE свет","type-ct":"Цветовая температура","type-dimmer":"Диммер","type-door":"Датчик положения двери","type-fireAlarm":"Датчик дыма","type-floodAlarm":"Датчик затопления","type-gate":"Ворота","type-hue":"HUE свет","type-humidity":"Влажность","type-illuminance":"Освещенность","type-image":"Изображение","type-info":"Информация","type-instance":"Инстанция","type-light":"Свет","type-location":"Местоположение","type-locationOne":"Позиция в одном состоянии","type-lock":"Замок","type-media":"Медиа-плейер","type-motion":"Датчик движения","type-percentage":"Проценты","type-rgb":"RGB свет","type-rgbSingle":"R,G,B как отдельные значение","type-rgbwSingle":"R,G,B,W как отдельные значение","type-slider":"Ползунок","type-socket":"Розетка","type-temperature":"Температура","type-thermostat":"Термостат","type-url":"URL","type-vacuumCleaner":"Пылесос","type-valve":"Вентиль","type-volume":"Громкость","type-volumeGroup":"Группа громкости","type-warning":"Предупреждение","type-weatherCurrent":"Актуальная погода","type-weatherForecast":"Прогноз погоды","type-window":"Датчик открытия окна","type-windowTilt":"Датчик наклона окна"},i5e={"type-Device type":"Tipo de dispositivo","type-airCondition":"Ar condicionado","type-blind":"persianas","type-blindButtons":"Persiana controlada por botões","type-button":"botão","type-buttonSensor":"Sensor de botão","type-camera":"câmera","type-chart":"Gráfico","type-cie":"Luz colorida CIE","type-ct":"Temperatura de cor","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"alarme de incêndio","type-floodAlarm":"alarme de inundação","type-gate":"portão","type-hue":"Luz HUE","type-humidity":"umidade","type-illuminance":"Iluminância","type-image":"imagem","type-info":"informação","type-instance":"exemplo","type-light":"luz","type-location":"localização","type-locationOne":"Posição como um estado","type-lock":"trancar","type-media":"mídia","type-motion":"movimento","type-percentage":"Percentagem","type-rgb":"Luz RGB","type-rgbSingle":"Luz RGB única","type-rgbwSingle":"RGBW como valor único","type-slider":"controle deslizante","type-socket":"soquete","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirador de pó","type-valve":"válvula","type-volume":"volume","type-volumeGroup":"grupo de volume","type-warning":"aviso","type-weatherCurrent":"clima atual","type-weatherForecast":"previsão do tempo","type-window":"janela","type-windowTilt":"inclinação da janela"},r5e={"type-Device type":"Typ urządzenia","type-airCondition":"Klimatyzator","type-blind":"żaluzje","type-blindButtons":"Roleta sterowana przyciskami","type-button":"przycisk","type-buttonSensor":"Czujnik przycisku","type-camera":"kamera","type-chart":"Wykres","type-cie":"Światło kolorowe CIE","type-ct":"Temperatura barwowa","type-dimmer":"opornik","type-door":"drzwi","type-fireAlarm":"alarm pożarowy","type-floodAlarm":"alarm przeciwpowodziowy","type-gate":"brama","type-hue":"Światło HUE","type-humidity":"wilgotność","type-illuminance":"Natężenie oświetlenia","type-image":"obraz","type-info":"Informacje","type-instance":"przykład","type-light":"światło","type-location":"lokalizacja","type-locationOne":"Pozycja jako państwa","type-lock":"zamek","type-media":"głoska bezdźwięczna","type-motion":"ruch","type-percentage":"Procent","type-rgb":"Światło RGB","type-rgbSingle":"Pojedyncze światło RGB","type-rgbwSingle":"RGBW jako pojedyncza wartość","type-slider":"suwak","type-socket":"gniazdo","type-temperature":"temperatura","type-thermostat":"termostat","type-url":"Adres URL","type-vacuumCleaner":"Odkurzacz","type-valve":"zawór","type-volume":"tom","type-volumeGroup":"grupa woluminów","type-warning":"ostrzeżenie","type-weatherCurrent":"aktualna pogoda","type-weatherForecast":"prognoza pogody","type-window":"okno","type-windowTilt":"pochylenie okna"},o5e={"type-Device type":"Type d'appareil","type-airCondition":"Climatiseur","type-blind":"stores","type-blindButtons":"Store commandé par boutons","type-button":"bouton","type-buttonSensor":"Capteur de bouton","type-camera":"caméra","type-chart":"Graphique","type-cie":"lumière colorée CIE","type-ct":"Température de couleur","type-dimmer":"variateur","type-door":"porte","type-fireAlarm":"alarme incendie","type-floodAlarm":"alarme d'inondation","type-gate":"grille","type-hue":"Lumière HUE","type-humidity":"humidité","type-illuminance":"Éclairement","type-image":"image","type-info":"informations","type-instance":"exemple","type-light":"lumière","type-location":"emplacement","type-locationOne":"Position en tant qu'État","type-lock":"verrouillage","type-media":"médias","type-motion":"mouvement","type-percentage":"Pourcentage","type-rgb":"lumière RVB","type-rgbSingle":"Lumière RVB simple","type-rgbwSingle":"RGBW comme valeur unique","type-slider":"curseur","type-socket":"douille","type-temperature":"température","type-thermostat":"thermostat","type-url":"URL","type-vacuumCleaner":"Aspirateur","type-valve":"soupape","type-volume":"volume","type-volumeGroup":"groupe de volumes","type-warning":"avertissement","type-weatherCurrent":"météo actuelle","type-weatherForecast":"prévisions météorologiques","type-window":"fenêtre","type-windowTilt":"inclinaison de la fenêtre"},n5e={"type-Device type":"Tipo di dispositivo","type-airCondition":"Condizionatore d'aria","type-blind":"tende","type-blindButtons":"Tenda controllata da pulsanti","type-button":"pulsante","type-buttonSensor":"Sensore del pulsante","type-camera":"telecamera","type-chart":"Grafico","type-cie":"Luce colorata CIE","type-ct":"Temperatura del colore","type-dimmer":"dimmer","type-door":"porta","type-fireAlarm":"allarme antincendio","type-floodAlarm":"allarme allagamento","type-gate":"cancello","type-hue":"Luce HUE","type-humidity":"umidità","type-illuminance":"Illuminamento","type-image":"immagine","type-info":"informazioni","type-instance":"esempio","type-light":"leggero","type-location":"posizione","type-locationOne":"Posizione come stato","type-lock":"serratura","type-media":"media","type-motion":"movimento","type-percentage":"Percentuale","type-rgb":"luce RGB","type-rgbSingle":"Luce RGB singola","type-rgbwSingle":"RGBW come valore singolo","type-slider":"cursore","type-socket":"PRESA","type-temperature":"temperatura","type-thermostat":"termostato","type-url":"URL","type-vacuumCleaner":"Aspirapolvere","type-valve":"valvola","type-volume":"volume","type-volumeGroup":"gruppo di volumi","type-warning":"avvertimento","type-weatherCurrent":"meteo attuale","type-weatherForecast":"previsioni del tempo","type-window":"finestra","type-windowTilt":"inclinazione della finestra"},a5e={"type-Device type":"Apparaattype","type-airCondition":"Airconditioner","type-blind":"jaloezieën","type-blindButtons":"Jaloezie bediend door knoppen","type-button":"knop","type-buttonSensor":"Knopsensor","type-camera":"camera","type-chart":"Grafiek","type-cie":"CIE-kleurenlicht","type-ct":"Kleurtemperatuur","type-dimmer":"dimmer","type-door":"deur","type-fireAlarm":"brandalarm","type-floodAlarm":"overstromingsalarm","type-gate":"hek","type-hue":"HUE-licht","type-humidity":"vochtigheid","type-illuminance":"Verlichtingssterkte","type-image":"afbeelding","type-info":"informatie","type-instance":"aanleg","type-light":"licht","type-location":"locatie","type-locationOne":"Positie als staat","type-lock":"slot","type-media":"media","type-motion":"beweging","type-percentage":"Percentage","type-rgb":"RGB-licht","type-rgbSingle":"RGB-licht enkel","type-rgbwSingle":"RGBW als enkele waarde","type-slider":"schuifregelaar","type-socket":"stopcontact","type-temperature":"temperatuur","type-thermostat":"thermostaat","type-url":"URL","type-vacuumCleaner":"Stofzuiger","type-valve":"ventiel","type-volume":"volume","type-volumeGroup":"volumegroep","type-warning":"waarschuwing","type-weatherCurrent":"huidige weersomstandigheden","type-weatherForecast":"weersvoorspelling","type-window":"raam","type-windowTilt":"raamkanteling"},M5e={"type-Device type":"Тип пристрою","type-airCondition":"Кондиціонер","type-blind":"жалюзі","type-blindButtons":"Штора керується кнопками","type-button":"кнопку","type-buttonSensor":"Датчик кнопки","type-camera":"камера","type-chart":"Діаграма","type-cie":"Кольорове світло CIE","type-ct":"Колірна температура","type-dimmer":"диммер","type-door":"двері","type-fireAlarm":"пожежна сигналізація","type-floodAlarm":"сигналізація про повінь","type-gate":"ворота","type-hue":"світло HUE","type-humidity":"вологість","type-illuminance":"Освітленість","type-image":"зображення","type-info":"інформація","type-instance":"екземпляр","type-light":"світло","type-location":"розташування","type-locationOne":"Позиція як держави","type-lock":"замок","type-media":"ЗМІ","type-motion":"руху","type-percentage":"Відсоток","type-rgb":"RGB світло","type-rgbSingle":"Одиночне світло RGB","type-rgbwSingle":"RGBW як одне значення","type-slider":"повзунок","type-socket":"гніздо","type-temperature":"температура","type-thermostat":"термостат","type-url":"URL","type-vacuumCleaner":"Пилосос","type-valve":"клапан","type-volume":"обсяг","type-volumeGroup":"група обсягів","type-warning":"УВАГА","type-weatherCurrent":"поточна погода","type-weatherForecast":"прогноз погоди","type-window":"вікно","type-windowTilt":"нахил вікна"},c5e={"type-Device type":"设备类型","type-airCondition":"空调","type-blind":"百叶窗","type-blindButtons":"按钮控制百叶窗","type-button":"按钮","type-buttonSensor":"按钮传感器","type-camera":"相机","type-chart":"图表","type-cie":"CIE色光","type-ct":"色温","type-dimmer":"调光器","type-door":"门","type-fireAlarm":"火灾报警","type-floodAlarm":"洪水警报","type-gate":"门","type-hue":"色调灯","type-humidity":"湿度","type-illuminance":"照度","type-image":"图像","type-info":"信息","type-instance":"实例","type-light":"光","type-location":"地点","type-locationOne":"作为一个国家的地位","type-lock":"锁","type-media":"媒体","type-motion":"运动","type-percentage":"百分比","type-rgb":"RGB灯","type-rgbSingle":"RGB灯单","type-rgbwSingle":"RGBW 作为单一值","type-slider":"滑块","type-socket":"插座","type-temperature":"温度","type-thermostat":"恒温器","type-url":"网址","type-vacuumCleaner":"吸尘器","type-valve":"阀门","type-volume":"体积","type-volumeGroup":"卷组","type-warning":"警告","type-weatherCurrent":"当前天气","type-weatherForecast":"天气预报","type-window":"窗户","type-windowTilt":"窗户倾斜"};let P0=!1;function qL(){P0||(P0=!0,D.extendTranslations({en:e5e,de:t5e,ru:s5e,pt:i5e,pl:r5e,fr:o5e,it:n5e,nl:a5e,uk:M5e,"zh-cn":c5e}))}const W0={[G.Types.airCondition]:Dj,[G.Types.blind]:$0,[G.Types.blindButtons]:$0,[G.Types.button]:VSe,[G.Types.buttonSensor]:$Se,[G.Types.camera]:kSe,[G.Types.chart]:ESe,[G.Types.image]:Tj,[G.Types.dimmer]:yj,[G.Types.door]:RSe,[G.Types.fireAlarm]:b0,"sensor.alarm.fire":b0,[G.Types.floodAlarm]:U0,"sensor.alarm.flood":U0,[G.Types.gate]:FSe,[G.Types.humidity]:GSe,[G.Types.illuminance]:WSe,[G.Types.info]:jj,[G.Types.light]:gj,[G.Types.lock]:Lj,[G.Types.location]:Nj,[G.Types.locationOne]:lj,[G.Types.media]:uj,[G.Types.motion]:HSe,[G.Types.ct]:bc,[G.Types.percentage]:Qc,[G.Types.rgb]:Un,[G.Types.rgbSingle]:Un,[G.Types.rgbwSingle]:JSe,[G.Types.hue]:bc,[G.Types.cie]:Un,[G.Types.slider]:Qc,[G.Types.socket]:ZSe,[G.Types.temperature]:XSe,[G.Types.thermostat]:KSe,[G.Types.vacuumCleaner]:BSe,[G.Types.volume]:cj,[G.Types.volumeGroup]:Mj,[G.Types.window]:qSe,[G.Types.windowTilt]:KL,[G.Types.weatherCurrent]:Y0,[G.Types.weatherForecast]:Y0,[G.Types.warning]:Yc,[G.Types.unknown]:aj,[G.Types.instance]:nj,invalid:Yc,hub3:oj,node:rj,hub5:ij,controller:sj},qr={width:32,height:32};function u5e(s){const[e,t]=a.useState(!1);if(Ce(()=>{s.title&&!e&&(qL(),t(!0))},[s.title,e]),!e&&s.title)return a.createElement(J,{style:{...qr,...s.style||void 0},className:s.className,sx:s.sx});const i=s.type||(s.src?Object.keys(W0).find(n=>s.src===n):void 0);if(!i&&s.src)return a.createElement(be,{style:qr,...s,title:s.title===!0?void 0:s.title,src:s.src});const r=i&&W0[i];if(!r)return i?a.createElement("span",{style:{...qr,...s.style||void 0}},i[0].toUpperCase()):null;const o=a.createElement(r,{style:{...qr,...s.style||void 0},onClick:s.onClick,className:s.className,sx:s.sx});return s.title?a.createElement(Le,{slotProps:{popper:{sx:{pointerEvents:"none"}}},title:s.title===!0?D.t(`type-${i}`):s.title},a.createElement("div",{style:{display:"flex"}},o)):o}const Ht={itemChildrenWrapper:{display:"flex",width:"100%",justifyContent:"space-between"},type:{marginTop:10},selectIcon:{paddingRight:8,verticalAlign:"middle",width:20,height:20},selectText:{verticalAlign:"middle"},iconWrapper:{display:"flex",alignItems:"center"},iconStyle:{width:16,height:16,margin:"0 3px"},emptyIcon:{width:16,height:16,margin:"0 3px"}};function Uve(s){const[e,t]=a.useState({}),[i,r]=a.useState([]);return Ce(()=>{const o={};Object.keys(G.Types).filter(M=>{var c,l;return(!s.supportedDevices||((c=s.supportedDevices)==null?void 0:c.includes(M)))&&!((l=s.unsupportedDevices)!=null&&l.includes(M))}).forEach(M=>o[M]=D.t(`type-${G.Types[M]}`));const n=Object.keys(o);n.sort((M,c)=>o[M]===o[c]?0:o[M].localeCompare(o[c],"de")),qL(),r(n),t(o)},[s.supportedDevices,s.unsupportedDevices]),i?a.createElement(Qt,{style:{...Ht.type,...s.style},sx:s.sx,variant:"standard",error:!!s.error},a.createElement(yi,null,s.label||D.t("type-Device type")),a.createElement(nt,{variant:"standard",disabled:!!s.disabled,value:s.value,onChange:o=>s.onChange(o.target.value)},i.map(o=>{var n;return a.createElement(re,{key:G.Types[o],value:G.Types[o]},a.createElement("div",{style:Ht.itemChildrenWrapper},a.createElement("div",null,a.createElement(u5e,{type:G.Types[o],style:{...Ht.selectIcon,color:s.themeType==="dark"?"#FFFFFF":"#000"}}),a.createElement("span",{style:Ht.selectText},e[o])),(n=s.showApplications)!=null&&n.TYPE_OPTIONS[o]?a.createElement("div",{style:Ht.iconWrapper},Object.keys(s.showApplications.TYPE_OPTIONS[o]).map(M=>s.showApplications.TYPE_OPTIONS[o][M]?a.createElement(be,{key:M,style:Ht.iconStyle,src:s.showApplications.ICONS_TYPE[M]}):a.createElement("div",{key:M,style:Ht.emptyIcon}))):null))}))):a.createElement(J,{style:{...Ht.type,...s.style},sx:s.sx})}function l5e(s){return te({attr:{version:"1",viewBox:"0 0 48 48",enableBackground:"new 0 0 48 48"},child:[{tag:"circle",attr:{fill:"#B2EBF2",cx:"32",cy:"24",r:"9"},child:[]},{tag:"path",attr:{fill:"#4DD0E1",d:"M32,12c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C44,17.4,38.6,12,32,12z M32,32 c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S36.4,32,32,32z"},child:[]},{tag:"g",attr:{fill:"#3F51B5"},child:[{tag:"polygon",attr:{points:"25.4,22 19.8,5.1 13.6,27.7 11.4,22 4,22 4,26 8.6,26 14.4,40.3 20.2,18.9 22.6,26 30,26 30,22"},child:[]},{tag:"circle",attr:{cx:"32",cy:"24",r:"4"},child:[]}]}]})(s)}function N5e(s){return te({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M4.428 2.727l3.335 3.335c-.486.07-.903.276-1.32.624L.886 12.383c-1.181 1.18-1.181 3.194 0 4.375a2.41 2.41 0 0 0 1.598.834l17.088 3.681-3.335-3.333c.486-.07.903-.278 1.32-.626l5.557-5.695c1.181-1.181 1.181-3.196 0-4.377a2.411 2.411 0 0 0-1.598-.833zM11.653 6.2c.694 0 1.25.486 1.25 1.18 0 .695-.486 1.251-1.181 1.251-.695 0-1.25-.485-1.25-1.18s.555-1.251 1.18-1.251zm1.51 3.792c.049-.006.088.046.088.098-.139.694-.695 1.181-1.39 1.181-.694 0-1.32-.487-1.46-1.112 0 0 .002-.07.071 0 .487.278.972.348 1.32.278.346 0 .833-.07 1.32-.416a.092.092 0 0 1 .05-.029zm.723 2.511c.058.013.06.106.06.158-.209.903-.973 1.666-1.946 1.666a2.167 2.167 0 0 1-2.084-1.528c-.07-.07 0-.138.138-.138.695.347 1.39.416 1.877.416.486 0 1.18-.14 1.875-.556.035-.017.06-.022.08-.018zm.597 3.018c.049-.013.087.09.087.195-.278 1.181-1.25 2.085-2.5 2.155-1.251 0-2.293-.835-2.57-1.946 0-.139.068-.278.207-.209.834.486 1.737.556 2.362.556s1.529-.208 2.362-.694c.018-.035.036-.053.052-.057z"},child:[]}]})(s)}function L5e(s){return te({attr:{version:"1.2",baseProfile:"tiny",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13 5l.855 3.42 3.389-.971 1.501 2.6-2.535 2.449 2.535 2.451-1.5 2.6-3.39-.971-.855 3.422h-3l-.855-3.422-3.39.971-1.501-2.6 2.535-2.451-2.534-2.449 1.5-2.6 3.39.971.855-3.42h3m0-2h-3c-.918 0-1.718.625-1.939 1.516l-.354 1.412-1.4-.4c-.184-.053-.369-.078-.552-.078-.7 0-1.368.37-1.731 1l-1.5 2.6c-.459.796-.317 1.802.342 2.438l1.047 1.011-1.048 1.015c-.66.637-.802 1.643-.343 2.438l1.502 2.6c.363.631 1.031 1 1.731 1 .183 0 .368-.025.552-.076l1.399-.401.354 1.415c.222.885 1.022 1.51 1.94 1.51h3c.918 0 1.718-.625 1.939-1.516l.354-1.414 1.399.4c.184.053.369.077.552.077.7 0 1.368-.37 1.731-1l1.5-2.6c.459-.796.317-1.8-.342-2.438l-1.047-1.013 1.047-1.013c.66-.637.801-1.644.342-2.438l-1.5-2.6c-.365-.631-1.031-1-1.732-1-.184 0-.368.025-.551.076l-1.4.401-.354-1.413c-.22-.884-1.02-1.509-1.938-1.509zM11.5 10.5c1.104 0 2 .895 2 2 0 1.104-.896 2-2 2s-2-.896-2-2c0-1.105.896-2 2-2m0-1c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3z"},child:[]}]})(s)}function g5e(s){return te({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M7.707 17.707 13.414 12 7.707 6.293 6.293 7.707 10.586 12l-4.293 4.293zM15 6h2v12h-2z"},child:[]}]})(s)}function j5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M327.467 19.992c.748 14.94 2.317 51.268 2.59 98.76 3.474-.286 6.557-.381 9.72 1.08 18.04 8.345 27.243 29.326 27.026 50.506-.217 21.18-11.283 44.136-36.104 54.307a41.62 41.62 0 0 1-2.486.923c-3.408 80.504-12.307 166.37-33.754 225.5-6.876 15.831-17.029 29.217-26.828 40.94l55.27.422c20.676-12.19 32.041-27.395 36.32-46.407l17.558 3.954c-3.67 16.312-11.99 30.662-24.511 42.677l143.052 1.094c-5.13-14.524-16.16-46.501-20.357-70.217C451.89 293.171 450.15 45 450.025 19.992zM18.279 38.984l.881 18.725c17.856 12.047 32.035 23.91 45.969 35.527 12.887-11.156 2.404-29.725-5.82-39.091-13.668-5.346-27.335-10.467-41.03-15.16zM86.723 65.13c4.77 14.56 3.347 29.656-7.477 39.746 24.105 19.479 50.832 38.151 97.1 55.635 13.836-22.588 12.08-43.852-3.338-60.739-29.03-10.9-57.703-22.997-86.285-34.642zm-31.721 42.988V400h17.996V122.723c-6.187-4.856-12.114-9.73-17.996-14.606zm145.264 1.434c3.253 8.283 4.54 16.754 3.982 25.043-.765 11.35-4.673 22.135-10.545 32.095 16.926 5.691 36.192 11.248 58.451 16.655l2.604.633 1.834 1.953c9.223 9.826 22.535 17.206 35.469 21.006 12.933 3.8 25.473 3.655 31.814 1.056 18.024-7.385 24.773-22.363 24.932-37.84.152-14.822-7.069-28.554-15.479-33.306-45.88-1.699-89.948-12.607-133.062-27.295zm-33.264 66.476V400h17.996V182.605a502.784 502.784 0 0 1-17.996-6.578zM32 419.002v17.996h176v-17.996z"},child:[]}]})(s)}function y5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.7 21.04l-194.4.41L21.04 159.3l.41 194.4L159.3 491l194.4-.4L491 352.7l-.4-194.4L352.7 21.04zm-8 19.66l126.2 125.7.4 178.3-123.1 123.6-2.6 2.6-178.3.4L41.08 345.6l-.38-178.3L166.4 41.08l178.3-.38zm-7.5 18.01l-163.3.34L58.71 174.8l.34 163.3L174.8 453.3l163.3-.3 115.2-115.8-.3-163.3L337.2 58.71zM108.4 210.4c5.3 0 10.8.5 16.4 1.3 5.7.8 11.5 2 17.5 3.6v20.5c-5.3-2.4-10.5-4.2-15.6-5.4-5.1-1.2-9.9-1.8-14.4-1.8-6 0-10.4.8-13.25 2.5-2.87 1.6-4.3 4.2-4.3 7.7 0 2.6.96 4.6 2.87 6.1 1.95 1.4 5.48 2.7 10.58 3.7l10.6 2.1c10.8 2.2 18.5 5.5 23.1 9.9 4.5 4.5 6.8 10.8 6.8 18.9 0 10.7-3.2 18.7-9.5 24-6.4 5.2-16.1 7.8-29.2 7.8-6.1 0-12.3-.6-18.51-1.8-6.2-1.1-12.41-2.9-18.61-5.2v-21.1c6.2 3.3 12.19 5.8 17.96 7.5 5.82 1.6 11.46 2.4 16.76 2.4 5.5 0 9.7-.9 12.6-2.7 2.9-1.8 4.4-4.4 4.4-7.8 0-3.1-1-5.4-3-7.1-2-1.6-5.9-3.1-11.8-4.4l-9.7-2.1c-9.73-2.1-16.85-5.4-21.37-10-4.47-4.5-6.7-10.7-6.7-18.4 0-9.7 3.12-17.1 9.37-22.3 6.25-5.3 15.24-7.9 27-7.9zm187.7 0c15.6 0 27.8 4.5 36.7 13.5 8.9 8.9 13.3 21.2 13.3 37 0 15.7-4.4 28-13.3 37-8.9 8.9-21.1 13.4-36.7 13.4-15.6 0-27.8-4.5-36.7-13.4-8.9-9-13.3-21.3-13.3-37 0-15.8 4.4-28.1 13.3-37 8.9-9 21.1-13.5 36.7-13.5zm-141.9 1.8h89.6v18.9h-32.2v78.3h-25.1v-78.3h-32.3v-18.9zm205.8 0h41.6c12.3 0 21.8 2.8 28.4 8.3 6.7 5.4 10 13.2 10 23.4s-3.3 18.1-10 23.6c-6.6 5.4-16.1 8.2-28.4 8.2H385v33.7h-25v-97.2zm-63.9 16.4c-7.7 0-13.6 2.8-17.8 8.5-4.2 5.6-6.3 13.6-6.3 23.8 0 10.2 2.1 18.1 6.3 23.8 4.2 5.6 10.1 8.4 17.8 8.4 7.7 0 13.6-2.8 17.8-8.4 4.2-5.7 6.3-13.6 6.3-23.8 0-10.2-2.1-18.2-6.3-23.8-4.2-5.7-10.1-8.5-17.8-8.5zm88.9 1.8v27.1h13.9c4.9 0 8.6-1.2 11.3-3.5 2.6-2.4 3.9-5.8 3.9-10.1s-1.3-7.7-3.9-10c-2.7-2.4-6.4-3.5-11.3-3.5H385z"},child:[]}]})(s)}function T5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 54.28c-124.603 0-226 101.398-226 226 0 47.864 14.975 92.293 40.465 128.876l29.79-19.86c-17.188-24.545-28.708-53.362-32.696-84.577H96v-18H66.115c-.07-2.14-.115-4.284-.115-6.44 0-45.378 15.816-86.97 42.236-119.598l17.4 17.4 12.727-12.727-18.133-18.132C152.735 114.057 197.335 92.8 247 90.498v29.22h18V90.5c49.665 2.302 94.265 23.56 126.77 56.725l-18.133 18.132 12.726 12.727 17.4-17.4c26.42 32.63 42.237 74.22 42.237 119.6 0 2.154-.044 4.3-.115 6.437H416v18h28.44c-3.987 31.214-15.507 60.03-32.694 84.575l29.79 19.86C467.025 372.574 482 328.146 482 280.282c0-124.602-101.397-226-226-226zm15.83 66.23a144 160 0 0 1 74.608 100.062l49.966-17.568a160 160 0 0 0-4.3-7.012l-5.135 5.153-30.368-30.29-5.76-5.746 7.85-7.874a160 160 0 0 0-86.862-36.726zm156.15 89.844l-175.332 60.6C240.505 272.618 231 283.155 231 295.72c0 13.7 11.3 25 25 25 6.77 0 12.95-2.764 17.473-7.208L427.98 210.354zm-16.513 32.322l-60.713 40.72a144 160 0 0 1-56.6 108.323h76.057a160 160 0 0 0 39.763-68.572H398.48v-52.515h17.022a160 160 0 0 0-4.035-27.957zM128 421.72v36h256v-36H128z"},child:[]}]})(s)}function J0(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M140 29.92c-31.4 0-59.89 3.25-79.89 8.25-9.9 2.5-17.8 5.51-22.4 8.25-3.2 1.87-4.1 3.15-4.5 3.58.4.43 1.3 1.71 4.5 3.58 4.6 2.74 12.5 5.75 22.4 8.25 20 5 48.49 8.25 79.89 8.25h5.7c5.3-2 11.1-3.78 17.6-5.4 20.3-5.08 46.5-8.42 75.8-9.36 1.2-.57 2.3-1.14 3.2-1.7 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zm232 0c-31.4 0-59.9 3.25-79.8 8.25-10 2.5-17.9 5.51-22.5 8.25-3.1 1.87-4.1 3.15-4.5 3.58.4.43 1.4 1.71 4.5 3.58.9.56 2 1.13 3.2 1.7 29.3.94 55.5 4.28 75.8 9.36 6.5 1.62 12.3 3.4 17.6 5.4h5.7c31.4 0 59.9-3.25 79.8-8.25 10-2.5 17.9-5.51 22.5-8.25 3.1-1.87 4.1-3.15 4.5-3.58-.4-.43-1.4-1.71-4.5-3.58-4.6-2.74-12.5-5.75-22.5-8.25-19.9-5-48.4-8.25-79.8-8.25zM33.01 71.44V369.9c0 4.3 1.8 8 6.8 12.3 5 4.3 13.1 8.5 23.3 11.9 15.3 5.1 35 8.5 55.89 9.8V278.3l-16.5 28.6-7.79-4.5c-27.4-15.9-44.3-45.3-44.4-77v-9h52.59c-.6 2.6-.9 5.3-.9 8.1 0 13.1 6.8 24.8 17 31.7v-63.4c-1.9 1.3-3.6 2.7-5.2 4.2l-25.99-45.1 7.8-4.5c7.49-4.2 15.29-7.3 23.39-9.3V87.61c-24.19-1.08-45.99-4.01-63.19-8.32-8.9-2.21-16.5-4.76-22.8-7.85zm445.99 0c-6.3 3.09-14 5.63-22.8 7.84-17.2 4.31-39 7.24-63.2 8.32v50.6c8.1 2 16 5.1 23.4 9.3l7.7 4.5-4.4 7.8-21.5 37.2c-1.6-1.5-3.3-2.9-5.2-4.2v63.4c10.2-6.9 17-18.6 17-31.7 0-2.8-.3-5.5-.9-8.1h50.8v9c0 31.8-17 61.1-44.4 77l-7.8 4.5-14.7-25.5v122.5c20.9-1.3 40.7-4.7 55.9-9.8 10.2-3.4 18.3-7.6 23.3-11.9 5-4.3 6.8-8 6.8-12.3zM256 73c-34.7 0-66.2 3.57-88.3 9.1-11.1 2.77-19.8 6.09-25.1 9.19-4.3 2.58-5.3 4.42-5.5 4.71.2.29 1.2 2.12 5.5 4.7 5.3 3.1 14 6.4 25.1 9.2 22.1 5.5 53.6 9.1 88.3 9.1 34.7 0 66.2-3.6 88.3-9.1 11.1-2.8 19.8-6.1 25.1-9.2 4.3-2.58 5.3-4.41 5.5-4.7-.2-.29-1.2-2.13-5.5-4.71-5.3-3.1-14-6.42-25.1-9.19-22.1-5.53-53.6-9.1-88.3-9.1zm118.9 23c.1.1.1.1.1 0s0-.1-.1 0zm-237.8 0c-.1-.1-.1-.1-.1 0s0 .1.1 0zm-.1 22.1V448c0 5 2.2 9.3 7.9 14.2 5.6 4.8 14.7 9.5 25.9 13.3 22.6 7.5 54 11.5 85.2 11.5 31.2 0 62.6-4 85.2-11.5 11.2-3.8 20.3-8.5 25.9-13.3 5.7-4.9 7.9-9.2 7.9-14.2V118.1c-7.2 3.7-16 6.6-26.3 9.3-24.2 6-56.7 9.6-92.7 9.6s-68.5-3.6-92.7-9.6c-10.3-2.7-19.1-5.6-26.3-9.3zM256 191c16.8 0 33.5 4.4 48.5 13l7.8 4.5-4.5 7.8-24.1 41.6c-7.3-6.7-17-10.9-27.7-10.9s-20.4 4.2-27.7 10.9l-28.6-49.4 7.8-4.5c15-8.7 31.7-13 48.5-13zm0 74c12.8 0 23 10.2 23 23s-10.2 23-23 23-23-10.2-23-23 10.2-23 23-23zm-98 15h57.8c-.5 2.6-.8 5.3-.8 8 0 18.1 12 33.7 28.5 39l-29.2 50.5-7.8-4.5c-30-17.3-48.5-49.4-48.5-84zm138.2 0H352v9c0 34.6-18.5 66.7-48.5 84l-7.8 4.5-28.8-50c17.3-4.8 30.1-20.8 30.1-39.5 0-2.7-.3-5.4-.8-8z"},child:[]}]})(s)}function D5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M288.3 13.4c-12.3-.01-23 6.49-27.3 15.31l-2.9 5.95-6.6-1.01c-5.5-.85-11.3-1.32-17.1-1.32-18.8 0-35.7 4.5-47.3 11.14-11.5 6.64-16.9 14.59-16.9 22 0 7.42 5.4 15.37 16.9 22 11.6 6.64 28.5 11.13 47.3 11.13 7.5-.02 14.9-.74 21.8-2.13l6.3-1.23 3.2 5.46c5.6 9.2 23.7 18.2 44.7 18.2 13.9 0 26.4-3.6 34.8-8.8 8.4-5.2 12.2-11.23 12.2-16.9 0-5.09-3-10.48-10-15.44-6.9-4.97-17.6-8.87-30-9.95l-18.3-1.59 12.5-13.49c4.1-4.41 6.1-9.6 6.1-14.87 0-12.88-12.4-24.46-29.4-24.46zM152.2 65.46C84.8 102.3 39 173.9 39 256c0 32.1 7 62.6 19.54 90 5.95-7.9 10.48-13.4 12.67-16C62.05 307.2 57 282.2 57 256c0-74 40.27-138.5 100.1-172.78-3.1-5.39-4.9-11.34-4.9-17.74v-.02zm210.7 1.75c7.5 6.93 12.5 15.9 12.5 25.99 0 1.14-.1 2.27-.2 3.38C423.7 132.9 455 190.7 455 256c0 23.7-4.2 46.5-11.8 67.6l18.3 2.2c7.4-21.9 11.5-45.4 11.5-69.8 0-80.8-44.4-151.5-110.1-188.79zm58.6 270.49c-11.1.2-23 1.1-35.9 3.1l-.5.1-.5.1c-25.8 7.3-37.1 15.2-46.4 24.7l-2.2 2.2-.3 3.1c-3.4 29.6-5.8 60 0 91.8l1.3 6.8 6.8.6c30.6 2.6 58.7 1.4 86.2 0l1-.1.9-.2c18.5-5.2 34.4-12.8 46.4-24.6l1.7-1.6.6-2.2c10-33.4 3.4-63.8.4-92.7l-.8-7.4-7.3-.7c-16.2-1.5-32.8-3.2-51.4-3zM79.62 348.2c-4.94 6.1-11.43 14.5-18.58 25.6-12.29 18.9-22.53 42.4-20.51 54.9 1.43 8.8 6.97 19.6 14.51 27.6 7.54 7.9 16.69 12.8 24.58 12.8 7.87 0 17.03-4.9 24.58-12.8 7.5-8 13.1-18.8 14.5-27.6 2-12.5-8.2-36-20.5-54.9-7.15-11-13.64-19.5-18.58-25.6zM427 355.7c1.7 0 3.3 0 5 .1 5.4.1 10.7.4 16 .8-5.9 3.4-12.1 6.8-19.5 9.9l-2.4.2c-19.5 1.4-37.7.3-55.4-2 4.7-2 10.5-4 18.3-6.2 13.8-2.2 26.3-2.9 38-2.8zm38 11.6c2.8 22.9 5 44.5-1 66.6-7 6.3-16 11.4-27 15.4 3-22.5 2-44.8-.5-66.6 11.3-5 20.2-10.2 28.5-15.4zm-112.2 13.1c20.7 3.2 42.3 5.4 65.8 4.5 2.5 23 3.5 45.6-.4 67.8-21.5 1-43.1 1.5-65.8-.1-3.5-24-2.2-47.9.4-72.2zm-216.4 34.7c.9 5.5 1 11 .1 16.4-.3 1.6-.6 3.3-1 4.9C170 459.5 211.4 473 256 473c21.6 0 42.5-3.2 62.3-9.1l-2-18.2c-19 6-39.3 9.3-60.3 9.3-44.9 0-86.3-14.8-119.6-39.9z"},child:[]}]})(s)}function d5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M33.125 19.406L135.5 128.22l81-23.157 18.72-5.344-7.564 17.936-46.125 109.78 134.282-70 26.157-13.655L328.436 170 256.5 309.25l91.25-57.125 22.97-14.375-9.22 25.47-34.625 95.624 71-36.375 21.188-10.845L410.906 334l-33.937 93.063 45.124-6.688 4.53-.656 3.313 3.155 64.313 61.47-30.5-80.5 23.313-46.908-72.5 39.532 51.062-141.158-91.188 47.47 72.344-142.813-128.217 82.81L421.875 70.063 239.03 168.69l30.44-99.563-103.845 25.25-132.5-74.97zM18.155 30.78l77.876 108.25-31.124 75.532 94.125-46.78-98.905 166.812 190.25-99.656-101.03 185.406 140.25-79.063-46.94 102.22 106.5-53-45.655 92.28 86.5-14.467 93.47 31.562-63.158-60.344-56.125 8.314-15.53 2.312 5.374-14.75 31.158-85.437-70.907 36.31-21.124 10.814 8.094-22.313 33.47-92.436-97.22 60.875-28.938 18.092L224.22 331l74.06-143.344-131.06 68.313-22.97 12 10.03-23.908 48.626-115.687-67.75 19.375-5.5 1.563-3.875-4.157L18.157 30.78z"},child:[]}]})(s)}function h5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M20.127 52.803v58.986L250.46 245.153c26.367-28.823 70.087-36.533 105.313-16.195 35.29 20.374 50.465 62.207 38.567 99.503l101.648 58.855-64.728-74.65 35.638-37.352-57.27-7.687 84.72-86.92-125.71 33.186 12.995-120.208-66.578 96.363-27.448-80.593-16.353 88.77L20.127 52.803zm0 105.12l-.008.018.007.005v-.02zm0 .022l-.002 87.582 155.344 89.95-89.94 33.287h135.493l-63.658 99.87 116.22-70.083 15.77 85.852 38.543-80.01 63.66 87.018-5.853-87.047 90.54 17.268-102.4-59.198c-26.546 26.964-68.89 33.744-103.183 13.945-34.322-19.816-49.62-59.928-39.49-96.424L20.127 157.945zm316.6 119.442c-.938-.003-1.874.027-2.805.092-12.42.86-24.164 7.707-30.9 19.375-10.78 18.67-4.455 42.27 14.214 53.047 18.67 10.78 42.27 4.455 53.047-14.214 10.78-18.67 4.454-42.27-14.215-53.047-6.125-3.536-12.78-5.23-19.34-5.253z"},child:[]}]})(s)}function z5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 32l-64 96 80 16-16 80 64-96-80-16 16-80zm-96 217c-1.9 0-9.8 3-15.8 6.7-2.8 1.7-5.3 3.5-7.2 4.8v119c1.9 1.3 4.4 3.1 7.2 4.8 6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 5.9-3.7 10.6-7.3 10.6-7.3l2.5-2H201V265h-12.1l-2.5-2s-4.7-3.6-10.6-7.3c-6-3.7-13.9-6.7-15.8-6.7zm192 0c-1.9 0-9.8 3-15.8 6.7-5.9 3.7-10.6 7.3-10.6 7.3l-2.5 2H311v110h12.1l2.5 2s4.7 3.6 10.6 7.3c6 3.7 13.9 6.7 15.8 6.7 1.9 0 9.8-3 15.8-6.7 2.8-1.7 5.3-3.5 7.2-4.8v-119c-1.9-1.3-4.4-3.1-7.2-4.8-6-3.7-13.9-6.7-15.8-6.7zm-133 16v110h14V265h-14zm32 0v110h42V265h-42zM95.5 311c-18.8 0-36.6 9.2-49.94 22.7C32.22 347.1 23 365 23 384v106h18V384c0-13 6.78-27.1 17.32-37.7C68.85 335.8 82.8 329 95.5 329H119v-18H95.5zm297.5 0v18h22.9c13.1 0 27.1 6.8 37.7 17.4C464.2 357 471 371 471 384v106h18V384c0-19-9.2-37-22.7-50.4-13.4-13.4-31.4-22.6-50.4-22.6H393z"},child:[]}]})(s)}function w5e(s){return te({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M376 211H256V16L136 301h120v195z"},child:[]}]})(s)}function I5e(s){return te({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M18.36 6.64a9 9 0 1 1-12.73 0"},child:[]},{tag:"line",attr:{x1:"12",y1:"2",x2:"12",y2:"12"},child:[]}]})(s)}function C5e(s){return te({attr:{fill:"none",viewBox:"0 0 24 24",strokeWidth:"2",stroke:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},child:[]}]})(s)}function p5e(s){return te({attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M6 0l-6 8h6l-4 8 14-10h-8l6-6z"},child:[]}]})(s)}const $ve={SET:SSe,WORKING:Uc,UNREACH:Wc,LOWBAT:$c,MAINTAIN:Oj,ERROR:fj,DIRECTION:mj,CONNECTED:Wc,ACTUAL:L5e,SECOND:g5e,PRESS_LONG:Aj,PRESS:pj,MUTE:Cj,ACCURACY:h5e,RADIUS:fSe,ELEVATION:xSe,LATITUDE:_Se,LONGITUDE:mSe,GPS:Ij,ON_ACTUAL:Pc,ON_SET:Pc,OPEN:wj,STOP:y5e,WATER_ALARM:Q0,WASTE_ALARM:J0,PAUSE:ASe,STATE:D5e,BATTERY:$c,WASTE:J0,WATER:Q0,WORK_MODE:Uc,MODE:zj,POWER:OSe,BOOST:N5e,HUMIDITY:QSe,TEMPERATURE:vSe,BRIGHTNESS:USe,MOTION:hj,FIRE:bSe,WINDOW:KL,SMOKE:YSe,SWING:j5e,SPEED:T5e,DIMMER:C5e,ON:I5e,COLOR_TEMP:dj,ELECTRIC_POWER:p5e,CURRENT:w5e,VOLTAGE:z5e,CONSUMPTION:l5e,FREQUENCY:d5e,HUE:PSe};class eg extends a.Component{static generateFile(e,t){const i=window.document.createElement("a");i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(t,null,2))}`),i.setAttribute("download",e),i.style.display="none",window.document.body.appendChild(i),i.click(),window.document.body.removeChild(i)}handleFileSelect=e=>{const t=e.target,i=t==null?void 0:t.files;if(!i||!i.length){console.error("No files found. Please report to developers");return}const r=i[0];if(r){const o=new window.FileReader;o.onload=()=>{var M;const n=((M=o.result)==null?void 0:M.toString())||"";try{const c=JSON.parse(n);c.native&&c.common?c.common.name!==this.props.common.name?this.props.onError&&this.props.onError(D.t("ra_otherConfig",c.common.name)):this.props.onLoad&&this.props.onLoad(c.native):this.props.onError&&this.props.onError(D.t("ra_invalidConfig"))}catch(c){this.props.onError&&this.props.onError(c==null?void 0:c.toString())}},o.readAsText(r)}else alert("Failed to open JSON File")};download(){const e={_id:`system.adapter.${this.props.common.name}.${this.props.instance}`,common:JSON.parse(JSON.stringify(this.props.common)),native:this.props.native};e.common.news&&delete e.common.news,e.common.titleLang&&delete e.common.titleLang,e.common.desc&&delete e.common.desc,eg.generateFile(`${e._id}.json`,e)}upload(){const e=window.document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",this.handleFileSelect,!1),e.click()}render(){return a.createElement("div",{className:this.props.className,style:this.props.style},this.props.common.icon?a.createElement(be,{src:this.props.common.icon,style:{padding:8,width:64},alt:"logo"}):null,this.props.common.readme?a.createElement(bt,{size:"small",color:"primary","aria-label":"Help",style:{marginRight:5,marginTop:5,float:"right"},onClick:()=>{const e=window.open(this.props.common.readme,"_blank");e==null||e.focus()}},a.createElement(Ej,null)):null,a.createElement(bt,{size:"small",color:"primary","aria-label":"Load config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Load configuration from file"),onClick:()=>this.upload()},a.createElement(Dy,null)),a.createElement(bt,{size:"small",color:"primary","aria-label":"Save config",style:{marginRight:5,marginTop:5,float:"right"},title:D.t("ra_Save configuration to file"),onClick:()=>this.download()},a.createElement(Ty,null)))}}class tg{static text2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Zа-яА-Я0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),t==="this"?window.location.href=e:window.open(e,t||"_blank")}static getTitle(e){const t=tg.extractHeader(e);let i=t.body;const r=t.header;if(!r.title){i=i.replace(/{[^}]*}/g,""),i=i.trim();const o=i.replace(/\r/g,"").split(` `);for(let n=0;n{if(!n.trim())return;const M=n.indexOf(":");if(M!==-1){const c=n.substring(0,M).trim();let l=n.substring(M+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[c]=!0:l==="false"?t[c]=!1:parseFloat(l).toString()===l?t[c]=parseFloat(l):t[c]=l}else t[n.trim()]=!0}),e=e.substring(i+7))}return{header:t,body:e}}static removeDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(i=>e=e.replace(i,"")),e}static onCopy(e,t){x4(t),e&&e.stopPropagation(),e&&e.preventDefault()}}function f5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function ig(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"248",cx:"160",fill:"none",strokeWidth:"15"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function Bs(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"}))}function rg(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"140.83068",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"251",cx:"241",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"200.94531",x2:"240.5",y1:"45.94531",x1:"240.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"78.7979",x:"214.5",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"84",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"83.5",y1:"46.94531",x1:"83.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"57.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function O5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",onClick:e=>s.onClick&&s.onClick(e),width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}))}function E5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}),a.createElement("path",{fill:"currentColor",stroke:"null",d:"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z"}))}function _5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function rr(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("rect",{fill:"none",rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor"}),a.createElement("ellipse",{fill:"none",ry:"54",rx:"54",cy:"160",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor"}))}function x5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 24 24",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",stroke:"currentColor",d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"}))}const Pn={root:{width:"100%",height:"100%"},overflowHidden:{overflow:"hidden"},container:{height:"100%"}};function S5e(s){var e;return a.createElement(fN,{elevation:Number.isNaN(s.elevation)?1:s.elevation,style:{...Pn.root,...((e=s.styles)==null?void 0:e.root)||void 0,...s.overflow!=="visible"?Pn.overflowHidden:void 0},onKeyDown:s.onKeyDown,tabIndex:s.tabIndex},a.createElement(ts,{container:!0,direction:"column",wrap:"nowrap",sx:Pn.container},s.children))}const F0={root:{height:"100%",overflow:"hidden"},overflowAuto:{overflow:"auto"}},k5e=a.forwardRef(function(e,t){return a.createElement(ts,{sx:{...F0.root,...(e==null?void 0:e.style)||void 0,...e.overflow==="auto"?F0.overflowAuto:void 0},ref:t},e.children)});function v5e(s){return a.createElement(ts,{container:!0,alignItems:"center"},s.children)}const Li=24,$e=32,og=s=>s==="dark"?"#62ff25":"#37c400",ng=s=>s==="dark"?"#ee56ff":"#a204b4",Y5e=s=>s==="dark"?"#fff46e":"#b89101",ag=s=>"#ff6d69",Mg=s=>"#5773ff",Q5e=["0_userdata.0.","alias.0."],ss={headerCellInput:{width:"calc(100% - 5px)",height:$e,pt:0,"& .itemIcon":{verticalAlign:"middle",width:Li,height:Li,display:"inline-block"}},headerCellSelectItem:{"& .itemIcon":{width:Li,height:Li,mr:"5px",display:"inline-block"}},selectNone:{opacity:.5},selectClearButton:{position:"absolute",top:0,right:0,borderRadius:5,backgroundColor:"background.default"},cellIdTooltipLink:{color:"#7ec2fd","&:hover":{color:"#7ec2fd"},"&:visited":{color:"#7ec2fd"}},cellIdTooltip:{fontSize:14}};function b5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 436 436",style:s==null?void 0:s.style,width:"24",height:"24",className:"admin-button"},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),a.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function G0(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}function U5e(s,e){const t=[];for(let i=0;i{if(r==null)return;const n=typeof r=="object";if(t&&n&&typeof r.en=="string"&&typeof r.de=="string"){i[o]=r.en;return}i[o]=n?xa(r,e,t):r}):$5e(s,(i,r,o)=>{if(r==null||e.includes(o))return;const n=typeof r=="object";if(t&&n&&typeof r.en=="string"&&typeof r.de=="string"){i[o]=r.en;return}i[o]=n?xa(r,e,t):r})}function H0(s,e,t){const i=document.createElement("a"),r=[];t.excludeSystemRepositories&&r.push("system.repositories");const o=r.length>0||t.excludeTranslations?xa(e,r,t.excludeTranslations):e,n=t.beautify?JSON.stringify(o,null,2):JSON.stringify(o);i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(n)}`),i.setAttribute("download",s),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}class P5e extends De{hasIcons;timer=null;constructor(e){var t;super(e),this.state={value:e.initialValue||[]},this.hasIcons=!!((t=e.values)!=null&&t.find(i=>i.icon))}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){var e;return a.createElement("div",{style:{position:"relative"}},a.createElement(nt,{variant:"standard",key:this.props.name,sx:ss.headerCellInput,className:"no-underline",multiple:!0,renderValue:t=>t!=null&&t.length?t.map(i=>{const r=this.props.values.find(c=>typeof c=="object"?c.value===i:c===i);let o,n,M;return typeof r=="object"?(o=r.value,n=r.name,M=r.icon):(o=r,n=r),a.createElement(J,{component:"span",sx:ss.headerCellSelectItem,key:o},M||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),n)}):this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:t=>{let i=t.target.value;if(this.state.value[0]==="_"&&i.includes("_")&&i.length>1){const r=i.indexOf("_");r!==-1&&i.splice(r,1)}else this.state.value[0]!=="_"&&i.includes("_")&&(i=["_"]);i.includes("")&&(i=[]),this.setState({value:i},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,i)},400)})},onClose:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},inputProps:{name:this.props.name,id:this.props.name},displayEmpty:!0},a.createElement(re,{key:"empty",value:""},a.createElement("span",{style:ss.selectNone},this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`])),(e=this.props.values)==null?void 0:e.map(t=>{let i,r,o;return typeof t=="object"?(i=t.value,r=t.name,o=t.icon):(i=t,r=t),a.createElement(re,{sx:ss.headerCellSelectItem,key:i,value:i},o||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),r)})),this.state.value.length?a.createElement(J,{component:"div",sx:ss.selectClearButton},a.createElement(W,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:[]},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(we,null))):null)}}class W5e extends De{timer=null;constructor(e){super(e),this.state={value:e.initialValue||""}}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){return a.createElement(Qt,{sx:this.props.styles,key:this.props.name,title:this.props.t("ra_You can use * as wildcard"),margin:"dense"},a.createElement(qt,{classes:{underline:"no-underline"},id:this.props.name,placeholder:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:e=>{const t=e.target.value;this.setState({value:t},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,t)},400)})},onBlur:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},autoComplete:"off"}),this.state.value?a.createElement("div",{style:{position:"absolute",right:0}},a.createElement(W,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:""},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(we,null))):null)}}function jr(s,e,t,i){if(t||=0,i===void 0&&(i=s.length-1,!i))return s[0]===e;const r=Math.floor((t+i)/2);return e===s[r]?!0:i-1===t?s[t]===e||s[i]===e:e>s[r]?jr(s,e,r,i):ex.toLowerCase())),(L=e.custom)!=null&&L.length&&(r.custom=e.custom.map(x=>x.toLowerCase())),(g=e.role)!=null&&g.length&&(r.role=e.role.map(x=>x.toLowerCase())),(j=e.room)!=null&&j.length&&(r.room=[],e.room.forEach(x=>{var S,R;r.room=r.room.concat(((R=(S=i[x])==null?void 0:S.common)==null?void 0:R.members)||[])})),(y=e.func)!=null&&y.length&&(r.func=[],e.func.forEach(x=>{var S,R;r.func=r.func.concat(((R=(S=i[x])==null?void 0:S.common)==null?void 0:R.members)||[])}))}const N=s.data;if(N!=null&&N.id){const x=(T=N.obj)==null?void 0:T.common;if(n){if(n.type&&(typeof n.type=="string"?(!N.obj||n.type!==N.obj.type)&&(l=!0):Array.isArray(n.type)&&(!N.obj||!n.type.includes(N.obj.type))&&(l=!0)),!l&&((d=n.common)!=null&&d.type)&&(x!=null&&x.type?typeof n.common.type=="string"?n.common.type!==x.type&&(l=!0):Array.isArray(n.common.type)&&(n.common.type.includes(x.type)||(l=!0)):l=!0),!l&&((I=n.common)!=null&&I.role)&&(x!=null&&x.role?typeof n.common.role=="string"?x.role.startsWith(n.common.role)&&(l=!0):Array.isArray(n.common.role)&&(n.common.role.find(S=>x.role.startsWith(S))||(l=!0)):l=!0),!l&&((w=n.common)==null?void 0:w.custom)==="_"&&(x!=null&&x.custom))l=!0;else if(!l&&((A=n.common)!=null&&A.custom)&&((p=n.common)==null?void 0:p.custom)!=="_"){const S=n.common.custom;if(!(x!=null&&x.custom))l=!0;else if(S==="_dataSources")Object.keys(x.custom).find(R=>R.startsWith("history.")||R.startsWith("sql.")||R.startsWith("influxdb."))||(l=!0);else if(Array.isArray(S)){const R=Object.keys(x.custom);S.find(he=>R.find(Xe=>Xe.startsWith(he)))&&(l=!0)}else S!==!0&&!Object.keys(x.custom).find(R=>R.startsWith(S))&&(l=!0)}}!l&&!e.expertMode&&(l=N.id==="system"||N.id==="enum"||N.id.startsWith("system.")||N.id.startsWith("enum.")||N.id.startsWith("_design/")||N.id.endsWith(".admin")||!!(x!=null&&x.expert)),!l&&r.id&&(N.fID===void 0&&(N.fID=N.id.toLowerCase()),l=!N.fID.includes(r.id)),!l&&r.idRx&&(l=!r.idRx.test(N.id)),!l&&r.name&&(x?(N.fName===void 0&&(N.fName=He(x.name,t)||"",N.fName=N.fName.toLowerCase()),l=!N.fName.includes(r.name)):l=!0),!l&&r.nameRx&&x&&(N.fName===void 0&&(N.fName=He(x.name,t)||"",N.fName=N.fName.toLowerCase()),l=!r.nameRx.test(N.fName)),!l&&((h=e.role)!=null&&h.length)&&x&&(l=!(typeof x.role=="string"&&r.role.find(S=>x.role.startsWith(S)))),!l&&((C=r.room)!=null&&C.length)&&(l=!r.room.find(S=>S===N.id||N.id.startsWith(`${S}.`))),!l&&((E=r.func)!=null&&E.length)&&(l=!r.func.find(S=>S===N.id||N.id.startsWith(`${S}.`))),!l&&((O=r.type)!=null&&O.length)&&(l=!((b=N.obj)!=null&&b.type&&r.type.includes(N.obj.type))),!l&&M&&(l=!((k=N.obj)!=null&&k.type&&M.includes(N.obj.type))),!l&&((K=r.custom)!=null&&K.length)&&(x?r.custom[0]==="_"?l=!!x.custom:x.custom?l=!r.custom.find(S=>x.custom[S]):l=!0:l=r.custom[0]!=="_")}return N.visible=!l,N.hasVisibleChildren=!1,s.children&&c<20&&s.children.forEach(x=>{Sa(x,e,t,i,r,o,n,M,c+1)&&(N.hasVisibleChildren=!0)}),N.sumVisibility=N.visible||N.hasVisibleChildren,o&&N.sumVisibility&&o.count++,N.id&&N.sumVisibility&&s.children&&s.children.forEach(x=>x.data.hasVisibleParent=!0),N.visible||N.hasVisibleChildren}function cg(s,e,t,i){var o;i||=[];const r=s.data;return r.sumVisibility&&(r.id&&t[r.id]&&t[r.id].type===e&&i.push(r.id),(o=s.children)==null||o.forEach(n=>cg(n,e,t,i))),i}function V0(s,e,t,i,r,o){let n;return e==="alias"||e==="alias.0"?n=a.createElement(vN,{className:"iconOwn",style:{color:ng(i)}}):e==="0_userdata"||e==="0_userdata.0"?n=a.createElement(Zj,{className:"iconOwn",style:{color:og(i)}}):e.startsWith("_design/")||e==="system"?n=a.createElement(jo,{className:"iconOwn",style:{color:ag(i)}}):e==="system.adapter"?n=a.createElement(jo,{className:"iconOwn",style:{color:Mg(i)}}):e==="system.group"?n=a.createElement(oM,{className:"iconOwn"}):e==="system.user"?n=a.createElement(iM,{className:"iconOwn"}):e==="system.host"?n=a.createElement(rM,{className:"iconOwn"}):e.endsWith(".connection")||e.endsWith(".connected")?n=a.createElement(li,{className:"iconOwn"}):e.endsWith(".info")?n=a.createElement(sM,{className:"iconOwn"}):s[e]&&s[e].type==="meta"?n=a.createElement(Yo,{className:"iconOwn"}):t<2&&s[`system.adapter.${e}`]&&(n=_o(s,`system.adapter.${e}`,r,o)),n||null}function ug(s,e){var t,i;return(i=(t=s==null?void 0:s.obj)==null?void 0:t.common)!=null&&i.desc&&He(s.obj.common.desc,e)||null}function J5e(s,e){const t=ug(s,e);return t!=null&&t.startsWith("http")?a.createElement(J,{component:"a",sx:ss.cellIdTooltipLink,href:t,target:"_blank",rel:"noreferrer"},t):a.createElement("span",{style:ss.cellIdTooltip},t||s.id||"")}function Z0(s,e){var N,u,L,g,j,y,T,d,I,w;const t=e.imagePrefix||".";let i=Object.keys(s);i.sort((A,p)=>A===p?0:(A=A.replace(/\./g,"!!!"),p=p.replace(/\./g,"!!!"),A>p?1:-1)),e.root&&(i=i.filter(A=>A===e.root||A.startsWith(`${e.root}.`)));let r=[],o="",n=0;const M={data:{name:"",id:""},children:[]},c={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:s,customs:["_"],enums:[],hasSomeCustoms:!1,aliasesMap:{}};let l=M;for(let A=0;Ak.role===b)?typeof b!="string"?console.warn(`Invalid role type "${typeof b}" in "${h._id}"`):c.roles.push({role:b,type:O.type}):p.startsWith("enum.rooms.")?(c.roomEnums.push(p),c.enums.push(p)):p.startsWith("enum.functions.")?(c.funcEnums.push(p),c.enums.push(p)):h.type==="enum"?c.enums.push(p):h.type==="instance"&&O&&(O.supportCustoms||(N=O.adminUI)!=null&&N.custom)&&(c.hasSomeCustoms=!0,c.customs.push(p.substring(15))),p.startsWith("alias.")&&((u=h.common.alias)!=null&&u.id))if(typeof h.common.alias.id=="string"){const k=h.common.alias.id;c.aliasesMap[k]?c.aliasesMap[k].includes(p)||c.aliasesMap[k].push(p):c.aliasesMap[k]=[p]}else{const k=h.common.alias.id.read;k&&(c.aliasesMap[k]?c.aliasesMap[k].includes(p)||c.aliasesMap[k].push(p):c.aliasesMap[k]=[p]);const K=h.common.alias.id.write;K&&(c.aliasesMap[K]?c.aliasesMap[K].includes(p)||c.aliasesMap[K].push(p):c.aliasesMap[K]=[p])}}c.ids.push(p);let E;do if(E=!1,!o||p.startsWith(`${o}.`)){if(C.length-n>1){let b=o;for(let k=n;kK.data.name===C[k]));else{const K={data:{name:C[k],parent:l,id:b,obj:s[b],level:k,icon:V0(s,b,k,e.themeType,e.lang,t),generated:!0}};l.children||=[],l.children.push(K),l=K,c.ids.push(b)}}const O={data:{name:C[C.length-1],title:He((L=h==null?void 0:h.common)==null?void 0:L.name,e.lang),obj:h,parent:l,icon:_o(s,p,e.lang,t)||V0(s,p,0,e.themeType,e.lang,t),id:p,hasCustoms:!!((g=h.common)!=null&&g.custom&&Object.keys(h.common.custom).length),level:C.length-1,generated:!1,button:h.type==="state"&&!!((j=h.common)!=null&&j.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("button")&&((y=h.common)==null?void 0:y.write)!==!1,switch:h.type==="state"&&((T=h.common)==null?void 0:T.type)==="boolean"&&((d=h.common)==null?void 0:d.write)!==!1&&((I=h.common)==null?void 0:I.read)!==!1,url:!!((w=h.common)!=null&&w.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("url")}};l.children||=[],l.children.push(O),l=O,n=C.length,r=C,o=p}else{let O=0;for(;r[O]===C[O];)O++;if(O>0){let b=r.length;for(r=r.splice(0,O),n=O,o=r.join(".");b>O;)l.data.parent?l=l.data.parent:console.error(`Parent is null for ${p} ${o} ${r.join(".")}`),b--}else l=M,r=[],o="",n=0;E=!0}while(E)}return c.roomEnums.sort((A,p)=>{var E,O,b,k;const h=He((O=(E=s[A])==null?void 0:E.common)==null?void 0:O.name,e.lang)||A.split(".").pop(),C=He((k=(b=s[p])==null?void 0:b.common)==null?void 0:k.name,e.lang)||p.split(".").pop();return h>C?1:h{var E,O,b,k;const h=He((O=(E=s[A])==null?void 0:E.common)==null?void 0:O.name,e.lang)||A.split(".").pop(),C=He((k=(b=s[p])==null?void 0:b.common)==null?void 0:k.name,e.lang)||p.split(".").pop();return h>C?1:hA.role.localeCompare(p.role)),c.types.sort(),{info:c,root:M}}function lg(s,e,t,i,r){if(s.data.id===e)return s;if(t||(t=e.split("."),r=0,i=t[r]),!s.children&&s.data.id!==e)return null;let o;if(s.children)for(let n=0;ni)break}return o?(r||=0,lg(o,e,t,`${i}.${t[r+1]}`,r+1)):null}function Ng(s,e,t,i){var n,M;if(!e)return{rooms:[],per:!1};i||=[];for(const c of s.roomEnums){const l=(n=s.objects[c])==null?void 0:n.common;if(!l)continue;const N=He(l.name,t);(M=l.members)!=null&&M.includes(e)&&!i.includes(N)&&i.push(N)}let r;const o=e.split(".");return o.pop(),e=o.join("."),s.objects[e]&&(r=i.length,Ng(s,e,t,i)),{rooms:i,per:!r}}function Rs(s,e,t,i){var r,o;if(!e)return[];i||=[];for(let n=0;n946681200&&l<9466812e5&&(l*=1e3),l=l&&new Date(l).toString();else if(M!=null&&M.role&&typeof M.role=="string"&&M.role.match(/^value\.duration/)){if(typeof l=="number"&&l>=0){const j=Math.floor(l/3600),y=Math.floor(l%3600/60),T=Math.floor(l%60);l=`${j.toString().padStart(2,"0")}:${y.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}`}else if(typeof l=="string"&&m.isStringInteger(l)){const j=parseInt(l,10);if(j>=0){const y=Math.floor(j/3600),T=Math.floor(j%3600/60),d=Math.floor(j%60);l=`${y.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}`}}}else N==="number"?Number.isInteger(l)||(l=Math.round(l*1e8)/1e8,i&&(l=l.toString().replace(".",","))):N==="object"?l=JSON.stringify(l):N!=="string"?l=l.toString():l.startsWith("data:image/")&&(c="image"),typeof l!="string"&&(l=l.toString());const u={v:l};n&&n[l]!==void 0&&l!==n[l]&&(u.s=l,l=n[l],u.v=l),((g=u.v)==null?void 0:g.length)>40&&(u.c=u.v,u.v=`${u.v.substring(0,40)}...`),M!=null&&M.unit&&(u.u=M.unit);let L;if(s.full&&(typeof l=="string"&&l.length>100?L=[{t:r.value,v:`${l.substring(0,100)}...`}]:L=[{t:r.value,v:l}],t)){if(t.ack!==void 0&&t.ack!==null&&L.push({t:r.ack,v:t.ack.toString()}),t.ts&&L.push({t:r.ts,v:t.ts?m.formatDate(new Date(t.ts),e):""}),t.lc&&L.push({t:r.lc,v:t.lc?m.formatDate(new Date(t.lc),e):""}),t.from){let j=t.from.toString();j.startsWith("system.adapter.")&&(j=j.substring(15)),L.push({t:r.from,v:j})}if(t.user){let j=t.user.toString();j.startsWith("system.user.")&&(j=j.substring(12)),L.push({t:r.user,v:j})}t.c&&L.push({t:r.c,v:t.c}),L.push({t:r.quality,v:m.quality2text(t.q||0).join(", "),nbr:!0})}return{valText:u,valFull:L,fileViewer:c}}function B5e(s){const{state:e}=s;return{color:e!=null&&e.ack?e.q?"#ffa500":"":s.nonAckColor||"#ff2222c9"}}function R5e(s,e){let t=e,i=1;const r=[];for(;i=t)r.push(0);else if(i1){const i=e.path;let r;const o=s;if(o[i[0]]&&typeof o[i[0]]=="object")return i.length===2?r=o[i[0]][i[1]]:i.length===3?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"?o[i[0]][i[1]][i[2]]:null:i.length===4?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]?o[i[0]][i[1]][i[2]][i[3]]:null:i.length===5?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&o[i[0]][i[1]][i[2]][i[3]]?o[i[0]][i[1]][i[2]][i[3]][i[4]]:null:i.length===6&&(r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&o[i[0]][i[1]][i[2]][i[3]]&&o[i[0]][i[1]][i[2]][i[3]][i[4]]?o[i[0]][i[1]][i[2]][i[3]][i[4]][i[5]]:null),r??null}return null}function F5e(s,e,t){var i;if((i=s==null?void 0:s._id)!=null&&i.startsWith(`${e.adapter}.`)&&e.path.length>1){const r=e.path,o=s;if(o[r[0]]&&typeof o[r[0]]=="object"){if(r.length===2)return o[r[0]][r[1]]=t,!0;if(r.length===3){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object")return o[r[0]][r[1]][r[2]]=t,!0}else if(r.length===4){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object")return o[r[0]][r[1]][r[2]][r[3]]=t,!0}else if(r.length===5){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]]=t,!0}else if(r.length===6&&o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object"&&o[r[0]][r[1]][r[2]][r[3]][r[4]]&&typeof o[r[0]][r[1]][r[2]][r[3]][r[4]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]][r[5]]=t,!0}}return!1}function K0(s){return!!Q5e.find(e=>s.startsWith(e))}const G5e=16,Ie=20,gg="#ff413c",jg="#86211f",ka="#57ff45",va="#098c04",Ya="#f3ad11",Qa="#6c5008",z={toolbar:{minHeight:38},toolbarButtons:{padding:4,marginLeft:4},switchColumnAuto:{marginLeft:16},dialogColumns:{transition:"opacity 1s"},dialogColumnsLabel:{fontSize:12,paddingTop:8},columnCustom:{width:"100%",display:"inline-block"},columnCustomEditable:{cursor:"text"},columnCustom_center:{textAlign:"center"},columnCustom_left:{textAlign:"left"},columnCustom_right:{textAlign:"right"},width100:{width:"100%"},transparent_10:{opacity:.1},transparent_20:{opacity:.2},transparent_30:{opacity:.3},transparent_40:{opacity:.4},transparent_50:{opacity:.5},transparent_60:{opacity:.6},transparent_70:{opacity:.7},transparent_80:{opacity:.8},transparent_90:{opacity:.9},transparent_100:{opacity:1},headerRow:{paddingLeft:8,height:38,whiteSpace:"nowrap",userSelect:"none"},buttonClearFilter:{position:"relative",float:"right",padding:0},buttonClearFilterIcon:{zIndex:2,position:"absolute",top:0,left:0,color:"#FF0000",opacity:.7},tableDiv:{paddingTop:0,paddingLeft:0,width:"calc(100% - 8px)",height:"calc(100% - 38px)",overflow:"auto"},tableRow:s=>({pl:1,height:$e,lineHeight:`${$e}px`,verticalAlign:"top",userSelect:"none",position:"relative",width:"100%","&:hover":{background:`${s.palette.mode==="dark"?s.palette.primary.dark:s.palette.primary.light} !important`,color:m.invertColor(s.palette.primary.main,!0)},whiteSpace:"nowrap",flexWrap:"nowrap"}),tableRowLines:s=>({borderBottom:`1px solid ${s.palette.mode==="dark","#8888882e"}`,"& > div":{borderRight:`1px solid ${s.palette.mode==="dark","#8888882e"}`}}),tableRowNoDragging:{cursor:"pointer"},tableRowAlias:{height:$e+10},tableRowAliasReadWrite:{height:$e+22},tableRowFocused:s=>({"&:after":{content:'""',position:"absolute",top:1,left:1,right:1,bottom:1,border:s.palette.mode?"1px dotted #000":"1px dotted #FFF"}}),checkBox:{padding:0},cellId:{position:"relative",fontSize:"1rem",overflow:"hidden",textOverflow:"ellipsis","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"},"& .iconOwn":{display:"block",width:$e-4,height:$e-4,mt:"2px",float:"right"},"&:hover .iconOwn":{display:"none"},"& *":{width:"initial"}},cellIdSpan:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},cellIdIconFolder:s=>({marginRight:8,width:$e-4,height:$e-4,cursor:"pointer",color:s.palette.secondary.main||"#fbff7d",verticalAlign:"top"}),cellIdIconDocument:{verticalAlign:"middle",marginLeft:($e-Ie)/2,marginRight:8,width:Ie,height:Ie},cellIdIconOwn:{},cellCopyButton:{width:Ie,height:Ie,top:($e-Ie)/2,opacity:.8,position:"absolute",right:3},cellCopyButtonInDetails:{width:Ie,height:Ie,top:($e-Ie)/2,opacity:.8},cellEditButton:{width:Ie,height:Ie,color:"white",position:"absolute",top:($e-Ie)/2,right:Ie+3,opacity:.7,"&:hover":{opacity:1}},cellName:{display:"inline-block",verticalAlign:"top",fontSize:14,ml:"5px",overflow:"hidden",textOverflow:"ellipsis",position:"relative","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellNameWithDesc:{lineHeight:"normal"},cellNameDivDiv:{},cellDescription:{fontSize:10,opacity:.5,fontStyle:"italic"},cellIdAlias:s=>({fontStyle:"italic",fontSize:12,opacity:.7,"&:hover":{color:s.palette.mode==="dark"?"#009900":"#007700"}}),cellIdAliasReadWriteDiv:{height:24,marginTop:-5},cellIdAliasAlone:{lineHeight:0},cellIdAliasReadWrite:{lineHeight:"12px"},cellType:{display:"inline-block",verticalAlign:"top","& .itemIcon":{verticalAlign:"middle",width:Li,height:Li,display:"inline-block"},"& .itemIconFolder":{marginLeft:3}},cellRole:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellRoom:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellEnumParent:{opacity:.4},cellFunc:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValue:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValueButton:{marginTop:5},cellValueButtonFalse:{opacity:.3},cellAdapter:{display:"inline-block",verticalAlign:"top"},cellValueTooltip:{fontSize:12},cellValueText:{width:"100%",height:$e,fontSize:16,display:"flex",overflow:"hidden",textOverflow:"ellipsis",position:"relative",verticalAlign:"top","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellValueFile:{color:"#2837b9"},cellValueTooltipTitle:{fontStyle:"italic",width:100,display:"inline-block"},cellValueTooltipValue:{width:120,display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis"},cellValueTooltipImage:{width:100,height:"auto"},cellValueTooltipBoth:{width:220,display:"inline-block",whiteSpace:"nowrap"},cellValueTooltipBox:{width:250,overflow:"hidden",pointerEvents:"none"},tooltip:{pointerEvents:"none"},cellValueTextUnit:{marginLeft:4,opacity:.8,display:"inline-block"},cellValueTextState:{opacity:.7},cellValueTooltipCopy:{position:"absolute",bottom:3,right:3},cellValueTooltipEdit:{position:"absolute",bottom:3,right:15},cellButtons:{display:"inline-block",verticalAlign:"top"},cellButtonsButton:{display:"inline-block",opacity:.5,width:Ie+4,height:Ie+4,"&:hover":{opacity:1},p:0,mt:"-2px"},cellButtonsEmptyButton:{fontSize:12},cellButtonMinWidth:{minWidth:40},cellButtonsButtonAlone:{ml:`${Ie+6}px`,pt:0,mt:"-2px"},cellButtonsButtonWithCustoms:s=>({color:s.palette.mode==="dark"?s.palette.primary.main:s.palette.secondary.main}),cellButtonsButtonWithoutCustoms:{opacity:.2},cellButtonsValueButton:s=>({position:"absolute",top:Ie/2-2,opacity:.7,width:Ie-2,height:Ie-2,color:s.palette.action.active,"&:hover":{opacity:1}}),cellButtonsValueButtonCopy:{right:8,cursor:"pointer"},cellButtonsValueButtonEdit:{right:Ie/2+16},cellDetailsLine:{display:"flex",alignItems:"center",width:"100%",height:32,fontSize:16},cellDetailsName:{fontWeight:"bold",marginRight:8,minWidth:80},filteredOut:{opacity:.5},filteredParentOut:{opacity:.3},filterInput:{mt:0,mb:0},selectIcon:{width:24,height:24,marginRight:4},itemSelected:s=>({background:`${s.palette.primary.main} !important`,color:`${m.invertColor(s.palette.primary.main,!0)} !important`}),header:{width:"100%"},headerCell:{display:"inline-block",verticalAlign:"top"},headerCellValue:{paddingTop:4,fontSize:16},visibleButtons:{color:"#2196f3",opacity:.7},grow:{flexGrow:1},enumIconDiv:{marginRight:8,width:32,height:32,borderRadius:8,background:"#FFFFFF"},enumIcon:{marginTop:4,marginLeft:4,width:24,height:24},enumDialog:{overflow:"hidden"},enumList:{minWidth:250,height:"calc(100% - 50px)",overflow:"auto"},enumCheckbox:{minWidth:0},buttonDiv:{display:"flex",height:"100%",alignItems:"center"},aclText:{fontSize:13,marginTop:6},rightsObject:{color:"#55ff55",paddingLeft:3},rightsState:{color:"#86b6ff",paddingLeft:3},textCenter:{padding:12,textAlign:"center"},tooltipAccessControl:{display:"flex",flexDirection:"column"},fontSizeTitle:{"@media screen and (max-width: 465px)":{"& *":{fontSize:12}}},draggable:{cursor:"copy"},nonDraggable:{cursor:"no-drop"},iconDeviceConnected:s=>({color:s.palette.mode==="dark"?ka:va,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceDisconnected:s=>({color:s.palette.mode==="dark"?Ya:Qa,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceError:s=>({color:s.palette.mode==="dark"?gg:jg,opacity:.8,position:"absolute",top:4,right:50,width:20}),resizeHandle:{display:"block",position:"absolute",cursor:"col-resize",width:7,top:2,bottom:2,zIndex:1},resizeHandleRight:{right:3,borderRight:"2px dotted #888","&:hover":{borderColor:"#ccc",borderRightStyle:"solid"},"&.active":{borderColor:"#517ea5",borderRightStyle:"solid"}},invertedBackground:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",padding:"0 3px",borderRadius:"2px 0 0 2px"}),invertedBackgroundFlex:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",borderRadius:"0 2px 2px 0"}),contextMenuEdit:s=>({color:s.palette.mode==="dark"?"#ffee48":"#cbb801"}),contextMenuEditValue:s=>({color:s.palette.mode==="dark"?"#5dff45":"#1cd301"}),contextMenuView:s=>({color:s.palette.mode==="dark"?"#FFF":"#000"}),contextMenuCustom:s=>({color:s.palette.mode==="dark"?"#42eaff":"#01bbc2"}),contextMenuACL:s=>({color:s.palette.mode==="dark"?"#e079ff":"#500070"}),contextMenuRoom:s=>({color:s.palette.mode==="dark"?"#ff9a33":"#642a00"}),contextMenuRole:s=>({color:s.palette.mode==="dark"?"#ffdb43":"#562d00"}),contextMenuDelete:s=>({color:s.palette.mode==="dark"?"#ff4f4f":"#cf0000"}),contextMenuKeys:{marginLeft:8,opacity:.7,fontSize:"smaller"},contextMenuWithSubMenu:{display:"flex"},...ss},q0={state:a.createElement(rr,{className:"itemIcon",style:{verticalAlign:"middle"}}),channel:a.createElement(ig,{className:"itemIcon",style:{verticalAlign:"middle"}}),device:a.createElement(rg,{className:"itemIcon",style:{verticalAlign:"middle"}}),adapter:a.createElement(f5e,{className:"itemIcon",style:{verticalAlign:"middle"}}),meta:a.createElement(Yo,{className:"itemIcon",style:{verticalAlign:"middle"}}),instance:a.createElement(_5e,{className:"itemIcon",style:{color:"#7da7ff",verticalAlign:"middle"}}),enum:a.createElement(My,{className:"itemIcon",style:{verticalAlign:"middle"}}),chart:a.createElement(gy,{className:"itemIcon",style:{verticalAlign:"middle"}}),config:a.createElement(ea,{className:"itemIcon",style:{verticalAlign:"middle"}}),group:a.createElement(oM,{className:"itemIcon",style:{verticalAlign:"middle"}}),user:a.createElement(iM,{className:"itemIcon",style:{verticalAlign:"middle"}}),host:a.createElement(rM,{className:"itemIcon",style:{verticalAlign:"middle"}}),schedule:a.createElement(Rj,{className:"itemIcon",style:{verticalAlign:"middle"}}),script:a.createElement(eM,{className:"itemIcon",style:{verticalAlign:"middle"}}),folder:a.createElement(Ti,{className:"itemIcon itemIconFolder",style:{verticalAlign:"middle"}})},ze={xs:{idWidth:"100%",fields:[],widths:{}},sm:{idWidth:300,fields:["room","val"],widths:{room:100,val:200}},md:{idWidth:300,fields:["room","func","val","buttons"],widths:{name:200,room:150,func:150,val:120,buttons:120}},lg:{idWidth:300,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:300,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:165,lastChange:165}},xl:{idWidth:550,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:400,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:170,lastChange:170}}};let eN=!1;const Fs={id:"",name:"",room:[],func:[],role:[],type:[],custom:[],expertMode:!1};class xo extends De{info={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:{},customs:[],enums:[],hasSomeCustoms:!1,aliasesMap:{}};localStorage=window._localStorage||window.localStorage;tableRef;pausedSubscribes=!1;selectFirst;root=null;states={};subscribes=[];unsubscribeTimer=null;statesUpdateTimer=null;objectsUpdateTimer=null;visibleCols;texts;possibleCols;imagePrefix;adapterColumns=[];styleTheme="";edit={id:"",val:"",q:0,ack:!1};levelPadding;customWidth=!1;resizeTimeout=null;resizerNextName=null;resizerActiveName=null;resizerCurrentWidths={};resizeLeft=!1;resizerOldWidth=0;resizerMin=0;resizerNextMin=0;resizerOldWidthNext=0;resizerPosition=0;resizerActiveDiv=null;resizerNextDiv=null;storedWidths=null;systemConfig;objects;defaultHistory="";ctrlPressed=!1;columnsVisibility={};changedIds=null;contextMenu=null;recordStates=[];styles={};expertMode=!1;customColumnDialog=null;constructor(e){super(e);const t=this.localStorage.getItem(`${e.dialogName||"App"}.objectSelected`)||"";if(this.selectFirst="",this.expertMode=!!this.props.expertMode,t.startsWith("["))try{const T=JSON.parse(t);this.selectFirst=T[0]||""}catch{}else this.selectFirst=t;let i;const r=this.localStorage.getItem(`${e.dialogName||"App"}.objectExpanded`)||"[]";try{i=JSON.parse(r)}catch{i=[]}let o;const n=e.defaultFilters?"":this.localStorage.getItem(`${e.dialogName||"App"}.objectFilter`)||"";if(n)try{o=JSON.parse(n)}catch{o={...Fs}}else e.defaultFilters&&typeof e.defaultFilters=="object"?o={...e.defaultFilters}:o={...Fs};if(typeof o.room=="string"&&o.room&&(o.room=[o.room].filter(T=>T),o.room.length||delete o.room),typeof o.func=="string"&&o.func&&(o.func=[o.func].filter(T=>T),o.func.length||delete o.func),typeof o.role=="string"&&o.role&&(o.role=[o.role].filter(T=>T),o.role.length||delete o.role),typeof o.type=="string"&&(o.type=[o.type].filter(T=>T),o.type.length||delete o.type),typeof o.custom=="string"&&(o.custom=[o.custom].filter(T=>T),o.custom.length||delete o.custom),o.expertMode=e.expertMode!==void 0?e.expertMode:(window._sessionStorage||window.sessionStorage).getItem("App.expertMode")==="true",this.tableRef=pN(),this.visibleCols=e.columns||ze[e.width||"lg"].fields,e.types&&e.types.length===1){const T=this.visibleCols.indexOf("type");T!==-1&&this.visibleCols.splice(T,1)}this.possibleCols=ze.xl.fields;let M=null;if(e.router){const T=e.router.getLocation();T.id&&T.dialog==="customs"&&(M=[T.id],this.pauseSubscribe(!0))}let c;Array.isArray(e.selected)?c=e.selected:c=[e.selected||""],c=c.map(T=>T.replace(/["']/g,"")).filter(T=>T),this.selectFirst=c.length&&c[0]?c[0]:this.selectFirst;const l=this.localStorage.getItem(`${e.dialogName||"App"}.columns`);let N;try{N=l?JSON.parse(l):null}catch{N=null}let u=null;try{u=u?JSON.parse(u):{}}catch{u={}}this.imagePrefix=e.imagePrefix||".";let L;const g=this.localStorage.getItem(`${e.dialogName||"App"}.foldersFirst`);g==="false"?L=!1:g==="true"?L=!0:L=e.foldersFirst===void 0?!0:e.foldersFirst;let j=!1;try{j=this.props.objectStatesView&&JSON.parse(this.localStorage.getItem(`${e.dialogName||"App"}.objectStatesView`)||"")||!1}catch{}this.state={aliasMenu:"",beautifyJsonExport:!0,columns:N,columnsAuto:this.localStorage.getItem(`${e.dialogName||"App"}.columnsAuto`)!=="false",columnsDialogTransparent:100,columnsEditCustomDialog:null,columnsForAdmin:null,columnsSelectorShow:!1,columnsWidths:u,customColumnDialogValueChanged:!1,customDialog:M,depth:0,editObjectAlias:!1,editObjectDialog:"",enumDialog:null,excludeSystemRepositoriesFromExport:!0,excludeTranslations:!1,expandAllVisible:!1,expanded:i,filter:o,filterKey:0,focused:this.localStorage.getItem(`${e.dialogName||"App"}.focused`)||"",foldersFirst:L,linesEnabled:this.localStorage.getItem(`${e.dialogName||"App"}.lines`)==="true",loaded:!1,noStatesByExportImport:!1,roleDialog:null,scrollBarWidth:16,selected:c,selectedNonObject:this.localStorage.getItem(`${e.dialogName||"App"}.selectedNonObject`)||"",showAliasEditor:"",showAllExportOptions:!1,showContextMenu:null,showDescription:this.localStorage.getItem(`${e.dialogName||"App"}.desc`)!=="false",showExportDialog:!1,showImportDialog:!1,showImportMenu:null,showRenameDialog:null,statesView:j,toast:"",tooltipInfo:null,viewFileDialog:""},this.texts={name:e.t("ra_Name"),categories:e.t("ra_Categories"),value:e.t("ra_tooltip_value"),ack:e.t("ra_tooltip_ack"),ts:e.t("ra_tooltip_ts"),lc:e.t("ra_tooltip_lc"),from:e.t("ra_tooltip_from"),user:e.t("ra_tooltip_user"),c:e.t("ra_tooltip_comment"),quality:e.t("ra_tooltip_quality"),editObject:e.t("ra_tooltip_editObject"),deleteObject:e.t("ra_tooltip_deleteObject"),customConfig:e.t("ra_tooltip_customConfig"),copyState:e.t("ra_tooltip_copyState"),editState:e.t("ra_tooltip_editState"),ctrlForLink:e.t("ra_tooltip_ctrlForLink"),close:e.t("ra_Close"),filter_id:e.t("ra_filter_id"),filter_name:e.t("ra_filter_name"),filter_type:e.t("ra_filter_type"),filter_role:e.t("ra_filter_role"),filter_room:e.t("ra_filter_room"),filter_func:e.t("ra_filter_func"),filter_custom:e.t("ra_filter_customs"),filterCustomsWithout:e.t("ra_filter_customs_without"),objectChangedByUser:e.t("ra_object_changed_by_user"),objectChangedBy:e.t("ra_object_changed_by"),objectChangedFrom:e.t("ra_state_changed_from"),stateChangedBy:e.t("ra_state_changed_by"),stateChangedFrom:e.t("ra_state_changed_from"),ownerGroup:e.t("ra_Owner group"),ownerUser:e.t("ra_Owner user"),showAll:e.t("ra_show_all"),deviceError:e.t("ra_Error"),deviceDisconnected:e.t("ra_Disconnected"),deviceConnected:e.t("ra_Connected"),aclOwner_read_object:e.t("ra_aclOwner_read_object"),aclOwner_read_state:e.t("ra_aclOwner_read_state"),aclOwner_write_object:e.t("ra_aclOwner_write_object"),aclOwner_write_state:e.t("ra_aclOwner_write_state"),aclGroup_read_object:e.t("ra_aclGroup_read_object"),aclGroup_read_state:e.t("ra_aclGroup_read_state"),aclGroup_write_object:e.t("ra_aclGroup_write_object"),aclGroup_write_state:e.t("ra_aclGroup_write_state"),aclEveryone_read_object:e.t("ra_aclEveryone_read_object"),aclEveryone_read_state:e.t("ra_aclEveryone_read_state"),aclEveryone_write_object:e.t("ra_aclEveryone_write_object"),aclEveryone_write_state:e.t("ra_aclEveryone_write_state"),create:e.t("ra_Create"),createBooleanState:e.t("ra_create_boolean_state"),createNumberState:e.t("ra_create_number_state"),createStringState:e.t("ra_create_string_state"),createState:e.t("ra_create_state"),createChannel:e.t("ra_create_channel"),createDevice:e.t("ra_create_device"),createFolder:e.t("ra_Create folder")},this.levelPadding=e.levelPadding||G5e;const y=this.localStorage.getItem(`${this.props.dialogName||"App"}.table`);if(y)try{const T=JSON.parse(y),d=this.props.width||"lg";this.storedWidths=JSON.parse(JSON.stringify(ze[d])),Object.keys(T).forEach(I=>{I==="id"?ze[d].idWidth=T.id:I==="nameHeader"?ze[d].widths.name=T[I]:ze[d].widths[I]!==void 0&&(ze[d].widths[I]=T[I])}),this.customWidth=!0}catch{}this.calculateColumnsVisibility()}async loadAllObjects(e){var i;const t=this.props;try{await new Promise(l=>{this.setState({updating:!0},()=>l())});const r=(t.objectsWorker?await t.objectsWorker.getObjects(e):await t.socket.getObjects(e,!0))||{};if(t.types&&ke.isWeb())for(let l=0;l{try{if(l(r[N]))this.objects[N]=r[N];else{const u=r[N]&&r[N].type;u&&(u==="channel"||u==="device"||u==="folder"||u==="adapter"||u==="instance")&&(this.objects[N]=r[N])}}catch(u){console.log(`Error by filtering of "${N}": ${u}`)}})}else if(t.types){this.objects={};const l=t.types;Object.keys(r).forEach(N=>{var L;const u=(L=r[N])==null?void 0:L.type;u&&(u==="channel"||u==="device"||u==="enum"||u==="folder"||u==="adapter"||u==="instance"||l.includes(u))&&(this.objects[N]=r[N])})}else this.objects=r;t.setObjectsReference&&t.setObjectsReference(this.objects),this.defaultHistory=this.systemConfig.common.defaultHistory,this.defaultHistory&&t.socket.getState(`system.adapter.${this.defaultHistory}.alive`).then(l=>{l!=null&&l.val||(this.defaultHistory="")}).catch(l=>window.alert(`Cannot get state: ${l}`));const o=await this.getAdditionalColumns();this.calculateColumnsVisibility(null,null,o);const{info:n,root:M}=Z0(this.objects,{imagePrefix:t.imagePrefix,root:t.root,lang:t.lang,themeType:t.themeType});this.root=M,this.info=n;const c=((i=this.state.selected)==null?void 0:i.length)&&lg(this.root,this.state.selected[0]);c&&!Sa(c,this.state.filter,t.lang,this.objects,void 0,void 0,t.customFilter,t.types)?this.setState({filter:{...Fs},columnsForAdmin:o},()=>{this.doFilter(),this.setState({loaded:!0,updating:!1},()=>this.expandAllSelected(()=>this.onAfterSelect()))}):(this.doFilter(),this.setState({loaded:!0,updating:!1,columnsForAdmin:o},()=>this.expandAllSelected(()=>this.onAfterSelect())))}catch(r){this.showError(r)}}expandAllSelected(e){const t=[...this.state.expanded];let i=!1;this.state.selected.forEach(r=>{const o=r.split("."),n=[];for(let M=0;M!this.objects[N]))&&((c=(M=this.props).onSelect)==null||c.call(M,this.state.selected,null,e))}else this.localStorage.removeItem(`${this.props.dialogName||"App"}.objectSelected`),this.state.selected.length?this.setState({selected:[]},()=>{this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}):this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}static getDerivedStateFromProps(e,t){const i={};let r=!1;return e.expertMode!==void 0&&e.expertMode!==t.filter.expertMode&&(r=!0,i.filter={...t.filter},i.filter.expertMode=e.expertMode),r?i:null}async componentDidMount(){await this.loadAllObjects(!eN),this.props.objectsWorker?this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker):await this.props.socket.subscribeObject("*",this.onObjectChange),eN=!0,window.addEventListener("contextmenu",this.onContextMenu,!0),window.addEventListener("keydown",this.onKeyPress,!0),window.addEventListener("keyup",this.onKeyPress,!0),this.props.onAllLoaded&&setTimeout(()=>{var e,t;(t=(e=this.props).onAllLoaded)==null||t.call(e)},100)}onKeyPress=e=>{e.type==="keydown"&&e.ctrlKey&&!this.ctrlPressed?(this.ctrlPressed=!0,this.tableRef.current&&(this.tableRef.current.className="highlight-link")):e.type==="keyup"&&!e.ctrlKey&&this.ctrlPressed&&(this.ctrlPressed=!1,this.tableRef.current&&(this.tableRef.current.className=""))};componentWillUnmount(){window.removeEventListener("contextmenu",this.onContextMenu,!0),window.removeEventListener("keydown",this.onKeyPress,!0),window.removeEventListener("keyup",this.onKeyPress,!0),this.props.objectsWorker?this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker,!0):this.props.socket.unsubscribeObject("*",this.onObjectChange).catch(e=>console.error(`Cannot unsubscribe *: ${e}`)),this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.objects={}}showDeleteDialog(e){var c,l,N,u;const{id:t,obj:i,item:r}=e,o=Object.keys(this.objects);o.sort();let n=0;const M=`${t}.`;for(let L=0;LM)break;(u=(N=this.props).onObjectDelete)==null||u.call(N,t,!!((c=r.children)!=null&&c.length),!((l=i.common)!=null&&l.dontDelete),n+1)}onContextMenu=e=>{this.contextMenu&&Date.now()-this.contextMenu.ts<2e3?(e.preventDefault(),this.setState({showContextMenu:{item:this.contextMenu.item,position:{left:e.clientX+2,top:e.clientY-6}}})):this.state.showContextMenu&&(e.preventDefault(),this.setState({showContextMenu:null})),this.contextMenu=null};refreshComponent(){this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.loadAllObjects(!0).then(()=>console.log("updated!")).catch(e=>this.showError(e))}renderErrorDialog(){return this.state.error?a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:!0,onClose:()=>this.setState({error:""}),"aria-labelledby":"error-dialog-title","aria-describedby":"error-dialog-description"},a.createElement(fe,{id:"alert-dialog-title"},this.props.t("ra_Error")),a.createElement(_e,null,a.createElement(as,{id:"alert-dialog-description"},this.state.error)),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.setState({error:""}),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},this.props.t("ra_Ok")))):null}showError(e){this.setState({error:typeof e=="object"?e&&typeof e.toString=="function"?e.toString():JSON.stringify(e):e})}onSelect(e,t,i){if(this.localStorage.setItem(`${this.props.dialogName||"App"}.focused`,e),!this.props.multiSelect)this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))?(this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`),this.state.selected[0]!==e?this.setState({selected:[e],selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),i&&i()}):t&&this.props.onSelect&&this.onAfterSelect(t)):(this.localStorage.setItem(`${this.props.dialogName||"App"}.selectedNonObject`,e),this.setState({selected:[],selectedNonObject:e,focused:e},()=>{this.onAfterSelect(),i&&i()}));else if(this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))){this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`);const r=[...this.state.selected],o=r.indexOf(e);o===-1?(r.push(e),r.sort()):t||r.splice(o,1),this.setState({selected:r,selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),i&&i()})}}_renderDefinedList(e){const t=[...this.possibleCols];if(t.unshift("id"),this.props.columns&&!this.props.columns.includes("buttons")){const i=t.indexOf("buttons");i!==-1&&t.splice(i,1)}return t.filter(i=>e&&(i==="val"||i==="buttons")||!e&&i!=="val"&&i!=="buttons").map(i=>{var r;return a.createElement(xc,{onClick:()=>{if(!this.state.columnsAuto&&i!=="id"){const o=[...this.state.columns||[]],n=o.indexOf(i);n===-1?(o.push(i),o.sort()):o.splice(n,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.calculateColumnsVisibility(null,o),this.setState({columns:o})}},key:i},a.createElement(ue,{edge:"start",disabled:i==="id"||this.state.columnsAuto,checked:i==="id"||!!(this.state.columnsAuto?this.visibleCols.includes(i):(r=this.state.columns)!=null&&r.includes(i)),disableRipple:!0}),a.createElement(dt,{primary:this.texts[`filter_${i}`]||this.props.t(`ra_${i}`)}))})}renderColumnsSelectorDialog(){return this.state.columnsSelectorShow?a.createElement(Ae,{onClose:()=>this.setState({columnsSelectorShow:!1}),open:!0,sx:{"& .MuiPaper-root":m.getStyle(this.props.theme,z.dialogColumns,z[`transparent_${this.state.columnsDialogTransparent}`])}},a.createElement(fe,{sx:z.fontSizeTitle},this.props.t("ra_Configure")),a.createElement(_e,{sx:z.fontSizeTitle},a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.foldersFirst,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.foldersFirst`,this.state.foldersFirst?"false":"true"),this.setState({foldersFirst:!this.state.foldersFirst})}}),label:this.props.t("ra_Folders always first")}),a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.linesEnabled,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.lines`,this.state.linesEnabled?"false":"true"),this.setState({linesEnabled:!this.state.linesEnabled})}}),label:this.props.t("ra_Show lines between rows")}),a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.columnsAuto,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.columnsAuto`,this.state.columnsAuto?"false":"true"),this.state.columnsAuto?this.state.columns?(this.calculateColumnsVisibility(!1),this.setState({columnsAuto:!1})):(this.calculateColumnsVisibility(!1,[...this.visibleCols]),this.setState({columnsAuto:!1,columns:[...this.visibleCols]})):(this.calculateColumnsVisibility(!0),this.setState({columnsAuto:!0}))}}),label:this.props.t("ra_Auto (no custom columns)")}),a.createElement(Sc,null,this._renderDefinedList(!1),this.state.columnsForAdmin&&Object.keys(this.state.columnsForAdmin).sort().map(e=>{var t;return(t=this.state.columnsForAdmin)==null?void 0:t[e].map(i=>{var r;return a.createElement(xc,{onClick:()=>{if(!this.state.columnsAuto){const o=[...this.state.columns||[]],n=`_${e}_${i.path}`,M=o.indexOf(n);M===-1?(o.push(n),o.sort()):o.splice(M,1),this.calculateColumnsVisibility(null,o),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.setState({columns:o})}},key:`${e}_${i.name}`},a.createElement(Xt,null,a.createElement(ue,{disabled:this.state.columnsAuto,edge:"start",checked:!this.state.columnsAuto&&((r=this.state.columns)==null?void 0:r.includes(`_${e}_${i.path}`)),disableRipple:!0})),a.createElement(dt,{primary:`${i.name} (${e})`}))})}),this._renderDefinedList(!0))),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.setState({columnsSelectorShow:!1}),color:"primary",startIcon:a.createElement(we,null)},this.texts.close))):null}async getAdditionalColumns(){try{const e=await this.props.socket.getAdapters();let t=null;return e.forEach(i=>t=this.parseObjectForAdmins(t,i)),t}catch(e){return console.error(`Cannot get adapters: ${e}`),null}}checkUnsubscribes(){for(let e=this.subscribes.length-1;e>=0;e--)this.recordStates.includes(this.subscribes[e])||this.unsubscribe(this.subscribes[e]);this.recordStates=[]}findItem(e,t,i,r){if(t||=e.split("."),i||=this.root,!i||!t.length)return null;if(r=(r?`${r}.`:"")+t.shift(),i.children){const o=i.children.find(n=>n.data.id===r);if(o){if(o.data.id===e)return o;if(t.length)return this.findItem(e,t,o,r)}else return null}return null}onStateChange=(e,t)=>{if(this.states[e]){const i=this.findItem(e);i!=null&&i.data.state&&(i.data.state=void 0)}t?this.states[e]=t:delete this.states[e],this.pausedSubscribes?this.statesUpdateTimer&&(clearTimeout(this.statesUpdateTimer),this.statesUpdateTimer=null):this.statesUpdateTimer||(this.statesUpdateTimer=setTimeout(()=>{this.statesUpdateTimer=null,this.forceUpdate()},300))};parseObjectForAdmins(e,t){var i;if((i=t.common)!=null&&i.adminColumns&&t.common.name){const r=t.common.adminColumns;let o;r&&typeof r!="object"?o=[r]:r&&(o=r);let n;r?n=o.map(M=>{if(typeof M!="object")return{path:M,name:M.split(".").pop()};const c=M;return c.objTypes&&typeof c.objTypes!="object"?c.objTypes=[c.objTypes]:c.objTypes||(c.objTypes=void 0),!c.name&&c.path?{path:c.path,name:c.path.split(".").pop(),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:c.path?{path:c.path,name:He(c.name||"",this.props.lang),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:(console.warn(`Admin columns for ${t._id} ignored, because path not found`),null)}).filter(M=>M):n=null,n!=null&&n.length&&(e||={},e[t.common.name]=n.sort((M,c)=>M.path>c.path?-1:M.path{if(Array.isArray(e)){let t=null;e.forEach(i=>{const{newInnerState:r,filtered:o}=this.processOnObjectChangeElement(i.id,i.obj);o||(r&&t?Object.assign(t,r):t=r)}),t&&this.setState(t),this.afterObjectUpdated()}};onObjectChange=(e,t)=>{const{newInnerState:i,filtered:r}=this.processOnObjectChangeElement(e,t);r||(i&&this.setState(i),this.afterObjectUpdated())};afterObjectUpdated(){!this.objectsUpdateTimer&&this.objects&&(this.objectsUpdateTimer=setTimeout(()=>{this.objectsUpdateTimer=null;const{info:e,root:t}=Z0(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=t,this.info=e,this.pausedSubscribes||this.doFilter()},500))}updateAliases(e){var i,r,o;if(!this.objects||!((i=this.info)!=null&&i.aliasesMap)||!(e!=null&&e.startsWith("alias.")))return;const t=Object.keys(this.objects).filter(n=>n.startsWith("alias.0"));this.info.aliasesMap={};for(const n of t){const M=this.objects[n];if((o=(r=M==null?void 0:M.common)==null?void 0:r.alias)!=null&&o.id)if(typeof M.common.alias.id=="string"){const c=M.common.alias.id;this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(n)||this.info.aliasesMap[c].push(n):this.info.aliasesMap[c]=[n]}else{const c=M.common.alias.id.read;c&&(this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(n)||this.info.aliasesMap[c].push(n):this.info.aliasesMap[c]=[n]);const l=M.common.alias.id.write;l&&(this.info.aliasesMap[l]?this.info.aliasesMap[l].includes(n)||this.info.aliasesMap[l].push(n):this.info.aliasesMap[l]=[n])}}}processOnObjectChangeElement(e,t){const i=t==null?void 0:t.type;if(t&&typeof this.props.filterFunc=="function"&&!this.props.filterFunc(t)&&i!=="channel"&&i!=="device"&&i!=="folder"&&i!=="adapter"&&i!=="instance")return{newInnerState:null,filtered:!0};let r=null;if(e.startsWith("system.adapter.")&&(t==null?void 0:t.type)==="adapter"){const o=JSON.parse(JSON.stringify(this.state.columnsForAdmin));this.parseObjectForAdmins(o,t),JSON.stringify(this.state.columnsForAdmin)!==JSON.stringify(o)&&(r={columnsForAdmin:o})}return this.objects||={},t?this.objects[e]=t:this.objects[e]&&delete this.objects[e],this.updateAliases(e),{newInnerState:r,filtered:!1}}subscribe(e){this.subscribes.includes(e)||(this.subscribes.push(e),this.pausedSubscribes||this.props.socket.subscribeState(e,this.onStateChange).catch(t=>console.error(`Cannot subscribe on state ${e}: ${t}`)))}unsubscribe(e){const t=this.subscribes.indexOf(e);t!==-1&&(this.subscribes.splice(t,1),this.states[e]&&delete this.states[e],this.props.socket.unsubscribeState(e,this.onStateChange),this.pausedSubscribes&&console.warn("Unsubscribe during pause?"))}pauseSubscribe(e){!this.pausedSubscribes&&e?(this.pausedSubscribes=!0,this.subscribes.forEach(t=>this.props.socket.unsubscribeState(t,this.onStateChange))):this.pausedSubscribes&&!e&&(this.pausedSubscribes=!1,this.subscribes.forEach(t=>this.props.socket.subscribeState(t,this.onStateChange)))}clearFilter(){JSON.stringify(this.state.filter)!==JSON.stringify(Fs)&&this.setState({filter:{...Fs},filterKey:this.state.filterKey+1},()=>{var e,t;this.doFilter(),(t=(e=this.props).onFilterChanged)==null||t.call(e,{...Fs})})}isFilterEmpty(){var e,t,i,r,o;return!!this.state.filter.id||!!this.state.filter.name||!!((e=this.state.filter.room)!=null&&e.length)||!!((t=this.state.filter.func)!=null&&t.length)||!!((i=this.state.filter.role)!=null&&i.length)||!!((r=this.state.filter.type)!=null&&r.length)||!!((o=this.state.filter.custom)!=null&&o.length)}getFilterInput(e){return a.createElement(W5e,{key:`${e}_${this.state.filterKey}`,styles:this.styles.filterInput,name:e,texts:this.texts,t:this.props.t,initialValue:this.state.filter[e],onChange:(t,i)=>{const r={...this.state.filter};i===void 0?delete r[t]:r[t]=i,this.setState({filter:r},()=>{var o,n;this.doFilter(),(n=(o=this.props).onFilterChanged)==null||n.call(o,r)})}})}getFilterSelect(e,t){return a.createElement(P5e,{key:`${e}_${this.state.filterKey}`,name:e,texts:this.texts,initialValue:this.state.filter[e]||[],values:t,onChange:(i,r)=>{const o={...this.state.filter};r===void 0?delete o[i]:o[i]=r,this.setState({filter:o},()=>{var n,M;this.doFilter(),(M=(n=this.props).onFilterChanged)==null||M.call(n,o)})}})}getFilterSelectRole(){return this.getFilterSelect("role",this.info.roles.map(e=>e.role))}getFilterSelectRoom(){const e=this.info.roomEnums.map(t=>{var i,r,o,n;return{name:He((r=(i=this.objects[t])==null?void 0:i.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(be,{src:((n=(o=this.objects[t])==null?void 0:o.common)==null?void 0:n.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("room",e)}getFilterSelectFunction(){const e=this.info.funcEnums.map(t=>{var i,r,o,n;return{name:He((r=(i=this.objects[t])==null?void 0:i.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(be,{src:((n=(o=this.objects[t])==null?void 0:o.common)==null?void 0:n.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("func",e)}getFilterSelectType(){const e=this.info.types.map(t=>({name:t,value:t,icon:q0[t]||null}));return this.getFilterSelect("type",e)}getFilterSelectCustoms(){if(this.info.customs.length>1){const e=this.info.customs.map(t=>({name:t==="_"?this.texts.filterCustomsWithout:t,value:t,icon:t==="_"?null:a.createElement(be,{src:_o(this.objects,t,this.props.lang,this.imagePrefix)||"",style:z.selectIcon})}));return this.getFilterSelect("custom",e)}return null}onExpandAll(e,t){var r;const i=e||this.root;t||=[],(r=i==null?void 0:i.children)==null||r.forEach(o=>{o.data.sumVisibility&&(t.push(o.data.id),this.onExpandAll(o,t))}),i===this.root&&(t.sort(),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t}))}onCollapseAll(){this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify([])),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,"[]"),this.setState({expanded:[],depth:0,selected:[]},()=>this.onAfterSelect())}expandDepth(e,t,i){var r;e||=this.root,t>0&&((r=e.children)==null||r.forEach(o=>{o.data.sumVisibility&&(jr(i,o.data.id)||(i.push(o.data.id),i.sort()),t-1>0&&this.expandDepth(o,t-1,i))}))}static collapseDepth(e,t){return t.filter(i=>i.split(".").length<=e)}onExpandVisible(){if(this.state.depth<9){const e=this.state.depth+1,t=[...this.state.expanded];this.root&&this.expandDepth(this.root,e,t),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}onStatesViewVisible(){const e=!this.state.statesView;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectStatesView`,JSON.stringify(e)),this.setState({statesView:e})}onCollapseVisible(){if(this.state.depth>0){const e=this.state.depth-1,t=xo.collapseDepth(e,this.state.expanded);this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}getEnumsForId=e=>{const t=[];return this.info.enums.forEach(i=>{var r,o,n;if((n=(o=(r=this.objects[i])==null?void 0:r.common)==null?void 0:o.members)!=null&&n.includes(e)){const M={_id:this.objects[i]._id,common:JSON.parse(JSON.stringify(this.objects[i].common)),native:this.objects[i].native,type:"enum"};M.common&&(delete M.common.members,delete M.common.custom,delete M.common.mobile),t.push(M)}}),t.length?t:void 0};_createAllEnums=async(e,t)=>{var i,r;for(let o=0;or)break}return e}return[]}async _exportObjects(e){var o;if(e.isAll){H0("allObjects.json",this.objects,e);return}if(!(this.state.selected.length||this.state.selectedNonObject)){window.alert(this.props.t("ra_Save of objects-tree is not possible"));return}const t={},i=this.state.selected[0]||this.state.selectedNonObject,r=this._getSelectedIdsForExport();for(const n of r){if(t[n]=JSON.parse(JSON.stringify(this.objects[n])),((o=t[n])==null?void 0:o.type)==="state"&&!e.noStatesByExportImport){const M=await this.props.socket.getState(n);M&&(t[n].val=M.val,t[n].ack=M.ack)}if(t[n].common){const M=this.getEnumsForId(n);M&&(t[n].common.enums=M)}}H0(`${i}.json`,t,e)}renderExportDialog(){return this.state.showExportDialog===!1?null:a.createElement(Ae,{open:!0,maxWidth:"lg"},a.createElement(fe,null,this.props.t("ra_Select type of export")),a.createElement(_e,null,a.createElement(as,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(a.Fragment,null,this.props.t("ra_You can export all objects or just the selected branch."),a.createElement("br",null),this.props.t("ra_Selected %s object(s)",this.state.showExportDialog),a.createElement("br",null),a.createElement(V,{control:a.createElement(ue,{checked:this.state.noStatesByExportImport,onChange:e=>this.setState({noStatesByExportImport:e.target.checked})}),label:this.props.t("ra_Do not export values of states")}),a.createElement("br",null),this.props.t("These options can reduce the size of the export file:"),a.createElement(V,{control:a.createElement(ue,{checked:this.state.beautifyJsonExport,onChange:e=>this.setState({beautifyJsonExport:e.target.checked})}),label:this.props.t("Beautify JSON output")}),a.createElement("br",null),a.createElement(V,{control:a.createElement(ue,{checked:this.state.excludeSystemRepositoriesFromExport,onChange:e=>this.setState({excludeSystemRepositoriesFromExport:e.target.checked})}),label:this.props.t("Exclude system repositories from export JSON")}),a.createElement(V,{control:a.createElement(ue,{checked:this.state.excludeTranslations,onChange:e=>this.setState({excludeTranslations:e.target.checked})}),label:this.props.t("Exclude translations (except english) from export JSON")})):null)),a.createElement(xe,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(q,{color:"grey",variant:"outlined",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!0,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_All objects")),"(",Object.keys(this.objects).length,")"):a.createElement(q,{color:"grey",variant:"outlined",startIcon:a.createElement(Ea,null),onClick:()=>this.setState({showAllExportOptions:!0})},this.props.t("ra_Advanced options")),a.createElement(q,{color:"primary",variant:"contained",autoFocus:!0,onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!1,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_Only selected")),"(",this.state.showExportDialog,")"),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1}),startIcon:a.createElement(we,null)},this.props.t("ra_Cancel"))))}renderRenameDialog(){var t;if(!this.state.showRenameDialog)return null;const e=this.props.objectMoveRenameDialog;return a.createElement(e,{expertMode:this.props.expertMode,onClose:()=>this.setState({showRenameDialog:null}),id:this.state.showRenameDialog.id,childrenIds:this.state.showRenameDialog.childrenIds,theme:this.props.theme,socket:this.props.socket,t:this.props.t,objectType:(t=this.objects[this.state.showRenameDialog.id])==null?void 0:t.type})}async parseJsonFile(e){try{const t=JSON.parse(e),i=Object.keys(t).length,r=t._id;if(r===void 0&&i)await this.loadObjects(t),window.alert(this.props.t("ra_%s object(s) processed",i));else{if(!r)return window.alert(this.props.t("ra_Invalid structure"));try{let o,n,M;if(t.common.enums&&(o=t.common.enums,delete t.common.enums),t.val&&(n=t.val,delete t.val),t.ack!==void 0&&(M=t.ack,delete t.ack),await this.props.socket.setObject(t._id,t),t.type==="state")if(n!=null)await this.props.socket.setState(t._id,n,M===void 0?!0:M);else{const c=await this.props.socket.getState(t._id);(!c||c.val===null||c.val===void 0)&&await this.props.socket.setState(t._id,t.common.def===void 0?null:t.common.def,!0)}o&&await this._createAllEnums(o,t._id),window.alert(this.props.t("ra_%s was imported",t._id))}catch(o){window.alert(o)}}}catch(t){window.alert(t)}}handleJsonUpload(e){var r;const t=e.target,i=((r=t.files)==null?void 0:r.length)&&t.files[0];if(i){const o=new FileReader;o.onload=n=>{var M;return this.parseJsonFile((M=n.target)==null?void 0:M.result),null},o.readAsText(i)}else window.alert(this.props.t("ra_Failed to open JSON File"))}toolTipObjectCreating=()=>{var i,r;const{t:e}=this.props;let t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];if(this.state.selected.length||this.state.selectedNonObject){const o=this.state.selected[0]||this.state.selectedNonObject;if(!(o.split(".").length<2||this.objects[o]&&((i=this.objects[o])==null?void 0:i.type)==="state"))if(this.state.filter.expertMode)switch((r=this.objects[o])==null?void 0:r.type){case"device":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"folder":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"channel":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:1},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break}else(o.startsWith("alias.0")||o.startsWith("0_userdata"))&&(t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:7},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:8},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))])}return t.length?t:e("ra_Add new child object to selected parent")};onOpenFile(){const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",t=>this.handleJsonUpload(t),!1),e.click()}renderInputJsonDialog(){const e=this.props.objectBrowserInsertJsonObjects;return this.state.showImportDialog?a.createElement(e,{onClose:t=>{this.setState({showImportDialog:!1}),t&&this.parseJsonFile(t)},themeName:this.props.themeName,themeType:this.props.themeType,t:this.props.t}):null}getToolbar(){let e=!1;if(this.state.selected.length||this.state.selectedNonObject){const t=this.state.selected[0]||this.state.selectedNonObject;t.split(".").length<2||this.objects[t]&&this.objects[t].type==="state"?e=!1:(this.state.filter.expertMode||t.startsWith("alias.0")||t.startsWith("0_userdata"))&&(e=!0)}return a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center",overflowX:"auto"}},a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},a.createElement(Le,{title:this.props.t("ra_Refresh tree"),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(W,{onClick:()=>this.refreshComponent(),disabled:this.state.updating,size:"large"},a.createElement(SN,null)))),this.props.showExpertButton&&!this.props.expertMode&&a.createElement(Le,{title:this.props.t("ra_expertMode"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expertMode",color:this.state.filter.expertMode?"secondary":"default",onClick:()=>{const t={...this.state.filter};t.expertMode=!t.expertMode,this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(t)),this.setState({filter:t})},size:"large"},a.createElement(Ea,null))),!this.props.disableColumnSelector&&this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Configure"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"columnSelector",color:this.state.columnsAuto?"primary":"default",onClick:()=>this.setState({columnsSelectorShow:!0}),size:"large"},a.createElement(zy,null))),this.props.width!=="xs"&&this.state.expandAllVisible&&a.createElement(Le,{title:this.props.t("ra_Expand all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expandAll",onClick:()=>this.onExpandAll(),size:"large"},a.createElement(lo,null))),a.createElement(Le,{title:this.props.t("ra_Collapse all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"collapseAll",onClick:()=>this.onCollapseAll(),size:"large"},a.createElement(Ti,null))),this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Expand one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expandVisible",color:"primary",onClick:()=>this.onExpandVisible(),size:"large"},a.createElement(kc,{badgeContent:this.state.depth,color:"secondary",sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}})},a.createElement(lo,null)))),this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Collapse one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"collapseVisible",color:"primary",onClick:()=>this.onCollapseVisible(),size:"large"},a.createElement(kc,{sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}}),badgeContent:this.state.depth,color:"secondary"},a.createElement(Ti,null)))),this.props.objectStatesView&&a.createElement(Le,{title:this.props.t("ra_Toggle the states view"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>this.onStatesViewVisible(),size:"large"},a.createElement(cy,{color:this.state.statesView?"primary":"inherit"}))),a.createElement(Le,{title:this.props.t("ra_Show/Hide object descriptions"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.desc`,this.state.showDescription?"false":"true"),this.setState({showDescription:!this.state.showDescription})},size:"large"},a.createElement(jy,{color:this.state.showDescription?"primary":"inherit"}))),this.props.objectAddBoolean?a.createElement(Le,{title:this.toolTipObjectCreating(),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(W,{disabled:!e,onClick:()=>this.setState({modalNewObj:{id:this.state.selected[0]||this.state.selectedNonObject}}),size:"large"},a.createElement(qn,null)))):null,this.props.objectImportExport&&a.createElement(Le,{title:this.props.t("ra_Add objects tree from JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:t=>{this.props.objectBrowserInsertJsonObjects?this.setState({showImportMenu:t.currentTarget}):this.onOpenFile()},size:"large"},a.createElement(go,null))),this.props.objectBrowserInsertJsonObjects?a.createElement(ws,{anchorEl:this.state.showImportMenu,open:!!this.state.showImportMenu,onClose:()=>this.setState({showImportMenu:null})},a.createElement(re,{onClick:()=>this.setState({showImportMenu:null},()=>this.onOpenFile())},a.createElement(Xt,null,a.createElement(yy,null)),a.createElement(dt,null,this.props.t("ra_From file"))),a.createElement(re,{onClick:()=>this.setState({showImportMenu:null,showImportDialog:!0})},a.createElement(Xt,null,a.createElement(Hj,null)),a.createElement(dt,null,this.props.t("ra_From text")))):null,this.props.objectImportExport&&(!!this.state.selected.length||this.state.selectedNonObject)&&a.createElement(Le,{title:this.props.t("ra_Save objects tree as JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>this.setState({showExportDialog:this._getSelectedIdsForExport().length}),size:"large"},a.createElement(go,{style:{transform:"rotate(180deg)"}})))),!!this.props.objectBrowserEditObject&&this.props.width!=="xs"&&a.createElement("div",{style:{display:"flex",whiteSpace:"nowrap"}},`${this.props.t("ra_Objects")}: ${Object.keys(this.info.objects).length}, ${this.props.t("ra_States")}: ${Object.keys(this.info.objects).filter(t=>this.info.objects[t].type==="state").length}`),this.props.objectEditBoolean&&a.createElement(Le,{title:this.props.t("ra_Edit custom config"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>{var i;const t=this.root?cg(this.root,"state",this.objects):[];t.length?(this.pauseSubscribe(!0),t.length===1&&(this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,this.state.selected[0]),(i=this.props.router)==null||i.doNavigate(null,"custom",this.state.selected[0])),this.setState({customDialog:t,customDialogAll:!0})):this.setState({toast:this.props.t("ra_please select object")})},size:"large"},a.createElement(Bj,null))))}toggleExpanded(e){const t=JSON.parse(JSON.stringify(this.state.expanded)),i=t.indexOf(e);i===-1?(t.push(e),t.sort()):t.splice(i,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t})}onCopy(e,t){e.stopPropagation(),e.preventDefault(),t&&(m.copyToClipboard(t),t.length<50?this.setState({toast:this.props.t("ra_Copied %s",t)}):this.setState({toast:this.props.t("ra_Copied")}))}renderTooltipAccessControl=e=>{if(!e)return null;const t=[{value:"0x400",valueNum:1024,title:"read",group:"Owner"},{value:"0x200",valueNum:512,title:"write",group:"Owner"},{value:"0x40",valueNum:64,title:"read",group:"Group"},{value:"0x20",valueNum:32,title:"write",group:"Group"},{value:"0x4",valueNum:4,title:"read",group:"Everyone"},{value:"0x2",valueNum:2,title:"write",group:"Everyone"}],i=[],r=o=>{const n=e[o];t.forEach((M,c)=>{n&M.valueNum&&i.push(a.createElement("span",{key:o+c},this.texts[`acl${M.group}_${M.title}_${o}`],",",a.createElement("span",{style:o==="object"?z.rightsObject:z.rightsState},M.value)))})};return i.push(a.createElement("span",{key:"group"},`${this.texts.ownerGroup}: ${(e.ownerGroup||"").replace("system.group.","")}`)),i.push(a.createElement("span",{key:"owner"},`${this.texts.ownerUser}: ${(e.owner||"").replace("system.user.","")}`)),r("object"),e.state&&r("state"),i.length?a.createElement("span",{style:z.tooltipAccessControl},i.map(o=>o)):null};renderColumnButtons(e,t){var n,M,c,l;if(!t.data.obj)return this.props.onObjectDelete||this.props.objectEditOfAccessControl?a.createElement("div",{style:z.buttonDiv},this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonsEmptyButton,...z.cellButtonMinWidth},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:{height:15}},"---")):null,this.props.onObjectDelete&&((n=t.children)!=null&&n.length)?a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonsButtonAlone},size:"small","aria-label":"delete",title:this.texts.deleteObject,onClick:()=>{var g;const N=Object.keys(this.objects);N.sort();let u=0;const L=`${e}.`;for(let j=0;jL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((g=t.children)!=null&&g.length),!1,u+1)}},a.createElement(wt,{style:z.cellButtonsButtonIcon})):null):null;t.data.aclTooltip=t.data.aclTooltip||this.renderTooltipAccessControl(t.data.obj.acl);const i=t.data.obj.acl?t.data.obj.type==="state"?t.data.obj.acl.state:t.data.obj.acl.object:0,r=t.data.obj.acl&&(t.data.obj.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object),o=this.state.filter.expertMode||K0(t.data.id);return[this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(Le,{key:"acl",title:t.data.aclTooltip,slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonMinWidth,opacity:1},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:z.aclText},Number.isNaN(Number(i))?Number(r).toString(16):Number(i).toString(16)))):a.createElement("div",{key:"aclEmpty",style:z.cellButtonMinWidth}),o?a.createElement(W,{key:"edit",sx:{marginRight:"2px",...z.cellButtonsButton},size:"small","aria-label":"edit",title:this.texts.editObject,onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.setState({editObjectDialog:e,editObjectAlias:!1})}},a.createElement(or,{style:z.cellButtonsButtonIcon})):a.createElement(J,{component:"div",key:"editDisabled",sx:z.cellButtonsButton}),this.props.onObjectDelete&&((M=t.children)!=null&&M.length||!((c=t.data.obj.common)!=null&&c.dontDelete))?a.createElement(W,{key:"delete",sx:z.cellButtonsButton,size:"small","aria-label":"delete",onClick:()=>{var g,j,y;const N=Object.keys(this.objects);N.sort();let u=0;const L=`${e}.`;for(let T=0;TL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((g=t.children)!=null&&g.length),!((y=(j=t.data.obj)==null?void 0:j.common)!=null&&y.dontDelete),u)},title:this.texts.deleteObject},a.createElement(wt,{style:z.cellButtonsButtonIcon})):null,this.props.objectCustomDialog&&this.info.hasSomeCustoms&&t.data.obj.type==="state"&&((l=t.data.obj.common)==null?void 0:l.type)!=="file"?a.createElement(W,{sx:{...z.cellButtonsButton,...t.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms},key:"custom",size:"small","aria-label":"config",title:this.texts.customConfig,onClick:()=>{var N;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.pauseSubscribe(!0),(N=this.props.router)==null||N.doNavigate(null,"customs",e),this.setState({customDialog:[e],customDialogAll:!1})}},a.createElement(ea,{style:z.cellButtonsButtonIcon})):null]}readHistory(e){var t,i;if(window.sparkline&&this.defaultHistory&&((i=(t=this.objects[e])==null?void 0:t.common)!=null&&i.custom)&&this.objects[e].common.custom[this.defaultHistory]){const r=new Date;r.setHours(r.getHours()-24),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0);const o=r.getTime();this.props.socket.getHistory(e,{instance:this.defaultHistory,start:o,end:Date.now(),step:36e5,from:!1,ack:!1,q:!1,addId:!1,aggregate:"minmax"}).then(n=>{const M=window.document.getElementsByClassName("sparkline");for(let c=0;cconsole.warn(`Cannot read history: ${n}`))}}getTooltipInfo(e,t){var l,N,u;const i=this.objects[e],r=this.states[e],{valFull:o,fileViewer:n}=Wn({state:r,obj:i,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,full:!0}),M=[];o==null||o.forEach(L=>{L.t===this.texts.quality&&r.q?(M.push(a.createElement("div",{style:z.cellValueTooltipBoth,key:L.t},L.t,": ",L.v)),L.nbr||M.push(a.createElement("br",{key:`${L.t}_br`}))):(M.push(a.createElement("div",{style:z.cellValueTooltipTitle,key:L.t},L.t,": ")),M.push(a.createElement("div",{style:z.cellValueTooltipValue,key:`${L.t}_v`},L.v)),L.nbr||M.push(a.createElement("br",{key:`${L.t}_br`})))});const c=((l=i==null?void 0:i.common)==null?void 0:l.role)||"";n==="image"?M.push(a.createElement("img",{style:z.cellValueTooltipImage,src:r.val,alt:e})):c==="url"||i.common.role==="url.self"||i.common.role==="url.blank"?M.unshift(a.createElement("div",{key:"ctrl",style:{textDecoration:"underline",fontWeight:"bold"}},this.texts.ctrlForLink)):this.defaultHistory&&((u=(N=i==null?void 0:i.common)==null?void 0:N.custom)!=null&&u[this.defaultHistory])&&M.push(a.createElement("svg",{key:"sparkline",className:"sparkline","data-id":e,style:{fill:"#3d85de"},width:"200",height:"30",strokeWidth:"3"})),this.setState({tooltipInfo:{el:M,id:e}},()=>t&&t())}renderColumnValue(e,t,i){var c,l;const r=t.data.obj;if(!r||!this.states)return null;if(((c=r.common)==null?void 0:c.type)==="file")return a.createElement(J,{component:"div",sx:{...z.cellValueText,...z.cellValueFile}},"[file]");if(!this.states[e])return r.type==="state"&&(this.recordStates.includes(e)||this.recordStates.push(e),this.states[e]={val:null},this.subscribe(e)),null;this.recordStates.includes(e)||this.recordStates.push(e);const o=this.states[e];let n=t.data.state;if(!n){const{valText:N}=Wn({state:o,obj:r,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma}),u=[];if(t.data.state={valTextRx:u},u.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}valText`,style:{whiteSpace:"nowrap",display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}},N.v.toString())),N.u&&u.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,style:z.cellValueTextUnit,key:`${N.v.toString()}unit`},N.u)),N.s!==void 0&&u.push(a.createElement("span",{style:z.cellValueTextState,className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}states`},"(",N.s,")")),!i){const L=N.c!==void 0?N.c:N.v||"";u.push(a.createElement(Bs,{className:"copyButton",style:this.styles.iconCopy,onClick:g=>this.onCopy(g,L),key:"cc"}))}n=t.data.state}n.style=B5e({state:o,isExpertMode:this.state.filter.expertMode,isButton:t.data.button,nonAckColor:this.props.theme.palette.nonAck});let M=n.valTextRx;return this.state.filter.expertMode||(t.data.button?M=[a.createElement(b5e,{key:"button",style:{color:n.style.color,...z.cellValueButton}})]:t.data.switch&&(M=[a.createElement(br,{key:"switch",sx:{"& .MuiSwitch-thumb":{color:n.style.color},"& .MuiSwitch-track":{backgroundColor:this.states[e].val&&this.state.selected.includes(e)?this.props.themeType==="dark"?"#FFF !important":"#111 !important":void 0}},checked:!!this.states[e].val})])),a.createElement(Le,{key:"value",title:(l=this.state.tooltipInfo)==null?void 0:l.el,slotProps:{popper:{sx:z.cellValueTooltipBox},tooltip:{sx:z.cellValueTooltip}},onOpen:()=>this.getTooltipInfo(e,()=>this.readHistory(e)),onClose:()=>{var N;return((N=this.state.tooltipInfo)==null?void 0:N.id)===e&&this.setState({tooltipInfo:null})}},a.createElement(J,{component:"div",style:n.style,className:t.data.url?"iob-link":void 0,sx:{...z.cellValueText,height:i?void 0:$e,"& .admin-button:active":{transform:"translate(0, 2px)"}}},M))}_syncEnum(e,t,i,r){var M,c,l;if(!(t!=null&&t.length)){r&&r();return}const o=t.pop()||"",n=[];if((M=this.info.objects[o])!=null&&M.common){if((c=this.info.objects[o].common.members)!=null&&c.length){const N=this.info.objects[o].common.members.indexOf(e);if(N!==-1&&!i.includes(o)){const u=JSON.parse(JSON.stringify(this.info.objects[o]));u.common.members.splice(N,1),n.push(this.props.socket.setObject(o,u).then(()=>this.info.objects[o]=u).catch(L=>this.showError(L)))}}if(i.includes(o)&&!((l=this.info.objects[o].common.members)!=null&&l.includes(e))){const N=JSON.parse(JSON.stringify(this.info.objects[o]));N.common.members||=[],N.common.members.push(e),N.common.members.sort(),n.push(this.props.socket.setObject(o,N).then(()=>this.info.objects[o]=N).catch(u=>this.showError(u)))}}Promise.all(n).then(()=>{setTimeout(()=>this._syncEnum(e,t,i,r),0)})}syncEnum(e,t,i){const r=[...this.info[t==="func"?"funcEnums":"roomEnums"]];return new Promise(o=>{this._syncEnum(e,r,i,()=>{o()})})}renderEnumDialog(){if(!this.state.enumDialog)return null;const e=this.state.enumDialog.type,t=this.state.enumDialog.item,i=this.state.enumDialogEnums,r=this.state.enumDialog.enumsOriginal,o=(e==="room"?this.info.roomEnums:this.info.funcEnums).map(n=>{var M,c;return{name:He(((c=(M=this.objects[n])==null?void 0:M.common)==null?void 0:c.name)||n.split(".").pop()||"",this.props.lang),value:n,icon:_o(this.objects,n,this.props.lang,this.imagePrefix)}}).sort((n,M)=>n.name>M.name?1:-1);return o.forEach(n=>{n.icon&&typeof n.icon=="string"&&(n.icon=a.createElement(J,{style:z.enumIconDiv},a.createElement("img",{src:n.icon,style:z.enumIcon,alt:n.name})))}),a.createElement(Ae,{sx:{"& .MuiPaper-root":z.enumDialog},onClose:()=>this.setState({enumDialog:null}),"aria-labelledby":"enum-dialog-title",open:!0},a.createElement(fe,{id:"enum-dialog-title",style:{display:"flex",justifyContent:"space-between",width:"100%",flexWrap:"nowrap",gap:8,paddingRight:12}},e==="func"?this.props.t("ra_Define functions"):this.props.t("ra_Define rooms"),a.createElement(bt,{color:"primary",disabled:r===JSON.stringify(i),size:"small",onClick:()=>this.syncEnum(t.data.id,e,i).then(()=>this.setState({enumDialog:null,enumDialogEnums:null}))},a.createElement(We,null))),a.createElement(Sc,{sx:{"&.MuiList-root":z.enumList}},o.map(n=>{let M,c,l;typeof n=="object"?(M=n.value,c=n.name,l=n.icon):(M=n,c=n);const N=`checkbox-list-label-${M}`;return a.createElement(Vg,{sx:z.headerCellSelectItem,key:M,onClick:()=>{const u=i.indexOf(M),L=JSON.parse(JSON.stringify(this.state.enumDialogEnums));u===-1?(L.push(M),L.sort()):L.splice(u,1),this.setState({enumDialogEnums:L})},secondaryAction:l},a.createElement(Xt,{sx:{"&.MuiListItemIcon-root":z.enumCheckbox}},a.createElement(ue,{edge:"start",checked:i.includes(M),tabIndex:-1,disableRipple:!0,slotProps:{input:{"aria-labelledby":N}}})),a.createElement(dt,{id:N},c))})))}renderEditRoleDialog(){var e,t;if(!this.state.roleDialog||!this.props.objectBrowserEditRole)return null;if(this.state.roleDialog&&this.props.objectBrowserEditRole){const i=this.props.objectBrowserEditRole;return a.createElement(i,{key:"objectBrowserEditRole",id:this.state.roleDialog,socket:this.props.socket,t:this.props.t,roleArray:this.info.roles,commonType:(t=(e=this.info.objects[this.state.roleDialog])==null?void 0:e.common)==null?void 0:t.type,onClose:r=>{r&&(this.info.objects[this.state.roleDialog]=r),this.setState({roleDialog:null})}})}return null}onColumnsEditCustomDialogClose(e){var i,r;const t=this.customColumnDialog;if(e){let o=t.value;t.type==="boolean"?o=o==="true"||o===!0:t.type==="number"&&(o=parseFloat(o)),this.customColumnDialog=null,this.props.socket.getObject(((r=(i=this.state.columnsEditCustomDialog)==null?void 0:i.obj)==null?void 0:r._id)||"").then(n=>{var M;if(n&&F5e(n,(M=this.state.columnsEditCustomDialog)==null?void 0:M.it,o))return this.props.socket.setObject(n._id,n);throw new Error(this.props.t("ra_Cannot update attribute, because not found in the object"))}).then(()=>this.setState({columnsEditCustomDialog:null})).catch(n=>this.showError(n))}else this.customColumnDialog=null,this.setState({columnsEditCustomDialog:null})}renderColumnsEditCustomDialog(){if(!this.state.columnsEditCustomDialog)return null;if(!this.customColumnDialog){const e=X0(this.state.columnsEditCustomDialog.obj,this.state.columnsEditCustomDialog.it);this.customColumnDialog={type:this.state.columnsEditCustomDialog.it.type||typeof e,initValue:(e??"").toString(),value:(e??"").toString()}}return a.createElement(Ae,{onClose:()=>this.setState({columnsEditCustomDialog:null}),maxWidth:"md","aria-labelledby":"custom-dialog-title",open:!0},a.createElement(fe,{id:"custom-dialog-title"},`${this.props.t("ra_Edit object field")}: ${this.state.columnsEditCustomDialog.obj._id}`),a.createElement(_e,null,a.createElement(as,{id:"alert-dialog-description"},this.customColumnDialog.type==="boolean"?a.createElement(V,{control:a.createElement(ue,{onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),defaultChecked:this.customColumnDialog.value==="true",onChange:e=>{const t=this.customColumnDialog;t.value=e.target.checked.toString();const i=t.value!==t.initValue;i===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:i})}}),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}):a.createElement(Te,{variant:"standard",defaultValue:this.customColumnDialog.value,fullWidth:!0,onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`,onChange:e=>{const t=this.customColumnDialog;t.value=e.target.value;const i=t.value!==t.initValue;i===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:i})},autoFocus:!0}))),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(!0),disabled:!this.state.customColumnDialogValueChanged,color:"primary",startIcon:a.createElement(We,null)},this.props.t("ra_Update")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(),startIcon:a.createElement(we,null)},this.props.t("ra_Cancel"))))}renderCustomValue(e,t,i){const r=X0(e,t);return r!=null?t.edit&&!this.props.notEditable&&(!t.objTypes||t.objTypes.includes(e.type))?a.createElement(J,{component:"div",style:{...z.columnCustom,...z.columnCustomEditable,...z[`columnCustom_${t.align}`]},onClick:()=>this.setState({columnsEditCustomDialog:{item:i,it:t,obj:e},customColumnDialogValueChanged:!1})},r):a.createElement(J,{component:"div",style:{...z.columnCustom,...z[`columnCustom_${t.align}`]}},r):null}renderAliasLink(e,t,i){const r=t||0,o=this.objects[this.info.aliasesMap[e][r]].common.alias.id;return o?a.createElement(J,{component:"div",onClick:n=>{n.stopPropagation(),n.preventDefault();const M=this.info.aliasesMap[e][r];this.info.aliasesMap[e].length>1&&this.setState({aliasMenu:""}),this.onSelect(M),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(M)),100)},sx:i||this.styles.aliasAlone},a.createElement("span",{className:"admin-browser-arrow"},typeof o=="string"||o.read===e&&o.write===e?"↔":o.read===e?"→":"←"),this.info.aliasesMap[e][r]):null}renderLeaf(e,t,i){var bi,Ui,$i,Yr,Qr,hc,zc,wc,Ic,Cc,pc,Ac,mc,fc;const r=e.data.id;i.count++,t=t===void 0?this.state.expanded.includes(r):t;let o;const n=e.data.obj,M=n==null?void 0:n.type;e.children||M==="folder"||M==="device"||M==="channel"||M==="meta"?o=t?a.createElement(lo,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):a.createElement(Ti,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):n&&n.common&&n.common.write===!1&&n.type==="state"?o=a.createElement(E5e,{style:this.styles.cellIdIconDocument}):o=a.createElement(O5e,{style:this.styles.cellIdIconDocument});let c=null;e.data.icon&&(typeof e.data.icon=="string"?e.data.icon.length<3?c=a.createElement("span",{className:"iconOwn",style:z.cellIdIconOwn},e.data.icon):c=a.createElement(be,{style:z.cellIdIconOwn,className:"iconOwn",src:e.data.icon,alt:""}):c=e.data.icon);const l=n==null?void 0:n.common,N=(n==null?void 0:n.type)&&q0[n.type]||a.createElement("div",{className:"itemIcon"}),u=this.levelPadding*(e.data.level||0);if(e.data.lang!==this.props.lang){const{rooms:v,per:ie}=Ng(this.info,r,this.props.lang);e.data.rooms=v.join(", "),e.data.per=ie;const{funcs:Je,pef:Oe}=Lg(this.info,r,this.props.lang);e.data.funcs=Je.join(", "),e.data.pef=Oe,e.data.lang=this.props.lang}const L=this.props.multiSelect&&this.objects[r]&&(!this.props.types||this.props.types.includes(this.objects[r].type))?a.createElement(ue,{style:z.checkBox,checked:this.state.selected.includes(r)}):null;let g=!this.props.notEditable&&M==="state"&&(this.state.filter.expertMode||(l==null?void 0:l.write)!==!1);this.props.objectBrowserViewFile&&(l==null?void 0:l.type)==="file"&&(g=!0);const j=!this.props.notEditable&&this.objects[r]&&(this.state.filter.expertMode||M==="state"||M==="channel"||M==="device"),y=this.state.statesView&&(M==="state"||M==="channel"||M==="device");let T="";const d=[];if(y&&(T=(bi=this.states[r])==null?void 0:bi.from,T===void 0?T=" ":(T=T?T.replace(/^system\.adapter\.|^system\./,""):"",d.push(`${this.texts.stateChangedFrom} ${T}`)),n!=null&&n.user)){const v=n.user.replace("system.user.","");T+=`/${v}`,d.push(`${this.texts.stateChangedBy} ${v}`)}n&&(n.from&&d.push(`${this.texts.objectChangedFrom} ${n.from.replace(/^system\.adapter\.|^system\./,"")}`),n.user&&d.push(`${this.texts.objectChangedBy} ${n.user.replace(/^system\.user\./,"")}`),n.ts&&d.push(`${this.texts.objectChangedByUser} ${m.formatDate(new Date(n.ts),this.props.dateFormat||this.systemConfig.common.dateFormat)}`));let I=!1,w=null;r.startsWith("alias.")&&((Ui=l==null?void 0:l.alias)!=null&&Ui.id)?(I=typeof l.alias.id=="object",I?w=a.createElement("div",{style:z.cellIdAliasReadWriteDiv},l.alias.id.read?a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id.read),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.read)),100)},sx:this.styles.aliasReadWrite},"←",l.alias.id.read):null,l.alias.id.write?a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id.write),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.write)),100)},sx:this.styles.aliasReadWrite},"→",l.alias.id.write):null):w=a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id)),100)},sx:this.styles.aliasAlone},"→",l.alias.id)):this.info.aliasesMap[r]&&(this.info.aliasesMap[r].length>1?w=a.createElement(J,{component:"div",id:`alias_${r}`,onClick:v=>{v.stopPropagation(),v.preventDefault(),this.setState({aliasMenu:r})},sx:this.styles.aliasAlone},this.props.t("ra_%s links from aliases",this.info.aliasesMap[r].length)):w=this.renderAliasLink(r,0));let A=l==null?void 0:l.color,p;if(A&&!this.state.selected.includes(r)){const v=this.props.themeName==="dark"?"#1f1f1f":this.props.themeName==="blue"?"#222a2e":"#FFFFFF";m.colorDistance(A,v)<1e3&&(p=this.props.themeType==="dark"?"#9a9a9a":"#565656")}let h=!1;r==="0_userdata"?(A=og(this.props.themeType),h=!0):r==="alias"?(A=ng(this.props.themeType),h=!0):r==="javascript"?(A=Y5e(this.props.themeType),h=!0):r==="system"?(A=ag(this.props.themeType),h=!0):r==="system.adapter"?A=Mg(this.props.themeType):(!A||this.state.selected.includes(r))&&(A="inherit");const C=[];if(l!=null&&l.statusStates){const v={};Object.keys(l.statusStates).forEach(Je=>{var Tt;let Oe=l.statusStates[Je];Oe.split(".").length<3&&(Oe=`${r}.${Oe}`),v[Je]=Oe,this.states[Oe]?this.recordStates.includes(Oe)||this.recordStates.push(Oe):((Tt=this.objects[Oe])==null?void 0:Tt.type)==="state"&&(this.recordStates.includes(Oe)||this.recordStates.push(Oe),this.states[Oe]={val:null},this.subscribe(Oe))});let ie=!1;l.statusStates.errorId&&this.states[v.errorId]&&this.states[v.errorId].val&&(A=this.props.themeType==="dark"?gg:jg,ie=!0,C.push(a.createElement(Kj,{key:"error",style:this.styles.iconDeviceError}))),v.onlineId&&this.states[v.onlineId]?ie?this.states[v.onlineId].val?C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected})):C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected})):this.states[v.onlineId].val?(A=this.props.themeType==="dark"?ka:va,C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected}))):(A=this.props.themeType==="dark"?Ya:Qa,C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected}))):v.offlineId&&this.states[v.offlineId]&&(ie?this.states[v.offlineId].val?C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected})):C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected})):this.states[v.offlineId].val?(A=this.props.themeType==="dark"?Ya:Qa,C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected}))):(A=this.props.themeType==="dark"?ka:va,C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected}))))}const E=y?m.quality2text((($i=this.states[r])==null?void 0:$i.q)||0).join(", "):null;let O=((Yr=e.data)==null?void 0:Yr.title)||"",b=!1;if(this.state.showDescription){const v=ug(e.data,this.props.lang);v&&(O=[a.createElement("div",{key:"name",style:z.cellNameDivDiv},O),a.createElement("div",{key:"desc",style:z.cellDescription},v)],b=!!v)}const k=this.props.width==="xs"&&this.state.focused===r,K=a.createElement(ts,{container:!0,wrap:"nowrap",direction:"row",sx:z.cellId,style:{width:this.columnsVisibility.id,paddingLeft:u}},a.createElement(ts,{container:!0,alignItems:"center"},L,o),a.createElement(ts,{style:{...z.cellIdSpan,...p?this.styles.invertedBackground:void 0,color:A,fontWeight:h?"bold":void 0}},a.createElement(Le,{title:J5e(e.data,this.props.lang),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,e.data.name)),w,C),a.createElement("div",{style:{...z.grow,...p?this.styles.invertedBackgroundFlex:{}}}),a.createElement(ts,{container:!0,alignItems:"center"},c),this.props.width!=="xs"?a.createElement("div",null,a.createElement(Bs,{className:k?"":"copyButton",style:z.cellCopyButton,onClick:v=>this.onCopy(v,r)})):null);let x=k&&O||this.columnsVisibility.name?a.createElement(J,{component:"div",sx:{...z.cellName,...b?z.cellNameWithDesc:void 0,width:this.props.width!=="xs"?this.columnsVisibility.name:void 0,ml:k?0:"5px"}},O,!k&&((Qr=e.data)!=null&&Qr.title)?a.createElement(J,{style:{color:A}},a.createElement(Bs,{className:"copyButton",style:z.cellCopyButton,onClick:v=>{var ie;return this.onCopy(v,(ie=e.data)==null?void 0:ie.title)}})):null):null,S;this.state.statesView?S=[k&&y&&((hc=this.states[r])!=null&&hc.from)||this.columnsVisibility.changedFrom?{el:a.createElement("div",{key:"from",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.changedFrom:void 0},title:d.join(` -`)},y&&((zc=this.states[r])!=null&&zc.from)?T:null),type:"from"}:null,k&&E||this.columnsVisibility.qualityCode?{el:a.createElement("div",{key:"q",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.qualityCode:void 0},title:E||""},E),type:"quality"}:null,k&&y&&((wc=this.states[r])!=null&&wc.ts)||this.columnsVisibility.timestamp?{el:a.createElement("div",{key:"ts",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.timestamp:void 0}},y&&((Ic=this.states[r])!=null&&Ic.ts)?m.formatDate(new Date(this.states[r].ts),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"ts"}:null,k&&y&&((Cc=this.states[r])!=null&&Cc.lc)||this.columnsVisibility.lastChange?{el:a.createElement("div",{key:"lc",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.lastChange:void 0}},y&&((pc=this.states[r])!=null&&pc.lc)?m.formatDate(new Date(this.states[r].lc),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"lc"}:null]:S=[k&&(n!=null&&n.type)||this.columnsVisibility.type?{el:a.createElement("div",{key:"type",style:{...z.cellType,width:this.props.width!=="xs"?this.columnsVisibility.type:void 0}},N," ",n==null?void 0:n.type),type:"filter_type"}:null,k&&l||this.columnsVisibility.role?{el:a.createElement("div",{key:"role",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.role:"100%",cursor:this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?"text":"default"},onClick:!k&&this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0},l==null?void 0:l.role),type:"filter_role",onClick:k&&this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0}:null,k&&l||this.columnsVisibility.room?{el:a.createElement("div",{key:"room",style:{...z.cellRoom,...e.data.per?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.room:"100%",cursor:j?"text":"default"},onClick:!k&&j?()=>{const v=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(v)}})}:void 0},e.data.rooms),type:"filter_room",onClick:k&&j?()=>{const v=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(v)}})}:void 0}:null,k&&l||this.columnsVisibility.func?{el:a.createElement("div",{key:"func",style:{...z.cellFunc,...e.data.pef?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.func:"100%",cursor:j?"text":"default"},onClick:!k&&j?()=>{const v=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(v)}})}:void 0},e.data.funcs),type:"filter_func",onClick:k&&j?()=>{const v=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(v)}})}:void 0}:null];let R=((Ac=this.adapterColumns)==null?void 0:Ac.map(v=>a.createElement("div",{style:{...z.cellAdapter,width:this.props.width!=="xs"?this.columnsVisibility[v.id]:void 0},key:v.id,title:`${v.adapter} => ${v.pathText}`},n?this.renderCustomValue(n,v,e):null)))||null;const he=k||this.columnsVisibility.val?this.renderColumnValue(r,e,k):null;let Xe=k&&he||this.columnsVisibility.val?a.createElement("div",{style:{...z.cellValue,width:this.props.width!=="xs"?this.columnsVisibility.val:"calc(100% - 100px)",cursor:g?(l==null?void 0:l.type)==="file"?"zoom-in":e.data.button?"grab":"text":"default"},onClick:v=>{var ie,Je,Oe;if(g){if(!(!n||!this.states))if((l==null?void 0:l.type)==="file")this.setState({viewFileDialog:r});else if(e.data.url&&v.ctrlKey){if((ie=this.states[r])!=null&&ie.val&&typeof this.states[r].val=="string")if((l==null?void 0:l.role)==="url.self")window.location.href=this.states[r].val;else{const Tt=window.open(this.states[r].val,"_blank");Tt==null||Tt.focus()}}else!this.state.filter.expertMode&&e.data.button?this.props.socket.setState(r,!0).catch(Tt=>window.alert(`Cannot write state "${r}": ${Tt}`)):!this.state.filter.expertMode&&e.data.switch?this.props.socket.setState(r,!this.states[r].val).catch(Tt=>window.alert(`Cannot write state "${r}": ${Tt}`)):(this.edit={val:this.states[r]?this.states[r].val:"",q:this.states[r]&&this.states[r].q||0,ack:!1,id:r},this.setState({updateOpened:!0}))}else(l==null?void 0:l.role)==="url"||(l==null?void 0:l.role)==="url.blank"&&v.ctrlKey?(Je=this.states[r])!=null&&Je.val&&typeof this.states[r].val=="string"&&window.open(this.states[r].val,"_blank"):(l==null?void 0:l.role)==="url.self"&&v.ctrlKey&&(Oe=this.states[r])!=null&&Oe.val&&typeof this.states[r].val=="string"&&(window.location.href=this.states[r].val)}},he):null,ct=k||this.columnsVisibility.buttons?a.createElement("div",{style:{...z.cellButtons,width:this.props.width!=="xs"?this.columnsVisibility.buttons:void 0}},this.renderColumnButtons(r,e)):null,bs=null;if(this.props.width==="xs"&&this.state.focused===r){S=S.filter(ie=>ie);let v;S.length?v=S.map(ie=>ie?a.createElement("div",{key:ie.type,style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts[ie.type],":"),ie.el,a.createElement("div",{style:{flexGrow:1}}),ie.onClick?a.createElement(or,{style:z.cellCopyButtonInDetails,onClick:()=>{ie!=null&&ie.onClick&&ie.onClick()}}):null):null):v=null,R.length||(R=null),bs=a.createElement(fN,{style:{width:"100%",display:"flex",flexDirection:"column",padding:10,backgroundColor:this.props.theme.palette.mode==="dark"?"#333":"#ccc"}},a.createElement("div",{style:z.cellDetailsLine},a.createElement("div",{style:{flexGrow:1}}),a.createElement(Bs,{style:z.cellCopyButtonInDetails,onClick:ie=>this.onCopy(ie,r)})),x&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.name,":"),x,a.createElement("div",{style:{flexGrow:1}}),(mc=e.data)!=null&&mc.title?a.createElement(Bs,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:ie=>{var Je;return this.onCopy(ie,(Je=e.data)==null?void 0:Je.title)}}):null),v,R&&a.createElement("div",{style:z.cellDetailsLine},R),((fc=this.objects[r])==null?void 0:fc.type)==="state"&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.value,":"),Xe,a.createElement("div",{style:{flexGrow:1}}),a.createElement(Bs,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:ie=>{const{valText:Je}=Wn({state:this.states[r],obj:this.objects[r],texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma});this.onCopy(ie,Je.c!==void 0?Je.c:Je.v.toString())},key:"cc"})),ct&&a.createElement("div",{style:{...z.cellDetailsLine,justifyContent:"right"}},ct)),x=null,S=null,R=null,Xe=null,ct=null}return{row:a.createElement(ts,{container:!0,direction:"row",wrap:"nowrap",sx:m.getStyle(this.props.theme,z.tableRow,this.state.linesEnabled&&z.tableRowLines,!this.props.dragEnabled&&z.tableRowNoDragging,w&&z.tableRowAlias,I&&z.tableRowAliasReadWrite,this.state.focused===r&&this.props.multiSelect&&z.tableRowFocused,!e.data.visible&&z.filteredOut,e.data.hasVisibleParent&&!e.data.visible&&!e.data.hasVisibleChildren&&z.filteredParentOut,this.state.selected.includes(r)&&z.itemSelected,this.state.selectedNonObject===r&&z.itemSelected),key:r,id:r,onMouseDown:v=>{this.onSelect(r);let ie;"which"in v?ie=v.which===3:"button"in v&&(ie=v.button===2),ie?this.contextMenu={item:e,ts:Date.now()}:this.contextMenu=null},onDoubleClick:()=>{e.children?this.toggleExpanded(r):this.onSelect(r,!0)}},K,x,S==null?void 0:S.map(v=>v==null?void 0:v.el),R,Xe,ct),details:bs}}renderItem(e,t,i){const r=[];i=i||{count:0};const o=this.renderLeaf(e,t,i);let n;const M=this.props.DragWrapper;return this.props.dragEnabled&&M?e.data.sumVisibility?n=a.createElement(M,{key:e.data.id,item:e,style:z.draggable},o.row):n=a.createElement("div",{key:e.data.id,style:z.nonDraggable},o.row):n=o.row,e.data.id&&n&&r.push(n),o.details&&r.push(o.details),t=t===void 0?jr(this.state.expanded,e.data.id):t,(!e.data.id||t)&&(this.state.foldersFirst?e.children&&(r.push(e.children.map(c=>c.children&&(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null)),r.push(e.children.map(c=>!c.children&&(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null))):e.children&&r.push(e.children.map(c=>(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null))),r}calculateColumnsVisibility(e,t,i,r){let o=r||this.state.columnsWidths;const n=i||this.state.columnsForAdmin,M=t||this.state.columns||[],c=typeof e!="boolean"?this.state.columnsAuto:e;o=JSON.parse(JSON.stringify(o)),Object.keys(o).forEach(N=>{o[N]&&(o[N]=parseInt(o[N],10)||0)}),this.adapterColumns=[];const l=ze[this.props.width||"lg"].widths;if(c){if(this.columnsVisibility={id:ze[this.props.width||"lg"].idWidth,name:this.visibleCols.includes("name")&&l.name||0,nameHeader:this.visibleCols.includes("name")&&l.name||0,type:this.visibleCols.includes("type")&&l.type||0,role:this.visibleCols.includes("role")&&l.role||0,room:this.visibleCols.includes("room")&&l.room||0,func:this.visibleCols.includes("func")&&l.func||0,changedFrom:this.visibleCols.includes("changedFrom")&&l.changedFrom||0,qualityCode:this.visibleCols.includes("qualityCode")&&l.qualityCode||0,timestamp:this.visibleCols.includes("timestamp")&&l.timestamp||0,lastChange:this.visibleCols.includes("lastChange")&&l.lastChange||0,val:this.visibleCols.includes("val")&&l.val||0,buttons:this.visibleCols.includes("buttons")&&l.buttons||0},this.columnsVisibility.name&&!this.customWidth){let N=this.columnsVisibility.id||0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.name=`calc(100% - ${N+5}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${N+5+this.state.scrollBarWidth}px)`}else if(!this.customWidth){let N=0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.id=`calc(100% - ${N+5}px)`}}else{const N=this.props.width||"lg";this.columnsVisibility={id:o.id||ze[N].idWidth,name:M.includes("name")&&(o.name||l.name||ze[N].widths.name)||0,type:M.includes("type")&&(o.type||l.type||ze[N].widths.type)||0,role:M.includes("role")&&(o.role||l.role||ze[N].widths.role)||0,room:M.includes("room")&&(o.room||l.room||ze[N].widths.room)||0,func:M.includes("func")&&(o.func||l.func||ze[N].widths.func)||0};let u=this.columnsVisibility.id;if(this.columnsVisibility.name&&(u+=this.columnsVisibility.type||0,u+=this.columnsVisibility.role||0,u+=this.columnsVisibility.room||0,u+=this.columnsVisibility.func||0),n&&M&&Object.keys(n).sort().forEach(L=>n[L].forEach(g=>{const j=`_${L}_${g.path}`;if(M.includes(j)){const y={adapter:L,id:`_${L}_${g.path}`,name:g.name,path:g.path.split("."),pathText:g.path};g.edit&&(y.edit=!0,g.type&&(y.type=g.type),g.objTypes&&(y.objTypes=g.objTypes)),this.adapterColumns.push(y),this.columnsVisibility[j]=o[y.id]||g.width||ze[N].widths.func||ze.xl.widths.func||0,u+=this.columnsVisibility[j]}else this.columnsVisibility[j]=0})),this.adapterColumns.sort((L,g)=>L.id>g.id?-1:L.idj==="id"||typeof this.columnsVisibility[j]=="string"||!this.columnsVisibility[j]?g:g+this.columnsVisibility[j],0);this.columnsVisibility.id=`calc(100% - ${L}px)`}}}resizerMouseMove=e=>{if(this.resizerActiveDiv){let t,i;this.resizeLeft?(t=this.resizerOldWidth-e.clientX+this.resizerPosition,i=this.resizerOldWidthNext+e.clientX-this.resizerPosition):(t=this.resizerOldWidth+e.clientX-this.resizerPosition,i=this.resizerOldWidthNext-e.clientX+this.resizerPosition),this.resizerActiveName&&this.resizerNextName&&(!this.resizerMin||t>this.resizerMin)&&(!this.resizerNextMin||i>this.resizerNextMin)&&(this.resizerCurrentWidths[this.resizerActiveName]=t,this.resizerCurrentWidths[this.resizerNextName]=i,this.resizerActiveDiv.style.width=`${t}px`,this.resizerNextDiv&&(this.resizerNextDiv.style.width=`${i}px`),this.columnsVisibility[this.resizerActiveName]=t,this.columnsVisibility[this.resizerNextName]=i,this.resizerNextName==="nameHeader"?(this.columnsVisibility.name=i-this.state.scrollBarWidth,this.resizerCurrentWidths.name=i-this.state.scrollBarWidth):this.resizerActiveName==="nameHeader"&&(this.columnsVisibility.name=t-this.state.scrollBarWidth,this.resizerCurrentWidths.name=t-this.state.scrollBarWidth),this.customWidth=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=null,this.forceUpdate()},200))}};resizerMouseUp=()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveName=null,this.resizerNextName=null,this.resizerActiveDiv=null,this.resizerNextDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{if(this.storedWidths||=JSON.parse(JSON.stringify(ze[this.props.width||"lg"])),this.resizerCurrentWidths||={},this.resizerActiveDiv=e.target.parentNode,this.resizerActiveName=this.resizerActiveDiv.dataset.name||null,this.resizerActiveName){let t=0;if(e.target.dataset.left==="true"){this.resizeLeft=!0,this.resizerNextDiv=this.resizerActiveDiv.previousElementSibling;let i=this.resizerNextDiv.querySelector(".iob-ob-resize-handler");for(;this.resizerNextDiv&&!i&&t<10;)this.resizerNextDiv=this.resizerNextDiv.previousElementSibling,i=this.resizerNextDiv.querySelector(".iob-ob-resize-handler"),t++;(i==null?void 0:i.dataset.left)!=="true"&&(this.resizerNextDiv=this.resizerNextDiv.nextElementSibling)}else this.resizeLeft=!1,this.resizerNextDiv=this.resizerActiveDiv.nextElementSibling;this.resizerNextName=this.resizerNextDiv.dataset.name||null,this.resizerMin=parseInt(this.resizerActiveDiv.dataset.min,10)||0,this.resizerNextMin=parseInt(this.resizerNextDiv.dataset.min,10)||0,this.resizerPosition=e.clientX,this.resizerCurrentWidths[this.resizerActiveName]=this.resizerActiveDiv.offsetWidth,this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveName],this.resizerNextName&&(this.resizerCurrentWidths[this.resizerNextName]=this.resizerNextDiv.offsetWidth,this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerNextName]),window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};navigateKeyPress(e){var i,r;const t=this.state.selectedNonObject||this.state.selected[0];if(t){if(e.code==="ArrowUp"||e.code==="ArrowDown"){e.preventDefault();const o=[];(i=this.tableRef.current)==null||i.childNodes.forEach(l=>o.push(l.id));const n=o.indexOf(t),M=e.code==="ArrowDown"?n+1:n-1,c=o[M]||t;this.onSelect(c),this.scrollToItem(c)}if((e.code==="ArrowRight"||e.code==="ArrowLeft")&&this.toggleExpanded(t),e.code==="Delete"&&this.root&&t){const o=xo.getItemFromRoot(this.root,t);if(o){const{obj:n}=o.data;n&&!((r=n.common)!=null&&r.dontDelete)&&this.showDeleteDialog({id:t,obj:n,item:o})}}}}static getItemFromRoot(e,t){const i=t.split(".");let r="",o=e;for(let n=0;n{this.customWidth=!1,ze[this.props.width||"lg"]=JSON.parse(JSON.stringify(this.storedWidths)),this.calculateColumnsVisibility(),this.localStorage.removeItem(`${this.props.dialogName||"App"}.table`),this.forceUpdate()};renderHandleRight(){return a.createElement(J,{component:"div",className:"iob-ob-resize-handler",sx:{...z.resizeHandle,...z.resizeHandleRight},onMouseDown:this.resizerMouseDown,onDoubleClick:this.resizerReset,title:this.props.t("ra_Double click to reset table layout")})}renderHeader(){let e=null;return!this.columnsVisibility.buttons&&!this.isFilterEmpty()&&(e=a.createElement(W,{onClick:()=>this.clearFilter(),style:z.buttonClearFilter,title:this.props.t("ra_Clear filter"),size:"large"},a.createElement(x5e,null),a.createElement(we,{style:z.buttonClearFilterIcon}))),this.props.width==="xs"?a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:"100%"}},this.getFilterInput("id"))):a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.id,position:"relative"},"data-min":240,"data-name":"id"},this.getFilterInput("id"),this.renderHandleRight()),this.columnsVisibility.name?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.nameHeader,position:"relative"},"data-min":100,"data-name":"nameHeader"},this.getFilterInput("name"),this.renderHandleRight()):null,!this.state.statesView&&a.createElement(a.Fragment,null,this.columnsVisibility.type?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.type,position:"relative"},"data-min":100,"data-name":"type"},this.getFilterSelectType(),this.renderHandleRight()):null,this.columnsVisibility.role?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.role,position:"relative"},"data-min":100,"data-name":"role"},this.getFilterSelectRole(),this.renderHandleRight()):null,this.columnsVisibility.room?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.room,position:"relative"},"data-min":100,"data-name":"room"},this.getFilterSelectRoom(),this.renderHandleRight()):null,this.columnsVisibility.func?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.func,position:"relative"},"data-min":100,"data-name":"func"},this.getFilterSelectFunction(),this.renderHandleRight()):null),this.state.statesView&&a.createElement(a.Fragment,null,a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.changedFrom,position:"relative"},"data-min":100,"data-name":"changedFrom"},this.props.t("ra_Changed from"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.qualityCode,position:"relative"},"data-min":100,"data-name":"qualityCode"},this.props.t("ra_Quality code"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.timestamp,position:"relative"},"data-min":100,"data-name":"timestamp"},this.props.t("ra_Timestamp"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.lastChange,position:"relative"},"data-min":100,"data-name":"lastChange"},this.props.t("ra_Last change"),this.renderHandleRight())),this.adapterColumns.map(t=>a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility[t.id]},title:t.adapter,key:t.id,"data-min":100,"data-name":t.id},t.name)),this.columnsVisibility.val?a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.val,position:"relative"},"data-min":120,"data-name":"val"},this.props.t("ra_Value"),e):null,this.columnsVisibility.buttons?a.createElement("div",{title:this.texts.filter_custom,style:{...z.headerCell,width:this.columnsVisibility.buttons}}," ",this.getFilterSelectCustoms()):null)}renderToast(){return a.createElement(Xn,{open:!!this.state.toast,autoHideDuration:3e3,onClick:()=>this.setState({toast:""}),onClose:()=>this.setState({toast:""}),message:this.state.toast,action:a.createElement(W,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({toast:""})},a.createElement(we,{fontSize:"small"}))})}componentDidUpdate(){if(this.tableRef.current){const e=this.tableRef.current.offsetWidth-this.tableRef.current.clientWidth;this.state.scrollBarWidth!==e?setTimeout(()=>this.setState({scrollBarWidth:e}),100):this.selectFirst&&this.scrollToItem(this.selectFirst)}}scrollToItem(e){this.selectFirst="";const t=window.document.getElementById(e);t==null||t.scrollIntoView({behavior:"auto",block:"center",inline:"center"})}renderCustomDialog(){if(this.state.customDialog&&this.props.objectCustomDialog){const e=this.props.objectCustomDialog;return a.createElement(e,{reportChangedIds:t=>this.changedIds=[...t],objectIDs:this.state.customDialog,allVisibleObjects:!!this.state.customDialogAll,expertMode:this.state.filter.expertMode,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,t:this.props.t,lang:this.props.lang,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,objects:this.objects,customsInstances:this.info.customs,onClose:()=>{var t;this.pauseSubscribe(!1),this.setState({customDialog:null}),this.changedIds&&(this.changedIds=null,this.forceUpdate()),(t=this.props.router)==null||t.doNavigate("tab-objects")},systemConfig:this.systemConfig})}return null}onUpdate(e){this.props.socket.setState(this.edit.id,{val:e.val,ack:e.ack,q:e.q||0,expire:e.expire||void 0}).catch(t=>this.showError(`Cannot write value: ${t}`))}renderEditObjectDialog(){if(!this.state.editObjectDialog||!this.props.objectBrowserEditObject)return null;const e=this.props.objectBrowserEditObject;return a.createElement(e,{key:this.state.editObjectDialog,obj:this.objects[this.state.editObjectDialog],roleArray:this.info.roles,objects:this.objects,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,dialogName:this.props.dialogName,aliasTab:this.state.editObjectAlias,t:this.props.t,expertMode:!!this.state.filter.expertMode,onNewObject:t=>this.props.socket.setObject(t._id,t).then(()=>this.setState({editObjectDialog:t._id,editObjectAlias:!1},()=>this.onSelect(t._id))).catch(i=>this.showError(`Cannot write object: ${i}`)),onClose:t=>{var i,r;if(t){let o;this.state.editObjectDialog.startsWith("alias.")&&JSON.stringify((i=this.objects[this.state.editObjectDialog].common)==null?void 0:i.alias)!==JSON.stringify((r=t.common)==null?void 0:r.alias)&&(o=this.state.editObjectDialog),this.props.socket.setObject(t._id,t).then(()=>{o&&this.subscribes.includes(o)&&(this.unsubscribe(o),setTimeout(()=>this.subscribe(o),100))}).catch(n=>this.showError(`Cannot write object: ${n}`))}this.setState({editObjectDialog:"",editObjectAlias:!1})},width:this.props.width})}renderViewObjectFileDialog(){if(!this.state.viewFileDialog||!this.props.objectBrowserViewFile)return null;const e=this.props.objectBrowserViewFile;return a.createElement(e,{key:"viewFile",obj:this.objects[this.state.viewFileDialog],socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({viewFileDialog:""})})}renderAliasEditorDialog(){if(!this.props.objectBrowserAliasEditor||!this.state.showAliasEditor)return null;const e=this.props.objectBrowserAliasEditor;return a.createElement(e,{key:"editAlias",obj:this.objects[this.state.showAliasEditor],roleArray:this.info.roles,objects:this.objects,socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({showAliasEditor:""}),onRedirect:(t,i)=>setTimeout(()=>this.onSelect(t,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(t),setTimeout(()=>this.setState({editObjectDialog:t,showAliasEditor:"",editObjectAlias:!0}),300)})),i||0)})}showAddDataPointDialog(e,t,i){this.setState({showContextMenu:null,modalNewObj:{id:e,initialType:t,initialStateType:i}})}renderAliasMenu(){return this.state.aliasMenu?a.createElement(ws,{key:"aliasmenu",open:!0,anchorEl:window.document.getElementById(`alias_${this.state.aliasMenu}`),onClose:()=>this.setState({aliasMenu:""})},this.info.aliasesMap[this.state.aliasMenu].map((e,t)=>a.createElement(re,{key:e,onClick:()=>this.onSelect(e)},a.createElement(dt,null,this.renderAliasLink(this.state.aliasMenu,t,{"& .admin-browser-arrow":{mr:"8px"}}))))):null}renderContextMenu(){var L,g,j,y,T,d,I;if(!this.state.showContextMenu)return null;const e=this.state.showContextMenu.item,t=e.data.id,i=[],r=e.data.obj;let o="";if(this.props.objectEditOfAccessControl&&this.state.filter.expertMode)if(!r)o="---";else{const w=r.acl?r.type==="state"?r.acl.state:r.acl.object:0,A=r.acl&&(r.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object);o=Number.isNaN(Number(w))?Number(A).toString(16):Number(w).toString(16)}const n=!this.props.notEditable&&r&&(this.state.filter.expertMode||r.type==="state"||r.type==="channel"||r.type==="device"),M=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="channel"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",c=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",l=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",N=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",u={EDIT:{key:"0",visibility:!!(this.props.objectBrowserEditObject&&r&&(this.state.filter.expertMode||K0(t))),icon:a.createElement(or,{fontSize:"small",style:this.styles.contextMenuEdit}),label:this.texts.editObject,onClick:()=>this.setState({editObjectDialog:e.data.id,showContextMenu:null,editObjectAlias:!1})},EDIT_VALUE:{key:"1",visibility:!!(this.states&&!this.props.notEditable&&r&&r.type==="state"&&((L=r.common)==null?void 0:L.type)!=="file"&&(this.state.filter.expertMode||r.common.write!==!1)),icon:a.createElement(ry,{fontSize:"small",style:this.styles.contextMenuEditValue}),label:this.props.t("ra_Edit value"),onClick:()=>{var w;this.edit={val:this.states[t]?this.states[t].val:"",q:((w=this.states[t])==null?void 0:w.q)||0,ack:!1,id:t},this.setState({updateOpened:!0,showContextMenu:null})}},VIEW:{visibility:!!this.props.objectBrowserViewFile&&(r==null?void 0:r.type)==="state"&&((g=r.common)==null?void 0:g.type)==="file",icon:a.createElement(ey,{fontSize:"small",style:this.styles.contextMenuView}),label:this.props.t("ra_View file"),onClick:()=>this.setState({viewFileDialog:(r==null?void 0:r._id)||"",showContextMenu:null})},CUSTOM:{key:"2",visibility:!(this.props.objectCustomDialog&&this.info.hasSomeCustoms&&r&&r.type==="state"&&((j=r.common)==null?void 0:j.type)!=="file"),icon:a.createElement(ea,{fontSize:"small",style:e.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),style:this.styles.contextMenuCustom,label:this.texts.customConfig,onClick:()=>{var w;this.pauseSubscribe(!0),(w=this.props.router)==null||w.doNavigate(null,"customs",t),this.setState({customDialog:[t],showContextMenu:null})}},ACL:{key:"3",visibility:!!o,icon:o,iconStyle:{fontSize:"smaller"},listItemIconStyle:this.styles.contextMenuACL,style:this.styles.contextMenuACL,label:this.props.t("ra_Edit ACL"),onClick:()=>this.setState({showContextMenu:null,modalEditOfAccess:!0,modalEditOfAccessObjData:e.data})},ROLE:{key:"4",visibility:!!(this.state.filter.expertMode&&n&&this.props.objectBrowserEditRole),icon:a.createElement($j,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit role"),onClick:()=>this.setState({roleDialog:e.data.id,showContextMenu:null})},FUNCTION:{key:"5",visibility:!!n,icon:a.createElement(Qj,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit function"),onClick:()=>{const w=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ROOM:{key:"6",visibility:!!n,icon:a.createElement(Gj,{fontSize:"small",style:this.styles.contextMenuRoom}),label:this.props.t("ra_Edit room"),onClick:()=>{const w=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ALIAS:{key:"7",visibility:!!(!this.props.notEditable&&this.props.objectBrowserAliasEditor&&this.props.objectBrowserEditObject&&(r==null?void 0:r.type)==="state"&&((y=r.common)==null?void 0:y.type)!=="file"),icon:a.createElement(vN,{style:(T=r==null?void 0:r.common)!=null&&T.alias?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),label:this.info.aliasesMap[e.data.id]||e.data.id.startsWith("alias.0.")?this.props.t("ra_Edit alias"):this.props.t("ra_Create alias"),onClick:()=>{var w;(w=r==null?void 0:r.common)!=null&&w.alias?this.setState({showContextMenu:null,editObjectDialog:e.data.id,editObjectAlias:!0}):this.setState({showContextMenu:null,showAliasEditor:e.data.id})}},CREATE:{key:"+",visibility:(e.data.id.startsWith("0_userdata.0")||e.data.id.startsWith("javascript."))&&(M||c||l||N),icon:a.createElement(qn,{fontSize:"small",style:this.styles.cellButtonsButtonWithCustoms}),style:z.contextMenuWithSubMenu,label:this.texts.create,subMenu:[{label:this.texts.createBooleanState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","boolean")},{label:this.texts.createNumberState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","number")},{label:this.texts.createStringState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","string")},{label:this.texts.createState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state")},{label:this.texts.createChannel,visibility:c,icon:a.createElement(ig,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"channel")},{label:this.texts.createDevice,visibility:l,icon:a.createElement(rg,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"device")},{label:this.texts.createFolder,icon:a.createElement(EN,{fontSize:"small"}),visibility:N,onClick:()=>this.showAddDataPointDialog(e.data.id,"folder")}]},RENAME:{key:"8",visibility:!!(!this.props.notEditable&&this.props.objectMoveRenameDialog&&!e.data.id.startsWith("system.")&&e.data.id.split(".").length>2&&(this.props.expertMode||e.data.id.startsWith("javascript.0.")||e.data.id.startsWith("0_userdata.0."))),icon:a.createElement(Xj,null),label:this.props.t("ra_Rename_Move_Copy"),onClick:()=>{const w=Object.keys(this.objects),A=`${e.data.id}.`;this.setState({showContextMenu:null,showRenameDialog:{id:e.data.id,childrenIds:w.filter(p=>p.startsWith(A))}})}},DELETE:{key:"Delete",visibility:!!(this.props.onObjectDelete&&((d=e.children)!=null&&d.length||r&&!((I=r.common)!=null&&I.dontDelete))),icon:a.createElement(wt,{fontSize:"small",style:this.styles.contextMenuDelete}),style:this.styles.contextMenuDelete,label:this.texts.deleteObject,onClick:()=>this.setState({showContextMenu:null},()=>this.showDeleteDialog({id:t,obj:r||{},item:e}))}};return Object.keys(u).forEach(w=>{var A,p;u[w].visibility&&(u[w].subMenu?(i.push(a.createElement(re,{key:w,href:"",onClick:h=>this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position,subItem:w,subAnchor:h.target}}),style:u[w].style},a.createElement(Xt,{style:{...u[w].iconStyle,...u[w].listItemIconStyle}},u[w].icon),a.createElement(dt,null,u[w].label,"..."),a.createElement("div",{style:{...z.contextMenuKeys,opacity:1}},a.createElement(vj,null)))),((A=this.state.showContextMenu)==null?void 0:A.subItem)===w&&i.push(a.createElement(ws,{key:"subContextMenu",open:!0,anchorEl:this.state.showContextMenu.subAnchor,onClose:()=>{this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position}}),this.contextMenu=null}},(p=u[w].subMenu)==null?void 0:p.map(h=>h.visibility?a.createElement(re,{key:h.label,onClick:h.onClick,style:h.style},a.createElement(Xt,{style:{...h.iconStyle,...h.listItemIconStyle||void 0}},h.icon),a.createElement(dt,null,h.label)):null)))):i.push(a.createElement(re,{key:w,onClick:u[w].onClick,sx:u[w].style},a.createElement(Xt,{style:{...u[w].iconStyle,...u[w].listItemIconStyle}},u[w].icon),a.createElement(dt,null,u[w].label),u[w].key?a.createElement("div",{style:z.contextMenuKeys},`Alt+${u[w].key==="Delete"?this.props.t("ra_Del"):u[w].key}`):null)))}),i.length?a.createElement(ws,{key:"contextMenu",open:!0,onKeyUp:w=>{w.preventDefault(),w.altKey&&Object.keys(u).forEach(A=>{w.key===u[A].key&&u[A].onClick&&u[A].onClick()})},anchorReference:"anchorPosition",anchorPosition:this.state.showContextMenu.position,onClose:()=>{this.setState({showContextMenu:null}),this.contextMenu=null}},i):(setTimeout(()=>this.setState({showContextMenu:null}),100),null)}renderEditValueDialog(){var r;if(!this.state.updateOpened||!this.props.objectBrowserValue)return null;if(!this.edit.id)return console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`),null;if(!this.objects[this.edit.id])return console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`),null;const e=(r=this.objects[this.edit.id].common)!=null&&r.type?this.objects[this.edit.id].common.type:typeof this.edit.val,t=this.objects[this.edit.id].common.role,i=this.props.objectBrowserValue;return a.createElement(i,{t:this.props.t,lang:this.props.lang,type:e,role:t||"",states:m.getStates(this.objects[this.edit.id]),themeType:this.props.themeType,theme:this.props.theme,expertMode:!!this.state.filter.expertMode,value:this.edit.val,socket:this.props.socket,object:this.objects[this.edit.id],defaultHistory:this.defaultHistory,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,onClose:o=>{this.setState({updateOpened:!1}),o&&this.onUpdate(o)},width:this.props.width})}doFilter(e){if(!this.objects||!this.root)return;e||this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(this.state.filter));const t={count:0};Sa(this.root,this.state.filter,this.props.lang,this.objects,void 0,t,this.props.customFilter,this.props.types),t.count<500&&!this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!0})):t.count>=500&&this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!1})):this.forceUpdate()}render(){if(this.recordStates=[],this.unsubscribeTimer&&clearTimeout(this.unsubscribeTimer),this.styleTheme!==this.props.themeType&&(this.styles={cellIdIconFolder:m.getStyle(this.props.theme,z.cellIdIconFolder),cellIdIconDocument:m.getStyle(this.props.theme,z.cellIdIconDocument),iconDeviceError:m.getStyle(this.props.theme,z.iconDeviceError),iconDeviceConnected:m.getStyle(this.props.theme,z.iconDeviceConnected),iconDeviceDisconnected:m.getStyle(this.props.theme,z.iconDeviceDisconnected),cellButtonsButtonWithCustoms:m.getStyle(this.props.theme,z.cellButtonsButtonWithCustoms),invertedBackground:m.getStyle(this.props.theme,z.invertedBackground),invertedBackgroundFlex:m.getStyle(this.props.theme,z.invertedBackgroundFlex),contextMenuEdit:m.getStyle(this.props.theme,z.contextMenuEdit),contextMenuEditValue:m.getStyle(this.props.theme,z.contextMenuEditValue),contextMenuView:m.getStyle(this.props.theme,z.contextMenuView),contextMenuCustom:m.getStyle(this.props.theme,z.contextMenuCustom),contextMenuACL:m.getStyle(this.props.theme,z.contextMenuACL),contextMenuRoom:m.getStyle(this.props.theme,z.contextMenuRoom),contextMenuRole:m.getStyle(this.props.theme,z.contextMenuRole),contextMenuDelete:m.getStyle(this.props.theme,z.contextMenuDelete),filterInput:m.getStyle(this.props.theme,z.headerCellInput,z.filterInput),iconCopy:m.getStyle(this.props.theme,z.cellButtonsValueButton,z.cellButtonsValueButtonCopy),aliasReadWrite:m.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasReadWrite),aliasAlone:m.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasAlone)},this.styleTheme=this.props.themeType),this.unsubscribeTimer=setTimeout(()=>{this.unsubscribeTimer=null,this.checkUnsubscribes()},200),this.expertMode!==!!this.state.filter.expertMode&&(this.expertMode=!!this.state.filter.expertMode,this.doFilter(!0)),!this.state.loaded)return a.createElement(ko,{key:`${this.props.dialogName}_c`});const e=this.root?this.renderItem(this.root,void 0):null;return a.createElement(S5e,{key:this.props.dialogName},a.createElement("style",null,` +`).forEach(n=>{if(!n.trim())return;const M=n.indexOf(":");if(M!==-1){const c=n.substring(0,M).trim();let l=n.substring(M+1).trim();l=l.replace(/^['"]|['"]$/g,""),l==="true"?t[c]=!0:l==="false"?t[c]=!1:parseFloat(l).toString()===l?t[c]=parseFloat(l):t[c]=l}else t[n.trim()]=!0}),e=e.substring(i+7))}return{header:t,body:e}}static removeDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(i=>e=e.replace(i,"")),e}static onCopy(e,t){E4(t),e&&e.stopPropagation(),e&&e.preventDefault()}}function A5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function sg(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"248",cx:"160",fill:"none",strokeWidth:"15"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function Bs(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"}))}function ig(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"140.83068",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"251",cx:"241",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"200.94531",x2:"240.5",y1:"45.94531",x1:"240.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"78.7979",x:"214.5",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"84",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"83.5",y1:"46.94531",x1:"83.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"57.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function m5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",onClick:e=>s.onClick&&s.onClick(e),width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}))}function f5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}),a.createElement("path",{fill:"currentColor",stroke:"null",d:"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z"}))}function O5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function rr(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("rect",{fill:"none",rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor"}),a.createElement("ellipse",{fill:"none",ry:"54",rx:"54",cy:"160",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor"}))}function E5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 24 24",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",stroke:"currentColor",d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"}))}const $n={root:{width:"100%",height:"100%"},overflowHidden:{overflow:"hidden"},container:{height:"100%"}};function _5e(s){var e;return a.createElement(AN,{elevation:Number.isNaN(s.elevation)?1:s.elevation,style:{...$n.root,...((e=s.styles)==null?void 0:e.root)||void 0,...s.overflow!=="visible"?$n.overflowHidden:void 0},onKeyDown:s.onKeyDown,tabIndex:s.tabIndex},a.createElement(ts,{container:!0,direction:"column",wrap:"nowrap",sx:$n.container},s.children))}const B0={root:{height:"100%",overflow:"hidden"},overflowAuto:{overflow:"auto"}},x5e=a.forwardRef(function(e,t){return a.createElement(ts,{sx:{...B0.root,...(e==null?void 0:e.style)||void 0,...e.overflow==="auto"?B0.overflowAuto:void 0},ref:t},e.children)});function S5e(s){return a.createElement(ts,{container:!0,alignItems:"center"},s.children)}const Li=24,$e=32,rg=s=>s==="dark"?"#62ff25":"#37c400",og=s=>s==="dark"?"#ee56ff":"#a204b4",k5e=s=>s==="dark"?"#fff46e":"#b89101",ng=s=>"#ff6d69",ag=s=>"#5773ff",v5e=["0_userdata.0.","alias.0."],ss={headerCellInput:{width:"calc(100% - 5px)",height:$e,pt:0,"& .itemIcon":{verticalAlign:"middle",width:Li,height:Li,display:"inline-block"}},headerCellSelectItem:{"& .itemIcon":{width:Li,height:Li,mr:"5px",display:"inline-block"}},selectNone:{opacity:.5},selectClearButton:{position:"absolute",top:0,right:0,borderRadius:5,backgroundColor:"background.default"},cellIdTooltipLink:{color:"#7ec2fd","&:hover":{color:"#7ec2fd"},"&:visited":{color:"#7ec2fd"}},cellIdTooltip:{fontSize:14}};function Y5e(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 436 436",style:s==null?void 0:s.style,width:"24",height:"24",className:"admin-button"},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),a.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function R0(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}function Q5e(s,e){const t=[];for(let i=0;i{if(r==null)return;const n=typeof r=="object";if(t&&n&&typeof r.en=="string"&&typeof r.de=="string"){i[o]=r.en;return}i[o]=n?_a(r,e,t):r}):b5e(s,(i,r,o)=>{if(r==null||e.includes(o))return;const n=typeof r=="object";if(t&&n&&typeof r.en=="string"&&typeof r.de=="string"){i[o]=r.en;return}i[o]=n?_a(r,e,t):r})}function F0(s,e,t){const i=document.createElement("a"),r=[];t.excludeSystemRepositories&&r.push("system.repositories");const o=r.length>0||t.excludeTranslations?_a(e,r,t.excludeTranslations):e,n=t.beautify?JSON.stringify(o,null,2):JSON.stringify(o);i.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(n)}`),i.setAttribute("download",s),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}class U5e extends De{hasIcons;timer=null;constructor(e){var t;super(e),this.state={value:e.initialValue||[]},this.hasIcons=!!((t=e.values)!=null&&t.find(i=>i.icon))}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){var e;return a.createElement("div",{style:{position:"relative"}},a.createElement(nt,{variant:"standard",key:this.props.name,sx:ss.headerCellInput,className:"no-underline",multiple:!0,renderValue:t=>t!=null&&t.length?t.map(i=>{const r=this.props.values.find(c=>typeof c=="object"?c.value===i:c===i);let o,n,M;return typeof r=="object"?(o=r.value,n=r.name,M=r.icon):(o=r,n=r),a.createElement(J,{component:"span",sx:ss.headerCellSelectItem,key:o},M||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),n)}):this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:t=>{let i=t.target.value;if(this.state.value[0]==="_"&&i.includes("_")&&i.length>1){const r=i.indexOf("_");r!==-1&&i.splice(r,1)}else this.state.value[0]!=="_"&&i.includes("_")&&(i=["_"]);i.includes("")&&(i=[]),this.setState({value:i},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,i)},400)})},onClose:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},inputProps:{name:this.props.name,id:this.props.name},displayEmpty:!0},a.createElement(re,{key:"empty",value:""},a.createElement("span",{style:ss.selectNone},this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`])),(e=this.props.values)==null?void 0:e.map(t=>{let i,r,o;return typeof t=="object"?(i=t.value,r=t.name,o=t.icon):(i=t,r=t),a.createElement(re,{sx:ss.headerCellSelectItem,key:i,value:i},o||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),r)})),this.state.value.length?a.createElement(J,{component:"div",sx:ss.selectClearButton},a.createElement(W,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:[]},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(we,null))):null)}}class $5e extends De{timer=null;constructor(e){super(e),this.state={value:e.initialValue||""}}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){return a.createElement(Qt,{sx:this.props.styles,key:this.props.name,title:this.props.t("ra_You can use * as wildcard"),margin:"dense"},a.createElement(qt,{classes:{underline:"no-underline"},id:this.props.name,placeholder:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:e=>{const t=e.target.value;this.setState({value:t},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,t)},400)})},onBlur:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},autoComplete:"off"}),this.state.value?a.createElement("div",{style:{position:"absolute",right:0}},a.createElement(W,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:""},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(we,null))):null)}}function jr(s,e,t,i){if(t||=0,i===void 0&&(i=s.length-1,!i))return s[0]===e;const r=Math.floor((t+i)/2);return e===s[r]?!0:i-1===t?s[t]===e||s[i]===e:e>s[r]?jr(s,e,r,i):ex.toLowerCase())),(L=e.custom)!=null&&L.length&&(r.custom=e.custom.map(x=>x.toLowerCase())),(g=e.role)!=null&&g.length&&(r.role=e.role.map(x=>x.toLowerCase())),(j=e.room)!=null&&j.length&&(r.room=[],e.room.forEach(x=>{var S,R;r.room=r.room.concat(((R=(S=i[x])==null?void 0:S.common)==null?void 0:R.members)||[])})),(y=e.func)!=null&&y.length&&(r.func=[],e.func.forEach(x=>{var S,R;r.func=r.func.concat(((R=(S=i[x])==null?void 0:S.common)==null?void 0:R.members)||[])}))}const N=s.data;if(N!=null&&N.id){const x=(T=N.obj)==null?void 0:T.common;if(n){if(n.type&&(typeof n.type=="string"?(!N.obj||n.type!==N.obj.type)&&(l=!0):Array.isArray(n.type)&&(!N.obj||!n.type.includes(N.obj.type))&&(l=!0)),!l&&((d=n.common)!=null&&d.type)&&(x!=null&&x.type?typeof n.common.type=="string"?n.common.type!==x.type&&(l=!0):Array.isArray(n.common.type)&&(n.common.type.includes(x.type)||(l=!0)):l=!0),!l&&((I=n.common)!=null&&I.role)&&(x!=null&&x.role?typeof n.common.role=="string"?x.role.startsWith(n.common.role)&&(l=!0):Array.isArray(n.common.role)&&(n.common.role.find(S=>x.role.startsWith(S))||(l=!0)):l=!0),!l&&((w=n.common)==null?void 0:w.custom)==="_"&&(x!=null&&x.custom))l=!0;else if(!l&&((A=n.common)!=null&&A.custom)&&((p=n.common)==null?void 0:p.custom)!=="_"){const S=n.common.custom;if(!(x!=null&&x.custom))l=!0;else if(S==="_dataSources")Object.keys(x.custom).find(R=>R.startsWith("history.")||R.startsWith("sql.")||R.startsWith("influxdb."))||(l=!0);else if(Array.isArray(S)){const R=Object.keys(x.custom);S.find(he=>R.find(Xe=>Xe.startsWith(he)))&&(l=!0)}else S!==!0&&!Object.keys(x.custom).find(R=>R.startsWith(S))&&(l=!0)}}!l&&!e.expertMode&&(l=N.id==="system"||N.id==="enum"||N.id.startsWith("system.")||N.id.startsWith("enum.")||N.id.startsWith("_design/")||N.id.endsWith(".admin")||!!(x!=null&&x.expert)),!l&&r.id&&(N.fID===void 0&&(N.fID=N.id.toLowerCase()),l=!N.fID.includes(r.id)),!l&&r.idRx&&(l=!r.idRx.test(N.id)),!l&&r.name&&(x?(N.fName===void 0&&(N.fName=He(x.name,t)||"",N.fName=N.fName.toLowerCase()),l=!N.fName.includes(r.name)):l=!0),!l&&r.nameRx&&x&&(N.fName===void 0&&(N.fName=He(x.name,t)||"",N.fName=N.fName.toLowerCase()),l=!r.nameRx.test(N.fName)),!l&&((h=e.role)!=null&&h.length)&&x&&(l=!(typeof x.role=="string"&&r.role.find(S=>x.role.startsWith(S)))),!l&&((C=r.room)!=null&&C.length)&&(l=!r.room.find(S=>S===N.id||N.id.startsWith(`${S}.`))),!l&&((E=r.func)!=null&&E.length)&&(l=!r.func.find(S=>S===N.id||N.id.startsWith(`${S}.`))),!l&&((O=r.type)!=null&&O.length)&&(l=!((b=N.obj)!=null&&b.type&&r.type.includes(N.obj.type))),!l&&M&&(l=!((k=N.obj)!=null&&k.type&&M.includes(N.obj.type))),!l&&((K=r.custom)!=null&&K.length)&&(x?r.custom[0]==="_"?l=!!x.custom:x.custom?l=!r.custom.find(S=>x.custom[S]):l=!0:l=r.custom[0]!=="_")}return N.visible=!l,N.hasVisibleChildren=!1,s.children&&c<20&&s.children.forEach(x=>{xa(x,e,t,i,r,o,n,M,c+1)&&(N.hasVisibleChildren=!0)}),N.sumVisibility=N.visible||N.hasVisibleChildren,o&&N.sumVisibility&&o.count++,N.id&&N.sumVisibility&&s.children&&s.children.forEach(x=>x.data.hasVisibleParent=!0),N.visible||N.hasVisibleChildren}function Mg(s,e,t,i){var o;i||=[];const r=s.data;return r.sumVisibility&&(r.id&&t[r.id]&&t[r.id].type===e&&i.push(r.id),(o=s.children)==null||o.forEach(n=>Mg(n,e,t,i))),i}function G0(s,e,t,i,r,o){let n;return e==="alias"||e==="alias.0"?n=a.createElement(SN,{className:"iconOwn",style:{color:og(i)}}):e==="0_userdata"||e==="0_userdata.0"?n=a.createElement(Vj,{className:"iconOwn",style:{color:rg(i)}}):e.startsWith("_design/")||e==="system"?n=a.createElement(jo,{className:"iconOwn",style:{color:ng(i)}}):e==="system.adapter"?n=a.createElement(jo,{className:"iconOwn",style:{color:ag(i)}}):e==="system.group"?n=a.createElement(rM,{className:"iconOwn"}):e==="system.user"?n=a.createElement(sM,{className:"iconOwn"}):e==="system.host"?n=a.createElement(iM,{className:"iconOwn"}):e.endsWith(".connection")||e.endsWith(".connected")?n=a.createElement(li,{className:"iconOwn"}):e.endsWith(".info")?n=a.createElement(tM,{className:"iconOwn"}):s[e]&&s[e].type==="meta"?n=a.createElement(Yo,{className:"iconOwn"}):t<2&&s[`system.adapter.${e}`]&&(n=_o(s,`system.adapter.${e}`,r,o)),n||null}function cg(s,e){var t,i;return(i=(t=s==null?void 0:s.obj)==null?void 0:t.common)!=null&&i.desc&&He(s.obj.common.desc,e)||null}function P5e(s,e){const t=cg(s,e);return t!=null&&t.startsWith("http")?a.createElement(J,{component:"a",sx:ss.cellIdTooltipLink,href:t,target:"_blank",rel:"noreferrer"},t):a.createElement("span",{style:ss.cellIdTooltip},t||s.id||"")}function H0(s,e){var N,u,L,g,j,y,T,d,I,w;const t=e.imagePrefix||".";let i=Object.keys(s);i.sort((A,p)=>A===p?0:(A=A.replace(/\./g,"!!!"),p=p.replace(/\./g,"!!!"),A>p?1:-1)),e.root&&(i=i.filter(A=>A===e.root||A.startsWith(`${e.root}.`)));let r=[],o="",n=0;const M={data:{name:"",id:""},children:[]},c={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:s,customs:["_"],enums:[],hasSomeCustoms:!1,aliasesMap:{}};let l=M;for(let A=0;Ak.role===b)?typeof b!="string"?console.warn(`Invalid role type "${typeof b}" in "${h._id}"`):c.roles.push({role:b,type:O.type}):p.startsWith("enum.rooms.")?(c.roomEnums.push(p),c.enums.push(p)):p.startsWith("enum.functions.")?(c.funcEnums.push(p),c.enums.push(p)):h.type==="enum"?c.enums.push(p):h.type==="instance"&&O&&(O.supportCustoms||(N=O.adminUI)!=null&&N.custom)&&(c.hasSomeCustoms=!0,c.customs.push(p.substring(15))),p.startsWith("alias.")&&((u=h.common.alias)!=null&&u.id))if(typeof h.common.alias.id=="string"){const k=h.common.alias.id;c.aliasesMap[k]?c.aliasesMap[k].includes(p)||c.aliasesMap[k].push(p):c.aliasesMap[k]=[p]}else{const k=h.common.alias.id.read;k&&(c.aliasesMap[k]?c.aliasesMap[k].includes(p)||c.aliasesMap[k].push(p):c.aliasesMap[k]=[p]);const K=h.common.alias.id.write;K&&(c.aliasesMap[K]?c.aliasesMap[K].includes(p)||c.aliasesMap[K].push(p):c.aliasesMap[K]=[p])}}c.ids.push(p);let E;do if(E=!1,!o||p.startsWith(`${o}.`)){if(C.length-n>1){let b=o;for(let k=n;kK.data.name===C[k]));else{const K={data:{name:C[k],parent:l,id:b,obj:s[b],level:k,icon:G0(s,b,k,e.themeType,e.lang,t),generated:!0}};l.children||=[],l.children.push(K),l=K,c.ids.push(b)}}const O={data:{name:C[C.length-1],title:He((L=h==null?void 0:h.common)==null?void 0:L.name,e.lang),obj:h,parent:l,icon:_o(s,p,e.lang,t)||G0(s,p,0,e.themeType,e.lang,t),id:p,hasCustoms:!!((g=h.common)!=null&&g.custom&&Object.keys(h.common.custom).length),level:C.length-1,generated:!1,button:h.type==="state"&&!!((j=h.common)!=null&&j.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("button")&&((y=h.common)==null?void 0:y.write)!==!1,switch:h.type==="state"&&((T=h.common)==null?void 0:T.type)==="boolean"&&((d=h.common)==null?void 0:d.write)!==!1&&((I=h.common)==null?void 0:I.read)!==!1,url:!!((w=h.common)!=null&&w.role)&&typeof h.common.role=="string"&&h.common.role.startsWith("url")}};l.children||=[],l.children.push(O),l=O,n=C.length,r=C,o=p}else{let O=0;for(;r[O]===C[O];)O++;if(O>0){let b=r.length;for(r=r.splice(0,O),n=O,o=r.join(".");b>O;)l.data.parent?l=l.data.parent:console.error(`Parent is null for ${p} ${o} ${r.join(".")}`),b--}else l=M,r=[],o="",n=0;E=!0}while(E)}return c.roomEnums.sort((A,p)=>{var E,O,b,k;const h=He((O=(E=s[A])==null?void 0:E.common)==null?void 0:O.name,e.lang)||A.split(".").pop(),C=He((k=(b=s[p])==null?void 0:b.common)==null?void 0:k.name,e.lang)||p.split(".").pop();return h>C?1:h{var E,O,b,k;const h=He((O=(E=s[A])==null?void 0:E.common)==null?void 0:O.name,e.lang)||A.split(".").pop(),C=He((k=(b=s[p])==null?void 0:b.common)==null?void 0:k.name,e.lang)||p.split(".").pop();return h>C?1:hA.role.localeCompare(p.role)),c.types.sort(),{info:c,root:M}}function ug(s,e,t,i,r){if(s.data.id===e)return s;if(t||(t=e.split("."),r=0,i=t[r]),!s.children&&s.data.id!==e)return null;let o;if(s.children)for(let n=0;ni)break}return o?(r||=0,ug(o,e,t,`${i}.${t[r+1]}`,r+1)):null}function lg(s,e,t,i){var n,M;if(!e)return{rooms:[],per:!1};i||=[];for(const c of s.roomEnums){const l=(n=s.objects[c])==null?void 0:n.common;if(!l)continue;const N=He(l.name,t);(M=l.members)!=null&&M.includes(e)&&!i.includes(N)&&i.push(N)}let r;const o=e.split(".");return o.pop(),e=o.join("."),s.objects[e]&&(r=i.length,lg(s,e,t,i)),{rooms:i,per:!r}}function Rs(s,e,t,i){var r,o;if(!e)return[];i||=[];for(let n=0;n946681200&&l<9466812e5&&(l*=1e3),l=l&&new Date(l).toString();else if(M!=null&&M.role&&typeof M.role=="string"&&M.role.match(/^value\.duration/)){if(typeof l=="number"&&l>=0){const j=Math.floor(l/3600),y=Math.floor(l%3600/60),T=Math.floor(l%60);l=`${j.toString().padStart(2,"0")}:${y.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}`}else if(typeof l=="string"&&m.isStringInteger(l)){const j=parseInt(l,10);if(j>=0){const y=Math.floor(j/3600),T=Math.floor(j%3600/60),d=Math.floor(j%60);l=`${y.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}`}}}else N==="number"?Number.isInteger(l)||(l=Math.round(l*1e8)/1e8,i&&(l=l.toString().replace(".",","))):N==="object"?l=JSON.stringify(l):N!=="string"?l=l.toString():l.startsWith("data:image/")&&(c="image"),typeof l!="string"&&(l=l.toString());const u={v:l};n&&n[l]!==void 0&&l!==n[l]&&(u.s=l,l=n[l],u.v=l),((g=u.v)==null?void 0:g.length)>40&&(u.c=u.v,u.v=`${u.v.substring(0,40)}...`),M!=null&&M.unit&&(u.u=M.unit);let L;if(s.full&&(typeof l=="string"&&l.length>100?L=[{t:r.value,v:`${l.substring(0,100)}...`}]:L=[{t:r.value,v:l}],t)){if(t.ack!==void 0&&t.ack!==null&&L.push({t:r.ack,v:t.ack.toString()}),t.ts&&L.push({t:r.ts,v:t.ts?m.formatDate(new Date(t.ts),e):""}),t.lc&&L.push({t:r.lc,v:t.lc?m.formatDate(new Date(t.lc),e):""}),t.from){let j=t.from.toString();j.startsWith("system.adapter.")&&(j=j.substring(15)),L.push({t:r.from,v:j})}if(t.user){let j=t.user.toString();j.startsWith("system.user.")&&(j=j.substring(12)),L.push({t:r.user,v:j})}t.c&&L.push({t:r.c,v:t.c}),L.push({t:r.quality,v:m.quality2text(t.q||0).join(", "),nbr:!0})}return{valText:u,valFull:L,fileViewer:c}}function W5e(s){const{state:e}=s;return{color:e!=null&&e.ack?e.q?"#ffa500":"":s.nonAckColor||"#ff2222c9"}}function J5e(s,e){let t=e,i=1;const r=[];for(;i=t)r.push(0);else if(i1){const i=e.path;let r;const o=s;if(o[i[0]]&&typeof o[i[0]]=="object")return i.length===2?r=o[i[0]][i[1]]:i.length===3?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"?o[i[0]][i[1]][i[2]]:null:i.length===4?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]?o[i[0]][i[1]][i[2]][i[3]]:null:i.length===5?r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&o[i[0]][i[1]][i[2]][i[3]]?o[i[0]][i[1]][i[2]][i[3]][i[4]]:null:i.length===6&&(r=o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&o[i[0]][i[1]][i[2]][i[3]]&&o[i[0]][i[1]][i[2]][i[3]][i[4]]?o[i[0]][i[1]][i[2]][i[3]][i[4]][i[5]]:null),r??null}return null}function B5e(s,e,t){var i;if((i=s==null?void 0:s._id)!=null&&i.startsWith(`${e.adapter}.`)&&e.path.length>1){const r=e.path,o=s;if(o[r[0]]&&typeof o[r[0]]=="object"){if(r.length===2)return o[r[0]][r[1]]=t,!0;if(r.length===3){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object")return o[r[0]][r[1]][r[2]]=t,!0}else if(r.length===4){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object")return o[r[0]][r[1]][r[2]][r[3]]=t,!0}else if(r.length===5){if(o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]]=t,!0}else if(r.length===6&&o[r[0]][r[1]]&&typeof o[r[0]][r[1]]=="object"&&o[r[0]][r[1]][r[2]]&&typeof o[r[0]][r[1]][r[2]]=="object"&&o[r[0]][r[1]][r[2]][r[3]]&&typeof o[r[0]][r[1]][r[2]][r[3]]=="object"&&o[r[0]][r[1]][r[2]][r[3]][r[4]]&&typeof o[r[0]][r[1]][r[2]][r[3]][r[4]]=="object")return o[r[0]][r[1]][r[2]][r[3]][r[4]][r[5]]=t,!0}}return!1}function Z0(s){return!!v5e.find(e=>s.startsWith(e))}const R5e=16,Ie=20,Lg="#ff413c",gg="#86211f",Sa="#57ff45",ka="#098c04",va="#f3ad11",Ya="#6c5008",z={toolbar:{minHeight:38},toolbarButtons:{padding:4,marginLeft:4},switchColumnAuto:{marginLeft:16},dialogColumns:{transition:"opacity 1s"},dialogColumnsLabel:{fontSize:12,paddingTop:8},columnCustom:{width:"100%",display:"inline-block"},columnCustomEditable:{cursor:"text"},columnCustom_center:{textAlign:"center"},columnCustom_left:{textAlign:"left"},columnCustom_right:{textAlign:"right"},width100:{width:"100%"},transparent_10:{opacity:.1},transparent_20:{opacity:.2},transparent_30:{opacity:.3},transparent_40:{opacity:.4},transparent_50:{opacity:.5},transparent_60:{opacity:.6},transparent_70:{opacity:.7},transparent_80:{opacity:.8},transparent_90:{opacity:.9},transparent_100:{opacity:1},headerRow:{paddingLeft:8,height:38,whiteSpace:"nowrap",userSelect:"none"},buttonClearFilter:{position:"relative",float:"right",padding:0},buttonClearFilterIcon:{zIndex:2,position:"absolute",top:0,left:0,color:"#FF0000",opacity:.7},tableDiv:{paddingTop:0,paddingLeft:0,width:"calc(100% - 8px)",height:"calc(100% - 38px)",overflow:"auto"},tableRow:s=>({pl:1,height:$e,lineHeight:`${$e}px`,verticalAlign:"top",userSelect:"none",position:"relative",width:"100%","&:hover":{background:`${s.palette.mode==="dark"?s.palette.primary.dark:s.palette.primary.light} !important`,color:m.invertColor(s.palette.primary.main,!0)},whiteSpace:"nowrap",flexWrap:"nowrap"}),tableRowLines:s=>({borderBottom:`1px solid ${s.palette.mode==="dark","#8888882e"}`,"& > div":{borderRight:`1px solid ${s.palette.mode==="dark","#8888882e"}`}}),tableRowNoDragging:{cursor:"pointer"},tableRowAlias:{height:$e+10},tableRowAliasReadWrite:{height:$e+22},tableRowFocused:s=>({"&:after":{content:'""',position:"absolute",top:1,left:1,right:1,bottom:1,border:s.palette.mode?"1px dotted #000":"1px dotted #FFF"}}),checkBox:{padding:0},cellId:{position:"relative",fontSize:"1rem",overflow:"hidden",textOverflow:"ellipsis","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"},"& .iconOwn":{display:"block",width:$e-4,height:$e-4,mt:"2px",float:"right"},"&:hover .iconOwn":{display:"none"},"& *":{width:"initial"}},cellIdSpan:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},cellIdIconFolder:s=>({marginRight:8,width:$e-4,height:$e-4,cursor:"pointer",color:s.palette.secondary.main||"#fbff7d",verticalAlign:"top"}),cellIdIconDocument:{verticalAlign:"middle",marginLeft:($e-Ie)/2,marginRight:8,width:Ie,height:Ie},cellIdIconOwn:{},cellCopyButton:{width:Ie,height:Ie,top:($e-Ie)/2,opacity:.8,position:"absolute",right:3},cellCopyButtonInDetails:{width:Ie,height:Ie,top:($e-Ie)/2,opacity:.8},cellEditButton:{width:Ie,height:Ie,color:"white",position:"absolute",top:($e-Ie)/2,right:Ie+3,opacity:.7,"&:hover":{opacity:1}},cellName:{display:"inline-block",verticalAlign:"top",fontSize:14,ml:"5px",overflow:"hidden",textOverflow:"ellipsis",position:"relative","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellNameWithDesc:{lineHeight:"normal"},cellNameDivDiv:{},cellDescription:{fontSize:10,opacity:.5,fontStyle:"italic"},cellIdAlias:s=>({fontStyle:"italic",fontSize:12,opacity:.7,"&:hover":{color:s.palette.mode==="dark"?"#009900":"#007700"}}),cellIdAliasReadWriteDiv:{height:24,marginTop:-5},cellIdAliasAlone:{lineHeight:0},cellIdAliasReadWrite:{lineHeight:"12px"},cellType:{display:"inline-block",verticalAlign:"top","& .itemIcon":{verticalAlign:"middle",width:Li,height:Li,display:"inline-block"},"& .itemIconFolder":{marginLeft:3}},cellRole:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellRoom:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellEnumParent:{opacity:.4},cellFunc:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValue:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValueButton:{marginTop:5},cellValueButtonFalse:{opacity:.3},cellAdapter:{display:"inline-block",verticalAlign:"top"},cellValueTooltip:{fontSize:12},cellValueText:{width:"100%",height:$e,fontSize:16,display:"flex",overflow:"hidden",textOverflow:"ellipsis",position:"relative",verticalAlign:"top","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellValueFile:{color:"#2837b9"},cellValueTooltipTitle:{fontStyle:"italic",width:100,display:"inline-block"},cellValueTooltipValue:{width:120,display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis"},cellValueTooltipImage:{width:100,height:"auto"},cellValueTooltipBoth:{width:220,display:"inline-block",whiteSpace:"nowrap"},cellValueTooltipBox:{width:250,overflow:"hidden",pointerEvents:"none"},tooltip:{pointerEvents:"none"},cellValueTextUnit:{marginLeft:4,opacity:.8,display:"inline-block"},cellValueTextState:{opacity:.7},cellValueTooltipCopy:{position:"absolute",bottom:3,right:3},cellValueTooltipEdit:{position:"absolute",bottom:3,right:15},cellButtons:{display:"inline-block",verticalAlign:"top"},cellButtonsButton:{display:"inline-block",opacity:.5,width:Ie+4,height:Ie+4,"&:hover":{opacity:1},p:0,mt:"-2px"},cellButtonsEmptyButton:{fontSize:12},cellButtonMinWidth:{minWidth:40},cellButtonsButtonAlone:{ml:`${Ie+6}px`,pt:0,mt:"-2px"},cellButtonsButtonWithCustoms:s=>({color:s.palette.mode==="dark"?s.palette.primary.main:s.palette.secondary.main}),cellButtonsButtonWithoutCustoms:{opacity:.2},cellButtonsValueButton:s=>({position:"absolute",top:Ie/2-2,opacity:.7,width:Ie-2,height:Ie-2,color:s.palette.action.active,"&:hover":{opacity:1}}),cellButtonsValueButtonCopy:{right:8,cursor:"pointer"},cellButtonsValueButtonEdit:{right:Ie/2+16},cellDetailsLine:{display:"flex",alignItems:"center",width:"100%",height:32,fontSize:16},cellDetailsName:{fontWeight:"bold",marginRight:8,minWidth:80},filteredOut:{opacity:.5},filteredParentOut:{opacity:.3},filterInput:{mt:0,mb:0},selectIcon:{width:24,height:24,marginRight:4},itemSelected:s=>({background:`${s.palette.primary.main} !important`,color:`${m.invertColor(s.palette.primary.main,!0)} !important`}),header:{width:"100%"},headerCell:{display:"inline-block",verticalAlign:"top"},headerCellValue:{paddingTop:4,fontSize:16},visibleButtons:{color:"#2196f3",opacity:.7},grow:{flexGrow:1},enumIconDiv:{marginRight:8,width:32,height:32,borderRadius:8,background:"#FFFFFF"},enumIcon:{marginTop:4,marginLeft:4,width:24,height:24},enumDialog:{overflow:"hidden"},enumList:{minWidth:250,height:"calc(100% - 50px)",overflow:"auto"},enumCheckbox:{minWidth:0},buttonDiv:{display:"flex",height:"100%",alignItems:"center"},aclText:{fontSize:13,marginTop:6},rightsObject:{color:"#55ff55",paddingLeft:3},rightsState:{color:"#86b6ff",paddingLeft:3},textCenter:{padding:12,textAlign:"center"},tooltipAccessControl:{display:"flex",flexDirection:"column"},fontSizeTitle:{"@media screen and (max-width: 465px)":{"& *":{fontSize:12}}},draggable:{cursor:"copy"},nonDraggable:{cursor:"no-drop"},iconDeviceConnected:s=>({color:s.palette.mode==="dark"?Sa:ka,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceDisconnected:s=>({color:s.palette.mode==="dark"?va:Ya,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceError:s=>({color:s.palette.mode==="dark"?Lg:gg,opacity:.8,position:"absolute",top:4,right:50,width:20}),resizeHandle:{display:"block",position:"absolute",cursor:"col-resize",width:7,top:2,bottom:2,zIndex:1},resizeHandleRight:{right:3,borderRight:"2px dotted #888","&:hover":{borderColor:"#ccc",borderRightStyle:"solid"},"&.active":{borderColor:"#517ea5",borderRightStyle:"solid"}},invertedBackground:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",padding:"0 3px",borderRadius:"2px 0 0 2px"}),invertedBackgroundFlex:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",borderRadius:"0 2px 2px 0"}),contextMenuEdit:s=>({color:s.palette.mode==="dark"?"#ffee48":"#cbb801"}),contextMenuEditValue:s=>({color:s.palette.mode==="dark"?"#5dff45":"#1cd301"}),contextMenuView:s=>({color:s.palette.mode==="dark"?"#FFF":"#000"}),contextMenuCustom:s=>({color:s.palette.mode==="dark"?"#42eaff":"#01bbc2"}),contextMenuACL:s=>({color:s.palette.mode==="dark"?"#e079ff":"#500070"}),contextMenuRoom:s=>({color:s.palette.mode==="dark"?"#ff9a33":"#642a00"}),contextMenuRole:s=>({color:s.palette.mode==="dark"?"#ffdb43":"#562d00"}),contextMenuDelete:s=>({color:s.palette.mode==="dark"?"#ff4f4f":"#cf0000"}),contextMenuKeys:{marginLeft:8,opacity:.7,fontSize:"smaller"},contextMenuWithSubMenu:{display:"flex"},...ss},X0={state:a.createElement(rr,{className:"itemIcon",style:{verticalAlign:"middle"}}),channel:a.createElement(sg,{className:"itemIcon",style:{verticalAlign:"middle"}}),device:a.createElement(ig,{className:"itemIcon",style:{verticalAlign:"middle"}}),adapter:a.createElement(A5e,{className:"itemIcon",style:{verticalAlign:"middle"}}),meta:a.createElement(Yo,{className:"itemIcon",style:{verticalAlign:"middle"}}),instance:a.createElement(O5e,{className:"itemIcon",style:{color:"#7da7ff",verticalAlign:"middle"}}),enum:a.createElement(ay,{className:"itemIcon",style:{verticalAlign:"middle"}}),chart:a.createElement(Ly,{className:"itemIcon",style:{verticalAlign:"middle"}}),config:a.createElement(qn,{className:"itemIcon",style:{verticalAlign:"middle"}}),group:a.createElement(rM,{className:"itemIcon",style:{verticalAlign:"middle"}}),user:a.createElement(sM,{className:"itemIcon",style:{verticalAlign:"middle"}}),host:a.createElement(iM,{className:"itemIcon",style:{verticalAlign:"middle"}}),schedule:a.createElement(Bj,{className:"itemIcon",style:{verticalAlign:"middle"}}),script:a.createElement(qa,{className:"itemIcon",style:{verticalAlign:"middle"}}),folder:a.createElement(Ti,{className:"itemIcon itemIconFolder",style:{verticalAlign:"middle"}})},ze={xs:{idWidth:"100%",fields:[],widths:{}},sm:{idWidth:300,fields:["room","val"],widths:{room:100,val:200}},md:{idWidth:300,fields:["room","func","val","buttons"],widths:{name:200,room:150,func:150,val:120,buttons:120}},lg:{idWidth:300,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:300,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:165,lastChange:165}},xl:{idWidth:550,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:400,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:170,lastChange:170}}};let K0=!1;const Fs={id:"",name:"",room:[],func:[],role:[],type:[],custom:[],expertMode:!1};class xo extends De{info={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:{},customs:[],enums:[],hasSomeCustoms:!1,aliasesMap:{}};localStorage=window._localStorage||window.localStorage;tableRef;pausedSubscribes=!1;selectFirst;root=null;states={};subscribes=[];unsubscribeTimer=null;statesUpdateTimer=null;objectsUpdateTimer=null;visibleCols;texts;possibleCols;imagePrefix;adapterColumns=[];styleTheme="";edit={id:"",val:"",q:0,ack:!1};levelPadding;customWidth=!1;resizeTimeout=null;resizerNextName=null;resizerActiveName=null;resizerCurrentWidths={};resizeLeft=!1;resizerOldWidth=0;resizerMin=0;resizerNextMin=0;resizerOldWidthNext=0;resizerPosition=0;resizerActiveDiv=null;resizerNextDiv=null;storedWidths=null;systemConfig;objects;defaultHistory="";ctrlPressed=!1;columnsVisibility={};changedIds=null;contextMenu=null;recordStates=[];styles={};expertMode=!1;customColumnDialog=null;constructor(e){super(e);const t=this.localStorage.getItem(`${e.dialogName||"App"}.objectSelected`)||"";if(this.selectFirst="",this.expertMode=!!this.props.expertMode,t.startsWith("["))try{const T=JSON.parse(t);this.selectFirst=T[0]||""}catch{}else this.selectFirst=t;let i;const r=this.localStorage.getItem(`${e.dialogName||"App"}.objectExpanded`)||"[]";try{i=JSON.parse(r)}catch{i=[]}let o;const n=e.defaultFilters?"":this.localStorage.getItem(`${e.dialogName||"App"}.objectFilter`)||"";if(n)try{o=JSON.parse(n)}catch{o={...Fs}}else e.defaultFilters&&typeof e.defaultFilters=="object"?o={...e.defaultFilters}:o={...Fs};if(typeof o.room=="string"&&o.room&&(o.room=[o.room].filter(T=>T),o.room.length||delete o.room),typeof o.func=="string"&&o.func&&(o.func=[o.func].filter(T=>T),o.func.length||delete o.func),typeof o.role=="string"&&o.role&&(o.role=[o.role].filter(T=>T),o.role.length||delete o.role),typeof o.type=="string"&&(o.type=[o.type].filter(T=>T),o.type.length||delete o.type),typeof o.custom=="string"&&(o.custom=[o.custom].filter(T=>T),o.custom.length||delete o.custom),o.expertMode=e.expertMode!==void 0?e.expertMode:(window._sessionStorage||window.sessionStorage).getItem("App.expertMode")==="true",this.tableRef=IN(),this.visibleCols=e.columns||ze[e.width||"lg"].fields,e.types&&e.types.length===1){const T=this.visibleCols.indexOf("type");T!==-1&&this.visibleCols.splice(T,1)}this.possibleCols=ze.xl.fields;let M=null;if(e.router){const T=e.router.getLocation();T.id&&T.dialog==="customs"&&(M=[T.id],this.pauseSubscribe(!0))}let c;Array.isArray(e.selected)?c=e.selected:c=[e.selected||""],c=c.map(T=>T.replace(/["']/g,"")).filter(T=>T),this.selectFirst=c.length&&c[0]?c[0]:this.selectFirst;const l=this.localStorage.getItem(`${e.dialogName||"App"}.columns`);let N;try{N=l?JSON.parse(l):null}catch{N=null}let u=null;try{u=u?JSON.parse(u):{}}catch{u={}}this.imagePrefix=e.imagePrefix||".";let L;const g=this.localStorage.getItem(`${e.dialogName||"App"}.foldersFirst`);g==="false"?L=!1:g==="true"?L=!0:L=e.foldersFirst===void 0?!0:e.foldersFirst;let j=!1;try{j=this.props.objectStatesView&&JSON.parse(this.localStorage.getItem(`${e.dialogName||"App"}.objectStatesView`)||"")||!1}catch{}this.state={aliasMenu:"",beautifyJsonExport:!0,columns:N,columnsAuto:this.localStorage.getItem(`${e.dialogName||"App"}.columnsAuto`)!=="false",columnsDialogTransparent:100,columnsEditCustomDialog:null,columnsForAdmin:null,columnsSelectorShow:!1,columnsWidths:u,customColumnDialogValueChanged:!1,customDialog:M,depth:0,editObjectAlias:!1,editObjectDialog:"",enumDialog:null,excludeSystemRepositoriesFromExport:!0,excludeTranslations:!1,expandAllVisible:!1,expanded:i,filter:o,filterKey:0,focused:this.localStorage.getItem(`${e.dialogName||"App"}.focused`)||"",foldersFirst:L,linesEnabled:this.localStorage.getItem(`${e.dialogName||"App"}.lines`)==="true",loaded:!1,noStatesByExportImport:!1,roleDialog:null,scrollBarWidth:16,selected:c,selectedNonObject:this.localStorage.getItem(`${e.dialogName||"App"}.selectedNonObject`)||"",showAliasEditor:"",showAllExportOptions:!1,showContextMenu:null,showDescription:this.localStorage.getItem(`${e.dialogName||"App"}.desc`)!=="false",showExportDialog:!1,showImportDialog:!1,showImportMenu:null,showRenameDialog:null,statesView:j,toast:"",tooltipInfo:null,viewFileDialog:""},this.texts={name:e.t("ra_Name"),categories:e.t("ra_Categories"),value:e.t("ra_tooltip_value"),ack:e.t("ra_tooltip_ack"),ts:e.t("ra_tooltip_ts"),lc:e.t("ra_tooltip_lc"),from:e.t("ra_tooltip_from"),user:e.t("ra_tooltip_user"),c:e.t("ra_tooltip_comment"),quality:e.t("ra_tooltip_quality"),editObject:e.t("ra_tooltip_editObject"),deleteObject:e.t("ra_tooltip_deleteObject"),customConfig:e.t("ra_tooltip_customConfig"),copyState:e.t("ra_tooltip_copyState"),editState:e.t("ra_tooltip_editState"),ctrlForLink:e.t("ra_tooltip_ctrlForLink"),close:e.t("ra_Close"),filter_id:e.t("ra_filter_id"),filter_name:e.t("ra_filter_name"),filter_type:e.t("ra_filter_type"),filter_role:e.t("ra_filter_role"),filter_room:e.t("ra_filter_room"),filter_func:e.t("ra_filter_func"),filter_custom:e.t("ra_filter_customs"),filterCustomsWithout:e.t("ra_filter_customs_without"),objectChangedByUser:e.t("ra_object_changed_by_user"),objectChangedBy:e.t("ra_object_changed_by"),objectChangedFrom:e.t("ra_state_changed_from"),stateChangedBy:e.t("ra_state_changed_by"),stateChangedFrom:e.t("ra_state_changed_from"),ownerGroup:e.t("ra_Owner group"),ownerUser:e.t("ra_Owner user"),showAll:e.t("ra_show_all"),deviceError:e.t("ra_Error"),deviceDisconnected:e.t("ra_Disconnected"),deviceConnected:e.t("ra_Connected"),aclOwner_read_object:e.t("ra_aclOwner_read_object"),aclOwner_read_state:e.t("ra_aclOwner_read_state"),aclOwner_write_object:e.t("ra_aclOwner_write_object"),aclOwner_write_state:e.t("ra_aclOwner_write_state"),aclGroup_read_object:e.t("ra_aclGroup_read_object"),aclGroup_read_state:e.t("ra_aclGroup_read_state"),aclGroup_write_object:e.t("ra_aclGroup_write_object"),aclGroup_write_state:e.t("ra_aclGroup_write_state"),aclEveryone_read_object:e.t("ra_aclEveryone_read_object"),aclEveryone_read_state:e.t("ra_aclEveryone_read_state"),aclEveryone_write_object:e.t("ra_aclEveryone_write_object"),aclEveryone_write_state:e.t("ra_aclEveryone_write_state"),create:e.t("ra_Create"),createBooleanState:e.t("ra_create_boolean_state"),createNumberState:e.t("ra_create_number_state"),createStringState:e.t("ra_create_string_state"),createState:e.t("ra_create_state"),createChannel:e.t("ra_create_channel"),createDevice:e.t("ra_create_device"),createFolder:e.t("ra_Create folder")},this.levelPadding=e.levelPadding||R5e;const y=this.localStorage.getItem(`${this.props.dialogName||"App"}.table`);if(y)try{const T=JSON.parse(y),d=this.props.width||"lg";this.storedWidths=JSON.parse(JSON.stringify(ze[d])),Object.keys(T).forEach(I=>{I==="id"?ze[d].idWidth=T.id:I==="nameHeader"?ze[d].widths.name=T[I]:ze[d].widths[I]!==void 0&&(ze[d].widths[I]=T[I])}),this.customWidth=!0}catch{}this.calculateColumnsVisibility()}async loadAllObjects(e){var i;const t=this.props;try{await new Promise(l=>{this.setState({updating:!0},()=>l())});const r=(t.objectsWorker?await t.objectsWorker.getObjects(e):await t.socket.getObjects(e,!0))||{};if(t.types&&ke.isWeb())for(let l=0;l{try{if(l(r[N]))this.objects[N]=r[N];else{const u=r[N]&&r[N].type;u&&(u==="channel"||u==="device"||u==="folder"||u==="adapter"||u==="instance")&&(this.objects[N]=r[N])}}catch(u){console.log(`Error by filtering of "${N}": ${u}`)}})}else if(t.types){this.objects={};const l=t.types;Object.keys(r).forEach(N=>{var L;const u=(L=r[N])==null?void 0:L.type;u&&(u==="channel"||u==="device"||u==="enum"||u==="folder"||u==="adapter"||u==="instance"||l.includes(u))&&(this.objects[N]=r[N])})}else this.objects=r;t.setObjectsReference&&t.setObjectsReference(this.objects),this.defaultHistory=this.systemConfig.common.defaultHistory,this.defaultHistory&&t.socket.getState(`system.adapter.${this.defaultHistory}.alive`).then(l=>{l!=null&&l.val||(this.defaultHistory="")}).catch(l=>window.alert(`Cannot get state: ${l}`));const o=await this.getAdditionalColumns();this.calculateColumnsVisibility(null,null,o);const{info:n,root:M}=H0(this.objects,{imagePrefix:t.imagePrefix,root:t.root,lang:t.lang,themeType:t.themeType});this.root=M,this.info=n;const c=((i=this.state.selected)==null?void 0:i.length)&&ug(this.root,this.state.selected[0]);c&&!xa(c,this.state.filter,t.lang,this.objects,void 0,void 0,t.customFilter,t.types)?this.setState({filter:{...Fs},columnsForAdmin:o},()=>{this.doFilter(),this.setState({loaded:!0,updating:!1},()=>this.expandAllSelected(()=>this.onAfterSelect()))}):(this.doFilter(),this.setState({loaded:!0,updating:!1,columnsForAdmin:o},()=>this.expandAllSelected(()=>this.onAfterSelect())))}catch(r){this.showError(r)}}expandAllSelected(e){const t=[...this.state.expanded];let i=!1;this.state.selected.forEach(r=>{const o=r.split("."),n=[];for(let M=0;M!this.objects[N]))&&((c=(M=this.props).onSelect)==null||c.call(M,this.state.selected,null,e))}else this.localStorage.removeItem(`${this.props.dialogName||"App"}.objectSelected`),this.state.selected.length?this.setState({selected:[]},()=>{this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}):this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}static getDerivedStateFromProps(e,t){const i={};let r=!1;return e.expertMode!==void 0&&e.expertMode!==t.filter.expertMode&&(r=!0,i.filter={...t.filter},i.filter.expertMode=e.expertMode),r?i:null}async componentDidMount(){await this.loadAllObjects(!K0),this.props.objectsWorker?this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker):await this.props.socket.subscribeObject("*",this.onObjectChange),K0=!0,window.addEventListener("contextmenu",this.onContextMenu,!0),window.addEventListener("keydown",this.onKeyPress,!0),window.addEventListener("keyup",this.onKeyPress,!0),this.props.onAllLoaded&&setTimeout(()=>{var e,t;(t=(e=this.props).onAllLoaded)==null||t.call(e)},100)}onKeyPress=e=>{e.type==="keydown"&&e.ctrlKey&&!this.ctrlPressed?(this.ctrlPressed=!0,this.tableRef.current&&(this.tableRef.current.className="highlight-link")):e.type==="keyup"&&!e.ctrlKey&&this.ctrlPressed&&(this.ctrlPressed=!1,this.tableRef.current&&(this.tableRef.current.className=""))};componentWillUnmount(){window.removeEventListener("contextmenu",this.onContextMenu,!0),window.removeEventListener("keydown",this.onKeyPress,!0),window.removeEventListener("keyup",this.onKeyPress,!0),this.props.objectsWorker?this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker,!0):this.props.socket.unsubscribeObject("*",this.onObjectChange).catch(e=>console.error(`Cannot unsubscribe *: ${e}`)),this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.objects={}}showDeleteDialog(e){var c,l,N,u;const{id:t,obj:i,item:r}=e,o=Object.keys(this.objects);o.sort();let n=0;const M=`${t}.`;for(let L=0;LM)break;(u=(N=this.props).onObjectDelete)==null||u.call(N,t,!!((c=r.children)!=null&&c.length),!((l=i.common)!=null&&l.dontDelete),n+1)}onContextMenu=e=>{this.contextMenu&&Date.now()-this.contextMenu.ts<2e3?(e.preventDefault(),this.setState({showContextMenu:{item:this.contextMenu.item,position:{left:e.clientX+2,top:e.clientY-6}}})):this.state.showContextMenu&&(e.preventDefault(),this.setState({showContextMenu:null})),this.contextMenu=null};refreshComponent(){this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.loadAllObjects(!0).then(()=>console.log("updated!")).catch(e=>this.showError(e))}renderErrorDialog(){return this.state.error?a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:!0,onClose:()=>this.setState({error:""}),"aria-labelledby":"error-dialog-title","aria-describedby":"error-dialog-description"},a.createElement(fe,{id:"alert-dialog-title"},this.props.t("ra_Error")),a.createElement(_e,null,a.createElement(as,{id:"alert-dialog-description"},this.state.error)),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.setState({error:""}),color:"primary",autoFocus:!0,startIcon:a.createElement(We,null)},this.props.t("ra_Ok")))):null}showError(e){this.setState({error:typeof e=="object"?e&&typeof e.toString=="function"?e.toString():JSON.stringify(e):e})}onSelect(e,t,i){if(this.localStorage.setItem(`${this.props.dialogName||"App"}.focused`,e),!this.props.multiSelect)this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))?(this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`),this.state.selected[0]!==e?this.setState({selected:[e],selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),i&&i()}):t&&this.props.onSelect&&this.onAfterSelect(t)):(this.localStorage.setItem(`${this.props.dialogName||"App"}.selectedNonObject`,e),this.setState({selected:[],selectedNonObject:e,focused:e},()=>{this.onAfterSelect(),i&&i()}));else if(this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))){this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`);const r=[...this.state.selected],o=r.indexOf(e);o===-1?(r.push(e),r.sort()):t||r.splice(o,1),this.setState({selected:r,selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),i&&i()})}}_renderDefinedList(e){const t=[...this.possibleCols];if(t.unshift("id"),this.props.columns&&!this.props.columns.includes("buttons")){const i=t.indexOf("buttons");i!==-1&&t.splice(i,1)}return t.filter(i=>e&&(i==="val"||i==="buttons")||!e&&i!=="val"&&i!=="buttons").map(i=>{var r;return a.createElement(_c,{onClick:()=>{if(!this.state.columnsAuto&&i!=="id"){const o=[...this.state.columns||[]],n=o.indexOf(i);n===-1?(o.push(i),o.sort()):o.splice(n,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.calculateColumnsVisibility(null,o),this.setState({columns:o})}},key:i},a.createElement(ue,{edge:"start",disabled:i==="id"||this.state.columnsAuto,checked:i==="id"||!!(this.state.columnsAuto?this.visibleCols.includes(i):(r=this.state.columns)!=null&&r.includes(i)),disableRipple:!0}),a.createElement(dt,{primary:this.texts[`filter_${i}`]||this.props.t(`ra_${i}`)}))})}renderColumnsSelectorDialog(){return this.state.columnsSelectorShow?a.createElement(Ae,{onClose:()=>this.setState({columnsSelectorShow:!1}),open:!0,sx:{"& .MuiPaper-root":m.getStyle(this.props.theme,z.dialogColumns,z[`transparent_${this.state.columnsDialogTransparent}`])}},a.createElement(fe,{sx:z.fontSizeTitle},this.props.t("ra_Configure")),a.createElement(_e,{sx:z.fontSizeTitle},a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.foldersFirst,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.foldersFirst`,this.state.foldersFirst?"false":"true"),this.setState({foldersFirst:!this.state.foldersFirst})}}),label:this.props.t("ra_Folders always first")}),a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.linesEnabled,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.lines`,this.state.linesEnabled?"false":"true"),this.setState({linesEnabled:!this.state.linesEnabled})}}),label:this.props.t("ra_Show lines between rows")}),a.createElement(V,{style:z.switchColumnAuto,control:a.createElement(br,{checked:this.state.columnsAuto,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.columnsAuto`,this.state.columnsAuto?"false":"true"),this.state.columnsAuto?this.state.columns?(this.calculateColumnsVisibility(!1),this.setState({columnsAuto:!1})):(this.calculateColumnsVisibility(!1,[...this.visibleCols]),this.setState({columnsAuto:!1,columns:[...this.visibleCols]})):(this.calculateColumnsVisibility(!0),this.setState({columnsAuto:!0}))}}),label:this.props.t("ra_Auto (no custom columns)")}),a.createElement(xc,null,this._renderDefinedList(!1),this.state.columnsForAdmin&&Object.keys(this.state.columnsForAdmin).sort().map(e=>{var t;return(t=this.state.columnsForAdmin)==null?void 0:t[e].map(i=>{var r;return a.createElement(_c,{onClick:()=>{if(!this.state.columnsAuto){const o=[...this.state.columns||[]],n=`_${e}_${i.path}`,M=o.indexOf(n);M===-1?(o.push(n),o.sort()):o.splice(M,1),this.calculateColumnsVisibility(null,o),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.setState({columns:o})}},key:`${e}_${i.name}`},a.createElement(Xt,null,a.createElement(ue,{disabled:this.state.columnsAuto,edge:"start",checked:!this.state.columnsAuto&&((r=this.state.columns)==null?void 0:r.includes(`_${e}_${i.path}`)),disableRipple:!0})),a.createElement(dt,{primary:`${i.name} (${e})`}))})}),this._renderDefinedList(!0))),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.setState({columnsSelectorShow:!1}),color:"primary",startIcon:a.createElement(we,null)},this.texts.close))):null}async getAdditionalColumns(){try{const e=await this.props.socket.getAdapters();let t=null;return e.forEach(i=>t=this.parseObjectForAdmins(t,i)),t}catch(e){return console.error(`Cannot get adapters: ${e}`),null}}checkUnsubscribes(){for(let e=this.subscribes.length-1;e>=0;e--)this.recordStates.includes(this.subscribes[e])||this.unsubscribe(this.subscribes[e]);this.recordStates=[]}findItem(e,t,i,r){if(t||=e.split("."),i||=this.root,!i||!t.length)return null;if(r=(r?`${r}.`:"")+t.shift(),i.children){const o=i.children.find(n=>n.data.id===r);if(o){if(o.data.id===e)return o;if(t.length)return this.findItem(e,t,o,r)}else return null}return null}onStateChange=(e,t)=>{if(this.states[e]){const i=this.findItem(e);i!=null&&i.data.state&&(i.data.state=void 0)}t?this.states[e]=t:delete this.states[e],this.pausedSubscribes?this.statesUpdateTimer&&(clearTimeout(this.statesUpdateTimer),this.statesUpdateTimer=null):this.statesUpdateTimer||(this.statesUpdateTimer=setTimeout(()=>{this.statesUpdateTimer=null,this.forceUpdate()},300))};parseObjectForAdmins(e,t){var i;if((i=t.common)!=null&&i.adminColumns&&t.common.name){const r=t.common.adminColumns;let o;r&&typeof r!="object"?o=[r]:r&&(o=r);let n;r?n=o.map(M=>{if(typeof M!="object")return{path:M,name:M.split(".").pop()};const c=M;return c.objTypes&&typeof c.objTypes!="object"?c.objTypes=[c.objTypes]:c.objTypes||(c.objTypes=void 0),!c.name&&c.path?{path:c.path,name:c.path.split(".").pop(),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:c.path?{path:c.path,name:He(c.name||"",this.props.lang),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:(console.warn(`Admin columns for ${t._id} ignored, because path not found`),null)}).filter(M=>M):n=null,n!=null&&n.length&&(e||={},e[t.common.name]=n.sort((M,c)=>M.path>c.path?-1:M.path{if(Array.isArray(e)){let t=null;e.forEach(i=>{const{newInnerState:r,filtered:o}=this.processOnObjectChangeElement(i.id,i.obj);o||(r&&t?Object.assign(t,r):t=r)}),t&&this.setState(t),this.afterObjectUpdated()}};onObjectChange=(e,t)=>{const{newInnerState:i,filtered:r}=this.processOnObjectChangeElement(e,t);r||(i&&this.setState(i),this.afterObjectUpdated())};afterObjectUpdated(){!this.objectsUpdateTimer&&this.objects&&(this.objectsUpdateTimer=setTimeout(()=>{this.objectsUpdateTimer=null;const{info:e,root:t}=H0(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=t,this.info=e,this.pausedSubscribes||this.doFilter()},500))}updateAliases(e){var i,r,o;if(!this.objects||!((i=this.info)!=null&&i.aliasesMap)||!(e!=null&&e.startsWith("alias.")))return;const t=Object.keys(this.objects).filter(n=>n.startsWith("alias.0"));this.info.aliasesMap={};for(const n of t){const M=this.objects[n];if((o=(r=M==null?void 0:M.common)==null?void 0:r.alias)!=null&&o.id)if(typeof M.common.alias.id=="string"){const c=M.common.alias.id;this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(n)||this.info.aliasesMap[c].push(n):this.info.aliasesMap[c]=[n]}else{const c=M.common.alias.id.read;c&&(this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(n)||this.info.aliasesMap[c].push(n):this.info.aliasesMap[c]=[n]);const l=M.common.alias.id.write;l&&(this.info.aliasesMap[l]?this.info.aliasesMap[l].includes(n)||this.info.aliasesMap[l].push(n):this.info.aliasesMap[l]=[n])}}}processOnObjectChangeElement(e,t){const i=t==null?void 0:t.type;if(t&&typeof this.props.filterFunc=="function"&&!this.props.filterFunc(t)&&i!=="channel"&&i!=="device"&&i!=="folder"&&i!=="adapter"&&i!=="instance")return{newInnerState:null,filtered:!0};let r=null;if(e.startsWith("system.adapter.")&&(t==null?void 0:t.type)==="adapter"){const o=JSON.parse(JSON.stringify(this.state.columnsForAdmin));this.parseObjectForAdmins(o,t),JSON.stringify(this.state.columnsForAdmin)!==JSON.stringify(o)&&(r={columnsForAdmin:o})}return this.objects||={},t?this.objects[e]=t:this.objects[e]&&delete this.objects[e],this.updateAliases(e),{newInnerState:r,filtered:!1}}subscribe(e){this.subscribes.includes(e)||(this.subscribes.push(e),this.pausedSubscribes||this.props.socket.subscribeState(e,this.onStateChange).catch(t=>console.error(`Cannot subscribe on state ${e}: ${t}`)))}unsubscribe(e){const t=this.subscribes.indexOf(e);t!==-1&&(this.subscribes.splice(t,1),this.states[e]&&delete this.states[e],this.props.socket.unsubscribeState(e,this.onStateChange),this.pausedSubscribes&&console.warn("Unsubscribe during pause?"))}pauseSubscribe(e){!this.pausedSubscribes&&e?(this.pausedSubscribes=!0,this.subscribes.forEach(t=>this.props.socket.unsubscribeState(t,this.onStateChange))):this.pausedSubscribes&&!e&&(this.pausedSubscribes=!1,this.subscribes.forEach(t=>this.props.socket.subscribeState(t,this.onStateChange)))}clearFilter(){JSON.stringify(this.state.filter)!==JSON.stringify(Fs)&&this.setState({filter:{...Fs},filterKey:this.state.filterKey+1},()=>{var e,t;this.doFilter(),(t=(e=this.props).onFilterChanged)==null||t.call(e,{...Fs})})}isFilterEmpty(){var e,t,i,r,o;return!!this.state.filter.id||!!this.state.filter.name||!!((e=this.state.filter.room)!=null&&e.length)||!!((t=this.state.filter.func)!=null&&t.length)||!!((i=this.state.filter.role)!=null&&i.length)||!!((r=this.state.filter.type)!=null&&r.length)||!!((o=this.state.filter.custom)!=null&&o.length)}getFilterInput(e){return a.createElement($5e,{key:`${e}_${this.state.filterKey}`,styles:this.styles.filterInput,name:e,texts:this.texts,t:this.props.t,initialValue:this.state.filter[e],onChange:(t,i)=>{const r={...this.state.filter};i===void 0?delete r[t]:r[t]=i,this.setState({filter:r},()=>{var o,n;this.doFilter(),(n=(o=this.props).onFilterChanged)==null||n.call(o,r)})}})}getFilterSelect(e,t){return a.createElement(U5e,{key:`${e}_${this.state.filterKey}`,name:e,texts:this.texts,initialValue:this.state.filter[e]||[],values:t,onChange:(i,r)=>{const o={...this.state.filter};r===void 0?delete o[i]:o[i]=r,this.setState({filter:o},()=>{var n,M;this.doFilter(),(M=(n=this.props).onFilterChanged)==null||M.call(n,o)})}})}getFilterSelectRole(){return this.getFilterSelect("role",this.info.roles.map(e=>e.role))}getFilterSelectRoom(){const e=this.info.roomEnums.map(t=>{var i,r,o,n;return{name:He((r=(i=this.objects[t])==null?void 0:i.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(be,{src:((n=(o=this.objects[t])==null?void 0:o.common)==null?void 0:n.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("room",e)}getFilterSelectFunction(){const e=this.info.funcEnums.map(t=>{var i,r,o,n;return{name:He((r=(i=this.objects[t])==null?void 0:i.common)==null?void 0:r.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(be,{src:((n=(o=this.objects[t])==null?void 0:o.common)==null?void 0:n.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("func",e)}getFilterSelectType(){const e=this.info.types.map(t=>({name:t,value:t,icon:X0[t]||null}));return this.getFilterSelect("type",e)}getFilterSelectCustoms(){if(this.info.customs.length>1){const e=this.info.customs.map(t=>({name:t==="_"?this.texts.filterCustomsWithout:t,value:t,icon:t==="_"?null:a.createElement(be,{src:_o(this.objects,t,this.props.lang,this.imagePrefix)||"",style:z.selectIcon})}));return this.getFilterSelect("custom",e)}return null}onExpandAll(e,t){var r;const i=e||this.root;t||=[],(r=i==null?void 0:i.children)==null||r.forEach(o=>{o.data.sumVisibility&&(t.push(o.data.id),this.onExpandAll(o,t))}),i===this.root&&(t.sort(),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t}))}onCollapseAll(){this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify([])),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,"[]"),this.setState({expanded:[],depth:0,selected:[]},()=>this.onAfterSelect())}expandDepth(e,t,i){var r;e||=this.root,t>0&&((r=e.children)==null||r.forEach(o=>{o.data.sumVisibility&&(jr(i,o.data.id)||(i.push(o.data.id),i.sort()),t-1>0&&this.expandDepth(o,t-1,i))}))}static collapseDepth(e,t){return t.filter(i=>i.split(".").length<=e)}onExpandVisible(){if(this.state.depth<9){const e=this.state.depth+1,t=[...this.state.expanded];this.root&&this.expandDepth(this.root,e,t),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}onStatesViewVisible(){const e=!this.state.statesView;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectStatesView`,JSON.stringify(e)),this.setState({statesView:e})}onCollapseVisible(){if(this.state.depth>0){const e=this.state.depth-1,t=xo.collapseDepth(e,this.state.expanded);this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}getEnumsForId=e=>{const t=[];return this.info.enums.forEach(i=>{var r,o,n;if((n=(o=(r=this.objects[i])==null?void 0:r.common)==null?void 0:o.members)!=null&&n.includes(e)){const M={_id:this.objects[i]._id,common:JSON.parse(JSON.stringify(this.objects[i].common)),native:this.objects[i].native,type:"enum"};M.common&&(delete M.common.members,delete M.common.custom,delete M.common.mobile),t.push(M)}}),t.length?t:void 0};_createAllEnums=async(e,t)=>{var i,r;for(let o=0;or)break}return e}return[]}async _exportObjects(e){var o;if(e.isAll){F0("allObjects.json",this.objects,e);return}if(!(this.state.selected.length||this.state.selectedNonObject)){window.alert(this.props.t("ra_Save of objects-tree is not possible"));return}const t={},i=this.state.selected[0]||this.state.selectedNonObject,r=this._getSelectedIdsForExport();for(const n of r){if(t[n]=JSON.parse(JSON.stringify(this.objects[n])),((o=t[n])==null?void 0:o.type)==="state"&&!e.noStatesByExportImport){const M=await this.props.socket.getState(n);M&&(t[n].val=M.val,t[n].ack=M.ack)}if(t[n].common){const M=this.getEnumsForId(n);M&&(t[n].common.enums=M)}}F0(`${i}.json`,t,e)}renderExportDialog(){return this.state.showExportDialog===!1?null:a.createElement(Ae,{open:!0,maxWidth:"lg"},a.createElement(fe,null,this.props.t("ra_Select type of export")),a.createElement(_e,null,a.createElement(as,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(a.Fragment,null,this.props.t("ra_You can export all objects or just the selected branch."),a.createElement("br",null),this.props.t("ra_Selected %s object(s)",this.state.showExportDialog),a.createElement("br",null),a.createElement(V,{control:a.createElement(ue,{checked:this.state.noStatesByExportImport,onChange:e=>this.setState({noStatesByExportImport:e.target.checked})}),label:this.props.t("ra_Do not export values of states")}),a.createElement("br",null),this.props.t("These options can reduce the size of the export file:"),a.createElement(V,{control:a.createElement(ue,{checked:this.state.beautifyJsonExport,onChange:e=>this.setState({beautifyJsonExport:e.target.checked})}),label:this.props.t("Beautify JSON output")}),a.createElement("br",null),a.createElement(V,{control:a.createElement(ue,{checked:this.state.excludeSystemRepositoriesFromExport,onChange:e=>this.setState({excludeSystemRepositoriesFromExport:e.target.checked})}),label:this.props.t("Exclude system repositories from export JSON")}),a.createElement(V,{control:a.createElement(ue,{checked:this.state.excludeTranslations,onChange:e=>this.setState({excludeTranslations:e.target.checked})}),label:this.props.t("Exclude translations (except english) from export JSON")})):null)),a.createElement(xe,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(q,{color:"grey",variant:"outlined",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!0,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_All objects")),"(",Object.keys(this.objects).length,")"):a.createElement(q,{color:"grey",variant:"outlined",startIcon:a.createElement(Oa,null),onClick:()=>this.setState({showAllExportOptions:!0})},this.props.t("ra_Advanced options")),a.createElement(q,{color:"primary",variant:"contained",autoFocus:!0,onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!1,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_Only selected")),"(",this.state.showExportDialog,")"),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1}),startIcon:a.createElement(we,null)},this.props.t("ra_Cancel"))))}renderRenameDialog(){var t;if(!this.state.showRenameDialog)return null;const e=this.props.objectMoveRenameDialog;return a.createElement(e,{expertMode:this.props.expertMode,onClose:()=>this.setState({showRenameDialog:null}),id:this.state.showRenameDialog.id,childrenIds:this.state.showRenameDialog.childrenIds,theme:this.props.theme,socket:this.props.socket,t:this.props.t,objectType:(t=this.objects[this.state.showRenameDialog.id])==null?void 0:t.type})}async parseJsonFile(e){try{const t=JSON.parse(e),i=Object.keys(t).length,r=t._id;if(r===void 0&&i)await this.loadObjects(t),window.alert(this.props.t("ra_%s object(s) processed",i));else{if(!r)return window.alert(this.props.t("ra_Invalid structure"));try{let o,n,M;if(t.common.enums&&(o=t.common.enums,delete t.common.enums),t.val&&(n=t.val,delete t.val),t.ack!==void 0&&(M=t.ack,delete t.ack),await this.props.socket.setObject(t._id,t),t.type==="state")if(n!=null)await this.props.socket.setState(t._id,n,M===void 0?!0:M);else{const c=await this.props.socket.getState(t._id);(!c||c.val===null||c.val===void 0)&&await this.props.socket.setState(t._id,t.common.def===void 0?null:t.common.def,!0)}o&&await this._createAllEnums(o,t._id),window.alert(this.props.t("ra_%s was imported",t._id))}catch(o){window.alert(o)}}}catch(t){window.alert(t)}}handleJsonUpload(e){var r;const t=e.target,i=((r=t.files)==null?void 0:r.length)&&t.files[0];if(i){const o=new FileReader;o.onload=n=>{var M;return this.parseJsonFile((M=n.target)==null?void 0:M.result),null},o.readAsText(i)}else window.alert(this.props.t("ra_Failed to open JSON File"))}toolTipObjectCreating=()=>{var i,r;const{t:e}=this.props;let t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];if(this.state.selected.length||this.state.selectedNonObject){const o=this.state.selected[0]||this.state.selectedNonObject;if(!(o.split(".").length<2||this.objects[o]&&((i=this.objects[o])==null?void 0:i.type)==="state"))if(this.state.filter.expertMode)switch((r=this.objects[o])==null?void 0:r.type){case"device":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"folder":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"channel":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:1},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break}else(o.startsWith("alias.0")||o.startsWith("0_userdata"))&&(t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:7},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:8},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))])}return t.length?t:e("ra_Add new child object to selected parent")};onOpenFile(){const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",t=>this.handleJsonUpload(t),!1),e.click()}renderInputJsonDialog(){const e=this.props.objectBrowserInsertJsonObjects;return this.state.showImportDialog?a.createElement(e,{onClose:t=>{this.setState({showImportDialog:!1}),t&&this.parseJsonFile(t)},themeName:this.props.themeName,themeType:this.props.themeType,t:this.props.t}):null}getToolbar(){let e=!1;if(this.state.selected.length||this.state.selectedNonObject){const t=this.state.selected[0]||this.state.selectedNonObject;t.split(".").length<2||this.objects[t]&&this.objects[t].type==="state"?e=!1:(this.state.filter.expertMode||t.startsWith("alias.0")||t.startsWith("0_userdata"))&&(e=!0)}return a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center",overflowX:"auto"}},a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},a.createElement(Le,{title:this.props.t("ra_Refresh tree"),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(W,{onClick:()=>this.refreshComponent(),disabled:this.state.updating,size:"large"},a.createElement(_N,null)))),this.props.showExpertButton&&!this.props.expertMode&&a.createElement(Le,{title:this.props.t("ra_expertMode"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expertMode",color:this.state.filter.expertMode?"secondary":"default",onClick:()=>{const t={...this.state.filter};t.expertMode=!t.expertMode,this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(t)),this.setState({filter:t})},size:"large"},a.createElement(Oa,null))),!this.props.disableColumnSelector&&this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Configure"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"columnSelector",color:this.state.columnsAuto?"primary":"default",onClick:()=>this.setState({columnsSelectorShow:!0}),size:"large"},a.createElement(hy,null))),this.props.width!=="xs"&&this.state.expandAllVisible&&a.createElement(Le,{title:this.props.t("ra_Expand all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expandAll",onClick:()=>this.onExpandAll(),size:"large"},a.createElement(lo,null))),a.createElement(Le,{title:this.props.t("ra_Collapse all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"collapseAll",onClick:()=>this.onCollapseAll(),size:"large"},a.createElement(Ti,null))),this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Expand one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"expandVisible",color:"primary",onClick:()=>this.onExpandVisible(),size:"large"},a.createElement(Sc,{badgeContent:this.state.depth,color:"secondary",sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}})},a.createElement(lo,null)))),this.props.width!=="xs"&&a.createElement(Le,{title:this.props.t("ra_Collapse one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{key:"collapseVisible",color:"primary",onClick:()=>this.onCollapseVisible(),size:"large"},a.createElement(Sc,{sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}}),badgeContent:this.state.depth,color:"secondary"},a.createElement(Ti,null)))),this.props.objectStatesView&&a.createElement(Le,{title:this.props.t("ra_Toggle the states view"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>this.onStatesViewVisible(),size:"large"},a.createElement(My,{color:this.state.statesView?"primary":"inherit"}))),a.createElement(Le,{title:this.props.t("ra_Show/Hide object descriptions"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.desc`,this.state.showDescription?"false":"true"),this.setState({showDescription:!this.state.showDescription})},size:"large"},a.createElement(gy,{color:this.state.showDescription?"primary":"inherit"}))),this.props.objectAddBoolean?a.createElement(Le,{title:this.toolTipObjectCreating(),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(W,{disabled:!e,onClick:()=>this.setState({modalNewObj:{id:this.state.selected[0]||this.state.selectedNonObject}}),size:"large"},a.createElement(Kn,null)))):null,this.props.objectImportExport&&a.createElement(Le,{title:this.props.t("ra_Add objects tree from JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:t=>{this.props.objectBrowserInsertJsonObjects?this.setState({showImportMenu:t.currentTarget}):this.onOpenFile()},size:"large"},a.createElement(go,null))),this.props.objectBrowserInsertJsonObjects?a.createElement(ws,{anchorEl:this.state.showImportMenu,open:!!this.state.showImportMenu,onClose:()=>this.setState({showImportMenu:null})},a.createElement(re,{onClick:()=>this.setState({showImportMenu:null},()=>this.onOpenFile())},a.createElement(Xt,null,a.createElement(jy,null)),a.createElement(dt,null,this.props.t("ra_From file"))),a.createElement(re,{onClick:()=>this.setState({showImportMenu:null,showImportDialog:!0})},a.createElement(Xt,null,a.createElement(Gj,null)),a.createElement(dt,null,this.props.t("ra_From text")))):null,this.props.objectImportExport&&(!!this.state.selected.length||this.state.selectedNonObject)&&a.createElement(Le,{title:this.props.t("ra_Save objects tree as JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>this.setState({showExportDialog:this._getSelectedIdsForExport().length}),size:"large"},a.createElement(go,{style:{transform:"rotate(180deg)"}})))),!!this.props.objectBrowserEditObject&&this.props.width!=="xs"&&a.createElement("div",{style:{display:"flex",whiteSpace:"nowrap"}},`${this.props.t("ra_Objects")}: ${Object.keys(this.info.objects).length}, ${this.props.t("ra_States")}: ${Object.keys(this.info.objects).filter(t=>this.info.objects[t].type==="state").length}`),this.props.objectEditBoolean&&a.createElement(Le,{title:this.props.t("ra_Edit custom config"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{onClick:()=>{var i;const t=this.root?Mg(this.root,"state",this.objects):[];t.length?(this.pauseSubscribe(!0),t.length===1&&(this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,this.state.selected[0]),(i=this.props.router)==null||i.doNavigate(null,"custom",this.state.selected[0])),this.setState({customDialog:t,customDialogAll:!0})):this.setState({toast:this.props.t("ra_please select object")})},size:"large"},a.createElement(Jj,null))))}toggleExpanded(e){const t=JSON.parse(JSON.stringify(this.state.expanded)),i=t.indexOf(e);i===-1?(t.push(e),t.sort()):t.splice(i,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t})}onCopy(e,t){e.stopPropagation(),e.preventDefault(),t&&(m.copyToClipboard(t),t.length<50?this.setState({toast:this.props.t("ra_Copied %s",t)}):this.setState({toast:this.props.t("ra_Copied")}))}renderTooltipAccessControl=e=>{if(!e)return null;const t=[{value:"0x400",valueNum:1024,title:"read",group:"Owner"},{value:"0x200",valueNum:512,title:"write",group:"Owner"},{value:"0x40",valueNum:64,title:"read",group:"Group"},{value:"0x20",valueNum:32,title:"write",group:"Group"},{value:"0x4",valueNum:4,title:"read",group:"Everyone"},{value:"0x2",valueNum:2,title:"write",group:"Everyone"}],i=[],r=o=>{const n=e[o];t.forEach((M,c)=>{n&M.valueNum&&i.push(a.createElement("span",{key:o+c},this.texts[`acl${M.group}_${M.title}_${o}`],",",a.createElement("span",{style:o==="object"?z.rightsObject:z.rightsState},M.value)))})};return i.push(a.createElement("span",{key:"group"},`${this.texts.ownerGroup}: ${(e.ownerGroup||"").replace("system.group.","")}`)),i.push(a.createElement("span",{key:"owner"},`${this.texts.ownerUser}: ${(e.owner||"").replace("system.user.","")}`)),r("object"),e.state&&r("state"),i.length?a.createElement("span",{style:z.tooltipAccessControl},i.map(o=>o)):null};renderColumnButtons(e,t){var n,M,c,l;if(!t.data.obj)return this.props.onObjectDelete||this.props.objectEditOfAccessControl?a.createElement("div",{style:z.buttonDiv},this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonsEmptyButton,...z.cellButtonMinWidth},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:{height:15}},"---")):null,this.props.onObjectDelete&&((n=t.children)!=null&&n.length)?a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonsButtonAlone},size:"small","aria-label":"delete",title:this.texts.deleteObject,onClick:()=>{var g;const N=Object.keys(this.objects);N.sort();let u=0;const L=`${e}.`;for(let j=0;jL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((g=t.children)!=null&&g.length),!1,u+1)}},a.createElement(wt,{style:z.cellButtonsButtonIcon})):null):null;t.data.aclTooltip=t.data.aclTooltip||this.renderTooltipAccessControl(t.data.obj.acl);const i=t.data.obj.acl?t.data.obj.type==="state"?t.data.obj.acl.state:t.data.obj.acl.object:0,r=t.data.obj.acl&&(t.data.obj.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object),o=this.state.filter.expertMode||Z0(t.data.id);return[this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(Le,{key:"acl",title:t.data.aclTooltip,slotProps:{popper:{sx:z.tooltip}}},a.createElement(W,{sx:{...z.cellButtonsButton,...z.cellButtonMinWidth,opacity:1},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:z.aclText},Number.isNaN(Number(i))?Number(r).toString(16):Number(i).toString(16)))):a.createElement("div",{key:"aclEmpty",style:z.cellButtonMinWidth}),o?a.createElement(W,{key:"edit",sx:{marginRight:"2px",...z.cellButtonsButton},size:"small","aria-label":"edit",title:this.texts.editObject,onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.setState({editObjectDialog:e,editObjectAlias:!1})}},a.createElement(or,{style:z.cellButtonsButtonIcon})):a.createElement(J,{component:"div",key:"editDisabled",sx:z.cellButtonsButton}),this.props.onObjectDelete&&((M=t.children)!=null&&M.length||!((c=t.data.obj.common)!=null&&c.dontDelete))?a.createElement(W,{key:"delete",sx:z.cellButtonsButton,size:"small","aria-label":"delete",onClick:()=>{var g,j,y;const N=Object.keys(this.objects);N.sort();let u=0;const L=`${e}.`;for(let T=0;TL)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((g=t.children)!=null&&g.length),!((y=(j=t.data.obj)==null?void 0:j.common)!=null&&y.dontDelete),u)},title:this.texts.deleteObject},a.createElement(wt,{style:z.cellButtonsButtonIcon})):null,this.props.objectCustomDialog&&this.info.hasSomeCustoms&&t.data.obj.type==="state"&&((l=t.data.obj.common)==null?void 0:l.type)!=="file"?a.createElement(W,{sx:{...z.cellButtonsButton,...t.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms},key:"custom",size:"small","aria-label":"config",title:this.texts.customConfig,onClick:()=>{var N;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.pauseSubscribe(!0),(N=this.props.router)==null||N.doNavigate(null,"customs",e),this.setState({customDialog:[e],customDialogAll:!1})}},a.createElement(qn,{style:z.cellButtonsButtonIcon})):null]}readHistory(e){var t,i;if(window.sparkline&&this.defaultHistory&&((i=(t=this.objects[e])==null?void 0:t.common)!=null&&i.custom)&&this.objects[e].common.custom[this.defaultHistory]){const r=new Date;r.setHours(r.getHours()-24),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0);const o=r.getTime();this.props.socket.getHistory(e,{instance:this.defaultHistory,start:o,end:Date.now(),step:36e5,from:!1,ack:!1,q:!1,addId:!1,aggregate:"minmax"}).then(n=>{const M=window.document.getElementsByClassName("sparkline");for(let c=0;cconsole.warn(`Cannot read history: ${n}`))}}getTooltipInfo(e,t){var l,N,u;const i=this.objects[e],r=this.states[e],{valFull:o,fileViewer:n}=Pn({state:r,obj:i,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,full:!0}),M=[];o==null||o.forEach(L=>{L.t===this.texts.quality&&r.q?(M.push(a.createElement("div",{style:z.cellValueTooltipBoth,key:L.t},L.t,": ",L.v)),L.nbr||M.push(a.createElement("br",{key:`${L.t}_br`}))):(M.push(a.createElement("div",{style:z.cellValueTooltipTitle,key:L.t},L.t,": ")),M.push(a.createElement("div",{style:z.cellValueTooltipValue,key:`${L.t}_v`},L.v)),L.nbr||M.push(a.createElement("br",{key:`${L.t}_br`})))});const c=((l=i==null?void 0:i.common)==null?void 0:l.role)||"";n==="image"?M.push(a.createElement("img",{style:z.cellValueTooltipImage,src:r.val,alt:e})):c==="url"||i.common.role==="url.self"||i.common.role==="url.blank"?M.unshift(a.createElement("div",{key:"ctrl",style:{textDecoration:"underline",fontWeight:"bold"}},this.texts.ctrlForLink)):this.defaultHistory&&((u=(N=i==null?void 0:i.common)==null?void 0:N.custom)!=null&&u[this.defaultHistory])&&M.push(a.createElement("svg",{key:"sparkline",className:"sparkline","data-id":e,style:{fill:"#3d85de"},width:"200",height:"30",strokeWidth:"3"})),this.setState({tooltipInfo:{el:M,id:e}},()=>t&&t())}renderColumnValue(e,t,i){var c,l;const r=t.data.obj;if(!r||!this.states)return null;if(((c=r.common)==null?void 0:c.type)==="file")return a.createElement(J,{component:"div",sx:{...z.cellValueText,...z.cellValueFile}},"[file]");if(!this.states[e])return r.type==="state"&&(this.recordStates.includes(e)||this.recordStates.push(e),this.states[e]={val:null},this.subscribe(e)),null;this.recordStates.includes(e)||this.recordStates.push(e);const o=this.states[e];let n=t.data.state;if(!n){const{valText:N}=Pn({state:o,obj:r,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma}),u=[];if(t.data.state={valTextRx:u},u.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}valText`,style:{whiteSpace:"nowrap",display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}},N.v.toString())),N.u&&u.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,style:z.cellValueTextUnit,key:`${N.v.toString()}unit`},N.u)),N.s!==void 0&&u.push(a.createElement("span",{style:z.cellValueTextState,className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${N.v.toString()}states`},"(",N.s,")")),!i){const L=N.c!==void 0?N.c:N.v||"";u.push(a.createElement(Bs,{className:"copyButton",style:this.styles.iconCopy,onClick:g=>this.onCopy(g,L),key:"cc"}))}n=t.data.state}n.style=W5e({state:o,isExpertMode:this.state.filter.expertMode,isButton:t.data.button,nonAckColor:this.props.theme.palette.nonAck});let M=n.valTextRx;return this.state.filter.expertMode||(t.data.button?M=[a.createElement(Y5e,{key:"button",style:{color:n.style.color,...z.cellValueButton}})]:t.data.switch&&(M=[a.createElement(br,{key:"switch",sx:{"& .MuiSwitch-thumb":{color:n.style.color},"& .MuiSwitch-track":{backgroundColor:this.states[e].val&&this.state.selected.includes(e)?this.props.themeType==="dark"?"#FFF !important":"#111 !important":void 0}},checked:!!this.states[e].val})])),a.createElement(Le,{key:"value",title:(l=this.state.tooltipInfo)==null?void 0:l.el,slotProps:{popper:{sx:z.cellValueTooltipBox},tooltip:{sx:z.cellValueTooltip}},onOpen:()=>this.getTooltipInfo(e,()=>this.readHistory(e)),onClose:()=>{var N;return((N=this.state.tooltipInfo)==null?void 0:N.id)===e&&this.setState({tooltipInfo:null})}},a.createElement(J,{component:"div",style:n.style,className:t.data.url?"iob-link":void 0,sx:{...z.cellValueText,height:i?void 0:$e,"& .admin-button:active":{transform:"translate(0, 2px)"}}},M))}_syncEnum(e,t,i,r){var M,c,l;if(!(t!=null&&t.length)){r&&r();return}const o=t.pop()||"",n=[];if((M=this.info.objects[o])!=null&&M.common){if((c=this.info.objects[o].common.members)!=null&&c.length){const N=this.info.objects[o].common.members.indexOf(e);if(N!==-1&&!i.includes(o)){const u=JSON.parse(JSON.stringify(this.info.objects[o]));u.common.members.splice(N,1),n.push(this.props.socket.setObject(o,u).then(()=>this.info.objects[o]=u).catch(L=>this.showError(L)))}}if(i.includes(o)&&!((l=this.info.objects[o].common.members)!=null&&l.includes(e))){const N=JSON.parse(JSON.stringify(this.info.objects[o]));N.common.members||=[],N.common.members.push(e),N.common.members.sort(),n.push(this.props.socket.setObject(o,N).then(()=>this.info.objects[o]=N).catch(u=>this.showError(u)))}}Promise.all(n).then(()=>{setTimeout(()=>this._syncEnum(e,t,i,r),0)})}syncEnum(e,t,i){const r=[...this.info[t==="func"?"funcEnums":"roomEnums"]];return new Promise(o=>{this._syncEnum(e,r,i,()=>{o()})})}renderEnumDialog(){if(!this.state.enumDialog)return null;const e=this.state.enumDialog.type,t=this.state.enumDialog.item,i=this.state.enumDialogEnums,r=this.state.enumDialog.enumsOriginal,o=(e==="room"?this.info.roomEnums:this.info.funcEnums).map(n=>{var M,c;return{name:He(((c=(M=this.objects[n])==null?void 0:M.common)==null?void 0:c.name)||n.split(".").pop()||"",this.props.lang),value:n,icon:_o(this.objects,n,this.props.lang,this.imagePrefix)}}).sort((n,M)=>n.name>M.name?1:-1);return o.forEach(n=>{n.icon&&typeof n.icon=="string"&&(n.icon=a.createElement(J,{style:z.enumIconDiv},a.createElement("img",{src:n.icon,style:z.enumIcon,alt:n.name})))}),a.createElement(Ae,{sx:{"& .MuiPaper-root":z.enumDialog},onClose:()=>this.setState({enumDialog:null}),"aria-labelledby":"enum-dialog-title",open:!0},a.createElement(fe,{id:"enum-dialog-title",style:{display:"flex",justifyContent:"space-between",width:"100%",flexWrap:"nowrap",gap:8,paddingRight:12}},e==="func"?this.props.t("ra_Define functions"):this.props.t("ra_Define rooms"),a.createElement(bt,{color:"primary",disabled:r===JSON.stringify(i),size:"small",onClick:()=>this.syncEnum(t.data.id,e,i).then(()=>this.setState({enumDialog:null,enumDialogEnums:null}))},a.createElement(We,null))),a.createElement(xc,{sx:{"&.MuiList-root":z.enumList}},o.map(n=>{let M,c,l;typeof n=="object"?(M=n.value,c=n.name,l=n.icon):(M=n,c=n);const N=`checkbox-list-label-${M}`;return a.createElement(Hg,{sx:z.headerCellSelectItem,key:M,onClick:()=>{const u=i.indexOf(M),L=JSON.parse(JSON.stringify(this.state.enumDialogEnums));u===-1?(L.push(M),L.sort()):L.splice(u,1),this.setState({enumDialogEnums:L})},secondaryAction:l},a.createElement(Xt,{sx:{"&.MuiListItemIcon-root":z.enumCheckbox}},a.createElement(ue,{edge:"start",checked:i.includes(M),tabIndex:-1,disableRipple:!0,slotProps:{input:{"aria-labelledby":N}}})),a.createElement(dt,{id:N},c))})))}renderEditRoleDialog(){var e,t;if(!this.state.roleDialog||!this.props.objectBrowserEditRole)return null;if(this.state.roleDialog&&this.props.objectBrowserEditRole){const i=this.props.objectBrowserEditRole;return a.createElement(i,{key:"objectBrowserEditRole",id:this.state.roleDialog,socket:this.props.socket,t:this.props.t,roleArray:this.info.roles,commonType:(t=(e=this.info.objects[this.state.roleDialog])==null?void 0:e.common)==null?void 0:t.type,onClose:r=>{r&&(this.info.objects[this.state.roleDialog]=r),this.setState({roleDialog:null})}})}return null}onColumnsEditCustomDialogClose(e){var i,r;const t=this.customColumnDialog;if(e){let o=t.value;t.type==="boolean"?o=o==="true"||o===!0:t.type==="number"&&(o=parseFloat(o)),this.customColumnDialog=null,this.props.socket.getObject(((r=(i=this.state.columnsEditCustomDialog)==null?void 0:i.obj)==null?void 0:r._id)||"").then(n=>{var M;if(n&&B5e(n,(M=this.state.columnsEditCustomDialog)==null?void 0:M.it,o))return this.props.socket.setObject(n._id,n);throw new Error(this.props.t("ra_Cannot update attribute, because not found in the object"))}).then(()=>this.setState({columnsEditCustomDialog:null})).catch(n=>this.showError(n))}else this.customColumnDialog=null,this.setState({columnsEditCustomDialog:null})}renderColumnsEditCustomDialog(){if(!this.state.columnsEditCustomDialog)return null;if(!this.customColumnDialog){const e=V0(this.state.columnsEditCustomDialog.obj,this.state.columnsEditCustomDialog.it);this.customColumnDialog={type:this.state.columnsEditCustomDialog.it.type||typeof e,initValue:(e??"").toString(),value:(e??"").toString()}}return a.createElement(Ae,{onClose:()=>this.setState({columnsEditCustomDialog:null}),maxWidth:"md","aria-labelledby":"custom-dialog-title",open:!0},a.createElement(fe,{id:"custom-dialog-title"},`${this.props.t("ra_Edit object field")}: ${this.state.columnsEditCustomDialog.obj._id}`),a.createElement(_e,null,a.createElement(as,{id:"alert-dialog-description"},this.customColumnDialog.type==="boolean"?a.createElement(V,{control:a.createElement(ue,{onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),defaultChecked:this.customColumnDialog.value==="true",onChange:e=>{const t=this.customColumnDialog;t.value=e.target.checked.toString();const i=t.value!==t.initValue;i===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:i})}}),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}):a.createElement(Te,{variant:"standard",defaultValue:this.customColumnDialog.value,fullWidth:!0,onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`,onChange:e=>{const t=this.customColumnDialog;t.value=e.target.value;const i=t.value!==t.initValue;i===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:i})},autoFocus:!0}))),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(!0),disabled:!this.state.customColumnDialogValueChanged,color:"primary",startIcon:a.createElement(We,null)},this.props.t("ra_Update")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(),startIcon:a.createElement(we,null)},this.props.t("ra_Cancel"))))}renderCustomValue(e,t,i){const r=V0(e,t);return r!=null?t.edit&&!this.props.notEditable&&(!t.objTypes||t.objTypes.includes(e.type))?a.createElement(J,{component:"div",style:{...z.columnCustom,...z.columnCustomEditable,...z[`columnCustom_${t.align}`]},onClick:()=>this.setState({columnsEditCustomDialog:{item:i,it:t,obj:e},customColumnDialogValueChanged:!1})},r):a.createElement(J,{component:"div",style:{...z.columnCustom,...z[`columnCustom_${t.align}`]}},r):null}renderAliasLink(e,t,i){const r=t||0,o=this.objects[this.info.aliasesMap[e][r]].common.alias.id;return o?a.createElement(J,{component:"div",onClick:n=>{n.stopPropagation(),n.preventDefault();const M=this.info.aliasesMap[e][r];this.info.aliasesMap[e].length>1&&this.setState({aliasMenu:""}),this.onSelect(M),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(M)),100)},sx:i||this.styles.aliasAlone},a.createElement("span",{className:"admin-browser-arrow"},typeof o=="string"||o.read===e&&o.write===e?"↔":o.read===e?"→":"←"),this.info.aliasesMap[e][r]):null}renderLeaf(e,t,i){var bi,Ui,$i,Yr,Qr,dc,hc,zc,wc,Ic,Cc,pc,Ac,mc;const r=e.data.id;i.count++,t=t===void 0?this.state.expanded.includes(r):t;let o;const n=e.data.obj,M=n==null?void 0:n.type;e.children||M==="folder"||M==="device"||M==="channel"||M==="meta"?o=t?a.createElement(lo,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):a.createElement(Ti,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(r)}):n&&n.common&&n.common.write===!1&&n.type==="state"?o=a.createElement(f5e,{style:this.styles.cellIdIconDocument}):o=a.createElement(m5e,{style:this.styles.cellIdIconDocument});let c=null;e.data.icon&&(typeof e.data.icon=="string"?e.data.icon.length<3?c=a.createElement("span",{className:"iconOwn",style:z.cellIdIconOwn},e.data.icon):c=a.createElement(be,{style:z.cellIdIconOwn,className:"iconOwn",src:e.data.icon,alt:""}):c=e.data.icon);const l=n==null?void 0:n.common,N=(n==null?void 0:n.type)&&X0[n.type]||a.createElement("div",{className:"itemIcon"}),u=this.levelPadding*(e.data.level||0);if(e.data.lang!==this.props.lang){const{rooms:v,per:ie}=lg(this.info,r,this.props.lang);e.data.rooms=v.join(", "),e.data.per=ie;const{funcs:Je,pef:Oe}=Ng(this.info,r,this.props.lang);e.data.funcs=Je.join(", "),e.data.pef=Oe,e.data.lang=this.props.lang}const L=this.props.multiSelect&&this.objects[r]&&(!this.props.types||this.props.types.includes(this.objects[r].type))?a.createElement(ue,{style:z.checkBox,checked:this.state.selected.includes(r)}):null;let g=!this.props.notEditable&&M==="state"&&(this.state.filter.expertMode||(l==null?void 0:l.write)!==!1);this.props.objectBrowserViewFile&&(l==null?void 0:l.type)==="file"&&(g=!0);const j=!this.props.notEditable&&this.objects[r]&&(this.state.filter.expertMode||M==="state"||M==="channel"||M==="device"),y=this.state.statesView&&(M==="state"||M==="channel"||M==="device");let T="";const d=[];if(y&&(T=(bi=this.states[r])==null?void 0:bi.from,T===void 0?T=" ":(T=T?T.replace(/^system\.adapter\.|^system\./,""):"",d.push(`${this.texts.stateChangedFrom} ${T}`)),n!=null&&n.user)){const v=n.user.replace("system.user.","");T+=`/${v}`,d.push(`${this.texts.stateChangedBy} ${v}`)}n&&(n.from&&d.push(`${this.texts.objectChangedFrom} ${n.from.replace(/^system\.adapter\.|^system\./,"")}`),n.user&&d.push(`${this.texts.objectChangedBy} ${n.user.replace(/^system\.user\./,"")}`),n.ts&&d.push(`${this.texts.objectChangedByUser} ${m.formatDate(new Date(n.ts),this.props.dateFormat||this.systemConfig.common.dateFormat)}`));let I=!1,w=null;r.startsWith("alias.")&&((Ui=l==null?void 0:l.alias)!=null&&Ui.id)?(I=typeof l.alias.id=="object",I?w=a.createElement("div",{style:z.cellIdAliasReadWriteDiv},l.alias.id.read?a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id.read),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.read)),100)},sx:this.styles.aliasReadWrite},"←",l.alias.id.read):null,l.alias.id.write?a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id.write),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id.write)),100)},sx:this.styles.aliasReadWrite},"→",l.alias.id.write):null):w=a.createElement(J,{component:"div",onClick:v=>{v.stopPropagation(),v.preventDefault(),this.onSelect(l.alias.id),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(l.alias.id)),100)},sx:this.styles.aliasAlone},"→",l.alias.id)):this.info.aliasesMap[r]&&(this.info.aliasesMap[r].length>1?w=a.createElement(J,{component:"div",id:`alias_${r}`,onClick:v=>{v.stopPropagation(),v.preventDefault(),this.setState({aliasMenu:r})},sx:this.styles.aliasAlone},this.props.t("ra_%s links from aliases",this.info.aliasesMap[r].length)):w=this.renderAliasLink(r,0));let A=l==null?void 0:l.color,p;if(A&&!this.state.selected.includes(r)){const v=this.props.themeName==="dark"?"#1f1f1f":this.props.themeName==="blue"?"#222a2e":"#FFFFFF";m.colorDistance(A,v)<1e3&&(p=this.props.themeType==="dark"?"#9a9a9a":"#565656")}let h=!1;r==="0_userdata"?(A=rg(this.props.themeType),h=!0):r==="alias"?(A=og(this.props.themeType),h=!0):r==="javascript"?(A=k5e(this.props.themeType),h=!0):r==="system"?(A=ng(this.props.themeType),h=!0):r==="system.adapter"?A=ag(this.props.themeType):(!A||this.state.selected.includes(r))&&(A="inherit");const C=[];if(l!=null&&l.statusStates){const v={};Object.keys(l.statusStates).forEach(Je=>{var Tt;let Oe=l.statusStates[Je];Oe.split(".").length<3&&(Oe=`${r}.${Oe}`),v[Je]=Oe,this.states[Oe]?this.recordStates.includes(Oe)||this.recordStates.push(Oe):((Tt=this.objects[Oe])==null?void 0:Tt.type)==="state"&&(this.recordStates.includes(Oe)||this.recordStates.push(Oe),this.states[Oe]={val:null},this.subscribe(Oe))});let ie=!1;l.statusStates.errorId&&this.states[v.errorId]&&this.states[v.errorId].val&&(A=this.props.themeType==="dark"?Lg:gg,ie=!0,C.push(a.createElement(Xj,{key:"error",style:this.styles.iconDeviceError}))),v.onlineId&&this.states[v.onlineId]?ie?this.states[v.onlineId].val?C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected})):C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected})):this.states[v.onlineId].val?(A=this.props.themeType==="dark"?Sa:ka,C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected}))):(A=this.props.themeType==="dark"?va:Ya,C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected}))):v.offlineId&&this.states[v.offlineId]&&(ie?this.states[v.offlineId].val?C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected})):C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected})):this.states[v.offlineId].val?(A=this.props.themeType==="dark"?va:Ya,C.push(a.createElement($r,{key:"disc",style:this.styles.iconDeviceDisconnected}))):(A=this.props.themeType==="dark"?Sa:ka,C.push(a.createElement(li,{key:"conn",style:this.styles.iconDeviceConnected}))))}const E=y?m.quality2text((($i=this.states[r])==null?void 0:$i.q)||0).join(", "):null;let O=((Yr=e.data)==null?void 0:Yr.title)||"",b=!1;if(this.state.showDescription){const v=cg(e.data,this.props.lang);v&&(O=[a.createElement("div",{key:"name",style:z.cellNameDivDiv},O),a.createElement("div",{key:"desc",style:z.cellDescription},v)],b=!!v)}const k=this.props.width==="xs"&&this.state.focused===r,K=a.createElement(ts,{container:!0,wrap:"nowrap",direction:"row",sx:z.cellId,style:{width:this.columnsVisibility.id,paddingLeft:u}},a.createElement(ts,{container:!0,alignItems:"center"},L,o),a.createElement(ts,{style:{...z.cellIdSpan,...p?this.styles.invertedBackground:void 0,color:A,fontWeight:h?"bold":void 0}},a.createElement(Le,{title:P5e(e.data,this.props.lang),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,e.data.name)),w,C),a.createElement("div",{style:{...z.grow,...p?this.styles.invertedBackgroundFlex:{}}}),a.createElement(ts,{container:!0,alignItems:"center"},c),this.props.width!=="xs"?a.createElement("div",null,a.createElement(Bs,{className:k?"":"copyButton",style:z.cellCopyButton,onClick:v=>this.onCopy(v,r)})):null);let x=k&&O||this.columnsVisibility.name?a.createElement(J,{component:"div",sx:{...z.cellName,...b?z.cellNameWithDesc:void 0,width:this.props.width!=="xs"?this.columnsVisibility.name:void 0,ml:k?0:"5px"}},O,!k&&((Qr=e.data)!=null&&Qr.title)?a.createElement(J,{style:{color:A}},a.createElement(Bs,{className:"copyButton",style:z.cellCopyButton,onClick:v=>{var ie;return this.onCopy(v,(ie=e.data)==null?void 0:ie.title)}})):null):null,S;this.state.statesView?S=[k&&y&&((dc=this.states[r])!=null&&dc.from)||this.columnsVisibility.changedFrom?{el:a.createElement("div",{key:"from",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.changedFrom:void 0},title:d.join(` +`)},y&&((hc=this.states[r])!=null&&hc.from)?T:null),type:"from"}:null,k&&E||this.columnsVisibility.qualityCode?{el:a.createElement("div",{key:"q",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.qualityCode:void 0},title:E||""},E),type:"quality"}:null,k&&y&&((zc=this.states[r])!=null&&zc.ts)||this.columnsVisibility.timestamp?{el:a.createElement("div",{key:"ts",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.timestamp:void 0}},y&&((wc=this.states[r])!=null&&wc.ts)?m.formatDate(new Date(this.states[r].ts),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"ts"}:null,k&&y&&((Ic=this.states[r])!=null&&Ic.lc)||this.columnsVisibility.lastChange?{el:a.createElement("div",{key:"lc",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.lastChange:void 0}},y&&((Cc=this.states[r])!=null&&Cc.lc)?m.formatDate(new Date(this.states[r].lc),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"lc"}:null]:S=[k&&(n!=null&&n.type)||this.columnsVisibility.type?{el:a.createElement("div",{key:"type",style:{...z.cellType,width:this.props.width!=="xs"?this.columnsVisibility.type:void 0}},N," ",n==null?void 0:n.type),type:"filter_type"}:null,k&&l||this.columnsVisibility.role?{el:a.createElement("div",{key:"role",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.role:"100%",cursor:this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?"text":"default"},onClick:!k&&this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0},l==null?void 0:l.role),type:"filter_role",onClick:k&&this.state.filter.expertMode&&j&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0}:null,k&&l||this.columnsVisibility.room?{el:a.createElement("div",{key:"room",style:{...z.cellRoom,...e.data.per?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.room:"100%",cursor:j?"text":"default"},onClick:!k&&j?()=>{const v=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(v)}})}:void 0},e.data.rooms),type:"filter_room",onClick:k&&j?()=>{const v=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(v)}})}:void 0}:null,k&&l||this.columnsVisibility.func?{el:a.createElement("div",{key:"func",style:{...z.cellFunc,...e.data.pef?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.func:"100%",cursor:j?"text":"default"},onClick:!k&&j?()=>{const v=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(v)}})}:void 0},e.data.funcs),type:"filter_func",onClick:k&&j?()=>{const v=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:v,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(v)}})}:void 0}:null];let R=((pc=this.adapterColumns)==null?void 0:pc.map(v=>a.createElement("div",{style:{...z.cellAdapter,width:this.props.width!=="xs"?this.columnsVisibility[v.id]:void 0},key:v.id,title:`${v.adapter} => ${v.pathText}`},n?this.renderCustomValue(n,v,e):null)))||null;const he=k||this.columnsVisibility.val?this.renderColumnValue(r,e,k):null;let Xe=k&&he||this.columnsVisibility.val?a.createElement("div",{style:{...z.cellValue,width:this.props.width!=="xs"?this.columnsVisibility.val:"calc(100% - 100px)",cursor:g?(l==null?void 0:l.type)==="file"?"zoom-in":e.data.button?"grab":"text":"default"},onClick:v=>{var ie,Je,Oe;if(g){if(!(!n||!this.states))if((l==null?void 0:l.type)==="file")this.setState({viewFileDialog:r});else if(e.data.url&&v.ctrlKey){if((ie=this.states[r])!=null&&ie.val&&typeof this.states[r].val=="string")if((l==null?void 0:l.role)==="url.self")window.location.href=this.states[r].val;else{const Tt=window.open(this.states[r].val,"_blank");Tt==null||Tt.focus()}}else!this.state.filter.expertMode&&e.data.button?this.props.socket.setState(r,!0).catch(Tt=>window.alert(`Cannot write state "${r}": ${Tt}`)):!this.state.filter.expertMode&&e.data.switch?this.props.socket.setState(r,!this.states[r].val).catch(Tt=>window.alert(`Cannot write state "${r}": ${Tt}`)):(this.edit={val:this.states[r]?this.states[r].val:"",q:this.states[r]&&this.states[r].q||0,ack:!1,id:r},this.setState({updateOpened:!0}))}else(l==null?void 0:l.role)==="url"||(l==null?void 0:l.role)==="url.blank"&&v.ctrlKey?(Je=this.states[r])!=null&&Je.val&&typeof this.states[r].val=="string"&&window.open(this.states[r].val,"_blank"):(l==null?void 0:l.role)==="url.self"&&v.ctrlKey&&(Oe=this.states[r])!=null&&Oe.val&&typeof this.states[r].val=="string"&&(window.location.href=this.states[r].val)}},he):null,ct=k||this.columnsVisibility.buttons?a.createElement("div",{style:{...z.cellButtons,width:this.props.width!=="xs"?this.columnsVisibility.buttons:void 0}},this.renderColumnButtons(r,e)):null,bs=null;if(this.props.width==="xs"&&this.state.focused===r){S=S.filter(ie=>ie);let v;S.length?v=S.map(ie=>ie?a.createElement("div",{key:ie.type,style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts[ie.type],":"),ie.el,a.createElement("div",{style:{flexGrow:1}}),ie.onClick?a.createElement(or,{style:z.cellCopyButtonInDetails,onClick:()=>{ie!=null&&ie.onClick&&ie.onClick()}}):null):null):v=null,R.length||(R=null),bs=a.createElement(AN,{style:{width:"100%",display:"flex",flexDirection:"column",padding:10,backgroundColor:this.props.theme.palette.mode==="dark"?"#333":"#ccc"}},a.createElement("div",{style:z.cellDetailsLine},a.createElement("div",{style:{flexGrow:1}}),a.createElement(Bs,{style:z.cellCopyButtonInDetails,onClick:ie=>this.onCopy(ie,r)})),x&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.name,":"),x,a.createElement("div",{style:{flexGrow:1}}),(Ac=e.data)!=null&&Ac.title?a.createElement(Bs,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:ie=>{var Je;return this.onCopy(ie,(Je=e.data)==null?void 0:Je.title)}}):null),v,R&&a.createElement("div",{style:z.cellDetailsLine},R),((mc=this.objects[r])==null?void 0:mc.type)==="state"&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.value,":"),Xe,a.createElement("div",{style:{flexGrow:1}}),a.createElement(Bs,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:ie=>{const{valText:Je}=Pn({state:this.states[r],obj:this.objects[r],texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma});this.onCopy(ie,Je.c!==void 0?Je.c:Je.v.toString())},key:"cc"})),ct&&a.createElement("div",{style:{...z.cellDetailsLine,justifyContent:"right"}},ct)),x=null,S=null,R=null,Xe=null,ct=null}return{row:a.createElement(ts,{container:!0,direction:"row",wrap:"nowrap",sx:m.getStyle(this.props.theme,z.tableRow,this.state.linesEnabled&&z.tableRowLines,!this.props.dragEnabled&&z.tableRowNoDragging,w&&z.tableRowAlias,I&&z.tableRowAliasReadWrite,this.state.focused===r&&this.props.multiSelect&&z.tableRowFocused,!e.data.visible&&z.filteredOut,e.data.hasVisibleParent&&!e.data.visible&&!e.data.hasVisibleChildren&&z.filteredParentOut,this.state.selected.includes(r)&&z.itemSelected,this.state.selectedNonObject===r&&z.itemSelected),key:r,id:r,onMouseDown:v=>{this.onSelect(r);let ie;"which"in v?ie=v.which===3:"button"in v&&(ie=v.button===2),ie?this.contextMenu={item:e,ts:Date.now()}:this.contextMenu=null},onDoubleClick:()=>{e.children?this.toggleExpanded(r):this.onSelect(r,!0)}},K,x,S==null?void 0:S.map(v=>v==null?void 0:v.el),R,Xe,ct),details:bs}}renderItem(e,t,i){const r=[];i=i||{count:0};const o=this.renderLeaf(e,t,i);let n;const M=this.props.DragWrapper;return this.props.dragEnabled&&M?e.data.sumVisibility?n=a.createElement(M,{key:e.data.id,item:e,style:z.draggable},o.row):n=a.createElement("div",{key:e.data.id,style:z.nonDraggable},o.row):n=o.row,e.data.id&&n&&r.push(n),o.details&&r.push(o.details),t=t===void 0?jr(this.state.expanded,e.data.id):t,(!e.data.id||t)&&(this.state.foldersFirst?e.children&&(r.push(e.children.map(c=>c.children&&(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null)),r.push(e.children.map(c=>!c.children&&(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null))):e.children&&r.push(e.children.map(c=>(!this.state.columnsSelectorShow||i.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,i):null))),r}calculateColumnsVisibility(e,t,i,r){let o=r||this.state.columnsWidths;const n=i||this.state.columnsForAdmin,M=t||this.state.columns||[],c=typeof e!="boolean"?this.state.columnsAuto:e;o=JSON.parse(JSON.stringify(o)),Object.keys(o).forEach(N=>{o[N]&&(o[N]=parseInt(o[N],10)||0)}),this.adapterColumns=[];const l=ze[this.props.width||"lg"].widths;if(c){if(this.columnsVisibility={id:ze[this.props.width||"lg"].idWidth,name:this.visibleCols.includes("name")&&l.name||0,nameHeader:this.visibleCols.includes("name")&&l.name||0,type:this.visibleCols.includes("type")&&l.type||0,role:this.visibleCols.includes("role")&&l.role||0,room:this.visibleCols.includes("room")&&l.room||0,func:this.visibleCols.includes("func")&&l.func||0,changedFrom:this.visibleCols.includes("changedFrom")&&l.changedFrom||0,qualityCode:this.visibleCols.includes("qualityCode")&&l.qualityCode||0,timestamp:this.visibleCols.includes("timestamp")&&l.timestamp||0,lastChange:this.visibleCols.includes("lastChange")&&l.lastChange||0,val:this.visibleCols.includes("val")&&l.val||0,buttons:this.visibleCols.includes("buttons")&&l.buttons||0},this.columnsVisibility.name&&!this.customWidth){let N=this.columnsVisibility.id||0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.name=`calc(100% - ${N+5}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${N+5+this.state.scrollBarWidth}px)`}else if(!this.customWidth){let N=0;this.state.statesView?(N+=this.columnsVisibility.changedFrom||0,N+=this.columnsVisibility.qualityCode||0,N+=this.columnsVisibility.timestamp||0,N+=this.columnsVisibility.lastChange||0):(N+=this.columnsVisibility.type||0,N+=this.columnsVisibility.role||0,N+=this.columnsVisibility.room||0,N+=this.columnsVisibility.func||0),N+=this.columnsVisibility.val||0,N+=this.columnsVisibility.buttons||0,this.columnsVisibility.id=`calc(100% - ${N+5}px)`}}else{const N=this.props.width||"lg";this.columnsVisibility={id:o.id||ze[N].idWidth,name:M.includes("name")&&(o.name||l.name||ze[N].widths.name)||0,type:M.includes("type")&&(o.type||l.type||ze[N].widths.type)||0,role:M.includes("role")&&(o.role||l.role||ze[N].widths.role)||0,room:M.includes("room")&&(o.room||l.room||ze[N].widths.room)||0,func:M.includes("func")&&(o.func||l.func||ze[N].widths.func)||0};let u=this.columnsVisibility.id;if(this.columnsVisibility.name&&(u+=this.columnsVisibility.type||0,u+=this.columnsVisibility.role||0,u+=this.columnsVisibility.room||0,u+=this.columnsVisibility.func||0),n&&M&&Object.keys(n).sort().forEach(L=>n[L].forEach(g=>{const j=`_${L}_${g.path}`;if(M.includes(j)){const y={adapter:L,id:`_${L}_${g.path}`,name:g.name,path:g.path.split("."),pathText:g.path};g.edit&&(y.edit=!0,g.type&&(y.type=g.type),g.objTypes&&(y.objTypes=g.objTypes)),this.adapterColumns.push(y),this.columnsVisibility[j]=o[y.id]||g.width||ze[N].widths.func||ze.xl.widths.func||0,u+=this.columnsVisibility[j]}else this.columnsVisibility[j]=0})),this.adapterColumns.sort((L,g)=>L.id>g.id?-1:L.idj==="id"||typeof this.columnsVisibility[j]=="string"||!this.columnsVisibility[j]?g:g+this.columnsVisibility[j],0);this.columnsVisibility.id=`calc(100% - ${L}px)`}}}resizerMouseMove=e=>{if(this.resizerActiveDiv){let t,i;this.resizeLeft?(t=this.resizerOldWidth-e.clientX+this.resizerPosition,i=this.resizerOldWidthNext+e.clientX-this.resizerPosition):(t=this.resizerOldWidth+e.clientX-this.resizerPosition,i=this.resizerOldWidthNext-e.clientX+this.resizerPosition),this.resizerActiveName&&this.resizerNextName&&(!this.resizerMin||t>this.resizerMin)&&(!this.resizerNextMin||i>this.resizerNextMin)&&(this.resizerCurrentWidths[this.resizerActiveName]=t,this.resizerCurrentWidths[this.resizerNextName]=i,this.resizerActiveDiv.style.width=`${t}px`,this.resizerNextDiv&&(this.resizerNextDiv.style.width=`${i}px`),this.columnsVisibility[this.resizerActiveName]=t,this.columnsVisibility[this.resizerNextName]=i,this.resizerNextName==="nameHeader"?(this.columnsVisibility.name=i-this.state.scrollBarWidth,this.resizerCurrentWidths.name=i-this.state.scrollBarWidth):this.resizerActiveName==="nameHeader"&&(this.columnsVisibility.name=t-this.state.scrollBarWidth,this.resizerCurrentWidths.name=t-this.state.scrollBarWidth),this.customWidth=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=null,this.forceUpdate()},200))}};resizerMouseUp=()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveName=null,this.resizerNextName=null,this.resizerActiveDiv=null,this.resizerNextDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{if(this.storedWidths||=JSON.parse(JSON.stringify(ze[this.props.width||"lg"])),this.resizerCurrentWidths||={},this.resizerActiveDiv=e.target.parentNode,this.resizerActiveName=this.resizerActiveDiv.dataset.name||null,this.resizerActiveName){let t=0;if(e.target.dataset.left==="true"){this.resizeLeft=!0,this.resizerNextDiv=this.resizerActiveDiv.previousElementSibling;let i=this.resizerNextDiv.querySelector(".iob-ob-resize-handler");for(;this.resizerNextDiv&&!i&&t<10;)this.resizerNextDiv=this.resizerNextDiv.previousElementSibling,i=this.resizerNextDiv.querySelector(".iob-ob-resize-handler"),t++;(i==null?void 0:i.dataset.left)!=="true"&&(this.resizerNextDiv=this.resizerNextDiv.nextElementSibling)}else this.resizeLeft=!1,this.resizerNextDiv=this.resizerActiveDiv.nextElementSibling;this.resizerNextName=this.resizerNextDiv.dataset.name||null,this.resizerMin=parseInt(this.resizerActiveDiv.dataset.min,10)||0,this.resizerNextMin=parseInt(this.resizerNextDiv.dataset.min,10)||0,this.resizerPosition=e.clientX,this.resizerCurrentWidths[this.resizerActiveName]=this.resizerActiveDiv.offsetWidth,this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveName],this.resizerNextName&&(this.resizerCurrentWidths[this.resizerNextName]=this.resizerNextDiv.offsetWidth,this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerNextName]),window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};navigateKeyPress(e){var i,r;const t=this.state.selectedNonObject||this.state.selected[0];if(t){if(e.code==="ArrowUp"||e.code==="ArrowDown"){e.preventDefault();const o=[];(i=this.tableRef.current)==null||i.childNodes.forEach(l=>o.push(l.id));const n=o.indexOf(t),M=e.code==="ArrowDown"?n+1:n-1,c=o[M]||t;this.onSelect(c),this.scrollToItem(c)}if((e.code==="ArrowRight"||e.code==="ArrowLeft")&&this.toggleExpanded(t),e.code==="Delete"&&this.root&&t){const o=xo.getItemFromRoot(this.root,t);if(o){const{obj:n}=o.data;n&&!((r=n.common)!=null&&r.dontDelete)&&this.showDeleteDialog({id:t,obj:n,item:o})}}}}static getItemFromRoot(e,t){const i=t.split(".");let r="",o=e;for(let n=0;n{this.customWidth=!1,ze[this.props.width||"lg"]=JSON.parse(JSON.stringify(this.storedWidths)),this.calculateColumnsVisibility(),this.localStorage.removeItem(`${this.props.dialogName||"App"}.table`),this.forceUpdate()};renderHandleRight(){return a.createElement(J,{component:"div",className:"iob-ob-resize-handler",sx:{...z.resizeHandle,...z.resizeHandleRight},onMouseDown:this.resizerMouseDown,onDoubleClick:this.resizerReset,title:this.props.t("ra_Double click to reset table layout")})}renderHeader(){let e=null;return!this.columnsVisibility.buttons&&!this.isFilterEmpty()&&(e=a.createElement(W,{onClick:()=>this.clearFilter(),style:z.buttonClearFilter,title:this.props.t("ra_Clear filter"),size:"large"},a.createElement(E5e,null),a.createElement(we,{style:z.buttonClearFilterIcon}))),this.props.width==="xs"?a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:"100%"}},this.getFilterInput("id"))):a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.id,position:"relative"},"data-min":240,"data-name":"id"},this.getFilterInput("id"),this.renderHandleRight()),this.columnsVisibility.name?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.nameHeader,position:"relative"},"data-min":100,"data-name":"nameHeader"},this.getFilterInput("name"),this.renderHandleRight()):null,!this.state.statesView&&a.createElement(a.Fragment,null,this.columnsVisibility.type?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.type,position:"relative"},"data-min":100,"data-name":"type"},this.getFilterSelectType(),this.renderHandleRight()):null,this.columnsVisibility.role?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.role,position:"relative"},"data-min":100,"data-name":"role"},this.getFilterSelectRole(),this.renderHandleRight()):null,this.columnsVisibility.room?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.room,position:"relative"},"data-min":100,"data-name":"room"},this.getFilterSelectRoom(),this.renderHandleRight()):null,this.columnsVisibility.func?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.func,position:"relative"},"data-min":100,"data-name":"func"},this.getFilterSelectFunction(),this.renderHandleRight()):null),this.state.statesView&&a.createElement(a.Fragment,null,a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.changedFrom,position:"relative"},"data-min":100,"data-name":"changedFrom"},this.props.t("ra_Changed from"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.qualityCode,position:"relative"},"data-min":100,"data-name":"qualityCode"},this.props.t("ra_Quality code"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.timestamp,position:"relative"},"data-min":100,"data-name":"timestamp"},this.props.t("ra_Timestamp"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.lastChange,position:"relative"},"data-min":100,"data-name":"lastChange"},this.props.t("ra_Last change"),this.renderHandleRight())),this.adapterColumns.map(t=>a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility[t.id]},title:t.adapter,key:t.id,"data-min":100,"data-name":t.id},t.name)),this.columnsVisibility.val?a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.val,position:"relative"},"data-min":120,"data-name":"val"},this.props.t("ra_Value"),e):null,this.columnsVisibility.buttons?a.createElement("div",{title:this.texts.filter_custom,style:{...z.headerCell,width:this.columnsVisibility.buttons}}," ",this.getFilterSelectCustoms()):null)}renderToast(){return a.createElement(Zn,{open:!!this.state.toast,autoHideDuration:3e3,onClick:()=>this.setState({toast:""}),onClose:()=>this.setState({toast:""}),message:this.state.toast,action:a.createElement(W,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({toast:""})},a.createElement(we,{fontSize:"small"}))})}componentDidUpdate(){if(this.tableRef.current){const e=this.tableRef.current.offsetWidth-this.tableRef.current.clientWidth;this.state.scrollBarWidth!==e?setTimeout(()=>this.setState({scrollBarWidth:e}),100):this.selectFirst&&this.scrollToItem(this.selectFirst)}}scrollToItem(e){this.selectFirst="";const t=window.document.getElementById(e);t==null||t.scrollIntoView({behavior:"auto",block:"center",inline:"center"})}renderCustomDialog(){if(this.state.customDialog&&this.props.objectCustomDialog){const e=this.props.objectCustomDialog;return a.createElement(e,{reportChangedIds:t=>this.changedIds=[...t],objectIDs:this.state.customDialog,allVisibleObjects:!!this.state.customDialogAll,expertMode:this.state.filter.expertMode,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,t:this.props.t,lang:this.props.lang,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,objects:this.objects,customsInstances:this.info.customs,onClose:()=>{var t;this.pauseSubscribe(!1),this.setState({customDialog:null}),this.changedIds&&(this.changedIds=null,this.forceUpdate()),(t=this.props.router)==null||t.doNavigate("tab-objects")},systemConfig:this.systemConfig})}return null}onUpdate(e){this.props.socket.setState(this.edit.id,{val:e.val,ack:e.ack,q:e.q||0,expire:e.expire||void 0}).catch(t=>this.showError(`Cannot write value: ${t}`))}renderEditObjectDialog(){if(!this.state.editObjectDialog||!this.props.objectBrowserEditObject)return null;const e=this.props.objectBrowserEditObject;return a.createElement(e,{key:this.state.editObjectDialog,obj:this.objects[this.state.editObjectDialog],roleArray:this.info.roles,objects:this.objects,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,dialogName:this.props.dialogName,aliasTab:this.state.editObjectAlias,t:this.props.t,expertMode:!!this.state.filter.expertMode,onNewObject:t=>this.props.socket.setObject(t._id,t).then(()=>this.setState({editObjectDialog:t._id,editObjectAlias:!1},()=>this.onSelect(t._id))).catch(i=>this.showError(`Cannot write object: ${i}`)),onClose:t=>{var i,r;if(t){let o;this.state.editObjectDialog.startsWith("alias.")&&JSON.stringify((i=this.objects[this.state.editObjectDialog].common)==null?void 0:i.alias)!==JSON.stringify((r=t.common)==null?void 0:r.alias)&&(o=this.state.editObjectDialog),this.props.socket.setObject(t._id,t).then(()=>{o&&this.subscribes.includes(o)&&(this.unsubscribe(o),setTimeout(()=>this.subscribe(o),100))}).catch(n=>this.showError(`Cannot write object: ${n}`))}this.setState({editObjectDialog:"",editObjectAlias:!1})},width:this.props.width})}renderViewObjectFileDialog(){if(!this.state.viewFileDialog||!this.props.objectBrowserViewFile)return null;const e=this.props.objectBrowserViewFile;return a.createElement(e,{key:"viewFile",obj:this.objects[this.state.viewFileDialog],socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({viewFileDialog:""})})}renderAliasEditorDialog(){if(!this.props.objectBrowserAliasEditor||!this.state.showAliasEditor)return null;const e=this.props.objectBrowserAliasEditor;return a.createElement(e,{key:"editAlias",obj:this.objects[this.state.showAliasEditor],roleArray:this.info.roles,objects:this.objects,socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({showAliasEditor:""}),onRedirect:(t,i)=>setTimeout(()=>this.onSelect(t,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(t),setTimeout(()=>this.setState({editObjectDialog:t,showAliasEditor:"",editObjectAlias:!0}),300)})),i||0)})}showAddDataPointDialog(e,t,i){this.setState({showContextMenu:null,modalNewObj:{id:e,initialType:t,initialStateType:i}})}renderAliasMenu(){return this.state.aliasMenu?a.createElement(ws,{key:"aliasmenu",open:!0,anchorEl:window.document.getElementById(`alias_${this.state.aliasMenu}`),onClose:()=>this.setState({aliasMenu:""})},this.info.aliasesMap[this.state.aliasMenu].map((e,t)=>a.createElement(re,{key:e,onClick:()=>this.onSelect(e)},a.createElement(dt,null,this.renderAliasLink(this.state.aliasMenu,t,{"& .admin-browser-arrow":{mr:"8px"}}))))):null}renderContextMenu(){var L,g,j,y,T,d,I;if(!this.state.showContextMenu)return null;const e=this.state.showContextMenu.item,t=e.data.id,i=[],r=e.data.obj;let o="";if(this.props.objectEditOfAccessControl&&this.state.filter.expertMode)if(!r)o="---";else{const w=r.acl?r.type==="state"?r.acl.state:r.acl.object:0,A=r.acl&&(r.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object);o=Number.isNaN(Number(w))?Number(A).toString(16):Number(w).toString(16)}const n=!this.props.notEditable&&r&&(this.state.filter.expertMode||r.type==="state"||r.type==="channel"||r.type==="device"),M=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="channel"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",c=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",l=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",N=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",u={EDIT:{key:"0",visibility:!!(this.props.objectBrowserEditObject&&r&&(this.state.filter.expertMode||Z0(t))),icon:a.createElement(or,{fontSize:"small",style:this.styles.contextMenuEdit}),label:this.texts.editObject,onClick:()=>this.setState({editObjectDialog:e.data.id,showContextMenu:null,editObjectAlias:!1})},EDIT_VALUE:{key:"1",visibility:!!(this.states&&!this.props.notEditable&&r&&r.type==="state"&&((L=r.common)==null?void 0:L.type)!=="file"&&(this.state.filter.expertMode||r.common.write!==!1)),icon:a.createElement(iy,{fontSize:"small",style:this.styles.contextMenuEditValue}),label:this.props.t("ra_Edit value"),onClick:()=>{var w;this.edit={val:this.states[t]?this.states[t].val:"",q:((w=this.states[t])==null?void 0:w.q)||0,ack:!1,id:t},this.setState({updateOpened:!0,showContextMenu:null})}},VIEW:{visibility:!!this.props.objectBrowserViewFile&&(r==null?void 0:r.type)==="state"&&((g=r.common)==null?void 0:g.type)==="file",icon:a.createElement(qj,{fontSize:"small",style:this.styles.contextMenuView}),label:this.props.t("ra_View file"),onClick:()=>this.setState({viewFileDialog:(r==null?void 0:r._id)||"",showContextMenu:null})},CUSTOM:{key:"2",visibility:!(this.props.objectCustomDialog&&this.info.hasSomeCustoms&&r&&r.type==="state"&&((j=r.common)==null?void 0:j.type)!=="file"),icon:a.createElement(qn,{fontSize:"small",style:e.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),style:this.styles.contextMenuCustom,label:this.texts.customConfig,onClick:()=>{var w;this.pauseSubscribe(!0),(w=this.props.router)==null||w.doNavigate(null,"customs",t),this.setState({customDialog:[t],showContextMenu:null})}},ACL:{key:"3",visibility:!!o,icon:o,iconStyle:{fontSize:"smaller"},listItemIconStyle:this.styles.contextMenuACL,style:this.styles.contextMenuACL,label:this.props.t("ra_Edit ACL"),onClick:()=>this.setState({showContextMenu:null,modalEditOfAccess:!0,modalEditOfAccessObjData:e.data})},ROLE:{key:"4",visibility:!!(this.state.filter.expertMode&&n&&this.props.objectBrowserEditRole),icon:a.createElement(Uj,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit role"),onClick:()=>this.setState({roleDialog:e.data.id,showContextMenu:null})},FUNCTION:{key:"5",visibility:!!n,icon:a.createElement(Yj,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit function"),onClick:()=>{const w=Rs(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ROOM:{key:"6",visibility:!!n,icon:a.createElement(Fj,{fontSize:"small",style:this.styles.contextMenuRoom}),label:this.props.t("ra_Edit room"),onClick:()=>{const w=Rs(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ALIAS:{key:"7",visibility:!!(!this.props.notEditable&&this.props.objectBrowserAliasEditor&&this.props.objectBrowserEditObject&&(r==null?void 0:r.type)==="state"&&((y=r.common)==null?void 0:y.type)!=="file"),icon:a.createElement(SN,{style:(T=r==null?void 0:r.common)!=null&&T.alias?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),label:this.info.aliasesMap[e.data.id]||e.data.id.startsWith("alias.0.")?this.props.t("ra_Edit alias"):this.props.t("ra_Create alias"),onClick:()=>{var w;(w=r==null?void 0:r.common)!=null&&w.alias?this.setState({showContextMenu:null,editObjectDialog:e.data.id,editObjectAlias:!0}):this.setState({showContextMenu:null,showAliasEditor:e.data.id})}},CREATE:{key:"+",visibility:(e.data.id.startsWith("0_userdata.0")||e.data.id.startsWith("javascript."))&&(M||c||l||N),icon:a.createElement(Kn,{fontSize:"small",style:this.styles.cellButtonsButtonWithCustoms}),style:z.contextMenuWithSubMenu,label:this.texts.create,subMenu:[{label:this.texts.createBooleanState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","boolean")},{label:this.texts.createNumberState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","number")},{label:this.texts.createStringState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","string")},{label:this.texts.createState,visibility:M,icon:a.createElement(rr,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state")},{label:this.texts.createChannel,visibility:c,icon:a.createElement(sg,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"channel")},{label:this.texts.createDevice,visibility:l,icon:a.createElement(ig,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"device")},{label:this.texts.createFolder,icon:a.createElement(fN,{fontSize:"small"}),visibility:N,onClick:()=>this.showAddDataPointDialog(e.data.id,"folder")}]},RENAME:{key:"8",visibility:!!(!this.props.notEditable&&this.props.objectMoveRenameDialog&&!e.data.id.startsWith("system.")&&e.data.id.split(".").length>2&&(this.props.expertMode||e.data.id.startsWith("javascript.0.")||e.data.id.startsWith("0_userdata.0."))),icon:a.createElement(Zj,null),label:this.props.t("ra_Rename_Move_Copy"),onClick:()=>{const w=Object.keys(this.objects),A=`${e.data.id}.`;this.setState({showContextMenu:null,showRenameDialog:{id:e.data.id,childrenIds:w.filter(p=>p.startsWith(A))}})}},DELETE:{key:"Delete",visibility:!!(this.props.onObjectDelete&&((d=e.children)!=null&&d.length||r&&!((I=r.common)!=null&&I.dontDelete))),icon:a.createElement(wt,{fontSize:"small",style:this.styles.contextMenuDelete}),style:this.styles.contextMenuDelete,label:this.texts.deleteObject,onClick:()=>this.setState({showContextMenu:null},()=>this.showDeleteDialog({id:t,obj:r||{},item:e}))}};return Object.keys(u).forEach(w=>{var A,p;u[w].visibility&&(u[w].subMenu?(i.push(a.createElement(re,{key:w,href:"",onClick:h=>this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position,subItem:w,subAnchor:h.target}}),style:u[w].style},a.createElement(Xt,{style:{...u[w].iconStyle,...u[w].listItemIconStyle}},u[w].icon),a.createElement(dt,null,u[w].label,"..."),a.createElement("div",{style:{...z.contextMenuKeys,opacity:1}},a.createElement(kj,null)))),((A=this.state.showContextMenu)==null?void 0:A.subItem)===w&&i.push(a.createElement(ws,{key:"subContextMenu",open:!0,anchorEl:this.state.showContextMenu.subAnchor,onClose:()=>{this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position}}),this.contextMenu=null}},(p=u[w].subMenu)==null?void 0:p.map(h=>h.visibility?a.createElement(re,{key:h.label,onClick:h.onClick,style:h.style},a.createElement(Xt,{style:{...h.iconStyle,...h.listItemIconStyle||void 0}},h.icon),a.createElement(dt,null,h.label)):null)))):i.push(a.createElement(re,{key:w,onClick:u[w].onClick,sx:u[w].style},a.createElement(Xt,{style:{...u[w].iconStyle,...u[w].listItemIconStyle}},u[w].icon),a.createElement(dt,null,u[w].label),u[w].key?a.createElement("div",{style:z.contextMenuKeys},`Alt+${u[w].key==="Delete"?this.props.t("ra_Del"):u[w].key}`):null)))}),i.length?a.createElement(ws,{key:"contextMenu",open:!0,onKeyUp:w=>{w.preventDefault(),w.altKey&&Object.keys(u).forEach(A=>{w.key===u[A].key&&u[A].onClick&&u[A].onClick()})},anchorReference:"anchorPosition",anchorPosition:this.state.showContextMenu.position,onClose:()=>{this.setState({showContextMenu:null}),this.contextMenu=null}},i):(setTimeout(()=>this.setState({showContextMenu:null}),100),null)}renderEditValueDialog(){var r;if(!this.state.updateOpened||!this.props.objectBrowserValue)return null;if(!this.edit.id)return console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`),null;if(!this.objects[this.edit.id])return console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`),null;const e=(r=this.objects[this.edit.id].common)!=null&&r.type?this.objects[this.edit.id].common.type:typeof this.edit.val,t=this.objects[this.edit.id].common.role,i=this.props.objectBrowserValue;return a.createElement(i,{t:this.props.t,lang:this.props.lang,type:e,role:t||"",states:m.getStates(this.objects[this.edit.id]),themeType:this.props.themeType,theme:this.props.theme,expertMode:!!this.state.filter.expertMode,value:this.edit.val,socket:this.props.socket,object:this.objects[this.edit.id],defaultHistory:this.defaultHistory,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,onClose:o=>{this.setState({updateOpened:!1}),o&&this.onUpdate(o)},width:this.props.width})}doFilter(e){if(!this.objects||!this.root)return;e||this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(this.state.filter));const t={count:0};xa(this.root,this.state.filter,this.props.lang,this.objects,void 0,t,this.props.customFilter,this.props.types),t.count<500&&!this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!0})):t.count>=500&&this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!1})):this.forceUpdate()}render(){if(this.recordStates=[],this.unsubscribeTimer&&clearTimeout(this.unsubscribeTimer),this.styleTheme!==this.props.themeType&&(this.styles={cellIdIconFolder:m.getStyle(this.props.theme,z.cellIdIconFolder),cellIdIconDocument:m.getStyle(this.props.theme,z.cellIdIconDocument),iconDeviceError:m.getStyle(this.props.theme,z.iconDeviceError),iconDeviceConnected:m.getStyle(this.props.theme,z.iconDeviceConnected),iconDeviceDisconnected:m.getStyle(this.props.theme,z.iconDeviceDisconnected),cellButtonsButtonWithCustoms:m.getStyle(this.props.theme,z.cellButtonsButtonWithCustoms),invertedBackground:m.getStyle(this.props.theme,z.invertedBackground),invertedBackgroundFlex:m.getStyle(this.props.theme,z.invertedBackgroundFlex),contextMenuEdit:m.getStyle(this.props.theme,z.contextMenuEdit),contextMenuEditValue:m.getStyle(this.props.theme,z.contextMenuEditValue),contextMenuView:m.getStyle(this.props.theme,z.contextMenuView),contextMenuCustom:m.getStyle(this.props.theme,z.contextMenuCustom),contextMenuACL:m.getStyle(this.props.theme,z.contextMenuACL),contextMenuRoom:m.getStyle(this.props.theme,z.contextMenuRoom),contextMenuRole:m.getStyle(this.props.theme,z.contextMenuRole),contextMenuDelete:m.getStyle(this.props.theme,z.contextMenuDelete),filterInput:m.getStyle(this.props.theme,z.headerCellInput,z.filterInput),iconCopy:m.getStyle(this.props.theme,z.cellButtonsValueButton,z.cellButtonsValueButtonCopy),aliasReadWrite:m.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasReadWrite),aliasAlone:m.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasAlone)},this.styleTheme=this.props.themeType),this.unsubscribeTimer=setTimeout(()=>{this.unsubscribeTimer=null,this.checkUnsubscribes()},200),this.expertMode!==!!this.state.filter.expertMode&&(this.expertMode=!!this.state.filter.expertMode,this.doFilter(!0)),!this.state.loaded)return a.createElement(ko,{key:`${this.props.dialogName}_c`});const e=this.root?this.renderItem(this.root,void 0):null;return a.createElement(_5e,{key:this.props.dialogName},a.createElement("style",null,` @keyframes newValueAnimation-light { 0% { color: #00f900; @@ -657,8 +657,8 @@ body { text-decoration: underline; cursor: pointer; } -`),a.createElement(v5e,null,this.getToolbar()),a.createElement(k5e,null,this.renderHeader(),a.createElement(J,{style:z.tableDiv,ref:this.tableRef,onKeyDown:t=>this.navigateKeyPress(t)},e)),this.renderContextMenu(),this.renderAliasMenu(),this.renderToast(),this.renderColumnsEditCustomDialog(),this.renderColumnsSelectorDialog(),this.renderCustomDialog(),this.renderEditValueDialog(),this.renderEditObjectDialog(),this.renderViewObjectFileDialog(),this.renderAliasEditorDialog(),this.renderEditRoleDialog(),this.renderEnumDialog(),this.renderErrorDialog(),this.renderExportDialog(),this.renderRenameDialog(),this.renderInputJsonDialog(),this.state.modalNewObj&&this.props.modalNewObject&&this.props.modalNewObject(this),this.state.modalEditOfAccess&&this.state.modalEditOfAccessObjData&&this.props.modalEditOfAccessControl&&this.props.modalEditOfAccessControl(this,this.state.modalEditOfAccessObjData))}}const H5e=cn()(xo);class Jve extends a.Component{refTypo;height;width;constructor(e){super(e),this.state={closed:this.props.storeId?window.localStorage.getItem(this.props.storeId)==="true":!1},this.height=0,this.width=0,this.refTypo=a.createRef()}componentDidMount(){this.detectHeight()}onClick(){this.props.storeId&&this.props.closed===void 0&&(this.state.closed?window.localStorage.removeItem(this.props.storeId):window.localStorage.setItem(this.props.storeId,"true")),this.props.closed===void 0?this.setState({closed:!this.state.closed},()=>{this.props.onClose&&this.props.onClose(this.state.closed)}):this.props.onClose&&this.props.onClose(!this.props.closed)}detectHeight(){const e=this.props.closed!==void 0?this.props.closed:this.state.closed;this.props.closeable&&!e&&this.refTypo.current&&window.requestAnimationFrame(()=>{(this.props.closed!==void 0?this.props.closed:this.state.closed)||this.refTypo.current&&(!this.height||this.width!==this.refTypo.current.clientWidth)&&(this.height=this.refTypo.current.clientHeight,this.width=this.refTypo.current.clientWidth,this.forceUpdate())})}componentDidUpdate(){this.detectHeight()}render(){const e=this.props.closed!==void 0?this.props.closed:this.state.closed,t=e?Cy:we;return a.createElement(J,{className:"iom-info-box",style:{whiteSpace:"preserve",display:"flex",gap:8,alignItems:e||this.props.iconPosition==="top"?"flex-start":"center",borderWidth:1,borderStyle:"solid",padding:4,borderRadius:5,marginBottom:8,maxWidth:"100%",transition:"height 0.5s",height:this.props.closeable?e?30:this.height||void 0:void 0,overflow:this.props.closeable?"hidden":void 0,position:"relative",...this.props.style},sx:{borderColor:i=>this.props.type==="ok"?i.palette.info.main:i.palette[this.props.type].main}},this.props.type==="ok"?a.createElement(We,{style:{color:"#0F0"}}):this.props.type==="info"?a.createElement(sM,{color:"primary"}):a.createElement(py,{color:this.props.type}),a.createElement(Zg,{ref:this.refTypo},this.props.children),this.props.closeable?a.createElement(t,{sx:{color:i=>i.palette.mode==="dark"?"lightgray":"gray",cursor:"pointer",position:"absolute",top:4,right:4},onClick:()=>this.onClick()}):null,this.props.closeable?a.createElement("div",{style:{width:22}}):null,e?a.createElement(J,{component:"div",sx:i=>{const r=i.palette[this.props.type==="ok"?"info":this.props.type].main;return{background:`linear-gradient(${r}00 0%, ${r}10 60%, ${r}90 100%)`}},style:{bottom:0,position:"absolute",left:0,right:0,height:10}}):null)}}const f={hr:{border:0,borderTop:"1px solid gray"},scrollWindow:{width:"100%",overflow:"auto",height:"calc(100% - 22px)"},rowDiv:{width:"100%"},modeDiv:{width:200,display:"inline-block",verticalAlign:"top"},settingsDiv:{display:"inline-block",verticalAlign:"top"},inputTime:{width:90,marginTop:0,marginLeft:5},inputDate:{width:140,marginTop:0,marginLeft:5},inputEvery:{width:40,marginLeft:5,marginRight:5},inputRadio:{padding:"4px 12px",verticalAlign:"top"},inputGroup:{maxWidth:400,display:"inline-block"},inputGroupElement:{width:120},inputDateDay:{width:60},inputDateDayCheck:{padding:4},inputSmallCheck:{padding:0},rowOnce:{},rowDays:s=>({background:s.palette.mode!=="dark"?"#ddeaff":"#4b5057"}),rowDows:s=>({background:s.palette.mode!=="dark"?"#DDFFDD":"#52646c"}),rowMonths:s=>({background:s.palette.mode!=="dark"?"#DDFFFF":"#1f5557"}),rowMonthsDates:s=>({background:s.palette.mode!=="dark"?"#EEFFFF":"#3c5737",maxWidth:600}),rowYears:s=>({background:s.palette.mode!=="dark"?"#fbffdd":"#574b33"}),rowDowsDows:s=>({background:s.palette.mode!=="dark"?"#EEFFEE":"#3d4c54",pl:"10px",pb:"10px"})},Jn=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],eo=["January","February","March","April","May","June","July","August","September","October","November","December"],Bn={minutes:"minutes",hours:"hours"},Gi=["sunrise","sunriseEnd","goldenHourEnd","solarNoon","goldenHour","sunsetStart","sunset","dusk","nauticalDusk","night","nightEnd","nauticalDawn","dawn","nadir"];function xt(s){return s<10?`0${s}`:`${s}`}const tN={time:{exactTime:!1,start:"00:00",end:"23:59",mode:"hours",interval:1},period:{once:"",days:1,dows:"",dates:"",weeks:0,months:"",years:0,yearMonth:0,yearDate:0},valid:{from:"",to:""}};function Rn(s){const e=s.split(".");return e.length===3?`${e[2]}-${e[1]}-${e[0]}`:""}class Ee extends De{refFrom;refTo;refOnce;timerOnce=null;timerFrom=null;timerTo=null;constructor(e){super(e);let t;if(this.props.schedule&&typeof this.props.schedule=="string"&&this.props.schedule[0]==="{")try{t=JSON.parse(this.props.schedule)}catch{}else typeof this.props.schedule=="object"&&(t=this.props.schedule);(!t||!Object.keys(t).length)&&(setTimeout(()=>this.onChange(this.state.schedule,!0),200),t=tN),t={...tN,...t},t.valid.from||=Ee.now2string(),this.refFrom=a.createRef(),this.refTo=a.createRef(),this.refOnce=a.createRef(),this.state={schedule:t,desc:Ee.state2text(t)},JSON.stringify(t)!==this.props.schedule&&setTimeout(()=>{var i,r;return(r=(i=this.props).onChange)==null?void 0:r.call(i,JSON.stringify(t))},100)}componentWillUnmount(){this.timerOnce&&(clearTimeout(this.timerOnce),this.timerOnce=null),this.timerFrom&&(clearTimeout(this.timerFrom),this.timerFrom=null),this.timerTo&&(clearTimeout(this.timerTo),this.timerTo=null)}onChange(e,t){var r,o;const i=JSON.stringify(e)!==JSON.stringify(this.state.schedule);if(t||i){i&&this.setState({schedule:e,desc:Ee.state2text(e)});const n=JSON.parse(JSON.stringify(e));if(n.period.once){const M=n.period.once;delete n.period,n.period={once:M},delete n.valid}else if(n.period.days){const M=n.period.days,c=n.period.dows;delete n.period,n.period={days:M},c&&c!=="[]"&&(n.period.dows=c)}else if(n.period.weeks){const M=n.period.weeks,c=n.period.dows;delete n.period,n.period={weeks:M},c&&c!=="[]"&&(n.period.dows=c)}else if(n.period.months){const M=n.period.months,c=n.period.dates;delete n.period,n.period={months:M},c&&c!=="[]"&&(n.period.dates=c)}else if(n.period.years){const M=n.period.years,c=n.period.yearMonth,l=n.period.yearDate;delete n.period,n.period={years:M,yearDate:l},c&&(n.period.yearMonth=c)}if(n.time.exactTime?(delete n.time.end,delete n.time.mode,delete n.time.interval):delete n.time.exactTime,n.valid){if(n.valid.to||delete n.valid.to,n.period.days===1||n.period.weeks===1||n.period.months===1||n.period.years===1){const M=Ee.string2date(n.valid.from),c=new Date;c.setHours(0),c.setMinutes(0),c.setSeconds(0),c.setMilliseconds(0),M<=c&&delete n.valid.from}!n.valid.from&&!n.valid.to&&delete n.valid}(o=(r=this.props).onChange)==null||o.call(r,JSON.stringify(n),Ee.state2text(e))}}static state2text(e){if(typeof e=="string")try{e=JSON.parse(e)}catch{return""}const t=[],i=Ee.string2date(e.valid.from);if(e.period.once){const r=Ee.string2date(e.period.once),o=new Date;if(o.setMilliseconds(0),o.setSeconds(0),o.setMinutes(0),o.setHours(0),rD.t(Jn[n]));if(o.length===1)t.push(D.t("sch_desc_onWeekday",o[0]));else if(o.length===7)t.push(D.t("sch_desc_everyDay"));else{const n=o.pop();t.push(D.t("sch_desc_onWeekdays",o.join(", "),n))}}}else t.push(D.t("sch_desc_everyDay"));else t.push(D.t("sch_desc_everyNDay",e.period.days.toString()));else if(e.period.weeks)if(e.period.weeks===1?t.push(D.t("sch_desc_everyWeek")):t.push(D.t("sch_desc_everyNWeeks",e.period.weeks.toString())),e.period.dows){const r=JSON.parse(e.period.dows);if(r.length===2&&r[0]===0&&r[1]===6)t.push(D.t("sch_desc_onWeekends"));else if(r.length===5&&r[0]===1&&r[1]===2&&r[2]===3&&r[3]===4&&r[4]===5)t.push(D.t("sch_desc_onWorkdays"));else{const o=r.map(n=>D.t(Jn[n]));if(o.length===1)t.push(D.t("sch_desc_onWeekday",o[0]));else if(o.length===7)t.push(D.t("sch_desc_everyDay"));else{const n=o.pop();t.push(D.t("sch_desc_onWeekdays",o.join(", "),n))}}}else return D.t("sch_desc_never");else if(e.period.months){if(e.period.dates){const r=JSON.parse(e.period.dates);if(r.length===1)t.push(D.t("sch_desc_onDate",r[0]));else if(r.length===31)t.push(D.t("sch_desc_onEveryDate"));else if(r.length){const o=r.pop();t.push(D.t("sch_desc_onDates",r.join(", "),o))}else return D.t("sch_desc_never")}else t.push(D.t("sch_desc_onEveryDate"));if(e.period.months===1)t.push(D.t("sch_desc_everyMonth"));else if(typeof e.period.months=="number")t.push(D.t("sch_desc_everyNMonths",e.period.months.toString()));else{const o=JSON.parse(e.period.months).map(n=>D.t(eo[n-1]));if(!o.length)return D.t("sch_desc_never");if(o.length===1)t.push(D.t("sch_desc_onMonth",o[0]));else if(o.length===12)t.push(D.t("sch_desc_everyMonth"));else{const n=o.pop();t.push(D.t("sch_desc_onMonths",o.join(", "),n))}}}else e.period.years&&(e.period.years===1?t.push(D.t("sch_desc_everyYear")):t.push(D.t("sch_desc_everyNYears",e.period.years.toString())),t.push(D.t("sch_desc_onDate",e.period.yearDate.toString(),e.period.yearMonth?D.t(eo[e.period.yearMonth-1]):D.t("sch_desc_everyMonth"))));if(e.time.exactTime)Gi.includes(e.time.start)?t.push(D.t("sch_desc_atTime",D.t(`sch_astro_${e.time.start}`))):t.push(D.t("sch_desc_atTime",e.time.start));else{e.time.mode===Bn.minutes?e.time.interval===1?t.push(D.t("sch_desc_everyMinute")):t.push(D.t("sch_desc_everyNMinutes",e.time.interval.toString())):e.time.interval===1?t.push(D.t("sch_desc_everyHour")):t.push(D.t("sch_desc_everyNHours",e.time.interval.toString()));const r=Gi.indexOf(e.time.start)!==-1?D.t(`sch_astro_${e.time.start}`):e.time.start,o=Gi.indexOf(e.time.end)!==-1?D.t(`sch_astro_${e.time.end}`):e.time.end;(r!=="00:00"||o!=="24:00"&&o!=="23:59")&&t.push(D.t("sch_desc_intervalFromTo",r,o))}return e.period.once||(i.getTime()>Date.now()&&e.valid.to?t.push(D.t("sch_desc_validFromTo",e.valid.from,e.valid.to)):i.getTime()>Date.now()?t.push(D.t("sch_desc_validFrom",e.valid.from)):e.valid.to&&t.push(D.t("sch_desc_validTo",e.valid.to))),t.join(" ")}getTimePeriodElements(){const e=this.state.schedule;let t=!1,i=!1,r=!1,o=!0;return e.time.start==="00:00"&&e.time.end==="24:00"?(t=!0,o=!1):e.time.start==="sunrise"?(i=!0,o=!1):e.time.start==="sunset"&&(r=!0,o=!1),a.createElement("div",{key:"timePeriod",style:f.rowDiv},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!e.time.exactTime,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.exactTime=!1,this.onChange(n)}}),label:D.t("sch_intervalTime")})),a.createElement("div",{style:f.settingsDiv},a.createElement("div",{style:f.settingsDiv},!e.time.exactTime&&a.createElement("div",null,a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!o,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.start="00:00",n.time.end="23:59",this.onChange(n)}}),label:o?"":D.t("sch_fromTo")}),o&&[a.createElement(Te,{variant:"standard",style:{...f.inputTime,marginRight:10},key:"exactTimeFrom",type:"time",sx:n=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:n.palette.mode==="dark"?"invert(80%)":void 0}}),value:this.state.schedule.time.start,onChange:n=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start=n.target.value,this.onChange(M)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_from"),margin:"normal"}),a.createElement(Te,{variant:"standard",style:f.inputTime,key:"exactTimeTo",type:"time",sx:n=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:n.palette.mode==="dark"?"invert(80%)":void 0}}),value:this.state.schedule.time.end,onChange:n=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.end=n.target.value,this.onChange(M)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_to"),margin:"normal"})])),!e.time.exactTime&&a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!t,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.start="00:00",n.time.end="24:00",this.onChange(n)}}),label:D.t("sch_wholeDay")})),!e.time.exactTime&&a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!i,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.start="sunrise",n.time.end="sunset",this.onChange(n)}}),label:D.t("sch_astroDay")})),!e.time.exactTime&&a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!r,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.start="sunset",n.time.end="sunrise",this.onChange(n)}}),label:D.t("sch_astroNight")}))),!e.time.exactTime&&this.getPeriodSettingsMinutes(o)))}getTimeExactElements(){const e=Gi.includes(this.state.schedule.time.start);return a.createElement("div",{key:"timeExact",style:f.rowDiv},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!this.state.schedule.time.exactTime,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.exactTime=!0,this.onChange(t)}}),label:D.t("sch_exactTime")})),this.state.schedule.time.exactTime&&a.createElement(nt,{variant:"standard",value:e?this.state.schedule.time.start:"00:00",onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.time.start=t.target.value,this.onChange(i)}},a.createElement(re,{key:"specific",value:"00:00"},D.t("sch_specificTime")),Gi.map(t=>a.createElement(re,{key:t,value:t},D.t(`sch_astro_${t}`)))),this.state.schedule.time.exactTime&&!e&&a.createElement("div",{style:f.settingsDiv},a.createElement(Te,{variant:"standard",style:f.inputTime,key:"exactTimeValue",value:this.state.schedule.time.start,type:"time",sx:t=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:t.palette.mode==="dark"?"invert(80%)":void 0}}),onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.time.start=t.target.value,this.onChange(i)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"})))}static getDivider(){return a.createElement("hr",{style:f.hr})}getPeriodModes(){const e=this.state.schedule,t=!e.period.dows&&!e.period.months&&!e.period.dates&&!e.period.years&&!e.period.days&&!e.period.weeks;return t&&!e.period.once&&(e.period.once=Ee.now2string(!0)),[a.createElement("div",{key:"once",style:{...f.rowDiv,...f.rowOnce}},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!t,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.once||=Ee.now2string(!0),i.period.dows="",i.period.months="",i.period.dates="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.weeks=0,i.period.days=0,this.onChange(i)}}),label:D.t("sch_periodOnce")})),t&&a.createElement("div",{style:f.settingsDiv},a.createElement(Te,{variant:"standard",style:f.inputDate,type:"date",ref:this.refOnce,key:"exactDateAt",defaultValue:Rn(e.period.once),onChange:i=>{this.timerOnce&&clearTimeout(this.timerOnce),this.refOnce.current&&(this.refOnce.current.style.background="#ff000030"),this.timerOnce=setTimeout(r=>{this.timerOnce=null,this.refOnce.current&&(this.refOnce.current.style.background="");const o=JSON.parse(JSON.stringify(this.state.schedule)),n=Ee.string2date(r);n.toString()!=="Invalid Date"&&(o.period.once=`${xt(n.getDate())}.${xt(n.getMonth()+1)}.${n.getFullYear()}`,this.onChange(o))},1500,i.target.value)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_at"),margin:"normal"}))),a.createElement(J,{component:"div",key:"days",sx:m.getStyle(this.props.theme,f.rowDiv,f.rowDays)},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!e.period.days,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.days=1,i.period.dows="",i.period.months="",i.period.dates="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.weeks=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodDaily")})),a.createElement("div",{style:f.settingsDiv},this.getPeriodSettingsDaily(),e.period.days?this.getPeriodSettingsWeekdays():null)),a.createElement(J,{component:"div",key:"weeks",sx:m.getStyle(this.props.theme,f.rowDiv,f.rowDows)},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!e.period.weeks,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.weeks=e.period.weeks?0:1,i.period.dows||="[0]",i.period.months="",i.period.dates="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.days=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodWeekly")})),a.createElement(J,{component:"div",style:f.settingsDiv},a.createElement("div",{style:f.settingsDiv},this.getPeriodSettingsWeekly()),a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,f.settingsDiv,f.rowDowsDows)},this.state.schedule.period.weeks?this.getPeriodSettingsWeekdays():null))),a.createElement(J,{component:"div",key:"months",sx:m.getStyle(this.props.theme,f.rowDiv,f.rowMonths)},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!e.period.months,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months=1,i.period.dows="",i.period.dates="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.weeks=0,i.period.days=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodMonthly")})),a.createElement("div",{style:f.settingsDiv},this.getPeriodSettingsMonthly(),e.period.months?a.createElement(J,null,a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,f.settingsDiv,f.rowMonthsDates)},a.createElement(V,{control:a.createElement(ue,{style:f.inputRadio,checked:!!e.period.dates,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months||=1;const r=[];for(let o=1;o<=31;o++)r.push(o);i.period.dates||=JSON.stringify(r),i.period.dows="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.weeks=0,i.period.days=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodDates")})),a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,f.settingsDiv,f.rowMonthsDates)},this.getPeriodSettingsDates())):null)),a.createElement(J,{component:"div",key:"years",sx:m.getStyle(this.props.theme,f.rowDiv,f.rowYears)},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!e.period.years,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.years=1,i.period.yearDate=1,i.period.yearMonth=1,i.period.dows="",i.period.months=0,i.period.dates="",i.period.weeks=0,i.period.days=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodYearly")})),a.createElement("div",{style:f.settingsDiv},a.createElement("div",{style:f.settingsDiv},this.getPeriodSettingsYearly()),!!e.period.years&&a.createElement("div",{style:f.settingsDiv},a.createElement("span",null,D.t("sch_on")),a.createElement(qt,{key:"input",value:this.state.schedule.period.yearDate,style:f.inputEvery,type:"number",inputProps:{min:1,max:31},onChange:i=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.yearDate=parseInt(i.target.value,10),r.period.yearDate<1&&(r.period.yearDate=31),r.period.yearDate>31&&(r.period.yearDate=1),this.onChange(r)}}),a.createElement(nt,{variant:"standard",value:e.period.yearMonth,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.yearMonth=i.target.value,this.onChange(r)}},a.createElement(re,{key:"every",value:0},D.t("sch_yearEveryMonth")),eo.map((i,r)=>a.createElement(re,{key:i,value:r+1},D.t(i)))))))]}getPeriodSettingsMinutes(e){return a.createElement("div",{style:{display:"inline-block",marginTop:e?15:"inherit"}},a.createElement("label",{style:{marginLeft:4,marginRight:4}},D.t("sch_every")),a.createElement(qt,{value:this.state.schedule.time.interval,style:{...f.inputEvery,verticalAlign:"bottom"},type:"number",inputProps:{min:1},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.time.interval=parseInt(t.target.value,10),this.onChange(i)}}),a.createElement(nt,{variant:"standard",value:this.state.schedule.time.mode,onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.time.mode=t.target.value,this.onChange(i)}},a.createElement(re,{value:Bn.minutes},D.t("sch_periodMinutes")),a.createElement(re,{value:Bn.hours},D.t("sch_periodHours"))))}getPeriodSettingsWeekdays(){const e=this.state.schedule,t=e.period.dows&&e.period.dows!=="[1, 2, 3, 4, 5]"&&e.period.dows!=="[0, 6]";return[a.createElement("div",{key:"workdays"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.dows==="[1, 2, 3, 4, 5]",onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.dows="[1, 2, 3, 4, 5]",i.period.days&&(i.period.days=1),this.onChange(i)}}),label:D.t("sch_periodWorkdays")})),a.createElement("div",{key:"weekend"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.dows==="[0, 6]",onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.dows="[0, 6]",i.period.days&&(i.period.days=1),this.onChange(i)}}),label:D.t("sch_periodWeekend")})),a.createElement("div",{key:"specific",style:{verticalAlign:"top"}},a.createElement(V,{style:{verticalAlign:"top"},control:a.createElement(Me,{style:f.inputRadio,checked:!!t,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.dows="[0, 1, 2, 3, 4, 5, 6]",i.period.days&&(i.period.days=1),this.onChange(i)}}),label:D.t("sch_periodWeekdays")}),t&&(e.period.days===1||e.period.weeks)&&a.createElement(Ln,{row:!0,style:{...f.inputGroup,width:150}},[1,2,3,4,5,6,0].map(i=>a.createElement(V,{key:`specific_${i}`,style:f.inputGroupElement,control:a.createElement(ue,{style:f.inputSmallCheck,checked:e.period.dows.includes(i.toString()),onChange:r=>{const o=JSON.parse(JSON.stringify(this.state.schedule));let n;try{n=JSON.parse(o.period.dows)}catch{n=[]}r.target.checked&&!n.includes(i)?n.push(i):!r.target.checked&&n.includes(i)&&n.splice(n.indexOf(i),1),n.sort((M,c)=>M-c),o.period.dows=JSON.stringify(n),o.period.days&&(o.period.days=1),this.onChange(o)}}),label:D.t(Jn[i])}))))]}getPeriodSettingsDaily(){if(!this.state.schedule.period.days)return null;const e=this.state.schedule;return[a.createElement("div",{key:"every_day"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.days===1&&!e.period.dows,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=1,t.period.dows="",this.onChange(t)}}),label:D.t("sch_periodEveryDay")})),a.createElement("div",{key:"everyN_day"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.days>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=2,t.period.dows="",this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.days>1&&[a.createElement(qt,{key:"input",value:this.state.schedule.period.days,style:f.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.days=parseInt(t.target.value,10),i.period.dows="",this.onChange(i)}}),a.createElement("span",{key:"span",style:{paddingRight:10}},D.t("sch_periodDay"))])]}getPeriodSettingsWeekly(){if(!this.state.schedule.period.weeks)return null;const e=this.state.schedule;return[a.createElement("div",{key:"radios",style:{display:"inline-block",verticalAlign:"top"}},a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.weeks===1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=1,this.onChange(t)}}),label:D.t("sch_periodEveryWeek")})),a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.weeks>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=2,this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.weeks>1&&[a.createElement(qt,{key:"input",value:this.state.schedule.period.weeks,style:f.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.weeks=parseInt(t.target.value,10),this.onChange(i)}}),a.createElement("span",{key:"text"},D.t("sch_periodWeek"))]))]}getPeriodSettingsDates(){if(!this.state.schedule.period.dates)return null;const e=this.state.schedule,t=[];for(let r=1;r<=31;r++)t.push(r);const i=JSON.parse(e.period.dates);return a.createElement(Ln,{row:!0,style:{...f.inputGroup,maxWidth:620}},a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:i.length===31,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule)),o=[];for(let n=1;n<=31;n++)o.push(n);r.period.dates=JSON.stringify(o),this.onChange(r)}}),label:D.t("sch_all")}),a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:!i.length,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.dates="[]",this.onChange(r)}}),label:D.t("sch_no_one")}),i.length!==31&&!!i.length&&a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:!1,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule)),o=[],n=JSON.parse(r.period.dates);for(let M=1;M<=31;M++)n.includes(M)||o.push(M);o.sort((M,c)=>M-c),r.period.dates=JSON.stringify(o),this.onChange(r)}}),label:D.t("sch_invert")}),a.createElement("div",null),t.map(r=>a.createElement(V,{key:`date_${r}`,style:r?f.inputDateDay:{...f.inputDateDay,opacity:0,cursor:"default",userSelect:"none",pointerEvents:"none"},control:a.createElement(ue,{style:f.inputDateDayCheck,checked:JSON.parse(e.period.dates).includes(r),onChange:o=>{const n=JSON.parse(JSON.stringify(this.state.schedule));let M;try{M=JSON.parse(n.period.dates)}catch{M=[]}o.target.checked&&!M.includes(r)?M.push(r):!o.target.checked&&M.includes(r)&&M.splice(M.indexOf(r),1),M.sort((c,l)=>c-l),n.period.dates=JSON.stringify(M),this.onChange(n)}}),label:r<10?[a.createElement("span",{key:"0",style:{opacity:0}},"0"),a.createElement("span",{key:"num"},r)]:r})))}getPeriodSettingsMonthly(){if(!this.state.schedule.period.months)return null;const e=this.state.schedule,t=typeof e.period.months=="string"?JSON.parse(e.period.months):[];return[a.createElement("div",{key:"every"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:typeof e.period.months=="number"&&e.period.months===1,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months=1,this.onChange(e)}}),label:D.t("sch_periodEveryMonth")})),a.createElement("div",{key:"everyN"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:typeof e.period.months=="number"&&e.period.months>1,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months=2,this.onChange(i)}}),label:D.t("sch_periodEvery")}),typeof e.period.months=="number"&&e.period.months>1&&[a.createElement(qt,{key:"input",value:e.period.months,style:f.inputEvery,type:"number",inputProps:{min:2},onChange:i=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.months=parseInt(i.target.value,10),r.period.months<1&&(r.period.months=1),this.onChange(r)}}),a.createElement("span",{key:"text"},D.t("sch_periodMonth"))]),a.createElement("div",{key:"specific",style:{verticalAlign:"top"}},a.createElement(V,{style:{verticalAlign:"top"},control:a.createElement(Me,{style:f.inputRadio,checked:typeof e.period.months=="string",onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months="[1,2,3,4,5,6,7,8,9,10,11,12]",this.onChange(i)}}),label:D.t("sch_periodSpecificMonths")}),typeof e.period.months=="string"&&a.createElement(Ln,{row:!0,style:f.inputGroup},a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:t.length===12,onChange:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule)),r=[];for(let o=1;o<=12;o++)r.push(o);i.period.months=JSON.stringify(r),this.onChange(i)}}),label:D.t("sch_all")}),a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:!t.length,onChange:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months="[]",this.onChange(i)}}),label:D.t("sch_no_one")}),t.length!==12&&!!t.length&&a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:!1,onChange:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule)),r=[],o=JSON.parse(i.period.months);for(let n=1;n<=12;n++)o.includes(n)||r.push(n);r.sort((n,M)=>n-M),i.period.months=JSON.stringify(r),this.onChange(i)}}),label:D.t("sch_invert")}),a.createElement("div",null),eo.map((i,r)=>a.createElement(V,{key:`month_${r}`,style:f.inputGroupElement,control:a.createElement(ue,{style:f.inputSmallCheck,checked:typeof e.period.months=="string"?JSON.parse(e.period.months).includes(r+1):e.period.months===r,onChange:o=>{const n=JSON.parse(JSON.stringify(this.state.schedule));let M;try{M=JSON.parse(n.period.months)}catch{M=[]}o.target.checked&&!M.includes(r+1)?M.push(r+1):!o.target.checked&&M.includes(r+1)&&M.splice(M.indexOf(r+1),1),M.sort((c,l)=>c-l),n.period.months=JSON.stringify(M),this.onChange(n)}}),label:D.t(i)}))))]}getPeriodSettingsYearly(){if(!this.state.schedule.period.years)return null;const e=this.state.schedule;return[a.createElement("div",{key:"year"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.years===1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=1,this.onChange(t)}}),label:D.t("sch_periodEveryYear")})),a.createElement("div",{key:"every"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.years>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=2,this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.years>1&&[a.createElement(qt,{key:"input",value:this.state.schedule.period.years,style:f.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.years=parseInt(t.target.value,10),i.period.years<1&&(i.period.years=1),this.onChange(i)}}),a.createElement("span",{key:"text"},D.t("sch_periodYear"))])]}static now2string(e){const t=new Date;return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),e&&(t.setDate(t.getDate()+2),t.setMilliseconds(t.getMilliseconds()-1)),`${xt(t.getDate())}.${xt(t.getMonth()+1)}.${xt(t.getFullYear())}`}static string2date(e){let t=e.split(".");return t.length===1?(t=e.split("-"),new Date(parseInt(t[0],10),parseInt(t[1],10)-1,parseInt(t[2],10))):new Date(parseInt(t[2],10),parseInt(t[1],10)-1,parseInt(t[0],10))}getValidSettings(){const e=this.state.schedule;return a.createElement("div",{style:f.rowDiv},a.createElement("div",{style:{...f.modeDiv,verticalAlign:"middle"}},a.createElement("span",{style:{fontWeight:"bold",paddingRight:10}},D.t("sch_valid")),a.createElement("span",null,D.t("sch_validFrom"))),a.createElement("div",{style:f.settingsDiv},a.createElement(Te,{variant:"standard",style:{...f.inputDate,marginRight:10},key:"exactTimeFrom",inputRef:this.refFrom,defaultValue:Rn(e.valid.from),type:"date",onChange:t=>{this.timerFrom&&clearTimeout(this.timerFrom),this.refFrom.current&&(this.refFrom.current.style.background="#ff000030"),this.timerFrom=setTimeout(i=>{this.timerFrom=null,this.refFrom.current&&(this.refFrom.current.style.background="");const r=JSON.parse(JSON.stringify(this.state.schedule)),o=Ee.string2date(i);o.toString()!=="Invalid Date"&&(r.valid.from=`${xt(o.getDate())}.${xt(o.getMonth()+1)}.${o.getFullYear()}`,this.onChange(r))},1500,t.target.value)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"}),a.createElement(V,{control:a.createElement(ue,{style:f.inputRadio,checked:!!e.valid.to,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.valid.to=t.valid.to?"":Ee.now2string(!0),this.onChange(t)}}),label:D.t("sch_validTo")}),!!e.valid.to&&a.createElement(Te,{variant:"standard",inputRef:this.refTo,style:{...f.inputDate,marginRight:10},key:"exactTimeFrom",type:"date",defaultValue:Rn(e.valid.to),onChange:t=>{this.timerTo&&clearTimeout(this.timerTo),this.refTo.current&&(this.refTo.current.style.background="#ff000030"),this.timerTo=setTimeout(i=>{this.timerTo=null,this.refTo.current&&(this.refTo.current.style.background="");const r=JSON.parse(JSON.stringify(this.state.schedule)),o=Ee.string2date(i);o.toString()!=="Invalid Date"&&(r.valid.to=`${xt(o.getDate())}.${xt(o.getMonth()+1)}.${o.getFullYear()}`,this.onChange(r))},1500,t.target.value)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"})))}render(){return a.createElement("div",{style:{height:"calc(100% - 48px)",width:"100%",overflow:"hidden"}},a.createElement("div",null,this.state.desc),a.createElement("div",{style:f.scrollWindow},a.createElement("h5",null,D.t("sch_time")),this.getTimePeriodElements(),this.getTimeExactElements(),Ee.getDivider(),a.createElement("h5",null,D.t("sch_period")),this.getPeriodModes(),!this.state.schedule.period.once&&Ee.getDivider(),!this.state.schedule.period.once&&this.getValidSettings()))}}const to={different:{opacity:.5},icon:{width:16,height:16,marginRight:8}};class Bve extends De{wordDifferent;timeout=null;constructor(e){super(e),e.different&&(this.wordDifferent=e.t("ra___different__"));let t;Array.isArray(e.list)?t=e.list.filter(i=>(i==null?void 0:i._id)&&i.common).map(i=>{var r,o;return{name:m.getObjectNameFromObj(i,e.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:i._id,icon:(r=i.common)==null?void 0:r.icon,color:(o=i.common)==null?void 0:o.color}}):t=Object.values(e.list).filter(i=>(i==null?void 0:i._id)&&i.common).map(i=>{var r,o;return{name:m.getObjectNameFromObj(i,e.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:i._id,icon:(r=i.common)==null?void 0:r.icon,color:(o=i.common)==null?void 0:o.color}}),e.different&&e.value===e.different&&t.unshift({value:e.different,name:this.wordDifferent||""}),e.allowNone&&t.unshift({value:"",name:D.t("ra_none")}),this.state={list:t}}render(){this.props.allowNone&&!this.state.list.find(r=>r.value==="")?this.timeout=this.timeout||setTimeout(()=>{this.timeout=null;const r=JSON.parse(JSON.stringify(this.state.list));r.unshift({value:"",name:D.t("ra_none")}),this.setState({list:r})},100):!this.props.allowNone&&this.state.list.find(r=>r.value==="")&&(this.timeout=this.timeout||setTimeout(()=>{this.timeout=null;const r=JSON.parse(JSON.stringify(this.state.list)),o=this.state.list.findIndex(n=>n.value==="");r.splice(o,1),this.setState({list:r})},100));const e=this.state.list.find(r=>r.value===this.props.value||this.props.removePrefix&&r.value.replace(this.props.removePrefix,"")===this.props.value),t=this.props.value===this.props.different?{}:{color:(e==null?void 0:e.color)||void 0,backgroundColor:m.getInvertedColor((e==null?void 0:e.color)||"",this.props.themeType)};this.props.dense&&this.props.style&&Object.assign(t,this.props.style);const i=a.createElement(nt,{variant:"standard",disabled:this.props.disabled,value:this.props.value,slotProps:{input:this.props.inputProps},renderValue:()=>a.createElement("span",null,e!=null&&e.icon?a.createElement(be,{src:e==null?void 0:e.icon,style:to.icon}):null,e==null?void 0:e.name),sx:{"&.MuiSelect-root":this.props.value===this.props.different?to.different:{}},classes:{root:this.props.dense?this.props.className:""},style:t,onChange:r=>{if(this.props.different&&r.target.value!==this.props.different){let o=null;for(let n=0;nthis.props.onChange(r.target.value));return}}this.props.onChange(this.props.removePrefix?r.target.value.replace(this.props.removePrefix,""):r.target.value)}},this.state.list.map(r=>a.createElement(re,{style:this.props.different&&r.value===this.props.different?to.different:{color:r.color||void 0,backgroundColor:m.getInvertedColor(r.color||"",this.props.themeType)},key:r.value,value:r.value},r.icon?a.createElement(be,{src:r.icon,style:to.icon}):null,r.name)));return this.props.dense?i:a.createElement(Qt,{variant:"standard",fullWidth:!!this.props.fullWidth,style:this.props.style,className:this.props.className},a.createElement(yi,null,this.props.label),i)}}class Rve extends De{resizerRefTable;resizerActiveIndex;resizerActiveDiv;resizerCurrentWidths;widthFilled=!1;installTimeout=null;resizerMin=0;resizerMinNext=0;resizerPosition=0;resizerOldWidth=0;resizerOldWidthNext=0;constructor(e){super(e),this.resizerRefTable=a.createRef(),this.resizerActiveIndex=null,this.resizerActiveDiv=null,this.resizerCurrentWidths=[]}componentDidMount(){this.resizerInstall()}componentWillUnmount(){this.resizerUninstall()}resizerInstall(){if(this.resizerRefTable.current&&!this.resizerRefTable.current._installed){this.resizerRefTable.current._installed=!0;const e=this.resizerRefTable.current.querySelectorAll("th"),t=(window._localStorage||window.localStorage).getItem(`App.${this.props.name||"history"}.table`);if(this.widthFilled=!1,t)try{this.resizerCurrentWidths=JSON.parse(t),this.widthFilled=!0}catch{}if(this.widthFilled)if(this.resizerCurrentWidths.length!==e.length)this.resizerCurrentWidths=[],this.widthFilled=!1;else{const i=this.resizerRefTable.current.offsetWidth;let r=0;for(let o=0;o20&&(this.resizerCurrentWidths=[],this.widthFilled=!1)}for(let i=0;i{this.installTimeout=null,this.resizerInstall()},100)}resizerReset=()=>{for(let e=0;e{if(this.resizerActiveDiv&&this.resizerActiveIndex!==null){const t=this.resizerOldWidth+e.clientX-this.resizerPosition,i=this.resizerOldWidthNext-e.clientX+this.resizerPosition;(!this.resizerMin||t>this.resizerMin)&&(!this.resizerMinNext||i>this.resizerMinNext)&&(this.resizerCurrentWidths[this.resizerActiveIndex]=t,this.resizerCurrentWidths[this.resizerActiveIndex+1]=i,this.resizerApplyWidths())}};resizerMouseUp=()=>{(window._localStorage||window.localStorage).setItem(`App.${this.props.name||"history"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveIndex=null,this.resizerActiveDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{var t,i,r,o;if(this.resizerActiveIndex===null||this.resizerActiveIndex===void 0){console.log(`Mouse down ${(t=e.target)==null?void 0:t.dataset.index}`),this.resizerActiveIndex=parseInt(((i=e.target)==null?void 0:i.dataset.index)||"0",10),this.resizerActiveDiv=e.target,this.resizerMin=this.props.minWidths?this.props.minWidths[this.resizerActiveIndex]:0,this.resizerMinNext=this.props.minWidths?this.props.minWidths[this.resizerActiveIndex+1]:0,this.resizerPosition=e.clientX;let n;this.resizerCurrentWidths[this.resizerActiveIndex]==="auto"&&(n=(r=this.resizerRefTable.current)==null?void 0:r.querySelectorAll("th"),n&&(this.resizerCurrentWidths[this.resizerActiveIndex]=n[this.resizerActiveIndex].offsetWidth)),this.resizerCurrentWidths[this.resizerActiveIndex+1]==="auto"&&(n=n||((o=this.resizerRefTable.current)==null?void 0:o.querySelectorAll("th")),n&&(this.resizerCurrentWidths[this.resizerActiveIndex+1]=n[this.resizerActiveIndex+1].offsetWidth)),this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveIndex],this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerActiveIndex+1],window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};render(){if(this.props.ready===!1)return a.createElement(Xg,null);const e={gridTemplateColumns:this.resizerApplyWidths()};return a.createElement(ON,{stickyHeader:this.props.stickyHeader,size:this.props.size||"small",className:this.props.className,sx:this.props.sx,ref:this.resizerRefTable,style:{...this.props.style||void 0,...e}},this.props.children)}}const Fn={div:{borderRadius:3,padding:"0 3px",lineHeight:"20px",whiteSpace:"nowrap",overflow:"hidden",display:"flex",alignItems:"center"},icon:{width:16,height:16,marginRight:8,verticalAlign:"middle"},text:{display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}};function Fve(s){var o,n,M,c,l,N,u,L,g;const e=s.value;let t;const i=s.removePrefix||"";if(typeof e=="string"){const j=s.list;if(j)if(Array.isArray(j)){const y=j.find(T=>(T==null?void 0:T._id)===i+e);y?t={name:m.getObjectNameFromObj(y,s.lang).replace("system.group.",""),value:y._id,icon:s.icon||((o=y.common)==null?void 0:o.icon),color:s.color||((n=y.common)==null?void 0:n.color)}:t={name:e,value:i+e}}else if(j[i+e]){const y=j[i+e];t={name:m.getObjectNameFromObj(y,s.lang).replace("system.group.",""),value:y._id,icon:s.icon||((M=y.common)==null?void 0:M.icon),color:s.color||((c=y.common)==null?void 0:c.color)}}else t={name:e,value:i+e,icon:s.icon,color:s.color};else t={name:e,value:i+e,icon:s.icon,color:s.color}}else if(!e||typeof e!="object")t={name:"",value:"",icon:s.icon,color:s.color};else{const j=e;t={name:m.getObjectNameFromObj(j,s.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:j._id,icon:s.icon||((l=j.common)==null?void 0:l.icon),color:s.color||((N=j.common)==null?void 0:N.color)}}const r=t!=null&&t.color?{border:`1px solid ${m.invertColor(t==null?void 0:t.color)}`,color:m.getInvertedColor(t==null?void 0:t.color,s.themeType||"light",!0)||void 0,backgroundColor:t==null?void 0:t.color}:{};return a.createElement("div",{style:{...s.style||void 0,...Fn.div,...r||void 0},className:m.clsx(s.className,(u=s.moreClasses)==null?void 0:u.root),title:s.title||t.value},t!=null&&t.icon?a.createElement(be,{src:t==null?void 0:t.icon,className:(L=s.moreClasses)==null?void 0:L.icon,style:Fn.icon}):null,a.createElement("div",{style:Fn.text,className:(g=s.moreClasses)==null?void 0:g.text},t==null?void 0:t.name))}function Gve({themeName:s,toggleTheme:e,t,className:i,style:r,size:o}){return a.createElement("div",{className:i||void 0,style:r||void 0},a.createElement(Le,{title:t("ra_Change color theme"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},a.createElement(W,{onClick:()=>e(),size:o||"medium"},s==="dark"&&a.createElement(Pj,{className:i}),s==="blue"&&a.createElement(Wj,{className:i}),s==="colored"&&a.createElement(tM,{className:i}),s!=="dark"&&s!=="blue"&&s!=="colored"&&a.createElement(Jj,{className:i}))))}function un(){return(un=Object.assign||function(s){for(var e=1;e=0||(r[t]=s[t]);return r}function ba(s){var e=et(s),t=et(function(i){e.current&&e.current(i)});return e.current=s,t.current}var yr=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),s>t?t:s0:T.buttons>0)&&r.current?o(sN(r.current,T,M.current)):y(!1)},j=function(){return y(!1)};function y(T){var d=c.current,I=Ua(r.current),w=T?I.addEventListener:I.removeEventListener;w(d?"touchmove":"mousemove",g),w(d?"touchend":"mouseup",j)}return[function(T){var d=T.nativeEvent,I=r.current;if(I&&(iN(d),!(function(A,p){return p&&!Mr(A)})(d,c.current)&&I)){if(Mr(d)){c.current=!0;var w=d.changedTouches||[];w.length&&(M.current=w[0].identifier)}I.focus(),o(sN(I,d,M.current)),y(!0)}},function(T){var d=T.which||T.keyCode;d<37||d>40||(T.preventDefault(),n({left:d===39?.05:d===37?-.05:0,top:d===40?.05:d===38?-.05:0}))},y]},[n,o]),N=l[0],u=l[1],L=l[2];return Ce(function(){return L},[L]),a.createElement("div",un({},i,{onTouchStart:N,onMouseDown:N,className:"react-colorful__interactive",ref:r,onKeyDown:u,tabIndex:0,role:"slider"}))}),gc=function(s){return s.filter(Boolean).join(" ")},Dg=function(s){var e=s.color,t=s.left,i=s.top,r=i===void 0?.5:i,o=gc(["react-colorful__pointer",s.className]);return a.createElement("div",{className:o,style:{top:100*r+"%",left:100*t+"%"}},a.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:e}}))},Se=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*s)/t},V5e=function(s){return eke($a(s))},$a=function(s){return s[0]==="#"&&(s=s.substring(1)),s.length<6?{r:parseInt(s[0]+s[0],16),g:parseInt(s[1]+s[1],16),b:parseInt(s[2]+s[2],16),a:s.length===4?Se(parseInt(s[3]+s[3],16)/255,2):1}:{r:parseInt(s.substring(0,2),16),g:parseInt(s.substring(2,4),16),b:parseInt(s.substring(4,6),16),a:s.length===8?Se(parseInt(s.substring(6,8),16)/255,2):1}},Z5e=function(s){return q5e(K5e(s))},X5e=function(s){var e=s.s,t=s.v,i=s.a,r=(200-e)*t/100;return{h:Se(s.h),s:Se(r>0&&r<200?e*t/100/(r<=100?r:200-r)*100:0),l:Se(r/2),a:Se(i,2)}},Pa=function(s){var e=X5e(s);return"hsl("+e.h+", "+e.s+"%, "+e.l+"%)"},K5e=function(s){var e=s.h,t=s.s,i=s.v,r=s.a;e=e/360*6,t/=100,i/=100;var o=Math.floor(e),n=i*(1-t),M=i*(1-(e-o)*t),c=i*(1-(1-e+o)*t),l=o%6;return{r:Se(255*[i,M,n,n,c,i][l]),g:Se(255*[c,i,i,M,n,n][l]),b:Se(255*[n,n,c,i,i,M][l]),a:Se(r,2)}},so=function(s){var e=s.toString(16);return e.length<2?"0"+e:e},q5e=function(s){var e=s.r,t=s.g,i=s.b,r=s.a,o=r<1?so(Se(255*r)):"";return"#"+so(e)+so(t)+so(i)+o},eke=function(s){var e=s.r,t=s.g,i=s.b,r=s.a,o=Math.max(e,t,i),n=o-Math.min(e,t,i),M=n?o===e?(t-i)/n:o===t?2+(i-e)/n:4+(e-t)/n:0;return{h:Se(60*(M<0?M+6:M)),s:Se(o?n/o*100:0),v:Se(o/255*100),a:r}},tke=a.memo(function(s){var e=s.hue,t=s.onChange,i=gc(["react-colorful__hue",s.className]);return a.createElement("div",{className:i},a.createElement(Tg,{onMove:function(r){t({h:360*r.left})},onKey:function(r){t({h:yr(e+360*r.left,0,360)})},"aria-label":"Hue","aria-valuenow":Se(e),"aria-valuemax":"360","aria-valuemin":"0"},a.createElement(Dg,{className:"react-colorful__hue-pointer",left:e/360,color:Pa({h:e,s:100,v:100,a:1})})))}),ske=a.memo(function(s){var e=s.hsva,t=s.onChange,i={backgroundColor:Pa({h:e.h,s:100,v:100,a:1})};return a.createElement("div",{className:"react-colorful__saturation",style:i},a.createElement(Tg,{onMove:function(r){t({s:100*r.left,v:100-100*r.top})},onKey:function(r){t({s:yr(e.s+100*r.left,0,100),v:yr(e.v-100*r.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+Se(e.s)+"%, Brightness "+Se(e.v)+"%"},a.createElement(Dg,{className:"react-colorful__saturation-pointer",top:1-e.v/100,left:e.s/100,color:Pa(e)})))}),dg=function(s,e){if(s===e)return!0;for(var t in s)if(s[t]!==e[t])return!1;return!0},ike=function(s,e){return s.toLowerCase()===e.toLowerCase()||dg($a(s),$a(e))};function rke(s,e,t){var i=ba(t),r=qa(function(){return s.toHsva(e)}),o=r[0],n=r[1],M=et({color:e,hsva:o});Ce(function(){if(!s.equal(e,M.current.color)){var l=s.toHsva(e);M.current={hsva:l,color:e},n(l)}},[e,s]),Ce(function(){var l;dg(o,M.current.hsva)||s.equal(l=s.fromHsva(o),M.current.color)||(M.current={hsva:o,color:l},i(l))},[o,s,i]);var c=Kt(function(l){n(function(N){return Object.assign({},N,l)})},[]);return[o,c]}var oke=typeof window<"u"?Wg:Ce,nke=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},rN=new Map,ake=function(s){oke(function(){var e=s.current?s.current.ownerDocument:document;if(e!==void 0&&!rN.has(e)){var t=e.createElement("style");t.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,rN.set(e,t);var i=nke();i&&t.setAttribute("nonce",i),e.head.appendChild(t)}},[])},Mke=function(s){var e=s.className,t=s.colorModel,i=s.color,r=i===void 0?t.defaultColor:i,o=s.onChange,n=yg(s,["className","colorModel","color","onChange"]),M=et(null);ake(M);var c=rke(t,r,o),l=c[0],N=c[1],u=gc(["react-colorful",e]);return a.createElement("div",un({},n,{ref:M,className:u}),a.createElement(ske,{hsva:l,onChange:N}),a.createElement(tke,{hue:l.h,onChange:N,className:"react-colorful__last-control"}))},cke={defaultColor:"000",toHsva:V5e,fromHsva:function(s){return Z5e({h:s.h,s:s.s,v:s.v,a:1})},equal:ike},uke=function(s){return a.createElement(Mke,un({},s,{colorModel:cke}))};class lke extends De{dialogName;filters;filterFunc;constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName=`SelectID.${this.dialogName}`;const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch{this.filters={}}e.filters&&(this.filters={...this.filters,...e.filters||{}});let i=this.props.selected||[];if(Array.isArray(i)||(i=[i]),i=i.filter(r=>r),e.filterFunc)if(typeof e.filterFunc=="string")try{this.filterFunc=new Function("obj",e.filterFunc)}catch{console.error(`Cannot parse filter function: "obj => ${e.filterFunc}"`),this.filterFunc=void 0}else this.filterFunc=e.filterFunc;this.state={selected:i,name:"",selectionBlocked:!1}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect?this.state.selected:this.state.selected[0]||"",this.state.name),this.props.onClose()}render(){let e;return this.state.name||this.state.selected.length?this.state.selected.length===1?e=[a.createElement("span",{key:"selected"},D.t("ra_Selected")," "),a.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},(this.state.name||this.state.selected[0])+(this.state.name?` [${this.state.selected[0]}]`:""))]:e=[a.createElement("span",{key:"selected"},D.t("ra_Selected")," "),a.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},D.t("%s items",this.state.selected.length.toString()))]:e=this.props.title||D.t("ra_Please select object ID..."),a.createElement(Ae,{onClose:()=>{},maxWidth:!1,style:{zIndex:this.props.zIndex||void 0},sx:{"& .MuiDialog-paper":{height:"95%",p:"4px",width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)"}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectid_title"},a.createElement(fe,{id:"ar_dialog_selectid_title",style:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}},e),a.createElement(_e,{style:{height:"100%",overflow:"hidden",padding:"8px 4px"}},a.createElement(H5e,{foldersFirst:this.props.foldersFirst,imagePrefix:this.props.imagePrefix||this.props.prefix,dateFormat:this.props.dateFormat,defaultFilters:this.filters,dialogName:this.dialogName,isFloatComma:this.props.isFloatComma,showExpertButton:this.props.showExpertButton!==void 0?this.props.showExpertButton:!0,expertMode:this.props.expertMode,columns:this.props.columns||["name","type","role","room","func","val"],types:this.props.types?Array.isArray(this.props.types)?this.props.types:[this.props.types]:["state"],root:this.props.root,t:D.t,lang:this.props.lang||D.getLanguage(),socket:this.props.socket,selected:this.state.selected,multiSelect:this.props.multiSelect,notEditable:this.props.notEditable===void 0?!0:this.props.notEditable,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,customFilter:this.props.customFilter,allowNonObjects:this.props.allowNonObjects,onFilterChanged:t=>{this.filters=t,(window._localStorage||window.localStorage).setItem(this.dialogName,JSON.stringify(t))},onSelect:async(t,i,r)=>{let o;if(Array.isArray(t)?o=t:o=[t],JSON.stringify(o)!==JSON.stringify(this.state.selected)){let n=!0;if(this.props.onSelectConfirm){const M={};for(const c of o)try{M[c]=await this.props.socket.getObject(c)}catch{}n=await this.props.onSelectConfirm(o,M)}this.setState({selected:o,name:i,selectionBlocked:!n},()=>r&&this.handleOk())}else r&&this.handleOk()},filterFunc:this.filterFunc,title:"",onAllLoaded:()=>this.setState({allLoaded:!0})})),a.createElement(xe,null,a.createElement(q,{id:`ar_dialog_selectid_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),startIcon:a.createElement(We,null),disabled:!this.state.allLoaded||!this.state.selected.length||this.state.selectionBlocked,color:"primary"},this.props.ok||D.t("ra_Ok")),a.createElement(q,{id:`ar_dialog_selectid_cancel_${this.props.dialogName||""}`,color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}function is(s,e,t){if(typeof e=="string"&&(e=e.split(".")),!s)return null;if(e.length===1)return t&&t[s[e[0]]]?t[s[e[0]]]:s[e[0]];const i=e.shift();return is(s[i],e)}function hg(s,e,t){if(typeof e=="string"&&(e=e.split(".")),e.length===1)return s[e[0]]=t;const i=e.shift();return(s[i]===null||s[i]===void 0)&&(s[i]={}),hg(s[i],e,t)}const B={tableContainer:{width:"100%",height:"100%",overflow:"auto"},table:{width:"100%",minWidth:800,maxWidth:1920},cell:{paddingTop:0,paddingBottom:0,paddingLeft:4,paddingRight:4},rowMainWithChildren:{},rowMainWithoutChildren:{},rowNoEdit:{opacity:.3},cellExpand:{width:30},cellButton:{width:30},cellHeader:{fontWeight:"bold",background:s=>(s.palette.mode==="dark","#888"),color:s=>s.palette.mode==="dark"?"#EEE":"#111",height:48,wordBreak:"break-word",whiteSpace:"pre"},width_name_nicknames:{maxWidth:150},width_ioType:{maxWidth:100},width_type:{maxWidth:100},width_displayTraits:{maxWidth:100},width_roomHint:{maxWidth:100},rowSecondary:{fontStyle:"italic"},cellSecondary:{fontSize:10},visuallyHidden:{border:0,clip:"rect(0 0 0 0)",height:1,margin:-1,overflow:"hidden",padding:0,position:"absolute",top:20,width:1},fieldEditWithButton:{width:"calc(100% - 33px)",display:"inline-block"},fieldEdit:{width:"100%",display:"inline-block",lineHeight:"50px",verticalAlign:"middle"},fieldButton:{width:30,display:"inline-block"},colorDialog:{overflow:"hidden",padding:15},subText:{fontSize:10,fontStyle:"italic"},glow:{animation:"glow 0.2s 2 alternate"}};function oN(s,e,t,i){const r=is(s,t,i)||"",o=is(e,t,i)||"";return or?1:0}function Nke(s,e,t){return s==="desc"?(i,r)=>oN(i,r,e,t):(i,r)=>-oN(i,r,e,t)}function Lke(s,e){const t=s.map((i,r)=>({e:i,i:r}));return t.sort((i,r)=>{const o=e(i.e,r.e);return o||i.i-r.i}),t.map(i=>i.e)}class Wa extends De{selectCallback=null;updateTimeout=null;constructor(e){super(e);let t=(window._localStorage||window.localStorage).getItem(this.props.name||"iob-table")||"[]";try{t=JSON.parse(t)||[]}catch{t=[]}Array.isArray(t)||(t=[]),this.state={opened:t,editMode:!1,deleteMode:!1,editData:null,order:"asc",update:null,orderBy:this.props.columns[0].field,showSelectColor:!1}}componentWillUnmount(){this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null)}static getDerivedStateFromProps(e,t){if(e.glowOnChange){const i=[];let r=0;return e.data&&t.data&&e.data.forEach(o=>{var M;r++;const n=(M=t.data)==null?void 0:M.find(c=>c.id===o.id);n?JSON.stringify(n)!==JSON.stringify(o)&&i.push(o.id):i.push(o.id)}),i.length&&i.length!==r?{data:e.data,update:i}:{data:e.data}}return{data:e.data}}renderCellEdit(e,t){let i=is(e,t.field);return Array.isArray(i)&&(i=i[0]),t.lookup?this.renderCellEditSelect(t,i):t.editComponent?this.renderCellEditCustom(t,i,e):t.type==="boolean"||!t.type&&typeof i=="boolean"?this.renderCellEditBoolean(t,i):t.type==="color"?this.renderCellEditColor(t,i):t.type==="oid"?this.renderCellEditObjectID(t,i):t.type==="numeric"?this.renderCellEditNumber(t,i):this.renderCellEditString(t,i)}onChange(e,t,i){const r=this.state.editData?{...this.state.editData}:{};i===t?delete r[e.field]:r[e.field]=i,this.setState({editData:r})}renderCellEditSelect(e,t){return a.createElement(nt,{variant:"standard",onChange:i=>this.onChange(e,t,i.target.value),value:this.state.editData&&this.state.editData[e.field]||t},e.lookup&&Object.keys(e.lookup).map((i,r)=>{var o;return a.createElement(re,{key:r,value:i},(o=e.lookup)==null?void 0:o[i])}))}renderCellEditString(e,t){return a.createElement(Te,{variant:"standard",style:B.fieldEdit,fullWidth:!0,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:i=>this.onChange(e,t,i.target.value)})}renderCellEditNumber(e,t){return a.createElement(Te,{variant:"standard",style:B.fieldEdit,type:"number",fullWidth:!0,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:i=>this.onChange(e,t,i.target.value)})}renderCellEditCustom(e,t,i){const r=e.editComponent;return this.state.editData&&this.state.editData[e.field]!==void 0&&(t=this.state.editData[e.field],i=JSON.parse(JSON.stringify(i)),i[e.field]=t),r?a.createElement(r,{value:t,rowData:i,onChange:o=>this.onChange(e,t,o)}):null}renderCellEditBoolean(e,t){return a.createElement(ue,{checked:this.state.editData&&this.state.editData[e.field]!==void 0?!!this.state.editData[e.field]:!!t,onChange:i=>this.onChange(e,!!t,i.target.checked),inputProps:{"aria-label":"checkbox"}})}renderSelectColorDialog(){return a.createElement(Ae,{sx:{"& .MuiPaper-root":B.root,"& .MuiPaper-paper":B.paper},onClose:()=>{this.selectCallback=null,this.setState({showSelectColor:!1})},open:this.state.showSelectColor},a.createElement(uke,{color:this.state.selectIdValue,onChange:e=>this.setState({selectIdValue:e},()=>{this.selectCallback&&this.selectCallback(e)})}))}renderCellEditColor(e,t){const i=this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t;return a.createElement("div",{style:B.fieldEdit},a.createElement(Te,{variant:"standard",fullWidth:!0,style:B.fieldEditWithButton,value:i,inputProps:{style:{backgroundColor:i,color:m.isUseBright(i)?"#FFF":"#000"}},onChange:r=>this.onChange(e,!!t,r.target.value)}),a.createElement(W,{style:B.fieldButton,onClick:()=>{this.selectCallback=r=>this.onChange(e,t,r),this.setState({showSelectColor:!0,selectIdValue:t})},size:"large"},a.createElement(Fj,null)))}renderSelectIdDialog(){return this.state.showSelectId&&this.props.socket?a.createElement(lke,{key:"tableSelect",imagePrefix:"../..",dialogName:this.props.adapterName,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,selected:this.state.selectIdValue,onClose:()=>this.setState({showSelectId:!1}),onOk:e=>{this.setState({showSelectId:!1,selectIdValue:null});const t=Array.isArray(e)?e[0]:e;t&&this.selectCallback&&(this.selectCallback&&this.selectCallback(t),this.selectCallback=null)}}):null}renderCellEditObjectID(e,t){return a.createElement("div",{style:B.fieldEdit},a.createElement(Te,{variant:"standard",fullWidth:!0,style:B.fieldEditWithButton,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:i=>this.onChange(e,t,i.target.value)}),a.createElement(W,{style:B.fieldButton,onClick:()=>{this.selectCallback=i=>this.onChange(e,t,i),this.setState({showSelectId:!0,selectIdValue:t})},size:"large"},a.createElement(wy,null)))}static renderCellNonEdit(e,t){let i=is(e,t.field,t.lookup);return Array.isArray(i)&&(i=i[0]),t.type==="boolean"?a.createElement(ue,{checked:!!i,disabled:!0,inputProps:{"aria-label":"checkbox"}}):i}renderCell(e,t,i,r){return this.state.editMode===r&&t.editable!=="never"&&t.editable!==!1?a.createElement(it,{key:t.field,style:{...B.cell,...i?B.cellSecondary:void 0,...t.cellStyle},component:"th"},this.renderCellEdit(e,t)):a.createElement(it,{key:t.field,style:{...B.cell,...i?B.cellSecondary:void 0,...t.cellStyle},component:"th"},Wa.renderCellNonEdit(e,t))}static renderCellWithSubField(e,t){const i=is(e,t.field,t.lookup);if(t.subField){const r=is(e,t.subField,t.subLookup);return a.createElement("div",null,a.createElement("div",{style:B.mainText},i),a.createElement("div",{style:{...B.subText,...t.subStyle||void 0}},r))}return a.createElement("div",null,a.createElement("div",{style:B.mainText},i))}renderLine(e,t){const i=this.props.levelShift===void 0?24:this.props.levelShift;t=t||0;const r=this.props.data.indexOf(e);if(!e||!t&&e.parentId||t&&!e.parentId)return null;const o=this.state.opened.includes(e.id),n=this.props.data.filter(c=>c.parentId===e.id),M=a.createElement(vc,{key:e.id,className:`table-row-${(e.id||"").toString().replace(/[.$]/g,"_")}`,style:{...this.state.update&&this.state.update.includes(e.id)&&B.glow||void 0,...B.row,...t?B.rowSecondary:void 0,...!t&&n.length?B.rowMainWithChildren:void 0,...!t&&!n.length?B.rowMainWithoutChildren:void 0,...this.state.editMode!==!1&&this.state.editMode!==r?B.rowNoEdit:void 0,...this.state.deleteMode!==!1&&this.state.deleteMode!==r?B.rowNoEdit:void 0}},a.createElement(it,{style:{...B.cell,...B.cellExpand,...t?B.cellSecondary:void 0}},n.length?a.createElement(W,{onClick:()=>{const c=[...this.state.opened],l=c.indexOf(e.id);l===-1?(c.push(e.id),c.sort()):c.splice(l,1),(window._localStorage||window.localStorage).setItem(this.props.name||"iob-table",JSON.stringify(c)),this.setState({opened:c})},size:"small"},o?a.createElement(qj,null):a.createElement(ly,null)):null),a.createElement(it,{scope:"row",style:{...B.cell,...t?B.cellSecondary:void 0,...this.props.columns[0].cellStyle,paddingLeft:i*t}},this.props.columns[0].subField?Wa.renderCellWithSubField(e,this.props.columns[0]):is(e,this.props.columns[0].field,this.props.columns[0].lookup)),this.props.columns.map((c,l)=>!l&&!c.hidden?null:this.renderCell(e,c,t,r)),this.props.onUpdate?a.createElement(it,{style:{...B.cell,...B.cellButton}},this.state.editMode===r||this.state.deleteMode===r?a.createElement(W,{disabled:this.state.editMode!==!1&&(!this.state.editData||!Object.keys(this.state.editData).length),onClick:()=>{if(this.state.editMode!==!1){const c=JSON.parse(JSON.stringify(e));this.state.editData&&Object.keys(this.state.editData).forEach(l=>{var N;return hg(c,l,(N=this.state.editData)==null?void 0:N[l])}),this.setState({editMode:!1},()=>this.props.onUpdate&&this.props.onUpdate(c,e))}else this.setState({deleteMode:!1},()=>this.props.onDelete&&this.props.onDelete(e))},size:"large"},a.createElement(We,null)):a.createElement(W,{disabled:this.state.editMode!==!1,onClick:()=>this.setState({editMode:r,editData:null}),size:"large"},a.createElement(or,null))):null,this.props.onDelete&&!this.props.onUpdate?a.createElement(it,{style:{...B.cell,...B.cellButton}},this.state.deleteMode===r?a.createElement(W,{disabled:this.state.editMode!==!1&&(!this.state.editData||!Object.keys(this.state.editData).length),onClick:()=>this.setState({deleteMode:!1},()=>this.props.onDelete&&this.props.onDelete(e)),size:"large"},a.createElement(We,null)):null):null,this.props.onUpdate||this.props.onDelete?a.createElement(it,{style:{...B.cell,...B.cellButton}},this.state.editMode===r||this.state.deleteMode===r?a.createElement(W,{onClick:()=>this.setState({editMode:!1,deleteMode:!1}),size:"large"},a.createElement(we,null)):this.props.onDelete?a.createElement(W,{disabled:this.state.deleteMode!==!1,onClick:()=>this.setState({deleteMode:r}),size:"large"},a.createElement(wt,null)):null):null);if(!t&&o){const c=n.map(l=>this.renderLine(l,t+1));return c.unshift(M),c}return M}handleRequestSort(e){const t=this.state.orderBy===e&&this.state.order==="asc";this.setState({order:t?"desc":"asc",orderBy:e})}renderHead(){return a.createElement(Kg,null,a.createElement(vc,{key:"headerRow"},a.createElement(it,{component:"th",sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B.cellExpand)}),a.createElement(it,{component:"th",sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B[`width_${this.props.columns[0].field.replace(/\./g,"_")}`]),style:this.props.columns[0].headerStyle||this.props.columns[0].cellStyle,sortDirection:this.props.noSort?!1:this.state.orderBy===this.props.columns[0].field?this.state.order:!1},this.props.noSort?null:a.createElement(Yc,{active:this.state.orderBy===this.props.columns[0].field,direction:this.state.orderBy===this.props.columns[0].field?this.state.order:"asc",onClick:()=>this.handleRequestSort(this.props.columns[0].field)},this.props.columns[0].title||this.props.columns[0].field,this.state.orderBy===this.props.columns[0].field?a.createElement("span",{style:B.visuallyHidden},this.state.order==="desc"?"sorted descending":"sorted ascending"):null)),this.props.columns.map((e,t)=>!t&&!e.hidden?null:a.createElement(it,{key:e.field,sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B[`width_${e.field.replace(/\./g,"_")}`]),style:e.headerStyle||e.cellStyle,component:"th"},this.props.noSort?null:a.createElement(Yc,{active:this.state.orderBy===e.field,direction:this.state.orderBy===e.field?this.state.order:"asc",onClick:()=>this.handleRequestSort(e.field)},e.title||e.field,this.state.orderBy===e.field?a.createElement("span",{style:B.visuallyHidden},this.state.order==="desc"?"sorted descending":"sorted ascending"):null))),this.props.onUpdate?a.createElement(it,{component:"th",sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B.cellButton)},this.props.noAdd?null:a.createElement(bt,{color:"primary",size:"small",disabled:this.state.editMode!==!1,onClick:()=>this.props.onUpdate&&this.props.onUpdate(!0)},a.createElement(qn,null))):null,this.props.onDelete||this.props.onUpdate?a.createElement(it,{component:"th",sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B.cellButton)}):null))}render(){const e=this.props.columns.find(t=>t.field===this.state.orderBy);if(e){const t=e.lookup,i=Lke(this.props.data,Nke(this.state.order,this.state.orderBy,t));return this.state.update&&this.state.update.length&&(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null,this.setState({update:null})},500)),a.createElement("div",{style:B.tableContainer,className:this.props.className},a.createElement(ON,{style:B.table,"aria-label":"simple table",size:"small",stickyHeader:!0},this.renderHead(),a.createElement(qg,null,i.map(r=>this.renderLine(r)))),this.renderSelectIdDialog(),this.renderSelectColorDialog())}return null}}function nN(s,e){var t=Object.keys(s);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(s);e&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(s,r).enumerable})),t.push.apply(t,i)}return t}function zg(s){for(var e=1;es.length)&&(e=s.length);for(var t=0,i=new Array(e);t
',_ke=Number.isNaN||pt.isNaN;function ee(s){return typeof s=="number"&&!_ke(s)}var dN=function(e){return e>0&&e<1/0};function Gn(s){return typeof s>"u"}function ms(s){return Ja(s)==="object"&&s!==null}var xke=Object.prototype.hasOwnProperty;function gi(s){if(!ms(s))return!1;try{var e=s.constructor,t=e.prototype;return e&&t&&xke.call(t,"isPrototypeOf")}catch{return!1}}function Fe(s){return typeof s=="function"}var Ske=Array.prototype.slice;function _g(s){return Array.from?Array.from(s):Ske.call(s)}function pe(s,e){return s&&Fe(e)&&(Array.isArray(s)||ee(s.length)?_g(s).forEach(function(t,i){e.call(s,t,i,s)}):ms(s)&&Object.keys(s).forEach(function(t){e.call(s,s[t],t,s)})),s}var ye=Object.assign||function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r0&&i.forEach(function(o){ms(o)&&Object.keys(o).forEach(function(n){e[n]=o[n]})}),e},kke=/\.\d*(?:0|9){12}\d*$/;function Di(s){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return kke.test(s)?Math.round(s*e)/e:s}var vke=/^width|height|left|top|marginLeft|marginTop$/;function os(s,e){var t=s.style;pe(e,function(i,r){vke.test(r)&&ee(i)&&(i="".concat(i,"px")),t[r]=i})}function Yke(s,e){return s.classList?s.classList.contains(e):s.className.indexOf(e)>-1}function me(s,e){if(e){if(ee(s.length)){pe(s,function(i){me(i,e)});return}if(s.classList){s.classList.add(e);return}var t=s.className.trim();t?t.indexOf(e)<0&&(s.className="".concat(t," ").concat(e)):s.className=e}}function Ct(s,e){if(e){if(ee(s.length)){pe(s,function(t){Ct(t,e)});return}if(s.classList){s.classList.remove(e);return}s.className.indexOf(e)>=0&&(s.className=s.className.replace(e,""))}}function ji(s,e,t){if(e){if(ee(s.length)){pe(s,function(i){ji(i,e,t)});return}t?me(s,e):Ct(s,e)}}var Qke=/([a-z\d])([A-Z])/g;function dc(s){return s.replace(Qke,"$1-$2").toLowerCase()}function Ka(s,e){return ms(s[e])?s[e]:s.dataset?s.dataset[e]:s.getAttribute("data-".concat(dc(e)))}function Dr(s,e,t){ms(t)?s[e]=t:s.dataset?s.dataset[e]=t:s.setAttribute("data-".concat(dc(e)),t)}function bke(s,e){if(ms(s[e]))try{delete s[e]}catch{s[e]=void 0}else if(s.dataset)try{delete s.dataset[e]}catch{s.dataset[e]=void 0}else s.removeAttribute("data-".concat(dc(e)))}var xg=/\s\s*/,Sg=(function(){var s=!1;if(ln){var e=!1,t=function(){},i=Object.defineProperty({},"once",{get:function(){return s=!0,e},set:function(o){e=o}});pt.addEventListener("test",t,i),pt.removeEventListener("test",t,i)}return s})();function lt(s,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=t;e.trim().split(xg).forEach(function(o){if(!Sg){var n=s.listeners;n&&n[o]&&n[o][t]&&(r=n[o][t],delete n[o][t],Object.keys(n[o]).length===0&&delete n[o],Object.keys(n).length===0&&delete s.listeners)}s.removeEventListener(o,r,i)})}function rt(s,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=t;e.trim().split(xg).forEach(function(o){if(i.once&&!Sg){var n=s.listeners,M=n===void 0?{}:n;r=function(){delete M[o][t],s.removeEventListener(o,r,i);for(var l=arguments.length,N=new Array(l),u=0;uMath.abs(t)&&(t=L)})}),t}function ro(s,e){var t=s.pageX,i=s.pageY,r={endX:t,endY:i};return e?r:zg({startX:t,startY:i},r)}function Pke(s){var e=0,t=0,i=0;return pe(s,function(r){var o=r.startX,n=r.startY;e+=o,t+=n,i+=1}),e/=i,t/=i,{pageX:e,pageY:t}}function ns(s){var e=s.aspectRatio,t=s.height,i=s.width,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",o=dN(i),n=dN(t);if(o&&n){var M=t*e;r==="contain"&&M>i||r==="cover"&&M90?{width:c,height:M}:{width:M,height:c}}function Jke(s,e,t,i){var r=e.aspectRatio,o=e.naturalWidth,n=e.naturalHeight,M=e.rotate,c=M===void 0?0:M,l=e.scaleX,N=l===void 0?1:l,u=e.scaleY,L=u===void 0?1:u,g=t.aspectRatio,j=t.naturalWidth,y=t.naturalHeight,T=i.fillColor,d=T===void 0?"transparent":T,I=i.imageSmoothingEnabled,w=I===void 0?!0:I,A=i.imageSmoothingQuality,p=A===void 0?"low":A,h=i.maxWidth,C=h===void 0?1/0:h,E=i.maxHeight,O=E===void 0?1/0:E,b=i.minWidth,k=b===void 0?0:b,K=i.minHeight,x=K===void 0?0:K,S=document.createElement("canvas"),R=S.getContext("2d"),he=ns({aspectRatio:g,width:C,height:O}),Xe=ns({aspectRatio:g,width:k,height:x},"cover"),ct=Math.min(he.width,Math.max(Xe.width,j)),bs=Math.min(he.height,Math.max(Xe.height,y)),Nn=ns({aspectRatio:r,width:C,height:O}),bi=ns({aspectRatio:r,width:k,height:x},"cover"),Ui=Math.min(Nn.width,Math.max(bi.width,o)),$i=Math.min(Nn.height,Math.max(bi.height,n)),Yr=[-Ui/2,-$i/2,Ui,$i];return S.width=Di(ct),S.height=Di(bs),R.fillStyle=d,R.fillRect(0,0,ct,bs),R.save(),R.translate(ct/2,bs/2),R.rotate(c*Math.PI/180),R.scale(N,L),R.imageSmoothingEnabled=w,R.imageSmoothingQuality=p,R.drawImage.apply(R,[s].concat(Ig(Yr.map(function(Qr){return Math.floor(Di(Qr))})))),R.restore(),S}var vg=String.fromCharCode;function Bke(s,e,t){var i="";t+=e;for(var r=e;r0;)t.push(vg.apply(null,_g(r.subarray(0,i)))),r=r.subarray(i);return"data:".concat(e,";base64,").concat(btoa(t.join("")))}function Hke(s){var e=new DataView(s),t;try{var i,r,o;if(e.getUint8(0)===255&&e.getUint8(1)===216)for(var n=e.byteLength,M=2;M+1=8&&(o=l+u)}}}if(o){var L=e.getUint16(o,i),g,j;for(j=0;j=0?o:Og),height:Math.max(i.offsetHeight,n>=0?n:Eg)};this.containerData=M,os(r,{width:M.width,height:M.height}),me(e,Ge),Ct(r,Ge)},initCanvas:function(){var e=this.containerData,t=this.imageData,i=this.options.viewMode,r=Math.abs(t.rotate)%180===90,o=r?t.naturalHeight:t.naturalWidth,n=r?t.naturalWidth:t.naturalHeight,M=o/n,c=e.width,l=e.height;e.height*M>e.width?i===3?c=e.height*M:l=e.width/M:i===3?l=e.width/M:c=e.height*M;var N={aspectRatio:M,naturalWidth:o,naturalHeight:n,width:c,height:l};this.canvasData=N,this.limited=i===1||i===2,this.limitCanvas(!0,!0),N.width=Math.min(Math.max(N.width,N.minWidth),N.maxWidth),N.height=Math.min(Math.max(N.height,N.minHeight),N.maxHeight),N.left=(e.width-N.width)/2,N.top=(e.height-N.height)/2,N.oldLeft=N.left,N.oldTop=N.top,this.initialCanvasData=ye({},N)},limitCanvas:function(e,t){var i=this.options,r=this.containerData,o=this.canvasData,n=this.cropBoxData,M=i.viewMode,c=o.aspectRatio,l=this.cropped&&n;if(e){var N=Number(i.minCanvasWidth)||0,u=Number(i.minCanvasHeight)||0;M>1?(N=Math.max(N,r.width),u=Math.max(u,r.height),M===3&&(u*c>N?N=u*c:u=N/c)):M>0&&(N?N=Math.max(N,l?n.width:0):u?u=Math.max(u,l?n.height:0):l&&(N=n.width,u=n.height,u*c>N?N=u*c:u=N/c));var L=ns({aspectRatio:c,width:N,height:u});N=L.width,u=L.height,o.minWidth=N,o.minHeight=u,o.maxWidth=1/0,o.maxHeight=1/0}if(t)if(M>(l?0:1)){var g=r.width-o.width,j=r.height-o.height;o.minLeft=Math.min(0,g),o.minTop=Math.min(0,j),o.maxLeft=Math.max(0,g),o.maxTop=Math.max(0,j),l&&this.limited&&(o.minLeft=Math.min(n.left,n.left+(n.width-o.width)),o.minTop=Math.min(n.top,n.top+(n.height-o.height)),o.maxLeft=n.left,o.maxTop=n.top,M===2&&(o.width>=r.width&&(o.minLeft=Math.min(0,g),o.maxLeft=Math.max(0,g)),o.height>=r.height&&(o.minTop=Math.min(0,j),o.maxTop=Math.max(0,j))))}else o.minLeft=-o.width,o.minTop=-o.height,o.maxLeft=r.width,o.maxTop=r.height},renderCanvas:function(e,t){var i=this.canvasData,r=this.imageData;if(t){var o=Wke({width:r.naturalWidth*Math.abs(r.scaleX||1),height:r.naturalHeight*Math.abs(r.scaleY||1),degree:r.rotate||0}),n=o.width,M=o.height,c=i.width*(n/i.naturalWidth),l=i.height*(M/i.naturalHeight);i.left-=(c-i.width)/2,i.top-=(l-i.height)/2,i.width=c,i.height=l,i.aspectRatio=n/M,i.naturalWidth=n,i.naturalHeight=M,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heightt.width?o.height=o.width/i:o.width=o.height*i),this.cropBoxData=o,this.limitCropBox(!0,!0),o.width=Math.min(Math.max(o.width,o.minWidth),o.maxWidth),o.height=Math.min(Math.max(o.height,o.minHeight),o.maxHeight),o.width=Math.max(o.minWidth,o.width*r),o.height=Math.max(o.minHeight,o.height*r),o.left=t.left+(t.width-o.width)/2,o.top=t.top+(t.height-o.height)/2,o.oldLeft=o.left,o.oldTop=o.top,this.initialCropBoxData=ye({},o)},limitCropBox:function(e,t){var i=this.options,r=this.containerData,o=this.canvasData,n=this.cropBoxData,M=this.limited,c=i.aspectRatio;if(e){var l=Number(i.minCropBoxWidth)||0,N=Number(i.minCropBoxHeight)||0,u=M?Math.min(r.width,o.width,o.width+o.left,r.width-o.left):r.width,L=M?Math.min(r.height,o.height,o.height+o.top,r.height-o.top):r.height;l=Math.min(l,r.width),N=Math.min(N,r.height),c&&(l&&N?N*c>l?N=l/c:l=N*c:l?N=l/c:N&&(l=N*c),L*c>u?L=u/c:u=L*c),n.minWidth=Math.min(l,u),n.minHeight=Math.min(N,L),n.maxWidth=u,n.maxHeight=L}t&&(M?(n.minLeft=Math.max(0,o.left),n.minTop=Math.max(0,o.top),n.maxLeft=Math.min(r.width,o.left+o.width)-n.width,n.maxTop=Math.min(r.height,o.top+o.height)-n.height):(n.minLeft=0,n.minTop=0,n.maxLeft=r.width-n.width,n.maxTop=r.height-n.height))},renderCropBox:function(){var e=this.options,t=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=t.width&&i.height>=t.height?pg:Tc),os(this.cropBox,ye({width:i.width,height:i.height},cr({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),di(this.element,Ga,this.getData())}},Xke={initPreview:function(){var e=this.element,t=this.crossOrigin,i=this.options.preview,r=t?this.crossOriginUrl:this.url,o=e.alt||"The image to preview",n=document.createElement("img");if(t&&(n.crossOrigin=t),n.src=r,n.alt=o,this.viewBox.appendChild(n),this.viewBoxImage=n,!!i){var M=i;typeof i=="string"?M=e.ownerDocument.querySelectorAll(i):i.querySelector&&(M=[i]),this.previews=M,pe(M,function(c){var l=document.createElement("img");Dr(c,io,{width:c.offsetWidth,height:c.offsetHeight,html:c.innerHTML}),t&&(l.crossOrigin=t),l.src=r,l.alt=o,l.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',c.innerHTML="",c.appendChild(l)})}},resetPreview:function(){pe(this.previews,function(e){var t=Ka(e,io);os(e,{width:t.width,height:t.height}),e.innerHTML=t.html,bke(e,io)})},preview:function(){var e=this.imageData,t=this.canvasData,i=this.cropBoxData,r=i.width,o=i.height,n=e.width,M=e.height,c=i.left-t.left-e.left,l=i.top-t.top-e.top;!this.cropped||this.disabled||(os(this.viewBoxImage,ye({width:n,height:M},cr(ye({translateX:-c,translateY:-l},e)))),pe(this.previews,function(N){var u=Ka(N,io),L=u.width,g=u.height,j=L,y=g,T=1;r&&(T=L/r,y=o*T),o&&y>g&&(T=g/o,j=r*T,y=g),os(N,{width:j,height:y}),os(N.getElementsByTagName("img")[0],ye({width:n*T,height:M*T},cr(ye({translateX:-c*T,translateY:-l*T},e))))}))}},Kke={bind:function(){var e=this.element,t=this.options,i=this.cropper;Fe(t.cropstart)&&rt(e,Za,t.cropstart),Fe(t.cropmove)&&rt(e,Va,t.cropmove),Fe(t.cropend)&&rt(e,Ha,t.cropend),Fe(t.crop)&&rt(e,Ga,t.crop),Fe(t.zoom)&&rt(e,Xa,t.zoom),rt(i,lN,this.onCropStart=this.cropStart.bind(this)),t.zoomable&&t.zoomOnWheel&&rt(i,yN,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),t.toggleDragModeOnDblclick&&rt(i,uN,this.onDblclick=this.dblclick.bind(this)),rt(e.ownerDocument,NN,this.onCropMove=this.cropMove.bind(this)),rt(e.ownerDocument,LN,this.onCropEnd=this.cropEnd.bind(this)),t.responsive&&rt(window,jN,this.onResize=this.resize.bind(this))},unbind:function(){var e=this.element,t=this.options,i=this.cropper;Fe(t.cropstart)&<(e,Za,t.cropstart),Fe(t.cropmove)&<(e,Va,t.cropmove),Fe(t.cropend)&<(e,Ha,t.cropend),Fe(t.crop)&<(e,Ga,t.crop),Fe(t.zoom)&<(e,Xa,t.zoom),lt(i,lN,this.onCropStart),t.zoomable&&t.zoomOnWheel&<(i,yN,this.onWheel,{passive:!1,capture:!0}),t.toggleDragModeOnDblclick&<(i,uN,this.onDblclick),lt(e.ownerDocument,NN,this.onCropMove),lt(e.ownerDocument,LN,this.onCropEnd),t.responsive&<(window,jN,this.onResize)}},qke={resize:function(){if(!this.disabled){var e=this.options,t=this.container,i=this.containerData,r=t.offsetWidth/i.width,o=t.offsetHeight/i.height,n=Math.abs(r-1)>Math.abs(o-1)?r:o;if(n!==1){var M,c;e.restore&&(M=this.getCanvasData(),c=this.getCropBoxData()),this.render(),e.restore&&(this.setCanvasData(pe(M,function(l,N){M[N]=l*n})),this.setCropBoxData(pe(c,function(l,N){c[N]=l*n})))}}},dblclick:function(){this.disabled||this.options.dragMode===fg||this.setDragMode(Yke(this.dragBox,Ra)?mg:Dc)},wheel:function(e){var t=this,i=Number(this.options.wheelZoomRatio)||.1,r=1;this.disabled||(e.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){t.wheeling=!1},50),e.deltaY?r=e.deltaY>0?1:-1:e.wheelDelta?r=-e.wheelDelta/120:e.detail&&(r=e.detail>0?1:-1),this.zoom(-r*i,e)))},cropStart:function(e){var t=e.buttons,i=e.button;if(!(this.disabled||(e.type==="mousedown"||e.type==="pointerdown"&&e.pointerType==="mouse")&&(ee(t)&&t!==1||ee(i)&&i!==0||e.ctrlKey))){var r=this.options,o=this.pointers,n;e.changedTouches?pe(e.changedTouches,function(M){o[M.identifier]=ro(M)}):o[e.pointerId||0]=ro(e),Object.keys(o).length>1&&r.zoomable&&r.zoomOnTouch?n=Ag:n=Ka(e.target,Tr),Ake.test(n)&&di(this.element,Za,{originalEvent:e,action:n})!==!1&&(e.preventDefault(),this.action=n,this.cropping=!1,n===Cg&&(this.cropping=!0,me(this.dragBox,So)))}},cropMove:function(e){var t=this.action;if(!(this.disabled||!t)){var i=this.pointers;e.preventDefault(),di(this.element,Va,{originalEvent:e,action:t})!==!1&&(e.changedTouches?pe(e.changedTouches,function(r){ye(i[r.identifier]||{},ro(r,!0))}):ye(i[e.pointerId||0]||{},ro(e,!0)),this.change(e))}},cropEnd:function(e){if(!this.disabled){var t=this.action,i=this.pointers;e.changedTouches?pe(e.changedTouches,function(r){delete i[r.identifier]}):delete i[e.pointerId||0],t&&(e.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,ji(this.dragBox,So,this.cropped&&this.options.modal)),di(this.element,Ha,{originalEvent:e,action:t}))}}},eve={change:function(e){var t=this.options,i=this.canvasData,r=this.containerData,o=this.cropBoxData,n=this.pointers,M=this.action,c=t.aspectRatio,l=o.left,N=o.top,u=o.width,L=o.height,g=l+u,j=N+L,y=0,T=0,d=r.width,I=r.height,w=!0,A;!c&&e.shiftKey&&(c=u&&L?u/L:1),this.limited&&(y=o.minLeft,T=o.minTop,d=y+Math.min(r.width,i.width,i.left+i.width),I=T+Math.min(r.height,i.height,i.top+i.height));var p=n[Object.keys(n)[0]],h={x:p.endX-p.startX,y:p.endY-p.startY},C=function(O){switch(O){case js:g+h.x>d&&(h.x=d-g);break;case ys:l+h.xI&&(h.y=I-j);break}};switch(M){case Tc:l+=h.x,N+=h.y;break;case js:if(h.x>=0&&(g>=d||c&&(N<=T||j>=I))){w=!1;break}C(js),u+=h.x,u<0&&(M=ys,u=-u,l-=u),c&&(L=u/c,N+=(o.height-L)/2);break;case Vt:if(h.y<=0&&(N<=T||c&&(l<=y||g>=d))){w=!1;break}C(Vt),L-=h.y,N+=h.y,L<0&&(M=Gs,L=-L,N-=L),c&&(u=L*c,l+=(o.width-u)/2);break;case ys:if(h.x<=0&&(l<=y||c&&(N<=T||j>=I))){w=!1;break}C(ys),u-=h.x,l+=h.x,u<0&&(M=js,u=-u,l-=u),c&&(L=u/c,N+=(o.height-L)/2);break;case Gs:if(h.y>=0&&(j>=I||c&&(l<=y||g>=d))){w=!1;break}C(Gs),L+=h.y,L<0&&(M=Vt,L=-L,N-=L),c&&(u=L*c,l+=(o.width-u)/2);break;case Hi:if(c){if(h.y<=0&&(N<=T||g>=d)){w=!1;break}C(Vt),L-=h.y,N+=h.y,u=L*c}else C(Vt),C(js),h.x>=0?gT&&(L-=h.y,N+=h.y):(L-=h.y,N+=h.y);u<0&&L<0?(M=Xi,L=-L,u=-u,N-=L,l-=u):u<0?(M=Vi,u=-u,l-=u):L<0&&(M=Zi,L=-L,N-=L);break;case Vi:if(c){if(h.y<=0&&(N<=T||l<=y)){w=!1;break}C(Vt),L-=h.y,N+=h.y,u=L*c,l+=o.width-u}else C(Vt),C(ys),h.x<=0?l>y?(u-=h.x,l+=h.x):h.y<=0&&N<=T&&(w=!1):(u-=h.x,l+=h.x),h.y<=0?N>T&&(L-=h.y,N+=h.y):(L-=h.y,N+=h.y);u<0&&L<0?(M=Zi,L=-L,u=-u,N-=L,l-=u):u<0?(M=Hi,u=-u,l-=u):L<0&&(M=Xi,L=-L,N-=L);break;case Xi:if(c){if(h.x<=0&&(l<=y||j>=I)){w=!1;break}C(ys),u-=h.x,l+=h.x,L=u/c}else C(Gs),C(ys),h.x<=0?l>y?(u-=h.x,l+=h.x):h.y>=0&&j>=I&&(w=!1):(u-=h.x,l+=h.x),h.y>=0?j=0&&(g>=d||j>=I)){w=!1;break}C(js),u+=h.x,L=u/c}else C(Gs),C(js),h.x>=0?g=0&&j>=I&&(w=!1):u+=h.x,h.y>=0?j0?M=h.y>0?Zi:Hi:h.x<0&&(l-=u,M=h.y>0?Xi:Vi),h.y<0&&(N-=L),this.cropped||(Ct(this.cropBox,Ge),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}w&&(o.width=u,o.height=L,o.left=l,o.top=N,this.action=M,this.renderCropBox()),pe(n,function(E){E.startX=E.endX,E.startY=E.endY})}},tve={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&me(this.dragBox,So),Ct(this.cropBox,Ge),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=ye({},this.initialImageData),this.canvasData=ye({},this.initialCanvasData),this.cropBoxData=ye({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(ye(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),Ct(this.dragBox,So),me(this.cropBox,Ge)),this},replace:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&e&&(this.isImg&&(this.element.src=e),t?(this.url=e,this.image.src=e,this.ready&&(this.viewBoxImage.src=e,pe(this.previews,function(i){i.getElementsByTagName("img")[0].src=e}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(e))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,Ct(this.cropper,MN)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,me(this.cropper,MN)),this},destroy:function(){var e=this.element;return e[ge]?(e[ge]=void 0,this.isImg&&this.replaced&&(e.src=this.originalUrl),this.uncreate(),this):this},move:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,i=this.canvasData,r=i.left,o=i.top;return this.moveTo(Gn(e)?e:r+Number(e),Gn(t)?t:o+Number(t))},moveTo:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,i=this.canvasData,r=!1;return e=Number(e),t=Number(t),this.ready&&!this.disabled&&this.options.movable&&(ee(e)&&(i.left=e,r=!0),ee(t)&&(i.top=t,r=!0),r&&this.renderCanvas(!0)),this},zoom:function(e,t){var i=this.canvasData;return e=Number(e),e<0?e=1/(1-e):e=1+e,this.zoomTo(i.width*e/i.naturalWidth,null,t)},zoomTo:function(e,t,i){var r=this.options,o=this.canvasData,n=o.width,M=o.height,c=o.naturalWidth,l=o.naturalHeight;if(e=Number(e),e>=0&&this.ready&&!this.disabled&&r.zoomable){var N=c*e,u=l*e;if(di(this.element,Xa,{ratio:e,oldRatio:n/c,originalEvent:i})===!1)return this;if(i){var L=this.pointers,g=kg(this.cropper),j=L&&Object.keys(L).length?Pke(L):{pageX:i.pageX,pageY:i.pageY};o.left-=(N-n)*((j.pageX-g.left-o.left)/n),o.top-=(u-M)*((j.pageY-g.top-o.top)/M)}else gi(t)&&ee(t.x)&&ee(t.y)?(o.left-=(N-n)*((t.x-o.left)/n),o.top-=(u-M)*((t.y-o.top)/M)):(o.left-=(N-n)/2,o.top-=(u-M)/2);o.width=N,o.height=u,this.renderCanvas(!0)}return this},rotate:function(e){return this.rotateTo((this.imageData.rotate||0)+Number(e))},rotateTo:function(e){return e=Number(e),ee(e)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=e%360,this.renderCanvas(!0,!0)),this},scaleX:function(e){var t=this.imageData.scaleY;return this.scale(e,ee(t)?t:1)},scaleY:function(e){var t=this.imageData.scaleX;return this.scale(ee(t)?t:1,e)},scale:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,i=this.imageData,r=!1;return e=Number(e),t=Number(t),this.ready&&!this.disabled&&this.options.scalable&&(ee(e)&&(i.scaleX=e,r=!0),ee(t)&&(i.scaleY=t,r=!0),r&&this.renderCanvas(!0,!0)),this},getData:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.options,i=this.imageData,r=this.canvasData,o=this.cropBoxData,n;if(this.ready&&this.cropped){n={x:o.left-r.left,y:o.top-r.top,width:o.width,height:o.height};var M=i.width/i.naturalWidth;if(pe(n,function(N,u){n[u]=N/M}),e){var c=Math.round(n.y+n.height),l=Math.round(n.x+n.width);n.x=Math.round(n.x),n.y=Math.round(n.y),n.width=l-n.x,n.height=c-n.y}}else n={x:0,y:0,width:0,height:0};return t.rotatable&&(n.rotate=i.rotate||0),t.scalable&&(n.scaleX=i.scaleX||1,n.scaleY=i.scaleY||1),n},setData:function(e){var t=this.options,i=this.imageData,r=this.canvasData,o={};if(this.ready&&!this.disabled&&gi(e)){var n=!1;t.rotatable&&ee(e.rotate)&&e.rotate!==i.rotate&&(i.rotate=e.rotate,n=!0),t.scalable&&(ee(e.scaleX)&&e.scaleX!==i.scaleX&&(i.scaleX=e.scaleX,n=!0),ee(e.scaleY)&&e.scaleY!==i.scaleY&&(i.scaleY=e.scaleY,n=!0)),n&&this.renderCanvas(!0,!0);var M=i.width/i.naturalWidth;ee(e.x)&&(o.left=e.x*M+r.left),ee(e.y)&&(o.top=e.y*M+r.top),ee(e.width)&&(o.width=e.width*M),ee(e.height)&&(o.height=e.height*M),this.setCropBoxData(o)}return this},getContainerData:function(){return this.ready?ye({},this.containerData):{}},getImageData:function(){return this.sized?ye({},this.imageData):{}},getCanvasData:function(){var e=this.canvasData,t={};return this.ready&&pe(["left","top","width","height","naturalWidth","naturalHeight"],function(i){t[i]=e[i]}),t},setCanvasData:function(e){var t=this.canvasData,i=t.aspectRatio;return this.ready&&!this.disabled&&gi(e)&&(ee(e.left)&&(t.left=e.left),ee(e.top)&&(t.top=e.top),ee(e.width)?(t.width=e.width,t.height=e.width/i):ee(e.height)&&(t.height=e.height,t.width=e.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var e=this.cropBoxData,t;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(e){var t=this.cropBoxData,i=this.options.aspectRatio,r,o;return this.ready&&this.cropped&&!this.disabled&&gi(e)&&(ee(e.left)&&(t.left=e.left),ee(e.top)&&(t.top=e.top),ee(e.width)&&e.width!==t.width&&(r=!0,t.width=e.width),ee(e.height)&&e.height!==t.height&&(o=!0,t.height=e.height),i&&(r?t.height=t.width/i:o&&(t.width=t.height*i)),this.renderCropBox()),this},getCroppedCanvas:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var t=this.canvasData,i=Jke(this.image,this.imageData,t,e);if(!this.cropped)return i;var r=this.getData(e.rounded),o=r.x,n=r.y,M=r.width,c=r.height,l=i.width/Math.floor(t.naturalWidth);l!==1&&(o*=l,n*=l,M*=l,c*=l);var N=M/c,u=ns({aspectRatio:N,width:e.maxWidth||1/0,height:e.maxHeight||1/0}),L=ns({aspectRatio:N,width:e.minWidth||0,height:e.minHeight||0},"cover"),g=ns({aspectRatio:N,width:e.width||(l!==1?i.width:M),height:e.height||(l!==1?i.height:c)}),j=g.width,y=g.height;j=Math.min(u.width,Math.max(L.width,j)),y=Math.min(u.height,Math.max(L.height,y));var T=document.createElement("canvas"),d=T.getContext("2d");T.width=Di(j),T.height=Di(y),d.fillStyle=e.fillColor||"transparent",d.fillRect(0,0,j,y);var I=e.imageSmoothingEnabled,w=I===void 0?!0:I,A=e.imageSmoothingQuality;d.imageSmoothingEnabled=w,A&&(d.imageSmoothingQuality=A);var p=i.width,h=i.height,C=o,E=n,O,b,k,K,x,S;C<=-M||C>p?(C=0,O=0,k=0,x=0):C<=0?(k=-C,C=0,O=Math.min(p,M+C),x=O):C<=p&&(k=0,O=Math.min(M,p-C),x=O),O<=0||E<=-c||E>h?(E=0,b=0,K=0,S=0):E<=0?(K=-E,E=0,b=Math.min(h,c+E),S=b):E<=h&&(K=0,b=Math.min(c,h-E),S=b);var R=[C,E,O,b];if(x>0&&S>0){var he=j/M;R.push(k*he,K*he,x*he,S*he)}return d.drawImage.apply(d,[i].concat(Ig(R.map(function(Xe){return Math.floor(Di(Xe))})))),T},setAspectRatio:function(e){var t=this.options;return!this.disabled&&!Gn(e)&&(t.aspectRatio=Math.max(0,e)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(e){var t=this.options,i=this.dragBox,r=this.face;if(this.ready&&!this.disabled){var o=e===Dc,n=t.movable&&e===mg;e=o||n?e:fg,t.dragMode=e,Dr(i,Tr,e),ji(i,Ra,o),ji(i,Fa,n),t.cropBoxMovable||(Dr(r,Tr,e),ji(r,Ra,o),ji(r,Fa,n))}return this}},sve=pt.Cropper,Yg=(function(){function s(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(jke(this,s),!e||!Oke.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=ye({},DN,gi(t)&&t),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return yke(s,[{key:"init",value:function(){var t=this.element,i=t.tagName.toLowerCase(),r;if(!t[ge]){if(t[ge]=this,i==="img"){if(this.isImg=!0,r=t.getAttribute("src")||"",this.originalUrl=r,!r)return;r=t.src}else i==="canvas"&&window.HTMLCanvasElement&&(r=t.toDataURL());this.load(r)}}},{key:"load",value:function(t){var i=this;if(t){this.url=t,this.imageData={};var r=this.element,o=this.options;if(!o.rotatable&&!o.scalable&&(o.checkOrientation=!1),!o.checkOrientation||!window.ArrayBuffer){this.clone();return}if(mke.test(t)){fke.test(t)?this.read(Fke(t)):this.clone();return}var n=new XMLHttpRequest,M=this.clone.bind(this);this.reloading=!0,this.xhr=n,n.onabort=M,n.onerror=M,n.ontimeout=M,n.onprogress=function(){n.getResponseHeader("content-type")!==TN&&n.abort()},n.onload=function(){i.read(n.response)},n.onloadend=function(){i.reloading=!1,i.xhr=null},o.checkCrossOrigin&&hN(t)&&r.crossOrigin&&(t=zN(t)),n.open("GET",t,!0),n.responseType="arraybuffer",n.withCredentials=r.crossOrigin==="use-credentials",n.send()}}},{key:"read",value:function(t){var i=this.options,r=this.imageData,o=Hke(t),n=0,M=1,c=1;if(o>1){this.url=Gke(t,TN);var l=Vke(o);n=l.rotate,M=l.scaleX,c=l.scaleY}i.rotatable&&(r.rotate=n),i.scalable&&(r.scaleX=M,r.scaleY=c),this.clone()}},{key:"clone",value:function(){var t=this.element,i=this.url,r=t.crossOrigin,o=i;this.options.checkCrossOrigin&&hN(i)&&(r||(r="anonymous"),o=zN(i)),this.crossOrigin=r,this.crossOriginUrl=o;var n=document.createElement("img");r&&(n.crossOrigin=r),n.src=o||i,n.alt=t.alt||"The image to crop",this.image=n,n.onload=this.start.bind(this),n.onerror=this.stop.bind(this),me(n,cN),t.parentNode.insertBefore(n,t.nextSibling)}},{key:"start",value:function(){var t=this,i=this.image;i.onload=null,i.onerror=null,this.sizing=!0;var r=pt.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(pt.navigator.userAgent),o=function(l,N){ye(t.imageData,{naturalWidth:l,naturalHeight:N,aspectRatio:l/N}),t.initialImageData=ye({},t.imageData),t.sizing=!1,t.sized=!0,t.build()};if(i.naturalWidth&&!r){o(i.naturalWidth,i.naturalHeight);return}var n=document.createElement("img"),M=document.body||document.documentElement;this.sizingImage=n,n.onload=function(){o(n.width,n.height),r||M.removeChild(n)},n.src=i.src,r||(n.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",M.appendChild(n))}},{key:"stop",value:function(){var t=this.image;t.onload=null,t.onerror=null,t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var t=this.element,i=this.options,r=this.image,o=t.parentNode,n=document.createElement("div");n.innerHTML=Eke;var M=n.querySelector(".".concat(ge,"-container")),c=M.querySelector(".".concat(ge,"-canvas")),l=M.querySelector(".".concat(ge,"-drag-box")),N=M.querySelector(".".concat(ge,"-crop-box")),u=N.querySelector(".".concat(ge,"-face"));this.container=o,this.cropper=M,this.canvas=c,this.dragBox=l,this.cropBox=N,this.viewBox=M.querySelector(".".concat(ge,"-view-box")),this.face=u,c.appendChild(r),me(t,Ge),o.insertBefore(M,t.nextSibling),Ct(r,cN),this.initPreview(),this.bind(),i.initialAspectRatio=Math.max(0,i.initialAspectRatio)||NaN,i.aspectRatio=Math.max(0,i.aspectRatio)||NaN,i.viewMode=Math.max(0,Math.min(3,Math.round(i.viewMode)))||0,me(N,Ge),i.guides||me(N.getElementsByClassName("".concat(ge,"-dashed")),Ge),i.center||me(N.getElementsByClassName("".concat(ge,"-center")),Ge),i.background&&me(M,"".concat(ge,"-bg")),i.highlight||me(u,wke),i.cropBoxMovable&&(me(u,Fa),Dr(u,Tr,Tc)),i.cropBoxResizable||(me(N.getElementsByClassName("".concat(ge,"-line")),Ge),me(N.getElementsByClassName("".concat(ge,"-point")),Ge)),this.render(),this.ready=!0,this.setDragMode(i.dragMode),i.autoCrop&&this.crop(),this.setData(i.data),Fe(i.ready)&&rt(t,gN,i.ready,{once:!0}),di(t,gN)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var t=this.cropper.parentNode;t&&t.removeChild(this.cropper),Ct(this.element,Ge)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=sve,s}},{key:"setDefaults",value:function(t){ye(DN,gi(t)&&t)}}])})();ye(Yg.prototype,Zke,Xke,Kke,qke,eve,tve);var zs=function(){return zs=Object.assign||function(s){for(var e,t=1,i=arguments.length;t0&&E.zoomTo(Xe)})(C.currentTarget.cropper,w),T&&T(C)}}));d&&d(h)}return function(){var C,E;(E=(C=A.current)===null||C===void 0?void 0:C.cropper)===null||E===void 0||E.destroy()}}),[A]);var p=(function(h){return ive.reduce((function(C,E){var O=C,b=E;return O[b],Vn(O,[typeof b=="symbol"?b:b+""])}),h)})(zs(zs({},I),{crossOrigin:c,src:o,alt:y}));return a.createElement("div",{style:n,className:M},a.createElement("img",zs({},p,{style:rve,ref:A})))}));const nve=` +`),a.createElement(S5e,null,this.getToolbar()),a.createElement(x5e,null,this.renderHeader(),a.createElement(J,{style:z.tableDiv,ref:this.tableRef,onKeyDown:t=>this.navigateKeyPress(t)},e)),this.renderContextMenu(),this.renderAliasMenu(),this.renderToast(),this.renderColumnsEditCustomDialog(),this.renderColumnsSelectorDialog(),this.renderCustomDialog(),this.renderEditValueDialog(),this.renderEditObjectDialog(),this.renderViewObjectFileDialog(),this.renderAliasEditorDialog(),this.renderEditRoleDialog(),this.renderEnumDialog(),this.renderErrorDialog(),this.renderExportDialog(),this.renderRenameDialog(),this.renderInputJsonDialog(),this.state.modalNewObj&&this.props.modalNewObject&&this.props.modalNewObject(this),this.state.modalEditOfAccess&&this.state.modalEditOfAccessObjData&&this.props.modalEditOfAccessControl&&this.props.modalEditOfAccessControl(this,this.state.modalEditOfAccessObjData))}}const F5e=cn()(xo);class Pve extends a.Component{refTypo;height;width;constructor(e){super(e),this.state={closed:this.props.storeId?window.localStorage.getItem(this.props.storeId)==="true":!1},this.height=0,this.width=0,this.refTypo=a.createRef()}componentDidMount(){this.detectHeight()}onClick(){this.props.storeId&&this.props.closed===void 0&&(this.state.closed?window.localStorage.removeItem(this.props.storeId):window.localStorage.setItem(this.props.storeId,"true")),this.props.closed===void 0?this.setState({closed:!this.state.closed},()=>{this.props.onClose&&this.props.onClose(this.state.closed)}):this.props.onClose&&this.props.onClose(!this.props.closed)}detectHeight(){const e=this.props.closed!==void 0?this.props.closed:this.state.closed;this.props.closeable&&!e&&this.refTypo.current&&window.requestAnimationFrame(()=>{(this.props.closed!==void 0?this.props.closed:this.state.closed)||this.refTypo.current&&(!this.height||this.width!==this.refTypo.current.clientWidth)&&(this.height=this.refTypo.current.clientHeight,this.width=this.refTypo.current.clientWidth,this.forceUpdate())})}componentDidUpdate(){this.detectHeight()}render(){const e=this.props.closed!==void 0?this.props.closed:this.state.closed,t=e?Iy:we;return a.createElement(J,{className:"iom-info-box",style:{whiteSpace:"preserve",display:"flex",gap:8,alignItems:e||this.props.iconPosition==="top"?"flex-start":"center",borderWidth:1,borderStyle:"solid",padding:4,borderRadius:5,marginBottom:8,maxWidth:"100%",transition:"height 0.5s",height:this.props.closeable?e?30:this.height||void 0:void 0,overflow:this.props.closeable?"hidden":void 0,position:"relative",...this.props.style},sx:{borderColor:i=>this.props.type==="ok"?i.palette.info.main:i.palette[this.props.type].main}},this.props.type==="ok"?a.createElement(We,{style:{color:"#0F0"}}):this.props.type==="info"?a.createElement(tM,{color:"primary"}):a.createElement(Cy,{color:this.props.type}),a.createElement(Vg,{ref:this.refTypo},this.props.children),this.props.closeable?a.createElement(t,{sx:{color:i=>i.palette.mode==="dark"?"lightgray":"gray",cursor:"pointer",position:"absolute",top:4,right:4},onClick:()=>this.onClick()}):null,this.props.closeable?a.createElement("div",{style:{width:22}}):null,e?a.createElement(J,{component:"div",sx:i=>{const r=i.palette[this.props.type==="ok"?"info":this.props.type].main;return{background:`linear-gradient(${r}00 0%, ${r}10 60%, ${r}90 100%)`}},style:{bottom:0,position:"absolute",left:0,right:0,height:10}}):null)}}const f={hr:{border:0,borderTop:"1px solid gray"},scrollWindow:{width:"100%",overflow:"auto",height:"calc(100% - 22px)"},rowDiv:{width:"100%"},modeDiv:{width:200,display:"inline-block",verticalAlign:"top"},settingsDiv:{display:"inline-block",verticalAlign:"top"},inputTime:{width:90,marginTop:0,marginLeft:5},inputDate:{width:140,marginTop:0,marginLeft:5},inputEvery:{width:40,marginLeft:5,marginRight:5},inputRadio:{padding:"4px 12px",verticalAlign:"top"},inputGroup:{maxWidth:400,display:"inline-block"},inputGroupElement:{width:120},inputDateDay:{width:60},inputDateDayCheck:{padding:4},inputSmallCheck:{padding:0},rowOnce:{},rowDays:s=>({background:s.palette.mode!=="dark"?"#ddeaff":"#4b5057"}),rowDows:s=>({background:s.palette.mode!=="dark"?"#DDFFDD":"#52646c"}),rowMonths:s=>({background:s.palette.mode!=="dark"?"#DDFFFF":"#1f5557"}),rowMonthsDates:s=>({background:s.palette.mode!=="dark"?"#EEFFFF":"#3c5737",maxWidth:600}),rowYears:s=>({background:s.palette.mode!=="dark"?"#fbffdd":"#574b33"}),rowDowsDows:s=>({background:s.palette.mode!=="dark"?"#EEFFEE":"#3d4c54",pl:"10px",pb:"10px"})},Wn=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],eo=["January","February","March","April","May","June","July","August","September","October","November","December"],Jn={minutes:"minutes",hours:"hours"},Gi=["sunrise","sunriseEnd","goldenHourEnd","solarNoon","goldenHour","sunsetStart","sunset","dusk","nauticalDusk","night","nightEnd","nauticalDawn","dawn","nadir"];function xt(s){return s<10?`0${s}`:`${s}`}const q0={time:{exactTime:!1,start:"00:00",end:"23:59",mode:"hours",interval:1},period:{once:"",days:1,dows:"",dates:"",weeks:0,months:"",years:0,yearMonth:0,yearDate:0},valid:{from:"",to:""}};function Bn(s){const e=s.split(".");return e.length===3?`${e[2]}-${e[1]}-${e[0]}`:""}class Ee extends De{refFrom;refTo;refOnce;timerOnce=null;timerFrom=null;timerTo=null;constructor(e){super(e);let t;if(this.props.schedule&&typeof this.props.schedule=="string"&&this.props.schedule[0]==="{")try{t=JSON.parse(this.props.schedule)}catch{}else typeof this.props.schedule=="object"&&(t=this.props.schedule);(!t||!Object.keys(t).length)&&(setTimeout(()=>this.onChange(this.state.schedule,!0),200),t=q0),t={...q0,...t},t.valid.from||=Ee.now2string(),this.refFrom=a.createRef(),this.refTo=a.createRef(),this.refOnce=a.createRef(),this.state={schedule:t,desc:Ee.state2text(t)},JSON.stringify(t)!==this.props.schedule&&setTimeout(()=>{var i,r;return(r=(i=this.props).onChange)==null?void 0:r.call(i,JSON.stringify(t))},100)}componentWillUnmount(){this.timerOnce&&(clearTimeout(this.timerOnce),this.timerOnce=null),this.timerFrom&&(clearTimeout(this.timerFrom),this.timerFrom=null),this.timerTo&&(clearTimeout(this.timerTo),this.timerTo=null)}onChange(e,t){var r,o;const i=JSON.stringify(e)!==JSON.stringify(this.state.schedule);if(t||i){i&&this.setState({schedule:e,desc:Ee.state2text(e)});const n=JSON.parse(JSON.stringify(e));if(n.period.once){const M=n.period.once;delete n.period,n.period={once:M},delete n.valid}else if(n.period.days){const M=n.period.days,c=n.period.dows;delete n.period,n.period={days:M},c&&c!=="[]"&&(n.period.dows=c)}else if(n.period.weeks){const M=n.period.weeks,c=n.period.dows;delete n.period,n.period={weeks:M},c&&c!=="[]"&&(n.period.dows=c)}else if(n.period.months){const M=n.period.months,c=n.period.dates;delete n.period,n.period={months:M},c&&c!=="[]"&&(n.period.dates=c)}else if(n.period.years){const M=n.period.years,c=n.period.yearMonth,l=n.period.yearDate;delete n.period,n.period={years:M,yearDate:l},c&&(n.period.yearMonth=c)}if(n.time.exactTime?(delete n.time.end,delete n.time.mode,delete n.time.interval):delete n.time.exactTime,n.valid){if(n.valid.to||delete n.valid.to,n.period.days===1||n.period.weeks===1||n.period.months===1||n.period.years===1){const M=Ee.string2date(n.valid.from),c=new Date;c.setHours(0),c.setMinutes(0),c.setSeconds(0),c.setMilliseconds(0),M<=c&&delete n.valid.from}!n.valid.from&&!n.valid.to&&delete n.valid}(o=(r=this.props).onChange)==null||o.call(r,JSON.stringify(n),Ee.state2text(e))}}static state2text(e){if(typeof e=="string")try{e=JSON.parse(e)}catch{return""}const t=[],i=Ee.string2date(e.valid.from);if(e.period.once){const r=Ee.string2date(e.period.once),o=new Date;if(o.setMilliseconds(0),o.setSeconds(0),o.setMinutes(0),o.setHours(0),rD.t(Wn[n]));if(o.length===1)t.push(D.t("sch_desc_onWeekday",o[0]));else if(o.length===7)t.push(D.t("sch_desc_everyDay"));else{const n=o.pop();t.push(D.t("sch_desc_onWeekdays",o.join(", "),n))}}}else t.push(D.t("sch_desc_everyDay"));else t.push(D.t("sch_desc_everyNDay",e.period.days.toString()));else if(e.period.weeks)if(e.period.weeks===1?t.push(D.t("sch_desc_everyWeek")):t.push(D.t("sch_desc_everyNWeeks",e.period.weeks.toString())),e.period.dows){const r=JSON.parse(e.period.dows);if(r.length===2&&r[0]===0&&r[1]===6)t.push(D.t("sch_desc_onWeekends"));else if(r.length===5&&r[0]===1&&r[1]===2&&r[2]===3&&r[3]===4&&r[4]===5)t.push(D.t("sch_desc_onWorkdays"));else{const o=r.map(n=>D.t(Wn[n]));if(o.length===1)t.push(D.t("sch_desc_onWeekday",o[0]));else if(o.length===7)t.push(D.t("sch_desc_everyDay"));else{const n=o.pop();t.push(D.t("sch_desc_onWeekdays",o.join(", "),n))}}}else return D.t("sch_desc_never");else if(e.period.months){if(e.period.dates){const r=JSON.parse(e.period.dates);if(r.length===1)t.push(D.t("sch_desc_onDate",r[0]));else if(r.length===31)t.push(D.t("sch_desc_onEveryDate"));else if(r.length){const o=r.pop();t.push(D.t("sch_desc_onDates",r.join(", "),o))}else return D.t("sch_desc_never")}else t.push(D.t("sch_desc_onEveryDate"));if(e.period.months===1)t.push(D.t("sch_desc_everyMonth"));else if(typeof e.period.months=="number")t.push(D.t("sch_desc_everyNMonths",e.period.months.toString()));else{const o=JSON.parse(e.period.months).map(n=>D.t(eo[n-1]));if(!o.length)return D.t("sch_desc_never");if(o.length===1)t.push(D.t("sch_desc_onMonth",o[0]));else if(o.length===12)t.push(D.t("sch_desc_everyMonth"));else{const n=o.pop();t.push(D.t("sch_desc_onMonths",o.join(", "),n))}}}else e.period.years&&(e.period.years===1?t.push(D.t("sch_desc_everyYear")):t.push(D.t("sch_desc_everyNYears",e.period.years.toString())),t.push(D.t("sch_desc_onDate",e.period.yearDate.toString(),e.period.yearMonth?D.t(eo[e.period.yearMonth-1]):D.t("sch_desc_everyMonth"))));if(e.time.exactTime)Gi.includes(e.time.start)?t.push(D.t("sch_desc_atTime",D.t(`sch_astro_${e.time.start}`))):t.push(D.t("sch_desc_atTime",e.time.start));else{e.time.mode===Jn.minutes?e.time.interval===1?t.push(D.t("sch_desc_everyMinute")):t.push(D.t("sch_desc_everyNMinutes",e.time.interval.toString())):e.time.interval===1?t.push(D.t("sch_desc_everyHour")):t.push(D.t("sch_desc_everyNHours",e.time.interval.toString()));const r=Gi.indexOf(e.time.start)!==-1?D.t(`sch_astro_${e.time.start}`):e.time.start,o=Gi.indexOf(e.time.end)!==-1?D.t(`sch_astro_${e.time.end}`):e.time.end;(r!=="00:00"||o!=="24:00"&&o!=="23:59")&&t.push(D.t("sch_desc_intervalFromTo",r,o))}return e.period.once||(i.getTime()>Date.now()&&e.valid.to?t.push(D.t("sch_desc_validFromTo",e.valid.from,e.valid.to)):i.getTime()>Date.now()?t.push(D.t("sch_desc_validFrom",e.valid.from)):e.valid.to&&t.push(D.t("sch_desc_validTo",e.valid.to))),t.join(" ")}getTimePeriodElements(){const e=this.state.schedule;let t=!1,i=!1,r=!1,o=!0;return e.time.start==="00:00"&&e.time.end==="24:00"?(t=!0,o=!1):e.time.start==="sunrise"?(i=!0,o=!1):e.time.start==="sunset"&&(r=!0,o=!1),a.createElement("div",{key:"timePeriod",style:f.rowDiv},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!e.time.exactTime,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.exactTime=!1,this.onChange(n)}}),label:D.t("sch_intervalTime")})),a.createElement("div",{style:f.settingsDiv},a.createElement("div",{style:f.settingsDiv},!e.time.exactTime&&a.createElement("div",null,a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!o,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.start="00:00",n.time.end="23:59",this.onChange(n)}}),label:o?"":D.t("sch_fromTo")}),o&&[a.createElement(Te,{variant:"standard",style:{...f.inputTime,marginRight:10},key:"exactTimeFrom",type:"time",sx:n=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:n.palette.mode==="dark"?"invert(80%)":void 0}}),value:this.state.schedule.time.start,onChange:n=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.start=n.target.value,this.onChange(M)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_from"),margin:"normal"}),a.createElement(Te,{variant:"standard",style:f.inputTime,key:"exactTimeTo",type:"time",sx:n=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:n.palette.mode==="dark"?"invert(80%)":void 0}}),value:this.state.schedule.time.end,onChange:n=>{const M=JSON.parse(JSON.stringify(this.state.schedule));M.time.end=n.target.value,this.onChange(M)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_to"),margin:"normal"})])),!e.time.exactTime&&a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!t,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.start="00:00",n.time.end="24:00",this.onChange(n)}}),label:D.t("sch_wholeDay")})),!e.time.exactTime&&a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!i,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.start="sunrise",n.time.end="sunset",this.onChange(n)}}),label:D.t("sch_astroDay")})),!e.time.exactTime&&a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!r,onClick:()=>{const n=JSON.parse(JSON.stringify(this.state.schedule));n.time.start="sunset",n.time.end="sunrise",this.onChange(n)}}),label:D.t("sch_astroNight")}))),!e.time.exactTime&&this.getPeriodSettingsMinutes(o)))}getTimeExactElements(){const e=Gi.includes(this.state.schedule.time.start);return a.createElement("div",{key:"timeExact",style:f.rowDiv},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!this.state.schedule.time.exactTime,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.exactTime=!0,this.onChange(t)}}),label:D.t("sch_exactTime")})),this.state.schedule.time.exactTime&&a.createElement(nt,{variant:"standard",value:e?this.state.schedule.time.start:"00:00",onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.time.start=t.target.value,this.onChange(i)}},a.createElement(re,{key:"specific",value:"00:00"},D.t("sch_specificTime")),Gi.map(t=>a.createElement(re,{key:t,value:t},D.t(`sch_astro_${t}`)))),this.state.schedule.time.exactTime&&!e&&a.createElement("div",{style:f.settingsDiv},a.createElement(Te,{variant:"standard",style:f.inputTime,key:"exactTimeValue",value:this.state.schedule.time.start,type:"time",sx:t=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:t.palette.mode==="dark"?"invert(80%)":void 0}}),onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.time.start=t.target.value,this.onChange(i)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"})))}static getDivider(){return a.createElement("hr",{style:f.hr})}getPeriodModes(){const e=this.state.schedule,t=!e.period.dows&&!e.period.months&&!e.period.dates&&!e.period.years&&!e.period.days&&!e.period.weeks;return t&&!e.period.once&&(e.period.once=Ee.now2string(!0)),[a.createElement("div",{key:"once",style:{...f.rowDiv,...f.rowOnce}},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!t,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.once||=Ee.now2string(!0),i.period.dows="",i.period.months="",i.period.dates="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.weeks=0,i.period.days=0,this.onChange(i)}}),label:D.t("sch_periodOnce")})),t&&a.createElement("div",{style:f.settingsDiv},a.createElement(Te,{variant:"standard",style:f.inputDate,type:"date",ref:this.refOnce,key:"exactDateAt",defaultValue:Bn(e.period.once),onChange:i=>{this.timerOnce&&clearTimeout(this.timerOnce),this.refOnce.current&&(this.refOnce.current.style.background="#ff000030"),this.timerOnce=setTimeout(r=>{this.timerOnce=null,this.refOnce.current&&(this.refOnce.current.style.background="");const o=JSON.parse(JSON.stringify(this.state.schedule)),n=Ee.string2date(r);n.toString()!=="Invalid Date"&&(o.period.once=`${xt(n.getDate())}.${xt(n.getMonth()+1)}.${n.getFullYear()}`,this.onChange(o))},1500,i.target.value)},slotProps:{inputLabel:{shrink:!0}},label:D.t("sch_at"),margin:"normal"}))),a.createElement(J,{component:"div",key:"days",sx:m.getStyle(this.props.theme,f.rowDiv,f.rowDays)},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!e.period.days,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.days=1,i.period.dows="",i.period.months="",i.period.dates="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.weeks=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodDaily")})),a.createElement("div",{style:f.settingsDiv},this.getPeriodSettingsDaily(),e.period.days?this.getPeriodSettingsWeekdays():null)),a.createElement(J,{component:"div",key:"weeks",sx:m.getStyle(this.props.theme,f.rowDiv,f.rowDows)},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!e.period.weeks,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.weeks=e.period.weeks?0:1,i.period.dows||="[0]",i.period.months="",i.period.dates="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.days=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodWeekly")})),a.createElement(J,{component:"div",style:f.settingsDiv},a.createElement("div",{style:f.settingsDiv},this.getPeriodSettingsWeekly()),a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,f.settingsDiv,f.rowDowsDows)},this.state.schedule.period.weeks?this.getPeriodSettingsWeekdays():null))),a.createElement(J,{component:"div",key:"months",sx:m.getStyle(this.props.theme,f.rowDiv,f.rowMonths)},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!e.period.months,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months=1,i.period.dows="",i.period.dates="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.weeks=0,i.period.days=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodMonthly")})),a.createElement("div",{style:f.settingsDiv},this.getPeriodSettingsMonthly(),e.period.months?a.createElement(J,null,a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,f.settingsDiv,f.rowMonthsDates)},a.createElement(V,{control:a.createElement(ue,{style:f.inputRadio,checked:!!e.period.dates,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months||=1;const r=[];for(let o=1;o<=31;o++)r.push(o);i.period.dates||=JSON.stringify(r),i.period.dows="",i.period.years=0,i.period.yearDate=0,i.period.yearMonth=0,i.period.weeks=0,i.period.days=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodDates")})),a.createElement(J,{component:"div",sx:m.getStyle(this.props.theme,f.settingsDiv,f.rowMonthsDates)},this.getPeriodSettingsDates())):null)),a.createElement(J,{component:"div",key:"years",sx:m.getStyle(this.props.theme,f.rowDiv,f.rowYears)},a.createElement("div",{style:f.modeDiv},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:!!e.period.years,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.years=1,i.period.yearDate=1,i.period.yearMonth=1,i.period.dows="",i.period.months=0,i.period.dates="",i.period.weeks=0,i.period.days=0,i.period.once="",this.onChange(i)}}),label:D.t("sch_periodYearly")})),a.createElement("div",{style:f.settingsDiv},a.createElement("div",{style:f.settingsDiv},this.getPeriodSettingsYearly()),!!e.period.years&&a.createElement("div",{style:f.settingsDiv},a.createElement("span",null,D.t("sch_on")),a.createElement(qt,{key:"input",value:this.state.schedule.period.yearDate,style:f.inputEvery,type:"number",inputProps:{min:1,max:31},onChange:i=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.yearDate=parseInt(i.target.value,10),r.period.yearDate<1&&(r.period.yearDate=31),r.period.yearDate>31&&(r.period.yearDate=1),this.onChange(r)}}),a.createElement(nt,{variant:"standard",value:e.period.yearMonth,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.yearMonth=i.target.value,this.onChange(r)}},a.createElement(re,{key:"every",value:0},D.t("sch_yearEveryMonth")),eo.map((i,r)=>a.createElement(re,{key:i,value:r+1},D.t(i)))))))]}getPeriodSettingsMinutes(e){return a.createElement("div",{style:{display:"inline-block",marginTop:e?15:"inherit"}},a.createElement("label",{style:{marginLeft:4,marginRight:4}},D.t("sch_every")),a.createElement(qt,{value:this.state.schedule.time.interval,style:{...f.inputEvery,verticalAlign:"bottom"},type:"number",inputProps:{min:1},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.time.interval=parseInt(t.target.value,10),this.onChange(i)}}),a.createElement(nt,{variant:"standard",value:this.state.schedule.time.mode,onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.time.mode=t.target.value,this.onChange(i)}},a.createElement(re,{value:Jn.minutes},D.t("sch_periodMinutes")),a.createElement(re,{value:Jn.hours},D.t("sch_periodHours"))))}getPeriodSettingsWeekdays(){const e=this.state.schedule,t=e.period.dows&&e.period.dows!=="[1, 2, 3, 4, 5]"&&e.period.dows!=="[0, 6]";return[a.createElement("div",{key:"workdays"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.dows==="[1, 2, 3, 4, 5]",onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.dows="[1, 2, 3, 4, 5]",i.period.days&&(i.period.days=1),this.onChange(i)}}),label:D.t("sch_periodWorkdays")})),a.createElement("div",{key:"weekend"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.dows==="[0, 6]",onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.dows="[0, 6]",i.period.days&&(i.period.days=1),this.onChange(i)}}),label:D.t("sch_periodWeekend")})),a.createElement("div",{key:"specific",style:{verticalAlign:"top"}},a.createElement(V,{style:{verticalAlign:"top"},control:a.createElement(Me,{style:f.inputRadio,checked:!!t,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.dows="[0, 1, 2, 3, 4, 5, 6]",i.period.days&&(i.period.days=1),this.onChange(i)}}),label:D.t("sch_periodWeekdays")}),t&&(e.period.days===1||e.period.weeks)&&a.createElement(Ln,{row:!0,style:{...f.inputGroup,width:150}},[1,2,3,4,5,6,0].map(i=>a.createElement(V,{key:`specific_${i}`,style:f.inputGroupElement,control:a.createElement(ue,{style:f.inputSmallCheck,checked:e.period.dows.includes(i.toString()),onChange:r=>{const o=JSON.parse(JSON.stringify(this.state.schedule));let n;try{n=JSON.parse(o.period.dows)}catch{n=[]}r.target.checked&&!n.includes(i)?n.push(i):!r.target.checked&&n.includes(i)&&n.splice(n.indexOf(i),1),n.sort((M,c)=>M-c),o.period.dows=JSON.stringify(n),o.period.days&&(o.period.days=1),this.onChange(o)}}),label:D.t(Wn[i])}))))]}getPeriodSettingsDaily(){if(!this.state.schedule.period.days)return null;const e=this.state.schedule;return[a.createElement("div",{key:"every_day"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.days===1&&!e.period.dows,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=1,t.period.dows="",this.onChange(t)}}),label:D.t("sch_periodEveryDay")})),a.createElement("div",{key:"everyN_day"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.days>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=2,t.period.dows="",this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.days>1&&[a.createElement(qt,{key:"input",value:this.state.schedule.period.days,style:f.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.days=parseInt(t.target.value,10),i.period.dows="",this.onChange(i)}}),a.createElement("span",{key:"span",style:{paddingRight:10}},D.t("sch_periodDay"))])]}getPeriodSettingsWeekly(){if(!this.state.schedule.period.weeks)return null;const e=this.state.schedule;return[a.createElement("div",{key:"radios",style:{display:"inline-block",verticalAlign:"top"}},a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.weeks===1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=1,this.onChange(t)}}),label:D.t("sch_periodEveryWeek")})),a.createElement("div",null,a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.weeks>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=2,this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.weeks>1&&[a.createElement(qt,{key:"input",value:this.state.schedule.period.weeks,style:f.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.weeks=parseInt(t.target.value,10),this.onChange(i)}}),a.createElement("span",{key:"text"},D.t("sch_periodWeek"))]))]}getPeriodSettingsDates(){if(!this.state.schedule.period.dates)return null;const e=this.state.schedule,t=[];for(let r=1;r<=31;r++)t.push(r);const i=JSON.parse(e.period.dates);return a.createElement(Ln,{row:!0,style:{...f.inputGroup,maxWidth:620}},a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:i.length===31,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule)),o=[];for(let n=1;n<=31;n++)o.push(n);r.period.dates=JSON.stringify(o),this.onChange(r)}}),label:D.t("sch_all")}),a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:!i.length,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.dates="[]",this.onChange(r)}}),label:D.t("sch_no_one")}),i.length!==31&&!!i.length&&a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:!1,onChange:()=>{const r=JSON.parse(JSON.stringify(this.state.schedule)),o=[],n=JSON.parse(r.period.dates);for(let M=1;M<=31;M++)n.includes(M)||o.push(M);o.sort((M,c)=>M-c),r.period.dates=JSON.stringify(o),this.onChange(r)}}),label:D.t("sch_invert")}),a.createElement("div",null),t.map(r=>a.createElement(V,{key:`date_${r}`,style:r?f.inputDateDay:{...f.inputDateDay,opacity:0,cursor:"default",userSelect:"none",pointerEvents:"none"},control:a.createElement(ue,{style:f.inputDateDayCheck,checked:JSON.parse(e.period.dates).includes(r),onChange:o=>{const n=JSON.parse(JSON.stringify(this.state.schedule));let M;try{M=JSON.parse(n.period.dates)}catch{M=[]}o.target.checked&&!M.includes(r)?M.push(r):!o.target.checked&&M.includes(r)&&M.splice(M.indexOf(r),1),M.sort((c,l)=>c-l),n.period.dates=JSON.stringify(M),this.onChange(n)}}),label:r<10?[a.createElement("span",{key:"0",style:{opacity:0}},"0"),a.createElement("span",{key:"num"},r)]:r})))}getPeriodSettingsMonthly(){if(!this.state.schedule.period.months)return null;const e=this.state.schedule,t=typeof e.period.months=="string"?JSON.parse(e.period.months):[];return[a.createElement("div",{key:"every"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:typeof e.period.months=="number"&&e.period.months===1,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months=1,this.onChange(e)}}),label:D.t("sch_periodEveryMonth")})),a.createElement("div",{key:"everyN"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:typeof e.period.months=="number"&&e.period.months>1,onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months=2,this.onChange(i)}}),label:D.t("sch_periodEvery")}),typeof e.period.months=="number"&&e.period.months>1&&[a.createElement(qt,{key:"input",value:e.period.months,style:f.inputEvery,type:"number",inputProps:{min:2},onChange:i=>{const r=JSON.parse(JSON.stringify(this.state.schedule));r.period.months=parseInt(i.target.value,10),r.period.months<1&&(r.period.months=1),this.onChange(r)}}),a.createElement("span",{key:"text"},D.t("sch_periodMonth"))]),a.createElement("div",{key:"specific",style:{verticalAlign:"top"}},a.createElement(V,{style:{verticalAlign:"top"},control:a.createElement(Me,{style:f.inputRadio,checked:typeof e.period.months=="string",onClick:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months="[1,2,3,4,5,6,7,8,9,10,11,12]",this.onChange(i)}}),label:D.t("sch_periodSpecificMonths")}),typeof e.period.months=="string"&&a.createElement(Ln,{row:!0,style:f.inputGroup},a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:t.length===12,onChange:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule)),r=[];for(let o=1;o<=12;o++)r.push(o);i.period.months=JSON.stringify(r),this.onChange(i)}}),label:D.t("sch_all")}),a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:!t.length,onChange:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.months="[]",this.onChange(i)}}),label:D.t("sch_no_one")}),t.length!==12&&!!t.length&&a.createElement(V,{style:f.inputDateDay,control:a.createElement(ue,{style:f.inputDateDayCheck,checked:!1,onChange:()=>{const i=JSON.parse(JSON.stringify(this.state.schedule)),r=[],o=JSON.parse(i.period.months);for(let n=1;n<=12;n++)o.includes(n)||r.push(n);r.sort((n,M)=>n-M),i.period.months=JSON.stringify(r),this.onChange(i)}}),label:D.t("sch_invert")}),a.createElement("div",null),eo.map((i,r)=>a.createElement(V,{key:`month_${r}`,style:f.inputGroupElement,control:a.createElement(ue,{style:f.inputSmallCheck,checked:typeof e.period.months=="string"?JSON.parse(e.period.months).includes(r+1):e.period.months===r,onChange:o=>{const n=JSON.parse(JSON.stringify(this.state.schedule));let M;try{M=JSON.parse(n.period.months)}catch{M=[]}o.target.checked&&!M.includes(r+1)?M.push(r+1):!o.target.checked&&M.includes(r+1)&&M.splice(M.indexOf(r+1),1),M.sort((c,l)=>c-l),n.period.months=JSON.stringify(M),this.onChange(n)}}),label:D.t(i)}))))]}getPeriodSettingsYearly(){if(!this.state.schedule.period.years)return null;const e=this.state.schedule;return[a.createElement("div",{key:"year"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.years===1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=1,this.onChange(t)}}),label:D.t("sch_periodEveryYear")})),a.createElement("div",{key:"every"},a.createElement(V,{control:a.createElement(Me,{style:f.inputRadio,checked:e.period.years>1,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=2,this.onChange(t)}}),label:D.t("sch_periodEvery")}),e.period.years>1&&[a.createElement(qt,{key:"input",value:this.state.schedule.period.years,style:f.inputEvery,type:"number",inputProps:{min:2},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.schedule));i.period.years=parseInt(t.target.value,10),i.period.years<1&&(i.period.years=1),this.onChange(i)}}),a.createElement("span",{key:"text"},D.t("sch_periodYear"))])]}static now2string(e){const t=new Date;return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),e&&(t.setDate(t.getDate()+2),t.setMilliseconds(t.getMilliseconds()-1)),`${xt(t.getDate())}.${xt(t.getMonth()+1)}.${xt(t.getFullYear())}`}static string2date(e){let t=e.split(".");return t.length===1?(t=e.split("-"),new Date(parseInt(t[0],10),parseInt(t[1],10)-1,parseInt(t[2],10))):new Date(parseInt(t[2],10),parseInt(t[1],10)-1,parseInt(t[0],10))}getValidSettings(){const e=this.state.schedule;return a.createElement("div",{style:f.rowDiv},a.createElement("div",{style:{...f.modeDiv,verticalAlign:"middle"}},a.createElement("span",{style:{fontWeight:"bold",paddingRight:10}},D.t("sch_valid")),a.createElement("span",null,D.t("sch_validFrom"))),a.createElement("div",{style:f.settingsDiv},a.createElement(Te,{variant:"standard",style:{...f.inputDate,marginRight:10},key:"exactTimeFrom",inputRef:this.refFrom,defaultValue:Bn(e.valid.from),type:"date",onChange:t=>{this.timerFrom&&clearTimeout(this.timerFrom),this.refFrom.current&&(this.refFrom.current.style.background="#ff000030"),this.timerFrom=setTimeout(i=>{this.timerFrom=null,this.refFrom.current&&(this.refFrom.current.style.background="");const r=JSON.parse(JSON.stringify(this.state.schedule)),o=Ee.string2date(i);o.toString()!=="Invalid Date"&&(r.valid.from=`${xt(o.getDate())}.${xt(o.getMonth()+1)}.${o.getFullYear()}`,this.onChange(r))},1500,t.target.value)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"}),a.createElement(V,{control:a.createElement(ue,{style:f.inputRadio,checked:!!e.valid.to,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.valid.to=t.valid.to?"":Ee.now2string(!0),this.onChange(t)}}),label:D.t("sch_validTo")}),!!e.valid.to&&a.createElement(Te,{variant:"standard",inputRef:this.refTo,style:{...f.inputDate,marginRight:10},key:"exactTimeFrom",type:"date",defaultValue:Bn(e.valid.to),onChange:t=>{this.timerTo&&clearTimeout(this.timerTo),this.refTo.current&&(this.refTo.current.style.background="#ff000030"),this.timerTo=setTimeout(i=>{this.timerTo=null,this.refTo.current&&(this.refTo.current.style.background="");const r=JSON.parse(JSON.stringify(this.state.schedule)),o=Ee.string2date(i);o.toString()!=="Invalid Date"&&(r.valid.to=`${xt(o.getDate())}.${xt(o.getMonth()+1)}.${o.getFullYear()}`,this.onChange(r))},1500,t.target.value)},slotProps:{inputLabel:{shrink:!0}},margin:"normal"})))}render(){return a.createElement("div",{style:{height:"calc(100% - 48px)",width:"100%",overflow:"hidden"}},a.createElement("div",null,this.state.desc),a.createElement("div",{style:f.scrollWindow},a.createElement("h5",null,D.t("sch_time")),this.getTimePeriodElements(),this.getTimeExactElements(),Ee.getDivider(),a.createElement("h5",null,D.t("sch_period")),this.getPeriodModes(),!this.state.schedule.period.once&&Ee.getDivider(),!this.state.schedule.period.once&&this.getValidSettings()))}}const to={different:{opacity:.5},icon:{width:16,height:16,marginRight:8}};class Wve extends De{wordDifferent;timeout=null;constructor(e){super(e),e.different&&(this.wordDifferent=e.t("ra___different__"));let t;Array.isArray(e.list)?t=e.list.filter(i=>(i==null?void 0:i._id)&&i.common).map(i=>{var r,o;return{name:m.getObjectNameFromObj(i,e.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:i._id,icon:(r=i.common)==null?void 0:r.icon,color:(o=i.common)==null?void 0:o.color}}):t=Object.values(e.list).filter(i=>(i==null?void 0:i._id)&&i.common).map(i=>{var r,o;return{name:m.getObjectNameFromObj(i,e.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:i._id,icon:(r=i.common)==null?void 0:r.icon,color:(o=i.common)==null?void 0:o.color}}),e.different&&e.value===e.different&&t.unshift({value:e.different,name:this.wordDifferent||""}),e.allowNone&&t.unshift({value:"",name:D.t("ra_none")}),this.state={list:t}}render(){this.props.allowNone&&!this.state.list.find(r=>r.value==="")?this.timeout=this.timeout||setTimeout(()=>{this.timeout=null;const r=JSON.parse(JSON.stringify(this.state.list));r.unshift({value:"",name:D.t("ra_none")}),this.setState({list:r})},100):!this.props.allowNone&&this.state.list.find(r=>r.value==="")&&(this.timeout=this.timeout||setTimeout(()=>{this.timeout=null;const r=JSON.parse(JSON.stringify(this.state.list)),o=this.state.list.findIndex(n=>n.value==="");r.splice(o,1),this.setState({list:r})},100));const e=this.state.list.find(r=>r.value===this.props.value||this.props.removePrefix&&r.value.replace(this.props.removePrefix,"")===this.props.value),t=this.props.value===this.props.different?{}:{color:(e==null?void 0:e.color)||void 0,backgroundColor:m.getInvertedColor((e==null?void 0:e.color)||"",this.props.themeType)};this.props.dense&&this.props.style&&Object.assign(t,this.props.style);const i=a.createElement(nt,{variant:"standard",disabled:this.props.disabled,value:this.props.value,slotProps:{input:this.props.inputProps},renderValue:()=>a.createElement("span",null,e!=null&&e.icon?a.createElement(be,{src:e==null?void 0:e.icon,style:to.icon}):null,e==null?void 0:e.name),sx:{"&.MuiSelect-root":this.props.value===this.props.different?to.different:{}},classes:{root:this.props.dense?this.props.className:""},style:t,onChange:r=>{if(this.props.different&&r.target.value!==this.props.different){let o=null;for(let n=0;nthis.props.onChange(r.target.value));return}}this.props.onChange(this.props.removePrefix?r.target.value.replace(this.props.removePrefix,""):r.target.value)}},this.state.list.map(r=>a.createElement(re,{style:this.props.different&&r.value===this.props.different?to.different:{color:r.color||void 0,backgroundColor:m.getInvertedColor(r.color||"",this.props.themeType)},key:r.value,value:r.value},r.icon?a.createElement(be,{src:r.icon,style:to.icon}):null,r.name)));return this.props.dense?i:a.createElement(Qt,{variant:"standard",fullWidth:!!this.props.fullWidth,style:this.props.style,className:this.props.className},a.createElement(yi,null,this.props.label),i)}}class Jve extends De{resizerRefTable;resizerActiveIndex;resizerActiveDiv;resizerCurrentWidths;widthFilled=!1;installTimeout=null;resizerMin=0;resizerMinNext=0;resizerPosition=0;resizerOldWidth=0;resizerOldWidthNext=0;constructor(e){super(e),this.resizerRefTable=a.createRef(),this.resizerActiveIndex=null,this.resizerActiveDiv=null,this.resizerCurrentWidths=[]}componentDidMount(){this.resizerInstall()}componentWillUnmount(){this.resizerUninstall()}resizerInstall(){if(this.resizerRefTable.current&&!this.resizerRefTable.current._installed){this.resizerRefTable.current._installed=!0;const e=this.resizerRefTable.current.querySelectorAll("th"),t=(window._localStorage||window.localStorage).getItem(`App.${this.props.name||"history"}.table`);if(this.widthFilled=!1,t)try{this.resizerCurrentWidths=JSON.parse(t),this.widthFilled=!0}catch{}if(this.widthFilled)if(this.resizerCurrentWidths.length!==e.length)this.resizerCurrentWidths=[],this.widthFilled=!1;else{const i=this.resizerRefTable.current.offsetWidth;let r=0;for(let o=0;o20&&(this.resizerCurrentWidths=[],this.widthFilled=!1)}for(let i=0;i{this.installTimeout=null,this.resizerInstall()},100)}resizerReset=()=>{for(let e=0;e{if(this.resizerActiveDiv&&this.resizerActiveIndex!==null){const t=this.resizerOldWidth+e.clientX-this.resizerPosition,i=this.resizerOldWidthNext-e.clientX+this.resizerPosition;(!this.resizerMin||t>this.resizerMin)&&(!this.resizerMinNext||i>this.resizerMinNext)&&(this.resizerCurrentWidths[this.resizerActiveIndex]=t,this.resizerCurrentWidths[this.resizerActiveIndex+1]=i,this.resizerApplyWidths())}};resizerMouseUp=()=>{(window._localStorage||window.localStorage).setItem(`App.${this.props.name||"history"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveIndex=null,this.resizerActiveDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{var t,i,r,o;if(this.resizerActiveIndex===null||this.resizerActiveIndex===void 0){console.log(`Mouse down ${(t=e.target)==null?void 0:t.dataset.index}`),this.resizerActiveIndex=parseInt(((i=e.target)==null?void 0:i.dataset.index)||"0",10),this.resizerActiveDiv=e.target,this.resizerMin=this.props.minWidths?this.props.minWidths[this.resizerActiveIndex]:0,this.resizerMinNext=this.props.minWidths?this.props.minWidths[this.resizerActiveIndex+1]:0,this.resizerPosition=e.clientX;let n;this.resizerCurrentWidths[this.resizerActiveIndex]==="auto"&&(n=(r=this.resizerRefTable.current)==null?void 0:r.querySelectorAll("th"),n&&(this.resizerCurrentWidths[this.resizerActiveIndex]=n[this.resizerActiveIndex].offsetWidth)),this.resizerCurrentWidths[this.resizerActiveIndex+1]==="auto"&&(n=n||((o=this.resizerRefTable.current)==null?void 0:o.querySelectorAll("th")),n&&(this.resizerCurrentWidths[this.resizerActiveIndex+1]=n[this.resizerActiveIndex+1].offsetWidth)),this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveIndex],this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerActiveIndex+1],window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};render(){if(this.props.ready===!1)return a.createElement(Zg,null);const e={gridTemplateColumns:this.resizerApplyWidths()};return a.createElement(mN,{stickyHeader:this.props.stickyHeader,size:this.props.size||"small",className:this.props.className,sx:this.props.sx,ref:this.resizerRefTable,style:{...this.props.style||void 0,...e}},this.props.children)}}const Rn={div:{borderRadius:3,padding:"0 3px",lineHeight:"20px",whiteSpace:"nowrap",overflow:"hidden",display:"flex",alignItems:"center"},icon:{width:16,height:16,marginRight:8,verticalAlign:"middle"},text:{display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}};function Bve(s){var o,n,M,c,l,N,u,L,g;const e=s.value;let t;const i=s.removePrefix||"";if(typeof e=="string"){const j=s.list;if(j)if(Array.isArray(j)){const y=j.find(T=>(T==null?void 0:T._id)===i+e);y?t={name:m.getObjectNameFromObj(y,s.lang).replace("system.group.",""),value:y._id,icon:s.icon||((o=y.common)==null?void 0:o.icon),color:s.color||((n=y.common)==null?void 0:n.color)}:t={name:e,value:i+e}}else if(j[i+e]){const y=j[i+e];t={name:m.getObjectNameFromObj(y,s.lang).replace("system.group.",""),value:y._id,icon:s.icon||((M=y.common)==null?void 0:M.icon),color:s.color||((c=y.common)==null?void 0:c.color)}}else t={name:e,value:i+e,icon:s.icon,color:s.color};else t={name:e,value:i+e,icon:s.icon,color:s.color}}else if(!e||typeof e!="object")t={name:"",value:"",icon:s.icon,color:s.color};else{const j=e;t={name:m.getObjectNameFromObj(j,s.lang).replace("system.group.","").replace("system.user.","").replace("enum.rooms.","").replace("enum.functions.",""),value:j._id,icon:s.icon||((l=j.common)==null?void 0:l.icon),color:s.color||((N=j.common)==null?void 0:N.color)}}const r=t!=null&&t.color?{border:`1px solid ${m.invertColor(t==null?void 0:t.color)}`,color:m.getInvertedColor(t==null?void 0:t.color,s.themeType||"light",!0)||void 0,backgroundColor:t==null?void 0:t.color}:{};return a.createElement("div",{style:{...s.style||void 0,...Rn.div,...r||void 0},className:m.clsx(s.className,(u=s.moreClasses)==null?void 0:u.root),title:s.title||t.value},t!=null&&t.icon?a.createElement(be,{src:t==null?void 0:t.icon,className:(L=s.moreClasses)==null?void 0:L.icon,style:Rn.icon}):null,a.createElement("div",{style:Rn.text,className:(g=s.moreClasses)==null?void 0:g.text},t==null?void 0:t.name))}function Rve({themeName:s,toggleTheme:e,t,className:i,style:r,size:o}){return a.createElement("div",{className:i||void 0,style:r||void 0},a.createElement(Le,{title:t("ra_Change color theme"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},a.createElement(W,{onClick:()=>e(),size:o||"medium"},s==="dark"&&a.createElement($j,{className:i}),s==="blue"&&a.createElement(Pj,{className:i}),s==="colored"&&a.createElement(eM,{className:i}),s!=="dark"&&s!=="blue"&&s!=="colored"&&a.createElement(Wj,{className:i}))))}function un(){return(un=Object.assign||function(s){for(var e=1;e=0||(r[t]=s[t]);return r}function Qa(s){var e=et(s),t=et(function(i){e.current&&e.current(i)});return e.current=s,t.current}var yr=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),s>t?t:s0:T.buttons>0)&&r.current?o(eN(r.current,T,M.current)):y(!1)},j=function(){return y(!1)};function y(T){var d=c.current,I=ba(r.current),w=T?I.addEventListener:I.removeEventListener;w(d?"touchmove":"mousemove",g),w(d?"touchend":"mouseup",j)}return[function(T){var d=T.nativeEvent,I=r.current;if(I&&(tN(d),!(function(A,p){return p&&!Mr(A)})(d,c.current)&&I)){if(Mr(d)){c.current=!0;var w=d.changedTouches||[];w.length&&(M.current=w[0].identifier)}I.focus(),o(eN(I,d,M.current)),y(!0)}},function(T){var d=T.which||T.keyCode;d<37||d>40||(T.preventDefault(),n({left:d===39?.05:d===37?-.05:0,top:d===40?.05:d===38?-.05:0}))},y]},[n,o]),N=l[0],u=l[1],L=l[2];return Ce(function(){return L},[L]),a.createElement("div",un({},i,{onTouchStart:N,onMouseDown:N,className:"react-colorful__interactive",ref:r,onKeyDown:u,tabIndex:0,role:"slider"}))}),Lc=function(s){return s.filter(Boolean).join(" ")},Tg=function(s){var e=s.color,t=s.left,i=s.top,r=i===void 0?.5:i,o=Lc(["react-colorful__pointer",s.className]);return a.createElement("div",{className:o,style:{top:100*r+"%",left:100*t+"%"}},a.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:e}}))},Se=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*s)/t},G5e=function(s){return K5e(Ua(s))},Ua=function(s){return s[0]==="#"&&(s=s.substring(1)),s.length<6?{r:parseInt(s[0]+s[0],16),g:parseInt(s[1]+s[1],16),b:parseInt(s[2]+s[2],16),a:s.length===4?Se(parseInt(s[3]+s[3],16)/255,2):1}:{r:parseInt(s.substring(0,2),16),g:parseInt(s.substring(2,4),16),b:parseInt(s.substring(4,6),16),a:s.length===8?Se(parseInt(s.substring(6,8),16)/255,2):1}},H5e=function(s){return X5e(Z5e(s))},V5e=function(s){var e=s.s,t=s.v,i=s.a,r=(200-e)*t/100;return{h:Se(s.h),s:Se(r>0&&r<200?e*t/100/(r<=100?r:200-r)*100:0),l:Se(r/2),a:Se(i,2)}},$a=function(s){var e=V5e(s);return"hsl("+e.h+", "+e.s+"%, "+e.l+"%)"},Z5e=function(s){var e=s.h,t=s.s,i=s.v,r=s.a;e=e/360*6,t/=100,i/=100;var o=Math.floor(e),n=i*(1-t),M=i*(1-(e-o)*t),c=i*(1-(1-e+o)*t),l=o%6;return{r:Se(255*[i,M,n,n,c,i][l]),g:Se(255*[c,i,i,M,n,n][l]),b:Se(255*[n,n,c,i,i,M][l]),a:Se(r,2)}},so=function(s){var e=s.toString(16);return e.length<2?"0"+e:e},X5e=function(s){var e=s.r,t=s.g,i=s.b,r=s.a,o=r<1?so(Se(255*r)):"";return"#"+so(e)+so(t)+so(i)+o},K5e=function(s){var e=s.r,t=s.g,i=s.b,r=s.a,o=Math.max(e,t,i),n=o-Math.min(e,t,i),M=n?o===e?(t-i)/n:o===t?2+(i-e)/n:4+(e-t)/n:0;return{h:Se(60*(M<0?M+6:M)),s:Se(o?n/o*100:0),v:Se(o/255*100),a:r}},q5e=a.memo(function(s){var e=s.hue,t=s.onChange,i=Lc(["react-colorful__hue",s.className]);return a.createElement("div",{className:i},a.createElement(yg,{onMove:function(r){t({h:360*r.left})},onKey:function(r){t({h:yr(e+360*r.left,0,360)})},"aria-label":"Hue","aria-valuenow":Se(e),"aria-valuemax":"360","aria-valuemin":"0"},a.createElement(Tg,{className:"react-colorful__hue-pointer",left:e/360,color:$a({h:e,s:100,v:100,a:1})})))}),eke=a.memo(function(s){var e=s.hsva,t=s.onChange,i={backgroundColor:$a({h:e.h,s:100,v:100,a:1})};return a.createElement("div",{className:"react-colorful__saturation",style:i},a.createElement(yg,{onMove:function(r){t({s:100*r.left,v:100-100*r.top})},onKey:function(r){t({s:yr(e.s+100*r.left,0,100),v:yr(e.v-100*r.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+Se(e.s)+"%, Brightness "+Se(e.v)+"%"},a.createElement(Tg,{className:"react-colorful__saturation-pointer",top:1-e.v/100,left:e.s/100,color:$a(e)})))}),Dg=function(s,e){if(s===e)return!0;for(var t in s)if(s[t]!==e[t])return!1;return!0},tke=function(s,e){return s.toLowerCase()===e.toLowerCase()||Dg(Ua(s),Ua(e))};function ske(s,e,t){var i=Qa(t),r=Ka(function(){return s.toHsva(e)}),o=r[0],n=r[1],M=et({color:e,hsva:o});Ce(function(){if(!s.equal(e,M.current.color)){var l=s.toHsva(e);M.current={hsva:l,color:e},n(l)}},[e,s]),Ce(function(){var l;Dg(o,M.current.hsva)||s.equal(l=s.fromHsva(o),M.current.color)||(M.current={hsva:o,color:l},i(l))},[o,s,i]);var c=Kt(function(l){n(function(N){return Object.assign({},N,l)})},[]);return[o,c]}var ike=typeof window<"u"?Pg:Ce,rke=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},sN=new Map,oke=function(s){ike(function(){var e=s.current?s.current.ownerDocument:document;if(e!==void 0&&!sN.has(e)){var t=e.createElement("style");t.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,sN.set(e,t);var i=rke();i&&t.setAttribute("nonce",i),e.head.appendChild(t)}},[])},nke=function(s){var e=s.className,t=s.colorModel,i=s.color,r=i===void 0?t.defaultColor:i,o=s.onChange,n=jg(s,["className","colorModel","color","onChange"]),M=et(null);oke(M);var c=ske(t,r,o),l=c[0],N=c[1],u=Lc(["react-colorful",e]);return a.createElement("div",un({},n,{ref:M,className:u}),a.createElement(eke,{hsva:l,onChange:N}),a.createElement(q5e,{hue:l.h,onChange:N,className:"react-colorful__last-control"}))},ake={defaultColor:"000",toHsva:G5e,fromHsva:function(s){return H5e({h:s.h,s:s.s,v:s.v,a:1})},equal:tke},Mke=function(s){return a.createElement(nke,un({},s,{colorModel:ake}))};class cke extends De{dialogName;filters;filterFunc;constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName=`SelectID.${this.dialogName}`;const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch{this.filters={}}e.filters&&(this.filters={...this.filters,...e.filters||{}});let i=this.props.selected||[];if(Array.isArray(i)||(i=[i]),i=i.filter(r=>r),e.filterFunc)if(typeof e.filterFunc=="string")try{this.filterFunc=new Function("obj",e.filterFunc)}catch{console.error(`Cannot parse filter function: "obj => ${e.filterFunc}"`),this.filterFunc=void 0}else this.filterFunc=e.filterFunc;this.state={selected:i,name:"",selectionBlocked:!1}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect?this.state.selected:this.state.selected[0]||"",this.state.name),this.props.onClose()}render(){let e;return this.state.name||this.state.selected.length?this.state.selected.length===1?e=[a.createElement("span",{key:"selected"},D.t("ra_Selected")," "),a.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},(this.state.name||this.state.selected[0])+(this.state.name?` [${this.state.selected[0]}]`:""))]:e=[a.createElement("span",{key:"selected"},D.t("ra_Selected")," "),a.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},D.t("%s items",this.state.selected.length.toString()))]:e=this.props.title||D.t("ra_Please select object ID..."),a.createElement(Ae,{onClose:()=>{},maxWidth:!1,style:{zIndex:this.props.zIndex||void 0},sx:{"& .MuiDialog-paper":{height:"95%",p:"4px",width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)"}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectid_title"},a.createElement(fe,{id:"ar_dialog_selectid_title",style:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}},e),a.createElement(_e,{style:{height:"100%",overflow:"hidden",padding:"8px 4px"}},a.createElement(F5e,{foldersFirst:this.props.foldersFirst,imagePrefix:this.props.imagePrefix||this.props.prefix,dateFormat:this.props.dateFormat,defaultFilters:this.filters,dialogName:this.dialogName,isFloatComma:this.props.isFloatComma,showExpertButton:this.props.showExpertButton!==void 0?this.props.showExpertButton:!0,expertMode:this.props.expertMode,columns:this.props.columns||["name","type","role","room","func","val"],types:this.props.types?Array.isArray(this.props.types)?this.props.types:[this.props.types]:["state"],root:this.props.root,t:D.t,lang:this.props.lang||D.getLanguage(),socket:this.props.socket,selected:this.state.selected,multiSelect:this.props.multiSelect,notEditable:this.props.notEditable===void 0?!0:this.props.notEditable,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,customFilter:this.props.customFilter,allowNonObjects:this.props.allowNonObjects,onFilterChanged:t=>{this.filters=t,(window._localStorage||window.localStorage).setItem(this.dialogName,JSON.stringify(t))},onSelect:async(t,i,r)=>{let o;if(Array.isArray(t)?o=t:o=[t],JSON.stringify(o)!==JSON.stringify(this.state.selected)){let n=!0;if(this.props.onSelectConfirm){const M={};for(const c of o)try{M[c]=await this.props.socket.getObject(c)}catch{}n=await this.props.onSelectConfirm(o,M)}this.setState({selected:o,name:i,selectionBlocked:!n},()=>r&&this.handleOk())}else r&&this.handleOk()},filterFunc:this.filterFunc,title:"",onAllLoaded:()=>this.setState({allLoaded:!0})})),a.createElement(xe,null,a.createElement(q,{id:`ar_dialog_selectid_ok_${this.props.dialogName||""}`,variant:"contained",onClick:()=>this.handleOk(),startIcon:a.createElement(We,null),disabled:!this.state.allLoaded||!this.state.selected.length||this.state.selectionBlocked,color:"primary"},this.props.ok||D.t("ra_Ok")),a.createElement(q,{id:`ar_dialog_selectid_cancel_${this.props.dialogName||""}`,color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}function is(s,e,t){if(typeof e=="string"&&(e=e.split(".")),!s)return null;if(e.length===1)return t&&t[s[e[0]]]?t[s[e[0]]]:s[e[0]];const i=e.shift();return is(s[i],e)}function dg(s,e,t){if(typeof e=="string"&&(e=e.split(".")),e.length===1)return s[e[0]]=t;const i=e.shift();return(s[i]===null||s[i]===void 0)&&(s[i]={}),dg(s[i],e,t)}const B={tableContainer:{width:"100%",height:"100%",overflow:"auto"},table:{width:"100%",minWidth:800,maxWidth:1920},cell:{paddingTop:0,paddingBottom:0,paddingLeft:4,paddingRight:4},rowMainWithChildren:{},rowMainWithoutChildren:{},rowNoEdit:{opacity:.3},cellExpand:{width:30},cellButton:{width:30},cellHeader:{fontWeight:"bold",background:s=>(s.palette.mode==="dark","#888"),color:s=>s.palette.mode==="dark"?"#EEE":"#111",height:48,wordBreak:"break-word",whiteSpace:"pre"},width_name_nicknames:{maxWidth:150},width_ioType:{maxWidth:100},width_type:{maxWidth:100},width_displayTraits:{maxWidth:100},width_roomHint:{maxWidth:100},rowSecondary:{fontStyle:"italic"},cellSecondary:{fontSize:10},visuallyHidden:{border:0,clip:"rect(0 0 0 0)",height:1,margin:-1,overflow:"hidden",padding:0,position:"absolute",top:20,width:1},fieldEditWithButton:{width:"calc(100% - 33px)",display:"inline-block"},fieldEdit:{width:"100%",display:"inline-block",lineHeight:"50px",verticalAlign:"middle"},fieldButton:{width:30,display:"inline-block"},colorDialog:{overflow:"hidden",padding:15},subText:{fontSize:10,fontStyle:"italic"},glow:{animation:"glow 0.2s 2 alternate"}};function iN(s,e,t,i){const r=is(s,t,i)||"",o=is(e,t,i)||"";return or?1:0}function uke(s,e,t){return s==="desc"?(i,r)=>iN(i,r,e,t):(i,r)=>-iN(i,r,e,t)}function lke(s,e){const t=s.map((i,r)=>({e:i,i:r}));return t.sort((i,r)=>{const o=e(i.e,r.e);return o||i.i-r.i}),t.map(i=>i.e)}class Pa extends De{selectCallback=null;updateTimeout=null;constructor(e){super(e);let t=(window._localStorage||window.localStorage).getItem(this.props.name||"iob-table")||"[]";try{t=JSON.parse(t)||[]}catch{t=[]}Array.isArray(t)||(t=[]),this.state={opened:t,editMode:!1,deleteMode:!1,editData:null,order:"asc",update:null,orderBy:this.props.columns[0].field,showSelectColor:!1}}componentWillUnmount(){this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null)}static getDerivedStateFromProps(e,t){if(e.glowOnChange){const i=[];let r=0;return e.data&&t.data&&e.data.forEach(o=>{var M;r++;const n=(M=t.data)==null?void 0:M.find(c=>c.id===o.id);n?JSON.stringify(n)!==JSON.stringify(o)&&i.push(o.id):i.push(o.id)}),i.length&&i.length!==r?{data:e.data,update:i}:{data:e.data}}return{data:e.data}}renderCellEdit(e,t){let i=is(e,t.field);return Array.isArray(i)&&(i=i[0]),t.lookup?this.renderCellEditSelect(t,i):t.editComponent?this.renderCellEditCustom(t,i,e):t.type==="boolean"||!t.type&&typeof i=="boolean"?this.renderCellEditBoolean(t,i):t.type==="color"?this.renderCellEditColor(t,i):t.type==="oid"?this.renderCellEditObjectID(t,i):t.type==="numeric"?this.renderCellEditNumber(t,i):this.renderCellEditString(t,i)}onChange(e,t,i){const r=this.state.editData?{...this.state.editData}:{};i===t?delete r[e.field]:r[e.field]=i,this.setState({editData:r})}renderCellEditSelect(e,t){return a.createElement(nt,{variant:"standard",onChange:i=>this.onChange(e,t,i.target.value),value:this.state.editData&&this.state.editData[e.field]||t},e.lookup&&Object.keys(e.lookup).map((i,r)=>{var o;return a.createElement(re,{key:r,value:i},(o=e.lookup)==null?void 0:o[i])}))}renderCellEditString(e,t){return a.createElement(Te,{variant:"standard",style:B.fieldEdit,fullWidth:!0,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:i=>this.onChange(e,t,i.target.value)})}renderCellEditNumber(e,t){return a.createElement(Te,{variant:"standard",style:B.fieldEdit,type:"number",fullWidth:!0,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:i=>this.onChange(e,t,i.target.value)})}renderCellEditCustom(e,t,i){const r=e.editComponent;return this.state.editData&&this.state.editData[e.field]!==void 0&&(t=this.state.editData[e.field],i=JSON.parse(JSON.stringify(i)),i[e.field]=t),r?a.createElement(r,{value:t,rowData:i,onChange:o=>this.onChange(e,t,o)}):null}renderCellEditBoolean(e,t){return a.createElement(ue,{checked:this.state.editData&&this.state.editData[e.field]!==void 0?!!this.state.editData[e.field]:!!t,onChange:i=>this.onChange(e,!!t,i.target.checked),inputProps:{"aria-label":"checkbox"}})}renderSelectColorDialog(){return a.createElement(Ae,{sx:{"& .MuiPaper-root":B.root,"& .MuiPaper-paper":B.paper},onClose:()=>{this.selectCallback=null,this.setState({showSelectColor:!1})},open:this.state.showSelectColor},a.createElement(Mke,{color:this.state.selectIdValue,onChange:e=>this.setState({selectIdValue:e},()=>{this.selectCallback&&this.selectCallback(e)})}))}renderCellEditColor(e,t){const i=this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t;return a.createElement("div",{style:B.fieldEdit},a.createElement(Te,{variant:"standard",fullWidth:!0,style:B.fieldEditWithButton,value:i,inputProps:{style:{backgroundColor:i,color:m.isUseBright(i)?"#FFF":"#000"}},onChange:r=>this.onChange(e,!!t,r.target.value)}),a.createElement(W,{style:B.fieldButton,onClick:()=>{this.selectCallback=r=>this.onChange(e,t,r),this.setState({showSelectColor:!0,selectIdValue:t})},size:"large"},a.createElement(Rj,null)))}renderSelectIdDialog(){return this.state.showSelectId&&this.props.socket?a.createElement(cke,{key:"tableSelect",imagePrefix:"../..",dialogName:this.props.adapterName,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,selected:this.state.selectIdValue,onClose:()=>this.setState({showSelectId:!1}),onOk:e=>{this.setState({showSelectId:!1,selectIdValue:null});const t=Array.isArray(e)?e[0]:e;t&&this.selectCallback&&(this.selectCallback&&this.selectCallback(t),this.selectCallback=null)}}):null}renderCellEditObjectID(e,t){return a.createElement("div",{style:B.fieldEdit},a.createElement(Te,{variant:"standard",fullWidth:!0,style:B.fieldEditWithButton,value:this.state.editData&&this.state.editData[e.field]!==void 0?this.state.editData[e.field]:t,onChange:i=>this.onChange(e,t,i.target.value)}),a.createElement(W,{style:B.fieldButton,onClick:()=>{this.selectCallback=i=>this.onChange(e,t,i),this.setState({showSelectId:!0,selectIdValue:t})},size:"large"},a.createElement(zy,null)))}static renderCellNonEdit(e,t){let i=is(e,t.field,t.lookup);return Array.isArray(i)&&(i=i[0]),t.type==="boolean"?a.createElement(ue,{checked:!!i,disabled:!0,inputProps:{"aria-label":"checkbox"}}):i}renderCell(e,t,i,r){return this.state.editMode===r&&t.editable!=="never"&&t.editable!==!1?a.createElement(it,{key:t.field,style:{...B.cell,...i?B.cellSecondary:void 0,...t.cellStyle},component:"th"},this.renderCellEdit(e,t)):a.createElement(it,{key:t.field,style:{...B.cell,...i?B.cellSecondary:void 0,...t.cellStyle},component:"th"},Pa.renderCellNonEdit(e,t))}static renderCellWithSubField(e,t){const i=is(e,t.field,t.lookup);if(t.subField){const r=is(e,t.subField,t.subLookup);return a.createElement("div",null,a.createElement("div",{style:B.mainText},i),a.createElement("div",{style:{...B.subText,...t.subStyle||void 0}},r))}return a.createElement("div",null,a.createElement("div",{style:B.mainText},i))}renderLine(e,t){const i=this.props.levelShift===void 0?24:this.props.levelShift;t=t||0;const r=this.props.data.indexOf(e);if(!e||!t&&e.parentId||t&&!e.parentId)return null;const o=this.state.opened.includes(e.id),n=this.props.data.filter(c=>c.parentId===e.id),M=a.createElement(kc,{key:e.id,className:`table-row-${(e.id||"").toString().replace(/[.$]/g,"_")}`,style:{...this.state.update&&this.state.update.includes(e.id)&&B.glow||void 0,...B.row,...t?B.rowSecondary:void 0,...!t&&n.length?B.rowMainWithChildren:void 0,...!t&&!n.length?B.rowMainWithoutChildren:void 0,...this.state.editMode!==!1&&this.state.editMode!==r?B.rowNoEdit:void 0,...this.state.deleteMode!==!1&&this.state.deleteMode!==r?B.rowNoEdit:void 0}},a.createElement(it,{style:{...B.cell,...B.cellExpand,...t?B.cellSecondary:void 0}},n.length?a.createElement(W,{onClick:()=>{const c=[...this.state.opened],l=c.indexOf(e.id);l===-1?(c.push(e.id),c.sort()):c.splice(l,1),(window._localStorage||window.localStorage).setItem(this.props.name||"iob-table",JSON.stringify(c)),this.setState({opened:c})},size:"small"},o?a.createElement(Kj,null):a.createElement(uy,null)):null),a.createElement(it,{scope:"row",style:{...B.cell,...t?B.cellSecondary:void 0,...this.props.columns[0].cellStyle,paddingLeft:i*t}},this.props.columns[0].subField?Pa.renderCellWithSubField(e,this.props.columns[0]):is(e,this.props.columns[0].field,this.props.columns[0].lookup)),this.props.columns.map((c,l)=>!l&&!c.hidden?null:this.renderCell(e,c,t,r)),this.props.onUpdate?a.createElement(it,{style:{...B.cell,...B.cellButton}},this.state.editMode===r||this.state.deleteMode===r?a.createElement(W,{disabled:this.state.editMode!==!1&&(!this.state.editData||!Object.keys(this.state.editData).length),onClick:()=>{if(this.state.editMode!==!1){const c=JSON.parse(JSON.stringify(e));this.state.editData&&Object.keys(this.state.editData).forEach(l=>{var N;return dg(c,l,(N=this.state.editData)==null?void 0:N[l])}),this.setState({editMode:!1},()=>this.props.onUpdate&&this.props.onUpdate(c,e))}else this.setState({deleteMode:!1},()=>this.props.onDelete&&this.props.onDelete(e))},size:"large"},a.createElement(We,null)):a.createElement(W,{disabled:this.state.editMode!==!1,onClick:()=>this.setState({editMode:r,editData:null}),size:"large"},a.createElement(or,null))):null,this.props.onDelete&&!this.props.onUpdate?a.createElement(it,{style:{...B.cell,...B.cellButton}},this.state.deleteMode===r?a.createElement(W,{disabled:this.state.editMode!==!1&&(!this.state.editData||!Object.keys(this.state.editData).length),onClick:()=>this.setState({deleteMode:!1},()=>this.props.onDelete&&this.props.onDelete(e)),size:"large"},a.createElement(We,null)):null):null,this.props.onUpdate||this.props.onDelete?a.createElement(it,{style:{...B.cell,...B.cellButton}},this.state.editMode===r||this.state.deleteMode===r?a.createElement(W,{onClick:()=>this.setState({editMode:!1,deleteMode:!1}),size:"large"},a.createElement(we,null)):this.props.onDelete?a.createElement(W,{disabled:this.state.deleteMode!==!1,onClick:()=>this.setState({deleteMode:r}),size:"large"},a.createElement(wt,null)):null):null);if(!t&&o){const c=n.map(l=>this.renderLine(l,t+1));return c.unshift(M),c}return M}handleRequestSort(e){const t=this.state.orderBy===e&&this.state.order==="asc";this.setState({order:t?"desc":"asc",orderBy:e})}renderHead(){return a.createElement(Xg,null,a.createElement(kc,{key:"headerRow"},a.createElement(it,{component:"th",sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B.cellExpand)}),a.createElement(it,{component:"th",sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B[`width_${this.props.columns[0].field.replace(/\./g,"_")}`]),style:this.props.columns[0].headerStyle||this.props.columns[0].cellStyle,sortDirection:this.props.noSort?!1:this.state.orderBy===this.props.columns[0].field?this.state.order:!1},this.props.noSort?null:a.createElement(vc,{active:this.state.orderBy===this.props.columns[0].field,direction:this.state.orderBy===this.props.columns[0].field?this.state.order:"asc",onClick:()=>this.handleRequestSort(this.props.columns[0].field)},this.props.columns[0].title||this.props.columns[0].field,this.state.orderBy===this.props.columns[0].field?a.createElement("span",{style:B.visuallyHidden},this.state.order==="desc"?"sorted descending":"sorted ascending"):null)),this.props.columns.map((e,t)=>!t&&!e.hidden?null:a.createElement(it,{key:e.field,sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B[`width_${e.field.replace(/\./g,"_")}`]),style:e.headerStyle||e.cellStyle,component:"th"},this.props.noSort?null:a.createElement(vc,{active:this.state.orderBy===e.field,direction:this.state.orderBy===e.field?this.state.order:"asc",onClick:()=>this.handleRequestSort(e.field)},e.title||e.field,this.state.orderBy===e.field?a.createElement("span",{style:B.visuallyHidden},this.state.order==="desc"?"sorted descending":"sorted ascending"):null))),this.props.onUpdate?a.createElement(it,{component:"th",sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B.cellButton)},this.props.noAdd?null:a.createElement(bt,{color:"primary",size:"small",disabled:this.state.editMode!==!1,onClick:()=>this.props.onUpdate&&this.props.onUpdate(!0)},a.createElement(Kn,null))):null,this.props.onDelete||this.props.onUpdate?a.createElement(it,{component:"th",sx:m.getStyle(this.props.theme,B.cell,B.cellHeader,B.cellButton)}):null))}render(){const e=this.props.columns.find(t=>t.field===this.state.orderBy);if(e){const t=e.lookup,i=lke(this.props.data,uke(this.state.order,this.state.orderBy,t));return this.state.update&&this.state.update.length&&(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null,this.setState({update:null})},500)),a.createElement("div",{style:B.tableContainer,className:this.props.className},a.createElement(mN,{style:B.table,"aria-label":"simple table",size:"small",stickyHeader:!0},this.renderHead(),a.createElement(Kg,null,i.map(r=>this.renderLine(r)))),this.renderSelectIdDialog(),this.renderSelectColorDialog())}return null}}function rN(s,e){var t=Object.keys(s);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(s);e&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(s,r).enumerable})),t.push.apply(t,i)}return t}function hg(s){for(var e=1;es.length)&&(e=s.length);for(var t=0,i=new Array(e);t
',Oke=Number.isNaN||pt.isNaN;function ee(s){return typeof s=="number"&&!Oke(s)}var TN=function(e){return e>0&&e<1/0};function Fn(s){return typeof s>"u"}function ms(s){return Wa(s)==="object"&&s!==null}var Eke=Object.prototype.hasOwnProperty;function gi(s){if(!ms(s))return!1;try{var e=s.constructor,t=e.prototype;return e&&t&&Eke.call(t,"isPrototypeOf")}catch{return!1}}function Fe(s){return typeof s=="function"}var _ke=Array.prototype.slice;function Eg(s){return Array.from?Array.from(s):_ke.call(s)}function pe(s,e){return s&&Fe(e)&&(Array.isArray(s)||ee(s.length)?Eg(s).forEach(function(t,i){e.call(s,t,i,s)}):ms(s)&&Object.keys(s).forEach(function(t){e.call(s,s[t],t,s)})),s}var ye=Object.assign||function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r0&&i.forEach(function(o){ms(o)&&Object.keys(o).forEach(function(n){e[n]=o[n]})}),e},xke=/\.\d*(?:0|9){12}\d*$/;function Di(s){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return xke.test(s)?Math.round(s*e)/e:s}var Ske=/^width|height|left|top|marginLeft|marginTop$/;function os(s,e){var t=s.style;pe(e,function(i,r){Ske.test(r)&&ee(i)&&(i="".concat(i,"px")),t[r]=i})}function kke(s,e){return s.classList?s.classList.contains(e):s.className.indexOf(e)>-1}function me(s,e){if(e){if(ee(s.length)){pe(s,function(i){me(i,e)});return}if(s.classList){s.classList.add(e);return}var t=s.className.trim();t?t.indexOf(e)<0&&(s.className="".concat(t," ").concat(e)):s.className=e}}function Ct(s,e){if(e){if(ee(s.length)){pe(s,function(t){Ct(t,e)});return}if(s.classList){s.classList.remove(e);return}s.className.indexOf(e)>=0&&(s.className=s.className.replace(e,""))}}function ji(s,e,t){if(e){if(ee(s.length)){pe(s,function(i){ji(i,e,t)});return}t?me(s,e):Ct(s,e)}}var vke=/([a-z\d])([A-Z])/g;function Dc(s){return s.replace(vke,"$1-$2").toLowerCase()}function Xa(s,e){return ms(s[e])?s[e]:s.dataset?s.dataset[e]:s.getAttribute("data-".concat(Dc(e)))}function Dr(s,e,t){ms(t)?s[e]=t:s.dataset?s.dataset[e]=t:s.setAttribute("data-".concat(Dc(e)),t)}function Yke(s,e){if(ms(s[e]))try{delete s[e]}catch{s[e]=void 0}else if(s.dataset)try{delete s.dataset[e]}catch{s.dataset[e]=void 0}else s.removeAttribute("data-".concat(Dc(e)))}var _g=/\s\s*/,xg=(function(){var s=!1;if(ln){var e=!1,t=function(){},i=Object.defineProperty({},"once",{get:function(){return s=!0,e},set:function(o){e=o}});pt.addEventListener("test",t,i),pt.removeEventListener("test",t,i)}return s})();function lt(s,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=t;e.trim().split(_g).forEach(function(o){if(!xg){var n=s.listeners;n&&n[o]&&n[o][t]&&(r=n[o][t],delete n[o][t],Object.keys(n[o]).length===0&&delete n[o],Object.keys(n).length===0&&delete s.listeners)}s.removeEventListener(o,r,i)})}function rt(s,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},r=t;e.trim().split(_g).forEach(function(o){if(i.once&&!xg){var n=s.listeners,M=n===void 0?{}:n;r=function(){delete M[o][t],s.removeEventListener(o,r,i);for(var l=arguments.length,N=new Array(l),u=0;uMath.abs(t)&&(t=L)})}),t}function ro(s,e){var t=s.pageX,i=s.pageY,r={endX:t,endY:i};return e?r:hg({startX:t,startY:i},r)}function Uke(s){var e=0,t=0,i=0;return pe(s,function(r){var o=r.startX,n=r.startY;e+=o,t+=n,i+=1}),e/=i,t/=i,{pageX:e,pageY:t}}function ns(s){var e=s.aspectRatio,t=s.height,i=s.width,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",o=TN(i),n=TN(t);if(o&&n){var M=t*e;r==="contain"&&M>i||r==="cover"&&M90?{width:c,height:M}:{width:M,height:c}}function Pke(s,e,t,i){var r=e.aspectRatio,o=e.naturalWidth,n=e.naturalHeight,M=e.rotate,c=M===void 0?0:M,l=e.scaleX,N=l===void 0?1:l,u=e.scaleY,L=u===void 0?1:u,g=t.aspectRatio,j=t.naturalWidth,y=t.naturalHeight,T=i.fillColor,d=T===void 0?"transparent":T,I=i.imageSmoothingEnabled,w=I===void 0?!0:I,A=i.imageSmoothingQuality,p=A===void 0?"low":A,h=i.maxWidth,C=h===void 0?1/0:h,E=i.maxHeight,O=E===void 0?1/0:E,b=i.minWidth,k=b===void 0?0:b,K=i.minHeight,x=K===void 0?0:K,S=document.createElement("canvas"),R=S.getContext("2d"),he=ns({aspectRatio:g,width:C,height:O}),Xe=ns({aspectRatio:g,width:k,height:x},"cover"),ct=Math.min(he.width,Math.max(Xe.width,j)),bs=Math.min(he.height,Math.max(Xe.height,y)),Nn=ns({aspectRatio:r,width:C,height:O}),bi=ns({aspectRatio:r,width:k,height:x},"cover"),Ui=Math.min(Nn.width,Math.max(bi.width,o)),$i=Math.min(Nn.height,Math.max(bi.height,n)),Yr=[-Ui/2,-$i/2,Ui,$i];return S.width=Di(ct),S.height=Di(bs),R.fillStyle=d,R.fillRect(0,0,ct,bs),R.save(),R.translate(ct/2,bs/2),R.rotate(c*Math.PI/180),R.scale(N,L),R.imageSmoothingEnabled=w,R.imageSmoothingQuality=p,R.drawImage.apply(R,[s].concat(wg(Yr.map(function(Qr){return Math.floor(Di(Qr))})))),R.restore(),S}var kg=String.fromCharCode;function Wke(s,e,t){var i="";t+=e;for(var r=e;r0;)t.push(kg.apply(null,Eg(r.subarray(0,i)))),r=r.subarray(i);return"data:".concat(e,";base64,").concat(btoa(t.join("")))}function Fke(s){var e=new DataView(s),t;try{var i,r,o;if(e.getUint8(0)===255&&e.getUint8(1)===216)for(var n=e.byteLength,M=2;M+1=8&&(o=l+u)}}}if(o){var L=e.getUint16(o,i),g,j;for(j=0;j=0?o:fg),height:Math.max(i.offsetHeight,n>=0?n:Og)};this.containerData=M,os(r,{width:M.width,height:M.height}),me(e,Ge),Ct(r,Ge)},initCanvas:function(){var e=this.containerData,t=this.imageData,i=this.options.viewMode,r=Math.abs(t.rotate)%180===90,o=r?t.naturalHeight:t.naturalWidth,n=r?t.naturalWidth:t.naturalHeight,M=o/n,c=e.width,l=e.height;e.height*M>e.width?i===3?c=e.height*M:l=e.width/M:i===3?l=e.width/M:c=e.height*M;var N={aspectRatio:M,naturalWidth:o,naturalHeight:n,width:c,height:l};this.canvasData=N,this.limited=i===1||i===2,this.limitCanvas(!0,!0),N.width=Math.min(Math.max(N.width,N.minWidth),N.maxWidth),N.height=Math.min(Math.max(N.height,N.minHeight),N.maxHeight),N.left=(e.width-N.width)/2,N.top=(e.height-N.height)/2,N.oldLeft=N.left,N.oldTop=N.top,this.initialCanvasData=ye({},N)},limitCanvas:function(e,t){var i=this.options,r=this.containerData,o=this.canvasData,n=this.cropBoxData,M=i.viewMode,c=o.aspectRatio,l=this.cropped&&n;if(e){var N=Number(i.minCanvasWidth)||0,u=Number(i.minCanvasHeight)||0;M>1?(N=Math.max(N,r.width),u=Math.max(u,r.height),M===3&&(u*c>N?N=u*c:u=N/c)):M>0&&(N?N=Math.max(N,l?n.width:0):u?u=Math.max(u,l?n.height:0):l&&(N=n.width,u=n.height,u*c>N?N=u*c:u=N/c));var L=ns({aspectRatio:c,width:N,height:u});N=L.width,u=L.height,o.minWidth=N,o.minHeight=u,o.maxWidth=1/0,o.maxHeight=1/0}if(t)if(M>(l?0:1)){var g=r.width-o.width,j=r.height-o.height;o.minLeft=Math.min(0,g),o.minTop=Math.min(0,j),o.maxLeft=Math.max(0,g),o.maxTop=Math.max(0,j),l&&this.limited&&(o.minLeft=Math.min(n.left,n.left+(n.width-o.width)),o.minTop=Math.min(n.top,n.top+(n.height-o.height)),o.maxLeft=n.left,o.maxTop=n.top,M===2&&(o.width>=r.width&&(o.minLeft=Math.min(0,g),o.maxLeft=Math.max(0,g)),o.height>=r.height&&(o.minTop=Math.min(0,j),o.maxTop=Math.max(0,j))))}else o.minLeft=-o.width,o.minTop=-o.height,o.maxLeft=r.width,o.maxTop=r.height},renderCanvas:function(e,t){var i=this.canvasData,r=this.imageData;if(t){var o=$ke({width:r.naturalWidth*Math.abs(r.scaleX||1),height:r.naturalHeight*Math.abs(r.scaleY||1),degree:r.rotate||0}),n=o.width,M=o.height,c=i.width*(n/i.naturalWidth),l=i.height*(M/i.naturalHeight);i.left-=(c-i.width)/2,i.top-=(l-i.height)/2,i.width=c,i.height=l,i.aspectRatio=n/M,i.naturalWidth=n,i.naturalHeight=M,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heightt.width?o.height=o.width/i:o.width=o.height*i),this.cropBoxData=o,this.limitCropBox(!0,!0),o.width=Math.min(Math.max(o.width,o.minWidth),o.maxWidth),o.height=Math.min(Math.max(o.height,o.minHeight),o.maxHeight),o.width=Math.max(o.minWidth,o.width*r),o.height=Math.max(o.minHeight,o.height*r),o.left=t.left+(t.width-o.width)/2,o.top=t.top+(t.height-o.height)/2,o.oldLeft=o.left,o.oldTop=o.top,this.initialCropBoxData=ye({},o)},limitCropBox:function(e,t){var i=this.options,r=this.containerData,o=this.canvasData,n=this.cropBoxData,M=this.limited,c=i.aspectRatio;if(e){var l=Number(i.minCropBoxWidth)||0,N=Number(i.minCropBoxHeight)||0,u=M?Math.min(r.width,o.width,o.width+o.left,r.width-o.left):r.width,L=M?Math.min(r.height,o.height,o.height+o.top,r.height-o.top):r.height;l=Math.min(l,r.width),N=Math.min(N,r.height),c&&(l&&N?N*c>l?N=l/c:l=N*c:l?N=l/c:N&&(l=N*c),L*c>u?L=u/c:u=L*c),n.minWidth=Math.min(l,u),n.minHeight=Math.min(N,L),n.maxWidth=u,n.maxHeight=L}t&&(M?(n.minLeft=Math.max(0,o.left),n.minTop=Math.max(0,o.top),n.maxLeft=Math.min(r.width,o.left+o.width)-n.width,n.maxTop=Math.min(r.height,o.top+o.height)-n.height):(n.minLeft=0,n.minTop=0,n.maxLeft=r.width-n.width,n.maxTop=r.height-n.height))},renderCropBox:function(){var e=this.options,t=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=t.width&&i.height>=t.height?Cg:yc),os(this.cropBox,ye({width:i.width,height:i.height},cr({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),di(this.element,Fa,this.getData())}},Vke={initPreview:function(){var e=this.element,t=this.crossOrigin,i=this.options.preview,r=t?this.crossOriginUrl:this.url,o=e.alt||"The image to preview",n=document.createElement("img");if(t&&(n.crossOrigin=t),n.src=r,n.alt=o,this.viewBox.appendChild(n),this.viewBoxImage=n,!!i){var M=i;typeof i=="string"?M=e.ownerDocument.querySelectorAll(i):i.querySelector&&(M=[i]),this.previews=M,pe(M,function(c){var l=document.createElement("img");Dr(c,io,{width:c.offsetWidth,height:c.offsetHeight,html:c.innerHTML}),t&&(l.crossOrigin=t),l.src=r,l.alt=o,l.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',c.innerHTML="",c.appendChild(l)})}},resetPreview:function(){pe(this.previews,function(e){var t=Xa(e,io);os(e,{width:t.width,height:t.height}),e.innerHTML=t.html,Yke(e,io)})},preview:function(){var e=this.imageData,t=this.canvasData,i=this.cropBoxData,r=i.width,o=i.height,n=e.width,M=e.height,c=i.left-t.left-e.left,l=i.top-t.top-e.top;!this.cropped||this.disabled||(os(this.viewBoxImage,ye({width:n,height:M},cr(ye({translateX:-c,translateY:-l},e)))),pe(this.previews,function(N){var u=Xa(N,io),L=u.width,g=u.height,j=L,y=g,T=1;r&&(T=L/r,y=o*T),o&&y>g&&(T=g/o,j=r*T,y=g),os(N,{width:j,height:y}),os(N.getElementsByTagName("img")[0],ye({width:n*T,height:M*T},cr(ye({translateX:-c*T,translateY:-l*T},e))))}))}},Zke={bind:function(){var e=this.element,t=this.options,i=this.cropper;Fe(t.cropstart)&&rt(e,Va,t.cropstart),Fe(t.cropmove)&&rt(e,Ha,t.cropmove),Fe(t.cropend)&&rt(e,Ga,t.cropend),Fe(t.crop)&&rt(e,Fa,t.crop),Fe(t.zoom)&&rt(e,Za,t.zoom),rt(i,cN,this.onCropStart=this.cropStart.bind(this)),t.zoomable&&t.zoomOnWheel&&rt(i,gN,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),t.toggleDragModeOnDblclick&&rt(i,MN,this.onDblclick=this.dblclick.bind(this)),rt(e.ownerDocument,uN,this.onCropMove=this.cropMove.bind(this)),rt(e.ownerDocument,lN,this.onCropEnd=this.cropEnd.bind(this)),t.responsive&&rt(window,LN,this.onResize=this.resize.bind(this))},unbind:function(){var e=this.element,t=this.options,i=this.cropper;Fe(t.cropstart)&<(e,Va,t.cropstart),Fe(t.cropmove)&<(e,Ha,t.cropmove),Fe(t.cropend)&<(e,Ga,t.cropend),Fe(t.crop)&<(e,Fa,t.crop),Fe(t.zoom)&<(e,Za,t.zoom),lt(i,cN,this.onCropStart),t.zoomable&&t.zoomOnWheel&<(i,gN,this.onWheel,{passive:!1,capture:!0}),t.toggleDragModeOnDblclick&<(i,MN,this.onDblclick),lt(e.ownerDocument,uN,this.onCropMove),lt(e.ownerDocument,lN,this.onCropEnd),t.responsive&<(window,LN,this.onResize)}},Xke={resize:function(){if(!this.disabled){var e=this.options,t=this.container,i=this.containerData,r=t.offsetWidth/i.width,o=t.offsetHeight/i.height,n=Math.abs(r-1)>Math.abs(o-1)?r:o;if(n!==1){var M,c;e.restore&&(M=this.getCanvasData(),c=this.getCropBoxData()),this.render(),e.restore&&(this.setCanvasData(pe(M,function(l,N){M[N]=l*n})),this.setCropBoxData(pe(c,function(l,N){c[N]=l*n})))}}},dblclick:function(){this.disabled||this.options.dragMode===mg||this.setDragMode(kke(this.dragBox,Ba)?Ag:Tc)},wheel:function(e){var t=this,i=Number(this.options.wheelZoomRatio)||.1,r=1;this.disabled||(e.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){t.wheeling=!1},50),e.deltaY?r=e.deltaY>0?1:-1:e.wheelDelta?r=-e.wheelDelta/120:e.detail&&(r=e.detail>0?1:-1),this.zoom(-r*i,e)))},cropStart:function(e){var t=e.buttons,i=e.button;if(!(this.disabled||(e.type==="mousedown"||e.type==="pointerdown"&&e.pointerType==="mouse")&&(ee(t)&&t!==1||ee(i)&&i!==0||e.ctrlKey))){var r=this.options,o=this.pointers,n;e.changedTouches?pe(e.changedTouches,function(M){o[M.identifier]=ro(M)}):o[e.pointerId||0]=ro(e),Object.keys(o).length>1&&r.zoomable&&r.zoomOnTouch?n=pg:n=Xa(e.target,Tr),Cke.test(n)&&di(this.element,Va,{originalEvent:e,action:n})!==!1&&(e.preventDefault(),this.action=n,this.cropping=!1,n===Ig&&(this.cropping=!0,me(this.dragBox,So)))}},cropMove:function(e){var t=this.action;if(!(this.disabled||!t)){var i=this.pointers;e.preventDefault(),di(this.element,Ha,{originalEvent:e,action:t})!==!1&&(e.changedTouches?pe(e.changedTouches,function(r){ye(i[r.identifier]||{},ro(r,!0))}):ye(i[e.pointerId||0]||{},ro(e,!0)),this.change(e))}},cropEnd:function(e){if(!this.disabled){var t=this.action,i=this.pointers;e.changedTouches?pe(e.changedTouches,function(r){delete i[r.identifier]}):delete i[e.pointerId||0],t&&(e.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,ji(this.dragBox,So,this.cropped&&this.options.modal)),di(this.element,Ga,{originalEvent:e,action:t}))}}},Kke={change:function(e){var t=this.options,i=this.canvasData,r=this.containerData,o=this.cropBoxData,n=this.pointers,M=this.action,c=t.aspectRatio,l=o.left,N=o.top,u=o.width,L=o.height,g=l+u,j=N+L,y=0,T=0,d=r.width,I=r.height,w=!0,A;!c&&e.shiftKey&&(c=u&&L?u/L:1),this.limited&&(y=o.minLeft,T=o.minTop,d=y+Math.min(r.width,i.width,i.left+i.width),I=T+Math.min(r.height,i.height,i.top+i.height));var p=n[Object.keys(n)[0]],h={x:p.endX-p.startX,y:p.endY-p.startY},C=function(O){switch(O){case js:g+h.x>d&&(h.x=d-g);break;case ys:l+h.xI&&(h.y=I-j);break}};switch(M){case yc:l+=h.x,N+=h.y;break;case js:if(h.x>=0&&(g>=d||c&&(N<=T||j>=I))){w=!1;break}C(js),u+=h.x,u<0&&(M=ys,u=-u,l-=u),c&&(L=u/c,N+=(o.height-L)/2);break;case Vt:if(h.y<=0&&(N<=T||c&&(l<=y||g>=d))){w=!1;break}C(Vt),L-=h.y,N+=h.y,L<0&&(M=Gs,L=-L,N-=L),c&&(u=L*c,l+=(o.width-u)/2);break;case ys:if(h.x<=0&&(l<=y||c&&(N<=T||j>=I))){w=!1;break}C(ys),u-=h.x,l+=h.x,u<0&&(M=js,u=-u,l-=u),c&&(L=u/c,N+=(o.height-L)/2);break;case Gs:if(h.y>=0&&(j>=I||c&&(l<=y||g>=d))){w=!1;break}C(Gs),L+=h.y,L<0&&(M=Vt,L=-L,N-=L),c&&(u=L*c,l+=(o.width-u)/2);break;case Hi:if(c){if(h.y<=0&&(N<=T||g>=d)){w=!1;break}C(Vt),L-=h.y,N+=h.y,u=L*c}else C(Vt),C(js),h.x>=0?gT&&(L-=h.y,N+=h.y):(L-=h.y,N+=h.y);u<0&&L<0?(M=Xi,L=-L,u=-u,N-=L,l-=u):u<0?(M=Vi,u=-u,l-=u):L<0&&(M=Zi,L=-L,N-=L);break;case Vi:if(c){if(h.y<=0&&(N<=T||l<=y)){w=!1;break}C(Vt),L-=h.y,N+=h.y,u=L*c,l+=o.width-u}else C(Vt),C(ys),h.x<=0?l>y?(u-=h.x,l+=h.x):h.y<=0&&N<=T&&(w=!1):(u-=h.x,l+=h.x),h.y<=0?N>T&&(L-=h.y,N+=h.y):(L-=h.y,N+=h.y);u<0&&L<0?(M=Zi,L=-L,u=-u,N-=L,l-=u):u<0?(M=Hi,u=-u,l-=u):L<0&&(M=Xi,L=-L,N-=L);break;case Xi:if(c){if(h.x<=0&&(l<=y||j>=I)){w=!1;break}C(ys),u-=h.x,l+=h.x,L=u/c}else C(Gs),C(ys),h.x<=0?l>y?(u-=h.x,l+=h.x):h.y>=0&&j>=I&&(w=!1):(u-=h.x,l+=h.x),h.y>=0?j=0&&(g>=d||j>=I)){w=!1;break}C(js),u+=h.x,L=u/c}else C(Gs),C(js),h.x>=0?g=0&&j>=I&&(w=!1):u+=h.x,h.y>=0?j0?M=h.y>0?Zi:Hi:h.x<0&&(l-=u,M=h.y>0?Xi:Vi),h.y<0&&(N-=L),this.cropped||(Ct(this.cropBox,Ge),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}w&&(o.width=u,o.height=L,o.left=l,o.top=N,this.action=M,this.renderCropBox()),pe(n,function(E){E.startX=E.endX,E.startY=E.endY})}},qke={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&me(this.dragBox,So),Ct(this.cropBox,Ge),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=ye({},this.initialImageData),this.canvasData=ye({},this.initialCanvasData),this.cropBoxData=ye({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(ye(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),Ct(this.dragBox,So),me(this.cropBox,Ge)),this},replace:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&e&&(this.isImg&&(this.element.src=e),t?(this.url=e,this.image.src=e,this.ready&&(this.viewBoxImage.src=e,pe(this.previews,function(i){i.getElementsByTagName("img")[0].src=e}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(e))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,Ct(this.cropper,nN)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,me(this.cropper,nN)),this},destroy:function(){var e=this.element;return e[ge]?(e[ge]=void 0,this.isImg&&this.replaced&&(e.src=this.originalUrl),this.uncreate(),this):this},move:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,i=this.canvasData,r=i.left,o=i.top;return this.moveTo(Fn(e)?e:r+Number(e),Fn(t)?t:o+Number(t))},moveTo:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,i=this.canvasData,r=!1;return e=Number(e),t=Number(t),this.ready&&!this.disabled&&this.options.movable&&(ee(e)&&(i.left=e,r=!0),ee(t)&&(i.top=t,r=!0),r&&this.renderCanvas(!0)),this},zoom:function(e,t){var i=this.canvasData;return e=Number(e),e<0?e=1/(1-e):e=1+e,this.zoomTo(i.width*e/i.naturalWidth,null,t)},zoomTo:function(e,t,i){var r=this.options,o=this.canvasData,n=o.width,M=o.height,c=o.naturalWidth,l=o.naturalHeight;if(e=Number(e),e>=0&&this.ready&&!this.disabled&&r.zoomable){var N=c*e,u=l*e;if(di(this.element,Za,{ratio:e,oldRatio:n/c,originalEvent:i})===!1)return this;if(i){var L=this.pointers,g=Sg(this.cropper),j=L&&Object.keys(L).length?Uke(L):{pageX:i.pageX,pageY:i.pageY};o.left-=(N-n)*((j.pageX-g.left-o.left)/n),o.top-=(u-M)*((j.pageY-g.top-o.top)/M)}else gi(t)&&ee(t.x)&&ee(t.y)?(o.left-=(N-n)*((t.x-o.left)/n),o.top-=(u-M)*((t.y-o.top)/M)):(o.left-=(N-n)/2,o.top-=(u-M)/2);o.width=N,o.height=u,this.renderCanvas(!0)}return this},rotate:function(e){return this.rotateTo((this.imageData.rotate||0)+Number(e))},rotateTo:function(e){return e=Number(e),ee(e)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=e%360,this.renderCanvas(!0,!0)),this},scaleX:function(e){var t=this.imageData.scaleY;return this.scale(e,ee(t)?t:1)},scaleY:function(e){var t=this.imageData.scaleX;return this.scale(ee(t)?t:1,e)},scale:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,i=this.imageData,r=!1;return e=Number(e),t=Number(t),this.ready&&!this.disabled&&this.options.scalable&&(ee(e)&&(i.scaleX=e,r=!0),ee(t)&&(i.scaleY=t,r=!0),r&&this.renderCanvas(!0,!0)),this},getData:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.options,i=this.imageData,r=this.canvasData,o=this.cropBoxData,n;if(this.ready&&this.cropped){n={x:o.left-r.left,y:o.top-r.top,width:o.width,height:o.height};var M=i.width/i.naturalWidth;if(pe(n,function(N,u){n[u]=N/M}),e){var c=Math.round(n.y+n.height),l=Math.round(n.x+n.width);n.x=Math.round(n.x),n.y=Math.round(n.y),n.width=l-n.x,n.height=c-n.y}}else n={x:0,y:0,width:0,height:0};return t.rotatable&&(n.rotate=i.rotate||0),t.scalable&&(n.scaleX=i.scaleX||1,n.scaleY=i.scaleY||1),n},setData:function(e){var t=this.options,i=this.imageData,r=this.canvasData,o={};if(this.ready&&!this.disabled&&gi(e)){var n=!1;t.rotatable&&ee(e.rotate)&&e.rotate!==i.rotate&&(i.rotate=e.rotate,n=!0),t.scalable&&(ee(e.scaleX)&&e.scaleX!==i.scaleX&&(i.scaleX=e.scaleX,n=!0),ee(e.scaleY)&&e.scaleY!==i.scaleY&&(i.scaleY=e.scaleY,n=!0)),n&&this.renderCanvas(!0,!0);var M=i.width/i.naturalWidth;ee(e.x)&&(o.left=e.x*M+r.left),ee(e.y)&&(o.top=e.y*M+r.top),ee(e.width)&&(o.width=e.width*M),ee(e.height)&&(o.height=e.height*M),this.setCropBoxData(o)}return this},getContainerData:function(){return this.ready?ye({},this.containerData):{}},getImageData:function(){return this.sized?ye({},this.imageData):{}},getCanvasData:function(){var e=this.canvasData,t={};return this.ready&&pe(["left","top","width","height","naturalWidth","naturalHeight"],function(i){t[i]=e[i]}),t},setCanvasData:function(e){var t=this.canvasData,i=t.aspectRatio;return this.ready&&!this.disabled&&gi(e)&&(ee(e.left)&&(t.left=e.left),ee(e.top)&&(t.top=e.top),ee(e.width)?(t.width=e.width,t.height=e.width/i):ee(e.height)&&(t.height=e.height,t.width=e.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var e=this.cropBoxData,t;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(e){var t=this.cropBoxData,i=this.options.aspectRatio,r,o;return this.ready&&this.cropped&&!this.disabled&&gi(e)&&(ee(e.left)&&(t.left=e.left),ee(e.top)&&(t.top=e.top),ee(e.width)&&e.width!==t.width&&(r=!0,t.width=e.width),ee(e.height)&&e.height!==t.height&&(o=!0,t.height=e.height),i&&(r?t.height=t.width/i:o&&(t.width=t.height*i)),this.renderCropBox()),this},getCroppedCanvas:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var t=this.canvasData,i=Pke(this.image,this.imageData,t,e);if(!this.cropped)return i;var r=this.getData(e.rounded),o=r.x,n=r.y,M=r.width,c=r.height,l=i.width/Math.floor(t.naturalWidth);l!==1&&(o*=l,n*=l,M*=l,c*=l);var N=M/c,u=ns({aspectRatio:N,width:e.maxWidth||1/0,height:e.maxHeight||1/0}),L=ns({aspectRatio:N,width:e.minWidth||0,height:e.minHeight||0},"cover"),g=ns({aspectRatio:N,width:e.width||(l!==1?i.width:M),height:e.height||(l!==1?i.height:c)}),j=g.width,y=g.height;j=Math.min(u.width,Math.max(L.width,j)),y=Math.min(u.height,Math.max(L.height,y));var T=document.createElement("canvas"),d=T.getContext("2d");T.width=Di(j),T.height=Di(y),d.fillStyle=e.fillColor||"transparent",d.fillRect(0,0,j,y);var I=e.imageSmoothingEnabled,w=I===void 0?!0:I,A=e.imageSmoothingQuality;d.imageSmoothingEnabled=w,A&&(d.imageSmoothingQuality=A);var p=i.width,h=i.height,C=o,E=n,O,b,k,K,x,S;C<=-M||C>p?(C=0,O=0,k=0,x=0):C<=0?(k=-C,C=0,O=Math.min(p,M+C),x=O):C<=p&&(k=0,O=Math.min(M,p-C),x=O),O<=0||E<=-c||E>h?(E=0,b=0,K=0,S=0):E<=0?(K=-E,E=0,b=Math.min(h,c+E),S=b):E<=h&&(K=0,b=Math.min(c,h-E),S=b);var R=[C,E,O,b];if(x>0&&S>0){var he=j/M;R.push(k*he,K*he,x*he,S*he)}return d.drawImage.apply(d,[i].concat(wg(R.map(function(Xe){return Math.floor(Di(Xe))})))),T},setAspectRatio:function(e){var t=this.options;return!this.disabled&&!Fn(e)&&(t.aspectRatio=Math.max(0,e)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(e){var t=this.options,i=this.dragBox,r=this.face;if(this.ready&&!this.disabled){var o=e===Tc,n=t.movable&&e===Ag;e=o||n?e:mg,t.dragMode=e,Dr(i,Tr,e),ji(i,Ba,o),ji(i,Ra,n),t.cropBoxMovable||(Dr(r,Tr,e),ji(r,Ba,o),ji(r,Ra,n))}return this}},eve=pt.Cropper,vg=(function(){function s(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(Lke(this,s),!e||!mke.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=ye({},yN,gi(t)&&t),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return gke(s,[{key:"init",value:function(){var t=this.element,i=t.tagName.toLowerCase(),r;if(!t[ge]){if(t[ge]=this,i==="img"){if(this.isImg=!0,r=t.getAttribute("src")||"",this.originalUrl=r,!r)return;r=t.src}else i==="canvas"&&window.HTMLCanvasElement&&(r=t.toDataURL());this.load(r)}}},{key:"load",value:function(t){var i=this;if(t){this.url=t,this.imageData={};var r=this.element,o=this.options;if(!o.rotatable&&!o.scalable&&(o.checkOrientation=!1),!o.checkOrientation||!window.ArrayBuffer){this.clone();return}if(pke.test(t)){Ake.test(t)?this.read(Bke(t)):this.clone();return}var n=new XMLHttpRequest,M=this.clone.bind(this);this.reloading=!0,this.xhr=n,n.onabort=M,n.onerror=M,n.ontimeout=M,n.onprogress=function(){n.getResponseHeader("content-type")!==jN&&n.abort()},n.onload=function(){i.read(n.response)},n.onloadend=function(){i.reloading=!1,i.xhr=null},o.checkCrossOrigin&&DN(t)&&r.crossOrigin&&(t=dN(t)),n.open("GET",t,!0),n.responseType="arraybuffer",n.withCredentials=r.crossOrigin==="use-credentials",n.send()}}},{key:"read",value:function(t){var i=this.options,r=this.imageData,o=Fke(t),n=0,M=1,c=1;if(o>1){this.url=Rke(t,jN);var l=Gke(o);n=l.rotate,M=l.scaleX,c=l.scaleY}i.rotatable&&(r.rotate=n),i.scalable&&(r.scaleX=M,r.scaleY=c),this.clone()}},{key:"clone",value:function(){var t=this.element,i=this.url,r=t.crossOrigin,o=i;this.options.checkCrossOrigin&&DN(i)&&(r||(r="anonymous"),o=dN(i)),this.crossOrigin=r,this.crossOriginUrl=o;var n=document.createElement("img");r&&(n.crossOrigin=r),n.src=o||i,n.alt=t.alt||"The image to crop",this.image=n,n.onload=this.start.bind(this),n.onerror=this.stop.bind(this),me(n,aN),t.parentNode.insertBefore(n,t.nextSibling)}},{key:"start",value:function(){var t=this,i=this.image;i.onload=null,i.onerror=null,this.sizing=!0;var r=pt.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(pt.navigator.userAgent),o=function(l,N){ye(t.imageData,{naturalWidth:l,naturalHeight:N,aspectRatio:l/N}),t.initialImageData=ye({},t.imageData),t.sizing=!1,t.sized=!0,t.build()};if(i.naturalWidth&&!r){o(i.naturalWidth,i.naturalHeight);return}var n=document.createElement("img"),M=document.body||document.documentElement;this.sizingImage=n,n.onload=function(){o(n.width,n.height),r||M.removeChild(n)},n.src=i.src,r||(n.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",M.appendChild(n))}},{key:"stop",value:function(){var t=this.image;t.onload=null,t.onerror=null,t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var t=this.element,i=this.options,r=this.image,o=t.parentNode,n=document.createElement("div");n.innerHTML=fke;var M=n.querySelector(".".concat(ge,"-container")),c=M.querySelector(".".concat(ge,"-canvas")),l=M.querySelector(".".concat(ge,"-drag-box")),N=M.querySelector(".".concat(ge,"-crop-box")),u=N.querySelector(".".concat(ge,"-face"));this.container=o,this.cropper=M,this.canvas=c,this.dragBox=l,this.cropBox=N,this.viewBox=M.querySelector(".".concat(ge,"-view-box")),this.face=u,c.appendChild(r),me(t,Ge),o.insertBefore(M,t.nextSibling),Ct(r,aN),this.initPreview(),this.bind(),i.initialAspectRatio=Math.max(0,i.initialAspectRatio)||NaN,i.aspectRatio=Math.max(0,i.aspectRatio)||NaN,i.viewMode=Math.max(0,Math.min(3,Math.round(i.viewMode)))||0,me(N,Ge),i.guides||me(N.getElementsByClassName("".concat(ge,"-dashed")),Ge),i.center||me(N.getElementsByClassName("".concat(ge,"-center")),Ge),i.background&&me(M,"".concat(ge,"-bg")),i.highlight||me(u,hke),i.cropBoxMovable&&(me(u,Ra),Dr(u,Tr,yc)),i.cropBoxResizable||(me(N.getElementsByClassName("".concat(ge,"-line")),Ge),me(N.getElementsByClassName("".concat(ge,"-point")),Ge)),this.render(),this.ready=!0,this.setDragMode(i.dragMode),i.autoCrop&&this.crop(),this.setData(i.data),Fe(i.ready)&&rt(t,NN,i.ready,{once:!0}),di(t,NN)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var t=this.cropper.parentNode;t&&t.removeChild(this.cropper),Ct(this.element,Ge)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=eve,s}},{key:"setDefaults",value:function(t){ye(yN,gi(t)&&t)}}])})();ye(vg.prototype,Hke,Vke,Zke,Xke,Kke,qke);var zs=function(){return zs=Object.assign||function(s){for(var e,t=1,i=arguments.length;t0&&E.zoomTo(Xe)})(C.currentTarget.cropper,w),T&&T(C)}}));d&&d(h)}return function(){var C,E;(E=(C=A.current)===null||C===void 0?void 0:C.cropper)===null||E===void 0||E.destroy()}}),[A]);var p=(function(h){return tve.reduce((function(C,E){var O=C,b=E;return O[b],Hn(O,[typeof b=="symbol"?b:b+""])}),h)})(zs(zs({},I),{crossOrigin:c,src:o,alt:y}));return a.createElement("div",{style:n,className:M},a.createElement("img",zs({},p,{style:sve,ref:A})))}));const rve=` /*! * Cropper.js v1.5.12 * https://fengyuanchen.github.io/cropperjs @@ -963,7 +963,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho .cropper-disabled .cropper-point { cursor: not-allowed; } -`,Re={dropZone:{width:"100%",height:100,position:"relative"},dropZoneEmpty:{},image:{objectFit:"contain",margin:"auto",display:"flex",width:"100%",height:"100%"},uploadDiv:{position:"relative",width:"100%",height:300,opacity:.9,marginTop:30,cursor:"pointer",outline:"none"},uploadDivDragging:{opacity:1,background:"rgba(128,255,128,0.1)"},uploadCenterDiv:{margin:5,border:"3px dashed grey",borderRadius:5,width:"calc(100% - 10px)",height:"calc(100% - 10px)",position:"relative",display:"flex"},uploadCenterIcon:{paddingTop:10,width:48,height:48},uploadCenterText:{fontSize:16},uploadCenterTextAndIcon:{textAlign:"center",position:"absolute",top:0,bottom:0,left:0,right:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},disabledOpacity:{opacity:.3,cursor:"default"},buttonRemoveWrapper:{position:"absolute",zIndex:222,right:0},buttonCropWrapper:{position:"absolute",zIndex:222,right:0,top:50},error:{border:"2px solid red",boxSizing:"border-box"}};class Hve extends De{cropperRef;constructor(e){if(super(e),this.state={uploadFile:!1,anchorEl:null,cropHandler:!1},this.cropperRef=pN(),!window.document.getElementById("cropper-style-json-component")){const t=window.document.createElement("style");t.setAttribute("id","cropper-style-json-component"),t.innerHTML=nve,window.document.head.appendChild(t)}}onDrop(e){const t=this.props.onChange,i=this.props.maxSize||10*1024,r=e[0],o=new FileReader;o.onabort=()=>console.log("file reading was aborted"),o.onerror=()=>console.log("file reading has failed"),o.onload=()=>{var c,l;if(!r||!r.name)return;const n=(c=r.name)==null?void 0:c.split(".");let M=n!=null&&n.length?`image/${(l=n.pop())==null?void 0:l.toLowerCase()}`:"image/jpeg";if(M==="image/jpg"?M="image/jpeg":M.includes("svg")&&(M="image/svg+xml"),r.size>i)window.alert(D.t("ra_File is too big. Max %sk allowed. Try use SVG.",Math.round(i/1024)));else{const N=`data:${M};base64,${btoa(new Uint8Array(o.result).reduce((u,L)=>u+String.fromCharCode(L),""))}`;t?t(N):console.log(N)}},o.readAsArrayBuffer(r)}render(){const{disabled:e,icon:t,removeIconFunc:i,error:r,crop:o,onChange:n}=this.props,M=this.props.maxSize||10*1024;let c=this.props.accept||{"image/*":[]};const{uploadFile:l,anchorEl:N,cropHandler:u}=this.state;if(typeof c=="string")c={[c]:[]};else if(Array.isArray(c)){const L={};c.forEach(g=>{L[g]=[]}),c=L}return a.createElement(_N,{disabled:!!e||u,key:"dropzone",multiple:!1,accept:c,maxSize:M,onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:(L,g)=>{var j,y,T;this.setState({uploadFile:!1}),L.length?this.onDrop(L):window.alert(((T=(y=(j=g==null?void 0:g[0])==null?void 0:j.errors)==null?void 0:y[0])==null?void 0:T.message)||D.t("ra_Cannot upload"))}},({getRootProps:L,getInputProps:g})=>a.createElement("div",{style:{...Re.uploadDiv,...l==="dragging"?Re.uploadDivDragging:void 0,...Re.dropZone,...e?Re.disabledOpacity:void 0,...t?void 0:Re.dropZoneEmpty},...L()},a.createElement("input",{...g()}),a.createElement("div",{style:{...Re.uploadCenterDiv,...r?Re.error:void 0}},t?i&&!u&&a.createElement("div",{style:Re.buttonRemoveWrapper},a.createElement(Le,{title:D.t("ra_Clear"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},a.createElement(W,{size:"large",onClick:j=>{i&&i(),j.stopPropagation()}},a.createElement(we,null)))):a.createElement("div",{style:Re.uploadCenterTextAndIcon},a.createElement(Ty,{style:Re.uploadCenterIcon}),a.createElement("div",{style:Re.uploadCenterText},l==="dragging"?D.t("ra_Drop file here"):D.t("ra_Place your files here or click here to open the browse dialog"))),t&&o&&a.createElement("div",{style:Re.buttonCropWrapper},a.createElement(Le,{title:D.t("ra_Crop"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},a.createElement(W,{size:"large",onClick:j=>{u?this.setState({anchorEl:j.currentTarget}):this.setState({cropHandler:!0}),j.stopPropagation()}},a.createElement(Vj,{color:u?"primary":"inherit"}))),a.createElement(ws,{anchorEl:N,keepMounted:!0,open:!!N,onClose:()=>this.setState({anchorEl:null})},a.createElement(re,{onClick:()=>this.setState({anchorEl:null,cropHandler:!1},()=>{var y,T;const j=(T=(y=this.cropperRef)==null?void 0:y.current)==null?void 0:T.cropper;j&&(n?n(j.getCroppedCanvas().toDataURL()):console.log(j.getCroppedCanvas().toDataURL()))})},D.t("ra_Save")),a.createElement(re,{onClick:()=>this.setState({anchorEl:null,cropHandler:!1})},D.t("ra_Close")))),t&&!u?a.createElement(be,{src:t,style:Re.image,alt:"icon"}):null,t&&o&&u?a.createElement(ove,{ref:this.cropperRef,style:Re.image,src:t,initialAspectRatio:1,viewMode:1,guides:!1,minCropBoxHeight:10,minCropBoxWidth:10,background:!1,checkOrientation:!1}):null)))}}const Zt={mainDiv:{width:"100%",height:"100%",overflow:"auto"},formControl:{margin:0,minWidth:120},formControlMarginRight:{marginRight:5},formControlPaddingTop:{paddingTop:6.2}},ave={once:"once"},Ye={seconds:"seconds",minutes:"minutes"},wN=["ra_Sunday","ra_Monday","ra_Tuesday","ra_Wednesday","ra_Thursday","ra_Friday","ra_Saturday","ra_Sunday"];function zt(s){return s<10?`0${s}`:`${s}`}const Mve={mode:"interval",interval:{period:1,unit:Ye.minutes}};function Lo(s){if(s==="*")return[0,1,2,3,4,5,6];const e=s.split(","),t=[];return e.forEach(i=>{const r=i.split("-");if(r.length===2){const o=parseInt(r[0],10),n=parseInt(r[1],10);for(let M=o;M<=n;M++)t.includes(M===7?0:M)||t.push(M===7?0:M)}else{i==="7"&&(i="0");const o=parseInt(i,10);t.includes(o)||t.push(o)}}),t.sort(),t}function Qg(s,e){s=s.replace(/['"]/g,"").trim();const t=s.split(" ");let i,r=null;return t.length===6?i={seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",date:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:i={seconds:null,minutes:t[0]||"*",hours:t[1]||"*",date:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},i.seconds===null&&i.minutes==="*"&&i.hours==="*"&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)&&(r={mode:"interval",interval:{period:1,unit:Ye.minutes}}),i.seconds==="*"&&i.minutes==="*"&&i.hours==="*"&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"interval",interval:{period:1,unit:Ye.seconds}}:i.seconds===null&&i.minutes.includes("/")&&i.hours==="*"&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"interval",interval:{period:parseInt(i.minutes.split("/")[1],10),unit:Ye.minutes}}:i.seconds!==null&&i.seconds.includes("/")&&i.minutes==="*"&&i.hours==="*"&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"interval",interval:{period:parseInt(i.seconds.split("/")[1],10),unit:Ye.seconds}}:i.seconds!==null&&i.seconds.includes("/")&&i.minutes==="*"&&i.hours.includes("-")&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"intervalBetween",intervalBetween:{period:parseInt(i.seconds.split("/")[1],10),unit:Ye.seconds,timeFrom:parseInt(i.hours.split("-")[0],10),timeTo:parseInt(i.hours.split("-")[1],10),weekdays:Lo(i.dow)}}:i.seconds===null&&i.minutes.includes("/")&&i.hours.includes("-")&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"intervalBetween",intervalBetween:{period:parseInt(i.minutes.split("/")[1],10),unit:Ye.minutes,timeFrom:parseInt(i.hours.split("-")[0],10),timeTo:parseInt(i.hours.split("-")[1],10),weekdays:Lo(i.dow)}}:i.seconds===null&&parseInt(i.minutes,10).toString()===i.minutes&&parseInt(i.hours,10).toString()===i.hours&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"specific",specific:{time:`${zt(parseInt(i.hours,10))}:${zt(parseInt(i.minutes,10))}`,weekdays:Lo(i.dow)}}:i.seconds===null&&parseInt(i.minutes,10).toString()===i.minutes&&parseInt(i.hours,10).toString()===i.hours&&parseInt(i.date,10).toString()===i.date&&parseInt(i.months,10).toString()===i.months&&(i.dow==="*"||e)&&(r={mode:"once",once:{time:`${zt(parseInt(i.hours,10))}:${zt(parseInt(i.minutes,10))}`,date:`${zt(parseInt(i.date,10))}.${zt(parseInt(i.months,10))}`}}),r}class dr extends a.Component{constructor(e){super(e);let t=typeof e.cronExpression=="string"?e.cronExpression.replace(/^["']/,"").replace(/["']\n?$/,""):"";t[0]==="{"&&(t="");const i=Qg(t||"* * * * *",!0)||Mve;this.state={extended:!1,cron:dr.state2cron(i),mode:"interval",once:{time:"00:00",date:""},interval:{period:1,unit:Ye.minutes},intervalBetween:{period:1,unit:Ye.minutes,timeFrom:0,timeTo:23,weekdays:[0,1,2,3,4,5,6]},specific:{time:"00:00",weekdays:[0,1,2,3,4,5,6]}},Object.assign(this.state,i),this.state.cron!==e.cronExpression&&setTimeout(()=>e.onChange&&e.onChange(this.state.cron),100)}static periodArray2text(e,t=7){if(t=t||7,e.length===t)return"*";const i=[];let r=null,o=null;if(!e.length)return"_";for(let n=0;n60&&(i.period=60),i.period!==void 0&&i.period<1&&(i.period=1),i.minutes!==void 0&&i.minutes!==null&&i.minutes>60&&(i.minutes=60),i.minutes!==void 0&&i.minutes!==null&&i.minutes<1&&(i.minutes=1),i.hours!==void 0&&i.hours!==null&&i.hours>24&&(i.hours=24),i.hours!==void 0&&i.hours!==null&&i.hours<1&&(i.hours=1),e.extended)t=`${i.minutes!==void 0&&i.minutes!==null&&i.minutes>1?`*/${i.minutes}`:"*"} ${i.hours!==void 0&&i.hours!==null&&i.hours>1?`*/${i.hours}`:"*"} * * *`;else switch(i.unit){case Ye.seconds:t=`${i.period>1?`*/${i.period}`:"*"} * * * * *`;break;case Ye.minutes:t=`${i.period>1?`*/${i.period}`:"*"} * * * *`;break}}else if(e.mode==="intervalBetween"){const i=e.intervalBetween||{period:1,unit:Ye.minutes,timeFrom:0,timeTo:24,weekdays:[0,1,2,3,4,5,6]};let r;switch(i.timeFrom=i.timeFrom||0,i.timeTo=i.timeTo===void 0?24:i.timeTo,i.timeFrom!==0&&i.timeTo===24&&(i.timeTo=23),i.timeFrom===0&&i.timeTo===24?r="*":r=i.timeFrom!==i.timeTo?`${i.timeFrom}-${i.timeTo}`:"*",i.period>60&&(i.period=60),i.period<1&&(i.period=1),i.unit=i.unit||Ye.minutes,i.unit){case Ye.seconds:t=`${i.period>1?`*/${i.period}`:"*"} * ${r} * * ${this.periodArray2text(i.weekdays)}`;break;case Ye.minutes:t=`${i.period>1?`*/${i.period}`:"*"} ${r} * * ${this.periodArray2text(i.weekdays)}`;break}}else if(e.mode==="specific"){const i=e.specific||{time:"00:00",weekdays:[0,1,2,3,4,5,6]},r=(i.time||"00:00").split(":");let o=parseInt(r[1],10)||0;o>59&&(o=59),o<0&&(o=0);let n=parseInt(r[0],10)||0;n>23&&(n=23),n<0&&(n=0),t=`${o} ${n} * * ${this.periodArray2text(i.weekdays||[])}`}else if(e.mode==="once"){const i=e.once||{time:"00:00",date:""};i.date||(i.date=`${new Date().getDate()}.${zt(new Date().getMonth()+1)}`);const r=(i.time||"00:00").split(":"),o=i.date.split(".");let n=parseInt(r[1],10)||0;n>59&&(n=59),n<0&&(n=0);let M=parseInt(r[0],10)||0;M>23&&(M=23),M<0&&(M=0);let c=parseInt(o[0],10)||1;c>31&&(c=31),c<1&&(c=1);let l=parseInt(o[1],10)||1;l>12&&(l=12),l<1&&(l=1),t=`${n} ${M} ${c} ${l} *`}return t}recalcCron(){this.onChange(dr.state2cron(this.state))}getControlsWeekdaysElements(e){const t=e==="intervalBetween"?this.state.intervalBetween:this.state.specific;return a.createElement("div",{key:"weekdays",style:{paddingLeft:8,width:"calc(100% - 8px)",maxWidth:600}},a.createElement("h5",null,D.t("ra_On weekdays")),[1,2,3,4,5,6,0].map(i=>a.createElement(V,{key:wN[i],control:a.createElement(ue,{checked:t.weekdays.includes(i),onChange:r=>{const o=JSON.parse(JSON.stringify(this.state[e])),n=o.weekdays.indexOf(i);r.target.checked?n===-1&&o.weekdays.push(i):n!==-1&&o.weekdays.splice(n,1),o.weekdays.sort(),e==="intervalBetween"?this.setState({intervalBetween:o},()=>this.recalcCron()):this.setState({specific:o},()=>this.recalcCron())},value:i.toString()}),label:D.t(wN[i])})))}getControlsPeriodElements(e){const t=e==="interval"?this.state.interval:this.state.intervalBetween;return this.state.extended?a.createElement("div",{key:"period",style:{paddingLeft:8,display:"inline-block"}},a.createElement("h5",{style:{marginBottom:5}},D.t("sc_period")),a.createElement(Te,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_minutes"),value:t.minutes,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.minutes=parseInt(i.target.value,10),r.minutes<1&&(r.minutes=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:60},inputLabel:{shrink:!0}},type:"number",margin:"normal"}),a.createElement(Te,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_hours"),value:t.hours,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.hours=parseInt(i.target.value,10),r.hours<1&&(r.hours=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:24},inputLabel:{shrink:!0}},type:"number",margin:"normal"})):a.createElement("div",{key:"period",style:{paddingLeft:8,display:"inline-block"}},a.createElement("h5",{style:{marginBottom:5}},D.t("sc_period")),a.createElement(Te,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_every"),value:t.period,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.period=parseInt(i.target.value,10),r.period<1&&(r.period=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:60},inputLabel:{shrink:!0}},type:"number",margin:"normal"}),a.createElement(nt,{variant:"standard",style:{verticalAlign:"bottom"},value:t.unit,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.unit=i.target.value,e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())}},a.createElement(re,{value:"seconds"},D.t("sc_seconds")),")",a.createElement(re,{value:"minutes"},D.t("sc_minutes")),")"))}getControlsTime(e){const t=e==="once"?this.state.once:this.state.specific;return a.createElement(Qt,{variant:"standard",sx:{...Zt.formControl,"&.MuiFormControl-root":Zt.formControlMarginRight}},a.createElement(Te,{variant:"standard",key:"at",label:D.t("sc_time"),value:t.time,type:"time",sx:i=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:i.palette.mode==="dark"?"invert(80%)":void 0}}),onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.time=i.target.value,e==="once"?this.setState({once:r},()=>this.recalcCron()):this.setState({specific:r},()=>this.recalcCron())},slotProps:{inputLabel:{shrink:!0}},margin:"normal"}))}getControlsDate(){const e=this.state.once;if(!e.date){const t=new Date;e.date=`${t.getDate()}.${zt(t.getMonth()+1)}`}return a.createElement(Qt,{variant:"standard",style:Zt.formControl},a.createElement(Te,{variant:"standard",key:"date",label:D.t("sc_date"),value:e.date,type:"text",slotProps:{htmlInput:{style:Zt.formControlPaddingTop},inputLabel:{shrink:!0}},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.once));i.date=t.target.value,this.setState({once:i},()=>this.recalcCron())},margin:"normal"}))}getOnceElements(){return a.createElement("div",{style:{marginLeft:8}},this.getControlsTime("once"),this.getControlsDate())}getIntervalElements(){return this.getControlsPeriodElements("interval")}getIntervalBetweenElements(){const e=this.state.intervalBetween;return[this.getControlsPeriodElements("intervalBetween"),a.createElement("div",{key:"between",style:{paddingLeft:8,display:"inline-block",verticalAlign:"top"}},a.createElement("h5",{style:{marginBottom:5}},D.t("sc_hours")),a.createElement(Qt,{variant:"standard",style:Zt.formControl},a.createElement(yi,{shrink:!0,htmlFor:"age-label-placeholder"},D.t("sc_from")),a.createElement(nt,{variant:"standard",style:{width:100},value:e.timeFrom,onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.intervalBetween));i.timeFrom=parseInt(t.target.value,10),i.timeTo===24&&(i.timeTo=23),this.setState({intervalBetween:i},()=>this.recalcCron())}},[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23].map(t=>a.createElement(re,{key:`B_${t}`,value:t},`${zt(t)}:00`)))),a.createElement(Qt,{variant:"standard",style:Zt.formControl},a.createElement(yi,{shrink:!0,htmlFor:"age-label-placeholder"},D.t("sc_to")),a.createElement(nt,{variant:"standard",style:{width:100},value:e.timeTo,onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.intervalBetween));i.timeTo=parseInt(t.target.value,10),this.setState({intervalBetween:i},()=>this.recalcCron())}},[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23].map(t=>a.createElement(re,{key:`A_${t}`,value:t},`${zt(t)}:00`)),!e.timeFrom&&a.createElement(re,{value:24},"00:00")))),this.getControlsWeekdaysElements("intervalBetween")]}getSpecificTimeElements(){return[a.createElement("div",{key:"time",style:{marginLeft:8}},this.getControlsTime("specific")),this.getControlsWeekdaysElements("specific")]}onModeChange(e){e!==this.state.mode&&this.setState({mode:e},()=>this.recalcCron())}onChange(e){e!==this.state.cron&&(this.setState({cron:e}),this.props.onChange&&this.props.onChange(e))}render(){return a.createElement("div",{style:Zt.mainDiv},a.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)"}},a.createElement(Te,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0,error:this.state.cron.includes("_")})),a.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)",height:60}},this.state.cron.includes("_")?D.t("sc_invalid_cron"):VL(this.state.cron,this.props.language||"en")),a.createElement("div",null,a.createElement(Qt,{variant:"standard",style:{...Zt.formControl,marginLeft:8,marginTop:8}},a.createElement(yi,null,D.t("ra_Repeat")),a.createElement(nt,{variant:"standard",value:this.state.mode,onChange:e=>this.onModeChange(e.target.value),inputProps:{name:"mode",id:"mode"}},a.createElement(re,{value:"once"},D.t("sc_once")),a.createElement(re,{value:"interval"},D.t("sc_interval")),a.createElement(re,{value:"intervalBetween"},D.t("sc_intervalBetween")),a.createElement(re,{value:"specific"},D.t("sc_specific"))))),this.state.mode===ave.once&&this.getOnceElements(),this.state.mode==="interval"&&this.getIntervalElements(),this.state.mode==="intervalBetween"&&this.getIntervalBetweenElements(),this.state.mode==="specific"&&this.getSpecificTimeElements())}}function Vve(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 436 436",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),a.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function Zve(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 95 95",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:`M93.779,63.676c-0.981-1.082-2.24-1.653-3.639-1.653c-1.145,0-3.953,0.396-5.318,4.062 +`,Re={dropZone:{width:"100%",height:100,position:"relative"},dropZoneEmpty:{},image:{objectFit:"contain",margin:"auto",display:"flex",width:"100%",height:"100%"},uploadDiv:{position:"relative",width:"100%",height:300,opacity:.9,marginTop:30,cursor:"pointer",outline:"none"},uploadDivDragging:{opacity:1,background:"rgba(128,255,128,0.1)"},uploadCenterDiv:{margin:5,border:"3px dashed grey",borderRadius:5,width:"calc(100% - 10px)",height:"calc(100% - 10px)",position:"relative",display:"flex"},uploadCenterIcon:{paddingTop:10,width:48,height:48},uploadCenterText:{fontSize:16},uploadCenterTextAndIcon:{textAlign:"center",position:"absolute",top:0,bottom:0,left:0,right:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},disabledOpacity:{opacity:.3,cursor:"default"},buttonRemoveWrapper:{position:"absolute",zIndex:222,right:0},buttonCropWrapper:{position:"absolute",zIndex:222,right:0,top:50},error:{border:"2px solid red",boxSizing:"border-box"}};class Fve extends De{cropperRef;constructor(e){if(super(e),this.state={uploadFile:!1,anchorEl:null,cropHandler:!1},this.cropperRef=IN(),!window.document.getElementById("cropper-style-json-component")){const t=window.document.createElement("style");t.setAttribute("id","cropper-style-json-component"),t.innerHTML=rve,window.document.head.appendChild(t)}}onDrop(e){const t=this.props.onChange,i=this.props.maxSize||10*1024,r=e[0],o=new FileReader;o.onabort=()=>console.log("file reading was aborted"),o.onerror=()=>console.log("file reading has failed"),o.onload=()=>{var c,l;if(!r||!r.name)return;const n=(c=r.name)==null?void 0:c.split(".");let M=n!=null&&n.length?`image/${(l=n.pop())==null?void 0:l.toLowerCase()}`:"image/jpeg";if(M==="image/jpg"?M="image/jpeg":M.includes("svg")&&(M="image/svg+xml"),r.size>i)window.alert(D.t("ra_File is too big. Max %sk allowed. Try use SVG.",Math.round(i/1024)));else{const N=`data:${M};base64,${btoa(new Uint8Array(o.result).reduce((u,L)=>u+String.fromCharCode(L),""))}`;t?t(N):console.log(N)}},o.readAsArrayBuffer(r)}render(){const{disabled:e,icon:t,removeIconFunc:i,error:r,crop:o,onChange:n}=this.props,M=this.props.maxSize||10*1024;let c=this.props.accept||{"image/*":[]};const{uploadFile:l,anchorEl:N,cropHandler:u}=this.state;if(typeof c=="string")c={[c]:[]};else if(Array.isArray(c)){const L={};c.forEach(g=>{L[g]=[]}),c=L}return a.createElement(ON,{disabled:!!e||u,key:"dropzone",multiple:!1,accept:c,maxSize:M,onDragEnter:()=>this.setState({uploadFile:"dragging"}),onDragLeave:()=>this.setState({uploadFile:!0}),onDrop:(L,g)=>{var j,y,T;this.setState({uploadFile:!1}),L.length?this.onDrop(L):window.alert(((T=(y=(j=g==null?void 0:g[0])==null?void 0:j.errors)==null?void 0:y[0])==null?void 0:T.message)||D.t("ra_Cannot upload"))}},({getRootProps:L,getInputProps:g})=>a.createElement("div",{style:{...Re.uploadDiv,...l==="dragging"?Re.uploadDivDragging:void 0,...Re.dropZone,...e?Re.disabledOpacity:void 0,...t?void 0:Re.dropZoneEmpty},...L()},a.createElement("input",{...g()}),a.createElement("div",{style:{...Re.uploadCenterDiv,...r?Re.error:void 0}},t?i&&!u&&a.createElement("div",{style:Re.buttonRemoveWrapper},a.createElement(Le,{title:D.t("ra_Clear"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},a.createElement(W,{size:"large",onClick:j=>{i&&i(),j.stopPropagation()}},a.createElement(we,null)))):a.createElement("div",{style:Re.uploadCenterTextAndIcon},a.createElement(yy,{style:Re.uploadCenterIcon}),a.createElement("div",{style:Re.uploadCenterText},l==="dragging"?D.t("ra_Drop file here"):D.t("ra_Place your files here or click here to open the browse dialog"))),t&&o&&a.createElement("div",{style:Re.buttonCropWrapper},a.createElement(Le,{title:D.t("ra_Crop"),slotProps:{popper:{sx:{pointerEvents:"none"}}}},a.createElement(W,{size:"large",onClick:j=>{u?this.setState({anchorEl:j.currentTarget}):this.setState({cropHandler:!0}),j.stopPropagation()}},a.createElement(Hj,{color:u?"primary":"inherit"}))),a.createElement(ws,{anchorEl:N,keepMounted:!0,open:!!N,onClose:()=>this.setState({anchorEl:null})},a.createElement(re,{onClick:()=>this.setState({anchorEl:null,cropHandler:!1},()=>{var y,T;const j=(T=(y=this.cropperRef)==null?void 0:y.current)==null?void 0:T.cropper;j&&(n?n(j.getCroppedCanvas().toDataURL()):console.log(j.getCroppedCanvas().toDataURL()))})},D.t("ra_Save")),a.createElement(re,{onClick:()=>this.setState({anchorEl:null,cropHandler:!1})},D.t("ra_Close")))),t&&!u?a.createElement(be,{src:t,style:Re.image,alt:"icon"}):null,t&&o&&u?a.createElement(ive,{ref:this.cropperRef,style:Re.image,src:t,initialAspectRatio:1,viewMode:1,guides:!1,minCropBoxHeight:10,minCropBoxWidth:10,background:!1,checkOrientation:!1}):null)))}}const Zt={mainDiv:{width:"100%",height:"100%",overflow:"auto"},formControl:{margin:0,minWidth:120},formControlMarginRight:{marginRight:5},formControlPaddingTop:{paddingTop:6.2}},ove={once:"once"},Ye={seconds:"seconds",minutes:"minutes"},hN=["ra_Sunday","ra_Monday","ra_Tuesday","ra_Wednesday","ra_Thursday","ra_Friday","ra_Saturday","ra_Sunday"];function zt(s){return s<10?`0${s}`:`${s}`}const nve={mode:"interval",interval:{period:1,unit:Ye.minutes}};function Lo(s){if(s==="*")return[0,1,2,3,4,5,6];const e=s.split(","),t=[];return e.forEach(i=>{const r=i.split("-");if(r.length===2){const o=parseInt(r[0],10),n=parseInt(r[1],10);for(let M=o;M<=n;M++)t.includes(M===7?0:M)||t.push(M===7?0:M)}else{i==="7"&&(i="0");const o=parseInt(i,10);t.includes(o)||t.push(o)}}),t.sort(),t}function Yg(s,e){s=s.replace(/['"]/g,"").trim();const t=s.split(" ");let i,r=null;return t.length===6?i={seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",date:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:i={seconds:null,minutes:t[0]||"*",hours:t[1]||"*",date:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},i.seconds===null&&i.minutes==="*"&&i.hours==="*"&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)&&(r={mode:"interval",interval:{period:1,unit:Ye.minutes}}),i.seconds==="*"&&i.minutes==="*"&&i.hours==="*"&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"interval",interval:{period:1,unit:Ye.seconds}}:i.seconds===null&&i.minutes.includes("/")&&i.hours==="*"&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"interval",interval:{period:parseInt(i.minutes.split("/")[1],10),unit:Ye.minutes}}:i.seconds!==null&&i.seconds.includes("/")&&i.minutes==="*"&&i.hours==="*"&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"interval",interval:{period:parseInt(i.seconds.split("/")[1],10),unit:Ye.seconds}}:i.seconds!==null&&i.seconds.includes("/")&&i.minutes==="*"&&i.hours.includes("-")&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"intervalBetween",intervalBetween:{period:parseInt(i.seconds.split("/")[1],10),unit:Ye.seconds,timeFrom:parseInt(i.hours.split("-")[0],10),timeTo:parseInt(i.hours.split("-")[1],10),weekdays:Lo(i.dow)}}:i.seconds===null&&i.minutes.includes("/")&&i.hours.includes("-")&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"intervalBetween",intervalBetween:{period:parseInt(i.minutes.split("/")[1],10),unit:Ye.minutes,timeFrom:parseInt(i.hours.split("-")[0],10),timeTo:parseInt(i.hours.split("-")[1],10),weekdays:Lo(i.dow)}}:i.seconds===null&&parseInt(i.minutes,10).toString()===i.minutes&&parseInt(i.hours,10).toString()===i.hours&&i.date==="*"&&i.months==="*"&&(i.dow==="*"||e)?r={mode:"specific",specific:{time:`${zt(parseInt(i.hours,10))}:${zt(parseInt(i.minutes,10))}`,weekdays:Lo(i.dow)}}:i.seconds===null&&parseInt(i.minutes,10).toString()===i.minutes&&parseInt(i.hours,10).toString()===i.hours&&parseInt(i.date,10).toString()===i.date&&parseInt(i.months,10).toString()===i.months&&(i.dow==="*"||e)&&(r={mode:"once",once:{time:`${zt(parseInt(i.hours,10))}:${zt(parseInt(i.minutes,10))}`,date:`${zt(parseInt(i.date,10))}.${zt(parseInt(i.months,10))}`}}),r}class dr extends a.Component{constructor(e){super(e);let t=typeof e.cronExpression=="string"?e.cronExpression.replace(/^["']/,"").replace(/["']\n?$/,""):"";t[0]==="{"&&(t="");const i=Yg(t||"* * * * *",!0)||nve;this.state={extended:!1,cron:dr.state2cron(i),mode:"interval",once:{time:"00:00",date:""},interval:{period:1,unit:Ye.minutes},intervalBetween:{period:1,unit:Ye.minutes,timeFrom:0,timeTo:23,weekdays:[0,1,2,3,4,5,6]},specific:{time:"00:00",weekdays:[0,1,2,3,4,5,6]}},Object.assign(this.state,i),this.state.cron!==e.cronExpression&&setTimeout(()=>e.onChange&&e.onChange(this.state.cron),100)}static periodArray2text(e,t=7){if(t=t||7,e.length===t)return"*";const i=[];let r=null,o=null;if(!e.length)return"_";for(let n=0;n60&&(i.period=60),i.period!==void 0&&i.period<1&&(i.period=1),i.minutes!==void 0&&i.minutes!==null&&i.minutes>60&&(i.minutes=60),i.minutes!==void 0&&i.minutes!==null&&i.minutes<1&&(i.minutes=1),i.hours!==void 0&&i.hours!==null&&i.hours>24&&(i.hours=24),i.hours!==void 0&&i.hours!==null&&i.hours<1&&(i.hours=1),e.extended)t=`${i.minutes!==void 0&&i.minutes!==null&&i.minutes>1?`*/${i.minutes}`:"*"} ${i.hours!==void 0&&i.hours!==null&&i.hours>1?`*/${i.hours}`:"*"} * * *`;else switch(i.unit){case Ye.seconds:t=`${i.period>1?`*/${i.period}`:"*"} * * * * *`;break;case Ye.minutes:t=`${i.period>1?`*/${i.period}`:"*"} * * * *`;break}}else if(e.mode==="intervalBetween"){const i=e.intervalBetween||{period:1,unit:Ye.minutes,timeFrom:0,timeTo:24,weekdays:[0,1,2,3,4,5,6]};let r;switch(i.timeFrom=i.timeFrom||0,i.timeTo=i.timeTo===void 0?24:i.timeTo,i.timeFrom!==0&&i.timeTo===24&&(i.timeTo=23),i.timeFrom===0&&i.timeTo===24?r="*":r=i.timeFrom!==i.timeTo?`${i.timeFrom}-${i.timeTo}`:"*",i.period>60&&(i.period=60),i.period<1&&(i.period=1),i.unit=i.unit||Ye.minutes,i.unit){case Ye.seconds:t=`${i.period>1?`*/${i.period}`:"*"} * ${r} * * ${this.periodArray2text(i.weekdays)}`;break;case Ye.minutes:t=`${i.period>1?`*/${i.period}`:"*"} ${r} * * ${this.periodArray2text(i.weekdays)}`;break}}else if(e.mode==="specific"){const i=e.specific||{time:"00:00",weekdays:[0,1,2,3,4,5,6]},r=(i.time||"00:00").split(":");let o=parseInt(r[1],10)||0;o>59&&(o=59),o<0&&(o=0);let n=parseInt(r[0],10)||0;n>23&&(n=23),n<0&&(n=0),t=`${o} ${n} * * ${this.periodArray2text(i.weekdays||[])}`}else if(e.mode==="once"){const i=e.once||{time:"00:00",date:""};i.date||(i.date=`${new Date().getDate()}.${zt(new Date().getMonth()+1)}`);const r=(i.time||"00:00").split(":"),o=i.date.split(".");let n=parseInt(r[1],10)||0;n>59&&(n=59),n<0&&(n=0);let M=parseInt(r[0],10)||0;M>23&&(M=23),M<0&&(M=0);let c=parseInt(o[0],10)||1;c>31&&(c=31),c<1&&(c=1);let l=parseInt(o[1],10)||1;l>12&&(l=12),l<1&&(l=1),t=`${n} ${M} ${c} ${l} *`}return t}recalcCron(){this.onChange(dr.state2cron(this.state))}getControlsWeekdaysElements(e){const t=e==="intervalBetween"?this.state.intervalBetween:this.state.specific;return a.createElement("div",{key:"weekdays",style:{paddingLeft:8,width:"calc(100% - 8px)",maxWidth:600}},a.createElement("h5",null,D.t("ra_On weekdays")),[1,2,3,4,5,6,0].map(i=>a.createElement(V,{key:hN[i],control:a.createElement(ue,{checked:t.weekdays.includes(i),onChange:r=>{const o=JSON.parse(JSON.stringify(this.state[e])),n=o.weekdays.indexOf(i);r.target.checked?n===-1&&o.weekdays.push(i):n!==-1&&o.weekdays.splice(n,1),o.weekdays.sort(),e==="intervalBetween"?this.setState({intervalBetween:o},()=>this.recalcCron()):this.setState({specific:o},()=>this.recalcCron())},value:i.toString()}),label:D.t(hN[i])})))}getControlsPeriodElements(e){const t=e==="interval"?this.state.interval:this.state.intervalBetween;return this.state.extended?a.createElement("div",{key:"period",style:{paddingLeft:8,display:"inline-block"}},a.createElement("h5",{style:{marginBottom:5}},D.t("sc_period")),a.createElement(Te,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_minutes"),value:t.minutes,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.minutes=parseInt(i.target.value,10),r.minutes<1&&(r.minutes=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:60},inputLabel:{shrink:!0}},type:"number",margin:"normal"}),a.createElement(Te,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_hours"),value:t.hours,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.hours=parseInt(i.target.value,10),r.hours<1&&(r.hours=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:24},inputLabel:{shrink:!0}},type:"number",margin:"normal"})):a.createElement("div",{key:"period",style:{paddingLeft:8,display:"inline-block"}},a.createElement("h5",{style:{marginBottom:5}},D.t("sc_period")),a.createElement(Te,{variant:"standard",style:{marginTop:0,marginBottom:0,verticalAlign:"bottom"},key:"value",label:D.t("sc_every"),value:t.period,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.period=parseInt(i.target.value,10),r.period<1&&(r.period=1),e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())},slotProps:{htmlInput:{min:1,max:60},inputLabel:{shrink:!0}},type:"number",margin:"normal"}),a.createElement(nt,{variant:"standard",style:{verticalAlign:"bottom"},value:t.unit,onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.unit=i.target.value,e==="interval"?this.setState({interval:r},()=>this.recalcCron()):this.setState({intervalBetween:r},()=>this.recalcCron())}},a.createElement(re,{value:"seconds"},D.t("sc_seconds")),")",a.createElement(re,{value:"minutes"},D.t("sc_minutes")),")"))}getControlsTime(e){const t=e==="once"?this.state.once:this.state.specific;return a.createElement(Qt,{variant:"standard",sx:{...Zt.formControl,"&.MuiFormControl-root":Zt.formControlMarginRight}},a.createElement(Te,{variant:"standard",key:"at",label:D.t("sc_time"),value:t.time,type:"time",sx:i=>({'& input[type="time"]::-webkit-calendar-picker-indicator':{filter:i.palette.mode==="dark"?"invert(80%)":void 0}}),onChange:i=>{const r=JSON.parse(JSON.stringify(this.state[e]));r.time=i.target.value,e==="once"?this.setState({once:r},()=>this.recalcCron()):this.setState({specific:r},()=>this.recalcCron())},slotProps:{inputLabel:{shrink:!0}},margin:"normal"}))}getControlsDate(){const e=this.state.once;if(!e.date){const t=new Date;e.date=`${t.getDate()}.${zt(t.getMonth()+1)}`}return a.createElement(Qt,{variant:"standard",style:Zt.formControl},a.createElement(Te,{variant:"standard",key:"date",label:D.t("sc_date"),value:e.date,type:"text",slotProps:{htmlInput:{style:Zt.formControlPaddingTop},inputLabel:{shrink:!0}},onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.once));i.date=t.target.value,this.setState({once:i},()=>this.recalcCron())},margin:"normal"}))}getOnceElements(){return a.createElement("div",{style:{marginLeft:8}},this.getControlsTime("once"),this.getControlsDate())}getIntervalElements(){return this.getControlsPeriodElements("interval")}getIntervalBetweenElements(){const e=this.state.intervalBetween;return[this.getControlsPeriodElements("intervalBetween"),a.createElement("div",{key:"between",style:{paddingLeft:8,display:"inline-block",verticalAlign:"top"}},a.createElement("h5",{style:{marginBottom:5}},D.t("sc_hours")),a.createElement(Qt,{variant:"standard",style:Zt.formControl},a.createElement(yi,{shrink:!0,htmlFor:"age-label-placeholder"},D.t("sc_from")),a.createElement(nt,{variant:"standard",style:{width:100},value:e.timeFrom,onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.intervalBetween));i.timeFrom=parseInt(t.target.value,10),i.timeTo===24&&(i.timeTo=23),this.setState({intervalBetween:i},()=>this.recalcCron())}},[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23].map(t=>a.createElement(re,{key:`B_${t}`,value:t},`${zt(t)}:00`)))),a.createElement(Qt,{variant:"standard",style:Zt.formControl},a.createElement(yi,{shrink:!0,htmlFor:"age-label-placeholder"},D.t("sc_to")),a.createElement(nt,{variant:"standard",style:{width:100},value:e.timeTo,onChange:t=>{const i=JSON.parse(JSON.stringify(this.state.intervalBetween));i.timeTo=parseInt(t.target.value,10),this.setState({intervalBetween:i},()=>this.recalcCron())}},[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23].map(t=>a.createElement(re,{key:`A_${t}`,value:t},`${zt(t)}:00`)),!e.timeFrom&&a.createElement(re,{value:24},"00:00")))),this.getControlsWeekdaysElements("intervalBetween")]}getSpecificTimeElements(){return[a.createElement("div",{key:"time",style:{marginLeft:8}},this.getControlsTime("specific")),this.getControlsWeekdaysElements("specific")]}onModeChange(e){e!==this.state.mode&&this.setState({mode:e},()=>this.recalcCron())}onChange(e){e!==this.state.cron&&(this.setState({cron:e}),this.props.onChange&&this.props.onChange(e))}render(){return a.createElement("div",{style:Zt.mainDiv},a.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)"}},a.createElement(Te,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0,error:this.state.cron.includes("_")})),a.createElement("div",{style:{paddingLeft:8,width:"calc(100% - 8px)",height:60}},this.state.cron.includes("_")?D.t("sc_invalid_cron"):HL(this.state.cron,this.props.language||"en")),a.createElement("div",null,a.createElement(Qt,{variant:"standard",style:{...Zt.formControl,marginLeft:8,marginTop:8}},a.createElement(yi,null,D.t("ra_Repeat")),a.createElement(nt,{variant:"standard",value:this.state.mode,onChange:e=>this.onModeChange(e.target.value),inputProps:{name:"mode",id:"mode"}},a.createElement(re,{value:"once"},D.t("sc_once")),a.createElement(re,{value:"interval"},D.t("sc_interval")),a.createElement(re,{value:"intervalBetween"},D.t("sc_intervalBetween")),a.createElement(re,{value:"specific"},D.t("sc_specific"))))),this.state.mode===ove.once&&this.getOnceElements(),this.state.mode==="interval"&&this.getIntervalElements(),this.state.mode==="intervalBetween"&&this.getIntervalBetweenElements(),this.state.mode==="specific"&&this.getSpecificTimeElements())}}function Gve(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 436 436",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),a.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function Hve(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 95 95",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:`M93.779,63.676c-0.981-1.082-2.24-1.653-3.639-1.653c-1.145,0-3.953,0.396-5.318,4.062 c-0.344,0.922-0.443,1.413-0.907,1.363c-0.786-0.078-3.845-3.346-4.845-8.145l-2.482-11.6c1.961-3.177,3.977-5.629,5.988-7.292 c1.08-0.882,2.314-1.349,3.808-1.43c3.815-0.26,5.203-0.74,6.14-1.399c1.547-1.115,2.397-2.728,2.397-4.542 c0-1.596-0.604-3.019-1.75-4.115c-1.106-1.059-2.581-1.618-4.26-1.618c-2.468,0-5.239,1.142-8.474,3.49 @@ -980,11 +980,11 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho c-1.525,0-2.91,0.625-4.002,1.804c-1.036,1.116-1.583,2.514-1.583,4.038c0,1.83,0.783,3.459,2.264,4.709 c1.357,1.146,3.034,1.728,4.981,1.728c2.414,0,4.884-0.921,7.344-2.737c2.053-1.519,4.697-4.526,8.074-9.189 c2.17,6.24,5.248,10.252,6.714,11.927c2.313,2.644,6.049,4.22,9.993,4.22c3.348,0,5.244-1.402,6.916-2.641l0.148-0.109 - c2.926-2.164,3.54-4.545,3.54-6.166C95.174,65.965,94.691,64.679,93.779,63.676z`}))}function Xve(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M510.371,226.513c-1.088-2.603-2.645-4.971-4.629-6.955l-63.979-63.979c-8.341-8.32-21.824-8.32-30.165,0 c-8.341,8.341-8.341,21.845,0,30.165l27.584,27.584H320.013c-11.797,0-21.333,9.557-21.333,21.333s9.536,21.333,21.333,21.333 h119.168l-27.584,27.584c-8.341,8.341-8.341,21.845,0,30.165c4.16,4.181,9.621,6.251,15.083,6.251s10.923-2.069,15.083-6.251 l63.979-63.979c1.984-1.963,3.541-4.331,4.629-6.955C512.525,237.606,512.525,231.718,510.371,226.513z"}),a.createElement("path",{fill:"currentColor",d:`M362.68,298.667c-11.797,0-21.333,9.557-21.333,21.333v106.667h-85.333V85.333c0-9.408-6.187-17.728-15.211-20.437 + c2.926-2.164,3.54-4.545,3.54-6.166C95.174,65.965,94.691,64.679,93.779,63.676z`}))}function Vve(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M510.371,226.513c-1.088-2.603-2.645-4.971-4.629-6.955l-63.979-63.979c-8.341-8.32-21.824-8.32-30.165,0 c-8.341,8.341-8.341,21.845,0,30.165l27.584,27.584H320.013c-11.797,0-21.333,9.557-21.333,21.333s9.536,21.333,21.333,21.333 h119.168l-27.584,27.584c-8.341,8.341-8.341,21.845,0,30.165c4.16,4.181,9.621,6.251,15.083,6.251s10.923-2.069,15.083-6.251 l63.979-63.979c1.984-1.963,3.541-4.331,4.629-6.955C512.525,237.606,512.525,231.718,510.371,226.513z"}),a.createElement("path",{fill:"currentColor",d:`M362.68,298.667c-11.797,0-21.333,9.557-21.333,21.333v106.667h-85.333V85.333c0-9.408-6.187-17.728-15.211-20.437 l-74.091-22.229h174.635v106.667c0,11.776,9.536,21.333,21.333,21.333s21.333-9.557,21.333-21.333v-128 C384.013,9.557,374.477,0,362.68,0H21.347c-0.768,0-1.451,0.32-2.197,0.405c-1.003,0.107-1.92,0.277-2.88,0.512 c-2.24,0.576-4.267,1.451-6.165,2.645c-0.469,0.299-1.045,0.32-1.493,0.661C8.44,4.352,8.376,4.587,8.205,4.715 C5.88,6.549,3.939,8.789,2.531,11.456c-0.299,0.576-0.363,1.195-0.597,1.792c-0.683,1.621-1.429,3.2-1.685,4.992 c-0.107,0.64,0.085,1.237,0.064,1.856c-0.021,0.427-0.299,0.811-0.299,1.237V448c0,10.176,7.189,18.923,17.152,20.907 l213.333,42.667c1.387,0.299,2.795,0.427,4.181,0.427c4.885,0,9.685-1.685,13.525-4.843c4.928-4.053,7.808-10.091,7.808-16.491 - v-21.333H362.68c11.797,0,21.333-9.557,21.333-21.333V320C384.013,308.224,374.477,298.667,362.68,298.667z`}))}function Kve(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 339 339",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M 318.371 88.485 C 332.371 114.538 339.207 142.418 338.881 172.125 C 338.874 172.605 338.631 172.845 338.151 172.845 L 335.411 172.845 C 335.077 172.845 334.911 173.012 334.911 173.345 L 334.911 181.215 C 334.911 181.635 335.121 181.845 335.541 181.845 L 337.711 181.845 C 338.157 181.845 338.364 182.068 338.331 182.515 C 331.921 264.525 267.321 330.135 185.931 337.995 C 89.911 347.265 6.491 275.385 0.301 179.465 C 0.274 179.052 0.467 178.845 0.881 178.845 L 2.381 178.845 C 2.741 178.845 2.921 178.665 2.921 178.305 L 2.911 171.465 C 2.904 171.052 2.694 170.845 2.281 170.845 L 0.441 170.845 C 0.147 170.845 0.001 170.698 0.001 170.405 C -0.289 83.535 64.591 10.095 151.421 0.955 C 211.511 -5.375 269.171 20.055 305.341 68.135 C 305.538 68.391 305.938 68.338 306.062 68.039 C 306.065 68.031 306.068 68.023 306.071 68.015 L 311.541 51.395 C 311.63 51.125 311.924 50.977 312.201 51.065 L 316.881 52.625 C 317.274 52.758 317.407 53.022 317.281 53.415 L 310.271 74.305 C 310.157 74.645 310.197 74.968 310.391 75.275 L 314.011 80.905 C 314.204 81.205 314.481 81.378 314.841 81.425 L 336.771 84.365 C 337.124 84.412 337.277 84.612 337.231 84.965 L 336.601 89.775 C 336.547 90.182 336.321 90.358 335.921 90.305 L 318.721 87.975 C 318.267 87.915 318.151 88.085 318.371 88.485 Z M 200.701 172.615 C 170.541 200.245 121.671 181.975 117.251 140.865 C 117.211 140.518 117.017 140.345 116.671 140.345 L 8.941 140.345 C 8.68 140.346 8.46 140.532 8.421 140.785 C -10.469 249.095 80.901 345.385 189.421 331.625 C 265.701 321.955 325.741 260.435 332.311 183.415 C 343.611 50.895 200.811 -38.365 85.961 28.845 C 47.041 51.625 20.601 89.335 9.791 133.265 C 9.611 133.985 9.891 134.345 10.631 134.345 L 116.371 134.345 C 116.664 134.345 116.824 134.202 116.851 133.915 C 118.397 116.288 126.001 103.005 139.661 94.065 C 172.821 72.345 214.571 95.715 216.891 133.845 C 216.911 134.178 217.087 134.345 217.421 134.345 L 330.342 134.345 C 330.842 134.345 331.092 134.595 331.092 135.095 L 331.092 139.595 C 331.092 140.095 330.842 140.345 330.342 140.345 L 217.161 140.345 C 216.827 140.345 216.641 140.512 216.601 140.845 C 215.141 153.652 209.841 164.242 200.701 172.615 Z M 210.861 135.845 C 210.861 111.572 191.183 91.895 166.911 91.895 C 142.638 91.895 122.961 111.572 122.961 135.845 C 122.961 160.118 142.638 179.795 166.911 179.795 C 191.183 179.795 210.861 160.118 210.861 135.845 Z",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"}),a.createElement("path",{fill:"currentColor",d:"M 222.771 42.215 C 224.237 43.708 223.741 45.092 221.281 46.365 C 220.5 46.768 219.574 46.779 218.781 46.395 C 183.761 29.182 149.014 29.638 114.541 47.765 C 113.252 48.444 111.662 47.8 111.211 46.415 C 110.891 45.435 110.867 44.465 111.141 43.505 C 111.234 43.158 111.437 42.898 111.751 42.725 C 145.631 23.545 186.631 23.045 221.051 41.045 C 221.831 41.452 222.404 41.842 222.771 42.215 Z",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"}),a.createElement("text",{style:{whiteSpace:"pre",fontFamily:"Arial, sans-serif",fontSize:16},x:"139.395",y:"288.084",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"},"vacuum"))}const cve={dialogPaper:{height:"calc(100% - 96px)"}};class qve extends a.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={showWarning:"",cron:t}}handleCancel(){this.props.onClose()}handleOk(e){if(!e){const t=rs.cron2state(this.state.cron);if(t.seconds==="*"||t.seconds==="*/1"){this.setState({showWarning:"everySecond"});return}if(t.minutes==="*"||t.minutes==="*/1"){this.setState({showWarning:"everyMinute"});return}}this.props.onOk(this.state.cron),this.props.onClose()}renderWarningDialog(){return this.state.showWarning?a.createElement(S4,{title:D.t("ra_Please confirm"),text:D.t(this.state.showWarning==="everySecond"?"ra_The schedule will be executed every second. Are you sure?":"ra_The schedule will be executed every minute. Are you sure?"),onClose:e=>this.setState({showWarning:""},()=>{e&&this.handleOk(!0)})}):null}handleClear(){this.props.onOk(!1),this.props.onClose()}render(){return a.createElement(Ae,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":cve.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},this.renderWarningDialog(),a.createElement(fe,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define schedule...")),a.createElement(_e,{style:{height:"100%",overflow:"hidden"}},a.createElement(rs,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),a.createElement(xe,null,!!this.props.clearButton&&a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.handleClear(),startIcon:a.createElement(wt,null)},this.props.clear||D.t("ra_Clear")),a.createElement(q,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}const uve={dialogPaper:{height:"calc(100% - 96px)"}};class eYe extends a.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={cron:t,mode:this.props.simple?"simple":this.props.complex?"complex":(typeof t=="object"||t[0]==="{")&&!this.props.noWizard?"wizard":Qg(this.props.cron||"* * * * *")?"simple":"complex"}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.state.cron),this.props.onClose()}setMode(e){this.setState({mode:e})}render(){return a.createElement(Ae,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":uve.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},a.createElement(fe,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define schedule...")),a.createElement(_e,{style:{height:"100%",overflow:"hidden"}},this.props.simple&&this.props.complex||!this.props.simple&&!this.props.complex?a.createElement("div",null,!this.props.simple&&!this.props.complex&&!this.props.noWizard&&a.createElement(a.Fragment,null,a.createElement(Me,{key:"wizard",checked:this.state.mode==="wizard",onChange:()=>this.setMode("wizard")}),a.createElement("label",{onClick:()=>this.setMode("wizard"),style:this.state.mode!=="wizard"?{color:"lightgrey"}:{}},D.t("sc_wizard"))),(!this.props.simple&&!this.props.complex||this.props.simple)&&a.createElement(a.Fragment,null,a.createElement(Me,{key:"simple",checked:this.state.mode==="simple",onChange:()=>this.setMode("simple")}),a.createElement("label",{onClick:()=>this.setMode("simple"),style:this.state.mode!=="simple"?{color:"lightgrey"}:{}},D.t("sc_simple"))),(!this.props.simple&&!this.props.complex||this.props.complex)&&a.createElement(a.Fragment,null,a.createElement(Me,{key:"complex",checked:this.state.mode==="complex",onChange:()=>this.setMode("complex")}),a.createElement("label",{onClick:()=>this.setMode("complex"),style:this.state.mode!=="complex"?{color:"lightgrey"}:{}},D.t("sc_cron")))):null,this.state.mode==="simple"&&a.createElement(dr,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()}),this.state.mode==="wizard"&&a.createElement(Ee,{theme:this.props.theme,schedule:this.state.cron,onChange:e=>this.setState({cron:e})}),this.state.mode==="complex"&&a.createElement(rs,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}class tYe extends De{handleOk(){this.props.onClose&&this.props.onClose()}render(){return a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"ar_dialog_message_title","aria-describedby":"ar_dialog_message_description"},a.createElement(fe,{id:"ar_dialog_message_title"},this.props.title||D.t("ra_Message")),a.createElement(_e,null,a.createElement(as,{id:"ar_dialog_message_description"},a.createElement("span",{style:{marginRight:this.props.icon?8:0}},this.props.icon||null),this.props.text)),a.createElement(xe,null,a.createElement(q,{id:"ar_dialog_message_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:a.createElement(we,null)},this.props.ok||D.t("ra_Close"))))}}const Ts={headerID:{fontWeight:"bold",fontStyle:"italic"},dialog:{height:"95%"},dialogMobile:{padding:"4px",width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)",height:"100%"},content:{height:"100%",overflow:"hidden"},contentMobile:{padding:"8px 4px"},titleRoot:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}};class sYe extends a.Component{dialogName;filters;constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName=`SelectFile.${this.dialogName}`;const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch{this.filters={}}e.filters&&(this.filters={...this.filters,...e.filters});let i=this.props.selected||[];typeof i!="object"?i=[i]:i=[...i],i=i.filter(r=>r),this.state={selected:i}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect||!Array.isArray(this.state.selected)?this.state.selected:this.state.selected[0]||""),this.props.onClose()}render(){let e;return this.state.selected.length?!Array.isArray(this.state.selected)||this.state.selected.length===1?e=[a.createElement("span",{key:"selected"},D.t("ra_Selected")," "),a.createElement("span",{key:"id",style:Ts.headerID},this.state.selected)]:e=[a.createElement("span",{key:"selected"},D.t("ra_Selected")," "),a.createElement("span",{key:"id",style:Ts.headerID},D.t("%s items",this.state.selected.length))]:e=this.props.title||D.t("ra_Please select file..."),a.createElement(Ae,{onClose:()=>{},maxWidth:!1,style:{zIndex:this.props.zIndex||void 0},sx:{"& .MuiDialog-paper":{...Ts.dialog,...Ts.dialogMobile}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectfile_title"},a.createElement(fe,{id:"ar_dialog_selectfile_title",sx:{"&.MuiDialogTitle-root":Ts.titleRoot}},e),a.createElement(_e,{style:{...Ts.content,...Ts.contentMobile}},a.createElement(G_e,{ready:!0,imagePrefix:this.props.imagePrefix||this.props.prefix||"../",allowUpload:!!this.props.allowUpload,allowDownload:this.props.allowDownload!==!1,allowCreateFolder:!!this.props.allowCreateFolder,allowDelete:!!this.props.allowDelete,allowView:this.props.allowView!==!1,showViewTypeButton:this.props.showViewTypeButton!==!1,showToolbar:this.props.showToolbar!==!1,limitPath:this.props.limitPath,filterFiles:this.props.filterFiles,filterByType:this.props.filterByType,selected:this.props.selected,restrictToFolder:this.props.restrictToFolder,allowNonRestricted:this.props.allowNonRestricted,onSelect:(t,i,r)=>{this.setState({selected:Array.isArray(t)?t:[t]},()=>i&&(!this.props.selectOnlyFolders||r)&&this.handleOk())},t:this.props.t||D.t,lang:this.props.lang||D.getLanguage(),socket:this.props.socket,themeType:this.props.themeType,themeName:this.props.themeName,theme:this.props.theme,showExpertButton:this.props.showExpertButton,expertMode:this.props.expertMode,showTypeSelector:this.props.showTypeSelector})),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.handleOk(),startIcon:a.createElement(We,null),disabled:!this.state.selected.length,color:"primary"},this.props.ok||D.t("ra_Ok")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}const lve={dialogPaper:{height:"calc(100% - 96px)"}};class iYe extends a.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={cron:t}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.state.cron),this.props.onClose()}render(){return a.createElement(Ae,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":lve.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},a.createElement(fe,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define CRON...")),a.createElement(_e,{style:{height:"100%",overflow:"hidden"}},a.createElement(dr,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),a.createElement(xe,null,a.createElement(q,{variant:"contained",disabled:!this.state.cron||this.state.cron.includes("_"),onClick:()=>this.handleOk(),color:"primary",startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}const St={CONNECTING:0,CONNECTED:1,OBJECTS_LOADED:2,STATES_LOADED:3,READY:4},kt="permissionError",Q="notConnectedError";function IN(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}class H{_socket;_authTimer;systemLang="en";_waitForFirstConnection;_waitForFirstConnectionResolve=null;_promises={};_instanceSubscriptions;props;doNotLoadAllObjects;doNotLoadACL;states={};objects=null;scriptLoadCounter;acl=null;firstConnect=!0;waitForRestart=!1;connected=!1;statesSubscribes={};objectsSubscribes={};filesSubscribes={};onConnectionHandlers=[];onLogHandlers=[];onProgress;onError;loaded=!1;loadTimer=null;loadCounter=0;ignoreState="";simStates={};autoSubscribes;autoSubscribeLog;subscribed;isSecure;onCmdStdoutHandler;onCmdStderrHandler;onCmdExitHandler;systemConfig=null;objectViewCached;constructor(e){e||={protocol:window.location.protocol,host:window.location.hostname},this.props=e,this.autoSubscribes=this.props.autoSubscribes||[],this.autoSubscribeLog=this.props.autoSubscribeLog||!1,this.props.protocol||=window.location.protocol,this.props.host||=window.location.hostname,this.props.port||=window.location.port==="3000"?H.isWeb()?8082:8081:window.location.port,this.props.ioTimeout=Math.max(this.props.ioTimeout||2e4,2e4),this.props.cmdTimeout=Math.max(this.props.cmdTimeout||5e3,5e3),this._instanceSubscriptions={},this.doNotLoadAllObjects=this.props.doNotLoadAllObjects===void 0?!0:this.props.doNotLoadAllObjects,this.doNotLoadACL=this.props.doNotLoadACL===void 0?!0:this.props.doNotLoadACL,this.states={},this._waitForFirstConnection=new Promise(t=>{this._waitForFirstConnectionResolve=t}),this.onProgress=this.props.onProgress||(()=>{}),this.onError=this.props.onError||(t=>console.error(t)),this.startSocket()}static isWeb(){const e=window.adapterName;return e==="material"||e==="vis"||(e==null?void 0:e.startsWith("vis-"))||e==="echarts-show"||window.socketUrl!==void 0}startSocket(){if(typeof window.io>"u"&&typeof window.iob>"u"){if(typeof window.registerSocketOnLoad!="function"){if(this.scriptLoadCounter||=0,this.scriptLoadCounter++,this.scriptLoadCounter<30){setTimeout(()=>this.startSocket(),100);return}window.alert("Cannot load socket.io.js!")}else window.registerSocketOnLoad(()=>this.startSocket());return}if(this._socket)return;let e=this.props.host,t=this.props.port,i=this.props.protocol.replace(":",""),r=window.location.pathname;if(window.location.hostname==="iobroker.net"||window.location.hostname==="iobroker.pro")r="";else{if(window.socketUrl){const M=new URL(window.socketUrl);e=M.hostname,t=M.port,i=M.protocol.replace(":","")}const n=r.lastIndexOf("/");if(n!==-1&&(r=r.substring(0,n+1)),H.isWeb()){const M=r.split("/");M.length>2&&(M.pop(),M[M.length-1].match(/\d+\.\d+\.\d+/)&&M.pop(),M.pop(),r=M.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?`${i}://${e}:${t}${r}`:`${i}://${e}${r}`;this._socket=(window.io||window.iob).connect(o,{path:r.endsWith("/")?`${r}socket.io`:`${r}/socket.io`,query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid}),this._socket.on("connect",n=>{n!==!0?setTimeout(()=>this.getVersion().then(M=>{const[c,l,N]=M.version.split(".");parseInt(c,10)*1e4+parseInt(l,10)*100+parseInt(N,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",(L,g)=>this.onPreConnect(L,g))}),500):this._socket.emit("authenticate",(M,c)=>this.onPreConnect(M,c))}),this._socket.on("reconnect",()=>{this.onProgress(St.READY),this.connected=!0,this.waitForRestart?window.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach(n=>n(!0)))}),this._socket.on("disconnect",()=>{this.connected=!1,this.subscribed=!1,this.onProgress(St.CONNECTING),this.onConnectionHandlers.forEach(n=>n(!1))}),this._socket.on("reauthenticate",()=>H.authenticate()),this._socket.on("log",n=>{var M,c;(c=(M=this.props).onLog)==null||c.call(M,n),this.onLogHandlers.forEach(l=>l(n))}),this._socket.on("error",n=>{let M=n||"";typeof M.toString!="function"&&(M=JSON.stringify(M),console.error(`Received strange error: ${M}`)),M=M.toString(),M.includes("User not authorized")?H.authenticate():window.alert(`Socket Error: ${n}`)}),this._socket.on("connect_error",n=>console.error(`Connect error: ${n}`)),this._socket.on("permissionError",n=>this.onError({message:"no permission",operation:n.operation,type:n.type,id:n.id||""})),this._socket.on("objectChange",(n,M)=>setTimeout(()=>this.objectChange(n,M),0)),this._socket.on("stateChange",(n,M)=>setTimeout(()=>this.stateChange(n,M),0)),this._socket.on("im",(n,M,c)=>setTimeout(()=>this.instanceMessage(n,M,c),0)),this._socket.on("fileChange",(n,M,c)=>setTimeout(()=>this.fileChange(n,M,c),0)),this._socket.on("cmdStdout",(n,M)=>{var c;return(c=this.onCmdStdoutHandler)==null?void 0:c.call(this,n,M)}),this._socket.on("cmdStderr",(n,M)=>{var c;return(c=this.onCmdStderrHandler)==null?void 0:c.call(this,n,M)}),this._socket.on("cmdExit",(n,M)=>{var c;return(c=this.onCmdExitHandler)==null?void 0:c.call(this,n,M)})}onPreConnect(e,t){this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?window.location.reload():(this.firstConnect?(this.loadTimer=setTimeout(()=>{this.loadTimer=null,this.loadCounter++,this.loadCounter<10&&this.onConnect().catch(i=>this.onError(i))},1e3),this.loaded||this.onConnect().catch(i=>this.onError(i))):this.onProgress(St.READY),this._subscribe(!0),this.onConnectionHandlers.forEach(i=>i(!0))),this._waitForFirstConnectionResolve&&(this._waitForFirstConnectionResolve(),this._waitForFirstConnectionResolve=null)}static isCloud(){return window.location.hostname.includes("amazonaws.com")||window.location.hostname.includes("iobroker.in")?!0:typeof window.socketUrl>"u"?!1:window.socketUrl.includes("iobroker.in")||window.socketUrl.includes("amazonaws")}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnection}async _getUserPermissions(){return this.doNotLoadACL?null:new Promise((e,t)=>{this._socket.emit("getUserPermissions",(i,r)=>i?t(new Error(i)):e(r))})}async onConnect(){var i,r,o,n,M;let e;try{e=await this._getUserPermissions()}catch(c){const l=c;this.onError(`Cannot read user permissions: ${l.message}`);return}if(!this.doNotLoadACL){if(this.loaded)return;this.loaded=!0,this.loadTimer&&(clearTimeout(this.loadTimer),this.loadTimer=null),this.onProgress(St.CONNECTED),this.firstConnect=!1,this.acl=e}let t;try{if(t=await this.getSystemConfig(),this.doNotLoadACL){if(this.loaded)return;this.loaded=!0,this.loadTimer&&(clearTimeout(this.loadTimer),this.loadTimer=null),this.onProgress(St.CONNECTED),this.firstConnect=!1}this.systemConfig=t,(i=this.systemConfig)!=null&&i.common?this.systemLang=this.systemConfig.common.language:(this.systemLang=window.navigator.userLanguage||window.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substr(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en")),(o=(r=this.props).onLanguage)==null||o.call(r,this.systemLang),this.doNotLoadAllObjects?(this.objects={"system.config":t},this.onProgress(St.READY),(M=(n=this.props).onReady)==null||M.call(n,this.objects)):(await this.getObjects(),this.onProgress(St.READY),this.props.onReady&&this.objects&&this.props.onReady(this.objects))}catch(c){this.onError(`Cannot read system config: ${c}`)}}static authenticate(){window.location.search.includes("&href=")?window.location.href=`${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`:window.location.href=`${window.location.protocol}//${window.location.host}${window.location.pathname}?login&href=${window.location.search}${window.location.hash}`}async subscribeState(e,t,i){typeof t=="function"&&(i=t,t=!1);let r;if(Array.isArray(e)?r=e:r=[e],!i)return console.error("No callback found for subscribeState"),Promise.reject(new Error("No callback found for subscribeState"));const o=[];for(let n=0;n{this._socket.emit(H.isWeb()?"getStates":"getForeignStates",r,(c,l)=>{c?(console.error(`Cannot getForeignStates "${e}": ${JSON.stringify(c)}`),M(new Error(c))):(l&&Object.keys(l).forEach(N=>i(N,l[N])),n())})})}subscribeStateAsync(e,t){let i;Array.isArray(e)?i=e:i=[e];const r=[];for(let o=0;o{typeof t=="function"&&this.connected?this._socket.emit(H.isWeb()?"getStates":"getForeignStates",e,(M,c)=>{M&&console.error(`Cannot getForeignStates "${e}": ${JSON.stringify(M)}`),c&&Object.keys(c).forEach(l=>t(l,c[l])),c?o():n(new Error(`Cannot getForeignStates "${e}": ${JSON.stringify(M)}`))}):this.connected?n(new Error("callback is not a function")):n(new Error("not connected"))})}unsubscribeState(e,t){let i;Array.isArray(e)?i=e:i=[e];const r=[];for(let o=0;o{(o===e||this.objectsSubscribes[o].reg.test(e))&&this.objectsSubscribes[o].cbs.forEach(n=>{try{n(e,t,i)}catch(M){console.error(`Error by callback of objectChange: ${M}`)}})}),r&&this.props.onObjectChange&&this.props.onObjectChange(e,t)}stateChange(e,t){for(const i in this.statesSubscribes)Object.prototype.hasOwnProperty.call(this.statesSubscribes,i)&&this.statesSubscribes[i].reg.test(e)&&this.statesSubscribes[i].cbs.forEach(r=>{try{r(e,t)}catch(o){const n=o;console.error(`Error by callback of stateChange: ${n==null?void 0:n.message}`)}})}instanceMessage(e,t,i){this._instanceSubscriptions[t]&&this._instanceSubscriptions[t].forEach(r=>{r.messageType===e&&r.callback(i,t,e)})}getStates(e,t){return this.connected?(typeof e=="boolean"&&(t=e,e=void 0),new Promise((i,r)=>{this._socket.emit("getStates",e,(o,n)=>{this.states=n,!t&&this.onProgress(St.STATES_LOADED),o?r(new Error(o)):i(this.states)})})):Promise.reject(new Error(Q))}getState(e){return this.connected?e&&e===this.ignoreState?Promise.resolve(this.simStates[e]||{val:null,ack:!0}):new Promise((t,i)=>{this._socket.emit("getState",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}getBinaryState(e){return this.connected?new Promise((t,i)=>{this._socket.emit("getBinaryState",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}setBinaryState(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("setBinaryState",e,t,o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}setState(e,t,i){if(!this.connected)return Promise.reject(new Error(Q));if(e&&e===this.ignoreState){let r;if(typeof i=="boolean"||typeof t=="object"&&t.val!==void 0?r=t:r={val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=r,this.statesSubscribes[e])for(const o of this.statesSubscribes[e].cbs)try{o(e,r)}catch(n){console.error(`Error by callback of stateChanged: ${n}`)}return Promise.resolve()}return new Promise((r,o)=>{this._socket.emit("setState",e,t,n=>n?o(new Error(n)):r())})}getObjects(e,t){return this.connected?new Promise((i,r)=>{!e&&this.objects?i(this.objects):this._socket.emit(H.isWeb()?"getObjects":"getAllObjects",(o,n)=>{this.objects=n,t&&this.onProgress(St.OBJECTS_LOADED),o?r(new Error(o)):i(this.objects)})}):Promise.reject(new Error(Q))}getObjectsById(e){return this.connected?new Promise((t,i)=>{this._socket.emit("getObjects",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}_subscribe(e){if(e&&!this.subscribed){this.subscribed=!0,this.autoSubscribes.forEach(i=>this._socket.emit("subscribeObjects",i)),Object.keys(this.objectsSubscribes).forEach(i=>this._socket.emit("subscribeObjects",i)),this.autoSubscribeLog&&this._socket.emit("requireLog",!0);const t=Object.keys(this.statesSubscribes);t.forEach(i=>this._socket.emit("subscribe",i)),t.length&&this._socket.emit(H.isWeb()?"getStates":"getForeignStates",t,(i,r)=>{i&&console.error(`Cannot getForeignStates: ${JSON.stringify(i)}`),r&&Object.keys(r).forEach(o=>this.stateChange(o,r[o]))})}else!e&&this.subscribed&&(this.subscribed=!1,this.autoSubscribes.forEach(t=>this._socket.emit("unsubscribeObjects",t)),Object.keys(this.objectsSubscribes).forEach(t=>this._socket.emit("unsubscribeObjects",t)),this.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach(t=>this._socket.emit("unsubscribe",t)))}requireLog(e){return this.connected?new Promise((t,i)=>{this._socket.emit("requireLog",e,r=>r?i(new Error(r)):t())}):Promise.reject(new Error(Q))}delObject(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("delObject",e,{maintenance:!!t},o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}delObjects(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("delObjects",e,{maintenance:!!t},o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}setObject(e,t){return this.connected?t?(t=JSON.parse(JSON.stringify(t)),Object.prototype.hasOwnProperty.call(t,"from")&&delete t.from,Object.prototype.hasOwnProperty.call(t,"user")&&delete t.user,Object.prototype.hasOwnProperty.call(t,"ts")&&delete t.ts,new Promise((i,r)=>{this._socket.emit("setObject",e,t,o=>o?r(new Error(o)):i())})):Promise.reject(new Error("Null object is not allowed")):Promise.reject(new Error(Q))}getObject(e){return this.connected?e&&e===this.ignoreState?Promise.resolve({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed",read:!0,write:!0,role:"state"},native:{}}):new Promise((t,i)=>{this._socket.emit("getObject",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}getAdapterInstances(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",!t&&this._promises[`instances_${e}`]instanceof Promise?this._promises[`instances_${e}`]:this.connected?(this._promises[`instances_${e}`]=new Promise((i,r)=>{this._socket.emit("getAdapterInstances",e,(o,n)=>o?r(new Error(o)):i(n))}),this._promises[`instances_${e}`]):Promise.reject(new Error(Q))}getAdapters(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(typeof e=="boolean"&&(t=e,e=""),e||="",!t&&this._promises[`adapter_${e}`]instanceof Promise?this._promises[`adapter_${e}`]:this.connected?(this._promises[`adapter_${e}`]=new Promise((i,r)=>{this._socket.emit("getAdapters",e,(o,n)=>{o?r(new Error(o)):i(n)})}),this._promises[`adapter_${e}`]):Promise.reject(new Error(Q)))}_renameGroups(e,t){if(!(e!=null&&e.length))t==null||t(null);else{const i=e.pop();if(!i){setTimeout(()=>this._renameGroups(e,t),0);return}const r=i._id;i._id=i.newId,delete i.newId,this.setObject(i._id,i).then(()=>this.delObject(r)).then(()=>setTimeout(()=>this._renameGroups(e,t),0)).catch(o=>t==null?void 0:t(o))}}async renameGroup(e,t,i){if(H.isWeb())return Promise.reject(new Error("Allowed only in admin"));const r=await this.getGroups(!0);if(r.length){const o=r.filter(M=>M._id.startsWith(`${e}.`));o.forEach(M=>{M.newId=t+M._id.substring(e.length)}),await new Promise((M,c)=>{this._renameGroups(o,l=>l?c(new Error(l)):M(null))});const n=r.find(M=>M._id===e);if(n)return n._id=t,i!==void 0&&(n.common||={},n.common.name=i),this.setObject(n._id,n).then(()=>this.delObject(e))}return Promise.resolve()}sendTo(e,t,i){return this.connected?new Promise(r=>{this._socket.emit("sendTo",e,t,i,o=>r(o))}):Promise.reject(new Error(Q))}extendObject(e,t){return this.connected?(t=JSON.parse(JSON.stringify(t)),Object.prototype.hasOwnProperty.call(t,"from")&&delete t.from,Object.prototype.hasOwnProperty.call(t,"user")&&delete t.user,Object.prototype.hasOwnProperty.call(t,"ts")&&delete t.ts,new Promise((i,r)=>{this._socket.emit("extendObject",e,t,o=>o?r(new Error(o)):i())})):Promise.reject(new Error(Q))}registerLogHandler(e){!this.onLogHandlers.includes(e)&&this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);t!==-1&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){!this.onConnectionHandlers.includes(e)&&this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);t!==-1&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return!t&&this._promises[`enums_${e||"all"}`]instanceof Promise?this._promises[`enums_${e||"all"}`]:this.connected?(this._promises[`enums_${e||"all"}`]=new Promise((i,r)=>{this._socket.emit("getObjectView","system","enum",{startkey:`enum.${e||""}`,endkey:`enum.${e?`${e}.`:""}香`},(o,n)=>{if(!o&&n){const M={};for(let c=0;c{this._socket.emit("getObjectView",e,t,{startkey:i,endkey:r},(M,c)=>{if(M)n(new Error(M));else{const l={};if(c&&c.rows)for(let N=0;N{const i=[];return t&&t.native&&t.native.certificates&&Object.keys(t.native.certificates).forEach(r=>{const o=t.native.certificates[r];if(!o)return;const n={name:r,type:""};o.length<700&&(o.includes("/")||o.includes("\\"))?(r.toLowerCase().includes("private")||o.toLowerCase().includes("private")?n.type="private":(r.toLowerCase().includes("public")||o.toLowerCase().includes("public"))&&(n.type="public"),i.push(n)):(n.type=o.substring(0,26)==="-----BEGIN RSA PRIVATE KEY"||o.substring(0,22)==="-----BEGIN PRIVATE KEY"?"private":"public",n.type==="public"&&o.split("-----END CERTIFICATE-----").filter(c=>c.replace(/\r\n|\r|\n/,"").trim()).length>1&&(n.type="chained"),i.push(n))}),i}),this._promises.cert):Promise.reject(new Error(Q))}getLogs(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(i=>{this._socket.emit("sendToHost",e,"getLogs",t||200,r=>i(r))}):Promise.reject(new Error(Q))}getLogsFiles(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,i)=>{this._socket.emit("readLogs",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}delLogs(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,i)=>{this._socket.emit("sendToHost",e,"delLogs",null,r=>r?i(new Error(r)):t())}):Promise.reject(new Error(Q))}readMetaItems(){return this.connected?new Promise((e,t)=>{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"香"},(i,r)=>i?t(new Error(i)):e(r.rows&&r.rows.map(o=>o.value)))}):Promise.reject(new Error(Q))}readDir(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("readDir",e,t,(o,n)=>o?r(new Error(o)):i(n))}):Promise.reject(new Error(Q))}readFile(e,t,i){return this.connected?new Promise((r,o)=>{i?this._socket.emit("readFile64",e,t,i,(n,M)=>n?o(new Error(n)):r(M)):this._socket.emit("readFile",e,t,(n,M,c)=>{n?o(new Error(n)):r({data:M,type:c})})}):Promise.reject(new Error(Q))}writeFile64(e,t,i){return this.connected?new Promise((r,o)=>{if(typeof i=="string")this._socket.emit("writeFile",e,t,i,n=>n?o(new Error(n)):r());else{const n=btoa(new Uint8Array(i).reduce((M,c)=>M+String.fromCharCode(c),""));this._socket.emit("writeFile64",e,t,n,M=>M?o(new Error(M)):r())}}):Promise.reject(new Error(Q))}deleteFile(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("unlink",e,t,o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}deleteFolder(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("deleteFolder",e,t,o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}getHosts(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.hosts instanceof Promise?this._promises.hosts:this.connected?(this._promises.hosts=new Promise((t,i)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.香"},(r,o)=>{r?i(new Error(r)):t(o.rows.map(n=>n.value))})}),this._promises.hosts):Promise.reject(new Error(Q))}getUsers(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.users instanceof Promise?this._promises.users:this.connected?(this._promises.users=new Promise((t,i)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.香"},(r,o)=>{r?i(new Error(r)):t(o.rows.map(n=>n.value))})}),this._promises.users):Promise.reject(new Error(Q))}getGroups(e){return!e&&this._promises.groups instanceof Promise?this._promises.groups:this.connected?(this._promises.groups=new Promise((t,i)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.香"},(r,o)=>{r?i(new Error(r)):t(o.rows.map(n=>n.value))})}),this._promises.groups):Promise.reject(new Error(Q))}getHostInfo(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e+=`system.host.${e}`),!t&&this._promises[`hostInfo_${e}`]instanceof Promise?this._promises[`hostInfo_${e}`]:this.connected?(this._promises[`hostInfo_${e}`]=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("getHostInfo timeout")))},i||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getHostInfo",null,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getHostInfo"')):!M||typeof M!="object"?o(new Error('Cannot read "getHostInfo"')):r(M))})}),this._promises[`hostInfo_${e}`]):Promise.reject(new Error(Q)))}getHostInfoShort(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e+=`system.host.${e}`),!t&&this._promises[`hostInfoShort_${e}`]instanceof Promise?this._promises[`hostInfoShort_${e}`]:this.connected?(this._promises[`hostInfoShort_${e}`]=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("hostInfoShort timeout")))},i||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getHostInfoShort",null,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getHostInfoShort"')):!M||typeof M!="object"?o(new Error('Cannot read "getHostInfoShort"')):r(M))})}),this._promises[`hostInfoShort_${e}`]):Promise.reject(new Error(Q)))}getRepository(e,t,i,r){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!i&&this._promises.repo instanceof Promise?this._promises.repo:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.repo=new Promise((o,n)=>{let M=setTimeout(()=>{M&&(M=null,n(new Error("getRepository timeout")))},r||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getRepository",t,c=>{M&&(clearTimeout(M),M=null,c===kt?n(new Error('May not read "getRepository"')):!c||typeof c!="object"?n(new Error('Cannot read "getRepository"')):o(c))})}),this._promises.repo):Promise.reject(new Error(Q))}getInstalled(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(this._promises.installed=this._promises.installed||{},!t&&this._promises.installed[e]instanceof Promise?this._promises.installed[e]:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.installed[e]=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("getInstalled timeout")))},i||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getInstalled",null,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getInstalled"')):!M||typeof M!="object"?o(new Error('Cannot read "getInstalled"')):r(M))})}),this._promises.installed[e]):Promise.reject(new Error(Q)))}rename(e,t,i){return this.connected?new Promise((r,o)=>{this._socket.emit("rename",e,t,i,n=>n?o(new Error(n)):r())}):Promise.reject(new Error(Q))}renameFile(e,t,i){return this.connected?new Promise((r,o)=>{this._socket.emit("renameFile",e,t,i,n=>n?o(new Error(n)):r())}):Promise.reject(new Error(Q))}cmdExec(e,t,i,r){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?(e.startsWith(e)||(e+=`system.host.${e}`),new Promise((o,n)=>{let M=r?setTimeout(()=>{M&&(M=null,n(new Error("cmdExec timeout")))},r):null;this._socket.emit("cmdExec",e,i,t,null,c=>{(!r||M)&&(M&&clearTimeout(M),M=null,c?n(new Error(c)):o())})})):Promise.reject(new Error(Q))}checkFeatureSupported(e,t){return!t&&this._promises[`supportedFeatures_${e}`]instanceof Promise?this._promises[`supportedFeatures_${e}`]:this.connected?(this._promises[`supportedFeatures_${e}`]=new Promise((i,r)=>{this._socket.emit("checkFeatureSupported",e,(o,n)=>o?r(new Error(o)):i(n))}),this._promises[`supportedFeatures_${e}`]):Promise.reject(new Error(Q))}async readBaseSettings(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):await this.checkFeatureSupported("CONTROLLER_READWRITE_BASE_SETTINGS")?this.connected?new Promise((i,r)=>{let o=setTimeout(()=>{o&&(o=null,r(new Error("readBaseSettings timeout")))},this.props.cmdTimeout);e.startsWith("system.host.")&&(e=e.replace(/^system\.host\./,"")),this._socket.emit("sendToHost",e,"readBaseSettings",null,n=>{o&&(clearTimeout(o),o=null,n===kt?r(new Error('May not read "BaseSettings"')):!n||typeof n!="object"?r(new Error('Cannot read "BaseSettings"')):i(n))})}):Promise.reject(new Error(Q)):Promise.reject(new Error("Not supported"))}writeBaseSettings(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.checkFeatureSupported("CONTROLLER_READWRITE_BASE_SETTINGS").then(i=>i?this.connected?new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("writeBaseSettings timeout")))},this.props.cmdTimeout);this._socket.emit("sendToHost",e,"writeBaseSettings",t,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not write "BaseSettings"')):M?r(M):o(new Error('Cannot write "BaseSettings"')))})}):Promise.reject(new Error(Q)):Promise.reject(new Error("Not supported")))}restartController(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((t,i)=>{this._socket.emit("sendToHost",e,"restartController",null,r=>{r?i(new Error(r)):t(!0)})})}getDiagData(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise(i=>{this._socket.emit("sendToHost",e,"getDiagData",t,r=>i(r))})}getForeignStates(e){return this.connected?H.isWeb()?new Promise((t,i)=>{this._socket.emit("getStates",e||"*",(r,o)=>r?i(new Error(r)):t(o))}):new Promise((t,i)=>{this._socket.emit("getForeignStates",e||"*",(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}getForeignObjects(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((i,r)=>{this._socket.emit("getForeignObjects",e||"*",t,(o,n)=>o?r(new Error(o)):i(n))}):Promise.reject(new Error(Q))}getSystemConfig(e){return!e&&this._promises.systemConfig instanceof Promise?this._promises.systemConfig:this.connected?(this._promises.systemConfig=this.getObject("system.config").then(t=>{const i=t||{};return i.common||={},i.native||={},i}),this._promises.systemConfig):Promise.reject(new Error(Q))}setSystemConfig(e){return this.setObject("system.config",e).then(()=>this._promises.systemConfig=Promise.resolve(e))}getRawSocket(){return this._socket}getHistory(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("getHistory",e,t,(o,n)=>o?r(new Error(o)):i(n))}):Promise.reject(new Error(Q))}getHistoryEx(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("getHistory",e,t,(o,n,M,c)=>o?r(new Error(o)):i({values:n,sessionId:c,step:M}))}):Promise.reject(new Error(Q))}changePassword(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((i,r)=>{this._socket.emit("changePassword",e,t,o=>o?r(new Error(o)):i())})}getIpAddresses(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e=`system.host.${e}`),!t&&this._promises[`IPs_${e}`]instanceof Promise?this._promises[`IPs_${e}`]:(this._promises[`IPs_${e}`]=this.getObject(e).then(i=>i!=null&&i.common?i.common.address||[]:[]),this._promises[`IPs_${e}`]))}getHostByIp(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")&&(e=e.replace(/^system\.host\./,"")),!t&&this._promises[`rIPs_${e}`]instanceof Promise?this._promises[`rIPs_${e}`]:(this._promises[`rIPs_${e}`]=new Promise(i=>{this._socket.emit("getHostByIp",e,(r,o)=>{var c,l;const n=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],M=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if((l=(c=o==null?void 0:o.native)==null?void 0:c.hardware)!=null&&l.networkInterfaces){for(const N in o.native.hardware.networkInterfaces)if(Object.prototype.hasOwnProperty.call(o.native.hardware.networkInterfaces,N))for(let u=0;u{this._socket.emit("encrypt",e,(r,o)=>r?i(new Error(r)):t(o))})}decrypt(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((t,i)=>{this._socket.emit("decrypt",e,(r,o)=>r?i(new Error(r)):t(o))})}getVersion(e){return!e&&this._promises.version instanceof Promise?this._promises.version:(this._promises.version=new Promise((t,i)=>{this._socket.emit("getVersion",(r,o,n)=>{r&&!o&&typeof r=="string"&&r.match(/\d+\.\d+\.\d+/)?t({version:r,serverName:"socketio"}):r?i(new Error(r)):t({version:o,serverName:n})})}),this._promises.version)}getWebServerName(){return this._promises.webName instanceof Promise?this._promises.webName:(this._promises.webName=new Promise((e,t)=>{this._socket.emit("getAdapterName",(i,r)=>i?t(new Error(i)):e(r))}),this._promises.webName)}getAdminVersion(){return console.log("Deprecated: use getVersion"),this.getVersion()}chmodFile(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((r,o)=>{this._socket.emit("chmodFile",e,t,i,(n,M,c)=>n?o(new Error(n)):r({entries:M,id:c}))}):Promise.reject(new Error(Q))}chownFile(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((r,o)=>{this._socket.emit("chownFile",e,t,i,(n,M,c)=>n?o(new Error(n)):r({entries:M,id:c}))}):Promise.reject(new Error(Q))}fileExists(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("fileExists",e,t,(o,n)=>o?r(new Error(o)):i(n))}):Promise.reject(new Error(Q))}getNotifications(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(i=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},r=>i(r))}):Promise.reject(new Error(Q))}clearNotifications(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(i=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},r=>i(r))}):Promise.reject(new Error(Q))}getIsEasyModeStrict(){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((e,t)=>{this._socket.emit("getIsEasyModeStrict",(i,r)=>i?t(new Error(i)):e(r))}):Promise.reject(new Error(Q))}getEasyMode(){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((e,t)=>{this._socket.emit("getEasyMode",(i,r)=>i?t(new Error(i)):e(r))}):Promise.reject(new Error(Q))}getCurrentUser(){return this.connected?new Promise(e=>{this._socket.emit("authEnabled",(t,i)=>e(i))}):Promise.reject(new Error(Q))}getCurrentSession(e){return this.connected?new Promise((t,i)=>{const r=new AbortController;let o=setTimeout(()=>{o&&(o=null,r.abort(),i(new Error("getCurrentSession timeout")))},e||5e3);fetch("./session",{signal:r.signal}).then(n=>n.json()).then(n=>{o&&(clearTimeout(o),o=null,t(n))}).catch(n=>i(new Error(`getCurrentSession: ${n}`)))}):Promise.reject(new Error(Q))}getRatings(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,i)=>{this._socket.emit("getRatings",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}getCurrentInstance(){return this.connected?this._promises.currentInstance instanceof Promise?this._promises.currentInstance:(this._promises.currentInstance=new Promise((e,t)=>{this._socket.emit("getCurrentInstance",(i,r)=>i?t(new Error(i)):e(r))}),this._promises.currentInstance):Promise.reject(new Error(Q))}getCompactAdapters(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.compactAdapters instanceof Promise?this._promises.compactAdapters:this.connected?(this._promises.compactAdapters=new Promise((t,i)=>{this._socket.emit("getCompactAdapters",(r,o)=>r?i(new Error(r)):t(o))}),this._promises.compactAdapters):Promise.reject(new Error(Q))}getAdaptersResetCache(e){e||="",delete this._promises.compactAdapters,delete this._promises[`adapter_${e}`]}getCompactInstances(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.compactInstances instanceof Promise?this._promises.compactInstances:this.connected?(this._promises.compactInstances=new Promise((t,i)=>{this._socket.emit("getCompactInstances",(r,o)=>r?i(new Error(r)):t(o))}),this._promises.compactInstances):Promise.reject(new Error(Q))}getAdapternInstancesResetCache(e){e||="",delete this._promises.compactInstances,delete this._promises[`instances_${e}`]}getCompactInstalled(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(this._promises.installedCompact||={},!t&&this._promises.installedCompact[e]instanceof Promise?this._promises.installedCompact[e]:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.installedCompact[e]=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("getCompactInstalled timeout")))},i||this.props.cmdTimeout);this._socket.emit("getCompactInstalled",e,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getCompactInstalled"')):!M||typeof M!="object"?o(new Error('Cannot read "getCompactInstalled"')):r(M))})}),this._promises.installedCompact[e]):Promise.reject(new Error(Q)))}getCompactSystemRepositories(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.getCompactSystemRepositories instanceof Promise?this._promises.getCompactSystemRepositories:this.connected?(this._promises.getCompactSystemRepositories=new Promise((i,r)=>{let o=setTimeout(()=>{o&&(o=null,r(new Error("getCompactSystemRepositories timeout")))},t||this.props.cmdTimeout);this._socket.emit("getCompactSystemRepositories",n=>{o&&(clearTimeout(o),o=null,n===kt?r(new Error('May not read "getCompactSystemRepositories"')):!n||typeof n!="object"?r(new Error('Cannot read "getCompactSystemRepositories"')):i(n))})}),this._promises.getCompactSystemRepositories):Promise.reject(new Error(Q))}getCompactSystemConfig(e){return!e&&this._promises.systemConfigPromise instanceof Promise?this._promises.systemConfigPromise:this.connected?(this._promises.systemConfigPromise=new Promise((t,i)=>{this._socket.emit("getCompactSystemConfig",(r,o)=>r?i(new Error(r)):t(o))}),this._promises.systemConfigPromise):Promise.reject(new Error(Q))}getCompactRepository(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!t&&this._promises.repoCompact instanceof Promise?this._promises.repoCompact:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.repoCompact=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("getCompactRepository timeout")))},i||this.props.cmdTimeout);this._socket.emit("getCompactRepository",e,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getCompactRepository"')):M?r(M):o(new Error('Cannot read "getCompactRepository"')))})}),this._promises.repoCompact):Promise.reject(new Error(Q))}getInstalledResetCache(){delete this._promises.repoCompact,delete this._promises.repo}getCompactHosts(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.hostsCompact instanceof Promise?this._promises.hostsCompact:this.connected?(this._promises.hostsCompact=new Promise((t,i)=>{this._socket.emit("getCompactHosts",(r,o)=>r?i(new Error(r)):t(o))}),this._promises.hostsCompact):Promise.reject(new Error(Q))}getUuid(){return this._promises.uuid instanceof Promise?this._promises.uuid:this.connected?(this._promises.uuid=this.getObject("system.meta.uuid").then(e=>{var t;return(t=e==null?void 0:e.native)==null?void 0:t.uuid}),this._promises.uuid):Promise.reject(new Error(Q))}subscribeOnInstance(e,t,i,r){return this.connected?new Promise((o,n)=>{this._socket.emit("clientSubscribe",e,t,i,(M,c)=>{M?n(new Error(M)):c!=null&&c.error?n(new Error(c.error)):(e.startsWith("system.adapter.")||(e=`system.adapter.${e}`),this._instanceSubscriptions[e]||=[],this._instanceSubscriptions[e].find(l=>l.messageType===t&&l.callback===r)||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(c))})}):Promise.reject(new Error(Q))}unsubscribeFromInstance(e,t,i){var n;e.startsWith("system.adapter.")||(e=`system.adapter.${e}`);let r;const o=[];do{r=!1;const M=(n=this._instanceSubscriptions[e])==null?void 0:n.findIndex(c=>(!t||c.messageType===t)&&(!i||c.callback===i));if(M!=null&&M!==-1){r=!0;const c=this._instanceSubscriptions[e][M].messageType;this._instanceSubscriptions[e].splice(M,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e],this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find(N=>N.messageType===c)||o.push(new Promise((N,u)=>{this._socket.emit("clientUnsubscribe",e,t,(L,g)=>{L?u(new Error(L)):N(g)})}))}}while(r&&(!i||!t));return o.length?Promise.all(o).then(M=>M.find(c=>c)||!1):Promise.resolve(!1)}log(e,t){e&&this._socket.emit("log",e,t||"debug")}logout(){return this.connected?new Promise((e,t)=>{this._socket.emit("logout",i=>i?t(new Error(i)):e())}):Promise.reject(new Error(Q))}setStateToIgnore(e){this.ignoreState=e||""}}function rYe(s){var e;return s.type==="object"?`iobobject://${s.address}/${s.path||""}`:s.type==="state"?`iobstate://${s.address}`:s.type==="file"?`iobfile://${s.address}/${s.path||""}`:s.type==="http"?s.address:(e=s.path)!=null&&e.includes("/")?`iobfile://${s.address}/${s.path}`:s.path?`iobobject://${s.address}/${s.path}`:`iobstate://${s.address}`}function Nve(s){const e={type:"object",address:""};if(s.startsWith("iobobject://")){e.type="object",s=s.replace("iobobject://","");const t=s.split("/");e.address=t[0],e.path=t[1]}else if(s.startsWith("iobstate://")){e.type="state",s=s.replace("iobstate://","");const t=s.split("/");e.address=t[0],e.path=t[1]}else if(s.startsWith("iobfile://")){e.type="file",s=s.replace("iobfile://","");const t=s.split("/");e.address=t.shift(),e.path=t.join("/")}else if(s.startsWith("http://")||s.startsWith("https://"))e.type="http",e.address=s;else if(s.startsWith("data:"))e.type="base64",e.address=s;else{const t=s.split("/");if(t.length===2)if(e.address=t[0],e.path=t[1],e.path.includes("."))e.type="object";else if(e.path)if(e.path==="val"||e.path==="q"||e.path==="ack"||e.path==="ts"||e.path==="lc"||e.path==="from"||e.path==="user"||e.path==="expire"||e.path==="c")e.type="state";else if(e.path==="common"||e.path==="native"||e.path==="from"||e.path==="acl"||e.path==="type")e.type="object";else throw new Error(`Unknown path: ${e.path}`);else e.type="state";else t.length===1?(e.address=t[0],e.type="state"):(e.address=t.shift(),e.type="file",e.path=t.join("/"))}return e}function bg(s,e,t){if(t||=0,s==null||!e)return s;if(e.length-1===t)return s[e[t]];if(typeof s=="object")return bg(s[e[t]],e,t+1)}function Lve(s,e,t,i){if(i||=0,s==null||!e)return t;if(e.length-1===i)return s[e[i]]=t,s;if(typeof s=="object")return Lve(s[e[i]],e,t,i+1)}async function oYe(s,e){var t;if(typeof s=="string"&&(s=Nve(s)),s.type==="object"){const i=await e.getObject(s.address);return bg(i,(t=s.path)==null?void 0:t.split("."))}if(s.type==="state"){const i=await e.getState(s.address);return s.path?i==null?void 0:i[s.path]:i}if(s.type==="file")return await e.readFile(s.address,s.path,!0);if(s.type==="http")return fetch(s.address).then(i=>i.text()).then(i=>{if(i.startsWith("{")&&i.endsWith("}")||i.startsWith("[")&&i.endsWith("]"))try{return JSON.parse(i)}catch{}return i});throw new Error(`Unknown type: ${s.type}`)}const Zn=s=>{const e={};return s.forEach(t=>{e[t]={requiredVersion:"*",singleton:!0}}),e};function nYe(s){const e=["@emotion/react","@emotion/styled","@iobroker/adapter-react-v5","@iobroker/json-config","@iobroker/dm-gui-components","@mui/icons-material","@mui/material","@mui/x-date-pickers","date-fns","date-fns/locale","leaflet","leaflet-geosearch","react","react-ace","react-dom","react-dropzone","semver"];return Array.isArray(s)?Zn(e.filter(t=>s.includes(t))):s&&(s.dependencies||s.devDependencies)?Zn(e.filter(t=>{var i,r;return((i=s.dependencies)==null?void 0:i[t])||((r=s.devDependencies)==null?void 0:r[t])})):Zn(e)}export{Cve as AdminConnection,FSe as Cleaner,sr as ColorPicker,rs as ComplexCron,qve as ComplexCronDialog,S4 as Confirm,ke as Connection,eYe as Cron,pve as CustomModal,N5e as DeviceTypeIcon,Pve as DeviceTypeSelector,qve as DialogComplexCron,S4 as DialogConfirm,eYe as DialogCron,k4 as DialogError,tYe as DialogMessage,sYe as DialogSelectFile,lke as DialogSelectID,iYe as DialogSimpleCron,w_e as DialogTextInput,Ove as DoorClosed,GSe as DoorOpened,Qe as ERRORS,ve as EXTENSIONS,k4 as Error,G_e as FileBrowser,Lc as FileBrowserClass,F_e as FileViewer,R_e as FileViewerClass,Eve as FireOff,$0 as FireOn,_ve as FloodOff,P0 as FloodOn,HSe as Gate,Ds as GenericApp,xve as HeatValve,Sve as Home,VSe as Humidity,D as I18n,q0 as ITEM_IMAGES,be as Icon,f5e as IconAdapter,J_e as IconAlias,Vve as IconButtonImage,ig as IconChannel,x5e as IconClearFilter,Ti as IconClosed,Bs as IconCopy,rg as IconDevice,O5e as IconDocument,E5e as IconDocumentReadOnly,Ea as IconExpert,Zve as IconFx,kve as IconHome,_5e as IconInstance,Xve as IconLogout,Nc as IconNoIcon,lo as IconOpen,fve as IconPicker,pSe as IconSelector,rr as IconState,Kve as IconVacuum,No as Image,Jve as InfoBox,W0 as Jalousie,H as LegacyConnection,Ph as Loader,$h as LoaderHA,_h as LoaderMV,xh as LoaderNW,bh as LoaderPT,kh as LoaderVendor,tg as Logo,sg as MDUtils,vve as Material,tYe as Message,Yve as MotionOff,ZSe as MotionOn,H5e as ObjectBrowser,xo as ObjectBrowserClass,Ive as PERMISSION_ERROR,ht as PROGRESS,XSe as PushButton,$n as RGB,Qve as RepairExpert,nr as Router,Wve as STATES_NAME_ICONS,Gh as SaveCloseButtons,Ee as Schedule,sYe as SelectFile,lke as SelectID,Bve as SelectWithIcon,dr as SimpleCron,iYe as SimpleCronDialog,KSe as Socket,S5e as TabContainer,k5e as TabContent,v5e as TabHeader,Rve as TableResize,w_e as TextInput,Fve as TextWithIcon,fy as Theme,qSe as Thermometer,bve as ThermometerSimple,e5e as Thermostat,Gve as ToggleThemeMenu,Wa as TreeTable,Hve as UploadImage,m as Utils,Uve as Valve,$ve as WindowClosed,t5e as WindowOpened,qL as WindowTilted,VL as convertCronToText,x4 as copy,Qg as cron2state,Xge as dictionary,eg as extendDeviceTypeTranslation,bg as getAttrInObject,mve as getSelectIdIcon,_o as getSelectIdIconFromObjects,Ave as getSystemIcon,Nve as iobUriParse,oYe as iobUriRead,rYe as iobUriToString,nYe as moduleFederationShared,IN as pattern2RegEx,Eh as printPrompt,Lve as setAttrInObject,cn as withWidth}; + v-21.333H362.68c11.797,0,21.333-9.557,21.333-21.333V320C384.013,308.224,374.477,298.667,362.68,298.667z`}))}function Zve(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 339 339",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M 318.371 88.485 C 332.371 114.538 339.207 142.418 338.881 172.125 C 338.874 172.605 338.631 172.845 338.151 172.845 L 335.411 172.845 C 335.077 172.845 334.911 173.012 334.911 173.345 L 334.911 181.215 C 334.911 181.635 335.121 181.845 335.541 181.845 L 337.711 181.845 C 338.157 181.845 338.364 182.068 338.331 182.515 C 331.921 264.525 267.321 330.135 185.931 337.995 C 89.911 347.265 6.491 275.385 0.301 179.465 C 0.274 179.052 0.467 178.845 0.881 178.845 L 2.381 178.845 C 2.741 178.845 2.921 178.665 2.921 178.305 L 2.911 171.465 C 2.904 171.052 2.694 170.845 2.281 170.845 L 0.441 170.845 C 0.147 170.845 0.001 170.698 0.001 170.405 C -0.289 83.535 64.591 10.095 151.421 0.955 C 211.511 -5.375 269.171 20.055 305.341 68.135 C 305.538 68.391 305.938 68.338 306.062 68.039 C 306.065 68.031 306.068 68.023 306.071 68.015 L 311.541 51.395 C 311.63 51.125 311.924 50.977 312.201 51.065 L 316.881 52.625 C 317.274 52.758 317.407 53.022 317.281 53.415 L 310.271 74.305 C 310.157 74.645 310.197 74.968 310.391 75.275 L 314.011 80.905 C 314.204 81.205 314.481 81.378 314.841 81.425 L 336.771 84.365 C 337.124 84.412 337.277 84.612 337.231 84.965 L 336.601 89.775 C 336.547 90.182 336.321 90.358 335.921 90.305 L 318.721 87.975 C 318.267 87.915 318.151 88.085 318.371 88.485 Z M 200.701 172.615 C 170.541 200.245 121.671 181.975 117.251 140.865 C 117.211 140.518 117.017 140.345 116.671 140.345 L 8.941 140.345 C 8.68 140.346 8.46 140.532 8.421 140.785 C -10.469 249.095 80.901 345.385 189.421 331.625 C 265.701 321.955 325.741 260.435 332.311 183.415 C 343.611 50.895 200.811 -38.365 85.961 28.845 C 47.041 51.625 20.601 89.335 9.791 133.265 C 9.611 133.985 9.891 134.345 10.631 134.345 L 116.371 134.345 C 116.664 134.345 116.824 134.202 116.851 133.915 C 118.397 116.288 126.001 103.005 139.661 94.065 C 172.821 72.345 214.571 95.715 216.891 133.845 C 216.911 134.178 217.087 134.345 217.421 134.345 L 330.342 134.345 C 330.842 134.345 331.092 134.595 331.092 135.095 L 331.092 139.595 C 331.092 140.095 330.842 140.345 330.342 140.345 L 217.161 140.345 C 216.827 140.345 216.641 140.512 216.601 140.845 C 215.141 153.652 209.841 164.242 200.701 172.615 Z M 210.861 135.845 C 210.861 111.572 191.183 91.895 166.911 91.895 C 142.638 91.895 122.961 111.572 122.961 135.845 C 122.961 160.118 142.638 179.795 166.911 179.795 C 191.183 179.795 210.861 160.118 210.861 135.845 Z",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"}),a.createElement("path",{fill:"currentColor",d:"M 222.771 42.215 C 224.237 43.708 223.741 45.092 221.281 46.365 C 220.5 46.768 219.574 46.779 218.781 46.395 C 183.761 29.182 149.014 29.638 114.541 47.765 C 113.252 48.444 111.662 47.8 111.211 46.415 C 110.891 45.435 110.867 44.465 111.141 43.505 C 111.234 43.158 111.437 42.898 111.751 42.725 C 145.631 23.545 186.631 23.045 221.051 41.045 C 221.831 41.452 222.404 41.842 222.771 42.215 Z",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"}),a.createElement("text",{style:{whiteSpace:"pre",fontFamily:"Arial, sans-serif",fontSize:16},x:"139.395",y:"288.084",transform:"matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -5.684341886080802e-14, 0)"},"vacuum"))}const ave={dialogPaper:{height:"calc(100% - 96px)"}};class Xve extends a.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={showWarning:"",cron:t}}handleCancel(){this.props.onClose()}handleOk(e){if(!e){const t=rs.cron2state(this.state.cron);if(t.seconds==="*"||t.seconds==="*/1"){this.setState({showWarning:"everySecond"});return}if(t.minutes==="*"||t.minutes==="*/1"){this.setState({showWarning:"everyMinute"});return}}this.props.onOk(this.state.cron),this.props.onClose()}renderWarningDialog(){return this.state.showWarning?a.createElement(_4,{title:D.t("ra_Please confirm"),text:D.t(this.state.showWarning==="everySecond"?"ra_The schedule will be executed every second. Are you sure?":"ra_The schedule will be executed every minute. Are you sure?"),onClose:e=>this.setState({showWarning:""},()=>{e&&this.handleOk(!0)})}):null}handleClear(){this.props.onOk(!1),this.props.onClose()}render(){return a.createElement(Ae,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":ave.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},this.renderWarningDialog(),a.createElement(fe,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define schedule...")),a.createElement(_e,{style:{height:"100%",overflow:"hidden"}},a.createElement(rs,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),a.createElement(xe,null,!!this.props.clearButton&&a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.handleClear(),startIcon:a.createElement(wt,null)},this.props.clear||D.t("ra_Clear")),a.createElement(q,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}const Mve={dialogPaper:{height:"calc(100% - 96px)"}};class Kve extends a.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={cron:t,mode:this.props.simple?"simple":this.props.complex?"complex":(typeof t=="object"||t[0]==="{")&&!this.props.noWizard?"wizard":Yg(this.props.cron||"* * * * *")?"simple":"complex"}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.state.cron),this.props.onClose()}setMode(e){this.setState({mode:e})}render(){return a.createElement(Ae,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":Mve.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},a.createElement(fe,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define schedule...")),a.createElement(_e,{style:{height:"100%",overflow:"hidden"}},this.props.simple&&this.props.complex||!this.props.simple&&!this.props.complex?a.createElement("div",null,!this.props.simple&&!this.props.complex&&!this.props.noWizard&&a.createElement(a.Fragment,null,a.createElement(Me,{key:"wizard",checked:this.state.mode==="wizard",onChange:()=>this.setMode("wizard")}),a.createElement("label",{onClick:()=>this.setMode("wizard"),style:this.state.mode!=="wizard"?{color:"lightgrey"}:{}},D.t("sc_wizard"))),(!this.props.simple&&!this.props.complex||this.props.simple)&&a.createElement(a.Fragment,null,a.createElement(Me,{key:"simple",checked:this.state.mode==="simple",onChange:()=>this.setMode("simple")}),a.createElement("label",{onClick:()=>this.setMode("simple"),style:this.state.mode!=="simple"?{color:"lightgrey"}:{}},D.t("sc_simple"))),(!this.props.simple&&!this.props.complex||this.props.complex)&&a.createElement(a.Fragment,null,a.createElement(Me,{key:"complex",checked:this.state.mode==="complex",onChange:()=>this.setMode("complex")}),a.createElement("label",{onClick:()=>this.setMode("complex"),style:this.state.mode!=="complex"?{color:"lightgrey"}:{}},D.t("sc_cron")))):null,this.state.mode==="simple"&&a.createElement(dr,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()}),this.state.mode==="wizard"&&a.createElement(Ee,{theme:this.props.theme,schedule:this.state.cron,onChange:e=>this.setState({cron:e})}),this.state.mode==="complex"&&a.createElement(rs,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}class qve extends De{handleOk(){this.props.onClose&&this.props.onClose()}render(){return a.createElement(Ae,{open:!0,maxWidth:"sm",fullWidth:this.props.fullWidth!==void 0?this.props.fullWidth:!0,onClose:()=>this.handleOk(),"aria-labelledby":"ar_dialog_message_title","aria-describedby":"ar_dialog_message_description"},a.createElement(fe,{id:"ar_dialog_message_title"},this.props.title||D.t("ra_Message")),a.createElement(_e,null,a.createElement(as,{id:"ar_dialog_message_description"},a.createElement("span",{style:{marginRight:this.props.icon?8:0}},this.props.icon||null),this.props.text)),a.createElement(xe,null,a.createElement(q,{id:"ar_dialog_message_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:a.createElement(we,null)},this.props.ok||D.t("ra_Close"))))}}const Ts={headerID:{fontWeight:"bold",fontStyle:"italic"},dialog:{height:"95%"},dialogMobile:{padding:"4px",width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)",height:"100%"},content:{height:"100%",overflow:"hidden"},contentMobile:{padding:"8px 4px"},titleRoot:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}};class eYe extends a.Component{dialogName;filters;constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName=`SelectFile.${this.dialogName}`;const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch{this.filters={}}e.filters&&(this.filters={...this.filters,...e.filters});let i=this.props.selected||[];typeof i!="object"?i=[i]:i=[...i],i=i.filter(r=>r),this.state={selected:i}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect||!Array.isArray(this.state.selected)?this.state.selected:this.state.selected[0]||""),this.props.onClose()}render(){let e;return this.state.selected.length?!Array.isArray(this.state.selected)||this.state.selected.length===1?e=[a.createElement("span",{key:"selected"},D.t("ra_Selected")," "),a.createElement("span",{key:"id",style:Ts.headerID},this.state.selected)]:e=[a.createElement("span",{key:"selected"},D.t("ra_Selected")," "),a.createElement("span",{key:"id",style:Ts.headerID},D.t("%s items",this.state.selected.length))]:e=this.props.title||D.t("ra_Please select file..."),a.createElement(Ae,{onClose:()=>{},maxWidth:!1,style:{zIndex:this.props.zIndex||void 0},sx:{"& .MuiDialog-paper":{...Ts.dialog,...Ts.dialogMobile}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectfile_title"},a.createElement(fe,{id:"ar_dialog_selectfile_title",sx:{"&.MuiDialogTitle-root":Ts.titleRoot}},e),a.createElement(_e,{style:{...Ts.content,...Ts.contentMobile}},a.createElement(R_e,{ready:!0,imagePrefix:this.props.imagePrefix||this.props.prefix||"../",allowUpload:!!this.props.allowUpload,allowDownload:this.props.allowDownload!==!1,allowCreateFolder:!!this.props.allowCreateFolder,allowDelete:!!this.props.allowDelete,allowView:this.props.allowView!==!1,showViewTypeButton:this.props.showViewTypeButton!==!1,showToolbar:this.props.showToolbar!==!1,limitPath:this.props.limitPath,filterFiles:this.props.filterFiles,filterByType:this.props.filterByType,selected:this.props.selected,restrictToFolder:this.props.restrictToFolder,allowNonRestricted:this.props.allowNonRestricted,onSelect:(t,i,r)=>{this.setState({selected:Array.isArray(t)?t:[t]},()=>i&&(!this.props.selectOnlyFolders||r)&&this.handleOk())},t:this.props.t||D.t,lang:this.props.lang||D.getLanguage(),socket:this.props.socket,themeType:this.props.themeType,themeName:this.props.themeName,theme:this.props.theme,showExpertButton:this.props.showExpertButton,expertMode:this.props.expertMode,showTypeSelector:this.props.showTypeSelector})),a.createElement(xe,null,a.createElement(q,{variant:"contained",onClick:()=>this.handleOk(),startIcon:a.createElement(We,null),disabled:!this.state.selected.length,color:"primary"},this.props.ok||D.t("ra_Ok")),a.createElement(q,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}const cve={dialogPaper:{height:"calc(100% - 96px)"}};class tYe extends a.Component{constructor(e){super(e);let t;this.props.cron&&typeof this.props.cron=="string"&&this.props.cron.replace(/^["']/,"")[0]!=="{"?t=this.props.cron.replace(/['"]/g,"").trim():(t=this.props.cron||"{}",typeof t=="string"&&(t=t.replace(/^["']/,"").replace(/["']\n?$/,""))),this.state={cron:t}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.state.cron),this.props.onClose()}render(){return a.createElement(Ae,{onClose:()=>{},maxWidth:"md",fullWidth:!0,sx:{"& .MuiDialog-paper":cve.dialogPaper},open:!0,"aria-labelledby":"cron-dialog-title"},a.createElement(fe,{id:"cron-dialog-title"},this.props.title||D.t("ra_Define CRON...")),a.createElement(_e,{style:{height:"100%",overflow:"hidden"}},a.createElement(dr,{cronExpression:this.state.cron,onChange:e=>this.setState({cron:e}),language:D.getLanguage()})),a.createElement(xe,null,a.createElement(q,{variant:"contained",disabled:!this.state.cron||this.state.cron.includes("_"),onClick:()=>this.handleOk(),color:"primary",startIcon:a.createElement(We,null)},this.props.ok||D.t("ra_Ok")),a.createElement(q,{variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:a.createElement(zr,null)},this.props.cancel||D.t("ra_Cancel"))))}}const St={CONNECTING:0,CONNECTED:1,OBJECTS_LOADED:2,STATES_LOADED:3,READY:4},kt="permissionError",Q="notConnectedError";function zN(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}class H{_socket;_authTimer;systemLang="en";_waitForFirstConnection;_waitForFirstConnectionResolve=null;_promises={};_instanceSubscriptions;props;doNotLoadAllObjects;doNotLoadACL;states={};objects=null;scriptLoadCounter;acl=null;firstConnect=!0;waitForRestart=!1;connected=!1;statesSubscribes={};objectsSubscribes={};filesSubscribes={};onConnectionHandlers=[];onLogHandlers=[];onProgress;onError;loaded=!1;loadTimer=null;loadCounter=0;ignoreState="";simStates={};autoSubscribes;autoSubscribeLog;subscribed;isSecure;onCmdStdoutHandler;onCmdStderrHandler;onCmdExitHandler;systemConfig=null;objectViewCached;constructor(e){e||={protocol:window.location.protocol,host:window.location.hostname},this.props=e,this.autoSubscribes=this.props.autoSubscribes||[],this.autoSubscribeLog=this.props.autoSubscribeLog||!1,this.props.protocol||=window.location.protocol,this.props.host||=window.location.hostname,this.props.port||=window.location.port==="3000"?H.isWeb()?8082:8081:window.location.port,this.props.ioTimeout=Math.max(this.props.ioTimeout||2e4,2e4),this.props.cmdTimeout=Math.max(this.props.cmdTimeout||5e3,5e3),this._instanceSubscriptions={},this.doNotLoadAllObjects=this.props.doNotLoadAllObjects===void 0?!0:this.props.doNotLoadAllObjects,this.doNotLoadACL=this.props.doNotLoadACL===void 0?!0:this.props.doNotLoadACL,this.states={},this._waitForFirstConnection=new Promise(t=>{this._waitForFirstConnectionResolve=t}),this.onProgress=this.props.onProgress||(()=>{}),this.onError=this.props.onError||(t=>console.error(t)),this.startSocket()}static isWeb(){const e=window.adapterName;return e==="material"||e==="vis"||(e==null?void 0:e.startsWith("vis-"))||e==="echarts-show"||window.socketUrl!==void 0}startSocket(){if(typeof window.io>"u"&&typeof window.iob>"u"){if(typeof window.registerSocketOnLoad!="function"){if(this.scriptLoadCounter||=0,this.scriptLoadCounter++,this.scriptLoadCounter<30){setTimeout(()=>this.startSocket(),100);return}window.alert("Cannot load socket.io.js!")}else window.registerSocketOnLoad(()=>this.startSocket());return}if(this._socket)return;let e=this.props.host,t=this.props.port,i=this.props.protocol.replace(":",""),r=window.location.pathname;if(window.location.hostname==="iobroker.net"||window.location.hostname==="iobroker.pro")r="";else{if(window.socketUrl){const M=new URL(window.socketUrl);e=M.hostname,t=M.port,i=M.protocol.replace(":","")}const n=r.lastIndexOf("/");if(n!==-1&&(r=r.substring(0,n+1)),H.isWeb()){const M=r.split("/");M.length>2&&(M.pop(),M[M.length-1].match(/\d+\.\d+\.\d+/)&&M.pop(),M.pop(),r=M.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?`${i}://${e}:${t}${r}`:`${i}://${e}${r}`;this._socket=(window.io||window.iob).connect(o,{path:r.endsWith("/")?`${r}socket.io`:`${r}/socket.io`,query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid}),this._socket.on("connect",n=>{n!==!0?setTimeout(()=>this.getVersion().then(M=>{const[c,l,N]=M.version.split(".");parseInt(c,10)*1e4+parseInt(l,10)*100+parseInt(N,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",(L,g)=>this.onPreConnect(L,g))}),500):this._socket.emit("authenticate",(M,c)=>this.onPreConnect(M,c))}),this._socket.on("reconnect",()=>{this.onProgress(St.READY),this.connected=!0,this.waitForRestart?window.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach(n=>n(!0)))}),this._socket.on("disconnect",()=>{this.connected=!1,this.subscribed=!1,this.onProgress(St.CONNECTING),this.onConnectionHandlers.forEach(n=>n(!1))}),this._socket.on("reauthenticate",()=>H.authenticate()),this._socket.on("log",n=>{var M,c;(c=(M=this.props).onLog)==null||c.call(M,n),this.onLogHandlers.forEach(l=>l(n))}),this._socket.on("error",n=>{let M=n||"";typeof M.toString!="function"&&(M=JSON.stringify(M),console.error(`Received strange error: ${M}`)),M=M.toString(),M.includes("User not authorized")?H.authenticate():window.alert(`Socket Error: ${n}`)}),this._socket.on("connect_error",n=>console.error(`Connect error: ${n}`)),this._socket.on("permissionError",n=>this.onError({message:"no permission",operation:n.operation,type:n.type,id:n.id||""})),this._socket.on("objectChange",(n,M)=>setTimeout(()=>this.objectChange(n,M),0)),this._socket.on("stateChange",(n,M)=>setTimeout(()=>this.stateChange(n,M),0)),this._socket.on("im",(n,M,c)=>setTimeout(()=>this.instanceMessage(n,M,c),0)),this._socket.on("fileChange",(n,M,c)=>setTimeout(()=>this.fileChange(n,M,c),0)),this._socket.on("cmdStdout",(n,M)=>{var c;return(c=this.onCmdStdoutHandler)==null?void 0:c.call(this,n,M)}),this._socket.on("cmdStderr",(n,M)=>{var c;return(c=this.onCmdStderrHandler)==null?void 0:c.call(this,n,M)}),this._socket.on("cmdExit",(n,M)=>{var c;return(c=this.onCmdExitHandler)==null?void 0:c.call(this,n,M)})}onPreConnect(e,t){this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?window.location.reload():(this.firstConnect?(this.loadTimer=setTimeout(()=>{this.loadTimer=null,this.loadCounter++,this.loadCounter<10&&this.onConnect().catch(i=>this.onError(i))},1e3),this.loaded||this.onConnect().catch(i=>this.onError(i))):this.onProgress(St.READY),this._subscribe(!0),this.onConnectionHandlers.forEach(i=>i(!0))),this._waitForFirstConnectionResolve&&(this._waitForFirstConnectionResolve(),this._waitForFirstConnectionResolve=null)}static isCloud(){return window.location.hostname.includes("amazonaws.com")||window.location.hostname.includes("iobroker.in")?!0:typeof window.socketUrl>"u"?!1:window.socketUrl.includes("iobroker.in")||window.socketUrl.includes("amazonaws")}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnection}async _getUserPermissions(){return this.doNotLoadACL?null:new Promise((e,t)=>{this._socket.emit("getUserPermissions",(i,r)=>i?t(new Error(i)):e(r))})}async onConnect(){var i,r,o,n,M;let e;try{e=await this._getUserPermissions()}catch(c){const l=c;this.onError(`Cannot read user permissions: ${l.message}`);return}if(!this.doNotLoadACL){if(this.loaded)return;this.loaded=!0,this.loadTimer&&(clearTimeout(this.loadTimer),this.loadTimer=null),this.onProgress(St.CONNECTED),this.firstConnect=!1,this.acl=e}let t;try{if(t=await this.getSystemConfig(),this.doNotLoadACL){if(this.loaded)return;this.loaded=!0,this.loadTimer&&(clearTimeout(this.loadTimer),this.loadTimer=null),this.onProgress(St.CONNECTED),this.firstConnect=!1}this.systemConfig=t,(i=this.systemConfig)!=null&&i.common?this.systemLang=this.systemConfig.common.language:(this.systemLang=window.navigator.userLanguage||window.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substr(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en")),(o=(r=this.props).onLanguage)==null||o.call(r,this.systemLang),this.doNotLoadAllObjects?(this.objects={"system.config":t},this.onProgress(St.READY),(M=(n=this.props).onReady)==null||M.call(n,this.objects)):(await this.getObjects(),this.onProgress(St.READY),this.props.onReady&&this.objects&&this.props.onReady(this.objects))}catch(c){this.onError(`Cannot read system config: ${c}`)}}static authenticate(){window.location.search.includes("&href=")?window.location.href=`${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`:window.location.href=`${window.location.protocol}//${window.location.host}${window.location.pathname}?login&href=${window.location.search}${window.location.hash}`}async subscribeState(e,t,i){typeof t=="function"&&(i=t,t=!1);let r;if(Array.isArray(e)?r=e:r=[e],!i)return console.error("No callback found for subscribeState"),Promise.reject(new Error("No callback found for subscribeState"));const o=[];for(let n=0;n{this._socket.emit(H.isWeb()?"getStates":"getForeignStates",r,(c,l)=>{c?(console.error(`Cannot getForeignStates "${e}": ${JSON.stringify(c)}`),M(new Error(c))):(l&&Object.keys(l).forEach(N=>i(N,l[N])),n())})})}subscribeStateAsync(e,t){let i;Array.isArray(e)?i=e:i=[e];const r=[];for(let o=0;o{typeof t=="function"&&this.connected?this._socket.emit(H.isWeb()?"getStates":"getForeignStates",e,(M,c)=>{M&&console.error(`Cannot getForeignStates "${e}": ${JSON.stringify(M)}`),c&&Object.keys(c).forEach(l=>t(l,c[l])),c?o():n(new Error(`Cannot getForeignStates "${e}": ${JSON.stringify(M)}`))}):this.connected?n(new Error("callback is not a function")):n(new Error("not connected"))})}unsubscribeState(e,t){let i;Array.isArray(e)?i=e:i=[e];const r=[];for(let o=0;o{(o===e||this.objectsSubscribes[o].reg.test(e))&&this.objectsSubscribes[o].cbs.forEach(n=>{try{n(e,t,i)}catch(M){console.error(`Error by callback of objectChange: ${M}`)}})}),r&&this.props.onObjectChange&&this.props.onObjectChange(e,t)}stateChange(e,t){for(const i in this.statesSubscribes)Object.prototype.hasOwnProperty.call(this.statesSubscribes,i)&&this.statesSubscribes[i].reg.test(e)&&this.statesSubscribes[i].cbs.forEach(r=>{try{r(e,t)}catch(o){const n=o;console.error(`Error by callback of stateChange: ${n==null?void 0:n.message}`)}})}instanceMessage(e,t,i){this._instanceSubscriptions[t]&&this._instanceSubscriptions[t].forEach(r=>{r.messageType===e&&r.callback(i,t,e)})}getStates(e,t){return this.connected?(typeof e=="boolean"&&(t=e,e=void 0),new Promise((i,r)=>{this._socket.emit("getStates",e,(o,n)=>{this.states=n,!t&&this.onProgress(St.STATES_LOADED),o?r(new Error(o)):i(this.states)})})):Promise.reject(new Error(Q))}getState(e){return this.connected?e&&e===this.ignoreState?Promise.resolve(this.simStates[e]||{val:null,ack:!0}):new Promise((t,i)=>{this._socket.emit("getState",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}getBinaryState(e){return this.connected?new Promise((t,i)=>{this._socket.emit("getBinaryState",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}setBinaryState(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("setBinaryState",e,t,o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}setState(e,t,i){if(!this.connected)return Promise.reject(new Error(Q));if(e&&e===this.ignoreState){let r;if(typeof i=="boolean"||typeof t=="object"&&t.val!==void 0?r=t:r={val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=r,this.statesSubscribes[e])for(const o of this.statesSubscribes[e].cbs)try{o(e,r)}catch(n){console.error(`Error by callback of stateChanged: ${n}`)}return Promise.resolve()}return new Promise((r,o)=>{this._socket.emit("setState",e,t,n=>n?o(new Error(n)):r())})}getObjects(e,t){return this.connected?new Promise((i,r)=>{!e&&this.objects?i(this.objects):this._socket.emit(H.isWeb()?"getObjects":"getAllObjects",(o,n)=>{this.objects=n,t&&this.onProgress(St.OBJECTS_LOADED),o?r(new Error(o)):i(this.objects)})}):Promise.reject(new Error(Q))}getObjectsById(e){return this.connected?new Promise((t,i)=>{this._socket.emit("getObjects",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}_subscribe(e){if(e&&!this.subscribed){this.subscribed=!0,this.autoSubscribes.forEach(i=>this._socket.emit("subscribeObjects",i)),Object.keys(this.objectsSubscribes).forEach(i=>this._socket.emit("subscribeObjects",i)),this.autoSubscribeLog&&this._socket.emit("requireLog",!0);const t=Object.keys(this.statesSubscribes);t.forEach(i=>this._socket.emit("subscribe",i)),t.length&&this._socket.emit(H.isWeb()?"getStates":"getForeignStates",t,(i,r)=>{i&&console.error(`Cannot getForeignStates: ${JSON.stringify(i)}`),r&&Object.keys(r).forEach(o=>this.stateChange(o,r[o]))})}else!e&&this.subscribed&&(this.subscribed=!1,this.autoSubscribes.forEach(t=>this._socket.emit("unsubscribeObjects",t)),Object.keys(this.objectsSubscribes).forEach(t=>this._socket.emit("unsubscribeObjects",t)),this.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach(t=>this._socket.emit("unsubscribe",t)))}requireLog(e){return this.connected?new Promise((t,i)=>{this._socket.emit("requireLog",e,r=>r?i(new Error(r)):t())}):Promise.reject(new Error(Q))}delObject(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("delObject",e,{maintenance:!!t},o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}delObjects(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("delObjects",e,{maintenance:!!t},o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}setObject(e,t){return this.connected?t?(t=JSON.parse(JSON.stringify(t)),Object.prototype.hasOwnProperty.call(t,"from")&&delete t.from,Object.prototype.hasOwnProperty.call(t,"user")&&delete t.user,Object.prototype.hasOwnProperty.call(t,"ts")&&delete t.ts,new Promise((i,r)=>{this._socket.emit("setObject",e,t,o=>o?r(new Error(o)):i())})):Promise.reject(new Error("Null object is not allowed")):Promise.reject(new Error(Q))}getObject(e){return this.connected?e&&e===this.ignoreState?Promise.resolve({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed",read:!0,write:!0,role:"state"},native:{}}):new Promise((t,i)=>{this._socket.emit("getObject",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}getAdapterInstances(e,t){return typeof e=="boolean"&&(t=e,e=""),e||="",!t&&this._promises[`instances_${e}`]instanceof Promise?this._promises[`instances_${e}`]:this.connected?(this._promises[`instances_${e}`]=new Promise((i,r)=>{this._socket.emit("getAdapterInstances",e,(o,n)=>o?r(new Error(o)):i(n))}),this._promises[`instances_${e}`]):Promise.reject(new Error(Q))}getAdapters(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(typeof e=="boolean"&&(t=e,e=""),e||="",!t&&this._promises[`adapter_${e}`]instanceof Promise?this._promises[`adapter_${e}`]:this.connected?(this._promises[`adapter_${e}`]=new Promise((i,r)=>{this._socket.emit("getAdapters",e,(o,n)=>{o?r(new Error(o)):i(n)})}),this._promises[`adapter_${e}`]):Promise.reject(new Error(Q)))}_renameGroups(e,t){if(!(e!=null&&e.length))t==null||t(null);else{const i=e.pop();if(!i){setTimeout(()=>this._renameGroups(e,t),0);return}const r=i._id;i._id=i.newId,delete i.newId,this.setObject(i._id,i).then(()=>this.delObject(r)).then(()=>setTimeout(()=>this._renameGroups(e,t),0)).catch(o=>t==null?void 0:t(o))}}async renameGroup(e,t,i){if(H.isWeb())return Promise.reject(new Error("Allowed only in admin"));const r=await this.getGroups(!0);if(r.length){const o=r.filter(M=>M._id.startsWith(`${e}.`));o.forEach(M=>{M.newId=t+M._id.substring(e.length)}),await new Promise((M,c)=>{this._renameGroups(o,l=>l?c(new Error(l)):M(null))});const n=r.find(M=>M._id===e);if(n)return n._id=t,i!==void 0&&(n.common||={},n.common.name=i),this.setObject(n._id,n).then(()=>this.delObject(e))}return Promise.resolve()}sendTo(e,t,i){return this.connected?new Promise(r=>{this._socket.emit("sendTo",e,t,i,o=>r(o))}):Promise.reject(new Error(Q))}extendObject(e,t){return this.connected?(t=JSON.parse(JSON.stringify(t)),Object.prototype.hasOwnProperty.call(t,"from")&&delete t.from,Object.prototype.hasOwnProperty.call(t,"user")&&delete t.user,Object.prototype.hasOwnProperty.call(t,"ts")&&delete t.ts,new Promise((i,r)=>{this._socket.emit("extendObject",e,t,o=>o?r(new Error(o)):i())})):Promise.reject(new Error(Q))}registerLogHandler(e){!this.onLogHandlers.includes(e)&&this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);t!==-1&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){!this.onConnectionHandlers.includes(e)&&this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);t!==-1&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return!t&&this._promises[`enums_${e||"all"}`]instanceof Promise?this._promises[`enums_${e||"all"}`]:this.connected?(this._promises[`enums_${e||"all"}`]=new Promise((i,r)=>{this._socket.emit("getObjectView","system","enum",{startkey:`enum.${e||""}`,endkey:`enum.${e?`${e}.`:""}香`},(o,n)=>{if(!o&&n){const M={};for(let c=0;c{this._socket.emit("getObjectView",e,t,{startkey:i,endkey:r},(M,c)=>{if(M)n(new Error(M));else{const l={};if(c&&c.rows)for(let N=0;N{const i=[];return t&&t.native&&t.native.certificates&&Object.keys(t.native.certificates).forEach(r=>{const o=t.native.certificates[r];if(!o)return;const n={name:r,type:""};o.length<700&&(o.includes("/")||o.includes("\\"))?(r.toLowerCase().includes("private")||o.toLowerCase().includes("private")?n.type="private":(r.toLowerCase().includes("public")||o.toLowerCase().includes("public"))&&(n.type="public"),i.push(n)):(n.type=o.substring(0,26)==="-----BEGIN RSA PRIVATE KEY"||o.substring(0,22)==="-----BEGIN PRIVATE KEY"?"private":"public",n.type==="public"&&o.split("-----END CERTIFICATE-----").filter(c=>c.replace(/\r\n|\r|\n/,"").trim()).length>1&&(n.type="chained"),i.push(n))}),i}),this._promises.cert):Promise.reject(new Error(Q))}getLogs(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(i=>{this._socket.emit("sendToHost",e,"getLogs",t||200,r=>i(r))}):Promise.reject(new Error(Q))}getLogsFiles(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,i)=>{this._socket.emit("readLogs",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}delLogs(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,i)=>{this._socket.emit("sendToHost",e,"delLogs",null,r=>r?i(new Error(r)):t())}):Promise.reject(new Error(Q))}readMetaItems(){return this.connected?new Promise((e,t)=>{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"香"},(i,r)=>i?t(new Error(i)):e(r.rows&&r.rows.map(o=>o.value)))}):Promise.reject(new Error(Q))}readDir(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("readDir",e,t,(o,n)=>o?r(new Error(o)):i(n))}):Promise.reject(new Error(Q))}readFile(e,t,i){return this.connected?new Promise((r,o)=>{i?this._socket.emit("readFile64",e,t,i,(n,M)=>n?o(new Error(n)):r(M)):this._socket.emit("readFile",e,t,(n,M,c)=>{n?o(new Error(n)):r({data:M,type:c})})}):Promise.reject(new Error(Q))}writeFile64(e,t,i){return this.connected?new Promise((r,o)=>{if(typeof i=="string")this._socket.emit("writeFile",e,t,i,n=>n?o(new Error(n)):r());else{const n=btoa(new Uint8Array(i).reduce((M,c)=>M+String.fromCharCode(c),""));this._socket.emit("writeFile64",e,t,n,M=>M?o(new Error(M)):r())}}):Promise.reject(new Error(Q))}deleteFile(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("unlink",e,t,o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}deleteFolder(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("deleteFolder",e,t,o=>o?r(new Error(o)):i())}):Promise.reject(new Error(Q))}getHosts(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.hosts instanceof Promise?this._promises.hosts:this.connected?(this._promises.hosts=new Promise((t,i)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.香"},(r,o)=>{r?i(new Error(r)):t(o.rows.map(n=>n.value))})}),this._promises.hosts):Promise.reject(new Error(Q))}getUsers(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.users instanceof Promise?this._promises.users:this.connected?(this._promises.users=new Promise((t,i)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.香"},(r,o)=>{r?i(new Error(r)):t(o.rows.map(n=>n.value))})}),this._promises.users):Promise.reject(new Error(Q))}getGroups(e){return!e&&this._promises.groups instanceof Promise?this._promises.groups:this.connected?(this._promises.groups=new Promise((t,i)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.香"},(r,o)=>{r?i(new Error(r)):t(o.rows.map(n=>n.value))})}),this._promises.groups):Promise.reject(new Error(Q))}getHostInfo(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e+=`system.host.${e}`),!t&&this._promises[`hostInfo_${e}`]instanceof Promise?this._promises[`hostInfo_${e}`]:this.connected?(this._promises[`hostInfo_${e}`]=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("getHostInfo timeout")))},i||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getHostInfo",null,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getHostInfo"')):!M||typeof M!="object"?o(new Error('Cannot read "getHostInfo"')):r(M))})}),this._promises[`hostInfo_${e}`]):Promise.reject(new Error(Q)))}getHostInfoShort(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e+=`system.host.${e}`),!t&&this._promises[`hostInfoShort_${e}`]instanceof Promise?this._promises[`hostInfoShort_${e}`]:this.connected?(this._promises[`hostInfoShort_${e}`]=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("hostInfoShort timeout")))},i||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getHostInfoShort",null,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getHostInfoShort"')):!M||typeof M!="object"?o(new Error('Cannot read "getHostInfoShort"')):r(M))})}),this._promises[`hostInfoShort_${e}`]):Promise.reject(new Error(Q)))}getRepository(e,t,i,r){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!i&&this._promises.repo instanceof Promise?this._promises.repo:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.repo=new Promise((o,n)=>{let M=setTimeout(()=>{M&&(M=null,n(new Error("getRepository timeout")))},r||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getRepository",t,c=>{M&&(clearTimeout(M),M=null,c===kt?n(new Error('May not read "getRepository"')):!c||typeof c!="object"?n(new Error('Cannot read "getRepository"')):o(c))})}),this._promises.repo):Promise.reject(new Error(Q))}getInstalled(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(this._promises.installed=this._promises.installed||{},!t&&this._promises.installed[e]instanceof Promise?this._promises.installed[e]:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.installed[e]=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("getInstalled timeout")))},i||this.props.cmdTimeout);this._socket.emit("sendToHost",e,"getInstalled",null,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getInstalled"')):!M||typeof M!="object"?o(new Error('Cannot read "getInstalled"')):r(M))})}),this._promises.installed[e]):Promise.reject(new Error(Q)))}rename(e,t,i){return this.connected?new Promise((r,o)=>{this._socket.emit("rename",e,t,i,n=>n?o(new Error(n)):r())}):Promise.reject(new Error(Q))}renameFile(e,t,i){return this.connected?new Promise((r,o)=>{this._socket.emit("renameFile",e,t,i,n=>n?o(new Error(n)):r())}):Promise.reject(new Error(Q))}cmdExec(e,t,i,r){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?(e.startsWith(e)||(e+=`system.host.${e}`),new Promise((o,n)=>{let M=r?setTimeout(()=>{M&&(M=null,n(new Error("cmdExec timeout")))},r):null;this._socket.emit("cmdExec",e,i,t,null,c=>{(!r||M)&&(M&&clearTimeout(M),M=null,c?n(new Error(c)):o())})})):Promise.reject(new Error(Q))}checkFeatureSupported(e,t){return!t&&this._promises[`supportedFeatures_${e}`]instanceof Promise?this._promises[`supportedFeatures_${e}`]:this.connected?(this._promises[`supportedFeatures_${e}`]=new Promise((i,r)=>{this._socket.emit("checkFeatureSupported",e,(o,n)=>o?r(new Error(o)):i(n))}),this._promises[`supportedFeatures_${e}`]):Promise.reject(new Error(Q))}async readBaseSettings(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):await this.checkFeatureSupported("CONTROLLER_READWRITE_BASE_SETTINGS")?this.connected?new Promise((i,r)=>{let o=setTimeout(()=>{o&&(o=null,r(new Error("readBaseSettings timeout")))},this.props.cmdTimeout);e.startsWith("system.host.")&&(e=e.replace(/^system\.host\./,"")),this._socket.emit("sendToHost",e,"readBaseSettings",null,n=>{o&&(clearTimeout(o),o=null,n===kt?r(new Error('May not read "BaseSettings"')):!n||typeof n!="object"?r(new Error('Cannot read "BaseSettings"')):i(n))})}):Promise.reject(new Error(Q)):Promise.reject(new Error("Not supported"))}writeBaseSettings(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.checkFeatureSupported("CONTROLLER_READWRITE_BASE_SETTINGS").then(i=>i?this.connected?new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("writeBaseSettings timeout")))},this.props.cmdTimeout);this._socket.emit("sendToHost",e,"writeBaseSettings",t,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not write "BaseSettings"')):M?r(M):o(new Error('Cannot write "BaseSettings"')))})}):Promise.reject(new Error(Q)):Promise.reject(new Error("Not supported")))}restartController(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((t,i)=>{this._socket.emit("sendToHost",e,"restartController",null,r=>{r?i(new Error(r)):t(!0)})})}getDiagData(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise(i=>{this._socket.emit("sendToHost",e,"getDiagData",t,r=>i(r))})}getForeignStates(e){return this.connected?H.isWeb()?new Promise((t,i)=>{this._socket.emit("getStates",e||"*",(r,o)=>r?i(new Error(r)):t(o))}):new Promise((t,i)=>{this._socket.emit("getForeignStates",e||"*",(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}getForeignObjects(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((i,r)=>{this._socket.emit("getForeignObjects",e||"*",t,(o,n)=>o?r(new Error(o)):i(n))}):Promise.reject(new Error(Q))}getSystemConfig(e){return!e&&this._promises.systemConfig instanceof Promise?this._promises.systemConfig:this.connected?(this._promises.systemConfig=this.getObject("system.config").then(t=>{const i=t||{};return i.common||={},i.native||={},i}),this._promises.systemConfig):Promise.reject(new Error(Q))}setSystemConfig(e){return this.setObject("system.config",e).then(()=>this._promises.systemConfig=Promise.resolve(e))}getRawSocket(){return this._socket}getHistory(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("getHistory",e,t,(o,n)=>o?r(new Error(o)):i(n))}):Promise.reject(new Error(Q))}getHistoryEx(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("getHistory",e,t,(o,n,M,c)=>o?r(new Error(o)):i({values:n,sessionId:c,step:M}))}):Promise.reject(new Error(Q))}changePassword(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((i,r)=>{this._socket.emit("changePassword",e,t,o=>o?r(new Error(o)):i())})}getIpAddresses(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")||(e=`system.host.${e}`),!t&&this._promises[`IPs_${e}`]instanceof Promise?this._promises[`IPs_${e}`]:(this._promises[`IPs_${e}`]=this.getObject(e).then(i=>i!=null&&i.common?i.common.address||[]:[]),this._promises[`IPs_${e}`]))}getHostByIp(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(e.startsWith("system.host.")&&(e=e.replace(/^system\.host\./,"")),!t&&this._promises[`rIPs_${e}`]instanceof Promise?this._promises[`rIPs_${e}`]:(this._promises[`rIPs_${e}`]=new Promise(i=>{this._socket.emit("getHostByIp",e,(r,o)=>{var c,l;const n=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],M=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if((l=(c=o==null?void 0:o.native)==null?void 0:c.hardware)!=null&&l.networkInterfaces){for(const N in o.native.hardware.networkInterfaces)if(Object.prototype.hasOwnProperty.call(o.native.hardware.networkInterfaces,N))for(let u=0;u{this._socket.emit("encrypt",e,(r,o)=>r?i(new Error(r)):t(o))})}decrypt(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):new Promise((t,i)=>{this._socket.emit("decrypt",e,(r,o)=>r?i(new Error(r)):t(o))})}getVersion(e){return!e&&this._promises.version instanceof Promise?this._promises.version:(this._promises.version=new Promise((t,i)=>{this._socket.emit("getVersion",(r,o,n)=>{r&&!o&&typeof r=="string"&&r.match(/\d+\.\d+\.\d+/)?t({version:r,serverName:"socketio"}):r?i(new Error(r)):t({version:o,serverName:n})})}),this._promises.version)}getWebServerName(){return this._promises.webName instanceof Promise?this._promises.webName:(this._promises.webName=new Promise((e,t)=>{this._socket.emit("getAdapterName",(i,r)=>i?t(new Error(i)):e(r))}),this._promises.webName)}getAdminVersion(){return console.log("Deprecated: use getVersion"),this.getVersion()}chmodFile(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((r,o)=>{this._socket.emit("chmodFile",e,t,i,(n,M,c)=>n?o(new Error(n)):r({entries:M,id:c}))}):Promise.reject(new Error(Q))}chownFile(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((r,o)=>{this._socket.emit("chownFile",e,t,i,(n,M,c)=>n?o(new Error(n)):r({entries:M,id:c}))}):Promise.reject(new Error(Q))}fileExists(e,t){return this.connected?new Promise((i,r)=>{this._socket.emit("fileExists",e,t,(o,n)=>o?r(new Error(o)):i(n))}):Promise.reject(new Error(Q))}getNotifications(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(i=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},r=>i(r))}):Promise.reject(new Error(Q))}clearNotifications(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise(i=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},r=>i(r))}):Promise.reject(new Error(Q))}getIsEasyModeStrict(){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((e,t)=>{this._socket.emit("getIsEasyModeStrict",(i,r)=>i?t(new Error(i)):e(r))}):Promise.reject(new Error(Q))}getEasyMode(){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((e,t)=>{this._socket.emit("getEasyMode",(i,r)=>i?t(new Error(i)):e(r))}):Promise.reject(new Error(Q))}getCurrentUser(){return this.connected?new Promise(e=>{this._socket.emit("authEnabled",(t,i)=>e(i))}):Promise.reject(new Error(Q))}getCurrentSession(e){return this.connected?new Promise((t,i)=>{const r=new AbortController;let o=setTimeout(()=>{o&&(o=null,r.abort(),i(new Error("getCurrentSession timeout")))},e||5e3);fetch("./session",{signal:r.signal}).then(n=>n.json()).then(n=>{o&&(clearTimeout(o),o=null,t(n))}).catch(n=>i(new Error(`getCurrentSession: ${n}`)))}):Promise.reject(new Error(Q))}getRatings(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):this.connected?new Promise((t,i)=>{this._socket.emit("getRatings",e,(r,o)=>r?i(new Error(r)):t(o))}):Promise.reject(new Error(Q))}getCurrentInstance(){return this.connected?this._promises.currentInstance instanceof Promise?this._promises.currentInstance:(this._promises.currentInstance=new Promise((e,t)=>{this._socket.emit("getCurrentInstance",(i,r)=>i?t(new Error(i)):e(r))}),this._promises.currentInstance):Promise.reject(new Error(Q))}getCompactAdapters(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.compactAdapters instanceof Promise?this._promises.compactAdapters:this.connected?(this._promises.compactAdapters=new Promise((t,i)=>{this._socket.emit("getCompactAdapters",(r,o)=>r?i(new Error(r)):t(o))}),this._promises.compactAdapters):Promise.reject(new Error(Q))}getAdaptersResetCache(e){e||="",delete this._promises.compactAdapters,delete this._promises[`adapter_${e}`]}getCompactInstances(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.compactInstances instanceof Promise?this._promises.compactInstances:this.connected?(this._promises.compactInstances=new Promise((t,i)=>{this._socket.emit("getCompactInstances",(r,o)=>r?i(new Error(r)):t(o))}),this._promises.compactInstances):Promise.reject(new Error(Q))}getAdapternInstancesResetCache(e){e||="",delete this._promises.compactInstances,delete this._promises[`instances_${e}`]}getCompactInstalled(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):(this._promises.installedCompact||={},!t&&this._promises.installedCompact[e]instanceof Promise?this._promises.installedCompact[e]:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.installedCompact[e]=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("getCompactInstalled timeout")))},i||this.props.cmdTimeout);this._socket.emit("getCompactInstalled",e,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getCompactInstalled"')):!M||typeof M!="object"?o(new Error('Cannot read "getCompactInstalled"')):r(M))})}),this._promises.installedCompact[e]):Promise.reject(new Error(Q)))}getCompactSystemRepositories(e,t){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.getCompactSystemRepositories instanceof Promise?this._promises.getCompactSystemRepositories:this.connected?(this._promises.getCompactSystemRepositories=new Promise((i,r)=>{let o=setTimeout(()=>{o&&(o=null,r(new Error("getCompactSystemRepositories timeout")))},t||this.props.cmdTimeout);this._socket.emit("getCompactSystemRepositories",n=>{o&&(clearTimeout(o),o=null,n===kt?r(new Error('May not read "getCompactSystemRepositories"')):!n||typeof n!="object"?r(new Error('Cannot read "getCompactSystemRepositories"')):i(n))})}),this._promises.getCompactSystemRepositories):Promise.reject(new Error(Q))}getCompactSystemConfig(e){return!e&&this._promises.systemConfigPromise instanceof Promise?this._promises.systemConfigPromise:this.connected?(this._promises.systemConfigPromise=new Promise((t,i)=>{this._socket.emit("getCompactSystemConfig",(r,o)=>r?i(new Error(r)):t(o))}),this._promises.systemConfigPromise):Promise.reject(new Error(Q))}getCompactRepository(e,t,i){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!t&&this._promises.repoCompact instanceof Promise?this._promises.repoCompact:this.connected?(e.startsWith("system.host.")||(e+=`system.host.${e}`),this._promises.repoCompact=new Promise((r,o)=>{let n=setTimeout(()=>{n&&(n=null,o(new Error("getCompactRepository timeout")))},i||this.props.cmdTimeout);this._socket.emit("getCompactRepository",e,M=>{n&&(clearTimeout(n),n=null,M===kt?o(new Error('May not read "getCompactRepository"')):M?r(M):o(new Error('Cannot read "getCompactRepository"')))})}),this._promises.repoCompact):Promise.reject(new Error(Q))}getInstalledResetCache(){delete this._promises.repoCompact,delete this._promises.repo}getCompactHosts(e){return H.isWeb()?Promise.reject(new Error("Allowed only in admin")):!e&&this._promises.hostsCompact instanceof Promise?this._promises.hostsCompact:this.connected?(this._promises.hostsCompact=new Promise((t,i)=>{this._socket.emit("getCompactHosts",(r,o)=>r?i(new Error(r)):t(o))}),this._promises.hostsCompact):Promise.reject(new Error(Q))}getUuid(){return this._promises.uuid instanceof Promise?this._promises.uuid:this.connected?(this._promises.uuid=this.getObject("system.meta.uuid").then(e=>{var t;return(t=e==null?void 0:e.native)==null?void 0:t.uuid}),this._promises.uuid):Promise.reject(new Error(Q))}subscribeOnInstance(e,t,i,r){return this.connected?new Promise((o,n)=>{this._socket.emit("clientSubscribe",e,t,i,(M,c)=>{M?n(new Error(M)):c!=null&&c.error?n(new Error(c.error)):(e.startsWith("system.adapter.")||(e=`system.adapter.${e}`),this._instanceSubscriptions[e]||=[],this._instanceSubscriptions[e].find(l=>l.messageType===t&&l.callback===r)||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(c))})}):Promise.reject(new Error(Q))}unsubscribeFromInstance(e,t,i){var n;e.startsWith("system.adapter.")||(e=`system.adapter.${e}`);let r;const o=[];do{r=!1;const M=(n=this._instanceSubscriptions[e])==null?void 0:n.findIndex(c=>(!t||c.messageType===t)&&(!i||c.callback===i));if(M!=null&&M!==-1){r=!0;const c=this._instanceSubscriptions[e][M].messageType;this._instanceSubscriptions[e].splice(M,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e],this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find(N=>N.messageType===c)||o.push(new Promise((N,u)=>{this._socket.emit("clientUnsubscribe",e,t,(L,g)=>{L?u(new Error(L)):N(g)})}))}}while(r&&(!i||!t));return o.length?Promise.all(o).then(M=>M.find(c=>c)||!1):Promise.resolve(!1)}log(e,t){e&&this._socket.emit("log",e,t||"debug")}logout(){return this.connected?new Promise((e,t)=>{this._socket.emit("logout",i=>i?t(new Error(i)):e())}):Promise.reject(new Error(Q))}setStateToIgnore(e){this.ignoreState=e||""}}function sYe(s){var e;return s.type==="object"?`iobobject://${s.address}/${s.path||""}`:s.type==="state"?`iobstate://${s.address}`:s.type==="file"?`iobfile://${s.address}/${s.path||""}`:s.type==="http"?s.address:(e=s.path)!=null&&e.includes("/")?`iobfile://${s.address}/${s.path}`:s.path?`iobobject://${s.address}/${s.path}`:`iobstate://${s.address}`}function uve(s){const e={type:"object",address:""};if(s.startsWith("iobobject://")){e.type="object",s=s.replace("iobobject://","");const t=s.split("/");e.address=t[0],e.path=t[1]}else if(s.startsWith("iobstate://")){e.type="state",s=s.replace("iobstate://","");const t=s.split("/");e.address=t[0],e.path=t[1]}else if(s.startsWith("iobfile://")){e.type="file",s=s.replace("iobfile://","");const t=s.split("/");e.address=t.shift(),e.path=t.join("/")}else if(s.startsWith("http://")||s.startsWith("https://"))e.type="http",e.address=s;else if(s.startsWith("data:"))e.type="base64",e.address=s;else{const t=s.split("/");if(t.length===2)if(e.address=t[0],e.path=t[1],e.path.includes("."))e.type="object";else if(e.path)if(e.path==="val"||e.path==="q"||e.path==="ack"||e.path==="ts"||e.path==="lc"||e.path==="from"||e.path==="user"||e.path==="expire"||e.path==="c")e.type="state";else if(e.path==="common"||e.path==="native"||e.path==="from"||e.path==="acl"||e.path==="type")e.type="object";else throw new Error(`Unknown path: ${e.path}`);else e.type="state";else t.length===1?(e.address=t[0],e.type="state"):(e.address=t.shift(),e.type="file",e.path=t.join("/"))}return e}function Qg(s,e,t){if(t||=0,s==null||!e)return s;if(e.length-1===t)return s[e[t]];if(typeof s=="object")return Qg(s[e[t]],e,t+1)}function lve(s,e,t,i){if(i||=0,s==null||!e)return t;if(e.length-1===i)return s[e[i]]=t,s;if(typeof s=="object")return lve(s[e[i]],e,t,i+1)}async function iYe(s,e){var t;if(typeof s=="string"&&(s=uve(s)),s.type==="object"){const i=await e.getObject(s.address);return Qg(i,(t=s.path)==null?void 0:t.split("."))}if(s.type==="state"){const i=await e.getState(s.address);return s.path?i==null?void 0:i[s.path]:i}if(s.type==="file")return await e.readFile(s.address,s.path,!0);if(s.type==="http")return fetch(s.address).then(i=>i.text()).then(i=>{if(i.startsWith("{")&&i.endsWith("}")||i.startsWith("[")&&i.endsWith("]"))try{return JSON.parse(i)}catch{}return i});throw new Error(`Unknown type: ${s.type}`)}const Vn=s=>{const e={};return s.forEach(t=>{e[t]={requiredVersion:"*",singleton:!0}}),e};function rYe(s){const e=["@emotion/react","@emotion/styled","@iobroker/adapter-react-v5","@iobroker/json-config","@iobroker/dm-gui-components","@mui/icons-material","@mui/material","@mui/x-date-pickers","date-fns","date-fns/locale","leaflet","leaflet-geosearch","react","react-ace","react-dom","react-dropzone","semver"];return Array.isArray(s)?Vn(e.filter(t=>s.includes(t))):s&&(s.dependencies||s.devDependencies)?Vn(e.filter(t=>{var i,r;return((i=s.dependencies)==null?void 0:i[t])||((r=s.devDependencies)==null?void 0:r[t])})):Vn(e)}export{wve as AdminConnection,BSe as Cleaner,sr as ColorPicker,rs as ComplexCron,Xve as ComplexCronDialog,_4 as Confirm,ke as Connection,Kve as Cron,Ive as CustomModal,u5e as DeviceTypeIcon,Uve as DeviceTypeSelector,Xve as DialogComplexCron,_4 as DialogConfirm,Kve as DialogCron,x4 as DialogError,qve as DialogMessage,eYe as DialogSelectFile,cke as DialogSelectID,tYe as DialogSimpleCron,h_e as DialogTextInput,mve as DoorClosed,RSe as DoorOpened,Qe as ERRORS,ve as EXTENSIONS,x4 as Error,R_e as FileBrowser,Nc as FileBrowserClass,B_e as FileViewer,J_e as FileViewerClass,fve as FireOff,b0 as FireOn,Ove as FloodOff,U0 as FloodOn,FSe as Gate,Ds as GenericApp,Eve as HeatValve,_ve as Home,GSe as Humidity,D as I18n,X0 as ITEM_IMAGES,be as Icon,A5e as IconAdapter,P_e as IconAlias,Gve as IconButtonImage,sg as IconChannel,E5e as IconClearFilter,Ti as IconClosed,Bs as IconCopy,ig as IconDevice,m5e as IconDocument,f5e as IconDocumentReadOnly,Oa as IconExpert,Hve as IconFx,xve as IconHome,O5e as IconInstance,Vve as IconLogout,lc as IconNoIcon,lo as IconOpen,Ave as IconPicker,ISe as IconSelector,rr as IconState,Zve as IconVacuum,No as Image,Pve as InfoBox,$0 as Jalousie,H as LegacyConnection,$h as Loader,Uh as LoaderHA,Eh as LoaderMV,_h as LoaderNW,Qh as LoaderPT,Sh as LoaderVendor,eg as Logo,tg as MDUtils,Sve as Material,qve as Message,kve as MotionOff,HSe as MotionOn,F5e as ObjectBrowser,xo as ObjectBrowserClass,zve as PERMISSION_ERROR,ht as PROGRESS,VSe as PushButton,Un as RGB,vve as RepairExpert,nr as Router,$ve as STATES_NAME_ICONS,Fh as SaveCloseButtons,Ee as Schedule,eYe as SelectFile,cke as SelectID,Wve as SelectWithIcon,dr as SimpleCron,tYe as SimpleCronDialog,ZSe as Socket,_5e as TabContainer,x5e as TabContent,S5e as TabHeader,Jve as TableResize,h_e as TextInput,Bve as TextWithIcon,my as Theme,XSe as Thermometer,Yve as ThermometerSimple,KSe as Thermostat,Rve as ToggleThemeMenu,Pa as TreeTable,Fve as UploadImage,m as Utils,Qve as Valve,bve as WindowClosed,qSe as WindowOpened,KL as WindowTilted,HL as convertCronToText,E4 as copy,Yg as cron2state,Zge as dictionary,qL as extendDeviceTypeTranslation,Qg as getAttrInObject,pve as getSelectIdIcon,_o as getSelectIdIconFromObjects,Cve as getSystemIcon,uve as iobUriParse,iYe as iobUriRead,sYe as iobUriToString,rYe as moduleFederationShared,zN as pattern2RegEx,Oh as printPrompt,lve as setAttrInObject,cn as withWidth}; diff --git a/admin/assets/index-AD-ewMW2.js b/admin/assets/index-Blu2oA9H.js similarity index 99% rename from admin/assets/index-AD-ewMW2.js rename to admin/assets/index-Blu2oA9H.js index 29e272afe..a9234d1ce 100644 --- a/admin/assets/index-AD-ewMW2.js +++ b/admin/assets/index-Blu2oA9H.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-D0ssxjfN.js","./createSvgIcon-DYs_tNrE.js","./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js","./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js","./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js","./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js","./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js","./index-wHNMOf-c.js","./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js","./preload-helper-BDBacUwf.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js","./inheritsLoose-CIXm_zPk.js","./index-BCK6q-N6.css","./index-qzAcc6X1.js","./ScriptEditorVanillaMonaco-B-wy1I-G.js","./ScriptEditor-Bw-7a_d8.js","./Save-CkuNSiWL.js","./AiChatPanel-BPOsmX0I.js","./index-45IwpC7_.js","./AiDiffView-RPozjjHf.js"])))=>i.map(i=>d[i]); -import{d as Dw}from"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";import{j as m,c as vt,g as nk,r as rk,_ as Qg}from"./createSvgIcon-DYs_tNrE.js";import{r as ET}from"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import{a as pe,_ as xT,b as ji,c as Ft,d as DT,e as ak,f as em,g as Fm,h as zm,i as lk,j as St,k as zn,l as gs,m as AT,n as ck,o as tm,p as RT,q as OT,r as uk,s as MT,t as Zo}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as zt,a as ts,b as Yt,c as Oo,d as Ui,e as sm,f as Hi,g as et,h as Ut,i as je,j as bc,k as yc,l as vc,m as wc,n as _c,o as We,p as dk,q as Ni,r as om,s as Aw,t as im,u as nm,v as Jn,w as hk,x as NT,y as Vc,z as bt,A as LT,B as rm,C as PT,D as fg,E as ua,F as BT,G as jT,H as FT,I as zT,J as pk,K as UT,L as HT,M as Rw,N as Mn,O as WT,P as GT,Q as VT,R as KT,S as YT,T as gk,U as JT,V as am,W as mk,X as qT}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as x}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{I as ni,a as ao,b as Nc,C as XT,c as fk,F as ZT,d as QT,e as Kc,f as lm,g as eI,h as tI,i as sI,j as oI,M as iI,k as nI,l as rI,m as aI,_ as lI,n as kc,o as cI,p as uI,q as Cc,r as Ow,s as dI,t as hI,u as pI,v as gI,w as Mw,x as bu,y as mI,z as fI,A as $I,B as bI,D as yI,E as vI,G as wI,H as _I,J as kI,K as $k,L as bk,N as yk,O as CI,P as SI,Q as TI,R as II,S as EI,T as xI}from"./index-wHNMOf-c.js";import{y as DI,_ as AI,a as RI,S as Nw,T as Lw}from"./inheritsLoose-CIXm_zPk.js";import{c as ro}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function ri(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{_ as Ki}from"./preload-helper-BDBacUwf.js";import{P as ve}from"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import{_ as OI}from"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const c of l)if(c.type==="childList")for(const h of c.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&r(h)}).observe(document,{childList:!0,subtree:!0});function i(l){const c={};return l.integrity&&(c.integrity=l.integrity),l.referrerPolicy&&(c.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?c.credentials="include":l.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function r(l){if(l.ep)return;l.ep=!0;const c=i(l);fetch(l.href,c)}})();var vk,Pw=ET;vk=Pw.createRoot,Pw.hydrateRoot;var wk={exports:{}},ht={};var yu=60103,vu=60106,Sa=60107,Ta=60108,Ia=60114,Ea=60109,xa=60110,Da=60112,Aa=60113,Um=60120,Ra=60115,Oa=60116,_k=60121,kk=60122,Ck=60117,Sk=60129,Tk=60131;if(typeof Symbol=="function"&&Symbol.for){var Bt=Symbol.for;yu=Bt("react.element"),vu=Bt("react.portal"),Sa=Bt("react.fragment"),Ta=Bt("react.strict_mode"),Ia=Bt("react.profiler"),Ea=Bt("react.provider"),xa=Bt("react.context"),Da=Bt("react.forward_ref"),Aa=Bt("react.suspense"),Um=Bt("react.suspense_list"),Ra=Bt("react.memo"),Oa=Bt("react.lazy"),_k=Bt("react.block"),kk=Bt("react.server.block"),Ck=Bt("react.fundamental"),Sk=Bt("react.debug_trace_mode"),Tk=Bt("react.legacy_hidden")}function js(a){if(typeof a=="object"&&a!==null){var s=a.$$typeof;switch(s){case yu:switch(a=a.type,a){case Sa:case Ia:case Ta:case Aa:case Um:return a;default:switch(a=a&&a.$$typeof,a){case xa:case Da:case Oa:case Ra:case Ea:return a;default:return s}}case vu:return s}}}var MI=Ea,NI=yu,LI=Da,PI=Sa,BI=Oa,jI=Ra,FI=vu,zI=Ia,UI=Ta,HI=Aa;ht.ContextConsumer=xa;ht.ContextProvider=MI;ht.Element=NI;ht.ForwardRef=LI;ht.Fragment=PI;ht.Lazy=BI;ht.Memo=jI;ht.Portal=FI;ht.Profiler=zI;ht.StrictMode=UI;ht.Suspense=HI;ht.isAsyncMode=function(){return!1};ht.isConcurrentMode=function(){return!1};ht.isContextConsumer=function(a){return js(a)===xa};ht.isContextProvider=function(a){return js(a)===Ea};ht.isElement=function(a){return typeof a=="object"&&a!==null&&a.$$typeof===yu};ht.isForwardRef=function(a){return js(a)===Da};ht.isFragment=function(a){return js(a)===Sa};ht.isLazy=function(a){return js(a)===Oa};ht.isMemo=function(a){return js(a)===Ra};ht.isPortal=function(a){return js(a)===vu};ht.isProfiler=function(a){return js(a)===Ia};ht.isStrictMode=function(a){return js(a)===Ta};ht.isSuspense=function(a){return js(a)===Aa};ht.isValidElementType=function(a){return typeof a=="string"||typeof a=="function"||a===Sa||a===Ia||a===Sk||a===Ta||a===Aa||a===Um||a===Tk||typeof a=="object"&&a!==null&&(a.$$typeof===Oa||a.$$typeof===Ra||a.$$typeof===Ea||a.$$typeof===xa||a.$$typeof===Da||a.$$typeof===Ck||a.$$typeof===_k||a[0]===kk)};ht.typeOf=js;wk.exports=ht;var WI=wk.exports;function Yc(a,s){const i=getComputedStyle(s);if(!i)return;let r=a===mt.Horizontal?s.clientWidth:s.clientHeight;return r!==0?(a===mt.Horizontal?r-=parseFloat(i.paddingLeft)+parseFloat(i.paddingRight):r-=parseFloat(i.paddingTop)+parseFloat(i.paddingBottom),r):void 0}function Sc(a,s,i=[],r={condition:!0}){const{condition:l}=r,c=(function(h,d){var p={};for(var g in h)Object.prototype.hasOwnProperty.call(h,g)&&d.indexOf(g)<0&&(p[g]=h[g]);if(h!=null&&typeof Object.getOwnPropertySymbols=="function"){var $=0;for(g=Object.getOwnPropertySymbols(h);$(l&&window.addEventListener(a,s,c),()=>{l&&window.removeEventListener(a,s)})),[a,s,l,...i])}(function(a,s){s===void 0&&(s={});var i=s.insertAt;if(typeof document<"u"){var r=document.head||document.getElementsByTagName("head")[0],l=document.createElement("style");l.type="text/css",i==="top"&&r.firstChild?r.insertBefore(l,r.firstChild):r.appendChild(l),l.styleSheet?l.styleSheet.cssText=a:l.appendChild(document.createTextNode(a))}})(`/* === Main Container === */ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-CtxgOnw1.js","./createSvgIcon-DYs_tNrE.js","./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js","./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js","./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js","./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js","./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js","./index-wHNMOf-c.js","./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js","./preload-helper-BDBacUwf.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js","./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js","./inheritsLoose-CIXm_zPk.js","./index-BCK6q-N6.css","./index-B0Khg-uY.js","./ScriptEditorVanillaMonaco-CKnJEdpA.js","./ScriptEditor-B5mD7l8c.js","./Save-CkuNSiWL.js","./AiChatPanel-CZ2o6xnT.js","./index-45IwpC7_.js","./AiDiffView-RPozjjHf.js"])))=>i.map(i=>d[i]); +import{d as Dw}from"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import{j as m,c as vt,g as nk,r as rk,_ as Qg}from"./createSvgIcon-DYs_tNrE.js";import{r as ET}from"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import{a as pe,_ as xT,b as ji,c as Ft,d as DT,e as ak,f as em,g as Fm,h as zm,i as lk,j as St,k as zn,l as gs,m as AT,n as ck,o as tm,p as RT,q as OT,r as uk,s as MT,t as Zo}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as zt,a as ts,b as Yt,c as Oo,d as Ui,e as sm,f as Hi,g as et,h as Ut,i as je,j as bc,k as yc,l as vc,m as wc,n as _c,o as We,p as dk,q as Ni,r as om,s as Aw,t as im,u as nm,v as Jn,w as hk,x as NT,y as Vc,z as bt,A as LT,B as rm,C as PT,D as fg,E as ua,F as BT,G as jT,H as FT,I as zT,J as pk,K as UT,L as HT,M as Rw,N as Mn,O as WT,P as GT,Q as VT,R as KT,S as YT,T as gk,U as JT,V as am,W as mk,X as qT}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{_ as x}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{I as ni,a as ao,b as Nc,C as XT,c as fk,F as ZT,d as QT,e as Kc,f as lm,g as eI,h as tI,i as sI,j as oI,M as iI,k as nI,l as rI,m as aI,_ as lI,n as kc,o as cI,p as uI,q as Cc,r as Ow,s as dI,t as hI,u as pI,v as gI,w as Mw,x as bu,y as mI,z as fI,A as $I,B as bI,D as yI,E as vI,G as wI,H as _I,J as kI,K as $k,L as bk,N as yk,O as CI,P as SI,Q as TI,R as II,S as EI,T as xI}from"./index-wHNMOf-c.js";import{y as DI,_ as AI,a as RI,S as Nw,T as Lw}from"./inheritsLoose-CIXm_zPk.js";import{c as ro}from"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";function ri(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}import{_ as Ki}from"./preload-helper-BDBacUwf.js";import{P as ve}from"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import{_ as OI}from"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const c of l)if(c.type==="childList")for(const h of c.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&r(h)}).observe(document,{childList:!0,subtree:!0});function i(l){const c={};return l.integrity&&(c.integrity=l.integrity),l.referrerPolicy&&(c.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?c.credentials="include":l.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function r(l){if(l.ep)return;l.ep=!0;const c=i(l);fetch(l.href,c)}})();var vk,Pw=ET;vk=Pw.createRoot,Pw.hydrateRoot;var wk={exports:{}},ht={};var yu=60103,vu=60106,Sa=60107,Ta=60108,Ia=60114,Ea=60109,xa=60110,Da=60112,Aa=60113,Um=60120,Ra=60115,Oa=60116,_k=60121,kk=60122,Ck=60117,Sk=60129,Tk=60131;if(typeof Symbol=="function"&&Symbol.for){var Bt=Symbol.for;yu=Bt("react.element"),vu=Bt("react.portal"),Sa=Bt("react.fragment"),Ta=Bt("react.strict_mode"),Ia=Bt("react.profiler"),Ea=Bt("react.provider"),xa=Bt("react.context"),Da=Bt("react.forward_ref"),Aa=Bt("react.suspense"),Um=Bt("react.suspense_list"),Ra=Bt("react.memo"),Oa=Bt("react.lazy"),_k=Bt("react.block"),kk=Bt("react.server.block"),Ck=Bt("react.fundamental"),Sk=Bt("react.debug_trace_mode"),Tk=Bt("react.legacy_hidden")}function js(a){if(typeof a=="object"&&a!==null){var s=a.$$typeof;switch(s){case yu:switch(a=a.type,a){case Sa:case Ia:case Ta:case Aa:case Um:return a;default:switch(a=a&&a.$$typeof,a){case xa:case Da:case Oa:case Ra:case Ea:return a;default:return s}}case vu:return s}}}var MI=Ea,NI=yu,LI=Da,PI=Sa,BI=Oa,jI=Ra,FI=vu,zI=Ia,UI=Ta,HI=Aa;ht.ContextConsumer=xa;ht.ContextProvider=MI;ht.Element=NI;ht.ForwardRef=LI;ht.Fragment=PI;ht.Lazy=BI;ht.Memo=jI;ht.Portal=FI;ht.Profiler=zI;ht.StrictMode=UI;ht.Suspense=HI;ht.isAsyncMode=function(){return!1};ht.isConcurrentMode=function(){return!1};ht.isContextConsumer=function(a){return js(a)===xa};ht.isContextProvider=function(a){return js(a)===Ea};ht.isElement=function(a){return typeof a=="object"&&a!==null&&a.$$typeof===yu};ht.isForwardRef=function(a){return js(a)===Da};ht.isFragment=function(a){return js(a)===Sa};ht.isLazy=function(a){return js(a)===Oa};ht.isMemo=function(a){return js(a)===Ra};ht.isPortal=function(a){return js(a)===vu};ht.isProfiler=function(a){return js(a)===Ia};ht.isStrictMode=function(a){return js(a)===Ta};ht.isSuspense=function(a){return js(a)===Aa};ht.isValidElementType=function(a){return typeof a=="string"||typeof a=="function"||a===Sa||a===Ia||a===Sk||a===Ta||a===Aa||a===Um||a===Tk||typeof a=="object"&&a!==null&&(a.$$typeof===Oa||a.$$typeof===Ra||a.$$typeof===Ea||a.$$typeof===xa||a.$$typeof===Da||a.$$typeof===Ck||a.$$typeof===_k||a[0]===kk)};ht.typeOf=js;wk.exports=ht;var WI=wk.exports;function Yc(a,s){const i=getComputedStyle(s);if(!i)return;let r=a===mt.Horizontal?s.clientWidth:s.clientHeight;return r!==0?(a===mt.Horizontal?r-=parseFloat(i.paddingLeft)+parseFloat(i.paddingRight):r-=parseFloat(i.paddingTop)+parseFloat(i.paddingBottom),r):void 0}function Sc(a,s,i=[],r={condition:!0}){const{condition:l}=r,c=(function(h,d){var p={};for(var g in h)Object.prototype.hasOwnProperty.call(h,g)&&d.indexOf(g)<0&&(p[g]=h[g]);if(h!=null&&typeof Object.getOwnPropertySymbols=="function"){var $=0;for(g=Object.getOwnPropertySymbols(h);$(l&&window.addEventListener(a,s,c),()=>{l&&window.removeEventListener(a,s)})),[a,s,l,...i])}(function(a,s){s===void 0&&(s={});var i=s.insertAt;if(typeof document<"u"){var r=document.head||document.getElementsByTagName("head")[0],l=document.createElement("style");l.type="text/css",i==="top"&&r.firstChild?r.insertBefore(l,r.firstChild):r.appendChild(l),l.styleSheet?l.styleSheet.cssText=a:l.appendChild(document.createTextNode(a))}})(`/* === Main Container === */ .__dbk__container { height: 100%; width: 100%; @@ -295,7 +295,7 @@ Note: Some script sources were omitted due to size. The user can ask about speci `);if(r.length<2||l.length<2)return null;const c=new Set;for(const b of r){const T=b.trim();AO(T)&&c.add(T)}if(c.size<2)return null;const h=r.length,d=Math.ceil(h*1.5),p=Math.max(2,Math.floor(h*.5));let g=-1,$=-1,y=0;const w=new Uint8Array(l.length);for(let b=0;by&&(y=C,g=b,$=T)}if(g<0||yg+1&&!w[$-1];)$--;for(;g<$-1&&!w[g];)g++;const _=l[$-1]??"";return{range:{startLine:g+1,startColumn:1,endLine:$,endColumn:_.length+1},confidence:y,method:"similarity"}}function OO(a){const s=a.split(` `).map(i=>i.trim()).filter(i=>i.length>0);return s.length===0?!1:s.every(i=>i.startsWith("//")||i.startsWith("/*")||i.startsWith("*")||i.endsWith("*/"))}function MO(a){const s=[];let i=!1,r=null,l=0;for(let c=0;c0?(s.push({startLine:l,endLine:c}),i=!1,r=null):h.length===0&&(s.push({startLine:l,endLine:c}),i=!1,r=null)):h.startsWith("/*")?(i=!0,r="jsdoc",l=c+1,h.includes("*/")&&(s.push({startLine:l,endLine:c+1}),i=!1,r=null)):h.startsWith("//")&&(i=!0,r="line",l=c+1)}return i&&l>0&&s.push({startLine:l,endLine:a.length}),s}function NO(a,s,i=.2){if(!OO(a)||!s)return null;const r=s.split(` `),l=MO(r);if(!l.length)return null;const c=new Set;for(const g of a.split(` -`)){const y=g.trim().replace(/^\/\*+/,"").replace(/\*+\/$/,"").replace(/^\/\//,"").replace(/^\*+/,"").trim();y.length>=3&&c.add(y.toLowerCase())}if(c.size===0){if(l.length===1){const g=l[0],$=r[g.endLine-1]??"";return{range:{startLine:g.startLine,startColumn:1,endLine:g.endLine,endColumn:$.length+1},confidence:.5,method:"similarity"}}return null}let h=l[0],d=0;for(const g of l){let $=0;for(let w=g.startLine-1;wd&&(d=y,h=g)}if(dKi(()=>Promise.resolve().then(()=>g1),void 0,import.meta.url)),BO=pe.lazy(()=>Ki(()=>import("./index-D0ssxjfN.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url)),jO=pe.lazy(()=>Ki(()=>import("./index-qzAcc6X1.js"),__vite__mapDeps([14,1,2,3,4,6,7,5,15,9,8,10,11,12]),import.meta.url)),FO=pe.lazy(()=>Ki(()=>import("./ScriptEditorVanillaMonaco-B-wy1I-G.js"),__vite__mapDeps([15,9,1,2,3,4,6,7,5,8,10,11,12]),import.meta.url)),zO=pe.lazy(()=>Ki(()=>import("./ScriptEditor-Bw-7a_d8.js"),__vite__mapDeps([16,1,2,3,4,6,5,15,9,7,8,10,11,12,17]),import.meta.url)),U_=pe.lazy(()=>Ki(()=>import("./AiChatPanel-BPOsmX0I.js"),__vite__mapDeps([18,1,2,3,4,6,5,9,19,7,8,10,11,12]),import.meta.url)),UO=pe.lazy(()=>Ki(()=>import("./AiDiffView-RPozjjHf.js"),__vite__mapDeps([20,1,2,3,4,6,5,7]),import.meta.url)),H_={Blockly:Jk,"Javascript/js":qc,Rules:Xk,def:qc,"TypeScript/ts":qk},HO=48,W_="#02a102",Hg="#70aae9",WO=nk[400],GO=rk[400],Me={toolbar:a=>({minHeight:38,boxShadow:"0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)",backgroundColor:a.palette.mode==="dark"?"#1e1e1e":"#E2E2E2"}),toolbarButtons:{padding:4,marginLeft:4},toolbarButtonsDisabled:{filter:"grayscale(100%)",opacity:.5},editorDiv:a=>({height:`calc(100% - ${(parseInt(a.toolbar.height,10)||48)+38+10}px)`,width:"100%",overflow:"hidden",position:"relative"}),textButton:{marginRight:10,minHeight:24,padding:"6px 16px",height:32},saveButton:{background:"#ff9900"},tabIcon:{width:24,height:24,verticalAlign:"middle",marginBottom:2,marginRight:2,borderRadius:3},hintIcon:{padding:"0 8px 0 8px"},hintButton:{marginTop:8,marginLeft:20},tabMenuButton:{position:"absolute",top:0,right:0},tabChanged:a=>({color:a.palette.secondary.main}),tabText:{maxWidth:130,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",display:"inline-block",verticalAlign:"middle"},tabChangedIcon:{color:"#FF0000",fontSize:16,marginLeft:5},closeButton:{marginLeft:5},notRunning:{color:"#ffbc00",marginRight:8,marginLeft:8},tabButton:{minHeight:48},tabButtonWrapper:{display:"inline-block"},menuIcon:{width:18,height:18,borderRadius:2,marginRight:5}};class Hn extends pe.Component{getSelect=null;changedMirror={};cron={initValue:null,callback:null};scriptDialog={initValue:null,callback:null,args:null,isReturn:!1};objects;scripts;selectId={initValue:null,callback:null};confirmCallback=null;blocklyEditorRef=pe.createRef();scriptEditorRef=pe.createRef();lastKnownTs={};constructor(s){var c,h;super(s);let i=window.localStorage.getItem("Editor.selected")||"";const r=window.localStorage.getItem("Editor.editing")||"[]";let l;try{l=JSON.parse(r)}catch{l=[]}i&&!l.includes(i)&&l.push(i),i&&!this.props.password&&((h=(c=this.props.objects[i])==null?void 0:c.native)!=null&&h.protected)&&(i=l.find(d=>{var p,g;return!((g=(p=this.props.objects[d])==null?void 0:p.native)!=null&&g.protected)})||""),!i&&l.length&&(this.props.password?i=l[0]:i=l.find(d=>{var p,g;return!((g=(p=this.props.objects[d])==null?void 0:p.native)!=null&&g.protected)})||""),this.state={askAboutDebug:!1,astroEvents:null,blockly:null,changed:{},cmdToBlockly:"",cmdToRules:"",confirm:"",debugEnabled:!1,editing:l,insert:"",instancesLoaded:!1,isTourOpen:window.localStorage.getItem("tour")!=="true",menuDebugAnchorEl:null,menuOidDisplayAnchorEl:null,oidDisplayMode:parseInt(window.localStorage.getItem("Blockly.FieldOID.displayMode")||"0",10)||0,oidShowIcon:window.localStorage.getItem("Blockly.FieldOID.showIcon")==="true",menuOpened:!!this.props.menuOpened,menuTabsOpened:!1,aiChatOpen:window.localStorage.getItem("Editor.aiChatOpen")==="true",aiDiffView:null,aiActionRequest:null,inlineAskHandler:null,aiCompletionsEnabled:window.localStorage.getItem("Editor.aiCompletions")!=="false",triggerPrettier:1,scriptConflict:"",rules:null,runningInstances:this.props.runningInstances||{},searchText:"",selected:i,showAdapterDebug:!1,showAstro:!1,showCompiledCode:!1,showCron:!1,showDebugMenu:!1,showScript:!1,showSelectId:!1,themeType:this.props.themeType,toast:"",tourStep:Ps.selectTriggers,verboseEnabled:!1,visible:s.visible},this.setChangedInAdmin(),window.systemLang=x.I18n.getLanguage(),window.main={objects:{},getObject:(d,p)=>this.props.socket.getObject(d).then(g=>p==null?void 0:p(null,g)).catch(g=>p==null?void 0:p(g)),getState:(d,p)=>this.props.socket.getState(d).then(g=>p==null?void 0:p(null,g)).catch(g=>p==null?void 0:p(g)),instances:[],selectIdDialog:(d,p,g)=>{typeof p=="function"&&(g=p,p=null),this.selectId.callback=g,this.selectId.initValue=d,this.selectId.type=p,this.setState({showSelectId:!0})},cronDialog:(d,p)=>{this.cron.callback=p,this.cron.initValue=d,this.setState({showCron:!0})},showScriptDialog:(d,p,g,$)=>{this.scriptDialog.callback=$,this.scriptDialog.initValue=d,this.scriptDialog.args=p,this.scriptDialog.isReturn=g||!1,this.setState({showScript:!0})}},this.objects=s.objects,this.scripts={},this.getAllAdapterInstances().then(()=>{this.props.onSelectedChange&&this.state.selected&&setTimeout(()=>this.props.onSelectedChange(this.state.selected,this.state.editing),100)})}async getAllAdapterInstances(){const s=await this.props.socket.getAdapterInstances(!0),i={},r=s.map(l=>(i[l._id]=l,l._id));window.main.objects=i,window.main.instances=r,this.setState({instancesLoaded:!0})}static onInstanceChanged(s,i){if(s)if(!i&&window.main.instances.includes(s)){delete window.main.objects[s];const r=window.main.instances.indexOf(s);window.main.instances.splice(r,1)}else(i==null?void 0:i.type)==="instance"&&(window.main.instances.includes(s)||(window.main.instances.push(s),window.main.instances.sort()),window.main.objects[s]=i)}setChangedInAdmin(){const s=Object.keys(this.state.changed).find(i=>this.state.changed[i]);Object.keys(this.state.changed).forEach(i=>{this.changedMirror[i]=this.state.changed[i]}),Object.keys(this.changedMirror).forEach(i=>{this.state.changed[i]===void 0&&delete this.changedMirror[i]}),this.props.onChangedChanged(this.changedMirror),typeof window.parent<"u"&&window.parent&&(window.parent.configNotSaved=!!s)}componentDidMount(){window.addEventListener("beforeunload",this.onBrowserClose,!1),this.props.socket.subscribeObject("system.adapter.*",Hn.onInstanceChanged)}componentWillUnmount(){window.removeEventListener("beforeunload",this.onBrowserClose),this.props.socket.unsubscribeObject("system.adapter.*",Hn.onInstanceChanged)}componentDidUpdate(s){if(s.scriptsHash!==this.props.scriptsHash)for(const i of this.state.editing){const r=this.props.objects[i];if(!r||r.type!=="script")continue;const l=r.ts||0,c=this.lastKnownTs[i];c!==void 0&&l!==c&&(this.state.changed[i]?this.state.scriptConflict||this.setState({scriptConflict:i}):(this.scripts[i]=this.getScriptFromObject(i),this.lastKnownTs[i]=l))}}onBrowserClose=s=>{const i=Object.keys(this.scripts).find(r=>JSON.stringify(this.scripts[r])!==JSON.stringify(this.getScriptFromObject(r)));if(i){console.log(`Script ${JSON.stringify(this.scripts[i])}`);const r=x.I18n.t("Configuration not saved.");return s=s||window.event,s&&(s.returnValue=r),r}};removeNonExistingScripts(s,i){s=s||this.props,i=i||{};let r=!1;if(this.state.editing&&this.state.editing.find(c=>s&&!s.objects[c])){const c=[...this.state.editing];for(let h=c.length-1;h>=0;h--)this.objects[c[h]]||(r=!0,c.splice(h,1));r&&(i.editing=c),this.state.selected&&!this.objects[this.state.selected]&&(r=!0,i.selected=c[0]||"",i.selected&&this.scripts[i.selected]&&(this.state.blockly!==(this.scripts[i.selected].engineType==="Blockly")&&(i.blockly=this.scripts[i.selected].engineType==="Blockly",r=!0),this.state.rules!==(this.scripts[i.selected].engineType==="Rules")&&(i.rules=this.scripts[i.selected].engineType==="Rules",r=!0),this.state.verboseEnabled!==this.scripts[i.selected].verbose&&(i.verboseEnabled=this.scripts[i.selected].verbose,r=!0),this.state.debugEnabled!==this.scripts[i.selected].debug&&(i.debugEnabled=this.scripts[i.selected].debug,r=!0)))}return r}UNSAFE_componentWillReceiveProps(s){var l,c,h;const i={};let r=!1;if(JSON.stringify(s.runningInstances)!==JSON.stringify(this.state.runningInstances)&&(r=!0,i.runningInstances=s.runningInstances),this.state.menuOpened!==s.menuOpened&&(i.menuOpened=s.menuOpened,r=!0),this.state.themeType!==s.themeType&&(i.themeType=s.themeType,r=!0),this.removeNonExistingScripts(s,i)&&(r=!0),this.state.searchText!==s.searchText&&(i.searchText=s.searchText,r=!0),this.objects!==s.objects){this.objects=s.objects,window.main.objects=s.objects,Object.keys(this.scripts).forEach(p=>{const g=this.scripts[p].source;this.scripts[p]=JSON.parse(JSON.stringify(this.objects[p].common)),this.scripts[p].source=g}),this.state.selected&&this.objects[this.state.selected]&&(this.scripts[this.state.selected]||=JSON.parse(JSON.stringify(this.objects[this.state.selected].common)),this.state.blockly!==(this.scripts[this.state.selected].engineType==="Blockly")&&(i.blockly=this.scripts[this.state.selected].engineType==="Blockly",r=!0),this.state.rules!==(this.scripts[this.state.selected].engineType==="Rules")&&(i.rules=this.scripts[this.state.selected].engineType==="Rules",r=!0),this.state.verboseEnabled!==this.scripts[this.state.selected].verbose&&(i.verboseEnabled=this.scripts[this.state.selected].verbose,r=!0),this.state.debugEnabled!==this.scripts[this.state.selected].debug&&(i.debugEnabled=this.scripts[this.state.selected].debug,r=!0));const d=[...this.state.editing];for(let p=d.length-1;p>=0;p--)this.objects[d[p]]||(r=!0,d.splice(p,1),this.state.changed[d[p]]!==void 0&&(i.changed||={...this.state.changed},i.changed&&delete i.changed[d[p]]));this.state.selected&&!this.objects[this.state.selected]&&(i.selected=d[0]||""),r&&(i.editing=d)}else for(const d in this.scripts)if(Object.prototype.hasOwnProperty.call(this.scripts,d)){if((l=this.objects[d])!=null&&l.common){if(this.objects[d].type==="script"){const p=this.scripts[d].source,g=JSON.parse(JSON.stringify(this.scripts[d]));g.source=this.objects[d].common.source,JSON.stringify(g)!==JSON.stringify(this.objects[d].common)&&(this.scripts[d]=JSON.parse(JSON.stringify(this.objects[d].common)),this.scripts[d].source=p),p!==this.objects[d].common.source?this.state.changed[d]?(h=this.objects[d].from)!=null&&h.startsWith("system.adapter.javascript.")&&(this.objects[d].from="system.adapter.admin.0",this.setState({toast:x.I18n.t("Script %s was modified on disk.",d.split(".").pop())})):this.props.password&&((c=this.objects[d].native)!=null&&c.protected)?this.scripts[d].source=bm(this.props.password,this.objects[d].common.source):this.scripts[d].source=this.objects[d].common.source:this.state.changed[d]&&(i.changed||={...this.state.changed},i.changed&&(i.changed[d]=!1),r=!0)}}else if(this.scripts[d]&&(delete this.scripts[d],this.state.selected===d)){if(this.state.editing.indexOf(d)!==-1){const p=[...this.state.editing],g=p.indexOf(d);g!==-1&&(p.splice(g,1),i.editing=p,r=!0)}i.selected=this.state.editing[0]||"",r=!0}}if(s.selected&&this.state.selected!==s.selected){const d=this.getScriptFromObject(s.selected);this.scripts[s.selected]||=d;const p=d&&JSON.stringify(this.scripts[s.selected])!==JSON.stringify(d),g=[...this.state.editing];s.selected&&!g.includes(s.selected)&&(g.push(s.selected),this.props.onSelectedChange(s.selected,g),window.localStorage.setItem("Editor.editing",JSON.stringify(g))),r=!0,i.changed||={...this.state.changed},i.changed[s.selected]=!!p,i.editing=g,i.selected=s.selected,i.blockly=this.scripts[s.selected].engineType==="Blockly",i.rules=this.scripts[s.selected].engineType==="Rules",i.verboseEnabled=this.scripts[s.selected].verbose,i.debugEnabled=this.scripts[s.selected].debug,i.showCompiledCode=!1}this.state.visible!==s.visible&&(r=!0,i.visible=s.visible),r&&this.setState(i,()=>this.setChangedInAdmin())}onRestart(){var s,i;(i=(s=this.props).onRestart)==null||i.call(s,this.state.selected)}onStartStop(){var i,r,l;const s=JSON.parse(JSON.stringify(this.scripts[this.state.selected]));s.enabled=!s.enabled,this.props.password&&((i=this.props.objects[this.state.selected].native)!=null&&i.protected)&&(s.source=jc(this.props.password,s.source)),(l=(r=this.props).onChange)==null||l.call(r,this.state.selected,s)}onSave(){if(this.state.isTourOpen&&this.state.tourStep===Ps.saveTheScript&&(this.setState({isTourOpen:!1}),window.localStorage.setItem("tour","true")),this.state.changed[this.state.selected]){const s={...this.state.changed};s[this.state.selected]=!1,this.setState({changed:s},()=>{var r,l,c;this.setChangedInAdmin();const i=JSON.parse(JSON.stringify(this.scripts[this.state.selected]));this.props.password&&((r=this.props.objects[this.state.selected].native)!=null&&r.protected)&&(i.source=jc(this.props.password,i.source)),(c=(l=this.props).onChange)==null||c.call(l,this.state.selected,i)})}}onSaveAll(){const s={...this.state.changed};Object.keys(s).forEach(i=>{var r,l,c;if(s[i]){s[i]=!1;const h=JSON.parse(JSON.stringify(this.scripts[i]));this.props.password&&((r=this.props.objects[i].native)!=null&&r.protected)&&(h.source=jc(this.props.password,h.source)),(c=(l=this.props).onChange)==null||c.call(l,i,h)}}),this.setState({changed:s},()=>this.setChangedInAdmin())}onCancel(){var i;this.scripts[this.state.selected]=this.getScriptFromObject(this.state.selected),this.lastKnownTs[this.state.selected]=((i=this.props.objects[this.state.selected])==null?void 0:i.ts)||0;const s={...this.state.changed};s[this.state.selected]=!1,this.setState({changed:s},()=>this.setChangedInAdmin())}onRegisterSelect(s){this.getSelect=s}handleAiAction(s){const i={aiActionRequest:s};this.state.aiChatOpen||(window.localStorage.setItem("Editor.aiChatOpen","true"),i.aiChatOpen=!0),this.setState(i)}getEditorApi(){const s=()=>this.scriptEditorRef.current;return{getSelection:()=>{var i,r;return((r=(i=s())==null?void 0:i.getEditorSelection)==null?void 0:r.call(i))??null},getContent:()=>{var i,r;return((r=(i=s())==null?void 0:i.getEditorContent)==null?void 0:r.call(i))??""},getCursorPosition:()=>{var i,r;return((r=(i=s())==null?void 0:i.getCursorPosition)==null?void 0:r.call(i))??null},highlightText:i=>{var r,l;return((l=(r=s())==null?void 0:r.highlightText)==null?void 0:l.call(r,i))??0},highlightLineRange:(i,r)=>{var l,c;return((c=(l=s())==null?void 0:l.highlightLineRange)==null?void 0:c.call(l,i,r))??!1},goToLine:(i,r)=>{var l,c;return((c=(l=s())==null?void 0:l.goToLine)==null?void 0:c.call(l,i,r))??!1},insertTextAtCursor:i=>{const r=s();return r!=null&&r.insertTextIntoEditor?(r.insertTextIntoEditor(i),!0):!1},replaceSelection:i=>{var r,l;return((l=(r=s())==null?void 0:r.replaceSelection)==null?void 0:l.call(r,i))??!1},getDiagnostics:()=>{var i,r;return((r=(i=s())==null?void 0:i.getDiagnostics)==null?void 0:r.call(i))??[]},getSymbols:async()=>{var i,r;return((r=(i=s())==null?void 0:i.getDocumentSymbols)==null?void 0:r.call(i))??[]}}}onConvertBlockly2JS(){this.showConfirmDialog(x.I18n.t("It will not be possible to revert this operation."),s=>{if(s){this.scripts[this.state.selected].engineType="Javascript/js";const r=this.scripts[this.state.selected].source.split(` +`)){const y=g.trim().replace(/^\/\*+/,"").replace(/\*+\/$/,"").replace(/^\/\//,"").replace(/^\*+/,"").trim();y.length>=3&&c.add(y.toLowerCase())}if(c.size===0){if(l.length===1){const g=l[0],$=r[g.endLine-1]??"";return{range:{startLine:g.startLine,startColumn:1,endLine:g.endLine,endColumn:$.length+1},confidence:.5,method:"similarity"}}return null}let h=l[0],d=0;for(const g of l){let $=0;for(let w=g.startLine-1;wd&&(d=y,h=g)}if(dKi(()=>Promise.resolve().then(()=>g1),void 0,import.meta.url)),BO=pe.lazy(()=>Ki(()=>import("./index-CtxgOnw1.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url)),jO=pe.lazy(()=>Ki(()=>import("./index-B0Khg-uY.js"),__vite__mapDeps([14,1,2,3,4,6,7,5,15,9,8,10,11,12]),import.meta.url)),FO=pe.lazy(()=>Ki(()=>import("./ScriptEditorVanillaMonaco-CKnJEdpA.js"),__vite__mapDeps([15,9,1,2,3,4,6,7,5,8,10,11,12]),import.meta.url)),zO=pe.lazy(()=>Ki(()=>import("./ScriptEditor-B5mD7l8c.js"),__vite__mapDeps([16,1,2,3,4,6,5,15,9,7,8,10,11,12,17]),import.meta.url)),U_=pe.lazy(()=>Ki(()=>import("./AiChatPanel-CZ2o6xnT.js"),__vite__mapDeps([18,1,2,3,4,6,5,9,19,7,8,10,11,12]),import.meta.url)),UO=pe.lazy(()=>Ki(()=>import("./AiDiffView-RPozjjHf.js"),__vite__mapDeps([20,1,2,3,4,6,5,7]),import.meta.url)),H_={Blockly:Jk,"Javascript/js":qc,Rules:Xk,def:qc,"TypeScript/ts":qk},HO=48,W_="#02a102",Hg="#70aae9",WO=nk[400],GO=rk[400],Me={toolbar:a=>({minHeight:38,boxShadow:"0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)",backgroundColor:a.palette.mode==="dark"?"#1e1e1e":"#E2E2E2"}),toolbarButtons:{padding:4,marginLeft:4},toolbarButtonsDisabled:{filter:"grayscale(100%)",opacity:.5},editorDiv:a=>({height:`calc(100% - ${(parseInt(a.toolbar.height,10)||48)+38+10}px)`,width:"100%",overflow:"hidden",position:"relative"}),textButton:{marginRight:10,minHeight:24,padding:"6px 16px",height:32},saveButton:{background:"#ff9900"},tabIcon:{width:24,height:24,verticalAlign:"middle",marginBottom:2,marginRight:2,borderRadius:3},hintIcon:{padding:"0 8px 0 8px"},hintButton:{marginTop:8,marginLeft:20},tabMenuButton:{position:"absolute",top:0,right:0},tabChanged:a=>({color:a.palette.secondary.main}),tabText:{maxWidth:130,textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",display:"inline-block",verticalAlign:"middle"},tabChangedIcon:{color:"#FF0000",fontSize:16,marginLeft:5},closeButton:{marginLeft:5},notRunning:{color:"#ffbc00",marginRight:8,marginLeft:8},tabButton:{minHeight:48},tabButtonWrapper:{display:"inline-block"},menuIcon:{width:18,height:18,borderRadius:2,marginRight:5}};class Hn extends pe.Component{getSelect=null;changedMirror={};cron={initValue:null,callback:null};scriptDialog={initValue:null,callback:null,args:null,isReturn:!1};objects;scripts;selectId={initValue:null,callback:null};confirmCallback=null;blocklyEditorRef=pe.createRef();scriptEditorRef=pe.createRef();lastKnownTs={};constructor(s){var c,h;super(s);let i=window.localStorage.getItem("Editor.selected")||"";const r=window.localStorage.getItem("Editor.editing")||"[]";let l;try{l=JSON.parse(r)}catch{l=[]}i&&!l.includes(i)&&l.push(i),i&&!this.props.password&&((h=(c=this.props.objects[i])==null?void 0:c.native)!=null&&h.protected)&&(i=l.find(d=>{var p,g;return!((g=(p=this.props.objects[d])==null?void 0:p.native)!=null&&g.protected)})||""),!i&&l.length&&(this.props.password?i=l[0]:i=l.find(d=>{var p,g;return!((g=(p=this.props.objects[d])==null?void 0:p.native)!=null&&g.protected)})||""),this.state={askAboutDebug:!1,astroEvents:null,blockly:null,changed:{},cmdToBlockly:"",cmdToRules:"",confirm:"",debugEnabled:!1,editing:l,insert:"",instancesLoaded:!1,isTourOpen:window.localStorage.getItem("tour")!=="true",menuDebugAnchorEl:null,menuOidDisplayAnchorEl:null,oidDisplayMode:parseInt(window.localStorage.getItem("Blockly.FieldOID.displayMode")||"0",10)||0,oidShowIcon:window.localStorage.getItem("Blockly.FieldOID.showIcon")==="true",menuOpened:!!this.props.menuOpened,menuTabsOpened:!1,aiChatOpen:window.localStorage.getItem("Editor.aiChatOpen")==="true",aiDiffView:null,aiActionRequest:null,inlineAskHandler:null,aiCompletionsEnabled:window.localStorage.getItem("Editor.aiCompletions")!=="false",triggerPrettier:1,scriptConflict:"",rules:null,runningInstances:this.props.runningInstances||{},searchText:"",selected:i,showAdapterDebug:!1,showAstro:!1,showCompiledCode:!1,showCron:!1,showDebugMenu:!1,showScript:!1,showSelectId:!1,themeType:this.props.themeType,toast:"",tourStep:Ps.selectTriggers,verboseEnabled:!1,visible:s.visible},this.setChangedInAdmin(),window.systemLang=x.I18n.getLanguage(),window.main={objects:{},getObject:(d,p)=>this.props.socket.getObject(d).then(g=>p==null?void 0:p(null,g)).catch(g=>p==null?void 0:p(g)),getState:(d,p)=>this.props.socket.getState(d).then(g=>p==null?void 0:p(null,g)).catch(g=>p==null?void 0:p(g)),instances:[],selectIdDialog:(d,p,g)=>{typeof p=="function"&&(g=p,p=null),this.selectId.callback=g,this.selectId.initValue=d,this.selectId.type=p,this.setState({showSelectId:!0})},cronDialog:(d,p)=>{this.cron.callback=p,this.cron.initValue=d,this.setState({showCron:!0})},showScriptDialog:(d,p,g,$)=>{this.scriptDialog.callback=$,this.scriptDialog.initValue=d,this.scriptDialog.args=p,this.scriptDialog.isReturn=g||!1,this.setState({showScript:!0})}},this.objects=s.objects,this.scripts={},this.getAllAdapterInstances().then(()=>{this.props.onSelectedChange&&this.state.selected&&setTimeout(()=>this.props.onSelectedChange(this.state.selected,this.state.editing),100)})}async getAllAdapterInstances(){const s=await this.props.socket.getAdapterInstances(!0),i={},r=s.map(l=>(i[l._id]=l,l._id));window.main.objects=i,window.main.instances=r,this.setState({instancesLoaded:!0})}static onInstanceChanged(s,i){if(s)if(!i&&window.main.instances.includes(s)){delete window.main.objects[s];const r=window.main.instances.indexOf(s);window.main.instances.splice(r,1)}else(i==null?void 0:i.type)==="instance"&&(window.main.instances.includes(s)||(window.main.instances.push(s),window.main.instances.sort()),window.main.objects[s]=i)}setChangedInAdmin(){const s=Object.keys(this.state.changed).find(i=>this.state.changed[i]);Object.keys(this.state.changed).forEach(i=>{this.changedMirror[i]=this.state.changed[i]}),Object.keys(this.changedMirror).forEach(i=>{this.state.changed[i]===void 0&&delete this.changedMirror[i]}),this.props.onChangedChanged(this.changedMirror),typeof window.parent<"u"&&window.parent&&(window.parent.configNotSaved=!!s)}componentDidMount(){window.addEventListener("beforeunload",this.onBrowserClose,!1),this.props.socket.subscribeObject("system.adapter.*",Hn.onInstanceChanged)}componentWillUnmount(){window.removeEventListener("beforeunload",this.onBrowserClose),this.props.socket.unsubscribeObject("system.adapter.*",Hn.onInstanceChanged)}componentDidUpdate(s){if(s.scriptsHash!==this.props.scriptsHash)for(const i of this.state.editing){const r=this.props.objects[i];if(!r||r.type!=="script")continue;const l=r.ts||0,c=this.lastKnownTs[i];c!==void 0&&l!==c&&(this.state.changed[i]?this.state.scriptConflict||this.setState({scriptConflict:i}):(this.scripts[i]=this.getScriptFromObject(i),this.lastKnownTs[i]=l))}}onBrowserClose=s=>{const i=Object.keys(this.scripts).find(r=>JSON.stringify(this.scripts[r])!==JSON.stringify(this.getScriptFromObject(r)));if(i){console.log(`Script ${JSON.stringify(this.scripts[i])}`);const r=x.I18n.t("Configuration not saved.");return s=s||window.event,s&&(s.returnValue=r),r}};removeNonExistingScripts(s,i){s=s||this.props,i=i||{};let r=!1;if(this.state.editing&&this.state.editing.find(c=>s&&!s.objects[c])){const c=[...this.state.editing];for(let h=c.length-1;h>=0;h--)this.objects[c[h]]||(r=!0,c.splice(h,1));r&&(i.editing=c),this.state.selected&&!this.objects[this.state.selected]&&(r=!0,i.selected=c[0]||"",i.selected&&this.scripts[i.selected]&&(this.state.blockly!==(this.scripts[i.selected].engineType==="Blockly")&&(i.blockly=this.scripts[i.selected].engineType==="Blockly",r=!0),this.state.rules!==(this.scripts[i.selected].engineType==="Rules")&&(i.rules=this.scripts[i.selected].engineType==="Rules",r=!0),this.state.verboseEnabled!==this.scripts[i.selected].verbose&&(i.verboseEnabled=this.scripts[i.selected].verbose,r=!0),this.state.debugEnabled!==this.scripts[i.selected].debug&&(i.debugEnabled=this.scripts[i.selected].debug,r=!0)))}return r}UNSAFE_componentWillReceiveProps(s){var l,c,h;const i={};let r=!1;if(JSON.stringify(s.runningInstances)!==JSON.stringify(this.state.runningInstances)&&(r=!0,i.runningInstances=s.runningInstances),this.state.menuOpened!==s.menuOpened&&(i.menuOpened=s.menuOpened,r=!0),this.state.themeType!==s.themeType&&(i.themeType=s.themeType,r=!0),this.removeNonExistingScripts(s,i)&&(r=!0),this.state.searchText!==s.searchText&&(i.searchText=s.searchText,r=!0),this.objects!==s.objects){this.objects=s.objects,window.main.objects=s.objects,Object.keys(this.scripts).forEach(p=>{const g=this.scripts[p].source;this.scripts[p]=JSON.parse(JSON.stringify(this.objects[p].common)),this.scripts[p].source=g}),this.state.selected&&this.objects[this.state.selected]&&(this.scripts[this.state.selected]||=JSON.parse(JSON.stringify(this.objects[this.state.selected].common)),this.state.blockly!==(this.scripts[this.state.selected].engineType==="Blockly")&&(i.blockly=this.scripts[this.state.selected].engineType==="Blockly",r=!0),this.state.rules!==(this.scripts[this.state.selected].engineType==="Rules")&&(i.rules=this.scripts[this.state.selected].engineType==="Rules",r=!0),this.state.verboseEnabled!==this.scripts[this.state.selected].verbose&&(i.verboseEnabled=this.scripts[this.state.selected].verbose,r=!0),this.state.debugEnabled!==this.scripts[this.state.selected].debug&&(i.debugEnabled=this.scripts[this.state.selected].debug,r=!0));const d=[...this.state.editing];for(let p=d.length-1;p>=0;p--)this.objects[d[p]]||(r=!0,d.splice(p,1),this.state.changed[d[p]]!==void 0&&(i.changed||={...this.state.changed},i.changed&&delete i.changed[d[p]]));this.state.selected&&!this.objects[this.state.selected]&&(i.selected=d[0]||""),r&&(i.editing=d)}else for(const d in this.scripts)if(Object.prototype.hasOwnProperty.call(this.scripts,d)){if((l=this.objects[d])!=null&&l.common){if(this.objects[d].type==="script"){const p=this.scripts[d].source,g=JSON.parse(JSON.stringify(this.scripts[d]));g.source=this.objects[d].common.source,JSON.stringify(g)!==JSON.stringify(this.objects[d].common)&&(this.scripts[d]=JSON.parse(JSON.stringify(this.objects[d].common)),this.scripts[d].source=p),p!==this.objects[d].common.source?this.state.changed[d]?(h=this.objects[d].from)!=null&&h.startsWith("system.adapter.javascript.")&&(this.objects[d].from="system.adapter.admin.0",this.setState({toast:x.I18n.t("Script %s was modified on disk.",d.split(".").pop())})):this.props.password&&((c=this.objects[d].native)!=null&&c.protected)?this.scripts[d].source=bm(this.props.password,this.objects[d].common.source):this.scripts[d].source=this.objects[d].common.source:this.state.changed[d]&&(i.changed||={...this.state.changed},i.changed&&(i.changed[d]=!1),r=!0)}}else if(this.scripts[d]&&(delete this.scripts[d],this.state.selected===d)){if(this.state.editing.indexOf(d)!==-1){const p=[...this.state.editing],g=p.indexOf(d);g!==-1&&(p.splice(g,1),i.editing=p,r=!0)}i.selected=this.state.editing[0]||"",r=!0}}if(s.selected&&this.state.selected!==s.selected){const d=this.getScriptFromObject(s.selected);this.scripts[s.selected]||=d;const p=d&&JSON.stringify(this.scripts[s.selected])!==JSON.stringify(d),g=[...this.state.editing];s.selected&&!g.includes(s.selected)&&(g.push(s.selected),this.props.onSelectedChange(s.selected,g),window.localStorage.setItem("Editor.editing",JSON.stringify(g))),r=!0,i.changed||={...this.state.changed},i.changed[s.selected]=!!p,i.editing=g,i.selected=s.selected,i.blockly=this.scripts[s.selected].engineType==="Blockly",i.rules=this.scripts[s.selected].engineType==="Rules",i.verboseEnabled=this.scripts[s.selected].verbose,i.debugEnabled=this.scripts[s.selected].debug,i.showCompiledCode=!1}this.state.visible!==s.visible&&(r=!0,i.visible=s.visible),r&&this.setState(i,()=>this.setChangedInAdmin())}onRestart(){var s,i;(i=(s=this.props).onRestart)==null||i.call(s,this.state.selected)}onStartStop(){var i,r,l;const s=JSON.parse(JSON.stringify(this.scripts[this.state.selected]));s.enabled=!s.enabled,this.props.password&&((i=this.props.objects[this.state.selected].native)!=null&&i.protected)&&(s.source=jc(this.props.password,s.source)),(l=(r=this.props).onChange)==null||l.call(r,this.state.selected,s)}onSave(){if(this.state.isTourOpen&&this.state.tourStep===Ps.saveTheScript&&(this.setState({isTourOpen:!1}),window.localStorage.setItem("tour","true")),this.state.changed[this.state.selected]){const s={...this.state.changed};s[this.state.selected]=!1,this.setState({changed:s},()=>{var r,l,c;this.setChangedInAdmin();const i=JSON.parse(JSON.stringify(this.scripts[this.state.selected]));this.props.password&&((r=this.props.objects[this.state.selected].native)!=null&&r.protected)&&(i.source=jc(this.props.password,i.source)),(c=(l=this.props).onChange)==null||c.call(l,this.state.selected,i)})}}onSaveAll(){const s={...this.state.changed};Object.keys(s).forEach(i=>{var r,l,c;if(s[i]){s[i]=!1;const h=JSON.parse(JSON.stringify(this.scripts[i]));this.props.password&&((r=this.props.objects[i].native)!=null&&r.protected)&&(h.source=jc(this.props.password,h.source)),(c=(l=this.props).onChange)==null||c.call(l,i,h)}}),this.setState({changed:s},()=>this.setChangedInAdmin())}onCancel(){var i;this.scripts[this.state.selected]=this.getScriptFromObject(this.state.selected),this.lastKnownTs[this.state.selected]=((i=this.props.objects[this.state.selected])==null?void 0:i.ts)||0;const s={...this.state.changed};s[this.state.selected]=!1,this.setState({changed:s},()=>this.setChangedInAdmin())}onRegisterSelect(s){this.getSelect=s}handleAiAction(s){const i={aiActionRequest:s};this.state.aiChatOpen||(window.localStorage.setItem("Editor.aiChatOpen","true"),i.aiChatOpen=!0),this.setState(i)}getEditorApi(){const s=()=>this.scriptEditorRef.current;return{getSelection:()=>{var i,r;return((r=(i=s())==null?void 0:i.getEditorSelection)==null?void 0:r.call(i))??null},getContent:()=>{var i,r;return((r=(i=s())==null?void 0:i.getEditorContent)==null?void 0:r.call(i))??""},getCursorPosition:()=>{var i,r;return((r=(i=s())==null?void 0:i.getCursorPosition)==null?void 0:r.call(i))??null},highlightText:i=>{var r,l;return((l=(r=s())==null?void 0:r.highlightText)==null?void 0:l.call(r,i))??0},highlightLineRange:(i,r)=>{var l,c;return((c=(l=s())==null?void 0:l.highlightLineRange)==null?void 0:c.call(l,i,r))??!1},goToLine:(i,r)=>{var l,c;return((c=(l=s())==null?void 0:l.goToLine)==null?void 0:c.call(l,i,r))??!1},insertTextAtCursor:i=>{const r=s();return r!=null&&r.insertTextIntoEditor?(r.insertTextIntoEditor(i),!0):!1},replaceSelection:i=>{var r,l;return((l=(r=s())==null?void 0:r.replaceSelection)==null?void 0:l.call(r,i))??!1},getDiagnostics:()=>{var i,r;return((r=(i=s())==null?void 0:i.getDiagnostics)==null?void 0:r.call(i))??[]},getSymbols:async()=>{var i,r;return((r=(i=s())==null?void 0:i.getDocumentSymbols)==null?void 0:r.call(i))??[]}}}onConvertBlockly2JS(){this.showConfirmDialog(x.I18n.t("It will not be possible to revert this operation."),s=>{if(s){this.scripts[this.state.selected].engineType="Javascript/js";const r=this.scripts[this.state.selected].source.split(` `);r.pop(),this.scripts[this.state.selected].source=r.join(` `);const l=this.state.selected,c={...this.state.changed};c[this.state.selected]=!0,this.setState({changed:c,blockly:!1,selected:""},()=>{this.setChangedInAdmin(),setTimeout(()=>this.setState({selected:l}),100)})}})}onChange(s){if(s.script!==void 0){if(s.script===this.scripts[this.state.selected].source)return;this.scripts[this.state.selected].source=s.script}s.debug!==void 0&&(this.scripts[this.state.selected].debug=s.debug),s.verbose!==void 0&&(this.scripts[this.state.selected].verbose=s.verbose);const i=JSON.stringify(this.scripts[this.state.selected])!==JSON.stringify(this.getScriptFromObject(this.state.selected));if(i!==!!this.state.changed[this.state.selected]){const r={...this.state.changed};r[this.state.selected]=i,this.objects[this.state.selected].from="system.adapter.admin.0",this.setState({changed:r},()=>this.setChangedInAdmin())}}onTabChange(s){var r,l;if(this.props.debugMode)return;window.localStorage.setItem("Editor.selected",s);const i=this.scripts[s]||this.getScriptFromObject(s);this.scripts[s]||(this.scripts[s]=i),this.lastKnownTs[s]===void 0&&this.props.objects[s]&&(this.lastKnownTs[s]=this.props.objects[s].ts||0),this.setState({selected:s,rules:i.engineType==="Rules",blockly:i.engineType==="Blockly",showCompiledCode:!1,verboseEnabled:i.verbose,debugEnabled:i.debug}),(l=(r=this.props).onSelectedChange)==null||l.call(r,s,this.state.editing)}isScriptChanged(s){return!!(this.scripts[s]&&this.props.objects[s]&&JSON.stringify(this.scripts[s])!==JSON.stringify(this.getScriptFromObject(s)))}onTabClose(s,i){i==null||i.stopPropagation();const r=this.state.editing.indexOf(s);if(this.state.editing.includes(s))if(this.isScriptChanged(s))this.showConfirmDialog(x.I18n.t("Discard changes for %s",this.props.objects[s].common.name),l=>{l&&(delete this.scripts[s],delete this.lastKnownTs[s],this.onTabClose(s))});else{const l=[...this.state.editing];l.splice(r,1);const c={editing:l};if(s===this.state.selected?l.length?r===0||l.length===1?c.selected=l[0]:c.selected=l[r-1]:c.selected="":this.state.selected&&!l.length&&(c.selected=""),window.localStorage.setItem("Editor.editing",JSON.stringify(l)),c.selected!==void 0){c.changed||={...this.state.changed},c.changed[c.selected]=this.isScriptChanged(c.selected);const h=c.selected?this.scripts[c.selected]||this.getScriptFromObject(c.selected):void 0;c.blockly=(h==null?void 0:h.engineType)==="Blockly",c.rules=(h==null?void 0:h.engineType)==="Rules",c.verboseEnabled=!!(h!=null&&h.verbose),c.debugEnabled=!!(h!=null&&h.debug),c.showCompiledCode=!1}this.setState(c,()=>{var h,d,p,g;this.setChangedInAdmin(),c.selected!==void 0?((d=(h=this.props).onSelectedChange)==null||d.call(h,c.selected,this.state.editing),window.localStorage.setItem("Editor.selected",c.selected)):(g=(p=this.props).onSelectedChange)==null||g.call(p,this.state.selected,this.state.editing)})}}showConfirmDialog(s,i){this.confirmCallback=i,this.setState({confirm:s})}sendCommandToBlockly(s){this.setState({cmdToBlockly:s},()=>setTimeout(()=>this.setState({cmdToBlockly:""}),200))}sendCommandToRules(s){this.setState({cmdToRules:s},()=>setTimeout(()=>this.setState({cmdToRules:""}),200))}static getText(s){return typeof s=="object"?s[x.I18n.getLanguage()]||s.en:s}getScriptFullName(s){var c;const i=s.split(".");i.shift(),i.shift();const r=[];let l="script.js";for(let h=0;hthis.onTabChange(i),indicatorColor:"primary",style:{position:"relative",marginLeft:10,width:this.state.editing.length>1?"calc(100% - 50px)":"100%",display:"inline-block"},textColor:"primary",variant:"scrollable",scrollButtons:"auto",allowScrollButtonsMobile:!0,children:[this.state.editing.map(s=>{var d,p;if(!this.props.objects[s]){const g=[m.jsx(bt,{sx:this.isScriptChanged(s)?Me.tabChanged:void 0,style:Me.tabText,children:s.split(".").pop()},"text"),m.jsx(We,{onClick:$=>this.onTabClose(s,$),style:Me.closeButton,size:"small",component:"span",children:m.jsx(kc,{})},"icon")];return m.jsx(fg,{wrapped:!0,href:`#${s}`,label:g,value:s,sx:{"& .MuiTab-wrapper":Me.tabButtonWrapper}},s)}if(!this.props.password&&((d=this.props.objects[s].native)!=null&&d.protected))return null;let i=Hn.getText(this.props.objects[s].common.name)||"";const r=this.getScriptFullName(s);i.length>18&&(i=`${i.substring(0,15)}...`);const l=(p=this.getScriptFromObject(s))==null?void 0:p.source,c=this.scripts[s]&&l!==this.scripts[s].source,h=[m.jsx(bt,{sx:this.isScriptChanged(s)?Me.tabChanged:void 0,style:Me.tabText,children:i},"text"),c?m.jsx("span",{style:Me.tabChangedIcon,children:"▣"},"changedSign"):null,!this.props.debugInstance&&(!this.props.debugMode||this.state.selected!==s)&&m.jsx(We,{onClick:g=>this.onTabClose(s,g),style:Me.closeButton,size:"small",component:"span",children:m.jsx(kc,{})},"icon")];return m.jsx(fg,{disabled:!!this.props.debugInstance||this.state.selected!==s&&this.props.debugMode,wrapped:!0,iconPosition:"start",icon:m.jsx("img",{alt:"",src:H_[this.props.objects[s].common.engineType]||H_.def,style:Me.tabIcon},"icon"),href:`#${s}`,label:h,style:Me.tabButton,value:s,title:r,sx:{"& .MuiTab-wrapper":Me.tabButtonWrapper}},s)}),this.props.debugInstance?m.jsx(fg,{disabled:!1,wrapped:!0,href:`#${this.props.debugInstance.adapter}`,label:this.props.debugInstance.adapter,style:Me.tabButton,value:this.props.debugInstance.adapter,title:this.props.debugInstance.adapter,sx:{"& .MuiTab-wrapper":Me.tabButtonWrapper}},this.props.debugInstance.adapter):""]},"tabs1"),this.state.editing.length>1?m.jsx(We,{href:"#","aria-label":"Close all but current",style:Me.tabMenuButton,title:x.I18n.t("Close all but current"),"aria-haspopup":"false",onClick:s=>{const i=[this.state.selected];Object.keys(this.scripts).forEach(r=>r!==this.state.selected&&JSON.stringify(this.scripts[r])!==JSON.stringify(this.getScriptFromObject(r))&&i.push(r)),window.localStorage.setItem("Editor.editing",JSON.stringify(i)),this.setState({menuTabsOpened:!1,editing:i})},size:"medium",children:m.jsx(cI,{})},"menuButton"):null]:m.jsx(bt,{sx:Me.toolbar,children:m.jsxs(je,{color:"grey",disabled:!0,style:Me.hintButton,href:"",children:[m.jsx("span",{children:x.I18n.t("Click on this icon")},"select2"),m.jsx(uI,{style:Me.hintIcon},"select3"),m.jsx("span",{children:x.I18n.t("for edit or create script")},"select4")]},"select1")},"tabs2")}getDebugMenu(){return this.state.showDebugMenu?m.jsxs(Vc,{id:"menu-debug",anchorEl:this.state.menuDebugAnchorEl,open:this.state.showDebugMenu,onClose:()=>this.setState({showDebugMenu:!1,menuDebugAnchorEl:null}),slotProps:{root:{style:{maxHeight:HO*7.5}}},children:[m.jsxs(et,{title:x.I18n.t("debug_help"),onClick:s=>{s.stopPropagation(),s.preventDefault(),this.setState({showDebugMenu:!1,menuDebugAnchorEl:null,debugEnabled:!this.state.debugEnabled},()=>this.onChange({debug:this.state.debugEnabled}))},children:[m.jsx(ua,{checked:this.state.debugEnabled}),m.jsx(Cc,{style:{...Me.menuIcon,color:W_}}),x.I18n.t("debug_label")]},"debugEnabled"),m.jsxs(et,{title:x.I18n.t("verbose_help"),onClick:s=>{s.stopPropagation(),s.preventDefault(),this.setState({showDebugMenu:!1,menuDebugAnchorEl:null,verboseEnabled:!this.state.verboseEnabled},()=>this.onChange({verbose:this.state.verboseEnabled}))},children:[m.jsx(ua,{checked:this.state.verboseEnabled}),m.jsx(Ow,{style:{...Me.menuIcon,color:Hg}}),x.I18n.t("verbose_label")]},"verboseEnabled")]},"menuDebug"):null}getDebugBadge(){return[this.state.debugEnabled&&this.state.verboseEnabled?m.jsx(Cc,{style:{...Me.menuIcon,color:Hg}},"DebugVerbose"):null,this.state.debugEnabled&&!this.state.verboseEnabled?m.jsx(Cc,{style:{...Me.menuIcon,color:W_}},"DebugNoVerbose"):null,!this.state.debugEnabled&&this.state.verboseEnabled?m.jsx(Ow,{style:{...Me.menuIcon,color:Hg}},"noDebugVerbose"):null]}getAskAboutDebug(){return this.state.askAboutDebug?m.jsx(x.DialogConfirm,{onClose:()=>{this.setState({askAboutDebug:!1},()=>this.props.onDebugModeChange(!0))},ok:x.I18n.t("Yes"),cancel:x.I18n.t("Cancel"),text:x.I18n.t("The script will be stopped and must be activated manually after debugging. Continue?")}):null}getToolbar(){var r,l;const s=!!(this.state.selected&&((r=this.scripts[this.state.selected])!=null&&r.engine)&&this.state.runningInstances[this.scripts[this.state.selected].engine]),i=!!(this.state.selected&&((l=this.scripts[this.state.selected])!=null&&l.enabled));if(this.state.selected){const c=Object.keys(this.state.changed).filter(d=>this.state.changed[d]).length,h=this.state.changed[this.state.selected];return m.jsxs(BT,{variant:"dense",sx:Me.toolbar,children:[!this.props.debugInstance&&this.state.menuOpened&&this.props.onLocate&&m.jsx(We,{style:Me.toolbarButtons,title:x.I18n.t("Locate file"),onClick:()=>this.props.onLocate(this.state.selected),size:"medium",children:m.jsx(dI,{})},"locate"),!this.props.debugInstance&&!h&&s?m.jsx(We,{disabled:this.props.debugMode,style:Me.toolbarButtons,onClick:()=>this.onRestart(),title:x.I18n.t("Restart"),size:"medium",children:m.jsx(hI,{})},"restart"):null,!this.props.debugInstance&&!h?m.jsx(We,{disabled:this.props.debugMode,onClick:()=>this.onStartStop(),title:i?x.I18n.t("Pause script"):x.I18n.t("Run script"),size:"medium",style:{...Me.toolbarButtons,color:i?WO:GO},children:i?m.jsx(pI,{}):m.jsx(gI,{})},"start-stop"):null,!this.props.debugInstance&&!h&&!i?m.jsx("span",{style:Me.notRunning,children:x.I18n.t("Script is not running")}):null,!h&&i&&!s?m.jsx("span",{style:Me.notRunning,children:x.I18n.t("Instance is disabled")}):null,h?m.jsx(je,{color:"grey",variant:"contained",style:{...Me.textButton,...Me.saveButton},className:"button-save",onClick:()=>this.onSave(),endIcon:m.jsx(Mw,{}),children:x.I18n.t("Save")},"save"):null,c>1||c===1&&!h?m.jsx(je,{color:"grey",variant:"contained",style:Me.textButton,onClick:()=>this.onSaveAll(),endIcon:m.jsx(Mw,{}),children:x.I18n.t("Save all")},"saveall"):null,h?m.jsx(je,{color:"grey",variant:"contained",style:Me.textButton,onClick:()=>this.onCancel(),endIcon:m.jsx(bu,{}),children:x.I18n.t("Cancel")},"cancel"):null,!this.state.showCompiledCode&&!this.state.rules?m.jsx(We,{title:x.I18n.t("Undo"),style:Me.toolbarButtons,onClick:()=>{var d,p;if(this.state.blockly){const g=(d=this.blocklyEditorRef.current)==null?void 0:d.blocklyWorkspace;g==null||g.undo(!1)}else(p=this.scriptEditorRef.current)==null||p.undo()},size:"medium",children:m.jsx(mI,{})},"undo"):null,!this.state.showCompiledCode&&!this.state.rules?m.jsx(We,{title:x.I18n.t("Redo"),style:Me.toolbarButtons,onClick:()=>{var d,p;if(this.state.blockly){const g=(d=this.blocklyEditorRef.current)==null?void 0:d.blocklyWorkspace;g==null||g.undo(!0)}else(p=this.scriptEditorRef.current)==null||p.redo()},size:"medium",children:m.jsx(fI,{})},"redo"):null,m.jsx("div",{style:{flex:2}}),this.state.blockly&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"OID display mode",title:x.I18n.t("OID display mode"),style:Me.toolbarButtons,onClick:d=>this.setState({menuOidDisplayAnchorEl:d.currentTarget}),size:"medium",children:m.jsx("img",{src:Ug[this.state.oidDisplayMode]||Ug[0],alt:"OID",width:36,height:22})},"oid-display-mode"),m.jsxs(Vc,{anchorEl:this.state.menuOidDisplayAnchorEl,open:!!this.state.menuOidDisplayAnchorEl,onClose:()=>this.setState({menuOidDisplayAnchorEl:null}),children:[Ug.map((d,p)=>m.jsxs(et,{selected:this.state.oidDisplayMode===p,onClick:()=>{var $,y,w;this.setState({oidDisplayMode:p,menuOidDisplayAnchorEl:null});const g=($=window.scripts)==null?void 0:$.blocklyWorkspace;g&&((w=(y=window.Blockly)==null?void 0:y.FieldOID)!=null&&w.setDisplayMode)&&window.Blockly.FieldOID.setDisplayMode(p,g)},children:[m.jsx("img",{src:d,alt:"",width:48,height:28,style:{marginRight:8}}),(()=>{var y,w,v,_,b,T,I,C,D;const g=(v=(w=(y=window.Blockly)==null?void 0:y.FieldOID)==null?void 0:w.DISPLAY_MODE_KEYS)==null?void 0:v[p],$=["Show name","Show name path","Show ID","Show full ID"];return g&&(((T=(b=(_=window.Blockly)==null?void 0:_.Words)==null?void 0:b[g])==null?void 0:T[x.I18n.getLanguage()])||((D=(C=(I=window.Blockly)==null?void 0:I.Words)==null?void 0:C[g])==null?void 0:D.en))||$[p]})()]},`oid-mode-${p}`)),m.jsx(rm,{}),m.jsxs(et,{onClick:()=>{var g,$,y;const d=!this.state.oidShowIcon;this.setState({oidShowIcon:d});const p=(g=window.scripts)==null?void 0:g.blocklyWorkspace;p&&((y=($=window.Blockly)==null?void 0:$.FieldOID)!=null&&y.setShowIcon)&&window.Blockly.FieldOID.setShowIcon(d,p)},children:[m.jsx(ua,{checked:this.state.oidShowIcon,style:{padding:0,marginRight:8}}),(()=>{var p,g,$,y,w,v;const d="oid_show_icon";return(($=(g=(p=window.Blockly)==null?void 0:p.Words)==null?void 0:g[d])==null?void 0:$[x.I18n.getLanguage()])||((v=(w=(y=window.Blockly)==null?void 0:y.Words)==null?void 0:w[d])==null?void 0:v.en)||"Show icon"})()]},"oid-show-icon")]},"menuOidDisplay"),!this.props.debugInstance&&!this.state.showCompiledCode&&m.jsx(We,{style:Me.toolbarButtons,title:x.I18n.t("Prettify the script"),onClick:()=>this.setState({triggerPrettier:this.state.triggerPrettier+1}),size:"medium",children:m.jsx($I,{})},"prettier"),this.state.blockly&&!this.state.showCompiledCode?m.jsx(We,{"aria-label":"Export Blocks",title:x.I18n.t("Export blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToBlockly("export"),size:"medium",children:m.jsx(Kc,{})},"export"):null,this.state.blockly&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"Import Blocks",title:x.I18n.t("Import blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToBlockly("import"),size:"medium",children:m.jsx(lm,{})},"import"),this.state.blockly&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"Check code",title:x.I18n.t("Check blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToBlockly("check"),size:"medium",children:m.jsx(bI,{})},"check"),!this.props.debugMode&&!this.state.blockly&&!this.state.rules&&!this.state.showCompiledCode?m.jsx(We,{"aria-label":"create CRON",title:x.I18n.t("Create or edit CRON or time wizard"),style:Me.toolbarButtons,onClick:()=>this.setState({showCron:!0}),size:"medium",children:m.jsx(yI,{})},"select-cron"):null,this.scripts[this.state.selected]&&this.scripts[this.state.selected].engineType!=="Rules"?m.jsx(m.Fragment,{children:m.jsx(We,{"aria-label":"AI",title:x.I18n.t("AI Chat"),style:{...Me.toolbarButtons,...this.state.aiChatOpen?{color:"#4caf50"}:{}},size:"medium",onClick:()=>{const d=!this.state.aiChatOpen;window.localStorage.setItem("Editor.aiChatOpen",String(d)),this.setState({aiChatOpen:d})},children:m.jsx(vI,{})},"ai")}):null,m.jsx(We,{"aria-label":"Show astronomical events",title:x.I18n.t("Show astronomical events"),style:Me.toolbarButtons,disabled:!s,onClick:()=>{this.setState({showAstro:!0,astroEvents:null}),this.props.socket.sendTo(this.scripts[this.state.selected].engine.replace("system.adapter.",""),"calcAstroAll",{}).then(d=>this.setState({astroEvents:d}))},size:"medium",children:m.jsx(wI,{})},"show-astro"),!this.props.debugMode&&!this.state.blockly&&!this.state.rules&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"select ID",title:x.I18n.t("Insert object ID"),style:Me.toolbarButtons,onClick:()=>this.setState({showSelectId:!0}),size:"medium",children:m.jsx(_I,{})},"select-id"),this.state.blockly&&!this.state.rules&&this.state.showCompiledCode&&m.jsx(je,{color:"grey","aria-label":"convert to javascript",title:x.I18n.t("Convert blockly to javascript for ever."),onClick:()=>this.onConvertBlockly2JS(),children:"Blockly=>JS"},"convert2js"),this.state.rules&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"Export Blocks",title:x.I18n.t("Export blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToRules("export"),size:"medium",children:m.jsx(Kc,{})},"export"),this.state.rules&&!this.state.showCompiledCode&&m.jsx(We,{"aria-label":"Import Blocks",title:x.I18n.t("Import blocks"),style:Me.toolbarButtons,onClick:()=>this.sendCommandToRules("import"),size:"medium",children:m.jsx(lm,{})},"import"),this.props.expertMode&&!h&&(this.props.debugMode||!this.state.blockly&&!this.state.rules||(this.state.blockly||this.state.rules)&&this.state.showCompiledCode)&&m.jsx(We,{style:Me.toolbarButtons,color:this.props.debugMode?"primary":"default",disabled:!this.props.debugMode&&!s,onClick:()=>{!this.props.debugMode&&i?this.setState({askAboutDebug:!0}):this.props.onDebugModeChange(!this.props.debugMode)},size:"medium",children:m.jsx(Cc,{style:{fontSize:32}})}),(this.state.blockly||this.state.rules)&&m.jsx(je,{"aria-label":"blockly",title:x.I18n.t("Show javascript code"),className:"button-js-code",color:this.state.showCompiledCode?"secondary":"inherit",disabled:this.props.debugMode,style:{...Me.toolbarButtons,...this.props.debugMode?Me.toolbarButtonsDisabled:void 0,padding:"0 5px"},onClick:()=>{this.props.debugMode||(this.setState({showCompiledCode:!this.state.showCompiledCode}),this.state.isTourOpen&&this.state.tourStep===Ps.showJavascript&&this.setState({tourStep:Ps.switchBackToRules}),this.state.isTourOpen&&this.state.tourStep===Ps.switchBackToRules&&this.setState({tourStep:Ps.saveTheScript}))},children:m.jsx("img",{alt:this.state.blockly?"blockly2js":"rules2js",src:this.state.blockly?gO:mO})},"blockly-code"),m.jsx(We,{disabled:this.props.debugMode,"aria-label":"Debug menu",title:x.I18n.t("Debug options"),style:Me.toolbarButtons,onClick:d=>this.setState({showDebugMenu:!0,menuDebugAnchorEl:d.currentTarget}),size:"medium",children:m.jsx(jT,{style:Me.badgeMargin,badgeContent:this.getDebugBadge(),children:m.jsx(kI,{})})},"debug")]},"toolbar1")}return null}cachedScriptInfos=null;lastObjectsHash="";getScriptInfos(){const s=Object.keys(this.props.objects).join(",");return this.cachedScriptInfos&&this.lastObjectsHash===s?this.cachedScriptInfos:(this.lastObjectsHash=s,this.cachedScriptInfos=wO(this.props.objects),this.cachedScriptInfos)}getScriptEditor(){var s,i;if(!this.props.debugMode&&this.state.selected&&this.props.objects[this.state.selected]&&this.state.blockly!==null&&(!this.state.blockly||this.state.showCompiledCode)&&(!this.state.rules||this.state.showCompiledCode)){this.scripts[this.state.selected]||=this.getScriptFromObject(this.state.selected);const r=this.scripts[this.state.selected].engineType==="TypeScript/ts"?"typescript":"javascript",l=m.jsx(Zo,{fallback:m.jsx(Qo,{}),children:m.jsx(FO,{ref:this.scriptEditorRef,name:this.state.selected,adapterName:this.props.adapterName,insert:this.state.insert,onInserted:()=>this.setState({insert:""}),onForceSave:()=>this.onSave(),searchText:this.state.searchText,onRegisterSelect:c=>this.onRegisterSelect(c),readOnly:this.state.showCompiledCode,changed:this.state.changed[this.state.selected],code:this.scripts[this.state.selected].source||"",isDark:this.state.themeType==="dark",socket:this.props.socket,runningInstances:this.state.runningInstances,triggerPrettier:this.state.triggerPrettier,onChange:c=>this.onChange({script:c}),language:r,aiCompletionsEnabled:this.state.aiCompletionsEnabled,onAiAction:c=>this.handleAiAction(c),onInlineAsk:this.state.inlineAskHandler?c=>this.state.inlineAskHandler(c.question,c.selectedCode):void 0},"scriptEditor1")});if(this.state.aiDiffView)return m.jsx(bt,{sx:Me.editorDiv,children:m.jsx(Zo,{fallback:m.jsx(Qo,{}),children:m.jsx(UO,{originalCode:this.state.aiDiffView.original,modifiedCode:this.state.aiDiffView.modified,language:r,themeType:this.state.themeType,onAccept:c=>{this.onChange({script:c}),this.setState({aiDiffView:null})},onReject:()=>this.setState({aiDiffView:null})})})},"scriptEditorDiv");if(this.state.aiChatOpen){const c=window.localStorage.getItem("Editor.aiChatSizes");let h=[70,30];try{c&&(h=JSON.parse(c))}catch{}return m.jsx(bt,{sx:Me.editorDiv,children:m.jsxs(Jc,{direction:mt.Horizontal,initialSizes:h,minWidths:[200,250],gutterClassName:this.state.themeType==="dark"?"Dark visGutter":"Light visGutter",onResizeFinished:(d,p)=>{window.localStorage.setItem("Editor.aiChatSizes",JSON.stringify(p))},children:[l,m.jsx(Zo,{fallback:m.jsx(Qo,{}),children:m.jsx(U_,{socket:this.props.socket,runningInstances:this.state.runningInstances,themeType:this.state.themeType,currentCode:((s=this.scripts[this.state.selected])==null?void 0:s.source)||"",currentLanguage:r,selectedCode:((i=this.getSelect)==null?void 0:i.call(this))||"",allScripts:this.getScriptInfos(),editorApi:this.getEditorApi(),aiActionRequest:this.state.aiActionRequest,onAiActionConsumed:()=>this.setState({aiActionRequest:null}),onRegisterInlineAsk:d=>this.setState({inlineAskHandler:d}),currentScriptId:this.state.selected,onInsertCode:d=>this.setState({insert:d}),onShowDiff:(d,p)=>{var v;const g=this.state.selected,$=((v=this.scripts[g])==null?void 0:v.source)||"",y=this.scriptEditorRef.current,w=(_,b)=>{y==null||y.showInlineDiff({range:_,originalText:b,modifiedText:d,onAccepted:()=>{var I;const T=((I=y==null?void 0:y.getEditorContent)==null?void 0:I.call(y))||$;this.onChange({script:T})}})};if(p&&p.range&&p.scriptId===g){w(p.range,p.originalText);return}try{const _=LO(d,$);if(_){const T=$.split(` `).slice(_.range.startLine-1,_.range.endLine).join(` diff --git a/admin/assets/index-D0ssxjfN.js b/admin/assets/index-CtxgOnw1.js similarity index 99% rename from admin/assets/index-D0ssxjfN.js rename to admin/assets/index-CtxgOnw1.js index 51d236a67..fa1c5b9b3 100644 --- a/admin/assets/index-D0ssxjfN.js +++ b/admin/assets/index-CtxgOnw1.js @@ -1 +1 @@ -import{j as n}from"./createSvgIcon-DYs_tNrE.js";import{c as E,h as yt,j as M,m as nt,k as lt,l as Dt,b as ut,o as xt}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as u}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{u as kt,a as St,M as Y,C as et,G as Nt,b as $t,c as bt,I as qt,S as J,d as Bt,e as ft,j as Mt,D as Ht,f as Wt}from"./index-AD-ewMW2.js";import{_ as wt,b as Ct,h as vt,i as jt,p as Tt,f as Et,g as mt,o as Pt,Y as Ut,Z as Ft,C as Jt,D as st}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{I as Lt}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";import"./preload-helper-BDBacUwf.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";function zt(e){const s=kt().getMonitor(),[i,a]=St(s,e);return E(()=>s.subscribeToOffsetChange(a)),E(()=>s.subscribeToStateChange(a)),i}let V;function Gt(){return V||(V=new Image,V.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),V}const Kt="_wrapperRules_nnott_1",Qt="_rootWrapper_nnott_9",Yt="_addClass_nnott_14",ot={wrapperRules:Kt,rootWrapper:Qt,addClass:Yt},Zt="_switchesItem_10ls3_1",Xt="_switchesItemActive_10ls3_28",Vt="_iconTheme_10ls3_36",it={switchesItem:Zt,switchesItemActive:Xt,iconTheme:Vt},It=({name:e,id:t,active:s,icon:i,adapter:a,socket:o,onDoubleClick:c,title:l,onTouchMove:d,style:j})=>n.jsxs("div",{onDoubleClick:c,onTouchMove:d,title:l?u.I18n.t(l):void 0,className:u.Utils.clsx(it.switchesItem,s&&it.switchesItemActive,`block-${t}`),children:[n.jsx(Y,{iconName:i,className:it.iconTheme,adapter:a,socket:o,style:j}),n.jsx("span",{children:e?u.I18n.t(e):""})]},t),Rt="_cardStyle_8rq8v_1",tn="_cardStyleActive_8rq8v_17",nn="_controlMenu_8rq8v_22",en="_closeBtn_8rq8v_31",sn="_isDelete_8rq8v_73",on="_drag_mobile_8rq8v_90",G={cardStyle:Rt,cardStyleActive:tn,controlMenu:nn,closeBtn:en,isDelete:sn,drag_mobile:on};function K(e,t,s){let i;switch(e){case"actions":if(s==="else")return i={...t,actions:{...t[e],else:[...t[e].else]}},i;if(s==="then")return i={...t,actions:{...t[e],then:[...t[e].then]}},i;throw console.error(`Unknown additionalParameter: ${s}`),new Error(`Unknown additionalParameter: ${s}`);case"triggers":return i={...t,triggers:[...t.triggers]},i;case"conditions":return i={...t,conditions:[...t.conditions]},i;default:throw new Error(`Unknown name: ${e}`)}}function z(e,t,s,i){var a;switch(e){case"actions":return t.actions[s]=t.actions[s].filter(o=>o._id!==i),t;case"conditions":return t.conditions[s]=(a=t.conditions[s])==null?void 0:a.filter(o=>o._id!==i),t;default:return t.triggers=t.triggers.filter(o=>o._id!==i),t}}function cn(e,t,s){const{_id:i,acceptedBy:a}=e;let o;if(!a||!t[a])return console.warn(`Cannot find ${a}`),t;switch(a){case"actions":if(o=t.actions[s].find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.actions[s].indexOf(o);t.actions[s][c]=e}return t;case"conditions":if(o=t.conditions[s].find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.conditions[s].indexOf(o);t.conditions[s][c]=e}return t;default:if(o=t.triggers.find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.triggers.indexOf(o);t.triggers[c]=e}return t}}const Ot=yt(e=>{var N;const{setUserRules:t,userRules:s,_id:i,id:a,blockValue:o,active:c,acceptedBy:l,isTourOpen:d,setTourStep:j,tourStep:O}=e,[I,_]=M(null),{blocks:r,socket:k,onUpdate:H,setOnUpdate:w,onDebugMessage:f,enableSimulation:x}=nt(et),p=lt(h=>r==null?void 0:r.find(b=>b.getStaticData().id===h),[r]),g=lt(h=>{const b=cn(h,s,o);b&&t(b)},[s]),C=h=>{h.currentTarget!==I&&_(h.currentTarget)},q=()=>_(null),T=Dt(()=>{const h=p(a)||Nt;return n.jsx(h,{...e,notFound:!p(a),isTourOpen:d,setTourStep:j,tourStep:O,onUpdate:H,setOnUpdate:w,enableSimulation:x,onDebugMessage:f,onChange:g,className:void 0,socket:k})},[s,H,f,x]),[S,B]=M(!1);return n.jsxs("div",{onMouseMove:C,onMouseEnter:C,onMouseLeave:q,onMouseDown:h=>{if(h.ctrlKey){let b;const v=K(l,s,o);l==="conditions"?(b=v.conditions[o].find(m=>m._id===i),b&&v.conditions[o].splice(v.conditions[o].indexOf(b),0,{...b,_id:Date.now()})):l==="actions"?(b=v.actions[o].find(m=>m._id===i),b&&v.actions[o].splice(v.actions[o].indexOf(b),0,{...b,_id:Date.now()})):(b=v.triggers.find(m=>m._id===i),b&&v.triggers.splice(v[l].indexOf(b),0,{...b,_id:Date.now()})),t(v)}},id:"height",style:c?{width:(((N=document.getElementById("width"))==null?void 0:N.clientWidth)||0)-70}:void 0,className:`${G.cardStyle} ${c?G.cardStyleActive:null} ${S?G.isDelete:null}`,children:[n.jsx("div",{className:G.drag_mobile}),T,t&&n.jsx("div",{className:G.controlMenu,style:I?{opacity:1}:{opacity:0},children:n.jsx("div",{onClick:()=>{let h=K(l,s,o);h=z(l,h,o,i),B(!0),setTimeout(()=>{l==="triggers"&&w(!0),t(h)},300)},className:G.closeBtn})})]})}),rn={position:"fixed",pointerEvents:"none",zIndex:100,left:0,top:0,width:"100%",height:"100%"},an=(e,t,s)=>{if(!e||!t)return{display:"none"};let{x:i,y:a}=t;const o=`translate(${i}px, ${a}px)`;return{transform:o,WebkitTransform:o}},ln=e=>{const{itemType:t,isDragging:s,item:i,initialOffset:a,currentOffset:o,targetIds:c}=zt(d=>({item:d.getItem(),itemType:d.getItemType(),initialOffset:d.getInitialSourceClientOffset(),currentOffset:d.getSourceClientOffset(),isDragging:d.isDragging(),targetIds:d.getTargetIds()})),l=()=>t==="box"?c.length?n.jsx(Ot,{active:!0,...i,allBlocks:e.allBlocks}):n.jsx(It,{active:!0,...i,socket:e.socket}):null;return s?n.jsx("div",{style:rn,children:n.jsx("div",{style:an(a,o),children:l()})}):null},dn="_border_wrpm3_1",fn="_emptyBlockStyle_wrpm3_6",mn="_emptyBlock_wrpm3_6",gn="_selectOnChange_wrpm3_22",hn="_selectOnChangeHelp_wrpm3_28",_n="_selectOnChangeHelpIcon_wrpm3_34",pn="_emptyBlockNone_wrpm3_49",un="_mainBlockItemRules_wrpm3_55",xn="_nameBlockItems_wrpm3_63",bn="_contentBlockItem_wrpm3_73",wn="_wrapperMargin_wrpm3_81",Cn="_contentHeightOn_wrpm3_87",vn="_contentHeightOff_wrpm3_99",jn="_cardAdd_wrpm3_105",In="_blockCardAdd_wrpm3_125",On="_addClassOverflow_wrpm3_136",An="_addClassHeight_wrpm3_140",D={border:dn,emptyBlockStyle:fn,emptyBlock:mn,selectOnChange:gn,selectOnChangeHelp:hn,selectOnChangeHelpIcon:_n,emptyBlockNone:pn,mainBlockItemRules:un,nameBlockItems:xn,contentBlockItem:bn,wrapperMargin:wn,contentHeightOn:Cn,contentHeightOff:vn,cardAdd:jn,blockCardAdd:In,addClassOverflow:On,addClassHeight:An};function dt(e,t){const[s,i]=M(window.localStorage.getItem(t)?JSON.parse(window.localStorage.getItem(t)||""):e);return[s,o=>{window.localStorage.setItem(t,JSON.stringify(o)),i(o)},!!window.localStorage.getItem(t)]}function yn(e,t){let s=0,i=null,a;return function(...o){const c=Date.now();a=o,c-s>=t?(s=c,e.apply(this,o)):i||(i=setTimeout(()=>{s=Date.now(),i=null,e.apply(this,a)},t-(c-s)))}}function tt(e){if(Array.isArray(e))return e.map(t=>tt(t));if(typeof e=="function")return e.bind(null);if(e&&typeof e=="object"){const t={};return Object.keys(e).forEach(s=>{t[s]=tt(e[s])}),t}return e}const ct=yn((e,t)=>e(t),0);function R(e,t){const s=t.find(i=>i._id===e);return{card:s,index:s?t.indexOf(s):-1}}function rt(e,t,s,i,a,o,c,l,d){const{card:j,index:O}=R(e,s);if(!(Ot&&l>d)&&j&&O!==t){const I=tt(s);I.splice(O,1),I.splice(t,0,j);const _=tt(a);switch(o){case"actions":_.actions[c]=I,ct(i,_);return;case"conditions":_.conditions[c]=I,ct(i,_);return;default:_.triggers=I,ct(i,_);return}}}const Dn="_drag_7xfhc_1",kn="_root_7xfhc_11",gt={drag:Dn,root:kn},At=({typeBlock:e,allProperties:t,id:s,isActive:i,setUserRules:a,userRules:o,children:c,_id:l,blockValue:d})=>{const{setOnUpdate:j}=nt(et),[{opacity:O},I,_]=$t({type:"box",item:()=>({...t,id:s,isActive:i,_id:l}),end:(w,f)=>{const{acceptedBy:x}=w,p=f.getDropResult();let g;if(!p)return typeof l=="number"&&!f.getTargetIds().length&&(g=K(x,o,d),g=z(x,g,d,l),a(g)),null;if(p.blockValue!==d){const C=typeof l=="number"?l:Date.now();g=K(x,o,p.blockValue);const q={id:w.id,acceptedBy:w.acceptedBy};switch(x){case"actions":return d&&(g=z("actions",g,d,C)),g=z("actions",g,p.blockValue,C),g.actions[p.blockValue].push({...q,_id:C}),a(g);case"conditions":return typeof d=="number"&&(g=z("conditions",g,d,C)),g=z("conditions",g,p.blockValue,C),g.conditions[p.blockValue].push({...q,_id:C}),a(g);default:return j(!0),g=z("triggers",g,p.blockValue,C),g.triggers.push({...q,_id:C}),a(g)}}},collect:w=>({opacity:w.isDragging()?.4:1,isDragging:w.isDragging()})}),r=ut(null),[,k]=bt({accept:"box",canDrop:()=>!1,hover({_id:w,acceptedBy:f},x){var T;if(!r.current||e!==f)return;const p=(T=r.current)==null?void 0:T.getBoundingClientRect(),g=(p.bottom-p.top)/2,C=x.getClientOffset(),q=((C==null?void 0:C.y)||0)-p.top;if(l&&w!==l)switch(f){case"actions":if(d==="then"||d==="else"){const{index:S}=R(l,o.actions[d]);S!==w&&rt(w,S,o[f][d],a,o,f,d,q,g)}return;case"conditions":if(typeof d=="number"){const{index:S}=R(l,o[f][d]);S!==w&&rt(w,S,o[f][d],a,o,f,d,q,g)}return;default:{const{index:S}=R(l,o[f]);S!==w&&rt(w,S,o[f],a,o,f,void 0,q,g);return}}}});E(()=>{_(Gt(),{captureDraggingState:!0})},[]),I(k(r));const H=window.innerWidth<600;return n.jsxs("div",{ref:H&&l?null:r,className:gt.root,style:{opacity:O},children:[n.jsx("div",{className:l?gt.drag:null,ref:l&&H?r:null}),c]})},Sn=({onClose:e,open:t})=>n.jsxs(wt,{open:t,onClose:e,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n.jsx(Ct,{children:n.jsxs("div",{style:{fontSize:"1rem",fontFamily:'"Roboto", "Helvetica", "Arial", sans-serif',fontWeight:400,lineHeight:1.5,letterSpacing:"0.00938em"},children:[n.jsx("h3",{children:u.I18n.t("On condition change")}),n.jsx("div",{children:u.I18n.t("help_on_change")}),n.jsx("h3",{children:u.I18n.t("Just check")}),n.jsx("div",{children:u.I18n.t("help_just_check")})]})}),n.jsx(vt,{children:n.jsx(jt,{onClick:e,color:"primary",autoFocus:!0,startIcon:n.jsx(Lt,{}),children:u.I18n.t("OK")})})]}),Nn=({onClose:e,open:t})=>n.jsxs(wt,{open:t,onClose:e,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n.jsx(Ct,{children:n.jsxs(Tt,{id:"alert-dialog-description",children:[n.jsx("h3",{children:u.I18n.t("On condition change")}),n.jsx("div",{children:u.I18n.t("help_on_change")}),n.jsx("h3",{children:u.I18n.t("Just check")}),n.jsx("div",{children:u.I18n.t("help_just_check")})]})}),n.jsx(vt,{children:n.jsx(jt,{onClick:e,color:"primary",autoFocus:!0,children:u.I18n.t("OK")})})]}),ht=({size:e,blockValue:t,boolean:s,typeBlock:i,userRules:a,setUserRules:o,animation:c,setTourStep:l,tourStep:d,isTourOpen:j,theme:O,themeType:I,themeName:_})=>{var W;const[r,k]=M(!1),[H,w]=M(!1),[f,x]=M(!1),[p,g]=M("");s===void 0&&(s=!0);const C=bt({accept:"box",drop:()=>({blockValue:t}),hover:({acceptedBy:A,_id:L},Z)=>{k(A===i),x(!!L),g(Z.getHandlerId()||"")},canDrop:({acceptedBy:A})=>(w(A===i),A===i),collect:A=>{var L;return{isOver:A.isOver(),canDrop:((L=A.getItem())==null?void 0:L.acceptedBy)===i,offset:A.getClientOffset(),targetId:A.getHandlerId()}}}),q=C[0],{canDrop:T,isOver:S,offset:B,targetId:N}=q,h=C[1];E(()=>{g("")},[B]);const b=T&&S;let v="";b?v=r?"#00fb003d":"#fb00002e":T?v=H?"#00fb003d":"#fb00002e":B&&(v=N===p?"#fb00002e":"");let m;return i==="actions"?m=a.actions[t]:i==="conditions"?m=a.conditions[t]:m=a.triggers,n.jsx("div",{ref:h,style:{backgroundColor:v},className:`${u.Utils.clsx(D.contentBlockItem,e&&D.addClassHeight)} ${s?c?D.contentHeightOn:null:D.contentHeightOff}`,children:n.jsxs("div",{className:D.wrapperMargin,children:[m.map(A=>n.jsx(At,{typeBlock:i,...A,blockValue:t,allProperties:A,userRules:a,setUserRules:o,children:n.jsx(Ot,{...A,isTourOpen:j,setTourStep:l,tourStep:d,settings:A,blockValue:t,userRules:a,setUserRules:o,theme:O,themeType:I,themeName:_})},A._id)),n.jsx("div",{style:b&&r&&!f?{height:((W=document.getElementById("height"))==null?void 0:W.clientHeight)||200}:void 0,className:`${D.emptyBlockStyle} ${b&&r&&!f?D.emptyBlock:D.emptyBlockNone}`})]})})},at=({size:e,typeBlock:t,name:s,nameAdditionally:i,additionally:a,border:o,userRules:c,setUserRules:l,iconName:d,adapter:j,socket:O,setTourStep:I,tourStep:_,isTourOpen:r,theme:k,themeType:H,themeName:w})=>{const[f,x,p]=dt(t==="actions"?!1:[],`additionallyClickItems_${t}`),[g,C]=M(!1),[q,T]=M(!1);E(()=>{if(t==="conditions"&&(f==null?void 0:f.length)!==c.conditions.length-1){const N=[];c.conditions.forEach((h,b)=>{b>0&&N.push({_id:Date.now(),open:!0})}),x([...f,...N])}t==="actions"&&!p&&c.actions.else.length&&x(!0)},[]);const[S,B]=M(!1);return n.jsxs("div",{className:`${u.Utils.clsx(D.mainBlockItemRules,e&&D.addClassOverflow)} ${o&&!e?D.border:null}`,children:[n.jsxs("span",{id:"width",className:D.nameBlockItems,children:[n.jsx(Y,{iconName:d,className:D.iconThemCard,adapter:j,socket:O}),s]}),t==="conditions"?n.jsxs("div",{style:{width:"100%"},children:[n.jsxs(Et,{variant:"standard",className:D.selectOnChange,value:c.justCheck||!1,onChange:N=>{const h=K("conditions",c);h.justCheck=N.target.value==="true",l(h)},children:[n.jsx(mt,{value:"false",children:u.I18n.t("on condition change")}),n.jsx(mt,{value:"true",children:u.I18n.t("just check")})]}),n.jsx(Pt,{size:"small",title:u.I18n.t("Explanation"),className:D.selectOnChangeHelp,onClick:()=>C(!0),children:n.jsx(qt,{className:D.selectOnChangeHelpIcon})})]}):null,n.jsx(ht,{setTourStep:I,tourStep:_,isTourOpen:r,blockValue:t==="actions"?"then":t==="conditions"?0:t,typeBlock:t,setUserRules:l,userRules:c,theme:k,themeName:w,themeType:H,size:e}),a&&[...Array(t==="actions"?1:c.conditions.length-1)].map((N,h)=>{const b=(v=h)=>t==="actions"?!!f:!!f.find((m,W)=>W===v&&m.open);return n.jsxs(xt,{children:[n.jsxs("div",{onClick:()=>{if(t==="actions")return x(!f),null;let v=JSON.parse(JSON.stringify(f));if(c.conditions[h+1].length)return v[h].open=!v[h].open,x(v),null;v=v.filter((m,W)=>W!==h),x(v),B(h),setTimeout(()=>{B(!1),l({...c,conditions:[...c.conditions.filter((m,W)=>W!==h+1)]})},250)},className:D.blockCardAdd,children:[b()?"-":"+",n.jsx("div",{className:D.cardAdd,children:i})]},h),n.jsx(ht,{blockValue:t==="actions"?"else":t==="conditions"?h+1:t,typeBlock:t,setUserRules:l,userRules:c,boolean:b(),animation:S===h,size:e,theme:k,themeName:w,themeType:H})]},`${h}_block_${t}`)}),a&&t==="conditions"&&n.jsxs("div",{onClick:()=>{x([...f,{_id:Date.now(),open:!0}]),l({...c,conditions:[...c.conditions,[]]}),B(c.conditions.length-1),setTimeout(()=>B(!1),1e3)},className:D.blockCardAdd,children:["+",n.jsx("div",{className:D.cardAdd,children:i})]}),n.jsx(Sn,{open:g,onClose:()=>C(!1)}),n.jsx(Nn,{open:q,onClose:()=>T(!1)})]})},$n="_menuRules_1qqcb_1",qn="_switchesRenderWrapper_1qqcb_13",Bn="_menuOff_1qqcb_22",Mn="_menuTitle_1qqcb_28",Hn="_marginAuto_1qqcb_42",Wn="_inputWidth_1qqcb_47",Tn="_menuWrapper_1qqcb_52",En="_hamburgerWrapper_1qqcb_57",Pn="_hamburgerOff_1qqcb_74",Un="_nothingFound_1qqcb_82",Fn="_resetSearch_1qqcb_89",Jn="_controlPanel_1qqcb_101",Ln="_controlPanelAppBar_1qqcb_112",zn="_addClassMenu_1qqcb_126",Gn="_addClassBackground_1qqcb_132",Kn="_addClassPosition_1qqcb_136",$={menuRules:$n,switchesRenderWrapper:qn,menuOff:Bn,menuTitle:Mn,marginAuto:Hn,inputWidth:Wn,menuWrapper:Tn,hamburgerWrapper:En,hamburgerOff:Pn,nothingFound:Un,resetSearch:Fn,controlPanel:Jn,controlPanelAppBar:Ln,addClassMenu:zn,addClassBackground:Gn,addClassPosition:Kn},Qn=e=>{const{allProperties:t,allProperties:{acceptedBy:s,id:i},setUserRules:a,userRules:o,setTourStep:c,tourStep:l,isTourOpen:d,onTouchMove:j,isActive:O}=e;return n.jsx(At,{allProperties:t,id:t.id,isActive:O,setUserRules:a,userRules:o,children:n.jsx(It,{onDoubleClick:()=>{d&&l===J.addScheduleByDoubleClick&&i==="TriggerScheduleBlock"&&c(J.openTagsMenu),d&&l===J.addActionPrintText&&i==="ActionPrintText"&&c(J.showJavascript);const I=Date.now();let _;switch(s){case"actions":_="then";break;case"conditions":_=o[s].length-1;break}const r=K(s,o,_),k={id:i,_id:I,acceptedBy:s};_!==void 0?s==="actions"?r.actions[_].push({...k}):s==="conditions"&&r.conditions[_].push({...k}):r.triggers.push({...k}),a(r)},...e,...t,onTouchMove:j})})},Yn="_hamburgerMenu_hqnsm_8",Zn="_animate_hqnsm_21",_t={hamburgerMenu:Yn,animate:Zn};function Xn({bool:e}){return n.jsx("div",{className:`${_t.hamburgerMenu} ${e?_t.animate:""}`})}const Vn=({addClass:e,setAllBlocks:t,allBlocks:s,userRules:i,onChangeBlocks:a,setTourStep:o,tourStep:c,isTourOpen:l})=>{const{blocks:d,socket:j}=nt(et),[O,I]=dt(!1,"hamburgerOnOff"),[_,r]=dt({text:"",type:"triggers",index:0},"filterControlPanel"),k=(f=_.text,x=_.type)=>{if(!d)return;let p=[...d];p=p.filter(g=>{if(!f)return!0;const{name:C}=g.getStaticData();return C&&u.I18n.t(C).toLowerCase().includes(f.toLowerCase())}),p=p.filter(g=>x===g.getStaticData().acceptedBy),t(p)},H=(f,x)=>{l&&x===0&&c===J.selectTriggers&&o(J.addScheduleByDoubleClick),l&&x===2&&c===J.selectActions&&o(J.addActionPrintText),r({..._,index:x,type:["triggers","conditions","actions"][x]}),k(_.text,["triggers","conditions","actions"][x])},w=f=>({id:`scrollable-force-tab-${f}`,"aria-controls":`scrollable-force-tabpanel-${f}`});return E(()=>{k()},[d]),n.jsx(Ut,{mouseEvent:!1,touchEvent:"onTouchStart",onClickAway:()=>I(!0),children:n.jsxs("div",{className:u.Utils.clsx($.menuWrapper,e[1035]&&$.addClassMenu),children:[n.jsx("div",{className:`${$.hamburgerWrapper} ${O?$.hamburgerOff:null}`,onClick:()=>I(!O),children:n.jsx(Xn,{bool:!O})}),n.jsxs("div",{className:`${u.Utils.clsx($.menuRules,e[1035]&&$.addClassBackground,e[835]&&$.addClassPosition)} ${O?$.menuOff:null}`,children:[n.jsx("div",{className:$.controlPanel,children:n.jsx(Ft,{className:$.controlPanelAppBar,position:"static",children:n.jsxs(Jt,{value:_.index,onChange:H,children:[n.jsx(st,{className:"blocks-triggers",title:u.I18n.t("Triggers"),icon:n.jsx(Y,{iconName:"FlashOn"}),...w(0)}),n.jsx(st,{title:u.I18n.t("Conditions"),className:"blocks-conditions",icon:n.jsx(Y,{iconName:"Help"}),...w(1)}),n.jsx(st,{title:u.I18n.t("Actions"),className:"blocks-actions",icon:n.jsx(Y,{iconName:"PlayForWork"}),...w(2)})]})})}),n.jsx("div",{className:$.switchesRenderWrapper,children:n.jsxs("span",{children:[s.map(f=>{const{name:x,id:p,icon:g,adapter:C}=f.getStaticData();return n.jsx(xt,{children:n.jsx(Qn,{adapter:C,allProperties:f.getStaticData(),icon:g,id:p,isActive:!1,isTourOpen:l,name:x,onTouchMove:()=>I(!0),setTourStep:o,setUserRules:a,socket:j,tourStep:c,userRules:i})},p)}),!s.length&&n.jsxs("div",{className:$.nothingFound,children:[u.I18n.t("Nothing found"),"...",n.jsx("div",{className:$.resetSearch,onClick:()=>{r({..._,text:""}),k("")},children:u.I18n.t("reset search")})]})]})}),n.jsx("div",{className:u.Utils.clsx($.menuTitle,$.marginAuto)}),n.jsx(Bt,{className:$.inputWidth,fullWidth:!0,customValue:!0,value:_.text,size:"small",autoComplete:"off",label:u.I18n.t("search"),variant:"outlined",onChange:f=>{r({..._,text:f}),k(f)}})]})]})})};let pt=[];const me=({code:e,onChange:t,themeName:s,themeType:i,theme:a,setTourStep:o,tourStep:c,isTourOpen:l,command:d,scriptId:j,changed:O,running:I})=>{var v;const{blocks:_,socket:r,setOnUpdate:k,setOnDebugMessage:H,setEnableSimulation:w}=nt(et),[f,x]=M([]),[p,g]=M(ft(e)),[C,q]=M(""),[T,S]=M(!1);E(()=>{let m,W;const A=(P,y)=>{P===`${m}.alive`&&W!==(y==null?void 0:y.val)&&(W=!!(y!=null&&y.val),W&&m&&(r==null||r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOn",j)))},L=(P,y)=>{var U,Q;r&&m!==((U=y==null?void 0:y.common)==null?void 0:U.engine)&&(m&&(r.unsubscribeState(`${m}.alive`,A),W&&r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOn",j)),m=(Q=y==null?void 0:y.common)==null?void 0:Q.engine,m&&m&&r.subscribeState(`${m}.alive`,A))},Z=(P,y)=>{if(y)try{const U=JSON.parse(y.val),Q=Date.now();if(U.ruleId===j&&Q-U.ts<1e3){const F=[...pt,{blockId:U.blockId,data:U.data,ts:U.ts}];F.length>200&&F.splice(0,F.length-200);for(let X=F.length-1;X>=0;X--)if(F[X].ts{var y;m=(y=P==null?void 0:P.common)==null?void 0:y.engine,r.subscribeObject(j,L),m&&(r.subscribeState(`${m}.alive`,A),r.subscribeState(`${m.replace(/^system\.adapter\./,"")}.debug.rules`,Z))}),function(){r==null||r.unsubscribeObject(j,L),m&&(r==null||r.unsubscribeState(`${m}.alive`,A),W&&(r==null||r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOff",j)),r==null||r.unsubscribeState(`${m.replace(/^system\.adapter\./,"")}.debug.rules`,Z))}},[]),E(()=>{w(!O&&I)},[O,I,w]),E(()=>{d&&(q(d),T||S(!0))},[d]),E(()=>{const m=ft(e);JSON.stringify(m)!==JSON.stringify(p)&&(g(m),k(!0))},[e]),E(()=>{document.getElementsByTagName("HTML")[0].className=s||"blue"},[s]);const B=lt(m=>{g(m),_&&t(Mt(m,_))},[_,t]),N=ut(null),[h,b]=M({835:!1,1035:!1});return E(()=>{N.current&&(N.current.clientWidth<=1035&&b({835:!1,1035:!0}),N.current.clientWidth<=835&&b({1035:!0,835:!0}),N.current.clientWidth>1035&&b({835:!1,1035:!1}))},[((v=N.current)==null?void 0:v.clientWidth)||0]),!_||!r?null:n.jsxs("div",{className:ot.wrapperRules,ref:N,children:[n.jsx(ln,{allBlocks:f,socket:r}),T?C==="export"?n.jsx(Ht,{scriptId:j,themeType:i,onClose:()=>S(!1),text:JSON.stringify(p,null,2)}):n.jsx(Wt,{themeType:i,onClose:m=>{S(!1),m&&B(JSON.parse(m))}}):null,n.jsxs("div",{className:u.Utils.clsx(ot.rootWrapper,h[835]&&ot.addClass),children:[n.jsx(Vn,{setAllBlocks:x,allBlocks:f,userRules:p,onChangeBlocks:B,setTourStep:o,tourStep:c,addClass:h,isTourOpen:l}),n.jsx(at,{socket:r,setUserRules:B,userRules:p,isTourOpen:l,setTourStep:o,tourStep:c,name:`${u.I18n.t("when")}...`,typeBlock:"triggers",iconName:"FlashOn",size:h[835],themeType:i,themeName:s,theme:a}),n.jsx(at,{socket:r,setUserRules:B,isTourOpen:l,setTourStep:o,tourStep:c,userRules:p,name:`...${u.I18n.t("and")}...`,typeBlock:"conditions",iconName:"Help",nameAdditionally:u.I18n.t("or"),additionally:!0,border:!0,size:h[835],themeType:i,themeName:s,theme:a}),n.jsx(at,{socket:r,setUserRules:B,isTourOpen:l,setTourStep:o,tourStep:c,userRules:p,name:`...${u.I18n.t("then")}`,typeBlock:"actions",iconName:"PlayForWork",nameAdditionally:u.I18n.t("else"),additionally:!0,size:h[835],themeType:i,themeName:s,theme:a})]})]},"rulesEditor")};export{me as default}; +import{j as n}from"./createSvgIcon-DYs_tNrE.js";import{c as E,h as yt,j as M,m as nt,k as lt,l as Dt,b as ut,o as xt}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as u}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{u as kt,a as St,M as Y,C as et,G as Nt,b as $t,c as bt,I as qt,S as J,d as Bt,e as ft,j as Mt,D as Ht,f as Wt}from"./index-Blu2oA9H.js";import{_ as wt,b as Ct,h as vt,i as jt,p as Tt,f as Et,g as mt,o as Pt,Y as Ut,Z as Ft,C as Jt,D as st}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import{I as Lt}from"./index-wHNMOf-c.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";import"./preload-helper-BDBacUwf.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-CIXm_zPk.js";function zt(e){const s=kt().getMonitor(),[i,a]=St(s,e);return E(()=>s.subscribeToOffsetChange(a)),E(()=>s.subscribeToStateChange(a)),i}let V;function Gt(){return V||(V=new Image,V.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),V}const Kt="_wrapperRules_nnott_1",Qt="_rootWrapper_nnott_9",Yt="_addClass_nnott_14",ot={wrapperRules:Kt,rootWrapper:Qt,addClass:Yt},Zt="_switchesItem_10ls3_1",Xt="_switchesItemActive_10ls3_28",Vt="_iconTheme_10ls3_36",it={switchesItem:Zt,switchesItemActive:Xt,iconTheme:Vt},It=({name:e,id:t,active:s,icon:i,adapter:a,socket:o,onDoubleClick:c,title:l,onTouchMove:d,style:j})=>n.jsxs("div",{onDoubleClick:c,onTouchMove:d,title:l?u.I18n.t(l):void 0,className:u.Utils.clsx(it.switchesItem,s&&it.switchesItemActive,`block-${t}`),children:[n.jsx(Y,{iconName:i,className:it.iconTheme,adapter:a,socket:o,style:j}),n.jsx("span",{children:e?u.I18n.t(e):""})]},t),Rt="_cardStyle_8rq8v_1",tn="_cardStyleActive_8rq8v_17",nn="_controlMenu_8rq8v_22",en="_closeBtn_8rq8v_31",sn="_isDelete_8rq8v_73",on="_drag_mobile_8rq8v_90",G={cardStyle:Rt,cardStyleActive:tn,controlMenu:nn,closeBtn:en,isDelete:sn,drag_mobile:on};function K(e,t,s){let i;switch(e){case"actions":if(s==="else")return i={...t,actions:{...t[e],else:[...t[e].else]}},i;if(s==="then")return i={...t,actions:{...t[e],then:[...t[e].then]}},i;throw console.error(`Unknown additionalParameter: ${s}`),new Error(`Unknown additionalParameter: ${s}`);case"triggers":return i={...t,triggers:[...t.triggers]},i;case"conditions":return i={...t,conditions:[...t.conditions]},i;default:throw new Error(`Unknown name: ${e}`)}}function z(e,t,s,i){var a;switch(e){case"actions":return t.actions[s]=t.actions[s].filter(o=>o._id!==i),t;case"conditions":return t.conditions[s]=(a=t.conditions[s])==null?void 0:a.filter(o=>o._id!==i),t;default:return t.triggers=t.triggers.filter(o=>o._id!==i),t}}function cn(e,t,s){const{_id:i,acceptedBy:a}=e;let o;if(!a||!t[a])return console.warn(`Cannot find ${a}`),t;switch(a){case"actions":if(o=t.actions[s].find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.actions[s].indexOf(o);t.actions[s][c]=e}return t;case"conditions":if(o=t.conditions[s].find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.conditions[s].indexOf(o);t.conditions[s][c]=e}return t;default:if(o=t.triggers.find(c=>c._id===i),!o)console.warn(`Cannot find ${i}`);else{const c=t.triggers.indexOf(o);t.triggers[c]=e}return t}}const Ot=yt(e=>{var N;const{setUserRules:t,userRules:s,_id:i,id:a,blockValue:o,active:c,acceptedBy:l,isTourOpen:d,setTourStep:j,tourStep:O}=e,[I,_]=M(null),{blocks:r,socket:k,onUpdate:H,setOnUpdate:w,onDebugMessage:f,enableSimulation:x}=nt(et),p=lt(h=>r==null?void 0:r.find(b=>b.getStaticData().id===h),[r]),g=lt(h=>{const b=cn(h,s,o);b&&t(b)},[s]),C=h=>{h.currentTarget!==I&&_(h.currentTarget)},q=()=>_(null),T=Dt(()=>{const h=p(a)||Nt;return n.jsx(h,{...e,notFound:!p(a),isTourOpen:d,setTourStep:j,tourStep:O,onUpdate:H,setOnUpdate:w,enableSimulation:x,onDebugMessage:f,onChange:g,className:void 0,socket:k})},[s,H,f,x]),[S,B]=M(!1);return n.jsxs("div",{onMouseMove:C,onMouseEnter:C,onMouseLeave:q,onMouseDown:h=>{if(h.ctrlKey){let b;const v=K(l,s,o);l==="conditions"?(b=v.conditions[o].find(m=>m._id===i),b&&v.conditions[o].splice(v.conditions[o].indexOf(b),0,{...b,_id:Date.now()})):l==="actions"?(b=v.actions[o].find(m=>m._id===i),b&&v.actions[o].splice(v.actions[o].indexOf(b),0,{...b,_id:Date.now()})):(b=v.triggers.find(m=>m._id===i),b&&v.triggers.splice(v[l].indexOf(b),0,{...b,_id:Date.now()})),t(v)}},id:"height",style:c?{width:(((N=document.getElementById("width"))==null?void 0:N.clientWidth)||0)-70}:void 0,className:`${G.cardStyle} ${c?G.cardStyleActive:null} ${S?G.isDelete:null}`,children:[n.jsx("div",{className:G.drag_mobile}),T,t&&n.jsx("div",{className:G.controlMenu,style:I?{opacity:1}:{opacity:0},children:n.jsx("div",{onClick:()=>{let h=K(l,s,o);h=z(l,h,o,i),B(!0),setTimeout(()=>{l==="triggers"&&w(!0),t(h)},300)},className:G.closeBtn})})]})}),rn={position:"fixed",pointerEvents:"none",zIndex:100,left:0,top:0,width:"100%",height:"100%"},an=(e,t,s)=>{if(!e||!t)return{display:"none"};let{x:i,y:a}=t;const o=`translate(${i}px, ${a}px)`;return{transform:o,WebkitTransform:o}},ln=e=>{const{itemType:t,isDragging:s,item:i,initialOffset:a,currentOffset:o,targetIds:c}=zt(d=>({item:d.getItem(),itemType:d.getItemType(),initialOffset:d.getInitialSourceClientOffset(),currentOffset:d.getSourceClientOffset(),isDragging:d.isDragging(),targetIds:d.getTargetIds()})),l=()=>t==="box"?c.length?n.jsx(Ot,{active:!0,...i,allBlocks:e.allBlocks}):n.jsx(It,{active:!0,...i,socket:e.socket}):null;return s?n.jsx("div",{style:rn,children:n.jsx("div",{style:an(a,o),children:l()})}):null},dn="_border_wrpm3_1",fn="_emptyBlockStyle_wrpm3_6",mn="_emptyBlock_wrpm3_6",gn="_selectOnChange_wrpm3_22",hn="_selectOnChangeHelp_wrpm3_28",_n="_selectOnChangeHelpIcon_wrpm3_34",pn="_emptyBlockNone_wrpm3_49",un="_mainBlockItemRules_wrpm3_55",xn="_nameBlockItems_wrpm3_63",bn="_contentBlockItem_wrpm3_73",wn="_wrapperMargin_wrpm3_81",Cn="_contentHeightOn_wrpm3_87",vn="_contentHeightOff_wrpm3_99",jn="_cardAdd_wrpm3_105",In="_blockCardAdd_wrpm3_125",On="_addClassOverflow_wrpm3_136",An="_addClassHeight_wrpm3_140",D={border:dn,emptyBlockStyle:fn,emptyBlock:mn,selectOnChange:gn,selectOnChangeHelp:hn,selectOnChangeHelpIcon:_n,emptyBlockNone:pn,mainBlockItemRules:un,nameBlockItems:xn,contentBlockItem:bn,wrapperMargin:wn,contentHeightOn:Cn,contentHeightOff:vn,cardAdd:jn,blockCardAdd:In,addClassOverflow:On,addClassHeight:An};function dt(e,t){const[s,i]=M(window.localStorage.getItem(t)?JSON.parse(window.localStorage.getItem(t)||""):e);return[s,o=>{window.localStorage.setItem(t,JSON.stringify(o)),i(o)},!!window.localStorage.getItem(t)]}function yn(e,t){let s=0,i=null,a;return function(...o){const c=Date.now();a=o,c-s>=t?(s=c,e.apply(this,o)):i||(i=setTimeout(()=>{s=Date.now(),i=null,e.apply(this,a)},t-(c-s)))}}function tt(e){if(Array.isArray(e))return e.map(t=>tt(t));if(typeof e=="function")return e.bind(null);if(e&&typeof e=="object"){const t={};return Object.keys(e).forEach(s=>{t[s]=tt(e[s])}),t}return e}const ct=yn((e,t)=>e(t),0);function R(e,t){const s=t.find(i=>i._id===e);return{card:s,index:s?t.indexOf(s):-1}}function rt(e,t,s,i,a,o,c,l,d){const{card:j,index:O}=R(e,s);if(!(Ot&&l>d)&&j&&O!==t){const I=tt(s);I.splice(O,1),I.splice(t,0,j);const _=tt(a);switch(o){case"actions":_.actions[c]=I,ct(i,_);return;case"conditions":_.conditions[c]=I,ct(i,_);return;default:_.triggers=I,ct(i,_);return}}}const Dn="_drag_7xfhc_1",kn="_root_7xfhc_11",gt={drag:Dn,root:kn},At=({typeBlock:e,allProperties:t,id:s,isActive:i,setUserRules:a,userRules:o,children:c,_id:l,blockValue:d})=>{const{setOnUpdate:j}=nt(et),[{opacity:O},I,_]=$t({type:"box",item:()=>({...t,id:s,isActive:i,_id:l}),end:(w,f)=>{const{acceptedBy:x}=w,p=f.getDropResult();let g;if(!p)return typeof l=="number"&&!f.getTargetIds().length&&(g=K(x,o,d),g=z(x,g,d,l),a(g)),null;if(p.blockValue!==d){const C=typeof l=="number"?l:Date.now();g=K(x,o,p.blockValue);const q={id:w.id,acceptedBy:w.acceptedBy};switch(x){case"actions":return d&&(g=z("actions",g,d,C)),g=z("actions",g,p.blockValue,C),g.actions[p.blockValue].push({...q,_id:C}),a(g);case"conditions":return typeof d=="number"&&(g=z("conditions",g,d,C)),g=z("conditions",g,p.blockValue,C),g.conditions[p.blockValue].push({...q,_id:C}),a(g);default:return j(!0),g=z("triggers",g,p.blockValue,C),g.triggers.push({...q,_id:C}),a(g)}}},collect:w=>({opacity:w.isDragging()?.4:1,isDragging:w.isDragging()})}),r=ut(null),[,k]=bt({accept:"box",canDrop:()=>!1,hover({_id:w,acceptedBy:f},x){var T;if(!r.current||e!==f)return;const p=(T=r.current)==null?void 0:T.getBoundingClientRect(),g=(p.bottom-p.top)/2,C=x.getClientOffset(),q=((C==null?void 0:C.y)||0)-p.top;if(l&&w!==l)switch(f){case"actions":if(d==="then"||d==="else"){const{index:S}=R(l,o.actions[d]);S!==w&&rt(w,S,o[f][d],a,o,f,d,q,g)}return;case"conditions":if(typeof d=="number"){const{index:S}=R(l,o[f][d]);S!==w&&rt(w,S,o[f][d],a,o,f,d,q,g)}return;default:{const{index:S}=R(l,o[f]);S!==w&&rt(w,S,o[f],a,o,f,void 0,q,g);return}}}});E(()=>{_(Gt(),{captureDraggingState:!0})},[]),I(k(r));const H=window.innerWidth<600;return n.jsxs("div",{ref:H&&l?null:r,className:gt.root,style:{opacity:O},children:[n.jsx("div",{className:l?gt.drag:null,ref:l&&H?r:null}),c]})},Sn=({onClose:e,open:t})=>n.jsxs(wt,{open:t,onClose:e,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n.jsx(Ct,{children:n.jsxs("div",{style:{fontSize:"1rem",fontFamily:'"Roboto", "Helvetica", "Arial", sans-serif',fontWeight:400,lineHeight:1.5,letterSpacing:"0.00938em"},children:[n.jsx("h3",{children:u.I18n.t("On condition change")}),n.jsx("div",{children:u.I18n.t("help_on_change")}),n.jsx("h3",{children:u.I18n.t("Just check")}),n.jsx("div",{children:u.I18n.t("help_just_check")})]})}),n.jsx(vt,{children:n.jsx(jt,{onClick:e,color:"primary",autoFocus:!0,startIcon:n.jsx(Lt,{}),children:u.I18n.t("OK")})})]}),Nn=({onClose:e,open:t})=>n.jsxs(wt,{open:t,onClose:e,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n.jsx(Ct,{children:n.jsxs(Tt,{id:"alert-dialog-description",children:[n.jsx("h3",{children:u.I18n.t("On condition change")}),n.jsx("div",{children:u.I18n.t("help_on_change")}),n.jsx("h3",{children:u.I18n.t("Just check")}),n.jsx("div",{children:u.I18n.t("help_just_check")})]})}),n.jsx(vt,{children:n.jsx(jt,{onClick:e,color:"primary",autoFocus:!0,children:u.I18n.t("OK")})})]}),ht=({size:e,blockValue:t,boolean:s,typeBlock:i,userRules:a,setUserRules:o,animation:c,setTourStep:l,tourStep:d,isTourOpen:j,theme:O,themeType:I,themeName:_})=>{var W;const[r,k]=M(!1),[H,w]=M(!1),[f,x]=M(!1),[p,g]=M("");s===void 0&&(s=!0);const C=bt({accept:"box",drop:()=>({blockValue:t}),hover:({acceptedBy:A,_id:L},Z)=>{k(A===i),x(!!L),g(Z.getHandlerId()||"")},canDrop:({acceptedBy:A})=>(w(A===i),A===i),collect:A=>{var L;return{isOver:A.isOver(),canDrop:((L=A.getItem())==null?void 0:L.acceptedBy)===i,offset:A.getClientOffset(),targetId:A.getHandlerId()}}}),q=C[0],{canDrop:T,isOver:S,offset:B,targetId:N}=q,h=C[1];E(()=>{g("")},[B]);const b=T&&S;let v="";b?v=r?"#00fb003d":"#fb00002e":T?v=H?"#00fb003d":"#fb00002e":B&&(v=N===p?"#fb00002e":"");let m;return i==="actions"?m=a.actions[t]:i==="conditions"?m=a.conditions[t]:m=a.triggers,n.jsx("div",{ref:h,style:{backgroundColor:v},className:`${u.Utils.clsx(D.contentBlockItem,e&&D.addClassHeight)} ${s?c?D.contentHeightOn:null:D.contentHeightOff}`,children:n.jsxs("div",{className:D.wrapperMargin,children:[m.map(A=>n.jsx(At,{typeBlock:i,...A,blockValue:t,allProperties:A,userRules:a,setUserRules:o,children:n.jsx(Ot,{...A,isTourOpen:j,setTourStep:l,tourStep:d,settings:A,blockValue:t,userRules:a,setUserRules:o,theme:O,themeType:I,themeName:_})},A._id)),n.jsx("div",{style:b&&r&&!f?{height:((W=document.getElementById("height"))==null?void 0:W.clientHeight)||200}:void 0,className:`${D.emptyBlockStyle} ${b&&r&&!f?D.emptyBlock:D.emptyBlockNone}`})]})})},at=({size:e,typeBlock:t,name:s,nameAdditionally:i,additionally:a,border:o,userRules:c,setUserRules:l,iconName:d,adapter:j,socket:O,setTourStep:I,tourStep:_,isTourOpen:r,theme:k,themeType:H,themeName:w})=>{const[f,x,p]=dt(t==="actions"?!1:[],`additionallyClickItems_${t}`),[g,C]=M(!1),[q,T]=M(!1);E(()=>{if(t==="conditions"&&(f==null?void 0:f.length)!==c.conditions.length-1){const N=[];c.conditions.forEach((h,b)=>{b>0&&N.push({_id:Date.now(),open:!0})}),x([...f,...N])}t==="actions"&&!p&&c.actions.else.length&&x(!0)},[]);const[S,B]=M(!1);return n.jsxs("div",{className:`${u.Utils.clsx(D.mainBlockItemRules,e&&D.addClassOverflow)} ${o&&!e?D.border:null}`,children:[n.jsxs("span",{id:"width",className:D.nameBlockItems,children:[n.jsx(Y,{iconName:d,className:D.iconThemCard,adapter:j,socket:O}),s]}),t==="conditions"?n.jsxs("div",{style:{width:"100%"},children:[n.jsxs(Et,{variant:"standard",className:D.selectOnChange,value:c.justCheck||!1,onChange:N=>{const h=K("conditions",c);h.justCheck=N.target.value==="true",l(h)},children:[n.jsx(mt,{value:"false",children:u.I18n.t("on condition change")}),n.jsx(mt,{value:"true",children:u.I18n.t("just check")})]}),n.jsx(Pt,{size:"small",title:u.I18n.t("Explanation"),className:D.selectOnChangeHelp,onClick:()=>C(!0),children:n.jsx(qt,{className:D.selectOnChangeHelpIcon})})]}):null,n.jsx(ht,{setTourStep:I,tourStep:_,isTourOpen:r,blockValue:t==="actions"?"then":t==="conditions"?0:t,typeBlock:t,setUserRules:l,userRules:c,theme:k,themeName:w,themeType:H,size:e}),a&&[...Array(t==="actions"?1:c.conditions.length-1)].map((N,h)=>{const b=(v=h)=>t==="actions"?!!f:!!f.find((m,W)=>W===v&&m.open);return n.jsxs(xt,{children:[n.jsxs("div",{onClick:()=>{if(t==="actions")return x(!f),null;let v=JSON.parse(JSON.stringify(f));if(c.conditions[h+1].length)return v[h].open=!v[h].open,x(v),null;v=v.filter((m,W)=>W!==h),x(v),B(h),setTimeout(()=>{B(!1),l({...c,conditions:[...c.conditions.filter((m,W)=>W!==h+1)]})},250)},className:D.blockCardAdd,children:[b()?"-":"+",n.jsx("div",{className:D.cardAdd,children:i})]},h),n.jsx(ht,{blockValue:t==="actions"?"else":t==="conditions"?h+1:t,typeBlock:t,setUserRules:l,userRules:c,boolean:b(),animation:S===h,size:e,theme:k,themeName:w,themeType:H})]},`${h}_block_${t}`)}),a&&t==="conditions"&&n.jsxs("div",{onClick:()=>{x([...f,{_id:Date.now(),open:!0}]),l({...c,conditions:[...c.conditions,[]]}),B(c.conditions.length-1),setTimeout(()=>B(!1),1e3)},className:D.blockCardAdd,children:["+",n.jsx("div",{className:D.cardAdd,children:i})]}),n.jsx(Sn,{open:g,onClose:()=>C(!1)}),n.jsx(Nn,{open:q,onClose:()=>T(!1)})]})},$n="_menuRules_1qqcb_1",qn="_switchesRenderWrapper_1qqcb_13",Bn="_menuOff_1qqcb_22",Mn="_menuTitle_1qqcb_28",Hn="_marginAuto_1qqcb_42",Wn="_inputWidth_1qqcb_47",Tn="_menuWrapper_1qqcb_52",En="_hamburgerWrapper_1qqcb_57",Pn="_hamburgerOff_1qqcb_74",Un="_nothingFound_1qqcb_82",Fn="_resetSearch_1qqcb_89",Jn="_controlPanel_1qqcb_101",Ln="_controlPanelAppBar_1qqcb_112",zn="_addClassMenu_1qqcb_126",Gn="_addClassBackground_1qqcb_132",Kn="_addClassPosition_1qqcb_136",$={menuRules:$n,switchesRenderWrapper:qn,menuOff:Bn,menuTitle:Mn,marginAuto:Hn,inputWidth:Wn,menuWrapper:Tn,hamburgerWrapper:En,hamburgerOff:Pn,nothingFound:Un,resetSearch:Fn,controlPanel:Jn,controlPanelAppBar:Ln,addClassMenu:zn,addClassBackground:Gn,addClassPosition:Kn},Qn=e=>{const{allProperties:t,allProperties:{acceptedBy:s,id:i},setUserRules:a,userRules:o,setTourStep:c,tourStep:l,isTourOpen:d,onTouchMove:j,isActive:O}=e;return n.jsx(At,{allProperties:t,id:t.id,isActive:O,setUserRules:a,userRules:o,children:n.jsx(It,{onDoubleClick:()=>{d&&l===J.addScheduleByDoubleClick&&i==="TriggerScheduleBlock"&&c(J.openTagsMenu),d&&l===J.addActionPrintText&&i==="ActionPrintText"&&c(J.showJavascript);const I=Date.now();let _;switch(s){case"actions":_="then";break;case"conditions":_=o[s].length-1;break}const r=K(s,o,_),k={id:i,_id:I,acceptedBy:s};_!==void 0?s==="actions"?r.actions[_].push({...k}):s==="conditions"&&r.conditions[_].push({...k}):r.triggers.push({...k}),a(r)},...e,...t,onTouchMove:j})})},Yn="_hamburgerMenu_hqnsm_8",Zn="_animate_hqnsm_21",_t={hamburgerMenu:Yn,animate:Zn};function Xn({bool:e}){return n.jsx("div",{className:`${_t.hamburgerMenu} ${e?_t.animate:""}`})}const Vn=({addClass:e,setAllBlocks:t,allBlocks:s,userRules:i,onChangeBlocks:a,setTourStep:o,tourStep:c,isTourOpen:l})=>{const{blocks:d,socket:j}=nt(et),[O,I]=dt(!1,"hamburgerOnOff"),[_,r]=dt({text:"",type:"triggers",index:0},"filterControlPanel"),k=(f=_.text,x=_.type)=>{if(!d)return;let p=[...d];p=p.filter(g=>{if(!f)return!0;const{name:C}=g.getStaticData();return C&&u.I18n.t(C).toLowerCase().includes(f.toLowerCase())}),p=p.filter(g=>x===g.getStaticData().acceptedBy),t(p)},H=(f,x)=>{l&&x===0&&c===J.selectTriggers&&o(J.addScheduleByDoubleClick),l&&x===2&&c===J.selectActions&&o(J.addActionPrintText),r({..._,index:x,type:["triggers","conditions","actions"][x]}),k(_.text,["triggers","conditions","actions"][x])},w=f=>({id:`scrollable-force-tab-${f}`,"aria-controls":`scrollable-force-tabpanel-${f}`});return E(()=>{k()},[d]),n.jsx(Ut,{mouseEvent:!1,touchEvent:"onTouchStart",onClickAway:()=>I(!0),children:n.jsxs("div",{className:u.Utils.clsx($.menuWrapper,e[1035]&&$.addClassMenu),children:[n.jsx("div",{className:`${$.hamburgerWrapper} ${O?$.hamburgerOff:null}`,onClick:()=>I(!O),children:n.jsx(Xn,{bool:!O})}),n.jsxs("div",{className:`${u.Utils.clsx($.menuRules,e[1035]&&$.addClassBackground,e[835]&&$.addClassPosition)} ${O?$.menuOff:null}`,children:[n.jsx("div",{className:$.controlPanel,children:n.jsx(Ft,{className:$.controlPanelAppBar,position:"static",children:n.jsxs(Jt,{value:_.index,onChange:H,children:[n.jsx(st,{className:"blocks-triggers",title:u.I18n.t("Triggers"),icon:n.jsx(Y,{iconName:"FlashOn"}),...w(0)}),n.jsx(st,{title:u.I18n.t("Conditions"),className:"blocks-conditions",icon:n.jsx(Y,{iconName:"Help"}),...w(1)}),n.jsx(st,{title:u.I18n.t("Actions"),className:"blocks-actions",icon:n.jsx(Y,{iconName:"PlayForWork"}),...w(2)})]})})}),n.jsx("div",{className:$.switchesRenderWrapper,children:n.jsxs("span",{children:[s.map(f=>{const{name:x,id:p,icon:g,adapter:C}=f.getStaticData();return n.jsx(xt,{children:n.jsx(Qn,{adapter:C,allProperties:f.getStaticData(),icon:g,id:p,isActive:!1,isTourOpen:l,name:x,onTouchMove:()=>I(!0),setTourStep:o,setUserRules:a,socket:j,tourStep:c,userRules:i})},p)}),!s.length&&n.jsxs("div",{className:$.nothingFound,children:[u.I18n.t("Nothing found"),"...",n.jsx("div",{className:$.resetSearch,onClick:()=>{r({..._,text:""}),k("")},children:u.I18n.t("reset search")})]})]})}),n.jsx("div",{className:u.Utils.clsx($.menuTitle,$.marginAuto)}),n.jsx(Bt,{className:$.inputWidth,fullWidth:!0,customValue:!0,value:_.text,size:"small",autoComplete:"off",label:u.I18n.t("search"),variant:"outlined",onChange:f=>{r({..._,text:f}),k(f)}})]})]})})};let pt=[];const me=({code:e,onChange:t,themeName:s,themeType:i,theme:a,setTourStep:o,tourStep:c,isTourOpen:l,command:d,scriptId:j,changed:O,running:I})=>{var v;const{blocks:_,socket:r,setOnUpdate:k,setOnDebugMessage:H,setEnableSimulation:w}=nt(et),[f,x]=M([]),[p,g]=M(ft(e)),[C,q]=M(""),[T,S]=M(!1);E(()=>{let m,W;const A=(P,y)=>{P===`${m}.alive`&&W!==(y==null?void 0:y.val)&&(W=!!(y!=null&&y.val),W&&m&&(r==null||r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOn",j)))},L=(P,y)=>{var U,Q;r&&m!==((U=y==null?void 0:y.common)==null?void 0:U.engine)&&(m&&(r.unsubscribeState(`${m}.alive`,A),W&&r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOn",j)),m=(Q=y==null?void 0:y.common)==null?void 0:Q.engine,m&&m&&r.subscribeState(`${m}.alive`,A))},Z=(P,y)=>{if(y)try{const U=JSON.parse(y.val),Q=Date.now();if(U.ruleId===j&&Q-U.ts<1e3){const F=[...pt,{blockId:U.blockId,data:U.data,ts:U.ts}];F.length>200&&F.splice(0,F.length-200);for(let X=F.length-1;X>=0;X--)if(F[X].ts{var y;m=(y=P==null?void 0:P.common)==null?void 0:y.engine,r.subscribeObject(j,L),m&&(r.subscribeState(`${m}.alive`,A),r.subscribeState(`${m.replace(/^system\.adapter\./,"")}.debug.rules`,Z))}),function(){r==null||r.unsubscribeObject(j,L),m&&(r==null||r.unsubscribeState(`${m}.alive`,A),W&&(r==null||r.sendTo(m.replace(/^system\.adapter\./,""),"rulesOff",j)),r==null||r.unsubscribeState(`${m.replace(/^system\.adapter\./,"")}.debug.rules`,Z))}},[]),E(()=>{w(!O&&I)},[O,I,w]),E(()=>{d&&(q(d),T||S(!0))},[d]),E(()=>{const m=ft(e);JSON.stringify(m)!==JSON.stringify(p)&&(g(m),k(!0))},[e]),E(()=>{document.getElementsByTagName("HTML")[0].className=s||"blue"},[s]);const B=lt(m=>{g(m),_&&t(Mt(m,_))},[_,t]),N=ut(null),[h,b]=M({835:!1,1035:!1});return E(()=>{N.current&&(N.current.clientWidth<=1035&&b({835:!1,1035:!0}),N.current.clientWidth<=835&&b({1035:!0,835:!0}),N.current.clientWidth>1035&&b({835:!1,1035:!1}))},[((v=N.current)==null?void 0:v.clientWidth)||0]),!_||!r?null:n.jsxs("div",{className:ot.wrapperRules,ref:N,children:[n.jsx(ln,{allBlocks:f,socket:r}),T?C==="export"?n.jsx(Ht,{scriptId:j,themeType:i,onClose:()=>S(!1),text:JSON.stringify(p,null,2)}):n.jsx(Wt,{themeType:i,onClose:m=>{S(!1),m&&B(JSON.parse(m))}}):null,n.jsxs("div",{className:u.Utils.clsx(ot.rootWrapper,h[835]&&ot.addClass),children:[n.jsx(Vn,{setAllBlocks:x,allBlocks:f,userRules:p,onChangeBlocks:B,setTourStep:o,tourStep:c,addClass:h,isTourOpen:l}),n.jsx(at,{socket:r,setUserRules:B,userRules:p,isTourOpen:l,setTourStep:o,tourStep:c,name:`${u.I18n.t("when")}...`,typeBlock:"triggers",iconName:"FlashOn",size:h[835],themeType:i,themeName:s,theme:a}),n.jsx(at,{socket:r,setUserRules:B,isTourOpen:l,setTourStep:o,tourStep:c,userRules:p,name:`...${u.I18n.t("and")}...`,typeBlock:"conditions",iconName:"Help",nameAdditionally:u.I18n.t("or"),additionally:!0,border:!0,size:h[835],themeType:i,themeName:s,theme:a}),n.jsx(at,{socket:r,setUserRules:B,isTourOpen:l,setTourStep:o,tourStep:c,userRules:p,name:`...${u.I18n.t("then")}`,typeBlock:"actions",iconName:"PlayForWork",nameAdditionally:u.I18n.t("else"),additionally:!0,size:h[835],themeType:i,themeName:s,theme:a})]})]},"rulesEditor")};export{me as default}; diff --git a/admin/assets/localSharedImportMap-z2-feH7e.js b/admin/assets/localSharedImportMap-Cs4ibnCv.js similarity index 94% rename from admin/assets/localSharedImportMap-z2-feH7e.js rename to admin/assets/localSharedImportMap-Cs4ibnCv.js index 04ced3fd9..2354b709e 100644 --- a/admin/assets/localSharedImportMap-z2-feH7e.js +++ b/admin/assets/localSharedImportMap-Cs4ibnCv.js @@ -1 +1 @@ -import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";const a={"@iobroker/adapter-react-v5":async()=>await import("./index-MJuwtgsO.js"),"@mui/material":async()=>await import("./index-dN73sbyQ.js"),"prop-types":async()=>await import("./index-CVZSzCXy.js").then(t=>t.i),react:async()=>await import("./index-Dsh1HfIY.js").then(t=>t.i),"react-dom":async()=>await import("./index-BkyLyaYT.js").then(t=>t.i)},n={"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.2.7",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/material":{name:"@mui/material",version:"6.5.0",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["@mui/material"].loaded=!0;const{"@mui/material":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"prop-types":{name:"prop-types",version:"15.8.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["prop-types"].loaded=!0;const{"prop-types":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n.react.loaded=!0;const{react:e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dom":{name:"react-dom",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["react-dom"].loaded=!0;const{"react-dom":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}}},u=[];export{u as usedRemotes,n as usedShared}; +import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";const a={"@iobroker/adapter-react-v5":async()=>await import("./index-Be9Zg6aF.js"),"@mui/material":async()=>await import("./index-dN73sbyQ.js"),"prop-types":async()=>await import("./index-CVZSzCXy.js").then(t=>t.i),react:async()=>await import("./index-Dsh1HfIY.js").then(t=>t.i),"react-dom":async()=>await import("./index-BkyLyaYT.js").then(t=>t.i)},n={"@iobroker/adapter-react-v5":{name:"@iobroker/adapter-react-v5",version:"8.2.7",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["@iobroker/adapter-react-v5"].loaded=!0;const{"@iobroker/adapter-react-v5":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"@mui/material":{name:"@mui/material",version:"6.5.0",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["@mui/material"].loaded=!0;const{"@mui/material":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"prop-types":{name:"prop-types",version:"15.8.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["prop-types"].loaded=!0;const{"prop-types":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n.react.loaded=!0;const{react:e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}},"react-dom":{name:"react-dom",version:"18.3.1",scope:["default"],loaded:!1,from:"iobroker_javascript",async get(){n["react-dom"].loaded=!0;const{"react-dom":e}=a,r={...await e()};return Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),function(){return r}},shareConfig:{singleton:!0,requiredVersion:"*"}}},u=[];export{u as usedRemotes,n as usedShared}; diff --git a/admin/assets/stateHoverProvider-BMnu2kWx.js b/admin/assets/stateHoverProvider-wXU4aBfD.js similarity index 99% rename from admin/assets/stateHoverProvider-BMnu2kWx.js rename to admin/assets/stateHoverProvider-wXU4aBfD.js index a1f0715fc..552e780df 100644 --- a/admin/assets/stateHoverProvider-BMnu2kWx.js +++ b/admin/assets/stateHoverProvider-wXU4aBfD.js @@ -1,4 +1,4 @@ -import{_ as Uu}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{o as me}from"./index-AD-ewMW2.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";import"./preload-helper-BDBacUwf.js";import"./createSvgIcon-DYs_tNrE.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js";import"./index-wHNMOf-c.js";import"./inheritsLoose-CIXm_zPk.js";var $a;function g(){return $a.apply(null,arguments)}function Iu(e){$a=e}function ce(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function st(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function F(e,s){return Object.prototype.hasOwnProperty.call(e,s)}function Dr(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var s;for(s in e)if(F(e,s))return!1;return!0}function ee(e){return e===void 0}function je(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function It(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function Za(e,s){var n=[],a,l=e.length;for(a=0;a>>0,a;for(a=0;a0)for(n=0;n>>0,a;for(a=0;a0)for(n=0;n=0;return(d?n?"+":"":"-")+Math.pow(10,Math.max(0,l)).toString().substr(1)+a}var Or=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ds=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,hr={},yt={};function S(e,s,n,a){var l=a;typeof a=="string"&&(l=function(){return this[a]()}),e&&(yt[e]=l),s&&(yt[s[0]]=function(){return De(l.apply(this,arguments),s[1],s[2])}),n&&(yt[n]=function(){return this.localeData().ordinal(l.apply(this,arguments),e)})}function zu(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Gu(e){var s=e.match(Or),n,a;for(n=0,a=s.length;n=0&&ds.test(e);)e=e.replace(ds,a),ds.lastIndex=0,n-=1;return e}var $u={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function Zu(e){var s=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return s||!n?s:(this._longDateFormat[e]=n.match(Or).map(function(a){return a==="MMMM"||a==="MM"||a==="DD"||a==="dddd"?a.slice(1):a}).join(""),this._longDateFormat[e])}var qu="Invalid date";function Ju(){return this._invalidDate}var Bu="%d",Qu=/\d{1,2}/;function Ku(e){return this._ordinal.replace("%d",e)}var Xu={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function ed(e,s,n,a){var l=this._relativeTime[n];return ve(l)?l(e,s,n,a):l.replace(/%d/i,e)}function td(e,s){var n=this._relativeTime[e>0?"future":"past"];return ve(n)?n(s):n.replace(/%s/i,s)}var ja={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function le(e){return typeof e=="string"?ja[e]||ja[e.toLowerCase()]:void 0}function Tr(e){var s={},n,a;for(a in e)F(e,a)&&(n=le(a),n&&(s[n]=e[a]));return s}var sd={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function rd(e){var s=[],n;for(n in e)F(e,n)&&s.push({unit:n,priority:sd[n]});return s.sort(function(a,l){return a.priority-l.priority}),s}var Qa=/\d/,se=/\d\d/,Ka=/\d{3}/,br=/\d{4}/,Ds=/[+-]?\d{6}/,V=/\d\d?/,Xa=/\d\d\d\d?/,en=/\d\d\d\d\d\d?/,Ys=/\d{1,3}/,xr=/\d{1,4}/,vs=/[+-]?\d{1,6}/,gt=/\d+/,Ss=/[+-]?\d+/,ad=/Z|[+-]\d\d:?\d\d/gi,Os=/Z|[+-]\d\d(?::?\d\d)?/gi,nd=/[+-]?\d+(\.\d{1,3})?/,jt=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,kt=/^[1-9]\d?/,Lr=/^([1-9]\d|\d)/,ys;ys={};function D(e,s,n){ys[e]=ve(s)?s:function(a,l){return a&&n?n:s}}function id(e,s){return F(ys,e)?ys[e](s._strict,s._locale):new RegExp(od(e))}function od(e){return Ie(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(s,n,a,l,d){return n||a||l||d}))}function Ie(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function L(e){var s=+e,n=0;return s!==0&&isFinite(s)&&(n=ie(s)),n}var Mr={};function I(e,s){var n,a=s,l;for(typeof e=="string"&&(e=[e]),je(s)&&(a=function(d,f){f[s]=L(d)}),l=e.length,n=0;n68?1900:2e3)};var tn=pt("FullYear",!0);function hd(){return Ts(this.year())}function pt(e,s){return function(n){return n!=null?(sn(this,e,n),g.updateOffset(this,s),this):Ft(this,e)}}function Ft(e,s){if(!e.isValid())return NaN;var n=e._d,a=e._isUTC;switch(s){case"Milliseconds":return a?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return a?n.getUTCSeconds():n.getSeconds();case"Minutes":return a?n.getUTCMinutes():n.getMinutes();case"Hours":return a?n.getUTCHours():n.getHours();case"Date":return a?n.getUTCDate():n.getDate();case"Day":return a?n.getUTCDay():n.getDay();case"Month":return a?n.getUTCMonth():n.getMonth();case"FullYear":return a?n.getUTCFullYear():n.getFullYear();default:return NaN}}function sn(e,s,n){var a,l,d,f,c;if(!(!e.isValid()||isNaN(n))){switch(a=e._d,l=e._isUTC,s){case"Milliseconds":return void(l?a.setUTCMilliseconds(n):a.setMilliseconds(n));case"Seconds":return void(l?a.setUTCSeconds(n):a.setSeconds(n));case"Minutes":return void(l?a.setUTCMinutes(n):a.setMinutes(n));case"Hours":return void(l?a.setUTCHours(n):a.setHours(n));case"Date":return void(l?a.setUTCDate(n):a.setDate(n));case"FullYear":break;default:return}d=n,f=e.month(),c=e.date(),c=c===29&&f===1&&!Ts(d)?28:c,l?a.setUTCFullYear(d,f,c):a.setFullYear(d,f,c)}}function fd(e){return e=le(e),ve(this[e])?this[e]():this}function cd(e,s){if(typeof e=="object"){e=Tr(e);var n=rd(e),a,l=n.length;for(a=0;a=0?(c=new Date(e+400,s,n,a,l,d,f),isFinite(c.getFullYear())&&c.setFullYear(e)):c=new Date(e,s,n,a,l,d,f),c}function Ht(e){var s,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,s=new Date(Date.UTC.apply(null,n)),isFinite(s.getUTCFullYear())&&s.setUTCFullYear(e)):s=new Date(Date.UTC.apply(null,arguments)),s}function Ms(e,s,n){var a=7+s-n,l=(7+Ht(e,0,a).getUTCDay()-s)%7;return-l+a-1}function un(e,s,n,a,l){var d=(7+n-a)%7,f=Ms(e,a,l),c=1+7*(s-1)+d+f,_,y;return c<=0?(_=e-1,y=Rt(_)+c):c>Rt(e)?(_=e+1,y=c-Rt(e)):(_=e,y=c),{year:_,dayOfYear:y}}function Ct(e,s,n){var a=Ms(e.year(),s,n),l=Math.floor((e.dayOfYear()-a-1)/7)+1,d,f;return l<1?(f=e.year()-1,d=l+Ee(f,s,n)):l>Ee(e.year(),s,n)?(d=l-Ee(e.year(),s,n),f=e.year()+1):(f=e.year(),d=l),{week:d,year:f}}function Ee(e,s,n){var a=Ms(e,s,n),l=Ms(e+1,s,n);return(Rt(e)-a+l)/7}S("w",["ww",2],"wo","week");S("W",["WW",2],"Wo","isoWeek");D("w",V,kt);D("ww",V,se);D("W",V,kt);D("WW",V,se);At(["w","ww","W","WW"],function(e,s,n,a){s[a.substr(0,1)]=L(e)});function Od(e){return Ct(e,this._week.dow,this._week.doy).week}var Td={dow:0,doy:6};function bd(){return this._week.dow}function xd(){return this._week.doy}function Ld(e){var s=this.localeData().week(this);return e==null?s:this.add((e-s)*7,"d")}function Wd(e){var s=Ct(this,1,4).week;return e==null?s:this.add((e-s)*7,"d")}S("d",0,"do","day");S("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});S("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});S("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});S("e",0,0,"weekday");S("E",0,0,"isoWeekday");D("d",V);D("e",V);D("E",V);D("dd",function(e,s){return s.weekdaysMinRegex(e)});D("ddd",function(e,s){return s.weekdaysShortRegex(e)});D("dddd",function(e,s){return s.weekdaysRegex(e)});At(["dd","ddd","dddd"],function(e,s,n,a){var l=n._locale.weekdaysParse(e,a,n._strict);l!=null?s.d=l:b(n).invalidWeekday=e});At(["d","e","E"],function(e,s,n,a){s[a]=L(e)});function Pd(e,s){return typeof e!="string"?e:isNaN(e)?(e=s.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function Nd(e,s){return typeof e=="string"?s.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Pr(e,s){return e.slice(s,7).concat(e.slice(0,s))}var Rd="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),dn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Fd="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Hd=jt,Cd=jt,Ud=jt;function Id(e,s){var n=ce(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(s)?"format":"standalone"];return e===!0?Pr(n,this._week.dow):e?n[e.day()]:n}function Ed(e){return e===!0?Pr(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function jd(e){return e===!0?Pr(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Ad(e,s,n){var a,l,d,f=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)d=Ye([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(d,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(d,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(d,"").toLocaleLowerCase();return n?s==="dddd"?(l=Z.call(this._weekdaysParse,f),l!==-1?l:null):s==="ddd"?(l=Z.call(this._shortWeekdaysParse,f),l!==-1?l:null):(l=Z.call(this._minWeekdaysParse,f),l!==-1?l:null):s==="dddd"?(l=Z.call(this._weekdaysParse,f),l!==-1||(l=Z.call(this._shortWeekdaysParse,f),l!==-1)?l:(l=Z.call(this._minWeekdaysParse,f),l!==-1?l:null)):s==="ddd"?(l=Z.call(this._shortWeekdaysParse,f),l!==-1||(l=Z.call(this._weekdaysParse,f),l!==-1)?l:(l=Z.call(this._minWeekdaysParse,f),l!==-1?l:null)):(l=Z.call(this._minWeekdaysParse,f),l!==-1||(l=Z.call(this._weekdaysParse,f),l!==-1)?l:(l=Z.call(this._shortWeekdaysParse,f),l!==-1?l:null))}function Vd(e,s,n){var a,l,d;if(this._weekdaysParseExact)return Ad.call(this,e,s,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(l=Ye([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(l,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(l,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(l,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[a]||(d="^"+this.weekdays(l,"")+"|^"+this.weekdaysShort(l,"")+"|^"+this.weekdaysMin(l,""),this._weekdaysParse[a]=new RegExp(d.replace(".",""),"i")),n&&s==="dddd"&&this._fullWeekdaysParse[a].test(e))return a;if(n&&s==="ddd"&&this._shortWeekdaysParse[a].test(e))return a;if(n&&s==="dd"&&this._minWeekdaysParse[a].test(e))return a;if(!n&&this._weekdaysParse[a].test(e))return a}}function zd(e){if(!this.isValid())return e!=null?this:NaN;var s=Ft(this,"Day");return e!=null?(e=Pd(e,this.localeData()),this.add(e-s,"d")):s}function Gd(e){if(!this.isValid())return e!=null?this:NaN;var s=(this.day()+7-this.localeData()._week.dow)%7;return e==null?s:this.add(e-s,"d")}function $d(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var s=Nd(e,this.localeData());return this.day(this.day()%7?s:s-7)}else return this.day()||7}function Zd(e){return this._weekdaysParseExact?(F(this,"_weekdaysRegex")||Nr.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(F(this,"_weekdaysRegex")||(this._weekdaysRegex=Hd),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function qd(e){return this._weekdaysParseExact?(F(this,"_weekdaysRegex")||Nr.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(F(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Cd),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Jd(e){return this._weekdaysParseExact?(F(this,"_weekdaysRegex")||Nr.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(F(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ud),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Nr(){function e(Y,C){return C.length-Y.length}var s=[],n=[],a=[],l=[],d,f,c,_,y;for(d=0;d<7;d++)f=Ye([2e3,1]).day(d),c=Ie(this.weekdaysMin(f,"")),_=Ie(this.weekdaysShort(f,"")),y=Ie(this.weekdays(f,"")),s.push(c),n.push(_),a.push(y),l.push(c),l.push(_),l.push(y);s.sort(e),n.sort(e),a.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Rr(){return this.hours()%12||12}function Bd(){return this.hours()||24}S("H",["HH",2],0,"hour");S("h",["hh",2],0,Rr);S("k",["kk",2],0,Bd);S("hmm",0,0,function(){return""+Rr.apply(this)+De(this.minutes(),2)});S("hmmss",0,0,function(){return""+Rr.apply(this)+De(this.minutes(),2)+De(this.seconds(),2)});S("Hmm",0,0,function(){return""+this.hours()+De(this.minutes(),2)});S("Hmmss",0,0,function(){return""+this.hours()+De(this.minutes(),2)+De(this.seconds(),2)});function hn(e,s){S(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),s)})}hn("a",!0);hn("A",!1);function fn(e,s){return s._meridiemParse}D("a",fn);D("A",fn);D("H",V,Lr);D("h",V,kt);D("k",V,kt);D("HH",V,se);D("hh",V,se);D("kk",V,se);D("hmm",Xa);D("hmmss",en);D("Hmm",Xa);D("Hmmss",en);I(["H","HH"],J);I(["k","kk"],function(e,s,n){var a=L(e);s[J]=a===24?0:a});I(["a","A"],function(e,s,n){n._isPm=n._locale.isPM(e),n._meridiem=e});I(["h","hh"],function(e,s,n){s[J]=L(e),b(n).bigHour=!0});I("hmm",function(e,s,n){var a=e.length-2;s[J]=L(e.substr(0,a)),s[fe]=L(e.substr(a)),b(n).bigHour=!0});I("hmmss",function(e,s,n){var a=e.length-4,l=e.length-2;s[J]=L(e.substr(0,a)),s[fe]=L(e.substr(a,2)),s[Ue]=L(e.substr(l)),b(n).bigHour=!0});I("Hmm",function(e,s,n){var a=e.length-2;s[J]=L(e.substr(0,a)),s[fe]=L(e.substr(a))});I("Hmmss",function(e,s,n){var a=e.length-4,l=e.length-2;s[J]=L(e.substr(0,a)),s[fe]=L(e.substr(a,2)),s[Ue]=L(e.substr(l))});function Qd(e){return(e+"").toLowerCase().charAt(0)==="p"}var Kd=/[ap]\.?m?\.?/i,Xd=pt("Hours",!0);function eh(e,s,n){return e>11?n?"pm":"PM":n?"am":"AM"}var cn={calendar:Au,longDateFormat:$u,invalidDate:qu,ordinal:Bu,dayOfMonthOrdinalParse:Qu,relativeTime:Xu,months:md,monthsShort:rn,week:Td,weekdays:Rd,weekdaysMin:Fd,weekdaysShort:dn,meridiemParse:Kd},G={},Pt={},Ut;function th(e,s){var n,a=Math.min(e.length,s.length);for(n=0;n0;){if(l=bs(d.slice(0,n).join("-")),l)return l;if(a&&a.length>=n&&th(d,a)>=n-1)break;n--}s++}return Ut}function rh(e){return!!(e&&e.match("^[^/\\\\]*$"))}function bs(e){var s=null,n;if(G[e]===void 0&&typeof module<"u"&&module&&module.exports&&rh(e))try{s=Ut._abbr,n=require,n("./locale/"+e),Be(s)}catch{G[e]=null}return G[e]}function Be(e,s){var n;return e&&(ee(s)?n=Ae(e):n=Fr(e,s),n?Ut=n:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Ut._abbr}function Fr(e,s){if(s!==null){var n,a=cn;if(s.abbr=e,G[e]!=null)Ja("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),a=G[e]._config;else if(s.parentLocale!=null)if(G[s.parentLocale]!=null)a=G[s.parentLocale]._config;else if(n=bs(s.parentLocale),n!=null)a=n._config;else return Pt[s.parentLocale]||(Pt[s.parentLocale]=[]),Pt[s.parentLocale].push({name:e,config:s}),null;return G[e]=new Sr(mr(a,s)),Pt[e]&&Pt[e].forEach(function(l){Fr(l.name,l.config)}),Be(e),G[e]}else return delete G[e],null}function ah(e,s){if(s!=null){var n,a,l=cn;G[e]!=null&&G[e].parentLocale!=null?G[e].set(mr(G[e]._config,s)):(a=bs(e),a!=null&&(l=a._config),s=mr(l,s),a==null&&(s.abbr=e),n=new Sr(s),n.parentLocale=G[e],G[e]=n),Be(e)}else G[e]!=null&&(G[e].parentLocale!=null?(G[e]=G[e].parentLocale,e===Be()&&Be(e)):G[e]!=null&&delete G[e]);return G[e]}function Ae(e){var s;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Ut;if(!ce(e)){if(s=bs(e),s)return s;e=[e]}return sh(e)}function nh(){return yr(G)}function Hr(e){var s,n=e._a;return n&&b(e).overflow===-2&&(s=n[Ce]<0||n[Ce]>11?Ce:n[pe]<1||n[pe]>Wr(n[K],n[Ce])?pe:n[J]<0||n[J]>24||n[J]===24&&(n[fe]!==0||n[Ue]!==0||n[tt]!==0)?J:n[fe]<0||n[fe]>59?fe:n[Ue]<0||n[Ue]>59?Ue:n[tt]<0||n[tt]>999?tt:-1,b(e)._overflowDayOfYear&&(spe)&&(s=pe),b(e)._overflowWeeks&&s===-1&&(s=ud),b(e)._overflowWeekday&&s===-1&&(s=dd),b(e).overflow=s),e}var ih=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,oh=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,lh=/Z|[+-]\d\d(?::?\d\d)?/,hs=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],fr=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],uh=/^\/?Date\((-?\d+)/i,dh=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,hh={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function _n(e){var s,n,a=e._i,l=ih.exec(a)||oh.exec(a),d,f,c,_,y=hs.length,Y=fr.length;if(l){for(b(e).iso=!0,s=0,n=y;sRt(f)||e._dayOfYear===0)&&(b(e)._overflowDayOfYear=!0),n=Ht(f,0,e._dayOfYear),e._a[Ce]=n.getUTCMonth(),e._a[pe]=n.getUTCDate()),s=0;s<3&&e._a[s]==null;++s)e._a[s]=a[s]=l[s];for(;s<7;s++)e._a[s]=a[s]=e._a[s]==null?s===2?1:0:e._a[s];e._a[J]===24&&e._a[fe]===0&&e._a[Ue]===0&&e._a[tt]===0&&(e._nextDay=!0,e._a[J]=0),e._d=(e._useUTC?Ht:Sd).apply(null,a),d=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[J]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==d&&(b(e).weekdayMismatch=!0)}}function gh(e){var s,n,a,l,d,f,c,_,y;s=e._w,s.GG!=null||s.W!=null||s.E!=null?(d=1,f=4,n=_t(s.GG,e._a[K],Ct(A(),1,4).year),a=_t(s.W,1),l=_t(s.E,1),(l<1||l>7)&&(_=!0)):(d=e._locale._week.dow,f=e._locale._week.doy,y=Ct(A(),d,f),n=_t(s.gg,e._a[K],y.year),a=_t(s.w,y.week),s.d!=null?(l=s.d,(l<0||l>6)&&(_=!0)):s.e!=null?(l=s.e+d,(s.e<0||s.e>6)&&(_=!0)):l=d),a<1||a>Ee(n,d,f)?b(e)._overflowWeeks=!0:_!=null?b(e)._overflowWeekday=!0:(c=un(n,a,l,d,f),e._a[K]=c.year,e._dayOfYear=c.dayOfYear)}g.ISO_8601=function(){};g.RFC_2822=function(){};function Ur(e){if(e._f===g.ISO_8601){_n(e);return}if(e._f===g.RFC_2822){mn(e);return}e._a=[],b(e).empty=!0;var s=""+e._i,n,a,l,d,f,c=s.length,_=0,y,Y;for(l=Ba(e._f,e._locale).match(Or)||[],Y=l.length,n=0;n0&&b(e).unusedInput.push(f),s=s.slice(s.indexOf(a)+a.length),_+=a.length),yt[d]?(a?b(e).empty=!1:b(e).unusedTokens.push(d),ld(d,a,e)):e._strict&&!a&&b(e).unusedTokens.push(d);b(e).charsLeftOver=c-_,s.length>0&&b(e).unusedInput.push(s),e._a[J]<=12&&b(e).bigHour===!0&&e._a[J]>0&&(b(e).bigHour=void 0),b(e).parsedDateParts=e._a.slice(0),b(e).meridiem=e._meridiem,e._a[J]=kh(e._locale,e._a[J],e._meridiem),y=b(e).era,y!==null&&(e._a[K]=e._locale.erasConvertYear(y,e._a[K])),Cr(e),Hr(e)}function kh(e,s,n){var a;return n==null?s:e.meridiemHour!=null?e.meridiemHour(s,n):(e.isPM!=null&&(a=e.isPM(n),a&&s<12&&(s+=12),!a&&s===12&&(s=0)),s)}function ph(e){var s,n,a,l,d,f,c=!1,_=e._f.length;if(_===0){b(e).invalidFormat=!0,e._d=new Date(NaN);return}for(l=0;l<_;l++)d=0,f=!1,s=vr({},e),e._useUTC!=null&&(s._useUTC=e._useUTC),s._f=e._f[l],Ur(s),Yr(s)&&(f=!0),d+=b(s).charsLeftOver,d+=b(s).unusedTokens.length*10,b(s).score=d,c?dthis?this:e:ps()});function wn(e,s){var n,a;if(s.length===1&&ce(s[0])&&(s=s[0]),!s.length)return A();for(n=s[0],a=1;athis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ah(){if(!ee(this._isDSTShifted))return this._isDSTShifted;var e={},s;return vr(e,this),e=yn(e),e._a?(s=e._isUTC?Ye(e._a):A(e._a),this._isDSTShifted=this.isValid()&&Nh(e._a,s.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Vh(){return this.isValid()?!this._isUTC:!1}function zh(){return this.isValid()?this._isUTC:!1}function kn(){return this.isValid()?this._isUTC&&this._offset===0:!1}var Gh=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,$h=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function ye(e,s){var n=e,a=null,l,d,f;return cs(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:je(e)||!isNaN(+e)?(n={},s?n[s]=+e:n.milliseconds=+e):(a=Gh.exec(e))?(l=a[1]==="-"?-1:1,n={y:0,d:L(a[pe])*l,h:L(a[J])*l,m:L(a[fe])*l,s:L(a[Ue])*l,ms:L(wr(a[tt]*1e3))*l}):(a=$h.exec(e))?(l=a[1]==="-"?-1:1,n={y:et(a[2],l),M:et(a[3],l),w:et(a[4],l),d:et(a[5],l),h:et(a[6],l),m:et(a[7],l),s:et(a[8],l)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(f=Zh(A(n.from),A(n.to)),n={},n.ms=f.milliseconds,n.M=f.months),d=new xs(n),cs(e)&&F(e,"_locale")&&(d._locale=e._locale),cs(e)&&F(e,"_isValid")&&(d._isValid=e._isValid),d}ye.fn=xs.prototype;ye.invalid=Ph;function et(e,s){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*s}function Va(e,s){var n={};return n.months=s.month()-e.month()+(s.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(s)&&--n.months,n.milliseconds=+s-+e.clone().add(n.months,"M"),n}function Zh(e,s){var n;return e.isValid()&&s.isValid()?(s=Er(s,e),e.isBefore(s)?n=Va(e,s):(n=Va(s,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function pn(e,s){return function(n,a){var l,d;return a!==null&&!isNaN(+a)&&(Ja(s,"moment()."+s+"(period, number) is deprecated. Please use moment()."+s+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),d=n,n=a,a=d),l=ye(n,a),Dn(this,l,e),this}}function Dn(e,s,n,a){var l=s._milliseconds,d=wr(s._days),f=wr(s._months);e.isValid()&&(a=a??!0,f&&nn(e,Ft(e,"Month")+f*n),d&&sn(e,"Date",Ft(e,"Date")+d*n),l&&e._d.setTime(e._d.valueOf()+l*n),a&&g.updateOffset(e,d||f))}var qh=pn(1,"add"),Jh=pn(-1,"subtract");function Yn(e){return typeof e=="string"||e instanceof String}function Bh(e){return _e(e)||It(e)||Yn(e)||je(e)||Kh(e)||Qh(e)||e===null||e===void 0}function Qh(e){var s=st(e)&&!Dr(e),n=!1,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],l,d,f=a.length;for(l=0;ln.valueOf():n.valueOf()9999?fs(n,s?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):ve(Date.prototype.toISOString)?s?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",fs(n,"Z")):fs(n,s?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function cf(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",s="",n,a,l,d;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",s="Z"),n="["+e+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",l="-MM-DD[T]HH:mm:ss.SSS",d=s+'[")]',this.format(n+a+l+d)}function _f(e){e||(e=this.isUtc()?g.defaultFormatUtc:g.defaultFormat);var s=fs(this,e);return this.localeData().postformat(s)}function mf(e,s){return this.isValid()&&(_e(e)&&e.isValid()||A(e).isValid())?ye({to:this,from:e}).locale(this.locale()).humanize(!s):this.localeData().invalidDate()}function yf(e){return this.from(A(),e)}function Mf(e,s){return this.isValid()&&(_e(e)&&e.isValid()||A(e).isValid())?ye({from:this,to:e}).locale(this.locale()).humanize(!s):this.localeData().invalidDate()}function wf(e){return this.to(A(),e)}function vn(e){var s;return e===void 0?this._locale._abbr:(s=Ae(e),s!=null&&(this._locale=s),this)}var Sn=oe("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function On(){return this._locale}var ws=1e3,Mt=60*ws,gs=60*Mt,Tn=(365*400+97)*24*gs;function wt(e,s){return(e%s+s)%s}function bn(e,s,n){return e<100&&e>=0?new Date(e+400,s,n)-Tn:new Date(e,s,n).valueOf()}function xn(e,s,n){return e<100&&e>=0?Date.UTC(e+400,s,n)-Tn:Date.UTC(e,s,n)}function gf(e){var s,n;if(e=le(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?xn:bn,e){case"year":s=n(this.year(),0,1);break;case"quarter":s=n(this.year(),this.month()-this.month()%3,1);break;case"month":s=n(this.year(),this.month(),1);break;case"week":s=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":s=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":s=n(this.year(),this.month(),this.date());break;case"hour":s=this._d.valueOf(),s-=wt(s+(this._isUTC?0:this.utcOffset()*Mt),gs);break;case"minute":s=this._d.valueOf(),s-=wt(s,Mt);break;case"second":s=this._d.valueOf(),s-=wt(s,ws);break}return this._d.setTime(s),g.updateOffset(this,!0),this}function kf(e){var s,n;if(e=le(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?xn:bn,e){case"year":s=n(this.year()+1,0,1)-1;break;case"quarter":s=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":s=n(this.year(),this.month()+1,1)-1;break;case"week":s=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":s=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":s=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":s=this._d.valueOf(),s+=gs-wt(s+(this._isUTC?0:this.utcOffset()*Mt),gs)-1;break;case"minute":s=this._d.valueOf(),s+=Mt-wt(s,Mt)-1;break;case"second":s=this._d.valueOf(),s+=ws-wt(s,ws)-1;break}return this._d.setTime(s),g.updateOffset(this,!0),this}function pf(){return this._d.valueOf()-(this._offset||0)*6e4}function Df(){return Math.floor(this.valueOf()/1e3)}function Yf(){return new Date(this.valueOf())}function vf(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Sf(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Of(){return this.isValid()?this.toISOString():null}function Tf(){return Yr(this)}function bf(){return qe({},b(this))}function xf(){return b(this).overflow}function Lf(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}S("N",0,0,"eraAbbr");S("NN",0,0,"eraAbbr");S("NNN",0,0,"eraAbbr");S("NNNN",0,0,"eraName");S("NNNNN",0,0,"eraNarrow");S("y",["y",1],"yo","eraYear");S("y",["yy",2],0,"eraYear");S("y",["yyy",3],0,"eraYear");S("y",["yyyy",4],0,"eraYear");D("N",jr);D("NN",jr);D("NNN",jr);D("NNNN",jf);D("NNNNN",Af);I(["N","NN","NNN","NNNN","NNNNN"],function(e,s,n,a){var l=n._locale.erasParse(e,a,n._strict);l?b(n).era=l:b(n).invalidEra=e});D("y",gt);D("yy",gt);D("yyy",gt);D("yyyy",gt);D("yo",Vf);I(["y","yy","yyy","yyyy"],K);I(["yo"],function(e,s,n,a){var l;n._locale._eraYearOrdinalRegex&&(l=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?s[K]=n._locale.eraYearOrdinalParse(e,l):s[K]=parseInt(e,10)});function Wf(e,s){var n,a,l,d=this._eras||Ae("en")._eras;for(n=0,a=d.length;n=0)return d[a]}function Nf(e,s){var n=e.since<=e.until?1:-1;return s===void 0?g(e.since).year():g(e.since).year()+(s-e.offset)*n}function Rf(){var e,s,n,a=this.localeData().eras();for(e=0,s=a.length;ed&&(s=d),Bf.call(this,e,s,n,a,l))}function Bf(e,s,n,a,l){var d=un(e,s,n,a,l),f=Ht(d.year,0,d.dayOfYear);return this.year(f.getUTCFullYear()),this.month(f.getUTCMonth()),this.date(f.getUTCDate()),this}S("Q",0,"Qo","quarter");D("Q",Qa);I("Q",function(e,s){s[Ce]=(L(e)-1)*3});function Qf(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}S("D",["DD",2],"Do","date");D("D",V,kt);D("DD",V,se);D("Do",function(e,s){return e?s._dayOfMonthOrdinalParse||s._ordinalParse:s._dayOfMonthOrdinalParseLenient});I(["D","DD"],pe);I("Do",function(e,s){s[pe]=L(e.match(V)[0])});var Wn=pt("Date",!0);S("DDD",["DDDD",3],"DDDo","dayOfYear");D("DDD",Ys);D("DDDD",Ka);I(["DDD","DDDD"],function(e,s,n){n._dayOfYear=L(e)});function Kf(e){var s=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?s:this.add(e-s,"d")}S("m",["mm",2],0,"minute");D("m",V,Lr);D("mm",V,se);I(["m","mm"],fe);var Xf=pt("Minutes",!1);S("s",["ss",2],0,"second");D("s",V,Lr);D("ss",V,se);I(["s","ss"],Ue);var ec=pt("Seconds",!1);S("S",0,0,function(){return~~(this.millisecond()/100)});S(0,["SS",2],0,function(){return~~(this.millisecond()/10)});S(0,["SSS",3],0,"millisecond");S(0,["SSSS",4],0,function(){return this.millisecond()*10});S(0,["SSSSS",5],0,function(){return this.millisecond()*100});S(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});S(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});S(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});S(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});D("S",Ys,Qa);D("SS",Ys,se);D("SSS",Ys,Ka);var Je,Pn;for(Je="SSSS";Je.length<=9;Je+="S")D(Je,gt);function tc(e,s){s[tt]=L(("0."+e)*1e3)}for(Je="S";Je.length<=9;Je+="S")I(Je,tc);Pn=pt("Milliseconds",!1);S("z",0,0,"zoneAbbr");S("zz",0,0,"zoneName");function sc(){return this._isUTC?"UTC":""}function rc(){return this._isUTC?"Coordinated Universal Time":""}var w=Et.prototype;w.add=qh;w.calendar=tf;w.clone=sf;w.diff=df;w.endOf=kf;w.format=_f;w.from=mf;w.fromNow=yf;w.to=Mf;w.toNow=wf;w.get=fd;w.invalidAt=xf;w.isAfter=rf;w.isBefore=af;w.isBetween=nf;w.isSame=of;w.isSameOrAfter=lf;w.isSameOrBefore=uf;w.isValid=Tf;w.lang=Sn;w.locale=vn;w.localeData=On;w.max=Oh;w.min=Sh;w.parsingFlags=bf;w.set=cd;w.startOf=gf;w.subtract=Jh;w.toArray=vf;w.toObject=Sf;w.toDate=Yf;w.toISOString=ff;w.inspect=cf;typeof Symbol<"u"&&Symbol.for!=null&&(w[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});w.toJSON=Of;w.toString=hf;w.unix=Df;w.valueOf=pf;w.creationData=Lf;w.eraName=Rf;w.eraNarrow=Ff;w.eraAbbr=Hf;w.eraYear=Cf;w.year=tn;w.isLeapYear=hd;w.weekYear=zf;w.isoWeekYear=Gf;w.quarter=w.quarters=Qf;w.month=on;w.daysInMonth=Dd;w.week=w.weeks=Ld;w.isoWeek=w.isoWeeks=Wd;w.weeksInYear=qf;w.weeksInWeekYear=Jf;w.isoWeeksInYear=$f;w.isoWeeksInISOWeekYear=Zf;w.date=Wn;w.day=w.days=zd;w.weekday=Gd;w.isoWeekday=$d;w.dayOfYear=Kf;w.hour=w.hours=Xd;w.minute=w.minutes=Xf;w.second=w.seconds=ec;w.millisecond=w.milliseconds=Pn;w.utcOffset=Fh;w.utc=Ch;w.local=Uh;w.parseZone=Ih;w.hasAlignedHourOffset=Eh;w.isDST=jh;w.isLocal=Vh;w.isUtcOffset=zh;w.isUtc=kn;w.isUTC=kn;w.zoneAbbr=sc;w.zoneName=rc;w.dates=oe("dates accessor is deprecated. Use date instead.",Wn);w.months=oe("months accessor is deprecated. Use month instead",on);w.years=oe("years accessor is deprecated. Use year instead",tn);w.zone=oe("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Hh);w.isDSTShifted=oe("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ah);function ac(e){return A(e*1e3)}function nc(){return A.apply(null,arguments).parseZone()}function Nn(e){return e}var H=Sr.prototype;H.calendar=Vu;H.longDateFormat=Zu;H.invalidDate=Ju;H.ordinal=Ku;H.preparse=Nn;H.postformat=Nn;H.relativeTime=ed;H.pastFuture=td;H.set=ju;H.eras=Wf;H.erasParse=Pf;H.erasConvertYear=Nf;H.erasAbbrRegex=If;H.erasNameRegex=Uf;H.erasNarrowRegex=Ef;H.months=wd;H.monthsShort=gd;H.monthsParse=pd;H.monthsRegex=vd;H.monthsShortRegex=Yd;H.week=Od;H.firstDayOfYear=xd;H.firstDayOfWeek=bd;H.weekdays=Id;H.weekdaysMin=jd;H.weekdaysShort=Ed;H.weekdaysParse=Vd;H.weekdaysRegex=Zd;H.weekdaysShortRegex=qd;H.weekdaysMinRegex=Jd;H.isPM=Qd;H.meridiem=eh;function ks(e,s,n,a){var l=Ae(),d=Ye().set(a,s);return l[n](d,e)}function Rn(e,s,n){if(je(e)&&(s=e,e=void 0),e=e||"",s!=null)return ks(e,s,n,"month");var a,l=[];for(a=0;a<12;a++)l[a]=ks(e,a,n,"month");return l}function Vr(e,s,n,a){typeof e=="boolean"?(je(s)&&(n=s,s=void 0),s=s||""):(s=e,n=s,e=!1,je(s)&&(n=s,s=void 0),s=s||"");var l=Ae(),d=e?l._week.dow:0,f,c=[];if(n!=null)return ks(s,(n+d)%7,a,"day");for(f=0;f<7;f++)c[f]=ks(s,(f+d)%7,a,"day");return c}function ic(e,s){return Rn(e,s,"months")}function oc(e,s){return Rn(e,s,"monthsShort")}function lc(e,s,n){return Vr(e,s,n,"weekdays")}function uc(e,s,n){return Vr(e,s,n,"weekdaysShort")}function dc(e,s,n){return Vr(e,s,n,"weekdaysMin")}Be("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var s=e%10,n=L(e%100/10)===1?"th":s===1?"st":s===2?"nd":s===3?"rd":"th";return e+n}});g.lang=oe("moment.lang is deprecated. Use moment.locale instead.",Be);g.langData=oe("moment.langData is deprecated. Use moment.localeData instead.",Ae);var Fe=Math.abs;function hc(){var e=this._data;return this._milliseconds=Fe(this._milliseconds),this._days=Fe(this._days),this._months=Fe(this._months),e.milliseconds=Fe(e.milliseconds),e.seconds=Fe(e.seconds),e.minutes=Fe(e.minutes),e.hours=Fe(e.hours),e.months=Fe(e.months),e.years=Fe(e.years),this}function Fn(e,s,n,a){var l=ye(s,n);return e._milliseconds+=a*l._milliseconds,e._days+=a*l._days,e._months+=a*l._months,e._bubble()}function fc(e,s){return Fn(this,e,s,1)}function cc(e,s){return Fn(this,e,s,-1)}function za(e){return e<0?Math.floor(e):Math.ceil(e)}function _c(){var e=this._milliseconds,s=this._days,n=this._months,a=this._data,l,d,f,c,_;return e>=0&&s>=0&&n>=0||e<=0&&s<=0&&n<=0||(e+=za(kr(n)+s)*864e5,s=0,n=0),a.milliseconds=e%1e3,l=ie(e/1e3),a.seconds=l%60,d=ie(l/60),a.minutes=d%60,f=ie(d/60),a.hours=f%24,s+=ie(f/24),_=ie(Hn(s)),n+=_,s-=za(kr(_)),c=ie(n/12),n%=12,a.days=s,a.months=n,a.years=c,this}function Hn(e){return e*4800/146097}function kr(e){return e*146097/4800}function mc(e){if(!this.isValid())return NaN;var s,n,a=this._milliseconds;if(e=le(e),e==="month"||e==="quarter"||e==="year")switch(s=this._days+a/864e5,n=this._months+Hn(s),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(s=this._days+Math.round(kr(this._months)),e){case"week":return s/7+a/6048e5;case"day":return s+a/864e5;case"hour":return s*24+a/36e5;case"minute":return s*1440+a/6e4;case"second":return s*86400+a/1e3;case"millisecond":return Math.floor(s*864e5)+a;default:throw new Error("Unknown unit "+e)}}function Ve(e){return function(){return this.as(e)}}var Cn=Ve("ms"),yc=Ve("s"),Mc=Ve("m"),wc=Ve("h"),gc=Ve("d"),kc=Ve("w"),pc=Ve("M"),Dc=Ve("Q"),Yc=Ve("y"),vc=Cn;function Sc(){return ye(this)}function Oc(e){return e=le(e),this.isValid()?this[e+"s"]():NaN}function rt(e){return function(){return this.isValid()?this._data[e]:NaN}}var Tc=rt("milliseconds"),bc=rt("seconds"),xc=rt("minutes"),Lc=rt("hours"),Wc=rt("days"),Pc=rt("months"),Nc=rt("years");function Rc(){return ie(this.days()/7)}var He=Math.round,mt={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Fc(e,s,n,a,l){return l.relativeTime(s||1,!!n,e,a)}function Hc(e,s,n,a){var l=ye(e).abs(),d=He(l.as("s")),f=He(l.as("m")),c=He(l.as("h")),_=He(l.as("d")),y=He(l.as("M")),Y=He(l.as("w")),C=He(l.as("y")),B=d<=n.ss&&["s",d]||d0,B[4]=a,Fc.apply(null,B)}function Cc(e){return e===void 0?He:typeof e=="function"?(He=e,!0):!1}function Uc(e,s){return mt[e]===void 0?!1:s===void 0?mt[e]:(mt[e]=s,e==="s"&&(mt.ss=s-1),!0)}function Ic(e,s){if(!this.isValid())return this.localeData().invalidDate();var n=!1,a=mt,l,d;return typeof e=="object"&&(s=e,e=!1),typeof e=="boolean"&&(n=e),typeof s=="object"&&(a=Object.assign({},mt,s),s.s!=null&&s.ss==null&&(a.ss=s.s-1)),l=this.localeData(),d=Hc(this,!n,a,l),n&&(d=l.pastFuture(+this,d)),l.postformat(d)}var cr=Math.abs;function ct(e){return(e>0)-(e<0)||+e}function Ws(){if(!this.isValid())return this.localeData().invalidDate();var e=cr(this._milliseconds)/1e3,s=cr(this._days),n=cr(this._months),a,l,d,f,c=this.asSeconds(),_,y,Y,C;return c?(a=ie(e/60),l=ie(a/60),e%=60,a%=60,d=ie(n/12),n%=12,f=e?e.toFixed(3).replace(/\.?0+$/,""):"",_=c<0?"-":"",y=ct(this._months)!==ct(c)?"-":"",Y=ct(this._days)!==ct(c)?"-":"",C=ct(this._milliseconds)!==ct(c)?"-":"",_+"P"+(d?y+d+"Y":"")+(n?y+n+"M":"")+(s?Y+s+"D":"")+(l||a||e?"T":"")+(l?C+l+"H":"")+(a?C+a+"M":"")+(e?C+f+"S":"")):"P0D"}var N=xs.prototype;N.isValid=Wh;N.abs=hc;N.add=fc;N.subtract=cc;N.as=mc;N.asMilliseconds=Cn;N.asSeconds=yc;N.asMinutes=Mc;N.asHours=wc;N.asDays=gc;N.asWeeks=kc;N.asMonths=pc;N.asQuarters=Dc;N.asYears=Yc;N.valueOf=vc;N._bubble=_c;N.clone=Sc;N.get=Oc;N.milliseconds=Tc;N.seconds=bc;N.minutes=xc;N.hours=Lc;N.days=Wc;N.weeks=Rc;N.months=Pc;N.years=Nc;N.humanize=Ic;N.toISOString=Ws;N.toString=Ws;N.toJSON=Ws;N.locale=vn;N.localeData=On;N.toIsoString=oe("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ws);N.lang=Sn;S("X",0,0,"unix");S("x",0,0,"valueOf");D("x",Ss);D("X",nd);I("X",function(e,s,n){n._d=new Date(parseFloat(e)*1e3)});I("x",function(e,s,n){n._d=new Date(L(e))});g.version="2.30.1";Iu(A);g.fn=w;g.min=Th;g.max=bh;g.now=xh;g.utc=Ye;g.unix=ac;g.months=ic;g.isDate=It;g.locale=Be;g.invalid=ps;g.duration=ye;g.isMoment=_e;g.weekdays=lc;g.parseZone=nc;g.localeData=Ae;g.isDuration=cs;g.monthsShort=oc;g.weekdaysMin=dc;g.defineLocale=Fr;g.updateLocale=ah;g.locales=nh;g.weekdaysShort=uc;g.normalizeUnits=le;g.relativeTimeRounding=Cc;g.relativeTimeThreshold=Uc;g.calendarFormat=ef;g.prototype=w;g.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};var Ec={exports:{}},ms={exports:{}},jc=ms.exports,Ga;function Se(){return Ga||(Ga=1,(function(e,s){(function(n,a){e.exports=a()})(jc,(function(){var n;function a(){return n.apply(null,arguments)}function l(t){n=t}function d(t){return t instanceof Array||Object.prototype.toString.call(t)==="[object Array]"}function f(t){return t!=null&&Object.prototype.toString.call(t)==="[object Object]"}function c(t,r){return Object.prototype.hasOwnProperty.call(t,r)}function _(t){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(t).length===0;var r;for(r in t)if(c(t,r))return!1;return!0}function y(t){return t===void 0}function Y(t){return typeof t=="number"||Object.prototype.toString.call(t)==="[object Number]"}function C(t){return t instanceof Date||Object.prototype.toString.call(t)==="[object Date]"}function B(t,r){var i=[],o,u=t.length;for(o=0;o>>0,o;for(o=0;o0)for(i=0;ii.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./localSharedImportMap-Cs4ibnCv.js","./preload-helper-BDBacUwf.js"])))=>i.map(i=>d[i]); import{_ as sr}from"./preload-helper-BDBacUwf.js";var ir={},ar={},Tt={},M={},D={},P={};const ln="federation-manifest.json",cn=".json",un="FEDERATION_DEBUG",j={AT:"@",HYPHEN:"-",SLASH:"/"},De={[j.AT]:"scope_",[j.HYPHEN]:"_",[j.SLASH]:"__"},fn={[De[j.AT]]:j.AT,[De[j.HYPHEN]]:j.HYPHEN,[De[j.SLASH]]:j.SLASH},dn=":",hn="mf-manifest.json",mn="mf-stats.json",_n={NPM:"npm",APP:"app"},gn="__MF_DEVTOOLS_MODULE_INFO__",pn="ENCODE_NAME_PREFIX",yn=".federation",En={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};let Sn=(function(e){return e[e.UNKNOWN=1]="UNKNOWN",e[e.CALCULATED=2]="CALCULATED",e[e.NO_USE=0]="NO_USE",e})({});P.BROWSER_LOG_KEY=un;P.ENCODE_NAME_PREFIX=pn;P.EncodedNameTransformMap=fn;P.FederationModuleManifest=ln;P.MANIFEST_EXT=cn;P.MFModuleType=_n;P.MFPrefetchCommon=En;P.MODULE_DEVTOOL_IDENTIFIER=gn;P.ManifestFileName=hn;P.NameTransformMap=De;P.NameTransformSymbol=j;P.SEPARATOR=dn;P.StatsFileName=mn;P.TEMP_DIR=yn;P.TreeShakingStatus=Sn;var lr={},re={},kt=Object.defineProperty,bn=(e,t)=>{let r={};for(var n in e)kt(r,n,{get:e[n],enumerable:!0});return t||kt(r,Symbol.toStringTag,{value:"Module"}),r};re.__exportAll=bn;(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ContainerPlugin_exports",{enumerable:!0,get:function(){return r}})})(lr);var cr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ContainerReferencePlugin_exports",{enumerable:!0,get:function(){return r}})})(cr);var ur={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ModuleFederationPlugin_exports",{enumerable:!0,get:function(){return r}})})(ur);var fr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"SharePlugin_exports",{enumerable:!0,get:function(){return r}})})(fr);var dr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ConsumeSharedPlugin_exports",{enumerable:!0,get:function(){return r}})})(dr);var hr={};(function(e){var r=re.__exportAll({});Object.defineProperty(e,"ProvideSharedPlugin_exports",{enumerable:!0,get:function(){return r}})})(hr);var J={},be={};const Rn=P,mr=!0;function _r(){return mr}function Tn(){return typeof navigator<"u"&&(navigator==null?void 0:navigator.product)==="ReactNative"}function In(){try{if(_r()&&window.localStorage)return!!localStorage.getItem(Rn.BROWSER_LOG_KEY)}catch{return!1}return!1}function $n(){return typeof process<"u"&&be&&be.FEDERATION_DEBUG?!!be.FEDERATION_DEBUG:typeof FEDERATION_DEBUG<"u"&&FEDERATION_DEBUG?!0:In()}const Nn=function(){return typeof process<"u"&&be?be:{}};J.getProcessEnv=Nn;J.isBrowserEnv=_r;J.isBrowserEnvValue=mr;J.isDebugMode=$n;J.isReactNativeEnv=Tn;var H={};const S=P,dt=J,gr="[ Federation Runtime ]",Mn=(e,t,r=S.SEPARATOR)=>{const n=e.split(r),o=dt.getProcessEnv().NODE_ENV==="development"&&t,s="*",i=a=>a.startsWith("http")||a.includes(S.MANIFEST_EXT);if(n.length>=2){let[a,...c]=n;e.startsWith(r)&&(a=n.slice(0,2).join(r),c=[o||n.slice(2).join(r)]);let l=o||c.join(r);return i(l)?{name:a,entry:l}:{name:a,version:l||s}}else if(n.length===1){const[a]=n;return o&&i(o)?{name:a,entry:o}:{name:a,version:o||s}}else throw`Invalid entry value: ${e}`},Pn=function(...e){return e.length?e.reduce((t,r)=>r?t?`${t}${S.SEPARATOR}${r}`:r:t,""):""},It=function(e,t="",r=!1){try{const n=r?".js":"";return`${t}${e.replace(new RegExp(`${S.NameTransformSymbol.AT}`,"g"),S.NameTransformMap[S.NameTransformSymbol.AT]).replace(new RegExp(`${S.NameTransformSymbol.HYPHEN}`,"g"),S.NameTransformMap[S.NameTransformSymbol.HYPHEN]).replace(new RegExp(`${S.NameTransformSymbol.SLASH}`,"g"),S.NameTransformMap[S.NameTransformSymbol.SLASH])}${n}`}catch(n){throw n}},vn=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(new RegExp(t,"g"),"")}return n=n.replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.AT]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.AT]]).replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.SLASH]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.SLASH]]).replace(new RegExp(`${S.NameTransformMap[S.NameTransformSymbol.HYPHEN]}`,"g"),S.EncodedNameTransformMap[S.NameTransformMap[S.NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(n){throw n}},An=(e,t)=>{if(!e)return"";let r=e;return r==="."&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),It(r,"__federation_expose_",t)},kn=(e,t)=>e?It(e,"__federation_shared_",t):"",On=(e,t)=>{if("getPublicPath"in e){let r;return e.getPublicPath.startsWith("function")?r=new Function("return "+e.getPublicPath)()():r=new Function(e.getPublicPath)(),`${r}${t}`}else return"publicPath"in e?!dt.isBrowserEnv()&&!dt.isReactNativeEnv()&&"ssrPublicPath"in e&&typeof e.ssrPublicPath=="string"?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},wn=(e,t)=>{e||pr(t)},pr=e=>{throw new Error(`${gr}: ${e}`)},Fn=e=>{console.warn(`${gr}: ${e}`)};function Ln(e){try{return JSON.stringify(e,null,2)}catch{return""}}const Dn=/^([\d^=v<>~]|[*xX]$)/;function Hn(e){return Dn.test(e)}H.assert=wn;H.composeKeyWithSeparator=Pn;H.decodeName=vn;H.encodeName=It;H.error=pr;H.generateExposeFilename=An;H.generateShareFilename=kn;H.getResourceUrl=On;H.isRequiredVersion=Hn;H.parseEntry=Mn;H.safeToString=Ln;H.warn=Fn;var ue={};const ye=P,Q=(e,t)=>{if(!e)return t;const n=(o=>{if(o===".")return"";if(o.startsWith("./"))return o.replace("./","");if(o.startsWith("/")){const s=o.slice(1);return s.endsWith("/")?s.slice(0,-1):s}return o})(e);return n?n.endsWith("/")?`${n}${t}`:`${n}/${t}`:t};function yr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function Cn(e,t={}){var E,I,O;const{remotes:r={},overrides:n={},version:o}=t;let s;const i=()=>"publicPath"in e.metaData?(e.metaData.publicPath==="auto"||e.metaData.publicPath==="")&&o?yr(o):e.metaData.publicPath:e.metaData.getPublicPath,a=Object.keys(n);let c={};Object.keys(r).length||(c=((E=e.remotes)==null?void 0:E.reduce((y,N)=>{let R;const v=N.federationContainerName;return a.includes(v)?R=n[v]:"version"in N?R=N.version:R=N.entry,y[v]={matchedVersion:R},y},{}))||{}),Object.keys(r).forEach(y=>c[y]={matchedVersion:a.includes(y)?n[y]:r[y]});const{remoteEntry:{path:l,name:u,type:d},types:f={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:h},globalName:m,ssrRemoteEntry:_}=e.metaData,{exposes:g}=e;let p={version:o||"",buildVersion:h,globalName:m,remoteEntry:Q(l,u),remoteEntryType:d,remoteTypes:Q(f.path,f.name),remoteTypesZip:f.zip||"",remoteTypesAPI:f.api||"",remotesInfo:c,shared:e==null?void 0:e.shared.map(y=>({assets:y.assets,sharedName:y.name,version:y.version,usedExports:y.referenceExports||[]})),modules:g==null?void 0:g.map(y=>({moduleName:y.name,modulePath:y.path,assets:y.assets}))};if((I=e.metaData)!=null&&I.prefetchInterface){const y=e.metaData.prefetchInterface;p={...p,prefetchInterface:y}}if((O=e.metaData)!=null&&O.prefetchEntry){const{path:y,name:N,type:R}=e.metaData.prefetchEntry;p={...p,prefetchEntry:Q(y,N),prefetchEntryType:R}}if("publicPath"in e.metaData?(s={...p,publicPath:i()},typeof e.metaData.ssrPublicPath=="string"&&(s.ssrPublicPath=e.metaData.ssrPublicPath)):s={...p,getPublicPath:i()},_){const y=Q(_.path,_.name);s.ssrRemoteEntry=y,s.ssrRemoteEntryType=_.type||"commonjs-module"}return s}function qn(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(ye.MANIFEST_EXT))}function Gn(e){if(!e)return{statsFileName:ye.StatsFileName,manifestFileName:ye.ManifestFileName};let t=typeof e=="boolean"?"":e.filePath||"",r=typeof e=="boolean"?"":e.fileName||"";const n=".json",o=a=>a.endsWith(n)?a:`${a}${n}`,s=(a,c)=>a.replace(n,`${c}${n}`),i=r?o(r):ye.ManifestFileName;return{statsFileName:Q(t,r?s(i,"-stats"):ye.StatsFileName),manifestFileName:Q(t,i)}}ue.generateSnapshotFromManifest=Cn;ue.getManifestFileName=Gn;ue.inferAutoPublicPath=yr;ue.isManifestProvider=qn;ue.simpleJoinRemoteEntry=Q;var fe={};const Ot=J,Er="[ Module Federation ]",ge=console,Un=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function Wn(){try{const e=new Error().stack;if(!e)return;const[,...t]=e.split(` `),r=t.filter(n=>!Un.some(o=>n.includes(o)));return r.length?`Stack trace: ${r.slice(0,5).join(` `)}`:void 0}catch{return}}var Sr=class{constructor(e,t=ge){this.prefix=e,this.delegate=t??ge}setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??ge}emit(e,t){const r=this.delegate,n=Ot.isDebugMode()?Wn():void 0,o=n?[...t,n]:t,s=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(const i of s){const a=r[i];if(typeof a=="function"){a.call(r,this.prefix,...o);return}}for(const i of s){const a=ge[i];if(typeof a=="function"){a.call(ge,this.prefix,...o);return}}}log(...e){this.emit("log",e)}warn(...e){this.emit("warn",e)}error(...e){this.emit("error",e)}success(...e){this.emit("info",e)}info(...e){this.emit("info",e)}ready(...e){this.emit("info",e)}debug(...e){Ot.isDebugMode()&&this.emit("debug",e)}};function br(e){return new Sr(e)}function Rr(e){const t=new Sr(e);return Object.defineProperty(t,"__mf_infrastructure_logger__",{value:!0,enumerable:!1,configurable:!1}),t}function Bn(e,t,r){if(e.__mf_infrastructure_logger__&&t!=null&&t.getInfrastructureLogger)try{const n=t.getInfrastructureLogger(r);n&&typeof n=="object"&&(typeof n.log=="function"||typeof n.info=="function"||typeof n.warn=="function"||typeof n.error=="function")&&e.setDelegate(n)}catch{e.setDelegate(void 0)}}const jn=br(Er),Vn=Rr(Er);fe.bindLoggerToCompiler=Bn;fe.createInfrastructureLogger=Rr;fe.createLogger=br;fe.infrastructureLogger=Vn;fe.logger=jn;var de={};const Xn=H;async function $t(e,t){try{return await e()}catch(r){!t&&Xn.warn(r);return}}function Ue(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function Tr(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("script");for(let l=0;l{t&&(d==="async"||d==="defer"?t[d]=l[d]:t.getAttribute(d)||t.setAttribute(d,l[d]))})}let i=null;const a=typeof window<"u"?l=>{if(l.filename&&Ue(l.filename,e.url)){const u=new Error(`ScriptExecutionError: Script "${e.url}" loaded but threw a runtime error during execution: ${l.message} (${l.filename}:${l.lineno}:${l.colno})`);u.name="ScriptExecutionError",i=u}}:null;a&&window.addEventListener("error",a);const c=async(l,u)=>{clearTimeout(o),a&&window.removeEventListener("error",a);const d=()=>{if((u==null?void 0:u.type)==="error"){const f=new Error(`ScriptNetworkError: Failed to load script "${e.url}" - the script URL is unreachable or the server returned an error (network failure, 404, CORS, etc.)`);f.name="ScriptNetworkError",e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(f))}else i?e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(i)):e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,$t(()=>{const{needDeleteScript:f=!0}=e;f&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),l&&typeof l=="function")){const f=l(u);if(f instanceof Promise){const h=await f;return d(),h}return d(),f}d()};return t.onerror=c.bind(null,t.onerror),t.onload=c.bind(null,t.onload),o=setTimeout(()=>{c(null,new Error(`Remote script "${e.url}" time-outed.`))},n),{script:t,needAttach:r}}function xn(e){let t=null,r=!0;const n=document.getElementsByTagName("link");for(let s=0;s{t&&!t.getAttribute(a)&&t.setAttribute(a,i[a])})}const o=(s,i)=>{const a=()=>{(i==null?void 0:i.type)==="error"?e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(i)):e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,$t(()=>{const{needDeleteLink:c=!0}=e;c&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),s)){const c=s(i);return a(),c}a()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function Kn(e,t){const{attrs:r={},createScriptHook:n}=t;return new Promise((o,s)=>{const{script:i,needAttach:a}=Tr({url:e,cb:o,onErrorCallback:s,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}de.createLink=xn;de.createScript=Tr;de.isStaticResourcesEqual=Ue;de.loadScript=Kn;de.safeWrapper=$t;var Nt={};const Yn=(e,t,r,n)=>{t(new Error("createScriptNode is disabled in non-Node.js environment"))},zn=(e,t)=>{throw new Error("loadScriptNode is disabled in non-Node.js environment")};Nt.createScriptNode=Yn;Nt.loadScriptNode=zn;var Ir={};function Jn(e,t,r){return function(n){if(n===!1)return!1;if(typeof n>"u")return e?t:!1;if(n===!0)return t;if(n&&typeof n=="object")return{...t,...n};throw new Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}Ir.normalizeOptions=Jn;var $r={};const Zn=e=>e;$r.createModuleFederationConfig=Zn;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=P,r=lr,n=cr,o=ur,s=fr,i=dr,a=hr,c=J,l=H,u=ue,d=fe,f=de,h=Nt,m=Ir,_=$r;e.BROWSER_LOG_KEY=t.BROWSER_LOG_KEY,e.ENCODE_NAME_PREFIX=t.ENCODE_NAME_PREFIX,e.EncodedNameTransformMap=t.EncodedNameTransformMap,e.FederationModuleManifest=t.FederationModuleManifest,e.MANIFEST_EXT=t.MANIFEST_EXT,e.MFModuleType=t.MFModuleType,e.MFPrefetchCommon=t.MFPrefetchCommon,e.MODULE_DEVTOOL_IDENTIFIER=t.MODULE_DEVTOOL_IDENTIFIER,e.ManifestFileName=t.ManifestFileName,e.NameTransformMap=t.NameTransformMap,e.NameTransformSymbol=t.NameTransformSymbol,e.SEPARATOR=t.SEPARATOR,e.StatsFileName=t.StatsFileName,e.TEMP_DIR=t.TEMP_DIR,e.TreeShakingStatus=t.TreeShakingStatus,e.assert=l.assert,e.bindLoggerToCompiler=d.bindLoggerToCompiler,e.composeKeyWithSeparator=l.composeKeyWithSeparator,Object.defineProperty(e,"consumeSharedPlugin",{enumerable:!0,get:function(){return i.ConsumeSharedPlugin_exports}}),Object.defineProperty(e,"containerPlugin",{enumerable:!0,get:function(){return r.ContainerPlugin_exports}}),Object.defineProperty(e,"containerReferencePlugin",{enumerable:!0,get:function(){return n.ContainerReferencePlugin_exports}}),e.createInfrastructureLogger=d.createInfrastructureLogger,e.createLink=f.createLink,e.createLogger=d.createLogger,e.createModuleFederationConfig=_.createModuleFederationConfig,e.createScript=f.createScript,e.createScriptNode=h.createScriptNode,e.decodeName=l.decodeName,e.encodeName=l.encodeName,e.error=l.error,e.generateExposeFilename=l.generateExposeFilename,e.generateShareFilename=l.generateShareFilename,e.generateSnapshotFromManifest=u.generateSnapshotFromManifest,e.getManifestFileName=u.getManifestFileName,e.getProcessEnv=c.getProcessEnv,e.getResourceUrl=l.getResourceUrl,e.inferAutoPublicPath=u.inferAutoPublicPath,e.infrastructureLogger=d.infrastructureLogger,e.isBrowserEnv=c.isBrowserEnv,e.isBrowserEnvValue=c.isBrowserEnvValue,e.isDebugMode=c.isDebugMode,e.isManifestProvider=u.isManifestProvider,e.isReactNativeEnv=c.isReactNativeEnv,e.isRequiredVersion=l.isRequiredVersion,e.isStaticResourcesEqual=f.isStaticResourcesEqual,e.loadScript=f.loadScript,e.loadScriptNode=h.loadScriptNode,e.logger=d.logger,Object.defineProperty(e,"moduleFederationPlugin",{enumerable:!0,get:function(){return o.ModuleFederationPlugin_exports}}),e.normalizeOptions=m.normalizeOptions,e.parseEntry=l.parseEntry,Object.defineProperty(e,"provideSharedPlugin",{enumerable:!0,get:function(){return a.ProvideSharedPlugin_exports}}),e.safeToString=l.safeToString,e.safeWrapper=f.safeWrapper,Object.defineProperty(e,"sharePlugin",{enumerable:!0,get:function(){return s.SharePlugin_exports}}),e.simpleJoinRemoteEntry=u.simpleJoinRemoteEntry,e.warn=l.warn})(D);var Nr={},Mt={};const Qn=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split("-")[0].toLowerCase()}#${e.toLowerCase()}`,eo=(e,t,r,n)=>{const o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(Qn(e)),n&&o.push(`Original Error Message: ${n}`),o.join(` `)};Mt.getShortErrorMsg=eo;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Mt;function r(n,o,s,i,a,c){return i(t.getShortErrorMsg(n,o,s,a))}e.logAndReport=r})(Nr);let to=D,ro=Nr;const ee="[ Federation Runtime ]",ht=(0,to.createLogger)(ee);function no(e,t,r,n,o){e||(r!==void 0?mt(t,r,n,void 0,o):mt(t))}function mt(e,t,r,n,o){if(t!==void 0)return(0,ro.logAndReport)(e,t,r??{},i=>{throw new Error(`${ee}: ${i}`)},n,o);const s=e;throw s instanceof Error?(s.message.startsWith(ee)||(s.message=`${ee}: ${s.message}`),s):new Error(`${ee}: ${s}`)}function oo(e){e instanceof Error&&(e.message.startsWith(ee)||(e.message=`${ee}: ${e.message}`)),ht.warn(e)}M.assert=no;M.error=mt;M.logger=ht;M.warn=oo;var $={};const so=M;let wt=D;function io(e,t){return e.findIndex(r=>r===t)===-1&&e.push(t),e}function ao(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function lo(e){return typeof e.entry<"u"}function co(e){return!e.entry.includes(".json")}async function uo(e,t){try{return await e()}catch(r){!t&&so.warn(r);return}}function fo(e){return e&&typeof e=="object"}const Mr=Object.prototype.toString;function ho(e){return Mr.call(e)==="[object Object]"}function mo(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function _o(e){return Array.isArray(e)?e:[e]}function go(e){const t={url:"",type:"global",globalName:""};return wt.isBrowserEnvValue||(0,wt.isReactNativeEnv)()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}const po=(e,t)=>{let r;return e.endsWith("/")?r=e.slice(0,-1):r=e,t.startsWith(".")&&(t=t.slice(1)),r=r+t,r};$.addUniqueItem=io;$.arrayOptions=_o;$.getFMId=ao;$.getRemoteEntryInfoFromSnapshot=go;$.isObject=fo;$.isPlainObject=ho;$.isPureRemoteEntry=co;$.isRemoteInfoWithEntry=lo;$.isStaticResourcesEqual=mo;$.objectToString=Mr;$.processModuleAlias=po;$.safeWrapper=uo;var b={};const Pr=M,_t=$;let yo=D;const k=typeof globalThis=="object"?globalThis:window,C=(()=>{try{return document.defaultView}catch{return k}})(),Eo=C;function He(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function Ce(e,t){return Object.hasOwnProperty.call(e,t)}Ce(k,"__GLOBAL_LOADING_REMOTE_ENTRY__")||He(k,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});const gt=k.__GLOBAL_LOADING_REMOTE_ENTRY__;function vr(e){Ce(e,"__VMOK__")&&!Ce(e,"__FEDERATION__")&&He(e,"__FEDERATION__",e.__VMOK__),Ce(e,"__FEDERATION__")||(He(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),He(e,"__VMOK__",e.__FEDERATION__)),e.__FEDERATION__.__GLOBAL_PLUGIN__??=[],e.__FEDERATION__.__INSTANCES__??=[],e.__FEDERATION__.moduleInfo??={},e.__FEDERATION__.__SHARE__??={},e.__FEDERATION__.__MANIFEST_LOADING__??={},e.__FEDERATION__.__PRELOADED_MAP__??=new Map}vr(k);vr(C);function So(){k.__FEDERATION__.__GLOBAL_PLUGIN__=[],k.__FEDERATION__.__INSTANCES__=[],k.__FEDERATION__.moduleInfo={},k.__FEDERATION__.__SHARE__={},k.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(gt).forEach(e=>{delete gt[e]})}function bo(e){k.__FEDERATION__.__INSTANCES__.push(e)}function Ro(){return k.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function To(e,t=(0,yo.isDebugMode)()){t&&(k.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,k.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="2.2.2")}function pt(e,t){if(typeof t=="string"){if(e[t])return{value:e[t],key:t};{const r=Object.keys(e);for(const n of r){const[o,s]=n.split(":"),i=`${o}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}}else Pr.error(`getInfoWithoutType: "key" must be a string, got ${typeof t} (${JSON.stringify(t)}).`)}const Io=()=>C.__FEDERATION__.moduleInfo,Ar=(e,t)=>{const r=pt(t,_t.getFMId(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){const{version:n,...o}=e,s=_t.getFMId(o),i=pt(C.__FEDERATION__.moduleInfo,s).value;if((i==null?void 0:i.version)===n)return i}},$o=e=>Ar(e,C.__FEDERATION__.moduleInfo),No=(e,t)=>{const r=_t.getFMId(e);return C.__FEDERATION__.moduleInfo[r]=t,C.__FEDERATION__.moduleInfo},Mo=e=>(C.__FEDERATION__.moduleInfo={...C.__FEDERATION__.moduleInfo,...e},()=>{const t=Object.keys(e);for(const r of t)delete C.__FEDERATION__.moduleInfo[r]}),Po=(e,t)=>{const r=t||`__FEDERATION_${e}:custom__`;return{remoteEntryKey:r,entryExports:k[r]}},vo=e=>{const{__GLOBAL_PLUGIN__:t}=C.__FEDERATION__;e.forEach(r=>{t.findIndex(n=>n.name===r.name)===-1?t.push(r):Pr.warn(`The plugin ${r.name} has been registered.`)})},Ao=()=>C.__FEDERATION__.__GLOBAL_PLUGIN__,ko=e=>k.__FEDERATION__.__PRELOADED_MAP__.get(e),Oo=e=>k.__FEDERATION__.__PRELOADED_MAP__.set(e,!0);b.CurrentGlobal=k;b.Global=Eo;b.addGlobalSnapshot=Mo;b.getGlobalFederationConstructor=Ro;b.getGlobalHostPlugins=Ao;b.getGlobalSnapshot=Io;b.getGlobalSnapshotInfoByModuleInfo=$o;b.getInfoWithoutType=pt;b.getPreloaded=ko;b.getRemoteEntryExports=Po;b.getTargetSnapshotInfoByModuleInfo=Ar;b.globalLoading=gt;b.nativeGlobal=C;b.registerGlobalPlugins=vo;b.resetFederationGlobalInfo=So;b.setGlobalFederationConstructor=To;b.setGlobalFederationInstance=bo;b.setGlobalSnapshotInfoByModuleInfo=No;b.setPreloaded=Oo;var Pt={},ne={},W={};const Ft="[0-9A-Za-z-]+",vt=`(?:\\+(${Ft}(?:\\.${Ft})*))`,Re="0|[1-9]\\d*",qe="[0-9]+",kr="\\d*[a-zA-Z-][a-zA-Z0-9-]*",Lt=`(?:${qe}|${kr})`,wo=`(?:-?(${Lt}(?:\\.${Lt})*))`,Dt=`(?:${Re}|${kr})`,Or=`(?:-(${Dt}(?:\\.${Dt})*))`,ze=`${Re}|x|X|\\*`,ce=`[v=\\s]*(${ze})(?:\\.(${ze})(?:\\.(${ze})(?:${Or})?${vt}?)?)?`,Fo=`^\\s*(${ce})\\s+-\\s+(${ce})\\s*$`,Lo=`[v=\\s]*${`(${qe})\\.(${qe})\\.(${qe})`}${wo}?${vt}?`,At="((?:<|>)?=?)",Do=`(\\s*)${At}\\s*(${Lo}|${ce})`,wr="(?:~>?)",Ho=`(\\s*)${wr}\\s+`,Fr="(?:\\^)",Co=`(\\s*)${Fr}\\s+`,qo="(<|>)?=?\\s*\\*",Go=`^${Fr}${ce}$`,Uo=`v?${`(${Re})\\.(${Re})\\.(${Re})`}${Or}?${vt}?`,Wo=`^${wr}${ce}$`,Bo=`^${At}\\s*${ce}$`,jo=`^${At}\\s*(${Uo})$|^$`,Vo="^\\s*>=\\s*0.0.0\\s*$";W.caret=Go;W.caretTrim=Co;W.comparator=jo;W.comparatorTrim=Do;W.gte0=Vo;W.hyphenRange=Fo;W.star=qo;W.tilde=Wo;W.tildeTrim=Ho;W.xRange=Bo;const Xo=W;function Lr(e){return new RegExp(e)}function xo(e){return!e||e.toLowerCase()==="x"||e==="*"}function Ko(...e){return t=>e.reduce((r,n)=>n(r),t)}function Yo(e){return e.match(Lr(Xo.comparator))}function zo(e,t,r,n){const o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}ne.combineVersion=zo;ne.extractComparator=Yo;ne.isXVersion=xo;ne.parseRegex=Lr;ne.pipe=Ko;var V={};const x=W,T=ne;function Jo(e){return e.replace(T.parseRegex(x.hyphenRange),(t,r,n,o,s,i,a,c,l,u,d,f)=>(T.isXVersion(n)?r="":T.isXVersion(o)?r=`>=${n}.0.0`:T.isXVersion(s)?r=`>=${n}.${o}.0`:r=`>=${r}`,T.isXVersion(l)?c="":T.isXVersion(u)?c=`<${Number(l)+1}.0.0-0`:T.isXVersion(d)?c=`<${l}.${Number(u)+1}.0-0`:f?c=`<=${l}.${u}.${d}-${f}`:c=`<=${c}`,`${r} ${c}`.trim()))}function Zo(e){return e.replace(T.parseRegex(x.comparatorTrim),"$1$2$3")}function Qo(e){return e.replace(T.parseRegex(x.tildeTrim),"$1~")}function es(e){return e.replace(T.parseRegex(x.caretTrim),"$1^")}function ts(e){return e.trim().split(/\s+/).map(t=>t.replace(T.parseRegex(x.caret),(r,n,o,s,i)=>T.isXVersion(n)?"":T.isXVersion(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:T.isXVersion(s)?n==="0"?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.0 <${Number(n)+1}.0.0-0`:i?n==="0"?o==="0"?`>=${n}.${o}.${s}-${i} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s}-${i} <${Number(n)+1}.0.0-0`:n==="0"?o==="0"?`>=${n}.${o}.${s} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${Number(n)+1}.0.0-0`)).join(" ")}function rs(e){return e.trim().split(/\s+/).map(t=>t.replace(T.parseRegex(x.tilde),(r,n,o,s,i)=>T.isXVersion(n)?"":T.isXVersion(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:T.isXVersion(s)?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:i?`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`)).join(" ")}function ns(e){return e.split(/\s+/).map(t=>t.trim().replace(T.parseRegex(x.xRange),(r,n,o,s,i,a)=>{const c=T.isXVersion(o),l=c||T.isXVersion(s),u=l||T.isXVersion(i);return n==="="&&u&&(n=""),a="",c?n===">"||n==="<"?"<0.0.0-0":"*":n&&u?(l&&(s=0),i=0,n===">"?(n=">=",l?(o=Number(o)+1,s=0,i=0):(s=Number(s)+1,i=0)):n==="<="&&(n="<",l?o=Number(o)+1:s=Number(s)+1),n==="<"&&(a="-0"),`${n+o}.${s}.${i}${a}`):l?`>=${o}.0.0${a} <${Number(o)+1}.0.0-0`:u?`>=${o}.${s}.0${a} <${o}.${Number(s)+1}.0-0`:r})).join(" ")}function os(e){return e.trim().replace(T.parseRegex(x.star),"")}function ss(e){return e.trim().replace(T.parseRegex(x.gte0),"")}V.parseCaretTrim=es;V.parseCarets=ts;V.parseComparatorTrim=Zo;V.parseGTE0=ss;V.parseHyphen=Jo;V.parseStar=os;V.parseTildeTrim=Qo;V.parseTildes=rs;V.parseXRanges=ns;var Dr={};function Ge(e,t){return e=Number(e)||e,t=Number(t)||t,e>t?1:e===t?0:-1}function is(e,t){const{preRelease:r}=e,{preRelease:n}=t;if(r===void 0&&n)return 1;if(r&&n===void 0)return-1;if(r===void 0&&n===void 0)return 0;for(let o=0,s=r.length;o<=s;o++){const i=r[o],a=n[o];if(i!==a)return i===void 0&&a===void 0?0:i?a?Ge(i,a):-1:1}return 0}function Oe(e,t){return Ge(e.major,t.major)||Ge(e.minor,t.minor)||Ge(e.patch,t.patch)||is(e,t)}function Je(e,t){return e.version===t.version}function as(e,t){switch(e.operator){case"":case"=":return Je(e,t);case">":return Oe(e,t)<0;case">=":return Je(e,t)||Oe(e,t)<0;case"<":return Oe(e,t)>0;case"<=":return Je(e,t)||Oe(e,t)>0;case void 0:return!0;default:return!1}}Dr.compare=as;const ae=ne,X=V,ls=Dr;function cs(e){return ae.pipe(X.parseCarets,X.parseTildes,X.parseXRanges,X.parseStar)(e)}function us(e){return ae.pipe(X.parseHyphen,X.parseComparatorTrim,X.parseTildeTrim,X.parseCaretTrim)(e.trim()).split(/\s+/).join(" ")}function fs(e,t){if(!e)return!1;const r=ae.extractComparator(e);if(!r)return!1;const[,n,,o,s,i,a]=r,c={operator:n,version:ae.combineVersion(o,s,i,a),major:o,minor:s,patch:i,preRelease:a==null?void 0:a.split(".")},l=t.split("||");for(const u of l){const d=u.trim();if(!d||d==="*"||d==="x")return!0;try{const f=us(d);if(!f.trim())return!0;const h=f.split(" ").map(g=>cs(g)).join(" ");if(!h.trim())return!0;const m=h.split(/\s+/).map(g=>X.parseGTE0(g)).filter(Boolean);if(m.length===0)continue;let _=!0;for(const g of m){const p=ae.extractComparator(g);if(!p){_=!1;break}const[,E,,I,O,y,N]=p;if(!ls.compare({operator:E,version:ae.combineVersion(I,O,y,N),major:I,minor:O,patch:y,preRelease:N==null?void 0:N.split(".")},c)){_=!1;break}}if(_)return!0}catch(f){console.error(`[semver] Error processing range part "${d}":`,f);continue}}return!1}Pt.satisfy=fs;var q={},oe={};const ds="default",hs="global";oe.DEFAULT_REMOTE_TYPE=hs;oe.DEFAULT_SCOPE=ds;const We=M,Hr=$,Cr=b,ms=oe,Ee=Pt;let yt=D;function _s(e,t,r,n){var s,i;let o;return"get"in e?o=e.get:"lib"in e?o=()=>Promise.resolve(e.lib):o=()=>Promise.resolve(()=>{We.error(`Cannot get shared "${r}" from "${t}": neither "get" nor "lib" is provided in the share config.`)}),(s=e.shareConfig)!=null&&s.eager&&((i=e.treeShaking)!=null&&i.mode)&&We.error(`Invalid shared config for "${r}" from "${t}": cannot use both "eager: true" and "treeShaking.mode" simultaneously. Choose one strategy.`),{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:o,loaded:e!=null&&e.loaded||"lib"in e?!0:void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??yt.TreeShakingStatus.UNKNOWN,useIn:[]}:void 0}}function gs(e,t){const r=t.shared||{},n=t.name,o=Object.keys(r).reduce((i,a)=>{const c=Hr.arrayOptions(r[a]);return i[a]=i[a]||[],c.forEach(l=>{i[a].push(_s(l,n,a,t.shareStrategy))}),i},{}),s={...e.shared};return Object.keys(o).forEach(i=>{s[i]?o[i].forEach(a=>{s[i].find(c=>c.version===a.version)||s[i].push(a)}):s[i]=o[i]}),{allShareInfos:s,newShareInfos:o}}function Te(e,t){if(!e)return!1;const{status:r,mode:n}=e;return r===yt.TreeShakingStatus.NO_USE?!1:r===yt.TreeShakingStatus.CALCULATED?!0:n==="runtime-infer"?t?ys(e,t):!0:!1}function te(e,t){const r=n=>{if(!Number.isNaN(Number(n))){const o=n.split(".");let s=n;for(let i=0;i<3-o.length;i++)s+=".0";return s}return n};return!!Ee.satisfy(r(e),`<=${r(t)}`)}const Ie=(e,t)=>{const r=t||function(n,o){return te(n,o)};return Object.keys(e).reduce((n,o)=>!n||r(n,o)||n==="0"?o:n,0)},Be=e=>!!e.loaded||typeof e.lib=="function",ps=e=>!!e.loading,ys=(e,t)=>{if(!e||!t)return!1;const{usedExports:r}=e;return r?!!t.every(n=>r.includes(n)):!1};function Es(e,t,r,n){const o=e[t][r];let s="",i=Te(n);const a=function(c,l){return i?o[c].treeShaking?o[l].treeShaking?!Be(o[c].treeShaking)&&te(c,l):!1:!0:!Be(o[c])&&te(c,l)};if(i){if(s=Ie(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:Ie(e[t][r],a),useTreesShaking:i}}const se=e=>Be(e)||ps(e);function Ss(e,t,r,n){const o=e[t][r];let s="",i=Te(n);const a=function(c,l){if(i){if(!o[c].treeShaking)return!0;if(!o[l].treeShaking)return!1;if(se(o[l].treeShaking))return se(o[c].treeShaking)?!!te(c,l):!0;if(se(o[c].treeShaking))return!1}return se(o[l])?se(o[c])?!!te(c,l):!0:se(o[c])?!1:te(c,l)};if(i){if(s=Ie(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:Ie(e[t][r],a),useTreesShaking:i}}function bs(e){return e==="loaded-first"?Ss:Es}function Rs(e,t,r,n){if(!e)return;const{shareConfig:o,scope:s=ms.DEFAULT_SCOPE,strategy:i,treeShaking:a}=r,c=Array.isArray(s)?s:[s];for(const l of c)if(o&&e[l]&&e[l][t]){const{requiredVersion:u}=o,{version:d,useTreesShaking:f}=bs(i)(e,l,t,a),h=()=>{const _=e[l][t][d];if(o.singleton){if(typeof u=="string"&&!Ee.satisfy(d,u)){const g=`Version ${d} from ${d&&_.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${u})`;o.strictVersion?We.error(g):We.warn(g)}return{shared:_,useTreesShaking:f}}else{if(u===!1||u==="*")return{shared:_,useTreesShaking:f};if(Ee.satisfy(d,u))return{shared:_,useTreesShaking:f};const g=Te(a);if(g){for(const[p,E]of Object.entries(e[l][t]))if(Te(E.treeShaking,a==null?void 0:a.usedExports)&&Ee.satisfy(p,u))return{shared:E,useTreesShaking:g}}for(const[p,E]of Object.entries(e[l][t]))if(Ee.satisfy(p,u))return{shared:E,useTreesShaking:!1}}},m={shareScopeMap:e,scope:l,pkgName:t,version:d,GlobalFederation:Cr.Global.__FEDERATION__,shareInfo:r,resolver:h};return(n.emit(m)||m).resolver()}}function Ts(){return Cr.Global.__FEDERATION__.__SHARE__}function Is(e){const{pkgName:t,extraOptions:r,shareInfos:n}=e,o=c=>{if(!c)return;const l={};return c.forEach(d=>{l[d.version]=d}),l[Ie(l,function(d,f){return!Be(l[d])&&te(d,f)})]},s=(r==null?void 0:r.resolver)??o,i=c=>c!==null&&typeof c=="object"&&!Array.isArray(c),a=(...c)=>{const l={};for(const u of c)if(u)for(const[d,f]of Object.entries(u)){const h=l[d];i(h)&&i(f)?l[d]=a(h,f):f!==void 0&&(l[d]=f)}return l};return a(s(n[t]),r==null?void 0:r.customShareInfo)}const $s=(e,t)=>{e.useIn||(e.useIn=[]),Hr.addUniqueItem(e.useIn,t)};function Ns(e,t){return t&&e.treeShaking?e.treeShaking:e}q.addUseIn=$s;q.directShare=Ns;q.formatShareConfigs=gs;q.getGlobalShareScope=Ts;q.getRegisteredShare=Rs;q.getTargetSharedOptions=Is;q.shouldUseTreeShaking=Te;var he={};function Ms(e,t){for(const r of e){const n=t.startsWith(r.name);let o=t.replace(r.name,"");if(n){if(o.startsWith("/")){const a=r.name;return o=`.${o}`,{pkgNameOrAlias:a,expose:o,remote:r}}else if(o==="")return{pkgNameOrAlias:r.name,expose:".",remote:r}}const s=r.alias&&t.startsWith(r.alias);let i=r.alias&&t.replace(r.alias,"");if(r.alias&&s){if(i&&i.startsWith("/")){const a=r.alias;return i=`.${i}`,{pkgNameOrAlias:a,expose:i,remote:r}}else if(i==="")return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function Ps(e,t){for(const r of e)if(t===r.name||r.alias&&t===r.alias)return r}he.matchRemote=Ps;he.matchRemoteWithNameAndExpose=Ms;var K={},Y={},F={};const vs="RUNTIME-001",As="RUNTIME-002",ks="RUNTIME-003",Os="RUNTIME-004",ws="RUNTIME-005",Fs="RUNTIME-006",Ls="RUNTIME-007",Ds="RUNTIME-008",Hs="RUNTIME-009",Cs="RUNTIME-010",qs="RUNTIME-011",Gs="TYPE-001",Us="BUILD-001",Ws="BUILD-002";F.BUILD_001=Us;F.BUILD_002=Ws;F.RUNTIME_001=vs;F.RUNTIME_002=As;F.RUNTIME_003=ks;F.RUNTIME_004=Os;F.RUNTIME_005=ws;F.RUNTIME_006=Fs;F.RUNTIME_007=Ls;F.RUNTIME_008=Ds;F.RUNTIME_009=Hs;F.RUNTIME_010=Cs;F.RUNTIME_011=qs;F.TYPE_001=Gs;var Me={};const L=F,qr={[L.RUNTIME_001]:"Failed to get remoteEntry exports.",[L.RUNTIME_002]:'The remote entry interface does not contain "init"',[L.RUNTIME_003]:"Failed to get manifest.",[L.RUNTIME_004]:"Failed to locate remote.",[L.RUNTIME_005]:"Invalid loadShareSync function call from bundler runtime",[L.RUNTIME_006]:"Invalid loadShareSync function call from runtime",[L.RUNTIME_007]:"Failed to get remote snapshot.",[L.RUNTIME_008]:"Failed to load script resources.",[L.RUNTIME_009]:"Please call createInstance first.",[L.RUNTIME_010]:'The name option cannot be changed after initialization. If you want to create a new instance with a different name, please use "createInstance" api.',[L.RUNTIME_011]:"The remoteEntry URL is missing from the remote snapshot."},Gr={[L.TYPE_001]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},Ur={[L.BUILD_001]:"Failed to find expose module.",[L.BUILD_002]:"PublicPath is required in prod mode."},Bs={...qr,...Gr,...Ur};Me.buildDescMap=Ur;Me.errorDescMap=Bs;Me.runtimeDescMap=qr;Me.typeDescMap=Gr;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=F,r=Mt,n=Me;e.BUILD_001=t.BUILD_001,e.BUILD_002=t.BUILD_002,e.RUNTIME_001=t.RUNTIME_001,e.RUNTIME_002=t.RUNTIME_002,e.RUNTIME_003=t.RUNTIME_003,e.RUNTIME_004=t.RUNTIME_004,e.RUNTIME_005=t.RUNTIME_005,e.RUNTIME_006=t.RUNTIME_006,e.RUNTIME_007=t.RUNTIME_007,e.RUNTIME_008=t.RUNTIME_008,e.RUNTIME_009=t.RUNTIME_009,e.RUNTIME_010=t.RUNTIME_010,e.RUNTIME_011=t.RUNTIME_011,e.TYPE_001=t.TYPE_001,e.buildDescMap=n.buildDescMap,e.errorDescMap=n.errorDescMap,e.getShortErrorMsg=r.getShortErrorMsg,e.runtimeDescMap=n.runtimeDescMap,e.typeDescMap=n.typeDescMap})(Y);const Ve=M,le=b,Ht=oe;let Wr=D,$e=Y;const Br=".then(callbacks[0]).catch(callbacks[1])";async function js({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof FEDERATION_ALLOW_NEW_FUNCTION<"u"?new Function("callbacks",`import("${e}")${Br}`)([r,n]):import(e).then(r).catch(n)}catch(o){Ve.error(`Failed to load ESM entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}async function Vs({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof __system_context__>"u"?System.import(e).then(r).catch(n):new Function("callbacks",`System.import("${e}")${Br}`)([r,n])}catch(o){Ve.error(`Failed to load SystemJS entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}function Xs(e,t,r){const{remoteEntryKey:n,entryExports:o}=le.getRemoteEntryExports(e,t);return o||Ve.error($e.RUNTIME_001,$e.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n}),o}async function xs({name:e,globalName:t,entry:r,loaderHook:n,getEntryUrl:o}){const{entryExports:s}=le.getRemoteEntryExports(e,t);if(s)return s;const i=o?o(r):r;return(0,Wr.loadScript)(i,{attrs:{},createScriptHook:(a,c)=>{const l=n.lifecycle.createScript.emit({url:a,attrs:c});if(l&&(l instanceof HTMLScriptElement||"script"in l||"timeout"in l))return l}}).then(()=>Xs(e,t,r),a=>{const c=a instanceof Error?a.message:String(a);Ve.error($e.RUNTIME_008,$e.runtimeDescMap,{remoteName:e,resourceUrl:i},c)})}async function Ks({remoteInfo:e,remoteEntryExports:t,loaderHook:r,getEntryUrl:n}){const{entry:o,entryGlobalName:s,name:i,type:a}=e;switch(a){case"esm":case"module":return js({entry:o,remoteEntryExports:t});case"system":return Vs({entry:o,remoteEntryExports:t});default:return xs({entry:o,globalName:s,name:i,loaderHook:r,getEntryUrl:n})}}function Et(e){const{entry:t,name:r}=e;return(0,Wr.composeKeyWithSeparator)(r,t)}async function jr(e){const{origin:t,remoteEntryExports:r,remoteInfo:n,getEntryUrl:o,_inErrorHandling:s=!1}=e,i=Et(n);if(r)return r;if(!le.globalLoading[i]){const a=t.remoteHandler.hooks.lifecycle.loadEntry,c=t.loaderHook;le.globalLoading[i]=a.emit({loaderHook:c,remoteInfo:n,remoteEntryExports:r}).then(l=>l||Ks({remoteInfo:n,remoteEntryExports:r,loaderHook:c,getEntryUrl:o})).catch(async l=>{const u=Et(n),d=l instanceof Error&&l.message.includes("ScriptExecutionError");if(l instanceof Error&&l.message.includes($e.RUNTIME_008)&&!d&&!s){const f=m=>jr({...m,_inErrorHandling:!0}),h=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:f,origin:t,remoteInfo:n,remoteEntryExports:r,globalLoading:le.globalLoading,uniqueKey:u});if(h)return h}throw l})}return le.globalLoading[i]}function Ys(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||Ht.DEFAULT_REMOTE_TYPE,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||Ht.DEFAULT_SCOPE}}K.getRemoteEntry=jr;K.getRemoteEntryUniqueKey=Et;K.getRemoteInfo=Ys;var Vr={};function zs(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}Vr.getBuilderId=zs;var Xr={};const Js=b;function Zs(e,t){const r=Js.getGlobalHostPlugins(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(o=>{e!=null&&e.find(s=>s.name!==o.name)&&e.push(o)}),e&&e.length>0&&e.forEach(o=>{n.forEach(s=>{s.applyPlugin(o,t)})}),e}Xr.registerPlugins=Zs;var Pe={};function Qs(e){return{name:e.name,alias:e.alias,entry:"entry"in e?e.entry:void 0,version:"version"in e?e.version:void 0,type:e.type,entryGlobalName:e.entryGlobalName,shareScope:e.shareScope}}function ei(e){var r,n,o,s,i,a;const t={};for(const[c,l]of Object.entries(e.shared)){const u=l[0];u&&(t[c]={version:u.version,singleton:(r=u.shareConfig)==null?void 0:r.singleton,requiredVersion:((n=u.shareConfig)==null?void 0:n.requiredVersion)===!1?!1:(o=u.shareConfig)==null?void 0:o.requiredVersion,eager:u.eager,strictVersion:(s=u.shareConfig)==null?void 0:s.strictVersion})}return{project:{name:e.name,mfRole:((i=e.remotes)==null?void 0:i.length)>0?"host":"unknown"},mfConfig:{name:e.name,remotes:((a=e.remotes)==null?void 0:a.map(Qs))??[],shared:t}}}Pe.optionsToMFContext=ei;var xr={},Z={};const ti=M,ri=he,Ct=K;let Se=D;function Kr(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function ni(e,t){return t.map(r=>{const n=ri.matchRemote(e,r.nameOrAlias);return ti.assert(n,`Unable to preload ${r.nameOrAlias} as it is not included in ${!n&&(0,Se.safeToString)({remoteInfo:n,remotes:e})}`),{remote:n,preloadConfig:Kr(r)}})}function oi(e){return e?e.map(t=>t==="."?t:t.startsWith("./")?t.replace("./",""):t):[]}function si(e,t,r,n=!0){const{cssAssets:o,jsAssetsWithoutEntry:s,entryAssets:i}=r;if(t.options.inBrowser){if(i.forEach(a=>{const{moduleInfo:c}=a,l=t.moduleCache.get(e.name);l?Ct.getRemoteEntry({origin:t,remoteInfo:c,remoteEntryExports:l.remoteEntryExports}):Ct.getRemoteEntry({origin:t,remoteInfo:c,remoteEntryExports:void 0})}),n){const a={rel:"preload",as:"style"};o.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h}});u&&document.head.appendChild(l)})}else{const a={rel:"stylesheet",type:"text/css"};o.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h},needDeleteLink:!1});u&&document.head.appendChild(l)})}if(n){const a={rel:"preload",as:"script"};s.forEach(c=>{const{link:l,needAttach:u}=(0,Se.createLink)({url:c,cb:()=>{},attrs:a,createLinkHook:(d,f)=>{const h=t.loaderHook.lifecycle.createLink.emit({url:d,attrs:f});if(h instanceof HTMLLinkElement)return h}});u&&document.head.appendChild(l)})}else{const a={fetchpriority:"high",type:(e==null?void 0:e.type)==="module"?"module":"text/javascript"};s.forEach(c=>{const{script:l,needAttach:u}=(0,Se.createScript)({url:c,cb:()=>{},attrs:a,createScriptHook:(d,f)=>{const h=t.loaderHook.lifecycle.createScript.emit({url:d,attrs:f});if(h instanceof HTMLScriptElement)return h},needDeleteScript:!0});u&&document.head.appendChild(l)})}}}Z.defaultPreloadArgs=Kr;Z.formatPreloadArgs=ni;Z.normalizePreloadExposes=oi;Z.preloadAssets=si;const w=b,qt=q,ii=he,ai=K,li=Z,ci={getRegisteredShare:qt.getRegisteredShare,getGlobalShareScope:qt.getGlobalShareScope},ui={Global:w.Global,nativeGlobal:w.nativeGlobal,resetFederationGlobalInfo:w.resetFederationGlobalInfo,setGlobalFederationInstance:w.setGlobalFederationInstance,getGlobalFederationConstructor:w.getGlobalFederationConstructor,setGlobalFederationConstructor:w.setGlobalFederationConstructor,getInfoWithoutType:w.getInfoWithoutType,getGlobalSnapshot:w.getGlobalSnapshot,getTargetSnapshotInfoByModuleInfo:w.getTargetSnapshotInfoByModuleInfo,getGlobalSnapshotInfoByModuleInfo:w.getGlobalSnapshotInfoByModuleInfo,setGlobalSnapshotInfoByModuleInfo:w.setGlobalSnapshotInfoByModuleInfo,addGlobalSnapshot:w.addGlobalSnapshot,getRemoteEntryExports:w.getRemoteEntryExports,registerGlobalPlugins:w.registerGlobalPlugins,getGlobalHostPlugins:w.getGlobalHostPlugins,getPreloaded:w.getPreloaded,setPreloaded:w.setPreloaded};var fi={global:ui,share:ci,utils:{matchRemoteWithNameAndExpose:ii.matchRemoteWithNameAndExpose,preloadAssets:li.preloadAssets,getRemoteInfo:ai.getRemoteInfo}};xr.default=fi;var Xe={};const Ze=M,Gt=$,di=K,hi=Pe;let mi=D,Ut=Y;function _i(e,t,r){const n=t,o=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];o.length||o.push("default"),o.forEach(i=>{n[i]||(n[i]={})});const s={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?o:e.shareScope||"default"};return Object.defineProperty(s,"shareScopeMap",{value:n,enumerable:!1}),{remoteEntryInitOptions:s,shareScope:n[o[0]],initScope:r??[]}}var gi=class{constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;const e=await di.getRemoteEntry({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return Ze.assert(e,`remoteEntryExports is undefined - ${(0,mi.safeToString)(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t,r){const n=await this.getEntry();if(this.inited)return n;if(this.initPromise)return await this.initPromise,n;this.initing=!0,this.initPromise=(async()=>{const{remoteEntryInitOptions:o,shareScope:s,initScope:i}=_i(this.remoteInfo,this.host.shareScopeMap,r),a=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:s,remoteEntryInitOptions:o,initScope:i,remoteInfo:this.remoteInfo,origin:this.host});typeof(n==null?void 0:n.init)>"u"&&Ze.error(Ut.RUNTIME_002,Ut.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,hi.optionsToMFContext(this.host.options)),await n.init(a.shareScope,a.initScope,a.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...a,id:e,remoteSnapshot:t,remoteEntryExports:n}),this.inited=!0})();try{await this.initPromise}finally{this.initing=!1,this.initPromise=void 0}return n}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n);this.lib=s;let i;i=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo}),i||(i=await s.get(t)),Ze.assert(i,`${Gt.getFMId(this.remoteInfo)} remote don't export ${t}.`);const a=Gt.processModuleAlias(this.remoteInfo.name,t),c=this.wraperFactory(i,a);return o?await c():c}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return e instanceof Promise?async()=>{const n=await e();return r(n,t),n}:()=>{const n=e();return r(n,t),n}}};Xe.Module=gi;var Yr={},me={},pi=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{t=r(...e)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}};me.SyncHook=pi;var ve={};const yi=me;var Ei=class extends yi.SyncHook{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n0){let r=0;const n=s=>(et.warn(s),this.onerror(s),e),o=s=>{if(Ii.checkReturnData(e,s)){if(e=s,r{const s=e[o];s&&this.lifecycle[o].on(s)}))}removePlugin(e){we.assert(e,"A name is required.");const t=this.registerPlugins[e];we.assert(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(r=>{r!=="name"&&this.lifecycle[r].remove(t[r])})}};ke.PluginSystem=Mi;var xe={};const Pi=M,St=$,vi=Z;let Wt=D,Bt=Y;function Zr(e,t){const r=St.getRemoteEntryInfoFromSnapshot(t);r.url||Pi.error(Bt.RUNTIME_011,Bt.runtimeDescMap,{remoteName:e.name});let n=(0,Wt.getResourceUrl)(t,r.url);!Wt.isBrowserEnvValue&&!n.startsWith("http")&&(n=`https:${n}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function Ai(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!St.isRemoteInfoWithEntry(t)||!St.isPureRemoteEntry(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:i});Zr(s,a);const l={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},u=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:l,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});return u&&vi.preloadAssets(s,o,u,!1),{...e,remoteSnapshot:a}}return e}}}xe.assignRemoteInfo=Zr;xe.snapshotPlugin=Ai;var Qr={};const Ne=$,bt=b,ki=q,jt=Z,Oi=xe;let je=D;function wi(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function en(e,t,r,n,o={},s){const{value:i}=bt.getInfoWithoutType(e,Ne.getFMId(t)),a=s||i;if(a&&!(0,je.isManifestProvider)(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const u=wi(l),d=a.remotesInfo[l];en(e,{name:u.name,version:d.matchedVersion},r,!1,o,void 0)}}}const tt=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function Fi(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:u}=e,{preloadConfig:d}=t,{depsRemote:f}=d;if(en(n,r,(m,_,g)=>{var N;let p;if(g)p=d;else if(Array.isArray(f)){const R=f.find(v=>v.nameOrAlias===_.name||v.nameOrAlias===_.alias);if(!R)return;p=jt.defaultPreloadArgs(R)}else if(f===!0)p=d;else return;const E=(0,je.getResourceUrl)(m,Ne.getRemoteEntryInfoFromSnapshot(m).url);E&&a.push({name:_.name,moduleInfo:{name:_.name,entry:E,type:"remoteEntryType"in m?m.remoteEntryType:"global",entryGlobalName:"globalName"in m?m.globalName:_.name,shareScope:"",version:"version"in m?m.version:void 0},url:E});let I="modules"in m?m.modules:[];const O=jt.normalizePreloadExposes(p.exposes);O.length&&"modules"in m&&(I=(N=m==null?void 0:m.modules)==null?void 0:N.reduce((R,v)=>((O==null?void 0:O.indexOf(v.moduleName))!==-1&&R.push(v),R),[]));function y(R){const v=R.map(B=>(0,je.getResourceUrl)(m,B));return p.filter?v.filter(p.filter):v}if(I){const R=I.length;for(let v=0;v0){const m=(_,g)=>{const{shared:p}=ki.getRegisteredShare(e.shareScopeMap,g.sharedName,_,e.sharedHandler.hooks.lifecycle.resolveShare)||{};p&&typeof p.lib=="function"&&(g.assets.js.sync.forEach(E=>{c.add(E)}),g.assets.css.sync.forEach(E=>{l.add(E)}))};o.shared.forEach(_=>{var E;const g=(E=u.shared)==null?void 0:E[_.sharedName];if(!g)return;const p=_.version?g.find(I=>I.version===_.version):g;p&&Ne.arrayOptions(p).forEach(I=>{m(I,_)})})}const h=i.filter(m=>!c.has(m)&&!tt("script",m));return{cssAssets:s.filter(m=>!l.has(m)&&!tt("link",m)),jsAssetsWithoutEntry:h,entryAssets:a.filter(m=>!tt("script",m.url))}}const Li=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return je.isBrowserEnvValue?Ne.isRemoteInfoWithEntry(o)&&Ne.isPureRemoteEntry(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(Oi.assignRemoteInfo(n,i),Fi(t,r,n,s,i)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};Qr.generatePreloadAssetsPlugin=Li;var Ke={};const rt=M,Di=$,U=b,Vt=Pe,Hi=ve,nt=Ae,Ci=ke;let ot=D,Fe=Y;function tn(e,t){const r=U.getGlobalSnapshotInfoByModuleInfo({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&U.getInfoWithoutType(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:"version"in e?e.version:void 0})}}var qi=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new Ci.PluginSystem({beforeLoadRemoteSnapshot:new Hi.AsyncHook("beforeLoadRemoteSnapshot"),loadSnapshot:new nt.AsyncWaterfallHook("loadGlobalSnapshot"),loadRemoteSnapshot:new nt.AsyncWaterfallHook("loadRemoteSnapshot"),afterLoadSnapshot:new nt.AsyncWaterfallHook("afterLoadSnapshot")}),this.manifestLoading=U.Global.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,expose:r}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e});let o=U.getGlobalSnapshotInfoByModuleInfo({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},U.addGlobalSnapshot({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!U.getInfoWithoutType(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let u,d;if(c)if((0,ot.isManifestProvider)(c)){const f=ot.isBrowserEnvValue?c.remoteEntry:c.ssrRemoteEntry||c.remoteEntry||"",h=await this.getManifestJson(f,e,{}),m=U.setGlobalSnapshotInfoByModuleInfo({...e,entry:f},h);u=h,d=m}else{const{remoteSnapshot:f}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});u=f,d=l}else if(Di.isRemoteInfoWithEntry(e)){const f=await this.getManifestJson(e.entry,e,{}),h=U.setGlobalSnapshotInfoByModuleInfo(e,f),{remoteSnapshot:m}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:f,from:"global"});u=m,d=h}else rt.error(Fe.RUNTIME_007,Fe.runtimeDescMap,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,Vt.optionsToMFContext(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:u}),{remoteSnapshot:u,globalSnapshot:d}}getGlobalRemoteInfo(e){return tn(e,this.HostInstance)}async getManifestJson(e,t,r){const n=async()=>{let s=this.manifestCache.get(e);if(s)return s;try{let i=await this.loaderHook.lifecycle.fetch.emit(e,{});(!i||!(i instanceof Response))&&(i=await fetch(e,{})),s=await i.json()}catch(i){s=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}),s||(delete this.manifestLoading[e],rt.error(Fe.RUNTIME_003,Fe.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${i}`,Vt.optionsToMFContext(this.HostInstance.options)))}return rt.assert(s.metaData&&s.exposes&&s.shared,`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${[!s.metaData&&"metaData",!s.exposes&&"exposes",!s.shared&&"shared"].filter(Boolean).join(", ")}.`),this.manifestCache.set(e,s),s},o=async()=>{const s=await n(),i=(0,ot.generateSnapshotFromManifest)(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}};Ke.SnapshotHandler=qi;Ke.getGlobalRemoteInfo=tn;var rn={};const st=M,Gi=oe,A=q,Xt=Pe,Ui=ve,it=_e,xt=Ae,Wi=ke;let pe=Y;var Bi=class{constructor(e){this.hooks=new Wi.PluginSystem({beforeRegisterShare:new it.SyncWaterfallHook("beforeRegisterShare"),afterResolve:new xt.AsyncWaterfallHook("afterResolve"),beforeLoadShare:new xt.AsyncWaterfallHook("beforeLoadShare"),loadShare:new Ui.AsyncHook,resolveShare:new it.SyncWaterfallHook("resolveShare"),initContainerShareScopeMap:new it.SyncWaterfallHook("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=A.formatShareConfigs(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var a;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s}),(a=this.shareScopeMap[i])!=null&&a[o]||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&await Promise.all(n.scope.map(async a=>{await Promise.all(this.initializeSharing(a,{strategy:n.strategy}))}));const{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});st.assert(o,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const{shared:s,useTreesShaking:i}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(s){const a=A.directShare(s,i);if(a.lib)return A.addUseIn(a,r.options.name),a.lib;if(a.loading&&!a.loaded){const c=await a.loading;return a.loaded=!0,a.lib||(a.lib=c),A.addUseIn(a,r.options.name),c}else{const l=(async()=>{const u=await a.get();return A.addUseIn(a,r.options.name),a.loaded=!0,a.lib=u,u})();return this.setShared({pkgName:e,loaded:!1,shared:s,from:r.options.name,lib:null,loading:l,treeShaking:i?a:void 0}),l}}else{if(t!=null&&t.customShareInfo)return!1;const a=A.shouldUseTreeShaking(o.treeShaking),c=A.directShare(o,a),u=(async()=>{const d=await c.get();c.lib=d,c.loaded=!0,A.addUseIn(c,r.options.name);const{shared:f,useTreesShaking:h}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(f){const m=A.directShare(f,h);m.lib=d,m.loaded=!0,f.from=o.from}return d})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:u,treeShaking:a?c:void 0}),u}}initializeSharing(e=Gi.DEFAULT_SCOPE,t){const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy;let s=t==null?void 0:t.initScope;const i=[];if(n!=="build"){const{initTokens:f}=this;s||(s=[]);let h=f[e];if(h||(h=f[e]={from:this.host.name}),s.indexOf(h)>=0)return i;s.push(h)}const a=this.shareScopeMap,c=r.options.name;a[e]||(a[e]={});const l=a[e],u=(f,h)=>{var I;const{version:m,eager:_}=h;l[f]=l[f]||{};const g=l[f],p=g[m]&&A.directShare(g[m]),E=!!(p&&("eager"in p&&p.eager||"shareConfig"in p&&((I=p.shareConfig)!=null&&I.eager)));(!p||p.strategy!=="loaded-first"&&!p.loaded&&(!_!=!E?_:c>g[m].from))&&(g[m]=h)},d=async f=>{const{module:h}=await r.remoteHandler.getRemoteModuleAndOptions({id:f});let m;try{m=await h.getEntry()}catch(_){if(m=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:f,error:_,from:"runtime",lifecycle:"beforeLoadShare",origin:r}),!m)return}finally{m!=null&&m.init&&!h.initing&&(h.remoteEntryExports=m,await h.init(void 0,void 0,s))}};return Object.keys(r.options.shared).forEach(f=>{r.options.shared[f].forEach(h=>{h.scope.includes(e)&&u(f,h)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(f=>{f.shareScope===e&&i.push(d(f.name))}),i}loadShareSync(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&n.scope.forEach(i=>{this.initializeSharing(i,{strategy:n.strategy})});const{shared:o,useTreesShaking:s}=A.getRegisteredShare(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(o){if(typeof o.lib=="function")return A.addUseIn(o,r.options.name),o.loaded||(o.loaded=!0,o.from===r.options.name&&(n.loaded=!0)),o.lib;if(typeof o.get=="function"){const i=o.get();if(!(i instanceof Promise))return A.addUseIn(o,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:o}),i}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){const i=n.get();return i instanceof Promise&&st.error((t==null?void 0:t.from)==="build"?pe.RUNTIME_005:pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options)),n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}st.error(pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options))}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...u}=t,d=Array.isArray(l)?l:[l],f=h=>{const m=(g,p,E)=>{E&&!g[p]&&(g[p]=E)},_=a?h.treeShaking:h;m(_,"loaded",s),m(_,"loading",o),m(_,"get",i)};d.forEach(h=>{this.shareScopeMap[h]||(this.shareScopeMap[h]={}),this.shareScopeMap[h][e]||(this.shareScopeMap[h][e]={}),this.shareScopeMap[h][e][c]||(this.shareScopeMap[h][e][c]={version:c,scope:[h],...u,lib:n});const m=this.shareScopeMap[h][e][c];f(m),r&&m.from!==r&&(m.from=r)})}_setGlobalShareScopeMap(e){const t=A.getGlobalShareScope(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}};rn.SharedHandler=Bi;var nn={};const Le=M,G=b,Kt=oe,ji=q,Vi=he,at=K,Xi=Pe,Yt=Z,xi=Xe,Ki=me,ie=ve,zt=_e,Yi=Ae,zi=ke,Ji=Ke;let lt=D,Jt=Y;var Zi=class{constructor(e){this.hooks=new zi.PluginSystem({beforeRegisterRemote:new zt.SyncWaterfallHook("beforeRegisterRemote"),registerRemote:new zt.SyncWaterfallHook("registerRemote"),beforeRequest:new Yi.AsyncWaterfallHook("beforeRequest"),onLoad:new ie.AsyncHook("onLoad"),handlePreloadModule:new Ki.SyncHook("handlePreloadModule"),errorLoadRemote:new ie.AsyncHook("errorLoadRemote"),beforePreloadRemote:new ie.AsyncHook("beforePreloadRemote"),generatePreloadAssets:new ie.AsyncHook("generatePreloadAssets"),afterPreloadRemote:new ie.AsyncHook,loadEntry:new ie.AsyncHook}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this;try{const{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:s,remoteMatchInfo:i}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:a,remote:c,expose:l,id:u,remoteSnapshot:d}=i,f=await o.get(u,l,t,d),h=await this.hooks.lifecycle.onLoad.emit({id:u,pkgNameOrAlias:a,expose:l,exposeModule:n?f:void 0,exposeModuleFactory:n?void 0:f,remote:c,options:s,moduleInstance:o,origin:r});return this.setIdToRemoteMap(e,i),typeof h=="function"?h:f}catch(n){const{from:o="runtime"}=t||{from:"runtime"},s=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:o,lifecycle:"onLoad",origin:r});if(!s)throw n;return s}}async preloadRemote(e){const{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const r=Yt.formatPreloadArgs(t.options.remotes,e);await Promise.all(r.map(async n=>{const{remote:o}=n,s=at.getRemoteInfo(o),{globalSnapshot:i,remoteSnapshot:a}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:o}),c=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:n,remote:o,remoteInfo:s,globalSnapshot:i,remoteSnapshot:a});c&&Yt.preloadAssets(s,t,c)}))}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(h){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:h,lifecycle:"beforeRequest"}),!n)throw h}const{id:o}=n,s=Vi.matchRemoteWithNameAndExpose(t.options.remotes,o);s||Le.error(Jt.RUNTIME_004,Jt.runtimeDescMap,{hostName:t.options.name,requestId:o},void 0,Xi.optionsToMFContext(t.options));const{remote:i}=s,a=at.getRemoteInfo(i),c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:u}=c;Le.assert(l&&u,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let d=t.moduleCache.get(l.name);const f={host:t,remoteInfo:a};return d||(d=new xi.Module(f),t.moduleCache.set(l.name,d)),{module:d,moduleOptions:f,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});Le.assert(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&<.isBrowserEnvValue&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=Kt.DEFAULT_SCOPE),e.type||(e.type=Kt.DEFAULT_REMOTE_TYPE)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),(0,lt.warn)(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(i=>i.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=r.moduleCache.get(e.name);if(s){const i=s.remoteInfo,a=i.entryGlobalName;G.CurrentGlobal[a]&&((t=Object.getOwnPropertyDescriptor(G.CurrentGlobal,a))!=null&&t.configurable?delete G.CurrentGlobal[a]:G.CurrentGlobal[a]=void 0);const c=at.getRemoteEntryUniqueKey(s.remoteInfo);G.globalLoading[c]&&delete G.globalLoading[c],r.snapshotHandler.manifestCache.delete(i.entry);let l=i.buildVersion?(0,lt.composeKeyWithSeparator)(i.name,i.buildVersion):i.name;const u=G.CurrentGlobal.__FEDERATION__.__INSTANCES__.findIndex(f=>i.buildVersion?f.options.id===l:f.name===l);if(u!==-1){const f=G.CurrentGlobal.__FEDERATION__.__INSTANCES__[u];l=f.options.id||l;const h=ji.getGlobalShareScope();let m=!0;const _=[];Object.keys(h).forEach(g=>{const p=h[g];p&&Object.keys(p).forEach(E=>{const I=p[E];I&&Object.keys(I).forEach(O=>{const y=I[O];y&&Object.keys(y).forEach(N=>{const R=y[N];R&&typeof R=="object"&&R.from===i.name&&(R.loaded||R.loading?(R.useIn=R.useIn.filter(v=>v!==i.name),R.useIn.length?m=!1:_.push([g,E,O,N])):_.push([g,E,O,N]))})})})}),m&&(f.shareScopeMap={},delete h[l]),_.forEach(([g,p,E,I])=>{var O,y,N;(N=(y=(O=h[g])==null?void 0:O[p])==null?void 0:y[E])==null||delete N[I]}),G.CurrentGlobal.__FEDERATION__.__INSTANCES__.splice(u,1)}const{hostGlobalSnapshot:d}=Ji.getGlobalRemoteInfo(e,r);if(d){const f=d&&"remotesInfo"in d&&d.remotesInfo&&G.getInfoWithoutType(d.remotesInfo,e.name).key;f&&(delete d.remotesInfo[f],G.Global.__FEDERATION__.__MANIFEST_LOADING__[f]&&delete G.Global.__FEDERATION__.__MANIFEST_LOADING__[f])}r.moduleCache.delete(e.name)}}catch(r){Le.logger.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};nn.RemoteHandler=Zi;const Qi=M,ea=oe,ta=q,ra=Vr,na=Xr,oa=K,sa=Xe,z=me,ct=ve,ia=_e,Zt=Ae,ut=ke,aa=xe,la=Qr,ca=Ke,ua=rn,fa=nn;let da=D,ft=Y;const ha=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0;var ma=class{constructor(e){this.hooks=new ut.PluginSystem({beforeInit:new ia.SyncWaterfallHook("beforeInit"),init:new z.SyncHook,beforeInitContainer:new Zt.AsyncWaterfallHook("beforeInitContainer"),initContainer:new Zt.AsyncWaterfallHook("initContainer")}),this.version="2.2.2",this.moduleCache=new Map,this.loaderHook=new ut.PluginSystem({getModuleInfo:new z.SyncHook,createScript:new z.SyncHook,createLink:new z.SyncHook,fetch:new ct.AsyncHook,loadEntryError:new ct.AsyncHook,getModuleFactory:new ct.AsyncHook}),this.bridgeHook=new ut.PluginSystem({beforeBridgeRender:new z.SyncHook,afterBridgeRender:new z.SyncHook,beforeBridgeDestroy:new z.SyncHook,afterBridgeDestroy:new z.SyncHook});const t=ha?[aa.snapshotPlugin(),la.generatePreloadAssetsPlugin()]:[],r={id:ra.getBuilderId(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:da.isBrowserEnvValue};this.name=e.name,this.options=r,this.snapshotHandler=new ca.SnapshotHandler(this),this.sharedHandler=new ua.SharedHandler(this),this.remoteHandler=new fa.RemoteHandler(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&Qi.error((0,ft.getShortErrorMsg)(ft.RUNTIME_010,ft.runtimeDescMap)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=ea.DEFAULT_SCOPE,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){const n=oa.getRemoteInfo({name:e,entry:t}),o=new sa.Module({host:this,remoteInfo:n});return o.remoteEntryExports=r,this.moduleCache.set(e,o),o}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const{allShareInfos:r}=ta.formatShareConfigs(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){const t=na.registerPlugins(e,this);this.options.plugins=this.options.plugins.reduce((r,n)=>(n&&r&&!r.find(o=>o.name===n.name)&&r.push(n),r),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};Yr.ModuleFederation=ma;var on={},sn={},Qt=Object.defineProperty,_a=(e,t)=>{let r={};for(var n in e)Qt(r,n,{get:e[n],enumerable:!0});return t||Qt(r,Symbol.toStringTag,{value:"Module"}),r};sn.__exportAll=_a;(function(e){var r=sn.__exportAll({});Object.defineProperty(e,"type_exports",{enumerable:!0,get:function(){return r}})})(on);(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=M,r=$,n=b,o=Pt,s=q,i=he,a=K,c=xr,l=Xe,u=Yr,d=on;let f=D;const h=c.default;e.CurrentGlobal=n.CurrentGlobal,e.Global=n.Global,e.Module=l.Module,e.ModuleFederation=u.ModuleFederation,e.addGlobalSnapshot=n.addGlobalSnapshot,e.assert=t.assert,e.error=t.error,e.getGlobalFederationConstructor=n.getGlobalFederationConstructor,e.getGlobalSnapshot=n.getGlobalSnapshot,e.getInfoWithoutType=n.getInfoWithoutType,e.getRegisteredShare=s.getRegisteredShare,e.getRemoteEntry=a.getRemoteEntry,e.getRemoteInfo=a.getRemoteInfo,e.helpers=h,e.isStaticResourcesEqual=r.isStaticResourcesEqual,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return f.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return f.loadScriptNode}}),e.matchRemoteWithNameAndExpose=i.matchRemoteWithNameAndExpose,e.registerGlobalPlugins=n.registerGlobalPlugins,e.resetFederationGlobalInfo=n.resetFederationGlobalInfo,e.safeWrapper=r.safeWrapper,e.satisfy=o.satisfy,e.setGlobalFederationConstructor=n.setGlobalFederationConstructor,e.setGlobalFederationInstance=n.setGlobalFederationInstance,Object.defineProperty(e,"types",{enumerable:!0,get:function(){return d.type_exports}})})(Tt);let ga=Tt;function pa(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function ya(e,t){const r=pa();return ga.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(n=>!!(r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&t&&n.options.version===t))}ar.getGlobalFederationInstance=ya;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ar;let r=Tt,n=Y;function o(_){const g=new((0,r.getGlobalFederationConstructor)()||r.ModuleFederation)(_);return(0,r.setGlobalFederationInstance)(g),g}let s=null;function i(_){const g=t.getGlobalFederationInstance(_.name,_.version);return g?(g.initOptions(_),s||(s=g),g):(s=o(_),s)}function a(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadRemote.apply(s,_)}function c(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShare.apply(s,_)}function l(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShareSync.apply(s,_)}function u(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.preloadRemote.apply(s,_)}function d(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerRemotes.apply(s,_)}function f(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerPlugins.apply(s,_)}function h(){return s}function m(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerShared.apply(s,_)}(0,r.setGlobalFederationConstructor)(r.ModuleFederation),Object.defineProperty(e,"Module",{enumerable:!0,get:function(){return r.Module}}),e.ModuleFederation=r.ModuleFederation,e.createInstance=o,e.getInstance=h,Object.defineProperty(e,"getRemoteEntry",{enumerable:!0,get:function(){return r.getRemoteEntry}}),Object.defineProperty(e,"getRemoteInfo",{enumerable:!0,get:function(){return r.getRemoteInfo}}),e.init=i,e.loadRemote=a,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return r.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return r.loadScriptNode}}),e.loadShare=c,e.loadShareSync=l,e.preloadRemote=u,Object.defineProperty(e,"registerGlobalPlugins",{enumerable:!0,get:function(){return r.registerGlobalPlugins}}),e.registerPlugins=f,e.registerRemotes=d,e.registerShared=m})(ir);const an="__mf_init____mf__virtual/iobroker_javascript__mf_v__runtimeInit__mf_v__.js__";let Rt=globalThis[an];if(!Rt){let e,t;const r=new Promise((n,o)=>{e=n,t=o});Rt=globalThis[an]={initPromise:r,initResolve:e,initReject:t},typeof window>"u"&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}const Ea=Rt.initResolve,er={},tr="default",rr="iobroker_javascript";let nr,or;async function Sa(){return nr??=sr(()=>import("./localSharedImportMap-z2-feH7e.js"),__vite__mapDeps([0,1]),import.meta.url),nr}async function ba(){return or??=sr(()=>import("./virtualExposes-BPsCufin.js"),[],import.meta.url).then(e=>e.default??e),or}async function Ta(e={},t=[]){const{usedShared:r,usedRemotes:n}=await Sa(),o=ir.init({name:rr,remotes:n,shared:r,plugins:[],shareStrategy:"version-first"});var s=er[tr];if(s||(s=er[tr]={from:rr}),!(t.indexOf(s)>=0)){t.push(s),o.initShareScopeMap("default",e),Ea(o);try{await Promise.all(await o.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(i){console.error(i)}return o}}async function Ia(e){const t=await ba();if(!(e in t))throw new Error(`Module ${e} does not exist in container.`);return t[e]().then(r=>()=>r)}export{ir as d,Ia as g,Ta as i}; + ${(0,mi.safeToString)(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t,r){const n=await this.getEntry();if(this.inited)return n;if(this.initPromise)return await this.initPromise,n;this.initing=!0,this.initPromise=(async()=>{const{remoteEntryInitOptions:o,shareScope:s,initScope:i}=_i(this.remoteInfo,this.host.shareScopeMap,r),a=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:s,remoteEntryInitOptions:o,initScope:i,remoteInfo:this.remoteInfo,origin:this.host});typeof(n==null?void 0:n.init)>"u"&&Ze.error(Ut.RUNTIME_002,Ut.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,hi.optionsToMFContext(this.host.options)),await n.init(a.shareScope,a.initScope,a.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...a,id:e,remoteSnapshot:t,remoteEntryExports:n}),this.inited=!0})();try{await this.initPromise}finally{this.initing=!1,this.initPromise=void 0}return n}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n);this.lib=s;let i;i=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo}),i||(i=await s.get(t)),Ze.assert(i,`${Gt.getFMId(this.remoteInfo)} remote don't export ${t}.`);const a=Gt.processModuleAlias(this.remoteInfo.name,t),c=this.wraperFactory(i,a);return o?await c():c}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return e instanceof Promise?async()=>{const n=await e();return r(n,t),n}:()=>{const n=e();return r(n,t),n}}};Xe.Module=gi;var Yr={},me={},pi=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{t=r(...e)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}};me.SyncHook=pi;var ve={};const yi=me;var Ei=class extends yi.SyncHook{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n0){let r=0;const n=s=>(et.warn(s),this.onerror(s),e),o=s=>{if(Ii.checkReturnData(e,s)){if(e=s,r{const s=e[o];s&&this.lifecycle[o].on(s)}))}removePlugin(e){we.assert(e,"A name is required.");const t=this.registerPlugins[e];we.assert(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(r=>{r!=="name"&&this.lifecycle[r].remove(t[r])})}};ke.PluginSystem=Mi;var xe={};const Pi=M,St=$,vi=Z;let Wt=D,Bt=Y;function Zr(e,t){const r=St.getRemoteEntryInfoFromSnapshot(t);r.url||Pi.error(Bt.RUNTIME_011,Bt.runtimeDescMap,{remoteName:e.name});let n=(0,Wt.getResourceUrl)(t,r.url);!Wt.isBrowserEnvValue&&!n.startsWith("http")&&(n=`https:${n}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function Ai(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!St.isRemoteInfoWithEntry(t)||!St.isPureRemoteEntry(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:i});Zr(s,a);const l={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},u=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:l,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});return u&&vi.preloadAssets(s,o,u,!1),{...e,remoteSnapshot:a}}return e}}}xe.assignRemoteInfo=Zr;xe.snapshotPlugin=Ai;var Qr={};const Ne=$,bt=b,ki=q,jt=Z,Oi=xe;let je=D;function wi(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function en(e,t,r,n,o={},s){const{value:i}=bt.getInfoWithoutType(e,Ne.getFMId(t)),a=s||i;if(a&&!(0,je.isManifestProvider)(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const u=wi(l),d=a.remotesInfo[l];en(e,{name:u.name,version:d.matchedVersion},r,!1,o,void 0)}}}const tt=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function Fi(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:u}=e,{preloadConfig:d}=t,{depsRemote:f}=d;if(en(n,r,(m,_,g)=>{var N;let p;if(g)p=d;else if(Array.isArray(f)){const R=f.find(v=>v.nameOrAlias===_.name||v.nameOrAlias===_.alias);if(!R)return;p=jt.defaultPreloadArgs(R)}else if(f===!0)p=d;else return;const E=(0,je.getResourceUrl)(m,Ne.getRemoteEntryInfoFromSnapshot(m).url);E&&a.push({name:_.name,moduleInfo:{name:_.name,entry:E,type:"remoteEntryType"in m?m.remoteEntryType:"global",entryGlobalName:"globalName"in m?m.globalName:_.name,shareScope:"",version:"version"in m?m.version:void 0},url:E});let I="modules"in m?m.modules:[];const O=jt.normalizePreloadExposes(p.exposes);O.length&&"modules"in m&&(I=(N=m==null?void 0:m.modules)==null?void 0:N.reduce((R,v)=>((O==null?void 0:O.indexOf(v.moduleName))!==-1&&R.push(v),R),[]));function y(R){const v=R.map(B=>(0,je.getResourceUrl)(m,B));return p.filter?v.filter(p.filter):v}if(I){const R=I.length;for(let v=0;v0){const m=(_,g)=>{const{shared:p}=ki.getRegisteredShare(e.shareScopeMap,g.sharedName,_,e.sharedHandler.hooks.lifecycle.resolveShare)||{};p&&typeof p.lib=="function"&&(g.assets.js.sync.forEach(E=>{c.add(E)}),g.assets.css.sync.forEach(E=>{l.add(E)}))};o.shared.forEach(_=>{var E;const g=(E=u.shared)==null?void 0:E[_.sharedName];if(!g)return;const p=_.version?g.find(I=>I.version===_.version):g;p&&Ne.arrayOptions(p).forEach(I=>{m(I,_)})})}const h=i.filter(m=>!c.has(m)&&!tt("script",m));return{cssAssets:s.filter(m=>!l.has(m)&&!tt("link",m)),jsAssetsWithoutEntry:h,entryAssets:a.filter(m=>!tt("script",m.url))}}const Li=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return je.isBrowserEnvValue?Ne.isRemoteInfoWithEntry(o)&&Ne.isPureRemoteEntry(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(Oi.assignRemoteInfo(n,i),Fi(t,r,n,s,i)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};Qr.generatePreloadAssetsPlugin=Li;var Ke={};const rt=M,Di=$,U=b,Vt=Pe,Hi=ve,nt=Ae,Ci=ke;let ot=D,Fe=Y;function tn(e,t){const r=U.getGlobalSnapshotInfoByModuleInfo({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&U.getInfoWithoutType(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:U.getGlobalSnapshot(),remoteSnapshot:U.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:"version"in e?e.version:void 0})}}var qi=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new Ci.PluginSystem({beforeLoadRemoteSnapshot:new Hi.AsyncHook("beforeLoadRemoteSnapshot"),loadSnapshot:new nt.AsyncWaterfallHook("loadGlobalSnapshot"),loadRemoteSnapshot:new nt.AsyncWaterfallHook("loadRemoteSnapshot"),afterLoadSnapshot:new nt.AsyncWaterfallHook("afterLoadSnapshot")}),this.manifestLoading=U.Global.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,expose:r}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e});let o=U.getGlobalSnapshotInfoByModuleInfo({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},U.addGlobalSnapshot({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!U.getInfoWithoutType(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let u,d;if(c)if((0,ot.isManifestProvider)(c)){const f=ot.isBrowserEnvValue?c.remoteEntry:c.ssrRemoteEntry||c.remoteEntry||"",h=await this.getManifestJson(f,e,{}),m=U.setGlobalSnapshotInfoByModuleInfo({...e,entry:f},h);u=h,d=m}else{const{remoteSnapshot:f}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});u=f,d=l}else if(Di.isRemoteInfoWithEntry(e)){const f=await this.getManifestJson(e.entry,e,{}),h=U.setGlobalSnapshotInfoByModuleInfo(e,f),{remoteSnapshot:m}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:f,from:"global"});u=m,d=h}else rt.error(Fe.RUNTIME_007,Fe.runtimeDescMap,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,Vt.optionsToMFContext(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:u}),{remoteSnapshot:u,globalSnapshot:d}}getGlobalRemoteInfo(e){return tn(e,this.HostInstance)}async getManifestJson(e,t,r){const n=async()=>{let s=this.manifestCache.get(e);if(s)return s;try{let i=await this.loaderHook.lifecycle.fetch.emit(e,{});(!i||!(i instanceof Response))&&(i=await fetch(e,{})),s=await i.json()}catch(i){s=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}),s||(delete this.manifestLoading[e],rt.error(Fe.RUNTIME_003,Fe.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${i}`,Vt.optionsToMFContext(this.HostInstance.options)))}return rt.assert(s.metaData&&s.exposes&&s.shared,`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${[!s.metaData&&"metaData",!s.exposes&&"exposes",!s.shared&&"shared"].filter(Boolean).join(", ")}.`),this.manifestCache.set(e,s),s},o=async()=>{const s=await n(),i=(0,ot.generateSnapshotFromManifest)(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}};Ke.SnapshotHandler=qi;Ke.getGlobalRemoteInfo=tn;var rn={};const st=M,Gi=oe,A=q,Xt=Pe,Ui=ve,it=_e,xt=Ae,Wi=ke;let pe=Y;var Bi=class{constructor(e){this.hooks=new Wi.PluginSystem({beforeRegisterShare:new it.SyncWaterfallHook("beforeRegisterShare"),afterResolve:new xt.AsyncWaterfallHook("afterResolve"),beforeLoadShare:new xt.AsyncWaterfallHook("beforeLoadShare"),loadShare:new Ui.AsyncHook,resolveShare:new it.SyncWaterfallHook("resolveShare"),initContainerShareScopeMap:new it.SyncWaterfallHook("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=A.formatShareConfigs(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var a;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s}),(a=this.shareScopeMap[i])!=null&&a[o]||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&await Promise.all(n.scope.map(async a=>{await Promise.all(this.initializeSharing(a,{strategy:n.strategy}))}));const{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});st.assert(o,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const{shared:s,useTreesShaking:i}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(s){const a=A.directShare(s,i);if(a.lib)return A.addUseIn(a,r.options.name),a.lib;if(a.loading&&!a.loaded){const c=await a.loading;return a.loaded=!0,a.lib||(a.lib=c),A.addUseIn(a,r.options.name),c}else{const l=(async()=>{const u=await a.get();return A.addUseIn(a,r.options.name),a.loaded=!0,a.lib=u,u})();return this.setShared({pkgName:e,loaded:!1,shared:s,from:r.options.name,lib:null,loading:l,treeShaking:i?a:void 0}),l}}else{if(t!=null&&t.customShareInfo)return!1;const a=A.shouldUseTreeShaking(o.treeShaking),c=A.directShare(o,a),u=(async()=>{const d=await c.get();c.lib=d,c.loaded=!0,A.addUseIn(c,r.options.name);const{shared:f,useTreesShaking:h}=A.getRegisteredShare(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(f){const m=A.directShare(f,h);m.lib=d,m.loaded=!0,f.from=o.from}return d})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:u,treeShaking:a?c:void 0}),u}}initializeSharing(e=Gi.DEFAULT_SCOPE,t){const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy;let s=t==null?void 0:t.initScope;const i=[];if(n!=="build"){const{initTokens:f}=this;s||(s=[]);let h=f[e];if(h||(h=f[e]={from:this.host.name}),s.indexOf(h)>=0)return i;s.push(h)}const a=this.shareScopeMap,c=r.options.name;a[e]||(a[e]={});const l=a[e],u=(f,h)=>{var I;const{version:m,eager:_}=h;l[f]=l[f]||{};const g=l[f],p=g[m]&&A.directShare(g[m]),E=!!(p&&("eager"in p&&p.eager||"shareConfig"in p&&((I=p.shareConfig)!=null&&I.eager)));(!p||p.strategy!=="loaded-first"&&!p.loaded&&(!_!=!E?_:c>g[m].from))&&(g[m]=h)},d=async f=>{const{module:h}=await r.remoteHandler.getRemoteModuleAndOptions({id:f});let m;try{m=await h.getEntry()}catch(_){if(m=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:f,error:_,from:"runtime",lifecycle:"beforeLoadShare",origin:r}),!m)return}finally{m!=null&&m.init&&!h.initing&&(h.remoteEntryExports=m,await h.init(void 0,void 0,s))}};return Object.keys(r.options.shared).forEach(f=>{r.options.shared[f].forEach(h=>{h.scope.includes(e)&&u(f,h)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(f=>{f.shareScope===e&&i.push(d(f.name))}),i}loadShareSync(e,t){const{host:r}=this,n=A.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});n!=null&&n.scope&&n.scope.forEach(i=>{this.initializeSharing(i,{strategy:n.strategy})});const{shared:o,useTreesShaking:s}=A.getRegisteredShare(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(o){if(typeof o.lib=="function")return A.addUseIn(o,r.options.name),o.loaded||(o.loaded=!0,o.from===r.options.name&&(n.loaded=!0)),o.lib;if(typeof o.get=="function"){const i=o.get();if(!(i instanceof Promise))return A.addUseIn(o,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:o}),i}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){const i=n.get();return i instanceof Promise&&st.error((t==null?void 0:t.from)==="build"?pe.RUNTIME_005:pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options)),n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}st.error(pe.RUNTIME_006,pe.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,Xt.optionsToMFContext(r.options))}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...u}=t,d=Array.isArray(l)?l:[l],f=h=>{const m=(g,p,E)=>{E&&!g[p]&&(g[p]=E)},_=a?h.treeShaking:h;m(_,"loaded",s),m(_,"loading",o),m(_,"get",i)};d.forEach(h=>{this.shareScopeMap[h]||(this.shareScopeMap[h]={}),this.shareScopeMap[h][e]||(this.shareScopeMap[h][e]={}),this.shareScopeMap[h][e][c]||(this.shareScopeMap[h][e][c]={version:c,scope:[h],...u,lib:n});const m=this.shareScopeMap[h][e][c];f(m),r&&m.from!==r&&(m.from=r)})}_setGlobalShareScopeMap(e){const t=A.getGlobalShareScope(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}};rn.SharedHandler=Bi;var nn={};const Le=M,G=b,Kt=oe,ji=q,Vi=he,at=K,Xi=Pe,Yt=Z,xi=Xe,Ki=me,ie=ve,zt=_e,Yi=Ae,zi=ke,Ji=Ke;let lt=D,Jt=Y;var Zi=class{constructor(e){this.hooks=new zi.PluginSystem({beforeRegisterRemote:new zt.SyncWaterfallHook("beforeRegisterRemote"),registerRemote:new zt.SyncWaterfallHook("registerRemote"),beforeRequest:new Yi.AsyncWaterfallHook("beforeRequest"),onLoad:new ie.AsyncHook("onLoad"),handlePreloadModule:new Ki.SyncHook("handlePreloadModule"),errorLoadRemote:new ie.AsyncHook("errorLoadRemote"),beforePreloadRemote:new ie.AsyncHook("beforePreloadRemote"),generatePreloadAssets:new ie.AsyncHook("generatePreloadAssets"),afterPreloadRemote:new ie.AsyncHook,loadEntry:new ie.AsyncHook}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this;try{const{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:s,remoteMatchInfo:i}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:a,remote:c,expose:l,id:u,remoteSnapshot:d}=i,f=await o.get(u,l,t,d),h=await this.hooks.lifecycle.onLoad.emit({id:u,pkgNameOrAlias:a,expose:l,exposeModule:n?f:void 0,exposeModuleFactory:n?void 0:f,remote:c,options:s,moduleInstance:o,origin:r});return this.setIdToRemoteMap(e,i),typeof h=="function"?h:f}catch(n){const{from:o="runtime"}=t||{from:"runtime"},s=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:o,lifecycle:"onLoad",origin:r});if(!s)throw n;return s}}async preloadRemote(e){const{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const r=Yt.formatPreloadArgs(t.options.remotes,e);await Promise.all(r.map(async n=>{const{remote:o}=n,s=at.getRemoteInfo(o),{globalSnapshot:i,remoteSnapshot:a}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:o}),c=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:n,remote:o,remoteInfo:s,globalSnapshot:i,remoteSnapshot:a});c&&Yt.preloadAssets(s,t,c)}))}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(h){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:h,lifecycle:"beforeRequest"}),!n)throw h}const{id:o}=n,s=Vi.matchRemoteWithNameAndExpose(t.options.remotes,o);s||Le.error(Jt.RUNTIME_004,Jt.runtimeDescMap,{hostName:t.options.name,requestId:o},void 0,Xi.optionsToMFContext(t.options));const{remote:i}=s,a=at.getRemoteInfo(i),c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:u}=c;Le.assert(l&&u,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let d=t.moduleCache.get(l.name);const f={host:t,remoteInfo:a};return d||(d=new xi.Module(f),t.moduleCache.set(l.name,d)),{module:d,moduleOptions:f,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});Le.assert(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&<.isBrowserEnvValue&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=Kt.DEFAULT_SCOPE),e.type||(e.type=Kt.DEFAULT_REMOTE_TYPE)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),(0,lt.warn)(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(i=>i.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=r.moduleCache.get(e.name);if(s){const i=s.remoteInfo,a=i.entryGlobalName;G.CurrentGlobal[a]&&((t=Object.getOwnPropertyDescriptor(G.CurrentGlobal,a))!=null&&t.configurable?delete G.CurrentGlobal[a]:G.CurrentGlobal[a]=void 0);const c=at.getRemoteEntryUniqueKey(s.remoteInfo);G.globalLoading[c]&&delete G.globalLoading[c],r.snapshotHandler.manifestCache.delete(i.entry);let l=i.buildVersion?(0,lt.composeKeyWithSeparator)(i.name,i.buildVersion):i.name;const u=G.CurrentGlobal.__FEDERATION__.__INSTANCES__.findIndex(f=>i.buildVersion?f.options.id===l:f.name===l);if(u!==-1){const f=G.CurrentGlobal.__FEDERATION__.__INSTANCES__[u];l=f.options.id||l;const h=ji.getGlobalShareScope();let m=!0;const _=[];Object.keys(h).forEach(g=>{const p=h[g];p&&Object.keys(p).forEach(E=>{const I=p[E];I&&Object.keys(I).forEach(O=>{const y=I[O];y&&Object.keys(y).forEach(N=>{const R=y[N];R&&typeof R=="object"&&R.from===i.name&&(R.loaded||R.loading?(R.useIn=R.useIn.filter(v=>v!==i.name),R.useIn.length?m=!1:_.push([g,E,O,N])):_.push([g,E,O,N]))})})})}),m&&(f.shareScopeMap={},delete h[l]),_.forEach(([g,p,E,I])=>{var O,y,N;(N=(y=(O=h[g])==null?void 0:O[p])==null?void 0:y[E])==null||delete N[I]}),G.CurrentGlobal.__FEDERATION__.__INSTANCES__.splice(u,1)}const{hostGlobalSnapshot:d}=Ji.getGlobalRemoteInfo(e,r);if(d){const f=d&&"remotesInfo"in d&&d.remotesInfo&&G.getInfoWithoutType(d.remotesInfo,e.name).key;f&&(delete d.remotesInfo[f],G.Global.__FEDERATION__.__MANIFEST_LOADING__[f]&&delete G.Global.__FEDERATION__.__MANIFEST_LOADING__[f])}r.moduleCache.delete(e.name)}}catch(r){Le.logger.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};nn.RemoteHandler=Zi;const Qi=M,ea=oe,ta=q,ra=Vr,na=Xr,oa=K,sa=Xe,z=me,ct=ve,ia=_e,Zt=Ae,ut=ke,aa=xe,la=Qr,ca=Ke,ua=rn,fa=nn;let da=D,ft=Y;const ha=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0;var ma=class{constructor(e){this.hooks=new ut.PluginSystem({beforeInit:new ia.SyncWaterfallHook("beforeInit"),init:new z.SyncHook,beforeInitContainer:new Zt.AsyncWaterfallHook("beforeInitContainer"),initContainer:new Zt.AsyncWaterfallHook("initContainer")}),this.version="2.2.2",this.moduleCache=new Map,this.loaderHook=new ut.PluginSystem({getModuleInfo:new z.SyncHook,createScript:new z.SyncHook,createLink:new z.SyncHook,fetch:new ct.AsyncHook,loadEntryError:new ct.AsyncHook,getModuleFactory:new ct.AsyncHook}),this.bridgeHook=new ut.PluginSystem({beforeBridgeRender:new z.SyncHook,afterBridgeRender:new z.SyncHook,beforeBridgeDestroy:new z.SyncHook,afterBridgeDestroy:new z.SyncHook});const t=ha?[aa.snapshotPlugin(),la.generatePreloadAssetsPlugin()]:[],r={id:ra.getBuilderId(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:da.isBrowserEnvValue};this.name=e.name,this.options=r,this.snapshotHandler=new ca.SnapshotHandler(this),this.sharedHandler=new ua.SharedHandler(this),this.remoteHandler=new fa.RemoteHandler(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&Qi.error((0,ft.getShortErrorMsg)(ft.RUNTIME_010,ft.runtimeDescMap)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=ea.DEFAULT_SCOPE,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){const n=oa.getRemoteInfo({name:e,entry:t}),o=new sa.Module({host:this,remoteInfo:n});return o.remoteEntryExports=r,this.moduleCache.set(e,o),o}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const{allShareInfos:r}=ta.formatShareConfigs(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){const t=na.registerPlugins(e,this);this.options.plugins=this.options.plugins.reduce((r,n)=>(n&&r&&!r.find(o=>o.name===n.name)&&r.push(n),r),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};Yr.ModuleFederation=ma;var on={},sn={},Qt=Object.defineProperty,_a=(e,t)=>{let r={};for(var n in e)Qt(r,n,{get:e[n],enumerable:!0});return t||Qt(r,Symbol.toStringTag,{value:"Module"}),r};sn.__exportAll=_a;(function(e){var r=sn.__exportAll({});Object.defineProperty(e,"type_exports",{enumerable:!0,get:function(){return r}})})(on);(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=M,r=$,n=b,o=Pt,s=q,i=he,a=K,c=xr,l=Xe,u=Yr,d=on;let f=D;const h=c.default;e.CurrentGlobal=n.CurrentGlobal,e.Global=n.Global,e.Module=l.Module,e.ModuleFederation=u.ModuleFederation,e.addGlobalSnapshot=n.addGlobalSnapshot,e.assert=t.assert,e.error=t.error,e.getGlobalFederationConstructor=n.getGlobalFederationConstructor,e.getGlobalSnapshot=n.getGlobalSnapshot,e.getInfoWithoutType=n.getInfoWithoutType,e.getRegisteredShare=s.getRegisteredShare,e.getRemoteEntry=a.getRemoteEntry,e.getRemoteInfo=a.getRemoteInfo,e.helpers=h,e.isStaticResourcesEqual=r.isStaticResourcesEqual,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return f.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return f.loadScriptNode}}),e.matchRemoteWithNameAndExpose=i.matchRemoteWithNameAndExpose,e.registerGlobalPlugins=n.registerGlobalPlugins,e.resetFederationGlobalInfo=n.resetFederationGlobalInfo,e.safeWrapper=r.safeWrapper,e.satisfy=o.satisfy,e.setGlobalFederationConstructor=n.setGlobalFederationConstructor,e.setGlobalFederationInstance=n.setGlobalFederationInstance,Object.defineProperty(e,"types",{enumerable:!0,get:function(){return d.type_exports}})})(Tt);let ga=Tt;function pa(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function ya(e,t){const r=pa();return ga.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(n=>!!(r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&t&&n.options.version===t))}ar.getGlobalFederationInstance=ya;(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ar;let r=Tt,n=Y;function o(_){const g=new((0,r.getGlobalFederationConstructor)()||r.ModuleFederation)(_);return(0,r.setGlobalFederationInstance)(g),g}let s=null;function i(_){const g=t.getGlobalFederationInstance(_.name,_.version);return g?(g.initOptions(_),s||(s=g),g):(s=o(_),s)}function a(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadRemote.apply(s,_)}function c(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShare.apply(s,_)}function l(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.loadShareSync.apply(s,_)}function u(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.preloadRemote.apply(s,_)}function d(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerRemotes.apply(s,_)}function f(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerPlugins.apply(s,_)}function h(){return s}function m(..._){return(0,r.assert)(s,n.RUNTIME_009,n.runtimeDescMap),s.registerShared.apply(s,_)}(0,r.setGlobalFederationConstructor)(r.ModuleFederation),Object.defineProperty(e,"Module",{enumerable:!0,get:function(){return r.Module}}),e.ModuleFederation=r.ModuleFederation,e.createInstance=o,e.getInstance=h,Object.defineProperty(e,"getRemoteEntry",{enumerable:!0,get:function(){return r.getRemoteEntry}}),Object.defineProperty(e,"getRemoteInfo",{enumerable:!0,get:function(){return r.getRemoteInfo}}),e.init=i,e.loadRemote=a,Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return r.loadScript}}),Object.defineProperty(e,"loadScriptNode",{enumerable:!0,get:function(){return r.loadScriptNode}}),e.loadShare=c,e.loadShareSync=l,e.preloadRemote=u,Object.defineProperty(e,"registerGlobalPlugins",{enumerable:!0,get:function(){return r.registerGlobalPlugins}}),e.registerPlugins=f,e.registerRemotes=d,e.registerShared=m})(ir);const an="__mf_init____mf__virtual/iobroker_javascript__mf_v__runtimeInit__mf_v__.js__";let Rt=globalThis[an];if(!Rt){let e,t;const r=new Promise((n,o)=>{e=n,t=o});Rt=globalThis[an]={initPromise:r,initResolve:e,initReject:t},typeof window>"u"&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}const Ea=Rt.initResolve,er={},tr="default",rr="iobroker_javascript";let nr,or;async function Sa(){return nr??=sr(()=>import("./localSharedImportMap-Cs4ibnCv.js"),__vite__mapDeps([0,1]),import.meta.url),nr}async function ba(){return or??=sr(()=>import("./virtualExposes-BPsCufin.js"),[],import.meta.url).then(e=>e.default??e),or}async function Ta(e={},t=[]){const{usedShared:r,usedRemotes:n}=await Sa(),o=ir.init({name:rr,remotes:n,shared:r,plugins:[],shareStrategy:"version-first"});var s=er[tr];if(s||(s=er[tr]={from:rr}),!(t.indexOf(s)>=0)){t.push(s),o.initShareScopeMap("default",e),Ea(o);try{await Promise.all(await o.initializeSharing("default",{strategy:"version-first",from:"build",initScope:t}))}catch(i){console.error(i)}return o}}async function Ia(e){const t=await ba();if(!(e in t))throw new Error(`Module ${e} does not exist in container.`);return t[e]().then(r=>()=>r)}export{ir as d,Ia as g,Ta as i}; diff --git a/admin/mf-manifest.json b/admin/mf-manifest.json index 071635eea..68ac8f099 100644 --- a/admin/mf-manifest.json +++ b/admin/mf-manifest.json @@ -1 +1 @@ -{"id":"iobroker_javascript","name":"iobroker_javascript","metaData":{"name":"iobroker_javascript","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_javascript"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_javascript","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_javascript:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Dsh1HfIY.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-BkyLyaYT.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-dN73sbyQ.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:prop-types","name":"prop-types","version":"15.8.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CVZSzCXy.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.7","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-MJuwtgsO.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]} \ No newline at end of file +{"id":"iobroker_javascript","name":"iobroker_javascript","metaData":{"name":"iobroker_javascript","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_javascript"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_javascript","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_javascript:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Dsh1HfIY.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-BkyLyaYT.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-dN73sbyQ.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:prop-types","name":"prop-types","version":"15.8.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CVZSzCXy.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.7","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Be9Zg6aF.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]} \ No newline at end of file diff --git a/admin/remoteEntry.js b/admin/remoteEntry.js index 2bc59fa4f..042ea084d 100644 --- a/admin/remoteEntry.js +++ b/admin/remoteEntry.js @@ -1 +1 @@ -import"./assets/preload-helper-BDBacUwf.js";import{g as r,i as a}from"./assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-3BfunITe.js";export{r as get,a as init}; +import"./assets/preload-helper-BDBacUwf.js";import{g as r,i as a}from"./assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Dus28I2g.js";export{r as get,a as init}; diff --git a/admin/tab.html b/admin/tab.html index 742c8f6de..ce2d30007 100644 --- a/admin/tab.html +++ b/admin/tab.html @@ -115,9 +115,9 @@ type="text/javascript" src="google-blockly/own/blocks_object.js" > - + - + From 97733e568fdfc4b64295560430325cfa219bdff5 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Fri, 12 Jun 2026 21:13:15 +0200 Subject: [PATCH 5/6] Added the possiblilty to execute scripts from AI agent --- build/main.js | 6 +++++- build/main.js.map | 2 +- src/main.ts | 21 +++++++++++++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/build/main.js b/build/main.js index 329727620..57701e319 100644 --- a/build/main.js +++ b/build/main.js @@ -2437,7 +2437,11 @@ class JavaScript extends adapter_core_1.Adapter { } timeout = Math.max(0, Math.min(timeout, 60000)); const verbose = message?.verbose !== false; - const minLevel = LEVELS.includes(message?.logLevel) ? message.logLevel : 'silly'; + const minLevel = message?.logLevel + ? LEVELS.includes(message?.logLevel) + ? message.logLevel + : 'silly' + : 'silly'; let maxLogs = parseInt(message?.maxLogs, 10); if (isNaN(maxLogs) || maxLogs <= 0) { maxLogs = 5000; diff --git a/build/main.js.map b/build/main.js.map index 2a428e4cc..2c3bfea72 100644 --- a/build/main.js.map +++ b/build/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Javascript adapter\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2024 bluefox ,\n *\n * Copyright (c) 2014 hobbyquaker\n */\n\nimport { Script, type ScriptOptions } from 'node:vm';\nimport { readFileSync, existsSync, statSync, writeFileSync, type Stats } from 'node:fs';\nimport { join, sep, normalize } from 'node:path';\nimport { fork, type ForkOptions } from 'node:child_process';\nimport { setTypeScriptResolveOptions, Server } from 'virtual-tsc';\nimport { isDeepStrictEqual } from 'node:util';\nimport prettier from 'prettier';\n\nimport * as dgram from 'node:dgram';\nimport * as crypto from 'node:crypto';\nimport * as dns from 'node:dns';\nimport * as events from 'node:events';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport * as http2 from 'node:http2';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport * as util from 'node:util';\nimport * as child_process from 'node:child_process';\nimport * as stream from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n// @ts-expect-error no types available\nimport * as suncalc from 'suncalc2';\nimport * as axios from 'axios';\n// @ts-expect-error no types available\nimport * as wake_on_lan from 'wake_on_lan';\nimport * as nodeSchedule from 'node-schedule';\n\nimport {\n getAbsoluteDefaultDataDir,\n Adapter,\n Credentials,\n EXIT_CODES,\n type AdapterOptions,\n} from '@iobroker/adapter-core';\nimport type SentryPlugin from '@iobroker/plugin-sentry';\nimport type { GetTimesResult } from 'suncalc';\nimport type { CompileResult } from 'virtual-tsc/build/util';\n\nimport { Mirror } from './lib/mirror';\nimport ProtectFs from './lib/protectFs';\nimport { setLanguage, getLanguage } from './lib/words';\nimport { sandBox, removeFromDispatchIndex } from './lib/sandbox';\nimport { requestModuleNameByUrl } from './lib/nodeModulesManagement';\nimport {\n resolveProviderCredentials,\n resolveTestCredentials,\n listAvailableProviders,\n getProviderCredentialId,\n} from './lib/aiProviderResolver';\nimport {\n translateToolsToAnthropic,\n translateMessagesToAnthropic,\n translateAnthropicResponseToOpenAI,\n} from './lib/anthropicAdapter';\nimport { createEventObject, type EventObj } from './lib/eventObj';\nimport { type AstroEventName, Scheduler } from './lib/scheduler';\nimport { targetTsLib, tsCompilerOptions, jsDeclarationCompilerOptions } from './lib/typescriptSettings';\nimport { hashSource } from './lib/tools';\nimport {\n resolveTypescriptLibs,\n resolveTypings,\n scriptIdToTSFilename,\n transformScriptBeforeCompilation,\n transformGlobalDeclarations,\n} from './lib/typescriptTools';\nimport type {\n FileSubscriptionResult,\n JavascriptContext,\n JavaScriptAdapterConfig,\n JsScript,\n ScriptType,\n SubscriptionResult,\n SubscribeObject,\n JavascriptTimer,\n SandboxType,\n LogMessage,\n DebugState,\n} from './types';\nimport type { PatternEventCompareFunction } from './lib/patternCompareFunctions';\nimport { decryptText } from './lib/crypto';\n\ntype MODULES = {\n fs: ProtectFs;\n 'fs/promises': ProtectFs['promises'];\n dgram: typeof dgram;\n crypto: typeof crypto;\n dns: typeof dns;\n events: typeof events;\n http: typeof http;\n https: typeof https;\n http2: typeof http2;\n net: typeof net;\n os: typeof os;\n path: typeof path;\n util: typeof util;\n child_process: typeof child_process;\n stream: typeof stream;\n zlib: typeof zlib;\n suncalc: typeof suncalc;\n axios: typeof axios;\n wake_on_lan: typeof wake_on_lan;\n nodeSchedule: typeof nodeSchedule;\n};\n\n/**\n * List of forbidden Locations for a mirror directory\n * relative to the default data directory\n * ATTENTION: the same list is also located in index_m.html!!\n */\nconst forbiddenMirrorLocations: string[] = [\n 'backup-objects',\n 'files',\n 'backitup',\n '../backups',\n '../node_modules',\n '../log',\n];\n\nconst packageJson: Record = JSON.parse(readFileSync(`${__dirname}/../package.json`).toString());\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nlet webstormDebug: string | undefined;\n\nconst isCI = !!process.env.CI;\n\n// ambient declarations for typescript\nlet tsAmbient: Record;\n\n// TypeScript's scripts are only recompiled if their source hash changes.\n// If an adapter update fixes the compilation bugs, a user won't notice until the changes and re-save the script.\n// To avoid that, we also include the\n// adapter version and TypeScript version in the hash\nconst tsSourceHashBase = `versions:adapter=${packageJson.version},typescript=${packageJson.dependencies.typescript}`;\n\n// taken from here: https://stackoverflow.com/questions/11887934/how-to-check-if-dst-daylight-saving-time-is-in-effect-and-if-so-the-offset\nfunction dstOffsetAtDate(dateInput: Date): number {\n const fullYear: number = dateInput.getFullYear() | 0;\n // \"Leap Years are any year that can be exactly divided by 4 (2012, 2016, etc.)\n // except if it can be exactly divided by 100, then it isn't (2100, 2200, etc.)\n // except if it can be exactly divided by 400, then it is (2000, 2400)\"\n // (https://www.mathsisfun.com/leap-years.html).\n const isLeapYear: 1 | 0 = ((fullYear & 3) | ((fullYear / 100) & 3)) === 0 ? 1 : 0;\n // (fullYear & 3) = (fullYear % 4), but faster\n //Alternative:var isLeapYear=(new Date(currentYear,1,29,12)).getDate()===29?1:0\n const fullMonth: number = dateInput.getMonth() | 0;\n return (\n // 1. We know what the time since the Epoch really is\n +dateInput - // same as the dateInput.getTime() method\n // 2. We know what the time since the Epoch at the start of the year is\n +new Date(fullYear, 0) - // day defaults to 1 if not explicitly zeroed\n // 3. Now, subtract what we would expect the time to be if daylight savings\n // did not exist. This yields the time-offset due to daylight savings.\n // Calculate the day of the year in the Gregorian calendar\n // The code below works based upon the facts of signed right shifts\n // • (x) >> n: shifts n and fills in the n highest bits with 0s\n // • (-x) >> n: shifts n and fills in the n highest bits with 1s\n // (This assumes that x is a positive integer)\n ((((-1 + // the first day in the year is day 1\n (31 & (-fullMonth >> 4)) + // January // (-11)>>4 = -1\n ((28 + isLeapYear) & ((1 - fullMonth) >> 4)) + // February\n (31 & ((2 - fullMonth) >> 4)) + // March\n (30 & ((3 - fullMonth) >> 4)) + // April\n (31 & ((4 - fullMonth) >> 4)) + // May\n (30 & ((5 - fullMonth) >> 4)) + // June\n (31 & ((6 - fullMonth) >> 4)) + // July\n (31 & ((7 - fullMonth) >> 4)) + // August\n (30 & ((8 - fullMonth) >> 4)) + // September\n (31 & ((9 - fullMonth) >> 4)) + // October\n (30 & ((10 - fullMonth) >> 4)) + // November\n // There are no months past December: the year rolls into the next.\n // Thus, \"fullMonth\" is 0-based, so it will never be 12 in JavaScript\n\n (dateInput.getDate() | 0)) & // get day of the month\n 0xffff) *\n 24 *\n 60 + // 24 hours in a day, 60 minutes in an hour\n (dateInput.getHours() & 0xff) * 60 + // 60 minutes in an hour\n (dateInput.getMinutes() & 0xff)) |\n 0) *\n 60 *\n 1000 - // 60 seconds in a minute * 1000 milliseconds in a second\n (dateInput.getSeconds() & 0xff) * 1000 - // 1000 milliseconds in a second\n dateInput.getMilliseconds()\n );\n}\n\nconst regExGlobalOld = /_global$/;\nconst regExGlobalNew = /script\\.js\\.global\\./;\n\nfunction checkIsGlobal(obj: ioBroker.ScriptObject): boolean {\n return obj?.common && (regExGlobalOld.test(obj.common.name) || regExGlobalNew.test(obj._id));\n}\n\nfunction fileMatching(sub: FileSubscriptionResult, id: string, fileName: string): boolean {\n if (sub.idRegEx) {\n if (!sub.idRegEx.test(id)) {\n return false;\n }\n } else {\n if (sub.id !== id) {\n return false;\n }\n }\n if (sub.fileRegEx) {\n if (!sub.fileRegEx.test(fileName)) {\n return false;\n }\n } else {\n if (sub.fileNamePattern !== fileName) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNextTimeEvent(time: string, useNextDay?: boolean): Date {\n const now: Date = getAstroStartOfDay();\n const [timeHours, timeMinutes] = time.split(':');\n const nTimeHours = parseInt(timeHours, 10);\n const nTimeMinutes = parseInt(timeMinutes, 10);\n if (\n useNextDay &&\n (now.getHours() > nTimeHours || (now.getHours() === nTimeHours && now.getMinutes() > nTimeMinutes))\n ) {\n now.setDate(now.getDate() + 1);\n }\n\n now.setHours(nTimeHours);\n now.setMinutes(nTimeMinutes);\n\n return now;\n}\n\nfunction getAstroStartOfDay(): Date {\n const d = new Date();\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n d.setUTCHours(0);\n\n return d;\n}\n\nfunction formatHoursMinutesSeconds(date: Date): string {\n const h = String(date.getHours());\n const m = String(date.getMinutes());\n const s = String(date.getSeconds());\n\n return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`;\n}\n\n// Due to a npm bug, virtual-tsc may be hoisted to the top level node_modules, but\n// TypeScript may still be in the adapter level (https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794),\n// so we need to tell virtual-tsc where TypeScript is\nsetTypeScriptResolveOptions({\n paths: [require.resolve('typescript')],\n});\n\n// compiler instance for global JS declarations\nconst jsDeclarationServer: Server = new Server(jsDeclarationCompilerOptions, isCI ? false : undefined);\n/**\n * Stores the IDs of script objects whose change should be ignored because\n * the compiled source was just updated\n */\n\nconst HTTP_STATUS_TEXTS: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 429: 'Too Many Requests / Rate Limit',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\nfunction httpStatusText(code: number): string {\n return HTTP_STATUS_TEXTS[code] ?? `Error ${code}`;\n}\n\n/**\n * Resolves the correct http/https module based on the URL string.\n * Returns null if the URL is invalid.\n */\nfunction resolveRequestModule(url: string): { module: typeof https | typeof http; isHttps: boolean } | null {\n try {\n const { protocol } = new URL(url);\n const isHttps = protocol === 'https:';\n return { module: isHttps ? https : http, isHttps };\n } catch {\n return null;\n }\n}\n\nclass JavaScript extends Adapter {\n declare public config: JavaScriptAdapterConfig;\n\n private readonly context: JavascriptContext;\n\n private errorLogFunction: {\n error: (msg: string) => void;\n warn: (msg: string) => void;\n info: (msg: string) => void;\n debug: (msg: string) => void;\n silly: (msg: string) => void;\n } = {\n error: (msg: string) => console.error(msg),\n warn: (msg: string) => console.warn(msg),\n info: (msg: string) => console.log(msg),\n debug: (msg: string) => console.debug(msg),\n silly: (msg: string) => console.debug(msg),\n };\n\n private readonly mods: MODULES;\n\n private objectsInitDone = false;\n private statesInitDone = false;\n\n private objects: Record = {};\n private states: Record = {};\n private readonly interimStateValues: Record = {};\n private readonly stateIds: string[] = [];\n /** Fast O(1) lookup set – always kept in sync with stateIds */\n private readonly stateIdSet: Set = new Set();\n\n private readonly subscriptions: SubscriptionResult[] = [];\n /**\n * O(1) dispatch map for subscriptions with exact (non-wildcard) string IDs.\n * Always kept in sync with `subscriptions`.\n */\n private readonly subscriptionsMap: Map = new Map();\n /**\n * Subscriptions whose pattern.id is a RegExp, contains wildcards (*,?), or is undefined.\n * These must still be checked linearly on every state change.\n */\n private readonly subscriptionsWildcard: SubscriptionResult[] = [];\n private readonly subscriptionsFile: FileSubscriptionResult[] = [];\n private readonly subscriptionsObject: SubscribeObject[] = [];\n /** O(1) dispatch map for subscriptionsObject – pattern → subscribers */\n private readonly subscriptionsObjectMap: Map = new Map();\n /** IO-9: Cache for sendTo broadcast – adapterName → instance list, invalidated on object change */\n private readonly sendToInstanceCache: Map = new Map();\n private readonly subscribedPatterns: Record = {};\n private readonly subscribedPatternsFile: Record = {};\n private readonly adapterSubs: Record> = {};\n private readonly timers: { [scriptName: string]: JavascriptTimer[] } = {};\n /** Reverse-index: scriptName → Set of stateIds that have timers for this script – O(1) cleanup */\n private readonly timersByScript: Map> = new Map();\n /** O(1) Set for enum-id lookups – replaces sorted string[] array */\n private readonly _enums: Set = new Set();\n private readonly names: { [name: string]: string | string[] } = {}; // name: id\n /** Reverse map: id → name for O(1) getName() lookups */\n private readonly nameById: Map = new Map();\n private readonly scripts: Record = {};\n private password: string = '';\n private readonly messageBusHandlers: Record<\n string,\n Record void }[]>\n > = {};\n private readonly logSubscriptions: Record<\n string,\n {\n sandbox: SandboxType;\n cb: (info: LogMessage) => void;\n id: number;\n severity: ioBroker.LogLevel | '*';\n }[]\n > = {};\n private readonly tempDirectories: { [scriptName: string]: string } = {}; // name: path\n private readonly folderCreationVerifiedObjects: Record = {};\n\n /** if logs are subscribed or not */\n private logSubscribed = false;\n\n private timeSettings: {\n format12: boolean;\n leadingZeros: boolean;\n } = { format12: false, leadingZeros: true };\n\n private dayScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n private sunScheduleTimer: NodeJS.Timeout | null = null; // schedule for sun moment times\n private timeScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n\n private activeStr = ''; // enabled state prefix\n\n private mirror: Mirror | undefined;\n\n private stopCounters: Record = {};\n\n private setStateCountCheckInterval: NodeJS.Timeout | null = null;\n\n /**\n * Decrypted AI API keys cached from the central credential store (manager mode),\n * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the\n * subscriptions set up in `subscribeAiCredentials`.\n */\n private readonly aiCredentialCache: Map = new Map();\n /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */\n private aiCredentialUnsubscribers: (() => Promise)[] = [];\n\n private globalScript = '';\n /** Generated declarations for global TypeScripts */\n private globalDeclarations = '';\n // Remember which definitions the global scripts\n // have access to, because it depends on the compilation order\n private knownGlobalDeclarationsByScript: Record = {};\n private globalScriptLines = 0;\n /** Running counter to build unique names for ad-hoc scripts started via the \"execute\" message */\n private executeCounter = 0;\n // compiler instance for typescript\n private tsServer: Server;\n\n private readonly ignoreObjectChange: Set = new Set();\n\n private debugState: DebugState = {\n scriptName: '',\n child: null,\n promiseOnEnd: null,\n paused: false,\n started: 0,\n running: false,\n };\n\n constructor(options: Partial = {}) {\n options = {\n ...options,\n name: 'javascript', // adapter name\n useFormatDate: true,\n /**\n * If the JS-Controller catches an unhandled error, this will be called,\n * so we have a chance to handle it ourselves.\n */\n error: (err: Error): boolean => {\n // Identify unhandled errors originating from callbacks in scripts\n // These are not caught by wrapping the execution code in try-catch\n if (err && typeof err.stack === 'string') {\n const scriptCodeMarkerIndex = err.stack.indexOf(SCRIPT_CODE_MARKER);\n if (scriptCodeMarkerIndex > -1) {\n // This is a script error\n let scriptName = err.stack.substring(scriptCodeMarkerIndex);\n scriptName = scriptName.substring(0, scriptName.indexOf(':'));\n this.logError(scriptName, 'Error:', err);\n\n // Leave the script running for now\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n // check if a path contains adaptername but not own node_module\n // this regex matched \"iobroker.javascript/\" if NOT followed by \"node_modules\"\n if (!err.stack.match(/iobroker\\.javascript[/\\\\](?!.*node_modules).*/g)) {\n // This is an error without any info on origin (mostly async errors like connection errors)\n // also consider it as being from a script\n this.log.error(\n 'An error happened which is most likely from one of your scripts, but the originating script could not be detected.',\n );\n this.log.error(`Error: ${err.message}`);\n this.log.error(err.stack);\n\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n }\n\n return false;\n },\n };\n\n super(options as AdapterOptions);\n\n this.on('objectChange', this.onObjectChange.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('ready', this.onReady.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.on('fileChange', this.onFileChange.bind(this));\n this.on('log', this.onLog.bind(this));\n\n this.mods = {\n fs: {} as ProtectFs,\n 'fs/promises': {} as ProtectFs['promises'],\n dgram,\n crypto,\n dns,\n events,\n http,\n https,\n http2,\n net,\n os,\n path,\n util,\n child_process,\n stream,\n zlib,\n\n suncalc,\n axios,\n wake_on_lan,\n nodeSchedule,\n };\n\n // check the webstorm debug and just debug modes\n let debugMode: string | undefined;\n if (process.argv) {\n for (let a = 1; a < process.argv.length; a++) {\n if (process.argv[a].startsWith('--webstorm')) {\n webstormDebug = process.argv[a].replace(/^(.*?=\\s*)/, '');\n }\n if (process.argv[a] === '--debugScript') {\n if (!process.argv[a + 1]) {\n console.log('No script name provided');\n process.exit(300);\n } else {\n debugMode = process.argv[a + 1];\n }\n }\n }\n }\n\n this.context = {\n mods: this.mods,\n objects: this.objects,\n states: this.states,\n interimStateValues: this.interimStateValues,\n stateIds: this.stateIds,\n errorLogFunction: this.errorLogFunction,\n subscriptions: this.subscriptions,\n subscriptionsMap: this.subscriptionsMap,\n subscriptionsWildcard: this.subscriptionsWildcard,\n subscriptionsFile: this.subscriptionsFile,\n subscriptionsObject: this.subscriptionsObject,\n subscriptionsObjectMap: this.subscriptionsObjectMap,\n sendToInstanceCache: this.sendToInstanceCache,\n subscribedPatterns: this.subscribedPatterns,\n subscribedPatternsFile: this.subscribedPatternsFile,\n adapterSubs: this.adapterSubs,\n cacheObjectEnums: {},\n timers: this.timers,\n timersByScript: this.timersByScript,\n enums: this._enums,\n names: this.names,\n scripts: this.scripts,\n messageBusHandlers: this.messageBusHandlers,\n logSubscriptions: this.logSubscriptions,\n tempDirectories: this.tempDirectories,\n folderCreationVerifiedObjects: this.folderCreationVerifiedObjects,\n\n isEnums: false, // If some subscription wants enum\n channels: null,\n devices: null,\n logWithLineInfo: this.logWithLineInfo.bind(this),\n scheduler: null,\n timerId: 0,\n rulesOpened: null, // opened rules\n language: this.language || 'en',\n\n updateLogSubscriptions: this.updateLogSubscriptions.bind(this),\n convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),\n updateObjectContext: this.updateObjectContext.bind(this),\n prepareStateObject: this.prepareStateObject.bind(this),\n debugMode,\n getAbsoluteDefaultDataDir,\n adapter: this as unknown as ioBroker.Adapter,\n logError: this.logError.bind(this),\n allowSelfSignedCerts: false,\n };\n\n this.tsServer = new Server(tsCompilerOptions, this.tsLog);\n }\n\n async onObjectChange(id: string, obj?: ioBroker.Object | null): Promise {\n // Check if we should ignore this change (once!) because we just updated the compiled sources\n if (this.ignoreObjectChange.has(id)) {\n // Update the cached script object and do nothing more\n this.objects[id] = obj as ioBroker.Object;\n this.ignoreObjectChange.delete(id);\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.objectsInitDone) {\n if (obj) {\n this.objects[id] = obj;\n }\n return;\n }\n\n if (id.startsWith('enum.')) {\n // clear cache\n this.context.cacheObjectEnums = {};\n\n // update this._enums Set\n if (obj) {\n this._enums.add(id);\n } else {\n this._enums.delete(id);\n }\n }\n\n // IO-9: Invalidate sendTo instance-cache when adapter instances change\n if (id.startsWith('system.adapter.')) {\n const parts = id.split('.');\n if (parts.length >= 3) {\n const adapterName = parts[2]; // e.g. \"zigbee\" from \"system.adapter.zigbee.0\"\n this.sendToInstanceCache.delete(adapterName);\n }\n }\n\n if (id === 'system.config' && obj?.common?.language) {\n // set language for debug messages\n setLanguage(obj.common.language);\n this.language = obj.common.language;\n this.context.language = this.language as ioBroker.Languages;\n }\n\n // update stored time format for variables.dayTime\n if (id === `${this.namespace}.variables.dayTime` && obj?.native) {\n this.timeSettings.format12 = obj.native.format12 || false;\n this.timeSettings.leadingZeros = obj.native.leadingZeros === undefined ? true : obj.native.leadingZeros;\n }\n\n // send changes to the disk mirror\n this.mirror?.onObjectChange(id, obj as ioBroker.ScriptObject | null);\n\n const formerObj = this.objects[id];\n\n this.updateObjectContext(id, obj); // Update all Meta object data\n\n // for the alias object changes on the state objects, we need to manually update the\n // state cache value, because the new value is only published on the next change\n if (obj?.type === 'state' && id.startsWith('alias.0.')) {\n // execute async for speed\n this.getForeignStateAsync(id)\n .then(state => {\n if (state) {\n this.states[id] = state;\n } else if (this.states[id] !== undefined) {\n delete this.states[id];\n }\n })\n .catch(() => {\n /* ignore */\n });\n }\n\n // O(1) dispatch via pattern map instead of O(n) forEach\n const objSubs = this.subscriptionsObjectMap.get(id);\n if (objSubs) {\n for (const sub of objSubs) {\n try {\n sub.callback(id, obj);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n\n // handle Script object updates\n if (!obj && formerObj?.type === 'script') {\n // Object Deleted just now\n if (checkIsGlobal(formerObj)) {\n // it was a global Script, and it was enabled and is now deleted => restart adapter\n if (formerObj.common.enabled) {\n this.log.info(`Active global Script ${id} deleted. Restart instance.`);\n this.restart();\n }\n } else if (formerObj.common?.engine === `system.adapter.${this.namespace}`) {\n // It was a non-global Script and deleted => stop and remove it\n await this.stopScript(id);\n\n // delete scriptEnabled.blabla variable\n const idActive = `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idActive);\n await this.delObjectAsync(idActive);\n\n // delete scriptProblem.blabla variable\n const idProblem = `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idProblem);\n await this.delObjectAsync(idProblem);\n }\n } else if (!formerObj && obj?.type === 'script') {\n // New script that does not exist before\n if (checkIsGlobal(obj)) {\n // new global script added => restart adapter\n if (obj.common.enabled) {\n this.log.info(`Active global Script ${id} created. Restart instance.`);\n this.restart();\n }\n } else if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // new non-global script - create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n if (obj.common.enabled) {\n // if enabled => Start a script\n await this.loadScriptById(id);\n }\n }\n } else if (obj?.type === 'script' && formerObj?.common) {\n // Script changed ...\n if (checkIsGlobal(obj)) {\n if (obj.common.enabled || formerObj.common.enabled) {\n this.log.info(`Global Script ${id} updated. Restart instance.`);\n this.restart();\n }\n } else {\n // No global script\n if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n }\n\n if (\n (formerObj.common.enabled && !obj.common.enabled) ||\n (formerObj.common.engine === `system.adapter.${this.namespace}` &&\n obj.common.engine !== `system.adapter.${this.namespace}`)\n ) {\n // Script disabled\n if (formerObj.common.enabled && formerObj.common.engine === `system.adapter.${this.namespace}`) {\n // Remove it from executing\n await this.stopScript(id);\n }\n } else if (\n (!formerObj.common.enabled && obj.common.enabled) ||\n (formerObj.common.engine !== `system.adapter.${this.namespace}` &&\n obj.common.engine === `system.adapter.${this.namespace}`)\n ) {\n // Script enabled\n\n if (obj.common.enabled && obj.common.engine === `system.adapter.${this.namespace}`) {\n // Start script\n await this.loadScriptById(id);\n }\n } else if (\n obj.common.engine === `system.adapter.${this.namespace}` ||\n formerObj.common.engine === `system.adapter.${this.namespace}`\n ) {\n // Source changed => restart the script (only on the relevant instance)\n this.stopCounters[id] = this.stopCounters[id] ? this.stopCounters[id] + 1 : 1;\n void this.stopScript(id).then(() => {\n // only start again after stop when \"last\" object change to prevent problems on\n // multiple changes in fast frequency\n if (!--this.stopCounters[id]) {\n void this.loadScriptById(id);\n }\n });\n }\n }\n }\n }\n\n onStateChange(id: string, state?: ioBroker.State | null): void {\n if (this.interimStateValues[id] !== undefined) {\n // any update invalidates the remembered interim value\n delete this.interimStateValues[id];\n }\n if (!id || id.startsWith('messagebox.') || id.startsWith('log.')) {\n return;\n }\n\n if (id === `${this.namespace}.debug.to` && state && !state.ack) {\n if (!this.context.debugMode) {\n this.debugSendToInspector(state.val);\n }\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.statesInitDone) {\n if (state) {\n this.states[id] = state;\n }\n return;\n }\n\n const oldState: ioBroker.State | null | undefined = this.states[id];\n if (state) {\n if (oldState) {\n // enable or disable script\n if (!state.ack && id.startsWith(this.activeStr) && this.objects[id]?.native?.script) {\n void this.extendForeignObject(this.objects[id].native.script, {\n common: { enabled: state.val },\n });\n }\n\n // monitor if the adapter is alive and send all subscriptions once more, after the adapter goes online\n if (/*oldState && */ oldState.val === false && state.val && id.endsWith('.alive')) {\n if (this.adapterSubs[id]) {\n const parts = id.split('.');\n const a = `${parts[2]}.${parts[3]}`;\n for (const sub of this.adapterSubs[id]) {\n this.log.info(`Detected coming adapter \"${a}\". Send subscribe: ${sub}`);\n this.sendTo(a, 'subscribe', sub);\n }\n }\n }\n } else if (/*!oldState && */ !this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n this.states[id] = state;\n } else {\n if (oldState) {\n delete this.states[id];\n }\n state = {} as ioBroker.State;\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n }\n\n // Collect matching subscriptions:\n // 1. O(1) exact-id map lookup – only buckets for this specific state id\n // 2. Linear scan over wildcard/regex subscriptions (unavoidable)\n // EventObj is created lazily – only when at least one subscription must be dispatched.\n const exactSubs = this.subscriptionsMap.get(id);\n const wildcardSubs = this.subscriptionsWildcard;\n const hasWork = (exactSubs && exactSubs.length > 0) || wildcardSubs.length > 0;\n\n if (!hasWork) {\n return;\n }\n\n let _eventObj: EventObj | null = null;\n const getEvent = (): EventObj => {\n if (!_eventObj) {\n _eventObj = createEventObject(\n this.context,\n id,\n this.convertBackStringifiedValues(id, state),\n this.convertBackStringifiedValues(id, oldState),\n );\n }\n return _eventObj;\n };\n\n if (exactSubs) {\n for (let i = 0, l = exactSubs.length; i < l; i++) {\n const sub = exactSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n // if this state matches any subscriptions\n for (let i = 0, l = wildcardSubs.length; i < l; i++) {\n const sub = wildcardSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n onFileChange(id: string, fileName: string, size: number | null): void {\n // if this file matches any subscriptions\n for (let i = 0, l = this.subscriptionsFile.length; i < l; i++) {\n const sub = this.subscriptionsFile[i];\n if (sub && fileMatching(sub, id, fileName)) {\n try {\n sub.callback(id, fileName, size, sub.withFile);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n async onUnload(callback: () => void): Promise {\n try {\n await this.debugStop();\n this.stopTimeSchedules();\n if (this.setStateCountCheckInterval) {\n clearInterval(this.setStateCountCheckInterval);\n this.setStateCountCheckInterval = null;\n }\n await this.unsubscribeAiCredentials();\n await this.stopAllScripts();\n } catch (err: unknown) {\n this.log.error(`Error during unload: ${(err as Error).message}`);\n } finally {\n if (typeof callback === 'function') {\n callback();\n }\n }\n }\n\n async onReady(): Promise {\n this.errorLogFunction = this.log;\n this.context.errorLogFunction = this.log;\n this.config.maxSetStatePerMinute = parseInt(this.config.maxSetStatePerMinute as unknown as string, 10) || 1000;\n this.config.maxTriggersPerScript = parseInt(this.config.maxTriggersPerScript as unknown as string, 10) || 100;\n\n if (this.supportsFeature?.('PLUGINS')) {\n const sentryInstance: InstanceType = this.getPluginInstance('sentry') as InstanceType<\n typeof SentryPlugin\n >;\n if (sentryInstance) {\n const Sentry = sentryInstance.getSentryObject();\n Sentry?.withScope(scope => {\n scope.addEventProcessor((event, _hint) => {\n if (event.exception?.values?.[0]) {\n const eventData = event.exception.values[0];\n if (\n eventData.stacktrace?.frames &&\n Array.isArray(eventData.stacktrace.frames) &&\n eventData.stacktrace.frames.length\n ) {\n // Exclude event if script Marker is included\n if (\n eventData.stacktrace.frames.find(frame =>\n frame.filename?.includes(SCRIPT_CODE_MARKER),\n )\n ) {\n return null;\n }\n // Exclude event if own directory is included but not inside own node_modules\n const ownNodeModulesDir = join(__dirname, 'node_modules');\n if (\n !eventData.stacktrace.frames.find(\n frame =>\n frame.filename?.includes(__dirname) &&\n !frame.filename.includes(ownNodeModulesDir),\n )\n ) {\n return null;\n }\n // We have exception data and did not sort it out, so report it\n return event;\n }\n }\n\n // No exception in it ... do not report\n return null;\n });\n });\n }\n }\n\n await this.main();\n }\n\n /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */\n private async readAiCredentialKey(id: string): Promise {\n try {\n const cred = await Credentials.getCredentials(this, id);\n return (cred?.values?.key || '').trim();\n } catch (e) {\n this.log.warn(`Cannot read AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`);\n return '';\n }\n }\n\n /**\n * Resolve the API key (and base URL) for an AI provider.\n *\n * In `manual` mode the key comes from the encryptedNative adapter config.\n * In `manager` mode the config only stores the ID of a credential in the central\n * ioBroker credential store (`system.credentials.*`); the actual key is taken from the\n * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are\n * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly.\n *\n * The settings-dialog Test button may pass form values that are not saved yet\n * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config.\n */\n private async resolveAiCredentials(\n provider: string,\n opts: {\n messageBaseUrl?: string;\n messageApiKey?: string;\n messageCredentialId?: string;\n credentialType?: 'manual' | 'manager';\n } = {},\n ): Promise<{ apiKey: string; baseUrl: string }> {\n const mode = opts.credentialType || this.config.credentialType || 'manual';\n if (mode === 'manager') {\n // The base URL is not a secret and is resolved the same way in both modes.\n const { baseUrl } = resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n const id = (opts.messageCredentialId || getProviderCredentialId(this.config, provider)).trim();\n if (!id) {\n return { apiKey: '', baseUrl };\n }\n // Prefer the cached value kept fresh by the credential subscription.\n const cached = this.aiCredentialCache.get(id);\n const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id);\n return { apiKey, baseUrl };\n }\n // Manual mode. The Test button sends the current form key (maybe empty) — let it win.\n if (opts.messageApiKey !== undefined) {\n return resolveTestCredentials(this.config, provider, opts.messageApiKey, opts.messageBaseUrl);\n }\n return resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n }\n\n /**\n * In `manager` mode, subscribe to all configured AI credentials so that edits made in the\n * admin credential manager (Settings → Credentials) are picked up live, without restarting\n * the adapter (the `system.credentials.*` objects are global, not part of the instance config).\n * The decrypted keys are cached and kept fresh by the subscription handlers.\n */\n private async subscribeAiCredentials(): Promise {\n // Always start from a clean state (idempotent — also used to re-subscribe).\n await this.unsubscribeAiCredentials();\n if (this.config.credentialType !== 'manager') {\n return;\n }\n // Collect the distinct credential IDs configured across all AI providers.\n const ids = new Set();\n for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) {\n const id = getProviderCredentialId(this.config, provider);\n if (id) {\n ids.add(id);\n }\n }\n for (const id of ids) {\n try {\n const unsubscribe = await Credentials.subscribeCredentials(\n this,\n id,\n (changedId, cred) => {\n if (cred) {\n this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim());\n this.log.debug(`AI credential \"${changedId}\" updated`);\n } else {\n // The credential was deleted\n this.aiCredentialCache.delete(changedId);\n this.log.debug(`AI credential \"${changedId}\" was deleted`);\n }\n },\n );\n this.aiCredentialUnsubscribers.push(unsubscribe);\n // Prime the cache with the current value (the handler may only fire on later changes).\n this.aiCredentialCache.set(id, await this.readAiCredentialKey(id));\n } catch (e) {\n this.log.warn(\n `Cannot subscribe to AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n if (this.aiCredentialUnsubscribers.length) {\n this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`);\n }\n }\n\n /** Tear down all AI credential subscriptions and clear the cache. */\n private async unsubscribeAiCredentials(): Promise {\n const unsubscribers = this.aiCredentialUnsubscribers;\n this.aiCredentialUnsubscribers = [];\n this.aiCredentialCache.clear();\n for (const unsubscribe of unsubscribers) {\n try {\n await unsubscribe();\n } catch (e) {\n this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n switch (obj?.command) {\n // process messageTo commands\n case 'toScript':\n case 'jsMessageBus':\n if (\n obj.message &&\n (obj.message.instance === null ||\n obj.message.instance === undefined ||\n `javascript.${obj.message.instance}` === this.namespace ||\n obj.message.instance === this.namespace)\n ) {\n Object.keys(this.messageBusHandlers).forEach(name => {\n // the script name could be script.js.xxx or only xxx\n if (\n (!obj.message.script || obj.message.script === name) &&\n this.messageBusHandlers[name][obj.message.message]\n ) {\n this.messageBusHandlers[name][obj.message.message].forEach(handler => {\n const sandbox = handler.sandbox;\n\n sandbox.verbose && sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');\n\n try {\n if (obj.callback) {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n\n this.sendTo(obj.from, obj.command, result, obj.callback);\n });\n } else {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n sandbox.verbose &&\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n });\n }\n } catch (err: unknown) {\n void this.setState(\n `scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`,\n true,\n true,\n );\n this.logError(name, 'Error in callback:', err as Error);\n }\n });\n }\n });\n }\n break;\n\n case 'loadTypings': {\n // Load typings for the editor\n const typings: Record = {};\n\n // try to load TypeScript lib files from disk\n try {\n const typescriptLibs = resolveTypescriptLibs(targetTsLib);\n Object.assign(typings, typescriptLibs);\n } catch {\n /* ok, no lib then */\n }\n\n // provide the already-loaded ioBroker typings and global script declarations\n Object.assign(typings, tsAmbient);\n\n // also provide the known global declarations for each global script\n for (const globalScriptPaths of Object.keys(this.knownGlobalDeclarationsByScript)) {\n typings[`${globalScriptPaths}.d.ts`] = this.knownGlobalDeclarationsByScript[globalScriptPaths];\n }\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { typings }, obj.callback);\n }\n break;\n }\n\n case 'calcAstroAll': {\n if (obj.message) {\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n let astroEvents: GetTimesResult & { nextSunrise: Date; nextSunset: Date } = {} as GetTimesResult & {\n nextSunrise: Date;\n nextSunset: Date;\n };\n try {\n astroEvents = this.mods.suncalc.getTimes(today, latitude, longitude);\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n if (astroEvents) {\n try {\n astroEvents.nextSunrise = this.getAstroEvent(\n today,\n obj.message.sunriseEvent || this.config.sunriseEvent,\n obj.message.sunriseLimitStart || this.config.sunriseLimitStart,\n obj.message.sunriseLimitEnd || this.config.sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n astroEvents.nextSunset = this.getAstroEvent(\n today,\n obj.message.sunsetEvent || this.config.sunsetEvent,\n obj.message.sunsetLimitStart || this.config.sunsetLimitStart,\n obj.message.sunsetLimitEnd || this.config.sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n }\n\n const result: Record = {};\n const keys = Object.keys(astroEvents).sort(\n (a, b) =>\n (astroEvents as unknown as Record)[a] -\n (astroEvents as unknown as Record)[b],\n );\n keys.forEach(key => {\n const validDate =\n (astroEvents as unknown as Record)[key] !== null &&\n !isNaN((astroEvents as unknown as Record)[key].getTime());\n\n result[key] = {\n isValidDate: validDate,\n serverTime: validDate\n ? formatHoursMinutesSeconds((astroEvents as unknown as Record)[key])\n : 'n/a',\n date: validDate\n ? (astroEvents as unknown as Record)[key].toISOString()\n : 'n/a',\n };\n });\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, result, obj.callback);\n }\n }\n break;\n }\n\n case 'calcAstro': {\n if (obj.message) {\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n\n const sunriseEvent = obj.message?.sunriseEvent || this.config.sunriseEvent;\n const sunriseLimitStart = obj.message?.sunriseLimitStart || this.config.sunriseLimitStart;\n const sunriseLimitEnd = obj.message?.sunriseLimitEnd || this.config.sunriseLimitEnd;\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const nextSunrise = this.getAstroEvent(\n today,\n sunriseEvent,\n sunriseLimitStart,\n sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n\n const sunsetEvent = obj.message?.sunsetEvent || this.config.sunsetEvent;\n const sunsetLimitStart = obj.message?.sunsetLimitStart || this.config.sunsetLimitStart;\n const sunsetLimitEnd = obj.message?.sunsetLimitEnd || this.config.sunsetLimitEnd;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const nextSunset = this.getAstroEvent(\n today,\n sunsetEvent,\n sunsetLimitStart,\n sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n\n const validDateSunrise = nextSunrise !== null && !isNaN(nextSunrise.getTime());\n const validDateSunset = nextSunset !== null && !isNaN(nextSunset.getTime());\n\n this.log.debug(\n `calcAstro sunrise: ${sunriseEvent} -> start ${sunriseLimitStart}, end: ${sunriseLimitEnd}, offset: ${sunriseOffset} - ${validDateSunrise ? nextSunrise.toISOString() : 'n/a'}`,\n );\n this.log.debug(\n `calcAstro sunset: ${sunsetEvent} -> start ${sunsetLimitStart}, end: ${sunsetLimitEnd}, offset: ${sunsetOffset} - ${validDateSunset ? nextSunset.toISOString() : 'n/a'}`,\n );\n\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n nextSunrise: {\n isValidDate: validDateSunrise,\n serverTime: validDateSunrise ? formatHoursMinutesSeconds(nextSunrise) : 'n/a',\n date: nextSunrise.toISOString(),\n },\n nextSunset: {\n isValidDate: validDateSunset,\n serverTime: validDateSunset ? formatHoursMinutesSeconds(nextSunset) : 'n/a',\n date: nextSunset.toISOString(),\n },\n },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'debug': {\n if (!this.context.debugMode) {\n this.debugStart(obj.message);\n }\n break;\n }\n\n case 'debugStop': {\n if (!this.context.debugMode) {\n void this.debugStop().then(() => console.log('stopped'));\n }\n break;\n }\n\n case 'rulesOn': {\n this.context.rulesOpened = obj.message;\n console.log(`Enable messaging for ${this.context.rulesOpened}`);\n break;\n }\n\n case 'rulesOff': {\n // maybe if (context.rulesOpened === obj.message)\n console.log(`Disable messaging for ${this.context.rulesOpened}`);\n this.context.rulesOpened = null;\n break;\n }\n\n case 'getIoBrokerDataDir': {\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n dataDir: getAbsoluteDefaultDataDir(),\n sep,\n },\n obj.callback,\n );\n }\n break;\n }\n\n case 'chatCompletion': {\n // Proxy chat completion requests to an OpenAI-compatible API endpoint.\n // API keys are resolved server-side from the encryptedNative config or the central\n // credentials manager — they never leave the adapter (frontend only sends `provider`).\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const chatModel = (obj.message?.model || '').trim();\n const messages = obj.message?.messages;\n const tools = obj.message?.tools;\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageBaseUrl: obj.message?.baseUrl,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n if (!chatModel || !messages) {\n this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback);\n return;\n }\n\n let url: string;\n const chatHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n let bodyObj: Record;\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/messages';\n chatHeaders['x-api-key'] = apiKey;\n chatHeaders['anthropic-version'] = '2023-06-01';\n // Translate OpenAI-format messages/tools into Anthropic's content-block format.\n const { system: systemText, messages: anthropicMessages } =\n translateMessagesToAnthropic(messages);\n const anthropicTools = tools?.length ? translateToolsToAnthropic(tools) : [];\n bodyObj = {\n model: chatModel,\n max_tokens: 8192,\n stream: false,\n ...(systemText ? { system: systemText } : {}),\n messages: anthropicMessages,\n ...(anthropicTools.length ? { tools: anthropicTools } : {}),\n };\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions';\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/chat/completions';\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/chat/completions`;\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = {\n model: chatModel,\n messages,\n stream: false,\n ...(tools?.length ? { tools } : {}),\n // Disable thinking/reasoning for local models to save context and speed\n ...(baseUrl ? { reasoning_effort: 'none' } : {}),\n };\n }\n\n const body = JSON.stringify(bodyObj);\n const bodyBuffer = Buffer.from(body, 'utf8');\n chatHeaders['Content-Length'] = bodyBuffer.length;\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'POST',\n headers: chatHeaders,\n timeout: 600000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n let content: string;\n let tool_calls: unknown;\n if (provider === 'anthropic') {\n const translated = translateAnthropicResponseToOpenAI(parsed);\n content = translated.content;\n tool_calls = translated.tool_calls;\n } else {\n const message = parsed.choices?.[0]?.message;\n content = message?.content || '';\n tool_calls = message?.tool_calls;\n }\n if (!content && !(tool_calls as unknown[] | undefined)?.length) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Empty response from API' },\n obj.callback,\n );\n } else {\n this.sendTo(\n obj.from,\n obj.command,\n {\n success: true,\n content,\n ...(tool_calls ? { tool_calls } : {}),\n },\n obj.callback,\n );\n }\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else {\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (600s)' }, obj.callback);\n });\n\n req.write(bodyBuffer);\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'testApiConnection': {\n // Test connection to an OpenAI-compatible API endpoint.\n // The settings-dialog Test button sends the current form value as `apiKey`\n // (so users can test before saving); otherwise we fall back to the stored key.\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageApiKey: obj.message?.apiKey,\n messageBaseUrl: obj.message?.baseUrl,\n messageCredentialId: obj.message?.credentialId,\n credentialType: obj.message?.credentialType,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n\n let url: string;\n const testHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/models';\n testHeaders['x-api-key'] = apiKey;\n testHeaders['anthropic-version'] = '2023-06-01';\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/models';\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/models';\n testHeaders.Authorization = `Bearer ${apiKey}`;\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/models`;\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'GET',\n headers: testHeaders,\n timeout: 10000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n const models: string[] = (parsed.data || [])\n .map((m: { id: string }) =>\n m.id.startsWith('models/') ? m.id.substring(7) : m.id,\n )\n .sort();\n this.sendTo(\n obj.from,\n obj.command,\n { success: true, models, count: models.length },\n obj.callback,\n );\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else if (res.statusCode === 401) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid API key (401)' },\n obj.callback,\n );\n } else if (res.statusCode === 403) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Access denied (403)' },\n obj.callback,\n );\n } else {\n // Include response body for debugging\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (10s)' }, obj.callback);\n });\n\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'getAvailableAiProviders': {\n // Reports which AI providers have stored credentials (keys never leave the backend).\n if (obj.callback) {\n const providers = listAvailableProviders(this.config);\n this.sendTo(obj.from, obj.command, { providers }, obj.callback);\n }\n break;\n }\n\n case 'prettier': {\n // Format the code with Prettier\n if (obj.message && typeof obj.message.code === 'string') {\n try {\n prettier\n .format(obj.message.code, {\n parser: obj.message.type === 'typescript' ? 'babel-ts' : 'babel',\n printWidth: 120,\n semi: true,\n tabWidth: 4,\n useTabs: false,\n trailingComma: 'all',\n singleQuote: true,\n singleAttributePerLine: true,\n endOfLine: 'lf',\n bracketSpacing: true,\n arrowParens: 'avoid',\n quoteProps: 'as-needed',\n })\n .then(formattedCode => {\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { code: formattedCode }, obj.callback);\n } else {\n this.logWithLineInfo(`Formatted code:\\n${formattedCode}`);\n }\n })\n .catch(e => {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n });\n } catch (e) {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n }\n } else {\n this.sendTo(obj.from, obj.command, { error: 'No code provided' }, obj.callback);\n }\n break;\n }\n\n case 'execute': {\n if (obj.callback) {\n void this.executeScript(obj.message)\n .then(result => this.sendTo(obj.from, obj.command, result, obj.callback))\n .catch(err =>\n this.sendTo(\n obj.from,\n obj.command,\n {\n ok: false,\n error: `Internal error: ${err as Error}`,\n logs: [],\n output: '',\n },\n obj.callback,\n ),\n );\n }\n break;\n }\n }\n }\n\n onLog(msg: any): void {\n for (const name of Object.keys(this.logSubscriptions)) {\n for (const handler of this.logSubscriptions[name]) {\n if (\n typeof handler.cb === 'function' &&\n (handler.severity === '*' || handler.severity === msg.severity)\n ) {\n handler.sandbox.logHandler = handler.severity || '*';\n handler.cb.call(handler.sandbox, msg);\n handler.sandbox.logHandler = undefined;\n }\n }\n }\n }\n\n logError(scriptName: string, msg: string, e: Error, offs?: number): void {\n const stack = e.stack ? e.stack.toString().split('\\n') : e ? e.toString() : '';\n if (!msg.includes('\\n')) {\n msg = msg.replace(/[: ]*$/, ': ');\n }\n if (!msg.endsWith(' ')) {\n msg += ':';\n }\n if (!scriptName.startsWith(SCRIPT_CODE_MARKER)) {\n scriptName = SCRIPT_CODE_MARKER + scriptName;\n }\n\n this.errorLogFunction.error(`${scriptName}: ${msg}${this.fixLineNo(stack[0])}`);\n for (let i = offs || 1; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.error(`${scriptName}: ${this.fixLineNo(stack[i])}`);\n }\n }\n\n logWithLineInfo(msg: string): void {\n this.errorLogFunction.warn(msg);\n\n // get current error stack\n const stack = new Error().stack?.split('\\n');\n\n if (stack) {\n for (let i = 3; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInContext|runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.warn(this.fixLineNo(stack[i]));\n }\n }\n }\n\n async main(): Promise {\n // Patch the font as it sometimes is wrong\n if (!this.context.debugMode) {\n if (await this.patchFont()) {\n this.log.debug('Font patched');\n }\n }\n\n this.log.debug(`config.subscribe (Do not subscribe all states on start): ${this.config.subscribe}`);\n\n // correct jsonConfig for admin\n const instObj: ioBroker.InstanceObject | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (instObj?.common) {\n if (instObj.common.adminUI?.config !== 'json') {\n if (instObj.common.adminUI) {\n instObj.common.adminUI.config = 'json';\n } else {\n instObj.common.adminUI = { config: 'json' };\n }\n void this.setForeignObject(instObj._id, instObj);\n }\n }\n\n if (webstormDebug) {\n this.errorLogFunction = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n debug: console.log,\n silly: console.log,\n };\n this.context.errorLogFunction = this.errorLogFunction;\n }\n this.activeStr = `${this.namespace}.scriptEnabled.`;\n\n this.mods.fs = new ProtectFs(this.log, getAbsoluteDefaultDataDir());\n this.mods['fs/promises'] = this.mods.fs.promises; // to avoid require('fs/promises');\n\n // try to read TS declarations\n try {\n tsAmbient = {\n 'javascript.d.ts': readFileSync(this.mods.path.join(__dirname, 'lib/javascript.d.ts'), 'utf8'),\n };\n this.tsServer.provideAmbientDeclarations(tsAmbient);\n jsDeclarationServer.provideAmbientDeclarations(tsAmbient);\n } catch (err: unknown) {\n this.log.warn(`Could not read TypeScript ambient declarations: ${err as Error}`);\n // This should not happen, so send an error report to Sentry\n if (this.supportsFeature && this.supportsFeature('PLUGINS')) {\n const sentryInstance = this.getPluginInstance('sentry');\n if (sentryInstance) {\n const sentryObject = sentryInstance.getSentryObject();\n sentryObject?.captureException(err as Error);\n }\n }\n // Keep the adapter from crashing when the included typings cannot be read\n tsAmbient = {};\n }\n\n await this.installLibraries();\n // Load the TS declarations for Node.js and all 3rd party modules\n this.loadTypeScriptDeclarations();\n\n await this.getData();\n this.context.scheduler = new Scheduler(\n this.log,\n Date,\n this.mods.suncalc,\n this.config.latitude,\n this.config.longitude,\n );\n await this.dayTimeSchedules();\n await this.sunTimeSchedules();\n await this.timeSchedule();\n\n // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it\n // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode)\n this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts;\n\n // In `manager` credential mode, subscribe to the configured AI credentials so changes in the\n // central credential store are picked up live (the keys are cached for the AI sendTo handlers).\n await this.subscribeAiCredentials();\n\n const doc = await this.getObjectViewAsync('script', 'javascript', {});\n if (doc?.rows?.length) {\n // sort global scripts if configured\n if (this.config.sortGlobalScriptsAlphabetically) {\n doc.rows.sort((a, b) => a.value._id.localeCompare(b.value._id));\n }\n // assemble global script\n for (let g = 0; g < doc.rows.length; g++) {\n const obj = doc.rows[g].value;\n if (checkIsGlobal(obj)) {\n if (obj && obj.common) {\n const engineType = (obj.common.engineType || '').toLowerCase();\n\n if (obj.common.enabled) {\n if (engineType.startsWith('typescript')) {\n // TypeScript\n this.log.info(`${obj._id}: compiling TypeScript source...`);\n // In order to compile global TypeScript, we need to do some transformations\n // 1. For top-level-await, some statements must be wrapped in an immediately-invoked async function\n // 2. If any global script uses `import`, the declarations are no longer visible if they are not exported with `declare global`\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, true);\n // The source code must be transformed in order to support top level await\n // Global scripts must not be treated as a module, otherwise their methods\n // cannot be found by the normal scripts\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash: string = hashSource(\n tsSourceHashBase + this.globalDeclarations + transformedSource,\n );\n\n let compiled: string | undefined;\n let declarations: string | undefined;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n declarations = obj.common.declarations;\n this.log.info(\n `${obj._id}: source code did not change, using cached compilation result...`,\n );\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n continue;\n }\n\n const errors = tsCompiled.diagnostics\n .map(diag => `${diag.annotatedSource}\\n`)\n .join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(\n `${obj._id}: TypeScript compilation completed with errors:\\n${errors}`,\n );\n } else {\n this.log.info(`${obj._id}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result;\n // Global scripts that have been transformed to support `import` need to have their declarations transformed aswell\n declarations = transformGlobalDeclarations(tsCompiled.declarations || '');\n\n const newCommon: {\n compiled: string | undefined;\n declarations?: string;\n sourceHash: string;\n } = {\n sourceHash,\n compiled,\n };\n if (declarations) {\n newCommon.declarations = declarations;\n }\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(obj._id); // ignore the next change and don't restart scripts\n void this.extendForeignObject(obj._id, {\n common: newCommon,\n });\n } else {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${errors}`);\n continue;\n }\n }\n this.globalScript += `${compiled}\\n`;\n // if declarations were generated, remember them\n if (declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, declarations);\n }\n } else {\n // javascript\n const sourceCode = obj.common.source;\n this.globalScript += `${sourceCode}\\n`;\n\n // try to compile the declarations so TypeScripts can use\n // functions defined in global JavaScripts\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = jsDeclarationServer.compile(filename, sourceCode);\n } catch (err: unknown) {\n this.log.warn(\n `${obj._id}: Error while generating type declarations, skipping:\\n${err as Error}`,\n );\n continue;\n }\n // if declarations were generated, remember them\n if (tsCompiled.success && tsCompiled.declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, tsCompiled.declarations);\n }\n }\n }\n }\n }\n }\n }\n\n this.globalScript = this.globalScript.replace(/\\r\\n/g, '\\n');\n this.globalScriptLines = this.globalScript.split(/\\n/g).length - 1;\n\n if (doc?.rows?.length) {\n // load all scripts\n for (let i = 0; i < doc.rows.length; i++) {\n if (!checkIsGlobal(doc.rows[i].value)) {\n void this.loadScript(doc.rows[i].value);\n }\n }\n }\n\n if (this.config.mirrorPath?.trim()) {\n this.config.mirrorInstance = parseInt(this.config.mirrorInstance as unknown as string, 10) || 0;\n if (this.instance === this.config.mirrorInstance) {\n const ioBDataDir = getAbsoluteDefaultDataDir() + sep;\n this.config.mirrorPath = normalize(this.config.mirrorPath);\n let mirrorForbidden = false;\n for (let dir of forbiddenMirrorLocations) {\n dir = join(ioBDataDir, dir) + sep;\n if (dir.includes(this.config.mirrorPath) || this.config.mirrorPath.startsWith(dir)) {\n this.log.error(`The Mirror directory is not allowed to be a central ioBroker directory!`);\n this.log.error(`Directory ${this.config.mirrorPath} is not allowed to mirror files!`);\n mirrorForbidden = true;\n break;\n }\n }\n if (!mirrorForbidden) {\n this.mirror = new Mirror({\n adapter: this,\n log: this.log,\n diskRoot: this.config.mirrorPath,\n });\n }\n }\n }\n\n // Check setState counter per minute and stop a script if too high\n this.setStateCountCheckInterval = setInterval(() => {\n for (const id of Object.keys(this.scripts)) {\n if (!this.scripts[id]) {\n continue;\n }\n const currentSetStatePerMinuteCounter = this.scripts[id].setStatePerMinuteCounter;\n this.scripts[id].setStatePerMinuteCounter = 0;\n if (currentSetStatePerMinuteCounter > this.config.maxSetStatePerMinute) {\n this.scripts[id].setStatePerMinuteProblemCounter++;\n this.log.debug(\n `${id}: Script has reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute in ${this.scripts[id].setStatePerMinuteProblemCounter} consecutive minutes`,\n );\n // Allow \"too high counters\" for 1 minute for script starts or such and only\n // stop the script when lasts longer\n if (this.scripts[id].setStatePerMinuteProblemCounter > 1) {\n this.log.error(\n `${id}: Script is calling setState more than ${this.config.maxSetStatePerMinute} times per minute! Stopping Script now! Please check your script!`,\n );\n void this.stopScript(id);\n }\n } else if (this.scripts[id].setStatePerMinuteProblemCounter > 0) {\n this.scripts[id].setStatePerMinuteProblemCounter--;\n this.log.debug(\n `Script ${id} has NOT reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute. Decrease problem counter to ${this.scripts[id].setStatePerMinuteProblemCounter}`,\n );\n }\n }\n }, 60_000).unref();\n }\n\n private loadTypeScriptDeclarations(): void {\n // try to load the typings on disk for all 3rd party modules\n const packages = [\n 'node', // this provides auto-completion for most builtins\n '@iobroker/types', // this provides auto-completion for most builtins\n ];\n // Also include user-selected libraries (but only those that are also installed)\n if (typeof this.config?.libraries === 'string' && typeof this.config.libraryTypings === 'string') {\n const installedLibs = this.config.libraries\n .split(/[,;\\s]+/)\n .map(s => s.trim().split('@')[0])\n .filter(s => !!s);\n\n const wantsTypings = this.config.libraryTypings\n .split(/[,;\\s]+/)\n .map(s => s.trim())\n .filter(s => !!s);\n\n // O(1) lookups – avoids O(n²) Array.includes inside loops\n const installedSet = new Set(installedLibs);\n const wantsSet = new Set(wantsTypings);\n const packagesSet = new Set(packages);\n\n // Add all installed libraries the user has requested typings for to the list of packages\n for (const lib of installedLibs) {\n if (wantsSet.has(lib) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n // Some packages have submodules (e.g., rxjs/operators) that are not exposed through the main entry point\n // If typings are requested for them, also add them if the base module is installed\n for (const lib of wantsTypings) {\n // Extract the package name and check if we need to add it\n if (!lib.includes('/')) {\n continue;\n }\n const pkgName = lib.substring(0, lib.indexOf('/'));\n\n if (installedSet.has(pkgName) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n }\n for (const pkg of packages) {\n let pkgTypings = resolveTypings(\n pkg,\n this.getAdapterScopedPackageIdentifier ? this.getAdapterScopedPackageIdentifier(pkg) : pkg,\n // node needs ambient typings, so we don't wrap it in declare module\n pkg !== 'node',\n );\n if (!pkgTypings) {\n // Create the empty dummy declarations so users don't get the \"not found\" error\n // for installed packages\n if (pkg.includes('/')) {\n pkgTypings = {\n [`node_modules/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n } else {\n pkgTypings = {\n [`node_modules/@types/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n }\n }\n this.log.debug(`Loaded TypeScript definitions for \"${pkg}\": ${JSON.stringify(Object.keys(pkgTypings))}`);\n // remember the declarations for the editor\n Object.assign(tsAmbient, pkgTypings);\n // and give the language servers access to them\n this.tsServer.provideAmbientDeclarations(pkgTypings);\n jsDeclarationServer.provideAmbientDeclarations(pkgTypings);\n }\n }\n\n updateObjectContext(id: string, obj: ioBroker.Object | null | undefined): void {\n if (obj) {\n // add state to state ID's list\n if (obj.type === 'state') {\n if (!this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn] ||= new Set();\n this.context.channels[chn].add(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev] ||= new Set();\n this.context.devices[dev].add(id);\n }\n }\n } else {\n // delete object from state ID's list\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn]?.delete(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev]?.delete(id);\n }\n\n delete this.folderCreationVerifiedObjects[id];\n }\n\n if (!obj && this.objects[id]) {\n // objects were deleted\n this.removeFromNames(id);\n delete this.objects[id];\n } else if (obj && !this.objects[id]) {\n // object was added\n this.objects[id] = obj;\n this.addToNames(obj);\n } else if (obj && this.objects[id].common) {\n // Object just changed\n this.objects[id] = obj;\n\n const n = this.getName(id);\n let nn = this.objects[id].common ? this.objects[id].common.name : '';\n\n if (nn && typeof nn === 'object') {\n nn = nn[getLanguage()] || nn.en;\n }\n\n if (n !== nn) {\n if (n) {\n this.removeFromNames(id);\n }\n if (nn) {\n this.addToNames(obj);\n }\n }\n }\n }\n\n async stopAllScripts(): Promise {\n const scripts = Object.keys(this.scripts);\n const promises: Promise[] = [];\n for (let i = 0; i < scripts.length; i++) {\n promises.push(this.stopScript(scripts[i]));\n }\n return Promise.all(promises).then(() => {});\n }\n\n convertBackStringifiedValues(\n id: string,\n state: ioBroker.State | null | undefined,\n ): ioBroker.State | null | undefined {\n if (\n state &&\n typeof state.val === 'string' &&\n this.objects[id]?.common &&\n (this.objects[id].common.type === 'array' || this.objects[id].common.type === 'object')\n ) {\n try {\n state.val = JSON.parse(state.val);\n } catch (err: any) {\n if (id.startsWith('javascript.') || id.startsWith('0_userdata.0')) {\n this.log.info(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n } else {\n this.log.debug(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n }\n }\n }\n return state;\n }\n\n prepareStateObjectSimple(id: string, state: ioBroker.StateValue, isAck: boolean): ioBroker.State {\n // otherwise, assume that the given state is the value to be set\n const oState: ioBroker.State = { val: state, ack: isAck } as ioBroker.State;\n\n return this.prepareStateObject(id, oState);\n }\n\n prepareStateObject(id: string, state: ioBroker.SettableState | null): ioBroker.State {\n let oState: ioBroker.State;\n\n if (state && typeof state === 'object') {\n oState = state as ioBroker.State;\n } else {\n oState = { val: null } as ioBroker.State;\n }\n\n if (this.config.subscribe) {\n return oState;\n }\n // set other values to have a full state object\n // mirrors logic from statesInRedis\n if (oState.ts === undefined) {\n oState.ts = Date.now();\n }\n\n if (oState.q === undefined) {\n oState.q = 0;\n }\n\n oState.from =\n typeof oState.from === 'string' && oState.from !== '' ? oState.from : `system.adapter.${this.namespace}`;\n\n if (oState.lc === undefined) {\n const formerStateValue = this.interimStateValues[id] || this.states[id];\n if (!formerStateValue) {\n oState.lc = oState.ts;\n } else {\n // isDeepStrictEqual works on objects and primitive values\n const hasChanged = !isDeepStrictEqual(formerStateValue.val, oState.val);\n if (!formerStateValue.lc || hasChanged) {\n oState.lc = oState.ts;\n } else {\n oState.lc = formerStateValue.lc;\n }\n }\n }\n\n return oState;\n }\n\n async getData(): Promise {\n await this.subscribeForeignObjectsAsync('*');\n\n if (!this.config.subscribe) {\n await this.subscribeForeignStatesAsync('*');\n } else {\n await this.subscribeStatesAsync('debug.to');\n await this.subscribeStatesAsync('scriptEnabled.*');\n }\n\n this.log.info('requesting all states');\n\n const statesPromise = this.getForeignStatesAsync('*')\n .then(res => {\n if (!res) {\n this.log.error(`Could not initialize states: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n if (!this.config.subscribe) {\n this.states = Object.assign(res, this.states);\n this.context.states = this.states;\n\n this.addGetProperty(this.states);\n }\n\n // remember all IDs – sort once to guarantee the sorted invariant\n // required by binaryIndexOf() / sortedInsert() used later\n const keys = Object.keys(res).sort();\n for (const id of keys) {\n this.stateIds.push(id);\n this.stateIdSet.add(id);\n }\n this.statesInitDone = true;\n this.log.info('received all states');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize states: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n this.log.info('requesting all objects');\n\n const objectsPromise = this.getObjectListAsync({ include_docs: true })\n .then(res => {\n if (!res?.rows) {\n this.log.error(`Could not initialize objects: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n this.objects = {};\n this.context.objects = this.objects;\n for (let i = 0; i < res.rows.length; i++) {\n const doc = res.rows[i]?.doc;\n if (!doc) {\n this.log.debug(`Got empty object for index ${i} (${res.rows[i].id})`);\n continue;\n }\n if (this.objects[doc._id] === undefined) {\n // If was already there, ignore\n this.objects[doc._id] = doc;\n }\n doc.type === 'enum' && this._enums.add(doc._id);\n\n // Collect all names\n this.addToNames(this.objects[doc._id]);\n }\n this.addGetProperty(this.objects);\n\n const systemConfig = this.objects['system.config'];\n this.password = systemConfig?.native?.javascriptPassword\n ? this.decrypt(systemConfig?.native.javascriptPassword)\n : '';\n\n // set language for debug messages\n if (systemConfig?.common?.language) {\n setLanguage(systemConfig.common.language);\n this.language = systemConfig.common.language;\n this.context.language = this.language as ioBroker.Languages;\n } else if (this.language) {\n setLanguage(this.language);\n this.context.language = this.language;\n }\n\n // try to use system coordinates\n if (this.config.useSystemGPS) {\n if (systemConfig?.common?.latitude || systemConfig?.common?.longitude) {\n this.config.latitude = systemConfig.common.latitude;\n this.config.longitude = systemConfig.common.longitude;\n } else if (this.latitude && this.longitude) {\n this.config.latitude = this.latitude;\n this.config.longitude = this.longitude;\n }\n }\n this.config.latitude = parseFloat(this.config.latitude as unknown as string);\n this.config.longitude = parseFloat(this.config.longitude as unknown as string);\n\n if (isNaN(this.config.latitude)) {\n this.log.warn(`Configured latitude is not a number - check (instance/system) configuration`);\n } else if (this.config.latitude < -90 || this.config.latitude > 90) {\n this.log.warn(\n `Configured latitude \"${this.config.latitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n if (isNaN(this.config.longitude)) {\n this.log.warn(`Configured longitude is not a number - check (instance/system) configuration`);\n } else if (this.config.longitude < -180 || this.config.longitude > 180) {\n this.log.warn(\n `Configured longitude \"${this.config.longitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n this.config.sunriseEvent ||= 'nightEnd';\n this.config.sunriseOffset ||= 0;\n this.config.sunriseLimitStart ||= '06:00';\n this.config.sunriseLimitEnd ||= '12:00';\n\n this.config.sunsetEvent ||= 'dusk';\n this.config.sunsetOffset ||= 0;\n this.config.sunsetLimitStart ||= '18:00';\n this.config.sunsetLimitEnd ||= '23:00';\n\n this.objectsInitDone = true;\n this.log.info('received all objects');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize objects: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n return Promise.all([statesPromise, objectsPromise]).then(() => {});\n }\n\n async createActiveObject(id: string, enabled: boolean): Promise {\n const idActive = `${this.namespace}.scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idActive]) {\n this.objects[idActive] = {\n _id: idActive,\n common: {\n name: `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'controls script activity',\n type: 'boolean',\n write: true,\n read: true,\n role: 'switch.active',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idActive, this.objects[idActive]);\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idActive);\n if (state && state.val !== enabled) {\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n }\n }\n }\n\n async createProblemObject(id: string): Promise {\n const idProblem = `${this.namespace}.scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idProblem]) {\n this.objects[idProblem] = {\n _id: idProblem,\n common: {\n name: `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'Script has a problem',\n type: 'boolean',\n expert: true,\n write: false,\n read: true,\n role: 'indicator.error',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idProblem, this.objects[idProblem]);\n await this.setForeignStateAsync(idProblem, false, true);\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idProblem);\n if (state && state.val !== false) {\n await this.setForeignStateAsync(idProblem, false, true);\n }\n }\n }\n\n addToNames(obj: ioBroker.Object): void {\n const id = obj._id;\n\n if (obj.common?.name) {\n let name = obj.common.name;\n if (name && typeof name === 'object') {\n name = name[getLanguage()] || name.en;\n }\n if (!name || typeof name !== 'string') {\n // TODO, take name in current language\n return;\n }\n\n if (!this.names[name]) {\n this.names[name] = id;\n } else {\n // convert to array\n if (!Array.isArray(this.names[name])) {\n this.names[name] = [this.names[name] as string];\n }\n\n (this.names[name] as string[]).push(id);\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.set(id, name);\n }\n }\n\n removeFromNames(id: string): void {\n const n = this.getName(id);\n\n if (n) {\n if (Array.isArray(this.names[n])) {\n const arr = this.names[n];\n const pos = arr.indexOf(id);\n if (pos > -1) {\n arr.splice(pos, 1);\n if (arr.length === 1) {\n this.names[n] = arr[0];\n }\n }\n } else {\n delete this.names[n];\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.delete(id);\n }\n }\n\n getName(id: string): string | null {\n return this.nameById.get(id) ?? null;\n }\n\n async installNpm(npmLib: string): Promise {\n return new Promise((resolve, reject) => {\n const path = __dirname;\n\n // Also, set the working directory (cwd) of the process instead of using --prefix\n // because that has ugly bugs on Windows\n const cmd = `npm install ${npmLib} --omit=dev`;\n this.log.info(`Installing ${npmLib} into ${__dirname} - cmd: ${cmd}`);\n\n // System call used for update of js-controller itself,\n // because during the installation the npm packet will be deleted too, but some files must be loaded even during the installation process.\n const child = this.mods.child_process.exec(cmd, {\n windowsHide: true,\n cwd: path,\n timeout: 120_000, // 2 minutes max – prevents infinite blocking\n });\n\n child.stdout?.on('data', buf => this.log.info(buf.toString('utf8')));\n\n child.stderr?.on('data', buf => this.log.error(buf.toString('utf8')));\n\n child.on('err', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n child.on('error', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n\n child.on('exit', (code: number /* , signal */) => {\n if (code) {\n this.log.error(`Cannot install ${npmLib}: ${code}`);\n reject(new Error(`Cannot install ${npmLib}: ${code}`));\n }\n // command succeeded\n resolve(code);\n });\n });\n }\n\n async installLibraries(): Promise {\n if (typeof this.config?.libraries !== 'string') {\n this.config.libraries = '';\n }\n\n const libraries: string[] = this.config.libraries\n .split(/[,;\\s]+/)\n .map(d => d.trim())\n .filter(d => d);\n\n this.log.debug(`Custom libraries in config: \"${this.config.libraries}\": ${JSON.stringify(libraries)}`);\n\n let installedNodeModules: string[] = [];\n const keepModules: string[] = [];\n\n // js-controller >= 6.x\n if (typeof this.listInstalledNodeModules === 'function') {\n installedNodeModules = await this.listInstalledNodeModules();\n\n this.log.debug(`Found installed libraries: ${JSON.stringify(installedNodeModules)}`);\n }\n\n for (const lib of libraries) {\n let depName = lib;\n let version = 'latest';\n\n if (depName.includes('@') && depName.lastIndexOf('@') > 0) {\n const parts = depName.split('@');\n version = parts.pop() ?? 'latest';\n depName = parts.join('@');\n }\n\n /** The real module name, because the dependency can be a URL too */\n let moduleName = depName;\n\n if (URL.canParse(depName)) {\n moduleName = await requestModuleNameByUrl(depName);\n\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\" (from ${depName})`);\n } else {\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\"`);\n }\n\n keepModules.push(moduleName);\n\n // js-controller >= 6.x\n if (typeof this.installNodeModule === 'function') {\n try {\n const result = await this.installNodeModule(depName, { version });\n if (result.success) {\n this.log.debug(`Installed custom library: \"${moduleName}@${version}\"`);\n\n const importedModule: any = await this.importNodeModule(moduleName);\n (this.mods as Record)[moduleName] = importedModule.default ?? importedModule;\n } else {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\"`);\n }\n } catch (err: unknown) {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\": ${err as Error}`);\n }\n } else if (!existsSync(`${__dirname}/node_modules/${depName}/package.json`)) {\n // js-controller < 6.x\n this.log.info(`Installing custom library (legacy mode): \"${lib}\"`);\n\n try {\n await this.installNpm(lib);\n this.log.info(`Installed custom npm package (legacy mode): \"${lib}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot install custom npm package \"${lib}\" (legacy mode): ${err.toString()}`);\n }\n }\n }\n\n // js-controller >= 6.x\n if (typeof this.uninstallNodeModule === 'function') {\n for (const installedNodeModule of installedNodeModules) {\n if (!keepModules.includes(installedNodeModule)) {\n try {\n await this.uninstallNodeModule(installedNodeModule);\n\n this.log.info(`Removed custom npm package: \"${installedNodeModule}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot remove custom npm package ${installedNodeModule}: ${err.toString()}`);\n }\n }\n }\n }\n }\n\n createVM(source: string, name: string, wrapAsync: boolean): false | JsScript {\n if (this.context.debugMode && name !== this.context.debugMode) {\n return false;\n }\n\n if (!this.context.debugMode) {\n const logSubscriptionsText =\n \"\\n;\\nlog(`registered ${__engine.__subscriptions} subscription${__engine.__subscriptions === 1 ? '' : 's'},\" +\n \" ${__engine.__schedules} schedule${__engine.__schedules === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsMessage} message${__engine.__subscriptionsMessage === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsLog} log${__engine.__subscriptionsLog === 1 ? '' : 's'}\" +\n \" and ${__engine.__subscriptionsFile} file subscription${__engine.__subscriptionsFile === 1 ? '' : 's'}`);\\n\";\n\n if (wrapAsync) {\n source = `(async () => {\\n${source}\\n${logSubscriptionsText}\\n})();`;\n } else {\n if (source.endsWith('export {};\\n')) {\n // If the source ends with \"export {};\" place the log subscriptions before it\n source = source.slice(0, -11); // remove \"export {};\\n\"\n source = `${source}\\n${logSubscriptionsText}\\nexport {};\\n`;\n } else {\n source = `${source}\\n${logSubscriptionsText}`;\n }\n }\n } else {\n if (wrapAsync) {\n source = `(async () => {debugger;\\n${source}\\n})();`;\n } else {\n source = `debugger;${source}`;\n }\n }\n\n try {\n const options: ScriptOptions = {\n filename: name,\n // displayErrors: true,\n // lineOffset: this.globalScriptLines\n };\n return {\n script: new Script(source, options),\n } as JsScript;\n } catch (err: unknown) {\n this.logError(name, `compile failed at`, err as Error);\n return false;\n }\n }\n\n execute(\n script: JsScript,\n name: string,\n engineType: ScriptType,\n verbose: boolean,\n debug: boolean,\n /**\n * Optional sink for the \"execute\" message API. When provided, the script runs in an\n * ephemeral diagnostic mode: every log line (the script's own `log()`/`console.*` output\n * AND all verbose internal operations) is forwarded to this collector instead of the\n * adapter log, and no `scriptProblem` state is written.\n */\n logCollector?: ((severity: ioBroker.LogLevel, message: string) => void) | null,\n ): void {\n script.intervals = new Set();\n script.timeouts = new Set();\n script.schedules = [];\n script.wizards = [];\n script.name = name;\n script.engineType = engineType;\n script._id = Math.floor(Math.random() * 0xffffffff);\n script.subscribes = {};\n script.subscribesFile = {};\n script.setStatePerMinuteCounter = 0;\n script.setStatePerMinuteProblemCounter = 0;\n if (!logCollector) {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: false,\n ack: true,\n expire: 1000,\n });\n }\n\n const sandbox = sandBox(script, name, verbose, debug, this.context);\n\n // Redirect every log line into the collector. As `console.*`, the global `log()` and all\n // `sandbox.verbose && sandbox.log(...)` calls go through `sandbox.log`, this captures the\n // full picture for the caller while keeping the adapter log clean.\n if (logCollector) {\n sandbox.log = (msg: string, severity?: ioBroker.LogLevel): void => {\n let text: unknown = msg;\n if (text && typeof text !== 'string') {\n text = util.format(text);\n }\n logCollector(severity || 'info', text as string);\n };\n }\n\n try {\n script.script.runInNewContext(sandbox, {\n filename: name,\n displayErrors: true,\n // lineOffset: this.globalScriptLines\n });\n } catch (err: unknown) {\n if (logCollector) {\n const e = err as Error;\n const stack = (e?.stack ? e.stack.toString() : String(err))\n .split('\\n')\n .map(line => this.fixLineNo(line))\n .join('\\n');\n logCollector('error', `Error by run: ${stack}`);\n } else {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'execute',\n });\n this.logError(name, 'Error by run:', err as Error);\n }\n }\n }\n\n /**\n * Run an ad-hoc script sent via the `execute` message and return everything it logged.\n *\n * The script is compiled (JavaScript or TypeScript), executed with the same sandbox API as a\n * regular script (verbose by default, so internal operations like setState/subscribe are logged\n * too), left running for `timeout` ms to collect asynchronous output, and afterwards stopped and\n * fully cleaned up (timers, subscriptions, schedules). It is ephemeral: no script object or\n * states are created.\n *\n * Expected `message`:\n * - `source` / `code` (string, required) – the script source\n * - `engineType` (string, optional) – `TypeScript/ts` to compile as TypeScript, otherwise JavaScript\n * - `verbose` (boolean, optional, default `true`) – log internal sandbox operations\n * - `logLevel` (silly|debug|info|warn|error, optional, default `silly`) – minimum severity to return\n * - `timeout` (number ms, optional, default 5000, clamped to 0…60000) – collection window\n * - `maxLogs` (number, optional, default 5000) – cap on returned log lines\n */\n async executeScript(message: any): Promise<{\n ok: boolean;\n error?: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n }> {\n const LEVELS: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error'];\n\n const source: unknown = message?.source ?? message?.code;\n const engineTypeStr = (message?.engineType || '').toString().toLowerCase();\n const isTypeScript = engineTypeStr.startsWith('typescript') || engineTypeStr === 'ts';\n const engineType: 'Javascript/js' | 'TypeScript/ts' = isTypeScript ? 'TypeScript/ts' : 'Javascript/js';\n\n const empty = (error: string): {\n ok: boolean;\n error: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n } => ({ ok: false, error, engineType, runtime: 0, truncated: false, logs: [], output: '' });\n\n if (typeof source !== 'string' || !source.trim()) {\n return empty('No source code provided');\n }\n\n if (this.context.debugMode) {\n return empty('Cannot execute a script while a debug session is active');\n }\n\n let timeout = parseInt(message?.timeout as string, 10);\n if (isNaN(timeout)) {\n timeout = 5000;\n }\n timeout = Math.max(0, Math.min(timeout, 60000));\n\n const verbose = message?.verbose !== false;\n const minLevel: ioBroker.LogLevel = LEVELS.includes(message?.logLevel) ? message.logLevel : 'silly';\n let maxLogs = parseInt(message?.maxLogs as string, 10);\n if (isNaN(maxLogs) || maxLogs <= 0) {\n maxLogs = 5000;\n }\n\n const name = `${SCRIPT_CODE_MARKER}__execute_${++this.executeCounter}`;\n\n // Compile the source the same way regular scripts are compiled\n let createdScript: JsScript | false;\n if (isTypeScript) {\n const transformedSource = transformScriptBeforeCompilation(source, false);\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n return empty(`TypeScript compilation failed: ${err as Error}`);\n }\n if (!tsCompiled.success) {\n const errors = tsCompiled.diagnostics.map(diag => diag.annotatedSource).join('\\n');\n return empty(`TypeScript compilation failed:\\n${errors}`);\n }\n createdScript = this.createVM(`${this.globalScript}\\n${tsCompiled.result || ''}`, name, false);\n } else {\n createdScript = this.createVM(`${this.globalScript}\\n${source}`, name, true);\n }\n\n if (!createdScript) {\n return empty('Compilation failed');\n }\n\n const logs: { ts: number; severity: ioBroker.LogLevel; message: string }[] = [];\n let truncated = false;\n const collector = (severity: ioBroker.LogLevel, msg: string): void => {\n if (logs.length >= maxLogs) {\n truncated = true;\n return;\n }\n logs.push({ ts: Date.now(), severity, message: msg });\n };\n\n this.scripts[name] = createdScript;\n this.execute(createdScript, name, engineType, verbose, false, collector);\n\n // Let asynchronous output (timeouts, awaited code, triggered subscriptions) accumulate\n if (timeout) {\n await new Promise(resolve => setTimeout(resolve, timeout));\n }\n\n // Stop and clean up the ephemeral script (timers, subscriptions, schedules, …)\n await this.stopScript(name, true);\n\n const minIdx = LEVELS.indexOf(minLevel);\n const filtered = logs.filter(entry => {\n const idx = LEVELS.indexOf(entry.severity);\n return idx < 0 || idx >= minIdx;\n });\n\n return {\n ok: true,\n engineType,\n runtime: timeout,\n truncated,\n logs: filtered,\n output: filtered.map(entry => `[${entry.severity}] ${entry.message}`).join('\\n'),\n };\n }\n\n /**\n * Finds the index of `id` in a sorted array using binary search – O(log n).\n * Returns -1 if not found. Used instead of Array.indexOf on stateIds.\n */\n private binaryIndexOf(arr: string[], id: string): number {\n let lo = 0;\n let hi = arr.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n if (arr[mid] === id) {\n return mid;\n } else if (arr[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return -1;\n }\n\n /**\n * Inserts `id` into the sorted `stateIds` array using binary search – O(log n).\n * Much faster than push() + sort() which is O(n log n) on every insertion.\n */\n private sortedInsert(id: string): void {\n let lo = 0;\n let hi = this.stateIds.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (this.stateIds[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (this.stateIds[lo] !== id) {\n this.stateIds.splice(lo, 0, id);\n }\n }\n\n unsubscribe(id: string | RegExp | string[]): void {\n if (!id) {\n this.log.warn('unsubscribe: empty name');\n return;\n }\n\n if (Array.isArray(id)) {\n id.forEach(sub => this.unsubscribe(sub));\n return;\n }\n\n if (id.constructor && id.constructor.name === 'RegExp') {\n // adapter.log.warn('unsubscribe: todo - process regexp');\n return;\n }\n\n if (typeof id !== 'string') {\n this.log.error(`unsubscribe: invalid type of id - ${typeof id}`);\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (this.objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n if (this.adapterSubs[alive]) {\n this.adapterSubs[alive].delete(id);\n if (!this.adapterSubs[alive].size) {\n delete this.adapterSubs[alive];\n }\n }\n this.sendTo(a, 'unsubscribe', id);\n }\n }\n\n // Analyze if logs are still required or not\n updateLogSubscriptions(): void {\n let found = false;\n // go through all scripts and check if some script still requires logs\n Object.keys(this.logSubscriptions).forEach(scriptName => {\n if (!this.logSubscriptions?.[scriptName] || !this.logSubscriptions[scriptName].length) {\n delete this.logSubscriptions[scriptName];\n } else {\n found = true;\n }\n });\n\n if (this.requireLog) {\n if (found && !this.logSubscribed) {\n this.logSubscribed = true;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Subscribed to log messages (found logSubscriptions)`);\n } else if (!found && this.logSubscribed) {\n this.logSubscribed = false;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Unsubscribed from log messages (not found logSubscriptions)`);\n }\n }\n }\n\n async stopScript(name: string, silent?: boolean): Promise {\n if (!this.scripts[name]) {\n return false;\n }\n\n // `silent` is used for ephemeral scripts started via the \"execute\" message – they have no\n // `scriptEnabled` state and should not appear in the adapter log.\n if (!silent) {\n this.log.info(`${name}: Stopping script`);\n\n await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true);\n }\n\n if (this.messageBusHandlers[name]) {\n delete this.messageBusHandlers[name];\n }\n\n if (this.tempDirectories[name]) {\n try {\n this.mods.fs.rmSync(this.tempDirectories[name], { recursive: true });\n\n this.log.debug(`${name}: Removed temp directory: ${this.tempDirectories[name]}`);\n } catch {\n this.log.warn(`${name}: Unable to remove temp directory: ${this.tempDirectories[name]}`);\n }\n\n delete this.tempDirectories[name];\n }\n\n if (this.logSubscriptions[name]) {\n delete this.logSubscriptions[name];\n this.updateLogSubscriptions();\n }\n\n if (this.scripts[name]) {\n // Remove from subscriptions\n this.context.isEnums = false;\n if (this.config.subscribe) {\n // check all subscribed IDs\n Object.keys(this.scripts[name].subscribes).forEach(id => {\n if (this.subscribedPatterns[id]) {\n this.subscribedPatterns[id] -= this.scripts[name].subscribes[id];\n if (this.subscribedPatterns[id] <= 0) {\n this.unsubscribeForeignStates(id);\n delete this.subscribedPatterns[id];\n if (this.states[id]) {\n delete this.states[id];\n }\n }\n }\n });\n }\n\n for (let i = this.subscriptions.length - 1; i >= 0; i--) {\n if (this.subscriptions[i].name === name) {\n const sub = this.subscriptions.splice(i, 1)[0];\n // Also remove from the O(1) dispatch structures – shared helper to keep the\n // exact-id classification identical to the subscribe side in sandbox.ts\n if (sub) {\n removeFromDispatchIndex(this.context, sub);\n }\n if (sub?.pattern.id) {\n this.unsubscribe(sub.pattern.id);\n }\n } else {\n if (\n (!this.context.isEnums && this.subscriptions[i].pattern.enumName) ||\n this.subscriptions[i].pattern.enumId\n ) {\n this.context.isEnums = true;\n }\n }\n }\n\n // check all subscribed files\n Object.keys(this.scripts[name].subscribesFile).forEach(key => {\n if (this.subscribedPatternsFile[key]) {\n this.subscribedPatternsFile[key] -= this.scripts[name].subscribesFile[key];\n if (this.subscribedPatternsFile[key] <= 0) {\n const [id, file] = key.split('$%$');\n void this.unsubscribeForeignFiles(id, file);\n delete this.subscribedPatternsFile[key];\n }\n }\n });\n for (let i = this.subscriptionsFile.length - 1; i >= 0; i--) {\n if (this.subscriptionsFile[i].name === name) {\n this.subscriptionsFile.splice(i, 1);\n }\n }\n\n for (let i = this.subscriptionsObject.length - 1; i >= 0; i--) {\n if (this.subscriptionsObject[i].name === name) {\n const sub = this.subscriptionsObject.splice(i, 1)[0];\n if (sub) {\n // Remove from O(1) dispatch map\n const mapSubs = this.subscriptionsObjectMap.get(sub.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(sub);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n this.subscriptionsObjectMap.delete(sub.pattern);\n }\n }\n this.unsubscribeForeignObjects(sub.pattern);\n }\n }\n }\n\n // Stop all timeouts\n for (const t of this.scripts[name].timeouts) {\n clearTimeout(t);\n }\n // Stop all intervals\n for (const t of this.scripts[name].intervals) {\n clearInterval(t);\n }\n // Stop all delayed states (setStateDelayed timers) – O(1) via reverse-index\n const scriptStateIds = this.timersByScript.get(name);\n if (scriptStateIds) {\n for (const stateId of scriptStateIds) {\n if (this.timers[stateId]) {\n for (let i = this.timers[stateId].length - 1; i >= 0; i--) {\n if (this.timers[stateId][i].scriptName === name) {\n clearTimeout(this.timers[stateId][i].t);\n this.timers[stateId].splice(i, 1);\n }\n }\n if (!this.timers[stateId].length) {\n delete this.timers[stateId];\n }\n }\n }\n this.timersByScript.delete(name);\n }\n // Stop all scheduled jobs\n for (let i = 0; i < this.scripts[name].schedules.length; i++) {\n if (this.scripts[name].schedules[i]) {\n const _name = this.scripts[name].schedules[i].name;\n if (!this.mods.nodeSchedule.cancelJob(this.scripts[name].schedules[i])) {\n this.log.error(`${name}: Error by canceling scheduled job \"${_name}\"`);\n }\n }\n }\n\n // Stop all time wizards jobs\n if (this.context.scheduler) {\n for (let i = 0; i < this.scripts[name].wizards.length; i++) {\n if (this.scripts[name].wizards[i]) {\n this.context.scheduler.remove(this.scripts[name].wizards[i]);\n }\n }\n }\n\n // if callback for on stop\n if (typeof this.scripts[name].onStopCb === 'function') {\n this.scripts[name].onStopTimeout =\n parseInt(this.scripts[name].onStopTimeout as unknown as string, 10) || 1000;\n\n await new Promise(resolve => {\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n if (timeout) {\n timeout = null;\n resolve(true);\n }\n }, this.scripts[name].onStopTimeout);\n\n try {\n this.scripts[name].onStopCb(() => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(true);\n }\n });\n } catch (err: unknown) {\n this.log.error(`${name}: error in onStop callback: ${err as Error}`);\n }\n });\n }\n\n delete this.scripts[name];\n return true;\n }\n return false;\n }\n\n async prepareScript(obj: ioBroker.ScriptObject): Promise {\n if (obj?.common?.enabled && this.debugState.scriptName === obj._id) {\n const id = obj._id;\n await this.debugStop();\n this.log.info(`${id}: Debugging was stopped, because started in normal mode`);\n return this.prepareScript(obj);\n }\n\n if (\n obj?.common?.source &&\n (obj.common.enabled || this.context.debugMode === obj._id) &&\n obj.common.engine === `system.adapter.${this.namespace}`\n ) {\n const name = obj._id;\n\n if (this.password && obj.native?.protected) {\n obj.common.source = decryptText(this.password, obj.common.source);\n }\n\n const nameId = name.substring(SCRIPT_CODE_MARKER.length);\n if (!nameId.length || nameId.endsWith('.')) {\n this.log.error(`${name}: Script name \"${name}\" is invalid!`);\n return false;\n }\n const idActive = `scriptEnabled.${nameId}`;\n if (!this.config.subscribe) {\n this.interimStateValues[idActive] = this.prepareStateObjectSimple(\n `${this.namespace}.${idActive}`,\n true,\n true,\n );\n }\n await this.setState(idActive, true, true);\n obj.common.engineType ||= '' as 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';\n\n if (\n (obj.common.engineType as ScriptType).toLowerCase().startsWith('javascript') ||\n (obj.common.engineType as ScriptType) === 'Blockly' ||\n (obj.common.engineType as ScriptType) === 'Rules'\n ) {\n // Javascript\n this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);\n\n let sourceFn = name;\n if (webstormDebug) {\n const fn = name.replace(/^script\\.js\\./, '').replace(/\\./g, '/');\n sourceFn = this.mods.path.join(webstormDebug, `${fn}.js`);\n }\n const createdScript = this.createVM(`${this.globalScript}\\n${obj.common.source}`, sourceFn, true);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n sourceFn,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n if (obj.common.engineType.toLowerCase().startsWith('typescript')) {\n // TypeScript\n this.log.info(`${name}: Compiling TypeScript source`);\n // The source code must be transformed in order to support top level await\n // and to force TypeScript to compile the code as a module\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, false);\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash = hashSource(tsSourceHashBase + this.globalDeclarations + transformedSource);\n\n let compiled: string;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n this.log.info(`${name}: source code did not change, using cached compilation result...`);\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n return false;\n }\n\n const errors = tsCompiled.diagnostics.map(diag => `${diag.annotatedSource}\\n`).join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(`${name}: TypeScript compilation had errors:\\n${errors}`);\n } else {\n this.log.info(`${name}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result || '';\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(name); // ignore the next change and don't restart scripts\n await this.extendForeignObjectAsync(name, {\n common: {\n sourceHash,\n compiled,\n },\n });\n } else {\n this.log.error(`${name}: TypeScript compilation failed:\\n${errors}`);\n return false;\n }\n }\n const createdScript: JsScript | false = this.createVM(`${this.globalScript}\\n${compiled}`, name, false);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n name,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n this.log.warn(`${obj._id}: Unknown engine type: ${obj.common.engineType}`);\n return false;\n }\n\n let _name: string;\n if (obj?._id) {\n _name = obj._id;\n const scriptIdName = _name.substring(SCRIPT_CODE_MARKER.length);\n\n if (!scriptIdName.length || scriptIdName.endsWith('.')) {\n this.log.error(`${obj._id}: Script name \"${_name}\" is invalid!`);\n return false;\n }\n await this.setState(`scriptEnabled.${scriptIdName}`, false, true);\n }\n if (!obj) {\n this.log.error('Invalid script');\n }\n return false;\n }\n\n async loadScriptById(id: string): Promise {\n let obj: ioBroker.ScriptObject | null | undefined;\n try {\n obj = (await this.getForeignObjectAsync(id)) as ioBroker.ScriptObject | null | undefined;\n } catch (err: any) {\n this.log.error(`${id}: Invalid script: ${err}`);\n }\n if (!obj) {\n return false;\n }\n return this.loadScript(obj);\n }\n\n async loadScript(nameOrObject: ioBroker.ScriptObject): Promise {\n // create states for scripts\n await this.createActiveObject(nameOrObject._id, !!nameOrObject?.common?.enabled);\n await this.createProblemObject(nameOrObject._id);\n return this.prepareScript(nameOrObject);\n }\n\n getAstroEvent(\n date: Date,\n astroEvent: AstroEventName,\n start: string,\n end: string,\n offsetMinutes: number | string,\n isDayEnd: boolean,\n latitude: number,\n longitude: number,\n useNextDay?: boolean,\n ): Date {\n let ts: Date = this.mods.suncalc.getTimes(date, latitude, longitude)[astroEvent];\n\n if (!ts || ts.getTime().toString() === 'NaN') {\n ts = isDayEnd ? getNextTimeEvent(end, useNextDay) : getNextTimeEvent(start, useNextDay);\n }\n ts.setMilliseconds(0);\n ts.setMinutes(ts.getMinutes() + (parseInt(offsetMinutes as unknown as string, 10) || 0));\n\n const [timeHoursStart, timeMinutesStart] = start.split(':');\n const nTimeHoursStart = parseInt(timeHoursStart, 10);\n const nTimeMinutesStart = parseInt(timeMinutesStart, 10) || 0;\n\n if (\n ts.getHours() < nTimeHoursStart ||\n (ts.getHours() === nTimeHoursStart && ts.getMinutes() < nTimeMinutesStart)\n ) {\n ts = getNextTimeEvent(start, useNextDay);\n ts.setSeconds(0);\n }\n\n const [timeHoursEnd, timeMinutesEnd] = end.split(':');\n const nTimeHoursEnd = parseInt(timeHoursEnd, 10);\n const nTimeMinutesEnd = parseInt(timeMinutesEnd, 10) || 0;\n\n if (ts.getHours() > nTimeHoursEnd || (ts.getHours() === nTimeHoursEnd && ts.getMinutes() > nTimeMinutesEnd)) {\n ts = getNextTimeEvent(end, useNextDay);\n ts.setSeconds(0);\n }\n\n // if event in the past\n if (date > ts && useNextDay) {\n // take the next day\n ts.setDate(ts.getDate() + 1);\n }\n return ts;\n }\n\n async timeSchedule(): Promise {\n const now = new Date();\n let hours = now.getHours();\n const minutes = now.getMinutes();\n if (this.timeSettings.format12) {\n if (hours > 12) {\n hours -= 12;\n }\n }\n let sHours: string;\n if (this.timeSettings.leadingZeros) {\n sHours = hours.toString().padStart(2, '0');\n } else {\n sHours = hours.toString();\n }\n\n await this.setState('variables.dayTime', {\n val: `${sHours}:${minutes.toString().padStart(2, '0')}`,\n ack: true,\n });\n\n now.setMinutes(now.getMinutes() + 1);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const interval = now.getTime() - Date.now();\n this.timeScheduleTimer = setTimeout(() => this.timeSchedule(), interval);\n }\n\n async dayTimeSchedules(): Promise {\n // Always clear any existing timer to prevent memory leaks on rapid re-scheduling\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n\n // get astrological event\n if (\n this.config.latitude === undefined ||\n this.config.longitude === undefined ||\n (this.config.latitude as unknown as string) === '' ||\n (this.config.longitude as unknown as string) === '' ||\n this.config.latitude === null ||\n this.config.longitude === null\n ) {\n this.log.error('Longitude or latitude does not set. Cannot use astro.');\n return;\n }\n\n // Calculate the next event today\n const todayDate = getAstroStartOfDay();\n const nowDate = new Date();\n\n const todaySunrise = this.getAstroEvent(\n todayDate,\n this.config.sunriseEvent,\n this.config.sunriseLimitStart,\n this.config.sunriseLimitEnd,\n this.config.sunriseOffset,\n false,\n this.config.latitude,\n this.config.longitude,\n );\n const todaySunset = this.getAstroEvent(\n todayDate,\n this.config.sunsetEvent,\n this.config.sunsetLimitStart,\n this.config.sunsetLimitEnd,\n this.config.sunsetOffset,\n true,\n this.config.latitude,\n this.config.longitude,\n );\n\n // Sunrise\n let sunriseTimeout = todaySunrise.getTime() - nowDate.getTime();\n if (sunriseTimeout < 0 || sunriseTimeout > 3600000) {\n sunriseTimeout = 3600000;\n }\n\n // Sunset\n let sunsetTimeout = todaySunset.getTime() - nowDate.getTime();\n if (sunsetTimeout < 0 || sunsetTimeout > 3600000) {\n sunsetTimeout = 3600000;\n }\n\n const isDayTime: ioBroker.State | null | undefined = await this.getStateAsync('variables.isDayTime');\n let isDay: boolean;\n if (sunriseTimeout < 5000) {\n isDay = true;\n } else if (sunsetTimeout < 5000) {\n isDay = false;\n } else {\n // check if in between\n isDay = nowDate.getTime() > todaySunrise.getTime() - 60000 && nowDate <= todaySunset;\n }\n\n const valDayTime = isDayTime ? !!isDayTime.val : false;\n if (valDayTime !== isDay || isDayTime === null) {\n await this.setState('variables.isDayTime', isDay, true);\n }\n\n const dayLightSaving: ioBroker.State | null | undefined =\n await this.getStateAsync('variables.isDaylightSaving');\n const isDayLightSaving = dstOffsetAtDate(nowDate) !== 0;\n const val = dayLightSaving ? !!dayLightSaving.val : false;\n\n if (val !== isDayLightSaving || dayLightSaving === null) {\n await this.setState('variables.isDaylightSaving', isDayLightSaving, true);\n }\n\n let nextTimeout = sunriseTimeout;\n if (sunriseTimeout > sunsetTimeout) {\n nextTimeout = sunsetTimeout;\n }\n nextTimeout = nextTimeout - 3000;\n if (nextTimeout < 3000) {\n nextTimeout = 3000;\n }\n\n this.dayScheduleTimer = setTimeout(() => this.dayTimeSchedules(), nextTimeout);\n }\n\n stopTimeSchedules(): void {\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n if (this.sunScheduleTimer) {\n clearTimeout(this.sunScheduleTimer);\n this.sunScheduleTimer = null;\n }\n if (this.timeScheduleTimer) {\n clearTimeout(this.timeScheduleTimer);\n this.timeScheduleTimer = null;\n }\n }\n\n async patchFont(): Promise {\n let stat: Stats | undefined;\n let dbFile: Buffer | undefined;\n let fileName = `${__dirname}/../admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n let jsonFileName = `${__dirname}/../admin/vsFont/codicon.json`;\n try {\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n if (!stat) {\n jsonFileName = `${__dirname}/admin/vsFont/codicon.json`;\n fileName = `${__dirname}/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n }\n const _dbFile = await this.readFileAsync(\n 'javascript.admin',\n `vs/base/browser/ui/codicons/codicon/codicon.ttf`,\n );\n if (_dbFile?.file) {\n dbFile = _dbFile.file as Buffer;\n }\n } catch {\n // ignore\n }\n\n if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {\n try {\n const buffer = Buffer.from(JSON.parse(readFileSync(jsonFileName).toString()), 'base64');\n\n const jszip = await import('jszip');\n const zip = await jszip.loadAsync(buffer);\n let data: ArrayBuffer | undefined;\n if (zip) {\n data = await zip.file('codicon.ttf')?.async('arraybuffer');\n if (data?.byteLength !== 73452) {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n } else {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n writeFileSync(fileName, Buffer.from(data));\n // upload this file\n await this.writeFileAsync(\n 'javascript.admin',\n 'vs/base/browser/ui/codicons/codicon/codicon.ttf',\n Buffer.from(data),\n );\n return true;\n } catch (err: unknown) {\n this.log.error(`Cannot patch font: ${err as Error}`);\n return false;\n }\n }\n return false;\n }\n\n async sunTimeSchedules(): Promise {\n if (this.config.createAstroStates) {\n if (!isNaN(this.config.longitude) && !isNaN(this.config.longitude)) {\n const calcDate = getAstroStartOfDay();\n\n const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);\n\n this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);\n\n for (const t in times) {\n try {\n const objId = `variables.astro.${t}`;\n\n await this.setObjectNotExistsAsync(objId, {\n type: 'state',\n common: {\n name: `Astro ${t}`,\n type: 'string',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (times[t] !== null && !isNaN(times[t].getTime())) {\n const timeFormatted = formatHoursMinutesSeconds(times[t]);\n await this.setState(objId, {\n val: timeFormatted,\n c: times[t].toISOString(),\n ack: true,\n });\n } else {\n await this.setState(objId, { val: null, c: 'n/a', ack: true, q: 0x01 });\n }\n } catch (err: unknown) {\n this.log.error(\n `[sunTimeSchedules] Unable to set state for astro time \"${t}\" (${times[t].getTime()}): ${err as Error}`,\n );\n }\n }\n\n const todayDate = new Date();\n todayDate.setHours(0);\n todayDate.setMinutes(0);\n todayDate.setSeconds(1);\n todayDate.setMilliseconds(0);\n todayDate.setDate(todayDate.getDate() + 1);\n\n this.log.debug(`[sunTimeSchedules] Next: ${todayDate.toISOString()}`);\n this.sunScheduleTimer = setTimeout(() => this.sunTimeSchedules(), todayDate.getTime() - Date.now());\n }\n } else {\n // remove astro states if disabled\n this.delObject('variables.astro', { recursive: true });\n }\n }\n\n /**\n * Redirects the virtual-tsc log output to the ioBroker log\n */\n tsLog = (message: string, severity?: ioBroker.LogLevel): void => {\n // shift the severities around, we don't care about the small details\n if (!severity || severity === 'info') {\n severity = 'debug';\n } else if (severity === 'debug') {\n // Don't spam build logs on Travis\n if (isCI) {\n return;\n }\n severity = 'silly';\n }\n\n if (this?.log) {\n this.log[severity](message);\n } else {\n console.log(`[${severity.toUpperCase()}] ${message}`);\n }\n };\n\n addGetProperty(object: Record): void {\n try {\n Object.defineProperty(object, 'get', {\n value: function (id: string): any {\n return this[id] || this[`${this.namespace}.${id}`];\n },\n enumerable: false,\n });\n } catch {\n console.error('Cannot install get property');\n }\n }\n\n /**\n * Add declarations for global scripts\n *\n * @param scriptID - The current script the declarations were generated from\n * @param declarations - Declarations from a script\n */\n provideDeclarationsForGlobalScript(scriptID: string, declarations: string): void {\n // Remember which declarations this global script had access to;\n // we need this so the editor doesn't show a duplicate identifier error\n if (this.globalDeclarations != null && this.globalDeclarations !== '') {\n this.knownGlobalDeclarationsByScript[scriptID] = this.globalDeclarations;\n }\n // and concatenate the global declarations for the next scripts\n this.globalDeclarations += `${declarations}\\n`;\n // remember all previously generated global declarations,\n // so global scripts can reference each other\n const globalDeclarationPath = 'global.d.ts';\n tsAmbient[globalDeclarationPath] = this.globalDeclarations;\n // make sure the next script compilation has access to the updated declarations\n this.tsServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n jsDeclarationServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n }\n\n fixLineNo(line: string): string {\n if (line.includes('javascript.js:')) {\n return line;\n }\n if (!/scripts?\\.js[.\\\\/]/.test(line)) {\n return line;\n }\n if (/:(\\d+):/.test(line)) {\n line = line.replace(\n /:(\\d+):/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}:`,\n ); // one line for 'async function ()'\n } else {\n line = line.replace(\n /:(\\d+)$/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}`,\n ); // one line for 'async function ()'\n }\n return line;\n }\n\n async debugStop(): Promise {\n if (this.debugState.child) {\n this.debugSendToInspector({ cmd: 'end' });\n this.debugState.endTimeout = setTimeout(() => {\n this.debugState.endTimeout = null;\n this.debugState.child?.kill('SIGTERM');\n }, 500);\n this.debugState.promiseOnEnd ||= Promise.resolve(0);\n } else {\n this.debugState.promiseOnEnd = Promise.resolve(0);\n }\n\n await this.debugState.promiseOnEnd;\n\n this.debugState.child = null;\n this.debugState.running = false;\n this.debugState.scriptName = '';\n if (this.debugState.endTimeout) {\n clearTimeout(this.debugState.endTimeout);\n this.debugState.endTimeout = null;\n }\n }\n\n async debugDisableScript(id: string | undefined): Promise {\n if (id) {\n const obj = this.objects[id];\n if (obj?.common?.enabled) {\n await this.extendForeignObjectAsync(obj._id, { common: { enabled: false } });\n }\n }\n }\n\n debugSendToInspector(message: any): void {\n if (this.debugState.child) {\n try {\n this.log.info(`send to debugger: ${message}`);\n this.debugState.child.send(message);\n } catch {\n void this.debugStop().then(() =>\n this.log.info(\n `${this.debugState.scriptName}: Debugging was stopped, because started in normal mode`,\n ),\n );\n }\n } else {\n this.log.error(`${this.debugState.scriptName}: Cannot send command to terminated inspector`);\n void this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `Cannot send command to terminated inspector`, id: 1 }),\n true,\n );\n }\n }\n\n debugStart(data: { breakOnStart?: boolean; scriptName?: string; adapter?: string }): void {\n if (Date.now() - this.debugState.started < 1000) {\n console.log('Start ignored');\n return;\n }\n\n this.debugState.started = Date.now();\n // stop the script if it's running\n void this.debugDisableScript(data.scriptName)\n .then(() => this.debugStop())\n .then(() => {\n if (data.adapter) {\n this.debugState.adapterInstance = data.adapter;\n this.debugState.scriptName = '';\n } else {\n this.debugState.adapterInstance = '';\n this.debugState.scriptName = data.scriptName as string;\n }\n\n this.debugState.breakOnStart = data.breakOnStart;\n\n this.debugState.promiseOnEnd = new Promise(resolve => {\n const options: ForkOptions = {\n stdio: ['ignore', 'inherit', 'inherit', 'ipc'],\n //stdio: ['pipe', 'pipe', 'pipe', 'ipc']\n };\n const args: string[] = [];\n if (this.debugState.adapterInstance) {\n args.push('--breakOnStart');\n }\n\n this.debugState.child = fork(`${__dirname}/lib/inspect.js`, args, options);\n\n /*debugState.child.stdout.setEncoding('utf8');\n debugState.child.stderr.setEncoding('utf8');\n debugState.child.stdout.on('data', childPrint);\n debugState.child.stderr.on('data', childPrint);*/\n\n this.debugState.child?.on(\n 'message',\n (\n message:\n | string\n | {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n },\n ) => {\n let oMessage: {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n };\n if (typeof message === 'string') {\n try {\n oMessage = JSON.parse(message);\n } catch {\n return this.log.error(`Cannot parse message from inspector: ${message}`);\n }\n } else {\n oMessage = message;\n }\n\n if (oMessage.cmd !== 'ready') {\n void this.setState('debug.from', JSON.stringify(oMessage), true);\n }\n\n switch (oMessage.cmd) {\n case 'ready': {\n this.debugSendToInspector({\n cmd: 'start',\n scriptName: this.debugState.scriptName,\n adapterInstance: this.debugState.adapterInstance,\n instance: this.instance,\n });\n break;\n }\n\n case 'watched': {\n //console.log(`WATCHED: ${JSON.stringify(oMessage)}`);\n break;\n }\n\n case 'paused': {\n this.debugState.paused = true;\n console.log(`host: PAUSED`);\n break;\n }\n\n case 'resumed': {\n this.debugState.paused = false;\n //console.log(`STARTED`);\n break;\n }\n\n case 'log': {\n console.log(`[${oMessage.severity}] ${oMessage.text}`);\n break;\n }\n\n case 'readyToDebug': {\n console.log(\n `host: readyToDebug (set breakpoints): [${oMessage.scriptId}] ${oMessage.script}`,\n );\n break;\n }\n }\n },\n );\n this.debugState.child?.on('error', error => {\n this.log.error(`Cannot start inspector: ${error}`);\n void this.setState('debug.from', JSON.stringify({ cmd: 'error', error }), true);\n });\n\n this.debugState.child?.on('exit', async (code: number): Promise => {\n if (code) {\n await this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `invalid response code: ${code}` }),\n true,\n );\n }\n await this.setState('debug.from', JSON.stringify({ cmd: 'debugStopped', code }), true);\n this.debugState.child = null;\n resolve(code);\n });\n });\n });\n }\n}\n\nfunction patternMatching(\n event: EventObj,\n patternFunctions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' },\n): boolean {\n const logic = patternFunctions.logic ?? 'and';\n for (let i = 0, len = patternFunctions.length; i < len; i++) {\n const result = patternFunctions[i](event);\n if (logic === 'and' && !result) {\n return false; // short-circuit AND – one false is enough\n }\n if (logic === 'or' && result) {\n return true; // short-circuit OR – one true is enough\n }\n }\n // AND: all passed → true; OR: none matched → false\n return logic === 'and';\n}\n\n// If started as allInOne mode => return function to create an instance\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new JavaScript(options);\n} else {\n // otherwise start the instance directly\n (() => new JavaScript())();\n}\n"]} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Javascript adapter\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2024 bluefox ,\n *\n * Copyright (c) 2014 hobbyquaker\n */\n\nimport { Script, type ScriptOptions } from 'node:vm';\nimport { readFileSync, existsSync, statSync, writeFileSync, type Stats } from 'node:fs';\nimport { join, sep, normalize } from 'node:path';\nimport { fork, type ForkOptions } from 'node:child_process';\nimport { setTypeScriptResolveOptions, Server } from 'virtual-tsc';\nimport { isDeepStrictEqual } from 'node:util';\nimport prettier from 'prettier';\n\nimport * as dgram from 'node:dgram';\nimport * as crypto from 'node:crypto';\nimport * as dns from 'node:dns';\nimport * as events from 'node:events';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport * as http2 from 'node:http2';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport * as util from 'node:util';\nimport * as child_process from 'node:child_process';\nimport * as stream from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n// @ts-expect-error no types available\nimport * as suncalc from 'suncalc2';\nimport * as axios from 'axios';\n// @ts-expect-error no types available\nimport * as wake_on_lan from 'wake_on_lan';\nimport * as nodeSchedule from 'node-schedule';\n\nimport {\n getAbsoluteDefaultDataDir,\n Adapter,\n Credentials,\n EXIT_CODES,\n type AdapterOptions,\n} from '@iobroker/adapter-core';\nimport type SentryPlugin from '@iobroker/plugin-sentry';\nimport type { GetTimesResult } from 'suncalc';\nimport type { CompileResult } from 'virtual-tsc/build/util';\n\nimport { Mirror } from './lib/mirror';\nimport ProtectFs from './lib/protectFs';\nimport { setLanguage, getLanguage } from './lib/words';\nimport { sandBox, removeFromDispatchIndex } from './lib/sandbox';\nimport { requestModuleNameByUrl } from './lib/nodeModulesManagement';\nimport {\n resolveProviderCredentials,\n resolveTestCredentials,\n listAvailableProviders,\n getProviderCredentialId,\n} from './lib/aiProviderResolver';\nimport {\n translateToolsToAnthropic,\n translateMessagesToAnthropic,\n translateAnthropicResponseToOpenAI,\n} from './lib/anthropicAdapter';\nimport { createEventObject, type EventObj } from './lib/eventObj';\nimport { type AstroEventName, Scheduler } from './lib/scheduler';\nimport { targetTsLib, tsCompilerOptions, jsDeclarationCompilerOptions } from './lib/typescriptSettings';\nimport { hashSource } from './lib/tools';\nimport {\n resolveTypescriptLibs,\n resolveTypings,\n scriptIdToTSFilename,\n transformScriptBeforeCompilation,\n transformGlobalDeclarations,\n} from './lib/typescriptTools';\nimport type {\n FileSubscriptionResult,\n JavascriptContext,\n JavaScriptAdapterConfig,\n JsScript,\n ScriptType,\n SubscriptionResult,\n SubscribeObject,\n JavascriptTimer,\n SandboxType,\n LogMessage,\n DebugState,\n} from './types';\nimport type { PatternEventCompareFunction } from './lib/patternCompareFunctions';\nimport { decryptText } from './lib/crypto';\n\ntype MODULES = {\n fs: ProtectFs;\n 'fs/promises': ProtectFs['promises'];\n dgram: typeof dgram;\n crypto: typeof crypto;\n dns: typeof dns;\n events: typeof events;\n http: typeof http;\n https: typeof https;\n http2: typeof http2;\n net: typeof net;\n os: typeof os;\n path: typeof path;\n util: typeof util;\n child_process: typeof child_process;\n stream: typeof stream;\n zlib: typeof zlib;\n suncalc: typeof suncalc;\n axios: typeof axios;\n wake_on_lan: typeof wake_on_lan;\n nodeSchedule: typeof nodeSchedule;\n};\n\n/**\n * List of forbidden Locations for a mirror directory\n * relative to the default data directory\n * ATTENTION: the same list is also located in index_m.html!!\n */\nconst forbiddenMirrorLocations: string[] = [\n 'backup-objects',\n 'files',\n 'backitup',\n '../backups',\n '../node_modules',\n '../log',\n];\n\nconst packageJson: Record = JSON.parse(readFileSync(`${__dirname}/../package.json`).toString());\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nlet webstormDebug: string | undefined;\n\nconst isCI = !!process.env.CI;\n\n// ambient declarations for typescript\nlet tsAmbient: Record;\n\n// TypeScript's scripts are only recompiled if their source hash changes.\n// If an adapter update fixes the compilation bugs, a user won't notice until the changes and re-save the script.\n// To avoid that, we also include the\n// adapter version and TypeScript version in the hash\nconst tsSourceHashBase = `versions:adapter=${packageJson.version},typescript=${packageJson.dependencies.typescript}`;\n\n// taken from here: https://stackoverflow.com/questions/11887934/how-to-check-if-dst-daylight-saving-time-is-in-effect-and-if-so-the-offset\nfunction dstOffsetAtDate(dateInput: Date): number {\n const fullYear: number = dateInput.getFullYear() | 0;\n // \"Leap Years are any year that can be exactly divided by 4 (2012, 2016, etc.)\n // except if it can be exactly divided by 100, then it isn't (2100, 2200, etc.)\n // except if it can be exactly divided by 400, then it is (2000, 2400)\"\n // (https://www.mathsisfun.com/leap-years.html).\n const isLeapYear: 1 | 0 = ((fullYear & 3) | ((fullYear / 100) & 3)) === 0 ? 1 : 0;\n // (fullYear & 3) = (fullYear % 4), but faster\n //Alternative:var isLeapYear=(new Date(currentYear,1,29,12)).getDate()===29?1:0\n const fullMonth: number = dateInput.getMonth() | 0;\n return (\n // 1. We know what the time since the Epoch really is\n +dateInput - // same as the dateInput.getTime() method\n // 2. We know what the time since the Epoch at the start of the year is\n +new Date(fullYear, 0) - // day defaults to 1 if not explicitly zeroed\n // 3. Now, subtract what we would expect the time to be if daylight savings\n // did not exist. This yields the time-offset due to daylight savings.\n // Calculate the day of the year in the Gregorian calendar\n // The code below works based upon the facts of signed right shifts\n // • (x) >> n: shifts n and fills in the n highest bits with 0s\n // • (-x) >> n: shifts n and fills in the n highest bits with 1s\n // (This assumes that x is a positive integer)\n ((((-1 + // the first day in the year is day 1\n (31 & (-fullMonth >> 4)) + // January // (-11)>>4 = -1\n ((28 + isLeapYear) & ((1 - fullMonth) >> 4)) + // February\n (31 & ((2 - fullMonth) >> 4)) + // March\n (30 & ((3 - fullMonth) >> 4)) + // April\n (31 & ((4 - fullMonth) >> 4)) + // May\n (30 & ((5 - fullMonth) >> 4)) + // June\n (31 & ((6 - fullMonth) >> 4)) + // July\n (31 & ((7 - fullMonth) >> 4)) + // August\n (30 & ((8 - fullMonth) >> 4)) + // September\n (31 & ((9 - fullMonth) >> 4)) + // October\n (30 & ((10 - fullMonth) >> 4)) + // November\n // There are no months past December: the year rolls into the next.\n // Thus, \"fullMonth\" is 0-based, so it will never be 12 in JavaScript\n\n (dateInput.getDate() | 0)) & // get day of the month\n 0xffff) *\n 24 *\n 60 + // 24 hours in a day, 60 minutes in an hour\n (dateInput.getHours() & 0xff) * 60 + // 60 minutes in an hour\n (dateInput.getMinutes() & 0xff)) |\n 0) *\n 60 *\n 1000 - // 60 seconds in a minute * 1000 milliseconds in a second\n (dateInput.getSeconds() & 0xff) * 1000 - // 1000 milliseconds in a second\n dateInput.getMilliseconds()\n );\n}\n\nconst regExGlobalOld = /_global$/;\nconst regExGlobalNew = /script\\.js\\.global\\./;\n\nfunction checkIsGlobal(obj: ioBroker.ScriptObject): boolean {\n return obj?.common && (regExGlobalOld.test(obj.common.name) || regExGlobalNew.test(obj._id));\n}\n\nfunction fileMatching(sub: FileSubscriptionResult, id: string, fileName: string): boolean {\n if (sub.idRegEx) {\n if (!sub.idRegEx.test(id)) {\n return false;\n }\n } else {\n if (sub.id !== id) {\n return false;\n }\n }\n if (sub.fileRegEx) {\n if (!sub.fileRegEx.test(fileName)) {\n return false;\n }\n } else {\n if (sub.fileNamePattern !== fileName) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNextTimeEvent(time: string, useNextDay?: boolean): Date {\n const now: Date = getAstroStartOfDay();\n const [timeHours, timeMinutes] = time.split(':');\n const nTimeHours = parseInt(timeHours, 10);\n const nTimeMinutes = parseInt(timeMinutes, 10);\n if (\n useNextDay &&\n (now.getHours() > nTimeHours || (now.getHours() === nTimeHours && now.getMinutes() > nTimeMinutes))\n ) {\n now.setDate(now.getDate() + 1);\n }\n\n now.setHours(nTimeHours);\n now.setMinutes(nTimeMinutes);\n\n return now;\n}\n\nfunction getAstroStartOfDay(): Date {\n const d = new Date();\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n d.setUTCHours(0);\n\n return d;\n}\n\nfunction formatHoursMinutesSeconds(date: Date): string {\n const h = String(date.getHours());\n const m = String(date.getMinutes());\n const s = String(date.getSeconds());\n\n return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`;\n}\n\n// Due to a npm bug, virtual-tsc may be hoisted to the top level node_modules, but\n// TypeScript may still be in the adapter level (https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794),\n// so we need to tell virtual-tsc where TypeScript is\nsetTypeScriptResolveOptions({\n paths: [require.resolve('typescript')],\n});\n\n// compiler instance for global JS declarations\nconst jsDeclarationServer: Server = new Server(jsDeclarationCompilerOptions, isCI ? false : undefined);\n/**\n * Stores the IDs of script objects whose change should be ignored because\n * the compiled source was just updated\n */\n\nconst HTTP_STATUS_TEXTS: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 429: 'Too Many Requests / Rate Limit',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\nfunction httpStatusText(code: number): string {\n return HTTP_STATUS_TEXTS[code] ?? `Error ${code}`;\n}\n\n/**\n * Resolves the correct http/https module based on the URL string.\n * Returns null if the URL is invalid.\n */\nfunction resolveRequestModule(url: string): { module: typeof https | typeof http; isHttps: boolean } | null {\n try {\n const { protocol } = new URL(url);\n const isHttps = protocol === 'https:';\n return { module: isHttps ? https : http, isHttps };\n } catch {\n return null;\n }\n}\n\nclass JavaScript extends Adapter {\n declare public config: JavaScriptAdapterConfig;\n\n private readonly context: JavascriptContext;\n\n private errorLogFunction: {\n error: (msg: string) => void;\n warn: (msg: string) => void;\n info: (msg: string) => void;\n debug: (msg: string) => void;\n silly: (msg: string) => void;\n } = {\n error: (msg: string) => console.error(msg),\n warn: (msg: string) => console.warn(msg),\n info: (msg: string) => console.log(msg),\n debug: (msg: string) => console.debug(msg),\n silly: (msg: string) => console.debug(msg),\n };\n\n private readonly mods: MODULES;\n\n private objectsInitDone = false;\n private statesInitDone = false;\n\n private objects: Record = {};\n private states: Record = {};\n private readonly interimStateValues: Record = {};\n private readonly stateIds: string[] = [];\n /** Fast O(1) lookup set – always kept in sync with stateIds */\n private readonly stateIdSet: Set = new Set();\n\n private readonly subscriptions: SubscriptionResult[] = [];\n /**\n * O(1) dispatch map for subscriptions with exact (non-wildcard) string IDs.\n * Always kept in sync with `subscriptions`.\n */\n private readonly subscriptionsMap: Map = new Map();\n /**\n * Subscriptions whose pattern.id is a RegExp, contains wildcards (*,?), or is undefined.\n * These must still be checked linearly on every state change.\n */\n private readonly subscriptionsWildcard: SubscriptionResult[] = [];\n private readonly subscriptionsFile: FileSubscriptionResult[] = [];\n private readonly subscriptionsObject: SubscribeObject[] = [];\n /** O(1) dispatch map for subscriptionsObject – pattern → subscribers */\n private readonly subscriptionsObjectMap: Map = new Map();\n /** IO-9: Cache for sendTo broadcast – adapterName → instance list, invalidated on object change */\n private readonly sendToInstanceCache: Map = new Map();\n private readonly subscribedPatterns: Record = {};\n private readonly subscribedPatternsFile: Record = {};\n private readonly adapterSubs: Record> = {};\n private readonly timers: { [scriptName: string]: JavascriptTimer[] } = {};\n /** Reverse-index: scriptName → Set of stateIds that have timers for this script – O(1) cleanup */\n private readonly timersByScript: Map> = new Map();\n /** O(1) Set for enum-id lookups – replaces sorted string[] array */\n private readonly _enums: Set = new Set();\n private readonly names: { [name: string]: string | string[] } = {}; // name: id\n /** Reverse map: id → name for O(1) getName() lookups */\n private readonly nameById: Map = new Map();\n private readonly scripts: Record = {};\n private password: string = '';\n private readonly messageBusHandlers: Record<\n string,\n Record void }[]>\n > = {};\n private readonly logSubscriptions: Record<\n string,\n {\n sandbox: SandboxType;\n cb: (info: LogMessage) => void;\n id: number;\n severity: ioBroker.LogLevel | '*';\n }[]\n > = {};\n private readonly tempDirectories: { [scriptName: string]: string } = {}; // name: path\n private readonly folderCreationVerifiedObjects: Record = {};\n\n /** if logs are subscribed or not */\n private logSubscribed = false;\n\n private timeSettings: {\n format12: boolean;\n leadingZeros: boolean;\n } = { format12: false, leadingZeros: true };\n\n private dayScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n private sunScheduleTimer: NodeJS.Timeout | null = null; // schedule for sun moment times\n private timeScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n\n private activeStr = ''; // enabled state prefix\n\n private mirror: Mirror | undefined;\n\n private stopCounters: Record = {};\n\n private setStateCountCheckInterval: NodeJS.Timeout | null = null;\n\n /**\n * Decrypted AI API keys cached from the central credential store (manager mode),\n * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the\n * subscriptions set up in `subscribeAiCredentials`.\n */\n private readonly aiCredentialCache: Map = new Map();\n /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */\n private aiCredentialUnsubscribers: (() => Promise)[] = [];\n\n private globalScript = '';\n /** Generated declarations for global TypeScripts */\n private globalDeclarations = '';\n // Remember which definitions the global scripts\n // have access to, because it depends on the compilation order\n private knownGlobalDeclarationsByScript: Record = {};\n private globalScriptLines = 0;\n /** Running counter to build unique names for ad-hoc scripts started via the \"execute\" message */\n private executeCounter = 0;\n // compiler instance for typescript\n private tsServer: Server;\n\n private readonly ignoreObjectChange: Set = new Set();\n\n private debugState: DebugState = {\n scriptName: '',\n child: null,\n promiseOnEnd: null,\n paused: false,\n started: 0,\n running: false,\n };\n\n constructor(options: Partial = {}) {\n options = {\n ...options,\n name: 'javascript', // adapter name\n useFormatDate: true,\n /**\n * If the JS-Controller catches an unhandled error, this will be called,\n * so we have a chance to handle it ourselves.\n */\n error: (err: Error): boolean => {\n // Identify unhandled errors originating from callbacks in scripts\n // These are not caught by wrapping the execution code in try-catch\n if (err && typeof err.stack === 'string') {\n const scriptCodeMarkerIndex = err.stack.indexOf(SCRIPT_CODE_MARKER);\n if (scriptCodeMarkerIndex > -1) {\n // This is a script error\n let scriptName = err.stack.substring(scriptCodeMarkerIndex);\n scriptName = scriptName.substring(0, scriptName.indexOf(':'));\n this.logError(scriptName, 'Error:', err);\n\n // Leave the script running for now\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n // check if a path contains adaptername but not own node_module\n // this regex matched \"iobroker.javascript/\" if NOT followed by \"node_modules\"\n if (!err.stack.match(/iobroker\\.javascript[/\\\\](?!.*node_modules).*/g)) {\n // This is an error without any info on origin (mostly async errors like connection errors)\n // also consider it as being from a script\n this.log.error(\n 'An error happened which is most likely from one of your scripts, but the originating script could not be detected.',\n );\n this.log.error(`Error: ${err.message}`);\n this.log.error(err.stack);\n\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n }\n\n return false;\n },\n };\n\n super(options as AdapterOptions);\n\n this.on('objectChange', this.onObjectChange.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('ready', this.onReady.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.on('fileChange', this.onFileChange.bind(this));\n this.on('log', this.onLog.bind(this));\n\n this.mods = {\n fs: {} as ProtectFs,\n 'fs/promises': {} as ProtectFs['promises'],\n dgram,\n crypto,\n dns,\n events,\n http,\n https,\n http2,\n net,\n os,\n path,\n util,\n child_process,\n stream,\n zlib,\n\n suncalc,\n axios,\n wake_on_lan,\n nodeSchedule,\n };\n\n // check the webstorm debug and just debug modes\n let debugMode: string | undefined;\n if (process.argv) {\n for (let a = 1; a < process.argv.length; a++) {\n if (process.argv[a].startsWith('--webstorm')) {\n webstormDebug = process.argv[a].replace(/^(.*?=\\s*)/, '');\n }\n if (process.argv[a] === '--debugScript') {\n if (!process.argv[a + 1]) {\n console.log('No script name provided');\n process.exit(300);\n } else {\n debugMode = process.argv[a + 1];\n }\n }\n }\n }\n\n this.context = {\n mods: this.mods,\n objects: this.objects,\n states: this.states,\n interimStateValues: this.interimStateValues,\n stateIds: this.stateIds,\n errorLogFunction: this.errorLogFunction,\n subscriptions: this.subscriptions,\n subscriptionsMap: this.subscriptionsMap,\n subscriptionsWildcard: this.subscriptionsWildcard,\n subscriptionsFile: this.subscriptionsFile,\n subscriptionsObject: this.subscriptionsObject,\n subscriptionsObjectMap: this.subscriptionsObjectMap,\n sendToInstanceCache: this.sendToInstanceCache,\n subscribedPatterns: this.subscribedPatterns,\n subscribedPatternsFile: this.subscribedPatternsFile,\n adapterSubs: this.adapterSubs,\n cacheObjectEnums: {},\n timers: this.timers,\n timersByScript: this.timersByScript,\n enums: this._enums,\n names: this.names,\n scripts: this.scripts,\n messageBusHandlers: this.messageBusHandlers,\n logSubscriptions: this.logSubscriptions,\n tempDirectories: this.tempDirectories,\n folderCreationVerifiedObjects: this.folderCreationVerifiedObjects,\n\n isEnums: false, // If some subscription wants enum\n channels: null,\n devices: null,\n logWithLineInfo: this.logWithLineInfo.bind(this),\n scheduler: null,\n timerId: 0,\n rulesOpened: null, // opened rules\n language: this.language || 'en',\n\n updateLogSubscriptions: this.updateLogSubscriptions.bind(this),\n convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),\n updateObjectContext: this.updateObjectContext.bind(this),\n prepareStateObject: this.prepareStateObject.bind(this),\n debugMode,\n getAbsoluteDefaultDataDir,\n adapter: this as unknown as ioBroker.Adapter,\n logError: this.logError.bind(this),\n allowSelfSignedCerts: false,\n };\n\n this.tsServer = new Server(tsCompilerOptions, this.tsLog);\n }\n\n async onObjectChange(id: string, obj?: ioBroker.Object | null): Promise {\n // Check if we should ignore this change (once!) because we just updated the compiled sources\n if (this.ignoreObjectChange.has(id)) {\n // Update the cached script object and do nothing more\n this.objects[id] = obj as ioBroker.Object;\n this.ignoreObjectChange.delete(id);\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.objectsInitDone) {\n if (obj) {\n this.objects[id] = obj;\n }\n return;\n }\n\n if (id.startsWith('enum.')) {\n // clear cache\n this.context.cacheObjectEnums = {};\n\n // update this._enums Set\n if (obj) {\n this._enums.add(id);\n } else {\n this._enums.delete(id);\n }\n }\n\n // IO-9: Invalidate sendTo instance-cache when adapter instances change\n if (id.startsWith('system.adapter.')) {\n const parts = id.split('.');\n if (parts.length >= 3) {\n const adapterName = parts[2]; // e.g. \"zigbee\" from \"system.adapter.zigbee.0\"\n this.sendToInstanceCache.delete(adapterName);\n }\n }\n\n if (id === 'system.config' && obj?.common?.language) {\n // set language for debug messages\n setLanguage(obj.common.language);\n this.language = obj.common.language;\n this.context.language = this.language as ioBroker.Languages;\n }\n\n // update stored time format for variables.dayTime\n if (id === `${this.namespace}.variables.dayTime` && obj?.native) {\n this.timeSettings.format12 = obj.native.format12 || false;\n this.timeSettings.leadingZeros = obj.native.leadingZeros === undefined ? true : obj.native.leadingZeros;\n }\n\n // send changes to the disk mirror\n this.mirror?.onObjectChange(id, obj as ioBroker.ScriptObject | null);\n\n const formerObj = this.objects[id];\n\n this.updateObjectContext(id, obj); // Update all Meta object data\n\n // for the alias object changes on the state objects, we need to manually update the\n // state cache value, because the new value is only published on the next change\n if (obj?.type === 'state' && id.startsWith('alias.0.')) {\n // execute async for speed\n this.getForeignStateAsync(id)\n .then(state => {\n if (state) {\n this.states[id] = state;\n } else if (this.states[id] !== undefined) {\n delete this.states[id];\n }\n })\n .catch(() => {\n /* ignore */\n });\n }\n\n // O(1) dispatch via pattern map instead of O(n) forEach\n const objSubs = this.subscriptionsObjectMap.get(id);\n if (objSubs) {\n for (const sub of objSubs) {\n try {\n sub.callback(id, obj);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n\n // handle Script object updates\n if (!obj && formerObj?.type === 'script') {\n // Object Deleted just now\n if (checkIsGlobal(formerObj)) {\n // it was a global Script, and it was enabled and is now deleted => restart adapter\n if (formerObj.common.enabled) {\n this.log.info(`Active global Script ${id} deleted. Restart instance.`);\n this.restart();\n }\n } else if (formerObj.common?.engine === `system.adapter.${this.namespace}`) {\n // It was a non-global Script and deleted => stop and remove it\n await this.stopScript(id);\n\n // delete scriptEnabled.blabla variable\n const idActive = `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idActive);\n await this.delObjectAsync(idActive);\n\n // delete scriptProblem.blabla variable\n const idProblem = `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idProblem);\n await this.delObjectAsync(idProblem);\n }\n } else if (!formerObj && obj?.type === 'script') {\n // New script that does not exist before\n if (checkIsGlobal(obj)) {\n // new global script added => restart adapter\n if (obj.common.enabled) {\n this.log.info(`Active global Script ${id} created. Restart instance.`);\n this.restart();\n }\n } else if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // new non-global script - create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n if (obj.common.enabled) {\n // if enabled => Start a script\n await this.loadScriptById(id);\n }\n }\n } else if (obj?.type === 'script' && formerObj?.common) {\n // Script changed ...\n if (checkIsGlobal(obj)) {\n if (obj.common.enabled || formerObj.common.enabled) {\n this.log.info(`Global Script ${id} updated. Restart instance.`);\n this.restart();\n }\n } else {\n // No global script\n if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n }\n\n if (\n (formerObj.common.enabled && !obj.common.enabled) ||\n (formerObj.common.engine === `system.adapter.${this.namespace}` &&\n obj.common.engine !== `system.adapter.${this.namespace}`)\n ) {\n // Script disabled\n if (formerObj.common.enabled && formerObj.common.engine === `system.adapter.${this.namespace}`) {\n // Remove it from executing\n await this.stopScript(id);\n }\n } else if (\n (!formerObj.common.enabled && obj.common.enabled) ||\n (formerObj.common.engine !== `system.adapter.${this.namespace}` &&\n obj.common.engine === `system.adapter.${this.namespace}`)\n ) {\n // Script enabled\n\n if (obj.common.enabled && obj.common.engine === `system.adapter.${this.namespace}`) {\n // Start script\n await this.loadScriptById(id);\n }\n } else if (\n obj.common.engine === `system.adapter.${this.namespace}` ||\n formerObj.common.engine === `system.adapter.${this.namespace}`\n ) {\n // Source changed => restart the script (only on the relevant instance)\n this.stopCounters[id] = this.stopCounters[id] ? this.stopCounters[id] + 1 : 1;\n void this.stopScript(id).then(() => {\n // only start again after stop when \"last\" object change to prevent problems on\n // multiple changes in fast frequency\n if (!--this.stopCounters[id]) {\n void this.loadScriptById(id);\n }\n });\n }\n }\n }\n }\n\n onStateChange(id: string, state?: ioBroker.State | null): void {\n if (this.interimStateValues[id] !== undefined) {\n // any update invalidates the remembered interim value\n delete this.interimStateValues[id];\n }\n if (!id || id.startsWith('messagebox.') || id.startsWith('log.')) {\n return;\n }\n\n if (id === `${this.namespace}.debug.to` && state && !state.ack) {\n if (!this.context.debugMode) {\n this.debugSendToInspector(state.val);\n }\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.statesInitDone) {\n if (state) {\n this.states[id] = state;\n }\n return;\n }\n\n const oldState: ioBroker.State | null | undefined = this.states[id];\n if (state) {\n if (oldState) {\n // enable or disable script\n if (!state.ack && id.startsWith(this.activeStr) && this.objects[id]?.native?.script) {\n void this.extendForeignObject(this.objects[id].native.script, {\n common: { enabled: state.val },\n });\n }\n\n // monitor if the adapter is alive and send all subscriptions once more, after the adapter goes online\n if (/*oldState && */ oldState.val === false && state.val && id.endsWith('.alive')) {\n if (this.adapterSubs[id]) {\n const parts = id.split('.');\n const a = `${parts[2]}.${parts[3]}`;\n for (const sub of this.adapterSubs[id]) {\n this.log.info(`Detected coming adapter \"${a}\". Send subscribe: ${sub}`);\n this.sendTo(a, 'subscribe', sub);\n }\n }\n }\n } else if (/*!oldState && */ !this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n this.states[id] = state;\n } else {\n if (oldState) {\n delete this.states[id];\n }\n state = {} as ioBroker.State;\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n }\n\n // Collect matching subscriptions:\n // 1. O(1) exact-id map lookup – only buckets for this specific state id\n // 2. Linear scan over wildcard/regex subscriptions (unavoidable)\n // EventObj is created lazily – only when at least one subscription must be dispatched.\n const exactSubs = this.subscriptionsMap.get(id);\n const wildcardSubs = this.subscriptionsWildcard;\n const hasWork = (exactSubs && exactSubs.length > 0) || wildcardSubs.length > 0;\n\n if (!hasWork) {\n return;\n }\n\n let _eventObj: EventObj | null = null;\n const getEvent = (): EventObj => {\n if (!_eventObj) {\n _eventObj = createEventObject(\n this.context,\n id,\n this.convertBackStringifiedValues(id, state),\n this.convertBackStringifiedValues(id, oldState),\n );\n }\n return _eventObj;\n };\n\n if (exactSubs) {\n for (let i = 0, l = exactSubs.length; i < l; i++) {\n const sub = exactSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n // if this state matches any subscriptions\n for (let i = 0, l = wildcardSubs.length; i < l; i++) {\n const sub = wildcardSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n onFileChange(id: string, fileName: string, size: number | null): void {\n // if this file matches any subscriptions\n for (let i = 0, l = this.subscriptionsFile.length; i < l; i++) {\n const sub = this.subscriptionsFile[i];\n if (sub && fileMatching(sub, id, fileName)) {\n try {\n sub.callback(id, fileName, size, sub.withFile);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n async onUnload(callback: () => void): Promise {\n try {\n await this.debugStop();\n this.stopTimeSchedules();\n if (this.setStateCountCheckInterval) {\n clearInterval(this.setStateCountCheckInterval);\n this.setStateCountCheckInterval = null;\n }\n await this.unsubscribeAiCredentials();\n await this.stopAllScripts();\n } catch (err: unknown) {\n this.log.error(`Error during unload: ${(err as Error).message}`);\n } finally {\n if (typeof callback === 'function') {\n callback();\n }\n }\n }\n\n async onReady(): Promise {\n this.errorLogFunction = this.log;\n this.context.errorLogFunction = this.log;\n this.config.maxSetStatePerMinute = parseInt(this.config.maxSetStatePerMinute as unknown as string, 10) || 1000;\n this.config.maxTriggersPerScript = parseInt(this.config.maxTriggersPerScript as unknown as string, 10) || 100;\n\n if (this.supportsFeature?.('PLUGINS')) {\n const sentryInstance: InstanceType = this.getPluginInstance('sentry') as InstanceType<\n typeof SentryPlugin\n >;\n if (sentryInstance) {\n const Sentry = sentryInstance.getSentryObject();\n Sentry?.withScope(scope => {\n scope.addEventProcessor((event, _hint) => {\n if (event.exception?.values?.[0]) {\n const eventData = event.exception.values[0];\n if (\n eventData.stacktrace?.frames &&\n Array.isArray(eventData.stacktrace.frames) &&\n eventData.stacktrace.frames.length\n ) {\n // Exclude event if script Marker is included\n if (\n eventData.stacktrace.frames.find(frame =>\n frame.filename?.includes(SCRIPT_CODE_MARKER),\n )\n ) {\n return null;\n }\n // Exclude event if own directory is included but not inside own node_modules\n const ownNodeModulesDir = join(__dirname, 'node_modules');\n if (\n !eventData.stacktrace.frames.find(\n frame =>\n frame.filename?.includes(__dirname) &&\n !frame.filename.includes(ownNodeModulesDir),\n )\n ) {\n return null;\n }\n // We have exception data and did not sort it out, so report it\n return event;\n }\n }\n\n // No exception in it ... do not report\n return null;\n });\n });\n }\n }\n\n await this.main();\n }\n\n /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */\n private async readAiCredentialKey(id: string): Promise {\n try {\n const cred = await Credentials.getCredentials(this, id);\n return (cred?.values?.key || '').trim();\n } catch (e) {\n this.log.warn(`Cannot read AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`);\n return '';\n }\n }\n\n /**\n * Resolve the API key (and base URL) for an AI provider.\n *\n * In `manual` mode the key comes from the encryptedNative adapter config.\n * In `manager` mode the config only stores the ID of a credential in the central\n * ioBroker credential store (`system.credentials.*`); the actual key is taken from the\n * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are\n * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly.\n *\n * The settings-dialog Test button may pass form values that are not saved yet\n * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config.\n */\n private async resolveAiCredentials(\n provider: string,\n opts: {\n messageBaseUrl?: string;\n messageApiKey?: string;\n messageCredentialId?: string;\n credentialType?: 'manual' | 'manager';\n } = {},\n ): Promise<{ apiKey: string; baseUrl: string }> {\n const mode = opts.credentialType || this.config.credentialType || 'manual';\n if (mode === 'manager') {\n // The base URL is not a secret and is resolved the same way in both modes.\n const { baseUrl } = resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n const id = (opts.messageCredentialId || getProviderCredentialId(this.config, provider)).trim();\n if (!id) {\n return { apiKey: '', baseUrl };\n }\n // Prefer the cached value kept fresh by the credential subscription.\n const cached = this.aiCredentialCache.get(id);\n const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id);\n return { apiKey, baseUrl };\n }\n // Manual mode. The Test button sends the current form key (maybe empty) — let it win.\n if (opts.messageApiKey !== undefined) {\n return resolveTestCredentials(this.config, provider, opts.messageApiKey, opts.messageBaseUrl);\n }\n return resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n }\n\n /**\n * In `manager` mode, subscribe to all configured AI credentials so that edits made in the\n * admin credential manager (Settings → Credentials) are picked up live, without restarting\n * the adapter (the `system.credentials.*` objects are global, not part of the instance config).\n * The decrypted keys are cached and kept fresh by the subscription handlers.\n */\n private async subscribeAiCredentials(): Promise {\n // Always start from a clean state (idempotent — also used to re-subscribe).\n await this.unsubscribeAiCredentials();\n if (this.config.credentialType !== 'manager') {\n return;\n }\n // Collect the distinct credential IDs configured across all AI providers.\n const ids = new Set();\n for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) {\n const id = getProviderCredentialId(this.config, provider);\n if (id) {\n ids.add(id);\n }\n }\n for (const id of ids) {\n try {\n const unsubscribe = await Credentials.subscribeCredentials(\n this,\n id,\n (changedId, cred) => {\n if (cred) {\n this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim());\n this.log.debug(`AI credential \"${changedId}\" updated`);\n } else {\n // The credential was deleted\n this.aiCredentialCache.delete(changedId);\n this.log.debug(`AI credential \"${changedId}\" was deleted`);\n }\n },\n );\n this.aiCredentialUnsubscribers.push(unsubscribe);\n // Prime the cache with the current value (the handler may only fire on later changes).\n this.aiCredentialCache.set(id, await this.readAiCredentialKey(id));\n } catch (e) {\n this.log.warn(\n `Cannot subscribe to AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n if (this.aiCredentialUnsubscribers.length) {\n this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`);\n }\n }\n\n /** Tear down all AI credential subscriptions and clear the cache. */\n private async unsubscribeAiCredentials(): Promise {\n const unsubscribers = this.aiCredentialUnsubscribers;\n this.aiCredentialUnsubscribers = [];\n this.aiCredentialCache.clear();\n for (const unsubscribe of unsubscribers) {\n try {\n await unsubscribe();\n } catch (e) {\n this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n switch (obj?.command) {\n // process messageTo commands\n case 'toScript':\n case 'jsMessageBus':\n if (\n obj.message &&\n (obj.message.instance === null ||\n obj.message.instance === undefined ||\n `javascript.${obj.message.instance}` === this.namespace ||\n obj.message.instance === this.namespace)\n ) {\n Object.keys(this.messageBusHandlers).forEach(name => {\n // the script name could be script.js.xxx or only xxx\n if (\n (!obj.message.script || obj.message.script === name) &&\n this.messageBusHandlers[name][obj.message.message]\n ) {\n this.messageBusHandlers[name][obj.message.message].forEach(handler => {\n const sandbox = handler.sandbox;\n\n sandbox.verbose && sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');\n\n try {\n if (obj.callback) {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n\n this.sendTo(obj.from, obj.command, result, obj.callback);\n });\n } else {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n sandbox.verbose &&\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n });\n }\n } catch (err: unknown) {\n void this.setState(\n `scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`,\n true,\n true,\n );\n this.logError(name, 'Error in callback:', err as Error);\n }\n });\n }\n });\n }\n break;\n\n case 'loadTypings': {\n // Load typings for the editor\n const typings: Record = {};\n\n // try to load TypeScript lib files from disk\n try {\n const typescriptLibs = resolveTypescriptLibs(targetTsLib);\n Object.assign(typings, typescriptLibs);\n } catch {\n /* ok, no lib then */\n }\n\n // provide the already-loaded ioBroker typings and global script declarations\n Object.assign(typings, tsAmbient);\n\n // also provide the known global declarations for each global script\n for (const globalScriptPaths of Object.keys(this.knownGlobalDeclarationsByScript)) {\n typings[`${globalScriptPaths}.d.ts`] = this.knownGlobalDeclarationsByScript[globalScriptPaths];\n }\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { typings }, obj.callback);\n }\n break;\n }\n\n case 'calcAstroAll': {\n if (obj.message) {\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n let astroEvents: GetTimesResult & { nextSunrise: Date; nextSunset: Date } = {} as GetTimesResult & {\n nextSunrise: Date;\n nextSunset: Date;\n };\n try {\n astroEvents = this.mods.suncalc.getTimes(today, latitude, longitude);\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n if (astroEvents) {\n try {\n astroEvents.nextSunrise = this.getAstroEvent(\n today,\n obj.message.sunriseEvent || this.config.sunriseEvent,\n obj.message.sunriseLimitStart || this.config.sunriseLimitStart,\n obj.message.sunriseLimitEnd || this.config.sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n astroEvents.nextSunset = this.getAstroEvent(\n today,\n obj.message.sunsetEvent || this.config.sunsetEvent,\n obj.message.sunsetLimitStart || this.config.sunsetLimitStart,\n obj.message.sunsetLimitEnd || this.config.sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n }\n\n const result: Record = {};\n const keys = Object.keys(astroEvents).sort(\n (a, b) =>\n (astroEvents as unknown as Record)[a] -\n (astroEvents as unknown as Record)[b],\n );\n keys.forEach(key => {\n const validDate =\n (astroEvents as unknown as Record)[key] !== null &&\n !isNaN((astroEvents as unknown as Record)[key].getTime());\n\n result[key] = {\n isValidDate: validDate,\n serverTime: validDate\n ? formatHoursMinutesSeconds((astroEvents as unknown as Record)[key])\n : 'n/a',\n date: validDate\n ? (astroEvents as unknown as Record)[key].toISOString()\n : 'n/a',\n };\n });\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, result, obj.callback);\n }\n }\n break;\n }\n\n case 'calcAstro': {\n if (obj.message) {\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n\n const sunriseEvent = obj.message?.sunriseEvent || this.config.sunriseEvent;\n const sunriseLimitStart = obj.message?.sunriseLimitStart || this.config.sunriseLimitStart;\n const sunriseLimitEnd = obj.message?.sunriseLimitEnd || this.config.sunriseLimitEnd;\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const nextSunrise = this.getAstroEvent(\n today,\n sunriseEvent,\n sunriseLimitStart,\n sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n\n const sunsetEvent = obj.message?.sunsetEvent || this.config.sunsetEvent;\n const sunsetLimitStart = obj.message?.sunsetLimitStart || this.config.sunsetLimitStart;\n const sunsetLimitEnd = obj.message?.sunsetLimitEnd || this.config.sunsetLimitEnd;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const nextSunset = this.getAstroEvent(\n today,\n sunsetEvent,\n sunsetLimitStart,\n sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n\n const validDateSunrise = nextSunrise !== null && !isNaN(nextSunrise.getTime());\n const validDateSunset = nextSunset !== null && !isNaN(nextSunset.getTime());\n\n this.log.debug(\n `calcAstro sunrise: ${sunriseEvent} -> start ${sunriseLimitStart}, end: ${sunriseLimitEnd}, offset: ${sunriseOffset} - ${validDateSunrise ? nextSunrise.toISOString() : 'n/a'}`,\n );\n this.log.debug(\n `calcAstro sunset: ${sunsetEvent} -> start ${sunsetLimitStart}, end: ${sunsetLimitEnd}, offset: ${sunsetOffset} - ${validDateSunset ? nextSunset.toISOString() : 'n/a'}`,\n );\n\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n nextSunrise: {\n isValidDate: validDateSunrise,\n serverTime: validDateSunrise ? formatHoursMinutesSeconds(nextSunrise) : 'n/a',\n date: nextSunrise.toISOString(),\n },\n nextSunset: {\n isValidDate: validDateSunset,\n serverTime: validDateSunset ? formatHoursMinutesSeconds(nextSunset) : 'n/a',\n date: nextSunset.toISOString(),\n },\n },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'debug': {\n if (!this.context.debugMode) {\n this.debugStart(obj.message);\n }\n break;\n }\n\n case 'debugStop': {\n if (!this.context.debugMode) {\n void this.debugStop().then(() => console.log('stopped'));\n }\n break;\n }\n\n case 'rulesOn': {\n this.context.rulesOpened = obj.message;\n console.log(`Enable messaging for ${this.context.rulesOpened}`);\n break;\n }\n\n case 'rulesOff': {\n // maybe if (context.rulesOpened === obj.message)\n console.log(`Disable messaging for ${this.context.rulesOpened}`);\n this.context.rulesOpened = null;\n break;\n }\n\n case 'getIoBrokerDataDir': {\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n dataDir: getAbsoluteDefaultDataDir(),\n sep,\n },\n obj.callback,\n );\n }\n break;\n }\n\n case 'chatCompletion': {\n // Proxy chat completion requests to an OpenAI-compatible API endpoint.\n // API keys are resolved server-side from the encryptedNative config or the central\n // credentials manager — they never leave the adapter (frontend only sends `provider`).\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const chatModel = (obj.message?.model || '').trim();\n const messages = obj.message?.messages;\n const tools = obj.message?.tools;\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageBaseUrl: obj.message?.baseUrl,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n if (!chatModel || !messages) {\n this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback);\n return;\n }\n\n let url: string;\n const chatHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n let bodyObj: Record;\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/messages';\n chatHeaders['x-api-key'] = apiKey;\n chatHeaders['anthropic-version'] = '2023-06-01';\n // Translate OpenAI-format messages/tools into Anthropic's content-block format.\n const { system: systemText, messages: anthropicMessages } =\n translateMessagesToAnthropic(messages);\n const anthropicTools = tools?.length ? translateToolsToAnthropic(tools) : [];\n bodyObj = {\n model: chatModel,\n max_tokens: 8192,\n stream: false,\n ...(systemText ? { system: systemText } : {}),\n messages: anthropicMessages,\n ...(anthropicTools.length ? { tools: anthropicTools } : {}),\n };\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions';\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/chat/completions';\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/chat/completions`;\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = {\n model: chatModel,\n messages,\n stream: false,\n ...(tools?.length ? { tools } : {}),\n // Disable thinking/reasoning for local models to save context and speed\n ...(baseUrl ? { reasoning_effort: 'none' } : {}),\n };\n }\n\n const body = JSON.stringify(bodyObj);\n const bodyBuffer = Buffer.from(body, 'utf8');\n chatHeaders['Content-Length'] = bodyBuffer.length;\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'POST',\n headers: chatHeaders,\n timeout: 600000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n let content: string;\n let tool_calls: unknown;\n if (provider === 'anthropic') {\n const translated = translateAnthropicResponseToOpenAI(parsed);\n content = translated.content;\n tool_calls = translated.tool_calls;\n } else {\n const message = parsed.choices?.[0]?.message;\n content = message?.content || '';\n tool_calls = message?.tool_calls;\n }\n if (!content && !(tool_calls as unknown[] | undefined)?.length) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Empty response from API' },\n obj.callback,\n );\n } else {\n this.sendTo(\n obj.from,\n obj.command,\n {\n success: true,\n content,\n ...(tool_calls ? { tool_calls } : {}),\n },\n obj.callback,\n );\n }\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else {\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (600s)' }, obj.callback);\n });\n\n req.write(bodyBuffer);\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'testApiConnection': {\n // Test connection to an OpenAI-compatible API endpoint.\n // The settings-dialog Test button sends the current form value as `apiKey`\n // (so users can test before saving); otherwise we fall back to the stored key.\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageApiKey: obj.message?.apiKey,\n messageBaseUrl: obj.message?.baseUrl,\n messageCredentialId: obj.message?.credentialId,\n credentialType: obj.message?.credentialType,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n\n let url: string;\n const testHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/models';\n testHeaders['x-api-key'] = apiKey;\n testHeaders['anthropic-version'] = '2023-06-01';\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/models';\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/models';\n testHeaders.Authorization = `Bearer ${apiKey}`;\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/models`;\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'GET',\n headers: testHeaders,\n timeout: 10000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n const models: string[] = (parsed.data || [])\n .map((m: { id: string }) =>\n m.id.startsWith('models/') ? m.id.substring(7) : m.id,\n )\n .sort();\n this.sendTo(\n obj.from,\n obj.command,\n { success: true, models, count: models.length },\n obj.callback,\n );\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else if (res.statusCode === 401) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid API key (401)' },\n obj.callback,\n );\n } else if (res.statusCode === 403) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Access denied (403)' },\n obj.callback,\n );\n } else {\n // Include response body for debugging\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (10s)' }, obj.callback);\n });\n\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'getAvailableAiProviders': {\n // Reports which AI providers have stored credentials (keys never leave the backend).\n if (obj.callback) {\n const providers = listAvailableProviders(this.config);\n this.sendTo(obj.from, obj.command, { providers }, obj.callback);\n }\n break;\n }\n\n case 'prettier': {\n // Format the code with Prettier\n if (obj.message && typeof obj.message.code === 'string') {\n try {\n prettier\n .format(obj.message.code, {\n parser: obj.message.type === 'typescript' ? 'babel-ts' : 'babel',\n printWidth: 120,\n semi: true,\n tabWidth: 4,\n useTabs: false,\n trailingComma: 'all',\n singleQuote: true,\n singleAttributePerLine: true,\n endOfLine: 'lf',\n bracketSpacing: true,\n arrowParens: 'avoid',\n quoteProps: 'as-needed',\n })\n .then(formattedCode => {\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { code: formattedCode }, obj.callback);\n } else {\n this.logWithLineInfo(`Formatted code:\\n${formattedCode}`);\n }\n })\n .catch(e => {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n });\n } catch (e) {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n }\n } else {\n this.sendTo(obj.from, obj.command, { error: 'No code provided' }, obj.callback);\n }\n break;\n }\n\n case 'execute': {\n if (obj.callback) {\n void this.executeScript(obj.message)\n .then(result => this.sendTo(obj.from, obj.command, result, obj.callback))\n .catch(err =>\n this.sendTo(\n obj.from,\n obj.command,\n {\n ok: false,\n error: `Internal error: ${err as Error}`,\n logs: [],\n output: '',\n },\n obj.callback,\n ),\n );\n }\n break;\n }\n }\n }\n\n onLog(msg: any): void {\n for (const name of Object.keys(this.logSubscriptions)) {\n for (const handler of this.logSubscriptions[name]) {\n if (\n typeof handler.cb === 'function' &&\n (handler.severity === '*' || handler.severity === msg.severity)\n ) {\n handler.sandbox.logHandler = handler.severity || '*';\n handler.cb.call(handler.sandbox, msg);\n handler.sandbox.logHandler = undefined;\n }\n }\n }\n }\n\n logError(scriptName: string, msg: string, e: Error, offs?: number): void {\n const stack = e.stack ? e.stack.toString().split('\\n') : e ? e.toString() : '';\n if (!msg.includes('\\n')) {\n msg = msg.replace(/[: ]*$/, ': ');\n }\n if (!msg.endsWith(' ')) {\n msg += ':';\n }\n if (!scriptName.startsWith(SCRIPT_CODE_MARKER)) {\n scriptName = SCRIPT_CODE_MARKER + scriptName;\n }\n\n this.errorLogFunction.error(`${scriptName}: ${msg}${this.fixLineNo(stack[0])}`);\n for (let i = offs || 1; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.error(`${scriptName}: ${this.fixLineNo(stack[i])}`);\n }\n }\n\n logWithLineInfo(msg: string): void {\n this.errorLogFunction.warn(msg);\n\n // get current error stack\n const stack = new Error().stack?.split('\\n');\n\n if (stack) {\n for (let i = 3; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInContext|runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.warn(this.fixLineNo(stack[i]));\n }\n }\n }\n\n async main(): Promise {\n // Patch the font as it sometimes is wrong\n if (!this.context.debugMode) {\n if (await this.patchFont()) {\n this.log.debug('Font patched');\n }\n }\n\n this.log.debug(`config.subscribe (Do not subscribe all states on start): ${this.config.subscribe}`);\n\n // correct jsonConfig for admin\n const instObj: ioBroker.InstanceObject | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (instObj?.common) {\n if (instObj.common.adminUI?.config !== 'json') {\n if (instObj.common.adminUI) {\n instObj.common.adminUI.config = 'json';\n } else {\n instObj.common.adminUI = { config: 'json' };\n }\n void this.setForeignObject(instObj._id, instObj);\n }\n }\n\n if (webstormDebug) {\n this.errorLogFunction = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n debug: console.log,\n silly: console.log,\n };\n this.context.errorLogFunction = this.errorLogFunction;\n }\n this.activeStr = `${this.namespace}.scriptEnabled.`;\n\n this.mods.fs = new ProtectFs(this.log, getAbsoluteDefaultDataDir());\n this.mods['fs/promises'] = this.mods.fs.promises; // to avoid require('fs/promises');\n\n // try to read TS declarations\n try {\n tsAmbient = {\n 'javascript.d.ts': readFileSync(this.mods.path.join(__dirname, 'lib/javascript.d.ts'), 'utf8'),\n };\n this.tsServer.provideAmbientDeclarations(tsAmbient);\n jsDeclarationServer.provideAmbientDeclarations(tsAmbient);\n } catch (err: unknown) {\n this.log.warn(`Could not read TypeScript ambient declarations: ${err as Error}`);\n // This should not happen, so send an error report to Sentry\n if (this.supportsFeature && this.supportsFeature('PLUGINS')) {\n const sentryInstance = this.getPluginInstance('sentry');\n if (sentryInstance) {\n const sentryObject = sentryInstance.getSentryObject();\n sentryObject?.captureException(err as Error);\n }\n }\n // Keep the adapter from crashing when the included typings cannot be read\n tsAmbient = {};\n }\n\n await this.installLibraries();\n // Load the TS declarations for Node.js and all 3rd party modules\n this.loadTypeScriptDeclarations();\n\n await this.getData();\n this.context.scheduler = new Scheduler(\n this.log,\n Date,\n this.mods.suncalc,\n this.config.latitude,\n this.config.longitude,\n );\n await this.dayTimeSchedules();\n await this.sunTimeSchedules();\n await this.timeSchedule();\n\n // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it\n // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode)\n this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts;\n\n // In `manager` credential mode, subscribe to the configured AI credentials so changes in the\n // central credential store are picked up live (the keys are cached for the AI sendTo handlers).\n await this.subscribeAiCredentials();\n\n const doc = await this.getObjectViewAsync('script', 'javascript', {});\n if (doc?.rows?.length) {\n // sort global scripts if configured\n if (this.config.sortGlobalScriptsAlphabetically) {\n doc.rows.sort((a, b) => a.value._id.localeCompare(b.value._id));\n }\n // assemble global script\n for (let g = 0; g < doc.rows.length; g++) {\n const obj = doc.rows[g].value;\n if (checkIsGlobal(obj)) {\n if (obj && obj.common) {\n const engineType = (obj.common.engineType || '').toLowerCase();\n\n if (obj.common.enabled) {\n if (engineType.startsWith('typescript')) {\n // TypeScript\n this.log.info(`${obj._id}: compiling TypeScript source...`);\n // In order to compile global TypeScript, we need to do some transformations\n // 1. For top-level-await, some statements must be wrapped in an immediately-invoked async function\n // 2. If any global script uses `import`, the declarations are no longer visible if they are not exported with `declare global`\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, true);\n // The source code must be transformed in order to support top level await\n // Global scripts must not be treated as a module, otherwise their methods\n // cannot be found by the normal scripts\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash: string = hashSource(\n tsSourceHashBase + this.globalDeclarations + transformedSource,\n );\n\n let compiled: string | undefined;\n let declarations: string | undefined;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n declarations = obj.common.declarations;\n this.log.info(\n `${obj._id}: source code did not change, using cached compilation result...`,\n );\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n continue;\n }\n\n const errors = tsCompiled.diagnostics\n .map(diag => `${diag.annotatedSource}\\n`)\n .join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(\n `${obj._id}: TypeScript compilation completed with errors:\\n${errors}`,\n );\n } else {\n this.log.info(`${obj._id}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result;\n // Global scripts that have been transformed to support `import` need to have their declarations transformed aswell\n declarations = transformGlobalDeclarations(tsCompiled.declarations || '');\n\n const newCommon: {\n compiled: string | undefined;\n declarations?: string;\n sourceHash: string;\n } = {\n sourceHash,\n compiled,\n };\n if (declarations) {\n newCommon.declarations = declarations;\n }\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(obj._id); // ignore the next change and don't restart scripts\n void this.extendForeignObject(obj._id, {\n common: newCommon,\n });\n } else {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${errors}`);\n continue;\n }\n }\n this.globalScript += `${compiled}\\n`;\n // if declarations were generated, remember them\n if (declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, declarations);\n }\n } else {\n // javascript\n const sourceCode = obj.common.source;\n this.globalScript += `${sourceCode}\\n`;\n\n // try to compile the declarations so TypeScripts can use\n // functions defined in global JavaScripts\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = jsDeclarationServer.compile(filename, sourceCode);\n } catch (err: unknown) {\n this.log.warn(\n `${obj._id}: Error while generating type declarations, skipping:\\n${err as Error}`,\n );\n continue;\n }\n // if declarations were generated, remember them\n if (tsCompiled.success && tsCompiled.declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, tsCompiled.declarations);\n }\n }\n }\n }\n }\n }\n }\n\n this.globalScript = this.globalScript.replace(/\\r\\n/g, '\\n');\n this.globalScriptLines = this.globalScript.split(/\\n/g).length - 1;\n\n if (doc?.rows?.length) {\n // load all scripts\n for (let i = 0; i < doc.rows.length; i++) {\n if (!checkIsGlobal(doc.rows[i].value)) {\n void this.loadScript(doc.rows[i].value);\n }\n }\n }\n\n if (this.config.mirrorPath?.trim()) {\n this.config.mirrorInstance = parseInt(this.config.mirrorInstance as unknown as string, 10) || 0;\n if (this.instance === this.config.mirrorInstance) {\n const ioBDataDir = getAbsoluteDefaultDataDir() + sep;\n this.config.mirrorPath = normalize(this.config.mirrorPath);\n let mirrorForbidden = false;\n for (let dir of forbiddenMirrorLocations) {\n dir = join(ioBDataDir, dir) + sep;\n if (dir.includes(this.config.mirrorPath) || this.config.mirrorPath.startsWith(dir)) {\n this.log.error(`The Mirror directory is not allowed to be a central ioBroker directory!`);\n this.log.error(`Directory ${this.config.mirrorPath} is not allowed to mirror files!`);\n mirrorForbidden = true;\n break;\n }\n }\n if (!mirrorForbidden) {\n this.mirror = new Mirror({\n adapter: this,\n log: this.log,\n diskRoot: this.config.mirrorPath,\n });\n }\n }\n }\n\n // Check setState counter per minute and stop a script if too high\n this.setStateCountCheckInterval = setInterval(() => {\n for (const id of Object.keys(this.scripts)) {\n if (!this.scripts[id]) {\n continue;\n }\n const currentSetStatePerMinuteCounter = this.scripts[id].setStatePerMinuteCounter;\n this.scripts[id].setStatePerMinuteCounter = 0;\n if (currentSetStatePerMinuteCounter > this.config.maxSetStatePerMinute) {\n this.scripts[id].setStatePerMinuteProblemCounter++;\n this.log.debug(\n `${id}: Script has reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute in ${this.scripts[id].setStatePerMinuteProblemCounter} consecutive minutes`,\n );\n // Allow \"too high counters\" for 1 minute for script starts or such and only\n // stop the script when lasts longer\n if (this.scripts[id].setStatePerMinuteProblemCounter > 1) {\n this.log.error(\n `${id}: Script is calling setState more than ${this.config.maxSetStatePerMinute} times per minute! Stopping Script now! Please check your script!`,\n );\n void this.stopScript(id);\n }\n } else if (this.scripts[id].setStatePerMinuteProblemCounter > 0) {\n this.scripts[id].setStatePerMinuteProblemCounter--;\n this.log.debug(\n `Script ${id} has NOT reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute. Decrease problem counter to ${this.scripts[id].setStatePerMinuteProblemCounter}`,\n );\n }\n }\n }, 60_000).unref();\n }\n\n private loadTypeScriptDeclarations(): void {\n // try to load the typings on disk for all 3rd party modules\n const packages = [\n 'node', // this provides auto-completion for most builtins\n '@iobroker/types', // this provides auto-completion for most builtins\n ];\n // Also include user-selected libraries (but only those that are also installed)\n if (typeof this.config?.libraries === 'string' && typeof this.config.libraryTypings === 'string') {\n const installedLibs = this.config.libraries\n .split(/[,;\\s]+/)\n .map(s => s.trim().split('@')[0])\n .filter(s => !!s);\n\n const wantsTypings = this.config.libraryTypings\n .split(/[,;\\s]+/)\n .map(s => s.trim())\n .filter(s => !!s);\n\n // O(1) lookups – avoids O(n²) Array.includes inside loops\n const installedSet = new Set(installedLibs);\n const wantsSet = new Set(wantsTypings);\n const packagesSet = new Set(packages);\n\n // Add all installed libraries the user has requested typings for to the list of packages\n for (const lib of installedLibs) {\n if (wantsSet.has(lib) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n // Some packages have submodules (e.g., rxjs/operators) that are not exposed through the main entry point\n // If typings are requested for them, also add them if the base module is installed\n for (const lib of wantsTypings) {\n // Extract the package name and check if we need to add it\n if (!lib.includes('/')) {\n continue;\n }\n const pkgName = lib.substring(0, lib.indexOf('/'));\n\n if (installedSet.has(pkgName) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n }\n for (const pkg of packages) {\n let pkgTypings = resolveTypings(\n pkg,\n this.getAdapterScopedPackageIdentifier ? this.getAdapterScopedPackageIdentifier(pkg) : pkg,\n // node needs ambient typings, so we don't wrap it in declare module\n pkg !== 'node',\n );\n if (!pkgTypings) {\n // Create the empty dummy declarations so users don't get the \"not found\" error\n // for installed packages\n if (pkg.includes('/')) {\n pkgTypings = {\n [`node_modules/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n } else {\n pkgTypings = {\n [`node_modules/@types/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n }\n }\n this.log.debug(`Loaded TypeScript definitions for \"${pkg}\": ${JSON.stringify(Object.keys(pkgTypings))}`);\n // remember the declarations for the editor\n Object.assign(tsAmbient, pkgTypings);\n // and give the language servers access to them\n this.tsServer.provideAmbientDeclarations(pkgTypings);\n jsDeclarationServer.provideAmbientDeclarations(pkgTypings);\n }\n }\n\n updateObjectContext(id: string, obj: ioBroker.Object | null | undefined): void {\n if (obj) {\n // add state to state ID's list\n if (obj.type === 'state') {\n if (!this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn] ||= new Set();\n this.context.channels[chn].add(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev] ||= new Set();\n this.context.devices[dev].add(id);\n }\n }\n } else {\n // delete object from state ID's list\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn]?.delete(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev]?.delete(id);\n }\n\n delete this.folderCreationVerifiedObjects[id];\n }\n\n if (!obj && this.objects[id]) {\n // objects were deleted\n this.removeFromNames(id);\n delete this.objects[id];\n } else if (obj && !this.objects[id]) {\n // object was added\n this.objects[id] = obj;\n this.addToNames(obj);\n } else if (obj && this.objects[id].common) {\n // Object just changed\n this.objects[id] = obj;\n\n const n = this.getName(id);\n let nn = this.objects[id].common ? this.objects[id].common.name : '';\n\n if (nn && typeof nn === 'object') {\n nn = nn[getLanguage()] || nn.en;\n }\n\n if (n !== nn) {\n if (n) {\n this.removeFromNames(id);\n }\n if (nn) {\n this.addToNames(obj);\n }\n }\n }\n }\n\n async stopAllScripts(): Promise {\n const scripts = Object.keys(this.scripts);\n const promises: Promise[] = [];\n for (let i = 0; i < scripts.length; i++) {\n promises.push(this.stopScript(scripts[i]));\n }\n return Promise.all(promises).then(() => {});\n }\n\n convertBackStringifiedValues(\n id: string,\n state: ioBroker.State | null | undefined,\n ): ioBroker.State | null | undefined {\n if (\n state &&\n typeof state.val === 'string' &&\n this.objects[id]?.common &&\n (this.objects[id].common.type === 'array' || this.objects[id].common.type === 'object')\n ) {\n try {\n state.val = JSON.parse(state.val);\n } catch (err: any) {\n if (id.startsWith('javascript.') || id.startsWith('0_userdata.0')) {\n this.log.info(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n } else {\n this.log.debug(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n }\n }\n }\n return state;\n }\n\n prepareStateObjectSimple(id: string, state: ioBroker.StateValue, isAck: boolean): ioBroker.State {\n // otherwise, assume that the given state is the value to be set\n const oState: ioBroker.State = { val: state, ack: isAck } as ioBroker.State;\n\n return this.prepareStateObject(id, oState);\n }\n\n prepareStateObject(id: string, state: ioBroker.SettableState | null): ioBroker.State {\n let oState: ioBroker.State;\n\n if (state && typeof state === 'object') {\n oState = state as ioBroker.State;\n } else {\n oState = { val: null } as ioBroker.State;\n }\n\n if (this.config.subscribe) {\n return oState;\n }\n // set other values to have a full state object\n // mirrors logic from statesInRedis\n if (oState.ts === undefined) {\n oState.ts = Date.now();\n }\n\n if (oState.q === undefined) {\n oState.q = 0;\n }\n\n oState.from =\n typeof oState.from === 'string' && oState.from !== '' ? oState.from : `system.adapter.${this.namespace}`;\n\n if (oState.lc === undefined) {\n const formerStateValue = this.interimStateValues[id] || this.states[id];\n if (!formerStateValue) {\n oState.lc = oState.ts;\n } else {\n // isDeepStrictEqual works on objects and primitive values\n const hasChanged = !isDeepStrictEqual(formerStateValue.val, oState.val);\n if (!formerStateValue.lc || hasChanged) {\n oState.lc = oState.ts;\n } else {\n oState.lc = formerStateValue.lc;\n }\n }\n }\n\n return oState;\n }\n\n async getData(): Promise {\n await this.subscribeForeignObjectsAsync('*');\n\n if (!this.config.subscribe) {\n await this.subscribeForeignStatesAsync('*');\n } else {\n await this.subscribeStatesAsync('debug.to');\n await this.subscribeStatesAsync('scriptEnabled.*');\n }\n\n this.log.info('requesting all states');\n\n const statesPromise = this.getForeignStatesAsync('*')\n .then(res => {\n if (!res) {\n this.log.error(`Could not initialize states: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n if (!this.config.subscribe) {\n this.states = Object.assign(res, this.states);\n this.context.states = this.states;\n\n this.addGetProperty(this.states);\n }\n\n // remember all IDs – sort once to guarantee the sorted invariant\n // required by binaryIndexOf() / sortedInsert() used later\n const keys = Object.keys(res).sort();\n for (const id of keys) {\n this.stateIds.push(id);\n this.stateIdSet.add(id);\n }\n this.statesInitDone = true;\n this.log.info('received all states');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize states: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n this.log.info('requesting all objects');\n\n const objectsPromise = this.getObjectListAsync({ include_docs: true })\n .then(res => {\n if (!res?.rows) {\n this.log.error(`Could not initialize objects: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n this.objects = {};\n this.context.objects = this.objects;\n for (let i = 0; i < res.rows.length; i++) {\n const doc = res.rows[i]?.doc;\n if (!doc) {\n this.log.debug(`Got empty object for index ${i} (${res.rows[i].id})`);\n continue;\n }\n if (this.objects[doc._id] === undefined) {\n // If was already there, ignore\n this.objects[doc._id] = doc;\n }\n doc.type === 'enum' && this._enums.add(doc._id);\n\n // Collect all names\n this.addToNames(this.objects[doc._id]);\n }\n this.addGetProperty(this.objects);\n\n const systemConfig = this.objects['system.config'];\n this.password = systemConfig?.native?.javascriptPassword\n ? this.decrypt(systemConfig?.native.javascriptPassword)\n : '';\n\n // set language for debug messages\n if (systemConfig?.common?.language) {\n setLanguage(systemConfig.common.language);\n this.language = systemConfig.common.language;\n this.context.language = this.language as ioBroker.Languages;\n } else if (this.language) {\n setLanguage(this.language);\n this.context.language = this.language;\n }\n\n // try to use system coordinates\n if (this.config.useSystemGPS) {\n if (systemConfig?.common?.latitude || systemConfig?.common?.longitude) {\n this.config.latitude = systemConfig.common.latitude;\n this.config.longitude = systemConfig.common.longitude;\n } else if (this.latitude && this.longitude) {\n this.config.latitude = this.latitude;\n this.config.longitude = this.longitude;\n }\n }\n this.config.latitude = parseFloat(this.config.latitude as unknown as string);\n this.config.longitude = parseFloat(this.config.longitude as unknown as string);\n\n if (isNaN(this.config.latitude)) {\n this.log.warn(`Configured latitude is not a number - check (instance/system) configuration`);\n } else if (this.config.latitude < -90 || this.config.latitude > 90) {\n this.log.warn(\n `Configured latitude \"${this.config.latitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n if (isNaN(this.config.longitude)) {\n this.log.warn(`Configured longitude is not a number - check (instance/system) configuration`);\n } else if (this.config.longitude < -180 || this.config.longitude > 180) {\n this.log.warn(\n `Configured longitude \"${this.config.longitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n this.config.sunriseEvent ||= 'nightEnd';\n this.config.sunriseOffset ||= 0;\n this.config.sunriseLimitStart ||= '06:00';\n this.config.sunriseLimitEnd ||= '12:00';\n\n this.config.sunsetEvent ||= 'dusk';\n this.config.sunsetOffset ||= 0;\n this.config.sunsetLimitStart ||= '18:00';\n this.config.sunsetLimitEnd ||= '23:00';\n\n this.objectsInitDone = true;\n this.log.info('received all objects');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize objects: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n return Promise.all([statesPromise, objectsPromise]).then(() => {});\n }\n\n async createActiveObject(id: string, enabled: boolean): Promise {\n const idActive = `${this.namespace}.scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idActive]) {\n this.objects[idActive] = {\n _id: idActive,\n common: {\n name: `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'controls script activity',\n type: 'boolean',\n write: true,\n read: true,\n role: 'switch.active',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idActive, this.objects[idActive]);\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idActive);\n if (state && state.val !== enabled) {\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n }\n }\n }\n\n async createProblemObject(id: string): Promise {\n const idProblem = `${this.namespace}.scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idProblem]) {\n this.objects[idProblem] = {\n _id: idProblem,\n common: {\n name: `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'Script has a problem',\n type: 'boolean',\n expert: true,\n write: false,\n read: true,\n role: 'indicator.error',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idProblem, this.objects[idProblem]);\n await this.setForeignStateAsync(idProblem, false, true);\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idProblem);\n if (state && state.val !== false) {\n await this.setForeignStateAsync(idProblem, false, true);\n }\n }\n }\n\n addToNames(obj: ioBroker.Object): void {\n const id = obj._id;\n\n if (obj.common?.name) {\n let name = obj.common.name;\n if (name && typeof name === 'object') {\n name = name[getLanguage()] || name.en;\n }\n if (!name || typeof name !== 'string') {\n // TODO, take name in current language\n return;\n }\n\n if (!this.names[name]) {\n this.names[name] = id;\n } else {\n // convert to array\n if (!Array.isArray(this.names[name])) {\n this.names[name] = [this.names[name] as string];\n }\n\n (this.names[name] as string[]).push(id);\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.set(id, name);\n }\n }\n\n removeFromNames(id: string): void {\n const n = this.getName(id);\n\n if (n) {\n if (Array.isArray(this.names[n])) {\n const arr = this.names[n];\n const pos = arr.indexOf(id);\n if (pos > -1) {\n arr.splice(pos, 1);\n if (arr.length === 1) {\n this.names[n] = arr[0];\n }\n }\n } else {\n delete this.names[n];\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.delete(id);\n }\n }\n\n getName(id: string): string | null {\n return this.nameById.get(id) ?? null;\n }\n\n async installNpm(npmLib: string): Promise {\n return new Promise((resolve, reject) => {\n const path = __dirname;\n\n // Also, set the working directory (cwd) of the process instead of using --prefix\n // because that has ugly bugs on Windows\n const cmd = `npm install ${npmLib} --omit=dev`;\n this.log.info(`Installing ${npmLib} into ${__dirname} - cmd: ${cmd}`);\n\n // System call used for update of js-controller itself,\n // because during the installation the npm packet will be deleted too, but some files must be loaded even during the installation process.\n const child = this.mods.child_process.exec(cmd, {\n windowsHide: true,\n cwd: path,\n timeout: 120_000, // 2 minutes max – prevents infinite blocking\n });\n\n child.stdout?.on('data', buf => this.log.info(buf.toString('utf8')));\n\n child.stderr?.on('data', buf => this.log.error(buf.toString('utf8')));\n\n child.on('err', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n child.on('error', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n\n child.on('exit', (code: number /* , signal */) => {\n if (code) {\n this.log.error(`Cannot install ${npmLib}: ${code}`);\n reject(new Error(`Cannot install ${npmLib}: ${code}`));\n }\n // command succeeded\n resolve(code);\n });\n });\n }\n\n async installLibraries(): Promise {\n if (typeof this.config?.libraries !== 'string') {\n this.config.libraries = '';\n }\n\n const libraries: string[] = this.config.libraries\n .split(/[,;\\s]+/)\n .map(d => d.trim())\n .filter(d => d);\n\n this.log.debug(`Custom libraries in config: \"${this.config.libraries}\": ${JSON.stringify(libraries)}`);\n\n let installedNodeModules: string[] = [];\n const keepModules: string[] = [];\n\n // js-controller >= 6.x\n if (typeof this.listInstalledNodeModules === 'function') {\n installedNodeModules = await this.listInstalledNodeModules();\n\n this.log.debug(`Found installed libraries: ${JSON.stringify(installedNodeModules)}`);\n }\n\n for (const lib of libraries) {\n let depName = lib;\n let version = 'latest';\n\n if (depName.includes('@') && depName.lastIndexOf('@') > 0) {\n const parts = depName.split('@');\n version = parts.pop() ?? 'latest';\n depName = parts.join('@');\n }\n\n /** The real module name, because the dependency can be a URL too */\n let moduleName = depName;\n\n if (URL.canParse(depName)) {\n moduleName = await requestModuleNameByUrl(depName);\n\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\" (from ${depName})`);\n } else {\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\"`);\n }\n\n keepModules.push(moduleName);\n\n // js-controller >= 6.x\n if (typeof this.installNodeModule === 'function') {\n try {\n const result = await this.installNodeModule(depName, { version });\n if (result.success) {\n this.log.debug(`Installed custom library: \"${moduleName}@${version}\"`);\n\n const importedModule: any = await this.importNodeModule(moduleName);\n (this.mods as Record)[moduleName] = importedModule.default ?? importedModule;\n } else {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\"`);\n }\n } catch (err: unknown) {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\": ${err as Error}`);\n }\n } else if (!existsSync(`${__dirname}/node_modules/${depName}/package.json`)) {\n // js-controller < 6.x\n this.log.info(`Installing custom library (legacy mode): \"${lib}\"`);\n\n try {\n await this.installNpm(lib);\n this.log.info(`Installed custom npm package (legacy mode): \"${lib}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot install custom npm package \"${lib}\" (legacy mode): ${err.toString()}`);\n }\n }\n }\n\n // js-controller >= 6.x\n if (typeof this.uninstallNodeModule === 'function') {\n for (const installedNodeModule of installedNodeModules) {\n if (!keepModules.includes(installedNodeModule)) {\n try {\n await this.uninstallNodeModule(installedNodeModule);\n\n this.log.info(`Removed custom npm package: \"${installedNodeModule}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot remove custom npm package ${installedNodeModule}: ${err.toString()}`);\n }\n }\n }\n }\n }\n\n createVM(source: string, name: string, wrapAsync: boolean): false | JsScript {\n if (this.context.debugMode && name !== this.context.debugMode) {\n return false;\n }\n\n if (!this.context.debugMode) {\n const logSubscriptionsText =\n \"\\n;\\nlog(`registered ${__engine.__subscriptions} subscription${__engine.__subscriptions === 1 ? '' : 's'},\" +\n \" ${__engine.__schedules} schedule${__engine.__schedules === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsMessage} message${__engine.__subscriptionsMessage === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsLog} log${__engine.__subscriptionsLog === 1 ? '' : 's'}\" +\n \" and ${__engine.__subscriptionsFile} file subscription${__engine.__subscriptionsFile === 1 ? '' : 's'}`);\\n\";\n\n if (wrapAsync) {\n source = `(async () => {\\n${source}\\n${logSubscriptionsText}\\n})();`;\n } else {\n if (source.endsWith('export {};\\n')) {\n // If the source ends with \"export {};\" place the log subscriptions before it\n source = source.slice(0, -11); // remove \"export {};\\n\"\n source = `${source}\\n${logSubscriptionsText}\\nexport {};\\n`;\n } else {\n source = `${source}\\n${logSubscriptionsText}`;\n }\n }\n } else {\n if (wrapAsync) {\n source = `(async () => {debugger;\\n${source}\\n})();`;\n } else {\n source = `debugger;${source}`;\n }\n }\n\n try {\n const options: ScriptOptions = {\n filename: name,\n // displayErrors: true,\n // lineOffset: this.globalScriptLines\n };\n return {\n script: new Script(source, options),\n } as JsScript;\n } catch (err: unknown) {\n this.logError(name, `compile failed at`, err as Error);\n return false;\n }\n }\n\n execute(\n script: JsScript,\n name: string,\n engineType: ScriptType,\n verbose: boolean,\n debug: boolean,\n /**\n * Optional sink for the \"execute\" message API. When provided, the script runs in an\n * ephemeral diagnostic mode: every log line (the script's own `log()`/`console.*` output\n * AND all verbose internal operations) is forwarded to this collector instead of the\n * adapter log, and no `scriptProblem` state is written.\n */\n logCollector?: ((severity: ioBroker.LogLevel, message: string) => void) | null,\n ): void {\n script.intervals = new Set();\n script.timeouts = new Set();\n script.schedules = [];\n script.wizards = [];\n script.name = name;\n script.engineType = engineType;\n script._id = Math.floor(Math.random() * 0xffffffff);\n script.subscribes = {};\n script.subscribesFile = {};\n script.setStatePerMinuteCounter = 0;\n script.setStatePerMinuteProblemCounter = 0;\n if (!logCollector) {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: false,\n ack: true,\n expire: 1000,\n });\n }\n\n const sandbox = sandBox(script, name, verbose, debug, this.context);\n\n // Redirect every log line into the collector. As `console.*`, the global `log()` and all\n // `sandbox.verbose && sandbox.log(...)` calls go through `sandbox.log`, this captures the\n // full picture for the caller while keeping the adapter log clean.\n if (logCollector) {\n sandbox.log = (msg: string, severity?: ioBroker.LogLevel): void => {\n let text: unknown = msg;\n if (text && typeof text !== 'string') {\n text = util.format(text);\n }\n logCollector(severity || 'info', text as string);\n };\n }\n\n try {\n script.script.runInNewContext(sandbox, {\n filename: name,\n displayErrors: true,\n // lineOffset: this.globalScriptLines\n });\n } catch (err: unknown) {\n if (logCollector) {\n const e = err as Error;\n const stack = (e?.stack ? e.stack.toString() : String(err))\n .split('\\n')\n .map(line => this.fixLineNo(line))\n .join('\\n');\n logCollector('error', `Error by run: ${stack}`);\n } else {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'execute',\n });\n this.logError(name, 'Error by run:', err as Error);\n }\n }\n }\n\n /**\n * Run an ad-hoc script sent via the `execute` message and return everything it logged.\n *\n * The script is compiled (JavaScript or TypeScript), executed with the same sandbox API as a\n * regular script (verbose by default, so internal operations like setState/subscribe are logged\n * too), left running for `timeout` ms to collect asynchronous output, and afterwards stopped and\n * fully cleaned up (timers, subscriptions, schedules). It is ephemeral: no script object or\n * states are created.\n *\n * Expected `message`:\n * - `source` / `code` (string, required) – the script source\n * - `engineType` (string, optional) – `TypeScript/ts` to compile as TypeScript, otherwise JavaScript\n * - `verbose` (boolean, optional, default `true`) – log internal sandbox operations\n * - `logLevel` (silly|debug|info|warn|error, optional, default `silly`) – minimum severity to return\n * - `timeout` (number ms, optional, default 5000, clamped to 0…60000) – collection window\n * - `maxLogs` (number, optional, default 5000) – cap on returned log lines\n */\n async executeScript(message: {\n source: string;\n engineType?: 'Javascript/js' | 'TypeScript/ts';\n timeout?: number | string;\n verbose?: boolean;\n logLevel?: ioBroker.LogLevel;\n maxLogs?: number | string;\n }): Promise<{\n ok: boolean;\n error?: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n }> {\n const LEVELS: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error'];\n\n const source: unknown = message?.source ?? (message as any)?.code;\n const engineTypeStr = (message?.engineType || '').toString().toLowerCase();\n const isTypeScript = engineTypeStr.startsWith('typescript') || engineTypeStr === 'ts';\n const engineType: 'Javascript/js' | 'TypeScript/ts' = isTypeScript ? 'TypeScript/ts' : 'Javascript/js';\n\n const empty = (\n error: string,\n ): {\n ok: boolean;\n error: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n } => ({ ok: false, error, engineType, runtime: 0, truncated: false, logs: [], output: '' });\n\n if (typeof source !== 'string' || !source.trim()) {\n return empty('No source code provided');\n }\n\n if (this.context.debugMode) {\n return empty('Cannot execute a script while a debug session is active');\n }\n\n let timeout = parseInt(message?.timeout as string, 10);\n if (isNaN(timeout)) {\n timeout = 5000;\n }\n timeout = Math.max(0, Math.min(timeout, 60000));\n\n const verbose = message?.verbose !== false;\n const minLevel: ioBroker.LogLevel = message?.logLevel\n ? LEVELS.includes(message?.logLevel)\n ? message.logLevel\n : 'silly'\n : 'silly';\n let maxLogs = parseInt(message?.maxLogs as string, 10);\n if (isNaN(maxLogs) || maxLogs <= 0) {\n maxLogs = 5000;\n }\n\n const name = `${SCRIPT_CODE_MARKER}__execute_${++this.executeCounter}`;\n\n // Compile the source the same way regular scripts are compiled\n let createdScript: JsScript | false;\n if (isTypeScript) {\n const transformedSource = transformScriptBeforeCompilation(source, false);\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n return empty(`TypeScript compilation failed: ${err as Error}`);\n }\n if (!tsCompiled.success) {\n const errors = tsCompiled.diagnostics.map(diag => diag.annotatedSource).join('\\n');\n return empty(`TypeScript compilation failed:\\n${errors}`);\n }\n createdScript = this.createVM(`${this.globalScript}\\n${tsCompiled.result || ''}`, name, false);\n } else {\n createdScript = this.createVM(`${this.globalScript}\\n${source}`, name, true);\n }\n\n if (!createdScript) {\n return empty('Compilation failed');\n }\n\n const logs: { ts: number; severity: ioBroker.LogLevel; message: string }[] = [];\n let truncated = false;\n const collector = (severity: ioBroker.LogLevel, msg: string): void => {\n if (logs.length >= maxLogs) {\n truncated = true;\n return;\n }\n logs.push({ ts: Date.now(), severity, message: msg });\n };\n\n this.scripts[name] = createdScript;\n this.execute(createdScript, name, engineType, verbose, false, collector);\n\n // Let asynchronous output (timeouts, awaited code, triggered subscriptions) accumulate\n if (timeout) {\n await new Promise(resolve => setTimeout(resolve, timeout));\n }\n\n // Stop and clean up the ephemeral script (timers, subscriptions, schedules, …)\n await this.stopScript(name, true);\n\n const minIdx = LEVELS.indexOf(minLevel);\n const filtered = logs.filter(entry => {\n const idx = LEVELS.indexOf(entry.severity);\n return idx < 0 || idx >= minIdx;\n });\n\n return {\n ok: true,\n engineType,\n runtime: timeout,\n truncated,\n logs: filtered,\n output: filtered.map(entry => `[${entry.severity}] ${entry.message}`).join('\\n'),\n };\n }\n\n /**\n * Finds the index of `id` in a sorted array using binary search – O(log n).\n * Returns -1 if not found. Used instead of Array.indexOf on stateIds.\n */\n private binaryIndexOf(arr: string[], id: string): number {\n let lo = 0;\n let hi = arr.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n if (arr[mid] === id) {\n return mid;\n } else if (arr[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return -1;\n }\n\n /**\n * Inserts `id` into the sorted `stateIds` array using binary search – O(log n).\n * Much faster than push() + sort() which is O(n log n) on every insertion.\n */\n private sortedInsert(id: string): void {\n let lo = 0;\n let hi = this.stateIds.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (this.stateIds[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (this.stateIds[lo] !== id) {\n this.stateIds.splice(lo, 0, id);\n }\n }\n\n unsubscribe(id: string | RegExp | string[]): void {\n if (!id) {\n this.log.warn('unsubscribe: empty name');\n return;\n }\n\n if (Array.isArray(id)) {\n id.forEach(sub => this.unsubscribe(sub));\n return;\n }\n\n if (id.constructor && id.constructor.name === 'RegExp') {\n // adapter.log.warn('unsubscribe: todo - process regexp');\n return;\n }\n\n if (typeof id !== 'string') {\n this.log.error(`unsubscribe: invalid type of id - ${typeof id}`);\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (this.objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n if (this.adapterSubs[alive]) {\n this.adapterSubs[alive].delete(id);\n if (!this.adapterSubs[alive].size) {\n delete this.adapterSubs[alive];\n }\n }\n this.sendTo(a, 'unsubscribe', id);\n }\n }\n\n // Analyze if logs are still required or not\n updateLogSubscriptions(): void {\n let found = false;\n // go through all scripts and check if some script still requires logs\n Object.keys(this.logSubscriptions).forEach(scriptName => {\n if (!this.logSubscriptions?.[scriptName] || !this.logSubscriptions[scriptName].length) {\n delete this.logSubscriptions[scriptName];\n } else {\n found = true;\n }\n });\n\n if (this.requireLog) {\n if (found && !this.logSubscribed) {\n this.logSubscribed = true;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Subscribed to log messages (found logSubscriptions)`);\n } else if (!found && this.logSubscribed) {\n this.logSubscribed = false;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Unsubscribed from log messages (not found logSubscriptions)`);\n }\n }\n }\n\n async stopScript(name: string, silent?: boolean): Promise {\n if (!this.scripts[name]) {\n return false;\n }\n\n // `silent` is used for ephemeral scripts started via the \"execute\" message – they have no\n // `scriptEnabled` state and should not appear in the adapter log.\n if (!silent) {\n this.log.info(`${name}: Stopping script`);\n\n await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true);\n }\n\n if (this.messageBusHandlers[name]) {\n delete this.messageBusHandlers[name];\n }\n\n if (this.tempDirectories[name]) {\n try {\n this.mods.fs.rmSync(this.tempDirectories[name], { recursive: true });\n\n this.log.debug(`${name}: Removed temp directory: ${this.tempDirectories[name]}`);\n } catch {\n this.log.warn(`${name}: Unable to remove temp directory: ${this.tempDirectories[name]}`);\n }\n\n delete this.tempDirectories[name];\n }\n\n if (this.logSubscriptions[name]) {\n delete this.logSubscriptions[name];\n this.updateLogSubscriptions();\n }\n\n if (this.scripts[name]) {\n // Remove from subscriptions\n this.context.isEnums = false;\n if (this.config.subscribe) {\n // check all subscribed IDs\n Object.keys(this.scripts[name].subscribes).forEach(id => {\n if (this.subscribedPatterns[id]) {\n this.subscribedPatterns[id] -= this.scripts[name].subscribes[id];\n if (this.subscribedPatterns[id] <= 0) {\n this.unsubscribeForeignStates(id);\n delete this.subscribedPatterns[id];\n if (this.states[id]) {\n delete this.states[id];\n }\n }\n }\n });\n }\n\n for (let i = this.subscriptions.length - 1; i >= 0; i--) {\n if (this.subscriptions[i].name === name) {\n const sub = this.subscriptions.splice(i, 1)[0];\n // Also remove from the O(1) dispatch structures – shared helper to keep the\n // exact-id classification identical to the subscribe side in sandbox.ts\n if (sub) {\n removeFromDispatchIndex(this.context, sub);\n }\n if (sub?.pattern.id) {\n this.unsubscribe(sub.pattern.id);\n }\n } else {\n if (\n (!this.context.isEnums && this.subscriptions[i].pattern.enumName) ||\n this.subscriptions[i].pattern.enumId\n ) {\n this.context.isEnums = true;\n }\n }\n }\n\n // check all subscribed files\n Object.keys(this.scripts[name].subscribesFile).forEach(key => {\n if (this.subscribedPatternsFile[key]) {\n this.subscribedPatternsFile[key] -= this.scripts[name].subscribesFile[key];\n if (this.subscribedPatternsFile[key] <= 0) {\n const [id, file] = key.split('$%$');\n void this.unsubscribeForeignFiles(id, file);\n delete this.subscribedPatternsFile[key];\n }\n }\n });\n for (let i = this.subscriptionsFile.length - 1; i >= 0; i--) {\n if (this.subscriptionsFile[i].name === name) {\n this.subscriptionsFile.splice(i, 1);\n }\n }\n\n for (let i = this.subscriptionsObject.length - 1; i >= 0; i--) {\n if (this.subscriptionsObject[i].name === name) {\n const sub = this.subscriptionsObject.splice(i, 1)[0];\n if (sub) {\n // Remove from O(1) dispatch map\n const mapSubs = this.subscriptionsObjectMap.get(sub.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(sub);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n this.subscriptionsObjectMap.delete(sub.pattern);\n }\n }\n this.unsubscribeForeignObjects(sub.pattern);\n }\n }\n }\n\n // Stop all timeouts\n for (const t of this.scripts[name].timeouts) {\n clearTimeout(t);\n }\n // Stop all intervals\n for (const t of this.scripts[name].intervals) {\n clearInterval(t);\n }\n // Stop all delayed states (setStateDelayed timers) – O(1) via reverse-index\n const scriptStateIds = this.timersByScript.get(name);\n if (scriptStateIds) {\n for (const stateId of scriptStateIds) {\n if (this.timers[stateId]) {\n for (let i = this.timers[stateId].length - 1; i >= 0; i--) {\n if (this.timers[stateId][i].scriptName === name) {\n clearTimeout(this.timers[stateId][i].t);\n this.timers[stateId].splice(i, 1);\n }\n }\n if (!this.timers[stateId].length) {\n delete this.timers[stateId];\n }\n }\n }\n this.timersByScript.delete(name);\n }\n // Stop all scheduled jobs\n for (let i = 0; i < this.scripts[name].schedules.length; i++) {\n if (this.scripts[name].schedules[i]) {\n const _name = this.scripts[name].schedules[i].name;\n if (!this.mods.nodeSchedule.cancelJob(this.scripts[name].schedules[i])) {\n this.log.error(`${name}: Error by canceling scheduled job \"${_name}\"`);\n }\n }\n }\n\n // Stop all time wizards jobs\n if (this.context.scheduler) {\n for (let i = 0; i < this.scripts[name].wizards.length; i++) {\n if (this.scripts[name].wizards[i]) {\n this.context.scheduler.remove(this.scripts[name].wizards[i]);\n }\n }\n }\n\n // if callback for on stop\n if (typeof this.scripts[name].onStopCb === 'function') {\n this.scripts[name].onStopTimeout =\n parseInt(this.scripts[name].onStopTimeout as unknown as string, 10) || 1000;\n\n await new Promise(resolve => {\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n if (timeout) {\n timeout = null;\n resolve(true);\n }\n }, this.scripts[name].onStopTimeout);\n\n try {\n this.scripts[name].onStopCb(() => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(true);\n }\n });\n } catch (err: unknown) {\n this.log.error(`${name}: error in onStop callback: ${err as Error}`);\n }\n });\n }\n\n delete this.scripts[name];\n return true;\n }\n return false;\n }\n\n async prepareScript(obj: ioBroker.ScriptObject): Promise {\n if (obj?.common?.enabled && this.debugState.scriptName === obj._id) {\n const id = obj._id;\n await this.debugStop();\n this.log.info(`${id}: Debugging was stopped, because started in normal mode`);\n return this.prepareScript(obj);\n }\n\n if (\n obj?.common?.source &&\n (obj.common.enabled || this.context.debugMode === obj._id) &&\n obj.common.engine === `system.adapter.${this.namespace}`\n ) {\n const name = obj._id;\n\n if (this.password && obj.native?.protected) {\n obj.common.source = decryptText(this.password, obj.common.source);\n }\n\n const nameId = name.substring(SCRIPT_CODE_MARKER.length);\n if (!nameId.length || nameId.endsWith('.')) {\n this.log.error(`${name}: Script name \"${name}\" is invalid!`);\n return false;\n }\n const idActive = `scriptEnabled.${nameId}`;\n if (!this.config.subscribe) {\n this.interimStateValues[idActive] = this.prepareStateObjectSimple(\n `${this.namespace}.${idActive}`,\n true,\n true,\n );\n }\n await this.setState(idActive, true, true);\n obj.common.engineType ||= '' as 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';\n\n if (\n (obj.common.engineType as ScriptType).toLowerCase().startsWith('javascript') ||\n (obj.common.engineType as ScriptType) === 'Blockly' ||\n (obj.common.engineType as ScriptType) === 'Rules'\n ) {\n // Javascript\n this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);\n\n let sourceFn = name;\n if (webstormDebug) {\n const fn = name.replace(/^script\\.js\\./, '').replace(/\\./g, '/');\n sourceFn = this.mods.path.join(webstormDebug, `${fn}.js`);\n }\n const createdScript = this.createVM(`${this.globalScript}\\n${obj.common.source}`, sourceFn, true);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n sourceFn,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n if (obj.common.engineType.toLowerCase().startsWith('typescript')) {\n // TypeScript\n this.log.info(`${name}: Compiling TypeScript source`);\n // The source code must be transformed in order to support top level await\n // and to force TypeScript to compile the code as a module\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, false);\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash = hashSource(tsSourceHashBase + this.globalDeclarations + transformedSource);\n\n let compiled: string;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n this.log.info(`${name}: source code did not change, using cached compilation result...`);\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n return false;\n }\n\n const errors = tsCompiled.diagnostics.map(diag => `${diag.annotatedSource}\\n`).join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(`${name}: TypeScript compilation had errors:\\n${errors}`);\n } else {\n this.log.info(`${name}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result || '';\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(name); // ignore the next change and don't restart scripts\n await this.extendForeignObjectAsync(name, {\n common: {\n sourceHash,\n compiled,\n },\n });\n } else {\n this.log.error(`${name}: TypeScript compilation failed:\\n${errors}`);\n return false;\n }\n }\n const createdScript: JsScript | false = this.createVM(`${this.globalScript}\\n${compiled}`, name, false);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(\n this.scripts[name],\n name,\n obj.common.engineType as ScriptType,\n obj.common.verbose,\n obj.common.debug,\n );\n return true;\n }\n\n this.log.warn(`${obj._id}: Unknown engine type: ${obj.common.engineType}`);\n return false;\n }\n\n let _name: string;\n if (obj?._id) {\n _name = obj._id;\n const scriptIdName = _name.substring(SCRIPT_CODE_MARKER.length);\n\n if (!scriptIdName.length || scriptIdName.endsWith('.')) {\n this.log.error(`${obj._id}: Script name \"${_name}\" is invalid!`);\n return false;\n }\n await this.setState(`scriptEnabled.${scriptIdName}`, false, true);\n }\n if (!obj) {\n this.log.error('Invalid script');\n }\n return false;\n }\n\n async loadScriptById(id: string): Promise {\n let obj: ioBroker.ScriptObject | null | undefined;\n try {\n obj = (await this.getForeignObjectAsync(id)) as ioBroker.ScriptObject | null | undefined;\n } catch (err: any) {\n this.log.error(`${id}: Invalid script: ${err}`);\n }\n if (!obj) {\n return false;\n }\n return this.loadScript(obj);\n }\n\n async loadScript(nameOrObject: ioBroker.ScriptObject): Promise {\n // create states for scripts\n await this.createActiveObject(nameOrObject._id, !!nameOrObject?.common?.enabled);\n await this.createProblemObject(nameOrObject._id);\n return this.prepareScript(nameOrObject);\n }\n\n getAstroEvent(\n date: Date,\n astroEvent: AstroEventName,\n start: string,\n end: string,\n offsetMinutes: number | string,\n isDayEnd: boolean,\n latitude: number,\n longitude: number,\n useNextDay?: boolean,\n ): Date {\n let ts: Date = this.mods.suncalc.getTimes(date, latitude, longitude)[astroEvent];\n\n if (!ts || ts.getTime().toString() === 'NaN') {\n ts = isDayEnd ? getNextTimeEvent(end, useNextDay) : getNextTimeEvent(start, useNextDay);\n }\n ts.setMilliseconds(0);\n ts.setMinutes(ts.getMinutes() + (parseInt(offsetMinutes as unknown as string, 10) || 0));\n\n const [timeHoursStart, timeMinutesStart] = start.split(':');\n const nTimeHoursStart = parseInt(timeHoursStart, 10);\n const nTimeMinutesStart = parseInt(timeMinutesStart, 10) || 0;\n\n if (\n ts.getHours() < nTimeHoursStart ||\n (ts.getHours() === nTimeHoursStart && ts.getMinutes() < nTimeMinutesStart)\n ) {\n ts = getNextTimeEvent(start, useNextDay);\n ts.setSeconds(0);\n }\n\n const [timeHoursEnd, timeMinutesEnd] = end.split(':');\n const nTimeHoursEnd = parseInt(timeHoursEnd, 10);\n const nTimeMinutesEnd = parseInt(timeMinutesEnd, 10) || 0;\n\n if (ts.getHours() > nTimeHoursEnd || (ts.getHours() === nTimeHoursEnd && ts.getMinutes() > nTimeMinutesEnd)) {\n ts = getNextTimeEvent(end, useNextDay);\n ts.setSeconds(0);\n }\n\n // if event in the past\n if (date > ts && useNextDay) {\n // take the next day\n ts.setDate(ts.getDate() + 1);\n }\n return ts;\n }\n\n async timeSchedule(): Promise {\n const now = new Date();\n let hours = now.getHours();\n const minutes = now.getMinutes();\n if (this.timeSettings.format12) {\n if (hours > 12) {\n hours -= 12;\n }\n }\n let sHours: string;\n if (this.timeSettings.leadingZeros) {\n sHours = hours.toString().padStart(2, '0');\n } else {\n sHours = hours.toString();\n }\n\n await this.setState('variables.dayTime', {\n val: `${sHours}:${minutes.toString().padStart(2, '0')}`,\n ack: true,\n });\n\n now.setMinutes(now.getMinutes() + 1);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const interval = now.getTime() - Date.now();\n this.timeScheduleTimer = setTimeout(() => this.timeSchedule(), interval);\n }\n\n async dayTimeSchedules(): Promise {\n // Always clear any existing timer to prevent memory leaks on rapid re-scheduling\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n\n // get astrological event\n if (\n this.config.latitude === undefined ||\n this.config.longitude === undefined ||\n (this.config.latitude as unknown as string) === '' ||\n (this.config.longitude as unknown as string) === '' ||\n this.config.latitude === null ||\n this.config.longitude === null\n ) {\n this.log.error('Longitude or latitude does not set. Cannot use astro.');\n return;\n }\n\n // Calculate the next event today\n const todayDate = getAstroStartOfDay();\n const nowDate = new Date();\n\n const todaySunrise = this.getAstroEvent(\n todayDate,\n this.config.sunriseEvent,\n this.config.sunriseLimitStart,\n this.config.sunriseLimitEnd,\n this.config.sunriseOffset,\n false,\n this.config.latitude,\n this.config.longitude,\n );\n const todaySunset = this.getAstroEvent(\n todayDate,\n this.config.sunsetEvent,\n this.config.sunsetLimitStart,\n this.config.sunsetLimitEnd,\n this.config.sunsetOffset,\n true,\n this.config.latitude,\n this.config.longitude,\n );\n\n // Sunrise\n let sunriseTimeout = todaySunrise.getTime() - nowDate.getTime();\n if (sunriseTimeout < 0 || sunriseTimeout > 3600000) {\n sunriseTimeout = 3600000;\n }\n\n // Sunset\n let sunsetTimeout = todaySunset.getTime() - nowDate.getTime();\n if (sunsetTimeout < 0 || sunsetTimeout > 3600000) {\n sunsetTimeout = 3600000;\n }\n\n const isDayTime: ioBroker.State | null | undefined = await this.getStateAsync('variables.isDayTime');\n let isDay: boolean;\n if (sunriseTimeout < 5000) {\n isDay = true;\n } else if (sunsetTimeout < 5000) {\n isDay = false;\n } else {\n // check if in between\n isDay = nowDate.getTime() > todaySunrise.getTime() - 60000 && nowDate <= todaySunset;\n }\n\n const valDayTime = isDayTime ? !!isDayTime.val : false;\n if (valDayTime !== isDay || isDayTime === null) {\n await this.setState('variables.isDayTime', isDay, true);\n }\n\n const dayLightSaving: ioBroker.State | null | undefined =\n await this.getStateAsync('variables.isDaylightSaving');\n const isDayLightSaving = dstOffsetAtDate(nowDate) !== 0;\n const val = dayLightSaving ? !!dayLightSaving.val : false;\n\n if (val !== isDayLightSaving || dayLightSaving === null) {\n await this.setState('variables.isDaylightSaving', isDayLightSaving, true);\n }\n\n let nextTimeout = sunriseTimeout;\n if (sunriseTimeout > sunsetTimeout) {\n nextTimeout = sunsetTimeout;\n }\n nextTimeout = nextTimeout - 3000;\n if (nextTimeout < 3000) {\n nextTimeout = 3000;\n }\n\n this.dayScheduleTimer = setTimeout(() => this.dayTimeSchedules(), nextTimeout);\n }\n\n stopTimeSchedules(): void {\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n if (this.sunScheduleTimer) {\n clearTimeout(this.sunScheduleTimer);\n this.sunScheduleTimer = null;\n }\n if (this.timeScheduleTimer) {\n clearTimeout(this.timeScheduleTimer);\n this.timeScheduleTimer = null;\n }\n }\n\n async patchFont(): Promise {\n let stat: Stats | undefined;\n let dbFile: Buffer | undefined;\n let fileName = `${__dirname}/../admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n let jsonFileName = `${__dirname}/../admin/vsFont/codicon.json`;\n try {\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n if (!stat) {\n jsonFileName = `${__dirname}/admin/vsFont/codicon.json`;\n fileName = `${__dirname}/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n }\n const _dbFile = await this.readFileAsync(\n 'javascript.admin',\n `vs/base/browser/ui/codicons/codicon/codicon.ttf`,\n );\n if (_dbFile?.file) {\n dbFile = _dbFile.file as Buffer;\n }\n } catch {\n // ignore\n }\n\n if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {\n try {\n const buffer = Buffer.from(JSON.parse(readFileSync(jsonFileName).toString()), 'base64');\n\n const jszip = await import('jszip');\n const zip = await jszip.loadAsync(buffer);\n let data: ArrayBuffer | undefined;\n if (zip) {\n data = await zip.file('codicon.ttf')?.async('arraybuffer');\n if (data?.byteLength !== 73452) {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n } else {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n writeFileSync(fileName, Buffer.from(data));\n // upload this file\n await this.writeFileAsync(\n 'javascript.admin',\n 'vs/base/browser/ui/codicons/codicon/codicon.ttf',\n Buffer.from(data),\n );\n return true;\n } catch (err: unknown) {\n this.log.error(`Cannot patch font: ${err as Error}`);\n return false;\n }\n }\n return false;\n }\n\n async sunTimeSchedules(): Promise {\n if (this.config.createAstroStates) {\n if (!isNaN(this.config.longitude) && !isNaN(this.config.longitude)) {\n const calcDate = getAstroStartOfDay();\n\n const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);\n\n this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);\n\n for (const t in times) {\n try {\n const objId = `variables.astro.${t}`;\n\n await this.setObjectNotExistsAsync(objId, {\n type: 'state',\n common: {\n name: `Astro ${t}`,\n type: 'string',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (times[t] !== null && !isNaN(times[t].getTime())) {\n const timeFormatted = formatHoursMinutesSeconds(times[t]);\n await this.setState(objId, {\n val: timeFormatted,\n c: times[t].toISOString(),\n ack: true,\n });\n } else {\n await this.setState(objId, { val: null, c: 'n/a', ack: true, q: 0x01 });\n }\n } catch (err: unknown) {\n this.log.error(\n `[sunTimeSchedules] Unable to set state for astro time \"${t}\" (${times[t].getTime()}): ${err as Error}`,\n );\n }\n }\n\n const todayDate = new Date();\n todayDate.setHours(0);\n todayDate.setMinutes(0);\n todayDate.setSeconds(1);\n todayDate.setMilliseconds(0);\n todayDate.setDate(todayDate.getDate() + 1);\n\n this.log.debug(`[sunTimeSchedules] Next: ${todayDate.toISOString()}`);\n this.sunScheduleTimer = setTimeout(() => this.sunTimeSchedules(), todayDate.getTime() - Date.now());\n }\n } else {\n // remove astro states if disabled\n this.delObject('variables.astro', { recursive: true });\n }\n }\n\n /**\n * Redirects the virtual-tsc log output to the ioBroker log\n */\n tsLog = (message: string, severity?: ioBroker.LogLevel): void => {\n // shift the severities around, we don't care about the small details\n if (!severity || severity === 'info') {\n severity = 'debug';\n } else if (severity === 'debug') {\n // Don't spam build logs on Travis\n if (isCI) {\n return;\n }\n severity = 'silly';\n }\n\n if (this?.log) {\n this.log[severity](message);\n } else {\n console.log(`[${severity.toUpperCase()}] ${message}`);\n }\n };\n\n addGetProperty(object: Record): void {\n try {\n Object.defineProperty(object, 'get', {\n value: function (id: string): any {\n return this[id] || this[`${this.namespace}.${id}`];\n },\n enumerable: false,\n });\n } catch {\n console.error('Cannot install get property');\n }\n }\n\n /**\n * Add declarations for global scripts\n *\n * @param scriptID - The current script the declarations were generated from\n * @param declarations - Declarations from a script\n */\n provideDeclarationsForGlobalScript(scriptID: string, declarations: string): void {\n // Remember which declarations this global script had access to;\n // we need this so the editor doesn't show a duplicate identifier error\n if (this.globalDeclarations != null && this.globalDeclarations !== '') {\n this.knownGlobalDeclarationsByScript[scriptID] = this.globalDeclarations;\n }\n // and concatenate the global declarations for the next scripts\n this.globalDeclarations += `${declarations}\\n`;\n // remember all previously generated global declarations,\n // so global scripts can reference each other\n const globalDeclarationPath = 'global.d.ts';\n tsAmbient[globalDeclarationPath] = this.globalDeclarations;\n // make sure the next script compilation has access to the updated declarations\n this.tsServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n jsDeclarationServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n }\n\n fixLineNo(line: string): string {\n if (line.includes('javascript.js:')) {\n return line;\n }\n if (!/scripts?\\.js[.\\\\/]/.test(line)) {\n return line;\n }\n if (/:(\\d+):/.test(line)) {\n line = line.replace(\n /:(\\d+):/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}:`,\n ); // one line for 'async function ()'\n } else {\n line = line.replace(\n /:(\\d+)$/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}`,\n ); // one line for 'async function ()'\n }\n return line;\n }\n\n async debugStop(): Promise {\n if (this.debugState.child) {\n this.debugSendToInspector({ cmd: 'end' });\n this.debugState.endTimeout = setTimeout(() => {\n this.debugState.endTimeout = null;\n this.debugState.child?.kill('SIGTERM');\n }, 500);\n this.debugState.promiseOnEnd ||= Promise.resolve(0);\n } else {\n this.debugState.promiseOnEnd = Promise.resolve(0);\n }\n\n await this.debugState.promiseOnEnd;\n\n this.debugState.child = null;\n this.debugState.running = false;\n this.debugState.scriptName = '';\n if (this.debugState.endTimeout) {\n clearTimeout(this.debugState.endTimeout);\n this.debugState.endTimeout = null;\n }\n }\n\n async debugDisableScript(id: string | undefined): Promise {\n if (id) {\n const obj = this.objects[id];\n if (obj?.common?.enabled) {\n await this.extendForeignObjectAsync(obj._id, { common: { enabled: false } });\n }\n }\n }\n\n debugSendToInspector(message: any): void {\n if (this.debugState.child) {\n try {\n this.log.info(`send to debugger: ${message}`);\n this.debugState.child.send(message);\n } catch {\n void this.debugStop().then(() =>\n this.log.info(\n `${this.debugState.scriptName}: Debugging was stopped, because started in normal mode`,\n ),\n );\n }\n } else {\n this.log.error(`${this.debugState.scriptName}: Cannot send command to terminated inspector`);\n void this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `Cannot send command to terminated inspector`, id: 1 }),\n true,\n );\n }\n }\n\n debugStart(data: { breakOnStart?: boolean; scriptName?: string; adapter?: string }): void {\n if (Date.now() - this.debugState.started < 1000) {\n console.log('Start ignored');\n return;\n }\n\n this.debugState.started = Date.now();\n // stop the script if it's running\n void this.debugDisableScript(data.scriptName)\n .then(() => this.debugStop())\n .then(() => {\n if (data.adapter) {\n this.debugState.adapterInstance = data.adapter;\n this.debugState.scriptName = '';\n } else {\n this.debugState.adapterInstance = '';\n this.debugState.scriptName = data.scriptName as string;\n }\n\n this.debugState.breakOnStart = data.breakOnStart;\n\n this.debugState.promiseOnEnd = new Promise(resolve => {\n const options: ForkOptions = {\n stdio: ['ignore', 'inherit', 'inherit', 'ipc'],\n //stdio: ['pipe', 'pipe', 'pipe', 'ipc']\n };\n const args: string[] = [];\n if (this.debugState.adapterInstance) {\n args.push('--breakOnStart');\n }\n\n this.debugState.child = fork(`${__dirname}/lib/inspect.js`, args, options);\n\n /*debugState.child.stdout.setEncoding('utf8');\n debugState.child.stderr.setEncoding('utf8');\n debugState.child.stdout.on('data', childPrint);\n debugState.child.stderr.on('data', childPrint);*/\n\n this.debugState.child?.on(\n 'message',\n (\n message:\n | string\n | {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n },\n ) => {\n let oMessage: {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n };\n if (typeof message === 'string') {\n try {\n oMessage = JSON.parse(message);\n } catch {\n return this.log.error(`Cannot parse message from inspector: ${message}`);\n }\n } else {\n oMessage = message;\n }\n\n if (oMessage.cmd !== 'ready') {\n void this.setState('debug.from', JSON.stringify(oMessage), true);\n }\n\n switch (oMessage.cmd) {\n case 'ready': {\n this.debugSendToInspector({\n cmd: 'start',\n scriptName: this.debugState.scriptName,\n adapterInstance: this.debugState.adapterInstance,\n instance: this.instance,\n });\n break;\n }\n\n case 'watched': {\n //console.log(`WATCHED: ${JSON.stringify(oMessage)}`);\n break;\n }\n\n case 'paused': {\n this.debugState.paused = true;\n console.log(`host: PAUSED`);\n break;\n }\n\n case 'resumed': {\n this.debugState.paused = false;\n //console.log(`STARTED`);\n break;\n }\n\n case 'log': {\n console.log(`[${oMessage.severity}] ${oMessage.text}`);\n break;\n }\n\n case 'readyToDebug': {\n console.log(\n `host: readyToDebug (set breakpoints): [${oMessage.scriptId}] ${oMessage.script}`,\n );\n break;\n }\n }\n },\n );\n this.debugState.child?.on('error', error => {\n this.log.error(`Cannot start inspector: ${error}`);\n void this.setState('debug.from', JSON.stringify({ cmd: 'error', error }), true);\n });\n\n this.debugState.child?.on('exit', async (code: number): Promise => {\n if (code) {\n await this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `invalid response code: ${code}` }),\n true,\n );\n }\n await this.setState('debug.from', JSON.stringify({ cmd: 'debugStopped', code }), true);\n this.debugState.child = null;\n resolve(code);\n });\n });\n });\n }\n}\n\nfunction patternMatching(\n event: EventObj,\n patternFunctions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' },\n): boolean {\n const logic = patternFunctions.logic ?? 'and';\n for (let i = 0, len = patternFunctions.length; i < len; i++) {\n const result = patternFunctions[i](event);\n if (logic === 'and' && !result) {\n return false; // short-circuit AND – one false is enough\n }\n if (logic === 'or' && result) {\n return true; // short-circuit OR – one true is enough\n }\n }\n // AND: all passed → true; OR: none matched → false\n return logic === 'and';\n}\n\n// If started as allInOne mode => return function to create an instance\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new JavaScript(options);\n} else {\n // otherwise start the instance directly\n (() => new JavaScript())();\n}\n"]} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index a0784078c..177bf3654 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2902,7 +2902,14 @@ class JavaScript extends Adapter { * - `timeout` (number ms, optional, default 5000, clamped to 0…60000) – collection window * - `maxLogs` (number, optional, default 5000) – cap on returned log lines */ - async executeScript(message: any): Promise<{ + async executeScript(message: { + source: string; + engineType?: 'Javascript/js' | 'TypeScript/ts'; + timeout?: number | string; + verbose?: boolean; + logLevel?: ioBroker.LogLevel; + maxLogs?: number | string; + }): Promise<{ ok: boolean; error?: string; engineType: 'Javascript/js' | 'TypeScript/ts'; @@ -2913,12 +2920,14 @@ class JavaScript extends Adapter { }> { const LEVELS: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error']; - const source: unknown = message?.source ?? message?.code; + const source: unknown = message?.source ?? (message as any)?.code; const engineTypeStr = (message?.engineType || '').toString().toLowerCase(); const isTypeScript = engineTypeStr.startsWith('typescript') || engineTypeStr === 'ts'; const engineType: 'Javascript/js' | 'TypeScript/ts' = isTypeScript ? 'TypeScript/ts' : 'Javascript/js'; - const empty = (error: string): { + const empty = ( + error: string, + ): { ok: boolean; error: string; engineType: 'Javascript/js' | 'TypeScript/ts'; @@ -2943,7 +2952,11 @@ class JavaScript extends Adapter { timeout = Math.max(0, Math.min(timeout, 60000)); const verbose = message?.verbose !== false; - const minLevel: ioBroker.LogLevel = LEVELS.includes(message?.logLevel) ? message.logLevel : 'silly'; + const minLevel: ioBroker.LogLevel = message?.logLevel + ? LEVELS.includes(message?.logLevel) + ? message.logLevel + : 'silly' + : 'silly'; let maxLogs = parseInt(message?.maxLogs as string, 10); if (isNaN(maxLogs) || maxLogs <= 0) { maxLogs = 5000; From fa342cc47496f55a914ff2613e6800a39c529697 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Fri, 12 Jun 2026 21:22:42 +0200 Subject: [PATCH 6/6] Allowed to run without credentials API --- src/main.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.ts b/src/main.ts index 177bf3654..c1e628656 100644 --- a/src/main.ts +++ b/src/main.ts @@ -969,6 +969,12 @@ class JavaScript extends Adapter { /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */ private async readAiCredentialKey(id: string): Promise { + if (!Credentials?.getCredentials) { + this.log.warn( + `Cannot read AI credential "${id}": Credentials API is only with 7.2 js-controller available`, + ); + return ''; + } try { const cred = await Credentials.getCredentials(this, id); return (cred?.values?.key || '').trim(); @@ -1031,6 +1037,10 @@ class JavaScript extends Adapter { if (this.config.credentialType !== 'manager') { return; } + if (!Credentials?.subscribeCredentials) { + this.log.warn(`Cannot subscribe AI credential: Credentials API is only with 7.2 js-controller available`); + return; + } // Collect the distinct credential IDs configured across all AI providers. const ids = new Set(); for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) {